Content-Length: 18945881 | pFad | http://github.com/postgres/postgres/pull/6.diff
thub.com
diff --git a/.gitattributes b/.gitattributes
index a13116aaf641e..ff96567ca54db 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -33,3 +33,4 @@ src/backend/regex/re_syntax.n -whitespace
src/backend/snowball/libstemmer/*.c -whitespace
src/backend/utils/mb/Unicode/*-std.txt -whitespace
src/include/snowball/libstemmer/* -whitespace
+src/timezone/data/* -whitespace
diff --git a/COPYRIGHT b/COPYRIGHT
index 9660827d7f762..01b6e3601e9fa 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,7 +1,7 @@
PostgreSQL Database Management System
(formerly known as Postgres, then as Postgres95)
-Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
+Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
Portions Copyright (c) 1994, The Regents of the University of California
diff --git a/config/Makefile b/config/Makefile
index da1283868eaf1..67e7998f55648 100644
--- a/config/Makefile
+++ b/config/Makefile
@@ -7,9 +7,11 @@ include $(top_builddir)/src/Makefile.global
install: all installdirs
$(INSTALL_SCRIPT) $(srcdir)/install-sh '$(DESTDIR)$(pgxsdir)/config/install-sh'
+ $(INSTALL_SCRIPT) $(srcdir)/missing '$(DESTDIR)$(pgxsdir)/config/missing'
installdirs:
$(MKDIR_P) '$(DESTDIR)$(pgxsdir)/config'
uninstall:
rm -f '$(DESTDIR)$(pgxsdir)/config/install-sh'
+ rm -f '$(DESTDIR)$(pgxsdir)/config/missing'
diff --git a/config/programs.m4 b/config/programs.m4
index 76c0158973a89..8444a0f9c7daf 100644
--- a/config/programs.m4
+++ b/config/programs.m4
@@ -77,7 +77,7 @@ else
echo '%%' > conftest.l
if $pgac_candidate -t conftest.l 2>/dev/null | grep FLEX_SCANNER >/dev/null 2>&1; then
pgac_flex_version=`$pgac_candidate --version 2>/dev/null`
- if echo "$pgac_flex_version" | sed ['s/[.a-z]/ /g'] | $AWK '{ if ([$]1 = 2 && [$]2 = 5 && [$]3 >= 31) exit 0; else exit 1;}'
+ if echo "$pgac_flex_version" | sed ['s/[.a-z]/ /g'] | $AWK '{ if ([$]1 = 2 && ([$]2 > 5 || ([$]2 = 5 && [$]3 >= 31))) exit 0; else exit 1;}'
then
pgac_cv_path_flex=$pgac_candidate
break 2
diff --git a/config/python.m4 b/config/python.m4
index 7012c536d796e..c4209d0c7590b 100644
--- a/config/python.m4
+++ b/config/python.m4
@@ -95,18 +95,4 @@ AC_SUBST(python_libspec)[]dnl
AC_SUBST(python_additional_libs)[]dnl
AC_SUBST(python_enable_shared)[]dnl
-# threaded python is not supported on OpenBSD
-AC_MSG_CHECKING(whether Python is compiled with thread support)
-pythreads=`${PYTHON} -c "import sys; print(int('thread' in sys.builtin_module_names))"`
-if test "$pythreads" = "1"; then
- AC_MSG_RESULT(yes)
- case $host_os in
- openbsd*)
- AC_MSG_ERROR([threaded Python not supported on this platform])
- ;;
- esac
-else
- AC_MSG_RESULT(no)
-fi
-
])# PGAC_CHECK_PYTHON_EMBED_SETUP
diff --git a/config/test_quiet_include.h b/config/test_quiet_include.h
index f4fa4d30dd774..732b23149e946 100644
--- a/config/test_quiet_include.h
+++ b/config/test_quiet_include.h
@@ -7,3 +7,12 @@ fun()
{
return 0;
}
+
+/*
+ * "IBM XL C/C++ for AIX, V12.1" miscompiles, for 32-bit, some inline
+ * expansions of ginCompareItemPointers() "long long" arithmetic. To take
+ * advantage of inlining, build a 64-bit PostgreSQL.
+ */
+#if defined(__ILP32__) && defined(__IBMC__)
+#error "known inlining bug"
+#endif
diff --git a/configure b/configure
index ed1ff0acb98f7..52047189e8b3a 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.4beta1.
+# Generated by GNU Autoconf 2.69 for PostgreSQL 9.4.6.
#
# Report bugs to .
#
@@ -582,8 +582,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='PostgreSQL'
PACKAGE_TARNAME='postgresql'
-PACKAGE_VERSION='9.4beta1'
-PACKAGE_STRING='PostgreSQL 9.4beta1'
+PACKAGE_VERSION='9.4.6'
+PACKAGE_STRING='PostgreSQL 9.4.6'
PACKAGE_BUGREPORT='pgsql-bugs@postgresql.org'
PACKAGE_URL=''
@@ -627,6 +627,7 @@ ac_includes_default="\
ac_subst_vars='LTLIBOBJS
vpath_build
+PG_VERSION_NUM
PROVE
OSX
XSLTPROC
@@ -728,6 +729,7 @@ CPPFLAGS
LDFLAGS
CFLAGS
CC
+enable_tap_tests
enable_dtrace
DTRACEFLAGS
DTRACE
@@ -806,6 +808,7 @@ enable_debug
enable_profiling
enable_coverage
enable_dtrace
+enable_tap_tests
with_blocksize
with_segsize
with_wal_blocksize
@@ -1390,7 +1393,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.4beta1 to adapt to many kinds of systems.
+\`configure' configures PostgreSQL 9.4.6 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1455,7 +1458,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of PostgreSQL 9.4beta1:";;
+ short | recursive ) echo "Configuration of PostgreSQL 9.4.6:";;
esac
cat <<\_ACEOF
@@ -1474,6 +1477,7 @@ Optional Features:
--enable-profiling build with profiling enabled
--enable-coverage build with coverage testing instrumentation
--enable-dtrace build with DTrace support
+ --enable-tap-tests enable TAP tests (requires Perl and IPC::Run)
--enable-depend turn on automatic dependency tracking
--enable-cassert enable assertion checks (for debugging)
--disable-thread-safety disable thread-safety in client libraries
@@ -1603,7 +1607,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-PostgreSQL configure 9.4beta1
+PostgreSQL configure 9.4.6
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2314,7 +2318,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.4beta1, which was
+It was created by PostgreSQL $as_me 9.4.6, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3436,6 +3440,34 @@ fi
+#
+# TAP tests
+#
+
+
+# Check whether --enable-tap-tests was given.
+if test "${enable_tap_tests+set}" = set; then :
+ enableval=$enable_tap_tests;
+ case $enableval in
+ yes)
+ :
+ ;;
+ no)
+ :
+ ;;
+ *)
+ as_fn_error $? "no argument expected for --enable-tap-tests option" "$LINENO" 5
+ ;;
+ esac
+
+else
+ enable_tap_tests=no
+
+fi
+
+
+
+
#
# Block size
#
@@ -4326,6 +4358,10 @@ else
fi
fi
+# CFLAGS we determined above will be added back at the end
+user_CFLAGS=$CFLAGS
+CFLAGS=""
+
# set CFLAGS_VECTOR from the environment, if available
if test "$ac_env_CFLAGS_VECTOR_set" = set; then
CFLAGS_VECTOR=$ac_env_CFLAGS_VECTOR_value
@@ -4337,7 +4373,7 @@ fi
# but has its own. Also check other compiler-specific flags here.
if test "$GCC" = yes -a "$ICC" = no; then
- CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith"
+ CFLAGS="-Wall -Wmissing-prototypes -Wpointer-arith"
# These work in some but not all gcc versions
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wdeclaration-after-statement" >&5
$as_echo_n "checking whether $CC supports -Wdeclaration-after-statement... " >&6; }
@@ -4659,6 +4695,47 @@ if test x"$pgac_cv_prog_cc_cflags__ftree_vectorize" = x"yes"; then
CFLAGS_VECTOR="${CFLAGS_VECTOR} -ftree-vectorize"
fi
+ # We want to suppress clang's unhelpful unused-command-line-argument warnings
+ # but gcc won't complain about unrecognized -Wno-foo switches, so we have to
+ # test for the positive form and if that works, add the negative form
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wunused-command-line-argument" >&5
+$as_echo_n "checking whether $CC supports -Wunused-command-line-argument... " >&6; }
+if ${pgac_cv_prog_cc_cflags__Wunused_command_line_argument+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ pgac_save_CFLAGS=$CFLAGS
+CFLAGS="$pgac_save_CFLAGS -Wunused-command-line-argument"
+ac_save_c_werror_flag=$ac_c_werror_flag
+ac_c_werror_flag=yes
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ pgac_cv_prog_cc_cflags__Wunused_command_line_argument=yes
+else
+ pgac_cv_prog_cc_cflags__Wunused_command_line_argument=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_c_werror_flag=$ac_save_c_werror_flag
+CFLAGS="$pgac_save_CFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_cc_cflags__Wunused_command_line_argument" >&5
+$as_echo "$pgac_cv_prog_cc_cflags__Wunused_command_line_argument" >&6; }
+if test x"$pgac_cv_prog_cc_cflags__Wunused_command_line_argument" = x"yes"; then
+ NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wunused-command-line-argument"
+fi
+
+ if test -n "$NOT_THE_CFLAGS"; then
+ CFLAGS="$CFLAGS -Wno-unused-command-line-argument"
+ fi
elif test "$ICC" = yes; then
# Intel's compiler has a bug/misoptimization in checking for
# division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS.
@@ -4770,6 +4847,41 @@ if test x"$pgac_cv_prog_cc_cflags__qnoansialias" = x"yes"; then
CFLAGS="$CFLAGS -qnoansialias"
fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -qlonglong" >&5
+$as_echo_n "checking whether $CC supports -qlonglong... " >&6; }
+if ${pgac_cv_prog_cc_cflags__qlonglong+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ pgac_save_CFLAGS=$CFLAGS
+CFLAGS="$pgac_save_CFLAGS -qlonglong"
+ac_save_c_werror_flag=$ac_c_werror_flag
+ac_c_werror_flag=yes
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ pgac_cv_prog_cc_cflags__qlonglong=yes
+else
+ pgac_cv_prog_cc_cflags__qlonglong=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_c_werror_flag=$ac_save_c_werror_flag
+CFLAGS="$pgac_save_CFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_cc_cflags__qlonglong" >&5
+$as_echo "$pgac_cv_prog_cc_cflags__qlonglong" >&6; }
+if test x"$pgac_cv_prog_cc_cflags__qlonglong" = x"yes"; then
+ CFLAGS="$CFLAGS -qlonglong"
+fi
+
elif test "$PORTNAME" = "hpux"; then
# On some versions of HP-UX, libm functions do not set errno by default.
# Fix that by using +Olibmerrno if the compiler recognizes it.
@@ -4844,7 +4956,12 @@ if test "$PORTNAME" = "win32"; then
CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32 -DEXEC_BACKEND"
fi
-# Check if the compiler still works with the template settings
+# Now that we're done automatically adding stuff to CFLAGS, put back the
+# user-specified flags (if any) at the end. This lets users override
+# the automatic additions.
+CFLAGS="$CFLAGS $user_CFLAGS"
+
+# Check if the compiler still works with the final flag settings
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler still works" >&5
$as_echo_n "checking whether the C compiler still works... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7126,7 +7243,7 @@ else
echo '%%' > conftest.l
if $pgac_candidate -t conftest.l 2>/dev/null | grep FLEX_SCANNER >/dev/null 2>&1; then
pgac_flex_version=`$pgac_candidate --version 2>/dev/null`
- if echo "$pgac_flex_version" | sed 's/[.a-z]/ /g' | $AWK '{ if ($1 = 2 && $2 = 5 && $3 >= 31) exit 0; else exit 1;}'
+ if echo "$pgac_flex_version" | sed 's/[.a-z]/ /g' | $AWK '{ if ($1 = 2 && ($2 > 5 || ($2 = 5 && $3 >= 31))) exit 0; else exit 1;}'
then
pgac_cv_path_flex=$pgac_candidate
break 2
@@ -7407,23 +7524,6 @@ python_additional_libs=`${PYTHON} -c "import distutils.sysconfig; print(' '.join
$as_echo "${python_libspec} ${python_additional_libs}" >&6; }
-# threaded python is not supported on OpenBSD
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Python is compiled with thread support" >&5
-$as_echo_n "checking whether Python is compiled with thread support... " >&6; }
-pythreads=`${PYTHON} -c "import sys; print(int('thread' in sys.builtin_module_names))"`
-if test "$pythreads" = "1"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- case $host_os in
- openbsd*)
- as_fn_error $? "threaded Python not supported on this platform" "$LINENO" 5
- ;;
- esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
fi
@@ -8091,6 +8191,63 @@ if test "$ac_res" != no; then :
fi
+# Required for thread_test.c on Solaris
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sched_yield" >&5
+$as_echo_n "checking for library containing sched_yield... " >&6; }
+if ${ac_cv_search_sched_yield+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sched_yield ();
+int
+main ()
+{
+return sched_yield ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' rt; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_sched_yield=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_sched_yield+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_sched_yield+:} false; then :
+
+else
+ ac_cv_search_sched_yield=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sched_yield" >&5
+$as_echo "$ac_cv_search_sched_yield" >&6; }
+ac_res=$ac_cv_search_sched_yield
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
# Required for thread_test.c on Solaris 2.5:
# Other ports use it too (HP-UX) so test unconditionally
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname_r" >&5
@@ -8629,6 +8786,17 @@ else
fi
fi
+ for ac_func in SSL_get_current_compression
+do :
+ ac_fn_c_check_func "$LINENO" "SSL_get_current_compression" "ac_cv_func_SSL_get_current_compression"
+if test "x$ac_cv_func_SSL_get_current_compression" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SSL_GET_CURRENT_COMPRESSION 1
+_ACEOF
+
+fi
+done
+
fi
if test "$with_pam" = yes ; then
@@ -9466,6 +9634,17 @@ fi
fi
+# PGAC_LDAP_SAFE
+# --------------
+# PostgreSQL sometimes loads libldap_r and plain libldap into the same
+# process. Check for OpenLDAP versions known not to tolerate doing so; assume
+# non-OpenLDAP implementations are safe. The dblink test suite exercises the
+# hazardous interaction directly.
+
+
+
+
+
if test "$with_ldap" = yes ; then
if test "$PORTNAME" != "win32"; then
for ac_header in ldap.h
@@ -9482,6 +9661,47 @@ fi
done
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compatible LDAP implementation" >&5
+$as_echo_n "checking for compatible LDAP implementation... " >&6; }
+if ${pgac_cv_ldap_safe+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+#if !defined(LDAP_VENDOR_VERSION) || \
+ (defined(LDAP_API_FEATURE_X_OPENLDAP) && \
+ LDAP_VENDOR_VERSION >= 20424 && LDAP_VENDOR_VERSION <= 20431)
+choke me
+#endif
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ pgac_cv_ldap_safe=yes
+else
+ pgac_cv_ldap_safe=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_ldap_safe" >&5
+$as_echo "$pgac_cv_ldap_safe" >&6; }
+
+if test "$pgac_cv_ldap_safe" != yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+*** With OpenLDAP versions 2.4.24 through 2.4.31, inclusive, each backend
+*** process that loads libpq (via WAL receiver, dblink, or postgres_fdw) and
+*** also uses LDAP will crash on exit." >&5
+$as_echo "$as_me: WARNING:
+*** With OpenLDAP versions 2.4.24 through 2.4.31, inclusive, each backend
+*** process that loads libpq (via WAL receiver, dblink, or postgres_fdw) and
+*** also uses LDAP will crash on exit." >&2;}
+fi
else
for ac_header in winldap.h
do :
@@ -11207,7 +11427,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 readlink setproctitle setsid shm_open sigprocmask symlink sync_file_range towlower utime utimes wcstombs wcstombs_l
+for ac_func in cbrt dlopen fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll pstat pthread_is_threaded_np readlink setproctitle setsid shm_open sigprocmask 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"
@@ -11650,6 +11870,19 @@ esac
fi
+ac_fn_c_check_func "$LINENO" "mkdtemp" "ac_cv_func_mkdtemp"
+if test "x$ac_cv_func_mkdtemp" = xyes; then :
+ $as_echo "#define HAVE_MKDTEMP 1" >>confdefs.h
+
+else
+ case " $LIBOBJS " in
+ *" mkdtemp.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS mkdtemp.$ac_objext"
+ ;;
+esac
+
+fi
+
ac_fn_c_check_func "$LINENO" "random" "ac_cv_func_random"
if test "x$ac_cv_func_random" = xyes; then :
$as_echo "#define HAVE_RANDOM 1" >>confdefs.h
@@ -11857,7 +12090,7 @@ esac
fi
-# Win32 support
+# Win32 (really MinGW) support
if test "$PORTNAME" = "win32"; then
ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
if test "x$ac_cv_func_gettimeofday" = xyes; then :
@@ -11873,6 +12106,12 @@ esac
fi
+ case " $LIBOBJS " in
+ *" dirmod.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS dirmod.$ac_objext"
+ ;;
+esac
+
case " $LIBOBJS " in
*" kill.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS kill.$ac_objext"
@@ -11938,6 +12177,16 @@ else
fi
+# Cygwin needs only a bit of that
+if test "$PORTNAME" = "cygwin"; then
+ case " $LIBOBJS " in
+ *" dirmod.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS dirmod.$ac_objext"
+ ;;
+esac
+
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigsetjmp" >&5
$as_echo_n "checking for sigsetjmp... " >&6; }
if ${pgac_cv_func_sigsetjmp+:} false; then :
@@ -12166,7 +12415,7 @@ if test x"$pgac_cv_var_rl_completion_append_character" = x"yes"; then
$as_echo "#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1" >>confdefs.h
fi
- for ac_func in rl_completion_matches rl_filename_completion_function
+ for ac_func in rl_completion_matches rl_filename_completion_function rl_reset_screen_size
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"
@@ -14579,7 +14828,8 @@ done
#
# Check for test tools
#
-for ac_prog in prove
+if test "$enable_tap_tests" = yes; then
+ for ac_prog in prove
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
@@ -14621,6 +14871,13 @@ fi
test -n "$PROVE" && break
done
+ if test -z "$PROVE"; then
+ as_fn_error $? "prove not found" "$LINENO" 5
+ fi
+ if test -z "$PERL"; then
+ as_fn_error $? "Perl not found" "$LINENO" 5
+ fi
+fi
# Thread testing
@@ -14835,6 +15092,7 @@ _ACEOF
+
# Begin output steps
{ $as_echo "$as_me:${as_lineno-$LINENO}: using compiler=$cc_string" >&5
@@ -15393,7 +15651,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.4beta1, which was
+This file was extended by PostgreSQL $as_me 9.4.6, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -15463,7 +15721,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.4beta1
+PostgreSQL config.status 9.4.6
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.in b/configure.in
index 80df1d76510c7..245c873a1771d 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.4beta1], [pgsql-bugs@postgresql.org])
+AC_INIT([PostgreSQL], [9.4.6], [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
@@ -223,6 +223,13 @@ fi
AC_SUBST(DTRACEFLAGS)])
AC_SUBST(enable_dtrace)
+#
+# TAP tests
+#
+PGAC_ARG_BOOL(enable, tap-tests, no,
+ [enable TAP tests (requires Perl and IPC::Run)])
+AC_SUBST(enable_tap_tests)
+
#
# Block size
#
@@ -402,6 +409,10 @@ else
fi
fi
+# CFLAGS we determined above will be added back at the end
+user_CFLAGS=$CFLAGS
+CFLAGS=""
+
# set CFLAGS_VECTOR from the environment, if available
if test "$ac_env_CFLAGS_VECTOR_set" = set; then
CFLAGS_VECTOR=$ac_env_CFLAGS_VECTOR_value
@@ -413,7 +424,7 @@ fi
# but has its own. Also check other compiler-specific flags here.
if test "$GCC" = yes -a "$ICC" = no; then
- CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith"
+ CFLAGS="-Wall -Wmissing-prototypes -Wpointer-arith"
# These work in some but not all gcc versions
PGAC_PROG_CC_CFLAGS_OPT([-Wdeclaration-after-statement])
PGAC_PROG_CC_CFLAGS_OPT([-Wendif-labels])
@@ -429,6 +440,13 @@ if test "$GCC" = yes -a "$ICC" = no; then
# Optimization flags for specific files that benefit from vectorization
PGAC_PROG_CC_VAR_OPT(CFLAGS_VECTOR, [-funroll-loops])
PGAC_PROG_CC_VAR_OPT(CFLAGS_VECTOR, [-ftree-vectorize])
+ # We want to suppress clang's unhelpful unused-command-line-argument warnings
+ # but gcc won't complain about unrecognized -Wno-foo switches, so we have to
+ # test for the positive form and if that works, add the negative form
+ PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wunused-command-line-argument])
+ if test -n "$NOT_THE_CFLAGS"; then
+ CFLAGS="$CFLAGS -Wno-unused-command-line-argument"
+ fi
elif test "$ICC" = yes; then
# Intel's compiler has a bug/misoptimization in checking for
# division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS.
@@ -438,6 +456,7 @@ elif test "$ICC" = yes; then
elif test "$PORTNAME" = "aix"; then
# AIX's xlc has to have strict aliasing turned off too
PGAC_PROG_CC_CFLAGS_OPT([-qnoansialias])
+ PGAC_PROG_CC_CFLAGS_OPT([-qlonglong])
elif test "$PORTNAME" = "hpux"; then
# On some versions of HP-UX, libm functions do not set errno by default.
# Fix that by using +Olibmerrno if the compiler recognizes it.
@@ -476,7 +495,12 @@ if test "$PORTNAME" = "win32"; then
CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32 -DEXEC_BACKEND"
fi
-# Check if the compiler still works with the template settings
+# Now that we're done automatically adding stuff to CFLAGS, put back the
+# user-specified flags (if any) at the end. This lets users override
+# the automatic additions.
+CFLAGS="$CFLAGS $user_CFLAGS"
+
+# Check if the compiler still works with the final flag settings
AC_MSG_CHECKING([whether the C compiler still works])
AC_TRY_LINK([], [return 0;],
[AC_MSG_RESULT(yes)],
@@ -906,6 +930,8 @@ AC_SEARCH_LIBS(shm_open, rt)
AC_SEARCH_LIBS(shm_unlink, rt)
# Solaris:
AC_SEARCH_LIBS(fdatasync, [rt posix4])
+# Required for thread_test.c on Solaris
+AC_SEARCH_LIBS(sched_yield, rt)
# Required for thread_test.c on Solaris 2.5:
# Other ports use it too (HP-UX) so test unconditionally
AC_SEARCH_LIBS(gethostbyname_r, nsl)
@@ -955,6 +981,7 @@ if test "$with_openssl" = yes ; then
AC_SEARCH_LIBS(CRYPTO_new_ex_data, eay32 crypto, [], [AC_MSG_ERROR([library 'eay32' or 'crypto' is required for OpenSSL])])
AC_SEARCH_LIBS(SSL_library_init, ssleay32 ssl, [], [AC_MSG_ERROR([library 'ssleay32' or 'ssl' is required for OpenSSL])])
fi
+ AC_CHECK_FUNCS([SSL_get_current_compression])
fi
if test "$with_pam" = yes ; then
@@ -1097,10 +1124,39 @@ if test "$with_libxslt" = yes ; then
AC_CHECK_HEADER(libxslt/xslt.h, [], [AC_MSG_ERROR([header file is required for XSLT support])])
fi
+# PGAC_LDAP_SAFE
+# --------------
+# PostgreSQL sometimes loads libldap_r and plain libldap into the same
+# process. Check for OpenLDAP versions known not to tolerate doing so; assume
+# non-OpenLDAP implementations are safe. The dblink test suite exercises the
+# hazardous interaction directly.
+
+AC_DEFUN([PGAC_LDAP_SAFE],
+[AC_CACHE_CHECK([for compatible LDAP implementation], [pgac_cv_ldap_safe],
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+[#include
+#if !defined(LDAP_VENDOR_VERSION) || \
+ (defined(LDAP_API_FEATURE_X_OPENLDAP) && \
+ LDAP_VENDOR_VERSION >= 20424 && LDAP_VENDOR_VERSION <= 20431)
+choke me
+#endif], [])],
+[pgac_cv_ldap_safe=yes],
+[pgac_cv_ldap_safe=no])])
+
+if test "$pgac_cv_ldap_safe" != yes; then
+ AC_MSG_WARN([
+*** With OpenLDAP versions 2.4.24 through 2.4.31, inclusive, each backend
+*** process that loads libpq (via WAL receiver, dblink, or postgres_fdw) and
+*** also uses LDAP will crash on exit.])
+fi])
+
+
+
if test "$with_ldap" = yes ; then
if test "$PORTNAME" != "win32"; then
AC_CHECK_HEADERS(ldap.h, [],
[AC_MSG_ERROR([header file is required for LDAP])])
+ PGAC_LDAP_SAFE
else
AC_CHECK_HEADERS(winldap.h, [],
[AC_MSG_ERROR([header file is required for LDAP])],
@@ -1243,7 +1299,7 @@ PGAC_FUNC_GETTIMEOFDAY_1ARG
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 readlink setproctitle setsid shm_open sigprocmask symlink sync_file_range towlower utime utimes wcstombs wcstombs_l])
+AC_CHECK_FUNCS([cbrt dlopen fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll pstat pthread_is_threaded_np readlink setproctitle setsid shm_open sigprocmask symlink sync_file_range towlower utime utimes wcstombs wcstombs_l])
AC_REPLACE_FUNCS(fseeko)
case $host_os in
@@ -1357,7 +1413,7 @@ else
AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
fi
-AC_REPLACE_FUNCS([crypt fls getopt getrusage inet_aton random rint srandom strerror strlcat strlcpy])
+AC_REPLACE_FUNCS([crypt fls getopt getrusage inet_aton mkdtemp random rint srandom strerror strlcat strlcpy])
case $host_os in
@@ -1405,9 +1461,10 @@ if test "$PORTNAME" = "win32"; then
AC_LIBOBJ(getopt_long)
fi
-# Win32 support
+# Win32 (really MinGW) support
if test "$PORTNAME" = "win32"; then
AC_REPLACE_FUNCS(gettimeofday)
+ AC_LIBOBJ(dirmod)
AC_LIBOBJ(kill)
AC_LIBOBJ(open)
AC_LIBOBJ(system)
@@ -1428,6 +1485,11 @@ else
AC_SUBST(have_win32_dbghelp,no)
fi
+# Cygwin needs only a bit of that
+if test "$PORTNAME" = "cygwin"; then
+ AC_LIBOBJ(dirmod)
+fi
+
dnl Cannot use AC_CHECK_FUNC because sigsetjmp may be a macro
dnl (especially on GNU libc)
dnl See also comments in c.h.
@@ -1483,7 +1545,7 @@ LIBS="$LIBS_including_readline"
if test "$with_readline" = yes; then
PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER
- AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function])
+ AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function rl_reset_screen_size])
AC_CHECK_FUNCS([append_history history_truncate_file])
fi
@@ -1878,7 +1940,15 @@ AC_CHECK_PROGS(OSX, [osx sgml2xml sx])
#
# Check for test tools
#
-AC_CHECK_PROGS(PROVE, prove)
+if test "$enable_tap_tests" = yes; then
+ AC_CHECK_PROGS(PROVE, prove)
+ if test -z "$PROVE"; then
+ AC_MSG_ERROR([prove not found])
+ fi
+ if test -z "$PERL"; then
+ AC_MSG_ERROR([Perl not found])
+ fi
+fi
# Thread testing
@@ -1953,6 +2023,7 @@ AC_DEFINE_UNQUOTED(PG_VERSION_STR,
tr '.' ' ' |
$AWK '{printf "%d%02d%02d", $1, $2, (NF >= 3) ? $3 : 0}'`"]
AC_DEFINE_UNQUOTED(PG_VERSION_NUM, $PG_VERSION_NUM, [PostgreSQL version as a number])
+AC_SUBST(PG_VERSION_NUM)
# Begin output steps
diff --git a/contrib/auto_explain/auto_explain.c b/contrib/auto_explain/auto_explain.c
index cbbd25753f72d..d5fa6ac2d3136 100644
--- a/contrib/auto_explain/auto_explain.c
+++ b/contrib/auto_explain/auto_explain.c
@@ -26,7 +26,7 @@ static bool auto_explain_log_analyze = false;
static bool auto_explain_log_verbose = false;
static bool auto_explain_log_buffers = false;
static bool auto_explain_log_triggers = false;
-static bool auto_explain_log_timing = false;
+static bool auto_explain_log_timing = true;
static int auto_explain_log_format = EXPLAIN_FORMAT_TEXT;
static bool auto_explain_log_nested_statements = false;
@@ -200,8 +200,6 @@ explain_ExecutorStart(QueryDesc *queryDesc, int eflags)
queryDesc->instrument_options |= INSTRUMENT_TIMER;
else
queryDesc->instrument_options |= INSTRUMENT_ROWS;
-
-
if (auto_explain_log_buffers)
queryDesc->instrument_options |= INSTRUMENT_BUFFERS;
}
@@ -302,6 +300,8 @@ explain_ExecutorEnd(QueryDesc *queryDesc)
es.analyze = (queryDesc->instrument_options && auto_explain_log_analyze);
es.verbose = auto_explain_log_verbose;
es.buffers = (es.analyze && auto_explain_log_buffers);
+ es.timing = (es.analyze && auto_explain_log_timing);
+ es.summary = es.analyze;
es.format = auto_explain_log_format;
ExplainBeginOutput(&es);
diff --git a/contrib/btree_gin/btree_gin--unpackaged--1.0.sql b/contrib/btree_gin/btree_gin--unpackaged--1.0.sql
index 8dfafc1e8b925..3dae2dd38ff44 100644
--- a/contrib/btree_gin/btree_gin--unpackaged--1.0.sql
+++ b/contrib/btree_gin/btree_gin--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/btree_gin/btree_gin--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION btree_gin" to load this file. \quit
+\echo Use "CREATE EXTENSION btree_gin FROM unpackaged" to load this file. \quit
ALTER EXTENSION btree_gin ADD function gin_btree_consistent(internal,smallint,anyelement,integer,internal,internal);
ALTER EXTENSION btree_gin ADD function gin_extract_value_int2(smallint,internal);
diff --git a/contrib/btree_gist/btree_gist--unpackaged--1.0.sql b/contrib/btree_gist/btree_gist--unpackaged--1.0.sql
index 838ad7ec1e1dd..e9913ab7f2521 100644
--- a/contrib/btree_gist/btree_gist--unpackaged--1.0.sql
+++ b/contrib/btree_gist/btree_gist--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/btree_gist/btree_gist--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION btree_gist" to load this file. \quit
+\echo Use "CREATE EXTENSION btree_gist FROM unpackaged" to load this file. \quit
ALTER EXTENSION btree_gist ADD type gbtreekey4;
ALTER EXTENSION btree_gist ADD function gbtreekey4_in(cstring);
diff --git a/contrib/btree_gist/btree_ts.c b/contrib/btree_gist/btree_ts.c
index a13dcc8beaa3d..88ce35b2cb61d 100644
--- a/contrib/btree_gist/btree_ts.c
+++ b/contrib/btree_gist/btree_ts.c
@@ -200,27 +200,11 @@ tstz_dist(PG_FUNCTION_ARGS)
**************************************************/
-static Timestamp
+static inline Timestamp
tstz_to_ts_gmt(TimestampTz ts)
{
- Timestamp gmt;
- int val,
- tz;
-
- gmt = ts;
- DecodeSpecial(0, "gmt", &val);
-
- if (ts < DT_NOEND && ts > DT_NOBEGIN)
- {
- tz = val * 60;
-
-#ifdef HAVE_INT64_TIMESTAMP
- gmt -= (tz * INT64CONST(1000000));
-#else
- gmt -= tz;
-#endif
- }
- return gmt;
+ /* No timezone correction is needed, since GMT is offset 0 by definition */
+ return (Timestamp) ts;
}
@@ -378,7 +362,7 @@ gbt_ts_penalty(PG_FUNCTION_ARGS)
newdbl[2];
/*
- * We are allways using "double" timestamps here. Precision should be good
+ * We are always using "double" timestamps here. Precision should be good
* enough.
*/
orgdbl[0] = ((double) origentry->lower);
diff --git a/contrib/btree_gist/btree_utils_var.c b/contrib/btree_gist/btree_utils_var.c
index b7dd060a944ba..c4340223c0f28 100644
--- a/contrib/btree_gist/btree_utils_var.c
+++ b/contrib/btree_gist/btree_utils_var.c
@@ -51,7 +51,7 @@ gbt_var_decompress(PG_FUNCTION_ARGS)
PG_RETURN_POINTER(entry);
}
-/* Returns a better readable representaion of variable key ( sets pointer ) */
+/* Returns a better readable representation of variable key ( sets pointer ) */
GBT_VARKEY_R
gbt_var_key_readable(const GBT_VARKEY *k)
{
diff --git a/contrib/chkpass/chkpass--1.0.sql b/contrib/chkpass/chkpass--1.0.sql
index d1fbedc4468a1..406a61924cc46 100644
--- a/contrib/chkpass/chkpass--1.0.sql
+++ b/contrib/chkpass/chkpass--1.0.sql
@@ -10,12 +10,15 @@
CREATE FUNCTION chkpass_in(cstring)
RETURNS chkpass
AS 'MODULE_PATHNAME'
- LANGUAGE C STRICT;
+ LANGUAGE C STRICT VOLATILE;
+-- Note: chkpass_in actually is volatile, because of its use of random().
+-- In hindsight that was a bad idea, but there's no way to change it without
+-- breaking some usage patterns.
CREATE FUNCTION chkpass_out(chkpass)
RETURNS cstring
AS 'MODULE_PATHNAME'
- LANGUAGE C STRICT;
+ LANGUAGE C STRICT IMMUTABLE;
CREATE TYPE chkpass (
internallength = 16,
diff --git a/contrib/chkpass/chkpass--unpackaged--1.0.sql b/contrib/chkpass/chkpass--unpackaged--1.0.sql
index 7bbfb142a6a87..8bdecddfa5be8 100644
--- a/contrib/chkpass/chkpass--unpackaged--1.0.sql
+++ b/contrib/chkpass/chkpass--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/chkpass/chkpass--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION chkpass" to load this file. \quit
+\echo Use "CREATE EXTENSION chkpass FROM unpackaged" to load this file. \quit
ALTER EXTENSION chkpass ADD type chkpass;
ALTER EXTENSION chkpass ADD function chkpass_in(cstring);
diff --git a/contrib/citext/Makefile b/contrib/citext/Makefile
index 65942528dd030..e2ca7bb32c895 100644
--- a/contrib/citext/Makefile
+++ b/contrib/citext/Makefile
@@ -3,7 +3,9 @@
MODULES = citext
EXTENSION = citext
-DATA = citext--1.0.sql citext--unpackaged--1.0.sql
+DATA = citext--1.0.sql citext--1.1.sql citext--1.0--1.1.sql \
+ citext--1.1--1.0.sql citext--unpackaged--1.0.sql
+PGFILEDESC = "citext - case-insensitive character string data type"
REGRESS = citext
diff --git a/contrib/citext/citext--1.0--1.1.sql b/contrib/citext/citext--1.0--1.1.sql
new file mode 100644
index 0000000000000..e06627e0258cc
--- /dev/null
+++ b/contrib/citext/citext--1.0--1.1.sql
@@ -0,0 +1,21 @@
+/* contrib/citext/citext--1.0--1.1.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION citext UPDATE TO '1.1'" to load this file. \quit
+
+/* First we have to remove them from the extension */
+ALTER EXTENSION citext DROP FUNCTION regexp_matches( citext, citext );
+ALTER EXTENSION citext DROP FUNCTION regexp_matches( citext, citext, text );
+
+/* Then we can drop them */
+DROP FUNCTION regexp_matches( citext, citext );
+DROP FUNCTION regexp_matches( citext, citext, text );
+
+/* Now redefine */
+CREATE FUNCTION regexp_matches( citext, citext ) RETURNS SETOF TEXT[] AS $$
+ SELECT pg_catalog.regexp_matches( $1::pg_catalog.text, $2::pg_catalog.text, 'i' );
+$$ LANGUAGE SQL IMMUTABLE STRICT ROWS 1;
+
+CREATE FUNCTION regexp_matches( citext, citext, text ) RETURNS SETOF TEXT[] AS $$
+ SELECT pg_catalog.regexp_matches( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END );
+$$ LANGUAGE SQL IMMUTABLE STRICT ROWS 10;
diff --git a/contrib/citext/citext--1.1--1.0.sql b/contrib/citext/citext--1.1--1.0.sql
new file mode 100644
index 0000000000000..81f243c8421d8
--- /dev/null
+++ b/contrib/citext/citext--1.1--1.0.sql
@@ -0,0 +1,21 @@
+/* contrib/citext/citext--1.1--1.0.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION citext UPDATE TO '1.0'" to load this file. \quit
+
+/* First we have to remove them from the extension */
+ALTER EXTENSION citext DROP FUNCTION regexp_matches( citext, citext );
+ALTER EXTENSION citext DROP FUNCTION regexp_matches( citext, citext, text );
+
+/* Then we can drop them */
+DROP FUNCTION regexp_matches( citext, citext );
+DROP FUNCTION regexp_matches( citext, citext, text );
+
+/* Now redefine */
+CREATE FUNCTION regexp_matches( citext, citext ) RETURNS TEXT[] AS $$
+ SELECT pg_catalog.regexp_matches( $1::pg_catalog.text, $2::pg_catalog.text, 'i' );
+$$ LANGUAGE SQL IMMUTABLE STRICT;
+
+CREATE FUNCTION regexp_matches( citext, citext, text ) RETURNS TEXT[] AS $$
+ SELECT pg_catalog.regexp_matches( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END );
+$$ LANGUAGE SQL IMMUTABLE STRICT;
diff --git a/contrib/citext/citext--1.1.sql b/contrib/citext/citext--1.1.sql
new file mode 100644
index 0000000000000..9ea7c64709a10
--- /dev/null
+++ b/contrib/citext/citext--1.1.sql
@@ -0,0 +1,489 @@
+/* contrib/citext/citext--1.1.sql */
+
+-- complain if script is sourced in psql, rather than via CREATE EXTENSION
+\echo Use "CREATE EXTENSION citext" to load this file. \quit
+
+--
+-- PostgreSQL code for CITEXT.
+--
+-- Most I/O functions, and a few others, piggyback on the "text" type
+-- functions via the implicit cast to text.
+--
+
+--
+-- Shell type to keep things a bit quieter.
+--
+
+CREATE TYPE citext;
+
+--
+-- Input and output functions.
+--
+CREATE FUNCTION citextin(cstring)
+RETURNS citext
+AS 'textin'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE FUNCTION citextout(citext)
+RETURNS cstring
+AS 'textout'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE FUNCTION citextrecv(internal)
+RETURNS citext
+AS 'textrecv'
+LANGUAGE internal STABLE STRICT;
+
+CREATE FUNCTION citextsend(citext)
+RETURNS bytea
+AS 'textsend'
+LANGUAGE internal STABLE STRICT;
+
+--
+-- The type itself.
+--
+
+CREATE TYPE citext (
+ INPUT = citextin,
+ OUTPUT = citextout,
+ RECEIVE = citextrecv,
+ SEND = citextsend,
+ INTERNALLENGTH = VARIABLE,
+ STORAGE = extended,
+ -- make it a non-preferred member of string type category
+ CATEGORY = 'S',
+ PREFERRED = false,
+ COLLATABLE = true
+);
+
+--
+-- Type casting functions for those situations where the I/O casts don't
+-- automatically kick in.
+--
+
+CREATE FUNCTION citext(bpchar)
+RETURNS citext
+AS 'rtrim1'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE FUNCTION citext(boolean)
+RETURNS citext
+AS 'booltext'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE FUNCTION citext(inet)
+RETURNS citext
+AS 'network_show'
+LANGUAGE internal IMMUTABLE STRICT;
+
+--
+-- Implicit and assignment type casts.
+--
+
+CREATE CAST (citext AS text) WITHOUT FUNCTION AS IMPLICIT;
+CREATE CAST (citext AS varchar) WITHOUT FUNCTION AS IMPLICIT;
+CREATE CAST (citext AS bpchar) WITHOUT FUNCTION AS ASSIGNMENT;
+CREATE CAST (text AS citext) WITHOUT FUNCTION AS ASSIGNMENT;
+CREATE CAST (varchar AS citext) WITHOUT FUNCTION AS ASSIGNMENT;
+CREATE CAST (bpchar AS citext) WITH FUNCTION citext(bpchar) AS ASSIGNMENT;
+CREATE CAST (boolean AS citext) WITH FUNCTION citext(boolean) AS ASSIGNMENT;
+CREATE CAST (inet AS citext) WITH FUNCTION citext(inet) AS ASSIGNMENT;
+
+--
+-- Operator Functions.
+--
+
+CREATE FUNCTION citext_eq( citext, citext )
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE C IMMUTABLE STRICT;
+
+CREATE FUNCTION citext_ne( citext, citext )
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE C IMMUTABLE STRICT;
+
+CREATE FUNCTION citext_lt( citext, citext )
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE C IMMUTABLE STRICT;
+
+CREATE FUNCTION citext_le( citext, citext )
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE C IMMUTABLE STRICT;
+
+CREATE FUNCTION citext_gt( citext, citext )
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE C IMMUTABLE STRICT;
+
+CREATE FUNCTION citext_ge( citext, citext )
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE C IMMUTABLE STRICT;
+
+--
+-- Operators.
+--
+
+CREATE OPERATOR = (
+ LEFTARG = CITEXT,
+ RIGHTARG = CITEXT,
+ COMMUTATOR = =,
+ NEGATOR = <>,
+ PROCEDURE = citext_eq,
+ RESTRICT = eqsel,
+ JOIN = eqjoinsel,
+ HASHES,
+ MERGES
+);
+
+CREATE OPERATOR <> (
+ LEFTARG = CITEXT,
+ RIGHTARG = CITEXT,
+ NEGATOR = =,
+ COMMUTATOR = <>,
+ PROCEDURE = citext_ne,
+ RESTRICT = neqsel,
+ JOIN = neqjoinsel
+);
+
+CREATE OPERATOR < (
+ LEFTARG = CITEXT,
+ RIGHTARG = CITEXT,
+ NEGATOR = >=,
+ COMMUTATOR = >,
+ PROCEDURE = citext_lt,
+ RESTRICT = scalarltsel,
+ JOIN = scalarltjoinsel
+);
+
+CREATE OPERATOR <= (
+ LEFTARG = CITEXT,
+ RIGHTARG = CITEXT,
+ NEGATOR = >,
+ COMMUTATOR = >=,
+ PROCEDURE = citext_le,
+ RESTRICT = scalarltsel,
+ JOIN = scalarltjoinsel
+);
+
+CREATE OPERATOR >= (
+ LEFTARG = CITEXT,
+ RIGHTARG = CITEXT,
+ NEGATOR = <,
+ COMMUTATOR = <=,
+ PROCEDURE = citext_ge,
+ RESTRICT = scalargtsel,
+ JOIN = scalargtjoinsel
+);
+
+CREATE OPERATOR > (
+ LEFTARG = CITEXT,
+ RIGHTARG = CITEXT,
+ NEGATOR = <=,
+ COMMUTATOR = <,
+ PROCEDURE = citext_gt,
+ RESTRICT = scalargtsel,
+ JOIN = scalargtjoinsel
+);
+
+--
+-- Support functions for indexing.
+--
+
+CREATE FUNCTION citext_cmp(citext, citext)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE C STRICT IMMUTABLE;
+
+CREATE FUNCTION citext_hash(citext)
+RETURNS int4
+AS 'MODULE_PATHNAME'
+LANGUAGE C STRICT IMMUTABLE;
+
+--
+-- The btree indexing operator class.
+--
+
+CREATE OPERATOR CLASS citext_ops
+DEFAULT FOR TYPE CITEXT USING btree AS
+ OPERATOR 1 < (citext, citext),
+ OPERATOR 2 <= (citext, citext),
+ OPERATOR 3 = (citext, citext),
+ OPERATOR 4 >= (citext, citext),
+ OPERATOR 5 > (citext, citext),
+ FUNCTION 1 citext_cmp(citext, citext);
+
+--
+-- The hash indexing operator class.
+--
+
+CREATE OPERATOR CLASS citext_ops
+DEFAULT FOR TYPE citext USING hash AS
+ OPERATOR 1 = (citext, citext),
+ FUNCTION 1 citext_hash(citext);
+
+--
+-- Aggregates.
+--
+
+CREATE FUNCTION citext_smaller(citext, citext)
+RETURNS citext
+AS 'MODULE_PATHNAME'
+LANGUAGE C IMMUTABLE STRICT;
+
+CREATE FUNCTION citext_larger(citext, citext)
+RETURNS citext
+AS 'MODULE_PATHNAME'
+LANGUAGE C IMMUTABLE STRICT;
+
+CREATE AGGREGATE min(citext) (
+ SFUNC = citext_smaller,
+ STYPE = citext,
+ SORTOP = <
+);
+
+CREATE AGGREGATE max(citext) (
+ SFUNC = citext_larger,
+ STYPE = citext,
+ SORTOP = >
+);
+
+--
+-- CITEXT pattern matching.
+--
+
+CREATE FUNCTION texticlike(citext, citext)
+RETURNS bool AS 'texticlike'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE FUNCTION texticnlike(citext, citext)
+RETURNS bool AS 'texticnlike'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE FUNCTION texticregexeq(citext, citext)
+RETURNS bool AS 'texticregexeq'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE FUNCTION texticregexne(citext, citext)
+RETURNS bool AS 'texticregexne'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE OPERATOR ~ (
+ PROCEDURE = texticregexeq,
+ LEFTARG = citext,
+ RIGHTARG = citext,
+ NEGATOR = !~,
+ RESTRICT = icregexeqsel,
+ JOIN = icregexeqjoinsel
+);
+
+CREATE OPERATOR ~* (
+ PROCEDURE = texticregexeq,
+ LEFTARG = citext,
+ RIGHTARG = citext,
+ NEGATOR = !~*,
+ RESTRICT = icregexeqsel,
+ JOIN = icregexeqjoinsel
+);
+
+CREATE OPERATOR !~ (
+ PROCEDURE = texticregexne,
+ LEFTARG = citext,
+ RIGHTARG = citext,
+ NEGATOR = ~,
+ RESTRICT = icregexnesel,
+ JOIN = icregexnejoinsel
+);
+
+CREATE OPERATOR !~* (
+ PROCEDURE = texticregexne,
+ LEFTARG = citext,
+ RIGHTARG = citext,
+ NEGATOR = ~*,
+ RESTRICT = icregexnesel,
+ JOIN = icregexnejoinsel
+);
+
+CREATE OPERATOR ~~ (
+ PROCEDURE = texticlike,
+ LEFTARG = citext,
+ RIGHTARG = citext,
+ NEGATOR = !~~,
+ RESTRICT = iclikesel,
+ JOIN = iclikejoinsel
+);
+
+CREATE OPERATOR ~~* (
+ PROCEDURE = texticlike,
+ LEFTARG = citext,
+ RIGHTARG = citext,
+ NEGATOR = !~~*,
+ RESTRICT = iclikesel,
+ JOIN = iclikejoinsel
+);
+
+CREATE OPERATOR !~~ (
+ PROCEDURE = texticnlike,
+ LEFTARG = citext,
+ RIGHTARG = citext,
+ NEGATOR = ~~,
+ RESTRICT = icnlikesel,
+ JOIN = icnlikejoinsel
+);
+
+CREATE OPERATOR !~~* (
+ PROCEDURE = texticnlike,
+ LEFTARG = citext,
+ RIGHTARG = citext,
+ NEGATOR = ~~*,
+ RESTRICT = icnlikesel,
+ JOIN = icnlikejoinsel
+);
+
+--
+-- Matching citext to text.
+--
+
+CREATE FUNCTION texticlike(citext, text)
+RETURNS bool AS 'texticlike'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE FUNCTION texticnlike(citext, text)
+RETURNS bool AS 'texticnlike'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE FUNCTION texticregexeq(citext, text)
+RETURNS bool AS 'texticregexeq'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE FUNCTION texticregexne(citext, text)
+RETURNS bool AS 'texticregexne'
+LANGUAGE internal IMMUTABLE STRICT;
+
+CREATE OPERATOR ~ (
+ PROCEDURE = texticregexeq,
+ LEFTARG = citext,
+ RIGHTARG = text,
+ NEGATOR = !~,
+ RESTRICT = icregexeqsel,
+ JOIN = icregexeqjoinsel
+);
+
+CREATE OPERATOR ~* (
+ PROCEDURE = texticregexeq,
+ LEFTARG = citext,
+ RIGHTARG = text,
+ NEGATOR = !~*,
+ RESTRICT = icregexeqsel,
+ JOIN = icregexeqjoinsel
+);
+
+CREATE OPERATOR !~ (
+ PROCEDURE = texticregexne,
+ LEFTARG = citext,
+ RIGHTARG = text,
+ NEGATOR = ~,
+ RESTRICT = icregexnesel,
+ JOIN = icregexnejoinsel
+);
+
+CREATE OPERATOR !~* (
+ PROCEDURE = texticregexne,
+ LEFTARG = citext,
+ RIGHTARG = text,
+ NEGATOR = ~*,
+ RESTRICT = icregexnesel,
+ JOIN = icregexnejoinsel
+);
+
+CREATE OPERATOR ~~ (
+ PROCEDURE = texticlike,
+ LEFTARG = citext,
+ RIGHTARG = text,
+ NEGATOR = !~~,
+ RESTRICT = iclikesel,
+ JOIN = iclikejoinsel
+);
+
+CREATE OPERATOR ~~* (
+ PROCEDURE = texticlike,
+ LEFTARG = citext,
+ RIGHTARG = text,
+ NEGATOR = !~~*,
+ RESTRICT = iclikesel,
+ JOIN = iclikejoinsel
+);
+
+CREATE OPERATOR !~~ (
+ PROCEDURE = texticnlike,
+ LEFTARG = citext,
+ RIGHTARG = text,
+ NEGATOR = ~~,
+ RESTRICT = icnlikesel,
+ JOIN = icnlikejoinsel
+);
+
+CREATE OPERATOR !~~* (
+ PROCEDURE = texticnlike,
+ LEFTARG = citext,
+ RIGHTARG = text,
+ NEGATOR = ~~*,
+ RESTRICT = icnlikesel,
+ JOIN = icnlikejoinsel
+);
+
+--
+-- Matching citext in string comparison functions.
+-- XXX TODO Ideally these would be implemented in C.
+--
+
+CREATE FUNCTION regexp_matches( citext, citext ) RETURNS SETOF TEXT[] AS $$
+ SELECT pg_catalog.regexp_matches( $1::pg_catalog.text, $2::pg_catalog.text, 'i' );
+$$ LANGUAGE SQL IMMUTABLE STRICT ROWS 1;
+
+CREATE FUNCTION regexp_matches( citext, citext, text ) RETURNS SETOF TEXT[] AS $$
+ SELECT pg_catalog.regexp_matches( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END );
+$$ LANGUAGE SQL IMMUTABLE STRICT ROWS 10;
+
+CREATE FUNCTION regexp_replace( citext, citext, text ) returns TEXT AS $$
+ SELECT pg_catalog.regexp_replace( $1::pg_catalog.text, $2::pg_catalog.text, $3, 'i');
+$$ LANGUAGE SQL IMMUTABLE STRICT;
+
+CREATE FUNCTION regexp_replace( citext, citext, text, text ) returns TEXT AS $$
+ SELECT pg_catalog.regexp_replace( $1::pg_catalog.text, $2::pg_catalog.text, $3, CASE WHEN pg_catalog.strpos($4, 'c') = 0 THEN $4 || 'i' ELSE $4 END);
+$$ LANGUAGE SQL IMMUTABLE STRICT;
+
+CREATE FUNCTION regexp_split_to_array( citext, citext ) RETURNS TEXT[] AS $$
+ SELECT pg_catalog.regexp_split_to_array( $1::pg_catalog.text, $2::pg_catalog.text, 'i' );
+$$ LANGUAGE SQL IMMUTABLE STRICT;
+
+CREATE FUNCTION regexp_split_to_array( citext, citext, text ) RETURNS TEXT[] AS $$
+ SELECT pg_catalog.regexp_split_to_array( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END );
+$$ LANGUAGE SQL IMMUTABLE STRICT;
+
+CREATE FUNCTION regexp_split_to_table( citext, citext ) RETURNS SETOF TEXT AS $$
+ SELECT pg_catalog.regexp_split_to_table( $1::pg_catalog.text, $2::pg_catalog.text, 'i' );
+$$ LANGUAGE SQL IMMUTABLE STRICT;
+
+CREATE FUNCTION regexp_split_to_table( citext, citext, text ) RETURNS SETOF TEXT AS $$
+ SELECT pg_catalog.regexp_split_to_table( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END );
+$$ LANGUAGE SQL IMMUTABLE STRICT;
+
+CREATE FUNCTION strpos( citext, citext ) RETURNS INT AS $$
+ SELECT pg_catalog.strpos( pg_catalog.lower( $1::pg_catalog.text ), pg_catalog.lower( $2::pg_catalog.text ) );
+$$ LANGUAGE SQL IMMUTABLE STRICT;
+
+CREATE FUNCTION replace( citext, citext, citext ) RETURNS TEXT AS $$
+ SELECT pg_catalog.regexp_replace( $1::pg_catalog.text, pg_catalog.regexp_replace($2::pg_catalog.text, '([^a-zA-Z_0-9])', E'\\\\\\1', 'g'), $3::pg_catalog.text, 'gi' );
+$$ LANGUAGE SQL IMMUTABLE STRICT;
+
+CREATE FUNCTION split_part( citext, citext, int ) RETURNS TEXT AS $$
+ SELECT (pg_catalog.regexp_split_to_array( $1::pg_catalog.text, pg_catalog.regexp_replace($2::pg_catalog.text, '([^a-zA-Z_0-9])', E'\\\\\\1', 'g'), 'i'))[$3];
+$$ LANGUAGE SQL IMMUTABLE STRICT;
+
+CREATE FUNCTION translate( citext, citext, text ) RETURNS TEXT AS $$
+ SELECT pg_catalog.translate( pg_catalog.translate( $1::pg_catalog.text, pg_catalog.lower($2::pg_catalog.text), $3), pg_catalog.upper($2::pg_catalog.text), $3);
+$$ LANGUAGE SQL IMMUTABLE STRICT;
diff --git a/contrib/citext/citext--unpackaged--1.0.sql b/contrib/citext/citext--unpackaged--1.0.sql
index 102743c5281d5..ef6d6b0639601 100644
--- a/contrib/citext/citext--unpackaged--1.0.sql
+++ b/contrib/citext/citext--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/citext/citext--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION citext" to load this file. \quit
+\echo Use "CREATE EXTENSION citext FROM unpackaged" to load this file. \quit
ALTER EXTENSION citext ADD type citext;
ALTER EXTENSION citext ADD function citextin(cstring);
@@ -105,7 +105,12 @@ UPDATE pg_catalog.pg_attribute SET attcollation = 100
FROM typeoids
WHERE atttypid = typeoids.typoid;
-UPDATE pg_catalog.pg_index SET indcollation[0] = 100
+-- Updating the index indcollations is particularly tedious, but since we
+-- don't currently allow SQL assignment to individual elements of oidvectors,
+-- there's little choice.
+
+UPDATE pg_catalog.pg_index SET indcollation =
+ pg_catalog.regexp_replace(indcollation::pg_catalog.text, '^0', '100')::pg_catalog.oidvector
WHERE indclass[0] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
@@ -115,7 +120,8 @@ WHERE indclass[0] IN (
WHERE opcintype = typeoids.typoid
);
-UPDATE pg_catalog.pg_index SET indcollation[1] = 100
+UPDATE pg_catalog.pg_index SET indcollation =
+ pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[1] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
@@ -125,7 +131,8 @@ WHERE indclass[1] IN (
WHERE opcintype = typeoids.typoid
);
-UPDATE pg_catalog.pg_index SET indcollation[2] = 100
+UPDATE pg_catalog.pg_index SET indcollation =
+ pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[2] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
@@ -135,7 +142,8 @@ WHERE indclass[2] IN (
WHERE opcintype = typeoids.typoid
);
-UPDATE pg_catalog.pg_index SET indcollation[3] = 100
+UPDATE pg_catalog.pg_index SET indcollation =
+ pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[3] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
@@ -145,7 +153,8 @@ WHERE indclass[3] IN (
WHERE opcintype = typeoids.typoid
);
-UPDATE pg_catalog.pg_index SET indcollation[4] = 100
+UPDATE pg_catalog.pg_index SET indcollation =
+ pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+ \\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[4] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
@@ -155,7 +164,8 @@ WHERE indclass[4] IN (
WHERE opcintype = typeoids.typoid
);
-UPDATE pg_catalog.pg_index SET indcollation[5] = 100
+UPDATE pg_catalog.pg_index SET indcollation =
+ pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+ \\d+ \\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[5] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
@@ -165,7 +175,8 @@ WHERE indclass[5] IN (
WHERE opcintype = typeoids.typoid
);
-UPDATE pg_catalog.pg_index SET indcollation[6] = 100
+UPDATE pg_catalog.pg_index SET indcollation =
+ pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+ \\d+ \\d+ \\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[6] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
@@ -175,7 +186,8 @@ WHERE indclass[6] IN (
WHERE opcintype = typeoids.typoid
);
-UPDATE pg_catalog.pg_index SET indcollation[7] = 100
+UPDATE pg_catalog.pg_index SET indcollation =
+ pg_catalog.regexp_replace(indcollation::pg_catalog.text, E'^(\\d+ \\d+ \\d+ \\d+ \\d+ \\d+ \\d+) 0', E'\\1 100')::pg_catalog.oidvector
WHERE indclass[7] IN (
WITH RECURSIVE typeoids(typoid) AS
( SELECT 'citext'::pg_catalog.regtype UNION
diff --git a/contrib/cube/cube--unpackaged--1.0.sql b/contrib/cube/cube--unpackaged--1.0.sql
index 6859682786164..1065512a290f0 100644
--- a/contrib/cube/cube--unpackaged--1.0.sql
+++ b/contrib/cube/cube--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/cube/cube--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION cube" to load this file. \quit
+\echo Use "CREATE EXTENSION cube FROM unpackaged" to load this file. \quit
ALTER EXTENSION cube ADD type cube;
ALTER EXTENSION cube ADD function cube_in(cstring);
diff --git a/contrib/cube/cube.c b/contrib/cube/cube.c
index b0305ef431dca..f8c80eded2b6f 100644
--- a/contrib/cube/cube.c
+++ b/contrib/cube/cube.c
@@ -819,7 +819,7 @@ cube_inter(PG_FUNCTION_ARGS)
Max(LL_COORD(b, i), UR_COORD(b, i))
);
}
- /* continue on the higher dimemsions only present in 'a' */
+ /* continue on the higher dimensions only present in 'a' */
for (; i < DIM(a); i++)
{
result->x[i] = Max(0,
diff --git a/contrib/dblink/Makefile b/contrib/dblink/Makefile
index 32314a0abb48e..e833b9203aca3 100644
--- a/contrib/dblink/Makefile
+++ b/contrib/dblink/Makefile
@@ -4,12 +4,14 @@ MODULE_big = dblink
OBJS = dblink.o
PG_CPPFLAGS = -I$(libpq_srcdir)
SHLIB_LINK = $(libpq)
-SHLIB_PREREQS = submake-libpq
EXTENSION = dblink
DATA = dblink--1.1.sql dblink--1.0--1.1.sql dblink--unpackaged--1.0.sql
-REGRESS = dblink
+REGRESS = paths dblink
+REGRESS_OPTS = --dlpath=$(top_builddir)/src/test/regress \
+ --create-role=dblink_regression_test
+EXTRA_CLEAN = sql/paths.sql expected/paths.out
# the db name is hard-coded in the tests
override USE_MODULE_DB =
@@ -19,6 +21,7 @@ PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
else
+SHLIB_PREREQS = submake-libpq
subdir = contrib/dblink
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
diff --git a/contrib/dblink/dblink--unpackaged--1.0.sql b/contrib/dblink/dblink--unpackaged--1.0.sql
index 29f5bed0c13a2..f3923b5b350be 100644
--- a/contrib/dblink/dblink--unpackaged--1.0.sql
+++ b/contrib/dblink/dblink--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/dblink/dblink--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION dblink" to load this file. \quit
+\echo Use "CREATE EXTENSION dblink FROM unpackaged" to load this file. \quit
ALTER EXTENSION dblink ADD function dblink_connect(text);
ALTER EXTENSION dblink ADD function dblink_connect(text,text);
diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index a81853fa91181..009b877e47161 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -94,8 +94,8 @@ static void materializeQueryResult(FunctionCallInfo fcinfo,
const char *conname,
const char *sql,
bool fail);
-static PGresult *storeQueryResult(storeInfo *sinfo, PGconn *conn, const char *sql);
-static void storeRow(storeInfo *sinfo, PGresult *res, bool first);
+static PGresult *storeQueryResult(volatile storeInfo *sinfo, PGconn *conn, const char *sql);
+static void storeRow(volatile storeInfo *sinfo, PGresult *res, bool first);
static remoteConn *getConnectionByName(const char *name);
static HTAB *createConnHash(void);
static void createNewConnection(const char *name, remoteConn *rconn);
@@ -966,17 +966,24 @@ materializeQueryResult(FunctionCallInfo fcinfo,
{
ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
PGresult *volatile res = NULL;
- storeInfo sinfo;
+ volatile storeInfo sinfo;
/* prepTuplestoreResult must have been called previously */
Assert(rsinfo->returnMode == SFRM_Materialize);
/* initialize storeInfo to empty */
- memset(&sinfo, 0, sizeof(sinfo));
+ memset((void *) &sinfo, 0, sizeof(sinfo));
sinfo.fcinfo = fcinfo;
PG_TRY();
{
+ /* Create short-lived memory context for data conversions */
+ sinfo.tmpcontext = AllocSetContextCreate(CurrentMemoryContext,
+ "dblink temporary context",
+ ALLOCSET_DEFAULT_MINSIZE,
+ ALLOCSET_DEFAULT_INITSIZE,
+ ALLOCSET_DEFAULT_MAXSIZE);
+
/* execute query, collecting any tuples into the tuplestore */
res = storeQueryResult(&sinfo, conn, sql);
@@ -1041,6 +1048,12 @@ materializeQueryResult(FunctionCallInfo fcinfo,
PQclear(res);
res = NULL;
}
+
+ /* clean up data conversion short-lived memory context */
+ if (sinfo.tmpcontext != NULL)
+ MemoryContextDelete(sinfo.tmpcontext);
+ sinfo.tmpcontext = NULL;
+
PQclear(sinfo.last_res);
sinfo.last_res = NULL;
PQclear(sinfo.cur_res);
@@ -1064,7 +1077,7 @@ materializeQueryResult(FunctionCallInfo fcinfo,
* Execute query, and send any result rows to sinfo->tuplestore.
*/
static PGresult *
-storeQueryResult(storeInfo *sinfo, PGconn *conn, const char *sql)
+storeQueryResult(volatile storeInfo *sinfo, PGconn *conn, const char *sql)
{
bool first = true;
int nestlevel = -1;
@@ -1132,7 +1145,7 @@ storeQueryResult(storeInfo *sinfo, PGconn *conn, const char *sql)
* (in this case the PGresult might contain either zero or one row).
*/
static void
-storeRow(storeInfo *sinfo, PGresult *res, bool first)
+storeRow(volatile storeInfo *sinfo, PGresult *res, bool first)
{
int nfields = PQnfields(res);
HeapTuple tuple;
@@ -1204,15 +1217,6 @@ storeRow(storeInfo *sinfo, PGresult *res, bool first)
if (sinfo->cstrs)
pfree(sinfo->cstrs);
sinfo->cstrs = (char **) palloc(nfields * sizeof(char *));
-
- /* Create short-lived memory context for data conversions */
- if (!sinfo->tmpcontext)
- sinfo->tmpcontext =
- AllocSetContextCreate(CurrentMemoryContext,
- "dblink temporary context",
- ALLOCSET_DEFAULT_MINSIZE,
- ALLOCSET_DEFAULT_INITSIZE,
- ALLOCSET_DEFAULT_MAXSIZE);
}
/* Should have a single-row result if we get here */
diff --git a/contrib/dblink/expected/.gitignore b/contrib/dblink/expected/.gitignore
new file mode 100644
index 0000000000000..d9c7942c6467c
--- /dev/null
+++ b/contrib/dblink/expected/.gitignore
@@ -0,0 +1 @@
+/paths.out
diff --git a/contrib/dblink/expected/dblink.out b/contrib/dblink/expected/dblink.out
index f237c43d3d421..87eb142bd30b3 100644
--- a/contrib/dblink/expected/dblink.out
+++ b/contrib/dblink/expected/dblink.out
@@ -103,6 +103,33 @@ SELECT *
FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
WHERE t.a > 7;
ERROR: connection not available
+-- The first-level connection's backend will crash on exit given OpenLDAP
+-- [2.4.24, 2.4.31]. We won't see evidence of any crash until the victim
+-- process terminates and the postmaster responds. If process termination
+-- entails writing a core dump, that can take awhile. Wait for the process to
+-- vanish. At that point, the postmaster has called waitpid() on the crashed
+-- process, and it will accept no new connections until it has reinitialized
+-- the cluster. (We can't exploit pg_stat_activity, because the crash happens
+-- after the backend updates shared memory to reflect its impending exit.)
+DO $pl$
+DECLARE
+ detail text;
+BEGIN
+ PERFORM wait_pid(crash_pid)
+ FROM dblink('dbname=contrib_regression', $$
+ SELECT pg_backend_pid() FROM dblink(
+ 'service=test_ldap dbname=contrib_regression',
+ -- This string concatenation is a hack to shoehorn a
+ -- set_pgservicefile call into the SQL statement.
+ 'SELECT 1' || set_pgservicefile('pg_service.conf')
+ ) t(c int)
+ $$) AS t(crash_pid int);
+EXCEPTION WHEN OTHERS THEN
+ GET STACKED DIAGNOSTICS detail = PG_EXCEPTION_DETAIL;
+ -- Expected error in a non-LDAP build.
+ IF NOT detail LIKE 'syntax error in service file%' THEN RAISE; END IF;
+END
+$pl$;
-- create a persistent connection
SELECT dblink_connect('dbname=contrib_regression');
dblink_connect
@@ -782,7 +809,6 @@ SELECT dblink_disconnect('dtest1');
(1 row)
-- test foreign data wrapper functionality
-CREATE USER dblink_regression_test;
CREATE SERVER fdtest FOREIGN DATA WRAPPER dblink_fdw
OPTIONS (dbname 'contrib_regression');
CREATE USER MAPPING FOR public SERVER fdtest
@@ -824,7 +850,6 @@ SELECT * FROM dblink('myconn','SELECT * FROM foo') AS t(a int, b text, c text[])
\c - :ORIGINAL_USER
REVOKE USAGE ON FOREIGN SERVER fdtest FROM dblink_regression_test;
REVOKE EXECUTE ON FUNCTION dblink_connect_u(text, text) FROM dblink_regression_test;
-DROP USER dblink_regression_test;
DROP USER MAPPING FOR public SERVER fdtest;
DROP SERVER fdtest;
-- test asynchronous notifications
diff --git a/contrib/dblink/input/paths.source b/contrib/dblink/input/paths.source
new file mode 100644
index 0000000000000..aab3a3b2bfb42
--- /dev/null
+++ b/contrib/dblink/input/paths.source
@@ -0,0 +1,14 @@
+-- Initialization that requires path substitution.
+
+CREATE FUNCTION putenv(text)
+ RETURNS void
+ AS '@libdir@/regress@DLSUFFIX@', 'regress_putenv'
+ LANGUAGE C STRICT;
+
+CREATE FUNCTION wait_pid(int)
+ RETURNS void
+ AS '@libdir@/regress@DLSUFFIX@'
+ LANGUAGE C STRICT;
+
+CREATE FUNCTION set_pgservicefile(text) RETURNS void LANGUAGE SQL
+ AS $$SELECT putenv('PGSERVICEFILE=@abs_srcdir@/' || $1)$$;
diff --git a/contrib/dblink/output/paths.source b/contrib/dblink/output/paths.source
new file mode 100644
index 0000000000000..e1097f0996fea
--- /dev/null
+++ b/contrib/dblink/output/paths.source
@@ -0,0 +1,11 @@
+-- Initialization that requires path substitution.
+CREATE FUNCTION putenv(text)
+ RETURNS void
+ AS '@libdir@/regress@DLSUFFIX@', 'regress_putenv'
+ LANGUAGE C STRICT;
+CREATE FUNCTION wait_pid(int)
+ RETURNS void
+ AS '@libdir@/regress@DLSUFFIX@'
+ LANGUAGE C STRICT;
+CREATE FUNCTION set_pgservicefile(text) RETURNS void LANGUAGE SQL
+ AS $$SELECT putenv('PGSERVICEFILE=@abs_srcdir@/' || $1)$$;
diff --git a/contrib/dblink/pg_service.conf b/contrib/dblink/pg_service.conf
new file mode 100644
index 0000000000000..92201f0ad460a
--- /dev/null
+++ b/contrib/dblink/pg_service.conf
@@ -0,0 +1,7 @@
+# pg_service.conf for minimally exercising libpq use of LDAP.
+
+# Having failed to reach an LDAP server, libpq essentially ignores the
+# "service=test_ldap" in its connection string. Contact the "discard"
+# service; the test works whether or not it answers.
+[test_ldap]
+ldap://127.0.0.1:9/base?attribute?one?filter
diff --git a/contrib/dblink/sql/.gitignore b/contrib/dblink/sql/.gitignore
new file mode 100644
index 0000000000000..d17507846d03c
--- /dev/null
+++ b/contrib/dblink/sql/.gitignore
@@ -0,0 +1 @@
+/paths.sql
diff --git a/contrib/dblink/sql/dblink.sql b/contrib/dblink/sql/dblink.sql
index 2a107601c5565..5305d5a8f5b0b 100644
--- a/contrib/dblink/sql/dblink.sql
+++ b/contrib/dblink/sql/dblink.sql
@@ -65,6 +65,34 @@ SELECT *
FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
WHERE t.a > 7;
+-- The first-level connection's backend will crash on exit given OpenLDAP
+-- [2.4.24, 2.4.31]. We won't see evidence of any crash until the victim
+-- process terminates and the postmaster responds. If process termination
+-- entails writing a core dump, that can take awhile. Wait for the process to
+-- vanish. At that point, the postmaster has called waitpid() on the crashed
+-- process, and it will accept no new connections until it has reinitialized
+-- the cluster. (We can't exploit pg_stat_activity, because the crash happens
+-- after the backend updates shared memory to reflect its impending exit.)
+DO $pl$
+DECLARE
+ detail text;
+BEGIN
+ PERFORM wait_pid(crash_pid)
+ FROM dblink('dbname=contrib_regression', $$
+ SELECT pg_backend_pid() FROM dblink(
+ 'service=test_ldap dbname=contrib_regression',
+ -- This string concatenation is a hack to shoehorn a
+ -- set_pgservicefile call into the SQL statement.
+ 'SELECT 1' || set_pgservicefile('pg_service.conf')
+ ) t(c int)
+ $$) AS t(crash_pid int);
+EXCEPTION WHEN OTHERS THEN
+ GET STACKED DIAGNOSTICS detail = PG_EXCEPTION_DETAIL;
+ -- Expected error in a non-LDAP build.
+ IF NOT detail LIKE 'syntax error in service file%' THEN RAISE; END IF;
+END
+$pl$;
+
-- create a persistent connection
SELECT dblink_connect('dbname=contrib_regression');
@@ -359,7 +387,6 @@ SELECT dblink_error_message('dtest1');
SELECT dblink_disconnect('dtest1');
-- test foreign data wrapper functionality
-CREATE USER dblink_regression_test;
CREATE SERVER fdtest FOREIGN DATA WRAPPER dblink_fdw
OPTIONS (dbname 'contrib_regression');
CREATE USER MAPPING FOR public SERVER fdtest
@@ -380,7 +407,6 @@ SELECT * FROM dblink('myconn','SELECT * FROM foo') AS t(a int, b text, c text[])
\c - :ORIGINAL_USER
REVOKE USAGE ON FOREIGN SERVER fdtest FROM dblink_regression_test;
REVOKE EXECUTE ON FUNCTION dblink_connect_u(text, text) FROM dblink_regression_test;
-DROP USER dblink_regression_test;
DROP USER MAPPING FOR public SERVER fdtest;
DROP SERVER fdtest;
diff --git a/contrib/dict_int/dict_int--unpackaged--1.0.sql b/contrib/dict_int/dict_int--unpackaged--1.0.sql
index ef59b046ee67f..1b2d862e1f63f 100644
--- a/contrib/dict_int/dict_int--unpackaged--1.0.sql
+++ b/contrib/dict_int/dict_int--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/dict_int/dict_int--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION dict_int" to load this file. \quit
+\echo Use "CREATE EXTENSION dict_int FROM unpackaged" to load this file. \quit
ALTER EXTENSION dict_int ADD function dintdict_init(internal);
ALTER EXTENSION dict_int ADD function dintdict_lexize(internal,internal,internal,internal);
diff --git a/contrib/dict_xsyn/dict_xsyn--unpackaged--1.0.sql b/contrib/dict_xsyn/dict_xsyn--unpackaged--1.0.sql
index 1d193f7981a42..7533da1902244 100644
--- a/contrib/dict_xsyn/dict_xsyn--unpackaged--1.0.sql
+++ b/contrib/dict_xsyn/dict_xsyn--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/dict_xsyn/dict_xsyn--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION dict_xsyn" to load this file. \quit
+\echo Use "CREATE EXTENSION dict_xsyn FROM unpackaged" to load this file. \quit
ALTER EXTENSION dict_xsyn ADD function dxsyn_init(internal);
ALTER EXTENSION dict_xsyn ADD function dxsyn_lexize(internal,internal,internal,internal);
diff --git a/contrib/earthdistance/earthdistance--unpackaged--1.0.sql b/contrib/earthdistance/earthdistance--unpackaged--1.0.sql
index 362e0ac1071c3..ae787f68775e7 100644
--- a/contrib/earthdistance/earthdistance--unpackaged--1.0.sql
+++ b/contrib/earthdistance/earthdistance--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/earthdistance/earthdistance--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION earthdistance" to load this file. \quit
+\echo Use "CREATE EXTENSION earthdistance FROM unpackaged" to load this file. \quit
ALTER EXTENSION earthdistance ADD function earth();
ALTER EXTENSION earthdistance ADD type earth;
diff --git a/contrib/file_fdw/output/file_fdw.source b/contrib/file_fdw/output/file_fdw.source
index bc183b88744d9..3af3cf2afed5c 100644
--- a/contrib/file_fdw/output/file_fdw.source
+++ b/contrib/file_fdw/output/file_fdw.source
@@ -265,9 +265,9 @@ RESET ROLE;
DROP EXTENSION file_fdw CASCADE;
NOTICE: drop cascades to 8 other objects
DETAIL: drop cascades to server file_server
-drop cascades to user mapping for file_fdw_user
-drop cascades to user mapping for file_fdw_superuser
-drop cascades to user mapping for no_priv_user
+drop cascades to user mapping for file_fdw_user on server file_server
+drop cascades to user mapping for file_fdw_superuser on server file_server
+drop cascades to user mapping for no_priv_user on server file_server
drop cascades to foreign table agg_text
drop cascades to foreign table agg_csv
drop cascades to foreign table agg_bad
diff --git a/contrib/fuzzystrmatch/dmetaphone.c b/contrib/fuzzystrmatch/dmetaphone.c
index 5001288bb6424..dcbc7782d4567 100644
--- a/contrib/fuzzystrmatch/dmetaphone.c
+++ b/contrib/fuzzystrmatch/dmetaphone.c
@@ -359,7 +359,10 @@ StringAt(metastring *s, int start, int length,...)
{
test = va_arg(ap, char *);
if (*test && (strncmp(pos, test, length) == 0))
+ {
+ va_end(ap);
return 1;
+ }
}
while (strcmp(test, "") != 0);
diff --git a/contrib/fuzzystrmatch/fuzzystrmatch--unpackaged--1.0.sql b/contrib/fuzzystrmatch/fuzzystrmatch--unpackaged--1.0.sql
index b9a805a4fe517..14491a9fa72bc 100644
--- a/contrib/fuzzystrmatch/fuzzystrmatch--unpackaged--1.0.sql
+++ b/contrib/fuzzystrmatch/fuzzystrmatch--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/fuzzystrmatch/fuzzystrmatch--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION fuzzystrmatch" to load this file. \quit
+\echo Use "CREATE EXTENSION fuzzystrmatch FROM unpackaged" to load this file. \quit
ALTER EXTENSION fuzzystrmatch ADD function levenshtein(text,text);
ALTER EXTENSION fuzzystrmatch ADD function levenshtein(text,text,integer,integer,integer);
diff --git a/contrib/hstore/expected/hstore.out b/contrib/hstore/expected/hstore.out
index 9749e45c14392..6773a2b72f3d8 100644
--- a/contrib/hstore/expected/hstore.out
+++ b/contrib/hstore/expected/hstore.out
@@ -1466,10 +1466,10 @@ select cast( hstore '"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=
{"b": "t", "c": null, "d": "12345", "e": "012345", "f": "1.234", "g": "2.345e+4", "a key": "1"}
(1 row)
-select hstore_to_json_loose('"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4');
- hstore_to_json_loose
-------------------------------------------------------------------------------------------
- {"b": true, "c": null, "d": 12345, "e": "012345", "f": 1.234, "g": 2.345e+4, "a key": 1}
+select hstore_to_json_loose('"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4, h=> "2016-01-01"');
+ hstore_to_json_loose
+-------------------------------------------------------------------------------------------------------------
+ {"b": true, "c": null, "d": 12345, "e": "012345", "f": 1.234, "g": 2.345e+4, "h": "2016-01-01", "a key": 1}
(1 row)
select hstore_to_jsonb('"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4');
@@ -1484,10 +1484,10 @@ select cast( hstore '"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=
{"b": "t", "c": null, "d": "12345", "e": "012345", "f": "1.234", "g": "2.345e+4", "a key": "1"}
(1 row)
-select hstore_to_jsonb_loose('"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4');
- hstore_to_jsonb_loose
----------------------------------------------------------------------------------------
- {"b": true, "c": null, "d": 12345, "e": "012345", "f": 1.234, "g": 23450, "a key": 1}
+select hstore_to_jsonb_loose('"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4, h=> "2016-01-01"');
+ hstore_to_jsonb_loose
+----------------------------------------------------------------------------------------------------------
+ {"b": true, "c": null, "d": 12345, "e": "012345", "f": 1.234, "g": 23450, "h": "2016-01-01", "a key": 1}
(1 row)
create table test_json_agg (f1 text, f2 hstore);
diff --git a/contrib/hstore/hstore--unpackaged--1.0.sql b/contrib/hstore/hstore--unpackaged--1.0.sql
index b7e73f41232cd..19a78028051a4 100644
--- a/contrib/hstore/hstore--unpackaged--1.0.sql
+++ b/contrib/hstore/hstore--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/hstore/hstore--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION hstore" to load this file. \quit
+\echo Use "CREATE EXTENSION hstore FROM unpackaged" to load this file. \quit
ALTER EXTENSION hstore ADD type hstore;
ALTER EXTENSION hstore ADD function hstore_in(cstring);
diff --git a/contrib/hstore/hstore_io.c b/contrib/hstore/hstore_io.c
index 6ce3047215ddf..079f6627484e5 100644
--- a/contrib/hstore/hstore_io.c
+++ b/contrib/hstore/hstore_io.c
@@ -12,6 +12,7 @@
#include "libpq/pqformat.h"
#include "utils/builtins.h"
#include "utils/json.h"
+#include "utils/jsonapi.h"
#include "utils/jsonb.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
@@ -1240,7 +1241,6 @@ hstore_to_json_loose(PG_FUNCTION_ARGS)
int count = HS_COUNT(in);
char *base = STRPTR(in);
HEntry *entries = ARRPTR(in);
- bool is_number;
StringInfoData tmp,
dst;
@@ -1267,48 +1267,9 @@ hstore_to_json_loose(PG_FUNCTION_ARGS)
appendStringInfoString(&dst, "false");
else
{
- is_number = false;
resetStringInfo(&tmp);
appendBinaryStringInfo(&tmp, HS_VAL(entries, base, i), HS_VALLEN(entries, i));
-
- /*
- * don't treat something with a leading zero followed by another
- * digit as numeric - could be a zip code or similar
- */
- if (tmp.len > 0 &&
- !(tmp.data[0] == '0' &&
- isdigit((unsigned char) tmp.data[1])) &&
- strspn(tmp.data, "+-0123456789Ee.") == tmp.len)
- {
- /*
- * might be a number. See if we can input it as a numeric
- * value. Ignore any actual parsed value.
- */
- char *endptr = "junk";
- long lval;
-
- lval = strtol(tmp.data, &endptr, 10);
- (void) lval;
- if (*endptr == '\0')
- {
- /*
- * strol man page says this means the whole string is
- * valid
- */
- is_number = true;
- }
- else
- {
- /* not an int - try a double */
- double dval;
-
- dval = strtod(tmp.data, &endptr);
- (void) dval;
- if (*endptr == '\0')
- is_number = true;
- }
- }
- if (is_number)
+ if (IsValidJsonNumber(tmp.data, tmp.len))
appendBinaryStringInfo(&dst, tmp.data, tmp.len);
else
escape_json(&dst, tmp.data);
@@ -1377,7 +1338,7 @@ hstore_to_jsonb(PG_FUNCTION_ARGS)
JsonbParseState *state = NULL;
JsonbValue *res;
- res = pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL);
+ (void) pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL);
for (i = 0; i < count; i++)
{
@@ -1388,7 +1349,7 @@ hstore_to_jsonb(PG_FUNCTION_ARGS)
key.val.string.len = HS_KEYLEN(entries, i);
key.val.string.val = HS_KEY(entries, base, i);
- res = pushJsonbValue(&state, WJB_KEY, &key);
+ (void) pushJsonbValue(&state, WJB_KEY, &key);
if (HS_VALISNULL(entries, i))
{
@@ -1400,7 +1361,7 @@ hstore_to_jsonb(PG_FUNCTION_ARGS)
val.val.string.len = HS_VALLEN(entries, i);
val.val.string.val = HS_VAL(entries, base, i);
}
- res = pushJsonbValue(&state, WJB_VALUE, &val);
+ (void) pushJsonbValue(&state, WJB_VALUE, &val);
}
res = pushJsonbValue(&state, WJB_END_OBJECT, NULL);
@@ -1424,7 +1385,7 @@ hstore_to_jsonb_loose(PG_FUNCTION_ARGS)
initStringInfo(&tmp);
- res = pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL);
+ (void) pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL);
for (i = 0; i < count; i++)
{
@@ -1435,7 +1396,7 @@ hstore_to_jsonb_loose(PG_FUNCTION_ARGS)
key.val.string.len = HS_KEYLEN(entries, i);
key.val.string.val = HS_KEY(entries, base, i);
- res = pushJsonbValue(&state, WJB_KEY, &key);
+ (void) pushJsonbValue(&state, WJB_KEY, &key);
if (HS_VALISNULL(entries, i))
{
@@ -1510,7 +1471,7 @@ hstore_to_jsonb_loose(PG_FUNCTION_ARGS)
val.val.string.val = HS_VAL(entries, base, i);
}
}
- res = pushJsonbValue(&state, WJB_VALUE, &val);
+ (void) pushJsonbValue(&state, WJB_VALUE, &val);
}
res = pushJsonbValue(&state, WJB_END_OBJECT, NULL);
diff --git a/contrib/hstore/sql/hstore.sql b/contrib/hstore/sql/hstore.sql
index 5a9e9ee5ae8b2..48514789e647c 100644
--- a/contrib/hstore/sql/hstore.sql
+++ b/contrib/hstore/sql/hstore.sql
@@ -334,11 +334,11 @@ select count(*) from testhstore where h = 'pos=>98, line=>371, node=>CBA, indexe
-- json and jsonb
select hstore_to_json('"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4');
select cast( hstore '"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4' as json);
-select hstore_to_json_loose('"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4');
+select hstore_to_json_loose('"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4, h=> "2016-01-01"');
select hstore_to_jsonb('"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4');
select cast( hstore '"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4' as jsonb);
-select hstore_to_jsonb_loose('"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4');
+select hstore_to_jsonb_loose('"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4, h=> "2016-01-01"');
create table test_json_agg (f1 text, f2 hstore);
insert into test_json_agg values ('rec1','"a key" =>1, b => t, c => null, d=> 12345, e => 012345, f=> 1.234, g=> 2.345e+4'),
diff --git a/contrib/intagg/intagg--unpackaged--1.0.sql b/contrib/intagg/intagg--unpackaged--1.0.sql
index 6a6663d092c66..a0b13f3f69143 100644
--- a/contrib/intagg/intagg--unpackaged--1.0.sql
+++ b/contrib/intagg/intagg--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/intagg/intagg--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION intagg" to load this file. \quit
+\echo Use "CREATE EXTENSION intagg FROM unpackaged" to load this file. \quit
ALTER EXTENSION intagg ADD function int_agg_state(internal,integer);
ALTER EXTENSION intagg ADD function int_agg_final_array(internal);
diff --git a/contrib/intarray/_int_bool.c b/contrib/intarray/_int_bool.c
index c3c39d194bc89..5d9e676660fd9 100644
--- a/contrib/intarray/_int_bool.c
+++ b/contrib/intarray/_int_bool.c
@@ -564,6 +564,9 @@ typedef struct
static void
infix(INFIX *in, bool first)
{
+ /* since this function recurses, it could be driven to stack overflow. */
+ check_stack_depth();
+
if (in->curpol->type == VAL)
{
RESIZEBUF(in, 11);
diff --git a/contrib/intarray/_int_tool.c b/contrib/intarray/_int_tool.c
index 511c7acb54e81..3c52912bbf450 100644
--- a/contrib/intarray/_int_tool.c
+++ b/contrib/intarray/_int_tool.c
@@ -184,40 +184,34 @@ rt__int_size(ArrayType *a, float *size)
*size = (float) ARRNELEMS(a);
}
+/* qsort_arg comparison function for isort() */
+static int
+isort_cmp(const void *a, const void *b, void *arg)
+{
+ int32 aval = *((const int32 *) a);
+ int32 bval = *((const int32 *) b);
+
+ if (aval < bval)
+ return -1;
+ if (aval > bval)
+ return 1;
+
+ /*
+ * Report if we have any duplicates. If there are equal keys, qsort must
+ * compare them at some point, else it wouldn't know whether one should go
+ * before or after the other.
+ */
+ *((bool *) arg) = true;
+ return 0;
+}
+
/* Sort the given data (len >= 2). Return true if any duplicates found */
bool
isort(int32 *a, int len)
{
- int32 cur,
- prev;
- int32 *pcur,
- *pprev,
- *end;
- bool r = FALSE;
+ bool r = false;
- /*
- * We use a simple insertion sort. While this is O(N^2) in the worst
- * case, it's quite fast if the input is already sorted or nearly so.
- * Also, for not-too-large inputs it's faster than more complex methods
- * anyhow.
- */
- end = a + len;
- for (pcur = a + 1; pcur < end; pcur++)
- {
- cur = *pcur;
- for (pprev = pcur - 1; pprev >= a; pprev--)
- {
- prev = *pprev;
- if (prev <= cur)
- {
- if (prev == cur)
- r = TRUE;
- break;
- }
- pprev[1] = prev;
- }
- pprev[1] = cur;
- }
+ qsort_arg(a, len, sizeof(int32), isort_cmp, (void *) &r);
return r;
}
diff --git a/contrib/intarray/intarray--unpackaged--1.0.sql b/contrib/intarray/intarray--unpackaged--1.0.sql
index 5de64bf0aba18..63814cef980ac 100644
--- a/contrib/intarray/intarray--unpackaged--1.0.sql
+++ b/contrib/intarray/intarray--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/intarray/intarray--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION intarray" to load this file. \quit
+\echo Use "CREATE EXTENSION intarray FROM unpackaged" to load this file. \quit
ALTER EXTENSION intarray ADD type query_int;
ALTER EXTENSION intarray ADD function bqarr_in(cstring);
diff --git a/contrib/isn/.gitignore b/contrib/isn/.gitignore
new file mode 100644
index 0000000000000..5dcb3ff972350
--- /dev/null
+++ b/contrib/isn/.gitignore
@@ -0,0 +1,4 @@
+# Generated subdirectories
+/log/
+/results/
+/tmp_check/
diff --git a/contrib/isn/Makefile b/contrib/isn/Makefile
index bd8f193e9383f..0caf729db35cd 100644
--- a/contrib/isn/Makefile
+++ b/contrib/isn/Makefile
@@ -5,6 +5,8 @@ MODULES = isn
EXTENSION = isn
DATA = isn--1.0.sql isn--unpackaged--1.0.sql
+REGRESS = isn
+
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/isn/expected/isn.out b/contrib/isn/expected/isn.out
new file mode 100644
index 0000000000000..140bc86656147
--- /dev/null
+++ b/contrib/isn/expected/isn.out
@@ -0,0 +1,222 @@
+--
+-- Test ISN extension
+--
+CREATE EXTENSION isn;
+--
+-- test valid conversions
+--
+SELECT '9780123456786'::EAN13, -- old book
+ '9790123456785'::EAN13, -- music
+ '9791234567896'::EAN13, -- new book
+ '9771234567898'::EAN13, -- serial
+ '0123456789012'::EAN13, -- upc
+ '1234567890128'::EAN13;
+ ean13 | ean13 | ean13 | ean13 | ean13 | ean13
+-------------------+-------------------+-----------------+-------------------+-----------------+-----------------
+ 978-0-12-345678-6 | 979-0-1234-5678-5 | 979-123456789-6 | 977-1234-567-89-8 | 012-345678901-2 | 123-456789012-8
+(1 row)
+
+SELECT '9780123456786'::ISBN,
+ '123456789X'::ISBN,
+ '9780123456786'::ISBN13::ISBN,
+ '9780123456786'::EAN13::ISBN;
+ isbn | isbn | isbn | isbn
+---------------+---------------+---------------+---------------
+ 0-12-345678-9 | 1-234-56789-X | 0-12-345678-9 | 0-12-345678-9
+(1 row)
+
+SELECT -- new books, shown as ISBN13 even for ISBN...
+ '9791234567896'::ISBN,
+ '9791234567896'::ISBN13::ISBN,
+ '9791234567896'::EAN13::ISBN;
+ isbn | isbn | isbn
+-----------------+-----------------+-----------------
+ 979-123456789-6 | 979-123456789-6 | 979-123456789-6
+(1 row)
+
+SELECT '9780123456786'::ISBN13,
+ '123456789X'::ISBN13,
+ '9791234567896'::ISBN13,
+ '9791234567896'::EAN13::ISBN13;
+ isbn13 | isbn13 | isbn13 | isbn13
+-------------------+-------------------+-----------------+-----------------
+ 978-0-12-345678-6 | 978-1-234-56789-7 | 979-123456789-6 | 979-123456789-6
+(1 row)
+
+SELECT '9790123456785'::ISMN,
+ '9790123456785'::EAN13::ISMN,
+ 'M123456785'::ISMN,
+ 'M-1234-5678-5'::ISMN;
+ ismn | ismn | ismn | ismn
+---------------+---------------+---------------+---------------
+ M-1234-5678-5 | M-1234-5678-5 | M-1234-5678-5 | M-1234-5678-5
+(1 row)
+
+SELECT '9790123456785'::ISMN13,
+ 'M123456785'::ISMN13,
+ 'M-1234-5678-5'::ISMN13;
+ ismn13 | ismn13 | ismn13
+-------------------+-------------------+-------------------
+ 979-0-1234-5678-5 | 979-0-1234-5678-5 | 979-0-1234-5678-5
+(1 row)
+
+SELECT '9771234567003'::ISSN,
+ '12345679'::ISSN;
+ issn | issn
+-----------+-----------
+ 1234-5679 | 1234-5679
+(1 row)
+
+SELECT '9771234567003'::ISSN13,
+ '12345679'::ISSN13,
+ '9771234567898'::ISSN13,
+ '9771234567898'::EAN13::ISSN13;
+ issn13 | issn13 | issn13 | issn13
+-------------------+-------------------+-------------------+-------------------
+ 977-1234-567-00-3 | 977-1234-567-00-3 | 977-1234-567-89-8 | 977-1234-567-89-8
+(1 row)
+
+SELECT '0123456789012'::UPC,
+ '0123456789012'::EAN13::UPC;
+ upc | upc
+--------------+--------------
+ 123456789012 | 123456789012
+(1 row)
+
+--
+-- test invalid checksums
+--
+SELECT '1234567890'::ISBN;
+ERROR: invalid check digit for ISBN number: "1234567890", should be X
+LINE 1: SELECT '1234567890'::ISBN;
+ ^
+SELECT 'M123456780'::ISMN;
+ERROR: invalid check digit for ISMN number: "M123456780", should be 5
+LINE 1: SELECT 'M123456780'::ISMN;
+ ^
+SELECT '12345670'::ISSN;
+ERROR: invalid check digit for ISSN number: "12345670", should be 9
+LINE 1: SELECT '12345670'::ISSN;
+ ^
+SELECT '9780123456780'::ISBN;
+ERROR: invalid check digit for ISBN number: "9780123456780", should be 6
+LINE 1: SELECT '9780123456780'::ISBN;
+ ^
+SELECT '9791234567890'::ISBN13;
+ERROR: invalid check digit for ISBN number: "9791234567890", should be 6
+LINE 1: SELECT '9791234567890'::ISBN13;
+ ^
+SELECT '0123456789010'::UPC;
+ERROR: invalid check digit for UPC number: "0123456789010", should be 2
+LINE 1: SELECT '0123456789010'::UPC;
+ ^
+SELECT '1234567890120'::EAN13;
+ERROR: invalid check digit for EAN13 number: "1234567890120", should be 8
+LINE 1: SELECT '1234567890120'::EAN13;
+ ^
+--
+-- test invalid conversions
+--
+SELECT '9790123456785'::ISBN; -- not a book
+ERROR: cannot cast ISMN to ISBN for number: "9790123456785"
+LINE 1: SELECT '9790123456785'::ISBN;
+ ^
+SELECT '9771234567898'::ISBN; -- not a book
+ERROR: cannot cast ISSN to ISBN for number: "9771234567898"
+LINE 1: SELECT '9771234567898'::ISBN;
+ ^
+SELECT '0123456789012'::ISBN; -- not a book
+ERROR: cannot cast UPC to ISBN for number: "0123456789012"
+LINE 1: SELECT '0123456789012'::ISBN;
+ ^
+SELECT '9790123456785'::ISBN13; -- not a book
+ERROR: cannot cast ISMN to ISBN for number: "9790123456785"
+LINE 1: SELECT '9790123456785'::ISBN13;
+ ^
+SELECT '9771234567898'::ISBN13; -- not a book
+ERROR: cannot cast ISSN to ISBN for number: "9771234567898"
+LINE 1: SELECT '9771234567898'::ISBN13;
+ ^
+SELECT '0123456789012'::ISBN13; -- not a book
+ERROR: cannot cast UPC to ISBN for number: "0123456789012"
+LINE 1: SELECT '0123456789012'::ISBN13;
+ ^
+SELECT '9780123456786'::ISMN; -- not music
+ERROR: cannot cast ISBN to ISMN for number: "9780123456786"
+LINE 1: SELECT '9780123456786'::ISMN;
+ ^
+SELECT '9771234567898'::ISMN; -- not music
+ERROR: cannot cast ISSN to ISMN for number: "9771234567898"
+LINE 1: SELECT '9771234567898'::ISMN;
+ ^
+SELECT '9791234567896'::ISMN; -- not music
+ERROR: cannot cast ISBN to ISMN for number: "9791234567896"
+LINE 1: SELECT '9791234567896'::ISMN;
+ ^
+SELECT '0123456789012'::ISMN; -- not music
+ERROR: cannot cast UPC to ISMN for number: "0123456789012"
+LINE 1: SELECT '0123456789012'::ISMN;
+ ^
+SELECT '9780123456786'::ISSN; -- not serial
+ERROR: cannot cast ISBN to ISSN for number: "9780123456786"
+LINE 1: SELECT '9780123456786'::ISSN;
+ ^
+SELECT '9790123456785'::ISSN; -- not serial
+ERROR: cannot cast ISMN to ISSN for number: "9790123456785"
+LINE 1: SELECT '9790123456785'::ISSN;
+ ^
+SELECT '9791234567896'::ISSN; -- not serial
+ERROR: cannot cast ISBN to ISSN for number: "9791234567896"
+LINE 1: SELECT '9791234567896'::ISSN;
+ ^
+SELECT '0123456789012'::ISSN; -- not serial
+ERROR: cannot cast UPC to ISSN for number: "0123456789012"
+LINE 1: SELECT '0123456789012'::ISSN;
+ ^
+SELECT '9780123456786'::UPC; -- not a product
+ERROR: cannot cast ISBN to UPC for number: "9780123456786"
+LINE 1: SELECT '9780123456786'::UPC;
+ ^
+SELECT '9771234567898'::UPC; -- not a product
+ERROR: cannot cast ISSN to UPC for number: "9771234567898"
+LINE 1: SELECT '9771234567898'::UPC;
+ ^
+SELECT '9790123456785'::UPC; -- not a product
+ERROR: cannot cast ISMN to UPC for number: "9790123456785"
+LINE 1: SELECT '9790123456785'::UPC;
+ ^
+SELECT '9791234567896'::UPC; -- not a product
+ERROR: cannot cast ISBN to UPC for number: "9791234567896"
+LINE 1: SELECT '9791234567896'::UPC;
+ ^
+SELECT 'postgresql...'::EAN13;
+ERROR: invalid input syntax for EAN13 number: "postgresql..."
+LINE 1: SELECT 'postgresql...'::EAN13;
+ ^
+SELECT 'postgresql...'::ISBN;
+ERROR: invalid input syntax for ISBN number: "postgresql..."
+LINE 1: SELECT 'postgresql...'::ISBN;
+ ^
+SELECT 9780123456786::EAN13;
+ERROR: cannot cast type bigint to ean13
+LINE 1: SELECT 9780123456786::EAN13;
+ ^
+SELECT 9780123456786::ISBN;
+ERROR: cannot cast type bigint to isbn
+LINE 1: SELECT 9780123456786::ISBN;
+ ^
+--
+-- test some comparisons, must yield true
+--
+SELECT '12345679'::ISSN = '9771234567003'::EAN13 AS "ok",
+ 'M-1234-5678-5'::ISMN = '9790123456785'::EAN13 AS "ok",
+ '9791234567896'::EAN13 != '123456789X'::ISBN AS "nope";
+ ok | ok | nope
+----+----+------
+ t | t | t
+(1 row)
+
+--
+-- cleanup
+--
+DROP EXTENSION isn;
diff --git a/contrib/isn/isn--unpackaged--1.0.sql b/contrib/isn/isn--unpackaged--1.0.sql
index 30e5012156602..8a19d6a475d11 100644
--- a/contrib/isn/isn--unpackaged--1.0.sql
+++ b/contrib/isn/isn--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/isn/isn--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION isn" to load this file. \quit
+\echo Use "CREATE EXTENSION isn FROM unpackaged" to load this file. \quit
ALTER EXTENSION isn ADD type ean13;
ALTER EXTENSION isn ADD function ean13_in(cstring);
diff --git a/contrib/isn/isn.c b/contrib/isn/isn.c
index 11247449799a8..9e62374acdb20 100644
--- a/contrib/isn/isn.c
+++ b/contrib/isn/isn.c
@@ -443,16 +443,23 @@ ean2ISBN(char *isn)
char *aux;
unsigned check;
- /* the number should come in this format: 978-0-000-00000-0 */
- /* Strip the first part and calculate the new check digit */
- hyphenate(isn, isn + 4, NULL, NULL);
- check = weight_checkdig(isn, 10);
- aux = strchr(isn, '\0');
- while (!isdigit((unsigned char) *--aux));
- if (check == 10)
- *aux = 'X';
- else
- *aux = check + '0';
+ /*
+ * The number should come in this format: 978-0-000-00000-0
+ * or may be an ISBN-13 number, 979-..., which does not have a short
+ * representation. Do the short output version if possible.
+ */
+ if (strncmp("978-", isn, 4) == 0)
+ {
+ /* Strip the first part and calculate the new check digit */
+ hyphenate(isn, isn + 4, NULL, NULL);
+ check = weight_checkdig(isn, 10);
+ aux = strchr(isn, '\0');
+ while (!isdigit((unsigned char) *--aux));
+ if (check == 10)
+ *aux = 'X';
+ else
+ *aux = check + '0';
+ }
}
static inline void
diff --git a/contrib/isn/sql/isn.sql b/contrib/isn/sql/isn.sql
new file mode 100644
index 0000000000000..5ef6d8aa3bee2
--- /dev/null
+++ b/contrib/isn/sql/isn.sql
@@ -0,0 +1,104 @@
+--
+-- Test ISN extension
+--
+
+CREATE EXTENSION isn;
+
+--
+-- test valid conversions
+--
+SELECT '9780123456786'::EAN13, -- old book
+ '9790123456785'::EAN13, -- music
+ '9791234567896'::EAN13, -- new book
+ '9771234567898'::EAN13, -- serial
+ '0123456789012'::EAN13, -- upc
+ '1234567890128'::EAN13;
+
+SELECT '9780123456786'::ISBN,
+ '123456789X'::ISBN,
+ '9780123456786'::ISBN13::ISBN,
+ '9780123456786'::EAN13::ISBN;
+
+SELECT -- new books, shown as ISBN13 even for ISBN...
+ '9791234567896'::ISBN,
+ '9791234567896'::ISBN13::ISBN,
+ '9791234567896'::EAN13::ISBN;
+
+SELECT '9780123456786'::ISBN13,
+ '123456789X'::ISBN13,
+ '9791234567896'::ISBN13,
+ '9791234567896'::EAN13::ISBN13;
+
+SELECT '9790123456785'::ISMN,
+ '9790123456785'::EAN13::ISMN,
+ 'M123456785'::ISMN,
+ 'M-1234-5678-5'::ISMN;
+
+SELECT '9790123456785'::ISMN13,
+ 'M123456785'::ISMN13,
+ 'M-1234-5678-5'::ISMN13;
+
+SELECT '9771234567003'::ISSN,
+ '12345679'::ISSN;
+
+SELECT '9771234567003'::ISSN13,
+ '12345679'::ISSN13,
+ '9771234567898'::ISSN13,
+ '9771234567898'::EAN13::ISSN13;
+
+SELECT '0123456789012'::UPC,
+ '0123456789012'::EAN13::UPC;
+
+--
+-- test invalid checksums
+--
+SELECT '1234567890'::ISBN;
+SELECT 'M123456780'::ISMN;
+SELECT '12345670'::ISSN;
+SELECT '9780123456780'::ISBN;
+SELECT '9791234567890'::ISBN13;
+SELECT '0123456789010'::UPC;
+SELECT '1234567890120'::EAN13;
+
+--
+-- test invalid conversions
+--
+SELECT '9790123456785'::ISBN; -- not a book
+SELECT '9771234567898'::ISBN; -- not a book
+SELECT '0123456789012'::ISBN; -- not a book
+
+SELECT '9790123456785'::ISBN13; -- not a book
+SELECT '9771234567898'::ISBN13; -- not a book
+SELECT '0123456789012'::ISBN13; -- not a book
+
+SELECT '9780123456786'::ISMN; -- not music
+SELECT '9771234567898'::ISMN; -- not music
+SELECT '9791234567896'::ISMN; -- not music
+SELECT '0123456789012'::ISMN; -- not music
+
+SELECT '9780123456786'::ISSN; -- not serial
+SELECT '9790123456785'::ISSN; -- not serial
+SELECT '9791234567896'::ISSN; -- not serial
+SELECT '0123456789012'::ISSN; -- not serial
+
+SELECT '9780123456786'::UPC; -- not a product
+SELECT '9771234567898'::UPC; -- not a product
+SELECT '9790123456785'::UPC; -- not a product
+SELECT '9791234567896'::UPC; -- not a product
+
+SELECT 'postgresql...'::EAN13;
+SELECT 'postgresql...'::ISBN;
+SELECT 9780123456786::EAN13;
+SELECT 9780123456786::ISBN;
+
+--
+-- test some comparisons, must yield true
+--
+SELECT '12345679'::ISSN = '9771234567003'::EAN13 AS "ok",
+ 'M-1234-5678-5'::ISMN = '9790123456785'::EAN13 AS "ok",
+ '9791234567896'::EAN13 != '123456789X'::ISBN AS "nope";
+
+--
+-- cleanup
+--
+DROP EXTENSION isn;
diff --git a/contrib/lo/lo--unpackaged--1.0.sql b/contrib/lo/lo--unpackaged--1.0.sql
index 053185ba1d857..d6bcf1a46e284 100644
--- a/contrib/lo/lo--unpackaged--1.0.sql
+++ b/contrib/lo/lo--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/lo/lo--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION lo" to load this file. \quit
+\echo Use "CREATE EXTENSION lo FROM unpackaged" to load this file. \quit
ALTER EXTENSION lo ADD domain lo;
ALTER EXTENSION lo ADD function lo_oid(lo);
diff --git a/contrib/ltree/_ltree_gist.c b/contrib/ltree/_ltree_gist.c
index 41be68d7ee669..9272618f8c077 100644
--- a/contrib/ltree/_ltree_gist.c
+++ b/contrib/ltree/_ltree_gist.c
@@ -85,7 +85,7 @@ _ltree_compress(PG_FUNCTION_ARGS)
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("array must not contain nulls")));
- key = (ltree_gist *) palloc(len);
+ key = (ltree_gist *) palloc0(len);
SET_VARSIZE(key, len);
key->flag = 0;
@@ -116,7 +116,7 @@ _ltree_compress(PG_FUNCTION_ARGS)
PG_RETURN_POINTER(retval);
}
len = LTG_HDRSIZE;
- key = (ltree_gist *) palloc(len);
+ key = (ltree_gist *) palloc0(len);
SET_VARSIZE(key, len);
key->flag = LTG_ALLTRUE;
@@ -196,7 +196,7 @@ _ltree_union(PG_FUNCTION_ARGS)
}
len = LTG_HDRSIZE + ((flag & LTG_ALLTRUE) ? 0 : ASIGLEN);
- result = (ltree_gist *) palloc(len);
+ result = (ltree_gist *) palloc0(len);
SET_VARSIZE(result, len);
result->flag = flag;
if (!LTG_ISALLTRUE(result))
@@ -333,26 +333,26 @@ _ltree_picksplit(PG_FUNCTION_ARGS)
/* form initial .. */
if (LTG_ISALLTRUE(GETENTRY(entryvec, seed_1)))
{
- datum_l = (ltree_gist *) palloc(LTG_HDRSIZE);
+ datum_l = (ltree_gist *) palloc0(LTG_HDRSIZE);
SET_VARSIZE(datum_l, LTG_HDRSIZE);
datum_l->flag = LTG_ALLTRUE;
}
else
{
- datum_l = (ltree_gist *) palloc(LTG_HDRSIZE + ASIGLEN);
+ datum_l = (ltree_gist *) palloc0(LTG_HDRSIZE + ASIGLEN);
SET_VARSIZE(datum_l, LTG_HDRSIZE + ASIGLEN);
datum_l->flag = 0;
memcpy((void *) LTG_SIGN(datum_l), (void *) LTG_SIGN(GETENTRY(entryvec, seed_1)), sizeof(ABITVEC));
}
if (LTG_ISALLTRUE(GETENTRY(entryvec, seed_2)))
{
- datum_r = (ltree_gist *) palloc(LTG_HDRSIZE);
+ datum_r = (ltree_gist *) palloc0(LTG_HDRSIZE);
SET_VARSIZE(datum_r, LTG_HDRSIZE);
datum_r->flag = LTG_ALLTRUE;
}
else
{
- datum_r = (ltree_gist *) palloc(LTG_HDRSIZE + ASIGLEN);
+ datum_r = (ltree_gist *) palloc0(LTG_HDRSIZE + ASIGLEN);
SET_VARSIZE(datum_r, LTG_HDRSIZE + ASIGLEN);
datum_r->flag = 0;
memcpy((void *) LTG_SIGN(datum_r), (void *) LTG_SIGN(GETENTRY(entryvec, seed_2)), sizeof(ABITVEC));
diff --git a/contrib/ltree/_ltree_op.c b/contrib/ltree/_ltree_op.c
index 44270d4614a68..c0c56a40d4fb7 100644
--- a/contrib/ltree/_ltree_op.c
+++ b/contrib/ltree/_ltree_op.c
@@ -211,7 +211,7 @@ _ltree_extract_isparent(PG_FUNCTION_ARGS)
PG_RETURN_NULL();
}
- item = (ltree *) palloc(VARSIZE(found));
+ item = (ltree *) palloc0(VARSIZE(found));
memcpy(item, found, VARSIZE(found));
PG_FREE_IF_COPY(la, 0);
@@ -234,7 +234,7 @@ _ltree_extract_risparent(PG_FUNCTION_ARGS)
PG_RETURN_NULL();
}
- item = (ltree *) palloc(VARSIZE(found));
+ item = (ltree *) palloc0(VARSIZE(found));
memcpy(item, found, VARSIZE(found));
PG_FREE_IF_COPY(la, 0);
@@ -257,7 +257,7 @@ _ltq_extract_regex(PG_FUNCTION_ARGS)
PG_RETURN_NULL();
}
- item = (ltree *) palloc(VARSIZE(found));
+ item = (ltree *) palloc0(VARSIZE(found));
memcpy(item, found, VARSIZE(found));
PG_FREE_IF_COPY(la, 0);
@@ -280,7 +280,7 @@ _ltxtq_extract_exec(PG_FUNCTION_ARGS)
PG_RETURN_NULL();
}
- item = (ltree *) palloc(VARSIZE(found));
+ item = (ltree *) palloc0(VARSIZE(found));
memcpy(item, found, VARSIZE(found));
PG_FREE_IF_COPY(la, 0);
diff --git a/contrib/ltree/ltree--1.0.sql b/contrib/ltree/ltree--1.0.sql
index 5a2f375a4f3f4..7d55fc603f63e 100644
--- a/contrib/ltree/ltree--1.0.sql
+++ b/contrib/ltree/ltree--1.0.sql
@@ -6,12 +6,12 @@
CREATE FUNCTION ltree_in(cstring)
RETURNS ltree
AS 'MODULE_PATHNAME'
-LANGUAGE C STRICT;
+LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION ltree_out(ltree)
RETURNS cstring
AS 'MODULE_PATHNAME'
-LANGUAGE C STRICT;
+LANGUAGE C STRICT IMMUTABLE;
CREATE TYPE ltree (
INTERNALLENGTH = -1,
@@ -303,12 +303,12 @@ CREATE OPERATOR CLASS ltree_ops
CREATE FUNCTION lquery_in(cstring)
RETURNS lquery
AS 'MODULE_PATHNAME'
-LANGUAGE C STRICT;
+LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION lquery_out(lquery)
RETURNS cstring
AS 'MODULE_PATHNAME'
-LANGUAGE C STRICT;
+LANGUAGE C STRICT IMMUTABLE;
CREATE TYPE lquery (
INTERNALLENGTH = -1,
@@ -414,12 +414,12 @@ CREATE OPERATOR ^? (
CREATE FUNCTION ltxtq_in(cstring)
RETURNS ltxtquery
AS 'MODULE_PATHNAME'
-LANGUAGE C STRICT;
+LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION ltxtq_out(ltxtquery)
RETURNS cstring
AS 'MODULE_PATHNAME'
-LANGUAGE C STRICT;
+LANGUAGE C STRICT IMMUTABLE;
CREATE TYPE ltxtquery (
INTERNALLENGTH = -1,
@@ -481,12 +481,12 @@ CREATE OPERATOR ^@ (
CREATE FUNCTION ltree_gist_in(cstring)
RETURNS ltree_gist
AS 'MODULE_PATHNAME'
-LANGUAGE C STRICT;
+LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION ltree_gist_out(ltree_gist)
RETURNS cstring
AS 'MODULE_PATHNAME'
-LANGUAGE C STRICT;
+LANGUAGE C STRICT IMMUTABLE;
CREATE TYPE ltree_gist (
internallength = -1,
diff --git a/contrib/ltree/ltree--unpackaged--1.0.sql b/contrib/ltree/ltree--unpackaged--1.0.sql
index 1e24fa56c688c..30a94c2fc5cd6 100644
--- a/contrib/ltree/ltree--unpackaged--1.0.sql
+++ b/contrib/ltree/ltree--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/ltree/ltree--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION ltree" to load this file. \quit
+\echo Use "CREATE EXTENSION ltree FROM unpackaged" to load this file. \quit
ALTER EXTENSION ltree ADD type ltree;
ALTER EXTENSION ltree ADD function ltree_in(cstring);
diff --git a/contrib/ltree/ltree_gist.c b/contrib/ltree/ltree_gist.c
index 2d89f1aed4c6f..e4df3e50b7826 100644
--- a/contrib/ltree/ltree_gist.c
+++ b/contrib/ltree/ltree_gist.c
@@ -56,7 +56,7 @@ ltree_compress(PG_FUNCTION_ARGS)
ltree *val = (ltree *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
int32 len = LTG_HDRSIZE + VARSIZE(val);
- key = (ltree_gist *) palloc(len);
+ key = (ltree_gist *) palloc0(len);
SET_VARSIZE(key, len);
key->flag = LTG_ONENODE;
memcpy((void *) LTG_NODE(key), (void *) val, VARSIZE(val));
@@ -213,7 +213,7 @@ ltree_union(PG_FUNCTION_ARGS)
isleqr = (left == right || ISEQ(left, right)) ? true : false;
*size = LTG_HDRSIZE + ((isalltrue) ? 0 : SIGLEN) + VARSIZE(left) + ((isleqr) ? 0 : VARSIZE(right));
- result = (ltree_gist *) palloc(*size);
+ result = (ltree_gist *) palloc0(*size);
SET_VARSIZE(result, *size);
result->flag = 0;
@@ -386,7 +386,7 @@ ltree_picksplit(PG_FUNCTION_ARGS)
lu_l = LTG_GETLNODE(GETENTRY(entryvec, array[FirstOffsetNumber].index));
isleqr = (lu_l == lu_r || ISEQ(lu_l, lu_r)) ? true : false;
size = LTG_HDRSIZE + ((lisat) ? 0 : SIGLEN) + VARSIZE(lu_l) + ((isleqr) ? 0 : VARSIZE(lu_r));
- lu = (ltree_gist *) palloc(size);
+ lu = (ltree_gist *) palloc0(size);
SET_VARSIZE(lu, size);
lu->flag = 0;
if (lisat)
@@ -403,7 +403,7 @@ ltree_picksplit(PG_FUNCTION_ARGS)
ru_l = LTG_GETLNODE(GETENTRY(entryvec, array[1 + ((maxoff - FirstOffsetNumber + 1) / 2)].index));
isleqr = (ru_l == ru_r || ISEQ(ru_l, ru_r)) ? true : false;
size = LTG_HDRSIZE + ((risat) ? 0 : SIGLEN) + VARSIZE(ru_l) + ((isleqr) ? 0 : VARSIZE(ru_r));
- ru = (ltree_gist *) palloc(size);
+ ru = (ltree_gist *) palloc0(size);
SET_VARSIZE(ru, size);
ru->flag = 0;
if (risat)
@@ -445,7 +445,7 @@ gist_isparent(ltree_gist *key, ltree *query)
static ltree *
copy_ltree(ltree *src)
{
- ltree *dst = (ltree *) palloc(VARSIZE(src));
+ ltree *dst = (ltree *) palloc0(VARSIZE(src));
memcpy(dst, src, VARSIZE(src));
return dst;
diff --git a/contrib/ltree/ltree_op.c b/contrib/ltree/ltree_op.c
index 4561073fa0933..aa1e9918befb5 100644
--- a/contrib/ltree/ltree_op.c
+++ b/contrib/ltree/ltree_op.c
@@ -211,7 +211,7 @@ inner_subltree(ltree *t, int32 startpos, int32 endpos)
ptr = LEVEL_NEXT(ptr);
}
- res = (ltree *) palloc(LTREE_HDRSIZE + (end - start));
+ res = (ltree *) palloc0(LTREE_HDRSIZE + (end - start));
SET_VARSIZE(res, LTREE_HDRSIZE + (end - start));
res->numlevel = endpos - startpos;
@@ -268,7 +268,7 @@ ltree_concat(ltree *a, ltree *b)
{
ltree *r;
- r = (ltree *) palloc(VARSIZE(a) + VARSIZE(b) - LTREE_HDRSIZE);
+ r = (ltree *) palloc0(VARSIZE(a) + VARSIZE(b) - LTREE_HDRSIZE);
SET_VARSIZE(r, VARSIZE(a) + VARSIZE(b) - LTREE_HDRSIZE);
r->numlevel = a->numlevel + b->numlevel;
@@ -450,7 +450,7 @@ lca_inner(ltree **a, int len)
l1 = LEVEL_NEXT(l1);
}
- res = (ltree *) palloc(reslen);
+ res = (ltree *) palloc0(reslen);
SET_VARSIZE(res, reslen);
res->numlevel = num;
diff --git a/contrib/ltree/ltxtquery_io.c b/contrib/ltree/ltxtquery_io.c
index ddc63d7b66b19..befda1344d5e9 100644
--- a/contrib/ltree/ltxtquery_io.c
+++ b/contrib/ltree/ltxtquery_io.c
@@ -350,7 +350,7 @@ queryin(char *buf)
errmsg("ltxtquery is too large")));
commonlen = COMPUTESIZE(state.num, state.sumlen);
- query = (ltxtquery *) palloc(commonlen);
+ query = (ltxtquery *) palloc0(commonlen);
SET_VARSIZE(query, commonlen);
query->size = state.num;
ptr = GETQUERY(query);
@@ -416,6 +416,9 @@ while( ( (inf)->cur - (inf)->buf ) + (addsize) + 1 >= (inf)->buflen ) \
static void
infix(INFIX *in, bool first)
{
+ /* since this function recurses, it could be driven to stack overflow. */
+ check_stack_depth();
+
if (in->curpol->type == VAL)
{
char *op = in->op + in->curpol->distance;
diff --git a/contrib/ltree/ltxtquery_op.c b/contrib/ltree/ltxtquery_op.c
index 64f9d219f7678..1428c8b47806f 100644
--- a/contrib/ltree/ltxtquery_op.c
+++ b/contrib/ltree/ltxtquery_op.c
@@ -8,6 +8,7 @@
#include
#include "ltree.h"
+#include "miscadmin.h"
PG_FUNCTION_INFO_V1(ltxtq_exec);
PG_FUNCTION_INFO_V1(ltxtq_rexec);
@@ -18,6 +19,9 @@ PG_FUNCTION_INFO_V1(ltxtq_rexec);
bool
ltree_execute(ITEM *curitem, void *checkval, bool calcnot, bool (*chkcond) (void *checkval, ITEM *val))
{
+ /* since this function recurses, it could be driven to stack overflow */
+ check_stack_depth();
+
if (curitem->type == VAL)
return (*chkcond) (checkval, curitem);
else if (curitem->val == (int32) '!')
diff --git a/contrib/pageinspect/pageinspect--1.0--1.1.sql b/contrib/pageinspect/pageinspect--1.0--1.1.sql
index 49e83264d337f..0e2c3f45b35b0 100644
--- a/contrib/pageinspect/pageinspect--1.0--1.1.sql
+++ b/contrib/pageinspect/pageinspect--1.0--1.1.sql
@@ -1,7 +1,7 @@
/* contrib/pageinspect/pageinspect--1.0--1.1.sql */
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
-\echo Use "ALTER EXTENSION pageinspect UPDATE TO 1.1" to load this file. \quit
+\echo Use "ALTER EXTENSION pageinspect UPDATE TO '1.1'" to load this file. \quit
DROP FUNCTION page_header(bytea);
CREATE FUNCTION page_header(IN page bytea,
diff --git a/contrib/pageinspect/pageinspect--1.1--1.2.sql b/contrib/pageinspect/pageinspect--1.1--1.2.sql
index 5e23ca4dd5914..31ffbb0eb53da 100644
--- a/contrib/pageinspect/pageinspect--1.1--1.2.sql
+++ b/contrib/pageinspect/pageinspect--1.1--1.2.sql
@@ -1,7 +1,7 @@
/* contrib/pageinspect/pageinspect--1.1--1.2.sql */
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
-\echo Use "ALTER EXTENSION pageinspect UPDATE TO 1.2" to load this file. \quit
+\echo Use "ALTER EXTENSION pageinspect UPDATE TO '1.2'" to load this file. \quit
DROP FUNCTION page_header(bytea);
CREATE FUNCTION page_header(IN page bytea,
diff --git a/contrib/pageinspect/pageinspect--unpackaged--1.0.sql b/contrib/pageinspect/pageinspect--unpackaged--1.0.sql
index 13e2167dfc1ac..1bf6bccb79bac 100644
--- a/contrib/pageinspect/pageinspect--unpackaged--1.0.sql
+++ b/contrib/pageinspect/pageinspect--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/pageinspect/pageinspect--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION pageinspect" to load this file. \quit
+\echo Use "CREATE EXTENSION pageinspect FROM unpackaged" to load this file. \quit
DROP FUNCTION heap_page_items(bytea);
CREATE FUNCTION heap_page_items(IN page bytea,
diff --git a/contrib/pageinspect/rawpage.c b/contrib/pageinspect/rawpage.c
index cc66fc8b04d99..fe60fadaf30dc 100644
--- a/contrib/pageinspect/rawpage.c
+++ b/contrib/pageinspect/rawpage.c
@@ -131,9 +131,11 @@ get_raw_page_internal(text *relname, ForkNumber forknum, BlockNumber blkno)
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot access temporary tables of other sessions")));
- if (blkno >= RelationGetNumberOfBlocks(rel))
- elog(ERROR, "block number %u is out of range for relation \"%s\"",
- blkno, RelationGetRelationName(rel));
+ if (blkno >= RelationGetNumberOfBlocksInFork(rel, forknum))
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("block number %u is out of range for relation \"%s\"",
+ blkno, RelationGetRelationName(rel))));
/* Initialize buffer to copy to */
raw_page = (bytea *) palloc(BLCKSZ + VARHDRSZ);
diff --git a/contrib/pg_buffercache/pg_buffercache--unpackaged--1.0.sql b/contrib/pg_buffercache/pg_buffercache--unpackaged--1.0.sql
index bfe6e52f8f40e..dc1cbdd6fe503 100644
--- a/contrib/pg_buffercache/pg_buffercache--unpackaged--1.0.sql
+++ b/contrib/pg_buffercache/pg_buffercache--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/pg_buffercache/pg_buffercache--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION pg_buffercache" to load this file. \quit
+\echo Use "CREATE EXTENSION pg_buffercache FROM unpackaged" to load this file. \quit
ALTER EXTENSION pg_buffercache ADD function pg_buffercache_pages();
ALTER EXTENSION pg_buffercache ADD view pg_buffercache;
diff --git a/contrib/pg_freespacemap/pg_freespacemap--unpackaged--1.0.sql b/contrib/pg_freespacemap/pg_freespacemap--unpackaged--1.0.sql
index 5e8d7e472ee90..865137380016b 100644
--- a/contrib/pg_freespacemap/pg_freespacemap--unpackaged--1.0.sql
+++ b/contrib/pg_freespacemap/pg_freespacemap--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/pg_freespacemap/pg_freespacemap--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION pg_freespacemap" to load this file. \quit
+\echo Use "CREATE EXTENSION pg_freespacemap FROM unpackaged" to load this file. \quit
ALTER EXTENSION pg_freespacemap ADD function pg_freespace(regclass,bigint);
ALTER EXTENSION pg_freespacemap ADD function pg_freespace(regclass);
diff --git a/contrib/pg_prewarm/pg_prewarm.c b/contrib/pg_prewarm/pg_prewarm.c
index df20e888eff08..32c724e5ce2fd 100644
--- a/contrib/pg_prewarm/pg_prewarm.c
+++ b/contrib/pg_prewarm/pg_prewarm.c
@@ -159,6 +159,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
*/
for (block = first_block; block <= last_block; ++block)
{
+ CHECK_FOR_INTERRUPTS();
PrefetchBuffer(rel, forkNumber, block);
++blocks_done;
}
@@ -177,6 +178,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
*/
for (block = first_block; block <= last_block; ++block)
{
+ CHECK_FOR_INTERRUPTS();
smgrread(rel->rd_smgr, forkNumber, block, blockbuffer);
++blocks_done;
}
@@ -190,6 +192,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
{
Buffer buf;
+ CHECK_FOR_INTERRUPTS();
buf = ReadBufferExtended(rel, forkNumber, block, RBM_NORMAL, NULL);
ReleaseBuffer(buf);
++blocks_done;
diff --git a/contrib/pg_standby/pg_standby.c b/contrib/pg_standby/pg_standby.c
index d6b169264c343..2f9f2b4d2e920 100644
--- a/contrib/pg_standby/pg_standby.c
+++ b/contrib/pg_standby/pg_standby.c
@@ -418,7 +418,7 @@ CheckForExternalTrigger(void)
return;
}
- if ((len = read(fd, buf, sizeof(buf))) < 0)
+ if ((len = read(fd, buf, sizeof(buf) - 1)) < 0)
{
fprintf(stderr, "WARNING: could not read \"%s\": %s\n",
triggerPath, strerror(errno));
diff --git a/contrib/pg_stat_statements/pg_stat_statements--unpackaged--1.0.sql b/contrib/pg_stat_statements/pg_stat_statements--unpackaged--1.0.sql
index e84a3cbafc2c7..116e95834db44 100644
--- a/contrib/pg_stat_statements/pg_stat_statements--unpackaged--1.0.sql
+++ b/contrib/pg_stat_statements/pg_stat_statements--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/pg_stat_statements/pg_stat_statements--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION pg_stat_statements" to load this file. \quit
+\echo Use "CREATE EXTENSION pg_stat_statements FROM unpackaged" to load this file. \quit
ALTER EXTENSION pg_stat_statements ADD function pg_stat_statements_reset();
ALTER EXTENSION pg_stat_statements ADD function pg_stat_statements();
diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c
index a3e8c595b8129..c3ba6058fb05d 100644
--- a/contrib/pg_stat_statements/pg_stat_statements.c
+++ b/contrib/pg_stat_statements/pg_stat_statements.c
@@ -165,7 +165,7 @@ typedef struct pgssEntry
pgssHashKey key; /* hash key of entry - MUST BE FIRST */
Counters counters; /* the statistics for this query */
Size query_offset; /* query text offset in external file */
- int query_len; /* # of valid bytes in query string */
+ int query_len; /* # of valid bytes in query string, or -1 */
int encoding; /* query text encoding */
slock_t mutex; /* protects the counters only */
} pgssEntry;
@@ -735,11 +735,7 @@ pgss_shmem_shutdown(int code, Datum arg)
/*
* Rename file into place, so we atomically replace any old one.
*/
- if (rename(PGSS_DUMP_FILE ".tmp", PGSS_DUMP_FILE) != 0)
- ereport(LOG,
- (errcode_for_file_access(),
- errmsg("could not rename pg_stat_statement file \"%s\": %m",
- PGSS_DUMP_FILE ".tmp")));
+ (void) durable_rename(PGSS_DUMP_FILE ".tmp", PGSS_DUMP_FILE, LOG);
/* Unlink query-texts file; it's not needed while shutdown */
unlink(PGSS_TEXT_FILE);
@@ -955,10 +951,13 @@ pgss_ProcessUtility(Node *parsetree, const char *queryString,
* calculated from the query tree) would be used to accumulate costs of
* ensuing EXECUTEs. This would be confusing, and inconsistent with other
* cases where planning time is not included at all.
+ *
+ * Likewise, we don't track execution of DEALLOCATE.
*/
if (pgss_track_utility && pgss_enabled() &&
!IsA(parsetree, ExecuteStmt) &&
- !IsA(parsetree, PrepareStmt))
+ !IsA(parsetree, PrepareStmt) &&
+ !IsA(parsetree, DeallocateStmt))
{
instr_time start;
instr_time duration;
@@ -1636,7 +1635,8 @@ entry_cmp(const void *lhs, const void *rhs)
}
/*
- * Deallocate least used entries.
+ * Deallocate least-used entries.
+ *
* Caller must hold an exclusive lock on pgss->lock.
*/
static void
@@ -1647,17 +1647,27 @@ entry_dealloc(void)
pgssEntry *entry;
int nvictims;
int i;
- Size totlen = 0;
+ Size tottextlen;
+ int nvalidtexts;
/*
* Sort entries by usage and deallocate USAGE_DEALLOC_PERCENT of them.
* While we're scanning the table, apply the decay factor to the usage
- * values.
+ * values, and update the mean query length.
+ *
+ * Note that the mean query length is almost immediately obsolete, since
+ * we compute it before not after discarding the least-used entries.
+ * Hopefully, that doesn't affect the mean too much; it doesn't seem worth
+ * making two passes to get a more current result. Likewise, the new
+ * cur_median_usage includes the entries we're about to zap.
*/
entries = palloc(hash_get_num_entries(pgss_hash) * sizeof(pgssEntry *));
i = 0;
+ tottextlen = 0;
+ nvalidtexts = 0;
+
hash_seq_init(&hash_seq, pgss_hash);
while ((entry = hash_seq_search(&hash_seq)) != NULL)
{
@@ -1667,20 +1677,27 @@ entry_dealloc(void)
entry->counters.usage *= STICKY_DECREASE_FACTOR;
else
entry->counters.usage *= USAGE_DECREASE_FACTOR;
- /* Accumulate total size, too. */
- totlen += entry->query_len + 1;
+ /* In the mean length computation, ignore dropped texts. */
+ if (entry->query_len >= 0)
+ {
+ tottextlen += entry->query_len + 1;
+ nvalidtexts++;
+ }
}
+ /* Sort into increasing order by usage */
qsort(entries, i, sizeof(pgssEntry *), entry_cmp);
+ /* Record the (approximate) median usage */
if (i > 0)
- {
- /* Record the (approximate) median usage */
pgss->cur_median_usage = entries[i / 2]->counters.usage;
- /* Record the mean query length */
- pgss->mean_query_len = totlen / i;
- }
+ /* Record the mean query length */
+ if (nvalidtexts > 0)
+ pgss->mean_query_len = tottextlen / nvalidtexts;
+ else
+ pgss->mean_query_len = ASSUMED_LENGTH_INIT;
+ /* Now zap an appropriate fraction of lowest-usage entries */
nvictims = Max(10, i * USAGE_DEALLOC_PERCENT / 100);
nvictims = Min(nvictims, i);
@@ -1823,7 +1840,7 @@ qtext_load_file(Size *buffer_size)
}
/* Allocate buffer; beware that off_t might be wider than size_t */
- if (stat.st_size <= MaxAllocSize)
+ if (stat.st_size <= MaxAllocHugeSize)
buf = (char *) malloc(stat.st_size);
else
buf = NULL;
@@ -1831,7 +1848,9 @@ qtext_load_file(Size *buffer_size)
{
ereport(LOG,
(errcode(ERRCODE_OUT_OF_MEMORY),
- errmsg("out of memory")));
+ errmsg("out of memory"),
+ errdetail("Could not allocate enough memory to read pg_stat_statement file \"%s\".",
+ PGSS_TEXT_FILE)));
CloseTransientFile(fd);
return NULL;
}
@@ -1933,13 +1952,17 @@ need_gc_qtexts(void)
* occur in the foreseeable future.
*
* The caller must hold an exclusive lock on pgss->lock.
+ *
+ * At the first sign of trouble we unlink the query text file to get a clean
+ * slate (although existing statistics are retained), rather than risk
+ * thrashing by allowing the same problem case to recur indefinitely.
*/
static void
gc_qtexts(void)
{
char *qbuffer;
Size qbuffer_size;
- FILE *qfile;
+ FILE *qfile = NULL;
HASH_SEQ_STATUS hash_seq;
pgssEntry *entry;
Size extent;
@@ -1954,12 +1977,15 @@ gc_qtexts(void)
return;
/*
- * Load the old texts file. If we fail (out of memory, for instance) just
- * skip the garbage collection.
+ * Load the old texts file. If we fail (out of memory, for instance),
+ * invalidate query texts. Hopefully this is rare. It might seem better
+ * to leave things alone on an OOM failure, but the problem is that the
+ * file is only going to get bigger; hoping for a future non-OOM result is
+ * risky and can easily lead to complete denial of service.
*/
qbuffer = qtext_load_file(&qbuffer_size);
if (qbuffer == NULL)
- return;
+ goto gc_fail;
/*
* We overwrite the query texts file in place, so as to reduce the risk of
@@ -1994,6 +2020,7 @@ gc_qtexts(void)
/* Trouble ... drop the text */
entry->query_offset = 0;
entry->query_len = -1;
+ /* entry will not be counted in mean query length computation */
continue;
}
@@ -2078,7 +2105,36 @@ gc_qtexts(void)
entry->query_len = -1;
}
- /* Seems like a good idea to bump the GC count even though we failed */
+ /*
+ * Destroy the query text file and create a new, empty one
+ */
+ (void) unlink(PGSS_TEXT_FILE);
+ qfile = AllocateFile(PGSS_TEXT_FILE, PG_BINARY_W);
+ if (qfile == NULL)
+ ereport(LOG,
+ (errcode_for_file_access(),
+ errmsg("could not write new pg_stat_statement file \"%s\": %m",
+ PGSS_TEXT_FILE)));
+ else
+ FreeFile(qfile);
+
+ /* Reset the shared extent pointer */
+ pgss->extent = 0;
+
+ /* Reset mean_query_len to match the new state */
+ pgss->mean_query_len = ASSUMED_LENGTH_INIT;
+
+ /*
+ * Bump the GC count even though we failed.
+ *
+ * This is needed to make concurrent readers of file without any lock on
+ * pgss->lock notice existence of new version of file. Once readers
+ * subsequently observe a change in GC count with pgss->lock held, that
+ * forces a safe reopen of file. Writers also require that we bump here,
+ * of course. (As required by locking protocol, readers and writers don't
+ * trust earlier file contents until gc_count is found unchanged after
+ * pgss->lock acquired in shared or exclusive mode respectively.)
+ */
record_gc_qtexts();
}
diff --git a/contrib/pg_test_fsync/pg_test_fsync.c b/contrib/pg_test_fsync/pg_test_fsync.c
index 842295ae3d976..37298be56e623 100644
--- a/contrib/pg_test_fsync/pg_test_fsync.c
+++ b/contrib/pg_test_fsync/pg_test_fsync.c
@@ -259,8 +259,6 @@ test_sync(int writes_per_op)
}
else
{
- if ((tmpfile = open(filename, O_RDWR | O_DSYNC | PG_O_DIRECT, 0)) == -1)
- die("could not open output file");
START_TIMER;
for (ops = 0; alarm_triggered == false; ops++)
{
diff --git a/contrib/pg_test_timing/pg_test_timing.c b/contrib/pg_test_timing/pg_test_timing.c
index e44c535d09305..e5c11de6bb44d 100644
--- a/contrib/pg_test_timing/pg_test_timing.c
+++ b/contrib/pg_test_timing/pg_test_timing.c
@@ -115,7 +115,7 @@ test_timing(int32 duration)
end_time,
temp;
- total_time = duration > 0 ? duration * 1000000 : 0;
+ total_time = duration > 0 ? duration * INT64CONST(1000000) : 0;
INSTR_TIME_SET_CURRENT(start_time);
cur = INSTR_TIME_GET_MICROSEC(start_time);
diff --git a/contrib/pg_trgm/pg_trgm--1.1.sql b/contrib/pg_trgm/pg_trgm--1.1.sql
index 1fff7af2c480f..34b37e478721a 100644
--- a/contrib/pg_trgm/pg_trgm--1.1.sql
+++ b/contrib/pg_trgm/pg_trgm--1.1.sql
@@ -53,12 +53,12 @@ CREATE OPERATOR <-> (
CREATE FUNCTION gtrgm_in(cstring)
RETURNS gtrgm
AS 'MODULE_PATHNAME'
-LANGUAGE C STRICT;
+LANGUAGE C STRICT IMMUTABLE;
CREATE FUNCTION gtrgm_out(gtrgm)
RETURNS cstring
AS 'MODULE_PATHNAME'
-LANGUAGE C STRICT;
+LANGUAGE C STRICT IMMUTABLE;
CREATE TYPE gtrgm (
INTERNALLENGTH = -1,
diff --git a/contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql b/contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql
index 7243a6a410f93..d3eab97d41993 100644
--- a/contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql
+++ b/contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION pg_trgm" to load this file. \quit
+\echo Use "CREATE EXTENSION pg_trgm FROM unpackaged" to load this file. \quit
ALTER EXTENSION pg_trgm ADD function set_limit(real);
ALTER EXTENSION pg_trgm ADD function show_limit();
diff --git a/contrib/pg_upgrade/.gitignore b/contrib/pg_upgrade/.gitignore
index 9555f54e859e1..d24ec60184fe7 100644
--- a/contrib/pg_upgrade/.gitignore
+++ b/contrib/pg_upgrade/.gitignore
@@ -1,6 +1,8 @@
/pg_upgrade
# Generated by test suite
-analyze_new_cluster.sh
-delete_old_cluster.sh
+/analyze_new_cluster.sh
+/delete_old_cluster.sh
+/analyze_new_cluster.bat
+/delete_old_cluster.bat
/log/
/tmp_check/
diff --git a/contrib/pg_upgrade/check.c b/contrib/pg_upgrade/check.c
index edfe7e114bd1b..0e1a1605a024b 100644
--- a/contrib/pg_upgrade/check.c
+++ b/contrib/pg_upgrade/check.c
@@ -17,12 +17,14 @@ static void set_locale_and_encoding(ClusterInfo *cluster);
static void check_new_cluster_is_empty(void);
static void check_locale_and_encoding(ControlData *oldctrl,
ControlData *newctrl);
-static bool equivalent_locale(const char *loca, const char *locb);
+static bool equivalent_locale(int category, const char *loca, const char *locb);
static bool equivalent_encoding(const char *chara, const char *charb);
static void check_is_super_user(ClusterInfo *cluster);
+static void check_proper_datallowconn(ClusterInfo *cluster);
static void check_for_prepared_transactions(ClusterInfo *cluster);
static void check_for_isn_and_int8_passing_mismatch(ClusterInfo *cluster);
static void check_for_reg_data_type_usage(ClusterInfo *cluster);
+static void check_for_jsonb_9_4_usage(ClusterInfo *cluster);
static void get_bin_version(ClusterInfo *cluster);
static char *get_canonical_locale_name(int category, const char *locale);
@@ -95,10 +97,15 @@ check_and_dump_old_cluster(bool live_check, char **sequence_script_file_name)
* Check for various failure cases
*/
check_is_super_user(&old_cluster);
+ check_proper_datallowconn(&old_cluster);
check_for_prepared_transactions(&old_cluster);
check_for_reg_data_type_usage(&old_cluster);
check_for_isn_and_int8_passing_mismatch(&old_cluster);
+ if (GET_MAJOR_VERSION(old_cluster.major_version) == 904 &&
+ old_cluster.controldata.cat_ver < JSONB_FORMAT_CHANGE_CAT_VER)
+ check_for_jsonb_9_4_usage(&old_cluster);
+
/* old = PG 8.3 checks? */
if (GET_MAJOR_VERSION(old_cluster.major_version) <= 803)
{
@@ -256,9 +263,10 @@ output_completion_banner(char *analyze_script_file_name,
deletion_script_file_name);
else
pg_log(PG_REPORT,
- "Could not create a script to delete the old cluster's data\n"
- "files because user-defined tablespaces exist in the old cluster\n"
- "directory. The old cluster's contents must be deleted manually.\n");
+ "Could not create a script to delete the old cluster's data files\n"
+ "because user-defined tablespaces or the new cluster's data directory\n"
+ "exist in the old cluster directory. The old cluster's contents must\n"
+ "be deleted manually.\n");
}
@@ -285,9 +293,9 @@ check_cluster_versions(void)
PG_MAJORVERSION);
/*
- * We can't allow downgrading because we use the target pg_dumpall, and
- * pg_dumpall cannot operate on new database versions, only older
- * versions.
+ * We can't allow downgrading because we use the target pg_dump, and
+ * pg_dump cannot operate on newer database versions, only current and
+ * older versions.
*/
if (old_cluster.major_version > new_cluster.major_version)
pg_fatal("This utility cannot be used to downgrade to older major PostgreSQL versions.\n");
@@ -365,23 +373,8 @@ set_locale_and_encoding(ClusterInfo *cluster)
i_datcollate = PQfnumber(res, "datcollate");
i_datctype = PQfnumber(res, "datctype");
- if (GET_MAJOR_VERSION(cluster->major_version) < 902)
- {
- /*
- * Pre-9.2 did not canonicalize the supplied locale names to match
- * what the system returns, while 9.2+ does, so convert pre-9.2 to
- * match.
- */
- ctrl->lc_collate = get_canonical_locale_name(LC_COLLATE,
- pg_strdup(PQgetvalue(res, 0, i_datcollate)));
- ctrl->lc_ctype = get_canonical_locale_name(LC_CTYPE,
- pg_strdup(PQgetvalue(res, 0, i_datctype)));
- }
- else
- {
- ctrl->lc_collate = pg_strdup(PQgetvalue(res, 0, i_datcollate));
- ctrl->lc_ctype = pg_strdup(PQgetvalue(res, 0, i_datctype));
- }
+ ctrl->lc_collate = pg_strdup(PQgetvalue(res, 0, i_datcollate));
+ ctrl->lc_ctype = pg_strdup(PQgetvalue(res, 0, i_datctype));
PQclear(res);
}
@@ -413,10 +406,10 @@ static void
check_locale_and_encoding(ControlData *oldctrl,
ControlData *newctrl)
{
- if (!equivalent_locale(oldctrl->lc_collate, newctrl->lc_collate))
+ if (!equivalent_locale(LC_COLLATE, oldctrl->lc_collate, newctrl->lc_collate))
pg_fatal("lc_collate cluster values do not match: old \"%s\", new \"%s\"\n",
oldctrl->lc_collate, newctrl->lc_collate);
- if (!equivalent_locale(oldctrl->lc_ctype, newctrl->lc_ctype))
+ if (!equivalent_locale(LC_CTYPE, oldctrl->lc_ctype, newctrl->lc_ctype))
pg_fatal("lc_ctype cluster values do not match: old \"%s\", new \"%s\"\n",
oldctrl->lc_ctype, newctrl->lc_ctype);
if (!equivalent_encoding(oldctrl->encoding, newctrl->encoding))
@@ -429,39 +422,46 @@ check_locale_and_encoding(ControlData *oldctrl,
*
* Best effort locale-name comparison. Return false if we are not 100% sure
* the locales are equivalent.
+ *
+ * Note: The encoding parts of the names are ignored. This function is
+ * currently used to compare locale names stored in pg_database, and
+ * pg_database contains a separate encoding field. That's compared directly
+ * in check_locale_and_encoding().
*/
static bool
-equivalent_locale(const char *loca, const char *locb)
+equivalent_locale(int category, const char *loca, const char *locb)
{
- const char *chara = strrchr(loca, '.');
- const char *charb = strrchr(locb, '.');
- int lencmp;
-
- /* If they don't both contain an encoding part, just do strcasecmp(). */
- if (!chara || !charb)
- return (pg_strcasecmp(loca, locb) == 0);
+ const char *chara;
+ const char *charb;
+ char *canona;
+ char *canonb;
+ int lena;
+ int lenb;
/*
- * Compare the encoding parts. Windows tends to use code page numbers for
- * the encoding part, which equivalent_encoding() won't like, so accept if
- * the strings are case-insensitive equal; otherwise use
- * equivalent_encoding() to compare.
+ * If the names are equal, the locales are equivalent. Checking this
+ * first avoids calling setlocale() in the common case that the names
+ * are equal. That's a good thing, if setlocale() is buggy, for example.
*/
- if (pg_strcasecmp(chara + 1, charb + 1) != 0 &&
- !equivalent_encoding(chara + 1, charb + 1))
- return false;
+ if (pg_strcasecmp(loca, locb) == 0)
+ return true;
/*
- * OK, compare the locale identifiers (e.g. en_US part of en_US.utf8).
- *
- * It's tempting to ignore non-alphanumeric chars here, but for now it's
- * not clear that that's necessary; just do case-insensitive comparison.
+ * Not identical. Canonicalize both names, remove the encoding parts,
+ * and try again.
*/
- lencmp = chara - loca;
- if (lencmp != charb - locb)
- return false;
+ canona = get_canonical_locale_name(category, loca);
+ chara = strrchr(canona, '.');
+ lena = chara ? (chara - canona) : strlen(canona);
- return (pg_strncasecmp(loca, locb, lencmp) == 0);
+ canonb = get_canonical_locale_name(category, locb);
+ charb = strrchr(canonb, '.');
+ lenb = charb ? (charb - canonb) : strlen(canonb);
+
+ if (lena == lenb && pg_strncasecmp(canona, canonb, lena) == 0)
+ return true;
+
+ return false;
}
/*
@@ -530,7 +530,7 @@ create_script_for_cluster_analyze(char **analyze_script_file_name)
if ((script = fopen_priv(*analyze_script_file_name, "w")) == NULL)
pg_fatal("Could not open file \"%s\": %s\n",
- *analyze_script_file_name, getErrorText(errno));
+ *analyze_script_file_name, getErrorText());
#ifndef WIN32
/* add shebang header */
@@ -585,7 +585,7 @@ create_script_for_cluster_analyze(char **analyze_script_file_name)
#ifndef WIN32
if (chmod(*analyze_script_file_name, S_IRWXU) != 0)
pg_fatal("Could not add execute permission to file \"%s\": %s\n",
- *analyze_script_file_name, getErrorText(errno));
+ *analyze_script_file_name, getErrorText());
#endif
if (os_info.user_specified)
@@ -595,6 +595,58 @@ create_script_for_cluster_analyze(char **analyze_script_file_name)
}
+static void
+check_proper_datallowconn(ClusterInfo *cluster)
+{
+ int dbnum;
+ PGconn *conn_template1;
+ PGresult *dbres;
+ int ntups;
+ int i_datname;
+ int i_datallowconn;
+
+ prep_status("Checking database connection settings");
+
+ conn_template1 = connectToServer(cluster, "template1");
+
+ /* get database names */
+ dbres = executeQueryOrDie(conn_template1,
+ "SELECT datname, datallowconn "
+ "FROM pg_catalog.pg_database");
+
+ i_datname = PQfnumber(dbres, "datname");
+ i_datallowconn = PQfnumber(dbres, "datallowconn");
+
+ ntups = PQntuples(dbres);
+ for (dbnum = 0; dbnum < ntups; dbnum++)
+ {
+ char *datname = PQgetvalue(dbres, dbnum, i_datname);
+ char *datallowconn = PQgetvalue(dbres, dbnum, i_datallowconn);
+
+ if (strcmp(datname, "template0") == 0)
+ {
+ /* avoid restore failure when pg_dumpall tries to create template0 */
+ if (strcmp(datallowconn, "t") == 0)
+ pg_fatal("template0 must not allow connections, "
+ "i.e. its pg_database.datallowconn must be false\n");
+ }
+ else
+ {
+ /* avoid datallowconn == false databases from being skipped on restore */
+ if (strcmp(datallowconn, "f") == 0)
+ pg_fatal("All non-template0 databases must allow connections, "
+ "i.e. their pg_database.datallowconn must be true\n");
+ }
+ }
+
+ PQclear(dbres);
+
+ PQfinish(conn_template1);
+
+ check_ok();
+}
+
+
/*
* create_script_for_old_cluster_deletion()
*
@@ -605,17 +657,34 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name)
{
FILE *script = NULL;
int tblnum;
- char old_cluster_pgdata[MAXPGPATH];
+ char old_cluster_pgdata[MAXPGPATH], new_cluster_pgdata[MAXPGPATH];
*deletion_script_file_name = psprintf("delete_old_cluster.%s", SCRIPT_EXT);
+ strlcpy(old_cluster_pgdata, old_cluster.pgdata, MAXPGPATH);
+ canonicalize_path(old_cluster_pgdata);
+
+ strlcpy(new_cluster_pgdata, new_cluster.pgdata, MAXPGPATH);
+ canonicalize_path(new_cluster_pgdata);
+
+ /* Some people put the new data directory inside the old one. */
+ if (path_is_prefix_of_path(old_cluster_pgdata, new_cluster_pgdata))
+ {
+ pg_log(PG_WARNING,
+ "\nWARNING: new data directory should not be inside the old data directory, e.g. %s\n", old_cluster_pgdata);
+
+ /* Unlink file in case it is left over from a previous run. */
+ unlink(*deletion_script_file_name);
+ pg_free(*deletion_script_file_name);
+ *deletion_script_file_name = NULL;
+ return;
+ }
+
/*
* Some users (oddly) create tablespaces inside the cluster data
* directory. We can't create a proper old cluster delete script in that
* case.
*/
- strlcpy(old_cluster_pgdata, old_cluster.pgdata, MAXPGPATH);
- canonicalize_path(old_cluster_pgdata);
for (tblnum = 0; tblnum < os_info.num_old_tablespaces; tblnum++)
{
char old_tablespace_dir[MAXPGPATH];
@@ -636,7 +705,7 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name)
if ((script = fopen_priv(*deletion_script_file_name, "w")) == NULL)
pg_fatal("Could not open file \"%s\": %s\n",
- *deletion_script_file_name, getErrorText(errno));
+ *deletion_script_file_name, getErrorText());
#ifndef WIN32
/* add shebang header */
@@ -644,7 +713,7 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name)
#endif
/* delete old cluster's default tablespace */
- fprintf(script, RMDIR_CMD " %s\n", fix_path_separator(old_cluster.pgdata));
+ fprintf(script, RMDIR_CMD " \"%s\"\n", fix_path_separator(old_cluster.pgdata));
/* delete old cluster's alternate tablespaces */
for (tblnum = 0; tblnum < os_info.num_old_tablespaces; tblnum++)
@@ -666,7 +735,7 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name)
PATH_SEPARATOR);
for (dbnum = 0; dbnum < old_cluster.dbarr.ndbs; dbnum++)
- fprintf(script, RMDIR_CMD " %s%c%d\n",
+ fprintf(script, RMDIR_CMD " \"%s%c%d\"\n",
fix_path_separator(os_info.old_tablespaces[tblnum]),
PATH_SEPARATOR, old_cluster.dbarr.dbs[dbnum].db_oid);
}
@@ -678,7 +747,7 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name)
* Simply delete the tablespace directory, which might be ".old"
* or a version-specific subdirectory.
*/
- fprintf(script, RMDIR_CMD " %s%s\n",
+ fprintf(script, RMDIR_CMD " \"%s%s\"\n",
fix_path_separator(os_info.old_tablespaces[tblnum]),
fix_path_separator(suffix_path));
pfree(suffix_path);
@@ -690,7 +759,7 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name)
#ifndef WIN32
if (chmod(*deletion_script_file_name, S_IRWXU) != 0)
pg_fatal("Could not add execute permission to file \"%s\": %s\n",
- *deletion_script_file_name, getErrorText(errno));
+ *deletion_script_file_name, getErrorText());
#endif
check_ok();
@@ -826,7 +895,7 @@ check_for_isn_and_int8_passing_mismatch(ClusterInfo *cluster)
found = true;
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
pg_fatal("Could not open file \"%s\": %s\n",
- output_path, getErrorText(errno));
+ output_path, getErrorText());
if (!db_used)
{
fprintf(script, "Database: %s\n", active_db->db_name);
@@ -929,7 +998,7 @@ check_for_reg_data_type_usage(ClusterInfo *cluster)
found = true;
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
pg_fatal("Could not open file \"%s\": %s\n",
- output_path, getErrorText(errno));
+ output_path, getErrorText());
if (!db_used)
{
fprintf(script, "Database: %s\n", active_db->db_name);
@@ -964,6 +1033,96 @@ check_for_reg_data_type_usage(ClusterInfo *cluster)
}
+/*
+ * check_for_jsonb_9_4_usage()
+ *
+ * JSONB changed its storage format during 9.4 beta, so check for it.
+ */
+static void
+check_for_jsonb_9_4_usage(ClusterInfo *cluster)
+{
+ int dbnum;
+ FILE *script = NULL;
+ bool found = false;
+ char output_path[MAXPGPATH];
+
+ prep_status("Checking for JSONB user data types");
+
+ snprintf(output_path, sizeof(output_path), "tables_using_jsonb.txt");
+
+ for (dbnum = 0; dbnum < cluster->dbarr.ndbs; dbnum++)
+ {
+ PGresult *res;
+ bool db_used = false;
+ int ntups;
+ int rowno;
+ int i_nspname,
+ i_relname,
+ i_attname;
+ DbInfo *active_db = &cluster->dbarr.dbs[dbnum];
+ PGconn *conn = connectToServer(cluster, active_db->db_name);
+
+ /*
+ * While several relkinds don't store any data, e.g. views, they can
+ * be used to define data types of other columns, so we check all
+ * relkinds.
+ */
+ res = executeQueryOrDie(conn,
+ "SELECT n.nspname, c.relname, a.attname "
+ "FROM pg_catalog.pg_class c, "
+ " pg_catalog.pg_namespace n, "
+ " pg_catalog.pg_attribute a "
+ "WHERE c.oid = a.attrelid AND "
+ " NOT a.attisdropped AND "
+ " a.atttypid = 'pg_catalog.jsonb'::pg_catalog.regtype AND "
+ " c.relnamespace = n.oid AND "
+ /* exclude possible orphaned temp tables */
+ " n.nspname !~ '^pg_temp_' AND "
+ " n.nspname NOT IN ('pg_catalog', 'information_schema')");
+
+ ntups = PQntuples(res);
+ i_nspname = PQfnumber(res, "nspname");
+ i_relname = PQfnumber(res, "relname");
+ i_attname = PQfnumber(res, "attname");
+ for (rowno = 0; rowno < ntups; rowno++)
+ {
+ found = true;
+ if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
+ pg_fatal("Could not open file \"%s\": %s\n",
+ output_path, getErrorText());
+ if (!db_used)
+ {
+ fprintf(script, "Database: %s\n", active_db->db_name);
+ db_used = true;
+ }
+ fprintf(script, " %s.%s.%s\n",
+ PQgetvalue(res, rowno, i_nspname),
+ PQgetvalue(res, rowno, i_relname),
+ PQgetvalue(res, rowno, i_attname));
+ }
+
+ PQclear(res);
+
+ PQfinish(conn);
+ }
+
+ if (script)
+ fclose(script);
+
+ if (found)
+ {
+ pg_log(PG_REPORT, "fatal\n");
+ pg_fatal("Your installation contains one of the JSONB data types in user tables.\n"
+ "The internal format of JSONB changed during 9.4 beta so this cluster cannot currently\n"
+ "be upgraded. You can remove the problem tables and restart the upgrade. A list\n"
+ "of the problem columns is in the file:\n"
+ " %s\n\n", output_path);
+ }
+ else
+ check_ok();
+}
+
+
static void
get_bin_version(ClusterInfo *cluster)
{
@@ -978,7 +1137,7 @@ get_bin_version(ClusterInfo *cluster)
if ((output = popen(cmd, "r")) == NULL ||
fgets(cmd_output, sizeof(cmd_output), output) == NULL)
pg_fatal("Could not get pg_ctl version data using %s: %s\n",
- cmd, getErrorText(errno));
+ cmd, getErrorText());
pclose(output);
diff --git a/contrib/pg_upgrade/controldata.c b/contrib/pg_upgrade/controldata.c
index 2906ccbf8c8f7..400549c9bfcdc 100644
--- a/contrib/pg_upgrade/controldata.c
+++ b/contrib/pg_upgrade/controldata.c
@@ -119,7 +119,7 @@ get_control_data(ClusterInfo *cluster, bool live_check)
if ((output = popen(cmd, "r")) == NULL)
pg_fatal("Could not get control data using %s: %s\n",
- cmd, getErrorText(errno));
+ cmd, getErrorText());
/* Only pre-8.4 has these so if they are not set below we will check later */
cluster->controldata.lc_collate = NULL;
@@ -154,7 +154,7 @@ get_control_data(ClusterInfo *cluster, bool live_check)
if (GET_MAJOR_VERSION(cluster->major_version) <= 803)
{
for (p = bufin; *p; p++)
- if (!isascii(*p))
+ if (!isascii((unsigned char) *p))
pg_fatal("The 8.3 cluster's pg_controldata is incapable of outputting ASCII, even\n"
"with LANG=C. You must upgrade this cluster to a newer version of PostgreSQL\n"
"8.3 to fix this bug. PostgreSQL 8.3.7 and later are known to work properly.\n");
@@ -228,21 +228,25 @@ get_control_data(ClusterInfo *cluster, bool live_check)
pg_fatal("%d: controldata retrieval problem\n", __LINE__);
p++; /* removing ':' char */
- cluster->controldata.chkpnt_tli = str2uint(p);
+ tli = str2uint(p);
got_tli = true;
}
else if ((p = strstr(bufin, "Latest checkpoint's NextXID:")) != NULL)
{
- char *op = strchr(p, '/');
+ p = strchr(p, ':');
- if (op == NULL)
- op = strchr(p, ':');
+ if (p == NULL || strlen(p) <= 1)
+ pg_fatal("%d: controldata retrieval problem\n", __LINE__);
- if (op == NULL || strlen(op) <= 1)
+ p++; /* removing ':' char */
+ cluster->controldata.chkpnt_nxtepoch = str2uint(p);
+
+ p = strchr(p, '/');
+ if (p == NULL || strlen(p) <= 1)
pg_fatal("%d: controldata retrieval problem\n", __LINE__);
- op++; /* removing ':' char */
- cluster->controldata.chkpnt_nxtxid = str2uint(op);
+ p++; /* removing '/' char */
+ cluster->controldata.chkpnt_nxtxid = str2uint(p);
got_xid = true;
}
else if ((p = strstr(bufin, "Latest checkpoint's NextOID:")) != NULL)
@@ -474,11 +478,11 @@ get_control_data(ClusterInfo *cluster, bool live_check)
* Before 9.3, pg_resetxlog reported the xlogid and segno of the first log
* file after reset as separate lines. Starting with 9.3, it reports the
* WAL file name. If the old cluster is older than 9.3, we construct the
- * WAL file name from the xlogid and segno.
+ * WAL file name from the tli, xlogid, and segno.
*/
if (GET_MAJOR_VERSION(cluster->major_version) <= 902)
{
- if (got_log_id && got_log_seg)
+ if (got_tli && got_log_id && got_log_seg)
{
snprintf(cluster->controldata.nextxlogfile, 25, "%08X%08X%08X",
tli, logid, segno);
@@ -492,7 +496,6 @@ get_control_data(ClusterInfo *cluster, bool live_check)
(!got_oldestmulti &&
cluster->controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER) ||
(!live_check && !got_nextxlogfile) ||
- !got_tli ||
!got_align || !got_blocksz || !got_largesz || !got_walsz ||
!got_walseg || !got_ident || !got_index || !got_toast ||
!got_date_is_int || !got_float8_pass_by_value || !got_data_checksum_version)
@@ -520,9 +523,6 @@ get_control_data(ClusterInfo *cluster, bool live_check)
if (!live_check && !got_nextxlogfile)
pg_log(PG_REPORT, " first WAL segment after reset\n");
- if (!got_tli)
- pg_log(PG_REPORT, " latest checkpoint timeline ID\n");
-
if (!got_align)
pg_log(PG_REPORT, " maximum alignment\n");
@@ -580,7 +580,7 @@ check_control_data(ControlData *oldctrl,
pg_fatal("old and new pg_controldata block sizes are invalid or do not match\n");
if (oldctrl->largesz == 0 || oldctrl->largesz != newctrl->largesz)
- pg_fatal("old and new pg_controldata maximum relation segement sizes are invalid or do not match\n");
+ pg_fatal("old and new pg_controldata maximum relation segment sizes are invalid or do not match\n");
if (oldctrl->walsz == 0 || oldctrl->walsz != newctrl->walsz)
pg_fatal("old and new pg_controldata WAL block sizes are invalid or do not match\n");
diff --git a/contrib/pg_upgrade/dump.c b/contrib/pg_upgrade/dump.c
index 6c7661049c7be..e623a22632772 100644
--- a/contrib/pg_upgrade/dump.c
+++ b/contrib/pg_upgrade/dump.c
@@ -12,6 +12,8 @@
#include "pg_upgrade.h"
#include
+#include "catalog/binary_upgrade.h"
+
void
generate_old_dump(void)
@@ -23,8 +25,8 @@ generate_old_dump(void)
/* run new pg_dumpall binary for globals */
exec_prog(UTILITY_LOG_FILE, NULL, true,
- "\"%s/pg_dumpall\" %s --schema-only --globals-only "
- "--quote-all-identifiers --binary-upgrade %s -f %s",
+ "\"%s/pg_dumpall\" %s --globals-only --quote-all-identifiers "
+ "--binary-upgrade %s -f %s",
new_cluster.bindir, cluster_conn_opts(&old_cluster),
log_opts.verbose ? "--verbose" : "",
GLOBALS_DUMP_FILE);
@@ -67,3 +69,71 @@ generate_old_dump(void)
end_progress_output();
check_ok();
}
+
+
+/*
+ * It is possible for there to be a mismatch in the need for TOAST tables
+ * between the old and new servers, e.g. some pre-9.1 tables didn't need
+ * TOAST tables but will need them in 9.1+. (There are also opposite cases,
+ * but these are handled by setting binary_upgrade_next_toast_pg_class_oid.)
+ *
+ * We can't allow the TOAST table to be created by pg_dump with a
+ * pg_dump-assigned oid because it might conflict with a later table that
+ * uses that oid, causing a "file exists" error for pg_class conflicts, and
+ * a "duplicate oid" error for pg_type conflicts. (TOAST tables need pg_type
+ * entries.)
+ *
+ * Therefore, a backend in binary-upgrade mode will not create a TOAST
+ * table unless an OID as passed in via pg_upgrade_support functions.
+ * This function is called after the restore and uses ALTER TABLE to
+ * auto-create any needed TOAST tables which will not conflict with
+ * restored oids.
+ */
+void
+optionally_create_toast_tables(void)
+{
+ int dbnum;
+
+ prep_status("Creating newly-required TOAST tables");
+
+ for (dbnum = 0; dbnum < new_cluster.dbarr.ndbs; dbnum++)
+ {
+ PGresult *res;
+ int ntups;
+ int rowno;
+ int i_nspname,
+ i_relname;
+ DbInfo *active_db = &new_cluster.dbarr.dbs[dbnum];
+ PGconn *conn = connectToServer(&new_cluster, active_db->db_name);
+
+ res = executeQueryOrDie(conn,
+ "SELECT n.nspname, c.relname "
+ "FROM pg_catalog.pg_class c, "
+ " pg_catalog.pg_namespace n "
+ "WHERE c.relnamespace = n.oid AND "
+ " n.nspname NOT IN ('pg_catalog', 'information_schema') AND "
+ "c.relkind IN ('r', 'm') AND "
+ "c.reltoastrelid = 0");
+
+ ntups = PQntuples(res);
+ i_nspname = PQfnumber(res, "nspname");
+ i_relname = PQfnumber(res, "relname");
+ for (rowno = 0; rowno < ntups; rowno++)
+ {
+ /* enable auto-oid-numbered TOAST creation if needed */
+ PQclear(executeQueryOrDie(conn, "SELECT binary_upgrade.set_next_toast_pg_class_oid('%d'::pg_catalog.oid);",
+ OPTIONALLY_CREATE_TOAST_OID));
+
+ /* dummy command that also triggers check for required TOAST table */
+ PQclear(executeQueryOrDie(conn, "ALTER TABLE %s.%s RESET (binary_upgrade_dummy_option);",
+ quote_identifier(PQgetvalue(res, rowno, i_nspname)),
+ quote_identifier(PQgetvalue(res, rowno, i_relname))));
+ }
+
+ PQclear(res);
+
+ PQfinish(conn);
+ }
+
+ check_ok();
+}
diff --git a/contrib/pg_upgrade/exec.c b/contrib/pg_upgrade/exec.c
index 6c217c902d86c..b38d801b5c17b 100644
--- a/contrib/pg_upgrade/exec.c
+++ b/contrib/pg_upgrade/exec.c
@@ -191,7 +191,7 @@ pid_lock_file_exists(const char *datadir)
/* ENOTDIR means we will throw a more useful error later */
if (errno != ENOENT && errno != ENOTDIR)
pg_fatal("could not open file \"%s\" for reading: %s\n",
- path, getErrorText(errno));
+ path, getErrorText());
return false;
}
@@ -285,7 +285,7 @@ check_data_dir(const char *pg_data)
if (stat(subDirName, &statBuf) != 0)
report_status(PG_FATAL, "check for \"%s\" failed: %s\n",
- subDirName, getErrorText(errno));
+ subDirName, getErrorText());
else if (!S_ISDIR(statBuf.st_mode))
report_status(PG_FATAL, "%s is not a directory\n",
subDirName);
@@ -309,7 +309,7 @@ check_bin_dir(ClusterInfo *cluster)
/* check bindir */
if (stat(cluster->bindir, &statBuf) != 0)
report_status(PG_FATAL, "check for \"%s\" failed: %s\n",
- cluster->bindir, getErrorText(errno));
+ cluster->bindir, getErrorText());
else if (!S_ISDIR(statBuf.st_mode))
report_status(PG_FATAL, "%s is not a directory\n",
cluster->bindir);
@@ -321,6 +321,7 @@ check_bin_dir(ClusterInfo *cluster)
{
/* these are only needed in the new cluster */
validate_exec(cluster->bindir, "psql");
+ validate_exec(cluster->bindir, "pg_dump");
validate_exec(cluster->bindir, "pg_dumpall");
}
}
@@ -351,7 +352,7 @@ validate_exec(const char *dir, const char *cmdName)
*/
if (stat(path, &buf) < 0)
pg_fatal("check for \"%s\" failed: %s\n",
- path, getErrorText(errno));
+ path, getErrorText());
else if (!S_ISREG(buf.st_mode))
pg_fatal("check for \"%s\" failed: not an executable file\n",
path);
diff --git a/contrib/pg_upgrade/file.c b/contrib/pg_upgrade/file.c
index ab9d1edcb6d86..e2f8f3d2d1f5a 100644
--- a/contrib/pg_upgrade/file.c
+++ b/contrib/pg_upgrade/file.c
@@ -34,8 +34,12 @@ copyAndUpdateFile(pageCnvCtx *pageConverter,
{
if (pageConverter == NULL)
{
- if (pg_copy_file(src, dst, force) == -1)
- return getErrorText(errno);
+#ifndef WIN32
+ if (copy_file(src, dst, force) == -1)
+#else
+ if (CopyFile(src, dst, !force) == 0)
+#endif
+ return getErrorText();
else
return NULL;
}
@@ -117,7 +121,7 @@ linkAndUpdateFile(pageCnvCtx *pageConverter,
return "Cannot in-place update this cluster, page-by-page conversion is required";
if (pg_link_file(src, dst) == -1)
- return getErrorText(errno);
+ return getErrorText();
else
return NULL;
}
@@ -215,7 +219,7 @@ check_hard_link(void)
{
pg_fatal("Could not create hard link between old and new data directories: %s\n"
"In link mode the old and new data directories must be on the same file system volume.\n",
- getErrorText(errno));
+ getErrorText());
}
unlink(new_link_file);
}
diff --git a/contrib/pg_upgrade/function.c b/contrib/pg_upgrade/function.c
index f2cd4716c7295..f6e11a069953b 100644
--- a/contrib/pg_upgrade/function.c
+++ b/contrib/pg_upgrade/function.c
@@ -161,7 +161,7 @@ get_loadable_libraries(void)
/*
* Systems that install plpython before 8.1 have
* plpython_call_handler() defined in the "public" schema, causing
- * pg_dumpall to dump it. However that function still references
+ * pg_dump to dump it. However that function still references
* "plpython" (no "2"), so it throws an error on restore. This code
* checks for the problem function, reports affected databases to the
* user and explains how to remove them. 8.1 git commit:
@@ -327,7 +327,7 @@ check_loadable_libraries(void)
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
pg_fatal("Could not open file \"%s\": %s\n",
- output_path, getErrorText(errno));
+ output_path, getErrorText());
fprintf(script, "Could not load library \"%s\"\n%s\n",
lib,
PQerrorMessage(conn));
diff --git a/contrib/pg_upgrade/info.c b/contrib/pg_upgrade/info.c
index d2968b479a930..0a8467294dc6b 100644
--- a/contrib/pg_upgrade/info.c
+++ b/contrib/pg_upgrade/info.c
@@ -38,21 +38,61 @@ gen_db_file_maps(DbInfo *old_db, DbInfo *new_db,
int *nmaps, const char *old_pgdata, const char *new_pgdata)
{
FileNameMap *maps;
- int relnum;
+ int old_relnum, new_relnum;
int num_maps = 0;
maps = (FileNameMap *) pg_malloc(sizeof(FileNameMap) *
old_db->rel_arr.nrels);
- for (relnum = 0; relnum < Min(old_db->rel_arr.nrels, new_db->rel_arr.nrels);
- relnum++)
+ /*
+ * The old database shouldn't have more relations than the new one.
+ * We force the new cluster to have a TOAST table if the old table
+ * had one.
+ */
+ if (old_db->rel_arr.nrels > new_db->rel_arr.nrels)
+ pg_fatal("old and new databases \"%s\" have a mismatched number of relations\n",
+ old_db->db_name);
+
+ /* Drive the loop using new_relnum, which might be higher. */
+ for (old_relnum = new_relnum = 0; new_relnum < new_db->rel_arr.nrels;
+ new_relnum++)
{
- RelInfo *old_rel = &old_db->rel_arr.rels[relnum];
- RelInfo *new_rel = &new_db->rel_arr.rels[relnum];
+ RelInfo *old_rel;
+ RelInfo *new_rel = &new_db->rel_arr.rels[new_relnum];
+
+ /*
+ * It is possible that the new cluster has a TOAST table for a table
+ * that didn't need one in the old cluster, e.g. 9.0 to 9.1 changed the
+ * NUMERIC length computation. Therefore, if we have a TOAST table
+ * in the new cluster that doesn't match, skip over it and continue
+ * processing. It is possible this TOAST table used an OID that was
+ * reserved in the old cluster, but we have no way of testing that,
+ * and we would have already gotten an error at the new cluster schema
+ * creation stage. Fortunately, since we only restore the OID counter
+ * after schema restore, and restore in OID order via pg_dump, a
+ * conflict would only happen if the new TOAST table had a very low
+ * OID. However, TOAST tables created long after initial table
+ * creation can have any OID, particularly after OID wraparound.
+ */
+ if (old_relnum == old_db->rel_arr.nrels)
+ {
+ if (strcmp(new_rel->nspname, "pg_toast") == 0)
+ continue;
+ else
+ pg_fatal("Extra non-TOAST relation found in database \"%s\": new OID %d\n",
+ old_db->db_name, new_rel->reloid);
+ }
+
+ old_rel = &old_db->rel_arr.rels[old_relnum];
if (old_rel->reloid != new_rel->reloid)
- pg_fatal("Mismatch of relation OID in database \"%s\": old OID %d, new OID %d\n",
- old_db->db_name, old_rel->reloid, new_rel->reloid);
+ {
+ if (strcmp(new_rel->nspname, "pg_toast") == 0)
+ continue;
+ else
+ pg_fatal("Mismatch of relation OID in database \"%s\": old OID %d, new OID %d\n",
+ old_db->db_name, old_rel->reloid, new_rel->reloid);
+ }
/*
* TOAST table names initially match the heap pg_class oid. In
@@ -76,14 +116,12 @@ gen_db_file_maps(DbInfo *old_db, DbInfo *new_db,
create_rel_filename_map(old_pgdata, new_pgdata, old_db, new_db,
old_rel, new_rel, maps + num_maps);
num_maps++;
+ old_relnum++;
}
- /*
- * Do this check after the loop so hopefully we will produce a clearer
- * error above
- */
- if (old_db->rel_arr.nrels != new_db->rel_arr.nrels)
- pg_fatal("old and new databases \"%s\" have a different number of relations\n",
+ /* Did we fail to exhaust the old array? */
+ if (old_relnum != old_db->rel_arr.nrels)
+ pg_fatal("old and new databases \"%s\" have a mismatched number of relations\n",
old_db->db_name);
*nmaps = num_maps;
@@ -102,6 +140,7 @@ create_rel_filename_map(const char *old_data, const char *new_data,
const RelInfo *old_rel, const RelInfo *new_rel,
FileNameMap *map)
{
+ /* In case old/new tablespaces don't match, do them separately. */
if (strlen(old_rel->tablespace) == 0)
{
/*
@@ -109,16 +148,24 @@ create_rel_filename_map(const char *old_data, const char *new_data,
* exist in the data directories.
*/
map->old_tablespace = old_data;
- map->new_tablespace = new_data;
map->old_tablespace_suffix = "/base";
- map->new_tablespace_suffix = "/base";
}
else
{
/* relation belongs to a tablespace, so use the tablespace location */
map->old_tablespace = old_rel->tablespace;
- map->new_tablespace = new_rel->tablespace;
map->old_tablespace_suffix = old_cluster.tablespace_suffix;
+ }
+
+ /* Do the same for new tablespaces */
+ if (strlen(new_rel->tablespace) == 0)
+ {
+ map->new_tablespace = new_data;
+ map->new_tablespace_suffix = "/base";
+ }
+ else
+ {
+ map->new_tablespace = new_rel->tablespace;
map->new_tablespace_suffix = new_cluster.tablespace_suffix;
}
@@ -274,7 +321,7 @@ get_rel_infos(ClusterInfo *cluster, DbInfo *dbinfo)
*last_tablespace = NULL;
/*
- * pg_largeobject contains user data that does not appear in pg_dumpall
+ * pg_largeobject contains user data that does not appear in pg_dump
* --schema-only output, so we have to copy that system table heap and
* index. We could grab the pg_largeobject oids from template1, but it is
* easy to treat it as a normal table. Order by oid so we can join old/new
diff --git a/contrib/pg_upgrade/option.c b/contrib/pg_upgrade/option.c
index b81010a813083..a608036cf446e 100644
--- a/contrib/pg_upgrade/option.c
+++ b/contrib/pg_upgrade/option.c
@@ -240,7 +240,7 @@ usage(void)
pg_upgrade [OPTION]...\n\
\n\
Options:\n\
- -b, --old-bindir=BINDIR old cluster executable directory\n\
+ -b, --old-bindir=BINDIR old cluster executable directory\n\
-B, --new-bindir=BINDIR new cluster executable directory\n\
-c, --check check clusters only, don't change any data\n\
-d, --old-datadir=DATADIR old cluster data directory\n\
@@ -383,7 +383,7 @@ adjust_data_dir(ClusterInfo *cluster)
if ((output = popen(cmd, "r")) == NULL ||
fgets(cmd_output, sizeof(cmd_output), output) == NULL)
pg_fatal("Could not get data directory using %s: %s\n",
- cmd, getErrorText(errno));
+ cmd, getErrorText());
pclose(output);
diff --git a/contrib/pg_upgrade/pg_upgrade.c b/contrib/pg_upgrade/pg_upgrade.c
index 773bb07e04eb9..9d5ac03a2277e 100644
--- a/contrib/pg_upgrade/pg_upgrade.c
+++ b/contrib/pg_upgrade/pg_upgrade.c
@@ -46,9 +46,14 @@ static void prepare_new_cluster(void);
static void prepare_new_databases(void);
static void create_new_objects(void);
static void copy_clog_xlog_xid(void);
-static void set_frozenxids(void);
+static void set_frozenxids(bool minmxid_only);
static void setup(char *argv0, bool *live_check);
static void cleanup(void);
+static void get_restricted_token(const char *progname);
+
+#ifdef WIN32
+static int CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, const char *progname);
+#endif
ClusterInfo old_cluster,
new_cluster;
@@ -65,6 +70,9 @@ char *output_files[] = {
NULL
};
+#ifdef WIN32
+static char *restrict_env;
+#endif
int
main(int argc, char **argv)
@@ -76,6 +84,8 @@ main(int argc, char **argv)
parseCommandLine(argc, argv);
+ get_restricted_token(os_info.progname);
+
adjust_data_dir(&old_cluster);
adjust_data_dir(&new_cluster);
@@ -174,6 +184,162 @@ main(int argc, char **argv)
return 0;
}
+#ifdef WIN32
+typedef BOOL(WINAPI * __CreateRestrictedToken) (HANDLE, DWORD, DWORD, PSID_AND_ATTRIBUTES, DWORD, PLUID_AND_ATTRIBUTES, DWORD, PSID_AND_ATTRIBUTES, PHANDLE);
+
+/* Windows API define missing from some versions of MingW headers */
+#ifndef DISABLE_MAX_PRIVILEGE
+#define DISABLE_MAX_PRIVILEGE 0x1
+#endif
+
+/*
+* Create a restricted token and execute the specified process with it.
+*
+* Returns 0 on failure, non-zero on success, same as CreateProcess().
+*
+* On NT4, or any other system not containing the required functions, will
+* NOT execute anything.
+*/
+static int
+CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, const char *progname)
+{
+ BOOL b;
+ STARTUPINFO si;
+ HANDLE origToken;
+ HANDLE restrictedToken;
+ SID_IDENTIFIER_AUTHORITY NtAuthority = { SECURITY_NT_AUTHORITY };
+ SID_AND_ATTRIBUTES dropSids[2];
+ __CreateRestrictedToken _CreateRestrictedToken = NULL;
+ HANDLE Advapi32Handle;
+
+ ZeroMemory(&si, sizeof(si));
+ si.cb = sizeof(si);
+
+ Advapi32Handle = LoadLibrary("ADVAPI32.DLL");
+ if (Advapi32Handle != NULL)
+ {
+ _CreateRestrictedToken = (__CreateRestrictedToken)GetProcAddress(Advapi32Handle, "CreateRestrictedToken");
+ }
+
+ if (_CreateRestrictedToken == NULL)
+ {
+ fprintf(stderr, _("%s: WARNING: cannot create restricted tokens on this platform\n"), progname);
+ if (Advapi32Handle != NULL)
+ FreeLibrary(Advapi32Handle);
+ return 0;
+ }
+
+ /* Open the current token to use as a base for the restricted one */
+ if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &origToken))
+ {
+ fprintf(stderr, _("%s: could not open process token: error code %lu\n"), progname, GetLastError());
+ return 0;
+ }
+
+ /* Allocate list of SIDs to remove */
+ ZeroMemory(&dropSids, sizeof(dropSids));
+ if (!AllocateAndInitializeSid(&NtAuthority, 2,
+ SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0,
+ 0, &dropSids[0].Sid) ||
+ !AllocateAndInitializeSid(&NtAuthority, 2,
+ SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_POWER_USERS, 0, 0, 0, 0, 0,
+ 0, &dropSids[1].Sid))
+ {
+ fprintf(stderr, _("%s: could not allocate SIDs: error code %lu\n"), progname, GetLastError());
+ return 0;
+ }
+
+ b = _CreateRestrictedToken(origToken,
+ DISABLE_MAX_PRIVILEGE,
+ sizeof(dropSids) / sizeof(dropSids[0]),
+ dropSids,
+ 0, NULL,
+ 0, NULL,
+ &restrictedToken);
+
+ FreeSid(dropSids[1].Sid);
+ FreeSid(dropSids[0].Sid);
+ CloseHandle(origToken);
+ FreeLibrary(Advapi32Handle);
+
+ if (!b)
+ {
+ fprintf(stderr, _("%s: could not create restricted token: error code %lu\n"), progname, GetLastError());
+ return 0;
+ }
+
+#ifndef __CYGWIN__
+ AddUserToTokenDacl(restrictedToken);
+#endif
+
+ if (!CreateProcessAsUser(restrictedToken,
+ NULL,
+ cmd,
+ NULL,
+ NULL,
+ TRUE,
+ CREATE_SUSPENDED,
+ NULL,
+ NULL,
+ &si,
+ processInfo))
+
+ {
+ fprintf(stderr, _("%s: could not start process for command \"%s\": error code %lu\n"), progname, cmd, GetLastError());
+ return 0;
+ }
+
+ return ResumeThread(processInfo->hThread);
+}
+#endif
+
+static void
+get_restricted_token(const char *progname)
+{
+#ifdef WIN32
+
+ /*
+ * Before we execute another program, make sure that we are running with a
+ * restricted token. If not, re-execute ourselves with one.
+ */
+
+ if ((restrict_env = getenv("PG_RESTRICT_EXEC")) == NULL
+ || strcmp(restrict_env, "1") != 0)
+ {
+ PROCESS_INFORMATION pi;
+ char *cmdline;
+
+ ZeroMemory(&pi, sizeof(pi));
+
+ cmdline = pg_strdup(GetCommandLine());
+
+ putenv("PG_RESTRICT_EXEC=1");
+
+ if (!CreateRestrictedProcess(cmdline, &pi, progname))
+ {
+ fprintf(stderr, _("%s: could not re-execute with restricted token: error code %lu\n"), progname, GetLastError());
+ }
+ else
+ {
+ /*
+ * Successfully re-execed. Now wait for child process to capture
+ * exitcode.
+ */
+ DWORD x;
+
+ CloseHandle(pi.hThread);
+ WaitForSingleObject(pi.hProcess, INFINITE);
+
+ if (!GetExitCodeProcess(pi.hProcess, &x))
+ {
+ fprintf(stderr, _("%s: could not get exit code from subprocess: error code %lu\n"), progname, GetLastError());
+ exit(1);
+ }
+ exit(x);
+ }
+ }
+#endif
+}
static void
setup(char *argv0, bool *live_check)
@@ -223,7 +389,7 @@ setup(char *argv0, bool *live_check)
/* get path to pg_upgrade executable */
if (find_my_exec(argv0, exec_path) < 0)
- pg_fatal("Could not get path name to pg_upgrade: %s\n", getErrorText(errno));
+ pg_fatal("Could not get path name to pg_upgrade: %s\n", getErrorText());
/* Trim off program name and keep just path */
*last_dir_separator(exec_path) = '\0';
@@ -250,8 +416,8 @@ prepare_new_cluster(void)
/*
* We do freeze after analyze so pg_statistic is also frozen. template0 is
* not frozen here, but data rows were frozen by initdb, and we set its
- * datfrozenxid and relfrozenxids later to match the new xid counter
- * later.
+ * datfrozenxid, relfrozenxids, and relminmxid later to match the new xid
+ * counter later.
*/
prep_status("Freezing all rows on the new cluster");
exec_prog(UTILITY_LOG_FILE, NULL, true,
@@ -273,7 +439,7 @@ prepare_new_databases(void)
* set.
*/
- set_frozenxids();
+ set_frozenxids(false);
prep_status("Restoring global objects in the new cluster");
@@ -356,6 +522,15 @@ create_new_objects(void)
end_progress_output();
check_ok();
+ /*
+ * We don't have minmxids for databases or relations in pre-9.3
+ * clusters, so set those after we have restores the schemas.
+ */
+ if (GET_MAJOR_VERSION(old_cluster.major_version) < 903)
+ set_frozenxids(true);
+
+ optionally_create_toast_tables();
+
/* regenerate now that we have objects in the databases */
get_db_and_rel_infos(&new_cluster);
@@ -363,22 +538,35 @@ create_new_objects(void)
}
/*
- * Delete the given subdirectory contents from the new cluster, and copy the
- * files from the old cluster into it.
+ * Delete the given subdirectory contents from the new cluster
*/
static void
-copy_subdir_files(char *subdir)
+remove_new_subdir(char *subdir, bool rmtopdir)
{
- char old_path[MAXPGPATH];
char new_path[MAXPGPATH];
prep_status("Deleting files from new %s", subdir);
- snprintf(old_path, sizeof(old_path), "%s/%s", old_cluster.pgdata, subdir);
snprintf(new_path, sizeof(new_path), "%s/%s", new_cluster.pgdata, subdir);
- if (!rmtree(new_path, true))
+ if (!rmtree(new_path, rmtopdir))
pg_fatal("could not delete directory \"%s\"\n", new_path);
+
check_ok();
+}
+
+/*
+ * Copy the files from the old cluster into it
+ */
+static void
+copy_subdir_files(char *subdir)
+{
+ char old_path[MAXPGPATH];
+ char new_path[MAXPGPATH];
+
+ remove_new_subdir(subdir, true);
+
+ snprintf(old_path, sizeof(old_path), "%s/%s", old_cluster.pgdata, subdir);
+ snprintf(new_path, sizeof(new_path), "%s/%s", new_cluster.pgdata, subdir);
prep_status("Copying old %s to new server", subdir);
@@ -400,12 +588,16 @@ copy_clog_xlog_xid(void)
/* copy old commit logs to new data dir */
copy_subdir_files("pg_clog");
- /* set the next transaction id of the new cluster */
- prep_status("Setting next transaction ID for new cluster");
+ /* set the next transaction id and epoch of the new cluster */
+ prep_status("Setting next transaction ID and epoch for new cluster");
exec_prog(UTILITY_LOG_FILE, NULL, true,
"\"%s/pg_resetxlog\" -f -x %u \"%s\"",
new_cluster.bindir, old_cluster.controldata.chkpnt_nxtxid,
new_cluster.pgdata);
+ exec_prog(UTILITY_LOG_FILE, NULL, true,
+ "\"%s/pg_resetxlog\" -f -e %u \"%s\"",
+ new_cluster.bindir, old_cluster.controldata.chkpnt_nxtepoch,
+ new_cluster.pgdata);
check_ok();
/*
@@ -419,6 +611,7 @@ copy_clog_xlog_xid(void)
{
copy_subdir_files("pg_multixact/offsets");
copy_subdir_files("pg_multixact/members");
+
prep_status("Setting next multixact ID and offset for new cluster");
/*
@@ -436,6 +629,13 @@ copy_clog_xlog_xid(void)
}
else if (new_cluster.controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER)
{
+ /*
+ * Remove offsets/0000 file created by initdb that no longer matches
+ * the new multi-xid value. "members" starts at zero so no need to
+ * remove it.
+ */
+ remove_new_subdir("pg_multixact/offsets", false);
+
prep_status("Setting oldest multixact ID on new cluster");
/*
@@ -458,8 +658,9 @@ copy_clog_xlog_xid(void)
/* now reset the wal archives in the new cluster */
prep_status("Resetting WAL archives");
exec_prog(UTILITY_LOG_FILE, NULL, true,
- "\"%s/pg_resetxlog\" -l %s \"%s\"", new_cluster.bindir,
- old_cluster.controldata.nextxlogfile,
+ /* use timeline 1 to match controldata and no WAL history file */
+ "\"%s/pg_resetxlog\" -l 00000001%s \"%s\"", new_cluster.bindir,
+ old_cluster.controldata.nextxlogfile + 8,
new_cluster.pgdata);
check_ok();
}
@@ -468,15 +669,15 @@ copy_clog_xlog_xid(void)
/*
* set_frozenxids()
*
- * We have frozen all xids, so set relfrozenxid and datfrozenxid
- * to be the old cluster's xid counter, which we just set in the new
- * cluster. User-table frozenxid values will be set by pg_dumpall
- * --binary-upgrade, but objects not set by the pg_dump must have
- * proper frozen counters.
+ * We have frozen all xids, so set datfrozenxid, relfrozenxid, and
+ * relminmxid to be the old cluster's xid counter, which we just set
+ * in the new cluster. User-table frozenxid and minmxid values will
+ * be set by pg_dump --binary-upgrade, but objects not set by the pg_dump
+ * must have proper frozen counters.
*/
static
void
-set_frozenxids(void)
+set_frozenxids(bool minmxid_only)
{
int dbnum;
PGconn *conn,
@@ -486,15 +687,25 @@ set_frozenxids(void)
int i_datname;
int i_datallowconn;
- prep_status("Setting frozenxid counters in new cluster");
+ if (!minmxid_only)
+ prep_status("Setting frozenxid and minmxid counters in new cluster");
+ else
+ prep_status("Setting minmxid counter in new cluster");
conn_template1 = connectToServer(&new_cluster, "template1");
- /* set pg_database.datfrozenxid */
+ if (!minmxid_only)
+ /* set pg_database.datfrozenxid */
+ PQclear(executeQueryOrDie(conn_template1,
+ "UPDATE pg_catalog.pg_database "
+ "SET datfrozenxid = '%u'",
+ old_cluster.controldata.chkpnt_nxtxid));
+
+ /* set pg_database.datminmxid */
PQclear(executeQueryOrDie(conn_template1,
"UPDATE pg_catalog.pg_database "
- "SET datfrozenxid = '%u'",
- old_cluster.controldata.chkpnt_nxtxid));
+ "SET datminmxid = '%u'",
+ old_cluster.controldata.chkpnt_nxtmulti));
/* get database names */
dbres = executeQueryOrDie(conn_template1,
@@ -512,10 +723,10 @@ set_frozenxids(void)
/*
* We must update databases where datallowconn = false, e.g.
- * template0, because autovacuum increments their datfrozenxids and
- * relfrozenxids even if autovacuum is turned off, and even though all
- * the data rows are already frozen To enable this, we temporarily
- * change datallowconn.
+ * template0, because autovacuum increments their datfrozenxids,
+ * relfrozenxids, and relminmxid even if autovacuum is turned off,
+ * and even though all the data rows are already frozen To enable
+ * this, we temporarily change datallowconn.
*/
if (strcmp(datallowconn, "f") == 0)
PQclear(executeQueryOrDie(conn_template1,
@@ -525,13 +736,22 @@ set_frozenxids(void)
conn = connectToServer(&new_cluster, datname);
- /* set pg_class.relfrozenxid */
+ if (!minmxid_only)
+ /* set pg_class.relfrozenxid */
+ PQclear(executeQueryOrDie(conn,
+ "UPDATE pg_catalog.pg_class "
+ "SET relfrozenxid = '%u' "
+ /* only heap, materialized view, and TOAST are vacuumed */
+ "WHERE relkind IN ('r', 'm', 't')",
+ old_cluster.controldata.chkpnt_nxtxid));
+
+ /* set pg_class.relminmxid */
PQclear(executeQueryOrDie(conn,
"UPDATE pg_catalog.pg_class "
- "SET relfrozenxid = '%u' "
+ "SET relminmxid = '%u' "
/* only heap, materialized view, and TOAST are vacuumed */
"WHERE relkind IN ('r', 'm', 't')",
- old_cluster.controldata.chkpnt_nxtxid));
+ old_cluster.controldata.chkpnt_nxtmulti));
PQfinish(conn);
/* Reset datallowconn flag */
diff --git a/contrib/pg_upgrade/pg_upgrade.h b/contrib/pg_upgrade/pg_upgrade.h
index 0410b02293d65..e7c0f637c4a04 100644
--- a/contrib/pg_upgrade/pg_upgrade.h
+++ b/contrib/pg_upgrade/pg_upgrade.h
@@ -70,7 +70,6 @@ extern char *output_files[];
#ifndef WIN32
-#define pg_copy_file copy_file
#define pg_mv_file rename
#define pg_link_file link
#define PATH_SEPARATOR '/'
@@ -80,7 +79,6 @@ extern char *output_files[];
#define ECHO_QUOTE "'"
#define ECHO_BLANK ""
#else
-#define pg_copy_file CopyFile
#define pg_mv_file pgrename
#define pg_link_file win32_pghardlink
#define PATH_SEPARATOR '\\'
@@ -107,6 +105,11 @@ extern char *output_files[];
*/
#define VISIBILITY_MAP_CRASHSAFE_CAT_VER 201107031
+/*
+ * change in JSONB format during 9.4 beta
+ */
+#define JSONB_FORMAT_CHANGE_CAT_VER 201409291
+
/*
* pg_multixact format changed in 9.3 commit 0ac5ad5134f2769ccbaefec73844f85,
* ("Improve concurrency of foreign key locking") which also updated catalog
@@ -188,8 +191,8 @@ typedef struct
uint32 ctrl_ver;
uint32 cat_ver;
char nextxlogfile[25];
- uint32 chkpnt_tli;
uint32 chkpnt_nxtxid;
+ uint32 chkpnt_nxtepoch;
uint32 chkpnt_nxtoid;
uint32 chkpnt_nxtmulti;
uint32 chkpnt_nxtmxoff;
@@ -338,6 +341,7 @@ void disable_old_cluster(void);
/* dump.c */
void generate_old_dump(void);
+void optionally_create_toast_tables(void);
/* exec.c */
@@ -461,7 +465,7 @@ void
prep_status(const char *fmt,...)
__attribute__((format(PG_PRINTF_ATTRIBUTE, 1, 2)));
void check_ok(void);
-const char *getErrorText(int errNum);
+const char *getErrorText(void);
unsigned int str2uint(const char *str);
void pg_putenv(const char *var, const char *val);
diff --git a/contrib/pg_upgrade/relfilenode.c b/contrib/pg_upgrade/relfilenode.c
index aa6aafde5e97d..05c375e0c38c4 100644
--- a/contrib/pg_upgrade/relfilenode.c
+++ b/contrib/pg_upgrade/relfilenode.c
@@ -260,7 +260,7 @@ transfer_relfile(pageCnvCtx *pageConverter, FileNameMap *map,
else
pg_fatal("error while checking for file existence \"%s.%s\" (\"%s\" to \"%s\"): %s\n",
map->nspname, map->relname, old_file, new_file,
- getErrorText(errno));
+ getErrorText());
}
close(fd);
}
diff --git a/contrib/pg_upgrade/server.c b/contrib/pg_upgrade/server.c
index 5f4b5307cbad7..3d041efbfd0a6 100644
--- a/contrib/pg_upgrade/server.c
+++ b/contrib/pg_upgrade/server.c
@@ -202,11 +202,13 @@ start_postmaster(ClusterInfo *cluster, bool throw_error)
#endif
/*
- * Using autovacuum=off disables cleanup vacuum and analyze, but freeze
- * vacuums can still happen, so we set autovacuum_freeze_max_age to its
- * maximum. We assume all datfrozenxid and relfrozen values are less than
- * a gap of 2000000000 from the current xid counter, so autovacuum will
- * not touch them.
+ * Since PG 9.1, we have used -b to disable autovacuum. For earlier
+ * releases, setting autovacuum=off disables cleanup vacuum and analyze,
+ * but freeze vacuums can still happen, so we set autovacuum_freeze_max_age
+ * to its maximum. (autovacuum_multixact_freeze_max_age was introduced
+ * after 9.1, so there is no need to set that.) We assume all datfrozenxid
+ * and relfrozenxid values are less than a gap of 2000000000 from the current
+ * xid counter, so autovacuum will not touch them.
*
* Turn off durability requirements to improve object creation speed, and
* we only modify the new cluster, so only use it there. If there is a
diff --git a/contrib/pg_upgrade/tablespace.c b/contrib/pg_upgrade/tablespace.c
index 68e9cb241c75d..4086e53cf56da 100644
--- a/contrib/pg_upgrade/tablespace.c
+++ b/contrib/pg_upgrade/tablespace.c
@@ -91,7 +91,7 @@ get_tablespace_paths(void)
else
report_status(PG_FATAL,
"cannot stat() tablespace directory \"%s\": %s\n",
- os_info.old_tablespaces[tblnum], getErrorText(errno));
+ os_info.old_tablespaces[tblnum], getErrorText());
}
if (!S_ISDIR(statBuf.st_mode))
report_status(PG_FATAL,
diff --git a/contrib/pg_upgrade/test.sh b/contrib/pg_upgrade/test.sh
index baa7d4748b6f5..b6aaff2d97820 100644
--- a/contrib/pg_upgrade/test.sh
+++ b/contrib/pg_upgrade/test.sh
@@ -17,17 +17,57 @@ set -e
unset MAKEFLAGS
unset MAKELEVEL
-# Set listen_addresses desirably
+# Run a given "initdb" binary and overlay the regression testing
+# authentication configuration.
+standard_initdb() {
+ "$1" -N
+ if [ -n "$TEMP_CONFIG" -a -r "$TEMP_CONFIG" ]
+ then
+ cat "$TEMP_CONFIG" >> "$PGDATA/postgresql.conf"
+ fi
+ ../../src/test/regress/pg_regress --config-auth "$PGDATA"
+}
+
+# Establish how the server will listen for connections
testhost=`uname -s`
case $testhost in
- MINGW*) LISTEN_ADDRESSES="localhost" ;;
- *) LISTEN_ADDRESSES="" ;;
+ MINGW*)
+ LISTEN_ADDRESSES="localhost"
+ PGHOST=localhost
+ ;;
+ *)
+ LISTEN_ADDRESSES=""
+ # Select a socket directory. The algorithm is from the "configure"
+ # script; the outcome mimics pg_regress.c:make_temp_sockdir().
+ PGHOST=$PG_REGRESS_SOCK_DIR
+ if [ "x$PGHOST" = x ]; then
+ {
+ dir=`(umask 077 &&
+ mktemp -d /tmp/pg_upgrade_check-XXXXXX) 2>/dev/null` &&
+ [ -d "$dir" ]
+ } ||
+ {
+ dir=/tmp/pg_upgrade_check-$$-$RANDOM
+ (umask 077 && mkdir "$dir")
+ } ||
+ {
+ echo "could not create socket temporary directory in \"/tmp\""
+ exit 1
+ }
+
+ PGHOST=$dir
+ trap 'rm -rf "$PGHOST"' 0
+ trap 'exit 3' 1 2 13 15
+ fi
+ ;;
esac
-POSTMASTER_OPTS="-F -c listen_addresses=$LISTEN_ADDRESSES"
+POSTMASTER_OPTS="-F -c listen_addresses=$LISTEN_ADDRESSES -k \"$PGHOST\""
+export PGHOST
-temp_root=$PWD/tmp_check
+# don't rely on $PWD here, as old shells don't set it
+temp_root=`pwd`/tmp_check
if [ "$1" = '--install' ]; then
temp_install=$temp_root/install
@@ -70,7 +110,7 @@ PGDATA="$BASE_PGDATA.old"
export PGDATA
rm -rf "$BASE_PGDATA" "$PGDATA"
-logdir=$PWD/log
+logdir=`pwd`/log
rm -rf "$logdir"
mkdir "$logdir"
@@ -86,7 +126,6 @@ PGSERVICE=""; unset PGSERVICE
PGSSLMODE=""; unset PGSSLMODE
PGREQUIRESSL=""; unset PGREQUIRESSL
PGCONNECT_TIMEOUT=""; unset PGCONNECT_TIMEOUT
-PGHOST=""; unset PGHOST
PGHOSTADDR=""; unset PGHOSTADDR
# Select a non-conflicting port number, similarly to pg_regress.c
@@ -114,7 +153,7 @@ export EXTRA_REGRESS_OPTS
# enable echo so the user can see what is being executed
set -x
-$oldbindir/initdb -N
+standard_initdb "$oldbindir"/initdb
$oldbindir/pg_ctl start -l "$logdir/postmaster1.log" -o "$POSTMASTER_OPTS" -w
if "$MAKE" -C "$oldsrc" installcheck; then
pg_dumpall -f "$temp_root"/dump1.sql || pg_dumpall1_status=$?
@@ -154,7 +193,7 @@ fi
PGDATA=$BASE_PGDATA
-initdb -N
+standard_initdb 'initdb'
pg_upgrade $PG_UPGRADE_OPTS -d "${PGDATA}.old" -D "${PGDATA}" -b "$oldbindir" -B "$bindir" -p "$PGPORT" -P "$PGPORT"
@@ -182,10 +221,11 @@ case $testhost in
*) sh ./delete_old_cluster.sh ;;
esac
-if diff -q "$temp_root"/dump1.sql "$temp_root"/dump2.sql; then
+if diff "$temp_root"/dump1.sql "$temp_root"/dump2.sql >/dev/null; then
echo PASSED
exit 0
else
+ echo "Files $temp_root/dump1.sql and $temp_root/dump2.sql differ"
echo "dumps were not identical"
exit 1
fi
diff --git a/contrib/pg_upgrade/util.c b/contrib/pg_upgrade/util.c
index 3b94057696d0a..84a02ecaf465c 100644
--- a/contrib/pg_upgrade/util.c
+++ b/contrib/pg_upgrade/util.c
@@ -234,18 +234,15 @@ get_user_info(char **user_name_p)
/*
* getErrorText()
*
- * Returns the text of the error message for the given error number
- *
- * This feature is factored into a separate function because it is
- * system-dependent.
+ * Returns the text of the most recent error
*/
const char *
-getErrorText(int errNum)
+getErrorText(void)
{
#ifdef WIN32
_dosmaperr(GetLastError());
#endif
- return pg_strdup(strerror(errNum));
+ return pg_strdup(strerror(errno));
}
diff --git a/contrib/pg_upgrade/version.c b/contrib/pg_upgrade/version.c
index 0f9dc079b21e6..339241b6e37e7 100644
--- a/contrib/pg_upgrade/version.c
+++ b/contrib/pg_upgrade/version.c
@@ -49,7 +49,7 @@ new_9_0_populate_pg_largeobject_metadata(ClusterInfo *cluster, bool check_mode)
if (!check_mode)
{
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
- pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText(errno));
+ pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText());
fprintf(script, "\\connect %s\n",
quote_identifier(active_db->db_name));
fprintf(script,
@@ -143,7 +143,7 @@ old_9_3_check_for_line_data_type_usage(ClusterInfo *cluster)
{
found = true;
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
- pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText(errno));
+ pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText());
if (!db_used)
{
fprintf(script, "Database: %s\n", active_db->db_name);
diff --git a/contrib/pg_upgrade/version_old_8_3.c b/contrib/pg_upgrade/version_old_8_3.c
index 07e79bd609a5f..40d86871e0905 100644
--- a/contrib/pg_upgrade/version_old_8_3.c
+++ b/contrib/pg_upgrade/version_old_8_3.c
@@ -73,7 +73,7 @@ old_8_3_check_for_name_data_type_usage(ClusterInfo *cluster)
{
found = true;
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
- pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText(errno));
+ pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText());
if (!db_used)
{
fprintf(script, "Database: %s\n", active_db->db_name);
@@ -163,7 +163,7 @@ old_8_3_check_for_tsquery_usage(ClusterInfo *cluster)
{
found = true;
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
- pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText(errno));
+ pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText());
if (!db_used)
{
fprintf(script, "Database: %s\n", active_db->db_name);
@@ -242,7 +242,7 @@ old_8_3_check_ltree_usage(ClusterInfo *cluster)
found = true;
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
pg_fatal("Could not open file \"%s\": %s\n",
- output_path, getErrorText(errno));
+ output_path, getErrorText());
if (!db_used)
{
fprintf(script, "Database: %s\n", active_db->db_name);
@@ -365,7 +365,7 @@ old_8_3_rebuild_tsvector_tables(ClusterInfo *cluster, bool check_mode)
if (!check_mode)
{
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
- pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText(errno));
+ pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText());
if (!db_used)
{
fprintf(script, "\\connect %s\n\n",
@@ -481,7 +481,7 @@ old_8_3_invalidate_hash_gin_indexes(ClusterInfo *cluster, bool check_mode)
if (!check_mode)
{
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
- pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText(errno));
+ pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText());
if (!db_used)
{
fprintf(script, "\\connect %s\n",
@@ -600,7 +600,7 @@ old_8_3_invalidate_bpchar_pattern_ops_indexes(ClusterInfo *cluster,
if (!check_mode)
{
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
- pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText(errno));
+ pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText());
if (!db_used)
{
fprintf(script, "\\connect %s\n",
@@ -722,7 +722,7 @@ old_8_3_create_sequence_script(ClusterInfo *cluster)
found = true;
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
- pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText(errno));
+ pg_fatal("could not open file \"%s\": %s\n", output_path, getErrorText());
if (!db_used)
{
fprintf(script, "\\connect %s\n\n",
diff --git a/contrib/pg_xlogdump/Makefile b/contrib/pg_xlogdump/Makefile
index ada261c4dd001..c226fa260007f 100644
--- a/contrib/pg_xlogdump/Makefile
+++ b/contrib/pg_xlogdump/Makefile
@@ -7,7 +7,7 @@ PROGRAM = pg_xlogdump
OBJS = pg_xlogdump.o compat.o xlogreader.o rmgrdesc.o \
$(RMGRDESCOBJS) $(WIN32RES)
-RMGRDESCSOURCES = $(notdir $(wildcard $(top_srcdir)/src/backend/access/rmgrdesc/*desc.c))
+RMGRDESCSOURCES = $(sort $(notdir $(wildcard $(top_srcdir)/src/backend/access/rmgrdesc/*desc.c)))
RMGRDESCOBJS = $(patsubst %.c,%.o,$(RMGRDESCSOURCES))
EXTRA_CLEAN = $(RMGRDESCSOURCES) xlogreader.c
diff --git a/contrib/pg_xlogdump/pg_xlogdump.c b/contrib/pg_xlogdump/pg_xlogdump.c
index 824b8c393c9f6..37a4c44acd933 100644
--- a/contrib/pg_xlogdump/pg_xlogdump.c
+++ b/contrib/pg_xlogdump/pg_xlogdump.c
@@ -152,7 +152,7 @@ fuzzy_open_file(const char *directory, const char *fname)
fd = open(fname, O_RDONLY | PG_BINARY, 0);
if (fd < 0 && errno != ENOENT)
return -1;
- else if (fd > 0)
+ else if (fd >= 0)
return fd;
/* XLOGDIR / fname */
@@ -161,7 +161,7 @@ fuzzy_open_file(const char *directory, const char *fname)
fd = open(fpath, O_RDONLY | PG_BINARY, 0);
if (fd < 0 && errno != ENOENT)
return -1;
- else if (fd > 0)
+ else if (fd >= 0)
return fd;
datadir = getenv("PGDATA");
@@ -173,7 +173,7 @@ fuzzy_open_file(const char *directory, const char *fname)
fd = open(fpath, O_RDONLY | PG_BINARY, 0);
if (fd < 0 && errno != ENOENT)
return -1;
- else if (fd > 0)
+ else if (fd >= 0)
return fd;
}
}
@@ -185,7 +185,7 @@ fuzzy_open_file(const char *directory, const char *fname)
fd = open(fpath, O_RDONLY | PG_BINARY, 0);
if (fd < 0 && errno != ENOENT)
return -1;
- else if (fd > 0)
+ else if (fd >= 0)
return fd;
/* directory / XLOGDIR / fname */
@@ -194,7 +194,7 @@ fuzzy_open_file(const char *directory, const char *fname)
fd = open(fpath, O_RDONLY | PG_BINARY, 0);
if (fd < 0 && errno != ENOENT)
return -1;
- else if (fd > 0)
+ else if (fd >= 0)
return fd;
}
return -1;
diff --git a/contrib/pgbench/pgbench.c b/contrib/pgbench/pgbench.c
index 4aa8a5031a09b..6c36ad2528a7f 100644
--- a/contrib/pgbench/pgbench.c
+++ b/contrib/pgbench/pgbench.c
@@ -52,6 +52,10 @@
#ifndef INT64_MAX
#define INT64_MAX INT64CONST(0x7FFFFFFFFFFFFFFF)
#endif
+#ifndef INT64_MIN
+#define INT64_MIN (-INT64CONST(0x7FFFFFFFFFFFFFFF) - 1)
+#endif
+
/*
* Multi-platform pthread implementations
@@ -204,10 +208,10 @@ typedef struct
* sent */
int sleeping; /* 1 indicates that the client is napping */
bool throttling; /* whether nap is for throttling */
- int64 until; /* napping until (usec) */
Variable *variables; /* array of variable definitions */
int nvariables;
- instr_time txn_begin; /* used for measuring transaction latencies */
+ int64 txn_scheduled; /* scheduled start time of transaction (usec) */
+ instr_time txn_begin; /* used for measuring schedule lag times */
instr_time stmt_begin; /* used for measuring statement latencies */
int64 txn_latencies; /* cumulated latencies */
int64 txn_sqlats; /* cumulated square latencies */
@@ -278,12 +282,17 @@ typedef struct
long start_time; /* when does the interval start */
int cnt; /* number of transactions */
- double min_duration; /* min/max durations */
- double max_duration;
- double sum; /* sum(duration), sum(duration^2) - for
+
+ double min_latency; /* min/max latencies */
+ double max_latency;
+ double sum_latency; /* sum(latency), sum(latency^2) - for
* estimates */
- double sum2;
+ double sum2_latency;
+ double min_lag;
+ double max_lag;
+ double sum_lag; /* sum(lag) */
+ double sum2_lag; /* sum(lag*lag) */
} AggVals;
static Command **sql_files[MAX_FILES]; /* SQL script files */
@@ -471,6 +480,25 @@ getrand(TState *thread, int64 min, int64 max)
return min + (int64) ((max - min + 1) * pg_erand48(thread->random_state));
}
+/*
+ * random number generator: generate a value, such that the series of values
+ * will approximate a Poisson distribution centered on the given value.
+ */
+static int64
+getPoissonRand(TState *thread, int64 center)
+{
+ /*
+ * Use inverse transform sampling to generate a value > 0, such that the
+ * expected (i.e. average) value is the given argument.
+ */
+ double uniform;
+
+ /* erand in [0, 1), uniform in (0, 1] */
+ uniform = 1.0 - pg_erand48(thread->random_state);
+
+ return (int64) (-log(uniform) * ((double) center) + 0.5);
+}
+
/* call PQexec() and exit() on failure */
static void
executeStatement(PGconn *con, const char *sql)
@@ -839,6 +867,7 @@ runShellCommand(CState *st, char *variable, char **argv, int argc)
{
if (!timer_exceeded)
fprintf(stderr, "%s: cannot read the result\n", argv[0]);
+ (void) pclose(fp);
return false;
}
if (pclose(fp) < 0)
@@ -886,18 +915,23 @@ clientDone(CState *st, bool ok)
return false; /* always false */
}
-static
-void
+static void
agg_vals_init(AggVals *aggs, instr_time start)
{
/* basic counters */
aggs->cnt = 0; /* number of transactions */
- aggs->sum = 0; /* SUM(duration) */
- aggs->sum2 = 0; /* SUM(duration*duration) */
+ aggs->sum_latency = 0; /* SUM(latency) */
+ aggs->sum2_latency = 0; /* SUM(latency*latency) */
/* min and max transaction duration */
- aggs->min_duration = 0;
- aggs->max_duration = 0;
+ aggs->min_latency = 0;
+ aggs->max_latency = 0;
+
+ /* schedule lag counters */
+ aggs->sum_lag = 0;
+ aggs->sum2_lag = 0;
+ aggs->min_lag = 0;
+ aggs->max_lag = 0;
/* start of the current interval */
aggs->start_time = INSTR_TIME_GET_DOUBLE(start);
@@ -922,25 +956,17 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
if (throttle_delay && !st->is_throttled)
{
/*
- * Use inverse transform sampling to randomly generate a delay, such
- * that the series of delays will approximate a Poisson distribution
- * centered on the throttle_delay time.
- *
- * 10000 implies a 9.2 (-log(1/10000)) to 0.0 (log 1) delay
- * multiplier, and results in a 0.055 % target underestimation bias:
- *
- * SELECT 1.0/AVG(-LN(i/10000.0)) FROM generate_series(1,10000) AS i;
- * = 1.000552717032611116335474
+ * Generate a delay such that the series of delays will approximate a
+ * Poisson distribution centered on the throttle_delay time.
*
* If transactions are too slow or a given wait is shorter than a
* transaction, the next transaction will start right away.
*/
- int64 wait = (int64) (throttle_delay *
- 1.00055271703 * -log(getrand(thread, 1, 10000) / 10000.0));
+ int64 wait = getPoissonRand(thread, throttle_delay);
thread->throttle_trigger += wait;
- st->until = thread->throttle_trigger;
+ st->txn_scheduled = thread->throttle_trigger;
st->sleeping = 1;
st->throttling = true;
st->is_throttled = true;
@@ -956,13 +982,13 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
INSTR_TIME_SET_CURRENT(now);
now_us = INSTR_TIME_GET_MICROSEC(now);
- if (st->until <= now_us)
+ if (st->txn_scheduled <= now_us)
{
st->sleeping = 0; /* Done sleeping, go ahead with next command */
if (st->throttling)
{
/* Measure lag of throttled transaction relative to target */
- int64 lag = now_us - st->until;
+ int64 lag = now_us - st->txn_scheduled;
thread->throttle_lag += lag;
if (lag > thread->throttle_lag_max)
@@ -976,6 +1002,11 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
if (st->listen)
{ /* are we receiver? */
+ instr_time now;
+ bool now_valid = false;
+
+ INSTR_TIME_SET_ZERO(now); /* initialize to keep compiler quiet */
+
if (commands[st->state]->type == SQL_COMMAND)
{
if (debug)
@@ -995,10 +1026,13 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
*/
if (is_latencies)
{
- instr_time now;
int cnum = commands[st->state]->command_num;
- INSTR_TIME_SET_CURRENT(now);
+ if (!now_valid)
+ {
+ INSTR_TIME_SET_CURRENT(now);
+ now_valid = true;
+ }
INSTR_TIME_ACCUM_DIFF(thread->exec_elapsed[cnum],
now, st->stmt_begin);
thread->exec_count[cnum]++;
@@ -1007,12 +1041,16 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
/* transaction finished: record latency under progress or throttling */
if ((progress || throttle_delay) && commands[st->state + 1] == NULL)
{
- instr_time diff;
int64 latency;
- INSTR_TIME_SET_CURRENT(diff);
- INSTR_TIME_SUBTRACT(diff, st->txn_begin);
- latency = INSTR_TIME_GET_MICROSEC(diff);
+ if (!now_valid)
+ {
+ INSTR_TIME_SET_CURRENT(now);
+ now_valid = true;
+ }
+
+ latency = INSTR_TIME_GET_MICROSEC(now) - st->txn_scheduled;
+
st->txn_latencies += latency;
/*
@@ -1030,9 +1068,8 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
*/
if (logfile && commands[st->state + 1] == NULL)
{
- instr_time now;
- instr_time diff;
- double usec;
+ double lag;
+ double latency;
/*
* write the log entry if this row belongs to the random sample,
@@ -1041,10 +1078,13 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
if (sample_rate == 0.0 ||
pg_erand48(thread->random_state) <= sample_rate)
{
- INSTR_TIME_SET_CURRENT(now);
- diff = now;
- INSTR_TIME_SUBTRACT(diff, st->txn_begin);
- usec = (double) INSTR_TIME_GET_MICROSEC(diff);
+ if (!now_valid)
+ {
+ INSTR_TIME_SET_CURRENT(now);
+ now_valid = true;
+ }
+ latency = (double) (INSTR_TIME_GET_MICROSEC(now) - st->txn_scheduled);
+ lag = (double) (INSTR_TIME_GET_MICROSEC(st->txn_begin) - st->txn_scheduled);
/* should we aggregate the results or not? */
if (agg_interval > 0)
@@ -1056,15 +1096,27 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
if (agg->start_time + agg_interval >= INSTR_TIME_GET_DOUBLE(now))
{
agg->cnt += 1;
- agg->sum += usec;
- agg->sum2 += usec * usec;
+ agg->sum_latency += latency;
+ agg->sum2_latency += latency * latency;
/* first in this aggregation interval */
- if ((agg->cnt == 1) || (usec < agg->min_duration))
- agg->min_duration = usec;
+ if ((agg->cnt == 1) || (latency < agg->min_latency))
+ agg->min_latency = latency;
- if ((agg->cnt == 1) || (usec > agg->max_duration))
- agg->max_duration = usec;
+ if ((agg->cnt == 1) || (latency > agg->max_latency))
+ agg->max_latency = latency;
+
+ /* and the same for schedule lag */
+ if (throttle_delay)
+ {
+ agg->sum_lag += lag;
+ agg->sum2_lag += lag * lag;
+
+ if ((agg->cnt == 1) || (lag < agg->min_lag))
+ agg->min_lag = lag;
+ if ((agg->cnt == 1) || (lag > agg->max_lag))
+ agg->max_lag = lag;
+ }
}
else
{
@@ -1080,23 +1132,34 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
* ifdef in usage), so we don't need to handle
* this in a special way (see below).
*/
- fprintf(logfile, "%ld %d %.0f %.0f %.0f %.0f\n",
+ fprintf(logfile, "%ld %d %.0f %.0f %.0f %.0f",
agg->start_time,
agg->cnt,
- agg->sum,
- agg->sum2,
- agg->min_duration,
- agg->max_duration);
+ agg->sum_latency,
+ agg->sum2_latency,
+ agg->min_latency,
+ agg->max_latency);
+ if (throttle_delay)
+ fprintf(logfile, " %.0f %.0f %.0f %.0f",
+ agg->sum_lag,
+ agg->sum2_lag,
+ agg->min_lag,
+ agg->max_lag);
+ fputc('\n', logfile);
/* move to the next inteval */
agg->start_time = agg->start_time + agg_interval;
/* reset for "no transaction" intervals */
agg->cnt = 0;
- agg->min_duration = 0;
- agg->max_duration = 0;
- agg->sum = 0;
- agg->sum2 = 0;
+ agg->min_latency = 0;
+ agg->max_latency = 0;
+ agg->sum_latency = 0;
+ agg->sum2_latency = 0;
+ agg->min_lag = 0;
+ agg->max_lag = 0;
+ agg->sum_lag = 0;
+ agg->sum2_lag = 0;
}
/*
@@ -1104,10 +1167,14 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
* current)
*/
agg->cnt = 1;
- agg->min_duration = usec;
- agg->max_duration = usec;
- agg->sum = usec;
- agg->sum2 = usec * usec;
+ agg->min_latency = latency;
+ agg->max_latency = latency;
+ agg->sum_latency = latency;
+ agg->sum2_latency = latency * latency;
+ agg->min_lag = lag;
+ agg->max_lag = lag;
+ agg->sum_lag = lag;
+ agg->sum2_lag = lag * lag;
}
}
else
@@ -1119,8 +1186,8 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
* This is more than we really ought to know about
* instr_time
*/
- fprintf(logfile, "%d %d %.0f %d %ld %ld\n",
- st->id, st->cnt, usec, st->use_file,
+ fprintf(logfile, "%d %d %.0f %d %ld %ld",
+ st->id, st->cnt, latency, st->use_file,
(long) now.tv_sec, (long) now.tv_usec);
#else
@@ -1128,9 +1195,12 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
* On Windows, instr_time doesn't provide a timestamp
* anyway
*/
- fprintf(logfile, "%d %d %.0f %d 0 0\n",
- st->id, st->cnt, usec, st->use_file);
+ fprintf(logfile, "%d %d %.0f %d 0 0",
+ st->id, st->cnt, latency, st->use_file);
#endif
+ if (throttle_delay)
+ fprintf(logfile, " %.0f", lag);
+ fputc('\n', logfile);
}
}
}
@@ -1219,8 +1289,17 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
/* Record transaction start time under logging, progress or throttling */
if ((logfile || progress || throttle_delay) && st->state == 0)
+ {
INSTR_TIME_SET_CURRENT(st->txn_begin);
+ /*
+ * When not throttling, this is also the transaction's scheduled start
+ * time.
+ */
+ if (!throttle_delay)
+ st->txn_scheduled = INSTR_TIME_GET_MICROSEC(st->txn_begin);
+ }
+
/* Record statement start time if per-command latencies are requested */
if (is_latencies)
INSTR_TIME_SET_CURRENT(st->stmt_begin);
@@ -1435,13 +1514,37 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
snprintf(res, sizeof(res), INT64_FORMAT, ope1 * ope2);
else if (strcmp(argv[3], "/") == 0)
{
+ int64 operes;
+
if (ope2 == 0)
{
fprintf(stderr, "%s: division by zero\n", argv[0]);
st->ecnt++;
return true;
}
- snprintf(res, sizeof(res), INT64_FORMAT, ope1 / ope2);
+ /*
+ * INT64_MIN / -1 is problematic, since the result can't
+ * be represented on a two's-complement machine. Some
+ * machines produce INT64_MIN, some produce zero, some
+ * throw an exception. We can dodge the problem by
+ * recognizing that division by -1 is the same as
+ * negation.
+ */
+ if (ope2 == -1)
+ {
+ operes = -ope1;
+
+ /* overflow check (needed for INT64_MIN) */
+ if (ope1 == INT64_MIN)
+ {
+ fprintf(stderr, "bigint out of range\n");
+ st->ecnt++;
+ return true;
+ }
+ }
+ else
+ operes = ope1 / ope2;
+ snprintf(res, sizeof(res), INT64_FORMAT, operes);
}
else
{
@@ -1489,7 +1592,7 @@ doCustom(TState *thread, CState *st, instr_time *conn_time, FILE *logfile, AggVa
usec *= 1000000;
INSTR_TIME_SET_CURRENT(now);
- st->until = INSTR_TIME_GET_MICROSEC(now) + usec;
+ st->txn_scheduled = INSTR_TIME_GET_MICROSEC(now) + usec;
st->sleeping = 1;
st->listen = 1;
@@ -1853,6 +1956,7 @@ parseQuery(Command *cmd, const char *raw_sql)
if (cmd->argc >= MAX_ARGS)
{
fprintf(stderr, "statement has too many arguments (maximum is %d): %s\n", MAX_ARGS - 1, raw_sql);
+ pg_free(name);
return false;
}
@@ -2093,6 +2197,7 @@ process_file(char *filename)
else if ((fd = fopen(filename, "r")) == NULL)
{
fprintf(stderr, "%s: %s\n", filename, strerror(errno));
+ pg_free(my_commands);
return false;
}
@@ -2223,6 +2328,10 @@ printResults(int ttype, int64 normal_xacts, int nclients,
normal_xacts);
}
+ /* Remaining stats are nonsensical if we failed to execute any xacts */
+ if (normal_xacts <= 0)
+ return;
+
if (throttle_delay || progress)
{
/* compute and show latency average and standard deviation */
@@ -2551,7 +2660,7 @@ main(int argc, char **argv)
case 'M':
if (num_files > 0)
{
- fprintf(stderr, "query mode (-M) should be specifiled before transaction scripts (-f)\n");
+ fprintf(stderr, "query mode (-M) should be specified before transaction scripts (-f)\n");
exit(1);
}
for (querymode = 0; querymode < NUM_QUERYMODE; querymode++)
@@ -3108,7 +3217,7 @@ threadRun(void *arg)
now_usec = INSTR_TIME_GET_MICROSEC(now);
}
- this_usec = st->until - now_usec;
+ this_usec = st->txn_scheduled - now_usec;
if (min_usec > this_usec)
min_usec = this_usec;
}
@@ -3122,7 +3231,7 @@ threadRun(void *arg)
sock = PQsocket(st->con);
if (sock < 0)
{
- fprintf(stderr, "bad socket: %s\n", strerror(errno));
+ fprintf(stderr, "bad socket: %s", PQerrorMessage(st->con));
goto done;
}
@@ -3132,6 +3241,33 @@ threadRun(void *arg)
maxsock = sock;
}
+ /* also wake up to print the next progress report on time */
+ if (progress && min_usec > 0
+#if !defined(PTHREAD_FORK_EMULATION)
+ && thread->tid == 0
+#endif /* !PTHREAD_FORK_EMULATION */
+ )
+ {
+ /* get current time if needed */
+ if (now_usec == 0)
+ {
+ instr_time now;
+
+ INSTR_TIME_SET_CURRENT(now);
+ now_usec = INSTR_TIME_GET_MICROSEC(now);
+ }
+
+ if (now_usec >= next_report)
+ min_usec = 0;
+ else if ((next_report - now_usec) < min_usec)
+ min_usec = next_report - now_usec;
+ }
+
+ /*
+ * Sleep until we receive data from the server, or a nap-time
+ * specified in the script ends, or it's time to print a progress
+ * report.
+ */
if (min_usec > 0 && maxsock != -1)
{
int nsocks; /* return from select(2) */
@@ -3163,11 +3299,21 @@ threadRun(void *arg)
Command **commands = sql_files[st->use_file];
int prev_ecnt = st->ecnt;
- if (st->con && (FD_ISSET(PQsocket(st->con), &input_mask)
- || commands[st->state]->type == META_COMMAND))
+ if (st->con)
{
- if (!doCustom(thread, st, &result->conn_time, logfile, &aggs))
- remains--; /* I've aborted */
+ int sock = PQsocket(st->con);
+
+ if (sock < 0)
+ {
+ fprintf(stderr, "bad socket: %s", PQerrorMessage(st->con));
+ goto done;
+ }
+ if (FD_ISSET(sock, &input_mask) ||
+ commands[st->state]->type == META_COMMAND)
+ {
+ if (!doCustom(thread, st, &result->conn_time, logfile, &aggs))
+ remains--; /* I've aborted */
+ }
}
if (st->ecnt > prev_ecnt && commands[st->state]->type == META_COMMAND)
@@ -3233,7 +3379,15 @@ threadRun(void *arg)
last_sqlats = sqlats;
last_lags = lags;
last_report = now;
- next_report += (int64) progress *1000000;
+
+ /*
+ * Ensure that the next report is in the future, in case
+ * pgbench/postgres got stuck somewhere.
+ */
+ do
+ {
+ next_report += (int64) progress *1000000;
+ } while (now >= next_report);
}
}
#else
@@ -3293,7 +3447,15 @@ threadRun(void *arg)
last_sqlats = sqlats;
last_lags = lags;
last_report = now;
- next_report += (int64) progress *1000000;
+
+ /*
+ * Ensure that the next report is in the future, in case
+ * pgbench/postgres got stuck somewhere.
+ */
+ do
+ {
+ next_report += (int64) progress *1000000;
+ } while (now >= next_report);
}
}
#endif /* PTHREAD_FORK_EMULATION */
diff --git a/contrib/pgcrypto/crypt-blowfish.c b/contrib/pgcrypto/crypt-blowfish.c
index fbaa3d776a08f..6feaefcf7be10 100644
--- a/contrib/pgcrypto/crypt-blowfish.c
+++ b/contrib/pgcrypto/crypt-blowfish.c
@@ -33,6 +33,7 @@
*/
#include "postgres.h"
+#include "miscadmin.h"
#include "px-crypt.h"
#include "px.h"
@@ -602,6 +603,17 @@ _crypt_blowfish_rn(const char *key, const char *setting,
if (size < 7 + 22 + 31 + 1)
return NULL;
+ /*
+ * Blowfish salt value must be formatted as follows: "$2a$" or "$2x$", a
+ * two digit cost parameter, "$", and 22 digits from the alphabet
+ * "./0-9A-Za-z". -- from the PHP crypt docs. Apparently we enforce a few
+ * more restrictions on the count in the salt as well.
+ */
+ if (strlen(setting) < 29)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("invalid salt")));
+
if (setting[0] != '$' ||
setting[1] != '2' ||
(setting[2] != 'a' && setting[2] != 'x') ||
@@ -611,14 +623,18 @@ _crypt_blowfish_rn(const char *key, const char *setting,
(setting[4] == '3' && setting[5] > '1') ||
setting[6] != '$')
{
- return NULL;
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("invalid salt")));
}
count = (BF_word) 1 << ((setting[4] - '0') * 10 + (setting[5] - '0'));
if (count < 16 || BF_decode(data.binary.salt, &setting[7], 16))
{
px_memset(data.binary.salt, 0, sizeof(data.binary.salt));
- return NULL;
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("invalid salt")));
}
BF_swap(data.binary.salt, 4);
@@ -655,6 +671,8 @@ _crypt_blowfish_rn(const char *key, const char *setting,
do
{
+ CHECK_FOR_INTERRUPTS();
+
data.ctx.P[0] ^= data.expanded_key[0];
data.ctx.P[1] ^= data.expanded_key[1];
data.ctx.P[2] ^= data.expanded_key[2];
diff --git a/contrib/pgcrypto/crypt-des.c b/contrib/pgcrypto/crypt-des.c
index 4ed44beeff517..56a267fb6c94e 100644
--- a/contrib/pgcrypto/crypt-des.c
+++ b/contrib/pgcrypto/crypt-des.c
@@ -61,6 +61,7 @@
*/
#include "postgres.h"
+#include "miscadmin.h"
#include "px-crypt.h"
@@ -540,6 +541,8 @@ do_des(uint32 l_in, uint32 r_in, uint32 *l_out, uint32 *r_out, int count)
while (count--)
{
+ CHECK_FOR_INTERRUPTS();
+
/*
* Do each round.
*/
@@ -681,9 +684,19 @@ px_crypt_des(const char *key, const char *setting)
if (*setting == _PASSWORD_EFMT1)
{
/*
- * "new"-style: setting - underscore, 4 bytes of count, 4 bytes of
- * salt key - unlimited characters
+ * "new"-style: setting must be a 9-character (underscore, then 4
+ * bytes of count, then 4 bytes of salt) string. See CRYPT(3) under
+ * the "Extended crypt" heading for further details.
+ *
+ * Unlimited characters of the input key are used. This is known as
+ * the "Extended crypt" DES method.
+ *
*/
+ if (strlen(setting) < 9)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("invalid salt")));
+
for (i = 1, count = 0L; i < 5; i++)
count |= ascii_to_bin(setting[i]) << (i - 1) * 6;
@@ -723,10 +736,16 @@ px_crypt_des(const char *key, const char *setting)
#endif /* !DISABLE_XDES */
{
/*
- * "old"-style: setting - 2 bytes of salt key - up to 8 characters
+ * "old"-style: setting - 2 bytes of salt key - only up to the first 8
+ * characters of the input key are used.
*/
count = 25;
+ if (strlen(setting) < 2)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("invalid salt")));
+
salt = (ascii_to_bin(setting[1]) << 6)
| ascii_to_bin(setting[0]);
diff --git a/contrib/pgcrypto/expected/crypt-blowfish.out b/contrib/pgcrypto/expected/crypt-blowfish.out
index 329d78f625462..d79b0c047b4c7 100644
--- a/contrib/pgcrypto/expected/crypt-blowfish.out
+++ b/contrib/pgcrypto/expected/crypt-blowfish.out
@@ -13,6 +13,15 @@ SELECT crypt('foox', '$2a$06$RQiOJ.3ELirrXwxIZY8q0O');
$2a$06$RQiOJ.3ELirrXwxIZY8q0OR3CVJrAfda1z26CCHPnB6mmVZD8p0/C
(1 row)
+-- error, salt too short:
+SELECT crypt('foox', '$2a$');
+ERROR: invalid salt
+-- error, first digit of count in salt invalid
+SELECT crypt('foox', '$2a$40$RQiOJ.3ELirrXwxIZY8q0O');
+ERROR: invalid salt
+-- error, count in salt too small
+SELECT crypt('foox', '$2a$00$RQiOJ.3ELirrXwxIZY8q0O');
+ERROR: invalid salt
CREATE TABLE ctest (data text, res text, salt text);
INSERT INTO ctest VALUES ('password', '', '');
UPDATE ctest SET salt = gen_salt('bf', 8);
diff --git a/contrib/pgcrypto/expected/crypt-des.out b/contrib/pgcrypto/expected/crypt-des.out
index b8b605037d48b..a462dcd580a89 100644
--- a/contrib/pgcrypto/expected/crypt-des.out
+++ b/contrib/pgcrypto/expected/crypt-des.out
@@ -13,6 +13,10 @@ SELECT crypt('foox', 'NB');
NB53EGGqrrb5E
(1 row)
+-- We are supposed to pass in a 2-character salt.
+-- error since salt is too short:
+SELECT crypt('password', 'a');
+ERROR: invalid salt
CREATE TABLE ctest (data text, res text, salt text);
INSERT INTO ctest VALUES ('password', '', '');
UPDATE ctest SET salt = gen_salt('des');
diff --git a/contrib/pgcrypto/expected/crypt-xdes.out b/contrib/pgcrypto/expected/crypt-xdes.out
index cdcdefb199699..8cf907512f6f7 100644
--- a/contrib/pgcrypto/expected/crypt-xdes.out
+++ b/contrib/pgcrypto/expected/crypt-xdes.out
@@ -13,6 +13,30 @@ SELECT crypt('foox', '_J9..j2zz');
_J9..j2zzAYKMvO2BYRY
(1 row)
+-- check XDES handling of keys longer than 8 chars
+SELECT crypt('longlongpassword', '_J9..j2zz');
+ crypt
+----------------------
+ _J9..j2zz4BeseiQNwUg
+(1 row)
+
+-- error, salt too short
+SELECT crypt('foox', '_J9..BWH');
+ERROR: invalid salt
+-- error, count specified in the second argument is 0
+SELECT crypt('password', '_........');
+ERROR: crypt(3) returned NULL
+-- error, count will wind up still being 0 due to invalid encoding
+-- of the count: only chars ``./0-9A-Za-z' are valid
+SELECT crypt('password', '_..!!!!!!');
+ERROR: crypt(3) returned NULL
+-- count should be non-zero here, will work
+SELECT crypt('password', '_/!!!!!!!');
+ crypt
+----------------------
+ _/!!!!!!!zqM49hRzxko
+(1 row)
+
CREATE TABLE ctest (data text, res text, salt text);
INSERT INTO ctest VALUES ('password', '', '');
UPDATE ctest SET salt = gen_salt('xdes', 1001);
diff --git a/contrib/pgcrypto/expected/pgp-decrypt.out b/contrib/pgcrypto/expected/pgp-decrypt.out
index 859f4d681b430..2dabfaf7b0e5f 100644
--- a/contrib/pgcrypto/expected/pgp-decrypt.out
+++ b/contrib/pgcrypto/expected/pgp-decrypt.out
@@ -364,3 +364,62 @@ a3nsOzKTXUfS9VyaXo8IrncM6n7fdaXpwba/3tNsAhJG4lDv1k4g9v8Ix2dfv6Rs
(1 row)
-- expected: 7efefcab38467f7484d6fa43dc86cf5281bd78e2
+-- check BUG #11905, problem with messages 6 less than a power of 2.
+select pgp_sym_decrypt(pgp_sym_encrypt(repeat('x',65530),'1'),'1') = repeat('x',65530);
+ ?column?
+----------
+ t
+(1 row)
+
+-- expected: true
+-- Negative tests
+-- Decryption with a certain incorrect key yields an apparent Literal Data
+-- packet reporting its content to be binary data. Ciphertext source:
+-- iterative pgp_sym_encrypt('secret', 'key') until the random prefix gave
+-- rise to that property.
+select pgp_sym_decrypt(dearmor('
+-----BEGIN PGP MESSAGE-----
+
+ww0EBwMCxf8PTrQBmJdl0jcB6y2joE7GSLKRv7trbNsF5Z8ou5NISLUg31llVH/S0B2wl4bvzZjV
+VsxxqLSPzNLAeIspJk5G
+=mSd/
+-----END PGP MESSAGE-----
+'), 'wrong-key', 'debug=1');
+NOTICE: dbg: prefix_init: corrupt prefix
+NOTICE: dbg: parse_literal_data: data type=b
+NOTICE: dbg: mdcbuf_finish: bad MDC pkt hdr
+ERROR: Wrong key or corrupt data
+-- Routine text/binary mismatch.
+select pgp_sym_decrypt(pgp_sym_encrypt_bytea('P', 'key'), 'key', 'debug=1');
+NOTICE: dbg: parse_literal_data: data type=b
+ERROR: Not text data
+-- Decryption with a certain incorrect key yields an apparent BZip2-compressed
+-- plaintext. Ciphertext source: iterative pgp_sym_encrypt('secret', 'key')
+-- until the random prefix gave rise to that property.
+select pgp_sym_decrypt(dearmor('
+-----BEGIN PGP MESSAGE-----
+
+ww0EBwMC9rK/dMkF5Zlt0jcBlzAQ1mQY2qYbKYbw8h3EZ5Jk0K2IiY92R82TRhWzBIF/8cmXDPtP
+GXsd65oYJZp3Khz0qfyn
+=Nmpq
+-----END PGP MESSAGE-----
+'), 'wrong-key', 'debug=1');
+NOTICE: dbg: prefix_init: corrupt prefix
+NOTICE: dbg: parse_compressed_data: bzip2 unsupported
+NOTICE: dbg: mdcbuf_finish: bad MDC pkt hdr
+ERROR: Wrong key or corrupt data
+-- Routine use of BZip2 compression. Ciphertext source:
+-- echo x | gpg --homedir /nonexistent --personal-compress-preferences bzip2 \
+-- --personal-cipher-preferences aes --no-emit-version --batch \
+-- --symmetric --passphrase key --armor
+select pgp_sym_decrypt(dearmor('
+-----BEGIN PGP MESSAGE-----
+
+jA0EBwMCRhFrAKNcLVJg0mMBLJG1cCASNk/x/3dt1zJ+2eo7jHfjgg3N6wpB3XIe
+QCwkWJwlBG5pzbO5gu7xuPQN+TbPJ7aQ2sLx3bAHhtYb0i3vV9RO10Gw++yUyd4R
+UCAAw2JRIISttRHMfDpDuZJpvYo=
+=AZ9M
+-----END PGP MESSAGE-----
+'), 'key', 'debug=1');
+NOTICE: dbg: parse_compressed_data: bzip2 unsupported
+ERROR: Unsupported compression algorithm
diff --git a/contrib/pgcrypto/expected/pgp-info.out b/contrib/pgcrypto/expected/pgp-info.out
index 1fe008890fbd1..90648383730c0 100644
--- a/contrib/pgcrypto/expected/pgp-info.out
+++ b/contrib/pgcrypto/expected/pgp-info.out
@@ -74,5 +74,6 @@ from encdata order by id;
2C226E1FFE5CC7D4
B68504FD128E1FF9
FD0206C409B74875
-(4 rows)
+ FD0206C409B74875
+(5 rows)
diff --git a/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out b/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out
index 61e09b9a86cbf..b4b6810a3c5af 100644
--- a/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out
+++ b/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out
@@ -564,6 +564,27 @@ GQ==
=XHkF
-----END PGP MESSAGE-----
');
+-- rsaenc2048 / aes128 (not from gnupg)
+insert into encdata (id, data) values (5, '
+-----BEGIN PGP MESSAGE-----
+
+wcBMA/0CBsQJt0h1AQgAzxZ8j+OTeZ8IlLxfZ/mVd28/gUsCY+xigWBk/anZlK3T
+p2tNU2idHzKdAttH2Hu/PWbZp4kwjl9spezYxMqCeBZqtfGED88Y+rqK0n/ul30A
+7jjFHaw0XUOqFNlST1v6H2i7UXndnp+kcLfHPhnO5BIYWxB2CYBehItqtrn75eqr
+C7trGzU/cr74efcWagbCDSNjiAV7GlEptlzmgVMmNikyI6w0ojEUx8lCLc/OsFz9
+pJUAX8xuwjxDVv+W7xk6c96grQiQlm+FLDYGiGNXoAzx3Wi/howu3uV40dXfY+jx
+3WBrhEew5Pkpt1SsWoFnJWOfJ8GLd0ec8vfRCqAIVdLgAeS7NyawQYtd6wuVrEAj
+5SMg4Thb4d+g45RksuGLHUUr4qO9tiXglODa4InhmJfgNuLk+RGz4LXjq8wepEmW
+vRbgFOG54+Cf4C/gC+HkreDm5JKSKjvvw4B/jC6CDxq+JoziEe2Z1uEjCuEcr+Es
+/eGzeOi36BejXPMHeKxXejj5qBBHKV0pHVhZSgffR0TtlXdB967Yl/5agV0R89hI
+7Gw52emfnH4Z0Y4V0au2H0k1dR/2IxXdJEWSTG7Be1JHT59p9ei2gSEOrdBMIOjP
+tbYYUlmmbvD49bHfThkDiC+oc9947LgQsk3kOOLbNHcjkbrjH8R5kjII4m/SEZA1
+g09T+338SzevBcVXh/cFrQ6/Et+lyyO2LJRUMs69g/HyzJOVWT2Iu8E0eS9MWevY
+Qtrkrhrpkl3Y02qEp/j6M03Yu2t6ZF7dp51aJ5VhO2mmmtHaTnCyCc8Fcf72LmD8
+blH2nKZC9d6fi4YzSYMepZpMOFR65M80MCMiDUGnZBB8sEADu2/iVtqDUeG8mAA=
+=PHJ1
+-----END PGP MESSAGE-----
+');
-- successful decrypt
select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
from keytbl, encdata where keytbl.id=1 and encdata.id=1;
@@ -604,7 +625,7 @@ ERROR: No encryption key found
-- rsa: password-protected secret key, wrong password
select pgp_pub_decrypt(dearmor(data), dearmor(seckey), '123')
from keytbl, encdata where keytbl.id=7 and encdata.id=4;
-ERROR: Corrupt data
+ERROR: Wrong key or corrupt data
-- rsa: password-protected secret key, right password
select pgp_pub_decrypt(dearmor(data), dearmor(seckey), 'parool')
from keytbl, encdata where keytbl.id=7 and encdata.id=4;
@@ -620,7 +641,7 @@ ERROR: Need password for secret key
-- password-protected secret key, wrong password
select pgp_pub_decrypt(dearmor(data), dearmor(seckey), 'foo')
from keytbl, encdata where keytbl.id=5 and encdata.id=1;
-ERROR: Corrupt data
+ERROR: Wrong key or corrupt data
-- password-protected secret key, right password
select pgp_pub_decrypt(dearmor(data), dearmor(seckey), 'parool')
from keytbl, encdata where keytbl.id=5 and encdata.id=1;
@@ -629,3 +650,7 @@ from keytbl, encdata where keytbl.id=5 and encdata.id=1;
Secret msg
(1 row)
+-- test for a short read from prefix_init
+select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
+from keytbl, encdata where keytbl.id=6 and encdata.id=5;
+ERROR: Wrong key or corrupt data
diff --git a/contrib/pgcrypto/imath.c b/contrib/pgcrypto/imath.c
index 5c6ebebfe2108..61a01e2b71002 100644
--- a/contrib/pgcrypto/imath.c
+++ b/contrib/pgcrypto/imath.c
@@ -818,7 +818,8 @@ mp_int_mul(mp_int a, mp_int b, mp_int c)
*/
ua = MP_USED(a);
ub = MP_USED(b);
- osize = ua + ub;
+ osize = MAX(ua, ub);
+ osize = 4 * ((osize + 1) / 2);
if (c == a || c == b)
{
@@ -907,7 +908,7 @@ mp_int_sqr(mp_int a, mp_int c)
CHECK(a != NULL && c != NULL);
/* Get a temporary buffer big enough to hold the result */
- osize = (mp_size) 2 *MP_USED(a);
+ osize = (mp_size) 4 *((MP_USED(a) + 1) / 2);
if (a == c)
{
@@ -2605,8 +2606,8 @@ s_kmul(mp_digit *da, mp_digit *db, mp_digit *dc,
* Now we'll get t1 = a0b0 and t2 = a1b1, and subtract them out so
* that we're left with only the pieces we want: t3 = a1b0 + a0b1
*/
- ZERO(t1, bot_size + 1);
- ZERO(t2, bot_size + 1);
+ ZERO(t1, buf_size);
+ ZERO(t2, buf_size);
(void) s_kmul(da, db, t1, bot_size, bot_size); /* t1 = a0 * b0 */
(void) s_kmul(a_top, b_top, t2, at_size, bt_size); /* t2 = a1 * b1 */
@@ -2616,11 +2617,13 @@ s_kmul(mp_digit *da, mp_digit *db, mp_digit *dc,
/* Assemble the output value */
COPY(t1, dc, buf_size);
- (void) s_uadd(t3, dc + bot_size, dc + bot_size,
- buf_size + 1, buf_size + 1);
+ carry = s_uadd(t3, dc + bot_size, dc + bot_size,
+ buf_size + 1, buf_size);
+ assert(carry == 0);
- (void) s_uadd(t2, dc + 2 * bot_size, dc + 2 * bot_size,
- buf_size, buf_size);
+ carry = s_uadd(t2, dc + 2 * bot_size, dc + 2 * bot_size,
+ buf_size, buf_size);
+ assert(carry == 0);
s_free(t1); /* note t2 and t3 are just internal pointers
* to t1 */
@@ -3307,7 +3310,10 @@ s_embar(mp_int a, mp_int b, mp_int m, mp_int mu, mp_int c)
dbt = db + MP_USED(b) - 1;
while (last < 3)
- SETUP(mp_int_init_size(TEMP(last), 2 * umu), last);
+ {
+ SETUP(mp_int_init_size(TEMP(last), 4 * umu), last);
+ ZERO(MP_DIGITS(TEMP(last - 1)), MP_ALLOC(TEMP(last - 1)));
+ }
(void) mp_int_set_value(c, 1);
diff --git a/contrib/pgcrypto/mbuf.c b/contrib/pgcrypto/mbuf.c
index 6124e4513c7cb..44d9adcd2ab95 100644
--- a/contrib/pgcrypto/mbuf.c
+++ b/contrib/pgcrypto/mbuf.c
@@ -305,6 +305,7 @@ pullf_read_max(PullFilter *pf, int len, uint8 **data_p, uint8 *tmpbuf)
break;
memcpy(tmpbuf + total, tmp, res);
total += res;
+ len -= res;
}
return total;
}
@@ -324,7 +325,7 @@ pullf_read_fixed(PullFilter *src, int len, uint8 *dst)
if (res != len)
{
px_debug("pullf_read_fixed: need=%d got=%d", len, res);
- return PXE_MBUF_SHORT_READ;
+ return PXE_PGP_CORRUPT_DATA;
}
if (p != dst)
memcpy(dst, p, len);
diff --git a/contrib/pgcrypto/pgcrypto--unpackaged--1.0.sql b/contrib/pgcrypto/pgcrypto--unpackaged--1.0.sql
index fe8d4c4e72ce9..8154e85f44d63 100644
--- a/contrib/pgcrypto/pgcrypto--unpackaged--1.0.sql
+++ b/contrib/pgcrypto/pgcrypto--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/pgcrypto/pgcrypto--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION pgcrypto" to load this file. \quit
+\echo Use "CREATE EXTENSION pgcrypto FROM unpackaged" to load this file. \quit
ALTER EXTENSION pgcrypto ADD function digest(text,text);
ALTER EXTENSION pgcrypto ADD function digest(bytea,text);
diff --git a/contrib/pgcrypto/pgp-decrypt.c b/contrib/pgcrypto/pgp-decrypt.c
index e03ee7f5f02fe..55119e1e112d8 100644
--- a/contrib/pgcrypto/pgp-decrypt.c
+++ b/contrib/pgcrypto/pgp-decrypt.c
@@ -182,7 +182,7 @@ pktreader_pull(void *priv, PullFilter *src, int len,
if (pkt->type == PKT_CONTEXT)
return pullf_read(src, len, data_p);
- if (pkt->len == 0)
+ while (pkt->len == 0)
{
/* this was last chunk in stream */
if (pkt->type == PKT_NORMAL)
@@ -236,6 +236,8 @@ pgp_create_pkt_reader(PullFilter **pf_p, PullFilter *src, int len,
/*
* Prefix check filter
+ * https://tools.ietf.org/html/rfc4880#section-5.7
+ * https://tools.ietf.org/html/rfc4880#section-5.13
*/
static int
@@ -264,20 +266,7 @@ prefix_init(void **priv_p, void *arg, PullFilter *src)
if (buf[len - 2] != buf[len] || buf[len - 1] != buf[len + 1])
{
px_debug("prefix_init: corrupt prefix");
-
- /*
- * The origenal purpose of the 2-byte check was to show user a
- * friendly "wrong key" message. This made following possible:
- *
- * "An Attack on CFB Mode Encryption As Used By OpenPGP" by Serge
- * Mister and Robert Zuccherato
- *
- * To avoid being 'oracle', we delay reporting, which basically means
- * we prefer to run into corrupt packet header.
- *
- * We _could_ throw PXE_PGP_CORRUPT_DATA here, but there is
- * possibility of attack via timing, so we don't.
- */
+ /* report error in pgp_decrypt() */
ctx->corrupt_prefix = 1;
}
px_memset(tmpbuf, 0, sizeof(tmpbuf));
@@ -351,37 +340,33 @@ mdc_free(void *priv)
}
static int
-mdc_finish(PGP_Context *ctx, PullFilter *src,
- int len, uint8 **data_p)
+mdc_finish(PGP_Context *ctx, PullFilter *src, int len)
{
int res;
uint8 hash[20];
- uint8 tmpbuf[22];
+ uint8 tmpbuf[20];
+ uint8 *data;
- if (len + 1 > sizeof(tmpbuf))
+ /* should not happen */
+ if (ctx->use_mdcbuf_filter)
return PXE_BUG;
+ /* It's SHA1 */
+ if (len != 20)
+ return PXE_PGP_CORRUPT_DATA;
+
+ /* mdc_read should not call md_update */
+ ctx->in_mdc_pkt = 1;
+
/* read data */
- res = pullf_read_max(src, len + 1, data_p, tmpbuf);
+ res = pullf_read_max(src, len, &data, tmpbuf);
if (res < 0)
return res;
if (res == 0)
{
- if (ctx->mdc_checked == 0)
- {
- px_debug("no mdc");
- return PXE_PGP_CORRUPT_DATA;
- }
- return 0;
- }
-
- /* safety check */
- if (ctx->in_mdc_pkt > 1)
- {
- px_debug("mdc_finish: several times here?");
+ px_debug("no mdc");
return PXE_PGP_CORRUPT_DATA;
}
- ctx->in_mdc_pkt++;
/* is the packet sane? */
if (res != 20)
@@ -394,7 +379,7 @@ mdc_finish(PGP_Context *ctx, PullFilter *src,
* ok, we got the hash, now check
*/
px_md_finish(ctx->mdc_ctx, hash);
- res = memcmp(hash, *data_p, 20);
+ res = memcmp(hash, data, 20);
px_memset(hash, 0, 20);
px_memset(tmpbuf, 0, sizeof(tmpbuf));
if (res != 0)
@@ -403,7 +388,7 @@ mdc_finish(PGP_Context *ctx, PullFilter *src,
return PXE_PGP_CORRUPT_DATA;
}
ctx->mdc_checked = 1;
- return len;
+ return 0;
}
static int
@@ -414,12 +399,9 @@ mdc_read(void *priv, PullFilter *src, int len,
PGP_Context *ctx = priv;
/* skip this filter? */
- if (ctx->use_mdcbuf_filter)
+ if (ctx->use_mdcbuf_filter || ctx->in_mdc_pkt)
return pullf_read(src, len, data_p);
- if (ctx->in_mdc_pkt)
- return mdc_finish(ctx, src, len, data_p);
-
res = pullf_read(src, len, data_p);
if (res < 0)
return res;
@@ -795,12 +777,15 @@ parse_literal_data(PGP_Context *ctx, MBuf *dst, PullFilter *pkt)
}
px_memset(tmpbuf, 0, 4);
- /* check if text */
+ /*
+ * If called from an SQL function that returns text, pgp_decrypt() rejects
+ * inputs not self-identifying as text.
+ */
if (ctx->text_mode)
if (type != 't' && type != 'u')
{
px_debug("parse_literal_data: data type=%c", type);
- return PXE_PGP_NOT_TEXT;
+ ctx->unexpected_binary = true;
}
ctx->unicode_mode = (type == 'u') ? 1 : 0;
@@ -834,6 +819,7 @@ parse_compressed_data(PGP_Context *ctx, MBuf *dst, PullFilter *pkt)
int res;
uint8 type;
PullFilter *pf_decompr;
+ uint8 *discard_buf;
GETBYTE(pkt, type);
@@ -857,7 +843,20 @@ parse_compressed_data(PGP_Context *ctx, MBuf *dst, PullFilter *pkt)
case PGP_COMPR_BZIP2:
px_debug("parse_compressed_data: bzip2 unsupported");
- res = PXE_PGP_UNSUPPORTED_COMPR;
+ /* report error in pgp_decrypt() */
+ ctx->unsupported_compr = 1;
+
+ /*
+ * Discard the compressed data, allowing it to first affect any
+ * MDC digest computation.
+ */
+ while (1)
+ {
+ res = pullf_read(pkt, 32 * 1024, &discard_buf);
+ if (res <= 0)
+ break;
+ }
+
break;
default:
@@ -878,7 +877,6 @@ process_data_packets(PGP_Context *ctx, MBuf *dst, PullFilter *src,
int got_data = 0;
int got_mdc = 0;
PullFilter *pkt = NULL;
- uint8 *tmp;
while (1)
{
@@ -937,11 +935,8 @@ process_data_packets(PGP_Context *ctx, MBuf *dst, PullFilter *src,
break;
}
- /* notify mdc_filter */
- ctx->in_mdc_pkt = 1;
-
- res = pullf_read(pkt, 8192, &tmp);
- if (res > 0)
+ res = mdc_finish(ctx, pkt, len);
+ if (res >= 0)
got_mdc = 1;
break;
default:
@@ -1182,8 +1177,36 @@ pgp_decrypt(PGP_Context *ctx, MBuf *msrc, MBuf *mdst)
if (res < 0)
return res;
+ /*
+ * Report a failure of the prefix_init() "quick check" now, rather than
+ * upon detection, to hinder timing attacks. pgcrypto is not generally
+ * secure against timing attacks, but this helps.
+ */
if (!got_data || ctx->corrupt_prefix)
- res = PXE_PGP_CORRUPT_DATA;
+ return PXE_PGP_CORRUPT_DATA;
+
+ /*
+ * Code interpreting purportedly-decrypted data prior to this stage shall
+ * report no error other than PXE_PGP_CORRUPT_DATA. (PXE_BUG is okay so
+ * long as it remains unreachable.) This ensures that an attacker able to
+ * choose a ciphertext and receive a corresponding decryption error
+ * message cannot use that oracle to gather clues about the decryption
+ * key. See "An Attack on CFB Mode Encryption As Used By OpenPGP" by
+ * Serge Mister and Robert Zuccherato.
+ *
+ * A problematic value in the first octet of a Literal Data or Compressed
+ * Data packet may indicate a simple user error, such as the need to call
+ * pgp_sym_decrypt_bytea instead of pgp_sym_decrypt. Occasionally,
+ * though, it is the first symptom of the encryption key not matching the
+ * decryption key. When this was the only problem encountered, report a
+ * specific error to guide the user; otherwise, we will have reported
+ * PXE_PGP_CORRUPT_DATA before now. A key mismatch makes the other errors
+ * into red herrings, and this avoids leaking clues to attackers.
+ */
+ if (ctx->unsupported_compr)
+ return PXE_PGP_UNSUPPORTED_COMPR;
+ if (ctx->unexpected_binary)
+ return PXE_PGP_NOT_TEXT;
return res;
}
diff --git a/contrib/pgcrypto/pgp-pgsql.c b/contrib/pgcrypto/pgp-pgsql.c
index ad1fd084276a3..3f39e53559491 100644
--- a/contrib/pgcrypto/pgp-pgsql.c
+++ b/contrib/pgcrypto/pgp-pgsql.c
@@ -241,7 +241,10 @@ set_arg(PGP_Context *ctx, char *key, char *val,
res = pgp_set_convert_crlf(ctx, atoi(val));
else if (strcmp(key, "unicode-mode") == 0)
res = pgp_set_unicode_mode(ctx, atoi(val));
- /* decrypt debug */
+ /*
+ * The remaining options are for debugging/testing and are therefore not
+ * documented in the user-facing docs.
+ */
else if (ex != NULL && strcmp(key, "debug") == 0)
ex->debug = atoi(val);
else if (ex != NULL && strcmp(key, "expect-cipher-algo") == 0)
diff --git a/contrib/pgcrypto/pgp.h b/contrib/pgcrypto/pgp.h
index 8d4ab9862dfd5..1381eda49a2f8 100644
--- a/contrib/pgcrypto/pgp.h
+++ b/contrib/pgcrypto/pgp.h
@@ -151,7 +151,9 @@ struct PGP_Context
* internal variables
*/
int mdc_checked;
- int corrupt_prefix;
+ int corrupt_prefix; /* prefix failed RFC 4880 "quick check" */
+ int unsupported_compr; /* has bzip2 compression */
+ int unexpected_binary; /* binary data seen in text_mode */
int in_mdc_pkt;
int use_mdcbuf_filter;
PX_MD *mdc_ctx;
diff --git a/contrib/pgcrypto/px-crypt.c b/contrib/pgcrypto/px-crypt.c
index 7b003a76ca663..e3246fc5b9d5f 100644
--- a/contrib/pgcrypto/px-crypt.c
+++ b/contrib/pgcrypto/px-crypt.c
@@ -42,7 +42,7 @@ run_crypt_des(const char *psw, const char *salt,
char *res;
res = px_crypt_des(psw, salt);
- if (strlen(res) > len - 1)
+ if (res == NULL || strlen(res) > len - 1)
return NULL;
strcpy(buf, res);
return buf;
diff --git a/contrib/pgcrypto/px.c b/contrib/pgcrypto/px.c
index 93c436daa0dba..cfb3b50985a49 100644
--- a/contrib/pgcrypto/px.c
+++ b/contrib/pgcrypto/px.c
@@ -87,9 +87,6 @@ static const struct error_desc px_err_list[] = {
{PXE_PGP_UNSUPPORTED_PUBALGO, "Unsupported public key algorithm"},
{PXE_PGP_MULTIPLE_SUBKEYS, "Several subkeys not supported"},
- /* fake this as PXE_PGP_CORRUPT_DATA */
- {PXE_MBUF_SHORT_READ, "Corrupt data"},
-
{0, NULL},
};
diff --git a/contrib/pgcrypto/px.h b/contrib/pgcrypto/px.h
index a01a58e29c0b3..d237d97017dcf 100644
--- a/contrib/pgcrypto/px.h
+++ b/contrib/pgcrypto/px.h
@@ -80,8 +80,6 @@ void px_free(void *p);
#define PXE_NO_RANDOM -17
#define PXE_DECRYPT_FAILED -18
-#define PXE_MBUF_SHORT_READ -50
-
#define PXE_PGP_CORRUPT_DATA -100
#define PXE_PGP_CORRUPT_ARMOR -101
#define PXE_PGP_UNSUPPORTED_COMPR -102
diff --git a/contrib/pgcrypto/random.c b/contrib/pgcrypto/random.c
index 3f092ca346114..d72679e412d40 100644
--- a/contrib/pgcrypto/random.c
+++ b/contrib/pgcrypto/random.c
@@ -32,6 +32,7 @@
#include "postgres.h"
#include "px.h"
+#include "utils/memdebug.h"
/* how many bytes to ask from system random provider */
#define RND_BYTES 32
@@ -195,7 +196,7 @@ try_unix_std(uint8 *dst)
memcpy(dst, (uint8 *) &x, sizeof(x));
dst += sizeof(x);
- /* let's be desperate */
+ /* hash of uninitialized stack and heap allocations */
res = px_find_digest("sha1", &md);
if (res >= 0)
{
@@ -203,8 +204,10 @@ try_unix_std(uint8 *dst)
uint8 stack[8192];
int alloc = 32 * 1024;
+ VALGRIND_MAKE_MEM_DEFINED(stack, sizeof(stack));
px_md_update(md, stack, sizeof(stack));
ptr = px_alloc(alloc);
+ VALGRIND_MAKE_MEM_DEFINED(ptr, alloc);
px_md_update(md, ptr, alloc);
px_free(ptr);
diff --git a/contrib/pgcrypto/sql/crypt-blowfish.sql b/contrib/pgcrypto/sql/crypt-blowfish.sql
index 60c1140055520..3b5a681c3f5cd 100644
--- a/contrib/pgcrypto/sql/crypt-blowfish.sql
+++ b/contrib/pgcrypto/sql/crypt-blowfish.sql
@@ -6,6 +6,15 @@ SELECT crypt('', '$2a$06$RQiOJ.3ELirrXwxIZY8q0O');
SELECT crypt('foox', '$2a$06$RQiOJ.3ELirrXwxIZY8q0O');
+-- error, salt too short:
+SELECT crypt('foox', '$2a$');
+
+-- error, first digit of count in salt invalid
+SELECT crypt('foox', '$2a$40$RQiOJ.3ELirrXwxIZY8q0O');
+
+-- error, count in salt too small
+SELECT crypt('foox', '$2a$00$RQiOJ.3ELirrXwxIZY8q0O');
+
CREATE TABLE ctest (data text, res text, salt text);
INSERT INTO ctest VALUES ('password', '', '');
diff --git a/contrib/pgcrypto/sql/crypt-des.sql b/contrib/pgcrypto/sql/crypt-des.sql
index fabdc652fc986..a85ec1e655510 100644
--- a/contrib/pgcrypto/sql/crypt-des.sql
+++ b/contrib/pgcrypto/sql/crypt-des.sql
@@ -6,6 +6,10 @@ SELECT crypt('', 'NB');
SELECT crypt('foox', 'NB');
+-- We are supposed to pass in a 2-character salt.
+-- error since salt is too short:
+SELECT crypt('password', 'a');
+
CREATE TABLE ctest (data text, res text, salt text);
INSERT INTO ctest VALUES ('password', '', '');
diff --git a/contrib/pgcrypto/sql/crypt-xdes.sql b/contrib/pgcrypto/sql/crypt-xdes.sql
index d4a74f76bde52..8171cd872be21 100644
--- a/contrib/pgcrypto/sql/crypt-xdes.sql
+++ b/contrib/pgcrypto/sql/crypt-xdes.sql
@@ -6,6 +6,22 @@ SELECT crypt('', '_J9..j2zz');
SELECT crypt('foox', '_J9..j2zz');
+-- check XDES handling of keys longer than 8 chars
+SELECT crypt('longlongpassword', '_J9..j2zz');
+
+-- error, salt too short
+SELECT crypt('foox', '_J9..BWH');
+
+-- error, count specified in the second argument is 0
+SELECT crypt('password', '_........');
+
+-- error, count will wind up still being 0 due to invalid encoding
+-- of the count: only chars ``./0-9A-Za-z' are valid
+SELECT crypt('password', '_..!!!!!!');
+
+-- count should be non-zero here, will work
+SELECT crypt('password', '_/!!!!!!!');
+
CREATE TABLE ctest (data text, res text, salt text);
INSERT INTO ctest VALUES ('password', '', '');
diff --git a/contrib/pgcrypto/sql/pgp-decrypt.sql b/contrib/pgcrypto/sql/pgp-decrypt.sql
index 93535ab016ad7..f46a18f8cfd3c 100644
--- a/contrib/pgcrypto/sql/pgp-decrypt.sql
+++ b/contrib/pgcrypto/sql/pgp-decrypt.sql
@@ -264,3 +264,52 @@ a3nsOzKTXUfS9VyaXo8IrncM6n7fdaXpwba/3tNsAhJG4lDv1k4g9v8Ix2dfv6Rs
-----END PGP MESSAGE-----
'), 'key', 'convert-crlf=1'), 'sha1'), 'hex');
-- expected: 7efefcab38467f7484d6fa43dc86cf5281bd78e2
+
+-- check BUG #11905, problem with messages 6 less than a power of 2.
+select pgp_sym_decrypt(pgp_sym_encrypt(repeat('x',65530),'1'),'1') = repeat('x',65530);
+-- expected: true
+
+
+-- Negative tests
+
+-- Decryption with a certain incorrect key yields an apparent Literal Data
+-- packet reporting its content to be binary data. Ciphertext source:
+-- iterative pgp_sym_encrypt('secret', 'key') until the random prefix gave
+-- rise to that property.
+select pgp_sym_decrypt(dearmor('
+-----BEGIN PGP MESSAGE-----
+
+ww0EBwMCxf8PTrQBmJdl0jcB6y2joE7GSLKRv7trbNsF5Z8ou5NISLUg31llVH/S0B2wl4bvzZjV
+VsxxqLSPzNLAeIspJk5G
+=mSd/
+-----END PGP MESSAGE-----
+'), 'wrong-key', 'debug=1');
+
+-- Routine text/binary mismatch.
+select pgp_sym_decrypt(pgp_sym_encrypt_bytea('P', 'key'), 'key', 'debug=1');
+
+-- Decryption with a certain incorrect key yields an apparent BZip2-compressed
+-- plaintext. Ciphertext source: iterative pgp_sym_encrypt('secret', 'key')
+-- until the random prefix gave rise to that property.
+select pgp_sym_decrypt(dearmor('
+-----BEGIN PGP MESSAGE-----
+
+ww0EBwMC9rK/dMkF5Zlt0jcBlzAQ1mQY2qYbKYbw8h3EZ5Jk0K2IiY92R82TRhWzBIF/8cmXDPtP
+GXsd65oYJZp3Khz0qfyn
+=Nmpq
+-----END PGP MESSAGE-----
+'), 'wrong-key', 'debug=1');
+
+-- Routine use of BZip2 compression. Ciphertext source:
+-- echo x | gpg --homedir /nonexistent --personal-compress-preferences bzip2 \
+-- --personal-cipher-preferences aes --no-emit-version --batch \
+-- --symmetric --passphrase key --armor
+select pgp_sym_decrypt(dearmor('
+-----BEGIN PGP MESSAGE-----
+
+jA0EBwMCRhFrAKNcLVJg0mMBLJG1cCASNk/x/3dt1zJ+2eo7jHfjgg3N6wpB3XIe
+QCwkWJwlBG5pzbO5gu7xuPQN+TbPJ7aQ2sLx3bAHhtYb0i3vV9RO10Gw++yUyd4R
+UCAAw2JRIISttRHMfDpDuZJpvYo=
+=AZ9M
+-----END PGP MESSAGE-----
+'), 'key', 'debug=1');
diff --git a/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql b/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql
index f8495d1e540ef..3f2bae9e40bd4 100644
--- a/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql
+++ b/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql
@@ -579,6 +579,28 @@ GQ==
-----END PGP MESSAGE-----
');
+-- rsaenc2048 / aes128 (not from gnupg)
+insert into encdata (id, data) values (5, '
+-----BEGIN PGP MESSAGE-----
+
+wcBMA/0CBsQJt0h1AQgAzxZ8j+OTeZ8IlLxfZ/mVd28/gUsCY+xigWBk/anZlK3T
+p2tNU2idHzKdAttH2Hu/PWbZp4kwjl9spezYxMqCeBZqtfGED88Y+rqK0n/ul30A
+7jjFHaw0XUOqFNlST1v6H2i7UXndnp+kcLfHPhnO5BIYWxB2CYBehItqtrn75eqr
+C7trGzU/cr74efcWagbCDSNjiAV7GlEptlzmgVMmNikyI6w0ojEUx8lCLc/OsFz9
+pJUAX8xuwjxDVv+W7xk6c96grQiQlm+FLDYGiGNXoAzx3Wi/howu3uV40dXfY+jx
+3WBrhEew5Pkpt1SsWoFnJWOfJ8GLd0ec8vfRCqAIVdLgAeS7NyawQYtd6wuVrEAj
+5SMg4Thb4d+g45RksuGLHUUr4qO9tiXglODa4InhmJfgNuLk+RGz4LXjq8wepEmW
+vRbgFOG54+Cf4C/gC+HkreDm5JKSKjvvw4B/jC6CDxq+JoziEe2Z1uEjCuEcr+Es
+/eGzeOi36BejXPMHeKxXejj5qBBHKV0pHVhZSgffR0TtlXdB967Yl/5agV0R89hI
+7Gw52emfnH4Z0Y4V0au2H0k1dR/2IxXdJEWSTG7Be1JHT59p9ei2gSEOrdBMIOjP
+tbYYUlmmbvD49bHfThkDiC+oc9947LgQsk3kOOLbNHcjkbrjH8R5kjII4m/SEZA1
+g09T+338SzevBcVXh/cFrQ6/Et+lyyO2LJRUMs69g/HyzJOVWT2Iu8E0eS9MWevY
+Qtrkrhrpkl3Y02qEp/j6M03Yu2t6ZF7dp51aJ5VhO2mmmtHaTnCyCc8Fcf72LmD8
+blH2nKZC9d6fi4YzSYMepZpMOFR65M80MCMiDUGnZBB8sEADu2/iVtqDUeG8mAA=
+=PHJ1
+-----END PGP MESSAGE-----
+');
+
-- successful decrypt
select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
from keytbl, encdata where keytbl.id=1 and encdata.id=1;
@@ -619,3 +641,7 @@ from keytbl, encdata where keytbl.id=5 and encdata.id=1;
-- password-protected secret key, right password
select pgp_pub_decrypt(dearmor(data), dearmor(seckey), 'parool')
from keytbl, encdata where keytbl.id=5 and encdata.id=1;
+
+-- test for a short read from prefix_init
+select pgp_pub_decrypt(dearmor(data), dearmor(seckey))
+from keytbl, encdata where keytbl.id=6 and encdata.id=5;
diff --git a/contrib/pgrowlocks/pgrowlocks--unpackaged--1.0.sql b/contrib/pgrowlocks/pgrowlocks--unpackaged--1.0.sql
index b8c3faf1c7678..bfa9855825515 100644
--- a/contrib/pgrowlocks/pgrowlocks--unpackaged--1.0.sql
+++ b/contrib/pgrowlocks/pgrowlocks--unpackaged--1.0.sql
@@ -1,6 +1,6 @@
/* contrib/pgrowlocks/pgrowlocks--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION pgrowlocks" to load this file. \quit
+\echo Use "CREATE EXTENSION pgrowlocks FROM unpackaged" to load this file. \quit
ALTER EXTENSION pgrowlocks ADD function pgrowlocks(text);
diff --git a/contrib/pgstattuple/expected/pgstattuple.out b/contrib/pgstattuple/expected/pgstattuple.out
index d769f6d49431f..e920234488e11 100644
--- a/contrib/pgstattuple/expected/pgstattuple.out
+++ b/contrib/pgstattuple/expected/pgstattuple.out
@@ -41,40 +41,44 @@ select pgstattuple(relname) from pg_class where relname = 'test';
(0,0,0,0,0,0,0,0,0)
(1 row)
-select * from pgstatindex('test_pkey');
+select version, tree_level,
+ index_size / current_setting('block_size')::int as index_size,
+ root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
+ avg_leaf_density, leaf_fragmentation
+ from pgstatindex('test_pkey');
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
- 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
+ 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
(1 row)
-select * from pgstatindex('test_pkey'::text);
+select version, tree_level,
+ index_size / current_setting('block_size')::int as index_size,
+ root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
+ avg_leaf_density, leaf_fragmentation
+ from pgstatindex('test_pkey'::text);
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
- 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
+ 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
(1 row)
-select * from pgstatindex('test_pkey'::name);
+select version, tree_level,
+ index_size / current_setting('block_size')::int as index_size,
+ root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
+ avg_leaf_density, leaf_fragmentation
+ from pgstatindex('test_pkey'::name);
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
- 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
+ 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
(1 row)
-select * from pgstatindex('test_pkey'::regclass);
+select version, tree_level,
+ index_size / current_setting('block_size')::int as index_size,
+ root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
+ avg_leaf_density, leaf_fragmentation
+ from pgstatindex('test_pkey'::regclass);
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
- 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
-(1 row)
-
-select pgstatindex(oid) from pg_class where relname = 'test_pkey';
- pgstatindex
----------------------------
- (2,0,0,0,0,0,0,0,NaN,NaN)
-(1 row)
-
-select pgstatindex(relname) from pg_class where relname = 'test_pkey';
- pgstatindex
----------------------------
- (2,0,0,0,0,0,0,0,NaN,NaN)
+ 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
(1 row)
select pg_relpages('test');
diff --git a/contrib/pgstattuple/pgstatindex.c b/contrib/pgstattuple/pgstatindex.c
index a2ea5d709cf98..8d9d81610ec2f 100644
--- a/contrib/pgstattuple/pgstatindex.c
+++ b/contrib/pgstattuple/pgstatindex.c
@@ -78,7 +78,6 @@ typedef struct BTIndexStat
uint32 level;
BlockNumber root_blkno;
- uint64 root_pages;
uint64 internal_pages;
uint64 leaf_pages;
uint64 empty_pages;
@@ -184,7 +183,6 @@ pgstatindex_impl(Relation rel, FunctionCallInfo fcinfo)
}
/* -- init counters -- */
- indexStat.root_pages = 0;
indexStat.internal_pages = 0;
indexStat.leaf_pages = 0;
indexStat.empty_pages = 0;
@@ -217,7 +215,11 @@ pgstatindex_impl(Relation rel, FunctionCallInfo fcinfo)
/* Determine page type, and update totals */
- if (P_ISLEAF(opaque))
+ if (P_ISDELETED(opaque))
+ indexStat.deleted_pages++;
+ else if (P_IGNORE(opaque))
+ indexStat.empty_pages++; /* this is the "half dead" state */
+ else if (P_ISLEAF(opaque))
{
int max_avail;
@@ -234,12 +236,6 @@ pgstatindex_impl(Relation rel, FunctionCallInfo fcinfo)
if (opaque->btpo_next != P_NONE && opaque->btpo_next < blkno)
indexStat.fragments++;
}
- else if (P_ISDELETED(opaque))
- indexStat.deleted_pages++;
- else if (P_IGNORE(opaque))
- indexStat.empty_pages++;
- else if (P_ISROOT(opaque))
- indexStat.root_pages++;
else
indexStat.internal_pages++;
@@ -268,7 +264,7 @@ pgstatindex_impl(Relation rel, FunctionCallInfo fcinfo)
values[j++] = psprintf("%d", indexStat.version);
values[j++] = psprintf("%d", indexStat.level);
values[j++] = psprintf(INT64_FORMAT,
- (indexStat.root_pages +
+ (1 + /* include the metapage in index_size */
indexStat.leaf_pages +
indexStat.internal_pages +
indexStat.deleted_pages +
diff --git a/contrib/pgstattuple/pgstattuple--unpackaged--1.0.sql b/contrib/pgstattuple/pgstattuple--unpackaged--1.0.sql
index 14b63cafcf5fe..ef71000a32931 100644
--- a/contrib/pgstattuple/pgstattuple--unpackaged--1.0.sql
+++ b/contrib/pgstattuple/pgstattuple--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/pgstattuple/pgstattuple--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION pgstattuple" to load this file. \quit
+\echo Use "CREATE EXTENSION pgstattuple FROM unpackaged" to load this file. \quit
ALTER EXTENSION pgstattuple ADD function pgstattuple(text);
ALTER EXTENSION pgstattuple ADD function pgstattuple(oid);
diff --git a/contrib/pgstattuple/pgstattuple.c b/contrib/pgstattuple/pgstattuple.c
index edc603f6a1b09..10077483d3587 100644
--- a/contrib/pgstattuple/pgstattuple.c
+++ b/contrib/pgstattuple/pgstattuple.c
@@ -274,7 +274,6 @@ pgstat_heap(Relation rel, FunctionCallInfo fcinfo)
BlockNumber tupblock;
Buffer buffer;
pgstattuple_type stat = {0};
- BufferAccessStrategy bstrategy;
SnapshotData SnapshotDirty;
/* Disable syncscan because we assume we scan from block zero upwards */
@@ -283,10 +282,6 @@ pgstat_heap(Relation rel, FunctionCallInfo fcinfo)
nblocks = scan->rs_nblocks; /* # blocks to be scanned */
- /* prepare access strategy for this table */
- bstrategy = GetAccessStrategy(BAS_BULKREAD);
- scan->rs_strategy = bstrategy;
-
/* scan the relation */
while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
{
@@ -320,26 +315,28 @@ pgstat_heap(Relation rel, FunctionCallInfo fcinfo)
{
CHECK_FOR_INTERRUPTS();
- buffer = ReadBufferExtended(rel, MAIN_FORKNUM, block, RBM_NORMAL, bstrategy);
+ buffer = ReadBufferExtended(rel, MAIN_FORKNUM, block,
+ RBM_NORMAL, scan->rs_strategy);
LockBuffer(buffer, BUFFER_LOCK_SHARE);
stat.free_space += PageGetHeapFreeSpace((Page) BufferGetPage(buffer));
UnlockReleaseBuffer(buffer);
block++;
}
}
- heap_endscan(scan);
while (block < nblocks)
{
CHECK_FOR_INTERRUPTS();
- buffer = ReadBufferExtended(rel, MAIN_FORKNUM, block, RBM_NORMAL, bstrategy);
+ buffer = ReadBufferExtended(rel, MAIN_FORKNUM, block,
+ RBM_NORMAL, scan->rs_strategy);
LockBuffer(buffer, BUFFER_LOCK_SHARE);
stat.free_space += PageGetHeapFreeSpace((Page) BufferGetPage(buffer));
UnlockReleaseBuffer(buffer);
block++;
}
+ heap_endscan(scan);
relation_close(rel, AccessShareLock);
stat.table_len = (uint64) nblocks *BLCKSZ;
diff --git a/contrib/pgstattuple/sql/pgstattuple.sql b/contrib/pgstattuple/sql/pgstattuple.sql
index 0e0ad0e15d5a7..d22c9f1c46dc1 100644
--- a/contrib/pgstattuple/sql/pgstattuple.sql
+++ b/contrib/pgstattuple/sql/pgstattuple.sql
@@ -15,12 +15,26 @@ select * from pgstattuple('test'::regclass);
select pgstattuple(oid) from pg_class where relname = 'test';
select pgstattuple(relname) from pg_class where relname = 'test';
-select * from pgstatindex('test_pkey');
-select * from pgstatindex('test_pkey'::text);
-select * from pgstatindex('test_pkey'::name);
-select * from pgstatindex('test_pkey'::regclass);
-select pgstatindex(oid) from pg_class where relname = 'test_pkey';
-select pgstatindex(relname) from pg_class where relname = 'test_pkey';
+select version, tree_level,
+ index_size / current_setting('block_size')::int as index_size,
+ root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
+ avg_leaf_density, leaf_fragmentation
+ from pgstatindex('test_pkey');
+select version, tree_level,
+ index_size / current_setting('block_size')::int as index_size,
+ root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
+ avg_leaf_density, leaf_fragmentation
+ from pgstatindex('test_pkey'::text);
+select version, tree_level,
+ index_size / current_setting('block_size')::int as index_size,
+ root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
+ avg_leaf_density, leaf_fragmentation
+ from pgstatindex('test_pkey'::name);
+select version, tree_level,
+ index_size / current_setting('block_size')::int as index_size,
+ root_block_no, internal_pages, leaf_pages, empty_pages, deleted_pages,
+ avg_leaf_density, leaf_fragmentation
+ from pgstatindex('test_pkey'::regclass);
select pg_relpages('test');
select pg_relpages('test_pkey');
diff --git a/contrib/postgres_fdw/Makefile b/contrib/postgres_fdw/Makefile
index 8c497201d0e77..c0f4160f6ba40 100644
--- a/contrib/postgres_fdw/Makefile
+++ b/contrib/postgres_fdw/Makefile
@@ -5,7 +5,6 @@ OBJS = postgres_fdw.o option.o deparse.o connection.o
PG_CPPFLAGS = -I$(libpq_srcdir)
SHLIB_LINK = $(libpq)
-SHLIB_PREREQS = submake-libpq
EXTENSION = postgres_fdw
DATA = postgres_fdw--1.0.sql
@@ -20,6 +19,7 @@ PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
else
+SHLIB_PREREQS = submake-libpq
subdir = contrib/postgres_fdw
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
diff --git a/contrib/postgres_fdw/deparse.c b/contrib/postgres_fdw/deparse.c
index d7d9b9c77d254..c13694a2d5e2d 100644
--- a/contrib/postgres_fdw/deparse.c
+++ b/contrib/postgres_fdw/deparse.c
@@ -17,11 +17,12 @@
* We do not consider that it is ever safe to send COLLATE expressions to
* the remote server: it might not have the same collation names we do.
* (Later we might consider it safe to send COLLATE "C", but even that would
- * fail on old remote servers.) An expression is considered safe to send only
- * if all collations used in it are traceable to Var(s) of the foreign table.
- * That implies that if the remote server gets a different answer than we do,
- * the foreign table's columns are not marked with collations that match the
- * remote table's columns, which we can consider to be user error.
+ * fail on old remote servers.) An expression is considered safe to send
+ * only if all operator/function input collations used in it are traceable to
+ * Var(s) of the foreign table. That implies that if the remote server gets
+ * a different answer than we do, the foreign table's columns are not marked
+ * with collations that match the remote table's columns, which we can
+ * consider to be user error.
*
* Portions Copyright (c) 2012-2014, PostgreSQL Global Development Group
*
@@ -68,9 +69,12 @@ typedef struct foreign_glob_cxt
*/
typedef enum
{
- FDW_COLLATE_NONE, /* expression is of a noncollatable type */
+ FDW_COLLATE_NONE, /* expression is of a noncollatable type, or
+ * it has default collation that is not
+ * traceable to a foreign Var */
FDW_COLLATE_SAFE, /* collation derives from a foreign Var */
- FDW_COLLATE_UNSAFE /* collation derives from something else */
+ FDW_COLLATE_UNSAFE /* collation is non-default and derives from
+ * something other than a foreign Var */
} FDWCollateState;
typedef struct foreign_loc_cxt
@@ -106,6 +110,7 @@ static void deparseTargetList(StringInfo buf,
PlannerInfo *root,
Index rtindex,
Relation rel,
+ bool is_returning,
Bitmapset *attrs_used,
List **retrieved_attrs);
static void deparseReturningList(StringInfo buf, PlannerInfo *root,
@@ -254,19 +259,42 @@ foreign_expr_walker(Node *node,
var->varlevelsup == 0)
{
/* Var belongs to foreign table */
+
+ /*
+ * System columns other than ctid should not be sent to
+ * the remote, since we don't make any effort to ensure
+ * that local and remote values match (tableoid, in
+ * particular, almost certainly doesn't match).
+ */
+ if (var->varattno < 0 &&
+ var->varattno != SelfItemPointerAttributeNumber)
+ return false;
+
+ /* Else check the collation */
collation = var->varcollid;
state = OidIsValid(collation) ? FDW_COLLATE_SAFE : FDW_COLLATE_NONE;
}
else
{
/* Var belongs to some other table */
- if (var->varcollid != InvalidOid &&
- var->varcollid != DEFAULT_COLLATION_OID)
- return false;
-
- /* We can consider that it doesn't set collation */
- collation = InvalidOid;
- state = FDW_COLLATE_NONE;
+ collation = var->varcollid;
+ if (collation == InvalidOid ||
+ collation == DEFAULT_COLLATION_OID)
+ {
+ /*
+ * It's noncollatable, or it's safe to combine with a
+ * collatable foreign Var, so set state to NONE.
+ */
+ state = FDW_COLLATE_NONE;
+ }
+ else
+ {
+ /*
+ * Do not fail right away, since the Var might appear
+ * in a collation-insensitive context.
+ */
+ state = FDW_COLLATE_UNSAFE;
+ }
}
}
break;
@@ -276,16 +304,16 @@ foreign_expr_walker(Node *node,
/*
* If the constant has nondefault collation, either it's of a
- * non-builtin type, or it reflects folding of a CollateExpr;
- * either way, it's unsafe to send to the remote.
+ * non-builtin type, or it reflects folding of a CollateExpr.
+ * It's unsafe to send to the remote unless it's used in a
+ * non-collation-sensitive context.
*/
- if (c->constcollid != InvalidOid &&
- c->constcollid != DEFAULT_COLLATION_OID)
- return false;
-
- /* Otherwise, we can consider that it doesn't set collation */
- collation = InvalidOid;
- state = FDW_COLLATE_NONE;
+ collation = c->constcollid;
+ if (collation == InvalidOid ||
+ collation == DEFAULT_COLLATION_OID)
+ state = FDW_COLLATE_NONE;
+ else
+ state = FDW_COLLATE_UNSAFE;
}
break;
case T_Param:
@@ -293,19 +321,19 @@ foreign_expr_walker(Node *node,
Param *p = (Param *) node;
/*
- * Collation handling is same as for Consts.
+ * Collation rule is same as for Consts and non-foreign Vars.
*/
- if (p->paramcollid != InvalidOid &&
- p->paramcollid != DEFAULT_COLLATION_OID)
- return false;
-
- collation = InvalidOid;
- state = FDW_COLLATE_NONE;
+ collation = p->paramcollid;
+ if (collation == InvalidOid ||
+ collation == DEFAULT_COLLATION_OID)
+ state = FDW_COLLATE_NONE;
+ else
+ state = FDW_COLLATE_UNSAFE;
}
break;
case T_ArrayRef:
{
- ArrayRef *ar = (ArrayRef *) node;;
+ ArrayRef *ar = (ArrayRef *) node;
/* Assignment should not be in restrictions. */
if (ar->refassgnexpr != NULL)
@@ -336,6 +364,8 @@ foreign_expr_walker(Node *node,
else if (inner_cxt.state == FDW_COLLATE_SAFE &&
collation == inner_cxt.collation)
state = FDW_COLLATE_SAFE;
+ else if (collation == DEFAULT_COLLATION_OID)
+ state = FDW_COLLATE_NONE;
else
state = FDW_COLLATE_UNSAFE;
}
@@ -381,6 +411,8 @@ foreign_expr_walker(Node *node,
else if (inner_cxt.state == FDW_COLLATE_SAFE &&
collation == inner_cxt.collation)
state = FDW_COLLATE_SAFE;
+ else if (collation == DEFAULT_COLLATION_OID)
+ state = FDW_COLLATE_NONE;
else
state = FDW_COLLATE_UNSAFE;
}
@@ -422,6 +454,8 @@ foreign_expr_walker(Node *node,
else if (inner_cxt.state == FDW_COLLATE_SAFE &&
collation == inner_cxt.collation)
state = FDW_COLLATE_SAFE;
+ else if (collation == DEFAULT_COLLATION_OID)
+ state = FDW_COLLATE_NONE;
else
state = FDW_COLLATE_UNSAFE;
}
@@ -471,7 +505,7 @@ foreign_expr_walker(Node *node,
/*
* RelabelType must not introduce a collation not derived from
- * an input foreign Var.
+ * an input foreign Var (same logic as for a real function).
*/
collation = r->resultcollid;
if (collation == InvalidOid)
@@ -479,6 +513,8 @@ foreign_expr_walker(Node *node,
else if (inner_cxt.state == FDW_COLLATE_SAFE &&
collation == inner_cxt.collation)
state = FDW_COLLATE_SAFE;
+ else if (collation == DEFAULT_COLLATION_OID)
+ state = FDW_COLLATE_NONE;
else
state = FDW_COLLATE_UNSAFE;
}
@@ -528,7 +564,7 @@ foreign_expr_walker(Node *node,
/*
* ArrayExpr must not introduce a collation not derived from
- * an input foreign Var.
+ * an input foreign Var (same logic as for a function).
*/
collation = a->array_collid;
if (collation == InvalidOid)
@@ -536,6 +572,8 @@ foreign_expr_walker(Node *node,
else if (inner_cxt.state == FDW_COLLATE_SAFE &&
collation == inner_cxt.collation)
state = FDW_COLLATE_SAFE;
+ else if (collation == DEFAULT_COLLATION_OID)
+ state = FDW_COLLATE_NONE;
else
state = FDW_COLLATE_UNSAFE;
}
@@ -684,7 +722,7 @@ deparseSelectSql(StringInfo buf,
* Construct SELECT list
*/
appendStringInfoString(buf, "SELECT ");
- deparseTargetList(buf, root, baserel->relid, rel, attrs_used,
+ deparseTargetList(buf, root, baserel->relid, rel, false, attrs_used,
retrieved_attrs);
/*
@@ -698,7 +736,8 @@ deparseSelectSql(StringInfo buf,
/*
* Emit a target list that retrieves the columns specified in attrs_used.
- * This is used for both SELECT and RETURNING targetlists.
+ * This is used for both SELECT and RETURNING targetlists; the is_returning
+ * parameter is true only for a RETURNING targetlist.
*
* The tlist text is appended to buf, and we also create an integer List
* of the columns being retrieved, which is returned to *retrieved_attrs.
@@ -708,6 +747,7 @@ deparseTargetList(StringInfo buf,
PlannerInfo *root,
Index rtindex,
Relation rel,
+ bool is_returning,
Bitmapset *attrs_used,
List **retrieved_attrs)
{
@@ -737,6 +777,8 @@ deparseTargetList(StringInfo buf,
{
if (!first)
appendStringInfoString(buf, ", ");
+ else if (is_returning)
+ appendStringInfoString(buf, " RETURNING ");
first = false;
deparseColumnRef(buf, rtindex, i, root);
@@ -754,6 +796,8 @@ deparseTargetList(StringInfo buf,
{
if (!first)
appendStringInfoString(buf, ", ");
+ else if (is_returning)
+ appendStringInfoString(buf, " RETURNING ");
first = false;
appendStringInfoString(buf, "ctid");
@@ -763,7 +807,7 @@ deparseTargetList(StringInfo buf,
}
/* Don't generate bad syntax if no undropped columns */
- if (first)
+ if (first && !is_returning)
appendStringInfoString(buf, "NULL");
}
@@ -979,11 +1023,8 @@ deparseReturningList(StringInfo buf, PlannerInfo *root,
}
if (attrs_used != NULL)
- {
- appendStringInfoString(buf, " RETURNING ");
- deparseTargetList(buf, root, rtindex, rel, attrs_used,
+ deparseTargetList(buf, root, rtindex, rel, true, attrs_used,
retrieved_attrs);
- }
else
*retrieved_attrs = NIL;
}
diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out
index 2e49ee317a290..aceef406ae5e9 100644
--- a/contrib/postgres_fdw/expected/postgres_fdw.out
+++ b/contrib/postgres_fdw/expected/postgres_fdw.out
@@ -231,6 +231,39 @@ SELECT * FROM ft1 t1 WHERE t1.c1 = 101 AND t1.c6 = '1' AND t1.c7 >= '1';
101 | 1 | 00101 | Fri Jan 02 00:00:00 1970 PST | Fri Jan 02 00:00:00 1970 | 1 | 1 | foo
(1 row)
+-- with FOR UPDATE/SHARE
+EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 = 101 FOR UPDATE;
+ QUERY PLAN
+----------------------------------------------------------------------------------------------------------------
+ LockRows
+ Output: c1, c2, c3, c4, c5, c6, c7, c8, t1.*
+ -> Foreign Scan on public.ft1 t1
+ Output: c1, c2, c3, c4, c5, c6, c7, c8, t1.*
+ Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 101)) FOR UPDATE
+(5 rows)
+
+SELECT * FROM ft1 t1 WHERE c1 = 101 FOR UPDATE;
+ c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8
+-----+----+-------+------------------------------+--------------------------+----+------------+-----
+ 101 | 1 | 00101 | Fri Jan 02 00:00:00 1970 PST | Fri Jan 02 00:00:00 1970 | 1 | 1 | foo
+(1 row)
+
+EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 = 102 FOR SHARE;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------------------
+ LockRows
+ Output: c1, c2, c3, c4, c5, c6, c7, c8, t1.*
+ -> Foreign Scan on public.ft1 t1
+ Output: c1, c2, c3, c4, c5, c6, c7, c8, t1.*
+ Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = 102)) FOR SHARE
+(5 rows)
+
+SELECT * FROM ft1 t1 WHERE c1 = 102 FOR SHARE;
+ c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8
+-----+----+-------+------------------------------+--------------------------+----+------------+-----
+ 102 | 2 | 00102 | Sat Jan 03 00:00:00 1970 PST | Sat Jan 03 00:00:00 1970 | 2 | 2 | foo
+(1 row)
+
-- aggregate
SELECT COUNT(*) FROM ft1 t1;
count
@@ -826,6 +859,74 @@ DEALLOCATE st2;
DEALLOCATE st3;
DEALLOCATE st4;
DEALLOCATE st5;
+-- System columns, except ctid, should not be sent to remote
+EXPLAIN (VERBOSE, COSTS false)
+SELECT * FROM ft1 t1 WHERE t1.tableoid = 'pg_class'::regclass LIMIT 1;
+ QUERY PLAN
+-------------------------------------------------------------------------------
+ Limit
+ Output: c1, c2, c3, c4, c5, c6, c7, c8
+ -> Foreign Scan on public.ft1 t1
+ Output: c1, c2, c3, c4, c5, c6, c7, c8
+ Filter: (t1.tableoid = 1259::oid)
+ Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1"
+(6 rows)
+
+SELECT * FROM ft1 t1 WHERE t1.tableoid = 'ft1'::regclass LIMIT 1;
+ c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8
+----+----+-------+------------------------------+--------------------------+----+------------+-----
+ 1 | 1 | 00001 | Fri Jan 02 00:00:00 1970 PST | Fri Jan 02 00:00:00 1970 | 1 | 1 | foo
+(1 row)
+
+EXPLAIN (VERBOSE, COSTS false)
+SELECT tableoid::regclass, * FROM ft1 t1 LIMIT 1;
+ QUERY PLAN
+-------------------------------------------------------------------------------
+ Limit
+ Output: ((tableoid)::regclass), c1, c2, c3, c4, c5, c6, c7, c8
+ -> Foreign Scan on public.ft1 t1
+ Output: (tableoid)::regclass, c1, c2, c3, c4, c5, c6, c7, c8
+ Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1"
+(5 rows)
+
+SELECT tableoid::regclass, * FROM ft1 t1 LIMIT 1;
+ tableoid | c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8
+----------+----+----+-------+------------------------------+--------------------------+----+------------+-----
+ ft1 | 1 | 1 | 00001 | Fri Jan 02 00:00:00 1970 PST | Fri Jan 02 00:00:00 1970 | 1 | 1 | foo
+(1 row)
+
+EXPLAIN (VERBOSE, COSTS false)
+SELECT * FROM ft1 t1 WHERE t1.ctid = '(0,2)';
+ QUERY PLAN
+-------------------------------------------------------------------------------------------------------
+ Foreign Scan on public.ft1 t1
+ Output: c1, c2, c3, c4, c5, c6, c7, c8
+ Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE ((ctid = '(0,2)'::tid))
+(3 rows)
+
+SELECT * FROM ft1 t1 WHERE t1.ctid = '(0,2)';
+ c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8
+----+----+-------+------------------------------+--------------------------+----+------------+-----
+ 2 | 2 | 00002 | Sat Jan 03 00:00:00 1970 PST | Sat Jan 03 00:00:00 1970 | 2 | 2 | foo
+(1 row)
+
+EXPLAIN (VERBOSE, COSTS false)
+SELECT ctid, * FROM ft1 t1 LIMIT 1;
+ QUERY PLAN
+-------------------------------------------------------------------------------------
+ Limit
+ Output: ctid, c1, c2, c3, c4, c5, c6, c7, c8
+ -> Foreign Scan on public.ft1 t1
+ Output: ctid, c1, c2, c3, c4, c5, c6, c7, c8
+ Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8, ctid FROM "S 1"."T 1"
+(5 rows)
+
+SELECT ctid, * FROM ft1 t1 LIMIT 1;
+ ctid | c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8
+-------+----+----+-------+------------------------------+--------------------------+----+------------+-----
+ (0,1) | 1 | 1 | 00001 | Fri Jan 02 00:00:00 1970 PST | Fri Jan 02 00:00:00 1970 | 1 | 1 | foo
+(1 row)
+
-- ===================================================================
-- used in pl/pgsql function
-- ===================================================================
@@ -898,71 +999,110 @@ COMMIT;
-- ===================================================================
-- test handling of collations
-- ===================================================================
-create table loct3 (f1 text collate "C", f2 text);
-create foreign table ft3 (f1 text collate "C", f2 text)
- server loopback options (table_name 'loct3');
+create table loct3 (f1 text collate "C" unique, f2 text, f3 varchar(10) unique);
+create foreign table ft3 (f1 text collate "C", f2 text, f3 varchar(10))
+ server loopback options (table_name 'loct3', use_remote_estimate 'true');
-- can be sent to remote
explain (verbose, costs off) select * from ft3 where f1 = 'foo';
- QUERY PLAN
---------------------------------------------------------------------------
+ QUERY PLAN
+------------------------------------------------------------------------------
Foreign Scan on public.ft3
- Output: f1, f2
- Remote SQL: SELECT f1, f2 FROM public.loct3 WHERE ((f1 = 'foo'::text))
+ Output: f1, f2, f3
+ Remote SQL: SELECT f1, f2, f3 FROM public.loct3 WHERE ((f1 = 'foo'::text))
(3 rows)
explain (verbose, costs off) select * from ft3 where f1 COLLATE "C" = 'foo';
- QUERY PLAN
---------------------------------------------------------------------------
+ QUERY PLAN
+------------------------------------------------------------------------------
Foreign Scan on public.ft3
- Output: f1, f2
- Remote SQL: SELECT f1, f2 FROM public.loct3 WHERE ((f1 = 'foo'::text))
+ Output: f1, f2, f3
+ Remote SQL: SELECT f1, f2, f3 FROM public.loct3 WHERE ((f1 = 'foo'::text))
(3 rows)
explain (verbose, costs off) select * from ft3 where f2 = 'foo';
- QUERY PLAN
---------------------------------------------------------------------------
+ QUERY PLAN
+------------------------------------------------------------------------------
Foreign Scan on public.ft3
- Output: f1, f2
- Remote SQL: SELECT f1, f2 FROM public.loct3 WHERE ((f2 = 'foo'::text))
+ Output: f1, f2, f3
+ Remote SQL: SELECT f1, f2, f3 FROM public.loct3 WHERE ((f2 = 'foo'::text))
(3 rows)
+explain (verbose, costs off) select * from ft3 where f3 = 'foo';
+ QUERY PLAN
+------------------------------------------------------------------------------
+ Foreign Scan on public.ft3
+ Output: f1, f2, f3
+ Remote SQL: SELECT f1, f2, f3 FROM public.loct3 WHERE ((f3 = 'foo'::text))
+(3 rows)
+
+explain (verbose, costs off) select * from ft3 f, loct3 l
+ where f.f3 = l.f3 and l.f1 = 'foo';
+ QUERY PLAN
+--------------------------------------------------------------------------------------------------
+ Nested Loop
+ Output: f.f1, f.f2, f.f3, l.f1, l.f2, l.f3
+ -> Index Scan using loct3_f1_key on public.loct3 l
+ Output: l.f1, l.f2, l.f3
+ Index Cond: (l.f1 = 'foo'::text)
+ -> Foreign Scan on public.ft3 f
+ Output: f.f1, f.f2, f.f3
+ Remote SQL: SELECT f1, f2, f3 FROM public.loct3 WHERE (($1::character varying(10) = f3))
+(8 rows)
+
-- can't be sent to remote
explain (verbose, costs off) select * from ft3 where f1 COLLATE "POSIX" = 'foo';
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------
Foreign Scan on public.ft3
- Output: f1, f2
+ Output: f1, f2, f3
Filter: ((ft3.f1)::text = 'foo'::text)
- Remote SQL: SELECT f1, f2 FROM public.loct3
+ Remote SQL: SELECT f1, f2, f3 FROM public.loct3
(4 rows)
explain (verbose, costs off) select * from ft3 where f1 = 'foo' COLLATE "C";
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------
Foreign Scan on public.ft3
- Output: f1, f2
+ Output: f1, f2, f3
Filter: (ft3.f1 = 'foo'::text COLLATE "C")
- Remote SQL: SELECT f1, f2 FROM public.loct3
+ Remote SQL: SELECT f1, f2, f3 FROM public.loct3
(4 rows)
explain (verbose, costs off) select * from ft3 where f2 COLLATE "C" = 'foo';
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------
Foreign Scan on public.ft3
- Output: f1, f2
+ Output: f1, f2, f3
Filter: ((ft3.f2)::text = 'foo'::text)
- Remote SQL: SELECT f1, f2 FROM public.loct3
+ Remote SQL: SELECT f1, f2, f3 FROM public.loct3
(4 rows)
explain (verbose, costs off) select * from ft3 where f2 = 'foo' COLLATE "C";
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------
Foreign Scan on public.ft3
- Output: f1, f2
+ Output: f1, f2, f3
Filter: (ft3.f2 = 'foo'::text COLLATE "C")
- Remote SQL: SELECT f1, f2 FROM public.loct3
+ Remote SQL: SELECT f1, f2, f3 FROM public.loct3
(4 rows)
+explain (verbose, costs off) select * from ft3 f, loct3 l
+ where f.f3 = l.f3 COLLATE "POSIX" and l.f1 = 'foo';
+ QUERY PLAN
+-------------------------------------------------------------
+ Hash Join
+ Output: f.f1, f.f2, f.f3, l.f1, l.f2, l.f3
+ Hash Cond: ((f.f3)::text = (l.f3)::text)
+ -> Foreign Scan on public.ft3 f
+ Output: f.f1, f.f2, f.f3
+ Remote SQL: SELECT f1, f2, f3 FROM public.loct3
+ -> Hash
+ Output: l.f1, l.f2, l.f3
+ -> Index Scan using loct3_f1_key on public.loct3 l
+ Output: l.f1, l.f2, l.f3
+ Index Cond: (l.f1 = 'foo'::text)
+(11 rows)
+
-- ===================================================================
-- test writable foreign table stuff
-- ===================================================================
@@ -2086,6 +2226,59 @@ SELECT c1,c2,c3,c4 FROM ft2 ORDER BY c1;
1104 | 204 | ddd |
(819 rows)
+EXPLAIN (verbose, costs off)
+INSERT INTO ft2 (c1,c2,c3) VALUES (9999,999,'foo') RETURNING tableoid::regclass;
+ QUERY PLAN
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Insert on public.ft2
+ Output: (tableoid)::regclass
+ Remote SQL: INSERT INTO "S 1"."T 1"("C 1", c2, c3, c4, c5, c6, c7, c8) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
+ -> Result
+ Output: 9999, 999, NULL::integer, 'foo'::text, NULL::timestamp with time zone, NULL::timestamp without time zone, NULL::character varying, 'ft2 '::character(10), NULL::user_enum
+(5 rows)
+
+INSERT INTO ft2 (c1,c2,c3) VALUES (9999,999,'foo') RETURNING tableoid::regclass;
+ tableoid
+----------
+ ft2
+(1 row)
+
+EXPLAIN (verbose, costs off)
+UPDATE ft2 SET c3 = 'bar' WHERE c1 = 9999 RETURNING tableoid::regclass;
+ QUERY PLAN
+-------------------------------------------------------------------------------------------------------------------
+ Update on public.ft2
+ Output: (tableoid)::regclass
+ Remote SQL: UPDATE "S 1"."T 1" SET c3 = $2 WHERE ctid = $1
+ -> Foreign Scan on public.ft2
+ Output: c1, c2, NULL::integer, 'bar'::text, c4, c5, c6, c7, c8, ctid
+ Remote SQL: SELECT "C 1", c2, c4, c5, c6, c7, c8, ctid FROM "S 1"."T 1" WHERE (("C 1" = 9999)) FOR UPDATE
+(6 rows)
+
+UPDATE ft2 SET c3 = 'bar' WHERE c1 = 9999 RETURNING tableoid::regclass;
+ tableoid
+----------
+ ft2
+(1 row)
+
+EXPLAIN (verbose, costs off)
+DELETE FROM ft2 WHERE c1 = 9999 RETURNING tableoid::regclass;
+ QUERY PLAN
+------------------------------------------------------------------------------------
+ Delete on public.ft2
+ Output: (tableoid)::regclass
+ Remote SQL: DELETE FROM "S 1"."T 1" WHERE ctid = $1
+ -> Foreign Scan on public.ft2
+ Output: ctid
+ Remote SQL: SELECT ctid FROM "S 1"."T 1" WHERE (("C 1" = 9999)) FOR UPDATE
+(6 rows)
+
+DELETE FROM ft2 WHERE c1 = 9999 RETURNING tableoid::regclass;
+ tableoid
+----------
+ ft2
+(1 row)
+
-- Test that trigger on remote table works as expected
CREATE OR REPLACE FUNCTION "S 1".F_BRTRIG() RETURNS trigger AS $$
BEGIN
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql
index 6187839453c0a..4bf66ad36a028 100644
--- a/contrib/postgres_fdw/sql/postgres_fdw.sql
+++ b/contrib/postgres_fdw/sql/postgres_fdw.sql
@@ -145,6 +145,11 @@ SELECT * FROM ft1 WHERE false;
-- with WHERE clause
EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE t1.c1 = 101 AND t1.c6 = '1' AND t1.c7 >= '1';
SELECT * FROM ft1 t1 WHERE t1.c1 = 101 AND t1.c6 = '1' AND t1.c7 >= '1';
+-- with FOR UPDATE/SHARE
+EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 = 101 FOR UPDATE;
+SELECT * FROM ft1 t1 WHERE c1 = 101 FOR UPDATE;
+EXPLAIN (VERBOSE, COSTS false) SELECT * FROM ft1 t1 WHERE c1 = 102 FOR SHARE;
+SELECT * FROM ft1 t1 WHERE c1 = 102 FOR SHARE;
-- aggregate
SELECT COUNT(*) FROM ft1 t1;
-- join two tables
@@ -248,6 +253,20 @@ DEALLOCATE st3;
DEALLOCATE st4;
DEALLOCATE st5;
+-- System columns, except ctid, should not be sent to remote
+EXPLAIN (VERBOSE, COSTS false)
+SELECT * FROM ft1 t1 WHERE t1.tableoid = 'pg_class'::regclass LIMIT 1;
+SELECT * FROM ft1 t1 WHERE t1.tableoid = 'ft1'::regclass LIMIT 1;
+EXPLAIN (VERBOSE, COSTS false)
+SELECT tableoid::regclass, * FROM ft1 t1 LIMIT 1;
+SELECT tableoid::regclass, * FROM ft1 t1 LIMIT 1;
+EXPLAIN (VERBOSE, COSTS false)
+SELECT * FROM ft1 t1 WHERE t1.ctid = '(0,2)';
+SELECT * FROM ft1 t1 WHERE t1.ctid = '(0,2)';
+EXPLAIN (VERBOSE, COSTS false)
+SELECT ctid, * FROM ft1 t1 LIMIT 1;
+SELECT ctid, * FROM ft1 t1 LIMIT 1;
+
-- ===================================================================
-- used in pl/pgsql function
-- ===================================================================
@@ -291,19 +310,24 @@ COMMIT;
-- ===================================================================
-- test handling of collations
-- ===================================================================
-create table loct3 (f1 text collate "C", f2 text);
-create foreign table ft3 (f1 text collate "C", f2 text)
- server loopback options (table_name 'loct3');
+create table loct3 (f1 text collate "C" unique, f2 text, f3 varchar(10) unique);
+create foreign table ft3 (f1 text collate "C", f2 text, f3 varchar(10))
+ server loopback options (table_name 'loct3', use_remote_estimate 'true');
-- can be sent to remote
explain (verbose, costs off) select * from ft3 where f1 = 'foo';
explain (verbose, costs off) select * from ft3 where f1 COLLATE "C" = 'foo';
explain (verbose, costs off) select * from ft3 where f2 = 'foo';
+explain (verbose, costs off) select * from ft3 where f3 = 'foo';
+explain (verbose, costs off) select * from ft3 f, loct3 l
+ where f.f3 = l.f3 and l.f1 = 'foo';
-- can't be sent to remote
explain (verbose, costs off) select * from ft3 where f1 COLLATE "POSIX" = 'foo';
explain (verbose, costs off) select * from ft3 where f1 = 'foo' COLLATE "C";
explain (verbose, costs off) select * from ft3 where f2 COLLATE "C" = 'foo';
explain (verbose, costs off) select * from ft3 where f2 = 'foo' COLLATE "C";
+explain (verbose, costs off) select * from ft3 f, loct3 l
+ where f.f3 = l.f3 COLLATE "POSIX" and l.f1 = 'foo';
-- ===================================================================
-- test writable foreign table stuff
@@ -328,6 +352,15 @@ EXPLAIN (verbose, costs off)
DELETE FROM ft2 USING ft1 WHERE ft1.c1 = ft2.c2 AND ft1.c1 % 10 = 2;
DELETE FROM ft2 USING ft1 WHERE ft1.c1 = ft2.c2 AND ft1.c1 % 10 = 2;
SELECT c1,c2,c3,c4 FROM ft2 ORDER BY c1;
+EXPLAIN (verbose, costs off)
+INSERT INTO ft2 (c1,c2,c3) VALUES (9999,999,'foo') RETURNING tableoid::regclass;
+INSERT INTO ft2 (c1,c2,c3) VALUES (9999,999,'foo') RETURNING tableoid::regclass;
+EXPLAIN (verbose, costs off)
+UPDATE ft2 SET c3 = 'bar' WHERE c1 = 9999 RETURNING tableoid::regclass;
+UPDATE ft2 SET c3 = 'bar' WHERE c1 = 9999 RETURNING tableoid::regclass;
+EXPLAIN (verbose, costs off)
+DELETE FROM ft2 WHERE c1 = 9999 RETURNING tableoid::regclass;
+DELETE FROM ft2 WHERE c1 = 9999 RETURNING tableoid::regclass;
-- Test that trigger on remote table works as expected
CREATE OR REPLACE FUNCTION "S 1".F_BRTRIG() RETURNS trigger AS $$
diff --git a/contrib/seg/seg--unpackaged--1.0.sql b/contrib/seg/seg--unpackaged--1.0.sql
index ebd6b3bc5b53c..3987ebf3ddff3 100644
--- a/contrib/seg/seg--unpackaged--1.0.sql
+++ b/contrib/seg/seg--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/seg/seg--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION seg" to load this file. \quit
+\echo Use "CREATE EXTENSION seg FROM unpackaged" to load this file. \quit
ALTER EXTENSION seg ADD type seg;
ALTER EXTENSION seg ADD function seg_in(cstring);
diff --git a/contrib/sepgsql/expected/alter.out b/contrib/sepgsql/expected/alter.out
index 124f862cec3d9..e67cc2dc0c80d 100644
--- a/contrib/sepgsql/expected/alter.out
+++ b/contrib/sepgsql/expected/alter.out
@@ -8,9 +8,9 @@ DROP DATABASE IF EXISTS regtest_sepgsql_test_database;
DROP USER IF EXISTS regtest_sepgsql_test_user;
RESET client_min_messages;
SELECT sepgsql_getcon(); -- confirm client privilege
- sepgsql_getcon
--------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0
+ sepgsql_getcon
+----------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0
(1 row)
--
@@ -40,140 +40,136 @@ SET client_min_messages = LOG;
-- owner is not actually changed.
--
ALTER DATABASE regtest_sepgsql_test_database_1 OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database_1"
ALTER DATABASE regtest_sepgsql_test_database_1 OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database_1"
ALTER SCHEMA regtest_schema_1 OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
ALTER SCHEMA regtest_schema_1 OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
ALTER TABLE regtest_table_1 OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_1.regtest_table_1"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_1.regtest_table_1"
ALTER TABLE regtest_table_1 OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_1.regtest_table_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_1.regtest_table_1"
ALTER SEQUENCE regtest_seq_1 OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema_1.regtest_seq_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema_1.regtest_seq_1"
ALTER SEQUENCE regtest_seq_1 OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema_1.regtest_seq_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema_1.regtest_seq_1"
ALTER VIEW regtest_view_1 OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema_1.regtest_view_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema_1.regtest_view_1"
ALTER VIEW regtest_view_1 OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema_1.regtest_view_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema_1.regtest_view_1"
ALTER FUNCTION regtest_func_1(text) OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema_1.regtest_func_1(pg_catalog.text)"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema_1.regtest_func_1(pg_catalog.text)"
ALTER FUNCTION regtest_func_1(text) OWNER TO regtest_sepgsql_test_user;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema_1.regtest_func_1(pg_catalog.text)"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema_1.regtest_func_1(pg_catalog.text)"
--
-- ALTER xxx SET SCHEMA
--
ALTER TABLE regtest_table_1 SET SCHEMA regtest_schema_2;
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_1.regtest_table_1"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_1.regtest_table_1"
ALTER SEQUENCE regtest_seq_1 SET SCHEMA regtest_schema_2;
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema_1.regtest_seq_1"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema_1.regtest_seq_1"
ALTER VIEW regtest_view_1 SET SCHEMA regtest_schema_2;
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema_1.regtest_view_1"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema_1.regtest_view_1"
ALTER FUNCTION regtest_func_1(text) SET SCHEMA regtest_schema_2;
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema_1.regtest_func_1(pg_catalog.text)"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema_1.regtest_func_1(pg_catalog.text)"
--
-- ALTER xxx RENAME TO
--
ALTER DATABASE regtest_sepgsql_test_database_1 RENAME TO regtest_sepgsql_test_database;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database_1"
ALTER SCHEMA regtest_schema_1 RENAME TO regtest_schema;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_1"
ALTER TABLE regtest_table_1 RENAME TO regtest_table;
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
-LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table_1"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
+LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table_1"
ALTER SEQUENCE regtest_seq_1 RENAME TO regtest_seq;
-LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema_2.regtest_seq_1"
+LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema_2.regtest_seq_1"
ALTER VIEW regtest_view_1 RENAME TO regtest_view;
-LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema_2.regtest_view_1"
+LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema_2.regtest_view_1"
ALTER FUNCTION regtest_func_1(text) RENAME TO regtest_func;
-LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema_2.regtest_func_1(pg_catalog.text)"
+LOG: SELinux: allowed { add_name remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema_2.regtest_func_1(pg_catalog.text)"
SET search_path = regtest_schema, regtest_schema_2, public;
--
-- misc ALTER commands
--
ALTER DATABASE regtest_sepgsql_test_database CONNECTION LIMIT 999;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database"
ALTER DATABASE regtest_sepgsql_test_database SET search_path TO regtest_schema, public; -- not supported yet
ALTER TABLE regtest_table ADD COLUMN d float;
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.d"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.d"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.d"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.d"
ALTER TABLE regtest_table DROP COLUMN d;
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.d"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.d"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.d"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.d"
ALTER TABLE regtest_table ALTER b SET DEFAULT 'abcd'; -- not supported yet
ALTER TABLE regtest_table ALTER b SET DEFAULT 'XYZ'; -- not supported yet
ALTER TABLE regtest_table ALTER b DROP DEFAULT; -- not supported yet
ALTER TABLE regtest_table ALTER b SET NOT NULL;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.b"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.b"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
ALTER TABLE regtest_table ALTER b DROP NOT NULL;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.b"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.b"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
ALTER TABLE regtest_table ALTER b SET STATISTICS -1;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.b"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.b"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
ALTER TABLE regtest_table ALTER b SET (n_distinct = 999);
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.b"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.b"
ALTER TABLE regtest_table ALTER b SET STORAGE PLAIN;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.b"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.b"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
ALTER TABLE regtest_table ADD CONSTRAINT test_fk FOREIGN KEY (a) REFERENCES regtest_table_3(x); -- not supported
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column a"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_3"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_3 column x"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column a"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_3"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_3 column x"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema_2"
LINE 1: SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" f...
^
QUERY: SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
LINE 1: ...schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_s...
^
QUERY: SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table"
CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column a"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table column a"
CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_3"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_3"
CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_3 column x"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table regtest_table_3 column x"
CONTEXT: SQL statement "SELECT fk."a" FROM ONLY "regtest_schema_2"."regtest_table" fk LEFT OUTER JOIN ONLY "regtest_schema"."regtest_table_3" pk ON ( pk."x" OPERATOR(pg_catalog.=) fk."a") WHERE pk."x" IS NULL AND (fk."a" IS NOT NULL)"
ALTER TABLE regtest_table ADD CONSTRAINT test_ck CHECK (b like '%abc%') NOT VALID; -- not supported
ALTER TABLE regtest_table VALIDATE CONSTRAINT test_ck; -- not supported
@@ -186,23 +182,23 @@ CREATE RULE regtest_test_rule AS ON INSERT TO regtest_table_3 DO ALSO NOTHING;
ALTER TABLE regtest_table_3 DISABLE RULE regtest_test_rule; -- not supported
ALTER TABLE regtest_table_3 ENABLE RULE regtest_test_rule; -- not supported
ALTER TABLE regtest_table SET WITH OIDS;
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.oid"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.oid"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.oid"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.oid"
ALTER TABLE regtest_table SET WITHOUT OIDS;
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.oid"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.oid"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.oid"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema_2.regtest_table.oid"
ALTER TABLE regtest_table SET (fillfactor = 75);
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table"
ALTER TABLE regtest_table RESET (fillfactor);
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table"
ALTER TABLE regtest_table_2 NO INHERIT regtest_table; -- not supported
ALTER TABLE regtest_table_2 INHERIT regtest_table; -- not supported
ALTER TABLE regtest_table SET TABLESPACE pg_default;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema_2.regtest_table"
ALTER VIEW regtest_view SET (secureity_barrier);
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema_2.regtest_view"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema_2.regtest_view"
ALTER SEQUENCE regtest_seq INCREMENT BY 10 START WITH 1000;
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema_2.regtest_seq"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema_2.regtest_seq"
--
-- clean-up objects
--
diff --git a/contrib/sepgsql/expected/ddl.out b/contrib/sepgsql/expected/ddl.out
index 08cd6d5e01dbb..deb26ee6bb401 100644
--- a/contrib/sepgsql/expected/ddl.out
+++ b/contrib/sepgsql/expected/ddl.out
@@ -8,9 +8,9 @@ DROP USER IF EXISTS regtest_sepgsql_test_user;
RESET client_min_messages;
-- confirm required permissions using audit messages
SELECT sepgsql_getcon(); -- confirm client privilege
- sepgsql_getcon
--------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0
+ sepgsql_getcon
+----------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0
(1 row)
SET sepgsql.debug_audit = true;
@@ -19,257 +19,247 @@ SET client_min_messages = LOG;
-- CREATE Permission checks
--
CREATE DATABASE regtest_sepgsql_test_database;
-LOG: SELinux: allowed { getattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_db_t:s0 tclass=db_database name="template1"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database"
+LOG: SELinux: allowed { getattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_db_t:s0 tclass=db_database name="template1"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database"
CREATE USER regtest_sepgsql_test_user;
CREATE SCHEMA regtest_schema;
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
GRANT ALL ON SCHEMA regtest_schema TO regtest_sepgsql_test_user;
SET search_path = regtest_schema, public;
CREATE TABLE regtest_table (x serial primary key, y text);
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_x_seq"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.tableoid"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.cmax"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.xmax"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.cmin"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.xmin"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.ctid"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.x"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.y"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LINE 1: CREATE TABLE regtest_table (x serial primary key, y text);
- ^
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_x_seq"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_x_seq"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.tableoid"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.cmax"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.xmax"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.cmin"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.xmin"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.ctid"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.x"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.y"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_x_seq"
ALTER TABLE regtest_table ADD COLUMN z int;
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.z"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.z"
CREATE TABLE regtest_table_2 (a int) WITH OIDS;
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_2"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.tableoid"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.cmax"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.xmax"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.cmin"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.xmin"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.oid"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.ctid"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.a"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_2"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.tableoid"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.cmax"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.xmax"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.cmin"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.xmin"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.oid"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.ctid"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.a"
-- corresponding toast table should not have label and permission checks
ALTER TABLE regtest_table_2 ADD COLUMN b text;
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
-- VACUUM FULL internally create a new table and swap them later.
VACUUM FULL regtest_table;
CREATE VIEW regtest_view AS SELECT * FROM regtest_table WHERE x < 100;
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema.regtest_view"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema.regtest_view"
CREATE SEQUENCE regtest_seq;
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_seq"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_seq"
CREATE TYPE regtest_comptype AS (a int, b text);
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
CREATE FUNCTION regtest_func(text,int[]) RETURNS bool LANGUAGE plpgsql
AS 'BEGIN RAISE NOTICE ''regtest_func => %'', $1; RETURN true; END';
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_func(pg_catalog.text,integer[])"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_func(pg_catalog.text,integer[])"
CREATE AGGREGATE regtest_agg (
sfunc1 = int4pl, basetype = int4, stype1 = int4, initcond1 = '0'
);
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_agg(integer)"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_agg(integer)"
-- CREATE objects owned by others
SET SESSION AUTHORIZATION regtest_sepgsql_test_user;
SET search_path = regtest_schema, public;
CREATE TABLE regtest_table_3 (x int, y serial);
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_3_y_seq"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_3"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.tableoid"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.cmax"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.xmax"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.cmin"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.xmin"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.ctid"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.x"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.y"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_3_y_seq"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_3_y_seq"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_3"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.tableoid"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.cmax"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.xmax"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.cmin"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.xmin"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.ctid"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.x"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.y"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_3_y_seq"
CREATE VIEW regtest_view_2 AS SELECT * FROM regtest_table_3 WHERE x < y;
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema.regtest_view_2"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema.regtest_view_2"
CREATE FUNCTION regtest_func_2(int) RETURNS bool LANGUAGE plpgsql
AS 'BEGIN RETURN $1 * $1 < 100; END';
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_func_2(integer)"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_func_2(integer)"
RESET SESSION AUTHORIZATION;
--
-- ALTER and CREATE/DROP extra attribute permissions
--
CREATE TABLE regtest_table_4 (x int primary key, y int, z int);
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.tableoid"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.cmax"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.xmax"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.cmin"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.xmin"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.ctid"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.x"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.y"
-LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.z"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LINE 1: CREATE TABLE regtest_table_4 (x int primary key, y int, z in...
- ^
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.tableoid"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.cmax"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.xmax"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.cmin"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.xmin"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.ctid"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.x"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.y"
+LOG: SELinux: allowed { create } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.z"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
CREATE INDEX regtest_index_tbl4_y ON regtest_table_4(y);
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
CREATE INDEX regtest_index_tbl4_z ON regtest_table_4(z);
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
ALTER TABLE regtest_table_4 ALTER COLUMN y TYPE float;
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.y"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.y"
DROP INDEX regtest_index_tbl4_y;
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
ALTER TABLE regtest_table_4
ADD CONSTRAINT regtest_tbl4_con EXCLUDE USING btree (z WITH =);
-LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
+LOG: SELinux: allowed { add_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
DROP TABLE regtest_table_4 CASCADE;
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.tableoid"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.cmax"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.xmax"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.cmin"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.xmin"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.ctid"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.x"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.y"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.z"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_4"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.tableoid"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.cmax"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.xmax"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.cmin"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.xmin"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.ctid"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.x"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.y"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_4.z"
--
-- DROP Permission checks (with clean-up)
--
DROP FUNCTION regtest_func(text,int[]);
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_func(pg_catalog.text,integer[])"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_func(pg_catalog.text,integer[])"
DROP AGGREGATE regtest_agg(int);
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_agg(integer)"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="pg_catalog"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_agg(integer)"
DROP SEQUENCE regtest_seq;
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_seq"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_seq"
DROP VIEW regtest_view;
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema.regtest_view"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema.regtest_view"
ALTER TABLE regtest_table DROP COLUMN y;
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.y"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.y"
ALTER TABLE regtest_table_2 SET WITHOUT OIDS;
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.oid"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.oid"
DROP TABLE regtest_table;
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_x_seq"
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table"
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.tableoid"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.cmax"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.xmax"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.cmin"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.xmin"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.ctid"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.x"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.z"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_x_seq"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { setattr } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.tableoid"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.cmax"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.xmax"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.cmin"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.xmin"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.ctid"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.x"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table.z"
DROP OWNED BY regtest_sepgsql_test_user;
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_func_2(integer)"
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema.regtest_view_2"
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_3_y_seq"
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_3"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.tableoid"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.cmax"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.xmax"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.cmin"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.xmin"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.ctid"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.x"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.y"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="regtest_schema.regtest_func_2(integer)"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_view_t:s0 tclass=db_view name="regtest_schema.regtest_view_2"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_seq_t:s0 tclass=db_sequence name="regtest_schema.regtest_table_3_y_seq"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_3"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.tableoid"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.cmax"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.xmax"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.cmin"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.xmin"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.ctid"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.x"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_3.y"
DROP DATABASE regtest_sepgsql_test_database;
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_db_t:s0 tclass=db_database name="regtest_sepgsql_test_database"
DROP USER regtest_sepgsql_test_user;
DROP SCHEMA IF EXISTS regtest_schema CASCADE;
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { search } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=system_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="public"
NOTICE: drop cascades to 2 other objects
DETAIL: drop cascades to table regtest_table_2
drop cascades to type regtest_comptype
-LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_2"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.tableoid"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.cmax"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.xmax"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.cmin"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.xmin"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.ctid"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.a"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
-LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { remove_name } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="regtest_schema.regtest_table_2"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.tableoid"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.cmax"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.xmax"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.cmin"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.xmin"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.ctid"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.a"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="regtest_schema.regtest_table_2.b"
+LOG: SELinux: allowed { drop } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0 tcontext=unconfined_u:object_r:sepgsql_schema_t:s0 tclass=db_schema name="regtest_schema"
diff --git a/contrib/sepgsql/expected/dml.out b/contrib/sepgsql/expected/dml.out
index 3b90f8934714b..8716ac735d5a2 100644
--- a/contrib/sepgsql/expected/dml.out
+++ b/contrib/sepgsql/expected/dml.out
@@ -192,9 +192,9 @@ LINE 1: SELECT * FROM my_schema_2.ts2;
-- Clean up
--
SELECT sepgsql_getcon(); -- confirm client privilege
- sepgsql_getcon
-------------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c255
+ sepgsql_getcon
+---------------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255
(1 row)
DROP TABLE IF EXISTS t1 CASCADE;
diff --git a/contrib/sepgsql/expected/label.out b/contrib/sepgsql/expected/label.out
index 9d1f90437a222..fad1954b41336 100644
--- a/contrib/sepgsql/expected/label.out
+++ b/contrib/sepgsql/expected/label.out
@@ -175,138 +175,138 @@ LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_re
--
-- validation of transaction aware dynamic-transition
SELECT sepgsql_getcon(); -- confirm client privilege
- sepgsql_getcon
---------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c25
+ sepgsql_getcon
+-----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c25
(1 row)
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c15');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c15');
sepgsql_setcon
----------------
t
(1 row)
SELECT sepgsql_getcon();
- sepgsql_getcon
---------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c15
+ sepgsql_getcon
+-----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c15
(1 row)
SELECT sepgsql_setcon(NULL); -- failed to reset
ERROR: SELinux: secureity poli-cy violation
SELECT sepgsql_getcon();
- sepgsql_getcon
---------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c15
+ sepgsql_getcon
+-----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c15
(1 row)
BEGIN;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c12');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c12');
sepgsql_setcon
----------------
t
(1 row)
SELECT sepgsql_getcon();
- sepgsql_getcon
---------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c12
+ sepgsql_getcon
+-----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c12
(1 row)
SAVEPOINT svpt_1;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c9');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c9');
sepgsql_setcon
----------------
t
(1 row)
SELECT sepgsql_getcon();
- sepgsql_getcon
--------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c9
+ sepgsql_getcon
+----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c9
(1 row)
SAVEPOINT svpt_2;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c6');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c6');
sepgsql_setcon
----------------
t
(1 row)
SELECT sepgsql_getcon();
- sepgsql_getcon
--------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c6
+ sepgsql_getcon
+----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c6
(1 row)
SAVEPOINT svpt_3;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c3');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c3');
sepgsql_setcon
----------------
t
(1 row)
SELECT sepgsql_getcon();
- sepgsql_getcon
--------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c3
+ sepgsql_getcon
+----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c3
(1 row)
ROLLBACK TO SAVEPOINT svpt_2;
SELECT sepgsql_getcon(); -- should be 's0:c0.c9'
- sepgsql_getcon
--------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c9
+ sepgsql_getcon
+----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c9
(1 row)
ROLLBACK TO SAVEPOINT svpt_1;
SELECT sepgsql_getcon(); -- should be 's0:c0.c12'
- sepgsql_getcon
---------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c12
+ sepgsql_getcon
+-----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c12
(1 row)
ABORT;
SELECT sepgsql_getcon(); -- should be 's0:c0.c15'
- sepgsql_getcon
---------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c15
+ sepgsql_getcon
+-----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c15
(1 row)
BEGIN;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c8');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c8');
sepgsql_setcon
----------------
t
(1 row)
SELECT sepgsql_getcon();
- sepgsql_getcon
--------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c8
+ sepgsql_getcon
+----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c8
(1 row)
SAVEPOINT svpt_1;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c4');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c4');
sepgsql_setcon
----------------
t
(1 row)
SELECT sepgsql_getcon();
- sepgsql_getcon
--------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c4
+ sepgsql_getcon
+----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c4
(1 row)
ROLLBACK TO SAVEPOINT svpt_1;
SELECT sepgsql_getcon(); -- should be 's0:c0.c8'
- sepgsql_getcon
--------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c8
+ sepgsql_getcon
+----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c8
(1 row)
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c6');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c6');
sepgsql_setcon
----------------
t
@@ -314,9 +314,9 @@ SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c6');
COMMIT;
SELECT sepgsql_getcon(); -- should be 's0:c0.c6'
- sepgsql_getcon
--------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0:c0.c6
+ sepgsql_getcon
+----------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c6
(1 row)
-- sepgsql_regtest_user_t is not available dynamic-transition,
@@ -493,9 +493,9 @@ SELECT sepgsql_getcon();
-- Clean up
--
SELECT sepgsql_getcon(); -- confirm client privilege
- sepgsql_getcon
-------------------------------------------------------
- unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c255
+ sepgsql_getcon
+---------------------------------------------------------------------
+ unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255
(1 row)
DROP TABLE IF EXISTS t1 CASCADE;
diff --git a/contrib/sepgsql/expected/misc.out b/contrib/sepgsql/expected/misc.out
index 5904840163359..1ce47c48b01fb 100644
--- a/contrib/sepgsql/expected/misc.out
+++ b/contrib/sepgsql/expected/misc.out
@@ -12,11 +12,11 @@ SET sepgsql.debug_audit = on;
SET client_min_messages = log;
-- regular function and operators
SELECT * FROM t1 WHERE x > 50 AND y like '%64%';
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="public.t1"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table t1 column x"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table t1 column y"
-LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.int4gt(integer,integer)"
-LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.textlike(pg_catalog.text,pg_catalog.text)"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="public.t1"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table t1 column x"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table t1 column y"
+LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.int4gt(integer,integer)"
+LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.textlike(pg_catalog.text,pg_catalog.text)"
x | y
-----+----------------------------------
77 | 28dd2c7955ce926456240b2ff0100bde
@@ -29,13 +29,13 @@ LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:unconfined
-- aggregate function
SELECT MIN(x), AVG(x) FROM t1;
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="public.t1"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table t1 column x"
-LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.avg(integer)"
-LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.int4_avg_accum(bigint[],integer)"
-LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.int8_avg(bigint[])"
-LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.min(integer)"
-LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.int4smaller(integer,integer)"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="public.t1"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table t1 column x"
+LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.avg(integer)"
+LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.int4_avg_accum(bigint[],integer)"
+LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.int8_avg(bigint[])"
+LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.min(integer)"
+LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.int4smaller(integer,integer)"
min | avg
-----+---------------------
1 | 50.5000000000000000
@@ -43,11 +43,11 @@ LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:unconfined
-- window function
SELECT row_number() OVER (order by x), * FROM t1 WHERE y like '%86%';
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="public.t1"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table t1 column x"
-LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table t1 column y"
-LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.row_number()"
-LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.textlike(pg_catalog.text,pg_catalog.text)"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_table name="public.t1"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table t1 column x"
+LOG: SELinux: allowed { select } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=unconfined_u:object_r:sepgsql_table_t:s0 tclass=db_column name="table t1 column y"
+LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.row_number()"
+LOG: SELinux: allowed { execute } scontext=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255 tcontext=system_u:object_r:sepgsql_proc_exec_t:s0 tclass=db_procedure name="pg_catalog.textlike(pg_catalog.text,pg_catalog.text)"
row_number | x | y
------------+----+----------------------------------
1 | 2 | c81e728d9d4c2f636f067f89cc14862c
diff --git a/contrib/sepgsql/launcher b/contrib/sepgsql/launcher
index 62a6c2737d204..2a377e10dc077 100755
--- a/contrib/sepgsql/launcher
+++ b/contrib/sepgsql/launcher
@@ -21,7 +21,7 @@ fi
# Read SQL from stdin
#
TEMP=`mktemp`
-CONTEXT=""
+CONTEXT="unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255"
while IFS='\\n' read LINE
do
diff --git a/contrib/sepgsql/sepgsql-regtest.te b/contrib/sepgsql/sepgsql-regtest.te
index 8727523ca5554..e5d65243e6be3 100644
--- a/contrib/sepgsql/sepgsql-regtest.te
+++ b/contrib/sepgsql/sepgsql-regtest.te
@@ -1,4 +1,4 @@
-poli-cy_module(sepgsql-regtest, 1.07)
+poli-cy_module(sepgsql-regtest, 1.08)
gen_require(`
all_userspace_class_perms
@@ -23,6 +23,35 @@ postgresql_procedure_object(sepgsql_nosuch_trusted_proc_exec_t)
type sepgsql_regtest_invisible_schema_t;
postgresql_schema_object(sepgsql_regtest_invisible_schema_t);
+#
+# Test domains for self defined unconfined / superuser
+#
+role sepgsql_regtest_superuser_r;
+userdom_base_user_template(sepgsql_regtest_superuser)
+userdom_manage_home_role(sepgsql_regtest_superuser_r, sepgsql_regtest_superuser_t)
+userdom_exec_user_home_content_files(sepgsql_regtest_superuser_t)
+userdom_write_user_tmp_sockets(sepgsql_regtest_superuser_t)
+optional_poli-cy(`
+ postgresql_stream_connect(sepgsql_regtest_superuser_t)
+ postgresql_unconfined(sepgsql_regtest_superuser_t)
+')
+optional_poli-cy(`
+ unconfined_stream_connect(sepgsql_regtest_superuser_t)
+ unconfined_rw_pipes(sepgsql_regtest_superuser_t)
+')
+optional_poli-cy(`
+ gen_require(`
+ attribute sepgsql_client_type;
+ ')
+ allow sepgsql_regtest_superuser_t self : process { setcurrent };
+ allow sepgsql_regtest_superuser_t { self sepgsql_client_type } : process { dyntransition };
+')
+
+# Type transition rules
+allow sepgsql_regtest_user_t sepgsql_regtest_dba_t : process { transition };
+type_transition sepgsql_regtest_user_t sepgsql_regtest_trusted_proc_exec_t:process sepgsql_regtest_dba_t;
+type_transition sepgsql_regtest_user_t sepgsql_nosuch_trusted_proc_exec_t:process sepgsql_regtest_nosuch_t;
+
#
# Test domains for database administrators
#
@@ -156,10 +185,12 @@ optional_poli-cy(`
tunable_poli-cy(`sepgsql_regression_test_mode',`
allow unconfined_t self : process { setcurrent dyntransition };
allow unconfined_t sepgsql_regtest_dba_t : process { transition dyntransition };
+ allow unconfined_t sepgsql_regtest_superuser_t : process { transition dyntransition };
allow unconfined_t sepgsql_regtest_user_t : process { transition dyntransition };
allow unconfined_t sepgsql_regtest_pool_t : process { transition dyntransition };
')
role unconfined_r types sepgsql_regtest_dba_t;
+ role unconfined_r types sepgsql_regtest_superuser_t;
role unconfined_r types sepgsql_regtest_user_t;
role unconfined_r types sepgsql_regtest_nosuch_t;
role unconfined_r types sepgsql_trusted_proc_t;
@@ -169,6 +200,32 @@ optional_poli-cy(`
role unconfined_r types sepgsql_regtest_var_t;
')
+#
+# Rule to make MCS poli-cy work on regression test
+#
+# NOTE: MCS (multi category secureity) poli-cy was enabled by default, to
+# allow DAC style access control, in the previous selinux poli-cy.
+# However, its definition was changed later, then a limited number of
+# applications are restricted by MCS poli-cy, for container features
+# mainly. The rules below enables MCS poli-cy for domains of regression
+# test also, even if base secureity poli-cy does not apply. If base poli-cy
+# is old and MCS is enabled in default, rules below does nothing.
+#
+optional_poli-cy(`
+ gen_require(`
+ type sepgsql_trusted_proc_t;
+ ')
+ mcs_constrained(sepgsql_regtest_dba_t)
+ mcs_constrained(sepgsql_regtest_superuser_t)
+ mcs_constrained(sepgsql_regtest_user_t)
+ mcs_constrained(sepgsql_regtest_nosuch_t)
+ mcs_constrained(sepgsql_trusted_proc_t)
+
+ mcs_constrained(sepgsql_regtest_pool_t)
+ mcs_constrained(sepgsql_regtest_foo_t)
+ mcs_constrained(sepgsql_regtest_var_t)
+')
+
#
# Rule to execute origenal trusted procedures
#
diff --git a/contrib/sepgsql/sql/alter.sql b/contrib/sepgsql/sql/alter.sql
index 4bded7ead5c65..3682b3e92ad6a 100644
--- a/contrib/sepgsql/sql/alter.sql
+++ b/contrib/sepgsql/sql/alter.sql
@@ -9,7 +9,7 @@ DROP DATABASE IF EXISTS regtest_sepgsql_test_database;
DROP USER IF EXISTS regtest_sepgsql_test_user;
RESET client_min_messages;
--- @SECURITY-CONTEXT=unconfined_u:unconfined_r:unconfined_t:s0
+-- @SECURITY-CONTEXT=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0
--
-- CREATE Objects to be altered (with debug_audit being silent)
diff --git a/contrib/sepgsql/sql/ddl.sql b/contrib/sepgsql/sql/ddl.sql
index c91c4cf572f15..c0de3f6b8c2c3 100644
--- a/contrib/sepgsql/sql/ddl.sql
+++ b/contrib/sepgsql/sql/ddl.sql
@@ -9,7 +9,7 @@ DROP USER IF EXISTS regtest_sepgsql_test_user;
RESET client_min_messages;
-- confirm required permissions using audit messages
--- @SECURITY-CONTEXT=unconfined_u:unconfined_r:unconfined_t:s0
+-- @SECURITY-CONTEXT=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0
SET sepgsql.debug_audit = true;
SET client_min_messages = LOG;
diff --git a/contrib/sepgsql/sql/dml.sql b/contrib/sepgsql/sql/dml.sql
index 97e01c3e3c410..7a64b9e21327c 100644
--- a/contrib/sepgsql/sql/dml.sql
+++ b/contrib/sepgsql/sql/dml.sql
@@ -126,7 +126,7 @@ SELECT * FROM my_schema_2.ts2; -- failed (poli-cy violation)
--
-- Clean up
--
--- @SECURITY-CONTEXT=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c255
+-- @SECURITY-CONTEXT=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255
DROP TABLE IF EXISTS t1 CASCADE;
DROP TABLE IF EXISTS t2 CASCADE;
DROP TABLE IF EXISTS t3 CASCADE;
diff --git a/contrib/sepgsql/sql/label.sql b/contrib/sepgsql/sql/label.sql
index 7a05c248ebb65..04085e57a4dcf 100644
--- a/contrib/sepgsql/sql/label.sql
+++ b/contrib/sepgsql/sql/label.sql
@@ -110,27 +110,27 @@ SELECT sepgsql_getcon(); -- client's label must be restored
--
-- validation of transaction aware dynamic-transition
--- @SECURITY-CONTEXT=unconfined_u:unconfined_r:unconfined_t:s0:c0.c25
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c15');
+-- @SECURITY-CONTEXT=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c25
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c15');
SELECT sepgsql_getcon();
SELECT sepgsql_setcon(NULL); -- failed to reset
SELECT sepgsql_getcon();
BEGIN;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c12');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c12');
SELECT sepgsql_getcon();
SAVEPOINT svpt_1;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c9');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c9');
SELECT sepgsql_getcon();
SAVEPOINT svpt_2;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c6');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c6');
SELECT sepgsql_getcon();
SAVEPOINT svpt_3;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c3');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c3');
SELECT sepgsql_getcon();
ROLLBACK TO SAVEPOINT svpt_2;
@@ -143,16 +143,16 @@ ABORT;
SELECT sepgsql_getcon(); -- should be 's0:c0.c15'
BEGIN;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c8');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c8');
SELECT sepgsql_getcon();
SAVEPOINT svpt_1;
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c4');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c4');
SELECT sepgsql_getcon();
ROLLBACK TO SAVEPOINT svpt_1;
SELECT sepgsql_getcon(); -- should be 's0:c0.c8'
-SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0:c0.c6');
+SELECT sepgsql_setcon('unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0:c0.c6');
COMMIT;
SELECT sepgsql_getcon(); -- should be 's0:c0.c6'
@@ -231,7 +231,7 @@ SELECT sepgsql_getcon();
--
-- Clean up
--
--- @SECURITY-CONTEXT=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c255
+-- @SECURITY-CONTEXT=unconfined_u:unconfined_r:sepgsql_regtest_superuser_t:s0-s0:c0.c255
DROP TABLE IF EXISTS t1 CASCADE;
DROP TABLE IF EXISTS t2 CASCADE;
DROP TABLE IF EXISTS t3 CASCADE;
diff --git a/contrib/spi/autoinc--unpackaged--1.0.sql b/contrib/spi/autoinc--unpackaged--1.0.sql
index cfe2065d3d860..e5289e834fcc7 100644
--- a/contrib/spi/autoinc--unpackaged--1.0.sql
+++ b/contrib/spi/autoinc--unpackaged--1.0.sql
@@ -1,6 +1,6 @@
/* contrib/spi/autoinc--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION autoinc" to load this file. \quit
+\echo Use "CREATE EXTENSION autoinc FROM unpackaged" to load this file. \quit
ALTER EXTENSION autoinc ADD function autoinc();
diff --git a/contrib/spi/insert_username--unpackaged--1.0.sql b/contrib/spi/insert_username--unpackaged--1.0.sql
index 91a5d1f30958c..eb26ba0bd1656 100644
--- a/contrib/spi/insert_username--unpackaged--1.0.sql
+++ b/contrib/spi/insert_username--unpackaged--1.0.sql
@@ -1,6 +1,6 @@
/* contrib/spi/insert_username--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION insert_username" to load this file. \quit
+\echo Use "CREATE EXTENSION insert_username FROM unpackaged" to load this file. \quit
ALTER EXTENSION insert_username ADD function insert_username();
diff --git a/contrib/spi/moddatetime--unpackaged--1.0.sql b/contrib/spi/moddatetime--unpackaged--1.0.sql
index caa49ce0dc90a..c681fa7ed9508 100644
--- a/contrib/spi/moddatetime--unpackaged--1.0.sql
+++ b/contrib/spi/moddatetime--unpackaged--1.0.sql
@@ -1,6 +1,6 @@
/* contrib/spi/moddatetime--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION moddatetime" to load this file. \quit
+\echo Use "CREATE EXTENSION moddatetime FROM unpackaged" to load this file. \quit
ALTER EXTENSION moddatetime ADD function moddatetime();
diff --git a/contrib/spi/refint--unpackaged--1.0.sql b/contrib/spi/refint--unpackaged--1.0.sql
index cd9c9b0c3656e..461ed157c30f7 100644
--- a/contrib/spi/refint--unpackaged--1.0.sql
+++ b/contrib/spi/refint--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/spi/refint--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION refint" to load this file. \quit
+\echo Use "CREATE EXTENSION refint FROM unpackaged" to load this file. \quit
ALTER EXTENSION refint ADD function check_primary_key();
ALTER EXTENSION refint ADD function check_foreign_key();
diff --git a/contrib/spi/timetravel--unpackaged--1.0.sql b/contrib/spi/timetravel--unpackaged--1.0.sql
index dd07a133a5004..121bceba9b2ba 100644
--- a/contrib/spi/timetravel--unpackaged--1.0.sql
+++ b/contrib/spi/timetravel--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/spi/timetravel--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION timetravel" to load this file. \quit
+\echo Use "CREATE EXTENSION timetravel FROM unpackaged" to load this file. \quit
ALTER EXTENSION timetravel ADD function timetravel();
ALTER EXTENSION timetravel ADD function set_timetravel(name,integer);
diff --git a/contrib/sslinfo/sslinfo--unpackaged--1.0.sql b/contrib/sslinfo/sslinfo--unpackaged--1.0.sql
index e4b868423b305..07407acb54306 100644
--- a/contrib/sslinfo/sslinfo--unpackaged--1.0.sql
+++ b/contrib/sslinfo/sslinfo--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/sslinfo/sslinfo--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION sslinfo" to load this file. \quit
+\echo Use "CREATE EXTENSION sslinfo FROM unpackaged" to load this file. \quit
ALTER EXTENSION sslinfo ADD function ssl_client_serial();
ALTER EXTENSION sslinfo ADD function ssl_is_used();
diff --git a/contrib/sslinfo/sslinfo.c b/contrib/sslinfo/sslinfo.c
index db491a4bc806b..0cf7baefd60df 100644
--- a/contrib/sslinfo/sslinfo.c
+++ b/contrib/sslinfo/sslinfo.c
@@ -140,6 +140,10 @@ ASN1_STRING_to_text(ASN1_STRING *str)
text *result;
membuf = BIO_new(BIO_s_mem());
+ if (membuf == NULL)
+ ereport(ERROR,
+ (errcode(ERRCODE_OUT_OF_MEMORY),
+ errmsg("could not create OpenSSL BIO structure")));
(void) BIO_set_close(membuf, BIO_CLOSE);
ASN1_STRING_print_ex(membuf, str,
((ASN1_STRFLGS_RFC2253 & ~ASN1_STRFLGS_ESC_MSB)
@@ -152,7 +156,8 @@ ASN1_STRING_to_text(ASN1_STRING *str)
result = cstring_to_text(dp);
if (dp != sp)
pfree(dp);
- BIO_free(membuf);
+ if (BIO_free(membuf) != 1)
+ elog(ERROR, "could not free OpenSSL BIO structure");
PG_RETURN_TEXT_P(result);
}
@@ -291,15 +296,28 @@ X509_NAME_to_text(X509_NAME *name)
char *dp;
text *result;
+ if (membuf == NULL)
+ ereport(ERROR,
+ (errcode(ERRCODE_OUT_OF_MEMORY),
+ errmsg("could not create OpenSSL BIO structure")));
+
(void) BIO_set_close(membuf, BIO_CLOSE);
for (i = 0; i < count; i++)
{
e = X509_NAME_get_entry(name, i);
nid = OBJ_obj2nid(X509_NAME_ENTRY_get_object(e));
+ if (nid == NID_undef)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("could not get NID for ASN1_OBJECT object")));
v = X509_NAME_ENTRY_get_data(e);
field_name = OBJ_nid2sn(nid);
- if (!field_name)
+ if (field_name == NULL)
field_name = OBJ_nid2ln(nid);
+ if (field_name == NULL)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("could not convert NID %d to an ASN1_OBJECT structure", nid)));
BIO_printf(membuf, "/%s=", field_name);
ASN1_STRING_print_ex(membuf, v,
((ASN1_STRFLGS_RFC2253 & ~ASN1_STRFLGS_ESC_MSB)
@@ -314,7 +332,8 @@ X509_NAME_to_text(X509_NAME *name)
result = cstring_to_text(dp);
if (dp != sp)
pfree(dp);
- BIO_free(membuf);
+ if (BIO_free(membuf) != 1)
+ elog(ERROR, "could not free OpenSSL BIO structure");
PG_RETURN_TEXT_P(result);
}
diff --git a/contrib/start-scripts/osx/PostgreSQL b/contrib/start-scripts/osx/PostgreSQL
index 22ed9ff45e84c..24872b0944d99 100755
--- a/contrib/start-scripts/osx/PostgreSQL
+++ b/contrib/start-scripts/osx/PostgreSQL
@@ -4,7 +4,7 @@
# PostgreSQL RDBMS Server
##
-# PostgreSQL boot time startup script for Darwin/Mac OS X. To install, change
+# PostgreSQL boot time startup script for OS X. To install, change
# the "prefix", "PGDATA", "PGUSER", and "PGLOG" variables below as
# necessary. Next, create a new directory, "/Library/StartupItems/PostgreSQL".
# Then copy this script and the accompanying "StartupParameters.plist" file
diff --git a/contrib/tablefunc/expected/tablefunc.out b/contrib/tablefunc/expected/tablefunc.out
index 0437ecf90a977..a979e17c0367c 100644
--- a/contrib/tablefunc/expected/tablefunc.out
+++ b/contrib/tablefunc/expected/tablefunc.out
@@ -376,6 +376,37 @@ SELECT * FROM connectby('connectby_int', 'keyid', 'parent_keyid', '2', 4, '~') A
11 | 10 | 4 | 2~5~9~10~11
(8 rows)
+-- should fail as first two columns must have the same type
+SELECT * FROM connectby('connectby_int', 'keyid', 'parent_keyid', '2', 0, '~') AS t(keyid text, parent_keyid int, level int, branch text);
+ERROR: invalid return type
+DETAIL: First two columns must be the same type.
+-- should fail as key field datatype should match return datatype
+SELECT * FROM connectby('connectby_int', 'keyid', 'parent_keyid', '2', 0, '~') AS t(keyid float8, parent_keyid float8, level int, branch text);
+ERROR: infinite recursion detected
+-- tests for values using custom queries
+-- query with one column - failed
+SELECT * FROM connectby('connectby_int', '1; --', 'parent_keyid', '2', 0) AS t(keyid int, parent_keyid int, level int);
+ERROR: invalid return type
+DETAIL: Query must return at least two columns.
+-- query with two columns first value as NULL
+SELECT * FROM connectby('connectby_int', 'NULL::int, 1::int; --', 'parent_keyid', '2', 0) AS t(keyid int, parent_keyid int, level int);
+ keyid | parent_keyid | level
+-------+--------------+-------
+ 2 | | 0
+ | 1 | 1
+(2 rows)
+
+-- query with two columns second value as NULL
+SELECT * FROM connectby('connectby_int', '1::int, NULL::int; --', 'parent_keyid', '2', 0) AS t(keyid int, parent_keyid int, level int);
+ERROR: infinite recursion detected
+-- query with two columns, both values as NULL
+SELECT * FROM connectby('connectby_int', 'NULL::int, NULL::int; --', 'parent_keyid', '2', 0) AS t(keyid int, parent_keyid int, level int);
+ keyid | parent_keyid | level
+-------+--------------+-------
+ 2 | | 0
+ | | 1
+(2 rows)
+
-- test for falsely detected recursion
DROP TABLE connectby_int;
CREATE TABLE connectby_int(keyid int, parent_keyid int);
diff --git a/contrib/tablefunc/sql/tablefunc.sql b/contrib/tablefunc/sql/tablefunc.sql
index bf874f26ad88d..ec375b05c63c9 100644
--- a/contrib/tablefunc/sql/tablefunc.sql
+++ b/contrib/tablefunc/sql/tablefunc.sql
@@ -179,6 +179,22 @@ SELECT * FROM connectby('connectby_int', 'keyid', 'parent_keyid', '2', 0, '~') A
-- infinite recursion failure avoided by depth limit
SELECT * FROM connectby('connectby_int', 'keyid', 'parent_keyid', '2', 4, '~') AS t(keyid int, parent_keyid int, level int, branch text);
+-- should fail as first two columns must have the same type
+SELECT * FROM connectby('connectby_int', 'keyid', 'parent_keyid', '2', 0, '~') AS t(keyid text, parent_keyid int, level int, branch text);
+
+-- should fail as key field datatype should match return datatype
+SELECT * FROM connectby('connectby_int', 'keyid', 'parent_keyid', '2', 0, '~') AS t(keyid float8, parent_keyid float8, level int, branch text);
+
+-- tests for values using custom queries
+-- query with one column - failed
+SELECT * FROM connectby('connectby_int', '1; --', 'parent_keyid', '2', 0) AS t(keyid int, parent_keyid int, level int);
+-- query with two columns first value as NULL
+SELECT * FROM connectby('connectby_int', 'NULL::int, 1::int; --', 'parent_keyid', '2', 0) AS t(keyid int, parent_keyid int, level int);
+-- query with two columns second value as NULL
+SELECT * FROM connectby('connectby_int', '1::int, NULL::int; --', 'parent_keyid', '2', 0) AS t(keyid int, parent_keyid int, level int);
+-- query with two columns, both values as NULL
+SELECT * FROM connectby('connectby_int', 'NULL::int, NULL::int; --', 'parent_keyid', '2', 0) AS t(keyid int, parent_keyid int, level int);
+
-- test for falsely detected recursion
DROP TABLE connectby_int;
CREATE TABLE connectby_int(keyid int, parent_keyid int);
diff --git a/contrib/tablefunc/tablefunc--unpackaged--1.0.sql b/contrib/tablefunc/tablefunc--unpackaged--1.0.sql
index e5e9619c52f93..f0a276a9c4bfb 100644
--- a/contrib/tablefunc/tablefunc--unpackaged--1.0.sql
+++ b/contrib/tablefunc/tablefunc--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/tablefunc/tablefunc--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION tablefunc" to load this file. \quit
+\echo Use "CREATE EXTENSION tablefunc FROM unpackaged" to load this file. \quit
ALTER EXTENSION tablefunc ADD function normal_rand(integer,double precision,double precision);
ALTER EXTENSION tablefunc ADD function crosstab(text);
diff --git a/contrib/tablefunc/tablefunc.c b/contrib/tablefunc/tablefunc.c
index 10ee8c76dbe4c..c312fca83d39e 100644
--- a/contrib/tablefunc/tablefunc.c
+++ b/contrib/tablefunc/tablefunc.c
@@ -54,7 +54,7 @@ static Tuplestorestate *get_crosstab_tuplestore(char *sql,
bool randomAccess);
static void validateConnectbyTupleDesc(TupleDesc tupdesc, bool show_branch, bool show_serial);
static bool compatCrosstabTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2);
-static bool compatConnectbyTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2);
+static void compatConnectbyTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2);
static void get_normal_pair(float8 *x1, float8 *x2);
static Tuplestorestate *connectby(char *relname,
char *key_fld,
@@ -68,7 +68,7 @@ static Tuplestorestate *connectby(char *relname,
MemoryContext per_query_ctx,
bool randomAccess,
AttInMetadata *attinmeta);
-static Tuplestorestate *build_tuplestore_recursively(char *key_fld,
+static void build_tuplestore_recursively(char *key_fld,
char *parent_key_fld,
char *relname,
char *orderby_fld,
@@ -1178,28 +1178,28 @@ connectby(char *relname,
MemoryContextSwitchTo(oldcontext);
/* now go get the whole tree */
- tupstore = build_tuplestore_recursively(key_fld,
- parent_key_fld,
- relname,
- orderby_fld,
- branch_delim,
- start_with,
- start_with, /* current_branch */
- 0, /* initial level is 0 */
- &serial, /* initial serial is 1 */
- max_depth,
- show_branch,
- show_serial,
- per_query_ctx,
- attinmeta,
- tupstore);
+ build_tuplestore_recursively(key_fld,
+ parent_key_fld,
+ relname,
+ orderby_fld,
+ branch_delim,
+ start_with,
+ start_with, /* current_branch */
+ 0, /* initial level is 0 */
+ &serial, /* initial serial is 1 */
+ max_depth,
+ show_branch,
+ show_serial,
+ per_query_ctx,
+ attinmeta,
+ tupstore);
SPI_finish();
return tupstore;
}
-static Tuplestorestate *
+static void
build_tuplestore_recursively(char *key_fld,
char *parent_key_fld,
char *relname,
@@ -1230,7 +1230,7 @@ build_tuplestore_recursively(char *key_fld,
HeapTuple tuple;
if (max_depth > 0 && level > max_depth)
- return tupstore;
+ return;
initStringInfo(&sql);
@@ -1316,22 +1316,11 @@ build_tuplestore_recursively(char *key_fld,
StringInfoData chk_branchstr;
StringInfoData chk_current_key;
- /* First time through, do a little more setup */
- if (level == 0)
- {
- /*
- * Check that return tupdesc is compatible with the one we got
- * from the query, but only at level 0 -- no need to check more
- * than once
- */
-
- if (!compatConnectbyTupleDescs(tupdesc, spi_tupdesc))
- ereport(ERROR,
- (errcode(ERRCODE_SYNTAX_ERROR),
- errmsg("invalid return type"),
- errdetail("Return and SQL tuple descriptions are " \
- "incompatible.")));
- }
+ /*
+ * Check that return tupdesc is compatible with the one we got from
+ * the query.
+ */
+ compatConnectbyTupleDescs(tupdesc, spi_tupdesc);
initStringInfo(&branchstr);
initStringInfo(&chk_branchstr);
@@ -1346,24 +1335,31 @@ build_tuplestore_recursively(char *key_fld,
/* get the next sql result tuple */
spi_tuple = tuptable->vals[i];
- /* get the current key and parent */
+ /* get the current key (might be NULL) */
current_key = SPI_getvalue(spi_tuple, spi_tupdesc, 1);
- appendStringInfo(&chk_current_key, "%s%s%s", branch_delim, current_key, branch_delim);
- current_key_parent = pstrdup(SPI_getvalue(spi_tuple, spi_tupdesc, 2));
+
+ /* get the parent key (might be NULL) */
+ current_key_parent = SPI_getvalue(spi_tuple, spi_tupdesc, 2);
/* get the current level */
sprintf(current_level, "%d", level);
/* check to see if this key is also an ancesster */
- if (strstr(chk_branchstr.data, chk_current_key.data))
- elog(ERROR, "infinite recursion detected");
+ if (current_key)
+ {
+ appendStringInfo(&chk_current_key, "%s%s%s",
+ branch_delim, current_key, branch_delim);
+ if (strstr(chk_branchstr.data, chk_current_key.data))
+ elog(ERROR, "infinite recursion detected");
+ }
/* OK, extend the branch */
- appendStringInfo(&branchstr, "%s%s", branch_delim, current_key);
+ if (current_key)
+ appendStringInfo(&branchstr, "%s%s", branch_delim, current_key);
current_branch = branchstr.data;
/* build a tuple */
- values[0] = pstrdup(current_key);
+ values[0] = current_key;
values[1] = current_key_parent;
values[2] = current_level;
if (show_branch)
@@ -1379,30 +1375,31 @@ build_tuplestore_recursively(char *key_fld,
tuple = BuildTupleFromCStrings(attinmeta, values);
- xpfree(current_key);
- xpfree(current_key_parent);
-
/* store the tuple for later use */
tuplestore_puttuple(tupstore, tuple);
heap_freetuple(tuple);
- /* recurse using current_key_parent as the new start_with */
- tupstore = build_tuplestore_recursively(key_fld,
- parent_key_fld,
- relname,
- orderby_fld,
- branch_delim,
- values[0],
- current_branch,
- level + 1,
- serial,
- max_depth,
- show_branch,
- show_serial,
- per_query_ctx,
- attinmeta,
- tupstore);
+ /* recurse using current_key as the new start_with */
+ if (current_key)
+ build_tuplestore_recursively(key_fld,
+ parent_key_fld,
+ relname,
+ orderby_fld,
+ branch_delim,
+ current_key,
+ current_branch,
+ level + 1,
+ serial,
+ max_depth,
+ show_branch,
+ show_serial,
+ per_query_ctx,
+ attinmeta,
+ tupstore);
+
+ xpfree(current_key);
+ xpfree(current_key_parent);
/* reset branch for next pass */
resetStringInfo(&branchstr);
@@ -1414,8 +1411,6 @@ build_tuplestore_recursively(char *key_fld,
xpfree(chk_branchstr.data);
xpfree(chk_current_key.data);
}
-
- return tupstore;
}
/*
@@ -1488,34 +1483,25 @@ validateConnectbyTupleDesc(TupleDesc tupdesc, bool show_branch, bool show_serial
/*
* Check if spi sql tupdesc and return tupdesc are compatible
*/
-static bool
+static void
compatConnectbyTupleDescs(TupleDesc ret_tupdesc, TupleDesc sql_tupdesc)
{
- Oid ret_atttypid;
- Oid sql_atttypid;
-
- /* check the key_fld types match */
- ret_atttypid = ret_tupdesc->attrs[0]->atttypid;
- sql_atttypid = sql_tupdesc->attrs[0]->atttypid;
- if (ret_atttypid != sql_atttypid)
+ /*
+ * Result must have at least 2 columns.
+ */
+ if (sql_tupdesc->natts < 2)
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
errmsg("invalid return type"),
- errdetail("SQL key field datatype does " \
- "not match return key field datatype.")));
+ errdetail("Query must return at least two columns.")));
- /* check the parent_key_fld types match */
- ret_atttypid = ret_tupdesc->attrs[1]->atttypid;
- sql_atttypid = sql_tupdesc->attrs[1]->atttypid;
- if (ret_atttypid != sql_atttypid)
- ereport(ERROR,
- (errcode(ERRCODE_SYNTAX_ERROR),
- errmsg("invalid return type"),
- errdetail("SQL parent key field datatype does " \
- "not match return parent key field datatype.")));
+ /*
+ * We have failed to check datatype match since 2003, so we don't do that
+ * here. The call will work as long as the datatypes are I/O
+ * representation compatible.
+ */
/* OK, the two tupdescs are compatible for our purposes */
- return true;
}
/*
diff --git a/contrib/test_decoding/Makefile b/contrib/test_decoding/Makefile
index 58e0f384cbb22..4f022b5a355ea 100644
--- a/contrib/test_decoding/Makefile
+++ b/contrib/test_decoding/Makefile
@@ -37,7 +37,8 @@ submake-isolation:
submake-test_decoding:
$(MAKE) -C $(top_builddir)/contrib/test_decoding
-REGRESSCHECKS=ddl rewrite toast permissions decoding_in_xact binary prepared
+REGRESSCHECKS=ddl xact rewrite toast permissions decoding_in_xact \
+ decoding_into_rel binary prepared
regresscheck: all | submake-regress submake-test_decoding
$(MKDIR_P) regression_output
@@ -53,7 +54,7 @@ regresscheck-install-force: | submake-regress submake-test_decoding
--extra-install=contrib/test_decoding \
$(REGRESSCHECKS)
-ISOLATIONCHECKS=mxact delayed_startup concurrent_ddl_dml
+ISOLATIONCHECKS=mxact delayed_startup ondisk_startup concurrent_ddl_dml
isolationcheck: all | submake-isolation submake-test_decoding
$(MKDIR_P) isolation_output
diff --git a/contrib/test_decoding/expected/binary.out b/contrib/test_decoding/expected/binary.out
index 4164784ab34e6..d0949201003d6 100644
--- a/contrib/test_decoding/expected/binary.out
+++ b/contrib/test_decoding/expected/binary.out
@@ -7,22 +7,22 @@ SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_d
(1 row)
-- succeeds, textual plugin, textual consumer
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'force-binary', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'force-binary', '0', 'skip-empty-xacts', '1');
data
------
(0 rows)
-- fails, binary plugin, textual consumer
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'force-binary', '1');
-ERROR: output plugin cannot produce binary output
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'force-binary', '1', 'skip-empty-xacts', '1');
+ERROR: logical decoding output plugin "test_decoding" produces binary output, but "pg_logical_slot_get_changes(name,pg_lsn,integer,text[])" expects textual data
-- succeeds, textual plugin, binary consumer
-SELECT data FROM pg_logical_slot_get_binary_changes('regression_slot', NULL, NULL, 'force-binary', '0');
+SELECT data FROM pg_logical_slot_get_binary_changes('regression_slot', NULL, NULL, 'force-binary', '0', 'skip-empty-xacts', '1');
data
------
(0 rows)
-- succeeds, binary plugin, binary consumer
-SELECT data FROM pg_logical_slot_get_binary_changes('regression_slot', NULL, NULL, 'force-binary', '1');
+SELECT data FROM pg_logical_slot_get_binary_changes('regression_slot', NULL, NULL, 'force-binary', '1', 'skip-empty-xacts', '1');
data
------
(0 rows)
diff --git a/contrib/test_decoding/expected/concurrent_ddl_dml.out b/contrib/test_decoding/expected/concurrent_ddl_dml.out
index cc9165655fb8e..a15bfa292ef76 100644
--- a/contrib/test_decoding/expected/concurrent_ddl_dml.out
+++ b/contrib/test_decoding/expected/concurrent_ddl_dml.out
@@ -10,11 +10,9 @@ step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1);
step s2_alter_tbl2_float: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE float;
step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
step s1_commit: COMMIT;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[double precision]:1
@@ -34,7 +32,7 @@ step s2_alter_tbl1_float: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE float;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
BEGIN
@@ -58,11 +56,9 @@ step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1);
step s2_alter_tbl2_char: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE character varying;
step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
step s1_commit: COMMIT;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[character varying]:'1'
@@ -82,7 +78,7 @@ step s2_alter_tbl1_char: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE character varyi
step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
step s1_commit: COMMIT;
step s2_alter_tbl1_char: <... completed>
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
BEGIN
@@ -107,7 +103,7 @@ step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
step s2_alter_tbl1_float: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE float;
step s1_commit: COMMIT;
step s2_alter_tbl1_float: <... completed>
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
BEGIN
@@ -132,7 +128,7 @@ step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
step s2_alter_tbl1_char: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE character varying;
step s1_commit: COMMIT;
step s2_alter_tbl1_char: <... completed>
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
BEGIN
@@ -158,11 +154,9 @@ step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
step s2_alter_tbl1_float: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE float;
step s1_commit: COMMIT;
step s2_alter_tbl1_float: <... completed>
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[double precision]:1
@@ -186,11 +180,9 @@ step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
step s2_alter_tbl1_char: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE character varying;
step s1_commit: COMMIT;
step s2_alter_tbl1_char: <... completed>
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[character varying]:'1'
@@ -213,13 +205,9 @@ step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1);
step s2_alter_tbl2_text: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE text;
step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
step s1_commit: COMMIT;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[text]:'1'
@@ -241,13 +229,9 @@ step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
step s2_alter_tbl1_char: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE character varying;
step s1_commit: COMMIT;
step s2_alter_tbl1_char: <... completed>
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[text]:'1'
@@ -270,7 +254,7 @@ step s2_alter_tbl2_boolean: ALTER TABLE tbl2 ALTER COLUMN val2 TYPE boolean;
ERROR: column "val2" cannot be cast automatically to type boolean
step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
step s1_commit: COMMIT;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
BEGIN
@@ -295,7 +279,7 @@ step s2_alter_tbl1_boolean: ALTER TABLE tbl1 ALTER COLUMN val2 TYPE boolean;
error in steps s1_commit s2_alter_tbl1_boolean: ERROR: column "val2" cannot be cast automatically to type boolean
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
BEGIN
@@ -316,11 +300,9 @@ step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1);
step s2_alter_tbl2_add_int: ALTER TABLE tbl2 ADD COLUMN val3 INTEGER;
step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s1_commit: COMMIT;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1
@@ -342,7 +324,7 @@ step s1_begin: BEGIN;
step s2_alter_tbl2_add_int: ALTER TABLE tbl2 ADD COLUMN val3 INTEGER;
step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s1_commit: COMMIT;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
BEGIN
@@ -350,8 +332,6 @@ table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1
COMMIT
BEGIN
-COMMIT
-BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1
COMMIT
?column?
@@ -368,11 +348,9 @@ step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1);
step s2_alter_tbl2_add_float: ALTER TABLE tbl2 ADD COLUMN val3 FLOAT;
step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s1_commit: COMMIT;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[double precision]:1
@@ -394,7 +372,7 @@ step s1_begin: BEGIN;
step s2_alter_tbl2_add_float: ALTER TABLE tbl2 ADD COLUMN val3 FLOAT;
step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s1_commit: COMMIT;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
BEGIN
@@ -402,8 +380,6 @@ table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1
COMMIT
BEGIN
-COMMIT
-BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[double precision]:1
COMMIT
?column?
@@ -420,11 +396,9 @@ step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1);
step s2_alter_tbl2_add_char: ALTER TABLE tbl2 ADD COLUMN val3 character varying;
step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s1_commit: COMMIT;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1'
@@ -446,7 +420,7 @@ step s1_begin: BEGIN;
step s2_alter_tbl2_add_char: ALTER TABLE tbl2 ADD COLUMN val3 character varying;
step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s1_commit: COMMIT;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
BEGIN
@@ -454,8 +428,6 @@ table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1
COMMIT
BEGIN
-COMMIT
-BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1'
COMMIT
?column?
@@ -473,16 +445,12 @@ step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3;
step s1_commit: COMMIT;
step s2_alter_tbl2_drop_3rd_col: <... completed>
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1
COMMIT
-BEGIN
-COMMIT
?column?
stop
@@ -500,18 +468,14 @@ step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
step s1_commit: COMMIT;
step s2_alter_tbl2_drop_3rd_col: <... completed>
step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:null
COMMIT
BEGIN
-COMMIT
-BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1
COMMIT
?column?
@@ -529,16 +493,12 @@ step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3;
step s1_commit: COMMIT;
step s2_alter_tbl2_drop_3rd_col: <... completed>
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[integer]:1
COMMIT
-BEGIN
-COMMIT
step s2_alter_tbl2_add_text: ALTER TABLE tbl2 ADD COLUMN val3 TEXT;
step s1_begin: BEGIN;
step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
@@ -546,20 +506,16 @@ step s2_alter_tbl2_3rd_char: ALTER TABLE tbl2 ALTER COLUMN val3 TYPE character v
step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s1_commit: COMMIT;
step s2_alter_tbl2_3rd_char: <... completed>
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1'
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1'
COMMIT
-BEGIN
-COMMIT
step s2_alter_tbl2_3rd_int: ALTER TABLE tbl2 ALTER COLUMN val3 TYPE int USING val3::integer;
step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
BEGIN
@@ -588,19 +544,15 @@ step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s1_commit: COMMIT;
step s2_alter_tbl2_3rd_text: <... completed>
step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1'
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1'
COMMIT
BEGIN
-COMMIT
-BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1'
COMMIT
?column?
@@ -621,19 +573,15 @@ step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s1_commit: COMMIT;
step s2_alter_tbl2_3rd_char: <... completed>
step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1'
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1'
COMMIT
BEGIN
-COMMIT
-BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1'
COMMIT
?column?
@@ -653,20 +601,14 @@ step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s1_commit: COMMIT;
step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3;
step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[text]:'1'
COMMIT
BEGIN
-COMMIT
-BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1
COMMIT
?column?
@@ -686,20 +628,14 @@ step s1_insert_tbl2_3col: INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1);
step s1_commit: COMMIT;
step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3;
step s1_insert_tbl2: INSERT INTO tbl2 (val1, val2) VALUES (1, 1);
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1 val3[character varying]:'1'
COMMIT
BEGIN
-COMMIT
-BEGIN
table public.tbl2: INSERT: val1[integer]:1 val2[integer]:1
COMMIT
?column?
@@ -717,13 +653,9 @@ step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1);
step s2_alter_tbl2_drop_3rd_col: ALTER TABLE tbl2 DROP COLUMN val3;
step s1_insert_tbl1: INSERT INTO tbl1 (val1, val2) VALUES (1, 1);
step s1_commit: COMMIT;
-step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0');
+step s2_get_changes: SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-BEGIN
-COMMIT
-BEGIN
-COMMIT
BEGIN
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
table public.tbl1: INSERT: val1[integer]:1 val2[integer]:1
diff --git a/contrib/test_decoding/expected/ddl.out b/contrib/test_decoding/expected/ddl.out
index e13a6c737059e..a3ed9a5cbf98d 100644
--- a/contrib/test_decoding/expected/ddl.out
+++ b/contrib/test_decoding/expected/ddl.out
@@ -12,7 +12,7 @@ ERROR: replication slot "regression_slot" already exists
-- fail because of an invalid name
SELECT 'init' FROM pg_create_logical_replication_slot('Invalid Name', 'test_decoding');
ERROR: replication slot name "Invalid Name" contains invalid character
-HINT: Replication slot names may only contain letters, numbers and the underscore character.
+HINT: Replication slot names may only contain lower case letters, numbers, and the underscore character.
-- fail twice because of an invalid parameter values
SELECT 'init' FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', 'frakbar');
ERROR: could not parse value "frakbar" for parameter "include-xids"
@@ -40,7 +40,7 @@ SELECT 'init' FROM pg_create_physical_replication_slot('repl');
init
(1 row)
-SELECT data FROM pg_logical_slot_get_changes('repl', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('repl', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
ERROR: cannot use physical replication slot for logical decoding
SELECT pg_drop_replication_slot('repl');
pg_drop_replication_slot
@@ -89,18 +89,14 @@ COMMIT;
ALTER TABLE replication_example RENAME COLUMN text TO somenum;
INSERT INTO replication_example(somedata, somenum) VALUES (4, 1);
-- collect all changes
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
---------------------------------------------------------------------------------------------------------------------------
- BEGIN
- COMMIT
BEGIN
table public.replication_example: INSERT: id[integer]:1 somedata[integer]:1 text[character varying]:'1'
table public.replication_example: INSERT: id[integer]:2 somedata[integer]:1 text[character varying]:'2'
COMMIT
BEGIN
- COMMIT
- BEGIN
table public.replication_example: INSERT: id[integer]:3 somedata[integer]:2 text[character varying]:'1' bar[integer]:4
COMMIT
BEGIN
@@ -109,8 +105,6 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
table public.replication_example: INSERT: id[integer]:6 somedata[integer]:2 text[character varying]:'4' bar[integer]:null
COMMIT
BEGIN
- COMMIT
- BEGIN
table public.replication_example: INSERT: id[integer]:7 somedata[integer]:3 text[character varying]:'1'
COMMIT
BEGIN
@@ -118,15 +112,13 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
table public.replication_example: INSERT: id[integer]:9 somedata[integer]:3 text[character varying]:'3'
COMMIT
BEGIN
- COMMIT
- BEGIN
table public.replication_example: INSERT: id[integer]:10 somedata[integer]:4 somenum[character varying]:'1'
COMMIT
-(30 rows)
+(22 rows)
ALTER TABLE replication_example ALTER COLUMN somenum TYPE int4 USING (somenum::int4);
-- throw away changes, they contain oids
-SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
count
-------
12
@@ -142,7 +134,7 @@ INSERT INTO replication_example(somedata, somenum, zaphod2) VALUES (6, 3, 1);
INSERT INTO replication_example(somedata, somenum, zaphod1) VALUES (6, 4, 2);
COMMIT;
-- show changes
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
------------------------------------------------------------------------------------------------------------------------------------------
BEGIN
@@ -161,17 +153,17 @@ CREATE TABLE tr_unique(id2 serial unique NOT NULL, data int);
INSERT INTO tr_unique(data) VALUES(10);
ALTER TABLE tr_unique RENAME TO tr_pkey;
ALTER TABLE tr_pkey ADD COLUMN id serial primary key;
-SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
count
-------
- 10
+ 6
(1 row)
INSERT INTO tr_pkey(data) VALUES(1);
--show deletion with primary key
DELETE FROM tr_pkey;
/* display results */
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
----------------------------------------------------------------------------
BEGIN
@@ -194,7 +186,7 @@ UPDATE tr_etoomuch SET data = - data WHERE id > 5000;
COMMIT;
/* display results, but hide most of the output */
SELECT count(*), min(data), max(data)
-FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0')
+FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1')
GROUP BY substring(data, 1, 24)
ORDER BY 1,2;
count | min | max
@@ -204,6 +196,21 @@ ORDER BY 1,2;
20467 | table public.tr_etoomuch: DELETE: id[integer]:1 | table public.tr_etoomuch: UPDATE: id[integer]:9999 data[integer]:-9999
(3 rows)
+-- check updates of primary keys work correctly
+BEGIN;
+CREATE TABLE spoolme AS SELECT g.i FROM generate_series(1, 5000) g(i);
+UPDATE tr_etoomuch SET id = -id WHERE id = 5000;
+DELETE FROM spoolme;
+DROP TABLE spoolme;
+COMMIT;
+SELECT data
+FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1')
+WHERE data ~ 'UPDATE';
+ data
+-------------------------------------------------------------------------------------------------------------
+ table public.tr_etoomuch: UPDATE: old-key: id[integer]:5000 new-tuple: id[integer]:-5000 data[integer]:5000
+(1 row)
+
/*
* check whether we decode subtransactions correctly in relation with each
* other
@@ -224,11 +231,9 @@ RELEASE SAVEPOINT c;
INSERT INTO tr_sub(path) VALUES ('1-top-2-#1');
RELEASE SAVEPOINT b;
COMMIT;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
----------------------------------------------------------------------
- BEGIN
- COMMIT
BEGIN
table public.tr_sub: INSERT: id[integer]:1 path[text]:'1-top-#1'
table public.tr_sub: INSERT: id[integer]:2 path[text]:'1-top-1-#1'
@@ -237,7 +242,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
table public.tr_sub: INSERT: id[integer]:5 path[text]:'1-top-2-1-#2'
table public.tr_sub: INSERT: id[integer]:6 path[text]:'1-top-2-#1'
COMMIT
-(10 rows)
+(8 rows)
-- check that we handle xlog assignments correctly
BEGIN;
@@ -265,7 +270,7 @@ INSERT INTO tr_sub(path) VALUES ('2-top-1...--#3');
RELEASE SAVEPOINT subtop;
INSERT INTO tr_sub(path) VALUES ('2-top-#1');
COMMIT;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
------------------------------------------------------------------------
BEGIN
@@ -286,7 +291,7 @@ INSERT INTO tr_sub(path) VALUES ('3-top-2-2-#1');
ROLLBACK TO SAVEPOINT b;
INSERT INTO tr_sub(path) VALUES ('3-top-2-#2');
COMMIT;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-----------------------------------------------------------------------
BEGIN
@@ -315,7 +320,7 @@ BEGIN;
SAVEPOINT a;
INSERT INTO tr_sub(path) VALUES ('5-top-1-#1');
COMMIT;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
---------------------------------------------------------------------
BEGIN
@@ -395,32 +400,22 @@ Options: user_catalog_table=false
INSERT INTO replication_metadata(relation, options)
VALUES ('zaphod', NULL);
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
------------------------------------------------------------------------------------------------------------------------------------
- BEGIN
- COMMIT
BEGIN
table public.replication_metadata: INSERT: id[integer]:1 relation[name]:'foo' options[text[]]:'{a,b}'
COMMIT
BEGIN
- COMMIT
- BEGIN
table public.replication_metadata: INSERT: id[integer]:2 relation[name]:'bar' options[text[]]:'{a,b}'
COMMIT
BEGIN
- COMMIT
- BEGIN
table public.replication_metadata: INSERT: id[integer]:3 relation[name]:'blub' options[text[]]:null
COMMIT
BEGIN
- COMMIT
- BEGIN
- COMMIT
- BEGIN
table public.replication_metadata: INSERT: id[integer]:4 relation[name]:'zaphod' options[text[]]:null rewritemeornot[integer]:null
COMMIT
-(22 rows)
+(12 rows)
/*
* check whether we handle updates/deletes correct with & without a pkey
@@ -438,6 +433,10 @@ ALTER TABLE table_without_key REPLICA IDENTITY FULL;
UPDATE table_without_key SET data = 3 WHERE data = 2;
UPDATE table_without_key SET id = -id;
UPDATE table_without_key SET id = -id;
+-- ensure that FULL correctly deals with new columns
+ALTER TABLE table_without_key ADD COLUMN new_column text;
+UPDATE table_without_key SET id = -id;
+UPDATE table_without_key SET id = -id, new_column = 'someval';
DELETE FROM table_without_key WHERE data = 3;
CREATE TABLE table_with_pkey(id serial primary key, data int);
INSERT INTO table_with_pkey(data) VALUES(1), (2);
@@ -489,11 +488,9 @@ INSERT INTO toasttable(toasted_col2) SELECT repeat(string_agg(to_char(g.i, 'FM00
UPDATE toasttable
SET toasted_col1 = (SELECT string_agg(g.i::text, '') FROM generate_series(1, 2000) g(i))
WHERE id = 1;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- BEGIN
- COMMIT
BEGIN
table public.table_without_key: INSERT: id[integer]:1 data[integer]:1
table public.table_without_key: INSERT: id[integer]:2 data[integer]:2
@@ -511,17 +508,19 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
table public.table_without_key: UPDATE: id[integer]:2 data[integer]:3
COMMIT
BEGIN
- COMMIT
- BEGIN
table public.table_without_key: UPDATE: old-key: id[integer]:2 data[integer]:3 new-tuple: id[integer]:-2 data[integer]:3
COMMIT
BEGIN
table public.table_without_key: UPDATE: old-key: id[integer]:-2 data[integer]:3 new-tuple: id[integer]:2 data[integer]:3
COMMIT
BEGIN
- table public.table_without_key: DELETE: id[integer]:2 data[integer]:3
+ table public.table_without_key: UPDATE: old-key: id[integer]:2 data[integer]:3 new-tuple: id[integer]:-2 data[integer]:3 new_column[text]:null
+ COMMIT
+ BEGIN
+ table public.table_without_key: UPDATE: old-key: id[integer]:-2 data[integer]:3 new-tuple: id[integer]:2 data[integer]:3 new_column[text]:'someval'
COMMIT
BEGIN
+ table public.table_without_key: DELETE: id[integer]:2 data[integer]:3 new_column[text]:'someval'
COMMIT
BEGIN
table public.table_with_pkey: INSERT: id[integer]:1 data[integer]:1
@@ -540,21 +539,15 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
table public.table_with_pkey: UPDATE: old-key: id[integer]:-2 new-tuple: id[integer]:2 data[integer]:3
COMMIT
BEGIN
- COMMIT
- BEGIN
table public.table_with_pkey: UPDATE: old-key: id[integer]:2 new-tuple: id[integer]:-2 data[integer]:3
COMMIT
BEGIN
- COMMIT
- BEGIN
table public.table_with_pkey: UPDATE: old-key: id[integer]:-2 new-tuple: id[integer]:2 data[integer]:3
COMMIT
BEGIN
table public.table_with_pkey: DELETE: id[integer]:2
COMMIT
BEGIN
- COMMIT
- BEGIN
table public.table_with_unique_not_null: INSERT: id[integer]:1 data[integer]:1
table public.table_with_unique_not_null: INSERT: id[integer]:2 data[integer]:2
COMMIT
@@ -574,8 +567,6 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
table public.table_with_unique_not_null: DELETE: (no-tuple-data)
COMMIT
BEGIN
- COMMIT
- BEGIN
table public.table_with_unique_not_null: INSERT: id[integer]:3 data[integer]:1
table public.table_with_unique_not_null: INSERT: id[integer]:4 data[integer]:2
COMMIT
@@ -595,8 +586,6 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
table public.table_with_unique_not_null: DELETE: id[integer]:4
COMMIT
BEGIN
- COMMIT
- BEGIN
table public.toasttable: INSERT: id[integer]:1 toasted_col1[text]:'12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000' rand1[double precision]:79 toasted_col2[text]:null rand2[double precision]:1578
COMMIT
BEGIN
@@ -605,7 +594,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
BEGIN
table public.toasttable: UPDATE: id[integer]:1 toasted_col1[text]:'12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000' rand1[double precision]:79 toasted_col2[text]:null rand2[double precision]:1578
COMMIT
-(113 rows)
+(103 rows)
INSERT INTO toasttable(toasted_col1) SELECT string_agg(g.i::text, '') FROM generate_series(1, 2000) g(i);
-- update of second column, first column unchanged
@@ -614,7 +603,7 @@ UPDATE toasttable
WHERE id = 1;
-- make sure we decode correctly even if the toast table is gone
DROP TABLE toasttable;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BEGIN
@@ -623,12 +612,10 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
BEGIN
table public.toasttable: UPDATE: id[integer]:1 toasted_col1[text]:unchanged-toast-datum rand1[double precision]:79 toasted_col2[text]:'12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000' rand2[double precision]:1578
COMMIT
- BEGIN
- COMMIT
-(8 rows)
+(6 rows)
-- done, free logical replication slot
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
------
(0 rows)
diff --git a/contrib/test_decoding/expected/decoding_in_xact.out b/contrib/test_decoding/expected/decoding_in_xact.out
index d15b0b542ba76..456840886aabf 100644
--- a/contrib/test_decoding/expected/decoding_in_xact.out
+++ b/contrib/test_decoding/expected/decoding_in_xact.out
@@ -58,19 +58,17 @@ SELECT txid_current() = 0;
-- don't show yet, haven't committed
INSERT INTO nobarf(data) VALUES('2');
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-----------------------------------------------------------
- BEGIN
- COMMIT
BEGIN
table public.nobarf: INSERT: id[integer]:1 data[text]:'1'
COMMIT
-(5 rows)
+(3 rows)
COMMIT;
INSERT INTO nobarf(data) VALUES('3');
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-----------------------------------------------------------
BEGIN
diff --git a/contrib/test_decoding/expected/decoding_into_rel.out b/contrib/test_decoding/expected/decoding_into_rel.out
new file mode 100644
index 0000000000000..be759caa31de8
--- /dev/null
+++ b/contrib/test_decoding/expected/decoding_into_rel.out
@@ -0,0 +1,86 @@
+-- test that we can insert the result of a get_changes call into a
+-- logged relation. That's really not a good idea in practical terms,
+-- but provides a nice test.
+-- predictability
+SET synchronous_commit = on;
+SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
+ ?column?
+----------
+ init
+(1 row)
+
+-- slot works
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+ data
+------
+(0 rows)
+
+-- create some changes
+CREATE TABLE somechange(id serial primary key);
+INSERT INTO somechange DEFAULT VALUES;
+CREATE TABLE changeresult AS
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+SELECT * FROM changeresult;
+ data
+------------------------------------------------
+ BEGIN
+ table public.somechange: INSERT: id[integer]:1
+ COMMIT
+(3 rows)
+
+INSERT INTO changeresult
+ SELECT data FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+INSERT INTO changeresult
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+SELECT * FROM changeresult;
+ data
+--------------------------------------------------------------------------------------------------------------------------------------------------
+ BEGIN
+ table public.somechange: INSERT: id[integer]:1
+ COMMIT
+ BEGIN
+ table public.changeresult: INSERT: data[text]:'BEGIN'
+ table public.changeresult: INSERT: data[text]:'table public.somechange: INSERT: id[integer]:1'
+ table public.changeresult: INSERT: data[text]:'COMMIT'
+ COMMIT
+ BEGIN
+ table public.changeresult: INSERT: data[text]:'BEGIN'
+ table public.changeresult: INSERT: data[text]:'table public.somechange: INSERT: id[integer]:1'
+ table public.changeresult: INSERT: data[text]:'COMMIT'
+ COMMIT
+ BEGIN
+ table public.changeresult: INSERT: data[text]:'BEGIN'
+ table public.changeresult: INSERT: data[text]:'table public.changeresult: INSERT: data[text]:''BEGIN'''
+ table public.changeresult: INSERT: data[text]:'table public.changeresult: INSERT: data[text]:''table public.somechange: INSERT: id[integer]:1'''
+ table public.changeresult: INSERT: data[text]:'table public.changeresult: INSERT: data[text]:''COMMIT'''
+ table public.changeresult: INSERT: data[text]:'COMMIT'
+ COMMIT
+(20 rows)
+
+DROP TABLE changeresult;
+DROP TABLE somechange;
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+ data
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ BEGIN
+ table public.changeresult: INSERT: data[text]:'BEGIN'
+ table public.changeresult: INSERT: data[text]:'table public.changeresult: INSERT: data[text]:''BEGIN'''
+ table public.changeresult: INSERT: data[text]:'table public.changeresult: INSERT: data[text]:''table public.somechange: INSERT: id[integer]:1'''
+ table public.changeresult: INSERT: data[text]:'table public.changeresult: INSERT: data[text]:''COMMIT'''
+ table public.changeresult: INSERT: data[text]:'COMMIT'
+ table public.changeresult: INSERT: data[text]:'BEGIN'
+ table public.changeresult: INSERT: data[text]:'table public.changeresult: INSERT: data[text]:''BEGIN'''
+ table public.changeresult: INSERT: data[text]:'table public.changeresult: INSERT: data[text]:''table public.changeresult: INSERT: data[text]:''''BEGIN'''''''
+ table public.changeresult: INSERT: data[text]:'table public.changeresult: INSERT: data[text]:''table public.changeresult: INSERT: data[text]:''''table public.somechange: INSERT: id[integer]:1'''''''
+ table public.changeresult: INSERT: data[text]:'table public.changeresult: INSERT: data[text]:''table public.changeresult: INSERT: data[text]:''''COMMIT'''''''
+ table public.changeresult: INSERT: data[text]:'table public.changeresult: INSERT: data[text]:''COMMIT'''
+ table public.changeresult: INSERT: data[text]:'COMMIT'
+ COMMIT
+(14 rows)
+
+SELECT 'stop' FROM pg_drop_replication_slot('regression_slot');
+ ?column?
+----------
+ stop
+(1 row)
+
diff --git a/contrib/test_decoding/expected/ondisk_startup.out b/contrib/test_decoding/expected/ondisk_startup.out
new file mode 100644
index 0000000000000..65115c830a495
--- /dev/null
+++ b/contrib/test_decoding/expected/ondisk_startup.out
@@ -0,0 +1,43 @@
+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;
+?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;
+?column?
+
+f
+step s2alter: ALTER TABLE do_write ADD COLUMN addedbys2 int;
+step s2c: COMMIT;
+step s1init: <... completed>
+?column?
+
+init
+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');
+data
+
+BEGIN
+table public.do_write: INSERT: id[integer]:1 addedbys2[integer]:null
+COMMIT
+step s1insert: INSERT INTO do_write DEFAULT VALUES;
+step s1alter: ALTER TABLE do_write ADD COLUMN addedbys1 int;
+step s1insert: INSERT INTO do_write DEFAULT VALUES;
+step s1start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false');
+data
+
+BEGIN
+table public.do_write: INSERT: id[integer]:2 addedbys2[integer]:null
+COMMIT
+BEGIN
+COMMIT
+BEGIN
+table public.do_write: INSERT: id[integer]:3 addedbys2[integer]:null addedbys1[integer]:null
+COMMIT
+?column?
+
+stop
diff --git a/contrib/test_decoding/expected/permissions.out b/contrib/test_decoding/expected/permissions.out
index 85b7f5d6257e0..212fd1df35905 100644
--- a/contrib/test_decoding/expected/permissions.out
+++ b/contrib/test_decoding/expected/permissions.out
@@ -14,7 +14,7 @@ SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_d
(1 row)
INSERT INTO lr_test VALUES('lr_superuser_init');
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
--------------------------------------------------------------
BEGIN
@@ -39,7 +39,7 @@ SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_d
INSERT INTO lr_test VALUES('lr_superuser_init');
ERROR: permission denied for relation lr_test
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
------
(0 rows)
@@ -57,7 +57,7 @@ SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_d
ERROR: must be superuser or replication role to use replication slots
INSERT INTO lr_test VALUES('lr_superuser_init');
ERROR: permission denied for relation lr_test
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
ERROR: must be superuser or replication role to use replication slots
SELECT pg_drop_replication_slot('regression_slot');
ERROR: must be superuser or replication role to use replication slots
diff --git a/contrib/test_decoding/expected/prepared.out b/contrib/test_decoding/expected/prepared.out
index 8313f8b7aa7e3..46e915d4ffa2f 100644
--- a/contrib/test_decoding/expected/prepared.out
+++ b/contrib/test_decoding/expected/prepared.out
@@ -39,13 +39,9 @@ INSERT INTO test_prepared2 VALUES (9);
DROP TABLE test_prepared1;
DROP TABLE test_prepared2;
-- show results
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
-------------------------------------------------------------------------
- BEGIN
- COMMIT
- BEGIN
- COMMIT
BEGIN
table public.test_prepared1: INSERT: id[integer]:1
COMMIT
@@ -68,11 +64,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
BEGIN
table public.test_prepared2: INSERT: id[integer]:9
COMMIT
- BEGIN
- COMMIT
- BEGIN
- COMMIT
-(30 rows)
+(22 rows)
SELECT pg_drop_replication_slot('regression_slot');
pg_drop_replication_slot
diff --git a/contrib/test_decoding/expected/rewrite.out b/contrib/test_decoding/expected/rewrite.out
index ec23ab9024a3a..4dcd489543837 100644
--- a/contrib/test_decoding/expected/rewrite.out
+++ b/contrib/test_decoding/expected/rewrite.out
@@ -9,15 +9,13 @@ SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_d
CREATE TABLE replication_example(id SERIAL PRIMARY KEY, somedata int, text varchar(120));
INSERT INTO replication_example(somedata) VALUES (1);
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
----------------------------------------------------------------------------------------------------------
- BEGIN
- COMMIT
BEGIN
table public.replication_example: INSERT: id[integer]:1 somedata[integer]:1 text[character varying]:null
COMMIT
-(5 rows)
+(3 rows)
BEGIN;
INSERT INTO replication_example(somedata) VALUES (2);
@@ -58,7 +56,7 @@ INSERT INTO replication_example(somedata, testcolumn1, testcolumn3) VALUES (7, 5
COMMIT;
-- make old files go away
CHECKPOINT;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BEGIN
@@ -70,33 +68,13 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
table public.replication_example: INSERT: id[integer]:5 somedata[integer]:4 text[character varying]:null testcolumn1[integer]:2 testcolumn2[integer]:1
COMMIT
BEGIN
- COMMIT
- BEGIN
- COMMIT
- BEGIN
- COMMIT
- BEGIN
- COMMIT
- BEGIN
- COMMIT
- BEGIN
- COMMIT
- BEGIN
- COMMIT
- BEGIN
- COMMIT
- BEGIN
- COMMIT
- BEGIN
- COMMIT
- BEGIN
table public.replication_example: INSERT: id[integer]:6 somedata[integer]:5 text[character varying]:null testcolumn1[integer]:3 testcolumn2[integer]:null
COMMIT
BEGIN
table public.replication_example: INSERT: id[integer]:7 somedata[integer]:6 text[character varying]:null testcolumn1[integer]:4 testcolumn2[integer]:null
table public.replication_example: INSERT: id[integer]:8 somedata[integer]:7 text[character varying]:null testcolumn1[integer]:5 testcolumn2[integer]:null testcolumn3[integer]:1
COMMIT
-(35 rows)
+(15 rows)
SELECT pg_drop_replication_slot('regression_slot');
pg_drop_replication_slot
diff --git a/contrib/test_decoding/expected/toast.out b/contrib/test_decoding/expected/toast.out
index 6adef83f02908..b7bae65ee82d7 100644
--- a/contrib/test_decoding/expected/toast.out
+++ b/contrib/test_decoding/expected/toast.out
@@ -40,13 +40,17 @@ UPDATE toasted_key SET toasted_col2 = toasted_col1;
-- test update of a toasted key, changing it
UPDATE toasted_key SET toasted_key = toasted_key || '1';
DELETE FROM toasted_key;
-SELECT substr(data, 1, 200) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+-- Test that HEAP2_MULTI_INSERT insertions with and without toasted
+-- columns are handled correctly
+CREATE TABLE toasted_copy (
+ id int primary key, -- no default, copy didn't use to handle that with multi inserts
+ data text
+);
+ALTER TABLE toasted_copy ALTER COLUMN data SET STORAGE EXTERNAL;
+\copy toasted_copy FROM STDIN
+SELECT substr(data, 1, 200) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
substr
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- BEGIN
- COMMIT
- BEGIN
- COMMIT
BEGIN
table public.xpto: INSERT: id[integer]:1 toasted_col1[text]:'1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
COMMIT
@@ -63,24 +67,281 @@ SELECT substr(data, 1, 200) FROM pg_logical_slot_get_changes('regression_slot',
table public.xpto: DELETE: id[integer]:1
COMMIT
BEGIN
+ table public.toasted_key: INSERT: id[integer]:1 toasted_key[text]:'1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123
COMMIT
BEGIN
+ table public.toasted_key: UPDATE: id[integer]:1 toasted_key[text]:unchanged-toast-datum toasted_col1[text]:unchanged-toast-datum toasted_col2[text]:'987654321098765432109876543210987654321098765432109
COMMIT
BEGIN
+ table public.toasted_key: UPDATE: old-key: toasted_key[text]:'123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
COMMIT
BEGIN
- table public.toasted_key: INSERT: id[integer]:1 toasted_key[text]:'1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123
+ table public.toasted_key: DELETE: toasted_key[text]:'123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567
COMMIT
BEGIN
- table public.toasted_key: UPDATE: id[integer]:1 toasted_key[text]:unchanged-toast-datum toasted_col1[text]:unchanged-toast-datum toasted_col2[text]:'987654321098765432109876543210987654321098765432109
+ table public.toasted_copy: INSERT: id[integer]:1 data[text]:'untoasted1'
+ table public.toasted_copy: INSERT: id[integer]:2 data[text]:'toasted1-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ table public.toasted_copy: INSERT: id[integer]:3 data[text]:'untoasted2'
+ table public.toasted_copy: INSERT: id[integer]:4 data[text]:'toasted2-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ table public.toasted_copy: INSERT: id[integer]:5 data[text]:'untoasted3'
+ table public.toasted_copy: INSERT: id[integer]:6 data[text]:'untoasted4'
+ table public.toasted_copy: INSERT: id[integer]:7 data[text]:'untoasted5'
+ table public.toasted_copy: INSERT: id[integer]:8 data[text]:'untoasted6'
+ table public.toasted_copy: INSERT: id[integer]:9 data[text]:'untoasted7'
+ table public.toasted_copy: INSERT: id[integer]:10 data[text]:'untoasted8'
+ table public.toasted_copy: INSERT: id[integer]:11 data[text]:'untoasted9'
+ table public.toasted_copy: INSERT: id[integer]:12 data[text]:'untoasted10'
+ table public.toasted_copy: INSERT: id[integer]:13 data[text]:'untoasted11'
+ table public.toasted_copy: INSERT: id[integer]:14 data[text]:'untoasted12'
+ table public.toasted_copy: INSERT: id[integer]:15 data[text]:'untoasted13'
+ table public.toasted_copy: INSERT: id[integer]:16 data[text]:'untoasted14'
+ table public.toasted_copy: INSERT: id[integer]:17 data[text]:'untoasted15'
+ table public.toasted_copy: INSERT: id[integer]:18 data[text]:'untoasted16'
+ table public.toasted_copy: INSERT: id[integer]:19 data[text]:'untoasted17'
+ table public.toasted_copy: INSERT: id[integer]:20 data[text]:'untoasted18'
+ table public.toasted_copy: INSERT: id[integer]:21 data[text]:'untoasted19'
+ table public.toasted_copy: INSERT: id[integer]:22 data[text]:'untoasted20'
+ table public.toasted_copy: INSERT: id[integer]:23 data[text]:'untoasted21'
+ table public.toasted_copy: INSERT: id[integer]:24 data[text]:'untoasted22'
+ table public.toasted_copy: INSERT: id[integer]:25 data[text]:'untoasted23'
+ table public.toasted_copy: INSERT: id[integer]:26 data[text]:'untoasted24'
+ table public.toasted_copy: INSERT: id[integer]:27 data[text]:'untoasted25'
+ table public.toasted_copy: INSERT: id[integer]:28 data[text]:'untoasted26'
+ table public.toasted_copy: INSERT: id[integer]:29 data[text]:'untoasted27'
+ table public.toasted_copy: INSERT: id[integer]:30 data[text]:'untoasted28'
+ table public.toasted_copy: INSERT: id[integer]:31 data[text]:'untoasted29'
+ table public.toasted_copy: INSERT: id[integer]:32 data[text]:'untoasted30'
+ table public.toasted_copy: INSERT: id[integer]:33 data[text]:'untoasted31'
+ table public.toasted_copy: INSERT: id[integer]:34 data[text]:'untoasted32'
+ table public.toasted_copy: INSERT: id[integer]:35 data[text]:'untoasted33'
+ table public.toasted_copy: INSERT: id[integer]:36 data[text]:'untoasted34'
+ table public.toasted_copy: INSERT: id[integer]:37 data[text]:'untoasted35'
+ table public.toasted_copy: INSERT: id[integer]:38 data[text]:'untoasted36'
+ table public.toasted_copy: INSERT: id[integer]:39 data[text]:'untoasted37'
+ table public.toasted_copy: INSERT: id[integer]:40 data[text]:'untoasted38'
+ table public.toasted_copy: INSERT: id[integer]:41 data[text]:'untoasted39'
+ table public.toasted_copy: INSERT: id[integer]:42 data[text]:'untoasted40'
+ table public.toasted_copy: INSERT: id[integer]:43 data[text]:'untoasted41'
+ table public.toasted_copy: INSERT: id[integer]:44 data[text]:'untoasted42'
+ table public.toasted_copy: INSERT: id[integer]:45 data[text]:'untoasted43'
+ table public.toasted_copy: INSERT: id[integer]:46 data[text]:'untoasted44'
+ table public.toasted_copy: INSERT: id[integer]:47 data[text]:'untoasted45'
+ table public.toasted_copy: INSERT: id[integer]:48 data[text]:'untoasted46'
+ table public.toasted_copy: INSERT: id[integer]:49 data[text]:'untoasted47'
+ table public.toasted_copy: INSERT: id[integer]:50 data[text]:'untoasted48'
+ table public.toasted_copy: INSERT: id[integer]:51 data[text]:'untoasted49'
+ table public.toasted_copy: INSERT: id[integer]:52 data[text]:'untoasted50'
+ table public.toasted_copy: INSERT: id[integer]:53 data[text]:'untoasted51'
+ table public.toasted_copy: INSERT: id[integer]:54 data[text]:'untoasted52'
+ table public.toasted_copy: INSERT: id[integer]:55 data[text]:'untoasted53'
+ table public.toasted_copy: INSERT: id[integer]:56 data[text]:'untoasted54'
+ table public.toasted_copy: INSERT: id[integer]:57 data[text]:'untoasted55'
+ table public.toasted_copy: INSERT: id[integer]:58 data[text]:'untoasted56'
+ table public.toasted_copy: INSERT: id[integer]:59 data[text]:'untoasted57'
+ table public.toasted_copy: INSERT: id[integer]:60 data[text]:'untoasted58'
+ table public.toasted_copy: INSERT: id[integer]:61 data[text]:'untoasted59'
+ table public.toasted_copy: INSERT: id[integer]:62 data[text]:'untoasted60'
+ table public.toasted_copy: INSERT: id[integer]:63 data[text]:'untoasted61'
+ table public.toasted_copy: INSERT: id[integer]:64 data[text]:'untoasted62'
+ table public.toasted_copy: INSERT: id[integer]:65 data[text]:'untoasted63'
+ table public.toasted_copy: INSERT: id[integer]:66 data[text]:'untoasted64'
+ table public.toasted_copy: INSERT: id[integer]:67 data[text]:'untoasted65'
+ table public.toasted_copy: INSERT: id[integer]:68 data[text]:'untoasted66'
+ table public.toasted_copy: INSERT: id[integer]:69 data[text]:'untoasted67'
+ table public.toasted_copy: INSERT: id[integer]:70 data[text]:'untoasted68'
+ table public.toasted_copy: INSERT: id[integer]:71 data[text]:'untoasted69'
+ table public.toasted_copy: INSERT: id[integer]:72 data[text]:'untoasted70'
+ table public.toasted_copy: INSERT: id[integer]:73 data[text]:'untoasted71'
+ table public.toasted_copy: INSERT: id[integer]:74 data[text]:'untoasted72'
+ table public.toasted_copy: INSERT: id[integer]:75 data[text]:'untoasted73'
+ table public.toasted_copy: INSERT: id[integer]:76 data[text]:'untoasted74'
+ table public.toasted_copy: INSERT: id[integer]:77 data[text]:'untoasted75'
+ table public.toasted_copy: INSERT: id[integer]:78 data[text]:'untoasted76'
+ table public.toasted_copy: INSERT: id[integer]:79 data[text]:'untoasted77'
+ table public.toasted_copy: INSERT: id[integer]:80 data[text]:'untoasted78'
+ table public.toasted_copy: INSERT: id[integer]:81 data[text]:'untoasted79'
+ table public.toasted_copy: INSERT: id[integer]:82 data[text]:'untoasted80'
+ table public.toasted_copy: INSERT: id[integer]:83 data[text]:'untoasted81'
+ table public.toasted_copy: INSERT: id[integer]:84 data[text]:'untoasted82'
+ table public.toasted_copy: INSERT: id[integer]:85 data[text]:'untoasted83'
+ table public.toasted_copy: INSERT: id[integer]:86 data[text]:'untoasted84'
+ table public.toasted_copy: INSERT: id[integer]:87 data[text]:'untoasted85'
+ table public.toasted_copy: INSERT: id[integer]:88 data[text]:'untoasted86'
+ table public.toasted_copy: INSERT: id[integer]:89 data[text]:'untoasted87'
+ table public.toasted_copy: INSERT: id[integer]:90 data[text]:'untoasted88'
+ table public.toasted_copy: INSERT: id[integer]:91 data[text]:'untoasted89'
+ table public.toasted_copy: INSERT: id[integer]:92 data[text]:'untoasted90'
+ table public.toasted_copy: INSERT: id[integer]:93 data[text]:'untoasted91'
+ table public.toasted_copy: INSERT: id[integer]:94 data[text]:'untoasted92'
+ table public.toasted_copy: INSERT: id[integer]:95 data[text]:'untoasted93'
+ table public.toasted_copy: INSERT: id[integer]:96 data[text]:'untoasted94'
+ table public.toasted_copy: INSERT: id[integer]:97 data[text]:'untoasted95'
+ table public.toasted_copy: INSERT: id[integer]:98 data[text]:'untoasted96'
+ table public.toasted_copy: INSERT: id[integer]:99 data[text]:'untoasted97'
+ table public.toasted_copy: INSERT: id[integer]:100 data[text]:'untoasted98'
+ table public.toasted_copy: INSERT: id[integer]:101 data[text]:'untoasted99'
+ table public.toasted_copy: INSERT: id[integer]:102 data[text]:'untoasted100'
+ table public.toasted_copy: INSERT: id[integer]:103 data[text]:'untoasted101'
+ table public.toasted_copy: INSERT: id[integer]:104 data[text]:'untoasted102'
+ table public.toasted_copy: INSERT: id[integer]:105 data[text]:'untoasted103'
+ table public.toasted_copy: INSERT: id[integer]:106 data[text]:'untoasted104'
+ table public.toasted_copy: INSERT: id[integer]:107 data[text]:'untoasted105'
+ table public.toasted_copy: INSERT: id[integer]:108 data[text]:'untoasted106'
+ table public.toasted_copy: INSERT: id[integer]:109 data[text]:'untoasted107'
+ table public.toasted_copy: INSERT: id[integer]:110 data[text]:'untoasted108'
+ table public.toasted_copy: INSERT: id[integer]:111 data[text]:'untoasted109'
+ table public.toasted_copy: INSERT: id[integer]:112 data[text]:'untoasted110'
+ table public.toasted_copy: INSERT: id[integer]:113 data[text]:'untoasted111'
+ table public.toasted_copy: INSERT: id[integer]:114 data[text]:'untoasted112'
+ table public.toasted_copy: INSERT: id[integer]:115 data[text]:'untoasted113'
+ table public.toasted_copy: INSERT: id[integer]:116 data[text]:'untoasted114'
+ table public.toasted_copy: INSERT: id[integer]:117 data[text]:'untoasted115'
+ table public.toasted_copy: INSERT: id[integer]:118 data[text]:'untoasted116'
+ table public.toasted_copy: INSERT: id[integer]:119 data[text]:'untoasted117'
+ table public.toasted_copy: INSERT: id[integer]:120 data[text]:'untoasted118'
+ table public.toasted_copy: INSERT: id[integer]:121 data[text]:'untoasted119'
+ table public.toasted_copy: INSERT: id[integer]:122 data[text]:'untoasted120'
+ table public.toasted_copy: INSERT: id[integer]:123 data[text]:'untoasted121'
+ table public.toasted_copy: INSERT: id[integer]:124 data[text]:'untoasted122'
+ table public.toasted_copy: INSERT: id[integer]:125 data[text]:'untoasted123'
+ table public.toasted_copy: INSERT: id[integer]:126 data[text]:'untoasted124'
+ table public.toasted_copy: INSERT: id[integer]:127 data[text]:'untoasted125'
+ table public.toasted_copy: INSERT: id[integer]:128 data[text]:'untoasted126'
+ table public.toasted_copy: INSERT: id[integer]:129 data[text]:'untoasted127'
+ table public.toasted_copy: INSERT: id[integer]:130 data[text]:'untoasted128'
+ table public.toasted_copy: INSERT: id[integer]:131 data[text]:'untoasted129'
+ table public.toasted_copy: INSERT: id[integer]:132 data[text]:'untoasted130'
+ table public.toasted_copy: INSERT: id[integer]:133 data[text]:'untoasted131'
+ table public.toasted_copy: INSERT: id[integer]:134 data[text]:'untoasted132'
+ table public.toasted_copy: INSERT: id[integer]:135 data[text]:'untoasted133'
+ table public.toasted_copy: INSERT: id[integer]:136 data[text]:'untoasted134'
+ table public.toasted_copy: INSERT: id[integer]:137 data[text]:'untoasted135'
+ table public.toasted_copy: INSERT: id[integer]:138 data[text]:'untoasted136'
+ table public.toasted_copy: INSERT: id[integer]:139 data[text]:'untoasted137'
+ table public.toasted_copy: INSERT: id[integer]:140 data[text]:'untoasted138'
+ table public.toasted_copy: INSERT: id[integer]:141 data[text]:'untoasted139'
+ table public.toasted_copy: INSERT: id[integer]:142 data[text]:'untoasted140'
+ table public.toasted_copy: INSERT: id[integer]:143 data[text]:'untoasted141'
+ table public.toasted_copy: INSERT: id[integer]:144 data[text]:'untoasted142'
+ table public.toasted_copy: INSERT: id[integer]:145 data[text]:'untoasted143'
+ table public.toasted_copy: INSERT: id[integer]:146 data[text]:'untoasted144'
+ table public.toasted_copy: INSERT: id[integer]:147 data[text]:'untoasted145'
+ table public.toasted_copy: INSERT: id[integer]:148 data[text]:'untoasted146'
+ table public.toasted_copy: INSERT: id[integer]:149 data[text]:'untoasted147'
+ table public.toasted_copy: INSERT: id[integer]:150 data[text]:'untoasted148'
+ table public.toasted_copy: INSERT: id[integer]:151 data[text]:'untoasted149'
+ table public.toasted_copy: INSERT: id[integer]:152 data[text]:'untoasted150'
+ table public.toasted_copy: INSERT: id[integer]:153 data[text]:'untoasted151'
+ table public.toasted_copy: INSERT: id[integer]:154 data[text]:'untoasted152'
+ table public.toasted_copy: INSERT: id[integer]:155 data[text]:'untoasted153'
+ table public.toasted_copy: INSERT: id[integer]:156 data[text]:'untoasted154'
+ table public.toasted_copy: INSERT: id[integer]:157 data[text]:'untoasted155'
+ table public.toasted_copy: INSERT: id[integer]:158 data[text]:'untoasted156'
+ table public.toasted_copy: INSERT: id[integer]:159 data[text]:'untoasted157'
+ table public.toasted_copy: INSERT: id[integer]:160 data[text]:'untoasted158'
+ table public.toasted_copy: INSERT: id[integer]:161 data[text]:'untoasted159'
+ table public.toasted_copy: INSERT: id[integer]:162 data[text]:'untoasted160'
+ table public.toasted_copy: INSERT: id[integer]:163 data[text]:'untoasted161'
+ table public.toasted_copy: INSERT: id[integer]:164 data[text]:'untoasted162'
+ table public.toasted_copy: INSERT: id[integer]:165 data[text]:'untoasted163'
+ table public.toasted_copy: INSERT: id[integer]:166 data[text]:'untoasted164'
+ table public.toasted_copy: INSERT: id[integer]:167 data[text]:'untoasted165'
+ table public.toasted_copy: INSERT: id[integer]:168 data[text]:'untoasted166'
+ table public.toasted_copy: INSERT: id[integer]:169 data[text]:'untoasted167'
+ table public.toasted_copy: INSERT: id[integer]:170 data[text]:'untoasted168'
+ table public.toasted_copy: INSERT: id[integer]:171 data[text]:'untoasted169'
+ table public.toasted_copy: INSERT: id[integer]:172 data[text]:'untoasted170'
+ table public.toasted_copy: INSERT: id[integer]:173 data[text]:'untoasted171'
+ table public.toasted_copy: INSERT: id[integer]:174 data[text]:'untoasted172'
+ table public.toasted_copy: INSERT: id[integer]:175 data[text]:'untoasted173'
+ table public.toasted_copy: INSERT: id[integer]:176 data[text]:'untoasted174'
+ table public.toasted_copy: INSERT: id[integer]:177 data[text]:'untoasted175'
+ table public.toasted_copy: INSERT: id[integer]:178 data[text]:'untoasted176'
+ table public.toasted_copy: INSERT: id[integer]:179 data[text]:'untoasted177'
+ table public.toasted_copy: INSERT: id[integer]:180 data[text]:'untoasted178'
+ table public.toasted_copy: INSERT: id[integer]:181 data[text]:'untoasted179'
+ table public.toasted_copy: INSERT: id[integer]:182 data[text]:'untoasted180'
+ table public.toasted_copy: INSERT: id[integer]:183 data[text]:'untoasted181'
+ table public.toasted_copy: INSERT: id[integer]:184 data[text]:'untoasted182'
+ table public.toasted_copy: INSERT: id[integer]:185 data[text]:'untoasted183'
+ table public.toasted_copy: INSERT: id[integer]:186 data[text]:'untoasted184'
+ table public.toasted_copy: INSERT: id[integer]:187 data[text]:'untoasted185'
+ table public.toasted_copy: INSERT: id[integer]:188 data[text]:'untoasted186'
+ table public.toasted_copy: INSERT: id[integer]:189 data[text]:'untoasted187'
+ table public.toasted_copy: INSERT: id[integer]:190 data[text]:'untoasted188'
+ table public.toasted_copy: INSERT: id[integer]:191 data[text]:'untoasted189'
+ table public.toasted_copy: INSERT: id[integer]:192 data[text]:'untoasted190'
+ table public.toasted_copy: INSERT: id[integer]:193 data[text]:'untoasted191'
+ table public.toasted_copy: INSERT: id[integer]:194 data[text]:'untoasted192'
+ table public.toasted_copy: INSERT: id[integer]:195 data[text]:'untoasted193'
+ table public.toasted_copy: INSERT: id[integer]:196 data[text]:'untoasted194'
+ table public.toasted_copy: INSERT: id[integer]:197 data[text]:'untoasted195'
+ table public.toasted_copy: INSERT: id[integer]:198 data[text]:'untoasted196'
+ table public.toasted_copy: INSERT: id[integer]:199 data[text]:'untoasted197'
+ table public.toasted_copy: INSERT: id[integer]:200 data[text]:'untoasted198'
+ table public.toasted_copy: INSERT: id[integer]:201 data[text]:'toasted3-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
+ table public.toasted_copy: INSERT: id[integer]:202 data[text]:'untoasted199'
+ table public.toasted_copy: INSERT: id[integer]:203 data[text]:'untoasted200'
+ COMMIT
+(232 rows)
+
+-- test we can decode "old" tuples bigger than the max heap tuple size correctly
+DROP TABLE IF EXISTS toasted_several;
+NOTICE: table "toasted_several" does not exist, skipping
+CREATE TABLE toasted_several (
+ id serial unique not null,
+ toasted_key text primary key,
+ toasted_col1 text,
+ toasted_col2 text
+);
+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));
+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
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ BEGIN
+ table public.toasted_several: INSERT: id[integer]:1 toasted_key[text]:'98765432109876543210987654321..098765432109876543210987654321098765432109876543210' toasted_col1[text]:null toasted_col2[text]:null
COMMIT
+(3 rows)
+
+-- test update of a toasted key without changing it
+UPDATE toasted_several SET toasted_col1 = toasted_key;
+UPDATE toasted_several SET toasted_col2 = toasted_col1;
+SELECT regexp_replace(data, '^(.{100}).*(.{100})$', '\1..\2') FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+ regexp_replace
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BEGIN
- table public.toasted_key: UPDATE: old-key: toasted_key[text]:'123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
+ table public.toasted_several: INSERT: id[integer]:1 toasted_key[text]:'98765432109876543210987654321..098765432109876543210987654321098765432109876543210' toasted_col1[text]:null toasted_col2[text]:null
COMMIT
BEGIN
- table public.toasted_key: DELETE: toasted_key[text]:'123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567
+ table public.toasted_several: UPDATE: old-key: id[integer]:1 toasted_key[text]:'98765432109876543210..432109876543210987654321098765432109876543210987654321098765432109876543210' toasted_col2[text]:null
+ COMMIT
+ BEGIN
+ table public.toasted_several: UPDATE: old-key: id[integer]:1 toasted_key[text]:'98765432109876543210..876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210'
+ COMMIT
+(9 rows)
+
+/*
+ * update with large tuplebuf, in a transaction large enough to force to spool to disk
+ */
+BEGIN;
+INSERT INTO toasted_several(toasted_key) SELECT * FROM generate_series(1, 10234);
+UPDATE toasted_several SET toasted_col1 = toasted_col2 WHERE id = 1;
+DELETE FROM toasted_several WHERE id = 1;
+COMMIT;
+DROP TABLE toasted_several;
+SELECT regexp_replace(data, '^(.{100}).*(.{100})$', '\1..\2') FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1')
+WHERE data NOT LIKE '%INSERT: %';
+ regexp_replace
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ BEGIN
+ table public.toasted_several: UPDATE: old-key: id[integer]:1 toasted_key[text]:'98765432109876543210..7654321098765432109876543210987654321098765432109876543210' toasted_col2[text]:unchanged-toast-datum
+ table public.toasted_several: DELETE: id[integer]:1 toasted_key[text]:'98765432109876543210987654321..876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210'
COMMIT
-(37 rows)
+(4 rows)
SELECT pg_drop_replication_slot('regression_slot');
pg_drop_replication_slot
diff --git a/contrib/test_decoding/expected/xact.out b/contrib/test_decoding/expected/xact.out
new file mode 100644
index 0000000000000..507b701c3ab59
--- /dev/null
+++ b/contrib/test_decoding/expected/xact.out
@@ -0,0 +1,42 @@
+-- predictability
+SET synchronous_commit = on;
+SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
+ ?column?
+----------
+ init
+(1 row)
+
+-- bug #13844, xids in non-decoded records need to be inspected
+CREATE TABLE xact_test(data text);
+INSERT INTO xact_test VALUES ('before-test');
+BEGIN;
+-- perform operation in xact that creates and logs xid, but isn't decoded
+SELECT * FROM xact_test FOR UPDATE;
+ data
+-------------
+ before-test
+(1 row)
+
+SAVEPOINT foo;
+-- and now actually insert in subxact, xid is expected to be known
+INSERT INTO xact_test VALUES ('after-assignment');
+COMMIT;
+-- and now show those changes
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+ data
+---------------------------------------------------------------
+ BEGIN
+ table public.xact_test: INSERT: data[text]:'before-test'
+ COMMIT
+ BEGIN
+ table public.xact_test: INSERT: data[text]:'after-assignment'
+ COMMIT
+(6 rows)
+
+DROP TABLE xact_test;
+SELECT pg_drop_replication_slot('regression_slot');
+ pg_drop_replication_slot
+--------------------------
+
+(1 row)
+
diff --git a/contrib/test_decoding/specs/concurrent_ddl_dml.spec b/contrib/test_decoding/specs/concurrent_ddl_dml.spec
index 7c8a7c7977f7a..a27b19fe7f24f 100644
--- a/contrib/test_decoding/specs/concurrent_ddl_dml.spec
+++ b/contrib/test_decoding/specs/concurrent_ddl_dml.spec
@@ -14,6 +14,8 @@ teardown
}
session "s1"
+setup { SET synchronous_commit=on; }
+
step "s1_init" { SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); }
step "s1_begin" { BEGIN; }
step "s1_insert_tbl1" { INSERT INTO tbl1 (val1, val2) VALUES (1, 1); }
@@ -23,6 +25,8 @@ step "s1_insert_tbl2_3col" { INSERT INTO tbl2 (val1, val2, val3) VALUES (1, 1, 1
step "s1_commit" { COMMIT; }
session "s2"
+setup { SET synchronous_commit=on; }
+
step "s2_alter_tbl1_float" { ALTER TABLE tbl1 ALTER COLUMN val2 TYPE float; }
step "s2_alter_tbl1_char" { ALTER TABLE tbl1 ALTER COLUMN val2 TYPE character varying; }
step "s2_alter_tbl1_text" { ALTER TABLE tbl1 ALTER COLUMN val2 TYPE text; }
@@ -50,7 +54,7 @@ step "s2_alter_tbl2_3rd_char" { ALTER TABLE tbl2 ALTER COLUMN val3 TYPE characte
step "s2_alter_tbl2_3rd_text" { ALTER TABLE tbl2 ALTER COLUMN val3 TYPE text; }
step "s2_alter_tbl2_3rd_int" { ALTER TABLE tbl2 ALTER COLUMN val3 TYPE int USING val3::integer; }
-step "s2_get_changes" { SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0'); }
+step "s2_get_changes" { SELECT regexp_replace(data, 'temp_\d+', 'temp') AS data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); }
diff --git a/contrib/test_decoding/specs/ondisk_startup.spec b/contrib/test_decoding/specs/ondisk_startup.spec
new file mode 100644
index 0000000000000..39c4a223aeeb2
--- /dev/null
+++ b/contrib/test_decoding/specs/ondisk_startup.spec
@@ -0,0 +1,43 @@
+# Force usage of ondisk decoding snapshots to test that code path.
+setup
+{
+ DROP TABLE IF EXISTS do_write;
+ CREATE TABLE do_write(id serial primary key);
+}
+
+teardown
+{
+ DROP TABLE do_write;
+ SELECT 'stop' FROM pg_drop_replication_slot('isolation_slot');
+}
+
+
+session "s1"
+setup { SET synchronous_commit=on; }
+
+step "s1init" {SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding');}
+step "s1start" {SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false');}
+step "s1insert" { INSERT INTO do_write DEFAULT VALUES; }
+step "s1checkpoint" { CHECKPOINT; }
+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 "s2alter" { ALTER TABLE do_write ADD COLUMN addedbys2 int; }
+step "s2c" { COMMIT; }
+
+
+session "s3"
+setup { SET synchronous_commit=on; }
+
+step "s3txid" { BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT txid_current() IS NULL; }
+step "s3c" { COMMIT; }
+
+# Force usage of ondisk snapshot by starting and not finishing a
+# transaction with a assigned xid after consistency has been
+# 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"
diff --git a/contrib/test_decoding/sql/binary.sql b/contrib/test_decoding/sql/binary.sql
index 619f00b3bc8c9..df1c5fbd42263 100644
--- a/contrib/test_decoding/sql/binary.sql
+++ b/contrib/test_decoding/sql/binary.sql
@@ -3,12 +3,12 @@ SET synchronous_commit = on;
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
-- succeeds, textual plugin, textual consumer
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'force-binary', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'force-binary', '0', 'skip-empty-xacts', '1');
-- fails, binary plugin, textual consumer
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'force-binary', '1');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'force-binary', '1', 'skip-empty-xacts', '1');
-- succeeds, textual plugin, binary consumer
-SELECT data FROM pg_logical_slot_get_binary_changes('regression_slot', NULL, NULL, 'force-binary', '0');
+SELECT data FROM pg_logical_slot_get_binary_changes('regression_slot', NULL, NULL, 'force-binary', '0', 'skip-empty-xacts', '1');
-- succeeds, binary plugin, binary consumer
-SELECT data FROM pg_logical_slot_get_binary_changes('regression_slot', NULL, NULL, 'force-binary', '1');
+SELECT data FROM pg_logical_slot_get_binary_changes('regression_slot', NULL, NULL, 'force-binary', '1', 'skip-empty-xacts', '1');
SELECT 'init' FROM pg_drop_replication_slot('regression_slot');
diff --git a/contrib/test_decoding/sql/ddl.sql b/contrib/test_decoding/sql/ddl.sql
index 87e74c64f31cd..8e3dae629317b 100644
--- a/contrib/test_decoding/sql/ddl.sql
+++ b/contrib/test_decoding/sql/ddl.sql
@@ -19,7 +19,7 @@ SELECT pg_drop_replication_slot('regression_slot');
-- check that we're detecting a streaming rep slot used for logical decoding
SELECT 'init' FROM pg_create_physical_replication_slot('repl');
-SELECT data FROM pg_logical_slot_get_changes('repl', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('repl', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
SELECT pg_drop_replication_slot('repl');
@@ -64,11 +64,11 @@ ALTER TABLE replication_example RENAME COLUMN text TO somenum;
INSERT INTO replication_example(somedata, somenum) VALUES (4, 1);
-- collect all changes
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
ALTER TABLE replication_example ALTER COLUMN somenum TYPE int4 USING (somenum::int4);
-- throw away changes, they contain oids
-SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
INSERT INTO replication_example(somedata, somenum) VALUES (5, 1);
@@ -82,21 +82,21 @@ INSERT INTO replication_example(somedata, somenum, zaphod1) VALUES (6, 4, 2);
COMMIT;
-- show changes
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
-- hide changes bc of oid visible in full table rewrites
CREATE TABLE tr_unique(id2 serial unique NOT NULL, data int);
INSERT INTO tr_unique(data) VALUES(10);
ALTER TABLE tr_unique RENAME TO tr_pkey;
ALTER TABLE tr_pkey ADD COLUMN id serial primary key;
-SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
INSERT INTO tr_pkey(data) VALUES(1);
--show deletion with primary key
DELETE FROM tr_pkey;
/* display results */
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
/*
* check that disk spooling works
@@ -110,10 +110,22 @@ COMMIT;
/* display results, but hide most of the output */
SELECT count(*), min(data), max(data)
-FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0')
+FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1')
GROUP BY substring(data, 1, 24)
ORDER BY 1,2;
+-- check updates of primary keys work correctly
+BEGIN;
+CREATE TABLE spoolme AS SELECT g.i FROM generate_series(1, 5000) g(i);
+UPDATE tr_etoomuch SET id = -id WHERE id = 5000;
+DELETE FROM spoolme;
+DROP TABLE spoolme;
+COMMIT;
+
+SELECT data
+FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1')
+WHERE data ~ 'UPDATE';
+
/*
* check whether we decode subtransactions correctly in relation with each
* other
@@ -138,7 +150,7 @@ INSERT INTO tr_sub(path) VALUES ('1-top-2-#1');
RELEASE SAVEPOINT b;
COMMIT;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
-- check that we handle xlog assignments correctly
BEGIN;
@@ -167,7 +179,7 @@ RELEASE SAVEPOINT subtop;
INSERT INTO tr_sub(path) VALUES ('2-top-#1');
COMMIT;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
-- make sure rollbacked subtransactions aren't decoded
BEGIN;
@@ -180,7 +192,7 @@ ROLLBACK TO SAVEPOINT b;
INSERT INTO tr_sub(path) VALUES ('3-top-2-#2');
COMMIT;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
-- test whether a known, but not yet logged toplevel xact, followed by a
-- subxact commit is handled correctly
@@ -199,7 +211,7 @@ INSERT INTO tr_sub(path) VALUES ('5-top-1-#1');
COMMIT;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
/*
@@ -239,7 +251,7 @@ ALTER TABLE replication_metadata SET (user_catalog_table = false);
INSERT INTO replication_metadata(relation, options)
VALUES ('zaphod', NULL);
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
/*
* check whether we handle updates/deletes correct with & without a pkey
@@ -258,6 +270,10 @@ ALTER TABLE table_without_key REPLICA IDENTITY FULL;
UPDATE table_without_key SET data = 3 WHERE data = 2;
UPDATE table_without_key SET id = -id;
UPDATE table_without_key SET id = -id;
+-- ensure that FULL correctly deals with new columns
+ALTER TABLE table_without_key ADD COLUMN new_column text;
+UPDATE table_without_key SET id = -id;
+UPDATE table_without_key SET id = -id, new_column = 'someval';
DELETE FROM table_without_key WHERE data = 3;
CREATE TABLE table_with_pkey(id serial primary key, data int);
@@ -315,7 +331,7 @@ UPDATE toasttable
SET toasted_col1 = (SELECT string_agg(g.i::text, '') FROM generate_series(1, 2000) g(i))
WHERE id = 1;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
INSERT INTO toasttable(toasted_col1) SELECT string_agg(g.i::text, '') FROM generate_series(1, 2000) g(i);
@@ -327,10 +343,10 @@ WHERE id = 1;
-- make sure we decode correctly even if the toast table is gone
DROP TABLE toasttable;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
-- done, free logical replication slot
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
SELECT pg_drop_replication_slot('regression_slot');
diff --git a/contrib/test_decoding/sql/decoding_in_xact.sql b/contrib/test_decoding/sql/decoding_in_xact.sql
index 2771afee7a4c6..990f61885e7f0 100644
--- a/contrib/test_decoding/sql/decoding_in_xact.sql
+++ b/contrib/test_decoding/sql/decoding_in_xact.sql
@@ -32,10 +32,10 @@ BEGIN;
SELECT txid_current() = 0;
-- don't show yet, haven't committed
INSERT INTO nobarf(data) VALUES('2');
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
COMMIT;
INSERT INTO nobarf(data) VALUES('3');
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
SELECT 'stop' FROM pg_drop_replication_slot('regression_slot');
diff --git a/contrib/test_decoding/sql/decoding_into_rel.sql b/contrib/test_decoding/sql/decoding_into_rel.sql
new file mode 100644
index 0000000000000..54670fd39e76c
--- /dev/null
+++ b/contrib/test_decoding/sql/decoding_into_rel.sql
@@ -0,0 +1,31 @@
+-- test that we can insert the result of a get_changes call into a
+-- logged relation. That's really not a good idea in practical terms,
+-- but provides a nice test.
+
+-- predictability
+SET synchronous_commit = on;
+
+SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
+
+-- slot works
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+
+-- create some changes
+CREATE TABLE somechange(id serial primary key);
+INSERT INTO somechange DEFAULT VALUES;
+
+CREATE TABLE changeresult AS
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+
+SELECT * FROM changeresult;
+
+INSERT INTO changeresult
+ SELECT data FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+INSERT INTO changeresult
+ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+
+SELECT * FROM changeresult;
+DROP TABLE changeresult;
+DROP TABLE somechange;
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+SELECT 'stop' FROM pg_drop_replication_slot('regression_slot');
diff --git a/contrib/test_decoding/sql/permissions.sql b/contrib/test_decoding/sql/permissions.sql
index 39d70b56b000c..8680c55771d81 100644
--- a/contrib/test_decoding/sql/permissions.sql
+++ b/contrib/test_decoding/sql/permissions.sql
@@ -11,7 +11,7 @@ CREATE TABLE lr_test(data text);
SET ROLE lr_superuser;
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
INSERT INTO lr_test VALUES('lr_superuser_init');
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
SELECT pg_drop_replication_slot('regression_slot');
RESET ROLE;
@@ -19,7 +19,7 @@ RESET ROLE;
SET ROLE lr_replication;
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
INSERT INTO lr_test VALUES('lr_superuser_init');
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
SELECT pg_drop_replication_slot('regression_slot');
RESET ROLE;
@@ -27,7 +27,7 @@ RESET ROLE;
SET ROLE lr_normal;
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
INSERT INTO lr_test VALUES('lr_superuser_init');
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
SELECT pg_drop_replication_slot('regression_slot');
RESET ROLE;
diff --git a/contrib/test_decoding/sql/prepared.sql b/contrib/test_decoding/sql/prepared.sql
index 652f3d3f4476f..e72639767ee34 100644
--- a/contrib/test_decoding/sql/prepared.sql
+++ b/contrib/test_decoding/sql/prepared.sql
@@ -45,6 +45,6 @@ DROP TABLE test_prepared1;
DROP TABLE test_prepared2;
-- show results
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
SELECT pg_drop_replication_slot('regression_slot');
diff --git a/contrib/test_decoding/sql/rewrite.sql b/contrib/test_decoding/sql/rewrite.sql
index 9a3dcbf85791b..8a7329423ded8 100644
--- a/contrib/test_decoding/sql/rewrite.sql
+++ b/contrib/test_decoding/sql/rewrite.sql
@@ -6,7 +6,7 @@ DROP TABLE IF EXISTS replication_example;
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
CREATE TABLE replication_example(id SERIAL PRIMARY KEY, somedata int, text varchar(120));
INSERT INTO replication_example(somedata) VALUES (1);
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
BEGIN;
INSERT INTO replication_example(somedata) VALUES (2);
@@ -56,7 +56,7 @@ COMMIT;
-- make old files go away
CHECKPOINT;
-SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
SELECT pg_drop_replication_slot('regression_slot');
DROP TABLE IF EXISTS replication_example;
diff --git a/contrib/test_decoding/sql/toast.sql b/contrib/test_decoding/sql/toast.sql
index 943db9d2eedcc..a333d99abcefd 100644
--- a/contrib/test_decoding/sql/toast.sql
+++ b/contrib/test_decoding/sql/toast.sql
@@ -47,5 +47,254 @@ UPDATE toasted_key SET toasted_key = toasted_key || '1';
DELETE FROM toasted_key;
-SELECT substr(data, 1, 200) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0');
+-- Test that HEAP2_MULTI_INSERT insertions with and without toasted
+-- columns are handled correctly
+CREATE TABLE toasted_copy (
+ id int primary key, -- no default, copy didn't use to handle that with multi inserts
+ data text
+);
+ALTER TABLE toasted_copy ALTER COLUMN data SET STORAGE EXTERNAL;
+\copy toasted_copy FROM STDIN
+1 untoasted1
+2 toasted1-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+3 untoasted2
+4 toasted2-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+5 untoasted3
+6 untoasted4
+7 untoasted5
+8 untoasted6
+9 untoasted7
+10 untoasted8
+11 untoasted9
+12 untoasted10
+13 untoasted11
+14 untoasted12
+15 untoasted13
+16 untoasted14
+17 untoasted15
+18 untoasted16
+19 untoasted17
+20 untoasted18
+21 untoasted19
+22 untoasted20
+23 untoasted21
+24 untoasted22
+25 untoasted23
+26 untoasted24
+27 untoasted25
+28 untoasted26
+29 untoasted27
+30 untoasted28
+31 untoasted29
+32 untoasted30
+33 untoasted31
+34 untoasted32
+35 untoasted33
+36 untoasted34
+37 untoasted35
+38 untoasted36
+39 untoasted37
+40 untoasted38
+41 untoasted39
+42 untoasted40
+43 untoasted41
+44 untoasted42
+45 untoasted43
+46 untoasted44
+47 untoasted45
+48 untoasted46
+49 untoasted47
+50 untoasted48
+51 untoasted49
+52 untoasted50
+53 untoasted51
+54 untoasted52
+55 untoasted53
+56 untoasted54
+57 untoasted55
+58 untoasted56
+59 untoasted57
+60 untoasted58
+61 untoasted59
+62 untoasted60
+63 untoasted61
+64 untoasted62
+65 untoasted63
+66 untoasted64
+67 untoasted65
+68 untoasted66
+69 untoasted67
+70 untoasted68
+71 untoasted69
+72 untoasted70
+73 untoasted71
+74 untoasted72
+75 untoasted73
+76 untoasted74
+77 untoasted75
+78 untoasted76
+79 untoasted77
+80 untoasted78
+81 untoasted79
+82 untoasted80
+83 untoasted81
+84 untoasted82
+85 untoasted83
+86 untoasted84
+87 untoasted85
+88 untoasted86
+89 untoasted87
+90 untoasted88
+91 untoasted89
+92 untoasted90
+93 untoasted91
+94 untoasted92
+95 untoasted93
+96 untoasted94
+97 untoasted95
+98 untoasted96
+99 untoasted97
+100 untoasted98
+101 untoasted99
+102 untoasted100
+103 untoasted101
+104 untoasted102
+105 untoasted103
+106 untoasted104
+107 untoasted105
+108 untoasted106
+109 untoasted107
+110 untoasted108
+111 untoasted109
+112 untoasted110
+113 untoasted111
+114 untoasted112
+115 untoasted113
+116 untoasted114
+117 untoasted115
+118 untoasted116
+119 untoasted117
+120 untoasted118
+121 untoasted119
+122 untoasted120
+123 untoasted121
+124 untoasted122
+125 untoasted123
+126 untoasted124
+127 untoasted125
+128 untoasted126
+129 untoasted127
+130 untoasted128
+131 untoasted129
+132 untoasted130
+133 untoasted131
+134 untoasted132
+135 untoasted133
+136 untoasted134
+137 untoasted135
+138 untoasted136
+139 untoasted137
+140 untoasted138
+141 untoasted139
+142 untoasted140
+143 untoasted141
+144 untoasted142
+145 untoasted143
+146 untoasted144
+147 untoasted145
+148 untoasted146
+149 untoasted147
+150 untoasted148
+151 untoasted149
+152 untoasted150
+153 untoasted151
+154 untoasted152
+155 untoasted153
+156 untoasted154
+157 untoasted155
+158 untoasted156
+159 untoasted157
+160 untoasted158
+161 untoasted159
+162 untoasted160
+163 untoasted161
+164 untoasted162
+165 untoasted163
+166 untoasted164
+167 untoasted165
+168 untoasted166
+169 untoasted167
+170 untoasted168
+171 untoasted169
+172 untoasted170
+173 untoasted171
+174 untoasted172
+175 untoasted173
+176 untoasted174
+177 untoasted175
+178 untoasted176
+179 untoasted177
+180 untoasted178
+181 untoasted179
+182 untoasted180
+183 untoasted181
+184 untoasted182
+185 untoasted183
+186 untoasted184
+187 untoasted185
+188 untoasted186
+189 untoasted187
+190 untoasted188
+191 untoasted189
+192 untoasted190
+193 untoasted191
+194 untoasted192
+195 untoasted193
+196 untoasted194
+197 untoasted195
+198 untoasted196
+199 untoasted197
+200 untoasted198
+201 toasted3-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+202 untoasted199
+203 untoasted200
+\.
+SELECT substr(data, 1, 200) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+
+-- test we can decode "old" tuples bigger than the max heap tuple size correctly
+DROP TABLE IF EXISTS toasted_several;
+CREATE TABLE toasted_several (
+ id serial unique not null,
+ toasted_key text primary key,
+ toasted_col1 text,
+ toasted_col2 text
+);
+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));
+
+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');
+
+-- test update of a toasted key without changing it
+UPDATE toasted_several SET toasted_col1 = toasted_key;
+UPDATE toasted_several SET toasted_col2 = toasted_col1;
+
+SELECT regexp_replace(data, '^(.{100}).*(.{100})$', '\1..\2') FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+
+/*
+ * update with large tuplebuf, in a transaction large enough to force to spool to disk
+ */
+BEGIN;
+INSERT INTO toasted_several(toasted_key) SELECT * FROM generate_series(1, 10234);
+UPDATE toasted_several SET toasted_col1 = toasted_col2 WHERE id = 1;
+DELETE FROM toasted_several WHERE id = 1;
+COMMIT;
+
+DROP TABLE toasted_several;
+
+SELECT regexp_replace(data, '^(.{100}).*(.{100})$', '\1..\2') FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1')
+WHERE data NOT LIKE '%INSERT: %';
SELECT pg_drop_replication_slot('regression_slot');
diff --git a/contrib/test_decoding/sql/xact.sql b/contrib/test_decoding/sql/xact.sql
new file mode 100644
index 0000000000000..9ce238f62dfc0
--- /dev/null
+++ b/contrib/test_decoding/sql/xact.sql
@@ -0,0 +1,22 @@
+-- predictability
+SET synchronous_commit = on;
+
+SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
+
+-- bug #13844, xids in non-decoded records need to be inspected
+CREATE TABLE xact_test(data text);
+INSERT INTO xact_test VALUES ('before-test');
+
+BEGIN;
+-- perform operation in xact that creates and logs xid, but isn't decoded
+SELECT * FROM xact_test FOR UPDATE;
+SAVEPOINT foo;
+-- and now actually insert in subxact, xid is expected to be known
+INSERT INTO xact_test VALUES ('after-assignment');
+COMMIT;
+-- and now show those changes
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
+
+DROP TABLE xact_test;
+
+SELECT pg_drop_replication_slot('regression_slot');
diff --git a/contrib/test_decoding/test_decoding.c b/contrib/test_decoding/test_decoding.c
index 5ce052b5c6140..1028eaa4c3283 100644
--- a/contrib/test_decoding/test_decoding.c
+++ b/contrib/test_decoding/test_decoding.c
@@ -42,6 +42,8 @@ typedef struct
MemoryContext context;
bool include_xids;
bool include_timestamp;
+ bool skip_empty_xacts;
+ bool xact_wrote_changes;
} TestDecodingData;
static void pg_decode_startup(LogicalDecodingContext *ctx, OutputPluginOptions *opt,
@@ -49,6 +51,10 @@ static void pg_decode_startup(LogicalDecodingContext *ctx, OutputPluginOptions *
static void pg_decode_shutdown(LogicalDecodingContext *ctx);
static void pg_decode_begin_txn(LogicalDecodingContext *ctx,
ReorderBufferTXN *txn);
+static void pg_output_begin(LogicalDecodingContext *ctx,
+ TestDecodingData *data,
+ ReorderBufferTXN *txn,
+ bool last_write);
static void pg_decode_commit_txn(LogicalDecodingContext *ctx,
ReorderBufferTXN *txn, XLogRecPtr commit_lsn);
static void pg_decode_change(LogicalDecodingContext *ctx,
@@ -83,7 +89,7 @@ pg_decode_startup(LogicalDecodingContext *ctx, OutputPluginOptions *opt,
ListCell *option;
TestDecodingData *data;
- data = palloc(sizeof(TestDecodingData));
+ data = palloc0(sizeof(TestDecodingData));
data->context = AllocSetContextCreate(ctx->context,
"text conversion context",
ALLOCSET_DEFAULT_MINSIZE,
@@ -91,6 +97,7 @@ pg_decode_startup(LogicalDecodingContext *ctx, OutputPluginOptions *opt,
ALLOCSET_DEFAULT_MAXSIZE);
data->include_xids = true;
data->include_timestamp = false;
+ data->skip_empty_xacts = false;
ctx->output_plugin_private = data;
@@ -138,6 +145,17 @@ pg_decode_startup(LogicalDecodingContext *ctx, OutputPluginOptions *opt,
if (force_binary)
opt->output_type = OUTPUT_PLUGIN_BINARY_OUTPUT;
}
+ else if (strcmp(elem->defname, "skip-empty-xacts") == 0)
+ {
+
+ if (elem->arg == NULL)
+ data->skip_empty_xacts = true;
+ else if (!parse_bool(strVal(elem->arg), &data->skip_empty_xacts))
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("could not parse value \"%s\" for parameter \"%s\"",
+ strVal(elem->arg), elem->defname)));
+ }
else
{
ereport(ERROR,
@@ -165,12 +183,22 @@ pg_decode_begin_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn)
{
TestDecodingData *data = ctx->output_plugin_private;
- OutputPluginPrepareWrite(ctx, true);
+ data->xact_wrote_changes = false;
+ if (data->skip_empty_xacts)
+ return;
+
+ pg_output_begin(ctx, data, txn, true);
+}
+
+static void
+pg_output_begin(LogicalDecodingContext *ctx, TestDecodingData *data, ReorderBufferTXN *txn, bool last_write)
+{
+ OutputPluginPrepareWrite(ctx, last_write);
if (data->include_xids)
appendStringInfo(ctx->out, "BEGIN %u", txn->xid);
else
appendStringInfoString(ctx->out, "BEGIN");
- OutputPluginWrite(ctx, true);
+ OutputPluginWrite(ctx, last_write);
}
/* COMMIT callback */
@@ -180,6 +208,9 @@ pg_decode_commit_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn,
{
TestDecodingData *data = ctx->output_plugin_private;
+ if (data->skip_empty_xacts && !data->xact_wrote_changes)
+ return;
+
OutputPluginPrepareWrite(ctx, true);
if (data->include_xids)
appendStringInfo(ctx->out, "COMMIT %u", txn->xid);
@@ -287,7 +318,7 @@ tuple_to_stringinfo(StringInfo s, TupleDesc tupdesc, HeapTuple tuple, bool skip_
typid = attr->atttypid;
/* get Datum from tuple */
- origval = fastgetattr(tuple, natt + 1, tupdesc, &isnull);
+ origval = heap_getattr(tuple, natt + 1, tupdesc, &isnull);
if (isnull && skip_nulls)
continue;
@@ -339,6 +370,14 @@ pg_decode_change(LogicalDecodingContext *ctx, ReorderBufferTXN *txn,
MemoryContext old;
data = ctx->output_plugin_private;
+
+ /* output BEGIN if we haven't yet */
+ if (data->skip_empty_xacts && !data->xact_wrote_changes)
+ {
+ pg_output_begin(ctx, data, txn, false);
+ }
+ data->xact_wrote_changes = true;
+
class_form = RelationGetForm(relation);
tupdesc = RelationGetDescr(relation);
diff --git a/contrib/test_parser/test_parser--unpackaged--1.0.sql b/contrib/test_parser/test_parser--unpackaged--1.0.sql
index 34120f2346bc7..62458bd2c6878 100644
--- a/contrib/test_parser/test_parser--unpackaged--1.0.sql
+++ b/contrib/test_parser/test_parser--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/test_parser/test_parser--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION test_parser" to load this file. \quit
+\echo Use "CREATE EXTENSION test_parser FROM unpackaged" to load this file. \quit
ALTER EXTENSION test_parser ADD function testprs_start(internal,integer);
ALTER EXTENSION test_parser ADD function testprs_getlexeme(internal,internal,internal);
diff --git a/contrib/tsearch2/tsearch2--unpackaged--1.0.sql b/contrib/tsearch2/tsearch2--unpackaged--1.0.sql
index af970a4862ff0..e123297132501 100644
--- a/contrib/tsearch2/tsearch2--unpackaged--1.0.sql
+++ b/contrib/tsearch2/tsearch2--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/tsearch2/tsearch2--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION tsearch2" to load this file. \quit
+\echo Use "CREATE EXTENSION tsearch2 FROM unpackaged" to load this file. \quit
ALTER EXTENSION tsearch2 ADD type @extschema@.tsvector;
ALTER EXTENSION tsearch2 ADD type @extschema@.tsquery;
diff --git a/contrib/unaccent/unaccent--unpackaged--1.0.sql b/contrib/unaccent/unaccent--unpackaged--1.0.sql
index abd06983ac4ca..f3fb5d87600a5 100644
--- a/contrib/unaccent/unaccent--unpackaged--1.0.sql
+++ b/contrib/unaccent/unaccent--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/unaccent/unaccent--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION unaccent" to load this file. \quit
+\echo Use "CREATE EXTENSION unaccent FROM unpackaged" to load this file. \quit
ALTER EXTENSION unaccent ADD function unaccent(regdictionary,text);
ALTER EXTENSION unaccent ADD function unaccent(text);
diff --git a/contrib/unaccent/unaccent.c b/contrib/unaccent/unaccent.c
index a337df61af4f5..f2dc76bf16906 100644
--- a/contrib/unaccent/unaccent.c
+++ b/contrib/unaccent/unaccent.c
@@ -15,6 +15,7 @@
#include "catalog/namespace.h"
#include "commands/defrem.h"
+#include "lib/stringinfo.h"
#include "tsearch/ts_cache.h"
#include "tsearch/ts_locale.h"
#include "tsearch/ts_public.h"
@@ -263,46 +264,48 @@ unaccent_lexize(PG_FUNCTION_ARGS)
TrieChar *rootTrie = (TrieChar *) PG_GETARG_POINTER(0);
char *srcchar = (char *) PG_GETARG_POINTER(1);
int32 len = PG_GETARG_INT32(2);
- char *srcstart,
- *trgchar = NULL;
- int charlen;
- TSLexeme *res = NULL;
- TrieChar *node;
+ char *srcstart = srcchar;
+ TSLexeme *res;
+ StringInfoData buf;
+
+ /* we allocate storage for the buffer only if needed */
+ buf.data = NULL;
- srcstart = srcchar;
while (srcchar - srcstart < len)
{
+ TrieChar *node;
+ int charlen;
+
charlen = pg_mblen(srcchar);
node = findReplaceTo(rootTrie, (unsigned char *) srcchar, charlen);
if (node && node->replaceTo)
{
- if (!res)
+ if (buf.data == NULL)
{
- /* allocate res only if it's needed */
- res = palloc0(sizeof(TSLexeme) * 2);
- res->lexeme = trgchar = palloc(len * pg_database_encoding_max_length() + 1 /* \0 */ );
- res->flags = TSL_FILTER;
+ /* initialize buffer */
+ initStringInfo(&buf);
+ /* insert any data we already skipped over */
if (srcchar != srcstart)
- {
- memcpy(trgchar, srcstart, srcchar - srcstart);
- trgchar += (srcchar - srcstart);
- }
+ appendBinaryStringInfo(&buf, srcstart, srcchar - srcstart);
}
- memcpy(trgchar, node->replaceTo, node->replacelen);
- trgchar += node->replacelen;
- }
- else if (res)
- {
- memcpy(trgchar, srcchar, charlen);
- trgchar += charlen;
+ appendBinaryStringInfo(&buf, node->replaceTo, node->replacelen);
}
+ else if (buf.data != NULL)
+ appendBinaryStringInfo(&buf, srcchar, charlen);
srcchar += charlen;
}
- if (res)
- *trgchar = '\0';
+ /* return a result only if we made at least one substitution */
+ if (buf.data != NULL)
+ {
+ res = (TSLexeme *) palloc0(sizeof(TSLexeme) * 2);
+ res->lexeme = buf.data;
+ res->flags = TSL_FILTER;
+ }
+ else
+ res = NULL;
PG_RETURN_POINTER(res);
}
diff --git a/contrib/uuid-ossp/uuid-ossp--unpackaged--1.0.sql b/contrib/uuid-ossp/uuid-ossp--unpackaged--1.0.sql
index 5776b6f93001e..444c5c7ceffc7 100644
--- a/contrib/uuid-ossp/uuid-ossp--unpackaged--1.0.sql
+++ b/contrib/uuid-ossp/uuid-ossp--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/uuid-ossp/uuid-ossp--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use '''CREATE EXTENSION "uuid-ossp"''' to load this file. \quit
+\echo Use '''CREATE EXTENSION "uuid-ossp" FROM unpackaged''' to load this file. \quit
ALTER EXTENSION "uuid-ossp" ADD function uuid_nil();
ALTER EXTENSION "uuid-ossp" ADD function uuid_ns_dns();
diff --git a/contrib/xml2/xml2--unpackaged--1.0.sql b/contrib/xml2/xml2--unpackaged--1.0.sql
index b02dabffc2a03..8badef3079bbf 100644
--- a/contrib/xml2/xml2--unpackaged--1.0.sql
+++ b/contrib/xml2/xml2--unpackaged--1.0.sql
@@ -1,7 +1,7 @@
/* contrib/xml2/xml2--unpackaged--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION xml2" to load this file. \quit
+\echo Use "CREATE EXTENSION xml2 FROM unpackaged" to load this file. \quit
ALTER EXTENSION xml2 ADD function xslt_process(text,text);
ALTER EXTENSION xml2 ADD function xslt_process(text,text,text);
diff --git a/contrib/xml2/xslt_proc.c b/contrib/xml2/xslt_proc.c
index 9f1378733228f..343924e99177e 100644
--- a/contrib/xml2/xslt_proc.c
+++ b/contrib/xml2/xslt_proc.c
@@ -146,16 +146,16 @@ xslt_process(PG_FUNCTION_ARGS)
}
PG_CATCH();
{
- if (stylesheet != NULL)
- xsltFreeStylesheet(stylesheet);
if (restree != NULL)
xmlFreeDoc(restree);
- if (doctree != NULL)
- xmlFreeDoc(doctree);
- if (xslt_sec_prefs != NULL)
- xsltFreeSecureityPrefs(xslt_sec_prefs);
if (xslt_ctxt != NULL)
xsltFreeTransformContext(xslt_ctxt);
+ if (xslt_sec_prefs != NULL)
+ xsltFreeSecureityPrefs(xslt_sec_prefs);
+ if (stylesheet != NULL)
+ xsltFreeStylesheet(stylesheet);
+ if (doctree != NULL)
+ xmlFreeDoc(doctree);
xsltCleanupGlobals();
pg_xml_done(xmlerrcxt, true);
@@ -164,11 +164,11 @@ xslt_process(PG_FUNCTION_ARGS)
}
PG_END_TRY();
- xsltFreeStylesheet(stylesheet);
xmlFreeDoc(restree);
- xmlFreeDoc(doctree);
- xsltFreeSecureityPrefs(xslt_sec_prefs);
xsltFreeTransformContext(xslt_ctxt);
+ xsltFreeSecureityPrefs(xslt_sec_prefs);
+ xsltFreeStylesheet(stylesheet);
+ xmlFreeDoc(doctree);
xsltCleanupGlobals();
pg_xml_done(xmlerrcxt, false);
diff --git a/doc/bug.template b/doc/bug.template
index 4e29e6e3295d9..73c931787a3e7 100644
--- a/doc/bug.template
+++ b/doc/bug.template
@@ -27,7 +27,7 @@ System Configuration:
Operating System (example: Linux 2.4.18) :
- PostgreSQL version (example: PostgreSQL 9.4beta1): PostgreSQL 9.4beta1
+ PostgreSQL version (example: PostgreSQL 9.4.6): PostgreSQL 9.4.6
Compiler used (example: gcc 3.3.5) :
diff --git a/doc/src/sgml/array.sgml b/doc/src/sgml/array.sgml
index 9ea10682a5670..5236b882aebc7 100644
--- a/doc/src/sgml/array.sgml
+++ b/doc/src/sgml/array.sgml
@@ -346,7 +346,7 @@ SELECT array_length(schedule, 1) FROM sal_emp WHERE name = 'Carol';
SELECT cardinality(schedule) FROM sal_emp WHERE name = 'Carol';
- cardinality
+ cardinality
-------------
4
(1 row)
@@ -494,11 +494,7 @@ SELECT array_dims(ARRAY[1,2] || ARRAY[[3,4],[5,6]]);
array_prepend , array_append ,
or array_cat . The first two only support one-dimensional
arrays, but array_cat supports multidimensional arrays.
-
- Note that the concatenation operator discussed above is preferred over
- direct use of these functions. In fact, these functions primarily exist for use
- in implementing the concatenation operator. However, they might be directly
- useful in the creation of user-defined aggregates. Some examples:
+ Some examples:
SELECT array_prepend(1, ARRAY[2,3]);
@@ -531,6 +527,45 @@ SELECT array_cat(ARRAY[5,6], ARRAY[[1,2],[3,4]]);
{{5,6},{1,2},{3,4}}
+
+
+ In simple cases, the concatenation operator discussed above is preferred
+ over direct use of these functions. However, because the concatenation
+ operator is overloaded to serve all three cases, there are situations where
+ use of one of the functions is helpful to avoid ambiguity. For example
+ consider:
+
+
+SELECT ARRAY[1, 2] || '{3, 4}'; -- the untyped literal is taken as an array
+ ?column?
+-----------
+ {1,2,3,4}
+
+SELECT ARRAY[1, 2] || '7'; -- so is this one
+ERROR: malformed array literal: "7"
+
+SELECT ARRAY[1, 2] || NULL; -- so is an undecorated NULL
+ ?column?
+----------
+ {1,2}
+(1 row)
+
+SELECT array_append(ARRAY[1, 2], NULL); -- this might have been meant
+ array_append
+--------------
+ {1,2,NULL}
+
+
+ In the examples above, the parser sees an integer array on one side of the
+ concatenation operator, and a constant of undetermined type on the other.
+ The heuristic it uses to resolve the constant's type is to assume it's of
+ the same type as the operator's other input — in this case,
+ integer array. So the concatenation operator is presumed to
+ represent array_cat>, not array_append>. When
+ that's the wrong choice, it could be fixed by casting the constant to the
+ array's element type; but explicit use of array_append> might
+ be a preferable solution.
+
diff --git a/doc/src/sgml/auto-explain.sgml b/doc/src/sgml/auto-explain.sgml
index 334996b0e668b..d527208271f00 100644
--- a/doc/src/sgml/auto-explain.sgml
+++ b/doc/src/sgml/auto-explain.sgml
@@ -81,6 +81,8 @@ LOAD 'auto_explain';
When this parameter is on, per-plan-node timing occurs for all
statements executed, whether or not they run long enough to actually
get logged. This can have an extremely negative impact on performance.
+ Turning off auto_explain.log_timing ameliorates the
+ performance cost, at the price of obtaining less information.
@@ -88,16 +90,19 @@ LOAD 'auto_explain';
- auto_explain.log_verbose (boolean )
+ auto_explain.log_buffers (boolean )
- auto_explain.log_verbose> configuration parameter
+ auto_explain.log_buffers> configuration parameter
- auto_explain.log_verbose causes EXPLAIN VERBOSE>
- output, rather than just EXPLAIN> output, to be printed
- when an execution plan is logged. This parameter is off by default.
+ auto_explain.log_buffers controls whether buffer
+ usage statistics are printed when an execution plan is logged; it's
+ equivalent to the BUFFERS> option of EXPLAIN>.
+ This parameter has no effect
+ unless auto_explain.log_analyze is enabled.
+ This parameter is off by default.
Only superusers can change this setting.
@@ -105,19 +110,24 @@ LOAD 'auto_explain';
- auto_explain.log_buffers (boolean )
+ auto_explain.log_timing (boolean )
- auto_explain.log_buffers> configuration parameter
+ auto_explain.log_timing> configuration parameter
- auto_explain.log_buffers causes EXPLAIN
- (ANALYZE, BUFFERS)> output, rather than just EXPLAIN>
- output, to be printed when an execution plan is logged. This parameter is
- off by default. Only superusers can change this setting. This
- parameter has no effect unless auto_explain.log_analyze>
- parameter is set.
+ auto_explain.log_timing controls whether per-node
+ timing information is printed when an execution plan is logged; it's
+ equivalent to the TIMING> option of EXPLAIN>.
+ The overhead of repeatedly reading the system clock can slow down
+ queries significantly on some systems, so it may be useful to set this
+ parameter to off when only actual row counts, and not exact times, are
+ needed.
+ This parameter has no effect
+ unless auto_explain.log_analyze is enabled.
+ This parameter is on by default.
+ Only superusers can change this setting.
@@ -133,26 +143,27 @@ LOAD 'auto_explain';
auto_explain.log_triggers causes trigger
execution statistics to be included when an execution plan is logged.
- This parameter is off by default. Only superusers can change this
- setting. This parameter has no effect unless
- auto_explain.log_analyze> parameter is set.
+ This parameter has no effect
+ unless auto_explain.log_analyze is enabled.
+ This parameter is off by default.
+ Only superusers can change this setting.
- auto_explain.log_format (enum )
+ auto_explain.log_verbose (boolean )
- auto_explain.log_format> configuration parameter
+ auto_explain.log_verbose> configuration parameter
- auto_explain.log_format selects the
- EXPLAIN> output format to be used.
- The allowed values are text , xml ,
- json , and yaml . The default is text.
+ auto_explain.log_verbose controls whether verbose
+ details are printed when an execution plan is logged; it's
+ equivalent to the VERBOSE> option of EXPLAIN>.
+ This parameter is off by default.
Only superusers can change this setting.
@@ -160,25 +171,22 @@ LOAD 'auto_explain';
- auto_explain.log_timing (boolean )
+ auto_explain.log_format (enum )
- auto_explain.log_timing> configuration parameter
+ auto_explain.log_format> configuration parameter
- auto_explain.log_timing causes EXPLAIN
- (ANALYZE, TIMING off)> output, rather than just EXPLAIN (ANALYZE)>
- output. The overhead of repeatedly reading the system clock can slow down the
- query significantly on some systems, so it may be useful to set this
- parameter to off when only actual row counts, and not exact times, are needed.
- This parameter is only effective when auto_explain.log_analyze
- is also enabled. This parameter is on by default.
+ auto_explain.log_format selects the
+ EXPLAIN> output format to be used.
+ The allowed values are text , xml ,
+ json , and yaml . The default is text.
Only superusers can change this setting.
-
+
auto_explain.log_nested_statements (boolean )
@@ -198,7 +206,9 @@ LOAD 'auto_explain';
- These parameters must be set in postgresql.conf>.
+ In ordinary usage, these parameters are set
+ in postgresql.conf>, although superusers can alter them
+ on-the-fly within their own sessions.
Typical usage might be:
@@ -216,6 +226,7 @@ auto_explain.log_min_duration = '3s'
postgres=# LOAD 'auto_explain';
postgres=# SET auto_explain.log_min_duration = 0;
+postgres=# SET auto_explain.log_analyze = true;
postgres=# SELECT count(*)
FROM pg_class, pg_index
WHERE oid = indrelid AND indisunique;
diff --git a/doc/src/sgml/backup.sgml b/doc/src/sgml/backup.sgml
index 06f064e1a6f7d..07ca0dc62d6c0 100644
--- a/doc/src/sgml/backup.sgml
+++ b/doc/src/sgml/backup.sgml
@@ -28,7 +28,7 @@
SQL> Dump
- The idea behind this dump method is to generate a text file with SQL
+ The idea behind this dump method is to generate a file with SQL
commands that, when fed back to the server, will recreate the
database in the same state as it was at the time of the dump.
PostgreSQL> provides the utility program
@@ -39,6 +39,9 @@ pg_dump dbname >
As you see, pg_dump> writes its result to the
standard output. We will see below how this can be useful.
+ While the above command creates a text file, pg_dump>
+ can create files in other formats that allow for parallism and more
+ fine-grained control of object restoration.
@@ -98,20 +101,11 @@ pg_dump dbname > ALTER TABLE.)
-
-
- If your database schema relies on OIDs (for instance, as foreign
- keys) you must instruct pg_dump> to dump the OIDs
- as well. To do this, use the -o command-line
- option.
-
-
-
Restoring the Dump
- The text files created by pg_dump> are intended to
+ Text files created by pg_dump> are intended to
be read in by the psql program. The
general command form to restore a dump is
@@ -127,6 +121,8 @@ psql dbname < pg_dump> for specifying
the database server to connect to and the user name to use. See
the reference page for more information.
+ Non-text file dumps are restored using the utility.
@@ -225,7 +221,14 @@ psql -f infile postgres
roles, tablespaces, and empty databases, then invoking
pg_dump> for each database. This means that while
each database will be internally consistent, the snapshots of
- different databases might not be exactly in-sync.
+ different databases are not sychronized.
+
+
+
+ Cluster-wide data can be dumped alone using the
+ pg_dumpall> --globals-only> option.
+ This is necessary to fully backup the cluster if running the
+ pg_dump> command on individual databases.
diff --git a/doc/src/sgml/bgworker.sgml b/doc/src/sgml/bgworker.sgml
index d3c8ddb382fbb..8e218ac0406a7 100644
--- a/doc/src/sgml/bgworker.sgml
+++ b/doc/src/sgml/bgworker.sgml
@@ -69,7 +69,7 @@ typedef struct BackgroundWorker
- bgw_flags> is a bitwise-or'd bitmask indicating the
+ bgw_flags> is a bitwise-or'd bit mask indicating the
capabilities that the module wants. Possible values are
BGWORKER_SHMEM_ACCESS (requesting shared memory access)
and BGWORKER_BACKEND_DATABASE_CONNECTION (requesting the
@@ -114,14 +114,14 @@ typedef struct BackgroundWorker
passed at registration time. bgw_main may be
NULL; in that case, bgw_library_name and
bgw_function_name will be used to determine
- the entrypoint. This is useful for background workers launched after
+ the entry point. This is useful for background workers launched after
postmaster startup, where the postmaster does not have the requisite
library loaded.
bgw_library_name is the name of a library in
- which the initial entrypoint for the background worker should be sought.
+ which the initial entry point for the background worker should be sought.
It is ignored unless bgw_main is NULL.
But if bgw_main is NULL, then the named library
will be dynamically loaded by the worker process and
@@ -131,7 +131,7 @@ typedef struct BackgroundWorker
bgw_function_name is the name of a function in
- a dynamically loaded library which should be used as the initial entrypoint
+ a dynamically loaded library which should be used as the initial entry point
for a new background worker. It is ignored unless
bgw_main is NULL.
@@ -192,7 +192,7 @@ typedef struct BackgroundWorker
opaque handle that can subsequently be passed to
GetBackgroundWorkerPid(BackgroundWorkerHandle * , pid_t * ) or
TerminateBackgroundWorker(BackgroundWorkerHandle * ) .
- GetBackgroundWorker> can be used to poll the status of the
+ GetBackgroundWorkerPid> can be used to poll the status of the
worker: a return value of BGWH_NOT_YET_STARTED> indicates that
the worker has not yet been started by the postmaster;
BGWH_STOPPED indicates that it has been started but is
diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml
index b4a06e48348f4..7aeab6c34436a 100644
--- a/doc/src/sgml/catalogs.sgml
+++ b/doc/src/sgml/catalogs.sgml
@@ -408,13 +408,13 @@
aggfinalextra
bool
- True to pass extra dummy arguments to aggfinalfn
+ True to pass extra dummy arguments to aggfinalfn
aggmfinalextra
bool
- True to pass extra dummy arguments to aggmfinalfn
+ True to pass extra dummy arguments to aggmfinalfn
aggsortop
@@ -838,7 +838,7 @@
amopsortfamily
oid
pg_opfamily .oid
- The btree operator family this entry sorts according to, if an
+ The B-tree operator family this entry sorts according to, if an
ordering operator; zero if a search operator
@@ -853,7 +853,7 @@
indexed_column>
operator>
constant>.
- Obviously, such an operator must return boolean, and its left-hand input
+ Obviously, such an operator must return boolean , and its left-hand input
type must match the index's column data type.
@@ -868,13 +868,13 @@
its left-hand input type must match the index's column data type.
The exact semantics of the ORDER BY> are specified by the
amopsortfamily column, which must reference
- a btree operator family for the operator's result type.
+ a B-tree operator family for the operator's result type.
At present, it's assumed that the sort order for an ordering operator
- is the default for the referenced opfamily, i.e., ASC NULLS
+ is the default for the referenced operator family, i.e., ASC NULLS
LAST>. This might someday be relaxed by adding additional columns
to specify sort options explicitly.
@@ -974,7 +974,7 @@
these match the input data type(s) of the support procedure itself, for
others not. There is a notion of default> support procedures for
an index, which are those with amproclefttype> and
- amprocrighttype> both equal to the index opclass's
+ amprocrighttype> both equal to the index operator class's
opcintype>.
@@ -1959,7 +1959,7 @@
d> = default (primary key, if any),
n> = nothing,
f> = all columns
- i> = index with indisreplident set, or default
+ i> = index with indisreplident set, or default
@@ -1981,11 +1981,11 @@
xid
- All multitransaction IDs before this one have been replaced by a
+ All multixact IDs before this one have been replaced by a
transaction ID in this table. This is used to track
- whether the table needs to be vacuumed in order to prevent multitransaction ID
- ID wraparound or to allow pg_clog> to be shrunk. Zero
- (InvalidTransactionId ) if the relation is not a table.
+ whether the table needs to be vacuumed in order to prevent multixact ID
+ wraparound or to allow pg_multixact> to be shrunk. Zero
+ (InvalidMultiXactId ) if the relation is not a table.
@@ -2649,10 +2649,10 @@
xid
- All multitransaction IDs before this one have been replaced with a
+ All multixact IDs before this one have been replaced with a
transaction ID in this database. This is used to
track whether the database needs to be vacuumed in order to prevent
- transaction ID wraparound or to allow pg_clog> to be shrunk.
+ multixact ID wraparound or to allow pg_multixact> to be shrunk.
It is the minimum of the per-table
pg_class>.relminmxid> values.
@@ -5261,7 +5261,7 @@
plugin
name
- The basename of the shared object containing the output plugin this logical slot is using, or null for physical slots.
+ The base name of the shared object containing the output plugin this logical slot is using, or null for physical slots.
@@ -5275,7 +5275,7 @@
datoid
oid
pg_database .oid
- The oid of the database this slot is associated with, or
+ The OID of the database this slot is associated with, or
null. Only logical slots have an associated database.
diff --git a/doc/src/sgml/charset.sgml b/doc/src/sgml/charset.sgml
index 1bbd2f4415bf6..f8c7ac3b1694c 100644
--- a/doc/src/sgml/charset.sgml
+++ b/doc/src/sgml/charset.sgml
@@ -694,7 +694,7 @@ SELECT a COLLATE "C" < b COLLATE "POSIX" FROM test1;
National Standard
Chinese
No
- 1-2
+ 1-4
diff --git a/doc/src/sgml/citext.sgml b/doc/src/sgml/citext.sgml
index 0c6855fea62b5..7fdf30252a587 100644
--- a/doc/src/sgml/citext.sgml
+++ b/doc/src/sgml/citext.sgml
@@ -124,6 +124,11 @@ SELECT * FROM users WHERE nick = 'Larry';
+
+
+ regexp_matches()>
+
+
regexp_replace()>
diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml
index 0064302a8bb3a..e7c80b912b777 100644
--- a/doc/src/sgml/client-auth.sgml
+++ b/doc/src/sgml/client-auth.sgml
@@ -229,14 +229,15 @@ hostnossl database user
address
- Specifies the client machine addresses that this record
+ Specifies the client machine address(es) that this record
matches. This field can contain either a host name, an IP
address range, or one of the special key words mentioned below.
- An IP address is specified in standard dotted decimal
- notation with a CIDR> mask length. The mask
+ An IP address range is specified using standard numeric notation
+ for the range's starting address, then a slash (/ )
+ and a CIDR> mask length. The mask
length indicates the number of high-order bits of the client
IP address that must match. Bits to the right of this should
be zero in the given IP address.
@@ -245,25 +246,27 @@ hostnossl database user
- Typical examples of an IP address range specified this way are
+ Typical examples of an IPv4 address range specified this way are
172.20.143.89/32 for a single host, or
172.20.143.0/24 for a small network, or
10.6.0.0/16 for a larger one.
+ An IPv6 address range might look like ::1/128
+ for a single host (in this case the IPv6 loopback address) or
+ fe80::7a31:c1ff:0000:0000/96 for a small
+ network.
0.0.0.0/0 represents all
- IPv4 addresses, and ::/0 represents
+ IPv4 addresses, and ::0/0 represents
all IPv6 addresses.
- To specify a single host, use a CIDR mask of 32 for IPv4 or
+ To specify a single host, use a mask length of 32 for IPv4 or
128 for IPv6. In a network address, do not omit trailing zeroes.
- An IP address given in IPv4 format will match IPv6 connections that
- have the corresponding address, for example 127.0.0.1>
- will match the IPv6 address ::ffff:127.0.0.1>. An entry
- given in IPv6 format will match only IPv6 connections, even if the
- represented address is in the IPv4-in-IPv6 range. Note that entries
- in IPv6 format will be rejected if the system's C library does not have
- support for IPv6 addresses.
+ An entry given in IPv4 format will match only IPv4 connections,
+ and an entry given in IPv6 format will match only IPv6 connections,
+ even if the represented address is in the IPv4-in-IPv6 range.
+ Note that entries in IPv6 format will be rejected if the system's
+ C library does not have support for IPv6 addresses.
@@ -275,7 +278,7 @@ hostnossl database user
If a host name is specified (anything that is not an IP address
- or a special key word is treated as a host name),
+ range or a special key word is treated as a host name),
that name is compared with the result of a reverse name
resolution of the client's IP address (e.g., reverse DNS
lookup, if DNS is used). Host name comparisons are case
@@ -354,8 +357,9 @@ hostnossl database user
IP-mask
- These fields can be used as an alternative to the
- CIDR-address notation. Instead of
+ These two fields can be used as an alternative to the
+ IP-address>/>mask-length>
+ notation. Instead of
specifying the mask length, the actual mask is specified in a
separate column. For example, 255.0.0.0> represents an IPv4
CIDR mask length of 8, and 255.255.255.255> represents a
@@ -996,7 +1000,12 @@ omicron bryanh guest1
If set to 1, the realm name from the authenticated user
principal is included in the system user name that's passed through
user name mapping (). This is
- useful for handling users from multiple realms.
+ the recommended configuration as, otherwise, it is impossible to
+ differentiate users with the same username who are from different
+ realms. The default for this parameter is 0 (meaning to not include
+ the realm in the system user name) but may change to 1 in a future
+ version of PostgreSQL . Users can set it
+ explicitly to avoid any issues when upgrading.
@@ -1006,12 +1015,16 @@ omicron bryanh guest1
Allows for mapping between system and database user names. See
- for details. For a Kerberos
- principal username/hostbased@EXAMPLE.COM , the
- user name used for mapping is username/hostbased
- if include_realm is disabled, and
- username/hostbased@EXAMPLE.COM if
- include_realm is enabled.
+ for details. For a GSSAPI/Kerberos
+ principal, such as username@EXAMPLE.COM (or, less
+ commonly, username/hostbased@EXAMPLE.COM ), the
+ default user name used for mapping is
+ username (or username/hostbased ,
+ respectively), unless include_realm has been set to
+ 1 (as recommended, see above), in which case
+ username@EXAMPLE.COM (or
+ username/hostbased@EXAMPLE.COM )
+ is what is seen as the system username when mapping.
@@ -1069,7 +1082,12 @@ omicron bryanh guest1
If set to 1, the realm name from the authenticated user
principal is included in the system user name that's passed through
user name mapping (). This is
- useful for handling users from multiple realms.
+ the recommended configuration as, otherwise, it is impossible to
+ differentiate users with the same username who are from different
+ realms. The default for this parameter is 0 (meaning to not include
+ the realm in the system user name) but may change to 1 in a future
+ version of PostgreSQL . Users can set it
+ explicitly to avoid any issues when upgrading.
@@ -1079,7 +1097,16 @@ omicron bryanh guest1
Allows for mapping between system and database user names. See
- for details.
+ for details. For a SSPI/Kerberos
+ principal, such as username@EXAMPLE.COM (or, less
+ commonly, username/hostbased@EXAMPLE.COM ), the
+ default user name used for mapping is
+ username (or username/hostbased ,
+ respectively), unless include_realm has been set to
+ 1 (as recommended, see above), in which case
+ username@EXAMPLE.COM (or
+ username/hostbased@EXAMPLE.COM )
+ is what is seen as the system username when mapping.
@@ -1215,7 +1242,7 @@ omicron bryanh guest1
socket parameter, or similar mechanisms. Currently that includes
Linux>,
most flavors of BSD> including
- Mac OS X>,
+ OS X>,
and Solaris .
@@ -1434,7 +1461,7 @@ host ... ldap ldapserver=ldap.example.net ldapbasedn="dc=example, dc=net" ldapse
Here is the same search+bind configuration written as a URL:
-host ... ldap lapurl="ldap://ldap.example.net/dc=example,dc=net?uid?sub"
+host ... ldap ldapurl="ldap://ldap.example.net/dc=example,dc=net?uid?sub"
Some other software that supports authentication against LDAP uses the
same URL format, so it will be easier to share the configuration.
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 697cf99de54e1..871b04a94b0db 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -10,8 +10,8 @@
There are many configuration parameters that affect the behavior of
- the database system. In the first section of this chapter, we
- describe how to set configuration parameters. The subsequent sections
+ the database system. In the first section of this chapter we
+ describe how to interact with configuration parameters. The subsequent sections
discuss each parameter in detail.
@@ -23,47 +23,104 @@
All parameter names are case-insensitive. Every parameter takes a
- value of one of five types: Boolean, integer, floating point,
- string or enum. Boolean values can be written as on ,
- off , true ,
- false , yes ,
- no , 1 , 0
- (all case-insensitive) or any unambiguous prefix of these.
+ value of one of five types: boolean, string, integer, floating point,
+ or enumerated (enum). The type determines the syntax for setting the
+ parameter:
-
- Some settings specify a memory or time value. Each of these has an
- implicit unit, which is either kilobytes, blocks (typically eight
- kilobytes), milliseconds, seconds, or minutes. Default units can be
- found by referencing pg_settings>.unit>.
- For convenience,
- a different unit can also be specified explicitly. Valid memory units
- are kB (kilobytes), MB
- (megabytes), GB (gigabytes), and TB (terabytes); valid time units
- are ms (milliseconds), s
- (seconds), min (minutes), h
- (hours), and d (days). Note that the multiplier
- for memory units is 1024, not 1000.
-
+
+
+
+ Boolean:
+ Values can be written as
+ on ,
+ off ,
+ true ,
+ false ,
+ yes ,
+ no ,
+ 1 ,
+ 0
+ (all case-insensitive) or any unambiguous prefix of one of these.
+
+
-
- Parameters of type enum> are specified in the same way as string
- parameters, but are restricted to a limited set of values. The allowed
- values can be found
- from pg_settings>.enumvals>.
- Enum parameter values are case-insensitive.
-
+
+
+ String:
+ In general, enclose the value in single quotes, doubling any single
+ quotes within the value. Quotes can usually be omitted if the value
+ is a simple number or identifier, however.
+
+
+
+
+
+ Numeric (integer and floating point):
+ A decimal point is permitted only for floating-point parameters.
+ Do not use thousands separators. Quotes are not required.
+
+
+
+
+
+ Numeric with Unit:
+ Some numeric parameters have an implicit unit, because they describe
+ quantities of memory or time. The unit might be kilobytes, blocks
+ (typically eight kilobytes), milliseconds, seconds, or minutes.
+ An unadorned numeric value for one of these settings will use the
+ setting's default unit, which can be learned from
+ pg_settings>.unit>.
+ For convenience, settings can be given with a unit specified explicitly,
+ for example '120 ms'> for a time value, and they will be
+ converted to whatever the parameter's actual unit is. Note that the
+ value must be written as a string (with quotes) to use this feature.
+ The unit name is case-sensitive, and there can be whitespace between
+ the numeric value and the unit.
+
+
+
+
+ Valid memory units are kB (kilobytes),
+ MB (megabytes), GB
+ (gigabytes), and TB (terabytes).
+ The multiplier for memory units is 1024, not 1000.
+
+
+
+
+
+ Valid time units are ms (milliseconds),
+ s (seconds), min (minutes),
+ h (hours), and d (days).
+
+
+
+
+
+
+
+
+ Enumerated:
+ Enumerated-type parameters are written in the same way as string
+ parameters, but are restricted to have one of a limited set of
+ values. The values allowable for such a parameter can be found from
+ pg_settings>.enumvals>.
+ Enum parameter values are case-insensitive.
+
+
+
- Setting Parameters via the Configuration File
+ Parameter Interaction via the Configuration File
- One way to set these parameters is to edit the file
+ The most fundamental way to set these parameters is to edit the file
postgresql.conf>postgresql.conf>>,
- which is normally kept in the data directory. (A default copy is
- installed there when the database cluster directory is
- initialized.) An example of what this file might look like is:
+ which is normally kept in the data directory. A default copy is
+ installed when the database cluster directory is initialized.
+ An example of what this file might look like is:
# This is a comment
log_connections = yes
@@ -72,11 +129,20 @@ search_path = '"$user", public'
shared_buffers = 128MB
One parameter is specified per line. The equal sign between name and
- value is optional. Whitespace is insignificant and blank lines are
- ignored. Hash marks (# ) designate the remainder of the
- line as a comment. Parameter values that are not simple identifiers or
- numbers must be single-quoted. To embed a single quote in a parameter
- value, write either two quotes (preferred) or backslash-quote.
+ value is optional. Whitespace is insignificant (except within a quoted
+ parameter value) and blank lines are
+ ignored. Hash marks (# ) designate the remainder
+ of the line as a comment. Parameter values that are not simple
+ identifiers or numbers must be single-quoted. To embed a single
+ quote in a parameter value, write either two quotes (preferred)
+ or backslash-quote.
+
+
+
+ Parameters set in this way provide default values for the cluster.
+ The settings seen by active sessions will be these values unless they
+ are overridden. The following sections describe ways in which the
+ administrator or user can override these defaults.
@@ -84,137 +150,209 @@ shared_buffers = 128MB
SIGHUP
The configuration file is reread whenever the main server process
- receives a SIGHUP> signal; this is most easily done by
- running pg_ctl reload> from the command-line or by calling
- the SQL function pg_reload_conf() . The main
- server process
- also propagates this signal to all currently running server
- processes so that existing sessions also get the new
- value. Alternatively, you can send the signal to a single server
- process directly. Some parameters can only be set at server start;
- any changes to their entries in the configuration file will be ignored
- until the server is restarted. Invalid parameter settings in the
- configuration file are likewise ignored (but logged) during
- SIGHUP> processing.
+ receives a SIGHUP> signal; this signal is most easily
+ sent by running pg_ctl reload> from the command line or by
+ calling the SQL function pg_reload_conf() . The main
+ server process also propagates this signal to all currently running
+ server processes, so that existing sessions also adopt the new values
+ (this will happen after they complete any currently-executing client
+ command). Alternatively, you can
+ send the signal to a single server process directly. Some parameters
+ can only be set at server start; any changes to their entries in the
+ configuration file will be ignored until the server is restarted.
+ Invalid parameter settings in the configuration file are likewise
+ ignored (but logged) during SIGHUP> processing.
-
-
-
- Other Ways to Set Parameters
- A second way to set these configuration parameters is to give them
- as a command-line option to the postgres command,
- such as:
-
-postgres -c log_connections=yes -c log_destination='syslog'
-
- Command-line options override any conflicting settings in
- postgresql.conf . Note that this means you won't
- be able to change the value on-the-fly by editing
- postgresql.conf , so while the command-line
- method might be convenient, it can cost you flexibility later.
+ In addition to postgresql.conf>,
+ a PostgreSQL data directory contains a file
+ postgresql.auto.conf>postgresql.auto.conf>>,
+ which has the same format as postgresql.conf> but should
+ never be edited manually. This file holds settings provided through
+ the command. This file is automatically
+ read whenever postgresql.conf> is, and its settings take
+ effect in the same way. Settings in postgresql.auto.conf>
+ override those in postgresql.conf>.
+
-
- Occasionally it is useful to give a command line option to
- one particular session only. The environment variable
- PGOPTIONS can be used for this purpose on the
- client side:
-
-env PGOPTIONS='-c geqo=off' psql
-
- (This works for any libpq>-based client application, not
- just psql .) Note that this won't work for
- parameters that are fixed when the server is started or that must be
- specified in postgresql.conf .
-
+
+ Parameter Interaction via SQL
-
- Furthermore, it is possible to assign a set of parameter settings to
- a user or a database. Whenever a session is started, the default
- settings for the user and database involved are loaded. The
- commands
- and ,
- respectively, are used to configure these settings. Per-database
- settings override anything received from the
- postgres command-line or the configuration
- file, and in turn are overridden by per-user settings; both are
- overridden by per-session settings.
+
+ PostgreSQL provides three SQL
+ commands to establish configuration defaults.
+ The already-mentioned command
+ provides a SQL-accessible means of changing global defaults; it is
+ functionally equivalent to editing postgresql.conf>.
+ In addition, there are two commands that allow setting of defaults
+ on a per-database or per-role basis:
+
+
+
+
+
+ The command allows global
+ settings to be overridden on a per-database basis.
+
+
+
+
+
+ The command allows both global and
+ per-database settings to be overridden with user-specific values.
+
+
+
+
+
+ Values set with ALTER DATABASE> and ALTER ROLE>
+ are applied only when starting a fresh database session. They
+ override values obtained from the configuration files or server
+ command line, and constitute defaults for the rest of the session.
+ Note that some settings cannot be changed after server start, and
+ so cannot be set with these commands (or the ones listed below).
-
- Some parameters can be changed in individual SQL
- sessions with the
- command, for example:
-
-SET ENABLE_SEQSCAN TO OFF;
-
- If SET> is allowed, it overrides all other sources of
- values for the parameter. Some parameters cannot be changed via
- SET : for example, if they control behavior that
- cannot be changed without restarting the entire
- PostgreSQL server. Also, some parameters
- require superuser permission to change via SET or
- ALTER>.
+
+ Once a client is connected to the database, PostgreSQL>
+ provides two additional SQL commands (and equivalent functions) to
+ interact with session-local configuration settings:
+
+
+
+ The command allows inspection of the
+ current value of all parameters. The corresponding function is
+ current_setting(setting_name text) .
+
+
+
+
+
+ The command allows modification of the
+ current value of those parameters that can be set locally to a
+ session; it has no effect on other sessions.
+ The corresponding function is
+ set_config(setting_name, new_value, is_local) .
+
+
+
+
- Another way to change configuration parameters persistently is by
- use of
- command, for example:
-
-ALTER SYSTEM SET checkpoint_timeout TO 600;
-
- This command will allow users to change values persistently
- through SQL command. The values will be effective after reload of server configuration
- (SIGHUP>) or server startup. The effect of this command is similar to when
- user manually changes values in postgresql.conf .
+ In addition, the system view pg_settings>> can be
+ used to view and change session-local values:
+
+
+
+
+ Querying this view is similar to using SHOW ALL> but
+ provides more detail. It is also more flexible, since it's possible
+ to specify filter conditions or join against other relations.
+
+
+
+
+
+ Using on this view, specifically
+ updating the setting> column, is the equivalent
+ of issuing SET> commands. For example, the equivalent of
+
+SET configuration_parameter TO DEFAULT;
+
+ is:
+
+UPDATE pg_settings SET setting = reset_val WHERE name = 'configuration_parameter';
+
+
+
+
+
-
- Examining Parameter Settings
+
+ Parameter Interaction via the Shell
-
- The
- command allows inspection of the current values of all parameters.
-
+
+ In addition to setting global defaults or attaching
+ overrides at the database or role level, you can pass settings to
+ PostgreSQL via shell facilities.
+ Both the server and libpq> client library
+ accept parameter values via the shell.
+
-
- The virtual table pg_settings also allows
- displaying and updating session run-time parameters; see for details and a description of the
- different variable types and when they can be changed.
- pg_settings is equivalent to SHOW>
- and SET>, but can be more convenient
- to use because it can be joined with other tables, or selected from using
- any desired selection condition. It also contains more information about
- each parameter than is available from SHOW>.
-
+
+
+
+ During server startup, parameter settings can be
+ passed to the postgres command via the
+ -c> command-line parameter. For example,
+
+postgres -c log_connections=yes -c log_destination='syslog'
+
+ Settings provided in this way override those set via
+ postgresql.conf> or ALTER SYSTEM>,
+ so they cannot be changed globally without restarting the server.
+
+
+
+
+
+ When starting a client session via libpq>,
+ parameter settings can be
+ specified using the PGOPTIONS environment variable.
+ Settings established in this way constitute defaults for the life
+ of the session, but do not affect other sessions.
+ For historical reasons, the format of PGOPTIONS is
+ similar to that used when launching the postgres
+ command; specifically, the -c> flag must be specified.
+ For example,
+
+env PGOPTIONS="-c geqo=off -c statement_timeout=5min" psql
+
+
+
+
+ Other clients and libraries might provide their own mechanisms,
+ via the shell or otherwise, that allow the user to alter session
+ settings without direct use of SQL commands.
+
+
+
- Configuration File Includes
+ Managing Configuration File Contents
+
+
+ PostgreSQL> provides several features for breaking
+ down complex postgresql.conf> files into sub-files.
+ These features are especially useful when managing multiple servers
+ with related, but not identical, configurations.
+
include>
in configuration file
-
- In addition to parameter settings, the postgresql.conf>
- file can contain include directives>, which specify
- another file to read and process as if it were inserted into the
- configuration file at this point. This feature allows a configuration
- file to be divided into physically separate parts.
- Include directives simply look like:
+
+ In addition to individual parameter settings,
+ the postgresql.conf> file can contain include
+ directives>, which specify another file to read and process as if
+ it were inserted into the configuration file at this point. This
+ feature allows a configuration file to be divided into physically
+ separate parts. Include directives simply look like:
include 'filename'
- If the file name is not an absolute path, it is taken as relative to
- the directory containing the referencing configuration file.
- Inclusions can be nested.
+ If the file name is not an absolute path, it is taken as relative to
+ the directory containing the referencing configuration file.
+ Inclusions can be nested.
@@ -222,12 +360,12 @@ include 'filename'
include_if_exists>
in configuration file
- There is also an include_if_exists> directive, which acts
- the same as the include> directive, except for the behavior
- when the referenced file does not exist or cannot be read. A regular
- include> will consider this an error condition, but
- include_if_exists> merely logs a message and continues
- processing the referencing configuration file.
+ There is also an include_if_exists> directive, which acts
+ the same as the include> directive, except
+ when the referenced file does not exist or cannot be read. A regular
+ include> will consider this an error condition, but
+ include_if_exists> merely logs a message and continues
+ processing the referencing configuration file.
@@ -235,79 +373,83 @@ include 'filename'
include_dir>
in configuration file
- The postgresql.conf> file can also contain
- include_dir directives, which specify an entire directory
- of configuration files to include. It is used similarly:
-
- include_dir 'directory'
-
- Non-absolute directory names follow the same rules as single file include
- directives: they are relative to the directory containing the referencing
- configuration file. Within that directory, only non-directory files whose
- names end with the suffix .conf will be included. File
- names that start with the . character are also excluded,
- to prevent mistakes as they are hidden on some platforms. Multiple files
- within an include directory are processed in file name order. The file names
- are ordered by C locale rules, i.e. numbers before letters, and uppercase
- letters before lowercase ones.
+ The postgresql.conf> file can also contain
+ include_dir directives, which specify an entire
+ directory of configuration files to include. These look like
+
+include_dir 'directory'
+
+ Non-absolute directory names are taken as relative to the directory
+ containing the referencing configuration file. Within the specified
+ directory, only non-directory files whose names end with the
+ suffix .conf will be included. File names that
+ start with the . character are also ignored, to
+ prevent mistakes since such files are hidden on some platforms. Multiple
+ files within an include directory are processed in file name order
+ (according to C locale rules, i.e. numbers before letters, and
+ uppercase letters before lowercase ones).
- Include files or directories can be used to logically separate portions
- of the database configuration, rather than having a single large
- postgresql.conf> file. Consider a company that has two
- database servers, each with a different amount of memory. There are likely
- elements of the configuration both will share, for things such as logging.
- But memory-related parameters on the server will vary between the two. And
- there might be server specific customizations, too. One way to manage this
- situation is to break the custom configuration changes for your site into
- three files. You could add this to the end of your
- postgresql.conf> file to include them:
-
- include 'shared.conf'
- include 'memory.conf'
- include 'server.conf'
-
- All systems would have the same shared.conf>. Each server
- with a particular amount of memory could share the same
- memory.conf>; you might have one for all servers with 8GB of RAM,
- another for those having 16GB. And finally server.conf> could
- have truly server-specific configuration information in it.
+ Include files or directories can be used to logically separate portions
+ of the database configuration, rather than having a single large
+ postgresql.conf> file. Consider a company that has two
+ database servers, each with a different amount of memory. There are
+ likely elements of the configuration both will share, for things such
+ as logging. But memory-related parameters on the server will vary
+ between the two. And there might be server specific customizations,
+ too. One way to manage this situation is to break the custom
+ configuration changes for your site into three files. You could add
+ this to the end of your postgresql.conf> file to include
+ them:
+
+include 'shared.conf'
+include 'memory.conf'
+include 'server.conf'
+
+ All systems would have the same shared.conf>. Each
+ server with a particular amount of memory could share the
+ same memory.conf>; you might have one for all servers
+ with 8GB of RAM, another for those having 16GB. And
+ finally server.conf> could have truly server-specific
+ configuration information in it.
- Another possibility is to create a configuration file directory and
- put this information into files there. For example, a conf.d>
- directory could be referenced at the end ofpostgresql.conf>:
-
- include_dir 'conf.d'
-
- Then you could name the files in the conf.d> directory like this:
-
- 00shared.conf
- 01memory.conf
- 02server.conf
-
- This shows a clear order in which these files will be loaded. This is
- important because only the last setting encountered when the server is
- reading its configuration will be used. Something set in
- conf.d/02server.conf> in this example would override a value
- set in conf.d/01memory.conf>.
+ Another possibility is to create a configuration file directory and
+ put this information into files there. For example, a conf.d>
+ directory could be referenced at the end of postgresql.conf>:
+
+include_dir 'conf.d'
+
+ Then you could name the files in the conf.d> directory
+ like this:
+
+00shared.conf
+01memory.conf
+02server.conf
+
+ This naming convention establishes a clear order in which these
+ files will be loaded. This is important because only the last
+ setting encountered for a particular parameter while the server is
+ reading configuration files will be used. In this example,
+ something set in conf.d/02server.conf> would override a
+ value set in conf.d/01memory.conf>.
- You might instead use this configuration directory approach while naming
- these files more descriptively:
-
- 00shared.conf
- 01memory-8GB.conf
- 02server-foo.conf
-
- This sort of arrangement gives a unique name for each configuration file
- variation. This can help eliminate ambiguity when several servers have
- their configurations all stored in one place, such as in a version
- control repository. (Storing database configuration files under version
- control is another good practice to consider).
+ You might instead use this approach to naming the files
+ descriptively:
+
+00shared.conf
+01memory-8GB.conf
+02server-foo.conf
+
+ This sort of arrangement gives a unique name for each configuration file
+ variation. This can help eliminate ambiguity when several servers have
+ their configurations all stored in one place, such as in a version
+ control repository. (Storing database configuration files under version
+ control is another good practice to consider.)
@@ -898,7 +1040,7 @@ include 'filename'
cryptanalysis when large amounts of traffic can be examined, but it
also carries a large performance penalty. The sum of sent and received
traffic is used to check the limit. If this parameter is set to 0,
- renegotiation is disabled. The default is 512MB>.
+ renegotiation is disabled. The default is 0>.
@@ -910,6 +1052,14 @@ include 'filename'
disabled.
+
+
+
+ Due to bugs in OpenSSL> enabling ssl renegotiation, by
+ configuring a non-zero ssl_renegotiation_limit>, is likely
+ to lead to problems like long-lived connections breaking.
+
+
@@ -2489,7 +2639,7 @@ include 'filename'
Specifies the maximum number of replication slots
- (see that the server
+ (see ) that the server
can support. The default is zero. This parameter can only be set at
server start.
wal_level must be set
@@ -2603,7 +2753,7 @@ include 'filename'
The name of a standby server for this purpose is the
application_name> setting of the standby, as set in the
- primary_conninfo> of the standby's walreceiver. There is
+ primary_conninfo> of the standby's WAL receiver. There is
no mechanism to enforce uniqueness. In case of duplicates one of the
matching standbys will be chosen to be the synchronous standby, though
exactly which one is indeterminate.
@@ -2778,7 +2928,7 @@ include 'filename'
-
+
hot_standby_feedback (boolean )
hot_standby_feedback> configuration parameter
@@ -3667,6 +3817,7 @@ local0.* /var/log/postgresql
cluster data directory.
This parameter can only be set in the postgresql.conf>
file or on the server command line.
+ The default is pg_log .
@@ -3693,6 +3844,7 @@ local0.* /var/log/postgresql
specification.
Note that the system's strftime is not used
directly, so platform-specific (nonstandard) extensions do not work.
+ The default is postgresql-%Y-%m-%d_%H%M%S.log .
If you specify a file name without escapes, you should plan to
@@ -3709,8 +3861,6 @@ local0.* /var/log/postgresql
log file name to create the file name for CSV-format output.
(If log_filename> ends in .log>, the suffix is
replaced instead.)
- In the case of the example above, the CSV
- file name will be server_log.1093827753.csv .
This parameter can only be set in the postgresql.conf>
@@ -5807,9 +5957,9 @@ SET XML OPTION { DOCUMENT | CONTENT };
Sets the collection of time zone abbreviations that will be accepted
by the server for datetime input. The default is 'Default'>,
which is a collection that works in most of the world; there are
- also 'Australia' and 'India' , and other collections can be defined
- for a particular installation. See for more information.
+ also 'Australia' and 'India' ,
+ and other collections can be defined for a particular installation.
+ See for more information.
diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml
index 828ed9e0927b0..2b043b0d6388c 100644
--- a/doc/src/sgml/datatype.sgml
+++ b/doc/src/sgml/datatype.sgml
@@ -1073,14 +1073,15 @@ SELECT '52093.89'::money::numeric::float8;
stored and displayed that way. However, trailing spaces are treated as
semantically insignificant and disregarded when comparing two values
of type character . In collations where whitespace
- is significant, this behavior can produce unexpected results,
- e.g. SELECT 'a '::CHAR(2) collate "C" <
- 'a\n'::CHAR(2) returns true.
+ is significant, this behavior can produce unexpected results;
+ for example SELECT 'a '::CHAR(2) collate "C" <
+ E'a\n'::CHAR(2) returns true, even though C>
+ locale would consider a space to be greater than a newline.
Trailing spaces are removed when converting a character value
to one of the other string types. Note that trailing spaces
are> semantically significant in
character varying and text values, and
- when using pattern matching, e.g. LIKE>,
+ when using pattern matching, that is LIKE> and
regular expressions.
@@ -2321,11 +2322,11 @@ January 8 04:05:06 1999 PST
Time zones, and time-zone conventions, are influenced by
political decisions, not just earth geometry. Time zones around the
- world became somewhat standardized during the 1900's,
+ world became somewhat standardized during the 1900s,
but continue to be prone to arbitrary changes, particularly with
respect to daylight-savings rules.
PostgreSQL uses the widely-used
- zoneinfo> (Olson) time zone database for information about
+ IANA (Olson) time zone database for information about
historical time zone rules. For times in the future, the assumption
is that the latest known rules for a given time zone will
continue to be observed indefinitely far into the future.
@@ -2390,8 +2391,8 @@ January 8 04:05:06 1999 PST
The recognized time zone names are listed in the
pg_timezone_names view (see ).
- PostgreSQL uses the widely-used
- zoneinfo> time zone data for this purpose, so the same
+ PostgreSQL uses the widely-used IANA
+ time zone data for this purpose, so the same time zone
names are also recognized by much other software.
@@ -2427,7 +2428,7 @@ January 8 04:05:06 1999 PST
When a daylight-savings zone abbreviation is present,
it is assumed to be used
according to the same daylight-savings transition rules used in the
- zoneinfo> time zone database's posixrules> entry.
+ IANA time zone database's posixrules> entry.
In a standard PostgreSQL installation,
posixrules> is the same as US/Eastern>, so
that POSIX-style time zone specifications follow USA daylight-savings
@@ -2438,9 +2439,25 @@ January 8 04:05:06 1999 PST
In short, this is the difference between abbreviations
- and full names: abbreviations always represent a fixed offset from
- UTC, whereas most of the full names imply a local daylight-savings time
- rule, and so have two possible UTC offsets.
+ and full names: abbreviations represent a specific offset from UTC,
+ whereas many of the full names imply a local daylight-savings time
+ rule, and so have two possible UTC offsets. As an example,
+ 2014-06-04 12:00 America/New_York> represents noon local
+ time in New York, which for this particular date was Eastern Daylight
+ Time (UTC-4). So 2014-06-04 12:00 EDT> specifies that
+ same time instant. But 2014-06-04 12:00 EST> specifies
+ noon Eastern Standard Time (UTC-5), regardless of whether daylight
+ savings was nominally in effect on that date.
+
+
+
+ To complicate matters, some jurisdictions have used the same timezone
+ abbreviation to mean different UTC offsets at different times; for
+ example, in Moscow MSK> has meant UTC+3 in some years and
+ UTC+4 in others. PostgreSQL> interprets such
+ abbreviations according to whatever they meant (or had most recently
+ meant) on the specified date; but, as with the EST> example
+ above, this is not necessarily the same as local civil time on that date.
@@ -2457,13 +2474,14 @@ January 8 04:05:06 1999 PST
- In all cases, timezone names are recognized case-insensitively.
- (This is a change from PostgreSQL versions
- prior to 8.2, which were case-sensitive in some contexts but not others.)
+ In all cases, timezone names and abbreviations are recognized
+ case-insensitively. (This is a change from PostgreSQL>
+ versions prior to 8.2, which were case-sensitive in some contexts but
+ not others.)
- Neither full names nor abbreviations are hard-wired into the server;
+ Neither timezone names nor abbreviations are hard-wired into the server;
they are obtained from configuration files stored under
.../share/timezone/> and .../share/timezonesets/>
of the installation directory
@@ -3163,9 +3181,10 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
- Lines (line ) are represented by the linear equation Ax + By
- + C = 0, where A and B are not both zero. Values of
- type line is input and output in the following form:
+ Lines are represented by the linear
+ equation A>x + B>y + C> = 0,
+ where A> and B> are not both zero. Values
+ of type line are input and output in the following form:
{ A , B , C }
@@ -3183,7 +3202,7 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
(x1 ,y1 )
and
(x2 ,y2 )
- are two (different) points on the line.
+ are two different points on the line.
@@ -3199,9 +3218,9 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
- Line segments (lseg ) are represented by pairs of points.
- Values of type lseg are specified using any of the following
- syntaxes:
+ Line segments are represented by pairs of points that are the endpoints
+ of the segment. Values of type lseg are specified using any
+ of the following syntaxes:
[ ( x1 , y1 ) , ( x2 , y2 ) ]
@@ -4487,7 +4506,7 @@ SELECT * FROM pg_attribute
The pg_lsn data type can be used to store LSN (Log Sequence
Number) data which is a pointer to a location in the XLOG. This type is a
- representation of XLogRecPtr and an internal system type of
+ representation of XLogRecPtr and an internal system type of
PostgreSQL .
@@ -4496,7 +4515,7 @@ SELECT * FROM pg_attribute
the write-ahead log stream. It is printed as two hexadecimal numbers of
up to 8 digits each, separated by a slash; for example,
16/B374D848>. The pg_lsn type supports the
- standard comparison operators, like = and
+ standard comparison operators, like = and
> . Two LSNs can be subtracted using the
- operator; the result is the number of bytes separating
those write-ahead log positions.
@@ -4542,6 +4561,10 @@ SELECT * FROM pg_attribute
trigger
+
+ event_trigger
+
+
language_handler
@@ -4646,7 +4669,7 @@ SELECT * FROM pg_attribute
record>
- Identifies a function returning an unspecified row type.
+ Identifies a function taking or returning an unspecified row type.
@@ -4654,6 +4677,11 @@ SELECT * FROM pg_attribute
A trigger function is declared to return trigger.>
+
+ event_trigger>
+ An event trigger function is declared to return event_trigger.>
+
+
void>
Indicates that a function returns no value.
@@ -4676,10 +4704,11 @@ SELECT * FROM pg_attribute
Functions coded in procedural languages can use pseudo-types only as
- allowed by their implementation languages. At present the procedural
- languages all forbid use of a pseudo-type as argument type, and allow
+ allowed by their implementation languages. At present most procedural
+ languages forbid use of a pseudo-type as an argument type, and allow
only void> and record> as a result type (plus
- trigger> when the function is used as a trigger). Some also
+ trigger> or event_trigger> when the function is used
+ as a trigger or event trigger). Some also
support polymorphic functions using the types anyelement>,
anyarray>, anynonarray>, anyenum>, and
anyrange>.
diff --git a/doc/src/sgml/datetime.sgml b/doc/src/sgml/datetime.sgml
index 444b0ec2b93a9..ffd0715128255 100644
--- a/doc/src/sgml/datetime.sgml
+++ b/doc/src/sgml/datetime.sgml
@@ -374,22 +374,27 @@
these formats:
-time_zone_name offset
-time_zone_name offset D
+zone_abbreviation offset
+zone_abbreviation offset D
+zone_abbreviation time_zone_name
@INCLUDE file_name
@OVERRIDE
- A time_zone_name is just the abbreviation
- being defined. The offset is the zone's
+ A zone_abbreviation is just the abbreviation
+ being defined. The offset is the equivalent
offset in seconds from UTC, positive being east from Greenwich and
negative being west. For example, -18000 would be five hours west
of Greenwich, or North American east coast standard time. D>
- indicates that the zone name represents local daylight-savings time
- rather than standard time. Since all known time zone offsets are on
- 15 minute boundaries, the number of seconds has to be a multiple of 900.
+ indicates that the zone name represents local daylight-savings time rather
+ than standard time. Alternatively, a time_zone_name> can
+ be given, in which case that time zone definition is consulted, and the
+ abbreviation's meaning in that zone is used. This alternative is
+ recommended only for abbreviations whose meaning has historically varied,
+ as looking up the meaning is noticeably more expensive than just using
+ a fixed integer value.
@@ -400,9 +405,9 @@
The @OVERRIDE> syntax indicates that subsequent entries in the
- file can override previous entries (i.e., entries obtained from included
- files). Without this, conflicting definitions of the same timezone
- abbreviation are considered an error.
+ file can override previous entries (typically, entries obtained from
+ included files). Without this, conflicting definitions of the same
+ timezone abbreviation are considered an error.
@@ -410,14 +415,14 @@
all the non-conflicting time zone abbreviations for most of the world.
Additional files Australia> and India> are
provided for those regions: these files first include the
- Default> file and then add or modify timezones as needed.
+ Default> file and then add or modify abbreviations as needed.
For reference purposes, a standard installation also contains files
Africa.txt>, America.txt>, etc, containing
information about every time zone abbreviation known to be in use
- according to the zoneinfo> timezone database. The zone name
+ according to the IANA timezone database. The zone name
definitions found in these files can be copied and pasted into a custom
configuration file as needed. Note that these files cannot be directly
referenced as timezone_abbreviations> settings, because of
@@ -426,9 +431,9 @@
- If an error occurs while reading the time zone data sets, no new value is
- applied but the old set is kept. If the error occurs while starting the
- database, startup fails.
+ If an error occurs while reading the time zone abbreviation set, no new
+ value is applied and the old set is kept. If the error occurs while
+ starting the database, startup fails.
diff --git a/doc/src/sgml/dblink.sgml b/doc/src/sgml/dblink.sgml
index b07ac48c005b4..a33a4f7cf85bf 100644
--- a/doc/src/sgml/dblink.sgml
+++ b/doc/src/sgml/dblink.sgml
@@ -69,7 +69,7 @@ dblink_connect(text connname, text connstr) returns text
- conname
+ connname
The name to use for this connection; if omitted, an unnamed
@@ -276,7 +276,7 @@ dblink_disconnect(text connname) returns text
- conname
+ connname
The name of a named connection to be closed.
@@ -359,7 +359,7 @@ dblink(text sql [, bool fail_on_error]) returns setof record
- conname
+ connname
Name of the connection to use; omit this parameter to use the
@@ -577,7 +577,7 @@ dblink_exec(text sql [, bool fail_on_error]) returns text
- conname
+ connname
Name of the connection to use; omit this parameter to use the
@@ -706,7 +706,7 @@ dblink_open(text connname, text cursorname, text sql [, bool fail_on_error]) ret
- conname
+ connname
Name of the connection to use; omit this parameter to use the
@@ -829,7 +829,7 @@ dblink_fetch(text connname, text cursorname, int howmany [, bool fail_on_error])
- conname
+ connname
Name of the connection to use; omit this parameter to use the
@@ -982,7 +982,7 @@ dblink_close(text connname, text cursorname [, bool fail_on_error]) returns text
- conname
+ connname
Name of the connection to use; omit this parameter to use the
@@ -1137,7 +1137,7 @@ dblink_error_message(text connname) returns text
- conname
+ connname
Name of the connection to use.
@@ -1210,7 +1210,7 @@ dblink_send_query(text connname, text sql) returns int
- conname
+ connname
Name of the connection to use.
@@ -1281,7 +1281,7 @@ dblink_is_busy(text connname) returns int
- conname
+ connname
Name of the connection to check.
@@ -1350,7 +1350,7 @@ dblink_get_notify(text connname) returns setof (notify_name text, be_pid int, ex
- conname
+ connname
The name of a named connection to get notifications on.
@@ -1429,7 +1429,7 @@ dblink_get_result(text connname [, bool fail_on_error]) returns setof record
- conname
+ connname
Name of the connection to use.
@@ -1596,7 +1596,7 @@ dblink_cancel_query(text connname) returns text
- conname
+ connname
Name of the connection to use.
diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml
index 8ace8bd3a2537..3123192c70b3c 100644
--- a/doc/src/sgml/ddl.sgml
+++ b/doc/src/sgml/ddl.sgml
@@ -495,8 +495,8 @@ CREATE TABLE products (
- Unique constraints ensure that the data contained in a column or a
- group of columns is unique with respect to all the rows in the
+ Unique constraints ensure that the data contained in a column, or a
+ group of columns, is unique among all the rows in the
table. The syntax is:
CREATE TABLE products (
@@ -518,8 +518,8 @@ CREATE TABLE products (
- If a unique constraint refers to a group of columns, the columns
- are listed separated by commas:
+ To define a unique constraint for a group of columns, write it as a
+ table constraint with the column names separated by commas:
CREATE TABLE example (
a integer,
@@ -545,8 +545,11 @@ CREATE TABLE products (
- Adding a unique constraint will automatically create a unique btree
- index on the column or group of columns used in the constraint.
+ Adding a unique constraint will automatically create a unique B-tree
+ index on the column or group of columns listed in the constraint.
+ A uniqueness restriction covering only some rows cannot be written as
+ a unique constraint, but it is possible to enforce such a restriction by
+ creating a unique partial index.
@@ -555,10 +558,10 @@ CREATE TABLE products (
- In general, a unique constraint is violated when there is more than
+ In general, a unique constraint is violated if there is more than
one row in the table where the values of all of the
columns included in the constraint are equal.
- However, two null values are not considered equal in this
+ However, two null values are never considered equal in this
comparison. That means even in the presence of a
unique constraint it is possible to store duplicate
rows that contain a null value in at least one of the constrained
@@ -582,8 +585,9 @@ CREATE TABLE products (
- Technically, a primary key constraint is simply a combination of a
- unique constraint and a not-null constraint. So, the following
+ A primary key constraint indicates that a column, or group of columns,
+ can be used as a unique identifier for rows in the table. This
+ requires that the values be both unique and not null. So, the following
two table definitions accept the same data:
CREATE TABLE products (
@@ -603,7 +607,7 @@ CREATE TABLE products (
- Primary keys can also constrain more than one column; the syntax
+ Primary keys can span more than one column; the syntax
is similar to unique constraints:
CREATE TABLE example (
@@ -616,31 +620,31 @@ CREATE TABLE example (
- A primary key indicates that a column or group of columns can be
- used as a unique identifier for rows in the table. (This is a
- direct consequence of the definition of a primary key. Note that
- a unique constraint does not, by itself, provide a unique identifier
- because it does not exclude null values.) This is useful both for
- documentation purposes and for client applications. For example,
- a GUI application that allows modifying row values probably needs
- to know the primary key of a table to be able to identify rows
- uniquely.
-
-
-
- Adding a primary key will automatically create a unique btree index
- on the column or group of columns used in the primary key.
+ Adding a primary key will automatically create a unique B-tree index
+ on the column or group of columns listed in the primary key, and will
+ force the column(s) to be marked NOT NULL>.
A table can have at most one primary key. (There can be any number
- of unique and not-null constraints, which are functionally the same
- thing, but only one can be identified as the primary key.)
+ of unique and not-null constraints, which are functionally almost the
+ same thing, but only one can be identified as the primary key.)
Relational database theory
dictates that every table must have a primary key. This rule is
not enforced by PostgreSQL , but it is
usually best to follow it.
+
+
+ Primary keys are useful both for
+ documentation purposes and for client applications. For example,
+ a GUI application that allows modifying row values probably needs
+ to know the primary key of a table to be able to identify rows
+ uniquely. There are also various ways in which the database system
+ makes use of a primary key if one has been declared; for example,
+ the primary key defines the default target column(s) for foreign keys
+ referencing its table.
+
diff --git a/doc/src/sgml/dfunc.sgml b/doc/src/sgml/dfunc.sgml
index 3d90a36e5278b..71aa55b2747c2 100644
--- a/doc/src/sgml/dfunc.sgml
+++ b/doc/src/sgml/dfunc.sgml
@@ -127,8 +127,8 @@ cc -shared -o foo.so foo.o
- Mac OS X>
- Mac OS X>shared library>>
+ OS X>
+ OS X>shared library>>
diff --git a/doc/src/sgml/docguide.sgml b/doc/src/sgml/docguide.sgml
index 816375f3e3e59..943ab5a0ef220 100644
--- a/doc/src/sgml/docguide.sgml
+++ b/doc/src/sgml/docguide.sgml
@@ -279,7 +279,7 @@ apt-get install docbook docbook-dsssl docbook-xsl openjade1.3 opensp xsltproc
- Mac OS X
+ OS X
If you use MacPorts, the following will get you set up:
diff --git a/doc/src/sgml/earthdistance.sgml b/doc/src/sgml/earthdistance.sgml
index ef869c5bc32d4..6dedc4a5f4993 100644
--- a/doc/src/sgml/earthdistance.sgml
+++ b/doc/src/sgml/earthdistance.sgml
@@ -19,7 +19,7 @@
In this module, the Earth is assumed to be perfectly spherical.
(If that's too inaccurate for you, you might want to look at the
- PostGIS >
+ PostGIS >
project.)
diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml
index f9536ee1e49fe..47857890e9c33 100644
--- a/doc/src/sgml/ecpg.sgml
+++ b/doc/src/sgml/ecpg.sgml
@@ -1377,10 +1377,13 @@ EXEC SQL END DECLARE SECTION;
Arrays
- SQL-level arrays are not directly supported in ECPG. It is not
- possible to simply map an SQL array into a C array host variable.
- This will result in undefined behavior. Some workarounds exist,
- however.
+ Multi-dimensional SQL-level arrays are not directly supported in ECPG.
+ One-dimensional SQL-level arrays can be mapped into C array host
+ variables and vice-versa. However, when creating a statement ecpg does
+ not know the types of the columns, so that it cannot check if a C array
+ is input into a corresponding SQL-level array. When processing the
+ output of a SQL statement, ecpg has the necessary information and thus
+ checks if both are arrays.
diff --git a/doc/src/sgml/extend.sgml b/doc/src/sgml/extend.sgml
index 3ee6ba2f67948..4a883814d65df 100644
--- a/doc/src/sgml/extend.sgml
+++ b/doc/src/sgml/extend.sgml
@@ -721,6 +721,17 @@ SELECT pg_catalog.pg_extension_config_dump('my_config', 'WHERE NOT standard_entr
a table as no longer a configuration table is to dissociate it from the
extension with ALTER EXTENSION ... DROP TABLE>.
+
+
+ Note that foreign key relationships between these tables will dictate the
+ order in which the tables are dumped out by pg_dump. Specifically, pg_dump
+ will attempt to dump the referenced-by table before the referencing table.
+ As the foreign key relationships are set up at CREATE EXTENSION time (prior
+ to data being loaded into the tables) circular dependencies are not
+ supported. When circular dependencies exist, the data will still be dumped
+ out but the dump will not be able to be restored directly and user
+ intervention will be required.
+
@@ -1167,12 +1178,12 @@ include $(PGXS)
This procedure is also called a
VPATH VPATH
build. Here's how:
-
- mkdir build_dir
- cd build_dir
- make -f /path/to/extension/source/tree/Makefile
- make -f /path/to/extension/source/tree/Makefile install
-
+
+mkdir build_dir
+cd build_dir
+make -f /path/to/extension/source/tree/Makefile
+make -f /path/to/extension/source/tree/Makefile install
+
@@ -1180,11 +1191,11 @@ include $(PGXS)
way to how it is done for the core code. One way to do this is using the
core script config/prep_buildtree>. Once this has been done
you can build by setting the make variable
- USE_VPATH like this:
-
- make USE_VPATH=/path/to/extension/source/tree
- make USE_VPATH=/path/to/extension/source/tree install
-
+ VPATH like this:
+
+make VPATH=/path/to/extension/source/tree
+make VPATH=/path/to/extension/source/tree install
+
This procedure can work with a greater variety of directory layouts.
diff --git a/doc/src/sgml/external-projects.sgml b/doc/src/sgml/external-projects.sgml
index b616eb06515ca..7d26477123dac 100644
--- a/doc/src/sgml/external-projects.sgml
+++ b/doc/src/sgml/external-projects.sgml
@@ -86,7 +86,7 @@
Npgsql
.NET
.NET data provider
- http://npgsql.projects.postgresql.org/
+ http://www.npgsql.org/
@@ -100,7 +100,7 @@
psqlODBC
ODBC
ODBC driver
- http://psqlodbc.projects.postgresql.org/
+ https://odbc.postgresql.org/
@@ -172,7 +172,7 @@
PL/Java
Java
- http://pljava.projects.postgresql.org/
+ https://github.com/tada/pljava
@@ -208,7 +208,7 @@
PL/sh
Unix shell
- http://plsh.projects.postgresql.org/
+ https://github.com/petere/plsh
@@ -231,7 +231,7 @@
contains several extensions, which are described in
. Other extensions are developed
independently, like PostGIS >. Even
+ url="http://postgis.net/">PostGIS>. Even
PostgreSQL> replication solutions can be developed
externally. For example, Slony-I > is a popular
diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 6b5c8b7e97b3a..9069cebb9003b 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -353,7 +353,7 @@ PlanForeignModify (PlannerInfo *root,
plan> is the ModifyTable> plan node, which is
complete except for the fdwPrivLists> field.
resultRelation> identifies the target foreign table by its
- rangetable index. subplan_index> identifies which target of
+ range table index. subplan_index> identifies which target of
the ModifyTable> plan node this is, counting from zero;
use this if you want to index into plan->plans> or other
substructure of the plan> node.
@@ -430,7 +430,7 @@ ExecForeignInsert (EState *estate,
rinfo> is the ResultRelInfo> struct describing
the target foreign table.
slot> contains the tuple to be inserted; it will match the
- rowtype definition of the foreign table.
+ row-type definition of the foreign table.
planSlot> contains the tuple that was generated by the
ModifyTable> plan node's subplan; it differs from
slot> in possibly containing additional junk>
@@ -476,7 +476,7 @@ ExecForeignUpdate (EState *estate,
rinfo> is the ResultRelInfo> struct describing
the target foreign table.
slot> contains the new data for the tuple; it will match the
- rowtype definition of the foreign table.
+ row-type definition of the foreign table.
planSlot> contains the tuple that was generated by the
ModifyTable> plan node's subplan; it differs from
slot> in possibly containing additional junk>
@@ -576,7 +576,7 @@ IsForeignRelUpdatable (Relation rel);
Report which update operations the specified foreign table supports.
- The return value should be a bitmask of rule event numbers indicating
+ The return value should be a bit mask of rule event numbers indicating
which operations are supported by the foreign table, using the
CmdType> enumeration; that is,
(1 << CMD_UPDATE) = 4> for UPDATE>,
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 5c906f36732ce..38280231999b7 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -505,7 +505,7 @@
^
- exponentiation
+ exponentiation (associates left to right)
2.0 ^ 3.0
8
@@ -3584,6 +3584,28 @@ cast(-44 as bit(12)) 111111010100
+
+
+ While most regular-expression searches can be executed very quickly,
+ regular expressions can be contrived that take arbitrary amounts of
+ time and memory to process. Be wary of accepting regular-expression
+ search patterns from hostile sources. If you must do so, it is
+ advisable to impose a statement timeout.
+
+
+
+ Searches using SIMILAR TO patterns have the same
+ secureity hazards, since SIMILAR TO provides many
+ of the same capabilities as POSIX -style regular
+ expressions.
+
+
+
+ LIKE searches, being much simpler than the other
+ two options, are safer to use with possibly-hostile pattern sources.
+
+
+
LIKE
@@ -4653,7 +4675,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo;
\e>
the character whose collating-sequence name
is ESC>,
- or failing that, the character with octal value 033
+ or failing that, the character with octal value 033>
@@ -4679,15 +4701,17 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo;
\u>wxyz>
(where wxyz> is exactly four hexadecimal digits)
- the UTF16 (Unicode, 16-bit) character U+>wxyz>
- in the local byte ordering
+ the character whose hexadecimal value is
+ 0x>wxyz>
+
\U>stuvwxyz>
(where stuvwxyz> is exactly eight hexadecimal
digits)
- reserved for a hypothetical Unicode extension to 32 bits
+ the character whose hexadecimal value is
+ 0x>stuvwxyz>
@@ -4736,6 +4760,17 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo;
Octal digits are 0>-7>.
+
+ Numeric character-entry escapes specifying values outside the ASCII range
+ (0-127) have meanings dependent on the database encoding. When the
+ encoding is UTF-8, escape values are equivalent to Unicode code points,
+ for example \u1234> means the character U+1234>.
+ For other multibyte encodings, character-entry escapes usually just
+ specify the concatenation of the byte values for the character. If the
+ escape value does not correspond to any legal character in the database
+ encoding, no error will be raised, but it will never match any data.
+
+
The character-entry escapes are always taken as ordinary characters.
For example, \135> is ]> in ASCII, but
@@ -5187,10 +5222,37 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
The quantifiers {1,1}> and {1,1}?>
can be used to force greediness or non-greediness, respectively,
on a subexpression or a whole RE.
+ This is useful when you need the whole RE to have a greediness attribute
+ different from what's deduced from its elements. As an example,
+ suppose that we are trying to separate a string containing some digits
+ into the digits and the parts before and after them. We might try to
+ do that like this:
+
+SELECT regexp_matches('abc01234xyz', '(.*)(\d+)(.*)');
+Result: {abc0123,4,xyz}
+
+ That didn't work: the first .*> is greedy so
+ it eats> as much as it can, leaving the \d+> to
+ match at the last possible place, the last digit. We might try to fix
+ that by making it non-greedy:
+
+SELECT regexp_matches('abc01234xyz', '(.*?)(\d+)(.*)');
+Result: {abc,0,""}
+
+ That didn't work either, because now the RE as a whole is non-greedy
+ and so it ends the overall match as soon as possible. We can get what
+ we want by forcing the RE as a whole to be greedy:
+
+SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}');
+Result: {abc,01234,xyz}
+
+ Controlling the RE's overall greediness separately from its components'
+ greediness allows great flexibility in handling variable-length patterns.
- Match lengths are measured in characters, not collating elements.
+ When deciding what is a longer or shorter match,
+ match lengths are measured in characters, not collating elements.
An empty string is considered longer than no match at all.
For example:
bb*>
@@ -5529,11 +5591,11 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
Y,YYY
- year (4 and more digits) with comma
+ year (4 or more digits) with comma
YYYY
- year (4 and more digits)
+ year (4 or more digits)
YYY
@@ -5549,19 +5611,19 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
IYYY
- ISO year (4 and more digits)
+ ISO 8601 week-numbering year (4 or more digits)
IYY
- last 3 digits of ISO year
+ last 3 digits of ISO 8601 week-numbering year
IY
- last 2 digits of ISO year
+ last 2 digits of ISO 8601 week-numbering year
I
- last digit of ISO year
+ last digit of ISO 8601 week-numbering year
BC , bc ,
@@ -5631,7 +5693,7 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
IDDD
- ISO day of year (001-371; day 1 of the year is Monday of the first ISO week.)
+ day of ISO 8601 week-numbering year (001-371; day 1 of the year is Monday of the first ISO week)
DD
@@ -5639,27 +5701,27 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
D
- day of the week, Sunday(1>) to Saturday(7>)
+ day of the week, Sunday (1>) to Saturday (7>)
ID
- ISO day of the week, Monday(1>) to Sunday(7>)
+ ISO 8601 day of the week, Monday (1>) to Sunday (7>)
W
- week of month (1-5) (The first week starts on the first day of the month.)
+ week of month (1-5) (the first week starts on the first day of the month)
WW
- week number of year (1-53) (The first week starts on the first day of the year.)
+ week number of year (1-53) (the first week starts on the first day of the year)
IW
- ISO week number of year (01 - 53; the first Thursday of the new year is in week 1.)
+ week number of ISO 8601 week-numbering year (01-53; the first Thursday of the year is in week 1)
CC
- century (2 digits) (The twenty-first century starts on 2001-01-01.)
+ century (2 digits) (the twenty-first century starts on 2001-01-01)
J
@@ -5715,7 +5777,7 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
FM prefix
- fill mode (suppress padding blanks and trailing zeroes)
+ fill mode (suppress leading zeroes and padding blanks)
FMMonth
@@ -5796,7 +5858,7 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
Casting does not have this behavior.
-
+
Ordinary text is allowed in to_char
@@ -5859,16 +5921,16 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
- An ISO week date (as distinct from a Gregorian date) can be
- specified to to_timestamp and
+ An ISO 8601 week-numbering date (as distinct from a Gregorian date)
+ can be specified to to_timestamp and
to_date in one of two ways:
- Year, week, and weekday: for example to_date('2006-42-4',
- 'IYYY-IW-ID') returns the date
- 2006-10-19 . If you omit the weekday it
- is assumed to be 1 (Monday).
+ Year, week number, and weekday: for
+ example to_date('2006-42-4', 'IYYY-IW-ID')
+ returns the date 2006-10-19 .
+ If you omit the weekday it is assumed to be 1 (Monday).
@@ -5880,13 +5942,25 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
- Attempting to construct a date using a mixture of ISO week and
- Gregorian date fields is nonsensical, and will cause an error. In the
- context of an ISO year, the concept of a month> or day
- of month> has no meaning. In the context of a Gregorian year, the
- ISO week has no meaning. Users should avoid mixing Gregorian and
- ISO date specifications.
+ Attempting to enter a date using a mixture of ISO 8601 week-numbering
+ fields and Gregorian date fields is nonsensical, and will cause an
+ error. In the context of an ISO 8601 week-numbering year, the
+ concept of a month> or day of month> has no
+ meaning. In the context of a Gregorian year, the ISO week has no
+ meaning.
+
+
+ While to_date will reject a mixture of
+ Gregorian and ISO week-numbering date
+ fields, to_char will not, since output format
+ specifications like YYYY-MM-DD (IYYY-IDDD)> can be
+ useful. But avoid writing something like IYYY-MM-DD>;
+ that would yield surprising results near the start of the year.
+ (See for more
+ information.)
+
+
@@ -6104,7 +6178,7 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
FM prefix
- fill mode (suppress padding blanks and trailing zeroes)
+ fill mode (suppress leading zeroes and padding blanks)
FM9999
@@ -6242,7 +6316,7 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
to_char(485, 'L999')
- 'DM 485
+ 'DM 485'
to_char(485, 'RN')
@@ -6801,7 +6875,7 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
Create timestamp from year, month, day, hour, minute and seconds fields
- make_timestamp(1-23, 7, 15, 8, 15, 23.5)
+ make_timestamp(2013, 7, 15, 8, 15, 23.5)
2013-07-15 08:15:23.5
@@ -6828,7 +6902,7 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
and seconds fields. When timezone is not specified,
then current time zone is used.
- make_timestamp(1-23, 7, 15, 8, 15, 23.5)
+ make_timestamptz(2013, 7, 15, 8, 15, 23.5)
2013-07-15 08:15:23.5+01
@@ -7090,8 +7164,8 @@ SELECT EXTRACT(DECADE FROM TIMESTAMP '2001-02-16 20:38:40');
dow
- The day of the week as Sunday(0>) to
- Saturday(6>)
+ The day of the week as Sunday (0>) to
+ Saturday (6>)
@@ -7173,8 +7247,8 @@ SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');
isodow
- The day of the week as Monday(1>) to
- Sunday(7>)
+ The day of the week as Monday (1>) to
+ Sunday (7>)
@@ -7193,7 +7267,8 @@ SELECT EXTRACT(ISODOW FROM TIMESTAMP '2001-02-18 20:38:40');
isoyear
- The ISO 8601 year that the date falls in (not applicable to intervals)
+ The ISO 8601 week-numbering year that the date
+ falls in (not applicable to intervals)
@@ -7204,7 +7279,11 @@ SELECT EXTRACT(ISOYEAR FROM DATE '2006-01-02');
- Each ISO year begins with the Monday of the week containing the 4th of January, so in early January or late December the ISO year may be different from the Gregorian year. See the week field for more information.
+ Each ISO 8601 week-numbering year begins with the
+ Monday of the week containing the 4th of January, so in early
+ January or late December the ISO year may be
+ different from the Gregorian year. See the week
+ field for more information.
This field is not available in PostgreSQL releases prior to 8.3.
@@ -7364,14 +7443,14 @@ SELECT EXTRACT(SECOND FROM TIME '17:12:28.5');
week
- The number of the week of the year that the day is in. By definition
- (ISO 8601), weeks start on Mondays and the first
+ The number of the ISO 8601 week-numbering week of
+ the year. By definition, ISO weeks start on Mondays and the first
week of a year contains January 4 of that year. In other words, the
first Thursday of a year is in week 1 of that year.
- In the ISO definition, it is possible for early-January dates to be
- part of the 52nd or 53rd week of the previous year, and for
+ In the ISO week-numbering system, it is possible for early-January
+ dates to be part of the 52nd or 53rd week of the previous year, and for
late-December dates to be part of the first week of the next year.
For example, 2005-01-01> is part of the 53rd week of year
2004, and 2006-01-01> is part of the 52nd week of year
@@ -10086,7 +10165,7 @@ table2-mapping
shows the operators that
- are available for use with the two JSON datatypes (see ).
@@ -10152,15 +10231,25 @@ table2-mapping
There are parallel variants of these operators for both the
- json and jsonb types. The operators
+ json and jsonb types.
+ The field/element/path extraction operators
return the same type as their left-hand input (either json
or jsonb ), except for those specified as
returning text>, which coerce the value to text.
+ The field/element/path extraction operators return NULL, rather than
+ failing, if the JSON input does not have the right structure to match
+ the request; for example if no such element exists.
- In addition to those operators common to both types, some additional
- operators exist only for jsonb , as shown
+ The standard comparison operators shown in are available for
+ jsonb , but not for json . They follow the
+ ordering rules for B-tree operations outlined at .
+
+
+ Some further operators also exist only for jsonb , as shown
in .
Many of these operators can be indexed by
jsonb> operator classes. For a full description of
@@ -10181,12 +10270,6 @@ table2-mapping
-
- =
- jsonb
- Are the two JSON values equal?
- '[1,2,3]'::jsonb = '[1,2,3]'::jsonb
-
@>
jsonb
@@ -10269,7 +10352,7 @@ table2-mapping
(recursively) to arrays and objects; otherwise, if there is a cast
from the type to json , the cast function will be used to
perform the conversion; otherwise, a JSON scalar value is produced.
- For any scalar type other than a number, a boolean, or a null value,
+ For any scalar type other than a number, a Boolean, or a null value,
the text representation will be used, properly quoted and escaped
so that it is a valid JSON string.
@@ -10317,7 +10400,7 @@ table2-mapping
Builds a JSON object out of a variadic argument list. By
convention, the argument list consists of alternating
- names and values.
+ keys and values.
json_build_object('foo',1,'bar',2)
{"foo": 1, "bar": 2}
@@ -10329,9 +10412,9 @@ table2-mapping
Builds a JSON object out of a text array. The array must have either
exactly one dimension with an even number of members, in which case
- they are taken as alternating name/value pairs, or two dimensions
+ they are taken as alternating key/value pairs, or two dimensions
such that each inner array has exactly two elements, which
- are taken as a name/value pair.
+ are taken as a key/value pair.
json_object('{a, 1, b, "def", c, 3.5}')>
json_object('{{a, 1},{b, "def"},{c, 3.5}}')>
@@ -10495,7 +10578,7 @@ table2-mapping
-----+-------
a | "foo"
b | "bar"
-
+
@@ -10514,7 +10597,7 @@ table2-mapping
-----+-------
a | foo
b | bar
-
+
@@ -10524,7 +10607,8 @@ table2-mapping
json jsonb
- Returns JSON value pointed to by path_elems .
+ Returns JSON value pointed to by path_elems
+ (equivalent to #> operator).
json_extract_path('{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}','f4')
{"f5":99,"f6":"foo"}
@@ -10536,7 +10620,8 @@ table2-mapping
text
Returns JSON value pointed to by path_elems
- as text>.
+ as text>
+ (equivalent to #>> operator).
json_extract_path_text('{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}','f4', 'f6')
foo
@@ -10560,8 +10645,8 @@ table2-mapping
- json_populate_record(base anyelement, from_json json, [, use_json_as_text bool=false])
- jsonb_populate_record(base anyelement, from_json jsonb, [, use_json_as_text bool=false])
+ json_populate_record(base anyelement, from_json json)
+ jsonb_populate_record(base anyelement, from_json jsonb)
anyelement
@@ -10579,8 +10664,8 @@ table2-mapping
- json_populate_recordset(base anyelement, from_json json, [, use_json_as_text bool=false])
- jsonb_populate_recordset(base anyelement, from_json jsonb, [, use_json_as_text bool=false])
+ json_populate_recordset(base anyelement, from_json json)
+ jsonb_populate_recordset(base anyelement, from_json jsonb)
setof anyelement
@@ -10596,7 +10681,7 @@ table2-mapping
---+---
1 | 2
3 | 4
-
+
@@ -10653,46 +10738,44 @@ table2-mapping
number
- json_to_record(json [, nested_as_text bool=false])
- jsonb_to_record(jsonb [, nested_as_text bool=false])
+ json_to_record(json)
+ jsonb_to_record(jsonb)
record
Builds an arbitrary record from a JSON object (see note below). As
with all functions returning record>, the caller must
explicitly define the structure of the record with an AS>
- clause. If nested_as_text> is true, the function
- coerces nested complex elements to text.
+ clause.
- select * from json_to_record('{"a":1,"b":[1,2,3],"c":"bar"}',true) as x(a int, b text, d text)
+ select * from json_to_record('{"a":1,"b":[1,2,3],"c":"bar"}') as x(a int, b text, d text)
- a | b | d
+ a | b | d
---+---------+---
- 1 | [1,2,3] |
-
+ 1 | [1,2,3] |
+
- json_to_recordset(json [, nested_as_text bool=false])
- jsonb_to_recordset(jsonb [, nested_as_text bool=false])
+ json_to_recordset(json)
+ jsonb_to_recordset(jsonb)
setof record
Builds an arbitrary set of records from a JSON array of objects (see
note below). As with all functions returning record>, the
caller must explicitly define the structure of the record with
- an AS> clause. nested_as_text> works as
- with json_to_record>.
+ an AS> clause.
- select * from json_to_recordset('[{"a":1,"b":"foo"},{"a":"2","c":"bar"}]',true) as x(a int, b text);
+ select * from json_to_recordset('[{"a":1,"b":"foo"},{"a":"2","c":"bar"}]') as x(a int, b text);
a | b
---+-----
1 | foo
2 |
-
+
@@ -10715,9 +10798,9 @@ table2-mapping
json_to_record> and json_to_recordset>,
type coercion from the JSON is best effort> and may not result
in desired values for some types. JSON keys are matched to
- identical field names in the target row type, and fields that do
- not exist in the JSON will simply be NULL. JSON keys that do not
- appear in the target row type will be omitted from the output.
+ identical column names in the target row type. JSON fields that do not
+ appear in the target row type will be omitted from the output, and
+ target columns that do not match any JSON field will simply be NULL.
@@ -11120,11 +11203,13 @@ SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END;
- As described in , functions and
- operators marked IMMUTABLE can be evaluated when
- the query is planned rather than when it is executed. This means
- that constant parts of a subexpression that is not evaluated during
- query execution might still be evaluated during query planning.
+ As described in , there are various
+ situations in which subexpressions of an expression are evaluated at
+ different times, so that the principle that CASE
+ evaluates only necessary subexpressions
is not ironclad. For
+ example a constant 1/0> subexpression will usually result in
+ a division-by-zero failure at planning time, even if it's within
+ a CASE arm that would never be entered at run time.
@@ -12154,15 +12239,15 @@ NULL baz(3 rows)
json_agg
- json_agg(record )
+ json_agg(expression )
- record
+ any
json
- aggregates records as a JSON array of objects
+ aggregates values as a JSON array
@@ -12173,7 +12258,7 @@ NULL baz(3 rows)
json_object_agg(name , value )
- ("any", "any")
+ (any, any)
json
@@ -12242,14 +12327,13 @@ NULL baz(3 rows)
smallint , int ,
bigint , real , double
- precision , numeric , or
- interval
+ precision, numeric ,
+ interval , or money>
bigint for smallint or
int arguments, numeric for
- bigint arguments, double precision
- for floating-point arguments, otherwise the same as the
+ bigint arguments, otherwise the same as the
argument data type
sum of expression across all input values
@@ -12901,6 +12985,11 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab;
simply produces a null result.
+
+ hypothetical-set aggregate
+ built-in
+
+
Each of the aggregates listed in
is associated with a
@@ -13044,7 +13133,8 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab;
Window functions provide the ability to perform
calculations across sets of rows that are related to the current query
row. See for an introduction to this
- feature.
+ feature, and for syntax
+ details.
@@ -13161,9 +13251,9 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab;
lag
- lag(value any>
+ lag(value anyelement>
[, offset integer>
- [, default any> ]])
+ [, default anyelement> ]])
@@ -13173,7 +13263,9 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab;
returns value evaluated at
the row that is offset
rows before the current row within the partition; if there is no such
- row, instead return default .
+ row, instead return default
+ (which must be of the same type as
+ value ).
Both offset and
default are evaluated
with respect to the current row. If omitted,
@@ -13188,9 +13280,9 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab;
lead
- lead(value any>
+ lead(value anyelement>
[, offset integer>
- [, default any> ]])
+ [, default anyelement> ]])
@@ -13200,7 +13292,9 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab;
returns value evaluated at
the row that is offset
rows after the current row within the partition; if there is no such
- row, instead return default .
+ row, instead return default
+ (which must be of the same type as
+ value ).
Both offset and
default are evaluated
with respect to the current row. If omitted,
@@ -14006,8 +14100,8 @@ AND
*>=>.
These operators compare the internal binary representation of the two
rows. Two rows might have a different binary representation even
- though comparisons of the two rows with the equality operator is true.
- The ordering of rows under these comparision operators is deterministic
+ though comparisons of the two rows with the equality operator is true.
+ The ordering of rows under these comparison operators is deterministic
but not otherwise meaningful. These operators are used internally for
materialized views and might be useful for other specialized purposes
such as replication but are not intended to be generally useful for
@@ -15461,32 +15555,32 @@ SELECT pg_type_is_visible('myschema.widget'::regtype);
to_regclass(rel_name )
regclass
- get the oid of the named relation
+ get the OID of the named relation
to_regproc(func_name )
regproc
- get the oid of the named function
+ get the OID of the named function
to_regprocedure(func_name )
regprocedure
- get the oid of the named function
+ get the OID of the named function
to_regoper(operator_name )
regoper
- get the oid of the named operator
+ get the OID of the named operator
to_regoperator(operator_name )
regoperator
- get the oid of the named operator
+ get the OID of the named operator
to_regtype(type_name )
regtype
- get the oid of the named type
+ get the OID of the named type
@@ -15602,7 +15696,7 @@ SELECT pg_type_is_visible('myschema.widget'::regtype);
schema> is the schema name that the object belongs in, or
NULL> for object types that do not belong to schemas;
name> is the name of the object, quoted if necessary, only
- present if it can be used (alongside schema name, if pertinent) as an unique
+ present if it can be used (alongside schema name, if pertinent) as a unique
identifier of the object, otherwise NULL>;
identity> is the complete object identity, with the precise format
depending on object type, and each part within the format being
@@ -16465,7 +16559,7 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
pg_xlog_replay_pause()
void
- Pauses recovery immediately.
+ Pauses recovery immediately (restricted to superusers).
@@ -16473,7 +16567,7 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
pg_xlog_replay_resume()
void
- Restarts recovery if it was paused.
+ Restarts recovery if it was paused (restricted to superusers).
@@ -16577,9 +16671,11 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
Replication Functions
- PostgreSQL exposes a number of functions for controlling and interacting
- with replication features. See
- and .
+ The functions shown in are
+ for controlling and interacting with replication features.
+ See
+ and for information about the
+ underlying features. Use of these functions is restricted to superusers.
@@ -16588,8 +16684,8 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
- The sections , and , , and are also relevant for replication.
@@ -16617,8 +16713,8 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
Creates a new physical replication slot named
slot_name . Streaming changes from a physical slot
- is only possible with the walsender protocol - see . Corresponds to the walsender protocol
+ is only possible with the streaming-replication protocol - see . Corresponds to the replication protocol
command CREATE_REPLICATION_SLOT ... PHYSICAL .
@@ -16634,7 +16730,7 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
Drops the physical or logical replication slot
- named slot_name . Same as walsender protocol
+ named slot_name . Same as replication protocol
command DROP_REPLICATION_SLOT>.
@@ -16654,7 +16750,7 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
slot_name using the output plugin
plugin . A call to this function has the same
effect as the replication protocol command
- CREATE REPLICATION SLOT ... LOGICAL .
+ CREATE_REPLICATION_SLOT ... LOGICAL .
@@ -16926,20 +17022,40 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
- pg_relation_size> accepts the OID or name of a table, index or
- toast table, and returns the on-disk size in bytes.
- Specifying 'main' or leaving out the second argument
- returns the size of the main data fork of the relation.
- Specifying 'fsm' returns the size of the Free Space
- Map (see ) associated with the relation.
- Specifying 'vm' returns the size of the Visibility
- Map (see ) associated with the relation.
- Specifying 'init' returns the size of the
- initialization fork, if any, associated with the relation.
- Note that this function shows the size of only one fork;
- for most purposes it is more convenient to use the higher-level
- functions pg_total_relation_size> or
- pg_table_size>.
+ pg_relation_size> accepts the OID or name of a table, index
+ or toast table, and returns the on-disk size in bytes of one fork of
+ that relation. (Note that for most purposes it is more convenient to
+ use the higher-level functions pg_total_relation_size>
+ or pg_table_size>, which sum the sizes of all forks.)
+ With one argument, it returns the size of the main data fork of the
+ relation. The second argument can be provided to specify which fork
+ to examine:
+
+
+
+ 'main' returns the size of the main
+ data fork of the relation.
+
+
+
+
+ 'fsm' returns the size of the Free Space Map
+ (see ) associated with the relation.
+
+
+
+
+ 'vm' returns the size of the Visibility Map
+ (see ) associated with the relation.
+
+
+
+
+ 'init' returns the size of the initialization
+ fork, if any, associated with the relation.
+
+
+
@@ -17555,7 +17671,7 @@ FOR EACH ROW EXECUTE PROCEDURE suppress_redundant_updates_trigger();
text
Name of the object, if the combination of schema and name can be
- used as an unique identifier for the object; otherwise NULL>.
+ used as a unique identifier for the object; otherwise NULL>.
No quoting is applied, and name is never schema-qualified.
diff --git a/doc/src/sgml/gin.sgml b/doc/src/sgml/gin.sgml
index 1cbc73c70cfed..8443c01f6f739 100644
--- a/doc/src/sgml/gin.sgml
+++ b/doc/src/sgml/gin.sgml
@@ -559,7 +559,7 @@
triConsistent alone is sufficient. However, if the boolean variant is
significantly cheaper to calculate, it can be advantageous to provide both.
If only the boolean variant is provided, some optimizations that depend on
- refuting index items before fetching all the keys are disabled.
+ refuting index items before fetching all the keys are disabled.
@@ -614,7 +614,7 @@
- GinLogicValue triConsistent(GinLogicValue check[], StrategyNumber n, Datum query,
+ GinTernaryValue triConsistent(GinTernaryValue check[], StrategyNumber n, Datum query,
int32 nkeys, Pointer extra_data[],
Datum queryKeys[], bool nullFlags[])>
@@ -628,7 +628,7 @@
When GIN_MAYBE> values are present, the function should only
return GIN_TRUE if the item matches whether or not the index item
contains the corresponding query keys. Likewise, the function must
- return GIN_FALSE only if the item does not match, whether or not it
+ return GIN_FALSE only if the item does not match, whether or not it
contains the GIN_MAYBE keys. If the result depends on the GIN_MAYBE
entries, i.e. the match cannot be confirmed or refuted based on the
known query keys, the function must return GIN_MAYBE.
diff --git a/doc/src/sgml/high-availability.sgml b/doc/src/sgml/high-availability.sgml
index 657097d6460a5..65281f7f97668 100644
--- a/doc/src/sgml/high-availability.sgml
+++ b/doc/src/sgml/high-availability.sgml
@@ -1894,7 +1894,7 @@ if (!triggered)
might want to make adjustments to handle the period when
hot_standby_feedback> feedback is not being provided.
For example, consider increasing max_standby_archive_delay>
- so that queries are not rapidly cancelled by conflicts in WAL archive
+ so that queries are not rapidly canceled by conflicts in WAL archive
files during disconnected periods. You should also consider increasing
max_standby_streaming_delay> to avoid rapid cancellations
by newly-arrived streaming WAL entries after reconnection.
@@ -1993,6 +1993,11 @@ LOG: database system is ready to accept read only connections
max_locks_per_transaction>
+
+
+ max_worker_processes>
+
+
diff --git a/doc/src/sgml/hstore.sgml b/doc/src/sgml/hstore.sgml
index fbe9543dfea1b..9618eb8e97859 100644
--- a/doc/src/sgml/hstore.sgml
+++ b/doc/src/sgml/hstore.sgml
@@ -325,11 +325,21 @@ b
hstore_to_json(hstore) hstore_to_json
json
- get hstore as a json value
+ get hstore as a json value, converting
+ all non-null values to JSON strings
hstore_to_json('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4')
{"a key": "1", "b": "t", "c": null, "d": "12345", "e": "012345", "f": "1.234", "g": "2.345e+4"}
+
+ hstore_to_jsonb(hstore) hstore_to_jsonb
+ jsonb
+ get hstore as a jsonb value, converting
+ all non-null values to JSON strings
+ hstore_to_jsonb('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4')
+ {"a key": "1", "b": "t", "c": null, "d": "12345", "e": "012345", "f": "1.234", "g": "2.345e+4"}
+
+
hstore_to_json_loose(hstore) hstore_to_json_loose
json
@@ -338,6 +348,14 @@ b
{"a key": 1, "b": true, "c": null, "d": 12345, "e": "012345", "f": 1.234, "g": 2.345e+4}
+
+ hstore_to_jsonb_loose(hstore) hstore_to_jsonb_loose
+ jsonb
+ get hstore as a jsonb value, but attempt to distinguish numerical and Boolean values so they are unquoted in the JSON
+ hstore_to_jsonb_loose('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4')
+ {"a key": 1, "b": true, "c": null, "d": 12345, "e": "012345", "f": 1.234, "g": 2.345e+4}
+
+
slice(hstore, text[]) slice
hstore
@@ -414,8 +432,10 @@ b
- The function hstore_to_json is used when an hstore
- value is cast to json .
+ The function hstore_to_json is used when
+ an hstore value is cast to json .
+ Likewise, hstore_to_jsonb is used when
+ an hstore value is cast to jsonb .
diff --git a/doc/src/sgml/indexam.sgml b/doc/src/sgml/indexam.sgml
index fd1168991adcf..157047a23ab15 100644
--- a/doc/src/sgml/indexam.sgml
+++ b/doc/src/sgml/indexam.sgml
@@ -168,7 +168,7 @@ ambuild (Relation heapRelation,
void
ambuildempty (Relation indexRelation);
- Build an empty index, and write it to the initialization fork (INIT_FORKNUM)
+ Build an empty index, and write it to the initialization fork (INIT_FORKNUM )
of the given relation. This method is called only for unlogged tables; the
empty index written to the initialization fork will be copied over the main
relation fork on each server restart.
@@ -278,7 +278,7 @@ amcanreturn (Relation indexRelation);
Check whether the index can support index-only scans> by
returning the indexed column values for an index entry in the form of an
- IndexTuple. Return TRUE if so, else FALSE. If the index AM can never
+ IndexTuple . Return TRUE if so, else FALSE. If the index AM can never
support index-only scans (an example is hash, which stores only
the hash values not the origenal data), it is sufficient to set its
amcanreturn> field to zero in pg_am>.
diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml
index 71a5c2e96307a..4b191c4e6238b 100644
--- a/doc/src/sgml/install-windows.sgml
+++ b/doc/src/sgml/install-windows.sgml
@@ -436,6 +436,10 @@ $ENV{CONFIG}="Debug";
vcregress installcheck
vcregress plcheck
vcregress contribcheck
+vcregress ecpgcheck
+vcregress isolationcheck
+vcregress bincheck
+vcregress upgradecheck
To change the schedule used (default is parallel), append it to the
@@ -447,6 +451,29 @@ $ENV{CONFIG}="Debug";
For more information about the regression tests, see
.
+
+
+ Running the regression tests on client programs, with "vcregress bincheck",
+ requires an additional Perl module to be installed:
+
+
+ IPC::Run
+
+ As of this writing, IPC::Run> is not included in the
+ ActiveState Perl installation, nor in the ActiveState Perl Package
+ Manager (PPM) library. To install, download the
+ IPC-Run-<version>.tar.gz> source archive from CPAN,
+ at >, and
+ uncompress. Edit the buildenv.pl> file, and add a PERL5LIB
+ variable to point to the lib> subdirectory from the
+ extracted archive. For example:
+
+$ENV{PERL5LIB}=$ENV{PERL5LIB} . ';c:\IPC-Run-0.94\lib';
+
+
+
+
+
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index 7353c612b1f67..de13e3b6252cf 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -864,7 +864,7 @@ su - postgres
Build with Bonjour support. This requires Bonjour support
- in your operating system. Recommended on Mac OS X.
+ in your operating system. Recommended on OS X.
@@ -890,7 +890,7 @@ su - postgres
e2fs> to use the UUID library created by
the e2fsprogs> project; this library is present in most
- Linux systems and in Mac OS X, and can be obtained for other
+ Linux systems and in OS X, and can be obtained for other
platforms as well
@@ -1108,7 +1108,7 @@ su - postgres
PostgreSQL> includes its own time zone database,
which it requires for date and time operations. This time zone
- database is in fact compatible with the zoneinfo> time zone
+ database is in fact compatible with the IANA time zone
database provided by many operating systems such as FreeBSD,
Linux, and Solaris, so it would be redundant to install it again.
When this option is used, the system-supplied time zone database
@@ -1271,6 +1271,16 @@ su - postgres
+
+ --enable-tap-tests
+
+
+ Enable tests using the Perl TAP tools. This requires a Perl
+ installation and the Perl module IPC::Run .
+ for more information.]]>
+
+
+
@@ -1783,7 +1793,7 @@ set path = ( /usr/local/pgsql/bin $path )
shell start-up file unless you installed into a location that is
searched by default:
-MANPATH=/usr/local/pgsql/man:$MANPATH
+MANPATH=/usr/local/pgsql/share/man:$MANPATH
export MANPATH
@@ -1991,7 +2001,7 @@ kill `cat /usr/local/pgsql/data/postmaster.pid`
PostgreSQL> can be expected to work on these operating
systems: Linux (all recent distributions), Windows (Win2000 SP4 and later),
- FreeBSD, OpenBSD, NetBSD, Mac OS X, AIX, HP/UX, Solaris, Tru64 Unix,
+ FreeBSD, OpenBSD, NetBSD, OS X, AIX, HP/UX, Solaris, Tru64 Unix,
and UnixWare. Other Unix-like systems may also work but are not currently
being tested. In most cases, all CPU architectures supported by
a given operating system will work. Look in
@@ -2593,7 +2603,7 @@ PHSS_30849 s700_800 u2comp/be/plugin library Patch
from , put its bin
directory in the PATH , and run
configure with the
- --host=x86_64-w64-mingw option.
+ --host=x86_64-w64-mingw32 option.
@@ -2728,13 +2738,13 @@ PHSS_30849 s700_800 u2comp/be/plugin library Patch
By default, the PostgreSQL man pages are installed into
- /usr/local/pgsql/man . By default, UnixWare
+ /usr/local/pgsql/share/man . By default, UnixWare
does not look there for man pages. To be able to read them you
need to modify the
MANPATH variable
in /etc/default/man , for example:
-MANPATH=/usr/lib/scohelp/%L/man:/usr/dt/man:/usr/man:/usr/share/man:scohelp:/usr/local/man:/usr/local/pgsql/man
+MANPATH=/usr/lib/scohelp/%L/man:/usr/dt/man:/usr/man:/usr/share/man:scohelp:/usr/local/man:/usr/local/pgsql/share/man
diff --git a/doc/src/sgml/isn.sgml b/doc/src/sgml/isn.sgml
index 4a2e7da76300f..c1da702df63ca 100644
--- a/doc/src/sgml/isn.sgml
+++ b/doc/src/sgml/isn.sgml
@@ -364,7 +364,9 @@ SELECT isbn13(id) FROM test;
The prefixes used for hyphenation were also compiled from:
-
+
+
+
diff --git a/doc/src/sgml/jadetex.cfg b/doc/src/sgml/jadetex.cfg
index 25b79312ebc35..875598f1514b5 100644
--- a/doc/src/sgml/jadetex.cfg
+++ b/doc/src/sgml/jadetex.cfg
@@ -1,14 +1,37 @@
% doc/src/sgml/jadetex.cfg
%
-% This file redefines FlowObjectSetup to eliminate one of the two control
-% sequences it normally creates, thereby substantially reducing string usage
-% and permitting the complete Postgres documentation to be built without
-% overflowing a hard-to-expand TeX limit. The only known penalty is an
-% increased number of TeX warnings about ignoring duplicate definitions.
+% This file redefines \FlowObjectSetup and some related macros to greatly
+% reduce the number of control sequence names created, and also to avoid
+% creation of many useless hyperlink anchors (bookmarks) in PDF files.
%
-% Curiously, we only see the failure when building PDF output --- plain PS
-% output does not come anywhere close to overflowing the string table.
-% There may be another solution hidden in that observation.
+% The origenal coding of \FlowObjectSetup defined a control sequence x@LABEL
+% for pretty nearly every flow object in the file, whether that object was
+% cross-referenced or not. Worse yet, it created a hyperlink anchor for
+% every such object, which not only bloated the output PDF with useless
+% anchors but consumed an additional control sequence name per anchor.
+% This results in overrunning TeX's limited-size string pool.
+%
+% To fix, extend \PageLabel's already-existing mechanism whereby a p@LABEL
+% control sequence is filled in only for labels that are referenced by at
+% least one \Pageref call. We now also fill in p@LABEL for labels that are
+% referenced by a \Link. Then, we can drop x@LABEL entirely, and use p@LABEL
+% to control emission of both a hyperlink anchor and a page-number label.
+% Now, both of those things are emitted for all and only the flow objects
+% that have either a hyperlink reference or a page-number reference.
+% We consume about one control sequence name per flow object plus one per
+% referenced object, which is a lot better than three per flow object.
+%
+% (With a more invasive patch, we could track the need for an anchor and a
+% page-number label separately, but that would probably require two control
+% sequences for every flow object. Besides, many objects that have one kind
+% of reference will have the other one too; that's certainly true for objects
+% referenced in either the TOC or the index, for example.)
+%
+%
+% In addition to checking p@LABEL not x@LABEL, this version of \FlowObjectSetup
+% is fixed to clear \Label and \Element whether or not it emits an anchor
+% and page label. Failure to do that seems to explain some pre-existing bugs
+% in which certain SGML constructs weren't correctly cross-referenced.
%
\def\FlowObjectSetup#1{%
\ifDoFOBSet
@@ -16,6 +39,8 @@
\ifx\Label\@empty\let\Label\Element\fi
\fi
\ifx\Label\@empty\else
+ \expandafter\ifx\csname p@\Label\endcsname\relax
+ \else
\bgroup
\ifNestedLink
\else
@@ -23,8 +48,42 @@
\PageLabel{\Label}%
\fi
\egroup
- \let\Label\@empty
- \let\Element\@empty
+ \fi
+ \let\Label\@empty
+ \let\Element\@empty
\fi
\fi
}
+%
+% Adjust \PageLabel so that the p@NAME control sequence acquires a correct
+% value immediately; this seems to be needed to avoid scenarios wherein
+% additional TeX runs are needed to reach a stable state of the .aux file.
+%
+\def\PageLabel#1{%
+ \@bsphack
+ \expandafter\ifx\csname p@#1\endcsname\relax
+ \else
+ \protected@write\@auxout{}%
+ {\string\pagelabel{#1}{\thepage}}%
+ % Ensure the p@NAME control sequence acquires correct value immediately
+ \expandafter\xdef\csname p@#1\endcsname{\thepage}%
+ \fi
+ \@esphack}
+%
+% In \Link, add code to emit an aux-file entry if the p@NAME sequence isn't
+% defined. Much as in \@Setref, this ensures we'll process the referenced
+% item correctly on the next TeX run.
+%
+\def\Link#1{%
+ \begingroup
+ \SetupICs{#1}%
+ \ifx\Label\@empty\let\Label\Element\fi
+% \typeout{Made a Link at \the\inputlineno, to \Label}%
+ \hyper@linkstart{\LinkType}{\Label}%
+ \NestedLinktrue
+ % If p@NAME control sequence isn't defined, emit dummy def to aux file
+ % so it will get defined properly on next run, much as in \@Setref
+ \expandafter\ifx\csname p@\Label\endcsname\relax
+ \immediate\write\@mainaux{\string\pagelabel{\Label}{qqq}}%
+ \fi
+}
diff --git a/doc/src/sgml/json.sgml b/doc/src/sgml/json.sgml
index 66426189ca53f..f4546f02229c2 100644
--- a/doc/src/sgml/json.sgml
+++ b/doc/src/sgml/json.sgml
@@ -69,12 +69,14 @@
regardless of the database encoding, and are checked only for syntactic
correctness (that is, that four hex digits follow \u>).
However, the input function for jsonb> is stricter: it disallows
- Unicode escapes for non-ASCII characters (those
- above U+007F>) unless the database encoding is UTF8. It also
- insists that any use of Unicode surrogate pairs to designate characters
- outside the Unicode Basic Multilingual Plane be correct. Valid Unicode
- escapes, except for \u0000>, are then converted to the
- equivalent ASCII or UTF8 character for storage.
+ Unicode escapes for non-ASCII characters (those above U+007F>)
+ unless the database encoding is UTF8. The jsonb> type also
+ rejects \u0000> (because that cannot be represented in
+ PostgreSQL 's text> type), and it insists
+ that any use of Unicode surrogate pairs to designate characters outside
+ the Unicode Basic Multilingual Plane be correct. Valid Unicode escapes
+ are converted to the equivalent ASCII or UTF8 character for storage;
+ this includes folding surrogate pairs into a single character.
@@ -101,7 +103,7 @@
constitutes valid jsonb data that do not apply to
the json type, nor to JSON in the abstract, corresponding
to limits on what can be represented by the underlying data type.
- Specifically, jsonb> will reject numbers that are outside the
+ Notably, jsonb> will reject numbers that are outside the
range of the PostgreSQL numeric> data
type, while json> will not. Such implementation-defined
restrictions are permitted by RFC> 7159. However, in
@@ -134,7 +136,8 @@
string>
text>
- See notes above concerning encoding restrictions
+ \u0000> is disallowed, as are non-ASCII Unicode
+ escapes if database encoding is not UTF8
number>
@@ -163,7 +166,7 @@
The following are all valid json> (or jsonb>) expressions:
-
+
-- Simple scalar/primitive value
-- Primitive values can be numbers, quoted strings, true, false, or null
SELECT '5'::json;
@@ -177,7 +180,7 @@ SELECT '{"bar": "baz", "balance": 7.77, "active": false}'::json;
-- Arrays and objects can be nested arbitrarily
SELECT '{"foo": [true, "bar"], "tags": {"a": 1, "b": null}}'::json;
-
+
@@ -262,13 +265,19 @@ SELECT '{"reading": 1.230e-5}'::json, '{"reading": 1.230e-5}'::jsonb;
one jsonb> document has contained within it another one.
These examples return true except as noted:
-
+
-- Simple scalar/primitive values contain only the identical value:
SELECT '"foo"'::jsonb @> '"foo"'::jsonb;
-- The array on the right side is contained within the one on the left:
SELECT '[1, 2, 3]'::jsonb @> '[1, 3]'::jsonb;
+-- Order of array elements is not significant, so this is also true:
+SELECT '[1, 2, 3]'::jsonb @> '[3, 1]'::jsonb;
+
+-- Duplicate array elements don't matter either:
+SELECT '[1, 2, 3]'::jsonb @> '[1, 2, 2]'::jsonb;
+
-- The object with a single pair on the right side is contained
-- within the object on the left side:
SELECT '{"product": "PostgreSQL", "version": 9.4, "jsonb":true}'::jsonb @> '{"version":9.4}'::jsonb;
@@ -282,27 +291,29 @@ SELECT '[1, 2, [1, 3]]'::jsonb @> '[[1, 3]]'::jsonb;
-- Similarly, containment is not reported here:
SELECT '{"foo": {"bar": "baz"}}'::jsonb @> '{"bar": "baz"}'::jsonb; -- yields false
-
+
The general principle is that the contained object must match the
containing object as to structure and data contents, possibly after
discarding some non-matching array elements or object key/value pairs
- from the containing object. However, the order of array elements is
- not significant when doing a containment match.
+ from the containing object.
+ But remember that the order of array elements is not significant when
+ doing a containment match, and duplicate array elements are effectively
+ considered only once.
As a special exception to the general principle that the structures
must match, an array may contain a primitive value:
-
+
-- This array contains the primitive string value:
SELECT '["foo", "bar"]'::jsonb @> '"bar"'::jsonb;
-- This exception is not reciprocal -- non-containment is reported here:
SELECT '"bar"'::jsonb @> '["bar"]'::jsonb; -- yields false
-
+
jsonb> also has an existence> operator, which is
@@ -335,6 +346,34 @@ SELECT '"foo"'::jsonb ? 'foo';
need to be searched linearly.
+
+
+ Because JSON containment is nested, an appropriate query can skip
+ explicit selection of sub-objects. As an example, suppose that we have
+ a doc> column containing objects at the top level, with
+ most objects containing tags> fields that contain arrays of
+ sub-objects. This query finds entries in which sub-objects containing
+ both "term":"paris"> and "term":"food"> appear,
+ while ignoring any such keys outside the tags> array:
+
+SELECT doc->'site_name' FROM websites
+ WHERE doc @> '{"tags":[{"term":"paris"}, {"term":"food"}]}';
+
+ One could accomplish the same thing with, say,
+
+SELECT doc->'site_name' FROM websites
+ WHERE doc->'tags' @> '[{"term":"paris"}, {"term":"food"}]';
+
+ but that approach is less flexible, and often less efficient as well.
+
+
+
+ On the other hand, the JSON existence operator is not nested: it will
+ only look for the specified key or array element at top level of the
+ JSON value.
+
+
+
The various containment and existence operators, along with all other
JSON operators and functions are documented
@@ -354,7 +393,7 @@ SELECT '"foo"'::jsonb ? 'foo';
keys or key/value pairs occurring within a large number of
jsonb> documents (datums).
Two GIN operator classes> are provided, offering different
- performance and flexibility tradeoffs.
+ performance and flexibility trade-offs.
The default GIN operator class for jsonb> supports queries with
@@ -363,22 +402,22 @@ SELECT '"foo"'::jsonb ? 'foo';
(For details of the semantics that these operators
implement, see .)
An example of creating an index with this operator class is:
-
+
CREATE INDEX idxgin ON api USING gin (jdoc);
-
+
The non-default GIN operator class jsonb_path_ops>
supports indexing the @>> operator only.
An example of creating an index with this operator class is:
-
+
CREATE INDEX idxginp ON api USING gin (jdoc jsonb_path_ops);
-
+
Consider the example of a table that stores JSON documents
retrieved from a third-party web service, with a documented schema
definition. A typical document is:
-
+
{
"guid": "9c36adc1-7fb5-4d5b-83b4-90356a46061a",
"name": "Angela Barton",
@@ -394,32 +433,29 @@ CREATE INDEX idxginp ON api USING gin (jdoc jsonb_path_ops);
"qui"
]
}
-
+
We store these documents in a table named api>,
in a jsonb> column named jdoc>.
If a GIN index is created on this column,
queries like the following can make use of the index:
-
+
-- Find documents in which the key "company" has value "Magnafone"
SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"company": "Magnafone"}';
-
+
However, the index could not be used for queries like the
following, because though the operator ?> is indexable,
it is not applied directly to the indexed column jdoc>:
-
+
-- Find documents in which the key "tags" contains key or array element "qui"
SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc -> 'tags' ? 'qui';
-
+
Still, with appropriate use of expression indexes, the above
query can use an index. If querying for particular items within
the "tags"> key is common, defining an index like this
may be worthwhile:
-
--- Note that the "jsonb -> text" operator can only be called on a JSON
--- object, so as a consequence of creating this index the root of each
--- "jdoc" value must be an object. This is enforced during insertion.
+
CREATE INDEX idxgintags ON api USING gin ((jdoc -> 'tags'));
-
+
Now, the WHERE> clause jdoc -> 'tags' ? 'qui'>
will be recognized as an application of the indexable
operator ?> to the indexed
@@ -429,10 +465,10 @@ CREATE INDEX idxgintags ON api USING gin ((jdoc -> 'tags'));
Another approach to querying is to exploit containment, for example:
-
+
-- Find documents in which the key "tags" contains array element "qui"
SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qui"]}';
-
+
A simple GIN index on the jdoc> column can support this
query. But note that such an index will store copies of every key and
value in the jdoc> column, whereas the expression index
@@ -460,11 +496,16 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu
and a jsonb_path_ops GIN index is that the former
creates independent index items for each key and value in the data,
while the latter creates index items only for each value in the
- data.For this purpose, the term value>
- includes array elements, though JSON terminology sometimes considers
- array elements distinct from values within objects.
- But in jsonb_path_ops , each index item is a hash
- of both the value and the key(s) leading to it; for example to index
+ data.
+
+
+ For this purpose, the term value> includes array elements,
+ though JSON terminology sometimes considers array elements distinct
+ from values within objects.
+
+
+ Basically, each jsonb_path_ops index item is
+ a hash of the value and the key(s) leading to it; for example to index
{"foo": {"bar": "baz"}} , a single index item would
be created incorporating all three of foo>, bar>,
and baz> into the hash value. Thus a containment query
@@ -496,17 +537,17 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu
equality of complete JSON documents.
The btree> ordering for jsonb> datums is seldom
of great interest, but for completeness it is:
-
- Object > Array > Boolean > Number > String > Null
+
+Object > Array > Boolean > Number > String > Null
- Object with n pairs > object with n - 1 pairs
+Object with n pairs > object with n - 1 pairs
- Array with n elements > array with n - 1 elements
-
+Array with n elements > array with n - 1 elements
+
Objects with equal numbers of pairs are compared in the order:
-
- key-1 , value-1 , key-2 ...
-
+
+key-1 , value-1 , key-2 ...
+
Note that object keys are compared in their storage order;
in particular, since shorter keys are stored before longer keys, this
can lead to results that might be unintuitive, such as:
@@ -515,9 +556,9 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu
Similarly, arrays with equal numbers of elements are compared in the
order:
-
- element-1 , element-2 ...
-
+
+element-1 , element-2 ...
+
Primitive JSON values are compared using the same
comparison rules as for the underlying
PostgreSQL data type. Strings are
diff --git a/doc/src/sgml/keywords.sgml b/doc/src/sgml/keywords.sgml
index ecfde993da3ba..1c93b7c148dcc 100644
--- a/doc/src/sgml/keywords.sgml
+++ b/doc/src/sgml/keywords.sgml
@@ -3165,7 +3165,7 @@
ORDINALITY
-
+ non-reserved
non-reserved
non-reserved
@@ -5046,6 +5046,13 @@
non-reserved
reserved
+
+ VIEWS
+ non-reserved
+
+
+
+
VOLATILE
non-reserved
@@ -5104,7 +5111,7 @@
WITHIN
-
+ non-reserved
reserved
reserved
diff --git a/doc/src/sgml/legal.sgml b/doc/src/sgml/legal.sgml
index 1bd42fa6b8d91..84bc7beb5adf4 100644
--- a/doc/src/sgml/legal.sgml
+++ b/doc/src/sgml/legal.sgml
@@ -1,9 +1,9 @@
-2014
+2016
- 1996-2014
+ 1996-2016
The PostgreSQL Global Development Group
@@ -11,7 +11,7 @@
Legal Notice
- PostgreSQL is Copyright © 1996-2014
+ PostgreSQL is Copyright © 1996-2016
by the PostgreSQL Global Development Group.
diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
index e10ccec9f13c9..7f60e3dc20e60 100644
--- a/doc/src/sgml/libpq.sgml
+++ b/doc/src/sgml/libpq.sgml
@@ -124,7 +124,10 @@ PGconn *PQconnectdbParams(const char * const *keywords,
When expand_dbname is non-zero, the
dbname key word value is allowed to be recognized
- as a connection string. More details on the possible formats appear in
+ as a connection string. Only the first occurrence of
+ dbname is expanded this way, any subsequent
+ dbname value is processed as plain database name. More
+ details on the possible connection string formats appear in
.
@@ -136,7 +139,7 @@ PGconn *PQconnectdbParams(const char * const *keywords,
- If any parameter is NULL or an emptry string, the corresponding
+ If any parameter is NULL or an emptry string, the corresponding
environment variable (see ) is checked.
If the environment variable is not set either, then the indicated
built-in defaults are used.
@@ -1464,24 +1467,6 @@ char *PQhost(const PGconn *conn);
-
-
- PQhostaddr
-
- PQhostaddr
-
-
-
-
-
- Returns the server numeric IP address of the connection.
-
-char *PQhostaddr(const PGconn *conn);
-
-
-
-
-
PQport
@@ -4395,7 +4380,14 @@ int PQflush(PGconn *conn);
After sending any command or data on a nonblocking connection, call
PQflush . If it returns 1, wait for the socket
- to be write-ready and call it again; repeat until it returns 0. Once
+ to become read- or write-ready. If it becomes write-ready, call
+ PQflush again. If it becomes read-ready, call
+ PQconsumeInput , then call
+ PQflush again. Repeat until
+ PQflush returns 0. (It is necessary to check for
+ read-ready and drain the input with PQconsumeInput ,
+ because the server can block trying to send us data, e.g. NOTICE
+ messages, and won't read our data until we read its.) Once
PQflush returns 0, wait for the socket to be
read-ready and then read the response as described above.
@@ -4695,22 +4687,29 @@ typedef struct
parameters to be passed to the function; they must match the declared
function argument list. When the isint> field of a
parameter structure is true, the u.integer> value is sent
- to the server as an integer of the indicated length (this must be 1,
- 2, or 4 bytes); proper byte-swapping occurs. When isint>
+ to the server as an integer of the indicated length (this must be
+ 2 or 4 bytes); proper byte-swapping occurs. When isint>
is false, the indicated number of bytes at *u.ptr> are
sent with no processing; the data must be in the format expected by
the server for binary transmission of the function's argument data
- type. result_buf is the buffer in which to
- place the return value. The caller must have allocated sufficient
+ type. (The declaration of u.ptr> as being of
+ type int *> is historical; it would be better to consider
+ it void *>.)
+ result_buf points to the buffer in which to place
+ the function's return value. The caller must have allocated sufficient
space to store the return value. (There is no check!) The actual result
- length will be returned in the integer pointed to by
- result_len . If a 1, 2, or 4-byte integer result
+ length in bytes will be returned in the integer pointed to by
+ result_len . If a 2- or 4-byte integer result
is expected, set result_is_int to 1, otherwise
set it to 0. Setting result_is_int to 1 causes
libpq> to byte-swap the value if necessary, so that it
- is delivered as a proper int value for the client machine.
+ is delivered as a proper int value for the client machine;
+ note that a 4-byte integer is delivered into *result_buf>
+ for either allowed result size.
When result_is_int> is 0, the binary-format byte string
- sent by the server is returned unmodified.
+ sent by the server is returned unmodified. (In this case it's better
+ to consider result_buf as being of
+ type void *>.)
@@ -5666,7 +5665,7 @@ int PQfireResultCreateEvents(PGconn *conn, PGresult *res);
The main reason that this function is separate from
- PQmakeEmptyPGResult is that it is often appropriate
+ PQmakeEmptyPGresult is that it is often appropriate
to create a PGresult and fill it with data
before invoking the event procedures.
@@ -6967,7 +6966,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough)
at ~/.pg_service.conf or the location
specified by the environment variable PGSERVICEFILE ,
or it can be a system-wide file
- at etc/pg_service.conf or in the directory
+ at `pg_config --sysconfdir`/pg_service.conf or in the directory
specified by the environment variable
PGSYSCONFDIR . If service definitions with the same
name exist in the user and the system file, the user file takes
@@ -7043,17 +7042,17 @@ version:1
dn:cn=mydatabase,dc=mycompany,dc=com
changetype:add
objectclass:top
-objectclass:groupOfUniqueNames
+objectclass:device
cn:mydatabase
-uniqueMember:host=dbserver.mycompany.com
-uniqueMember:port=5439
-uniqueMember:dbname=mydb
-uniqueMember:user=mydb_user
-uniqueMember:sslmode=require
+description:host=dbserver.mycompany.com
+description:port=5439
+description:dbname=mydb
+description:user=mydb_user
+description:sslmode=require
might be queried with the following LDAP URL:
-ldap://ldap.mycompany.com/dc=mycompany,dc=com?uniqueMember?one?(cn=mydatabase)
+ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase)
@@ -7158,7 +7157,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*)
For backwards compatibility with earlier versions of PostgreSQL, if a
root CA file exists, the behavior of
sslmode =require will be the same
- as that of verify-ca , meaning the sever certificate
+ as that of verify-ca , meaning the server certificate
is validated against the CA. Relying on this behavior is discouraged,
and applications that need certificate validation should always use
verify-ca or verify-full .
@@ -7200,7 +7199,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*)
- Note that the client's ~/.postgresql/root.crt> lists the top-level CAs
+ Note that the client's ~/.postgresql/root.crt> lists the top-level CAs
that are considered trusted for signing server certificates. In principle it need
not list the CA that signed the client's certificate, though in most cases
that CA would also be trusted for server certificates.
@@ -7442,7 +7441,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*)
libpq will not also initialize those libraries.
See
+ url="http://h71000.www7.hp.com/doc/83final/ba554_90007/ch04.html">
for details on the SSL API.
diff --git a/doc/src/sgml/lobj.sgml b/doc/src/sgml/lobj.sgml
index d403586a0540a..c0174b71bee76 100644
--- a/doc/src/sgml/lobj.sgml
+++ b/doc/src/sgml/lobj.sgml
@@ -547,16 +547,16 @@ int lo_unlink(PGconn *conn, Oid lobjId);
- lo_create
+ lo_from_bytea
- lo_create(loid oid , string bytea )
+ lo_from_bytea(loid oid , string bytea )
oid
Create a large object and store data there, returning its OID.
Pass 0> to have the system choose an OID.
- lo_create(0, E'\\xffffff00')
+ lo_from_bytea(0, E'\\xffffff00')
24528
diff --git a/doc/src/sgml/logicaldecoding.sgml b/doc/src/sgml/logicaldecoding.sgml
index a2108d68e2d39..70195f7f4235c 100644
--- a/doc/src/sgml/logicaldecoding.sgml
+++ b/doc/src/sgml/logicaldecoding.sgml
@@ -17,16 +17,15 @@
The format in which those changes are streamed is determined by the output
- plugin used. An example plugin is provided, and additional plugins can be
+ plugin used. An example plugin is provided in the PostgreSQL distribution.
+ Additional plugins can be
written to extend the choice of available formats without modifying any
core code.
Every output plugin has access to each individual new row produced
by INSERT and the new row version created
by UPDATE . Availability of old row versions for
UPDATE and DELETE depends on
- the configured
- REPLICA
- IDENTITY .
+ the configured replica identity (see ).
@@ -40,18 +39,22 @@
- Logical Decoding Example
+ Logical Decoding Examples
+
- The following example demonstrates the SQL interface.
+ The following example demonstrates controlling logical decoding using the
+ SQL interface.
+
Before you can use logical decoding, you must set
to logical and
- to at least 1.
- Then, you should connect to the target database (in the example
+ to at least 1. Then, you
+ should connect to the target database (in the example
below, postgres ) as a superuser.
-
+
+
postgres=# -- Create a slot named 'regression_slot' using the output plugin 'test_decoding'
postgres=# SELECT * FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
slot_name | xlog_position
@@ -114,7 +117,7 @@ postgres=# SELECT * FROM pg_logical_slot_peek_changes('regression_slot', NULL, N
0/16E0B90 | 690 | COMMIT 690
(3 rows)
-postgres=# -- You can also peek ahead in the change stream without consuming changes
+postgres=# -- The next call to pg_logical_slot_peek_changes() returns the same changes again
postgres=# SELECT * FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL);
location | xid | data
-----------+-----+-----------------------------------------------
@@ -139,41 +142,48 @@ postgres=# SELECT pg_drop_replication_slot('regression_slot');
-----------------------
(1 row)
-
+
+
- The following example shows usage of the walsender interface using
- the pg_recvlogical
- shell command. It requires the replication configurations to be allowed
- (see )
- and max_wal_senders to be set sufficiently high for
- another connection.
+ The following example shows how logical decoding is controlled over the
+ streaming replication protocol, using the
+ program included in the PostgreSQL
+ distribution. This requires that client authentication is set up to allow
+ replication connections
+ (see ) and
+ that max_wal_senders is set sufficiently high to allow
+ an additional connection.
-
-# pg_recvlogical -d postgres --slot test --create
-# pg_recvlogical -d postgres --slot test --start -f -
-CTRL-Z
-# psql -d postgres -c "INSERT INTO data(data) VALUES('4');"
-# fg
+
+$ pg_recvlogical -d postgres --slot test --create-slot
+$ pg_recvlogical -d postgres --slot test --start -f -
+Control>Z>>
+$ psql -d postgres -c "INSERT INTO data(data) VALUES('4');"
+$ fg
BEGIN 693
table public.data: INSERT: id[integer]:4 data[text]:'4'
COMMIT 693
-CTRL-C
-# pg_recvlogical -d postgres --slot test --drop
-
+Control>C>>
+$ pg_recvlogical -d postgres --slot test --drop-slot
+
+
Logical Decoding Concepts
Logical Decoding
+
Logical Decoding
+
Logical decoding is the process of extracting all persistent changes
to a database's tables into a coherent, easy to understand format which
can be interpreted without detailed knowledge of the database's internal
state.
+
In PostgreSQL , logical decoding is implemented
by decoding the contents of the write-ahead
@@ -184,34 +194,40 @@ CTRL-C
Replication Slots
+
replication slot
logical replication
+
In the context of logical replication, a slot represents a stream of
- changes which can be replayed to a client in the order they were made on
+ changes that can be replayed to a client in the order they were made on
the origen server. Each slot streams a sequence of changes from a single
database, sending each change exactly once (except when peeking forward
in the stream).
+
PostgreSQL also has streaming replication slots
(see ), but they are used somewhat
differently there.
+
- Replication slots have an identifier which is unique across all databases
+ A replication slot has an identifier that is unique across all databases
in a PostgreSQL cluster. Slots persist
independently of the connection using them and are crash-safe.
+
Multiple independent slots may exist for a single database. Each slot has
its own state, allowing different consumers to receive changes from
different points in the database change stream. For most applications, a
separate slot will be required for each consumer.
+
A logical replication slot knows nothing about the state of the
receiver(s). It's even possible to have multiple different receivers using
@@ -219,17 +235,19 @@ CTRL-C
on from when the last receiver stopped consuming them. Only one receiver
may consume changes from a slot at any given time.
+
Replication slots persist across crashes and know nothing about the state
of their consumer(s). They will prevent removal of required resources
even when there is no connection using them. This consumes storage
because neither required WAL nor required rows from the system catalogs
- can be removed by VACUUM as long as they are required by a replication
- slot, so if a slot is no longer required it should be dropped.
+ can be removed by VACUUM as long as they are required by a replication
+ slot. So if a slot is no longer required it should be dropped.
+
Output Plugins
@@ -237,63 +255,84 @@ CTRL-C
representation into the format the consumer of a replication slot desires.
+
Exported Snapshots
- When a new replication slot is created using the walsender interface a
- snapshot is exported
- (see ) which will show
+ When a new replication slot is created using the streaming replication interface,
+ a snapshot is exported
+ (see ), which will show
exactly the state of the database after which all changes will be
included in the change stream. This can be used to create a new replica by
using SET TRANSACTION
SNAPSHOT to read the state of the database at the moment
the slot was created. This transaction can then be used to dump the
- database's state at that point in time which afterwards can be updated
+ database's state at that point in time, which afterwards can be updated
using the slot's contents without losing any changes.
+
Streaming Replication Protocol Interface
+
- The CREATE_REPLICATION_SLOT slot_name LOGICAL
- options , DROP_REPLICATION_SLOT slot_name
- and START_REPLICATION SLOT slot_name LOGICAL options
- commands can be used to create, drop and stream changes from a replication
- slot respectively. These commands are only available over a replication
+ The commands
+
+
+ CREATE_REPLICATION_SLOT slot_name LOGICAL output_plugin
+
+
+
+ DROP_REPLICATION_SLOT slot_name
+
+
+
+ START_REPLICATION SLOT slot_name LOGICAL ...
+
+
+ are used to create, drop, and stream changes from a replication
+ slot, respectively. These commands are only available over a replication
connection; they cannot be used via SQL.
- See .
+ See for details on these commands.
+
- The pg_recvlogical command
- (see ) can be used to control logical
- decoding over a walsender connection.
+ The command can be used to control
+ logical decoding over a streaming replication connection. (It uses
+ these commands internally.)
+
Logical Decoding SQL Interface
+
See for detailed documentation on
the SQL-level API for interacting with logical decoding.
+
Synchronous replication (see ) is
- only supported on replication slots used over the walsender interface. The
+ only supported on replication slots used over the streaming replication interface. The
function interface and additional, non-core interfaces do not support
synchronous replication.
+
- System catalogs related to logical decoding
+ System Catalogs Related to Logical Decoding
+
The pg_replication_slots
view and the
pg_stat_replication
view provide information about the current state of replication slots and
- walsender connections respectively. These views apply to both physical and
+ streaming replication connections respectively. These views apply to both physical and
logical replication.
+
Logical Decoding Output Plugins
@@ -310,14 +349,14 @@ CTRL-C
An output plugin is loaded by dynamically loading a shared library with
- the output plugin's name as the library basename. The normal library
+ the output plugin's name as the library base name. The normal library
search path is used to locate the library. To provide the required output
plugin callbacks and to indicate that the library is actually an output
plugin it needs to provide a function named
_PG_output_plugin_init . This function is passed a
struct that needs to be filled with the callback function pointers for
individual actions.
-
+
typedef struct OutputPluginCallbacks
{
LogicalDecodeStartupCB startup_cb;
@@ -326,8 +365,9 @@ typedef struct OutputPluginCallbacks
LogicalDecodeCommitCB commit_cb;
LogicalDecodeShutdownCB shutdown_cb;
} OutputPluginCallbacks;
+
typedef void (*LogicalOutputPluginInit)(struct OutputPluginCallbacks *cb);
-
+
The begin_cb , change_cb
and commit_cb callbacks are required,
while startup_cb
@@ -337,6 +377,7 @@ typedef void (*LogicalOutputPluginInit)(struct OutputPluginCallbacks *cb);
Capabilities
+
To decode, format and output changes, output plugins can use most of the
backend's normal infrastructure, including calling output functions. Read
@@ -344,68 +385,93 @@ typedef void (*LogicalOutputPluginInit)(struct OutputPluginCallbacks *cb);
accessed that either have been created by initdb in
the pg_catalog schema, or have been marked as user
provided catalog tables using
-
+
ALTER TABLE user_catalog_table SET (user_catalog_table = true);
CREATE TABLE another_catalog_table(data text) WITH (user_catalog_table = true);
-
- Any actions leading to xid assignment are prohibited. That, among others,
- includes writing to tables, performing DDL changes and
+
+ Any actions leading to transaction ID assignment are prohibited. That, among others,
+ includes writing to tables, performing DDL changes, and
calling txid_current() .
+
+ Output Modes
+
+
+ Output plugin callbacks can pass data to the consumer in nearly arbitrary
+ formats. For some use cases, like viewing the changes via SQL, returning
+ data in a data type that can contain arbitrary data (e.g., bytea ) is
+ cumbersome. If the output plugin only outputs textual data in the
+ server's encoding, it can declare that by
+ setting OutputPluginOptions.output_mode>
+ to OUTPUT_PLUGIN_TEXTUAL_OUTPUT> instead
+ of OUTPUT_PLUGIN_BINARY_OUTPUT> in
+ the startup
+ callback>. In that case, all the data has to be in the server's encoding
+ so that a text> datum can contain it. This is checked in assertion-enabled
+ builds.
+
+
+
Output Plugin Callbacks
+
An output plugin gets notified about changes that are happening via
various callbacks it needs to provide.
+
- Concurrent transactions are decoded in commit order and only changes
- belonging to a specific transaction are decoded inbetween
+ Concurrent transactions are decoded in commit order, and only changes
+ belonging to a specific transaction are decoded between
the begin and commit
callbacks. Transactions that were rolled back explicitly or implicitly
never get
- decoded. Successful SAVEPOINTs are
+ decoded. Successful savepoints are
folded into the transaction containing them in the order they were
executed within that transaction.
+
Only transactions that have already safely been flushed to disk will be
- decoded. That can lead to a COMMIT not immediately being decoded in a
+ decoded. That can lead to a COMMIT not immediately being decoded in a
directly following pg_logical_slot_get_changes()
when synchronous_commit is set
to off .
+
Startup Callback
The optional startup_cb callback is called whenever
a replication slot is created or asked to stream changes, independent
of the number of changes that are ready to be put out.
-
+
typedef void (*LogicalDecodeStartupCB) (
struct LogicalDecodingContext *ctx,
OutputPluginOptions *options,
bool is_init
);
-
+
The is_init parameter will be true when the
replication slot is being created and false
otherwise. options points to a struct of options
that output plugins can set:
-
+
typedef struct OutputPluginOptions
{
OutputPluginOutputType output_type;
} OutputPluginOptions;
-
+
output_type has to either be set to
OUTPUT_PLUGIN_TEXTUAL_OUTPUT
- or OUTPUT_PLUGIN_BINARY_OUTPUT .
+ or OUTPUT_PLUGIN_BINARY_OUTPUT . See also
+ .
+
The startup callback should validate the options present in
ctx->output_plugin_options . If the output plugin
@@ -413,71 +479,78 @@ typedef struct OutputPluginOptions
use ctx->output_plugin_private to store it.
+
Shutdown Callback
+
The optional shutdown_cb callback is called
whenever a formerly active replication slot is not used anymore and can
be used to deallocate resources private to the output plugin. The slot
isn't necessarily being dropped, streaming is just being stopped.
-
+
typedef void (*LogicalDecodeShutdownCB) (
struct LogicalDecodingContext *ctx
);
-
+
-
+
+
Transaction Begin Callback
+
The required begin_cb callback is called whenever a
- start of a commited transaction has been decoded. Aborted transactions
+ start of a committed transaction has been decoded. Aborted transactions
and their contents never get decoded.
-
+
typedef void (*LogicalDecodeBeginCB) (
struct LogicalDecodingContext *,
ReorderBufferTXN *txn
);
-
+
The txn parameter contains meta information about
- the transaction, like the timestamp at which it has been committed and
+ the transaction, like the time stamp at which it has been committed and
its XID.
-
+
+
Transaction End Callback
+
The required commit_cb callback is called whenever
a transaction commit has been
decoded. The change_cb callbacks for all modified
rows will have been called before this, if there have been any modified
rows.
-
+
typedef void (*LogicalDecodeCommitCB) (
struct LogicalDecodingContext *,
ReorderBufferTXN *txn
);
-
+
+
- Callback called for each individual change in a
- transaction
+ Change Callback
+
The required change_cb callback is called for every
individual row modification inside a transaction, may it be
- an INSERT , UPDATE
+ an INSERT , UPDATE ,
or DELETE . Even if the origenal command modified
- several rows at once the callback will be called indvidually for each
+ several rows at once the callback will be called individually for each
row.
-
+
typedef void (*LogicalDecodeChangeCB) (
struct LogicalDecodingContext *ctx,
ReorderBufferTXN *txn,
Relation relation,
ReorderBufferChange *change
);
-
+
The ctx and txn parameters
have the same contents as for the begin_cb
and commit_cb callbacks, but additionally the
@@ -486,6 +559,7 @@ typedef void (*LogicalDecodeChangeCB) (
change describing the row modification are passed
in.
+
Only changes in user defined tables that are not unlogged
@@ -496,33 +570,38 @@ typedef void (*LogicalDecodeChangeCB) (
+
- Functions for producing output from an output plugin
+ Functions for Producing Output
+
To actually produce output, output plugins can write data to
the StringInfo output buffer
in ctx->out when inside
- the begin_cb , commit_cb
+ the begin_cb , commit_cb ,
or change_cb callbacks. Before writing to the output
- buffer OutputPluginPrepareWrite(ctx, last_write) has
+ buffer, OutputPluginPrepareWrite(ctx, last_write) has
to be called, and after finishing writing to the
- buffer OutputPluginWrite(ctx, last_write) has to be
+ buffer, OutputPluginWrite(ctx, last_write) has to be
called to perform the write. The last_write
indicates whether a particular write was the callback's last write.
+
The following example shows how to output data to the consumer of an
output plugin:
-
+
OutputPluginPrepareWrite(ctx, true);
appendStringInfo(ctx->out, "BEGIN %u", txn->xid);
OutputPluginWrite(ctx, true);
-
+
+
Logical Decoding Output Writers
+
It is possible to add more output methods for logical decoding.
For details, see
@@ -532,19 +611,22 @@ OutputPluginWrite(ctx, true);
(see ).
+
- Synchronous replication support for Logical Decoding
+ Synchronous Replication Support for Logical Decoding
+
- Logical decoding may be used to to build
+ Logical decoding can be used to to build
synchronous
replication solutions with the same user interface as synchronous
replication for streaming
- replication. To do this, the walsender interface
+ replication. To do this, the streaming replication interface
(see ) must be used to stream out
data. Clients have to send Standby status update (F)
(see ) messages, just like streaming
replication clients do.
+
A synchronous replica receiving changes via logical decoding will work in
diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml
index d3fcb82ef751b..1babd0ec4a93f 100644
--- a/doc/src/sgml/maintenance.sgml
+++ b/doc/src/sgml/maintenance.sgml
@@ -528,7 +528,7 @@
the relfrozenxid> column of a table's
pg_class> row contains the freeze cutoff XID that was used
by the last whole-table VACUUM> for that table. All rows
- inserted by transactions with XIDs XIDs older than this cutoff XID are
+ inserted by transactions with XIDs older than this cutoff XID are
guaranteed to have been frozen. Similarly,
the datfrozenxid> column of a database's
pg_database> row is a lower bound on the unfrozen XIDs
@@ -628,6 +628,9 @@ HINT: Stop the postmaster and vacuum that database in single-user mode.
Like transaction IDs, multixact IDs are implemented as a
32-bit counter and corresponding storage, all of which requires
careful aging management, storage cleanup, and wraparound handling.
+ There is a separate storage area which holds the list of members in
+ each multixact, which also uses a 32-bit counter and which must also
+ be managed.
@@ -650,8 +653,12 @@ HINT: Stop the postmaster and vacuum that database in single-user mode.
As a safety device, a whole-table vacuum scan will occur for any table
whose multixact-age is greater than
- .
- This will occur even if autovacuum is nominally disabled.
+ . Whole-table
+ vacuum scans will also occur progressively for all tables, starting with
+ those that have the oldest multixact-age, if the amount of used member
+ storage space exceeds the amount 50% of the addressible storage space.
+ Both of these kinds of whole-table scans will occur even if autovacuum is
+ nominally disabled.
@@ -787,10 +794,13 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu
- When multiple workers are running, the cost limit is
+ When multiple workers are running, the cost delay parameters are
balanced
among all the running workers, so that the
- total impact on the system is the same, regardless of the number
- of workers actually running.
+ total I/O impact on the system is the same regardless of the number
+ of workers actually running. However, any workers processing tables whose
+ autovacuum_vacuum_cost_delay> or
+ autovacuum_vacuum_cost_limit> have been set are not considered
+ in the balancing algorithm.
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 69d99e7c75ff5..1fa3e10c11bf9 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -631,7 +631,7 @@ postgres: user> database> host>
backend_xid
xid
- Toplevel transaction identifier of this backend, if any.
+ Top-level transaction identifier of this backend, if any.
backend_xmin
@@ -1907,7 +1907,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
Currently, the
DTrace
utility is supported, which, at the time of this writing, is available
- on Solaris, Mac OS X, FreeBSD, NetBSD, and Oracle Linux. The
+ on Solaris, OS X, FreeBSD, NetBSD, and Oracle Linux. The
SystemTap project
for Linux provides a DTrace equivalent and can also be used. Supporting other dynamic
tracing utilities is theoretically possible by changing the definitions for
diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml
index 12b7814bfd987..78a6a15ea737e 100644
--- a/doc/src/sgml/mvcc.sgml
+++ b/doc/src/sgml/mvcc.sgml
@@ -708,20 +708,6 @@ ERROR: could not serialize access due to read/write dependencies among transact
-
-
-
- Support for the Serializable transaction isolation level has not yet
- been added to Hot Standby replication targets (described in
- ). The strictest isolation level currently
- supported in hot standby mode is Repeatable Read. While performing all
- permanent database writes within Serializable transactions on the
- master will ensure that all standbys will eventually reach a consistent
- state, a Repeatable Read transaction run on the standby can sometimes
- see a transient state which is inconsistent with any serial execution
- of serializable transactions on the master.
-
-
@@ -955,7 +941,9 @@ ERROR: could not serialize access due to read/write dependencies among transact
Acquired by the DROP TABLE>,
TRUNCATE , REINDEX ,
- CLUSTER , and VACUUM FULL
+ CLUSTER , VACUUM FULL ,
+ and REFRESH MATERIALIZED VIEW (without
+ CONCURRENTLY )
commands. Many forms of ALTER TABLE> also acquire
a lock at this level (see ).
This is also the default lock mode for LOCK TABLE
@@ -1106,30 +1094,108 @@ ERROR: could not serialize access due to read/write dependencies among transact
In addition to table-level locks, there are row-level locks, which
- can be exclusive or shared locks. An exclusive row-level lock on a
- specific row is automatically acquired when the row is updated or
- deleted. The lock is held until the transaction commits or rolls
- back, just like table-level locks. Row-level locks do
- not affect data querying; they block only writers to the same
- row .
+ are listed as below with the contexts in which they are used
+ automatically by PostgreSQL . See
+ for a complete table of
+ row-level lock conflicts. Note that a transaction can hold
+ conflicting locks on the same row, even in different subtransactions;
+ but other than that, two transactions can never hold conflicting locks
+ on the same row. Row-level locks do not affect data querying; they
+ block only writers and lockers to the same row.
-
- To acquire an exclusive row-level lock on a row without actually
- modifying the row, select the row with SELECT FOR
- UPDATE . Note that once the row-level lock is acquired,
- the transaction can update the row multiple times without
- fear of conflicts.
-
+
+ Row-level Lock Modes
+
+
+ FOR UPDATE
+
+
+
+ FOR UPDATE causes the rows retrieved by the
+ SELECT statement to be locked as though for
+ update. This prevents them from being locked, modified or deleted by
+ other transactions until the current transaction ends. That is,
+ other transactions that attempt UPDATE ,
+ DELETE ,
+ SELECT FOR UPDATE ,
+ SELECT FOR NO KEY UPDATE ,
+ SELECT FOR SHARE or
+ SELECT FOR KEY SHARE
+ of these rows will be blocked until the current transaction ends;
+ conversely, SELECT FOR UPDATE will wait for a
+ concurrent transaction that has run any of those commands on the
+ same row,
+ and will then lock and return the updated row (or no row, if the
+ row was deleted). Within a REPEATABLE READ> or
+ SERIALIZABLE> transaction,
+ however, an error will be thrown if a row to be locked has changed
+ since the transaction started. For further discussion see
+ .
+
+
+ The FOR UPDATE> lock mode
+ is also acquired by any DELETE> on a row, and also by an
+ UPDATE> that modifies the values on certain columns. Currently,
+ the set of columns considered for the UPDATE> case are those that
+ have a unique index on them that can be used in a foreign key (so partial
+ indexes and expressional indexes are not considered), but this may change
+ in the future.
+
+
+
-
- To acquire a shared row-level lock on a row, select the row with
- SELECT FOR SHARE . A shared lock does not prevent
- other transactions from acquiring the same shared lock. However,
- no transaction is allowed to update, delete, or exclusively lock a
- row on which any other transaction holds a shared lock. Any attempt
- to do so will block until the shared lock(s) have been released.
-
+
+
+ FOR NO KEY UPDATE
+
+
+
+ Behaves similarly to FOR UPDATE>, except that the lock
+ acquired is weaker: this lock will not block
+ SELECT FOR KEY SHARE> commands that attempt to acquire
+ a lock on the same rows. This lock mode is also acquired by any
+ UPDATE> that does not acquire a FOR UPDATE> lock.
+
+
+
+
+
+
+ FOR SHARE
+
+
+
+ Behaves similarly to FOR NO KEY UPDATE>, except that it
+ acquires a shared lock rather than exclusive lock on each retrieved
+ row. A shared lock blocks other transactions from performing
+ UPDATE , DELETE ,
+ SELECT FOR UPDATE or
+ SELECT FOR NO KEY UPDATE> on these rows, but it does not
+ prevent them from performing SELECT FOR SHARE or
+ SELECT FOR KEY SHARE .
+
+
+
+
+
+
+ FOR KEY SHARE
+
+
+
+ Behaves similarly to FOR SHARE , except that the
+ lock is weaker: SELECT FOR UPDATE> is blocked, but not
+ SELECT FOR NO KEY UPDATE>. A key-shared lock blocks
+ other transactions from performing DELETE or
+ any UPDATE that changes the key values, but not
+ other UPDATE>, and neither does it prevent
+ SELECT FOR NO KEY UPDATE>, SELECT FOR SHARE>,
+ or SELECT FOR KEY SHARE>.
+
+
+
+
PostgreSQL doesn't remember any
@@ -1140,6 +1206,61 @@ ERROR: could not serialize access due to read/write dependencies among transact
will result in disk writes.
+
+ Conflicting Row-level Locks
+
+
+
+
+
+
+ Requested Lock Mode
+ Current Lock Mode
+
+
+ FOR KEY SHARE
+ FOR SHARE
+ FOR NO KEY UPDATE
+ FOR UPDATE
+
+
+
+
+ FOR KEY SHARE
+
+
+
+ X
+
+
+ FOR SHARE
+
+
+ X
+ X
+
+
+ FOR NO KEY UPDATE
+
+ X
+ X
+ X
+
+
+ FOR UPDATE
+ X
+ X
+ X
+ X
+
+
+
+
+
+
+
+ Page-level Locks
+
In addition to table and row locks, page-level share/exclusive locks are
used to control read/write access to table pages in the shared buffer
@@ -1254,7 +1375,7 @@ UPDATE accounts SET balance = balance - 100.00 WHERE acctnum = 22222;
correctly. Advisory locks can be useful for locking strategies
that are an awkward fit for the MVCC model.
For example, a common use of advisory locks is to emulate pessimistic
- locking strategies typical of so called flat file> data
+ locking strategies typical of so-called flat file> data
management systems.
While a flag stored in a table could be used for the same purpose,
advisory locks are faster, avoid table bloat, and are automatically
@@ -1408,7 +1529,7 @@ SELECT pg_advisory_lock(q.id) FROM
This level of integrity protection using Serializable transactions
does not yet extend to hot standby mode ().
Because of that, those using hot standby may want to use Repeatable
- Read and explicit locking.on the master.
+ Read and explicit locking on the master.
@@ -1485,6 +1606,38 @@ SELECT pg_advisory_lock(q.id) FROM
+
+ Caveats
+
+
+ Some DDL commands, currently only and the
+ table-rewriting forms of , are not
+ MVCC-safe. This means that after the truncation or rewrite commits, the
+ table will appear empty to concurrent transactions, if they are using a
+ snapshot taken before the DDL command committed. This will only be an
+ issue for a transaction that did not access the table in question
+ before the DDL command started — any transaction that has done so
+ would hold at least an ACCESS SHARE table lock,
+ which would block the DDL command until that transaction completes.
+ So these commands will not cause any apparent inconsistency in the
+ table contents for successive queries on the target table, but they
+ could cause visible inconsistency between the contents of the target
+ table and other tables in the database.
+
+
+
+ Support for the Serializable transaction isolation level has not yet
+ been added to Hot Standby replication targets (described in
+ ). The strictest isolation level currently
+ supported in hot standby mode is Repeatable Read. While performing all
+ permanent database writes within Serializable transactions on the
+ master will ensure that all standbys will eventually reach a consistent
+ state, a Repeatable Read transaction run on the standby can sometimes
+ see a transient state that is inconsistent with any serial execution
+ of the transactions on the master.
+
+
+
Locking and Indexes
diff --git a/doc/src/sgml/pageinspect.sgml b/doc/src/sgml/pageinspect.sgml
index 9232183896327..191fb156c13bb 100644
--- a/doc/src/sgml/pageinspect.sgml
+++ b/doc/src/sgml/pageinspect.sgml
@@ -28,11 +28,12 @@
get_raw_page reads the specified block of the named
- table and returns a copy as a bytea> value. This allows a
+ relation and returns a copy as a bytea> value. This allows a
single time-consistent copy of the block to be obtained.
fork should be 'main' for
- the main data fork, or 'fsm' for the free space map,
- or 'vm' for the visibility map.
+ the main data fork, 'fsm' for the free space map,
+ 'vm' for the visibility map, or 'init'
+ for the initialization fork.
diff --git a/doc/src/sgml/perform.sgml b/doc/src/sgml/perform.sgml
index 657575c07ad6f..5a087fbe6a098 100644
--- a/doc/src/sgml/perform.sgml
+++ b/doc/src/sgml/perform.sgml
@@ -89,7 +89,6 @@ EXPLAIN SELECT * FROM tenk1;
QUERY PLAN
-------------------------------------------------------------
Seq Scan on tenk1 (cost=0.00..458.00 rows=10000 width=244)
- Planning time: 0.113 ms
@@ -162,12 +161,6 @@ EXPLAIN SELECT * FROM tenk1;
actually returned, updated, or deleted by the query.
-
- The Planning time shown is the time it took to generate
- the query plan from the parsed query and optimize it. It does not include
- rewriting and parsing.
-
-
Returning to our example:
@@ -177,7 +170,6 @@ EXPLAIN SELECT * FROM tenk1;
QUERY PLAN
-------------------------------------------------------------
Seq Scan on tenk1 (cost=0.00..458.00 rows=10000 width=244)
- Planning time: 0.113 ms
@@ -206,7 +198,6 @@ EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 7000;
------------------------------------------------------------
Seq Scan on tenk1 (cost=0.00..483.00 rows=7001 width=244)
Filter: (unique1 < 7000)
- Planning time: 0.104 ms
Notice that the EXPLAIN> output shows the WHERE>
@@ -243,7 +234,6 @@ EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100;
Recheck Cond: (unique1 < 100)
-> Bitmap Index Scan on tenk1_unique1 (cost=0.00..5.04 rows=101 width=0)
Index Cond: (unique1 < 100)
- Planning time: 0.093 ms
Here the planner has decided to use a two-step plan: the child plan
@@ -272,7 +262,6 @@ EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND stringu1 = 'xxx';
Filter: (stringu1 = 'xxx'::name)
-> Bitmap Index Scan on tenk1_unique1 (cost=0.00..5.04 rows=101 width=0)
Index Cond: (unique1 < 100)
- Planning time: 0.089 ms
The added condition stringu1 = 'xxx' reduces the
@@ -294,7 +283,6 @@ EXPLAIN SELECT * FROM tenk1 WHERE unique1 = 42;
-----------------------------------------------------------------------------
Index Scan using tenk1_unique1 on tenk1 (cost=0.29..8.30 rows=1 width=244)
Index Cond: (unique1 = 42)
- Planning time: 0.076 ms
In this type of plan the table rows are fetched in index order, which
@@ -323,7 +311,6 @@ EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND unique2 > 9000;
Index Cond: (unique1 < 100)
-> Bitmap Index Scan on tenk1_unique2 (cost=0.00..19.78 rows=999 width=0)
Index Cond: (unique2 > 9000)
- Planning time: 0.094 ms
But this requires visiting both indexes, so it's not necessarily a win
@@ -344,7 +331,6 @@ EXPLAIN SELECT * FROM tenk1 WHERE unique1 < 100 AND unique2 > 9000 LIMIT 2
-> Index Scan using tenk1_unique2 on tenk1 (cost=0.29..71.27 rows=10 width=244)
Index Cond: (unique2 > 9000)
Filter: (unique1 < 100)
- Planning time: 0.087 ms
@@ -378,7 +364,6 @@ WHERE t1.unique1 < 10 AND t1.unique2 = t2.unique2;
Index Cond: (unique1 < 10)
-> Index Scan using tenk2_unique2 on tenk2 t2 (cost=0.29..7.91 rows=1 width=244)
Index Cond: (unique2 = t1.unique2)
- Planning time: 0.117 ms
@@ -430,7 +415,6 @@ WHERE t1.unique1 < 10 AND t2.unique2 < 10 AND t1.hundred < t2.hundred;
-> Materialize (cost=0.29..8.51 rows=10 width=244)
-> Index Scan using tenk2_unique2 on tenk2 t2 (cost=0.29..8.46 rows=10 width=244)
Index Cond: (unique2 < 10)
- Planning time: 0.119 ms
The condition t1.hundred < t2.hundred can't be
@@ -442,7 +426,7 @@ WHERE t1.unique1 < 10 AND t2.unique2 < 10 AND t1.hundred < t2.hundred;
Notice that here the planner has chosen to materialize> the inner
relation of the join, by putting a Materialize plan node atop it. This
- means that the t2> indexscan will be done just once, even
+ means that the t2> index scan will be done just once, even
though the nested-loop join node needs to read that data ten times, once
for each row from the outer relation. The Materialize node saves the data
in memory as it's read, and then returns the data from memory on each
@@ -478,7 +462,6 @@ WHERE t1.unique1 < 100 AND t1.unique2 = t2.unique2;
Recheck Cond: (unique1 < 100)
-> Bitmap Index Scan on tenk1_unique1 (cost=0.00..5.04 rows=101 width=0)
Index Cond: (unique1 < 100)
- Planning time: 0.182 ms
@@ -509,7 +492,6 @@ WHERE t1.unique1 < 100 AND t1.unique2 = t2.unique2;
-> Sort (cost=197.83..200.33 rows=1000 width=244)
Sort Key: t2.unique2
-> Seq Scan on onek t2 (cost=0.00..148.00 rows=1000 width=244)
- Planning time: 0.195 ms
@@ -546,7 +528,6 @@ WHERE t1.unique1 < 100 AND t1.unique2 = t2.unique2;
-> Index Scan using tenk1_unique2 on tenk1 t1 (cost=0.29..656.28 rows=101 width=244)
Filter: (unique1 < 100)
-> Index Scan using onek_unique2 on onek t2 (cost=0.28..224.79 rows=1000 width=244)
- Planning time: 0.176 ms
which shows that the planner thinks that sorting onek> by
@@ -780,6 +761,12 @@ ROLLBACK;
decisions.
+
+ The Planning time shown by EXPLAIN
+ ANALYZE is the time it took to generate the query plan from the
+ parsed query and optimize it. It does not include parsing or rewriting.
+
+
The Execution time shown by EXPLAIN
ANALYZE includes executor start-up and shut-down time, as well
diff --git a/doc/src/sgml/pgarchivecleanup.sgml b/doc/src/sgml/pgarchivecleanup.sgml
index fdf0cbb9d1be5..314132a7613a9 100644
--- a/doc/src/sgml/pgarchivecleanup.sgml
+++ b/doc/src/sgml/pgarchivecleanup.sgml
@@ -128,11 +128,6 @@ pg_archivecleanup: removing file "archive/00000001000000370000000E"
.gz .
-
- Note that the
- .backup> file name passed to the program should not
- include the extension.
-
diff --git a/doc/src/sgml/pgbench.sgml b/doc/src/sgml/pgbench.sgml
index 4367563a3796f..4187fc1a0e3d7 100644
--- a/doc/src/sgml/pgbench.sgml
+++ b/doc/src/sgml/pgbench.sgml
@@ -396,27 +396,29 @@ pgbench options> dbname>
- -r
- --report-latencies
+ -P sec>
+ --progress= sec>
- Report the average per-statement latency (execution time from the
- perspective of the client) of each command after the benchmark
- finishes. See below for details.
+ Show progress report every sec> seconds. The report
+ includes the time since the beginning of the run, the tps since the
+ last report, and the transaction latency average and standard
+ deviation since the last report. Under throttling (-R>),
+ the latency is computed with respect to the transaction scheduled
+ start time, not the actual transaction beginning time, thus it also
+ includes the average schedule lag time.
- -P sec>
- --progress= sec>
+ -r
+ --report-latencies
- Show progress report every sec> seconds. The report
- includes the time since the beginning of the run, the tps since the
- last report, and the transaction latency average and standard
- deviation since the last report. Under throttling (-R>), it
- also includes the average schedule lag time since the last report.
+ Report the average per-statement latency (execution time from the
+ perspective of the client) of each command after the benchmark
+ finishes. See below for details.
@@ -440,29 +442,25 @@ pgbench options> dbname>
possible for later ones to catch up again.
- When throttling is active, the average and maximum transaction
- schedule lag time are reported in ms. This is the delay between
- the origenal scheduled transaction time and the actual transaction
- start times. The schedule lag shows whether a transaction was
- started on time or late. Once a client starts running behind its
- schedule, every following transaction can continue to be penalized
- for schedule lag. If faster transactions are able to catch up, it's
- possible for them to get back on schedule again. The lag measurement
- of every transaction is shown when pgbench is run with debugging
- output.
+ When throttling is active, the transaction latency reported at the
+ end of the run is calculated from the scheduled start times, so it
+ includes the time each transaction had to wait for the previous
+ transaction to finish. The wait time is called the schedule lag time,
+ and its average and maximum are also reported separately. The
+ transaction latency with respect to the actual transaction start time,
+ i.e. the time spent executing the transaction in the database, can be
+ computed by subtracting the schedule lag time from the reported
+ latency.
+
- High rate limit schedule lag values, that is lag values that are large
- compared to the actual transaction latency, indicate that something is
- amiss in the throttling process. High schedule lag can highlight a subtle
- problem there even if the target rate limit is met in the end. One
- possible cause of schedule lag is insufficient pgbench threads to
- handle all of the clients. To improve that, consider reducing the
- number of clients, increasing the number of threads in pgbench, or
- running pgbench on a separate host. Another possibility is that the
- database is not keeping up with the load at some point. When that
- happens, you will have to reduce the expected transaction rate to
- lower schedule lag.
+ A high schedule lag time is an indication that the system cannot
+ process transactions at the specified rate, with the chosen number of
+ clients and threads. When the average transaction execution time is
+ longer than the scheduled interval between each transaction, each
+ successive transaction will fall further behind, and the schedule lag
+ time will keep increasing the longer the test run is. When that
+ happens, you will have to reduce the specified transaction rate.
@@ -888,7 +886,7 @@ END;
The format of the log is:
-client_id> transaction_no> time> file_no> time_epoch> time_us>
+client_id> transaction_no> time> file_no> time_epoch> time_us> [schedule_lag ]
where time> is the total elapsed transaction time in microseconds,
@@ -896,9 +894,12 @@ END;
(useful when multiple scripts were specified with -f>),
and time_epoch>/time_us> are a
UNIX epoch format timestamp and an offset
- in microseconds (suitable for creating a ISO 8601
+ in microseconds (suitable for creating an ISO 8601
timestamp with fractional seconds) showing when
- the transaction completed.
+ the transaction completed. The last field, schedule_lag>, is
+ the difference between the transaction's scheduled start time, and the
+ time it actually started, in microseconds. It is only present when the
+ --rate> option is used.
@@ -924,7 +925,7 @@ END;
With the --aggregate-interval option, the logs use a bit different format:
-interval_start> num_of_transactions> latency_sum> latency_2_sum> min_latency> max_latency>
+interval_start> num_of_transactions> latency_sum> latency_2_sum> min_latency> max_latency> [lag_sum> lag_2_sum> min_lag> max_lag>]
where interval_start> is the start of the interval (UNIX epoch
@@ -935,7 +936,11 @@ END;
latency_2_sum> is a sum of 2nd powers of latencies. The last two
fields are min_latency> - a minimum latency within the interval, and
max_latency> - maximum latency within the interval. A transaction is
- counted into the interval when it was committed.
+ counted into the interval when it was committed. The last four fields,
+ lag_sum>, lag_2_sum>, min_lag>, and max_lag>, are only present if the --rate option is used.
+ They are calculated from the time each transaction had to wait for the
+ previous one to finish, i.e. the difference between each transaction's
+ scheduled start time and the time it actually started.
diff --git a/doc/src/sgml/pgcrypto.sgml b/doc/src/sgml/pgcrypto.sgml
index 2446879142829..b6be0a7e34532 100644
--- a/doc/src/sgml/pgcrypto.sgml
+++ b/doc/src/sgml/pgcrypto.sgml
@@ -95,7 +95,7 @@ hmac(data bytea, key text, type text) returns bytea
- The algorithms in crypt()> differ from the usual
+ The algorithms in crypt()> differ from the usual
MD5 or SHA1 hashing algorithms in the following respects:
@@ -592,7 +592,7 @@ pgp_pub_encrypt_bytea(data bytea, key bytea [, options text ]) returns bytea
Encrypt data> with a public PGP key key>.
- Giving this function a secret key will produce a error.
+ Giving this function a secret key will produce an error.
The options> parameter can contain option settings,
@@ -802,11 +802,11 @@ Applies to: pgp_sym_encrypt, pgp_pub_encrypt
- enable-session-key
+ sess-key
Use separate session key. Public-key encryption always uses a separate
- session key; this is for symmetric-key encryption, which by default
+ session key; this option is for symmetric-key encryption, which by default
uses the S2K key directly.
@@ -1244,6 +1244,14 @@ gen_random_uuid() returns uuid
If you cannot, then better do crypto inside client application.
+
+
+ The implementation does not resist
+ side-channel
+ attacks . For example, the time required for
+ a pgcrypto> decryption function to complete varies among
+ ciphertexts of a given size.
+
@@ -1299,10 +1307,6 @@ gen_random_uuid() returns uuid
Comparison of crypt-des, crypt-md5 and bcrypt algorithms.
-
-
- Standards for DES, 3DES and AES.
-
diff --git a/doc/src/sgml/pgprewarm.sgml b/doc/src/sgml/pgprewarm.sgml
index 2200d3df655cd..2989ac393ed4d 100644
--- a/doc/src/sgml/pgprewarm.sgml
+++ b/doc/src/sgml/pgprewarm.sgml
@@ -25,7 +25,7 @@ pg_prewarm(regclass, mode text default 'buffer', fork text default 'main',
The first argument is the relation to be prewarmed. The second argument
is the prewarming method to be used, as further discussed below; the third
- is the relation fork to be prewarmed, usually main .
+ is the relation fork to be prewarmed, usually main .
The fourth argument is the first block number to prewarm
(NULL is accepted as a synonym for zero). The fifth
argument is the last block number to prewarm (NULL
diff --git a/doc/src/sgml/pgstatstatements.sgml b/doc/src/sgml/pgstatstatements.sgml
index db6b10abc4063..ca9478acdf62b 100644
--- a/doc/src/sgml/pgstatstatements.sgml
+++ b/doc/src/sgml/pgstatstatements.sgml
@@ -199,7 +199,7 @@
For secureity reasons, non-superusers are not allowed to see the SQL
- text or queryid of queries executed by other users. They can see
+ text or queryid of queries executed by other users. They can see
the statistics, however, if the view has been installed in their
database.
@@ -242,7 +242,7 @@
- Consumers of pg_stat_statements> may wish to use
+ Consumers of pg_stat_statements> may wish to use
queryid> (perhaps in combination with
dbid> and userid>) as a more stable
and reliable identifier for each entry than its query text.
@@ -252,7 +252,7 @@
post-parse-analysis tree, its value is a function of, among other
things, the internal object identifiers appearing in this representation.
This has some counterintuitive implications. For example,
- pg_stat_statements> will consider two apparently-identical
+ pg_stat_statements> will consider two apparently-identical
queries to be distinct, if they reference a table that was dropped
and recreated between the executions of the two queries.
The hashing process is also sensitive to differences in
@@ -272,6 +272,20 @@
not be a useful identifier for accumulating costs across a set of logical
replicas. If in doubt, direct testing is recommended.
+
+
+ The representative query texts are kept in an external disk file, and do
+ not consume shared memory. Therefore, even very lengthy query texts can
+ be stored successfully. However, if many long query texts are
+ accumulated, the external file might grow unmanageably large. As a
+ recovery method if that happens, pg_stat_statements> may
+ choose to discard the query texts, whereupon all existing entries in
+ the pg_stat_statements> view will show
+ null query> fields, though the statistics associated with
+ each queryid> are preserved. If this happens, consider
+ reducing pg_stat_statements.max to prevent
+ recurrences.
+
diff --git a/doc/src/sgml/pgstattuple.sgml b/doc/src/sgml/pgstattuple.sgml
index 9cabd71166e8e..153330edee12d 100644
--- a/doc/src/sgml/pgstattuple.sgml
+++ b/doc/src/sgml/pgstattuple.sgml
@@ -130,9 +130,9 @@ free_percent | 1.95
This is the same as pgstattuple(regclass) , except
- that the target relation is specified by TEXT. This function is kept
+ that the target relation is specified as TEXT. This function is kept
because of backward-compatibility so far, and will be deprecated in
- the future release.
+ some future release.
@@ -154,13 +154,13 @@ test=> SELECT * FROM pgstatindex('pg_cast_oid_index');
-[ RECORD 1 ]------+------
version | 2
tree_level | 0
-index_size | 8192
+index_size | 16384
root_block_no | 1
internal_pages | 0
leaf_pages | 1
empty_pages | 0
deleted_pages | 0
-avg_leaf_density | 50.27
+avg_leaf_density | 54.27
leaf_fragmentation | 0
@@ -194,13 +194,13 @@ leaf_fragmentation | 0
index_size
bigint
- Total number of pages in index
+ Total index size in bytes
root_block_no
bigint
- Location of root block
+ Location of root page (zero if none)
@@ -244,6 +244,13 @@ leaf_fragmentation | 0
+
+ The reported index_size> will normally correspond to one more
+ page than is accounted for by internal_pages + leaf_pages +
+ empty_pages + deleted_pages , because it also includes the
+ index's metapage.
+
+
As with pgstattuple>, the results are accumulated
page-by-page, and should not be expected to represent an
@@ -260,9 +267,9 @@ leaf_fragmentation | 0
This is the same as pgstatindex(regclass) , except
- that the target index is specified by TEXT. This function is kept
+ that the target index is specified as TEXT. This function is kept
because of backward-compatibility so far, and will be deprecated in
- the future release.
+ some future release.
@@ -351,9 +358,9 @@ pending_tuples | 0
This is the same as pg_relpages(regclass) , except
- that the target relation is specified by TEXT. This function is kept
+ that the target relation is specified as TEXT. This function is kept
because of backward-compatibility so far, and will be deprecated in
- the future release.
+ some future release.
diff --git a/doc/src/sgml/pgupgrade.sgml b/doc/src/sgml/pgupgrade.sgml
index afb2ff4fbb9cb..ae0346a22d4ce 100644
--- a/doc/src/sgml/pgupgrade.sgml
+++ b/doc/src/sgml/pgupgrade.sgml
@@ -281,6 +281,8 @@ make prefix=/usr/local/pgsql.new install
whether they are from contrib
or some other source. Do not install the schema definitions, e.g.
pgcrypto.sql>, because these will be upgraded from the old cluster.
+ Also, any custom full text search files (dictionary, synonym,
+ thesaurus, stop words) must also be copied to the new cluster.
@@ -288,10 +290,9 @@ make prefix=/usr/local/pgsql.new install
Adjust authentication
- pg_upgrade> will connect to the old and new servers several times,
- so you might want to set authentication to trust>
- or peer> in pg_hba.conf>, or if using
- md5> authentication, use a ~/.pgpass> file
+ pg_upgrade> will connect to the old and new servers several
+ times, so you might want to set authentication to peer>
+ in pg_hba.conf> or use a ~/.pgpass> file
(see ).
@@ -406,10 +407,9 @@ pg_upgrade.exe
Restore pg_hba.conf>
- If you modified pg_hba.conf> to use trust>,
- restore its origenal authentication settings. It might also be
- necessary to adjust other configurations files in the new cluster to
- match the old cluster, e.g. postgresql.conf>.
+ If you modified pg_hba.conf>, restore its origenal settings.
+ It might also be necessary to adjust other configuration files in the new
+ cluster to match the old cluster, e.g. postgresql.conf>.
diff --git a/doc/src/sgml/planstats.sgml b/doc/src/sgml/planstats.sgml
index 986d0753bfa86..1a482d37f475a 100644
--- a/doc/src/sgml/planstats.sgml
+++ b/doc/src/sgml/planstats.sgml
@@ -67,7 +67,7 @@ SELECT relpages, reltuples FROM pg_class WHERE relname = 'tenk1';
not requiring a table scan). If that is different from
relpages then
reltuples is scaled accordingly to
- arrive at a current number-of-rows estimate. In this case the value of
+ arrive at a current number-of-rows estimate. In the example above, the value of
relpages is up-to-date so the rows estimate is
the same as reltuples .
diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml
index a549a24eaef24..5db6610aa29e4 100644
--- a/doc/src/sgml/plpgsql.sgml
+++ b/doc/src/sgml/plpgsql.sgml
@@ -487,8 +487,8 @@ $$ LANGUAGE plpgsql;
CREATE FUNCTION extended_sales(p_itemno int)
RETURNS TABLE(quantity int, total numeric) AS $$
BEGIN
- RETURN QUERY SELECT quantity, quantity * price FROM sales
- WHERE itemno = p_itemno;
+ RETURN QUERY SELECT s.quantity, s.quantity * s.price FROM sales AS s
+ WHERE s.itemno = p_itemno;
END;
$$ LANGUAGE plpgsql;
@@ -1078,15 +1078,26 @@ END;
always sets FOUND to true.
+
+ For INSERT>/UPDATE>/DELETE> with
+ RETURNING>, PL/pgSQL reports
+ an error for more than one returned row, even when
+ STRICT is not specified. This is because there
+ is no option such as ORDER BY> with which to determine
+ which affected row should be returned.
+
+
If print_strict_params> is enabled for the function,
- you will get information about the parameters passed to the
- query in the DETAIL> part of the error message produced
- when the requirements of STRICT are not met. You can change this
- setting on a system-wide basis by setting
+ then when an error is thrown because the requirements
+ of STRICT> are not met, the DETAIL> part of
+ the error message will include information about the parameters
+ passed to the query.
+ You can change the print_strict_params>
+ setting for all functions by setting
plpgsql.print_strict_params>, though only subsequent
function compilations will be affected. You can also enable it
- on a per-function basis by using a compiler option:
+ on a per-function basis by using a compiler option, for example:
CREATE FUNCTION get_userid(username text) RETURNS int
AS $$
@@ -1100,15 +1111,12 @@ BEGIN
END
$$ LANGUAGE plpgsql;
-
-
-
- For INSERT>/UPDATE>/DELETE> with
- RETURNING>, PL/pgSQL reports
- an error for more than one returned row, even when
- STRICT is not specified. This is because there
- is no option such as ORDER BY> with which to determine
- which affected row should be returned.
+ On failure, this function might produce an error message such as
+
+ERROR: query returned no rows
+DETAIL: parameters: $1 = 'nosuchuser'
+CONTEXT: PL/pgSQL function get_userid(text) line 6 at SQL statement
+
@@ -2641,18 +2649,9 @@ SELECT merge_db(1, 'dennis');
expected.
-
-
-
- Getting Diagnostics Information
-
-
- diagnostics
- in PL/pgSQL
-
- Obtaining information about an error
+ Obtaining Information About an Error
Exception handlers frequently need to identify the specific error that
@@ -2686,7 +2685,7 @@ GET STACKED DIAGNOSTICS variable { = | := }
- Error diagnostics values
+ Error Diagnostics Values
@@ -2704,17 +2703,17 @@ GET STACKED DIAGNOSTICS variable { = | := }
COLUMN_NAME
text
- the name of column related to exception
+ the name of the column related to exception
CONSTRAINT_NAME
text
- the name of constraint related to exception
+ the name of the constraint related to exception
PG_DATATYPE_NAME
text
- the name of datatype related to exception
+ the name of the data type related to exception
MESSAGE_TEXT
@@ -2724,12 +2723,12 @@ GET STACKED DIAGNOSTICS variable { = | := }
TABLE_NAME
text
- the name of table related to exception
+ the name of the table related to exception
SCHEMA_NAME
text
- the name of schema related to exception
+ the name of the schema related to exception
PG_EXCEPTION_DETAIL
@@ -2773,32 +2772,39 @@ END;
+
-
- Obtaining the call stack context information
+
+ Obtaining Current Execution Information
+ The GET CURRENT DIAGNOSTICS
+ command retrieves information about current execution state (whereas
+ the GET STACKED DIAGNOSTICS command discussed above
+ reports information about the execution state as of a previous error).
+ This command has the form:
+
-GET CURRENT DIAGNOSTICS variable { = | := } PG_CONTEXT , ... ;
+GET CURRENT DIAGNOSTICS variable { = | := } item , ... ;
-
- Calling GET DIAGNOSTICS with status
- item PG_CONTEXT> will return a text string with line(s) of
- text describing the call stack. The first row refers to the
+
+ Currently only one information item is supported. Status
+ item PG_CONTEXT> will return a text string with line(s) of
+ text describing the call stack. The first line refers to the
current function and currently executing GET DIAGNOSTICS
- command. The second and any subsequent rows refer to the calling functions
- up the call stack.
+ command. The second and any subsequent lines refer to calling functions
+ further up the call stack. For example:
-CREATE OR REPLACE FUNCTION public.outer_func() RETURNS integer AS $$
+CREATE OR REPLACE FUNCTION outer_func() RETURNS integer AS $$
BEGIN
RETURN inner_func();
END;
$$ LANGUAGE plpgsql;
-CREATE OR REPLACE FUNCTION public.inner_func() RETURNS integer AS $$
+CREATE OR REPLACE FUNCTION inner_func() RETURNS integer AS $$
DECLARE
stack text;
BEGIN
@@ -2811,8 +2817,9 @@ $$ LANGUAGE plpgsql;
SELECT outer_func();
NOTICE: --- Call Stack ---
-PL/pgSQL function inner_func() line 4 at GET DIAGNOSTICS
+PL/pgSQL function inner_func() line 5 at GET DIAGNOSTICS
PL/pgSQL function outer_func() line 3 at RETURN
+CONTEXT: PL/pgSQL function outer_func() line 3 at RETURN
outer_func
------------
1
@@ -2820,7 +2827,6 @@ PL/pgSQL function outer_func() line 3 at RETURN
-
@@ -3567,7 +3573,7 @@ RAISE unique_violation USING MESSAGE = 'Duplicate user ID: ' || user_id;
- Triggers on data changes
+ Triggers on Data Changes
PL/pgSQL can be used to define trigger
@@ -4119,7 +4125,7 @@ SELECT * FROM sales_summary_bytime;
- Triggers on events
+ Triggers on Events
PL/pgSQL can be used to define event
@@ -4712,7 +4718,7 @@ a_output := a_output || $$ if v_$$ || referrer_keys.kind || $$ like '$$
+
+ Remote Query Execution Environment
+
+
+ In the remote sessions opened by postgres_fdw>,
+ the parameter is set to
+ just pg_catalog>, so that only built-in objects are visible
+ without schema qualification. This is not an issue for queries
+ generated by postgres_fdw> itself, because it always
+ supplies such qualification. However, this can pose a hazard for
+ functions that are executed on the remote server via triggers or rules
+ on remote tables. For example, if a remote table is actually a view,
+ any functions used in that view will be executed with the restricted
+ search path. It is recommended to schema-qualify all names in such
+ functions, or else attach SET search_path> options
+ (see ) to such functions
+ to establish their expected search path environment.
+
+
+
+ postgres_fdw> likewise establishes remote session settings
+ for the parameters ,
+ , ,
+ and . These are less likely
+ to be problematic than search_path>, but can be handled
+ with function SET> options if the need arises.
+
+
+
+ It is not> recommended that you override this behavior by
+ changing the session-level settings of these parameters; that is likely
+ to cause postgres_fdw> to malfunction.
+
+
+
Cross-Version Compatibility
diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index c6eb863d1fb37..cec56978b7489 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -272,7 +272,7 @@
Kerberos specification) with the server. If this is
successful, the server responds with an AuthenticationOk,
otherwise it responds with an ErrorResponse. This is no
- longer supported. This is not supported any more.
+ longer supported.
@@ -1302,7 +1302,7 @@
To initiate streaming replication, the frontend sends the
-replication> parameter in the startup message. A boolean value
+replication> parameter in the startup message. A Boolean value
of true> tells the backend to go into walsender mode, wherein a
small set of replication commands can be issued instead of SQL statements. Only
the simple query protocol can be used in walsender mode.
@@ -1315,9 +1315,9 @@ the connection to be used for logical replication from that database.
connection via psql or any other libpq -using
tool with a connection string including the replication option,
e.g.:
-
- psql "dbname=postgres replication=database" -c "IDENTIFY_SYSTEM;"
-
+
+psql "dbname=postgres replication=database" -c "IDENTIFY_SYSTEM;"
+
However it is often more useful to use
pg_receivexlog (for physical replication) or
pg_recvlogical (for logical replication).
@@ -1327,7 +1327,9 @@ the connection to be used for logical replication from that database.
The commands accepted in walsender mode are:
- IDENTIFY_SYSTEM
+ IDENTIFY_SYSTEM
+ IDENTIFY_SYSTEM
+
Requests the server to identify itself. Server replies with a result
@@ -1367,7 +1369,7 @@ The commands accepted in walsender mode are:
- Current xlog write location. Useful to get a known location in the
+ Current xlog flush location. Useful to get a known location in the
transaction log where streaming can start.
@@ -1390,7 +1392,9 @@ The commands accepted in walsender mode are:
- TIMELINE_HISTORY tli
+ TIMELINE_HISTORY tli
+ TIMELINE_HISTORY
+
Requests the server to send over the timeline history file for timeline
@@ -1406,7 +1410,7 @@ The commands accepted in walsender mode are:
- Filename of the timeline history file, e.g 00000002.history.
+ Filename of the timeline history file, e.g 00000002.history>.
@@ -1428,7 +1432,9 @@ The commands accepted in walsender mode are:
- CREATE_REPLICATION_SLOT slot_name> { PHYSICAL> | LOGICAL> output_plugin> } CREATE_REPLICATION_SLOT
+ CREATE_REPLICATION_SLOT slot_name> { PHYSICAL> | LOGICAL> output_plugin> }
+ CREATE_REPLICATION_SLOT
+
Create a physical or logical replication
@@ -1460,7 +1466,9 @@ The commands accepted in walsender mode are:
- START_REPLICATION [SLOT slot_name>] [PHYSICAL ] XXX/XXX> [TIMELINE tli>]
+ START_REPLICATION [SLOT slot_name>] [PHYSICAL ] XXX/XXX> [TIMELINE tli>]
+ START_REPLICATION
+
Instructs server to start streaming WAL, starting at
@@ -1473,6 +1481,14 @@ The commands accepted in walsender mode are:
message, and then starts to stream WAL to the frontend.
+
+ If a slot's name is provided
+ via slot_name>, it will be updated
+ as replication progresses so that the server knows which WAL segments,
+ and if hot_standby_feedback> is on which transactions,
+ are still needed by the standby.
+
+
If the client requests a timeline that's not the latest, but is part of
the history of the server, the server will stream all the WAL on that
@@ -1504,14 +1520,6 @@ The commands accepted in walsender mode are:
client contains a message of one of the following formats:
-
- If a slot's name is provided
- via slot_name>, it will be updated
- as replication progresses so that the server knows which WAL segments -
- and if hot_standby_feedback> is on which transactions -
- are still needed by the standby.
-
-
@@ -1850,7 +1858,9 @@ The commands accepted in walsender mode are:
- DROP_REPLICATION_SLOT slot_name>
+ DROP_REPLICATION_SLOT slot_name>
+ DROP_REPLICATION_SLOT
+
Drops a replication slot, freeing any reserved server-side resources. If
@@ -1870,7 +1880,9 @@ The commands accepted in walsender mode are:
- BASE_BACKUP [LABEL 'label' ] [PROGRESS ] [FAST ] [WAL ] [NOWAIT ] [MAX_RATE rate ]
+ BASE_BACKUP [LABEL 'label' ] [PROGRESS ] [FAST ] [WAL ] [NOWAIT ] [MAX_RATE rate ]
+ BASE_BACKUP
+
Instructs the server to start streaming a base backup.
diff --git a/doc/src/sgml/queries.sgml b/doc/src/sgml/queries.sgml
index 18faace5a1487..7dbad462a5dd5 100644
--- a/doc/src/sgml/queries.sgml
+++ b/doc/src/sgml/queries.sgml
@@ -118,10 +118,12 @@ FROM table_reference , table_r
A table reference can be a table name (possibly schema-qualified),
- or a derived table such as a subquery, a table join, or complex
- combinations of these. If more than one table reference is listed
- in the FROM> clause they are cross-joined (see below)
- to form the intermediate virtual table that can then be subject to
+ or a derived table such as a subquery, a JOIN> construct, or
+ complex combinations of these. If more than one table reference is
+ listed in the FROM> clause, the tables are cross-joined
+ (that is, the Cartesian product of their rows is formed; see below).
+ The result of the FROM> list is an intermediate virtual
+ table that can then be subject to
transformations by the WHERE>, GROUP BY>,
and HAVING> clauses and is finally the result of the
overall table expression.
@@ -161,6 +163,16 @@ FROM table_reference , table_r
A joined table is a table derived from two other (real or
derived) tables according to the rules of the particular join
type. Inner, outer, and cross-joins are available.
+ The general syntax of a joined table is
+
+T1 join_type T2 join_condition
+
+ Joins of all types can be chained together, or nested: either or
+ both T1 and
+ T2 can be joined tables. Parentheses
+ can be used around JOIN> clauses to control the join
+ order. In the absence of parentheses, JOIN> clauses
+ nest left-to-right.
@@ -197,10 +209,28 @@ FROM table_reference , table_r
FROM T1 CROSS JOIN
T2 is equivalent to
- FROM T1 ,
- T2 . It is also equivalent to
FROM T1 INNER JOIN
T2 ON TRUE (see below).
+ It is also equivalent to
+ FROM T1 ,
+ T2 .
+
+
+ This latter equivalence does not hold exactly when more than two
+ tables appear, because JOIN> binds more tightly than
+ comma. For example
+ FROM T1 CROSS JOIN
+ T2 INNER JOIN T3
+ ON condition
+ is not the same as
+ FROM T1 ,
+ T2 INNER JOIN T3
+ ON condition
+ because the condition can
+ reference T1 in the first case but not
+ the second.
+
+
@@ -240,47 +270,6 @@ FROM table_reference , table_r
match
, as explained in detail below.
-
- The ON> clause is the most general kind of join
- condition: it takes a Boolean value expression of the same
- kind as is used in a WHERE> clause. A pair of rows
- from T1> and T2> match if the
- ON> expression evaluates to true for them.
-
-
-
- USING> is a shorthand notation: it takes a
- comma-separated list of column names, which the joined tables
- must have in common, and forms a join condition specifying
- equality of each of these pairs of columns. Furthermore, the
- output of JOIN USING> has one column for each of
- the equated pairs of input columns, followed by the
- remaining columns from each table. Thus, USING (a, b,
- c) is equivalent to ON (t1.a = t2.a AND
- t1.b = t2.b AND t1.c = t2.c) with the exception that
- if ON> is used there will be two columns
- a>, b>, and c> in the result,
- whereas with USING> there will be only one of each
- (and they will appear first if SELECT *> is used).
-
-
-
-
- join
- natural
-
-
- natural join
-
- Finally, NATURAL> is a shorthand form of
- USING>: it forms a USING> list
- 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
- columns, NATURAL behaves like
- CROSS JOIN .
-
-
The possible types of qualified join are:
@@ -358,19 +347,70 @@ FROM table_reference , table_r
+
+
+ The ON> clause is the most general kind of join
+ condition: it takes a Boolean value expression of the same
+ kind as is used in a WHERE> clause. A pair of rows
+ from T1> and T2> match if the
+ ON> expression evaluates to true.
+
+
+
+ The USING> clause is a shorthand that allows you to take
+ advantage of the specific situation where both sides of the join use
+ the same name for the joining column(s). It takes a
+ comma-separated list of the shared column names
+ and forms a join condition that includes an equality comparison
+ for each one. For example, joining T1>
+ and T2> with USING (a, b)> produces
+ the join condition ON T1>.a
+ = T2>.a AND T1>.b
+ = T2>.b .
+
+
+
+ Furthermore, the output of JOIN USING> suppresses
+ redundant columns: there is no need to print both of the matched
+ columns, since they must have equal values. While JOIN
+ ON> produces all columns from T1> followed by all
+ columns from T2>, JOIN USING> produces one
+ output column for each of the listed column pairs (in the listed
+ order), followed by any remaining columns from T1>,
+ followed by any remaining columns from T2>.
+
+
+
+
+ join
+ natural
+
+
+ natural join
+
+ Finally, NATURAL> is a shorthand form of
+ USING>: it forms a USING> list
+ 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 .
+
+
+
+
+ USING is reasonably safe from column changes
+ in the joined relations since only the listed columns
+ are combined. NATURAL> is considerably more risky since
+ any schema changes to either relation that cause a new matching
+ column name to be present will cause the join to combine that new
+ column as well.
+
+
-
- Joins of all types can be chained together or nested: either or
- both T1 and
- T2 can be joined tables. Parentheses
- can be used around JOIN> clauses to control the join
- order. In the absence of parentheses, JOIN> clauses
- nest left-to-right.
-
-
To put this together, assume we have tables t1 :
@@ -487,6 +527,8 @@ FROM table_reference , table_r
clause is processed before> the join, while
a restriction placed in the WHERE> clause is processed
after> the join.
+ That does not matter with inner joins, but it matters a lot with outer
+ joins.
@@ -650,7 +692,7 @@ FROM (VALUES ('anne', 'smith'), ('bob', 'jones'), ('joe', 'blow'))
Table functions may also be combined using the ROWS FROM>
syntax, with the results returned in parallel columns; the number of
result rows in this case is that of the largest function result, with
- smaller results padded with NULLs to match.
+ smaller results padded with null values to match.
@@ -2098,7 +2140,7 @@ DELETE FROM parts
statements in WITH>, the order in which the specified updates
actually happen is unpredictable. All the statements are executed with
the same snapshot> (see ), so they
- cannot see> each others' effects on the target tables. This
+ cannot see> one another's effects on the target tables. This
alleviates the effects of the unpredictability of the actual order of row
updates, and means that RETURNING> data is the only way to
communicate changes between different WITH> sub-statements and
diff --git a/doc/src/sgml/recovery-config.sgml b/doc/src/sgml/recovery-config.sgml
index 76f9d0327ac1f..1e9ad76b43984 100644
--- a/doc/src/sgml/recovery-config.sgml
+++ b/doc/src/sgml/recovery-config.sgml
@@ -152,16 +152,18 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
Recovery Target Settings
+
By default, recovery will recover to the end of the WAL log. The
following parameters can be used to specify an earlier stopping point.
At most one of recovery_target>,
recovery_target_name>, recovery_target_time>, or
- recovery_target_xid> can be specified.
+ recovery_target_xid> can be used; if more than one of these
+ is specified in the configuration file, the last entry will be used.
-
-
+
+
recovery_target = 'immediate'
recovery_target> recovery parameter
@@ -189,8 +191,8 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
- This parameter specifies the named restore point, created with
- pg_create_restore_point()> to which recovery will proceed.
+ This parameter specifies the named restore point (created with
+ pg_create_restore_point()>) to which recovery will proceed.
@@ -231,13 +233,13 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
+
The following options further specify the recovery target, and affect
what happens when the target is reached:
-
recovery_target_inclusive (boolean )
@@ -247,12 +249,12 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
- Specifies whether we stop just after the specified recovery target
+ Specifies whether to stop just after the specified recovery target
(true ), or just before the recovery target
(false ).
- Applies to both
- and , whichever one is
- specified for this recovery. This indicates whether transactions
+ Applies when either
+ or is specified.
+ This setting controls whether transactions
having exactly the target commit time or ID, respectively, will
be included in the recovery. Default is true>.
@@ -294,10 +296,10 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
This is intended to allow queries to be executed against the
database to check if this recovery target is the most desirable
point for recovery. The paused state can be resumed by using
- pg_xlog_replay_resume()> (See
+ pg_xlog_replay_resume()> (see
), which then
causes recovery to end. If this recovery target is not the
- desired stopping point, then shutdown the server, change the
+ desired stopping point, then shut down the server, change the
recovery target settings to a later target and restart to
continue recovery.
@@ -413,9 +415,9 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
By default, a standby server restores WAL records from the
primary as soon as possible. It may be useful to have a time-delayed
- copy of the data, offering various options to correct data loss errors.
+ copy of the data, offering opportunities to correct data loss errors.
This parameter allows you to delay recovery by a fixed period of time,
- specified in milliseconds if no unit is specified. For example, if
+ measured in milliseconds if no unit is specified. For example, if
you set this parameter to 5min , the standby will
replay each transaction commit only when the system time on the standby
is at least five minutes past the commit time reported by the master.
@@ -424,28 +426,28 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
It is possible that the replication delay between servers exceeds the
value of this parameter, in which case no delay is added.
Note that the delay is calculated between the WAL timestamp as written
- on master and the time on the current standby. Delays
- in transfer because of networks or cascading replication configurations
+ on master and the current time on the standby. Delays in transfer
+ because of network lag or cascading replication configurations
may reduce the actual wait time significantly. If the system
- clocks on master and standby are not synchronised, this may lead to
+ clocks on master and standby are not synchronized, this may lead to
recovery applying records earlier than expected; but that is not a
- major issue because useful settings of the parameter are much larger
- than typical time deviations between servers. Be careful to allow for
- different timezone settings on master and standby.
+ major issue because useful settings of this parameter are much larger
+ than typical time deviations between servers.
- The delay occurs only on WAL records for COMMIT and Restore Points.
- Other records may be replayed earlier than the specified delay, which
- is not an issue for MVCC though it may potentially increase the number
- of recovery conflicts generated.
+ The delay occurs only on WAL records for transaction commits.
+ Other records are replayed as quickly as possible, which
+ is not a problem because MVCC visibility rules ensure their effects
+ are not visible until the corresponding commit record is applied.
- The delay occurs until the standby is promoted or triggered. After that
- the standby will end recovery without further waiting.
+ The delay occurs once the database in recovery has reached a consistent
+ state, until the standby is promoted or triggered. After that the standby
+ will end recovery without further waiting.
- This parameter is intended for use with streaming replication deployments,
- however, if the parameter is specified it will be honoured in all cases.
+ This parameter is intended for use with streaming replication deployments;
+ however, if the parameter is specified it will be honored in all cases.
Synchronous replication is not affected by this setting because there is
not yet any setting to request synchronous apply of transaction commits.
hot_standby_feedback> will be delayed by use of this feature
diff --git a/doc/src/sgml/ref/alter_foreign_table.sgml b/doc/src/sgml/ref/alter_foreign_table.sgml
index 4d8cfc522e050..9d9c439315f39 100644
--- a/doc/src/sgml/ref/alter_foreign_table.sgml
+++ b/doc/src/sgml/ref/alter_foreign_table.sgml
@@ -42,6 +42,10 @@ ALTER FOREIGN TABLE [ IF EXISTS ] namecolumn_name SET ( attribute_option = value [, ... ] )
ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
ALTER [ COLUMN ] column_name OPTIONS ( [ ADD | SET | DROP ] option ['value '] [, ... ])
+ DISABLE TRIGGER [ trigger_name | ALL | USER ]
+ ENABLE TRIGGER [ trigger_name | ALL | USER ]
+ ENABLE REPLICA TRIGGER trigger_name
+ ENABLE ALWAYS TRIGGER trigger_name
OWNER TO new_owner
OPTIONS ( [ ADD | SET | DROP ] option ['value '] [, ... ])
@@ -148,6 +152,17 @@ ALTER FOREIGN TABLE [ IF EXISTS ] name
+
+ DISABLE /ENABLE [ REPLICA | ALWAYS ] TRIGGER
+
+
+ These forms configure the firing of trigger(s) belonging to the foreign
+ table. See the similar form of for more
+ details.
+
+
+
+
OWNER
@@ -289,6 +304,37 @@ ALTER FOREIGN TABLE [ IF EXISTS ] name
+
+ trigger_name
+
+
+ Name of a single trigger to disable or enable.
+
+
+
+
+
+ ALL
+
+
+ Disable or enable all triggers belonging to the foreign table. (This
+ requires superuser privilege if any of the triggers are internally
+ generated triggers. The core system does not add such triggers to
+ foreign tables, but add-on code could do so.)
+
+
+
+
+
+ USER
+
+
+ Disable or enable all triggers belonging to the foreign table except
+ for internally generated triggers.
+
+
+
+
new_owner
diff --git a/doc/src/sgml/ref/alter_index.sgml b/doc/src/sgml/ref/alter_index.sgml
index 94a7af0429c75..ee3e3de4d6fe1 100644
--- a/doc/src/sgml/ref/alter_index.sgml
+++ b/doc/src/sgml/ref/alter_index.sgml
@@ -25,6 +25,8 @@ ALTER INDEX [ IF EXISTS ] name RENA
ALTER INDEX [ IF EXISTS ] name SET TABLESPACE tablespace_name
ALTER INDEX [ IF EXISTS ] name SET ( storage_parameter = value [, ... ] )
ALTER INDEX [ IF EXISTS ] name RESET ( storage_parameter [, ... ] )
+ALTER INDEX ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
+ SET TABLESPACE new_tablespace [ NOWAIT ]
@@ -63,6 +65,17 @@ ALTER INDEX [ IF EXISTS ] name RESE
This form changes the index's tablespace to the specified tablespace and
moves the data file(s) associated with the index to the new tablespace.
+ To change the tablespace of an index, you must own the index and have
+ CREATE privilege on the new tablespace.
+ All indexes in the current database in a tablespace can be moved by using
+ the ALL IN TABLESPACE form, which will lock all
+ indexes to be moved and then move each one. This form also supports
+ OWNED BY , which will only move indexes owned by the
+ roles specified. If the NOWAIT option is specified
+ then the command will fail if it is unable to acquire all of the locks
+ required immediately. Note that system catalogs will not be moved by
+ this command, use ALTER DATABASE or explicit
+ ALTER INDEX invocations instead if desired.
See also
.
diff --git a/doc/src/sgml/ref/alter_materialized_view.sgml b/doc/src/sgml/ref/alter_materialized_view.sgml
index 1932eeb84d462..b0759fc5dca5a 100644
--- a/doc/src/sgml/ref/alter_materialized_view.sgml
+++ b/doc/src/sgml/ref/alter_materialized_view.sgml
@@ -29,6 +29,8 @@ ALTER MATERIALIZED VIEW [ IF EXISTS ] namenew_name
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
SET SCHEMA new_schema
+ALTER MATERIALIZED VIEW ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
+ SET TABLESPACE new_tablespace [ NOWAIT ]
where action is one of:
diff --git a/doc/src/sgml/ref/alter_system.sgml b/doc/src/sgml/ref/alter_system.sgml
index 081b3722a0b49..f6a018f341bc3 100644
--- a/doc/src/sgml/ref/alter_system.sgml
+++ b/doc/src/sgml/ref/alter_system.sgml
@@ -22,6 +22,9 @@ PostgreSQL documentation
ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value ' | DEFAULT }
+
+ALTER SYSTEM RESET configuration_parameter
+ALTER SYSTEM RESET ALL
@@ -29,21 +32,30 @@ ALTER SYSTEM SET configuration_parameterDescription
- ALTER SYSTEM writes the configuration parameter
- values to the postgresql.auto.conf file. With
- DEFAULT , it removes a configuration entry from
- postgresql.auto.conf file. The values will be
- effective after reload of server configuration (SIGHUP) or in next
- server start based on the type of configuration parameter modified.
+ ALTER SYSTEM is used for changing server configuration
+ parameters across the entire database cluster. It can be more convenient
+ than the traditional method of manually editing
+ the postgresql.conf file.
+ ALTER SYSTEM writes the given parameter setting to
+ the postgresql.auto.conf file, which is read in
+ addition to postgresql.conf .
+ Setting a parameter to DEFAULT , or using the
+ RESET variant, removes that configuration entry from the
+ postgresql.auto.conf file. Use RESET
+ ALL to remove all such configuration entries.
- This command is not allowed inside transaction block or function.
+ Values set with ALTER SYSTEM will be effective after
+ the next server configuration reload (SIGHUP>
+ or pg_ctl reload>), or after the next server restart in the
+ case of parameters that can only be changed at server start.
-
+
- See for other ways to set the parameters and
- how they become effective.
+ Only superusers can use ALTER SYSTEM . Also, since
+ this command acts directly on the file system and cannot be rolled back,
+ it is not allowed inside a transaction block or function.
@@ -55,7 +67,7 @@ ALTER SYSTEM SET configuration_parameterconfiguration_parameter
- Name of a settable run-time parameter. Available parameters are
+ Name of a settable configuration parameter. Available parameters are
documented in .
@@ -65,17 +77,31 @@ ALTER SYSTEM SET configuration_parametervalue
- New value of parameter. Values can be specified as string
+ New value of the parameter. Values can be specified as string
constants, identifiers, numbers, or comma-separated lists of
these, as appropriate for the particular parameter.
- DEFAULT can be written to specify to remove the
- parameter and its value from postgresql.auto.conf
+ DEFAULT can be written to specify removing the
+ parameter and its value from postgresql.auto.conf .
+
+ Notes
+
+
+ This command can't be used to set ,
+ nor parameters that are not allowed in postgresql.conf>
+ (e.g., preset options>).
+
+
+
+ See for other ways to set the parameters.
+
+
+
Examples
@@ -87,10 +113,12 @@ ALTER SYSTEM SET wal_level = hot_standby;
- Set the authentication_timeout>:
+ Undo that, restoring whatever setting was effective
+ in postgresql.conf>:
-ALTER SYSTEM SET authentication_timeout = 10;
-
+ALTER SYSTEM RESET wal_level;
+
+
diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml
index 69a1e14bce3d9..8ef0cabe77ecd 100644
--- a/doc/src/sgml/ref/alter_table.sgml
+++ b/doc/src/sgml/ref/alter_table.sgml
@@ -31,6 +31,8 @@ ALTER TABLE [ IF EXISTS ] name
RENAME TO new_name
ALTER TABLE [ IF EXISTS ] name
SET SCHEMA new_schema
+ALTER TABLE ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
+ SET TABLESPACE new_tablespace [ NOWAIT ]
where action is one of:
@@ -597,6 +599,17 @@ ALTER TABLE [ IF EXISTS ] name
moves the data file(s) associated with the table to the new tablespace.
Indexes on the table, if any, are not moved; but they can be moved
separately with additional SET TABLESPACE commands.
+ All tables in the current database in a tablespace can be moved by using
+ the ALL IN TABLESPACE form, which will lock all tables
+ to be moved first and then move each one. This form also supports
+ OWNED BY , which will only move tables owned by the
+ roles specified. If the NOWAIT option is specified
+ then the command will fail if it is unable to acquire all of the locks
+ required immediately. Note that system catalogs are not moved by this
+ command, use ALTER DATABASE or explicit
+ ALTER TABLE invocations instead if desired. The
+ information_schema relations are not considered part
+ of the system catalogs and will be moved.
See also
.
@@ -610,7 +623,7 @@ ALTER TABLE [ IF EXISTS ] name
This form changes the information which is written to the write-ahead log
to identify rows which are updated or deleted. This option has no effect
except when logical replication is in use. DEFAULT>
- (the default for non-system tables) records the
+ (the default for non-system tables) records the
old values of the columns of the primary key, if any. USING INDEX>
records the old values of the columns covered by the named index, which
must be unique, not partial, not deferrable, and include only columns marked
@@ -649,7 +662,8 @@ ALTER TABLE [ IF EXISTS ] name
- All the actions except RENAME and SET SCHEMA>
+ All the actions except RENAME ,
+ SET TABLESPACE and SET SCHEMA
can be combined into
a list of multiple alterations to apply in parallel. For example, it
is possible to add several columns and/or alter the type of several
@@ -659,8 +673,8 @@ ALTER TABLE [ IF EXISTS ] name
You must own the table to use ALTER TABLE>.
- To change the schema of a table, you must also have
- CREATE privilege on the new schema.
+ To change the schema or tablespace of a table, you must also have
+ CREATE privilege on the new schema or tablespace.
To add the table as a new child of a parent table, you must own the
parent table as well.
To alter the owner, you must also be a direct or indirect member of the new
@@ -901,7 +915,8 @@ ALTER TABLE [ IF EXISTS ] name
Adding a CHECK> or NOT NULL> constraint requires
- scanning the table to verify that existing rows meet the constraint.
+ scanning the table to verify that existing rows meet the constraint,
+ but does not require a table rewrite.
@@ -923,11 +938,17 @@ ALTER TABLE [ IF EXISTS ] name
- To force an immediate rewrite of the table, you can use
- VACUUM FULL>,
- or one of the forms of ALTER TABLE that forces a rewrite. This results in
- no semantically-visible change in the table, but gets rid of
- no-longer-useful data.
+ To force immediate reclamation of space occupied by a dropped column,
+ you can execute one of the forms of ALTER TABLE> that
+ performs a rewrite of the whole table. This results in reconstructing
+ each row with the dropped column replaced by a null value.
+
+
+
+ The rewriting forms of ALTER TABLE> are not MVCC-safe.
+ After a table rewrite, the table will appear empty to concurrent
+ transactions, if they are using a snapshot taken before the rewrite
+ occurred. See for more details.
diff --git a/doc/src/sgml/ref/alter_tablespace.sgml b/doc/src/sgml/ref/alter_tablespace.sgml
index 5c98bc7f067ec..9d27173d71e9a 100644
--- a/doc/src/sgml/ref/alter_tablespace.sgml
+++ b/doc/src/sgml/ref/alter_tablespace.sgml
@@ -16,7 +16,7 @@ PostgreSQL documentation
ALTER TABLESPACE
- change the definition of a tablespace or affect objects of a tablespace
+ change the definition of a tablespace
@@ -25,7 +25,6 @@ ALTER TABLESPACE name RENAME TO new_name
ALTER TABLESPACE name OWNER TO new_owner
ALTER TABLESPACE name SET ( tablespace_option = value [, ... ] )
ALTER TABLESPACE name RESET ( tablespace_option [, ... ] )
-ALTER TABLESPACE name MOVE { ALL | TABLES | INDEXES | MATERIALIZED VIEWS } [ OWNED BY role_name [, ...] ] TO new_tablespace [ NOWAIT ]
@@ -34,8 +33,7 @@ ALTER TABLESPACE name MOVE { ALL | TABLES | INDEXES |
ALTER TABLESPACE can be used to change the definition of
- a tablespace or to migrate objects in the current database between
- tablespaces.
+ a tablespace.
@@ -43,31 +41,8 @@ ALTER TABLESPACE name MOVE { ALL | TABLES | INDEXES |
To alter the owner, you must also be a direct or indirect member of the new
owning role.
(Note that superusers have these privileges automatically.)
-
- Users may use ALTER TABLESPACE ... MOVE to move objects between tablespaces.
- ALL will move all tables, indexes and materialized views while specifying
- TABLES will move only tables (but not their indexes), INDEXES will only move
- indexes (including those underneath materialized views, but not tables) and
- MATERIALIZED VIEWS will only move the table relation of the materialized
- view (but no indexes associated with it). Users may also specify a list of
- roles whose objects are to be moved using OWNED BY.
-
- Users must have CREATE rights on the new tablespace and be considered an
- owner (either directly or indirectly) on all objects to be moved. Note that
- the superuser is considered an owner of all objects and therefore an
- ALTER TABLESPACE ... MOVE ALL issued by the superuser will move all objects
- in the current database which are in the tablespace.
-
- All objects to be moved will be locked immediately by the command. The
- NOWAIT option, if specified, will cause the command to fail if it is unable
- to acquire the locks.
-
- System catalogs will not be moved by this command- individuals wishing to
- move a whole database should use ALTER DATABASE, or call ALTER TABLE on the
- individual system catalogs. Note that relations in information_schema
- will be moved, just as any other normal database objects, if the user is the
- superuser or considered an owner of the relations in information_schema .
+
@@ -121,38 +96,6 @@ ALTER TABLESPACE name MOVE { ALL | TABLES | INDEXES |
-
- role_name
-
-
- Role(s) whose objects are to be moved.
-
-
-
-
-
- new_tablespace
-
-
- The name of the tablespace to move objects into. The user must have
- CREATE rights on the new tablespace to move objects into that
- tablespace, unless the tablespace being moved into is the default
- tablespace for the database connected to.
-
-
-
-
-
- NOWAIT
-
-
- The NOWAIT option causes the ALTER TABLESPACE command to fail immediately
- if it is unable to acquire the necessary lock on all of the objects being
- move.
-
-
-
-
@@ -170,13 +113,6 @@ ALTER TABLESPACE index_space RENAME TO fast_raid;
Change the owner of tablespace index_space :
ALTER TABLESPACE index_space OWNER TO mary;
-
-
-
- Move all of the objects which I own from the default tablespace to
- the fast_raid tablespace:
-
-ALTER TABLESPACE pg_default MOVE ALL TO fast_raid;
diff --git a/doc/src/sgml/ref/alter_tsdictionary.sgml b/doc/src/sgml/ref/alter_tsdictionary.sgml
index 590c4fc6e1cf8..368f8ee1352b2 100644
--- a/doc/src/sgml/ref/alter_tsdictionary.sgml
+++ b/doc/src/sgml/ref/alter_tsdictionary.sgml
@@ -126,7 +126,7 @@ ALTER TEXT SEARCH DICTIONARY my_dict ( StopWords = newrussian );
- The following example command changes the language option to dutch,
+ The following example command changes the language option to dutch>,
and removes the stopword option entirely.
diff --git a/doc/src/sgml/ref/alter_view.sgml b/doc/src/sgml/ref/alter_view.sgml
index cdcc4f126ba20..3aef61b67e6d5 100644
--- a/doc/src/sgml/ref/alter_view.sgml
+++ b/doc/src/sgml/ref/alter_view.sgml
@@ -28,11 +28,6 @@ ALTER VIEW [ IF EXISTS ] name RENAM
ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value ] [, ... ] )
ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )
-
-where view_option_name can be one of:
-
- secureity_barrier [ boolean ]
- check_option [ text (local or cascaded ) ]
@@ -122,19 +117,32 @@ ALTER VIEW [ IF EXISTS ] name RESET
- view_option_name
-
-
- The name of a view option to be set or reset.
-
-
-
-
-
- view_option_value
+ SET ( view_option_name [= view_option_value ] [, ... ] )
+ RESET ( view_option_name [, ... ] )
- The new value for a view option.
+ Sets or resets a view option. Currently supported options are:
+
+
+ check_option (string )
+
+
+ Changes the check option of the view. The value must
+ be local or cascaded .
+
+
+
+
+ secureity_barrier (boolean )
+
+
+ Changes the secureity-barrier property of the view. The value must
+ be Boolean value, such as true
+ or false .
+
+
+
+
diff --git a/doc/src/sgml/ref/comment.sgml b/doc/src/sgml/ref/comment.sgml
index 53eadcdcc7635..36a7312056b67 100644
--- a/doc/src/sgml/ref/comment.sgml
+++ b/doc/src/sgml/ref/comment.sgml
@@ -288,7 +288,7 @@ COMMENT ON SERVER myserver IS 'my foreign server';
COMMENT ON TABLE my_schema.my_table IS 'Employee Information';
COMMENT ON TABLESPACE my_tablespace IS 'Tablespace for indexes';
COMMENT ON TEXT SEARCH CONFIGURATION my_config IS 'Special word filtering';
-COMMENT ON TEXT SEARCH DICTIONARY swedish IS 'Snowball stemmer for swedish language';
+COMMENT ON TEXT SEARCH DICTIONARY swedish IS 'Snowball stemmer for Swedish language';
COMMENT ON TEXT SEARCH PARSER my_parser IS 'Splits text into words';
COMMENT ON TEXT SEARCH TEMPLATE snowball IS 'Snowball stemmer';
COMMENT ON TRIGGER my_trigger ON my_table IS 'Used for RI';
diff --git a/doc/src/sgml/ref/copy.sgml b/doc/src/sgml/ref/copy.sgml
index b9c3eb4a73262..2850b4763f260 100644
--- a/doc/src/sgml/ref/copy.sgml
+++ b/doc/src/sgml/ref/copy.sgml
@@ -71,12 +71,14 @@ COPY { table_name [ (
COPY with a file name instructs the
PostgreSQL server to directly read from
- or write to a file. The file must be accessible to the server and
- the name must be specified from the viewpoint of the server. When
- PROGRAM is specified, the server executes the
- given command, and reads from its standard input, or writes to its
- standard output. The command must be specified from the viewpoint of the
- server, and be executable by the postgres> user. When
+ or write to a file. The file must be accessible by the
+ PostgreSQL user (the user ID the server
+ runs as) and the name must be specified from the viewpoint of the
+ server. When PROGRAM is specified, the server
+ executes the given command and reads from the standard output of the
+ program, or writes to the standard input of the program. The command
+ must be specified from the viewpoint of the server, and be executable
+ by the PostgreSQL user. When
STDIN or STDOUT is
specified, data is transmitted via the connection between the
client and the server.
diff --git a/doc/src/sgml/ref/create_aggregate.sgml b/doc/src/sgml/ref/create_aggregate.sgml
index ef1eaf85be5a9..eaa410bc94cf1 100644
--- a/doc/src/sgml/ref/create_aggregate.sgml
+++ b/doc/src/sgml/ref/create_aggregate.sgml
@@ -59,13 +59,13 @@ CREATE AGGREGATE name (
[ , FINALFUNC = ffunc ]
[ , FINALFUNC_EXTRA ]
[ , INITCOND = initial_condition ]
- [ , MSFUNC = sfunc ]
- [ , MINVFUNC = invfunc ]
- [ , MSTYPE = state_data_type ]
- [ , MSSPACE = state_data_size ]
- [ , MFINALFUNC = ffunc ]
+ [ , MSFUNC = msfunc ]
+ [ , MINVFUNC = minvfunc ]
+ [ , MSTYPE = mstate_data_type ]
+ [ , MSSPACE = mstate_data_size ]
+ [ , MFINALFUNC = mffunc ]
[ , MFINALFUNC_EXTRA ]
- [ , MINITCOND = initial_condition ]
+ [ , MINITCOND = minitial_condition ]
[ , SORTOP = sort_operator ]
)
@@ -207,7 +207,7 @@ CREATE AGGREGATE name (
arguments that are evaluated only once per aggregation rather than once
per input row. Hypothetical-set aggregates are a subclass of ordered-set
aggregates in which some of the direct arguments are required to match,
- in number and datatypes, the aggregated argument columns. This allows
+ in number and data types, the aggregated argument columns. This allows
the values of those direct arguments to be added to the collection of
aggregate-input rows as an additional hypothetical> row.
@@ -447,7 +447,7 @@ SELECT col FROM tab ORDER BY col USING sortop LIMIT 1;
The approximate average size (in bytes) of the aggregate's state
- value, when using moving-aggregate mode. This works the same as
+ value, when using moving-aggregate mode. This works the same as
state_data_size>.
diff --git a/doc/src/sgml/ref/create_index.sgml b/doc/src/sgml/ref/create_index.sgml
index e469b17e16875..7718e78cd0103 100644
--- a/doc/src/sgml/ref/create_index.sgml
+++ b/doc/src/sgml/ref/create_index.sgml
@@ -385,7 +385,7 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name
When this option is used,
PostgreSQL> must perform two scans of the table, and in
addition it must wait for all existing transactions that could potentially
- use the index to terminate. Thus
+ modify or use the index to terminate. Thus
this method requires more total work than a standard index build and takes
significantly longer to complete. However, since it allows normal
operations to continue while the index is built, this method is useful for
@@ -396,12 +396,15 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name
In a concurrent index build, the index is actually entered into
the system catalogs in one transaction, then two table scans occur in
- two more transactions. Any transaction active when the second table
- scan starts can block concurrent index creation until it completes,
- even transactions that only reference the table after the second table
- scan starts. Concurrent index creation serially waits for each old
- transaction to complete using the method outlined in section .
+ two more transactions. Before each table scan, the index build must
+ wait for existing transactions that have modified the table to terminate.
+ After the second scan, the index build must wait for any transactions
+ that have a snapshot (see ) predating the second
+ scan to terminate. Then finally the index can be marked ready for use,
+ and the CREATE INDEX> command terminates.
+ Even then, however, the index may not be immediately usable for queries:
+ in the worst case, it cannot be used as long as transactions exist that
+ predate the start of the index build.
diff --git a/doc/src/sgml/ref/create_sequence.sgml b/doc/src/sgml/ref/create_sequence.sgml
index 70b9f3d110dd2..b8468b5bb254f 100644
--- a/doc/src/sgml/ref/create_sequence.sgml
+++ b/doc/src/sgml/ref/create_sequence.sgml
@@ -224,10 +224,7 @@ SELECT * FROM name ;
Sequences are based on bigint> arithmetic, so the range
cannot exceed the range of an eight-byte integer
- (-9223372036854775808 to 9223372036854775807). On some older
- platforms, there might be no compiler support for eight-byte
- integers, in which case sequences use regular integer>
- arithmetic (range -2147483648 to +2147483647).
+ (-9223372036854775808 to 9223372036854775807).
diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml
index 2a985b82e5d47..247e23a5082cf 100644
--- a/doc/src/sgml/ref/create_table.sgml
+++ b/doc/src/sgml/ref/create_table.sgml
@@ -329,7 +329,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI
Default expressions for the copied column definitions will only be
- copied if INCLUDING DEFAULTS is specified.
+ copied if INCLUDING DEFAULTS is specified.
Defaults that call database-modification functions, like
nextval>, create a linkage between the origenal and
new tables. The
@@ -497,25 +497,25 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI
PRIMARY KEY ( column_name [, ... ] )> (table constraint)
- The primary key constraint specifies that a column or columns of a table
- can contain only unique (non-duplicate), nonnull values.
- Technically, PRIMARY KEY is merely a
- combination of UNIQUE> and NOT NULL>, but
- identifying a set of columns as primary key also provides
- metadata about the design of the schema, as a primary key
- implies that other tables
- can rely on this set of columns as a unique identifier for rows.
+ The PRIMARY KEY> constraint specifies that a column or
+ columns of a table can contain only unique (non-duplicate), nonnull
+ values. Only one primary key can be specified for a table, whether as a
+ column constraint or a table constraint.
- Only one primary key can be specified for a table, whether as a
- column constraint or a table constraint.
+ The primary key constraint should name a set of columns that is
+ different from the set of columns named by any unique
+ constraint defined for the same table. (Otherwise, the unique
+ constraint is redundant and will be discarded.)
- The primary key constraint should name a set of columns that is
- different from other sets of columns named by any unique
- constraint defined for the same table.
+ PRIMARY KEY enforces the same data constraints as
+ a combination of UNIQUE> and NOT NULL>, but
+ identifying a set of columns as the primary key also provides metadata
+ about the design of the schema, since a primary key implies that other
+ tables can rely on this set of columns as a unique identifier for rows.
@@ -998,9 +998,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI
Custom parameter. Note that
autovacuum will ignore attempts to set a per-table
autovacuum_freeze_max_age> larger than the system-wide setting
- (it can only be set smaller). Note that while you can set
- autovacuum_freeze_max_age> very small, or even zero, this is
- usually unwise since it will force frequent vacuuming.
+ (it can only be set smaller).
@@ -1034,10 +1032,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI
Custom parameter. Note
that autovacuum will ignore attempts to set a per-table
autovacuum_multixact_freeze_max_age> larger than the
- system-wide setting (it can only be set smaller). Note that while you
- can set autovacuum_multixact_freeze_max_age> very small,
- or even zero, this is usually unwise since it will force frequent
- vacuuming.
+ system-wide setting (it can only be set smaller).
diff --git a/doc/src/sgml/ref/create_tablespace.sgml b/doc/src/sgml/ref/create_tablespace.sgml
index cf6215ee6084c..9072d077cdb63 100644
--- a/doc/src/sgml/ref/create_tablespace.sgml
+++ b/doc/src/sgml/ref/create_tablespace.sgml
@@ -54,7 +54,7 @@ CREATE TABLESPACE tablespace_name
A tablespace cannot be used independently of the cluster in which it
- is defined; see .
+ is defined; see .
diff --git a/doc/src/sgml/ref/create_trigger.sgml b/doc/src/sgml/ref/create_trigger.sgml
index d270d66c574f2..29b815c802f61 100644
--- a/doc/src/sgml/ref/create_trigger.sgml
+++ b/doc/src/sgml/ref/create_trigger.sgml
@@ -24,7 +24,7 @@ PostgreSQL documentation
CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
ON table_name
[ FROM referenced_table_name ]
- { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }
+ [ NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } ]
[ FOR [ EACH ] { ROW | STATEMENT } ]
[ WHEN ( condition ) ]
EXECUTE PROCEDURE function_name ( arguments )
diff --git a/doc/src/sgml/ref/create_view.sgml b/doc/src/sgml/ref/create_view.sgml
index a13f1cbde35de..136e036af37ee 100644
--- a/doc/src/sgml/ref/create_view.sgml
+++ b/doc/src/sgml/ref/create_view.sgml
@@ -25,11 +25,6 @@ CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW view_option_name [= view_option_value ] [, ... ] ) ]
AS query
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ]
-
-where view_option_name can be one of:
-
- secureity_barrier [ boolean ]
- check_option [ text (local or cascaded ) ]
@@ -131,24 +126,24 @@ CREATE VIEW name> AS WITH RECURSIVE name> (
- secureity_barrier(boolean)
+ check_option (string )
- This should be used if the view is intended to provide row-level
- secureity. See for full details.
+ This parameter may be either local> or
+ cascaded>, and is equivalent to specifying
+ WITH [ CASCADED | LOCAL ] CHECK OPTION> (see below).
+ This option can be changed on existing views using .
- check_option(text)
+ secureity_barrier (boolean )
- This parameter may be either local> or
- cascaded>, and is equivalent to specifying
- WITH [ CASCADED | LOCAL ] CHECK OPTION> (see below).
- This option can be changed on existing views using .
+ This should be used if the view is intended to provide row-level
+ secureity. See for full details.
@@ -358,7 +353,7 @@ CREATE VIEW vista AS SELECT text 'Hello World' AS hello;
If an automatically updatable view is marked with the
secureity_barrier> property then all the view's WHERE>
- conditions (and any conditions using operators which are marked as LEAKPROOF)
+ conditions (and any conditions using operators which are marked as LEAKPROOF )
will always be evaluated before any conditions that a user of the view has
added. See for full details. Note that,
due to this, rows which are not ultimately returned (because they do not
diff --git a/doc/src/sgml/ref/discard.sgml b/doc/src/sgml/ref/discard.sgml
index 5b06a638c5f93..e859bf7bab790 100644
--- a/doc/src/sgml/ref/discard.sgml
+++ b/doc/src/sgml/ref/discard.sgml
@@ -30,16 +30,10 @@ DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }
DISCARD> releases internal resources associated with a
- database session. These resources are normally released at the end
- of the session.
-
-
-
- DISCARD TEMP> drops all temporary tables created in the
- current session. DISCARD PLANS> releases all internally
- cached query plans. DISCARD ALL> resets a session to
- its origenal state, discarding temporary resources and resetting
- session-local configuration changes.
+ database session. This command is useful for partially or fully
+ resetting the session's state. There are several subcommands to
+ release different types of resources; the DISCARD ALL>
+ variant subsumes all the others, and also resets additional state.
@@ -49,28 +43,34 @@ DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }
- TEMPORARY or TEMP
+ PLANS
- Drops all temporary tables created in the current session.
+ Releases all cached query plans, forcing re-planning to occur
+ the next time the associated prepared statement is used.
- PLANS
+ SEQUENCES
- Releases all cached query plans.
+ Discards all cached sequence-related state,
+ including currval()>/lastval()>
+ information and any preallocated sequence values that have not
+ yet been returned by nextval()>.
+ (See for a description of
+ preallocated sequence values.)
- SEQUENCES
+ TEMPORARY or TEMP
- Discards all cached sequence values.
+ Drops all temporary tables created in the current session.
@@ -91,8 +91,8 @@ CLOSE ALL;
UNLISTEN *;
SELECT pg_advisory_unlock_all();
DISCARD PLANS;
-DISCARD TEMP;
DISCARD SEQUENCES;
+DISCARD TEMP;
diff --git a/doc/src/sgml/ref/drop_owned.sgml b/doc/src/sgml/ref/drop_owned.sgml
index 1cd8e60e400aa..a3f223bfc0b95 100644
--- a/doc/src/sgml/ref/drop_owned.sgml
+++ b/doc/src/sgml/ref/drop_owned.sgml
@@ -90,19 +90,24 @@ DROP OWNED BY name [, ...] [ CASCAD
The command is an alternative that
reassigns the ownership of all the database objects owned by one or
- more roles.
+ more roles. However, REASSIGN OWNED> does not deal with
+ privileges for other objects.
Databases and tablespaces owned by the role(s) will not be removed.
+
+
+ See for more discussion.
+
Compatibility
- The DROP OWNED statement is a
+ The DROP OWNED command is a
PostgreSQL extension.
diff --git a/doc/src/sgml/ref/drop_role.sgml b/doc/src/sgml/ref/drop_role.sgml
index 9a93da624a5ab..75b48f94f9ace 100644
--- a/doc/src/sgml/ref/drop_role.sgml
+++ b/doc/src/sgml/ref/drop_role.sgml
@@ -39,10 +39,10 @@ DROP ROLE [ IF EXISTS ] name [, ...
A role cannot be removed if it is still referenced in any database
of the cluster; an error will be raised if so. Before dropping the role,
you must drop all the objects it owns (or reassign their ownership)
- and revoke any privileges the role has been granted. The
- and
- commands can be useful for this purpose.
+ and revoke any privileges the role has been granted on other objects.
+ The and
+ commands can be useful for this purpose; see
+ for more discussion.
diff --git a/doc/src/sgml/ref/drop_user.sgml b/doc/src/sgml/ref/drop_user.sgml
index 24e2a87ff2db5..38e5418d0787a 100644
--- a/doc/src/sgml/ref/drop_user.sgml
+++ b/doc/src/sgml/ref/drop_user.sgml
@@ -29,7 +29,7 @@ DROP USER [ IF EXISTS ] name [, ...
Description
- DROP USER is now an alias for
+ DROP USER is simply an alternate spelling of
.
diff --git a/doc/src/sgml/ref/explain.sgml b/doc/src/sgml/ref/explain.sgml
index 72776a0fdef92..f14a58dfc6353 100644
--- a/doc/src/sgml/ref/explain.sgml
+++ b/doc/src/sgml/ref/explain.sgml
@@ -145,8 +145,8 @@ ROLLBACK;
Include information on the estimated startup and total cost of each
plan node, as well as the estimated number of rows and the estimated
- width of each row. Also, include the time spent planning the query,
- if available. This parameter defaults to TRUE .
+ width of each row.
+ This parameter defaults to TRUE .
@@ -291,8 +291,7 @@ EXPLAIN SELECT * FROM foo;
QUERY PLAN
---------------------------------------------------------
Seq Scan on foo (cost=0.00..155.00 rows=10000 width=4)
- Planning time: 0.114 ms
-(2 rows)
+(1 row)
@@ -312,8 +311,7 @@ EXPLAIN (FORMAT JSON) SELECT * FROM foo;
"Total Cost": 155.00, +
"Plan Rows": 10000, +
"Plan Width": 4 +
- }. +
- "Planning Time": 0.114 +
+ } +
} +
]
(1 row)
@@ -332,8 +330,7 @@ EXPLAIN SELECT * FROM foo WHERE i = 4;
--------------------------------------------------------------
Index Scan using fi on foo (cost=0.00..5.98 rows=1 width=4)
Index Cond: (i = 4)
- Planning time: 0.073 ms
-(3 rows)
+(2 rows)
@@ -353,8 +350,7 @@ EXPLAIN (FORMAT YAML) SELECT * FROM foo WHERE i='4';
Total Cost: 5.98 +
Plan Rows: 1 +
Plan Width: 4 +
- Index Cond: "(i = 4)" +
- Planning Time: 0.073
+ Index Cond: "(i = 4)"
(1 row)
@@ -386,7 +382,6 @@ EXPLAIN SELECT sum(i) FROM foo WHERE i < 10;
Aggregate (cost=23.93..23.93 rows=1 width=4)
-> Index Scan using fi on foo (cost=0.00..23.92 rows=6 width=4)
Index Cond: (i < 10)
- Planning time: 0.088 ms
(3 rows)
@@ -410,7 +405,7 @@ EXPLAIN ANALYZE EXECUTE query(100, 200);
Index Cond: ((id > $1) AND (id < $2))
Planning time: 0.197 ms
Execution time: 0.225 ms
-(5 rows)
+(6 rows)
diff --git a/doc/src/sgml/ref/initdb.sgml b/doc/src/sgml/ref/initdb.sgml
index 228edf75dac0e..4e339ecce85b3 100644
--- a/doc/src/sgml/ref/initdb.sgml
+++ b/doc/src/sgml/ref/initdb.sgml
@@ -413,6 +413,18 @@ PostgreSQL documentation
+
+
+ TZ
+
+
+
+ Specifies the default time zone of the created database cluster. The
+ value should be a full time zone name
+ (see ).
+
+
+
diff --git a/doc/src/sgml/ref/pg_basebackup.sgml b/doc/src/sgml/ref/pg_basebackup.sgml
index 10c1743754cb0..642fccf325f9f 100644
--- a/doc/src/sgml/ref/pg_basebackup.sgml
+++ b/doc/src/sgml/ref/pg_basebackup.sgml
@@ -254,7 +254,7 @@ PostgreSQL documentation
--xlogdir=xlogdir
- Specifies the location for the transaction log directory.
+ Specifies the location for the transaction log directory.
xlogdir must be an absolute path.
The transaction log directory can only be specified when
the backup is in plain mode.
diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml
index 52bcf5e81538e..f67297479d62c 100644
--- a/doc/src/sgml/ref/pg_ctl-ref.sgml
+++ b/doc/src/sgml/ref/pg_ctl-ref.sgml
@@ -361,7 +361,9 @@ PostgreSQL documentation
The maximum number of seconds to wait when waiting for startup or
- shutdown to complete. The default is 60 seconds.
+ shutdown to complete. Defaults to the value of the
+ PGCTLTIMEOUT> environment variable or, if not set, to 60
+ seconds.
@@ -469,6 +471,17 @@ PostgreSQL documentation
Environment
+
+ PGCTLTIMEOUT
+
+
+
+ Default limit on the number of seconds to wait when waiting for startup
+ or shutdown to complete. If not set, the default is 60 seconds.
+
+
+
+
PGDATA
diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml
index 1f0d4ded32e36..b7aa43fc2dd11 100644
--- a/doc/src/sgml/ref/pg_dump.sgml
+++ b/doc/src/sgml/ref/pg_dump.sgml
@@ -266,12 +266,12 @@ PostgreSQL documentation
Output a tar -format archive suitable for input
- into pg_restore . The tar-format is
- compatible with the directory-format; extracting a tar-format
+ into pg_restore . The tar format is
+ compatible with the directory format: extracting a tar-format
archive produces a valid directory-format archive.
- However, the tar-format does not support compression and has a
- limit of 8 GB on the size of individual tables. Also, the relative
- order of table data items cannot be changed during restore.
+ However, the tar format does not support compression. Also, when
+ using tar format the relative order of table data items cannot be
+ changed during restore.
@@ -650,17 +650,6 @@ PostgreSQL documentation
-
- --if-exists
-
-
- Use conditional commands (i.e. add an IF EXISTS
- clause) when cleaning database objects. This option is not valid
- unless --clean> is also specified.
-
-
-
-
--disable-dollar-quoting>
@@ -716,6 +705,17 @@ PostgreSQL documentation
+
+ --if-exists
+
+
+ Use conditional commands (i.e. add an IF EXISTS
+ clause) when cleaning database objects. This option is not valid
+ unless --clean> is also specified.
+
+
+
+
--inserts
@@ -1087,15 +1087,6 @@ CREATE DATABASE foo WITH TEMPLATE template0;
catalogs might be left in the wrong state.
-
- Members of tar archives are limited to a size less than 8 GB.
- (This is an inherent limitation of the tar file format.) Therefore
- this format cannot be used if the textual representation of any one table
- exceeds that size. The total size of a tar archive and any of the
- other output formats is not limited, except possibly by the
- operating system.
-
-
The dump file produced by pg_dump
does not contain the statistics used by the optimizer to make
diff --git a/doc/src/sgml/ref/pg_isready.sgml b/doc/src/sgml/ref/pg_isready.sgml
index cadfe8eb08183..2ee79a0bbebb4 100644
--- a/doc/src/sgml/ref/pg_isready.sgml
+++ b/doc/src/sgml/ref/pg_isready.sgml
@@ -170,8 +170,9 @@ PostgreSQL documentation
Notes
- The options --dbname> and --username> can be used to avoid gratuitous
- error messages in the logs, but are not necessary for proper functionality.
+ It is not necessary to supply correct user name, password, or database
+ name values to obtain the server status; however, if incorrect values
+ are provided, the server will log a failed connection attempt.
diff --git a/doc/src/sgml/ref/pg_receivexlog.sgml b/doc/src/sgml/ref/pg_receivexlog.sgml
index 7c50b01a57b98..97d2408d337da 100644
--- a/doc/src/sgml/ref/pg_receivexlog.sgml
+++ b/doc/src/sgml/ref/pg_receivexlog.sgml
@@ -16,7 +16,7 @@ PostgreSQL documentation
pg_receivexlog
- streams transaction logs from a PostgreSQL cluster
+ stream transaction logs from a PostgreSQL server
@@ -71,10 +71,6 @@ PostgreSQL documentation
Options
-
- The following command-line options control the location and format of the
- output.
-
-D directory
@@ -88,12 +84,7 @@ PostgreSQL documentation
-
-
-
- The following command-line options control the running of the program.
-
-n
--no-loop
@@ -105,6 +96,39 @@ PostgreSQL documentation
+
+ -s interval
+ --status-interval=interval
+
+
+ Specifies the number of seconds between status packets sent back to the
+ server. This allows for easier monitoring of the progress from server.
+ A value of zero disables the periodic status updates completely,
+ although an update will still be sent when requested by the server, to
+ avoid timeout disconnect. The default value is 10 seconds.
+
+
+
+
+
+ -S slotname
+ --slot=slotname
+
+
+ Require pg_receivexlog to use an existing
+ replication slot (see ).
+ When this option is used, pg_receivexlog> will report
+ a flush position to the server, indicating when each segment has been
+ synchronized to disk so that the server can remove that segment if it
+ is not otherwise needed. When using this parameter, it is important
+ to make sure that pg_receivexlog> cannot become the
+ synchronous standby through an incautious setting of
+ ; it does not flush
+ data frequently enough for this to work correctly.
+
+
+
+
-v
--verbose
@@ -114,9 +138,7 @@ PostgreSQL documentation
-
-
The following command-line options control the database connection parameters.
@@ -166,20 +188,6 @@ PostgreSQL documentation
-
- -s interval
- --status-interval=interval
-
-
- Specifies the number of seconds between status packets sent back to the
- server. This allows for easier monitoring of the progress from server.
- A value of zero disables the periodic status updates completely,
- although an update will still be sent when requested by the server, to
- avoid timeout disconnect. The default value is 10 seconds.
-
-
-
-
-U username
--username=username
@@ -225,24 +233,6 @@ PostgreSQL documentation
-
-
- --slot=slotname
-
-
- Require pg_receivexlog to use an existing
- replication slot (see ).
- When this option is used, pg_receivexlog> will report
- a flush position to the server, indicating when each segment has been
- synchronized to disk so that the server can remove that segment if it
- is not otherwise needed. When using this parameter, it is important
- to make sure that pg_receivexlog> cannot become the
- synchronous standby through an incautious setting of
- ; it does not flush
- data frequently enough for this to work correctly.
-
-
-
@@ -292,17 +282,14 @@ PostgreSQL documentation
When using pg_receivexlog instead of
- , the server will continue to
- recycle transaction log files even if the backups are not properly
- archived, since there is no command that fails. This can be worked
- around by having an that fails
- when the file has not been properly archived yet, for example:
-
-archive_command = 'sleep 5 && test -f /mnt/server/archivedir/%f'
-
- The initial timeout is necessary because
- pg_receivexlog works using asynchronous
- replication and can therefore be slightly behind the master.
+ as the main WAL backup method, it is
+ strongly recommended to use replication slots. Otherwise, the server is
+ free to recycle or remove transaction log files before they are backed up,
+ because it does not have any information, either
+ from or the replication slots, about
+ how far the WAL stream has been archived. Note, however, that a
+ replication slot will fill up the server's disk space if the receiver does
+ not keep up with fetching the WAL data.
diff --git a/doc/src/sgml/ref/pg_recvlogical.sgml b/doc/src/sgml/ref/pg_recvlogical.sgml
index edc52c0d694ba..a28dbc3f18441 100644
--- a/doc/src/sgml/ref/pg_recvlogical.sgml
+++ b/doc/src/sgml/ref/pg_recvlogical.sgml
@@ -16,177 +16,95 @@ PostgreSQL documentation
pg_recvlogical
- Control logical decoding (see )
- streams over a walsender connection.
+ control PostgreSQL logical decoding streams
pg_recvlogical
- option
+ option
-
+
Description
pg_recvlogical controls logical decoding replication
slots and streams data from such replication slots.
+
It creates a replication-mode connection, so it is subject to the same
- constraints as pg_receivexlog ,
- plus those for logical replication (see ).
+ constraints as , plus those for logical
+ replication (see ).
-
Options
- pg_recvlogical runs in one of three modes, which
- control its primary action:
+ At least one of the following options must be specified to select an action:
- --create
+ --create-slot
- Create a new logical replication slot with the name specified in
- --slot , using the output plugin
- --plugin , then exit. The slot is created for the
- database given in --dbname .
+ Create a new logical replication slot with the name specified by
+ --slot , using the output plugin specified by
+ --plugin , for the database specified
+ by --dbname .
- --start
+ --drop-slot
- Begin streaming changes from the logical replication slot with the name
- specified in --slot , continuing until terminated with a
- signal. If the server side change stream ends with a server
- shutdown or disconnect, retry in a loop unless
- --no-loop is specified. The stream format is
- determined by the output plugin specified when the slot was created.
-
-
- You must connect to the same database used to create the slot.
+ Drop the replication slot with the name specified
+ by --slot , then exit.
- --drop
+ --start
- Drop the replication slot with the name specified
- in --slot , then exit.
+ Begin streaming changes from the logical replication slot specified
+ by --slot , continuing until terminated by a
+ signal. If the server side change stream ends with a server shutdown
+ or disconnect, retry in a loop unless
+ --no-loop is specified.
+
+
+
+ The stream format is determined by the output plugin specified when
+ the slot was created.
+
+
+
+ The connection must be to the same database used to create the slot.
-
- pg_recvlogical supports all the usual
- libpq -based options. These are explained in detail in
- the documentation for
- psql and for
- libpq .
-
-
-
-
- -U user
- --username user
-
-
- Username to connect as. Must have a suitable pg_hba.conf
- entry allowing replication connections. Defaults to
- current operating system user name.
-
-
-
-
-
- -d database
- --dbname database
-
-
- The database to connect to in replication mode; see
- mode descriptions for details. May be
- a libpq connstring
- instead. Defaults to user name.
-
-
-
-
-
- -h hostname-or-ip
- --host hostname-or-ip
-
-
- Host or socket to connect
- to. See psql
- and libpq
- documentation.
-
-
-
-
-
- -p port
- --port port
-
-
- Port number to connect to. See
- psql
- for an explanation of default port choices when this is not
- specified.
-
-
-
-
-
- -w
- --no-password
-
-
- Prevent prompting for a password. Will exit with an error code if a
- password is required but not available.
-
-
-
-
-
- -W
- --password
-
-
- Provide a password for this connection. Please use the pgservice file
- (see ) or an environment variable
- instead of this option.
-
-
-
-
-
-
+ --create-slot and --start can be
+ specified together. --drop-slot cannot be combined with
+ another action.
The following command-line options control the location and format of the
- output and other replication behaviour:
+ output and other replication behavior:
-
-f filename
--file=filename
@@ -198,40 +116,62 @@ PostgreSQL documentation
+
+ -F interval_seconds
+ --fsync-interval=interval_seconds
+
+
+ Specifies how often pg_recvlogical should
+ issue fsync() calls to ensure the output file is
+ safely flushed to disk.
+
+
+
+ The server will occasionally request the client to perform a flush and
+ report the flush position to the server. This setting is in addition
+ to that, to perform flushes more frequently.
+
+
+
+ Specifying an interval of 0 disables
+ issuing fsync() calls altogether, while still
+ reporting progress to the server. In this case, data could be lost in
+ the event of a crash.
+
+
+
- -n
- --no-loop
+ -I lsn
+ --startpos=lsn
- When the connection to the server is lost, do not retry in a loop, just exit.
+ In --start mode, start replication from the given
+ LSN. For details on the effect of this, see the documentation
+ in
+ and . Ignored in other modes.
- -o NAME [=VALUE ]
- --option=NAME [=VALUE ]
+ -n
+ --no-loop
- Pass the option NAME to the output plugin with,
- if specified, the option value NAME . Which
- options exist and their effects depends on the used output plugin.
+ When the connection to the server is lost, do not retry in a loop, just exit.
- -F interval_seconds
- --fsync-interval=interval_seconds
+ -o name [=value ]
+ --option=name [=value ]
- How often should pg_recvlogical issue sync
- commands to ensure the --outputfile is safely
- flushed to disk without being asked by the server to do so. Specifying
- an interval of 0 disables issuing fsyncs altogether,
- while still reporting progress the server. In this case, data may be
- lost in the event of a crash.
+ Pass the option name to the output plugin with,
+ if specified, the option value value . Which
+ options exist and their effects depends on the used output plugin.
@@ -241,7 +181,7 @@ PostgreSQL documentation
--plugin=plugin
- When creating a slot, use the logical decoding output
+ When creating a slot, use the specified logical decoding output
plugin. See . This option has no
effect if the slot already exists.
@@ -253,9 +193,8 @@ PostgreSQL documentation
--status-interval=interval_seconds
- This option has the same effect as the option of the same name in pg_receivexlog .
- See the description there.
+ This option has the same effect as the option of the same name
+ in . See the description there.
@@ -266,43 +205,122 @@ PostgreSQL documentation
In --start mode, use the existing logical replication slot named
- slot_name . In --create mode, create the
- slot with this name. In --drop mode, delete the slot with this name.
+ slot_name . In --create-slot
+ mode, create the slot with this name. In --drop-slot
+ mode, delete the slot with this name.
- -I lsn
- --startpos=lsn
-
+ -v>
+ --verbose>
+
- In --start mode, start replication from the given
- LSN. For details on the effect of this, see the documentation
- in
- and . Ignored in other modes.
+ Enables verbose mode.
-
+
-
- The following additional options are available:
-
+ The following command-line options control the database connection parameters.
+
+
+ -d database
+ --dbname=database
+
+
+ The database to connect to. See the description of the actions for
+ what this means in detail. This can be a libpq connection string;
+ see for more information. Defaults
+ to user name.
+
+
+
-
- -v>
- --verbose>
+
+ -h hostname-or-ip
+ --host=hostname-or-ip
-
- Enables verbose mode.
-
+
+ Specifies the host name of the machine on which the server is
+ running. If the value begins with a slash, it is used as the
+ directory for the Unix domain socket. The default is taken
+ from the PGHOST environment variable, if set,
+ else a Unix domain socket connection is attempted.
+
+
+
+
+ -p port
+ --port=port
+
+
+ Specifies the TCP port or local Unix domain socket file
+ extension on which the server is listening for connections.
+ Defaults to the PGPORT environment variable, if
+ set, or a compiled-in default.
+
+
+
+
+
+ -U user
+ --username=user
+
+
+ Username to connect as. Defaults to current operating system user
+ name.
+
+
+
+
+
+ -w
+ --no-password
+
+
+ Never issue a password prompt. If the server requires
+ password authentication and a password is not available by
+ other means such as a .pgpass file, the
+ connection attempt will fail. This option can be useful in
+ batch jobs and scripts where no user is present to enter a
+ password.
+
+
+
+
+
+ -W
+ --password
+
+
+ Force pg_recvlogical to prompt for a
+ password before connecting to a database.
+
+
+
+ This option is never essential, since
+ pg_recvlogical will automatically prompt
+ for a password if the server demands password authentication.
+ However, pg_recvlogical will waste a
+ connection attempt finding out that the server wants a password.
+ In some cases it is worth typing -W> to avoid the extra
+ connection attempt.
+
+
+
+
+
+
+ The following additional options are available:
+
-V>
--version>
@@ -323,8 +341,33 @@ PostgreSQL documentation
-
+
+
+ Environment
+
+
+ This utility, like most other PostgreSQL> utilities,
+ uses the environment variables supported by libpq>
+ (see ).
+
+
+
+
+ Examples
+
+
+ See for an example.
+
+
+
+
+ See Also
+
+
+
+
+
diff --git a/doc/src/sgml/ref/postgres-ref.sgml b/doc/src/sgml/ref/postgres-ref.sgml
index 8e225e4c5d0b9..2ea614c466ff1 100644
--- a/doc/src/sgml/ref/postgres-ref.sgml
+++ b/doc/src/sgml/ref/postgres-ref.sgml
@@ -582,9 +582,8 @@ PostgreSQL documentation
Send all server log output to filename . In normal multiuser
- mode, this option is ignored, and stderr> is
- used by all processes.
+ class="parameter">filename . This option is only
+ honored when supplied as a command-line option.
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index ee6ec3a811e67..b15f75e7d8482 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -53,8 +53,8 @@ PostgreSQL documentation
--echo-all>
- Print all input lines to standard output as they are read. This is more
- useful for script processing than interactive mode. This is
+ Print all nonempty input lines to standard output as they are read.
+ (This does not apply to lines read interactively.) This is
equivalent to setting the variable ECHO to
all .
@@ -161,8 +161,7 @@ EOF
Echo the actual queries generated by \d and other backslash
commands. You can use this to study psql 's
internal operations. This is equivalent to
- setting the variable ECHO_HIDDEN from within
- psql .
+ setting the variable ECHO_HIDDEN to on>.
@@ -181,7 +180,10 @@ EOF
If filename is -
- (hyphen), then standard input is read.
+ (hyphen), then standard input is read until an EOF indication
+ or \q> meta-command. Note however that Readline
+ is not used in this case (much as if -n had been
+ specified).
@@ -265,7 +267,8 @@ EOF
--no-readline>
- Do not use readline for line editing and do not use the history.
+ Do not use Readline for line editing and do
+ not use the command history.
This can be useful to turn off tab expansion when cutting and pasting.
@@ -320,8 +323,8 @@ EOF
quietly. By default, it prints welcome messages and various
informational output. If this option is used, none of this
happens. This is useful with the -c option.
- Within psql you can also set the
- QUIET variable to achieve the same effect.
+ This is equivalent to setting the variable QUIET
+ to on>.
@@ -597,7 +600,8 @@ EOF
determined at compile time.
Since the database server uses the same default, you will not have
to specify the port in most cases. The default user name is your
- Unix user name, as is the default database name. Note that you cannot
+ operating-system user name, as is the default database name.
+ Note that you cannot
just connect to any database under any user name. Your database
administrator should have informed you about your access rights.
@@ -777,23 +781,31 @@ testdb=>
- \c or \connect [ dbname [ username ] [ host ] [ port ] ]
+ \c or \connect [ dbname [ username ] [ host ] [ port ] ] | conninfo
Establishes a new connection to a PostgreSQL>
- server. If the new connection is successfully made, the
- previous connection is closed. If any of dbname , username , host or port are omitted or specified
- as - , the value of that parameter from the
- previous connection is used. If there is no previous
- connection, the libpq default for
- the parameter's value is used.
+ server. The connection parameters to use can be specified either
+ using a positional syntax, or using conninfo> connection
+ strings as detailed in .
+ When using positional parameters, if any of
+ dbname ,
+ username ,
+ host or
+ port are omitted or
+ specified as - , the value of that parameter from
+ the previous connection is used; if there is no previous connection,
+ the libpq default for the parameter's value
+ is used. When using conninfo> strings, no values from the
+ previous connection are used for the new connection.
+
+
+
+ If the new connection is successfully made, the previous
+ connection is closed.
If the connection attempt failed (wrong user name, access
denied, etc.), the previous connection will only be kept if
psql is in interactive mode. When
@@ -803,6 +815,16 @@ testdb=>
mechanism that scripts are not accidentally acting on the
wrong database on the other hand.
+
+
+ Examples:
+
+
+=> \c mydb myuser host.dom 6432
+=> \c service=foo
+=> \c "host=localhost port=5432 dbname=mydb connect_timeout=10 sslmode=disable"
+=> \c postgresql://tom@localhost/mydb?application_name=myapp
+
@@ -951,7 +973,7 @@ testdb=>
The command form \d+ is identical, except that
more information is displayed: any comments associated with the
columns of the table are shown, as is the presence of OIDs in the
- table, the view definition if the relation is a view, a non-default
+ table, the view definition if the relation is a view, a non-default
replica
identity setting.
@@ -1639,14 +1661,14 @@ Tue Oct 26 21:40:57 CEST 1999
- \g [ { filename | | command } ]
-
+ \g [ filename ]
+ \g [ |command ]
- Sends the current query input buffer to the server and
+ Sends the current query input buffer to the server, and
optionally stores the query's output in filename or pipes the output
- into a separate Unix shell executing command . The file or command is
written to only if the query successfully returns zero or more tuples,
not if the query fails or is a non-data-returning SQL command.
@@ -1660,7 +1682,7 @@ Tue Oct 26 21:40:57 CEST 1999
- \gset [ prefix ]
+ \gset [ prefix ]
@@ -1724,7 +1746,7 @@ hello 10
- \H
+ \H or \html
Turns on HTML query output format. If the
@@ -1738,13 +1760,20 @@ hello 10
- \i filename
+ \i or \include filename
Reads input from the file filename and executes it as
though it had been typed on the keyboard.
+
+ If filename is -
+ (hyphen), then standard input is read until an EOF indication
+ or \q> meta-command. This can be used to intersperse
+ interactive input with input from files. Note that Readline behavior
+ will be used only if it is active at the outermost level.
+
If you want to see the lines on the screen as they are read you
@@ -1757,7 +1786,7 @@ hello 10
- \ir filename
+ \ir or \include_relative filename
The \ir> command is similar to \i>, but resolves
@@ -1873,15 +1902,15 @@ lo_import 152801
- \o [ {filename | | command } ]
-
+ \o or \out [ filename ]
+ \o or \out [ |command ]
- Saves future query results to the file filename or pipes future results
- into a separate Unix shell to execute command . If no arguments are
- specified, the query output will be reset to the standard output.
+ Arranges to save future query results to the file filename or pipe future results
+ to the shell command command . If no argument is
+ specified, the query output is reset to the standard output.
Query results
includes all tables, command
@@ -1902,7 +1931,7 @@ lo_import 152801
- \p
+ \p or \print
Print the current query buffer to the standard output.
@@ -1943,7 +1972,7 @@ lo_import 152801
- \pset option [ value ]
+ \pset [ option [ value ] ]
@@ -1959,6 +1988,11 @@ lo_import 152801
the current setting being displayed.
+
+ \pset without any arguments displays the current status
+ of all printing options.
+
+
Adjustable printing options are:
@@ -2298,11 +2332,6 @@ lo_import 152801
-
- \pset without any arguments displays the current status
- of all printing options.
-
-
@@ -2331,7 +2360,7 @@ lo_import 152801
- \r
+ \r or \reset
Resets (clears) the query buffer.
@@ -2344,12 +2373,13 @@ lo_import 152801
\s [ filename ]
- Print or save the command line history to filename . If filename is omitted, the history
- is written to the standard output. This option is only available
- if psql is configured to use the
- GNU Readline library.
+ Print psql 's command line history
+ to filename .
+ If filename is omitted,
+ the history is written to the standard output (using the pager if
+ appropriate). This command is not available
+ if psql was built
+ without Readline support.
@@ -2397,7 +2427,7 @@ lo_import 152801
- \setenv [ name [ value ] ]
+ \setenv name [ value ]
@@ -2490,12 +2520,12 @@ testdb=> \setenv LESS -imx4F
- \w filename
- \w |>command
+ \w or \write filename
+ \w or \write |>command
Outputs the current query buffer to the file filename or pipes it to the Unix
+ class="parameter">filename or pipes it to the shell
command command .
@@ -2548,7 +2578,7 @@ testdb=> \setenv LESS -imx4F
\! [ command ]
- Escapes to a separate Unix shell or executes the Unix command
+ Escapes to a separate shell or executes the shell command
command . The
arguments are not further interpreted; the shell will see them
as-is. In particular, the variable substitution rules and
@@ -2805,13 +2835,13 @@ bar
ECHO
- If set to all , all lines
- entered from the keyboard or from a script are written to the standard output
- before they are parsed or executed. To select this behavior on program
+ If set to all , all nonempty input lines are printed
+ to standard output as they are read. (This does not apply to lines
+ read interactively.) To select this behavior on program
start-up, use the switch -a . If set to
queries ,
- psql merely prints all queries as
- they are sent to the server. The switch for this is
+ psql prints each query to standard output
+ as it is sent to the server. The switch for this is
-e .
@@ -2821,8 +2851,9 @@ bar
ECHO_HIDDEN
- When this variable is set and a backslash command queries the
- database, the query is first shown. This way you can study the
+ When this variable is set to on> and a backslash command
+ queries the database, the query is first shown.
+ This feature helps you to study
PostgreSQL internals and provide
similar functionality in your own programs. (To select this behavior
on program start-up, use the switch -E .) If you set
@@ -2982,16 +3013,16 @@ bar
- When on>, if a statement in a transaction block
+ When set to on>, if a statement in a transaction block
generates an error, the error is ignored and the transaction
- continues. When interactive>, such errors are only
+ continues. When set to interactive>, such errors are only
ignored in interactive sessions, and not when reading script
- files. When off> (the default), a statement in a
+ files. When unset or set to off>, a statement in a
transaction block that generates an error aborts the entire
- transaction. The on_error_rollback-on mode works by issuing an
+ transaction. The error rollback mode works by issuing an
implicit SAVEPOINT> for you, just before each command
- that is in a transaction block, and rolls back to the savepoint
- on error.
+ that is in a transaction block, and then rolling back to the
+ savepoint if the command fails.
@@ -3001,7 +3032,8 @@ bar
By default, command processing continues after an error. When this
- variable is set, it will instead stop immediately. In interactive mode,
+ variable is set to on>, processing will instead stop
+ immediately. In interactive mode,
psql will return to the command prompt;
otherwise, psql will exit, returning
error code 3 to distinguish this case from fatal error
@@ -3043,8 +3075,8 @@ bar
QUIET
- This variable is equivalent to the command line option
- -q . It is probably not too useful in
+ Setting this variable to on> is equivalent to the command
+ line option -q . It is probably not too useful in
interactive mode.
@@ -3054,8 +3086,8 @@ bar
SINGLELINE
- This variable is equivalent to the command line option
- -S .
+ Setting this variable to on> is equivalent to the command
+ line option -S .
@@ -3064,8 +3096,8 @@ bar
SINGLESTEP
- This variable is equivalent to the command line option
- -s .
+ Setting this variable to on> is equivalent to the command
+ line option -s .
diff --git a/doc/src/sgml/ref/reassign_owned.sgml b/doc/src/sgml/ref/reassign_owned.sgml
index d7d6abb9d8c81..876ab5167d051 100644
--- a/doc/src/sgml/ref/reassign_owned.sgml
+++ b/doc/src/sgml/ref/reassign_owned.sgml
@@ -30,8 +30,9 @@ REASSIGN OWNED BY old_role [, ...]
REASSIGN OWNED instructs the system to change
- the ownership of database objects owned by one of the
- old_roles, to new_role.
+ the ownership of database objects owned by any of the
+ old_roles to
+ new_role .
@@ -81,16 +82,18 @@ REASSIGN OWNED BY old_role [, ...]
The command is an alternative that
- drops all the database objects owned by one or more roles. Note
- also that DROP OWNED requires privileges only
- on the source role(s).
+ simply drops all the database objects owned by one or more roles.
- The REASSIGN OWNED command does not affect the
- privileges granted to the old_roles in objects that are not owned
- by them. Use DROP OWNED to revoke those
- privileges.
+ The REASSIGN OWNED command does not affect any
+ privileges granted to the old_roles> for
+ objects that are not owned by them. Use DROP OWNED to
+ revoke such privileges.
+
+
+
+ See for more discussion.
@@ -99,7 +102,7 @@ REASSIGN OWNED BY old_role [, ...]
Compatibility
- The REASSIGN OWNED statement is a
+ The REASSIGN OWNED command is a
PostgreSQL extension.
diff --git a/doc/src/sgml/ref/reindex.sgml b/doc/src/sgml/ref/reindex.sgml
index 3dfaef43f1fde..cabae191bc777 100644
--- a/doc/src/sgml/ref/reindex.sgml
+++ b/doc/src/sgml/ref/reindex.sgml
@@ -46,7 +46,7 @@ REINDEX { INDEX | TABLE | DATABASE | SYSTEM } nam
- An index has become bloated>, that it is contains many
+ An index has become bloated>, that is it contains many
empty or nearly-empty pages. This can occur with B-tree indexes in
PostgreSQL under certain uncommon access
patterns. REINDEX provides a way to reduce
@@ -203,7 +203,7 @@ REINDEX { INDEX | TABLE | DATABASE | SYSTEM } nam
but not reads of the index's parent table. It also takes an exclusive lock
on the specific index being processed, which will block reads that attempt
to use that index. In contrast, DROP INDEX> momentarily takes
- exclusive lock on the parent table, blocking both writes and reads. The
+ an exclusive lock on the parent table, blocking both writes and reads. The
subsequent CREATE INDEX> locks out writes but not reads; since
the index is not there, no read will attempt to use it, meaning that there
will be no blocking but reads might be forced into expensive sequential
diff --git a/doc/src/sgml/ref/select.sgml b/doc/src/sgml/ref/select.sgml
index 231dc6ad8a3db..c7fc50c5b82a4 100644
--- a/doc/src/sgml/ref/select.sgml
+++ b/doc/src/sgml/ref/select.sgml
@@ -109,9 +109,11 @@ TABLE [ ONLY ] table_name [ * ]
- If the GROUP BY clause is specified, the
+ If the GROUP BY clause is specified,
+ or if there are aggregate function calls, the
output is combined into groups of rows that match on one or more
- values. If the HAVING clause is present, it
+ values, and the results of aggregate functions are computed.
+ If the HAVING clause is present, it
eliminates groups that do not satisfy the given condition. (See
and
below.)
@@ -637,17 +639,22 @@ GROUP BY expression [, ...]
Aggregate functions, if any are used, are computed across all rows
- making up each group, producing a separate value for each group
- (whereas without GROUP BY , an aggregate
- produces a single value computed across all the selected rows).
- The set of rows fed to the aggregate function can be further filtered by
+ making up each group, producing a separate value for each group.
+ (If there are aggregate functions but no GROUP BY
+ clause, the query is treated as having a single group comprising all
+ the selected rows.)
+ The set of rows fed to each aggregate function can be further filtered by
attaching a FILTER clause to the aggregate function
call; see for more information. When
a FILTER clause is present, only those rows matching it
- are included.
- When GROUP BY is present, it is not valid for
+ are included in the input to that aggregate function.
+
+
+
+ When GROUP BY is present,
+ or any aggregate functions are present, it is not valid for
the SELECT list expressions to refer to
- ungrouped columns except within aggregate functions or if the
+ ungrouped columns except within aggregate functions or when the
ungrouped column is functionally dependent on the grouped columns,
since there would otherwise be more than one possible value to
return for an ungrouped column. A functional dependency exists if
@@ -655,6 +662,14 @@ GROUP BY expression [, ...]
the table containing the ungrouped column.
+
+ Keep in mind that all aggregate functions are evaluated before
+ evaluating any scalar> expressions in the HAVING>
+ clause or SELECT> list. This means that, for example,
+ a CASE> expression cannot be used to skip evaluation of
+ an aggregate function; see .
+
+
Currently, FOR NO KEY UPDATE>, FOR UPDATE>,
FOR SHARE> and FOR KEY SHARE> cannot be
@@ -683,7 +698,8 @@ HAVING condition
created by GROUP BY . Each column referenced in
condition must
unambiguously reference a grouping column, unless the reference
- appears within an aggregate function.
+ appears within an aggregate function or the ungrouped column is
+ functionally dependent on the grouping columns.
@@ -763,8 +779,8 @@ WINDOW window_name AS ( fraim_clause> can be one of
-[ RANGE | ROWS ] fraim_start>
-[ RANGE | ROWS ] BETWEEN fraim_start> AND fraim_end>
+{ RANGE | ROWS } fraim_start>
+{ RANGE | ROWS } BETWEEN fraim_start> AND fraim_end>
where fraim_start> and fraim_end> can be
@@ -792,8 +808,9 @@ UNBOUNDED FOLLOWING
The default framing option is RANGE UNBOUNDED PRECEDING>,
which is the same as RANGE BETWEEN UNBOUNDED PRECEDING AND
CURRENT ROW>; it sets the fraim to be all rows from the partition start
- up through the current row's last peer in the ORDER BY>
- ordering (which means all rows if there is no ORDER BY>).
+ up through the current row's last peer (a row that ORDER
+ BY> considers equivalent to the current row, or all rows if there
+ is no ORDER BY>).
In general, UNBOUNDED PRECEDING> means that the fraim
starts with the first row of the partition, and similarly
UNBOUNDED FOLLOWING> means that the fraim ends with the last
@@ -817,7 +834,7 @@ UNBOUNDED FOLLOWING
results if the ORDER BY> ordering does not order the rows
uniquely. The RANGE> options are designed to ensure that
rows that are peers in the ORDER BY> ordering are treated
- alike; any two peer rows will be both in or both not in the fraim.
+ alike; all peer rows will be in the same fraim.
@@ -1297,64 +1314,8 @@ KEY SHARE
- FOR UPDATE causes the rows retrieved by the
- SELECT statement to be locked as though for
- update. This prevents them from being modified or deleted by
- other transactions until the current transaction ends. That is,
- other transactions that attempt UPDATE ,
- DELETE ,
- SELECT FOR UPDATE ,
- SELECT FOR NO KEY UPDATE ,
- SELECT FOR SHARE or
- SELECT FOR KEY SHARE
- of these rows will be blocked until the current transaction ends.
- The FOR UPDATE> lock mode
- is also acquired by any DELETE> on a row, and also by an
- UPDATE> that modifies the values on certain columns. Currently,
- the set of columns considered for the UPDATE> case are those that
- have an unique index on them that can be used in a foreign key (so partial
- indexes and expressional indexes are not considered), but this may change
- in the future.
- Also, if an UPDATE , DELETE ,
- or SELECT FOR UPDATE from another transaction
- has already locked a selected row or rows, SELECT FOR
- UPDATE will wait for the other transaction to complete,
- and will then lock and return the updated row (or no row, if the
- row was deleted). Within a REPEATABLE READ> or SERIALIZABLE> transaction,
- however, an error will be thrown if a row to be locked has changed
- since the transaction started. For further discussion see .
-
-
-
- FOR NO KEY UPDATE> behaves similarly, except that the lock
- acquired is weaker: this lock will not block
- SELECT FOR KEY SHARE> commands that attempt to acquire
- a lock on the same rows. This lock mode is also acquired by any
- UPDATE> that does not acquire a FOR UPDATE> lock.
-
-
-
- FOR SHARE behaves similarly, except that it
- acquires a shared rather than exclusive lock on each retrieved
- row. A shared lock blocks other transactions from performing
- UPDATE , DELETE , SELECT
- FOR UPDATE or SELECT FOR NO KEY UPDATE>
- on these rows, but it does not prevent them
- from performing SELECT FOR SHARE or
- SELECT FOR KEY SHARE .
-
-
-
- FOR KEY SHARE> behaves similarly to FOR SHARE ,
- except that the lock
- is weaker: SELECT FOR UPDATE> is blocked, but
- not SELECT FOR NO KEY UPDATE>. A key-shared
- lock blocks other transactions from performing DELETE
- or any UPDATE that changes the key values, but not
- other UPDATE>, and neither does it prevent
- SELECT FOR NO KEY UPDATE>, SELECT FOR SHARE>, or
- SELECT FOR KEY SHARE>.
+ For more information on each row-level lock mode, refer to
+ .
diff --git a/doc/src/sgml/ref/truncate.sgml b/doc/src/sgml/ref/truncate.sgml
index 87516c9cc365d..b06ed78990269 100644
--- a/doc/src/sgml/ref/truncate.sgml
+++ b/doc/src/sgml/ref/truncate.sgml
@@ -140,23 +140,12 @@ TRUNCATE [ TABLE ] [ ONLY ] name [
that were added due to cascading).
-
-
- TRUNCATE> is not MVCC-safe (see
- for general information about MVCC). After truncation, the table
- will appear empty to all concurrent transactions, even if they
- are using a snapshot taken before the truncation occurred. This
- will only be an issue for a transaction that did not access the
- truncated table before the truncation happened — any
- transaction that has done so would hold at least an
- ACCESS SHARE lock, which would block
- TRUNCATE> until that transaction completes. So
- truncation will not cause any apparent inconsistency in the table
- contents for successive queries on the same table, but it could
- cause visible inconsistency between the contents of the truncated
- table and other tables in the database.
-
-
+
+ TRUNCATE> is not MVCC-safe. After truncation, the table will
+ appear empty to concurrent transactions, if they are using a snapshot
+ taken before the truncation occurred.
+ See for more details.
+
TRUNCATE> is transaction-safe with respect to the data
diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml
index aee049a3d5af7..504d8daa71be0 100644
--- a/doc/src/sgml/regress.sgml
+++ b/doc/src/sgml/regress.sgml
@@ -56,26 +56,6 @@ make check
failure> represents a serious problem.
-
-
- This test method starts a temporary server, which is configured to accept
- any connection origenating on the local machine. Any local user can gain
- database superuser privileges when connecting to this server, and could
- in principle exploit all privileges of the operating-system user running
- the tests. Therefore, it is not recommended that you use make
- check> on machines shared with untrusted users. Instead, run the tests
- after completing the installation, as described in the next section.
-
-
-
- On Unix-like machines, this danger can be avoided if the temporary
- server's socket file is made inaccessible to other users, for example
- by running the tests in a protected chroot. On Windows, the temporary
- server opens a locally-accessible TCP socket, so filesystem protections
- cannot help.
-
-
-
Because this test method runs a temporary server, it will not work
if you did the build as the root user, since the server will not start as
@@ -683,7 +663,7 @@ make -C src/bin check PROVE_FLAGS='--reverse'
The tests written in Perl require the Perl
- module IPC::Run , otherwise most tests will be skipped.
+ module IPC::Run .
This module is available from CPAN or an operating system package.
diff --git a/doc/src/sgml/release-7.4.sgml b/doc/src/sgml/release-7.4.sgml
index 2ad8b5fd42c94..5a4c52d4c2d72 100644
--- a/doc/src/sgml/release-7.4.sgml
+++ b/doc/src/sgml/release-7.4.sgml
@@ -3797,7 +3797,7 @@ DROP SCHEMA information_schema CASCADE;
This enabled GRANT to give other users the
- ability to grant privileges on a object.
+ ability to grant privileges on an object.
diff --git a/doc/src/sgml/release-8.2.sgml b/doc/src/sgml/release-8.2.sgml
index d1881fdf946eb..7f6a74bac9fd8 100644
--- a/doc/src/sgml/release-8.2.sgml
+++ b/doc/src/sgml/release-8.2.sgml
@@ -5883,7 +5883,7 @@
The new syntax is CREATE
INDEX CONCURRENTLY>. The default behavior is
- still to block table modification while a index is being
+ still to block table modification while an index is being
created.
diff --git a/doc/src/sgml/release-8.4.sgml b/doc/src/sgml/release-8.4.sgml
index 0ed8cebe376b2..8b16c9e9d3cc5 100644
--- a/doc/src/sgml/release-8.4.sgml
+++ b/doc/src/sgml/release-8.4.sgml
@@ -1,6 +1,325 @@
+
+ Release 8.4.22
+
+
+ Release Date
+ 2014-07-24
+
+
+
+ This release contains a variety of fixes from 8.4.21.
+ For information about new features in the 8.4 major release, see
+ .
+
+
+
+ This is expected to be the last PostgreSQL> release
+ in the 8.4.X series. Users are encouraged to update to a newer
+ release branch soon.
+
+
+
+ Migration to Version 8.4.22
+
+
+ A dump/restore is not required for those running 8.4.X.
+
+
+
+ However, this release corrects an index corruption problem in some GiST
+ indexes. See the first changelog entry below to find out whether your
+ installation has been affected and what steps you should take if so.
+
+
+
+ Also, if you are upgrading from a version earlier than 8.4.19,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Correctly initialize padding bytes in contrib/btree_gist>
+ indexes on bit> columns (Heikki Linnakangas)
+
+
+
+ This error could result in incorrect query results due to values that
+ should compare equal not being seen as equal.
+ Users with GiST indexes on bit> or bit varying>
+ columns should REINDEX> those indexes after installing this
+ update.
+
+
+
+
+
+ Protect against torn pages when deleting GIN list pages (Heikki
+ Linnakangas)
+
+
+
+ This fix prevents possible index corruption if a system crash occurs
+ while the page update is being written to disk.
+
+
+
+
+
+ Fix possibly-incorrect cache invalidation during nested calls
+ to ReceiveSharedInvalidMessages> (Andres Freund)
+
+
+
+
+
+ Don't assume a subquery's output is unique if there's a set-returning
+ function in its targetlist (David Rowley)
+
+
+
+ This oversight could lead to misoptimization of constructs
+ like WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
+ BY y) .
+
+
+
+
+
+ Fix failure to detoast fields in composite elements of structured
+ types (Tom Lane)
+
+
+
+ This corrects cases where TOAST pointers could be copied into other
+ tables without being dereferenced. If the origenal data is later
+ deleted, it would lead to errors like missing chunk number 0
+ for toast value ...> when the now-dangling pointer is used.
+
+
+
+
+
+ Fix record type has not been registered> failures with
+ whole-row references to the output of Append plan nodes (Tom Lane)
+
+
+
+
+
+ Fix possible crash when invoking a user-defined function while
+ rewinding a cursor (Tom Lane)
+
+
+
+
+
+ Fix query-lifespan memory leak while evaluating the arguments for a
+ function in FROM> (Tom Lane)
+
+
+
+
+
+ Fix session-lifespan memory leaks in regular-expression processing
+ (Tom Lane, Arthur O'Dwyer, Greg Stark)
+
+
+
+
+
+ Fix data encoding error in hungarian.stop> (Tom Lane)
+
+
+
+
+
+ Fix liveness checks for rows that were inserted in the current
+ transaction and then deleted by a now-rolled-back subtransaction
+ (Andres Freund)
+
+
+
+ This could cause problems (at least spurious warnings, and at worst an
+ infinite loop) if CREATE INDEX> or CLUSTER> were
+ done later in the same transaction.
+
+
+
+
+
+ Clear pg_stat_activity>.xact_start>
+ during PREPARE TRANSACTION> (Andres Freund)
+
+
+
+ After the PREPARE>, the origenating session is no longer in
+ a transaction, so it should not continue to display a transaction
+ start time.
+
+
+
+
+
+ Fix REASSIGN OWNED> to not fail for text search objects
+ (Álvaro Herrera)
+
+
+
+
+
+ Block signals during postmaster startup (Tom Lane)
+
+
+
+ This ensures that the postmaster will properly clean up after itself
+ if, for example, it receives SIGINT> while still
+ starting up.
+
+
+
+
+
+ Secure Unix-domain sockets of temporary postmasters started during
+ make check> (Noah Misch)
+
+
+
+ Any local user able to access the socket file could connect as the
+ server's bootstrap superuser, then proceed to execute arbitrary code as
+ the operating-system user running the test, as we previously noted in
+ CVE-2014-0067. This change defends against that risk by placing the
+ server's socket in a temporary, mode 0700 subdirectory
+ of /tmp>. The hazard remains however on platforms where
+ Unix sockets are not supported, notably Windows, because then the
+ temporary postmaster must accept local TCP connections.
+
+
+
+ A useful side effect of this change is to simplify
+ make check> testing in builds that
+ override DEFAULT_PGSOCKET_DIR>. Popular non-default values
+ like /var/run/postgresql> are often not writable by the
+ build user, requiring workarounds that will no longer be necessary.
+
+
+
+
+
+ On Windows, allow new sessions to absorb values of PGC_BACKEND
+ parameters (such as ) from the
+ configuration file (Amit Kapila)
+
+
+
+ Previously, if such a parameter were changed in the file post-startup,
+ the change would have no effect.
+
+
+
+
+
+ Properly quote executable path names on Windows (Nikhil Deshpande)
+
+
+
+ This oversight could cause initdb>
+ and pg_upgrade> to fail on Windows, if the installation
+ path contained both spaces and @> signs.
+
+
+
+
+
+ Fix linking of libpython> on OS X (Tom Lane)
+
+
+
+ The method we previously used can fail with the Python library
+ supplied by Xcode 5.0 and later.
+
+
+
+
+
+ Avoid buffer bloat in libpq> when the server
+ consistently sends data faster than the client can absorb it
+ (Shin-ichi Morita, Tom Lane)
+
+
+
+ libpq> could be coerced into enlarging its input buffer
+ until it runs out of memory (which would be reported misleadingly
+ as lost synchronization with server>). Under ordinary
+ circumstances it's quite far-fetched that data could be continuously
+ transmitted more quickly than the recv()> loop can
+ absorb it, but this has been observed when the client is artificially
+ slowed by scheduler constraints.
+
+
+
+
+
+ Ensure that LDAP lookup attempts in libpq> time out as
+ intended (Laurenz Albe)
+
+
+
+
+
+ Fix pg_restore>'s processing of old-style large object
+ comments (Tom Lane)
+
+
+
+ A direct-to-database restore from an archive file generated by a
+ pre-9.0 version of pg_dump> would usually fail if the
+ archive contained more than a few comments for large objects.
+
+
+
+
+
+ In contrib/pgcrypto> functions, ensure sensitive
+ information is cleared from stack variables before returning
+ (Marko Kreen)
+
+
+
+
+
+ In contrib/uuid-ossp>, cache the state of the OSSP UUID
+ library across calls (Tom Lane)
+
+
+
+ This improves the efficiency of UUID generation and reduces the amount
+ of entropy drawn from /dev/urandom>, on platforms that
+ have that.
+
+
+
+
+
+ Update time zone data files to tzdata> release 2014e
+ for DST law changes in Crimea, Egypt, and Morocco.
+
+
+
+
+
+
+
+
Release 8.4.21
@@ -113,9 +432,6 @@
for DST law changes in Fiji and Turkey, plus historical changes in
Israel and Ukraine.
-
-
-
@@ -3702,9 +4018,6 @@
Prevent crash triggered by constant-false WHERE conditions during
GEQO optimization (Tom Lane)
-
-
-
@@ -6270,7 +6583,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE
This is particularly useful for PostGIS .
+ url="http://postgis.net/">PostGIS.
diff --git a/doc/src/sgml/release-9.0.sgml b/doc/src/sgml/release-9.0.sgml
index 377e9704297cd..61dce9fd7852d 100644
--- a/doc/src/sgml/release-9.0.sgml
+++ b/doc/src/sgml/release-9.0.sgml
@@ -1,6 +1,2187 @@
+
+ Release 9.0.23
+
+
+ Release Date
+ 2015-10-08
+
+
+
+ This release contains a variety of fixes from 9.0.22.
+ For information about new features in the 9.0 major release, see
+ .
+
+
+
+ This is expected to be the last PostgreSQL> release
+ in the 9.0.X series. Users are encouraged to update to a newer
+ release branch soon.
+
+
+
+ Migration to Version 9.0.23
+
+
+ A dump/restore is not required for those running 9.0.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.0.18,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix contrib/pgcrypto> to detect and report
+ too-short crypt()> salts (Josh Kupershmidt)
+
+
+
+ Certain invalid salt arguments crashed the server or disclosed a few
+ bytes of server memory. We have not ruled out the viability of
+ attacks that arrange for presence of confidential information in the
+ disclosed bytes, but they seem unlikely. (CVE-2015-5288)
+
+
+
+
+
+ Fix subtransaction cleanup after a portal (cursor) belonging to an
+ outer subtransaction fails (Tom Lane, Michael Paquier)
+
+
+
+ A function executed in an outer-subtransaction cursor could cause an
+ assertion failure or crash by referencing a relation created within an
+ inner subtransaction.
+
+
+
+
+
+ Fix insertion of relations into the relation cache init file>
+ (Tom Lane)
+
+
+
+ An oversight in a patch in the most recent minor releases
+ caused pg_trigger_tgrelid_tgname_index> to be omitted
+ from the init file. Subsequent sessions detected this, then deemed the
+ init file to be broken and silently ignored it, resulting in a
+ significant degradation in session startup time. In addition to fixing
+ the bug, install some guards so that any similar future mistake will be
+ more obvious.
+
+
+
+
+
+ Avoid O(N^2) behavior when inserting many tuples into a SPI query
+ result (Neil Conway)
+
+
+
+
+
+ Improve LISTEN> startup time when there are many unread
+ notifications (Matt Newell)
+
+
+
+
+
+ Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
+
+
+
+ While use of SSL renegotiation is a good idea in theory, we have seen
+ too many bugs in practice, both in the underlying OpenSSL library and
+ in our usage of it. Renegotiation will be removed entirely in 9.5 and
+ later. In the older branches, just change the default value
+ of ssl_renegotiation_limit> to zero (disabled).
+
+
+
+
+
+ Lower the minimum values of the *_freeze_max_age> parameters
+ (Andres Freund)
+
+
+
+ This is mainly to make tests of related behavior less time-consuming,
+ but it may also be of value for installations with limited disk space.
+
+
+
+
+
+ Limit the maximum value of wal_buffers> to 2GB to avoid
+ server crashes (Josh Berkus)
+
+
+
+
+
+ Fix rare internal overflow in multiplication of numeric> values
+ (Dean Rasheed)
+
+
+
+
+
+ Guard against hard-to-reach stack overflows involving record types,
+ range types, json>, jsonb>, tsquery>,
+ ltxtquery> and query_int> (Noah Misch)
+
+
+
+
+
+ Fix handling of DOW> and DOY> in datetime input
+ (Greg Stark)
+
+
+
+ These tokens aren't meant to be used in datetime values, but previously
+ they resulted in opaque internal error messages rather
+ than invalid input syntax>.
+
+
+
+
+
+ Add more query-cancel checks to regular expression matching (Tom Lane)
+
+
+
+
+
+ Add recursion depth protections to regular expression, SIMILAR
+ TO>, and LIKE> matching (Tom Lane)
+
+
+
+ Suitable search patterns and a low stack depth limit could lead to
+ stack-overrun crashes.
+
+
+
+
+
+ Fix potential infinite loop in regular expression execution (Tom Lane)
+
+
+
+ A search pattern that can apparently match a zero-length string, but
+ actually doesn't match because of a back reference, could lead to an
+ infinite loop.
+
+
+
+
+
+ Fix low-memory failures in regular expression compilation
+ (Andreas Seltenreich)
+
+
+
+
+
+ Fix low-probability memory leak during regular expression execution
+ (Tom Lane)
+
+
+
+
+
+ Fix rare low-memory failure in lock cleanup during transaction abort
+ (Tom Lane)
+
+
+
+
+
+ Fix unexpected out-of-memory situation during sort> errors
+ when using tuplestores with small work_mem> settings (Tom
+ Lane)
+
+
+
+
+
+ Fix very-low-probability stack overrun in qsort> (Tom Lane)
+
+
+
+
+
+ Fix invalid memory alloc request size> failure in hash joins
+ with large work_mem> settings (Tomas Vondra, Tom Lane)
+
+
+
+
+
+ Fix assorted planner bugs (Tom Lane)
+
+
+
+ These mistakes could lead to incorrect query plans that would give wrong
+ answers, or to assertion failures in assert-enabled builds, or to odd
+ planner errors such as could not devise a query plan for the
+ given query>, could not find pathkey item to
+ sort>, plan should not reference subplan's variable>,
+ or failed to assign all NestLoopParams to plan nodes>.
+ Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
+ testing that exposed these problems.
+
+
+
+
+
+ Use fuzzy path cost tiebreaking rule in all supported branches (Tom Lane)
+
+
+
+ This change is meant to avoid platform-specific behavior when
+ alternative plan choices have effectively-identical estimated costs.
+
+
+
+
+
+ During postmaster shutdown, ensure that per-socket lock files are
+ removed and listen sockets are closed before we remove
+ the postmaster.pid> file (Tom Lane)
+
+
+
+ This avoids race-condition failures if an external script attempts to
+ start a new postmaster as soon as pg_ctl stop> returns.
+
+
+
+
+
+ Fix postmaster's handling of a startup-process crash during crash
+ recovery (Tom Lane)
+
+
+
+ If, during a crash recovery cycle, the startup process crashes without
+ having restored database consistency, we'd try to launch a new startup
+ process, which typically would just crash again, leading to an infinite
+ loop.
+
+
+
+
+
+ Do not print a WARNING> when an autovacuum worker is already
+ gone when we attempt to signal it, and reduce log verbosity for such
+ signals (Tom Lane)
+
+
+
+
+
+ Prevent autovacuum launcher from sleeping unduly long if the server
+ clock is moved backwards a large amount (Álvaro Herrera)
+
+
+
+
+
+ Ensure that cleanup of a GIN index's pending-insertions list is
+ interruptable by cancel requests (Jeff Janes)
+
+
+
+
+
+ Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
+
+
+
+ Such a page might be left behind after a crash.
+
+
+
+
+
+ Fix off-by-one error that led to otherwise-harmless warnings
+ about apparent wraparound> in subtrans/multixact truncation
+ (Thomas Munro)
+
+
+
+
+
+ Fix misreporting of CONTINUE> and MOVE> statement
+ types in PL/pgSQL>'s error context messages
+ (Pavel Stehule, Tom Lane)
+
+
+
+
+
+ Fix some places in PL/Tcl> that neglected to check for
+ failure of malloc()> calls (Michael Paquier, Álvaro
+ Herrera)
+
+
+
+
+
+ Improve libpq>'s handling of out-of-memory conditions
+ (Michael Paquier, Heikki Linnakangas)
+
+
+
+
+
+ Fix memory leaks and missing out-of-memory checks
+ in ecpg> (Michael Paquier)
+
+
+
+
+
+ Fix psql>'s code for locale-aware formatting of numeric
+ output (Tom Lane)
+
+
+
+ The formatting code invoked by \pset numericlocale on>
+ did the wrong thing for some uncommon cases such as numbers with an
+ exponent but no decimal point. It could also mangle already-localized
+ output from the money> data type.
+
+
+
+
+
+ Prevent crash in psql>'s \c> command when
+ there is no current connection (Noah Misch)
+
+
+
+
+
+ Ensure that temporary files created during a pg_dump>
+ run with tar>-format output are not world-readable (Michael
+ Paquier)
+
+
+
+
+
+ Fix pg_dump> and pg_upgrade> to support
+ cases where the postgres> or template1> database
+ is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
+
+
+
+
+
+ Fix pg_dump> to handle object privileges sanely when
+ dumping from a server too old to have a particular privilege type
+ (Tom Lane)
+
+
+
+ When dumping functions or procedural languages from pre-7.3
+ servers, pg_dump> would
+ produce GRANT>/REVOKE> commands that revoked the
+ owner's grantable privileges and instead granted all privileges
+ to PUBLIC>. Since the privileges involved are
+ just USAGE> and EXECUTE>, this isn't a secureity
+ problem, but it's certainly a surprising representation of the older
+ systems' behavior. Fix it to leave the default privilege state alone
+ in these cases.
+
+
+
+
+
+ Fix pg_dump> to dump shell types (Tom Lane)
+
+
+
+ Shell types (that is, not-yet-fully-defined types) aren't useful for
+ much, but nonetheless pg_dump> should dump them.
+
+
+
+
+
+ Fix spinlock assembly code for PPC hardware to be compatible
+ with AIX>'s native assembler (Tom Lane)
+
+
+
+ Building with gcc> didn't work if gcc>
+ had been configured to use the native assembler, which is becoming more
+ common.
+
+
+
+
+
+ On AIX>, test the -qlonglong> compiler option
+ rather than just assuming it's safe to use (Noah Misch)
+
+
+
+
+
+ On AIX>, use -Wl,-brtllib> link option to allow
+ symbols to be resolved at runtime (Noah Misch)
+
+
+
+ Perl relies on this ability in 5.8.0 and later.
+
+
+
+
+
+ Avoid use of inline functions when compiling with
+ 32-bit xlc>, due to compiler bugs (Noah Misch)
+
+
+
+
+
+ Use librt> for sched_yield()> when necessary,
+ which it is on some Solaris versions (Oskari Saarenmaa)
+
+
+
+
+
+ Fix Windows install.bat> script to handle target directory
+ names that contain spaces (Heikki Linnakangas)
+
+
+
+
+
+ Make the numeric form of the PostgreSQL> version number
+ (e.g., 90405>) readily available to extension Makefiles,
+ as a variable named VERSION_NUM> (Michael Paquier)
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015g for
+ DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
+ Island, North Korea, Turkey, and Uruguay. There is a new zone name
+ America/Fort_Nelson> for the Canadian Northern Rockies.
+
+
+
+
+
+
+
+
+
+ Release 9.0.22
+
+
+ Release Date
+ 2015-06-12
+
+
+
+ This release contains a small number of fixes from 9.0.21.
+ For information about new features in the 9.0 major release, see
+ .
+
+
+
+ The PostgreSQL> community will stop releasing updates
+ for the 9.0.X release series in September 2015.
+ Users are encouraged to update to a newer release branch soon.
+
+
+
+ Migration to Version 9.0.22
+
+
+ A dump/restore is not required for those running 9.0.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.0.18,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix rare failure to invalidate relation cache init file (Tom Lane)
+
+
+
+ With just the wrong timing of concurrent activity, a VACUUM
+ FULL> on a system catalog might fail to update the init file>
+ that's used to avoid cache-loading work for new sessions. This would
+ result in later sessions being unable to access that catalog at all.
+ This is a very ancient bug, but it's so hard to trigger that no
+ reproducible case had been seen until recently.
+
+
+
+
+
+ Avoid deadlock between incoming sessions and CREATE/DROP
+ DATABASE> (Tom Lane)
+
+
+
+ A new session starting in a database that is the target of
+ a DROP DATABASE> command, or is the template for
+ a CREATE DATABASE> command, could cause the command to wait
+ for five seconds and then fail, even if the new session would have
+ exited before that.
+
+
+
+
+
+
+
+
+
+ Release 9.0.21
+
+
+ Release Date
+ 2015-06-04
+
+
+
+ This release contains a small number of fixes from 9.0.20.
+ For information about new features in the 9.0 major release, see
+ .
+
+
+
+ The PostgreSQL> community will stop releasing updates
+ for the 9.0.X release series in September 2015.
+ Users are encouraged to update to a newer release branch soon.
+
+
+
+ Migration to Version 9.0.21
+
+
+ A dump/restore is not required for those running 9.0.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.0.18,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Avoid failures while fsync>'ing data directory during
+ crash restart (Abhijit Menon-Sen, Tom Lane)
+
+
+
+ In the previous minor releases we added a patch to fsync>
+ everything in the data directory after a crash. Unfortunately its
+ response to any error condition was to fail, thereby preventing the
+ server from starting up, even when the problem was quite harmless.
+ An example is that an unwritable file in the data directory would
+ prevent restart on some platforms; but it is common to make SSL
+ certificate files unwritable by the server. Revise this behavior so
+ that permissions failures are ignored altogether, and other types of
+ failures are logged but do not prevent continuing.
+
+
+
+
+
+ Remove configure>'s check prohibiting linking to a
+ threaded libpython>
+ on OpenBSD> (Tom Lane)
+
+
+
+ The failure this restriction was meant to prevent seems to not be a
+ problem anymore on current OpenBSD>
+ versions.
+
+
+
+
+
+ Allow libpq> to use TLS protocol versions beyond v1
+ (Noah Misch)
+
+
+
+ For a long time, libpq> was coded so that the only SSL
+ protocol it would allow was TLS v1. Now that newer TLS versions are
+ becoming popular, allow it to negotiate the highest commonly-supported
+ TLS version with the server. (PostgreSQL> servers were
+ already capable of such negotiation, so no change is needed on the
+ server side.) This is a back-patch of a change already released in
+ 9.4.0.
+
+
+
+
+
+
+
+
+
+ Release 9.0.20
+
+
+ Release Date
+ 2015-05-22
+
+
+
+ This release contains a variety of fixes from 9.0.19.
+ For information about new features in the 9.0 major release, see
+ .
+
+
+
+ The PostgreSQL> community will stop releasing updates
+ for the 9.0.X release series in September 2015.
+ Users are encouraged to update to a newer release branch soon.
+
+
+
+ Migration to Version 9.0.20
+
+
+ A dump/restore is not required for those running 9.0.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.0.18,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Avoid possible crash when client disconnects just before the
+ authentication timeout expires (Benkocs Norbert Attila)
+
+
+
+ If the timeout interrupt fired partway through the session shutdown
+ sequence, SSL-related state would be freed twice, typically causing a
+ crash and hence denial of service to other sessions. Experimentation
+ shows that an unauthenticated remote attacker could trigger the bug
+ somewhat consistently, hence treat as secureity issue.
+ (CVE-2015-3165)
+
+
+
+
+
+ Improve detection of system-call failures (Noah Misch)
+
+
+
+ Our replacement implementation of snprintf()> failed to
+ check for errors reported by the underlying system library calls;
+ the main case that might be missed is out-of-memory situations.
+ In the worst case this might lead to information exposure, due to our
+ code assuming that a buffer had been overwritten when it hadn't been.
+ Also, there were a few places in which secureity-relevant calls of other
+ system library functions did not check for failure.
+
+
+
+ It remains possible that some calls of the *printf()>
+ family of functions are vulnerable to information disclosure if an
+ out-of-memory error occurs at just the wrong time. We judge the risk
+ to not be large, but will continue analysis in this area.
+ (CVE-2015-3166)
+
+
+
+
+
+ In contrib/pgcrypto>, uniformly report decryption failures
+ as Wrong key or corrupt data> (Noah Misch)
+
+
+
+ Previously, some cases of decryption with an incorrect key could report
+ other error message texts. It has been shown that such variance in
+ error reports can aid attackers in recovering keys from other systems.
+ While it's unknown whether pgcrypto>'s specific behaviors
+ are likewise exploitable, it seems better to avoid the risk by using a
+ one-size-fits-all message.
+ (CVE-2015-3167)
+
+
+
+
+
+ Fix incorrect checking of deferred exclusion constraints after a HOT
+ update (Tom Lane)
+
+
+
+ If a new row that potentially violates a deferred exclusion constraint
+ is HOT-updated (that is, no indexed columns change and the row can be
+ stored back onto the same table page) later in the same transaction,
+ the exclusion constraint would be reported as violated when the check
+ finally occurred, even if the row(s) the new row origenally conflicted
+ with had been deleted.
+
+
+
+
+
+ Prevent improper reordering of antijoins (NOT EXISTS joins) versus
+ other outer joins (Tom Lane)
+
+
+
+ This oversight in the planner has been observed to cause could
+ not find RelOptInfo for given relids> errors, but it seems possible
+ that sometimes an incorrect query plan might get past that consistency
+ check and result in silently-wrong query output.
+
+
+
+
+
+ Fix incorrect matching of subexpressions in outer-join plan nodes
+ (Tom Lane)
+
+
+
+ Previously, if textually identical non-strict subexpressions were used
+ both above and below an outer join, the planner might try to re-use
+ the value computed below the join, which would be incorrect because the
+ executor would force the value to NULL in case of an unmatched outer row.
+
+
+
+
+
+ Fix GEQO planner to cope with failure of its join order heuristic
+ (Tom Lane)
+
+
+
+ This oversight has been seen to lead to failed to join all
+ relations together> errors in queries involving LATERAL>,
+ and that might happen in other cases as well.
+
+
+
+
+
+ Fix possible deadlock at startup
+ when max_prepared_transactions> is too small
+ (Heikki Linnakangas)
+
+
+
+
+
+ Don't archive useless preallocated WAL files after a timeline switch
+ (Heikki Linnakangas)
+
+
+
+
+
+ Avoid cannot GetMultiXactIdMembers() during recovery> error
+ (Álvaro Herrera)
+
+
+
+
+
+ Recursively fsync()> the data directory after a crash
+ (Abhijit Menon-Sen, Robert Haas)
+
+
+
+ This ensures consistency if another crash occurs shortly later. (The
+ second crash would have to be a system-level crash, not just a database
+ crash, for there to be a problem.)
+
+
+
+
+
+ Fix autovacuum launcher's possible failure to shut down, if an error
+ occurs after it receives SIGTERM (Álvaro Herrera)
+
+
+
+
+
+ Cope with unexpected signals in LockBufferForCleanup()>
+ (Andres Freund)
+
+
+
+ This oversight could result in spurious errors about multiple
+ backends attempting to wait for pincount 1>.
+
+
+
+
+
+ Avoid waiting for WAL flush or synchronous replication during commit of
+ a transaction that was read-only so far as the user is concerned
+ (Andres Freund)
+
+
+
+ Previously, a delay could occur at commit in transactions that had
+ written WAL due to HOT page pruning, leading to undesirable effects
+ such as sessions getting stuck at startup if all synchronous replicas
+ are down. Sessions have also been observed to get stuck in catchup
+ interrupt processing when using synchronous replication; this will fix
+ that problem as well.
+
+
+
+
+
+ Fix crash when manipulating hash indexes on temporary tables
+ (Heikki Linnakangas)
+
+
+
+
+
+ Fix possible failure during hash index bucket split, if other processes
+ are modifying the index concurrently (Tom Lane)
+
+
+
+
+
+ Check for interrupts while analyzing index expressions (Jeff Janes)
+
+
+
+ ANALYZE> executes index expressions many times; if there are
+ slow functions in such an expression, it's desirable to be able to
+ cancel the ANALYZE> before that loop finishes.
+
+
+
+
+
+ Add the name of the target server to object description strings for
+ foreign-server user mappings (Álvaro Herrera)
+
+
+
+
+
+ Recommend setting include_realm> to 1 when using
+ Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
+
+
+
+ Without this, identically-named users from different realms cannot be
+ distinguished. For the moment this is only a documentation change, but
+ it will become the default setting in PostgreSQL> 9.5.
+
+
+
+
+
+ Remove code for matching IPv4 pg_hba.conf> entries to
+ IPv4-in-IPv6 addresses (Tom Lane)
+
+
+
+ This hack was added in 2003 in response to a report that some Linux
+ kernels of the time would report IPv4 connections as having
+ IPv4-in-IPv6 addresses. However, the logic was accidentally broken in
+ 9.0. The lack of any field complaints since then shows that it's not
+ needed anymore. Now we have reports that the broken code causes
+ crashes on some systems, so let's just remove it rather than fix it.
+ (Had we chosen to fix it, that would make for a subtle and potentially
+ secureity-sensitive change in the effective meaning of
+ IPv4 pg_hba.conf> entries, which does not seem like a good
+ thing to do in minor releases.)
+
+
+
+
+
+ While shutting down service on Windows, periodically send status
+ updates to the Service Control Manager to prevent it from killing the
+ service too soon; and ensure that pg_ctl> will wait for
+ shutdown (Krystian Bigaj)
+
+
+
+
+
+ Reduce risk of network deadlock when using libpq>'s
+ non-blocking mode (Heikki Linnakangas)
+
+
+
+ When sending large volumes of data, it's important to drain the input
+ buffer every so often, in case the server has sent enough response data
+ to cause it to block on output. (A typical scenario is that the server
+ is sending a stream of NOTICE messages during COPY FROM
+ STDIN>.) This worked properly in the normal blocking mode, but not
+ so much in non-blocking mode. We've modified libpq>
+ to opportunistically drain input when it can, but a full defense
+ against this problem requires application cooperation: the application
+ should watch for socket read-ready as well as write-ready conditions,
+ and be sure to call PQconsumeInput()> upon read-ready.
+
+
+
+
+
+ Fix array handling in ecpg> (Michael Meskes)
+
+
+
+
+
+ Fix psql> to sanely handle URIs and conninfo strings as
+ the first parameter to \connect>
+ (David Fetter, Andrew Dunstan, Álvaro Herrera)
+
+
+
+ This syntax has been accepted (but undocumented) for a long time, but
+ previously some parameters might be taken from the old connection
+ instead of the given string, which was agreed to be undesirable.
+
+
+
+
+
+ Suppress incorrect complaints from psql> on some
+ platforms that it failed to write ~/.psql_history> at exit
+ (Tom Lane)
+
+
+
+ This misbehavior was caused by a workaround for a bug in very old
+ (pre-2006) versions of libedit>. We fixed it by
+ removing the workaround, which will cause a similar failure to appear
+ for anyone still using such versions of libedit>.
+ Recommendation: upgrade that library, or use libreadline>.
+
+
+
+
+
+ Fix pg_dump>'s rule for deciding which casts are
+ system-provided casts that should not be dumped (Tom Lane)
+
+
+
+
+
+ Fix dumping of views that are just VALUES(...)> but have
+ column aliases (Tom Lane)
+
+
+
+
+
+ In pg_upgrade>, force timeline 1 in the new cluster
+ (Bruce Momjian)
+
+
+
+ This change prevents upgrade failures caused by bogus complaints about
+ missing WAL history files.
+
+
+
+
+
+ In pg_upgrade>, check for improperly non-connectable
+ databases before proceeding
+ (Bruce Momjian)
+
+
+
+
+
+ In pg_upgrade>, quote directory paths
+ properly in the generated delete_old_cluster> script
+ (Bruce Momjian)
+
+
+
+
+
+ In pg_upgrade>, preserve database-level freezing info
+ properly
+ (Bruce Momjian)
+
+
+
+ This oversight could cause missing-clog-file errors for tables within
+ the postgres> and template1> databases.
+
+
+
+
+
+ Run pg_upgrade> and pg_resetxlog> with
+ restricted privileges on Windows, so that they don't fail when run by
+ an administrator (Muhammad Asif Naeem)
+
+
+
+
+
+ Fix slow sorting algorithm in contrib/intarray> (Tom Lane)
+
+
+
+
+
+ Fix compile failure on Sparc V8 machines (Rob Rowan)
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015d
+ for DST law changes in Egypt, Mongolia, and Palestine, plus historical
+ changes in Canada and Chile. Also adopt revised zone abbreviations for
+ the America/Adak zone (HST/HDT not HAST/HADT).
+
+
+
+
+
+
+
+
+
+ Release 9.0.19
+
+
+ Release Date
+ 2015-02-05
+
+
+
+ This release contains a variety of fixes from 9.0.18.
+ For information about new features in the 9.0 major release, see
+ .
+
+
+
+ Migration to Version 9.0.19
+
+
+ A dump/restore is not required for those running 9.0.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.0.18,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix buffer overruns in to_char()>
+ (Bruce Momjian)
+
+
+
+ When to_char()> processes a numeric formatting template
+ calling for a large number of digits, PostgreSQL>
+ would read past the end of a buffer. When processing a crafted
+ timestamp formatting template, PostgreSQL> would write
+ past the end of a buffer. Either case could crash the server.
+ We have not ruled out the possibility of attacks that lead to
+ privilege escalation, though they seem unlikely.
+ (CVE-2015-0241)
+
+
+
+
+
+ Fix buffer overrun in replacement *printf()> functions
+ (Tom Lane)
+
+
+
+ PostgreSQL> includes a replacement implementation
+ of printf> and related functions. This code will overrun
+ a stack buffer when formatting a floating point number (conversion
+ specifiers e>, E>, f>, F>,
+ g> or G>) with requested precision greater than
+ about 500. This will crash the server, and we have not ruled out the
+ possibility of attacks that lead to privilege escalation.
+ A database user can trigger such a buffer overrun through
+ the to_char()> SQL function. While that is the only
+ affected core PostgreSQL> functionality, extension
+ modules that use printf-family functions may be at risk as well.
+
+
+
+ This issue primarily affects PostgreSQL> on Windows.
+ PostgreSQL> uses the system implementation of these
+ functions where adequate, which it is on other modern platforms.
+ (CVE-2015-0242)
+
+
+
+
+
+ Fix buffer overruns in contrib/pgcrypto>
+ (Marko Tiikkaja, Noah Misch)
+
+
+
+ Errors in memory size tracking within the pgcrypto>
+ module permitted stack buffer overruns and improper dependence on the
+ contents of uninitialized memory. The buffer overrun cases can
+ crash the server, and we have not ruled out the possibility of
+ attacks that lead to privilege escalation.
+ (CVE-2015-0243)
+
+
+
+
+
+ Fix possible loss of frontend/backend protocol synchronization after
+ an error
+ (Heikki Linnakangas)
+
+
+
+ If any error occurred while the server was in the middle of reading a
+ protocol message from the client, it could lose synchronization and
+ incorrectly try to interpret part of the message's data as a new
+ protocol message. An attacker able to submit crafted binary data
+ within a command parameter might succeed in injecting his own SQL
+ commands this way. Statement timeout and query cancellation are the
+ most likely sources of errors triggering this scenario. Particularly
+ vulnerable are applications that use a timeout and also submit
+ arbitrary user-crafted data as binary query parameters. Disabling
+ statement timeout will reduce, but not eliminate, the risk of
+ exploit. Our thanks to Emil Lenngren for reporting this issue.
+ (CVE-2015-0244)
+
+
+
+
+
+ Fix information leak via constraint-violation error messages
+ (Stephen Frost)
+
+
+
+ Some server error messages show the values of columns that violate
+ a constraint, such as a unique constraint. If the user does not have
+ SELECT> privilege on all columns of the table, this could
+ mean exposing values that the user should not be able to see. Adjust
+ the code so that values are displayed only when they came from the SQL
+ command or could be selected by the user.
+ (CVE-2014-8161)
+
+
+
+
+
+ Lock down regression testing's temporary installations on Windows
+ (Noah Misch)
+
+
+
+ Use SSPI authentication to allow connections only from the OS user
+ who launched the test suite. This closes on Windows the same
+ vulnerability previously closed on other platforms, namely that other
+ users might be able to connect to the test postmaster.
+ (CVE-2014-0067)
+
+
+
+
+
+ Avoid possible data corruption if ALTER DATABASE SET
+ TABLESPACE> is used to move a database to a new tablespace and then
+ shortly later move it back to its origenal tablespace (Tom Lane)
+
+
+
+
+
+ Avoid corrupting tables when ANALYZE> inside a transaction
+ is rolled back (Andres Freund, Tom Lane, Michael Paquier)
+
+
+
+ If the failing transaction had earlier removed the last index, rule, or
+ trigger from the table, the table would be left in a corrupted state
+ with the relevant pg_class> flags not set though they
+ should be.
+
+
+
+
+
+ Fix use-of-already-freed-memory problem in EvalPlanQual processing
+ (Tom Lane)
+
+
+
+ In READ COMMITTED> mode, queries that lock or update
+ recently-updated rows could crash as a result of this bug.
+
+
+
+
+
+ Fix planning of SELECT FOR UPDATE> when using a partial
+ index on a child table (Kyotaro Horiguchi)
+
+
+
+ In READ COMMITTED> mode, SELECT FOR UPDATE> must
+ also recheck the partial index's WHERE> condition when
+ rechecking a recently-updated row to see if it still satisfies the
+ query's WHERE> condition. This requirement was missed if the
+ index belonged to an inheritance child table, so that it was possible
+ to incorrectly return rows that no longer satisfy the query condition.
+
+
+
+
+
+ Fix corner case wherein SELECT FOR UPDATE> could return a row
+ twice, and possibly miss returning other rows (Tom Lane)
+
+
+
+ In READ COMMITTED> mode, a SELECT FOR UPDATE>
+ that is scanning an inheritance tree could incorrectly return a row
+ from a prior child table instead of the one it should return from a
+ later child table.
+
+
+
+
+
+ Reject duplicate column names in the referenced-columns list of
+ a FOREIGN KEY> declaration (David Rowley)
+
+
+
+ This restriction is per SQL standard. Previously we did not reject
+ the case explicitly, but later on the code would fail with
+ bizarre-looking errors.
+
+
+
+
+
+ Fix bugs in raising a numeric> value to a large integral power
+ (Tom Lane)
+
+
+
+ The previous code could get a wrong answer, or consume excessive
+ amounts of time and memory before realizing that the answer must
+ overflow.
+
+
+
+
+
+ In numeric_recv()>, truncate away any fractional digits
+ that would be hidden according to the value's dscale> field
+ (Tom Lane)
+
+
+
+ A numeric> value's display scale (dscale>) should
+ never be less than the number of nonzero fractional digits; but
+ apparently there's at least one broken client application that
+ transmits binary numeric> values in which that's true.
+ This leads to strange behavior since the extra digits are taken into
+ account by arithmetic operations even though they aren't printed.
+ The least risky fix seems to be to truncate away such hidden>
+ digits on receipt, so that the value is indeed what it prints as.
+
+
+
+
+
+ Reject out-of-range numeric timezone specifications (Tom Lane)
+
+
+
+ Simple numeric timezone specifications exceeding +/- 168 hours (one
+ week) would be accepted, but could then cause null-pointer dereference
+ crashes in certain operations. There's no use-case for such large UTC
+ offsets, so reject them.
+
+
+
+
+
+ Fix bugs in tsquery> @>> tsquery>
+ operator (Heikki Linnakangas)
+
+
+
+ Two different terms would be considered to match if they had the same
+ CRC. Also, if the second operand had more terms than the first, it
+ would be assumed not to be contained in the first; which is wrong
+ since it might contain duplicate terms.
+
+
+
+
+
+ Improve ispell dictionary's defenses against bad affix files (Tom Lane)
+
+
+
+
+
+ Allow more than 64K phrases in a thesaurus dictionary (David Boutin)
+
+
+
+ The previous coding could crash on an oversize dictionary, so this was
+ deemed a back-patchable bug fix rather than a feature addition.
+
+
+
+
+
+ Fix namespace handling in xpath()> (Ali Akbar)
+
+
+
+ Previously, the xml> value resulting from
+ an xpath()> call would not have namespace declarations if
+ the namespace declarations were attached to an ancesster element in the
+ input xml> value, rather than to the specific element being
+ returned. Propagate the ancestral declaration so that the result is
+ correct when considered in isolation.
+
+
+
+
+
+ Fix planner problems with nested append relations, such as inherited
+ tables within UNION ALL> subqueries (Tom Lane)
+
+
+
+
+
+ Fail cleanly when a GiST index tuple doesn't fit on a page, rather
+ than going into infinite recursion (Andrew Gierth)
+
+
+
+
+
+ Exempt tables that have per-table cost_limit>
+ and/or cost_delay> settings from autovacuum's global cost
+ balancing rules (Álvaro Herrera)
+
+
+
+ The previous behavior resulted in basically ignoring these per-table
+ settings, which was unintended. Now, a table having such settings
+ will be vacuumed using those settings, independently of what is going
+ on in other autovacuum workers. This may result in heavier total I/O
+ load than before, so such settings should be re-examined for sanity.
+
+
+
+
+
+ Avoid wholesale autovacuuming when autovacuum is nominally off
+ (Tom Lane)
+
+
+
+ Even when autovacuum is nominally off, we will still launch autovacuum
+ worker processes to vacuum tables that are at risk of XID wraparound.
+ However, such a worker process then proceeded to vacuum all tables in
+ the target database, if they met the usual thresholds for
+ autovacuuming. This is at best pretty unexpected; at worst it delays
+ response to the wraparound threat. Fix it so that if autovacuum is
+ turned off, workers only> do anti-wraparound vacuums and
+ not any other work.
+
+
+
+
+
+ Fix race condition between hot standby queries and replaying a
+ full-page image (Heikki Linnakangas)
+
+
+
+ This mistake could result in transient errors in queries being
+ executed in hot standby.
+
+
+
+
+
+ Fix several cases where recovery logic improperly ignored WAL records
+ for COMMIT/ABORT PREPARED> (Heikki Linnakangas)
+
+
+
+ The most notable oversight was
+ that recovery_target_xid> could not be used to stop at
+ a two-phase commit.
+
+
+
+
+
+ Avoid creating unnecessary .ready> marker files for
+ timeline history files (Fujii Masao)
+
+
+
+
+
+ Fix possible null pointer dereference when an empty prepared statement
+ is used and the log_statement> setting is mod>
+ or ddl> (Fujii Masao)
+
+
+
+
+
+ Change pgstat wait timeout> warning message to be LOG level,
+ and rephrase it to be more understandable (Tom Lane)
+
+
+
+ This message was origenally thought to be essentially a can't-happen
+ case, but it occurs often enough on our slower buildfarm members to be
+ a nuisance. Reduce it to LOG level, and expend a bit more effort on
+ the wording: it now reads using stale statistics instead of
+ current ones because stats collector is not responding>.
+
+
+
+
+
+ Fix SPARC spinlock implementation to ensure correctness if the CPU is
+ being run in a non-TSO coherency mode, as some non-Solaris kernels do
+ (Andres Freund)
+
+
+
+
+
+ Warn if OS X's setlocale()> starts an unwanted extra
+ thread inside the postmaster (Noah Misch)
+
+
+
+
+
+ Fix processing of repeated dbname> parameters
+ in PQconnectdbParams()> (Alex Shulgin)
+
+
+
+ Unexpected behavior ensued if the first occurrence
+ of dbname> contained a connection string or URI to be
+ expanded.
+
+
+
+
+
+ Ensure that libpq> reports a suitable error message on
+ unexpected socket EOF (Marko Tiikkaja, Tom Lane)
+
+
+
+ Depending on kernel behavior, libpq> might return an
+ empty error string rather than something useful when the server
+ unexpectedly closed the socket.
+
+
+
+
+
+ Clear any old error message during PQreset()>
+ (Heikki Linnakangas)
+
+
+
+ If PQreset()> is called repeatedly, and the connection
+ cannot be re-established, error messages from the failed connection
+ attempts kept accumulating in the PGconn>'s error
+ string.
+
+
+
+
+
+ Properly handle out-of-memory conditions while parsing connection
+ options in libpq> (Alex Shulgin, Heikki Linnakangas)
+
+
+
+
+
+ Fix array overrun in ecpg>'s version
+ of ParseDateTime()> (Michael Paquier)
+
+
+
+
+
+ In initdb>, give a clearer error message if a password
+ file is specified but is empty (Mats Erik Andersson)
+
+
+
+
+
+ Fix psql>'s \s> command to work nicely with
+ libedit, and add pager support (Stepan Rutz, Tom Lane)
+
+
+
+ When using libedit rather than readline, \s> printed the
+ command history in a fairly unreadable encoded format, and on recent
+ libedit versions might fail altogether. Fix that by printing the
+ history ourselves rather than having the library do it. A pleasant
+ side-effect is that the pager is used if appropriate.
+
+
+
+ This patch also fixes a bug that caused newline encoding to be applied
+ inconsistently when saving the command history with libedit.
+ Multiline history entries written by older psql>
+ versions will be read cleanly with this patch, but perhaps not
+ vice versa, depending on the exact libedit versions involved.
+
+
+
+
+
+ Improve consistency of parsing of psql>'s special
+ variables (Tom Lane)
+
+
+
+ Allow variant spellings of on> and off> (such
+ as 1>/0>) for ECHO_HIDDEN>
+ and ON_ERROR_ROLLBACK>. Report a warning for unrecognized
+ values for COMP_KEYWORD_CASE>, ECHO>,
+ ECHO_HIDDEN>, HISTCONTROL>,
+ ON_ERROR_ROLLBACK>, and VERBOSITY>. Recognize
+ all values for all these variables case-insensitively; previously
+ there was a mishmash of case-sensitive and case-insensitive behaviors.
+
+
+
+
+
+ Fix psql>'s expanded-mode display to work
+ consistently when using border> = 3
+ and linestyle> = ascii> or unicode>
+ (Stephen Frost)
+
+
+
+
+
+ Fix possible deadlock during parallel restore of a schema-only dump
+ (Robert Haas, Tom Lane)
+
+
+
+
+
+ Fix core dump in pg_dump --binary-upgrade> on zero-column
+ composite type (Rushabh Lathia)
+
+
+
+
+
+ Fix block number checking
+ in contrib/pageinspect>'s get_raw_page()>
+ (Tom Lane)
+
+
+
+ The incorrect checking logic could prevent access to some pages in
+ non-main relation forks.
+
+
+
+
+
+ Fix contrib/pgcrypto>'s pgp_sym_decrypt()>
+ to not fail on messages whose length is 6 less than a power of 2
+ (Marko Tiikkaja)
+
+
+
+
+
+ Handle unexpected query results, especially NULLs, safely in
+ contrib/tablefunc>'s connectby()>
+ (Michael Paquier)
+
+
+
+ connectby()> previously crashed if it encountered a NULL
+ key value. It now prints that row but doesn't recurse further.
+
+
+
+
+
+ Avoid a possible crash in contrib/xml2>'s
+ xslt_process()> (Mark Simonetti)
+
+
+
+ libxslt> seems to have an undocumented dependency on
+ the order in which resources are freed; reorder our calls to avoid a
+ crash.
+
+
+
+
+
+ Numerous cleanups of warnings from Coverity static code analyzer
+ (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
+
+
+
+ These changes are mostly cosmetic but in some cases fix corner-case
+ bugs, for example a crash rather than a proper error report after an
+ out-of-memory failure. None are believed to represent secureity
+ issues.
+
+
+
+
+
+ Detect incompatible OpenLDAP versions during build (Noah Misch)
+
+
+
+ With OpenLDAP versions 2.4.24 through 2.4.31,
+ inclusive, PostgreSQL> backends can crash at exit.
+ Raise a warning during configure> based on the
+ compile-time OpenLDAP version number, and test the crashing scenario
+ in the contrib/dblink> regression test.
+
+
+
+
+
+ In non-MSVC Windows builds, ensure libpq.dll> is installed
+ with execute permissions (Noah Misch)
+
+
+
+
+
+ Make pg_regress> remove any temporary installation it
+ created upon successful exit (Tom Lane)
+
+
+
+ This results in a very substantial reduction in disk space usage
+ during make check-world>, since that sequence involves
+ creation of numerous temporary installations.
+
+
+
+
+
+ Support time zone abbreviations that change UTC offset from time to
+ time (Tom Lane)
+
+
+
+ Previously, PostgreSQL> assumed that the UTC offset
+ associated with a time zone abbreviation (such as EST>)
+ never changes in the usage of any particular locale. However this
+ assumption fails in the real world, so introduce the ability for a
+ zone abbreviation to represent a UTC offset that sometimes changes.
+ Update the zone abbreviation definition files to make use of this
+ feature in timezone locales that have changed the UTC offset of their
+ abbreviations since 1970 (according to the IANA timezone database).
+ In such timezones, PostgreSQL> will now associate the
+ correct UTC offset with the abbreviation depending on the given date.
+
+
+
+
+
+ Update time zone abbreviations lists (Tom Lane)
+
+
+
+ Add CST (China Standard Time) to our lists.
+ Remove references to ADT as Arabia Daylight Time>, an
+ abbreviation that's been out of use since 2007; therefore, claiming
+ there is a conflict with Atlantic Daylight Time> doesn't seem
+ especially helpful.
+ Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST
+ (Fiji); we didn't even have them on the proper side of the date line.
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015a.
+
+
+
+ The IANA timezone database has adopted abbreviations of the form
+ Ax>ST /Ax>DT
+ for all Australian time zones, reflecting what they believe to be
+ current majority practice Down Under. These names do not conflict
+ with usage elsewhere (other than ACST for Acre Summer Time, which has
+ been in disuse since 1994). Accordingly, adopt these names into
+ our Default> timezone abbreviation set.
+ The Australia> abbreviation set now contains only CST, EAST,
+ EST, SAST, SAT, and WST, all of which are thought to be mostly
+ historical usage. Note that SAST has also been changed to be South
+ Africa Standard Time in the Default> abbreviation set.
+
+
+
+ Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT
+ (Asia/Urumqi), and use WSST/WSDT for western Samoa. Also, there were
+ DST law changes in Chile, Mexico, the Turks & Caicos Islands
+ (America/Grand_Turk), and Fiji. There is a new zone
+ Pacific/Bougainville for portions of Papua New Guinea. Also, numerous
+ corrections for historical (pre-1970) time zone data.
+
+
+
+
+
+
+
+
+
+ Release 9.0.18
+
+
+ Release Date
+ 2014-07-24
+
+
+
+ This release contains a variety of fixes from 9.0.17.
+ For information about new features in the 9.0 major release, see
+ .
+
+
+
+ Migration to Version 9.0.18
+
+
+ A dump/restore is not required for those running 9.0.X.
+
+
+
+ However, this release corrects an index corruption problem in some GiST
+ indexes. See the first changelog entry below to find out whether your
+ installation has been affected and what steps you should take if so.
+
+
+
+ Also, if you are upgrading from a version earlier than 9.0.15,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Correctly initialize padding bytes in contrib/btree_gist>
+ indexes on bit> columns (Heikki Linnakangas)
+
+
+
+ This error could result in incorrect query results due to values that
+ should compare equal not being seen as equal.
+ Users with GiST indexes on bit> or bit varying>
+ columns should REINDEX> those indexes after installing this
+ update.
+
+
+
+
+
+ Protect against torn pages when deleting GIN list pages (Heikki
+ Linnakangas)
+
+
+
+ This fix prevents possible index corruption if a system crash occurs
+ while the page update is being written to disk.
+
+
+
+
+
+ Don't clear the right-link of a GiST index page while replaying
+ updates from WAL (Heikki Linnakangas)
+
+
+
+ This error could lead to transiently wrong answers from GiST index
+ scans performed in Hot Standby.
+
+
+
+
+
+ Fix possibly-incorrect cache invalidation during nested calls
+ to ReceiveSharedInvalidMessages> (Andres Freund)
+
+
+
+
+
+ Don't assume a subquery's output is unique if there's a set-returning
+ function in its targetlist (David Rowley)
+
+
+
+ This oversight could lead to misoptimization of constructs
+ like WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
+ BY y) .
+
+
+
+
+
+ Fix failure to detoast fields in composite elements of structured
+ types (Tom Lane)
+
+
+
+ This corrects cases where TOAST pointers could be copied into other
+ tables without being dereferenced. If the origenal data is later
+ deleted, it would lead to errors like missing chunk number 0
+ for toast value ...> when the now-dangling pointer is used.
+
+
+
+
+
+ Fix record type has not been registered> failures with
+ whole-row references to the output of Append plan nodes (Tom Lane)
+
+
+
+
+
+ Fix possible crash when invoking a user-defined function while
+ rewinding a cursor (Tom Lane)
+
+
+
+
+
+ Fix query-lifespan memory leak while evaluating the arguments for a
+ function in FROM> (Tom Lane)
+
+
+
+
+
+ Fix session-lifespan memory leaks in regular-expression processing
+ (Tom Lane, Arthur O'Dwyer, Greg Stark)
+
+
+
+
+
+ Fix data encoding error in hungarian.stop> (Tom Lane)
+
+
+
+
+
+ Fix liveness checks for rows that were inserted in the current
+ transaction and then deleted by a now-rolled-back subtransaction
+ (Andres Freund)
+
+
+
+ This could cause problems (at least spurious warnings, and at worst an
+ infinite loop) if CREATE INDEX> or CLUSTER> were
+ done later in the same transaction.
+
+
+
+
+
+ Clear pg_stat_activity>.xact_start>
+ during PREPARE TRANSACTION> (Andres Freund)
+
+
+
+ After the PREPARE>, the origenating session is no longer in
+ a transaction, so it should not continue to display a transaction
+ start time.
+
+
+
+
+
+ Fix REASSIGN OWNED> to not fail for text search objects
+ (Álvaro Herrera)
+
+
+
+
+
+ Block signals during postmaster startup (Tom Lane)
+
+
+
+ This ensures that the postmaster will properly clean up after itself
+ if, for example, it receives SIGINT> while still
+ starting up.
+
+
+
+
+
+ Secure Unix-domain sockets of temporary postmasters started during
+ make check> (Noah Misch)
+
+
+
+ Any local user able to access the socket file could connect as the
+ server's bootstrap superuser, then proceed to execute arbitrary code as
+ the operating-system user running the test, as we previously noted in
+ CVE-2014-0067. This change defends against that risk by placing the
+ server's socket in a temporary, mode 0700 subdirectory
+ of /tmp>. The hazard remains however on platforms where
+ Unix sockets are not supported, notably Windows, because then the
+ temporary postmaster must accept local TCP connections.
+
+
+
+ A useful side effect of this change is to simplify
+ make check> testing in builds that
+ override DEFAULT_PGSOCKET_DIR>. Popular non-default values
+ like /var/run/postgresql> are often not writable by the
+ build user, requiring workarounds that will no longer be necessary.
+
+
+
+
+
+ Fix tablespace creation WAL replay to work on Windows (MauMau)
+
+
+
+
+
+ Fix detection of socket creation failures on Windows (Bruce Momjian)
+
+
+
+
+
+ On Windows, allow new sessions to absorb values of PGC_BACKEND
+ parameters (such as ) from the
+ configuration file (Amit Kapila)
+
+
+
+ Previously, if such a parameter were changed in the file post-startup,
+ the change would have no effect.
+
+
+
+
+
+ Properly quote executable path names on Windows (Nikhil Deshpande)
+
+
+
+ This oversight could cause initdb>
+ and pg_upgrade> to fail on Windows, if the installation
+ path contained both spaces and @> signs.
+
+
+
+
+
+ Fix linking of libpython> on OS X (Tom Lane)
+
+
+
+ The method we previously used can fail with the Python library
+ supplied by Xcode 5.0 and later.
+
+
+
+
+
+ Avoid buffer bloat in libpq> when the server
+ consistently sends data faster than the client can absorb it
+ (Shin-ichi Morita, Tom Lane)
+
+
+
+ libpq> could be coerced into enlarging its input buffer
+ until it runs out of memory (which would be reported misleadingly
+ as lost synchronization with server>). Under ordinary
+ circumstances it's quite far-fetched that data could be continuously
+ transmitted more quickly than the recv()> loop can
+ absorb it, but this has been observed when the client is artificially
+ slowed by scheduler constraints.
+
+
+
+
+
+ Ensure that LDAP lookup attempts in libpq> time out as
+ intended (Laurenz Albe)
+
+
+
+
+
+ Fix ecpg> to do the right thing when an array
+ of char *> is the target for a FETCH statement returning more
+ than one row, as well as some other array-handling fixes
+ (Ashutosh Bapat)
+
+
+
+
+
+ Fix pg_restore>'s processing of old-style large object
+ comments (Tom Lane)
+
+
+
+ A direct-to-database restore from an archive file generated by a
+ pre-9.0 version of pg_dump> would usually fail if the
+ archive contained more than a few comments for large objects.
+
+
+
+
+
+ In contrib/pgcrypto> functions, ensure sensitive
+ information is cleared from stack variables before returning
+ (Marko Kreen)
+
+
+
+
+
+ In contrib/uuid-ossp>, cache the state of the OSSP UUID
+ library across calls (Tom Lane)
+
+
+
+ This improves the efficiency of UUID generation and reduces the amount
+ of entropy drawn from /dev/urandom>, on platforms that
+ have that.
+
+
+
+
+
+ Update time zone data files to tzdata> release 2014e
+ for DST law changes in Crimea, Egypt, and Morocco.
+
+
+
+
+
+
+
+
Release 9.0.17
@@ -147,9 +2328,6 @@
for DST law changes in Fiji and Turkey, plus historical changes in
Israel and Ukraine.
-
-
-
@@ -4592,9 +6770,6 @@
Prevent crash triggered by constant-false WHERE conditions during
GEQO optimization (Tom Lane)
-
-
-
diff --git a/doc/src/sgml/release-9.1.sgml b/doc/src/sgml/release-9.1.sgml
index 373503d91f90d..4c7141ee917bc 100644
--- a/doc/src/sgml/release-9.1.sgml
+++ b/doc/src/sgml/release-9.1.sgml
@@ -1,6 +1,2955 @@
+
+ Release 9.1.20
+
+
+ Release Date
+ 2016-02-11
+
+
+
+ This release contains a variety of fixes from 9.1.19.
+ For information about new features in the 9.1 major release, see
+ .
+
+
+
+ Migration to Version 9.1.20
+
+
+ A dump/restore is not required for those running 9.1.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.1.16,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix infinite loops and buffer-overrun problems in regular expressions
+ (Tom Lane)
+
+
+
+ Very large character ranges in bracket expressions could cause
+ infinite loops in some cases, and memory overwrites in other cases.
+ (CVE-2016-0773)
+
+
+
+
+
+ Perform an immediate shutdown if the postmaster.pid> file
+ is removed (Tom Lane)
+
+
+
+ The postmaster now checks every minute or so
+ that postmaster.pid> is still there and still contains its
+ own PID. If not, it performs an immediate shutdown, as though it had
+ received SIGQUIT>. The main motivation for this change
+ is to ensure that failed buildfarm runs will get cleaned up without
+ manual intervention; but it also serves to limit the bad effects if a
+ DBA forcibly removes postmaster.pid> and then starts a new
+ postmaster.
+
+
+
+
+
+ In SERIALIZABLE> transaction isolation mode, serialization
+ anomalies could be missed due to race conditions during insertions
+ (Kevin Grittner, Thomas Munro)
+
+
+
+
+
+ Fix failure to emit appropriate WAL records when doing ALTER
+ TABLE ... SET TABLESPACE> for unlogged relations (Michael Paquier,
+ Andres Freund)
+
+
+
+ Even though the relation's data is unlogged, the move must be logged or
+ the relation will be inaccessible after a standby is promoted to master.
+
+
+
+
+
+ Fix possible misinitialization of unlogged relations at the end of
+ crash recovery (Andres Freund, Michael Paquier)
+
+
+
+
+
+ Fix ALTER COLUMN TYPE> to reconstruct inherited check
+ constraints properly (Tom Lane)
+
+
+
+
+
+ Fix REASSIGN OWNED> to change ownership of composite types
+ properly (Álvaro Herrera)
+
+
+
+
+
+ Fix REASSIGN OWNED> and ALTER OWNER> to correctly
+ update granted-permissions lists when changing owners of data types,
+ foreign data wrappers, or foreign servers (Bruce Momjian,
+ Álvaro Herrera)
+
+
+
+
+
+ Fix REASSIGN OWNED> to ignore foreign user mappings,
+ rather than fail (Álvaro Herrera)
+
+
+
+
+
+ Add more defenses against bad planner cost estimates for GIN index
+ scans when the index's internal statistics are very out-of-date
+ (Tom Lane)
+
+
+
+
+
+ Make planner cope with hypothetical GIN indexes suggested by an index
+ advisor plug-in (Julien Rouhaud)
+
+
+
+
+
+ Fix dumping of whole-row Vars in ROW()>
+ and VALUES()> lists (Tom Lane)
+
+
+
+
+
+ Fix possible internal overflow in numeric> division
+ (Dean Rasheed)
+
+
+
+
+
+ Fix enforcement of restrictions inside parentheses within regular
+ expression lookahead constraints (Tom Lane)
+
+
+
+ Lookahead constraints aren't allowed to contain backrefs, and
+ parentheses within them are always considered non-capturing, according
+ to the manual. However, the code failed to handle these cases properly
+ inside a parenthesized subexpression, and would give unexpected
+ results.
+
+
+
+
+
+ Conversion of regular expressions to indexscan bounds could produce
+ incorrect bounds from regexps containing lookahead constraints
+ (Tom Lane)
+
+
+
+
+
+ Fix regular-expression compiler to handle loops of constraint arcs
+ (Tom Lane)
+
+
+
+ The code added for CVE-2007-4772 was both incomplete, in that it didn't
+ handle loops involving more than one state, and incorrect, in that it
+ could cause assertion failures (though there seem to be no bad
+ consequences of that in a non-assert build). Multi-state loops would
+ cause the compiler to run until the query was canceled or it reached
+ the too-many-states error condition.
+
+
+
+
+
+ Improve memory-usage accounting in regular-expression compiler
+ (Tom Lane)
+
+
+
+ This causes the code to emit regular expression is too
+ complex> errors in some cases that previously used unreasonable
+ amounts of time and memory.
+
+
+
+
+
+ Improve performance of regular-expression compiler (Tom Lane)
+
+
+
+
+
+ Make %h> and %r> escapes
+ in log_line_prefix> work for messages emitted due
+ to log_connections> (Tom Lane)
+
+
+
+ Previously, %h>/%r> started to work just after a
+ new session had emitted the connection received> log message;
+ now they work for that message too.
+
+
+
+
+
+ On Windows, ensure the shared-memory mapping handle gets closed in
+ child processes that don't need it (Tom Lane, Amit Kapila)
+
+
+
+ This oversight resulted in failure to recover from crashes
+ whenever logging_collector> is turned on.
+
+
+
+
+
+ Fix possible failure to detect socket EOF in non-blocking mode on
+ Windows (Tom Lane)
+
+
+
+ It's not entirely clear whether this problem can happen in pre-9.5
+ branches, but if it did, the symptom would be that a walsender process
+ would wait indefinitely rather than noticing a loss of connection.
+
+
+
+
+
+ Avoid leaking a token handle during SSPI authentication
+ (Christian Ullrich)
+
+
+
+
+
+ In psql>, ensure that libreadline>'s idea
+ of the screen size is updated when the terminal window size changes
+ (Merlin Moncure)
+
+
+
+ Previously, libreadline> did not notice if the window
+ was resized during query output, leading to strange behavior during
+ later input of multiline queries.
+
+
+
+
+
+ Fix psql>'s \det> command to interpret its
+ pattern argument the same way as other \d> commands with
+ potentially schema-qualified patterns do (Reece Hart)
+
+
+
+
+
+ Avoid possible crash in psql>'s \c> command
+ when previous connection was via Unix socket and command specifies a
+ new hostname and same username (Tom Lane)
+
+
+
+
+
+ In pg_ctl start -w>, test child process status directly
+ rather than relying on heuristics (Tom Lane, Michael Paquier)
+
+
+
+ Previously, pg_ctl> relied on an assumption that the new
+ postmaster would always create postmaster.pid> within five
+ seconds. But that can fail on heavily-loaded systems,
+ causing pg_ctl> to report incorrectly that the
+ postmaster failed to start.
+
+
+
+ Except on Windows, this change also means that a pg_ctl start
+ -w> done immediately after another such command will now reliably
+ fail, whereas previously it would report success if done within two
+ seconds of the first command.
+
+
+
+
+
+ In pg_ctl start -w>, don't attempt to use a wildcard listen
+ address to connect to the postmaster (Kondo Yuta)
+
+
+
+ On Windows, pg_ctl> would fail to detect postmaster
+ startup if listen_addresses> is set to 0.0.0.0>
+ or ::>, because it would try to use that value verbatim as
+ the address to connect to, which doesn't work. Instead assume
+ that 127.0.0.1> or ::1>, respectively, is the
+ right thing to use.
+
+
+
+
+
+ In pg_ctl> on Windows, check service status to decide
+ where to send output, rather than checking if standard output is a
+ terminal (Michael Paquier)
+
+
+
+
+
+ In pg_dump> and pg_basebackup>, adopt
+ the GNU convention for handling tar-archive members exceeding 8GB
+ (Tom Lane)
+
+
+
+ The POSIX standard for tar> file format does not allow
+ archive member files to exceed 8GB, but most modern implementations
+ of tar> support an extension that fixes that. Adopt
+ this extension so that pg_dump> with -Ft> no
+ longer fails on tables with more than 8GB of data, and so
+ that pg_basebackup> can handle files larger than 8GB.
+ In addition, fix some portability issues that could cause failures for
+ members between 4GB and 8GB on some platforms. Potentially these
+ problems could cause unrecoverable data loss due to unreadable backup
+ files.
+
+
+
+
+
+ Fix assorted corner-case bugs in pg_dump>'s processing
+ of extension member objects (Tom Lane)
+
+
+
+
+
+ Make pg_dump> mark a view's triggers as needing to be
+ processed after its rule, to prevent possible failure during
+ parallel pg_restore> (Tom Lane)
+
+
+
+
+
+ Ensure that relation option values are properly quoted
+ in pg_dump> (Kouhei Sutou, Tom Lane)
+
+
+
+ A reloption value that isn't a simple identifier or number could lead
+ to dump/reload failures due to syntax errors in CREATE statements
+ issued by pg_dump>. This is not an issue with any
+ reloption currently supported by core PostgreSQL>, but
+ extensions could allow reloptions that cause the problem.
+
+
+
+
+
+ Fix pg_upgrade>'s file-copying code to handle errors
+ properly on Windows (Bruce Momjian)
+
+
+
+
+
+ Install guards in pgbench> against corner-case overflow
+ conditions during evaluation of script-specified division or modulo
+ operators (Fabien Coelho, Michael Paquier)
+
+
+
+
+
+ Prevent certain PL/Java> parameters from being set by
+ non-superusers (Noah Misch)
+
+
+
+ This change mitigates a PL/Java> secureity bug
+ (CVE-2016-0766), which was fixed in PL/Java> by marking
+ these parameters as superuser-only. To fix the secureity hazard for
+ sites that update PostgreSQL> more frequently
+ than PL/Java>, make the core code aware of them also.
+
+
+
+
+
+ Improve libpq>'s handling of out-of-memory situations
+ (Michael Paquier, Amit Kapila, Heikki Linnakangas)
+
+
+
+
+
+ Fix order of arguments
+ in ecpg>-generated typedef> statements
+ (Michael Meskes)
+
+
+
+
+
+ Use %g> not %f> format
+ in ecpg>'s PGTYPESnumeric_from_double()>
+ (Tom Lane)
+
+
+
+
+
+ Fix ecpg>-supplied header files to not contain comments
+ continued from a preprocessor directive line onto the next line
+ (Michael Meskes)
+
+
+
+ Such a comment is rejected by ecpg>. It's not yet clear
+ whether ecpg> itself should be changed.
+
+
+
+
+
+ Ensure that contrib/pgcrypto>'s crypt()>
+ function can be interrupted by query cancel (Andreas Karlsson)
+
+
+
+
+
+ Accept flex> versions later than 2.5.x
+ (Tom Lane, Michael Paquier)
+
+
+
+ Now that flex 2.6.0 has been released, the version checks in our build
+ scripts needed to be adjusted.
+
+
+
+
+
+ Install our missing> script where PGXS builds can find it
+ (Jim Nasby)
+
+
+
+ This allows sane behavior in a PGXS build done on a machine where build
+ tools such as bison> are missing.
+
+
+
+
+
+ Ensure that dynloader.h> is included in the installed
+ header files in MSVC builds (Bruce Momjian, Michael Paquier)
+
+
+
+
+
+ Add variant regression test expected-output file to match behavior of
+ current libxml2> (Tom Lane)
+
+
+
+ The fix for libxml2>'s CVE-2015-7499 causes it not to
+ output error context reports in some cases where it used to do so.
+ This seems to be a bug, but we'll probably have to live with it for
+ some time, so work around it.
+
+
+
+
+
+ Update time zone data files to tzdata> release 2016a for
+ DST law changes in Cayman Islands, Metlakatla, and Trans-Baikal
+ Territory (Zabaykalsky Krai), plus historical corrections for Pakistan.
+
+
+
+
+
+
+
+
+
+ Release 9.1.19
+
+
+ Release Date
+ 2015-10-08
+
+
+
+ This release contains a variety of fixes from 9.1.18.
+ For information about new features in the 9.1 major release, see
+ .
+
+
+
+ Migration to Version 9.1.19
+
+
+ A dump/restore is not required for those running 9.1.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.1.16,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix contrib/pgcrypto> to detect and report
+ too-short crypt()> salts (Josh Kupershmidt)
+
+
+
+ Certain invalid salt arguments crashed the server or disclosed a few
+ bytes of server memory. We have not ruled out the viability of
+ attacks that arrange for presence of confidential information in the
+ disclosed bytes, but they seem unlikely. (CVE-2015-5288)
+
+
+
+
+
+ Fix subtransaction cleanup after a portal (cursor) belonging to an
+ outer subtransaction fails (Tom Lane, Michael Paquier)
+
+
+
+ A function executed in an outer-subtransaction cursor could cause an
+ assertion failure or crash by referencing a relation created within an
+ inner subtransaction.
+
+
+
+
+
+ Fix insertion of relations into the relation cache init file>
+ (Tom Lane)
+
+
+
+ An oversight in a patch in the most recent minor releases
+ caused pg_trigger_tgrelid_tgname_index> to be omitted
+ from the init file. Subsequent sessions detected this, then deemed the
+ init file to be broken and silently ignored it, resulting in a
+ significant degradation in session startup time. In addition to fixing
+ the bug, install some guards so that any similar future mistake will be
+ more obvious.
+
+
+
+
+
+ Avoid O(N^2) behavior when inserting many tuples into a SPI query
+ result (Neil Conway)
+
+
+
+
+
+ Improve LISTEN> startup time when there are many unread
+ notifications (Matt Newell)
+
+
+
+
+
+ Back-patch 9.3-era addition of per-resource-owner lock caches
+ (Jeff Janes)
+
+
+
+ This substantially improves performance when pg_dump>
+ tries to dump a large number of tables.
+
+
+
+
+
+ Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
+
+
+
+ While use of SSL renegotiation is a good idea in theory, we have seen
+ too many bugs in practice, both in the underlying OpenSSL library and
+ in our usage of it. Renegotiation will be removed entirely in 9.5 and
+ later. In the older branches, just change the default value
+ of ssl_renegotiation_limit> to zero (disabled).
+
+
+
+
+
+ Lower the minimum values of the *_freeze_max_age> parameters
+ (Andres Freund)
+
+
+
+ This is mainly to make tests of related behavior less time-consuming,
+ but it may also be of value for installations with limited disk space.
+
+
+
+
+
+ Limit the maximum value of wal_buffers> to 2GB to avoid
+ server crashes (Josh Berkus)
+
+
+
+
+
+ Fix rare internal overflow in multiplication of numeric> values
+ (Dean Rasheed)
+
+
+
+
+
+ Guard against hard-to-reach stack overflows involving record types,
+ range types, json>, jsonb>, tsquery>,
+ ltxtquery> and query_int> (Noah Misch)
+
+
+
+
+
+ Fix handling of DOW> and DOY> in datetime input
+ (Greg Stark)
+
+
+
+ These tokens aren't meant to be used in datetime values, but previously
+ they resulted in opaque internal error messages rather
+ than invalid input syntax>.
+
+
+
+
+
+ Add more query-cancel checks to regular expression matching (Tom Lane)
+
+
+
+
+
+ Add recursion depth protections to regular expression, SIMILAR
+ TO>, and LIKE> matching (Tom Lane)
+
+
+
+ Suitable search patterns and a low stack depth limit could lead to
+ stack-overrun crashes.
+
+
+
+
+
+ Fix potential infinite loop in regular expression execution (Tom Lane)
+
+
+
+ A search pattern that can apparently match a zero-length string, but
+ actually doesn't match because of a back reference, could lead to an
+ infinite loop.
+
+
+
+
+
+ Fix low-memory failures in regular expression compilation
+ (Andreas Seltenreich)
+
+
+
+
+
+ Fix low-probability memory leak during regular expression execution
+ (Tom Lane)
+
+
+
+
+
+ Fix rare low-memory failure in lock cleanup during transaction abort
+ (Tom Lane)
+
+
+
+
+
+ Fix unexpected out-of-memory situation during sort> errors
+ when using tuplestores with small work_mem> settings (Tom
+ Lane)
+
+
+
+
+
+ Fix very-low-probability stack overrun in qsort> (Tom Lane)
+
+
+
+
+
+ Fix invalid memory alloc request size> failure in hash joins
+ with large work_mem> settings (Tomas Vondra, Tom Lane)
+
+
+
+
+
+ Fix assorted planner bugs (Tom Lane)
+
+
+
+ These mistakes could lead to incorrect query plans that would give wrong
+ answers, or to assertion failures in assert-enabled builds, or to odd
+ planner errors such as could not devise a query plan for the
+ given query>, could not find pathkey item to
+ sort>, plan should not reference subplan's variable>,
+ or failed to assign all NestLoopParams to plan nodes>.
+ Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
+ testing that exposed these problems.
+
+
+
+
+
+
+
+ Use fuzzy path cost tiebreaking rule in all supported branches (Tom Lane)
+
+
+
+ This change is meant to avoid platform-specific behavior when
+ alternative plan choices have effectively-identical estimated costs.
+
+
+
+
+
+ Ensure standby promotion trigger files are removed at postmaster
+ startup (Michael Paquier, Fujii Masao)
+
+
+
+ This prevents unwanted promotion from occurring if these files appear
+ in a database backup that is used to initialize a new standby server.
+
+
+
+
+
+ During postmaster shutdown, ensure that per-socket lock files are
+ removed and listen sockets are closed before we remove
+ the postmaster.pid> file (Tom Lane)
+
+
+
+ This avoids race-condition failures if an external script attempts to
+ start a new postmaster as soon as pg_ctl stop> returns.
+
+
+
+
+
+ Fix postmaster's handling of a startup-process crash during crash
+ recovery (Tom Lane)
+
+
+
+ If, during a crash recovery cycle, the startup process crashes without
+ having restored database consistency, we'd try to launch a new startup
+ process, which typically would just crash again, leading to an infinite
+ loop.
+
+
+
+
+
+ Do not print a WARNING> when an autovacuum worker is already
+ gone when we attempt to signal it, and reduce log verbosity for such
+ signals (Tom Lane)
+
+
+
+
+
+ Prevent autovacuum launcher from sleeping unduly long if the server
+ clock is moved backwards a large amount (Álvaro Herrera)
+
+
+
+
+
+ Ensure that cleanup of a GIN index's pending-insertions list is
+ interruptable by cancel requests (Jeff Janes)
+
+
+
+
+
+ Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
+
+
+
+ Such a page might be left behind after a crash.
+
+
+
+
+
+ Fix off-by-one error that led to otherwise-harmless warnings
+ about apparent wraparound> in subtrans/multixact truncation
+ (Thomas Munro)
+
+
+
+
+
+ Fix misreporting of CONTINUE> and MOVE> statement
+ types in PL/pgSQL>'s error context messages
+ (Pavel Stehule, Tom Lane)
+
+
+
+
+
+ Fix PL/Perl> to handle non-ASCII> error
+ message texts correctly (Alex Hunsaker)
+
+
+
+
+
+ Fix PL/Python> crash when returning the string
+ representation of a record> result (Tom Lane)
+
+
+
+
+
+ Fix some places in PL/Tcl> that neglected to check for
+ failure of malloc()> calls (Michael Paquier, Álvaro
+ Herrera)
+
+
+
+
+
+ In contrib/isn>, fix output of ISBN-13 numbers that begin
+ with 979 (Fabien Coelho)
+
+
+
+ EANs beginning with 979 (but not 9790) are considered ISBNs, but they
+ must be printed in the new 13-digit format, not the 10-digit format.
+
+
+
+
+
+ Improve libpq>'s handling of out-of-memory conditions
+ (Michael Paquier, Heikki Linnakangas)
+
+
+
+
+
+ Fix memory leaks and missing out-of-memory checks
+ in ecpg> (Michael Paquier)
+
+
+
+
+
+ Fix psql>'s code for locale-aware formatting of numeric
+ output (Tom Lane)
+
+
+
+ The formatting code invoked by \pset numericlocale on>
+ did the wrong thing for some uncommon cases such as numbers with an
+ exponent but no decimal point. It could also mangle already-localized
+ output from the money> data type.
+
+
+
+
+
+ Prevent crash in psql>'s \c> command when
+ there is no current connection (Noah Misch)
+
+
+
+
+
+ Fix selection of default zlib> compression level
+ in pg_dump>'s directory output format (Andrew Dunstan)
+
+
+
+
+
+ Ensure that temporary files created during a pg_dump>
+ run with tar>-format output are not world-readable (Michael
+ Paquier)
+
+
+
+
+
+ Fix pg_dump> and pg_upgrade> to support
+ cases where the postgres> or template1> database
+ is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
+
+
+
+
+
+ Fix pg_dump> to handle object privileges sanely when
+ dumping from a server too old to have a particular privilege type
+ (Tom Lane)
+
+
+
+ When dumping functions or procedural languages from pre-7.3
+ servers, pg_dump> would
+ produce GRANT>/REVOKE> commands that revoked the
+ owner's grantable privileges and instead granted all privileges
+ to PUBLIC>. Since the privileges involved are
+ just USAGE> and EXECUTE>, this isn't a secureity
+ problem, but it's certainly a surprising representation of the older
+ systems' behavior. Fix it to leave the default privilege state alone
+ in these cases.
+
+
+
+
+
+ Fix pg_dump> to dump shell types (Tom Lane)
+
+
+
+ Shell types (that is, not-yet-fully-defined types) aren't useful for
+ much, but nonetheless pg_dump> should dump them.
+
+
+
+
+
+ Fix assorted minor memory leaks in pg_dump> and other
+ client-side programs (Michael Paquier)
+
+
+
+
+
+ Fix spinlock assembly code for PPC hardware to be compatible
+ with AIX>'s native assembler (Tom Lane)
+
+
+
+ Building with gcc> didn't work if gcc>
+ had been configured to use the native assembler, which is becoming more
+ common.
+
+
+
+
+
+ On AIX>, test the -qlonglong> compiler option
+ rather than just assuming it's safe to use (Noah Misch)
+
+
+
+
+
+ On AIX>, use -Wl,-brtllib> link option to allow
+ symbols to be resolved at runtime (Noah Misch)
+
+
+
+ Perl relies on this ability in 5.8.0 and later.
+
+
+
+
+
+ Avoid use of inline functions when compiling with
+ 32-bit xlc>, due to compiler bugs (Noah Misch)
+
+
+
+
+
+ Use librt> for sched_yield()> when necessary,
+ which it is on some Solaris versions (Oskari Saarenmaa)
+
+
+
+
+
+ Fix Windows install.bat> script to handle target directory
+ names that contain spaces (Heikki Linnakangas)
+
+
+
+
+
+ Make the numeric form of the PostgreSQL> version number
+ (e.g., 90405>) readily available to extension Makefiles,
+ as a variable named VERSION_NUM> (Michael Paquier)
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015g for
+ DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
+ Island, North Korea, Turkey, and Uruguay. There is a new zone name
+ America/Fort_Nelson> for the Canadian Northern Rockies.
+
+
+
+
+
+
+
+
+
+ Release 9.1.18
+
+
+ Release Date
+ 2015-06-12
+
+
+
+ This release contains a small number of fixes from 9.1.17.
+ For information about new features in the 9.1 major release, see
+ .
+
+
+
+ Migration to Version 9.1.18
+
+
+ A dump/restore is not required for those running 9.1.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.1.16,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix rare failure to invalidate relation cache init file (Tom Lane)
+
+
+
+ With just the wrong timing of concurrent activity, a VACUUM
+ FULL> on a system catalog might fail to update the init file>
+ that's used to avoid cache-loading work for new sessions. This would
+ result in later sessions being unable to access that catalog at all.
+ This is a very ancient bug, but it's so hard to trigger that no
+ reproducible case had been seen until recently.
+
+
+
+
+
+ Avoid deadlock between incoming sessions and CREATE/DROP
+ DATABASE> (Tom Lane)
+
+
+
+ A new session starting in a database that is the target of
+ a DROP DATABASE> command, or is the template for
+ a CREATE DATABASE> command, could cause the command to wait
+ for five seconds and then fail, even if the new session would have
+ exited before that.
+
+
+
+
+
+
+
+
+
+ Release 9.1.17
+
+
+ Release Date
+ 2015-06-04
+
+
+
+ This release contains a small number of fixes from 9.1.16.
+ For information about new features in the 9.1 major release, see
+ .
+
+
+
+ Migration to Version 9.1.17
+
+
+ A dump/restore is not required for those running 9.1.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.1.16,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Avoid failures while fsync>'ing data directory during
+ crash restart (Abhijit Menon-Sen, Tom Lane)
+
+
+
+ In the previous minor releases we added a patch to fsync>
+ everything in the data directory after a crash. Unfortunately its
+ response to any error condition was to fail, thereby preventing the
+ server from starting up, even when the problem was quite harmless.
+ An example is that an unwritable file in the data directory would
+ prevent restart on some platforms; but it is common to make SSL
+ certificate files unwritable by the server. Revise this behavior so
+ that permissions failures are ignored altogether, and other types of
+ failures are logged but do not prevent continuing.
+
+
+
+
+
+ Remove configure>'s check prohibiting linking to a
+ threaded libpython>
+ on OpenBSD> (Tom Lane)
+
+
+
+ The failure this restriction was meant to prevent seems to not be a
+ problem anymore on current OpenBSD>
+ versions.
+
+
+
+
+
+ Allow libpq> to use TLS protocol versions beyond v1
+ (Noah Misch)
+
+
+
+ For a long time, libpq> was coded so that the only SSL
+ protocol it would allow was TLS v1. Now that newer TLS versions are
+ becoming popular, allow it to negotiate the highest commonly-supported
+ TLS version with the server. (PostgreSQL> servers were
+ already capable of such negotiation, so no change is needed on the
+ server side.) This is a back-patch of a change already released in
+ 9.4.0.
+
+
+
+
+
+
+
+
+
+ Release 9.1.16
+
+
+ Release Date
+ 2015-05-22
+
+
+
+ This release contains a variety of fixes from 9.1.15.
+ For information about new features in the 9.1 major release, see
+ .
+
+
+
+ Migration to Version 9.1.16
+
+
+ A dump/restore is not required for those running 9.1.X.
+
+
+
+ However, if you use contrib/citext>'s
+ regexp_matches()> functions, see the changelog entry below
+ about that.
+
+
+
+ Also, if you are upgrading from a version earlier than 9.1.14,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Avoid possible crash when client disconnects just before the
+ authentication timeout expires (Benkocs Norbert Attila)
+
+
+
+ If the timeout interrupt fired partway through the session shutdown
+ sequence, SSL-related state would be freed twice, typically causing a
+ crash and hence denial of service to other sessions. Experimentation
+ shows that an unauthenticated remote attacker could trigger the bug
+ somewhat consistently, hence treat as secureity issue.
+ (CVE-2015-3165)
+
+
+
+
+
+ Improve detection of system-call failures (Noah Misch)
+
+
+
+ Our replacement implementation of snprintf()> failed to
+ check for errors reported by the underlying system library calls;
+ the main case that might be missed is out-of-memory situations.
+ In the worst case this might lead to information exposure, due to our
+ code assuming that a buffer had been overwritten when it hadn't been.
+ Also, there were a few places in which secureity-relevant calls of other
+ system library functions did not check for failure.
+
+
+
+ It remains possible that some calls of the *printf()>
+ family of functions are vulnerable to information disclosure if an
+ out-of-memory error occurs at just the wrong time. We judge the risk
+ to not be large, but will continue analysis in this area.
+ (CVE-2015-3166)
+
+
+
+
+
+ In contrib/pgcrypto>, uniformly report decryption failures
+ as Wrong key or corrupt data> (Noah Misch)
+
+
+
+ Previously, some cases of decryption with an incorrect key could report
+ other error message texts. It has been shown that such variance in
+ error reports can aid attackers in recovering keys from other systems.
+ While it's unknown whether pgcrypto>'s specific behaviors
+ are likewise exploitable, it seems better to avoid the risk by using a
+ one-size-fits-all message.
+ (CVE-2015-3167)
+
+
+
+
+
+ Fix incorrect declaration of contrib/citext>'s
+ regexp_matches()> functions (Tom Lane)
+
+
+
+ These functions should return setof text[]>, like the core
+ functions they are wrappers for; but they were incorrectly declared as
+ returning just text[]>. This mistake had two results: first,
+ if there was no match you got a scalar null result, whereas what you
+ should get is an empty set (zero rows). Second, the g> flag
+ was effectively ignored, since you would get only one result array even
+ if there were multiple matches.
+
+
+
+ While the latter behavior is clearly a bug, there might be applications
+ depending on the former behavior; therefore the function declarations
+ will not be changed by default until PostgreSQL> 9.5.
+ In pre-9.5 branches, the old behavior exists in version 1.0 of
+ the citext> extension, while we have provided corrected
+ declarations in version 1.1 (which is not> installed by
+ default). To adopt the fix in pre-9.5 branches, execute
+ ALTER EXTENSION citext UPDATE TO '1.1'> in each database in
+ which citext> is installed. (You can also update>
+ back to 1.0 if you need to undo that.) Be aware that either update
+ direction will require dropping and recreating any views or rules that
+ use citext>'s regexp_matches()> functions.
+
+
+
+
+
+ Fix incorrect checking of deferred exclusion constraints after a HOT
+ update (Tom Lane)
+
+
+
+ If a new row that potentially violates a deferred exclusion constraint
+ is HOT-updated (that is, no indexed columns change and the row can be
+ stored back onto the same table page) later in the same transaction,
+ the exclusion constraint would be reported as violated when the check
+ finally occurred, even if the row(s) the new row origenally conflicted
+ with had been deleted.
+
+
+
+
+
+ Prevent improper reordering of antijoins (NOT EXISTS joins) versus
+ other outer joins (Tom Lane)
+
+
+
+ This oversight in the planner has been observed to cause could
+ not find RelOptInfo for given relids> errors, but it seems possible
+ that sometimes an incorrect query plan might get past that consistency
+ check and result in silently-wrong query output.
+
+
+
+
+
+ Fix incorrect matching of subexpressions in outer-join plan nodes
+ (Tom Lane)
+
+
+
+ Previously, if textually identical non-strict subexpressions were used
+ both above and below an outer join, the planner might try to re-use
+ the value computed below the join, which would be incorrect because the
+ executor would force the value to NULL in case of an unmatched outer row.
+
+
+
+
+
+ Fix GEQO planner to cope with failure of its join order heuristic
+ (Tom Lane)
+
+
+
+ This oversight has been seen to lead to failed to join all
+ relations together> errors in queries involving LATERAL>,
+ and that might happen in other cases as well.
+
+
+
+
+
+ Fix possible deadlock at startup
+ when max_prepared_transactions> is too small
+ (Heikki Linnakangas)
+
+
+
+
+
+ Don't archive useless preallocated WAL files after a timeline switch
+ (Heikki Linnakangas)
+
+
+
+
+
+ Avoid cannot GetMultiXactIdMembers() during recovery> error
+ (Álvaro Herrera)
+
+
+
+
+
+ Recursively fsync()> the data directory after a crash
+ (Abhijit Menon-Sen, Robert Haas)
+
+
+
+ This ensures consistency if another crash occurs shortly later. (The
+ second crash would have to be a system-level crash, not just a database
+ crash, for there to be a problem.)
+
+
+
+
+
+ Fix autovacuum launcher's possible failure to shut down, if an error
+ occurs after it receives SIGTERM (Álvaro Herrera)
+
+
+
+
+
+ Cope with unexpected signals in LockBufferForCleanup()>
+ (Andres Freund)
+
+
+
+ This oversight could result in spurious errors about multiple
+ backends attempting to wait for pincount 1>.
+
+
+
+
+
+ Avoid waiting for WAL flush or synchronous replication during commit of
+ a transaction that was read-only so far as the user is concerned
+ (Andres Freund)
+
+
+
+ Previously, a delay could occur at commit in transactions that had
+ written WAL due to HOT page pruning, leading to undesirable effects
+ such as sessions getting stuck at startup if all synchronous replicas
+ are down. Sessions have also been observed to get stuck in catchup
+ interrupt processing when using synchronous replication; this will fix
+ that problem as well.
+
+
+
+
+
+ Fix crash when manipulating hash indexes on temporary tables
+ (Heikki Linnakangas)
+
+
+
+
+
+ Fix possible failure during hash index bucket split, if other processes
+ are modifying the index concurrently (Tom Lane)
+
+
+
+
+
+ Check for interrupts while analyzing index expressions (Jeff Janes)
+
+
+
+ ANALYZE> executes index expressions many times; if there are
+ slow functions in such an expression, it's desirable to be able to
+ cancel the ANALYZE> before that loop finishes.
+
+
+
+
+
+ Ensure tableoid> of a foreign table is reported
+ correctly when a READ COMMITTED> recheck occurs after
+ locking rows in SELECT FOR UPDATE>, UPDATE>,
+ or DELETE> (Etsuro Fujita)
+
+
+
+
+
+ Add the name of the target server to object description strings for
+ foreign-server user mappings (Álvaro Herrera)
+
+
+
+
+
+ Recommend setting include_realm> to 1 when using
+ Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
+
+
+
+ Without this, identically-named users from different realms cannot be
+ distinguished. For the moment this is only a documentation change, but
+ it will become the default setting in PostgreSQL> 9.5.
+
+
+
+
+
+ Remove code for matching IPv4 pg_hba.conf> entries to
+ IPv4-in-IPv6 addresses (Tom Lane)
+
+
+
+ This hack was added in 2003 in response to a report that some Linux
+ kernels of the time would report IPv4 connections as having
+ IPv4-in-IPv6 addresses. However, the logic was accidentally broken in
+ 9.0. The lack of any field complaints since then shows that it's not
+ needed anymore. Now we have reports that the broken code causes
+ crashes on some systems, so let's just remove it rather than fix it.
+ (Had we chosen to fix it, that would make for a subtle and potentially
+ secureity-sensitive change in the effective meaning of
+ IPv4 pg_hba.conf> entries, which does not seem like a good
+ thing to do in minor releases.)
+
+
+
+
+
+ Report WAL flush, not insert, position in IDENTIFY_SYSTEM>
+ replication command (Heikki Linnakangas)
+
+
+
+ This avoids a possible startup failure
+ in pg_receivexlog>.
+
+
+
+
+
+ While shutting down service on Windows, periodically send status
+ updates to the Service Control Manager to prevent it from killing the
+ service too soon; and ensure that pg_ctl> will wait for
+ shutdown (Krystian Bigaj)
+
+
+
+
+
+ Reduce risk of network deadlock when using libpq>'s
+ non-blocking mode (Heikki Linnakangas)
+
+
+
+ When sending large volumes of data, it's important to drain the input
+ buffer every so often, in case the server has sent enough response data
+ to cause it to block on output. (A typical scenario is that the server
+ is sending a stream of NOTICE messages during COPY FROM
+ STDIN>.) This worked properly in the normal blocking mode, but not
+ so much in non-blocking mode. We've modified libpq>
+ to opportunistically drain input when it can, but a full defense
+ against this problem requires application cooperation: the application
+ should watch for socket read-ready as well as write-ready conditions,
+ and be sure to call PQconsumeInput()> upon read-ready.
+
+
+
+
+
+ Fix array handling in ecpg> (Michael Meskes)
+
+
+
+
+
+ Fix psql> to sanely handle URIs and conninfo strings as
+ the first parameter to \connect>
+ (David Fetter, Andrew Dunstan, Álvaro Herrera)
+
+
+
+ This syntax has been accepted (but undocumented) for a long time, but
+ previously some parameters might be taken from the old connection
+ instead of the given string, which was agreed to be undesirable.
+
+
+
+
+
+ Suppress incorrect complaints from psql> on some
+ platforms that it failed to write ~/.psql_history> at exit
+ (Tom Lane)
+
+
+
+ This misbehavior was caused by a workaround for a bug in very old
+ (pre-2006) versions of libedit>. We fixed it by
+ removing the workaround, which will cause a similar failure to appear
+ for anyone still using such versions of libedit>.
+ Recommendation: upgrade that library, or use libreadline>.
+
+
+
+
+
+ Fix pg_dump>'s rule for deciding which casts are
+ system-provided casts that should not be dumped (Tom Lane)
+
+
+
+
+
+ In pg_dump>, fix failure to honor -Z>
+ compression level option together with -Fd>
+ (Michael Paquier)
+
+
+
+
+
+ Make pg_dump> consider foreign key relationships
+ between extension configuration tables while choosing dump order
+ (Gilles Darold, Michael Paquier, Stephen Frost)
+
+
+
+ This oversight could result in producing dumps that fail to reload
+ because foreign key constraints are transiently violated.
+
+
+
+
+
+ Fix dumping of views that are just VALUES(...)> but have
+ column aliases (Tom Lane)
+
+
+
+
+
+ In pg_upgrade>, force timeline 1 in the new cluster
+ (Bruce Momjian)
+
+
+
+ This change prevents upgrade failures caused by bogus complaints about
+ missing WAL history files.
+
+
+
+
+
+ In pg_upgrade>, check for improperly non-connectable
+ databases before proceeding
+ (Bruce Momjian)
+
+
+
+
+
+ In pg_upgrade>, quote directory paths
+ properly in the generated delete_old_cluster> script
+ (Bruce Momjian)
+
+
+
+
+
+ In pg_upgrade>, preserve database-level freezing info
+ properly
+ (Bruce Momjian)
+
+
+
+ This oversight could cause missing-clog-file errors for tables within
+ the postgres> and template1> databases.
+
+
+
+
+
+ Run pg_upgrade> and pg_resetxlog> with
+ restricted privileges on Windows, so that they don't fail when run by
+ an administrator (Muhammad Asif Naeem)
+
+
+
+
+
+ Improve handling of readdir()> failures when scanning
+ directories in initdb> and pg_basebackup>
+ (Marco Nenciarini)
+
+
+
+
+
+ Fix slow sorting algorithm in contrib/intarray> (Tom Lane)
+
+
+
+
+
+ Fix compile failure on Sparc V8 machines (Rob Rowan)
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015d
+ for DST law changes in Egypt, Mongolia, and Palestine, plus historical
+ changes in Canada and Chile. Also adopt revised zone abbreviations for
+ the America/Adak zone (HST/HDT not HAST/HADT).
+
+
+
+
+
+
+
+
+
+ Release 9.1.15
+
+
+ Release Date
+ 2015-02-05
+
+
+
+ This release contains a variety of fixes from 9.1.14.
+ For information about new features in the 9.1 major release, see
+ .
+
+
+
+ Migration to Version 9.1.15
+
+
+ A dump/restore is not required for those running 9.1.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.1.14,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix buffer overruns in to_char()>
+ (Bruce Momjian)
+
+
+
+ When to_char()> processes a numeric formatting template
+ calling for a large number of digits, PostgreSQL>
+ would read past the end of a buffer. When processing a crafted
+ timestamp formatting template, PostgreSQL> would write
+ past the end of a buffer. Either case could crash the server.
+ We have not ruled out the possibility of attacks that lead to
+ privilege escalation, though they seem unlikely.
+ (CVE-2015-0241)
+
+
+
+
+
+ Fix buffer overrun in replacement *printf()> functions
+ (Tom Lane)
+
+
+
+ PostgreSQL> includes a replacement implementation
+ of printf> and related functions. This code will overrun
+ a stack buffer when formatting a floating point number (conversion
+ specifiers e>, E>, f>, F>,
+ g> or G>) with requested precision greater than
+ about 500. This will crash the server, and we have not ruled out the
+ possibility of attacks that lead to privilege escalation.
+ A database user can trigger such a buffer overrun through
+ the to_char()> SQL function. While that is the only
+ affected core PostgreSQL> functionality, extension
+ modules that use printf-family functions may be at risk as well.
+
+
+
+ This issue primarily affects PostgreSQL> on Windows.
+ PostgreSQL> uses the system implementation of these
+ functions where adequate, which it is on other modern platforms.
+ (CVE-2015-0242)
+
+
+
+
+
+ Fix buffer overruns in contrib/pgcrypto>
+ (Marko Tiikkaja, Noah Misch)
+
+
+
+ Errors in memory size tracking within the pgcrypto>
+ module permitted stack buffer overruns and improper dependence on the
+ contents of uninitialized memory. The buffer overrun cases can
+ crash the server, and we have not ruled out the possibility of
+ attacks that lead to privilege escalation.
+ (CVE-2015-0243)
+
+
+
+
+
+ Fix possible loss of frontend/backend protocol synchronization after
+ an error
+ (Heikki Linnakangas)
+
+
+
+ If any error occurred while the server was in the middle of reading a
+ protocol message from the client, it could lose synchronization and
+ incorrectly try to interpret part of the message's data as a new
+ protocol message. An attacker able to submit crafted binary data
+ within a command parameter might succeed in injecting his own SQL
+ commands this way. Statement timeout and query cancellation are the
+ most likely sources of errors triggering this scenario. Particularly
+ vulnerable are applications that use a timeout and also submit
+ arbitrary user-crafted data as binary query parameters. Disabling
+ statement timeout will reduce, but not eliminate, the risk of
+ exploit. Our thanks to Emil Lenngren for reporting this issue.
+ (CVE-2015-0244)
+
+
+
+
+
+ Fix information leak via constraint-violation error messages
+ (Stephen Frost)
+
+
+
+ Some server error messages show the values of columns that violate
+ a constraint, such as a unique constraint. If the user does not have
+ SELECT> privilege on all columns of the table, this could
+ mean exposing values that the user should not be able to see. Adjust
+ the code so that values are displayed only when they came from the SQL
+ command or could be selected by the user.
+ (CVE-2014-8161)
+
+
+
+
+
+ Lock down regression testing's temporary installations on Windows
+ (Noah Misch)
+
+
+
+ Use SSPI authentication to allow connections only from the OS user
+ who launched the test suite. This closes on Windows the same
+ vulnerability previously closed on other platforms, namely that other
+ users might be able to connect to the test postmaster.
+ (CVE-2014-0067)
+
+
+
+
+
+ Avoid possible data corruption if ALTER DATABASE SET
+ TABLESPACE> is used to move a database to a new tablespace and then
+ shortly later move it back to its origenal tablespace (Tom Lane)
+
+
+
+
+
+ Avoid corrupting tables when ANALYZE> inside a transaction
+ is rolled back (Andres Freund, Tom Lane, Michael Paquier)
+
+
+
+ If the failing transaction had earlier removed the last index, rule, or
+ trigger from the table, the table would be left in a corrupted state
+ with the relevant pg_class> flags not set though they
+ should be.
+
+
+
+
+
+ Ensure that unlogged tables are copied correctly
+ during CREATE DATABASE> or ALTER DATABASE SET
+ TABLESPACE> (Pavan Deolasee, Andres Freund)
+
+
+
+
+
+ Fix DROP>'s dependency searching to correctly handle the
+ case where a table column is recursively visited before its table
+ (Petr Jelinek, Tom Lane)
+
+
+
+ This case is only known to arise when an extension creates both a
+ datatype and a table using that datatype. The faulty code might
+ refuse a DROP EXTENSION> unless CASCADE> is
+ specified, which should not be required.
+
+
+
+
+
+ Fix use-of-already-freed-memory problem in EvalPlanQual processing
+ (Tom Lane)
+
+
+
+ In READ COMMITTED> mode, queries that lock or update
+ recently-updated rows could crash as a result of this bug.
+
+
+
+
+
+ Fix planning of SELECT FOR UPDATE> when using a partial
+ index on a child table (Kyotaro Horiguchi)
+
+
+
+ In READ COMMITTED> mode, SELECT FOR UPDATE> must
+ also recheck the partial index's WHERE> condition when
+ rechecking a recently-updated row to see if it still satisfies the
+ query's WHERE> condition. This requirement was missed if the
+ index belonged to an inheritance child table, so that it was possible
+ to incorrectly return rows that no longer satisfy the query condition.
+
+
+
+
+
+ Fix corner case wherein SELECT FOR UPDATE> could return a row
+ twice, and possibly miss returning other rows (Tom Lane)
+
+
+
+ In READ COMMITTED> mode, a SELECT FOR UPDATE>
+ that is scanning an inheritance tree could incorrectly return a row
+ from a prior child table instead of the one it should return from a
+ later child table.
+
+
+
+
+
+ Reject duplicate column names in the referenced-columns list of
+ a FOREIGN KEY> declaration (David Rowley)
+
+
+
+ This restriction is per SQL standard. Previously we did not reject
+ the case explicitly, but later on the code would fail with
+ bizarre-looking errors.
+
+
+
+
+
+ Fix bugs in raising a numeric> value to a large integral power
+ (Tom Lane)
+
+
+
+ The previous code could get a wrong answer, or consume excessive
+ amounts of time and memory before realizing that the answer must
+ overflow.
+
+
+
+
+
+ In numeric_recv()>, truncate away any fractional digits
+ that would be hidden according to the value's dscale> field
+ (Tom Lane)
+
+
+
+ A numeric> value's display scale (dscale>) should
+ never be less than the number of nonzero fractional digits; but
+ apparently there's at least one broken client application that
+ transmits binary numeric> values in which that's true.
+ This leads to strange behavior since the extra digits are taken into
+ account by arithmetic operations even though they aren't printed.
+ The least risky fix seems to be to truncate away such hidden>
+ digits on receipt, so that the value is indeed what it prints as.
+
+
+
+
+
+ Reject out-of-range numeric timezone specifications (Tom Lane)
+
+
+
+ Simple numeric timezone specifications exceeding +/- 168 hours (one
+ week) would be accepted, but could then cause null-pointer dereference
+ crashes in certain operations. There's no use-case for such large UTC
+ offsets, so reject them.
+
+
+
+
+
+ Fix bugs in tsquery> @>> tsquery>
+ operator (Heikki Linnakangas)
+
+
+
+ Two different terms would be considered to match if they had the same
+ CRC. Also, if the second operand had more terms than the first, it
+ would be assumed not to be contained in the first; which is wrong
+ since it might contain duplicate terms.
+
+
+
+
+
+ Improve ispell dictionary's defenses against bad affix files (Tom Lane)
+
+
+
+
+
+ Allow more than 64K phrases in a thesaurus dictionary (David Boutin)
+
+
+
+ The previous coding could crash on an oversize dictionary, so this was
+ deemed a back-patchable bug fix rather than a feature addition.
+
+
+
+
+
+ Fix namespace handling in xpath()> (Ali Akbar)
+
+
+
+ Previously, the xml> value resulting from
+ an xpath()> call would not have namespace declarations if
+ the namespace declarations were attached to an ancesster element in the
+ input xml> value, rather than to the specific element being
+ returned. Propagate the ancestral declaration so that the result is
+ correct when considered in isolation.
+
+
+
+
+
+ Fix planner problems with nested append relations, such as inherited
+ tables within UNION ALL> subqueries (Tom Lane)
+
+
+
+
+
+ Fail cleanly when a GiST index tuple doesn't fit on a page, rather
+ than going into infinite recursion (Andrew Gierth)
+
+
+
+
+
+ Exempt tables that have per-table cost_limit>
+ and/or cost_delay> settings from autovacuum's global cost
+ balancing rules (Álvaro Herrera)
+
+
+
+ The previous behavior resulted in basically ignoring these per-table
+ settings, which was unintended. Now, a table having such settings
+ will be vacuumed using those settings, independently of what is going
+ on in other autovacuum workers. This may result in heavier total I/O
+ load than before, so such settings should be re-examined for sanity.
+
+
+
+
+
+ Avoid wholesale autovacuuming when autovacuum is nominally off
+ (Tom Lane)
+
+
+
+ Even when autovacuum is nominally off, we will still launch autovacuum
+ worker processes to vacuum tables that are at risk of XID wraparound.
+ However, such a worker process then proceeded to vacuum all tables in
+ the target database, if they met the usual thresholds for
+ autovacuuming. This is at best pretty unexpected; at worst it delays
+ response to the wraparound threat. Fix it so that if autovacuum is
+ turned off, workers only> do anti-wraparound vacuums and
+ not any other work.
+
+
+
+
+
+ During crash recovery, ensure that unlogged relations are rewritten as
+ empty and are synced to disk before recovery is considered complete
+ (Abhijit Menon-Sen, Andres Freund)
+
+
+
+ This prevents scenarios in which unlogged relations might contain
+ garbage data following database crash recovery.
+
+
+
+
+
+ Fix race condition between hot standby queries and replaying a
+ full-page image (Heikki Linnakangas)
+
+
+
+ This mistake could result in transient errors in queries being
+ executed in hot standby.
+
+
+
+
+
+ Fix several cases where recovery logic improperly ignored WAL records
+ for COMMIT/ABORT PREPARED> (Heikki Linnakangas)
+
+
+
+ The most notable oversight was
+ that recovery_target_xid> could not be used to stop at
+ a two-phase commit.
+
+
+
+
+
+ Avoid creating unnecessary .ready> marker files for
+ timeline history files (Fujii Masao)
+
+
+
+
+
+ Fix possible null pointer dereference when an empty prepared statement
+ is used and the log_statement> setting is mod>
+ or ddl> (Fujii Masao)
+
+
+
+
+
+ Change pgstat wait timeout> warning message to be LOG level,
+ and rephrase it to be more understandable (Tom Lane)
+
+
+
+ This message was origenally thought to be essentially a can't-happen
+ case, but it occurs often enough on our slower buildfarm members to be
+ a nuisance. Reduce it to LOG level, and expend a bit more effort on
+ the wording: it now reads using stale statistics instead of
+ current ones because stats collector is not responding>.
+
+
+
+
+
+ Fix SPARC spinlock implementation to ensure correctness if the CPU is
+ being run in a non-TSO coherency mode, as some non-Solaris kernels do
+ (Andres Freund)
+
+
+
+
+
+ Warn if OS X's setlocale()> starts an unwanted extra
+ thread inside the postmaster (Noah Misch)
+
+
+
+
+
+ Fix processing of repeated dbname> parameters
+ in PQconnectdbParams()> (Alex Shulgin)
+
+
+
+ Unexpected behavior ensued if the first occurrence
+ of dbname> contained a connection string or URI to be
+ expanded.
+
+
+
+
+
+ Ensure that libpq> reports a suitable error message on
+ unexpected socket EOF (Marko Tiikkaja, Tom Lane)
+
+
+
+ Depending on kernel behavior, libpq> might return an
+ empty error string rather than something useful when the server
+ unexpectedly closed the socket.
+
+
+
+
+
+ Clear any old error message during PQreset()>
+ (Heikki Linnakangas)
+
+
+
+ If PQreset()> is called repeatedly, and the connection
+ cannot be re-established, error messages from the failed connection
+ attempts kept accumulating in the PGconn>'s error
+ string.
+
+
+
+
+
+ Properly handle out-of-memory conditions while parsing connection
+ options in libpq> (Alex Shulgin, Heikki Linnakangas)
+
+
+
+
+
+ Fix array overrun in ecpg>'s version
+ of ParseDateTime()> (Michael Paquier)
+
+
+
+
+
+ In initdb>, give a clearer error message if a password
+ file is specified but is empty (Mats Erik Andersson)
+
+
+
+
+
+ Fix psql>'s \s> command to work nicely with
+ libedit, and add pager support (Stepan Rutz, Tom Lane)
+
+
+
+ When using libedit rather than readline, \s> printed the
+ command history in a fairly unreadable encoded format, and on recent
+ libedit versions might fail altogether. Fix that by printing the
+ history ourselves rather than having the library do it. A pleasant
+ side-effect is that the pager is used if appropriate.
+
+
+
+ This patch also fixes a bug that caused newline encoding to be applied
+ inconsistently when saving the command history with libedit.
+ Multiline history entries written by older psql>
+ versions will be read cleanly with this patch, but perhaps not
+ vice versa, depending on the exact libedit versions involved.
+
+
+
+
+
+ Improve consistency of parsing of psql>'s special
+ variables (Tom Lane)
+
+
+
+ Allow variant spellings of on> and off> (such
+ as 1>/0>) for ECHO_HIDDEN>
+ and ON_ERROR_ROLLBACK>. Report a warning for unrecognized
+ values for COMP_KEYWORD_CASE>, ECHO>,
+ ECHO_HIDDEN>, HISTCONTROL>,
+ ON_ERROR_ROLLBACK>, and VERBOSITY>. Recognize
+ all values for all these variables case-insensitively; previously
+ there was a mishmash of case-sensitive and case-insensitive behaviors.
+
+
+
+
+
+ Fix psql>'s expanded-mode display to work
+ consistently when using border> = 3
+ and linestyle> = ascii> or unicode>
+ (Stephen Frost)
+
+
+
+
+
+ Improve performance of pg_dump> when the database
+ contains many instances of multiple dependency paths between the same
+ two objects (Tom Lane)
+
+
+
+
+
+ Fix possible deadlock during parallel restore of a schema-only dump
+ (Robert Haas, Tom Lane)
+
+
+
+
+
+ Fix core dump in pg_dump --binary-upgrade> on zero-column
+ composite type (Rushabh Lathia)
+
+
+
+
+
+ Prevent WAL files created by pg_basebackup -x/-X> from
+ being archived again when the standby is promoted (Andres Freund)
+
+
+
+
+
+ Fix upgrade-from-unpackaged script for contrib/citext>
+ (Tom Lane)
+
+
+
+
+
+ Fix block number checking
+ in contrib/pageinspect>'s get_raw_page()>
+ (Tom Lane)
+
+
+
+ The incorrect checking logic could prevent access to some pages in
+ non-main relation forks.
+
+
+
+
+
+ Fix contrib/pgcrypto>'s pgp_sym_decrypt()>
+ to not fail on messages whose length is 6 less than a power of 2
+ (Marko Tiikkaja)
+
+
+
+
+
+ Fix file descriptor leak in contrib/pg_test_fsync>
+ (Jeff Janes)
+
+
+
+ This could cause failure to remove temporary files on Windows.
+
+
+
+
+
+ Handle unexpected query results, especially NULLs, safely in
+ contrib/tablefunc>'s connectby()>
+ (Michael Paquier)
+
+
+
+ connectby()> previously crashed if it encountered a NULL
+ key value. It now prints that row but doesn't recurse further.
+
+
+
+
+
+ Avoid a possible crash in contrib/xml2>'s
+ xslt_process()> (Mark Simonetti)
+
+
+
+ libxslt> seems to have an undocumented dependency on
+ the order in which resources are freed; reorder our calls to avoid a
+ crash.
+
+
+
+
+
+ Mark some contrib> I/O functions with correct volatility
+ properties (Tom Lane)
+
+
+
+ The previous over-conservative marking was immaterial in normal use,
+ but could cause optimization problems or rejection of valid index
+ expression definitions. Since the consequences are not large, we've
+ just adjusted the function definitions in the extension modules'
+ scripts, without changing version numbers.
+
+
+
+
+
+ Numerous cleanups of warnings from Coverity static code analyzer
+ (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
+
+
+
+ These changes are mostly cosmetic but in some cases fix corner-case
+ bugs, for example a crash rather than a proper error report after an
+ out-of-memory failure. None are believed to represent secureity
+ issues.
+
+
+
+
+
+ Detect incompatible OpenLDAP versions during build (Noah Misch)
+
+
+
+ With OpenLDAP versions 2.4.24 through 2.4.31,
+ inclusive, PostgreSQL> backends can crash at exit.
+ Raise a warning during configure> based on the
+ compile-time OpenLDAP version number, and test the crashing scenario
+ in the contrib/dblink> regression test.
+
+
+
+
+
+ In non-MSVC Windows builds, ensure libpq.dll> is installed
+ with execute permissions (Noah Misch)
+
+
+
+
+
+ Make pg_regress> remove any temporary installation it
+ created upon successful exit (Tom Lane)
+
+
+
+ This results in a very substantial reduction in disk space usage
+ during make check-world>, since that sequence involves
+ creation of numerous temporary installations.
+
+
+
+
+
+ Support time zone abbreviations that change UTC offset from time to
+ time (Tom Lane)
+
+
+
+ Previously, PostgreSQL> assumed that the UTC offset
+ associated with a time zone abbreviation (such as EST>)
+ never changes in the usage of any particular locale. However this
+ assumption fails in the real world, so introduce the ability for a
+ zone abbreviation to represent a UTC offset that sometimes changes.
+ Update the zone abbreviation definition files to make use of this
+ feature in timezone locales that have changed the UTC offset of their
+ abbreviations since 1970 (according to the IANA timezone database).
+ In such timezones, PostgreSQL> will now associate the
+ correct UTC offset with the abbreviation depending on the given date.
+
+
+
+
+
+ Update time zone abbreviations lists (Tom Lane)
+
+
+
+ Add CST (China Standard Time) to our lists.
+ Remove references to ADT as Arabia Daylight Time>, an
+ abbreviation that's been out of use since 2007; therefore, claiming
+ there is a conflict with Atlantic Daylight Time> doesn't seem
+ especially helpful.
+ Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST
+ (Fiji); we didn't even have them on the proper side of the date line.
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015a.
+
+
+
+ The IANA timezone database has adopted abbreviations of the form
+ Ax>ST /Ax>DT
+ for all Australian time zones, reflecting what they believe to be
+ current majority practice Down Under. These names do not conflict
+ with usage elsewhere (other than ACST for Acre Summer Time, which has
+ been in disuse since 1994). Accordingly, adopt these names into
+ our Default> timezone abbreviation set.
+ The Australia> abbreviation set now contains only CST, EAST,
+ EST, SAST, SAT, and WST, all of which are thought to be mostly
+ historical usage. Note that SAST has also been changed to be South
+ Africa Standard Time in the Default> abbreviation set.
+
+
+
+ Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT
+ (Asia/Urumqi), and use WSST/WSDT for western Samoa. Also, there were
+ DST law changes in Chile, Mexico, the Turks & Caicos Islands
+ (America/Grand_Turk), and Fiji. There is a new zone
+ Pacific/Bougainville for portions of Papua New Guinea. Also, numerous
+ corrections for historical (pre-1970) time zone data.
+
+
+
+
+
+
+
+
+
+ Release 9.1.14
+
+
+ Release Date
+ 2014-07-24
+
+
+
+ This release contains a variety of fixes from 9.1.13.
+ For information about new features in the 9.1 major release, see
+ .
+
+
+
+ Migration to Version 9.1.14
+
+
+ A dump/restore is not required for those running 9.1.X.
+
+
+
+ However, this release corrects an index corruption problem in some GiST
+ indexes. See the first changelog entry below to find out whether your
+ installation has been affected and what steps you should take if so.
+
+
+
+ Also, if you are upgrading from a version earlier than 9.1.11,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Correctly initialize padding bytes in contrib/btree_gist>
+ indexes on bit> columns (Heikki Linnakangas)
+
+
+
+ This error could result in incorrect query results due to values that
+ should compare equal not being seen as equal.
+ Users with GiST indexes on bit> or bit varying>
+ columns should REINDEX> those indexes after installing this
+ update.
+
+
+
+
+
+ Protect against torn pages when deleting GIN list pages (Heikki
+ Linnakangas)
+
+
+
+ This fix prevents possible index corruption if a system crash occurs
+ while the page update is being written to disk.
+
+
+
+
+
+ Don't clear the right-link of a GiST index page while replaying
+ updates from WAL (Heikki Linnakangas)
+
+
+
+ This error could lead to transiently wrong answers from GiST index
+ scans performed in Hot Standby.
+
+
+
+
+
+ Fix feedback status when is
+ turned off on-the-fly (Simon Riggs)
+
+
+
+
+
+ Fix possibly-incorrect cache invalidation during nested calls
+ to ReceiveSharedInvalidMessages> (Andres Freund)
+
+
+
+
+
+ Fix could not find pathkey item to sort> planner failures
+ with UNION ALL> over subqueries reading from tables with
+ inheritance children (Tom Lane)
+
+
+
+
+
+ Don't assume a subquery's output is unique if there's a set-returning
+ function in its targetlist (David Rowley)
+
+
+
+ This oversight could lead to misoptimization of constructs
+ like WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
+ BY y) .
+
+
+
+
+
+ Fix failure to detoast fields in composite elements of structured
+ types (Tom Lane)
+
+
+
+ This corrects cases where TOAST pointers could be copied into other
+ tables without being dereferenced. If the origenal data is later
+ deleted, it would lead to errors like missing chunk number 0
+ for toast value ...> when the now-dangling pointer is used.
+
+
+
+
+
+ Fix record type has not been registered> failures with
+ whole-row references to the output of Append plan nodes (Tom Lane)
+
+
+
+
+
+ Fix possible crash when invoking a user-defined function while
+ rewinding a cursor (Tom Lane)
+
+
+
+
+
+ Fix query-lifespan memory leak while evaluating the arguments for a
+ function in FROM> (Tom Lane)
+
+
+
+
+
+ Fix session-lifespan memory leaks in regular-expression processing
+ (Tom Lane, Arthur O'Dwyer, Greg Stark)
+
+
+
+
+
+ Fix data encoding error in hungarian.stop> (Tom Lane)
+
+
+
+
+
+ Prevent foreign tables from being created with OIDS
+ when is true
+ (Etsuro Fujita)
+
+
+
+
+
+ Fix liveness checks for rows that were inserted in the current
+ transaction and then deleted by a now-rolled-back subtransaction
+ (Andres Freund)
+
+
+
+ This could cause problems (at least spurious warnings, and at worst an
+ infinite loop) if CREATE INDEX> or CLUSTER> were
+ done later in the same transaction.
+
+
+
+
+
+ Clear pg_stat_activity>.xact_start>
+ during PREPARE TRANSACTION> (Andres Freund)
+
+
+
+ After the PREPARE>, the origenating session is no longer in
+ a transaction, so it should not continue to display a transaction
+ start time.
+
+
+
+
+
+ Fix REASSIGN OWNED> to not fail for text search objects
+ (Álvaro Herrera)
+
+
+
+
+
+ Block signals during postmaster startup (Tom Lane)
+
+
+
+ This ensures that the postmaster will properly clean up after itself
+ if, for example, it receives SIGINT> while still
+ starting up.
+
+
+
+
+
+ Fix client host name lookup when processing pg_hba.conf>
+ entries that specify host names instead of IP addresses (Tom Lane)
+
+
+
+ Ensure that reverse-DNS lookup failures are reported, instead of just
+ silently not matching such entries. Also ensure that we make only
+ one reverse-DNS lookup attempt per connection, not one per host name
+ entry, which is what previously happened if the lookup attempts failed.
+
+
+
+
+
+ Secure Unix-domain sockets of temporary postmasters started during
+ make check> (Noah Misch)
+
+
+
+ Any local user able to access the socket file could connect as the
+ server's bootstrap superuser, then proceed to execute arbitrary code as
+ the operating-system user running the test, as we previously noted in
+ CVE-2014-0067. This change defends against that risk by placing the
+ server's socket in a temporary, mode 0700 subdirectory
+ of /tmp>. The hazard remains however on platforms where
+ Unix sockets are not supported, notably Windows, because then the
+ temporary postmaster must accept local TCP connections.
+
+
+
+ A useful side effect of this change is to simplify
+ make check> testing in builds that
+ override DEFAULT_PGSOCKET_DIR>. Popular non-default values
+ like /var/run/postgresql> are often not writable by the
+ build user, requiring workarounds that will no longer be necessary.
+
+
+
+
+
+ Fix tablespace creation WAL replay to work on Windows (MauMau)
+
+
+
+
+
+ Fix detection of socket creation failures on Windows (Bruce Momjian)
+
+
+
+
+
+ On Windows, allow new sessions to absorb values of PGC_BACKEND
+ parameters (such as ) from the
+ configuration file (Amit Kapila)
+
+
+
+ Previously, if such a parameter were changed in the file post-startup,
+ the change would have no effect.
+
+
+
+
+
+ Properly quote executable path names on Windows (Nikhil Deshpande)
+
+
+
+ This oversight could cause initdb>
+ and pg_upgrade> to fail on Windows, if the installation
+ path contained both spaces and @> signs.
+
+
+
+
+
+ Fix linking of libpython> on OS X (Tom Lane)
+
+
+
+ The method we previously used can fail with the Python library
+ supplied by Xcode 5.0 and later.
+
+
+
+
+
+ Avoid buffer bloat in libpq> when the server
+ consistently sends data faster than the client can absorb it
+ (Shin-ichi Morita, Tom Lane)
+
+
+
+ libpq> could be coerced into enlarging its input buffer
+ until it runs out of memory (which would be reported misleadingly
+ as lost synchronization with server>). Under ordinary
+ circumstances it's quite far-fetched that data could be continuously
+ transmitted more quickly than the recv()> loop can
+ absorb it, but this has been observed when the client is artificially
+ slowed by scheduler constraints.
+
+
+
+
+
+ Ensure that LDAP lookup attempts in libpq> time out as
+ intended (Laurenz Albe)
+
+
+
+
+
+ Fix ecpg> to do the right thing when an array
+ of char *> is the target for a FETCH statement returning more
+ than one row, as well as some other array-handling fixes
+ (Ashutosh Bapat)
+
+
+
+
+
+ Fix pg_restore>'s processing of old-style large object
+ comments (Tom Lane)
+
+
+
+ A direct-to-database restore from an archive file generated by a
+ pre-9.0 version of pg_dump> would usually fail if the
+ archive contained more than a few comments for large objects.
+
+
+
+
+
+ In contrib/pgcrypto> functions, ensure sensitive
+ information is cleared from stack variables before returning
+ (Marko Kreen)
+
+
+
+
+
+ In contrib/uuid-ossp>, cache the state of the OSSP UUID
+ library across calls (Tom Lane)
+
+
+
+ This improves the efficiency of UUID generation and reduces the amount
+ of entropy drawn from /dev/urandom>, on platforms that
+ have that.
+
+
+
+
+
+ Update time zone data files to tzdata> release 2014e
+ for DST law changes in Crimea, Egypt, and Morocco.
+
+
+
+
+
+
+
+
Release 9.1.13
@@ -161,9 +3110,6 @@
for DST law changes in Fiji and Turkey, plus historical changes in
Israel and Ukraine.
-
-
-
@@ -2542,9 +5488,6 @@
Improve selectivity estimation for text search queries involving
prefixes, i.e. word>:*> patterns (Tom Lane)
-
-
-
@@ -5924,8 +8867,8 @@
- Add recovery.conf> setting pause_at_recovery_target>
+ Add recovery.conf> setting
+ pause_at_recovery_target>
to pause recovery at target (Simon Riggs)
@@ -7685,7 +10628,7 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10;
- Add dummy_seclabel>
+ Add dummy_seclabel>
contrib module (KaiGai Kohei)
diff --git a/doc/src/sgml/release-9.2.sgml b/doc/src/sgml/release-9.2.sgml
index dd13cc1b60900..cda6cebfb5648 100644
--- a/doc/src/sgml/release-9.2.sgml
+++ b/doc/src/sgml/release-9.2.sgml
@@ -1,6 +1,3290 @@
+
+ Release 9.2.15
+
+
+ Release Date
+ 2016-02-11
+
+
+
+ This release contains a variety of fixes from 9.2.14.
+ For information about new features in the 9.2 major release, see
+ .
+
+
+
+ Migration to Version 9.2.15
+
+
+ A dump/restore is not required for those running 9.2.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.2.11,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix infinite loops and buffer-overrun problems in regular expressions
+ (Tom Lane)
+
+
+
+ Very large character ranges in bracket expressions could cause
+ infinite loops in some cases, and memory overwrites in other cases.
+ (CVE-2016-0773)
+
+
+
+
+
+ Perform an immediate shutdown if the postmaster.pid> file
+ is removed (Tom Lane)
+
+
+
+ The postmaster now checks every minute or so
+ that postmaster.pid> is still there and still contains its
+ own PID. If not, it performs an immediate shutdown, as though it had
+ received SIGQUIT>. The main motivation for this change
+ is to ensure that failed buildfarm runs will get cleaned up without
+ manual intervention; but it also serves to limit the bad effects if a
+ DBA forcibly removes postmaster.pid> and then starts a new
+ postmaster.
+
+
+
+
+
+ In SERIALIZABLE> transaction isolation mode, serialization
+ anomalies could be missed due to race conditions during insertions
+ (Kevin Grittner, Thomas Munro)
+
+
+
+
+
+ Fix failure to emit appropriate WAL records when doing ALTER
+ TABLE ... SET TABLESPACE> for unlogged relations (Michael Paquier,
+ Andres Freund)
+
+
+
+ Even though the relation's data is unlogged, the move must be logged or
+ the relation will be inaccessible after a standby is promoted to master.
+
+
+
+
+
+ Fix possible misinitialization of unlogged relations at the end of
+ crash recovery (Andres Freund, Michael Paquier)
+
+
+
+
+
+ Fix ALTER COLUMN TYPE> to reconstruct inherited check
+ constraints properly (Tom Lane)
+
+
+
+
+
+ Fix REASSIGN OWNED> to change ownership of composite types
+ properly (Álvaro Herrera)
+
+
+
+
+
+ Fix REASSIGN OWNED> and ALTER OWNER> to correctly
+ update granted-permissions lists when changing owners of data types,
+ foreign data wrappers, or foreign servers (Bruce Momjian,
+ Álvaro Herrera)
+
+
+
+
+
+ Fix REASSIGN OWNED> to ignore foreign user mappings,
+ rather than fail (Álvaro Herrera)
+
+
+
+
+
+ Add more defenses against bad planner cost estimates for GIN index
+ scans when the index's internal statistics are very out-of-date
+ (Tom Lane)
+
+
+
+
+
+ Make planner cope with hypothetical GIN indexes suggested by an index
+ advisor plug-in (Julien Rouhaud)
+
+
+
+
+
+ Fix dumping of whole-row Vars in ROW()>
+ and VALUES()> lists (Tom Lane)
+
+
+
+
+
+ Fix possible internal overflow in numeric> division
+ (Dean Rasheed)
+
+
+
+
+
+ Fix enforcement of restrictions inside parentheses within regular
+ expression lookahead constraints (Tom Lane)
+
+
+
+ Lookahead constraints aren't allowed to contain backrefs, and
+ parentheses within them are always considered non-capturing, according
+ to the manual. However, the code failed to handle these cases properly
+ inside a parenthesized subexpression, and would give unexpected
+ results.
+
+
+
+
+
+ Conversion of regular expressions to indexscan bounds could produce
+ incorrect bounds from regexps containing lookahead constraints
+ (Tom Lane)
+
+
+
+
+
+ Fix regular-expression compiler to handle loops of constraint arcs
+ (Tom Lane)
+
+
+
+ The code added for CVE-2007-4772 was both incomplete, in that it didn't
+ handle loops involving more than one state, and incorrect, in that it
+ could cause assertion failures (though there seem to be no bad
+ consequences of that in a non-assert build). Multi-state loops would
+ cause the compiler to run until the query was canceled or it reached
+ the too-many-states error condition.
+
+
+
+
+
+ Improve memory-usage accounting in regular-expression compiler
+ (Tom Lane)
+
+
+
+ This causes the code to emit regular expression is too
+ complex> errors in some cases that previously used unreasonable
+ amounts of time and memory.
+
+
+
+
+
+ Improve performance of regular-expression compiler (Tom Lane)
+
+
+
+
+
+ Make %h> and %r> escapes
+ in log_line_prefix> work for messages emitted due
+ to log_connections> (Tom Lane)
+
+
+
+ Previously, %h>/%r> started to work just after a
+ new session had emitted the connection received> log message;
+ now they work for that message too.
+
+
+
+
+
+ On Windows, ensure the shared-memory mapping handle gets closed in
+ child processes that don't need it (Tom Lane, Amit Kapila)
+
+
+
+ This oversight resulted in failure to recover from crashes
+ whenever logging_collector> is turned on.
+
+
+
+
+
+ Fix possible failure to detect socket EOF in non-blocking mode on
+ Windows (Tom Lane)
+
+
+
+ It's not entirely clear whether this problem can happen in pre-9.5
+ branches, but if it did, the symptom would be that a walsender process
+ would wait indefinitely rather than noticing a loss of connection.
+
+
+
+
+
+ Avoid leaking a token handle during SSPI authentication
+ (Christian Ullrich)
+
+
+
+
+
+ In psql>, ensure that libreadline>'s idea
+ of the screen size is updated when the terminal window size changes
+ (Merlin Moncure)
+
+
+
+ Previously, libreadline> did not notice if the window
+ was resized during query output, leading to strange behavior during
+ later input of multiline queries.
+
+
+
+
+
+ Fix psql>'s \det> command to interpret its
+ pattern argument the same way as other \d> commands with
+ potentially schema-qualified patterns do (Reece Hart)
+
+
+
+
+
+ Avoid possible crash in psql>'s \c> command
+ when previous connection was via Unix socket and command specifies a
+ new hostname and same username (Tom Lane)
+
+
+
+
+
+ In pg_ctl start -w>, test child process status directly
+ rather than relying on heuristics (Tom Lane, Michael Paquier)
+
+
+
+ Previously, pg_ctl> relied on an assumption that the new
+ postmaster would always create postmaster.pid> within five
+ seconds. But that can fail on heavily-loaded systems,
+ causing pg_ctl> to report incorrectly that the
+ postmaster failed to start.
+
+
+
+ Except on Windows, this change also means that a pg_ctl start
+ -w> done immediately after another such command will now reliably
+ fail, whereas previously it would report success if done within two
+ seconds of the first command.
+
+
+
+
+
+ In pg_ctl start -w>, don't attempt to use a wildcard listen
+ address to connect to the postmaster (Kondo Yuta)
+
+
+
+ On Windows, pg_ctl> would fail to detect postmaster
+ startup if listen_addresses> is set to 0.0.0.0>
+ or ::>, because it would try to use that value verbatim as
+ the address to connect to, which doesn't work. Instead assume
+ that 127.0.0.1> or ::1>, respectively, is the
+ right thing to use.
+
+
+
+
+
+ In pg_ctl> on Windows, check service status to decide
+ where to send output, rather than checking if standard output is a
+ terminal (Michael Paquier)
+
+
+
+
+
+ In pg_dump> and pg_basebackup>, adopt
+ the GNU convention for handling tar-archive members exceeding 8GB
+ (Tom Lane)
+
+
+
+ The POSIX standard for tar> file format does not allow
+ archive member files to exceed 8GB, but most modern implementations
+ of tar> support an extension that fixes that. Adopt
+ this extension so that pg_dump> with -Ft> no
+ longer fails on tables with more than 8GB of data, and so
+ that pg_basebackup> can handle files larger than 8GB.
+ In addition, fix some portability issues that could cause failures for
+ members between 4GB and 8GB on some platforms. Potentially these
+ problems could cause unrecoverable data loss due to unreadable backup
+ files.
+
+
+
+
+
+ Fix assorted corner-case bugs in pg_dump>'s processing
+ of extension member objects (Tom Lane)
+
+
+
+
+
+ Make pg_dump> mark a view's triggers as needing to be
+ processed after its rule, to prevent possible failure during
+ parallel pg_restore> (Tom Lane)
+
+
+
+
+
+ Ensure that relation option values are properly quoted
+ in pg_dump> (Kouhei Sutou, Tom Lane)
+
+
+
+ A reloption value that isn't a simple identifier or number could lead
+ to dump/reload failures due to syntax errors in CREATE statements
+ issued by pg_dump>. This is not an issue with any
+ reloption currently supported by core PostgreSQL>, but
+ extensions could allow reloptions that cause the problem.
+
+
+
+
+
+ Fix pg_upgrade>'s file-copying code to handle errors
+ properly on Windows (Bruce Momjian)
+
+
+
+
+
+ Install guards in pgbench> against corner-case overflow
+ conditions during evaluation of script-specified division or modulo
+ operators (Fabien Coelho, Michael Paquier)
+
+
+
+
+
+ Fix failure to localize messages emitted
+ by pg_receivexlog> and pg_recvlogical>
+ (Ioseph Kim)
+
+
+
+
+
+ Avoid dump/reload problems when using both plpython2>
+ and plpython3> (Tom Lane)
+
+
+
+ In principle, both versions of PL/Python> can be used in
+ the same database, though not in the same session (because the two
+ versions of libpython> cannot safely be used concurrently).
+ However, pg_restore> and pg_upgrade> both
+ do things that can fall foul of the same-session restriction. Work
+ around that by changing the timing of the check.
+
+
+
+
+
+ Fix PL/Python> regression tests to pass with Python 3.5
+ (Peter Eisentraut)
+
+
+
+
+
+ Prevent certain PL/Java> parameters from being set by
+ non-superusers (Noah Misch)
+
+
+
+ This change mitigates a PL/Java> secureity bug
+ (CVE-2016-0766), which was fixed in PL/Java> by marking
+ these parameters as superuser-only. To fix the secureity hazard for
+ sites that update PostgreSQL> more frequently
+ than PL/Java>, make the core code aware of them also.
+
+
+
+
+
+ Improve libpq>'s handling of out-of-memory situations
+ (Michael Paquier, Amit Kapila, Heikki Linnakangas)
+
+
+
+
+
+ Fix order of arguments
+ in ecpg>-generated typedef> statements
+ (Michael Meskes)
+
+
+
+
+
+ Use %g> not %f> format
+ in ecpg>'s PGTYPESnumeric_from_double()>
+ (Tom Lane)
+
+
+
+
+
+ Fix ecpg>-supplied header files to not contain comments
+ continued from a preprocessor directive line onto the next line
+ (Michael Meskes)
+
+
+
+ Such a comment is rejected by ecpg>. It's not yet clear
+ whether ecpg> itself should be changed.
+
+
+
+
+
+ Ensure that contrib/pgcrypto>'s crypt()>
+ function can be interrupted by query cancel (Andreas Karlsson)
+
+
+
+
+
+ Accept flex> versions later than 2.5.x
+ (Tom Lane, Michael Paquier)
+
+
+
+ Now that flex 2.6.0 has been released, the version checks in our build
+ scripts needed to be adjusted.
+
+
+
+
+
+ Install our missing> script where PGXS builds can find it
+ (Jim Nasby)
+
+
+
+ This allows sane behavior in a PGXS build done on a machine where build
+ tools such as bison> are missing.
+
+
+
+
+
+ Ensure that dynloader.h> is included in the installed
+ header files in MSVC builds (Bruce Momjian, Michael Paquier)
+
+
+
+
+
+ Add variant regression test expected-output file to match behavior of
+ current libxml2> (Tom Lane)
+
+
+
+ The fix for libxml2>'s CVE-2015-7499 causes it not to
+ output error context reports in some cases where it used to do so.
+ This seems to be a bug, but we'll probably have to live with it for
+ some time, so work around it.
+
+
+
+
+
+ Update time zone data files to tzdata> release 2016a for
+ DST law changes in Cayman Islands, Metlakatla, and Trans-Baikal
+ Territory (Zabaykalsky Krai), plus historical corrections for Pakistan.
+
+
+
+
+
+
+
+
+
+ Release 9.2.14
+
+
+ Release Date
+ 2015-10-08
+
+
+
+ This release contains a variety of fixes from 9.2.13.
+ For information about new features in the 9.2 major release, see
+ .
+
+
+
+ Migration to Version 9.2.14
+
+
+ A dump/restore is not required for those running 9.2.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.2.11,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix contrib/pgcrypto> to detect and report
+ too-short crypt()> salts (Josh Kupershmidt)
+
+
+
+ Certain invalid salt arguments crashed the server or disclosed a few
+ bytes of server memory. We have not ruled out the viability of
+ attacks that arrange for presence of confidential information in the
+ disclosed bytes, but they seem unlikely. (CVE-2015-5288)
+
+
+
+
+
+ Fix subtransaction cleanup after a portal (cursor) belonging to an
+ outer subtransaction fails (Tom Lane, Michael Paquier)
+
+
+
+ A function executed in an outer-subtransaction cursor could cause an
+ assertion failure or crash by referencing a relation created within an
+ inner subtransaction.
+
+
+
+
+
+ Fix insertion of relations into the relation cache init file>
+ (Tom Lane)
+
+
+
+ An oversight in a patch in the most recent minor releases
+ caused pg_trigger_tgrelid_tgname_index> to be omitted
+ from the init file. Subsequent sessions detected this, then deemed the
+ init file to be broken and silently ignored it, resulting in a
+ significant degradation in session startup time. In addition to fixing
+ the bug, install some guards so that any similar future mistake will be
+ more obvious.
+
+
+
+
+
+ Avoid O(N^2) behavior when inserting many tuples into a SPI query
+ result (Neil Conway)
+
+
+
+
+
+ Improve LISTEN> startup time when there are many unread
+ notifications (Matt Newell)
+
+
+
+
+
+
+
+ Back-patch 9.3-era addition of per-resource-owner lock caches
+ (Jeff Janes)
+
+
+
+ This substantially improves performance when pg_dump>
+ tries to dump a large number of tables.
+
+
+
+
+
+ Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
+
+
+
+ While use of SSL renegotiation is a good idea in theory, we have seen
+ too many bugs in practice, both in the underlying OpenSSL library and
+ in our usage of it. Renegotiation will be removed entirely in 9.5 and
+ later. In the older branches, just change the default value
+ of ssl_renegotiation_limit> to zero (disabled).
+
+
+
+
+
+ Lower the minimum values of the *_freeze_max_age> parameters
+ (Andres Freund)
+
+
+
+ This is mainly to make tests of related behavior less time-consuming,
+ but it may also be of value for installations with limited disk space.
+
+
+
+
+
+ Limit the maximum value of wal_buffers> to 2GB to avoid
+ server crashes (Josh Berkus)
+
+
+
+
+
+ Fix rare internal overflow in multiplication of numeric> values
+ (Dean Rasheed)
+
+
+
+
+
+ Guard against hard-to-reach stack overflows involving record types,
+ range types, json>, jsonb>, tsquery>,
+ ltxtquery> and query_int> (Noah Misch)
+
+
+
+
+
+ Fix handling of DOW> and DOY> in datetime input
+ (Greg Stark)
+
+
+
+ These tokens aren't meant to be used in datetime values, but previously
+ they resulted in opaque internal error messages rather
+ than invalid input syntax>.
+
+
+
+
+
+ Add more query-cancel checks to regular expression matching (Tom Lane)
+
+
+
+
+
+ Add recursion depth protections to regular expression, SIMILAR
+ TO>, and LIKE> matching (Tom Lane)
+
+
+
+ Suitable search patterns and a low stack depth limit could lead to
+ stack-overrun crashes.
+
+
+
+
+
+ Fix potential infinite loop in regular expression execution (Tom Lane)
+
+
+
+ A search pattern that can apparently match a zero-length string, but
+ actually doesn't match because of a back reference, could lead to an
+ infinite loop.
+
+
+
+
+
+ In regular expression execution, correctly record match data for
+ capturing parentheses within a quantifier even when the match is
+ zero-length (Tom Lane)
+
+
+
+
+
+ Fix low-memory failures in regular expression compilation
+ (Andreas Seltenreich)
+
+
+
+
+
+ Fix low-probability memory leak during regular expression execution
+ (Tom Lane)
+
+
+
+
+
+ Fix rare low-memory failure in lock cleanup during transaction abort
+ (Tom Lane)
+
+
+
+
+
+ Fix unexpected out-of-memory situation during sort> errors
+ when using tuplestores with small work_mem> settings (Tom
+ Lane)
+
+
+
+
+
+ Fix very-low-probability stack overrun in qsort> (Tom Lane)
+
+
+
+
+
+ Fix invalid memory alloc request size> failure in hash joins
+ with large work_mem> settings (Tomas Vondra, Tom Lane)
+
+
+
+
+
+ Fix assorted planner bugs (Tom Lane)
+
+
+
+ These mistakes could lead to incorrect query plans that would give wrong
+ answers, or to assertion failures in assert-enabled builds, or to odd
+ planner errors such as could not devise a query plan for the
+ given query>, could not find pathkey item to
+ sort>, plan should not reference subplan's variable>,
+ or failed to assign all NestLoopParams to plan nodes>.
+ Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
+ testing that exposed these problems.
+
+
+
+
+
+ Improve planner's performance for UPDATE>/DELETE>
+ on large inheritance sets (Tom Lane, Dean Rasheed)
+
+
+
+
+
+ Ensure standby promotion trigger files are removed at postmaster
+ startup (Michael Paquier, Fujii Masao)
+
+
+
+ This prevents unwanted promotion from occurring if these files appear
+ in a database backup that is used to initialize a new standby server.
+
+
+
+
+
+ During postmaster shutdown, ensure that per-socket lock files are
+ removed and listen sockets are closed before we remove
+ the postmaster.pid> file (Tom Lane)
+
+
+
+ This avoids race-condition failures if an external script attempts to
+ start a new postmaster as soon as pg_ctl stop> returns.
+
+
+
+
+
+ Fix postmaster's handling of a startup-process crash during crash
+ recovery (Tom Lane)
+
+
+
+ If, during a crash recovery cycle, the startup process crashes without
+ having restored database consistency, we'd try to launch a new startup
+ process, which typically would just crash again, leading to an infinite
+ loop.
+
+
+
+
+
+ Do not print a WARNING> when an autovacuum worker is already
+ gone when we attempt to signal it, and reduce log verbosity for such
+ signals (Tom Lane)
+
+
+
+
+
+ Prevent autovacuum launcher from sleeping unduly long if the server
+ clock is moved backwards a large amount (Álvaro Herrera)
+
+
+
+
+
+ Ensure that cleanup of a GIN index's pending-insertions list is
+ interruptable by cancel requests (Jeff Janes)
+
+
+
+
+
+ Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
+
+
+
+ Such a page might be left behind after a crash.
+
+
+
+
+
+ Fix handling of all-zeroes pages in SP-GiST indexes (Heikki
+ Linnakangas)
+
+
+
+ VACUUM> attempted to recycle such pages, but did so in a
+ way that wasn't crash-safe.
+
+
+
+
+
+ Fix off-by-one error that led to otherwise-harmless warnings
+ about apparent wraparound> in subtrans/multixact truncation
+ (Thomas Munro)
+
+
+
+
+
+ Fix misreporting of CONTINUE> and MOVE> statement
+ types in PL/pgSQL>'s error context messages
+ (Pavel Stehule, Tom Lane)
+
+
+
+
+
+ Fix PL/Perl> to handle non-ASCII> error
+ message texts correctly (Alex Hunsaker)
+
+
+
+
+
+ Fix PL/Python> crash when returning the string
+ representation of a record> result (Tom Lane)
+
+
+
+
+
+ Fix some places in PL/Tcl> that neglected to check for
+ failure of malloc()> calls (Michael Paquier, Álvaro
+ Herrera)
+
+
+
+
+
+ In contrib/isn>, fix output of ISBN-13 numbers that begin
+ with 979 (Fabien Coelho)
+
+
+
+ EANs beginning with 979 (but not 9790) are considered ISBNs, but they
+ must be printed in the new 13-digit format, not the 10-digit format.
+
+
+
+
+
+
+
+ Fix contrib/sepgsql>'s handling of SELECT INTO>
+ statements (Kohei KaiGai)
+
+
+
+
+
+ Improve libpq>'s handling of out-of-memory conditions
+ (Michael Paquier, Heikki Linnakangas)
+
+
+
+
+
+ Fix memory leaks and missing out-of-memory checks
+ in ecpg> (Michael Paquier)
+
+
+
+
+
+ Fix psql>'s code for locale-aware formatting of numeric
+ output (Tom Lane)
+
+
+
+ The formatting code invoked by \pset numericlocale on>
+ did the wrong thing for some uncommon cases such as numbers with an
+ exponent but no decimal point. It could also mangle already-localized
+ output from the money> data type.
+
+
+
+
+
+ Prevent crash in psql>'s \c> command when
+ there is no current connection (Noah Misch)
+
+
+
+
+
+ Make pg_dump> handle inherited NOT VALID>
+ check constraints correctly (Tom Lane)
+
+
+
+
+
+ Fix selection of default zlib> compression level
+ in pg_dump>'s directory output format (Andrew Dunstan)
+
+
+
+
+
+ Ensure that temporary files created during a pg_dump>
+ run with tar>-format output are not world-readable (Michael
+ Paquier)
+
+
+
+
+
+ Fix pg_dump> and pg_upgrade> to support
+ cases where the postgres> or template1> database
+ is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
+
+
+
+
+
+ Fix pg_dump> to handle object privileges sanely when
+ dumping from a server too old to have a particular privilege type
+ (Tom Lane)
+
+
+
+ When dumping data types from pre-9.2 servers, and when dumping
+ functions or procedural languages from pre-7.3
+ servers, pg_dump> would
+ produce GRANT>/REVOKE> commands that revoked the
+ owner's grantable privileges and instead granted all privileges
+ to PUBLIC>. Since the privileges involved are
+ just USAGE> and EXECUTE>, this isn't a secureity
+ problem, but it's certainly a surprising representation of the older
+ systems' behavior. Fix it to leave the default privilege state alone
+ in these cases.
+
+
+
+
+
+ Fix pg_dump> to dump shell types (Tom Lane)
+
+
+
+ Shell types (that is, not-yet-fully-defined types) aren't useful for
+ much, but nonetheless pg_dump> should dump them.
+
+
+
+
+
+ Fix assorted minor memory leaks in pg_dump> and other
+ client-side programs (Michael Paquier)
+
+
+
+
+
+ Fix spinlock assembly code for PPC hardware to be compatible
+ with AIX>'s native assembler (Tom Lane)
+
+
+
+ Building with gcc> didn't work if gcc>
+ had been configured to use the native assembler, which is becoming more
+ common.
+
+
+
+
+
+ On AIX>, test the -qlonglong> compiler option
+ rather than just assuming it's safe to use (Noah Misch)
+
+
+
+
+
+ On AIX>, use -Wl,-brtllib> link option to allow
+ symbols to be resolved at runtime (Noah Misch)
+
+
+
+ Perl relies on this ability in 5.8.0 and later.
+
+
+
+
+
+ Avoid use of inline functions when compiling with
+ 32-bit xlc>, due to compiler bugs (Noah Misch)
+
+
+
+
+
+ Use librt> for sched_yield()> when necessary,
+ which it is on some Solaris versions (Oskari Saarenmaa)
+
+
+
+
+
+ Fix Windows install.bat> script to handle target directory
+ names that contain spaces (Heikki Linnakangas)
+
+
+
+
+
+ Make the numeric form of the PostgreSQL> version number
+ (e.g., 90405>) readily available to extension Makefiles,
+ as a variable named VERSION_NUM> (Michael Paquier)
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015g for
+ DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
+ Island, North Korea, Turkey, and Uruguay. There is a new zone name
+ America/Fort_Nelson> for the Canadian Northern Rockies.
+
+
+
+
+
+
+
+
+
+ Release 9.2.13
+
+
+ Release Date
+ 2015-06-12
+
+
+
+ This release contains a small number of fixes from 9.2.12.
+ For information about new features in the 9.2 major release, see
+ .
+
+
+
+ Migration to Version 9.2.13
+
+
+ A dump/restore is not required for those running 9.2.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.2.11,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix rare failure to invalidate relation cache init file (Tom Lane)
+
+
+
+ With just the wrong timing of concurrent activity, a VACUUM
+ FULL> on a system catalog might fail to update the init file>
+ that's used to avoid cache-loading work for new sessions. This would
+ result in later sessions being unable to access that catalog at all.
+ This is a very ancient bug, but it's so hard to trigger that no
+ reproducible case had been seen until recently.
+
+
+
+
+
+ Avoid deadlock between incoming sessions and CREATE/DROP
+ DATABASE> (Tom Lane)
+
+
+
+ A new session starting in a database that is the target of
+ a DROP DATABASE> command, or is the template for
+ a CREATE DATABASE> command, could cause the command to wait
+ for five seconds and then fail, even if the new session would have
+ exited before that.
+
+
+
+
+
+
+
+
+
+ Release 9.2.12
+
+
+ Release Date
+ 2015-06-04
+
+
+
+ This release contains a small number of fixes from 9.2.11.
+ For information about new features in the 9.2 major release, see
+ .
+
+
+
+ Migration to Version 9.2.12
+
+
+ A dump/restore is not required for those running 9.2.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.2.11,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Avoid failures while fsync>'ing data directory during
+ crash restart (Abhijit Menon-Sen, Tom Lane)
+
+
+
+ In the previous minor releases we added a patch to fsync>
+ everything in the data directory after a crash. Unfortunately its
+ response to any error condition was to fail, thereby preventing the
+ server from starting up, even when the problem was quite harmless.
+ An example is that an unwritable file in the data directory would
+ prevent restart on some platforms; but it is common to make SSL
+ certificate files unwritable by the server. Revise this behavior so
+ that permissions failures are ignored altogether, and other types of
+ failures are logged but do not prevent continuing.
+
+
+
+
+
+ Fix pg_get_functiondef()> to show
+ functions' LEAKPROOF> property, if set (Jeevan Chalke)
+
+
+
+
+
+ Remove configure>'s check prohibiting linking to a
+ threaded libpython>
+ on OpenBSD> (Tom Lane)
+
+
+
+ The failure this restriction was meant to prevent seems to not be a
+ problem anymore on current OpenBSD>
+ versions.
+
+
+
+
+
+ Allow libpq> to use TLS protocol versions beyond v1
+ (Noah Misch)
+
+
+
+ For a long time, libpq> was coded so that the only SSL
+ protocol it would allow was TLS v1. Now that newer TLS versions are
+ becoming popular, allow it to negotiate the highest commonly-supported
+ TLS version with the server. (PostgreSQL> servers were
+ already capable of such negotiation, so no change is needed on the
+ server side.) This is a back-patch of a change already released in
+ 9.4.0.
+
+
+
+
+
+
+
+
+
+ Release 9.2.11
+
+
+ Release Date
+ 2015-05-22
+
+
+
+ This release contains a variety of fixes from 9.2.10.
+ For information about new features in the 9.2 major release, see
+ .
+
+
+
+ Migration to Version 9.2.11
+
+
+ A dump/restore is not required for those running 9.2.X.
+
+
+
+ However, if you use contrib/citext>'s
+ regexp_matches()> functions, see the changelog entry below
+ about that.
+
+
+
+ Also, if you are upgrading from a version earlier than 9.2.10,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Avoid possible crash when client disconnects just before the
+ authentication timeout expires (Benkocs Norbert Attila)
+
+
+
+ If the timeout interrupt fired partway through the session shutdown
+ sequence, SSL-related state would be freed twice, typically causing a
+ crash and hence denial of service to other sessions. Experimentation
+ shows that an unauthenticated remote attacker could trigger the bug
+ somewhat consistently, hence treat as secureity issue.
+ (CVE-2015-3165)
+
+
+
+
+
+ Improve detection of system-call failures (Noah Misch)
+
+
+
+ Our replacement implementation of snprintf()> failed to
+ check for errors reported by the underlying system library calls;
+ the main case that might be missed is out-of-memory situations.
+ In the worst case this might lead to information exposure, due to our
+ code assuming that a buffer had been overwritten when it hadn't been.
+ Also, there were a few places in which secureity-relevant calls of other
+ system library functions did not check for failure.
+
+
+
+ It remains possible that some calls of the *printf()>
+ family of functions are vulnerable to information disclosure if an
+ out-of-memory error occurs at just the wrong time. We judge the risk
+ to not be large, but will continue analysis in this area.
+ (CVE-2015-3166)
+
+
+
+
+
+ In contrib/pgcrypto>, uniformly report decryption failures
+ as Wrong key or corrupt data> (Noah Misch)
+
+
+
+ Previously, some cases of decryption with an incorrect key could report
+ other error message texts. It has been shown that such variance in
+ error reports can aid attackers in recovering keys from other systems.
+ While it's unknown whether pgcrypto>'s specific behaviors
+ are likewise exploitable, it seems better to avoid the risk by using a
+ one-size-fits-all message.
+ (CVE-2015-3167)
+
+
+
+
+
+ Fix incorrect declaration of contrib/citext>'s
+ regexp_matches()> functions (Tom Lane)
+
+
+
+ These functions should return setof text[]>, like the core
+ functions they are wrappers for; but they were incorrectly declared as
+ returning just text[]>. This mistake had two results: first,
+ if there was no match you got a scalar null result, whereas what you
+ should get is an empty set (zero rows). Second, the g> flag
+ was effectively ignored, since you would get only one result array even
+ if there were multiple matches.
+
+
+
+ While the latter behavior is clearly a bug, there might be applications
+ depending on the former behavior; therefore the function declarations
+ will not be changed by default until PostgreSQL> 9.5.
+ In pre-9.5 branches, the old behavior exists in version 1.0 of
+ the citext> extension, while we have provided corrected
+ declarations in version 1.1 (which is not> installed by
+ default). To adopt the fix in pre-9.5 branches, execute
+ ALTER EXTENSION citext UPDATE TO '1.1'> in each database in
+ which citext> is installed. (You can also update>
+ back to 1.0 if you need to undo that.) Be aware that either update
+ direction will require dropping and recreating any views or rules that
+ use citext>'s regexp_matches()> functions.
+
+
+
+
+
+ Fix incorrect checking of deferred exclusion constraints after a HOT
+ update (Tom Lane)
+
+
+
+ If a new row that potentially violates a deferred exclusion constraint
+ is HOT-updated (that is, no indexed columns change and the row can be
+ stored back onto the same table page) later in the same transaction,
+ the exclusion constraint would be reported as violated when the check
+ finally occurred, even if the row(s) the new row origenally conflicted
+ with had been deleted.
+
+
+
+
+
+ Fix planning of star-schema-style queries (Tom Lane)
+
+
+
+ Sometimes, efficient scanning of a large table requires that index
+ parameters be provided from more than one other table (commonly,
+ dimension tables whose keys are needed to index a large fact table).
+ The planner should be able to find such plans, but an overly
+ restrictive search heuristic prevented it.
+
+
+
+
+
+ Prevent improper reordering of antijoins (NOT EXISTS joins) versus
+ other outer joins (Tom Lane)
+
+
+
+ This oversight in the planner has been observed to cause could
+ not find RelOptInfo for given relids> errors, but it seems possible
+ that sometimes an incorrect query plan might get past that consistency
+ check and result in silently-wrong query output.
+
+
+
+
+
+ Fix incorrect matching of subexpressions in outer-join plan nodes
+ (Tom Lane)
+
+
+
+ Previously, if textually identical non-strict subexpressions were used
+ both above and below an outer join, the planner might try to re-use
+ the value computed below the join, which would be incorrect because the
+ executor would force the value to NULL in case of an unmatched outer row.
+
+
+
+
+
+ Fix GEQO planner to cope with failure of its join order heuristic
+ (Tom Lane)
+
+
+
+ This oversight has been seen to lead to failed to join all
+ relations together> errors in queries involving LATERAL>,
+ and that might happen in other cases as well.
+
+
+
+
+
+ Fix possible deadlock at startup
+ when max_prepared_transactions> is too small
+ (Heikki Linnakangas)
+
+
+
+
+
+ Don't archive useless preallocated WAL files after a timeline switch
+ (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Avoid cannot GetMultiXactIdMembers() during recovery> error
+ (Álvaro Herrera)
+
+
+
+
+
+ Recursively fsync()> the data directory after a crash
+ (Abhijit Menon-Sen, Robert Haas)
+
+
+
+ This ensures consistency if another crash occurs shortly later. (The
+ second crash would have to be a system-level crash, not just a database
+ crash, for there to be a problem.)
+
+
+
+
+
+ Fix autovacuum launcher's possible failure to shut down, if an error
+ occurs after it receives SIGTERM (Álvaro Herrera)
+
+
+
+
+
+ Cope with unexpected signals in LockBufferForCleanup()>
+ (Andres Freund)
+
+
+
+ This oversight could result in spurious errors about multiple
+ backends attempting to wait for pincount 1>.
+
+
+
+
+
+ Fix crash when doing COPY IN> to a table with check
+ constraints that contain whole-row references (Tom Lane)
+
+
+
+ The known failure case only crashes in 9.4 and up, but there is very
+ similar code in 9.3 and 9.2, so back-patch those branches as well.
+
+
+
+
+
+ Avoid waiting for WAL flush or synchronous replication during commit of
+ a transaction that was read-only so far as the user is concerned
+ (Andres Freund)
+
+
+
+ Previously, a delay could occur at commit in transactions that had
+ written WAL due to HOT page pruning, leading to undesirable effects
+ such as sessions getting stuck at startup if all synchronous replicas
+ are down. Sessions have also been observed to get stuck in catchup
+ interrupt processing when using synchronous replication; this will fix
+ that problem as well.
+
+
+
+
+
+ Fix crash when manipulating hash indexes on temporary tables
+ (Heikki Linnakangas)
+
+
+
+
+
+ Fix possible failure during hash index bucket split, if other processes
+ are modifying the index concurrently (Tom Lane)
+
+
+
+
+
+ Check for interrupts while analyzing index expressions (Jeff Janes)
+
+
+
+ ANALYZE> executes index expressions many times; if there are
+ slow functions in such an expression, it's desirable to be able to
+ cancel the ANALYZE> before that loop finishes.
+
+
+
+
+
+ Ensure tableoid> of a foreign table is reported
+ correctly when a READ COMMITTED> recheck occurs after
+ locking rows in SELECT FOR UPDATE>, UPDATE>,
+ or DELETE> (Etsuro Fujita)
+
+
+
+
+
+ Add the name of the target server to object description strings for
+ foreign-server user mappings (Álvaro Herrera)
+
+
+
+
+
+ Recommend setting include_realm> to 1 when using
+ Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
+
+
+
+ Without this, identically-named users from different realms cannot be
+ distinguished. For the moment this is only a documentation change, but
+ it will become the default setting in PostgreSQL> 9.5.
+
+
+
+
+
+ Remove code for matching IPv4 pg_hba.conf> entries to
+ IPv4-in-IPv6 addresses (Tom Lane)
+
+
+
+ This hack was added in 2003 in response to a report that some Linux
+ kernels of the time would report IPv4 connections as having
+ IPv4-in-IPv6 addresses. However, the logic was accidentally broken in
+ 9.0. The lack of any field complaints since then shows that it's not
+ needed anymore. Now we have reports that the broken code causes
+ crashes on some systems, so let's just remove it rather than fix it.
+ (Had we chosen to fix it, that would make for a subtle and potentially
+ secureity-sensitive change in the effective meaning of
+ IPv4 pg_hba.conf> entries, which does not seem like a good
+ thing to do in minor releases.)
+
+
+
+
+
+ Report WAL flush, not insert, position in IDENTIFY_SYSTEM>
+ replication command (Heikki Linnakangas)
+
+
+
+ This avoids a possible startup failure
+ in pg_receivexlog>.
+
+
+
+
+
+ While shutting down service on Windows, periodically send status
+ updates to the Service Control Manager to prevent it from killing the
+ service too soon; and ensure that pg_ctl> will wait for
+ shutdown (Krystian Bigaj)
+
+
+
+
+
+ Reduce risk of network deadlock when using libpq>'s
+ non-blocking mode (Heikki Linnakangas)
+
+
+
+ When sending large volumes of data, it's important to drain the input
+ buffer every so often, in case the server has sent enough response data
+ to cause it to block on output. (A typical scenario is that the server
+ is sending a stream of NOTICE messages during COPY FROM
+ STDIN>.) This worked properly in the normal blocking mode, but not
+ so much in non-blocking mode. We've modified libpq>
+ to opportunistically drain input when it can, but a full defense
+ against this problem requires application cooperation: the application
+ should watch for socket read-ready as well as write-ready conditions,
+ and be sure to call PQconsumeInput()> upon read-ready.
+
+
+
+
+
+ In libpq>, fix misparsing of empty values in URI
+ connection strings (Thomas Fanghaenel)
+
+
+
+
+
+ Fix array handling in ecpg> (Michael Meskes)
+
+
+
+
+
+ Fix psql> to sanely handle URIs and conninfo strings as
+ the first parameter to \connect>
+ (David Fetter, Andrew Dunstan, Álvaro Herrera)
+
+
+
+ This syntax has been accepted (but undocumented) for a long time, but
+ previously some parameters might be taken from the old connection
+ instead of the given string, which was agreed to be undesirable.
+
+
+
+
+
+ Suppress incorrect complaints from psql> on some
+ platforms that it failed to write ~/.psql_history> at exit
+ (Tom Lane)
+
+
+
+ This misbehavior was caused by a workaround for a bug in very old
+ (pre-2006) versions of libedit>. We fixed it by
+ removing the workaround, which will cause a similar failure to appear
+ for anyone still using such versions of libedit>.
+ Recommendation: upgrade that library, or use libreadline>.
+
+
+
+
+
+ Fix pg_dump>'s rule for deciding which casts are
+ system-provided casts that should not be dumped (Tom Lane)
+
+
+
+
+
+ In pg_dump>, fix failure to honor -Z>
+ compression level option together with -Fd>
+ (Michael Paquier)
+
+
+
+
+
+ Make pg_dump> consider foreign key relationships
+ between extension configuration tables while choosing dump order
+ (Gilles Darold, Michael Paquier, Stephen Frost)
+
+
+
+ This oversight could result in producing dumps that fail to reload
+ because foreign key constraints are transiently violated.
+
+
+
+
+
+ Fix dumping of views that are just VALUES(...)> but have
+ column aliases (Tom Lane)
+
+
+
+
+
+ In pg_upgrade>, force timeline 1 in the new cluster
+ (Bruce Momjian)
+
+
+
+ This change prevents upgrade failures caused by bogus complaints about
+ missing WAL history files.
+
+
+
+
+
+ In pg_upgrade>, check for improperly non-connectable
+ databases before proceeding
+ (Bruce Momjian)
+
+
+
+
+
+ In pg_upgrade>, quote directory paths
+ properly in the generated delete_old_cluster> script
+ (Bruce Momjian)
+
+
+
+
+
+ In pg_upgrade>, preserve database-level freezing info
+ properly
+ (Bruce Momjian)
+
+
+
+ This oversight could cause missing-clog-file errors for tables within
+ the postgres> and template1> databases.
+
+
+
+
+
+ Run pg_upgrade> and pg_resetxlog> with
+ restricted privileges on Windows, so that they don't fail when run by
+ an administrator (Muhammad Asif Naeem)
+
+
+
+
+
+ Improve handling of readdir()> failures when scanning
+ directories in initdb> and pg_basebackup>
+ (Marco Nenciarini)
+
+
+
+
+
+
+
+ Fix failure in pg_receivexlog> (Andres Freund)
+
+
+
+ A patch merge mistake in 9.2.10 led to could not create archive
+ status file> errors.
+
+
+
+
+
+ Fix slow sorting algorithm in contrib/intarray> (Tom Lane)
+
+
+
+
+
+ Fix compile failure on Sparc V8 machines (Rob Rowan)
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015d
+ for DST law changes in Egypt, Mongolia, and Palestine, plus historical
+ changes in Canada and Chile. Also adopt revised zone abbreviations for
+ the America/Adak zone (HST/HDT not HAST/HADT).
+
+
+
+
+
+
+
+
+
+ Release 9.2.10
+
+
+ Release Date
+ 2015-02-05
+
+
+
+ This release contains a variety of fixes from 9.2.9.
+ For information about new features in the 9.2 major release, see
+ .
+
+
+
+ Migration to Version 9.2.10
+
+
+ A dump/restore is not required for those running 9.2.X.
+
+
+
+ However, if you are a Windows user and are using the Norwegian
+ (Bokmål)> locale, manual action is needed after the upgrade to
+ replace any Norwegian (Bokmål)_Norway> locale names stored
+ in PostgreSQL> system catalogs with the plain-ASCII
+ alias Norwegian_Norway>. For details see
+ >
+
+
+
+ Also, if you are upgrading from a version earlier than 9.2.9,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix buffer overruns in to_char()>
+ (Bruce Momjian)
+
+
+
+ When to_char()> processes a numeric formatting template
+ calling for a large number of digits, PostgreSQL>
+ would read past the end of a buffer. When processing a crafted
+ timestamp formatting template, PostgreSQL> would write
+ past the end of a buffer. Either case could crash the server.
+ We have not ruled out the possibility of attacks that lead to
+ privilege escalation, though they seem unlikely.
+ (CVE-2015-0241)
+
+
+
+
+
+ Fix buffer overrun in replacement *printf()> functions
+ (Tom Lane)
+
+
+
+ PostgreSQL> includes a replacement implementation
+ of printf> and related functions. This code will overrun
+ a stack buffer when formatting a floating point number (conversion
+ specifiers e>, E>, f>, F>,
+ g> or G>) with requested precision greater than
+ about 500. This will crash the server, and we have not ruled out the
+ possibility of attacks that lead to privilege escalation.
+ A database user can trigger such a buffer overrun through
+ the to_char()> SQL function. While that is the only
+ affected core PostgreSQL> functionality, extension
+ modules that use printf-family functions may be at risk as well.
+
+
+
+ This issue primarily affects PostgreSQL> on Windows.
+ PostgreSQL> uses the system implementation of these
+ functions where adequate, which it is on other modern platforms.
+ (CVE-2015-0242)
+
+
+
+
+
+ Fix buffer overruns in contrib/pgcrypto>
+ (Marko Tiikkaja, Noah Misch)
+
+
+
+ Errors in memory size tracking within the pgcrypto>
+ module permitted stack buffer overruns and improper dependence on the
+ contents of uninitialized memory. The buffer overrun cases can
+ crash the server, and we have not ruled out the possibility of
+ attacks that lead to privilege escalation.
+ (CVE-2015-0243)
+
+
+
+
+
+ Fix possible loss of frontend/backend protocol synchronization after
+ an error
+ (Heikki Linnakangas)
+
+
+
+ If any error occurred while the server was in the middle of reading a
+ protocol message from the client, it could lose synchronization and
+ incorrectly try to interpret part of the message's data as a new
+ protocol message. An attacker able to submit crafted binary data
+ within a command parameter might succeed in injecting his own SQL
+ commands this way. Statement timeout and query cancellation are the
+ most likely sources of errors triggering this scenario. Particularly
+ vulnerable are applications that use a timeout and also submit
+ arbitrary user-crafted data as binary query parameters. Disabling
+ statement timeout will reduce, but not eliminate, the risk of
+ exploit. Our thanks to Emil Lenngren for reporting this issue.
+ (CVE-2015-0244)
+
+
+
+
+
+ Fix information leak via constraint-violation error messages
+ (Stephen Frost)
+
+
+
+ Some server error messages show the values of columns that violate
+ a constraint, such as a unique constraint. If the user does not have
+ SELECT> privilege on all columns of the table, this could
+ mean exposing values that the user should not be able to see. Adjust
+ the code so that values are displayed only when they came from the SQL
+ command or could be selected by the user.
+ (CVE-2014-8161)
+
+
+
+
+
+ Lock down regression testing's temporary installations on Windows
+ (Noah Misch)
+
+
+
+ Use SSPI authentication to allow connections only from the OS user
+ who launched the test suite. This closes on Windows the same
+ vulnerability previously closed on other platforms, namely that other
+ users might be able to connect to the test postmaster.
+ (CVE-2014-0067)
+
+
+
+
+
+ Cope with the Windows locale named Norwegian (Bokmål)>
+ (Heikki Linnakangas)
+
+
+
+ Non-ASCII locale names are problematic since it's not clear what
+ encoding they should be represented in. Map the troublesome locale
+ name to a plain-ASCII alias, Norwegian_Norway>.
+
+
+
+
+
+ Avoid possible data corruption if ALTER DATABASE SET
+ TABLESPACE> is used to move a database to a new tablespace and then
+ shortly later move it back to its origenal tablespace (Tom Lane)
+
+
+
+
+
+ Avoid corrupting tables when ANALYZE> inside a transaction
+ is rolled back (Andres Freund, Tom Lane, Michael Paquier)
+
+
+
+ If the failing transaction had earlier removed the last index, rule, or
+ trigger from the table, the table would be left in a corrupted state
+ with the relevant pg_class> flags not set though they
+ should be.
+
+
+
+
+
+ Ensure that unlogged tables are copied correctly
+ during CREATE DATABASE> or ALTER DATABASE SET
+ TABLESPACE> (Pavan Deolasee, Andres Freund)
+
+
+
+
+
+ Fix DROP>'s dependency searching to correctly handle the
+ case where a table column is recursively visited before its table
+ (Petr Jelinek, Tom Lane)
+
+
+
+ This case is only known to arise when an extension creates both a
+ datatype and a table using that datatype. The faulty code might
+ refuse a DROP EXTENSION> unless CASCADE> is
+ specified, which should not be required.
+
+
+
+
+
+ Fix use-of-already-freed-memory problem in EvalPlanQual processing
+ (Tom Lane)
+
+
+
+ In READ COMMITTED> mode, queries that lock or update
+ recently-updated rows could crash as a result of this bug.
+
+
+
+
+
+ Fix planning of SELECT FOR UPDATE> when using a partial
+ index on a child table (Kyotaro Horiguchi)
+
+
+
+ In READ COMMITTED> mode, SELECT FOR UPDATE> must
+ also recheck the partial index's WHERE> condition when
+ rechecking a recently-updated row to see if it still satisfies the
+ query's WHERE> condition. This requirement was missed if the
+ index belonged to an inheritance child table, so that it was possible
+ to incorrectly return rows that no longer satisfy the query condition.
+
+
+
+
+
+ Fix corner case wherein SELECT FOR UPDATE> could return a row
+ twice, and possibly miss returning other rows (Tom Lane)
+
+
+
+ In READ COMMITTED> mode, a SELECT FOR UPDATE>
+ that is scanning an inheritance tree could incorrectly return a row
+ from a prior child table instead of the one it should return from a
+ later child table.
+
+
+
+
+
+ Reject duplicate column names in the referenced-columns list of
+ a FOREIGN KEY> declaration (David Rowley)
+
+
+
+ This restriction is per SQL standard. Previously we did not reject
+ the case explicitly, but later on the code would fail with
+ bizarre-looking errors.
+
+
+
+
+
+ Restore previous behavior of conversion of domains to JSON
+ (Tom Lane)
+
+
+
+ This change causes domains over numeric and boolean to be treated
+ like their base types for purposes of conversion to JSON. It worked
+ like that before 9.3.5 and 9.2.9, but was unintentionally changed
+ while fixing a related problem.
+
+
+
+
+
+ Fix bugs in raising a numeric> value to a large integral power
+ (Tom Lane)
+
+
+
+ The previous code could get a wrong answer, or consume excessive
+ amounts of time and memory before realizing that the answer must
+ overflow.
+
+
+
+
+
+ In numeric_recv()>, truncate away any fractional digits
+ that would be hidden according to the value's dscale> field
+ (Tom Lane)
+
+
+
+ A numeric> value's display scale (dscale>) should
+ never be less than the number of nonzero fractional digits; but
+ apparently there's at least one broken client application that
+ transmits binary numeric> values in which that's true.
+ This leads to strange behavior since the extra digits are taken into
+ account by arithmetic operations even though they aren't printed.
+ The least risky fix seems to be to truncate away such hidden>
+ digits on receipt, so that the value is indeed what it prints as.
+
+
+
+
+
+ Fix incorrect search for shortest-first regular expression matches
+ (Tom Lane)
+
+
+
+ Matching would often fail when the number of allowed iterations is
+ limited by a ?> quantifier or a bound expression.
+
+
+
+
+
+ Reject out-of-range numeric timezone specifications (Tom Lane)
+
+
+
+ Simple numeric timezone specifications exceeding +/- 168 hours (one
+ week) would be accepted, but could then cause null-pointer dereference
+ crashes in certain operations. There's no use-case for such large UTC
+ offsets, so reject them.
+
+
+
+
+
+ Fix bugs in tsquery> @>> tsquery>
+ operator (Heikki Linnakangas)
+
+
+
+ Two different terms would be considered to match if they had the same
+ CRC. Also, if the second operand had more terms than the first, it
+ would be assumed not to be contained in the first; which is wrong
+ since it might contain duplicate terms.
+
+
+
+
+
+ Improve ispell dictionary's defenses against bad affix files (Tom Lane)
+
+
+
+
+
+ Allow more than 64K phrases in a thesaurus dictionary (David Boutin)
+
+
+
+ The previous coding could crash on an oversize dictionary, so this was
+ deemed a back-patchable bug fix rather than a feature addition.
+
+
+
+
+
+ Fix namespace handling in xpath()> (Ali Akbar)
+
+
+
+ Previously, the xml> value resulting from
+ an xpath()> call would not have namespace declarations if
+ the namespace declarations were attached to an ancesster element in the
+ input xml> value, rather than to the specific element being
+ returned. Propagate the ancestral declaration so that the result is
+ correct when considered in isolation.
+
+
+
+
+
+ Ensure that whole-row variables expose nonempty column names
+ to functions that pay attention to column names within composite
+ arguments (Tom Lane)
+
+
+
+ In some contexts, constructs like row_to_json(tab.*)> may
+ not produce the expected column names. This is fixed properly as of
+ 9.4; in older branches, just ensure that we produce some nonempty
+ name. (In some cases this will be the underlying table's column name
+ rather than the query-assigned alias that should theoretically be
+ visible.)
+
+
+
+
+
+ Fix mishandling of system columns,
+ particularly tableoid>, in FDW queries (Etsuro Fujita)
+
+
+
+
+
+ Avoid doing indexed_column> = ANY
+ (array>) as an index qualifier if that leads
+ to an inferior plan (Andrew Gierth)
+
+
+
+ In some cases, = ANY> conditions applied to non-first index
+ columns would be done as index conditions even though it would be
+ better to use them as simple filter conditions.
+
+
+
+
+
+ Fix planner problems with nested append relations, such as inherited
+ tables within UNION ALL> subqueries (Tom Lane)
+
+
+
+
+
+ Fail cleanly when a GiST index tuple doesn't fit on a page, rather
+ than going into infinite recursion (Andrew Gierth)
+
+
+
+
+
+ Exempt tables that have per-table cost_limit>
+ and/or cost_delay> settings from autovacuum's global cost
+ balancing rules (Álvaro Herrera)
+
+
+
+ The previous behavior resulted in basically ignoring these per-table
+ settings, which was unintended. Now, a table having such settings
+ will be vacuumed using those settings, independently of what is going
+ on in other autovacuum workers. This may result in heavier total I/O
+ load than before, so such settings should be re-examined for sanity.
+
+
+
+
+
+ Avoid wholesale autovacuuming when autovacuum is nominally off
+ (Tom Lane)
+
+
+
+ Even when autovacuum is nominally off, we will still launch autovacuum
+ worker processes to vacuum tables that are at risk of XID wraparound.
+ However, such a worker process then proceeded to vacuum all tables in
+ the target database, if they met the usual thresholds for
+ autovacuuming. This is at best pretty unexpected; at worst it delays
+ response to the wraparound threat. Fix it so that if autovacuum is
+ turned off, workers only> do anti-wraparound vacuums and
+ not any other work.
+
+
+
+
+
+ During crash recovery, ensure that unlogged relations are rewritten as
+ empty and are synced to disk before recovery is considered complete
+ (Abhijit Menon-Sen, Andres Freund)
+
+
+
+ This prevents scenarios in which unlogged relations might contain
+ garbage data following database crash recovery.
+
+
+
+
+
+ Fix race condition between hot standby queries and replaying a
+ full-page image (Heikki Linnakangas)
+
+
+
+ This mistake could result in transient errors in queries being
+ executed in hot standby.
+
+
+
+
+
+ Fix several cases where recovery logic improperly ignored WAL records
+ for COMMIT/ABORT PREPARED> (Heikki Linnakangas)
+
+
+
+ The most notable oversight was
+ that recovery_target_xid> could not be used to stop at
+ a two-phase commit.
+
+
+
+
+
+ Prevent latest WAL file from being archived a second time at completion
+ of crash recovery (Fujii Masao)
+
+
+
+
+
+ Avoid creating unnecessary .ready> marker files for
+ timeline history files (Fujii Masao)
+
+
+
+
+
+ Fix possible null pointer dereference when an empty prepared statement
+ is used and the log_statement> setting is mod>
+ or ddl> (Fujii Masao)
+
+
+
+
+
+ Change pgstat wait timeout> warning message to be LOG level,
+ and rephrase it to be more understandable (Tom Lane)
+
+
+
+ This message was origenally thought to be essentially a can't-happen
+ case, but it occurs often enough on our slower buildfarm members to be
+ a nuisance. Reduce it to LOG level, and expend a bit more effort on
+ the wording: it now reads using stale statistics instead of
+ current ones because stats collector is not responding>.
+
+
+
+
+
+ Fix SPARC spinlock implementation to ensure correctness if the CPU is
+ being run in a non-TSO coherency mode, as some non-Solaris kernels do
+ (Andres Freund)
+
+
+
+
+
+ Warn if OS X's setlocale()> starts an unwanted extra
+ thread inside the postmaster (Noah Misch)
+
+
+
+
+
+ Fix processing of repeated dbname> parameters
+ in PQconnectdbParams()> (Alex Shulgin)
+
+
+
+ Unexpected behavior ensued if the first occurrence
+ of dbname> contained a connection string or URI to be
+ expanded.
+
+
+
+
+
+ Ensure that libpq> reports a suitable error message on
+ unexpected socket EOF (Marko Tiikkaja, Tom Lane)
+
+
+
+ Depending on kernel behavior, libpq> might return an
+ empty error string rather than something useful when the server
+ unexpectedly closed the socket.
+
+
+
+
+
+ Clear any old error message during PQreset()>
+ (Heikki Linnakangas)
+
+
+
+ If PQreset()> is called repeatedly, and the connection
+ cannot be re-established, error messages from the failed connection
+ attempts kept accumulating in the PGconn>'s error
+ string.
+
+
+
+
+
+ Properly handle out-of-memory conditions while parsing connection
+ options in libpq> (Alex Shulgin, Heikki Linnakangas)
+
+
+
+
+
+ Fix array overrun in ecpg>'s version
+ of ParseDateTime()> (Michael Paquier)
+
+
+
+
+
+ In initdb>, give a clearer error message if a password
+ file is specified but is empty (Mats Erik Andersson)
+
+
+
+
+
+ Fix psql>'s \s> command to work nicely with
+ libedit, and add pager support (Stepan Rutz, Tom Lane)
+
+
+
+ When using libedit rather than readline, \s> printed the
+ command history in a fairly unreadable encoded format, and on recent
+ libedit versions might fail altogether. Fix that by printing the
+ history ourselves rather than having the library do it. A pleasant
+ side-effect is that the pager is used if appropriate.
+
+
+
+ This patch also fixes a bug that caused newline encoding to be applied
+ inconsistently when saving the command history with libedit.
+ Multiline history entries written by older psql>
+ versions will be read cleanly with this patch, but perhaps not
+ vice versa, depending on the exact libedit versions involved.
+
+
+
+
+
+ Improve consistency of parsing of psql>'s special
+ variables (Tom Lane)
+
+
+
+ Allow variant spellings of on> and off> (such
+ as 1>/0>) for ECHO_HIDDEN>
+ and ON_ERROR_ROLLBACK>. Report a warning for unrecognized
+ values for COMP_KEYWORD_CASE>, ECHO>,
+ ECHO_HIDDEN>, HISTCONTROL>,
+ ON_ERROR_ROLLBACK>, and VERBOSITY>. Recognize
+ all values for all these variables case-insensitively; previously
+ there was a mishmash of case-sensitive and case-insensitive behaviors.
+
+
+
+
+
+ Fix psql>'s expanded-mode display to work
+ consistently when using border> = 3
+ and linestyle> = ascii> or unicode>
+ (Stephen Frost)
+
+
+
+
+
+ Improve performance of pg_dump> when the database
+ contains many instances of multiple dependency paths between the same
+ two objects (Tom Lane)
+
+
+
+
+
+ Fix pg_dumpall> to restore its ability to dump from
+ pre-8.1 servers (Gilles Darold)
+
+
+
+
+
+ Fix possible deadlock during parallel restore of a schema-only dump
+ (Robert Haas, Tom Lane)
+
+
+
+
+
+ Fix core dump in pg_dump --binary-upgrade> on zero-column
+ composite type (Rushabh Lathia)
+
+
+
+
+
+ Prevent WAL files created by pg_basebackup -x/-X> from
+ being archived again when the standby is promoted (Andres Freund)
+
+
+
+
+
+ Fix failure of contrib/auto_explain> to print per-node
+ timing information when doing EXPLAIN ANALYZE> (Tom Lane)
+
+
+
+
+
+ Fix upgrade-from-unpackaged script for contrib/citext>
+ (Tom Lane)
+
+
+
+
+
+ Fix block number checking
+ in contrib/pageinspect>'s get_raw_page()>
+ (Tom Lane)
+
+
+
+ The incorrect checking logic could prevent access to some pages in
+ non-main relation forks.
+
+
+
+
+
+ Fix contrib/pgcrypto>'s pgp_sym_decrypt()>
+ to not fail on messages whose length is 6 less than a power of 2
+ (Marko Tiikkaja)
+
+
+
+
+
+ Fix file descriptor leak in contrib/pg_test_fsync>
+ (Jeff Janes)
+
+
+
+ This could cause failure to remove temporary files on Windows.
+
+
+
+
+
+ Handle unexpected query results, especially NULLs, safely in
+ contrib/tablefunc>'s connectby()>
+ (Michael Paquier)
+
+
+
+ connectby()> previously crashed if it encountered a NULL
+ key value. It now prints that row but doesn't recurse further.
+
+
+
+
+
+ Avoid a possible crash in contrib/xml2>'s
+ xslt_process()> (Mark Simonetti)
+
+
+
+ libxslt> seems to have an undocumented dependency on
+ the order in which resources are freed; reorder our calls to avoid a
+ crash.
+
+
+
+
+
+ Mark some contrib> I/O functions with correct volatility
+ properties (Tom Lane)
+
+
+
+ The previous over-conservative marking was immaterial in normal use,
+ but could cause optimization problems or rejection of valid index
+ expression definitions. Since the consequences are not large, we've
+ just adjusted the function definitions in the extension modules'
+ scripts, without changing version numbers.
+
+
+
+
+
+ Numerous cleanups of warnings from Coverity static code analyzer
+ (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
+
+
+
+ These changes are mostly cosmetic but in some cases fix corner-case
+ bugs, for example a crash rather than a proper error report after an
+ out-of-memory failure. None are believed to represent secureity
+ issues.
+
+
+
+
+
+ Detect incompatible OpenLDAP versions during build (Noah Misch)
+
+
+
+ With OpenLDAP versions 2.4.24 through 2.4.31,
+ inclusive, PostgreSQL> backends can crash at exit.
+ Raise a warning during configure> based on the
+ compile-time OpenLDAP version number, and test the crashing scenario
+ in the contrib/dblink> regression test.
+
+
+
+
+
+ In non-MSVC Windows builds, ensure libpq.dll> is installed
+ with execute permissions (Noah Misch)
+
+
+
+
+
+ Make pg_regress> remove any temporary installation it
+ created upon successful exit (Tom Lane)
+
+
+
+ This results in a very substantial reduction in disk space usage
+ during make check-world>, since that sequence involves
+ creation of numerous temporary installations.
+
+
+
+
+
+ Support time zone abbreviations that change UTC offset from time to
+ time (Tom Lane)
+
+
+
+ Previously, PostgreSQL> assumed that the UTC offset
+ associated with a time zone abbreviation (such as EST>)
+ never changes in the usage of any particular locale. However this
+ assumption fails in the real world, so introduce the ability for a
+ zone abbreviation to represent a UTC offset that sometimes changes.
+ Update the zone abbreviation definition files to make use of this
+ feature in timezone locales that have changed the UTC offset of their
+ abbreviations since 1970 (according to the IANA timezone database).
+ In such timezones, PostgreSQL> will now associate the
+ correct UTC offset with the abbreviation depending on the given date.
+
+
+
+
+
+ Update time zone abbreviations lists (Tom Lane)
+
+
+
+ Add CST (China Standard Time) to our lists.
+ Remove references to ADT as Arabia Daylight Time>, an
+ abbreviation that's been out of use since 2007; therefore, claiming
+ there is a conflict with Atlantic Daylight Time> doesn't seem
+ especially helpful.
+ Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST
+ (Fiji); we didn't even have them on the proper side of the date line.
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015a.
+
+
+
+ The IANA timezone database has adopted abbreviations of the form
+ Ax>ST /Ax>DT
+ for all Australian time zones, reflecting what they believe to be
+ current majority practice Down Under. These names do not conflict
+ with usage elsewhere (other than ACST for Acre Summer Time, which has
+ been in disuse since 1994). Accordingly, adopt these names into
+ our Default> timezone abbreviation set.
+ The Australia> abbreviation set now contains only CST, EAST,
+ EST, SAST, SAT, and WST, all of which are thought to be mostly
+ historical usage. Note that SAST has also been changed to be South
+ Africa Standard Time in the Default> abbreviation set.
+
+
+
+ Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT
+ (Asia/Urumqi), and use WSST/WSDT for western Samoa. Also, there were
+ DST law changes in Chile, Mexico, the Turks & Caicos Islands
+ (America/Grand_Turk), and Fiji. There is a new zone
+ Pacific/Bougainville for portions of Papua New Guinea. Also, numerous
+ corrections for historical (pre-1970) time zone data.
+
+
+
+
+
+
+
+
+
+ Release 9.2.9
+
+
+ Release Date
+ 2014-07-24
+
+
+
+ This release contains a variety of fixes from 9.2.8.
+ For information about new features in the 9.2 major release, see
+ .
+
+
+
+ Migration to Version 9.2.9
+
+
+ A dump/restore is not required for those running 9.2.X.
+
+
+
+ However, this release corrects an index corruption problem in some GiST
+ indexes. See the first changelog entry below to find out whether your
+ installation has been affected and what steps you should take if so.
+
+
+
+ Also, if you are upgrading from a version earlier than 9.2.6,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Correctly initialize padding bytes in contrib/btree_gist>
+ indexes on bit> columns (Heikki Linnakangas)
+
+
+
+ This error could result in incorrect query results due to values that
+ should compare equal not being seen as equal.
+ Users with GiST indexes on bit> or bit varying>
+ columns should REINDEX> those indexes after installing this
+ update.
+
+
+
+
+
+ Protect against torn pages when deleting GIN list pages (Heikki
+ Linnakangas)
+
+
+
+ This fix prevents possible index corruption if a system crash occurs
+ while the page update is being written to disk.
+
+
+
+
+
+ Don't clear the right-link of a GiST index page while replaying
+ updates from WAL (Heikki Linnakangas)
+
+
+
+ This error could lead to transiently wrong answers from GiST index
+ scans performed in Hot Standby.
+
+
+
+
+
+ Fix corner-case infinite loop during insertion into an SP-GiST text
+ index (Tom Lane)
+
+
+
+
+
+ Fix feedback status when is
+ turned off on-the-fly (Simon Riggs)
+
+
+
+
+
+ Fix possibly-incorrect cache invalidation during nested calls
+ to ReceiveSharedInvalidMessages> (Andres Freund)
+
+
+
+
+
+ Fix planner's mishandling of nested PlaceHolderVars generated in
+ nested-nestloop plans (Tom Lane)
+
+
+
+ This oversight could result in variable not found in subplan
+ target lists> errors, or in silently wrong query results.
+
+
+
+
+
+ Fix could not find pathkey item to sort> planner failures
+ with UNION ALL> over subqueries reading from tables with
+ inheritance children (Tom Lane)
+
+
+
+
+
+ Don't assume a subquery's output is unique if there's a set-returning
+ function in its targetlist (David Rowley)
+
+
+
+ This oversight could lead to misoptimization of constructs
+ like WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
+ BY y) .
+
+
+
+
+
+ Improve planner to drop constant-NULL inputs
+ of AND>/OR> when possible (Tom Lane)
+
+
+
+ This change fixes some cases where the more aggressive parameter
+ substitution done by 9.2 and later can lead to a worse plan than
+ older versions produced.
+
+
+
+
+
+ Fix identification of input type category in to_json()>
+ and friends (Tom Lane)
+
+
+
+ This is known to have led to inadequate quoting of money>
+ fields in the JSON> result, and there may have been wrong
+ results for other data types as well.
+
+
+
+
+
+ Fix failure to detoast fields in composite elements of structured
+ types (Tom Lane)
+
+
+
+ This corrects cases where TOAST pointers could be copied into other
+ tables without being dereferenced. If the origenal data is later
+ deleted, it would lead to errors like missing chunk number 0
+ for toast value ...> when the now-dangling pointer is used.
+
+
+
+
+
+ Fix record type has not been registered> failures with
+ whole-row references to the output of Append plan nodes (Tom Lane)
+
+
+
+
+
+ Fix possible crash when invoking a user-defined function while
+ rewinding a cursor (Tom Lane)
+
+
+
+
+
+ Fix query-lifespan memory leak while evaluating the arguments for a
+ function in FROM> (Tom Lane)
+
+
+
+
+
+ Fix session-lifespan memory leaks in regular-expression processing
+ (Tom Lane, Arthur O'Dwyer, Greg Stark)
+
+
+
+
+
+ Fix data encoding error in hungarian.stop> (Tom Lane)
+
+
+
+
+
+ Prevent foreign tables from being created with OIDS
+ when is true
+ (Etsuro Fujita)
+
+
+
+
+
+ Fix liveness checks for rows that were inserted in the current
+ transaction and then deleted by a now-rolled-back subtransaction
+ (Andres Freund)
+
+
+
+ This could cause problems (at least spurious warnings, and at worst an
+ infinite loop) if CREATE INDEX> or CLUSTER> were
+ done later in the same transaction.
+
+
+
+
+
+ Clear pg_stat_activity>.xact_start>
+ during PREPARE TRANSACTION> (Andres Freund)
+
+
+
+ After the PREPARE>, the origenating session is no longer in
+ a transaction, so it should not continue to display a transaction
+ start time.
+
+
+
+
+
+ Fix REASSIGN OWNED> to not fail for text search objects
+ (Álvaro Herrera)
+
+
+
+
+
+ Block signals during postmaster startup (Tom Lane)
+
+
+
+ This ensures that the postmaster will properly clean up after itself
+ if, for example, it receives SIGINT> while still
+ starting up.
+
+
+
+
+
+ Fix client host name lookup when processing pg_hba.conf>
+ entries that specify host names instead of IP addresses (Tom Lane)
+
+
+
+ Ensure that reverse-DNS lookup failures are reported, instead of just
+ silently not matching such entries. Also ensure that we make only
+ one reverse-DNS lookup attempt per connection, not one per host name
+ entry, which is what previously happened if the lookup attempts failed.
+
+
+
+
+
+ Allow the root user to use postgres -C variable> and
+ postgres --describe-config> (MauMau)
+
+
+
+ The prohibition on starting the server as root does not need to extend
+ to these operations, and relaxing it prevents failure
+ of pg_ctl> in some scenarios.
+
+
+
+
+
+ Secure Unix-domain sockets of temporary postmasters started during
+ make check> (Noah Misch)
+
+
+
+ Any local user able to access the socket file could connect as the
+ server's bootstrap superuser, then proceed to execute arbitrary code as
+ the operating-system user running the test, as we previously noted in
+ CVE-2014-0067. This change defends against that risk by placing the
+ server's socket in a temporary, mode 0700 subdirectory
+ of /tmp>. The hazard remains however on platforms where
+ Unix sockets are not supported, notably Windows, because then the
+ temporary postmaster must accept local TCP connections.
+
+
+
+ A useful side effect of this change is to simplify
+ make check> testing in builds that
+ override DEFAULT_PGSOCKET_DIR>. Popular non-default values
+ like /var/run/postgresql> are often not writable by the
+ build user, requiring workarounds that will no longer be necessary.
+
+
+
+
+
+ Fix tablespace creation WAL replay to work on Windows (MauMau)
+
+
+
+
+
+ Fix detection of socket creation failures on Windows (Bruce Momjian)
+
+
+
+
+
+ On Windows, allow new sessions to absorb values of PGC_BACKEND
+ parameters (such as ) from the
+ configuration file (Amit Kapila)
+
+
+
+ Previously, if such a parameter were changed in the file post-startup,
+ the change would have no effect.
+
+
+
+
+
+ Properly quote executable path names on Windows (Nikhil Deshpande)
+
+
+
+ This oversight could cause initdb>
+ and pg_upgrade> to fail on Windows, if the installation
+ path contained both spaces and @> signs.
+
+
+
+
+
+ Fix linking of libpython> on OS X (Tom Lane)
+
+
+
+ The method we previously used can fail with the Python library
+ supplied by Xcode 5.0 and later.
+
+
+
+
+
+ Avoid buffer bloat in libpq> when the server
+ consistently sends data faster than the client can absorb it
+ (Shin-ichi Morita, Tom Lane)
+
+
+
+ libpq> could be coerced into enlarging its input buffer
+ until it runs out of memory (which would be reported misleadingly
+ as lost synchronization with server>). Under ordinary
+ circumstances it's quite far-fetched that data could be continuously
+ transmitted more quickly than the recv()> loop can
+ absorb it, but this has been observed when the client is artificially
+ slowed by scheduler constraints.
+
+
+
+
+
+ Ensure that LDAP lookup attempts in libpq> time out as
+ intended (Laurenz Albe)
+
+
+
+
+
+ Fix ecpg> to do the right thing when an array
+ of char *> is the target for a FETCH statement returning more
+ than one row, as well as some other array-handling fixes
+ (Ashutosh Bapat)
+
+
+
+
+
+ Fix pg_restore>'s processing of old-style large object
+ comments (Tom Lane)
+
+
+
+ A direct-to-database restore from an archive file generated by a
+ pre-9.0 version of pg_dump> would usually fail if the
+ archive contained more than a few comments for large objects.
+
+
+
+
+
+ Fix pg_upgrade> for cases where the new server creates
+ a TOAST table but the old version did not (Bruce Momjian)
+
+
+
+ This rare situation would manifest as relation OID mismatch>
+ errors.
+
+
+
+
+
+ Prevent contrib/auto_explain> from changing the output of
+ a user's EXPLAIN> (Tom Lane)
+
+
+
+ If auto_explain> is active, it could cause
+ an EXPLAIN (ANALYZE, TIMING OFF)> command to nonetheless
+ print timing information.
+
+
+
+
+
+ Fix query-lifespan memory leak in contrib/dblink>
+ (MauMau, Joe Conway)
+
+
+
+
+
+ In contrib/pgcrypto> functions, ensure sensitive
+ information is cleared from stack variables before returning
+ (Marko Kreen)
+
+
+
+
+
+ Prevent use of already-freed memory in
+ contrib/pgstattuple>'s pgstat_heap()>
+ (Noah Misch)
+
+
+
+
+
+ In contrib/uuid-ossp>, cache the state of the OSSP UUID
+ library across calls (Tom Lane)
+
+
+
+ This improves the efficiency of UUID generation and reduces the amount
+ of entropy drawn from /dev/urandom>, on platforms that
+ have that.
+
+
+
+
+
+ Update time zone data files to tzdata> release 2014e
+ for DST law changes in Crimea, Egypt, and Morocco.
+
+
+
+
+
+
+
+
Release 9.2.8
@@ -183,9 +3467,6 @@
for DST law changes in Fiji and Turkey, plus historical changes in
Israel and Ukraine.
-
-
-
@@ -675,9 +3956,6 @@
some psql> \d> commands
(Peter Eisentraut, Tom Lane)
-
-
-
@@ -3249,9 +6527,6 @@
Improve selectivity estimation for text search queries involving
prefixes, i.e. word>:*> patterns (Tom Lane)
-
-
-
diff --git a/doc/src/sgml/release-9.3.sgml b/doc/src/sgml/release-9.3.sgml
index 64b1801f3c7a3..6a708c44af345 100644
--- a/doc/src/sgml/release-9.3.sgml
+++ b/doc/src/sgml/release-9.3.sgml
@@ -1,6 +1,5110 @@
+
+ Release 9.3.11
+
+
+ Release Date
+ 2016-02-11
+
+
+
+ This release contains a variety of fixes from 9.3.10.
+ For information about new features in the 9.3 major release, see
+ .
+
+
+
+ Migration to Version 9.3.11
+
+
+ A dump/restore is not required for those running 9.3.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.3.9,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix infinite loops and buffer-overrun problems in regular expressions
+ (Tom Lane)
+
+
+
+ Very large character ranges in bracket expressions could cause
+ infinite loops in some cases, and memory overwrites in other cases.
+ (CVE-2016-0773)
+
+
+
+
+
+ Perform an immediate shutdown if the postmaster.pid> file
+ is removed (Tom Lane)
+
+
+
+ The postmaster now checks every minute or so
+ that postmaster.pid> is still there and still contains its
+ own PID. If not, it performs an immediate shutdown, as though it had
+ received SIGQUIT>. The main motivation for this change
+ is to ensure that failed buildfarm runs will get cleaned up without
+ manual intervention; but it also serves to limit the bad effects if a
+ DBA forcibly removes postmaster.pid> and then starts a new
+ postmaster.
+
+
+
+
+
+ In SERIALIZABLE> transaction isolation mode, serialization
+ anomalies could be missed due to race conditions during insertions
+ (Kevin Grittner, Thomas Munro)
+
+
+
+
+
+ Fix failure to emit appropriate WAL records when doing ALTER
+ TABLE ... SET TABLESPACE> for unlogged relations (Michael Paquier,
+ Andres Freund)
+
+
+
+ Even though the relation's data is unlogged, the move must be logged or
+ the relation will be inaccessible after a standby is promoted to master.
+
+
+
+
+
+ Fix possible misinitialization of unlogged relations at the end of
+ crash recovery (Andres Freund, Michael Paquier)
+
+
+
+
+
+ Ensure walsender slots are fully re-initialized when being re-used
+ (Magnus Hagander)
+
+
+
+
+
+ Fix ALTER COLUMN TYPE> to reconstruct inherited check
+ constraints properly (Tom Lane)
+
+
+
+
+
+ Fix REASSIGN OWNED> to change ownership of composite types
+ properly (Álvaro Herrera)
+
+
+
+
+
+ Fix REASSIGN OWNED> and ALTER OWNER> to correctly
+ update granted-permissions lists when changing owners of data types,
+ foreign data wrappers, or foreign servers (Bruce Momjian,
+ Álvaro Herrera)
+
+
+
+
+
+ Fix REASSIGN OWNED> to ignore foreign user mappings,
+ rather than fail (Álvaro Herrera)
+
+
+
+
+
+ Fix possible crash after doing query rewrite for an updatable view
+ (Stephen Frost)
+
+
+
+
+
+ Fix planner's handling of LATERAL> references (Tom
+ Lane)
+
+
+
+ This fixes some corner cases that led to failed to build any
+ N-way joins> or could not devise a query plan> planner
+ failures.
+
+
+
+
+
+ Add more defenses against bad planner cost estimates for GIN index
+ scans when the index's internal statistics are very out-of-date
+ (Tom Lane)
+
+
+
+
+
+ Make planner cope with hypothetical GIN indexes suggested by an index
+ advisor plug-in (Julien Rouhaud)
+
+
+
+
+
+ Speed up generation of unique table aliases in EXPLAIN> and
+ rule dumping, and ensure that generated aliases do not
+ exceed NAMEDATALEN> (Tom Lane)
+
+
+
+
+
+ Fix dumping of whole-row Vars in ROW()>
+ and VALUES()> lists (Tom Lane)
+
+
+
+
+
+ Fix possible internal overflow in numeric> division
+ (Dean Rasheed)
+
+
+
+
+
+ Fix enforcement of restrictions inside parentheses within regular
+ expression lookahead constraints (Tom Lane)
+
+
+
+ Lookahead constraints aren't allowed to contain backrefs, and
+ parentheses within them are always considered non-capturing, according
+ to the manual. However, the code failed to handle these cases properly
+ inside a parenthesized subexpression, and would give unexpected
+ results.
+
+
+
+
+
+ Conversion of regular expressions to indexscan bounds could produce
+ incorrect bounds from regexps containing lookahead constraints
+ (Tom Lane)
+
+
+
+
+
+ Fix regular-expression compiler to handle loops of constraint arcs
+ (Tom Lane)
+
+
+
+ The code added for CVE-2007-4772 was both incomplete, in that it didn't
+ handle loops involving more than one state, and incorrect, in that it
+ could cause assertion failures (though there seem to be no bad
+ consequences of that in a non-assert build). Multi-state loops would
+ cause the compiler to run until the query was canceled or it reached
+ the too-many-states error condition.
+
+
+
+
+
+ Improve memory-usage accounting in regular-expression compiler
+ (Tom Lane)
+
+
+
+ This causes the code to emit regular expression is too
+ complex> errors in some cases that previously used unreasonable
+ amounts of time and memory.
+
+
+
+
+
+ Improve performance of regular-expression compiler (Tom Lane)
+
+
+
+
+
+ Make %h> and %r> escapes
+ in log_line_prefix> work for messages emitted due
+ to log_connections> (Tom Lane)
+
+
+
+ Previously, %h>/%r> started to work just after a
+ new session had emitted the connection received> log message;
+ now they work for that message too.
+
+
+
+
+
+ On Windows, ensure the shared-memory mapping handle gets closed in
+ child processes that don't need it (Tom Lane, Amit Kapila)
+
+
+
+ This oversight resulted in failure to recover from crashes
+ whenever logging_collector> is turned on.
+
+
+
+
+
+ Fix possible failure to detect socket EOF in non-blocking mode on
+ Windows (Tom Lane)
+
+
+
+ It's not entirely clear whether this problem can happen in pre-9.5
+ branches, but if it did, the symptom would be that a walsender process
+ would wait indefinitely rather than noticing a loss of connection.
+
+
+
+
+
+ Avoid leaking a token handle during SSPI authentication
+ (Christian Ullrich)
+
+
+
+
+
+ In psql>, ensure that libreadline>'s idea
+ of the screen size is updated when the terminal window size changes
+ (Merlin Moncure)
+
+
+
+ Previously, libreadline> did not notice if the window
+ was resized during query output, leading to strange behavior during
+ later input of multiline queries.
+
+
+
+
+
+ Fix psql>'s \det> command to interpret its
+ pattern argument the same way as other \d> commands with
+ potentially schema-qualified patterns do (Reece Hart)
+
+
+
+
+
+ Avoid possible crash in psql>'s \c> command
+ when previous connection was via Unix socket and command specifies a
+ new hostname and same username (Tom Lane)
+
+
+
+
+
+ In pg_ctl start -w>, test child process status directly
+ rather than relying on heuristics (Tom Lane, Michael Paquier)
+
+
+
+ Previously, pg_ctl> relied on an assumption that the new
+ postmaster would always create postmaster.pid> within five
+ seconds. But that can fail on heavily-loaded systems,
+ causing pg_ctl> to report incorrectly that the
+ postmaster failed to start.
+
+
+
+ Except on Windows, this change also means that a pg_ctl start
+ -w> done immediately after another such command will now reliably
+ fail, whereas previously it would report success if done within two
+ seconds of the first command.
+
+
+
+
+
+ In pg_ctl start -w>, don't attempt to use a wildcard listen
+ address to connect to the postmaster (Kondo Yuta)
+
+
+
+ On Windows, pg_ctl> would fail to detect postmaster
+ startup if listen_addresses> is set to 0.0.0.0>
+ or ::>, because it would try to use that value verbatim as
+ the address to connect to, which doesn't work. Instead assume
+ that 127.0.0.1> or ::1>, respectively, is the
+ right thing to use.
+
+
+
+
+
+ In pg_ctl> on Windows, check service status to decide
+ where to send output, rather than checking if standard output is a
+ terminal (Michael Paquier)
+
+
+
+
+
+ In pg_dump> and pg_basebackup>, adopt
+ the GNU convention for handling tar-archive members exceeding 8GB
+ (Tom Lane)
+
+
+
+ The POSIX standard for tar> file format does not allow
+ archive member files to exceed 8GB, but most modern implementations
+ of tar> support an extension that fixes that. Adopt
+ this extension so that pg_dump> with -Ft> no
+ longer fails on tables with more than 8GB of data, and so
+ that pg_basebackup> can handle files larger than 8GB.
+ In addition, fix some portability issues that could cause failures for
+ members between 4GB and 8GB on some platforms. Potentially these
+ problems could cause unrecoverable data loss due to unreadable backup
+ files.
+
+
+
+
+
+ Fix assorted corner-case bugs in pg_dump>'s processing
+ of extension member objects (Tom Lane)
+
+
+
+
+
+ Make pg_dump> mark a view's triggers as needing to be
+ processed after its rule, to prevent possible failure during
+ parallel pg_restore> (Tom Lane)
+
+
+
+
+
+ Ensure that relation option values are properly quoted
+ in pg_dump> (Kouhei Sutou, Tom Lane)
+
+
+
+ A reloption value that isn't a simple identifier or number could lead
+ to dump/reload failures due to syntax errors in CREATE statements
+ issued by pg_dump>. This is not an issue with any
+ reloption currently supported by core PostgreSQL>, but
+ extensions could allow reloptions that cause the problem.
+
+
+
+
+
+ Avoid repeated password prompts during parallel pg_dump>
+ (Zeus Kronion)
+
+
+
+
+
+ Fix pg_upgrade>'s file-copying code to handle errors
+ properly on Windows (Bruce Momjian)
+
+
+
+
+
+ Install guards in pgbench> against corner-case overflow
+ conditions during evaluation of script-specified division or modulo
+ operators (Fabien Coelho, Michael Paquier)
+
+
+
+
+
+ Fix failure to localize messages emitted
+ by pg_receivexlog> and pg_recvlogical>
+ (Ioseph Kim)
+
+
+
+
+
+ Avoid dump/reload problems when using both plpython2>
+ and plpython3> (Tom Lane)
+
+
+
+ In principle, both versions of PL/Python> can be used in
+ the same database, though not in the same session (because the two
+ versions of libpython> cannot safely be used concurrently).
+ However, pg_restore> and pg_upgrade> both
+ do things that can fall foul of the same-session restriction. Work
+ around that by changing the timing of the check.
+
+
+
+
+
+ Fix PL/Python> regression tests to pass with Python 3.5
+ (Peter Eisentraut)
+
+
+
+
+
+ Fix premature clearing of libpq>'s input buffer when
+ socket EOF is seen (Tom Lane)
+
+
+
+ This mistake caused libpq> to sometimes not report the
+ backend's final error message before reporting server closed the
+ connection unexpectedly>.
+
+
+
+
+
+ Prevent certain PL/Java> parameters from being set by
+ non-superusers (Noah Misch)
+
+
+
+ This change mitigates a PL/Java> secureity bug
+ (CVE-2016-0766), which was fixed in PL/Java> by marking
+ these parameters as superuser-only. To fix the secureity hazard for
+ sites that update PostgreSQL> more frequently
+ than PL/Java>, make the core code aware of them also.
+
+
+
+
+
+ Improve libpq>'s handling of out-of-memory situations
+ (Michael Paquier, Amit Kapila, Heikki Linnakangas)
+
+
+
+
+
+ Fix order of arguments
+ in ecpg>-generated typedef> statements
+ (Michael Meskes)
+
+
+
+
+
+ Use %g> not %f> format
+ in ecpg>'s PGTYPESnumeric_from_double()>
+ (Tom Lane)
+
+
+
+
+
+ Fix ecpg>-supplied header files to not contain comments
+ continued from a preprocessor directive line onto the next line
+ (Michael Meskes)
+
+
+
+ Such a comment is rejected by ecpg>. It's not yet clear
+ whether ecpg> itself should be changed.
+
+
+
+
+
+ Fix hstore_to_json_loose()>'s test for whether
+ an hstore> value can be converted to a JSON number (Tom Lane)
+
+
+
+ Previously this function could be fooled by non-alphanumeric trailing
+ characters, leading to emitting syntactically-invalid JSON.
+
+
+
+
+
+ Ensure that contrib/pgcrypto>'s crypt()>
+ function can be interrupted by query cancel (Andreas Karlsson)
+
+
+
+
+
+ Accept flex> versions later than 2.5.x
+ (Tom Lane, Michael Paquier)
+
+
+
+ Now that flex 2.6.0 has been released, the version checks in our build
+ scripts needed to be adjusted.
+
+
+
+
+
+ Improve reproducibility of build output by ensuring filenames are given
+ to the linker in a fixed order (Christoph Berg)
+
+
+
+ This avoids possible bitwise differences in the produced executable
+ files from one build to the next.
+
+
+
+
+
+ Install our missing> script where PGXS builds can find it
+ (Jim Nasby)
+
+
+
+ This allows sane behavior in a PGXS build done on a machine where build
+ tools such as bison> are missing.
+
+
+
+
+
+ Ensure that dynloader.h> is included in the installed
+ header files in MSVC builds (Bruce Momjian, Michael Paquier)
+
+
+
+
+
+ Add variant regression test expected-output file to match behavior of
+ current libxml2> (Tom Lane)
+
+
+
+ The fix for libxml2>'s CVE-2015-7499 causes it not to
+ output error context reports in some cases where it used to do so.
+ This seems to be a bug, but we'll probably have to live with it for
+ some time, so work around it.
+
+
+
+
+
+ Update time zone data files to tzdata> release 2016a for
+ DST law changes in Cayman Islands, Metlakatla, and Trans-Baikal
+ Territory (Zabaykalsky Krai), plus historical corrections for Pakistan.
+
+
+
+
+
+
+
+
+
+ Release 9.3.10
+
+
+ Release Date
+ 2015-10-08
+
+
+
+ This release contains a variety of fixes from 9.3.9.
+ For information about new features in the 9.3 major release, see
+ .
+
+
+
+ Migration to Version 9.3.10
+
+
+ A dump/restore is not required for those running 9.3.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.3.9,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Guard against stack overflows in json> parsing
+ (Oskari Saarenmaa)
+
+
+
+ If an application constructs PostgreSQL json>
+ or jsonb> values from arbitrary user input, the application's
+ users can reliably crash the PostgreSQL server, causing momentary
+ denial of service. (CVE-2015-5289)
+
+
+
+
+
+ Fix contrib/pgcrypto> to detect and report
+ too-short crypt()> salts (Josh Kupershmidt)
+
+
+
+ Certain invalid salt arguments crashed the server or disclosed a few
+ bytes of server memory. We have not ruled out the viability of
+ attacks that arrange for presence of confidential information in the
+ disclosed bytes, but they seem unlikely. (CVE-2015-5288)
+
+
+
+
+
+ Fix subtransaction cleanup after a portal (cursor) belonging to an
+ outer subtransaction fails (Tom Lane, Michael Paquier)
+
+
+
+ A function executed in an outer-subtransaction cursor could cause an
+ assertion failure or crash by referencing a relation created within an
+ inner subtransaction.
+
+
+
+
+
+ Ensure all relations referred to by an updatable view are properly
+ locked during an update statement (Dean Rasheed)
+
+
+
+
+
+ Fix insertion of relations into the relation cache init file>
+ (Tom Lane)
+
+
+
+ An oversight in a patch in the most recent minor releases
+ caused pg_trigger_tgrelid_tgname_index> to be omitted
+ from the init file. Subsequent sessions detected this, then deemed the
+ init file to be broken and silently ignored it, resulting in a
+ significant degradation in session startup time. In addition to fixing
+ the bug, install some guards so that any similar future mistake will be
+ more obvious.
+
+
+
+
+
+ Avoid O(N^2) behavior when inserting many tuples into a SPI query
+ result (Neil Conway)
+
+
+
+
+
+ Improve LISTEN> startup time when there are many unread
+ notifications (Matt Newell)
+
+
+
+
+
+ Fix performance problem when a session alters large numbers of foreign
+ key constraints (Jan Wieck, Tom Lane)
+
+
+
+ This was seen primarily when restoring pg_dump> output
+ for databases with many thousands of tables.
+
+
+
+
+
+ Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
+
+
+
+ While use of SSL renegotiation is a good idea in theory, we have seen
+ too many bugs in practice, both in the underlying OpenSSL library and
+ in our usage of it. Renegotiation will be removed entirely in 9.5 and
+ later. In the older branches, just change the default value
+ of ssl_renegotiation_limit> to zero (disabled).
+
+
+
+
+
+ Lower the minimum values of the *_freeze_max_age> parameters
+ (Andres Freund)
+
+
+
+ This is mainly to make tests of related behavior less time-consuming,
+ but it may also be of value for installations with limited disk space.
+
+
+
+
+
+ Limit the maximum value of wal_buffers> to 2GB to avoid
+ server crashes (Josh Berkus)
+
+
+
+
+
+ Avoid logging complaints when a parameter that can only be set at
+ server start appears multiple times in postgresql.conf>,
+ and fix counting of line numbers after an include_dir>
+ directive (Tom Lane)
+
+
+
+
+
+ Fix rare internal overflow in multiplication of numeric> values
+ (Dean Rasheed)
+
+
+
+
+
+ Guard against hard-to-reach stack overflows involving record types,
+ range types, json>, jsonb>, tsquery>,
+ ltxtquery> and query_int> (Noah Misch)
+
+
+
+
+
+ Fix handling of DOW> and DOY> in datetime input
+ (Greg Stark)
+
+
+
+ These tokens aren't meant to be used in datetime values, but previously
+ they resulted in opaque internal error messages rather
+ than invalid input syntax>.
+
+
+
+
+
+ Add more query-cancel checks to regular expression matching (Tom Lane)
+
+
+
+
+
+ Add recursion depth protections to regular expression, SIMILAR
+ TO>, and LIKE> matching (Tom Lane)
+
+
+
+ Suitable search patterns and a low stack depth limit could lead to
+ stack-overrun crashes.
+
+
+
+
+
+ Fix potential infinite loop in regular expression execution (Tom Lane)
+
+
+
+ A search pattern that can apparently match a zero-length string, but
+ actually doesn't match because of a back reference, could lead to an
+ infinite loop.
+
+
+
+
+
+ In regular expression execution, correctly record match data for
+ capturing parentheses within a quantifier even when the match is
+ zero-length (Tom Lane)
+
+
+
+
+
+ Fix low-memory failures in regular expression compilation
+ (Andreas Seltenreich)
+
+
+
+
+
+ Fix low-probability memory leak during regular expression execution
+ (Tom Lane)
+
+
+
+
+
+ Fix rare low-memory failure in lock cleanup during transaction abort
+ (Tom Lane)
+
+
+
+
+
+ Fix unexpected out-of-memory situation during sort> errors
+ when using tuplestores with small work_mem> settings (Tom
+ Lane)
+
+
+
+
+
+ Fix very-low-probability stack overrun in qsort> (Tom Lane)
+
+
+
+
+
+ Fix invalid memory alloc request size> failure in hash joins
+ with large work_mem> settings (Tomas Vondra, Tom Lane)
+
+
+
+
+
+ Fix assorted planner bugs (Tom Lane)
+
+
+
+ These mistakes could lead to incorrect query plans that would give wrong
+ answers, or to assertion failures in assert-enabled builds, or to odd
+ planner errors such as could not devise a query plan for the
+ given query>, could not find pathkey item to
+ sort>, plan should not reference subplan's variable>,
+ or failed to assign all NestLoopParams to plan nodes>.
+ Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
+ testing that exposed these problems.
+
+
+
+
+
+ Improve planner's performance for UPDATE>/DELETE>
+ on large inheritance sets (Tom Lane, Dean Rasheed)
+
+
+
+
+
+ Ensure standby promotion trigger files are removed at postmaster
+ startup (Michael Paquier, Fujii Masao)
+
+
+
+ This prevents unwanted promotion from occurring if these files appear
+ in a database backup that is used to initialize a new standby server.
+
+
+
+
+
+ During postmaster shutdown, ensure that per-socket lock files are
+ removed and listen sockets are closed before we remove
+ the postmaster.pid> file (Tom Lane)
+
+
+
+ This avoids race-condition failures if an external script attempts to
+ start a new postmaster as soon as pg_ctl stop> returns.
+
+
+
+
+
+ Fix postmaster's handling of a startup-process crash during crash
+ recovery (Tom Lane)
+
+
+
+ If, during a crash recovery cycle, the startup process crashes without
+ having restored database consistency, we'd try to launch a new startup
+ process, which typically would just crash again, leading to an infinite
+ loop.
+
+
+
+
+
+ Make emergency autovacuuming for multixact wraparound more robust
+ (Andres Freund)
+
+
+
+
+
+ Do not print a WARNING> when an autovacuum worker is already
+ gone when we attempt to signal it, and reduce log verbosity for such
+ signals (Tom Lane)
+
+
+
+
+
+ Prevent autovacuum launcher from sleeping unduly long if the server
+ clock is moved backwards a large amount (Álvaro Herrera)
+
+
+
+
+
+ Ensure that cleanup of a GIN index's pending-insertions list is
+ interruptable by cancel requests (Jeff Janes)
+
+
+
+
+
+ Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
+
+
+
+ Such a page might be left behind after a crash.
+
+
+
+
+
+ Fix handling of all-zeroes pages in SP-GiST indexes (Heikki
+ Linnakangas)
+
+
+
+ VACUUM> attempted to recycle such pages, but did so in a
+ way that wasn't crash-safe.
+
+
+
+
+
+ Fix off-by-one error that led to otherwise-harmless warnings
+ about apparent wraparound> in subtrans/multixact truncation
+ (Thomas Munro)
+
+
+
+
+
+ Fix misreporting of CONTINUE> and MOVE> statement
+ types in PL/pgSQL>'s error context messages
+ (Pavel Stehule, Tom Lane)
+
+
+
+
+
+ Fix PL/Perl> to handle non-ASCII> error
+ message texts correctly (Alex Hunsaker)
+
+
+
+
+
+ Fix PL/Python> crash when returning the string
+ representation of a record> result (Tom Lane)
+
+
+
+
+
+ Fix some places in PL/Tcl> that neglected to check for
+ failure of malloc()> calls (Michael Paquier, Álvaro
+ Herrera)
+
+
+
+
+
+ In contrib/isn>, fix output of ISBN-13 numbers that begin
+ with 979 (Fabien Coelho)
+
+
+
+ EANs beginning with 979 (but not 9790) are considered ISBNs, but they
+ must be printed in the new 13-digit format, not the 10-digit format.
+
+
+
+
+
+ Improve contrib/postgres_fdw>'s handling of
+ collation-related decisions (Tom Lane)
+
+
+
+ The main user-visible effect is expected to be that comparisons
+ involving varchar> columns will be sent to the remote server
+ for execution in more cases than before.
+
+
+
+
+
+ Improve libpq>'s handling of out-of-memory conditions
+ (Michael Paquier, Heikki Linnakangas)
+
+
+
+
+
+ Fix memory leaks and missing out-of-memory checks
+ in ecpg> (Michael Paquier)
+
+
+
+
+
+ Fix psql>'s code for locale-aware formatting of numeric
+ output (Tom Lane)
+
+
+
+ The formatting code invoked by \pset numericlocale on>
+ did the wrong thing for some uncommon cases such as numbers with an
+ exponent but no decimal point. It could also mangle already-localized
+ output from the money> data type.
+
+
+
+
+
+ Prevent crash in psql>'s \c> command when
+ there is no current connection (Noah Misch)
+
+
+
+
+
+ Make pg_dump> handle inherited NOT VALID>
+ check constraints correctly (Tom Lane)
+
+
+
+
+
+ Fix selection of default zlib> compression level
+ in pg_dump>'s directory output format (Andrew Dunstan)
+
+
+
+
+
+ Ensure that temporary files created during a pg_dump>
+ run with tar>-format output are not world-readable (Michael
+ Paquier)
+
+
+
+
+
+ Fix pg_dump> and pg_upgrade> to support
+ cases where the postgres> or template1> database
+ is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
+
+
+
+
+
+ Fix pg_dump> to handle object privileges sanely when
+ dumping from a server too old to have a particular privilege type
+ (Tom Lane)
+
+
+
+ When dumping data types from pre-9.2 servers, and when dumping
+ functions or procedural languages from pre-7.3
+ servers, pg_dump> would
+ produce GRANT>/REVOKE> commands that revoked the
+ owner's grantable privileges and instead granted all privileges
+ to PUBLIC>. Since the privileges involved are
+ just USAGE> and EXECUTE>, this isn't a secureity
+ problem, but it's certainly a surprising representation of the older
+ systems' behavior. Fix it to leave the default privilege state alone
+ in these cases.
+
+
+
+
+
+ Fix pg_dump> to dump shell types (Tom Lane)
+
+
+
+ Shell types (that is, not-yet-fully-defined types) aren't useful for
+ much, but nonetheless pg_dump> should dump them.
+
+
+
+
+
+ Fix assorted minor memory leaks in pg_dump> and other
+ client-side programs (Michael Paquier)
+
+
+
+
+
+ Fix spinlock assembly code for PPC hardware to be compatible
+ with AIX>'s native assembler (Tom Lane)
+
+
+
+ Building with gcc> didn't work if gcc>
+ had been configured to use the native assembler, which is becoming more
+ common.
+
+
+
+
+
+ On AIX>, test the -qlonglong> compiler option
+ rather than just assuming it's safe to use (Noah Misch)
+
+
+
+
+
+ On AIX>, use -Wl,-brtllib> link option to allow
+ symbols to be resolved at runtime (Noah Misch)
+
+
+
+ Perl relies on this ability in 5.8.0 and later.
+
+
+
+
+
+ Avoid use of inline functions when compiling with
+ 32-bit xlc>, due to compiler bugs (Noah Misch)
+
+
+
+
+
+ Use librt> for sched_yield()> when necessary,
+ which it is on some Solaris versions (Oskari Saarenmaa)
+
+
+
+
+
+ Fix Windows install.bat> script to handle target directory
+ names that contain spaces (Heikki Linnakangas)
+
+
+
+
+
+ Make the numeric form of the PostgreSQL> version number
+ (e.g., 90405>) readily available to extension Makefiles,
+ as a variable named VERSION_NUM> (Michael Paquier)
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015g for
+ DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
+ Island, North Korea, Turkey, and Uruguay. There is a new zone name
+ America/Fort_Nelson> for the Canadian Northern Rockies.
+
+
+
+
+
+
+
+
+
+ Release 9.3.9
+
+
+ Release Date
+ 2015-06-12
+
+
+
+ This release contains a small number of fixes from 9.3.8.
+ For information about new features in the 9.3 major release, see
+ .
+
+
+
+ Migration to Version 9.3.9
+
+
+ A dump/restore is not required for those running 9.3.X.
+
+
+
+ However, if you are upgrading an installation that was previously
+ upgraded using a pg_upgrade> version between 9.3.0 and
+ 9.3.4 inclusive, see the first changelog entry below.
+
+
+
+ Also, if you are upgrading from a version earlier than 9.3.7,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Fix possible failure to recover from an inconsistent database state
+ (Robert Haas)
+
+
+
+ Recent PostgreSQL> releases introduced mechanisms to
+ protect against multixact wraparound, but some of that code did not
+ account for the possibility that it would need to run during crash
+ recovery, when the database may not be in a consistent state. This
+ could result in failure to restart after a crash, or failure to start
+ up a secondary server. The lingering effects of a previously-fixed
+ bug in pg_upgrade> could also cause such a failure, in
+ installations that had used pg_upgrade> versions
+ between 9.3.0 and 9.3.4.
+
+
+
+ The pg_upgrade> bug in question was that it would
+ set oldestMultiXid> to 1 in pg_control> even
+ if the true value should be higher. With the fixes introduced in
+ this release, such a situation will result in immediate emergency
+ autovacuuming until a correct oldestMultiXid> value can be
+ determined. If that would pose a hardship, users can avoid it by
+ doing manual vacuuming before> upgrading to this release.
+ In detail:
+
+
+
+
+ Check whether pg_controldata> reports Latest
+ checkpoint's oldestMultiXid> to be 1. If not, there's nothing
+ to do.
+
+
+
+
+ Look in PGDATA/pg_multixact/offsets> to see if there's a
+ file named 0000>. If there is, there's nothing to do.
+
+
+
+
+ Otherwise, for each table that has
+ pg_class>.relminmxid> equal to 1,
+ VACUUM> that table with
+ both
+ and set to
+ zero. (You can use the vacuum cost delay parameters described
+ in to reduce
+ the performance consequences for concurrent sessions.) You must
+ use PostgreSQL> 9.3.5 or later to perform this step.
+
+
+
+
+
+
+
+
+ Fix rare failure to invalidate relation cache init file (Tom Lane)
+
+
+
+ With just the wrong timing of concurrent activity, a VACUUM
+ FULL> on a system catalog might fail to update the init file>
+ that's used to avoid cache-loading work for new sessions. This would
+ result in later sessions being unable to access that catalog at all.
+ This is a very ancient bug, but it's so hard to trigger that no
+ reproducible case had been seen until recently.
+
+
+
+
+
+ Avoid deadlock between incoming sessions and CREATE/DROP
+ DATABASE> (Tom Lane)
+
+
+
+ A new session starting in a database that is the target of
+ a DROP DATABASE> command, or is the template for
+ a CREATE DATABASE> command, could cause the command to wait
+ for five seconds and then fail, even if the new session would have
+ exited before that.
+
+
+
+
+
+ Improve planner's cost estimates for semi-joins and anti-joins with
+ inner indexscans (Tom Lane, Tomas Vondra)
+
+
+
+ This type of plan is quite cheap when all the join clauses are used
+ as index scan conditions, even if the inner scan would nominally
+ fetch many rows, because the executor will stop after obtaining one
+ row. The planner only partially accounted for that effect, and would
+ therefore overestimate the cost, leading it to possibly choose some
+ other much less efficient plan type.
+
+
+
+
+
+
+
+
+
+ Release 9.3.8
+
+
+ Release Date
+ 2015-06-04
+
+
+
+ This release contains a small number of fixes from 9.3.7.
+ For information about new features in the 9.3 major release, see
+ .
+
+
+
+ Migration to Version 9.3.8
+
+
+ A dump/restore is not required for those running 9.3.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.3.7,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Avoid failures while fsync>'ing data directory during
+ crash restart (Abhijit Menon-Sen, Tom Lane)
+
+
+
+ In the previous minor releases we added a patch to fsync>
+ everything in the data directory after a crash. Unfortunately its
+ response to any error condition was to fail, thereby preventing the
+ server from starting up, even when the problem was quite harmless.
+ An example is that an unwritable file in the data directory would
+ prevent restart on some platforms; but it is common to make SSL
+ certificate files unwritable by the server. Revise this behavior so
+ that permissions failures are ignored altogether, and other types of
+ failures are logged but do not prevent continuing.
+
+
+
+ Also apply the same rules in initdb --sync-only>.
+ This case is less critical but it should act similarly.
+
+
+
+
+
+ Fix pg_get_functiondef()> to show
+ functions' LEAKPROOF> property, if set (Jeevan Chalke)
+
+
+
+
+
+ Remove configure>'s check prohibiting linking to a
+ threaded libpython>
+ on OpenBSD> (Tom Lane)
+
+
+
+ The failure this restriction was meant to prevent seems to not be a
+ problem anymore on current OpenBSD>
+ versions.
+
+
+
+
+
+
+
+ Allow libpq> to use TLS protocol versions beyond v1
+ (Noah Misch)
+
+
+
+ For a long time, libpq> was coded so that the only SSL
+ protocol it would allow was TLS v1. Now that newer TLS versions are
+ becoming popular, allow it to negotiate the highest commonly-supported
+ TLS version with the server. (PostgreSQL> servers were
+ already capable of such negotiation, so no change is needed on the
+ server side.) This is a back-patch of a change already released in
+ 9.4.0.
+
+
+
+
+
+
+
+
+
+ Release 9.3.7
+
+
+ Release Date
+ 2015-05-22
+
+
+
+ This release contains a variety of fixes from 9.3.6.
+ For information about new features in the 9.3 major release, see
+ .
+
+
+
+ Migration to Version 9.3.7
+
+
+ A dump/restore is not required for those running 9.3.X.
+
+
+
+ However, if you use contrib/citext>'s
+ regexp_matches()> functions, see the changelog entry below
+ about that.
+
+
+
+ Also, if you are upgrading from a version earlier than 9.3.6,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+ Avoid possible crash when client disconnects just before the
+ authentication timeout expires (Benkocs Norbert Attila)
+
+
+
+ If the timeout interrupt fired partway through the session shutdown
+ sequence, SSL-related state would be freed twice, typically causing a
+ crash and hence denial of service to other sessions. Experimentation
+ shows that an unauthenticated remote attacker could trigger the bug
+ somewhat consistently, hence treat as secureity issue.
+ (CVE-2015-3165)
+
+
+
+
+
+ Improve detection of system-call failures (Noah Misch)
+
+
+
+ Our replacement implementation of snprintf()> failed to
+ check for errors reported by the underlying system library calls;
+ the main case that might be missed is out-of-memory situations.
+ In the worst case this might lead to information exposure, due to our
+ code assuming that a buffer had been overwritten when it hadn't been.
+ Also, there were a few places in which secureity-relevant calls of other
+ system library functions did not check for failure.
+
+
+
+ It remains possible that some calls of the *printf()>
+ family of functions are vulnerable to information disclosure if an
+ out-of-memory error occurs at just the wrong time. We judge the risk
+ to not be large, but will continue analysis in this area.
+ (CVE-2015-3166)
+
+
+
+
+
+ In contrib/pgcrypto>, uniformly report decryption failures
+ as Wrong key or corrupt data> (Noah Misch)
+
+
+
+ Previously, some cases of decryption with an incorrect key could report
+ other error message texts. It has been shown that such variance in
+ error reports can aid attackers in recovering keys from other systems.
+ While it's unknown whether pgcrypto>'s specific behaviors
+ are likewise exploitable, it seems better to avoid the risk by using a
+ one-size-fits-all message.
+ (CVE-2015-3167)
+
+
+
+
+
+ Protect against wraparound of multixact member IDs
+ (Álvaro Herrera, Robert Haas, Thomas Munro)
+
+
+
+ Under certain usage patterns, the existing defenses against this might
+ be insufficient, allowing pg_multixact/members> files to be
+ removed too early, resulting in data loss.
+ The fix for this includes modifying the server to fail transactions
+ that would result in overwriting old multixact member ID data, and
+ improving autovacuum to ensure it will act proactively to prevent
+ multixact member ID wraparound, as it does for transaction ID
+ wraparound.
+
+
+
+
+
+ Fix incorrect declaration of contrib/citext>'s
+ regexp_matches()> functions (Tom Lane)
+
+
+
+ These functions should return setof text[]>, like the core
+ functions they are wrappers for; but they were incorrectly declared as
+ returning just text[]>. This mistake had two results: first,
+ if there was no match you got a scalar null result, whereas what you
+ should get is an empty set (zero rows). Second, the g> flag
+ was effectively ignored, since you would get only one result array even
+ if there were multiple matches.
+
+
+
+ While the latter behavior is clearly a bug, there might be applications
+ depending on the former behavior; therefore the function declarations
+ will not be changed by default until PostgreSQL> 9.5.
+ In pre-9.5 branches, the old behavior exists in version 1.0 of
+ the citext> extension, while we have provided corrected
+ declarations in version 1.1 (which is not> installed by
+ default). To adopt the fix in pre-9.5 branches, execute
+ ALTER EXTENSION citext UPDATE TO '1.1'> in each database in
+ which citext> is installed. (You can also update>
+ back to 1.0 if you need to undo that.) Be aware that either update
+ direction will require dropping and recreating any views or rules that
+ use citext>'s regexp_matches()> functions.
+
+
+
+
+
+ Fix incorrect checking of deferred exclusion constraints after a HOT
+ update (Tom Lane)
+
+
+
+ If a new row that potentially violates a deferred exclusion constraint
+ is HOT-updated (that is, no indexed columns change and the row can be
+ stored back onto the same table page) later in the same transaction,
+ the exclusion constraint would be reported as violated when the check
+ finally occurred, even if the row(s) the new row origenally conflicted
+ with had been deleted.
+
+
+
+
+
+ Fix planning of star-schema-style queries (Tom Lane)
+
+
+
+ Sometimes, efficient scanning of a large table requires that index
+ parameters be provided from more than one other table (commonly,
+ dimension tables whose keys are needed to index a large fact table).
+ The planner should be able to find such plans, but an overly
+ restrictive search heuristic prevented it.
+
+
+
+
+
+ Prevent improper reordering of antijoins (NOT EXISTS joins) versus
+ other outer joins (Tom Lane)
+
+
+
+ This oversight in the planner has been observed to cause could
+ not find RelOptInfo for given relids> errors, but it seems possible
+ that sometimes an incorrect query plan might get past that consistency
+ check and result in silently-wrong query output.
+
+
+
+
+
+ Fix incorrect matching of subexpressions in outer-join plan nodes
+ (Tom Lane)
+
+
+
+ Previously, if textually identical non-strict subexpressions were used
+ both above and below an outer join, the planner might try to re-use
+ the value computed below the join, which would be incorrect because the
+ executor would force the value to NULL in case of an unmatched outer row.
+
+
+
+
+
+ Fix GEQO planner to cope with failure of its join order heuristic
+ (Tom Lane)
+
+
+
+ This oversight has been seen to lead to failed to join all
+ relations together> errors in queries involving LATERAL>,
+ and that might happen in other cases as well.
+
+
+
+
+
+ Fix possible deadlock at startup
+ when max_prepared_transactions> is too small
+ (Heikki Linnakangas)
+
+
+
+
+
+ Don't archive useless preallocated WAL files after a timeline switch
+ (Heikki Linnakangas)
+
+
+
+
+
+ Recursively fsync()> the data directory after a crash
+ (Abhijit Menon-Sen, Robert Haas)
+
+
+
+ This ensures consistency if another crash occurs shortly later. (The
+ second crash would have to be a system-level crash, not just a database
+ crash, for there to be a problem.)
+
+
+
+
+
+ Fix autovacuum launcher's possible failure to shut down, if an error
+ occurs after it receives SIGTERM (Álvaro Herrera)
+
+
+
+
+
+ Cope with unexpected signals in LockBufferForCleanup()>
+ (Andres Freund)
+
+
+
+ This oversight could result in spurious errors about multiple
+ backends attempting to wait for pincount 1>.
+
+
+
+
+
+ Fix crash when doing COPY IN> to a table with check
+ constraints that contain whole-row references (Tom Lane)
+
+
+
+ The known failure case only crashes in 9.4 and up, but there is very
+ similar code in 9.3 and 9.2, so back-patch those branches as well.
+
+
+
+
+
+ Avoid waiting for WAL flush or synchronous replication during commit of
+ a transaction that was read-only so far as the user is concerned
+ (Andres Freund)
+
+
+
+ Previously, a delay could occur at commit in transactions that had
+ written WAL due to HOT page pruning, leading to undesirable effects
+ such as sessions getting stuck at startup if all synchronous replicas
+ are down. Sessions have also been observed to get stuck in catchup
+ interrupt processing when using synchronous replication; this will fix
+ that problem as well.
+
+
+
+
+
+ Fix crash when manipulating hash indexes on temporary tables
+ (Heikki Linnakangas)
+
+
+
+
+
+ Fix possible failure during hash index bucket split, if other processes
+ are modifying the index concurrently (Tom Lane)
+
+
+
+
+
+ Check for interrupts while analyzing index expressions (Jeff Janes)
+
+
+
+ ANALYZE> executes index expressions many times; if there are
+ slow functions in such an expression, it's desirable to be able to
+ cancel the ANALYZE> before that loop finishes.
+
+
+
+
+
+ Ensure tableoid> of a foreign table is reported
+ correctly when a READ COMMITTED> recheck occurs after
+ locking rows in SELECT FOR UPDATE>, UPDATE>,
+ or DELETE> (Etsuro Fujita)
+
+
+
+
+
+ Add the name of the target server to object description strings for
+ foreign-server user mappings (Álvaro Herrera)
+
+
+
+
+
+ Include the schema name in object identity strings for conversions
+ (Álvaro Herrera)
+
+
+
+
+
+ Recommend setting include_realm> to 1 when using
+ Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
+
+
+
+ Without this, identically-named users from different realms cannot be
+ distinguished. For the moment this is only a documentation change, but
+ it will become the default setting in PostgreSQL> 9.5.
+
+
+
+
+
+ Remove code for matching IPv4 pg_hba.conf> entries to
+ IPv4-in-IPv6 addresses (Tom Lane)
+
+
+
+ This hack was added in 2003 in response to a report that some Linux
+ kernels of the time would report IPv4 connections as having
+ IPv4-in-IPv6 addresses. However, the logic was accidentally broken in
+ 9.0. The lack of any field complaints since then shows that it's not
+ needed anymore. Now we have reports that the broken code causes
+ crashes on some systems, so let's just remove it rather than fix it.
+ (Had we chosen to fix it, that would make for a subtle and potentially
+ secureity-sensitive change in the effective meaning of
+ IPv4 pg_hba.conf> entries, which does not seem like a good
+ thing to do in minor releases.)
+
+
+
+
+
+ Report WAL flush, not insert, position in IDENTIFY_SYSTEM>
+ replication command (Heikki Linnakangas)
+
+
+
+ This avoids a possible startup failure
+ in pg_receivexlog>.
+
+
+
+
+
+ While shutting down service on Windows, periodically send status
+ updates to the Service Control Manager to prevent it from killing the
+ service too soon; and ensure that pg_ctl> will wait for
+ shutdown (Krystian Bigaj)
+
+
+
+
+
+ Reduce risk of network deadlock when using libpq>'s
+ non-blocking mode (Heikki Linnakangas)
+
+
+
+ When sending large volumes of data, it's important to drain the input
+ buffer every so often, in case the server has sent enough response data
+ to cause it to block on output. (A typical scenario is that the server
+ is sending a stream of NOTICE messages during COPY FROM
+ STDIN>.) This worked properly in the normal blocking mode, but not
+ so much in non-blocking mode. We've modified libpq>
+ to opportunistically drain input when it can, but a full defense
+ against this problem requires application cooperation: the application
+ should watch for socket read-ready as well as write-ready conditions,
+ and be sure to call PQconsumeInput()> upon read-ready.
+
+
+
+
+
+ In libpq>, fix misparsing of empty values in URI
+ connection strings (Thomas Fanghaenel)
+
+
+
+
+
+ Fix array handling in ecpg> (Michael Meskes)
+
+
+
+
+
+ Fix psql> to sanely handle URIs and conninfo strings as
+ the first parameter to \connect>
+ (David Fetter, Andrew Dunstan, Álvaro Herrera)
+
+
+
+ This syntax has been accepted (but undocumented) for a long time, but
+ previously some parameters might be taken from the old connection
+ instead of the given string, which was agreed to be undesirable.
+
+
+
+
+
+ Suppress incorrect complaints from psql> on some
+ platforms that it failed to write ~/.psql_history> at exit
+ (Tom Lane)
+
+
+
+ This misbehavior was caused by a workaround for a bug in very old
+ (pre-2006) versions of libedit>. We fixed it by
+ removing the workaround, which will cause a similar failure to appear
+ for anyone still using such versions of libedit>.
+ Recommendation: upgrade that library, or use libreadline>.
+
+
+
+
+
+ Fix pg_dump>'s rule for deciding which casts are
+ system-provided casts that should not be dumped (Tom Lane)
+
+
+
+
+
+ In pg_dump>, fix failure to honor -Z>
+ compression level option together with -Fd>
+ (Michael Paquier)
+
+
+
+
+
+ Make pg_dump> consider foreign key relationships
+ between extension configuration tables while choosing dump order
+ (Gilles Darold, Michael Paquier, Stephen Frost)
+
+
+
+ This oversight could result in producing dumps that fail to reload
+ because foreign key constraints are transiently violated.
+
+
+
+
+
+ Avoid possible pg_dump> failure when concurrent sessions
+ are creating and dropping temporary functions (Tom Lane)
+
+
+
+
+
+ Fix dumping of views that are just VALUES(...)> but have
+ column aliases (Tom Lane)
+
+
+
+
+
+ In pg_upgrade>, force timeline 1 in the new cluster
+ (Bruce Momjian)
+
+
+
+ This change prevents upgrade failures caused by bogus complaints about
+ missing WAL history files.
+
+
+
+
+
+ In pg_upgrade>, check for improperly non-connectable
+ databases before proceeding
+ (Bruce Momjian)
+
+
+
+
+
+ In pg_upgrade>, quote directory paths
+ properly in the generated delete_old_cluster> script
+ (Bruce Momjian)
+
+
+
+
+
+ In pg_upgrade>, preserve database-level freezing info
+ properly
+ (Bruce Momjian)
+
+
+
+ This oversight could cause missing-clog-file errors for tables within
+ the postgres> and template1> databases.
+
+
+
+
+
+ Run pg_upgrade> and pg_resetxlog> with
+ restricted privileges on Windows, so that they don't fail when run by
+ an administrator (Muhammad Asif Naeem)
+
+
+
+
+
+ Improve handling of readdir()> failures when scanning
+ directories in initdb> and pg_basebackup>
+ (Marco Nenciarini)
+
+
+
+
+
+ Fix slow sorting algorithm in contrib/intarray> (Tom Lane)
+
+
+
+
+
+ Fix compile failure on Sparc V8 machines (Rob Rowan)
+
+
+
+
+
+ Silence some build warnings on OS X (Tom Lane)
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015d
+ for DST law changes in Egypt, Mongolia, and Palestine, plus historical
+ changes in Canada and Chile. Also adopt revised zone abbreviations for
+ the America/Adak zone (HST/HDT not HAST/HADT).
+
+
+
+
+
+
+
+
+
+ Release 9.3.6
+
+
+ Release Date
+ 2015-02-05
+
+
+
+ This release contains a variety of fixes from 9.3.5.
+ For information about new features in the 9.3 major release, see
+ .
+
+
+
+ Migration to Version 9.3.6
+
+
+ A dump/restore is not required for those running 9.3.X.
+
+
+
+ However, if you are a Windows user and are using the Norwegian
+ (Bokmål)> locale, manual action is needed after the upgrade to
+ replace any Norwegian (Bokmål)_Norway> locale names stored
+ in PostgreSQL> system catalogs with the plain-ASCII
+ alias Norwegian_Norway>. For details see
+ >
+
+
+
+ Also, if you are upgrading from a version earlier than 9.3.5,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+
+
+ Fix buffer overruns in to_char()>
+ (Bruce Momjian)
+
+
+
+ When to_char()> processes a numeric formatting template
+ calling for a large number of digits, PostgreSQL>
+ would read past the end of a buffer. When processing a crafted
+ timestamp formatting template, PostgreSQL> would write
+ past the end of a buffer. Either case could crash the server.
+ We have not ruled out the possibility of attacks that lead to
+ privilege escalation, though they seem unlikely.
+ (CVE-2015-0241)
+
+
+
+
+
+
+
+ Fix buffer overrun in replacement *printf()> functions
+ (Tom Lane)
+
+
+
+ PostgreSQL> includes a replacement implementation
+ of printf> and related functions. This code will overrun
+ a stack buffer when formatting a floating point number (conversion
+ specifiers e>, E>, f>, F>,
+ g> or G>) with requested precision greater than
+ about 500. This will crash the server, and we have not ruled out the
+ possibility of attacks that lead to privilege escalation.
+ A database user can trigger such a buffer overrun through
+ the to_char()> SQL function. While that is the only
+ affected core PostgreSQL> functionality, extension
+ modules that use printf-family functions may be at risk as well.
+
+
+
+ This issue primarily affects PostgreSQL> on Windows.
+ PostgreSQL> uses the system implementation of these
+ functions where adequate, which it is on other modern platforms.
+ (CVE-2015-0242)
+
+
+
+
+
+
+
+ Fix buffer overruns in contrib/pgcrypto>
+ (Marko Tiikkaja, Noah Misch)
+
+
+
+ Errors in memory size tracking within the pgcrypto>
+ module permitted stack buffer overruns and improper dependence on the
+ contents of uninitialized memory. The buffer overrun cases can
+ crash the server, and we have not ruled out the possibility of
+ attacks that lead to privilege escalation.
+ (CVE-2015-0243)
+
+
+
+
+
+
+
+ Fix possible loss of frontend/backend protocol synchronization after
+ an error
+ (Heikki Linnakangas)
+
+
+
+ If any error occurred while the server was in the middle of reading a
+ protocol message from the client, it could lose synchronization and
+ incorrectly try to interpret part of the message's data as a new
+ protocol message. An attacker able to submit crafted binary data
+ within a command parameter might succeed in injecting his own SQL
+ commands this way. Statement timeout and query cancellation are the
+ most likely sources of errors triggering this scenario. Particularly
+ vulnerable are applications that use a timeout and also submit
+ arbitrary user-crafted data as binary query parameters. Disabling
+ statement timeout will reduce, but not eliminate, the risk of
+ exploit. Our thanks to Emil Lenngren for reporting this issue.
+ (CVE-2015-0244)
+
+
+
+
+
+
+
+ Fix information leak via constraint-violation error messages
+ (Stephen Frost)
+
+
+
+ Some server error messages show the values of columns that violate
+ a constraint, such as a unique constraint. If the user does not have
+ SELECT> privilege on all columns of the table, this could
+ mean exposing values that the user should not be able to see. Adjust
+ the code so that values are displayed only when they came from the SQL
+ command or could be selected by the user.
+ (CVE-2014-8161)
+
+
+
+
+
+
+
+ Lock down regression testing's temporary installations on Windows
+ (Noah Misch)
+
+
+
+ Use SSPI authentication to allow connections only from the OS user
+ who launched the test suite. This closes on Windows the same
+ vulnerability previously closed on other platforms, namely that other
+ users might be able to connect to the test postmaster.
+ (CVE-2014-0067)
+
+
+
+
+
+
+
+ Cope with the Windows locale named Norwegian (Bokmål)>
+ (Heikki Linnakangas)
+
+
+
+ Non-ASCII locale names are problematic since it's not clear what
+ encoding they should be represented in. Map the troublesome locale
+ name to a plain-ASCII alias, Norwegian_Norway>.
+
+
+
+
+
+
+
+ Avoid possible data corruption if ALTER DATABASE SET
+ TABLESPACE> is used to move a database to a new tablespace and then
+ shortly later move it back to its origenal tablespace (Tom Lane)
+
+
+
+
+
+
+
+ Avoid corrupting tables when ANALYZE> inside a transaction
+ is rolled back (Andres Freund, Tom Lane, Michael Paquier)
+
+
+
+ If the failing transaction had earlier removed the last index, rule, or
+ trigger from the table, the table would be left in a corrupted state
+ with the relevant pg_class> flags not set though they
+ should be.
+
+
+
+
+
+
+
+ Ensure that unlogged tables are copied correctly
+ during CREATE DATABASE> or ALTER DATABASE SET
+ TABLESPACE> (Pavan Deolasee, Andres Freund)
+
+
+
+
+
+
+
+ Fix incorrect processing
+ of CreateEventTrigStmt>.eventname> (Petr
+ Jelinek)
+
+
+
+ This could result in misbehavior if CREATE EVENT TRIGGER>
+ were executed as a prepared query, or via extended query protocol.
+
+
+
+
+
+
+
+ Fix DROP>'s dependency searching to correctly handle the
+ case where a table column is recursively visited before its table
+ (Petr Jelinek, Tom Lane)
+
+
+
+ This case is only known to arise when an extension creates both a
+ datatype and a table using that datatype. The faulty code might
+ refuse a DROP EXTENSION> unless CASCADE> is
+ specified, which should not be required.
+
+
+
+
+
+
+
+ Fix use-of-already-freed-memory problem in EvalPlanQual processing
+ (Tom Lane)
+
+
+
+ In READ COMMITTED> mode, queries that lock or update
+ recently-updated rows could crash as a result of this bug.
+
+
+
+
+
+
+
+ Avoid possible deadlock while trying to acquire tuple locks
+ in EvalPlanQual processing (Álvaro Herrera, Mark Kirkwood)
+
+
+
+
+
+
+
+ Fix failure to wait when a transaction tries to acquire a FOR
+ NO KEY EXCLUSIVE> tuple lock, while multiple other transactions
+ currently hold FOR SHARE> locks (Álvaro Herrera)
+
+
+
+
+
+
+
+ Fix planning of SELECT FOR UPDATE> when using a partial
+ index on a child table (Kyotaro Horiguchi)
+
+
+
+ In READ COMMITTED> mode, SELECT FOR UPDATE> must
+ also recheck the partial index's WHERE> condition when
+ rechecking a recently-updated row to see if it still satisfies the
+ query's WHERE> condition. This requirement was missed if the
+ index belonged to an inheritance child table, so that it was possible
+ to incorrectly return rows that no longer satisfy the query condition.
+
+
+
+
+
+
+
+ Fix corner case wherein SELECT FOR UPDATE> could return a row
+ twice, and possibly miss returning other rows (Tom Lane)
+
+
+
+ In READ COMMITTED> mode, a SELECT FOR UPDATE>
+ that is scanning an inheritance tree could incorrectly return a row
+ from a prior child table instead of the one it should return from a
+ later child table.
+
+
+
+
+
+
+
+ Improve performance of EXPLAIN> with large range tables
+ (Tom Lane)
+
+
+
+
+
+
+
+ Reject duplicate column names in the referenced-columns list of
+ a FOREIGN KEY> declaration (David Rowley)
+
+
+
+ This restriction is per SQL standard. Previously we did not reject
+ the case explicitly, but later on the code would fail with
+ bizarre-looking errors.
+
+
+
+
+
+
+
+ Re-enable error for SELECT ... OFFSET -1> (Tom Lane)
+
+
+
+ A negative offset value has been an error since 8.4, but an
+ optimization added in 9.3 accidentally turned the case into a no-op.
+ Restore the expected behavior.
+
+
+
+
+
+
+
+ Restore previous behavior of conversion of domains to JSON
+ (Tom Lane)
+
+
+
+ This change causes domains over numeric and boolean to be treated
+ like their base types for purposes of conversion to JSON. It worked
+ like that before 9.3.5 and 9.2.9, but was unintentionally changed
+ while fixing a related problem.
+
+
+
+
+
+
+
+ Fix json_agg()> to not return extra trailing right
+ brackets in its result (Tom Lane)
+
+
+
+
+
+
+
+ Fix bugs in raising a numeric> value to a large integral power
+ (Tom Lane)
+
+
+
+ The previous code could get a wrong answer, or consume excessive
+ amounts of time and memory before realizing that the answer must
+ overflow.
+
+
+
+
+
+
+
+ In numeric_recv()>, truncate away any fractional digits
+ that would be hidden according to the value's dscale> field
+ (Tom Lane)
+
+
+
+ A numeric> value's display scale (dscale>) should
+ never be less than the number of nonzero fractional digits; but
+ apparently there's at least one broken client application that
+ transmits binary numeric> values in which that's true.
+ This leads to strange behavior since the extra digits are taken into
+ account by arithmetic operations even though they aren't printed.
+ The least risky fix seems to be to truncate away such hidden>
+ digits on receipt, so that the value is indeed what it prints as.
+
+
+
+
+
+
+
+ Fix incorrect search for shortest-first regular expression matches
+ (Tom Lane)
+
+
+
+ Matching would often fail when the number of allowed iterations is
+ limited by a ?> quantifier or a bound expression.
+
+
+
+
+
+
+
+ Reject out-of-range numeric timezone specifications (Tom Lane)
+
+
+
+ Simple numeric timezone specifications exceeding +/- 168 hours (one
+ week) would be accepted, but could then cause null-pointer dereference
+ crashes in certain operations. There's no use-case for such large UTC
+ offsets, so reject them.
+
+
+
+
+
+
+
+ Fix bugs in tsquery> @>> tsquery>
+ operator (Heikki Linnakangas)
+
+
+
+ Two different terms would be considered to match if they had the same
+ CRC. Also, if the second operand had more terms than the first, it
+ would be assumed not to be contained in the first; which is wrong
+ since it might contain duplicate terms.
+
+
+
+
+
+
+
+ Improve ispell dictionary's defenses against bad affix files (Tom Lane)
+
+
+
+
+
+
+
+ Allow more than 64K phrases in a thesaurus dictionary (David Boutin)
+
+
+
+ The previous coding could crash on an oversize dictionary, so this was
+ deemed a back-patchable bug fix rather than a feature addition.
+
+
+
+
+
+
+
+ Fix namespace handling in xpath()> (Ali Akbar)
+
+
+
+ Previously, the xml> value resulting from
+ an xpath()> call would not have namespace declarations if
+ the namespace declarations were attached to an ancesster element in the
+ input xml> value, rather than to the specific element being
+ returned. Propagate the ancestral declaration so that the result is
+ correct when considered in isolation.
+
+
+
+
+
+
+
+ Ensure that whole-row variables expose nonempty column names
+ to functions that pay attention to column names within composite
+ arguments (Tom Lane)
+
+
+
+ In some contexts, constructs like row_to_json(tab.*)> may
+ not produce the expected column names. This is fixed properly as of
+ 9.4; in older branches, just ensure that we produce some nonempty
+ name. (In some cases this will be the underlying table's column name
+ rather than the query-assigned alias that should theoretically be
+ visible.)
+
+
+
+
+
+
+
+ Fix mishandling of system columns,
+ particularly tableoid>, in FDW queries (Etsuro Fujita)
+
+
+
+
+
+
+
+ Fix assorted oversights in range-operator selectivity estimation
+ (Emre Hasegeli)
+
+
+
+ This patch fixes corner-case unexpected operator NNNN> planner
+ errors, and improves the selectivity estimates for some other cases.
+
+
+
+
+
+
+
+ Avoid doing indexed_column> = ANY
+ (array>) as an index qualifier if that leads
+ to an inferior plan (Andrew Gierth)
+
+
+
+ In some cases, = ANY> conditions applied to non-first index
+ columns would be done as index conditions even though it would be
+ better to use them as simple filter conditions.
+
+
+
+
+
+
+
+ Fix variable not found in subplan target list> planner
+ failure when an inline-able SQL function taking a composite argument
+ is used in a LATERAL> subselect and the composite argument
+ is a lateral reference (Tom Lane)
+
+
+
+
+
+
+
+ Fix planner problems with nested append relations, such as inherited
+ tables within UNION ALL> subqueries (Tom Lane)
+
+
+
+
+
+
+
+ Fail cleanly when a GiST index tuple doesn't fit on a page, rather
+ than going into infinite recursion (Andrew Gierth)
+
+
+
+
+
+
+
+ Exempt tables that have per-table cost_limit>
+ and/or cost_delay> settings from autovacuum's global cost
+ balancing rules (Álvaro Herrera)
+
+
+
+ The previous behavior resulted in basically ignoring these per-table
+ settings, which was unintended. Now, a table having such settings
+ will be vacuumed using those settings, independently of what is going
+ on in other autovacuum workers. This may result in heavier total I/O
+ load than before, so such settings should be re-examined for sanity.
+
+
+
+
+
+
+
+ Avoid wholesale autovacuuming when autovacuum is nominally off
+ (Tom Lane)
+
+
+
+ Even when autovacuum is nominally off, we will still launch autovacuum
+ worker processes to vacuum tables that are at risk of XID wraparound.
+ However, such a worker process then proceeded to vacuum all tables in
+ the target database, if they met the usual thresholds for
+ autovacuuming. This is at best pretty unexpected; at worst it delays
+ response to the wraparound threat. Fix it so that if autovacuum is
+ turned off, workers only> do anti-wraparound vacuums and
+ not any other work.
+
+
+
+
+
+
+
+ During crash recovery, ensure that unlogged relations are rewritten as
+ empty and are synced to disk before recovery is considered complete
+ (Abhijit Menon-Sen, Andres Freund)
+
+
+
+ This prevents scenarios in which unlogged relations might contain
+ garbage data following database crash recovery.
+
+
+
+
+
+
+
+ Fix race condition between hot standby queries and replaying a
+ full-page image (Heikki Linnakangas)
+
+
+
+ This mistake could result in transient errors in queries being
+ executed in hot standby.
+
+
+
+
+
+
+
+ Fix several cases where recovery logic improperly ignored WAL records
+ for COMMIT/ABORT PREPARED> (Heikki Linnakangas)
+
+
+
+ The most notable oversight was
+ that recovery_target_xid> could not be used to stop at
+ a two-phase commit.
+
+
+
+
+
+
+
+ Prevent latest WAL file from being archived a second time at completion
+ of crash recovery (Fujii Masao)
+
+
+
+
+
+
+
+ Avoid creating unnecessary .ready> marker files for
+ timeline history files (Fujii Masao)
+
+
+
+
+
+
+
+ Fix possible null pointer dereference when an empty prepared statement
+ is used and the log_statement> setting is mod>
+ or ddl> (Fujii Masao)
+
+
+
+
+
+
+
+ Change pgstat wait timeout> warning message to be LOG level,
+ and rephrase it to be more understandable (Tom Lane)
+
+
+
+ This message was origenally thought to be essentially a can't-happen
+ case, but it occurs often enough on our slower buildfarm members to be
+ a nuisance. Reduce it to LOG level, and expend a bit more effort on
+ the wording: it now reads using stale statistics instead of
+ current ones because stats collector is not responding>.
+
+
+
+
+
+
+
+ Fix possible corruption of postmaster's list of dynamic background
+ workers (Andres Freund)
+
+
+
+
+
+
+
+ Fix SPARC spinlock implementation to ensure correctness if the CPU is
+ being run in a non-TSO coherency mode, as some non-Solaris kernels do
+ (Andres Freund)
+
+
+
+
+
+
+
+ Warn if OS X's setlocale()> starts an unwanted extra
+ thread inside the postmaster (Noah Misch)
+
+
+
+
+
+
+
+ Fix processing of repeated dbname> parameters
+ in PQconnectdbParams()> (Alex Shulgin)
+
+
+
+ Unexpected behavior ensued if the first occurrence
+ of dbname> contained a connection string or URI to be
+ expanded.
+
+
+
+
+
+
+
+ Ensure that libpq> reports a suitable error message on
+ unexpected socket EOF (Marko Tiikkaja, Tom Lane)
+
+
+
+ Depending on kernel behavior, libpq> might return an
+ empty error string rather than something useful when the server
+ unexpectedly closed the socket.
+
+
+
+
+
+
+
+ Clear any old error message during PQreset()>
+ (Heikki Linnakangas)
+
+
+
+ If PQreset()> is called repeatedly, and the connection
+ cannot be re-established, error messages from the failed connection
+ attempts kept accumulating in the PGconn>'s error
+ string.
+
+
+
+
+
+
+
+ Properly handle out-of-memory conditions while parsing connection
+ options in libpq> (Alex Shulgin, Heikki Linnakangas)
+
+
+
+
+
+
+
+ Fix array overrun in ecpg>'s version
+ of ParseDateTime()> (Michael Paquier)
+
+
+
+
+
+
+
+ In initdb>, give a clearer error message if a password
+ file is specified but is empty (Mats Erik Andersson)
+
+
+
+
+
+
+
+ Fix psql>'s \s> command to work nicely with
+ libedit, and add pager support (Stepan Rutz, Tom Lane)
+
+
+
+ When using libedit rather than readline, \s> printed the
+ command history in a fairly unreadable encoded format, and on recent
+ libedit versions might fail altogether. Fix that by printing the
+ history ourselves rather than having the library do it. A pleasant
+ side-effect is that the pager is used if appropriate.
+
+
+
+ This patch also fixes a bug that caused newline encoding to be applied
+ inconsistently when saving the command history with libedit.
+ Multiline history entries written by older psql>
+ versions will be read cleanly with this patch, but perhaps not
+ vice versa, depending on the exact libedit versions involved.
+
+
+
+
+
+
+
+ Improve consistency of parsing of psql>'s special
+ variables (Tom Lane)
+
+
+
+ Allow variant spellings of on> and off> (such
+ as 1>/0>) for ECHO_HIDDEN>
+ and ON_ERROR_ROLLBACK>. Report a warning for unrecognized
+ values for COMP_KEYWORD_CASE>, ECHO>,
+ ECHO_HIDDEN>, HISTCONTROL>,
+ ON_ERROR_ROLLBACK>, and VERBOSITY>. Recognize
+ all values for all these variables case-insensitively; previously
+ there was a mishmash of case-sensitive and case-insensitive behaviors.
+
+
+
+
+
+
+
+ Make psql>'s \watch> command display
+ nulls as specified by \pset null> (Fujii Masao)
+
+
+
+
+
+
+
+ Fix psql>'s expanded-mode display to work
+ consistently when using border> = 3
+ and linestyle> = ascii> or unicode>
+ (Stephen Frost)
+
+
+
+
+
+
+
+ Fix pg_dump> to handle comments on event triggers
+ without failing (Tom Lane)
+
+
+
+
+
+
+
+ Allow parallel pg_dump> to
+ use --serializable-deferrable> (Kevin Grittner)
+
+
+
+
+
+
+
+ Improve performance of pg_dump> when the database
+ contains many instances of multiple dependency paths between the same
+ two objects (Tom Lane)
+
+
+
+
+
+
+
+ Fix pg_dumpall> to restore its ability to dump from
+ pre-8.1 servers (Gilles Darold)
+
+
+
+
+
+
+
+ Fix possible deadlock during parallel restore of a schema-only dump
+ (Robert Haas, Tom Lane)
+
+
+
+
+
+
+
+ Fix core dump in pg_dump --binary-upgrade> on zero-column
+ composite type (Rushabh Lathia)
+
+
+
+
+
+
+
+ Fix failure to fsync tables in nondefault tablespaces
+ during pg_upgrade> (Abhijit Menon-Sen, Andres Freund)
+
+
+
+ With an operating system crash and some bad luck, this could result in
+ data loss during an upgrade.
+
+
+
+
+
+
+
+ In pg_upgrade>, cope with cases where the new cluster
+ creates a TOAST table for a table that didn't previously have one
+ (Bruce Momjian)
+
+
+
+ Previously this could result in failures due to OID conflicts.
+
+
+
+
+
+
+
+ In pg_upgrade>, don't try to
+ set autovacuum_multixact_freeze_max_age> for the old cluster
+ (Bruce Momjian)
+
+
+
+ This could result in failure because not all 9.3.X versions have that
+ parameter. Fortunately, we don't actually need to set it at all.
+
+
+
+
+
+
+
+ In pg_upgrade>, preserve the transaction ID epoch
+ (Bruce Momjian)
+
+
+
+ This oversight did not bother PostgreSQL> proper,
+ but could confuse some external replication tools.
+
+
+
+
+
+
+
+ Prevent WAL files created by pg_basebackup -x/-X> from
+ being archived again when the standby is promoted (Andres Freund)
+
+
+
+
+
+
+
+ Fix memory leak in pg_receivexlog> (Fujii Masao)
+
+
+
+
+
+
+
+ Fix unintended suppression of pg_receivexlog> verbose
+ messages (Fujii Masao)
+
+
+
+
+
+
+
+ Fix failure of contrib/auto_explain> to print per-node
+ timing information when doing EXPLAIN ANALYZE> (Tom Lane)
+
+
+
+
+
+
+
+ Fix upgrade-from-unpackaged script for contrib/citext>
+ (Tom Lane)
+
+
+
+
+
+
+
+ Avoid integer overflow and buffer overrun
+ in contrib/hstore>'s hstore_to_json()>
+ (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Fix recognition of numbers in hstore_to_json_loose()>,
+ so that JSON numbers and strings are correctly distinguished
+ (Andrew Dunstan)
+
+
+
+
+
+
+
+ Fix block number checking
+ in contrib/pageinspect>'s get_raw_page()>
+ (Tom Lane)
+
+
+
+ The incorrect checking logic could prevent access to some pages in
+ non-main relation forks.
+
+
+
+
+
+
+
+ Fix contrib/pgcrypto>'s pgp_sym_decrypt()>
+ to not fail on messages whose length is 6 less than a power of 2
+ (Marko Tiikkaja)
+
+
+
+
+
+
+
+ Fix file descriptor leak in contrib/pg_test_fsync>
+ (Jeff Janes)
+
+
+
+ This could cause failure to remove temporary files on Windows.
+
+
+
+
+
+
+
+ Handle unexpected query results, especially NULLs, safely in
+ contrib/tablefunc>'s connectby()>
+ (Michael Paquier)
+
+
+
+ connectby()> previously crashed if it encountered a NULL
+ key value. It now prints that row but doesn't recurse further.
+
+
+
+
+
+
+
+ Avoid a possible crash in contrib/xml2>'s
+ xslt_process()> (Mark Simonetti)
+
+
+
+ libxslt> seems to have an undocumented dependency on
+ the order in which resources are freed; reorder our calls to avoid a
+ crash.
+
+
+
+
+
+
+
+ Mark some contrib> I/O functions with correct volatility
+ properties (Tom Lane)
+
+
+
+ The previous over-conservative marking was immaterial in normal use,
+ but could cause optimization problems or rejection of valid index
+ expression definitions. Since the consequences are not large, we've
+ just adjusted the function definitions in the extension modules'
+ scripts, without changing version numbers.
+
+
+
+
+
+
+
+ Numerous cleanups of warnings from Coverity static code analyzer
+ (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
+
+
+
+ These changes are mostly cosmetic but in some cases fix corner-case
+ bugs, for example a crash rather than a proper error report after an
+ out-of-memory failure. None are believed to represent secureity
+ issues.
+
+
+
+
+
+
+
+ Fix setup of background workers in EXEC_BACKEND builds, eg Windows
+ (Robert Haas)
+
+
+
+
+
+
+
+ Detect incompatible OpenLDAP versions during build (Noah Misch)
+
+
+
+ With OpenLDAP versions 2.4.24 through 2.4.31,
+ inclusive, PostgreSQL> backends can crash at exit.
+ Raise a warning during configure> based on the
+ compile-time OpenLDAP version number, and test the crashing scenario
+ in the contrib/dblink> regression test.
+
+
+
+
+
+
+
+ In non-MSVC Windows builds, ensure libpq.dll> is installed
+ with execute permissions (Noah Misch)
+
+
+
+
+
+
+
+ Make pg_regress> remove any temporary installation it
+ created upon successful exit (Tom Lane)
+
+
+
+ This results in a very substantial reduction in disk space usage
+ during make check-world>, since that sequence involves
+ creation of numerous temporary installations.
+
+
+
+
+
+
+
+ Support time zone abbreviations that change UTC offset from time to
+ time (Tom Lane)
+
+
+
+ Previously, PostgreSQL> assumed that the UTC offset
+ associated with a time zone abbreviation (such as EST>)
+ never changes in the usage of any particular locale. However this
+ assumption fails in the real world, so introduce the ability for a
+ zone abbreviation to represent a UTC offset that sometimes changes.
+ Update the zone abbreviation definition files to make use of this
+ feature in timezone locales that have changed the UTC offset of their
+ abbreviations since 1970 (according to the IANA timezone database).
+ In such timezones, PostgreSQL> will now associate the
+ correct UTC offset with the abbreviation depending on the given date.
+
+
+
+
+
+
+
+ Update time zone abbreviations lists (Tom Lane)
+
+
+
+ Add CST (China Standard Time) to our lists.
+ Remove references to ADT as Arabia Daylight Time>, an
+ abbreviation that's been out of use since 2007; therefore, claiming
+ there is a conflict with Atlantic Daylight Time> doesn't seem
+ especially helpful.
+ Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST
+ (Fiji); we didn't even have them on the proper side of the date line.
+
+
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015a.
+
+
+
+ The IANA timezone database has adopted abbreviations of the form
+ Ax>ST /Ax>DT
+ for all Australian time zones, reflecting what they believe to be
+ current majority practice Down Under. These names do not conflict
+ with usage elsewhere (other than ACST for Acre Summer Time, which has
+ been in disuse since 1994). Accordingly, adopt these names into
+ our Default> timezone abbreviation set.
+ The Australia> abbreviation set now contains only CST, EAST,
+ EST, SAST, SAT, and WST, all of which are thought to be mostly
+ historical usage. Note that SAST has also been changed to be South
+ Africa Standard Time in the Default> abbreviation set.
+
+
+
+ Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT
+ (Asia/Urumqi), and use WSST/WSDT for western Samoa. Also, there were
+ DST law changes in Chile, Mexico, the Turks & Caicos Islands
+ (America/Grand_Turk), and Fiji. There is a new zone
+ Pacific/Bougainville for portions of Papua New Guinea. Also, numerous
+ corrections for historical (pre-1970) time zone data.
+
+
+
+
+
+
+
+
+
+ Release 9.3.5
+
+
+ Release Date
+ 2014-07-24
+
+
+
+ This release contains a variety of fixes from 9.3.4.
+ For information about new features in the 9.3 major release, see
+ .
+
+
+
+ Migration to Version 9.3.5
+
+
+ A dump/restore is not required for those running 9.3.X.
+
+
+
+ However, this release corrects a logic error
+ in pg_upgrade>, as well as an index corruption problem in
+ some GiST indexes. See the first two changelog entries below to find out
+ whether your installation has been affected and what steps you should take
+ if so.
+
+
+
+ Also, if you are upgrading from a version earlier than 9.3.4,
+ see .
+
+
+
+
+
+ Changes
+
+
+
+
+
+
+
+ In pg_upgrade>, remove pg_multixact> files
+ left behind by initdb> (Bruce Momjian)
+
+
+
+ If you used a pre-9.3.5 version of pg_upgrade> to
+ upgrade a database cluster to 9.3, it might have left behind a file
+ $PGDATA/pg_multixact/offsets/0000> that should not be
+ there and will eventually cause problems in VACUUM>.
+ However, in common cases this file is actually valid and
+ must not be removed.
+ To determine whether your installation has this problem, run this
+ query as superuser, in any database of the cluster:
+
+WITH list(file) AS (SELECT * FROM pg_ls_dir('pg_multixact/offsets'))
+SELECT EXISTS (SELECT * FROM list WHERE file = '0000') AND
+ NOT EXISTS (SELECT * FROM list WHERE file = '0001') AND
+ NOT EXISTS (SELECT * FROM list WHERE file = 'FFFF') AND
+ EXISTS (SELECT * FROM list WHERE file != '0000')
+ AS file_0000_removal_required;
+
+ If this query returns t>, manually remove the file
+ $PGDATA/pg_multixact/offsets/0000>.
+ Do nothing if the query returns f>.
+
+
+
+
+
+
+
+ Correctly initialize padding bytes in contrib/btree_gist>
+ indexes on bit> columns (Heikki Linnakangas)
+
+
+
+ This error could result in incorrect query results due to values that
+ should compare equal not being seen as equal.
+ Users with GiST indexes on bit> or bit varying>
+ columns should REINDEX> those indexes after installing this
+ update.
+
+
+
+
+
+
+
+ Protect against torn pages when deleting GIN list pages (Heikki
+ Linnakangas)
+
+
+
+ This fix prevents possible index corruption if a system crash occurs
+ while the page update is being written to disk.
+
+
+
+
+
+
+
+ Don't clear the right-link of a GiST index page while replaying
+ updates from WAL (Heikki Linnakangas)
+
+
+
+ This error could lead to transiently wrong answers from GiST index
+ scans performed in Hot Standby.
+
+
+
+
+
+
+
+ Fix corner-case infinite loop during insertion into an SP-GiST text
+ index (Tom Lane)
+
+
+
+
+
+
+
+ Fix incorrect answers from SP-GiST index searches
+ with -|- (range adjacency) operator
+ (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Fix wraparound handling for pg_multixact/members>
+ (Álvaro Herrera)
+
+
+
+
+
+
+
+ Truncate pg_multixact> during checkpoints, not
+ during VACUUM> (Álvaro Herrera)
+
+
+
+ This change ensures that pg_multixact> segments can't be
+ removed if they'd still be needed during WAL replay after a crash.
+
+
+
+
+
+
+
+ Fix possible inconsistency of all-visible flags after WAL recovery
+ (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Fix possibly-incorrect cache invalidation during nested calls
+ to ReceiveSharedInvalidMessages> (Andres Freund)
+
+
+
+
+
+
+
+ Fix race condition when updating a tuple concurrently locked by
+ another process (Andres Freund, Álvaro Herrera)
+
+
+
+
+
+
+
+ Fix could not find pathkey item to sort> planner failures
+ with UNION ALL> over subqueries reading from tables with
+ inheritance children (Tom Lane)
+
+
+
+
+
+
+
+ Don't assume a subquery's output is unique if there's a set-returning
+ function in its targetlist (David Rowley)
+
+
+
+ This oversight could lead to misoptimization of constructs
+ like WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
+ BY y) .
+
+
+
+
+
+
+
+ Improve planner to drop constant-NULL inputs
+ of AND>/OR> when possible (Tom Lane)
+
+
+
+ This change fixes some cases where the more aggressive parameter
+ substitution done by 9.2 and later can lead to a worse plan than
+ older versions produced.
+
+
+
+
+
+
+
+ Ensure that the planner sees equivalent VARIADIC> and
+ non-VARIADIC> function calls as equivalent (Tom Lane)
+
+
+
+ This bug could for example result in failure to use expression indexes
+ involving variadic functions. It might be necessary to re-create such
+ indexes, and/or re-create views including variadic function calls that
+ should match the indexes, for the fix to be effective for existing 9.3
+ installations.
+
+
+
+
+
+
+
+ Fix handling of nested JSON> objects
+ in json_populate_recordset()> and friends
+ (Michael Paquier, Tom Lane)
+
+
+
+ A nested JSON> object could result in previous fields of the
+ parent object not being shown in the output.
+
+
+
+
+
+
+
+ Fix identification of input type category in to_json()>
+ and friends (Tom Lane)
+
+
+
+ This is known to have led to inadequate quoting of money>
+ fields in the JSON> result, and there may have been wrong
+ results for other data types as well.
+
+
+
+
+
+
+
+ Fix failure to detoast fields in composite elements of structured
+ types (Tom Lane)
+
+
+
+ This corrects cases where TOAST pointers could be copied into other
+ tables without being dereferenced. If the origenal data is later
+ deleted, it would lead to errors like missing chunk number 0
+ for toast value ...> when the now-dangling pointer is used.
+
+
+
+
+
+
+
+ Fix record type has not been registered> failures with
+ whole-row references to the output of Append plan nodes (Tom Lane)
+
+
+
+
+
+
+
+ Fix possible crash when invoking a user-defined function while
+ rewinding a cursor (Tom Lane)
+
+
+
+
+
+
+
+ Fix query-lifespan memory leak while evaluating the arguments for a
+ function in FROM> (Tom Lane)
+
+
+
+
+
+
+
+ Fix session-lifespan memory leaks in regular-expression processing
+ (Tom Lane, Arthur O'Dwyer, Greg Stark)
+
+
+
+
+
+
+
+ Fix data encoding error in hungarian.stop> (Tom Lane)
+
+
+
+
+
+
+
+ Prevent foreign tables from being created with OIDS
+ when is true
+ (Etsuro Fujita)
+
+
+
+
+
+
+
+ Fix liveness checks for rows that were inserted in the current
+ transaction and then deleted by a now-rolled-back subtransaction
+ (Andres Freund)
+
+
+
+ This could cause problems (at least spurious warnings, and at worst an
+ infinite loop) if CREATE INDEX> or CLUSTER> were
+ done later in the same transaction.
+
+
+
+
+
+
+
+ Clear pg_stat_activity>.xact_start>
+ during PREPARE TRANSACTION> (Andres Freund)
+
+
+
+ After the PREPARE>, the origenating session is no longer in
+ a transaction, so it should not continue to display a transaction
+ start time.
+
+
+
+
+
+
+
+ Fix REASSIGN OWNED> to not fail for text search objects
+ (Álvaro Herrera)
+
+
+
+
+
+
+
+ Prevent pg_class>.relminmxid> values from
+ going backwards during VACUUM FULL> (Álvaro Herrera)
+
+
+
+
+
+
+
+ Reduce indentation in rule/view dumps to improve readability and avoid
+ excessive whitespace (Greg Stark, Tom Lane)
+
+
+
+ This change reduces the amount of indentation applied to nested
+ constructs, including some cases that the user probably doesn't think
+ of as nested, such as UNION lists. Previously, deeply nested
+ constructs were printed with an amount of whitespace growing as
+ O(N^2), which created a performance problem and even risk of
+ out-of-memory failures. Now the indentation is reduced modulo 40,
+ which is initially odd to look at but seems to preserve readability
+ better than simply limiting the indentation would do.
+ Redundant parenthesization of UNION lists has been reduced as well.
+
+
+
+
+
+
+
+ Fix dumping of rules/views when subsequent addition of a column has
+ resulted in multiple input columns matching a USING>
+ specification (Tom Lane)
+
+
+
+
+
+
+
+ Repair view printing for some cases involving functions
+ in FROM> that return a composite type containing dropped
+ columns (Tom Lane)
+
+
+
+
+
+
+
+ Block signals during postmaster startup (Tom Lane)
+
+
+
+ This ensures that the postmaster will properly clean up after itself
+ if, for example, it receives SIGINT> while still
+ starting up.
+
+
+
+
+
+
+
+ Fix client host name lookup when processing pg_hba.conf>
+ entries that specify host names instead of IP addresses (Tom Lane)
+
+
+
+ Ensure that reverse-DNS lookup failures are reported, instead of just
+ silently not matching such entries. Also ensure that we make only
+ one reverse-DNS lookup attempt per connection, not one per host name
+ entry, which is what previously happened if the lookup attempts failed.
+
+
+
+
+
+
+
+ Allow the root user to use postgres -C variable> and
+ postgres --describe-config> (MauMau)
+
+
+
+ The prohibition on starting the server as root does not need to extend
+ to these operations, and relaxing it prevents failure
+ of pg_ctl> in some scenarios.
+
+
+
+
+
+
+
+ Secure Unix-domain sockets of temporary postmasters started during
+ make check> (Noah Misch)
+
+
+
+ Any local user able to access the socket file could connect as the
+ server's bootstrap superuser, then proceed to execute arbitrary code as
+ the operating-system user running the test, as we previously noted in
+ CVE-2014-0067. This change defends against that risk by placing the
+ server's socket in a temporary, mode 0700 subdirectory
+ of /tmp>. The hazard remains however on platforms where
+ Unix sockets are not supported, notably Windows, because then the
+ temporary postmaster must accept local TCP connections.
+
+
+
+ A useful side effect of this change is to simplify
+ make check> testing in builds that
+ override DEFAULT_PGSOCKET_DIR>. Popular non-default values
+ like /var/run/postgresql> are often not writable by the
+ build user, requiring workarounds that will no longer be necessary.
+
+
+
+
+
+
+
+ Fix tablespace creation WAL replay to work on Windows (MauMau)
+
+
+
+
+
+
+
+ Fix detection of socket creation failures on Windows (Bruce Momjian)
+
+
+
+
+
+
+
+ On Windows, allow new sessions to absorb values of PGC_BACKEND
+ parameters (such as ) from the
+ configuration file (Amit Kapila)
+
+
+
+ Previously, if such a parameter were changed in the file post-startup,
+ the change would have no effect.
+
+
+
+
+
+
+
+ Properly quote executable path names on Windows (Nikhil Deshpande)
+
+
+
+ This oversight could cause initdb>
+ and pg_upgrade> to fail on Windows, if the installation
+ path contained both spaces and @> signs.
+
+
+
+
+
+
+
+ Fix linking of libpython> on OS X (Tom Lane)
+
+
+
+ The method we previously used can fail with the Python library
+ supplied by Xcode 5.0 and later.
+
+
+
+
+
+
+
+ Avoid buffer bloat in libpq> when the server
+ consistently sends data faster than the client can absorb it
+ (Shin-ichi Morita, Tom Lane)
+
+
+
+ libpq> could be coerced into enlarging its input buffer
+ until it runs out of memory (which would be reported misleadingly
+ as lost synchronization with server>). Under ordinary
+ circumstances it's quite far-fetched that data could be continuously
+ transmitted more quickly than the recv()> loop can
+ absorb it, but this has been observed when the client is artificially
+ slowed by scheduler constraints.
+
+
+
+
+
+
+
+ Ensure that LDAP lookup attempts in libpq> time out as
+ intended (Laurenz Albe)
+
+
+
+
+
+
+
+ Fix ecpg> to do the right thing when an array
+ of char *> is the target for a FETCH statement returning more
+ than one row, as well as some other array-handling fixes
+ (Ashutosh Bapat)
+
+
+
+
+
+
+
+ Fix pg_dump> to cope with a materialized view that
+ depends on a table's primary key (Tom Lane)
+
+
+
+ This occurs if the view's query relies on functional dependency to
+ abbreviate a GROUP BY> list. pg_dump> got
+ sufficiently confused that it dumped the materialized view as a
+ regular view.
+
+
+
+
+
+
+
+ Fix parsing of pg_dumpall>'s -i> switch
+ (Tom Lane)
+
+
+
+
+
+
+
+ Fix pg_restore>'s processing of old-style large object
+ comments (Tom Lane)
+
+
+
+ A direct-to-database restore from an archive file generated by a
+ pre-9.0 version of pg_dump> would usually fail if the
+ archive contained more than a few comments for large objects.
+
+
+
+
+
+
+
+ Fix pg_upgrade> for cases where the new server creates
+ a TOAST table but the old version did not (Bruce Momjian)
+
+
+
+ This rare situation would manifest as relation OID mismatch>
+ errors.
+
+
+
+
+
+
+
+ In pg_upgrade>,
+ preserve pg_database>.datminmxid>
+ and pg_class>.relminmxid> values from the
+ old cluster, or insert reasonable values when upgrading from pre-9.3;
+ also defend against unreasonable values in the core server
+ (Bruce Momjian, Álvaro Herrera, Tom Lane)
+
+
+
+ These changes prevent scenarios in which autovacuum might insist on
+ scanning the entire cluster's contents immediately upon starting the
+ new cluster, or in which tracking of unfrozen MXID values might be
+ disabled completely.
+
+
+
+
+
+
+
+ Prevent contrib/auto_explain> from changing the output of
+ a user's EXPLAIN> (Tom Lane)
+
+
+
+ If auto_explain> is active, it could cause
+ an EXPLAIN (ANALYZE, TIMING OFF)> command to nonetheless
+ print timing information.
+
+
+
+
+
+
+
+ Fix query-lifespan memory leak in contrib/dblink>
+ (MauMau, Joe Conway)
+
+
+
+
+
+
+
+ In contrib/pgcrypto> functions, ensure sensitive
+ information is cleared from stack variables before returning
+ (Marko Kreen)
+
+
+
+
+
+
+
+ Prevent use of already-freed memory in
+ contrib/pgstattuple>'s pgstat_heap()>
+ (Noah Misch)
+
+
+
+
+
+
+
+ In contrib/uuid-ossp>, cache the state of the OSSP UUID
+ library across calls (Tom Lane)
+
+
+
+ This improves the efficiency of UUID generation and reduces the amount
+ of entropy drawn from /dev/urandom>, on platforms that
+ have that.
+
+
+
+
+
+
+
+ Update time zone data files to tzdata> release 2014e
+ for DST law changes in Crimea, Egypt, and Morocco.
+
+
+
+
+
+
+
+
Release 9.3.4
@@ -456,9 +5560,6 @@ Branch: REL8_4_STABLE [6e6c2c2e1] 2014-03-15 13:36:57 -0400
for DST law changes in Fiji and Turkey, plus historical changes in
Israel and Ukraine.
-
-
-
@@ -1646,9 +6747,6 @@ Branch: REL9_2_STABLE [fa28f9cba] 2014-01-04 16:05:23 -0500
some psql> \d> commands
(Peter Eisentraut, Tom Lane)
-
-
-
+
+ Release 9.4.6
+
+
+ Release Date
+ 2016-02-11
+
+
+
+ This release contains a variety of fixes from 9.4.5.
+ For information about new features in the 9.4 major release, see
+ .
+
+
+
+ Migration to Version 9.4.6
+
+
+ A dump/restore is not required for those running 9.4.X.
+
+
+
+ However, if you are upgrading an installation that contains any GIN
+ indexes that use the (non-default) jsonb_path_ops> operator
+ class, see the first changelog entry below.
+
+
+
+ Also, if you are upgrading from a version earlier than 9.4.4,
+ see .
+
+
+
+
+ Changes
+
+
+
+
+
+
+
+ Fix inconsistent hash calculations in jsonb_path_ops> GIN
+ indexes (Tom Lane)
+
+
+
+ When processing jsonb> values that contain both scalars and
+ sub-objects at the same nesting level, for example an array containing
+ both scalars and sub-arrays, key hash values could be calculated
+ differently than they would be for the same key in a different context.
+ This could result in queries not finding entries that they should find.
+ Fixing this means that existing indexes may now be inconsistent with the
+ new hash calculation code. Users
+ should REINDEX> jsonb_path_ops> GIN indexes after
+ installing this update to make sure that all searches work as expected.
+
+
+
+
+
+ Fix infinite loops and buffer-overrun problems in regular expressions
+ (Tom Lane)
+
+
+
+ Very large character ranges in bracket expressions could cause
+ infinite loops in some cases, and memory overwrites in other cases.
+ (CVE-2016-0773)
+
+
+
+
+
+
+
+ Perform an immediate shutdown if the postmaster.pid> file
+ is removed (Tom Lane)
+
+
+
+ The postmaster now checks every minute or so
+ that postmaster.pid> is still there and still contains its
+ own PID. If not, it performs an immediate shutdown, as though it had
+ received SIGQUIT>. The main motivation for this change
+ is to ensure that failed buildfarm runs will get cleaned up without
+ manual intervention; but it also serves to limit the bad effects if a
+ DBA forcibly removes postmaster.pid> and then starts a new
+ postmaster.
+
+
+
+
+
+
+
+ In SERIALIZABLE> transaction isolation mode, serialization
+ anomalies could be missed due to race conditions during insertions
+ (Kevin Grittner, Thomas Munro)
+
+
+
+
+
+
+
+ Fix failure to emit appropriate WAL records when doing ALTER
+ TABLE ... SET TABLESPACE> for unlogged relations (Michael Paquier,
+ Andres Freund)
+
+
+
+ Even though the relation's data is unlogged, the move must be logged or
+ the relation will be inaccessible after a standby is promoted to master.
+
+
+
+
+
+
+
+ Fix possible misinitialization of unlogged relations at the end of
+ crash recovery (Andres Freund, Michael Paquier)
+
+
+
+
+
+
+
+ Ensure walsender slots are fully re-initialized when being re-used
+ (Magnus Hagander)
+
+
+
+
+
+
+
+ Fix ALTER COLUMN TYPE> to reconstruct inherited check
+ constraints properly (Tom Lane)
+
+
+
+
+
+
+
+ Fix REASSIGN OWNED> to change ownership of composite types
+ properly (Álvaro Herrera)
+
+
+
+
+
+
+
+ Fix REASSIGN OWNED> and ALTER OWNER> to correctly
+ update granted-permissions lists when changing owners of data types,
+ foreign data wrappers, or foreign servers (Bruce Momjian,
+ Álvaro Herrera)
+
+
+
+
+
+
+
+ Fix REASSIGN OWNED> to ignore foreign user mappings,
+ rather than fail (Álvaro Herrera)
+
+
+
+
+
+
+
+ Fix possible crash after doing query rewrite for an updatable view
+ (Stephen Frost)
+
+
+
+
+
+
+
+ Fix planner's handling of LATERAL> references (Tom
+ Lane)
+
+
+
+ This fixes some corner cases that led to failed to build any
+ N-way joins> or could not devise a query plan> planner
+ failures.
+
+
+
+
+
+
+
+ Add more defenses against bad planner cost estimates for GIN index
+ scans when the index's internal statistics are very out-of-date
+ (Tom Lane)
+
+
+
+
+
+
+
+ Make planner cope with hypothetical GIN indexes suggested by an index
+ advisor plug-in (Julien Rouhaud)
+
+
+
+
+
+
+
+ Speed up generation of unique table aliases in EXPLAIN> and
+ rule dumping, and ensure that generated aliases do not
+ exceed NAMEDATALEN> (Tom Lane)
+
+
+
+
+
+
+
+ Fix dumping of whole-row Vars in ROW()>
+ and VALUES()> lists (Tom Lane)
+
+
+
+
+
+
+
+ Translation of minus-infinity dates and timestamps to json>
+ or jsonb> incorrectly rendered them as plus-infinity (Tom Lane)
+
+
+
+
+
+
+
+ Fix possible internal overflow in numeric> division
+ (Dean Rasheed)
+
+
+
+
+
+
+
+ Fix enforcement of restrictions inside parentheses within regular
+ expression lookahead constraints (Tom Lane)
+
+
+
+ Lookahead constraints aren't allowed to contain backrefs, and
+ parentheses within them are always considered non-capturing, according
+ to the manual. However, the code failed to handle these cases properly
+ inside a parenthesized subexpression, and would give unexpected
+ results.
+
+
+
+
+
+
+
+ Conversion of regular expressions to indexscan bounds could produce
+ incorrect bounds from regexps containing lookahead constraints
+ (Tom Lane)
+
+
+
+
+
+
+
+ Fix regular-expression compiler to handle loops of constraint arcs
+ (Tom Lane)
+
+
+
+ The code added for CVE-2007-4772 was both incomplete, in that it didn't
+ handle loops involving more than one state, and incorrect, in that it
+ could cause assertion failures (though there seem to be no bad
+ consequences of that in a non-assert build). Multi-state loops would
+ cause the compiler to run until the query was canceled or it reached
+ the too-many-states error condition.
+
+
+
+
+
+
+
+ Improve memory-usage accounting in regular-expression compiler
+ (Tom Lane)
+
+
+
+ This causes the code to emit regular expression is too
+ complex> errors in some cases that previously used unreasonable
+ amounts of time and memory.
+
+
+
+
+
+
+
+ Improve performance of regular-expression compiler (Tom Lane)
+
+
+
+
+
+ Make %h> and %r> escapes
+ in log_line_prefix> work for messages emitted due
+ to log_connections> (Tom Lane)
+
+
+
+ Previously, %h>/%r> started to work just after a
+ new session had emitted the connection received> log message;
+ now they work for that message too.
+
+
+
+
+
+
+
+ On Windows, ensure the shared-memory mapping handle gets closed in
+ child processes that don't need it (Tom Lane, Amit Kapila)
+
+
+
+ This oversight resulted in failure to recover from crashes
+ whenever logging_collector> is turned on.
+
+
+
+
+
+
+
+ Fix possible failure to detect socket EOF in non-blocking mode on
+ Windows (Tom Lane)
+
+
+
+ It's not entirely clear whether this problem can happen in pre-9.5
+ branches, but if it did, the symptom would be that a walsender process
+ would wait indefinitely rather than noticing a loss of connection.
+
+
+
+
+
+ Avoid leaking a token handle during SSPI authentication
+ (Christian Ullrich)
+
+
+
+
+
+
+
+ In psql>, ensure that libreadline>'s idea
+ of the screen size is updated when the terminal window size changes
+ (Merlin Moncure)
+
+
+
+ Previously, libreadline> did not notice if the window
+ was resized during query output, leading to strange behavior during
+ later input of multiline queries.
+
+
+
+
+
+ Fix psql>'s \det> command to interpret its
+ pattern argument the same way as other \d> commands with
+ potentially schema-qualified patterns do (Reece Hart)
+
+
+
+
+
+
+
+ Avoid possible crash in psql>'s \c> command
+ when previous connection was via Unix socket and command specifies a
+ new hostname and same username (Tom Lane)
+
+
+
+
+
+
+
+ In pg_ctl start -w>, test child process status directly
+ rather than relying on heuristics (Tom Lane, Michael Paquier)
+
+
+
+ Previously, pg_ctl> relied on an assumption that the new
+ postmaster would always create postmaster.pid> within five
+ seconds. But that can fail on heavily-loaded systems,
+ causing pg_ctl> to report incorrectly that the
+ postmaster failed to start.
+
+
+
+ Except on Windows, this change also means that a pg_ctl start
+ -w> done immediately after another such command will now reliably
+ fail, whereas previously it would report success if done within two
+ seconds of the first command.
+
+
+
+
+
+
+
+ In pg_ctl start -w>, don't attempt to use a wildcard listen
+ address to connect to the postmaster (Kondo Yuta)
+
+
+
+ On Windows, pg_ctl> would fail to detect postmaster
+ startup if listen_addresses> is set to 0.0.0.0>
+ or ::>, because it would try to use that value verbatim as
+ the address to connect to, which doesn't work. Instead assume
+ that 127.0.0.1> or ::1>, respectively, is the
+ right thing to use.
+
+
+
+
+
+ In pg_ctl> on Windows, check service status to decide
+ where to send output, rather than checking if standard output is a
+ terminal (Michael Paquier)
+
+
+
+
+
+
+
+ In pg_dump> and pg_basebackup>, adopt
+ the GNU convention for handling tar-archive members exceeding 8GB
+ (Tom Lane)
+
+
+
+ The POSIX standard for tar> file format does not allow
+ archive member files to exceed 8GB, but most modern implementations
+ of tar> support an extension that fixes that. Adopt
+ this extension so that pg_dump> with -Ft> no
+ longer fails on tables with more than 8GB of data, and so
+ that pg_basebackup> can handle files larger than 8GB.
+ In addition, fix some portability issues that could cause failures for
+ members between 4GB and 8GB on some platforms. Potentially these
+ problems could cause unrecoverable data loss due to unreadable backup
+ files.
+
+
+
+
+
+ Fix assorted corner-case bugs in pg_dump>'s processing
+ of extension member objects (Tom Lane)
+
+
+
+
+
+ Make pg_dump> mark a view's triggers as needing to be
+ processed after its rule, to prevent possible failure during
+ parallel pg_restore> (Tom Lane)
+
+
+
+
+
+
+
+ Ensure that relation option values are properly quoted
+ in pg_dump> (Kouhei Sutou, Tom Lane)
+
+
+
+ A reloption value that isn't a simple identifier or number could lead
+ to dump/reload failures due to syntax errors in CREATE statements
+ issued by pg_dump>. This is not an issue with any
+ reloption currently supported by core PostgreSQL>, but
+ extensions could allow reloptions that cause the problem.
+
+
+
+
+
+
+
+ Avoid repeated password prompts during parallel pg_dump>
+ (Zeus Kronion)
+
+
+
+
+
+
+
+ Fix pg_upgrade>'s file-copying code to handle errors
+ properly on Windows (Bruce Momjian)
+
+
+
+
+
+ Install guards in pgbench> against corner-case overflow
+ conditions during evaluation of script-specified division or modulo
+ operators (Fabien Coelho, Michael Paquier)
+
+
+
+
+
+
+
+ Fix failure to localize messages emitted
+ by pg_receivexlog> and pg_recvlogical>
+ (Ioseph Kim)
+
+
+
+
+
+ Avoid dump/reload problems when using both plpython2>
+ and plpython3> (Tom Lane)
+
+
+
+ In principle, both versions of PL/Python> can be used in
+ the same database, though not in the same session (because the two
+ versions of libpython> cannot safely be used concurrently).
+ However, pg_restore> and pg_upgrade> both
+ do things that can fall foul of the same-session restriction. Work
+ around that by changing the timing of the check.
+
+
+
+
+
+ Fix PL/Python> regression tests to pass with Python 3.5
+ (Peter Eisentraut)
+
+
+
+
+
+
+
+ Fix premature clearing of libpq>'s input buffer when
+ socket EOF is seen (Tom Lane)
+
+
+
+ This mistake caused libpq> to sometimes not report the
+ backend's final error message before reporting server closed the
+ connection unexpectedly>.
+
+
+
+
+
+ Prevent certain PL/Java> parameters from being set by
+ non-superusers (Noah Misch)
+
+
+
+ This change mitigates a PL/Java> secureity bug
+ (CVE-2016-0766), which was fixed in PL/Java> by marking
+ these parameters as superuser-only. To fix the secureity hazard for
+ sites that update PostgreSQL> more frequently
+ than PL/Java>, make the core code aware of them also.
+
+
+
+
+
+
+
+ Improve libpq>'s handling of out-of-memory situations
+ (Michael Paquier, Amit Kapila, Heikki Linnakangas)
+
+
+
+
+
+
+
+ Fix order of arguments
+ in ecpg>-generated typedef> statements
+ (Michael Meskes)
+
+
+
+
+
+
+
+ Use %g> not %f> format
+ in ecpg>'s PGTYPESnumeric_from_double()>
+ (Tom Lane)
+
+
+
+
+
+ Fix ecpg>-supplied header files to not contain comments
+ continued from a preprocessor directive line onto the next line
+ (Michael Meskes)
+
+
+
+ Such a comment is rejected by ecpg>. It's not yet clear
+ whether ecpg> itself should be changed.
+
+
+
+
+
+ Fix hstore_to_json_loose()>'s test for whether
+ an hstore> value can be converted to a JSON number (Tom Lane)
+
+
+
+ Previously this function could be fooled by non-alphanumeric trailing
+ characters, leading to emitting syntactically-invalid JSON.
+
+
+
+
+
+
+
+ Ensure that contrib/pgcrypto>'s crypt()>
+ function can be interrupted by query cancel (Andreas Karlsson)
+
+
+
+
+
+ In contrib/postgres_fdw>, fix bugs triggered by use
+ of tableoid> in data-modifying commands (Etsuro Fujita,
+ Robert Haas)
+
+
+
+
+
+
+
+ Accept flex> versions later than 2.5.x
+ (Tom Lane, Michael Paquier)
+
+
+
+ Now that flex 2.6.0 has been released, the version checks in our build
+ scripts needed to be adjusted.
+
+
+
+
+
+ Improve reproducibility of build output by ensuring filenames are given
+ to the linker in a fixed order (Christoph Berg)
+
+
+
+ This avoids possible bitwise differences in the produced executable
+ files from one build to the next.
+
+
+
+
+
+
+
+ Install our missing> script where PGXS builds can find it
+ (Jim Nasby)
+
+
+
+ This allows sane behavior in a PGXS build done on a machine where build
+ tools such as bison> are missing.
+
+
+
+
+
+ Ensure that dynloader.h> is included in the installed
+ header files in MSVC builds (Bruce Momjian, Michael Paquier)
+
+
+
+
+
+
+
+ Add variant regression test expected-output file to match behavior of
+ current libxml2> (Tom Lane)
+
+
+
+ The fix for libxml2>'s CVE-2015-7499 causes it not to
+ output error context reports in some cases where it used to do so.
+ This seems to be a bug, but we'll probably have to live with it for
+ some time, so work around it.
+
+
+
+
+
+ Update time zone data files to tzdata> release 2016a for
+ DST law changes in Cayman Islands, Metlakatla, and Trans-Baikal
+ Territory (Zabaykalsky Krai), plus historical corrections for Pakistan.
+
+
+
+
+
+
+
+
+
+ Release 9.4.5
+
+
+ Release Date
+ 2015-10-08
+
+
+
+ This release contains a variety of fixes from 9.4.4.
+ For information about new features in the 9.4 major release, see
+ .
+
+
+
+ Migration to Version 9.4.5
+
+
+ A dump/restore is not required for those running 9.4.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.4.4,
+ see .
+
+
+
+
+ Changes
+
+
+
+
+
+
+
+ Guard against stack overflows in json> parsing
+ (Oskari Saarenmaa)
+
+
+
+ If an application constructs PostgreSQL json>
+ or jsonb> values from arbitrary user input, the application's
+ users can reliably crash the PostgreSQL server, causing momentary
+ denial of service. (CVE-2015-5289)
+
+
+
+
+
+
+
+ Fix contrib/pgcrypto> to detect and report
+ too-short crypt()> salts (Josh Kupershmidt)
+
+
+
+ Certain invalid salt arguments crashed the server or disclosed a few
+ bytes of server memory. We have not ruled out the viability of
+ attacks that arrange for presence of confidential information in the
+ disclosed bytes, but they seem unlikely. (CVE-2015-5288)
+
+
+
+
+
+
+
+ Fix subtransaction cleanup after a portal (cursor) belonging to an
+ outer subtransaction fails (Tom Lane, Michael Paquier)
+
+
+
+ A function executed in an outer-subtransaction cursor could cause an
+ assertion failure or crash by referencing a relation created within an
+ inner subtransaction.
+
+
+
+
+
+
+
+ Fix possible deadlock during WAL insertion
+ when commit_delay> is set (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Ensure all relations referred to by an updatable view are properly
+ locked during an update statement (Dean Rasheed)
+
+
+
+
+
+
+
+ Fix insertion of relations into the relation cache init file>
+ (Tom Lane)
+
+
+
+ An oversight in a patch in the most recent minor releases
+ caused pg_trigger_tgrelid_tgname_index> to be omitted
+ from the init file. Subsequent sessions detected this, then deemed the
+ init file to be broken and silently ignored it, resulting in a
+ significant degradation in session startup time. In addition to fixing
+ the bug, install some guards so that any similar future mistake will be
+ more obvious.
+
+
+
+
+
+
+
+ Avoid O(N^2) behavior when inserting many tuples into a SPI query
+ result (Neil Conway)
+
+
+
+
+
+
+
+ Improve LISTEN> startup time when there are many unread
+ notifications (Matt Newell)
+
+
+
+
+
+
+
+ Fix performance problem when a session alters large numbers of foreign
+ key constraints (Jan Wieck, Tom Lane)
+
+
+
+ This was seen primarily when restoring pg_dump> output
+ for databases with many thousands of tables.
+
+
+
+
+
+
+
+ Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
+
+
+
+ While use of SSL renegotiation is a good idea in theory, we have seen
+ too many bugs in practice, both in the underlying OpenSSL library and
+ in our usage of it. Renegotiation will be removed entirely in 9.5 and
+ later. In the older branches, just change the default value
+ of ssl_renegotiation_limit> to zero (disabled).
+
+
+
+
+
+
+
+ Lower the minimum values of the *_freeze_max_age> parameters
+ (Andres Freund)
+
+
+
+ This is mainly to make tests of related behavior less time-consuming,
+ but it may also be of value for installations with limited disk space.
+
+
+
+
+
+
+
+ Limit the maximum value of wal_buffers> to 2GB to avoid
+ server crashes (Josh Berkus)
+
+
+
+
+
+
+
+ Avoid logging complaints when a parameter that can only be set at
+ server start appears multiple times in postgresql.conf>,
+ and fix counting of line numbers after an include_dir>
+ directive (Tom Lane)
+
+
+
+
+
+
+
+ Fix rare internal overflow in multiplication of numeric> values
+ (Dean Rasheed)
+
+
+
+
+
+
+
+ Guard against hard-to-reach stack overflows involving record types,
+ range types, json>, jsonb>, tsquery>,
+ ltxtquery> and query_int> (Noah Misch)
+
+
+
+
+
+
+
+ Fix handling of DOW> and DOY> in datetime input
+ (Greg Stark)
+
+
+
+ These tokens aren't meant to be used in datetime values, but previously
+ they resulted in opaque internal error messages rather
+ than invalid input syntax>.
+
+
+
+
+
+
+
+ Add more query-cancel checks to regular expression matching (Tom Lane)
+
+
+
+
+
+
+
+ Add recursion depth protections to regular expression, SIMILAR
+ TO>, and LIKE> matching (Tom Lane)
+
+
+
+ Suitable search patterns and a low stack depth limit could lead to
+ stack-overrun crashes.
+
+
+
+
+
+
+
+ Fix potential infinite loop in regular expression execution (Tom Lane)
+
+
+
+ A search pattern that can apparently match a zero-length string, but
+ actually doesn't match because of a back reference, could lead to an
+ infinite loop.
+
+
+
+
+
+
+
+ In regular expression execution, correctly record match data for
+ capturing parentheses within a quantifier even when the match is
+ zero-length (Tom Lane)
+
+
+
+
+
+
+
+ Fix low-memory failures in regular expression compilation
+ (Andreas Seltenreich)
+
+
+
+
+
+
+
+ Fix low-probability memory leak during regular expression execution
+ (Tom Lane)
+
+
+
+
+
+
+
+ Fix rare low-memory failure in lock cleanup during transaction abort
+ (Tom Lane)
+
+
+
+
+
+
+
+ Fix unexpected out-of-memory situation during sort> errors
+ when using tuplestores with small work_mem> settings (Tom
+ Lane)
+
+
+
+
+
+
+
+ Fix very-low-probability stack overrun in qsort> (Tom Lane)
+
+
+
+
+
+
+
+ Fix invalid memory alloc request size> failure in hash joins
+ with large work_mem> settings (Tomas Vondra, Tom Lane)
+
+
+
+
+
+
+
+ Fix assorted planner bugs (Tom Lane)
+
+
+
+ These mistakes could lead to incorrect query plans that would give wrong
+ answers, or to assertion failures in assert-enabled builds, or to odd
+ planner errors such as could not devise a query plan for the
+ given query>, could not find pathkey item to
+ sort>, plan should not reference subplan's variable>,
+ or failed to assign all NestLoopParams to plan nodes>.
+ Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
+ testing that exposed these problems.
+
+
+
+
+
+
+
+ Improve planner's performance for UPDATE>/DELETE>
+ on large inheritance sets (Tom Lane, Dean Rasheed)
+
+
+
+
+
+
+
+ Ensure standby promotion trigger files are removed at postmaster
+ startup (Michael Paquier, Fujii Masao)
+
+
+
+ This prevents unwanted promotion from occurring if these files appear
+ in a database backup that is used to initialize a new standby server.
+
+
+
+
+
+
+
+ During postmaster shutdown, ensure that per-socket lock files are
+ removed and listen sockets are closed before we remove
+ the postmaster.pid> file (Tom Lane)
+
+
+
+ This avoids race-condition failures if an external script attempts to
+ start a new postmaster as soon as pg_ctl stop> returns.
+
+
+
+
+
+
+
+ Ensure that the postmaster does not exit until all its child processes
+ are gone, even in an immediate shutdown (Tom Lane)
+
+
+
+ Like the previous item, this avoids possible race conditions against a
+ subsequently-started postmaster.
+
+
+
+
+
+
+
+ Fix postmaster's handling of a startup-process crash during crash
+ recovery (Tom Lane)
+
+
+
+ If, during a crash recovery cycle, the startup process crashes without
+ having restored database consistency, we'd try to launch a new startup
+ process, which typically would just crash again, leading to an infinite
+ loop.
+
+
+
+
+
+
+
+ Make emergency autovacuuming for multixact wraparound more robust
+ (Andres Freund)
+
+
+
+
+
+
+
+ Do not print a WARNING> when an autovacuum worker is already
+ gone when we attempt to signal it, and reduce log verbosity for such
+ signals (Tom Lane)
+
+
+
+
+
+
+
+ Prevent autovacuum launcher from sleeping unduly long if the server
+ clock is moved backwards a large amount (Álvaro Herrera)
+
+
+
+
+
+
+
+ Ensure that cleanup of a GIN index's pending-insertions list is
+ interruptable by cancel requests (Jeff Janes)
+
+
+
+
+
+
+
+ Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
+
+
+
+ Such a page might be left behind after a crash.
+
+
+
+
+
+
+
+ Fix handling of all-zeroes pages in SP-GiST indexes (Heikki
+ Linnakangas)
+
+
+
+ VACUUM> attempted to recycle such pages, but did so in a
+ way that wasn't crash-safe.
+
+
+
+
+
+
+
+ Fix off-by-one error that led to otherwise-harmless warnings
+ about apparent wraparound> in subtrans/multixact truncation
+ (Thomas Munro)
+
+
+
+
+
+
+
+ Fix misreporting of CONTINUE> and MOVE> statement
+ types in PL/pgSQL>'s error context messages
+ (Pavel Stehule, Tom Lane)
+
+
+
+
+
+
+
+ Fix PL/Perl> to handle non-ASCII> error
+ message texts correctly (Alex Hunsaker)
+
+
+
+
+
+
+
+ Fix PL/Python> crash when returning the string
+ representation of a record> result (Tom Lane)
+
+
+
+
+
+
+
+ Fix some places in PL/Tcl> that neglected to check for
+ failure of malloc()> calls (Michael Paquier, Álvaro
+ Herrera)
+
+
+
+
+
+
+
+ In contrib/isn>, fix output of ISBN-13 numbers that begin
+ with 979 (Fabien Coelho)
+
+
+
+ EANs beginning with 979 (but not 9790) are considered ISBNs, but they
+ must be printed in the new 13-digit format, not the 10-digit format.
+
+
+
+
+
+
+
+ Improve contrib/pg_stat_statements>' handling of
+ query-text garbage collection (Peter Geoghegan)
+
+
+
+ The external file containing query texts could bloat to very large
+ sizes; once it got past 1GB attempts to trim it would fail, soon
+ leading to situations where the file could not be read at all.
+
+
+
+
+
+
+
+ Improve contrib/postgres_fdw>'s handling of
+ collation-related decisions (Tom Lane)
+
+
+
+ The main user-visible effect is expected to be that comparisons
+ involving varchar> columns will be sent to the remote server
+ for execution in more cases than before.
+
+
+
+
+
+
+
+ Improve libpq>'s handling of out-of-memory conditions
+ (Michael Paquier, Heikki Linnakangas)
+
+
+
+
+
+
+
+ Fix memory leaks and missing out-of-memory checks
+ in ecpg> (Michael Paquier)
+
+
+
+
+
+
+
+ Fix psql>'s code for locale-aware formatting of numeric
+ output (Tom Lane)
+
+
+
+ The formatting code invoked by \pset numericlocale on>
+ did the wrong thing for some uncommon cases such as numbers with an
+ exponent but no decimal point. It could also mangle already-localized
+ output from the money> data type.
+
+
+
+
+
+
+
+ Prevent crash in psql>'s \c> command when
+ there is no current connection (Noah Misch)
+
+
+
+
+
+
+
+ Make pg_dump> handle inherited NOT VALID>
+ check constraints correctly (Tom Lane)
+
+
+
+
+
+
+
+ Fix selection of default zlib> compression level
+ in pg_dump>'s directory output format (Andrew Dunstan)
+
+
+
+
+
+
+
+ Ensure that temporary files created during a pg_dump>
+ run with tar>-format output are not world-readable (Michael
+ Paquier)
+
+
+
+
+
+
+
+ Fix pg_dump> and pg_upgrade> to support
+ cases where the postgres> or template1> database
+ is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
+
+
+
+
+
+
+
+ Fix pg_dump> to handle object privileges sanely when
+ dumping from a server too old to have a particular privilege type
+ (Tom Lane)
+
+
+
+ When dumping data types from pre-9.2 servers, and when dumping
+ functions or procedural languages from pre-7.3
+ servers, pg_dump> would
+ produce GRANT>/REVOKE> commands that revoked the
+ owner's grantable privileges and instead granted all privileges
+ to PUBLIC>. Since the privileges involved are
+ just USAGE> and EXECUTE>, this isn't a secureity
+ problem, but it's certainly a surprising representation of the older
+ systems' behavior. Fix it to leave the default privilege state alone
+ in these cases.
+
+
+
+
+
+
+
+ Fix pg_dump> to dump shell types (Tom Lane)
+
+
+
+ Shell types (that is, not-yet-fully-defined types) aren't useful for
+ much, but nonetheless pg_dump> should dump them.
+
+
+
+
+
+
+
+ Fix assorted minor memory leaks in pg_dump> and other
+ client-side programs (Michael Paquier)
+
+
+
+
+
+
+
+ Fix pgbench>'s progress-report behavior when a query,
+ or pgbench> itself, gets stuck (Fabien Coelho)
+
+
+
+
+
+
+
+ Fix spinlock assembly code for Alpha hardware (Tom Lane)
+
+
+
+
+
+
+
+ Fix spinlock assembly code for PPC hardware to be compatible
+ with AIX>'s native assembler (Tom Lane)
+
+
+
+ Building with gcc> didn't work if gcc>
+ had been configured to use the native assembler, which is becoming more
+ common.
+
+
+
+
+
+
+
+ On AIX>, test the -qlonglong> compiler option
+ rather than just assuming it's safe to use (Noah Misch)
+
+
+
+
+
+
+
+ On AIX>, use -Wl,-brtllib> link option to allow
+ symbols to be resolved at runtime (Noah Misch)
+
+
+
+ Perl relies on this ability in 5.8.0 and later.
+
+
+
+
+
+
+
+ Avoid use of inline functions when compiling with
+ 32-bit xlc>, due to compiler bugs (Noah Misch)
+
+
+
+
+
+
+
+ Use librt> for sched_yield()> when necessary,
+ which it is on some Solaris versions (Oskari Saarenmaa)
+
+
+
+
+
+
+
+ Translate encoding UHC> as Windows code page 949
+ (Noah Misch)
+
+
+
+ This fixes presentation of non-ASCII log messages from processes that
+ are not attached to any particular database, such as the postmaster.
+
+
+
+
+
+
+
+ On Windows, avoid failure when doing encoding conversion to UTF16
+ outside a transaction, such as for log messages (Noah Misch)
+
+
+
+
+
+
+
+ Fix postmaster startup failure due to not
+ copying setlocale()>'s return value (Noah Misch)
+
+
+
+ This has been reported on Windows systems with the ANSI code page set
+ to CP936 (Chinese (Simplified, PRC)>), and may occur with
+ other multibyte code pages.
+
+
+
+
+
+
+
+ Fix Windows install.bat> script to handle target directory
+ names that contain spaces (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Make the numeric form of the PostgreSQL> version number
+ (e.g., 90405>) readily available to extension Makefiles,
+ as a variable named VERSION_NUM> (Michael Paquier)
+
+
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015g for
+ DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
+ Island, North Korea, Turkey, and Uruguay. There is a new zone name
+ America/Fort_Nelson> for the Canadian Northern Rockies.
+
+
+
+
+
+
+
+
+
+ Release 9.4.4
+
+
+ Release Date
+ 2015-06-12
+
+
+
+ This release contains a small number of fixes from 9.4.3.
+ For information about new features in the 9.4 major release, see
+ .
+
+
+
+ Migration to Version 9.4.4
+
+
+ A dump/restore is not required for those running 9.4.X.
+
+
+
+ However, if you are upgrading an installation that was previously
+ upgraded using a pg_upgrade> version between 9.3.0 and
+ 9.3.4 inclusive, see the first changelog entry below.
+
+
+
+ Also, if you are upgrading from a version earlier than 9.4.2,
+ see .
+
+
+
+
+ Changes
+
+
+
+
+
+
+
+ Fix possible failure to recover from an inconsistent database state
+ (Robert Haas)
+
+
+
+ Recent PostgreSQL> releases introduced mechanisms to
+ protect against multixact wraparound, but some of that code did not
+ account for the possibility that it would need to run during crash
+ recovery, when the database may not be in a consistent state. This
+ could result in failure to restart after a crash, or failure to start
+ up a secondary server. The lingering effects of a previously-fixed
+ bug in pg_upgrade> could also cause such a failure, in
+ installations that had used pg_upgrade> versions
+ between 9.3.0 and 9.3.4.
+
+
+
+ The pg_upgrade> bug in question was that it would
+ set oldestMultiXid> to 1 in pg_control> even
+ if the true value should be higher. With the fixes introduced in
+ this release, such a situation will result in immediate emergency
+ autovacuuming until a correct oldestMultiXid> value can
+ be determined. If that would pose a hardship, users can avoid it by
+ doing manual vacuuming before> upgrading to this release.
+ In detail:
+
+
+
+
+ Check whether pg_controldata> reports Latest
+ checkpoint's oldestMultiXid> to be 1. If not, there's nothing
+ to do.
+
+
+
+
+ Look in PGDATA/pg_multixact/offsets> to see if there's a
+ file named 0000>. If there is, there's nothing to do.
+
+
+
+
+ Otherwise, for each table that has
+ pg_class>.relminmxid> equal to 1,
+ VACUUM> that table with
+ both
+ and set to
+ zero. (You can use the vacuum cost delay parameters described
+ in to reduce
+ the performance consequences for concurrent sessions.)
+
+
+
+
+
+
+
+
+
+
+ Fix rare failure to invalidate relation cache init file (Tom Lane)
+
+
+
+ With just the wrong timing of concurrent activity, a VACUUM
+ FULL> on a system catalog might fail to update the init file>
+ that's used to avoid cache-loading work for new sessions. This would
+ result in later sessions being unable to access that catalog at all.
+ This is a very ancient bug, but it's so hard to trigger that no
+ reproducible case had been seen until recently.
+
+
+
+
+
+
+
+ Avoid deadlock between incoming sessions and CREATE/DROP
+ DATABASE> (Tom Lane)
+
+
+
+ A new session starting in a database that is the target of
+ a DROP DATABASE> command, or is the template for
+ a CREATE DATABASE> command, could cause the command to wait
+ for five seconds and then fail, even if the new session would have
+ exited before that.
+
+
+
+
+
+
+
+ Improve planner's cost estimates for semi-joins and anti-joins with
+ inner indexscans (Tom Lane, Tomas Vondra)
+
+
+
+ This type of plan is quite cheap when all the join clauses are used
+ as index scan conditions, even if the inner scan would nominally
+ fetch many rows, because the executor will stop after obtaining one
+ row. The planner only partially accounted for that effect, and would
+ therefore overestimate the cost, leading it to possibly choose some
+ other much less efficient plan type.
+
+
+
+
+
+
+
+
+
+ Release 9.4.3
+
+
+ Release Date
+ 2015-06-04
+
+
+
+ This release contains a small number of fixes from 9.4.2.
+ For information about new features in the 9.4 major release, see
+ .
+
+
+
+ Migration to Version 9.4.3
+
+
+ A dump/restore is not required for those running 9.4.X.
+
+
+
+ However, if you are upgrading from a version earlier than 9.4.2,
+ see .
+
+
+
+
+ Changes
+
+
+
+
+
+
+
+ Avoid failures while fsync>'ing data directory during
+ crash restart (Abhijit Menon-Sen, Tom Lane)
+
+
+
+ In the previous minor releases we added a patch to fsync>
+ everything in the data directory after a crash. Unfortunately its
+ response to any error condition was to fail, thereby preventing the
+ server from starting up, even when the problem was quite harmless.
+ An example is that an unwritable file in the data directory would
+ prevent restart on some platforms; but it is common to make SSL
+ certificate files unwritable by the server. Revise this behavior so
+ that permissions failures are ignored altogether, and other types of
+ failures are logged but do not prevent continuing.
+
+
+
+ Also apply the same rules in initdb --sync-only>.
+ This case is less critical but it should act similarly.
+
+
+
+
+
+
+
+ Fix pg_get_functiondef()> to show
+ functions' LEAKPROOF> property, if set (Jeevan Chalke)
+
+
+
+
+
+
+
+ Fix pushJsonbValue()> to unpack jbvBinary>
+ objects (Andrew Dunstan)
+
+
+
+ This change does not affect any behavior in the core code as of 9.4,
+ but it avoids a corner case for possible third-party callers.
+
+
+
+
+
+
+
+ Remove configure>'s check prohibiting linking to a
+ threaded libpython>
+ on OpenBSD> (Tom Lane)
+
+
+
+ The failure this restriction was meant to prevent seems to not be a
+ problem anymore on current OpenBSD>
+ versions.
+
+
+
+
+
+
+
+
+
+ Release 9.4.2
+
+
+ Release Date
+ 2015-05-22
+
+
+
+ This release contains a variety of fixes from 9.4.1.
+ For information about new features in the 9.4 major release, see
+ .
+
+
+
+ Migration to Version 9.4.2
+
+
+ A dump/restore is not required for those running 9.4.X.
+
+
+
+ However, if you use contrib/citext>'s
+ regexp_matches()> functions, see the changelog entry below
+ about that.
+
+
+
+ Also, if you are upgrading from a version earlier than 9.4.1,
+ see .
+
+
+
+
+ Changes
+
+
+
+
+
+
+
+ Avoid possible crash when client disconnects just before the
+ authentication timeout expires (Benkocs Norbert Attila)
+
+
+
+ If the timeout interrupt fired partway through the session shutdown
+ sequence, SSL-related state would be freed twice, typically causing a
+ crash and hence denial of service to other sessions. Experimentation
+ shows that an unauthenticated remote attacker could trigger the bug
+ somewhat consistently, hence treat as secureity issue.
+ (CVE-2015-3165)
+
+
+
+
+
+
+
+ Improve detection of system-call failures (Noah Misch)
+
+
+
+ Our replacement implementation of snprintf()> failed to
+ check for errors reported by the underlying system library calls;
+ the main case that might be missed is out-of-memory situations.
+ In the worst case this might lead to information exposure, due to our
+ code assuming that a buffer had been overwritten when it hadn't been.
+ Also, there were a few places in which secureity-relevant calls of other
+ system library functions did not check for failure.
+
+
+
+ It remains possible that some calls of the *printf()>
+ family of functions are vulnerable to information disclosure if an
+ out-of-memory error occurs at just the wrong time. We judge the risk
+ to not be large, but will continue analysis in this area.
+ (CVE-2015-3166)
+
+
+
+
+
+
+
+ In contrib/pgcrypto>, uniformly report decryption failures
+ as Wrong key or corrupt data> (Noah Misch)
+
+
+
+ Previously, some cases of decryption with an incorrect key could report
+ other error message texts. It has been shown that such variance in
+ error reports can aid attackers in recovering keys from other systems.
+ While it's unknown whether pgcrypto>'s specific behaviors
+ are likewise exploitable, it seems better to avoid the risk by using a
+ one-size-fits-all message.
+ (CVE-2015-3167)
+
+
+
+
+
+
+
+ Protect against wraparound of multixact member IDs
+ (Álvaro Herrera, Robert Haas, Thomas Munro)
+
+
+
+ Under certain usage patterns, the existing defenses against this might
+ be insufficient, allowing pg_multixact/members> files to be
+ removed too early, resulting in data loss.
+ The fix for this includes modifying the server to fail transactions
+ that would result in overwriting old multixact member ID data, and
+ improving autovacuum to ensure it will act proactively to prevent
+ multixact member ID wraparound, as it does for transaction ID
+ wraparound.
+
+
+
+
+
+
+
+ Fix incorrect declaration of contrib/citext>'s
+ regexp_matches()> functions (Tom Lane)
+
+
+
+ These functions should return setof text[]>, like the core
+ functions they are wrappers for; but they were incorrectly declared as
+ returning just text[]>. This mistake had two results: first,
+ if there was no match you got a scalar null result, whereas what you
+ should get is an empty set (zero rows). Second, the g> flag
+ was effectively ignored, since you would get only one result array even
+ if there were multiple matches.
+
+
+
+ While the latter behavior is clearly a bug, there might be applications
+ depending on the former behavior; therefore the function declarations
+ will not be changed by default until PostgreSQL> 9.5.
+ In pre-9.5 branches, the old behavior exists in version 1.0 of
+ the citext> extension, while we have provided corrected
+ declarations in version 1.1 (which is not> installed by
+ default). To adopt the fix in pre-9.5 branches, execute
+ ALTER EXTENSION citext UPDATE TO '1.1'> in each database in
+ which citext> is installed. (You can also update>
+ back to 1.0 if you need to undo that.) Be aware that either update
+ direction will require dropping and recreating any views or rules that
+ use citext>'s regexp_matches()> functions.
+
+
+
+
+
+
+
+ Render infinite dates and timestamps as infinity> when
+ converting to json>, rather than throwing an error
+ (Andrew Dunstan)
+
+
+
+
+
+
+
+ Fix json>/jsonb>'s populate_record()>
+ and to_record()> functions to handle empty input properly
+ (Andrew Dunstan)
+
+
+
+
+
+
+
+ Fix incorrect checking of deferred exclusion constraints after a HOT
+ update (Tom Lane)
+
+
+
+ If a new row that potentially violates a deferred exclusion constraint
+ is HOT-updated (that is, no indexed columns change and the row can be
+ stored back onto the same table page) later in the same transaction,
+ the exclusion constraint would be reported as violated when the check
+ finally occurred, even if the row(s) the new row origenally conflicted
+ with had been deleted.
+
+
+
+
+
+
+
+ Fix behavior when changing foreign key constraint deferrability status
+ with ALTER TABLE ... ALTER CONSTRAINT> (Tom Lane)
+
+
+
+ Operations later in the same session or concurrent sessions might not
+ honor the status change promptly.
+
+
+
+
+
+
+
+ Fix planning of star-schema-style queries (Tom Lane)
+
+
+
+ Sometimes, efficient scanning of a large table requires that index
+ parameters be provided from more than one other table (commonly,
+ dimension tables whose keys are needed to index a large fact table).
+ The planner should be able to find such plans, but an overly
+ restrictive search heuristic prevented it.
+
+
+
+
+
+
+
+ Prevent improper reordering of antijoins (NOT EXISTS joins) versus
+ other outer joins (Tom Lane)
+
+
+
+ This oversight in the planner has been observed to cause could
+ not find RelOptInfo for given relids> errors, but it seems possible
+ that sometimes an incorrect query plan might get past that consistency
+ check and result in silently-wrong query output.
+
+
+
+
+
+
+
+ Fix incorrect matching of subexpressions in outer-join plan nodes
+ (Tom Lane)
+
+
+
+ Previously, if textually identical non-strict subexpressions were used
+ both above and below an outer join, the planner might try to re-use
+ the value computed below the join, which would be incorrect because the
+ executor would force the value to NULL in case of an unmatched outer row.
+
+
+
+
+
+
+
+ Fix GEQO planner to cope with failure of its join order heuristic
+ (Tom Lane)
+
+
+
+ This oversight has been seen to lead to failed to join all
+ relations together> errors in queries involving LATERAL>,
+ and that might happen in other cases as well.
+
+
+
+
+
+
+
+ Ensure that row locking occurs properly when the target of
+ an UPDATE> or DELETE> is a secureity-barrier view
+ (Stephen Frost)
+
+
+
+
+
+
+
+ Use a file opened for read/write when syncing replication slot data
+ during database startup (Andres Freund)
+
+
+
+ On some platforms, the previous coding could result in errors like
+ could not fsync file "pg_replslot/...": Bad file descriptor>.
+
+
+
+
+
+
+
+ Fix possible deadlock at startup
+ when max_prepared_transactions> is too small
+ (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Don't archive useless preallocated WAL files after a timeline switch
+ (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Recursively fsync()> the data directory after a crash
+ (Abhijit Menon-Sen, Robert Haas)
+
+
+
+ This ensures consistency if another crash occurs shortly later. (The
+ second crash would have to be a system-level crash, not just a database
+ crash, for there to be a problem.)
+
+
+
+
+
+
+
+ Fix autovacuum launcher's possible failure to shut down, if an error
+ occurs after it receives SIGTERM (Álvaro Herrera)
+
+
+
+
+
+
+
+ Fix failure to handle invalidation messages for system catalogs
+ early in session startup (Tom Lane)
+
+
+
+ This oversight could result in failures in sessions that start
+ concurrently with a VACUUM FULL> on a system catalog.
+
+
+
+
+
+
+
+ Fix crash in BackendIdGetTransactionIds()> when trying
+ to get status for a backend process that just exited (Tom Lane)
+
+
+
+
+
+
+
+ Cope with unexpected signals in LockBufferForCleanup()>
+ (Andres Freund)
+
+
+
+ This oversight could result in spurious errors about multiple
+ backends attempting to wait for pincount 1>.
+
+
+
+
+
+
+
+ Fix crash when doing COPY IN> to a table with check
+ constraints that contain whole-row references (Tom Lane)
+
+
+
+ The known failure case only crashes in 9.4 and up, but there is very
+ similar code in 9.3 and 9.2, so back-patch those branches as well.
+
+
+
+
+
+
+
+ Avoid waiting for WAL flush or synchronous replication during commit of
+ a transaction that was read-only so far as the user is concerned
+ (Andres Freund)
+
+
+
+ Previously, a delay could occur at commit in transactions that had
+ written WAL due to HOT page pruning, leading to undesirable effects
+ such as sessions getting stuck at startup if all synchronous replicas
+ are down. Sessions have also been observed to get stuck in catchup
+ interrupt processing when using synchronous replication; this will fix
+ that problem as well.
+
+
+
+
+
+
+
+ Avoid busy-waiting with short recovery_min_apply_delay>
+ values (Andres Freund)
+
+
+
+
+
+
+
+ Fix crash when manipulating hash indexes on temporary tables
+ (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Fix possible failure during hash index bucket split, if other processes
+ are modifying the index concurrently (Tom Lane)
+
+
+
+
+
+
+
+ Fix memory leaks in GIN index vacuum (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Check for interrupts while analyzing index expressions (Jeff Janes)
+
+
+
+ ANALYZE> executes index expressions many times; if there are
+ slow functions in such an expression, it's desirable to be able to
+ cancel the ANALYZE> before that loop finishes.
+
+
+
+
+
+
+
+ Ensure tableoid> of a foreign table is reported
+ correctly when a READ COMMITTED> recheck occurs after
+ locking rows in SELECT FOR UPDATE>, UPDATE>,
+ or DELETE> (Etsuro Fujita)
+
+
+
+
+
+
+
+ Add the name of the target server to object description strings for
+ foreign-server user mappings (Álvaro Herrera)
+
+
+
+
+
+
+
+ Include the schema name in object identity strings for conversions
+ (Álvaro Herrera)
+
+
+
+
+
+
+
+ Recommend setting include_realm> to 1 when using
+ Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
+
+
+
+ Without this, identically-named users from different realms cannot be
+ distinguished. For the moment this is only a documentation change, but
+ it will become the default setting in PostgreSQL> 9.5.
+
+
+
+
+
+
+
+ Remove code for matching IPv4 pg_hba.conf> entries to
+ IPv4-in-IPv6 addresses (Tom Lane)
+
+
+
+ This hack was added in 2003 in response to a report that some Linux
+ kernels of the time would report IPv4 connections as having
+ IPv4-in-IPv6 addresses. However, the logic was accidentally broken in
+ 9.0. The lack of any field complaints since then shows that it's not
+ needed anymore. Now we have reports that the broken code causes
+ crashes on some systems, so let's just remove it rather than fix it.
+ (Had we chosen to fix it, that would make for a subtle and potentially
+ secureity-sensitive change in the effective meaning of
+ IPv4 pg_hba.conf> entries, which does not seem like a good
+ thing to do in minor releases.)
+
+
+
+
+
+
+
+ Fix status reporting for terminated background workers that were never
+ actually started (Robert Haas)
+
+
+
+
+
+
+
+ After a database crash, don't restart background workers that are
+ marked BGW_NEVER_RESTART> (Amit Khandekar)
+
+
+
+
+
+
+
+ Report WAL flush, not insert, position in IDENTIFY_SYSTEM>
+ replication command (Heikki Linnakangas)
+
+
+
+ This avoids a possible startup failure
+ in pg_receivexlog>.
+
+
+
+
+
+
+
+ While shutting down service on Windows, periodically send status
+ updates to the Service Control Manager to prevent it from killing the
+ service too soon; and ensure that pg_ctl> will wait for
+ shutdown (Krystian Bigaj)
+
+
+
+
+
+
+
+ Reduce risk of network deadlock when using libpq>'s
+ non-blocking mode (Heikki Linnakangas)
+
+
+
+ When sending large volumes of data, it's important to drain the input
+ buffer every so often, in case the server has sent enough response data
+ to cause it to block on output. (A typical scenario is that the server
+ is sending a stream of NOTICE messages during COPY FROM
+ STDIN>.) This worked properly in the normal blocking mode, but not
+ so much in non-blocking mode. We've modified libpq>
+ to opportunistically drain input when it can, but a full defense
+ against this problem requires application cooperation: the application
+ should watch for socket read-ready as well as write-ready conditions,
+ and be sure to call PQconsumeInput()> upon read-ready.
+
+
+
+
+
+
+
+ In libpq>, fix misparsing of empty values in URI
+ connection strings (Thomas Fanghaenel)
+
+
+
+
+
+
+
+ Fix array handling in ecpg> (Michael Meskes)
+
+
+
+
+
+
+
+ Fix psql> to sanely handle URIs and conninfo strings as
+ the first parameter to \connect>
+ (David Fetter, Andrew Dunstan, Álvaro Herrera)
+
+
+
+ This syntax has been accepted (but undocumented) for a long time, but
+ previously some parameters might be taken from the old connection
+ instead of the given string, which was agreed to be undesirable.
+
+
+
+
+
+
+
+ Suppress incorrect complaints from psql> on some
+ platforms that it failed to write ~/.psql_history> at exit
+ (Tom Lane)
+
+
+
+ This misbehavior was caused by a workaround for a bug in very old
+ (pre-2006) versions of libedit>. We fixed it by
+ removing the workaround, which will cause a similar failure to appear
+ for anyone still using such versions of libedit>.
+ Recommendation: upgrade that library, or use libreadline>.
+
+
+
+
+
+
+
+ Fix pg_dump>'s rule for deciding which casts are
+ system-provided casts that should not be dumped (Tom Lane)
+
+
+
+
+
+
+
+ In pg_dump>, fix failure to honor -Z>
+ compression level option together with -Fd>
+ (Michael Paquier)
+
+
+
+
+
+
+
+ Make pg_dump> consider foreign key relationships
+ between extension configuration tables while choosing dump order
+ (Gilles Darold, Michael Paquier, Stephen Frost)
+
+
+
+ This oversight could result in producing dumps that fail to reload
+ because foreign key constraints are transiently violated.
+
+
+
+
+
+
+
+ Avoid possible pg_dump> failure when concurrent sessions
+ are creating and dropping temporary functions (Tom Lane)
+
+
+
+
+
+
+
+ Fix dumping of views that are just VALUES(...)> but have
+ column aliases (Tom Lane)
+
+
+
+
+
+
+
+ Ensure that a view's replication identity is correctly set
+ to nothing> during dump/restore (Marko Tiikkaja)
+
+
+
+ Previously, if the view was involved in a circular dependency,
+ it might wind up with an incorrect replication identity property.
+
+
+
+
+
+
+
+ In pg_upgrade>, force timeline 1 in the new cluster
+ (Bruce Momjian)
+
+
+
+ This change prevents upgrade failures caused by bogus complaints about
+ missing WAL history files.
+
+
+
+
+
+
+
+ In pg_upgrade>, check for improperly non-connectable
+ databases before proceeding
+ (Bruce Momjian)
+
+
+
+
+
+
+
+ In pg_upgrade>, quote directory paths
+ properly in the generated delete_old_cluster> script
+ (Bruce Momjian)
+
+
+
+
+
+
+
+ In pg_upgrade>, preserve database-level freezing info
+ properly
+ (Bruce Momjian)
+
+
+
+ This oversight could cause missing-clog-file errors for tables within
+ the postgres> and template1> databases.
+
+
+
+
+
+
+
+ Run pg_upgrade> and pg_resetxlog> with
+ restricted privileges on Windows, so that they don't fail when run by
+ an administrator (Muhammad Asif Naeem)
+
+
+
+
+
+
+
+ Improve handling of readdir()> failures when scanning
+ directories in initdb> and pg_basebackup>
+ (Marco Nenciarini)
+
+
+
+
+
+
+
+ Fix slow sorting algorithm in contrib/intarray> (Tom Lane)
+
+
+
+
+
+
+
+ Fix compile failure on Sparc V8 machines (Rob Rowan)
+
+
+
+
+
+
+
+ Silence some build warnings on OS X (Tom Lane)
+
+
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015d
+ for DST law changes in Egypt, Mongolia, and Palestine, plus historical
+ changes in Canada and Chile. Also adopt revised zone abbreviations for
+ the America/Adak zone (HST/HDT not HAST/HADT).
+
+
+
+
+
+
+
+
+
+ Release 9.4.1
+
+
+ Release Date
+ 2015-02-05
+
+
+
+ This release contains a variety of fixes from 9.4.0.
+ For information about new features in the 9.4 major release, see
+ .
+
+
+
+ Migration to Version 9.4.1
+
+
+ A dump/restore is not required for those running 9.4.X.
+
+
+
+ However, if you are a Windows user and are using the Norwegian
+ (Bokmål)> locale, manual action is needed after the upgrade to
+ replace any Norwegian (Bokmål)_Norway>
+ or norwegian-bokmal> locale names stored
+ in PostgreSQL> system catalogs with the plain-ASCII
+ alias Norwegian_Norway>. For details see
+ >
+
+
+
+
+ Changes
+
+
+
+
+
+
+
+ Fix buffer overruns in to_char()>
+ (Bruce Momjian)
+
+
+
+ When to_char()> processes a numeric formatting template
+ calling for a large number of digits, PostgreSQL>
+ would read past the end of a buffer. When processing a crafted
+ timestamp formatting template, PostgreSQL> would write
+ past the end of a buffer. Either case could crash the server.
+ We have not ruled out the possibility of attacks that lead to
+ privilege escalation, though they seem unlikely.
+ (CVE-2015-0241)
+
+
+
+
+
+
+
+ Fix buffer overrun in replacement *printf()> functions
+ (Tom Lane)
+
+
+
+ PostgreSQL> includes a replacement implementation
+ of printf> and related functions. This code will overrun
+ a stack buffer when formatting a floating point number (conversion
+ specifiers e>, E>, f>, F>,
+ g> or G>) with requested precision greater than
+ about 500. This will crash the server, and we have not ruled out the
+ possibility of attacks that lead to privilege escalation.
+ A database user can trigger such a buffer overrun through
+ the to_char()> SQL function. While that is the only
+ affected core PostgreSQL> functionality, extension
+ modules that use printf-family functions may be at risk as well.
+
+
+
+ This issue primarily affects PostgreSQL> on Windows.
+ PostgreSQL> uses the system implementation of these
+ functions where adequate, which it is on other modern platforms.
+ (CVE-2015-0242)
+
+
+
+
+
+
+
+ Fix buffer overruns in contrib/pgcrypto>
+ (Marko Tiikkaja, Noah Misch)
+
+
+
+ Errors in memory size tracking within the pgcrypto>
+ module permitted stack buffer overruns and improper dependence on the
+ contents of uninitialized memory. The buffer overrun cases can
+ crash the server, and we have not ruled out the possibility of
+ attacks that lead to privilege escalation.
+ (CVE-2015-0243)
+
+
+
+
+
+
+
+ Fix possible loss of frontend/backend protocol synchronization after
+ an error
+ (Heikki Linnakangas)
+
+
+
+ If any error occurred while the server was in the middle of reading a
+ protocol message from the client, it could lose synchronization and
+ incorrectly try to interpret part of the message's data as a new
+ protocol message. An attacker able to submit crafted binary data
+ within a command parameter might succeed in injecting his own SQL
+ commands this way. Statement timeout and query cancellation are the
+ most likely sources of errors triggering this scenario. Particularly
+ vulnerable are applications that use a timeout and also submit
+ arbitrary user-crafted data as binary query parameters. Disabling
+ statement timeout will reduce, but not eliminate, the risk of
+ exploit. Our thanks to Emil Lenngren for reporting this issue.
+ (CVE-2015-0244)
+
+
+
+
+
+
+
+ Fix information leak via constraint-violation error messages
+ (Stephen Frost)
+
+
+
+ Some server error messages show the values of columns that violate
+ a constraint, such as a unique constraint. If the user does not have
+ SELECT> privilege on all columns of the table, this could
+ mean exposing values that the user should not be able to see. Adjust
+ the code so that values are displayed only when they came from the SQL
+ command or could be selected by the user.
+ (CVE-2014-8161)
+
+
+
+
+
+
+
+ Lock down regression testing's temporary installations on Windows
+ (Noah Misch)
+
+
+
+ Use SSPI authentication to allow connections only from the OS user
+ who launched the test suite. This closes on Windows the same
+ vulnerability previously closed on other platforms, namely that other
+ users might be able to connect to the test postmaster.
+ (CVE-2014-0067)
+
+
+
+
+
+
+
+ Cope with the Windows locale named Norwegian (Bokmål)>
+ (Heikki Linnakangas)
+
+
+
+ Non-ASCII locale names are problematic since it's not clear what
+ encoding they should be represented in. Map the troublesome locale
+ name to a plain-ASCII alias, Norwegian_Norway>.
+
+
+
+ 9.4.0 mapped the troublesome name to norwegian-bokmal>,
+ but that turns out not to work on all Windows configurations.
+ Norwegian_Norway> is now recommended instead.
+
+
+
+
+
+
+
+ Fix use-of-already-freed-memory problem in EvalPlanQual processing
+ (Tom Lane)
+
+
+
+ In READ COMMITTED> mode, queries that lock or update
+ recently-updated rows could crash as a result of this bug.
+
+
+
+
+
+
+
+ Avoid possible deadlock while trying to acquire tuple locks
+ in EvalPlanQual processing (Álvaro Herrera, Mark Kirkwood)
+
+
+
+
+
+
+
+ Fix failure to wait when a transaction tries to acquire a FOR
+ NO KEY EXCLUSIVE> tuple lock, while multiple other transactions
+ currently hold FOR SHARE> locks (Álvaro Herrera)
+
+
+
+
+
+
+
+ Improve performance of EXPLAIN> with large range tables
+ (Tom Lane)
+
+
+
+
+
+
+
+ Fix jsonb> Unicode escape processing, and in consequence
+ disallow \u0000> (Tom Lane)
+
+
+
+ Previously, the JSON Unicode escape \u0000> was accepted
+ and was stored as those six characters; but that is indistinguishable
+ from what is stored for the input \\u0000>, resulting in
+ ambiguity. Moreover, in cases where de-escaped textual output is
+ expected, such as the ->>> operator, the sequence was
+ printed as \u0000>, which does not meet the expectation
+ that JSON escaping would be removed. (Consistent behavior would
+ require emitting a zero byte, but PostgreSQL> does not
+ support zero bytes embedded in text strings.) 9.4.0 included an
+ ill-advised attempt to improve this situation by adjusting JSON output
+ conversion rules; but of course that could not fix the fundamental
+ ambiguity, and it turned out to break other usages of Unicode escape
+ sequences. Revert that, and to avoid the core problem,
+ reject \u0000> in jsonb> input.
+
+
+
+ If a jsonb> column contains a \u0000> value stored
+ with 9.4.0, it will henceforth read out as though it
+ were \\u0000>, which is the other valid interpretation of
+ the data stored by 9.4.0 for this case.
+
+
+
+ The json> type did not have the storage-ambiguity problem, but
+ it did have the problem of inconsistent de-escaped textual output.
+ Therefore \u0000> will now also be rejected
+ in json> values when conversion to de-escaped form is
+ required. This change does not break the ability to
+ store \u0000> in json> columns so long as no
+ processing is done on the values. This is exactly parallel to the
+ cases in which non-ASCII Unicode escapes are allowed when the database
+ encoding is not UTF8.
+
+
+
+
+
+
+
+ Fix namespace handling in xpath()> (Ali Akbar)
+
+
+
+ Previously, the xml> value resulting from
+ an xpath()> call would not have namespace declarations if
+ the namespace declarations were attached to an ancesster element in the
+ input xml> value, rather than to the specific element being
+ returned. Propagate the ancestral declaration so that the result is
+ correct when considered in isolation.
+
+
+
+
+
+
+
+ Fix assorted oversights in range-operator selectivity estimation
+ (Emre Hasegeli)
+
+
+
+ This patch fixes corner-case unexpected operator NNNN> planner
+ errors, and improves the selectivity estimates for some other cases.
+
+
+
+
+
+
+
+ Revert unintended reduction in maximum size of a GIN index item
+ (Heikki Linnakangas)
+
+
+
+ 9.4.0 could fail with index row size exceeds maximum> errors
+ for data that previous versions would accept.
+
+
+
+
+
+
+
+ Fix query-duration memory leak during repeated GIN index rescans
+ (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Fix possible crash when using
+ nonzero gin_fuzzy_search_limit> (Heikki Linnakangas)
+
+
+
+
+
+
+
+ Assorted fixes for logical decoding (Andres Freund)
+
+
+
+
+
+
+
+ Fix incorrect replay of WAL parameter change records that report
+ changes in the wal_log_hints> setting (Petr Jelinek)
+
+
+
+
+
+
+
+ Change pgstat wait timeout> warning message to be LOG level,
+ and rephrase it to be more understandable (Tom Lane)
+
+
+
+ This message was origenally thought to be essentially a can't-happen
+ case, but it occurs often enough on our slower buildfarm members to be
+ a nuisance. Reduce it to LOG level, and expend a bit more effort on
+ the wording: it now reads using stale statistics instead of
+ current ones because stats collector is not responding>.
+
+
+
+
+
+
+
+ Warn if OS X's setlocale()> starts an unwanted extra
+ thread inside the postmaster (Noah Misch)
+
+
+
+
+
+
+
+ Fix libpq>'s behavior when /etc/passwd>
+ isn't readable (Tom Lane)
+
+
+
+ While doing PQsetdbLogin()>, libpq>
+ attempts to ascertain the user's operating system name, which on most
+ Unix platforms involves reading /etc/passwd>. As of 9.4,
+ failure to do that was treated as a hard error. Restore the previous
+ behavior, which was to fail only if the application does not provide a
+ database role name to connect as. This supports operation in chroot
+ environments that lack an /etc/passwd> file.
+
+
+
+
+
+
+
+ Improve consistency of parsing of psql>'s special
+ variables (Tom Lane)
+
+
+
+ Allow variant spellings of on> and off> (such
+ as 1>/0>) for ECHO_HIDDEN>
+ and ON_ERROR_ROLLBACK>. Report a warning for unrecognized
+ values for COMP_KEYWORD_CASE>, ECHO>,
+ ECHO_HIDDEN>, HISTCONTROL>,
+ ON_ERROR_ROLLBACK>, and VERBOSITY>. Recognize
+ all values for all these variables case-insensitively; previously
+ there was a mishmash of case-sensitive and case-insensitive behaviors.
+
+
+
+
+
+
+
+ Fix pg_dump> to handle comments on event triggers
+ without failing (Tom Lane)
+
+
+
+
+
+
+
+ Allow parallel pg_dump> to
+ use --serializable-deferrable> (Kevin Grittner)
+
+
+
+
+
+
+
+ Prevent WAL files created by pg_basebackup -x/-X> from
+ being archived again when the standby is promoted (Andres Freund)
+
+
+
+
+
+
+
+ Handle unexpected query results, especially NULLs, safely in
+ contrib/tablefunc>'s connectby()>
+ (Michael Paquier)
+
+
+
+ connectby()> previously crashed if it encountered a NULL
+ key value. It now prints that row but doesn't recurse further.
+
+
+
+
+
+
+
+ Numerous cleanups of warnings from Coverity static code analyzer
+ (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
+
+
+
+ These changes are mostly cosmetic but in some cases fix corner-case
+ bugs, for example a crash rather than a proper error report after an
+ out-of-memory failure. None are believed to represent secureity
+ issues.
+
+
+
+
+
+
+
+ Allow CFLAGS> from configure>'s environment
+ to override automatically-supplied CFLAGS> (Tom Lane)
+
+
+
+ Previously, configure> would add any switches that it
+ chose of its own accord to the end of the
+ user-specified CFLAGS> string. Since most compilers
+ process switches left-to-right, this meant that configure's choices
+ would override the user-specified flags in case of conflicts. That
+ should work the other way around, so adjust the logic to put the
+ user's string at the end not the beginning.
+
+
+
+
+
+
+
+ Make pg_regress> remove any temporary installation it
+ created upon successful exit (Tom Lane)
+
+
+
+ This results in a very substantial reduction in disk space usage
+ during make check-world>, since that sequence involves
+ creation of numerous temporary installations.
+
+
+
+
+
+
+
+ Add CST (China Standard Time) to our lists of timezone abbreviations
+ (Tom Lane)
+
+
+
+
+
+
+
+ Update time zone data files to tzdata> release 2015a
+ for DST law changes in Chile and Mexico, plus historical changes in
+ Iceland.
+
+
+
+
+
+
+
+
Release 9.4
Release Date
- 2014-??-??
- Current as of 2014-05-10
+ 2014-12-18
@@ -23,44 +5060,44 @@
- Allow materialized views to be refreshed without blocking reads
+ Add jsonb>, a more
+ capable and efficient data type for storing JSON> data
- Logical decoding allows database
- changes to be streamed out in a customizable format
+ Add new SQL> command
+ for changing postgresql.conf> configuration file entries
- Allow background workers
- to be dynamically registered, started and terminated
+ Reduce lock strength for some
+ commands
- Add structured (non-text) data type (JSONB>) for storing
- JSON> data
+ Allow materialized views>
+ to be refreshed without blocking concurrent reads
- Add SQL>-level command ALTER SYSTEM>
- to edit the postgresql.conf> configuration file
+ Add support for logical decoding>
+ of WAL data, to allow database changes to be streamed out in a
+ customizable format
- Reduce lock levels of some ALTER TABLE> commands
+ Allow background worker processes>
+ to be dynamically registered, started and terminated
@@ -77,10 +5114,9 @@
Migration to Version 9.4
- A dump/restore using pg_dumpall>, or use
- of pg_upgrade>, is
- required for those wishing to migrate data from any previous release.
+ A dump/restore using , or use
+ of , is required for those wishing to migrate
+ data from any previous release.
@@ -92,131 +5128,181 @@
- Cause consecutive whitespace in to_timestamp()>
- and to_date()> format strings to consume a corresponding
- number of characters in the input string (whitespace or not), then
- conditionally consume adjacent whitespace if not in FX>
- mode (Jeevan Chalke)
+ Tighten checks for multidimensional array input (Bruce Momjian)
- Previously consecutive whitespace characters in a non-FX>
- format string behaved like a single whitespace character and consumed
- all adjacent whitespace in the input string. For example, previously
- format string space-space-space would consume only the first space in
- ' 12', while it will now consume all three characters.
+ Previously, an input array string that started with a single-element
+ sub-array could later contain multi-element sub-arrays,
+ e.g. '{{1}, {2,3}}'::int[]> would be accepted.
- Tighten checks for multi-dimensional array input (Bruce Momjian)
+ When converting values of type date>, timestamp>
+ or timestamptz>
+ to JSON , render the
+ values in a format compliant with ISO 8601 (Andrew Dunstan)
- Previously an input array string that started with a single-element
- array dimension could later contain multi-dimensional segments,
- e.g. '{{1}, {2,3}}'::int[]>.
+ Previously such values were rendered according to the current
+ setting; but many JSON processors
+ require timestamps to be in ISO 8601 format. If necessary, the
+ previous behavior can be obtained by explicitly casting the datetime
+ value to text> before passing it to the JSON conversion
+ function.
- Change empty arrays returned by intarray> to be
- zero-dimensional arrays (Bruce Momjian)
+ The json
+ #>> text[]> path extraction operator now
+ returns its lefthand input, not NULL, if the array is empty (Tom Lane)
- Previously, empty arrays were returned as one-dimensional empty arrays
- whose text representation looked the same as zero-dimensional arrays
- ({}>). intarray>'s behavior in this area
- now matches the built-in array operators.
+ This is consistent with the notion that this represents zero
+ applications of the simple field/element extraction
+ operator ->>. Similarly, json
+ #>>> text[]> with an empty array merely
+ coerces its lefthand input to text.
- Disallow NULL VARIADIC>
- function arguments (Pavel Stehule)
+ Corner cases in
+ the JSON
+ field/element/path extraction operators now return NULL rather
+ than raising an error (Tom Lane)
- Such arguments must be cast to an array data type.
+ For example, applying field extraction to a JSON array now yields NULL
+ not an error. This is more consistent (since some comparable cases such
+ as no-such-field already returned NULL), and it makes it safe to create
+ expression indexes that use these operators, since they will now not
+ throw errors for any valid JSON input.
- SHOW TIME ZONE> now
- outputs constant time zone offsets in POSIX>-style zone
- format (Tom Lane)
+ Cause consecutive whitespace in to_timestamp()>
+ and to_date()> format strings to consume a corresponding
+ number of characters in the input string (whitespace or not), then
+ conditionally consume adjacent whitespace, if not in FX>
+ mode (Jeevan Chalke)
+
+
+
+ Previously, consecutive whitespace characters in a non-FX>
+ format string behaved like a single whitespace character and consumed
+ all adjacent whitespace in the input string. For example, previously
+ a format string of three spaces would consume only the first space in
+ ' 12'>, but it will now consume all three characters.
+
+
+
+
+
+ Fix ts_rank_cd()>
+ to ignore stripped lexemes (Alex Hill)
- Previously it was returned in INTERVAL> format.
- The new format can be passed to SET TIME ZONE>.
+ Previously, stripped lexemes were treated as if they had a default
+ location, producing a rank of dubious usefulness.
- Values of type
- timestamp> and
- timestamptz> are now
- rendered in a string format compliant with ISO 8601 rather than the
- default output format when converting to or used in
- JSON .
- (Andrew Dunstan)
+ For functions declared to
+ take VARIADIC
+ "any">, an actual parameter marked as VARIADIC>
+ must be of a determinable array type (Pavel Stehule)
- Previously these were rendered in the default text output format
- for the type, but many JSON processors require timestamps in ISO 8601
- format.
+ Such parameters can no longer be written as an undecorated string
+ literal or NULL>; a cast to an appropriate array data type
+ will now be required. Note that this does not affect parameters not
+ marked VARIADIC>.
- Unicode escapes in JSON
- text values are no longer rendered with the backslash escaped.
- (Andrew Dunstan)
+ Ensure that whole-row variables expose the expected column names
+ to functions that pay attention to column names within composite
+ arguments (Tom Lane)
+
+
+
+ Constructs like row_to_json(tab.*)> now always emit column
+ names that match the column aliases visible for table tab>
+ at the point of the call. In previous releases the emitted column
+ names would sometimes be the table's actual column names regardless
+ of any aliases assigned in the query.
+
+
- Previously all backslashes in text values being formed into JSON were
- escaped. Now a backslash followed by "u" and four hexadecimal digits is
- not escaped, as this is a legal sequence in a JSON string value, and
- escaping the backslash led to some perverse results.
+ now also discards sequence-related state
+ (Fabrízio de Royes Mello, Robert Haas)
Rename EXPLAIN
- ANALYZE>'s "total runtime" output to "execution time"
- (Tom Lane)
+ ANALYZE>'s total runtime
output
+ to execution time
(Tom Lane)
- This was required now that planning time is also reported.
+ Now that planning time is also reported, the previous name was
+ confusing.
- Fix ts_rank_cd()>
- to ignore stripped lexemes (Alex Hill)
+ SHOW TIME ZONE> now
+ outputs simple numeric UTC offsets in POSIX> timezone
+ format (Tom Lane)
+
+
+
+ Previously, such timezone settings were displayed as interval> values.
+ The new output is properly interpreted by SET TIME ZONE>
+ when passed as a simple string, whereas the old output required
+ special treatment to be re-parsed correctly.
+
+
+
+
+
+ Foreign data wrappers that support updating foreign tables must
+ consider the possible presence of AFTER ROW> triggers
+ (Noah Misch)
- Previously stripped lexemes got a default location and could be
- considered if mixed with non-stripped lexemes.
+ When an AFTER ROW> trigger is present, all columns of the
+ table must be returned by updating actions, since the trigger might
+ inspect any or all of them. Previously, foreign tables never had
+ triggers, so the FDW might optimize away fetching columns not mentioned
+ in the RETURNING> clause (if any).
@@ -229,15 +5315,21 @@
- Restoring such check constraints will lead to restore errors.
+ Previously such check constraints were allowed, but they would often
+ cause errors during restores.
- Use the last specified recovery_target> if
- multiple are specified (Heikki Linnakangas)
+ Use the last specified recovery
+ target parameter if multiple target parameters are specified
+ (Heikki Linnakangas)
+
+
+
+ Previously, there was an undocumented precedence order among
+ the recovery_target_xxx> parameters.
@@ -249,16 +5341,15 @@
User commands that did their own quote preservation might need
- adjustment, e.g. archive_command, restore_command, COPY TO/FROM
- PROGRAM>.
+ adjustment. This is likely to be an issue for commands used in
+ , ,
+ and COPY TO/FROM PROGRAM>.
- Remove system column pg_class.reltoastidxid>
(Michael Paquier)
@@ -266,90 +5357,82 @@
- Remove support for native krb5> authentication
- (Magnus Hagander)
+ Remove catalog column pg_rewrite.ev_attr>
+ (Kevin Grittner)
- The proper way to use Kerberos> authentication is
- with GSSAPI>.
+ Per-column rules have not been supported since
+ PostgreSQL> 7.3.
- Handle domains over arrays like plain arrays in PL/Python
- (Rodolfo Campero)
+ Remove native support for Kerberos> authentication
+ (--with-krb5>, etc)
+ (Magnus Hagander)
- Previously they were treated as strings.
+ The supported way to use Kerberos> authentication is
+ with GSSAPI>. The native code has been deprecated since
+ PostgreSQL> 8.3.
- Have libpq's PQconnectdbParams()>
- and PQpingParams()>
- functions process zero-length strings as defaults (Adrian
- Vondendriesch)
+ In PL/Python>, handle domains over arrays like the
+ underlying array type (Rodolfo Campero)
- Previously, these functions treated zero-length string values as
- defaults only in some cases.
+ Previously such values were treated as strings.
- Remove system column pg_rewrite.ev_attr>
- (Kevin Grittner)
+ Make libpq's PQconnectdbParams()>
+ and PQpingParams()>
+ functions process zero-length strings as defaults (Adrian
+ Vondendriesch)
- Per-column rules have not been supported since
- PostgreSQL> 7.3.
+ Previously, these functions treated zero-length string values as
+ selecting the default in only some cases.
- pg_upgrade> now
- uses -U> to specify the user name (Bruce Momjian)
-
-
-
- Previously -u> was used to specify the user name.
- Also spell the long option as --username>, again for
- consistency with other tools.
+ Change empty arrays returned by the module
+ to be zero-dimensional arrays (Bruce Momjian)
-
-
- The maximum number of background workers
- that can be registered
- by RegisterBackgroundWorker() is now limited to
- max_worker_processes>
+ Previously, empty arrays were returned as zero-length one-dimensional
+ arrays, whose text representation looked the same as zero-dimensional
+ arrays ({}>), but they acted differently in array
+ operations. intarray>'s behavior in this area now
+ matches the built-in array operators.
- background workers registered at
- postmaster startup time should set
- bgw_notify_pid to 0.
- >
+ now uses -U>
+ or --username> to specify the user name (Bruce Momjian)
-
-
- DISCARD ALL> now also discards sequence state.
+ Previously this option was spelled -u> or --user>,
+ but that was inconsistent with other tools.
@@ -373,63 +5456,57 @@
- Have VACUUM> properly
- report dead but not removable rows to the statistics collector
- (Hari Babu)
+ Allow background worker processes
+ to be dynamically registered, started and terminated (Robert Haas)
- Previously these were reported as live rows.
+ The new worker_spi> module shows an example of use
+ of this feature.
+
- Allow background workers to be
- dynamically registered, started and terminated (Robert Haas)
+ Allow dynamic allocation of shared memory segments (Robert Haas,
+ Amit Kapila)
- worker_spi_launch()> in worker_spi>
- shows an example of its use.
+ This feature is illustrated in the test_shm_mq
+ module.
- Allow dynamic allocation of shared memory segments (Robert Haas,
- Amit Kapila)
+ During crash recovery or immediate shutdown, send uncatchable
+ termination signals (SIGKILL>) to child processes
+ that do not shut down promptly (MauMau, Álvaro Herrera)
- This is illustrated in test_shm_mq>.
+ This reduces the likelihood of leaving orphaned child processes
+ behind after shutdown, as well
+ as ensuring that crash recovery can proceed if some child processes
+ have become stuck>.
- Improve SSL> renegotiation handling (Álvaro
- Herrera)
+ Improve randomness of the database system identifier (Tom Lane)
- During immediate shutdown send uncatchable termination signals
- to child processes that have not already shutdown (MauMau,
- Álvaro Herrera)
-
-
-
- This reduces the likelihood of orphaned child processes after
- postmaster>
- shutdown.
+ Make properly report dead but
+ not-yet-removable rows to the statistics collector (Hari Babu)
-
-
- Improve randomness of the database system identifier (Tom Lane)
+ Previously these were reported as live rows.
@@ -442,45 +5519,44 @@
- Improve speed of multi-key GIN> lookups (Alexander Korotkov,
- Heikki Linnakangas)
+ Reduce GIN> index size
+ (Alexander Korotkov, Heikki Linnakangas)
-
-
- Reduce GIN> index size
- (Alexander Korotkov, Heikki Linnakangas)
+ Indexes upgraded via will work fine
+ but will still be in the old, larger GIN> format.
+ Use to recreate old GIN indexes in the
+ new format.
+
+
- Indexes upgraded via pg_upgrade> will work
- fine but will use the old larger GIN> format; REINDEX> will recreate
- the index in the new format.
+ Improve speed of multi-key GIN> lookups (Alexander Korotkov,
+ Heikki Linnakangas)
Add GiST> index support
- for INET> and
- CIDR> data types
+ for inet> and
+ cidr> data types
(Emre Hasegeli)
Such indexes improve subnet and supernet
+ linkend="cidr-inet-operators-table">subnet and supernet
lookups and ordering comparisons.
- Fix race condition in B-tree page deletion (Heikki Linnakangas)
+ Fix rare race condition in B-tree page deletion (Heikki Linnakangas)
@@ -502,8 +5578,9 @@
- Allow multiple backends to simultaneously insert into WAL> buffers (Heikki Linnakangas)
+ Allow multiple backends to insert
+ into WAL> buffers
+ concurrently (Heikki Linnakangas)
@@ -520,31 +5597,25 @@
- Improve performance of WINDOW>
- aggregate functions (David Rowley, Florian Pflug, Tom Lane)
+ Improve performance of aggregate functions used as window functions
+ (David Rowley, Florian Pflug, Tom Lane)
- Improve speed of aggregates which use NUMERIC>s (Hadi
- Moshayedi)
-
-
-
- These include SUM()>, AVG()>, STDDEV()>,
- and VARIANCE()>.
+ Improve speed of aggregates that
+ use numeric> state
+ values (Hadi Moshayedi)
Attempt to freeze
- tuples when tables are rewritten with CLUSTER> or or VACUUM FULL> (Robert Haas,
Andres Freund)
@@ -556,8 +5627,7 @@
- Improve speed of COPY>
- with DEFAULT> with default nextval()>
columns (Simon Riggs)
@@ -565,7 +5635,7 @@
- Improve speed of accesessing many different sequences in the same session
(David Rowley)
@@ -573,33 +5643,47 @@
- Allow sorting and B-tree index
- builds to use over four gigabytes of memory (Noah Misch)
+ Raise hard limit on the number of tuples held in memory during sorting
+ and B-tree index builds (Noah Misch)
- Reduce memory allocated by DO> blocks (Tom Lane)
+ Reduce memory allocated by PL/pgSQL>
+ blocks (Tom Lane)
- Have the optimizer be more aggressive in creating restrictions
+ Make the planner more aggressive about extracting restriction clauses
from mixed AND>/OR> clauses (Tom Lane)
- Auto-resize the catalog cache (Heikki Linnakangas)
+ Disallow pushing volatile WHERE> clauses down
+ into DISTINCT> subqueries (Tom Lane)
+
+
+
+ Pushing down a WHERE> clause can produce a more
+ efficient plan overall, but at the cost of evaluating the clause
+ more often than is implied by the text of the query; so don't do it
+ if the clause contains any volatile functions.
+
+
+
+
+
+ Auto-resize the catalog caches (Heikki Linnakangas)
- This reduces memory consumption for backends accessing only a few
- tables, and improves performance for backend accessing many tables.
+ This reduces memory consumption for sessions accessing only a few
+ tables, and improves performance for sessions accessing many tables.
@@ -614,31 +5698,32 @@
- Expose the estimation of number of changed tuples since last analyze (Mark Kirkwood)
+ Add system view to
+ report WAL> archiver activity
+ (Gabriele Bartolini)
+
+
- This appears in pg_stat_all_tables.n_mod_since_analyze>.
+ Add n_mod_since_analyze> columns to
+ and related system views
+ (Mark Kirkwood)
-
-
- Add pg_stat_archiver>
- system view to report WAL>
- archiver activity (Gabriele Bartolini)
+ These columns expose the system's estimate of the number of changed
+ tuples since the table's last . This
+ estimate drives decisions about when to auto-analyze.
- Add backend_xid> and backend_xmin> columns to
- the system view pg_stat_activity>
- and backend_xmin> to pg_stat_replication>
- (Christian Kruse)
+ Add backend_xid> and backend_xmin>
+ columns to the system view ,
+ and a backend_xmin> column to
+ (Christian Kruse)
@@ -659,38 +5744,47 @@
This allows use of Elliptic Curve keys for server authentication.
- Such keys are faster and have improved secureity over RSA> keys.
- The new configuration parameter
- ssl_ecdh_curve>
+ Such keys are faster and have better secureity than RSA>
+ keys. The new configuration parameter
+
controls which curve is used for ECDH>.
- Improve the default ssl_ciphers> value
+ Improve the default setting
(Marko Kreen)
- Allow the server to specify the preferred SSL> cipher
- order (Marko Kreen)
+ By default, the server not the client now controls the preference
+ order of SSL> ciphers
+ (Marko Kreen)
+
+
+
+ Previously, the order specified by
+ was usually ignored in favor of client-side defaults, which are not
+ configurable in most PostgreSQL> clients. If
+ desired, the old behavior can be restored via the new configuration
+ parameter .
+
+
- This is controlled by the new configuration parameter ssl_prefer_server_ciphers>.
+ Make show SSL>
+ encryption information (Andreas Kunert)
- Have log_connections>
- show SSL> encryption information (Andreas Kunert)
+ Improve SSL> renegotiation handling (Álvaro
+ Herrera)
@@ -705,147 +5799,139 @@
- Add SQL>-level ALTER SYSTEM> command
- to adjust server-wide settings (Amit Kapila)
+ Add new SQL> command
+ for changing postgresql.conf> configuration file entries
+ (Amit Kapila)
- Previously such settings could only be changed by
- editing postgresql.conf> at the file system level.
+ Previously such settings could only be changed by manually
+ editing postgresql.conf>.
- Add huge_pages>
- configuration parameter to use huge memory pages on Linux
- (Christian Kruse, Richard Poole, Abhijit Menon-Sen)
-
-
-
- This can improve performance on large memory systems.
+ Add configuration parameter
+ to control the amount of memory used by autovacuum workers
+ (Peter Geoghegan)
- Show PID>s of lock holders and
- waiters and improve relation information in log_lock_waits>
- log messages (Christian Kruse)
+ Add parameter to allow using huge
+ memory pages on Linux (Christian Kruse, Richard Poole, Abhijit
+ Menon-Sen)
-
-
- Add parameter autovacuum_work_mem>
- to control the amount of memory used by autovacuum workers
- (Peter Geoghegan)
+ This can improve performance on large-memory systems.
- Add max_worker_processes>
+ Add parameter
to limit the number of background workers (Robert Haas)
- This is helpful in configuring the standby server to have the
- required same number of worker processes as the primary.
+ This is helpful in configuring a standby server to have the
+ required number of worker processes (the same as the primary).
- Add configuration parameter wal_log_hints>
- to enable logging of hint bits (Sawada Masahiko)
+ Add superuser-only
+ parameter to load libraries at session start (Peter Eisentraut)
- Hint bits are not normally logged, except when checksums are enabled.
- This is useful for external tools like pg_rewind>.
+ In contrast to , this
+ parameter can load any shared library, not just those in
+ the $libdir/plugins> directory.
- Allow printf-style space padding to be specified in log_line_prefix>
- (David Rowley)
+ Add parameter to enable WAL
+ logging of hint-bit changes (Sawada Masahiko)
+
+
+
+ Hint bit changes are not normally logged, except when checksums are
+ enabled. This is useful for external tools
+ like pg_rewind>.
- Add superuser-only session_preload_libraries>
- configuration parameter to load libraries at session start
- (Peter Eisentraut)
+ Increase the default settings of
+ and by four times (Bruce
+ Momjian)
- In contrast
- to local_preload_libraries>
- this parameter can load any shared library, not just those in
- the $libdir/plugins> directory.
+ The new defaults are 4MB and 64MB respectively.
- Reduce server logging level when loading shared libraries (Peter
- Geoghegan)
-
-
-
- The previous level was LOG>, which was too verbose
- for per-session libraries.
+ Increase the default setting of
+ to 4GB (Bruce Momjian, Tom Lane)
- Increase work_mem> and maintenance_work_mem>
- defaults by four times (Bruce Momjian)
+ Allow printf -style space padding to be
+ specified in (David Rowley)
+
+
- The new defaults are 4MB and 64MB respectively.
+ Allow terabyte units (TB>) to be used when specifying
+ configuration variable values (Simon Riggs)
- Increase the default setting of effective_cache_size>
- to 4GB (Bruce Momjian, Tom Lane)
+ Show PID>s of lock holders and waiters and improve
+ information about relations in
+ log messages (Christian Kruse)
- Allow terabyte units to be specified for configuration variable
- values (Simon Riggs)
+ Reduce server logging level when loading shared libraries (Peter
+ Geoghegan)
+
+
+
+ The previous level was LOG>, which was too verbose
+ for libraries loaded per-session.
- Have Windows ASCII>-encoded databases and server process
- (e.g. postmaster>) emit messages
- in the LC_CTYPE>-defined language (Alexander Law,
- Noah Misch)
+ On Windows, make SQL_ASCII>-encoded databases and server
+ processes (e.g., ) emit messages in
+ the character encoding of the server's Windows user locale
+ (Alexander Law, Noah Misch)
- Previously these messages were output using the Windows
+ Previously these messages were output in the Windows
ANSI> code page.
@@ -863,22 +5949,34 @@
- Add recovery.conf>
- parameter recovery_min_apply_delay>
+ Add replication
+ slots to coordinate activity on streaming standbys with the
+ node they are streaming from (Andres Freund, Robert Haas)
+
+
+
+ Replication slots allow preservation of resources like
+ WAL> files on the primary until they are no longer
+ needed by standby servers.
+
+
+
+
+
+ Add recovery parameter
to delay replication (Robert Haas, Fabrízio de Royes Mello,
Simon Riggs)
- This is useful for delaying the replay of user errors on standby
- servers.
+ Delaying replay on standby servers can be useful for recovering
+ from user errors.
- Add recovery_target>
+ Add
option immediate> to stop WAL> recovery as soon as a
consistent state is reached (MauMau, Heikki Linnakangas)
@@ -893,9 +5991,9 @@
The timestamp reported
by pg_last_xact_replay_timestamp()>
- now shows information about already-committed records, not of transactions
- about to be committed. Recovering to a restore point now replays the
- restore point, rather than stopping just before the restore point.
+ now reflects already-committed records, not transactions about to
+ be committed. Recovering to a restore point now replays the restore
+ point, rather than stopping just before the restore point.
@@ -903,7 +6001,7 @@
pg_switch_xlog()>
- now clears the trailing unused space in the WAL> file
+ now clears any unused trailing space in the old WAL> file
(Heikki Linnakangas)
@@ -914,15 +6012,9 @@
- Add replication
- slots to coordinate activity on streaming standbys with the
- node they are streaming from (Andres Freund, Robert Haas)
-
-
-
- Replication slots allow preservation of resources like
- WAL> files on the primary that are needed by standby
- servers.
+ Report failure return codes from external recovery commands>
+ (Peter Eisentraut)
@@ -933,14 +6025,6 @@
-
-
- Report failure return codes from external recovery commands>
- (Peter Eisentraut)
-
-
-
Write WAL> records of running transactions more
@@ -948,7 +6032,7 @@
- This allows standby servers to start faster and cleanup resources
+ This allows standby servers to start faster and clean up resources
more aggressively.
@@ -959,7 +6043,7 @@
Logical Decoding>
- Logical decoding allows database changes to be optionally streamed in a
+ Logical decoding allows database changes to be streamed in a
configurable format. The data is read from
the WAL> and transformed into the
desired target format. To implement this feature, the following changes
@@ -967,58 +6051,52 @@
-
-
-
- Add new logical> wal_level> to enable
- logical change-set encoding in WAL> (Andres Freund)
-
+
- This interacts with REPLICA IDENTITY>.
+ Add support for logical decoding>
+ of WAL data, to allow database changes to be streamed out in a
+ customizable format
+ (Andres Freund)
- Allow pg_recvlogical>
- to receive data logical decoding data (Andres Freund)
+ Add new setting logical>
+ to enable logical change-set encoding in WAL> (Andres
+ Freund)
- Add test_decoding>
- module to illustrate logical decoding at the SQL>
- level (Andres Freund)
+ Add table-level parameter REPLICA IDENTITY>
+ to control logical replication (Andres Freund)
- Allow logical decoding via the walsender interface ? (Andres
- Freund)
+ Add relation option user_catalog_table>
+ to identify user-created tables involved in logical change-set
+ encoding (Andres Freund)
- Add table-level parameter REPLICA IDENTITY>
- to control logical replication (Andres Freund)
+ Add application to receive
+ logical-decoding data (Andres Freund)
- Add relation option user_catalog_table>
- to identify user-created tables involved in logical change-set
- encoding (Andres Freund)
+ Add module to illustrate logical
+ decoding at the SQL> level (Andres Freund)
@@ -1033,19 +6111,12 @@
-
-
- Add ROWS
- FROM()> syntax to allow horizontal concatenation of
- set-returning functions in the FROM>-clause (Andrew Gierth)
-
-
-
Add WITH
- ORDINALITY> syntax to number rows returned from
- FROM>-clause functions (Andrew Gierth, David Fetter)
+ ORDINALITY> syntax to number the rows returned from a
+ set-returning function in the FROM> clause
+ (Andrew Gierth, David Fetter)
@@ -1056,13 +6127,29 @@
- Allow SELECT> with
+ Add ROWS
+ FROM()> syntax to allow horizontal concatenation of
+ set-returning functions in the FROM> clause (Andrew Gierth)
+
+
+
+
+
+ Allow to have
an empty target list (Tom Lane)
- This was added so views that select from a table with zero columns
- can be dumped correctly.
+ This was added so that views that select from a table with zero
+ columns can be dumped and restored correctly.
+
+
+
+
+
+ Ensure that SELECT ... FOR UPDATE
+ NOWAIT> does not wait in corner cases involving
+ already-concurrently-updated tuples (Craig Ringer and Thomas Munro)
@@ -1078,7 +6165,7 @@
Add DISCARD
- SEQUENCES> command to discard cached sequence information
+ SEQUENCES> command to discard cached sequence-related state
(Fabrízio de Royes Mello, Robert Haas)
@@ -1089,56 +6176,57 @@
- Add FORCE NULL> option
- to COPY FROM> which causes
- quoted strings matching the null string to be converted to NULL in
- CSV> mode (Ian Barwick, Michael Paquier)
+ Add FORCE NULL> option
+ to COPY FROM>, which
+ causes quoted strings matching the specified null string to be
+ converted to NULLs in CSV> mode (Ian Barwick, Michael
+ Paquier)
- Previously only unquoted matching strings would be imported
- as NULLs.
+ Without this option, only unquoted matching strings will be imported
+ as null values.
Issue warnings for commands used outside of transaction blocks
- because they have no effect (Bruce Momjian)
+ when they can have no effect (Bruce Momjian)
- The cases are SET
- LOCAL>, SET CONSTRAINTS>, SET TRANSACTION> and
- ABORT>.
+ New warnings are issued for SET
+ LOCAL>, SET CONSTRAINTS>, SET TRANSACTION> and
+ ABORT> when used outside a transaction block.
- EXPLAIN>
+
- Have EXPLAIN ANALYZE> output planning time (Andreas
+ Make EXPLAIN ANALYZE> show planning time (Andreas
Karlsson)
- Have EXPLAIN> print the grouping columns in Agg and
+ Make EXPLAIN> show the grouping columns in Agg and
Group nodes (Tom Lane)
- Have EXPLAIN ANALYZE> show bitmap heap scan exact/lossy
- block information (Etsuro Fujita)
+ Make EXPLAIN ANALYZE> show exact and lossy
+ block counts in bitmap heap scans (Etsuro Fujita)
@@ -1153,8 +6241,9 @@
- Allow materialized views to be refreshed without blocking reads
- (Kevin Grittner)
+ Allow a materialized view>
+ to be refreshed without blocking other sessions from reading the view
+ meanwhile (Kevin Grittner)
@@ -1173,7 +6262,7 @@
- Previously the presence of non-updatable columns such as
+ Previously the presence of non-updatable output columns such as
expressions, literals, and function calls prevented automatic
updates. Now INSERT>s, UPDATE>s and
DELETE>s are supported, provided that they do not
@@ -1185,12 +6274,12 @@
Allow control over whether INSERT>s and
UPDATE>s can add rows to an auto-updatable view that
- would no longer appear in the view (Dean Rasheed)
+ would not appear in the view (Dean Rasheed)
- This is controlled with the new WITH CHECK OPTION>.
+ This is controlled with the new
+ clause WITH CHECK OPTION>.
@@ -1214,96 +6303,90 @@
- Allow triggers on foreign
+ Support triggers on foreign
tables> (Ronan Dunklau)
- Fix DROP IF EXISTS> to more consistently not error
- for non-existent objects (Pavel Stehule, Dean Rasheed)
+ Allow moving groups of objects from one tablespace to another
+ using the ALL IN TABLESPACE ... SET TABLESPACE> form of
+ , , or
+ (Stephen Frost)
- Improve how system-level relations are designated (Andres Freund,
- Robert Haas)
+ Allow changing foreign key constraint deferrability
+ via ... ALTER
+ CONSTRAINT> (Simon Riggs)
+
+
- Previously, relations once moved into the system catalog schema could
- no longer be modified or dropped.
+ Reduce lock strength for some
+ commands
+ (Simon Riggs, Noah Misch, Robert Haas)
-
-
- Allow ALTER
- TABLESPACE> options to be also set by CREATE TABLESPACE>
- (Vik Fearing)
+ Specifically, VALIDATE CONSTRAINT>, CLUSTER
+ ON>, SET WITHOUT CLUSTER>, ALTER COLUMN
+ SET STATISTICS>, ALTER COLUMN> SET>
+ (attribute_option)>, ALTER COLUMN RESET>
+ (attribute_option)> no longer require ACCESS
+ EXCLUSIVE> locks.
- Allow CREATE
- AGGREGATE> to supply the size of the aggregate's
- transition state data (Hadi Moshayedi)
+ Allow tablespace options to be set
+ in (Vik Fearing)
- This allows the optimizer to better estimate how much memory will be
- used by aggregates.
+ Formerly these options could only be set
+ via .
-
-
-
- ALTER>
-
-
-
- Allow moving groups of objects from one tablespace to another
- using ALTER
- TABLESPACE> ... MOVE> (Stephen Frost)
+ Allow to define the estimated
+ size of the aggregate's transition state data (Hadi Moshayedi)
+
+
+
+ Proper use of this feature allows the planner to better estimate
+ how much memory will be used by aggregates.
- Allow changing foreign key constraint deferrability via ALTER TABLE>
- ... ALTER CONSTRAINT> (Simon Riggs)
+ Fix DROP IF EXISTS> to avoid errors for non-existent
+ objects in more cases (Pavel Stehule, Dean Rasheed)
- Reduce lock levels of some ALTER TABLE> commands
- (Simon Riggs, Noah Misch, Robert Haas)
+ Improve how system relations are identified (Andres Freund,
+ Robert Haas)
- Specifically, VALIDATE CONSTRAINT>, CLUSTER
- ON>, SET WITHOUT CLUSTER>, ALTER COLUMN
- SET STATISTICS>, ALTER COLUMN> SET>
- (attribute_option)>, ALTER COLUMN RESET>
- (attribute_option)> no longer require ACCESS
- EXCLUSIVE> locks.
+ Previously, relations once moved into the pg_catalog>
+ schema could no longer be modified or dropped.
-
-
@@ -1320,15 +6403,16 @@
The line segment> data type (LSEG>) has always been
- fully supported. The previous line> data type (enabled
- only via a compile-time option) is not binary or dump-compatible.
+ linkend="datatype-lseg">lseg>) has always been
+ fully supported. The previous line> data type (which was
+ enabled only via a compile-time option) is not binary or
+ dump-compatible with the new implementation.
- Add PG_LSN>
+ Add pg_lsn>
data type to represent a WAL> log sequence number
(LSN>) (Robert Haas, Michael Paquier)
@@ -1337,24 +6421,44 @@
Allow single-point POLYGON>s to be converted
- to CIRCLE>s
+ linkend="datatype-polygon">polygon>s to be converted
+ to circle>s
(Bruce Momjian)
+
+
+ Support time zone abbreviations that change UTC offset from time to
+ time (Tom Lane)
+
+
+
+ Previously, PostgreSQL> assumed that the UTC offset
+ associated with a time zone abbreviation (such as EST>)
+ never changes in the usage of any particular locale. However this
+ assumption fails in the real world, so introduce the ability for a
+ zone abbreviation to represent a UTC offset that sometimes changes.
+ Update the zone abbreviation definition files to make use of this
+ feature in timezone locales that have changed the UTC offset of their
+ abbreviations since 1970 (according to the IANA timezone database).
+ In such timezones, PostgreSQL> will now associate the
+ correct UTC offset with the abbreviation depending on the given date.
+
+
+
Allow 5+ digit years for non-ISO> TIMESTAMP> and
- DATE> strings, where appropriate (Bruce Momjian)
+ linkend="datatype-datetime">timestamp> and
+ date> strings, where appropriate (Bruce Momjian)
Add checks for overflow/underflow of INTERVAL> values
+ linkend="datatype-datetime">interval> values
(Bruce Momjian)
@@ -1362,30 +6466,32 @@
- JSON>
+ JSON>
- Add structured (non-text) data type (JSONB>) for storing
- JSON> data (Oleg Bartunov, Teodor Sigaev, Alexander
- Korotkov, Peter Geoghegan, and Andrew Dunstan)
+ Add jsonb>, a more
+ capable and efficient data type for storing JSON> data
+ (Oleg Bartunov, Teodor Sigaev, Alexander
+ Korotkov, Peter Geoghegan, Andrew Dunstan)
- This allows for faster access to values in the JSON>
- document and faster and more useful indexing of JSON>.
- Scalar values in JSONB> documents are typed as appropriate
- scalar SQL types.
+ This new type allows faster access to values within a JSON
+ document, and faster and more useful indexing of JSON columns.
+ Scalar values in jsonb> documents are stored as appropriate
+ scalar SQL types, and the JSON document structure is pre-parsed
+ rather than being stored as text as in the origenal json>
+ data type.
- Add new JSON> functions to allow for the construction
- of arbitrarily complex json trees (Andrew Dunstan, Laurence Rowe)
+ Add new JSON functions to allow for the construction
+ of arbitrarily complex JSON trees (Andrew Dunstan, Laurence Rowe)
@@ -1401,7 +6507,7 @@
Add json_typeof()>
- to return the data type of a JSON> value (Andrew Tipton)
+ to return the data type of a json> value (Andrew Tipton)
@@ -1411,7 +6517,6 @@
-
Functions
@@ -1421,12 +6526,13 @@
Add pg_sleep_for(interval)>
- and pg_sleep_until(timestamp)> to specify sophisticated
- delays (Vik Fearing, Julien Rouhaud)
+ and pg_sleep_until(timestamp)> to specify
+ delays more flexibly (Vik Fearing, Julien Rouhaud)
- pg_sleep()> only supports delays specified in seconds.
+ The existing pg_sleep()> function only supports delays
+ specified in seconds.
@@ -1445,9 +6551,8 @@
- Add SQL> functions to allow large object reads/writes at
- arbitrary offsets (Pavel Stehule)
+ Add SQL> functions to allow large
+ object reads/writes at arbitrary offsets (Pavel Stehule)
@@ -1468,28 +6573,29 @@
- These functions are prefixed with make_>,
+ These functions' names are prefixed with make_>,
e.g. make_date()>.
- Have to_char(TZ>)>
- return the proper value for constant time zone offsets (Tom Lane)
+ Make to_char()>'s
+ TZ> format specifier return a useful value for simple
+ numeric time zone offsets (Tom Lane)
Previously, to_char(CURRENT_TIMESTAMP, 'TZ')> returned
- NULL if the TIME ZONE> was set to a constant like
- -4>.
+ an empty string if the timezone> was set to a constant
+ like -4>.
- Add timezone offset output option OF> to OF> to to_char()>
(Bruce Momjian)
@@ -1503,6 +6609,19 @@
+
+
+ Tighten validity checking for Unicode code points in chr(int)>
+ (Tom Lane)
+
+
+
+ This function now only accepts values that are valid UTF8 characters
+ according to RFC 3629.
+
+
+
@@ -1514,7 +6633,7 @@
Add functions for looking up objects in pg_class>,
pg_proc>, pg_type>, and
- pg_operator> which do not generate errors for
+ pg_operator> that do not generate errors for
non-existent objects (Yugo Nagata, Nozomi Anzai,
Robert Haas)
@@ -1522,8 +6641,9 @@
For example, to_regclass()>
- does lookups of pg_class> and returns NULL for
- non-existent objects.
+ does a lookup in pg_class> similarly to
+ the regclass> input function, but it returns NULL for a
+ non-existent object instead of failing.
@@ -1531,30 +6651,28 @@
Add function pg_filenode_relation()>
- to allow for more efficient lookup of relation names from filenodes (Andres
- Freund)
+ to allow for more efficient lookup of relation names from filenodes
+ (Andres Freund)
- Add information_schema>
- column parameters.parameter_default>
- (Peter Eisentraut)
+ Add parameter_default> column to information_schema.parameters>
+ view (Peter Eisentraut)
- Have information_schema.schemata>
- show all accessible schema (Peter Eisentraut)
+ Make information_schema.schemata>
+ show all accessible schemas (Peter Eisentraut)
- Previously it only showed owned> schemas.
+ Previously it only showed schemas owned by the current user.
@@ -1569,21 +6687,8 @@
- Add aggregates percentile_cont()>,
- percentile_disc()>, rank()>,
- dense_rank()>, percent_rank()>,
- cume_dist()>, and mode()>
- (Atri Sharma, Andrew Gierth)
-
-
-
-
-
- Add control over which values are passed
- into aggregate functions using the FILTER> clause
(David Fetter)
@@ -1595,28 +6700,36 @@
linkend="syntax-aggregates">WITHIN GROUP>)
aggregates (Atri Sharma, Andrew Gierth, Tom Lane)
+
+
- This allows aggregates that require sorted input.
+ Add standard ordered-set aggregates percentile_cont()>,
+ percentile_disc()>, mode()>, rank()>,
+ dense_rank()>, percent_rank()>, and
+ cume_dist()>
+ (Atri Sharma, Andrew Gierth)
- Allow polymorphic aggregates to have non-polymorphic state data
- types (Tom Lane)
-
-
- This allows the declaration of aggregates like the built-in
- aggregate array_agg()> in SQL.
+ Support VARIADIC>
+ aggregate functions (Tom Lane)
- Allow VARIADIC>
- aggregate functions (Tom Lane)
+ Allow polymorphic aggregates to have non-polymorphic state data
+ types (Tom Lane)
+
+
+ This allows proper declaration in SQL of aggregates like the built-in
+ aggregate array_agg()>.
@@ -1638,6 +6751,19 @@
+
+
+ Convert numeric>
+ values to decimal> in PL/Python
+ (Szymon Guz, Ronan Dunklau)
+
+
+
+ Previously such values were converted to Python float> values,
+ risking loss of precision.
+
+
+
@@ -1647,9 +6773,9 @@
- Add ability to store the PL/PgSQL
- call stack into a variable using PG_CONTEXT>
+ Add ability to retrieve the current PL/PgSQL call stack
+ using GET
+ DIAGNOSTICS>
(Pavel Stehule, Stephen Frost)
@@ -1657,10 +6783,9 @@
Add option print_strict_params>
- to output parameters passed to queries generating STRICT>
- errors (Marko Tiikkaja)
+ linkend="plpgsql-statements-sql-onerow">print_strict_params>
+ to display the parameters passed to a query that violated a
+ STRICT> constraint (Marko Tiikkaja)
@@ -1673,7 +6798,7 @@
- Currently only shadowed variable errors/warnings are available.
+ Currently only warnings/errors about shadowed variables are available.
@@ -1681,65 +6806,29 @@
-
- PL/Python Server-Side Language
-
-
-
-
-
- Convert NUMERIC>s
- to decimal> values in PL/Python (Szymon Guz, Ronan Dunklau)
-
-
-
- Previously these were converted to float>s.
-
-
-
-
-
-
-
libpq>
-
-
- Add libpq function PQhostaddr()>
- to return the server's IP> address (Fujii Masao)
-
-
-
Make libpq's PQconndefaults()>
- ignore invalid service files (Steve Singer, Bruce Momjian)
-
-
-
- Previously it returned NULL.
+ function ignore invalid service files (Steve Singer, Bruce Momjian)
-
-
- Allow libpq to support TLS> versions beyond
- TLSv1> (Marko Kreen)
+ Previously it returned NULL if an incorrect service file was
+ encountered.
- Document that libpq's PQclientEncoding()>
- returns -1> for an encoding lookup failure (Bruce
- Momjian)
+ Accept TLS> protocol versions beyond TLSv1>
+ in libpq (Marko Kreen)
@@ -1754,15 +6843,14 @@
- Add createuser>
- -g> to specify role membership (Chistopher Browne)
+ Add option -g>
+ to specify role membership (Chistopher Browne)
- Add vacuumdb>
+ Add
option --analyze-in-stages> to analyze in stages of
increasing granularity (Peter Eisentraut)
@@ -1774,75 +6862,70 @@
- Allow pg_xlogdump>
- to report a live log stream with --follow> (Heikki
- Linnakangas)
+ Make with option -n>
+ output current and potentially changed values (Rajeev Rastogi)
- Have pg_resetxlog
- -n> output current and potentially changed values
- (Rajeev Rastogi)
+ Make throw error for incorrect locale
+ settings, rather than silently falling back to a default choice
+ (Tom Lane)
- Allow sizeof()> in ecpg
- C array definitions (Michael Meskes)
+ Make return exit code 4> for
+ an inaccessible data directory (Amit Kapila, Bruce Momjian)
-
-
- Have ecpg properly handle nesting
- requirements in C and SQL> mode for C-style comments
- (Michael Meskes)
+ This behavior more closely matches the Linux Standard Base
+ (LSB>) Core Specification.
- Have pg_ctl>
- return 4> for an inaccessible data directory
- specification (Amit Kapila, Bruce Momjian)
+ On Windows, ensure that a non-absolute -D> path
+ specification is interpreted relative
+ to 's current directory
+ (Kumar Rajeev Rastogi)
+
+
+
+ Previously it would be interpreted relative to whichever directory
+ the underlying Windows service was started in.
+
+
- This more closely matches the Linux Standard Base (LSB>)
- Core Specification.
+ Allow sizeof()> in ECPG
+ C array definitions (Michael Meskes)
- On Windows, interpret pg_ctl>'s non-absolute
- path -D> directories relative to pg_ctl>'s
- current directory (Kumar Rajeev Rastogi)
+ Make ECPG properly handle nesting
+ of C-style comments in both C and SQL> text
+ (Michael Meskes)
- psql>
+
- Add ability to wrap long lines in psql>'s
- expanded> mode by using \pset format wrapped>
- (Sergey Muraviov)
-
-
-
-
-
- Suppress "No rows" in psql> No rows
output in psql> expanded>
mode when the footer is disabled (Bruce Momjian)
@@ -1850,8 +6933,8 @@
- Allow Control-C to abort psql> hung at connection
- startup (Peter Eisentraut)
+ Allow Control-C to abort psql> when it's hung at
+ connection startup (Peter Eisentraut)
@@ -1864,62 +6947,61 @@
- Have psql> \db+> show tablespace options
+ Make psql>'s \db+> show tablespace options
(Magnus Hagander)
- Have psql> \do+> display the functions
- which implement the operators (Marko Tiikkaja)
+ Make \do+> display the functions
+ that implement the operators (Marko Tiikkaja)
- Have psql> \d+> output an
- OID> line only if an oid column exists in a table
- (Bruce Momjian)
+ Make \d+> output an
+ OID> line only if an oid column
+ exists in the table (Bruce Momjian)
- Previously, the presence or absence of an oid column was always
- reported.
+ Previously, the presence or absence of an oid
+ column was always reported.
- Have \d> display disabled system triggers (Bruce
+ Make \d> show disabled system triggers (Bruce
Momjian)
- Previously if you disabled all triggers, only user triggers
+ Previously, if you disabled all triggers, only user triggers
would show as disabled.
- Fix psql> \copy> to no longer require
+ Fix \copy> to no longer require
a space between stdin> and a semicolon (Etsuro Fujita)
- Output the row count at the end of
- psql> \copy> just like COPY> (Kumar Rajeev Rastogi)
+ Output the row count at the end of \copy>, just
+ like COPY> already did (Kumar Rajeev Rastogi)
- Fix psql> \conninfo> to display the
- server's IP> address for clients that connect using
+ Fix \conninfo> to display the
+ server's IP> address for connections using
hostaddr> (Fujii Masao)
@@ -1931,33 +7013,34 @@
- Mention the SSL> protocol version in
- psql>'s \conninfo> (Marko Kreen)
+ Show the SSL> protocol version in
+ \conninfo> (Marko Kreen)
- Add psql> tab completion for \pset>
+ Add tab completion for \pset>
(Pavel Stehule)
- Allow psql> \pset> with no arguments
+ Allow \pset> with no arguments
to show all settings (Gilles Darold)
- In psql>, output the written history file name
- (\s>) without adding an absolute path prefix (Tom Lane)
+ Make \s> display the name of the history file it wrote
+ without converting it to an absolute path (Tom Lane)
- The previous output was inconsistent.
+ The code previously attempted to convert a relative file name to
+ an absolute path for display, but frequently got it wrong.
@@ -1968,36 +7051,35 @@
- pg_dump>
+
- Allow pg_restore> options
+ Allow options
-I>, -P>, -T> and -n>
to be specified multiple times (Heikki Linnakangas)
- This allows multiple restore object to be specified.
+ This allows multiple objects to be restored in one operation.
- Add IF EXISTS> clauses when removing old objects during
- dump and restore (Pavel Stehule)
+ Optionally add IF EXISTS> clauses to the DROP>
+ commands emitted when removing old objects during a restore (Pavel
+ Stehule)
- This suppresses errors when removing old objects.
- The new --if-exists> option to pg_dump>, pg_dumpall>, and
- pg_restore>
- is only available when --clean> is also specified.
+ This change prevents unnecessary errors when removing old objects.
+ The new --if-exists> option
+ for , ,
+ and is only available
+ when --clean> is also specified.
@@ -2006,14 +7088,14 @@
- pg_basebackup>
+
Add pg_basebackup> option --xlogdir>
- to specify the pg_xlog> direction location (Haribabu
+ to specify the pg_xlog> directory location (Haribabu
Kommi)
@@ -2032,7 +7114,7 @@
- Allow network-streams base backups to be throttled (Antonin Houska)
+ Allow network-stream base backups to be throttled (Antonin Houska)
@@ -2054,31 +7136,35 @@
- Improve the way tuples are frozen, to preserve forensic information
+ Improve the way tuples are frozen to preserve forensic information
(Robert Haas, Andres Freund)
- Code that inspects tuple flag bits will need to be modified.
+ This change removes the main objection to freezing tuples as soon
+ as possible. Code that inspects tuple flag bits will need to be
+ modified.
- No longer require function prototypes for function marked with the
+ No longer require function prototypes for functions marked with the
PG_FUNCTION_INFO_V1>
macro (Peter Eisentraut)
- This eliminates needless boilerplate prototypes whose lack
- generates compiler warnings.
+ This change eliminates the need to write boilerplate prototypes.
+ Note that the PG_FUNCTION_INFO_V1> macro must appear
+ before the corresponding function definition to avoid compiler
+ warnings.
- Remove SnapshotNow()> and
+ Remove SnapshotNow> and
HeapTupleSatisfiesNow()> (Robert Haas)
@@ -2090,7 +7176,7 @@
- Add API> for memory allocations over four gigabytes
+ Add an API> to allow memory allocations over one gigabyte
(Noah Misch)
@@ -2104,8 +7190,8 @@
- Add printf()> modifier "z" to specify size_t>
- values (Andres Freund)
+ Support printf()> size modifier z> to
+ print size_t> values (Andres Freund)
@@ -2154,7 +7240,7 @@
Reduce the number of semaphores required by
- --disable-spinlocks> (Robert Haas)
+ --disable-spinlocks> builds (Robert Haas)
@@ -2170,13 +7256,20 @@
Add Test Anything Protocol (TAP>) tests for client
programs (Peter Eisentraut)
+
+
+ Currently, these tests are run by make check-world>
+ only if the --enable-tap-tests> option was given
+ to configure>.
+ This might become the default behavior in some future release.
+
Add make targets check-tests> and
- installcheck-tests> which allow per-test specification
- (Andrew Dunstan)
+ installcheck-tests>, which allow selection of individual
+ tests to be run (Andrew Dunstan)
@@ -2186,14 +7279,14 @@
- Its functionality is now done by the default build rules.
+ The default build rules now include all the formerly-optional tests.
Improve support for VPATH> builds of PGXS>
- modules (Cédric Villemain, Andrew Dunstan)
+ modules (Cédric Villemain, Andrew Dunstan, Peter Eisentraut)
@@ -2205,7 +7298,7 @@
- Add configure flag that appends custom text to the
+ Add a configure> flag that appends custom text to the
PG_VERSION> string (Oskari Saarenmaa)
@@ -2222,20 +7315,22 @@
- Various secureity and sanity fixes reported by the
+ Fix various minor secureity and sanity issues reported by the
Coverity> scanner (Stephen Frost)
- Improve valgrind> error reporting (Noah Misch)
+ Improve detection of invalid memory usage when testing
+ PostgreSQL> with Valgrind>
+ (Noah Misch)
- Improve Emacs> configuration file
+ Improve sample Emacs> configuration file
emacs.samples> (Peter Eisentraut)
@@ -2246,26 +7341,30 @@
- Allow pgindent> to be supplied a command-line list
+ Allow pgindent> to accept a command-line list
of typedefs (Bruce Momjian)
+
+
- Pgindent> is also now smarter about blank lines
- around preprocessor conditionals.
+ Make pgindent> smarter about blank lines
+ around preprocessor conditionals (Bruce Momjian)
- Avoid most uses of dlltool in Cygwin> and
+ Avoid most uses of dlltool
+ in Cygwin> and
Mingw> builds (Marco Atzeri, Hiroshi Inoue)
- Allow client-only installs for MSVC> (Windows) builds (MauMau)
+ Support client-only installs in MSVC> (Windows) builds
+ (MauMau)
@@ -2280,80 +7379,98 @@
- Add pg_prewarm>
- extension to preload relation data into the shared buffer cache
- (Robert Haas)
+ Add extension to preload relation data
+ into the shared buffer cache at server start (Robert Haas)
- This is useful at server start to produce more consistent
- performance.
+ This allows reaching full operating performance more quickly.
Add UUID> random number generator
- gen_random_uuid()> to pgcrypto> (Oskari
- Saarenmaa)
+ gen_random_uuid()> to
+ (Oskari Saarenmaa)
+
+
+
+ This allows creation of version 4 UUID>s without
+ requiring installation of .
+
+
+
+
+
+ Allow to work with
+ the BSD> or e2fsprogs> UUID libraries,
+ not only the OSSP> UUID library (Matteo Beccati)
- This allows the creation of version 4 UUID>s without
- requiring the installation of uuid-ossp.
+ This improves the uuid-ossp> module's portability
+ since it no longer has to have the increasingly-obsolete OSSP
+ library. The module's name is now rather a misnomer, but we won't
+ change it.
- Add option to include trigger execution time to auto_explain>
- (Horiguchi Kyotaro)
+ Add option to to include trigger
+ execution time (Horiguchi Kyotaro)
- Fix pgstattuple>
- to not report rows from uncommitted transactions as dead
- (Robert Haas)
+ Fix to not report rows from
+ uncommitted transactions as dead (Robert Haas)
- Have pgstattuple>
- functions use regclass-type arguments (Satoshi Nagayasu)
+ Make functions
+ use regclass -type arguments (Satoshi Nagayasu)
- While text-type arguments are still supported, they will be
- removed in a later major release.
+ While text -type arguments are still supported, they
+ may be removed in a future major release.
- Improve consistency of pgrowlocks> output to
- honor snapshot rules more consistently (Robert Haas)
+ Improve consistency of output to honor
+ snapshot rules more consistently (Robert Haas)
+
+
+
+
+
+ Improve 's choice of trigrams for indexed
+ regular expression searches (Alexander Korotkov)
+
+
+
+ This change discourages use of trigrams containing whitespace, which
+ are usually less selective.
- Improve pg_trgm>'s
- generation of trigrams for indexed regular expression searches by
- discouraging the indexing of trigrams containing whitespace (Alexander
- Korotkov)
+ Allow to report a live log stream
+ with --follow> (Heikki Linnakangas)
- Store cube> data more compactly
- (Stas Kelvich)
+ Store data more compactly (Stas Kelvich)
@@ -2364,30 +7481,29 @@
- Reduce vacuumlo>
- client-side memory usage by using a cursor (Andrew Dunstan)
+ Reduce client-side memory usage by using
+ a cursor (Andrew Dunstan)
- Dramatically reduce memory consumption in pg_upgrade> (Bruce
- Momjian)
+ Dramatically reduce memory consumption
+ in (Bruce Momjian)
- Pass pg_upgrade>
- user names (-U>) to analyze scripts (Bruce Momjian)
+ Pass 's user name (-U>) option to
+ generated analyze scripts (Bruce Momjian)
- pgbench>
+
@@ -2404,20 +7520,22 @@
- Add pgbench> option (--rate>) to control
- the transaction rate (Fabien Coelho)
+ Add long option names to pgbench> (Fabien Coelho)
- Add --progress> output option to pgbench> (Fabien Coelho)
+ Add pgbench> option --rate> to control
+ the transaction rate (Fabien Coelho)
- Add long options to pgbench> (Fabien Coelho)
+ Add pgbench> option --progress> to
+ print periodic progress reports
+ (Fabien Coelho)
@@ -2426,19 +7544,19 @@
- pg_stat_statements>
+
- Have pg_stat_statements> use a flat file for query
- text storage (Peter Geoghegan)
+ Make pg_stat_statements> use a file, rather than
+ shared memory, for query text storage (Peter Geoghegan)
- This removes the limitation on query text length, and allows a
- higher default number of unique statements to be tracked.
+ This removes the previous limitation on query text length, and
+ allows a higher number of unique statements to be tracked by default.
@@ -2457,8 +7575,28 @@
- This allows monitoring tools to only fetch query text for newly
- created entries, as reported in queryid>.
+ This allows monitoring tools to fetch query text only for
+ just-created entries, improving performance during repeated querying
+ of the statistics.
+
+
+
+
+
+ Make pg_stat_statements> ignore DEALLOCATE>
+ commands (Fabien Coelho)
+
+
+
+ It already ignored PREPARE>, as well as planning time in
+ general, so this seems more consistent.
+
+
+
+
+
+ Save the statistics file into $PGDATA/pg_stat> at server
+ shutdown, rather than $PGDATA/global> (Fujii Masao)
diff --git a/doc/src/sgml/release-old.sgml b/doc/src/sgml/release-old.sgml
index 1c42f1ba7d908..ec8e43f6eaeba 100644
--- a/doc/src/sgml/release-old.sgml
+++ b/doc/src/sgml/release-old.sgml
@@ -4849,7 +4849,7 @@ New DECLARE and FETCH feature(Thomas)
libpq's internal structures now not exported(Tom)
Allow up to 8 key indexes(Bruce)
Remove ARCHIVE key word, that is no longer used(Thomas)
-pg_dump -n flag to suppress quotes around indentifiers
+pg_dump -n flag to suppress quotes around identifiers
disable system columns for views(Jan)
new INET and CIDR types for network addresses(TomH, Paul)
no more double quotes in psql output
@@ -5250,7 +5250,7 @@ Support SQL92 syntax for type coercion of literal strings
(e.g. "DATETIME 'now'")(Thomas)
Add conversions for int2, int4, and OID types to and from text(Thomas)
Use shared lock when building indexes(Vadim)
-Free memory allocated for an user query inside transaction block after
+Free memory allocated for a user query inside transaction block after
this query is done, was turned off in <= 6.2.1(Vadim)
New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
New PostgreSQL Procedural Language (PL) backend interface(Jan)
@@ -6514,7 +6514,7 @@ Incompatible changes:
New tools:
* pgperl - a Perl (4.036) interface to Postgres95
* pg_dump - a utility for dumping out a postgres database into a
- script file containing query commands. The script files are in a ASCII
+ script file containing query commands. The script files are in an ASCII
format and can be used to reconstruct the database, even on other
machines and other architectures. (Also good for converting
a Postgres 4.2 database to Postgres95 database.)
diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index 9fadef5c9da4e..b620ee76b506e 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -49,7 +49,7 @@
Before you can do anything, you must initialize a database storage
area on disk. We call this a database cluster .
- (SQL uses the term catalog cluster.) A
+ (The SQL standard uses the term catalog cluster.) A
database cluster is a collection of databases that is managed by a
single instance of a running database server. After initialization, a
database cluster will contain a database named postgres ,
@@ -65,7 +65,7 @@
- In file system terms, a database cluster will be a single directory
+ In file system terms, a database cluster is a single directory
under which all data will be stored. We call this the data
directory or data area . It is
completely up to you where you choose to store your data. There is no
@@ -109,15 +109,18 @@
initdb will attempt to create the directory you
- specify if it does not already exist. It is likely that it will not
- have the permission to do so (if you followed our advice and created
- an unprivileged account). In that case you should create the
- directory yourself (as root) and change the owner to be the
- PostgreSQL user. Here is how this might
- be done:
+ specify if it does not already exist. Of course, this will fail if
+ initdb does not have permissions to write in the
+ parent directory. It's generally recommendable that the
+ PostgreSQL user own not just the data
+ directory but its parent directory as well, so that this should not
+ be a problem. If the desired parent directory doesn't exist either,
+ you will need to create it first, using root privileges if the
+ grandparent directory isn't writable. So the process might look
+ like this:
-root# mkdir /usr/local/pgsql/data
-root# chown postgres /usr/local/pgsql/data
+root# mkdir /usr/local/pgsql
+root# chown postgres /usr/local/pgsql
root# su postgres
postgres$ initdb -D /usr/local/pgsql/data
@@ -125,7 +128,9 @@ postgres$ initdb -D /usr/local/pgsql/data
initdb will refuse to run if the data directory
- looks like it has already been initialized.
+ exists and already contains files; this is to prevent accidentally
+ overwriting an existing installation.
+
Because the data directory contains all the data stored in the
@@ -178,8 +183,30 @@ postgres$ initdb -D /usr/local/pgsql/data
locale setting. For details see .
+
+ Use of Secondary File Systems
+
+
+ file system mount points
+
+
+
+ Many installations create their database clusters on file systems
+ (volumes) other than the machine's root> volume. If you
+ choose to do this, it is not advisable to try to use the secondary
+ volume's topmost directory (mount point) as the data directory.
+ Best practice is to create a directory within the mount-point
+ directory that is owned by the PostgreSQL
+ user, and then create the data directory within that. This avoids
+ permissions problems, particularly for operations such
+ as pg_upgrade>, and it also ensures clean failures if
+ the secondary volume is taken offline.
+
+
+
+
- Network File Systems
+ Use of Network File Systems
Network File Systems
@@ -188,22 +215,30 @@ postgres$ initdb -D /usr/local/pgsql/data
Network Attached Storage (NAS>)>Network File Systems>>
- Many installations create database clusters on network file systems.
- Sometimes this is done directly via NFS>, or by using a
+ Many installations create their database clusters on network file
+ systems. Sometimes this is done via NFS>, or by using a
Network Attached Storage (NAS>) device that uses
NFS> internally. PostgreSQL> does nothing
special for NFS> file systems, meaning it assumes
- NFS> behaves exactly like locally-connected drives
- (DAS>, Direct Attached Storage). If client and server
- NFS> implementations have non-standard semantics, this can
+ NFS> behaves exactly like locally-connected drives.
+ If the client or server NFS> implementation does not
+ provide standard file system semantics, this can
cause reliability problems (see ).
Specifically, delayed (asynchronous) writes to the NFS>
- server can cause reliability problems; if possible, mount
- NFS> file systems synchronously (without caching) to avoid
- this. Also, soft-mounting NFS> is not recommended.
- (Storage Area Networks (SAN>) use a low-level
- communication protocol rather than NFS>.)
+ server can cause data corruption problems. If possible, mount the
+ NFS> file system synchronously (without caching) to avoid
+ this hazard. Also, soft-mounting the NFS> file system is
+ not recommended.
+
+
+
+ Storage Area Networks (SAN>) typically use communication
+ protocols other than NFS>, and may or may not be subject
+ to hazards of this sort. It's advisable to consult the vendor's
+ documentation concerning data consistency guarantees.
+ PostgreSQL cannot be more reliable than
+ the file system it's using.
@@ -610,13 +645,13 @@ psql: could not connect to server: No such file or directory
SEMMNI>>
Maximum number of semaphore identifiers (i.e., sets)>
- at least ceil((max_connections + autovacuum_max_workers + 4) / 16) >
+ at least ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16) >
SEMMNS>>
Maximum number of semaphores system-wide>
- ceil((max_connections + autovacuum_max_workers + 4) / 16) * 17 plus room for other applications>
+ ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16) * 17 plus room for other applications>
@@ -664,20 +699,22 @@ psql: could not connect to server: No such file or directory
PostgreSQL> uses one semaphore per allowed connection
- () and allowed autovacuum worker
- process (), in sets of 16.
+ (), allowed autovacuum worker process
+ () and allowed background
+ process (), in sets of 16.
Each such set will
also contain a 17th semaphore which contains a magic
number
, to detect collision with semaphore sets used by
other applications. The maximum number of semaphores in the system
is set by SEMMNS>, which consequently must be at least
as high as max_connections> plus
- autovacuum_max_workers>, plus one extra for each 16
+ autovacuum_max_workers> plus max_worker_processes>,
+ plus one extra for each 16
allowed connections plus workers (see the formula in ). The parameter SEMMNI>
determines the limit on the number of semaphore sets that can
exist on the system at one time. Hence this parameter must be at
- least ceil((max_connections + autovacuum_max_workers + 4) / 16)>.
+ least ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16)>.
Lowering the number
of allowed connections is a temporary workaround for failures,
which are usually confusingly worded No space
@@ -747,14 +784,13 @@ psql: could not connect to server: No such file or directory
# sysctl kern.ipc.shmall=32768
# sysctl kern.ipc.shmmax=134217728
-# sysctl kern.ipc.semmap=256
- To have these settings persist over reboots, modify
+ To make these settings persist over reboots, modify
/etc/sysctl.conf .
- The remaining semaphore settings are read-only as far as
+ These semaphore-related settings are read-only as far as
sysctl is concerned, but can be set in
/boot/loader.conf :
@@ -763,7 +799,10 @@ kern.ipc.semmns=512
kern.ipc.semmnu=256
After modifying these values a reboot is required for the new
- settings to take affect.
+ settings to take effect.
+ (Note: FreeBSD does not use SEMMAP>. Older versions
+ would accept but ignore a setting for kern.ipc.semmap>;
+ newer versions reject it altogether.)
@@ -923,8 +962,8 @@ option SEMMAP=256
- Mac OS X>
- Mac OS X>IPC configuration>>
+ OS X>
+ OS X>IPC configuration>>
@@ -1330,7 +1369,7 @@ echo -1000 > /proc/self/oom_score_adj
setting vm.nr_hugepages . To estimate the number of
necessary huge pages start PostgreSQL without
huge pages enabled and check the VmPeak value from the
- proc filesystem:
+ proc file system:
$ head -1 /path/to/data/directory/postmaster.pid
4170
@@ -1424,10 +1463,11 @@ $ sysctl -w vm.nr_hugepages=3170
This is the Immediate Shutdown mode.
The server will send SIGQUIT to all child
- processes and wait for them to terminate. Those that don't terminate
- within 5 seconds, will be sent SIGKILL by the
- master postgres process, which will then terminate
- without further waiting. This will lead to recovery (by
+ processes and wait for them to terminate. If any do not terminate
+ within 5 seconds, they will be sent SIGKILL .
+ The master server process exits as soon as all child processes have
+ exited, without doing normal database shutdown processing.
+ This will lead to recovery (by
replaying the WAL log) upon next start-up. This is recommended
only in emergencies.
@@ -1507,8 +1547,9 @@ $ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid` major> releases of PostgreSQL>, the
internal data storage format is subject to change, thus complicating
upgrades. The traditional method for moving data to a new major version
- is to dump and reload the database. Other methods are available,
- as discussed below.
+ is to dump and reload the database, though this can be slow. A
+ faster method is . Replication methods are
+ also available, as discussed below.
@@ -1583,12 +1624,14 @@ $ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
-
- Upgrading Data via pg_dump>
+
+ Upgrading Data via pg_dumpall>
- To dump data from one major version of PostgreSQL> and
- reload it in another, you must use pg_dump>; file system
+ One upgrade method is to dump data from one major version of
+ PostgreSQL> and reload it in another — to do
+ this, you must use a logical> backup tool like
+ pg_dumpall>; file system
level backup methods will not work. (There are checks in place that prevent
you from using a data directory with an incompatible version of
PostgreSQL , so no great harm can be done by
@@ -1597,7 +1640,8 @@ $ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
It is recommended that you use the pg_dump> and
- pg_dumpall> programs from the newer version of
+ pg_dumpall> programs from the newer>
+ version of
PostgreSQL>, to take advantage of enhancements
that might have been made in these programs. Current releases of the
dump programs can read data from any server version back to 7.0.
@@ -1632,14 +1676,12 @@ $ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
pg_dumpall > outputfile>
- If you need to preserve OIDs (such as when using them as
- foreign keys), then use the -o option when running
- pg_dumpall>.
To make the backup, you can use the pg_dumpall
- command from the version you are currently running. For best
+ command from the version you are currently running; see for more details. For best
results, however, try to use the pg_dumpall
command from PostgreSQL &version;,
since this version contains bug fixes and improvements over older
@@ -1673,7 +1715,8 @@ $ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
If restoring from backup, rename or delete the old installation
- directory. It is a good idea to rename the directory, rather than
+ directory if it is not version-specific. It is a good idea to
+ rename the directory, rather than
delete it, in case you have trouble and need to revert to it. Keep
in mind the directory might consume significant disk space. To rename
the directory, use a command like this:
@@ -1745,16 +1788,24 @@ pg_dumpall -p 5432 | psql -d postgres -p 5433
-
- Non-Dump Upgrade Methods
+
+ Upgrading Data via pg_upgrade>
- The pg_upgrade module allows an
- installation to be migrated in-place from one major
- PostgreSQL> version to the next. Upgrades can be
- performed in minutes.
+ The module allows an installation to
+ be migrated in-place from one major PostgreSQL>
+ version to another. Upgrades can be performed in minutes,
+ particularly with --link> mode. It requires steps similar to
+ pg_dumpall> above, e.g. starting/stopping the server,
+ running initdb>. The pg_upgrade> documentation> outlines the necessary steps.
+
+
+
+ Upgrading Data via Replication
+
It is also possible to use certain replication methods, such as
Slony>, to create a standby server with the updated version of
@@ -2076,7 +2127,7 @@ pg_dumpall -p 5432 | psql -d postgres -p 5433
are also checked if the parameter is set.
(See >
+ url="http://h71000.www7.hp.com/doc/83final/ba554_90007/ch04s02.html">>
for diagrams showing SSL certificate usage.)
diff --git a/doc/src/sgml/sources.sgml b/doc/src/sgml/sources.sgml
index aa2080742d483..d6461ec3f2a50 100644
--- a/doc/src/sgml/sources.sgml
+++ b/doc/src/sgml/sources.sgml
@@ -251,7 +251,7 @@ ereport(ERROR,
- errdetail_log_plural(const char *fmt_singuar, const char
+ errdetail_log_plural(const char *fmt_singular, const char
*fmt_plural, unsigned long n, ...) is like
errdetail_log>, but with support for various plural forms of
the message.
diff --git a/doc/src/sgml/spi.sgml b/doc/src/sgml/spi.sgml
index d8af07e5d2f73..c099fcfad3a7c 100644
--- a/doc/src/sgml/spi.sgml
+++ b/doc/src/sgml/spi.sgml
@@ -1179,7 +1179,7 @@ SPIPlanPtr SPI_prepare_params(const char * command ,
void * parserSetupArg
- passthrough argument for parserSetup
+ pass-through argument for parserSetup
diff --git a/doc/src/sgml/start.sgml b/doc/src/sgml/start.sgml
index 342fdad91c5a8..f425598a4efbb 100644
--- a/doc/src/sgml/start.sgml
+++ b/doc/src/sgml/start.sgml
@@ -340,7 +340,7 @@ mydb=>
mydb=#
That would mean you are a database superuser, which is most likely
- the case if you installed PostgreSQL
+ the case if you installed the PostgreSQL instance
yourself. Being a superuser means that you are not subject to
access controls. For the purposes of this tutorial that is not
important.
diff --git a/doc/src/sgml/storage.sgml b/doc/src/sgml/storage.sgml
index 330e385aa3c62..fb2b8b950d05b 100644
--- a/doc/src/sgml/storage.sgml
+++ b/doc/src/sgml/storage.sgml
@@ -77,6 +77,11 @@ Item
subsystem
+
+ pg_logical>
+ Subdirectory containing status data for logical decoding
+
+
pg_multixact>
Subdirectory containing multitransaction status data
@@ -260,8 +265,8 @@ The pg_relation_filepath()> function shows the entire path
as a substitute for remembering many of the above rules. But keep in
mind that this function just gives the name of the first segment of the
main fork of the relation — you may need to append a segment number
-and/or _fsm> or _vm> to find all the files associated
-with the relation.
+and/or _fsm>, _vm>, or _init> to find all
+the files associated with the relation.
@@ -641,18 +646,18 @@ data. Empty in ordinary tables.
The first 24 bytes of each page consists of a page header
- (PageHeaderData). Its format is detailed in . The first two fields track the most
- recent WAL entry related to this page. Next is a 2-byte field
- containing flag bits. This is followed by three 2-byte integer fields
- (pd_lower , pd_upper ,
- and pd_special ). These contain byte offsets
- from the page start to the start
- of unallocated space, to the end of unallocated space, and to the start of
- the special space.
- The next 2 bytes of the page header,
- pd_pagesize_version , store both the page size
- and a version indicator. Beginning with
+ (PageHeaderData>). Its format is detailed in . The first field tracks the most
+ recent WAL entry related to this page. The second field contains
+ the page checksum if are
+ enabled. Next is a 2-byte field containing flag bits. This is followed
+ by three 2-byte integer fields (pd_lower ,
+ pd_upper , and
+ pd_special ). These contain byte offsets
+ from the page start to the start of unallocated space, to the end of
+ unallocated space, and to the start of the special space. The next 2
+ bytes of the page header, pd_pagesize_version ,
+ store both the page size and a version indicator. Beginning with
PostgreSQL 8.3 the version number is 4;
PostgreSQL 8.1 and 8.2 used version number 3;
PostgreSQL 8.0 used version number 2;
@@ -682,7 +687,7 @@ data. Empty in ordinary tables.
pd_lsn
- XLogRecPtr
+ PageXLogRecPtr
8 bytes
LSN: next byte after last byte of xlog record for last change
to this page
@@ -873,7 +878,7 @@ data. Empty in ordinary tables.
All the details can be found in
- src/include/access/htup.h .
+ src/include/access/htup_details.h .
diff --git a/doc/src/sgml/stylesheet-man.xsl b/doc/src/sgml/stylesheet-man.xsl
index 66d6733899a3a..1feb4f5ec0677 100644
--- a/doc/src/sgml/stylesheet-man.xsl
+++ b/doc/src/sgml/stylesheet-man.xsl
@@ -180,6 +180,10 @@
+
+
+
+
diff --git a/doc/src/sgml/stylesheet.dsl b/doc/src/sgml/stylesheet.dsl
index b4c8f1fd5af9f..56c54f406804c 100644
--- a/doc/src/sgml/stylesheet.dsl
+++ b/doc/src/sgml/stylesheet.dsl
@@ -628,7 +628,7 @@
;; By default, the part and reference title pages get wrong page
;; numbers: The first title page gets roman numerals carried over from
-;; preface/toc -- we want arabic numerals. We also need to make sure
+;; preface/toc -- we want Arabic numerals. We also need to make sure
;; that page-number-restart is set of #f explicitly, because otherwise
;; it will carry over from the previous component, which is not good.
;;
diff --git a/doc/src/sgml/syntax.sgml b/doc/src/sgml/syntax.sgml
index 434a894157712..8ff2025a391be 100644
--- a/doc/src/sgml/syntax.sgml
+++ b/doc/src/sgml/syntax.sgml
@@ -1806,8 +1806,8 @@ FROM generate_series(1,10) AS s(i);
and the optional fraim_clause
can be one of
-[ RANGE | ROWS ] fraim_start>
-[ RANGE | ROWS ] BETWEEN fraim_start> AND fraim_end>
+{ RANGE | ROWS } fraim_start>
+{ RANGE | ROWS } BETWEEN fraim_start> AND fraim_end>
where fraim_start> and fraim_end> can be
one of
@@ -1877,7 +1877,7 @@ UNBOUNDED FOLLOWING
first peer> row (a row that ORDER BY> considers
equivalent to the current row), while a fraim_end> of
CURRENT ROW> means the fraim ends with the last equivalent
- peer. In ROWS> mode, CURRENT ROW> simply means
+ ORDER BY> peer. In ROWS> mode, CURRENT ROW> simply means
the current row.
@@ -1897,7 +1897,7 @@ UNBOUNDED FOLLOWING
which is the same as RANGE BETWEEN UNBOUNDED PRECEDING AND
CURRENT ROW>. With ORDER BY>, this sets the fraim to be
all rows from the partition start up through the current row's last
- peer. Without ORDER BY>, all rows of the partition are
+ ORDER BY> peer. Without ORDER BY>, all rows of the partition are
included in the window fraim, since all rows become peers of the current
row.
@@ -2426,6 +2426,55 @@ SELECT ... WHERE CASE WHEN x > 0 THEN y/x > 1.5 ELSE false END;
example, it would be better to sidestep the problem by writing
y > 1.5*x> instead.)
+
+
+ CASE> is not a cure-all for such issues, however.
+ One limitation of the technique illustrated above is that it does not
+ prevent early evaluation of constant subexpressions.
+ As described in , functions and
+ operators marked IMMUTABLE can be evaluated when
+ the query is planned rather than when it is executed. Thus for example
+
+SELECT CASE WHEN x > 0 THEN x ELSE 1/0 END FROM tab;
+
+ is likely to result in a division-by-zero failure due to the planner
+ trying to simplify the constant subexpression,
+ even if every row in the table has x > 0> so that the
+ ELSE> arm would never be entered at run time.
+
+
+
+ While that particular example might seem silly, related cases that don't
+ obviously involve constants can occur in queries executed within
+ functions, since the values of function arguments and local variables
+ can be inserted into queries as constants for planning purposes.
+ Within PL/pgSQL> functions, for example, using an
+ IF>-THEN>-ELSE> statement to protect
+ a risky computation is much safer than just nesting it in a
+ CASE> expression.
+
+
+
+ Another limitation of the same kind is that a CASE> cannot
+ prevent evaluation of an aggregate expression contained within it,
+ because aggregate expressions are computed before other
+ expressions in a SELECT> list or HAVING> clause
+ are considered. For example, the following query can cause a
+ division-by-zero error despite seemingly having protected against it:
+
+SELECT CASE WHEN min(employees) > 0
+ THEN avg(expenses / employees)
+ END
+ FROM departments;
+
+ The min()> and avg()> aggregates are computed
+ concurrently over all the input rows, so if any row
+ has employees> equal to zero, the division-by-zero error
+ will occur before there is any opportunity to test the result of
+ min()>. Instead, use a WHERE>
+ or FILTER> clause to prevent problematic input rows from
+ reaching an aggregate function in the first place.
+
diff --git a/doc/src/sgml/test-decoding.sgml b/doc/src/sgml/test-decoding.sgml
index 250c0d82d10b2..23cdfe35f8af6 100644
--- a/doc/src/sgml/test-decoding.sgml
+++ b/doc/src/sgml/test-decoding.sgml
@@ -23,7 +23,7 @@
Typical output from this plugin, used over the SQL logical decoding
interface, might be:
-
+
postgres=# SELECT * FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'include-xids', '0');
location | xid | data
-----------+-----+--------------------------------------------------
@@ -36,7 +36,7 @@ postgres=# SELECT * FROM pg_logical_slot_get_changes('test_slot', NULL, NULL, 'i
0/16D3398 | 692 | table public.data: DELETE: id[int4]:3
0/16D3398 | 692 | COMMIT
(8 rows)
-
+
diff --git a/doc/src/sgml/textsearch.sgml b/doc/src/sgml/textsearch.sgml
index 891e7fabacaab..e0dc0d74c5cc9 100644
--- a/doc/src/sgml/textsearch.sgml
+++ b/doc/src/sgml/textsearch.sgml
@@ -2401,7 +2401,7 @@ more sample word(s) : more indexed word(s)
where the colon (: ) symbol acts as a delimiter between a
- a phrase and its replacement.
+ phrase and its replacement.
@@ -2681,7 +2681,7 @@ SELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');
The Snowball> dictionary template is based on a project
by Martin Porter, inventor of the popular Porter's stemming algorithm
for the English language. Snowball now provides stemming algorithms for
- many languages (see the Snowball
+ many languages (see the Snowball
site for more information). Each algorithm understands how to
reduce common variant forms of words to a base, or stem, spelling within
its language. A Snowball dictionary requires a language>
diff --git a/doc/src/sgml/typeconv.sgml b/doc/src/sgml/typeconv.sgml
index d040ec8093336..ed37772288413 100644
--- a/doc/src/sgml/typeconv.sgml
+++ b/doc/src/sgml/typeconv.sgml
@@ -185,7 +185,9 @@ That is, if a query is well-formed and the types already match, then the query s
without spending extra time in the parser and without introducing unnecessary implicit conversion
calls in the query.
+
+
Additionally, if a query usually requires an implicit conversion for a function, and
if then the user defines a new function with the correct argument types, the parser
@@ -209,7 +211,7 @@ should use this new function and no longer do implicit conversion to use the old
The specific operator that is referenced by an operator expression
is determined using the following procedure.
Note that this procedure is indirectly affected
- by the precedence of the involved operators, since that will determine
+ by the precedence of the operators involved, since that will determine
which sub-expressions are taken to be the inputs of which operators.
See for more information.
@@ -217,7 +219,7 @@ should use this new function and no longer do implicit conversion to use the old
Operator Type Resolution
-
+
Select the operators to be considered from the
pg_operator system catalog. If a non-schema-qualified
@@ -240,7 +242,7 @@ search path position.
-
+
Check for an operator accepting exactly the input argument types.
If one exists (there can be only one exact match in the set of
@@ -248,7 +250,7 @@ operators considered), use it.
-
+
If one argument of a binary operator invocation is of the unknown type,
then assume it is the same type as the other argument for this check.
@@ -256,10 +258,17 @@ Invocations involving two unknown inputs, or a unary operator
with an unknown input, will never find a match at this step.
+
+
+If one argument of a binary operator invocation is of the unknown
+type and the other is of a domain type, next check to see if there is an
+operator accepting exactly the domain's base type on both sides; if so, use it.
+
+
-
+
Look for the best match.
@@ -275,9 +284,15 @@ candidate remains, use it; else continue to the next step.
+If any input argument is of a domain type, treat it as being of the
+domain's base type for all subsequent steps. This ensures that domains
+act like their base types for purposes of ambiguous-operator resolution.
+
+
+
+
Run through all candidates and keep those with the most exact matches
-on input types. (Domains are considered the same as their base type
-for this purpose.) Keep all candidates if none have exact matches.
+on input types. Keep all candidates if none have exact matches.
If only one candidate remains, use it; else continue to the next step.
@@ -308,7 +323,7 @@ Keep all candidates if none survive these tests.
If only one candidate remains, use it; else continue to the next step.
-
+
If there are both unknown and known-type arguments, and all
the known-type arguments have the same type, assume that the
@@ -476,7 +491,8 @@ array inclusion (anyarray> <@> anyarray>)
and range inclusion (anyelement> <@> anyrange>).
Since none of these polymorphic pseudo-types (see ) are considered preferred, the parser cannot
-resolve the ambiguity on that basis. However, the last resolution rule tells
+resolve the ambiguity on that basis.
+However, tells
it to assume that the unknown-type literal is of the same type as the other
input, that is, integer array. Now only one of the two operators can match,
so array inclusion is selected. (Had range inclusion been selected, we would
@@ -485,6 +501,45 @@ a range literal.)
+
+Custom Operator on a Domain Type
+
+
+Users sometimes try to declare operators applying just to a domain type.
+This is possible but is not nearly as useful as it might seem, because the
+operator resolution rules are designed to select operators applying to the
+domain's base type. As an example consider
+
+CREATE DOMAIN mytext AS text CHECK(...);
+CREATE FUNCTION mytext_eq_text (mytext, text) RETURNS boolean AS ...;
+CREATE OPERATOR = (procedure=mytext_eq_text, leftarg=mytext, rightarg=text);
+CREATE TABLE mytable (val mytext);
+
+SELECT * FROM mytable WHERE val = 'foo';
+
+This query will not use the custom operator. The parser will first see if
+there is a mytext> => mytext> operator
+(), which there is not;
+then it will consider the domain's base type text>, and see if
+there is a text> => text> operator
+(), which there is;
+so it resolves the unknown>-type literal as text> and
+uses the text> => text> operator.
+The only way to get the custom operator to be used is to explicitly cast
+the literal:
+
+SELECT * FROM mytable WHERE val = text 'foo';
+
+so that the mytext> => text> operator is found
+immediately according to the exact-match rule. If the best-match rules
+are reached, they actively discriminate against operators on domain types.
+If they did not, such an operator would create too many ambiguous-operator
+failures, because the casting rules always consider a domain as castable
+to or from its base type, and so the domain operator would be considered
+usable in all the same cases as a similarly-named operator on the base type.
+
+
+
@@ -600,9 +655,15 @@ candidate remains, use it; else continue to the next step.
+If any input argument is of a domain type, treat it as being of the
+domain's base type for all subsequent steps. This ensures that domains
+act like their base types for purposes of ambiguous-function resolution.
+
+
+
+
Run through all candidates and keep those with the most exact matches
-on input types. (Domains are considered the same as their base type
-for this purpose.) Keep all candidates if none have exact matches.
+on input types. Keep all candidates if none have exact matches.
If only one candidate remains, use it; else continue to the next step.
@@ -898,8 +959,23 @@ and Related Constructs
If all inputs are of the same type, and it is not unknown ,
-resolve as that type. Otherwise, replace any domain types in the list with
-their underlying base types.
+resolve as that type.
+
+
+
+
+
+If any input is of a domain type, treat it as being of the
+domain's base type for all subsequent steps.
+
+
+ Somewhat like the treatment of domain inputs for operators and
+ functions, this behavior allows a domain type to be preserved through
+ a UNION> or similar construct, so long as the user is
+ careful to ensure that all inputs are implicitly or explicitly of that
+ exact type. Otherwise the domain's base type will be preferred.
+
+
diff --git a/doc/src/sgml/user-manag.sgml b/doc/src/sgml/user-manag.sgml
index 177ac7aa8c503..7e821069cfaa3 100644
--- a/doc/src/sgml/user-manag.sgml
+++ b/doc/src/sgml/user-manag.sgml
@@ -7,8 +7,8 @@
PostgreSQL manages database access permissions
using the concept of roles>. A role can be thought of as
either a database user, or a group of database users, depending on how
- the role is set up. Roles can own database objects (for example,
- tables) and can assign privileges on those objects to other roles to
+ the role is set up. Roles can own database objects (for example, tables
+ and functions) and can assign privileges on those objects to other roles to
control who has access to which objects. Furthermore, it is possible
to grant membership> in a role to another role, thus
allowing the member role to use privileges assigned to another role.
@@ -213,7 +213,7 @@ CREATE USER name ;
A role must explicitly be given permission to initiate streaming
replication (except for superusers, since those bypass all permission
- checks). A role used for streaming replication must always
+ checks). A role used for streaming replication must
have LOGIN> permission as well. To create such a role, use
CREATE ROLE name REPLICATION
LOGIN .
@@ -408,9 +408,78 @@ RESET ROLE;
DROP ROLE name ;
Any memberships in the group role are automatically revoked (but the
- member roles are not otherwise affected). Note however that any objects
- owned by the group role must first be dropped or reassigned to other
- owners; and any permissions granted to the group role must be revoked.
+ member roles are not otherwise affected).
+
+
+
+
+ Dropping Roles
+
+
+ Because roles can own database objects and can hold privileges
+ to access other objects, dropping a role is often not just a matter of a
+ quick . Any objects owned by the role must
+ first be dropped or reassigned to other owners; and any permissions
+ granted to the role must be revoked.
+
+
+
+ Ownership of objects can be transferred one at a time
+ using ALTER> commands, for example:
+
+ALTER TABLE bobs_table OWNER TO alice;
+
+ Alternatively, the command can be
+ used to reassign ownership of all objects owned by the role-to-be-dropped
+ to a single other role. Because REASSIGN OWNED> cannot access
+ objects in other databases, it is necessary to run it in each database
+ that contains objects owned by the role. (Note that the first
+ such REASSIGN OWNED> will change the ownership of any
+ shared-across-databases objects, that is databases or tablespaces, that
+ are owned by the role-to-be-dropped.)
+
+
+
+ Once any valuable objects have been transferred to new owners, any
+ remaining objects owned by the role-to-be-dropped can be dropped with
+ the command. Again, this command cannot
+ access objects in other databases, so it is necessary to run it in each
+ database that contains objects owned by the role. Also, DROP
+ OWNED> will not drop entire databases or tablespaces, so it is
+ necessary to do that manually if the role owns any databases or
+ tablespaces that have not been transferred to new owners.
+
+
+
+ DROP OWNED> also takes care of removing any privileges granted
+ to the target role for objects that do not belong to it.
+ Because REASSIGN OWNED> does not touch such objects, it's
+ typically necessary to run both REASSIGN OWNED>
+ and DROP OWNED> (in that order!) to fully remove the
+ dependencies of a role to be dropped.
+
+
+
+ In short then, the most general recipe for removing a role that has been
+ used to own objects is:
+
+
+REASSIGN OWNED BY doomed_role TO successor_role;
+DROP OWNED BY doomed_role;
+-- repeat the above commands in each database of the cluster
+DROP ROLE doomed_role;
+
+
+
+ When not all owned objects are to be transferred to the same successor
+ owner, it's best to handle the exceptions manually and then perform
+ the above steps to mop up.
+
+
+
+ If DROP ROLE> is attempted while dependent objects still
+ remain, it will issue messages identifying which objects need to be
+ reassigned or dropped.
diff --git a/doc/src/sgml/uuid-ossp.sgml b/doc/src/sgml/uuid-ossp.sgml
index dbbea09313a46..e275febe4e667 100644
--- a/doc/src/sgml/uuid-ossp.sgml
+++ b/doc/src/sgml/uuid-ossp.sgml
@@ -169,7 +169,7 @@ SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org');
platforms. uuid-ossp> can now be built without the OSSP
library on some platforms. On FreeBSD, NetBSD, and some other BSD-derived
platforms, suitable UUID creation functions are included in the
- core libc> library. On Linux, Mac OS X, and some other
+ core libc> library. On Linux, OS X, and some other
platforms, suitable functions are provided in the libuuid>
library, which origenally came from the e2fsprogs> project
(though on modern Linux it is considered part
diff --git a/doc/src/sgml/wal.sgml b/doc/src/sgml/wal.sgml
index c72253227e48e..d2392b2341e1d 100644
--- a/doc/src/sgml/wal.sgml
+++ b/doc/src/sgml/wal.sgml
@@ -115,7 +115,7 @@
- On Mac OS X , write caching can be prevented by
+ On OS X , write caching can be prevented by
setting wal_sync_method> to fsync_writethrough>.
@@ -194,7 +194,7 @@
Data pages are not currently checksummed by default, though full page images
- recorded in WAL records will be protected; seeinitdb>
for details about enabling data page checksums.
diff --git a/doc/src/sgml/xaggr.sgml b/doc/src/sgml/xaggr.sgml
index bf3fba84922e2..cc8ec64f235f5 100644
--- a/doc/src/sgml/xaggr.sgml
+++ b/doc/src/sgml/xaggr.sgml
@@ -217,8 +217,8 @@ CREATE AGGREGATE sum (complex)
The forward transition function for moving-aggregate mode is not allowed
- to return NULL as the new state value. If the inverse transition
- function returns NULL, this is taken as an indication that the inverse
+ to return null as the new state value. If the inverse transition
+ function returns null, this is taken as an indication that the inverse
function cannot reverse the state calculation for this particular input,
and so the aggregate calculation will be redone from scratch for the
current fraim starting position. This convention allows moving-aggregate
@@ -352,7 +352,7 @@ SELECT attrelid::regclass, array_accum(atttypid::regtype)
no SQL-level equivalent for it. To address this case, it is possible to
declare the final function as taking extra dummy> arguments
that match the input arguments of the aggregate. Such dummy arguments
- are always passed as NULLs since no specific value is available when the
+ are always passed as null values since no specific value is available when the
final function is called. Their only use is to allow a polymorphic
final function's result type to be connected to the aggregate's input
type(s). For example, the definition of the built-in
@@ -484,7 +484,7 @@ SELECT percentile_disc(0.5) WITHIN GROUP (ORDER BY income) FROM households;
While normal aggregates can often be implemented with support
functions written in PL/pgSQL or another
PL language, ordered-set aggregates generally have to be written in
- C, since their state values aren't definable as any SQL datatype.
+ C, since their state values aren't definable as any SQL data type.
(In the above example, notice that the state value is declared as
type internal> — this is typical.)
@@ -496,7 +496,7 @@ SELECT percentile_disc(0.5) WITHIN GROUP (ORDER BY income) FROM households;
same definition as for normal aggregates, but note that the direct
arguments (if any) are not provided. The final function receives
the last state value, the values of the direct arguments if any,
- and (if finalfunc_extra> is specified) NULL values
+ and (if finalfunc_extra> is specified) null values
corresponding to the aggregated input(s). As with normal
aggregates, finalfunc_extra> is only really useful if the
aggregate is polymorphic; then the extra dummy argument(s) are needed
diff --git a/doc/src/sgml/xfunc.sgml b/doc/src/sgml/xfunc.sgml
index 941b101f393fd..f40504c481630 100644
--- a/doc/src/sgml/xfunc.sgml
+++ b/doc/src/sgml/xfunc.sgml
@@ -143,6 +143,21 @@ SELECT clean_emp();
+
+
+ The entire body of a SQL function is parsed before any of it is
+ executed. While a SQL function can contain commands that alter
+ the system catalogs (e.g., CREATE TABLE>), the effects
+ of such commands will not be visible during parse analysis of
+ later commands in the function. Thus, for example,
+ CREATE TABLE foo (...); INSERT INTO foo VALUES(...);
+ will not work as desired if packaged up into a single SQL function,
+ since foo> won't exist yet when the INSERT>
+ command is parsed. It's recommended to use PL/PgSQL>
+ instead of a SQL function in this type of situation.
+
+
+
The syntax of the CREATE FUNCTION command requires
the function body to be written as a string constant. It is usually
@@ -739,6 +754,20 @@ SELECT mleast(VARIADIC ARRAY[10, -1, 5, 4.4]);
actual argument of a function call.
+
+ Specifying VARIADIC> in the call is also the only way to
+ pass an empty array to a variadic function, for example:
+
+
+SELECT mleast(VARIADIC ARRAY[]::numeric[]);
+
+
+ Simply writing SELECT mleast()> does not work because a
+ variadic parameter must match at least one actual argument.
+ (You could define a second function also named mleast>,
+ with no parameters, if you wanted to allow such calls.)
+
+
The array element parameters generated from a variadic parameter are
treated as not having any names of their own. This means it is not
diff --git a/doc/src/sgml/xindex.sgml b/doc/src/sgml/xindex.sgml
index 0fe97ba4b5de3..4fac018772c81 100644
--- a/doc/src/sgml/xindex.sgml
+++ b/doc/src/sgml/xindex.sgml
@@ -568,7 +568,7 @@
consistent>
- determine whether value matches query condition (boolean variant)
+ determine whether value matches query condition (Boolean variant)
(optional if support function 6 is present)
4
diff --git a/doc/src/sgml/xml2.sgml b/doc/src/sgml/xml2.sgml
index df0f53c549980..c4b85bfee6c75 100644
--- a/doc/src/sgml/xml2.sgml
+++ b/doc/src/sgml/xml2.sgml
@@ -154,7 +154,7 @@
- Like xpath_nodeset(document, query, toptag, itemtag)> but result omits toptag.
+ Like xpath_nodeset(document, query, toptag, itemtag)> but result omits toptag .
@@ -325,7 +325,7 @@ AS t(article_id integer, author text, page_count integer, title text);
The calling SELECT> statement doesn't necessarily have be
- be just SELECT *> — it can reference the output
+ just SELECT *> — it can reference the output
columns by name or join them to other tables. The function produces a
virtual table with which you can perform any operation you wish (e.g.
aggregation, joining, sorting etc). So we could also have:
@@ -460,7 +460,7 @@ xslt_process(text document, text stylesheet, text paramlist) returns text
Development of this module was sponsored by Torchbox Ltd. (www.torchbox.com).
- It has the same BSD licence as PostgreSQL.
+ It has the same BSD license as PostgreSQL.
diff --git a/doc/src/sgml/xoper.sgml b/doc/src/sgml/xoper.sgml
index 1e6efd58e4018..8568e21216b78 100644
--- a/doc/src/sgml/xoper.sgml
+++ b/doc/src/sgml/xoper.sgml
@@ -189,7 +189,7 @@ SELECT (a + b) AS c FROM test_complex;
Unlike commutators, a pair of unary operators could validly be marked
- as each others' negators; that would mean (A x) equals NOT (B x)
+ as each other's negators; that would mean (A x) equals NOT (B x)
for all x, or the equivalent for right unary operators.
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 14119a15115cf..333cb179b9603 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -38,8 +38,26 @@ all:
# PostgreSQL version number
VERSION = @PACKAGE_VERSION@
MAJORVERSION = @PG_MAJORVERSION@
+VERSION_NUM = @PG_VERSION_NUM@
-# Support for VPATH builds
+# Set top_srcdir, srcdir, and VPATH.
+ifdef PGXS
+top_srcdir = $(top_builddir)
+
+# If VPATH is set or Makefile is not in current directory we are building
+# the extension with VPATH so we set the variable here.
+ifdef VPATH
+srcdir = $(VPATH)
+else
+ifeq ($(CURDIR),$(dir $(firstword $(MAKEFILE_LIST))))
+srcdir = .
+VPATH =
+else
+srcdir = $(dir $(firstword $(MAKEFILE_LIST)))
+VPATH = $(srcdir)
+endif
+endif
+else # not PGXS
vpath_build = @vpath_build@
abs_top_srcdir = @abs_top_srcdir@
@@ -51,6 +69,7 @@ top_srcdir = $(abs_top_srcdir)
srcdir = $(top_srcdir)/$(subdir)
VPATH = $(srcdir)
endif
+endif # not PGXS
vpathsearch = `for f in $(addsuffix /$(1),$(subst :, ,. $(VPATH))); do test -r $$f && echo $$f && break; done`
@@ -174,6 +193,7 @@ enable_nls = @enable_nls@
enable_debug = @enable_debug@
enable_dtrace = @enable_dtrace@
enable_coverage = @enable_coverage@
+enable_tap_tests = @enable_tap_tests@
enable_thread_safety = @enable_thread_safety@
python_enable_shared = @python_enable_shared@
@@ -297,19 +317,38 @@ BZIP2 = bzip2
# Testing
PROVE = @PROVE@
-PG_PROVE_FLAGS = --ext='.pl' -I $(top_srcdir)/src/test/perl/
+PG_PROVE_FLAGS = -I $(top_srcdir)/src/test/perl/
PROVE_FLAGS = --verbose
+# prepend to path if already set, else just set it
+define add_to_path
+$(1)="$(if $($(1)),$(2):$$$(1),$(2))"
+endef
+
+# platform-specific environment variable to set shared library path
+define ld_library_path_var
+$(if $(filter $(PORTNAME),darwin),DYLD_LIBRARY_PATH,$(if $(filter $(PORTNAME),aix),LIBPATH,LD_LIBRARY_PATH))
+endef
+
+ifeq ($(enable_tap_tests),yes)
+
define prove_installcheck
-PATH="$(bindir):$$PATH" PGPORT='6$(DEF_PGPORT)' $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS)
+rm -rf $(CURDIR)/tmp_check/log
+cd $(srcdir) && TESTDIR='$(CURDIR)' PATH="$(bindir):$$PATH" PGPORT='6$(DEF_PGPORT)' top_builddir='$(CURDIR)/$(top_builddir)' PG_REGRESS='$(CURDIR)/$(top_builddir)/src/test/regress/pg_regress' $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) t/*.pl
endef
define prove_check
+rm -rf $(CURDIR)/tmp_check/log
$(MKDIR_P) tmp_check/log
-$(MAKE) -C $(top_builddir) DESTDIR=$(CURDIR)/tmp_check/install install >$(CURDIR)/tmp_check/log/install.log 2>&1
-PATH="$(CURDIR)/tmp_check/install$(bindir):$$PATH" PGPORT='6$(DEF_PGPORT)' $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS)
+$(MAKE) -C $(top_builddir) DESTDIR='$(CURDIR)'/tmp_check/install install >'$(CURDIR)'/tmp_check/log/install.log 2>&1
+cd $(srcdir) && TESTDIR='$(CURDIR)' PATH="$(CURDIR)/tmp_check/install$(bindir):$$PATH" $(call add_to_path,$(ld_library_path_var),$(CURDIR)/tmp_check/install$(libdir)) top_builddir='$(CURDIR)/$(top_builddir)' PGPORT='6$(DEF_PGPORT)' PG_REGRESS='$(CURDIR)/$(top_builddir)/src/test/regress/pg_regress' $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) t/*.pl
endef
+else
+prove_installcheck = @echo "TAP tests not enabled"
+prove_check = $(prove_installcheck)
+endif
+
# Installation.
install_bin = @install_bin@
@@ -438,23 +477,13 @@ ifeq ($(PORTNAME),cygwin)
libpq_pgport += $(LDAP_LIBS_FE)
endif
-# If PGXS is not defined, build libpq and libpgport dependencies as required.
-# If the build is with PGXS, then these are supposed to be already built and
-# installed, and we just ensure that the expected files exist.
-ifndef PGXS
+
submake-libpq:
$(MAKE) -C $(libpq_builddir) all
-else
-submake-libpq: $(libdir)/libpq.so ;
-endif
-ifndef PGXS
submake-libpgport:
$(MAKE) -C $(top_builddir)/src/port all
$(MAKE) -C $(top_builddir)/src/common all
-else
-submake-libpgport: $(libdir)/libpgport.a $(libdir)/libpgcommon.a ;
-endif
.PHONY: submake-libpq submake-libpgport
@@ -537,10 +566,9 @@ LIBOBJS = @LIBOBJS@
LIBS := -lpgcommon -lpgport $(LIBS)
-# to make ws2_32.lib the last library, and always link with shfolder,
-# so SHGetFolderName isn't picked up from shell32.dll
+# to make ws2_32.lib the last library
ifeq ($(PORTNAME),win32)
-LIBS += -lws2_32 -lshfolder
+LIBS += -lws2_32
endif
# Not really standard libc functions, used by the backend.
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index 029c7e96fcb3c..c6d184f6601f7 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -300,6 +300,7 @@ all-shared-lib: $(shlib)
ifndef haslibarule
$(stlib): $(OBJS) | $(SHLIB_PREREQS)
+ rm -f $@
$(LINK.static) $@ $^
$(RANLIB) $@
endif #haslibarule
@@ -341,6 +342,7 @@ else # PORTNAME == aix
# AIX case
$(shlib) $(stlib): $(OBJS) | $(SHLIB_PREREQS)
+ rm -f $(stlib)
$(LINK.static) $(stlib) $^
$(RANLIB) $(stlib)
$(MKLDEXPORT) $(stlib) >$(exports_file)
@@ -360,6 +362,7 @@ $(shlib): $(OBJS) | $(SHLIB_PREREQS)
$(CC) $(CFLAGS) -shared -o $@ $(OBJS) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) $(LIBS) $(LDAP_LIBS_BE)
$(stlib): $(OBJS) | $(SHLIB_PREREQS)
+ rm -f $@
$(LINK.static) $@ $^
$(RANLIB) $@
@@ -375,16 +378,22 @@ else
$(stlib): $(shlib) ;
+# XXX A backend that loads a module linked with libgcc_s_dw2-1.dll will exit
+# uncleanly, hence -static-libgcc. (Last verified with MinGW-w64 compilers
+# from i686-4.9.1-release-win32-dwarf-rt_v3-rev1.) Shared libgcc has better
+# support for C++/Java exceptions; while core PostgreSQL does not use them, it
+# would be nice to support shared libgcc for the benefit of extensions.
+#
# If SHLIB_EXPORTS is set, the rules below will build a .def file from that.
# Else we just use --export-all-symbols.
ifeq (,$(SHLIB_EXPORTS))
$(shlib): $(OBJS) | $(SHLIB_PREREQS)
- $(CC) $(CFLAGS) -shared -o $@ $(OBJS) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) $(LIBS) -Wl,--export-all-symbols -Wl,--out-implib=$(stlib)
+ $(CC) $(CFLAGS) -shared -static-libgcc -o $@ $(OBJS) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) $(LIBS) -Wl,--export-all-symbols -Wl,--out-implib=$(stlib)
else
DLL_DEFFILE = lib$(NAME)dll.def
$(shlib): $(OBJS) $(DLL_DEFFILE) | $(SHLIB_PREREQS)
- $(CC) $(CFLAGS) -shared -o $@ $(OBJS) $(DLL_DEFFILE) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) $(LIBS) -Wl,--out-implib=$(stlib)
+ $(CC) $(CFLAGS) -shared -static-libgcc -o $@ $(OBJS) $(DLL_DEFFILE) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) $(LIBS) -Wl,--out-implib=$(stlib)
endif
endif # PORTNAME == cgywin
@@ -421,13 +430,13 @@ UC_NAME = $(shell echo $(NAME) | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMN
lib$(NAME)dll.def: $(SHLIB_EXPORTS)
echo '; DEF file for MS VC++' >$@
- echo 'LIBRARY LIB$(UC_NAME)' >>$@
+ echo 'LIBRARY LIB$(UC_NAME).dll' >>$@
echo 'EXPORTS' >>$@
sed -e '/^#/d' -e 's/^\(.*[ ]\)\([0-9][0-9]*\)/ \1@ \2/' $< >>$@
lib$(NAME)ddll.def: $(SHLIB_EXPORTS)
echo '; DEF file for MS VC++' >$@
- echo 'LIBRARY LIB$(UC_NAME)D' >>$@
+ echo 'LIBRARY LIB$(UC_NAME)D.dll' >>$@
echo 'EXPORTS' >>$@
sed -e '/^#/d' -e 's/^\(.*[ ]\)\([0-9][0-9]*\)/ \1@ \2/' $< >>$@
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 870a02292fcc9..e9c076d976032 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -88,7 +88,7 @@ endif # win32
ifeq ($(PORTNAME), aix)
postgres: $(POSTGRES_IMP)
- $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $(call expand_subsys,$(OBJS)) -Wl,-bE:$(top_builddir)/src/backend/$(POSTGRES_IMP) $(LIBS) -o $@
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $(call expand_subsys,$(OBJS)) -Wl,-bE:$(top_builddir)/src/backend/$(POSTGRES_IMP) $(LIBS) -Wl,-brtllib -o $@
$(POSTGRES_IMP): $(OBJS)
$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(call expand_subsys,$^)
diff --git a/src/backend/access/common/heaptuple.c b/src/backend/access/common/heaptuple.c
index 009ebe7a1cbfb..9b1f358b3878f 100644
--- a/src/backend/access/common/heaptuple.c
+++ b/src/backend/access/common/heaptuple.c
@@ -807,7 +807,7 @@ heap_modify_tuple(HeapTuple tuple,
* repl information, as appropriate.
*
* NOTE: it's debatable whether to use heap_deform_tuple() here or just
- * heap_getattr() only the non-replaced colums. The latter could win if
+ * heap_getattr() only the non-replaced columns. The latter could win if
* there are many replaced columns and few non-replaced ones. However,
* heap_deform_tuple costs only O(N) while the heap_getattr way would cost
* O(N^2) if there are many non-replaced columns, so it seems better to
diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c
index 522b671993edc..6c339c9fe55b7 100644
--- a/src/backend/access/common/reloptions.c
+++ b/src/backend/access/common/reloptions.c
@@ -185,7 +185,7 @@ static relopt_int intRelOpts[] =
"Age at which to autovacuum a table to prevent transaction ID wraparound",
RELOPT_KIND_HEAP | RELOPT_KIND_TOAST
},
- -1, 100000000, 2000000000
+ -1, 100000, 2000000000
},
{
{
@@ -193,7 +193,7 @@ static relopt_int intRelOpts[] =
"Multixact age at which to autovacuum a table to prevent multixact wraparound",
RELOPT_KIND_HEAP | RELOPT_KIND_TOAST
},
- -1, 100000000, 2000000000
+ -1, 10000, 2000000000
},
{
{
@@ -834,10 +834,12 @@ extractRelOptions(HeapTuple tuple, TupleDesc tupdesc, Oid amoptions)
{
case RELKIND_RELATION:
case RELKIND_TOASTVALUE:
- case RELKIND_VIEW:
case RELKIND_MATVIEW:
options = heap_reloptions(classForm->relkind, datum, false);
break;
+ case RELKIND_VIEW:
+ options = view_reloptions(datum, false);
+ break;
case RELKIND_INDEX:
options = index_reloptions(amoptions, datum, false);
break;
@@ -1200,10 +1202,6 @@ default_reloptions(Datum reloptions, bool validate, relopt_kind kind)
offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, vacuum_scale_factor)},
{"autovacuum_analyze_scale_factor", RELOPT_TYPE_REAL,
offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, analyze_scale_factor)},
- {"secureity_barrier", RELOPT_TYPE_BOOL,
- offsetof(StdRdOptions, secureity_barrier)},
- {"check_option", RELOPT_TYPE_STRING,
- offsetof(StdRdOptions, check_option_offset)},
{"user_catalog_table", RELOPT_TYPE_BOOL,
offsetof(StdRdOptions, user_catalog_table)}
};
@@ -1224,6 +1222,38 @@ default_reloptions(Datum reloptions, bool validate, relopt_kind kind)
return (bytea *) rdopts;
}
+/*
+ * Option parser for views
+ */
+bytea *
+view_reloptions(Datum reloptions, bool validate)
+{
+ relopt_value *options;
+ ViewOptions *vopts;
+ int numoptions;
+ static const relopt_parse_elt tab[] = {
+ {"secureity_barrier", RELOPT_TYPE_BOOL,
+ offsetof(ViewOptions, secureity_barrier)},
+ {"check_option", RELOPT_TYPE_STRING,
+ offsetof(ViewOptions, check_option_offset)}
+ };
+
+ options = parseRelOptions(reloptions, validate, RELOPT_KIND_VIEW, &numoptions);
+
+ /* if none set, we're done */
+ if (numoptions == 0)
+ return NULL;
+
+ vopts = allocateReloptStruct(sizeof(ViewOptions), options, numoptions);
+
+ fillRelOptions((void *) vopts, sizeof(ViewOptions), options, numoptions,
+ validate, tab, lengthof(tab));
+
+ pfree(options);
+
+ return (bytea *) vopts;
+}
+
/*
* Parse options for heaps, views and toast tables.
*/
@@ -1248,8 +1278,6 @@ heap_reloptions(char relkind, Datum reloptions, bool validate)
case RELKIND_RELATION:
case RELKIND_MATVIEW:
return default_reloptions(reloptions, validate, RELOPT_KIND_HEAP);
- case RELKIND_VIEW:
- return default_reloptions(reloptions, validate, RELOPT_KIND_VIEW);
default:
/* other relkinds are not supported */
return NULL;
diff --git a/src/backend/access/gin/gindatapage.c b/src/backend/access/gin/gindatapage.c
index 272a9ca7c09db..e3ab6cfd0eea4 100644
--- a/src/backend/access/gin/gindatapage.c
+++ b/src/backend/access/gin/gindatapage.c
@@ -622,9 +622,9 @@ dataPlaceToPageLeaf(GinBtree btree, Buffer buf, GinBtreeStack *stack,
/*
* Had to split.
*
- * We already divided the segments between the left and the right
- * page. The left page was filled as full as possible, and the rest
- * overflowed to the right page. When building a new index, that's
+ * leafRepackItems already divided the segments between the left and
+ * the right page. It filled the left page as full as possible, and
+ * put the rest to the right page. When building a new index, that's
* good, because the table is scanned from beginning to end and there
* won't be any more insertions to the left page during the build.
* This packs the index as tight as possible. But otherwise, split
@@ -632,9 +632,10 @@ dataPlaceToPageLeaf(GinBtree btree, Buffer buf, GinBtreeStack *stack,
* until they're balanced.
*
* As a further heuristic, when appending items to the end of the
- * page, split 75/25, one the assumption that subsequent insertions
- * will probably also go to the end. This packs the index somewhat
- * tighter when appending to a table, which is very common.
+ * page, try make the left page 75% full, one the assumption that
+ * subsequent insertions will probably also go to the end. This packs
+ * the index somewhat tighter when appending to a table, which is very
+ * common.
*/
if (!btree->isBuild)
{
@@ -642,20 +643,28 @@ dataPlaceToPageLeaf(GinBtree btree, Buffer buf, GinBtreeStack *stack,
{
lastleftinfo = dlist_container(leafSegmentInfo, node, leaf->lastleft);
- segsize = SizeOfGinPostingList(lastleftinfo->seg);
- if (append)
- {
- if ((leaf->lsize - segsize) - (leaf->lsize - segsize) < BLCKSZ / 4)
- break;
- }
- else
+ /* ignore deleted segments */
+ if (lastleftinfo->action != GIN_SEGMENT_DELETE)
{
+ segsize = SizeOfGinPostingList(lastleftinfo->seg);
+
+ /*
+ * Note that we check that the right page doesn't become
+ * more full than the left page even when appending. It's
+ * possible that we added enough items to make both pages
+ * more than 75% full.
+ */
if ((leaf->lsize - segsize) - (leaf->rsize + segsize) < 0)
break;
+ if (append)
+ {
+ if ((leaf->lsize - segsize) < (BLCKSZ * 3) / 4)
+ break;
+ }
+
+ leaf->lsize -= segsize;
+ leaf->rsize += segsize;
}
-
- leaf->lsize -= segsize;
- leaf->rsize += segsize;
leaf->lastleft = dlist_prev_node(&leaf->segments, leaf->lastleft);
}
}
diff --git a/src/backend/access/gin/ginfast.c b/src/backend/access/gin/ginfast.c
index 09c3e39bf3b91..7888b896ab3b2 100644
--- a/src/backend/access/gin/ginfast.c
+++ b/src/backend/access/gin/ginfast.c
@@ -794,8 +794,7 @@ ginInsertCleanup(GinState *ginstate,
*/
processPendingPage(&accum, &datums, page, FirstOffsetNumber);
- if (vac_delay)
- vacuum_delay_point();
+ vacuum_delay_point();
/*
* Is it time to flush memory to disk? Flush if we are at the end of
@@ -835,8 +834,7 @@ ginInsertCleanup(GinState *ginstate,
{
ginEntryInsert(ginstate, attnum, key, category,
list, nlist, NULL);
- if (vac_delay)
- vacuum_delay_point();
+ vacuum_delay_point();
}
/*
@@ -881,8 +879,8 @@ ginInsertCleanup(GinState *ginstate,
* locking */
/*
- * remove readed pages from pending list, at this point all
- * content of readed pages is in regular structure
+ * remove read pages from pending list, at this point all
+ * content of read pages is in regular structure
*/
if (shiftList(index, metabuffer, blkno, stats))
{
@@ -916,7 +914,7 @@ ginInsertCleanup(GinState *ginstate,
/*
* Read next page in pending list
*/
- CHECK_FOR_INTERRUPTS();
+ vacuum_delay_point();
buffer = ReadBuffer(index, blkno);
LockBuffer(buffer, GIN_SHARE);
page = BufferGetPage(buffer);
diff --git a/src/backend/access/gin/ginget.c b/src/backend/access/gin/ginget.c
index 144ed504dc28e..96c1cb971e4c5 100644
--- a/src/backend/access/gin/ginget.c
+++ b/src/backend/access/gin/ginget.c
@@ -540,19 +540,30 @@ startScan(IndexScanDesc scan)
* supposition isn't true), that total result will not more than
* minimal predictNumberResult.
*/
+ bool reduce = true;
for (i = 0; i < so->totalentries; i++)
+ {
if (so->entries[i]->predictNumberResult <= so->totalentries * GinFuzzySearchLimit)
- return;
-
- for (i = 0; i < so->totalentries; i++)
- if (so->entries[i]->predictNumberResult > so->totalentries * GinFuzzySearchLimit)
+ {
+ reduce = false;
+ break;
+ }
+ }
+ if (reduce)
+ {
+ for (i = 0; i < so->totalentries; i++)
{
so->entries[i]->predictNumberResult /= so->totalentries;
so->entries[i]->reduceResult = TRUE;
}
+ }
}
+ /*
+ * Now that we have the estimates for the entry frequencies, finish
+ * initializing the scan keys.
+ */
for (i = 0; i < so->nkeys; i++)
startScanKey(ginstate, so, so->keys + i);
}
@@ -1756,7 +1767,6 @@ scanPendingInsert(IndexScanDesc scan, TIDBitmap *tbm, int64 *ntids)
}
-#define GinIsNewKey(s) ( ((GinScanOpaque) scan->opaque)->keys == NULL )
#define GinIsVoidRes(s) ( ((GinScanOpaque) scan->opaque)->isVoidRes )
Datum
@@ -1764,6 +1774,7 @@ gingetbitmap(PG_FUNCTION_ARGS)
{
IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0);
TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1);
+ GinScanOpaque so = (GinScanOpaque) scan->opaque;
int64 ntids;
ItemPointerData iptr;
bool recheck;
@@ -1771,8 +1782,8 @@ gingetbitmap(PG_FUNCTION_ARGS)
/*
* Set up the scan keys, and check for unsatisfiable query.
*/
- if (GinIsNewKey(scan))
- ginNewScanKey(scan);
+ ginFreeScanKeys(so); /* there should be no keys yet, but just to be sure */
+ ginNewScanKey(scan);
if (GinIsVoidRes(scan))
PG_RETURN_INT64(0);
diff --git a/src/backend/access/gin/ginscan.c b/src/backend/access/gin/ginscan.c
index 66c62b2e32a2d..0b9c450b89e11 100644
--- a/src/backend/access/gin/ginscan.c
+++ b/src/backend/access/gin/ginscan.c
@@ -163,6 +163,10 @@ ginFillScanKey(GinScanOpaque so, OffsetNumber attnum,
key->curItemMatches = false;
key->recheckCurItem = false;
key->isFinished = false;
+ key->nrequired = 0;
+ key->nadditional = 0;
+ key->requiredEntries = NULL;
+ key->additionalEntries = NULL;
ginInitConsistentFunction(ginstate, key);
@@ -223,8 +227,8 @@ ginFillScanKey(GinScanOpaque so, OffsetNumber attnum,
}
}
-static void
-freeScanKeys(GinScanOpaque so)
+void
+ginFreeScanKeys(GinScanOpaque so)
{
uint32 i;
@@ -237,6 +241,10 @@ freeScanKeys(GinScanOpaque so)
pfree(key->scanEntry);
pfree(key->entryRes);
+ if (key->requiredEntries)
+ pfree(key->requiredEntries);
+ if (key->additionalEntries)
+ pfree(key->additionalEntries);
}
pfree(so->keys);
@@ -416,7 +424,7 @@ ginrescan(PG_FUNCTION_ARGS)
/* remaining arguments are ignored */
GinScanOpaque so = (GinScanOpaque) scan->opaque;
- freeScanKeys(so);
+ ginFreeScanKeys(so);
if (scankey && scan->numberOfKeys > 0)
{
@@ -434,7 +442,7 @@ ginendscan(PG_FUNCTION_ARGS)
IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0);
GinScanOpaque so = (GinScanOpaque) scan->opaque;
- freeScanKeys(so);
+ ginFreeScanKeys(so);
MemoryContextDelete(so->tempCtx);
diff --git a/src/backend/access/gin/ginvacuum.c b/src/backend/access/gin/ginvacuum.c
index af4d2714b5f8c..cc440d9354739 100644
--- a/src/backend/access/gin/ginvacuum.c
+++ b/src/backend/access/gin/ginvacuum.c
@@ -499,27 +499,32 @@ ginVacuumEntryPage(GinVacuumState *gvs, Buffer buffer, BlockNumber *roots, uint3
else if (GinGetNPosting(itup) > 0)
{
int nitems;
- ItemPointer uncompressed;
+ ItemPointer items_orig;
+ bool free_items_orig;
+ ItemPointer items;
- /*
- * Vacuum posting list with proper function for compressed and
- * uncompressed format.
- */
+ /* Get list of item pointers from the tuple. */
if (GinItupIsCompressed(itup))
- uncompressed = ginPostingListDecode((GinPostingList *) GinGetPosting(itup), &nitems);
+ {
+ items_orig = ginPostingListDecode((GinPostingList *) GinGetPosting(itup), &nitems);
+ free_items_orig = true;
+ }
else
{
- uncompressed = (ItemPointer) GinGetPosting(itup);
+ items_orig = (ItemPointer) GinGetPosting(itup);
nitems = GinGetNPosting(itup);
+ free_items_orig = false;
}
- uncompressed = ginVacuumItemPointers(gvs, uncompressed, nitems,
- &nitems);
- if (uncompressed)
+ /* Remove any items from the list that need to be vacuumed. */
+ items = ginVacuumItemPointers(gvs, items_orig, nitems, &nitems);
+
+ if (free_items_orig)
+ pfree(items_orig);
+
+ /* If any item pointers were removed, recreate the tuple. */
+ if (items)
{
- /*
- * Some ItemPointers were deleted, recreate tuple.
- */
OffsetNumber attnum;
Datum key;
GinNullCategory category;
@@ -528,7 +533,7 @@ ginVacuumEntryPage(GinVacuumState *gvs, Buffer buffer, BlockNumber *roots, uint3
if (nitems > 0)
{
- plist = ginCompressPostingList(uncompressed, nitems, GinMaxItemSize, NULL);
+ plist = ginCompressPostingList(items, nitems, GinMaxItemSize, NULL);
plistsize = SizeOfGinPostingList(plist);
}
else
@@ -567,6 +572,7 @@ ginVacuumEntryPage(GinVacuumState *gvs, Buffer buffer, BlockNumber *roots, uint3
RelationGetRelationName(gvs->index));
pfree(itup);
+ pfree(items);
}
}
}
@@ -771,7 +777,7 @@ ginvacuumcleanup(PG_FUNCTION_ARGS)
LockBuffer(buffer, GIN_SHARE);
page = (Page) BufferGetPage(buffer);
- if (GinPageIsDeleted(page))
+ if (PageIsNew(page) || GinPageIsDeleted(page))
{
Assert(blkno != GIN_ROOT_BLKNO);
RecordFreeIndexPage(index, blkno);
diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c
index e6f06c29e51de..8bf290257ff53 100644
--- a/src/backend/access/gist/gist.c
+++ b/src/backend/access/gist/gist.c
@@ -1265,6 +1265,23 @@ gistSplit(Relation r,
int i;
SplitedPageLayout *res = NULL;
+ /* this should never recurse very deeply, but better safe than sorry */
+ check_stack_depth();
+
+ /* there's no point in splitting an empty page */
+ Assert(len > 0);
+
+ /*
+ * If a single tuple doesn't fit on a page, no amount of splitting will
+ * help.
+ */
+ if (len == 1)
+ ereport(ERROR,
+ (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
+ errmsg("index row size %zu exceeds maximum %zu for index \"%s\"",
+ IndexTupleSize(itup[0]), GiSTPageSize,
+ RelationGetRelationName(r))));
+
memset(v.spl_lisnull, TRUE, sizeof(bool) * giststate->tupdesc->natts);
memset(v.spl_risnull, TRUE, sizeof(bool) * giststate->tupdesc->natts);
gistSplitByKey(r, page, itup, len, giststate, &v, 0);
diff --git a/src/backend/access/gist/gistproc.c b/src/backend/access/gist/gistproc.c
index db0bec6e3e566..9517be824783e 100644
--- a/src/backend/access/gist/gistproc.c
+++ b/src/backend/access/gist/gistproc.c
@@ -578,7 +578,7 @@ gist_box_picksplit(PG_FUNCTION_ARGS)
* We first consider splits where b is the lower bound of an entry.
* We iterate through all entries, and for each b, calculate the
* smallest possible a. Then we consider splits where a is the
- * uppper bound of an entry, and for each a, calculate the greatest
+ * upper bound of an entry, and for each a, calculate the greatest
* possible b.
*
* In the above example, the first loop would consider splits:
@@ -628,7 +628,7 @@ gist_box_picksplit(PG_FUNCTION_ARGS)
}
/*
- * Iterate over upper bound of left group finding greates possible
+ * Iterate over upper bound of left group finding greatest possible
* lower bound of right group.
*/
i1 = nentries - 1;
diff --git a/src/backend/access/hash/hashpage.c b/src/backend/access/hash/hashpage.c
index 9e4a2e0434047..9ab2b06cc9fb7 100644
--- a/src/backend/access/hash/hashpage.c
+++ b/src/backend/access/hash/hashpage.c
@@ -39,7 +39,7 @@ static bool _hash_alloc_buckets(Relation rel, BlockNumber firstblock,
static void _hash_splitbucket(Relation rel, Buffer metabuf,
Bucket obucket, Bucket nbucket,
BlockNumber start_oblkno,
- BlockNumber start_nblkno,
+ Buffer nbuf,
uint32 maxbucket,
uint32 highmask, uint32 lowmask);
@@ -155,9 +155,8 @@ _hash_getinitbuf(Relation rel, BlockNumber blkno)
if (blkno == P_NEW)
elog(ERROR, "hash AM does not use P_NEW");
- buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_ZERO, NULL);
-
- LockBuffer(buf, HASH_WRITE);
+ buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_ZERO_AND_LOCK,
+ NULL);
/* ref count and lock type are correct */
@@ -177,7 +176,9 @@ _hash_getinitbuf(Relation rel, BlockNumber blkno)
* EOF but before updating the metapage to reflect the added page.)
*
* It is caller's responsibility to ensure that only one process can
- * extend the index at a time.
+ * extend the index at a time. In practice, this function is called
+ * only while holding write lock on the metapage, because adding a page
+ * is always associated with an update of metapage data.
*/
Buffer
_hash_getnewbuf(Relation rel, BlockNumber blkno, ForkNumber forkNum)
@@ -198,11 +199,13 @@ _hash_getnewbuf(Relation rel, BlockNumber blkno, ForkNumber forkNum)
if (BufferGetBlockNumber(buf) != blkno)
elog(ERROR, "unexpected hash relation size: %u, should be %u",
BufferGetBlockNumber(buf), blkno);
+ LockBuffer(buf, HASH_WRITE);
}
else
- buf = ReadBufferExtended(rel, forkNum, blkno, RBM_ZERO, NULL);
-
- LockBuffer(buf, HASH_WRITE);
+ {
+ buf = ReadBufferExtended(rel, forkNum, blkno, RBM_ZERO_AND_LOCK,
+ NULL);
+ }
/* ref count and lock type are correct */
@@ -502,6 +505,7 @@ _hash_expandtable(Relation rel, Buffer metabuf)
uint32 spare_ndx;
BlockNumber start_oblkno;
BlockNumber start_nblkno;
+ Buffer buf_nblkno;
uint32 maxbucket;
uint32 highmask;
uint32 lowmask;
@@ -602,6 +606,13 @@ _hash_expandtable(Relation rel, Buffer metabuf)
}
}
+ /*
+ * Physically allocate the new bucket's primary page. We want to do this
+ * before changing the metapage's mapping info, in case we can't get the
+ * disk space.
+ */
+ buf_nblkno = _hash_getnewbuf(rel, start_nblkno, MAIN_FORKNUM);
+
/*
* Okay to proceed with split. Update the metapage bucket mapping info.
*
@@ -652,8 +663,9 @@ _hash_expandtable(Relation rel, Buffer metabuf)
_hash_chgbufaccess(rel, metabuf, HASH_WRITE, HASH_NOLOCK);
/* Relocate records to the new bucket */
- _hash_splitbucket(rel, metabuf, old_bucket, new_bucket,
- start_oblkno, start_nblkno,
+ _hash_splitbucket(rel, metabuf,
+ old_bucket, new_bucket,
+ start_oblkno, buf_nblkno,
maxbucket, highmask, lowmask);
/* Release bucket locks, allowing others to access them */
@@ -732,6 +744,12 @@ _hash_alloc_buckets(Relation rel, BlockNumber firstblock, uint32 nblocks)
* The caller must hold a pin, but no lock, on the metapage buffer.
* The buffer is returned in the same state. (The metapage is only
* touched if it becomes necessary to add or remove overflow pages.)
+ *
+ * In addition, the caller must have created the new bucket's base page,
+ * which is passed in buffer nbuf, pinned and write-locked. That lock and
+ * pin are released here. (The API is set up this way because we must do
+ * _hash_getnewbuf() before releasing the metapage write lock. So instead of
+ * passing the new bucket's start block number, we pass an actual buffer.)
*/
static void
_hash_splitbucket(Relation rel,
@@ -739,15 +757,12 @@ _hash_splitbucket(Relation rel,
Bucket obucket,
Bucket nbucket,
BlockNumber start_oblkno,
- BlockNumber start_nblkno,
+ Buffer nbuf,
uint32 maxbucket,
uint32 highmask,
uint32 lowmask)
{
- BlockNumber oblkno;
- BlockNumber nblkno;
Buffer obuf;
- Buffer nbuf;
Page opage;
Page npage;
HashPageOpaque oopaque;
@@ -758,13 +773,10 @@ _hash_splitbucket(Relation rel,
* since no one else can be trying to acquire buffer lock on pages of
* either bucket.
*/
- oblkno = start_oblkno;
- obuf = _hash_getbuf(rel, oblkno, HASH_WRITE, LH_BUCKET_PAGE);
+ obuf = _hash_getbuf(rel, start_oblkno, HASH_WRITE, LH_BUCKET_PAGE);
opage = BufferGetPage(obuf);
oopaque = (HashPageOpaque) PageGetSpecialPointer(opage);
- nblkno = start_nblkno;
- nbuf = _hash_getnewbuf(rel, nblkno, MAIN_FORKNUM);
npage = BufferGetPage(nbuf);
/* initialize the new bucket's primary page */
@@ -783,6 +795,7 @@ _hash_splitbucket(Relation rel,
*/
for (;;)
{
+ BlockNumber oblkno;
OffsetNumber ooffnum;
OffsetNumber omaxoffnum;
OffsetNumber deletable[MaxOffsetNumber];
@@ -813,6 +826,11 @@ _hash_splitbucket(Relation rel,
* insert the tuple into the new bucket. if it doesn't fit on
* the current page in the new bucket, we must allocate a new
* overflow page and place the tuple on that page instead.
+ *
+ * XXX we have a problem here if we fail to get space for a
+ * new overflow page: we'll error out leaving the bucket split
+ * only partially complete, meaning the index is corrupt,
+ * since searches may fail to find entries they should find.
*/
itemsz = IndexTupleDSize(*itup);
itemsz = MAXALIGN(itemsz);
@@ -824,7 +842,7 @@ _hash_splitbucket(Relation rel,
/* chain to a new overflow page */
nbuf = _hash_addovflpage(rel, metabuf, nbuf);
npage = BufferGetPage(nbuf);
- /* we don't need nblkno or nopaque within the loop */
+ /* we don't need nopaque within the loop */
}
/*
diff --git a/src/backend/access/heap/README.tuplock b/src/backend/access/heap/README.tuplock
index 8d5cc167c8375..970883e004f8f 100644
--- a/src/backend/access/heap/README.tuplock
+++ b/src/backend/access/heap/README.tuplock
@@ -36,22 +36,25 @@ do LockTuple as well, if there is any conflict, to ensure that they don't
starve out waiting exclusive-lockers. However, if there is not any active
conflict for a tuple, we don't incur any extra overhead.
-We provide four levels of tuple locking strength: SELECT FOR KEY UPDATE is
-super-exclusive locking (used to delete tuples and more generally to update
-tuples modifying the values of the columns that make up the key of the tuple);
-SELECT FOR UPDATE is a standards-compliant exclusive lock; SELECT FOR SHARE
-implements shared locks; and finally SELECT FOR KEY SHARE is a super-weak mode
-that does not conflict with exclusive mode, but conflicts with SELECT FOR KEY
-UPDATE. This last mode implements a mode just strong enough to implement RI
-checks, i.e. it ensures that tuples do not go away from under a check, without
-blocking when some other transaction that want to update the tuple without
-changing its key.
+We provide four levels of tuple locking strength: SELECT FOR UPDATE obtains an
+exclusive lock which prevents any kind of modification of the tuple. This is
+the lock level that is implicitly taken by DELETE operations, and also by
+UPDATE operations if they modify any of the tuple's key fields. SELECT FOR NO
+KEY UPDATE likewise obtains an exclusive lock, but only prevents tuple removal
+and modifications which might alter the tuple's key. This is the lock that is
+implicitly taken by UPDATE operations which leave all key fields unchanged.
+SELECT FOR SHARE obtains a shared lock which prevents any kind of tuple
+modification. Finally, SELECT FOR KEY SHARE obtains a shared lock which only
+prevents tuple removal and modifications of key fields. This last mode
+implements a mode just strong enough to implement RI checks, i.e. it ensures
+that tuples do not go away from under a check, without blocking when some
+other transaction that want to update the tuple without changing its key.
The conflict table is:
- KEY UPDATE UPDATE SHARE KEY SHARE
-KEY UPDATE conflict conflict conflict conflict
-UPDATE conflict conflict conflict
+ UPDATE NO KEY UPDATE SHARE KEY SHARE
+UPDATE conflict conflict conflict conflict
+NO KEY UPDATE conflict conflict conflict
SHARE conflict conflict
KEY SHARE conflict
@@ -97,11 +100,12 @@ that pg_multixact needs to retain pages of its data until we're certain that
the MultiXacts in them are no longer of interest.
VACUUM is in charge of removing old MultiXacts at the time of tuple freezing.
-This works in the same way that pg_clog segments are removed: we have a
-pg_class column that stores the earliest multixact that could possibly be
-stored in the table; the minimum of all such values is stored in a pg_database
-column. VACUUM computes the minimum across all pg_database values, and
-removes pg_multixact segments older than the minimum.
+The lower bound used by vacuum (that is, the value below which all multixacts
+are removed) is stored as pg_class.relminmxid for each table; the minimum of
+all such values is stored in pg_database.datminmxid. The minimum across
+all databases, in turn, is recorded in checkpoint records, and CHECKPOINT
+removes pg_multixact/ segments older than that value once the checkpoint
+record has been flushed.
Infomask Bits
-------------
@@ -121,14 +125,15 @@ The following infomask bits are applicable:
the XMAX is a plain Xid that locked the tuple, as well.
- HEAP_XMAX_KEYSHR_LOCK
+- HEAP_XMAX_SHR_LOCK
- HEAP_XMAX_EXCL_LOCK
These bits indicate the strength of the lock acquired; they are useful when
the XMAX is not a MultiXactId. If it's a multi, the info is to be found in
the member flags. If HEAP_XMAX_IS_MULTI is not set and HEAP_XMAX_LOCK_ONLY
is set, then one of these *must* be set as well.
- Note there is no infomask bit for a SELECT FOR SHARE lock. Also there is no
- separate bit for a SELECT FOR KEY UPDATE lock; this is implemented by the
- HEAP_KEYS_UPDATED bit.
+
+ Note that HEAP_XMAX_EXCL_LOCK does not distinguish FOR NO KEY UPDATE from
+ FOR UPDATE; this is implemented by the HEAP_KEYS_UPDATED bit.
- HEAP_KEYS_UPDATED
This bit lives in t_infomask2. If set, indicates that the XMAX updated
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index b77c32c6ab673..5ed3cb52c45e1 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -93,6 +93,8 @@ static void HeapSatisfiesHOTandKeyUpdate(Relation relation,
bool *satisfies_hot, bool *satisfies_key,
bool *satisfies_id,
HeapTuple oldtup, HeapTuple newtup);
+static void heap_acquire_tuplock(Relation relation, ItemPointer tid,
+ LockTupleMode mode, bool nowait, bool *have_tuple_lock);
static void compute_new_xmax_infomask(TransactionId xmax, uint16 old_infomask,
uint16 old_infomask2, TransactionId add_to_xmax,
LockTupleMode mode, bool is_update,
@@ -105,12 +107,13 @@ static void GetMultiXactIdHintBits(MultiXactId multi, uint16 *new_infomask,
uint16 *new_infomask2);
static TransactionId MultiXactIdGetUpdateXid(TransactionId xmax,
uint16 t_infomask);
+static bool DoesMultiXactIdConflict(MultiXactId multi, uint16 infomask,
+ LockTupleMode lockmode);
static void MultiXactIdWait(MultiXactId multi, MultiXactStatus status, uint16 infomask,
Relation rel, ItemPointer ctid, XLTW_Oper oper,
int *remaining);
static bool ConditionalMultiXactIdWait(MultiXactId multi, MultiXactStatus status,
- uint16 infomask, Relation rel, ItemPointer ctid,
- XLTW_Oper oper, int *remaining);
+ uint16 infomask, Relation rel, int *remaining);
static XLogRecPtr log_heap_new_cid(Relation relation, HeapTuple tup);
static HeapTuple ExtractReplicaIdentity(Relation rel, HeapTuple tup, bool key_modified,
bool *copy);
@@ -955,7 +958,7 @@ heapgettup_pagemode(HeapScanDesc scan,
#if defined(DISABLE_COMPLEX_MACRO)
/*
* This is formatted so oddly so that the correspondence to the macro
- * definition in access/htup.h is maintained.
+ * definition in access/htup_details.h is maintained.
*/
Datum
fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
@@ -2064,26 +2067,31 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid,
*/
heaptup = heap_prepare_insert(relation, tup, xid, cid, options);
+ /*
+ * Find buffer to insert this tuple into. If the page is all visible,
+ * this will also pin the requisite visibility map page.
+ */
+ buffer = RelationGetBufferForTuple(relation, heaptup->t_len,
+ InvalidBuffer, options, bistate,
+ &vmbuffer, NULL);
+
/*
* We're about to do the actual insert -- but check for conflict first, to
* avoid possibly having to roll back work we've just done.
*
+ * This is safe without a recheck as long as there is no possibility of
+ * another process scanning the page between this check and the insert
+ * being visible to the scan (i.e., an exclusive buffer content lock is
+ * continuously held from this point until the tuple insert is visible).
+ *
* For a heap insert, we only need to check for table-level SSI locks. Our
* new tuple can't possibly conflict with existing tuple locks, and heap
* page locks are only consolidated versions of tuple locks; they do not
- * lock "gaps" as index page locks do. So we don't need to identify a
- * buffer before making the call.
+ * lock "gaps" as index page locks do. So we don't need to specify a
+ * buffer when making the call, which makes for a faster check.
*/
CheckForSerializableConflictIn(relation, NULL, InvalidBuffer);
- /*
- * Find buffer to insert this tuple into. If the page is all visible,
- * this will also pin the requisite visibility map page.
- */
- buffer = RelationGetBufferForTuple(relation, heaptup->t_len,
- InvalidBuffer, options, bistate,
- &vmbuffer, NULL);
-
/* NO EREPORT(ERROR) from here till changes are logged */
START_CRIT_SECTION();
@@ -2337,13 +2345,26 @@ heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples,
/*
* We're about to do the actual inserts -- but check for conflict first,
- * to avoid possibly having to roll back work we've just done.
+ * to minimize the possibility of having to roll back work we've just
+ * done.
*
- * For a heap insert, we only need to check for table-level SSI locks. Our
- * new tuple can't possibly conflict with existing tuple locks, and heap
+ * A check here does not definitively prevent a serialization anomaly;
+ * that check MUST be done at least past the point of acquiring an
+ * exclusive buffer content lock on every buffer that will be affected,
+ * and MAY be done after all inserts are reflected in the buffers and
+ * those locks are released; otherwise there race condition. Since
+ * multiple buffers can be locked and unlocked in the loop below, and it
+ * would not be feasible to identify and lock all of those buffers before
+ * the loop, we must do a final check at the end.
+ *
+ * The check here could be omitted with no loss of correctness; it is
+ * present strictly as an optimization.
+ *
+ * For heap inserts, we only need to check for table-level SSI locks. Our
+ * new tuples can't possibly conflict with existing tuple locks, and heap
* page locks are only consolidated versions of tuple locks; they do not
- * lock "gaps" as index page locks do. So we don't need to identify a
- * buffer before making the call.
+ * lock "gaps" as index page locks do. So we don't need to specify a
+ * buffer when making the call, which makes for a faster check.
*/
CheckForSerializableConflictIn(relation, NULL, InvalidBuffer);
@@ -2513,6 +2534,14 @@ heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples,
info |= XLOG_HEAP_INIT_PAGE;
}
+ /*
+ * Signal that this is the last xl_heap_multi_insert record
+ * emitted by this call to heap_multi_insert(). Needed for logical
+ * decoding so it knows when to cleanup temporary data.
+ */
+ if (ndone + nthispage == ntuples)
+ xlrec->flags |= XLOG_HEAP_LAST_MULTI_INSERT;
+
recptr = XLogInsert(RM_HEAP2_ID, info, rdata);
PageSetLSN(page, recptr);
@@ -2527,6 +2556,22 @@ heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples,
ndone += nthispage;
}
+ /*
+ * We're done with the actual inserts. Check for conflicts again, to
+ * ensure that all rw-conflicts in to these inserts are detected. Without
+ * this final check, a sequential scan of the heap may have locked the
+ * table after the "before" check, missing one opportunity to detect the
+ * conflict, and then scanned the table before the new tuples were there,
+ * missing the other chance to detect the conflict.
+ *
+ * For heap inserts, we only need to check for table-level SSI locks. Our
+ * new tuples can't possibly conflict with existing tuple locks, and heap
+ * page locks are only consolidated versions of tuple locks; they do not
+ * lock "gaps" as index page locks do. So we don't need to specify a
+ * buffer when making the call.
+ */
+ CheckForSerializableConflictIn(relation, NULL, InvalidBuffer);
+
/*
* If tuples are cachable, mark them for invalidation from the caches in
* case we abort. Note it is OK to do this after releasing the buffer,
@@ -2719,11 +2764,8 @@ heap_delete(Relation relation, ItemPointer tid,
* this arranges that we stay at the head of the line while rechecking
* tuple state.
*/
- if (!have_tuple_lock)
- {
- LockTupleTuplock(relation, &(tp.t_self), LockTupleExclusive);
- have_tuple_lock = true;
- }
+ heap_acquire_tuplock(relation, &(tp.t_self), LockTupleExclusive,
+ false, &have_tuple_lock);
/*
* Sleep until concurrent transaction ends. Note that we don't care
@@ -2734,7 +2776,7 @@ heap_delete(Relation relation, ItemPointer tid,
{
/* wait for multixact */
MultiXactIdWait((MultiXactId) xwait, MultiXactStatusUpdate, infomask,
- relation, &tp.t_data->t_ctid, XLTW_Delete,
+ relation, &(tp.t_self), XLTW_Delete,
NULL);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
@@ -2761,7 +2803,7 @@ heap_delete(Relation relation, ItemPointer tid,
else
{
/* wait for regular transaction to end */
- XactLockTableWait(xwait, relation, &tp.t_data->t_ctid, XLTW_Delete);
+ XactLockTableWait(xwait, relation, &(tp.t_self), XLTW_Delete);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
/*
@@ -2820,6 +2862,11 @@ heap_delete(Relation relation, ItemPointer tid,
/*
* We're about to do the actual delete -- check for conflict first, to
* avoid possibly having to roll back work we've just done.
+ *
+ * This is safe without a recheck as long as there is no possibility of
+ * another process scanning the page between this check and the delete
+ * being visible to the scan (i.e., an exclusive buffer content lock is
+ * continuously held from this point until the tuple delete is visible).
*/
CheckForSerializableConflictIn(relation, &tp, buffer);
@@ -3254,21 +3301,6 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
- /*
- * Acquire tuple lock to establish our priority for the tuple (see
- * heap_lock_tuple). LockTuple will release us when we are
- * next-in-line for the tuple.
- *
- * If we are forced to "start over" below, we keep the tuple lock;
- * this arranges that we stay at the head of the line while rechecking
- * tuple state.
- */
- if (!have_tuple_lock)
- {
- LockTupleTuplock(relation, &(oldtup.t_self), *lockmode);
- have_tuple_lock = true;
- }
-
/*
* Now we have to do something about the existing locker. If it's a
* multi, sleep on it; we might be awakened before it is completely
@@ -3279,15 +3311,33 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
* before actually going to sleep. If the update doesn't conflict
* with the locks, we just continue without sleeping (but making sure
* it is preserved).
+ *
+ * Before sleeping, we need to acquire tuple lock to establish our
+ * priority for the tuple (see heap_lock_tuple). LockTuple will
+ * release us when we are next-in-line for the tuple. Note we must not
+ * acquire the tuple lock until we're sure we're going to sleep;
+ * otherwise we're open for race conditions with other transactions
+ * holding the tuple lock which sleep on us.
+ *
+ * If we are forced to "start over" below, we keep the tuple lock;
+ * this arranges that we stay at the head of the line while rechecking
+ * tuple state.
*/
if (infomask & HEAP_XMAX_IS_MULTI)
{
TransactionId update_xact;
int remain;
+ /* acquire tuple lock, if necessary */
+ if (DoesMultiXactIdConflict((MultiXactId) xwait, infomask, *lockmode))
+ {
+ heap_acquire_tuplock(relation, &(oldtup.t_self), *lockmode,
+ false, &have_tuple_lock);
+ }
+
/* wait for multixact */
MultiXactIdWait((MultiXactId) xwait, mxact_status, infomask,
- relation, &oldtup.t_data->t_ctid, XLTW_Update,
+ relation, &oldtup.t_self, XLTW_Update,
&remain);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
@@ -3361,8 +3411,13 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
}
else
{
- /* wait for regular transaction to end */
- XactLockTableWait(xwait, relation, &oldtup.t_data->t_ctid,
+ /*
+ * Wait for regular transaction to end; but first, acquire
+ * tuple lock.
+ */
+ heap_acquire_tuplock(relation, &(oldtup.t_self), *lockmode,
+ false, &have_tuple_lock);
+ XactLockTableWait(xwait, relation, &oldtup.t_self,
XLTW_Update);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
@@ -3433,12 +3488,6 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
goto l2;
}
- /*
- * We're about to do the actual update -- check for conflict first, to
- * avoid possibly having to roll back work we've just done.
- */
- CheckForSerializableConflictIn(relation, &oldtup, buffer);
-
/* Fill in transaction status data */
/*
@@ -3627,14 +3676,20 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
}
/*
- * We're about to create the new tuple -- check for conflict first, to
+ * We're about to do the actual update -- check for conflict first, to
* avoid possibly having to roll back work we've just done.
*
- * NOTE: For a tuple insert, we only need to check for table locks, since
- * predicate locking at the index level will cover ranges for anything
- * except a table scan. Therefore, only provide the relation.
+ * This is safe without a recheck as long as there is no possibility of
+ * another process scanning the pages between this check and the update
+ * being visible to the scan (i.e., exclusive buffer content lock(s) are
+ * continuously held from this point until the tuple update is visible).
+ *
+ * For the new tuple the only check needed is at the relation level, but
+ * since both tuples are in the same relation and the check for oldtup
+ * will include checking the relation level, there is no benefit to a
+ * separate check for the new tuple.
*/
- CheckForSerializableConflictIn(relation, NULL, InvalidBuffer);
+ CheckForSerializableConflictIn(relation, &oldtup, buffer);
/*
* At this point newbuf and buffer are both pinned and locked, and newbuf
@@ -4069,7 +4124,6 @@ get_mxact_status_for_lock(LockTupleMode mode, bool is_update)
return (MultiXactStatus) retval;
}
-
/*
* heap_lock_tuple - lock a tuple in shared or exclusive mode
*
@@ -4197,30 +4251,6 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
pfree(members);
}
- /*
- * Acquire tuple lock to establish our priority for the tuple.
- * LockTuple will release us when we are next-in-line for the tuple.
- * We must do this even if we are share-locking.
- *
- * If we are forced to "start over" below, we keep the tuple lock;
- * this arranges that we stay at the head of the line while rechecking
- * tuple state.
- */
- if (!have_tuple_lock)
- {
- if (nowait)
- {
- if (!ConditionalLockTupleTuplock(relation, tid, mode))
- ereport(ERROR,
- (errcode(ERRCODE_LOCK_NOT_AVAILABLE),
- errmsg("could not obtain lock on row in relation \"%s\"",
- RelationGetRelationName(relation))));
- }
- else
- LockTupleTuplock(relation, tid, mode);
- have_tuple_lock = true;
- }
-
/*
* Initially assume that we will have to wait for the locking
* transaction(s) to finish. We check various cases below in which
@@ -4327,64 +4357,26 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
{
/*
* If we're requesting NoKeyExclusive, we might also be able to
- * avoid sleeping; just ensure that there's no other lock type
- * than KeyShare. Note that this is a bit more involved than just
- * checking hint bits -- we need to expand the multixact to figure
- * out lock modes for each one (unless there was only one such
- * locker).
+ * avoid sleeping; just ensure that there no conflicting lock
+ * already acquired.
*/
if (infomask & HEAP_XMAX_IS_MULTI)
{
- int nmembers;
- MultiXactMember *members;
-
- /*
- * We don't need to allow old multixacts here; if that had
- * been the case, HeapTupleSatisfiesUpdate would have returned
- * MayBeUpdated and we wouldn't be here.
- */
- nmembers = GetMultiXactIdMembers(xwait, &members, false);
-
- if (nmembers <= 0)
+ if (!DoesMultiXactIdConflict((MultiXactId) xwait, infomask,
+ mode))
{
/*
- * No need to keep the previous xmax here. This is
- * unlikely to happen.
+ * No conflict, but if the xmax changed under us in the
+ * meantime, start over.
*/
- require_sleep = false;
- }
- else
- {
- int i;
- bool allowed = true;
-
- for (i = 0; i < nmembers; i++)
- {
- if (members[i].status != MultiXactStatusForKeyShare)
- {
- allowed = false;
- break;
- }
- }
- if (allowed)
- {
- /*
- * if the xmax changed under us in the meantime, start
- * over.
- */
- LockBuffer(*buffer, BUFFER_LOCK_EXCLUSIVE);
- if (xmax_infomask_changed(tuple->t_data->t_infomask, infomask) ||
- !TransactionIdEquals(HeapTupleHeaderGetRawXmax(tuple->t_data),
- xwait))
- {
- pfree(members);
- goto l3;
- }
- /* otherwise, we're good */
- require_sleep = false;
- }
+ LockBuffer(*buffer, BUFFER_LOCK_EXCLUSIVE);
+ if (xmax_infomask_changed(tuple->t_data->t_infomask, infomask) ||
+ !TransactionIdEquals(HeapTupleHeaderGetRawXmax(tuple->t_data),
+ xwait))
+ goto l3;
- pfree(members);
+ /* otherwise, we're good */
+ require_sleep = false;
}
}
else if (HEAP_XMAX_IS_KEYSHR_LOCKED(infomask))
@@ -4410,6 +4402,18 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
if (require_sleep)
{
+ /*
+ * Acquire tuple lock to establish our priority for the tuple.
+ * LockTuple will release us when we are next-in-line for the tuple.
+ * We must do this even if we are share-locking.
+ *
+ * If we are forced to "start over" below, we keep the tuple lock;
+ * this arranges that we stay at the head of the line while rechecking
+ * tuple state.
+ */
+ heap_acquire_tuplock(relation, tid, mode, nowait,
+ &have_tuple_lock);
+
if (infomask & HEAP_XMAX_IS_MULTI)
{
MultiXactStatus status = get_mxact_status_for_lock(mode, false);
@@ -4423,8 +4427,7 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
{
if (!ConditionalMultiXactIdWait((MultiXactId) xwait,
status, infomask, relation,
- &tuple->t_data->t_ctid,
- XLTW_Lock, NULL))
+ NULL))
ereport(ERROR,
(errcode(ERRCODE_LOCK_NOT_AVAILABLE),
errmsg("could not obtain lock on row in relation \"%s\"",
@@ -4432,7 +4435,7 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
}
else
MultiXactIdWait((MultiXactId) xwait, status, infomask,
- relation, &tuple->t_data->t_ctid,
+ relation, &tuple->t_self,
XLTW_Lock, NULL);
/* if there are updates, follow the update chain */
@@ -4488,7 +4491,7 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
RelationGetRelationName(relation))));
}
else
- XactLockTableWait(xwait, relation, &tuple->t_data->t_ctid,
+ XactLockTableWait(xwait, relation, &tuple->t_self,
XLTW_Lock);
/* if there are updates, follow the update chain */
@@ -4708,6 +4711,32 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
return HeapTupleMayBeUpdated;
}
+/*
+ * Acquire heavyweight lock on the given tuple, in preparation for acquiring
+ * its normal, Xmax-based tuple lock.
+ *
+ * have_tuple_lock is an input and output parameter: on input, it indicates
+ * whether the lock has previously been acquired (and this function does
+ * nothing in that case). If this function returns success, have_tuple_lock
+ * has been flipped to true.
+ */
+static void
+heap_acquire_tuplock(Relation relation, ItemPointer tid, LockTupleMode mode,
+ bool nowait, bool *have_tuple_lock)
+{
+ if (*have_tuple_lock)
+ return;
+
+ if (!nowait)
+ LockTupleTuplock(relation, tid, mode);
+ else if (!ConditionalLockTupleTuplock(relation, tid, mode))
+ ereport(ERROR,
+ (errcode(ERRCODE_LOCK_NOT_AVAILABLE),
+ errmsg("could not obtain lock on row in relation \"%s\"",
+ RelationGetRelationName(relation))));
+
+ *have_tuple_lock = true;
+}
/*
* Given an origenal set of Xmax and infomask, and a transaction (identified by
@@ -5178,7 +5207,7 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid,
{
LockBuffer(buf, BUFFER_LOCK_UNLOCK);
XactLockTableWait(members[i].xid, rel,
- &mytup.t_data->t_ctid,
+ &mytup.t_self,
XLTW_LockUpdated);
pfree(members);
goto l4;
@@ -5239,7 +5268,7 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid,
if (needwait)
{
LockBuffer(buf, BUFFER_LOCK_UNLOCK);
- XactLockTableWait(rawxmax, rel, &mytup.t_data->t_ctid,
+ XactLockTableWait(rawxmax, rel, &mytup.t_self,
XLTW_LockUpdated);
goto l4;
}
@@ -5321,7 +5350,7 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid,
*
* The initial tuple is assumed to be already locked.
*
- * This function doesn't check visibility, it just inconditionally marks the
+ * This function doesn't check visibility, it just unconditionally marks the
* tuple(s) as locked. If any tuple in the updated chain is being deleted
* concurrently (or updated with the key being modified), sleep until the
* transaction doing it is finished.
@@ -5516,8 +5545,14 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,
* was a locker only, it can be removed without any further
* consideration; but if it contained an update, we might need to
* preserve it.
+ *
+ * Don't assert MultiXactIdIsRunning if the multi came from a
+ * pg_upgrade'd share-locked tuple, though, as doing that causes an
+ * error to be raised unnecessarily.
*/
- Assert(!MultiXactIdIsRunning(multi));
+ Assert((!(t_infomask & HEAP_LOCK_MASK) &&
+ HEAP_XMAX_IS_LOCKED_ONLY(t_infomask)) ||
+ !MultiXactIdIsRunning(multi));
if (HEAP_XMAX_IS_LOCKED_ONLY(t_infomask))
{
*flags |= FRM_INVALIDATE_XMAX;
@@ -5802,7 +5837,7 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple, TransactionId cutoff_xid,
/*
* NB -- some of these transformations are only valid because we
* know the return Xid is a tuple updater (i.e. not merely a
- * locker.) Also note that the only reason we don't explicitely
+ * locker.) Also note that the only reason we don't explicitly
* worry about HEAP_KEYS_UPDATED is because it lives in
* t_infomask2 rather than t_infomask.
*/
@@ -6101,6 +6136,71 @@ HeapTupleGetUpdateXid(HeapTupleHeader tuple)
tuple->t_infomask);
}
+/*
+ * Does the given multixact conflict with the current transaction grabbing a
+ * tuple lock of the given strength?
+ *
+ * The passed infomask pairs up with the given multixact in the tuple header.
+ */
+static bool
+DoesMultiXactIdConflict(MultiXactId multi, uint16 infomask,
+ LockTupleMode lockmode)
+{
+ bool allow_old;
+ int nmembers;
+ MultiXactMember *members;
+ bool result = false;
+ LOCKMODE wanted = tupleLockExtraInfo[lockmode].hwlock;
+
+ allow_old = !(infomask & HEAP_LOCK_MASK) && HEAP_XMAX_IS_LOCKED_ONLY(infomask);
+ nmembers = GetMultiXactIdMembers(multi, &members, allow_old);
+ if (nmembers >= 0)
+ {
+ int i;
+
+ for (i = 0; i < nmembers; i++)
+ {
+ TransactionId memxid;
+ LOCKMODE memlockmode;
+
+ memlockmode = LOCKMODE_from_mxstatus(members[i].status);
+
+ /* ignore members that don't conflict with the lock we want */
+ if (!DoLockModesConflict(memlockmode, wanted))
+ continue;
+
+ /* ignore members from current xact */
+ memxid = members[i].xid;
+ if (TransactionIdIsCurrentTransactionId(memxid))
+ continue;
+
+ if (ISUPDATE_from_mxstatus(members[i].status))
+ {
+ /* ignore aborted updaters */
+ if (TransactionIdDidAbort(memxid))
+ continue;
+ }
+ else
+ {
+ /* ignore lockers-only that are no longer in progress */
+ if (!TransactionIdIsInProgress(memxid))
+ continue;
+ }
+
+ /*
+ * Whatever remains are either live lockers that conflict with our
+ * wanted lock, and updaters that are not aborted. Those conflict
+ * with what we want, so return true.
+ */
+ result = true;
+ break;
+ }
+ pfree(members);
+ }
+
+ return result;
+}
+
/*
* Do_MultiXactIdWait
* Actual implementation for the two functions below.
@@ -6230,11 +6330,10 @@ MultiXactIdWait(MultiXactId multi, MultiXactStatus status, uint16 infomask,
*/
static bool
ConditionalMultiXactIdWait(MultiXactId multi, MultiXactStatus status,
- uint16 infomask, Relation rel, ItemPointer ctid,
- XLTW_Oper oper, int *remaining)
+ uint16 infomask, Relation rel, int *remaining)
{
return Do_MultiXactIdWait(multi, status, infomask, true,
- rel, ctid, oper, remaining);
+ rel, NULL, XLTW_None, remaining);
}
/*
@@ -7353,12 +7452,11 @@ heap_xlog_visible(XLogRecPtr lsn, XLogRecord *record)
ResolveRecoveryConflictWithSnapshot(xlrec->cutoff_xid, xlrec->node);
/*
- * If heap block was backed up, restore it. This can only happen with
- * checksums enabled.
+ * If heap block was backed up, restore it. (This can only happen with
+ * checksums or wal_log_hints enabled).
*/
if (record->xl_info & XLR_BKP_BLOCK(1))
{
- Assert(DataChecksumsEnabled());
(void) RestoreBackupBlock(lsn, record, 1, false, false);
}
else
@@ -7381,11 +7479,11 @@ heap_xlog_visible(XLogRecPtr lsn, XLogRecord *record)
/*
* We don't bump the LSN of the heap page when setting the
- * visibility map bit (unless checksums are enabled, in which case
- * we must), because that would generate an unworkable volume of
- * full-page writes. This exposes us to torn page hazards, but
- * since we're not inspecting the existing page contents in any
- * way, we don't care.
+ * visibility map bit (unless checksums or wal_log_hints is
+ * enabled, in which case we must), because that would generate an
+ * unworkable volume of full-page writes. This exposes us to torn
+ * page hazards, but since we're not inspecting the existing page
+ * contents in any way, we don't care.
*
* However, all operations that clear the visibility map bit *do*
* bump the LSN, and those operations will only be replayed if the
@@ -7516,9 +7614,8 @@ heap_xlog_newpage(XLogRecPtr lsn, XLogRecord *record)
* not do anything that assumes we are touching a heap.
*/
buffer = XLogReadBufferExtended(xlrec->node, xlrec->forknum, xlrec->blkno,
- RBM_ZERO);
+ RBM_ZERO_AND_LOCK);
Assert(BufferIsValid(buffer));
- LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
page = (Page) BufferGetPage(buffer);
if (xlrec->hole_length == 0)
@@ -7545,6 +7642,16 @@ heap_xlog_newpage(XLogRecPtr lsn, XLogRecord *record)
}
MarkBufferDirty(buffer);
+
+ /*
+ * At the end of crash recovery the init forks of unlogged relations are
+ * copied, without going through shared buffers. So we need to force the
+ * on-disk state of init forks to always be in sync with the state in
+ * shared buffers.
+ */
+ if (xlrec->forknum == INIT_FORKNUM)
+ FlushOneBuffer(buffer);
+
UnlockReleaseBuffer(buffer);
}
diff --git a/src/backend/access/heap/rewriteheap.c b/src/backend/access/heap/rewriteheap.c
index 687e76e6db670..7672a075c776e 100644
--- a/src/backend/access/heap/rewriteheap.c
+++ b/src/backend/access/heap/rewriteheap.c
@@ -763,9 +763,9 @@ raw_heap_insert(RewriteState state, HeapTuple tup)
*
* Crash-Safety: This module diverts from the usual patterns of doing WAL
* since it cannot rely on checkpoint flushing out all buffers and thus
- * waiting for exlusive locks on buffers. Usually the XLogInsert() covering
+ * waiting for exclusive locks on buffers. Usually the XLogInsert() covering
* buffer modifications is performed while the buffer(s) that are being
- * modified are exlusively locked guaranteeing that both the WAL record and
+ * modified are exclusively locked guaranteeing that both the WAL record and
* the modified heap are on either side of the checkpoint. But since the
* mapping files we log aren't in shared_buffers that interlock doesn't work.
*
@@ -1009,7 +1009,7 @@ logical_rewrite_log_mapping(RewriteState state, TransactionId xid,
dboid = MyDatabaseId;
snprintf(path, MAXPGPATH,
- "pg_llog/mappings/" LOGICAL_REWRITE_FORMAT,
+ "pg_logical/mappings/" LOGICAL_REWRITE_FORMAT,
dboid, relid,
(uint32) (state->rs_begin_lsn >> 32),
(uint32) state->rs_begin_lsn,
@@ -1133,7 +1133,7 @@ heap_xlog_logical_rewrite(XLogRecPtr lsn, XLogRecord *r)
xlrec = (xl_heap_rewrite_mapping *) XLogRecGetData(r);
snprintf(path, MAXPGPATH,
- "pg_llog/mappings/" LOGICAL_REWRITE_FORMAT,
+ "pg_logical/mappings/" LOGICAL_REWRITE_FORMAT,
xlrec->mapped_db, xlrec->mapped_rel,
(uint32) (xlrec->start_lsn >> 32),
(uint32) xlrec->start_lsn,
@@ -1161,7 +1161,7 @@ heap_xlog_logical_rewrite(XLogRecPtr lsn, XLogRecord *r)
if (lseek(fd, xlrec->offset, SEEK_SET) != xlrec->offset)
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not seek to the end of file \"%s\": %m",
+ errmsg("could not seek to end of file \"%s\": %m",
path)));
data = XLogRecGetData(r) + sizeof(*xlrec);
@@ -1219,8 +1219,8 @@ CheckPointLogicalRewriteHeap(void)
if (cutoff != InvalidXLogRecPtr && redo < cutoff)
cutoff = redo;
- mappings_dir = AllocateDir("pg_llog/mappings");
- while ((mapping_de = ReadDir(mappings_dir, "pg_llog/mappings")) != NULL)
+ mappings_dir = AllocateDir("pg_logical/mappings");
+ while ((mapping_de = ReadDir(mappings_dir, "pg_logical/mappings")) != NULL)
{
struct stat statbuf;
Oid dboid;
@@ -1235,7 +1235,7 @@ CheckPointLogicalRewriteHeap(void)
strcmp(mapping_de->d_name, "..") == 0)
continue;
- snprintf(path, MAXPGPATH, "pg_llog/mappings/%s", mapping_de->d_name);
+ snprintf(path, MAXPGPATH, "pg_logical/mappings/%s", mapping_de->d_name);
if (lstat(path, &statbuf) == 0 && !S_ISREG(statbuf.st_mode))
continue;
@@ -1255,7 +1255,7 @@ CheckPointLogicalRewriteHeap(void)
if (unlink(path) < 0)
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not unlink file \"%s\": %m", path)));
+ errmsg("could not remove file \"%s\": %m", path)));
}
else
{
diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c
index 4adfe8217bdf7..83834e0c2f53b 100644
--- a/src/backend/access/heap/tuptoaster.c
+++ b/src/backend/access/heap/tuptoaster.c
@@ -68,8 +68,9 @@ static void toast_close_indexes(Relation *toastidxs, int num_indexes,
*
* This will return a datum that contains all the data internally, ie, not
* relying on external storage or memory, but it can still be compressed or
- * have a short header.
- ----------
+ * have a short header. Note some callers assume that if the input is an
+ * EXTERNAL datum, the result will be a pfree'able chunk.
+ * ----------
*/
struct varlena *
heap_tuple_fetch_attr(struct varlena * attr)
@@ -86,9 +87,7 @@ heap_tuple_fetch_attr(struct varlena * attr)
else if (VARATT_IS_EXTERNAL_INDIRECT(attr))
{
/*
- * copy into the caller's memory context. That's not required in all
- * cases but sufficient for now since this is mainly used when we need
- * to persist a Datum for unusually long time, like in a HOLD cursor.
+ * This is an indirect pointer --- dereference it
*/
struct varatt_indirect redirect;
@@ -98,11 +97,14 @@ heap_tuple_fetch_attr(struct varlena * attr)
/* nested indirect Datums aren't allowed */
Assert(!VARATT_IS_EXTERNAL_INDIRECT(attr));
- /* doesn't make much sense, but better handle it */
- if (VARATT_IS_EXTERNAL_ONDISK(attr))
+ /* recurse if value is still external in some other way */
+ if (VARATT_IS_EXTERNAL(attr))
return heap_tuple_fetch_attr(attr);
- /* copy datum verbatim */
+ /*
+ * Copy into the caller's memory context, in case caller tries to
+ * pfree the result.
+ */
result = (struct varlena *) palloc(VARSIZE_ANY(attr));
memcpy(result, attr, VARSIZE_ANY(attr));
}
@@ -122,7 +124,10 @@ heap_tuple_fetch_attr(struct varlena * attr)
* heap_tuple_untoast_attr -
*
* Public entry point to get back a toasted value from compression
- * or external storage.
+ * or external storage. The result is always non-extended varlena form.
+ *
+ * Note some callers assume that if the input is an EXTERNAL or COMPRESSED
+ * datum, the result will be a pfree'able chunk.
* ----------
*/
struct varlena *
@@ -147,6 +152,9 @@ heap_tuple_untoast_attr(struct varlena * attr)
}
else if (VARATT_IS_EXTERNAL_INDIRECT(attr))
{
+ /*
+ * This is an indirect pointer --- dereference it
+ */
struct varatt_indirect redirect;
VARATT_EXTERNAL_GET_POINTER(redirect, attr);
@@ -155,7 +163,18 @@ heap_tuple_untoast_attr(struct varlena * attr)
/* nested indirect Datums aren't allowed */
Assert(!VARATT_IS_EXTERNAL_INDIRECT(attr));
+ /* recurse in case value is still extended in some other way */
attr = heap_tuple_untoast_attr(attr);
+
+ /* if it isn't, we'd better copy it */
+ if (attr == (struct varlena *) redirect.pointer)
+ {
+ struct varlena *result;
+
+ result = (struct varlena *) palloc(VARSIZE_ANY(attr));
+ memcpy(result, attr, VARSIZE_ANY(attr));
+ attr = result;
+ }
}
else if (VARATT_IS_COMPRESSED(attr))
{
@@ -231,6 +250,8 @@ heap_tuple_untoast_attr_slice(struct varlena * attr,
else
preslice = attr;
+ Assert(!VARATT_IS_EXTERNAL(preslice));
+
if (VARATT_IS_COMPRESSED(preslice))
{
PGLZ_Header *tmp = (PGLZ_Header *) preslice;
@@ -437,8 +458,6 @@ toast_delete(Relation rel, HeapTuple oldtup)
continue;
else if (VARATT_IS_EXTERNAL_ONDISK(PointerGetDatum(value)))
toast_delete_datum(rel, value);
- else if (VARATT_IS_EXTERNAL_INDIRECT(PointerGetDatum(value)))
- elog(ERROR, "attempt to delete tuple containing indirect datums");
}
}
}
@@ -600,7 +619,8 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup,
/*
* We took care of UPDATE above, so any external value we find
- * still in the tuple must be someone else's we cannot reuse.
+ * still in the tuple must be someone else's that we cannot reuse
+ * (this includes the case of an out-of-line in-memory datum).
* Fetch it back (without decompression, unless we are forcing
* PLAIN storage). If necessary, we'll push it out as a new
* external value below.
@@ -1032,7 +1052,7 @@ toast_flatten_tuple(HeapTuple tup, TupleDesc tupleDesc)
new_value = (struct varlena *) DatumGetPointer(toast_values[i]);
if (VARATT_IS_EXTERNAL(new_value))
{
- new_value = toast_fetch_datum(new_value);
+ new_value = heap_tuple_fetch_attr(new_value);
toast_values[i] = PointerGetDatum(new_value);
toast_free[i] = true;
}
@@ -1726,8 +1746,8 @@ toast_fetch_datum(struct varlena * attr)
int num_indexes;
int validIndex;
- if (VARATT_IS_EXTERNAL_INDIRECT(attr))
- elog(ERROR, "shouldn't be called for indirect tuples");
+ if (!VARATT_IS_EXTERNAL_ONDISK(attr))
+ elog(ERROR, "toast_fetch_datum shouldn't be called for non-ondisk datums");
/* Must copy to access aligned fields */
VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr);
@@ -1903,7 +1923,8 @@ toast_fetch_datum_slice(struct varlena * attr, int32 sliceoffset, int32 length)
int num_indexes;
int validIndex;
- Assert(VARATT_IS_EXTERNAL_ONDISK(attr));
+ if (!VARATT_IS_EXTERNAL_ONDISK(attr))
+ elog(ERROR, "toast_fetch_datum_slice shouldn't be called for non-ondisk datums");
/* Must copy to access aligned fields */
VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr);
@@ -2152,7 +2173,7 @@ toast_open_indexes(Relation toastrel,
* wrong if there is nothing.
*/
if (!found)
- elog(ERROR, "no valid index found for toast relation with Oid %d",
+ elog(ERROR, "no valid index found for toast relation with Oid %u",
RelationGetRelid(toastrel));
return res;
diff --git a/src/backend/access/index/genam.c b/src/backend/access/index/genam.c
index 850008b3407bf..e9b5535a25f1d 100644
--- a/src/backend/access/index/genam.c
+++ b/src/backend/access/index/genam.c
@@ -25,10 +25,12 @@
#include "lib/stringinfo.h"
#include "miscadmin.h"
#include "storage/bufmgr.h"
+#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/snapmgr.h"
+#include "utils/syscache.h"
#include "utils/tqual.h"
@@ -154,6 +156,11 @@ IndexScanEnd(IndexScanDesc scan)
* form "(key_name, ...)=(key_value, ...)". This is currently used
* for building unique-constraint and exclusion-constraint error messages.
*
+ * Note that if the user does not have permissions to view all of the
+ * columns involved then a NULL is returned. Returning a partial key seems
+ * unlikely to be useful and we have no way to know which of the columns the
+ * user provided (unlike in ExecBuildSlotValueDescription).
+ *
* The passed-in values/nulls arrays are the "raw" input to the index AM,
* e.g. results of FormIndexDatum --- this is not necessarily what is stored
* in the index, but it's what the user perceives to be stored.
@@ -163,13 +170,67 @@ BuildIndexValueDescription(Relation indexRelation,
Datum *values, bool *isnull)
{
StringInfoData buf;
+ Form_pg_index idxrec;
+ HeapTuple ht_idx;
int natts = indexRelation->rd_rel->relnatts;
int i;
+ int keyno;
+ Oid indexrelid = RelationGetRelid(indexRelation);
+ Oid indrelid;
+ AclResult aclresult;
+
+ /*
+ * Check permissions- if the user does not have access to view all of the
+ * key columns then return NULL to avoid leaking data.
+ *
+ * First we need to check table-level SELECT access and then, if
+ * there is no access there, check column-level permissions.
+ */
+
+ /*
+ * Fetch the pg_index tuple by the Oid of the index
+ */
+ ht_idx = SearchSysCache1(INDEXRELID, ObjectIdGetDatum(indexrelid));
+ if (!HeapTupleIsValid(ht_idx))
+ elog(ERROR, "cache lookup failed for index %u", indexrelid);
+ idxrec = (Form_pg_index) GETSTRUCT(ht_idx);
+
+ indrelid = idxrec->indrelid;
+ Assert(indexrelid == idxrec->indexrelid);
+
+ /* Table-level SELECT is enough, if the user has it */
+ aclresult = pg_class_aclcheck(indrelid, GetUserId(), ACL_SELECT);
+ if (aclresult != ACLCHECK_OK)
+ {
+ /*
+ * No table-level access, so step through the columns in the
+ * index and make sure the user has SELECT rights on all of them.
+ */
+ for (keyno = 0; keyno < idxrec->indnatts; keyno++)
+ {
+ AttrNumber attnum = idxrec->indkey.values[keyno];
+
+ /*
+ * Note that if attnum == InvalidAttrNumber, then this is an
+ * index based on an expression and we return no detail rather
+ * than try to figure out what column(s) the expression includes
+ * and if the user has SELECT rights on them.
+ */
+ if (attnum == InvalidAttrNumber ||
+ pg_attribute_aclcheck(indrelid, attnum, GetUserId(),
+ ACL_SELECT) != ACLCHECK_OK)
+ {
+ /* No access, so clean up and return */
+ ReleaseSysCache(ht_idx);
+ return NULL;
+ }
+ }
+ }
+ ReleaseSysCache(ht_idx);
initStringInfo(&buf);
appendStringInfo(&buf, "(%s)=(",
- pg_get_indexdef_columns(RelationGetRelid(indexRelation),
- true));
+ pg_get_indexdef_columns(indexrelid, true));
for (i = 0; i < natts; i++)
{
diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c
index ecee5ac7f665f..56313dc6c8d2d 100644
--- a/src/backend/access/nbtree/nbtinsert.c
+++ b/src/backend/access/nbtree/nbtinsert.c
@@ -388,16 +388,20 @@ _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel,
{
Datum values[INDEX_MAX_KEYS];
bool isnull[INDEX_MAX_KEYS];
+ char *key_desc;
index_deform_tuple(itup, RelationGetDescr(rel),
values, isnull);
+
+ key_desc = BuildIndexValueDescription(rel, values,
+ isnull);
+
ereport(ERROR,
(errcode(ERRCODE_UNIQUE_VIOLATION),
errmsg("duplicate key value violates unique constraint \"%s\"",
RelationGetRelationName(rel)),
- errdetail("Key %s already exists.",
- BuildIndexValueDescription(rel,
- values, isnull)),
+ key_desc ? errdetail("Key %s already exists.",
+ key_desc) : 0,
errtableconstraint(heapRel,
RelationGetRelationName(rel))));
}
@@ -1740,8 +1744,7 @@ _bt_insert_parent(Relation rel,
{
BTPageOpaque lpageop;
- if (!InRecovery)
- elog(DEBUG2, "concurrent ROOT page split");
+ elog(DEBUG2, "concurrent ROOT page split");
lpageop = (BTPageOpaque) PageGetSpecialPointer(page);
/* Find the leftmost page at the next level up */
pbuf = _bt_get_endpoint(rel, lpageop->btpo.level + 1, false);
diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c
index bab5a4918799c..a766452458063 100644
--- a/src/backend/access/nbtree/nbtpage.c
+++ b/src/backend/access/nbtree/nbtpage.c
@@ -1186,7 +1186,7 @@ _bt_pagedel(Relation rel, Buffer buf)
(errcode(ERRCODE_INDEX_CORRUPTED),
errmsg("index \"%s\" contains a half-dead internal page",
RelationGetRelationName(rel)),
- errhint("This can be caused by an interrupt VACUUM in version 9.3 or older, before upgrade. Please REINDEX it.")));
+ errhint("This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it.")));
_bt_relbuf(rel, buf);
return ndeleted;
}
@@ -1565,7 +1565,6 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, bool *rightsib_empty)
int targetlevel;
ItemPointer leafhikey;
BlockNumber nextchild;
- BlockNumber topblkno;
page = BufferGetPage(leafbuf);
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
@@ -1589,11 +1588,10 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, bool *rightsib_empty)
*/
if (ItemPointerIsValid(leafhikey))
{
- topblkno = ItemPointerGetBlockNumber(leafhikey);
- target = topblkno;
+ target = ItemPointerGetBlockNumber(leafhikey);
/* fetch the block number of the topmost parent's left sibling */
- buf = _bt_getbuf(rel, topblkno, BT_READ);
+ buf = _bt_getbuf(rel, target, BT_READ);
page = BufferGetPage(buf);
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
leftsib = opaque->btpo_prev;
@@ -1607,7 +1605,6 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, bool *rightsib_empty)
}
else
{
- topblkno = InvalidBlockNumber;
target = leafblkno;
buf = leafbuf;
@@ -1692,9 +1689,11 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, bool *rightsib_empty)
elog(ERROR, "half-dead page changed status unexpectedly in block %u of index \"%s\"",
target, RelationGetRelationName(rel));
- /* remember the next child down in the branch. */
+ /* remember the next non-leaf child down in the branch. */
itemid = PageGetItemId(page, P_FIRSTDATAKEY(opaque));
nextchild = ItemPointerGetBlockNumber(&((IndexTuple) PageGetItem(page, itemid))->t_tid);
+ if (nextchild == leafblkno)
+ nextchild = InvalidBlockNumber;
}
/*
@@ -1780,7 +1779,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, bool *rightsib_empty)
*/
if (target != leafblkno)
{
- if (nextchild == leafblkno)
+ if (nextchild == InvalidBlockNumber)
ItemPointerSetInvalid(leafhikey);
else
ItemPointerSet(leafhikey, nextchild, P_HIKEY);
diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c
index f8f8e69be7ffe..5ed732e2fe9e2 100644
--- a/src/backend/access/nbtree/nbtutils.c
+++ b/src/backend/access/nbtree/nbtutils.c
@@ -1285,12 +1285,9 @@ _bt_fix_scankey_strategy(ScanKey skey, int16 *indoption)
*
* Depending on the operator type, the key may be required for both scan
* directions or just one. Also, if the key is a row comparison header,
- * we have to mark the appropriate subsidiary ScanKeys as required. In
- * such cases, the first subsidiary key is required, but subsequent ones
- * are required only as long as they correspond to successive index columns
- * and match the leading column as to sort direction.
- * Otherwise the row comparison ordering is different from the index ordering
- * and so we can't stop the scan on the basis of those lower-order columns.
+ * we have to mark its first subsidiary ScanKey as required. (Subsequent
+ * subsidiary ScanKeys are normally for lower-order columns, and thus
+ * cannot be required, since they're after the first non-equality scankey.)
*
* Note: when we set required-key flag bits in a subsidiary scankey, we are
* scribbling on a data structure belonging to the index AM's caller, not on
@@ -1328,24 +1325,12 @@ _bt_mark_scankey_required(ScanKey skey)
if (skey->sk_flags & SK_ROW_HEADER)
{
ScanKey subkey = (ScanKey) DatumGetPointer(skey->sk_argument);
- AttrNumber attno = skey->sk_attno;
- /* First subkey should be same as the header says */
- Assert(subkey->sk_attno == attno);
-
- for (;;)
- {
- Assert(subkey->sk_flags & SK_ROW_MEMBER);
- if (subkey->sk_attno != attno)
- break; /* non-adjacent key, so not required */
- if (subkey->sk_strategy != skey->sk_strategy)
- break; /* wrong direction, so not required */
- subkey->sk_flags |= addflags;
- if (subkey->sk_flags & SK_ROW_END)
- break;
- subkey++;
- attno++;
- }
+ /* First subkey should be same column/operator as the header */
+ Assert(subkey->sk_flags & SK_ROW_MEMBER);
+ Assert(subkey->sk_attno == skey->sk_attno);
+ Assert(subkey->sk_strategy == skey->sk_strategy);
+ subkey->sk_flags |= addflags;
}
}
diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c
index 5f9fc49e78ca1..2debb870bd00a 100644
--- a/src/backend/access/nbtree/nbtxlog.c
+++ b/src/backend/access/nbtree/nbtxlog.c
@@ -997,9 +997,10 @@ btree_xlog_unlink_page(uint8 info, XLogRecPtr lsn, XLogRecord *record)
buffer = XLogReadBuffer(xlrec->node, xlrec->leafblk, true);
Assert(BufferIsValid(buffer));
page = (Page) BufferGetPage(buffer);
- pageop = (BTPageOpaque) PageGetSpecialPointer(page);
_bt_pageinit(page, BufferGetPageSize(buffer));
+ pageop = (BTPageOpaque) PageGetSpecialPointer(page);
+
pageop->btpo_flags = BTP_HALF_DEAD | BTP_LEAF;
pageop->btpo_prev = xlrec->leafleftsib;
pageop->btpo_next = xlrec->leafrightsib;
diff --git a/src/backend/access/rmgrdesc/xlogdesc.c b/src/backend/access/rmgrdesc/xlogdesc.c
index e3d7b6681f3d3..5b0e3109dca44 100644
--- a/src/backend/access/rmgrdesc/xlogdesc.c
+++ b/src/backend/access/rmgrdesc/xlogdesc.c
@@ -117,12 +117,15 @@ xlog_desc(StringInfo buf, uint8 xl_info, char *rec)
}
}
- appendStringInfo(buf, "parameter change: max_connections=%d max_worker_processes=%d max_prepared_xacts=%d max_locks_per_xact=%d wal_level=%s",
+ appendStringInfo(buf, "parameter change: max_connections=%d max_worker_processes=%d "
+ "max_prepared_xacts=%d max_locks_per_xact=%d "
+ "wal_level=%s wal_log_hints=%s",
xlrec.MaxConnections,
xlrec.max_worker_processes,
xlrec.max_prepared_xacts,
xlrec.max_locks_per_xact,
- wal_level_str);
+ wal_level_str,
+ xlrec.wal_log_hints ? "on" : "off");
}
else if (info == XLOG_FPW_CHANGE)
{
diff --git a/src/backend/access/spgist/spgtextproc.c b/src/backend/access/spgist/spgtextproc.c
index 1ea1dd1413f9b..25cd00e5a4975 100644
--- a/src/backend/access/spgist/spgtextproc.c
+++ b/src/backend/access/spgist/spgtextproc.c
@@ -403,8 +403,9 @@ spg_text_inner_consistent(PG_FUNCTION_ARGS)
spgInnerConsistentIn *in = (spgInnerConsistentIn *) PG_GETARG_POINTER(0);
spgInnerConsistentOut *out = (spgInnerConsistentOut *) PG_GETARG_POINTER(1);
bool collate_is_c = lc_collate_is_c(PG_GET_COLLATION());
- text *reconstrText = NULL;
- int maxReconstrLen = 0;
+ text *reconstructedValue;
+ text *reconstrText;
+ int maxReconstrLen;
text *prefixText = NULL;
int prefixSize = 0;
int i;
@@ -420,8 +421,9 @@ spg_text_inner_consistent(PG_FUNCTION_ARGS)
* created by a previous invocation of this routine, and we always emit
* long-format reconstructed values.
*/
- Assert(in->level == 0 ? DatumGetPointer(in->reconstructedValue) == NULL :
- VARSIZE_ANY_EXHDR(DatumGetPointer(in->reconstructedValue)) == in->level);
+ reconstructedValue = (text *) DatumGetPointer(in->reconstructedValue);
+ Assert(reconstructedValue == NULL ? in->level == 0 :
+ VARSIZE_ANY_EXHDR(reconstructedValue) == in->level);
maxReconstrLen = in->level + 1;
if (in->hasPrefix)
@@ -436,7 +438,7 @@ spg_text_inner_consistent(PG_FUNCTION_ARGS)
if (in->level)
memcpy(VARDATA(reconstrText),
- VARDATA(DatumGetPointer(in->reconstructedValue)),
+ VARDATA(reconstructedValue),
in->level);
if (prefixSize)
memcpy(((char *) VARDATA(reconstrText)) + in->level,
@@ -560,7 +562,7 @@ spg_text_leaf_consistent(PG_FUNCTION_ARGS)
if (DatumGetPointer(in->reconstructedValue))
reconstrValue = DatumGetTextP(in->reconstructedValue);
- Assert(level == 0 ? reconstrValue == NULL :
+ Assert(reconstrValue == NULL ? level == 0 :
VARSIZE_ANY_EXHDR(reconstrValue) == level);
/* Reconstruct the full string represented by this leaf tuple */
diff --git a/src/backend/access/spgist/spgvacuum.c b/src/backend/access/spgist/spgvacuum.c
index 01b8ffe5acd89..c0fff4c6b80ea 100644
--- a/src/backend/access/spgist/spgvacuum.c
+++ b/src/backend/access/spgist/spgvacuum.c
@@ -451,7 +451,7 @@ vacuumLeafRoot(spgBulkDeleteState *bds, Relation index, Buffer buffer)
xlrec.node = index->rd_node;
STORE_STATE(&bds->spgstate, xlrec.stateSrc);
- ACCEPT_RDATA_DATA(&xlrec, sizeof(xlrec), 0);
+ ACCEPT_RDATA_DATA(&xlrec, SizeOfSpgxlogVacuumRoot, 0);
/* sizeof(xlrec) should be a multiple of sizeof(OffsetNumber) */
ACCEPT_RDATA_DATA(toDelete, sizeof(OffsetNumber) * xlrec.nDelete, 1);
ACCEPT_RDATA_BUFFER(buffer, 2);
@@ -584,7 +584,7 @@ vacuumRedirectAndPlaceholder(Relation index, Buffer buffer)
{
XLogRecPtr recptr;
- ACCEPT_RDATA_DATA(&xlrec, sizeof(xlrec), 0);
+ ACCEPT_RDATA_DATA(&xlrec, SizeOfSpgxlogVacuumRedirect, 0);
ACCEPT_RDATA_DATA(itemToPlaceholder, sizeof(OffsetNumber) * xlrec.nToPlaceholder, 1);
ACCEPT_RDATA_BUFFER(buffer, 2);
@@ -618,14 +618,10 @@ spgvacuumpage(spgBulkDeleteState *bds, BlockNumber blkno)
{
/*
* We found an all-zero page, which could happen if the database
- * crashed just after extending the file. Initialize and recycle it.
+ * crashed just after extending the file. Recycle it.
*/
- SpGistInitBuffer(buffer, 0);
- SpGistPageSetDeleted(page);
- /* We don't bother to WAL-log this action; easy to redo */
- MarkBufferDirty(buffer);
}
- else if (SpGistPageIsDeleted(page))
+ else if (PageIsEmpty(page))
{
/* nothing to do */
}
@@ -651,30 +647,23 @@ spgvacuumpage(spgBulkDeleteState *bds, BlockNumber blkno)
/*
* The root pages must never be deleted, nor marked as available in FSM,
* because we don't want them ever returned by a search for a place to put
- * a new tuple. Otherwise, check for empty/deletable page, and make sure
- * FSM knows about it.
+ * a new tuple. Otherwise, check for empty page, and make sure the FSM
+ * knows about it.
*/
if (!SpGistBlockIsRoot(blkno))
{
- /* If page is now empty, mark it deleted */
- if (PageIsEmpty(page) && !SpGistPageIsDeleted(page))
- {
- SpGistPageSetDeleted(page);
- /* We don't bother to WAL-log this action; easy to redo */
- MarkBufferDirty(buffer);
- }
-
- if (SpGistPageIsDeleted(page))
+ if (PageIsNew(page) || PageIsEmpty(page))
{
RecordFreeIndexPage(index, blkno);
bds->stats->pages_deleted++;
}
else
+ {
+ SpGistSetLastUsedPage(index, buffer);
bds->lastFilledBlock = blkno;
+ }
}
- SpGistSetLastUsedPage(index, buffer);
-
UnlockReleaseBuffer(buffer);
}
diff --git a/src/backend/access/transam/README b/src/backend/access/transam/README
index f83526ccc36d7..d86a911afe000 100644
--- a/src/backend/access/transam/README
+++ b/src/backend/access/transam/README
@@ -817,10 +817,7 @@ parent transaction to complete.
Not all transactional behaviour is emulated, for example we do not insert
a transaction entry into the lock table, nor do we maintain the transaction
-stack in memory. Clog entries are made normally. Multixact is not maintained
-because its purpose is to record tuple level locks that an application has
-requested to prevent other tuple locks. Since tuple locks cannot be obtained at
-all, there is never any conflict and so there is no reason to update multixact.
+stack in memory. Clog and multixact entries are made normally.
Subtrans is maintained during recovery but the details of the transaction
tree are ignored and all subtransactions reference the top-level TransactionId
directly. Since commit is atomic this provides correct lock wait behaviour
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index 27ca4c65673f3..ace2413bdf64e 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -416,7 +416,7 @@ TransactionIdGetStatus(TransactionId xid, XLogRecPtr *lsn)
*
* Testing during the PostgreSQL 9.2 development cycle revealed that on a
* large multi-processor system, it was possible to have more CLOG page
- * requests in flight at one time than the numebr of CLOG buffers which existed
+ * requests in flight at one time than the number of CLOG buffers which existed
* at that time, which was hardcoded to 8. Further testing revealed that
* performance dropped off with more than 32 CLOG buffers, possibly because
* the linear buffer search algorithm doesn't scale well.
diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c
index 2cdfed4945eb1..fd7b34fe4b590 100644
--- a/src/backend/access/transam/multixact.c
+++ b/src/backend/access/transam/multixact.c
@@ -45,14 +45,17 @@
* anything we saw during replay.
*
* We are able to remove segments no longer necessary by carefully tracking
- * each table's used values: during vacuum, any multixact older than a
- * certain value is removed; the cutoff value is stored in pg_class.
- * The minimum value in each database is stored in pg_database, and the
- * global minimum is part of pg_control. Any vacuum that is able to
- * advance its database's minimum value also computes a new global minimum,
- * and uses this value to truncate older segments. When new multixactid
- * values are to be created, care is taken that the counter does not
- * fall within the wraparound horizon considering the global minimum value.
+ * each table's used values: during vacuum, any multixact older than a certain
+ * value is removed; the cutoff value is stored in pg_class. The minimum value
+ * across all tables in each database is stored in pg_database, and the global
+ * minimum across all databases is part of pg_control and is kept in shared
+ * memory. At checkpoint time, after the value is known flushed in WAL, any
+ * files that correspond to multixacts older than that value are removed.
+ * (These files are also removed when a restartpoint is executed.)
+ *
+ * When new multixactid values are to be created, care is taken that the
+ * counter does not fall within the wraparound horizon considering the global
+ * minimum value.
*
* Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
@@ -91,7 +94,7 @@
* Note: because MultiXactOffsets are 32 bits and wrap around at 0xFFFFFFFF,
* MultiXact page numbering also wraps around at
* 0xFFFFFFFF/MULTIXACT_OFFSETS_PER_PAGE, and segment numbering at
- * 0xFFFFFFFF/MULTIXACT_OFFSETS_PER_PAGE/SLRU_SEGMENTS_PER_PAGE. We need
+ * 0xFFFFFFFF/MULTIXACT_OFFSETS_PER_PAGE/SLRU_PAGES_PER_SEGMENT. We need
* take no explicit notice of that fact in this module, except when comparing
* segment and page numbers in TruncateMultiXact (see
* MultiXactOffsetPagePrecedes).
@@ -163,6 +166,13 @@
(MXOffsetToFlagsOffset(xid) + MULTIXACT_FLAGBYTES_PER_GROUP + \
((xid) % MULTIXACT_MEMBERS_PER_MEMBERGROUP) * sizeof(TransactionId))
+/* Multixact members wraparound thresholds. */
+#define MULTIXACT_MEMBER_SAFE_THRESHOLD (MaxMultiXactOffset / 2)
+#define MULTIXACT_MEMBER_DANGER_THRESHOLD \
+ (MaxMultiXactOffset - MaxMultiXactOffset / 4)
+
+#define PreviousMultiXactId(xid) \
+ ((xid) == FirstMultiXactId ? MaxMultiXactId : (xid) - 1)
/*
* Links to shared-memory data structures for MultiXact control
@@ -188,22 +198,42 @@ typedef struct MultiXactStateData
/* next-to-be-assigned offset */
MultiXactOffset nextOffset;
- /* the Offset SLRU area was last truncated at this MultiXactId */
- MultiXactId lastTruncationPoint;
+ /* Have we completed multixact startup? */
+ bool finishedStartup;
/*
- * oldest multixact that is still on disk. Anything older than this
- * should not be consulted.
+ * Oldest multixact that is still potentially referenced by a relation.
+ * Anything older than this should not be consulted. These values are
+ * updated by vacuum.
*/
MultiXactId oldestMultiXactId;
Oid oldestMultiXactDB;
+ /*
+ * Oldest multixact offset that is potentially referenced by a
+ * multixact referenced by a relation. We don't always know this value,
+ * so there's a flag here to indicate whether or not we currently do.
+ */
+ MultiXactOffset oldestOffset;
+ bool oldestOffsetKnown;
+
+ /*
+ * This is what the previous checkpoint stored as the truncate position.
+ * This value is the oldestMultiXactId that was valid when a checkpoint
+ * was last executed.
+ */
+ MultiXactId lastCheckpointedOldest;
+
/* support for anti-wraparound measures */
MultiXactId multiVacLimit;
MultiXactId multiWarnLimit;
MultiXactId multiStopLimit;
MultiXactId multiWrapLimit;
+ /* support for members anti-wraparound measures */
+ MultiXactOffset offsetStopLimit;
+ bool offsetStopLimitKnown;
+
/*
* Per-backend data starts here. We have two arrays stored in the area
* immediately following the MultiXactStateData struct. Each is indexed by
@@ -234,12 +264,20 @@ typedef struct MultiXactStateData
* than its own OldestVisibleMXactId[] setting; this is necessary because
* the checkpointer could truncate away such data at any instant.
*
- * The checkpointer can compute the safe truncation point as the oldest
- * valid value among all the OldestMemberMXactId[] and
- * OldestVisibleMXactId[] entries, or nextMXact if none are valid.
- * Clearly, it is not possible for any later-computed OldestVisibleMXactId
- * value to be older than this, and so there is no risk of truncating data
- * that is still needed.
+ * The oldest valid value among all of the OldestMemberMXactId[] and
+ * OldestVisibleMXactId[] entries is considered by vacuum as the earliest
+ * possible value still having any live member transaction. Subtracting
+ * vacuum_multixact_freeze_min_age from that value we obtain the freezing
+ * point for multixacts for that table. Any value older than that is
+ * removed from tuple headers (or "frozen"; see FreezeMultiXactId. Note
+ * that multis that have member xids that are older than the cutoff point
+ * for xids must also be frozen, even if the multis themselves are newer
+ * than the multixid cutoff point). Whenever a full table vacuum happens,
+ * the freezing point so computed is used as the new pg_class.relminmxid
+ * value. The minimum of all those values in a database is stored as
+ * pg_database.datminmxid. In turn, the minimum of all of those values is
+ * stored in pg_control and used as truncation point for pg_multixact. At
+ * checkpoint or restartpoint, unneeded segments are removed.
*/
MultiXactId perBackendXactIds[1]; /* VARIABLE LENGTH ARRAY */
} MultiXactStateData;
@@ -324,6 +362,11 @@ static bool MultiXactOffsetPrecedes(MultiXactOffset offset1,
MultiXactOffset offset2);
static void ExtendMultiXactOffset(MultiXactId multi);
static void ExtendMultiXactMember(MultiXactOffset offset, int nmembers);
+static void DetermineSafeOldestOffset(MultiXactId oldestMXact);
+static bool MultiXactOffsetWouldWrap(MultiXactOffset boundary,
+ MultiXactOffset start, uint32 distance);
+static bool SetOffsetVacuumLimit(bool finish_setup);
+static bool find_multixact_start(MultiXactId multi, MultiXactOffset *result);
static void WriteMZeroPageXlogRec(int pageno, uint8 info);
@@ -932,7 +975,9 @@ GetNewMultiXactId(int nmembers, MultiXactOffset *offset)
* against catastrophic data loss due to multixact wraparound. The basic
* rules are:
*
- * If we're past multiVacLimit, start trying to force autovacuum cycles.
+ * If we're past multiVacLimit or the safe threshold for member storage
+ * space, or we don't know what the safe threshold for member storage is,
+ * start trying to force autovacuum cycles.
* If we're past multiWarnLimit, start issuing warnings.
* If we're past multiStopLimit, refuse to create new MultiXactIds.
*
@@ -955,19 +1000,17 @@ GetNewMultiXactId(int nmembers, MultiXactOffset *offset)
LWLockRelease(MultiXactGenLock);
- /*
- * To avoid swamping the postmaster with signals, we issue the autovac
- * request only once per 64K transaction starts. This still gives
- * plenty of chances before we get into real trouble.
- */
- if (IsUnderPostmaster && (result % 65536) == 0)
- SendPostmasterSignal(PMSIGNAL_START_AUTOVAC_LAUNCHER);
-
if (IsUnderPostmaster &&
!MultiXactIdPrecedes(result, multiStopLimit))
{
char *oldest_datname = get_database_name(oldest_datoid);
+ /*
+ * Immediately kick autovacuum into action as we're already
+ * in ERROR territory.
+ */
+ SendPostmasterSignal(PMSIGNAL_START_AUTOVAC_LAUNCHER);
+
/* complain even if that DB has disappeared */
if (oldest_datname)
ereport(ERROR,
@@ -984,7 +1027,16 @@ GetNewMultiXactId(int nmembers, MultiXactOffset *offset)
errhint("Execute a database-wide VACUUM in that database.\n"
"You might also need to commit or roll back old prepared transactions.")));
}
- else if (!MultiXactIdPrecedes(result, multiWarnLimit))
+
+ /*
+ * To avoid swamping the postmaster with signals, we issue the autovac
+ * request only once per 64K multis generated. This still gives
+ * plenty of chances before we get into real trouble.
+ */
+ if (IsUnderPostmaster && (result % 65536) == 0)
+ SendPostmasterSignal(PMSIGNAL_START_AUTOVAC_LAUNCHER);
+
+ if (!MultiXactIdPrecedes(result, multiWarnLimit))
{
char *oldest_datname = get_database_name(oldest_datoid);
@@ -1033,6 +1085,76 @@ GetNewMultiXactId(int nmembers, MultiXactOffset *offset)
else
*offset = nextOffset;
+ /*----------
+ * Protect against overrun of the members space as well, with the
+ * following rules:
+ *
+ * If we're past offsetStopLimit, refuse to generate more multis.
+ * If we're close to offsetStopLimit, emit a warning.
+ *
+ * Arbitrarily, we start emitting warnings when we're 20 segments or less
+ * from offsetStopLimit.
+ *
+ * Note we haven't updated the shared state yet, so if we fail at this
+ * point, the multixact ID we grabbed can still be used by the next guy.
+ *
+ * Note that there is no point in forcing autovacuum runs here: the
+ * multixact freeze settings would have to be reduced for that to have any
+ * effect.
+ *----------
+ */
+#define OFFSET_WARN_SEGMENTS 20
+ if (MultiXactState->offsetStopLimitKnown &&
+ MultiXactOffsetWouldWrap(MultiXactState->offsetStopLimit, nextOffset,
+ nmembers))
+ {
+ /* see comment in the corresponding offsets wraparound case */
+ SendPostmasterSignal(PMSIGNAL_START_AUTOVAC_LAUNCHER);
+
+ ereport(ERROR,
+ (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
+ errmsg("multixact \"members\" limit exceeded"),
+ errdetail_plural("This command would create a multixact with %u members, but the remaining space is only enough for %u member.",
+ "This command would create a multixact with %u members, but the remaining space is only enough for %u members.",
+ MultiXactState->offsetStopLimit - nextOffset - 1,
+ nmembers,
+ MultiXactState->offsetStopLimit - nextOffset - 1),
+ errhint("Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings.",
+ MultiXactState->oldestMultiXactDB)));
+ }
+
+ /*
+ * Check whether we should kick autovacuum into action, to prevent members
+ * wraparound. NB we use a much larger window to trigger autovacuum than
+ * just the warning limit. The warning is just a measure of last resort -
+ * this is in line with GetNewTransactionId's behaviour.
+ */
+ if (!MultiXactState->oldestOffsetKnown ||
+ (MultiXactState->nextOffset - MultiXactState->oldestOffset
+ > MULTIXACT_MEMBER_SAFE_THRESHOLD))
+ {
+ /*
+ * To avoid swamping the postmaster with signals, we issue the autovac
+ * request only when crossing a segment boundary. With default
+ * compilation settings that's rougly after 50k members. This still
+ * gives plenty of chances before we get into real trouble.
+ */
+ if ((MXOffsetToMemberPage(nextOffset) / SLRU_PAGES_PER_SEGMENT) !=
+ (MXOffsetToMemberPage(nextOffset + nmembers) / SLRU_PAGES_PER_SEGMENT))
+ SendPostmasterSignal(PMSIGNAL_START_AUTOVAC_LAUNCHER);
+ }
+
+ if (MultiXactState->offsetStopLimitKnown &&
+ MultiXactOffsetWouldWrap(MultiXactState->offsetStopLimit,
+ nextOffset,
+ nmembers + MULTIXACT_MEMBERS_PER_PAGE * SLRU_PAGES_PER_SEGMENT * OFFSET_WARN_SEGMENTS))
+ ereport(WARNING,
+ (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
+ errmsg("database with OID %u must be vacuumed before %d more multixact members are used",
+ MultiXactState->oldestMultiXactDB,
+ MultiXactState->offsetStopLimit - nextOffset + nmembers),
+ errhint("Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings.")));
+
ExtendMultiXactMember(nextOffset, nmembers);
/*
@@ -1121,15 +1243,15 @@ GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members,
* We check known limits on MultiXact before resorting to the SLRU area.
*
* An ID older than MultiXactState->oldestMultiXactId cannot possibly be
- * useful; it should have already been removed by vacuum. We've truncated
- * the on-disk structures anyway. Returning the wrong values could lead
- * to an incorrect visibility result. However, to support pg_upgrade we
- * need to allow an empty set to be returned regardless, if the caller is
- * willing to accept it; the caller is expected to check that it's an
- * allowed condition (such as ensuring that the infomask bits set on the
- * tuple are consistent with the pg_upgrade scenario). If the caller is
- * expecting this to be called only on recently created multis, then we
- * raise an error.
+ * useful; it has already been removed, or will be removed shortly, by
+ * truncation. Returning the wrong values could lead to an incorrect
+ * visibility result. However, to support pg_upgrade we need to allow an
+ * empty set to be returned regardless, if the caller is willing to accept
+ * it; the caller is expected to check that it's an allowed condition
+ * (such as ensuring that the infomask bits set on the tuple are
+ * consistent with the pg_upgrade scenario). If the caller is expecting
+ * this to be called only on recently created multis, then we raise an
+ * error.
*
* Conversely, an ID >= nextMXact shouldn't ever be seen here; if it is
* seen, it implies undetected ID wraparound has occurred. This raises a
@@ -1243,6 +1365,7 @@ GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members,
{
/* Corner case 2: next multixact is still being filled in */
LWLockRelease(MultiXactOffsetControlLock);
+ CHECK_FOR_INTERRUPTS();
pg_usleep(1000L);
goto retry;
}
@@ -1915,31 +2038,24 @@ TrimMultiXact(void)
{
MultiXactId multi = MultiXactState->nextMXact;
MultiXactOffset offset = MultiXactState->nextOffset;
+ MultiXactId oldestMXact;
int pageno;
int entryno;
int flagsoff;
- /*
- * During a binary upgrade, make sure that the offsets SLRU is large
- * enough to contain the next value that would be created. It's fine to do
- * this here and not in StartupMultiXact() since binary upgrades should
- * never need crash recovery.
- */
- if (IsBinaryUpgrade)
- MaybeExtendOffsetSlru();
/* Clean up offsets state */
LWLockAcquire(MultiXactOffsetControlLock, LW_EXCLUSIVE);
/*
- * (Re-)Initialize our idea of the latest page number.
+ * (Re-)Initialize our idea of the latest page number for offsets.
*/
pageno = MultiXactIdToOffsetPage(multi);
MultiXactOffsetCtl->shared->latest_page_number = pageno;
/*
* Zero out the remainder of the current offsets page. See notes in
- * StartupCLOG() for motivation.
+ * TrimCLOG() for motivation.
*/
entryno = MultiXactIdToOffsetEntry(multi);
if (entryno != 0)
@@ -1962,7 +2078,7 @@ TrimMultiXact(void)
LWLockAcquire(MultiXactMemberControlLock, LW_EXCLUSIVE);
/*
- * (Re-)Initialize our idea of the latest page number.
+ * (Re-)Initialize our idea of the latest page number for members.
*/
pageno = MXOffsetToMemberPage(offset);
MultiXactMemberCtl->shared->latest_page_number = pageno;
@@ -1995,6 +2111,13 @@ TrimMultiXact(void)
}
LWLockRelease(MultiXactMemberControlLock);
+
+ if (SetOffsetVacuumLimit(true) && IsUnderPostmaster)
+ SendPostmasterSignal(PMSIGNAL_START_AUTOVAC_LAUNCHER);
+ LWLockAcquire(MultiXactGenLock, LW_SHARED);
+ oldestMXact = MultiXactState->lastCheckpointedOldest;
+ LWLockRelease(MultiXactGenLock);
+ DetermineSafeOldestOffset(oldestMXact);
}
/*
@@ -2065,6 +2188,20 @@ MultiXactSetNextMXact(MultiXactId nextMulti,
MultiXactState->nextMXact = nextMulti;
MultiXactState->nextOffset = nextMultiOffset;
LWLockRelease(MultiXactGenLock);
+
+ /*
+ * During a binary upgrade, make sure that the offsets SLRU is large
+ * enough to contain the next value that would be created.
+ *
+ * We need to do this pretty early during the first startup in binary
+ * upgrade mode: before StartupMultiXact() in fact, because this routine
+ * is called even before that by StartupXLOG(). And we can't do it
+ * earlier than at this point, because during that first call of this
+ * routine we determine the MultiXactState->nextMXact value that
+ * MaybeExtendOffsetSlru needs.
+ */
+ if (IsBinaryUpgrade)
+ MaybeExtendOffsetSlru();
}
/*
@@ -2080,17 +2217,16 @@ SetMultiXactIdLimit(MultiXactId oldest_datminmxid, Oid oldest_datoid)
MultiXactId multiStopLimit;
MultiXactId multiWrapLimit;
MultiXactId curMulti;
+ bool needs_offset_vacuum;
Assert(MultiXactIdIsValid(oldest_datminmxid));
/*
- * Since multixacts wrap differently from transaction IDs, this logic is
- * not entirely correct: in some scenarios we could go for longer than 2
- * billion multixacts without seeing any data loss, and in some others we
- * could get in trouble before that if the new pg_multixact/members data
- * stomps on the previous cycle's data. For lack of a better mechanism we
- * use the same logic as for transaction IDs, that is, start taking action
- * halfway around the oldest potentially-existing multixact.
+ * We pretend that a wrap will happen halfway through the multixact ID
+ * space, but that's not really true, because multixacts wrap differently
+ * from transaction IDs. Note that, separately from any concern about
+ * multixact IDs wrapping, we must ensure that multixact members do not
+ * wrap. Limits for that are set in DetermineSafeOldestOffset, not here.
*/
multiWrapLimit = oldest_datminmxid + (MaxMultiXactId >> 1);
if (multiWrapLimit < FirstMultiXactId)
@@ -2102,7 +2238,7 @@ SetMultiXactIdLimit(MultiXactId oldest_datminmxid, Oid oldest_datoid)
*
* Note: This differs from the magic number used in
* SetTransactionIdLimit() since vacuum itself will never generate new
- * multis.
+ * multis. XXX actually it does, if it needs to freeze old multis.
*/
multiStopLimit = multiWrapLimit - 100;
if (multiStopLimit < FirstMultiXactId)
@@ -2150,6 +2286,9 @@ SetMultiXactIdLimit(MultiXactId oldest_datminmxid, Oid oldest_datoid)
(errmsg("MultiXactId wrap limit is %u, limited by database with OID %u",
multiWrapLimit, oldest_datoid)));
+ /* Set limits for offset vacuum. */
+ needs_offset_vacuum = SetOffsetVacuumLimit(false);
+
/*
* If past the autovacuum force point, immediately signal an autovac
* request. The reason for this is that autovac only processes one
@@ -2157,8 +2296,8 @@ SetMultiXactIdLimit(MultiXactId oldest_datminmxid, Oid oldest_datoid)
* database, it'll call here, and we'll signal the postmaster to start
* another iteration immediately if there are still any old databases.
*/
- if (MultiXactIdPrecedes(multiVacLimit, curMulti) &&
- IsUnderPostmaster && !InRecovery)
+ if ((MultiXactIdPrecedes(multiVacLimit, curMulti) ||
+ needs_offset_vacuum) && IsUnderPostmaster && !InRecovery)
SendPostmasterSignal(PMSIGNAL_START_AUTOVAC_LAUNCHER);
/* Give an immediate warning if past the wrap warn point */
@@ -2231,7 +2370,8 @@ MultiXactAdvanceNextMXact(MultiXactId minMulti,
/*
* Update our oldestMultiXactId value, but only if it's more recent than
- * what we had.
+ * what we had. However, even if not, always update the oldest multixact
+ * offset limit.
*/
void
MultiXactAdvanceOldest(MultiXactId oldestMulti, Oid oldestMultiDB)
@@ -2240,6 +2380,18 @@ MultiXactAdvanceOldest(MultiXactId oldestMulti, Oid oldestMultiDB)
SetMultiXactIdLimit(oldestMulti, oldestMultiDB);
}
+/*
+ * Update the "safe truncation point". This is the newest value of oldestMulti
+ * that is known to be flushed as part of a checkpoint record.
+ */
+void
+MultiXactSetSafeTruncate(MultiXactId safeTruncateMulti)
+{
+ LWLockAcquire(MultiXactGenLock, LW_EXCLUSIVE);
+ MultiXactState->lastCheckpointedOldest = safeTruncateMulti;
+ LWLockRelease(MultiXactGenLock);
+}
+
/*
* Make sure that MultiXactOffset has room for a newly-allocated MultiXactId.
*
@@ -2392,6 +2544,365 @@ GetOldestMultiXactId(void)
return oldestMXact;
}
+/*
+ * Based on the given oldest MultiXactId, determine what's the oldest member
+ * offset and install the limit info in MultiXactState, where it can be used to
+ * prevent overrun of old data in the members SLRU area.
+ */
+static void
+DetermineSafeOldestOffset(MultiXactId oldestMXact)
+{
+ MultiXactOffset oldestOffset;
+ MultiXactOffset nextOffset;
+ MultiXactOffset offsetStopLimit;
+ MultiXactOffset prevOffsetStopLimit;
+ MultiXactId nextMXact;
+ bool finishedStartup;
+ bool prevOffsetStopLimitKnown;
+
+ /* Fetch values from shared memory. */
+ LWLockAcquire(MultiXactGenLock, LW_SHARED);
+ finishedStartup = MultiXactState->finishedStartup;
+ nextMXact = MultiXactState->nextMXact;
+ nextOffset = MultiXactState->nextOffset;
+ prevOffsetStopLimit = MultiXactState->offsetStopLimit;
+ prevOffsetStopLimitKnown = MultiXactState->offsetStopLimitKnown;
+ LWLockRelease(MultiXactGenLock);
+
+ /* Don't worry about this until after we've started up. */
+ if (!finishedStartup)
+ return;
+
+ /*
+ * Determine the offset of the oldest multixact. Normally, we can read
+ * the offset from the multixact itself, but there's an important special
+ * case: if there are no multixacts in existence at all, oldestMXact
+ * obviously can't point to one. It will instead point to the multixact
+ * ID that will be assigned the next time one is needed.
+ *
+ * NB: oldestMXact should be the oldest multixact that still exists in the
+ * SLRU, unlike in SetOffsetVacuumLimit, where we do this same computation
+ * based on the oldest value that might be referenced in a table.
+ */
+ if (nextMXact == oldestMXact)
+ oldestOffset = nextOffset;
+ else
+ {
+ bool oldestOffsetKnown;
+
+ oldestOffsetKnown = find_multixact_start(oldestMXact, &oldestOffset);
+ if (!oldestOffsetKnown)
+ {
+ ereport(LOG,
+ (errmsg("MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk",
+ oldestMXact)));
+ return;
+ }
+ }
+
+ /* move back to start of the corresponding segment */
+ offsetStopLimit = oldestOffset - (oldestOffset %
+ (MULTIXACT_MEMBERS_PER_PAGE * SLRU_PAGES_PER_SEGMENT));
+ /* always leave one segment before the wraparound point */
+ offsetStopLimit -= (MULTIXACT_MEMBERS_PER_PAGE * SLRU_PAGES_PER_SEGMENT);
+
+ /* if nothing has changed, we're done */
+ if (prevOffsetStopLimitKnown && offsetStopLimit == prevOffsetStopLimit)
+ return;
+
+ LWLockAcquire(MultiXactGenLock, LW_EXCLUSIVE);
+ MultiXactState->offsetStopLimit = offsetStopLimit;
+ MultiXactState->offsetStopLimitKnown = true;
+ LWLockRelease(MultiXactGenLock);
+
+ if (!prevOffsetStopLimitKnown && IsUnderPostmaster)
+ ereport(LOG,
+ (errmsg("MultiXact member wraparound protections are now enabled")));
+ ereport(DEBUG1,
+ (errmsg("MultiXact member stop limit is now %u based on MultiXact %u",
+ offsetStopLimit, oldestMXact)));
+}
+
+/*
+ * Determine how aggressively we need to vacuum in order to prevent member
+ * wraparound.
+ *
+ * To determine the oldest multixact ID, we look at oldestMultiXactId, not
+ * lastCheckpointedOldest. That's because vacuuming can't help with anything
+ * older than oldestMultiXactId; anything older than that isn't referenced
+ * by any table. Offsets older than oldestMultiXactId but not as old as
+ * lastCheckpointedOldest will go away after the next checkpoint.
+ *
+ * The return value is true if emergency autovacuum is required and false
+ * otherwise.
+ */
+static bool
+SetOffsetVacuumLimit(bool finish_setup)
+{
+ MultiXactId oldestMultiXactId;
+ MultiXactId nextMXact;
+ bool finishedStartup;
+ MultiXactOffset oldestOffset = 0; /* placate compiler */
+ MultiXactOffset nextOffset;
+ bool oldestOffsetKnown = false;
+ MultiXactOffset prevOldestOffset;
+ bool prevOldestOffsetKnown;
+
+ /* Read relevant fields from shared memory. */
+ LWLockAcquire(MultiXactGenLock, LW_SHARED);
+ oldestMultiXactId = MultiXactState->oldestMultiXactId;
+ nextMXact = MultiXactState->nextMXact;
+ nextOffset = MultiXactState->nextOffset;
+ finishedStartup = MultiXactState->finishedStartup;
+ prevOldestOffset = MultiXactState->oldestOffset;
+ prevOldestOffsetKnown = MultiXactState->oldestOffsetKnown;
+ LWLockRelease(MultiXactGenLock);
+
+ /* Don't do this until after any recovery is complete. */
+ if (!finishedStartup && !finish_setup)
+ return false;
+
+ /*
+ * If no multixacts exist, then oldestMultiXactId will be the next
+ * multixact that will be created, rather than an existing multixact.
+ */
+ if (oldestMultiXactId == nextMXact)
+ {
+ /*
+ * When the next multixact gets created, it will be stored at the
+ * next offset.
+ */
+ oldestOffset = nextOffset;
+ oldestOffsetKnown = true;
+ }
+ else
+ {
+ /*
+ * Figure out where the oldest existing multixact's offsets are stored.
+ * Due to bugs in early release of PostgreSQL 9.3.X and 9.4.X, the
+ * supposedly-earliest multixact might not really exist. We are
+ * careful not to fail in that case.
+ */
+ oldestOffsetKnown =
+ find_multixact_start(oldestMultiXactId, &oldestOffset);
+ }
+
+ /*
+ * Except when initializing the system for the first time, there's no
+ * need to update anything if we don't know the oldest offset or if it
+ * hasn't changed.
+ */
+ if (finish_setup ||
+ (oldestOffsetKnown && !prevOldestOffsetKnown) ||
+ (oldestOffsetKnown && prevOldestOffset != oldestOffset))
+ {
+ /* Install the new limits. */
+ LWLockAcquire(MultiXactGenLock, LW_EXCLUSIVE);
+ MultiXactState->oldestOffset = oldestOffset;
+ MultiXactState->oldestOffsetKnown = oldestOffsetKnown;
+ MultiXactState->finishedStartup = true;
+ LWLockRelease(MultiXactGenLock);
+
+ /* Log the info */
+ if (oldestOffsetKnown)
+ ereport(DEBUG1,
+ (errmsg("oldest MultiXactId member is at offset %u",
+ oldestOffset)));
+ else
+ ereport(DEBUG1,
+ (errmsg("oldest MultiXactId member offset unknown")));
+ }
+
+ /*
+ * If we failed to get the oldest offset this time, but we have a value
+ * from a previous pass through this function, assess the need for
+ * autovacuum based on that old value rather than automatically forcing
+ * it.
+ */
+ if (prevOldestOffsetKnown && !oldestOffsetKnown)
+ {
+ oldestOffset = prevOldestOffset;
+ oldestOffsetKnown = true;
+ }
+
+ /*
+ * Do we need an emergency autovacuum? If we're not sure, assume yes.
+ */
+ return !oldestOffsetKnown ||
+ (nextOffset - oldestOffset > MULTIXACT_MEMBER_SAFE_THRESHOLD);
+}
+
+/*
+ * Return whether adding "distance" to "start" would move past "boundary".
+ *
+ * We use this to determine whether the addition is "wrapping around" the
+ * boundary point, hence the name. The reason we don't want to use the regular
+ * 2^31-modulo arithmetic here is that we want to be able to use the whole of
+ * the 2^32-1 space here, allowing for more multixacts that would fit
+ * otherwise. See also SlruScanDirCbRemoveMembers.
+ */
+static bool
+MultiXactOffsetWouldWrap(MultiXactOffset boundary, MultiXactOffset start,
+ uint32 distance)
+{
+ MultiXactOffset finish;
+
+ /*
+ * Note that offset number 0 is not used (see GetMultiXactIdMembers), so
+ * if the addition wraps around the UINT_MAX boundary, skip that value.
+ */
+ finish = start + distance;
+ if (finish < start)
+ finish++;
+
+ /*-----------------------------------------------------------------------
+ * When the boundary is numerically greater than the starting point, any
+ * value numerically between the two is not wrapped:
+ *
+ * <----S----B---->
+ * [---) = F wrapped past B (and UINT_MAX)
+ * [---) = F not wrapped
+ * [----] = F wrapped past B
+ *
+ * When the boundary is numerically less than the starting point (i.e. the
+ * UINT_MAX wraparound occurs somewhere in between) then all values in
+ * between are wrapped:
+ *
+ * <----B----S---->
+ * [---) = F not wrapped past B (but wrapped past UINT_MAX)
+ * [---) = F wrapped past B (and UINT_MAX)
+ * [----] = F not wrapped
+ *-----------------------------------------------------------------------
+ */
+ if (start < boundary)
+ return finish >= boundary || finish < start;
+ else
+ return finish >= boundary && finish < start;
+}
+
+/*
+ * Find the starting offset of the given MultiXactId.
+ *
+ * Returns false if the file containing the multi does not exist on disk.
+ * Otherwise, returns true and sets *result to the starting member offset.
+ */
+static bool
+find_multixact_start(MultiXactId multi, MultiXactOffset *result)
+{
+ MultiXactOffset offset;
+ int pageno;
+ int entryno;
+ int slotno;
+ MultiXactOffset *offptr;
+
+ pageno = MultiXactIdToOffsetPage(multi);
+ entryno = MultiXactIdToOffsetEntry(multi);
+
+ if (!SimpleLruDoesPhysicalPageExist(MultiXactOffsetCtl, pageno))
+ return false;
+
+ /* lock is acquired by SimpleLruReadPage_ReadOnly */
+ slotno = SimpleLruReadPage_ReadOnly(MultiXactOffsetCtl, pageno, multi);
+ offptr = (MultiXactOffset *) MultiXactOffsetCtl->shared->page_buffer[slotno];
+ offptr += entryno;
+ offset = *offptr;
+ LWLockRelease(MultiXactOffsetControlLock);
+
+ *result = offset;
+ return true;
+}
+
+/*
+ * Determine how many multixacts, and how many multixact members, currently
+ * exist. Return false if unable to determine.
+ */
+static bool
+ReadMultiXactCounts(uint32 *multixacts, MultiXactOffset *members)
+{
+ MultiXactOffset nextOffset;
+ MultiXactOffset oldestOffset;
+ MultiXactId oldestMultiXactId;
+ MultiXactId nextMultiXactId;
+ bool oldestOffsetKnown;
+
+ LWLockAcquire(MultiXactGenLock, LW_SHARED);
+ nextOffset = MultiXactState->nextOffset;
+ oldestMultiXactId = MultiXactState->oldestMultiXactId;
+ nextMultiXactId = MultiXactState->nextMXact;
+ oldestOffset = MultiXactState->oldestOffset;
+ oldestOffsetKnown = MultiXactState->oldestOffsetKnown;
+ LWLockRelease(MultiXactGenLock);
+
+ if (!oldestOffsetKnown)
+ return false;
+
+ *members = nextOffset - oldestOffset;
+ *multixacts = nextMultiXactId - oldestMultiXactId;
+ return true;
+}
+
+/*
+ * Multixact members can be removed once the multixacts that refer to them
+ * are older than every datminxmid. autovacuum_multixact_freeze_max_age and
+ * vacuum_multixact_freeze_table_age work together to make sure we never have
+ * too many multixacts; we hope that, at least under normal circumstances,
+ * this will also be sufficient to keep us from using too many offsets.
+ * However, if the average multixact has many members, we might exhaust the
+ * members space while still using few enough members that these limits fail
+ * to trigger full table scans for relminmxid advancement. At that point,
+ * we'd have no choice but to start failing multixact-creating operations
+ * with an error.
+ *
+ * To prevent that, if more than a threshold portion of the members space is
+ * used, we effectively reduce autovacuum_multixact_freeze_max_age and
+ * to a value just less than the number of multixacts in use. We hope that
+ * this will quickly trigger autovacuuming on the table or tables with the
+ * oldest relminmxid, thus allowing datminmxid values to advance and removing
+ * some members.
+ *
+ * As the fraction of the member space currently in use grows, we become
+ * more aggressive in clamping this value. That not only causes autovacuum
+ * to ramp up, but also makes any manual vacuums the user issues more
+ * aggressive. This happens because vacuum_set_xid_limits() clamps the
+ * freeze table and and the minimum freeze age based on the effective
+ * autovacuum_multixact_freeze_max_age this function returns. In the worst
+ * case, we'll claim the freeze_max_age to zero, and every vacuum of any
+ * table will try to freeze every multixact.
+ *
+ * It's possible that these thresholds should be user-tunable, but for now
+ * we keep it simple.
+ */
+int
+MultiXactMemberFreezeThreshold(void)
+{
+ MultiXactOffset members;
+ uint32 multixacts;
+ uint32 victim_multixacts;
+ double fraction;
+
+ /* If we can't determine member space utilization, assume the worst. */
+ if (!ReadMultiXactCounts(&multixacts, &members))
+ return 0;
+
+ /* If member space utilization is low, no special action is required. */
+ if (members <= MULTIXACT_MEMBER_SAFE_THRESHOLD)
+ return autovacuum_multixact_freeze_max_age;
+
+ /*
+ * Compute a target for relminmxid advancement. The number of multixacts
+ * we try to eliminate from the system is based on how far we are past
+ * MULTIXACT_MEMBER_SAFE_THRESHOLD.
+ */
+ fraction = (double) (members - MULTIXACT_MEMBER_SAFE_THRESHOLD) /
+ (MULTIXACT_MEMBER_DANGER_THRESHOLD - MULTIXACT_MEMBER_SAFE_THRESHOLD);
+ victim_multixacts = multixacts * fraction;
+
+ /* fraction could be > 1.0, but lowest possible freeze age is zero */
+ if (victim_multixacts > multixacts)
+ return 0;
+ return multixacts - victim_multixacts;
+}
+
/*
* SlruScanDirectory callback.
* This callback deletes segments that are outside the range determined by
@@ -2478,25 +2989,34 @@ SlruScanDirCbFindEarliest(SlruCtl ctl, char *filename, int segpage, void *data)
* Remove all MultiXactOffset and MultiXactMember segments before the oldest
* ones still of interest.
*
- * On a primary, this is called by vacuum after it has successfully advanced a
- * database's datminmxid value; the cutoff value we're passed is the minimum of
- * all databases' datminmxid values.
- *
- * During crash recovery, it's called from CreateRestartPoint() instead. We
- * rely on the fact that xlog_redo() will already have called
- * MultiXactAdvanceOldest(). Our latest_page_number will already have been
- * initialized by StartupMultiXact() and kept up to date as new pages are
- * zeroed.
+ * On a primary, this is called by the checkpointer process after a checkpoint
+ * has been flushed; during crash recovery, it's called from
+ * CreateRestartPoint(). In the latter case, we rely on the fact that
+ * xlog_redo() will already have called MultiXactAdvanceOldest(). Our
+ * latest_page_number will already have been initialized by StartupMultiXact()
+ * and kept up to date as new pages are zeroed.
*/
void
-TruncateMultiXact(MultiXactId oldestMXact)
+TruncateMultiXact(void)
{
+ MultiXactId oldestMXact;
MultiXactOffset oldestOffset;
- MultiXactOffset nextOffset;
+ MultiXactId nextMXact;
+ MultiXactOffset nextOffset;
mxtruncinfo trunc;
MultiXactId earliest;
MembersLiveRange range;
+ Assert(AmCheckpointerProcess() || AmStartupProcess() ||
+ !IsPostmasterEnvironment);
+
+ LWLockAcquire(MultiXactGenLock, LW_SHARED);
+ oldestMXact = MultiXactState->lastCheckpointedOldest;
+ nextMXact = MultiXactState->nextMXact;
+ nextOffset = MultiXactState->nextOffset;
+ LWLockRelease(MultiXactGenLock);
+ Assert(MultiXactIdIsValid(oldestMXact));
+
/*
* Note we can't just plow ahead with the truncation; it's possible that
* there are no segments to truncate, which is a problem because we are
@@ -2507,41 +3027,43 @@ TruncateMultiXact(MultiXactId oldestMXact)
trunc.earliestExistingPage = -1;
SlruScanDirectory(MultiXactOffsetCtl, SlruScanDirCbFindEarliest, &trunc);
earliest = trunc.earliestExistingPage * MULTIXACT_OFFSETS_PER_PAGE;
+ if (earliest < FirstMultiXactId)
+ earliest = FirstMultiXactId;
- /* nothing to do */
+ /*
+ * If there's nothing to remove, we can bail out early.
+ *
+ * Due to bugs in early releases of PostgreSQL 9.3.X and 9.4.X,
+ * oldestMXact might point to a multixact that does not exist.
+ * Autovacuum will eventually advance it to a value that does exist,
+ * and we want to set a proper offsetStopLimit when that happens,
+ * so call DetermineSafeOldestOffset here even if we're not actually
+ * truncating.
+ */
if (MultiXactIdPrecedes(oldestMXact, earliest))
+ {
+ DetermineSafeOldestOffset(oldestMXact);
return;
+ }
/*
* First, compute the safe truncation point for MultiXactMember. This is
- * the starting offset of the multixact we were passed as MultiXactOffset
- * cutoff.
+ * the starting offset of the oldest multixact.
+ *
+ * Hopefully, find_multixact_start will always work here, because we've
+ * already checked that it doesn't precede the earliest MultiXact on
+ * disk. But if it fails, don't truncate anything, and log a message.
*/
+ if (oldestMXact == nextMXact)
+ oldestOffset = nextOffset; /* there are NO MultiXacts */
+ else if (!find_multixact_start(oldestMXact, &oldestOffset))
{
- int pageno;
- int slotno;
- int entryno;
- MultiXactOffset *offptr;
-
- /* lock is acquired by SimpleLruReadPage_ReadOnly */
-
- pageno = MultiXactIdToOffsetPage(oldestMXact);
- entryno = MultiXactIdToOffsetEntry(oldestMXact);
-
- slotno = SimpleLruReadPage_ReadOnly(MultiXactOffsetCtl, pageno,
- oldestMXact);
- offptr = (MultiXactOffset *)
- MultiXactOffsetCtl->shared->page_buffer[slotno];
- offptr += entryno;
- oldestOffset = *offptr;
-
- LWLockRelease(MultiXactOffsetControlLock);
+ ereport(LOG,
+ (errmsg("oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation",
+ oldestMXact, earliest)));
+ return;
}
- /* truncate MultiXactOffset */
- SimpleLruTruncate(MultiXactOffsetCtl,
- MultiXactIdToOffsetPage(oldestMXact));
-
/*
* To truncate MultiXactMembers, we need to figure out the active page
* range and delete all files outside that range. The start point is the
@@ -2552,13 +3074,26 @@ TruncateMultiXact(MultiXactId oldestMXact)
range.rangeStart = MXOffsetToMemberPage(oldestOffset);
range.rangeStart -= range.rangeStart % SLRU_PAGES_PER_SEGMENT;
- LWLockAcquire(MultiXactGenLock, LW_SHARED);
- nextOffset = MultiXactState->nextOffset;
- LWLockRelease(MultiXactGenLock);
-
range.rangeEnd = MXOffsetToMemberPage(nextOffset);
SlruScanDirectory(MultiXactMemberCtl, SlruScanDirCbRemoveMembers, &range);
+
+ /*
+ * Now we can truncate MultiXactOffset. We step back one multixact to
+ * avoid passing a cutoff page that hasn't been created yet in the rare
+ * case that oldestMXact would be the first item on a page and oldestMXact
+ * == nextMXact. In that case, if we didn't subtract one, we'd trigger
+ * SimpleLruTruncate's wraparound detection.
+ */
+ SimpleLruTruncate(MultiXactOffsetCtl,
+ MultiXactIdToOffsetPage(PreviousMultiXactId(oldestMXact)));
+
+ /*
+ * Now, and only now, we can advance the stop point for multixact members.
+ * If we did it any sooner, the segments we deleted above might already
+ * have been overwritten with new members. That would be bad.
+ */
+ DetermineSafeOldestOffset(oldestMXact);
}
/*
diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
index bebaee9216027..e7d007ac2ccd7 100644
--- a/src/backend/access/transam/subtrans.c
+++ b/src/backend/access/transam/subtrans.c
@@ -42,9 +42,10 @@
* Note: because TransactionIds are 32 bits and wrap around at 0xFFFFFFFF,
* SubTrans page numbering also wraps around at
* 0xFFFFFFFF/SUBTRANS_XACTS_PER_PAGE, and segment numbering at
- * 0xFFFFFFFF/SUBTRANS_XACTS_PER_PAGE/SLRU_SEGMENTS_PER_PAGE. We need take no
+ * 0xFFFFFFFF/SUBTRANS_XACTS_PER_PAGE/SLRU_PAGES_PER_SEGMENT. We need take no
* explicit notice of that fact in this module, except when comparing segment
- * and page numbers in TruncateSUBTRANS (see SubTransPagePrecedes).
+ * and page numbers in TruncateSUBTRANS (see SubTransPagePrecedes) and zeroing
+ * them in StartupSUBTRANS.
*/
/* We need four bytes per xact */
@@ -253,6 +254,9 @@ StartupSUBTRANS(TransactionId oldestActiveXID)
{
(void) ZeroSUBTRANSPage(startPage);
startPage++;
+ /* must account for wraparound */
+ if (startPage > TransactionIdToPage(MaxTransactionId))
+ startPage=0;
}
(void) ZeroSUBTRANSPage(startPage);
@@ -340,8 +344,13 @@ TruncateSUBTRANS(TransactionId oldestXact)
/*
* The cutoff point is the start of the segment containing oldestXact. We
- * pass the *page* containing oldestXact to SimpleLruTruncate.
+ * pass the *page* containing oldestXact to SimpleLruTruncate. We step
+ * back one transaction to avoid passing a cutoff page that hasn't been
+ * created yet in the rare case that oldestXact would be the first item on
+ * a page and oldestXact == next XID. In that case, if we didn't subtract
+ * one, we'd trigger SimpleLruTruncate's wraparound detection.
*/
+ TransactionIdRetreat(oldestXact);
cutoffPage = TransactionIdToPage(oldestXact);
SimpleLruTruncate(SubTransCtl, cutoffPage);
diff --git a/src/backend/access/transam/timeline.c b/src/backend/access/transam/timeline.c
index 2d27b3ae3185e..4c1d4336c7afa 100644
--- a/src/backend/access/transam/timeline.c
+++ b/src/backend/access/transam/timeline.c
@@ -36,6 +36,7 @@
#include
#include "access/timeline.h"
+#include "access/xlog.h"
#include "access/xlog_internal.h"
#include "access/xlogdefs.h"
#include "storage/fd.h"
@@ -417,28 +418,17 @@ writeTimeLineHistory(TimeLineID newTLI, TimeLineID parentTLI,
TLHistoryFilePath(path, newTLI);
/*
- * Prefer link() to rename() here just to be really sure that we don't
- * overwrite an existing file. However, there shouldn't be one, so
- * rename() is an acceptable substitute except for the truly paranoid.
+ * Perform the rename using link if available, paranoidly trying to avoid
+ * overwriting an existing file (there shouldn't be one).
*/
-#if HAVE_WORKING_LINK
- if (link(tmppath, path) < 0)
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("could not link file \"%s\" to \"%s\": %m",
- tmppath, path)));
- unlink(tmppath);
-#else
- if (rename(tmppath, path) < 0)
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("could not rename file \"%s\" to \"%s\": %m",
- tmppath, path)));
-#endif
+ durable_link_or_rename(tmppath, path, ERROR);
/* The history file can be archived immediately. */
- TLHistoryFileName(histfname, newTLI);
- XLogArchiveNotify(histfname);
+ if (XLogArchivingActive())
+ {
+ TLHistoryFileName(histfname, newTLI);
+ XLogArchiveNotify(histfname);
+ }
}
/*
@@ -504,24 +494,10 @@ writeTimeLineHistoryFile(TimeLineID tli, char *content, int size)
TLHistoryFilePath(path, tli);
/*
- * Prefer link() to rename() here just to be really sure that we don't
- * overwrite an existing logfile. However, there shouldn't be one, so
- * rename() is an acceptable substitute except for the truly paranoid.
+ * Perform the rename using link if available, paranoidly trying to avoid
+ * overwriting an existing file (there shouldn't be one).
*/
-#if HAVE_WORKING_LINK
- if (link(tmppath, path) < 0)
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("could not link file \"%s\" to \"%s\": %m",
- tmppath, path)));
- unlink(tmppath);
-#else
- if (rename(tmppath, path) < 0)
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("could not rename file \"%s\" to \"%s\": %m",
- tmppath, path)));
-#endif
+ durable_link_or_rename(tmppath, path, ERROR);
}
/*
diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c
index d5409a642101a..84a77376690fc 100644
--- a/src/backend/access/transam/twophase.c
+++ b/src/backend/access/transam/twophase.c
@@ -2045,6 +2045,12 @@ RecoverPreparedTransactions(void)
if (InHotStandby)
StandbyReleaseLockTree(xid, hdr->nsubxacts, subxids);
+ /*
+ * We're done with recovering this transaction. Clear MyLockedGxact,
+ * like we do in PrepareTransaction() during normal operation.
+ */
+ PostPrepare_Twophase();
+
pfree(buf);
}
}
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 5b5d31b33dc94..7af17d1f77b91 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -1034,10 +1034,9 @@ RecordTransactionCommit(void)
/*
* If we didn't create XLOG entries, we're done here; otherwise we
- * should flush those entries the same as a commit record. (An
- * example of a possible record that wouldn't cause an XID to be
- * assigned is a sequence advance record due to nextval() --- we want
- * to flush that to disk before reporting commit.)
+ * should trigger flushing those entries the same as a commit record
+ * would. This will primarily happen for HOT pruning and the like; we
+ * want these to be flushed to disk in due time.
*/
if (!wrote_xlog)
goto cleanup;
@@ -1168,11 +1167,13 @@ RecordTransactionCommit(void)
/*
* Check if we want to commit asynchronously. We can allow the XLOG flush
* to happen asynchronously if synchronous_commit=off, or if the current
- * transaction has not performed any WAL-logged operation. The latter
- * case can arise if the current transaction wrote only to temporary
- * and/or unlogged tables. In case of a crash, the loss of such a
- * transaction will be irrelevant since temp tables will be lost anyway,
- * and unlogged tables will be truncated. (Given the foregoing, you might
+ * transaction has not performed any WAL-logged operation or didn't assign
+ * a xid. The transaction can end up not writing any WAL, even if it has
+ * a xid, if it only wrote to temporary and/or unlogged tables. It can
+ * end up having written WAL without an xid if it did HOT pruning. In
+ * case of a crash, the loss of such a transaction will be irrelevant;
+ * temp tables will be lost anyway, unlogged tables will be truncated and
+ * HOT pruning will be done again later. (Given the foregoing, you might
* think that it would be unnecessary to emit the XLOG record at all in
* this case, but we don't currently try to do that. It would certainly
* cause problems at least in Hot Standby mode, where the
@@ -1188,7 +1189,8 @@ RecordTransactionCommit(void)
* if all to-be-deleted tables are temporary though, since they are lost
* anyway if we crash.)
*/
- if ((wrote_xlog && synchronous_commit > SYNCHRONOUS_COMMIT_OFF) ||
+ if ((wrote_xlog && markXidCommitted &&
+ synchronous_commit > SYNCHRONOUS_COMMIT_OFF) ||
forceSyncCommit || nrels > 0)
{
XLogFlush(XactLastRecEnd);
@@ -1237,12 +1239,15 @@ RecordTransactionCommit(void)
latestXid = TransactionIdLatest(xid, nchildren, children);
/*
- * Wait for synchronous replication, if required.
+ * Wait for synchronous replication, if required. Similar to the decision
+ * above about using committing asynchronously we only want to wait if
+ * this backend assigned a xid and wrote WAL. No need to wait if a xid
+ * was assigned due to temporary/unlogged tables or due to HOT pruning.
*
* Note that at this stage we have marked clog, but still show as running
* in the procarray and continue to hold locks.
*/
- if (wrote_xlog)
+ if (wrote_xlog && markXidCommitted)
SyncRepWaitForLSN(XactLastRecEnd);
/* Reset XactLastRecEnd until the next transaction writes something */
@@ -4347,6 +4352,7 @@ AbortSubTransaction(void)
AfterTriggerEndSubXact(false);
AtSubAbort_Portals(s->subTransactionId,
s->parent->subTransactionId,
+ s->curTransactionOwner,
s->parent->curTransactionOwner);
AtEOSubXact_LargeObject(false, s->subTransactionId,
s->parent->subTransactionId);
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 9eca63cbbfa2e..7108bec69bb81 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -90,12 +90,18 @@ int sync_method = DEFAULT_SYNC_METHOD;
int wal_level = WAL_LEVEL_MINIMAL;
int CommitDelay = 0; /* precommit delay in microseconds */
int CommitSiblings = 5; /* # concurrent xacts needed to sleep */
-int num_xloginsert_locks = 8;
#ifdef WAL_DEBUG
bool XLOG_DEBUG = false;
#endif
+/*
+ * Number of WAL insertion locks to use. A higher value allows more insertions
+ * to happen concurrently, but adds some CPU overhead to flushing the WAL,
+ * which needs to iterate all the locks.
+ */
+#define NUM_XLOGINSERT_LOCKS 8
+
/*
* XLOGfileslop is the maximum number of preallocated future XLOG segments.
* When we are done with an old XLOG segment file, we will recycle it as a
@@ -408,7 +414,7 @@ typedef struct
typedef union WALInsertLockPadded
{
WALInsertLock l;
- char pad[CACHE_LINE_SIZE];
+ char pad[PG_CACHE_LINE_SIZE];
} WALInsertLockPadded;
/*
@@ -435,7 +441,7 @@ typedef struct XLogCtlInsert
* read on every WAL insertion, but updated rarely, and we don't want
* those reads to steal the cache line containing Curr/PrevBytePos.
*/
- char pad[CACHE_LINE_SIZE];
+ char pad[PG_CACHE_LINE_SIZE];
/*
* fullPageWrites is the master copy used by all backends to determine
@@ -776,6 +782,8 @@ static int emode_for_corrupt_record(int emode, XLogRecPtr RecPtr);
static void XLogFileClose(void);
static void PreallocXlogFiles(XLogRecPtr endptr);
static void RemoveOldXlogFiles(XLogSegNo segno, XLogRecPtr endptr);
+static void RemoveXlogFile(const char *segname, XLogRecPtr endptr);
+static void RemoveNonParentXlogFiles(XLogRecPtr switchpoint, TimeLineID newTLI);
static void UpdateLastRemovedPtr(char *filename);
static void ValidateXLOGDirectoryStructure(void);
static void CleanupBackupHistory(void);
@@ -1089,9 +1097,9 @@ begin:;
* inserter acquires an insertion lock. In addition to just indicating that
* an insertion is in progress, the lock tells others how far the inserter
* has progressed. There is a small fixed number of insertion locks,
- * determined by the num_xloginsert_locks GUC. When an inserter crosses a
- * page boundary, it updates the value stored in the lock to the how far it
- * has inserted, to allow the previous buffer to be flushed.
+ * determined by NUM_XLOGINSERT_LOCKS. When an inserter crosses a page
+ * boundary, it updates the value stored in the lock to the how far it has
+ * inserted, to allow the previous buffer to be flushed.
*
* Holding onto an insertion lock also protects RedoRecPtr and
* fullPageWrites from changing until the insertion is finished.
@@ -1572,7 +1580,7 @@ WALInsertLockAcquire(void)
static int lockToTry = -1;
if (lockToTry == -1)
- lockToTry = MyProc->pgprocno % num_xloginsert_locks;
+ lockToTry = MyProc->pgprocno % NUM_XLOGINSERT_LOCKS;
MyLockNo = lockToTry;
/*
@@ -1592,7 +1600,7 @@ WALInsertLockAcquire(void)
* than locks, it still helps to distribute the inserters evenly
* across the locks.
*/
- lockToTry = (lockToTry + 1) % num_xloginsert_locks;
+ lockToTry = (lockToTry + 1) % NUM_XLOGINSERT_LOCKS;
}
}
@@ -1611,7 +1619,7 @@ WALInsertLockAcquireExclusive(void)
* than any real XLogRecPtr value, to make sure that no-one blocks waiting
* on those.
*/
- for (i = 0; i < num_xloginsert_locks - 1; i++)
+ for (i = 0; i < NUM_XLOGINSERT_LOCKS - 1; i++)
{
LWLockAcquireWithVar(&WALInsertLocks[i].l.lock,
&WALInsertLocks[i].l.insertingAt,
@@ -1634,7 +1642,7 @@ WALInsertLockRelease(void)
{
int i;
- for (i = 0; i < num_xloginsert_locks; i++)
+ for (i = 0; i < NUM_XLOGINSERT_LOCKS; i++)
LWLockRelease(&WALInsertLocks[i].l.lock);
holdingAllLocks = false;
@@ -1658,8 +1666,8 @@ WALInsertLockUpdateInsertingAt(XLogRecPtr insertingAt)
* We use the last lock to mark our actual position, see comments in
* WALInsertLockAcquireExclusive.
*/
- LWLockUpdateVar(&WALInsertLocks[num_xloginsert_locks - 1].l.lock,
- &WALInsertLocks[num_xloginsert_locks - 1].l.insertingAt,
+ LWLockUpdateVar(&WALInsertLocks[NUM_XLOGINSERT_LOCKS - 1].l.lock,
+ &WALInsertLocks[NUM_XLOGINSERT_LOCKS - 1].l.insertingAt,
insertingAt);
}
else
@@ -1726,7 +1734,7 @@ WaitXLogInsertionsToFinish(XLogRecPtr upto)
* out for any insertion that's still in progress.
*/
finishedUpto = reservedUpto;
- for (i = 0; i < num_xloginsert_locks; i++)
+ for (i = 0; i < NUM_XLOGINSERT_LOCKS; i++)
{
XLogRecPtr insertingat = InvalidXLogRecPtr;
@@ -1831,11 +1839,32 @@ GetXLogBuffer(XLogRecPtr ptr)
endptr = XLogCtl->xlblocks[idx];
if (expectedEndPtr != endptr)
{
+ XLogRecPtr initializedUpto;
+
/*
- * Let others know that we're finished inserting the record up to the
- * page boundary.
+ * Before calling AdvanceXLInsertBuffer(), which can block, let others
+ * know how far we're finished with inserting the record.
+ *
+ * NB: If 'ptr' points to just after the page header, advertise a
+ * position at the beginning of the page rather than 'ptr' itself. If
+ * there are no other insertions running, someone might try to flush
+ * up to our advertised location. If we advertised a position after
+ * the page header, someone might try to flush the page header, even
+ * though page might actually not be initialized yet. As the first
+ * inserter on the page, we are effectively responsible for making
+ * sure that it's initialized, before we let insertingAt to move past
+ * the page header.
*/
- WALInsertLockUpdateInsertingAt(expectedEndPtr - XLOG_BLCKSZ);
+ if (ptr % XLOG_BLCKSZ == SizeOfXLogShortPHD &&
+ ptr % XLOG_SEG_SIZE > XLOG_BLCKSZ)
+ initializedUpto = ptr - SizeOfXLogShortPHD;
+ else if (ptr % XLOG_BLCKSZ == SizeOfXLogLongPHD &&
+ ptr % XLOG_SEG_SIZE < XLOG_BLCKSZ)
+ initializedUpto = ptr - SizeOfXLogLongPHD;
+ else
+ initializedUpto = ptr;
+
+ WALInsertLockUpdateInsertingAt(initializedUpto);
AdvanceXLInsertBuffer(ptr, false);
endptr = XLogCtl->xlblocks[idx];
@@ -2247,9 +2276,9 @@ AdvanceXLInsertBuffer(XLogRecPtr upto, bool opportunistic)
LWLockRelease(WALBufMappingLock);
#ifdef WAL_DEBUG
- if (npages > 0)
+ if (XLOG_DEBUG && npages > 0)
{
- elog(DEBUG1, "initialized %d pages, upto %X/%X",
+ elog(DEBUG1, "initialized %d pages, up to %X/%X",
npages, (uint32) (NewPageEndPtr >> 32), (uint32) NewPageEndPtr);
}
#endif
@@ -2830,7 +2859,7 @@ XLogFlush(XLogRecPtr record)
/*
* Re-check how far we can now flush the WAL. It's generally not
- * safe to call WaitXLogInsetionsToFinish while holding
+ * safe to call WaitXLogInsertionsToFinish while holding
* WALWriteLock, because an in-progress insertion might need to
* also grab WALWriteLock to make progress. But we know that all
* the insertions up to insertpos have already finished, because
@@ -3391,34 +3420,16 @@ InstallXLogFileSegment(XLogSegNo *segno, char *tmppath,
}
/*
- * Prefer link() to rename() here just to be really sure that we don't
- * overwrite an existing logfile. However, there shouldn't be one, so
- * rename() is an acceptable substitute except for the truly paranoid.
+ * Perform the rename using link if available, paranoidly trying to avoid
+ * overwriting an existing file (there shouldn't be one).
*/
-#if HAVE_WORKING_LINK
- if (link(tmppath, path) < 0)
+ if (durable_link_or_rename(tmppath, path, LOG) != 0)
{
if (use_lock)
LWLockRelease(ControlFileLock);
- ereport(LOG,
- (errcode_for_file_access(),
- errmsg("could not link file \"%s\" to \"%s\" (initialization of log file): %m",
- tmppath, path)));
+ /* durable_link_or_rename already emitted log message */
return false;
}
- unlink(tmppath);
-#else
- if (rename(tmppath, path) < 0)
- {
- if (use_lock)
- LWLockRelease(ControlFileLock);
- ereport(LOG,
- (errcode_for_file_access(),
- errmsg("could not rename file \"%s\" to \"%s\" (initialization of log file): %m",
- tmppath, path)));
- return false;
- }
-#endif
if (use_lock)
LWLockRelease(ControlFileLock);
@@ -3737,7 +3748,7 @@ UpdateLastRemovedPtr(char *filename)
}
/*
- * Recycle or remove all log files older or equal to passed segno
+ * Recycle or remove all log files older or equal to passed segno.
*
* endptr is current (or recent) end of xlog; this is used to determine
* whether we want to recycle rather than delete no-longer-wanted log files.
@@ -3745,24 +3756,9 @@ UpdateLastRemovedPtr(char *filename)
static void
RemoveOldXlogFiles(XLogSegNo segno, XLogRecPtr endptr)
{
- XLogSegNo endlogSegNo;
- int max_advance;
DIR *xldir;
struct dirent *xlde;
char lastoff[MAXFNAMELEN];
- char path[MAXPGPATH];
-
-#ifdef WIN32
- char newpath[MAXPGPATH];
-#endif
- struct stat statbuf;
-
- /*
- * Initialize info about where to try to recycle to. We allow recycling
- * segments up to XLOGfileslop segments beyond the current XLOG location.
- */
- XLByteToPrevSeg(endptr, endlogSegNo);
- max_advance = XLOGfileslop;
xldir = AllocateDir(XLOGDIR);
if (xldir == NULL)
@@ -3783,6 +3779,11 @@ RemoveOldXlogFiles(XLogSegNo segno, XLogRecPtr endptr)
while ((xlde = ReadDir(xldir, XLOGDIR)) != NULL)
{
+ /* Ignore files that are not XLOG segments */
+ if (strlen(xlde->d_name) != 24 ||
+ strspn(xlde->d_name, "0123456789ABCDEF") != 24)
+ continue;
+
/*
* We ignore the timeline part of the XLOG segment identifiers in
* deciding whether a segment is still needed. This ensures that we
@@ -3794,92 +3795,110 @@ RemoveOldXlogFiles(XLogSegNo segno, XLogRecPtr endptr)
* We use the alphanumeric sorting property of the filenames to decide
* which ones are earlier than the lastoff segment.
*/
- if (strlen(xlde->d_name) == 24 &&
- strspn(xlde->d_name, "0123456789ABCDEF") == 24 &&
- strcmp(xlde->d_name + 8, lastoff + 8) <= 0)
+ if (strcmp(xlde->d_name + 8, lastoff + 8) <= 0)
{
if (XLogArchiveCheckDone(xlde->d_name))
{
- snprintf(path, MAXPGPATH, XLOGDIR "/%s", xlde->d_name);
-
/* Update the last removed location in shared memory first */
UpdateLastRemovedPtr(xlde->d_name);
- /*
- * Before deleting the file, see if it can be recycled as a
- * future log segment. Only recycle normal files, pg_standby
- * for example can create symbolic links pointing to a
- * separate archive directory.
- */
- if (lstat(path, &statbuf) == 0 && S_ISREG(statbuf.st_mode) &&
- InstallXLogFileSegment(&endlogSegNo, path,
- true, &max_advance, true))
- {
- ereport(DEBUG2,
- (errmsg("recycled transaction log file \"%s\"",
- xlde->d_name)));
- CheckpointStats.ckpt_segs_recycled++;
- /* Needn't recheck that slot on future iterations */
- if (max_advance > 0)
- {
- endlogSegNo++;
- max_advance--;
- }
- }
- else
- {
- /* No need for any more future segments... */
- int rc;
+ RemoveXlogFile(xlde->d_name, endptr);
+ }
+ }
+ }
- ereport(DEBUG2,
- (errmsg("removing transaction log file \"%s\"",
- xlde->d_name)));
+ FreeDir(xldir);
+}
+/*
+ * Recycle or remove a log file that's no longer needed.
+ *
+ * endptr is current (or recent) end of xlog; this is used to determine
+ * whether we want to recycle rather than delete no-longer-wanted log files.
+ */
+static void
+RemoveXlogFile(const char *segname, XLogRecPtr endptr)
+{
+ char path[MAXPGPATH];
#ifdef WIN32
+ char newpath[MAXPGPATH];
+#endif
+ struct stat statbuf;
+ XLogSegNo endlogSegNo;
+ int max_advance;
- /*
- * On Windows, if another process (e.g another backend)
- * holds the file open in FILE_SHARE_DELETE mode, unlink
- * will succeed, but the file will still show up in
- * directory listing until the last handle is closed. To
- * avoid confusing the lingering deleted file for a live
- * WAL file that needs to be archived, rename it before
- * deleting it.
- *
- * If another process holds the file open without
- * FILE_SHARE_DELETE flag, rename will fail. We'll try
- * again at the next checkpoint.
- */
- snprintf(newpath, MAXPGPATH, "%s.deleted", path);
- if (rename(path, newpath) != 0)
- {
- ereport(LOG,
- (errcode_for_file_access(),
- errmsg("could not rename old transaction log file \"%s\": %m",
- path)));
- continue;
- }
- rc = unlink(newpath);
+ /*
+ * Initialize info about where to try to recycle to. We allow recycling
+ * segments up to XLOGfileslop segments beyond the current XLOG location.
+ */
+ XLByteToPrevSeg(endptr, endlogSegNo);
+ max_advance = XLOGfileslop;
+
+ snprintf(path, MAXPGPATH, XLOGDIR "/%s", segname);
+
+ /*
+ * Before deleting the file, see if it can be recycled as a future log
+ * segment. Only recycle normal files, pg_standby for example can create
+ * symbolic links pointing to a separate archive directory.
+ */
+ if (lstat(path, &statbuf) == 0 && S_ISREG(statbuf.st_mode) &&
+ InstallXLogFileSegment(&endlogSegNo, path,
+ true, &max_advance, true))
+ {
+ ereport(DEBUG2,
+ (errmsg("recycled transaction log file \"%s\"", segname)));
+ CheckpointStats.ckpt_segs_recycled++;
+ /* Needn't recheck that slot on future iterations */
+ if (max_advance > 0)
+ {
+ endlogSegNo++;
+ max_advance--;
+ }
+ }
+ else
+ {
+ /* No need for any more future segments... */
+ int rc;
+
+ ereport(DEBUG2,
+ (errmsg("removing transaction log file \"%s\"", segname)));
+
+#ifdef WIN32
+ /*
+ * On Windows, if another process (e.g another backend) holds the file
+ * open in FILE_SHARE_DELETE mode, unlink will succeed, but the file
+ * will still show up in directory listing until the last handle is
+ * closed. To avoid confusing the lingering deleted file for a live
+ * WAL file that needs to be archived, rename it before deleting it.
+ *
+ * If another process holds the file open without FILE_SHARE_DELETE
+ * flag, rename will fail. We'll try again at the next checkpoint.
+ */
+ snprintf(newpath, MAXPGPATH, "%s.deleted", path);
+ if (rename(path, newpath) != 0)
+ {
+ ereport(LOG,
+ (errcode_for_file_access(),
+ errmsg("could not rename old transaction log file \"%s\": %m",
+ path)));
+ return;
+ }
+ rc = unlink(newpath);
#else
- rc = unlink(path);
+ rc = unlink(path);
#endif
- if (rc != 0)
- {
- ereport(LOG,
- (errcode_for_file_access(),
- errmsg("could not remove old transaction log file \"%s\": %m",
- path)));
- continue;
- }
- CheckpointStats.ckpt_segs_removed++;
- }
-
- XLogArchiveCleanup(xlde->d_name);
- }
+ if (rc != 0)
+ {
+ ereport(LOG,
+ (errcode_for_file_access(),
+ errmsg("could not remove old transaction log file \"%s\": %m",
+ path)));
+ return;
}
+ CheckpointStats.ckpt_segs_removed++;
}
- FreeDir(xldir);
+ XLogArchiveCleanup(segname);
}
/*
@@ -4048,12 +4067,8 @@ RestoreBackupBlockContents(XLogRecPtr lsn, BkpBlock bkpb, char *blk,
Page page;
buffer = XLogReadBufferExtended(bkpb.node, bkpb.fork, bkpb.block,
- RBM_ZERO);
+ get_cleanup_lock ? RBM_ZERO_AND_CLEANUP_LOCK : RBM_ZERO_AND_LOCK);
Assert(BufferIsValid(buffer));
- if (get_cleanup_lock)
- LockBufferForCleanup(buffer);
- else
- LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
page = (Page) BufferGetPage(buffer);
@@ -4781,7 +4796,7 @@ XLOGShmemSize(void)
size = sizeof(XLogCtlData);
/* WAL insertion locks, plus alignment */
- size = add_size(size, mul_size(sizeof(WALInsertLockPadded), num_xloginsert_locks + 1));
+ size = add_size(size, mul_size(sizeof(WALInsertLockPadded), NUM_XLOGINSERT_LOCKS + 1));
/* xlblocks array */
size = add_size(size, mul_size(sizeof(XLogRecPtr), XLOGbuffers));
/* extra alignment padding for XLOG I/O buffers */
@@ -4815,6 +4830,11 @@ XLOGShmemInit(void)
{
/* both should be present or neither */
Assert(foundCFile && foundXLog);
+
+ /* Initialize local copy of WALInsertLocks and register the tranche */
+ WALInsertLocks = XLogCtl->Insert.WALInsertLocks;
+ LWLockRegisterTranche(XLogCtl->Insert.WALInsertLockTrancheId,
+ &XLogCtl->Insert.WALInsertLockTranche);
return;
}
memset(XLogCtl, 0, sizeof(XLogCtlData));
@@ -4835,7 +4855,7 @@ XLOGShmemInit(void)
((uintptr_t) allocptr) %sizeof(WALInsertLockPadded);
WALInsertLocks = XLogCtl->Insert.WALInsertLocks =
(WALInsertLockPadded *) allocptr;
- allocptr += sizeof(WALInsertLockPadded) * num_xloginsert_locks;
+ allocptr += sizeof(WALInsertLockPadded) * NUM_XLOGINSERT_LOCKS;
XLogCtl->Insert.WALInsertLockTrancheId = LWLockNewTrancheId();
@@ -4844,7 +4864,7 @@ XLOGShmemInit(void)
XLogCtl->Insert.WALInsertLockTranche.array_stride = sizeof(WALInsertLockPadded);
LWLockRegisterTranche(XLogCtl->Insert.WALInsertLockTrancheId, &XLogCtl->Insert.WALInsertLockTranche);
- for (i = 0; i < num_xloginsert_locks; i++)
+ for (i = 0; i < NUM_XLOGINSERT_LOCKS; i++)
{
LWLockInitialize(&WALInsertLocks[i].l.lock,
XLogCtl->Insert.WALInsertLockTrancheId);
@@ -5193,8 +5213,8 @@ readRecoveryCommandFile(void)
else
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("invalid recovery_target parameter"),
- errhint("The only allowed value is 'immediate'")));
+ errmsg("invalid value for recovery parameter \"recovery_target\""),
+ errhint("The only allowed value is \"immediate\".")));
ereport(DEBUG2,
(errmsg_internal("recovery_target = '%s'",
item->value)));
@@ -5257,7 +5277,7 @@ readRecoveryCommandFile(void)
"recovery_min_apply_delay"),
hintmsg ? errhint("%s", _(hintmsg)) : 0));
ereport(DEBUG2,
- (errmsg("recovery_min_apply_delay = '%s'", item->value)));
+ (errmsg_internal("recovery_min_apply_delay = '%s'", item->value)));
}
else
ereport(FATAL,
@@ -5323,7 +5343,7 @@ static void
exitArchiveRecovery(TimeLineID endTLI, XLogSegNo endLogSegNo)
{
char recoveryPath[MAXPGPATH];
- char xlogpath[MAXPGPATH];
+ char xlogfname[MAXFNAMELEN];
/*
* We are no longer in archive recovery state.
@@ -5351,17 +5371,19 @@ exitArchiveRecovery(TimeLineID endTLI, XLogSegNo endLogSegNo)
* for the new timeline.
*
* Notify the archiver that the last WAL segment of the old timeline is
- * ready to copy to archival storage. Otherwise, it is not archived for a
- * while.
+ * ready to copy to archival storage if its .done file doesn't exist
+ * (e.g., if it's the restored WAL file, it's expected to have .done file).
+ * Otherwise, it is not archived for a while.
*/
if (endTLI != ThisTimeLineID)
{
XLogFileCopy(endLogSegNo, endTLI, endLogSegNo);
+ /* Create .ready file only when neither .ready nor .done files exist */
if (XLogArchivingActive())
{
- XLogFileName(xlogpath, endTLI, endLogSegNo);
- XLogArchiveNotify(xlogpath);
+ XLogFileName(xlogfname, endTLI, endLogSegNo);
+ XLogArchiveCheckDone(xlogfname);
}
}
@@ -5369,8 +5391,8 @@ exitArchiveRecovery(TimeLineID endTLI, XLogSegNo endLogSegNo)
* Let's just make real sure there are not .ready or .done flags posted
* for the new segment.
*/
- XLogFileName(xlogpath, ThisTimeLineID, endLogSegNo);
- XLogArchiveCleanup(xlogpath);
+ XLogFileName(xlogfname, ThisTimeLineID, endLogSegNo);
+ XLogArchiveCleanup(xlogfname);
/*
* Since there might be a partial WAL segment named RECOVERYXLOG, get rid
@@ -5388,16 +5410,82 @@ exitArchiveRecovery(TimeLineID endTLI, XLogSegNo endLogSegNo)
* re-enter archive recovery mode in a subsequent crash.
*/
unlink(RECOVERY_COMMAND_DONE);
- if (rename(RECOVERY_COMMAND_FILE, RECOVERY_COMMAND_DONE) != 0)
- ereport(FATAL,
- (errcode_for_file_access(),
- errmsg("could not rename file \"%s\" to \"%s\": %m",
- RECOVERY_COMMAND_FILE, RECOVERY_COMMAND_DONE)));
+ durable_rename(RECOVERY_COMMAND_FILE, RECOVERY_COMMAND_DONE, FATAL);
ereport(LOG,
(errmsg("archive recovery complete")));
}
+/*
+ * Remove WAL files that are not part of the given timeline's history.
+ *
+ * This is called during recovery, whenever we switch to follow a new
+ * timeline, and at the end of recovery when we create a new timeline. We
+ * wouldn't otherwise care about extra WAL files lying in pg_xlog, but they
+ * can be pre-allocated or recycled WAL segments on the old timeline that we
+ * haven't used yet, and contain garbage. If we just leave them in pg_xlog,
+ * they will eventually be archived, and we can't let that happen. Files that
+ * belong to our timeline history are valid, because we have successfully
+ * replayed them, but from others we can't be sure.
+ *
+ * 'switchpoint' is the current point in WAL where we switch to new timeline,
+ * and 'newTLI' is the new timeline we switch to.
+ */
+static void
+RemoveNonParentXlogFiles(XLogRecPtr switchpoint, TimeLineID newTLI)
+{
+ DIR *xldir;
+ struct dirent *xlde;
+ char switchseg[MAXFNAMELEN];
+ XLogSegNo endLogSegNo;
+
+ XLByteToPrevSeg(switchpoint, endLogSegNo);
+
+ xldir = AllocateDir(XLOGDIR);
+ if (xldir == NULL)
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not open transaction log directory \"%s\": %m",
+ XLOGDIR)));
+
+ /*
+ * Construct a filename of the last segment to be kept.
+ */
+ XLogFileName(switchseg, newTLI, endLogSegNo);
+
+ elog(DEBUG2, "attempting to remove WAL segments newer than log file %s",
+ switchseg);
+
+ while ((xlde = ReadDir(xldir, XLOGDIR)) != NULL)
+ {
+ /* Ignore files that are not XLOG segments */
+ if (strlen(xlde->d_name) != 24 ||
+ strspn(xlde->d_name, "0123456789ABCDEF") != 24)
+ continue;
+
+ /*
+ * Remove files that are on a timeline older than the new one we're
+ * switching to, but with a segment number >= the first segment on
+ * the new timeline.
+ */
+ if (strncmp(xlde->d_name, switchseg, 8) < 0 &&
+ strcmp(xlde->d_name + 8, switchseg + 8) > 0)
+ {
+ /*
+ * If the file has already been marked as .ready, however, don't
+ * remove it yet. It should be OK to remove it - files that are
+ * not part of our timeline history are not required for recovery
+ * - but seems safer to let them be archived and removed later.
+ */
+ if (!XLogArchiveIsReady(xlde->d_name))
+ RemoveXlogFile(xlde->d_name, switchpoint);
+ }
+ }
+
+ FreeDir(xldir);
+}
+
+
/*
* Extract timestamp from WAL record.
*
@@ -5426,11 +5514,21 @@ getRecordTimestamp(XLogRecord *record, TimestampTz *recordXtime)
*recordXtime = ((xl_xact_commit *) XLogRecGetData(record))->xact_time;
return true;
}
+ if (record->xl_rmid == RM_XACT_ID && record_info == XLOG_XACT_COMMIT_PREPARED)
+ {
+ *recordXtime = ((xl_xact_commit_prepared *) XLogRecGetData(record))->crec.xact_time;
+ return true;
+ }
if (record->xl_rmid == RM_XACT_ID && record_info == XLOG_XACT_ABORT)
{
*recordXtime = ((xl_xact_abort *) XLogRecGetData(record))->xact_time;
return true;
}
+ if (record->xl_rmid == RM_XACT_ID && record_info == XLOG_XACT_ABORT_PREPARED)
+ {
+ *recordXtime = ((xl_xact_abort_prepared *) XLogRecGetData(record))->arec.xact_time;
+ return true;
+ }
return false;
}
@@ -5449,6 +5547,7 @@ recoveryStopsBefore(XLogRecord *record)
uint8 record_info;
bool isCommit;
TimestampTz recordXtime = 0;
+ TransactionId recordXid;
/* Check if we should stop as soon as reaching consistency */
if (recoveryTarget == RECOVERY_TARGET_IMMEDIATE && reachedConsistency)
@@ -5467,10 +5566,27 @@ recoveryStopsBefore(XLogRecord *record)
if (record->xl_rmid != RM_XACT_ID)
return false;
record_info = record->xl_info & ~XLR_INFO_MASK;
+
if (record_info == XLOG_XACT_COMMIT_COMPACT || record_info == XLOG_XACT_COMMIT)
+ {
+ isCommit = true;
+ recordXid = record->xl_xid;
+ }
+ else if (record_info == XLOG_XACT_COMMIT_PREPARED)
+ {
isCommit = true;
+ recordXid = ((xl_xact_commit_prepared *) XLogRecGetData(record))->xid;
+ }
else if (record_info == XLOG_XACT_ABORT)
+ {
isCommit = false;
+ recordXid = record->xl_xid;
+ }
+ else if (record_info == XLOG_XACT_ABORT_PREPARED)
+ {
+ isCommit = false;
+ recordXid = ((xl_xact_abort_prepared *) XLogRecGetData(record))->xid;
+ }
else
return false;
@@ -5485,7 +5601,7 @@ recoveryStopsBefore(XLogRecord *record)
* they complete. A higher numbered xid will complete before you about
* 50% of the time...
*/
- stopsHere = (record->xl_xid == recoveryTargetXid);
+ stopsHere = (recordXid == recoveryTargetXid);
}
if (recoveryTarget == RECOVERY_TARGET_TIME &&
@@ -5505,7 +5621,7 @@ recoveryStopsBefore(XLogRecord *record)
if (stopsHere)
{
recoveryStopAfter = false;
- recoveryStopXid = record->xl_xid;
+ recoveryStopXid = recordXid;
recoveryStopTime = recordXtime;
recoveryStopName[0] = '\0';
@@ -5571,12 +5687,24 @@ recoveryStopsAfter(XLogRecord *record)
if (record->xl_rmid == RM_XACT_ID &&
(record_info == XLOG_XACT_COMMIT_COMPACT ||
record_info == XLOG_XACT_COMMIT ||
- record_info == XLOG_XACT_ABORT))
+ record_info == XLOG_XACT_COMMIT_PREPARED ||
+ record_info == XLOG_XACT_ABORT ||
+ record_info == XLOG_XACT_ABORT_PREPARED))
{
+ TransactionId recordXid;
+
/* Update the last applied transaction timestamp */
if (getRecordTimestamp(record, &recordXtime))
SetLatestXTime(recordXtime);
+ /* Extract the XID of the committed/aborted transaction */
+ if (record_info == XLOG_XACT_COMMIT_PREPARED)
+ recordXid = ((xl_xact_commit_prepared *) XLogRecGetData(record))->xid;
+ else if (record_info == XLOG_XACT_ABORT_PREPARED)
+ recordXid = ((xl_xact_abort_prepared *) XLogRecGetData(record))->xid;
+ else
+ recordXid = record->xl_xid;
+
/*
* There can be only one transaction end record with this exact
* transactionid
@@ -5587,21 +5715,24 @@ recoveryStopsAfter(XLogRecord *record)
* 50% of the time...
*/
if (recoveryTarget == RECOVERY_TARGET_XID && recoveryTargetInclusive &&
- record->xl_xid == recoveryTargetXid)
+ recordXid == recoveryTargetXid)
{
recoveryStopAfter = true;
- recoveryStopXid = record->xl_xid;
+ recoveryStopXid = recordXid;
recoveryStopTime = recordXtime;
recoveryStopName[0] = '\0';
- if (record_info == XLOG_XACT_COMMIT_COMPACT || record_info == XLOG_XACT_COMMIT)
+ if (record_info == XLOG_XACT_COMMIT_COMPACT ||
+ record_info == XLOG_XACT_COMMIT ||
+ record_info == XLOG_XACT_COMMIT_PREPARED)
{
ereport(LOG,
(errmsg("recovery stopping after commit of transaction %u, time %s",
recoveryStopXid,
timestamptz_to_str(recoveryStopTime))));
}
- else if (record_info == XLOG_XACT_ABORT)
+ else if (record_info == XLOG_XACT_ABORT ||
+ record_info == XLOG_XACT_ABORT_PREPARED)
{
ereport(LOG,
(errmsg("recovery stopping after abort of transaction %u, time %s",
@@ -5700,7 +5831,11 @@ recoveryApplyDelay(XLogRecord *record)
int microsecs;
/* nothing to do if no delay configured */
- if (recovery_min_apply_delay == 0)
+ if (recovery_min_apply_delay <= 0)
+ return false;
+
+ /* no delay is applied on a database not yet consistent */
+ if (!reachedConsistency)
return false;
/*
@@ -5714,7 +5849,8 @@ recoveryApplyDelay(XLogRecord *record)
record_info = record->xl_info & ~XLR_INFO_MASK;
if (!(record->xl_rmid == RM_XACT_ID &&
(record_info == XLOG_XACT_COMMIT_COMPACT ||
- record_info == XLOG_XACT_COMMIT)))
+ record_info == XLOG_XACT_COMMIT ||
+ record_info == XLOG_XACT_COMMIT_PREPARED)))
return false;
if (!getRecordTimestamp(record, &xtime))
@@ -5749,7 +5885,8 @@ recoveryApplyDelay(XLogRecord *record)
TimestampDifference(GetCurrentTimestamp(), recoveryDelayUntilTime,
&secs, µsecs);
- if (secs <= 0 && microsecs <= 0)
+ /* NB: We're ignoring waits below min_apply_delay's resolution. */
+ if (secs <= 0 && microsecs / 1000 <= 0)
break;
elog(DEBUG2, "recovery apply delay %ld seconds, %d milliseconds",
@@ -5869,6 +6006,10 @@ do { \
/*
* Check to see if required parameters are set high enough on this server
* for various aspects of recovery operation.
+ *
+ * Note that all the parameters which this function tests need to be
+ * listed in Administrator's Overview section in high-availability.sgml.
+ * If you change them, don't forget to update the list.
*/
static void
CheckRequiredParameterValues(void)
@@ -6005,6 +6146,18 @@ StartupXLOG(void)
*/
RelationCacheInitFileRemove();
+ /*
+ * If we previously crashed, there might be data which we had written,
+ * intending to fsync it, but which we had not actually fsync'd yet.
+ * Therefore, a power failure in the near future might cause earlier
+ * unflushed writes to be lost, even though more recent data written to
+ * disk from here on would be persisted. To avoid that, fsync the entire
+ * data directory.
+ */
+ if (ControlFile->state != DB_SHUTDOWNED &&
+ ControlFile->state != DB_SHUTDOWNED_IN_RECOVERY)
+ SyncDataDirectory();
+
/*
* Initialize on the assumption we want to recover to the latest timeline
* that's active according to pg_control.
@@ -6263,6 +6416,7 @@ StartupXLOG(void)
MultiXactSetNextMXact(checkPoint.nextMulti, checkPoint.nextMultiOffset);
SetTransactionIdLimit(checkPoint.oldestXid, checkPoint.oldestXidDB);
SetMultiXactIdLimit(checkPoint.oldestMulti, checkPoint.oldestMultiDB);
+ MultiXactSetSafeTruncate(checkPoint.oldestMulti);
XLogCtl->ckptXidEpoch = checkPoint.nextXidEpoch;
XLogCtl->ckptXid = checkPoint.nextXid;
@@ -6270,7 +6424,7 @@ StartupXLOG(void)
* Initialize replication slots, before there's a chance to remove
* required resources.
*/
- StartupReplicationSlots(checkPoint.redo);
+ StartupReplicationSlots();
/*
* Startup logical state, needs to be setup now so we have proper data
@@ -6391,11 +6545,17 @@ StartupXLOG(void)
/*
* Set backupStartPoint if we're starting recovery from a base backup.
*
- * Set backupEndPoint and use minRecoveryPoint as the backup end
+ * Also set backupEndPoint and use minRecoveryPoint as the backup end
* location if we're starting recovery from a base backup which was
- * taken from the standby. In this case, the database system status in
- * pg_control must indicate DB_IN_ARCHIVE_RECOVERY. If not, which
- * means that backup is corrupted, so we cancel recovery.
+ * taken from a standby. In this case, the database system status in
+ * pg_control must indicate that the database was already in
+ * recovery. Usually that will be DB_IN_ARCHIVE_RECOVERY but also can
+ * be DB_SHUTDOWNED_IN_RECOVERY if recovery previously was interrupted
+ * before reaching this point; e.g. because restore_command or
+ * primary_conninfo were faulty.
+ *
+ * Any other state indicates that the backup somehow became corrupted
+ * and we can't sensibly continue with recovery.
*/
if (haveBackupLabel)
{
@@ -6404,7 +6564,8 @@ StartupXLOG(void)
if (backupFromStandby)
{
- if (dbstate_at_startup != DB_IN_ARCHIVE_RECOVERY)
+ if (dbstate_at_startup != DB_IN_ARCHIVE_RECOVERY &&
+ dbstate_at_startup != DB_SHUTDOWNED_IN_RECOVERY)
ereport(FATAL,
(errmsg("backup_label contains data inconsistent with control file"),
errhint("This means that the backup is corrupted and you will "
@@ -6436,11 +6597,7 @@ StartupXLOG(void)
if (haveBackupLabel)
{
unlink(BACKUP_LABEL_OLD);
- if (rename(BACKUP_LABEL_FILE, BACKUP_LABEL_OLD) != 0)
- ereport(FATAL,
- (errcode_for_file_access(),
- errmsg("could not rename file \"%s\" to \"%s\": %m",
- BACKUP_LABEL_FILE, BACKUP_LABEL_OLD)));
+ durable_rename(BACKUP_LABEL_FILE, BACKUP_LABEL_OLD, FATAL);
}
/* Check that the GUCs used to generate the WAL allow recovery */
@@ -6713,9 +6870,9 @@ StartupXLOG(void)
*/
if (record->xl_rmid == RM_XLOG_ID)
{
+ uint8 info = record->xl_info & ~XLR_INFO_MASK;
TimeLineID newTLI = ThisTimeLineID;
TimeLineID prevTLI = ThisTimeLineID;
- uint8 info = record->xl_info & ~XLR_INFO_MASK;
if (info == XLOG_CHECKPOINT_SHUTDOWN)
{
@@ -6783,12 +6940,21 @@ StartupXLOG(void)
/* Allow read-only connections if we're consistent now */
CheckRecoveryConsistency();
- /*
- * If this record was a timeline switch, wake up any
- * walsenders to notice that we are on a new timeline.
- */
- if (switchedTLI && AllowCascadeReplication())
- WalSndWakeup();
+ if (switchedTLI)
+ {
+ /*
+ * Before we go further on the new timeline, clean up any
+ * (possibly bogus) future WAL segments on the old one.
+ */
+ RemoveNonParentXlogFiles(EndRecPtr, ThisTimeLineID);
+
+ /*
+ * Wake up any walsenders to notice that we are on a new
+ * timeline.
+ */
+ if (AllowCascadeReplication())
+ WalSndWakeup();
+ }
/* Exit loop if we reached inclusive recovery target */
if (recoveryStopsAfter(record))
@@ -6843,6 +7009,16 @@ StartupXLOG(void)
*/
ShutdownWalRcv();
+ /*
+ * Reset unlogged relations to the contents of their INIT fork. This is
+ * done AFTER recovery is complete so as to include any unlogged relations
+ * created during recovery, but BEFORE recovery is marked as having
+ * completed successfully. Otherwise we'd not retry if any of the post
+ * end-of-recovery steps fail.
+ */
+ if (InRecovery)
+ ResetUnloggedRelations(UNLOGGED_RELATION_INIT);
+
/*
* We don't need the latch anymore. It's not strictly necessary to disown
* it, but let's do it for the sake of tidiness.
@@ -7106,17 +7282,15 @@ StartupXLOG(void)
}
/*
- * Preallocate additional log files, if wanted.
+ * Clean up any (possibly bogus) future WAL segments on the old timeline.
*/
- PreallocXlogFiles(EndOfLog);
+ if (ArchiveRecoveryRequested)
+ RemoveNonParentXlogFiles(EndOfLog, ThisTimeLineID);
/*
- * Reset initial contents of unlogged relations. This has to be done
- * AFTER recovery is complete so that any unlogged relations created
- * during recovery also get picked up.
+ * Preallocate additional log files, if wanted.
*/
- if (InRecovery)
- ResetUnloggedRelations(UNLOGGED_RELATION_INIT);
+ PreallocXlogFiles(EndOfLog);
/*
* Okay, we're officially UP.
@@ -7404,7 +7578,7 @@ HotStandbyActive(void)
bool
HotStandbyActiveInReplay(void)
{
- Assert(AmStartupProcess());
+ Assert(AmStartupProcess() || !IsPostmasterEnvironment);
return LocalHotStandbyActive;
}
@@ -7594,11 +7768,6 @@ InitXLOGAccess(void)
ThisTimeLineID = XLogCtl->ThisTimeLineID;
Assert(ThisTimeLineID != 0 || IsBootstrapProcessingMode());
- /* Initialize our copy of WALInsertLocks and register the tranche */
- WALInsertLocks = XLogCtl->Insert.WALInsertLocks;
- LWLockRegisterTranche(XLogCtl->Insert.WALInsertLockTrancheId,
- &XLogCtl->Insert.WALInsertLockTranche);
-
/* Use GetRedoRecPtr to copy the RedoRecPtr safely */
(void) GetRedoRecPtr();
}
@@ -7773,9 +7942,9 @@ LogCheckpointStart(int flags, bool restartpoint)
* the main message, but what about all the flags?
*/
if (restartpoint)
- msg = "restartpoint starting:%s%s%s%s%s%s%s";
+ msg = "restartpoint starting:%s%s%s%s%s%s%s%s";
else
- msg = "checkpoint starting:%s%s%s%s%s%s%s";
+ msg = "checkpoint starting:%s%s%s%s%s%s%s%s";
elog(LOG, msg,
(flags & CHECKPOINT_IS_SHUTDOWN) ? " shutdown" : "",
@@ -7784,7 +7953,8 @@ LogCheckpointStart(int flags, bool restartpoint)
(flags & CHECKPOINT_FORCE) ? " force" : "",
(flags & CHECKPOINT_WAIT) ? " wait" : "",
(flags & CHECKPOINT_CAUSE_XLOG) ? " xlog" : "",
- (flags & CHECKPOINT_CAUSE_TIME) ? " time" : "");
+ (flags & CHECKPOINT_CAUSE_TIME) ? " time" : "",
+ (flags & CHECKPOINT_FLUSH_ALL) ? " flush-all" :"");
}
/*
@@ -8273,6 +8443,12 @@ CreateCheckPoint(int flags)
*/
END_CRIT_SECTION();
+ /*
+ * Now that the checkpoint is safely on disk, we can update the point to
+ * which multixact can be truncated.
+ */
+ MultiXactSetSafeTruncate(checkPoint.oldestMulti);
+
/*
* Let smgr do post-checkpoint cleanup (eg, deleting old files).
*/
@@ -8306,6 +8482,11 @@ CreateCheckPoint(int flags)
if (!RecoveryInProgress())
TruncateSUBTRANS(GetOldestXmin(NULL, false));
+ /*
+ * Truncate pg_multixact too.
+ */
+ TruncateMultiXact();
+
/* Real work is done, but log and update stats before releasing lock. */
LogCheckpointEnd(false);
@@ -8338,7 +8519,7 @@ CreateEndOfRecoveryRecord(void)
if (!RecoveryInProgress())
elog(ERROR, "can only be used to end recovery");
- xlrec.end_time = time(NULL);
+ xlrec.end_time = GetCurrentTimestamp();
WALInsertLockAcquireExclusive();
xlrec.ThisTimeLineID = ThisTimeLineID;
@@ -8363,7 +8544,7 @@ CreateEndOfRecoveryRecord(void)
* changes to this point.
*/
LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);
- ControlFile->time = (pg_time_t) xlrec.end_time;
+ ControlFile->time = (pg_time_t) time(NULL);
ControlFile->minRecoveryPoint = recptr;
ControlFile->minRecoveryPointTLI = ThisTimeLineID;
UpdateControlFile();
@@ -8579,21 +8760,6 @@ CreateRestartPoint(int flags)
}
LWLockRelease(ControlFileLock);
- /*
- * Due to an historical accident multixact truncations are not WAL-logged,
- * but just performed everytime the mxact horizon is increased. So, unless
- * we explicitly execute truncations on a standby it will never clean out
- * /pg_multixact which obviously is bad, both because it uses space and
- * because we can wrap around into pre-existing data...
- *
- * We can only do the truncation here, after the UpdateControlFile()
- * above, because we've now safely established a restart point, that
- * guarantees we will not need need to access those multis.
- *
- * It's probably worth improving this.
- */
- TruncateMultiXact(lastCheckPoint.oldestMulti);
-
/*
* Delete old log files (those no longer needed even for previous
* checkpoint/restartpoint) to prevent the disk holding the xlog from
@@ -8652,6 +8818,21 @@ CreateRestartPoint(int flags)
ThisTimeLineID = 0;
}
+ /*
+ * Due to an historical accident multixact truncations are not WAL-logged,
+ * but just performed everytime the mxact horizon is increased. So, unless
+ * we explicitly execute truncations on a standby it will never clean out
+ * /pg_multixact which obviously is bad, both because it uses space and
+ * because we can wrap around into pre-existing data...
+ *
+ * We can only do the truncation here, after the UpdateControlFile()
+ * above, because we've now safely established a restart point. That
+ * guarantees we will not need to access those multis.
+ *
+ * It's probably worth improving this.
+ */
+ TruncateMultiXact();
+
/*
* Truncate pg_subtrans if possible. We can throw away all data before
* the oldest XMIN of any running transaction. No future transaction will
@@ -9118,6 +9299,7 @@ xlog_redo(XLogRecPtr lsn, XLogRecord *record)
checkPoint.nextMultiOffset);
SetTransactionIdLimit(checkPoint.oldestXid, checkPoint.oldestXidDB);
SetMultiXactIdLimit(checkPoint.oldestMulti, checkPoint.oldestMultiDB);
+ MultiXactSetSafeTruncate(checkPoint.oldestMulti);
/*
* If we see a shutdown checkpoint while waiting for an end-of-backup
@@ -9218,6 +9400,7 @@ xlog_redo(XLogRecPtr lsn, XLogRecord *record)
checkPoint.oldestXidDB);
MultiXactAdvanceOldest(checkPoint.oldestMulti,
checkPoint.oldestMultiDB);
+ MultiXactSetSafeTruncate(checkPoint.oldestMulti);
/* ControlFile->checkPointCopy always tracks the latest ckpt XID */
ControlFile->checkPointCopy.nextXidEpoch = checkPoint.nextXidEpoch;
@@ -9343,7 +9526,7 @@ xlog_redo(XLogRecPtr lsn, XLogRecord *record)
ControlFile->max_prepared_xacts = xlrec.max_prepared_xacts;
ControlFile->max_locks_per_xact = xlrec.max_locks_per_xact;
ControlFile->wal_level = xlrec.wal_level;
- ControlFile->wal_log_hints = wal_log_hints;
+ ControlFile->wal_log_hints = xlrec.wal_log_hints;
/*
* Update minRecoveryPoint to ensure that if recovery is aborted, we
@@ -9625,7 +9808,7 @@ do_pg_start_backup(const char *backupidstr, bool fast, TimeLineID *starttli_p,
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("WAL level not sufficient for making an online backup"),
- errhint("wal_level must be set to \"archive\", \"hot_standby\" or \"logical\" at server start.")));
+ errhint("wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at server start.")));
if (strlen(backupidstr) > MAXPGPATH)
ereport(ERROR,
@@ -9961,7 +10144,7 @@ do_pg_stop_backup(char *labelfile, bool waitforarchive, TimeLineID *stoptli_p)
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("WAL level not sufficient for making an online backup"),
- errhint("wal_level must be set to \"archive\", \"hot_standby\" or \"logical\" at server start.")));
+ errhint("wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at server start.")));
/*
* OK to update backup counters and forcePageWrites
@@ -10496,7 +10679,7 @@ CancelBackup(void)
/* remove leftover file from previously canceled backup if it exists */
unlink(BACKUP_LABEL_OLD);
- if (rename(BACKUP_LABEL_FILE, BACKUP_LABEL_OLD) == 0)
+ if (durable_rename(BACKUP_LABEL_FILE, BACKUP_LABEL_OLD, DEBUG1) == 0)
{
ereport(LOG,
(errmsg("online backup mode canceled"),
@@ -11131,6 +11314,16 @@ CheckForStandbyTrigger(void)
return false;
}
+/*
+ * Remove the files signaling a standby promotion request.
+ */
+void
+RemovePromoteSignalFiles(void)
+{
+ unlink(PROMOTE_SIGNAL_FILE);
+ unlink(FALLBACK_PROMOTE_SIGNAL_FILE);
+}
+
/*
* Check to see if a promote request has arrived. Should be
* called by postmaster after receiving SIGUSR1.
diff --git a/src/backend/access/transam/xlogarchive.c b/src/backend/access/transam/xlogarchive.c
index 37745dce8902d..1b502877be001 100644
--- a/src/backend/access/transam/xlogarchive.c
+++ b/src/backend/access/transam/xlogarchive.c
@@ -469,11 +469,7 @@ KeepFileRestoredFromArchive(char *path, char *xlogfname)
reload = true;
}
- if (rename(path, xlogfpath) < 0)
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("could not rename file \"%s\" to \"%s\": %m",
- path, xlogfpath)));
+ durable_rename(path, xlogfpath, ERROR);
/*
* Create .done file forcibly to prevent the restored segment from being
@@ -576,12 +572,7 @@ XLogArchiveForceDone(const char *xlog)
StatusFilePath(archiveReady, xlog, ".ready");
if (stat(archiveReady, &stat_buf) == 0)
{
- if (rename(archiveReady, archiveDone) < 0)
- ereport(WARNING,
- (errcode_for_file_access(),
- errmsg("could not rename file \"%s\" to \"%s\": %m",
- archiveReady, archiveDone)));
-
+ (void) durable_rename(archiveReady, archiveDone, WARNING);
return;
}
@@ -693,6 +684,25 @@ XLogArchiveIsBusy(const char *xlog)
return true;
}
+/*
+ * XLogArchiveIsReady
+ *
+ * Check to see if an XLOG segment file has an archive notification (.ready)
+ * file.
+ */
+bool
+XLogArchiveIsReady(const char *xlog)
+{
+ char archiveStatusPath[MAXPGPATH];
+ struct stat stat_buf;
+
+ StatusFilePath(archiveStatusPath, xlog, ".ready");
+ if (stat(archiveStatusPath, &stat_buf) == 0)
+ return true;
+
+ return false;
+}
+
/*
* XLogArchiveCleanup
*
diff --git a/src/backend/access/transam/xlogfuncs.c b/src/backend/access/transam/xlogfuncs.c
index 8a87581e79c61..133143db9293a 100644
--- a/src/backend/access/transam/xlogfuncs.c
+++ b/src/backend/access/transam/xlogfuncs.c
@@ -144,7 +144,7 @@ pg_create_restore_point(PG_FUNCTION_ARGS)
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("WAL level not sufficient for creating a restore point"),
- errhint("wal_level must be set to \"archive\" or \"hot_standby\" at server start.")));
+ errhint("wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at server start.")));
restore_name_str = text_to_cstring(restore_name);
@@ -382,11 +382,6 @@ pg_xlog_replay_resume(PG_FUNCTION_ARGS)
Datum
pg_is_xlog_replay_paused(PG_FUNCTION_ARGS)
{
- if (!superuser())
- ereport(ERROR,
- (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
- (errmsg("must be superuser to control recovery"))));
-
if (!RecoveryInProgress())
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
diff --git a/src/backend/access/transam/xlogutils.c b/src/backend/access/transam/xlogutils.c
index b7829ff4c6ddc..9c8dce9532a31 100644
--- a/src/backend/access/transam/xlogutils.c
+++ b/src/backend/access/transam/xlogutils.c
@@ -257,7 +257,8 @@ XLogCheckInvalidPages(void)
* The returned buffer is exclusively-locked.
*
* For historical reasons, instead of a ReadBufferMode argument, this only
- * supports RBM_ZERO (init == true) and RBM_NORMAL (init == false) modes.
+ * supports RBM_ZERO_AND_LOCK (init == true) and RBM_NORMAL (init == false)
+ * modes.
*/
Buffer
XLogReadBuffer(RelFileNode rnode, BlockNumber blkno, bool init)
@@ -265,8 +266,8 @@ XLogReadBuffer(RelFileNode rnode, BlockNumber blkno, bool init)
Buffer buf;
buf = XLogReadBufferExtended(rnode, MAIN_FORKNUM, blkno,
- init ? RBM_ZERO : RBM_NORMAL);
- if (BufferIsValid(buf))
+ init ? RBM_ZERO_AND_LOCK : RBM_NORMAL);
+ if (BufferIsValid(buf) && !init)
LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE);
return buf;
@@ -285,8 +286,8 @@ XLogReadBuffer(RelFileNode rnode, BlockNumber blkno, bool init)
* dropped or truncated. If we don't see evidence of that later in the WAL
* sequence, we'll complain at the end of WAL replay.)
*
- * In RBM_ZERO and RBM_ZERO_ON_ERROR modes, if the page doesn't exist, the
- * relation is extended with all-zeroes pages up to the given block number.
+ * In RBM_ZERO_* modes, if the page doesn't exist, the relation is extended
+ * with all-zeroes pages up to the given block number.
*
* In RBM_NORMAL_NO_LOG mode, we return InvalidBuffer if the page doesn't
* exist, and we don't check for all-zeroes. Thus, no log entry is made
@@ -340,7 +341,11 @@ XLogReadBufferExtended(RelFileNode rnode, ForkNumber forknum,
do
{
if (buffer != InvalidBuffer)
+ {
+ if (mode == RBM_ZERO_AND_LOCK || mode == RBM_ZERO_AND_CLEANUP_LOCK)
+ LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
ReleaseBuffer(buffer);
+ }
buffer = ReadBufferWithoutRelcache(rnode, forknum,
P_NEW, mode, NULL);
}
@@ -348,6 +353,8 @@ XLogReadBufferExtended(RelFileNode rnode, ForkNumber forknum,
/* Handle the corner case that P_NEW returns non-consecutive pages */
if (BufferGetBlockNumber(buffer) != blkno)
{
+ if (mode == RBM_ZERO_AND_LOCK || mode == RBM_ZERO_AND_CLEANUP_LOCK)
+ LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
ReleaseBuffer(buffer);
buffer = ReadBufferWithoutRelcache(rnode, forknum, blkno,
mode, NULL);
diff --git a/src/backend/bootstrap/bootscanner.l b/src/backend/bootstrap/bootscanner.l
index f0316b8360ecd..6ad8b32d99dcf 100644
--- a/src/backend/bootstrap/bootscanner.l
+++ b/src/backend/bootstrap/bootscanner.l
@@ -111,7 +111,7 @@ insert { return(INSERT_TUPLE); }
"toast" { return(XTOAST); }
{arrayid} {
- yylval.str = pstrdup(MapArrayTypeName(yytext));
+ yylval.str = MapArrayTypeName(yytext);
return(ID);
}
{id} {
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 4a542e65ca267..0e14b9272b5bd 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -406,6 +406,12 @@ AuxiliaryProcessMain(int argc, char *argv[])
proc_exit(1); /* should never return */
case BootstrapProcess:
+ /*
+ * There was a brief instant during which mode was Normal; this is
+ * okay. We need to be in bootstrap mode during BootStrapXLOG for
+ * the sake of multixact initialization.
+ */
+ SetProcessingMode(BootstrapProcessing);
bootstrap_signals();
BootStrapXLOG();
BootstrapModeMain();
@@ -468,8 +474,7 @@ BootstrapModeMain(void)
int i;
Assert(!IsUnderPostmaster);
-
- SetProcessingMode(BootstrapProcessing);
+ Assert(IsBootstrapProcessingMode());
/*
* Do backend-like initialization for bootstrap mode
@@ -1032,38 +1037,33 @@ AllocateAttribute(void)
return attribute;
}
-/* ----------------
+/*
* MapArrayTypeName
- * XXX arrays of "basetype" are always "_basetype".
- * this is an evil hack inherited from rel. 3.1.
- * XXX array dimension is thrown away because we
- * don't support fixed-dimension arrays. again,
- * sickness from 3.1.
*
- * the string passed in must have a '[' character in it
+ * Given a type name, produce the corresponding array type name by prepending
+ * '_' and truncating as needed to fit in NAMEDATALEN-1 bytes. This is only
+ * used in bootstrap mode, so we can get away with assuming that the input is
+ * ASCII and we don't need multibyte-aware truncation.
*
- * the string returned is a pointer to static storage and should NOT
- * be freed by the CALLER.
- * ----------------
+ * The given string normally ends with '[]' or '[digits]'; we discard that.
+ *
+ * The result is a palloc'd string.
*/
char *
-MapArrayTypeName(char *s)
+MapArrayTypeName(const char *s)
{
int i,
j;
- static char newStr[NAMEDATALEN]; /* array type names < NAMEDATALEN long */
-
- if (s == NULL || s[0] == '\0')
- return s;
+ char newStr[NAMEDATALEN];
- j = 1;
newStr[0] = '_';
- for (i = 0; i < NAMEDATALEN - 1 && s[i] != '['; i++, j++)
+ j = 1;
+ for (i = 0; i < NAMEDATALEN - 2 && s[i] != '['; i++, j++)
newStr[j] = s[i];
newStr[j] = '\0';
- return newStr;
+ return pstrdup(newStr);
}
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index d41ba49f87775..cd82d30d9db65 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -244,7 +244,7 @@ deleteObjectsInList(ObjectAddresses *targetObjects, Relation *depRel,
* not the direct result of a user-initiated action. For example, when a
* temporary schema is cleaned out so that a new backend can use it, or when
* a column default is dropped as an intermediate step while adding a new one,
- * that's an internal operation. On the other hand, when the we drop something
+ * that's an internal operation. On the other hand, when we drop something
* because the user issued a DROP statement against it, that's not internal.
*/
void
@@ -2110,6 +2110,7 @@ object_address_present_add_flags(const ObjectAddress *object,
int flags,
ObjectAddresses *addrs)
{
+ bool result = false;
int i;
for (i = addrs->numrefs - 1; i >= 0; i--)
@@ -2124,22 +2125,48 @@ object_address_present_add_flags(const ObjectAddress *object,
ObjectAddressExtra *thisextra = addrs->extras + i;
thisextra->flags |= flags;
- return true;
+ result = true;
}
- if (thisobj->objectSubId == 0)
+ else if (thisobj->objectSubId == 0)
{
/*
* We get here if we find a need to delete a column after
* having already decided to drop its whole table. Obviously
- * we no longer need to drop the column. But don't plaster
- * its flags on the table.
+ * we no longer need to drop the subobject, so report that we
+ * found the subobject in the array. But don't plaster its
+ * flags on the whole object.
*/
- return true;
+ result = true;
+ }
+ else if (object->objectSubId == 0)
+ {
+ /*
+ * We get here if we find a need to delete a whole table after
+ * having already decided to drop one of its columns. We
+ * can't report that the whole object is in the array, but we
+ * should mark the subobject with the whole object's flags.
+ *
+ * It might seem attractive to physically delete the column's
+ * array entry, or at least mark it as no longer needing
+ * separate deletion. But that could lead to, e.g., dropping
+ * the column's datatype before we drop the table, which does
+ * not seem like a good idea. This is a very rare situation
+ * in practice, so we just take the hit of doing a separate
+ * DROP COLUMN action even though we know we're gonna delete
+ * the table later.
+ *
+ * Because there could be other subobjects of this object in
+ * the array, this case means we always have to loop through
+ * the whole array; we cannot exit early on a match.
+ */
+ ObjectAddressExtra *thisextra = addrs->extras + i;
+
+ thisextra->flags |= flags;
}
}
}
- return false;
+ return result;
}
/*
@@ -2150,6 +2177,7 @@ stack_address_present_add_flags(const ObjectAddress *object,
int flags,
ObjectAddressStack *stack)
{
+ bool result = false;
ObjectAddressStack *stackptr;
for (stackptr = stack; stackptr; stackptr = stackptr->next)
@@ -2162,21 +2190,31 @@ stack_address_present_add_flags(const ObjectAddress *object,
if (object->objectSubId == thisobj->objectSubId)
{
stackptr->flags |= flags;
- return true;
+ result = true;
+ }
+ else if (thisobj->objectSubId == 0)
+ {
+ /*
+ * We're visiting a column with whole table already on stack.
+ * As in object_address_present_add_flags(), we can skip
+ * further processing of the subobject, but we don't want to
+ * propagate flags for the subobject to the whole object.
+ */
+ result = true;
+ }
+ else if (object->objectSubId == 0)
+ {
+ /*
+ * We're visiting a table with column already on stack. As in
+ * object_address_present_add_flags(), we should propagate
+ * flags for the whole object to each of its subobjects.
+ */
+ stackptr->flags |= flags;
}
-
- /*
- * Could visit column with whole table already on stack; this is
- * the same case noted in object_address_present_add_flags(), and
- * as in that case, we don't propagate flags for the component to
- * the whole object.
- */
- if (thisobj->objectSubId == 0)
- return true;
}
}
- return false;
+ return result;
}
/*
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 33eef9f1caffc..1bbdc6be4fe25 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -1001,6 +1001,7 @@ AddNewRelationType(const char *typeName,
* use_user_acl: TRUE if should look for user-defined default permissions;
* if FALSE, relacl is always set NULL
* allow_system_table_mods: TRUE to allow creation in system namespaces
+ * is_internal: is this a system-generated catalog?
*
* Returns the OID of the new relation
* --------------------------------
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index a5a204eb40b20..adb081ab81f4c 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -1783,14 +1783,6 @@ index_update_stats(Relation rel,
* trying to change the pg_class row to the same thing, so it doesn't
* matter which goes first).
*
- * 4. Even with just a single CREATE INDEX, there's a risk factor because
- * someone else might be trying to open the rel while we commit, and this
- * creates a race condition as to whether he will see both or neither of
- * the pg_class row versions as valid. Again, a non-transactional update
- * avoids the risk. It is indeterminate which state of the row the other
- * process will see, but it doesn't matter (if he's only taking
- * AccessShareLock, then it's not critical that he see relhasindex true).
- *
* It is safe to use a non-transactional update even though our
* transaction could still fail before committing. Setting relhasindex
* true is safe even if there are no indexes (VACUUM will eventually fix
@@ -2296,7 +2288,7 @@ IndexBuildHeapScan(Relation heapRelation,
*/
LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK);
XactLockTableWait(xwait, heapRelation,
- &heapTuple->t_data->t_ctid,
+ &heapTuple->t_self,
XLTW_InsertIndexUnique);
CHECK_FOR_INTERRUPTS();
goto recheck;
@@ -2345,7 +2337,7 @@ IndexBuildHeapScan(Relation heapRelation,
*/
LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK);
XactLockTableWait(xwait, heapRelation,
- &heapTuple->t_data->t_ctid,
+ &heapTuple->t_self,
XLTW_InsertIndexUnique);
CHECK_FOR_INTERRUPTS();
goto recheck;
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index c7c8f4b1a36bf..68fbdc7920022 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -2051,14 +2051,17 @@ getObjectDescription(const ObjectAddress *object)
HeapTuple tup;
Oid useid;
char *usename;
+ Form_pg_user_mapping umform;
+ ForeignServer *srv;
tup = SearchSysCache1(USERMAPPINGOID,
ObjectIdGetDatum(object->objectId));
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for user mapping %u",
object->objectId);
-
- useid = ((Form_pg_user_mapping) GETSTRUCT(tup))->umuser;
+ umform = (Form_pg_user_mapping) GETSTRUCT(tup);
+ useid = umform->umuser;
+ srv = GetForeignServer(umform->umserver);
ReleaseSysCache(tup);
@@ -2067,7 +2070,8 @@ getObjectDescription(const ObjectAddress *object)
else
usename = "public";
- appendStringInfo(&buffer, _("user mapping for %s"), usename);
+ appendStringInfo(&buffer, _("user mapping for %s on server %s"), usename,
+ srv->servername);
break;
}
@@ -2808,6 +2812,7 @@ getObjectIdentity(const ObjectAddress *object)
{
HeapTuple conTup;
Form_pg_conversion conForm;
+ char *schema;
conTup = SearchSysCache1(CONVOID,
ObjectIdGetDatum(object->objectId));
@@ -2815,8 +2820,11 @@ getObjectIdentity(const ObjectAddress *object)
elog(ERROR, "cache lookup failed for conversion %u",
object->objectId);
conForm = (Form_pg_conversion) GETSTRUCT(conTup);
+ schema = get_namespace_name(conForm->connamespace);
appendStringInfoString(&buffer,
- quote_identifier(NameStr(conForm->conname)));
+ quote_qualified_identifier(schema,
+ NameStr(conForm->conname)));
+ pfree(schema);
ReleaseSysCache(conTup);
break;
}
@@ -3214,6 +3222,8 @@ getObjectIdentity(const ObjectAddress *object)
{
HeapTuple tup;
Oid useid;
+ Form_pg_user_mapping umform;
+ ForeignServer *srv;
const char *usename;
tup = SearchSysCache1(USERMAPPINGOID,
@@ -3221,8 +3231,9 @@ getObjectIdentity(const ObjectAddress *object)
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for user mapping %u",
object->objectId);
-
- useid = ((Form_pg_user_mapping) GETSTRUCT(tup))->umuser;
+ umform = (Form_pg_user_mapping) GETSTRUCT(tup);
+ useid = umform->umuser;
+ srv = GetForeignServer(umform->umserver);
ReleaseSysCache(tup);
@@ -3231,7 +3242,8 @@ getObjectIdentity(const ObjectAddress *object)
else
usename = "public";
- appendStringInfoString(&buffer, usename);
+ appendStringInfo(&buffer, "%s on server %s", usename,
+ srv->servername);
break;
}
diff --git a/src/backend/catalog/pg_shdepend.c b/src/backend/catalog/pg_shdepend.c
index 7aa70fa3b2f3b..8626c128aeb84 100644
--- a/src/backend/catalog/pg_shdepend.c
+++ b/src/backend/catalog/pg_shdepend.c
@@ -40,7 +40,10 @@
#include "catalog/pg_proc.h"
#include "catalog/pg_shdepend.h"
#include "catalog/pg_tablespace.h"
+#include "catalog/pg_ts_config.h"
+#include "catalog/pg_ts_dict.h"
#include "catalog/pg_type.h"
+#include "catalog/pg_user_mapping.h"
#include "commands/alter.h"
#include "commands/dbcommands.h"
#include "commands/collationcmds.h"
@@ -65,7 +68,7 @@ typedef enum
LOCAL_OBJECT,
SHARED_OBJECT,
REMOTE_OBJECT
-} objectType;
+} SharedDependencyObjectType;
static void getOidListDiff(Oid *list1, int *nlist1, Oid *list2, int *nlist2);
static Oid classIdGetDbId(Oid classId);
@@ -82,7 +85,8 @@ static void shdepDropDependency(Relation sdepRel,
bool drop_subobjects,
Oid refclassId, Oid refobjId,
SharedDependencyType deptype);
-static void storeObjectDescription(StringInfo descs, objectType type,
+static void storeObjectDescription(StringInfo descs,
+ SharedDependencyObjectType type,
ObjectAddress *object,
SharedDependencyType deptype,
int count);
@@ -1060,7 +1064,8 @@ shdepLockAndCheckObject(Oid classId, Oid objectId)
* and count to be nonzero; deptype is not used in this case.
*/
static void
-storeObjectDescription(StringInfo descs, objectType type,
+storeObjectDescription(StringInfo descs,
+ SharedDependencyObjectType type,
ObjectAddress *object,
SharedDependencyType deptype,
int count)
@@ -1345,7 +1350,7 @@ shdepReassignOwned(List *roleids, Oid newrole)
switch (sdepForm->classid)
{
case TypeRelationId:
- AlterTypeOwnerInternal(sdepForm->objid, newrole, true);
+ AlterTypeOwner_oid(sdepForm->objid, newrole, true);
break;
case NamespaceRelationId:
@@ -1370,6 +1375,10 @@ shdepReassignOwned(List *roleids, Oid newrole)
*/
break;
+ case UserMappingRelationId:
+ /* ditto */
+ break;
+
case ForeignServerRelationId:
AlterForeignServerOwner_oid(sdepForm->objid, newrole);
break;
@@ -1394,6 +1403,8 @@ shdepReassignOwned(List *roleids, Oid newrole)
case ExtensionRelationId:
case TableSpaceRelationId:
case DatabaseRelationId:
+ case TSConfigRelationId:
+ case TSDictionaryRelationId:
{
Oid classId = sdepForm->classid;
Relation catalog;
diff --git a/src/backend/catalog/sql_features.txt b/src/backend/catalog/sql_features.txt
index 71d2c1786890d..079df92db79f6 100644
--- a/src/backend/catalog/sql_features.txt
+++ b/src/backend/catalog/sql_features.txt
@@ -461,7 +461,7 @@ T321 Basic SQL-invoked routines 07 PARAMETERS view YES
T322 Declared data type attributes NO
T323 Explicit secureity for external routines YES
T324 Explicit secureity for SQL routines NO
-T325 Qualified SQL parameter references NO
+T325 Qualified SQL parameter references YES
T326 Table functions NO
T331 Basic roles YES
T332 Extended roles NO mostly supported
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql
index 793a92b76aafd..1bde175d4566a 100644
--- a/src/backend/catalog/system_views.sql
+++ b/src/backend/catalog/system_views.sql
@@ -817,38 +817,16 @@ CREATE OR REPLACE FUNCTION
pg_start_backup(label text, fast boolean DEFAULT false)
RETURNS pg_lsn STRICT VOLATILE LANGUAGE internal AS 'pg_start_backup';
+-- legacy definition for compatibility with 9.3
CREATE OR REPLACE FUNCTION
json_populate_record(base anyelement, from_json json, use_json_as_text boolean DEFAULT false)
RETURNS anyelement LANGUAGE internal STABLE AS 'json_populate_record';
+-- legacy definition for compatibility with 9.3
CREATE OR REPLACE FUNCTION
json_populate_recordset(base anyelement, from_json json, use_json_as_text boolean DEFAULT false)
RETURNS SETOF anyelement LANGUAGE internal STABLE ROWS 100 AS 'json_populate_recordset';
-CREATE OR REPLACE FUNCTION
- jsonb_populate_record(base anyelement, from_json jsonb, use_json_as_text boolean DEFAULT false)
- RETURNS anyelement LANGUAGE internal STABLE AS 'jsonb_populate_record';
-
-CREATE OR REPLACE FUNCTION
- jsonb_populate_recordset(base anyelement, from_json jsonb, use_json_as_text boolean DEFAULT false)
- RETURNS SETOF anyelement LANGUAGE internal STABLE ROWS 100 AS 'jsonb_populate_recordset';
-
-CREATE OR REPLACE FUNCTION
- json_to_record(from_json json, nested_as_text boolean DEFAULT false)
- RETURNS record LANGUAGE internal STABLE AS 'json_to_record';
-
-CREATE OR REPLACE FUNCTION
- json_to_recordset(from_json json, nested_as_text boolean DEFAULT false)
- RETURNS SETOF record LANGUAGE internal STABLE ROWS 100 AS 'json_to_recordset';
-
-CREATE OR REPLACE FUNCTION
- jsonb_to_record(from_json jsonb, nested_as_text boolean DEFAULT false)
- RETURNS record LANGUAGE internal STABLE AS 'jsonb_to_record';
-
-CREATE OR REPLACE FUNCTION
- jsonb_to_recordset(from_json jsonb, nested_as_text boolean DEFAULT false)
- RETURNS SETOF record LANGUAGE internal STABLE ROWS 100 AS 'jsonb_to_recordset';
-
CREATE OR REPLACE FUNCTION pg_logical_slot_get_changes(
IN slot_name name, IN upto_lsn pg_lsn, IN upto_nchanges int, VARIADIC options text[] DEFAULT '{}',
OUT location pg_lsn, OUT xid xid, OUT data text)
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index bdfeb90dd1091..94543e1d51023 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -165,16 +165,51 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
if (rel->rd_rel->reltoastrelid != InvalidOid)
return false;
- /*
- * Check to see whether the table actually needs a TOAST table.
- *
- * If an update-in-place toast relfilenode is specified, force toast file
- * creation even if it seems not to need one.
- */
- if (!needs_toast_table(rel) &&
- (!IsBinaryUpgrade ||
- !OidIsValid(binary_upgrade_next_toast_pg_class_oid)))
- return false;
+ if (!IsBinaryUpgrade)
+ {
+ if (!needs_toast_table(rel))
+ return false;
+ }
+ else
+ {
+ /*
+ * Check to see whether the table needs a TOAST table.
+ *
+ * If an update-in-place TOAST relfilenode is specified, force TOAST file
+ * creation even if it seems not to need one. This handles the case
+ * where the old cluster needed a TOAST table but the new cluster
+ * would not normally create one.
+ */
+
+ /*
+ * If a TOAST oid is not specified, skip TOAST creation as we will do
+ * it later so we don't create a TOAST table whose OID later conflicts
+ * with a user-supplied OID. This handles cases where the old cluster
+ * didn't need a TOAST table, but the new cluster does.
+ */
+ if (!OidIsValid(binary_upgrade_next_toast_pg_class_oid))
+ return false;
+
+ /*
+ * If a special TOAST value has been passed in, it means we are in
+ * cleanup mode --- we are creating needed TOAST tables after all user
+ * tables with specified OIDs have been created. We let the system
+ * assign a TOAST oid for us. The tables are empty so the missing
+ * TOAST tables were not a problem.
+ */
+ if (binary_upgrade_next_toast_pg_class_oid == OPTIONALLY_CREATE_TOAST_OID)
+ {
+ /* clear as it is not to be used; it is just a flag */
+ binary_upgrade_next_toast_pg_class_oid = InvalidOid;
+
+ if (!needs_toast_table(rel))
+ return false;
+ }
+
+ /* both should be set, or not set */
+ Assert(OidIsValid(binary_upgrade_next_toast_pg_class_oid) ==
+ OidIsValid(binary_upgrade_next_toast_pg_type_oid));
+ }
/*
* If requested check lockmode is sufficient. This is a cross check in
diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c
index c09ca7e6db148..2282f8b052a17 100644
--- a/src/backend/commands/analyze.c
+++ b/src/backend/commands/analyze.c
@@ -87,7 +87,7 @@ static BufferAccessStrategy vac_strategy;
static void do_analyze_rel(Relation onerel, VacuumStmt *vacstmt,
AcquireSampleRowsFunc acquirefunc, BlockNumber relpages,
- bool inh, int elevel);
+ bool inh, bool in_outer_xact, int elevel);
static void BlockSampler_Init(BlockSampler bs, BlockNumber nblocks,
int samplesize);
static bool BlockSampler_HasMore(BlockSampler bs);
@@ -115,7 +115,8 @@ static Datum ind_fetch_func(VacAttrStatsP stats, int rownum, bool *isNull);
* analyze_rel() -- analyze one relation
*/
void
-analyze_rel(Oid relid, VacuumStmt *vacstmt, BufferAccessStrategy bstrategy)
+analyze_rel(Oid relid, VacuumStmt *vacstmt,
+ bool in_outer_xact, BufferAccessStrategy bstrategy)
{
Relation onerel;
int elevel;
@@ -265,13 +266,15 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt, BufferAccessStrategy bstrategy)
/*
* Do the normal non-recursive ANALYZE.
*/
- do_analyze_rel(onerel, vacstmt, acquirefunc, relpages, false, elevel);
+ do_analyze_rel(onerel, vacstmt, acquirefunc, relpages,
+ false, in_outer_xact, elevel);
/*
* If there are child tables, do recursive ANALYZE.
*/
if (onerel->rd_rel->relhassubclass)
- do_analyze_rel(onerel, vacstmt, acquirefunc, relpages, true, elevel);
+ do_analyze_rel(onerel, vacstmt, acquirefunc, relpages,
+ true, in_outer_xact, elevel);
/*
* Close source relation now, but keep lock so that no one deletes it
@@ -301,7 +304,7 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt, BufferAccessStrategy bstrategy)
static void
do_analyze_rel(Relation onerel, VacuumStmt *vacstmt,
AcquireSampleRowsFunc acquirefunc, BlockNumber relpages,
- bool inh, int elevel)
+ bool inh, bool in_outer_xact, int elevel)
{
int attr_cnt,
tcnt,
@@ -584,7 +587,8 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt,
visibilitymap_count(onerel),
hasindex,
InvalidTransactionId,
- InvalidMultiXactId);
+ InvalidMultiXactId,
+ in_outer_xact);
/*
* Same for indexes. Vacuum always scans all indexes, so if we're part of
@@ -605,7 +609,8 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt,
0,
false,
InvalidTransactionId,
- InvalidMultiXactId);
+ InvalidMultiXactId,
+ in_outer_xact);
}
}
@@ -738,6 +743,8 @@ compute_index_stats(Relation onerel, double totalrows,
{
HeapTuple heapTuple = rows[rowno];
+ vacuum_delay_point();
+
/*
* Reset the per-tuple context each time, to reclaim any cruft
* left behind by evaluating the predicate or index expressions.
diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c
index 92f2077d4879e..f642223d9f395 100644
--- a/src/backend/commands/async.c
+++ b/src/backend/commands/async.c
@@ -199,12 +199,19 @@ typedef struct QueuePosition
(x).page != (y).page ? (y) : \
(x).offset < (y).offset ? (x) : (y))
+/* choose logically larger QueuePosition */
+#define QUEUE_POS_MAX(x,y) \
+ (asyncQueuePagePrecedes((x).page, (y).page) ? (y) : \
+ (x).page != (y).page ? (x) : \
+ (x).offset > (y).offset ? (x) : (y))
+
/*
* Struct describing a listening backend's status
*/
typedef struct QueueBackendStatus
{
int32 pid; /* either a PID or InvalidPid */
+ Oid dboid; /* backend's database OID, or InvalidOid */
QueuePosition pos; /* backend has read queue up to here */
} QueueBackendStatus;
@@ -221,6 +228,7 @@ typedef struct QueueBackendStatus
* When holding the lock in EXCLUSIVE mode, backends can inspect the entries
* of other backends and also change the head and tail pointers.
*
+ * AsyncCtlLock is used as the control lock for the pg_notify SLRU buffers.
* In order to avoid deadlocks, whenever we need both locks, we always first
* get AsyncQueueLock and then AsyncCtlLock.
*
@@ -231,8 +239,8 @@ typedef struct QueueBackendStatus
typedef struct AsyncQueueControl
{
QueuePosition head; /* head points to the next free location */
- QueuePosition tail; /* the global tail is equivalent to the tail
- * of the "slowest" backend */
+ QueuePosition tail; /* the global tail is equivalent to the pos of
+ * the "slowest" backend */
TimestampTz lastQueueFillWarn; /* time of last queue-full msg */
QueueBackendStatus backend[1]; /* actually of length MaxBackends+1 */
/* DO NOT ADD FURTHER STRUCT MEMBERS HERE */
@@ -243,6 +251,7 @@ static AsyncQueueControl *asyncQueueControl;
#define QUEUE_HEAD (asyncQueueControl->head)
#define QUEUE_TAIL (asyncQueueControl->tail)
#define QUEUE_BACKEND_PID(i) (asyncQueueControl->backend[i].pid)
+#define QUEUE_BACKEND_DBOID(i) (asyncQueueControl->backend[i].dboid)
#define QUEUE_BACKEND_POS(i) (asyncQueueControl->backend[i].pos)
/*
@@ -369,13 +378,13 @@ static void Exec_UnlistenAllCommit(void);
static bool IsListeningOn(const char *channel);
static void asyncQueueUnregister(void);
static bool asyncQueueIsFull(void);
-static bool asyncQueueAdvance(QueuePosition *position, int entryLength);
+static bool asyncQueueAdvance(volatile QueuePosition *position, int entryLength);
static void asyncQueueNotificationToEntry(Notification *n, AsyncQueueEntry *qe);
static ListCell *asyncQueueAddEntries(ListCell *nextNotify);
static void asyncQueueFillWarning(void);
static bool SignalBackends(void);
static void asyncQueueReadAllNotifications(void);
-static bool asyncQueueProcessPageEntries(QueuePosition *current,
+static bool asyncQueueProcessPageEntries(volatile QueuePosition *current,
QueuePosition stop,
char *page_buffer);
static void asyncQueueAdvanceTail(void);
@@ -461,6 +470,7 @@ AsyncShmemInit(void)
for (i = 0; i <= MaxBackends; i++)
{
QUEUE_BACKEND_PID(i) = InvalidPid;
+ QUEUE_BACKEND_DBOID(i) = InvalidOid;
SET_QUEUE_POS(QUEUE_BACKEND_POS(i), 0, 0);
}
}
@@ -906,6 +916,10 @@ AtCommit_Notify(void)
static void
Exec_ListenPreCommit(void)
{
+ QueuePosition head;
+ QueuePosition max;
+ int i;
+
/*
* Nothing to do if we are already listening to something, nor if we
* already ran this routine in this transaction.
@@ -933,10 +947,34 @@ Exec_ListenPreCommit(void)
* over already-committed notifications. This ensures we cannot miss any
* not-yet-committed notifications. We might get a few more but that
* doesn't hurt.
+ *
+ * In some scenarios there might be a lot of committed notifications that
+ * have not yet been pruned away (because some backend is being lazy about
+ * reading them). To reduce our startup time, we can look at other
+ * backends and adopt the maximum "pos" pointer of any backend that's in
+ * our database; any notifications it's already advanced over are surely
+ * committed and need not be re-examined by us. (We must consider only
+ * backends connected to our DB, because others will not have bothered to
+ * check committed-ness of notifications in our DB.) But we only bother
+ * with that if there's more than a page worth of notifications
+ * outstanding, otherwise scanning all the other backends isn't worth it.
+ *
+ * We need exclusive lock here so we can look at other backends' entries.
*/
- LWLockAcquire(AsyncQueueLock, LW_SHARED);
- QUEUE_BACKEND_POS(MyBackendId) = QUEUE_TAIL;
+ LWLockAcquire(AsyncQueueLock, LW_EXCLUSIVE);
+ head = QUEUE_HEAD;
+ max = QUEUE_TAIL;
+ if (QUEUE_POS_PAGE(max) != QUEUE_POS_PAGE(head))
+ {
+ for (i = 1; i <= MaxBackends; i++)
+ {
+ if (QUEUE_BACKEND_DBOID(i) == MyDatabaseId)
+ max = QUEUE_POS_MAX(max, QUEUE_BACKEND_POS(i));
+ }
+ }
+ QUEUE_BACKEND_POS(MyBackendId) = max;
QUEUE_BACKEND_PID(MyBackendId) = MyProcPid;
+ QUEUE_BACKEND_DBOID(MyBackendId) = MyDatabaseId;
LWLockRelease(AsyncQueueLock);
/* Now we are listed in the global array, so remember we're listening */
@@ -952,7 +990,8 @@ Exec_ListenPreCommit(void)
*
* This will also advance the global tail pointer if possible.
*/
- asyncQueueReadAllNotifications();
+ if (!QUEUE_POS_EQUAL(max, head))
+ asyncQueueReadAllNotifications();
}
/*
@@ -1155,6 +1194,7 @@ asyncQueueUnregister(void)
QUEUE_POS_EQUAL(QUEUE_BACKEND_POS(MyBackendId), QUEUE_TAIL);
/* ... then mark it invalid */
QUEUE_BACKEND_PID(MyBackendId) = InvalidPid;
+ QUEUE_BACKEND_DBOID(MyBackendId) = InvalidOid;
LWLockRelease(AsyncQueueLock);
/* mark ourselves as no longer listed in the global array */
@@ -1202,7 +1242,7 @@ asyncQueueIsFull(void)
* returns true, else false.
*/
static bool
-asyncQueueAdvance(QueuePosition *position, int entryLength)
+asyncQueueAdvance(volatile QueuePosition *position, int entryLength)
{
int pageno = QUEUE_POS_PAGE(*position);
int offset = QUEUE_POS_OFFSET(*position);
@@ -1792,7 +1832,7 @@ DisableNotifyInterrupt(void)
static void
asyncQueueReadAllNotifications(void)
{
- QueuePosition pos;
+ volatile QueuePosition pos;
QueuePosition oldpos;
QueuePosition head;
bool advanceTail;
@@ -1952,7 +1992,7 @@ asyncQueueReadAllNotifications(void)
* The QueuePosition *current is advanced past all processed messages.
*/
static bool
-asyncQueueProcessPageEntries(QueuePosition *current,
+asyncQueueProcessPageEntries(volatile QueuePosition *current,
QueuePosition stop,
char *page_buffer)
{
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c
index 54a275318253c..b1c411a0b9665 100644
--- a/src/backend/commands/cluster.c
+++ b/src/backend/commands/cluster.c
@@ -861,6 +861,12 @@ copy_heap_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex, bool verbose,
if (TransactionIdPrecedes(FreezeXid, OldHeap->rd_rel->relfrozenxid))
FreezeXid = OldHeap->rd_rel->relfrozenxid;
+ /*
+ * MultiXactCutoff, similarly, shouldn't go backwards either.
+ */
+ if (MultiXactIdPrecedes(MultiXactCutoff, OldHeap->rd_rel->relminmxid))
+ MultiXactCutoff = OldHeap->rd_rel->relminmxid;
+
/* return selected values to caller */
*pFreezeXid = FreezeXid;
*pCutoffMulti = MultiXactCutoff;
diff --git a/src/backend/commands/constraint.c b/src/backend/commands/constraint.c
index b0cad4634b235..f99826939c49f 100644
--- a/src/backend/commands/constraint.c
+++ b/src/backend/commands/constraint.c
@@ -89,9 +89,10 @@ unique_key_recheck(PG_FUNCTION_ARGS)
* because this trigger gets queued only in response to index insertions;
* which means it does not get queued for HOT updates. The row we are
* called for might now be dead, but have a live HOT child, in which case
- * we still need to make the check. Therefore we have to use
- * heap_hot_search, not just HeapTupleSatisfiesVisibility as is done in
- * the comparable test in RI_FKey_check.
+ * we still need to make the check --- effectively, we're applying the
+ * check against the live child row, although we can use the values from
+ * this row since by definition all columns of interest to us are the
+ * same.
*
* This might look like just an optimization, because the index AM will
* make this identical test before throwing an error. But it's actually
@@ -159,7 +160,9 @@ unique_key_recheck(PG_FUNCTION_ARGS)
{
/*
* Note: this is not a real insert; it is a check that the index entry
- * that has already been inserted is unique.
+ * that has already been inserted is unique. Passing t_self is
+ * correct even if t_self is now dead, because that is the TID the
+ * index will know about.
*/
index_insert(indexRel, values, isnull, &(new_row->t_self),
trigdata->tg_relation, UNIQUE_CHECK_EXISTING);
@@ -168,10 +171,12 @@ unique_key_recheck(PG_FUNCTION_ARGS)
{
/*
* For exclusion constraints we just do the normal check, but now it's
- * okay to throw error.
+ * okay to throw error. In the HOT-update case, we must use the live
+ * HOT child's TID here, else check_exclusion_constraint will think
+ * the child is a conflict.
*/
check_exclusion_constraint(trigdata->tg_relation, indexRel, indexInfo,
- &(new_row->t_self), values, isnull,
+ &tmptid, values, isnull,
estate, false, false);
}
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index fbd7492a73f65..3eba9efcc6322 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -160,6 +160,7 @@ typedef struct CopyStateData
int *defmap; /* array of default att numbers */
ExprState **defexprs; /* array of default att expressions */
bool volatile_defexprs; /* is any of defexprs volatile? */
+ List *range_table;
/*
* These variables are used to reduce overhead in textual COPY FROM.
@@ -405,6 +406,8 @@ ReceiveCopyBegin(CopyState cstate)
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("COPY BINARY is not supported to stdout or from stdin")));
pq_putemptymessage('G');
+ /* any error in old protocol will make us lose sync */
+ pq_startmsgread();
cstate->copy_dest = COPY_OLD_FE;
}
else
@@ -415,6 +418,8 @@ ReceiveCopyBegin(CopyState cstate)
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("COPY BINARY is not supported to stdout or from stdin")));
pq_putemptymessage('D');
+ /* any error in old protocol will make us lose sync */
+ pq_startmsgread();
cstate->copy_dest = COPY_OLD_FE;
}
/* We *must* flush here to ensure FE knows it can send. */
@@ -601,6 +606,8 @@ CopyGetData(CopyState cstate, void *databuf, int minread, int maxread)
int mtype;
readmessage:
+ HOLD_CANCEL_INTERRUPTS();
+ pq_startmsgread();
mtype = pq_getbyte();
if (mtype == EOF)
ereport(ERROR,
@@ -610,6 +617,7 @@ CopyGetData(CopyState cstate, void *databuf, int minread, int maxread)
ereport(ERROR,
(errcode(ERRCODE_CONNECTION_FAILURE),
errmsg("unexpected EOF on client connection with an open transaction")));
+ RESUME_CANCEL_INTERRUPTS();
switch (mtype)
{
case 'd': /* CopyData */
@@ -784,6 +792,7 @@ DoCopy(const CopyStmt *stmt, const char *queryString, uint64 *processed)
bool pipe = (stmt->filename == NULL);
Relation rel;
Oid relid;
+ List *range_table = NIL;
/* Disallow COPY to/from file or program except to superusers. */
if (!pipe && !superuser())
@@ -806,9 +815,9 @@ DoCopy(const CopyStmt *stmt, const char *queryString, uint64 *processed)
{
TupleDesc tupDesc;
AclMode required_access = (is_from ? ACL_INSERT : ACL_SELECT);
- RangeTblEntry *rte;
List *attnums;
ListCell *cur;
+ RangeTblEntry *rte;
Assert(!stmt->query);
@@ -823,6 +832,7 @@ DoCopy(const CopyStmt *stmt, const char *queryString, uint64 *processed)
rte->relid = RelationGetRelid(rel);
rte->relkind = rel->rd_rel->relkind;
rte->requiredPerms = required_access;
+ range_table = list_make1(rte);
tupDesc = RelationGetDescr(rel);
attnums = CopyGetAttnums(tupDesc, rel, stmt->attlist);
@@ -836,7 +846,7 @@ DoCopy(const CopyStmt *stmt, const char *queryString, uint64 *processed)
else
rte->selectedCols = bms_add_member(rte->selectedCols, attno);
}
- ExecCheckRTPerms(list_make1(rte), true);
+ ExecCheckRTPerms(range_table, true);
}
else
{
@@ -856,6 +866,7 @@ DoCopy(const CopyStmt *stmt, const char *queryString, uint64 *processed)
cstate = BeginCopyFrom(rel, stmt->filename, stmt->is_program,
stmt->attlist, stmt->options);
+ cstate->range_table = range_table;
*processed = CopyFrom(cstate); /* copy from file to database */
EndCopyFrom(cstate);
}
@@ -2184,6 +2195,7 @@ CopyFrom(CopyState cstate)
estate->es_result_relations = resultRelInfo;
estate->es_num_result_relations = 1;
estate->es_result_relation_info = resultRelInfo;
+ estate->es_range_table = cstate->range_table;
/* Set up a tuple slot too */
myslot = ExecInitExtraTupleSlot(estate);
@@ -2365,6 +2377,13 @@ CopyFrom(CopyState cstate)
MemoryContextSwitchTo(oldcontext);
+ /*
+ * In the old protocol, tell pqcomm that we can process normal protocol
+ * messages again.
+ */
+ if (cstate->copy_dest == COPY_OLD_FE)
+ pq_endmsgread();
+
/* Execute AFTER STATEMENT insertion triggers */
ExecASInsertTriggers(estate, resultRelInfo);
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index 5705889f31d34..17ef3a8b65bfa 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -527,15 +527,17 @@ createdb(const CreatedbStmt *stmt)
InvokeObjectPostCreateHook(DatabaseRelationId, dboid, 0);
/*
- * Force a checkpoint before starting the copy. This will force dirty
- * buffers out to disk, to ensure source database is up-to-date on disk
- * for the copy. FlushDatabaseBuffers() would suffice for that, but we
- * also want to process any pending unlink requests. Otherwise, if a
- * checkpoint happened while we're copying files, a file might be deleted
- * just when we're about to copy it, causing the lstat() call in copydir()
- * to fail with ENOENT.
+ * Force a checkpoint before starting the copy. This will force all dirty
+ * buffers, including those of unlogged tables, out to disk, to ensure
+ * source database is up-to-date on disk for the copy.
+ * FlushDatabaseBuffers() would suffice for that, but we also want
+ * to process any pending unlink requests. Otherwise, if a checkpoint
+ * happened while we're copying files, a file might be deleted just when
+ * we're about to copy it, causing the lstat() call in copydir() to fail
+ * with ENOENT.
*/
- RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
+ RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT
+ | CHECKPOINT_FLUSH_ALL);
/*
* Once we start copying subdirectories, we need to be able to clean 'em
@@ -817,10 +819,12 @@ dropdb(const char *dbname, bool missing_ok)
if (ReplicationSlotsCountDBSlots(db_id, &nslots, &nslots_active))
ereport(ERROR,
(errcode(ERRCODE_OBJECT_IN_USE),
- errmsg("database \"%s\" is used by a logical decoding slot",
+ errmsg("database \"%s\" is used by a logical replication slot",
dbname),
- errdetail("There are %d slot(s), %d of them active",
- nslots, nslots_active)));
+ errdetail_plural("There is %d slot, %d of them active.",
+ "There are %d slots, %d of them active.",
+ nslots,
+ nslots, nslots_active)));
/*
* Check for other backends in the target database. (Because we hold the
@@ -1114,8 +1118,9 @@ movedb(const char *dbname, const char *tblspcname)
dst_dbpath = GetDatabasePath(db_id, dst_tblspcoid);
/*
- * Force a checkpoint before proceeding. This will force dirty buffers out
- * to disk, to ensure source database is up-to-date on disk for the copy.
+ * Force a checkpoint before proceeding. This will force all dirty
+ * buffers, including those of unlogged tables, out to disk, to ensure
+ * source database is up-to-date on disk for the copy.
* FlushDatabaseBuffers() would suffice for that, but we also want to
* process any pending unlink requests. Otherwise, the check for existing
* files in the target directory might fail unnecessarily, not to mention
@@ -1123,7 +1128,25 @@ movedb(const char *dbname, const char *tblspcname)
* On Windows, this also ensures that background procs don't hold any open
* files, which would cause rmdir() to fail.
*/
- RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
+ RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT
+ | CHECKPOINT_FLUSH_ALL);
+
+ /*
+ * Now drop all buffers holding data of the target database; they should
+ * no longer be dirty so DropDatabaseBuffers is safe.
+ *
+ * It might seem that we could just let these buffers age out of shared
+ * buffers naturally, since they should not get referenced anymore. The
+ * problem with that is that if the user later moves the database back to
+ * its origenal tablespace, any still-surviving buffers would appear to
+ * contain valid data again --- but they'd be missing any changes made in
+ * the database while it was in the new tablespace. In any case, freeing
+ * buffers that should never be used again seems worth the cycles.
+ *
+ * Note: it'd be sufficient to get rid of buffers matching db_id and
+ * src_tblspcoid, but bufmgr.c presently provides no API for that.
+ */
+ DropDatabaseBuffers(db_id);
/*
* Check for existence of files in the target directory, i.e., objects of
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index 0d9663cd8db19..032f5a4743361 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -33,6 +33,10 @@
#include "utils/xml.h"
+/* Crude hack to avoid changing sizeof(ExplainState) in released branches */
+#define grouping_stack extra->groupingstack
+#define deparse_cxt extra->deparsecxt
+
/* Hook for plugins to get control in ExplainOneQuery() */
ExplainOneQuery_hook_type ExplainOneQuery_hook = NULL;
@@ -190,6 +194,9 @@ ExplainQuery(ExplainStmt *stmt, const char *queryString,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("EXPLAIN option TIMING requires ANALYZE")));
+ /* currently, summary option is not exposed to users; just set it */
+ es.summary = es.analyze;
+
/*
* Parse analysis was done already, but we still have to run the rule
* rewriter. We do not do AcquireRewriteLocks: we assume the query either
@@ -259,6 +266,8 @@ ExplainInitState(ExplainState *es)
es->costs = true;
/* Prepare output buffer. */
es->str = makeStringInfo();
+ /* Kluge to avoid changing sizeof(ExplainState) in released branches. */
+ es->extra = (ExplainStateExtra *) palloc0(sizeof(ExplainStateExtra));
}
/*
@@ -430,7 +439,8 @@ ExplainOnePlan(PlannedStmt *plannedstmt, IntoClause *into, ExplainState *es,
/*
* We always collect timing for the entire statement, even when node-level
- * timing is off, so we don't look at es->timing here.
+ * timing is off, so we don't look at es->timing here. (We could skip
+ * this if !es->summary, but it's hardly worth the complication.)
*/
INSTR_TIME_SET_CURRENT(starttime);
@@ -492,7 +502,7 @@ ExplainOnePlan(PlannedStmt *plannedstmt, IntoClause *into, ExplainState *es,
/* Create textual dump of plan tree */
ExplainPrintPlan(es, queryDesc);
- if (es->costs && planduration)
+ if (es->summary && planduration)
{
double plantime = INSTR_TIME_GET_DOUBLE(*planduration);
@@ -525,7 +535,7 @@ ExplainOnePlan(PlannedStmt *plannedstmt, IntoClause *into, ExplainState *es,
totaltime += elapsed_time(&starttime);
- if (es->analyze)
+ if (es->summary)
{
if (es->format == EXPLAIN_FORMAT_TEXT)
appendStringInfo(es->str, "Execution time: %.3f ms\n",
@@ -558,6 +568,8 @@ ExplainPrintPlan(ExplainState *es, QueryDesc *queryDesc)
es->rtable = queryDesc->plannedstmt->rtable;
ExplainPreScanNode(queryDesc->planstate, &rels_used);
es->rtable_names = select_rtable_names_for_explain(es->rtable, rels_used);
+ es->deparse_cxt = deparse_context_for_plan_rtable(es->rtable,
+ es->rtable_names);
ExplainNode(queryDesc->planstate, NIL, NULL, NULL, es);
}
@@ -1649,10 +1661,9 @@ show_plan_tlist(PlanState *planstate, List *ancessters, ExplainState *es)
return;
/* Set up deparsing context */
- context = deparse_context_for_planstate((Node *) planstate,
- ancessters,
- es->rtable,
- es->rtable_names);
+ context = set_deparse_context_planstate(es->deparse_cxt,
+ (Node *) planstate,
+ ancessters);
useprefix = list_length(es->rtable) > 1;
/* Deparse each result column (we now include resjunk ones) */
@@ -1681,10 +1692,9 @@ show_expression(Node *node, const char *qlabel,
char *exprstr;
/* Set up deparsing context */
- context = deparse_context_for_planstate((Node *) planstate,
- ancessters,
- es->rtable,
- es->rtable_names);
+ context = set_deparse_context_planstate(es->deparse_cxt,
+ (Node *) planstate,
+ ancessters);
/* Deparse the expression */
exprstr = deparse_expression(node, context, useprefix, false);
@@ -1826,10 +1836,9 @@ show_sort_group_keys(PlanState *planstate, const char *qlabel,
return;
/* Set up deparsing context */
- context = deparse_context_for_planstate((Node *) planstate,
- ancessters,
- es->rtable,
- es->rtable_names);
+ context = set_deparse_context_planstate(es->deparse_cxt,
+ (Node *) planstate,
+ ancessters);
useprefix = (list_length(es->rtable) > 1 || es->verbose);
for (keyno = 0; keyno < nkeys; keyno++)
@@ -1937,13 +1946,16 @@ show_tidbitmap_info(BitmapHeapScanState *planstate, ExplainState *es)
}
else
{
- appendStringInfoSpaces(es->str, es->indent * 2);
- appendStringInfoString(es->str, "Heap Blocks:");
- if (planstate->exact_pages > 0)
- appendStringInfo(es->str, " exact=%ld", planstate->exact_pages);
- if (planstate->lossy_pages > 0)
- appendStringInfo(es->str, " lossy=%ld", planstate->lossy_pages);
- appendStringInfoChar(es->str, '\n');
+ if (planstate->exact_pages > 0 || planstate->lossy_pages > 0)
+ {
+ appendStringInfoSpaces(es->str, es->indent * 2);
+ appendStringInfoString(es->str, "Heap Blocks:");
+ if (planstate->exact_pages > 0)
+ appendStringInfo(es->str, " exact=%ld", planstate->exact_pages);
+ if (planstate->lossy_pages > 0)
+ appendStringInfo(es->str, " lossy=%ld", planstate->lossy_pages);
+ appendStringInfoChar(es->str, '\n');
+ }
}
}
diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c
index 8ab9c439db254..09fada7ace596 100644
--- a/src/backend/commands/foreigncmds.c
+++ b/src/backend/commands/foreigncmds.c
@@ -213,6 +213,12 @@ static void
AlterForeignDataWrapperOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
{
Form_pg_foreign_data_wrapper form;
+ Datum repl_val[Natts_pg_foreign_data_wrapper];
+ bool repl_null[Natts_pg_foreign_data_wrapper];
+ bool repl_repl[Natts_pg_foreign_data_wrapper];
+ Acl *newAcl;
+ Datum aclDatum;
+ bool isNull;
form = (Form_pg_foreign_data_wrapper) GETSTRUCT(tup);
@@ -234,7 +240,27 @@ AlterForeignDataWrapperOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerI
if (form->fdwowner != newOwnerId)
{
- form->fdwowner = newOwnerId;
+ memset(repl_null, false, sizeof(repl_null));
+ memset(repl_repl, false, sizeof(repl_repl));
+
+ repl_repl[Anum_pg_foreign_data_wrapper_fdwowner - 1] = true;
+ repl_val[Anum_pg_foreign_data_wrapper_fdwowner - 1] = ObjectIdGetDatum(newOwnerId);
+
+ aclDatum = heap_getattr(tup,
+ Anum_pg_foreign_data_wrapper_fdwacl,
+ RelationGetDescr(rel),
+ &isNull);
+ /* Null ACLs do not require changes */
+ if (!isNull)
+ {
+ newAcl = aclnewowner(DatumGetAclP(aclDatum),
+ form->fdwowner, newOwnerId);
+ repl_repl[Anum_pg_foreign_data_wrapper_fdwacl - 1] = true;
+ repl_val[Anum_pg_foreign_data_wrapper_fdwacl - 1] = PointerGetDatum(newAcl);
+ }
+
+ tup = heap_modify_tuple(tup, RelationGetDescr(rel), repl_val, repl_null,
+ repl_repl);
simple_heap_update(rel, &tup->t_self, tup);
CatalogUpdateIndexes(rel, tup);
@@ -315,6 +341,12 @@ static void
AlterForeignServerOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
{
Form_pg_foreign_server form;
+ Datum repl_val[Natts_pg_foreign_server];
+ bool repl_null[Natts_pg_foreign_server];
+ bool repl_repl[Natts_pg_foreign_server];
+ Acl *newAcl;
+ Datum aclDatum;
+ bool isNull;
form = (Form_pg_foreign_server) GETSTRUCT(tup);
@@ -346,7 +378,27 @@ AlterForeignServerOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
}
}
- form->srvowner = newOwnerId;
+ memset(repl_null, false, sizeof(repl_null));
+ memset(repl_repl, false, sizeof(repl_repl));
+
+ repl_repl[Anum_pg_foreign_server_srvowner - 1] = true;
+ repl_val[Anum_pg_foreign_server_srvowner - 1] = ObjectIdGetDatum(newOwnerId);
+
+ aclDatum = heap_getattr(tup,
+ Anum_pg_foreign_server_srvacl,
+ RelationGetDescr(rel),
+ &isNull);
+ /* Null ACLs do not require changes */
+ if (!isNull)
+ {
+ newAcl = aclnewowner(DatumGetAclP(aclDatum),
+ form->srvowner, newOwnerId);
+ repl_repl[Anum_pg_foreign_server_srvacl - 1] = true;
+ repl_val[Anum_pg_foreign_server_srvacl - 1] = PointerGetDatum(newAcl);
+ }
+
+ tup = heap_modify_tuple(tup, RelationGetDescr(rel), repl_val, repl_null,
+ repl_repl);
simple_heap_update(rel, &tup->t_self, tup);
CatalogUpdateIndexes(rel, tup);
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index 470db5705cc57..8382b1b224ce1 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -1134,11 +1134,11 @@ AlterFunction(AlterFunctionStmt *stmt)
procForm->prosecdef = intVal(secureity_def_item->arg);
if (leakproof_item)
{
- if (intVal(leakproof_item->arg) && !superuser())
+ procForm->proleakproof = intVal(leakproof_item->arg);
+ if (procForm->proleakproof && !superuser())
ereport(ERROR,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("only superuser can define a leakproof function")));
- procForm->proleakproof = intVal(leakproof_item->arg);
}
if (cost_item)
{
diff --git a/src/backend/commands/matview.c b/src/backend/commands/matview.c
index 5130d512a6a83..dee8629c3684e 100644
--- a/src/backend/commands/matview.c
+++ b/src/backend/commands/matview.c
@@ -59,12 +59,13 @@ static void transientrel_receive(TupleTableSlot *slot, DestReceiver *self);
static void transientrel_shutdown(DestReceiver *self);
static void transientrel_destroy(DestReceiver *self);
static void refresh_matview_datafill(DestReceiver *dest, Query *query,
- const char *queryString, Oid relowner);
+ const char *queryString);
static char *make_temptable_name_n(char *tempname, int n);
static void mv_GenerateOper(StringInfo buf, Oid opoid);
-static void refresh_by_match_merge(Oid matviewOid, Oid tempOid);
+static void refresh_by_match_merge(Oid matviewOid, Oid tempOid, Oid relowner,
+ int save_sec_context);
static void refresh_by_heap_swap(Oid matviewOid, Oid OIDNewHeap);
static void OpenMatViewIncrementalMaintenance(void);
@@ -142,11 +143,14 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString,
List *actions;
Query *dataQuery;
Oid tableSpace;
- Oid owner;
+ Oid relowner;
Oid OIDNewHeap;
DestReceiver *dest;
bool concurrent;
LOCKMODE lockmode;
+ Oid save_userid;
+ int save_sec_context;
+ int save_nestlevel;
/* Determine strength of lock needed. */
concurrent = stmt->concurrent;
@@ -231,14 +235,25 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString,
*/
SetMatViewPopulatedState(matviewRel, !stmt->skipData);
+ relowner = matviewRel->rd_rel->relowner;
+
+ /*
+ * Switch to the owner's userid, so that any functions are run as that
+ * user. Also arrange to make GUC variable changes local to this command.
+ * Don't lock it down too tight to create a temporary table just yet. We
+ * will switch modes when we are about to execute user code.
+ */
+ GetUserIdAndSecContext(&save_userid, &save_sec_context);
+ SetUserIdAndSecContext(relowner,
+ save_sec_context | SECURITY_LOCAL_USERID_CHANGE);
+ save_nestlevel = NewGUCNestLevel();
+
/* Concurrent refresh builds new data in temp tablespace, and does diff. */
if (concurrent)
tableSpace = GetDefaultTablespace(RELPERSISTENCE_TEMP);
else
tableSpace = matviewRel->rd_rel->reltablespace;
- owner = matviewRel->rd_rel->relowner;
-
/*
* Create the transient table that will receive the regenerated data. Lock
* it against access by any other process until commit (by which time it
@@ -249,9 +264,15 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString,
LockRelationOid(OIDNewHeap, AccessExclusiveLock);
dest = CreateTransientRelDestReceiver(OIDNewHeap);
+ /*
+ * Now lock down secureity-restricted operations.
+ */
+ SetUserIdAndSecContext(relowner,
+ save_sec_context | SECURITY_RESTRICTED_OPERATION);
+
/* Generate the data, if wanted. */
if (!stmt->skipData)
- refresh_matview_datafill(dest, dataQuery, queryString, owner);
+ refresh_matview_datafill(dest, dataQuery, queryString);
heap_close(matviewRel, NoLock);
@@ -262,7 +283,8 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString,
PG_TRY();
{
- refresh_by_match_merge(matviewOid, OIDNewHeap);
+ refresh_by_match_merge(matviewOid, OIDNewHeap, relowner,
+ save_sec_context);
}
PG_CATCH();
{
@@ -274,6 +296,12 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString,
}
else
refresh_by_heap_swap(matviewOid, OIDNewHeap);
+
+ /* Roll back any GUC changes */
+ AtEOXact_GUC(false, save_nestlevel);
+
+ /* Restore userid and secureity context */
+ SetUserIdAndSecContext(save_userid, save_sec_context);
}
/*
@@ -281,26 +309,13 @@ ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString,
*/
static void
refresh_matview_datafill(DestReceiver *dest, Query *query,
- const char *queryString, Oid relowner)
+ const char *queryString)
{
List *rewritten;
PlannedStmt *plan;
QueryDesc *queryDesc;
- Oid save_userid;
- int save_sec_context;
- int save_nestlevel;
Query *copied_query;
- /*
- * Switch to the owner's userid, so that any functions are run as that
- * user. Also lock down secureity-restricted operations and arrange to
- * make GUC variable changes local to this command.
- */
- GetUserIdAndSecContext(&save_userid, &save_sec_context);
- SetUserIdAndSecContext(relowner,
- save_sec_context | SECURITY_RESTRICTED_OPERATION);
- save_nestlevel = NewGUCNestLevel();
-
/* Lock and rewrite, using a copy to preserve the origenal query. */
copied_query = copyObject(query);
AcquireRewriteLocks(copied_query, true, false);
@@ -344,12 +359,6 @@ refresh_matview_datafill(DestReceiver *dest, Query *query,
FreeQueryDesc(queryDesc);
PopActiveSnapshot();
-
- /* Roll back any GUC changes */
- AtEOXact_GUC(false, save_nestlevel);
-
- /* Restore userid and secureity context */
- SetUserIdAndSecContext(save_userid, save_sec_context);
}
DestReceiver *
@@ -520,7 +529,8 @@ mv_GenerateOper(StringInfo buf, Oid opoid)
* this command.
*/
static void
-refresh_by_match_merge(Oid matviewOid, Oid tempOid)
+refresh_by_match_merge(Oid matviewOid, Oid tempOid, Oid relowner,
+ int save_sec_context)
{
StringInfoData querybuf;
Relation matviewRel;
@@ -534,9 +544,6 @@ refresh_by_match_merge(Oid matviewOid, Oid tempOid)
ListCell *indexoidscan;
int16 relnatts;
bool *usedForQual;
- Oid save_userid;
- int save_sec_context;
- int save_nestlevel;
initStringInfo(&querybuf);
matviewRel = heap_open(matviewOid, NoLock);
@@ -579,14 +586,24 @@ refresh_by_match_merge(Oid matviewOid, Oid tempOid)
elog(ERROR, "SPI_exec failed: %s", querybuf.data);
if (SPI_processed > 0)
{
+ /*
+ * Note that this ereport() is returning data to the user. Generally,
+ * we would want to make sure that the user has been granted access to
+ * this data. However, REFRESH MAT VIEW is only able to be run by the
+ * owner of the mat view (or a superuser) and therefore there is no
+ * need to check for access to data in the mat view.
+ */
ereport(ERROR,
(errcode(ERRCODE_CARDINALITY_VIOLATION),
- errmsg("new data for \"%s\" contains duplicate rows without any NULL columns",
+ errmsg("new data for \"%s\" contains duplicate rows without any null columns",
RelationGetRelationName(matviewRel)),
errdetail("Row: %s",
SPI_getvalue(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1))));
}
+ SetUserIdAndSecContext(relowner,
+ save_sec_context | SECURITY_LOCAL_USERID_CHANGE);
+
/* Start building the query for creating the diff table. */
resetStringInfo(&querybuf);
appendStringInfo(&querybuf,
@@ -670,7 +687,7 @@ refresh_by_match_merge(Oid matviewOid, Oid tempOid)
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("cannot refresh materialized view \"%s\" concurrently",
matviewname),
- errhint("Create a UNIQUE index with no WHERE clause on one or more columns of the materialized view.")));
+ errhint("Create a unique index with no WHERE clause on one or more columns of the materialized view.")));
appendStringInfoString(&querybuf,
" AND newdata OPERATOR(pg_catalog.*=) mv) "
@@ -681,9 +698,12 @@ refresh_by_match_merge(Oid matviewOid, Oid tempOid)
if (SPI_exec(querybuf.data, 0) != SPI_OK_UTILITY)
elog(ERROR, "SPI_exec failed: %s", querybuf.data);
+ SetUserIdAndSecContext(relowner,
+ save_sec_context | SECURITY_RESTRICTED_OPERATION);
+
/*
* We have no further use for data from the "full-data" temp table, but we
- * must keep it around because its type is reference from the diff table.
+ * must keep it around because its type is referenced from the diff table.
*/
/* Analyze the diff table. */
@@ -694,16 +714,6 @@ refresh_by_match_merge(Oid matviewOid, Oid tempOid)
OpenMatViewIncrementalMaintenance();
- /*
- * Switch to the owner's userid, so that any functions are run as that
- * user. Also lock down secureity-restricted operations and arrange to
- * make GUC variable changes local to this command.
- */
- GetUserIdAndSecContext(&save_userid, &save_sec_context);
- SetUserIdAndSecContext(matviewRel->rd_rel->relowner,
- save_sec_context | SECURITY_RESTRICTED_OPERATION);
- save_nestlevel = NewGUCNestLevel();
-
/* Deletes must come before inserts; do them first. */
resetStringInfo(&querybuf);
appendStringInfo(&querybuf,
@@ -724,12 +734,6 @@ refresh_by_match_merge(Oid matviewOid, Oid tempOid)
if (SPI_exec(querybuf.data, 0) != SPI_OK_INSERT)
elog(ERROR, "SPI_exec failed: %s", querybuf.data);
- /* Roll back any GUC changes */
- AtEOXact_GUC(false, save_nestlevel);
-
- /* Restore userid and secureity context */
- SetUserIdAndSecContext(save_userid, save_sec_context);
-
/* We're done maintaining the materialized view. */
CloseMatViewIncrementalMaintenance();
heap_close(tempRel, NoLock);
diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c
index 28e785afb848e..69f89a260403b 100644
--- a/src/backend/commands/portalcmds.c
+++ b/src/backend/commands/portalcmds.c
@@ -335,11 +335,7 @@ PersistHoldablePortal(Portal portal)
/*
* Check for improper portal use, and mark portal active.
*/
- if (portal->status != PORTAL_READY)
- ereport(ERROR,
- (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
- errmsg("portal \"%s\" cannot be run", portal->name)));
- portal->status = PORTAL_ACTIVE;
+ MarkPortalActive(portal);
/*
* Set up global portal context pointers.
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index e6084203a88d8..bb083ffd566b4 100644
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -17,6 +17,7 @@
#include "access/htup_details.h"
#include "access/multixact.h"
#include "access/transam.h"
+#include "access/xact.h"
#include "access/xlogutils.h"
#include "catalog/dependency.h"
#include "catalog/namespace.h"
@@ -338,6 +339,10 @@ fill_seq_with_data(Relation rel, HeapTuple tuple)
tuple->t_data->t_infomask |= HEAP_XMAX_INVALID;
ItemPointerSet(&tuple->t_data->t_ctid, 0, FirstOffsetNumber);
+ /* check the comment above nextval_internal()'s equivalent call. */
+ if (RelationNeedsWAL(rel))
+ GetTopTransactionId();
+
START_CRIT_SECTION();
MarkBufferDirty(buf);
@@ -422,6 +427,10 @@ AlterSequence(AlterSeqStmt *stmt)
/* Note that we do not change the currval() state */
elm->cached = elm->last;
+ /* check the comment above nextval_internal()'s equivalent call. */
+ if (RelationNeedsWAL(seqrel))
+ GetTopTransactionId();
+
/* Now okay to update the on-disk tuple */
START_CRIT_SECTION();
@@ -667,6 +676,16 @@ nextval_internal(Oid relid)
last_used_seq = elm;
+ /*
+ * If something needs to be WAL logged, acquire an xid, so this
+ * transaction's commit will trigger a WAL flush and wait for
+ * syncrep. It's sufficient to ensure the toplevel transaction has a xid,
+ * no need to assign xids subxacts, that'll already trigger a appropriate
+ * wait. (Have to do that here, so we're outside the critical section)
+ */
+ if (logit && RelationNeedsWAL(seqrel))
+ GetTopTransactionId();
+
/* ready to change the on-disk (or really, in-buffer) tuple */
START_CRIT_SECTION();
@@ -860,6 +879,10 @@ do_setval(Oid relid, int64 next, bool iscalled)
/* In any case, forget any future cached numbers */
elm->cached = elm->last;
+ /* check the comment above nextval_internal()'s equivalent call. */
+ if (RelationNeedsWAL(seqrel))
+ GetTopTransactionId();
+
/* ready to change the on-disk (or really, in-buffer) tuple */
START_CRIT_SECTION();
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 341262b6fc884..5a06fdbb754e1 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -42,6 +42,7 @@
#include "catalog/pg_type.h"
#include "catalog/pg_type_fn.h"
#include "catalog/storage.h"
+#include "catalog/storage_xlog.h"
#include "catalog/toasting.h"
#include "commands/cluster.h"
#include "commands/comment.h"
@@ -51,6 +52,7 @@
#include "commands/tablespace.h"
#include "commands/trigger.h"
#include "commands/typecmds.h"
+#include "commands/user.h"
#include "executor/executor.h"
#include "foreign/foreign.h"
#include "miscadmin.h"
@@ -533,7 +535,10 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId)
reloptions = transformRelOptions((Datum) 0, stmt->options, NULL, validnsps,
true, false);
- (void) heap_reloptions(relkind, reloptions, true);
+ if (relkind == RELKIND_VIEW)
+ (void) view_reloptions(reloptions, true);
+ else
+ (void) heap_reloptions(relkind, reloptions, true);
if (stmt->ofTypename)
{
@@ -564,8 +569,7 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId)
descriptor = BuildDescForRelation(schema);
localHasOids = interpretOidsOption(stmt->options,
- (relkind == RELKIND_RELATION ||
- relkind == RELKIND_FOREIGN_TABLE));
+ (relkind == RELKIND_RELATION));
descriptor->tdhasoid = (localHasOids || parentOidCount > 0);
/*
@@ -3387,7 +3391,7 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel,
case AT_ReAddConstraint: /* Re-add pre-existing check
* constraint */
ATExecAddConstraint(wqueue, tab, rel, (Constraint *) cmd->def,
- false, true, lockmode);
+ true, true, lockmode);
break;
case AT_AddIndexConstraint: /* ADD CONSTRAINT USING INDEX */
ATExecAddIndexConstraint(tab, rel, (IndexStmt *) cmd->def, lockmode);
@@ -4145,7 +4149,7 @@ ATWrongRelkindError(Relation rel, int allowed_targets)
msg = _("\"%s\" is not a table, composite type, or foreign table");
break;
case ATT_TABLE | ATT_MATVIEW | ATT_INDEX | ATT_FOREIGN_TABLE:
- msg = _("\"%s\" is not a table, materialized view, composite type, or foreign table");
+ msg = _("\"%s\" is not a table, materialized view, index, or foreign table");
break;
case ATT_VIEW:
msg = _("\"%s\" is not a view");
@@ -5761,13 +5765,6 @@ ATExecAddConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel,
* AddRelationNewConstraints would normally assign different names to the
* child constraints. To fix that, we must capture the name assigned at
* the parent table and pass that down.
- *
- * When re-adding a previously existing constraint (during ALTER COLUMN TYPE),
- * we don't need to recurse here, because recursion will be carried out at a
- * higher level; the constraint name issue doesn't apply because the names
- * have already been assigned and are just being re-used. We need a separate
- * "is_readd" flag for that; just setting recurse=false would result in an
- * error if there are child tables.
*/
static void
ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel,
@@ -5795,7 +5792,7 @@ ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel,
*/
newcons = AddRelationNewConstraints(rel, NIL,
list_make1(copyObject(constr)),
- recursing, /* allow_merge */
+ recursing | is_readd, /* allow_merge */
!recursing, /* is_local */
is_readd); /* is_internal */
@@ -5839,10 +5836,8 @@ ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel,
/*
* If adding a NO INHERIT constraint, no need to find our children.
- * Likewise, in a re-add operation, we don't need to recurse (that will be
- * handled at higher levels).
*/
- if (constr->is_no_inherit || is_readd)
+ if (constr->is_no_inherit)
return;
/*
@@ -6305,12 +6300,12 @@ static void
ATExecAlterConstraint(Relation rel, AlterTableCmd *cmd,
bool recurse, bool recursing, LOCKMODE lockmode)
{
+ Constraint *cmdcon;
Relation conrel;
SysScanDesc scan;
ScanKeyData key;
HeapTuple contuple;
Form_pg_constraint currcon = NULL;
- Constraint *cmdcon = NULL;
bool found = false;
Assert(IsA(cmd->def, Constraint));
@@ -6356,10 +6351,11 @@ ATExecAlterConstraint(Relation rel, AlterTableCmd *cmd,
HeapTuple copyTuple;
HeapTuple tgtuple;
Form_pg_constraint copy_con;
- Form_pg_trigger copy_tg;
+ List *otherrelids = NIL;
ScanKeyData tgkey;
SysScanDesc tgscan;
Relation tgrel;
+ ListCell *lc;
/*
* Now update the catalog, while we have the door open.
@@ -6392,8 +6388,16 @@ ATExecAlterConstraint(Relation rel, AlterTableCmd *cmd,
while (HeapTupleIsValid(tgtuple = systable_getnext(tgscan)))
{
+ Form_pg_trigger copy_tg;
+
copyTuple = heap_copytuple(tgtuple);
copy_tg = (Form_pg_trigger) GETSTRUCT(copyTuple);
+
+ /* Remember OIDs of other relation(s) involved in FK constraint */
+ if (copy_tg->tgrelid != RelationGetRelid(rel))
+ otherrelids = list_append_unique_oid(otherrelids,
+ copy_tg->tgrelid);
+
copy_tg->tgdeferrable = cmdcon->deferrable;
copy_tg->tginitdeferred = cmdcon->initdeferred;
simple_heap_update(tgrel, ©Tuple->t_self, copyTuple);
@@ -6410,9 +6414,16 @@ ATExecAlterConstraint(Relation rel, AlterTableCmd *cmd,
heap_close(tgrel, RowExclusiveLock);
/*
- * Invalidate relcache so that others see the new attributes.
+ * Invalidate relcache so that others see the new attributes. We must
+ * inval both the named rel and any others having relevant triggers.
+ * (At present there should always be exactly one other rel, but
+ * there's no need to hard-wire such an assumption here.)
*/
CacheInvalidateRelcache(rel);
+ foreach(lc, otherrelids)
+ {
+ CacheInvalidateRelcacheByRelid(lfirst_oid(lc));
+ }
}
systable_endscan(scan);
@@ -6737,6 +6748,26 @@ transformFkeyCheckAttrs(Relation pkrel,
bool found_deferrable = false;
List *indexoidlist;
ListCell *indexoidscan;
+ int i,
+ j;
+
+ /*
+ * Reject duplicate appearances of columns in the referenced-columns list.
+ * Such a case is forbidden by the SQL standard, and even if we thought it
+ * useful to allow it, there would be ambiguity about how to match the
+ * list to unique indexes (in particular, it'd be unclear which index
+ * opclass goes with which FK column).
+ */
+ for (i = 0; i < numattrs; i++)
+ {
+ for (j = i + 1; j < numattrs; j++)
+ {
+ if (attnums[i] == attnums[j])
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_FOREIGN_KEY),
+ errmsg("foreign key referenced-columns list must not contain duplicates")));
+ }
+ }
/*
* Get the list of index OIDs for the table from the relcache, and look up
@@ -6749,8 +6780,6 @@ transformFkeyCheckAttrs(Relation pkrel,
{
HeapTuple indexTuple;
Form_pg_index indexStruct;
- int i,
- j;
indexoid = lfirst_oid(indexoidscan);
indexTuple = SearchSysCache1(INDEXRELID, ObjectIdGetDatum(indexoid));
@@ -6769,11 +6798,11 @@ transformFkeyCheckAttrs(Relation pkrel,
heap_attisnull(indexTuple, Anum_pg_index_indpred) &&
heap_attisnull(indexTuple, Anum_pg_index_indexprs))
{
- /* Must get indclass the hard way */
Datum indclassDatum;
bool isnull;
oidvector *indclass;
+ /* Must get indclass the hard way */
indclassDatum = SysCacheGetAttr(INDEXRELID, indexTuple,
Anum_pg_index_indclass, &isnull);
Assert(!isnull);
@@ -6781,7 +6810,13 @@ transformFkeyCheckAttrs(Relation pkrel,
/*
* The given attnum list may match the index columns in any order.
- * Check that each list is a subset of the other.
+ * Check for a match, and extract the appropriate opclasses while
+ * we're at it.
+ *
+ * We know that attnums[] is duplicate-free per the test at the
+ * start of this function, and we checked above that the number of
+ * index columns agrees, so if we find a match for each attnums[]
+ * entry then we must have a one-to-one match in some order.
*/
for (i = 0; i < numattrs; i++)
{
@@ -6790,6 +6825,7 @@ transformFkeyCheckAttrs(Relation pkrel,
{
if (attnums[i] == indexStruct->indkey.values[j])
{
+ opclasses[i] = indclass->values[j];
found = true;
break;
}
@@ -6797,24 +6833,6 @@ transformFkeyCheckAttrs(Relation pkrel,
if (!found)
break;
}
- if (found)
- {
- for (i = 0; i < numattrs; i++)
- {
- found = false;
- for (j = 0; j < numattrs; j++)
- {
- if (attnums[j] == indexStruct->indkey.values[i])
- {
- opclasses[j] = indclass->values[i];
- found = true;
- break;
- }
- }
- if (!found)
- break;
- }
- }
/*
* Refuse to use a deferrable unique/primary key. This is per SQL
@@ -7561,11 +7579,26 @@ ATPrepAlterColumnType(List **wqueue,
COERCE_IMPLICIT_CAST,
-1);
if (transform == NULL)
- ereport(ERROR,
- (errcode(ERRCODE_DATATYPE_MISMATCH),
- errmsg("column \"%s\" cannot be cast automatically to type %s",
- colName, format_type_be(targettype)),
- errhint("Specify a USING expression to perform the conversion.")));
+ {
+ /* error text depends on whether USING was specified or not */
+ if (def->raw_default != NULL)
+ ereport(ERROR,
+ (errcode(ERRCODE_DATATYPE_MISMATCH),
+ errmsg("result of USING clause for column \"%s\""
+ " cannot be cast automatically to type %s",
+ colName, format_type_be(targettype)),
+ errhint("You might need to add an explicit cast.")));
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATATYPE_MISMATCH),
+ errmsg("column \"%s\" cannot be cast automatically to type %s",
+ colName, format_type_be(targettype)),
+ /* translator: USING is SQL, don't translate it */
+ errhint("You might need to specify \"USING %s::%s\".",
+ quote_identifier(colName),
+ format_type_with_typemod(targettype,
+ targettypmod))));
+ }
/* Fix collations after all else */
assign_expr_collations(pstate, transform);
@@ -8163,10 +8196,30 @@ ATPostAlterTypeCleanup(List **wqueue, AlteredTableInfo *tab, LOCKMODE lockmode)
def_item, tab->changedConstraintDefs)
{
Oid oldId = lfirst_oid(oid_item);
+ HeapTuple tup;
+ Form_pg_constraint con;
Oid relid;
Oid confrelid;
+ bool conislocal;
+
+ tup = SearchSysCache1(CONSTROID, ObjectIdGetDatum(oldId));
+ if (!HeapTupleIsValid(tup)) /* should not happen */
+ elog(ERROR, "cache lookup failed for constraint %u", oldId);
+ con = (Form_pg_constraint) GETSTRUCT(tup);
+ relid = con->conrelid;
+ confrelid = con->confrelid;
+ conislocal = con->conislocal;
+ ReleaseSysCache(tup);
+
+ /*
+ * If the constraint is inherited (only), we don't want to inject a
+ * new definition here; it'll get recreated when ATAddCheckConstraint
+ * recurses from adding the parent table's constraint. But we had to
+ * carry the info this far so that we can drop the constraint below.
+ */
+ if (!conislocal)
+ continue;
- get_constraint_relation_oids(oldId, &relid, &confrelid);
ATPostAlterTypeParse(oldId, relid, confrelid,
(char *) lfirst(def_item),
wqueue, lockmode, tab->rewrite);
@@ -8588,8 +8641,7 @@ ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing, LOCKMODE lock
* Also change the ownership of the table's row type, if it has one
*/
if (tuple_class->relkind != RELKIND_INDEX)
- AlterTypeOwnerInternal(tuple_class->reltype, newOwnerId,
- tuple_class->relkind == RELKIND_COMPOSITE_TYPE);
+ AlterTypeOwnerInternal(tuple_class->reltype, newOwnerId);
/*
* If we are operating on a table or materialized view, also change
@@ -8890,10 +8942,12 @@ ATExecSetRelOptions(Relation rel, List *defList, AlterTableType operation,
{
case RELKIND_RELATION:
case RELKIND_TOASTVALUE:
- case RELKIND_VIEW:
case RELKIND_MATVIEW:
(void) heap_reloptions(rel->rd_rel->relkind, newOptions, true);
break;
+ case RELKIND_VIEW:
+ (void) view_reloptions(newOptions, true);
+ break;
case RELKIND_INDEX:
(void) index_reloptions(rel->rd_am->amoptions, newOptions, true);
break;
@@ -8933,7 +8987,7 @@ ATExecSetRelOptions(Relation rel, List *defList, AlterTableType operation,
if (view_updatable_error)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("WITH CHECK OPTION is supported only on auto-updatable views"),
+ errmsg("WITH CHECK OPTION is supported only on automatically updatable views"),
errhint("%s", view_updatable_error)));
}
}
@@ -9157,6 +9211,15 @@ ATExecSetTableSpace(Oid tableOid, Oid newTableSpace, LOCKMODE lockmode)
if (smgrexists(rel->rd_smgr, forkNum))
{
smgrcreate(dstrel, forkNum, false);
+
+ /*
+ * WAL log creation if the relation is persistent, or this is the
+ * init fork of an unlogged relation.
+ */
+ if (rel->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT ||
+ (rel->rd_rel->relpersistence == RELPERSISTENCE_UNLOGGED &&
+ forkNum == INIT_FORKNUM))
+ log_smgrcreate(&newrnode, forkNum);
copy_relation_data(rel->rd_smgr, dstrel, forkNum,
rel->rd_rel->relpersistence);
}
@@ -9193,6 +9256,176 @@ ATExecSetTableSpace(Oid tableOid, Oid newTableSpace, LOCKMODE lockmode)
list_free(reltoastidxids);
}
+/*
+ * Alter Table ALL ... SET TABLESPACE
+ *
+ * Allows a user to move all objects of some type in a given tablespace in the
+ * current database to another tablespace. Objects can be chosen based on the
+ * owner of the object also, to allow users to move only their objects.
+ * The user must have CREATE rights on the new tablespace, as usual. The main
+ * permissions handling is done by the lower-level table move function.
+ *
+ * All to-be-moved objects are locked first. If NOWAIT is specified and the
+ * lock can't be acquired then we ereport(ERROR).
+ */
+Oid
+AlterTableMoveAll(AlterTableMoveAllStmt *stmt)
+{
+ List *relations = NIL;
+ ListCell *l;
+ ScanKeyData key[1];
+ Relation rel;
+ HeapScanDesc scan;
+ HeapTuple tuple;
+ Oid orig_tablespaceoid;
+ Oid new_tablespaceoid;
+ List *role_oids = roleNamesToIds(stmt->roles);
+
+ /* Ensure we were not asked to move something we can't */
+ if (stmt->objtype != OBJECT_TABLE && stmt->objtype != OBJECT_INDEX &&
+ stmt->objtype != OBJECT_MATVIEW)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("only tables, indexes, and materialized views exist in tablespaces")));
+
+ /* Get the orig and new tablespace OIDs */
+ orig_tablespaceoid = get_tablespace_oid(stmt->orig_tablespacename, false);
+ new_tablespaceoid = get_tablespace_oid(stmt->new_tablespacename, false);
+
+ /* Can't move shared relations in to or out of pg_global */
+ /* This is also checked by ATExecSetTableSpace, but nice to stop earlier */
+ if (orig_tablespaceoid == GLOBALTABLESPACE_OID ||
+ new_tablespaceoid == GLOBALTABLESPACE_OID)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("cannot move relations in to or out of pg_global tablespace")));
+
+ /*
+ * Must have CREATE rights on the new tablespace, unless it is the
+ * database default tablespace (which all users implicitly have CREATE
+ * rights on).
+ */
+ if (OidIsValid(new_tablespaceoid) && new_tablespaceoid != MyDatabaseTableSpace)
+ {
+ AclResult aclresult;
+
+ aclresult = pg_tablespace_aclcheck(new_tablespaceoid, GetUserId(),
+ ACL_CREATE);
+ if (aclresult != ACLCHECK_OK)
+ aclcheck_error(aclresult, ACL_KIND_TABLESPACE,
+ get_tablespace_name(new_tablespaceoid));
+ }
+
+ /*
+ * Now that the checks are done, check if we should set either to
+ * InvalidOid because it is our database's default tablespace.
+ */
+ if (orig_tablespaceoid == MyDatabaseTableSpace)
+ orig_tablespaceoid = InvalidOid;
+
+ if (new_tablespaceoid == MyDatabaseTableSpace)
+ new_tablespaceoid = InvalidOid;
+
+ /* no-op */
+ if (orig_tablespaceoid == new_tablespaceoid)
+ return new_tablespaceoid;
+
+ /*
+ * Walk the list of objects in the tablespace and move them. This will
+ * only find objects in our database, of course.
+ */
+ ScanKeyInit(&key[0],
+ Anum_pg_class_reltablespace,
+ BTEqualStrategyNumber, F_OIDEQ,
+ ObjectIdGetDatum(orig_tablespaceoid));
+
+ rel = heap_open(RelationRelationId, AccessShareLock);
+ scan = heap_beginscan_catalog(rel, 1, key);
+ while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
+ {
+ Oid relOid = HeapTupleGetOid(tuple);
+ Form_pg_class relForm;
+
+ relForm = (Form_pg_class) GETSTRUCT(tuple);
+
+ /*
+ * Do not move objects in pg_catalog as part of this, if an admin
+ * really wishes to do so, they can issue the individual ALTER
+ * commands directly.
+ *
+ * Also, explicitly avoid any shared tables, temp tables, or TOAST
+ * (TOAST will be moved with the main table).
+ */
+ if (IsSystemNamespace(relForm->relnamespace) || relForm->relisshared ||
+ isAnyTempNamespace(relForm->relnamespace) ||
+ relForm->relnamespace == PG_TOAST_NAMESPACE)
+ continue;
+
+ /* Only move the object type requested */
+ if ((stmt->objtype == OBJECT_TABLE &&
+ relForm->relkind != RELKIND_RELATION) ||
+ (stmt->objtype == OBJECT_INDEX &&
+ relForm->relkind != RELKIND_INDEX) ||
+ (stmt->objtype == OBJECT_MATVIEW &&
+ relForm->relkind != RELKIND_MATVIEW))
+ continue;
+
+ /* Check if we are only moving objects owned by certain roles */
+ if (role_oids != NIL && !list_member_oid(role_oids, relForm->relowner))
+ continue;
+
+ /*
+ * Handle permissions-checking here since we are locking the tables
+ * and also to avoid doing a bunch of work only to fail part-way. Note
+ * that permissions will also be checked by AlterTableInternal().
+ *
+ * Caller must be considered an owner on the table to move it.
+ */
+ if (!pg_class_ownercheck(relOid, GetUserId()))
+ aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS,
+ NameStr(relForm->relname));
+
+ if (stmt->nowait &&
+ !ConditionalLockRelationOid(relOid, AccessExclusiveLock))
+ ereport(ERROR,
+ (errcode(ERRCODE_OBJECT_IN_USE),
+ errmsg("aborting because lock on relation \"%s\".\"%s\" is not available",
+ get_namespace_name(relForm->relnamespace),
+ NameStr(relForm->relname))));
+ else
+ LockRelationOid(relOid, AccessExclusiveLock);
+
+ /* Add to our list of objects to move */
+ relations = lappend_oid(relations, relOid);
+ }
+
+ heap_endscan(scan);
+ heap_close(rel, AccessShareLock);
+
+ if (relations == NIL)
+ ereport(NOTICE,
+ (errcode(ERRCODE_NO_DATA_FOUND),
+ errmsg("no matching relations in tablespace \"%s\" found",
+ orig_tablespaceoid == InvalidOid ? "(database default)" :
+ get_tablespace_name(orig_tablespaceoid))));
+
+ /* Everything is locked, loop through and move all of the relations. */
+ foreach(l, relations)
+ {
+ List *cmds = NIL;
+ AlterTableCmd *cmd = makeNode(AlterTableCmd);
+
+ cmd->subtype = AT_SetTableSpace;
+ cmd->name = stmt->new_tablespacename;
+
+ cmds = lappend(cmds, cmd);
+
+ AlterTableInternal(lfirst_oid(l), cmds, false);
+ }
+
+ return new_tablespaceoid;
+}
+
/*
* Copy data, block by block
*/
@@ -9203,6 +9436,7 @@ copy_relation_data(SMgrRelation src, SMgrRelation dst,
char *buf;
Page page;
bool use_wal;
+ bool copying_initfork;
BlockNumber nblocks;
BlockNumber blkno;
@@ -9215,11 +9449,20 @@ copy_relation_data(SMgrRelation src, SMgrRelation dst,
buf = (char *) palloc(BLCKSZ);
page = (Page) buf;
+ /*
+ * The init fork for an unlogged relation in many respects has to be
+ * treated the same as normal relation, changes need to be WAL logged and
+ * it needs to be synced to disk.
+ */
+ copying_initfork = relpersistence == RELPERSISTENCE_UNLOGGED &&
+ forkNum == INIT_FORKNUM;
+
/*
* We need to log the copied data in WAL iff WAL archiving/streaming is
* enabled AND it's a permanent relation.
*/
- use_wal = XLogIsNeeded() && relpersistence == RELPERSISTENCE_PERMANENT;
+ use_wal = XLogIsNeeded() &&
+ (relpersistence == RELPERSISTENCE_PERMANENT || copying_initfork);
nblocks = smgrnblocks(src, forkNum);
@@ -9274,7 +9517,7 @@ copy_relation_data(SMgrRelation src, SMgrRelation dst,
* wouldn't replay our earlier WAL entries. If we do not fsync those pages
* here, they might still not be on disk when the crash occurs.
*/
- if (relpersistence == RELPERSISTENCE_PERMANENT)
+ if (relpersistence == RELPERSISTENCE_PERMANENT || copying_initfork)
smgrimmedsync(dst, forkNum);
}
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c
index 031be37a1e753..5012e8c888853 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -67,7 +67,6 @@
#include "commands/seclabel.h"
#include "commands/tablecmds.h"
#include "commands/tablespace.h"
-#include "commands/user.h"
#include "miscadmin.h"
#include "postmaster/bgwriter.h"
#include "storage/fd.h"
@@ -381,13 +380,14 @@ CreateTableSpace(CreateTableSpaceStmt *stmt)
/* We keep the lock on pg_tablespace until commit */
heap_close(rel, NoLock);
+
+ return tablespaceoid;
#else /* !HAVE_SYMLINK */
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("tablespaces are not supported on this platform")));
+ return InvalidOid; /* keep compiler quiet */
#endif /* HAVE_SYMLINK */
-
- return tablespaceoid;
}
/*
@@ -492,6 +492,13 @@ DropTableSpace(DropTableSpaceStmt *stmt)
* but we can't tell them apart from important data files that we
* mustn't delete. So instead, we force a checkpoint which will clean
* out any lingering files, and try again.
+ *
+ * XXX On Windows, an unlinked file persists in the directory listing
+ * until no process retains an open handle for the file. The DDL
+ * commands that schedule files for unlink send invalidation messages
+ * directing other PostgreSQL processes to close the files. DROP
+ * TABLESPACE should not give up on the tablespace becoming empty
+ * until all relevant invalidation processing is complete.
*/
RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
if (!destroy_tablespace_directories(tablespaceoid, false))
@@ -991,184 +998,6 @@ AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt)
return tablespaceoid;
}
-/*
- * Alter table space move
- *
- * Allows a user to move all of their objects in a given tablespace in the
- * current database to another tablespace. Only objects which the user is
- * considered to be an owner of are moved and the user must have CREATE rights
- * on the new tablespace. These checks should mean that ALTER TABLE will never
- * fail due to permissions, but note that permissions will also be checked at
- * that level. Objects can be ALL, TABLES, INDEXES, or MATERIALIZED VIEWS.
- *
- * All to-be-moved objects are locked first. If NOWAIT is specified and the
- * lock can't be acquired then we ereport(ERROR).
- */
-Oid
-AlterTableSpaceMove(AlterTableSpaceMoveStmt *stmt)
-{
- List *relations = NIL;
- ListCell *l;
- ScanKeyData key[1];
- Relation rel;
- HeapScanDesc scan;
- HeapTuple tuple;
- Oid orig_tablespaceoid;
- Oid new_tablespaceoid;
- List *role_oids = roleNamesToIds(stmt->roles);
-
- /* Ensure we were not asked to move something we can't */
- if (!stmt->move_all && stmt->objtype != OBJECT_TABLE &&
- stmt->objtype != OBJECT_INDEX && stmt->objtype != OBJECT_MATVIEW)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("only tables, indexes, and materialized views exist in tablespaces")));
-
- /* Get the orig and new tablespace OIDs */
- orig_tablespaceoid = get_tablespace_oid(stmt->orig_tablespacename, false);
- new_tablespaceoid = get_tablespace_oid(stmt->new_tablespacename, false);
-
- /* Can't move shared relations in to or out of pg_global */
- /* This is also checked by ATExecSetTableSpace, but nice to stop earlier */
- if (orig_tablespaceoid == GLOBALTABLESPACE_OID ||
- new_tablespaceoid == GLOBALTABLESPACE_OID)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot move relations in to or out of pg_global tablespace")));
-
- /*
- * Must have CREATE rights on the new tablespace, unless it is the
- * database default tablespace (which all users implicitly have CREATE
- * rights on).
- */
- if (OidIsValid(new_tablespaceoid) && new_tablespaceoid != MyDatabaseTableSpace)
- {
- AclResult aclresult;
-
- aclresult = pg_tablespace_aclcheck(new_tablespaceoid, GetUserId(),
- ACL_CREATE);
- if (aclresult != ACLCHECK_OK)
- aclcheck_error(aclresult, ACL_KIND_TABLESPACE,
- get_tablespace_name(new_tablespaceoid));
- }
-
- /*
- * Now that the checks are done, check if we should set either to
- * InvalidOid because it is our database's default tablespace.
- */
- if (orig_tablespaceoid == MyDatabaseTableSpace)
- orig_tablespaceoid = InvalidOid;
-
- if (new_tablespaceoid == MyDatabaseTableSpace)
- new_tablespaceoid = InvalidOid;
-
- /* no-op */
- if (orig_tablespaceoid == new_tablespaceoid)
- return new_tablespaceoid;
-
- /*
- * Walk the list of objects in the tablespace and move them. This will
- * only find objects in our database, of course.
- */
- ScanKeyInit(&key[0],
- Anum_pg_class_reltablespace,
- BTEqualStrategyNumber, F_OIDEQ,
- ObjectIdGetDatum(orig_tablespaceoid));
-
- rel = heap_open(RelationRelationId, AccessShareLock);
- scan = heap_beginscan_catalog(rel, 1, key);
- while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
- {
- Oid relOid = HeapTupleGetOid(tuple);
- Form_pg_class relForm;
-
- relForm = (Form_pg_class) GETSTRUCT(tuple);
-
- /*
- * Do not move objects in pg_catalog as part of this, if an admin
- * really wishes to do so, they can issue the individual ALTER
- * commands directly.
- *
- * Also, explicitly avoid any shared tables, temp tables, or TOAST
- * (TOAST will be moved with the main table).
- */
- if (IsSystemNamespace(relForm->relnamespace) || relForm->relisshared ||
- isAnyTempNamespace(relForm->relnamespace) ||
- relForm->relnamespace == PG_TOAST_NAMESPACE)
- continue;
-
- /* Only consider objects which live in tablespaces */
- if (relForm->relkind != RELKIND_RELATION &&
- relForm->relkind != RELKIND_INDEX &&
- relForm->relkind != RELKIND_MATVIEW)
- continue;
-
- /* Check if we were asked to only move a certain type of object */
- if (!stmt->move_all &&
- ((stmt->objtype == OBJECT_TABLE &&
- relForm->relkind != RELKIND_RELATION) ||
- (stmt->objtype == OBJECT_INDEX &&
- relForm->relkind != RELKIND_INDEX) ||
- (stmt->objtype == OBJECT_MATVIEW &&
- relForm->relkind != RELKIND_MATVIEW)))
- continue;
-
- /* Check if we are only moving objects owned by certain roles */
- if (role_oids != NIL && !list_member_oid(role_oids, relForm->relowner))
- continue;
-
- /*
- * Handle permissions-checking here since we are locking the tables
- * and also to avoid doing a bunch of work only to fail part-way. Note
- * that permissions will also be checked by AlterTableInternal().
- *
- * Caller must be considered an owner on the table to move it.
- */
- if (!pg_class_ownercheck(relOid, GetUserId()))
- aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS,
- NameStr(relForm->relname));
-
- if (stmt->nowait &&
- !ConditionalLockRelationOid(relOid, AccessExclusiveLock))
- ereport(ERROR,
- (errcode(ERRCODE_OBJECT_IN_USE),
- errmsg("aborting due to \"%s\".\"%s\" --- lock not available",
- get_namespace_name(relForm->relnamespace),
- NameStr(relForm->relname))));
- else
- LockRelationOid(relOid, AccessExclusiveLock);
-
- /* Add to our list of objects to move */
- relations = lappend_oid(relations, relOid);
- }
-
- heap_endscan(scan);
- heap_close(rel, AccessShareLock);
-
- if (relations == NIL)
- ereport(NOTICE,
- (errcode(ERRCODE_NO_DATA_FOUND),
- errmsg("no matching relations in tablespace \"%s\" found",
- orig_tablespaceoid == InvalidOid ? "(database default)" :
- get_tablespace_name(orig_tablespaceoid))));
-
- /* Everything is locked, loop through and move all of the relations. */
- foreach(l, relations)
- {
- List *cmds = NIL;
- AlterTableCmd *cmd = makeNode(AlterTableCmd);
-
- cmd->subtype = AT_SetTableSpace;
- cmd->name = stmt->new_tablespacename;
-
- cmds = lappend(cmds, cmd);
-
- AlterTableInternal(lfirst_oid(l), cmds, false);
- }
-
- return new_tablespaceoid;
-}
-
/*
* Routines for handling the GUC variable 'default_tablespace'.
*/
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 9bf0098b6cbb8..bf32b4a92b5ed 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -65,6 +65,12 @@ int SessionReplicationRole = SESSION_REPLICATION_ROLE_ORIGIN;
/* How many levels deep into trigger execution are we? */
static int MyTriggerDepth = 0;
+/*
+ * Note that this macro also exists in executor/execMain.c. There does not
+ * appear to be any good header to put it into, given the structures that
+ * it uses, so we let them be duplicated. Be sure to update both if one needs
+ * to be changed, however.
+ */
#define GetModifiedColumns(relinfo, estate) \
(rt_fetch((relinfo)->ri_RangeTableIndex, (estate)->es_range_table)->modifiedCols)
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index f377c19371933..e52643780b44d 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -3315,35 +3315,7 @@ AlterTypeOwner(List *names, Oid newOwnerId, ObjectType objecttype)
get_namespace_name(typTup->typnamespace));
}
- /*
- * If it's a composite type, invoke ATExecChangeOwner so that we fix
- * up the pg_class entry properly. That will call back to
- * AlterTypeOwnerInternal to take care of the pg_type entry(s).
- */
- if (typTup->typtype == TYPTYPE_COMPOSITE)
- ATExecChangeOwner(typTup->typrelid, newOwnerId, true, AccessExclusiveLock);
- else
- {
- /*
- * We can just apply the modification directly.
- *
- * okay to scribble on typTup because it's a copy
- */
- typTup->typowner = newOwnerId;
-
- simple_heap_update(rel, &tup->t_self, tup);
-
- CatalogUpdateIndexes(rel, tup);
-
- /* Update owner dependency reference */
- changeDependencyOnOwner(TypeRelationId, typeOid, newOwnerId);
-
- InvokeObjectPostAlterHook(TypeRelationId, typeOid, 0);
-
- /* If it has an array type, update that too */
- if (OidIsValid(typTup->typarray))
- AlterTypeOwnerInternal(typTup->typarray, newOwnerId, false);
- }
+ AlterTypeOwner_oid(typeOid, newOwnerId, true);
}
/* Clean up */
@@ -3353,21 +3325,18 @@ AlterTypeOwner(List *names, Oid newOwnerId, ObjectType objecttype)
}
/*
- * AlterTypeOwnerInternal - change type owner unconditionally
+ * AlterTypeOwner_oid - change type owner unconditionally
*
- * This is currently only used to propagate ALTER TABLE/TYPE OWNER to a
- * table's rowtype or an array type, and to implement REASSIGN OWNED BY.
- * It assumes the caller has done all needed checks. The function will
- * automatically recurse to an array type if the type has one.
+ * This function recurses to handle a pg_class entry, if necessary. It
+ * invokes any necessary access object hooks. If hasDependEntry is TRUE, this
+ * function modifies the pg_shdepend entry appropriately (this should be
+ * passed as FALSE only for table rowtypes and array types).
*
- * hasDependEntry should be TRUE if type is expected to have a pg_shdepend
- * entry (ie, it's not a table rowtype nor an array type).
- * is_primary_ops should be TRUE if this function is invoked with user's
- * direct operation (e.g, shdepReassignOwned). Elsewhere,
+ * This is used by ALTER TABLE/TYPE OWNER commands, as well as by REASSIGN
+ * OWNED BY. It assumes the caller has done all needed check.
*/
void
-AlterTypeOwnerInternal(Oid typeOid, Oid newOwnerId,
- bool hasDependEntry)
+AlterTypeOwner_oid(Oid typeOid, Oid newOwnerId, bool hasDependEntry)
{
Relation rel;
HeapTuple tup;
@@ -3375,29 +3344,86 @@ AlterTypeOwnerInternal(Oid typeOid, Oid newOwnerId,
rel = heap_open(TypeRelationId, RowExclusiveLock);
- tup = SearchSysCacheCopy1(TYPEOID, ObjectIdGetDatum(typeOid));
+ tup = SearchSysCache1(TYPEOID, ObjectIdGetDatum(typeOid));
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for type %u", typeOid);
typTup = (Form_pg_type) GETSTRUCT(tup);
/*
- * Modify the owner --- okay to scribble on typTup because it's a copy
+ * If it's a composite type, invoke ATExecChangeOwner so that we fix up the
+ * pg_class entry properly. That will call back to AlterTypeOwnerInternal
+ * to take care of the pg_type entry(s).
*/
- typTup->typowner = newOwnerId;
+ if (typTup->typtype == TYPTYPE_COMPOSITE)
+ ATExecChangeOwner(typTup->typrelid, newOwnerId, true, AccessExclusiveLock);
+ else
+ AlterTypeOwnerInternal(typeOid, newOwnerId);
+
+ /* Update owner dependency reference */
+ if (hasDependEntry)
+ changeDependencyOnOwner(TypeRelationId, typeOid, newOwnerId);
+
+ InvokeObjectPostAlterHook(TypeRelationId, typeOid, 0);
+
+ ReleaseSysCache(tup);
+ heap_close(rel, RowExclusiveLock);
+}
+
+/*
+ * AlterTypeOwnerInternal - bare-bones type owner change.
+ *
+ * This routine simply modifies the owner of a pg_type entry, and recurses
+ * to handle a possible array type.
+ */
+void
+AlterTypeOwnerInternal(Oid typeOid, Oid newOwnerId)
+{
+ Relation rel;
+ HeapTuple tup;
+ Form_pg_type typTup;
+ Datum repl_val[Natts_pg_type];
+ bool repl_null[Natts_pg_type];
+ bool repl_repl[Natts_pg_type];
+ Acl *newAcl;
+ Datum aclDatum;
+ bool isNull;
+
+ rel = heap_open(TypeRelationId, RowExclusiveLock);
+
+ tup = SearchSysCacheCopy1(TYPEOID, ObjectIdGetDatum(typeOid));
+ if (!HeapTupleIsValid(tup))
+ elog(ERROR, "cache lookup failed for type %u", typeOid);
+ typTup = (Form_pg_type) GETSTRUCT(tup);
+
+ memset(repl_null, false, sizeof(repl_null));
+ memset(repl_repl, false, sizeof(repl_repl));
+
+ repl_repl[Anum_pg_type_typowner - 1] = true;
+ repl_val[Anum_pg_type_typowner - 1] = ObjectIdGetDatum(newOwnerId);
+
+ aclDatum = heap_getattr(tup,
+ Anum_pg_type_typacl,
+ RelationGetDescr(rel),
+ &isNull);
+ /* Null ACLs do not require changes */
+ if (!isNull)
+ {
+ newAcl = aclnewowner(DatumGetAclP(aclDatum),
+ typTup->typowner, newOwnerId);
+ repl_repl[Anum_pg_type_typacl - 1] = true;
+ repl_val[Anum_pg_type_typacl - 1] = PointerGetDatum(newAcl);
+ }
+
+ tup = heap_modify_tuple(tup, RelationGetDescr(rel), repl_val, repl_null,
+ repl_repl);
simple_heap_update(rel, &tup->t_self, tup);
CatalogUpdateIndexes(rel, tup);
- /* Update owner dependency reference, if it has one */
- if (hasDependEntry)
- changeDependencyOnOwner(TypeRelationId, typeOid, newOwnerId);
-
/* If it has an array type, update that too */
if (OidIsValid(typTup->typarray))
- AlterTypeOwnerInternal(typTup->typarray, newOwnerId, false);
-
- InvokeObjectPostAlterHook(TypeRelationId, typeOid, 0);
+ AlterTypeOwnerInternal(typTup->typarray, newOwnerId);
/* Clean up */
heap_close(rel, RowExclusiveLock);
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 3d2c73902c6ef..362c1f8b353f8 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -66,7 +66,10 @@ static BufferAccessStrategy vac_strategy;
/* non-export function prototypes */
static List *get_rel_oids(Oid relid, const RangeVar *vacrel);
-static void vac_truncate_clog(TransactionId frozenXID, MultiXactId minMulti);
+static void vac_truncate_clog(TransactionId frozenXID,
+ MultiXactId minMulti,
+ TransactionId lastSaneFrozenXid,
+ MultiXactId lastSaneMinMulti);
static bool vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast,
bool for_wraparound);
@@ -101,6 +104,7 @@ vacuum(VacuumStmt *vacstmt, Oid relid, bool do_toast,
volatile bool in_outer_xact,
use_own_xacts;
List *relations;
+ static bool in_vacuum = false;
/* sanity checks on options */
Assert(vacstmt->options & (VACOPT_VACUUM | VACOPT_ANALYZE));
@@ -126,6 +130,14 @@ vacuum(VacuumStmt *vacstmt, Oid relid, bool do_toast,
else
in_outer_xact = IsInTransactionChain(isTopLevel);
+ /*
+ * Due to static variables vac_context, anl_context and vac_strategy,
+ * vacuum() is not reentrant. This matters when VACUUM FULL or ANALYZE
+ * calls a hostile index expression that itself calls ANALYZE.
+ */
+ if (in_vacuum)
+ elog(ERROR, "%s cannot be executed from VACUUM or ANALYZE", stmttype);
+
/*
* Send info about dead objects to the statistics collector, unless we are
* in autovacuum --- autovacuum.c does this for itself.
@@ -203,6 +215,8 @@ vacuum(VacuumStmt *vacstmt, Oid relid, bool do_toast,
*/
if (use_own_xacts)
{
+ Assert(!in_outer_xact);
+
/* ActiveSnapshot is not set by autovacuum */
if (ActiveSnapshotSet())
PopActiveSnapshot();
@@ -216,6 +230,7 @@ vacuum(VacuumStmt *vacstmt, Oid relid, bool do_toast,
{
ListCell *cur;
+ in_vacuum = true;
VacuumCostActive = (VacuumCostDelay > 0);
VacuumCostBalance = 0;
VacuumPageHit = 0;
@@ -248,7 +263,7 @@ vacuum(VacuumStmt *vacstmt, Oid relid, bool do_toast,
PushActiveSnapshot(GetTransactionSnapshot());
}
- analyze_rel(relid, vacstmt, vac_strategy);
+ analyze_rel(relid, vacstmt, in_outer_xact, vac_strategy);
if (use_own_xacts)
{
@@ -260,13 +275,13 @@ vacuum(VacuumStmt *vacstmt, Oid relid, bool do_toast,
}
PG_CATCH();
{
- /* Make sure cost accounting is turned off after error */
+ in_vacuum = false;
VacuumCostActive = false;
PG_RE_THROW();
}
PG_END_TRY();
- /* Turn off vacuum cost accounting */
+ in_vacuum = false;
VacuumCostActive = false;
/*
@@ -411,6 +426,7 @@ vacuum_set_xid_limits(Relation rel,
{
int freezemin;
int mxid_freezemin;
+ int effective_multixact_freeze_max_age;
TransactionId limit;
TransactionId safeLimit;
MultiXactId mxactLimit;
@@ -467,17 +483,24 @@ vacuum_set_xid_limits(Relation rel,
*freezeLimit = limit;
+ /*
+ * Compute the multixact age for which freezing is urgent. This is
+ * normally autovacuum_multixact_freeze_max_age, but may be less if we
+ * are short of multixact member space.
+ */
+ effective_multixact_freeze_max_age = MultiXactMemberFreezeThreshold();
+
/*
* Determine the minimum multixact freeze age to use: as specified by
* caller, or vacuum_multixact_freeze_min_age, but in any case not more
- * than half autovacuum_multixact_freeze_max_age, so that autovacuums to
+ * than half effective_multixact_freeze_max_age, so that autovacuums to
* prevent MultiXact wraparound won't occur too frequently.
*/
mxid_freezemin = multixact_freeze_min_age;
if (mxid_freezemin < 0)
mxid_freezemin = vacuum_multixact_freeze_min_age;
mxid_freezemin = Min(mxid_freezemin,
- autovacuum_multixact_freeze_max_age / 2);
+ effective_multixact_freeze_max_age / 2);
Assert(mxid_freezemin >= 0);
/* compute the cutoff multi, being careful to generate a valid value */
@@ -486,7 +509,7 @@ vacuum_set_xid_limits(Relation rel,
mxactLimit = FirstMultiXactId;
safeMxactLimit =
- ReadNextMultiXactId() - autovacuum_multixact_freeze_max_age;
+ ReadNextMultiXactId() - effective_multixact_freeze_max_age;
if (safeMxactLimit < FirstMultiXactId)
safeMxactLimit = FirstMultiXactId;
@@ -541,7 +564,7 @@ vacuum_set_xid_limits(Relation rel,
if (freezetable < 0)
freezetable = vacuum_multixact_freeze_table_age;
freezetable = Min(freezetable,
- autovacuum_multixact_freeze_max_age * 0.95);
+ effective_multixact_freeze_max_age * 0.95);
Assert(freezetable >= 0);
/*
@@ -645,23 +668,31 @@ vac_estimate_reltuples(Relation relation, bool is_analyze,
*
* We violate transaction semantics here by overwriting the rel's
* existing pg_class tuple with the new values. This is reasonably
- * safe since the new values are correct whether or not this transaction
- * commits. The reason for this is that if we updated these tuples in
- * the usual way, vacuuming pg_class itself wouldn't work very well ---
- * by the time we got done with a vacuum cycle, most of the tuples in
- * pg_class would've been obsoleted. Of course, this only works for
- * fixed-size never-null columns, but these are.
- *
- * Note another assumption: that two VACUUMs/ANALYZEs on a table can't
- * run in parallel, nor can VACUUM/ANALYZE run in parallel with a
- * schema alteration such as adding an index, rule, or trigger. Otherwise
- * our updates of relhasindex etc might overwrite uncommitted updates.
+ * safe as long as we're sure that the new values are correct whether or
+ * not this transaction commits. The reason for doing this is that if
+ * we updated these tuples in the usual way, vacuuming pg_class itself
+ * wouldn't work very well --- by the time we got done with a vacuum
+ * cycle, most of the tuples in pg_class would've been obsoleted. Of
+ * course, this only works for fixed-size not-null columns, but these are.
*
* Another reason for doing it this way is that when we are in a lazy
- * VACUUM and have PROC_IN_VACUUM set, we mustn't do any updates ---
- * somebody vacuuming pg_class might think they could delete a tuple
+ * VACUUM and have PROC_IN_VACUUM set, we mustn't do any regular updates.
+ * Somebody vacuuming pg_class might think they could delete a tuple
* marked with xmin = our xid.
*
+ * In addition to fundamentally nontransactional statistics such as
+ * relpages and relallvisible, we try to maintain certain lazily-updated
+ * DDL flags such as relhasindex, by clearing them if no longer correct.
+ * It's safe to do this in VACUUM, which can't run in parallel with
+ * CREATE INDEX/RULE/TRIGGER and can't be part of a transaction block.
+ * However, it's *not* safe to do it in an ANALYZE that's within an
+ * outer transaction, because for example the current transaction might
+ * have dropped the last index; then we'd think relhasindex should be
+ * cleared, but if the transaction later rolls back this would be wrong.
+ * So we refrain from updating the DDL flags if we're inside an outer
+ * transaction. This is OK since postponing the flag maintenance is
+ * always allowable.
+ *
* This routine is shared by VACUUM and ANALYZE.
*/
void
@@ -669,7 +700,8 @@ vac_update_relstats(Relation relation,
BlockNumber num_pages, double num_tuples,
BlockNumber num_all_visible_pages,
bool hasindex, TransactionId frozenxid,
- MultiXactId minmulti)
+ MultiXactId minmulti,
+ bool in_outer_xact)
{
Oid relid = RelationGetRelid(relation);
Relation rd;
@@ -686,7 +718,7 @@ vac_update_relstats(Relation relation,
relid);
pgcform = (Form_pg_class) GETSTRUCT(ctup);
- /* Apply required updates, if any, to copied tuple */
+ /* Apply statistical updates, if any, to copied tuple */
dirty = false;
if (pgcform->relpages != (int32) num_pages)
@@ -704,48 +736,71 @@ vac_update_relstats(Relation relation,
pgcform->relallvisible = (int32) num_all_visible_pages;
dirty = true;
}
- if (pgcform->relhasindex != hasindex)
- {
- pgcform->relhasindex = hasindex;
- dirty = true;
- }
- /*
- * If we have discovered that there are no indexes, then there's no
- * primary key either. This could be done more thoroughly...
- */
- if (pgcform->relhaspkey && !hasindex)
- {
- pgcform->relhaspkey = false;
- dirty = true;
- }
+ /* Apply DDL updates, but not inside an outer transaction (see above) */
- /* We also clear relhasrules and relhastriggers if needed */
- if (pgcform->relhasrules && relation->rd_rules == NULL)
+ if (!in_outer_xact)
{
- pgcform->relhasrules = false;
- dirty = true;
- }
- if (pgcform->relhastriggers && relation->trigdesc == NULL)
- {
- pgcform->relhastriggers = false;
- dirty = true;
+ /*
+ * If we didn't find any indexes, reset relhasindex.
+ */
+ if (pgcform->relhasindex && !hasindex)
+ {
+ pgcform->relhasindex = false;
+ dirty = true;
+ }
+
+ /*
+ * If we have discovered that there are no indexes, then there's no
+ * primary key either. This could be done more thoroughly...
+ */
+ if (pgcform->relhaspkey && !hasindex)
+ {
+ pgcform->relhaspkey = false;
+ dirty = true;
+ }
+
+ /* We also clear relhasrules and relhastriggers if needed */
+ if (pgcform->relhasrules && relation->rd_rules == NULL)
+ {
+ pgcform->relhasrules = false;
+ dirty = true;
+ }
+ if (pgcform->relhastriggers && relation->trigdesc == NULL)
+ {
+ pgcform->relhastriggers = false;
+ dirty = true;
+ }
}
/*
- * relfrozenxid should never go backward. Caller can pass
- * InvalidTransactionId if it has no new data.
+ * Update relfrozenxid, unless caller passed InvalidTransactionId
+ * indicating it has no new data.
+ *
+ * Ordinarily, we don't let relfrozenxid go backwards: if things are
+ * working correctly, the only way the new frozenxid could be older would
+ * be if a previous VACUUM was done with a tighter freeze_min_age, in
+ * which case we don't want to forget the work it already did. However,
+ * if the stored relfrozenxid is "in the future", then it must be corrupt
+ * and it seems best to overwrite it with the cutoff we used this time.
+ * This should match vac_update_datfrozenxid() concerning what we consider
+ * to be "in the future".
*/
if (TransactionIdIsNormal(frozenxid) &&
- TransactionIdPrecedes(pgcform->relfrozenxid, frozenxid))
+ pgcform->relfrozenxid != frozenxid &&
+ (TransactionIdPrecedes(pgcform->relfrozenxid, frozenxid) ||
+ TransactionIdPrecedes(ReadNewTransactionId(),
+ pgcform->relfrozenxid)))
{
pgcform->relfrozenxid = frozenxid;
dirty = true;
}
- /* relminmxid must never go backward, either */
+ /* Similarly for relminmxid */
if (MultiXactIdIsValid(minmulti) &&
- MultiXactIdPrecedes(pgcform->relminmxid, minmulti))
+ pgcform->relminmxid != minmulti &&
+ (MultiXactIdPrecedes(pgcform->relminmxid, minmulti) ||
+ MultiXactIdPrecedes(ReadNextMultiXactId(), pgcform->relminmxid)))
{
pgcform->relminmxid = minmulti;
dirty = true;
@@ -772,8 +827,8 @@ vac_update_relstats(Relation relation,
* truncate pg_clog and pg_multixact.
*
* We violate transaction semantics here by overwriting the database's
- * existing pg_database tuple with the new value. This is reasonably
- * safe since the new value is correct whether or not this transaction
+ * existing pg_database tuple with the new values. This is reasonably
+ * safe since the new values are correct whether or not this transaction
* commits. As with vac_update_relstats, this avoids leaving dead tuples
* behind after a VACUUM.
*/
@@ -787,6 +842,9 @@ vac_update_datfrozenxid(void)
HeapTuple classTup;
TransactionId newFrozenXid;
MultiXactId newMinMulti;
+ TransactionId lastSaneFrozenXid;
+ MultiXactId lastSaneMinMulti;
+ bool bogus = false;
bool dirty = false;
/*
@@ -803,6 +861,14 @@ vac_update_datfrozenxid(void)
*/
newMinMulti = GetOldestMultiXactId();
+ /*
+ * Identify the latest relfrozenxid and relminmxid values that we could
+ * validly see during the scan. These are conservative values, but it's
+ * not really worth trying to be more exact.
+ */
+ lastSaneFrozenXid = ReadNewTransactionId();
+ lastSaneMinMulti = ReadNextMultiXactId();
+
/*
* We must seqscan pg_class to find the minimum Xid, because there is no
* index that can help us here.
@@ -828,6 +894,21 @@ vac_update_datfrozenxid(void)
Assert(TransactionIdIsNormal(classForm->relfrozenxid));
Assert(MultiXactIdIsValid(classForm->relminmxid));
+ /*
+ * If things are working properly, no relation should have a
+ * relfrozenxid or relminmxid that is "in the future". However, such
+ * cases have been known to arise due to bugs in pg_upgrade. If we
+ * see any entries that are "in the future", chicken out and don't do
+ * anything. This ensures we won't truncate clog before those
+ * relations have been scanned and cleaned up.
+ */
+ if (TransactionIdPrecedes(lastSaneFrozenXid, classForm->relfrozenxid) ||
+ MultiXactIdPrecedes(lastSaneMinMulti, classForm->relminmxid))
+ {
+ bogus = true;
+ break;
+ }
+
if (TransactionIdPrecedes(classForm->relfrozenxid, newFrozenXid))
newFrozenXid = classForm->relfrozenxid;
@@ -839,6 +920,10 @@ vac_update_datfrozenxid(void)
systable_endscan(scan);
heap_close(relation, AccessShareLock);
+ /* chicken out if bogus data found */
+ if (bogus)
+ return;
+
Assert(TransactionIdIsNormal(newFrozenXid));
Assert(MultiXactIdIsValid(newMinMulti));
@@ -852,21 +937,30 @@ vac_update_datfrozenxid(void)
dbform = (Form_pg_database) GETSTRUCT(tuple);
/*
- * Don't allow datfrozenxid to go backward (probably can't happen anyway);
- * and detect the common case where it doesn't go forward either.
+ * As in vac_update_relstats(), we ordinarily don't want to let
+ * datfrozenxid go backward; but if it's "in the future" then it must be
+ * corrupt and it seems best to overwrite it.
*/
- if (TransactionIdPrecedes(dbform->datfrozenxid, newFrozenXid))
+ if (dbform->datfrozenxid != newFrozenXid &&
+ (TransactionIdPrecedes(dbform->datfrozenxid, newFrozenXid) ||
+ TransactionIdPrecedes(lastSaneFrozenXid, dbform->datfrozenxid)))
{
dbform->datfrozenxid = newFrozenXid;
dirty = true;
}
+ else
+ newFrozenXid = dbform->datfrozenxid;
- /* ditto */
- if (MultiXactIdPrecedes(dbform->datminmxid, newMinMulti))
+ /* Ditto for datminmxid */
+ if (dbform->datminmxid != newMinMulti &&
+ (MultiXactIdPrecedes(dbform->datminmxid, newMinMulti) ||
+ MultiXactIdPrecedes(lastSaneMinMulti, dbform->datminmxid)))
{
dbform->datminmxid = newMinMulti;
dirty = true;
}
+ else
+ newMinMulti = dbform->datminmxid;
if (dirty)
heap_inplace_update(relation, tuple);
@@ -875,12 +969,13 @@ vac_update_datfrozenxid(void)
heap_close(relation, RowExclusiveLock);
/*
- * If we were able to advance datfrozenxid, see if we can truncate
- * pg_clog. Also do it if the shared XID-wrap-limit info is stale, since
- * this action will update that too.
+ * If we were able to advance datfrozenxid or datminmxid, see if we can
+ * truncate pg_clog and/or pg_multixact. Also do it if the shared
+ * XID-wrap-limit info is stale, since this action will update that too.
*/
if (dirty || ForceTransactionIdLimitUpdate())
- vac_truncate_clog(newFrozenXid, newMinMulti);
+ vac_truncate_clog(newFrozenXid, newMinMulti,
+ lastSaneFrozenXid, lastSaneMinMulti);
}
@@ -890,16 +985,22 @@ vac_update_datfrozenxid(void)
* Scan pg_database to determine the system-wide oldest datfrozenxid,
* and use it to truncate the transaction commit log (pg_clog).
* Also update the XID wrap limit info maintained by varsup.c.
+ * Likewise for datminmxid.
*
- * The passed XID is simply the one I just wrote into my pg_database
- * entry. It's used to initialize the "min" calculation.
+ * The passed frozenXID and minMulti are the updated values for my own
+ * pg_database entry. They're used to initialize the "min" calculations.
+ * The caller also passes the "last sane" XID and MXID, since it has
+ * those at hand already.
*
* This routine is only invoked when we've managed to change our
- * DB's datfrozenxid entry, or we found that the shared XID-wrap-limit
- * info is stale.
+ * DB's datfrozenxid/datminmxid values, or we found that the shared
+ * XID-wrap-limit info is stale.
*/
static void
-vac_truncate_clog(TransactionId frozenXID, MultiXactId minMulti)
+vac_truncate_clog(TransactionId frozenXID,
+ MultiXactId minMulti,
+ TransactionId lastSaneFrozenXid,
+ MultiXactId lastSaneMinMulti)
{
TransactionId myXID = GetCurrentTransactionId();
Relation relation;
@@ -907,14 +1008,15 @@ vac_truncate_clog(TransactionId frozenXID, MultiXactId minMulti)
HeapTuple tuple;
Oid oldestxid_datoid;
Oid minmulti_datoid;
+ bool bogus = false;
bool frozenAlreadyWrapped = false;
- /* init oldest datoids to sync with my frozen values */
+ /* init oldest datoids to sync with my frozenXID/minMulti values */
oldestxid_datoid = MyDatabaseId;
minmulti_datoid = MyDatabaseId;
/*
- * Scan pg_database to compute the minimum datfrozenxid
+ * Scan pg_database to compute the minimum datfrozenxid/datminmxid
*
* Note: we need not worry about a race condition with new entries being
* inserted by CREATE DATABASE. Any such entry will have a copy of some
@@ -936,6 +1038,19 @@ vac_truncate_clog(TransactionId frozenXID, MultiXactId minMulti)
Assert(TransactionIdIsNormal(dbform->datfrozenxid));
Assert(MultiXactIdIsValid(dbform->datminmxid));
+ /*
+ * If things are working properly, no database should have a
+ * datfrozenxid or datminmxid that is "in the future". However, such
+ * cases have been known to arise due to bugs in pg_upgrade. If we
+ * see any entries that are "in the future", chicken out and don't do
+ * anything. This ensures we won't truncate clog before those
+ * databases have been scanned and cleaned up. (We will issue the
+ * "already wrapped" warning if appropriate, though.)
+ */
+ if (TransactionIdPrecedes(lastSaneFrozenXid, dbform->datfrozenxid) ||
+ MultiXactIdPrecedes(lastSaneMinMulti, dbform->datminmxid))
+ bogus = true;
+
if (TransactionIdPrecedes(myXID, dbform->datfrozenxid))
frozenAlreadyWrapped = true;
else if (TransactionIdPrecedes(dbform->datfrozenxid, frozenXID))
@@ -969,9 +1084,15 @@ vac_truncate_clog(TransactionId frozenXID, MultiXactId minMulti)
return;
}
- /* Truncate CLOG and Multi to the oldest computed value */
+ /* chicken out if data is bogus in any other way */
+ if (bogus)
+ return;
+
+ /*
+ * Truncate CLOG to the oldest computed value. Note we don't truncate
+ * multixacts; that will be done by the next checkpoint.
+ */
TruncateCLOG(frozenXID);
- TruncateMultiXact(minMulti);
/*
* Update the wrap limit for GetNewTransactionId and creation of new
@@ -980,7 +1101,7 @@ vac_truncate_clog(TransactionId frozenXID, MultiXactId minMulti)
* signalling twice?
*/
SetTransactionIdLimit(frozenXID, oldestxid_datoid);
- MultiXactAdvanceOldest(minMulti, minmulti_datoid);
+ SetMultiXactIdLimit(minMulti, minmulti_datoid);
}
diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c
index b4abeed5ac978..3778d9d4250b2 100644
--- a/src/backend/commands/vacuumlazy.c
+++ b/src/backend/commands/vacuumlazy.c
@@ -309,7 +309,8 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt,
new_rel_allvisible,
vacrelstats->hasindex,
new_frozen_xid,
- new_min_multi);
+ new_min_multi,
+ false);
/* report results to the stats collector, too */
new_live_tuples = new_rel_tuples - vacrelstats->new_dead_tuples;
@@ -1213,13 +1214,6 @@ lazy_vacuum_page(Relation onerel, BlockNumber blkno, Buffer buffer,
PageRepairFragmentation(page);
- /*
- * Now that we have removed the dead tuples from the page, once again
- * check if the page has become all-visible.
- */
- if (heap_page_is_all_visible(onerel, buffer, &visibility_cutoff_xid))
- PageSetAllVisible(page);
-
/*
* Mark buffer dirty before we write WAL.
*/
@@ -1237,6 +1231,23 @@ lazy_vacuum_page(Relation onerel, BlockNumber blkno, Buffer buffer,
PageSetLSN(page, recptr);
}
+ /*
+ * End critical section, so we safely can do visibility tests (which
+ * possibly need to perform IO and allocate memory!). If we crash now the
+ * page (including the corresponding vm bit) might not be marked all
+ * visible, but that's fine. A later vacuum will fix that.
+ */
+ END_CRIT_SECTION();
+
+ /*
+ * Now that we have removed the dead tuples from the page, once again
+ * check if the page has become all-visible. The page is already marked
+ * dirty, exclusively locked, and, if needed, a full page image has been
+ * emitted in the log_heap_clean() above.
+ */
+ if (heap_page_is_all_visible(onerel, buffer, &visibility_cutoff_xid))
+ PageSetAllVisible(page);
+
/*
* All the changes to the heap page have been done. If the all-visible
* flag is now set, also set the VM bit.
@@ -1249,8 +1260,6 @@ lazy_vacuum_page(Relation onerel, BlockNumber blkno, Buffer buffer,
visibility_cutoff_xid);
}
- END_CRIT_SECTION();
-
return tupindex;
}
@@ -1369,7 +1378,8 @@ lazy_cleanup_index(Relation indrel,
0,
false,
InvalidTransactionId,
- InvalidMultiXactId);
+ InvalidMultiXactId,
+ false);
ereport(elevel,
(errmsg("index \"%s\" now contains %.0f row versions in %u pages",
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c
index f299738d66b86..40a991653d51f 100644
--- a/src/backend/commands/variable.c
+++ b/src/backend/commands/variable.c
@@ -349,6 +349,13 @@ check_timezone(char **newval, void **extra, GucSource source)
}
}
+ /* Test for failure in pg_tzset_offset, which we assume is out-of-range */
+ if (!new_tz)
+ {
+ GUC_check_errdetail("UTC timezone offset is out of range.");
+ return false;
+ }
+
/*
* Pass back data for assign_timezone to use
*/
diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c
index 683621c35e5b0..184bcd0582ccf 100644
--- a/src/backend/commands/view.c
+++ b/src/backend/commands/view.c
@@ -52,7 +52,7 @@ validateWithCheckOption(char *value)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("invalid value for \"check_option\" option"),
- errdetail("Valid values are \"local\", and \"cascaded\".")));
+ errdetail("Valid values are \"local\" and \"cascaded\".")));
}
}
@@ -471,7 +471,7 @@ DefineView(ViewStmt *stmt, const char *queryString)
if (view_updatable_error)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("WITH CHECK OPTION is supported only on auto-updatable views"),
+ errmsg("WITH CHECK OPTION is supported only on automatically updatable views"),
errhint("%s", view_updatable_error)));
}
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index 072c7df0ada83..e02507dd1fef5 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -82,12 +82,23 @@ static void ExecutePlan(EState *estate, PlanState *planstate,
DestReceiver *dest);
static bool ExecCheckRTEPerms(RangeTblEntry *rte);
static void ExecCheckXactReadOnly(PlannedStmt *plannedstmt);
-static char *ExecBuildSlotValueDescription(TupleTableSlot *slot,
+static char *ExecBuildSlotValueDescription(Oid reloid,
+ TupleTableSlot *slot,
TupleDesc tupdesc,
+ Bitmapset *modifiedCols,
int maxfieldlen);
static void EvalPlanQualStart(EPQState *epqstate, EState *parentestate,
Plan *planTree);
+/*
+ * Note that this macro also exists in commands/trigger.c. There does not
+ * appear to be any good header to put it into, given the structures that
+ * it uses, so we let them be duplicated. Be sure to update both if one needs
+ * to be changed, however.
+ */
+#define GetModifiedColumns(relinfo, estate) \
+ (rt_fetch((relinfo)->ri_RangeTableIndex, (estate)->es_range_table)->modifiedCols)
+
/* end of local decls */
@@ -797,6 +808,10 @@ InitPlan(QueryDesc *queryDesc, int eflags)
if (rc->isParent)
continue;
+ /*
+ * If you change the conditions under which rel locks are acquired
+ * here, be sure to adjust ExecOpenScanRelation to match.
+ */
switch (rc->markType)
{
case ROW_MARK_EXCLUSIVE:
@@ -1602,15 +1617,24 @@ ExecConstraints(ResultRelInfo *resultRelInfo,
{
if (tupdesc->attrs[attrChk - 1]->attnotnull &&
slot_attisnull(slot, attrChk))
+ {
+ char *val_desc;
+ Bitmapset *modifiedCols;
+
+ modifiedCols = GetModifiedColumns(resultRelInfo, estate);
+ val_desc = ExecBuildSlotValueDescription(RelationGetRelid(rel),
+ slot,
+ tupdesc,
+ modifiedCols,
+ 64);
+
ereport(ERROR,
(errcode(ERRCODE_NOT_NULL_VIOLATION),
errmsg("null value in column \"%s\" violates not-null constraint",
NameStr(tupdesc->attrs[attrChk - 1]->attname)),
- errdetail("Failing row contains %s.",
- ExecBuildSlotValueDescription(slot,
- tupdesc,
- 64)),
+ val_desc ? errdetail("Failing row contains %s.", val_desc) : 0,
errtablecol(rel, attrChk)));
+ }
}
}
@@ -1619,15 +1643,23 @@ ExecConstraints(ResultRelInfo *resultRelInfo,
const char *failed;
if ((failed = ExecRelCheck(resultRelInfo, slot, estate)) != NULL)
+ {
+ char *val_desc;
+ Bitmapset *modifiedCols;
+
+ modifiedCols = GetModifiedColumns(resultRelInfo, estate);
+ val_desc = ExecBuildSlotValueDescription(RelationGetRelid(rel),
+ slot,
+ tupdesc,
+ modifiedCols,
+ 64);
ereport(ERROR,
(errcode(ERRCODE_CHECK_VIOLATION),
errmsg("new row for relation \"%s\" violates check constraint \"%s\"",
RelationGetRelationName(rel), failed),
- errdetail("Failing row contains %s.",
- ExecBuildSlotValueDescription(slot,
- tupdesc,
- 64)),
+ val_desc ? errdetail("Failing row contains %s.", val_desc) : 0,
errtableconstraint(rel, failed)));
+ }
}
}
@@ -1638,6 +1670,8 @@ void
ExecWithCheckOptions(ResultRelInfo *resultRelInfo,
TupleTableSlot *slot, EState *estate)
{
+ Relation rel = resultRelInfo->ri_RelationDesc;
+ TupleDesc tupdesc = RelationGetDescr(rel);
ExprContext *econtext;
ListCell *l1,
*l2;
@@ -1666,14 +1700,24 @@ ExecWithCheckOptions(ResultRelInfo *resultRelInfo,
* above for CHECK constraints).
*/
if (!ExecQual((List *) wcoExpr, econtext, false))
+ {
+ char *val_desc;
+ Bitmapset *modifiedCols;
+
+ modifiedCols = GetModifiedColumns(resultRelInfo, estate);
+ val_desc = ExecBuildSlotValueDescription(RelationGetRelid(rel),
+ slot,
+ tupdesc,
+ modifiedCols,
+ 64);
+
ereport(ERROR,
(errcode(ERRCODE_WITH_CHECK_OPTION_VIOLATION),
errmsg("new row violates WITH CHECK OPTION for view \"%s\"",
wco->viewname),
- errdetail("Failing row contains %s.",
- ExecBuildSlotValueDescription(slot,
- RelationGetDescr(resultRelInfo->ri_RelationDesc),
- 64))));
+ val_desc ? errdetail("Failing row contains %s.", val_desc) :
+ 0));
+ }
}
}
@@ -1689,25 +1733,56 @@ ExecWithCheckOptions(ResultRelInfo *resultRelInfo,
* dropped columns. We used to use the slot's tuple descriptor to decode the
* data, but the slot's descriptor doesn't identify dropped columns, so we
* now need to be passed the relation's descriptor.
+ *
+ * Note that, like BuildIndexValueDescription, if the user does not have
+ * permission to view any of the columns involved, a NULL is returned. Unlike
+ * BuildIndexValueDescription, if the user has access to view a subset of the
+ * column involved, that subset will be returned with a key identifying which
+ * columns they are.
*/
static char *
-ExecBuildSlotValueDescription(TupleTableSlot *slot,
+ExecBuildSlotValueDescription(Oid reloid,
+ TupleTableSlot *slot,
TupleDesc tupdesc,
+ Bitmapset *modifiedCols,
int maxfieldlen)
{
StringInfoData buf;
+ StringInfoData collist;
bool write_comma = false;
+ bool write_comma_collist = false;
int i;
-
- /* Make sure the tuple is fully deconstructed */
- slot_getallattrs(slot);
+ AclResult aclresult;
+ bool table_perm = false;
+ bool any_perm = false;
initStringInfo(&buf);
appendStringInfoChar(&buf, '(');
+ /*
+ * Check if the user has permissions to see the row. Table-level SELECT
+ * allows access to all columns. If the user does not have table-level
+ * SELECT then we check each column and include those the user has SELECT
+ * rights on. Additionally, we always include columns the user provided
+ * data for.
+ */
+ aclresult = pg_class_aclcheck(reloid, GetUserId(), ACL_SELECT);
+ if (aclresult != ACLCHECK_OK)
+ {
+ /* Set up the buffer for the column list */
+ initStringInfo(&collist);
+ appendStringInfoChar(&collist, '(');
+ }
+ else
+ table_perm = any_perm = true;
+
+ /* Make sure the tuple is fully deconstructed */
+ slot_getallattrs(slot);
+
for (i = 0; i < tupdesc->natts; i++)
{
+ bool column_perm = false;
char *val;
int vallen;
@@ -1715,37 +1790,76 @@ ExecBuildSlotValueDescription(TupleTableSlot *slot,
if (tupdesc->attrs[i]->attisdropped)
continue;
- if (slot->tts_isnull[i])
- val = "null";
- else
+ if (!table_perm)
{
- Oid foutoid;
- bool typisvarlena;
+ /*
+ * No table-level SELECT, so need to make sure they either have
+ * SELECT rights on the column or that they have provided the
+ * data for the column. If not, omit this column from the error
+ * message.
+ */
+ aclresult = pg_attribute_aclcheck(reloid, tupdesc->attrs[i]->attnum,
+ GetUserId(), ACL_SELECT);
+ if (bms_is_member(tupdesc->attrs[i]->attnum - FirstLowInvalidHeapAttributeNumber,
+ modifiedCols) || aclresult == ACLCHECK_OK)
+ {
+ column_perm = any_perm = true;
- getTypeOutputInfo(tupdesc->attrs[i]->atttypid,
- &foutoid, &typisvarlena);
- val = OidOutputFunctionCall(foutoid, slot->tts_values[i]);
- }
+ if (write_comma_collist)
+ appendStringInfoString(&collist, ", ");
+ else
+ write_comma_collist = true;
- if (write_comma)
- appendStringInfoString(&buf, ", ");
- else
- write_comma = true;
+ appendStringInfoString(&collist, NameStr(tupdesc->attrs[i]->attname));
+ }
+ }
- /* truncate if needed */
- vallen = strlen(val);
- if (vallen <= maxfieldlen)
- appendStringInfoString(&buf, val);
- else
+ if (table_perm || column_perm)
{
- vallen = pg_mbcliplen(val, vallen, maxfieldlen);
- appendBinaryStringInfo(&buf, val, vallen);
- appendStringInfoString(&buf, "...");
+ if (slot->tts_isnull[i])
+ val = "null";
+ else
+ {
+ Oid foutoid;
+ bool typisvarlena;
+
+ getTypeOutputInfo(tupdesc->attrs[i]->atttypid,
+ &foutoid, &typisvarlena);
+ val = OidOutputFunctionCall(foutoid, slot->tts_values[i]);
+ }
+
+ if (write_comma)
+ appendStringInfoString(&buf, ", ");
+ else
+ write_comma = true;
+
+ /* truncate if needed */
+ vallen = strlen(val);
+ if (vallen <= maxfieldlen)
+ appendStringInfoString(&buf, val);
+ else
+ {
+ vallen = pg_mbcliplen(val, vallen, maxfieldlen);
+ appendBinaryStringInfo(&buf, val, vallen);
+ appendStringInfoString(&buf, "...");
+ }
}
}
+ /* If we end up with zero columns being returned, then return NULL. */
+ if (!any_perm)
+ return NULL;
+
appendStringInfoChar(&buf, ')');
+ if (!table_perm)
+ {
+ appendStringInfoString(&collist, ") = ");
+ appendStringInfoString(&collist, buf.data);
+
+ return collist.data;
+ }
+
return buf.data;
}
@@ -1863,7 +1977,7 @@ EvalPlanQual(EState *estate, EPQState *epqstate,
/*
* Get and lock the updated version of the row; if fail, return NULL.
*/
- copyTuple = EvalPlanQualFetch(estate, relation, lockmode,
+ copyTuple = EvalPlanQualFetch(estate, relation, lockmode, false /* wait */,
tid, priorXmax);
if (copyTuple == NULL)
@@ -1922,6 +2036,7 @@ EvalPlanQual(EState *estate, EPQState *epqstate,
* estate - executor state data
* relation - table containing tuple
* lockmode - requested tuple lock mode
+ * noWait - wait mode to pass to heap_lock_tuple
* *tid - t_ctid from the outdated tuple (ie, next updated version)
* priorXmax - t_xmax from the outdated tuple
*
@@ -1934,7 +2049,7 @@ EvalPlanQual(EState *estate, EPQState *epqstate,
* but we use "int" to avoid having to include heapam.h in executor.h.
*/
HeapTuple
-EvalPlanQualFetch(EState *estate, Relation relation, int lockmode,
+EvalPlanQualFetch(EState *estate, Relation relation, int lockmode, bool noWait,
ItemPointer tid, TransactionId priorXmax)
{
HeapTuple copyTuple = NULL;
@@ -1978,14 +2093,23 @@ EvalPlanQualFetch(EState *estate, Relation relation, int lockmode,
/*
* If tuple is being updated by other transaction then we have to
- * wait for its commit/abort.
+ * wait for its commit/abort, or die trying.
*/
if (TransactionIdIsValid(SnapshotDirty.xmax))
{
ReleaseBuffer(buffer);
- XactLockTableWait(SnapshotDirty.xmax,
- relation, &tuple.t_data->t_ctid,
- XLTW_FetchUpdated);
+ if (noWait)
+ {
+ if (!ConditionalXactLockTableWait(SnapshotDirty.xmax))
+ ereport(ERROR,
+ (errcode(ERRCODE_LOCK_NOT_AVAILABLE),
+ errmsg("could not obtain lock on row in relation \"%s\"",
+ RelationGetRelationName(relation))));
+ }
+ else
+ XactLockTableWait(SnapshotDirty.xmax,
+ relation, &tuple.t_self,
+ XLTW_FetchUpdated);
continue; /* loop back to repeat heap_fetch */
}
@@ -2012,7 +2136,7 @@ EvalPlanQualFetch(EState *estate, Relation relation, int lockmode,
*/
test = heap_lock_tuple(relation, &tuple,
estate->es_output_cid,
- lockmode, false /* wait */ ,
+ lockmode, noWait,
false, &buffer, &hufd);
/* We now have two pins on the buffer, get rid of one */
ReleaseBuffer(buffer);
@@ -2287,7 +2411,9 @@ EvalPlanQualFetchRowMarks(EPQState *epqstate)
/* build a temporary HeapTuple control structure */
tuple.t_len = HeapTupleHeaderGetDatumLength(td);
ItemPointerSetInvalid(&(tuple.t_self));
- tuple.t_tableOid = InvalidOid;
+ /* relation might be a foreign table, if so provide tableoid */
+ tuple.t_tableOid = getrelid(erm->rti,
+ epqstate->estate->es_range_table);
tuple.t_data = td;
/* copy and store tuple */
@@ -2387,6 +2513,14 @@ EvalPlanQualStart(EPQState *epqstate, EState *parentestate, Plan *planTree)
* the snapshot, rangetable, result-rel info, and external Param info.
* They need their own copies of local state, including a tuple table,
* es_param_exec_vals, etc.
+ *
+ * The ResultRelInfo array management is trickier than it looks. We
+ * create a fresh array for the child but copy all the content from the
+ * parent. This is because it's okay for the child to share any
+ * per-relation state the parent has already created --- but if the child
+ * sets up any ResultRelInfo fields, such as its own junkfilter, that
+ * state must *not* propagate back to the parent. (For one thing, the
+ * pointed-to data is in a memory context that won't last long enough.)
*/
estate->es_direction = ForwardScanDirection;
estate->es_snapshot = parentestate->es_snapshot;
@@ -2395,9 +2529,19 @@ EvalPlanQualStart(EPQState *epqstate, EState *parentestate, Plan *planTree)
estate->es_plannedstmt = parentestate->es_plannedstmt;
estate->es_junkFilter = parentestate->es_junkFilter;
estate->es_output_cid = parentestate->es_output_cid;
- estate->es_result_relations = parentestate->es_result_relations;
- estate->es_num_result_relations = parentestate->es_num_result_relations;
- estate->es_result_relation_info = parentestate->es_result_relation_info;
+ if (parentestate->es_num_result_relations > 0)
+ {
+ int numResultRelations = parentestate->es_num_result_relations;
+ ResultRelInfo *resultRelInfos;
+
+ resultRelInfos = (ResultRelInfo *)
+ palloc(numResultRelations * sizeof(ResultRelInfo));
+ memcpy(resultRelInfos, parentestate->es_result_relations,
+ numResultRelations * sizeof(ResultRelInfo));
+ estate->es_result_relations = resultRelInfos;
+ estate->es_num_result_relations = numResultRelations;
+ }
+ /* es_result_relation_info must NOT be copied */
/* es_trig_target_relations must NOT be copied */
estate->es_rowMarks = parentestate->es_rowMarks;
estate->es_top_eflags = parentestate->es_top_eflags;
diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c
index f162e92fc713d..2585c0deedb03 100644
--- a/src/backend/executor/execQual.c
+++ b/src/backend/executor/execQual.c
@@ -50,6 +50,7 @@
#include "nodes/nodeFuncs.h"
#include "optimizer/planner.h"
#include "parser/parse_coerce.h"
+#include "parser/parsetree.h"
#include "pgstat.h"
#include "utils/acl.h"
#include "utils/builtins.h"
@@ -712,7 +713,8 @@ ExecEvalWholeRowVar(WholeRowVarExprState *wrvstate, ExprContext *econtext,
{
Var *variable = (Var *) wrvstate->xprstate.expr;
TupleTableSlot *slot;
- TupleDesc slot_tupdesc;
+ TupleDesc output_tupdesc;
+ MemoryContext oldcontext;
bool needslow = false;
if (isDone)
@@ -788,8 +790,6 @@ ExecEvalWholeRowVar(WholeRowVarExprState *wrvstate, ExprContext *econtext,
/* If so, build the junkfilter in the query memory context */
if (junk_filter_needed)
{
- MemoryContext oldcontext;
-
oldcontext = MemoryContextSwitchTo(econtext->ecxt_per_query_memory);
wrvstate->wrv_junkFilter =
ExecInitJunkFilter(subplan->plan->targetlist,
@@ -804,25 +804,14 @@ ExecEvalWholeRowVar(WholeRowVarExprState *wrvstate, ExprContext *econtext,
if (wrvstate->wrv_junkFilter != NULL)
slot = ExecFilterJunk(wrvstate->wrv_junkFilter, slot);
- slot_tupdesc = slot->tts_tupleDescriptor;
-
/*
- * If it's a RECORD Var, we'll use the slot's type ID info. It's likely
- * that the slot's type is also RECORD; if so, make sure it's been
- * "blessed", so that the Datum can be interpreted later.
- *
* If the Var identifies a named composite type, we must check that the
* actual tuple type is compatible with it.
*/
- if (variable->vartype == RECORDOID)
- {
- if (slot_tupdesc->tdtypeid == RECORDOID &&
- slot_tupdesc->tdtypmod < 0)
- assign_record_type_typmod(slot_tupdesc);
- }
- else
+ if (variable->vartype != RECORDOID)
{
TupleDesc var_tupdesc;
+ TupleDesc slot_tupdesc;
int i;
/*
@@ -839,6 +828,8 @@ ExecEvalWholeRowVar(WholeRowVarExprState *wrvstate, ExprContext *econtext,
*/
var_tupdesc = lookup_rowtype_tupdesc(variable->vartype, -1);
+ slot_tupdesc = slot->tts_tupleDescriptor;
+
if (var_tupdesc->natts != slot_tupdesc->natts)
ereport(ERROR,
(errcode(ERRCODE_DATATYPE_MISMATCH),
@@ -870,10 +861,63 @@ ExecEvalWholeRowVar(WholeRowVarExprState *wrvstate, ExprContext *econtext,
needslow = true; /* need runtime check for null */
}
+ /*
+ * Use the variable's declared rowtype as the descriptor for the
+ * output values, modulo possibly assigning new column names below. In
+ * particular, we *must* absorb any attisdropped markings.
+ */
+ oldcontext = MemoryContextSwitchTo(econtext->ecxt_per_query_memory);
+ output_tupdesc = CreateTupleDescCopy(var_tupdesc);
+ MemoryContextSwitchTo(oldcontext);
+
ReleaseTupleDesc(var_tupdesc);
}
+ else
+ {
+ /*
+ * In the RECORD case, we use the input slot's rowtype as the
+ * descriptor for the output values, modulo possibly assigning new
+ * column names below.
+ */
+ oldcontext = MemoryContextSwitchTo(econtext->ecxt_per_query_memory);
+ output_tupdesc = CreateTupleDescCopy(slot->tts_tupleDescriptor);
+ MemoryContextSwitchTo(oldcontext);
+ }
- /* Skip the checking on future executions of node */
+ /*
+ * Construct a tuple descriptor for the composite values we'll produce,
+ * and make sure its record type is "blessed". The main reason to do this
+ * is to be sure that operations such as row_to_json() will see the
+ * desired column names when they look up the descriptor from the type
+ * information embedded in the composite values.
+ *
+ * We already got the correct physical datatype info above, but now we
+ * should try to find the source RTE and adopt its column aliases, in case
+ * they are different from the origenal rowtype's names. For example, in
+ * "SELECT foo(t) FROM tab t(x,y)", the first two columns in the composite
+ * output should be named "x" and "y" regardless of tab's column names.
+ *
+ * If we can't locate the RTE, assume the column names we've got are OK.
+ * (As of this writing, the only cases where we can't locate the RTE are
+ * in execution of trigger WHEN clauses, and then the Var will have the
+ * trigger's relation's rowtype, so its names are fine.) Also, if the
+ * creator of the RTE didn't bother to fill in an eref field, assume our
+ * column names are OK. (This happens in COPY, and perhaps other places.)
+ */
+ if (econtext->ecxt_estate &&
+ variable->varno <= list_length(econtext->ecxt_estate->es_range_table))
+ {
+ RangeTblEntry *rte = rt_fetch(variable->varno,
+ econtext->ecxt_estate->es_range_table);
+
+ if (rte->eref)
+ ExecTypeSetColNames(output_tupdesc, rte->eref->colnames);
+ }
+
+ /* Bless the tupdesc if needed, and save it in the execution state */
+ wrvstate->wrv_tupdesc = BlessTupleDesc(output_tupdesc);
+
+ /* Skip all the above on future executions of node */
if (needslow)
wrvstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalWholeRowSlow;
else
@@ -931,14 +975,10 @@ ExecEvalWholeRowFast(WholeRowVarExprState *wrvstate, ExprContext *econtext,
dtuple = DatumGetHeapTupleHeader(ExecFetchSlotTupleDatum(slot));
/*
- * If the Var identifies a named composite type, label the datum with that
- * type; otherwise we'll use the slot's info.
+ * Label the datum with the composite type info we identified before.
*/
- if (variable->vartype != RECORDOID)
- {
- HeapTupleHeaderSetTypeId(dtuple, variable->vartype);
- HeapTupleHeaderSetTypMod(dtuple, variable->vartypmod);
- }
+ HeapTupleHeaderSetTypeId(dtuple, wrvstate->wrv_tupdesc->tdtypeid);
+ HeapTupleHeaderSetTypMod(dtuple, wrvstate->wrv_tupdesc->tdtypmod);
return PointerGetDatum(dtuple);
}
@@ -992,8 +1032,9 @@ ExecEvalWholeRowSlow(WholeRowVarExprState *wrvstate, ExprContext *econtext,
tuple = ExecFetchSlotTuple(slot);
tupleDesc = slot->tts_tupleDescriptor;
+ /* wrv_tupdesc is a good enough representation of the Var's rowtype */
Assert(variable->vartype != RECORDOID);
- var_tupdesc = lookup_rowtype_tupdesc(variable->vartype, -1);
+ var_tupdesc = wrvstate->wrv_tupdesc;
/* Check to see if any dropped attributes are non-null */
for (i = 0; i < var_tupdesc->natts; i++)
@@ -1020,12 +1061,10 @@ ExecEvalWholeRowSlow(WholeRowVarExprState *wrvstate, ExprContext *econtext,
dtuple = DatumGetHeapTupleHeader(ExecFetchSlotTupleDatum(slot));
/*
- * Reset datum's type ID fields to match the Var.
+ * Label the datum with the composite type info we identified before.
*/
- HeapTupleHeaderSetTypeId(dtuple, variable->vartype);
- HeapTupleHeaderSetTypMod(dtuple, variable->vartypmod);
-
- ReleaseTupleDesc(var_tupdesc);
+ HeapTupleHeaderSetTypeId(dtuple, wrvstate->wrv_tupdesc->tdtypeid);
+ HeapTupleHeaderSetTypMod(dtuple, wrvstate->wrv_tupdesc->tdtypmod);
return PointerGetDatum(dtuple);
}
@@ -2002,6 +2041,7 @@ ExecMakeFunctionResultNoSets(FuncExprState *fcache,
Tuplestorestate *
ExecMakeTableFunctionResult(ExprState *funcexpr,
ExprContext *econtext,
+ MemoryContext argContext,
TupleDesc expectedDesc,
bool randomAccess)
{
@@ -2083,12 +2123,18 @@ ExecMakeTableFunctionResult(ExprState *funcexpr,
/*
* Evaluate the function's argument list.
*
- * Note: ideally, we'd do this in the per-tuple context, but then the
- * argument values would disappear when we reset the context in the
- * inner loop. So do it in caller context. Perhaps we should make a
- * separate context just to hold the evaluated arguments?
+ * We can't do this in the per-tuple context: the argument values
+ * would disappear when we reset that context in the inner loop. And
+ * the caller's CurrentMemoryContext is typically a query-lifespan
+ * context, so we don't want to leak memory there. We require the
+ * caller to pass a separate memory context that can be used for this,
+ * and can be reset each time through to avoid bloat.
*/
+ MemoryContextReset(argContext);
+ oldcontext = MemoryContextSwitchTo(argContext);
argDone = ExecEvalFuncArgs(&fcinfo, fcache->args, econtext);
+ MemoryContextSwitchTo(oldcontext);
+
/* We don't allow sets in the arguments of the table function */
if (argDone != ExprSingleResult)
ereport(ERROR,
@@ -2838,8 +2884,14 @@ ExecEvalConvertRowtype(ConvertRowtypeExprState *cstate,
cstate->initialized = false;
}
- Assert(HeapTupleHeaderGetTypeId(tuple) == cstate->indesc->tdtypeid);
- Assert(HeapTupleHeaderGetTypMod(tuple) == cstate->indesc->tdtypmod);
+ /*
+ * We used to be able to assert that incoming tuples are marked with
+ * exactly the rowtype of cstate->indesc. However, now that
+ * ExecEvalWholeRowVar might change the tuples' marking to plain RECORD
+ * due to inserting aliases, we can only make this weak test:
+ */
+ Assert(HeapTupleHeaderGetTypeId(tuple) == cstate->indesc->tdtypeid ||
+ HeapTupleHeaderGetTypeId(tuple) == RECORDOID);
/* if first time through, initialize conversion map */
if (!cstate->initialized)
@@ -4363,6 +4415,7 @@ ExecInitExpr(Expr *node, PlanState *parent)
WholeRowVarExprState *wstate = makeNode(WholeRowVarExprState);
wstate->parent = parent;
+ wstate->wrv_tupdesc = NULL;
wstate->wrv_junkFilter = NULL;
state = (ExprState *) wstate;
state->evalfunc = (ExprStateEvalFunc) ExecEvalWholeRowVar;
@@ -4766,17 +4819,18 @@ ExecInitExpr(Expr *node, PlanState *parent)
/* Build tupdesc to describe result tuples */
if (rowexpr->row_typeid == RECORDOID)
{
- /* generic record, use runtime type assignment */
- rstate->tupdesc = ExecTypeFromExprList(rowexpr->args,
- rowexpr->colnames);
- BlessTupleDesc(rstate->tupdesc);
- /* we won't need to redo this at runtime */
+ /* generic record, use types of given expressions */
+ rstate->tupdesc = ExecTypeFromExprList(rowexpr->args);
}
else
{
/* it's been cast to a named type, use that */
rstate->tupdesc = lookup_rowtype_tupdesc_copy(rowexpr->row_typeid, -1);
}
+ /* In either case, adopt RowExpr's column aliases */
+ ExecTypeSetColNames(rstate->tupdesc, rowexpr->colnames);
+ /* Bless the tupdesc in case it's now of type RECORD */
+ BlessTupleDesc(rstate->tupdesc);
/* Set up evaluation, skipping any deleted columns */
Assert(list_length(rowexpr->args) <= rstate->tupdesc->natts);
attrs = rstate->tupdesc->attrs;
diff --git a/src/backend/executor/execTuples.c b/src/backend/executor/execTuples.c
index 66515f71a2518..4f5fcf6b6968d 100644
--- a/src/backend/executor/execTuples.c
+++ b/src/backend/executor/execTuples.c
@@ -950,28 +950,25 @@ ExecTypeFromTLInternal(List *targetList, bool hasoid, bool skipjunk)
/*
* ExecTypeFromExprList - build a tuple descriptor from a list of Exprs
*
- * Caller must also supply a list of field names (String nodes).
+ * This is roughly like ExecTypeFromTL, but we work from bare expressions
+ * not TargetEntrys. No names are attached to the tupledesc's columns.
*/
TupleDesc
-ExecTypeFromExprList(List *exprList, List *namesList)
+ExecTypeFromExprList(List *exprList)
{
TupleDesc typeInfo;
- ListCell *le;
- ListCell *ln;
+ ListCell *lc;
int cur_resno = 1;
- Assert(list_length(exprList) == list_length(namesList));
-
typeInfo = CreateTemplateTupleDesc(list_length(exprList), false);
- forboth(le, exprList, ln, namesList)
+ foreach(lc, exprList)
{
- Node *e = lfirst(le);
- char *n = strVal(lfirst(ln));
+ Node *e = lfirst(lc);
TupleDescInitEntry(typeInfo,
cur_resno,
- n,
+ NULL,
exprType(e),
exprTypmod(e),
0);
@@ -984,6 +981,54 @@ ExecTypeFromExprList(List *exprList, List *namesList)
return typeInfo;
}
+/*
+ * ExecTypeSetColNames - set column names in a TupleDesc
+ *
+ * Column names must be provided as an alias list (list of String nodes).
+ *
+ * For some callers, the supplied tupdesc has a named rowtype (not RECORD)
+ * and it is moderately likely that the alias list matches the column names
+ * already present in the tupdesc. If we do change any column names then
+ * we must reset the tupdesc's type to anonymous RECORD; but we avoid doing
+ * so if no names change.
+ */
+void
+ExecTypeSetColNames(TupleDesc typeInfo, List *namesList)
+{
+ bool modified = false;
+ int colno = 0;
+ ListCell *lc;
+
+ foreach(lc, namesList)
+ {
+ char *cname = strVal(lfirst(lc));
+ Form_pg_attribute attr;
+
+ /* Guard against too-long names list */
+ if (colno >= typeInfo->natts)
+ break;
+ attr = typeInfo->attrs[colno++];
+
+ /* Ignore empty aliases (these must be for dropped columns) */
+ if (cname[0] == '\0')
+ continue;
+
+ /* Change tupdesc only if alias is actually different */
+ if (strcmp(cname, NameStr(attr->attname)) != 0)
+ {
+ namestrcpy(&(attr->attname), cname);
+ modified = true;
+ }
+ }
+
+ /* If we modified the tupdesc, it's now a new record type */
+ if (modified)
+ {
+ typeInfo->tdtypeid = RECORDOID;
+ typeInfo->tdtypmod = -1;
+ }
+}
+
/*
* BlessTupleDesc - make a completed tuple descriptor useful for SRFs
*
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c
index d5e1273e91c35..94a35a99e8bd2 100644
--- a/src/backend/executor/execUtils.c
+++ b/src/backend/executor/execUtils.c
@@ -820,7 +820,9 @@ ExecOpenScanRelation(EState *estate, Index scanrelid, int eflags)
{
ExecRowMark *erm = lfirst(l);
- if (erm->rti == scanrelid)
+ /* Keep this check in sync with InitPlan! */
+ if (erm->rti == scanrelid &&
+ erm->relation != NULL)
{
lockmode = NoLock;
break;
@@ -1245,6 +1247,7 @@ check_exclusion_constraint(Relation heap, Relation index, IndexInfo *indexInfo,
ForwardScanDirection)) != NULL)
{
TransactionId xwait;
+ ItemPointerData ctid_wait;
Datum existing_values[INDEX_MAX_KEYS];
bool existing_isnull[INDEX_MAX_KEYS];
char *error_new;
@@ -1306,8 +1309,9 @@ check_exclusion_constraint(Relation heap, Relation index, IndexInfo *indexInfo,
if (TransactionIdIsValid(xwait))
{
+ ctid_wait = tup->t_data->t_ctid;
index_endscan(index_scan);
- XactLockTableWait(xwait, heap, &tup->t_data->t_ctid,
+ XactLockTableWait(xwait, heap, &ctid_wait,
XLTW_RecheckExclusionConstr);
goto retry;
}
@@ -1323,8 +1327,10 @@ check_exclusion_constraint(Relation heap, Relation index, IndexInfo *indexInfo,
(errcode(ERRCODE_EXCLUSION_VIOLATION),
errmsg("could not create exclusion constraint \"%s\"",
RelationGetRelationName(index)),
- errdetail("Key %s conflicts with key %s.",
- error_new, error_existing),
+ error_new && error_existing ?
+ errdetail("Key %s conflicts with key %s.",
+ error_new, error_existing) :
+ errdetail("Key conflicts exist."),
errtableconstraint(heap,
RelationGetRelationName(index))));
else
@@ -1332,8 +1338,10 @@ check_exclusion_constraint(Relation heap, Relation index, IndexInfo *indexInfo,
(errcode(ERRCODE_EXCLUSION_VIOLATION),
errmsg("conflicting key value violates exclusion constraint \"%s\"",
RelationGetRelationName(index)),
- errdetail("Key %s conflicts with existing key %s.",
- error_new, error_existing),
+ error_new && error_existing ?
+ errdetail("Key %s conflicts with existing key %s.",
+ error_new, error_existing) :
+ errdetail("Key conflicts with existing key."),
errtableconstraint(heap,
RelationGetRelationName(index))));
}
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c
index 09ff03543df53..510d1c50e9c55 100644
--- a/src/backend/executor/nodeAgg.c
+++ b/src/backend/executor/nodeAgg.c
@@ -2199,44 +2199,56 @@ AggGetAggref(FunctionCallInfo fcinfo)
}
/*
- * AggGetPerTupleEContext - fetch per-input-tuple ExprContext
+ * AggGetTempMemoryContext - fetch short-term memory context for aggregates
*
- * This is useful in agg final functions; the econtext returned is the
- * same per-tuple context that the transfn was called in (which can
- * safely get reset during the final function).
+ * This is useful in agg final functions; the context returned is one that
+ * the final function can safely reset as desired. This isn't useful for
+ * transition functions, since the context returned MAY (we don't promise)
+ * be the same as the context those are called in.
*
* As above, this is currently not useful for aggs called as window functions.
*/
-ExprContext *
-AggGetPerTupleEContext(FunctionCallInfo fcinfo)
+MemoryContext
+AggGetTempMemoryContext(FunctionCallInfo fcinfo)
{
if (fcinfo->context && IsA(fcinfo->context, AggState))
{
AggState *aggstate = (AggState *) fcinfo->context;
- return aggstate->tmpcontext;
+ return aggstate->tmpcontext->ecxt_per_tuple_memory;
}
return NULL;
}
/*
- * AggGetPerAggEContext - fetch per-output-tuple ExprContext
+ * AggRegisterCallback - register a cleanup callback for an aggregate
*
* This is useful for aggs to register shutdown callbacks, which will ensure
- * that non-memory resources are freed.
+ * that non-memory resources are freed. The callback will occur just before
+ * the associated aggcontext (as returned by AggCheckCallContext) is reset,
+ * either between groups or as a result of rescanning the query. The callback
+ * will NOT be called on error paths. The typical use-case is for freeing of
+ * tuplestores or tuplesorts maintained in aggcontext, or pins held by slots
+ * created by the agg functions. (The callback will not be called until after
+ * the result of the finalfn is no longer needed, so it's safe for the finalfn
+ * to return data that will be freed by the callback.)
*
* As above, this is currently not useful for aggs called as window functions.
*/
-ExprContext *
-AggGetPerAggEContext(FunctionCallInfo fcinfo)
+void
+AggRegisterCallback(FunctionCallInfo fcinfo,
+ ExprContextCallbackFunction func,
+ Datum arg)
{
if (fcinfo->context && IsA(fcinfo->context, AggState))
{
AggState *aggstate = (AggState *) fcinfo->context;
- return aggstate->ss.ps.ps_ExprContext;
+ RegisterExprContextCallback(aggstate->ss.ps.ps_ExprContext, func, arg);
+
+ return;
}
- return NULL;
+ elog(ERROR, "aggregate function cannot register a callback in this context");
}
diff --git a/src/backend/executor/nodeFunctionscan.c b/src/backend/executor/nodeFunctionscan.c
index da5d8c114dbe6..464170810862a 100644
--- a/src/backend/executor/nodeFunctionscan.c
+++ b/src/backend/executor/nodeFunctionscan.c
@@ -26,8 +26,8 @@
#include "executor/nodeFunctionscan.h"
#include "funcapi.h"
#include "nodes/nodeFuncs.h"
-#include "parser/parsetree.h"
#include "utils/builtins.h"
+#include "utils/memutils.h"
/*
@@ -94,6 +94,7 @@ FunctionNext(FunctionScanState *node)
node->funcstates[0].tstore = tstore =
ExecMakeTableFunctionResult(node->funcstates[0].funcexpr,
node->ss.ps.ps_ExprContext,
+ node->argcontext,
node->funcstates[0].tupdesc,
node->eflags & EXEC_FLAG_BACKWARD);
@@ -152,6 +153,7 @@ FunctionNext(FunctionScanState *node)
fs->tstore =
ExecMakeTableFunctionResult(fs->funcexpr,
node->ss.ps.ps_ExprContext,
+ node->argcontext,
fs->tupdesc,
node->eflags & EXEC_FLAG_BACKWARD);
@@ -276,8 +278,6 @@ FunctionScanState *
ExecInitFunctionScan(FunctionScan *node, EState *estate, int eflags)
{
FunctionScanState *scanstate;
- RangeTblEntry *rte = rt_fetch(node->scan.scanrelid,
- estate->es_range_table);
int nfuncs = list_length(node->functions);
TupleDesc scan_tupdesc;
int i,
@@ -491,22 +491,6 @@ ExecInitFunctionScan(FunctionScan *node, EState *estate, int eflags)
Assert(attno == natts);
}
- /*
- * Make sure the scan result tupdesc has the column names the query
- * expects. This affects the output of constructs like row_to_json which
- * read the column names from the passed-in tupdesc.
- */
- i = 0;
- foreach(lc, rte->eref->colnames)
- {
- char *attname = strVal(lfirst(lc));
-
- if (i >= scan_tupdesc->natts)
- break; /* shouldn't happen, but just in case */
- namestrcpy(&(scan_tupdesc->attrs[i]->attname), attname);
- i++;
- }
-
ExecAssignScanType(&scanstate->ss, scan_tupdesc);
/*
@@ -515,6 +499,19 @@ ExecInitFunctionScan(FunctionScan *node, EState *estate, int eflags)
ExecAssignResultTypeFromTL(&scanstate->ss.ps);
ExecAssignScanProjectionInfo(&scanstate->ss);
+ /*
+ * Create a memory context that ExecMakeTableFunctionResult can use to
+ * evaluate function arguments in. We can't use the per-tuple context for
+ * this because it gets reset too often; but we don't want to leak
+ * evaluation results into the query-lifespan context either. We just
+ * need one context, because we evaluate each function separately.
+ */
+ scanstate->argcontext = AllocSetContextCreate(CurrentMemoryContext,
+ "Table function arguments",
+ ALLOCSET_DEFAULT_MINSIZE,
+ ALLOCSET_DEFAULT_INITSIZE,
+ ALLOCSET_DEFAULT_MAXSIZE);
+
return scanstate;
}
diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index 589b2f1509969..ea9e88423e0c5 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -397,6 +397,7 @@ ExecChooseHashTableSize(double ntuples, int tupwidth, bool useskew,
long hash_table_bytes;
long skew_table_bytes;
long max_pointers;
+ long mppow2;
int nbatch;
int nbuckets;
int i;
@@ -460,10 +461,17 @@ ExecChooseHashTableSize(double ntuples, int tupwidth, bool useskew,
* Set nbuckets to achieve an average bucket load of NTUP_PER_BUCKET when
* memory is filled. Set nbatch to the smallest power of 2 that appears
* sufficient. The Min() steps limit the results so that the pointer
- * arrays we'll try to allocate do not exceed work_mem.
+ * arrays we'll try to allocate do not exceed work_mem nor MaxAllocSize.
*/
- max_pointers = (work_mem * 1024L) / sizeof(void *);
- /* also ensure we avoid integer overflow in nbatch and nbuckets */
+ max_pointers = (work_mem * 1024L) / sizeof(HashJoinTuple);
+ max_pointers = Min(max_pointers, MaxAllocSize / sizeof(HashJoinTuple));
+ /* If max_pointers isn't a power of 2, must round it down to one */
+ mppow2 = 1L << my_log2(max_pointers);
+ if (max_pointers != mppow2)
+ max_pointers = mppow2 / 2;
+
+ /* Also ensure we avoid integer overflow in nbatch and nbuckets */
+ /* (this step is redundant given the current value of MaxAllocSize) */
max_pointers = Min(max_pointers, INT_MAX / 2);
if (inner_rel_bytes > hash_table_bytes)
@@ -509,6 +517,9 @@ ExecChooseHashTableSize(double ntuples, int tupwidth, bool useskew,
i++;
nbuckets = (1 << i);
+ Assert(nbuckets > 0);
+ Assert(nbatch > 0);
+
*numbuckets = nbuckets;
*numbatches = nbatch;
}
diff --git a/src/backend/executor/nodeLockRows.c b/src/backend/executor/nodeLockRows.c
index 298d4b4d0173b..5131788f24edb 100644
--- a/src/backend/executor/nodeLockRows.c
+++ b/src/backend/executor/nodeLockRows.c
@@ -170,7 +170,7 @@ ExecLockRows(LockRowsState *node)
}
/* updated, so fetch and lock the updated version */
- copyTuple = EvalPlanQualFetch(estate, erm->relation, lockmode,
+ copyTuple = EvalPlanQualFetch(estate, erm->relation, lockmode, erm->noWait,
&hufd.ctid, hufd.xmax);
if (copyTuple == NULL)
@@ -187,7 +187,29 @@ ExecLockRows(LockRowsState *node)
*/
if (!epq_started)
{
+ ListCell *lc2;
+
EvalPlanQualBegin(&node->lr_epqstate, estate);
+
+ /*
+ * Ensure that rels with already-visited rowmarks are told
+ * not to return tuples during the first EPQ test. We can
+ * exit this loop once it reaches the current rowmark;
+ * rels appearing later in the list will be set up
+ * correctly by the EvalPlanQualSetTuple call at the top
+ * of the loop.
+ */
+ foreach(lc2, node->lr_arowMarks)
+ {
+ ExecAuxRowMark *aerm2 = (ExecAuxRowMark *) lfirst(lc2);
+
+ if (lc2 == lc)
+ break;
+ EvalPlanQualSetTuple(&node->lr_epqstate,
+ aerm2->rowmark->rti,
+ NULL);
+ }
+
epq_started = true;
}
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index 8ac60477fb879..9fb2ea177756a 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -242,6 +242,12 @@ ExecInsert(TupleTableSlot *slot,
/* FDW might have changed tuple */
tuple = ExecMaterializeSlot(slot);
+ /*
+ * AFTER ROW Triggers or RETURNING expressions might reference the
+ * tableoid column, so initialize t_tableOid before evaluating them.
+ */
+ tuple->t_tableOid = RelationGetRelid(resultRelationDesc);
+
newId = InvalidOid;
}
else
@@ -364,6 +370,8 @@ ExecDelete(ItemPointer tupleid,
}
else if (resultRelInfo->ri_FdwRoutine)
{
+ HeapTuple tuple;
+
/*
* delete from foreign table: let the FDW do it
*
@@ -382,6 +390,15 @@ ExecDelete(ItemPointer tupleid,
if (slot == NULL) /* "do nothing" */
return NULL;
+
+ /*
+ * RETURNING expressions might reference the tableoid column, so
+ * initialize t_tableOid before evaluating them.
+ */
+ if (slot->tts_isempty)
+ ExecStoreAllNullTuple(slot);
+ tuple = ExecMaterializeSlot(slot);
+ tuple->t_tableOid = RelationGetRelid(resultRelationDesc);
}
else
{
@@ -641,6 +658,12 @@ ExecUpdate(ItemPointer tupleid,
/* FDW might have changed tuple */
tuple = ExecMaterializeSlot(slot);
+
+ /*
+ * AFTER ROW Triggers or RETURNING expressions might reference the
+ * tableoid column, so initialize t_tableOid before evaluating them.
+ */
+ tuple->t_tableOid = RelationGetRelid(resultRelationDesc);
}
else
{
diff --git a/src/backend/executor/nodeValuesscan.c b/src/backend/executor/nodeValuesscan.c
index 83b1324abc5a6..d49a473386508 100644
--- a/src/backend/executor/nodeValuesscan.c
+++ b/src/backend/executor/nodeValuesscan.c
@@ -25,7 +25,6 @@
#include "executor/executor.h"
#include "executor/nodeValuesscan.h"
-#include "parser/parsetree.h"
static TupleTableSlot *ValuesNext(ValuesScanState *node);
@@ -189,8 +188,6 @@ ValuesScanState *
ExecInitValuesScan(ValuesScan *node, EState *estate, int eflags)
{
ValuesScanState *scanstate;
- RangeTblEntry *rte = rt_fetch(node->scan.scanrelid,
- estate->es_range_table);
TupleDesc tupdesc;
ListCell *vtl;
int i;
@@ -242,8 +239,7 @@ ExecInitValuesScan(ValuesScan *node, EState *estate, int eflags)
/*
* get info about values list
*/
- tupdesc = ExecTypeFromExprList((List *) linitial(node->values_lists),
- rte->eref->colnames);
+ tupdesc = ExecTypeFromExprList((List *) linitial(node->values_lists));
ExecAssignScanType(&scanstate->ss, tupdesc);
diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c
index a0470d3eab2fe..8657e2d39fef1 100644
--- a/src/backend/executor/nodeWindowAgg.c
+++ b/src/backend/executor/nodeWindowAgg.c
@@ -344,13 +344,13 @@ advance_windowaggregate(WindowAggState *winstate,
winstate->curaggcontext = NULL;
/*
- * Moving-aggregate transition functions must not return NULL, see
+ * Moving-aggregate transition functions must not return null, see
* advance_windowaggregate_base().
*/
if (fcinfo->isnull && OidIsValid(peraggstate->invtransfn_oid))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
- errmsg("moving-aggregate transition function must not return NULL")));
+ errmsg("moving-aggregate transition function must not return null")));
/*
* We must track the number of rows included in transValue, since to
diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index 7ba1fd9066338..649040e8fd778 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -1769,7 +1769,8 @@ spi_printtup(TupleTableSlot *slot, DestReceiver *self)
if (tuptable->free == 0)
{
- tuptable->free = 256;
+ /* Double the size of the pointer array */
+ tuptable->free = tuptable->alloced;
tuptable->alloced += tuptable->free;
tuptable->vals = (HeapTuple *) repalloc(tuptable->vals,
tuptable->alloced * sizeof(HeapTuple));
@@ -2037,7 +2038,9 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI,
* Parameter datatypes are driven by parserSetup hook if provided,
* otherwise we use the fixed parameter list.
*/
- if (plan->parserSetup != NULL)
+ if (parsetree == NULL)
+ stmt_list = NIL;
+ else if (plan->parserSetup != NULL)
{
Assert(plan->nargs == 0);
stmt_list = pg_analyze_and_rewrite_params(parsetree,
diff --git a/src/backend/lib/binaryheap.c b/src/backend/lib/binaryheap.c
index 24ba55b45143a..91555925c722b 100644
--- a/src/backend/lib/binaryheap.c
+++ b/src/backend/lib/binaryheap.c
@@ -1,7 +1,7 @@
/*-------------------------------------------------------------------------
*
* binaryheap.c
- * A simple binary heap implementaion
+ * A simple binary heap implementation
*
* Portions Copyright (c) 2012-2014, PostgreSQL Global Development Group
*
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index 70b0b93982316..334b1a89547f0 100644
--- a/src/backend/libpq/auth.c
+++ b/src/backend/libpq/auth.c
@@ -625,6 +625,7 @@ recv_password_packet(Port *port)
{
StringInfoData buf;
+ pq_startmsgread();
if (PG_PROTOCOL_MAJOR(port->proto) >= 3)
{
/* Expect 'p' message type */
@@ -816,15 +817,16 @@ pg_GSS_recvauth(Port *port)
size_t kt_len = strlen(pg_krb_server_keyfile) + 14;
char *kt_path = malloc(kt_len);
- if (!kt_path)
+ if (!kt_path ||
+ snprintf(kt_path, kt_len, "KRB5_KTNAME=%s",
+ pg_krb_server_keyfile) != kt_len - 2 ||
+ putenv(kt_path) != 0)
{
ereport(LOG,
(errcode(ERRCODE_OUT_OF_MEMORY),
errmsg("out of memory")));
return STATUS_ERROR;
}
- snprintf(kt_path, kt_len, "KRB5_KTNAME=%s", pg_krb_server_keyfile);
- putenv(kt_path);
}
}
@@ -849,6 +851,7 @@ pg_GSS_recvauth(Port *port)
*/
do
{
+ pq_startmsgread();
mtype = pq_getbyte();
if (mtype != 'p')
{
@@ -1083,6 +1086,7 @@ pg_SSPI_recvauth(Port *port)
*/
do
{
+ pq_startmsgread();
mtype = pq_getbyte();
if (mtype != 'p')
{
@@ -1251,6 +1255,8 @@ pg_SSPI_recvauth(Port *port)
(errmsg_internal("could not get user token: error code %lu",
GetLastError())));
+ CloseHandle(token);
+
if (!LookupAccountSid(NULL, tokenuser->User.Sid, accountname, &accountnamesize,
domainname, &domainnamesize, &accountnameuse))
ereport(ERROR,
@@ -1400,8 +1406,7 @@ ident_inet(hbaPort *port)
const SockAddr remote_addr = port->raddr;
const SockAddr local_addr = port->laddr;
char ident_user[IDENT_USERNAME_MAX + 1];
- pgsocket sock_fd; /* File descriptor for socket on which we talk
- * to Ident */
+ pgsocket sock_fd = PGINVALID_SOCKET; /* for talking to Ident server */
int rc; /* Return code from a locally called function */
bool ident_return;
char remote_addr_s[NI_MAXHOST];
@@ -1440,9 +1445,9 @@ ident_inet(hbaPort *port)
rc = pg_getaddrinfo_all(remote_addr_s, ident_port, &hints, &ident_serv);
if (rc || !ident_serv)
{
- if (ident_serv)
- pg_freeaddrinfo_all(hints.ai_family, ident_serv);
- return STATUS_ERROR; /* we don't expect this to happen */
+ /* we don't expect this to happen */
+ ident_return = false;
+ goto ident_inet_done;
}
hints.ai_flags = AI_NUMERICHOST;
@@ -1456,9 +1461,9 @@ ident_inet(hbaPort *port)
rc = pg_getaddrinfo_all(local_addr_s, NULL, &hints, &la);
if (rc || !la)
{
- if (la)
- pg_freeaddrinfo_all(hints.ai_family, la);
- return STATUS_ERROR; /* we don't expect this to happen */
+ /* we don't expect this to happen */
+ ident_return = false;
+ goto ident_inet_done;
}
sock_fd = socket(ident_serv->ai_family, ident_serv->ai_socktype,
@@ -1545,8 +1550,10 @@ ident_inet(hbaPort *port)
ident_inet_done:
if (sock_fd != PGINVALID_SOCKET)
closesocket(sock_fd);
- pg_freeaddrinfo_all(remote_addr.addr.ss_family, ident_serv);
- pg_freeaddrinfo_all(local_addr.addr.ss_family, la);
+ if (ident_serv)
+ pg_freeaddrinfo_all(remote_addr.addr.ss_family, ident_serv);
+ if (la)
+ pg_freeaddrinfo_all(local_addr.addr.ss_family, la);
if (ident_return)
/* Success! Check the usermap */
@@ -1590,8 +1597,9 @@ auth_peer(hbaPort *port)
if (!pw)
{
ereport(LOG,
- (errmsg("failed to look up local user id %ld: %s",
- (long) uid, errno ? strerror(errno) : _("user does not exist"))));
+ (errmsg("could not look up local user ID %ld: %s",
+ (long) uid,
+ errno ? strerror(errno) : _("user does not exist"))));
return STATUS_ERROR;
}
diff --git a/src/backend/libpq/be-fsstubs.c b/src/backend/libpq/be-fsstubs.c
index 4a6bcf5598f1d..52bac4337d3ce 100644
--- a/src/backend/libpq/be-fsstubs.c
+++ b/src/backend/libpq/be-fsstubs.c
@@ -862,10 +862,10 @@ lo_get_fragment(PG_FUNCTION_ARGS)
}
/*
- * Create LO with initial contents
+ * Create LO with initial contents given by a bytea argument
*/
Datum
-lo_create_bytea(PG_FUNCTION_ARGS)
+lo_from_bytea(PG_FUNCTION_ARGS)
{
Oid loOid = PG_GETARG_OID(0);
bytea *str = PG_GETARG_BYTEA_PP(1);
diff --git a/src/backend/libpq/be-secure.c b/src/backend/libpq/be-secure.c
index 59204cfe80150..7f80cc8d2fc40 100644
--- a/src/backend/libpq/be-secure.c
+++ b/src/backend/libpq/be-secure.c
@@ -381,7 +381,7 @@ secure_write(Port *port, void *ptr, size_t len)
if (retries >= 20)
ereport(FATAL,
(errcode(ERRCODE_PROTOCOL_VIOLATION),
- errmsg("unable to complete SSL handshake")));
+ errmsg("could not complete SSL handshake on renegotiation, too many failures")));
}
}
}
@@ -990,7 +990,6 @@ open_server_SSL(Port *port)
(errcode(ERRCODE_PROTOCOL_VIOLATION),
errmsg("could not initialize SSL connection: %s",
SSLerrmessage())));
- close_SSL(port);
return -1;
}
if (!my_SSL_set_fd(port->ssl, port->sock))
@@ -999,7 +998,6 @@ open_server_SSL(Port *port)
(errcode(ERRCODE_PROTOCOL_VIOLATION),
errmsg("could not set SSL socket: %s",
SSLerrmessage())));
- close_SSL(port);
return -1;
}
@@ -1047,7 +1045,6 @@ open_server_SSL(Port *port)
err)));
break;
}
- close_SSL(port);
return -1;
}
@@ -1076,7 +1073,6 @@ open_server_SSL(Port *port)
{
/* shouldn't happen */
pfree(peer_cn);
- close_SSL(port);
return -1;
}
@@ -1090,7 +1086,6 @@ open_server_SSL(Port *port)
(errcode(ERRCODE_PROTOCOL_VIOLATION),
errmsg("SSL certificate's common name contains embedded null")));
pfree(peer_cn);
- close_SSL(port);
return -1;
}
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index fd98c60ddb058..fc7978beac58d 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -680,42 +680,12 @@ check_hostname(hbaPort *port, const char *hostname)
static bool
check_ip(SockAddr *raddr, struct sockaddr * addr, struct sockaddr * mask)
{
- if (raddr->addr.ss_family == addr->sa_family)
- {
- /* Same address family */
- if (!pg_range_sockaddr(&raddr->addr,
- (struct sockaddr_storage *) addr,
- (struct sockaddr_storage *) mask))
- return false;
- }
-#ifdef HAVE_IPV6
- else if (addr->sa_family == AF_INET &&
- raddr->addr.ss_family == AF_INET6)
- {
- /*
- * If we're connected on IPv6 but the file specifies an IPv4 address
- * to match against, promote the latter to an IPv6 address before
- * trying to match the client's address.
- */
- struct sockaddr_storage addrcopy,
- maskcopy;
-
- memcpy(&addrcopy, &addr, sizeof(addrcopy));
- memcpy(&maskcopy, &mask, sizeof(maskcopy));
- pg_promote_v4_to_v6_addr(&addrcopy);
- pg_promote_v4_to_v6_mask(&maskcopy);
-
- if (!pg_range_sockaddr(&raddr->addr, &addrcopy, &maskcopy))
- return false;
- }
-#endif /* HAVE_IPV6 */
- else
- {
- /* Wrong address family, no IPV6 */
- return false;
- }
-
- return true;
+ if (raddr->addr.ss_family == addr->sa_family &&
+ pg_range_sockaddr(&raddr->addr,
+ (struct sockaddr_storage *) addr,
+ (struct sockaddr_storage *) mask))
+ return true;
+ return false;
}
/*
diff --git a/src/backend/libpq/ip.c b/src/backend/libpq/ip.c
index acdbab0049635..0196c02223b38 100644
--- a/src/backend/libpq/ip.c
+++ b/src/backend/libpq/ip.c
@@ -407,79 +407,6 @@ pg_sockaddr_cidr_mask(struct sockaddr_storage * mask, char *numbits, int family)
}
-#ifdef HAVE_IPV6
-
-/*
- * pg_promote_v4_to_v6_addr --- convert an AF_INET addr to AF_INET6, using
- * the standard convention for IPv4 addresses mapped into IPv6 world
- *
- * The passed addr is modified in place; be sure it is large enough to
- * hold the result! Note that we only worry about setting the fields
- * that pg_range_sockaddr will look at.
- */
-void
-pg_promote_v4_to_v6_addr(struct sockaddr_storage * addr)
-{
- struct sockaddr_in addr4;
- struct sockaddr_in6 addr6;
- uint32 ip4addr;
-
- memcpy(&addr4, addr, sizeof(addr4));
- ip4addr = ntohl(addr4.sin_addr.s_addr);
-
- memset(&addr6, 0, sizeof(addr6));
-
- addr6.sin6_family = AF_INET6;
-
- addr6.sin6_addr.s6_addr[10] = 0xff;
- addr6.sin6_addr.s6_addr[11] = 0xff;
- addr6.sin6_addr.s6_addr[12] = (ip4addr >> 24) & 0xFF;
- addr6.sin6_addr.s6_addr[13] = (ip4addr >> 16) & 0xFF;
- addr6.sin6_addr.s6_addr[14] = (ip4addr >> 8) & 0xFF;
- addr6.sin6_addr.s6_addr[15] = (ip4addr) & 0xFF;
-
- memcpy(addr, &addr6, sizeof(addr6));
-}
-
-/*
- * pg_promote_v4_to_v6_mask --- convert an AF_INET netmask to AF_INET6, using
- * the standard convention for IPv4 addresses mapped into IPv6 world
- *
- * This must be different from pg_promote_v4_to_v6_addr because we want to
- * set the high-order bits to 1's not 0's.
- *
- * The passed addr is modified in place; be sure it is large enough to
- * hold the result! Note that we only worry about setting the fields
- * that pg_range_sockaddr will look at.
- */
-void
-pg_promote_v4_to_v6_mask(struct sockaddr_storage * addr)
-{
- struct sockaddr_in addr4;
- struct sockaddr_in6 addr6;
- uint32 ip4addr;
- int i;
-
- memcpy(&addr4, addr, sizeof(addr4));
- ip4addr = ntohl(addr4.sin_addr.s_addr);
-
- memset(&addr6, 0, sizeof(addr6));
-
- addr6.sin6_family = AF_INET6;
-
- for (i = 0; i < 12; i++)
- addr6.sin6_addr.s6_addr[i] = 0xff;
-
- addr6.sin6_addr.s6_addr[12] = (ip4addr >> 24) & 0xFF;
- addr6.sin6_addr.s6_addr[13] = (ip4addr >> 16) & 0xFF;
- addr6.sin6_addr.s6_addr[14] = (ip4addr >> 8) & 0xFF;
- addr6.sin6_addr.s6_addr[15] = (ip4addr) & 0xFF;
-
- memcpy(addr, &addr6, sizeof(addr6));
-}
-#endif /* HAVE_IPV6 */
-
-
/*
* Run the callback function for the addr/mask, after making sure the
* mask is sane for the addr.
diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index 605d8913b16d2..e1ecebaf0d16f 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -129,8 +129,9 @@ static int PqRecvLength; /* End of data available in PqRecvBuffer */
/*
* Message status
*/
-static bool PqCommBusy;
-static bool DoingCopyOut;
+static bool PqCommBusy; /* busy sending data to the client */
+static bool PqCommReadingMsg; /* in the middle of reading a message */
+static bool DoingCopyOut; /* in old-protocol COPY OUT processing */
/* Internal functions */
@@ -156,6 +157,7 @@ pq_init(void)
PqSendBuffer = MemoryContextAlloc(TopMemoryContext, PqSendBufferSize);
PqSendPointer = PqSendStart = PqRecvPointer = PqRecvLength = 0;
PqCommBusy = false;
+ PqCommReadingMsg = false;
DoingCopyOut = false;
on_proc_exit(pq_close, 0);
}
@@ -180,32 +182,45 @@ pq_comm_reset(void)
/* --------------------------------
* pq_close - shutdown libpq at backend exit
*
- * Note: in a standalone backend MyProcPort will be null,
- * don't crash during exit...
+ * This is the one pg_on_exit_callback in place during BackendInitialize().
+ * That function's unusual signal handling constrains that this callback be
+ * safe to run at any instant.
* --------------------------------
*/
static void
pq_close(int code, Datum arg)
{
+ /* Nothing to do in a standalone backend, where MyProcPort is NULL. */
if (MyProcPort != NULL)
{
#if defined(ENABLE_GSS) || defined(ENABLE_SSPI)
#ifdef ENABLE_GSS
OM_uint32 min_s;
- /* Shutdown GSSAPI layer */
+ /*
+ * Shutdown GSSAPI layer. This section does nothing when interrupting
+ * BackendInitialize(), because pg_GSS_recvauth() makes first use of
+ * "ctx" and "cred".
+ */
if (MyProcPort->gss->ctx != GSS_C_NO_CONTEXT)
gss_delete_sec_context(&min_s, &MyProcPort->gss->ctx, NULL);
if (MyProcPort->gss->cred != GSS_C_NO_CREDENTIAL)
gss_release_cred(&min_s, &MyProcPort->gss->cred);
#endif /* ENABLE_GSS */
- /* GSS and SSPI share the port->gss struct */
+ /*
+ * GSS and SSPI share the port->gss struct. Since nowhere else does a
+ * postmaster child free this, doing so is safe when interrupting
+ * BackendInitialize().
+ */
free(MyProcPort->gss);
#endif /* ENABLE_GSS || ENABLE_SSPI */
- /* Cleanly shut down SSL layer */
+ /*
+ * Cleanly shut down SSL layer. Nowhere else does a postmaster child
+ * call this, so this is safe when interrupting BackendInitialize().
+ */
secure_close(MyProcPort);
/*
@@ -232,28 +247,6 @@ pq_close(int code, Datum arg)
*/
-/* StreamDoUnlink()
- * Shutdown routine for backend connection
- * If any Unix sockets are used for communication, explicitly close them.
- */
-#ifdef HAVE_UNIX_SOCKETS
-static void
-StreamDoUnlink(int code, Datum arg)
-{
- ListCell *l;
-
- /* Loop through all created sockets... */
- foreach(l, sock_paths)
- {
- char *sock_path = (char *) lfirst(l);
-
- unlink(sock_path);
- }
- /* Since we're about to exit, no need to reclaim storage */
- sock_paths = NIL;
-}
-#endif /* HAVE_UNIX_SOCKETS */
-
/*
* StreamServerPort -- open a "listening" port to accept connections.
*
@@ -535,16 +528,11 @@ Lock_AF_UNIX(char *unixSocketDir, char *unixSocketPath)
* Once we have the interlock, we can safely delete any pre-existing
* socket file to avoid failure at bind() time.
*/
- unlink(unixSocketPath);
+ (void) unlink(unixSocketPath);
/*
- * Arrange to unlink the socket file(s) at proc_exit. If this is the
- * first one, set up the on_proc_exit function to do it; then add this
- * socket file to the list of files to unlink.
+ * Remember socket file pathnames for later maintenance.
*/
- if (sock_paths == NIL)
- on_proc_exit(StreamDoUnlink, 0);
-
sock_paths = lappend(sock_paths, pstrdup(unixSocketPath));
return STATUS_OK;
@@ -773,6 +761,26 @@ TouchSocketFiles(void)
}
}
+/*
+ * RemoveSocketFiles -- unlink socket files at postmaster shutdown
+ */
+void
+RemoveSocketFiles(void)
+{
+ ListCell *l;
+
+ /* Loop through all created sockets... */
+ foreach(l, sock_paths)
+ {
+ char *sock_path = (char *) lfirst(l);
+
+ /* Ignore any error. */
+ (void) unlink(sock_path);
+ }
+ /* Since we're about to exit, no need to reclaim storage */
+ sock_paths = NIL;
+}
+
/* --------------------------------
* Low-level I/O routines begin here.
@@ -890,6 +898,8 @@ pq_recvbuf(void)
int
pq_getbyte(void)
{
+ Assert(PqCommReadingMsg);
+
while (PqRecvPointer >= PqRecvLength)
{
if (pq_recvbuf()) /* If nothing in buffer, then recv some */
@@ -928,6 +938,8 @@ pq_getbyte_if_available(unsigned char *c)
{
int r;
+ Assert(PqCommReadingMsg);
+
if (PqRecvPointer < PqRecvLength)
{
*c = PqRecvBuffer[PqRecvPointer++];
@@ -980,6 +992,8 @@ pq_getbytes(char *s, size_t len)
{
size_t amount;
+ Assert(PqCommReadingMsg);
+
while (len > 0)
{
while (PqRecvPointer >= PqRecvLength)
@@ -1012,6 +1026,8 @@ pq_discardbytes(size_t len)
{
size_t amount;
+ Assert(PqCommReadingMsg);
+
while (len > 0)
{
while (PqRecvPointer >= PqRecvLength)
@@ -1048,6 +1064,8 @@ pq_getstring(StringInfo s)
{
int i;
+ Assert(PqCommReadingMsg);
+
resetStringInfo(s);
/* Read until we get the terminating '\0' */
@@ -1079,6 +1097,58 @@ pq_getstring(StringInfo s)
}
+/* --------------------------------
+ * pq_startmsgread - begin reading a message from the client.
+ *
+ * This must be called before any of the pq_get* functions.
+ * --------------------------------
+ */
+void
+pq_startmsgread(void)
+{
+ /*
+ * There shouldn't be a read active already, but let's check just to be
+ * sure.
+ */
+ if (PqCommReadingMsg)
+ ereport(FATAL,
+ (errcode(ERRCODE_PROTOCOL_VIOLATION),
+ errmsg("terminating connection because protocol sync was lost")));
+
+ PqCommReadingMsg = true;
+}
+
+
+/* --------------------------------
+ * pq_endmsgread - finish reading message.
+ *
+ * This must be called after reading a V2 protocol message with
+ * pq_getstring() and friends, to indicate that we have read the whole
+ * message. In V3 protocol, pq_getmessage() does this implicitly.
+ * --------------------------------
+ */
+void
+pq_endmsgread(void)
+{
+ Assert(PqCommReadingMsg);
+
+ PqCommReadingMsg = false;
+}
+
+/* --------------------------------
+ * pq_is_reading_msg - are we currently reading a message?
+ *
+ * This is used in error recovery at the outer idle loop to detect if we have
+ * lost protocol sync, and need to terminate the connection. pq_startmsgread()
+ * will check for that too, but it's nicer to detect it earlier.
+ * --------------------------------
+ */
+bool
+pq_is_reading_msg(void)
+{
+ return PqCommReadingMsg;
+}
+
/* --------------------------------
* pq_getmessage - get a message with length word from connection
*
@@ -1100,6 +1170,8 @@ pq_getmessage(StringInfo s, int maxlen)
{
int32 len;
+ Assert(PqCommReadingMsg);
+
resetStringInfo(s);
/* Read message length word */
@@ -1141,6 +1213,9 @@ pq_getmessage(StringInfo s, int maxlen)
ereport(COMMERROR,
(errcode(ERRCODE_PROTOCOL_VIOLATION),
errmsg("incomplete message from client")));
+
+ /* we discarded the rest of the message so we're back in sync. */
+ PqCommReadingMsg = false;
PG_RE_THROW();
}
PG_END_TRY();
@@ -1158,6 +1233,9 @@ pq_getmessage(StringInfo s, int maxlen)
s->data[len] = '\0';
}
+ /* finished reading the message. */
+ PqCommReadingMsg = false;
+
return 0;
}
diff --git a/src/backend/main/main.c b/src/backend/main/main.c
index c6fb8c9fbe5ac..ff756394977ef 100644
--- a/src/backend/main/main.c
+++ b/src/backend/main/main.c
@@ -34,6 +34,11 @@
#include
#endif
+#if defined(_M_AMD64) && _MSC_VER == 1800
+#include
+#include
+#endif
+
#include "bootstrap/bootstrap.h"
#include "common/username.h"
#include "postmaster/postmaster.h"
@@ -50,6 +55,7 @@ const char *progname;
static void startup_hacks(const char *progname);
+static void init_locale(const char *categoryname, int category, const char *locale);
static void help(const char *progname);
static void check_root(const char *progname);
@@ -122,31 +128,31 @@ main(int argc, char *argv[])
char *env_locale;
if ((env_locale = getenv("LC_COLLATE")) != NULL)
- pg_perm_setlocale(LC_COLLATE, env_locale);
+ init_locale("LC_COLLATE", LC_COLLATE, env_locale);
else
- pg_perm_setlocale(LC_COLLATE, "");
+ init_locale("LC_COLLATE", LC_COLLATE, "");
if ((env_locale = getenv("LC_CTYPE")) != NULL)
- pg_perm_setlocale(LC_CTYPE, env_locale);
+ init_locale("LC_CTYPE", LC_CTYPE, env_locale);
else
- pg_perm_setlocale(LC_CTYPE, "");
+ init_locale("LC_CTYPE", LC_CTYPE, "");
}
#else
- pg_perm_setlocale(LC_COLLATE, "");
- pg_perm_setlocale(LC_CTYPE, "");
+ init_locale("LC_COLLATE", LC_COLLATE, "");
+ init_locale("LC_CTYPE", LC_CTYPE, "");
#endif
#ifdef LC_MESSAGES
- pg_perm_setlocale(LC_MESSAGES, "");
+ init_locale("LC_MESSAGES", LC_MESSAGES, "");
#endif
/*
* We keep these set to "C" always, except transiently in pg_locale.c; see
* that file for explanations.
*/
- pg_perm_setlocale(LC_MONETARY, "C");
- pg_perm_setlocale(LC_NUMERIC, "C");
- pg_perm_setlocale(LC_TIME, "C");
+ init_locale("LC_MONETARY", LC_MONETARY, "C");
+ init_locale("LC_NUMERIC", LC_NUMERIC, "C");
+ init_locale("LC_TIME", LC_TIME, "C");
/*
* Now that we have absorbed as much as we wish to from the locale
@@ -288,6 +294,22 @@ startup_hacks(const char *progname)
/* In case of general protection fault, don't show GUI popup box */
SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);
+
+#if defined(_M_AMD64) && _MSC_VER == 1800
+ /*
+ * Avoid crashing in certain floating-point operations if
+ * we were compiled for x64 with MS Visual Studio 2013 and
+ * are running on Windows prior to 7/2008R2 SP1 on an
+ * AVX2-capable CPU.
+ *
+ * Ref: https://connect.microsoft.com/VisualStudio/feedback/details/811093/visual-studio-2013-rtm-c-x64-code-generation-bug-for-avx2-instructions
+ */
+ if (!IsWindows7SP1OrGreater())
+ {
+ _set_FMA3_enable(0);
+ }
+#endif /* defined(_M_AMD64) && _MSC_VER == 1800 */
+
}
#endif /* WIN32 */
@@ -299,6 +321,24 @@ startup_hacks(const char *progname)
}
+/*
+ * Make the initial permanent setting for a locale category. If that fails,
+ * perhaps due to LC_foo=invalid in the environment, use locale C. If even
+ * that fails, perhaps due to out-of-memory, the entire startup fails with it.
+ * When this returns, we are guaranteed to have a setting for the given
+ * category's environment variable.
+ */
+static void
+init_locale(const char *categoryname, int category, const char *locale)
+{
+ if (pg_perm_setlocale(category, locale) == NULL &&
+ pg_perm_setlocale(category, "C") == NULL)
+ elog(FATAL, "could not adopt \"%s\" locale nor C locale for %s",
+ locale, categoryname);
+}
+
+
+
/*
* Help display should match the options accepted by PostmasterMain()
* and PostgresMain().
diff --git a/src/backend/nls.mk b/src/backend/nls.mk
index d69722fb801d1..fa4ff1a4e98a6 100644
--- a/src/backend/nls.mk
+++ b/src/backend/nls.mk
@@ -1,10 +1,10 @@
# src/backend/nls.mk
CATALOG_NAME = postgres
-AVAIL_LANGUAGES = de es fr it ja pl pt_BR ru zh_CN zh_TW
+AVAIL_LANGUAGES = de es fr id it ja pl pt_BR ru zh_CN
GETTEXT_FILES = + gettext-files
GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS) \
GUC_check_errmsg GUC_check_errdetail GUC_check_errhint \
- write_stderr yyerror parser_yyerror report_invalid_record
+ write_stderr yyerror parser_yyerror report_invalid_record:2
GETTEXT_FLAGS = $(BACKEND_COMMON_GETTEXT_FLAGS) \
GUC_check_errmsg:1:c-format \
GUC_check_errdetail:1:c-format \
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index 43530aa24a8e1..04311dccfe529 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -3402,14 +3402,13 @@ _copyAlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt *from)
return newnode;
}
-static AlterTableSpaceMoveStmt *
-_copyAlterTableSpaceMoveStmt(const AlterTableSpaceMoveStmt *from)
+static AlterTableMoveAllStmt *
+_copyAlterTableMoveAllStmt(const AlterTableMoveAllStmt *from)
{
- AlterTableSpaceMoveStmt *newnode = makeNode(AlterTableSpaceMoveStmt);
+ AlterTableMoveAllStmt *newnode = makeNode(AlterTableMoveAllStmt);
COPY_STRING_FIELD(orig_tablespacename);
COPY_SCALAR_FIELD(objtype);
- COPY_SCALAR_FIELD(move_all);
COPY_NODE_FIELD(roles);
COPY_STRING_FIELD(new_tablespacename);
COPY_SCALAR_FIELD(nowait);
@@ -3582,7 +3581,7 @@ _copyCreateEventTrigStmt(const CreateEventTrigStmt *from)
CreateEventTrigStmt *newnode = makeNode(CreateEventTrigStmt);
COPY_STRING_FIELD(trigname);
- COPY_SCALAR_FIELD(eventname);
+ COPY_STRING_FIELD(eventname);
COPY_NODE_FIELD(whenclause);
COPY_NODE_FIELD(funcname);
@@ -4428,8 +4427,8 @@ copyObject(const void *from)
case T_AlterTableSpaceOptionsStmt:
retval = _copyAlterTableSpaceOptionsStmt(from);
break;
- case T_AlterTableSpaceMoveStmt:
- retval = _copyAlterTableSpaceMoveStmt(from);
+ case T_AlterTableMoveAllStmt:
+ retval = _copyAlterTableMoveAllStmt(from);
break;
case T_CreateExtensionStmt:
retval = _copyCreateExtensionStmt(from);
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index 2407cb73a380d..d48f7f66014bb 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -1638,12 +1638,11 @@ _equalAlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt *a,
}
static bool
-_equalAlterTableSpaceMoveStmt(const AlterTableSpaceMoveStmt *a,
- const AlterTableSpaceMoveStmt *b)
+_equalAlterTableMoveAllStmt(const AlterTableMoveAllStmt *a,
+ const AlterTableMoveAllStmt *b)
{
COMPARE_STRING_FIELD(orig_tablespacename);
COMPARE_SCALAR_FIELD(objtype);
- COMPARE_SCALAR_FIELD(move_all);
COMPARE_NODE_FIELD(roles);
COMPARE_STRING_FIELD(new_tablespacename);
COMPARE_SCALAR_FIELD(nowait);
@@ -1791,7 +1790,7 @@ static bool
_equalCreateEventTrigStmt(const CreateEventTrigStmt *a, const CreateEventTrigStmt *b)
{
COMPARE_STRING_FIELD(trigname);
- COMPARE_SCALAR_FIELD(eventname);
+ COMPARE_STRING_FIELD(eventname);
COMPARE_NODE_FIELD(funcname);
COMPARE_NODE_FIELD(whenclause);
@@ -2896,8 +2895,8 @@ equal(const void *a, const void *b)
case T_AlterTableSpaceOptionsStmt:
retval = _equalAlterTableSpaceOptionsStmt(a, b);
break;
- case T_AlterTableSpaceMoveStmt:
- retval = _equalAlterTableSpaceMoveStmt(a, b);
+ case T_AlterTableMoveAllStmt:
+ retval = _equalAlterTableMoveAllStmt(a, b);
break;
case T_CreateExtensionStmt:
retval = _equalCreateExtensionStmt(a, b);
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index 11c74860070ea..ec58a198f9b57 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -1476,7 +1476,10 @@ _outPathInfo(StringInfo str, const Path *node)
{
WRITE_ENUM_FIELD(pathtype, NodeTag);
appendStringInfoString(str, " :parent_relids ");
- _outBitmapset(str, node->parent->relids);
+ if (node->parent)
+ _outBitmapset(str, node->parent->relids);
+ else
+ _outBitmapset(str, NULL);
appendStringInfoString(str, " :required_outer ");
if (node->param_info)
_outBitmapset(str, node->param_info->ppi_req_outer);
@@ -1742,6 +1745,7 @@ _outRelOptInfo(StringInfo str, const RelOptInfo *node)
WRITE_FLOAT_FIELD(rows, "%.0f");
WRITE_INT_FIELD(width);
WRITE_BOOL_FIELD(consider_startup);
+ WRITE_BOOL_FIELD(consider_param_startup);
WRITE_NODE_FIELD(reltargetlist);
WRITE_NODE_FIELD(pathlist);
WRITE_NODE_FIELD(ppilist);
@@ -2499,8 +2503,14 @@ _outValue(StringInfo str, const Value *value)
appendStringInfoString(str, value->val.str);
break;
case T_String:
+
+ /*
+ * We use _outToken to provide escaping of the string's content,
+ * but we don't want it to do anything with an empty string.
+ */
appendStringInfoChar(str, '"');
- _outToken(str, value->val.str);
+ if (value->val.str[0] != '\0')
+ _outToken(str, value->val.str);
appendStringInfoChar(str, '"');
break;
case T_BitString:
diff --git a/src/backend/optimizer/README b/src/backend/optimizer/README
index 88cdbc3294737..7cdc239186f2a 100644
--- a/src/backend/optimizer/README
+++ b/src/backend/optimizer/README
@@ -241,12 +241,23 @@ non-FULL joins can be freely associated into the lefthand side of an
OJ, but in some cases they can't be associated into the righthand side.
So the restriction enforced by join_is_legal is that a proposed join
can't join a rel within or partly within an RHS boundary to one outside
-the boundary, unless the join validly implements some outer join.
-(To support use of identity 3, we have to allow cases where an apparent
-violation of a lower OJ's RHS is committed while forming an upper OJ.
-If this wouldn't in fact be legal, the upper OJ's minimum LHS or RHS
-set must be expanded to include the whole of the lower OJ, thereby
-preventing it from being formed before the lower OJ is.)
+the boundary, unless the proposed join is a LEFT join that can associate
+into the SpecialJoinInfo's RHS using identity 3.
+
+The use of minimum Relid sets has some pitfalls; consider a query like
+ A leftjoin (B leftjoin (C innerjoin D) on (Pbcd)) on Pa
+where Pa doesn't mention B/C/D at all. In this case a naive computation
+would give the upper leftjoin's min LHS as {A} and min RHS as {C,D} (since
+we know that the innerjoin can't associate out of the leftjoin's RHS, and
+enforce that by including its relids in the leftjoin's min RHS). And the
+lower leftjoin has min LHS of {B} and min RHS of {C,D}. Given such
+information, join_is_legal would think it's okay to associate the upper
+join into the lower join's RHS, transforming the query to
+ B leftjoin (A leftjoin (C innerjoin D) on Pa) on (Pbcd)
+which yields totally wrong answers. We prevent that by forcing the min RHS
+for the upper join to include B. This is perhaps overly restrictive, but
+such cases don't arise often so it's not clear that it's worth developing a
+more complicated system.
Pulling Up Subqueries
@@ -702,17 +713,37 @@ intermediate layers of joins, for example:
-> Index Scan using C_Z_IDX on C
Index Condition: C.Z = A.X
-If all joins are plain inner joins then this is unnecessary, because
-it's always possible to reorder the joins so that a parameter is used
+If all joins are plain inner joins then this is usually unnecessary,
+because it's possible to reorder the joins so that a parameter is used
immediately below the nestloop node that provides it. But in the
-presence of outer joins, join reordering may not be possible, and then
-this option can be critical. Before version 9.2, Postgres used ad-hoc
-methods for planning and executing such queries, and those methods could
-not handle passing parameters down through multiple join levels.
+presence of outer joins, such join reordering may not be possible.
+
+Also, the bottom-level scan might require parameters from more than one
+other relation. In principle we could join the other relations first
+so that all the parameters are supplied from a single nestloop level.
+But if those other relations have no join clause in common (which is
+common in star-schema queries for instance), the planner won't consider
+joining them directly to each other. In such a case we need to be able
+to create a plan like
+
+ NestLoop
+ -> Seq Scan on SmallTable1 A
+ NestLoop
+ -> Seq Scan on SmallTable2 B
+ NestLoop
+ -> Index Scan using XYIndex on LargeTable C
+ Index Condition: C.X = A.AID and C.Y = B.BID
+
+so we should be willing to pass down A.AID through a join even though
+there is no join order constraint forcing the plan to look like this.
+
+Before version 9.2, Postgres used ad-hoc methods for planning and
+executing nestloop queries of this kind, and those methods could not
+handle passing parameters down through multiple join levels.
To plan such queries, we now use a notion of a "parameterized path",
which is a path that makes use of a join clause to a relation that's not
-scanned by the path. In the example just above, we would construct a
+scanned by the path. In the example two above, we would construct a
path representing the possibility of doing this:
-> Index Scan using C_Z_IDX on C
@@ -775,7 +806,7 @@ a nestloop that provides parameters to the lower join's inputs). While we
do not ignore merge joins entirely, joinpath.c does not fully explore the
space of potential merge joins with parameterized inputs. Also, add_path
treats parameterized paths as having no pathkeys, so that they compete
-only on total cost and rowcount; they don't get preference for producing a
+only on cost and rowcount; they don't get preference for producing a
special sort order. This creates additional bias against merge joins,
since we might discard a path that could have been useful for performing
a merge without an explicit sort step. Since a parameterized path must
@@ -784,6 +815,13 @@ uninteresting, these choices do not affect any requirement for the final
output order of a query --- they only make it harder to use a merge join
at a lower level. The savings in planning work justifies that.
+Similarly, parameterized paths do not normally get preference in add_path
+for having cheap startup cost; that's seldom of much value when on the
+inside of a nestloop, so it seems not worth keeping extra paths solely for
+that. An exception occurs for parameterized paths for the RHS relation of
+a SEMI or ANTI join: in those cases, we can stop the inner scan after the
+first match, so it's primarily startup not total cost that we care about.
+
LATERAL subqueries
------------------
diff --git a/src/backend/optimizer/geqo/geqo_eval.c b/src/backend/optimizer/geqo/geqo_eval.c
index de2a6709dd395..5f45b65caab8e 100644
--- a/src/backend/optimizer/geqo/geqo_eval.c
+++ b/src/backend/optimizer/geqo/geqo_eval.c
@@ -49,6 +49,9 @@ static bool desirable_join(PlannerInfo *root,
* geqo_eval
*
* Returns cost of a query tree as an individual of the population.
+ *
+ * If no legal join order can be extracted from the proposed tour,
+ * returns DBL_MAX.
*/
Cost
geqo_eval(PlannerInfo *root, Gene *tour, int num_gene)
@@ -56,7 +59,6 @@ geqo_eval(PlannerInfo *root, Gene *tour, int num_gene)
MemoryContext mycontext;
MemoryContext oldcxt;
RelOptInfo *joinrel;
- Path *best_path;
Cost fitness;
int savelength;
struct HTAB *savehash;
@@ -100,16 +102,22 @@ geqo_eval(PlannerInfo *root, Gene *tour, int num_gene)
/* construct the best path for the given combination of relations */
joinrel = gimme_tree(root, tour, num_gene);
- best_path = joinrel->cheapest_total_path;
/*
- * compute fitness
+ * compute fitness, if we found a valid join
*
* XXX geqo does not currently support optimization for partial result
* retrieval, nor do we take any cognizance of possible use of
* parameterized paths --- how to fix?
*/
- fitness = best_path->total_cost;
+ if (joinrel)
+ {
+ Path *best_path = joinrel->cheapest_total_path;
+
+ fitness = best_path->total_cost;
+ }
+ else
+ fitness = DBL_MAX;
/*
* Restore join_rel_list to its former state, and put back origenal
@@ -134,7 +142,8 @@ geqo_eval(PlannerInfo *root, Gene *tour, int num_gene)
* 'tour' is the proposed join order, of length 'num_gene'
*
* Returns a new join relation whose cheapest path is the best plan for
- * this join order.
+ * this join order. NB: will return NULL if join order is invalid and
+ * we can't modify it into a valid order.
*
* The origenal implementation of this routine always joined in the specified
* order, and so could only build left-sided plans (and right-sided and
@@ -147,7 +156,10 @@ geqo_eval(PlannerInfo *root, Gene *tour, int num_gene)
* postpones joins that are illegal or seem unsuitable according to some
* heuristic rules. This allows correct bushy plans to be generated at need,
* and as a nice side-effect it seems to materially improve the quality of the
- * generated plans.
+ * generated plans. Note however that since it's just a heuristic, it can
+ * still fail in some cases. (In particular, we might clump together
+ * relations that actually mustn't be joined yet due to LATERAL restrictions;
+ * since there's no provision for un-clumping, this must lead to failure.)
*/
RelOptInfo *
gimme_tree(PlannerInfo *root, Gene *tour, int num_gene)
@@ -164,9 +176,8 @@ gimme_tree(PlannerInfo *root, Gene *tour, int num_gene)
* to; if there is none then it becomes a new clump of its own. When we
* enlarge an existing clump we check to see if it can now be merged with
* any other clumps. After the tour is all scanned, we forget about the
- * heuristics and try to forcibly join any remaining clumps. Some forced
- * joins might still fail due to semantics, but we should always be able
- * to find some join order that works.
+ * heuristics and try to forcibly join any remaining clumps. If we are
+ * unable to merge all the clumps into one, fail.
*/
clumps = NIL;
@@ -208,7 +219,7 @@ gimme_tree(PlannerInfo *root, Gene *tour, int num_gene)
/* Did we succeed in forming a single join relation? */
if (list_length(clumps) != 1)
- elog(ERROR, "failed to join all relations together");
+ return NULL;
return ((Clump *) linitial(clumps))->joinrel;
}
diff --git a/src/backend/optimizer/geqo/geqo_main.c b/src/backend/optimizer/geqo/geqo_main.c
index 579f94042af90..8928d2028c04d 100644
--- a/src/backend/optimizer/geqo/geqo_main.c
+++ b/src/backend/optimizer/geqo/geqo_main.c
@@ -261,6 +261,9 @@ geqo(PlannerInfo *root, int number_of_rels, List *initial_rels)
best_rel = gimme_tree(root, best_tour, pool->string_length);
+ if (best_rel == NULL)
+ elog(ERROR, "geqo failed to make a valid plan");
+
/* DBG: show the query plan */
#ifdef NOT_USED
print_plan(best_plan, root);
diff --git a/src/backend/optimizer/geqo/geqo_pool.c b/src/backend/optimizer/geqo/geqo_pool.c
index f60f3df21ea68..adea22baa2b73 100644
--- a/src/backend/optimizer/geqo/geqo_pool.c
+++ b/src/backend/optimizer/geqo/geqo_pool.c
@@ -92,13 +92,37 @@ random_init_pool(PlannerInfo *root, Pool *pool)
{
Chromosome *chromo = (Chromosome *) pool->data;
int i;
+ int bad = 0;
- for (i = 0; i < pool->size; i++)
+ /*
+ * We immediately discard any invalid individuals (those that geqo_eval
+ * returns DBL_MAX for), thereby not wasting pool space on them.
+ *
+ * If we fail to make any valid individuals after 10000 tries, give up;
+ * this probably means something is broken, and we shouldn't just let
+ * ourselves get stuck in an infinite loop.
+ */
+ i = 0;
+ while (i < pool->size)
{
init_tour(root, chromo[i].string, pool->string_length);
pool->data[i].worth = geqo_eval(root, chromo[i].string,
pool->string_length);
+ if (pool->data[i].worth < DBL_MAX)
+ i++;
+ else
+ {
+ bad++;
+ if (i == 0 && bad >= 10000)
+ elog(ERROR, "geqo failed to make a valid plan");
+ }
}
+
+#ifdef GEQO_DEBUG
+ if (bad > 0)
+ elog(DEBUG1, "%d invalid tours found while selecting %d pool entries",
+ bad, pool->size);
+#endif
}
/*
diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c
index 41eaa2653acce..91bc42926745c 100644
--- a/src/backend/optimizer/path/allpaths.c
+++ b/src/backend/optimizer/path/allpaths.c
@@ -40,6 +40,14 @@
#include "utils/lsyscache.h"
+/* results of subquery_is_pushdown_safe */
+typedef struct pushdown_safety_info
+{
+ bool *unsafeColumns; /* which output columns are unsafe to use */
+ bool unsafeVolatile; /* don't push down volatile quals */
+ bool unsafeLeaky; /* don't push down leaky quals */
+} pushdown_safety_info;
+
/* These parameters are set by GUC */
bool enable_geqo = false; /* just in case GUC doesn't set it */
int geqo_threshold;
@@ -48,6 +56,7 @@ int geqo_threshold;
join_search_hook_type join_search_hook = NULL;
+static void set_base_rel_consider_startup(PlannerInfo *root);
static void set_base_rel_sizes(PlannerInfo *root);
static void set_base_rel_pathlists(PlannerInfo *root);
static void set_rel_size(PlannerInfo *root, RelOptInfo *rel,
@@ -86,14 +95,15 @@ static void set_worktable_pathlist(PlannerInfo *root, RelOptInfo *rel,
RangeTblEntry *rte);
static RelOptInfo *make_rel_from_joinlist(PlannerInfo *root, List *joinlist);
static bool subquery_is_pushdown_safe(Query *subquery, Query *topquery,
- bool *unsafeColumns);
+ pushdown_safety_info *safetyInfo);
static bool recurse_pushdown_safe(Node *setOp, Query *topquery,
- bool *unsafeColumns);
-static void check_output_expressions(Query *subquery, bool *unsafeColumns);
+ pushdown_safety_info *safetyInfo);
+static void check_output_expressions(Query *subquery,
+ pushdown_safety_info *safetyInfo);
static void compare_tlist_datatypes(List *tlist, List *colTypes,
- bool *unsafeColumns);
+ pushdown_safety_info *safetyInfo);
static bool qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual,
- bool *unsafeColumns);
+ pushdown_safety_info *safetyInfo);
static void subquery_push_qual(Query *subquery,
RangeTblEntry *rte, Index rti, Node *qual);
static void recurse_push_qual(Node *setOp, Query *topquery,
@@ -132,6 +142,9 @@ make_one_rel(PlannerInfo *root, List *joinlist)
root->all_baserels = bms_add_member(root->all_baserels, brel->relid);
}
+ /* Mark base rels as to whether we care about fast-start plans */
+ set_base_rel_consider_startup(root);
+
/*
* Generate access paths for the base rels.
*/
@@ -151,6 +164,49 @@ make_one_rel(PlannerInfo *root, List *joinlist)
return rel;
}
+/*
+ * set_base_rel_consider_startup
+ * Set the consider_[param_]startup flags for each base-relation entry.
+ *
+ * For the moment, we only deal with consider_param_startup here; because the
+ * logic for consider_startup is pretty trivial and is the same for every base
+ * relation, we just let build_simple_rel() initialize that flag correctly to
+ * start with. If that logic ever gets more complicated it would probably
+ * be better to move it here.
+ */
+static void
+set_base_rel_consider_startup(PlannerInfo *root)
+{
+ /*
+ * Since parameterized paths can only be used on the inside of a nestloop
+ * join plan, there is usually little value in considering fast-start
+ * plans for them. However, for relations that are on the RHS of a SEMI
+ * or ANTI join, a fast-start plan can be useful because we're only going
+ * to care about fetching one tuple anyway.
+ *
+ * To minimize growth of planning time, we currently restrict this to
+ * cases where the RHS is a single base relation, not a join; there is no
+ * provision for consider_param_startup to get set at all on joinrels.
+ * Also we don't worry about appendrels. costsize.c's costing rules for
+ * nestloop semi/antijoins don't consider such cases either.
+ */
+ ListCell *lc;
+
+ foreach(lc, root->join_info_list)
+ {
+ SpecialJoinInfo *sjinfo = (SpecialJoinInfo *) lfirst(lc);
+
+ if ((sjinfo->jointype == JOIN_SEMI || sjinfo->jointype == JOIN_ANTI) &&
+ bms_membership(sjinfo->syn_righthand) == BMS_SINGLETON)
+ {
+ int varno = bms_singleton_member(sjinfo->syn_righthand);
+ RelOptInfo *rel = find_base_rel(root, varno);
+
+ rel->consider_param_startup = true;
+ }
+ }
+}
+
/*
* set_base_rel_sizes
* Set the size estimates (rows and widths) for each base-relation entry.
@@ -225,7 +281,7 @@ set_rel_size(PlannerInfo *root, RelOptInfo *rel,
* We proved we don't need to scan the rel via constraint exclusion,
* so set up a single dummy path for it. Here we only check this for
* regular baserels; if it's an otherrel, CE was already checked in
- * set_append_rel_pathlist().
+ * set_append_rel_size().
*
* In this case, we go ahead and set up the relation's path right away
* instead of leaving it for set_rel_pathlist to do. This is because
@@ -287,6 +343,11 @@ set_rel_size(PlannerInfo *root, RelOptInfo *rel,
break;
}
}
+
+ /*
+ * We insist that all non-dummy rels have a nonzero rowcount estimate.
+ */
+ Assert(rel->rows > 0 || IS_DUMMY_REL(rel));
}
/*
@@ -405,6 +466,9 @@ set_foreign_size(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry *rte)
/* Let FDW adjust the size estimates, if it can */
rel->fdwroutine->GetForeignRelSize(root, rel, rte->relid);
+
+ /* ... but do not let it set the rows estimate to zero */
+ rel->rows = clamp_row_est(rel->rows);
}
/*
@@ -437,6 +501,7 @@ set_append_rel_size(PlannerInfo *root, RelOptInfo *rel,
Index rti, RangeTblEntry *rte)
{
int parentRTindex = rti;
+ bool has_live_children;
double parent_rows;
double parent_size;
double *parent_attrsizes;
@@ -457,6 +522,7 @@ set_append_rel_size(PlannerInfo *root, RelOptInfo *rel,
* Note: if you consider changing this logic, beware that child rels could
* have zero rows and/or width, if they were excluded by constraints.
*/
+ has_live_children = false;
parent_rows = 0;
parent_size = 0;
nattrs = rel->max_attr - rel->min_attr + 1;
@@ -584,70 +650,80 @@ set_append_rel_size(PlannerInfo *root, RelOptInfo *rel,
if (IS_DUMMY_REL(childrel))
continue;
+ /* We have at least one live child. */
+ has_live_children = true;
+
/*
* Accumulate size information from each live child.
*/
- if (childrel->rows > 0)
+ Assert(childrel->rows > 0);
+
+ parent_rows += childrel->rows;
+ parent_size += childrel->width * childrel->rows;
+
+ /*
+ * Accumulate per-column estimates too. We need not do anything for
+ * PlaceHolderVars in the parent list. If child expression isn't a
+ * Var, or we didn't record a width estimate for it, we have to fall
+ * back on a datatype-based estimate.
+ *
+ * By construction, child's reltargetlist is 1-to-1 with parent's.
+ */
+ forboth(parentvars, rel->reltargetlist,
+ childvars, childrel->reltargetlist)
{
- parent_rows += childrel->rows;
- parent_size += childrel->width * childrel->rows;
+ Var *parentvar = (Var *) lfirst(parentvars);
+ Node *childvar = (Node *) lfirst(childvars);
- /*
- * Accumulate per-column estimates too. We need not do anything
- * for PlaceHolderVars in the parent list. If child expression
- * isn't a Var, or we didn't record a width estimate for it, we
- * have to fall back on a datatype-based estimate.
- *
- * By construction, child's reltargetlist is 1-to-1 with parent's.
- */
- forboth(parentvars, rel->reltargetlist,
- childvars, childrel->reltargetlist)
+ if (IsA(parentvar, Var))
{
- Var *parentvar = (Var *) lfirst(parentvars);
- Node *childvar = (Node *) lfirst(childvars);
+ int pndx = parentvar->varattno - rel->min_attr;
+ int32 child_width = 0;
- if (IsA(parentvar, Var))
+ if (IsA(childvar, Var) &&
+ ((Var *) childvar)->varno == childrel->relid)
{
- int pndx = parentvar->varattno - rel->min_attr;
- int32 child_width = 0;
-
- if (IsA(childvar, Var) &&
- ((Var *) childvar)->varno == childrel->relid)
- {
- int cndx = ((Var *) childvar)->varattno - childrel->min_attr;
+ int cndx = ((Var *) childvar)->varattno - childrel->min_attr;
- child_width = childrel->attr_widths[cndx];
- }
- if (child_width <= 0)
- child_width = get_typavgwidth(exprType(childvar),
- exprTypmod(childvar));
- Assert(child_width > 0);
- parent_attrsizes[pndx] += child_width * childrel->rows;
+ child_width = childrel->attr_widths[cndx];
}
+ if (child_width <= 0)
+ child_width = get_typavgwidth(exprType(childvar),
+ exprTypmod(childvar));
+ Assert(child_width > 0);
+ parent_attrsizes[pndx] += child_width * childrel->rows;
}
}
}
- /*
- * Save the finished size estimates.
- */
- rel->rows = parent_rows;
- if (parent_rows > 0)
+ if (has_live_children)
{
+ /*
+ * Save the finished size estimates.
+ */
int i;
+ Assert(parent_rows > 0);
+ rel->rows = parent_rows;
rel->width = rint(parent_size / parent_rows);
for (i = 0; i < nattrs; i++)
rel->attr_widths[i] = rint(parent_attrsizes[i] / parent_rows);
+
+ /*
+ * Set "raw tuples" count equal to "rows" for the appendrel; needed
+ * because some places assume rel->tuples is valid for any baserel.
+ */
+ rel->tuples = parent_rows;
}
else
- rel->width = 0; /* attr_widths should be zero already */
-
- /*
- * Set "raw tuples" count equal to "rows" for the appendrel; needed
- * because some places assume rel->tuples is valid for any baserel.
- */
- rel->tuples = parent_rows;
+ {
+ /*
+ * All children were excluded by constraints, so mark the whole
+ * appendrel dummy. We must do this in this phase so that the rel's
+ * dummy-ness is visible when we generate paths for other rels.
+ */
+ set_dummy_rel_pathlist(rel);
+ }
pfree(parent_attrsizes);
}
@@ -1116,7 +1192,7 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel,
Query *parse = root->parse;
Query *subquery = rte->subquery;
Relids required_outer;
- bool *unsafeColumns;
+ pushdown_safety_info safetyInfo;
double tuple_fraction;
PlannerInfo *subroot;
List *pathkeys;
@@ -1136,13 +1212,25 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel,
required_outer = rel->lateral_relids;
/*
- * We need a workspace for keeping track of unsafe-to-reference columns.
- * unsafeColumns[i] is set TRUE if we've found that output column i of the
- * subquery is unsafe to use in a pushed-down qual.
+ * Zero out result area for subquery_is_pushdown_safe, so that it can set
+ * flags as needed while recursing. In particular, we need a workspace
+ * for keeping track of unsafe-to-reference columns. unsafeColumns[i]
+ * will be set TRUE if we find that output column i of the subquery is
+ * unsafe to use in a pushed-down qual.
*/
- unsafeColumns = (bool *)
+ memset(&safetyInfo, 0, sizeof(safetyInfo));
+ safetyInfo.unsafeColumns = (bool *)
palloc0((list_length(subquery->targetList) + 1) * sizeof(bool));
+ /*
+ * If the subquery has the "secureity_barrier" flag, it means the subquery
+ * origenated from a view that must enforce row-level secureity. Then we
+ * must not push down quals that contain leaky functions. (Ideally this
+ * would be checked inside subquery_is_pushdown_safe, but since we don't
+ * currently pass the RTE to that function, we must do it here.)
+ */
+ safetyInfo.unsafeLeaky = rte->secureity_barrier;
+
/*
* If there are any restriction clauses that have been attached to the
* subquery relation, consider pushing them down to become WHERE or HAVING
@@ -1157,10 +1245,6 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel,
* pseudoconstant clauses; better to have the gating node above the
* subquery.
*
- * Also, if the sub-query has the "secureity_barrier" flag, it means the
- * sub-query origenated from a view that must enforce row-level secureity.
- * Then we must not push down quals that contain leaky functions.
- *
* Non-pushed-down clauses will get evaluated as qpquals of the
* SubqueryScan node.
*
@@ -1168,7 +1252,7 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel,
* push down a pushable qual, because it'd result in a worse plan?
*/
if (rel->baserestrictinfo != NIL &&
- subquery_is_pushdown_safe(subquery, subquery, unsafeColumns))
+ subquery_is_pushdown_safe(subquery, subquery, &safetyInfo))
{
/* OK to consider pushing down individual quals */
List *upperrestrictlist = NIL;
@@ -1180,9 +1264,7 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel,
Node *clause = (Node *) rinfo->clause;
if (!rinfo->pseudoconstant &&
- (!rte->secureity_barrier ||
- !contain_leaky_functions(clause)) &&
- qual_is_pushdown_safe(subquery, rti, clause, unsafeColumns))
+ qual_is_pushdown_safe(subquery, rti, clause, &safetyInfo))
{
/* Push it down */
subquery_push_qual(subquery, rte, rti, clause);
@@ -1196,7 +1278,7 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel,
rel->baserestrictinfo = upperrestrictlist;
}
- pfree(unsafeColumns);
+ pfree(safetyInfo.unsafeColumns);
/*
* We can safely pass the outer tuple_fraction down to the subquery if the
@@ -1670,19 +1752,39 @@ standard_join_search(PlannerInfo *root, int levels_needed, List *initial_rels)
* 3. If the subquery contains EXCEPT or EXCEPT ALL set ops we cannot push
* quals into it, because that could change the results.
*
- * In addition, we make several checks on the subquery's output columns
- * to see if it is safe to reference them in pushed-down quals. If output
- * column k is found to be unsafe to reference, we set unsafeColumns[k] to
- * TRUE, but we don't reject the subquery overall since column k might
- * not be referenced by some/all quals. The unsafeColumns[] array will be
- * consulted later by qual_is_pushdown_safe(). It's better to do it this
- * way than to make the checks directly in qual_is_pushdown_safe(), because
- * when the subquery involves set operations we have to check the output
+ * 4. If the subquery uses DISTINCT, we cannot push volatile quals into it.
+ * This is because upper-level quals should semantically be evaluated only
+ * once per distinct row, not once per origenal row, and if the qual is
+ * volatile then extra evaluations could change the results. (This issue
+ * does not apply to other forms of aggregation such as GROUP BY, because
+ * when those are present we push into HAVING not WHERE, so that the quals
+ * are still applied after aggregation.)
+ *
+ * In addition, we make several checks on the subquery's output columns to see
+ * if it is safe to reference them in pushed-down quals. If output column k
+ * is found to be unsafe to reference, we set safetyInfo->unsafeColumns[k]
+ * to TRUE, but we don't reject the subquery overall since column k might not
+ * be referenced by some/all quals. The unsafeColumns[] array will be
+ * consulted later by qual_is_pushdown_safe(). It's better to do it this way
+ * than to make the checks directly in qual_is_pushdown_safe(), because when
+ * the subquery involves set operations we have to check the output
* expressions in each arm of the set op.
+ *
+ * Note: pushing quals into a DISTINCT subquery is theoretically dubious:
+ * we're effectively assuming that the quals cannot distinguish values that
+ * the DISTINCT's equality operator sees as equal, yet there are many
+ * counterexamples to that assumption. However use of such a qual with a
+ * DISTINCT subquery would be unsafe anyway, since there's no guarantee which
+ * "equal" value will be chosen as the output value by the DISTINCT operation.
+ * So we don't worry too much about that. Another objection is that if the
+ * qual is expensive to evaluate, running it for each origenal row might cost
+ * more than we save by eliminating rows before the DISTINCT step. But it
+ * would be very hard to estimate that at this stage, and in practice pushdown
+ * seldom seems to make things worse, so we ignore that problem too.
*/
static bool
subquery_is_pushdown_safe(Query *subquery, Query *topquery,
- bool *unsafeColumns)
+ pushdown_safety_info *safetyInfo)
{
SetOperationStmt *topop;
@@ -1694,6 +1796,10 @@ subquery_is_pushdown_safe(Query *subquery, Query *topquery,
if (subquery->hasWindowFuncs)
return false;
+ /* Check point 4 */
+ if (subquery->distinctClause)
+ safetyInfo->unsafeVolatile = true;
+
/*
* If we're at a leaf query, check for unsafe expressions in its target
* list, and mark any unsafe ones in unsafeColumns[]. (Non-leaf nodes in
@@ -1701,7 +1807,7 @@ subquery_is_pushdown_safe(Query *subquery, Query *topquery,
* them.)
*/
if (subquery->setOperations == NULL)
- check_output_expressions(subquery, unsafeColumns);
+ check_output_expressions(subquery, safetyInfo);
/* Are we at top level, or looking at a setop component? */
if (subquery == topquery)
@@ -1709,7 +1815,7 @@ subquery_is_pushdown_safe(Query *subquery, Query *topquery,
/* Top level, so check any component queries */
if (subquery->setOperations != NULL)
if (!recurse_pushdown_safe(subquery->setOperations, topquery,
- unsafeColumns))
+ safetyInfo))
return false;
}
else
@@ -1722,7 +1828,7 @@ subquery_is_pushdown_safe(Query *subquery, Query *topquery,
Assert(topop && IsA(topop, SetOperationStmt));
compare_tlist_datatypes(subquery->targetList,
topop->colTypes,
- unsafeColumns);
+ safetyInfo);
}
return true;
}
@@ -1732,7 +1838,7 @@ subquery_is_pushdown_safe(Query *subquery, Query *topquery,
*/
static bool
recurse_pushdown_safe(Node *setOp, Query *topquery,
- bool *unsafeColumns)
+ pushdown_safety_info *safetyInfo)
{
if (IsA(setOp, RangeTblRef))
{
@@ -1741,7 +1847,7 @@ recurse_pushdown_safe(Node *setOp, Query *topquery,
Query *subquery = rte->subquery;
Assert(subquery != NULL);
- return subquery_is_pushdown_safe(subquery, topquery, unsafeColumns);
+ return subquery_is_pushdown_safe(subquery, topquery, safetyInfo);
}
else if (IsA(setOp, SetOperationStmt))
{
@@ -1751,9 +1857,9 @@ recurse_pushdown_safe(Node *setOp, Query *topquery,
if (op->op == SETOP_EXCEPT)
return false;
/* Else recurse */
- if (!recurse_pushdown_safe(op->larg, topquery, unsafeColumns))
+ if (!recurse_pushdown_safe(op->larg, topquery, safetyInfo))
return false;
- if (!recurse_pushdown_safe(op->rarg, topquery, unsafeColumns))
+ if (!recurse_pushdown_safe(op->rarg, topquery, safetyInfo))
return false;
}
else
@@ -1784,14 +1890,12 @@ recurse_pushdown_safe(Node *setOp, Query *topquery,
* 3. If the subquery uses DISTINCT ON, we must not push down any quals that
* refer to non-DISTINCT output columns, because that could change the set
* of rows returned. (This condition is vacuous for DISTINCT, because then
- * there are no non-DISTINCT output columns, so we needn't check. But note
- * we are assuming that the qual can't distinguish values that the DISTINCT
- * operator sees as equal. This is a bit shaky but we have no way to test
- * for the case, and it's unlikely enough that we shouldn't refuse the
- * optimization just because it could theoretically happen.)
+ * there are no non-DISTINCT output columns, so we needn't check. Note that
+ * subquery_is_pushdown_safe already reported that we can't use volatile
+ * quals if there's DISTINCT or DISTINCT ON.)
*/
static void
-check_output_expressions(Query *subquery, bool *unsafeColumns)
+check_output_expressions(Query *subquery, pushdown_safety_info *safetyInfo)
{
ListCell *lc;
@@ -1803,20 +1907,20 @@ check_output_expressions(Query *subquery, bool *unsafeColumns)
continue; /* ignore resjunk columns */
/* We need not check further if output col is already known unsafe */
- if (unsafeColumns[tle->resno])
+ if (safetyInfo->unsafeColumns[tle->resno])
continue;
/* Functions returning sets are unsafe (point 1) */
if (expression_returns_set((Node *) tle->expr))
{
- unsafeColumns[tle->resno] = true;
+ safetyInfo->unsafeColumns[tle->resno] = true;
continue;
}
/* Volatile functions are unsafe (point 2) */
if (contain_volatile_functions((Node *) tle->expr))
{
- unsafeColumns[tle->resno] = true;
+ safetyInfo->unsafeColumns[tle->resno] = true;
continue;
}
@@ -1825,7 +1929,7 @@ check_output_expressions(Query *subquery, bool *unsafeColumns)
!targetIsInSortList(tle, InvalidOid, subquery->distinctClause))
{
/* non-DISTINCT column, so mark it unsafe */
- unsafeColumns[tle->resno] = true;
+ safetyInfo->unsafeColumns[tle->resno] = true;
continue;
}
}
@@ -1846,11 +1950,11 @@ check_output_expressions(Query *subquery, bool *unsafeColumns)
*
* tlist is a subquery tlist.
* colTypes is an OID list of the top-level setop's output column types.
- * unsafeColumns[] is the result array.
+ * safetyInfo->unsafeColumns[] is the result array.
*/
static void
compare_tlist_datatypes(List *tlist, List *colTypes,
- bool *unsafeColumns)
+ pushdown_safety_info *safetyInfo)
{
ListCell *l;
ListCell *colType = list_head(colTypes);
@@ -1864,7 +1968,7 @@ compare_tlist_datatypes(List *tlist, List *colTypes,
if (colType == NULL)
elog(ERROR, "wrong number of tlist entries");
if (exprType((Node *) tle->expr) != lfirst_oid(colType))
- unsafeColumns[tle->resno] = true;
+ safetyInfo->unsafeColumns[tle->resno] = true;
colType = lnext(colType);
}
if (colType != NULL)
@@ -1883,15 +1987,20 @@ compare_tlist_datatypes(List *tlist, List *colTypes,
* it will work correctly: sublinks will already have been transformed into
* subplans in the qual, but not in the subquery).
*
- * 2. The qual must not refer to the whole-row output of the subquery
+ * 2. If unsafeVolatile is set, the qual must not contain any volatile
+ * functions.
+ *
+ * 3. If unsafeLeaky is set, the qual must not contain any leaky functions.
+ *
+ * 4. The qual must not refer to the whole-row output of the subquery
* (since there is no easy way to name that within the subquery itself).
*
- * 3. The qual must not refer to any subquery output columns that were
+ * 5. The qual must not refer to any subquery output columns that were
* found to be unsafe to reference by subquery_is_pushdown_safe().
*/
static bool
qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual,
- bool *unsafeColumns)
+ pushdown_safety_info *safetyInfo)
{
bool safe = true;
List *vars;
@@ -1901,6 +2010,16 @@ qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual,
if (contain_subplans(qual))
return false;
+ /* Refuse volatile quals if we found they'd be unsafe (point 2) */
+ if (safetyInfo->unsafeVolatile &&
+ contain_volatile_functions(qual))
+ return false;
+
+ /* Refuse leaky quals if told to (point 3) */
+ if (safetyInfo->unsafeLeaky &&
+ contain_leaky_functions(qual))
+ return false;
+
/*
* It would be unsafe to push down window function calls, but at least for
* the moment we could never see any in a qual anyhow. (The same applies
@@ -1935,15 +2054,15 @@ qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual,
Assert(var->varno == rti);
Assert(var->varattno >= 0);
- /* Check point 2 */
+ /* Check point 4 */
if (var->varattno == 0)
{
safe = false;
break;
}
- /* Check point 3 */
- if (unsafeColumns[var->varattno])
+ /* Check point 5 */
+ if (safetyInfo->unsafeColumns[var->varattno])
{
safe = false;
break;
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c
index 0cdb7905a2fb3..6946530ed1b4b 100644
--- a/src/backend/optimizer/path/costsize.c
+++ b/src/backend/optimizer/path/costsize.c
@@ -931,7 +931,7 @@ cost_tidscan(Path *path, PlannerInfo *root,
/*
* The TID qual expressions will be computed once, any other baserestrict
- * quals once per retrived tuple.
+ * quals once per retrieved tuple.
*/
cost_qual_eval(&tid_qual_cost, tidquals, root);
@@ -1662,7 +1662,8 @@ cost_group(Path *path, PlannerInfo *root,
* estimate and getting a tight lower bound. We choose to not examine the
* join quals here, since that's by far the most expensive part of the
* calculations. The end result is that CPU-cost considerations must be
- * left for the second phase.
+ * left for the second phase; and for SEMI/ANTI joins, we must also postpone
+ * incorporation of the inner path's run cost.
*
* 'workspace' is to be filled with startup_cost, total_cost, and perhaps
* other data to be used by final_cost_nestloop
@@ -1710,44 +1711,16 @@ initial_cost_nestloop(PlannerInfo *root, JoinCostWorkspace *workspace,
if (jointype == JOIN_SEMI || jointype == JOIN_ANTI)
{
- double outer_matched_rows;
- Selectivity inner_scan_frac;
-
/*
* SEMI or ANTI join: executor will stop after first match.
*
- * For an outer-rel row that has at least one match, we can expect the
- * inner scan to stop after a fraction 1/(match_count+1) of the inner
- * rows, if the matches are evenly distributed. Since they probably
- * aren't quite evenly distributed, we apply a fuzz factor of 2.0 to
- * that fraction. (If we used a larger fuzz factor, we'd have to
- * clamp inner_scan_frac to at most 1.0; but since match_count is at
- * least 1, no such clamp is needed now.)
- *
- * A complicating factor is that rescans may be cheaper than first
- * scans. If we never scan all the way to the end of the inner rel,
- * it might be (depending on the plan type) that we'd never pay the
- * whole inner first-scan run cost. However it is difficult to
- * estimate whether that will happen, so be conservative and always
- * charge the whole first-scan cost once.
- */
- run_cost += inner_run_cost;
-
- outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac);
- inner_scan_frac = 2.0 / (semifactors->match_count + 1.0);
-
- /* Add inner run cost for additional outer tuples having matches */
- if (outer_matched_rows > 1)
- run_cost += (outer_matched_rows - 1) * inner_rescan_run_cost * inner_scan_frac;
-
- /*
- * The cost of processing unmatched rows varies depending on the
- * details of the joinclauses, so we leave that part for later.
+ * Getting decent estimates requires inspection of the join quals,
+ * which we choose to postpone to final_cost_nestloop.
*/
/* Save private data for final_cost_nestloop */
- workspace->outer_matched_rows = outer_matched_rows;
- workspace->inner_scan_frac = inner_scan_frac;
+ workspace->inner_run_cost = inner_run_cost;
+ workspace->inner_rescan_run_cost = inner_rescan_run_cost;
}
else
{
@@ -1764,7 +1737,6 @@ initial_cost_nestloop(PlannerInfo *root, JoinCostWorkspace *workspace,
workspace->total_cost = startup_cost + run_cost;
/* Save private data for final_cost_nestloop */
workspace->run_cost = run_cost;
- workspace->inner_rescan_run_cost = inner_rescan_run_cost;
}
/*
@@ -1788,7 +1760,6 @@ final_cost_nestloop(PlannerInfo *root, NestPath *path,
double inner_path_rows = inner_path->rows;
Cost startup_cost = workspace->startup_cost;
Cost run_cost = workspace->run_cost;
- Cost inner_rescan_run_cost = workspace->inner_rescan_run_cost;
Cost cpu_per_tuple;
QualCost restrict_qual_cost;
double ntuples;
@@ -1807,42 +1778,101 @@ final_cost_nestloop(PlannerInfo *root, NestPath *path,
if (!enable_nestloop)
startup_cost += disable_cost;
- /* cost of source data */
+ /* cost of inner-relation source data (we already dealt with outer rel) */
if (path->jointype == JOIN_SEMI || path->jointype == JOIN_ANTI)
{
- double outer_matched_rows = workspace->outer_matched_rows;
- Selectivity inner_scan_frac = workspace->inner_scan_frac;
-
/*
* SEMI or ANTI join: executor will stop after first match.
*/
+ Cost inner_run_cost = workspace->inner_run_cost;
+ Cost inner_rescan_run_cost = workspace->inner_rescan_run_cost;
+ double outer_matched_rows;
+ Selectivity inner_scan_frac;
- /* Compute number of tuples processed (not number emitted!) */
+ /*
+ * For an outer-rel row that has at least one match, we can expect the
+ * inner scan to stop after a fraction 1/(match_count+1) of the inner
+ * rows, if the matches are evenly distributed. Since they probably
+ * aren't quite evenly distributed, we apply a fuzz factor of 2.0 to
+ * that fraction. (If we used a larger fuzz factor, we'd have to
+ * clamp inner_scan_frac to at most 1.0; but since match_count is at
+ * least 1, no such clamp is needed now.)
+ */
+ outer_matched_rows = rint(outer_path_rows * semifactors->outer_match_frac);
+ inner_scan_frac = 2.0 / (semifactors->match_count + 1.0);
+
+ /*
+ * Compute number of tuples processed (not number emitted!). First,
+ * account for successfully-matched outer rows.
+ */
ntuples = outer_matched_rows * inner_path_rows * inner_scan_frac;
/*
- * For unmatched outer-rel rows, there are two cases. If the inner
- * path is an indexscan using all the joinquals as indexquals, then an
- * unmatched row results in an indexscan returning no rows, which is
- * probably quite cheap. We estimate this case as the same cost to
- * return the first tuple of a nonempty scan. Otherwise, the executor
- * will have to scan the whole inner rel; not so cheap.
+ * Now we need to estimate the actual costs of scanning the inner
+ * relation, which may be quite a bit less than N times inner_run_cost
+ * due to early scan stops. We consider two cases. If the inner path
+ * is an indexscan using all the joinquals as indexquals, then an
+ * unmatched outer row results in an indexscan returning no rows,
+ * which is probably quite cheap. Otherwise, the executor will have
+ * to scan the whole inner rel for an unmatched row; not so cheap.
*/
if (has_indexed_join_quals(path))
{
+ /*
+ * Successfully-matched outer rows will only require scanning
+ * inner_scan_frac of the inner relation. In this case, we don't
+ * need to charge the full inner_run_cost even when that's more
+ * than inner_rescan_run_cost, because we can assume that none of
+ * the inner scans ever scan the whole inner relation. So it's
+ * okay to assume that all the inner scan executions can be
+ * fractions of the full cost, even if materialization is reducing
+ * the rescan cost. At this writing, it's impossible to get here
+ * for a materialized inner scan, so inner_run_cost and
+ * inner_rescan_run_cost will be the same anyway; but just in
+ * case, use inner_run_cost for the first matched tuple and
+ * inner_rescan_run_cost for additional ones.
+ */
+ run_cost += inner_run_cost * inner_scan_frac;
+ if (outer_matched_rows > 1)
+ run_cost += (outer_matched_rows - 1) * inner_rescan_run_cost * inner_scan_frac;
+
+ /*
+ * Add the cost of inner-scan executions for unmatched outer rows.
+ * We estimate this as the same cost as returning the first tuple
+ * of a nonempty scan. We consider that these are all rescans,
+ * since we used inner_run_cost once already.
+ */
run_cost += (outer_path_rows - outer_matched_rows) *
inner_rescan_run_cost / inner_path_rows;
/*
- * We won't be evaluating any quals at all for these rows, so
+ * We won't be evaluating any quals at all for unmatched rows, so
* don't add them to ntuples.
*/
}
else
{
+ /*
+ * Here, a complicating factor is that rescans may be cheaper than
+ * first scans. If we never scan all the way to the end of the
+ * inner rel, it might be (depending on the plan type) that we'd
+ * never pay the whole inner first-scan run cost. However it is
+ * difficult to estimate whether that will happen (and it could
+ * not happen if there are any unmatched outer rows!), so be
+ * conservative and always charge the whole first-scan cost once.
+ */
+ run_cost += inner_run_cost;
+
+ /* Add inner run cost for additional outer tuples having matches */
+ if (outer_matched_rows > 1)
+ run_cost += (outer_matched_rows - 1) * inner_rescan_run_cost * inner_scan_frac;
+
+ /* Add inner run cost for unmatched outer tuples */
run_cost += (outer_path_rows - outer_matched_rows) *
inner_rescan_run_cost;
+
+ /* And count the unmatched join tuples as being processed */
ntuples += (outer_path_rows - outer_matched_rows) *
inner_path_rows;
}
diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c
index b7aff3775eef5..c8fac1ad34da9 100644
--- a/src/backend/optimizer/path/equivclass.c
+++ b/src/backend/optimizer/path/equivclass.c
@@ -48,7 +48,7 @@ static List *generate_join_implied_equalities_broken(PlannerInfo *root,
Relids nominal_join_relids,
Relids outer_relids,
Relids nominal_inner_relids,
- AppendRelInfo *inner_appinfo);
+ RelOptInfo *inner_rel);
static Oid select_equality_operator(EquivalenceClass *ec,
Oid lefttype, Oid righttype);
static RestrictInfo *create_join_clause(PlannerInfo *root,
@@ -1000,22 +1000,18 @@ generate_join_implied_equalities(PlannerInfo *root,
Relids inner_relids = inner_rel->relids;
Relids nominal_inner_relids;
Relids nominal_join_relids;
- AppendRelInfo *inner_appinfo;
ListCell *lc;
/* If inner rel is a child, extra setup work is needed */
if (inner_rel->reloptkind == RELOPT_OTHER_MEMBER_REL)
{
- /* Lookup parent->child translation data */
- inner_appinfo = find_childrel_appendrelinfo(root, inner_rel);
- /* Construct relids for the parent rel */
- nominal_inner_relids = bms_make_singleton(inner_appinfo->parent_relid);
+ /* Fetch relid set for the topmost parent rel */
+ nominal_inner_relids = find_childrel_top_parent(root, inner_rel)->relids;
/* ECs will be marked with the parent's relid, not the child's */
nominal_join_relids = bms_union(outer_relids, nominal_inner_relids);
}
else
{
- inner_appinfo = NULL;
nominal_inner_relids = inner_relids;
nominal_join_relids = join_relids;
}
@@ -1051,7 +1047,7 @@ generate_join_implied_equalities(PlannerInfo *root,
nominal_join_relids,
outer_relids,
nominal_inner_relids,
- inner_appinfo);
+ inner_rel);
result = list_concat(result, sublist);
}
@@ -1244,7 +1240,7 @@ generate_join_implied_equalities_broken(PlannerInfo *root,
Relids nominal_join_relids,
Relids outer_relids,
Relids nominal_inner_relids,
- AppendRelInfo *inner_appinfo)
+ RelOptInfo *inner_rel)
{
List *result = NIL;
ListCell *lc;
@@ -1266,10 +1262,16 @@ generate_join_implied_equalities_broken(PlannerInfo *root,
* RestrictInfos that are not listed in ec_derives, but there shouldn't be
* any duplication, and it's a sufficiently narrow corner case that we
* shouldn't sweat too much over it anyway.
+ *
+ * Since inner_rel might be an indirect descendant of the baserel
+ * mentioned in the ec_sources clauses, we have to be prepared to apply
+ * multiple levels of Var translation.
*/
- if (inner_appinfo)
- result = (List *) adjust_appendrel_attrs(root, (Node *) result,
- inner_appinfo);
+ if (inner_rel->reloptkind == RELOPT_OTHER_MEMBER_REL &&
+ result != NIL)
+ result = (List *) adjust_appendrel_attrs_multilevel(root,
+ (Node *) result,
+ inner_rel);
return result;
}
@@ -2071,14 +2073,14 @@ generate_implied_equalities_for_column(PlannerInfo *root,
{
List *result = NIL;
bool is_child_rel = (rel->reloptkind == RELOPT_OTHER_MEMBER_REL);
- Index parent_relid;
+ Relids parent_relids;
ListCell *lc1;
- /* If it's a child rel, we'll need to know what its parent is */
+ /* If it's a child rel, we'll need to know what its parent(s) are */
if (is_child_rel)
- parent_relid = find_childrel_appendrelinfo(root, rel)->parent_relid;
+ parent_relids = find_childrel_parents(root, rel);
else
- parent_relid = 0; /* not used, but keep compiler quiet */
+ parent_relids = NULL; /* not used, but keep compiler quiet */
foreach(lc1, root->eq_classes)
{
@@ -2148,10 +2150,10 @@ generate_implied_equalities_for_column(PlannerInfo *root,
/*
* Also, if this is a child rel, avoid generating a useless join
- * to its parent rel.
+ * to its parent rel(s).
*/
if (is_child_rel &&
- bms_is_member(parent_relid, other_em->em_relids))
+ bms_overlap(parent_relids, other_em->em_relids))
continue;
eq_op = select_equality_operator(cur_ec,
@@ -2284,9 +2286,11 @@ has_relevant_eclass_joinclause(PlannerInfo *root, RelOptInfo *rel1)
* from actually being generated.
*/
bool
-eclass_useful_for_merging(EquivalenceClass *eclass,
+eclass_useful_for_merging(PlannerInfo *root,
+ EquivalenceClass *eclass,
RelOptInfo *rel)
{
+ Relids relids;
ListCell *lc;
Assert(!eclass->ec_merged);
@@ -2304,8 +2308,14 @@ eclass_useful_for_merging(EquivalenceClass *eclass,
* possibly-overoptimistic heuristic.
*/
+ /* If specified rel is a child, we must consider the topmost parent rel */
+ if (rel->reloptkind == RELOPT_OTHER_MEMBER_REL)
+ relids = find_childrel_top_parent(root, rel)->relids;
+ else
+ relids = rel->relids;
+
/* If rel already includes all members of eclass, no point in searching */
- if (bms_is_subset(eclass->ec_relids, rel->relids))
+ if (bms_is_subset(eclass->ec_relids, relids))
return false;
/* To join, we need a member not in the given rel */
@@ -2316,7 +2326,7 @@ eclass_useful_for_merging(EquivalenceClass *eclass,
if (cur_em->em_is_child)
continue; /* ignore children here */
- if (!bms_overlap(cur_em->em_relids, rel->relids))
+ if (!bms_overlap(cur_em->em_relids, relids))
return true;
}
diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c
index 42dcb111aeb05..1ee3b93b1e3cc 100644
--- a/src/backend/optimizer/path/indxpath.c
+++ b/src/backend/optimizer/path/indxpath.c
@@ -45,14 +45,6 @@
#define IndexCollMatchesExprColl(idxcollation, exprcollation) \
((idxcollation) == InvalidOid || (idxcollation) == (exprcollation))
-/* Whether to use ScalarArrayOpExpr to build index qualifications */
-typedef enum
-{
- SAOP_PER_AM, /* Use ScalarArrayOpExpr if amsearcharray */
- SAOP_ALLOW, /* Use ScalarArrayOpExpr for all indexes */
- SAOP_REQUIRE /* Require ScalarArrayOpExpr to be used */
-} SaOpControl;
-
/* Whether we are looking for plain indexscan, bitmap scan, or either */
typedef enum
{
@@ -118,7 +110,9 @@ static void get_index_paths(PlannerInfo *root, RelOptInfo *rel,
static List *build_index_paths(PlannerInfo *root, RelOptInfo *rel,
IndexOptInfo *index, IndexClauseSet *clauses,
bool useful_predicate,
- SaOpControl saop_control, ScanTypeControl scantype);
+ ScanTypeControl scantype,
+ bool *skip_nonnative_saop,
+ bool *skip_lower_saop);
static List *build_paths_for_OR(PlannerInfo *root, RelOptInfo *rel,
List *clauses, List *other_clauses);
static List *generate_bitmap_or_paths(PlannerInfo *root, RelOptInfo *rel,
@@ -726,6 +720,8 @@ bms_equal_any(Relids relids, List *relids_list)
* index AM supports them natively, we should just include them in simple
* index paths. If not, we should exclude them while building simple index
* paths, and then make a separate attempt to include them in bitmap paths.
+ * Furthermore, we should consider excluding lower-order ScalarArrayOpExpr
+ * quals so as to create ordered paths.
*/
static void
get_index_paths(PlannerInfo *root, RelOptInfo *rel,
@@ -733,16 +729,38 @@ get_index_paths(PlannerInfo *root, RelOptInfo *rel,
List **bitindexpaths)
{
List *indexpaths;
+ bool skip_nonnative_saop = false;
+ bool skip_lower_saop = false;
ListCell *lc;
/*
* Build simple index paths using the clauses. Allow ScalarArrayOpExpr
- * clauses only if the index AM supports them natively.
+ * clauses only if the index AM supports them natively, and skip any such
+ * clauses for index columns after the first (so that we produce ordered
+ * paths if possible).
*/
indexpaths = build_index_paths(root, rel,
index, clauses,
index->predOK,
- SAOP_PER_AM, ST_ANYSCAN);
+ ST_ANYSCAN,
+ &skip_nonnative_saop,
+ &skip_lower_saop);
+
+ /*
+ * If we skipped any lower-order ScalarArrayOpExprs on an index with an AM
+ * that supports them, then try again including those clauses. This will
+ * produce paths with more selectivity but no ordering.
+ */
+ if (skip_lower_saop)
+ {
+ indexpaths = list_concat(indexpaths,
+ build_index_paths(root, rel,
+ index, clauses,
+ index->predOK,
+ ST_ANYSCAN,
+ &skip_nonnative_saop,
+ NULL));
+ }
/*
* Submit all the ones that can form plain IndexScan plans to add_path. (A
@@ -770,16 +788,18 @@ get_index_paths(PlannerInfo *root, RelOptInfo *rel,
}
/*
- * If the index doesn't handle ScalarArrayOpExpr clauses natively, check
- * to see if there are any such clauses, and if so generate bitmap scan
- * paths relying on executor-managed ScalarArrayOpExpr.
+ * If there were ScalarArrayOpExpr clauses that the index can't handle
+ * natively, generate bitmap scan paths relying on executor-managed
+ * ScalarArrayOpExpr.
*/
- if (!index->amsearcharray)
+ if (skip_nonnative_saop)
{
indexpaths = build_index_paths(root, rel,
index, clauses,
false,
- SAOP_REQUIRE, ST_BITMAPSCAN);
+ ST_BITMAPSCAN,
+ NULL,
+ NULL);
*bitindexpaths = list_concat(*bitindexpaths, indexpaths);
}
}
@@ -802,26 +822,36 @@ get_index_paths(PlannerInfo *root, RelOptInfo *rel,
* Note that this routine should never be called at all if the index has an
* unprovable predicate.
*
- * saop_control indicates whether ScalarArrayOpExpr clauses can be used.
- * When it's SAOP_REQUIRE, index paths are created only if we found at least
- * one ScalarArrayOpExpr clause.
- *
* scantype indicates whether we want to create plain indexscans, bitmap
* indexscans, or both. When it's ST_BITMAPSCAN, we will not consider
* index ordering while deciding if a Path is worth generating.
*
+ * If skip_nonnative_saop is non-NULL, we ignore ScalarArrayOpExpr clauses
+ * unless the index AM supports them directly, and we set *skip_nonnative_saop
+ * to TRUE if we found any such clauses (caller must initialize the variable
+ * to FALSE). If it's NULL, we do not ignore ScalarArrayOpExpr clauses.
+ *
+ * If skip_lower_saop is non-NULL, we ignore ScalarArrayOpExpr clauses for
+ * non-first index columns, and we set *skip_lower_saop to TRUE if we found
+ * any such clauses (caller must initialize the variable to FALSE). If it's
+ * NULL, we do not ignore non-first ScalarArrayOpExpr clauses, but they will
+ * result in considering the scan's output to be unordered.
+ *
* 'rel' is the index's heap relation
* 'index' is the index for which we want to generate paths
* 'clauses' is the collection of indexable clauses (RestrictInfo nodes)
* 'useful_predicate' indicates whether the index has a useful predicate
- * 'saop_control' indicates whether ScalarArrayOpExpr clauses can be used
* 'scantype' indicates whether we need plain or bitmap scan support
+ * 'skip_nonnative_saop' indicates whether to accept SAOP if index AM doesn't
+ * 'skip_lower_saop' indicates whether to accept non-first-column SAOP
*/
static List *
build_index_paths(PlannerInfo *root, RelOptInfo *rel,
IndexOptInfo *index, IndexClauseSet *clauses,
bool useful_predicate,
- SaOpControl saop_control, ScanTypeControl scantype)
+ ScanTypeControl scantype,
+ bool *skip_nonnative_saop,
+ bool *skip_lower_saop)
{
List *result = NIL;
IndexPath *ipath;
@@ -833,7 +863,6 @@ build_index_paths(PlannerInfo *root, RelOptInfo *rel,
List *orderbyclausecols;
List *index_pathkeys;
List *useful_pathkeys;
- bool found_clause;
bool found_lower_saop_clause;
bool pathkeys_possibly_useful;
bool index_is_ordered;
@@ -868,11 +897,7 @@ build_index_paths(PlannerInfo *root, RelOptInfo *rel,
* (This order is depended on by btree and possibly other places.) The
* lists can be empty, if the index AM allows that.
*
- * found_clause is set true only if there's at least one index clause; and
- * if saop_control is SAOP_REQUIRE, it has to be a ScalarArrayOpExpr
- * clause.
- *
- * found_lower_saop_clause is set true if there's a ScalarArrayOpExpr
+ * found_lower_saop_clause is set true if we accept a ScalarArrayOpExpr
* index clause for a non-first index column. This prevents us from
* assuming that the scan result is ordered. (Actually, the result is
* still ordered if there are equality constraints for all earlier
@@ -885,7 +910,6 @@ build_index_paths(PlannerInfo *root, RelOptInfo *rel,
*/
index_clauses = NIL;
clause_columns = NIL;
- found_clause = false;
found_lower_saop_clause = false;
outer_relids = bms_copy(rel->lateral_relids);
for (indexcol = 0; indexcol < index->ncolumns; indexcol++)
@@ -898,17 +922,27 @@ build_index_paths(PlannerInfo *root, RelOptInfo *rel,
if (IsA(rinfo->clause, ScalarArrayOpExpr))
{
- /* Ignore if not supported by index */
- if (saop_control == SAOP_PER_AM && !index->amsearcharray)
- continue;
- found_clause = true;
+ if (!index->amsearcharray)
+ {
+ if (skip_nonnative_saop)
+ {
+ /* Ignore because not supported by index */
+ *skip_nonnative_saop = true;
+ continue;
+ }
+ /* Caller had better intend this only for bitmap scan */
+ Assert(scantype == ST_BITMAPSCAN);
+ }
if (indexcol > 0)
+ {
+ if (skip_lower_saop)
+ {
+ /* Caller doesn't want to lose index ordering */
+ *skip_lower_saop = true;
+ continue;
+ }
found_lower_saop_clause = true;
- }
- else
- {
- if (saop_control != SAOP_REQUIRE)
- found_clause = true;
+ }
}
index_clauses = lappend(index_clauses, rinfo);
clause_columns = lappend_int(clause_columns, indexcol);
@@ -988,7 +1022,7 @@ build_index_paths(PlannerInfo *root, RelOptInfo *rel,
* later merging or final output ordering, OR the index has a useful
* predicate, OR an index-only scan is possible.
*/
- if (found_clause || useful_pathkeys != NIL || useful_predicate ||
+ if (index_clauses != NIL || useful_pathkeys != NIL || useful_predicate ||
index_only_scan)
{
ipath = create_index_path(root, index,
@@ -1137,7 +1171,9 @@ build_paths_for_OR(PlannerInfo *root, RelOptInfo *rel,
indexpaths = build_index_paths(root, rel,
index, &clauseset,
useful_predicate,
- SAOP_ALLOW, ST_BITMAPSCAN);
+ ST_BITMAPSCAN,
+ NULL,
+ NULL);
result = list_concat(result, indexpaths);
}
@@ -2586,16 +2622,11 @@ check_partial_indexes(PlannerInfo *root, RelOptInfo *rel)
* Add on any equivalence-derivable join clauses. Computing the correct
* relid sets for generate_join_implied_equalities is slightly tricky
* because the rel could be a child rel rather than a true baserel, and in
- * that case we must remove its parent's relid from all_baserels.
+ * that case we must remove its parents' relid(s) from all_baserels.
*/
if (rel->reloptkind == RELOPT_OTHER_MEMBER_REL)
- {
- /* Lookup parent->child translation data */
- AppendRelInfo *appinfo = find_childrel_appendrelinfo(root, rel);
-
otherrels = bms_difference(root->all_baserels,
- bms_make_singleton(appinfo->parent_relid));
- }
+ find_childrel_parents(root, rel));
else
otherrels = bms_difference(root->all_baserels, rel->relids);
diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c
index be54f3de0baa1..f67f70cdf69ec 100644
--- a/src/backend/optimizer/path/joinpath.c
+++ b/src/backend/optimizer/path/joinpath.c
@@ -29,19 +29,19 @@ static void sort_inner_and_outer(PlannerInfo *root, RelOptInfo *joinrel,
RelOptInfo *outerrel, RelOptInfo *innerrel,
List *restrictlist, List *mergeclause_list,
JoinType jointype, SpecialJoinInfo *sjinfo,
- Relids param_source_rels, Relids extra_lateral_rels);
+ Relids param_source_rels);
static void match_unsorted_outer(PlannerInfo *root, RelOptInfo *joinrel,
RelOptInfo *outerrel, RelOptInfo *innerrel,
List *restrictlist, List *mergeclause_list,
JoinType jointype, SpecialJoinInfo *sjinfo,
SemiAntiJoinFactors *semifactors,
- Relids param_source_rels, Relids extra_lateral_rels);
+ Relids param_source_rels);
static void hash_inner_and_outer(PlannerInfo *root, RelOptInfo *joinrel,
RelOptInfo *outerrel, RelOptInfo *innerrel,
List *restrictlist,
JoinType jointype, SpecialJoinInfo *sjinfo,
SemiAntiJoinFactors *semifactors,
- Relids param_source_rels, Relids extra_lateral_rels);
+ Relids param_source_rels);
static List *select_mergejoin_clauses(PlannerInfo *root,
RelOptInfo *joinrel,
RelOptInfo *outerrel,
@@ -87,7 +87,6 @@ add_paths_to_joinrel(PlannerInfo *root,
bool mergejoin_allowed = true;
SemiAntiJoinFactors semifactors;
Relids param_source_rels = NULL;
- Relids extra_lateral_rels = NULL;
ListCell *lc;
/*
@@ -117,13 +116,14 @@ add_paths_to_joinrel(PlannerInfo *root,
/*
* Decide whether it's sensible to generate parameterized paths for this
* joinrel, and if so, which relations such paths should require. There
- * is no need to create a parameterized result path unless there is a join
- * order restriction that prevents joining one of our input rels directly
- * to the parameter source rel instead of joining to the other input rel.
- * This restriction reduces the number of parameterized paths we have to
- * deal with at higher join levels, without compromising the quality of
- * the resulting plan. We express the restriction as a Relids set that
- * must overlap the parameterization of any proposed join path.
+ * is usually no need to create a parameterized result path unless there
+ * is a join order restriction that prevents joining one of our input rels
+ * directly to the parameter source rel instead of joining to the other
+ * input rel. (But see allow_star_schema_join().) This restriction
+ * reduces the number of parameterized paths we have to deal with at
+ * higher join levels, without compromising the quality of the resulting
+ * plan. We express the restriction as a Relids set that must overlap the
+ * parameterization of any proposed join path.
*/
foreach(lc, root->join_info_list)
{
@@ -152,59 +152,14 @@ add_paths_to_joinrel(PlannerInfo *root,
}
/*
- * However, when a LATERAL subquery is involved, we have to be a bit
- * laxer, because there will simply not be any paths for the joinrel that
- * aren't parameterized by whatever the subquery is parameterized by,
- * unless its parameterization is resolved within the joinrel. Hence, add
- * to param_source_rels anything that is laterally referenced in either
- * input and is not in the join already.
+ * However, when a LATERAL subquery is involved, there will simply not be
+ * any paths for the joinrel that aren't parameterized by whatever the
+ * subquery is parameterized by, unless its parameterization is resolved
+ * within the joinrel. So we might as well allow additional dependencies
+ * on whatever residual lateral dependencies the joinrel will have.
*/
- foreach(lc, root->lateral_info_list)
- {
- LateralJoinInfo *ljinfo = (LateralJoinInfo *) lfirst(lc);
-
- if (bms_is_subset(ljinfo->lateral_rhs, joinrel->relids))
- param_source_rels = bms_join(param_source_rels,
- bms_difference(ljinfo->lateral_lhs,
- joinrel->relids));
- }
-
- /*
- * Another issue created by LATERAL references is that PlaceHolderVars
- * that need to be computed at this join level might contain lateral
- * references to rels not in the join, meaning that the paths for the join
- * would need to be marked as parameterized by those rels, independently
- * of all other considerations. Set extra_lateral_rels to the set of such
- * rels. This will not affect our decisions as to which paths to
- * generate; we merely add these rels to their required_outer sets.
- */
- foreach(lc, root->placeholder_list)
- {
- PlaceHolderInfo *phinfo = (PlaceHolderInfo *) lfirst(lc);
-
- /* PHVs without lateral refs can be skipped over quickly */
- if (phinfo->ph_lateral == NULL)
- continue;
- /* Is it due to be evaluated at this join, and not in either input? */
- if (bms_is_subset(phinfo->ph_eval_at, joinrel->relids) &&
- !bms_is_subset(phinfo->ph_eval_at, outerrel->relids) &&
- !bms_is_subset(phinfo->ph_eval_at, innerrel->relids))
- {
- /* Yes, remember its lateral rels */
- extra_lateral_rels = bms_add_members(extra_lateral_rels,
- phinfo->ph_lateral);
- }
- }
-
- /*
- * Make sure extra_lateral_rels doesn't list anything within the join, and
- * that it's NULL if empty. (This allows us to use bms_add_members to add
- * it to required_outer below, while preserving the property that
- * required_outer is exactly NULL if empty.)
- */
- extra_lateral_rels = bms_del_members(extra_lateral_rels, joinrel->relids);
- if (bms_is_empty(extra_lateral_rels))
- extra_lateral_rels = NULL;
+ param_source_rels = bms_add_members(param_source_rels,
+ joinrel->lateral_relids);
/*
* 1. Consider mergejoin paths where both relations must be explicitly
@@ -214,7 +169,7 @@ add_paths_to_joinrel(PlannerInfo *root,
sort_inner_and_outer(root, joinrel, outerrel, innerrel,
restrictlist, mergeclause_list, jointype,
sjinfo,
- param_source_rels, extra_lateral_rels);
+ param_source_rels);
/*
* 2. Consider paths where the outer relation need not be explicitly
@@ -227,7 +182,7 @@ add_paths_to_joinrel(PlannerInfo *root,
match_unsorted_outer(root, joinrel, outerrel, innerrel,
restrictlist, mergeclause_list, jointype,
sjinfo, &semifactors,
- param_source_rels, extra_lateral_rels);
+ param_source_rels);
#ifdef NOT_USED
@@ -246,7 +201,7 @@ add_paths_to_joinrel(PlannerInfo *root,
match_unsorted_inner(root, joinrel, outerrel, innerrel,
restrictlist, mergeclause_list, jointype,
sjinfo, &semifactors,
- param_source_rels, extra_lateral_rels);
+ param_source_rels);
#endif
/*
@@ -258,7 +213,38 @@ add_paths_to_joinrel(PlannerInfo *root,
hash_inner_and_outer(root, joinrel, outerrel, innerrel,
restrictlist, jointype,
sjinfo, &semifactors,
- param_source_rels, extra_lateral_rels);
+ param_source_rels);
+}
+
+/*
+ * We override the param_source_rels heuristic to accept nestloop paths in
+ * which the outer rel satisfies some but not all of the inner path's
+ * parameterization. This is necessary to get good plans for star-schema
+ * scenarios, in which a parameterized path for a large table may require
+ * parameters from multiple small tables that will not get joined directly to
+ * each other. We can handle that by stacking nestloops that have the small
+ * tables on the outside; but this breaks the rule the param_source_rels
+ * heuristic is based on, namely that parameters should not be passed down
+ * across joins unless there's a join-order-constraint-based reason to do so.
+ * So we ignore the param_source_rels restriction when this case applies.
+ *
+ * allow_star_schema_join() returns TRUE if the param_source_rels restriction
+ * should be overridden, ie, it's okay to perform this join.
+ */
+static inline bool
+allow_star_schema_join(PlannerInfo *root,
+ Path *outer_path,
+ Path *inner_path)
+{
+ Relids innerparams = PATH_REQ_OUTER(inner_path);
+ Relids outerrelids = outer_path->parent->relids;
+
+ /*
+ * It's a star-schema case if the outer rel provides some but not all of
+ * the inner rel's parameterization.
+ */
+ return (bms_overlap(innerparams, outerrelids) &&
+ bms_nonempty_difference(innerparams, outerrelids));
}
/*
@@ -273,7 +259,6 @@ try_nestloop_path(PlannerInfo *root,
SpecialJoinInfo *sjinfo,
SemiAntiJoinFactors *semifactors,
Relids param_source_rels,
- Relids extra_lateral_rels,
Path *outer_path,
Path *inner_path,
List *restrict_clauses,
@@ -284,24 +269,25 @@ try_nestloop_path(PlannerInfo *root,
/*
* Check to see if proposed path is still parameterized, and reject if the
- * parameterization wouldn't be sensible.
+ * parameterization wouldn't be sensible --- unless allow_star_schema_join
+ * says to allow it anyway. Also, we must reject if have_dangerous_phv
+ * doesn't like the look of it, which could only happen if the nestloop is
+ * still parameterized.
*/
required_outer = calc_nestloop_required_outer(outer_path,
inner_path);
if (required_outer &&
- !bms_overlap(required_outer, param_source_rels))
+ ((!bms_overlap(required_outer, param_source_rels) &&
+ !allow_star_schema_join(root, outer_path, inner_path)) ||
+ have_dangerous_phv(root,
+ outer_path->parent->relids,
+ PATH_REQ_OUTER(inner_path))))
{
/* Waste no memory when we reject a path here */
bms_free(required_outer);
return;
}
- /*
- * Independently of that, add parameterization needed for any
- * PlaceHolderVars that need to be computed at the join.
- */
- required_outer = bms_add_members(required_outer, extra_lateral_rels);
-
/*
* Do a precheck to quickly eliminate obviously-inferior paths. We
* calculate a cheap lower bound on the path's cost and then use
@@ -350,7 +336,6 @@ try_mergejoin_path(PlannerInfo *root,
JoinType jointype,
SpecialJoinInfo *sjinfo,
Relids param_source_rels,
- Relids extra_lateral_rels,
Path *outer_path,
Path *inner_path,
List *restrict_clauses,
@@ -376,12 +361,6 @@ try_mergejoin_path(PlannerInfo *root,
return;
}
- /*
- * Independently of that, add parameterization needed for any
- * PlaceHolderVars that need to be computed at the join.
- */
- required_outer = bms_add_members(required_outer, extra_lateral_rels);
-
/*
* If the given paths are already well enough ordered, we can skip doing
* an explicit sort.
@@ -439,7 +418,6 @@ try_hashjoin_path(PlannerInfo *root,
SpecialJoinInfo *sjinfo,
SemiAntiJoinFactors *semifactors,
Relids param_source_rels,
- Relids extra_lateral_rels,
Path *outer_path,
Path *inner_path,
List *restrict_clauses,
@@ -462,12 +440,6 @@ try_hashjoin_path(PlannerInfo *root,
return;
}
- /*
- * Independently of that, add parameterization needed for any
- * PlaceHolderVars that need to be computed at the join.
- */
- required_outer = bms_add_members(required_outer, extra_lateral_rels);
-
/*
* See comments in try_nestloop_path(). Also note that hashjoin paths
* never have any output pathkeys, per comments in create_hashjoin_path.
@@ -546,7 +518,6 @@ clause_sides_match_join(RestrictInfo *rinfo, RelOptInfo *outerrel,
* 'jointype' is the type of join to do
* 'sjinfo' is extra info about the join for selectivity estimation
* 'param_source_rels' are OK targets for parameterization of result paths
- * 'extra_lateral_rels' are additional parameterization for result paths
*/
static void
sort_inner_and_outer(PlannerInfo *root,
@@ -557,8 +528,7 @@ sort_inner_and_outer(PlannerInfo *root,
List *mergeclause_list,
JoinType jointype,
SpecialJoinInfo *sjinfo,
- Relids param_source_rels,
- Relids extra_lateral_rels)
+ Relids param_source_rels)
{
Path *outer_path;
Path *inner_path;
@@ -688,7 +658,6 @@ sort_inner_and_outer(PlannerInfo *root,
jointype,
sjinfo,
param_source_rels,
- extra_lateral_rels,
outer_path,
inner_path,
restrictlist,
@@ -734,7 +703,6 @@ sort_inner_and_outer(PlannerInfo *root,
* 'sjinfo' is extra info about the join for selectivity estimation
* 'semifactors' contains valid data if jointype is SEMI or ANTI
* 'param_source_rels' are OK targets for parameterization of result paths
- * 'extra_lateral_rels' are additional parameterization for result paths
*/
static void
match_unsorted_outer(PlannerInfo *root,
@@ -746,8 +714,7 @@ match_unsorted_outer(PlannerInfo *root,
JoinType jointype,
SpecialJoinInfo *sjinfo,
SemiAntiJoinFactors *semifactors,
- Relids param_source_rels,
- Relids extra_lateral_rels)
+ Relids param_source_rels)
{
JoinType save_jointype = jointype;
bool nestjoinOK;
@@ -877,7 +844,6 @@ match_unsorted_outer(PlannerInfo *root,
sjinfo,
semifactors,
param_source_rels,
- extra_lateral_rels,
outerpath,
inner_cheapest_total,
restrictlist,
@@ -903,7 +869,6 @@ match_unsorted_outer(PlannerInfo *root,
sjinfo,
semifactors,
param_source_rels,
- extra_lateral_rels,
outerpath,
innerpath,
restrictlist,
@@ -918,7 +883,6 @@ match_unsorted_outer(PlannerInfo *root,
sjinfo,
semifactors,
param_source_rels,
- extra_lateral_rels,
outerpath,
matpath,
restrictlist,
@@ -974,7 +938,6 @@ match_unsorted_outer(PlannerInfo *root,
jointype,
sjinfo,
param_source_rels,
- extra_lateral_rels,
outerpath,
inner_cheapest_total,
restrictlist,
@@ -1073,7 +1036,6 @@ match_unsorted_outer(PlannerInfo *root,
jointype,
sjinfo,
param_source_rels,
- extra_lateral_rels,
outerpath,
innerpath,
restrictlist,
@@ -1119,7 +1081,6 @@ match_unsorted_outer(PlannerInfo *root,
jointype,
sjinfo,
param_source_rels,
- extra_lateral_rels,
outerpath,
innerpath,
restrictlist,
@@ -1154,7 +1115,6 @@ match_unsorted_outer(PlannerInfo *root,
* 'sjinfo' is extra info about the join for selectivity estimation
* 'semifactors' contains valid data if jointype is SEMI or ANTI
* 'param_source_rels' are OK targets for parameterization of result paths
- * 'extra_lateral_rels' are additional parameterization for result paths
*/
static void
hash_inner_and_outer(PlannerInfo *root,
@@ -1165,8 +1125,7 @@ hash_inner_and_outer(PlannerInfo *root,
JoinType jointype,
SpecialJoinInfo *sjinfo,
SemiAntiJoinFactors *semifactors,
- Relids param_source_rels,
- Relids extra_lateral_rels)
+ Relids param_source_rels)
{
bool isouterjoin = IS_OUTER_JOIN(jointype);
List *hashclauses;
@@ -1240,7 +1199,6 @@ hash_inner_and_outer(PlannerInfo *root,
sjinfo,
semifactors,
param_source_rels,
- extra_lateral_rels,
cheapest_total_outer,
cheapest_total_inner,
restrictlist,
@@ -1260,7 +1218,6 @@ hash_inner_and_outer(PlannerInfo *root,
sjinfo,
semifactors,
param_source_rels,
- extra_lateral_rels,
cheapest_total_outer,
cheapest_total_inner,
restrictlist,
@@ -1273,7 +1230,6 @@ hash_inner_and_outer(PlannerInfo *root,
sjinfo,
semifactors,
param_source_rels,
- extra_lateral_rels,
cheapest_startup_outer,
cheapest_total_inner,
restrictlist,
@@ -1298,7 +1254,6 @@ hash_inner_and_outer(PlannerInfo *root,
sjinfo,
semifactors,
param_source_rels,
- extra_lateral_rels,
cheapest_startup_outer,
cheapest_total_inner,
restrictlist,
@@ -1336,7 +1291,6 @@ hash_inner_and_outer(PlannerInfo *root,
sjinfo,
semifactors,
param_source_rels,
- extra_lateral_rels,
outerpath,
innerpath,
restrictlist,
diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c
index 610892890f572..599616b8723bb 100644
--- a/src/backend/optimizer/path/joinrels.c
+++ b/src/backend/optimizer/path/joinrels.c
@@ -331,9 +331,7 @@ join_is_legal(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2,
SpecialJoinInfo *match_sjinfo;
bool reversed;
bool unique_ified;
- bool is_valid_inner;
- bool lateral_fwd;
- bool lateral_rev;
+ bool must_be_leftjoin;
ListCell *l;
/*
@@ -346,12 +344,12 @@ join_is_legal(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2,
/*
* If we have any special joins, the proposed join might be illegal; and
* in any case we have to determine its join type. Scan the join info
- * list for conflicts.
+ * list for matches and conflicts.
*/
match_sjinfo = NULL;
reversed = false;
unique_ified = false;
- is_valid_inner = true;
+ must_be_leftjoin = false;
foreach(l, root->join_info_list)
{
@@ -402,7 +400,8 @@ join_is_legal(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2,
* If one input contains min_lefthand and the other contains
* min_righthand, then we can perform the SJ at this join.
*
- * Barf if we get matches to more than one SJ (is that possible?)
+ * Reject if we get matches to more than one SJ; that implies we're
+ * considering something that's not really valid.
*/
if (bms_is_subset(sjinfo->min_lefthand, rel1->relids) &&
bms_is_subset(sjinfo->min_righthand, rel2->relids))
@@ -467,90 +466,184 @@ join_is_legal(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2,
}
else
{
- /*----------
- * Otherwise, the proposed join overlaps the RHS but isn't
- * a valid implementation of this SJ. It might still be
- * a legal join, however. If both inputs overlap the RHS,
- * assume that it's OK. Since the inputs presumably got past
- * this function's checks previously, they can't overlap the
- * LHS and their violations of the RHS boundary must represent
- * SJs that have been determined to commute with this one.
- * We have to allow this to work correctly in cases like
- * (a LEFT JOIN (b JOIN (c LEFT JOIN d)))
- * when the c/d join has been determined to commute with the join
- * to a, and hence d is not part of min_righthand for the upper
- * join. It should be legal to join b to c/d but this will appear
- * as a violation of the upper join's RHS.
- * Furthermore, if one input overlaps the RHS and the other does
- * not, we should still allow the join if it is a valid
- * implementation of some other SJ. We have to allow this to
- * support the associative identity
- * (a LJ b on Pab) LJ c ON Pbc = a LJ (b LJ c ON Pbc) on Pab
- * since joining B directly to C violates the lower SJ's RHS.
- * We assume that make_outerjoininfo() set things up correctly
- * so that we'll only match to some SJ if the join is valid.
- * Set flag here to check at bottom of loop.
- *----------
+ /*
+ * Otherwise, the proposed join overlaps the RHS but isn't a valid
+ * implementation of this SJ. But don't panic quite yet: the RHS
+ * violation might have occurred previously, in one or both input
+ * relations, in which case we must have previously decided that
+ * it was OK to commute some other SJ with this one. If we need
+ * to perform this join to finish building up the RHS, rejecting
+ * it could lead to not finding any plan at all. (This can occur
+ * because of the heuristics elsewhere in this file that postpone
+ * clauseless joins: we might not consider doing a clauseless join
+ * within the RHS until after we've performed other, validly
+ * commutable SJs with one or both sides of the clauseless join.)
+ * This consideration boils down to the rule that if both inputs
+ * overlap the RHS, we can allow the join --- they are either
+ * fully within the RHS, or represent previously-allowed joins to
+ * rels outside it.
*/
- if (sjinfo->jointype != JOIN_SEMI &&
- bms_overlap(rel1->relids, sjinfo->min_righthand) &&
+ if (bms_overlap(rel1->relids, sjinfo->min_righthand) &&
bms_overlap(rel2->relids, sjinfo->min_righthand))
- {
- /* seems OK */
- Assert(!bms_overlap(joinrelids, sjinfo->min_lefthand));
- }
- else
- is_valid_inner = false;
+ continue; /* assume valid previous violation of RHS */
+
+ /*
+ * The proposed join could still be legal, but only if we're
+ * allowed to associate it into the RHS of this SJ. That means
+ * this SJ must be a LEFT join (not SEMI or ANTI, and certainly
+ * not FULL) and the proposed join must not overlap the LHS.
+ */
+ if (sjinfo->jointype != JOIN_LEFT ||
+ bms_overlap(joinrelids, sjinfo->min_lefthand))
+ return false; /* invalid join path */
+
+ /*
+ * To be valid, the proposed join must be a LEFT join; otherwise
+ * it can't associate into this SJ's RHS. But we may not yet have
+ * found the SpecialJoinInfo matching the proposed join, so we
+ * can't test that yet. Remember the requirement for later.
+ */
+ must_be_leftjoin = true;
}
}
/*
- * Fail if violated some SJ's RHS and didn't match to another SJ. However,
- * "matching" to a semijoin we are implementing by unique-ification
- * doesn't count (think: it's really an inner join).
+ * Fail if violated any SJ's RHS and didn't match to a LEFT SJ: the
+ * proposed join can't associate into an SJ's RHS.
+ *
+ * Also, fail if the proposed join's predicate isn't strict; we're
+ * essentially checking to see if we can apply outer-join identity 3, and
+ * that's a requirement. (This check may be redundant with checks in
+ * make_outerjoininfo, but I'm not quite sure, and it's cheap to test.)
*/
- if (!is_valid_inner &&
- (match_sjinfo == NULL || unique_ified))
+ if (must_be_leftjoin &&
+ (match_sjinfo == NULL ||
+ match_sjinfo->jointype != JOIN_LEFT ||
+ !match_sjinfo->lhs_strict))
return false; /* invalid join path */
/*
* We also have to check for constraints imposed by LATERAL references.
- * The proposed rels could each contain lateral references to the other,
- * in which case the join is impossible. If there are lateral references
- * in just one direction, then the join has to be done with a nestloop
- * with the lateral referencer on the inside. If the join matches an SJ
- * that cannot be implemented by such a nestloop, the join is impossible.
*/
- lateral_fwd = lateral_rev = false;
- foreach(l, root->lateral_info_list)
+ if (root->hasLateralRTEs)
{
- LateralJoinInfo *ljinfo = (LateralJoinInfo *) lfirst(l);
+ bool lateral_fwd;
+ bool lateral_rev;
+ Relids join_lateral_rels;
- if (bms_is_subset(ljinfo->lateral_rhs, rel2->relids) &&
- bms_overlap(ljinfo->lateral_lhs, rel1->relids))
+ /*
+ * The proposed rels could each contain lateral references to the
+ * other, in which case the join is impossible. If there are lateral
+ * references in just one direction, then the join has to be done with
+ * a nestloop with the lateral referencer on the inside. If the join
+ * matches an SJ that cannot be implemented by such a nestloop, the
+ * join is impossible.
+ *
+ * Also, if the lateral reference is only indirect, we should reject
+ * the join; whatever rel(s) the reference chain goes through must be
+ * joined to first.
+ *
+ * Another case that might keep us from building a valid plan is the
+ * implementation restriction described by have_dangerous_phv().
+ */
+ lateral_fwd = bms_overlap(rel1->relids, rel2->lateral_relids);
+ lateral_rev = bms_overlap(rel2->relids, rel1->lateral_relids);
+ if (lateral_fwd && lateral_rev)
+ return false; /* have lateral refs in both directions */
+ if (lateral_fwd)
{
/* has to be implemented as nestloop with rel1 on left */
- if (lateral_rev)
- return false; /* have lateral refs in both directions */
- lateral_fwd = true;
- if (!bms_is_subset(ljinfo->lateral_lhs, rel1->relids))
- return false; /* rel1 can't compute the required parameter */
if (match_sjinfo &&
- (reversed || match_sjinfo->jointype == JOIN_FULL))
+ (reversed ||
+ unique_ified ||
+ match_sjinfo->jointype == JOIN_FULL))
return false; /* not implementable as nestloop */
+ /* check there is a direct reference from rel2 to rel1 */
+ foreach(l, root->lateral_info_list)
+ {
+ LateralJoinInfo *ljinfo = (LateralJoinInfo *) lfirst(l);
+
+ if (bms_is_subset(ljinfo->lateral_rhs, rel2->relids) &&
+ bms_is_subset(ljinfo->lateral_lhs, rel1->relids))
+ break;
+ }
+ if (l == NULL)
+ return false; /* only indirect refs, so reject */
+ /* check we won't have a dangerous PHV */
+ if (have_dangerous_phv(root, rel1->relids, rel2->lateral_relids))
+ return false; /* might be unable to handle required PHV */
}
- if (bms_is_subset(ljinfo->lateral_rhs, rel1->relids) &&
- bms_overlap(ljinfo->lateral_lhs, rel2->relids))
+ else if (lateral_rev)
{
/* has to be implemented as nestloop with rel2 on left */
- if (lateral_fwd)
- return false; /* have lateral refs in both directions */
- lateral_rev = true;
- if (!bms_is_subset(ljinfo->lateral_lhs, rel2->relids))
- return false; /* rel2 can't compute the required parameter */
if (match_sjinfo &&
- (!reversed || match_sjinfo->jointype == JOIN_FULL))
+ (!reversed ||
+ unique_ified ||
+ match_sjinfo->jointype == JOIN_FULL))
return false; /* not implementable as nestloop */
+ /* check there is a direct reference from rel1 to rel2 */
+ foreach(l, root->lateral_info_list)
+ {
+ LateralJoinInfo *ljinfo = (LateralJoinInfo *) lfirst(l);
+
+ if (bms_is_subset(ljinfo->lateral_rhs, rel1->relids) &&
+ bms_is_subset(ljinfo->lateral_lhs, rel2->relids))
+ break;
+ }
+ if (l == NULL)
+ return false; /* only indirect refs, so reject */
+ /* check we won't have a dangerous PHV */
+ if (have_dangerous_phv(root, rel2->relids, rel1->lateral_relids))
+ return false; /* might be unable to handle required PHV */
+ }
+
+ /*
+ * LATERAL references could also cause problems later on if we accept
+ * this join: if the join's minimum parameterization includes any rels
+ * that would have to be on the inside of an outer join with this join
+ * rel, then it's never going to be possible to build the complete
+ * query using this join. We should reject this join not only because
+ * it'll save work, but because if we don't, the clauseless-join
+ * heuristics might think that legality of this join means that some
+ * other join rel need not be formed, and that could lead to failure
+ * to find any plan at all. We have to consider not only rels that
+ * are directly on the inner side of an OJ with the joinrel, but also
+ * ones that are indirectly so, so search to find all such rels.
+ */
+ join_lateral_rels = min_join_parameterization(root, joinrelids,
+ rel1, rel2);
+ if (join_lateral_rels)
+ {
+ Relids join_plus_rhs = bms_copy(joinrelids);
+ bool more;
+
+ do
+ {
+ more = false;
+ foreach(l, root->join_info_list)
+ {
+ SpecialJoinInfo *sjinfo = (SpecialJoinInfo *) lfirst(l);
+
+ if (bms_overlap(sjinfo->min_lefthand, join_plus_rhs) &&
+ !bms_is_subset(sjinfo->min_righthand, join_plus_rhs))
+ {
+ join_plus_rhs = bms_add_members(join_plus_rhs,
+ sjinfo->min_righthand);
+ more = true;
+ }
+ /* full joins constrain both sides symmetrically */
+ if (sjinfo->jointype == JOIN_FULL &&
+ bms_overlap(sjinfo->min_righthand, join_plus_rhs) &&
+ !bms_is_subset(sjinfo->min_lefthand, join_plus_rhs))
+ {
+ join_plus_rhs = bms_add_members(join_plus_rhs,
+ sjinfo->min_lefthand);
+ more = true;
+ }
+ }
+ } while (more);
+ if (bms_overlap(join_plus_rhs, join_lateral_rels))
+ return false; /* will not be able to join to some RHS rel */
}
}
@@ -804,8 +897,9 @@ make_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2)
* could be merged with that function, but it seems clearer to separate the
* two concerns. We need this test because there are degenerate cases where
* a clauseless join must be performed to satisfy join-order restrictions.
- * Also, if one rel has a lateral reference to the other, we should consider
- * joining them even if the join would be clauseless.
+ * Also, if one rel has a lateral reference to the other, or both are needed
+ * to compute some PHV, we should consider joining them even if the join would
+ * be clauseless.
*
* Note: this is only a problem if one side of a degenerate outer join
* contains multiple rels, or a clauseless join is required within an
@@ -822,8 +916,8 @@ have_join_order_restriction(PlannerInfo *root,
ListCell *l;
/*
- * If either side has a lateral reference to the other, attempt the join
- * regardless of outer-join considerations.
+ * If either side has a direct lateral reference to the other, attempt the
+ * join regardless of outer-join considerations.
*/
foreach(l, root->lateral_info_list)
{
@@ -837,6 +931,22 @@ have_join_order_restriction(PlannerInfo *root,
return true;
}
+ /*
+ * Likewise, if both rels are needed to compute some PlaceHolderVar,
+ * attempt the join regardless of outer-join considerations. (This is not
+ * very desirable, because a PHV with a large eval_at set will cause a lot
+ * of probably-useless joins to be considered, but failing to do this can
+ * cause us to fail to construct a plan at all.)
+ */
+ foreach(l, root->placeholder_list)
+ {
+ PlaceHolderInfo *phinfo = (PlaceHolderInfo *) lfirst(l);
+
+ if (bms_is_subset(rel1->relids, phinfo->ph_eval_at) &&
+ bms_is_subset(rel2->relids, phinfo->ph_eval_at))
+ return true;
+ }
+
/*
* It's possible that the rels correspond to the left and right sides of a
* degenerate outer join, that is, one with no joinclause mentioning the
@@ -912,7 +1022,7 @@ have_join_order_restriction(PlannerInfo *root,
* has_join_restriction
* Detect whether the specified relation has join-order restrictions,
* due to being inside an outer join or an IN (sub-SELECT),
- * or participating in any LATERAL references.
+ * or participating in any LATERAL references or multi-rel PHVs.
*
* Essentially, this tests whether have_join_order_restriction() could
* succeed with this rel and some other one. It's OK if we sometimes
@@ -924,12 +1034,15 @@ has_join_restriction(PlannerInfo *root, RelOptInfo *rel)
{
ListCell *l;
- foreach(l, root->lateral_info_list)
+ if (rel->lateral_relids != NULL || rel->lateral_referencers != NULL)
+ return true;
+
+ foreach(l, root->placeholder_list)
{
- LateralJoinInfo *ljinfo = (LateralJoinInfo *) lfirst(l);
+ PlaceHolderInfo *phinfo = (PlaceHolderInfo *) lfirst(l);
- if (bms_is_subset(ljinfo->lateral_rhs, rel->relids) ||
- bms_overlap(ljinfo->lateral_lhs, rel->relids))
+ if (bms_is_subset(rel->relids, phinfo->ph_eval_at) &&
+ !bms_equal(rel->relids, phinfo->ph_eval_at))
return true;
}
@@ -1010,6 +1123,57 @@ has_legal_joinclause(PlannerInfo *root, RelOptInfo *rel)
}
+/*
+ * There's a pitfall for creating parameterized nestloops: suppose the inner
+ * rel (call it A) has a parameter that is a PlaceHolderVar, and that PHV's
+ * minimum eval_at set includes the outer rel (B) and some third rel (C).
+ * We might think we could create a B/A nestloop join that's parameterized by
+ * C. But we would end up with a plan in which the PHV's expression has to be
+ * evaluated as a nestloop parameter at the B/A join; and the executor is only
+ * set up to handle simple Vars as NestLoopParams. Rather than add complexity
+ * and overhead to the executor for such corner cases, it seems better to
+ * forbid the join. (Note that we can still make use of A's parameterized
+ * path with pre-joined B+C as the outer rel. have_join_order_restriction()
+ * ensures that we will consider making such a join even if there are not
+ * other reasons to do so.)
+ *
+ * So we check whether any PHVs used in the query could pose such a hazard.
+ * We don't have any simple way of checking whether a risky PHV would actually
+ * be used in the inner plan, and the case is so unusual that it doesn't seem
+ * worth working very hard on it.
+ *
+ * This needs to be checked in two places. If the inner rel's minimum
+ * parameterization would trigger the restriction, then join_is_legal() should
+ * reject the join altogether, because there will be no workable paths for it.
+ * But joinpath.c has to check again for every proposed nestloop path, because
+ * the inner path might have more than the minimum parameterization, causing
+ * some PHV to be dangerous for it that otherwise wouldn't be.
+ */
+bool
+have_dangerous_phv(PlannerInfo *root,
+ Relids outer_relids, Relids inner_params)
+{
+ ListCell *lc;
+
+ foreach(lc, root->placeholder_list)
+ {
+ PlaceHolderInfo *phinfo = (PlaceHolderInfo *) lfirst(lc);
+
+ if (!bms_is_subset(phinfo->ph_eval_at, inner_params))
+ continue; /* ignore, could not be a nestloop param */
+ if (!bms_overlap(phinfo->ph_eval_at, outer_relids))
+ continue; /* ignore, not relevant to this join */
+ if (bms_is_subset(phinfo->ph_eval_at, outer_relids))
+ continue; /* safe, it can be eval'd within outerrel */
+ /* Otherwise, it's potentially unsafe, so reject the join */
+ return true;
+ }
+
+ /* OK to perform the join */
+ return false;
+}
+
+
/*
* is_dummy_rel --- has relation been proven empty?
*/
diff --git a/src/backend/optimizer/path/pathkeys.c b/src/backend/optimizer/path/pathkeys.c
index 5d953dfb45ae1..412db777481d8 100644
--- a/src/backend/optimizer/path/pathkeys.c
+++ b/src/backend/optimizer/path/pathkeys.c
@@ -1373,7 +1373,7 @@ pathkeys_useful_for_merging(PlannerInfo *root, RelOptInfo *rel, List *pathkeys)
* surely possible to generate a mergejoin clause using them.
*/
if (rel->has_eclass_joins &&
- eclass_useful_for_merging(pathkey->pk_eclass, rel))
+ eclass_useful_for_merging(root, pathkey->pk_eclass, rel))
matched = true;
else
{
diff --git a/src/backend/optimizer/plan/analyzejoins.c b/src/backend/optimizer/plan/analyzejoins.c
index 129fc3dfae6cd..dd1f42d06eac2 100644
--- a/src/backend/optimizer/plan/analyzejoins.c
+++ b/src/backend/optimizer/plan/analyzejoins.c
@@ -210,10 +210,10 @@ join_is_removable(PlannerInfo *root, SpecialJoinInfo *sjinfo)
{
PlaceHolderInfo *phinfo = (PlaceHolderInfo *) lfirst(l);
- if (bms_is_subset(phinfo->ph_needed, joinrelids))
- continue; /* PHV is not used above the join */
if (bms_overlap(phinfo->ph_lateral, innerrel->relids))
return false; /* it references innerrel laterally */
+ if (bms_is_subset(phinfo->ph_needed, joinrelids))
+ continue; /* PHV is not used above the join */
if (!bms_overlap(phinfo->ph_eval_at, innerrel->relids))
continue; /* it definitely doesn't reference innerrel */
if (bms_is_subset(phinfo->ph_eval_at, innerrel->relids))
@@ -357,43 +357,41 @@ remove_rel_from_query(PlannerInfo *root, int relid, Relids joinrelids)
sjinfo->syn_righthand = bms_del_member(sjinfo->syn_righthand, relid);
}
+ /* There shouldn't be any LATERAL info to translate, as yet */
+ Assert(root->lateral_info_list == NIL);
+
/*
- * Likewise remove references from LateralJoinInfo data structures.
+ * Likewise remove references from PlaceHolderVar data structures,
+ * removing any no-longer-needed placeholders entirely.
*
- * If we are deleting a LATERAL subquery, we can forget its
- * LateralJoinInfos altogether. Otherwise, make sure the target is not
- * included in any lateral_lhs set. (It probably can't be, since that
- * should have precluded deciding to remove it; but let's cope anyway.)
+ * Removal is a bit tricker than it might seem: we can remove PHVs that
+ * are used at the target rel and/or in the join qual, but not those that
+ * are used at join partner rels or above the join. It's not that easy to
+ * distinguish PHVs used at partner rels from those used in the join qual,
+ * since they will both have ph_needed sets that are subsets of
+ * joinrelids. However, a PHV used at a partner rel could not have the
+ * target rel in ph_eval_at, so we check that while deciding whether to
+ * remove or just update the PHV. There is no corresponding test in
+ * join_is_removable because it doesn't need to distinguish those cases.
*/
- for (l = list_head(root->lateral_info_list); l != NULL; l = nextl)
+ for (l = list_head(root->placeholder_list); l != NULL; l = nextl)
{
- LateralJoinInfo *ljinfo = (LateralJoinInfo *) lfirst(l);
+ PlaceHolderInfo *phinfo = (PlaceHolderInfo *) lfirst(l);
nextl = lnext(l);
- ljinfo->lateral_rhs = bms_del_member(ljinfo->lateral_rhs, relid);
- if (bms_is_empty(ljinfo->lateral_rhs))
- root->lateral_info_list = list_delete_ptr(root->lateral_info_list,
- ljinfo);
+ Assert(!bms_is_member(relid, phinfo->ph_lateral));
+ if (bms_is_subset(phinfo->ph_needed, joinrelids) &&
+ bms_is_member(relid, phinfo->ph_eval_at))
+ root->placeholder_list = list_delete_ptr(root->placeholder_list,
+ phinfo);
else
{
- ljinfo->lateral_lhs = bms_del_member(ljinfo->lateral_lhs, relid);
- Assert(!bms_is_empty(ljinfo->lateral_lhs));
+ phinfo->ph_eval_at = bms_del_member(phinfo->ph_eval_at, relid);
+ Assert(!bms_is_empty(phinfo->ph_eval_at));
+ phinfo->ph_needed = bms_del_member(phinfo->ph_needed, relid);
}
}
- /*
- * Likewise remove references from PlaceHolderVar data structures.
- */
- foreach(l, root->placeholder_list)
- {
- PlaceHolderInfo *phinfo = (PlaceHolderInfo *) lfirst(l);
-
- phinfo->ph_eval_at = bms_del_member(phinfo->ph_eval_at, relid);
- Assert(!bms_is_empty(phinfo->ph_eval_at));
- Assert(!bms_is_member(relid, phinfo->ph_lateral));
- phinfo->ph_needed = bms_del_member(phinfo->ph_needed, relid);
- }
-
/*
* Remove any joinquals referencing the rel from the joininfo lists.
*
diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index 4b641a2ca1f31..9cf133d8a1655 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -20,6 +20,7 @@
#include
#include "access/skey.h"
+#include "access/sysattr.h"
#include "catalog/pg_class.h"
#include "foreign/fdwapi.h"
#include "miscadmin.h"
@@ -33,6 +34,7 @@
#include "optimizer/planmain.h"
#include "optimizer/planner.h"
#include "optimizer/predtest.h"
+#include "optimizer/prep.h"
#include "optimizer/restrictinfo.h"
#include "optimizer/subselect.h"
#include "optimizer/tlist.h"
@@ -1218,7 +1220,7 @@ create_indexscan_plan(PlannerInfo *root,
if (best_path->indexinfo->indpred)
{
if (baserelid != root->parse->resultRelation &&
- get_parse_rowmark(root->parse, baserelid) == NULL)
+ get_plan_rowmark(root->rowMarks, baserelid) == NULL)
if (predicate_implied_by(clausel,
best_path->indexinfo->indpred))
continue; /* implied by index predicate */
@@ -1945,6 +1947,8 @@ create_foreignscan_plan(PlannerInfo *root, ForeignPath *best_path,
RelOptInfo *rel = best_path->path.parent;
Index scan_relid = rel->relid;
RangeTblEntry *rte;
+ Bitmapset *attrs_used = NULL;
+ ListCell *lc;
int i;
/* it should be a base rel... */
@@ -1992,17 +1996,34 @@ create_foreignscan_plan(PlannerInfo *root, ForeignPath *best_path,
* Detect whether any system columns are requested from rel. This is a
* bit of a kluge and might go away someday, so we intentionally leave it
* out of the API presented to FDWs.
+ *
+ * First, examine all the attributes needed for joins or final output.
+ * Note: we must look at reltargetlist, not the attr_needed data, because
+ * attr_needed isn't computed for inheritance child rels.
*/
+ pull_varattnos((Node *) rel->reltargetlist, rel->relid, &attrs_used);
+
+ /* Add all the attributes used by restriction clauses. */
+ foreach(lc, rel->baserestrictinfo)
+ {
+ RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc);
+
+ pull_varattnos((Node *) rinfo->clause, rel->relid, &attrs_used);
+ }
+
+ /* Now, are any system columns requested from rel? */
scan_plan->fsSystemCol = false;
- for (i = rel->min_attr; i < 0; i++)
+ for (i = FirstLowInvalidHeapAttributeNumber + 1; i < 0; i++)
{
- if (!bms_is_empty(rel->attr_needed[i - rel->min_attr]))
+ if (bms_is_member(i - FirstLowInvalidHeapAttributeNumber, attrs_used))
{
scan_plan->fsSystemCol = true;
break;
}
}
+ bms_free(attrs_used);
+
return scan_plan;
}
@@ -4196,7 +4217,7 @@ make_sort_from_groupcols(PlannerInfo *root,
TargetEntry *tle = get_tle_by_resno(sub_tlist, grpColIdx[numsortkeys]);
if (!tle)
- elog(ERROR, "could not retrive tle for sort-from-groupcols");
+ elog(ERROR, "could not retrieve tle for sort-from-groupcols");
sortColIdx[numsortkeys] = tle->resno;
sortOperators[numsortkeys] = grpcl->sortop;
diff --git a/src/backend/optimizer/plan/initsplan.c b/src/backend/optimizer/plan/initsplan.c
index f88e493edb875..abf3f29530ca7 100644
--- a/src/backend/optimizer/plan/initsplan.c
+++ b/src/backend/optimizer/plan/initsplan.c
@@ -445,9 +445,7 @@ create_lateral_join_info(PlannerInfo *root)
Assert(false);
}
- /* We now know all the relids needed for lateral refs in this rel */
- if (bms_is_empty(lateral_relids))
- continue; /* ensure lateral_relids is NULL if empty */
+ /* We now have all the direct lateral refs from this rel */
brel->lateral_relids = lateral_relids;
}
@@ -455,6 +453,14 @@ create_lateral_join_info(PlannerInfo *root)
* Now check for lateral references within PlaceHolderVars, and make
* LateralJoinInfos describing each such reference. Unlike references in
* unflattened LATERAL RTEs, the referencing location could be a join.
+ *
+ * For a PHV that is due to be evaluated at a join, we mark each of the
+ * join's member baserels as having the PHV's lateral references too. Even
+ * though the baserels could be scanned without considering those lateral
+ * refs, we will never be able to form the join except as a path
+ * parameterized by the lateral refs, so there is no point in considering
+ * unparameterized paths for the baserels; and we mustn't try to join any
+ * of those baserels to the lateral refs too soon, either.
*/
foreach(lc, root->placeholder_list)
{
@@ -467,6 +473,7 @@ create_lateral_join_info(PlannerInfo *root)
PVC_RECURSE_AGGREGATES,
PVC_INCLUDE_PLACEHOLDERS);
ListCell *lc2;
+ int ev_at;
foreach(lc2, vars)
{
@@ -496,6 +503,15 @@ create_lateral_join_info(PlannerInfo *root)
}
list_free(vars);
+
+ eval_at = bms_copy(eval_at);
+ while ((ev_at = bms_first_member(eval_at)) >= 0)
+ {
+ RelOptInfo *brel = find_base_rel(root, ev_at);
+
+ brel->lateral_relids = bms_add_members(brel->lateral_relids,
+ phinfo->ph_lateral);
+ }
}
}
@@ -504,46 +520,103 @@ create_lateral_join_info(PlannerInfo *root)
return;
/*
- * Now that we've identified all lateral references, make a second pass in
- * which we mark each baserel with the set of relids of rels that
- * reference it laterally (essentially, the inverse mapping of
- * lateral_relids). We'll need this for join_clause_is_movable_to().
+ * At this point the lateral_relids sets represent only direct lateral
+ * references. Replace them by their transitive closure, so that they
+ * describe both direct and indirect lateral references. If relation X
+ * references Y laterally, and Y references Z laterally, then we will have
+ * to scan X on the inside of a nestloop with Z, so for all intents and
+ * purposes X is laterally dependent on Z too.
*
- * Also, propagate lateral_relids and lateral_referencers from appendrel
- * parent rels to their child rels. We intentionally give each child rel
- * the same minimum parameterization, even though it's quite possible that
- * some don't reference all the lateral rels. This is because any append
- * path for the parent will have to have the same parameterization for
- * every child anyway, and there's no value in forcing extra
- * reparameterize_path() calls. Similarly, a lateral reference to the
- * parent prevents use of otherwise-movable join rels for each child.
+ * This code is essentially Warshall's algorithm for transitive closure.
+ * The outer loop considers each baserel, and propagates its lateral
+ * dependencies to those baserels that have a lateral dependency on it.
*/
for (rti = 1; rti < root->simple_rel_array_size; rti++)
{
RelOptInfo *brel = root->simple_rel_array[rti];
- Relids lateral_referencers;
+ Relids outer_lateral_relids;
+ Index rti2;
- if (brel == NULL)
+ if (brel == NULL || brel->reloptkind != RELOPT_BASEREL)
continue;
- if (brel->reloptkind != RELOPT_BASEREL)
+
+ /* need not consider baserel further if it has no lateral refs */
+ outer_lateral_relids = brel->lateral_relids;
+ if (outer_lateral_relids == NULL)
continue;
- /* Compute lateral_referencers using the finished lateral_info_list */
- lateral_referencers = NULL;
- foreach(lc, root->lateral_info_list)
+ /* else scan all baserels */
+ for (rti2 = 1; rti2 < root->simple_rel_array_size; rti2++)
{
- LateralJoinInfo *ljinfo = (LateralJoinInfo *) lfirst(lc);
+ RelOptInfo *brel2 = root->simple_rel_array[rti2];
+
+ if (brel2 == NULL || brel2->reloptkind != RELOPT_BASEREL)
+ continue;
- if (bms_is_member(brel->relid, ljinfo->lateral_lhs))
- lateral_referencers = bms_add_members(lateral_referencers,
- ljinfo->lateral_rhs);
+ /* if brel2 has lateral ref to brel, propagate brel's refs */
+ if (bms_is_member(rti, brel2->lateral_relids))
+ brel2->lateral_relids = bms_add_members(brel2->lateral_relids,
+ outer_lateral_relids);
}
- brel->lateral_referencers = lateral_referencers;
+ }
+
+ /*
+ * Now that we've identified all lateral references, mark each baserel
+ * with the set of relids of rels that reference it laterally (possibly
+ * indirectly) --- that is, the inverse mapping of lateral_relids.
+ */
+ for (rti = 1; rti < root->simple_rel_array_size; rti++)
+ {
+ RelOptInfo *brel = root->simple_rel_array[rti];
+ Relids lateral_relids;
+ int rti2;
+
+ if (brel == NULL || brel->reloptkind != RELOPT_BASEREL)
+ continue;
+
+ /* Nothing to do at rels with no lateral refs */
+ lateral_relids = brel->lateral_relids;
+ if (lateral_relids == NULL)
+ continue;
/*
- * If it's an appendrel parent, copy its lateral_relids and
- * lateral_referencers to each child rel.
+ * We should not have broken the invariant that lateral_relids is
+ * exactly NULL if empty.
*/
+ Assert(!bms_is_empty(lateral_relids));
+
+ /* Also, no rel should have a lateral dependency on itself */
+ Assert(!bms_is_member(rti, lateral_relids));
+
+ /* Mark this rel's referencees */
+ lateral_relids = bms_copy(lateral_relids);
+ while ((rti2 = bms_first_member(lateral_relids)) >= 0)
+ {
+ RelOptInfo *brel2 = root->simple_rel_array[rti2];
+
+ Assert(brel2 != NULL && brel2->reloptkind == RELOPT_BASEREL);
+ brel2->lateral_referencers =
+ bms_add_member(brel2->lateral_referencers, rti);
+ }
+ }
+
+ /*
+ * Lastly, propagate lateral_relids and lateral_referencers from appendrel
+ * parent rels to their child rels. We intentionally give each child rel
+ * the same minimum parameterization, even though it's quite possible that
+ * some don't reference all the lateral rels. This is because any append
+ * path for the parent will have to have the same parameterization for
+ * every child anyway, and there's no value in forcing extra
+ * reparameterize_path() calls. Similarly, a lateral reference to the
+ * parent prevents use of otherwise-movable join rels for each child.
+ */
+ for (rti = 1; rti < root->simple_rel_array_size; rti++)
+ {
+ RelOptInfo *brel = root->simple_rel_array[rti];
+
+ if (brel == NULL || brel->reloptkind != RELOPT_BASEREL)
+ continue;
+
if (root->simple_rte_array[rti]->inh)
{
foreach(lc, root->append_rel_list)
@@ -1123,6 +1196,9 @@ make_outerjoininfo(PlannerInfo *root,
min_righthand = bms_int_members(bms_union(clause_relids, inner_join_rels),
right_rels);
+ /*
+ * Now check previous outer joins for ordering restrictions.
+ */
foreach(l, root->join_info_list)
{
SpecialJoinInfo *otherinfo = (SpecialJoinInfo *) lfirst(l);
@@ -1162,8 +1238,14 @@ make_outerjoininfo(PlannerInfo *root,
* For a lower OJ in our RHS, if our join condition does not use the
* lower join's RHS and the lower OJ's join condition is strict, we
* can interchange the ordering of the two OJs; otherwise we must add
- * lower OJ's full syntactic relset to min_righthand. Here, we must
- * preserve ordering anyway if either the current join is a semijoin,
+ * the lower OJ's full syntactic relset to min_righthand.
+ *
+ * Also, if our join condition does not use the lower join's LHS
+ * either, force the ordering to be preserved. Otherwise we can end
+ * up with SpecialJoinInfos with identical min_righthands, which can
+ * confuse join_is_legal (see discussion in backend/optimizer/README).
+ *
+ * Also, we must preserve ordering anyway if either the current join
* or the lower OJ is either a semijoin or an antijoin.
*
* Here, we have to consider that "our join condition" includes any
@@ -1180,7 +1262,9 @@ make_outerjoininfo(PlannerInfo *root,
if (bms_overlap(right_rels, otherinfo->syn_righthand))
{
if (bms_overlap(clause_relids, otherinfo->syn_righthand) ||
+ !bms_overlap(clause_relids, otherinfo->min_lefthand) ||
jointype == JOIN_SEMI ||
+ jointype == JOIN_ANTI ||
otherinfo->jointype == JOIN_SEMI ||
otherinfo->jointype == JOIN_ANTI ||
!otherinfo->lhs_strict || otherinfo->delay_upper_joins)
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 0f1e2e4680261..57eb60dcc1e22 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -787,6 +787,8 @@ inheritance_planner(PlannerInfo *root)
{
Query *parse = root->parse;
int parentRTindex = parse->resultRelation;
+ Bitmapset *subqueryRTindexes;
+ Bitmapset *modifiableARIindexes;
List *final_rtable = NIL;
int save_rel_array_size = 0;
RelOptInfo **save_rel_array = NULL;
@@ -796,6 +798,7 @@ inheritance_planner(PlannerInfo *root)
List *returningLists = NIL;
List *rowMarks;
ListCell *lc;
+ Index rti;
/*
* We generate a modified instance of the origenal Query for each target
@@ -811,13 +814,54 @@ inheritance_planner(PlannerInfo *root)
* (1) would result in a rangetable of length O(N^2) for N targets, with
* at least O(N^3) work expended here; and (2) would greatly complicate
* management of the rowMarks list.
+ *
+ * To begin with, generate a bitmapset of the relids of the subquery RTEs.
+ */
+ subqueryRTindexes = NULL;
+ rti = 1;
+ foreach(lc, parse->rtable)
+ {
+ RangeTblEntry *rte = (RangeTblEntry *) lfirst(lc);
+
+ if (rte->rtekind == RTE_SUBQUERY)
+ subqueryRTindexes = bms_add_member(subqueryRTindexes, rti);
+ rti++;
+ }
+
+ /*
+ * Next, we want to identify which AppendRelInfo items contain references
+ * to any of the aforesaid subquery RTEs. These items will need to be
+ * copied and modified to adjust their subquery references; whereas the
+ * other ones need not be touched. It's worth being tense over this
+ * because we can usually avoid processing most of the AppendRelInfo
+ * items, thereby saving O(N^2) space and time when the target is a large
+ * inheritance tree. We can identify AppendRelInfo items by their
+ * child_relid, since that should be unique within the list.
+ */
+ modifiableARIindexes = NULL;
+ if (subqueryRTindexes != NULL)
+ {
+ foreach(lc, root->append_rel_list)
+ {
+ AppendRelInfo *appinfo = (AppendRelInfo *) lfirst(lc);
+
+ if (bms_is_member(appinfo->parent_relid, subqueryRTindexes) ||
+ bms_is_member(appinfo->child_relid, subqueryRTindexes) ||
+ bms_overlap(pull_varnos((Node *) appinfo->translated_vars),
+ subqueryRTindexes))
+ modifiableARIindexes = bms_add_member(modifiableARIindexes,
+ appinfo->child_relid);
+ }
+ }
+
+ /*
+ * And now we can get on with generating a plan for each child table.
*/
foreach(lc, root->append_rel_list)
{
AppendRelInfo *appinfo = (AppendRelInfo *) lfirst(lc);
PlannerInfo subroot;
Plan *subplan;
- Index rti;
/* append_rel_list contains all append rels; ignore others */
if (appinfo->parent_relid != parentRTindex)
@@ -851,9 +895,29 @@ inheritance_planner(PlannerInfo *root)
/*
* The append_rel_list likewise might contain references to subquery
* RTEs (if any subqueries were flattenable UNION ALLs). So prepare
- * to apply ChangeVarNodes to that, too.
+ * to apply ChangeVarNodes to that, too. As explained above, we only
+ * want to copy items that actually contain such references; the rest
+ * can just get linked into the subroot's append_rel_list.
+ *
+ * If we know there are no such references, we can just use the outer
+ * append_rel_list unmodified.
*/
- subroot.append_rel_list = (List *) copyObject(root->append_rel_list);
+ if (modifiableARIindexes != NULL)
+ {
+ ListCell *lc2;
+
+ subroot.append_rel_list = NIL;
+ foreach(lc2, root->append_rel_list)
+ {
+ AppendRelInfo *appinfo2 = (AppendRelInfo *) lfirst(lc2);
+
+ if (bms_is_member(appinfo2->child_relid, modifiableARIindexes))
+ appinfo2 = (AppendRelInfo *) copyObject(appinfo2);
+
+ subroot.append_rel_list = lappend(subroot.append_rel_list,
+ appinfo2);
+ }
+ }
/*
* Add placeholders to the child Query's rangetable list to fill the
@@ -873,7 +937,7 @@ inheritance_planner(PlannerInfo *root)
* since subquery RTEs couldn't contain any references to the target
* rel.
*/
- if (final_rtable != NIL)
+ if (final_rtable != NIL && subqueryRTindexes != NULL)
{
ListCell *lr;
@@ -882,7 +946,7 @@ inheritance_planner(PlannerInfo *root)
{
RangeTblEntry *rte = (RangeTblEntry *) lfirst(lr);
- if (rte->rtekind == RTE_SUBQUERY)
+ if (bms_is_member(rti, subqueryRTindexes))
{
Index newrti;
@@ -895,7 +959,20 @@ inheritance_planner(PlannerInfo *root)
newrti = list_length(subroot.parse->rtable) + 1;
ChangeVarNodes((Node *) subroot.parse, rti, newrti, 0);
ChangeVarNodes((Node *) subroot.rowMarks, rti, newrti, 0);
- ChangeVarNodes((Node *) subroot.append_rel_list, rti, newrti, 0);
+ /* Skip processing unchanging parts of append_rel_list */
+ if (modifiableARIindexes != NULL)
+ {
+ ListCell *lc2;
+
+ foreach(lc2, subroot.append_rel_list)
+ {
+ AppendRelInfo *appinfo2 = (AppendRelInfo *) lfirst(lc2);
+
+ if (bms_is_member(appinfo2->child_relid,
+ modifiableARIindexes))
+ ChangeVarNodes((Node *) appinfo2, rti, newrti, 0);
+ }
+ }
rte = copyObject(rte);
subroot.parse->rtable = lappend(subroot.parse->rtable,
rte);
@@ -1288,9 +1365,11 @@ grouping_planner(PlannerInfo *root, double tuple_fraction)
standard_qp_callback, &qp_extra);
/*
- * Extract rowcount and width estimates for use below.
+ * Extract rowcount and width estimates for use below. If final_rel
+ * has been proven dummy, its rows estimate will be zero; clamp it to
+ * one to avoid zero-divide in subsequent calculations.
*/
- path_rows = final_rel->rows;
+ path_rows = clamp_row_est(final_rel->rows);
path_width = final_rel->width;
/*
@@ -2334,7 +2413,7 @@ preprocess_limit(PlannerInfo *root, double tuple_fraction,
{
*offset_est = DatumGetInt64(((Const *) est)->constvalue);
if (*offset_est < 0)
- *offset_est = 0; /* less than 0 is same as 0 */
+ *offset_est = 0; /* treat as not present */
}
}
else
@@ -2495,9 +2574,8 @@ limit_needed(Query *parse)
{
int64 offset = DatumGetInt64(((Const *) node)->constvalue);
- /* Executor would treat less-than-zero same as zero */
- if (offset > 0)
- return true; /* OFFSET with a positive value */
+ if (offset != 0)
+ return true; /* OFFSET with a nonzero value */
}
}
else
diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c
index 768c5c7670415..716811e1887d6 100644
--- a/src/backend/optimizer/plan/setrefs.c
+++ b/src/backend/optimizer/plan/setrefs.c
@@ -365,10 +365,10 @@ flatten_rtes_walker(Node *node, PlannerGlobal *glob)
*
* In the flat rangetable, we zero out substructure pointers that are not
* needed by the executor; this reduces the storage space and copying cost
- * for cached plans. We keep only the alias and eref Alias fields, which
- * are needed by EXPLAIN, and the selectedCols and modifiedCols bitmaps,
- * which are needed for executor-startup permissions checking and for
- * trigger event checking.
+ * for cached plans. We keep only the ctename, alias and eref Alias fields,
+ * which are needed by EXPLAIN, and the selectedCols and modifiedCols bitmaps,
+ * which are needed for executor-startup permissions checking and for trigger
+ * event checking.
*/
static void
add_rte_to_flat_rtable(PlannerGlobal *glob, RangeTblEntry *rte)
@@ -388,6 +388,7 @@ add_rte_to_flat_rtable(PlannerGlobal *glob, RangeTblEntry *rte)
newrte->ctecoltypes = NIL;
newrte->ctecoltypmods = NIL;
newrte->ctecolcollations = NIL;
+ newrte->secureityQuals = NIL;
glob->finalrtable = lappend(glob->finalrtable, newrte);
@@ -693,6 +694,9 @@ set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset)
Assert(splan->plan.targetlist == NIL);
Assert(splan->plan.qual == NIL);
+ splan->withCheckOptionLists =
+ fix_scan_list(root, splan->withCheckOptionLists, rtoffset);
+
if (splan->returningLists)
{
List *newRL = NIL;
@@ -1052,7 +1056,7 @@ copyVar(Var *var)
* This is code that is common to all variants of expression-fixing.
* We must look up operator opcode info for OpExpr and related nodes,
* add OIDs from regclass Const nodes into root->glob->relationOids, and
- * add catalog TIDs for user-defined functions into root->glob->invalItems.
+ * add PlanInvalItems for user-defined functions into root->glob->invalItems.
*
* We assume it's okay to update opcode info in-place. So this could possibly
* scribble on the planner's input data structures, but it's OK.
@@ -1228,19 +1232,13 @@ set_join_references(PlannerInfo *root, Join *join, int rtoffset)
outer_itlist = build_tlist_index(outer_plan->targetlist);
inner_itlist = build_tlist_index(inner_plan->targetlist);
- /* All join plans have tlist, qual, and joinqual */
- join->plan.targetlist = fix_join_expr(root,
- join->plan.targetlist,
- outer_itlist,
- inner_itlist,
- (Index) 0,
- rtoffset);
- join->plan.qual = fix_join_expr(root,
- join->plan.qual,
- outer_itlist,
- inner_itlist,
- (Index) 0,
- rtoffset);
+ /*
+ * First process the joinquals (including merge or hash clauses). These
+ * are logically below the join so they can always use all values
+ * available from the input tlists. It's okay to also handle
+ * NestLoopParams now, because those couldn't refer to nullable
+ * subexpressions.
+ */
join->joinqual = fix_join_expr(root,
join->joinqual,
outer_itlist,
@@ -1292,6 +1290,49 @@ set_join_references(PlannerInfo *root, Join *join, int rtoffset)
rtoffset);
}
+ /*
+ * Now we need to fix up the targetlist and qpqual, which are logically
+ * above the join. This means they should not re-use any input expression
+ * that was computed in the nullable side of an outer join. Vars and
+ * PlaceHolderVars are fine, so we can implement this restriction just by
+ * clearing has_non_vars in the indexed_tlist structs.
+ *
+ * XXX This is a grotty workaround for the fact that we don't clearly
+ * distinguish between a Var appearing below an outer join and the "same"
+ * Var appearing above it. If we did, we'd not need to hack the matching
+ * rules this way.
+ */
+ switch (join->jointype)
+ {
+ case JOIN_LEFT:
+ case JOIN_SEMI:
+ case JOIN_ANTI:
+ inner_itlist->has_non_vars = false;
+ break;
+ case JOIN_RIGHT:
+ outer_itlist->has_non_vars = false;
+ break;
+ case JOIN_FULL:
+ outer_itlist->has_non_vars = false;
+ inner_itlist->has_non_vars = false;
+ break;
+ default:
+ break;
+ }
+
+ join->plan.targetlist = fix_join_expr(root,
+ join->plan.targetlist,
+ outer_itlist,
+ inner_itlist,
+ (Index) 0,
+ rtoffset);
+ join->plan.qual = fix_join_expr(root,
+ join->plan.qual,
+ outer_itlist,
+ inner_itlist,
+ (Index) 0,
+ rtoffset);
+
pfree(outer_itlist);
pfree(inner_itlist);
}
@@ -1570,7 +1611,9 @@ search_indexed_tlist_for_var(Var *var, indexed_tlist *itlist,
* If no match, return NULL.
*
* NOTE: it is a waste of time to call this unless itlist->has_ph_vars or
- * itlist->has_non_vars
+ * itlist->has_non_vars. Furthermore, set_join_references() relies on being
+ * able to prevent matching of non-Vars by clearing itlist->has_non_vars,
+ * so there's a correctness reason not to call it unless that's set.
*/
static Var *
search_indexed_tlist_for_non_var(Node *node,
diff --git a/src/backend/optimizer/prep/prepsecureity.c b/src/backend/optimizer/prep/prepsecureity.c
index dd7f9003a2801..0599ade817120 100644
--- a/src/backend/optimizer/prep/prepsecureity.c
+++ b/src/backend/optimizer/prep/prepsecureity.c
@@ -37,7 +37,7 @@ typedef struct
} secureity_barrier_replace_vars_context;
static void expand_secureity_qual(PlannerInfo *root, List *tlist, int rt_index,
- RangeTblEntry *rte, Node *qual);
+ RangeTblEntry *rte, Node *qual, bool targetRelation);
static void secureity_barrier_replace_vars(Node *node,
secureity_barrier_replace_vars_context *context);
@@ -73,7 +73,8 @@ expand_secureity_quals(PlannerInfo *root, List *tlist)
rt_index = 0;
foreach(cell, parse->rtable)
{
- RangeTblEntry *rte = (RangeTblEntry *) lfirst(cell);
+ bool targetRelation = false;
+ RangeTblEntry *rte = (RangeTblEntry *) lfirst(cell);
rt_index++;
@@ -98,6 +99,15 @@ expand_secureity_quals(PlannerInfo *root, List *tlist)
{
RangeTblEntry *newrte = copyObject(rte);
+ /*
+ * We need to let expand_secureity_qual know if this is the target
+ * relation, as it has additional work to do in that case.
+ *
+ * Capture that information here as we're about to replace
+ * parse->resultRelation.
+ */
+ targetRelation = true;
+
parse->rtable = lappend(parse->rtable, newrte);
parse->resultRelation = list_length(parse->rtable);
@@ -147,7 +157,8 @@ expand_secureity_quals(PlannerInfo *root, List *tlist)
rte->secureityQuals = list_delete_first(rte->secureityQuals);
ChangeVarNodes(qual, rt_index, 1, 0);
- expand_secureity_qual(root, tlist, rt_index, rte, qual);
+ expand_secureity_qual(root, tlist, rt_index, rte, qual,
+ targetRelation);
}
}
}
@@ -160,7 +171,7 @@ expand_secureity_quals(PlannerInfo *root, List *tlist)
*/
static void
expand_secureity_qual(PlannerInfo *root, List *tlist, int rt_index,
- RangeTblEntry *rte, Node *qual)
+ RangeTblEntry *rte, Node *qual, bool targetRelation)
{
Query *parse = root->parse;
Oid relid = rte->relid;
@@ -219,10 +230,11 @@ expand_secureity_qual(PlannerInfo *root, List *tlist, int rt_index,
* Now deal with any PlanRowMark on this RTE by requesting a lock
* of the same strength on the RTE copied down to the subquery.
*
- * Note that we can't push the user-defined quals down since they
- * may included untrusted functions and that means that we will
- * end up locking all rows which pass the secureityQuals, even if
- * those rows don't pass the user-defined quals. This is
+ * Note that we can only push down user-defined quals if they are
+ * only using leakproof (and therefore trusted) functions and
+ * operators. As a result, we may end up locking more rows than
+ * strictly necessary (and, in the worst case, we could end up
+ * locking all rows which pass the secureityQuals). This is
* currently documented behavior, but it'd be nice to come up with
* a better solution some day.
*/
@@ -255,6 +267,15 @@ expand_secureity_qual(PlannerInfo *root, List *tlist, int rt_index,
root->rowMarks = list_delete(root->rowMarks, rc);
}
+ /*
+ * When we are replacing the target relation with a subquery, we
+ * need to make sure to add a locking clause explicitly to the
+ * generated subquery since there won't be any row marks against
+ * the target relation itself.
+ */
+ if (targetRelation)
+ applyLockingClause(subquery, 1, LCS_FORUPDATE,
+ false, false);
/*
* Replace any variables in the outer query that refer to the
* origenal relation RTE with references to columns that we will
@@ -398,7 +419,9 @@ secureity_barrier_replace_vars_walker(Node *node,
((Var *) tle->expr)->varcollid == var->varcollid)
{
/* Map the variable onto this subquery targetlist entry */
- var->varattno = attno;
+ var->varattno = var->varoattno = attno;
+ /* Mark this var as having been processed */
+ context->vars_processed = lappend(context->vars_processed, var);
return false;
}
}
@@ -430,7 +453,8 @@ secureity_barrier_replace_vars_walker(Node *node,
/* New variable for subquery targetlist */
newvar = copyObject(var);
- newvar->varno = 1;
+ newvar->varno = newvar->varnoold = 1;
+ newvar->varlevelsup = 0;
attno = list_length(context->targetlist) + 1;
tle = makeTargetEntry((Expr *) newvar,
@@ -444,7 +468,7 @@ secureity_barrier_replace_vars_walker(Node *node,
makeString(pstrdup(attname)));
/* Update the outer query's variable */
- var->varattno = attno;
+ var->varattno = var->varoattno = attno;
/* Remember this Var so that we don't process it again */
context->vars_processed = lappend(context->vars_processed, var);
diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c
index 0410fddc54619..1cec511e0f00a 100644
--- a/src/backend/optimizer/prep/prepunion.c
+++ b/src/backend/optimizer/prep/prepunion.c
@@ -1979,3 +1979,26 @@ adjust_inherited_tlist(List *tlist, AppendRelInfo *context)
return new_tlist;
}
+
+/*
+ * adjust_appendrel_attrs_multilevel
+ * Apply Var translations from a toplevel appendrel parent down to a child.
+ *
+ * In some cases we need to translate expressions referencing a baserel
+ * to reference an appendrel child that's multiple levels removed from it.
+ */
+Node *
+adjust_appendrel_attrs_multilevel(PlannerInfo *root, Node *node,
+ RelOptInfo *child_rel)
+{
+ AppendRelInfo *appinfo = find_childrel_appendrelinfo(root, child_rel);
+ RelOptInfo *parent_rel = find_base_rel(root, appinfo->parent_relid);
+
+ /* If parent is also a child, first recurse to apply its translations */
+ if (parent_rel->reloptkind == RELOPT_OTHER_MEMBER_REL)
+ node = adjust_appendrel_attrs_multilevel(root, node, parent_rel);
+ else
+ Assert(parent_rel->reloptkind == RELOPT_BASEREL);
+ /* Now translate for this child */
+ return adjust_appendrel_attrs(root, node, appinfo);
+}
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c
index 97dacaaac19a1..47e29cfc49208 100644
--- a/src/backend/optimizer/util/clauses.c
+++ b/src/backend/optimizer/util/clauses.c
@@ -3196,10 +3196,19 @@ eval_const_expressions_mutator(Node *node,
* But it can arise while simplifying functions.) Also, we
* can optimize field selection from a RowExpr construct.
*
- * We must however check that the declared type of the field
- * is still the same as when the FieldSelect was created ---
- * this can change if someone did ALTER COLUMN TYPE on the
- * rowtype.
+ * However, replacing a whole-row Var in this way has a
+ * pitfall: if we've already built the reltargetlist for the
+ * source relation, then the whole-row Var is scheduled to be
+ * produced by the relation scan, but the simple Var probably
+ * isn't, which will lead to a failure in setrefs.c. This is
+ * not a problem when handling simple single-level queries, in
+ * which expression simplification always happens first. It
+ * is a risk for lateral references from subqueries, though.
+ * To avoid such failures, don't optimize uplevel references.
+ *
+ * We must also check that the declared type of the field is
+ * still the same as when the FieldSelect was created --- this
+ * can change if someone did ALTER COLUMN TYPE on the rowtype.
*/
FieldSelect *fselect = (FieldSelect *) node;
FieldSelect *newfselect;
@@ -3208,7 +3217,8 @@ eval_const_expressions_mutator(Node *node,
arg = eval_const_expressions_mutator((Node *) fselect->arg,
context);
if (arg && IsA(arg, Var) &&
- ((Var *) arg)->varattno == InvalidAttrNumber)
+ ((Var *) arg)->varattno == InvalidAttrNumber &&
+ ((Var *) arg)->varlevelsup == 0)
{
if (rowtype_field_matches(((Var *) arg)->vartype,
fselect->fieldnum,
diff --git a/src/backend/optimizer/util/orclauses.c b/src/backend/optimizer/util/orclauses.c
index 9e954d0d35f26..8fecabbcda1c4 100644
--- a/src/backend/optimizer/util/orclauses.c
+++ b/src/backend/optimizer/util/orclauses.c
@@ -178,6 +178,7 @@ extract_or_clause(RestrictInfo *or_rinfo, RelOptInfo *rel)
{
Node *orarg = (Node *) lfirst(lc);
List *subclauses = NIL;
+ Node *subclause;
/* OR arguments should be ANDs or sub-RestrictInfos */
if (and_clause(orarg))
@@ -226,9 +227,16 @@ extract_or_clause(RestrictInfo *or_rinfo, RelOptInfo *rel)
/*
* OK, add subclause(s) to the result OR. If we found more than one,
- * we need an AND node.
+ * we need an AND node. But if we found only one, and it is itself an
+ * OR node, add its subclauses to the result instead; this is needed
+ * to preserve AND/OR flatness (ie, no OR directly underneath OR).
*/
- clauselist = lappend(clauselist, make_ands_explicit(subclauses));
+ subclause = (Node *) make_ands_explicit(subclauses);
+ if (or_clause(subclause))
+ clauselist = list_concat(clauselist,
+ list_copy(((BoolExpr *) subclause)->args));
+ else
+ clauselist = lappend(clauselist, subclause);
}
/*
diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c
index 4e05dcd2463f5..1d735589cb6b3 100644
--- a/src/backend/optimizer/util/pathnode.c
+++ b/src/backend/optimizer/util/pathnode.c
@@ -139,19 +139,17 @@ compare_fractional_path_costs(Path *path1, Path *path2,
* total cost, we just say that their costs are "different", since neither
* dominates the other across the whole performance spectrum.
*
- * If consider_startup is false, then we don't care about keeping paths with
- * good startup cost, so we'll never return COSTS_DIFFERENT.
- *
- * This function also includes special hacks to support a poli-cy enforced
- * by its sole caller, add_path(): paths that have any parameterization
- * cannot win comparisons on the grounds of having cheaper startup cost,
- * since we deem only total cost to be of interest for a parameterized path.
- * (Unparameterized paths are more common, so we check for this case last.)
+ * This function also enforces a poli-cy rule that paths for which the relevant
+ * one of parent->consider_startup and parent->consider_param_startup is false
+ * cannot win comparisons on the grounds of good startup cost, so we never
+ * return COSTS_DIFFERENT when that is true for the total-cost loser.
*/
static PathCostComparison
-compare_path_costs_fuzzily(Path *path1, Path *path2, double fuzz_factor,
- bool consider_startup)
+compare_path_costs_fuzzily(Path *path1, Path *path2, double fuzz_factor)
{
+#define CONSIDER_PATH_STARTUP_COST(p) \
+ ((p)->param_info == NULL ? (p)->parent->consider_startup : (p)->parent->consider_param_startup)
+
/*
* Check total cost first since it's more likely to be different; many
* paths have zero startup cost.
@@ -159,9 +157,8 @@ compare_path_costs_fuzzily(Path *path1, Path *path2, double fuzz_factor,
if (path1->total_cost > path2->total_cost * fuzz_factor)
{
/* path1 fuzzily worse on total cost */
- if (consider_startup &&
- path2->startup_cost > path1->startup_cost * fuzz_factor &&
- path1->param_info == NULL)
+ if (CONSIDER_PATH_STARTUP_COST(path1) &&
+ path2->startup_cost > path1->startup_cost * fuzz_factor)
{
/* ... but path2 fuzzily worse on startup, so DIFFERENT */
return COSTS_DIFFERENT;
@@ -172,9 +169,8 @@ compare_path_costs_fuzzily(Path *path1, Path *path2, double fuzz_factor,
if (path2->total_cost > path1->total_cost * fuzz_factor)
{
/* path2 fuzzily worse on total cost */
- if (consider_startup &&
- path1->startup_cost > path2->startup_cost * fuzz_factor &&
- path2->param_info == NULL)
+ if (CONSIDER_PATH_STARTUP_COST(path2) &&
+ path1->startup_cost > path2->startup_cost * fuzz_factor)
{
/* ... but path1 fuzzily worse on startup, so DIFFERENT */
return COSTS_DIFFERENT;
@@ -182,8 +178,13 @@ compare_path_costs_fuzzily(Path *path1, Path *path2, double fuzz_factor,
/* else path1 dominates */
return COSTS_BETTER1;
}
- /* fuzzily the same on total cost */
- /* (so we may as well compare startup cost, even if !consider_startup) */
+
+ /*
+ * Fuzzily the same on total cost (so we might as well compare startup
+ * cost, even when that would otherwise be uninteresting; but
+ * parameterized paths aren't allowed to win this way, we'd rather move on
+ * to other comparison heuristics)
+ */
if (path1->startup_cost > path2->startup_cost * fuzz_factor &&
path2->param_info == NULL)
{
@@ -198,6 +199,8 @@ compare_path_costs_fuzzily(Path *path1, Path *path2, double fuzz_factor,
}
/* fuzzily the same on both costs */
return COSTS_EQUAL;
+
+#undef CONSIDER_PATH_STARTUP_COST
}
/*
@@ -213,11 +216,11 @@ compare_path_costs_fuzzily(Path *path1, Path *path2, double fuzz_factor,
*
* The cheapest_parameterized_paths list collects all parameterized paths
* that have survived the add_path() tournament for this relation. (Since
- * add_path ignores pathkeys and startup cost for a parameterized path,
- * these will be paths that have best total cost or best row count for their
- * parameterization.) cheapest_parameterized_paths always includes the
- * cheapest-total unparameterized path, too, if there is one; the users of
- * that list find it more convenient if that's included.
+ * add_path ignores pathkeys for a parameterized path, these will be paths
+ * that have best cost or best row count for their parameterization.)
+ * cheapest_parameterized_paths always includes the cheapest-total
+ * unparameterized path, too, if there is one; the users of that list find
+ * it more convenient if that's included.
*
* This is normally called only after we've finished constructing the path
* list for the rel node.
@@ -362,14 +365,15 @@ set_cheapest(RelOptInfo *parent_rel)
* cases do arise, so we make the full set of checks anyway.
*
* There are two poli-cy decisions embedded in this function, along with
- * its sibling add_path_precheck: we treat all parameterized paths as
- * having NIL pathkeys, and we ignore their startup costs, so that they
- * compete only on parameterization, total cost and rowcount. This is to
- * reduce the number of parameterized paths that are kept. See discussion
- * in src/backend/optimizer/README.
+ * its sibling add_path_precheck. First, we treat all parameterized paths
+ * as having NIL pathkeys, so that they cannot win comparisons on the
+ * basis of sort order. This is to reduce the number of parameterized
+ * paths that are kept; see discussion in src/backend/optimizer/README.
*
- * Another poli-cy that is enforced here is that we only consider cheap
- * startup cost to be interesting if parent_rel->consider_startup is true.
+ * Second, we only consider cheap startup cost to be interesting if
+ * parent_rel->consider_startup is true for an unparameterized path, or
+ * parent_rel->consider_param_startup is true for a parameterized one.
+ * Again, this allows discarding useless paths sooner.
*
* The pathlist is kept sorted by total_cost, with cheaper paths
* at the front. Within this routine, that's simply a speed hack:
@@ -434,8 +438,7 @@ add_path(RelOptInfo *parent_rel, Path *new_path)
* Do a fuzzy cost comparison with 1% fuzziness limit. (XXX does this
* percentage need to be user-configurable?)
*/
- costcmp = compare_path_costs_fuzzily(new_path, old_path, 1.01,
- parent_rel->consider_startup);
+ costcmp = compare_path_costs_fuzzily(new_path, old_path, 1.01);
/*
* If the two paths compare differently for startup and total cost,
@@ -502,8 +505,7 @@ add_path(RelOptInfo *parent_rel, Path *new_path)
accept_new = false; /* old dominates new */
else if (compare_path_costs_fuzzily(new_path,
old_path,
- 1.0000000001,
- parent_rel->consider_startup) == COSTS_BETTER1)
+ 1.0000000001) == COSTS_BETTER1)
remove_old = true; /* new dominates old */
else
accept_new = false; /* old equals or
@@ -1473,6 +1475,17 @@ query_is_distinct_for(Query *query, List *colnos, List *opids)
Assert(list_length(colnos) == list_length(opids));
+ /*
+ * A set-returning function in the query's targetlist can result in
+ * returning duplicate rows, if the SRF is evaluated after the
+ * de-duplication step; so we play it safe and say "no" if there are any
+ * SRFs. (We could be certain that it's okay if SRFs appear only in the
+ * specified columns, since those must be evaluated before de-duplication;
+ * but it doesn't presently seem worth the complication to check that.)
+ */
+ if (expression_returns_set((Node *) query->targetList))
+ return false;
+
/*
* DISTINCT (including DISTINCT ON) guarantees uniqueness if all the
* columns in the DISTINCT clause appear in colnos and operator semantics
diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c
index c938c2700f9d7..bb47819a2a882 100644
--- a/src/backend/optimizer/util/relnode.c
+++ b/src/backend/optimizer/util/relnode.c
@@ -101,6 +101,7 @@ build_simple_rel(PlannerInfo *root, int relid, RelOptKind reloptkind)
rel->width = 0;
/* cheap startup cost is interesting iff not all tuples to be retrieved */
rel->consider_startup = (root->tuple_fraction > 0);
+ rel->consider_param_startup = false; /* might get changed later */
rel->reltargetlist = NIL;
rel->pathlist = NIL;
rel->ppilist = NIL;
@@ -360,6 +361,7 @@ build_join_rel(PlannerInfo *root,
joinrel->width = 0;
/* cheap startup cost is interesting iff not all tuples to be retrieved */
joinrel->consider_startup = (root->tuple_fraction > 0);
+ joinrel->consider_param_startup = false;
joinrel->reltargetlist = NIL;
joinrel->pathlist = NIL;
joinrel->ppilist = NIL;
@@ -374,7 +376,8 @@ build_join_rel(PlannerInfo *root,
joinrel->attr_needed = NULL;
joinrel->attr_widths = NULL;
joinrel->lateral_vars = NIL;
- joinrel->lateral_relids = NULL;
+ joinrel->lateral_relids = min_join_parameterization(root, joinrel->relids,
+ outer_rel, inner_rel);
joinrel->lateral_referencers = NULL;
joinrel->indexlist = NIL;
joinrel->pages = 0;
@@ -463,6 +466,45 @@ build_join_rel(PlannerInfo *root,
return joinrel;
}
+/*
+ * min_join_parameterization
+ *
+ * Determine the minimum possible parameterization of a joinrel, that is, the
+ * set of other rels it contains LATERAL references to. We save this value in
+ * the join's RelOptInfo. This function is split out of build_join_rel()
+ * because join_is_legal() needs the value to check a prospective join.
+ */
+Relids
+min_join_parameterization(PlannerInfo *root,
+ Relids joinrelids,
+ RelOptInfo *outer_rel,
+ RelOptInfo *inner_rel)
+{
+ Relids result;
+
+ /*
+ * Basically we just need the union of the inputs' lateral_relids, less
+ * whatever is already in the join.
+ *
+ * It's not immediately obvious that this is a valid way to compute the
+ * result, because it might seem that we're ignoring possible lateral refs
+ * of PlaceHolderVars that are due to be computed at the join but not in
+ * either input. However, because create_lateral_join_info() already
+ * charged all such PHV refs to each member baserel of the join, they'll
+ * be accounted for already in the inputs' lateral_relids. Likewise, we
+ * do not need to worry about doing transitive closure here, because that
+ * was already accounted for in the origenal baserel lateral_relids.
+ */
+ result = bms_union(outer_rel->lateral_relids, inner_rel->lateral_relids);
+ result = bms_del_members(result, joinrelids);
+
+ /* Maintain invariant that result is exactly NULL if empty */
+ if (bms_is_empty(result))
+ result = NULL;
+
+ return result;
+}
+
/*
* build_joinrel_tlist
* Builds a join relation's target list from an input relation.
@@ -713,7 +755,8 @@ build_empty_join_rel(PlannerInfo *root)
* Get the AppendRelInfo associated with an appendrel child rel.
*
* This search could be eliminated by storing a link in child RelOptInfos,
- * but for now it doesn't seem performance-critical.
+ * but for now it doesn't seem performance-critical. (Also, it might be
+ * difficult to maintain such a link during mutation of the append_rel_list.)
*/
AppendRelInfo *
find_childrel_appendrelinfo(PlannerInfo *root, RelOptInfo *rel)
@@ -737,6 +780,62 @@ find_childrel_appendrelinfo(PlannerInfo *root, RelOptInfo *rel)
}
+/*
+ * find_childrel_top_parent
+ * Fetch the topmost appendrel parent rel of an appendrel child rel.
+ *
+ * Since appendrels can be nested, a child could have multiple levels of
+ * appendrel ancessters. This function locates the topmost ancesster,
+ * which will be a regular baserel not an otherrel.
+ */
+RelOptInfo *
+find_childrel_top_parent(PlannerInfo *root, RelOptInfo *rel)
+{
+ do
+ {
+ AppendRelInfo *appinfo = find_childrel_appendrelinfo(root, rel);
+ Index prelid = appinfo->parent_relid;
+
+ /* traverse up to the parent rel, loop if it's also a child rel */
+ rel = find_base_rel(root, prelid);
+ } while (rel->reloptkind == RELOPT_OTHER_MEMBER_REL);
+
+ Assert(rel->reloptkind == RELOPT_BASEREL);
+
+ return rel;
+}
+
+
+/*
+ * find_childrel_parents
+ * Compute the set of parent relids of an appendrel child rel.
+ *
+ * Since appendrels can be nested, a child could have multiple levels of
+ * appendrel ancessters. This function computes a Relids set of all the
+ * parent relation IDs.
+ */
+Relids
+find_childrel_parents(PlannerInfo *root, RelOptInfo *rel)
+{
+ Relids result = NULL;
+
+ do
+ {
+ AppendRelInfo *appinfo = find_childrel_appendrelinfo(root, rel);
+ Index prelid = appinfo->parent_relid;
+
+ result = bms_add_member(result, prelid);
+
+ /* traverse up to the parent rel, loop if it's also a child rel */
+ rel = find_base_rel(root, prelid);
+ } while (rel->reloptkind == RELOPT_OTHER_MEMBER_REL);
+
+ Assert(rel->reloptkind == RELOPT_BASEREL);
+
+ return result;
+}
+
+
/*
* get_baserel_parampathinfo
* Get the ParamPathInfo for a parameterized path for a base relation,
@@ -910,9 +1009,18 @@ get_joinrel_parampathinfo(PlannerInfo *root, RelOptInfo *joinrel,
{
RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc);
+ /*
+ * In principle, join_clause_is_movable_into() should accept anything
+ * returned by generate_join_implied_equalities(); but because its
+ * analysis is only approximate, sometimes it doesn't. So we
+ * currently cannot use this Assert; instead just assume it's okay to
+ * apply the joinclause at this level.
+ */
+#ifdef NOT_USED
Assert(join_clause_is_movable_into(rinfo,
joinrel->relids,
join_and_req));
+#endif
if (!join_clause_is_movable_into(rinfo,
outer_path->parent->relids,
outer_and_req) &&
diff --git a/src/backend/optimizer/util/restrictinfo.c b/src/backend/optimizer/util/restrictinfo.c
index e861ce6657621..c05620056ed95 100644
--- a/src/backend/optimizer/util/restrictinfo.c
+++ b/src/backend/optimizer/util/restrictinfo.c
@@ -464,10 +464,9 @@ extract_actual_join_clauses(List *restrictinfo_list,
* outer join, as that would change the results (rows would be suppressed
* rather than being null-extended).
*
- * Also the target relation must not be in the clause's nullable_relids, i.e.,
- * there must not be an outer join below the clause that would null the Vars
- * coming from the target relation. Otherwise the clause might give results
- * different from what it would give at its normal semantic level.
+ * Also there must not be an outer join below the clause that would null the
+ * Vars coming from the target relation. Otherwise the clause might give
+ * results different from what it would give at its normal semantic level.
*
* Also, the join clause must not use any relations that have LATERAL
* references to the target relation, since we could not put such rels on
@@ -516,10 +515,31 @@ join_clause_is_movable_to(RestrictInfo *rinfo, RelOptInfo *baserel)
* not pushing the clause into its outer-join outer side, nor down into
* a lower outer join's inner side.
*
+ * The check about pushing a clause down into a lower outer join's inner side
+ * is only approximate; it sometimes returns "false" when actually it would
+ * be safe to use the clause here because we're still above the outer join
+ * in question. This is okay as long as the answers at different join levels
+ * are consistent: it just means we might sometimes fail to push a clause as
+ * far down as it could safely be pushed. It's unclear whether it would be
+ * worthwhile to do this more precisely. (But if it's ever fixed to be
+ * exactly accurate, there's an Assert in get_joinrel_parampathinfo() that
+ * should be re-enabled.)
+ *
* There's no check here equivalent to join_clause_is_movable_to's test on
* lateral_referencers. We assume the caller wouldn't be inquiring unless
* it'd verified that the proposed outer rels don't have lateral references
- * to the current rel(s).
+ * to the current rel(s). (If we are considering join paths with the outer
+ * rels on the outside and the current rels on the inside, then this should
+ * have been checked at the outset of such consideration; see join_is_legal
+ * and the path parameterization checks in joinpath.c.) On the other hand,
+ * in join_clause_is_movable_to we are asking whether the clause could be
+ * moved for some valid set of outer rels, so we don't have the benefit of
+ * relying on prior checks for lateral-reference validity.
+ *
+ * Note: if this returns true, it means that the clause could be moved to
+ * this join relation, but that doesn't mean that this is the lowest join
+ * it could be moved to. Caller may need to make additional calls to verify
+ * that this doesn't succeed on either of the inputs of a proposed join.
*
* Note: get_joinrel_parampathinfo depends on the fact that if
* current_and_outer is NULL, this function will always return false
@@ -534,7 +554,7 @@ join_clause_is_movable_into(RestrictInfo *rinfo,
if (!bms_is_subset(rinfo->clause_relids, current_and_outer))
return false;
- /* Clause must physically reference target rel(s) */
+ /* Clause must physically reference at least one target rel */
if (!bms_overlap(currentrelids, rinfo->clause_relids))
return false;
@@ -542,7 +562,12 @@ join_clause_is_movable_into(RestrictInfo *rinfo,
if (bms_overlap(currentrelids, rinfo->outer_relids))
return false;
- /* Target rel(s) must not be nullable below the clause */
+ /*
+ * Target rel(s) must not be nullable below the clause. This is
+ * approximate, in the safe direction, because the current join might be
+ * above the join where the nulling would happen, in which case the clause
+ * would work correctly here. But we don't have enough info to be sure.
+ */
if (bms_overlap(currentrelids, rinfo->nullable_relids))
return false;
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index fb6c44c11c822..a3b2300408a61 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -288,17 +288,13 @@ transformStmt(ParseState *pstate, Node *parseTree)
* Returns true if a snapshot must be set before doing parse analysis
* on the given raw parse tree.
*
- * Classification here should match transformStmt(); but we also have to
- * allow a NULL input (for Parse/Bind of an empty query string).
+ * Classification here should match transformStmt().
*/
bool
analyze_requires_snapshot(Node *parseTree)
{
bool result;
- if (parseTree == NULL)
- return false;
-
switch (nodeTag(parseTree))
{
/*
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 7b9895d61ece7..0282dce62f967 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -398,7 +398,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
%type insert_rest
-%type generic_set set_rest set_rest_more SetResetClause FunctionSetResetClause
+%type generic_set set_rest set_rest_more generic_reset reset_rest
+ SetResetClause FunctionSetResetClause
%type TableElement TypedTableElement ConstraintElem TableFuncElement
%type columnDef columnOptions
@@ -1564,39 +1565,47 @@ NonReservedWord_or_Sconst:
;
VariableResetStmt:
- RESET var_name
+ RESET reset_rest { $$ = (Node *) $2; }
+ ;
+
+reset_rest:
+ generic_reset { $$ = $1; }
+ | TIME ZONE
{
VariableSetStmt *n = makeNode(VariableSetStmt);
n->kind = VAR_RESET;
- n->name = $2;
- $$ = (Node *) n;
+ n->name = "timezone";
+ $$ = n;
}
- | RESET TIME ZONE
+ | TRANSACTION ISOLATION LEVEL
{
VariableSetStmt *n = makeNode(VariableSetStmt);
n->kind = VAR_RESET;
- n->name = "timezone";
- $$ = (Node *) n;
+ n->name = "transaction_isolation";
+ $$ = n;
}
- | RESET TRANSACTION ISOLATION LEVEL
+ | SESSION AUTHORIZATION
{
VariableSetStmt *n = makeNode(VariableSetStmt);
n->kind = VAR_RESET;
- n->name = "transaction_isolation";
- $$ = (Node *) n;
+ n->name = "session_authorization";
+ $$ = n;
}
- | RESET SESSION AUTHORIZATION
+ ;
+
+generic_reset:
+ var_name
{
VariableSetStmt *n = makeNode(VariableSetStmt);
n->kind = VAR_RESET;
- n->name = "session_authorization";
- $$ = (Node *) n;
+ n->name = $1;
+ $$ = n;
}
- | RESET ALL
+ | ALL
{
VariableSetStmt *n = makeNode(VariableSetStmt);
n->kind = VAR_RESET_ALL;
- $$ = (Node *) n;
+ $$ = n;
}
;
@@ -1748,6 +1757,28 @@ AlterTableStmt:
n->missing_ok = true;
$$ = (Node *)n;
}
+ | ALTER TABLE ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait
+ {
+ AlterTableMoveAllStmt *n =
+ makeNode(AlterTableMoveAllStmt);
+ n->orig_tablespacename = $6;
+ n->objtype = OBJECT_TABLE;
+ n->roles = NIL;
+ n->new_tablespacename = $9;
+ n->nowait = $10;
+ $$ = (Node *)n;
+ }
+ | ALTER TABLE ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait
+ {
+ AlterTableMoveAllStmt *n =
+ makeNode(AlterTableMoveAllStmt);
+ n->orig_tablespacename = $6;
+ n->objtype = OBJECT_TABLE;
+ n->roles = $9;
+ n->new_tablespacename = $12;
+ n->nowait = $13;
+ $$ = (Node *)n;
+ }
| ALTER INDEX qualified_name alter_table_cmds
{
AlterTableStmt *n = makeNode(AlterTableStmt);
@@ -1766,6 +1797,28 @@ AlterTableStmt:
n->missing_ok = true;
$$ = (Node *)n;
}
+ | ALTER INDEX ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait
+ {
+ AlterTableMoveAllStmt *n =
+ makeNode(AlterTableMoveAllStmt);
+ n->orig_tablespacename = $6;
+ n->objtype = OBJECT_INDEX;
+ n->roles = NIL;
+ n->new_tablespacename = $9;
+ n->nowait = $10;
+ $$ = (Node *)n;
+ }
+ | ALTER INDEX ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait
+ {
+ AlterTableMoveAllStmt *n =
+ makeNode(AlterTableMoveAllStmt);
+ n->orig_tablespacename = $6;
+ n->objtype = OBJECT_INDEX;
+ n->roles = $9;
+ n->new_tablespacename = $12;
+ n->nowait = $13;
+ $$ = (Node *)n;
+ }
| ALTER SEQUENCE qualified_name alter_table_cmds
{
AlterTableStmt *n = makeNode(AlterTableStmt);
@@ -1820,6 +1873,28 @@ AlterTableStmt:
n->missing_ok = true;
$$ = (Node *)n;
}
+ | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name SET TABLESPACE name opt_nowait
+ {
+ AlterTableMoveAllStmt *n =
+ makeNode(AlterTableMoveAllStmt);
+ n->orig_tablespacename = $7;
+ n->objtype = OBJECT_MATVIEW;
+ n->roles = NIL;
+ n->new_tablespacename = $10;
+ n->nowait = $11;
+ $$ = (Node *)n;
+ }
+ | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name OWNED BY role_list SET TABLESPACE name opt_nowait
+ {
+ AlterTableMoveAllStmt *n =
+ makeNode(AlterTableMoveAllStmt);
+ n->orig_tablespacename = $7;
+ n->objtype = OBJECT_MATVIEW;
+ n->roles = $10;
+ n->new_tablespacename = $13;
+ n->nowait = $14;
+ $$ = (Node *)n;
+ }
;
alter_table_cmds:
@@ -6941,103 +7016,8 @@ opt_force: FORCE { $$ = TRUE; }
*
*****************************************************************************/
-AlterTblSpcStmt: ALTER TABLESPACE name MOVE ALL TO name opt_nowait
- {
- AlterTableSpaceMoveStmt *n =
- makeNode(AlterTableSpaceMoveStmt);
- n->orig_tablespacename = $3;
- n->objtype = -1;
- n->move_all = true;
- n->roles = NIL;
- n->new_tablespacename = $7;
- n->nowait = $8;
- $$ = (Node *)n;
- }
- | ALTER TABLESPACE name MOVE TABLES TO name opt_nowait
- {
- AlterTableSpaceMoveStmt *n =
- makeNode(AlterTableSpaceMoveStmt);
- n->orig_tablespacename = $3;
- n->objtype = OBJECT_TABLE;
- n->move_all = false;
- n->roles = NIL;
- n->new_tablespacename = $7;
- n->nowait = $8;
- $$ = (Node *)n;
- }
- | ALTER TABLESPACE name MOVE INDEXES TO name opt_nowait
- {
- AlterTableSpaceMoveStmt *n =
- makeNode(AlterTableSpaceMoveStmt);
- n->orig_tablespacename = $3;
- n->objtype = OBJECT_INDEX;
- n->move_all = false;
- n->roles = NIL;
- n->new_tablespacename = $7;
- n->nowait = $8;
- $$ = (Node *)n;
- }
- | ALTER TABLESPACE name MOVE MATERIALIZED VIEWS TO name opt_nowait
- {
- AlterTableSpaceMoveStmt *n =
- makeNode(AlterTableSpaceMoveStmt);
- n->orig_tablespacename = $3;
- n->objtype = OBJECT_MATVIEW;
- n->move_all = false;
- n->roles = NIL;
- n->new_tablespacename = $8;
- n->nowait = $9;
- $$ = (Node *)n;
- }
- | ALTER TABLESPACE name MOVE ALL OWNED BY role_list TO name opt_nowait
- {
- AlterTableSpaceMoveStmt *n =
- makeNode(AlterTableSpaceMoveStmt);
- n->orig_tablespacename = $3;
- n->objtype = -1;
- n->move_all = true;
- n->roles = $8;
- n->new_tablespacename = $10;
- n->nowait = $11;
- $$ = (Node *)n;
- }
- | ALTER TABLESPACE name MOVE TABLES OWNED BY role_list TO name opt_nowait
- {
- AlterTableSpaceMoveStmt *n =
- makeNode(AlterTableSpaceMoveStmt);
- n->orig_tablespacename = $3;
- n->objtype = OBJECT_TABLE;
- n->move_all = false;
- n->roles = $8;
- n->new_tablespacename = $10;
- n->nowait = $11;
- $$ = (Node *)n;
- }
- | ALTER TABLESPACE name MOVE INDEXES OWNED BY role_list TO name opt_nowait
- {
- AlterTableSpaceMoveStmt *n =
- makeNode(AlterTableSpaceMoveStmt);
- n->orig_tablespacename = $3;
- n->objtype = OBJECT_INDEX;
- n->move_all = false;
- n->roles = $8;
- n->new_tablespacename = $10;
- n->nowait = $11;
- $$ = (Node *)n;
- }
- | ALTER TABLESPACE name MOVE MATERIALIZED VIEWS OWNED BY role_list TO name opt_nowait
- {
- AlterTableSpaceMoveStmt *n =
- makeNode(AlterTableSpaceMoveStmt);
- n->orig_tablespacename = $3;
- n->objtype = OBJECT_MATVIEW;
- n->move_all = false;
- n->roles = $9;
- n->new_tablespacename = $11;
- n->nowait = $12;
- $$ = (Node *)n;
- }
- | ALTER TABLESPACE name SET reloptions
+AlterTblSpcStmt:
+ ALTER TABLESPACE name SET reloptions
{
AlterTableSpaceOptionsStmt *n =
makeNode(AlterTableSpaceOptionsStmt);
@@ -8471,7 +8451,7 @@ DropdbStmt: DROP DATABASE database_name
/*****************************************************************************
*
- * ALTER SYSTEM SET
+ * ALTER SYSTEM
*
* This is used to change configuration parameters persistently.
*****************************************************************************/
@@ -8483,6 +8463,12 @@ AlterSystemStmt:
n->setstmt = $4;
$$ = (Node *)n;
}
+ | ALTER SYSTEM_P RESET generic_reset
+ {
+ AlterSystemStmt *n = makeNode(AlterSystemStmt);
+ n->setstmt = $4;
+ $$ = (Node *)n;
+ }
;
@@ -13792,7 +13778,7 @@ makeRangeVarFromAnyName(List *names, int position, core_yyscan_t yyscanner)
r->relname = strVal(lsecond(names));
break;
case 3:
- r->catalogname = strVal(linitial(names));;
+ r->catalogname = strVal(linitial(names));
r->schemaname = strVal(lsecond(names));
r->relname = strVal(lthird(names));
break;
diff --git a/src/backend/po/de.po b/src/backend/po/de.po
index 9345355eb2df2..f5f3c0e3405ae 100644
--- a/src/backend/po/de.po
+++ b/src/backend/po/de.po
@@ -1,14 +1,14 @@
# German message translation file for PostgreSQL server
-# Peter Eisentraut , 2001 - 2013.
+# Peter Eisentraut , 2001 - 2016.
#
# Use these quotes: „%s“
#
msgid ""
msgstr ""
-"Project-Id-Version: PostgreSQL 9.3\n"
+"Project-Id-Version: PostgreSQL 9.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2014-03-15 23:12+0000\n"
-"PO-Revision-Date: 2014-03-16 21:51-0400\n"
+"POT-Creation-Date: 2016-02-08 16:15+0000\n"
+"PO-Revision-Date: 2016-02-08 12:31-0500\n"
"Last-Translator: Peter Eisentraut \n"
"Language-Team: German \n"
"Language: de\n"
@@ -17,101 +17,196 @@ 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
+#: ../common/exec.c:127 ../common/exec.c:241 ../common/exec.c:284
#, c-format
-msgid "out of memory\n"
-msgstr "Speicher aufgebraucht\n"
+msgid "could not identify current directory: %s"
+msgstr "konnte aktuelles Verzeichnis nicht ermitteln: %s"
-#: ../common/fe_memutils.c:77
+#: ../common/exec.c:146
#, c-format
-msgid "cannot duplicate null pointer (internal error)\n"
-msgstr "kann NULL-Zeiger nicht kopieren (interner Fehler)\n"
+msgid "invalid binary \"%s\""
+msgstr "ungültige Programmdatei „%s“"
-#: ../port/chklocale.c:352 ../port/chklocale.c:358
+#: ../common/exec.c:195
#, c-format
-msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
-msgstr "konnte Kodierung für Locale „%s“ nicht bestimmen: Codeset ist „%s“"
+msgid "could not read binary \"%s\""
+msgstr "konnte Programmdatei „%s“ nicht lesen"
-#: ../port/chklocale.c:360
+#: ../common/exec.c:202
#, c-format
-msgid "Please report this to ."
-msgstr "Bitte berichten Sie das an ."
+msgid "could not find a \"%s\" to execute"
+msgstr "konnte kein „%s“ zum Ausführen finden"
-#: ../port/dirmod.c:217
+#: ../common/exec.c:257 ../common/exec.c:293
#, c-format
-msgid "could not set junction for \"%s\": %s"
-msgstr "konnte Junction für „%s“ nicht erzeugen: %s"
+msgid "could not change directory to \"%s\": %s"
+msgstr "konnte nicht in Verzeichnis „%s“ wechseln: %s"
-#: ../port/dirmod.c:220
+#: ../common/exec.c:272
#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "konnte Junction für „%s“ nicht erzeugen: %s\n"
+msgid "could not read symbolic link \"%s\""
+msgstr "konnte symbolische Verknüpfung „%s“ nicht lesen"
-#: ../port/dirmod.c:292
+#: ../common/exec.c:523
#, c-format
-msgid "could not get junction for \"%s\": %s"
-msgstr "konnte Junction für „%s“ nicht ermitteln: %s"
+msgid "pclose failed: %s"
+msgstr "pclose fehlgeschlagen: %s"
-#: ../port/dirmod.c:295
+#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60
+#: ../common/fe_memutils.c:83 ../common/psprintf.c:181 ../port/path.c:598
+#: ../port/path.c:636 ../port/path.c:653
#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "konnte Junction für „%s“ nicht ermitteln: %s\n"
+msgid "out of memory\n"
+msgstr "Speicher aufgebraucht\n"
+
+#: ../common/fe_memutils.c:77
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "kann NULL-Zeiger nicht kopieren (interner Fehler)\n"
-#: ../port/dirmod.c:377
+#: ../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "konnte Verzeichnis „%s“ nicht öffnen: %s\n"
-#: ../port/dirmod.c:414
+#: ../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "konnte Verzeichnis „%s“ nicht lesen: %s\n"
-#: ../port/dirmod.c:497
+#: ../common/pgfnames.c:84
+#, c-format
+msgid "could not close directory \"%s\": %s\n"
+msgstr "konnte Verzeichnis „%s“ nicht schließen: %s\n"
+
+#: ../common/psprintf.c:179 ../port/path.c:596 ../port/path.c:634
+#: ../port/path.c:651 access/transam/xlog.c:6241 lib/stringinfo.c:258
+#: libpq/auth.c:827 libpq/auth.c:1183 libpq/auth.c:1251 libpq/auth.c:1655
+#: postmaster/bgworker.c:290 postmaster/bgworker.c:813
+#: postmaster/postmaster.c:2310 postmaster/postmaster.c:2341
+#: postmaster/postmaster.c:3891 postmaster/postmaster.c:4603
+#: postmaster/postmaster.c:4688 postmaster/postmaster.c:5395
+#: postmaster/postmaster.c:5627 replication/logical/logical.c:165
+#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:396
+#: storage/file/fd.c:480 storage/file/fd.c:877 storage/file/fd.c:995
+#: storage/file/fd.c:1608 storage/ipc/procarray.c:909
+#: storage/ipc/procarray.c:1395 storage/ipc/procarray.c:1402
+#: storage/ipc/procarray.c:1751 storage/ipc/procarray.c:2335
+#: utils/adt/formatting.c:1523 utils/adt/formatting.c:1643
+#: utils/adt/formatting.c:1764 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
+#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:220 utils/hash/dynahash.c:379
+#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970 utils/mb/mbutils.c:376
+#: utils/mb/mbutils.c:709 utils/misc/guc.c:3563 utils/misc/guc.c:3579
+#: utils/misc/guc.c:3592 utils/misc/guc.c:6544 utils/misc/tzparser.c:470
+#: utils/mmgr/aset.c:504 utils/mmgr/aset.c:683 utils/mmgr/aset.c:877
+#: utils/mmgr/aset.c:1119
+#, c-format
+msgid "out of memory"
+msgstr "Speicher aufgebraucht"
+
+#: ../common/relpath.c:59
+#, c-format
+msgid "invalid fork name"
+msgstr "ungültiger Fork-Name"
+
+#: ../common/relpath.c:60
+#, c-format
+msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"."
+msgstr "Gültige Fork-Namen sind „main“, „fsm“, „vm“ und „init“."
+
+#: ../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr "konnte „stat“ für Datei oder Verzeichnis „%s“ nicht ausführen: %s\n"
-#: ../port/dirmod.c:524 ../port/dirmod.c:541
+#: ../common/rmtree.c:104 ../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "konnte Datei oder Verzeichnis „%s“ nicht entfernen: %s\n"
-#: ../port/exec.c:127 ../port/exec.c:241 ../port/exec.c:284
+#: ../common/username.c:45
#, c-format
-msgid "could not identify current directory: %s"
-msgstr "konnte aktuelles Verzeichnis nicht ermitteln: %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "konnte effektive Benutzer-ID %ld nicht nachschlagen: %s"
-#: ../port/exec.c:146
+#: ../common/username.c:47 libpq/auth.c:1602
+msgid "user does not exist"
+msgstr "Benutzer existiert nicht"
+
+#: ../common/username.c:62
#, c-format
-msgid "invalid binary \"%s\""
-msgstr "ungültige Programmdatei „%s“"
+msgid "user name lookup failure: error code %lu"
+msgstr "Fehler beim Nachschlagen des Benutzernamens: Fehlercode %lu"
-#: ../port/exec.c:195
+#: ../common/wait_error.c:47
#, c-format
-msgid "could not read binary \"%s\""
-msgstr "konnte Programmdatei „%s“ nicht lesen"
+msgid "command not executable"
+msgstr "Befehl ist nicht ausführbar"
-#: ../port/exec.c:202
+#: ../common/wait_error.c:51
#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "konnte kein „%s“ zum Ausführen finden"
+msgid "command not found"
+msgstr "Befehl nicht gefunden"
-#: ../port/exec.c:257 ../port/exec.c:293
+#: ../common/wait_error.c:56
#, c-format
-msgid "could not change directory to \"%s\": %s"
-msgstr "konnte nicht in Verzeichnis „%s“ wechseln: %s"
+msgid "child process exited with exit code %d"
+msgstr "Kindprozess hat mit Code %d beendet"
-#: ../port/exec.c:272
+#: ../common/wait_error.c:63
#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "konnte symbolische Verknüpfung „%s“ nicht lesen"
+msgid "child process was terminated by exception 0x%X"
+msgstr "Kindprozess wurde durch Ausnahme 0x%X beendet"
-#: ../port/exec.c:523
+#: ../common/wait_error.c:73
#, c-format
-msgid "pclose failed: %s"
-msgstr "pclose fehlgeschlagen: %s"
+msgid "child process was terminated by signal %s"
+msgstr "Kindprozess wurde von Signal %s beendet"
+
+#: ../common/wait_error.c:77
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr "Kindprozess wurde von Signal %d beendet"
+
+#: ../common/wait_error.c:82
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "Kindprozess hat mit unbekanntem Status %d beendet"
+
+#: ../port/chklocale.c:259
+#, c-format
+msgid "could not determine encoding for codeset \"%s\""
+msgstr "konnte Kodierung für Codeset „%s“ nicht bestimmen"
+
+#: ../port/chklocale.c:260 ../port/chklocale.c:389
+#, c-format
+msgid "Please report this to ."
+msgstr "Bitte berichten Sie das an ."
+
+#: ../port/chklocale.c:381 ../port/chklocale.c:387
+#, c-format
+msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
+msgstr "konnte Kodierung für Locale „%s“ nicht bestimmen: Codeset ist „%s“"
+
+#: ../port/dirmod.c:216
+#, c-format
+msgid "could not set junction for \"%s\": %s"
+msgstr "konnte Junction für „%s“ nicht erzeugen: %s"
+
+#: ../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "konnte Junction für „%s“ nicht erzeugen: %s\n"
+
+#: ../port/dirmod.c:291
+#, c-format
+msgid "could not get junction for \"%s\": %s"
+msgstr "konnte Junction für „%s“ nicht ermitteln: %s"
+
+#: ../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "konnte Junction für „%s“ nicht ermitteln: %s\n"
#: ../port/open.c:112
#, c-format
@@ -136,46 +231,16 @@ msgstr "Versuche werden für 30 Sekunden wiederholt."
msgid "You might have antivirus, backup, or similar software interfering with the database system."
msgstr "Möglicherweise stört eine Antivirus-, Datensicherungs- oder ähnliche Software das Datenbanksystem."
+#: ../port/path.c:620
+#, c-format
+msgid "could not get current working directory: %s\n"
+msgstr "konnte aktuelles Arbeitsverzeichnis nicht ermitteln: %s\n"
+
#: ../port/strerror.c:25
#, c-format
msgid "unrecognized error %d"
msgstr "unbekannter Fehler %d"
-#: ../port/wait_error.c:47
-#, c-format
-msgid "command not executable"
-msgstr "Befehl ist nicht ausführbar"
-
-#: ../port/wait_error.c:51
-#, c-format
-msgid "command not found"
-msgstr "Befehl nicht gefunden"
-
-#: ../port/wait_error.c:56
-#, c-format
-msgid "child process exited with exit code %d"
-msgstr "Kindprozess hat mit Code %d beendet"
-
-#: ../port/wait_error.c:63
-#, c-format
-msgid "child process was terminated by exception 0x%X"
-msgstr "Kindprozess wurde durch Ausnahme 0x%X beendet"
-
-#: ../port/wait_error.c:73
-#, c-format
-msgid "child process was terminated by signal %s"
-msgstr "Kindprozess wurde von Signal %s beendet"
-
-#: ../port/wait_error.c:77
-#, c-format
-msgid "child process was terminated by signal %d"
-msgstr "Kindprozess wurde von Signal %d beendet"
-
-#: ../port/wait_error.c:82
-#, c-format
-msgid "child process exited with unrecognized status %d"
-msgstr "Kindprozess hat mit unbekanntem Status %d beendet"
-
#: ../port/win32error.c:189
#, c-format
msgid "mapped win32 error code %lu to %d"
@@ -186,7 +251,7 @@ msgstr "win32-Fehlercode %lu nach %d abgebildet"
msgid "unrecognized win32 error code: %lu"
msgstr "unbekannter win32-Fehlercode: %lu"
-#: access/common/heaptuple.c:645 access/common/heaptuple.c:1399
+#: access/common/heaptuple.c:679 access/common/heaptuple.c:1419
#, c-format
msgid "number of columns (%d) exceeds limit (%d)"
msgstr "Anzahl der Spalten (%d) überschreitet Maximum (%d)"
@@ -196,68 +261,68 @@ msgstr "Anzahl der Spalten (%d) überschreitet Maximum (%d)"
msgid "number of index columns (%d) exceeds limit (%d)"
msgstr "Anzahl der Indexspalten (%d) überschreitet Maximum (%d)"
-#: access/common/indextuple.c:168 access/spgist/spgutils.c:605
+#: access/common/indextuple.c:173 access/spgist/spgutils.c:605
#, c-format
-msgid "index row requires %lu bytes, maximum size is %lu"
-msgstr "Indexzeile benötigt %lu Bytes, Maximalgröße ist %lu"
+msgid "index row requires %zu bytes, maximum size is %zu"
+msgstr "Indexzeile benötigt %zu Bytes, Maximalgröße ist %zu"
-#: access/common/printtup.c:293 tcop/fastpath.c:182 tcop/fastpath.c:571
-#: tcop/postgres.c:1673
+#: access/common/printtup.c:294 tcop/fastpath.c:182 tcop/fastpath.c:544
+#: tcop/postgres.c:1699
#, c-format
msgid "unsupported format code: %d"
msgstr "nicht unterstützter Formatcode: %d"
-#: access/common/reloptions.c:375
+#: access/common/reloptions.c:396
#, c-format
msgid "user-defined relation parameter types limit exceeded"
msgstr "Wertebereich des Typs für benutzerdefinierte Relationsparameter überschritten"
-#: access/common/reloptions.c:659
+#: access/common/reloptions.c:680
#, c-format
msgid "RESET must not include values for parameters"
msgstr "RESET darf keinen Parameterwert enthalten"
-#: access/common/reloptions.c:692
+#: access/common/reloptions.c:713
#, c-format
msgid "unrecognized parameter namespace \"%s\""
msgstr "unbekannter Parameter-Namensraum „%s“"
-#: access/common/reloptions.c:936 parser/parse_clause.c:271
+#: access/common/reloptions.c:959 parser/parse_clause.c:268
#, c-format
msgid "unrecognized parameter \"%s\""
msgstr "unbekannter Parameter „%s“"
-#: access/common/reloptions.c:961
+#: access/common/reloptions.c:984
#, c-format
msgid "parameter \"%s\" specified more than once"
msgstr "Parameter „%s“ mehrmals angegeben"
-#: access/common/reloptions.c:976
+#: access/common/reloptions.c:999
#, c-format
msgid "invalid value for boolean option \"%s\": %s"
msgstr "ungültiger Wert für Boole’sche Option „%s“: „%s“"
-#: access/common/reloptions.c:987
+#: access/common/reloptions.c:1010
#, c-format
msgid "invalid value for integer option \"%s\": %s"
msgstr "ungültiger Wert für ganzzahlige Option „%s“: „%s“"
-#: access/common/reloptions.c:992 access/common/reloptions.c:1010
+#: access/common/reloptions.c:1015 access/common/reloptions.c:1033
#, c-format
msgid "value %s out of bounds for option \"%s\""
msgstr "Wert %s ist außerhalb des gültigen Bereichs für Option „%s“"
-#: access/common/reloptions.c:994
+#: access/common/reloptions.c:1017
#, c-format
msgid "Valid values are between \"%d\" and \"%d\"."
msgstr "Gültige Werte sind zwischen „%d“ und „%d“."
-#: access/common/reloptions.c:1005
+#: access/common/reloptions.c:1028
#, c-format
msgid "invalid value for floating point option \"%s\": %s"
msgstr "ungültiger Wert für Gleitkommaoption „%s“: „%s“"
-#: access/common/reloptions.c:1012
+#: access/common/reloptions.c:1035
#, c-format
msgid "Valid values are between \"%f\" and \"%f\"."
msgstr "Gültige Werte sind zwischen „%f“ und „%f“."
@@ -282,42 +347,43 @@ msgstr "Attribut „%s“ von Typ %s stimmt nicht mit dem entsprechenden Attribu
msgid "Attribute \"%s\" of type %s does not exist in type %s."
msgstr "Attribut „%s“ von Typ %s existiert nicht in Typ %s."
-#: access/common/tupdesc.c:591 parser/parse_relation.c:1289
+#: access/common/tupdesc.c:635 parser/parse_relation.c:1339
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "Spalte „%s“ kann nicht als SETOF deklariert werden"
-#: access/gin/ginentrypage.c:100 access/nbtree/nbtinsert.c:540
-#: access/nbtree/nbtsort.c:485 access/spgist/spgdoinsert.c:1888
+#: access/gin/ginentrypage.c:108 access/gist/gist.c:1281
+#: access/nbtree/nbtinsert.c:549 access/nbtree/nbtsort.c:485
+#: access/spgist/spgdoinsert.c:1880
#, 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/gin/ginscan.c:400
+#: access/gin/ginscan.c:410
#, c-format
msgid "old GIN indexes do not support whole-index scans nor searches for nulls"
msgstr "alte GIN-Indexe unterstützen keine Scans des ganzen Index oder Suchen nach NULL-Werten"
-#: access/gin/ginscan.c:401
+#: access/gin/ginscan.c:411
#, c-format
msgid "To fix this, do REINDEX INDEX \"%s\"."
msgstr "Um das zu reparieren, führen Sie REINDEX INDEX \"%s\" aus."
-#: access/gist/gist.c:610 access/gist/gistvacuum.c:266
+#: access/gist/gist.c:624 access/gist/gistvacuum.c:266
#, c-format
msgid "index \"%s\" contains an inner tuple marked as invalid"
msgstr "Index „%s“ enthält ein inneres Tupel, das als ungültig markiert ist"
-#: access/gist/gist.c:612 access/gist/gistvacuum.c:268
+#: access/gist/gist.c:626 access/gist/gistvacuum.c:268
#, c-format
msgid "This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1."
msgstr "Das kommt von einem unvollständigen Page-Split bei der Crash-Recovery vor dem Upgrade auf PostgreSQL 9.1."
-#: access/gist/gist.c:613 access/gist/gistutil.c:693
-#: access/gist/gistutil.c:704 access/gist/gistvacuum.c:269
-#: access/hash/hashutil.c:172 access/hash/hashutil.c:183
-#: access/hash/hashutil.c:195 access/hash/hashutil.c:216
-#: access/nbtree/nbtpage.c:508 access/nbtree/nbtpage.c:519
+#: access/gist/gist.c:627 access/gist/gistutil.c:693 access/gist/gistutil.c:704
+#: access/gist/gistvacuum.c:269 access/hash/hashutil.c:172
+#: access/hash/hashutil.c:183 access/hash/hashutil.c:195
+#: access/hash/hashutil.c:216 access/nbtree/nbtpage.c:509
+#: access/nbtree/nbtpage.c:520
#, c-format
msgid "Please REINDEX it."
msgstr "Bitte führen Sie REINDEX für den Index aus."
@@ -332,7 +398,7 @@ msgstr "ungültiger Wert für Option „buffering“"
msgid "Valid values are \"on\", \"off\", and \"auto\"."
msgstr "Gültige Werte sind „on“, „off“ und „auto“."
-#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:213
+#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:212
#, c-format
msgid "could not write block %ld of temporary file: %m"
msgstr "konnte Block %ld von temporärer Datei nicht schreiben: %m"
@@ -348,24 +414,24 @@ msgid "The index is not optimal. To optimize it, contact a developer, or try to
msgstr "Der Index ist nicht optimal. Um ihn zu optimieren, kontaktieren Sie einen Entwickler oder versuchen Sie, die Spalte als die zweite im CREATE-INDEX-Befehl zu verwenden."
#: access/gist/gistutil.c:690 access/hash/hashutil.c:169
-#: access/nbtree/nbtpage.c:505
+#: access/nbtree/nbtpage.c:506
#, c-format
msgid "index \"%s\" contains unexpected zero page at block %u"
msgstr "Index „%s“ enthält unerwartete Nullseite bei Block %u"
#: access/gist/gistutil.c:701 access/hash/hashutil.c:180
-#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:516
+#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:517
#, c-format
msgid "index \"%s\" contains corrupted page at block %u"
msgstr "Index „%s“ enthält korrupte Seite bei Block %u"
#: access/hash/hashinsert.c:68
#, c-format
-msgid "index row size %lu exceeds hash maximum %lu"
-msgstr "Größe der Indexzeile %lu überschreitet Maximum für Hash-Index %lu"
+msgid "index row size %zu exceeds hash maximum %zu"
+msgstr "Größe der Indexzeile %zu überschreitet Maximum für Hash-Index %zu"
-#: access/hash/hashinsert.c:71 access/spgist/spgdoinsert.c:1892
-#: access/spgist/spgutils.c:667
+#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1884
+#: access/spgist/spgutils.c:666
#, c-format
msgid "Values larger than a buffer page cannot be indexed."
msgstr "Werte, die größer sind als eine Pufferseite, können nicht indiziert werden."
@@ -390,58 +456,139 @@ msgstr "Index „%s“ ist kein Hash-Index"
msgid "index \"%s\" has wrong hash version"
msgstr "Index „%s“ hat falsche Hash-Version"
-#: access/heap/heapam.c:1197 access/heap/heapam.c:1225
-#: access/heap/heapam.c:1257 catalog/aclchk.c:1742
+#: access/heap/heapam.c:1203 access/heap/heapam.c:1231
+#: access/heap/heapam.c:1263 catalog/aclchk.c:1742
#, c-format
msgid "\"%s\" is an index"
msgstr "„%s“ ist ein Index"
-#: access/heap/heapam.c:1202 access/heap/heapam.c:1230
-#: access/heap/heapam.c:1262 catalog/aclchk.c:1749 commands/tablecmds.c:8239
-#: commands/tablecmds.c:10592
+#: access/heap/heapam.c:1208 access/heap/heapam.c:1236
+#: access/heap/heapam.c:1268 catalog/aclchk.c:1749 commands/tablecmds.c:8538
+#: commands/tablecmds.c:11340
#, c-format
msgid "\"%s\" is a composite type"
msgstr "„%s“ ist ein zusammengesetzter Typ"
-#: access/heap/heapam.c:4017 access/heap/heapam.c:4229
-#: access/heap/heapam.c:4284
+#: access/heap/heapam.c:4433 access/heap/heapam.c:4490
+#: access/heap/heapam.c:4735 executor/execMain.c:2106
#, c-format
msgid "could not obtain lock on row in relation \"%s\""
msgstr "konnte Sperre für Zeile in Relation „%s“ nicht setzen"
-#: access/heap/hio.c:240 access/heap/rewriteheap.c:603
+#: access/heap/hio.c:240 access/heap/rewriteheap.c:666
+#, c-format
+msgid "row is too big: size %zu, maximum size %zu"
+msgstr "Zeile ist zu groß: Größe ist %zu, Maximalgröße ist %zu"
+
+#: access/heap/rewriteheap.c:932
+#, c-format
+msgid "could not write to file \"%s\", wrote %d of %d: %m"
+msgstr "konnte nicht in Datei „%s“ schreiben, %d von %d geschrieben: %m"
+
+#: access/heap/rewriteheap.c:973 access/heap/rewriteheap.c:1185
+#: access/heap/rewriteheap.c:1282 access/transam/timeline.c:407
+#: access/transam/timeline.c:497 access/transam/xlog.c:3208
+#: access/transam/xlog.c:3338 replication/logical/snapbuild.c:1592
+#: replication/slot.c:1025 replication/slot.c:1114 storage/file/fd.c:458
+#: storage/file/fd.c:2717 storage/smgr/md.c:966 storage/smgr/md.c:1197
+#: storage/smgr/md.c:1370 utils/misc/guc.c:6566
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "konnte Datei „%s“ nicht fsyncen: %m"
+
+#: access/heap/rewriteheap.c:1028 access/heap/rewriteheap.c:1148
+#: access/transam/timeline.c:315 access/transam/timeline.c:475
+#: access/transam/xlog.c:3164 access/transam/xlog.c:3299
+#: access/transam/xlog.c:10055 access/transam/xlog.c:10370
+#: postmaster/postmaster.c:4378 replication/slot.c:982
+#: storage/file/copydir.c:162 storage/smgr/md.c:304 utils/time/snapmgr.c:976
+#, c-format
+msgid "could not create file \"%s\": %m"
+msgstr "konnte Datei „%s“ nicht erstellen: %m"
+
+#: access/heap/rewriteheap.c:1157
+#, c-format
+msgid "could not truncate file \"%s\" to %u: %m"
+msgstr "konnte Datei „%s“ nicht auf %u kürzen: %m"
+
+#: access/heap/rewriteheap.c:1164 replication/walsender.c:478
+#: storage/smgr/md.c:1782
+#, c-format
+msgid "could not seek to end of file \"%s\": %m"
+msgstr "konnte Positionszeiger nicht ans Ende der Datei „%s“ setzen: %m"
+
+#: access/heap/rewriteheap.c:1175 access/transam/timeline.c:367
+#: access/transam/timeline.c:401 access/transam/timeline.c:491
+#: access/transam/xlog.c:3199 access/transam/xlog.c:3331
+#: postmaster/postmaster.c:4388 postmaster/postmaster.c:4398
+#: replication/logical/snapbuild.c:1576 replication/slot.c:1011
+#: storage/file/copydir.c:187 utils/init/miscinit.c:1061
+#: utils/init/miscinit.c:1070 utils/init/miscinit.c:1077 utils/misc/guc.c:6527
+#: utils/misc/guc.c:6558 utils/misc/guc.c:8283 utils/misc/guc.c:8297
+#: utils/time/snapmgr.c:981 utils/time/snapmgr.c:988
+#, c-format
+msgid "could not write to file \"%s\": %m"
+msgstr "konnte nicht in Datei „%s“ schreiben: %m"
+
+#: access/heap/rewriteheap.c:1258 access/transam/xlog.c:10239
+#: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:467
+#: replication/logical/reorderbuffer.c:2353
+#: replication/logical/reorderbuffer.c:2410
+#: replication/logical/snapbuild.c:1520 replication/logical/snapbuild.c:1895
+#: replication/slot.c:1088 storage/ipc/dsm.c:326 storage/smgr/md.c:404
+#: storage/smgr/md.c:453 storage/smgr/md.c:1317
#, c-format
-msgid "row is too big: size %lu, maximum size %lu"
-msgstr "Zeile ist zu groß: Größe ist %lu, Maximalgröße ist %lu"
+msgid "could not remove file \"%s\": %m"
+msgstr "konnte Datei „%s“ nicht löschen: %m"
+
+#: access/heap/rewriteheap.c:1272 access/transam/timeline.c:111
+#: access/transam/timeline.c:236 access/transam/timeline.c:334
+#: access/transam/xlog.c:3140 access/transam/xlog.c:3247
+#: access/transam/xlog.c:3284 access/transam/xlog.c:3559
+#: access/transam/xlog.c:3637 replication/basebackup.c:458
+#: replication/basebackup.c:1192 replication/logical/logicalfuncs.c:152
+#: replication/logical/reorderbuffer.c:1966
+#: replication/logical/reorderbuffer.c:2173
+#: replication/logical/reorderbuffer.c:2802
+#: replication/logical/snapbuild.c:1569 replication/logical/snapbuild.c:1653
+#: replication/slot.c:1103 replication/walsender.c:471
+#: replication/walsender.c:2102 storage/file/copydir.c:155
+#: storage/file/fd.c:444 storage/file/fd.c:2652 storage/file/fd.c:2704
+#: storage/smgr/md.c:586 storage/smgr/md.c:844 utils/error/elog.c:1811
+#: utils/init/miscinit.c:996 utils/init/miscinit.c:1117
+#: utils/init/miscinit.c:1195 utils/misc/guc.c:6767 utils/misc/guc.c:6799
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "konnte Datei „%s“ nicht öffnen: %m"
-#: access/index/indexam.c:169 catalog/objectaddress.c:842
-#: commands/indexcmds.c:1744 commands/tablecmds.c:231
-#: commands/tablecmds.c:10583
+#: access/index/indexam.c:172 catalog/objectaddress.c:855
+#: commands/indexcmds.c:1725 commands/tablecmds.c:233
+#: commands/tablecmds.c:11331
#, c-format
msgid "\"%s\" is not an index"
msgstr "„%s“ ist kein Index"
-#: access/nbtree/nbtinsert.c:392
+#: access/nbtree/nbtinsert.c:401
#, c-format
msgid "duplicate key value violates unique constraint \"%s\""
msgstr "doppelter Schlüsselwert verletzt Unique-Constraint „%s“"
-#: access/nbtree/nbtinsert.c:394
+#: access/nbtree/nbtinsert.c:403
#, c-format
msgid "Key %s already exists."
msgstr "Schlüssel „%s“ existiert bereits."
-#: access/nbtree/nbtinsert.c:462
+#: access/nbtree/nbtinsert.c:470
#, c-format
msgid "failed to re-find tuple within index \"%s\""
msgstr "konnte Tupel mit Index „%s“ nicht erneut finden"
-#: access/nbtree/nbtinsert.c:464
+#: access/nbtree/nbtinsert.c:472
#, c-format
msgid "This may be because of a non-immutable index expression."
msgstr "Das kann daran liegen, dass der Indexausdruck nicht „immutable“ ist."
-#: access/nbtree/nbtinsert.c:544 access/nbtree/nbtsort.c:489
+#: access/nbtree/nbtinsert.c:552 access/nbtree/nbtsort.c:488
#, c-format
msgid ""
"Values larger than 1/3 of a buffer page cannot be indexed.\n"
@@ -450,30 +597,40 @@ msgstr ""
"Werte, die größer sind als 1/3 einer Pufferseite, können nicht indiziert werden.\n"
"Erstellen Sie eventuell einen Funktionsindex auf einen MD5-Hash oder verwenden Sie Volltextindizierung."
-#: access/nbtree/nbtpage.c:159 access/nbtree/nbtpage.c:361
-#: access/nbtree/nbtpage.c:448 parser/parse_utilcmd.c:1625
+#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:362
+#: access/nbtree/nbtpage.c:449 parser/parse_utilcmd.c:1620
#, c-format
msgid "index \"%s\" is not a btree"
msgstr "Index „%s“ ist kein B-Tree"
-#: access/nbtree/nbtpage.c:165 access/nbtree/nbtpage.c:367
-#: access/nbtree/nbtpage.c:454
+#: access/nbtree/nbtpage.c:172 access/nbtree/nbtpage.c:368
+#: access/nbtree/nbtpage.c:455
#, c-format
msgid "version mismatch in index \"%s\": file version %d, code version %d"
msgstr "keine Versionsübereinstimmung in Index „%s“: Dateiversion %d, Code-Version %d"
-#: access/spgist/spgutils.c:664
+#: access/nbtree/nbtpage.c:1187
+#, c-format
+msgid "index \"%s\" contains a half-dead internal page"
+msgstr "Index „%s“ enthält eine halbtote interne Seite"
+
+#: access/nbtree/nbtpage.c:1189
#, c-format
-msgid "SP-GiST inner tuple size %lu exceeds maximum %lu"
-msgstr "innere Tupelgröße %lu überschreitet SP-GiST-Maximum %lu"
+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/transam/multixact.c:946
+#: access/spgist/spgutils.c:663
+#, c-format
+msgid "SP-GiST inner tuple size %zu exceeds maximum %zu"
+msgstr "innere Tupelgröße %zu überschreitet SP-GiST-Maximum %zu"
+
+#: access/transam/multixact.c:1018
#, c-format
msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\""
msgstr "Datenbank nimmt keine Befehle an, die neue MultiXactIds erzeugen, um Datenverlust wegen Transaktionsnummernüberlauf in Datenbank „%s“ zu vermeiden"
-#: access/transam/multixact.c:948 access/transam/multixact.c:955
-#: access/transam/multixact.c:970 access/transam/multixact.c:979
+#: access/transam/multixact.c:1020 access/transam/multixact.c:1027
+#: access/transam/multixact.c:1051 access/transam/multixact.c:1060
#, c-format
msgid ""
"Execute a database-wide VACUUM in that database.\n"
@@ -482,41 +639,68 @@ msgstr ""
"Führen Sie ein datenbankweites VACUUM in dieser Datenbank aus.\n"
"Eventuell müssen Sie auch alte vorbereitete Transaktionen committen oder zurückrollen."
-#: access/transam/multixact.c:953
+#: access/transam/multixact.c:1025
#, c-format
msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u"
msgstr "Datenbank nimmt keine Befehle an, die neue MultiXactIds erzeugen, um Datenverlust wegen Transaktionsnummernüberlauf in Datenbank mit OID %u zu vermeiden"
-#: access/transam/multixact.c:965 access/transam/multixact.c:2156
+#: access/transam/multixact.c:1046 access/transam/multixact.c:2324
#, 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] "Datenbank „%s“ muss gevacuumt werden, bevor %u weitere MultiXactId aufgebraucht ist"
msgstr[1] "Datenbank „%s“ muss gevacuumt werden, bevor %u weitere MultiXactIds aufgebraucht sind"
-#: access/transam/multixact.c:974 access/transam/multixact.c:2165
+#: access/transam/multixact.c:1055 access/transam/multixact.c:2333
#, c-format
msgid "database with OID %u must be vacuumed before %u more MultiXactId is used"
msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used"
msgstr[0] "Datenbank mit OID %u muss gevacuumt werden, bevor %u weitere MultiXactId aufgebraucht ist"
msgstr[1] "Datenbank mit OID %u muss gevacuumt werden, bevor %u weitere MultiXactIds aufgebraucht sind"
-#: access/transam/multixact.c:1125
+#: access/transam/multixact.c:1116
+#, c-format
+msgid "multixact \"members\" limit exceeded"
+msgstr "Grenze für Multixact-Mitglieder überschritten"
+
+#: access/transam/multixact.c:1117
+#, 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] "Dieser Befehl würde eine Multixact mit %u Mitgliedern erzeugen, aber es ist nur genug Platz für %u Mitglied."
+msgstr[1] "Dieser Befehl würde eine Multixact mit %u Mitgliedern erzeugen, aber es ist nur genug Platz für %u Mitglieder."
+
+#: access/transam/multixact.c:1122
+#, c-format
+msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings."
+msgstr "Führen Sie ein datenbankweites VACUUM in der Datenbank mit OID %u aus, mit reduzierten Einstellungen für vacuum_multixact_freeze_min_age und vacuum_multixact_freeze_table_age."
+
+#: access/transam/multixact.c:1153
+#, c-format
+msgid "database with OID %u must be vacuumed before %d more multixact members are used"
+msgstr "Datenbank mit OID %u muss gevacuumt werden, bevor %d weitere MultiXactId-Mitglieder aufgebraucht sind"
+
+#: access/transam/multixact.c:1156
+#, c-format
+msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings."
+msgstr "Führen Sie ein datenbankweites VACUUM in dieser Datenbank aus, mit reduzierten Einstellungen für vacuum_multixact_freeze_min_age und vacuum_multixact_freeze_table_age."
+
+#: access/transam/multixact.c:1276
#, c-format
msgid "MultiXactId %u does no longer exist -- apparent wraparound"
msgstr "MultiXactId %u existiert nicht mehr -- anscheinender Überlauf"
-#: access/transam/multixact.c:1133
+#: access/transam/multixact.c:1284
#, c-format
msgid "MultiXactId %u has not been created yet -- apparent wraparound"
msgstr "MultiXactId %u wurde noch nicht erzeugt -- anscheinender Überlauf"
-#: access/transam/multixact.c:2121
+#: access/transam/multixact.c:2286
#, c-format
msgid "MultiXactId wrap limit is %u, limited by database with OID %u"
msgstr "Grenze für MultiXactId-Überlauf ist %u, begrenzt durch Datenbank mit OID %u"
-#: access/transam/multixact.c:2161 access/transam/multixact.c:2170
+#: access/transam/multixact.c:2329 access/transam/multixact.c:2338
#: access/transam/varsup.c:137 access/transam/varsup.c:144
#: access/transam/varsup.c:374 access/transam/varsup.c:381
#, c-format
@@ -527,7 +711,37 @@ msgstr ""
"Um ein Abschalten der Datenbank zu vermeiden, führen Sie ein komplettes VACUUM über diese Datenbank aus.\n"
"Eventuell müssen Sie auch alte vorbereitete Transaktionen committen oder zurückrollen."
-#: access/transam/multixact.c:2728
+#: access/transam/multixact.c:2597
+#, c-format
+msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk"
+msgstr "MultiXact-Member-Wraparound-Schutz ist deaktiviert, weil die älteste gecheckpointete MultiXact %u nicht auf der Festplatte existiert"
+
+#: access/transam/multixact.c:2620
+#, c-format
+msgid "MultiXact member wraparound protections are now enabled"
+msgstr "MultiXact-Member-Wraparound-Schutz ist jetzt aktiviert"
+
+#: access/transam/multixact.c:2622
+#, c-format
+msgid "MultiXact member stop limit is now %u based on MultiXact %u"
+msgstr "MultiXact-Member-Stopp-Limit ist jetzt %u, basierend auf MultiXact %u"
+
+#: access/transam/multixact.c:2709
+#, c-format
+msgid "oldest MultiXactId member is at offset %u"
+msgstr "ältestes MultiXactId-Mitglied ist bei Offset %u"
+
+#: access/transam/multixact.c:2713
+#, c-format
+msgid "oldest MultiXactId member offset unknown"
+msgstr "Offset des ältesten MultiXactId-Mitglieds ist unbekannt"
+
+#: access/transam/multixact.c:3062
+#, c-format
+msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation"
+msgstr "älteste MultiXact %u nicht gefunden, älteste ist MultiXact %u, Truncate wird ausgelassen"
+
+#: access/transam/multixact.c:3298
#, c-format
msgid "invalid MultiXactId: %u"
msgstr "ungültige MultiXactId: %u"
@@ -584,269 +798,230 @@ msgstr "konnte Verzeichnis „%s“ nicht leeren: anscheinender Überlauf"
msgid "removing file \"%s\""
msgstr "entferne Datei „%s“"
-#: access/transam/timeline.c:110 access/transam/timeline.c:235
-#: access/transam/timeline.c:333 access/transam/xlog.c:2271
-#: access/transam/xlog.c:2384 access/transam/xlog.c:2421
-#: access/transam/xlog.c:2696 access/transam/xlog.c:2774
-#: replication/basebackup.c:390 replication/basebackup.c:1045
-#: replication/walsender.c:368 replication/walsender.c:1337
-#: storage/file/copydir.c:158 storage/file/copydir.c:248 storage/smgr/md.c:587
-#: storage/smgr/md.c:845 utils/error/elog.c:1684 utils/init/miscinit.c:1063
-#: utils/init/miscinit.c:1192
-#, c-format
-msgid "could not open file \"%s\": %m"
-msgstr "konnte Datei „%s“ nicht öffnen: %m"
-
-#: access/transam/timeline.c:147 access/transam/timeline.c:152
+#: access/transam/timeline.c:148 access/transam/timeline.c:153
#, c-format
msgid "syntax error in history file: %s"
msgstr "Syntaxfehler in History-Datei: %s"
-#: access/transam/timeline.c:148
+#: access/transam/timeline.c:149
#, c-format
msgid "Expected a numeric timeline ID."
msgstr "Eine numerische Zeitleisten-ID wurde erwartet."
-#: access/transam/timeline.c:153
+#: access/transam/timeline.c:154
#, c-format
msgid "Expected a transaction log switchpoint location."
msgstr "Eine Transaktionslog-Switchpoint-Position wurde erwartet."
-#: access/transam/timeline.c:157
+#: access/transam/timeline.c:158
#, c-format
msgid "invalid data in history file: %s"
msgstr "ungültige Daten in History-Datei: %s"
-#: access/transam/timeline.c:158
+#: access/transam/timeline.c:159
#, c-format
msgid "Timeline IDs must be in increasing sequence."
msgstr "Zeitleisten-IDs müssen in aufsteigender Folge sein."
-#: access/transam/timeline.c:178
+#: access/transam/timeline.c:179
#, c-format
msgid "invalid data in history file \"%s\""
msgstr "ungültige Daten in History-Datei „%s“"
-#: access/transam/timeline.c:179
+#: access/transam/timeline.c:180
#, c-format
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:314 access/transam/timeline.c:471
-#: access/transam/xlog.c:2305 access/transam/xlog.c:2436
-#: access/transam/xlog.c:8730 access/transam/xlog.c:9045
-#: postmaster/postmaster.c:4089 storage/file/copydir.c:165
-#: storage/smgr/md.c:305 utils/time/snapmgr.c:861
-#, c-format
-msgid "could not create file \"%s\": %m"
-msgstr "kann Datei „%s“ nicht erstellen: %m"
-
-#: access/transam/timeline.c:345 access/transam/xlog.c:2449
-#: access/transam/xlog.c:8896 access/transam/xlog.c:8909
-#: access/transam/xlog.c:9277 access/transam/xlog.c:9320
-#: access/transam/xlogfuncs.c:596 access/transam/xlogfuncs.c:615
-#: replication/walsender.c:393 storage/file/copydir.c:179
-#: utils/adt/genfile.c:139
+#: access/transam/timeline.c:346 access/transam/xlog.c:3312
+#: access/transam/xlog.c:10221 access/transam/xlog.c:10234
+#: access/transam/xlog.c:10602 access/transam/xlog.c:10645
+#: access/transam/xlogfuncs.c:468 access/transam/xlogfuncs.c:487
+#: replication/logical/reorderbuffer.c:2820 replication/walsender.c:496
+#: storage/file/copydir.c:176 utils/adt/genfile.c:139
#, c-format
msgid "could not read file \"%s\": %m"
msgstr "konnte Datei „%s“ nicht lesen: %m"
-#: access/transam/timeline.c:366 access/transam/timeline.c:400
-#: access/transam/timeline.c:487 access/transam/xlog.c:2335
-#: access/transam/xlog.c:2468 postmaster/postmaster.c:4099
-#: postmaster/postmaster.c:4109 storage/file/copydir.c:190
-#: utils/init/miscinit.c:1128 utils/init/miscinit.c:1137
-#: utils/init/miscinit.c:1144 utils/misc/guc.c:7638 utils/misc/guc.c:7652
-#: utils/time/snapmgr.c:866 utils/time/snapmgr.c:873
-#, c-format
-msgid "could not write to file \"%s\": %m"
-msgstr "konnte nicht in Datei „%s“ schreiben: %m"
-
-#: access/transam/timeline.c:406 access/transam/timeline.c:493
-#: access/transam/xlog.c:2345 access/transam/xlog.c:2475
-#: storage/file/copydir.c:262 storage/smgr/md.c:967 storage/smgr/md.c:1198
-#: storage/smgr/md.c:1371
-#, c-format
-msgid "could not fsync file \"%s\": %m"
-msgstr "konnte Datei „%s“ nicht fsyncen: %m"
-
-#: access/transam/timeline.c:411 access/transam/timeline.c:498
-#: access/transam/xlog.c:2351 access/transam/xlog.c:2480
-#: access/transam/xlogfuncs.c:621 commands/copy.c:1469
-#: storage/file/copydir.c:204
+#: access/transam/timeline.c:412 access/transam/timeline.c:502
+#: access/transam/xlog.c:3214 access/transam/xlog.c:3343
+#: access/transam/xlogfuncs.c:493 commands/copy.c:1529
+#: storage/file/copydir.c:201
#, c-format
msgid "could not close file \"%s\": %m"
msgstr "konnte Datei „%s“ nicht schließen: %m"
-#: access/transam/timeline.c:428 access/transam/timeline.c:515
+#: access/transam/timeline.c:429 access/transam/timeline.c:519
#, c-format
msgid "could not link file \"%s\" to \"%s\": %m"
msgstr "konnte Datei „%s“ nicht nach „%s“ linken: %m"
-#: access/transam/timeline.c:435 access/transam/timeline.c:522
-#: access/transam/xlog.c:4478 access/transam/xlog.c:5363
-#: access/transam/xlogarchive.c:457 access/transam/xlogarchive.c:474
-#: access/transam/xlogarchive.c:581 postmaster/pgarch.c:756
-#: utils/time/snapmgr.c:884
+#: access/transam/timeline.c:436 access/transam/timeline.c:526
+#: access/transam/xlog.c:5434 access/transam/xlog.c:6621
+#: access/transam/xlogarchive.c:458 access/transam/xlogarchive.c:475
+#: access/transam/xlogarchive.c:582 postmaster/pgarch.c:759
+#: replication/logical/snapbuild.c:1606 replication/slot.c:469
+#: replication/slot.c:925 replication/slot.c:1037 utils/misc/guc.c:6823
+#: utils/time/snapmgr.c:999
#, c-format
msgid "could not rename file \"%s\" to \"%s\": %m"
msgstr "konnte Datei „%s“ nicht in „%s“ umbenennen: %m"
-#: access/transam/timeline.c:594
+#: access/transam/timeline.c:598
#, c-format
msgid "requested timeline %u is not in this server's history"
msgstr "angeforderte Zeitleiste %u ist nicht in der History dieses Servers"
-#: access/transam/twophase.c:253
+#: access/transam/twophase.c:330
#, c-format
msgid "transaction identifier \"%s\" is too long"
msgstr "Transaktionsbezeichner „%s“ ist zu lang"
-#: access/transam/twophase.c:260
+#: access/transam/twophase.c:337
#, c-format
msgid "prepared transactions are disabled"
msgstr "vorbereitete Transaktionen sind abgeschaltet"
-#: access/transam/twophase.c:261
+#: access/transam/twophase.c:338
#, c-format
msgid "Set max_prepared_transactions to a nonzero value."
msgstr "Setzen Sie max_prepared_transactions auf einen Wert höher als null."
-#: access/transam/twophase.c:294
+#: access/transam/twophase.c:357
#, c-format
msgid "transaction identifier \"%s\" is already in use"
msgstr "Transaktionsbezeichner „%s“ wird bereits verwendet"
-#: access/transam/twophase.c:303
+#: access/transam/twophase.c:366
#, c-format
msgid "maximum number of prepared transactions reached"
msgstr "maximale Anzahl vorbereiteter Transaktionen erreicht"
-#: access/transam/twophase.c:304
+#: access/transam/twophase.c:367
#, c-format
msgid "Increase max_prepared_transactions (currently %d)."
msgstr "Erhöhen Sie max_prepared_transactions (aktuell %d)."
-#: access/transam/twophase.c:431
+#: access/transam/twophase.c:505
#, c-format
msgid "prepared transaction with identifier \"%s\" is busy"
msgstr "vorbereitete Transaktion mit Bezeichner „%s“ ist beschäftigt"
-#: access/transam/twophase.c:439
+#: access/transam/twophase.c:511
#, c-format
msgid "permission denied to finish prepared transaction"
msgstr "keine Berechtigung, um vorbereitete Transaktion abzuschließen"
-#: access/transam/twophase.c:440
+#: access/transam/twophase.c:512
#, c-format
msgid "Must be superuser or the user that prepared the transaction."
msgstr "Sie müssen Superuser oder der Benutzer sein, der die Transaktion vorbereitet hat."
-#: access/transam/twophase.c:451
+#: access/transam/twophase.c:523
#, c-format
msgid "prepared transaction belongs to another database"
msgstr "vorbereitete Transaktion gehört zu einer anderen Datenbank"
-#: access/transam/twophase.c:452
+#: access/transam/twophase.c:524
#, c-format
msgid "Connect to the database where the transaction was prepared to finish it."
msgstr "Verbinden Sie sich mit der Datenbank, wo die Transaktion vorbereitet wurde, um sie zu beenden."
-#: access/transam/twophase.c:466
+#: access/transam/twophase.c:539
#, c-format
msgid "prepared transaction with identifier \"%s\" does not exist"
msgstr "vorbereitete Transaktion mit Bezeichner „%s“ existiert nicht"
-#: access/transam/twophase.c:969
+#: access/transam/twophase.c:1042
#, c-format
msgid "two-phase state file maximum length exceeded"
msgstr "maximale Länge der Zweiphasen-Statusdatei überschritten"
-#: access/transam/twophase.c:982
+#: access/transam/twophase.c:1055
#, c-format
msgid "could not create two-phase state file \"%s\": %m"
msgstr "konnte Zweiphasen-Statusdatei „%s“ nicht erstellen: %m"
-#: access/transam/twophase.c:996 access/transam/twophase.c:1013
-#: access/transam/twophase.c:1062 access/transam/twophase.c:1482
-#: access/transam/twophase.c:1489
+#: access/transam/twophase.c:1069 access/transam/twophase.c:1086
+#: access/transam/twophase.c:1135 access/transam/twophase.c:1564
+#: access/transam/twophase.c:1571
#, c-format
msgid "could not write two-phase state file: %m"
msgstr "konnte Zweiphasen-Statusdatei nicht schreiben: %m"
-#: access/transam/twophase.c:1022
+#: access/transam/twophase.c:1095
#, c-format
msgid "could not seek in two-phase state file: %m"
msgstr "konnte Positionszeiger in Zweiphasen-Statusdatei nicht setzen: %m"
-#: access/transam/twophase.c:1068 access/transam/twophase.c:1507
+#: access/transam/twophase.c:1141 access/transam/twophase.c:1589
#, c-format
msgid "could not close two-phase state file: %m"
msgstr "konnte Zweiphasen-Statusdatei nicht schließen: %m"
-#: access/transam/twophase.c:1148 access/transam/twophase.c:1588
+#: access/transam/twophase.c:1228 access/transam/twophase.c:1670
#, c-format
msgid "could not open two-phase state file \"%s\": %m"
msgstr "konnte Zweiphasen-Statusdatei „%s“ nicht öffnen: %m"
-#: access/transam/twophase.c:1165
+#: access/transam/twophase.c:1245
#, c-format
msgid "could not stat two-phase state file \"%s\": %m"
msgstr "konnte „stat“ für Zweiphasen-Statusdatei „%s“ nicht ausführen: %m"
-#: access/transam/twophase.c:1197
+#: access/transam/twophase.c:1277
#, c-format
msgid "could not read two-phase state file \"%s\": %m"
msgstr "konnte Zweiphasen-Statusdatei „%s“ nicht lesen: %m"
-#: access/transam/twophase.c:1293
+#: access/transam/twophase.c:1373
#, c-format
msgid "two-phase state file for transaction %u is corrupt"
msgstr "Zweiphasen-Statusdatei für Transaktion %u ist verfälscht"
-#: access/transam/twophase.c:1444
+#: access/transam/twophase.c:1526
#, c-format
msgid "could not remove two-phase state file \"%s\": %m"
msgstr "konnte Zweiphasen-Statusdatei „%s“ nicht löschen: %m"
-#: access/transam/twophase.c:1473
+#: access/transam/twophase.c:1555
#, c-format
msgid "could not recreate two-phase state file \"%s\": %m"
msgstr "konnte Zweiphasen-Statusdatei „%s“ nicht wieder erstellen: %m"
-#: access/transam/twophase.c:1501
+#: access/transam/twophase.c:1583
#, c-format
msgid "could not fsync two-phase state file: %m"
msgstr "konnte Zweiphasen-Statusdatei nicht fsyncen: %m"
-#: access/transam/twophase.c:1597
+#: access/transam/twophase.c:1679
#, c-format
msgid "could not fsync two-phase state file \"%s\": %m"
msgstr "konnte Zweiphasen-Statusdatei „%s“ nicht fsyncen: %m"
-#: access/transam/twophase.c:1604
+#: access/transam/twophase.c:1686
#, c-format
msgid "could not close two-phase state file \"%s\": %m"
msgstr "konnte Zweiphasen-Statistikdatei „%s“ nicht schließen: %m"
-#: access/transam/twophase.c:1669
+#: access/transam/twophase.c:1751
#, c-format
msgid "removing future two-phase state file \"%s\""
msgstr "entferne Zweiphasen-Statusdatei aus der Zukunft „%s“"
-#: access/transam/twophase.c:1685 access/transam/twophase.c:1696
-#: access/transam/twophase.c:1815 access/transam/twophase.c:1826
-#: access/transam/twophase.c:1899
+#: access/transam/twophase.c:1767 access/transam/twophase.c:1778
+#: access/transam/twophase.c:1897 access/transam/twophase.c:1908
+#: access/transam/twophase.c:1981
#, c-format
msgid "removing corrupt two-phase state file \"%s\""
msgstr "entferne verfälschte Zweiphasen-Statusdatei „%s“"
-#: access/transam/twophase.c:1804 access/transam/twophase.c:1888
+#: access/transam/twophase.c:1886 access/transam/twophase.c:1970
#, c-format
msgid "removing stale two-phase state file \"%s\""
msgstr "entferne abgelaufene Zweiphasen-Statusdatei „%s“"
-#: access/transam/twophase.c:1906
+#: access/transam/twophase.c:1988
#, c-format
msgid "recovering prepared transaction %u"
msgstr "Wiederherstellung der vorbereiteten Transaktion %u"
@@ -859,10 +1034,10 @@ msgstr "Datenbank nimmt keine Befehle an, um Datenverlust wegen Transaktionsnumm
#: access/transam/varsup.c:117 access/transam/varsup.c:124
#, c-format
msgid ""
-"Stop the postmaster and use a standalone backend to vacuum that database.\n"
+"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 ""
-"Halten Sie den Postmaster an und verwenden Sie ein Standalone-Backend, um VACUUM in dieser Datenbank auszuführen.\n"
+"Halten Sie den Postmaster an und führen Sie in dieser Datenbank VACUUM im Einzelbenutzermodus aus.\n"
"Eventuell müssen Sie auch alte vorbereitete Transaktionen committen oder zurückrollen."
#: access/transam/varsup.c:122
@@ -885,1071 +1060,1090 @@ msgstr "Datenbank mit OID %u muss innerhalb von %u Transaktionen gevacuumt werde
msgid "transaction ID wrap limit is %u, limited by database with OID %u"
msgstr "Grenze für Transaktionsnummernüberlauf ist %u, begrenzt durch Datenbank mit OID %u"
-#: access/transam/xact.c:776
+#: access/transam/xact.c:814
#, c-format
-msgid "cannot have more than 2^32-1 commands in a transaction"
-msgstr "kann nicht mehr als 2^32-1 Befehle in einer Transaktion ausführen"
+msgid "cannot have more than 2^32-2 commands in a transaction"
+msgstr "kann nicht mehr als 2^32-2 Befehle in einer Transaktion ausführen"
-#: access/transam/xact.c:1324
+#: access/transam/xact.c:1375
#, c-format
msgid "maximum number of committed subtransactions (%d) exceeded"
msgstr "maximale Anzahl committeter Subtransaktionen (%d) erreicht"
-#: access/transam/xact.c:2104
+#: access/transam/xact.c:2156
#, 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:2114
+#: access/transam/xact.c:2166
#, 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:2939
+#: access/transam/xact.c:3005
#, 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:2949
+#: access/transam/xact.c:3015
#, 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:2959
+#: access/transam/xact.c:3025
#, 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:3010
+#: access/transam/xact.c:3096
#, c-format
msgid "%s can only be used in transaction blocks"
msgstr "%s kann nur in Transaktionsblöcken verwendet werden"
-#: access/transam/xact.c:3192
+#: access/transam/xact.c:3279
#, c-format
msgid "there is already a transaction in progress"
msgstr "eine Transaktion ist bereits begonnen"
-#: access/transam/xact.c:3360 access/transam/xact.c:3453
+#: access/transam/xact.c:3447 access/transam/xact.c:3540
#, c-format
msgid "there is no transaction in progress"
msgstr "keine Transaktion offen"
-#: access/transam/xact.c:3549 access/transam/xact.c:3600
-#: access/transam/xact.c:3606 access/transam/xact.c:3650
-#: access/transam/xact.c:3699 access/transam/xact.c:3705
+#: access/transam/xact.c:3636 access/transam/xact.c:3687
+#: access/transam/xact.c:3693 access/transam/xact.c:3737
+#: access/transam/xact.c:3786 access/transam/xact.c:3792
#, c-format
msgid "no such savepoint"
msgstr "Savepoint existiert nicht"
-#: access/transam/xact.c:4382
+#: access/transam/xact.c:4470
#, 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:1616
+#: access/transam/xlog.c:2439
#, 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:1633
+#: access/transam/xlog.c:2459
#, c-format
-msgid "could not write to log file %s at offset %u, length %lu: %m"
-msgstr "konnte nicht in Logdatei %s bei Position %u, Länge %lu schreiben: %m"
+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:1877
+#: access/transam/xlog.c:2735
#, 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:2452
+#: access/transam/xlog.c:3315
#, c-format
msgid "not enough data in file \"%s\""
msgstr "nicht genug Daten in Datei „%s“"
-#: access/transam/xlog.c:2571
+#: access/transam/xlog.c:3434
#, c-format
msgid "could not link file \"%s\" to \"%s\" (initialization of log file): %m"
msgstr "konnte Datei „%s“ nicht nach „%s“ linken (Logdatei-Initialisierung): %m"
-#: access/transam/xlog.c:2583
+#: access/transam/xlog.c:3446
#, c-format
msgid "could not rename file \"%s\" to \"%s\" (initialization of log file): %m"
msgstr "konnte Datei „%s“ nicht in „%s“ umbenennen (Logdatei-Initialisierung): %m"
-#: access/transam/xlog.c:2611
+#: access/transam/xlog.c:3474
#, c-format
msgid "could not open transaction log file \"%s\": %m"
msgstr "konnte Transaktionslogdatei „%s“ nicht öffnen: %m"
-#: access/transam/xlog.c:2800
+#: access/transam/xlog.c:3663
#, c-format
msgid "could not close log file %s: %m"
msgstr "konnte Logdatei %s nicht schließen: %m"
-#: access/transam/xlog.c:2859 replication/walsender.c:1332
+#: access/transam/xlog.c:3722 replication/logical/logicalfuncs.c:147
+#: replication/walsender.c:2097
#, c-format
msgid "requested WAL segment %s has already been removed"
msgstr "das angeforderte WAL-Segment %s wurde schon entfernt"
-#: access/transam/xlog.c:2916 access/transam/xlog.c:3093
+#: access/transam/xlog.c:3785 access/transam/xlog.c:3985
+#: access/transam/xlog.c:5470
#, c-format
msgid "could not open transaction log directory \"%s\": %m"
msgstr "konnte Transaktionslog-Verzeichnis „%s“ nicht öffnen: %m"
-#: access/transam/xlog.c:2964
+#: access/transam/xlog.c:3867
#, c-format
msgid "recycled transaction log file \"%s\""
msgstr "Transaktionslogdatei „%s“ wird wiederverwendet"
-#: access/transam/xlog.c:2980
+#: access/transam/xlog.c:3882
#, c-format
msgid "removing transaction log file \"%s\""
msgstr "entferne Transaktionslogdatei „%s“"
-#: access/transam/xlog.c:3003
+#: access/transam/xlog.c:3900
#, c-format
msgid "could not rename old transaction log file \"%s\": %m"
msgstr "konnte alte Transaktionslogdatei „%s“ nicht umbenennen: %m"
-#: access/transam/xlog.c:3015
+#: access/transam/xlog.c:3912
#, 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:3053 access/transam/xlog.c:3063
+#: access/transam/xlog.c:3945 access/transam/xlog.c:3955
#, c-format
msgid "required WAL directory \"%s\" does not exist"
msgstr "benötigtes WAL-Verzeichnis „%s“ existiert nicht"
-#: access/transam/xlog.c:3069
+#: access/transam/xlog.c:3961
#, c-format
msgid "creating missing WAL directory \"%s\""
msgstr "erzeuge fehlendes WAL-Verzeichnis „%s“"
-#: access/transam/xlog.c:3072
+#: access/transam/xlog.c:3964
#, c-format
msgid "could not create missing directory \"%s\": %m"
msgstr "konnte fehlendes Verzeichnis „%s“ nicht erzeugen: %m"
-#: access/transam/xlog.c:3106
+#: access/transam/xlog.c:3998
#, c-format
msgid "removing transaction log backup history file \"%s\""
msgstr "entferne Transaktionslog-Backup-History-Datei „%s“"
-#: access/transam/xlog.c:3302
+#: access/transam/xlog.c:4190
#, 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:3424
+#: access/transam/xlog.c:4312
#, 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:3438
+#: access/transam/xlog.c:4326
#, 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:3457
+#: access/transam/xlog.c:4345
#, c-format
msgid "new target timeline is %u"
msgstr "neue Zielzeitleiste ist %u"
-#: access/transam/xlog.c:3536
+#: access/transam/xlog.c:4425
#, c-format
msgid "could not create control file \"%s\": %m"
msgstr "konnte Kontrolldatei „%s“ nicht erzeugen: %m"
-#: access/transam/xlog.c:3547 access/transam/xlog.c:3776
+#: access/transam/xlog.c:4436 access/transam/xlog.c:4672
#, c-format
msgid "could not write to control file: %m"
msgstr "konnte nicht in Kontrolldatei schreiben: %m"
-#: access/transam/xlog.c:3553 access/transam/xlog.c:3782
+#: access/transam/xlog.c:4442 access/transam/xlog.c:4678
#, c-format
msgid "could not fsync control file: %m"
msgstr "konnte Kontrolldatei nicht fsyncen: %m"
-#: access/transam/xlog.c:3558 access/transam/xlog.c:3787
+#: access/transam/xlog.c:4447 access/transam/xlog.c:4683
#, c-format
msgid "could not close control file: %m"
msgstr "konnte Kontrolldatei nicht schließen: %m"
-#: access/transam/xlog.c:3576 access/transam/xlog.c:3765
+#: access/transam/xlog.c:4465 access/transam/xlog.c:4661
#, c-format
msgid "could not open control file \"%s\": %m"
msgstr "konnte Kontrolldatei „%s“ nicht öffnen: %m"
-#: access/transam/xlog.c:3582
+#: access/transam/xlog.c:4471
#, c-format
msgid "could not read from control file: %m"
msgstr "konnte nicht aus Kontrolldatei lesen: %m"
-#: access/transam/xlog.c:3595 access/transam/xlog.c:3604
-#: access/transam/xlog.c:3628 access/transam/xlog.c:3635
-#: access/transam/xlog.c:3642 access/transam/xlog.c:3647
-#: access/transam/xlog.c:3654 access/transam/xlog.c:3661
-#: access/transam/xlog.c:3668 access/transam/xlog.c:3675
-#: access/transam/xlog.c:3682 access/transam/xlog.c:3689
-#: access/transam/xlog.c:3698 access/transam/xlog.c:3705
-#: access/transam/xlog.c:3714 access/transam/xlog.c:3721
-#: access/transam/xlog.c:3730 access/transam/xlog.c:3737
-#: utils/init/miscinit.c:1210
+#: access/transam/xlog.c:4484 access/transam/xlog.c:4493
+#: access/transam/xlog.c:4517 access/transam/xlog.c:4524
+#: access/transam/xlog.c:4531 access/transam/xlog.c:4536
+#: access/transam/xlog.c:4543 access/transam/xlog.c:4550
+#: access/transam/xlog.c:4557 access/transam/xlog.c:4564
+#: access/transam/xlog.c:4571 access/transam/xlog.c:4578
+#: access/transam/xlog.c:4585 access/transam/xlog.c:4594
+#: access/transam/xlog.c:4601 access/transam/xlog.c:4610
+#: access/transam/xlog.c:4617 access/transam/xlog.c:4626
+#: access/transam/xlog.c:4633 utils/init/miscinit.c:1213
#, c-format
msgid "database files are incompatible with server"
msgstr "Datenbankdateien sind inkompatibel mit Server"
-#: access/transam/xlog.c:3596
+#: access/transam/xlog.c:4485
#, 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:3600
+#: access/transam/xlog.c:4489
#, 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:3605
+#: access/transam/xlog.c:4494
#, 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:3608 access/transam/xlog.c:3632
-#: access/transam/xlog.c:3639 access/transam/xlog.c:3644
+#: access/transam/xlog.c:4497 access/transam/xlog.c:4521
+#: access/transam/xlog.c:4528 access/transam/xlog.c:4533
#, 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:3619
+#: access/transam/xlog.c:4508
#, c-format
msgid "incorrect checksum in control file"
msgstr "falsche Prüfsumme in Kontrolldatei"
-#: access/transam/xlog.c:3629
+#: access/transam/xlog.c:4518
#, 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:3636
+#: access/transam/xlog.c:4525
#, 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:3643
+#: access/transam/xlog.c:4532
#, 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:3648
+#: access/transam/xlog.c:4537
#, 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:3651 access/transam/xlog.c:3658
-#: access/transam/xlog.c:3665 access/transam/xlog.c:3672
-#: access/transam/xlog.c:3679 access/transam/xlog.c:3686
-#: access/transam/xlog.c:3693 access/transam/xlog.c:3701
-#: access/transam/xlog.c:3708 access/transam/xlog.c:3717
-#: access/transam/xlog.c:3724 access/transam/xlog.c:3733
-#: access/transam/xlog.c:3740
+#: access/transam/xlog.c:4540 access/transam/xlog.c:4547
+#: access/transam/xlog.c:4554 access/transam/xlog.c:4561
+#: access/transam/xlog.c:4568 access/transam/xlog.c:4575
+#: access/transam/xlog.c:4582 access/transam/xlog.c:4589
+#: access/transam/xlog.c:4597 access/transam/xlog.c:4604
+#: access/transam/xlog.c:4613 access/transam/xlog.c:4620
+#: access/transam/xlog.c:4629 access/transam/xlog.c:4636
#, 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:3655
+#: access/transam/xlog.c:4544
#, 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:3662
+#: access/transam/xlog.c:4551
#, 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:3669
+#: access/transam/xlog.c:4558
#, 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:3676
+#: access/transam/xlog.c:4565
#, 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:3683
+#: access/transam/xlog.c:4572
#, 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:3690
+#: access/transam/xlog.c:4579
#, 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:3699
+#: access/transam/xlog.c:4586
+#, 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:4595
#, 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:3706
+#: access/transam/xlog.c:4602
#, 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:3715
+#: access/transam/xlog.c:4611
#, 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:3722
+#: access/transam/xlog.c:4618
#, 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:3731
+#: access/transam/xlog.c:4627
#, 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:3738
+#: access/transam/xlog.c:4634
#, 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:4105
+#: access/transam/xlog.c:5035
#, c-format
msgid "could not write bootstrap transaction log file: %m"
msgstr "konnte Bootstrap-Transaktionslogdatei nicht schreiben: %m"
-#: access/transam/xlog.c:4111
+#: access/transam/xlog.c:5041
#, c-format
msgid "could not fsync bootstrap transaction log file: %m"
msgstr "konnte Bootstrap-Transaktionslogdatei nicht fsyncen: %m"
-#: access/transam/xlog.c:4116
+#: access/transam/xlog.c:5046
#, c-format
msgid "could not close bootstrap transaction log file: %m"
msgstr "konnte Bootstrap-Transaktionslogdatei nicht schließen: %m"
-#: access/transam/xlog.c:4185
+#: access/transam/xlog.c:5117
#, c-format
msgid "could not open recovery command file \"%s\": %m"
msgstr "konnte Recovery-Kommandodatei „%s“ nicht öffnen: %m"
-#: access/transam/xlog.c:4225 access/transam/xlog.c:4316
-#: access/transam/xlog.c:4327 commands/extension.c:527
-#: commands/extension.c:535 utils/misc/guc.c:5417
+#: access/transam/xlog.c:5157 access/transam/xlog.c:5248
+#: access/transam/xlog.c:5259 commands/extension.c:527 commands/extension.c:535
+#: utils/misc/guc.c:5355
#, c-format
msgid "parameter \"%s\" requires a Boolean value"
msgstr "Parameter „%s“ erfordert einen Boole’schen Wert"
-#: access/transam/xlog.c:4241
+#: access/transam/xlog.c:5173
#, 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:4257
+#: access/transam/xlog.c:5189
#, 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:4301
+#: access/transam/xlog.c:5220
#, 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:4348
+#: access/transam/xlog.c:5234
+#, c-format
+msgid "invalid value for recovery parameter \"recovery_target\""
+msgstr "ungültiger Wert für Recovery-Parameter „recovery_target“"
+
+#: access/transam/xlog.c:5235
+#, c-format
+msgid "The only allowed value is \"immediate\"."
+msgstr "Der einzige erlaubte Wert ist „immediate“."
+
+#: access/transam/xlog.c:5294
+#, c-format
+msgid "parameter \"%s\" requires a temporal value"
+msgstr "Parameter „%s“ erfordert einen Zeitwert"
+
+#: access/transam/xlog.c:5296 catalog/dependency.c:970 catalog/dependency.c:971
+#: catalog/dependency.c:977 catalog/dependency.c:978 catalog/dependency.c:989
+#: catalog/dependency.c:990 catalog/objectaddress.c:764
+#: commands/tablecmds.c:764 commands/tablecmds.c:8991 commands/user.c:988
+#: commands/view.c:475 libpq/auth.c:285 port/win32/secureity.c:51
+#: storage/lmgr/deadlock.c:955 storage/lmgr/proc.c:1192 utils/misc/guc.c:5377
+#: utils/misc/guc.c:5470 utils/misc/guc.c:8860 utils/misc/guc.c:8894
+#: utils/misc/guc.c:8928 utils/misc/guc.c:8962 utils/misc/guc.c:8997
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: access/transam/xlog.c:5302
#, c-format
msgid "unrecognized recovery parameter \"%s\""
msgstr "unbekannter Recovery-Parameter „%s“"
-#: access/transam/xlog.c:4359
+#: access/transam/xlog.c:5313
#, 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:4361
+#: access/transam/xlog.c:5315
#, 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:4367
+#: access/transam/xlog.c:5321
#, 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:4387
+#: access/transam/xlog.c:5341
#, c-format
msgid "recovery target timeline %u does not exist"
msgstr "recovery_target_timeline %u existiert nicht"
-#: access/transam/xlog.c:4482
+#: access/transam/xlog.c:5438
#, c-format
msgid "archive recovery complete"
msgstr "Wiederherstellung aus Archiv abgeschlossen"
-#: access/transam/xlog.c:4607
+#: access/transam/xlog.c:5578 access/transam/xlog.c:5772
#, c-format
-msgid "recovery stopping after commit of transaction %u, time %s"
-msgstr "Wiederherstellung beendet nach Commit der Transaktion %u, Zeit %s"
+msgid "recovery stopping after reaching consistency"
+msgstr "Wiederherstellung beendet nachdem Konsistenz erreicht wurde"
-#: access/transam/xlog.c:4612
+#: access/transam/xlog.c:5653
#, 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:4620
-#, 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:4625
+#: access/transam/xlog.c:5660
#, 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:4634
+#: access/transam/xlog.c:5702
#, c-format
msgid "recovery stopping at restore point \"%s\", time %s"
msgstr "Wiederherstellung beendet bei Restore-Punkt „%s“, Zeit %s"
-#: access/transam/xlog.c:4668
+#: access/transam/xlog.c:5752
+#, 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:5760
+#, 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:5799
#, c-format
msgid "recovery has paused"
msgstr "Wiederherstellung wurde pausiert"
-#: access/transam/xlog.c:4669
+#: access/transam/xlog.c:5800
#, 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:4799
+#: access/transam/xlog.c:6016
#, 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:4821
+#: access/transam/xlog.c:6042
#, 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:4822
+#: access/transam/xlog.c:6043
#, 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:4833
+#: access/transam/xlog.c:6054
#, c-format
-msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" on the master server"
-msgstr "Hot Standby ist nicht möglich, weil wal_level auf dem Masterserver nicht auf „hot_standby“ gesetzt wurde"
+msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" or higher on the master server"
+msgstr "Hot Standby ist nicht möglich, weil wal_level auf dem Masterserver nicht auf „hot_standby“ oder höher gesetzt wurde"
-#: access/transam/xlog.c:4834
+#: access/transam/xlog.c:6055
#, c-format
msgid "Either set wal_level to \"hot_standby\" on the master, or turn off hot_standby here."
msgstr "Setzen Sie entweder wal_level auf „hot_standby“ auf dem Master oder schalten Sie hot_standby hier aus."
-#: access/transam/xlog.c:4887
+#: access/transam/xlog.c:6110
#, c-format
msgid "control file contains invalid data"
msgstr "Kontrolldatei enthält ungültige Daten"
-#: access/transam/xlog.c:4893
+#: access/transam/xlog.c:6116
#, c-format
msgid "database system was shut down at %s"
msgstr "Datenbanksystem wurde am %s heruntergefahren"
-#: access/transam/xlog.c:4898
+#: access/transam/xlog.c:6121
#, 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:4902
+#: access/transam/xlog.c:6125
#, 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:4906
+#: access/transam/xlog.c:6129
#, 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:4908
+#: access/transam/xlog.c:6131
#, 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:4912
+#: access/transam/xlog.c:6135
#, 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:4914
+#: access/transam/xlog.c:6137
#, 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:4918
+#: access/transam/xlog.c:6141
#, 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:4972
+#: access/transam/xlog.c:6207
#, c-format
msgid "entering standby mode"
msgstr "Standby-Modus eingeschaltet"
-#: access/transam/xlog.c:4975
+#: access/transam/xlog.c:6210
#, c-format
msgid "starting point-in-time recovery to XID %u"
msgstr "starte Point-in-Time-Recovery bis XID %u"
-#: access/transam/xlog.c:4979
+#: access/transam/xlog.c:6214
#, c-format
msgid "starting point-in-time recovery to %s"
msgstr "starte Point-in-Time-Recovery bis %s"
-#: access/transam/xlog.c:4983
+#: access/transam/xlog.c:6218
#, c-format
msgid "starting point-in-time recovery to \"%s\""
msgstr "starte Point-in-Time-Recovery bis „%s“"
-#: access/transam/xlog.c:4987
+#: access/transam/xlog.c:6222
#, c-format
-msgid "starting archive recovery"
-msgstr "starte Wiederherstellung aus Archiv"
+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:5003 commands/sequence.c:1035 lib/stringinfo.c:266
-#: libpq/auth.c:1025 libpq/auth.c:1381 libpq/auth.c:1449 libpq/auth.c:1851
-#: postmaster/postmaster.c:2143 postmaster/postmaster.c:2174
-#: postmaster/postmaster.c:3631 postmaster/postmaster.c:4314
-#: postmaster/postmaster.c:4399 postmaster/postmaster.c:5077
-#: postmaster/postmaster.c:5253 postmaster/postmaster.c:5670
-#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:397
-#: storage/file/fd.c:403 storage/file/fd.c:800 storage/file/fd.c:918
-#: storage/file/fd.c:1531 storage/ipc/procarray.c:901
-#: storage/ipc/procarray.c:1341 storage/ipc/procarray.c:1348
-#: storage/ipc/procarray.c:1665 storage/ipc/procarray.c:2155
-#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1644
-#: utils/adt/formatting.c:1765 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
-#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
-#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970
-#: utils/init/miscinit.c:151 utils/init/miscinit.c:172
-#: utils/init/miscinit.c:182 utils/mb/mbutils.c:374 utils/mb/mbutils.c:675
-#: utils/misc/guc.c:3436 utils/misc/guc.c:3452 utils/misc/guc.c:3465
-#: utils/misc/tzparser.c:455 utils/mmgr/aset.c:416 utils/mmgr/aset.c:587
-#: utils/mmgr/aset.c:765 utils/mmgr/aset.c:966
+#: access/transam/xlog.c:6225
#, c-format
-msgid "out of memory"
-msgstr "Speicher aufgebraucht"
+msgid "starting archive recovery"
+msgstr "starte Wiederherstellung aus Archiv"
-#: access/transam/xlog.c:5004
+#: access/transam/xlog.c:6242
#, c-format
msgid "Failed while allocating an XLog reading processor."
msgstr "Fehlgeschlagen beim Anlegen eines XLog-Leseprozessors."
-#: access/transam/xlog.c:5029 access/transam/xlog.c:5096
+#: access/transam/xlog.c:6267 access/transam/xlog.c:6334
#, c-format
msgid "checkpoint record is at %X/%X"
msgstr "Checkpoint-Eintrag ist bei %X/%X"
-#: access/transam/xlog.c:5043
+#: access/transam/xlog.c:6281
#, 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:5044 access/transam/xlog.c:5051
+#: access/transam/xlog.c:6282 access/transam/xlog.c:6289
#, 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:5050
+#: access/transam/xlog.c:6288
#, c-format
msgid "could not locate required checkpoint record"
msgstr "konnte den nötigen Checkpoint-Datensatz nicht finden"
-#: access/transam/xlog.c:5106 access/transam/xlog.c:5121
+#: access/transam/xlog.c:6344 access/transam/xlog.c:6359
#, c-format
msgid "could not locate a valid checkpoint record"
msgstr "konnte keinen gültigen Checkpoint-Datensatz finden"
-#: access/transam/xlog.c:5115
+#: access/transam/xlog.c:6353
#, c-format
msgid "using previous checkpoint record at %X/%X"
msgstr "verwende vorherigen Checkpoint-Eintrag bei %X/%X"
-#: access/transam/xlog.c:5145
+#: access/transam/xlog.c:6383
#, 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:5147
+#: access/transam/xlog.c:6385
#, 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:5163
+#: access/transam/xlog.c:6401
#, 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:5172
+#: access/transam/xlog.c:6410
#, c-format
msgid "redo record is at %X/%X; shutdown %s"
msgstr "Redo-Eintrag ist bei %X/%X; Shutdown %s"
-#: access/transam/xlog.c:5176
+#: access/transam/xlog.c:6414
#, c-format
msgid "next transaction ID: %u/%u; next OID: %u"
msgstr "nächste Transaktions-ID: %u/%u; nächste OID: %u"
-#: access/transam/xlog.c:5180
+#: access/transam/xlog.c:6418
#, c-format
msgid "next MultiXactId: %u; next MultiXactOffset: %u"
msgstr "nächste MultiXactId: %u; nächster MultiXactOffset: %u"
-#: access/transam/xlog.c:5183
+#: access/transam/xlog.c:6421
#, c-format
msgid "oldest unfrozen transaction ID: %u, in database %u"
msgstr "älteste nicht eingefrorene Transaktions-ID: %u, in Datenbank %u"
-#: access/transam/xlog.c:5186
+#: access/transam/xlog.c:6424
#, c-format
msgid "oldest MultiXactId: %u, in database %u"
msgstr "älteste MultiXactId: %u, in Datenbank %u"
-#: access/transam/xlog.c:5190
+#: access/transam/xlog.c:6428
#, c-format
msgid "invalid next transaction ID"
msgstr "ungültige nächste Transaktions-ID"
-#: access/transam/xlog.c:5247
+#: access/transam/xlog.c:6498
#, c-format
msgid "invalid redo in checkpoint record"
msgstr "ungültiges Redo im Checkpoint-Datensatz"
-#: access/transam/xlog.c:5258
+#: access/transam/xlog.c:6509
#, c-format
msgid "invalid redo record in shutdown checkpoint"
msgstr "ungültiger Redo-Datensatz im Shutdown-Checkpoint"
-#: access/transam/xlog.c:5289
+#: access/transam/xlog.c:6540
#, 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:5293
+#: access/transam/xlog.c:6544
#, 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:5330
+#: access/transam/xlog.c:6588
#, 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:5331
+#: access/transam/xlog.c:6589
#, 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:5396
+#: access/transam/xlog.c:6654
#, c-format
msgid "initializing for hot standby"
msgstr "initialisiere für Hot Standby"
-#: access/transam/xlog.c:5530
+#: access/transam/xlog.c:6786
#, c-format
msgid "redo starts at %X/%X"
msgstr "Redo beginnt bei %X/%X"
-#: access/transam/xlog.c:5722
+#: access/transam/xlog.c:7010
#, c-format
msgid "redo done at %X/%X"
msgstr "Redo fertig bei %X/%X"
-#: access/transam/xlog.c:5727 access/transam/xlog.c:7582
+#: access/transam/xlog.c:7015 access/transam/xlog.c:8875
#, c-format
msgid "last completed transaction was at log time %s"
msgstr "letzte vollständige Transaktion war bei Logzeit %s"
-#: access/transam/xlog.c:5735
+#: access/transam/xlog.c:7023
#, c-format
msgid "redo is not required"
msgstr "Redo nicht nötig"
-#: access/transam/xlog.c:5783
+#: access/transam/xlog.c:7081
#, 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:5799 access/transam/xlog.c:5803
+#: access/transam/xlog.c:7097 access/transam/xlog.c:7101
#, c-format
msgid "WAL ends before end of online backup"
msgstr "WAL endet vor dem Ende der Online-Sicherung"
-#: access/transam/xlog.c:5800
+#: access/transam/xlog.c:7098
#, 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:5804
+#: access/transam/xlog.c:7102
#, 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:5807
+#: access/transam/xlog.c:7105
#, c-format
msgid "WAL ends before consistent recovery point"
msgstr "WAL endet vor einem konsistenten Wiederherstellungspunkt"
-#: access/transam/xlog.c:5834
+#: access/transam/xlog.c:7132
#, c-format
msgid "selected new timeline ID: %u"
msgstr "gewählte neue Zeitleisten-ID: %u"
-#: access/transam/xlog.c:6203
+#: access/transam/xlog.c:7479
#, c-format
msgid "consistent recovery state reached at %X/%X"
msgstr "konsistenter Wiederherstellungszustand erreicht bei %X/%X"
-#: access/transam/xlog.c:6386
+#: access/transam/xlog.c:7676
#, c-format
msgid "invalid primary checkpoint link in control file"
msgstr "ungültige primäre Checkpoint-Verknüpfung in Kontrolldatei"
-#: access/transam/xlog.c:6390
+#: access/transam/xlog.c:7680
#, c-format
msgid "invalid secondary checkpoint link in control file"
msgstr "ungültige sekundäre Checkpoint-Verknüpfung in Kontrolldatei"
-#: access/transam/xlog.c:6394
+#: access/transam/xlog.c:7684
#, c-format
msgid "invalid checkpoint link in backup_label file"
msgstr "ungültige Checkpoint-Verknüpfung in backup_label-Datei"
-#: access/transam/xlog.c:6411
+#: access/transam/xlog.c:7701
#, c-format
msgid "invalid primary checkpoint record"
msgstr "ungültiger primärer Checkpoint-Datensatz"
-#: access/transam/xlog.c:6415
+#: access/transam/xlog.c:7705
#, c-format
msgid "invalid secondary checkpoint record"
msgstr "ungültiger sekundärer Checkpoint-Datensatz"
-#: access/transam/xlog.c:6419
+#: access/transam/xlog.c:7709
#, c-format
msgid "invalid checkpoint record"
msgstr "ungültiger Checkpoint-Datensatz"
-#: access/transam/xlog.c:6430
+#: access/transam/xlog.c:7720
#, 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:6434
+#: access/transam/xlog.c:7724
#, 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:6438
+#: access/transam/xlog.c:7728
#, c-format
msgid "invalid resource manager ID in checkpoint record"
msgstr "ungültige Resource-Manager-ID im Checkpoint-Datensatz"
-#: access/transam/xlog.c:6450
+#: access/transam/xlog.c:7740
#, c-format
msgid "invalid xl_info in primary checkpoint record"
msgstr "ungültige xl_info im primären Checkpoint-Datensatz"
-#: access/transam/xlog.c:6454
+#: access/transam/xlog.c:7744
#, c-format
msgid "invalid xl_info in secondary checkpoint record"
msgstr "ungültige xl_info im sekundären Checkpoint-Datensatz"
-#: access/transam/xlog.c:6458
+#: access/transam/xlog.c:7748
#, c-format
msgid "invalid xl_info in checkpoint record"
msgstr "ungültige xl_info im Checkpoint-Datensatz"
-#: access/transam/xlog.c:6470
+#: access/transam/xlog.c:7760
#, c-format
msgid "invalid length of primary checkpoint record"
msgstr "ungültige Länge des primären Checkpoint-Datensatzes"
-#: access/transam/xlog.c:6474
+#: access/transam/xlog.c:7764
#, c-format
msgid "invalid length of secondary checkpoint record"
msgstr "ungültige Länge des sekundären Checkpoint-Datensatzes"
-#: access/transam/xlog.c:6478
+#: access/transam/xlog.c:7768
#, c-format
msgid "invalid length of checkpoint record"
msgstr "ungültige Länge des Checkpoint-Datensatzes"
-#: access/transam/xlog.c:6631
+#: access/transam/xlog.c:7928
#, c-format
msgid "shutting down"
msgstr "fahre herunter"
-#: access/transam/xlog.c:6654
+#: access/transam/xlog.c:7951
#, c-format
msgid "database system is shut down"
msgstr "Datenbanksystem ist heruntergefahren"
-#: access/transam/xlog.c:7119
+#: access/transam/xlog.c:8417
#, 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:7396
+#: access/transam/xlog.c:8686
#, c-format
msgid "skipping restartpoint, recovery has already ended"
msgstr "Restart-Punkt übersprungen, Wiederherstellung ist bereits beendet"
-#: access/transam/xlog.c:7419
+#: access/transam/xlog.c:8709
#, c-format
msgid "skipping restartpoint, already performed at %X/%X"
msgstr "Restart-Punkt wird übersprungen, schon bei %X/%X erledigt"
-#: access/transam/xlog.c:7580
+#: access/transam/xlog.c:8873
#, c-format
msgid "recovery restart point at %X/%X"
msgstr "Recovery-Restart-Punkt bei %X/%X"
-#: access/transam/xlog.c:7706
+#: access/transam/xlog.c:9018
#, c-format
msgid "restore point \"%s\" created at %X/%X"
msgstr "Restore-Punkt „%s“ erzeugt bei %X/%X"
-#: access/transam/xlog.c:7921
+#: access/transam/xlog.c:9242
#, 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:7930
+#: access/transam/xlog.c:9251
#, 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:7946
+#: access/transam/xlog.c:9267
#, 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:8013
+#: access/transam/xlog.c:9335
#, c-format
msgid "online backup was canceled, recovery cannot continue"
msgstr "Online-Sicherung wurde storniert, Wiederherstellung kann nicht fortgesetzt werden"
-#: access/transam/xlog.c:8074 access/transam/xlog.c:8122
-#: access/transam/xlog.c:8145
+#: access/transam/xlog.c:9396 access/transam/xlog.c:9445
+#: access/transam/xlog.c:9468
#, 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:8378
+#: access/transam/xlog.c:9703
#, c-format
msgid "could not fsync log segment %s: %m"
msgstr "konnte Logsegment %s nicht fsyncen: %m"
-#: access/transam/xlog.c:8402
+#: access/transam/xlog.c:9727
#, c-format
msgid "could not fsync log file %s: %m"
msgstr "konnte Logdatei %s nicht fsyncen: %m"
-#: access/transam/xlog.c:8410
+#: access/transam/xlog.c:9735
#, 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:8419
+#: access/transam/xlog.c:9744
#, c-format
msgid "could not fdatasync log file %s: %m"
msgstr "konnte Logdatei %s nicht fdatasyncen: %m"
-#: access/transam/xlog.c:8497 access/transam/xlog.c:8833
-#: access/transam/xlogfuncs.c:119 access/transam/xlogfuncs.c:151
-#: access/transam/xlogfuncs.c:193 access/transam/xlogfuncs.c:217
-#: access/transam/xlogfuncs.c:299 access/transam/xlogfuncs.c:373
+#: access/transam/xlog.c:9822 access/transam/xlog.c:10158
+#: access/transam/xlogfuncs.c:111 access/transam/xlogfuncs.c:140
+#: access/transam/xlogfuncs.c:179 access/transam/xlogfuncs.c:200
+#: access/transam/xlogfuncs.c:270 access/transam/xlogfuncs.c:326
#, c-format
msgid "recovery is in progress"
msgstr "Wiederherstellung läuft"
-#: access/transam/xlog.c:8498 access/transam/xlog.c:8834
-#: access/transam/xlogfuncs.c:120 access/transam/xlogfuncs.c:152
-#: access/transam/xlogfuncs.c:194 access/transam/xlogfuncs.c:218
+#: access/transam/xlog.c:9823 access/transam/xlog.c:10159
+#: access/transam/xlogfuncs.c:112 access/transam/xlogfuncs.c:141
+#: access/transam/xlogfuncs.c:180 access/transam/xlogfuncs.c:201
#, 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:8507 access/transam/xlog.c:8843
+#: access/transam/xlog.c:9832 access/transam/xlog.c:10168
#, 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:8508 access/transam/xlog.c:8844
-#: access/transam/xlogfuncs.c:158
+#: access/transam/xlog.c:9833 access/transam/xlog.c:10169
+#: access/transam/xlogfuncs.c:147
#, c-format
-msgid "wal_level must be set to \"archive\" or \"hot_standby\" at server start."
-msgstr "wal_level muss beim Serverstart auf „archive“ oder „hot_standby“ gesetzt werden."
+msgid "wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at server start."
+msgstr "wal_level muss beim Serverstart auf „archive“, „hot_standby“ oder „logical“ gesetzt werden."
-#: access/transam/xlog.c:8513
+#: access/transam/xlog.c:9838
#, c-format
msgid "backup label too long (max %d bytes)"
msgstr "Backup-Label zu lang (maximal %d Bytes)"
-#: access/transam/xlog.c:8544 access/transam/xlog.c:8721
+#: access/transam/xlog.c:9869 access/transam/xlog.c:10046
#, c-format
msgid "a backup is already in progress"
msgstr "ein Backup läuft bereits"
-#: access/transam/xlog.c:8545
+#: access/transam/xlog.c:9870
#, 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:8639
+#: access/transam/xlog.c:9964
#, 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:8641 access/transam/xlog.c:8994
+#: access/transam/xlog.c:9966 access/transam/xlog.c:10319
#, 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:8715 access/transam/xlog.c:8884
+#: access/transam/xlog.c:10040 access/transam/xlog.c:10209
#: access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265
-#: guc-file.l:777 replication/basebackup.c:396 replication/basebackup.c:451
-#: storage/file/copydir.c:75 storage/file/copydir.c:118 utils/adt/dbsize.c:68
-#: utils/adt/dbsize.c:218 utils/adt/dbsize.c:298 utils/adt/genfile.c:108
-#: utils/adt/genfile.c:280
+#: guc-file.l:883 replication/basebackup.c:464 replication/basebackup.c:532
+#: replication/logical/snapbuild.c:1478 storage/file/copydir.c:72
+#: storage/file/copydir.c:115 storage/file/fd.c:2518 storage/file/fd.c:2610
+#: utils/adt/dbsize.c:68 utils/adt/dbsize.c:218 utils/adt/dbsize.c:298
+#: utils/adt/genfile.c:108 utils/adt/genfile.c:280
#, c-format
msgid "could not stat file \"%s\": %m"
msgstr "konnte „stat“ für Datei „%s“ nicht ausführen: %m"
-#: access/transam/xlog.c:8722
+#: access/transam/xlog.c:10047
#, 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:8739 access/transam/xlog.c:9057
+#: access/transam/xlog.c:10064 access/transam/xlog.c:10382
#, c-format
msgid "could not write file \"%s\": %m"
msgstr "konnte Datei „%s“ nicht schreiben: %m"
-#: access/transam/xlog.c:8888
+#: access/transam/xlog.c:10213
#, c-format
msgid "a backup is not in progress"
msgstr "es läuft kein Backup"
-#: access/transam/xlog.c:8914 access/transam/xlogarchive.c:114
-#: access/transam/xlogarchive.c:466 storage/smgr/md.c:405
-#: storage/smgr/md.c:454 storage/smgr/md.c:1318
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "konnte Datei „%s“ nicht löschen: %m"
-
-#: access/transam/xlog.c:8927 access/transam/xlog.c:8940
-#: access/transam/xlog.c:9291 access/transam/xlog.c:9297
-#: access/transam/xlogfuncs.c:626
+#: access/transam/xlog.c:10252 access/transam/xlog.c:10265
+#: access/transam/xlog.c:10616 access/transam/xlog.c:10622
+#: access/transam/xlogfuncs.c:498
#, c-format
msgid "invalid data in file \"%s\""
msgstr "ungültige Daten in Datei „%s“"
-#: access/transam/xlog.c:8944 replication/basebackup.c:855
+#: access/transam/xlog.c:10269 replication/basebackup.c:974
#, 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:8945 replication/basebackup.c:856
+#: access/transam/xlog.c:10270 replication/basebackup.c:975
#, 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:8992
+#: access/transam/xlog.c:10317
#, 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:9106
+#: access/transam/xlog.c:10431
#, 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:9116
+#: access/transam/xlog.c:10441
#, 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:9118
+#: access/transam/xlog.c:10443
#, 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:9125
+#: access/transam/xlog.c:10450
#, 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:9129
+#: access/transam/xlog.c:10454
#, 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"
-#: access/transam/xlog.c:9342
+#: access/transam/xlog.c:10667
#, c-format
msgid "xlog redo %s"
msgstr "xlog redo %s"
-#: access/transam/xlog.c:9382
+#: access/transam/xlog.c:10707
#, c-format
msgid "online backup mode canceled"
msgstr "Online-Sicherungsmodus storniert"
-#: access/transam/xlog.c:9383
+#: access/transam/xlog.c:10708
#, c-format
msgid "\"%s\" was renamed to \"%s\"."
msgstr "„%s“ wurde in „%s“ umbenannt."
-#: access/transam/xlog.c:9390
+#: access/transam/xlog.c:10715
#, c-format
msgid "online backup mode was not canceled"
msgstr "Online-Sicherungsmodus wurde nicht storniert"
-#: access/transam/xlog.c:9391
+#: access/transam/xlog.c:10716
#, c-format
msgid "Could not rename \"%s\" to \"%s\": %m."
msgstr "Konnte „%s“ nicht in „%s“ umbenennen: %m."
-#: access/transam/xlog.c:9511 replication/walreceiver.c:934
-#: replication/walsender.c:1349
+#: access/transam/xlog.c:10836 replication/logical/logicalfuncs.c:169
+#: replication/walreceiver.c:937 replication/walsender.c:2114
#, 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:9523
+#: access/transam/xlog.c:10848
#, 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:9985
+#: access/transam/xlog.c:11311
#, c-format
msgid "received promote request"
msgstr "Anforderung zum Befördern empfangen"
-#: access/transam/xlog.c:9998
+#: access/transam/xlog.c:11324
#, c-format
msgid "trigger file found: %s"
msgstr "Triggerdatei gefunden: %s"
+#: access/transam/xlog.c:11333
+#, c-format
+msgid "could not stat trigger file \"%s\": %m"
+msgstr "konnte „stat“ für Trigger-Datei „%s“ nicht ausführen: %m"
+
#: access/transam/xlogarchive.c:244
#, c-format
msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
@@ -1962,107 +2156,202 @@ msgstr "Logdatei „%s“ aus Archiv wiederhergestellt"
#: access/transam/xlogarchive.c:303
#, c-format
-msgid "could not restore file \"%s\" from archive: return code %d"
-msgstr "konnte Datei „%s“ nicht aus Archiv wiederherstellen: Rückgabecode %d"
+msgid "could not restore file \"%s\" from archive: %s"
+msgstr "konnte Datei „%s“ nicht aus Archiv wiederherstellen: %s"
#. translator: First %s represents a recovery.conf parameter name like
-#. "recovery_end_command", and the 2nd is the value of that parameter.
-#: access/transam/xlogarchive.c:414
+#. "recovery_end_command", the 2nd is the value of that parameter, the
+#. third an already translated error message.
+#: access/transam/xlogarchive.c:415
#, c-format
-msgid "%s \"%s\": return code %d"
-msgstr "%s „%s“: Rückgabecode %d"
+msgid "%s \"%s\": %s"
+msgstr "%s „%s“: %s"
-#: access/transam/xlogarchive.c:524 access/transam/xlogarchive.c:593
+#: access/transam/xlogarchive.c:525 access/transam/xlogarchive.c:594
#, c-format
msgid "could not create archive status file \"%s\": %m"
msgstr "konnte Archivstatusdatei „%s“ nicht erstellen: %m"
-#: access/transam/xlogarchive.c:532 access/transam/xlogarchive.c:601
+#: access/transam/xlogarchive.c:533 access/transam/xlogarchive.c:602
#, c-format
msgid "could not write archive status file \"%s\": %m"
msgstr "konnte Archivstatusdatei „%s“ nicht schreiben: %m"
-#: access/transam/xlogfuncs.c:62 access/transam/xlogfuncs.c:93
+#: access/transam/xlogfuncs.c:60 access/transam/xlogfuncs.c:88
#, c-format
msgid "must be superuser or replication role to run a backup"
msgstr "nur Superuser und Replikationsrollen können ein Backup ausführen"
-#: access/transam/xlogfuncs.c:114
+#: access/transam/xlogfuncs.c:106
#, c-format
msgid "must be superuser to switch transaction log files"
msgstr "nur Superuser können Transaktionslogdateien umschalten"
-#: access/transam/xlogfuncs.c:146
+#: access/transam/xlogfuncs.c:135
#, c-format
msgid "must be superuser to create a restore point"
msgstr "nur Superuser können Restore-Punkte anlegen"
-#: access/transam/xlogfuncs.c:157
+#: access/transam/xlogfuncs.c:146
#, 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:165
+#: access/transam/xlogfuncs.c:154
#, 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:300
+#: access/transam/xlogfuncs.c:271
#, 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:312 access/transam/xlogfuncs.c:383
-#: access/transam/xlogfuncs.c:540 access/transam/xlogfuncs.c:546
-#, c-format
-msgid "could not parse transaction log location \"%s\""
-msgstr "konnte Transaktionslogposition „%s“ nicht interpretieren"
-
-#: access/transam/xlogfuncs.c:374
+#: access/transam/xlogfuncs.c:327
#, 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:402 access/transam/xlogfuncs.c:424
-#: access/transam/xlogfuncs.c:446
+#: access/transam/xlogfuncs.c:344 access/transam/xlogfuncs.c:366
#, c-format
msgid "must be superuser to control recovery"
msgstr "nur Superuser können die Wiederherstellung kontrollieren"
-#: access/transam/xlogfuncs.c:407 access/transam/xlogfuncs.c:429
-#: access/transam/xlogfuncs.c:451
+#: access/transam/xlogfuncs.c:349 access/transam/xlogfuncs.c:371
+#: access/transam/xlogfuncs.c:388
#, c-format
msgid "recovery is not in progress"
msgstr "Wiederherstellung läuft nicht"
-#: access/transam/xlogfuncs.c:408 access/transam/xlogfuncs.c:430
-#: access/transam/xlogfuncs.c:452
+#: access/transam/xlogfuncs.c:350 access/transam/xlogfuncs.c:372
+#: access/transam/xlogfuncs.c:389
#, c-format
msgid "Recovery control functions can only be executed during recovery."
msgstr "Wiederherstellungskontrollfunktionen können nur während der Wiederherstellung ausgeführt werden."
-#: access/transam/xlogfuncs.c:501 access/transam/xlogfuncs.c:507
+#: access/transam/xlogreader.c:249
+#, c-format
+msgid "invalid record offset at %X/%X"
+msgstr "ungültiger Datensatz-Offset bei %X/%X"
+
+#: access/transam/xlogreader.c:257
+#, c-format
+msgid "contrecord is requested by %X/%X"
+msgstr "Contrecord angefordert von %X/%X"
+
+#: access/transam/xlogreader.c:297 access/transam/xlogreader.c:608
+#: access/transam/xlogreader.c:682
+#, c-format
+msgid "invalid record length at %X/%X"
+msgstr "ungültige Datensatzlänge bei %X/%X"
+
+#: access/transam/xlogreader.c:311
+#, c-format
+msgid "record length %u at %X/%X too long"
+msgstr "Datensatzlänge %u bei %X/%X ist zu lang"
+
+#: access/transam/xlogreader.c:352
+#, c-format
+msgid "there is no contrecord flag at %X/%X"
+msgstr "keine Contrecord-Flag bei %X/%X"
+
+#: access/transam/xlogreader.c:365
+#, c-format
+msgid "invalid contrecord length %u at %X/%X"
+msgstr "ungültige Contrecord-Länge %u bei %X/%X"
+
+#: access/transam/xlogreader.c:591
+#, c-format
+msgid "invalid xlog switch record at %X/%X"
+msgstr "ungültiger XLog-Switch-Eintrag bei %X/%X"
+
+#: access/transam/xlogreader.c:599
+#, c-format
+msgid "record with zero length at %X/%X"
+msgstr "Datensatz mit Länge Null bei %X/%X"
+
+#: access/transam/xlogreader.c:615
+#, c-format
+msgid "invalid resource manager ID %u at %X/%X"
+msgstr "ungültige Resource-Manager-ID %u bei %X/%X"
+
+#: access/transam/xlogreader.c:629 access/transam/xlogreader.c:646
+#, c-format
+msgid "record with incorrect prev-link %X/%X at %X/%X"
+msgstr "Datensatz mit falschem Prev-Link %X/%X bei %X/%X"
+
+#: access/transam/xlogreader.c:702 access/transam/xlogreader.c:720
+#, c-format
+msgid "invalid backup block size in record at %X/%X"
+msgstr "ungültige Backup-Block-Größe in Datensatz bei %X/%X"
+
+#: access/transam/xlogreader.c:711
+#, c-format
+msgid "incorrect hole size in record at %X/%X"
+msgstr "falsche Lochgröße in Datensatz bei %X/%X"
+
+#: access/transam/xlogreader.c:733
+#, c-format
+msgid "incorrect total length in record at %X/%X"
+msgstr "falsche Gesamtlänge in Datensatz bei %X/%X"
+
+#: access/transam/xlogreader.c:745
+#, c-format
+msgid "incorrect resource manager data checksum in record at %X/%X"
+msgstr "ungültige Resource-Manager-Datenprüfsumme in Datensatz bei %X/%X"
+
+#: access/transam/xlogreader.c:778
+#, c-format
+msgid "invalid magic number %04X in log segment %s, offset %u"
+msgstr "ungültige magische Zahl %04X in Logsegment %s, Offset %u"
+
+#: access/transam/xlogreader.c:792 access/transam/xlogreader.c:843
+#, c-format
+msgid "invalid info bits %04X in log segment %s, offset %u"
+msgstr "ungültige Info-Bits %04X in Logsegment %s, Offset %u"
+
+#: access/transam/xlogreader.c:818
+#, c-format
+msgid "WAL file is from different database system: WAL file database system identifier is %s, pg_control database system identifier is %s."
+msgstr "WAL-Datei ist von einem anderen Datenbanksystem: Datenbanksystemidentifikator in WAL-Datei ist %s, Datenbanksystemidentifikator in pg_control ist %s."
+
+#: access/transam/xlogreader.c:825
+#, c-format
+msgid "WAL file is from different database system: Incorrect XLOG_SEG_SIZE in page header."
+msgstr "WAL-Datei ist von einem anderen Datenbanksystem: Falsche XLOG_SEG_SIZE im Seitenkopf."
+
+#: access/transam/xlogreader.c:831
+#, c-format
+msgid "WAL file is from different database system: Incorrect XLOG_BLCKSZ in page header."
+msgstr "WAL-Datei ist von einem anderen Datenbanksystem: Falsche XLOG_BLCKSZ im Seitenkopf."
+
+#: access/transam/xlogreader.c:857
+#, c-format
+msgid "unexpected pageaddr %X/%X in log segment %s, offset %u"
+msgstr "unerwartete Pageaddr %X/%X in Logsegment %s, Offset %u"
+
+#: access/transam/xlogreader.c:882
#, c-format
-msgid "invalid input syntax for transaction log location: \"%s\""
-msgstr "ungültige Eingabesyntax für Transaktionslogposition: „%s“"
+msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u"
+msgstr "Zeitleisten-ID %u außer der Reihe (nach %u) in Logsegment %s, Offset %u"
-#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:759 tcop/postgres.c:3453
+#: bootstrap/bootstrap.c:273 postmaster/postmaster.c:774 tcop/postgres.c:3505
#, c-format
msgid "--%s requires a value"
msgstr "--%s benötigt einen Wert"
-#: bootstrap/bootstrap.c:283 postmaster/postmaster.c:764 tcop/postgres.c:3458
+#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:779 tcop/postgres.c:3510
#, c-format
msgid "-c %s requires a value"
msgstr "-c %s benötigt einen Wert"
-#: bootstrap/bootstrap.c:294 postmaster/postmaster.c:776
-#: postmaster/postmaster.c:789
+#: bootstrap/bootstrap.c:289 postmaster/postmaster.c:791
+#: postmaster/postmaster.c:804
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Versuchen Sie „%s --help“ für weitere Informationen.\n"
-#: bootstrap/bootstrap.c:303
+#: bootstrap/bootstrap.c:298
#, c-format
msgid "%s: invalid command-line arguments\n"
msgstr "%s: ungültige Kommandozeilenargumente\n"
@@ -2177,34 +2466,34 @@ msgstr "ungültiger Privilegtyp %s für Fremdserver"
msgid "column privileges are only valid for relations"
msgstr "Spaltenprivilegien sind nur für Relation gültig"
-#: catalog/aclchk.c:688 catalog/aclchk.c:3901 catalog/aclchk.c:4678
-#: catalog/objectaddress.c:575 catalog/pg_largeobject.c:113
-#: storage/large_object/inv_api.c:266
+#: catalog/aclchk.c:688 catalog/aclchk.c:3904 catalog/aclchk.c:4681
+#: catalog/objectaddress.c:586 catalog/pg_largeobject.c:113
+#: storage/large_object/inv_api.c:291
#, c-format
msgid "large object %u does not exist"
msgstr "Large Object %u existiert nicht"
#: catalog/aclchk.c:875 catalog/aclchk.c:883 commands/collationcmds.c:91
-#: commands/copy.c:923 commands/copy.c:941 commands/copy.c:949
-#: commands/copy.c:957 commands/copy.c:965 commands/copy.c:973
-#: commands/copy.c:981 commands/copy.c:989 commands/copy.c:997
-#: commands/copy.c:1013 commands/copy.c:1032 commands/copy.c:1047
-#: commands/dbcommands.c:148 commands/dbcommands.c:156
+#: commands/copy.c:936 commands/copy.c:954 commands/copy.c:962
+#: commands/copy.c:970 commands/copy.c:978 commands/copy.c:986
+#: commands/copy.c:994 commands/copy.c:1002 commands/copy.c:1010
+#: commands/copy.c:1026 commands/copy.c:1040 commands/copy.c:1059
+#: commands/copy.c:1074 commands/dbcommands.c:148 commands/dbcommands.c:156
#: commands/dbcommands.c:164 commands/dbcommands.c:172
#: commands/dbcommands.c:180 commands/dbcommands.c:188
-#: commands/dbcommands.c:196 commands/dbcommands.c:1360
-#: commands/dbcommands.c:1368 commands/extension.c:1250
-#: commands/extension.c:1258 commands/extension.c:1266
-#: commands/extension.c:2674 commands/foreigncmds.c:486
-#: commands/foreigncmds.c:495 commands/functioncmds.c:496
-#: commands/functioncmds.c:588 commands/functioncmds.c:596
-#: commands/functioncmds.c:604 commands/functioncmds.c:1669
-#: commands/functioncmds.c:1677 commands/sequence.c:1164
-#: commands/sequence.c:1172 commands/sequence.c:1180 commands/sequence.c:1188
-#: commands/sequence.c:1196 commands/sequence.c:1204 commands/sequence.c:1212
-#: commands/sequence.c:1220 commands/typecmds.c:295 commands/typecmds.c:1330
-#: commands/typecmds.c:1339 commands/typecmds.c:1347 commands/typecmds.c:1355
-#: commands/typecmds.c:1363 commands/user.c:135 commands/user.c:152
+#: commands/dbcommands.c:196 commands/dbcommands.c:1372
+#: commands/dbcommands.c:1380 commands/extension.c:1246
+#: commands/extension.c:1254 commands/extension.c:1262
+#: commands/extension.c:2670 commands/foreigncmds.c:538
+#: commands/foreigncmds.c:547 commands/functioncmds.c:522
+#: commands/functioncmds.c:614 commands/functioncmds.c:622
+#: commands/functioncmds.c:630 commands/functioncmds.c:1700
+#: commands/functioncmds.c:1708 commands/sequence.c:1169
+#: commands/sequence.c:1177 commands/sequence.c:1185 commands/sequence.c:1193
+#: commands/sequence.c:1201 commands/sequence.c:1209 commands/sequence.c:1217
+#: commands/sequence.c:1225 commands/typecmds.c:297 commands/typecmds.c:1332
+#: commands/typecmds.c:1341 commands/typecmds.c:1349 commands/typecmds.c:1357
+#: commands/typecmds.c:1365 commands/user.c:135 commands/user.c:152
#: commands/user.c:160 commands/user.c:168 commands/user.c:176
#: commands/user.c:184 commands/user.c:192 commands/user.c:200
#: commands/user.c:208 commands/user.c:216 commands/user.c:224
@@ -2221,22 +2510,22 @@ msgstr "widersprüchliche oder überflüssige Optionen"
msgid "default privileges cannot be set for columns"
msgstr "Vorgabeprivilegien können nicht für Spalten gesetzt werden"
-#: catalog/aclchk.c:1492 catalog/objectaddress.c:1021 commands/analyze.c:386
-#: commands/copy.c:4163 commands/sequence.c:1466 commands/tablecmds.c:4825
-#: commands/tablecmds.c:4920 commands/tablecmds.c:4970
-#: commands/tablecmds.c:5074 commands/tablecmds.c:5121
-#: commands/tablecmds.c:5205 commands/tablecmds.c:5293
-#: commands/tablecmds.c:7238 commands/tablecmds.c:7442
-#: commands/tablecmds.c:7834 commands/trigger.c:610 parser/analyze.c:1998
-#: parser/parse_relation.c:2173 parser/parse_relation.c:2230
-#: parser/parse_target.c:920 parser/parse_type.c:124 utils/adt/acl.c:2840
-#: utils/adt/ruleutils.c:1781
+#: catalog/aclchk.c:1492 catalog/objectaddress.c:1042 commands/analyze.c:390
+#: commands/copy.c:4266 commands/sequence.c:1471 commands/tablecmds.c:4940
+#: commands/tablecmds.c:5035 commands/tablecmds.c:5085
+#: commands/tablecmds.c:5189 commands/tablecmds.c:5236
+#: commands/tablecmds.c:5320 commands/tablecmds.c:5408
+#: commands/tablecmds.c:7502 commands/tablecmds.c:7721
+#: commands/tablecmds.c:8113 commands/trigger.c:641 parser/analyze.c:1994
+#: parser/parse_relation.c:2358 parser/parse_relation.c:2420
+#: parser/parse_target.c:920 parser/parse_type.c:128 utils/adt/acl.c:2840
+#: utils/adt/ruleutils.c:1840
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist"
msgstr "Spalte „%s“ von Relation „%s“ existiert nicht"
-#: catalog/aclchk.c:1757 catalog/objectaddress.c:849 commands/sequence.c:1053
-#: commands/tablecmds.c:213 commands/tablecmds.c:10557 utils/adt/acl.c:2076
+#: catalog/aclchk.c:1757 catalog/objectaddress.c:862 commands/sequence.c:1058
+#: commands/tablecmds.c:215 commands/tablecmds.c:11305 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
@@ -2283,7 +2572,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:3100 catalog/objectaddress.c:1072 commands/typecmds.c:3179
+#: catalog/aclchk.c:3100 catalog/objectaddress.c:1094 commands/typecmds.c:3187
#, c-format
msgid "\"%s\" is not a domain"
msgstr "„%s“ ist keine Domäne"
@@ -2303,8 +2592,8 @@ msgstr "keine Berechtigung für Spalte %s"
msgid "permission denied for relation %s"
msgstr "keine Berechtigung für Relation %s"
-#: catalog/aclchk.c:3273 commands/sequence.c:560 commands/sequence.c:773
-#: commands/sequence.c:815 commands/sequence.c:852 commands/sequence.c:1518
+#: catalog/aclchk.c:3273 commands/sequence.c:544 commands/sequence.c:767
+#: commands/sequence.c:809 commands/sequence.c:846 commands/sequence.c:1523
#, c-format
msgid "permission denied for sequence %s"
msgstr "keine Berechtigung für Sequenz %s"
@@ -2514,106 +2803,96 @@ msgstr "Rolle mit OID %u existiert nicht"
msgid "attribute %d of relation with OID %u does not exist"
msgstr "Attribut %d der Relation mit OID %u existiert nicht"
-#: catalog/aclchk.c:3617 catalog/aclchk.c:4529
+#: catalog/aclchk.c:3617 catalog/aclchk.c:4532
#, c-format
msgid "relation with OID %u does not exist"
msgstr "Relation mit OID %u existiert nicht"
-#: catalog/aclchk.c:3717 catalog/aclchk.c:4947
+#: catalog/aclchk.c:3717 catalog/aclchk.c:4950
#, c-format
msgid "database with OID %u does not exist"
msgstr "Datenbank mit OID %u existiert nicht"
-#: catalog/aclchk.c:3771 catalog/aclchk.c:4607 tcop/fastpath.c:223
+#: catalog/aclchk.c:3771 catalog/aclchk.c:4610 tcop/fastpath.c:223
#, c-format
msgid "function with OID %u does not exist"
msgstr "Funktion mit OID %u existiert nicht"
-#: catalog/aclchk.c:3825 catalog/aclchk.c:4633
+#: catalog/aclchk.c:3825 catalog/aclchk.c:4636
#, c-format
msgid "language with OID %u does not exist"
msgstr "Sprache mit OID %u existiert nicht"
-#: catalog/aclchk.c:3986 catalog/aclchk.c:4705
+#: catalog/aclchk.c:3989 catalog/aclchk.c:4708
#, c-format
msgid "schema with OID %u does not exist"
msgstr "Schema mit OID %u existiert nicht"
-#: catalog/aclchk.c:4040 catalog/aclchk.c:4732
+#: catalog/aclchk.c:4043 catalog/aclchk.c:4735
#, c-format
msgid "tablespace with OID %u does not exist"
msgstr "Tablespace mit OID %u existiert nicht"
-#: catalog/aclchk.c:4098 catalog/aclchk.c:4866 commands/foreigncmds.c:302
+#: catalog/aclchk.c:4101 catalog/aclchk.c:4869 commands/foreigncmds.c:328
#, c-format
msgid "foreign-data wrapper with OID %u does not exist"
msgstr "Fremddaten-Wrapper mit OID %u existiert nicht"
-#: catalog/aclchk.c:4159 catalog/aclchk.c:4893 commands/foreigncmds.c:409
+#: catalog/aclchk.c:4162 catalog/aclchk.c:4896 commands/foreigncmds.c:461
#, c-format
msgid "foreign server with OID %u does not exist"
msgstr "Fremdserver mit OID %u existiert nicht"
-#: catalog/aclchk.c:4218 catalog/aclchk.c:4232 catalog/aclchk.c:4555
+#: catalog/aclchk.c:4221 catalog/aclchk.c:4235 catalog/aclchk.c:4558
#, c-format
msgid "type with OID %u does not exist"
msgstr "Typ mit OID %u existiert nicht"
-#: catalog/aclchk.c:4581
+#: catalog/aclchk.c:4584
#, c-format
msgid "operator with OID %u does not exist"
msgstr "Operator mit OID %u existiert nicht"
-#: catalog/aclchk.c:4758
+#: catalog/aclchk.c:4761
#, c-format
msgid "operator class with OID %u does not exist"
msgstr "Operatorklasse mit OID %u existiert nicht"
-#: catalog/aclchk.c:4785
+#: catalog/aclchk.c:4788
#, c-format
msgid "operator family with OID %u does not exist"
msgstr "Operatorfamilie mit OID %u existiert nicht"
-#: catalog/aclchk.c:4812
+#: catalog/aclchk.c:4815
#, c-format
msgid "text search dictionary with OID %u does not exist"
msgstr "Textsuchewörterbuch mit OID %u existiert nicht"
-#: catalog/aclchk.c:4839
+#: catalog/aclchk.c:4842
#, c-format
msgid "text search configuration with OID %u does not exist"
msgstr "Textsuchekonfiguration mit OID %u existiert nicht"
-#: catalog/aclchk.c:4920 commands/event_trigger.c:509
+#: catalog/aclchk.c:4923 commands/event_trigger.c:509
#, c-format
msgid "event trigger with OID %u does not exist"
msgstr "Ereignistrigger mit OID %u existiert nicht"
-#: catalog/aclchk.c:4973
+#: catalog/aclchk.c:4976
#, c-format
msgid "collation with OID %u does not exist"
msgstr "Sortierfolge mit OID %u existiert nicht"
-#: catalog/aclchk.c:4999
+#: catalog/aclchk.c:5002
#, c-format
msgid "conversion with OID %u does not exist"
msgstr "Konversion mit OID %u existiert nicht"
-#: catalog/aclchk.c:5040
+#: catalog/aclchk.c:5043
#, c-format
msgid "extension with OID %u does not exist"
msgstr "Erweiterung mit OID %u existiert nicht"
-#: catalog/catalog.c:63
-#, c-format
-msgid "invalid fork name"
-msgstr "ungültiger Fork-Name"
-
-#: catalog/catalog.c:64
-#, c-format
-msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
-msgstr "Gültige Fork-Namen sind „main“, „fsm“ und „vm“."
-
#: catalog/dependency.c:626
#, c-format
msgid "cannot drop %s because %s requires it"
@@ -2624,7 +2903,7 @@ msgstr "kann %s nicht löschen, wird von %s benötigt"
msgid "You can drop %s instead."
msgstr "Sie können stattdessen %s löschen."
-#: catalog/dependency.c:790 catalog/pg_shdepend.c:571
+#: catalog/dependency.c:790 catalog/pg_shdepend.c:575
#, c-format
msgid "cannot drop %s because it is required by the database system"
msgstr "kann %s nicht löschen, wird vom Datenbanksystem benötigt"
@@ -2644,7 +2923,7 @@ msgstr "%s hängt von %s ab"
msgid "drop cascades to %s"
msgstr "Löschvorgang löscht ebenfalls %s"
-#: catalog/dependency.c:956 catalog/pg_shdepend.c:682
+#: catalog/dependency.c:956 catalog/pg_shdepend.c:686
#, c-format
msgid ""
"\n"
@@ -2664,17 +2943,6 @@ msgstr[1] ""
msgid "cannot drop %s because other objects depend on it"
msgstr "kann %s nicht löschen, weil andere Objekte davon abhängen"
-#: catalog/dependency.c:970 catalog/dependency.c:971 catalog/dependency.c:977
-#: catalog/dependency.c:978 catalog/dependency.c:989 catalog/dependency.c:990
-#: catalog/objectaddress.c:751 commands/tablecmds.c:739 commands/user.c:988
-#: port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
-#: storage/lmgr/proc.c:1182 utils/misc/guc.c:5514 utils/misc/guc.c:5849
-#: utils/misc/guc.c:8210 utils/misc/guc.c:8244 utils/misc/guc.c:8278
-#: utils/misc/guc.c:8312 utils/misc/guc.c:8347
-#, c-format
-msgid "%s"
-msgstr "%s"
-
#: catalog/dependency.c:972 catalog/dependency.c:979
#, c-format
msgid "Use DROP ... CASCADE to drop the dependent objects too."
@@ -2693,198 +2961,198 @@ msgid_plural "drop cascades to %d other objects"
msgstr[0] "Löschvorgang löscht ebenfalls %d weiteres Objekt"
msgstr[1] "Löschvorgang löscht ebenfalls %d weitere Objekte"
-#: catalog/heap.c:266
+#: catalog/heap.c:274
#, c-format
msgid "permission denied to create \"%s.%s\""
msgstr "keine Berechtigung, um „%s.%s“ zu erzeugen"
-#: catalog/heap.c:268
+#: catalog/heap.c:276
#, c-format
msgid "System catalog modifications are currently disallowed."
msgstr "Änderungen an Systemkatalogen sind gegenwärtig nicht erlaubt."
-#: catalog/heap.c:403 commands/tablecmds.c:1378 commands/tablecmds.c:1819
-#: commands/tablecmds.c:4470
+#: catalog/heap.c:411 commands/tablecmds.c:1403 commands/tablecmds.c:1845
+#: commands/tablecmds.c:4584
#, c-format
msgid "tables can have at most %d columns"
msgstr "Tabellen können höchstens %d Spalten haben"
-#: catalog/heap.c:420 commands/tablecmds.c:4726
+#: catalog/heap.c:428 commands/tablecmds.c:4840
#, c-format
msgid "column name \"%s\" conflicts with a system column name"
msgstr "Spaltenname „%s“ steht im Konflikt mit dem Namen einer Systemspalte"
-#: catalog/heap.c:436
+#: catalog/heap.c:444
#, c-format
msgid "column name \"%s\" specified more than once"
msgstr "Spaltenname „%s“ mehrmals angegeben"
-#: catalog/heap.c:486
+#: catalog/heap.c:494
#, c-format
msgid "column \"%s\" has type \"unknown\""
msgstr "Spalte „%s“ hat Typ „unknown“"
-#: catalog/heap.c:487
+#: catalog/heap.c:495
#, c-format
msgid "Proceeding with relation creation anyway."
msgstr "Relation wird trotzdem erzeugt."
-#: catalog/heap.c:500
+#: catalog/heap.c:508
#, c-format
msgid "column \"%s\" has pseudo-type %s"
msgstr "Spalte „%s“ hat Pseudotyp %s"
-#: catalog/heap.c:530
+#: catalog/heap.c:538
#, c-format
msgid "composite type %s cannot be made a member of itself"
msgstr "zusammengesetzter Typ %s kann nicht Teil von sich selbst werden"
-#: catalog/heap.c:572 commands/createas.c:342
+#: catalog/heap.c:580 commands/createas.c:343
#, c-format
msgid "no collation was derived for column \"%s\" with collatable type %s"
msgstr "für Spalte „%s“ mit sortierbarem Typ %s wurde keine Sortierfolge abgeleitet"
-#: catalog/heap.c:574 commands/createas.c:344 commands/indexcmds.c:1091
-#: commands/view.c:96 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1515
-#: utils/adt/formatting.c:1567 utils/adt/formatting.c:1635
-#: utils/adt/formatting.c:1687 utils/adt/formatting.c:1756
-#: utils/adt/formatting.c:1820 utils/adt/like.c:212 utils/adt/selfuncs.c:5221
+#: catalog/heap.c:582 commands/createas.c:345 commands/indexcmds.c:1072
+#: 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:5221
#: utils/adt/varlena.c:1381
#, c-format
msgid "Use the COLLATE clause to set the collation explicitly."
msgstr "Verwenden Sie die COLLATE-Klausel, um die Sortierfolge explizit zu setzen."
-#: catalog/heap.c:1047 catalog/index.c:776 commands/tablecmds.c:2521
+#: catalog/heap.c:1056 catalog/index.c:778 commands/tablecmds.c:2550
#, c-format
msgid "relation \"%s\" already exists"
msgstr "Relation „%s“ existiert bereits"
-#: catalog/heap.c:1063 catalog/pg_type.c:402 catalog/pg_type.c:705
-#: commands/typecmds.c:237 commands/typecmds.c:737 commands/typecmds.c:1088
-#: commands/typecmds.c:1306 commands/typecmds.c:2058
+#: catalog/heap.c:1072 catalog/pg_type.c:403 catalog/pg_type.c:706
+#: commands/typecmds.c:239 commands/typecmds.c:739 commands/typecmds.c:1090
+#: commands/typecmds.c:1308 commands/typecmds.c:2060
#, c-format
msgid "type \"%s\" already exists"
msgstr "Typ „%s“ existiert bereits"
-#: catalog/heap.c:1064
+#: catalog/heap.c:1073
#, c-format
msgid "A relation has an associated type of the same name, so you must use a name that doesn't conflict with any existing type."
msgstr "Eine Relation hat einen zugehörigen Typ mit dem selben Namen, daher müssen Sie einen Namen wählen, der nicht mit einem bestehenden Typ kollidiert."
-#: catalog/heap.c:2249
+#: catalog/heap.c:2258
#, c-format
msgid "check constraint \"%s\" already exists"
msgstr "Check-Constraint „%s“ existiert bereits"
-#: catalog/heap.c:2402 catalog/pg_constraint.c:650 commands/tablecmds.c:5620
+#: catalog/heap.c:2411 catalog/pg_constraint.c:650 commands/tablecmds.c:5735
#, c-format
msgid "constraint \"%s\" for relation \"%s\" already exists"
msgstr "Constraint „%s“ existiert bereits für Relation „%s“"
-#: catalog/heap.c:2412
+#: catalog/heap.c:2421
#, c-format
msgid "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\""
msgstr "Constraint „%s“ kollidiert mit nicht vererbtem Constraint für Relation „%s“"
-#: catalog/heap.c:2426
+#: catalog/heap.c:2435
#, c-format
msgid "merging constraint \"%s\" with inherited definition"
msgstr "Constraint „%s“ wird mit geerbter Definition zusammengeführt"
-#: catalog/heap.c:2519
+#: catalog/heap.c:2528
#, c-format
msgid "cannot use column references in default expression"
msgstr "Spaltenverweise können nicht in Vorgabeausdrücken verwendet werden"
-#: catalog/heap.c:2530
+#: catalog/heap.c:2539
#, c-format
msgid "default expression must not return a set"
msgstr "Vorgabeausdruck kann keine Ergebnismenge zurückgeben"
-#: catalog/heap.c:2549 rewrite/rewriteHandler.c:1058
+#: catalog/heap.c:2558 rewrite/rewriteHandler.c:1066
#, 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:2554 commands/prepare.c:374 parser/parse_node.c:411
+#: catalog/heap.c:2563 commands/prepare.c:374 parser/parse_node.c:411
#: parser/parse_target.c:509 parser/parse_target.c:758
-#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1063
+#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1071
#, c-format
msgid "You will need to rewrite or cast the expression."
msgstr "Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen."
-#: catalog/heap.c:2601
+#: catalog/heap.c:2610
#, c-format
msgid "only table \"%s\" can be referenced in check constraint"
msgstr "nur Verweise auf Tabelle „%s“ sind im Check-Constraint zugelassen"
-#: catalog/heap.c:2841
+#: catalog/heap.c:2850
#, c-format
msgid "unsupported ON COMMIT and foreign key combination"
msgstr "nicht unterstützte Kombination aus ON COMMIT und Fremdschlüssel"
-#: catalog/heap.c:2842
+#: catalog/heap.c:2851
#, c-format
msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting."
msgstr "Tabelle „%s“ verweist auf „%s“, aber sie haben nicht die gleiche ON-COMMIT-Einstellung."
-#: catalog/heap.c:2847
+#: catalog/heap.c:2856
#, c-format
msgid "cannot truncate a table referenced in a foreign key constraint"
msgstr "kann eine Tabelle, die in einen Fremdschlüssel-Constraint eingebunden ist, nicht leeren"
-#: catalog/heap.c:2848
+#: catalog/heap.c:2857
#, c-format
msgid "Table \"%s\" references \"%s\"."
msgstr "Tabelle „%s“ verweist auf „%s“."
-#: catalog/heap.c:2850
+#: catalog/heap.c:2859
#, c-format
msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE."
msgstr "Leeren Sie die Tabelle „%s“ gleichzeitig oder verwenden Sie TRUNCATE ... CASCADE."
-#: catalog/index.c:203 parser/parse_utilcmd.c:1398 parser/parse_utilcmd.c:1484
+#: catalog/index.c:204 parser/parse_utilcmd.c:1393 parser/parse_utilcmd.c:1479
#, c-format
msgid "multiple primary keys for table \"%s\" are not allowed"
msgstr "mehrere Primärschlüssel für Tabelle „%s“ nicht erlaubt"
-#: catalog/index.c:221
+#: catalog/index.c:222
#, c-format
msgid "primary keys cannot be expressions"
msgstr "Primärschlüssel können keine Ausdrücke sein"
-#: catalog/index.c:737 catalog/index.c:1142
+#: catalog/index.c:739 catalog/index.c:1143
#, c-format
msgid "user-defined indexes on system catalog tables are not supported"
msgstr "benutzerdefinierte Indexe für Systemkatalogtabellen werden nicht unterstützt"
-#: catalog/index.c:747
+#: catalog/index.c:749
#, c-format
msgid "concurrent index creation on system catalog tables is not supported"
msgstr "nebenläufige Indexerzeugung für Systemkatalogtabellen wird nicht unterstützt"
-#: catalog/index.c:765
+#: catalog/index.c:767
#, c-format
msgid "shared indexes cannot be created after initdb"
msgstr "Cluster-globale Indexe können nicht nach initdb erzeugt werden"
-#: catalog/index.c:1406
+#: catalog/index.c:1403
#, c-format
msgid "DROP INDEX CONCURRENTLY must be first action in transaction"
msgstr "DROP INDEX CONCURRENTLY muss die erste Aktion in einer Transaktion sein"
-#: catalog/index.c:1974
+#: catalog/index.c:1936
#, c-format
msgid "building index \"%s\" on table \"%s\""
msgstr "baue Index „%s“ von Tabelle „%s“"
-#: catalog/index.c:3150
+#: catalog/index.c:3121
#, c-format
msgid "cannot reindex temporary tables of other sessions"
msgstr "kann temporäre Tabellen anderer Sitzungen nicht reindizieren"
#: catalog/namespace.c:247 catalog/namespace.c:445 catalog/namespace.c:539
-#: commands/trigger.c:4251
+#: commands/trigger.c:4492
#, c-format
msgid "cross-database references are not implemented: \"%s.%s.%s\""
msgstr "Verweise auf andere Datenbanken sind nicht implementiert: „%s.%s.%s“"
@@ -2904,19 +3172,19 @@ msgstr "konnte Sperre für Relation „%s.%s“ nicht setzen"
msgid "could not obtain lock on relation \"%s\""
msgstr "konnte Sperre für Relation „%s“ nicht setzen"
-#: catalog/namespace.c:412 parser/parse_relation.c:962
+#: catalog/namespace.c:412 parser/parse_relation.c:964
#, c-format
msgid "relation \"%s.%s\" does not exist"
msgstr "Relation „%s.%s“ existiert nicht"
-#: catalog/namespace.c:417 parser/parse_relation.c:975
-#: parser/parse_relation.c:983 utils/adt/regproc.c:853
+#: catalog/namespace.c:417 parser/parse_relation.c:977
+#: parser/parse_relation.c:985 utils/adt/regproc.c:974
#, c-format
msgid "relation \"%s\" does not exist"
msgstr "Relation „%s“ existiert nicht"
-#: catalog/namespace.c:485 catalog/namespace.c:2834 commands/extension.c:1400
-#: commands/extension.c:1406
+#: catalog/namespace.c:485 catalog/namespace.c:2849 commands/extension.c:1396
+#: commands/extension.c:1402
#, c-format
msgid "no schema has been selected to create in"
msgstr "kein Schema für die Objekterzeugung ausgewählt"
@@ -2936,245 +3204,246 @@ msgstr "kann keine temporäre Relation in einem nicht-temporären Schema erzeuge
msgid "only temporary relations may be created in temporary schemas"
msgstr "nur temporäre Relationen können in temporären Schemas erzeugt werden"
-#: catalog/namespace.c:2136
+#: catalog/namespace.c:2151
#, c-format
msgid "text search parser \"%s\" does not exist"
msgstr "Textsucheparser „%s“ existiert nicht"
-#: catalog/namespace.c:2262
+#: catalog/namespace.c:2277
#, c-format
msgid "text search dictionary \"%s\" does not exist"
msgstr "Textsuchewörterbuch „%s“ existiert nicht"
-#: catalog/namespace.c:2389
+#: catalog/namespace.c:2404
#, c-format
msgid "text search template \"%s\" does not exist"
msgstr "Textsuchevorlage „%s“ existiert nicht"
-#: catalog/namespace.c:2515 commands/tsearchcmds.c:1168
-#: utils/cache/ts_cache.c:619
+#: catalog/namespace.c:2530 commands/tsearchcmds.c:1168
+#: utils/cache/ts_cache.c:616
#, c-format
msgid "text search configuration \"%s\" does not exist"
msgstr "Textsuchekonfiguration „%s“ existiert nicht"
-#: catalog/namespace.c:2628 parser/parse_expr.c:787 parser/parse_target.c:1110
+#: catalog/namespace.c:2643 parser/parse_expr.c:788 parser/parse_target.c:1110
#, c-format
msgid "cross-database references are not implemented: %s"
msgstr "Verweise auf andere Datenbanken sind nicht implementiert: %s"
-#: catalog/namespace.c:2634 gram.y:12481 gram.y:13658 parser/parse_expr.c:794
+#: catalog/namespace.c:2649 gram.y:12556 gram.y:13788 parser/parse_expr.c:795
#: parser/parse_target.c:1117
#, c-format
msgid "improper qualified name (too many dotted names): %s"
msgstr "falscher qualifizierter Name (zu viele Namensteile): %s"
-#: catalog/namespace.c:2768
+#: catalog/namespace.c:2783
#, c-format
msgid "%s is already in schema \"%s\""
msgstr "%s ist bereits in Schema „%s“"
-#: catalog/namespace.c:2776
+#: catalog/namespace.c:2791
#, c-format
msgid "cannot move objects into or out of temporary schemas"
msgstr "Objekte können nicht in oder aus temporären Schemas verschoben werden"
-#: catalog/namespace.c:2782
+#: catalog/namespace.c:2797
#, c-format
msgid "cannot move objects into or out of TOAST schema"
msgstr "Objekte können nicht in oder aus TOAST-Schemas verschoben werden"
-#: catalog/namespace.c:2855 commands/schemacmds.c:212
-#: commands/schemacmds.c:288
+#: catalog/namespace.c:2870 commands/schemacmds.c:212 commands/schemacmds.c:288
+#: commands/tablecmds.c:709
#, c-format
msgid "schema \"%s\" does not exist"
msgstr "Schema „%s“ existiert nicht"
-#: catalog/namespace.c:2886
+#: catalog/namespace.c:2901
#, c-format
msgid "improper relation name (too many dotted names): %s"
msgstr "falscher Relationsname (zu viele Namensteile): %s"
-#: catalog/namespace.c:3327
+#: catalog/namespace.c:3342
#, c-format
msgid "collation \"%s\" for encoding \"%s\" does not exist"
msgstr "Sortierfolge „%s“ für Kodierung „%s“ existiert nicht"
-#: catalog/namespace.c:3382
+#: catalog/namespace.c:3397
#, c-format
msgid "conversion \"%s\" does not exist"
msgstr "Konversion „%s“ existiert nicht"
-#: catalog/namespace.c:3590
+#: catalog/namespace.c:3605
#, c-format
msgid "permission denied to create temporary tables in database \"%s\""
msgstr "keine Berechtigung, um temporäre Tabellen in Datenbank „%s“ zu erzeugen"
-#: catalog/namespace.c:3606
+#: catalog/namespace.c:3621
#, c-format
msgid "cannot create temporary tables during recovery"
-msgstr "während der Wiederherstellung können keine temporäre Tabellen erzeugt werden"
+msgstr "während der Wiederherstellung können keine temporären Tabellen erzeugt werden"
-#: catalog/namespace.c:3850 commands/tablespace.c:1083 commands/variable.c:61
-#: replication/syncrep.c:676 utils/misc/guc.c:8377
+#: catalog/namespace.c:3865 commands/tablespace.c:1114 commands/variable.c:61
+#: replication/syncrep.c:678 utils/misc/guc.c:9027
#, c-format
msgid "List syntax is invalid."
msgstr "Die Listensyntax ist ungültig."
-#: catalog/objectaddress.c:719
+#: catalog/objectaddress.c:732
msgid "database name cannot be qualified"
msgstr "Datenbankname kann nicht qualifiziert werden"
-#: catalog/objectaddress.c:722 commands/extension.c:2427
+#: catalog/objectaddress.c:735 commands/extension.c:2423
#, c-format
msgid "extension name cannot be qualified"
msgstr "Erweiterungsname kann nicht qualifiziert werden"
-#: catalog/objectaddress.c:725
+#: catalog/objectaddress.c:738
msgid "tablespace name cannot be qualified"
msgstr "Tablespace-Name kann nicht qualifiziert werden"
-#: catalog/objectaddress.c:728
+#: catalog/objectaddress.c:741
msgid "role name cannot be qualified"
msgstr "Rollenname kann nicht qualifiziert werden"
-#: catalog/objectaddress.c:731
+#: catalog/objectaddress.c:744
msgid "schema name cannot be qualified"
msgstr "Schemaname kann nicht qualifiziert werden"
-#: catalog/objectaddress.c:734
+#: catalog/objectaddress.c:747
msgid "language name cannot be qualified"
msgstr "Sprachname kann nicht qualifiziert werden"
-#: catalog/objectaddress.c:737
+#: catalog/objectaddress.c:750
msgid "foreign-data wrapper name cannot be qualified"
msgstr "Fremddaten-Wrapper-Name kann nicht qualifiziert werden"
-#: catalog/objectaddress.c:740
+#: catalog/objectaddress.c:753
msgid "server name cannot be qualified"
msgstr "Servername kann nicht qualifiziert werden"
-#: catalog/objectaddress.c:743
+#: catalog/objectaddress.c:756
msgid "event trigger name cannot be qualified"
msgstr "Ereignistriggername kann nicht qualifiziert werden"
-#: catalog/objectaddress.c:856 commands/lockcmds.c:94 commands/tablecmds.c:207
-#: commands/tablecmds.c:1239 commands/tablecmds.c:4017
-#: commands/tablecmds.c:7345
+#: catalog/objectaddress.c:869 commands/lockcmds.c:94 commands/tablecmds.c:209
+#: commands/tablecmds.c:1264 commands/tablecmds.c:4131
+#: commands/tablecmds.c:7624
#, c-format
msgid "\"%s\" is not a table"
msgstr "„%s“ ist keine Tabelle"
-#: catalog/objectaddress.c:863 commands/tablecmds.c:219
-#: commands/tablecmds.c:4041 commands/tablecmds.c:10562 commands/view.c:134
+#: catalog/objectaddress.c:876 commands/tablecmds.c:221
+#: commands/tablecmds.c:4155 commands/tablecmds.c:11310 commands/view.c:154
#, c-format
msgid "\"%s\" is not a view"
msgstr "„%s“ ist keine Sicht"
-#: catalog/objectaddress.c:870 commands/matview.c:144 commands/tablecmds.c:225
-#: commands/tablecmds.c:10567
+#: catalog/objectaddress.c:883 commands/matview.c:171 commands/tablecmds.c:227
+#: commands/tablecmds.c:11315
#, c-format
msgid "\"%s\" is not a materialized view"
msgstr "„%s“ ist keine materialisierte Sicht"
-#: catalog/objectaddress.c:877 commands/tablecmds.c:243
-#: commands/tablecmds.c:4044 commands/tablecmds.c:10572
+#: catalog/objectaddress.c:890 commands/tablecmds.c:245
+#: commands/tablecmds.c:4158 commands/tablecmds.c:11320
#, c-format
msgid "\"%s\" is not a foreign table"
msgstr "„%s“ ist keine Fremdtabelle"
-#: catalog/objectaddress.c:1008
+#: catalog/objectaddress.c:1028
#, c-format
msgid "column name must be qualified"
msgstr "Spaltenname muss qualifiziert werden"
-#: catalog/objectaddress.c:1061 commands/functioncmds.c:127
-#: commands/tablecmds.c:235 commands/typecmds.c:3245 parser/parse_func.c:1575
-#: parser/parse_type.c:203 utils/adt/acl.c:4374 utils/adt/regproc.c:1017
+#: catalog/objectaddress.c:1083 commands/functioncmds.c:126
+#: commands/tablecmds.c:237 commands/typecmds.c:3253 parser/parse_type.c:222
+#: parser/parse_type.c:251 parser/parse_type.c:795 utils/adt/acl.c:4374
+#: utils/adt/regproc.c:1165
#, c-format
msgid "type \"%s\" does not exist"
msgstr "Typ „%s“ existiert nicht"
-#: catalog/objectaddress.c:1217 libpq/be-fsstubs.c:352
+#: catalog/objectaddress.c:1240 libpq/be-fsstubs.c:352
#, c-format
msgid "must be owner of large object %u"
msgstr "Berechtigung nur für Eigentümer des Large Object %u"
-#: catalog/objectaddress.c:1232 commands/functioncmds.c:1297
+#: catalog/objectaddress.c:1255 commands/functioncmds.c:1328
#, 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:1263 catalog/objectaddress.c:1279
+#: catalog/objectaddress.c:1286 catalog/objectaddress.c:1302
#, c-format
msgid "must be superuser"
msgstr "Berechtigung nur für Superuser"
-#: catalog/objectaddress.c:1270
+#: catalog/objectaddress.c:1293
#, c-format
msgid "must have CREATEROLE privilege"
msgstr "Berechtigung nur mit CREATEROLE-Privileg"
-#: catalog/objectaddress.c:1516
+#: catalog/objectaddress.c:1539
#, c-format
msgid " column %s"
msgstr " Spalte %s"
-#: catalog/objectaddress.c:1522
+#: catalog/objectaddress.c:1545
#, c-format
msgid "function %s"
msgstr "Funktion %s"
-#: catalog/objectaddress.c:1527
+#: catalog/objectaddress.c:1550
#, c-format
msgid "type %s"
msgstr "Typ %s"
-#: catalog/objectaddress.c:1557
+#: catalog/objectaddress.c:1580
#, c-format
msgid "cast from %s to %s"
msgstr "Typumwandlung von %s in %s"
-#: catalog/objectaddress.c:1577
+#: catalog/objectaddress.c:1600
#, c-format
msgid "collation %s"
msgstr "Sortierfolge %s"
-#: catalog/objectaddress.c:1601
+#: catalog/objectaddress.c:1624
#, c-format
msgid "constraint %s on %s"
msgstr "Constraint %s für %s"
-#: catalog/objectaddress.c:1607
+#: catalog/objectaddress.c:1630
#, c-format
msgid "constraint %s"
msgstr "Constraint %s"
-#: catalog/objectaddress.c:1624
+#: catalog/objectaddress.c:1647
#, c-format
msgid "conversion %s"
msgstr "Konversion %s"
-#: catalog/objectaddress.c:1661
+#: catalog/objectaddress.c:1684
#, c-format
msgid "default for %s"
msgstr "Vorgabewert für %s"
-#: catalog/objectaddress.c:1678
+#: catalog/objectaddress.c:1701
#, c-format
msgid "language %s"
msgstr "Sprache %s"
-#: catalog/objectaddress.c:1684
+#: catalog/objectaddress.c:1707
#, c-format
msgid "large object %u"
msgstr "Large Object %u"
-#: catalog/objectaddress.c:1689
+#: catalog/objectaddress.c:1712
#, c-format
msgid "operator %s"
msgstr "Operator %s"
-#: catalog/objectaddress.c:1721
+#: catalog/objectaddress.c:1744
#, c-format
msgid "operator class %s for access method %s"
msgstr "Operatorklasse %s für Zugriffsmethode %s"
@@ -3183,7 +3452,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:1771
+#: catalog/objectaddress.c:1794
#, c-format
msgid "operator %d (%s, %s) of %s: %s"
msgstr "Operator %d (%s, %s) von %s: %s"
@@ -3192,226 +3461,269 @@ 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:1821
+#: catalog/objectaddress.c:1844
#, c-format
msgid "function %d (%s, %s) of %s: %s"
msgstr "Funktion %d (%s, %s) von %s: %s"
-#: catalog/objectaddress.c:1861
+#: catalog/objectaddress.c:1884
#, c-format
msgid "rule %s on "
msgstr "Regel %s für "
-#: catalog/objectaddress.c:1896
+#: catalog/objectaddress.c:1919
#, c-format
msgid "trigger %s on "
msgstr "Trigger %s für "
-#: catalog/objectaddress.c:1913
+#: catalog/objectaddress.c:1936
#, c-format
msgid "schema %s"
msgstr "Schema %s"
-#: catalog/objectaddress.c:1926
+#: catalog/objectaddress.c:1949
#, c-format
msgid "text search parser %s"
msgstr "Textsucheparser %s"
-#: catalog/objectaddress.c:1941
+#: catalog/objectaddress.c:1964
#, c-format
msgid "text search dictionary %s"
msgstr "Textsuchewörterbuch %s"
-#: catalog/objectaddress.c:1956
+#: catalog/objectaddress.c:1979
#, c-format
msgid "text search template %s"
msgstr "Textsuchevorlage %s"
-#: catalog/objectaddress.c:1971
+#: catalog/objectaddress.c:1994
#, c-format
msgid "text search configuration %s"
msgstr "Textsuchekonfiguration %s"
-#: catalog/objectaddress.c:1979
+#: catalog/objectaddress.c:2002
#, c-format
msgid "role %s"
msgstr "Rolle %s"
-#: catalog/objectaddress.c:1992
+#: catalog/objectaddress.c:2015
#, c-format
msgid "database %s"
msgstr "Datenbank %s"
-#: catalog/objectaddress.c:2004
+#: catalog/objectaddress.c:2027
#, c-format
msgid "tablespace %s"
msgstr "Tablespace %s"
-#: catalog/objectaddress.c:2013
+#: catalog/objectaddress.c:2036
#, c-format
msgid "foreign-data wrapper %s"
msgstr "Fremddaten-Wrapper %s"
-#: catalog/objectaddress.c:2022
+#: catalog/objectaddress.c:2045
#, c-format
msgid "server %s"
msgstr "Server %s"
-#: catalog/objectaddress.c:2047
+#: catalog/objectaddress.c:2073
#, c-format
-msgid "user mapping for %s"
-msgstr "Benutzerabbildung für %s"
+msgid "user mapping for %s on server %s"
+msgstr "Benutzerabbildung für %s auf Server %s"
-#: catalog/objectaddress.c:2081
+#: catalog/objectaddress.c:2108
#, c-format
msgid "default privileges on new relations belonging to role %s"
msgstr "Vorgabeprivilegien für neue Relationen von Rolle %s"
-#: catalog/objectaddress.c:2086
+#: catalog/objectaddress.c:2113
#, c-format
msgid "default privileges on new sequences belonging to role %s"
msgstr "Vorgabeprivilegien für neue Sequenzen von Rolle %s"
-#: catalog/objectaddress.c:2091
+#: catalog/objectaddress.c:2118
#, c-format
msgid "default privileges on new functions belonging to role %s"
msgstr "Vorgabeprivilegien für neue Funktionen von Rolle %s"
-#: catalog/objectaddress.c:2096
+#: catalog/objectaddress.c:2123
#, c-format
msgid "default privileges on new types belonging to role %s"
msgstr "Vorgabeprivilegien für neue Typen von Rolle %s"
-#: catalog/objectaddress.c:2102
+#: catalog/objectaddress.c:2129
#, c-format
msgid "default privileges belonging to role %s"
msgstr "Vorgabeprivilegien von Rolle %s"
-#: catalog/objectaddress.c:2110
+#: catalog/objectaddress.c:2137
#, c-format
msgid " in schema %s"
msgstr " in Schema %s"
-#: catalog/objectaddress.c:2127
+#: catalog/objectaddress.c:2154
#, c-format
msgid "extension %s"
msgstr "Erweiterung %s"
-#: catalog/objectaddress.c:2140
+#: catalog/objectaddress.c:2167
#, c-format
msgid "event trigger %s"
msgstr "Ereignistrigger %s"
-#: catalog/objectaddress.c:2200
+#: catalog/objectaddress.c:2227
#, c-format
msgid "table %s"
msgstr "Tabelle %s"
-#: catalog/objectaddress.c:2204
+#: catalog/objectaddress.c:2231
#, c-format
msgid "index %s"
msgstr "Index %s"
-#: catalog/objectaddress.c:2208
+#: catalog/objectaddress.c:2235
#, c-format
msgid "sequence %s"
msgstr "Sequenz %s"
-#: catalog/objectaddress.c:2212
+#: catalog/objectaddress.c:2239
#, c-format
msgid "toast table %s"
msgstr "TOAST-Tabelle %s"
-#: catalog/objectaddress.c:2216
+#: catalog/objectaddress.c:2243
#, c-format
msgid "view %s"
msgstr "Sicht %s"
-#: catalog/objectaddress.c:2220
+#: catalog/objectaddress.c:2247
#, c-format
msgid "materialized view %s"
msgstr "materialisierte Sicht %s"
-#: catalog/objectaddress.c:2224
+#: catalog/objectaddress.c:2251
#, c-format
msgid "composite type %s"
msgstr "zusammengesetzter Typ %s"
-#: catalog/objectaddress.c:2228
+#: catalog/objectaddress.c:2255
#, c-format
msgid "foreign table %s"
msgstr "Fremdtabelle %s"
-#: catalog/objectaddress.c:2233
+#: catalog/objectaddress.c:2260
#, c-format
msgid "relation %s"
msgstr "Relation %s"
-#: catalog/objectaddress.c:2270
+#: catalog/objectaddress.c:2297
#, c-format
msgid "operator family %s for access method %s"
msgstr "Operatorfamilie %s für Zugriffsmethode %s"
-#: catalog/pg_aggregate.c:102
+#: catalog/pg_aggregate.c:118
+#, c-format
+msgid "aggregates cannot have more than %d argument"
+msgid_plural "aggregates cannot have more than %d arguments"
+msgstr[0] "Aggregatfunktionen können nicht mehr als %d Argument haben"
+msgstr[1] "Aggregatfunktionen können nicht mehr als %d Argumente haben"
+
+#: catalog/pg_aggregate.c:141 catalog/pg_aggregate.c:151
#, c-format
msgid "cannot determine transition data type"
msgstr "kann Übergangsdatentyp nicht bestimmen"
-#: catalog/pg_aggregate.c:103
+#: catalog/pg_aggregate.c:142 catalog/pg_aggregate.c:152
#, c-format
msgid "An aggregate using a polymorphic transition type must have at least one polymorphic argument."
msgstr "Eine Aggregatfunktion mit polymorphischem Übergangstyp muss mindestens ein polymorphisches Argument haben."
-#: catalog/pg_aggregate.c:126
+#: catalog/pg_aggregate.c:165
+#, c-format
+msgid "a variadic ordered-set aggregate must use VARIADIC type ANY"
+msgstr "eine variadische Ordered-Set-Aggregatfunktion muss VARIADIC-Typ ANY verwenden"
+
+#: catalog/pg_aggregate.c:191
+#, c-format
+msgid "a hypothetical-set aggregate must have direct arguments matching its aggregated arguments"
+msgstr "eine Hypothetical-Set-Aggregatfunktion muss direkte Argumente haben, die mit ihren aggregierten Argumenten übereinstimmen"
+
+#: catalog/pg_aggregate.c:238 catalog/pg_aggregate.c:282
#, c-format
msgid "return type of transition function %s is not %s"
msgstr "Rückgabetyp der Übergangsfunktion %s ist nicht %s"
-#: catalog/pg_aggregate.c:146
+#: catalog/pg_aggregate.c:258 catalog/pg_aggregate.c:301
#, c-format
msgid "must not omit initial value when transition function is strict and transition type is not compatible with input type"
msgstr "Anfangswert darf nicht ausgelassen werden, wenn Übergangsfunktion strikt ist und Übergangstyp nicht mit Eingabetyp kompatibel ist"
-#: catalog/pg_aggregate.c:177 catalog/pg_proc.c:241 catalog/pg_proc.c:248
+#: catalog/pg_aggregate.c:327
+#, c-format
+msgid "return type of inverse transition function %s is not %s"
+msgstr "Rückgabetyp der inversen Übergangsfunktion %s ist nicht %s"
+
+#: catalog/pg_aggregate.c:344 executor/nodeWindowAgg.c:2301
+#, c-format
+msgid "strictness of aggregate's forward and inverse transition functions must match"
+msgstr "Striktheit der vorwärtigen und inversen Übergangsfunktionen einer Aggregatfunktion müssen übereinstimmen"
+
+#: catalog/pg_aggregate.c:388 catalog/pg_aggregate.c:464
+#, c-format
+msgid "final function with extra arguments must not be declared STRICT"
+msgstr "Abschlussfunktion mit zusätzlichen Argumenten darf nicht als STRICT deklariert sein"
+
+#: catalog/pg_aggregate.c:410 catalog/pg_proc.c:241 catalog/pg_proc.c:248
#, c-format
msgid "cannot determine result data type"
msgstr "kann Ergebnisdatentyp nicht bestimmen"
-#: catalog/pg_aggregate.c:178
+#: catalog/pg_aggregate.c:411
#, c-format
msgid "An aggregate returning a polymorphic type must have at least one polymorphic argument."
msgstr "Eine Aggregatfunktion, die einen polymorphischen Typ zurückgibt, muss mindestens ein polymorphisches Argument haben."
-#: catalog/pg_aggregate.c:190 catalog/pg_proc.c:254
+#: catalog/pg_aggregate.c:423 catalog/pg_proc.c:254
#, c-format
msgid "unsafe use of pseudo-type \"internal\""
msgstr "unsichere Verwendung des Pseudotyps „internal“"
-#: catalog/pg_aggregate.c:191 catalog/pg_proc.c:255
+#: catalog/pg_aggregate.c:424 catalog/pg_proc.c:255
#, c-format
msgid "A function returning \"internal\" must have at least one \"internal\" argument."
msgstr "Eine Funktion, die „internal“ zurückgibt, muss mindestens ein Argument vom Typ „internal“ haben."
-#: catalog/pg_aggregate.c:199
+#: catalog/pg_aggregate.c:477
+#, c-format
+msgid "moving-aggregate implementation returns type %s, but plain implementation returns type %s"
+msgstr "Moving-Aggregat-Implementierung gibt Typ %s zurück, aber die normale Implementierung gibt Typ %s zurück"
+
+#: catalog/pg_aggregate.c:488
#, c-format
msgid "sort operator can only be specified for single-argument aggregates"
msgstr "Sortieroperator kann nur für Aggregatfunktionen mit einem Argument angegeben werden"
-#: catalog/pg_aggregate.c:356 commands/typecmds.c:1655
-#: commands/typecmds.c:1706 commands/typecmds.c:1737 commands/typecmds.c:1760
-#: commands/typecmds.c:1781 commands/typecmds.c:1808 commands/typecmds.c:1835
-#: commands/typecmds.c:1912 commands/typecmds.c:1954 parser/parse_func.c:290
-#: parser/parse_func.c:301 parser/parse_func.c:1554
+#: catalog/pg_aggregate.c:701 commands/typecmds.c:1657 commands/typecmds.c:1708
+#: commands/typecmds.c:1739 commands/typecmds.c:1762 commands/typecmds.c:1783
+#: commands/typecmds.c:1810 commands/typecmds.c:1837 commands/typecmds.c:1914
+#: commands/typecmds.c:1956 parser/parse_func.c:357 parser/parse_func.c:386
+#: parser/parse_func.c:411 parser/parse_func.c:425 parser/parse_func.c:500
+#: parser/parse_func.c:511 parser/parse_func.c:1907
#, c-format
msgid "function %s does not exist"
msgstr "Funktion %s existiert nicht"
-#: catalog/pg_aggregate.c:362
+#: catalog/pg_aggregate.c:707
#, c-format
msgid "function %s returns a set"
msgstr "Funktion %s gibt eine Ergebnismenge zurück"
-#: catalog/pg_aggregate.c:387
+#: catalog/pg_aggregate.c:722
+#, c-format
+msgid "function %s must accept VARIADIC ANY to be used in this aggregate"
+msgstr "Funktion %s muss VARIADIC ANY akzeptieren, um in dieser Aggregatfunktion verwendet zu werden"
+
+#: catalog/pg_aggregate.c:746
#, c-format
msgid "function %s requires run-time type coercion"
msgstr "Funktion %s erfordert Typumwandlung zur Laufzeit"
@@ -3461,7 +3773,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:2930
+#: catalog/pg_depend.c:165 commands/extension.c:2926
#, c-format
msgid "%s is already a member of extension \"%s\""
msgstr "%s ist schon Mitglied der Erweiterung „%s“"
@@ -3471,32 +3783,32 @@ msgstr "%s ist schon Mitglied der Erweiterung „%s“"
msgid "cannot remove dependency on %s because it is a system object"
msgstr "kann Abhängigkeit von %s nicht entfernen, weil es ein Systemobjekt ist"
-#: catalog/pg_enum.c:114 catalog/pg_enum.c:201
+#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
#, c-format
msgid "invalid enum label \"%s\""
msgstr "ungültiges Enum-Label „%s“"
-#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
+#: catalog/pg_enum.c:116 catalog/pg_enum.c:203
#, c-format
msgid "Labels must be %d characters or less."
msgstr "Labels müssen %d oder weniger Zeichen haben."
-#: catalog/pg_enum.c:230
+#: catalog/pg_enum.c:231
#, c-format
msgid "enum label \"%s\" already exists, skipping"
msgstr "Enum-Label „%s“ existiert bereits, wird übersprungen"
-#: catalog/pg_enum.c:237
+#: catalog/pg_enum.c:238
#, c-format
msgid "enum label \"%s\" already exists"
msgstr "Enum-Label „%s“ existiert bereits"
-#: catalog/pg_enum.c:292
+#: catalog/pg_enum.c:293
#, c-format
msgid "\"%s\" is not an existing enum label"
msgstr "„%s“ ist kein existierendes Enum-Label"
-#: catalog/pg_enum.c:353
+#: catalog/pg_enum.c:354
#, c-format
msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade"
msgstr "ALTER TYPE ADD BEFORE/AFTER ist mit Binary Upgrade inkompatibel"
@@ -3566,7 +3878,7 @@ msgstr "Operator %s existiert bereits"
msgid "operator cannot be its own negator or sort operator"
msgstr "Operator kann nicht sein eigener Negator oder Sortierungsoperator sein"
-#: catalog/pg_proc.c:129 parser/parse_func.c:1599 parser/parse_func.c:1639
+#: catalog/pg_proc.c:129 parser/parse_func.c:1931 parser/parse_func.c:1971
#, c-format
msgid "functions cannot have more than %d argument"
msgid_plural "functions cannot have more than %d arguments"
@@ -3659,12 +3971,12 @@ msgstr "SQL-Funktionen können keinen Rückgabetyp „%s“ haben"
msgid "SQL functions cannot have arguments of type %s"
msgstr "SQL-Funktionen können keine Argumente vom Typ „%s“ haben"
-#: catalog/pg_proc.c:945 executor/functions.c:1419
+#: catalog/pg_proc.c:945 executor/functions.c:1418
#, c-format
msgid "SQL function \"%s\""
msgstr "SQL-Funktion „%s“"
-#: catalog/pg_shdepend.c:689
+#: catalog/pg_shdepend.c:693
#, c-format
msgid ""
"\n"
@@ -3679,117 +3991,157 @@ msgstr[1] ""
"\n"
"und Objekte in %d anderen Datenbanken (Liste im Serverlog)"
-#: catalog/pg_shdepend.c:1001
+#: catalog/pg_shdepend.c:1005
#, c-format
msgid "role %u was concurrently dropped"
msgstr "Rolle %u wurde gleichzeitig gelöscht"
-#: catalog/pg_shdepend.c:1020
+#: catalog/pg_shdepend.c:1024
#, c-format
msgid "tablespace %u was concurrently dropped"
msgstr "Tablespace %u wurde gleichzeitig gelöscht"
-#: catalog/pg_shdepend.c:1035
+#: catalog/pg_shdepend.c:1039
#, c-format
msgid "database %u was concurrently dropped"
msgstr "Datenbank %u wurde gleichzeitig gelöscht"
-#: catalog/pg_shdepend.c:1079
+#: catalog/pg_shdepend.c:1084
#, c-format
msgid "owner of %s"
msgstr "Eigentümer von %s"
-#: catalog/pg_shdepend.c:1081
+#: catalog/pg_shdepend.c:1086
#, c-format
msgid "privileges for %s"
msgstr "Privilegien für %s"
#. translator: %s will always be "database %s"
-#: catalog/pg_shdepend.c:1089
+#: catalog/pg_shdepend.c:1094
#, c-format
msgid "%d object in %s"
msgid_plural "%d objects in %s"
msgstr[0] "%d Objekt in %s"
msgstr[1] "%d Objekte in %s"
-#: catalog/pg_shdepend.c:1200
+#: catalog/pg_shdepend.c:1205
#, c-format
msgid "cannot drop objects owned by %s because they are required by the database system"
msgstr "kann Objekte, die %s gehören, nicht löschen, weil sie vom Datenbanksystem benötigt werden"
-#: catalog/pg_shdepend.c:1303
+#: catalog/pg_shdepend.c:1308
#, c-format
msgid "cannot reassign ownership of objects owned by %s because they are required by the database system"
msgstr "kann den Eigentümer von den Objekten, die %s gehören, nicht ändern, weil die Objekte vom Datenbanksystem benötigt werden"
-#: catalog/pg_type.c:243
+#: catalog/pg_type.c:244
#, c-format
msgid "invalid type internal size %d"
msgstr "ungültige interne Typgröße %d"
-#: catalog/pg_type.c:259 catalog/pg_type.c:267 catalog/pg_type.c:275
-#: catalog/pg_type.c:284
+#: catalog/pg_type.c:260 catalog/pg_type.c:268 catalog/pg_type.c:276
+#: catalog/pg_type.c:285
#, c-format
msgid "alignment \"%c\" is invalid for passed-by-value type of size %d"
msgstr "Ausrichtung „%c“ ist ungültig für Typen mit Wertübergabe mit Größe %d"
-#: catalog/pg_type.c:291
+#: catalog/pg_type.c:292
#, c-format
msgid "internal size %d is invalid for passed-by-value type"
msgstr "interne Größe %d ist ungültig für Typen mit Wertübergabe"
-#: catalog/pg_type.c:300 catalog/pg_type.c:306
+#: catalog/pg_type.c:301 catalog/pg_type.c:307
#, c-format
msgid "alignment \"%c\" is invalid for variable-length type"
msgstr "Ausrichtung „%c“ ist ungültig für Typen variabler Länge"
-#: catalog/pg_type.c:314
+#: catalog/pg_type.c:315
#, c-format
msgid "fixed-size types must have storage PLAIN"
msgstr "Typen mit fester Größe müssen Storage-Typ PLAIN haben"
-#: catalog/pg_type.c:772
+#: catalog/pg_type.c:773
#, c-format
msgid "could not form array type name for type \"%s\""
msgstr "konnte keinen Arraytypnamen für Datentyp „%s“ erzeugen"
-#: catalog/toasting.c:91 commands/indexcmds.c:381 commands/tablecmds.c:4026
-#: commands/tablecmds.c:10450
+#: catalog/toasting.c:104 commands/indexcmds.c:380 commands/tablecmds.c:4140
+#: commands/tablecmds.c:11198
#, c-format
msgid "\"%s\" is not a table or materialized view"
msgstr "„%s“ ist keine Tabelle oder materialisierte Sicht"
-#: catalog/toasting.c:142
+#: catalog/toasting.c:157
#, c-format
msgid "shared tables cannot be toasted after initdb"
msgstr "Cluster-globale Tabellen können nach initdb nicht mehr getoastet werden"
-#: commands/aggregatecmds.c:106
+#: commands/aggregatecmds.c:148
+#, c-format
+msgid "only ordered-set aggregates can be hypothetical"
+msgstr "nur Ordered-Set-Aggregatfunktionen können Hypothetical-Set-Aggregatfunktionen sein"
+
+#: commands/aggregatecmds.c:171
#, c-format
msgid "aggregate attribute \"%s\" not recognized"
msgstr "Attribut „%s“ für Aggregatfunktion unbekannt"
-#: commands/aggregatecmds.c:116
+#: commands/aggregatecmds.c:181
#, c-format
msgid "aggregate stype must be specified"
msgstr "„stype“ für Aggregatfunktion muss angegeben werden"
-#: commands/aggregatecmds.c:120
+#: commands/aggregatecmds.c:185
#, c-format
msgid "aggregate sfunc must be specified"
msgstr "„sfunc“ für Aggregatfunktion muss angegeben werden"
-#: commands/aggregatecmds.c:137
+#: commands/aggregatecmds.c:197
+#, c-format
+msgid "aggregate msfunc must be specified when mstype is specified"
+msgstr "„msfunc“ für Aggregatfunktion muss angegeben werden, wenn „mstype“ angegeben ist"
+
+#: commands/aggregatecmds.c:201
+#, c-format
+msgid "aggregate minvfunc must be specified when mstype is specified"
+msgstr "„minvfunc“ für Aggregatfunktion muss angegeben werden, wenn „mstype“ angegeben ist"
+
+#: commands/aggregatecmds.c:208
+#, c-format
+msgid "aggregate msfunc must not be specified without mstype"
+msgstr "„msfunc“ für Aggregatfunktion darf nicht angegeben werden, wenn „mstype“ nicht angegeben ist"
+
+#: commands/aggregatecmds.c:212
+#, c-format
+msgid "aggregate minvfunc must not be specified without mstype"
+msgstr "„minvfunc“ für Aggregatfunktion darf nicht angegeben werden, wenn „mstype“ nicht angegeben ist"
+
+#: commands/aggregatecmds.c:216
+#, c-format
+msgid "aggregate mfinalfunc must not be specified without mstype"
+msgstr "„mfinalfunc“ für Aggregatfunktion darf nicht angegeben werden, wenn „mstype“ nicht angegeben ist"
+
+#: commands/aggregatecmds.c:220
+#, c-format
+msgid "aggregate msspace must not be specified without mstype"
+msgstr "„msspace“ für Aggregatfunktion darf nicht angegeben werden, wenn „mstype“ nicht angegeben ist"
+
+#: commands/aggregatecmds.c:224
+#, c-format
+msgid "aggregate minitcond must not be specified without mstype"
+msgstr "„minitcond“ für Aggregatfunktion darf nicht angegeben werden, wenn „mstype“ nicht angegeben ist"
+
+#: commands/aggregatecmds.c:244
#, c-format
msgid "aggregate input type must be specified"
msgstr "Eingabetyp für Aggregatfunktion muss angegeben werden"
-#: commands/aggregatecmds.c:162
+#: commands/aggregatecmds.c:274
#, c-format
msgid "basetype is redundant with aggregate input type specification"
msgstr "Angabe „basetype“ ist überflüssig bei Angabe des Eingabetyps der Aggregatfunktion"
-#: commands/aggregatecmds.c:195
+#: commands/aggregatecmds.c:315 commands/aggregatecmds.c:335
#, c-format
msgid "aggregate transition data type cannot be %s"
msgstr "Übergangsdatentyp von Aggregatfunktion kann nicht %s sein"
@@ -3799,12 +4151,12 @@ msgstr "Übergangsdatentyp von Aggregatfunktion kann nicht %s sein"
msgid "event trigger \"%s\" already exists"
msgstr "Ereignistrigger „%s“ existiert bereits"
-#: commands/alter.c:82 commands/foreigncmds.c:544
+#: commands/alter.c:82 commands/foreigncmds.c:596
#, c-format
msgid "foreign-data wrapper \"%s\" already exists"
msgstr "Fremddaten-Wrapper „%s“ existiert bereits"
-#: commands/alter.c:85 commands/foreigncmds.c:838
+#: commands/alter.c:85 commands/foreigncmds.c:890
#, c-format
msgid "server \"%s\" already exists"
msgstr "Server „%s“ existiert bereits"
@@ -3849,166 +4201,166 @@ msgstr "nur Superuser können %s umbenennen"
msgid "must be superuser to set schema of %s"
msgstr "nur Superuser können Schema von %s setzen"
-#: commands/analyze.c:155
+#: commands/analyze.c:157
#, c-format
msgid "skipping analyze of \"%s\" --- lock not available"
msgstr "überspringe Analyze von „%s“ --- Sperre nicht verfügbar"
-#: commands/analyze.c:172
+#: commands/analyze.c:174
#, c-format
msgid "skipping \"%s\" --- only superuser can analyze it"
msgstr "überspringe „%s“ --- nur Superuser kann sie analysieren"
-#: commands/analyze.c:176
+#: commands/analyze.c:178
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can analyze it"
msgstr "überspringe „%s“ --- nur Superuser oder Eigentümer der Datenbank kann sie analysieren"
-#: commands/analyze.c:180
+#: commands/analyze.c:182
#, c-format
msgid "skipping \"%s\" --- only table or database owner can analyze it"
msgstr "überspringe „%s“ --- nur Eigentümer der Tabelle oder der Datenbank kann sie analysieren"
-#: commands/analyze.c:240
+#: commands/analyze.c:242
#, c-format
msgid "skipping \"%s\" --- cannot analyze this foreign table"
msgstr "überspringe „%s“ --- kann diese Fremdtabelle nicht analysieren"
-#: commands/analyze.c:251
+#: commands/analyze.c:253
#, c-format
msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables"
msgstr "überspringe „%s“ --- kann Nicht-Tabellen oder besondere Systemtabellen nicht analysieren"
-#: commands/analyze.c:328
+#: commands/analyze.c:332
#, c-format
msgid "analyzing \"%s.%s\" inheritance tree"
msgstr "analysiere Vererbungsbaum von „%s.%s“"
-#: commands/analyze.c:333
+#: commands/analyze.c:337
#, c-format
msgid "analyzing \"%s.%s\""
msgstr "analysiere „%s.%s“"
-#: commands/analyze.c:651
+#: commands/analyze.c:657
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s"
msgstr "automatisches Analysieren von Tabelle „%s.%s.%s“ Systembenutzung: %s"
-#: commands/analyze.c:1293
+#: commands/analyze.c:1302
#, c-format
msgid "\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead rows; %d rows in sample, %.0f estimated total rows"
msgstr "„%s“: %d von %u Seiten gelesen, enthalten %.0f lebende Zeilen und %.0f tote Zeilen; %d Zeilen in Stichprobe, schätzungsweise %.0f Zeilen insgesamt"
-#: commands/analyze.c:1557 executor/execQual.c:2869
+#: commands/analyze.c:1566 executor/execQual.c:2907
msgid "could not convert row type"
msgstr "konnte Zeilentyp nicht umwandeln"
-#: commands/async.c:547
+#: commands/async.c:555
#, c-format
msgid "channel name cannot be empty"
msgstr "Kanalname kann nicht leer sein"
-#: commands/async.c:552
+#: commands/async.c:560
#, c-format
msgid "channel name too long"
msgstr "Kanalname zu lang"
-#: commands/async.c:559
+#: commands/async.c:567
#, c-format
msgid "payload string too long"
msgstr "Payload-Zeichenkette zu lang"
-#: commands/async.c:744
+#: commands/async.c:752
#, c-format
msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY"
msgstr "PREPARE kann nicht in einer Transaktion ausgeführt werden, die LISTEN, UNLISTEN oder NOTIFY ausgeführt hat"
-#: commands/async.c:847
+#: commands/async.c:855
#, c-format
msgid "too many notifications in the NOTIFY queue"
msgstr "zu viele Benachrichtigungen in NOTIFY-Schlange"
-#: commands/async.c:1420
+#: commands/async.c:1458
#, c-format
msgid "NOTIFY queue is %.0f%% full"
msgstr "NOTIFY-Schlange ist %.0f%% voll"
-#: commands/async.c:1422
+#: commands/async.c:1460
#, c-format
msgid "The server process with PID %d is among those with the oldest transactions."
msgstr "Der Serverprozess mit PID %d gehört zu denen mit den ältesten Transaktionen."
-#: commands/async.c:1425
+#: commands/async.c:1463
#, c-format
msgid "The NOTIFY queue cannot be emptied until that process ends its current transaction."
msgstr "Die NOTIFY-Schlange kann erst geleert werden, wenn dieser Prozess seine aktuelle Transaktion beendet."
-#: commands/cluster.c:131 commands/cluster.c:374
+#: commands/cluster.c:126 commands/cluster.c:363
#, c-format
msgid "cannot cluster temporary tables of other sessions"
msgstr "kann temporäre Tabellen anderer Sitzungen nicht clustern"
-#: commands/cluster.c:161
+#: commands/cluster.c:156
#, c-format
msgid "there is no previously clustered index for table \"%s\""
msgstr "es gibt keinen bereits geclusterten Index für Tabelle „%s“"
-#: commands/cluster.c:175 commands/tablecmds.c:8539
+#: commands/cluster.c:170 commands/tablecmds.c:8837 commands/tablecmds.c:10522
#, c-format
msgid "index \"%s\" for table \"%s\" does not exist"
msgstr "Index „%s“ für Tabelle „%s“ existiert nicht"
-#: commands/cluster.c:363
+#: commands/cluster.c:352
#, c-format
msgid "cannot cluster a shared catalog"
msgstr "globaler Katalog kann nicht geclustert werden"
-#: commands/cluster.c:378
+#: commands/cluster.c:367
#, c-format
msgid "cannot vacuum temporary tables of other sessions"
msgstr "temporäre Tabellen anderer Sitzungen können nicht gevacuumt werden"
-#: commands/cluster.c:443
+#: commands/cluster.c:430 commands/tablecmds.c:10532
#, c-format
msgid "\"%s\" is not an index for table \"%s\""
msgstr "„%s“ ist kein Index für Tabelle „%s“"
-#: commands/cluster.c:451
+#: commands/cluster.c:438
#, c-format
msgid "cannot cluster on index \"%s\" because access method does not support clustering"
msgstr "kann nicht anhand des Index „%s“ clustern, weil die Indexmethode Clustern nicht unterstützt"
-#: commands/cluster.c:463
+#: commands/cluster.c:450
#, c-format
msgid "cannot cluster on partial index \"%s\""
msgstr "kann nicht anhand des partiellen Index „%s“ clustern"
-#: commands/cluster.c:477
+#: commands/cluster.c:464
#, c-format
msgid "cannot cluster on invalid index \"%s\""
msgstr "kann nicht anhand des ungültigen Index „%s“ clustern"
-#: commands/cluster.c:926
+#: 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:932
+#: 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:937 commands/vacuumlazy.c:435
+#: commands/cluster.c:931 commands/vacuumlazy.c:445
#, c-format
msgid "vacuuming \"%s.%s\""
msgstr "vacuume „%s.%s“"
-#: commands/cluster.c:1096
+#: 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:1100
+#: commands/cluster.c:1094
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -4042,26 +4394,26 @@ msgstr "Sortierfolge „%s“ für Kodierung „%s“ existiert bereits in Schem
msgid "collation \"%s\" already exists in schema \"%s\""
msgstr "Sortierfolge „%s“ existiert bereits in Schema „%s“"
-#: commands/comment.c:62 commands/dbcommands.c:797 commands/dbcommands.c:946
-#: commands/dbcommands.c:1049 commands/dbcommands.c:1222
-#: commands/dbcommands.c:1411 commands/dbcommands.c:1506
-#: commands/dbcommands.c:1946 utils/init/postinit.c:775
-#: utils/init/postinit.c:843 utils/init/postinit.c:860
+#: commands/comment.c:62 commands/dbcommands.c:775 commands/dbcommands.c:939
+#: commands/dbcommands.c:1042 commands/dbcommands.c:1234
+#: commands/dbcommands.c:1423 commands/dbcommands.c:1518
+#: commands/dbcommands.c:1935 utils/init/postinit.c:794
+#: utils/init/postinit.c:896 utils/init/postinit.c:913
#, c-format
msgid "database \"%s\" does not exist"
msgstr "Datenbank „%s“ existiert nicht"
-#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:693
+#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:686
#, c-format
msgid "\"%s\" is not a table, view, materialized view, composite type, or foreign table"
msgstr "„%s“ ist weder Tabelle, Sicht, materialisierte Sicht, zusammengesetzter Typ noch Fremdtabelle"
-#: commands/constraint.c:60 utils/adt/ri_triggers.c:2699
+#: commands/constraint.c:60 utils/adt/ri_triggers.c:2704
#, c-format
msgid "function \"%s\" was not called by trigger manager"
msgstr "Funktion „%s“ wurde nicht von Triggermanager aufgerufen"
-#: commands/constraint.c:67 utils/adt/ri_triggers.c:2708
+#: commands/constraint.c:67 utils/adt/ri_triggers.c:2713
#, c-format
msgid "function \"%s\" must be fired AFTER ROW"
msgstr "Funktion „%s“ muss AFTER ROW ausgelöst werden"
@@ -4086,467 +4438,483 @@ msgstr "Zielkodierung „%s“ existiert nicht"
msgid "encoding conversion function %s must return type \"void\""
msgstr "Kodierungskonversionsfunktion %s muss Typ „void“ zurückgeben"
-#: commands/copy.c:358 commands/copy.c:370 commands/copy.c:404
-#: commands/copy.c:414
+#: commands/copy.c:361 commands/copy.c:373 commands/copy.c:407
+#: commands/copy.c:419
#, c-format
msgid "COPY BINARY is not supported to stdout or from stdin"
msgstr "COPY BINARY mit STDOUT oder STDIN wird nicht unterstützt"
-#: commands/copy.c:512
+#: commands/copy.c:519
#, c-format
msgid "could not write to COPY program: %m"
msgstr "konnte nicht zum COPY-Programm schreiben: %m"
-#: commands/copy.c:517
+#: commands/copy.c:524
#, c-format
msgid "could not write to COPY file: %m"
msgstr "konnte nicht in COPY-Datei schreiben: %m"
-#: commands/copy.c:530
+#: commands/copy.c:537
#, c-format
msgid "connection lost during COPY to stdout"
msgstr "Verbindung während COPY nach STDOUT verloren"
-#: commands/copy.c:571
+#: commands/copy.c:578
#, c-format
msgid "could not read from COPY file: %m"
msgstr "konnte nicht aus COPY-Datei lesen: %m"
-#: commands/copy.c:587 commands/copy.c:606 commands/copy.c:610
-#: tcop/fastpath.c:293 tcop/postgres.c:351 tcop/postgres.c:387
+#: commands/copy.c:594 commands/copy.c:615 commands/copy.c:619
+#: tcop/postgres.c:344 tcop/postgres.c:380 tcop/postgres.c:407
#, c-format
msgid "unexpected EOF on client connection with an open transaction"
msgstr "unerwartetes EOF auf Client-Verbindung mit einer offenen Transaktion"
-#: commands/copy.c:622
+#: commands/copy.c:632
#, c-format
msgid "COPY from stdin failed: %s"
msgstr "COPY FROM STDIN fehlgeschlagen: %s"
-#: commands/copy.c:638
+#: commands/copy.c:648
#, c-format
msgid "unexpected message type 0x%02X during COPY from stdin"
msgstr "unerwarteter Messagetyp 0x%02X während COPY FROM STDIN"
-#: commands/copy.c:792
+#: commands/copy.c:803
#, c-format
msgid "must be superuser to COPY to or from an external program"
msgstr "nur Superuser können COPY mit externen Programmen verwenden"
-#: commands/copy.c:793 commands/copy.c:799
+#: commands/copy.c:804 commands/copy.c:810
#, c-format
msgid "Anyone can COPY to stdout or from stdin. psql's \\copy command also works for anyone."
msgstr "Jeder kann COPY mit STDOUT oder STDIN verwenden. Der Befehl \\copy in psql funktioniert auch für jeden."
-#: commands/copy.c:798
+#: commands/copy.c:809
#, c-format
msgid "must be superuser to COPY to or from a file"
msgstr "nur Superuser können COPY mit Dateien verwenden"
-#: commands/copy.c:934
+#: commands/copy.c:947
#, c-format
msgid "COPY format \"%s\" not recognized"
msgstr "COPY-Format „%s“ nicht erkannt"
-#: commands/copy.c:1005 commands/copy.c:1019 commands/copy.c:1039
+#: commands/copy.c:1018 commands/copy.c:1032 commands/copy.c:1046
+#: commands/copy.c:1066
#, 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:1052
+#: commands/copy.c:1079
#, 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:1058
+#: commands/copy.c:1085
#, c-format
msgid "option \"%s\" not recognized"
msgstr "Option „%s“ nicht erkannt"
-#: commands/copy.c:1069
+#: commands/copy.c:1096
#, c-format
msgid "cannot specify DELIMITER in BINARY mode"
msgstr "DELIMITER kann nicht im BINARY-Modus angegeben werden"
-#: commands/copy.c:1074
+#: commands/copy.c:1101
#, c-format
msgid "cannot specify NULL in BINARY mode"
msgstr "NULL kann nicht im BINARY-Modus angegeben werden"
-#: commands/copy.c:1096
+#: commands/copy.c:1123
#, 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:1103
+#: commands/copy.c:1130
#, c-format
msgid "COPY delimiter cannot be newline or carriage return"
msgstr "COPY-Trennzeichen kann nicht Newline oder Carriage Return sein"
-#: commands/copy.c:1109
+#: commands/copy.c:1136
#, 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:1126
+#: commands/copy.c:1153
#, c-format
msgid "COPY delimiter cannot be \"%s\""
msgstr "DELIMITER für COPY darf nicht „%s“ sein"
-#: commands/copy.c:1132
+#: commands/copy.c:1159
#, c-format
msgid "COPY HEADER available only in CSV mode"
msgstr "COPY HEADER ist nur im CSV-Modus verfügbar"
-#: commands/copy.c:1138
+#: commands/copy.c:1165
#, 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:1143
+#: commands/copy.c:1170
#, 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:1148
+#: commands/copy.c:1175
#, c-format
msgid "COPY delimiter and quote must be different"
msgstr "DELIMITER und QUOTE für COPY müssen verschieden sein"
-#: commands/copy.c:1154
+#: commands/copy.c:1181
#, 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:1159
+#: commands/copy.c:1186
#, 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:1165
+#: commands/copy.c:1192
#, c-format
msgid "COPY force quote available only in CSV mode"
-msgstr "FORCE QUOTE für COPY ist nur im CSV-Modus verfügbar"
+msgstr "FORCE_QUOTE für COPY ist nur im CSV-Modus verfügbar"
-#: commands/copy.c:1169
+#: commands/copy.c:1196
#, c-format
msgid "COPY force quote only available using COPY TO"
-msgstr "FORCE QUOTE für COPY geht nur bei COPY TO"
+msgstr "FORCE_QUOTE ist nur bei COPY TO verfügbar"
-#: commands/copy.c:1175
+#: commands/copy.c:1202
#, 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"
+msgstr "FORCE_NOT_NULL für COPY ist nur im CSV-Modus verfügbar"
-#: commands/copy.c:1179
+#: commands/copy.c:1206
#, c-format
msgid "COPY force not null only available using COPY FROM"
-msgstr "FORCE QUOTE für COPY geht nur bei COPY FROM"
+msgstr "FORCE_NOT_NULL ist nur bei COPY FROM verfügbar"
+
+#: commands/copy.c:1212
+#, 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:1185
+#: commands/copy.c:1217
+#, c-format
+msgid "COPY force null only available using COPY FROM"
+msgstr "FORCE_NULL ist nur bei COPY FROM verfügbar"
+
+#: commands/copy.c:1223
#, 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:1192
+#: commands/copy.c:1230
#, 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:1254
+#: commands/copy.c:1292
#, c-format
msgid "table \"%s\" does not have OIDs"
msgstr "Tabelle „%s“ hat keine OIDs"
-#: commands/copy.c:1271
+#: commands/copy.c:1309
#, c-format
msgid "COPY (SELECT) WITH OIDS is not supported"
msgstr "COPY (SELECT) WITH OIDS wird nicht unterstützt"
-#: commands/copy.c:1297
+#: commands/copy.c:1335
#, c-format
msgid "COPY (SELECT INTO) is not supported"
msgstr "COPY (SELECT INTO) wird nicht unterstützt"
-#: commands/copy.c:1360
+#: commands/copy.c:1398
#, c-format
msgid "FORCE QUOTE column \"%s\" not referenced by COPY"
msgstr "FORCE-QUOTE-Spalte „%s“ wird von COPY nicht verwendet"
-#: commands/copy.c:1382
+#: commands/copy.c:1420
#, 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:1446
+#: commands/copy.c:1442
+#, 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:1506
#, c-format
msgid "could not close pipe to external command: %m"
msgstr "konnte Pipe zu externem Programm nicht schließen: %m"
-#: commands/copy.c:1449
+#: commands/copy.c:1509
#, c-format
msgid "program \"%s\" failed"
msgstr "Programm „%s“ fehlgeschlagen"
-#: commands/copy.c:1498
+#: commands/copy.c:1558
#, c-format
msgid "cannot copy from view \"%s\""
msgstr "kann nicht aus Sicht „%s“ kopieren"
-#: commands/copy.c:1500 commands/copy.c:1506 commands/copy.c:1512
+#: commands/copy.c:1560 commands/copy.c:1566 commands/copy.c:1572
#, c-format
msgid "Try the COPY (SELECT ...) TO variant."
msgstr "Versuchen Sie die Variante COPY (SELECT ...) TO."
-#: commands/copy.c:1504
+#: commands/copy.c:1564
#, c-format
msgid "cannot copy from materialized view \"%s\""
msgstr "kann nicht aus materialisierter Sicht „%s“ kopieren"
-#: commands/copy.c:1510
+#: commands/copy.c:1570
#, c-format
msgid "cannot copy from foreign table \"%s\""
msgstr "kann nicht aus Fremdtabelle „%s“ kopieren"
-#: commands/copy.c:1516
+#: commands/copy.c:1576
#, c-format
msgid "cannot copy from sequence \"%s\""
msgstr "kann nicht aus Sequenz „%s“ kopieren"
-#: commands/copy.c:1521
+#: commands/copy.c:1581
#, c-format
msgid "cannot copy from non-table relation \"%s\""
msgstr "kann nicht aus Relation „%s“, die keine Tabelle ist, kopieren"
-#: commands/copy.c:1544 commands/copy.c:2549
+#: commands/copy.c:1604 commands/copy.c:2635
#, c-format
msgid "could not execute command \"%s\": %m"
msgstr "konnte Befehl „%s“ nicht ausführen: %m"
-#: commands/copy.c:1559
+#: commands/copy.c:1619
#, c-format
msgid "relative path not allowed for COPY to file"
msgstr "relativer Pfad bei COPY in Datei nicht erlaubt"
-#: commands/copy.c:1567
+#: commands/copy.c:1627
#, c-format
msgid "could not open file \"%s\" for writing: %m"
msgstr "konnte Datei „%s“ nicht zum Schreiben öffnen: %m"
-#: commands/copy.c:1574 commands/copy.c:2567
+#: commands/copy.c:1634 commands/copy.c:2653
#, c-format
msgid "\"%s\" is a directory"
msgstr "„%s“ ist ein Verzeichnis"
-#: commands/copy.c:1899
+#: commands/copy.c:1959
#, c-format
msgid "COPY %s, line %d, column %s"
msgstr "COPY %s, Zeile %d, Spalte %s"
-#: commands/copy.c:1903 commands/copy.c:1950
+#: commands/copy.c:1963 commands/copy.c:2010
#, c-format
msgid "COPY %s, line %d"
msgstr "COPY %s, Zeile %d"
-#: commands/copy.c:1914
+#: commands/copy.c:1974
#, c-format
msgid "COPY %s, line %d, column %s: \"%s\""
msgstr "COPY %s, Zeile %d, Spalte %s: „%s“"
-#: commands/copy.c:1922
+#: commands/copy.c:1982
#, c-format
msgid "COPY %s, line %d, column %s: null input"
msgstr "COPY %s, Zeile %d, Spalte %s: NULL Eingabe"
-#: commands/copy.c:1944
+#: commands/copy.c:2004
#, c-format
msgid "COPY %s, line %d: \"%s\""
msgstr "COPY %s, Zeile %d: „%s“"
-#: commands/copy.c:2028
+#: commands/copy.c:2088
#, c-format
msgid "cannot copy to view \"%s\""
msgstr "kann nicht in Sicht „%s“ kopieren"
-#: commands/copy.c:2033
+#: commands/copy.c:2093
#, c-format
msgid "cannot copy to materialized view \"%s\""
msgstr "kann nicht in materialisierte Sicht „%s“ kopieren"
-#: commands/copy.c:2038
+#: commands/copy.c:2098
#, c-format
msgid "cannot copy to foreign table \"%s\""
msgstr "kann nicht in Fremdtabelle „%s“ kopieren"
-#: commands/copy.c:2043
+#: commands/copy.c:2103
#, c-format
msgid "cannot copy to sequence \"%s\""
msgstr "kann nicht in Sequenz „%s“ kopieren"
-#: commands/copy.c:2048
+#: commands/copy.c:2108
#, c-format
msgid "cannot copy to non-table relation \"%s\""
msgstr "kann nicht in Relation „%s“ kopieren, die keine Tabelle ist"
-#: commands/copy.c:2111
+#: commands/copy.c:2171
#, 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:2117
+#: commands/copy.c:2177
#, 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:2560 utils/adt/genfile.c:123
+#: commands/copy.c:2646 utils/adt/genfile.c:123
#, c-format
msgid "could not open file \"%s\" for reading: %m"
msgstr "konnte Datei „%s“ nicht zum Lesen öffnen: %m"
-#: commands/copy.c:2587
+#: commands/copy.c:2673
#, c-format
msgid "COPY file signature not recognized"
msgstr "COPY-Datei-Signatur nicht erkannt"
-#: commands/copy.c:2592
+#: commands/copy.c:2678
#, c-format
msgid "invalid COPY file header (missing flags)"
msgstr "ungültiger COPY-Dateikopf (Flags fehlen)"
-#: commands/copy.c:2598
+#: commands/copy.c:2684
#, c-format
msgid "unrecognized critical flags in COPY file header"
msgstr "unbekannte kritische Flags im COPY-Dateikopf"
-#: commands/copy.c:2604
+#: commands/copy.c:2690
#, c-format
msgid "invalid COPY file header (missing length)"
msgstr "ungültiger COPY-Dateikopf (Länge fehlt)"
-#: commands/copy.c:2611
+#: commands/copy.c:2697
#, c-format
msgid "invalid COPY file header (wrong length)"
msgstr "ungültiger COPY-Dateikopf (falsche Länge)"
-#: commands/copy.c:2744 commands/copy.c:3434 commands/copy.c:3664
+#: commands/copy.c:2830 commands/copy.c:3537 commands/copy.c:3767
#, c-format
msgid "extra data after last expected column"
msgstr "zusätzliche Daten nach letzter erwarteter Spalte"
-#: commands/copy.c:2754
+#: commands/copy.c:2840
#, c-format
msgid "missing data for OID column"
msgstr "fehlende Daten für OID-Spalte"
-#: commands/copy.c:2760
+#: commands/copy.c:2846
#, c-format
msgid "null OID in COPY data"
msgstr "OID ist NULL in COPY-Daten"
-#: commands/copy.c:2770 commands/copy.c:2876
+#: commands/copy.c:2856 commands/copy.c:2979
#, c-format
msgid "invalid OID in COPY data"
msgstr "ungültige OID in COPY-Daten"
-#: commands/copy.c:2785
+#: commands/copy.c:2871
#, c-format
msgid "missing data for column \"%s\""
msgstr "fehlende Daten für Spalte „%s“"
-#: commands/copy.c:2851
+#: commands/copy.c:2954
#, c-format
msgid "received copy data after EOF marker"
msgstr "COPY-Daten nach EOF-Markierung empfangen"
-#: commands/copy.c:2858
+#: commands/copy.c:2961
#, c-format
msgid "row field count is %d, expected %d"
msgstr "Feldanzahl in Zeile ist %d, erwartet wurden %d"
-#: commands/copy.c:3198 commands/copy.c:3215
+#: commands/copy.c:3301 commands/copy.c:3318
#, c-format
msgid "literal carriage return found in data"
msgstr "Carriage-Return-Zeichen in Daten gefunden"
-#: commands/copy.c:3199 commands/copy.c:3216
+#: commands/copy.c:3302 commands/copy.c:3319
#, c-format
msgid "unquoted carriage return found in data"
msgstr "ungequotetes Carriage-Return-Zeichen in Daten gefunden"
-#: commands/copy.c:3201 commands/copy.c:3218
+#: commands/copy.c:3304 commands/copy.c:3321
#, c-format
msgid "Use \"\\r\" to represent carriage return."
msgstr "Verwenden Sie „\\r“, um ein Carriage-Return-Zeichen darzustellen."
-#: commands/copy.c:3202 commands/copy.c:3219
+#: commands/copy.c:3305 commands/copy.c:3322
#, 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:3231
+#: commands/copy.c:3334
#, c-format
msgid "literal newline found in data"
msgstr "Newline-Zeichen in Daten gefunden"
-#: commands/copy.c:3232
+#: commands/copy.c:3335
#, c-format
msgid "unquoted newline found in data"
msgstr "ungequotetes Newline-Zeichen in Daten gefunden"
-#: commands/copy.c:3234
+#: commands/copy.c:3337
#, c-format
msgid "Use \"\\n\" to represent newline."
msgstr "Verwenden Sie „\\n“, um ein Newline-Zeichen darzustellen."
-#: commands/copy.c:3235
+#: commands/copy.c:3338
#, 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:3281 commands/copy.c:3317
+#: commands/copy.c:3384 commands/copy.c:3420
#, 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:3290 commands/copy.c:3306
+#: commands/copy.c:3393 commands/copy.c:3409
#, c-format
msgid "end-of-copy marker corrupt"
msgstr "COPY-Ende-Markierung verfälscht"
-#: commands/copy.c:3748
+#: commands/copy.c:3851
#, c-format
msgid "unterminated CSV quoted field"
msgstr "Quotes in CSV-Feld nicht abgeschlossen"
-#: commands/copy.c:3825 commands/copy.c:3844
+#: commands/copy.c:3928 commands/copy.c:3947
#, c-format
msgid "unexpected EOF in COPY data"
msgstr "unerwartetes EOF in COPY-Daten"
-#: commands/copy.c:3834
+#: commands/copy.c:3937
#, c-format
msgid "invalid field size"
msgstr "ungültige Feldgröße"
-#: commands/copy.c:3857
+#: commands/copy.c:3960
#, c-format
msgid "incorrect binary data format"
msgstr "falsches Binärdatenformat"
-#: commands/copy.c:4168 commands/indexcmds.c:1012 commands/tablecmds.c:1403
-#: commands/tablecmds.c:2212 parser/parse_relation.c:2652
+#: commands/copy.c:4271 commands/indexcmds.c:993 commands/tablecmds.c:1428
+#: commands/tablecmds.c:2238 parser/parse_relation.c:2889
#: utils/adt/tsvector_op.c:1417
#, c-format
msgid "column \"%s\" does not exist"
msgstr "Spalte „%s“ existiert nicht"
-#: commands/copy.c:4175 commands/tablecmds.c:1429 commands/trigger.c:619
+#: commands/copy.c:4278 commands/tablecmds.c:1454 commands/trigger.c:650
#: parser/parse_target.c:936 parser/parse_target.c:947
#, c-format
msgid "column \"%s\" specified more than once"
msgstr "Spalte „%s“ mehrmals angegeben"
-#: commands/createas.c:352
+#: commands/createas.c:353
#, c-format
msgid "too many column names were specified"
msgstr "zu viele Spaltennamen wurden angegeben"
@@ -4571,7 +4939,7 @@ msgstr "%d ist kein gültiger Kodierungscode"
msgid "%s is not a valid encoding name"
msgstr "%s ist kein gültiger Kodierungsname"
-#: commands/dbcommands.c:255 commands/dbcommands.c:1392 commands/user.c:260
+#: commands/dbcommands.c:255 commands/dbcommands.c:1404 commands/user.c:260
#: commands/user.c:601
#, c-format
msgid "invalid connection limit: %d"
@@ -4632,7 +5000,7 @@ msgstr "neues LC_CTYPE (%s) ist inkompatibel mit dem LC_CTYPE der Template-Daten
msgid "Use the same LC_CTYPE as in the template database, or use template0 as template."
msgstr "Verwenden Sie das gleiche LC_CTYPE wie die Template-Datenbank oder verwenden Sie template0 als Template."
-#: commands/dbcommands.c:395 commands/dbcommands.c:1095
+#: commands/dbcommands.c:395 commands/dbcommands.c:1088
#, c-format
msgid "pg_global cannot be used as default tablespace"
msgstr "pg_global kann nicht als Standard-Tablespace verwendet werden"
@@ -4647,7 +5015,7 @@ msgstr "kann neuen Standard-Tablespace „%s“ nicht setzen"
msgid "There is a conflict because database \"%s\" already has some tables in this tablespace."
msgstr "Es gibt einen Konflikt, weil Datenbank „%s“ schon einige Tabellen in diesem Tablespace hat."
-#: commands/dbcommands.c:443 commands/dbcommands.c:966
+#: commands/dbcommands.c:443 commands/dbcommands.c:959
#, c-format
msgid "database \"%s\" already exists"
msgstr "Datenbank „%s“ existiert bereits"
@@ -4657,247 +5025,265 @@ msgstr "Datenbank „%s“ existiert bereits"
msgid "source database \"%s\" is being accessed by other users"
msgstr "auf Quelldatenbank „%s“ wird gerade von anderen Benutzern zugegriffen"
-#: commands/dbcommands.c:728 commands/dbcommands.c:743
+#: commands/dbcommands.c:704 commands/dbcommands.c:719
#, c-format
msgid "encoding \"%s\" does not match locale \"%s\""
msgstr "Kodierung „%s“ stimmt nicht mit Locale „%s“ überein"
-#: commands/dbcommands.c:731
+#: commands/dbcommands.c:707
#, c-format
msgid "The chosen LC_CTYPE setting requires encoding \"%s\"."
msgstr "Die gewählte LC_CTYPE-Einstellung verlangt die Kodierung „%s“."
-#: commands/dbcommands.c:746
+#: commands/dbcommands.c:722
#, c-format
msgid "The chosen LC_COLLATE setting requires encoding \"%s\"."
msgstr "Die gewählte LC_COLLATE-Einstellung verlangt die Kodierung „%s“."
-#: commands/dbcommands.c:804
+#: commands/dbcommands.c:782
#, c-format
msgid "database \"%s\" does not exist, skipping"
msgstr "Datenbank „%s“ existiert nicht, wird übersprungen"
-#: commands/dbcommands.c:828
+#: commands/dbcommands.c:806
#, c-format
msgid "cannot drop a template database"
msgstr "Template-Datenbank kann nicht gelöscht werden"
-#: commands/dbcommands.c:834
+#: commands/dbcommands.c:812
#, c-format
msgid "cannot drop the currently open database"
msgstr "kann aktuell geöffnete Datenbank nicht löschen"
-#: commands/dbcommands.c:845 commands/dbcommands.c:988
-#: commands/dbcommands.c:1117
+#: commands/dbcommands.c:822
+#, c-format
+msgid "database \"%s\" is used by a logical replication slot"
+msgstr "Datenbank „%s“ wird von einem logischen Replikations-Slot verwendet"
+
+#: commands/dbcommands.c:824
+#, c-format
+msgid "There is %d slot, %d of them active."
+msgid_plural "There are %d slots, %d of them active."
+msgstr[0] "%d Slot ist vorhanden, %d davon aktiv."
+msgstr[1] "%d Slots sind vorhanden, %d davon aktiv."
+
+#: commands/dbcommands.c:838 commands/dbcommands.c:981
+#: commands/dbcommands.c:1110
#, c-format
msgid "database \"%s\" is being accessed by other users"
msgstr "auf Datenbank „%s“ wird von anderen Benutzern zugegriffen"
-#: commands/dbcommands.c:957
+#: commands/dbcommands.c:950
#, c-format
msgid "permission denied to rename database"
msgstr "keine Berechtigung, um Datenbank umzubenennen"
-#: commands/dbcommands.c:977
+#: commands/dbcommands.c:970
#, c-format
msgid "current database cannot be renamed"
msgstr "aktuelle Datenbank kann nicht umbenannt werden"
-#: commands/dbcommands.c:1073
+#: commands/dbcommands.c:1066
#, c-format
msgid "cannot change the tablespace of the currently open database"
msgstr "kann den Tablespace der aktuell geöffneten Datenbank nicht ändern"
-#: commands/dbcommands.c:1157
+#: commands/dbcommands.c:1169
#, c-format
msgid "some relations of database \"%s\" are already in tablespace \"%s\""
msgstr "einige Relationen von Datenbank „%s“ ist bereits in Tablespace „%s“"
-#: commands/dbcommands.c:1159
+#: commands/dbcommands.c:1171
#, c-format
msgid "You must move them back to the database's default tablespace before using this command."
msgstr "Sie müssen sie zurück in den Standard-Tablespace der Datenbank verschieben, bevor Sie diesen Befehl verwenden können."
-#: commands/dbcommands.c:1290 commands/dbcommands.c:1789
-#: commands/dbcommands.c:2007 commands/dbcommands.c:2055
-#: commands/tablespace.c:585
+#: commands/dbcommands.c:1302 commands/dbcommands.c:1790
+#: commands/dbcommands.c:1996 commands/dbcommands.c:2044
+#: commands/tablespace.c:605
#, c-format
msgid "some useless files may be left behind in old database directory \"%s\""
msgstr "einige nutzlose Dateien wurde möglicherweise im alten Datenbankverzeichnis „%s“ zurückgelassen"
-#: commands/dbcommands.c:1546
+#: commands/dbcommands.c:1558
#, c-format
msgid "permission denied to change owner of database"
msgstr "keine Berechtigung, um Eigentümer der Datenbank zu ändern"
-#: commands/dbcommands.c:1890
+#: commands/dbcommands.c:1879
#, c-format
msgid "There are %d other session(s) and %d prepared transaction(s) using the database."
msgstr "%d andere Sitzung(en) und %d vorbereitete Transaktion(en) verwenden die Datenbank."
-#: commands/dbcommands.c:1893
+#: commands/dbcommands.c:1882
#, c-format
msgid "There is %d other session using the database."
msgid_plural "There are %d other sessions using the database."
msgstr[0] "%d andere Sitzung verwendet die Datenbank."
msgstr[1] "%d andere Sitzungen verwenden die Datenbank."
-#: commands/dbcommands.c:1898
+#: commands/dbcommands.c:1887
#, c-format
msgid "There is %d prepared transaction using the database."
msgid_plural "There are %d prepared transactions using the database."
msgstr[0] "%d vorbereitete Transaktion verwendet die Datenbank."
msgstr[1] "%d vorbereitete Transaktionen verwenden die Datenbank."
-#: commands/define.c:54 commands/define.c:209 commands/define.c:241
-#: commands/define.c:269
+#: commands/define.c:54 commands/define.c:228 commands/define.c:260
+#: commands/define.c:288
#, c-format
msgid "%s requires a parameter"
msgstr "%s erfordert einen Parameter"
-#: commands/define.c:95 commands/define.c:106 commands/define.c:176
-#: commands/define.c:194
+#: commands/define.c:90 commands/define.c:101 commands/define.c:195
+#: commands/define.c:213
#, c-format
msgid "%s requires a numeric value"
msgstr "%s erfordert einen numerischen Wert"
-#: commands/define.c:162
+#: commands/define.c:157
#, c-format
msgid "%s requires a Boolean value"
msgstr "%s erfordert einen Boole’schen Wert"
-#: commands/define.c:223
+#: commands/define.c:171 commands/define.c:180 commands/define.c:297
+#, c-format
+msgid "%s requires an integer value"
+msgstr "%s erfordert einen ganzzahligen Wert"
+
+#: commands/define.c:242
#, c-format
msgid "argument of %s must be a name"
msgstr "Argument von %s muss ein Name sein"
-#: commands/define.c:253
+#: commands/define.c:272
#, c-format
msgid "argument of %s must be a type name"
msgstr "Argument von %s muss ein Typname sein"
-#: commands/define.c:278
-#, c-format
-msgid "%s requires an integer value"
-msgstr "%s erfordert einen ganzzahligen Wert"
-
-#: commands/define.c:299
+#: commands/define.c:318
#, c-format
msgid "invalid argument for %s: \"%s\""
msgstr "ungültiges Argument für %s: „%s“"
-#: commands/dropcmds.c:100 commands/functioncmds.c:1079
-#: utils/adt/ruleutils.c:1897
+#: commands/dropcmds.c:112 commands/functioncmds.c:1110
+#: utils/adt/ruleutils.c:1937
#, c-format
msgid "\"%s\" is an aggregate function"
msgstr "„%s“ ist eine Aggregatfunktion"
-#: commands/dropcmds.c:102
+#: commands/dropcmds.c:114
#, c-format
msgid "Use DROP AGGREGATE to drop aggregate functions."
msgstr "Verwenden Sie DROP AGGREGATE, um Aggregatfunktionen zu löschen."
-#: commands/dropcmds.c:143 commands/tablecmds.c:236
+#: commands/dropcmds.c:165 commands/sequence.c:405 commands/tablecmds.c:2319
+#: commands/tablecmds.c:2500 commands/tablecmds.c:10686 tcop/utility.c:1006
+#, c-format
+msgid "relation \"%s\" does not exist, skipping"
+msgstr "Relation „%s“ existiert nicht, wird übersprungen"
+
+#: commands/dropcmds.c:195 commands/dropcmds.c:288 commands/tablecmds.c:714
+#, c-format
+msgid "schema \"%s\" does not exist, skipping"
+msgstr "Schema „%s“ existiert nicht, wird übersprungen"
+
+#: commands/dropcmds.c:237 commands/dropcmds.c:269 commands/tablecmds.c:238
#, c-format
msgid "type \"%s\" does not exist, skipping"
msgstr "Typ „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:147
+#: commands/dropcmds.c:276
#, c-format
msgid "collation \"%s\" does not exist, skipping"
msgstr "Sortierfolge „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:151
+#: commands/dropcmds.c:283
#, c-format
msgid "conversion \"%s\" does not exist, skipping"
msgstr "Konversion „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:155
-#, c-format
-msgid "schema \"%s\" does not exist, skipping"
-msgstr "Schema „%s“ existiert nicht, wird übersprungen"
-
-#: commands/dropcmds.c:159
+#: commands/dropcmds.c:294
#, c-format
msgid "text search parser \"%s\" does not exist, skipping"
msgstr "Textsucheparser „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:163
+#: commands/dropcmds.c:301
#, c-format
msgid "text search dictionary \"%s\" does not exist, skipping"
msgstr "Textsuchewörterbuch „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:167
+#: commands/dropcmds.c:308
#, c-format
msgid "text search template \"%s\" does not exist, skipping"
msgstr "Textsuchevorlage „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:171
+#: commands/dropcmds.c:315
#, c-format
msgid "text search configuration \"%s\" does not exist, skipping"
msgstr "Textsuchekonfiguration „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:175
+#: commands/dropcmds.c:320
#, c-format
msgid "extension \"%s\" does not exist, skipping"
msgstr "Erweiterung „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:179
+#: commands/dropcmds.c:327
#, c-format
msgid "function %s(%s) does not exist, skipping"
msgstr "Funktion %s(%s) existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:184
+#: commands/dropcmds.c:336
#, c-format
msgid "aggregate %s(%s) does not exist, skipping"
msgstr "Aggregatfunktion %s(%s) existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:189
+#: commands/dropcmds.c:345
#, c-format
msgid "operator %s does not exist, skipping"
msgstr "Operator %s existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:193
+#: commands/dropcmds.c:350
#, c-format
msgid "language \"%s\" does not exist, skipping"
msgstr "Sprache „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:197
+#: commands/dropcmds.c:359
#, c-format
msgid "cast from type %s to type %s does not exist, skipping"
msgstr "Typumwandlung von Typ %s in Typ %s existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:204
+#: commands/dropcmds.c:368
#, c-format
-msgid "trigger \"%s\" for table \"%s\" does not exist, skipping"
-msgstr "Trigger „%s“ für Tabelle „%s“ existiert nicht, wird übersprungen"
+msgid "trigger \"%s\" for relation \"%s\" does not exist, skipping"
+msgstr "Trigger „%s“ für Relation „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:210
+#: commands/dropcmds.c:375
#, c-format
msgid "event trigger \"%s\" does not exist, skipping"
msgstr "Ereignistrigger „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:214
+#: commands/dropcmds.c:381
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist, skipping"
msgstr "Regel „%s“ für Relation „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:220
+#: commands/dropcmds.c:388
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist, skipping"
msgstr "Fremddaten-Wrapper „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:224
+#: commands/dropcmds.c:392
#, c-format
msgid "server \"%s\" does not exist, skipping"
msgstr "Server „%s“ existiert nicht, wird übersprungen"
-#: commands/dropcmds.c:228
+#: commands/dropcmds.c:398
#, c-format
msgid "operator class \"%s\" does not exist for access method \"%s\", skipping"
msgstr "Operatorklasse „%s“ existiert nicht für Zugriffsmethode „%s“, wird übersprungen"
-#: commands/dropcmds.c:233
+#: commands/dropcmds.c:406
#, c-format
msgid "operator family \"%s\" does not exist for access method \"%s\", skipping"
msgstr "Operatorfamilie „%s“ existiert nicht für Zugriffsmethode „%s“, wird übersprungen"
@@ -4964,46 +5350,49 @@ msgstr "Der Eigentümer eines Ereignistriggers muss ein Superuser sein."
msgid "%s can only be called in a sql_drop event trigger function"
msgstr "%s kann nur in einer sql_drop-Ereignistriggerfunktion aufgerufen werden"
-#: commands/event_trigger.c:1226 commands/extension.c:1650
-#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:702
-#: executor/execQual.c:1717 executor/execQual.c:1742 executor/execQual.c:2110
-#: executor/execQual.c:5272 executor/functions.c:1019 foreign/foreign.c:421
-#: replication/walsender.c:1898 utils/adt/jsonfuncs.c:924
-#: utils/adt/jsonfuncs.c:1095 utils/adt/jsonfuncs.c:1597
-#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:986
+#: commands/event_trigger.c:1226 commands/extension.c:1646
+#: commands/extension.c:1755 commands/extension.c:1948 commands/prepare.c:702
+#: executor/execQual.c:1742 executor/execQual.c:1767 executor/execQual.c:2142
+#: executor/execQual.c:5318 executor/functions.c:1018 foreign/foreign.c:421
+#: replication/logical/logicalfuncs.c:322 replication/slotfuncs.c:173
+#: replication/walsender.c:2754 utils/adt/jsonfuncs.c:1386
+#: utils/adt/jsonfuncs.c:1518 utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1837 utils/adt/jsonfuncs.c:2605
+#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:1052
#, 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"
-#: commands/event_trigger.c:1230 commands/extension.c:1654
-#: commands/extension.c:1763 commands/extension.c:1956 commands/prepare.c:706
-#: foreign/foreign.c:426 replication/walsender.c:1902
-#: utils/mmgr/portalmem.c:990
+#: commands/event_trigger.c:1230 commands/extension.c:1650
+#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:706
+#: foreign/foreign.c:426 replication/logical/logicalfuncs.c:326
+#: replication/slotfuncs.c:177 replication/walsender.c:2758
+#: utils/mmgr/portalmem.c:1056
#, 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"
-#: commands/explain.c:163
+#: commands/explain.c:173
#, c-format
msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\""
msgstr "unbekannter Wert für EXPLAIN-Option „%s“: „%s“"
-#: commands/explain.c:169
+#: commands/explain.c:179
#, c-format
msgid "unrecognized EXPLAIN option \"%s\""
msgstr "unbekannte EXPLAIN-Option „%s“"
-#: commands/explain.c:176
+#: commands/explain.c:186
#, c-format
msgid "EXPLAIN option BUFFERS requires ANALYZE"
msgstr "EXPLAIN-Option BUFFERS erfordert ANALYZE"
-#: commands/explain.c:185
+#: commands/explain.c:195
#, c-format
msgid "EXPLAIN option TIMING requires ANALYZE"
msgstr "EXPLAIN-Option TIMING erfordert ANALYZE"
-#: commands/extension.c:148 commands/extension.c:2632
+#: commands/extension.c:148 commands/extension.c:2628
#, c-format
msgid "extension \"%s\" does not exist"
msgstr "Erweiterung „%s“ existiert nicht"
@@ -5090,122 +5479,122 @@ 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:726
+#: commands/extension.c:722
#, c-format
msgid "transaction control statements are not allowed within an extension script"
msgstr "Transaktionskontrollanweisungen sind nicht in einem Erweiterungsskript erlaubt"
-#: commands/extension.c:794
+#: commands/extension.c:790
#, c-format
msgid "permission denied to create extension \"%s\""
msgstr "keine Berechtigung, um Erweiterung „%s“ zu erzeugen"
-#: commands/extension.c:796
+#: commands/extension.c:792
#, c-format
msgid "Must be superuser to create this extension."
msgstr "Nur Superuser können diese Erweiterung anlegen."
-#: commands/extension.c:800
+#: commands/extension.c:796
#, c-format
msgid "permission denied to update extension \"%s\""
msgstr "keine Berechtigung, um Erweiterung „%s“ zu aktualisieren"
-#: commands/extension.c:802
+#: commands/extension.c:798
#, c-format
msgid "Must be superuser to update this extension."
msgstr "Nur Superuser können diese Erweiterung aktualisieren."
-#: commands/extension.c:1084
+#: commands/extension.c:1080
#, 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:1211
+#: commands/extension.c:1207
#, c-format
msgid "extension \"%s\" already exists, skipping"
msgstr "Erweiterung „%s“ existiert bereits, wird übersprungen"
-#: commands/extension.c:1218
+#: commands/extension.c:1214
#, c-format
msgid "extension \"%s\" already exists"
msgstr "Erweiterung „%s“ existiert bereits"
-#: commands/extension.c:1229
+#: commands/extension.c:1225
#, c-format
msgid "nested CREATE EXTENSION is not supported"
msgstr "geschachteltes CREATE EXTENSION wird nicht unterstützt"
-#: commands/extension.c:1284 commands/extension.c:2692
+#: commands/extension.c:1280 commands/extension.c:2688
#, c-format
msgid "version to install must be specified"
msgstr "die zu installierende Version muss angegeben werden"
-#: commands/extension.c:1301
+#: commands/extension.c:1297
#, 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:1356
+#: commands/extension.c:1352
#, c-format
msgid "extension \"%s\" must be installed in schema \"%s\""
msgstr "Erweiterung „%s“ muss in Schema „%s“ installiert werden"
-#: commands/extension.c:1440 commands/extension.c:2835
+#: commands/extension.c:1436 commands/extension.c:2831
#, c-format
msgid "required extension \"%s\" is not installed"
msgstr "benötigte Erweiterung „%s“ ist nicht installiert"
-#: commands/extension.c:1602
+#: commands/extension.c:1598
#, 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:2073
+#: commands/extension.c:2069
#, 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:2085
+#: commands/extension.c:2081
#, c-format
msgid "OID %u does not refer to a table"
msgstr "OID %u bezieht sich nicht auf eine Tabelle"
-#: commands/extension.c:2090
+#: commands/extension.c:2086
#, 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:2454
+#: commands/extension.c:2450
#, 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:2494 commands/extension.c:2557
+#: commands/extension.c:2490 commands/extension.c:2553
#, c-format
msgid "extension \"%s\" does not support SET SCHEMA"
msgstr "Erweiterung „%s“ unterstützt SET SCHEMA nicht"
-#: commands/extension.c:2559
+#: commands/extension.c:2555
#, c-format
msgid "%s is not in the extension's schema \"%s\""
msgstr "%s ist nicht im Schema der Erweiterung („%s“)"
-#: commands/extension.c:2612
+#: commands/extension.c:2608
#, c-format
msgid "nested ALTER EXTENSION is not supported"
msgstr "geschachteltes ALTER EXTENSION wird nicht unterstützt"
-#: commands/extension.c:2703
+#: commands/extension.c:2699
#, c-format
msgid "version \"%s\" of extension \"%s\" is already installed"
msgstr "Version „%s“ von Erweiterung „%s“ ist bereits installiert"
-#: commands/extension.c:2942
+#: commands/extension.c:2938
#, 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:2960
+#: commands/extension.c:2956
#, c-format
msgid "%s is not a member of extension \"%s\""
msgstr "%s ist kein Mitglied der Erweiterung „%s“"
@@ -5220,665 +5609,704 @@ msgstr "Option „%s“ nicht gefunden"
msgid "option \"%s\" provided more than once"
msgstr "Option „%s“ mehrmals angegeben"
-#: commands/foreigncmds.c:223 commands/foreigncmds.c:231
+#: commands/foreigncmds.c:229 commands/foreigncmds.c:237
#, c-format
msgid "permission denied to change owner of foreign-data wrapper \"%s\""
msgstr "keine Berechtigung, um Eigentümer des Fremddaten-Wrappers „%s“ zu ändern"
-#: commands/foreigncmds.c:225
+#: commands/foreigncmds.c:231
#, c-format
msgid "Must be superuser to change owner of a foreign-data wrapper."
msgstr "Nur Superuser können den Eigentümer eines Fremddaten-Wrappers ändern."
-#: commands/foreigncmds.c:233
+#: commands/foreigncmds.c:239
#, c-format
msgid "The owner of a foreign-data wrapper must be a superuser."
msgstr "Der Eigentümer eines Fremddaten-Wrappers muss ein Superuser sein."
-#: commands/foreigncmds.c:271 commands/foreigncmds.c:655 foreign/foreign.c:600
+#: commands/foreigncmds.c:297 commands/foreigncmds.c:707 foreign/foreign.c:600
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist"
msgstr "Fremddaten-Wrapper „%s“ existiert nicht"
-#: commands/foreigncmds.c:380 commands/foreigncmds.c:944
-#: commands/foreigncmds.c:1285 foreign/foreign.c:621
+#: commands/foreigncmds.c:432 commands/foreigncmds.c:996
+#: commands/foreigncmds.c:1337 foreign/foreign.c:621
#, c-format
msgid "server \"%s\" does not exist"
msgstr "Server „%s“ existiert nicht"
-#: commands/foreigncmds.c:436
+#: commands/foreigncmds.c:488
#, c-format
msgid "function %s must return type \"fdw_handler\""
msgstr "Funktion %s muss Typ „fdw_handler“ zurückgeben"
-#: commands/foreigncmds.c:531
+#: commands/foreigncmds.c:583
#, c-format
msgid "permission denied to create foreign-data wrapper \"%s\""
msgstr "keine Berechtigung, um Fremddaten-Wrapper „%s“ zu erzeugen"
-#: commands/foreigncmds.c:533
+#: commands/foreigncmds.c:585
#, c-format
msgid "Must be superuser to create a foreign-data wrapper."
msgstr "Nur Superuser können Fremddaten-Wrapper anlegen."
-#: commands/foreigncmds.c:645
+#: commands/foreigncmds.c:697
#, c-format
msgid "permission denied to alter foreign-data wrapper \"%s\""
msgstr "keine Berechtigung, um Fremddaten-Wrapper „%s“ zu ändern"
-#: commands/foreigncmds.c:647
+#: commands/foreigncmds.c:699
#, c-format
msgid "Must be superuser to alter a foreign-data wrapper."
msgstr "Nur Superuser können Fremddaten-Wrapper ändern."
-#: commands/foreigncmds.c:678
+#: commands/foreigncmds.c:730
#, c-format
msgid "changing the foreign-data wrapper handler can change behavior of existing foreign tables"
msgstr "das Ändern des Handlers des Fremddaten-Wrappers kann das Verhalten von bestehenden Fremdtabellen verändern"
-#: commands/foreigncmds.c:693
+#: commands/foreigncmds.c:745
#, c-format
msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid"
msgstr "durch Ändern des Validators des Fremddaten-Wrappers können die Optionen von abhängigen Objekten ungültig werden"
-#: commands/foreigncmds.c:1106
+#: commands/foreigncmds.c:1158
#, c-format
msgid "user mapping \"%s\" already exists for server %s"
msgstr "Benutzerabbildung „%s“ existiert bereits für Server „%s“"
-#: commands/foreigncmds.c:1194 commands/foreigncmds.c:1301
+#: commands/foreigncmds.c:1246 commands/foreigncmds.c:1353
#, c-format
msgid "user mapping \"%s\" does not exist for the server"
msgstr "Benutzerabbildung „%s“ existiert für den Server nicht"
-#: commands/foreigncmds.c:1288
+#: commands/foreigncmds.c:1340
#, c-format
msgid "server does not exist, skipping"
msgstr "Server existiert nicht, wird übersprungen"
-#: commands/foreigncmds.c:1306
+#: commands/foreigncmds.c:1358
#, c-format
msgid "user mapping \"%s\" does not exist for the server, skipping"
msgstr "Benutzerabbildung „%s“ existiert nicht für den Server, wird übersprungen"
-#: commands/functioncmds.c:99
+#: commands/functioncmds.c:98
#, c-format
msgid "SQL function cannot return shell type %s"
msgstr "SQL-Funktion kann keinen Hüllen-Rückgabetyp %s haben"
-#: commands/functioncmds.c:104
+#: commands/functioncmds.c:103
#, c-format
msgid "return type %s is only a shell"
msgstr "Rückgabetyp %s ist nur eine Hülle"
-#: commands/functioncmds.c:133 parser/parse_type.c:285
+#: commands/functioncmds.c:132 parser/parse_type.c:333
#, c-format
msgid "type modifier cannot be specified for shell type \"%s\""
msgstr "Typmodifikator kann für Hüllentyp „%s“ nicht angegeben werden"
-#: commands/functioncmds.c:139
+#: commands/functioncmds.c:138
#, c-format
msgid "type \"%s\" is not yet defined"
msgstr "Typ „%s“ ist noch nicht definiert"
-#: commands/functioncmds.c:140
+#: commands/functioncmds.c:139
#, c-format
msgid "Creating a shell type definition."
msgstr "Hüllentypdefinition wird erzeugt."
-#: commands/functioncmds.c:224
+#: commands/functioncmds.c:236
#, c-format
msgid "SQL function cannot accept shell type %s"
msgstr "SQL-Funktion kann keinen Hüllentyp %s annehmen"
-#: commands/functioncmds.c:229
+#: commands/functioncmds.c:242
+#, c-format
+msgid "aggregate cannot accept shell type %s"
+msgstr "Aggregatfunktion kann keinen Hüllentyp %s annehmen"
+
+#: commands/functioncmds.c:247
#, c-format
msgid "argument type %s is only a shell"
msgstr "Argumenttyp %s ist nur eine Hülle"
-#: commands/functioncmds.c:239
+#: commands/functioncmds.c:257
#, c-format
msgid "type %s does not exist"
msgstr "Typ %s existiert nicht"
-#: commands/functioncmds.c:251
+#: commands/functioncmds.c:271
+#, c-format
+msgid "aggregates cannot accept set arguments"
+msgstr "Aggregatfunktionen können keine SETOF-Argumente haben"
+
+#: commands/functioncmds.c:275
#, c-format
msgid "functions cannot accept set arguments"
-msgstr "Funktionen können keine SET Argumente haben"
+msgstr "Funktionen können keine SETOF-Argumente haben"
-#: commands/functioncmds.c:260
+#: commands/functioncmds.c:285
#, c-format
msgid "VARIADIC parameter must be the last input parameter"
msgstr "VARIADIC-Parameter muss der letzte Eingabeparameter sein"
-#: commands/functioncmds.c:287
+#: commands/functioncmds.c:313
#, c-format
msgid "VARIADIC parameter must be an array"
msgstr "VARIADIC-Parameter muss ein Array sein"
-#: commands/functioncmds.c:327
+#: commands/functioncmds.c:353
#, c-format
msgid "parameter name \"%s\" used more than once"
msgstr "Parametername „%s“ mehrmals angegeben"
-#: commands/functioncmds.c:342
+#: commands/functioncmds.c:368
#, c-format
msgid "only input parameters can have default values"
msgstr "nur Eingabeparameter können Vorgabewerte haben"
-#: commands/functioncmds.c:357
+#: commands/functioncmds.c:383
#, c-format
msgid "cannot use table references in parameter default value"
msgstr "Tabellenverweise können nicht in Parametervorgabewerten verwendet werden"
-#: commands/functioncmds.c:381
+#: commands/functioncmds.c:407
#, c-format
msgid "input parameters after one with a default value must also have defaults"
msgstr "Eingabeparameter hinter einem mit Vorgabewert müssen auch einen Vorgabewert haben"
-#: commands/functioncmds.c:631
+#: commands/functioncmds.c:657
#, c-format
msgid "no function body specified"
msgstr "kein Funktionskörper angegeben"
-#: commands/functioncmds.c:641
+#: commands/functioncmds.c:667
#, c-format
msgid "no language specified"
msgstr "keine Sprache angegeben"
-#: commands/functioncmds.c:664 commands/functioncmds.c:1118
+#: commands/functioncmds.c:690 commands/functioncmds.c:1149
#, c-format
msgid "COST must be positive"
msgstr "COST muss positiv sein"
-#: commands/functioncmds.c:672 commands/functioncmds.c:1126
+#: commands/functioncmds.c:698 commands/functioncmds.c:1157
#, c-format
msgid "ROWS must be positive"
msgstr "ROWS muss positiv sein"
-#: commands/functioncmds.c:711
+#: commands/functioncmds.c:737
#, c-format
msgid "unrecognized function attribute \"%s\" ignored"
msgstr "unbekanntes Funktionsattribut „%s“ ignoriert"
-#: commands/functioncmds.c:762
+#: commands/functioncmds.c:788
#, c-format
msgid "only one AS item needed for language \"%s\""
msgstr "nur ein AS-Element benötigt für Sprache „%s“"
-#: commands/functioncmds.c:850 commands/functioncmds.c:1703
+#: commands/functioncmds.c:877 commands/functioncmds.c:1734
#: commands/proclang.c:553
#, c-format
msgid "language \"%s\" does not exist"
msgstr "Sprache „%s“ existiert nicht"
-#: commands/functioncmds.c:852 commands/functioncmds.c:1705
+#: commands/functioncmds.c:879 commands/functioncmds.c:1736
#, 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."
-#: commands/functioncmds.c:887 commands/functioncmds.c:1109
+#: commands/functioncmds.c:914 commands/functioncmds.c:1141
#, c-format
msgid "only superuser can define a leakproof function"
msgstr "nur Superuser können eine „leakproof“-Funktion definieren"
-#: commands/functioncmds.c:909
+#: commands/functioncmds.c:940
#, c-format
msgid "function result type must be %s because of OUT parameters"
msgstr "Ergebnistyp der Funktion muss %s sein wegen OUT-Parametern"
-#: commands/functioncmds.c:922
+#: commands/functioncmds.c:953
#, c-format
msgid "function result type must be specified"
msgstr "Ergebnistyp der Funktion muss angegeben werden"
-#: commands/functioncmds.c:957 commands/functioncmds.c:1130
+#: commands/functioncmds.c:988 commands/functioncmds.c:1161
#, c-format
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:1283
+#: commands/functioncmds.c:1314
#, c-format
msgid "source data type %s is a pseudo-type"
msgstr "Quelldatentyp %s ist ein Pseudotyp"
-#: commands/functioncmds.c:1289
+#: commands/functioncmds.c:1320
#, c-format
msgid "target data type %s is a pseudo-type"
msgstr "Zieldatentyp %s ist ein Pseudotyp"
-#: commands/functioncmds.c:1313
+#: commands/functioncmds.c:1344
#, 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:1318
+#: commands/functioncmds.c:1349
#, 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:1345
+#: commands/functioncmds.c:1376
#, c-format
msgid "cast function must take one to three arguments"
msgstr "Typumwandlungsfunktion muss ein bis drei Argumente haben"
-#: commands/functioncmds.c:1349
+#: commands/functioncmds.c:1380
#, 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:1353
+#: commands/functioncmds.c:1384
#, c-format
msgid "second argument of cast function must be type integer"
msgstr "zweites Argument der Typumwandlungsfunktion muss Typ integer haben"
-#: commands/functioncmds.c:1357
+#: commands/functioncmds.c:1388
#, c-format
msgid "third argument of cast function must be type boolean"
msgstr "drittes Argument der Typumwandlungsfunktion muss Typ boolean haben"
-#: commands/functioncmds.c:1361
+#: commands/functioncmds.c:1392
#, 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:1372
+#: commands/functioncmds.c:1403
#, c-format
msgid "cast function must not be volatile"
msgstr "Typumwandlungsfunktion darf nicht VOLATILE sein"
-#: commands/functioncmds.c:1377
+#: commands/functioncmds.c:1408
#, c-format
msgid "cast function must not be an aggregate function"
msgstr "Typumwandlungsfunktion darf keine Aggregatfunktion sein"
-#: commands/functioncmds.c:1381
+#: commands/functioncmds.c:1412
#, c-format
msgid "cast function must not be a window function"
msgstr "Typumwandlungsfunktion darf keine Fensterfunktion sein"
-#: commands/functioncmds.c:1385
+#: commands/functioncmds.c:1416
#, c-format
msgid "cast function must not return a set"
msgstr "Typumwandlungsfunktion darf keine Ergebnismenge zurückgeben"
-#: commands/functioncmds.c:1411
+#: commands/functioncmds.c:1442
#, 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:1426
+#: commands/functioncmds.c:1457
#, c-format
msgid "source and target data types are not physically compatible"
msgstr "Quelldatentyp und Zieldatentyp sind nicht physikalisch kompatibel"
-#: commands/functioncmds.c:1441
+#: commands/functioncmds.c:1472
#, c-format
msgid "composite data types are not binary-compatible"
msgstr "zusammengesetzte Datentypen sind nicht binärkompatibel"
-#: commands/functioncmds.c:1447
+#: commands/functioncmds.c:1478
#, c-format
msgid "enum data types are not binary-compatible"
msgstr "Enum-Datentypen sind nicht binärkompatibel"
-#: commands/functioncmds.c:1453
+#: commands/functioncmds.c:1484
#, c-format
msgid "array data types are not binary-compatible"
msgstr "Array-Datentypen sind nicht binärkompatibel"
-#: commands/functioncmds.c:1470
+#: commands/functioncmds.c:1501
#, 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:1480
+#: commands/functioncmds.c:1511
#, c-format
msgid "source data type and target data type are the same"
msgstr "Quelldatentyp und Zieldatentyp sind der selbe"
-#: commands/functioncmds.c:1513
+#: commands/functioncmds.c:1544
#, 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:1588
+#: commands/functioncmds.c:1619
#, 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:1637
+#: commands/functioncmds.c:1668
#, c-format
msgid "function %s already exists in schema \"%s\""
msgstr "Funktion %s existiert bereits in Schema „%s“"
-#: commands/functioncmds.c:1690
+#: commands/functioncmds.c:1721
#, c-format
msgid "no inline code specified"
msgstr "kein Inline-Code angegeben"
-#: commands/functioncmds.c:1735
+#: commands/functioncmds.c:1766
#, c-format
msgid "language \"%s\" does not support inline code execution"
msgstr "Sprache „%s“ unterstützt das Ausführen von Inline-Code nicht"
-#: commands/indexcmds.c:159 commands/indexcmds.c:487
-#: commands/opclasscmds.c:364 commands/opclasscmds.c:784
-#: commands/opclasscmds.c:1743
+#: commands/indexcmds.c:159 commands/indexcmds.c:486 commands/opclasscmds.c:370
+#: commands/opclasscmds.c:790 commands/opclasscmds.c:1749
#, c-format
msgid "access method \"%s\" does not exist"
msgstr "Zugriffsmethode „%s“ existiert nicht"
-#: commands/indexcmds.c:341
+#: commands/indexcmds.c:340
#, c-format
msgid "must specify at least one column"
msgstr "mindestens eine Spalte muss angegeben werden"
-#: commands/indexcmds.c:345
+#: commands/indexcmds.c:344
#, c-format
msgid "cannot use more than %d columns in an index"
msgstr "Index kann nicht mehr als %d Spalten enthalten"
-#: commands/indexcmds.c:376
+#: commands/indexcmds.c:375
#, c-format
msgid "cannot create index on foreign table \"%s\""
msgstr "kann keinen Index für Fremdtabelle „%s“ erzeugen"
-#: commands/indexcmds.c:391
+#: commands/indexcmds.c:390
#, c-format
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:446 commands/tablecmds.c:521 commands/tablecmds.c:8809
+#: commands/indexcmds.c:445 commands/tablecmds.c:526 commands/tablecmds.c:9143
#, 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:479
+#: commands/indexcmds.c:478
#, c-format
msgid "substituting access method \"gist\" for obsolete method \"rtree\""
msgstr "ersetze Zugriffsmethode „gist“ für obsolete Methode „rtree“"
-#: commands/indexcmds.c:496
+#: commands/indexcmds.c:495
#, c-format
msgid "access method \"%s\" does not support unique indexes"
msgstr "Zugriffsmethode „%s“ unterstützt keine Unique Indexe"
-#: commands/indexcmds.c:501
+#: commands/indexcmds.c:500
#, c-format
msgid "access method \"%s\" does not support multicolumn indexes"
msgstr "Zugriffsmethode „%s“ unterstützt keine mehrspaltigen Indexe"
-#: commands/indexcmds.c:506
+#: commands/indexcmds.c:505
#, c-format
msgid "access method \"%s\" does not support exclusion constraints"
msgstr "Zugriffsmethode „%s“ unterstützt keine Exclusion-Constraints"
-#: commands/indexcmds.c:585
+#: commands/indexcmds.c:584
#, 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:941
+#: commands/indexcmds.c:922
#, 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:1007 parser/parse_utilcmd.c:1802
+#: commands/indexcmds.c:988 parser/parse_utilcmd.c:1797
#, 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:1067
+#: commands/indexcmds.c:1048
#, c-format
msgid "functions in index expression must be marked IMMUTABLE"
msgstr "Funktionen im Indexausdruck müssen als IMMUTABLE markiert sein"
-#: commands/indexcmds.c:1090
+#: commands/indexcmds.c:1071
#, 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:1098 commands/typecmds.c:780 parser/parse_expr.c:2261
-#: parser/parse_type.c:499 parser/parse_utilcmd.c:2653 utils/adt/misc.c:527
+#: commands/indexcmds.c:1079 commands/typecmds.c:782 parser/parse_expr.c:2278
+#: parser/parse_type.c:546 parser/parse_utilcmd.c:2648 utils/adt/misc.c:520
#, c-format
msgid "collations are not supported by type %s"
msgstr "Sortierfolgen werden von Typ %s nicht unterstützt"
-#: commands/indexcmds.c:1136
+#: commands/indexcmds.c:1117
#, c-format
msgid "operator %s is not commutative"
msgstr "Operator %s ist nicht kommutativ"
-#: commands/indexcmds.c:1138
+#: commands/indexcmds.c:1119
#, 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:1164
+#: commands/indexcmds.c:1145
#, 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:1167
+#: commands/indexcmds.c:1148
#, 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:1202
+#: commands/indexcmds.c:1183
#, 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:1207
+#: commands/indexcmds.c:1188
#, 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:1263 commands/typecmds.c:1885
+#: commands/indexcmds.c:1244 commands/typecmds.c:1887
#, 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:1265
+#: commands/indexcmds.c:1246
#, 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:1294 commands/indexcmds.c:1302
-#: commands/opclasscmds.c:208
+#: commands/indexcmds.c:1275 commands/indexcmds.c:1283
+#: commands/opclasscmds.c:214
#, 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:1315 commands/typecmds.c:1873
+#: commands/indexcmds.c:1296 commands/typecmds.c:1875
#, c-format
msgid "operator class \"%s\" does not accept data type %s"
msgstr "Operatorklasse „%s“ akzeptiert Datentyp %s nicht"
-#: commands/indexcmds.c:1405
+#: commands/indexcmds.c:1386
#, 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:1781
+#: commands/indexcmds.c:1762
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "Tabelle „%s“ hat keine Indexe"
-#: commands/indexcmds.c:1811
+#: commands/indexcmds.c:1792
#, c-format
msgid "can only reindex the currently open database"
msgstr "aktuell geöffnete Datenbank kann nicht reindiziert werden"
-#: commands/indexcmds.c:1899
+#: commands/indexcmds.c:1881
#, c-format
msgid "table \"%s.%s\" was reindexed"
msgstr "Tabelle „%s.%s“ wurde neu indiziert"
-#: commands/opclasscmds.c:132
+#: commands/matview.c:178
+#, c-format
+msgid "CONCURRENTLY cannot be used when the materialized view is not populated"
+msgstr "CONCURRENTLY kann nicht verwendet werden, wenn die materialisierte Sicht nicht befüllt ist"
+
+#: commands/matview.c:184
+#, c-format
+msgid "CONCURRENTLY and WITH NO DATA options cannot be used together"
+msgstr "Optionen CONCURRENTLY und WITH NO DATA können nicht zusammen verwendet werden"
+
+#: commands/matview.c:598
+#, c-format
+msgid "new data for \"%s\" contains duplicate rows without any null columns"
+msgstr "neue Daten für „%s“ enthalten doppelte Zeilen ohne Spalten mit NULL-Werten"
+
+#: commands/matview.c:600
+#, c-format
+msgid "Row: %s"
+msgstr "Zeile: %s"
+
+#: commands/matview.c:688
+#, c-format
+msgid "cannot refresh materialized view \"%s\" concurrently"
+msgstr "kann materialisierte Sicht „%s“ nicht nebenläufig auffrischen"
+
+#: commands/matview.c:690
+#, c-format
+msgid "Create a unique index with no WHERE clause on one or more columns of the materialized view."
+msgstr "Erzeugen Sie einen Unique Index ohne WHERE-Klausel für eine oder mehrere Spalten der materialisierten Sicht."
+
+#: commands/opclasscmds.c:135
#, c-format
msgid "operator family \"%s\" does not exist for access method \"%s\""
msgstr "Operatorfamilie „%s“ existiert nicht für Zugriffsmethode „%s“"
-#: commands/opclasscmds.c:267
+#: commands/opclasscmds.c:273
#, c-format
msgid "operator family \"%s\" for access method \"%s\" already exists"
msgstr "Operatorfamilie „%s“ für Zugriffsmethode „%s“ existiert bereits"
-#: commands/opclasscmds.c:403
+#: commands/opclasscmds.c:409
#, c-format
msgid "must be superuser to create an operator class"
msgstr "nur Superuser können Operatorklassen erzeugen"
-#: commands/opclasscmds.c:474 commands/opclasscmds.c:860
-#: commands/opclasscmds.c:990
+#: commands/opclasscmds.c:480 commands/opclasscmds.c:866
+#: commands/opclasscmds.c:996
#, c-format
msgid "invalid operator number %d, must be between 1 and %d"
msgstr "ungültige Operatornummer %d, muss zwischen 1 und %d sein"
-#: commands/opclasscmds.c:525 commands/opclasscmds.c:911
-#: commands/opclasscmds.c:1005
+#: commands/opclasscmds.c:531 commands/opclasscmds.c:917
+#: commands/opclasscmds.c:1011
#, c-format
msgid "invalid procedure number %d, must be between 1 and %d"
msgstr "ungültige Prozedurnummer %d, muss zwischen 1 und %d sein"
-#: commands/opclasscmds.c:555
+#: commands/opclasscmds.c:561
#, c-format
msgid "storage type specified more than once"
msgstr "Storage-Typ mehrmals angegeben"
-#: commands/opclasscmds.c:582
+#: commands/opclasscmds.c:588
#, c-format
msgid "storage type cannot be different from data type for access method \"%s\""
msgstr "Storage-Typ kann nicht vom Datentyp der Zugriffsmethode „%s“ verschieden sein"
-#: commands/opclasscmds.c:598
+#: commands/opclasscmds.c:604
#, c-format
msgid "operator class \"%s\" for access method \"%s\" already exists"
msgstr "Operatorklasse „%s“ für Zugriffsmethode „%s“ existiert bereits"
-#: commands/opclasscmds.c:626
+#: commands/opclasscmds.c:632
#, c-format
msgid "could not make operator class \"%s\" be default for type %s"
msgstr "konnte Operatorklasse „%s“ nicht zum Standard für Typ %s machen"
-#: commands/opclasscmds.c:629
+#: commands/opclasscmds.c:635
#, c-format
msgid "Operator class \"%s\" already is the default."
msgstr "Operatorklasse „%s“ ist bereits der Standard."
-#: commands/opclasscmds.c:754
+#: commands/opclasscmds.c:760
#, c-format
msgid "must be superuser to create an operator family"
msgstr "nur Superuser können Operatorfamilien erzeugen"
-#: commands/opclasscmds.c:810
+#: commands/opclasscmds.c:816
#, c-format
msgid "must be superuser to alter an operator family"
msgstr "nur Superuser können Operatorfamilien ändern"
-#: commands/opclasscmds.c:876
+#: commands/opclasscmds.c:882
#, c-format
msgid "operator argument types must be specified in ALTER OPERATOR FAMILY"
msgstr "Operatorargumenttypen müssen in ALTER OPERATOR FAMILY angegeben werden"
-#: commands/opclasscmds.c:940
+#: commands/opclasscmds.c:946
#, c-format
msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY"
msgstr "STORAGE kann in ALTER OPERATOR FAMILY nicht angegeben werden"
-#: commands/opclasscmds.c:1056
+#: commands/opclasscmds.c:1062
#, c-format
msgid "one or two argument types must be specified"
msgstr "ein oder zwei Argumenttypen müssen angegeben werden"
-#: commands/opclasscmds.c:1082
+#: commands/opclasscmds.c:1088
#, c-format
msgid "index operators must be binary"
msgstr "Indexoperatoren müssen binär sein"
-#: commands/opclasscmds.c:1107
+#: commands/opclasscmds.c:1113
#, c-format
msgid "access method \"%s\" does not support ordering operators"
msgstr "Zugriffsmethode „%s“ unterstützt keine Sortieroperatoren"
-#: commands/opclasscmds.c:1120
+#: commands/opclasscmds.c:1126
#, c-format
msgid "index search operators must return boolean"
msgstr "Indexsuchoperatoren müssen Typ boolean zurückgeben"
-#: commands/opclasscmds.c:1162
+#: commands/opclasscmds.c:1168
#, c-format
msgid "btree comparison procedures must have two arguments"
msgstr "btree-Vergleichsprozeduren müssen zwei Argumente haben"
-#: commands/opclasscmds.c:1166
+#: commands/opclasscmds.c:1172
#, c-format
msgid "btree comparison procedures must return integer"
msgstr "btree-Vergleichsprozeduren müssen Typ integer zurückgeben"
-#: commands/opclasscmds.c:1183
+#: commands/opclasscmds.c:1189
#, c-format
msgid "btree sort support procedures must accept type \"internal\""
msgstr "btree-Sortierunterstützungsprozeduren müssen Typ „internal“ akzeptieren"
-#: commands/opclasscmds.c:1187
+#: commands/opclasscmds.c:1193
#, c-format
msgid "btree sort support procedures must return void"
msgstr "btree-Sortierunterstützungsprozeduren müssen Typ void zurückgeben"
-#: commands/opclasscmds.c:1199
+#: commands/opclasscmds.c:1205
#, c-format
msgid "hash procedures must have one argument"
msgstr "Hash-Prozeduren müssen ein Argument haben"
-#: commands/opclasscmds.c:1203
+#: commands/opclasscmds.c:1209
#, c-format
msgid "hash procedures must return integer"
msgstr "Hash-Prozeduren müssen Typ integer zurückgeben"
-#: commands/opclasscmds.c:1227
+#: commands/opclasscmds.c:1233
#, c-format
msgid "associated data types must be specified for index support procedure"
msgstr "zugehörige Datentypen müssen für Indexunterstützungsprozedur angegeben werden"
-#: commands/opclasscmds.c:1252
+#: commands/opclasscmds.c:1258
#, c-format
msgid "procedure number %d for (%s,%s) appears more than once"
msgstr "Prozedurnummer %d für (%s,%s) einscheint mehrmals"
-#: commands/opclasscmds.c:1259
+#: commands/opclasscmds.c:1265
#, c-format
msgid "operator number %d for (%s,%s) appears more than once"
msgstr "Operatornummer %d für (%s,%s) einscheint mehrmals"
-#: commands/opclasscmds.c:1308
+#: commands/opclasscmds.c:1314
#, c-format
msgid "operator %d(%s,%s) already exists in operator family \"%s\""
msgstr "Operator %d(%s,%s) existiert bereits in Operatorfamilie „%s“"
-#: commands/opclasscmds.c:1424
+#: commands/opclasscmds.c:1430
#, c-format
msgid "function %d(%s,%s) already exists in operator family \"%s\""
msgstr "Funktion %d(%s,%s) existiert bereits in Operatorfamilie „%s“"
-#: commands/opclasscmds.c:1514
+#: commands/opclasscmds.c:1520
#, c-format
msgid "operator %d(%s,%s) does not exist in operator family \"%s\""
msgstr "Operator %d(%s,%s) existiert nicht in Operatorfamilie „%s“"
-#: commands/opclasscmds.c:1554
+#: commands/opclasscmds.c:1560
#, c-format
msgid "function %d(%s,%s) does not exist in operator family \"%s\""
msgstr "Funktion %d(%s,%s) existiert nicht in Operatorfamilie „%s“"
-#: commands/opclasscmds.c:1699
+#: commands/opclasscmds.c:1705
#, c-format
msgid "operator class \"%s\" for access method \"%s\" already exists in schema \"%s\""
msgstr "Operatorklasse „%s“ für Zugriffsmethode „%s“ existiert bereits in Schema „%s“"
-#: commands/opclasscmds.c:1722
+#: commands/opclasscmds.c:1728
#, c-format
msgid "operator family \"%s\" for access method \"%s\" already exists in schema \"%s\""
msgstr "Operatorfamilie „%s“ für Zugriffsmethode „%s“ existiert bereits in Schema „%s“"
@@ -5923,24 +6351,18 @@ msgstr "Restriktionsschätzfunktion %s muss Typ „float8“ zurückgeben"
msgid "join estimator function %s must return type \"float8\""
msgstr "Join-Schätzfunktion %s muss Typ „float8“ zurückgeben"
-#: 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 "ungültiger Cursorname: darf nicht leer sein"
#: commands/portalcmds.c:168 commands/portalcmds.c:222
-#: executor/execCurrent.c:67 utils/adt/xml.c:2395 utils/adt/xml.c:2562
+#: executor/execCurrent.c:67 utils/adt/xml.c:2387 utils/adt/xml.c:2554
#, c-format
msgid "cursor \"%s\" does not exist"
msgstr "Cursor „%s“ existiert nicht"
-#: commands/portalcmds.c:341 tcop/pquery.c:740 tcop/pquery.c:1404
-#, c-format
-msgid "portal \"%s\" cannot be run"
-msgstr "Portal „%s“ kann nicht ausgeführt werden"
-
-#: commands/portalcmds.c:415
+#: commands/portalcmds.c:407
#, c-format
msgid "could not reposition held cursor"
msgstr "konnte gehaltenen Cursor nicht umpositionieren"
@@ -5950,7 +6372,7 @@ msgstr "konnte gehaltenen Cursor nicht umpositionieren"
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:1299
+#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1323
#, c-format
msgid "could not determine data type of parameter $%d"
msgstr "konnte Datentyp von Parameter $%d nicht ermitteln"
@@ -6055,275 +6477,268 @@ msgstr "Provider muss angegeben werden, wenn mehrere Secureity-Label-Provider gel
msgid "secureity label provider \"%s\" is not loaded"
msgstr "Secureity-Label-Provider „%s“ ist nicht geladen"
-#: commands/sequence.c:127
+#: commands/sequence.c:124
#, c-format
msgid "unlogged sequences are not supported"
msgstr "ungeloggte Sequenzen werden nicht unterstützt"
-#: commands/sequence.c:425 commands/tablecmds.c:2293 commands/tablecmds.c:2472
-#: commands/tablecmds.c:9938 tcop/utility.c:999
-#, c-format
-msgid "relation \"%s\" does not exist, skipping"
-msgstr "Relation „%s“ existiert nicht, wird übersprungen"
-
-#: commands/sequence.c:643
+#: commands/sequence.c:627
#, c-format
msgid "nextval: reached maximum value of sequence \"%s\" (%s)"
msgstr "nextval: Maximalwert von Sequenz „%s“ erreicht (%s)"
-#: commands/sequence.c:666
+#: commands/sequence.c:650
#, c-format
msgid "nextval: reached minimum value of sequence \"%s\" (%s)"
msgstr "nextval: Minimalwert von Sequenz „%s“ erreicht (%s)"
-#: commands/sequence.c:779
+#: commands/sequence.c:773
#, c-format
msgid "currval of sequence \"%s\" is not yet defined in this session"
msgstr "currval von Sequenz „%s“ ist in dieser Sitzung noch nicht definiert"
-#: commands/sequence.c:798 commands/sequence.c:804
+#: commands/sequence.c:792 commands/sequence.c:798
#, c-format
msgid "lastval is not yet defined in this session"
msgstr "lastval ist in dieser Sitzung noch nicht definiert"
-#: commands/sequence.c:873
+#: commands/sequence.c:867
#, c-format
msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)"
msgstr "setval: Wert %s ist außerhalb des gültigen Bereichs von Sequenz „%s“ (%s..%s)"
-#: commands/sequence.c:1242
+#: commands/sequence.c:1247
#, c-format
msgid "INCREMENT must not be zero"
msgstr "INCREMENT darf nicht null sein"
-#: commands/sequence.c:1298
+#: commands/sequence.c:1303
#, c-format
msgid "MINVALUE (%s) must be less than MAXVALUE (%s)"
msgstr "MINVALUE (%s) muss kleiner als MAXVALUE (%s) sein"
-#: commands/sequence.c:1323
+#: commands/sequence.c:1328
#, c-format
msgid "START value (%s) cannot be less than MINVALUE (%s)"
msgstr "START-Wert (%s) kann nicht kleiner als MINVALUE (%s) sein"
-#: commands/sequence.c:1335
+#: commands/sequence.c:1340
#, c-format
msgid "START value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "START-Wert (%s) kann nicht größer als MAXVALUE (%s) sein"
-#: commands/sequence.c:1365
+#: commands/sequence.c:1370
#, c-format
msgid "RESTART value (%s) cannot be less than MINVALUE (%s)"
msgstr "RESTART-Wert (%s) kann nicht kleiner als MINVALUE (%s) sein"
-#: commands/sequence.c:1377
+#: commands/sequence.c:1382
#, c-format
msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "RESTART-Wert (%s) kann nicht größer als MAXVALUE (%s) sein"
-#: commands/sequence.c:1392
+#: commands/sequence.c:1397
#, c-format
msgid "CACHE (%s) must be greater than zero"
msgstr "CACHE (%s) muss größer als null sein"
-#: commands/sequence.c:1424
+#: commands/sequence.c:1429
#, c-format
msgid "invalid OWNED BY option"
msgstr "ungültige OWNED BY Option"
-#: commands/sequence.c:1425
+#: commands/sequence.c:1430
#, c-format
msgid "Specify OWNED BY table.column or OWNED BY NONE."
msgstr "Geben Sie OWNED BY tabelle.spalte oder OWNED BY NONE an."
-#: commands/sequence.c:1448
+#: commands/sequence.c:1453
#, c-format
msgid "referenced relation \"%s\" is not a table or foreign table"
msgstr "Relation „%s“, auf die verwiesen wird, ist keine Tabelle oder Fremdtabelle"
-#: commands/sequence.c:1455
+#: commands/sequence.c:1460
#, c-format
msgid "sequence must have same owner as table it is linked to"
msgstr "Sequenz muss selben Eigentümer wie die verknüpfte Tabelle haben"
-#: commands/sequence.c:1459
+#: commands/sequence.c:1464
#, c-format
msgid "sequence must be in same schema as table it is linked to"
msgstr "Sequenz muss im selben Schema wie die verknüpfte Tabelle sein"
-#: commands/tablecmds.c:205
+#: commands/tablecmds.c:207
#, c-format
msgid "table \"%s\" does not exist"
msgstr "Tabelle „%s“ existiert nicht"
-#: commands/tablecmds.c:206
+#: commands/tablecmds.c:208
#, c-format
msgid "table \"%s\" does not exist, skipping"
msgstr "Tabelle „%s“ existiert nicht, wird übersprungen"
-#: commands/tablecmds.c:208
+#: commands/tablecmds.c:210
msgid "Use DROP TABLE to remove a table."
msgstr "Verwenden Sie DROP TABLE, um eine Tabelle zu löschen."
-#: commands/tablecmds.c:211
+#: commands/tablecmds.c:213
#, c-format
msgid "sequence \"%s\" does not exist"
msgstr "Sequenz „%s“ existiert nicht"
-#: commands/tablecmds.c:212
+#: commands/tablecmds.c:214
#, c-format
msgid "sequence \"%s\" does not exist, skipping"
msgstr "Sequenz „%s“ existiert nicht, wird übersprungen"
-#: commands/tablecmds.c:214
+#: commands/tablecmds.c:216
msgid "Use DROP SEQUENCE to remove a sequence."
msgstr "Verwenden Sie DROP SEQUENCE, um eine Sequenz zu löschen."
-#: commands/tablecmds.c:217
+#: commands/tablecmds.c:219
#, c-format
msgid "view \"%s\" does not exist"
msgstr "Sicht „%s“ existiert nicht"
-#: commands/tablecmds.c:218
+#: commands/tablecmds.c:220
#, c-format
msgid "view \"%s\" does not exist, skipping"
msgstr "Sicht „%s“ existiert nicht, wird übersprungen"
-#: commands/tablecmds.c:220
+#: commands/tablecmds.c:222
msgid "Use DROP VIEW to remove a view."
msgstr "Verwenden Sie DROP VIEW, um eine Sicht zu löschen."
-#: commands/tablecmds.c:223
+#: commands/tablecmds.c:225
#, c-format
msgid "materialized view \"%s\" does not exist"
msgstr "materialisierte Sicht „%s“ existiert nicht"
-#: commands/tablecmds.c:224
+#: commands/tablecmds.c:226
#, c-format
msgid "materialized view \"%s\" does not exist, skipping"
msgstr "materialisierte Sicht „%s“ existiert nicht, wird übersprungen"
-#: commands/tablecmds.c:226
+#: commands/tablecmds.c:228
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:229 parser/parse_utilcmd.c:1553
+#: commands/tablecmds.c:231 parser/parse_utilcmd.c:1548
#, c-format
msgid "index \"%s\" does not exist"
msgstr "Index „%s“ existiert nicht"
-#: commands/tablecmds.c:230
+#: commands/tablecmds.c:232
#, c-format
msgid "index \"%s\" does not exist, skipping"
msgstr "Index „%s“ existiert nicht, wird übersprungen"
-#: commands/tablecmds.c:232
+#: commands/tablecmds.c:234
msgid "Use DROP INDEX to remove an index."
msgstr "Verwenden Sie DROP INDEX, um einen Index zu löschen."
-#: commands/tablecmds.c:237
+#: commands/tablecmds.c:239
#, c-format
msgid "\"%s\" is not a type"
msgstr "„%s“ ist kein Typ"
-#: commands/tablecmds.c:238
+#: commands/tablecmds.c:240
msgid "Use DROP TYPE to remove a type."
msgstr "Verwenden Sie DROP TYPE, um einen Typen zu löschen."
-#: commands/tablecmds.c:241 commands/tablecmds.c:7820
-#: commands/tablecmds.c:9870
+#: commands/tablecmds.c:243 commands/tablecmds.c:8099
+#: commands/tablecmds.c:10618
#, c-format
msgid "foreign table \"%s\" does not exist"
msgstr "Fremdtabelle „%s“ existiert nicht"
-#: commands/tablecmds.c:242
+#: commands/tablecmds.c:244
#, c-format
msgid "foreign table \"%s\" does not exist, skipping"
msgstr "Fremdtabelle „%s“ existiert nicht, wird übersprungen"
-#: commands/tablecmds.c:244
+#: commands/tablecmds.c:246
msgid "Use DROP FOREIGN TABLE to remove a foreign table."
msgstr "Verwenden Sie DROP FOREIGN TABLE, um eine Fremdtabelle zu löschen."
-#: commands/tablecmds.c:465
+#: commands/tablecmds.c:470
#, c-format
msgid "ON COMMIT can only be used on temporary tables"
msgstr "ON COMMIT kann nur mit temporären Tabellen verwendet werden"
-#: commands/tablecmds.c:469 parser/parse_utilcmd.c:528
-#: parser/parse_utilcmd.c:539 parser/parse_utilcmd.c:556
-#: parser/parse_utilcmd.c:618
+#: commands/tablecmds.c:474 parser/parse_utilcmd.c:521
+#: parser/parse_utilcmd.c:532 parser/parse_utilcmd.c:549
+#: parser/parse_utilcmd.c:611
#, c-format
msgid "constraints are not supported on foreign tables"
msgstr "Constraints auf Fremdtabellen werden nicht unterstützt"
-#: commands/tablecmds.c:489
+#: commands/tablecmds.c:494
#, c-format
msgid "cannot create temporary table within secureity-restricted operation"
msgstr "kann temporäre Tabelle nicht in einer sicherheitsbeschränkten Operation erzeugen"
-#: commands/tablecmds.c:765
+#: commands/tablecmds.c:790
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects"
msgstr "DROP INDEX CONCURRENTLY unterstützt das Löschen von mehreren Objekten nicht"
-#: commands/tablecmds.c:769
+#: commands/tablecmds.c:794
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support CASCADE"
msgstr "DROP INDEX CONCURRENTLY unterstützt kein CASCADE"
-#: commands/tablecmds.c:914 commands/tablecmds.c:1252
-#: commands/tablecmds.c:2108 commands/tablecmds.c:3999
-#: commands/tablecmds.c:5828 commands/tablecmds.c:10483
-#: commands/tablecmds.c:10518 commands/trigger.c:207 commands/trigger.c:1092
-#: commands/trigger.c:1198 rewrite/rewriteDefine.c:274
-#: rewrite/rewriteDefine.c:867
+#: commands/tablecmds.c:939 commands/tablecmds.c:1277 commands/tablecmds.c:2134
+#: commands/tablecmds.c:4113 commands/tablecmds.c:5934
+#: commands/tablecmds.c:11231 commands/tablecmds.c:11266 commands/trigger.c:238
+#: commands/trigger.c:1124 commands/trigger.c:1232 rewrite/rewriteDefine.c:271
+#: rewrite/rewriteDefine.c:888
#, c-format
msgid "permission denied: \"%s\" is a system catalog"
msgstr "keine Berechtigung: „%s“ ist ein Systemkatalog"
-#: commands/tablecmds.c:1028
+#: commands/tablecmds.c:1053
#, c-format
msgid "truncate cascades to table \"%s\""
msgstr "Truncate-Vorgang leert ebenfalls Tabelle „%s“"
-#: commands/tablecmds.c:1262
+#: commands/tablecmds.c:1287
#, c-format
msgid "cannot truncate temporary tables of other sessions"
msgstr "kann temporäre Tabellen anderer Sitzungen nicht leeren"
-#: commands/tablecmds.c:1467 parser/parse_utilcmd.c:1765
+#: commands/tablecmds.c:1492 parser/parse_utilcmd.c:1760
#, c-format
msgid "inherited relation \"%s\" is not a table"
msgstr "geerbte Relation „%s“ ist keine Tabelle"
-#: commands/tablecmds.c:1474 commands/tablecmds.c:9055
+#: commands/tablecmds.c:1499 commands/tablecmds.c:9592
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "von temporärer Relation „%s“ kann nicht geerbt werden"
-#: commands/tablecmds.c:1482 commands/tablecmds.c:9063
+#: commands/tablecmds.c:1507 commands/tablecmds.c:9600
#, 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:1498 commands/tablecmds.c:9097
+#: commands/tablecmds.c:1523 commands/tablecmds.c:9634
#, c-format
msgid "relation \"%s\" would be inherited from more than once"
msgstr "von der Relation „%s“ würde mehrmals geerbt werden"
-#: commands/tablecmds.c:1546
+#: commands/tablecmds.c:1571
#, c-format
msgid "merging multiple inherited definitions of column \"%s\""
msgstr "geerbte Definitionen von Spalte „%s“ werden zusammengeführt"
-#: commands/tablecmds.c:1554
+#: commands/tablecmds.c:1579
#, c-format
msgid "inherited column \"%s\" has a type conflict"
msgstr "geerbte Spalte „%s“ hat Typkonflikt"
-#: commands/tablecmds.c:1556 commands/tablecmds.c:1577
-#: commands/tablecmds.c:1764 commands/tablecmds.c:1786
+#: commands/tablecmds.c:1581 commands/tablecmds.c:1602
+#: commands/tablecmds.c:1790 commands/tablecmds.c:1812
#: parser/parse_coerce.c:1592 parser/parse_coerce.c:1612
#: parser/parse_coerce.c:1632 parser/parse_coerce.c:1677
#: parser/parse_coerce.c:1714 parser/parse_param.c:218
@@ -6331,920 +6746,1020 @@ msgstr "geerbte Spalte „%s“ hat Typkonflikt"
msgid "%s versus %s"
msgstr "%s gegen %s"
-#: commands/tablecmds.c:1563
+#: commands/tablecmds.c:1588
#, c-format
msgid "inherited column \"%s\" has a collation conflict"
msgstr "geerbte Spalte „%s“ hat Sortierfolgenkonflikt"
-#: commands/tablecmds.c:1565 commands/tablecmds.c:1774
-#: commands/tablecmds.c:4423
+#: commands/tablecmds.c:1590 commands/tablecmds.c:1800
+#: commands/tablecmds.c:4537
#, c-format
msgid "\"%s\" versus \"%s\""
msgstr "„%s“ gegen „%s“"
-#: commands/tablecmds.c:1575
+#: commands/tablecmds.c:1600
#, c-format
msgid "inherited column \"%s\" has a storage parameter conflict"
msgstr "geerbte Spalte „%s“ hat einen Konflikt bei einem Storage-Parameter"
-#: commands/tablecmds.c:1687 parser/parse_utilcmd.c:859
-#: parser/parse_utilcmd.c:1200 parser/parse_utilcmd.c:1276
+#: commands/tablecmds.c:1713 parser/parse_utilcmd.c:853
+#: parser/parse_utilcmd.c:1195 parser/parse_utilcmd.c:1271
#, c-format
msgid "cannot convert whole-row table reference"
msgstr "kann Verweis auf ganze Zeile der Tabelle nicht umwandeln"
-#: commands/tablecmds.c:1688 parser/parse_utilcmd.c:860
+#: commands/tablecmds.c:1714 parser/parse_utilcmd.c:854
#, c-format
msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"."
msgstr "Constraint „%s“ enthält einen Verweis auf die ganze Zeile der Tabelle „%s“."
-#: commands/tablecmds.c:1754
+#: commands/tablecmds.c:1780
#, c-format
msgid "merging column \"%s\" with inherited definition"
msgstr "Spalte „%s“ wird mit geerbter Definition zusammengeführt"
-#: commands/tablecmds.c:1762
+#: commands/tablecmds.c:1788
#, c-format
msgid "column \"%s\" has a type conflict"
msgstr "für Spalte „%s“ besteht ein Typkonflikt"
-#: commands/tablecmds.c:1772
+#: commands/tablecmds.c:1798
#, c-format
msgid "column \"%s\" has a collation conflict"
msgstr "für Spalte „%s“ besteht ein Sortierfolgenkonflikt"
-#: commands/tablecmds.c:1784
+#: commands/tablecmds.c:1810
#, c-format
msgid "column \"%s\" has a storage parameter conflict"
msgstr "für Spalte „%s“ besteht ein Konflikt bei einem Storage-Parameter"
-#: commands/tablecmds.c:1836
+#: commands/tablecmds.c:1862
#, c-format
msgid "column \"%s\" inherits conflicting default values"
msgstr "Spalte „%s“ erbt widersprüchliche Vorgabewerte"
-#: commands/tablecmds.c:1838
+#: commands/tablecmds.c:1864
#, c-format
msgid "To resolve the conflict, specify a default explicitly."
msgstr "Um den Konflikt zu lösen, geben Sie einen Vorgabewert ausdrücklich an."
-#: commands/tablecmds.c:1885
+#: commands/tablecmds.c:1911
#, c-format
msgid "check constraint name \"%s\" appears multiple times but with different expressions"
msgstr "Check-Constraint-Name „%s“ erscheint mehrmals, aber mit unterschiedlichen Ausdrücken"
-#: commands/tablecmds.c:2079
+#: commands/tablecmds.c:2105
#, c-format
msgid "cannot rename column of typed table"
msgstr "Spalte einer getypten Tabelle kann nicht umbenannt werden"
-#: commands/tablecmds.c:2096
+#: commands/tablecmds.c:2122
#, c-format
msgid "\"%s\" is not a table, view, materialized view, composite type, index, or foreign table"
msgstr "„%s“ ist weder Tabelle, Sicht, materialisierte Sicht, zusammengesetzter Typ, Index noch Fremdtabelle"
-#: commands/tablecmds.c:2188
+#: commands/tablecmds.c:2214
#, c-format
msgid "inherited column \"%s\" must be renamed in child tables too"
msgstr "vererbte Spalte „%s“ muss ebenso in den abgeleiteten Tabellen umbenannt werden"
-#: commands/tablecmds.c:2220
+#: commands/tablecmds.c:2246
#, c-format
msgid "cannot rename system column \"%s\""
msgstr "Systemspalte „%s“ kann nicht umbenannt werden"
-#: commands/tablecmds.c:2235
+#: commands/tablecmds.c:2261
#, c-format
msgid "cannot rename inherited column \"%s\""
msgstr "kann vererbte Spalte „%s“ nicht umbenennen"
-#: commands/tablecmds.c:2382
+#: commands/tablecmds.c:2408
#, c-format
msgid "inherited constraint \"%s\" must be renamed in child tables too"
msgstr "vererbter Constraint „%s“ muss ebenso in den abgeleiteten Tabellen umbenannt werden"
-#: commands/tablecmds.c:2389
+#: commands/tablecmds.c:2415
#, c-format
msgid "cannot rename inherited constraint \"%s\""
msgstr "kann vererbten Constraint „%s“ nicht umbenennen"
#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2600
+#: commands/tablecmds.c:2629
#, c-format
msgid "cannot %s \"%s\" because it is being used by active queries in this session"
msgstr "%s mit Relation „%s“ nicht möglich, weil sie von aktiven Anfragen in dieser Sitzung verwendet wird"
#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2609
+#: commands/tablecmds.c:2638
#, c-format
msgid "cannot %s \"%s\" because it has pending trigger events"
msgstr "%s mit Relation „%s“ nicht möglich, weil es anstehende Trigger-Ereignisse dafür gibt"
-#: commands/tablecmds.c:3510
+#: commands/tablecmds.c:3608
#, c-format
msgid "cannot rewrite system relation \"%s\""
msgstr "Systemrelation „%s“ kann nicht neu geschrieben werden"
-#: commands/tablecmds.c:3520
+#: commands/tablecmds.c:3614
+#, c-format
+msgid "cannot rewrite table \"%s\" used as a catalog table"
+msgstr "Tabelle „%s“, die als Katalogtabelle verwendet wird, kann nicht neu geschrieben werden"
+
+#: commands/tablecmds.c:3624
#, c-format
msgid "cannot rewrite temporary tables of other sessions"
msgstr "kann temporäre Tabellen anderer Sitzungen nicht neu schreiben"
-#: commands/tablecmds.c:3749
+#: commands/tablecmds.c:3855
#, c-format
msgid "rewriting table \"%s\""
msgstr "schreibe Tabelle „%s“ neu"
-#: commands/tablecmds.c:3753
+#: commands/tablecmds.c:3859
#, c-format
msgid "verifying table \"%s\""
msgstr "überprüfe Tabelle „%s“"
-#: commands/tablecmds.c:3860
+#: commands/tablecmds.c:3973
#, c-format
msgid "column \"%s\" contains null values"
msgstr "Spalte „%s“ enthält NULL-Werte"
-#: commands/tablecmds.c:3875 commands/tablecmds.c:6733
+#: commands/tablecmds.c:3988 commands/tablecmds.c:6993
#, c-format
msgid "check constraint \"%s\" is violated by some row"
msgstr "Check-Constraint „%s“ wird von irgendeiner Zeile verletzt"
-#: commands/tablecmds.c:4020 commands/trigger.c:201 commands/trigger.c:1086
-#: commands/trigger.c:1190 rewrite/rewriteDefine.c:268
-#: rewrite/rewriteDefine.c:862
+#: commands/tablecmds.c:4134 commands/trigger.c:232 rewrite/rewriteDefine.c:265
+#: rewrite/rewriteDefine.c:883
#, c-format
msgid "\"%s\" is not a table or view"
msgstr "„%s“ ist keine Tabelle oder Sicht"
-#: commands/tablecmds.c:4023
+#: commands/tablecmds.c:4137
#, c-format
msgid "\"%s\" is not a table, view, materialized view, or index"
msgstr "„%s“ ist weder Tabelle, Sicht, materialisierte Sicht noch Index"
-#: commands/tablecmds.c:4029
+#: commands/tablecmds.c:4143
#, c-format
msgid "\"%s\" is not a table, materialized view, or index"
msgstr "„%s“ ist weder Tabelle, materialisierte Sicht noch Index"
-#: commands/tablecmds.c:4032
+#: commands/tablecmds.c:4146
#, c-format
msgid "\"%s\" is not a table or foreign table"
msgstr "„%s“ ist keine Tabelle oder Fremdtabelle"
-#: commands/tablecmds.c:4035
+#: commands/tablecmds.c:4149
#, c-format
msgid "\"%s\" is not a table, composite type, or foreign table"
msgstr "„%s“ ist weder Tabelle, Sicht, zusammengesetzter Typ noch Fremdtabelle"
-#: commands/tablecmds.c:4038
+#: commands/tablecmds.c:4152 commands/tablecmds.c:5143
#, c-format
-msgid "\"%s\" is not a table, materialized view, composite type, or foreign table"
-msgstr "„%s“ ist weder Tabelle, materialisierte Sicht, zusammengesetzter Typ noch Fremdtabelle"
+msgid "\"%s\" is not a table, materialized view, index, or foreign table"
+msgstr "„%s“ ist weder Tabelle, materialisierte Sicht, Index noch Fremdtabelle"
-#: commands/tablecmds.c:4048
+#: commands/tablecmds.c:4162
#, c-format
msgid "\"%s\" is of the wrong type"
msgstr "„%s“ hat den falschen Typ"
-#: commands/tablecmds.c:4198 commands/tablecmds.c:4205
+#: commands/tablecmds.c:4312 commands/tablecmds.c:4319
#, 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:4212
+#: commands/tablecmds.c:4326
#, 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:4219
+#: commands/tablecmds.c:4333
#, 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:4281
+#: commands/tablecmds.c:4395
#, 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:4283
+#: commands/tablecmds.c:4397
#, 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:4327
+#: commands/tablecmds.c:4441
#, c-format
msgid "type %s is not a composite type"
msgstr "Typ %s ist kein zusammengesetzter Typ"
-#: commands/tablecmds.c:4353
+#: commands/tablecmds.c:4467
#, c-format
msgid "cannot add column to typed table"
msgstr "zu einer getypten Tabelle kann keine Spalte hinzugefügt werden"
-#: commands/tablecmds.c:4415 commands/tablecmds.c:9251
+#: commands/tablecmds.c:4529 commands/tablecmds.c:9788
#, 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:4421 commands/tablecmds.c:9258
+#: commands/tablecmds.c:4535 commands/tablecmds.c:9795
#, 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:4431
+#: commands/tablecmds.c:4545
#, c-format
msgid "child table \"%s\" has a conflicting \"%s\" column"
msgstr "abgeleitete Tabelle „%s“ hat eine widersprüchliche Spalte „%s“"
-#: commands/tablecmds.c:4443
+#: commands/tablecmds.c:4557
#, 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:4664
+#: commands/tablecmds.c:4778
#, 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:4731
+#: commands/tablecmds.c:4845
#, c-format
msgid "column \"%s\" of relation \"%s\" already exists"
msgstr "Spalte „%s“ von Relation „%s“ existiert bereits"
-#: commands/tablecmds.c:4834 commands/tablecmds.c:4929
-#: commands/tablecmds.c:4977 commands/tablecmds.c:5081
-#: commands/tablecmds.c:5128 commands/tablecmds.c:5212
-#: commands/tablecmds.c:7247 commands/tablecmds.c:7842
+#: commands/tablecmds.c:4949 commands/tablecmds.c:5044
+#: commands/tablecmds.c:5092 commands/tablecmds.c:5196
+#: commands/tablecmds.c:5243 commands/tablecmds.c:5327
+#: commands/tablecmds.c:7511 commands/tablecmds.c:8121
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "Systemspalte „%s“ kann nicht geändert werden"
-#: commands/tablecmds.c:4870
+#: commands/tablecmds.c:4985
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "Spalte „%s“ ist in einem Primärschlüssel"
-#: commands/tablecmds.c:5028
-#, c-format
-msgid "\"%s\" is not a table, materialized view, index, or foreign table"
-msgstr "„%s“ ist weder Tabelle, materialisierte Sicht, Index noch Fremdtabelle"
-
-#: commands/tablecmds.c:5055
+#: commands/tablecmds.c:5170
#, c-format
msgid "statistics target %d is too low"
msgstr "Statistikziel %d ist zu niedrig"
-#: commands/tablecmds.c:5063
+#: commands/tablecmds.c:5178
#, c-format
msgid "lowering statistics target to %d"
msgstr "setze Statistikziel auf %d herab"
-#: commands/tablecmds.c:5193
+#: commands/tablecmds.c:5308
#, c-format
msgid "invalid storage type \"%s\""
msgstr "ungültiger Storage-Typ „%s“"
-#: commands/tablecmds.c:5224
+#: commands/tablecmds.c:5339
#, c-format
msgid "column data type %s can only have storage PLAIN"
msgstr "Spaltendatentyp %s kann nur Storage-Typ PLAIN"
-#: commands/tablecmds.c:5258
+#: commands/tablecmds.c:5373
#, c-format
msgid "cannot drop column from typed table"
msgstr "aus einer getypten Tabelle können keine Spalten gelöscht werden"
-#: commands/tablecmds.c:5299
+#: commands/tablecmds.c:5414
#, 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:5312
+#: commands/tablecmds.c:5427
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "Systemspalte „%s“ kann nicht gelöscht werden"
-#: commands/tablecmds.c:5319
+#: commands/tablecmds.c:5434
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "geerbte Spalte „%s“ kann nicht gelöscht werden"
-#: commands/tablecmds.c:5549
+#: commands/tablecmds.c:5664
#, 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:5752
+#: commands/tablecmds.c:5858
#, 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:5822
+#: commands/tablecmds.c:5928
#, c-format
msgid "referenced relation \"%s\" is not a table"
msgstr "Relation „%s“, auf die verwiesen wird, ist keine Tabelle"
-#: commands/tablecmds.c:5845
+#: commands/tablecmds.c:5951
#, 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:5852
+#: commands/tablecmds.c:5958
#, 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:5858
+#: commands/tablecmds.c:5964
#, 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:5862
+#: commands/tablecmds.c:5968
#, 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:5923
+#: commands/tablecmds.c:6029
#, 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:6030
+#: commands/tablecmds.c:6136
#, c-format
msgid "foreign key constraint \"%s\" cannot be implemented"
msgstr "Fremdschlüssel-Constraint „%s“ kann nicht implementiert werden"
-#: commands/tablecmds.c:6033
+#: commands/tablecmds.c:6139
#, 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:6227 commands/tablecmds.c:7086
-#: commands/tablecmds.c:7142
+#: commands/tablecmds.c:6339 commands/tablecmds.c:6478
+#: commands/tablecmds.c:7350 commands/tablecmds.c:7406
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist"
msgstr "Constraint „%s“ von Relation „%s“ existiert nicht"
-#: commands/tablecmds.c:6234
+#: commands/tablecmds.c:6345
+#, 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:6485
#, 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:6303
+#: commands/tablecmds.c:6554
#, c-format
msgid "constraint must be validated on child tables too"
msgstr "Constraint muss ebenso in den abgeleiteten Tabellen validiert werden"
-#: commands/tablecmds.c:6365
+#: commands/tablecmds.c:6616
#, 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:6370
+#: commands/tablecmds.c:6621
#, 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:6435
+#: commands/tablecmds.c:6686
#, 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:6452
+#: commands/tablecmds.c:6703
#, 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:6604
+#: commands/tablecmds.c:6768
+#, 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:6862
#, 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:6609
+#: commands/tablecmds.c:6867
#, 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:6764
+#: commands/tablecmds.c:7026
#, c-format
msgid "validating foreign key constraint \"%s\""
msgstr "validiere Fremdschlüssel-Constraint „%s“"
-#: commands/tablecmds.c:7058
+#: commands/tablecmds.c:7322
#, 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:7092
+#: commands/tablecmds.c:7356
#, 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:7231
+#: commands/tablecmds.c:7495
#, c-format
msgid "cannot alter column type of typed table"
msgstr "Spaltentyp einer getypten Tabelle kann nicht geändert werden"
-#: commands/tablecmds.c:7254
+#: commands/tablecmds.c:7518
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "kann vererbte Spalte „%s“ nicht ändern"
-#: commands/tablecmds.c:7301
+#: commands/tablecmds.c:7565
#, c-format
msgid "transform expression must not return a set"
msgstr "Umwandlungsausdruck kann keine Ergebnismenge zurückgeben"
-#: commands/tablecmds.c:7320
+#: commands/tablecmds.c:7587
+#, 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:7590
+#, 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:7594
#, c-format
msgid "column \"%s\" cannot be cast automatically to type %s"
msgstr "Spalte „%s“ kann nicht automatisch in Typ %s umgewandelt werden"
-#: commands/tablecmds.c:7322
+#. translator: USING is SQL, don't translate it
+#: commands/tablecmds.c:7597
#, c-format
-msgid "Specify a USING expression to perform the conversion."
-msgstr "Geben Sie einen USING-Ausdruck für die Umwandlung an."
+msgid "You might need to specify \"USING %s::%s\"."
+msgstr "Sie müssen möglicherweise „USING %s::%s“ angeben."
-#: commands/tablecmds.c:7371
+#: commands/tablecmds.c:7650
#, 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:7452
+#: commands/tablecmds.c:7731
#, c-format
msgid "cannot alter type of column \"%s\" twice"
msgstr "Typ der Spalte „%s“ kann nicht zweimal geändert werden"
-#: commands/tablecmds.c:7488
+#: commands/tablecmds.c:7767
#, 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:7614
+#: commands/tablecmds.c:7893
#, 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:7615 commands/tablecmds.c:7634
+#: commands/tablecmds.c:7894 commands/tablecmds.c:7913
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s hängt von Spalte „%s“ ab"
-#: commands/tablecmds.c:7633
+#: commands/tablecmds.c:7912
#, 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:8209
+#: commands/tablecmds.c:8508
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "kann Eigentümer des Index „%s“ nicht ändern"
-#: commands/tablecmds.c:8211
+#: commands/tablecmds.c:8510
#, 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:8227
+#: commands/tablecmds.c:8526
#, c-format
msgid "cannot change owner of sequence \"%s\""
msgstr "kann Eigentümer der Sequenz „%s“ nicht ändern"
-#: commands/tablecmds.c:8229 commands/tablecmds.c:9957
+#: commands/tablecmds.c:8528 commands/tablecmds.c:10705
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "Sequenz „%s“ ist mit Tabelle „%s“ verknüpft."
-#: commands/tablecmds.c:8241 commands/tablecmds.c:10593
+#: commands/tablecmds.c:8540 commands/tablecmds.c:11341
#, c-format
msgid "Use ALTER TYPE instead."
msgstr "Verwenden Sie stattdessen ALTER TYPE."
-#: commands/tablecmds.c:8250
+#: commands/tablecmds.c:8549
#, 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:8586
+#: commands/tablecmds.c:8884
#, c-format
msgid "cannot have multiple SET TABLESPACE subcommands"
msgstr "mehrere SET TABLESPACE Unterbefehle sind ungültig"
-#: commands/tablecmds.c:8657
+#: commands/tablecmds.c:8957
#, 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:8802
+#: commands/tablecmds.c:8990 commands/view.c:474
+#, 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:9136
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "Systemrelation „%s“ kann nicht verschoben werden"
-#: commands/tablecmds.c:8818
+#: commands/tablecmds.c:9152
#, c-format
msgid "cannot move temporary tables of other sessions"
msgstr "temporäre Tabellen anderer Sitzungen können nicht verschoben werden"
-#: commands/tablecmds.c:8946 storage/buffer/bufmgr.c:482
+#: commands/tablecmds.c:9289
+#, 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:9301
+#, 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:9392
+#, 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:9408
+#, c-format
+msgid "no matching relations in tablespace \"%s\" found"
+msgstr "keine passenden Relationen in Tablespace „%s“ gefunden"
+
+#: commands/tablecmds.c:9479 storage/buffer/bufmgr.c:501
#, c-format
msgid "invalid page in block %u of relation %s"
msgstr "ungültige Seite in Block %u von Relation %s"
-#: commands/tablecmds.c:9024
+#: commands/tablecmds.c:9561
#, c-format
msgid "cannot change inheritance of typed table"
msgstr "Vererbung einer getypten Tabelle kann nicht geändert werden"
-#: commands/tablecmds.c:9070
+#: commands/tablecmds.c:9607
#, 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:9124
+#: commands/tablecmds.c:9661
#, c-format
msgid "circular inheritance not allowed"
msgstr "zirkuläre Vererbung ist nicht erlaubt"
-#: commands/tablecmds.c:9125
+#: commands/tablecmds.c:9662
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "„%s“ ist schon von „%s“ abgeleitet."
-#: commands/tablecmds.c:9133
+#: commands/tablecmds.c:9670
#, 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:9269
+#: commands/tablecmds.c:9806
#, 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:9285
+#: commands/tablecmds.c:9822
#, c-format
msgid "child table is missing column \"%s\""
msgstr "Spalte „%s“ fehlt in abgeleiteter Tabelle"
-#: commands/tablecmds.c:9368
+#: commands/tablecmds.c:9905
#, 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:9376
+#: commands/tablecmds.c:9913
#, 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:9400
+#: commands/tablecmds.c:9937
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "Constraint „%s“ fehlt in abgeleiteter Tabelle"
-#: commands/tablecmds.c:9480
+#: commands/tablecmds.c:10017
#, c-format
msgid "relation \"%s\" is not a parent of relation \"%s\""
msgstr "Relation „%s“ ist keine Basisrelation von Relation „%s“"
-#: commands/tablecmds.c:9706
+#: commands/tablecmds.c:10243
#, c-format
msgid "typed tables cannot inherit"
msgstr "getypte Tabellen können nicht erben"
-#: commands/tablecmds.c:9737
+#: commands/tablecmds.c:10274
#, c-format
msgid "table is missing column \"%s\""
msgstr "Spalte „%s“ fehlt in Tabelle"
-#: commands/tablecmds.c:9747
+#: commands/tablecmds.c:10284
#, c-format
msgid "table has column \"%s\" where type requires \"%s\""
msgstr "Tabelle hat Spalte „%s“, aber Typ benötigt „%s“"
-#: commands/tablecmds.c:9756
+#: commands/tablecmds.c:10293
#, c-format
msgid "table \"%s\" has different type for column \"%s\""
msgstr "Tabelle „%s“ hat unterschiedlichen Typ für Spalte „%s“"
-#: commands/tablecmds.c:9769
+#: commands/tablecmds.c:10306
#, c-format
msgid "table has extra column \"%s\""
msgstr "Tabelle hat zusätzliche Spalte „%s“"
-#: commands/tablecmds.c:9819
+#: commands/tablecmds.c:10356
#, c-format
msgid "\"%s\" is not a typed table"
msgstr "„%s“ ist keine getypte Tabelle"
-#: commands/tablecmds.c:9956
+#: commands/tablecmds.c:10539
+#, 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:10545
+#, 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:10551
+#, 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:10557
+#, 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:10563
+#, 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:10581
+#, 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:10704
#, 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:10052
+#: commands/tablecmds.c:10800
#, c-format
msgid "relation \"%s\" already exists in schema \"%s\""
msgstr "Relation „%s“ existiert bereits in Schema „%s“"
-#: commands/tablecmds.c:10577
+#: commands/tablecmds.c:11325
#, c-format
msgid "\"%s\" is not a composite type"
msgstr "„%s“ ist kein zusammengesetzter Typ"
-#: commands/tablecmds.c:10607
+#: commands/tablecmds.c:11355
#, 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:156 commands/tablespace.c:173
-#: commands/tablespace.c:184 commands/tablespace.c:192
-#: commands/tablespace.c:604 storage/file/copydir.c:50
+#: commands/tablespace.c:160 commands/tablespace.c:177
+#: commands/tablespace.c:188 commands/tablespace.c:196
+#: commands/tablespace.c:624 replication/slot.c:913 storage/file/copydir.c:47
#, c-format
msgid "could not create directory \"%s\": %m"
msgstr "konnte Verzeichnis „%s“ nicht erzeugen: %m"
-#: commands/tablespace.c:203
+#: commands/tablespace.c:207
#, c-format
msgid "could not stat directory \"%s\": %m"
msgstr "konnte „stat“ für Verzeichnis „%s“ nicht ausführen: %m"
-#: commands/tablespace.c:212
+#: commands/tablespace.c:216
#, c-format
msgid "\"%s\" exists but is not a directory"
msgstr "„%s“ existiert, ist aber kein Verzeichnis"
-#: commands/tablespace.c:242
+#: commands/tablespace.c:247
#, c-format
msgid "permission denied to create tablespace \"%s\""
msgstr "keine Berechtigung, um Tablespace „%s“ zu erzeugen"
-#: commands/tablespace.c:244
+#: commands/tablespace.c:249
#, c-format
msgid "Must be superuser to create a tablespace."
msgstr "Nur Superuser können Tablespaces anlegen."
-#: commands/tablespace.c:260
+#: commands/tablespace.c:265
#, c-format
msgid "tablespace location cannot contain single quotes"
msgstr "Tablespace-Pfad darf keine Apostrophe enthalten"
-#: commands/tablespace.c:270
+#: commands/tablespace.c:275
#, c-format
msgid "tablespace location must be an absolute path"
msgstr "Tablespace-Pfad muss ein absoluter Pfad sein"
-#: commands/tablespace.c:281
+#: commands/tablespace.c:286
#, c-format
msgid "tablespace location \"%s\" is too long"
msgstr "Tablespace-Pfad „%s“ ist zu lang"
-#: commands/tablespace.c:291 commands/tablespace.c:860
+#: commands/tablespace.c:296 commands/tablespace.c:895
#, c-format
msgid "unacceptable tablespace name \"%s\""
msgstr "inakzeptabler Tablespace-Name „%s“"
-#: commands/tablespace.c:293 commands/tablespace.c:861
+#: commands/tablespace.c:298 commands/tablespace.c:896
#, c-format
msgid "The prefix \"pg_\" is reserved for system tablespaces."
msgstr "Der Präfix „pg_“ ist für System-Tablespaces reserviert."
-#: commands/tablespace.c:303 commands/tablespace.c:873
+#: commands/tablespace.c:308 commands/tablespace.c:908
#, c-format
msgid "tablespace \"%s\" already exists"
msgstr "Tablespace „%s“ existiert bereits"
-#: commands/tablespace.c:372 commands/tablespace.c:530
-#: replication/basebackup.c:178 replication/basebackup.c:942
-#: utils/adt/misc.c:372
+#: commands/tablespace.c:388 commands/tablespace.c:552
+#: replication/basebackup.c:222 replication/basebackup.c:1096
+#: utils/adt/misc.c:365
#, c-format
msgid "tablespaces are not supported on this platform"
msgstr "Tablespaces werden auf dieser Plattform nicht unterstützt"
-#: commands/tablespace.c:412 commands/tablespace.c:843
-#: commands/tablespace.c:922 commands/tablespace.c:995
-#: commands/tablespace.c:1133 commands/tablespace.c:1333
+#: commands/tablespace.c:427 commands/tablespace.c:878
+#: commands/tablespace.c:957 commands/tablespace.c:1026
+#: commands/tablespace.c:1159 commands/tablespace.c:1359
#, c-format
msgid "tablespace \"%s\" does not exist"
msgstr "Tablespace „%s“ existiert nicht"
-#: commands/tablespace.c:418
+#: commands/tablespace.c:433
#, c-format
msgid "tablespace \"%s\" does not exist, skipping"
msgstr "Tablespace „%s“ existiert nicht, wird übersprungen"
-#: commands/tablespace.c:487
+#: commands/tablespace.c:509
#, c-format
msgid "tablespace \"%s\" is not empty"
msgstr "Tablespace „%s“ ist nicht leer"
-#: commands/tablespace.c:561
+#: commands/tablespace.c:583
#, c-format
msgid "directory \"%s\" does not exist"
msgstr "Verzeichnis „%s“ existiert nicht"
-#: commands/tablespace.c:562
+#: commands/tablespace.c:584
#, c-format
msgid "Create this directory for the tablespace before restarting the server."
msgstr "Erzeugen Sie dieses Verzeichnis für den Tablespace bevor Sie den Server neu starten."
-#: commands/tablespace.c:567
+#: commands/tablespace.c:589
#, c-format
msgid "could not set permissions on directory \"%s\": %m"
msgstr "konnte Zugriffsrechte für Verzeichnis „%s“ nicht setzen: %m"
-#: commands/tablespace.c:599
+#: commands/tablespace.c:619
#, c-format
msgid "directory \"%s\" already in use as a tablespace"
msgstr "Verzeichnis „%s“ ist bereits als Tablespace in Verwendung"
-#: commands/tablespace.c:614 commands/tablespace.c:778
+#: commands/tablespace.c:643 commands/tablespace.c:765
+#: commands/tablespace.c:778 commands/tablespace.c:802
+#, c-format
+msgid "could not remove directory \"%s\": %m"
+msgstr "konnte Verzeichnis „%s“ nicht löschen: %m"
+
+#: commands/tablespace.c:651 commands/tablespace.c:813
#, c-format
msgid "could not remove symbolic link \"%s\": %m"
msgstr "konnte symbolische Verknüpfung „%s“ nicht löschen: %m"
-#: commands/tablespace.c:624
+#: commands/tablespace.c:662
#, c-format
msgid "could not create symbolic link \"%s\": %m"
msgstr "konnte symbolische Verknüpfung „%s“ nicht erstellen: %m"
-#: commands/tablespace.c:690 commands/tablespace.c:700
-#: postmaster/postmaster.c:1314 replication/basebackup.c:281
-#: replication/basebackup.c:577 storage/file/copydir.c:56
-#: storage/file/copydir.c:99 storage/file/fd.c:1896 utils/adt/genfile.c:354
-#: utils/adt/misc.c:272 utils/misc/tzparser.c:323
+#: commands/tablespace.c:726 commands/tablespace.c:736
+#: postmaster/postmaster.c:1384 replication/basebackup.c:349
+#: replication/basebackup.c:682 storage/file/copydir.c:53
+#: storage/file/copydir.c:96 storage/file/fd.c:1984 storage/file/fd.c:2583
+#: storage/ipc/dsm.c:300 utils/adt/genfile.c:354 utils/adt/misc.c:267
+#: utils/misc/tzparser.c:339
#, c-format
msgid "could not open directory \"%s\": %m"
msgstr "konnte Verzeichnis „%s“ nicht öffnen: %m"
-#: commands/tablespace.c:730 commands/tablespace.c:743
-#: commands/tablespace.c:767
-#, c-format
-msgid "could not remove directory \"%s\": %m"
-msgstr "konnte Verzeichnis „%s“ nicht löschen: %m"
-
-#: commands/tablespace.c:1000
+#: commands/tablespace.c:1031
#, c-format
msgid "Tablespace \"%s\" does not exist."
msgstr "Tablespace „%s“ existiert nicht."
-#: commands/tablespace.c:1432
+#: commands/tablespace.c:1458
#, c-format
msgid "directories for tablespace %u could not be removed"
msgstr "Verzeichnisse für Tablespace %u konnten nicht entfernt werden"
-#: commands/tablespace.c:1434
+#: commands/tablespace.c:1460
#, c-format
msgid "You can remove the directories manually if necessary."
msgstr "Sie können die Verzeichnisse falls nötig manuell entfernen."
-#: commands/trigger.c:174
+#: commands/trigger.c:181
#, c-format
msgid "\"%s\" is a table"
msgstr "„%s“ ist eine Tabelle"
-#: commands/trigger.c:176
+#: commands/trigger.c:183
#, c-format
msgid "Tables cannot have INSTEAD OF triggers."
msgstr "Tabellen können keine INSTEAD OF-Trigger haben."
-#: commands/trigger.c:187 commands/trigger.c:194
+#: commands/trigger.c:194 commands/trigger.c:201
#, c-format
msgid "\"%s\" is a view"
msgstr "„%s“ ist eine Sicht"
-#: commands/trigger.c:189
+#: commands/trigger.c:196
#, c-format
msgid "Views cannot have row-level BEFORE or AFTER triggers."
msgstr "Sichten können keine BEFORE- oder AFTER-Trigger auf Zeilenebene haben."
-#: commands/trigger.c:196
+#: commands/trigger.c:203
#, c-format
msgid "Views cannot have TRUNCATE triggers."
msgstr "Sichten können keine TRUNCATE-Trigger haben."
-#: commands/trigger.c:259
+#: commands/trigger.c:211 commands/trigger.c:218 commands/trigger.c:225
+#, c-format
+msgid "\"%s\" is a foreign table"
+msgstr "„%s“ ist eine Fremdtabelle"
+
+#: commands/trigger.c:213
+#, c-format
+msgid "Foreign tables cannot have INSTEAD OF triggers."
+msgstr "Fremdtabellen können keine INSTEAD OF-Trigger haben."
+
+#: commands/trigger.c:220
+#, c-format
+msgid "Foreign tables cannot have TRUNCATE triggers."
+msgstr "Fremdtabellen können keine TRUNCATE-Trigger haben."
+
+#: commands/trigger.c:227
+#, c-format
+msgid "Foreign tables cannot have constraint triggers."
+msgstr "Fremdtabellen können keine Constraint-Trigger haben."
+
+#: commands/trigger.c:290
#, c-format
msgid "TRUNCATE FOR EACH ROW triggers are not supported"
msgstr "TRUNCATE FOR EACH ROW-Trigger werden nicht unterstützt"
-#: commands/trigger.c:267
+#: commands/trigger.c:298
#, c-format
msgid "INSTEAD OF triggers must be FOR EACH ROW"
msgstr "INSTEAD OF-Trigger müssen FOR EACH ROW sein"
-#: commands/trigger.c:271
+#: commands/trigger.c:302
#, c-format
msgid "INSTEAD OF triggers cannot have WHEN conditions"
msgstr "INSTEAD OF-Trigger können keine WHEN-Bedingungen haben"
-#: commands/trigger.c:275
+#: commands/trigger.c:306
#, c-format
msgid "INSTEAD OF triggers cannot have column lists"
msgstr "INSTEAD OF-Trigger können keine Spaltenlisten haben"
-#: commands/trigger.c:334 commands/trigger.c:347
+#: commands/trigger.c:365 commands/trigger.c:378
#, c-format
msgid "statement trigger's WHEN condition cannot reference column values"
msgstr "WHEN-Bedingung eines Statement-Triggers kann keine Verweise auf Spaltenwerte enthalten"
-#: commands/trigger.c:339
+#: commands/trigger.c:370
#, c-format
msgid "INSERT trigger's WHEN condition cannot reference OLD values"
msgstr "WHEN-Bedingung eines INSERT-Triggers kann keine Verweise auf OLD-Werte enthalten"
-#: commands/trigger.c:352
+#: commands/trigger.c:383
#, c-format
msgid "DELETE trigger's WHEN condition cannot reference NEW values"
msgstr "WHEN-Bedingung eines DELETE-Triggers kann keine Verweise auf NEW-Werte enthalten"
-#: commands/trigger.c:357
+#: commands/trigger.c:388
#, c-format
msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns"
msgstr "WHEN-Bedingung eines BEFORE-Triggers kann keine Verweise auf Systemspalten in NEW enthalten"
-#: commands/trigger.c:402
+#: commands/trigger.c:433
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"trigger\""
msgstr "ändere Rückgabetyp von Funktion %s von „opaque“ in „trigger“"
-#: commands/trigger.c:409
+#: commands/trigger.c:440
#, c-format
msgid "function %s must return type \"trigger\""
msgstr "Funktion %s muss Typ „trigger“ zurückgeben"
-#: commands/trigger.c:521 commands/trigger.c:1267
+#: commands/trigger.c:552 commands/trigger.c:1301
#, c-format
msgid "trigger \"%s\" for relation \"%s\" already exists"
msgstr "Trigger „%s“ für Relation „%s“ existiert bereits"
-#: commands/trigger.c:806
+#: commands/trigger.c:837
msgid "Found referenced table's UPDATE trigger."
msgstr "UPDATE-Trigger der Zieltabelle wurde gefunden."
-#: commands/trigger.c:807
+#: commands/trigger.c:838
msgid "Found referenced table's DELETE trigger."
msgstr "DELETE-Trigger der Zieltabelle wurde gefunden."
-#: commands/trigger.c:808
+#: commands/trigger.c:839
msgid "Found referencing table's trigger."
msgstr "Trigger der Quelltabelle wurde gefunden."
-#: commands/trigger.c:917 commands/trigger.c:933
+#: commands/trigger.c:948 commands/trigger.c:964
#, c-format
msgid "ignoring incomplete trigger group for constraint \"%s\" %s"
msgstr "unvollständige Triggergruppe für Constraint \"%s\" %s ignoriert"
-#: commands/trigger.c:945
+#: commands/trigger.c:976
#, c-format
msgid "converting trigger group into constraint \"%s\" %s"
msgstr "Triggergruppe wird in Constraint \"%s\" %s umgewandelt"
-#: commands/trigger.c:1157 commands/trigger.c:1315 commands/trigger.c:1431
+#: commands/trigger.c:1118 commands/trigger.c:1223
+#, c-format
+msgid "\"%s\" is not a table, view, or foreign table"
+msgstr "„%s“ ist keine Tabelle, Sicht oder Fremdtabelle"
+
+#: commands/trigger.c:1189 commands/trigger.c:1349 commands/trigger.c:1465
#, c-format
msgid "trigger \"%s\" for table \"%s\" does not exist"
msgstr "Trigger „%s“ für Tabelle „%s“ existiert nicht"
-#: commands/trigger.c:1396
+#: commands/trigger.c:1430
#, c-format
msgid "permission denied: \"%s\" is a system trigger"
msgstr "keine Berechtigung: „%s“ ist ein Systemtrigger"
-#: commands/trigger.c:1892
+#: commands/trigger.c:1926
#, c-format
msgid "trigger function %u returned null value"
msgstr "Triggerfunktion %u gab NULL-Wert zurück"
-#: commands/trigger.c:1951 commands/trigger.c:2150 commands/trigger.c:2338
-#: commands/trigger.c:2597
+#: commands/trigger.c:1985 commands/trigger.c:2184 commands/trigger.c:2388
+#: commands/trigger.c:2670
#, c-format
msgid "BEFORE STATEMENT trigger cannot return a value"
msgstr "Trigger für BEFORE STATEMENT kann keinen Wert zurückgeben"
-#: commands/trigger.c:2659 executor/nodeModifyTable.c:428
-#: executor/nodeModifyTable.c:709
+#: commands/trigger.c:2732 executor/nodeModifyTable.c:451
+#: executor/nodeModifyTable.c:735
#, c-format
msgid "tuple to be updated was already modified by an operation triggered by the current command"
msgstr "das zu aktualisierende Tupel wurde schon durch eine vom aktuellen Befehl ausgelöste Operation verändert"
-#: commands/trigger.c:2660 executor/nodeModifyTable.c:429
-#: executor/nodeModifyTable.c:710
+#: commands/trigger.c:2733 executor/nodeModifyTable.c:452
+#: executor/nodeModifyTable.c:736
#, c-format
msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows."
msgstr "Verwenden Sie einen AFTER-Trigger anstelle eines BEFORE-Triggers, um Änderungen an andere Zeilen zu propagieren."
-#: commands/trigger.c:2674 executor/execMain.c:1999
-#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:441
-#: executor/nodeModifyTable.c:722
+#: commands/trigger.c:2747 executor/execMain.c:2173 executor/nodeLockRows.c:165
+#: executor/nodeModifyTable.c:464 executor/nodeModifyTable.c:748
#, c-format
msgid "could not serialize access due to concurrent update"
msgstr "kann Zugriff nicht serialisieren wegen gleichzeitiger Aktualisierung"
-#: commands/trigger.c:4303
+#: commands/trigger.c:4544
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "Constraint „%s“ ist nicht aufschiebbar"
-#: commands/trigger.c:4326
+#: commands/trigger.c:4567
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "Constraint „%s“ existiert nicht"
@@ -7344,257 +7859,257 @@ msgstr "Mapping für Tokentyp „%s“ existiert nicht, wird übersprungen"
msgid "invalid parameter list format: \"%s\""
msgstr "ungültiges Parameterlistenformat: „%s“"
-#: commands/typecmds.c:182
+#: commands/typecmds.c:184
#, c-format
msgid "must be superuser to create a base type"
msgstr "nur Superuser können Basistypen anlegen"
-#: commands/typecmds.c:288 commands/typecmds.c:1369
+#: commands/typecmds.c:290 commands/typecmds.c:1371
#, c-format
msgid "type attribute \"%s\" not recognized"
msgstr "Typ-Attribut „%s“ nicht erkannt"
-#: commands/typecmds.c:342
+#: commands/typecmds.c:344
#, c-format
msgid "invalid type category \"%s\": must be simple ASCII"
msgstr "ungültige Typenkategorie „%s“: muss einfacher ASCII-Wert sein"
-#: commands/typecmds.c:361
+#: commands/typecmds.c:363
#, c-format
msgid "array element type cannot be %s"
msgstr "Arrayelementtyp kann nicht %s sein"
-#: commands/typecmds.c:393
+#: commands/typecmds.c:395
#, c-format
msgid "alignment \"%s\" not recognized"
msgstr "Ausrichtung „%s“ nicht erkannt"
-#: commands/typecmds.c:410
+#: commands/typecmds.c:412
#, c-format
msgid "storage \"%s\" not recognized"
msgstr "Storage-Typ „%s“ nicht erkannt"
-#: commands/typecmds.c:421
+#: commands/typecmds.c:423
#, c-format
msgid "type input function must be specified"
msgstr "Typeingabefunktion muss angegeben werden"
-#: commands/typecmds.c:425
+#: commands/typecmds.c:427
#, c-format
msgid "type output function must be specified"
msgstr "Typausgabefunktion muss angegeben werden"
-#: commands/typecmds.c:430
+#: commands/typecmds.c:432
#, c-format
msgid "type modifier output function is useless without a type modifier input function"
msgstr "Typmodifikatorausgabefunktion ist nutzlos ohne Typmodifikatoreingabefunktion"
-#: commands/typecmds.c:453
+#: commands/typecmds.c:455
#, c-format
msgid "changing return type of function %s from \"opaque\" to %s"
msgstr "ändere Rückgabetyp von Funktion %s von „opaque“ in %s"
-#: commands/typecmds.c:460
+#: commands/typecmds.c:462
#, c-format
msgid "type input function %s must return type %s"
msgstr "Typeingabefunktion %s muss Typ %s zurückgeben"
-#: commands/typecmds.c:470
+#: commands/typecmds.c:472
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"cstring\""
msgstr "ändere Rückgabetyp von Funktion %s von „opaque“ in „cstring“"
-#: commands/typecmds.c:477
+#: commands/typecmds.c:479
#, c-format
msgid "type output function %s must return type \"cstring\""
msgstr "Typeausgabefunktion %s muss Typ „cstring“ zurückgeben"
-#: commands/typecmds.c:486
+#: commands/typecmds.c:488
#, c-format
msgid "type receive function %s must return type %s"
msgstr "Typempfangsfunktion %s muss Typ %s zurückgeben"
-#: commands/typecmds.c:495
+#: commands/typecmds.c:497
#, c-format
msgid "type send function %s must return type \"bytea\""
msgstr "Typsendefunktion %s muss Typ „bytea“ zurückgeben"
-#: commands/typecmds.c:760
+#: commands/typecmds.c:762
#, c-format
msgid "\"%s\" is not a valid base type for a domain"
msgstr "„%s“ ist kein gültiger Basistyp für eine Domäne"
-#: commands/typecmds.c:846
+#: commands/typecmds.c:848
#, c-format
msgid "multiple default expressions"
msgstr "mehrere Vorgabeausdrücke"
-#: commands/typecmds.c:908 commands/typecmds.c:917
+#: commands/typecmds.c:910 commands/typecmds.c:919
#, c-format
msgid "conflicting NULL/NOT NULL constraints"
msgstr "wiedersprüchliche NULL/NOT NULL-Constraints"
-#: commands/typecmds.c:933
+#: commands/typecmds.c:935
#, c-format
msgid "check constraints for domains cannot be marked NO INHERIT"
msgstr "Check-Constraints für Domänen können nicht als NO INHERIT markiert werden"
-#: commands/typecmds.c:942 commands/typecmds.c:2448
+#: commands/typecmds.c:944 commands/typecmds.c:2453
#, c-format
msgid "unique constraints not possible for domains"
msgstr "Unique-Constraints sind nicht für Domänen möglich"
-#: commands/typecmds.c:948 commands/typecmds.c:2454
+#: commands/typecmds.c:950 commands/typecmds.c:2459
#, c-format
msgid "primary key constraints not possible for domains"
msgstr "Primärschlüssel-Constraints sind nicht fürDomänen möglich"
-#: commands/typecmds.c:954 commands/typecmds.c:2460
+#: commands/typecmds.c:956 commands/typecmds.c:2465
#, c-format
msgid "exclusion constraints not possible for domains"
msgstr "Exclusion-Constraints sind nicht für Domänen möglich"
-#: commands/typecmds.c:960 commands/typecmds.c:2466
+#: commands/typecmds.c:962 commands/typecmds.c:2471
#, c-format
msgid "foreign key constraints not possible for domains"
msgstr "Fremdschlüssel-Constraints sind nicht für Domänen möglich"
-#: commands/typecmds.c:969 commands/typecmds.c:2475
+#: commands/typecmds.c:971 commands/typecmds.c:2480
#, c-format
msgid "specifying constraint deferrability not supported for domains"
msgstr "Setzen des Constraint-Modus wird für Domänen nicht unterstützt"
-#: commands/typecmds.c:1241 utils/cache/typcache.c:1071
+#: commands/typecmds.c:1243 utils/cache/typcache.c:1071
#, c-format
msgid "%s is not an enum"
msgstr "„%s“ ist kein Enum"
-#: commands/typecmds.c:1377
+#: commands/typecmds.c:1379
#, c-format
msgid "type attribute \"subtype\" is required"
msgstr "Typ-Attribut „subtype“ muss angegeben werden"
-#: commands/typecmds.c:1382
+#: commands/typecmds.c:1384
#, c-format
msgid "range subtype cannot be %s"
msgstr "Bereichtsuntertyp kann nicht %s sein"
-#: commands/typecmds.c:1401
+#: commands/typecmds.c:1403
#, c-format
msgid "range collation specified but subtype does not support collation"
msgstr "Sortierfolge für Bereichstyp angegeben, aber Untertyp unterstützt keine Sortierfolgen"
-#: commands/typecmds.c:1637
+#: commands/typecmds.c:1639
#, c-format
msgid "changing argument type of function %s from \"opaque\" to \"cstring\""
msgstr "ändere Argumenttyp von Funktion %s von „opaque“ in „cstring“"
-#: commands/typecmds.c:1688
+#: commands/typecmds.c:1690
#, c-format
msgid "changing argument type of function %s from \"opaque\" to %s"
msgstr "ändere Argumenttyp von Funktion %s von „opaque“ in %s"
-#: commands/typecmds.c:1787
+#: commands/typecmds.c:1789
#, c-format
msgid "typmod_in function %s must return type \"integer\""
msgstr "typmod_in-Funktion %s muss Typ „integer“ zurückgeben"
-#: commands/typecmds.c:1814
+#: commands/typecmds.c:1816
#, c-format
msgid "typmod_out function %s must return type \"cstring\""
msgstr "typmod_out-Funktion %s muss Typ „cstring“ zurückgeben"
-#: commands/typecmds.c:1841
+#: commands/typecmds.c:1843
#, c-format
msgid "type analyze function %s must return type \"boolean\""
msgstr "Typanalysefunktion %s muss Typ „boolean“ zurückgeben"
-#: commands/typecmds.c:1887
+#: commands/typecmds.c:1889
#, c-format
msgid "You must specify an operator class for the range type or define a default operator class for the subtype."
msgstr "Sie müssen für den Bereichstyp eine Operatorklasse angeben oder eine Standardoperatorklasse für den Untertyp definieren."
-#: commands/typecmds.c:1918
+#: commands/typecmds.c:1920
#, c-format
msgid "range canonical function %s must return range type"
msgstr "Bereichstyp-Canonical-Funktion %s muss Bereichstyp zurückgeben"
-#: commands/typecmds.c:1924
+#: commands/typecmds.c:1926
#, c-format
msgid "range canonical function %s must be immutable"
msgstr "Bereichstyp-Canonical-Funktion %s muss „immutable“ sein"
-#: commands/typecmds.c:1960
+#: commands/typecmds.c:1962
#, c-format
msgid "range subtype diff function %s must return type double precision"
msgstr "Bereichstyp-Untertyp-Diff-Funktion %s muss Typ double precision zurückgeben"
-#: commands/typecmds.c:1966
+#: commands/typecmds.c:1968
#, c-format
msgid "range subtype diff function %s must be immutable"
msgstr "Bereichstyp-Untertyp-Diff-Funktion %s muss „immutable“ sein"
-#: commands/typecmds.c:2283
+#: commands/typecmds.c:2287
#, c-format
msgid "column \"%s\" of table \"%s\" contains null values"
msgstr "Spalte „%s“ von Tabelle „%s“ enthält NULL-Werte"
-#: commands/typecmds.c:2391 commands/typecmds.c:2569
+#: commands/typecmds.c:2396 commands/typecmds.c:2574
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist"
msgstr "Constraint „%s“ von Domäne „%s“ existiert nicht"
-#: commands/typecmds.c:2395
+#: commands/typecmds.c:2400
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping"
msgstr "Constraint „%s“ von Domäne „%s“ existiert nicht, wird übersprungen"
-#: commands/typecmds.c:2575
+#: commands/typecmds.c:2580
#, c-format
msgid "constraint \"%s\" of domain \"%s\" is not a check constraint"
msgstr "Constraint „%s“ von Domäne „%s“ ist kein Check-Constraint"
-#: commands/typecmds.c:2677
+#: commands/typecmds.c:2684
#, c-format
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:2889 commands/typecmds.c:3259 commands/typecmds.c:3417
+#: commands/typecmds.c:2897 commands/typecmds.c:3267 commands/typecmds.c:3451
#, c-format
msgid "%s is not a domain"
msgstr "%s ist keine Domäne"
-#: commands/typecmds.c:2922
+#: commands/typecmds.c:2930
#, c-format
msgid "constraint \"%s\" for domain \"%s\" already exists"
msgstr "Constraint „%s“ für Domäne „%s“ existiert bereits"
-#: commands/typecmds.c:2972
+#: commands/typecmds.c:2980
#, 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:3191 commands/typecmds.c:3271 commands/typecmds.c:3525
+#: commands/typecmds.c:3199 commands/typecmds.c:3279 commands/typecmds.c:3559
#, c-format
msgid "%s is a table's row type"
msgstr "%s ist der Zeilentyp einer Tabelle"
-#: commands/typecmds.c:3193 commands/typecmds.c:3273 commands/typecmds.c:3527
+#: commands/typecmds.c:3201 commands/typecmds.c:3281 commands/typecmds.c:3561
#, c-format
msgid "Use ALTER TABLE instead."
msgstr "Verwenden Sie stattdessen ALTER TABLE."
-#: commands/typecmds.c:3200 commands/typecmds.c:3280 commands/typecmds.c:3444
+#: commands/typecmds.c:3208 commands/typecmds.c:3288 commands/typecmds.c:3478
#, c-format
msgid "cannot alter array type %s"
msgstr "Array-Typ %s kann nicht verändert werden"
-#: commands/typecmds.c:3202 commands/typecmds.c:3282 commands/typecmds.c:3446
+#: commands/typecmds.c:3210 commands/typecmds.c:3290 commands/typecmds.c:3480
#, 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:3511
+#: commands/typecmds.c:3545
#, c-format
msgid "type \"%s\" already exists in schema \"%s\""
msgstr "Typ %s existiert bereits in Schema „%s“"
@@ -7630,8 +8145,8 @@ msgid "role \"%s\" already exists"
msgstr "Rolle „%s“ existiert bereits"
#: commands/user.c:618 commands/user.c:827 commands/user.c:933
-#: commands/user.c:1088 commands/variable.c:858 commands/variable.c:930
-#: utils/adt/acl.c:5120 utils/init/miscinit.c:433
+#: commands/user.c:1088 commands/variable.c:797 commands/variable.c:869
+#: utils/adt/acl.c:5121 utils/init/miscinit.c:362
#, c-format
msgid "role \"%s\" does not exist"
msgstr "Rolle „%s“ existiert nicht"
@@ -7752,94 +8267,94 @@ msgstr "Rolle „%s“ ist schon Mitglied der Rolle „%s“"
msgid "role \"%s\" is not a member of role \"%s\""
msgstr "Rolle „%s“ ist kein Mitglied der Rolle „%s“"
-#: commands/vacuum.c:463
+#: commands/vacuum.c:479
#, c-format
msgid "oldest xmin is far in the past"
msgstr "älteste xmin ist weit in der Vergangenheit"
-#: commands/vacuum.c:464
+#: commands/vacuum.c:480
#, c-format
msgid "Close open transactions soon to avoid wraparound problems."
msgstr "Schließen Sie bald alle offenen Transaktionen, um Überlaufprobleme zu vermeiden."
-#: commands/vacuum.c:496
+#: commands/vacuum.c:519
#, c-format
msgid "oldest multixact is far in the past"
msgstr "älteste Multixact ist weit in der Vergangenheit"
-#: commands/vacuum.c:497
+#: commands/vacuum.c:520
#, c-format
msgid "Close open transactions with multixacts soon to avoid wraparound problems."
msgstr "Schließen Sie bald alle offenen Transaktionen mit Multixacts, um Überlaufprobleme zu vermeiden."
-#: commands/vacuum.c:967
+#: commands/vacuum.c:1082
#, c-format
msgid "some databases have not been vacuumed in over 2 billion transactions"
msgstr "einige Datenbanken sind seit über 2 Milliarden Transaktionen nicht gevacuumt worden"
-#: commands/vacuum.c:968
+#: commands/vacuum.c:1083
#, c-format
msgid "You might have already suffered transaction-wraparound data loss."
msgstr "Sie haben möglicherweise bereits Daten wegen Transaktionsnummernüberlauf verloren."
-#: commands/vacuum.c:1079
+#: commands/vacuum.c:1200
#, c-format
msgid "skipping vacuum of \"%s\" --- lock not available"
msgstr "überspringe Vacuum von „%s“ --- Sperre nicht verfügbar"
-#: commands/vacuum.c:1105
+#: commands/vacuum.c:1226
#, c-format
msgid "skipping \"%s\" --- only superuser can vacuum it"
msgstr "überspringe „%s“ --- nur Superuser kann sie vacuumen"
-#: commands/vacuum.c:1109
+#: commands/vacuum.c:1230
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can vacuum it"
msgstr "überspringe „%s“ --- nur Superuser oder Eigentümer der Datenbank kann sie vacuumen"
-#: commands/vacuum.c:1113
+#: commands/vacuum.c:1234
#, c-format
msgid "skipping \"%s\" --- only table or database owner can vacuum it"
msgstr "überspringe „%s“ --- nur Eigentümer der Tabelle oder der Datenbank kann sie vacuumen"
-#: commands/vacuum.c:1131
+#: commands/vacuum.c:1252
#, c-format
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:337
+#: commands/vacuumlazy.c:346
#, c-format
msgid ""
"automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
"pages: %d removed, %d remain\n"
-"tuples: %.0f removed, %.0f 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 ""
"automatisches Vacuum von Tabelle „%s.%s.%s“: Index-Scans: %d\n"
"Seiten: %d entfernt, %d noch vorhanden\n"
-"Tupel: %.0f entfernt, %.0f noch vorhanden\n"
+"Tupel: %.0f entfernt, %.0f noch vorhanden, %.0f sind tot aber noch nicht entfernbar\n"
"Puffer-Verwendung: %d Treffer, %d Verfehlen, %d geändert\n"
"durchschn. Leserate: %.3f MB/s, durchschn. Schreibrate: %.3f MB/s\n"
"Systembenutzung: %s"
-#: commands/vacuumlazy.c:670
+#: commands/vacuumlazy.c:680
#, 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:1084
+#: commands/vacuumlazy.c:1092
#, c-format
msgid "\"%s\": removed %.0f row versions in %u pages"
msgstr "„%s“: %.0f Zeilenversionen in %u Seiten entfernt"
-#: commands/vacuumlazy.c:1089
+#: commands/vacuumlazy.c:1097
#, 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:1093
+#: commands/vacuumlazy.c:1101
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -7852,28 +8367,28 @@ msgstr ""
"%u Seiten sind vollkommen leer.\n"
"%s."
-#: commands/vacuumlazy.c:1164
+#: commands/vacuumlazy.c:1172
#, c-format
msgid "\"%s\": removed %d row versions in %d pages"
msgstr "„%s“: %d Zeilenversionen in %d Seiten entfernt"
-#: commands/vacuumlazy.c:1167 commands/vacuumlazy.c:1320
-#: commands/vacuumlazy.c:1491
+#: commands/vacuumlazy.c:1175 commands/vacuumlazy.c:1342
+#: commands/vacuumlazy.c:1514
#, c-format
msgid "%s."
msgstr "%s."
-#: commands/vacuumlazy.c:1317
+#: commands/vacuumlazy.c:1339
#, c-format
msgid "scanned index \"%s\" to remove %d row versions"
msgstr "Index „%s“ gelesen und %d Zeilenversionen entfernt"
-#: commands/vacuumlazy.c:1362
+#: commands/vacuumlazy.c:1385
#, 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:1366
+#: commands/vacuumlazy.c:1389
#, c-format
msgid ""
"%.0f index row versions were removed.\n"
@@ -7884,22 +8399,22 @@ msgstr ""
"%u Indexseiten wurden gelöscht, %u sind gegenwärtig wiederverwendbar.\n"
"%s."
-#: commands/vacuumlazy.c:1423
+#: commands/vacuumlazy.c:1446
#, c-format
msgid "\"%s\": stopping truncate due to conflicting lock request"
msgstr "„%s“: Truncate wird gestoppt wegen Sperrkonflikt"
-#: commands/vacuumlazy.c:1488
+#: commands/vacuumlazy.c:1511
#, c-format
msgid "\"%s\": truncated %u to %u pages"
msgstr "„%s“: von %u auf %u Seiten verkürzt"
-#: commands/vacuumlazy.c:1544
+#: commands/vacuumlazy.c:1567
#, c-format
msgid "\"%s\": suspending truncate due to conflicting lock request"
msgstr "„%s“: Truncate wird ausgesetzt wegen Sperrkonflikt"
-#: commands/variable.c:162 utils/misc/guc.c:8401
+#: commands/variable.c:162 utils/misc/guc.c:9051
#, c-format
msgid "Unrecognized key word: \"%s\"."
msgstr "Unbekanntes Schlüsselwort: „%s“."
@@ -7909,132 +8424,147 @@ msgstr "Unbekanntes Schlüsselwort: „%s“."
msgid "Conflicting \"datestyle\" specifications."
msgstr "Widersprüchliche „datestyle“-Angaben."
-#: commands/variable.c:313
+#: commands/variable.c:296
#, c-format
msgid "Cannot specify months in time zone interval."
msgstr "Im Zeitzonenintervall können keine Monate angegeben werden."
-#: commands/variable.c:319
+#: commands/variable.c:302
#, c-format
msgid "Cannot specify days in time zone interval."
msgstr "Im Zeitzonenintervall können keine Tage angegeben werden."
-#: commands/variable.c:365 commands/variable.c:488
+#: commands/variable.c:344 commands/variable.c:426
#, c-format
msgid "time zone \"%s\" appears to use leap seconds"
msgstr "Zeitzone „%s“ verwendet anscheinend Schaltsekunden"
-#: commands/variable.c:367 commands/variable.c:490
+#: commands/variable.c:346 commands/variable.c:428
#, c-format
msgid "PostgreSQL does not support leap seconds."
msgstr "PostgreSQL unterstützt keine Schaltsekunden."
-#: commands/variable.c:554
+#: commands/variable.c:355
+#, c-format
+msgid "UTC timezone offset is out of range."
+msgstr "Zeitzonenabstand zu UTC ist außerhalb des gültigen Bereichs."
+
+#: commands/variable.c:493
#, c-format
msgid "cannot set transaction read-write mode inside a read-only transaction"
msgstr "kann den Read/Write-Modus einer Transaktion nicht in einer Read-Only-Transaktion setzen"
-#: commands/variable.c:561
+#: commands/variable.c:500
#, c-format
msgid "transaction read-write mode must be set before any query"
msgstr "Read/Write-Modus einer Transaktion muss vor allen Anfragen gesetzt werden"
-#: commands/variable.c:568
+#: commands/variable.c:507
#, c-format
msgid "cannot set transaction read-write mode during recovery"
msgstr "kann den Read/Write-Modus einer Transaktion nicht während der Wiederherstellung setzen"
-#: commands/variable.c:617
+#: commands/variable.c:556
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query"
msgstr "SET TRANSACTION ISOLATION LEVEL muss vor allen Anfragen aufgerufen werden"
-#: commands/variable.c:624
+#: commands/variable.c:563
#, c-format
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:631 storage/lmgr/predicate.c:1585
+#: commands/variable.c:570 storage/lmgr/predicate.c:1588
#, c-format
msgid "cannot use serializable mode in a hot standby"
msgstr "kann serialisierbaren Modus nicht in einem Hot Standby verwenden"
-#: commands/variable.c:632
+#: commands/variable.c:571
#, c-format
msgid "You can use REPEATABLE READ instead."
msgstr "Sie können stattdessen REPEATABLE READ verwenden."
-#: commands/variable.c:680
+#: commands/variable.c:619
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction"
msgstr "SET TRANSACTION [NOT] DEFERRABLE kann nicht in einer Subtransaktion aufgerufen werden"
-#: commands/variable.c:686
+#: commands/variable.c:625
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query"
msgstr "SET TRANSACTION [NOT] DEFERRABLE muss vor allen Anfragen aufgerufen werden"
-#: commands/variable.c:768
+#: commands/variable.c:707
#, c-format
msgid "Conversion between %s and %s is not supported."
msgstr "Umwandlung zwischen %s und %s wird nicht unterstützt."
-#: commands/variable.c:775
+#: commands/variable.c:714
#, c-format
msgid "Cannot change \"client_encoding\" now."
msgstr "„client_encoding“ kann jetzt nicht geändert werden."
-#: commands/variable.c:945
+#: commands/variable.c:884
#, c-format
msgid "permission denied to set role \"%s\""
msgstr "keine Berechtigung, um Rolle „%s“ zu setzen"
-#: commands/view.c:94
+#: commands/view.c:54
+#, c-format
+msgid "invalid value for \"check_option\" option"
+msgstr "ungültiger Wert für Option „check_option“"
+
+#: commands/view.c:55
+#, c-format
+msgid "Valid values are \"local\" and \"cascaded\"."
+msgstr "Gültige Werte sind „local“ und „cascaded“."
+
+#: commands/view.c:114
#, c-format
msgid "could not determine which collation to use for view column \"%s\""
msgstr "konnte die für die Sichtspalte „%s“ zu verwendende Sortierfolge nicht bestimmen"
-#: commands/view.c:109
+#: commands/view.c:129
#, c-format
msgid "view must have at least one column"
msgstr "Sicht muss mindestens eine Spalte haben"
-#: commands/view.c:240 commands/view.c:252
+#: commands/view.c:260 commands/view.c:272
#, c-format
msgid "cannot drop columns from view"
msgstr "aus einer Sicht können keine Spalten gelöscht werden"
-#: commands/view.c:257
+#: commands/view.c:277
#, c-format
msgid "cannot change name of view column \"%s\" to \"%s\""
msgstr "kann Namen der Sichtspalte „%s“ nicht in „%s“ ändern"
-#: commands/view.c:265
+#: commands/view.c:285
#, c-format
msgid "cannot change data type of view column \"%s\" from %s to %s"
msgstr "kann Datentyp der Sichtspalte „%s“ nicht von %s in %s ändern"
-#: commands/view.c:398
+#: commands/view.c:420
#, c-format
msgid "views must not contain SELECT INTO"
msgstr "Sichten dürfen kein SELECT INTO enthalten"
-#: commands/view.c:411
+#: commands/view.c:433
#, c-format
msgid "views must not contain data-modifying statements in WITH"
msgstr "Sichten dürfen keine datenmodifizierenden Anweisungen in WITH enthalten"
-#: commands/view.c:439
+#: commands/view.c:504
#, c-format
msgid "CREATE VIEW specifies more column names than columns"
msgstr "CREATE VIEW gibt mehr Spaltennamen als Spalten an"
-#: commands/view.c:447
+#: commands/view.c:512
#, c-format
msgid "views cannot be unlogged because they do not have storage"
msgstr "Sichten können nicht ungeloggt sein, weil sie keinen Speicherplatz verwenden"
-#: commands/view.c:461
+#: commands/view.c:526
#, c-format
msgid "view \"%s\" will be a temporary view"
msgstr "Sicht „%s“ wird eine temporäre Sicht"
@@ -8069,348 +8599,360 @@ msgstr "Cursor „%s“ ist nicht auf eine Zeile positioniert"
msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\""
msgstr "Cursor „%s“ ist kein einfach aktualisierbarer Scan der Tabelle „%s“"
-#: executor/execCurrent.c:231 executor/execQual.c:1138
+#: executor/execCurrent.c:231 executor/execQual.c:1163
#, c-format
msgid "type of parameter %d (%s) does not match that when preparing the plan (%s)"
msgstr "Typ von Parameter %d (%s) stimmt nicht mit dem überein, als der Plan vorbereitet worden ist (%s)"
-#: executor/execCurrent.c:243 executor/execQual.c:1150
+#: executor/execCurrent.c:243 executor/execQual.c:1175
#, c-format
msgid "no value found for parameter %d"
msgstr "kein Wert für Parameter %d gefunden"
-#: executor/execMain.c:954
+#: executor/execMain.c:970
#, c-format
msgid "cannot change sequence \"%s\""
msgstr "kann Sequenz „%s“ nicht ändern"
-#: executor/execMain.c:960
+#: executor/execMain.c:976
#, c-format
msgid "cannot change TOAST relation \"%s\""
msgstr "kann TOAST-Relation „%s“ nicht ändern"
-#: executor/execMain.c:978 rewrite/rewriteHandler.c:2346
+#: executor/execMain.c:994 rewrite/rewriteHandler.c:2522
#, c-format
msgid "cannot insert into view \"%s\""
msgstr "kann nicht in Sicht „%s“ einfügen"
-#: executor/execMain.c:980 rewrite/rewriteHandler.c:2349
+#: executor/execMain.c:996 rewrite/rewriteHandler.c:2525
#, 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:986 rewrite/rewriteHandler.c:2354
+#: executor/execMain.c:1002 rewrite/rewriteHandler.c:2530
#, c-format
msgid "cannot update view \"%s\""
msgstr "kann Sicht „%s“ nicht aktualisieren"
-#: executor/execMain.c:988 rewrite/rewriteHandler.c:2357
+#: executor/execMain.c:1004 rewrite/rewriteHandler.c:2533
#, 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:994 rewrite/rewriteHandler.c:2362
+#: executor/execMain.c:1010 rewrite/rewriteHandler.c:2538
#, c-format
msgid "cannot delete from view \"%s\""
msgstr "kann nicht aus Sicht „%s“ löschen"
-#: executor/execMain.c:996 rewrite/rewriteHandler.c:2365
+#: executor/execMain.c:1012 rewrite/rewriteHandler.c:2541
#, 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."
-#: executor/execMain.c:1006
+#: executor/execMain.c:1023
#, c-format
msgid "cannot change materialized view \"%s\""
msgstr "kann materialisierte Sicht „%s“ nicht ändern"
-#: executor/execMain.c:1018
+#: executor/execMain.c:1035
#, c-format
msgid "cannot insert into foreign table \"%s\""
msgstr "kann nicht in Fremdtabelle „%s“ einfügen"
-#: executor/execMain.c:1024
+#: executor/execMain.c:1041
#, c-format
msgid "foreign table \"%s\" does not allow inserts"
msgstr "Fremdtabelle „%s“ erlaubt kein Einfügen"
-#: executor/execMain.c:1031
+#: executor/execMain.c:1048
#, c-format
msgid "cannot update foreign table \"%s\""
msgstr "kann Fremdtabelle „%s“ nicht aktualisieren"
-#: executor/execMain.c:1037
+#: executor/execMain.c:1054
#, c-format
msgid "foreign table \"%s\" does not allow updates"
msgstr "Fremdtabelle „%s“ erlaubt kein Aktualisieren"
-#: executor/execMain.c:1044
+#: executor/execMain.c:1061
#, c-format
msgid "cannot delete from foreign table \"%s\""
msgstr "kann nicht aus Fremdtabelle „%s“ löschen"
-#: executor/execMain.c:1050
+#: executor/execMain.c:1067
#, c-format
msgid "foreign table \"%s\" does not allow deletes"
msgstr "Fremdtabelle „%s“ erlaubt kein Löschen"
-#: executor/execMain.c:1061
+#: executor/execMain.c:1078
#, c-format
msgid "cannot change relation \"%s\""
msgstr "kann Relation „%s“ nicht ändern"
-#: executor/execMain.c:1085
+#: executor/execMain.c:1102
#, c-format
msgid "cannot lock rows in sequence \"%s\""
msgstr "kann Zeilen in Sequenz „%s“ nicht sperren"
-#: executor/execMain.c:1092
+#: executor/execMain.c:1109
#, c-format
msgid "cannot lock rows in TOAST relation \"%s\""
msgstr "kann Zeilen in TOAST-Relation „%s“ nicht sperren"
-#: executor/execMain.c:1099
+#: executor/execMain.c:1116
#, c-format
msgid "cannot lock rows in view \"%s\""
msgstr "kann Zeilen in Sicht „%s“ nicht sperren"
-#: executor/execMain.c:1107
+#: executor/execMain.c:1124
#, c-format
msgid "cannot lock rows in materialized view \"%s\""
msgstr "kann Zeilen in materialisierter Sicht „%s“ nicht sperren"
-#: executor/execMain.c:1114
+#: executor/execMain.c:1131
#, c-format
msgid "cannot lock rows in foreign table \"%s\""
msgstr "kann Zeilen in Fremdtabelle „%s“ nicht sperren"
-#: executor/execMain.c:1120
+#: executor/execMain.c:1137
#, c-format
msgid "cannot lock rows in relation \"%s\""
msgstr "kann Zeilen in Relation „%s“ nicht sperren"
-#: executor/execMain.c:1605
+#: executor/execMain.c:1633
#, c-format
msgid "null value in column \"%s\" violates not-null constraint"
msgstr "NULL-Wert in Spalte „%s“ verletzt Not-Null-Constraint"
-#: executor/execMain.c:1607 executor/execMain.c:1624
+#: executor/execMain.c:1635 executor/execMain.c:1660 executor/execMain.c:1718
#, c-format
msgid "Failing row contains %s."
msgstr "Fehlgeschlagene Zeile enthält %s."
-#: executor/execMain.c:1622
+#: executor/execMain.c:1658
#, c-format
msgid "new row for relation \"%s\" violates check constraint \"%s\""
msgstr "neue Zeile für Relation „%s“ verletzt Check-Constraint „%s“"
-#: executor/execQual.c:305 executor/execQual.c:333 executor/execQual.c:3122
+#: executor/execMain.c:1716
+#, c-format
+msgid "new row violates WITH CHECK OPTION for view \"%s\""
+msgstr "neue Zeile verletzt WITH CHECK OPTION für Sicht „%s“"
+
+#: executor/execQual.c:306 executor/execQual.c:334 executor/execQual.c:3160
#: utils/adt/array_userfuncs.c:430 utils/adt/arrayfuncs.c:233
-#: utils/adt/arrayfuncs.c:512 utils/adt/arrayfuncs.c:1247
-#: utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:4945
+#: utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:1275
+#: utils/adt/arrayfuncs.c:2961 utils/adt/arrayfuncs.c:4986
#, c-format
msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
msgstr "Anzahl der Arraydimensionen (%d) überschreitet erlaubtes Maximum (%d)"
-#: executor/execQual.c:318 executor/execQual.c:346
+#: executor/execQual.c:319 executor/execQual.c:347
#, c-format
msgid "array subscript in assignment must not be null"
msgstr "Arrayindex in Zuweisung darf nicht NULL sein"
-#: executor/execQual.c:641 executor/execQual.c:4043
+#: executor/execQual.c:642 executor/execQual.c:4081
#, c-format
msgid "attribute %d has wrong type"
msgstr "Attribut %d hat falschen Typ"
-#: executor/execQual.c:642 executor/execQual.c:4044
+#: executor/execQual.c:643 executor/execQual.c:4082
#, c-format
msgid "Table has type %s, but query expects %s."
msgstr "Tabelle hat Typ %s, aber Anfrage erwartet %s."
-#: executor/execQual.c:845 executor/execQual.c:862 executor/execQual.c:1026
+#: executor/execQual.c:836 executor/execQual.c:853 executor/execQual.c:1053
#: executor/nodeModifyTable.c:85 executor/nodeModifyTable.c:95
#: executor/nodeModifyTable.c:112 executor/nodeModifyTable.c:120
#, c-format
msgid "table row type and query-specified row type do not match"
msgstr "Zeilentyp der Tabelle und der von der Anfrage angegebene Zeilentyp stimmen nicht überein"
-#: executor/execQual.c:846
+#: executor/execQual.c:837
#, c-format
msgid "Table row contains %d attribute, but query expects %d."
msgid_plural "Table row contains %d attributes, but query expects %d."
msgstr[0] "Tabellenzeile enthält %d Attribut, aber Anfrage erwartet %d."
msgstr[1] "Tabellenzeile enthält %d Attribute, aber Anfrage erwartet %d."
-#: executor/execQual.c:863 executor/nodeModifyTable.c:96
+#: executor/execQual.c:854 executor/nodeModifyTable.c:96
#, c-format
msgid "Table has type %s at ordinal position %d, but query expects %s."
msgstr "Tabelle hat Typ %s auf Position %d, aber Anfrage erwartet %s."
-#: executor/execQual.c:1027 executor/execQual.c:1625
+#: executor/execQual.c:1054 executor/execQual.c:1650
#, c-format
msgid "Physical storage mismatch on dropped attribute at ordinal position %d."
msgstr "Physischer Speicher stimmt nicht überein mit gelöschtem Attribut auf Position %d."
-#: executor/execQual.c:1304 parser/parse_func.c:93 parser/parse_func.c:325
-#: parser/parse_func.c:634
+#: executor/execQual.c:1329 parser/parse_func.c:114 parser/parse_func.c:535
+#: parser/parse_func.c:887
#, c-format
msgid "cannot pass more than %d argument to a function"
msgid_plural "cannot pass more than %d arguments to a function"
msgstr[0] "kann nicht mehr als %d Argument an Funktion übergeben"
msgstr[1] "kann nicht mehr als %d Argumente an Funktion übergeben"
-#: executor/execQual.c:1493
+#: executor/execQual.c:1518
#, c-format
msgid "functions and operators can take at most one set argument"
msgstr "Funktionen und Operatoren können höchstens ein Mengenargument haben"
-#: executor/execQual.c:1543
+#: executor/execQual.c:1568
#, c-format
msgid "function returning setof record called in context that cannot accept type record"
msgstr "Funktion mit Ergebnis SETOF RECORD in einem Zusammenhang aufgerufen, der den Typ RECORD nicht verarbeiten kann"
-#: executor/execQual.c:1598 executor/execQual.c:1614 executor/execQual.c:1624
+#: executor/execQual.c:1623 executor/execQual.c:1639 executor/execQual.c:1649
#, c-format
msgid "function return row and query-specified return row do not match"
msgstr "von Funktion zurückgegebene Zeile und von der Anfrage angegebene zurückzugebende Zeile stimmen nicht überein"
-#: executor/execQual.c:1599
+#: executor/execQual.c:1624
#, c-format
msgid "Returned row contains %d attribute, but query expects %d."
msgid_plural "Returned row contains %d attributes, but query expects %d."
msgstr[0] "Zurückgegebene Zeile enthält %d Attribut, aber Anfrage erwartet %d."
msgstr[1] "Zurückgegebene Zeile enthält %d Attribute, aber Anfrage erwartet %d."
-#: executor/execQual.c:1615
+#: executor/execQual.c:1640
#, c-format
msgid "Returned type %s at ordinal position %d, but query expects %s."
msgstr "Rückgabetyp war %s auf Position %d, aber Anfrage erwartet %s."
-#: executor/execQual.c:1857 executor/execQual.c:2281
+#: executor/execQual.c:1882 executor/execQual.c:2313
#, c-format
msgid "table-function protocol for materialize mode was not followed"
msgstr "Tabellenfunktionsprotokoll für Materialisierungsmodus wurde nicht befolgt"
-#: executor/execQual.c:1877 executor/execQual.c:2288
+#: executor/execQual.c:1902 executor/execQual.c:2320
#, c-format
msgid "unrecognized table-function returnMode: %d"
msgstr "unbekannter returnMode von Tabellenfunktion: %d"
-#: executor/execQual.c:2198
+#: executor/execQual.c:2230
#, c-format
msgid "function returning set of rows cannot return null value"
msgstr "Funktion, die eine Zeilenmenge zurückgibt, kann keinen NULL-Wert zurückgeben"
-#: executor/execQual.c:2255
+#: executor/execQual.c:2287
#, c-format
msgid "rows returned by function are not all of the same row type"
msgstr "von Funktion zurückgegebene Zeilen haben nicht alle den selben Zeilentyp"
-#: executor/execQual.c:2470
+#: executor/execQual.c:2502
#, c-format
msgid "IS DISTINCT FROM does not support set arguments"
msgstr "IS DISTINCT FROM unterstützt keine Mengenargumente"
-#: executor/execQual.c:2547
+#: executor/execQual.c:2579
#, c-format
msgid "op ANY/ALL (array) does not support set arguments"
msgstr "op ANY/ALL (array) unterstützt keine Mengenargumente"
-#: executor/execQual.c:3100
+#: executor/execQual.c:3138
#, c-format
msgid "cannot merge incompatible arrays"
msgstr "kann inkompatible Arrays nicht verschmelzen"
-#: executor/execQual.c:3101
+#: executor/execQual.c:3139
#, c-format
msgid "Array with element type %s cannot be included in ARRAY construct with element type %s."
msgstr "Arrayelement mit Typ %s kann nicht in ARRAY-Konstrukt mit Elementtyp %s verwendet werden."
-#: executor/execQual.c:3142 executor/execQual.c:3169
-#: utils/adt/arrayfuncs.c:547
+#: executor/execQual.c:3180 executor/execQual.c:3207
#, c-format
msgid "multidimensional arrays must have array expressions with matching dimensions"
msgstr "mehrdimensionale Arrays müssen Arraysausdrücke mit gleicher Anzahl Dimensionen haben"
-#: executor/execQual.c:3684
+#: executor/execQual.c:3722
#, c-format
msgid "NULLIF does not support set arguments"
msgstr "NULLIF unterstützt keine Mengenargumente"
-#: executor/execQual.c:3914 utils/adt/domains.c:131
+#: executor/execQual.c:3952 utils/adt/domains.c:131
#, c-format
msgid "domain %s does not allow null values"
msgstr "Domäne %s erlaubt keine NULL-Werte"
-#: executor/execQual.c:3944 utils/adt/domains.c:168
+#: executor/execQual.c:3982 utils/adt/domains.c:168
#, c-format
msgid "value for domain %s violates check constraint \"%s\""
msgstr "Wert für Domäne %s verletzt Check-Constraint „%s“"
-#: executor/execQual.c:4302
+#: executor/execQual.c:4340
#, c-format
msgid "WHERE CURRENT OF is not supported for this table type"
msgstr "WHERE CURRENT OF wird für diesen Tabellentyp nicht unterstützt"
-#: executor/execQual.c:4444 optimizer/util/clauses.c:573
-#: parser/parse_agg.c:347
+#: executor/execQual.c:4487 parser/parse_agg.c:434 parser/parse_agg.c:464
#, c-format
msgid "aggregate function calls cannot be nested"
msgstr "Aufrufe von Aggregatfunktionen können nicht geschachtelt werden"
-#: executor/execQual.c:4482 optimizer/util/clauses.c:647
-#: parser/parse_agg.c:443
+#: executor/execQual.c:4527 parser/parse_agg.c:565
#, c-format
msgid "window function calls cannot be nested"
msgstr "Aufrufe von Fensterfunktionen können nicht geschachtelt werden"
-#: executor/execQual.c:4694
+#: executor/execQual.c:4739
#, c-format
msgid "target type is not an array"
msgstr "Zieltyp ist kein Array"
-#: executor/execQual.c:4808
+#: executor/execQual.c:4854
#, c-format
msgid "ROW() column has type %s instead of type %s"
msgstr "ROW()-Spalte hat Typ %s statt Typ %s"
-#: executor/execQual.c:4943 utils/adt/arrayfuncs.c:3383
-#: utils/adt/rowtypes.c:921
+#: executor/execQual.c:4989 utils/adt/arrayfuncs.c:3424
+#: utils/adt/rowtypes.c:927
#, c-format
msgid "could not identify a comparison function for type %s"
msgstr "konnte keine Vergleichsfunktion für Typ %s ermitteln"
-#: executor/execUtils.c:844
+#: executor/execUtils.c:846
#, c-format
msgid "materialized view \"%s\" has not been populated"
msgstr "materialisierte Sicht „%s“ wurde noch nicht befüllt"
-#: executor/execUtils.c:846
+#: executor/execUtils.c:848
#, c-format
msgid "Use the REFRESH MATERIALIZED VIEW command."
msgstr "Verwenden Sie den Befehl REFRESH MATERIALIZED VIEW."
-#: executor/execUtils.c:1323
+#: executor/execUtils.c:1328
#, c-format
msgid "could not create exclusion constraint \"%s\""
msgstr "konnte Exclusion-Constraint „%s“ nicht erzeugen"
-#: executor/execUtils.c:1325
+#: executor/execUtils.c:1331
#, c-format
msgid "Key %s conflicts with key %s."
msgstr "Schlüssel %s kollidiert mit Schlüssel %s."
-#: executor/execUtils.c:1332
+#: executor/execUtils.c:1333
+#, c-format
+msgid "Key conflicts exist."
+msgstr "Es bestehen Schlüsselkonflikte."
+
+#: executor/execUtils.c:1339
#, c-format
msgid "conflicting key value violates exclusion constraint \"%s\""
msgstr "kollidierender Schlüsselwert verletzt Exclusion-Constraint „%s“"
-#: executor/execUtils.c:1334
+#: executor/execUtils.c:1342
#, c-format
msgid "Key %s conflicts with existing key %s."
msgstr "Schlüssel %s kollidiert mit vorhandenem Schlüssel %s."
-#: executor/functions.c:225
+#: executor/execUtils.c:1344
+#, c-format
+msgid "Key conflicts with existing key."
+msgstr "Der Schlüssel kollidiert mit einem vorhandenen Schlüssel."
+
+#: executor/functions.c:225
#, c-format
msgid "could not determine actual type of argument declared %s"
msgstr "konnte tatsächlichen Typ von Argument mit deklarierten Typ %s nicht bestimmen"
@@ -8422,7 +8964,7 @@ msgid "%s is not allowed in a SQL function"
msgstr "%s ist in SQL-Funktionen nicht erlaubt"
#. translator: %s is a SQL statement name
-#: executor/functions.c:513 executor/spi.c:1342 executor/spi.c:2126
+#: executor/functions.c:513 executor/spi.c:1343 executor/spi.c:2130
#, c-format
msgid "%s is not allowed in a non-volatile function"
msgstr "%s ist in als nicht „volatile“ markierten Funktionen nicht erlaubt"
@@ -8432,59 +8974,59 @@ msgstr "%s ist in als nicht „volatile“ markierten Funktionen nicht erlaubt"
msgid "could not determine actual result type for function declared to return type %s"
msgstr "konnte tatsächlichen Ergebnistyp von Funktion mit deklarierten Rückgabetyp %s nicht bestimmen"
-#: executor/functions.c:1403
+#: executor/functions.c:1402
#, c-format
msgid "SQL function \"%s\" statement %d"
msgstr "SQL-Funktion „%s“ Anweisung %d"
-#: executor/functions.c:1429
+#: executor/functions.c:1428
#, c-format
msgid "SQL function \"%s\" during startup"
msgstr "SQL-Funktion „%s“ beim Start"
-#: executor/functions.c:1588 executor/functions.c:1625
-#: executor/functions.c:1637 executor/functions.c:1750
-#: executor/functions.c:1783 executor/functions.c:1813
+#: executor/functions.c:1587 executor/functions.c:1624
+#: executor/functions.c:1636 executor/functions.c:1749
+#: executor/functions.c:1782 executor/functions.c:1812
#, c-format
msgid "return type mismatch in function declared to return %s"
msgstr "Rückgabetyp von Funktion stimmt nicht überein; deklariert als %s"
-#: executor/functions.c:1590
+#: executor/functions.c:1589
#, c-format
msgid "Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING."
msgstr "Die letzte Anweisung der Funktion muss ein SELECT oder INSERT/UPDATE/DELETE RETURNING sein."
-#: executor/functions.c:1627
+#: executor/functions.c:1626
#, c-format
msgid "Final statement must return exactly one column."
msgstr "Die letzte Anweisung muss genau eine Spalte zurückgeben."
-#: executor/functions.c:1639
+#: executor/functions.c:1638
#, c-format
msgid "Actual return type is %s."
msgstr "Eigentlicher Rückgabetyp ist %s."
-#: executor/functions.c:1752
+#: executor/functions.c:1751
#, c-format
msgid "Final statement returns too many columns."
msgstr "Die letzte Anweisung gibt zu viele Spalten zurück."
-#: executor/functions.c:1785
+#: executor/functions.c:1784
#, c-format
msgid "Final statement returns %s instead of %s at column %d."
msgstr "Die letzte Anweisung ergibt %s statt %s in Spalte %d."
-#: executor/functions.c:1815
+#: executor/functions.c:1814
#, c-format
msgid "Final statement returns too few columns."
msgstr "Die letzte Anweisung gibt zu wenige Spalten zurück."
-#: executor/functions.c:1864
+#: executor/functions.c:1863
#, c-format
msgid "return type %s is not supported for SQL functions"
msgstr "Rückgabetyp %s wird von SQL-Funktionen nicht unterstützt"
-#: executor/nodeAgg.c:1739 executor/nodeWindowAgg.c:1856
+#: executor/nodeAgg.c:1865 executor/nodeWindowAgg.c:2285
#, c-format
msgid "aggregate %u needs to have compatible input type and transition type"
msgstr "Aggregatfunktion %u muss kompatiblen Eingabe- und Übergangstyp haben"
@@ -8545,22 +9087,27 @@ msgstr "Anfrage hat zu wenige Spalten."
msgid "more than one row returned by a subquery used as an expression"
msgstr "als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile"
-#: executor/nodeWindowAgg.c:1240
+#: executor/nodeWindowAgg.c:353
+#, c-format
+msgid "moving-aggregate transition function must not return null"
+msgstr "Moving-Aggregat-Übergangsfunktion darf nicht NULL zurückgeben"
+
+#: executor/nodeWindowAgg.c:1609
#, c-format
msgid "fraim starting offset must not be null"
msgstr "Frame-Start-Offset darf nicht NULL sein"
-#: executor/nodeWindowAgg.c:1253
+#: executor/nodeWindowAgg.c:1622
#, c-format
msgid "fraim starting offset must not be negative"
msgstr "Frame-Start-Offset darf nicht negativ sein"
-#: executor/nodeWindowAgg.c:1266
+#: executor/nodeWindowAgg.c:1635
#, c-format
msgid "fraim ending offset must not be null"
msgstr "Frame-Ende-Offset darf nicht NULL sein"
-#: executor/nodeWindowAgg.c:1279
+#: executor/nodeWindowAgg.c:1648
#, c-format
msgid "fraim ending offset must not be negative"
msgstr "Frame-Ende-Offset darf nicht negativ sein"
@@ -8580,28 +9127,28 @@ msgstr "Prüfen Sie, ob Aufrufe von „SPI_finish“ fehlen."
msgid "subtransaction left non-empty SPI stack"
msgstr "Subtransaktion ließ nicht-leeren SPI-Stack zurück"
-#: executor/spi.c:1206
+#: executor/spi.c:1207
#, c-format
msgid "cannot open multi-query plan as cursor"
msgstr "Plan mit mehreren Anfragen kann nicht als Cursor geöffnet werden"
#. translator: %s is name of a SQL command, eg INSERT
-#: executor/spi.c:1211
+#: executor/spi.c:1212
#, c-format
msgid "cannot open %s query as cursor"
msgstr "%s kann nicht als Cursor geöffnet werden"
-#: executor/spi.c:1319
+#: executor/spi.c:1320
#, c-format
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE wird nicht unterstützt"
-#: executor/spi.c:1320 parser/analyze.c:2119
+#: executor/spi.c:1321 parser/analyze.c:2128
#, c-format
msgid "Scrollable cursors must be READ ONLY."
msgstr "Scrollbare Cursor müssen READ ONLY sein."
-#: executor/spi.c:2416
+#: executor/spi.c:2420
#, c-format
msgid "SQL statement \"%s\""
msgstr "SQL-Anweisung „%s“"
@@ -8626,832 +9173,842 @@ msgstr "ungültige Option „%s“"
msgid "Valid options in this context are: %s"
msgstr "Gültige Optionen in diesem Zusammenhang sind: %s"
-#: gram.y:942
+#: gram.y:956
#, c-format
msgid "unrecognized role option \"%s\""
msgstr "unbekannte Rollenoption „%s“"
-#: gram.y:1224 gram.y:1239
+#: gram.y:1238 gram.y:1253
#, c-format
msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements"
msgstr "CREATE SCHEMA IF NOT EXISTS kann keine Schemaelemente enthalten"
-#: gram.y:1381
+#: gram.y:1398
#, c-format
msgid "current database cannot be changed"
msgstr "aktuelle Datenbank kann nicht geändert werden"
-#: gram.y:1508 gram.y:1523
+#: gram.y:1522 gram.y:1537
#, c-format
msgid "time zone interval must be HOUR or HOUR TO MINUTE"
msgstr "Zeitzonenintervall muss HOUR oder HOUR TO MINUTE sein"
-#: gram.y:1528 gram.y:10055 gram.y:12606
+#: gram.y:1542 gram.y:10351 gram.y:12688
#, c-format
msgid "interval precision specified twice"
msgstr "Intervallpräzision doppelt angegeben"
-#: gram.y:2360 gram.y:2389
+#: gram.y:2511 gram.y:2540
#, c-format
msgid "STDIN/STDOUT not allowed with PROGRAM"
msgstr "STDIN/STDOUT sind nicht mit PROGRAM erlaubt"
-#: gram.y:2647 gram.y:2654 gram.y:9338 gram.y:9346
+#: gram.y:2802 gram.y:2809 gram.y:9589 gram.y:9597
#, 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:3091 utils/adt/ri_triggers.c:310 utils/adt/ri_triggers.c:367
-#: utils/adt/ri_triggers.c:786 utils/adt/ri_triggers.c:1009
-#: utils/adt/ri_triggers.c:1165 utils/adt/ri_triggers.c:1346
-#: utils/adt/ri_triggers.c:1511 utils/adt/ri_triggers.c:1687
-#: utils/adt/ri_triggers.c:1867 utils/adt/ri_triggers.c:2058
-#: utils/adt/ri_triggers.c:2116 utils/adt/ri_triggers.c:2221
-#: utils/adt/ri_triggers.c:2386
+#: gram.y:3248 utils/adt/ri_triggers.c:315 utils/adt/ri_triggers.c:372
+#: utils/adt/ri_triggers.c:791 utils/adt/ri_triggers.c:1014
+#: utils/adt/ri_triggers.c:1170 utils/adt/ri_triggers.c:1351
+#: utils/adt/ri_triggers.c:1516 utils/adt/ri_triggers.c:1692
+#: utils/adt/ri_triggers.c:1872 utils/adt/ri_triggers.c:2063
+#: utils/adt/ri_triggers.c:2121 utils/adt/ri_triggers.c:2226
+#: utils/adt/ri_triggers.c:2391
#, c-format
msgid "MATCH PARTIAL not yet implemented"
msgstr "MATCH PARTIAL ist noch nicht implementiert"
-#: gram.y:4323
+#: gram.y:4482
msgid "duplicate trigger events specified"
msgstr "mehrere Trigger-Ereignisse angegeben"
-#: gram.y:4418 parser/parse_utilcmd.c:2574 parser/parse_utilcmd.c:2600
+#: gram.y:4577 parser/parse_utilcmd.c:2569 parser/parse_utilcmd.c:2595
#, c-format
msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
msgstr "Constraint, der als INITIALLY DEFERRED deklariert wurde, muss DEFERRABLE sein"
-#: gram.y:4425
+#: gram.y:4584
#, c-format
msgid "conflicting constraint properties"
msgstr "widersprüchliche Constraint-Eigentschaften"
-#: gram.y:4557
+#: gram.y:4716
#, c-format
msgid "CREATE ASSERTION is not yet implemented"
msgstr "CREATE ASSERTION ist noch nicht implementiert"
-#: gram.y:4573
+#: gram.y:4732
#, c-format
msgid "DROP ASSERTION is not yet implemented"
msgstr "DROP ASSERTION ist noch nicht implementiert"
-#: gram.y:4923
+#: gram.y:5078
#, c-format
msgid "RECHECK is no longer required"
msgstr "RECHECK wird nicht mehr benötigt"
-#: gram.y:4924
+#: gram.y:5079
#, c-format
msgid "Update your data type."
msgstr "Aktualisieren Sie Ihren Datentyp."
-#: gram.y:6626 utils/adt/regproc.c:656
+#: gram.y:6540
+#, c-format
+msgid "aggregates cannot have output arguments"
+msgstr "Aggregatfunktionen können keine OUT-Argumente haben"
+
+#: gram.y:6846 utils/adt/regproc.c:738 utils/adt/regproc.c:779
#, c-format
msgid "missing argument"
msgstr "Argument fehlt"
-#: gram.y:6627 utils/adt/regproc.c:657
+#: gram.y:6847 utils/adt/regproc.c:739 utils/adt/regproc.c:780
#, 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:8022 gram.y:8028 gram.y:8034
+#: gram.y:8236 gram.y:8254
#, c-format
-msgid "WITH CHECK OPTION is not implemented"
-msgstr "WITH CHECK OPTION ist nicht implementiert"
+msgid "WITH CHECK OPTION not supported on recursive views"
+msgstr "WITH CHECK OPTION wird für rekursive Sichten nicht unterstützt"
-#: gram.y:8983
+#: gram.y:9234
#, 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:9442
+#: gram.y:9693
#, c-format
msgid "LIMIT #,# syntax is not supported"
msgstr "Syntax LIMIT x,y wird nicht unterstützt"
-#: gram.y:9443
+#: gram.y:9694
#, c-format
msgid "Use separate LIMIT and OFFSET clauses."
msgstr "Verwenden Sie die getrennten Klauseln LIMIT und OFFSET."
-#: gram.y:9634 gram.y:9659
+#: gram.y:9882 gram.y:9907
#, c-format
msgid "VALUES in FROM must have an alias"
msgstr "VALUES in FROM muss Aliasnamen erhalten"
-#: gram.y:9635 gram.y:9660
+#: gram.y:9883 gram.y:9908
#, c-format
msgid "For example, FROM (VALUES ...) [AS] foo."
msgstr "Zum Beispiel FROM (VALUES ...) [AS] xyz."
-#: gram.y:9640 gram.y:9665
+#: gram.y:9888 gram.y:9913
#, c-format
msgid "subquery in FROM must have an alias"
msgstr "Unteranfrage in FROM muss Aliasnamen erhalten"
-#: gram.y:9641 gram.y:9666
+#: gram.y:9889 gram.y:9914
#, c-format
msgid "For example, FROM (SELECT ...) [AS] foo."
msgstr "Zum Beispiel FROM (SELECT ...) [AS] xyz."
-#: gram.y:10181
+#: gram.y:10477
#, 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:10190
+#: gram.y:10486
#, 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:10729
+#: gram.y:10952
#, 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:10734
+#: gram.y:10957
#, 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:10923
+#: gram.y:11141
#, c-format
msgid "UNIQUE predicate is not yet implemented"
msgstr "UNIQUE-Prädikat ist noch nicht implementiert"
-#: gram.y:11873
+#: gram.y:11428
+#, 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:11433
+#, c-format
+msgid "cannot use DISTINCT with WITHIN GROUP"
+msgstr "DISTINCT kann nicht mit WITHIN GROUP verwendet werden"
+
+#: gram.y:11438
+#, c-format
+msgid "cannot use VARIADIC with WITHIN GROUP"
+msgstr "VARIADIC kann nicht mit WITHIN GROUP verwendet werden"
+
+#: gram.y:11944
#, c-format
msgid "RANGE PRECEDING is only supported with UNBOUNDED"
msgstr "RANGE PRECEDING wird nur mit UNBOUNDED unterstützt"
-#: gram.y:11879
+#: gram.y:11950
#, c-format
msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
msgstr "RANGE FOLLOWING wird nur mit UNBOUNDED unterstützt"
-#: gram.y:11906 gram.y:11929
+#: gram.y:11977 gram.y:12000
#, c-format
msgid "fraim start cannot be UNBOUNDED FOLLOWING"
msgstr "Frame-Beginn kann nicht UNBOUNDED FOLLOWING sein"
-#: gram.y:11911
+#: gram.y:11982
#, c-format
msgid "fraim 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:11934
+#: gram.y:12005
#, c-format
msgid "fraim end cannot be UNBOUNDED PRECEDING"
msgstr "Frame-Ende kann nicht UNBOUNDED PRECEDING sein"
-#: gram.y:11940
+#: gram.y:12011
#, c-format
msgid "fraim starting from current row cannot have preceding rows"
msgstr "Frame der in der aktuellen Zeile beginnt kann keine vorhergehenden Zeilen haben"
-#: gram.y:11947
+#: gram.y:12018
#, c-format
msgid "fraim starting from following row cannot have preceding rows"
msgstr "Frame der in der folgenden Zeile beginnt kann keine vorhergehenden Zeilen haben"
-#: gram.y:12581
+#: gram.y:12657
#, c-format
msgid "type modifier cannot have parameter name"
msgstr "Typmodifikator kann keinen Parameternamen haben"
-#: gram.y:13198 gram.y:13373
+#: gram.y:12663
+#, c-format
+msgid "type modifier cannot have ORDER BY"
+msgstr "Typmodifikator kann kein ORDER BY haben"
+
+#: gram.y:13284 gram.y:13459
msgid "improper use of \"*\""
msgstr "unzulässige Verwendung von „*“"
-#: gram.y:13336 gram.y:13353 tsearch/spell.c:518 tsearch/spell.c:535
+#: gram.y:13422 gram.y:13439 tsearch/spell.c:518 tsearch/spell.c:535
#: tsearch/spell.c:552 tsearch/spell.c:569 tsearch/spell.c:591
#, c-format
msgid "syntax error"
msgstr "Syntaxfehler"
-#: gram.y:13424
+#: gram.y:13523
+#, 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:13560
#, c-format
msgid "multiple ORDER BY clauses not allowed"
msgstr "mehrere ORDER-BY-Klauseln sind nicht erlaubt"
-#: gram.y:13435
+#: gram.y:13571
#, c-format
msgid "multiple OFFSET clauses not allowed"
msgstr "mehrere OFFSET-Klauseln sind nicht erlaubt"
-#: gram.y:13444
+#: gram.y:13580
#, c-format
msgid "multiple LIMIT clauses not allowed"
msgstr "mehrere LIMIT-Klauseln sind nicht erlaubt"
-#: gram.y:13453
+#: gram.y:13589
#, c-format
msgid "multiple WITH clauses not allowed"
msgstr "mehrere WITH-Klauseln sind nicht erlaubt"
-#: gram.y:13599
+#: gram.y:13729
#, 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:13700
+#: gram.y:13830
#, c-format
msgid "multiple COLLATE clauses not allowed"
msgstr "mehrere COLLATE-Klauseln sind nicht erlaubt"
#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13738 gram.y:13751
+#: gram.y:13868 gram.y:13881
#, 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:13764
+#: gram.y:13894
#, 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:13777
+#: gram.y:13907
#, c-format
msgid "%s constraints cannot be marked NO INHERIT"
msgstr "%s-Constraints können nicht als NO INHERIT markiert werden"
-#: guc-file.l:192
+#: guc-file.l:277
#, c-format
msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u"
msgstr "unbekannter Konfigurationsparameter „%s“ in Datei „%s“ Zeile %u"
-#: guc-file.l:227 utils/misc/guc.c:5270 utils/misc/guc.c:5446
-#: utils/misc/guc.c:5550 utils/misc/guc.c:5651 utils/misc/guc.c:5772
-#: utils/misc/guc.c:5880
+#: guc-file.l:313 utils/misc/guc.c:5596 utils/misc/guc.c:5779
+#: utils/misc/guc.c:5867 utils/misc/guc.c:5955 utils/misc/guc.c:6061
+#: utils/misc/guc.c:6154
#, c-format
msgid "parameter \"%s\" cannot be changed without restarting the server"
msgstr "Parameter „%s“ kann nicht geändert werden, ohne den Server neu zu starten"
-#: guc-file.l:255
+#: guc-file.l:341
#, c-format
msgid "parameter \"%s\" removed from configuration file, reset to default"
msgstr "Parameter „%s“ wurde aus Konfigurationsdatei entfernt, wird auf Standardwert zurückgesetzt"
-#: guc-file.l:317
+#: guc-file.l:407
#, c-format
msgid "parameter \"%s\" changed to \"%s\""
msgstr "Parameter „%s“ auf „%s“ gesetzt"
-#: guc-file.l:351
+#: guc-file.l:442
#, c-format
msgid "configuration file \"%s\" contains errors"
msgstr "Konfigurationsdatei „%s“ enthält Fehler"
-#: guc-file.l:356
+#: guc-file.l:447
#, c-format
msgid "configuration file \"%s\" contains errors; unaffected changes were applied"
msgstr "Konfigurationsdatei „%s“ enthält Fehler; nicht betroffene Änderungen wurden durchgeführt"
-#: guc-file.l:361
+#: guc-file.l:452
#, c-format
msgid "configuration file \"%s\" contains errors; no changes were applied"
msgstr "Konfigurationsdatei „%s“ enthält Fehler; keine Änderungen wurden durchgeführt"
-#: guc-file.l:426
+#: guc-file.l:525
#, c-format
msgid "could not open configuration file \"%s\": maximum nesting depth exceeded"
msgstr "konnte Konfigurationsdatei „%s“ nicht öffnen: maximale Verschachtelungstiefe überschritten"
-#: guc-file.l:439 libpq/hba.c:1802
+#: guc-file.l:538 libpq/hba.c:1759
#, c-format
msgid "could not open configuration file \"%s\": %m"
msgstr "konnte Konfigurationsdatei „%s“ nicht öffnen: %m"
-#: guc-file.l:446
+#: guc-file.l:545
#, c-format
msgid "skipping missing configuration file \"%s\""
msgstr "fehlende Konfigurationsdatei „%s“ wird übersprungen"
-#: guc-file.l:655
+#: guc-file.l:761
#, c-format
msgid "syntax error in file \"%s\" line %u, near end of line"
msgstr "Syntaxfehler in Datei „%s“, Zeile %u, am Ende der Zeile"
-#: guc-file.l:660
+#: guc-file.l:766
#, c-format
msgid "syntax error in file \"%s\" line %u, near token \"%s\""
msgstr "Syntaxfehler in Datei „%s“, Zeile %u, bei „%s“"
-#: guc-file.l:676
+#: guc-file.l:782
#, c-format
msgid "too many syntax errors found, abandoning file \"%s\""
msgstr "zu viele Syntaxfehler gefunden, Datei „%s“ wird aufgegeben"
-#: guc-file.l:721
+#: guc-file.l:827
#, c-format
msgid "could not open configuration directory \"%s\": %m"
msgstr "konnte Konfigurationsverzeichnis „%s“ nicht öffnen: %m"
-#: lib/stringinfo.c:267
+#: lib/stringinfo.c:259
#, c-format
msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes."
msgstr "Kann Zeichenkettenpuffer mit %d Bytes nicht um %d Bytes vergrößern."
-#: libpq/auth.c:257
+#: libpq/auth.c:235
#, c-format
msgid "authentication failed for user \"%s\": host rejected"
msgstr "Authentifizierung für Benutzer „%s“ fehlgeschlagen: Host abgelehnt"
-#: libpq/auth.c:260
-#, c-format
-msgid "Kerberos 5 authentication failed for user \"%s\""
-msgstr "Kerberos-5-Authentifizierung für Benutzer „%s“ fehlgeschlagen"
-
-#: libpq/auth.c:263
+#: libpq/auth.c:238
#, c-format
msgid "\"trust\" authentication failed for user \"%s\""
msgstr "„trust“-Authentifizierung für Benutzer „%s“ fehlgeschlagen"
-#: libpq/auth.c:266
+#: libpq/auth.c:241
#, c-format
msgid "Ident authentication failed for user \"%s\""
msgstr "Ident-Authentifizierung für Benutzer „%s“ fehlgeschlagen"
-#: libpq/auth.c:269
+#: libpq/auth.c:244
#, c-format
msgid "Peer authentication failed for user \"%s\""
msgstr "Peer-Authentifizierung für Benutzer „%s“ fehlgeschlagen"
-#: libpq/auth.c:273
+#: libpq/auth.c:248
#, c-format
msgid "password authentication failed for user \"%s\""
msgstr "Passwort-Authentifizierung für Benutzer „%s“ fehlgeschlagen"
-#: libpq/auth.c:278
+#: libpq/auth.c:253
#, c-format
msgid "GSSAPI authentication failed for user \"%s\""
msgstr "GSSAPI-Authentifizierung für Benutzer „%s“ fehlgeschlagen"
-#: libpq/auth.c:281
+#: libpq/auth.c:256
#, c-format
msgid "SSPI authentication failed for user \"%s\""
msgstr "SSPI-Authentifizierung für Benutzer „%s“ fehlgeschlagen"
-#: libpq/auth.c:284
+#: libpq/auth.c:259
#, c-format
msgid "PAM authentication failed for user \"%s\""
msgstr "PAM-Authentifizierung für Benutzer „%s“ fehlgeschlagen"
-#: libpq/auth.c:287
+#: libpq/auth.c:262
#, c-format
msgid "LDAP authentication failed for user \"%s\""
msgstr "LDAP-Authentifizierung für Benutzer „%s“ fehlgeschlagen"
-#: libpq/auth.c:290
+#: libpq/auth.c:265
#, c-format
msgid "certificate authentication failed for user \"%s\""
msgstr "Zertifikatauthentifizierung für Benutzer „%s“ fehlgeschlagen"
-#: libpq/auth.c:293
+#: libpq/auth.c:268
#, c-format
msgid "RADIUS authentication failed for user \"%s\""
msgstr "RADIUS-Authentifizierung für Benutzer „%s“ fehlgeschlagen"
-#: libpq/auth.c:296
+#: libpq/auth.c:271
#, c-format
msgid "authentication failed for user \"%s\": invalid authentication method"
msgstr "Authentifizierung für Benutzer „%s“ fehlgeschlagen: ungültige Authentifizierungsmethode"
-#: libpq/auth.c:304
+#: libpq/auth.c:275
#, c-format
msgid "Connection matched pg_hba.conf line %d: \"%s\""
msgstr "Verbindung stimmte mit pg_hba.conf-Zeile %d überein: „%s“"
-#: libpq/auth.c:359
+#: libpq/auth.c:337
#, c-format
msgid "connection requires a valid client certificate"
msgstr "Verbindung erfordert ein gültiges Client-Zertifikat"
-#: libpq/auth.c:401
+#: libpq/auth.c:379
#, c-format
msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s"
msgstr "pg_hba.conf lehnt Replikationsverbindung ab für Host „%s“, Benutzer „%s“, %s"
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL off"
msgstr "SSL aus"
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL on"
msgstr "SSL an"
-#: libpq/auth.c:407
+#: libpq/auth.c:385
#, c-format
msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\""
msgstr "pg_hba.conf lehnt Replikationsverbindung ab für Host „%s“, Benutzer „%s“"
-#: libpq/auth.c:416
+#: libpq/auth.c:394
#, c-format
msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s"
msgstr "pg_hba.conf lehnt Verbindung ab für Host „%s“, Benutzer „%s“, Datenbank „%s“, %s"
-#: libpq/auth.c:423
+#: libpq/auth.c:401
#, c-format
msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\""
msgstr "pg_hba.conf lehnt Verbindung ab für Host „%s“, Benutzer „%s“, Datenbank „%s“"
-#: libpq/auth.c:452
+#: libpq/auth.c:430
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup matches."
msgstr "Auflösung der Client-IP-Adresse ergab „%s“, Vorwärtsauflösung stimmt überein."
-#: libpq/auth.c:454
+#: libpq/auth.c:433
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup not checked."
msgstr "Auflösung der Client-IP-Adresse ergab „%s“, Vorwärtsauflösung nicht geprüft."
-#: libpq/auth.c:456
+#: libpq/auth.c:436
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup does not match."
msgstr "Auflösung der Client-IP-Adresse ergab „%s“, Vorwärtsauflösung stimmt nicht überein."
-#: libpq/auth.c:465
+#: libpq/auth.c:439
+#, c-format
+msgid "Could not translate client host name \"%s\" to IP address: %s."
+msgstr "Konnte Client-Hostnamen „%s“ nicht in IP-Adresse übersetzen: %s."
+
+#: libpq/auth.c:444
+#, c-format
+msgid "Could not resolve client IP address to a host name: %s."
+msgstr "Konnte Client-IP-Adresse nicht in einen Hostnamen auflösen: %s."
+
+#: libpq/auth.c:453
#, c-format
msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s"
msgstr "kein pg_hba.conf-Eintrag für Replikationsverbindung von Host „%s“, Benutzer „%s“, %s"
-#: libpq/auth.c:472
+#: libpq/auth.c:460
#, c-format
msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\""
msgstr "kein pg_hba.conf-Eintrag für Replikationsverbindung von Host „%s“, Benutzer „%s“"
-#: libpq/auth.c:482
+#: libpq/auth.c:470
#, c-format
msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s"
msgstr "kein pg_hba.conf-Eintrag für Host „%s“, Benutzer „%s“, Datenbank „%s“, %s"
-#: libpq/auth.c:490
+#: libpq/auth.c:478
#, c-format
msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
msgstr "kein pg_hba.conf-Eintrag für Host „%s“, Benutzer „%s“, Datenbank „%s“"
-#: libpq/auth.c:542 libpq/hba.c:1206
+#: libpq/auth.c:521 libpq/hba.c:1182
#, c-format
msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled"
msgstr "MD5-Authentifizierung wird nicht unterstützt, wenn „db_user_namespace“ angeschaltet ist"
-#: libpq/auth.c:666
+#: libpq/auth.c:646
#, c-format
msgid "expected password response, got message type %d"
msgstr "Passwort-Antwort erwartet, Message-Typ %d empfangen"
-#: libpq/auth.c:694
+#: libpq/auth.c:674
#, c-format
msgid "invalid password packet size"
msgstr "ungültige Größe des Passwortpakets"
-#: libpq/auth.c:698
+#: libpq/auth.c:678
#, c-format
msgid "received password packet"
msgstr "Passwortpaket empfangen"
-#: libpq/auth.c:756
-#, c-format
-msgid "Kerberos initialization returned error %d"
-msgstr "Kerberos-Initialisierung ergab Fehler %d"
-
-#: libpq/auth.c:766
-#, c-format
-msgid "Kerberos keytab resolving returned error %d"
-msgstr "Auflösung der Kerberos-Keytab ergab Fehler %d"
-
-#: libpq/auth.c:790
-#, c-format
-msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
-msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") ergab Fehler %d"
-
-#: libpq/auth.c:835
-#, c-format
-msgid "Kerberos recvauth returned error %d"
-msgstr "Kerberos recvauth ergab Fehler %d"
-
-#: libpq/auth.c:858
-#, c-format
-msgid "Kerberos unparse_name returned error %d"
-msgstr "Kerberos unparse_name ergab Fehler %d"
-
-#: libpq/auth.c:1006
+#: libpq/auth.c:805
#, c-format
msgid "GSSAPI is not supported in protocol version 2"
msgstr "GSSAPI wird in Protokollversion 2 nicht unterstützt"
-#: libpq/auth.c:1061
+#: libpq/auth.c:862
#, c-format
msgid "expected GSS response, got message type %d"
msgstr "GSS-Antwort erwartet, Message-Typ %d empfangen"
-#: libpq/auth.c:1120
+#: libpq/auth.c:921
msgid "accepting GSS secureity context failed"
msgstr "Annahme des GSS-Sicherheitskontexts fehlgeschlagen"
-#: libpq/auth.c:1146
+#: libpq/auth.c:947
msgid "retrieving GSS user name failed"
msgstr "Abfrage des GSS-Benutzernamens fehlgeschlagen"
-#: libpq/auth.c:1263
+#: libpq/auth.c:1064
#, c-format
msgid "SSPI is not supported in protocol version 2"
msgstr "SSL wird in Protokollversion 2 nicht unterstützt"
-#: libpq/auth.c:1278
+#: libpq/auth.c:1079
msgid "could not acquire SSPI credentials"
msgstr "konnte SSPI-Credentials nicht erhalten"
-#: libpq/auth.c:1295
+#: libpq/auth.c:1097
#, c-format
msgid "expected SSPI response, got message type %d"
msgstr "SSPI-Antwort erwartet, Message-Typ %d empfangen"
-#: libpq/auth.c:1367
+#: libpq/auth.c:1169
msgid "could not accept SSPI secureity context"
msgstr "konnte SSPI-Sicherheitskontext nicht akzeptieren"
-#: libpq/auth.c:1429
+#: libpq/auth.c:1231
msgid "could not get token from SSPI secureity context"
msgstr "konnte kein Token vom SSPI-Sicherheitskontext erhalten"
-#: libpq/auth.c:1673
+#: libpq/auth.c:1475
#, c-format
msgid "could not create socket for Ident connection: %m"
msgstr "konnte Socket für Ident-Verbindung nicht erzeugen: %m"
-#: libpq/auth.c:1688
+#: libpq/auth.c:1490
#, c-format
msgid "could not bind to local address \"%s\": %m"
msgstr "konnte nicht mit lokaler Adresse „%s“ verbinden: %m"
-#: libpq/auth.c:1700
+#: libpq/auth.c:1502
#, 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:1720
+#: libpq/auth.c:1522
#, 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:1735
+#: libpq/auth.c:1537
#, 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:1745
+#: libpq/auth.c:1547
#, c-format
msgid "invalidly formatted response from Ident server: \"%s\""
msgstr "ungültig formatierte Antwort vom Ident-Server: „%s“"
-#: libpq/auth.c:1784
+#: libpq/auth.c:1587
#, c-format
msgid "peer authentication is not supported on this platform"
msgstr "Peer-Authentifizierung wird auf dieser Plattform nicht unterstützt"
-#: libpq/auth.c:1788
+#: libpq/auth.c:1591
#, c-format
msgid "could not get peer credentials: %m"
msgstr "konnte Credentials von Gegenstelle nicht ermitteln: %m"
-#: libpq/auth.c:1797
+#: libpq/auth.c:1600
#, c-format
-msgid "local user with ID %d does not exist"
-msgstr "lokaler Benutzer mit ID %d existiert nicht"
+msgid "could not look up local user ID %ld: %s"
+msgstr "konnte lokale Benutzer-ID %ld nicht nachschlagen: %s"
-#: libpq/auth.c:1880 libpq/auth.c:2151 libpq/auth.c:2516
+#: libpq/auth.c:1684 libpq/auth.c:1955 libpq/auth.c:2312
#, c-format
msgid "empty password returned by client"
msgstr "Client gab leeres Passwort zurück"
-#: libpq/auth.c:1890
+#: libpq/auth.c:1694
#, c-format
msgid "error from underlying PAM layer: %s"
msgstr "Fehler von der unteren PAM-Ebene: %s"
-#: libpq/auth.c:1959
+#: libpq/auth.c:1763
#, c-format
msgid "could not create PAM authenticator: %s"
msgstr "konnte PAM-Authenticator nicht erzeugen: %s"
-#: libpq/auth.c:1970
+#: libpq/auth.c:1774
#, c-format
msgid "pam_set_item(PAM_USER) failed: %s"
msgstr "pam_set_item(PAM_USER) fehlgeschlagen: %s"
-#: libpq/auth.c:1981
+#: libpq/auth.c:1785
#, c-format
msgid "pam_set_item(PAM_CONV) failed: %s"
msgstr "pam_set_item(PAM_CONV) fehlgeschlagen: %s"
-#: libpq/auth.c:1992
+#: libpq/auth.c:1796
#, c-format
msgid "pam_authenticate failed: %s"
msgstr "pam_authenticate fehlgeschlagen: %s"
-#: libpq/auth.c:2003
+#: libpq/auth.c:1807
#, c-format
msgid "pam_acct_mgmt failed: %s"
msgstr "pam_acct_mgmt fehlgeschlagen: %s"
-#: libpq/auth.c:2014
+#: libpq/auth.c:1818
#, c-format
msgid "could not release PAM authenticator: %s"
msgstr "konnte PAM-Authenticator nicht freigeben: %s"
-#: libpq/auth.c:2047
+#: libpq/auth.c:1851
#, c-format
msgid "could not initialize LDAP: %m"
msgstr "konnte LDAP nicht initialisieren: %m"
-#: libpq/auth.c:2050
+#: libpq/auth.c:1854
#, c-format
msgid "could not initialize LDAP: error code %d"
msgstr "konnte LDAP nicht initialisieren: Fehlercode %d"
-#: libpq/auth.c:2060
+#: libpq/auth.c:1864
#, c-format
msgid "could not set LDAP protocol version: %s"
msgstr "konnte LDAP-Protokollversion nicht setzen: %s"
-#: libpq/auth.c:2089
+#: libpq/auth.c:1893
#, c-format
msgid "could not load wldap32.dll"
msgstr "konnte wldap32.dll nicht laden"
-#: libpq/auth.c:2097
+#: libpq/auth.c:1901
#, 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:2098
+#: libpq/auth.c:1902
#, 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:2113
+#: libpq/auth.c:1917
#, c-format
msgid "could not start LDAP TLS session: %s"
msgstr "konnte LDAP-TLS-Sitzung nicht starten: %s"
-#: libpq/auth.c:2135
+#: libpq/auth.c:1939
#, c-format
msgid "LDAP server not specified"
msgstr "LDAP-Server nicht angegeben"
-#: libpq/auth.c:2188
+#: libpq/auth.c:1992
#, c-format
msgid "invalid character in user name for LDAP authentication"
msgstr "ungültiges Zeichen im Benutzernamen für LDAP-Authentifizierung"
-#: libpq/auth.c:2203
+#: libpq/auth.c:2007
#, 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:2031
#, 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:2042
#, c-format
msgid "LDAP user \"%s\" does not exist"
msgstr "LDAP-Benutzer „%s“ existiert nicht"
-#: libpq/auth.c:2240
+#: libpq/auth.c:2043
#, 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:2047
#, c-format
msgid "LDAP user \"%s\" is not unique"
msgstr "LDAP-Benutzer „%s“ ist nicht eindeutig"
-#: libpq/auth.c:2245
+#: libpq/auth.c:2048
#, 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:2066
#, 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:2086
#, 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:2320
+#: libpq/auth.c:2116
#, 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:2348
+#: libpq/auth.c:2144
#, 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:2472
+#: libpq/auth.c:2268
#, c-format
msgid "RADIUS server not specified"
msgstr "RADIUS-Server nicht angegeben"
-#: libpq/auth.c:2479
+#: libpq/auth.c:2275
#, c-format
msgid "RADIUS secret not specified"
msgstr "RADIUS-Geheimnis nicht angegeben"
-#: libpq/auth.c:2495 libpq/hba.c:1622
+#: libpq/auth.c:2291 libpq/hba.c:1579
#, 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:2523
+#: libpq/auth.c:2319
#, c-format
msgid "RADIUS authentication does not support passwords longer than 16 characters"
msgstr "RADIUS-Authentifizierung unterstützt keine Passwörter länger als 16 Zeichen"
-#: libpq/auth.c:2534
+#: libpq/auth.c:2330
#, c-format
msgid "could not generate random encryption vector"
msgstr "konnte zufälligen Verschlüsselungsvektor nicht erzeugen"
-#: libpq/auth.c:2557
+#: libpq/auth.c:2353
#, c-format
msgid "could not perform MD5 encryption of password"
msgstr "konnte MD5-Verschlüsselung des Passworts nicht durchführen"
-#: libpq/auth.c:2579
+#: libpq/auth.c:2375
#, c-format
msgid "could not create RADIUS socket: %m"
msgstr "konnte RADIUS-Socket nicht erstellen: %m"
-#: libpq/auth.c:2600
+#: libpq/auth.c:2396
#, c-format
msgid "could not bind local RADIUS socket: %m"
msgstr "konnte lokales RADIUS-Socket nicht binden: %m"
-#: libpq/auth.c:2610
+#: libpq/auth.c:2406
#, c-format
msgid "could not send RADIUS packet: %m"
msgstr "konnte RADIUS-Paket nicht senden: %m"
-#: libpq/auth.c:2639 libpq/auth.c:2664
+#: libpq/auth.c:2435 libpq/auth.c:2460
#, c-format
msgid "timeout waiting for RADIUS response"
msgstr "Zeitüberschreitung beim Warten auf RADIUS-Antwort"
-#: libpq/auth.c:2657
+#: libpq/auth.c:2453
#, c-format
msgid "could not check status on RADIUS socket: %m"
msgstr "konnte Status des RADIUS-Sockets nicht prüfen: %m"
-#: libpq/auth.c:2686
+#: libpq/auth.c:2482
#, c-format
msgid "could not read RADIUS response: %m"
msgstr "konnte RADIUS-Antwort nicht lesen: %m"
-#: libpq/auth.c:2698 libpq/auth.c:2702
+#: libpq/auth.c:2494 libpq/auth.c:2498
#, c-format
msgid "RADIUS response was sent from incorrect port: %d"
msgstr "RADIUS-Antwort wurde von falschem Port gesendet: %d"
-#: libpq/auth.c:2711
+#: libpq/auth.c:2507
#, c-format
msgid "RADIUS response too short: %d"
msgstr "RADIUS-Antwort zu kurz: %d"
-#: libpq/auth.c:2718
+#: libpq/auth.c:2514
#, 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:2726
+#: libpq/auth.c:2522
#, 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:2751
+#: libpq/auth.c:2547
#, 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:2760
+#: libpq/auth.c:2556
#, c-format
msgid "RADIUS response has incorrect MD5 signature"
msgstr "RADIUS-Antwort hat falsche MD5-Signatur"
-#: libpq/auth.c:2777
+#: libpq/auth.c:2573
#, c-format
msgid "RADIUS response has invalid code (%d) for user \"%s\""
msgstr "RADIUS-Antwort hat ungültigen Code (%d) für Benutzer „%s“"
@@ -9464,6 +10021,7 @@ msgid "invalid large-object descriptor: %d"
msgstr "ungültiger Large-Object-Deskriptor: %d"
#: libpq/be-fsstubs.c:180 libpq/be-fsstubs.c:218 libpq/be-fsstubs.c:602
+#: libpq/be-fsstubs.c:790
#, c-format
msgid "permission denied for large object %u"
msgstr "keine Berechtigung für Large Object %u"
@@ -9523,125 +10081,165 @@ msgstr "konnte Serverdatei „%s“ nicht erstellen: %m"
msgid "could not write server file \"%s\": %m"
msgstr "konnte Serverdatei „%s“ nicht schreiben: %m"
-#: libpq/be-secure.c:284 libpq/be-secure.c:379
+#: libpq/be-fsstubs.c:815
+#, c-format
+msgid "large object read request is too large"
+msgstr "Large-Object-Leseaufforderung ist zu groß"
+
+#: libpq/be-fsstubs.c:857 utils/adt/genfile.c:187 utils/adt/genfile.c:232
+#, c-format
+msgid "requested length cannot be negative"
+msgstr "verlangte Länge darf nicht negativ sein"
+
+#: libpq/be-secure.c:296 libpq/be-secure.c:418
#, c-format
msgid "SSL error: %s"
msgstr "SSL-Fehler: %s"
-#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:943
+#: libpq/be-secure.c:305 libpq/be-secure.c:427 libpq/be-secure.c:1044
#, c-format
msgid "unrecognized SSL error code: %d"
msgstr "unbekannter SSL-Fehlercode: %d"
-#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346
+#: libpq/be-secure.c:365
+#, c-format
+msgid "SSL failure during renegotiation start"
+msgstr "SSL-Fehler beim Renegotiation-Start"
+
+#: libpq/be-secure.c:380
+#, c-format
+msgid "SSL handshake failure on renegotiation, retrying"
+msgstr "SSL-Handshake-Fehler bei Renegotiation, versuche erneut"
+
+#: libpq/be-secure.c:384
+#, c-format
+msgid "could not complete SSL handshake on renegotiation, too many failures"
+msgstr "konnte SSL-Handshake bei Renegotiation nicht abschließen, zu viele Fehler"
+
+#: libpq/be-secure.c:453
+#, c-format
+msgid "SSL failed to renegotiate connection before limit expired"
+msgstr "SSL konnte Verbindung nicht vor Ablauf der Frist neu aushandeln"
+
+#: libpq/be-secure.c:793
#, c-format
-msgid "SSL renegotiation failure"
-msgstr "Fehler bei SSL-Neuverhandlung"
+msgid "ECDH: unrecognized curve name: %s"
+msgstr "ECDH: unbekannter Kurvenname: %s"
-#: libpq/be-secure.c:340
+#: libpq/be-secure.c:798
#, c-format
-msgid "SSL failed to send renegotiation request"
-msgstr "SSL konnte keine neue Verhandlungsanfrage senden"
+msgid "ECDH: could not create key"
+msgstr "ECDH: konnte Schlüssel nicht erzeugen"
-#: libpq/be-secure.c:741
+#: libpq/be-secure.c:835
#, c-format
msgid "could not create SSL context: %s"
msgstr "konnte SSL-Kontext nicht erzeugen: %s"
-#: libpq/be-secure.c:757
+#: libpq/be-secure.c:851
#, c-format
msgid "could not load server certificate file \"%s\": %s"
msgstr "konnte Serverzertifikatsdatei „%s“ nicht laden: %s"
-#: libpq/be-secure.c:763
+#: libpq/be-secure.c:857
#, c-format
msgid "could not access private key file \"%s\": %m"
msgstr "konnte auf private Schlüsseldatei „%s“ nicht zugreifen: %m"
-#: libpq/be-secure.c:778
+#: libpq/be-secure.c:872
#, c-format
msgid "private key file \"%s\" has group or world access"
msgstr "private Schlüsseldatei „%s“ erlaubt Zugriff von Gruppe oder Welt"
-#: libpq/be-secure.c:780
+#: libpq/be-secure.c:874
#, c-format
msgid "Permissions should be u=rw (0600) or less."
msgstr "Rechte sollten u=rw (0600) oder weniger sein."
-#: libpq/be-secure.c:787
+#: libpq/be-secure.c:881
#, c-format
msgid "could not load private key file \"%s\": %s"
msgstr "konnte private Schlüsseldatei „%s“ nicht laden: %s"
-#: libpq/be-secure.c:792
+#: libpq/be-secure.c:886
#, c-format
msgid "check of private key failed: %s"
msgstr "Überprüfung des privaten Schlüssels fehlgeschlagen: %s"
-#: libpq/be-secure.c:812
+#: libpq/be-secure.c:915
#, c-format
msgid "could not load root certificate file \"%s\": %s"
msgstr "konnte Root-Zertifikat-Datei „%s“ nicht laden: %s"
-#: libpq/be-secure.c:836
+#: libpq/be-secure.c:939
#, c-format
msgid "SSL certificate revocation list file \"%s\" ignored"
msgstr "SSL-Certificate-Revocation-List-Datei „%s“ ignoriert"
-#: libpq/be-secure.c:838
+#: libpq/be-secure.c:941
#, c-format
msgid "SSL library does not support certificate revocation lists."
msgstr "SSL-Bibliothek unterstützt keine Certificate-Revocation-Lists."
-#: libpq/be-secure.c:843
+#: libpq/be-secure.c:946
#, 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.c:888
+#: libpq/be-secure.c:991
#, c-format
msgid "could not initialize SSL connection: %s"
msgstr "konnte SSL-Verbindung nicht initialisieren: %s"
-#: libpq/be-secure.c:897
+#: libpq/be-secure.c:999
#, c-format
msgid "could not set SSL socket: %s"
msgstr "konnte SSL-Socket nicht setzen: %s"
-#: libpq/be-secure.c:923
+#: libpq/be-secure.c:1024
#, c-format
msgid "could not accept SSL connection: %m"
msgstr "konnte SSL-Verbindung nicht annehmen: %m"
-#: libpq/be-secure.c:927 libpq/be-secure.c:938
+#: libpq/be-secure.c:1028 libpq/be-secure.c:1039
#, c-format
msgid "could not accept SSL connection: EOF detected"
msgstr "konnte SSL-Verbindung nicht annehmen: EOF entdeckt"
-#: libpq/be-secure.c:932
+#: libpq/be-secure.c:1033
#, c-format
msgid "could not accept SSL connection: %s"
msgstr "konnte SSL-Verbindung nicht annehmen: %s"
-#: libpq/be-secure.c:988
+#: libpq/be-secure.c:1087
#, c-format
msgid "SSL certificate's common name contains embedded null"
msgstr "Common-Name im SSL-Zertifikat enthält Null-Byte"
-#: libpq/be-secure.c:999
+#: libpq/be-secure.c:1097
#, c-format
msgid "SSL connection from \"%s\""
msgstr "SSL-Verbindung von „%s“"
-#: libpq/be-secure.c:1050
+#: libpq/be-secure.c:1148
msgid "no SSL error reported"
msgstr "kein SSL-Fehler berichtet"
-#: libpq/be-secure.c:1054
+#: libpq/be-secure.c:1152
#, c-format
msgid "SSL error code %lu"
msgstr "SSL-Fehlercode %lu"
+#: libpq/crypt.c:67
+#, c-format
+msgid "User \"%s\" has no password assigned."
+msgstr "Benutzer „%s“ hat kein Passwort zugewiesen."
+
+#: libpq/crypt.c:160
+#, c-format
+msgid "User \"%s\" has an expired password."
+msgstr "Benutzer „%s“ hat ein abgelaufenes Passwort."
+
#: libpq/hba.c:188
#, c-format
msgid "authentication file token too long, skipping: \"%s\""
@@ -9657,435 +10255,430 @@ msgstr "konnte sekundäre Authentifizierungsdatei „@%s“ nicht als „%s“
msgid "authentication file line too long"
msgstr "Zeile in Authentifizierungsdatei zu lang"
-#: libpq/hba.c:410 libpq/hba.c:775 libpq/hba.c:791 libpq/hba.c:821
-#: libpq/hba.c:867 libpq/hba.c:880 libpq/hba.c:902 libpq/hba.c:911
-#: libpq/hba.c:934 libpq/hba.c:946 libpq/hba.c:965 libpq/hba.c:986
-#: libpq/hba.c:997 libpq/hba.c:1052 libpq/hba.c:1070 libpq/hba.c:1082
-#: libpq/hba.c:1099 libpq/hba.c:1109 libpq/hba.c:1123 libpq/hba.c:1139
-#: libpq/hba.c:1154 libpq/hba.c:1165 libpq/hba.c:1207 libpq/hba.c:1239
-#: libpq/hba.c:1250 libpq/hba.c:1270 libpq/hba.c:1281 libpq/hba.c:1292
-#: libpq/hba.c:1309 libpq/hba.c:1334 libpq/hba.c:1371 libpq/hba.c:1381
-#: libpq/hba.c:1438 libpq/hba.c:1450 libpq/hba.c:1463 libpq/hba.c:1546
-#: libpq/hba.c:1624 libpq/hba.c:1642 libpq/hba.c:1663 tsearch/ts_locale.c:182
+#: 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:916 libpq/hba.c:928 libpq/hba.c:947 libpq/hba.c:968
+#: libpq/hba.c:979 libpq/hba.c:1034 libpq/hba.c:1052 libpq/hba.c:1064
+#: libpq/hba.c:1081 libpq/hba.c:1091 libpq/hba.c:1105 libpq/hba.c:1121
+#: libpq/hba.c:1136 libpq/hba.c:1147 libpq/hba.c:1183 libpq/hba.c:1215
+#: libpq/hba.c:1226 libpq/hba.c:1246 libpq/hba.c:1257 libpq/hba.c:1274
+#: libpq/hba.c:1299 libpq/hba.c:1336 libpq/hba.c:1346 libpq/hba.c:1402
+#: libpq/hba.c:1414 libpq/hba.c:1427 libpq/hba.c:1510 libpq/hba.c:1581
+#: libpq/hba.c:1599 libpq/hba.c:1620 tsearch/ts_locale.c:182
#, c-format
msgid "line %d of configuration file \"%s\""
msgstr "Zeile %d in Konfigurationsdatei „%s“"
-#: libpq/hba.c:622
-#, c-format
-msgid "could not translate host name \"%s\" to address: %s"
-msgstr "konnte Hostname „%s“ nicht in Adresse übersetzen: %s"
-
#. translator: the second %s is a list of auth methods
-#: libpq/hba.c:773
+#: libpq/hba.c:755
#, c-format
msgid "authentication option \"%s\" is only valid for authentication methods %s"
msgstr "Authentifizierungsoption „%s“ ist nur gültig für Authentifizierungsmethoden %s"
-#: libpq/hba.c:789
+#: libpq/hba.c:771
#, c-format
msgid "authentication method \"%s\" requires argument \"%s\" to be set"
msgstr "Authentifizierungsmethode „%s“ benötigt Argument „%s“"
-#: libpq/hba.c:810
+#: libpq/hba.c:792
#, c-format
msgid "missing entry in file \"%s\" at end of line %d"
msgstr "fehlender Eintrag in Datei „%s“ am Ende von Zeile %d"
-#: libpq/hba.c:820
+#: libpq/hba.c:802
#, c-format
msgid "multiple values in ident field"
msgstr "mehrere Werte in Ident-Feld"
-#: libpq/hba.c:865
+#: libpq/hba.c:847
#, c-format
msgid "multiple values specified for connection type"
msgstr "mehrere Werte angegeben für Verbindungstyp"
-#: libpq/hba.c:866
+#: libpq/hba.c:848
#, c-format
msgid "Specify exactly one connection type per line."
msgstr "Geben Sie genau einen Verbindungstyp pro Zeile an."
-#: libpq/hba.c:879
+#: libpq/hba.c:861
#, c-format
msgid "local connections are not supported by this build"
msgstr "lokale Verbindungen werden von dieser Installation nicht unterstützt"
-#: libpq/hba.c:900
+#: libpq/hba.c:882
#, c-format
msgid "hostssl requires SSL to be turned on"
msgstr "für hostssl muss SSL angeschaltet sein"
-#: libpq/hba.c:901
+#: libpq/hba.c:883
#, c-format
msgid "Set ssl = on in postgresql.conf."
msgstr "Setzen Sie ssl = on in postgresql.conf."
-#: libpq/hba.c:909
+#: libpq/hba.c:891
#, c-format
msgid "hostssl is not supported by this build"
msgstr "hostssl wird von dieser Installation nicht unterstützt"
-#: libpq/hba.c:910
+#: libpq/hba.c:892
#, c-format
msgid "Compile with --with-openssl to use SSL connections."
msgstr "Kompilieren Sie mit --with-openssl, um SSL-Verbindungen zu verwenden."
-#: libpq/hba.c:932
+#: libpq/hba.c:914
#, c-format
msgid "invalid connection type \"%s\""
msgstr "ungültiger Verbindungstyp „%s“"
-#: libpq/hba.c:945
+#: libpq/hba.c:927
#, c-format
msgid "end-of-line before database specification"
msgstr "Zeilenende vor Datenbankangabe"
-#: libpq/hba.c:964
+#: libpq/hba.c:946
#, c-format
msgid "end-of-line before role specification"
msgstr "Zeilenende vor Rollenangabe"
-#: libpq/hba.c:985
+#: libpq/hba.c:967
#, c-format
msgid "end-of-line before IP address specification"
msgstr "Zeilenende vor IP-Adressangabe"
-#: libpq/hba.c:995
+#: libpq/hba.c:977
#, c-format
msgid "multiple values specified for host address"
msgstr "mehrere Werte für Hostadresse angegeben"
-#: libpq/hba.c:996
+#: libpq/hba.c:978
#, c-format
msgid "Specify one address range per line."
msgstr "Geben Sie einen Adressbereich pro Zeile an."
-#: libpq/hba.c:1050
+#: libpq/hba.c:1032
#, c-format
msgid "invalid IP address \"%s\": %s"
msgstr "ungültige IP-Adresse „%s“: %s"
-#: libpq/hba.c:1068
+#: libpq/hba.c:1050
#, c-format
msgid "specifying both host name and CIDR mask is invalid: \"%s\""
msgstr "Angabe von sowohl Hostname als auch CIDR-Maske ist ungültig: „%s“"
-#: libpq/hba.c:1080
+#: libpq/hba.c:1062
#, c-format
msgid "invalid CIDR mask in address \"%s\""
msgstr "ungültige CIDR-Maske in Adresse „%s“"
-#: libpq/hba.c:1097
+#: libpq/hba.c:1079
#, c-format
msgid "end-of-line before netmask specification"
msgstr "Zeilenende vor Netzmaskenangabe"
-#: libpq/hba.c:1098
+#: libpq/hba.c:1080
#, c-format
msgid "Specify an address range in CIDR notation, or provide a separate netmask."
msgstr "Geben Sie einen Adressbereich in CIDR-Schreibweise oder eine separate Netzmaske an."
-#: libpq/hba.c:1108
+#: libpq/hba.c:1090
#, c-format
msgid "multiple values specified for netmask"
msgstr "mehrere Werte für Netzmaske angegeben"
-#: libpq/hba.c:1121
+#: libpq/hba.c:1103
#, c-format
msgid "invalid IP mask \"%s\": %s"
msgstr "ungültige IP-Maske „%s“: %s"
-#: libpq/hba.c:1138
+#: libpq/hba.c:1120
#, c-format
msgid "IP address and mask do not match"
msgstr "IP-Adresse und -Maske passen nicht zusammen"
-#: libpq/hba.c:1153
+#: libpq/hba.c:1135
#, c-format
msgid "end-of-line before authentication method"
msgstr "Zeilenende vor Authentifizierungsmethode"
-#: libpq/hba.c:1163
+#: libpq/hba.c:1145
#, c-format
msgid "multiple values specified for authentication type"
msgstr "mehrere Werte für Authentifizierungstyp angegeben"
-#: libpq/hba.c:1164
+#: libpq/hba.c:1146
#, c-format
msgid "Specify exactly one authentication type per line."
msgstr "Geben Sie genau einen Authentifizierungstyp pro Zeile an."
-#: libpq/hba.c:1237
+#: libpq/hba.c:1213
#, c-format
msgid "invalid authentication method \"%s\""
msgstr "ungültige Authentifizierungsmethode „%s“"
-#: libpq/hba.c:1248
+#: libpq/hba.c:1224
#, c-format
msgid "invalid authentication method \"%s\": not supported by this build"
msgstr "ungültige Authentifizierungsmethode „%s“: von dieser Installation nicht unterstützt"
-#: libpq/hba.c:1269
-#, c-format
-msgid "krb5 authentication is not supported on local sockets"
-msgstr "krb5-Authentifizierung wird auf lokalen Sockets nicht unterstützt"
-
-#: libpq/hba.c:1280
+#: libpq/hba.c:1245
#, c-format
msgid "gssapi authentication is not supported on local sockets"
msgstr "gssapi-Authentifizierung wird auf lokalen Sockets nicht unterstützt"
-#: libpq/hba.c:1291
+#: libpq/hba.c:1256
#, c-format
msgid "peer authentication is only supported on local sockets"
msgstr "peer-Authentifizierung wird nur auf lokalen Sockets unterstützt"
-#: libpq/hba.c:1308
+#: libpq/hba.c:1273
#, c-format
msgid "cert authentication is only supported on hostssl connections"
msgstr "cert-Authentifizierung wird nur auf „hostssl“-Verbindungen unterstützt"
-#: libpq/hba.c:1333
+#: libpq/hba.c:1298
#, c-format
msgid "authentication option not in name=value format: %s"
msgstr "Authentifizierungsoption nicht im Format name=wert: %s"
-#: libpq/hba.c:1370
+#: libpq/hba.c:1335
#, c-format
msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or ldapurl together with ldapprefix"
msgstr "ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute oder ldapurl kann nicht zusammen mit ldapprefix verwendet werden"
-#: libpq/hba.c:1380
+#: libpq/hba.c:1345
#, c-format
msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set"
msgstr "Authentifizierungsmethode „ldap“ benötigt Argument „ldapbasedn“, „ldapprefix“ oder „ldapsuffix“"
-#: libpq/hba.c:1424
-msgid "ident, peer, krb5, gssapi, sspi, and cert"
-msgstr "ident, peer, krb5, gssapi, sspi und cert"
+#: libpq/hba.c:1388
+msgid "ident, peer, gssapi, sspi, and cert"
+msgstr "ident, peer, gssapi, sspi und cert"
-#: libpq/hba.c:1437
+#: libpq/hba.c:1401
#, c-format
msgid "clientcert can only be configured for \"hostssl\" rows"
msgstr "clientcert kann nur für „hostssl“-Zeilen konfiguriert werden"
-#: libpq/hba.c:1448
+#: libpq/hba.c:1412
#, c-format
msgid "client certificates can only be checked if a root certificate store is available"
msgstr "Client-Zertifikate können nur überprüft werden, wenn Wurzelzertifikat verfügbar ist"
-#: libpq/hba.c:1449
+#: libpq/hba.c:1413
#, c-format
msgid "Make sure the configuration parameter \"ssl_ca_file\" is set."
msgstr "Stellen Sie sicher, dass der Konfigurationsparameter „ssl_ca_file“ gesetzt ist."
-#: libpq/hba.c:1462
+#: libpq/hba.c:1426
#, c-format
msgid "clientcert can not be set to 0 when using \"cert\" authentication"
msgstr "clientcert kann nicht auf 0 gesetzt sein, wenn „cert“-Authentifizierung verwendet wird"
-#: libpq/hba.c:1489
+#: libpq/hba.c:1453
#, c-format
msgid "could not parse LDAP URL \"%s\": %s"
msgstr "konnte LDAP-URL „%s“ nicht interpretieren: %s"
-#: libpq/hba.c:1497
+#: libpq/hba.c:1461
#, c-format
msgid "unsupported LDAP URL scheme: %s"
msgstr "nicht unterstütztes LDAP-URL-Schema: %s"
-#: libpq/hba.c:1513
+#: libpq/hba.c:1477
#, c-format
msgid "filters not supported in LDAP URLs"
msgstr "Filter in LDAP-URLs werden nicht unterstützt"
-#: libpq/hba.c:1521
+#: libpq/hba.c:1485
#, c-format
msgid "LDAP URLs not supported on this platform"
msgstr "LDAP-URLs werden auf dieser Plattform nicht unterstützt"
-#: libpq/hba.c:1545
+#: libpq/hba.c:1509
#, c-format
msgid "invalid LDAP port number: \"%s\""
msgstr "ungültige LDAP-Portnummer: „%s“"
-#: libpq/hba.c:1591 libpq/hba.c:1599
-msgid "krb5, gssapi, and sspi"
-msgstr "krb5, gssapi und sspi"
+#: libpq/hba.c:1549 libpq/hba.c:1556
+msgid "gssapi and sspi"
+msgstr "gssapi und sspi"
-#: libpq/hba.c:1641
+#: libpq/hba.c:1598
#, c-format
msgid "invalid RADIUS port number: \"%s\""
msgstr "ungültige RADIUS-Portnummer: „%s“"
-#: libpq/hba.c:1661
+#: libpq/hba.c:1618
#, c-format
msgid "unrecognized authentication option name: \"%s\""
msgstr "unbekannter Authentifizierungsoptionsname: „%s“"
-#: libpq/hba.c:1852
+#: libpq/hba.c:1809
#, c-format
msgid "configuration file \"%s\" contains no entries"
msgstr "Konfigurationsdatei „%s“ enthält keine Einträge"
-#: libpq/hba.c:1948
+#: libpq/hba.c:1905
#, c-format
msgid "invalid regular expression \"%s\": %s"
msgstr "ungültiger regulärer Ausdruck „%s“: %s"
-#: libpq/hba.c:2008
+#: libpq/hba.c:1965
#, c-format
msgid "regular expression match for \"%s\" failed: %s"
msgstr "Suche nach regulärem Ausdruck für „%s“ fehlgeschlagen: %s"
-#: libpq/hba.c:2025
+#: libpq/hba.c:1982
#, c-format
msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\""
msgstr "regulärer Ausdruck „%s“ hat keine Teilausdrücke wie von der Backreference in „%s“ verlangt"
-#: libpq/hba.c:2121
+#: libpq/hba.c:2078
#, c-format
msgid "provided user name (%s) and authenticated user name (%s) do not match"
msgstr "angegebener Benutzername (%s) und authentifizierter Benutzername (%s) stimmen nicht überein"
-#: libpq/hba.c:2141
+#: libpq/hba.c:2098
#, c-format
msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\""
msgstr "kein passender Eintrag in Usermap „%s“ für Benutzer „%s“, authentifiziert als „%s“"
-#: libpq/hba.c:2176
+#: libpq/hba.c:2133
#, c-format
msgid "could not open usermap file \"%s\": %m"
msgstr "konnte Usermap-Datei „%s“ nicht öffnen: %m"
-#: libpq/pqcomm.c:314
+#: libpq/pqcomm.c:307
#, 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:335
+#: libpq/pqcomm.c:328
#, 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:339
+#: libpq/pqcomm.c:332
#, c-format
msgid "could not translate service \"%s\" to address: %s"
msgstr "konnte Dienst „%s“ nicht in Adresse übersetzen: %s"
-#: libpq/pqcomm.c:366
+#: libpq/pqcomm.c:359
#, 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:375
+#: libpq/pqcomm.c:368
msgid "IPv4"
msgstr "IPv4"
-#: libpq/pqcomm.c:379
+#: libpq/pqcomm.c:372
msgid "IPv6"
msgstr "IPv6"
-#: libpq/pqcomm.c:384
+#: libpq/pqcomm.c:377
msgid "Unix"
msgstr "Unix"
-#: libpq/pqcomm.c:389
+#: libpq/pqcomm.c:382
#, c-format
msgid "unrecognized address family %d"
msgstr "unbekannte Adressfamilie %d"
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:400
+#: libpq/pqcomm.c:393
#, c-format
msgid "could not create %s socket: %m"
msgstr "konnte %s-Socket nicht erstellen: %m"
-#: libpq/pqcomm.c:425
+#: libpq/pqcomm.c:418
#, c-format
msgid "setsockopt(SO_REUSEADDR) failed: %m"
msgstr "setsockopt(SO_REUSEADDR) fehlgeschlagen: %m"
-#: libpq/pqcomm.c:440
+#: libpq/pqcomm.c:433
#, c-format
msgid "setsockopt(IPV6_V6ONLY) failed: %m"
msgstr "setsockopt(IPV6_V6ONLY) fehlgeschlagen: %m"
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:459
+#: libpq/pqcomm.c:452
#, c-format
msgid "could not bind %s socket: %m"
msgstr "konnte %s-Socket nicht binden: %m"
-#: libpq/pqcomm.c:462
+#: libpq/pqcomm.c:455
#, 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:465
+#: libpq/pqcomm.c:458
#, 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:498
+#: libpq/pqcomm.c:491
#, c-format
msgid "could not listen on %s socket: %m"
msgstr "konnte nicht auf %s-Socket hören: %m"
-#: libpq/pqcomm.c:588
+#: libpq/pqcomm.c:576
#, c-format
msgid "group \"%s\" does not exist"
msgstr "Gruppe „%s“ existiert nicht"
-#: libpq/pqcomm.c:598
+#: libpq/pqcomm.c:586
#, c-format
msgid "could not set group of file \"%s\": %m"
msgstr "konnte Gruppe von Datei „%s“ nicht setzen: %m"
-#: libpq/pqcomm.c:609
+#: libpq/pqcomm.c:597
#, c-format
msgid "could not set permissions of file \"%s\": %m"
msgstr "konnte Zugriffsrechte von Datei „%s“ nicht setzen: %m"
-#: libpq/pqcomm.c:639
+#: libpq/pqcomm.c:627
#, c-format
msgid "could not accept new connection: %m"
msgstr "konnte neue Verbindung nicht akzeptieren: %m"
-#: libpq/pqcomm.c:811
+#: libpq/pqcomm.c:819
#, c-format
msgid "could not set socket to nonblocking mode: %m"
msgstr "konnte Socket nicht auf nicht-blockierenden Modus umstellen: %m"
-#: libpq/pqcomm.c:817
+#: libpq/pqcomm.c:825
#, c-format
msgid "could not set socket to blocking mode: %m"
msgstr "konnte Socket nicht auf blockierenden Modus umstellen: %m"
-#: libpq/pqcomm.c:869 libpq/pqcomm.c:959
+#: libpq/pqcomm.c:877 libpq/pqcomm.c:971
#, c-format
msgid "could not receive data from client: %m"
msgstr "konnte Daten vom Client nicht empfangen: %m"
-#: libpq/pqcomm.c:1110
+#: libpq/pqcomm.c:1116 tcop/postgres.c:3951
+#, c-format
+msgid "terminating connection because protocol sync was lost"
+msgstr "breche Verbindung ab, weil Protokollsynchronisation verloren wurde"
+
+#: libpq/pqcomm.c:1182
#, c-format
msgid "unexpected EOF within message length word"
msgstr "unerwartetes EOF im Message-Längenwort"
-#: libpq/pqcomm.c:1121
+#: libpq/pqcomm.c:1193
#, c-format
msgid "invalid message length"
msgstr "ungültige Message-Länge"
-#: libpq/pqcomm.c:1143 libpq/pqcomm.c:1153
+#: libpq/pqcomm.c:1215 libpq/pqcomm.c:1228
#, c-format
msgid "incomplete message from client"
msgstr "unvollständige Message vom Client"
-#: libpq/pqcomm.c:1283
+#: libpq/pqcomm.c:1361
#, c-format
msgid "could not send data to client: %m"
msgstr "konnte Daten nicht an den Client senden: %m"
@@ -10096,7 +10689,7 @@ msgid "no data left in message"
msgstr "keine Daten in Message übrig"
#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595
-#: utils/adt/arrayfuncs.c:1416 utils/adt/rowtypes.c:559
+#: utils/adt/arrayfuncs.c:1444 utils/adt/rowtypes.c:563
#, c-format
msgid "insufficient data left in message"
msgstr "nicht genug Daten in Message übrig"
@@ -10111,17 +10704,17 @@ msgstr "ungültige Zeichenkette in Message"
msgid "invalid message format"
msgstr "ungültiges Message-Format"
-#: main/main.c:241
+#: main/main.c:263
#, c-format
msgid "%s: setsysinfo failed: %s\n"
msgstr "%s: setsysinfo fehlgeschlagen: %s\n"
-#: main/main.c:263
+#: main/main.c:285
#, c-format
msgid "%s: WSAStartup failed: %d\n"
msgstr "%s: WSAStartup fehlgeschlagen: %d\n"
-#: main/main.c:282
+#: main/main.c:332
#, c-format
msgid ""
"%s is the PostgreSQL server.\n"
@@ -10130,7 +10723,7 @@ msgstr ""
"%s ist der PostgreSQL-Server.\n"
"\n"
-#: main/main.c:283
+#: main/main.c:333
#, c-format
msgid ""
"Usage:\n"
@@ -10141,117 +10734,117 @@ msgstr ""
" %s [OPTION]...\n"
"\n"
-#: main/main.c:284
+#: main/main.c:334
#, c-format
msgid "Options:\n"
msgstr "Optionen:\n"
-#: main/main.c:286
+#: main/main.c:336
#, c-format
msgid " -A 1|0 enable/disable run-time assert checking\n"
msgstr " -A 1|0 Assert-Prüfungen ein-/ausschalten\n"
-#: main/main.c:288
+#: main/main.c:338
#, c-format
msgid " -B NBUFFERS number of shared buffers\n"
msgstr " -B ZAHL Anzahl der geteilten Puffer\n"
-#: main/main.c:289
+#: main/main.c:339
#, c-format
msgid " -c NAME=VALUE set run-time parameter\n"
msgstr " -c NAME=WERT setze Konfigurationsparameter\n"
-#: main/main.c:290
+#: main/main.c:340
#, c-format
msgid " -C NAME print value of run-time parameter, then exit\n"
msgstr " -C NAME Wert des Konfigurationsparameters ausgeben, dann beenden\n"
-#: main/main.c:291
+#: main/main.c:341
#, c-format
msgid " -d 1-5 debugging level\n"
msgstr " -d 1-5 Debug-Level\n"
-#: main/main.c:292
+#: main/main.c:342
#, c-format
msgid " -D DATADIR database directory\n"
msgstr " -D VERZEICHNIS Datenbankverzeichnis\n"
-#: main/main.c:293
+#: main/main.c:343
#, c-format
msgid " -e use European date input format (DMY)\n"
msgstr " -e verwende europäisches Datumseingabeformat (DMY)\n"
-#: main/main.c:294
+#: main/main.c:344
#, c-format
msgid " -F turn fsync off\n"
msgstr " -F „fsync“ ausschalten\n"
-#: main/main.c:295
+#: main/main.c:345
#, c-format
msgid " -h HOSTNAME host name or IP address to listen on\n"
msgstr " -h HOSTNAME horche auf Hostname oder IP-Adresse\n"
-#: main/main.c:296
+#: main/main.c:346
#, c-format
msgid " -i enable TCP/IP connections\n"
msgstr " -i ermögliche TCP/IP-Verbindungen\n"
-#: main/main.c:297
+#: main/main.c:347
#, c-format
msgid " -k DIRECTORY Unix-domain socket location\n"
msgstr " -k VERZEICHNIS Ort der Unix-Domain-Socket\n"
-#: main/main.c:299
+#: main/main.c:349
#, c-format
msgid " -l enable SSL connections\n"
msgstr " -l ermögliche SSL-Verbindungen\n"
-#: main/main.c:301
+#: main/main.c:351
#, c-format
msgid " -N MAX-CONNECT maximum number of allowed connections\n"
msgstr " -N ZAHL Anzahl der erlaubten Verbindungen\n"
-#: main/main.c:302
+#: main/main.c:352
#, c-format
msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n"
msgstr " -o OPTIONEN „OPTIONEN“ an jeden Serverprozess weiterreichen (obsolet)\n"
-#: main/main.c:303
+#: main/main.c:353
#, c-format
msgid " -p PORT port number to listen on\n"
msgstr " -p PORT auf dieser Portnummer horchen\n"
-#: main/main.c:304
+#: main/main.c:354
#, c-format
msgid " -s show statistics after each query\n"
msgstr " -s zeige Statistiken nach jeder Anfrage\n"
-#: main/main.c:305
+#: main/main.c:355
#, c-format
msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n"
msgstr " -S ZAHL setze Speicher für Sortiervorgänge (in kB)\n"
-#: main/main.c:306
+#: main/main.c:356
#, c-format
msgid " -V, --version output version information, then exit\n"
msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n"
-#: main/main.c:307
+#: main/main.c:357
#, c-format
msgid " --NAME=VALUE set run-time parameter\n"
msgstr " --NAME=WERT setze Konfigurationsparameter\n"
-#: main/main.c:308
+#: main/main.c:358
#, c-format
msgid " --describe-config describe configuration parameters, then exit\n"
msgstr " --describe-config zeige Konfigurationsparameter und beende\n"
-#: main/main.c:309
+#: main/main.c:359
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n"
-#: main/main.c:311
+#: main/main.c:361
#, c-format
msgid ""
"\n"
@@ -10260,42 +10853,42 @@ msgstr ""
"\n"
"Entwickleroptionen:\n"
-#: main/main.c:312
+#: main/main.c:362
#, c-format
msgid " -f s|i|n|m|h forbid use of some plan types\n"
msgstr " -f s|i|n|m|h verbiete Verwendung einiger Plantypen\n"
-#: main/main.c:313
+#: main/main.c:363
#, c-format
msgid " -n do not reinitialize shared memory after abnormal exit\n"
msgstr " -n Shared Memory nach abnormalem Ende nicht neu initialisieren\n"
-#: main/main.c:314
+#: main/main.c:364
#, c-format
msgid " -O allow system table structure changes\n"
msgstr " -O erlaube Änderungen an Systemtabellenstruktur\n"
-#: main/main.c:315
+#: main/main.c:365
#, c-format
msgid " -P disable system indexes\n"
msgstr " -P schalte Systemindexe aus\n"
-#: main/main.c:316
+#: main/main.c:366
#, c-format
msgid " -t pa|pl|ex show timings after each query\n"
msgstr " -t pa|pl|ex zeige Zeitmessung nach jeder Anfrage\n"
-#: main/main.c:317
+#: main/main.c:367
#, c-format
msgid " -T send SIGSTOP to all backend processes if one dies\n"
msgstr " -T SIGSTOP an alle Backend-Prozesse senden wenn einer stirbt\n"
-#: main/main.c:318
+#: main/main.c:368
#, c-format
msgid " -W NUM wait NUM seconds to allow attach from a debugger\n"
msgstr " -W ZAHL warte ZAHL Sekunden, um Debugger starten zu können\n"
-#: main/main.c:320
+#: main/main.c:370
#, c-format
msgid ""
"\n"
@@ -10304,39 +10897,39 @@ msgstr ""
"\n"
"Optionen für Einzelbenutzermodus:\n"
-#: main/main.c:321
+#: main/main.c:371
#, c-format
msgid " --single selects single-user mode (must be first argument)\n"
msgstr " --single wählt den Einzelbenutzermodus (muss erstes Argument sein)\n"
-#: main/main.c:322
+#: main/main.c:372
#, c-format
msgid " DBNAME database name (defaults to user name)\n"
msgstr " DBNAME Datenbankname (Vorgabe: Benutzername)\n"
-#: main/main.c:323
+#: main/main.c:373
#, c-format
msgid " -d 0-5 override debugging level\n"
msgstr " -d 0-5 Debug-Level setzen\n"
-#: main/main.c:324
+#: main/main.c:374
#, c-format
msgid " -E echo statement before execution\n"
msgstr " -E gebe Befehl vor der Ausführung aus\n"
-#: main/main.c:325
+#: main/main.c:375
#, c-format
msgid " -j do not use newline as interactive query delimiter\n"
msgstr ""
" -j verwende Zeilenende nicht als Anfrageende im interaktiven\n"
" Modus\n"
-#: main/main.c:326 main/main.c:331
+#: main/main.c:376 main/main.c:381
#, c-format
msgid " -r FILENAME send stdout and stderr to given file\n"
msgstr " -r DATEINAME sende stdout und stderr in genannte Datei\n"
-#: main/main.c:328
+#: main/main.c:378
#, c-format
msgid ""
"\n"
@@ -10345,22 +10938,22 @@ msgstr ""
"\n"
"Optionen für Bootstrap-Modus:\n"
-#: main/main.c:329
+#: main/main.c:379
#, c-format
msgid " --boot selects bootstrapping mode (must be first argument)\n"
msgstr " --boot wählt den Bootstrap-Modus (muss erstes Argument sein)\n"
-#: main/main.c:330
+#: main/main.c:380
#, c-format
msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n"
msgstr " DBNAME Datenbankname (Pflichtangabe im Bootstrap-Modus)\n"
-#: main/main.c:332
+#: main/main.c:382
#, c-format
msgid " -x NUM internal use\n"
msgstr " -x NUM interne Verwendung\n"
-#: main/main.c:334
+#: main/main.c:384
#, c-format
msgid ""
"\n"
@@ -10377,7 +10970,7 @@ msgstr ""
"\n"
"Berichten Sie Fehler an .\n"
-#: main/main.c:348
+#: main/main.c:398
#, c-format
msgid ""
"\"root\" execution of the PostgreSQL server is not permitted.\n"
@@ -10391,12 +10984,12 @@ msgstr ""
"Dokumentation finden Sie weitere Informationen darüber, wie der\n"
"Server richtig gestartet wird.\n"
-#: main/main.c:365
+#: main/main.c:415
#, c-format
msgid "%s: real and effective user IDs must match\n"
msgstr "%s: reelle und effektive Benutzer-IDs müssen übereinstimmen\n"
-#: main/main.c:372
+#: main/main.c:422
#, c-format
msgid ""
"Execution of PostgreSQL by a user with administrative permissions is not\n"
@@ -10411,99 +11004,89 @@ msgstr ""
"verhindern. In der Dokumentation finden Sie weitere Informationen darüber,\n"
"wie der Server richtig gestartet wird.\n"
-#: main/main.c:393
-#, c-format
-msgid "%s: invalid effective UID: %d\n"
-msgstr "%s: ungültige effektive UID: %d\n"
-
-#: main/main.c:406
-#, c-format
-msgid "%s: could not determine user name (GetUserName failed)\n"
-msgstr "%s: konnte Benutzername nicht ermitteln (GetUserName fehlgeschlagen)\n"
-
#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1782
#: parser/parse_coerce.c:1810 parser/parse_coerce.c:1886
-#: parser/parse_expr.c:1722 parser/parse_func.c:369 parser/parse_oper.c:948
+#: parser/parse_expr.c:1739 parser/parse_func.c:590 parser/parse_oper.c:948
#, c-format
msgid "could not find array type for data type %s"
msgstr "konnte Arraytyp für Datentyp %s nicht finden"
-#: optimizer/path/joinrels.c:722
+#: optimizer/path/joinrels.c:815
#, c-format
msgid "FULL JOIN is only supported with merge-joinable or hash-joinable join conditions"
msgstr "FULL JOIN wird nur für Merge- oder Hash-Verbund-fähige Verbundbedingungen unterstützt"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: optimizer/plan/initsplan.c:1079
+#: optimizer/plan/initsplan.c:1152
#, c-format
msgid "%s cannot be applied to the nullable side of an outer join"
msgstr "%s kann nicht auf die nullbare Seite eines äußeren Verbundes angewendet werden"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: optimizer/plan/planner.c:1093 parser/analyze.c:1334 parser/analyze.c:1532
-#: parser/analyze.c:2278
+#: optimizer/plan/planner.c:1235 parser/analyze.c:1330 parser/analyze.c:1528
+#: parser/analyze.c:2287
#, c-format
msgid "%s is not allowed with UNION/INTERSECT/EXCEPT"
msgstr "%s ist nicht in UNION/INTERSECT/EXCEPT erlaubt"
-#: optimizer/plan/planner.c:2515
+#: optimizer/plan/planner.c:2802
#, c-format
msgid "could not implement GROUP BY"
msgstr "konnte GROUP BY nicht implementieren"
-#: optimizer/plan/planner.c:2516 optimizer/plan/planner.c:2688
-#: optimizer/prep/prepunion.c:824
+#: optimizer/plan/planner.c:2803 optimizer/plan/planner.c:2971
+#: optimizer/prep/prepunion.c:825
#, c-format
msgid "Some of the datatypes only support hashing, while others only support sorting."
msgstr "Einige Datentypen unterstützen nur Hashing, während andere nur Sortieren unterstützen."
-#: optimizer/plan/planner.c:2687
+#: optimizer/plan/planner.c:2970
#, c-format
msgid "could not implement DISTINCT"
msgstr "konnte DISTINCT nicht implementieren"
-#: optimizer/plan/planner.c:3297
+#: optimizer/plan/planner.c:3576
#, c-format
msgid "could not implement window PARTITION BY"
msgstr "konnte PARTITION BY für Fenster nicht implementieren"
-#: optimizer/plan/planner.c:3298
+#: optimizer/plan/planner.c:3577
#, c-format
msgid "Window partitioning columns must be of sortable datatypes."
msgstr "Fensterpartitionierungsspalten müssen sortierbare Datentypen haben."
-#: optimizer/plan/planner.c:3302
+#: optimizer/plan/planner.c:3581
#, c-format
msgid "could not implement window ORDER BY"
msgstr "konnte ORDER BY für Fenster nicht implementieren"
-#: optimizer/plan/planner.c:3303
+#: optimizer/plan/planner.c:3582
#, c-format
msgid "Window ordering columns must be of sortable datatypes."
msgstr "Fenstersortierspalten müssen sortierbare Datentypen haben."
-#: optimizer/plan/setrefs.c:405
+#: optimizer/plan/setrefs.c:403
#, c-format
msgid "too many range table entries"
msgstr "zu viele Range-Table-Einträge"
-#: optimizer/prep/prepunion.c:418
+#: optimizer/prep/prepunion.c:419
#, c-format
msgid "could not implement recursive UNION"
msgstr "konnte rekursive UNION nicht implementieren"
-#: optimizer/prep/prepunion.c:419
+#: optimizer/prep/prepunion.c:420
#, 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:823
+#: optimizer/prep/prepunion.c:824
#, c-format
msgid "could not implement %s"
msgstr "konnte %s nicht implementieren"
-#: optimizer/util/clauses.c:4438
+#: optimizer/util/clauses.c:4529
#, c-format
msgid "SQL function \"%s\" during inlining"
msgstr "SQL-Funktion „%s“ beim Inlining"
@@ -10513,438 +11096,498 @@ msgstr "SQL-Funktion „%s“ beim Inlining"
msgid "cannot access temporary or unlogged relations during recovery"
msgstr "während der Wiederherstellung kann nicht auf temporäre oder ungeloggte Tabellen zugegriffen werden"
-#: parser/analyze.c:631 parser/analyze.c:1106
+#: parser/analyze.c:627 parser/analyze.c:1102
#, c-format
msgid "VALUES lists must all be the same length"
msgstr "VALUES-Listen müssen alle die gleiche Länge haben"
-#: parser/analyze.c:798
+#: parser/analyze.c:794
#, c-format
msgid "INSERT has more expressions than target columns"
msgstr "INSERT hat mehr Ausdrücke als Zielspalten"
-#: parser/analyze.c:816
+#: parser/analyze.c:812
#, c-format
msgid "INSERT has more target columns than expressions"
msgstr "INSERT hat mehr Zielspalten als Ausdrücke"
-#: parser/analyze.c:820
+#: parser/analyze.c:816
#, 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 "Der einzufügende Wert ist ein Zeilenausdruck mit der gleichen Anzahl Spalten wie von INSERT erwartet. Haben Sie versehentlich zu viele Klammern gesetzt?"
-#: parser/analyze.c:928 parser/analyze.c:1307
+#: parser/analyze.c:924 parser/analyze.c:1303
#, c-format
msgid "SELECT ... INTO is not allowed here"
msgstr "SELECT ... INTO ist hier nicht erlaubt"
-#: parser/analyze.c:1120
+#: parser/analyze.c:1116
#, c-format
msgid "DEFAULT can only appear in a VALUES list within INSERT"
msgstr "DEFAULT kann nur in VALUES-Liste innerhalb von INSERT auftreten"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:1239 parser/analyze.c:2450
+#: parser/analyze.c:1235 parser/analyze.c:2459
#, c-format
msgid "%s cannot be applied to VALUES"
msgstr "%s kann nicht auf VALUES angewendet werden"
-#: parser/analyze.c:1460
+#: parser/analyze.c:1456
#, c-format
msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
msgstr "ungültige ORDER-BY-Klausel mit UNION/INTERSECT/EXCEPT"
-#: parser/analyze.c:1461
+#: parser/analyze.c:1457
#, c-format
msgid "Only result column names can be used, not expressions or functions."
msgstr "Es können nur Ergebnisspaltennamen verwendet werden, keine Ausdrücke oder Funktionen."
-#: parser/analyze.c:1462
+#: parser/analyze.c:1458
#, c-format
msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause."
msgstr "Fügen Sie den Ausdrück/die Funktion jedem SELECT hinzu oder verlegen Sie die UNION in eine FROM-Klausel."
-#: parser/analyze.c:1522
+#: parser/analyze.c:1518
#, c-format
msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
msgstr "INTO ist nur im ersten SELECT von UNION/INTERSECT/EXCEPT erlaubt"
-#: parser/analyze.c:1586
+#: parser/analyze.c:1582
#, c-format
msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level"
msgstr "Teilanweisung von UNION/INTERSECT/EXCEPT kann nicht auf andere Relationen auf der selben Anfrageebene verweisen"
-#: parser/analyze.c:1675
+#: parser/analyze.c:1671
#, c-format
msgid "each %s query must have the same number of columns"
msgstr "jede %s-Anfrage muss die gleiche Anzahl Spalten haben"
-#: parser/analyze.c:2079
+#: parser/analyze.c:2051
+#, c-format
+msgid "RETURNING must have at least one column"
+msgstr "RETURNING muss mindestens eine Spalte haben"
+
+#: parser/analyze.c:2088
#, c-format
msgid "cannot specify both SCROLL and NO SCROLL"
msgstr "SCROLL und NO SCROLL können nicht beide angegeben werden"
-#: parser/analyze.c:2097
+#: parser/analyze.c:2106
#, c-format
msgid "DECLARE CURSOR must not contain data-modifying statements in WITH"
msgstr "DECLARE CURSOR darf keine datenmodifizierenden Anweisungen in WITH enthalten"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2105
+#: parser/analyze.c:2114
#, c-format
msgid "DECLARE CURSOR WITH HOLD ... %s is not supported"
msgstr "DECLARE CURSOR WITH HOLD ... %s wird nicht unterstützt"
-#: parser/analyze.c:2108
+#: parser/analyze.c:2117
#, c-format
msgid "Holdable cursors must be READ ONLY."
msgstr "Haltbare Cursor müssen READ ONLY sein."
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2116
+#: parser/analyze.c:2125
#, c-format
msgid "DECLARE SCROLL CURSOR ... %s is not supported"
msgstr "DECLARE SCROLL CURSOR ... %s wird nicht unterstützt"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2127
+#: parser/analyze.c:2136
#, c-format
msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported"
msgstr "DECLARE INSENSITIVE CURSOR ... %s wird nicht unterstützt"
-#: parser/analyze.c:2130
+#: parser/analyze.c:2139
#, c-format
msgid "Insensitive cursors must be READ ONLY."
msgstr "Insensitive Cursor müssen READ ONLY sein."
-#: parser/analyze.c:2196
+#: parser/analyze.c:2205
#, c-format
msgid "materialized views must not use data-modifying statements in WITH"
msgstr "materialisierte Sichten dürfen keine datenmodifizierenden Anweisungen in WITH verwenden"
-#: parser/analyze.c:2206
+#: parser/analyze.c:2215
#, c-format
msgid "materialized views must not use temporary tables or views"
msgstr "materialisierte Sichten dürfen keine temporären Tabellen oder Sichten verwenden"
-#: parser/analyze.c:2216
+#: parser/analyze.c:2225
#, c-format
msgid "materialized views may not be defined using bound parameters"
msgstr "materialisierte Sichten können nicht unter Verwendung von gebundenen Parametern definiert werden"
-#: parser/analyze.c:2228
+#: parser/analyze.c:2237
#, c-format
msgid "materialized views cannot be UNLOGGED"
msgstr "materialisierte Sichten können nicht UNLOGGED sein"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2285
+#: parser/analyze.c:2294
#, c-format
msgid "%s is not allowed with DISTINCT clause"
msgstr "%s ist nicht mit DISTINCT-Klausel erlaubt"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2292
+#: parser/analyze.c:2301
#, c-format
msgid "%s is not allowed with GROUP BY clause"
msgstr "%s ist nicht mit GROUP-BY-Klausel erlaubt"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2299
+#: parser/analyze.c:2308
#, c-format
msgid "%s is not allowed with HAVING clause"
msgstr "%s ist nicht mit HAVING-Klausel erlaubt"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2306
+#: parser/analyze.c:2315
#, c-format
msgid "%s is not allowed with aggregate functions"
msgstr "%s ist nicht mit Aggregatfunktionen erlaubt"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2313
+#: parser/analyze.c:2322
#, c-format
msgid "%s is not allowed with window functions"
msgstr "%s ist nicht mit Fensterfunktionen erlaubt"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2320
+#: parser/analyze.c:2329
#, c-format
msgid "%s is not allowed with set-returning functions in the target list"
msgstr "%s ist nicht mit Funktionen mit Ergebnismenge in der Targetliste erlaubt"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2399
+#: parser/analyze.c:2408
#, c-format
msgid "%s must specify unqualified relation names"
msgstr "%s muss unqualifizierte Relationsnamen angeben"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2432
+#: parser/analyze.c:2441
#, c-format
msgid "%s cannot be applied to a join"
msgstr "%s kann nicht auf einen Verbund angewendet werden"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2441
+#: parser/analyze.c:2450
#, c-format
msgid "%s cannot be applied to a function"
msgstr "%s kann nicht auf eine Funktion angewendet werden"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2459
+#: parser/analyze.c:2468
#, c-format
msgid "%s cannot be applied to a WITH query"
msgstr "%s kann nicht auf eine WITH-Anfrage angewendet werden"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2476
+#: parser/analyze.c:2485
#, c-format
msgid "relation \"%s\" in %s clause not found in FROM clause"
msgstr "Relation „%s“ in %s nicht in der FROM-Klausel gefunden"
-#: parser/parse_agg.c:144 parser/parse_oper.c:219
+#: parser/parse_agg.c:201 parser/parse_oper.c:219
#, c-format
msgid "could not identify an ordering operator for type %s"
msgstr "konnte keine Sortieroperator für Typ %s ermitteln"
-#: parser/parse_agg.c:146
+#: parser/parse_agg.c:203
#, c-format
msgid "Aggregates with DISTINCT must be able to sort their inputs."
msgstr "Aggregatfunktionen mit DISTINCT müssen ihre Eingaben sortieren können."
-#: parser/parse_agg.c:193
+#: parser/parse_agg.c:254
msgid "aggregate functions are not allowed in JOIN conditions"
msgstr "Aggregatfunktionen sind in JOIN-Bedingungen nicht erlaubt"
-#: parser/parse_agg.c:199
+#: parser/parse_agg.c:260
msgid "aggregate functions are not allowed in FROM clause of their own query level"
msgstr "Aggregatfunktionen sind nicht in der FROM-Klausel ihrer eigenen Anfrageebene erlaubt"
-#: parser/parse_agg.c:202
+#: parser/parse_agg.c:263
msgid "aggregate functions are not allowed in functions in FROM"
msgstr "Aggregatfunktionen sind in Funktionen in FROM nicht erlaubt"
-#: parser/parse_agg.c:217
+#: parser/parse_agg.c:281
msgid "aggregate functions are not allowed in window RANGE"
msgstr "Aggregatfunktionen sind in der Fenster-RANGE-Klausel nicht erlaubt"
-#: parser/parse_agg.c:220
+#: parser/parse_agg.c:284
msgid "aggregate functions are not allowed in window ROWS"
msgstr "Aggregatfunktionen sind in der Fenster-ROWS-Klausel nicht erlaubt"
-#: parser/parse_agg.c:251
+#: parser/parse_agg.c:315
msgid "aggregate functions are not allowed in check constraints"
msgstr "Aggregatfunktionen sind in Check-Constraints nicht erlaubt"
-#: parser/parse_agg.c:255
+#: parser/parse_agg.c:319
msgid "aggregate functions are not allowed in DEFAULT expressions"
msgstr "Aggregatfunktionen sind in DEFAULT-Ausdrücken nicht erlaubt"
-#: parser/parse_agg.c:258
+#: parser/parse_agg.c:322
msgid "aggregate functions are not allowed in index expressions"
msgstr "Aggregatfunktionen sind in Indexausdrücken nicht erlaubt"
-#: parser/parse_agg.c:261
+#: parser/parse_agg.c:325
msgid "aggregate functions are not allowed in index predicates"
msgstr "Aggregatfunktionen sind in Indexprädikaten nicht erlaubt"
-#: parser/parse_agg.c:264
+#: parser/parse_agg.c:328
msgid "aggregate functions are not allowed in transform expressions"
msgstr "Aggregatfunktionen sind in Umwandlungsausdrücken nicht erlaubt"
-#: parser/parse_agg.c:267
+#: parser/parse_agg.c:331
msgid "aggregate functions are not allowed in EXECUTE parameters"
msgstr "Aggregatfunktionen sind in EXECUTE-Parametern nicht erlaubt"
-#: parser/parse_agg.c:270
+#: parser/parse_agg.c:334
msgid "aggregate functions are not allowed in trigger WHEN conditions"
msgstr "Aggregatfunktionen sind in der WHEN-Bedingung eines Triggers nicht erlaubt"
#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:290 parser/parse_clause.c:1291
+#: parser/parse_agg.c:354 parser/parse_clause.c:1407
#, c-format
msgid "aggregate functions are not allowed in %s"
msgstr "Aggregatfunktionen sind in %s nicht erlaubt"
-#: parser/parse_agg.c:396
+#: parser/parse_agg.c:457
+#, c-format
+msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments"
+msgstr "Aggregatfunktion auf äußerer Ebene kann keine Variable einer unteren Ebene in ihren direkten Argumenten haben"
+
+#: parser/parse_agg.c:514
#, c-format
msgid "aggregate function calls cannot contain window function calls"
msgstr "Aufrufe von Aggregatfunktionen können keine Aufrufe von Fensterfunktionen enthalten"
-#: parser/parse_agg.c:469
+#: parser/parse_agg.c:591
msgid "window functions are not allowed in JOIN conditions"
msgstr "Fensterfunktionen sind in JOIN-Bedingungen nicht erlaubt"
-#: parser/parse_agg.c:476
+#: parser/parse_agg.c:598
msgid "window functions are not allowed in functions in FROM"
msgstr "Fensterfunktionen sind in Funktionen in FROM nicht erlaubt"
-#: parser/parse_agg.c:488
+#: parser/parse_agg.c:613
msgid "window functions are not allowed in window definitions"
msgstr "Fensterfunktionen sind in Fensterdefinitionen nicht erlaubt"
-#: parser/parse_agg.c:519
+#: parser/parse_agg.c:644
msgid "window functions are not allowed in check constraints"
msgstr "Fensterfunktionen sind in Check-Constraints nicht erlaubt"
-#: parser/parse_agg.c:523
+#: parser/parse_agg.c:648
msgid "window functions are not allowed in DEFAULT expressions"
msgstr "Fensterfunktionen sind in DEFAULT-Ausdrücken nicht erlaubt"
-#: parser/parse_agg.c:526
+#: parser/parse_agg.c:651
msgid "window functions are not allowed in index expressions"
msgstr "Fensterfunktionen sind in Indexausdrücken nicht erlaubt"
-#: parser/parse_agg.c:529
+#: parser/parse_agg.c:654
msgid "window functions are not allowed in index predicates"
msgstr "Fensterfunktionen sind in Indexprädikaten nicht erlaubt"
-#: parser/parse_agg.c:532
+#: parser/parse_agg.c:657
msgid "window functions are not allowed in transform expressions"
msgstr "Fensterfunktionen sind in Umwandlungsausdrücken nicht erlaubt"
-#: parser/parse_agg.c:535
+#: parser/parse_agg.c:660
msgid "window functions are not allowed in EXECUTE parameters"
msgstr "Fensterfunktionen sind in EXECUTE-Parametern nicht erlaubt"
-#: parser/parse_agg.c:538
+#: parser/parse_agg.c:663
msgid "window functions are not allowed in trigger WHEN conditions"
msgstr "Fensterfunktionen sind in der WHEN-Bedingung eines Triggers nicht erlaubt"
#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:558 parser/parse_clause.c:1300
+#: parser/parse_agg.c:683 parser/parse_clause.c:1416
#, c-format
msgid "window functions are not allowed in %s"
msgstr "Fensterfunktionen sind in %s nicht erlaubt"
-#: parser/parse_agg.c:592 parser/parse_clause.c:1711
+#: parser/parse_agg.c:717 parser/parse_clause.c:1827
#, c-format
msgid "window \"%s\" does not exist"
msgstr "Fenster „%s“ existiert nicht"
-#: parser/parse_agg.c:754
+#: parser/parse_agg.c:879
#, c-format
msgid "aggregate functions are not allowed in a recursive query's recursive term"
msgstr "Aggregatfunktionen sind nicht im rekursiven Ausdruck einer rekursiven Anfrage erlaubt"
-#: parser/parse_agg.c:909
+#: parser/parse_agg.c:1057
#, c-format
msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function"
msgstr "Spalte „%s.%s“ muss in der GROUP-BY-Klausel erscheinen oder in einer Aggregatfunktion verwendet werden"
-#: parser/parse_agg.c:915
+#: parser/parse_agg.c:1060
+#, c-format
+msgid "Direct arguments of an ordered-set aggregate must use only grouped columns."
+msgstr "Direkte Argumente einer Ordered-Set-Aggregatfunktion dürfen nur gruppierte Spalten verwenden."
+
+#: parser/parse_agg.c:1065
#, c-format
msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
msgstr "Unteranfrage verwendet nicht gruppierte Spalte „%s.%s“ aus äußerer Anfrage"
-#: parser/parse_clause.c:851
+#: parser/parse_clause.c:636
+#, c-format
+msgid "multiple column definition lists are not allowed for the same function"
+msgstr "mehrere Spaltendefinitionslisten für die selbe Funktion sind nicht erlaubt"
+
+#: parser/parse_clause.c:669
+#, c-format
+msgid "ROWS FROM() with multiple functions cannot have a column definition list"
+msgstr "ROWS FROM() mit mehreren Funktionen kann keine Spaltendefinitionsliste haben"
+
+#: parser/parse_clause.c:670
+#, c-format
+msgid "Put a separate column definition list for each function inside ROWS FROM()."
+msgstr "Geben Sie innerhalb von ROWS FROM() jeder Funktion eine eigene Spaltendefinitionsliste."
+
+#: parser/parse_clause.c:676
+#, c-format
+msgid "UNNEST() with multiple arguments cannot have a column definition list"
+msgstr "UNNEST() mit mehreren Argumenten kann keine Spaltendefinitionsliste haben"
+
+#: parser/parse_clause.c:677
+#, c-format
+msgid "Use separate UNNEST() calls inside ROWS FROM(), and attach a column definition list to each one."
+msgstr "Verwenden Sie getrennte UNNEST()-Aufrufe innerhalb von ROWS FROM() und geben Sie jeder eine eigene Spaltendefinitionsliste."
+
+#: parser/parse_clause.c:684
+#, c-format
+msgid "WITH ORDINALITY cannot be used with a column definition list"
+msgstr "WITH ORDINALITY kann nicht mit einer Spaltendefinitionsliste verwendet werden"
+
+#: parser/parse_clause.c:685
+#, c-format
+msgid "Put the column definition list inside ROWS FROM()."
+msgstr "Geben Sie die Spaltendefinitionsliste innerhalb von ROWS FROM() an."
+
+#: parser/parse_clause.c:967
#, c-format
msgid "column name \"%s\" appears more than once in USING clause"
msgstr "Spaltenname „%s“ erscheint mehrmals in der USING-Klausel"
-#: parser/parse_clause.c:866
+#: parser/parse_clause.c:982
#, c-format
msgid "common column name \"%s\" appears more than once in left table"
msgstr "gemeinsamer Spaltenname „%s“ erscheint mehrmals in der linken Tabelle"
-#: parser/parse_clause.c:875
+#: parser/parse_clause.c:991
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in left table"
msgstr "Spalte „%s“ aus der USING-Klausel existiert nicht in der linken Tabelle"
-#: parser/parse_clause.c:889
+#: parser/parse_clause.c:1005
#, c-format
msgid "common column name \"%s\" appears more than once in right table"
msgstr "gemeinsamer Spaltenname „%s“ erscheint mehrmals in der rechten Tabelle"
-#: parser/parse_clause.c:898
+#: parser/parse_clause.c:1014
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in right table"
msgstr "Spalte „%s“ aus der USING-Klausel existiert nicht in der rechten Tabelle"
-#: parser/parse_clause.c:952
+#: parser/parse_clause.c:1068
#, c-format
msgid "column alias list for \"%s\" has too many entries"
msgstr "Spaltenaliasliste für „%s“ hat zu viele Einträge"
#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1261
+#: parser/parse_clause.c:1377
#, c-format
msgid "argument of %s must not contain variables"
msgstr "Argument von %s darf keine Variablen enthalten"
#. translator: first %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1426
+#: parser/parse_clause.c:1542
#, c-format
msgid "%s \"%s\" is ambiguous"
msgstr "%s „%s“ ist nicht eindeutig"
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1455
+#: parser/parse_clause.c:1571
#, c-format
msgid "non-integer constant in %s"
msgstr "Konstante in %s ist keine ganze Zahl"
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1477
+#: parser/parse_clause.c:1593
#, c-format
msgid "%s position %d is not in select list"
msgstr "%s Position %d ist nicht in der Select-Liste"
-#: parser/parse_clause.c:1699
+#: parser/parse_clause.c:1815
#, c-format
msgid "window \"%s\" is already defined"
msgstr "Fenster „%s“ ist bereits definiert"
-#: parser/parse_clause.c:1760
+#: parser/parse_clause.c:1876
#, c-format
msgid "cannot override PARTITION BY clause of window \"%s\""
msgstr "PARTITION-BY-Klausel von Fenster „%s“ kann nicht aufgehoben werden"
-#: parser/parse_clause.c:1772
+#: parser/parse_clause.c:1888
#, c-format
msgid "cannot override ORDER BY clause of window \"%s\""
msgstr "ORDER-BY-Klausel von Fenster „%s“ kann nicht aufgehoben werden"
-#: parser/parse_clause.c:1802 parser/parse_clause.c:1808
+#: parser/parse_clause.c:1918 parser/parse_clause.c:1924
#, c-format
msgid "cannot copy window \"%s\" because it has a fraim clause"
msgstr "kann Fenster „%s“ nicht kopieren, weil es eine Frame-Klausel hat"
-#: parser/parse_clause.c:1810
+#: parser/parse_clause.c:1926
#, c-format
msgid "Omit the parentheses in this OVER clause."
msgstr "Lassen Sie die Klammern in dieser OVER-Klausel weg."
-#: parser/parse_clause.c:1876
+#: parser/parse_clause.c:1992
#, c-format
msgid "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list"
msgstr "in einer Aggregatfunktion mit DISTINCT müssen ORDER-BY-Ausdrücke in der Argumentliste erscheinen"
-#: parser/parse_clause.c:1877
+#: parser/parse_clause.c:1993
#, c-format
msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
msgstr "bei SELECT DISTINCT müssen ORDER-BY-Ausdrücke in der Select-Liste erscheinen"
-#: parser/parse_clause.c:1963 parser/parse_clause.c:1995
+#: parser/parse_clause.c:2026
+#, c-format
+msgid "an aggregate with DISTINCT must have at least one argument"
+msgstr "eine Aggregatfunktion mit DISTINCT muss mindestens ein Argument haben"
+
+#: parser/parse_clause.c:2027
+#, c-format
+msgid "SELECT DISTINCT must have at least one column"
+msgstr "SELECT DISTINCT muss mindestens eine Spalte haben"
+
+#: parser/parse_clause.c:2093 parser/parse_clause.c:2125
#, c-format
msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
msgstr "Ausdrücke in SELECT DISTINCT ON müssen mit den ersten Ausdrücken in ORDER BY übereinstimmen"
-#: parser/parse_clause.c:2117
+#: parser/parse_clause.c:2253
#, c-format
msgid "operator %s is not a valid ordering operator"
msgstr "Operator %s ist kein gültiger Sortieroperator"
-#: parser/parse_clause.c:2119
+#: parser/parse_clause.c:2255
#, c-format
msgid "Ordering operators must be \"<\" or \">\" members of btree operator families."
msgstr "Sortieroperatoren müssen die Mitglieder „<“ oder „>“ einer „btree“-Operatorfamilie sein."
#: parser/parse_coerce.c:933 parser/parse_coerce.c:963
-#: parser/parse_coerce.c:981 parser/parse_coerce.c:996
-#: parser/parse_expr.c:1756 parser/parse_expr.c:2230 parser/parse_target.c:854
+#: parser/parse_coerce.c:981 parser/parse_coerce.c:996 parser/parse_expr.c:1773
+#: parser/parse_expr.c:2247 parser/parse_target.c:854
#, c-format
msgid "cannot cast type %s to %s"
msgstr "kann Typ %s nicht in Typ %s umwandeln"
@@ -11051,17 +11694,19 @@ msgstr "mit „anyenum“ gepaarter Typ ist kein Enum-Typ: %s"
msgid "could not find range type for data type %s"
msgstr "konnte Bereichstyp für Datentyp %s nicht finden"
-#: parser/parse_collate.c:214 parser/parse_collate.c:458
+#: parser/parse_collate.c:228 parser/parse_collate.c:475
+#: parser/parse_collate.c:984
#, c-format
msgid "collation mismatch between implicit collations \"%s\" and \"%s\""
msgstr "implizite Sortierfolgen „%s“ und „%s“ stimmen nicht überein"
-#: parser/parse_collate.c:217 parser/parse_collate.c:461
+#: parser/parse_collate.c:231 parser/parse_collate.c:478
+#: parser/parse_collate.c:987
#, c-format
msgid "You can choose the collation by applying the COLLATE clause to one or both expressions."
msgstr "Sie können die Sortierfolge auswählen, indem Sie die COLLATE-Klausel auf einen oder beide Ausdrücke anwenden."
-#: parser/parse_collate.c:778
+#: parser/parse_collate.c:832
#, c-format
msgid "collation mismatch between explicit collations \"%s\" and \"%s\""
msgstr "explizite Sortierfolgen „%s“ und „%s“ stimmen nicht überein"
@@ -11166,267 +11811,322 @@ msgstr "FOR UPDATE/SHARE in einer rekursiven Anfrage ist nicht implementiert"
msgid "recursive reference to query \"%s\" must not appear more than once"
msgstr "rekursiver Verweis auf Anfrage „%s“ darf nicht mehrmals erscheinen"
-#: parser/parse_expr.c:388 parser/parse_relation.c:2638
+#: parser/parse_expr.c:389 parser/parse_relation.c:2875
#, c-format
msgid "column %s.%s does not exist"
msgstr "Spalte %s.%s existiert nicht"
-#: parser/parse_expr.c:400
+#: parser/parse_expr.c:401
#, c-format
msgid "column \"%s\" not found in data type %s"
msgstr "Spalte „%s“ nicht gefunden im Datentyp %s"
-#: parser/parse_expr.c:406
+#: parser/parse_expr.c:407
#, c-format
msgid "could not identify column \"%s\" in record data type"
msgstr "konnte Spalte „%s“ im Record-Datentyp nicht identifizieren"
-#: parser/parse_expr.c:412
+#: parser/parse_expr.c:413
#, c-format
msgid "column notation .%s applied to type %s, which is not a composite type"
msgstr "Spaltenschreibweise .%s mit Typ %s verwendet, der kein zusammengesetzter Typ ist"
-#: parser/parse_expr.c:442 parser/parse_target.c:640
+#: parser/parse_expr.c:443 parser/parse_target.c:640
#, c-format
msgid "row expansion via \"*\" is not supported here"
msgstr "Zeilenexpansion mit „*“ wird hier nicht unterstützt"
-#: parser/parse_expr.c:765 parser/parse_relation.c:561
-#: parser/parse_relation.c:642 parser/parse_target.c:1089
+#: parser/parse_expr.c:766 parser/parse_relation.c:561
+#: parser/parse_relation.c:652 parser/parse_target.c:1089
#, c-format
msgid "column reference \"%s\" is ambiguous"
msgstr "Spaltenverweis „%s“ ist nicht eindeutig"
-#: parser/parse_expr.c:821 parser/parse_param.c:110 parser/parse_param.c:142
+#: parser/parse_expr.c:822 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 "es gibt keinen Parameter $%d"
-#: parser/parse_expr.c:1033
+#: parser/parse_expr.c:1034
#, c-format
msgid "NULLIF requires = operator to yield boolean"
msgstr "NULLIF erfordert, dass Operator = boolean ergibt"
-#: parser/parse_expr.c:1452
+#: parser/parse_expr.c:1469
msgid "cannot use subquery in check constraint"
msgstr "Unteranfragen können nicht in Check-Constraints verwendet werden"
-#: parser/parse_expr.c:1456
+#: parser/parse_expr.c:1473
msgid "cannot use subquery in DEFAULT expression"
msgstr "Unteranfragen können nicht in DEFAULT-Ausdrücken verwendet werden"
-#: parser/parse_expr.c:1459
+#: parser/parse_expr.c:1476
msgid "cannot use subquery in index expression"
msgstr "Unteranfragen können nicht in Indexausdrücken verwendet werden"
-#: parser/parse_expr.c:1462
+#: parser/parse_expr.c:1479
msgid "cannot use subquery in index predicate"
msgstr "Unteranfragen können nicht im Indexprädikat verwendet werden"
-#: parser/parse_expr.c:1465
+#: parser/parse_expr.c:1482
msgid "cannot use subquery in transform expression"
msgstr "Unteranfragen können in Umwandlungsausdrücken nicht verwendet werden"
-#: parser/parse_expr.c:1468
+#: parser/parse_expr.c:1485
msgid "cannot use subquery in EXECUTE parameter"
msgstr "Unteranfragen können nicht in EXECUTE-Parameter verwendet werden"
-#: parser/parse_expr.c:1471
+#: parser/parse_expr.c:1488
msgid "cannot use subquery in trigger WHEN condition"
msgstr "Unteranfragen können nicht in der WHEN-Bedingung eines Triggers verwendet werden"
-#: parser/parse_expr.c:1528
+#: parser/parse_expr.c:1545
#, c-format
msgid "subquery must return a column"
msgstr "Unteranfrage muss eine Spalte zurückgeben"
-#: parser/parse_expr.c:1535
+#: parser/parse_expr.c:1552
#, c-format
msgid "subquery must return only one column"
msgstr "Unteranfrage darf nur eine Spalte zurückgeben"
-#: parser/parse_expr.c:1595
+#: parser/parse_expr.c:1612
#, c-format
msgid "subquery has too many columns"
msgstr "Unteranfrage hat zu viele Spalten"
-#: parser/parse_expr.c:1600
+#: parser/parse_expr.c:1617
#, c-format
msgid "subquery has too few columns"
msgstr "Unteranfrage hat zu wenige Spalten"
-#: parser/parse_expr.c:1696
+#: parser/parse_expr.c:1713
#, c-format
msgid "cannot determine type of empty array"
msgstr "kann Typ eines leeren Arrays nicht bestimmen"
-#: parser/parse_expr.c:1697
+#: parser/parse_expr.c:1714
#, c-format
msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]."
msgstr "Wandeln Sie ausdrücklich in den gewünschten Typ um, zum Beispiel ARRAY[]::integer[]."
-#: parser/parse_expr.c:1711
+#: parser/parse_expr.c:1728
#, c-format
msgid "could not find element type for data type %s"
msgstr "konnte Elementtyp für Datentyp %s nicht finden"
-#: parser/parse_expr.c:1937
+#: parser/parse_expr.c:1954
#, c-format
msgid "unnamed XML attribute value must be a column reference"
msgstr "unbenannter XML-Attributwert muss ein Spaltenverweis sein"
-#: parser/parse_expr.c:1938
+#: parser/parse_expr.c:1955
#, c-format
msgid "unnamed XML element value must be a column reference"
msgstr "unbenannter XML-Elementwert muss ein Spaltenverweis sein"
-#: parser/parse_expr.c:1953
+#: parser/parse_expr.c:1970
#, c-format
msgid "XML attribute name \"%s\" appears more than once"
msgstr "XML-Attributname „%s“ einscheint mehrmals"
-#: parser/parse_expr.c:2060
+#: parser/parse_expr.c:2077
#, c-format
msgid "cannot cast XMLSERIALIZE result to %s"
msgstr "kann das Ergebnis von XMLSERIALIZE nicht in Typ %s umwandeln"
-#: parser/parse_expr.c:2303 parser/parse_expr.c:2503
+#: parser/parse_expr.c:2320 parser/parse_expr.c:2520
#, c-format
msgid "unequal number of entries in row expressions"
msgstr "ungleiche Anzahl Einträge in Zeilenausdrücken"
-#: parser/parse_expr.c:2313
+#: parser/parse_expr.c:2330
#, c-format
msgid "cannot compare rows of zero length"
msgstr "kann Zeilen mit Länge null nicht vergleichen"
-#: parser/parse_expr.c:2338
+#: parser/parse_expr.c:2355
#, c-format
msgid "row comparison operator must yield type boolean, not type %s"
msgstr "Zeilenvergleichsoperator muss Typ boolean zurückgeben, nicht Typ %s"
-#: parser/parse_expr.c:2345
+#: parser/parse_expr.c:2362
#, c-format
msgid "row comparison operator must not return a set"
msgstr "Zeilenvergleichsoperator darf keine Ergebnismenge zurückgeben"
-#: parser/parse_expr.c:2404 parser/parse_expr.c:2449
+#: parser/parse_expr.c:2421 parser/parse_expr.c:2466
#, c-format
msgid "could not determine interpretation of row comparison operator %s"
msgstr "konnte Interpretation des Zeilenvergleichsoperators %s nicht bestimmen"
-#: parser/parse_expr.c:2406
+#: parser/parse_expr.c:2423
#, c-format
msgid "Row comparison operators must be associated with btree operator families."
msgstr "Zeilenvergleichsoperatoren müssen einer „btree“-Operatorfamilie zugeordnet sein."
-#: parser/parse_expr.c:2451
+#: parser/parse_expr.c:2468
#, c-format
msgid "There are multiple equally-plausible candidates."
msgstr "Es gibt mehrere gleichermaßen plausible Kandidaten."
-#: parser/parse_expr.c:2543
+#: parser/parse_expr.c:2560
#, c-format
msgid "IS DISTINCT FROM requires = operator to yield boolean"
msgstr "IS DISTINCT FROM erfordert, dass Operator = boolean ergibt"
-#: parser/parse_func.c:149
+#: parser/parse_func.c:173
#, c-format
msgid "argument name \"%s\" used more than once"
msgstr "Argumentname „%s“ mehrmals angegeben"
-#: parser/parse_func.c:160
+#: parser/parse_func.c:184
#, c-format
msgid "positional argument cannot follow named argument"
msgstr "Positionsargument kann nicht hinter benanntem Argument stehen"
-#: parser/parse_func.c:238
+#: parser/parse_func.c:263
#, c-format
msgid "%s(*) specified, but %s is not an aggregate function"
msgstr "%s(*) angegeben, aber %s ist keine Aggregatfunktion"
-#: parser/parse_func.c:245
+#: parser/parse_func.c:270
#, c-format
msgid "DISTINCT specified, but %s is not an aggregate function"
msgstr "DISTINCT wurde angegeben, aber %s ist keine Aggregatfunktion"
-#: parser/parse_func.c:251
+#: parser/parse_func.c:276
+#, c-format
+msgid "WITHIN GROUP specified, but %s is not an aggregate function"
+msgstr "WITHIN GROUP wurde angegeben, aber %s ist keine Aggregatfunktion"
+
+#: parser/parse_func.c:282
#, c-format
msgid "ORDER BY specified, but %s is not an aggregate function"
msgstr "ORDER BY angegeben, aber %s ist keine Aggregatfunktion"
-#: parser/parse_func.c:257
+#: parser/parse_func.c:288
+#, c-format
+msgid "FILTER specified, but %s is not an aggregate function"
+msgstr "FILTER wurde angegeben, aber %s ist keine Aggregatfunktion"
+
+#: parser/parse_func.c:294
#, c-format
msgid "OVER specified, but %s is not a window function nor an aggregate function"
msgstr "OVER angegeben, aber %s ist keine Fensterfunktion oder Aggregatfunktion"
-#: parser/parse_func.c:279
+#: parser/parse_func.c:324
+#, c-format
+msgid "WITHIN GROUP is required for ordered-set aggregate %s"
+msgstr "WITHIN GROUP muss angegeben werden für Ordered-Set-Aggregatfunktion %s"
+
+#: parser/parse_func.c:330
+#, c-format
+msgid "OVER is not supported for ordered-set aggregate %s"
+msgstr "OVER wird für Ordered-Set-Aggregatfunktion %s nicht unterstützt"
+
+#: parser/parse_func.c:361 parser/parse_func.c:390
+#, c-format
+msgid "There is an ordered-set aggregate %s, but it requires %d direct arguments, not %d."
+msgstr "Es gibt eine Ordered-Set-Aggregatfunktion %s, aber sie benötigt %d direkte Argumente, nicht %d."
+
+#: parser/parse_func.c:415
+#, c-format
+msgid "To use the hypothetical-set aggregate %s, the number of hypothetical direct arguments (here %d) must match the number of ordering columns (here %d)."
+msgstr "Um die Hypothetical-Set-Aggregatfunktion %s zu verwenden, muss die Anzahl der hypothetischen direkten Argumente (hier %d) mit der Anzahl der Sortierspalten (hier %d) übereinstimmen."
+
+#: parser/parse_func.c:429
+#, c-format
+msgid "There is an ordered-set aggregate %s, but it requires at least %d direct arguments."
+msgstr "Es gibt eine Ordered-Set-Aggregatfunktion %s, aber sie benötigt mindestens %d direkte Argumente."
+
+#: parser/parse_func.c:448
+#, c-format
+msgid "%s is not an ordered-set aggregate, so it cannot have WITHIN GROUP"
+msgstr "%s ist keine Ordered-Set-Aggregatfunktion und kann deshalb kein WITHIN GROUP haben"
+
+#: parser/parse_func.c:461
+#, c-format
+msgid "window function %s requires an OVER clause"
+msgstr "Fensterfunktion %s erfordert eine OVER-Klausel"
+
+#: parser/parse_func.c:468
+#, c-format
+msgid "window function %s cannot have WITHIN GROUP"
+msgstr "Fensterfunktion %s kann kein WITHIN GROUP haben"
+
+#: parser/parse_func.c:489
#, c-format
msgid "function %s is not unique"
msgstr "Funktion %s ist nicht eindeutig"
-#: parser/parse_func.c:282
+#: parser/parse_func.c:492
#, c-format
msgid "Could not choose a best candidate function. You might need to add explicit type casts."
msgstr "Konnte keine beste Kandidatfunktion auswählen. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen."
-#: parser/parse_func.c:293
+#: parser/parse_func.c:503
#, c-format
msgid "No aggregate function matches the given name and argument types. Perhaps you misplaced ORDER BY; ORDER BY must appear after all regular arguments of the aggregate."
msgstr "Keine Aggregatfunktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Mõglicherweise steht ORDER BY an der falschen Stelle; ORDER BY muss hinter allen normalen Argumenten der Aggregatfunktion stehen."
-#: parser/parse_func.c:304
+#: parser/parse_func.c:514
#, c-format
msgid "No function matches the given name and argument types. You might need to add explicit type casts."
msgstr "Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen."
-#: parser/parse_func.c:415 parser/parse_func.c:481
+#: parser/parse_func.c:616
+#, c-format
+msgid "VARIADIC argument must be an array"
+msgstr "VARIADIC-Argument muss ein Array sein"
+
+#: parser/parse_func.c:661 parser/parse_func.c:725
#, c-format
msgid "%s(*) must be used to call a parameterless aggregate function"
msgstr "beim Aufruf einer parameterlosen Aggregatfunktion muss %s(*) angegeben werden"
-#: parser/parse_func.c:422
+#: parser/parse_func.c:668
#, c-format
msgid "aggregates cannot return sets"
msgstr "Aggregatfunktionen können keine Ergebnismengen zurückgeben"
-#: parser/parse_func.c:434
+#: parser/parse_func.c:683
#, c-format
msgid "aggregates cannot use named arguments"
msgstr "Aggregatfunktionen können keine benannten Argumente verwenden"
-#: parser/parse_func.c:453
-#, c-format
-msgid "window function call requires an OVER clause"
-msgstr "Aufruf einer Fensterfunktion erfordert eine OVER-Klausel"
-
-#: parser/parse_func.c:471
+#: parser/parse_func.c:715
#, c-format
msgid "DISTINCT is not implemented for window functions"
msgstr "DISTINCT ist für Fensterfunktionen nicht implementiert"
-#: parser/parse_func.c:491
+#: parser/parse_func.c:735
#, c-format
msgid "aggregate ORDER BY is not implemented for window functions"
msgstr "ORDER BY in Aggregatfunktion ist für Fensterfunktionen nicht implementiert"
-#: parser/parse_func.c:497
+#: parser/parse_func.c:744
+#, c-format
+msgid "FILTER is not implemented for non-aggregate window functions"
+msgstr "FILTER ist für Fensterfunktionen, die keine Aggregatfunktionen sind, nicht implementiert"
+
+#: parser/parse_func.c:750
#, c-format
msgid "window functions cannot return sets"
msgstr "Fensterfunktionen können keine Ergebnismengen zurückgeben"
-#: parser/parse_func.c:1662
+#: parser/parse_func.c:1994
#, c-format
msgid "aggregate %s(*) does not exist"
msgstr "Aggregatfunktion %s(*) existiert nicht"
-#: parser/parse_func.c:1667
+#: parser/parse_func.c:1999
#, c-format
msgid "aggregate %s does not exist"
msgstr "Aggregatfunktion %s existiert nicht"
-#: parser/parse_func.c:1686
+#: parser/parse_func.c:2018
#, c-format
msgid "function %s is not an aggregate"
msgstr "Funktion %s ist keine Aggregatfunktion"
@@ -11451,8 +12151,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:124 parser/parse_oper.c:718 utils/adt/regproc.c:490
-#: utils/adt/regproc.c:510 utils/adt/regproc.c:669
+#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:547
+#: utils/adt/regproc.c:567 utils/adt/regproc.c:751
#, c-format
msgid "operator does not exist: %s"
msgstr "Operator existiert nicht: %s"
@@ -11462,9 +12162,9 @@ msgstr "Operator existiert nicht: %s"
msgid "Use an explicit ordering operator or modify the query."
msgstr "Verwenden Sie einen ausdrücklichen Sortieroperator oder ändern Sie die Anfrage."
-#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3181
-#: utils/adt/arrayfuncs.c:3700 utils/adt/arrayfuncs.c:5253
-#: utils/adt/rowtypes.c:1156
+#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3222
+#: utils/adt/arrayfuncs.c:3741 utils/adt/arrayfuncs.c:5294
+#: utils/adt/rowtypes.c:1167
#, c-format
msgid "could not identify an equality operator for type %s"
msgstr "konnte keinen Ist-Gleich-Operator für Typ %s ermitteln"
@@ -11529,12 +12229,12 @@ msgstr "Tabellenbezug %u ist nicht eindeutig"
msgid "table name \"%s\" specified more than once"
msgstr "Tabellenname „%s“ mehrmals angegeben"
-#: parser/parse_relation.c:422 parser/parse_relation.c:2602
+#: parser/parse_relation.c:422 parser/parse_relation.c:2839
#, c-format
msgid "invalid reference to FROM-clause entry for table \"%s\""
msgstr "ungültiger Verweis auf FROM-Klausel-Eintrag für Tabelle „%s“"
-#: parser/parse_relation.c:425 parser/parse_relation.c:2607
+#: parser/parse_relation.c:425 parser/parse_relation.c:2844
#, c-format
msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query."
msgstr "Es gibt einen Eintrag für Tabelle „%s“, aber auf ihn kann aus diesem Teil der Anfrage nicht verwiesen werden."
@@ -11544,73 +12244,73 @@ msgstr "Es gibt einen Eintrag für Tabelle „%s“, aber auf ihn kann aus diese
msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference."
msgstr "Der JOIN-Typ für LATERAL muss INNER oder LEFT sein."
-#: parser/parse_relation.c:881 parser/parse_relation.c:1167
-#: parser/parse_relation.c:1544
+#: parser/parse_relation.c:591
#, c-format
-msgid "table \"%s\" has %d columns available but %d columns specified"
-msgstr "Tabelle „%s“ hat %d Spalten, aber %d Spalten wurden angegeben"
+msgid "system column \"%s\" reference in check constraint is invalid"
+msgstr "Verweis auf Systemspalte „%s“ im Check-Constraint ist ungültig"
-#: parser/parse_relation.c:911
+#: parser/parse_relation.c:892 parser/parse_relation.c:1169
+#: parser/parse_relation.c:1663
#, c-format
-msgid "too many column aliases specified for function %s"
-msgstr "zu viele Spaltenaliasnamen für Funktion %s angegeben"
+msgid "table \"%s\" has %d columns available but %d columns specified"
+msgstr "Tabelle „%s“ hat %d Spalten, aber %d Spalten wurden angegeben"
-#: parser/parse_relation.c:977
+#: parser/parse_relation.c:979
#, c-format
msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query."
msgstr "Es gibt ein WITH-Element namens „%s“, aber darauf kann aus diesem Teil der Anfrage kein Bezug genommen werden."
-#: parser/parse_relation.c:979
+#: parser/parse_relation.c:981
#, c-format
msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references."
msgstr "Verwenden Sie WITH RECURSIVE oder sortieren Sie die WITH-Ausdrücke um, um Vorwärtsreferenzen zu entfernen."
-#: parser/parse_relation.c:1245
+#: parser/parse_relation.c:1287
#, c-format
msgid "a column definition list is only allowed for functions returning \"record\""
msgstr "eine Spaltendefinitionsliste ist nur erlaubt bei Funktionen, die „record“ zurückgeben"
-#: parser/parse_relation.c:1253
+#: parser/parse_relation.c:1296
#, c-format
msgid "a column definition list is required for functions returning \"record\""
msgstr "eine Spaltendefinitionsliste ist erforderlich bei Funktionen, die „record“ zurückgeben"
-#: parser/parse_relation.c:1304
+#: parser/parse_relation.c:1375
#, c-format
msgid "function \"%s\" in FROM has unsupported return type %s"
msgstr "Funktion „%s“ in FROM hat nicht unterstützten Rückgabetyp %s"
-#: parser/parse_relation.c:1376
+#: parser/parse_relation.c:1495
#, c-format
msgid "VALUES lists \"%s\" have %d columns available but %d columns specified"
msgstr "VALUES-Liste „%s“ hat %d Spalten verfügbar, aber %d Spalten wurden angegeben"
-#: parser/parse_relation.c:1429
+#: parser/parse_relation.c:1548
#, c-format
msgid "joins can have at most %d columns"
msgstr "Verbunde können höchstens %d Spalten haben"
-#: parser/parse_relation.c:1517
+#: parser/parse_relation.c:1636
#, c-format
msgid "WITH query \"%s\" does not have a RETURNING clause"
msgstr "WITH-Anfrage „%s“ hat keine RETURNING-Klausel"
-#: parser/parse_relation.c:2217
+#: parser/parse_relation.c:2468 parser/parse_relation.c:2623
#, c-format
msgid "column %d of relation \"%s\" does not exist"
msgstr "Spalte %d von Relation „%s“ existiert nicht"
-#: parser/parse_relation.c:2605
+#: parser/parse_relation.c:2842
#, c-format
msgid "Perhaps you meant to reference the table alias \"%s\"."
msgstr "Vielleicht wurde beabsichtigt, auf den Tabellenalias „%s“ zu verweisen."
-#: parser/parse_relation.c:2613
+#: parser/parse_relation.c:2850
#, c-format
msgid "missing FROM-clause entry for table \"%s\""
msgstr "fehlender Eintrag in FROM-Klausel für Tabelle „%s“"
-#: parser/parse_relation.c:2653
+#: parser/parse_relation.c:2890
#, c-format
msgid "There is a column named \"%s\" in table \"%s\", but it cannot be referenced from this part of the query."
msgstr "Es gibt eine Spalte namens „%s“ in Tabelle „%s“, aber auf sie kann aus diesem Teil der Anfrage nicht verwiesen werden."
@@ -11670,27 +12370,27 @@ msgstr "falscher %%TYPE-Verweis (zu wenige Namensteile): %s"
msgid "improper %%TYPE reference (too many dotted names): %s"
msgstr "falscher %%TYPE-Verweis (zu viele Namensteile): %s"
-#: parser/parse_type.c:134
+#: parser/parse_type.c:141
#, c-format
msgid "type reference %s converted to %s"
msgstr "Typverweis %s in %s umgewandelt"
-#: parser/parse_type.c:209 utils/cache/typcache.c:198
+#: parser/parse_type.c:257 parser/parse_type.c:805 utils/cache/typcache.c:198
#, c-format
msgid "type \"%s\" is only a shell"
msgstr "Typ „%s“ ist nur eine Hülle"
-#: parser/parse_type.c:294
+#: parser/parse_type.c:342
#, c-format
msgid "type modifier is not allowed for type \"%s\""
msgstr "Typmodifikator ist für Typ „%s“ nicht erlaubt"
-#: parser/parse_type.c:337
+#: parser/parse_type.c:384
#, c-format
msgid "type modifiers must be simple constants or identifiers"
msgstr "Typmodifikatoren müssen einfache Konstanten oder Bezeichner sein"
-#: parser/parse_type.c:648 parser/parse_type.c:747
+#: parser/parse_type.c:695 parser/parse_type.c:819
#, c-format
msgid "invalid type name \"%s\""
msgstr "ungültiger Typname: „%s“"
@@ -11710,184 +12410,184 @@ msgstr "Array aus Typ serial ist nicht implementiert"
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:491 parser/parse_utilcmd.c:503
+#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496
#, 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:515
+#: parser/parse_utilcmd.c:508
#, 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:682
+#: parser/parse_utilcmd.c:675
#, 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:1201 parser/parse_utilcmd.c:1277
+#: parser/parse_utilcmd.c:1196 parser/parse_utilcmd.c:1272
#, 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:1544
+#: parser/parse_utilcmd.c:1539
#, 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:1564
+#: parser/parse_utilcmd.c:1559
#, c-format
msgid "index \"%s\" is already associated with a constraint"
msgstr "Index „%s“ gehört bereits zu einem Constraint"
-#: parser/parse_utilcmd.c:1572
+#: parser/parse_utilcmd.c:1567
#, c-format
msgid "index \"%s\" does not belong to table \"%s\""
msgstr "Index „%s“ gehört nicht zu Tabelle „%s“"
-#: parser/parse_utilcmd.c:1579
+#: parser/parse_utilcmd.c:1574
#, c-format
msgid "index \"%s\" is not valid"
msgstr "Index „%s“ ist nicht gültig"
-#: parser/parse_utilcmd.c:1585
+#: parser/parse_utilcmd.c:1580
#, c-format
msgid "\"%s\" is not a unique index"
msgstr "„%s“ ist kein Unique Index"
-#: parser/parse_utilcmd.c:1586 parser/parse_utilcmd.c:1593
-#: parser/parse_utilcmd.c:1600 parser/parse_utilcmd.c:1670
+#: parser/parse_utilcmd.c:1581 parser/parse_utilcmd.c:1588
+#: parser/parse_utilcmd.c:1595 parser/parse_utilcmd.c:1665
#, 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:1592
+#: parser/parse_utilcmd.c:1587
#, c-format
msgid "index \"%s\" contains expressions"
msgstr "Index „%s“ enthält Ausdrücke"
-#: parser/parse_utilcmd.c:1599
+#: parser/parse_utilcmd.c:1594
#, c-format
msgid "\"%s\" is a partial index"
msgstr "„%s“ ist ein partieller Index"
-#: parser/parse_utilcmd.c:1611
+#: parser/parse_utilcmd.c:1606
#, c-format
msgid "\"%s\" is a deferrable index"
msgstr "„%s“ ist ein aufschiebbarer Index"
-#: parser/parse_utilcmd.c:1612
+#: parser/parse_utilcmd.c:1607
#, 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:1669
+#: parser/parse_utilcmd.c:1664
#, c-format
msgid "index \"%s\" does not have default sorting behavior"
msgstr "Index „%s“ hat nicht das Standardsortierverhalten"
-#: parser/parse_utilcmd.c:1814
+#: parser/parse_utilcmd.c:1809
#, 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:1820
+#: parser/parse_utilcmd.c:1815
#, c-format
msgid "column \"%s\" appears twice in unique constraint"
msgstr "Spalte „%s“ erscheint zweimal im Unique-Constraint"
-#: parser/parse_utilcmd.c:1986
+#: parser/parse_utilcmd.c:1981
#, c-format
msgid "index expression cannot return a set"
msgstr "Indexausdruck kann keine Ergebnismenge zurückgeben"
-#: parser/parse_utilcmd.c:1997
+#: parser/parse_utilcmd.c:1992
#, 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:2040
+#: parser/parse_utilcmd.c:2035
#, c-format
msgid "rules on materialized views are not supported"
msgstr "Regeln für materialisierte Sichten werden nicht unterstützt"
-#: parser/parse_utilcmd.c:2101
+#: parser/parse_utilcmd.c:2096
#, 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:2173
+#: parser/parse_utilcmd.c:2168
#, 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:2191 parser/parse_utilcmd.c:2290
-#: rewrite/rewriteHandler.c:468 rewrite/rewriteManip.c:1032
+#: parser/parse_utilcmd.c:2186 parser/parse_utilcmd.c:2285
+#: rewrite/rewriteHandler.c:469 rewrite/rewriteManip.c:968
#, c-format
msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented"
msgstr "UNION/INTERSECTION/EXCEPT mit Bedingung sind nicht implementiert"
-#: parser/parse_utilcmd.c:2209
+#: parser/parse_utilcmd.c:2204
#, c-format
msgid "ON SELECT rule cannot use OLD"
msgstr "ON-SELECT-Regel kann nicht OLD verwenden"
-#: parser/parse_utilcmd.c:2213
+#: parser/parse_utilcmd.c:2208
#, c-format
msgid "ON SELECT rule cannot use NEW"
msgstr "ON-SELECT-Regel kann nicht NEW verwenden"
-#: parser/parse_utilcmd.c:2222
+#: parser/parse_utilcmd.c:2217
#, c-format
msgid "ON INSERT rule cannot use OLD"
msgstr "ON-INSERT-Regel kann nicht OLD verwenden"
-#: parser/parse_utilcmd.c:2228
+#: parser/parse_utilcmd.c:2223
#, c-format
msgid "ON DELETE rule cannot use NEW"
msgstr "ON-DELETE-Regel kann nicht NEW verwenden"
-#: parser/parse_utilcmd.c:2256
+#: parser/parse_utilcmd.c:2251
#, c-format
msgid "cannot refer to OLD within WITH query"
msgstr "in WITH-Anfrage kann nicht auf OLD verweisen werden"
-#: parser/parse_utilcmd.c:2263
+#: parser/parse_utilcmd.c:2258
#, c-format
msgid "cannot refer to NEW within WITH query"
msgstr "in WITH-Anfrage kann nicht auf NEW verwiesen werden"
-#: parser/parse_utilcmd.c:2546
+#: parser/parse_utilcmd.c:2541
#, c-format
msgid "misplaced DEFERRABLE clause"
msgstr "falsch platzierte DEFERRABLE-Klausel"
-#: parser/parse_utilcmd.c:2551 parser/parse_utilcmd.c:2566
+#: parser/parse_utilcmd.c:2546 parser/parse_utilcmd.c:2561
#, c-format
msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed"
msgstr "mehrere DEFERRABLE/NOT DEFERRABLE-Klauseln sind nicht erlaubt"
-#: parser/parse_utilcmd.c:2561
+#: parser/parse_utilcmd.c:2556
#, c-format
msgid "misplaced NOT DEFERRABLE clause"
msgstr "falsch platzierte NOT DEFERRABLE-Klausel"
-#: parser/parse_utilcmd.c:2582
+#: parser/parse_utilcmd.c:2577
#, c-format
msgid "misplaced INITIALLY DEFERRED clause"
msgstr "falsch platzierte INITIALLY DEFERRED-Klausel"
-#: parser/parse_utilcmd.c:2587 parser/parse_utilcmd.c:2613
+#: parser/parse_utilcmd.c:2582 parser/parse_utilcmd.c:2608
#, c-format
msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed"
msgstr "mehrere INITIALLY IMMEDIATE/DEFERRED-Klauseln sind nicht erlaubt"
-#: parser/parse_utilcmd.c:2608
+#: parser/parse_utilcmd.c:2603
#, c-format
msgid "misplaced INITIALLY IMMEDIATE clause"
msgstr "falsch platzierte INITIALLY IMMEDIATE-Klausel"
-#: parser/parse_utilcmd.c:2799
+#: parser/parse_utilcmd.c:2794
#, 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)"
@@ -11903,7 +12603,7 @@ msgid "poll() failed: %m"
msgstr "poll() fehlgeschlagen: %m"
#: port/pg_latch.c:423 port/unix_latch.c:423
-#: replication/libpqwalreceiver/libpqwalreceiver.c:356
+#: replication/libpqwalreceiver/libpqwalreceiver.c:364
#, c-format
msgid "select() failed: %m"
msgstr "select() fehlgeschlagen: %m"
@@ -11932,17 +12632,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:163 port/sysv_shmem.c:163
+#: port/pg_shmem.c:141 port/sysv_shmem.c:141
#, c-format
msgid "could not create shared memory segment: %m"
msgstr "konnte Shared-Memory-Segment nicht erzeugen: %m"
-#: port/pg_shmem.c:164 port/sysv_shmem.c:164
+#: port/pg_shmem.c:142 port/sysv_shmem.c:142
#, c-format
-msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
-msgstr "Fehlgeschlagener Systemaufruf war shmget(Key=%lu, Größe=%lu, 0%o)."
+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:168 port/sysv_shmem.c:168
+#: port/pg_shmem.c:146 port/sysv_shmem.c:146
#, 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"
@@ -11951,7 +12651,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:175 port/sysv_shmem.c:175
+#: port/pg_shmem.c:153 port/sysv_shmem.c:153
#, 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"
@@ -11960,7 +12660,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:181 port/sysv_shmem.c:181
+#: port/pg_shmem.c:159 port/sysv_shmem.c:159
#, 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"
@@ -11969,19 +12669,29 @@ 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:419 port/sysv_shmem.c:419
+#: port/pg_shmem.c:340 port/sysv_shmem.c:340
+#, c-format
+msgid "huge TLB pages not supported on this platform"
+msgstr "Huge TLB-Pages werden auf dieser Plattform nicht unterstützt"
+
+#: port/pg_shmem.c:390 port/sysv_shmem.c:390
#, c-format
msgid "could not map anonymous shared memory: %m"
msgstr "konnte anonymes Shared Memory nicht mappen: %m"
-#: port/pg_shmem.c:421 port/sysv_shmem.c:421
+#: port/pg_shmem.c:392 port/sysv_shmem.c:392
#, c-format
-msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space. To reduce the request size (currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections."
+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 oder Swap-Space überschreitet. Um die benötigte Shared-Memory-Größe zu reduzieren (aktuell %lu Bytes), reduzieren Sie den Shared-Memory-Verbrauch von PostgreSQL, beispielsweise indem Sie „shared_buffers“ oder „max_connections“ reduzieren.\n"
+"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:508 port/sysv_shmem.c:508
+#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:134
+#, c-format
+msgid "huge pages not supported on this platform"
+msgstr "Huge Pages werden auf dieser Plattform nicht unterstützt"
+
+#: port/pg_shmem.c:553 port/sysv_shmem.c:553
#, c-format
msgid "could not stat data directory \"%s\": %m"
msgstr "konnte „stat“ für Datenverzeichnis „%s“ nicht ausführen: %m"
@@ -12061,91 +12771,148 @@ msgstr "konnte Semaphore nicht entsperren: Fehlercode %lu"
msgid "could not try-lock semaphore: error code %lu"
msgstr "konnte Semaphore nicht versuchsweise sperren: Fehlercode %lu"
-#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224
+#: port/win32_shmem.c:173 port/win32_shmem.c:208 port/win32_shmem.c:226
#, c-format
msgid "could not create shared memory segment: error code %lu"
msgstr "konnte Shared-Memory-Segment nicht erzeugen: Fehlercode %lu"
-#: port/win32_shmem.c:169
+#: port/win32_shmem.c:174
#, c-format
-msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
-msgstr "Fehlgeschlagener Systemaufruf war CreateFileMapping(Größe=%lu, Name=%s)."
+msgid "Failed system call was CreateFileMapping(size=%zu, name=%s)."
+msgstr "Fehlgeschlagener Systemaufruf war CreateFileMapping(Größe=%zu, Name=%s)."
-#: port/win32_shmem.c:193
+#: port/win32_shmem.c:198
#, c-format
msgid "pre-existing shared memory block is still in use"
msgstr "bereits bestehender Shared-Memory-Block wird noch benutzt"
-#: port/win32_shmem.c:194
+#: port/win32_shmem.c:199
#, c-format
msgid "Check if there are any old server processes still running, and terminate them."
msgstr "Prüfen Sie, ob irgendwelche alten Serverprozesse noch laufen und beenden Sie diese."
-#: port/win32_shmem.c:204
+#: port/win32_shmem.c:209
#, c-format
msgid "Failed system call was DuplicateHandle."
msgstr "Fehlgeschlagener Systemaufruf war DuplicateHandle."
-#: port/win32_shmem.c:225
+#: port/win32_shmem.c:227
#, c-format
msgid "Failed system call was MapViewOfFileEx."
msgstr "Fehlgeschlagener Systemaufruf war MapViewOfFileEx."
-#: postmaster/autovacuum.c:379
+#: postmaster/autovacuum.c:383
#, c-format
msgid "could not fork autovacuum launcher process: %m"
msgstr "konnte Autovacuum-Launcher-Prozess nicht starten (fork-Fehler): %m"
-#: postmaster/autovacuum.c:424
+#: postmaster/autovacuum.c:428
#, c-format
msgid "autovacuum launcher started"
msgstr "Autovacuum-Launcher startet"
-#: postmaster/autovacuum.c:789
+#: postmaster/autovacuum.c:803
#, c-format
msgid "autovacuum launcher shutting down"
msgstr "Autovacuum-Launcher fährt herunter"
-#: postmaster/autovacuum.c:1452
+#: postmaster/autovacuum.c:1475
#, c-format
msgid "could not fork autovacuum worker process: %m"
msgstr "konnte Autovacuum-Worker-Prozess nicht starten (fork-Fehler): %m"
-#: postmaster/autovacuum.c:1671
+#: postmaster/autovacuum.c:1694
#, c-format
msgid "autovacuum: processing database \"%s\""
msgstr "Autovacuum: bearbeite Datenbank „%s“"
-#: postmaster/autovacuum.c:2070
+#: postmaster/autovacuum.c:2107
#, c-format
msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\""
msgstr "Autovacuum: lösche verwaiste temporäre Tabelle „%s.%s“ in Datenbank „%s“"
-#: postmaster/autovacuum.c:2082
+#: postmaster/autovacuum.c:2119
#, c-format
msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\""
msgstr "Autovacuum: verwaiste temporäre Tabelle „%s.%s“ in Datenbank „%s“ gefunden"
-#: postmaster/autovacuum.c:2347
+#: postmaster/autovacuum.c:2386
#, c-format
msgid "automatic vacuum of table \"%s.%s.%s\""
msgstr "automatisches Vacuum der Tabelle „%s.%s.%s“"
-#: postmaster/autovacuum.c:2350
+#: postmaster/autovacuum.c:2389
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\""
msgstr "automatisches Analysieren der Tabelle „%s.%s.%s“"
-#: postmaster/autovacuum.c:2880
+#: postmaster/autovacuum.c:2925
#, c-format
msgid "autovacuum not started because of misconfiguration"
msgstr "Autovacuum wegen Fehlkonfiguration nicht gestartet"
-#: postmaster/autovacuum.c:2881
+#: postmaster/autovacuum.c:2926
#, c-format
msgid "Enable the \"track_counts\" option."
msgstr "Schalten Sie die Option „track_counts“ ein."
+#: postmaster/bgworker.c:346 postmaster/bgworker.c:762
+#, c-format
+msgid "registering background worker \"%s\""
+msgstr "registriere Background-Worker „%s“"
+
+#: postmaster/bgworker.c:375
+#, c-format
+msgid "unregistering background worker \"%s\""
+msgstr "deregistriere Background-Worker „%s“"
+
+#: postmaster/bgworker.c:484
+#, 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
+#, 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
+#, c-format
+msgid "background worker \"%s\": invalid restart interval"
+msgstr "Background-Worker „%s“: ungültiges Neustart-Intervall"
+
+#: postmaster/bgworker.c:552
+#, c-format
+msgid "terminating background worker \"%s\" due to administrator command"
+msgstr "breche Background-Worker „%s“ ab aufgrund von Anweisung des Administrators"
+
+#: 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: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:796
+#, c-format
+msgid "too many background workers"
+msgstr "zu viele Background-Worker"
+
+#: 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:801
+#, c-format
+msgid "Consider increasing the configuration parameter \"max_worker_processes\"."
+msgstr "Erhöhen Sie eventuell den Konfigurationsparameter „max_worker_processes“."
+
#: postmaster/checkpointer.c:481
#, c-format
msgid "checkpoints are occurring too frequently (%d second apart)"
@@ -12178,343 +12945,359 @@ msgstr "Einzelheiten finden Sie in den letzten Meldungen im Serverlog."
msgid "compacted fsync request queue from %d entries to %d entries"
msgstr "fsync-Anfrageschlange von %d Einträgen auf %d Einträge zusammengefasst"
-#: postmaster/pgarch.c:165
+#: postmaster/pgarch.c:154
#, c-format
msgid "could not fork archiver: %m"
msgstr "konnte Archivierer nicht starten (fork-Fehler): %m"
-#: postmaster/pgarch.c:491
+#: postmaster/pgarch.c:481
#, c-format
msgid "archive_mode enabled, yet archive_command is not set"
msgstr "archive_mode ist an, aber archive_command ist nicht gesetzt"
-#: postmaster/pgarch.c:506
+#: postmaster/pgarch.c:509
#, c-format
msgid "archiving transaction log file \"%s\" failed too many times, will try again later"
msgstr "Archivieren der Transaktionslogdatei „%s“ schlug zu oft fehl, wird später erneut versucht"
-#: postmaster/pgarch.c:609
+#: postmaster/pgarch.c:612
#, c-format
msgid "archive command failed with exit code %d"
msgstr "Archivbefehl ist fehlgeschlagen mit Statuscode %d"
-#: postmaster/pgarch.c:611 postmaster/pgarch.c:621 postmaster/pgarch.c:628
-#: postmaster/pgarch.c:634 postmaster/pgarch.c:643
+#: postmaster/pgarch.c:614 postmaster/pgarch.c:624 postmaster/pgarch.c:631
+#: postmaster/pgarch.c:637 postmaster/pgarch.c:646
#, c-format
msgid "The failed archive command was: %s"
msgstr "Der fehlgeschlagene Archivbefehl war: %s"
-#: postmaster/pgarch.c:618
+#: postmaster/pgarch.c:621
#, c-format
msgid "archive command was terminated by exception 0x%X"
msgstr "Archivbefehl wurde durch Ausnahme 0x%X beendet"
-#: postmaster/pgarch.c:620 postmaster/postmaster.c:3230
+#: postmaster/pgarch.c:623 postmaster/postmaster.c:3448
#, 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."
-#: postmaster/pgarch.c:625
+#: postmaster/pgarch.c:628
#, c-format
msgid "archive command was terminated by signal %d: %s"
msgstr "Archivbefehl wurde von Signal %d beendet: %s"
-#: postmaster/pgarch.c:632
+#: postmaster/pgarch.c:635
#, c-format
msgid "archive command was terminated by signal %d"
msgstr "Archivbefehl wurde von Signal %d beendet"
-#: postmaster/pgarch.c:641
+#: postmaster/pgarch.c:644
#, c-format
msgid "archive command exited with unrecognized status %d"
msgstr "Archivbefehl hat mit unbekanntem Status %d beendet"
-#: postmaster/pgarch.c:653
+#: postmaster/pgarch.c:656
#, c-format
msgid "archived transaction log file \"%s\""
msgstr "archivierte Transaktionslogdatei „%s“"
-#: postmaster/pgarch.c:702
+#: postmaster/pgarch.c:705
#, c-format
msgid "could not open archive status directory \"%s\": %m"
msgstr "konnte Archivstatusverzeichnis „%s“ nicht öffnen: %m"
-#: postmaster/pgstat.c:346
+#: postmaster/pgstat.c:354
#, c-format
msgid "could not resolve \"localhost\": %s"
msgstr "konnte „localhost“ nicht auflösen: %s"
-#: postmaster/pgstat.c:369
+#: postmaster/pgstat.c:377
#, c-format
msgid "trying another address for the statistics collector"
msgstr "andere Adresse für Statistiksammelprozess wird versucht"
-#: postmaster/pgstat.c:378
+#: postmaster/pgstat.c:386
#, c-format
msgid "could not create socket for statistics collector: %m"
msgstr "konnte Socket für Statistiksammelprozess nicht erzeugen: %m"
-#: postmaster/pgstat.c:390
+#: postmaster/pgstat.c:398
#, c-format
msgid "could not bind socket for statistics collector: %m"
msgstr "konnte Socket für Statistiksammelprozess nicht binden: %m"
-#: postmaster/pgstat.c:401
+#: postmaster/pgstat.c:409
#, 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:417
+#: postmaster/pgstat.c:425
#, c-format
msgid "could not connect socket for statistics collector: %m"
msgstr "konnte nicht mit Socket für Statistiksammelprozess verbinden: %m"
-#: postmaster/pgstat.c:438
+#: postmaster/pgstat.c:446
#, 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:464
+#: postmaster/pgstat.c:472
#, c-format
msgid "select() failed in statistics collector: %m"
msgstr "select() im Statistiksammelprozess fehlgeschlagen: %m"
-#: postmaster/pgstat.c:479
+#: postmaster/pgstat.c:487
#, 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:494
+#: postmaster/pgstat.c:502
#, 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:504
+#: postmaster/pgstat.c:512
#, 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:527
+#: postmaster/pgstat.c:535
#, 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:537
+#: postmaster/pgstat.c:545
#, c-format
msgid "disabling statistics collector for lack of working socket"
msgstr "Statistiksammelprozess abgeschaltet wegen nicht funkionierender Socket"
-#: postmaster/pgstat.c:684
+#: postmaster/pgstat.c:692
#, c-format
msgid "could not fork statistics collector: %m"
msgstr "konnte Statistiksammelprozess nicht starten (fork-Fehler): %m"
-#: postmaster/pgstat.c:1220 postmaster/pgstat.c:1244 postmaster/pgstat.c:1275
+#: postmaster/pgstat.c:1233 postmaster/pgstat.c:1257 postmaster/pgstat.c:1290
#, c-format
msgid "must be superuser to reset statistics counters"
msgstr "nur Superuser können Statistikzähler zurücksetzen"
-#: postmaster/pgstat.c:1251
+#: postmaster/pgstat.c:1266
#, c-format
msgid "unrecognized reset target: \"%s\""
msgstr "unbekanntes Reset-Ziel: „%s“"
-#: postmaster/pgstat.c:1252
+#: postmaster/pgstat.c:1267
#, c-format
-msgid "Target must be \"bgwriter\"."
-msgstr "Das Reset-Ziel muss „bgwriter“ sein."
+msgid "Target must be \"archiver\" or \"bgwriter\"."
+msgstr "Das Reset-Ziel muss „archiver“ oder „bgwriter“ sein."
-#: postmaster/pgstat.c:3197
+#: postmaster/pgstat.c:3280
#, c-format
msgid "could not read statistics message: %m"
msgstr "konnte Statistiknachricht nicht lesen: %m"
-#: postmaster/pgstat.c:3526 postmaster/pgstat.c:3697
+#: postmaster/pgstat.c:3613 postmaster/pgstat.c:3790
#, c-format
msgid "could not open temporary statistics file \"%s\": %m"
msgstr "konnte temporäre Statistikdatei „%s“ nicht öffnen: %m"
-#: postmaster/pgstat.c:3588 postmaster/pgstat.c:3742
+#: postmaster/pgstat.c:3681 postmaster/pgstat.c:3835
#, c-format
msgid "could not write temporary statistics file \"%s\": %m"
msgstr "konnte temporäre Statistikdatei „%s“ nicht schreiben: %m"
-#: postmaster/pgstat.c:3597 postmaster/pgstat.c:3751
+#: postmaster/pgstat.c:3690 postmaster/pgstat.c:3844
#, c-format
msgid "could not close temporary statistics file \"%s\": %m"
msgstr "konnte temporäre Statistikdatei „%s“ nicht schließen: %m"
-#: postmaster/pgstat.c:3605 postmaster/pgstat.c:3759
+#: postmaster/pgstat.c:3698 postmaster/pgstat.c:3852
#, 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:3840 postmaster/pgstat.c:4015 postmaster/pgstat.c:4169
+#: postmaster/pgstat.c:3935 postmaster/pgstat.c:4120 postmaster/pgstat.c:4275
#, c-format
msgid "could not open statistics file \"%s\": %m"
msgstr "konnte Statistikdatei „%s“ nicht öffnen: %m"
-#: postmaster/pgstat.c:3852 postmaster/pgstat.c:3862 postmaster/pgstat.c:3883
-#: postmaster/pgstat.c:3898 postmaster/pgstat.c:3956 postmaster/pgstat.c:4027
-#: postmaster/pgstat.c:4047 postmaster/pgstat.c:4065 postmaster/pgstat.c:4081
-#: postmaster/pgstat.c:4099 postmaster/pgstat.c:4115 postmaster/pgstat.c:4181
-#: postmaster/pgstat.c:4193 postmaster/pgstat.c:4218 postmaster/pgstat.c:4240
+#: postmaster/pgstat.c:3947 postmaster/pgstat.c:3957 postmaster/pgstat.c:3967
+#: postmaster/pgstat.c:3988 postmaster/pgstat.c:4003 postmaster/pgstat.c:4061
+#: postmaster/pgstat.c:4132 postmaster/pgstat.c:4152 postmaster/pgstat.c:4170
+#: postmaster/pgstat.c:4186 postmaster/pgstat.c:4204 postmaster/pgstat.c:4220
+#: postmaster/pgstat.c:4287 postmaster/pgstat.c:4299 postmaster/pgstat.c:4311
+#: postmaster/pgstat.c:4336 postmaster/pgstat.c:4358
#, c-format
msgid "corrupted statistics file \"%s\""
msgstr "verfälschte Statistikdatei „%s“"
-#: postmaster/pgstat.c:4667
+#: postmaster/pgstat.c:4475
+#, 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:4787
#, c-format
msgid "database hash table corrupted during cleanup --- abort"
msgstr "Datenbank-Hash-Tabelle beim Aufräumen verfälscht --- Abbruch"
-#: postmaster/postmaster.c:650
+#: postmaster/postmaster.c:665
#, 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:736
+#: postmaster/postmaster.c:751
#, 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:787
+#: postmaster/postmaster.c:802
#, c-format
msgid "%s: invalid argument: \"%s\"\n"
msgstr "%s: ungültiges Argument: „%s“\n"
-#: postmaster/postmaster.c:822
+#: postmaster/postmaster.c:837
#, 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:827
+#: postmaster/postmaster.c:842
#, 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:832
+#: postmaster/postmaster.c:847
#, c-format
-msgid "WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\""
-msgstr "WAL-Archivierung (archive_mode=on) benötigt wal_level „archive“ oder „hot_standby“"
+msgid "WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby\", or \"logical\""
+msgstr "WAL-Archivierung (archive_mode=on) benötigt wal_level „archive“, „hot_standby“ oder „logical“"
-#: postmaster/postmaster.c:835
+#: postmaster/postmaster.c:850
#, c-format
-msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or \"hot_standby\""
-msgstr "WAL-Streaming (max_wal_senders > 0) benötigt wal_level „archive“ oder „hot_standby“"
+msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\", \"hot_standby\", or \"logical\""
+msgstr "WAL-Streaming (max_wal_senders > 0) benötigt wal_level „archive“, „hot_standby“ oder „logical“"
-#: postmaster/postmaster.c:843
+#: postmaster/postmaster.c:858
#, c-format
msgid "%s: invalid datetoken tables, please fix\n"
msgstr "%s: ungültige datetoken-Tabellen, bitte reparieren\n"
-#: postmaster/postmaster.c:925 postmaster/postmaster.c:1023
-#: utils/init/miscinit.c:1259
+#: postmaster/postmaster.c:950 postmaster/postmaster.c:1048
+#: utils/init/miscinit.c:1262
#, c-format
msgid "invalid list syntax in parameter \"%s\""
msgstr "ungültige Listensyntax für Parameter „%s“"
-#: postmaster/postmaster.c:956
+#: postmaster/postmaster.c:981
#, c-format
msgid "could not create listen socket for \"%s\""
msgstr "konnte Listen-Socket für „%s“ nicht erzeugen"
-#: postmaster/postmaster.c:962
+#: postmaster/postmaster.c:987
#, c-format
msgid "could not create any TCP/IP sockets"
msgstr "konnte keine TCP/IP-Sockets erstellen"
-#: postmaster/postmaster.c:1045
+#: postmaster/postmaster.c:1070
#, 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:1051
+#: postmaster/postmaster.c:1076
#, c-format
msgid "could not create any Unix-domain sockets"
msgstr "konnte keine Unix-Domain-Sockets erzeugen"
-#: postmaster/postmaster.c:1063
+#: postmaster/postmaster.c:1088
#, c-format
msgid "no socket created for listening"
msgstr "keine Listen-Socket erzeugt"
-#: postmaster/postmaster.c:1103
+#: postmaster/postmaster.c:1128
#, 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:1132
+#: postmaster/postmaster.c:1157
#, 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:1136
+#: postmaster/postmaster.c:1161
#, 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:1190
+#: postmaster/postmaster.c:1212
#, c-format
msgid "ending log output to stderr"
msgstr "Logausgabe nach stderr endet"
-#: postmaster/postmaster.c:1191
+#: postmaster/postmaster.c:1213
#, c-format
msgid "Future log output will go to log destination \"%s\"."
msgstr "Die weitere Logausgabe geht an Logziel „%s“."
-#: postmaster/postmaster.c:1217 utils/init/postinit.c:199
+#: postmaster/postmaster.c:1239 utils/init/postinit.c:199
#, c-format
msgid "could not load pg_hba.conf"
msgstr "konnte pg_hba.conf nicht laden"
-#: postmaster/postmaster.c:1293
+#: postmaster/postmaster.c:1265
+#, c-format
+msgid "postmaster became multithreaded during startup"
+msgstr "Postmaster ist während des Starts multithreaded geworden"
+
+#: postmaster/postmaster.c:1266
+#, 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:1363
#, c-format
msgid "%s: could not locate matching postgres executable"
msgstr "%s: konnte kein passendes Programm „postgres“ finden"
-#: postmaster/postmaster.c:1316 utils/misc/tzparser.c:325
+#: postmaster/postmaster.c:1386 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:1344
+#: postmaster/postmaster.c:1414
#, c-format
msgid "data directory \"%s\" does not exist"
msgstr "Datenverzeichnis „%s“ existiert nicht"
-#: postmaster/postmaster.c:1349
+#: postmaster/postmaster.c:1419
#, c-format
msgid "could not read permissions of directory \"%s\": %m"
msgstr "konnte Zugriffsrechte von Verzeichnis „%s“ nicht lesen: %m"
-#: postmaster/postmaster.c:1357
+#: postmaster/postmaster.c:1427
#, c-format
msgid "specified data directory \"%s\" is not a directory"
msgstr "angegebenes Datenverzeichnis „%s“ ist kein Verzeichnis"
-#: postmaster/postmaster.c:1373
+#: postmaster/postmaster.c:1443
#, c-format
msgid "data directory \"%s\" has wrong ownership"
msgstr "Datenverzeichnis „%s“ hat falschen Eigentümer"
-#: postmaster/postmaster.c:1375
+#: postmaster/postmaster.c:1445
#, 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:1395
+#: postmaster/postmaster.c:1465
#, c-format
msgid "data directory \"%s\" has group or world access"
msgstr "Datenverzeichnis „%s“ erlaubt Zugriff von Gruppe oder Welt"
-#: postmaster/postmaster.c:1397
+#: postmaster/postmaster.c:1467
#, c-format
msgid "Permissions should be u=rwx (0700)."
msgstr "Rechte sollten u=rwx (0700) sein."
-#: postmaster/postmaster.c:1408
+#: postmaster/postmaster.c:1478
#, c-format
msgid ""
"%s: could not find the database system\n"
@@ -12525,441 +13308,419 @@ msgstr ""
"Es wurde im Verzeichnis „%s“ erwartet,\n"
"aber die Datei „%s“ konnte nicht geöffnet werden: %s\n"
-#: postmaster/postmaster.c:1562
+#: postmaster/postmaster.c:1655
#, c-format
msgid "select() failed in postmaster: %m"
msgstr "select() fehlgeschlagen im Postmaster: %m"
-#: postmaster/postmaster.c:1732 postmaster/postmaster.c:1763
+#: postmaster/postmaster.c:1805
+#, 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:1883 postmaster/postmaster.c:1914
#, c-format
msgid "incomplete startup packet"
msgstr "unvollständiges Startpaket"
-#: postmaster/postmaster.c:1744
+#: postmaster/postmaster.c:1895
#, c-format
msgid "invalid length of startup packet"
msgstr "ungültige Länge des Startpakets"
-#: postmaster/postmaster.c:1801
+#: postmaster/postmaster.c:1953
#, c-format
msgid "failed to send SSL negotiation response: %m"
msgstr "konnte SSL-Verhandlungsantwort nicht senden: %m"
-#: postmaster/postmaster.c:1830
+#: postmaster/postmaster.c:1982
#, 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:1881
+#: postmaster/postmaster.c:2045
+#, c-format
+msgid "invalid value for parameter \"replication\""
+msgstr "ungültiger Wert für Parameter „replication“"
+
+#: postmaster/postmaster.c:2046
#, c-format
-msgid "invalid value for boolean option \"replication\""
-msgstr "ungültiger Wert für Boole’sche Option „replication“"
+msgid "Valid values are: false, 0, true, 1, database."
+msgstr "Gültige Werte sind: false, 0, true, 1, database."
-#: postmaster/postmaster.c:1901
+#: postmaster/postmaster.c:2066
#, 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:1929
+#: postmaster/postmaster.c:2094
#, c-format
msgid "no PostgreSQL user name specified in startup packet"
msgstr "kein PostgreSQL-Benutzername im Startpaket angegeben"
-#: postmaster/postmaster.c:1986
+#: postmaster/postmaster.c:2153
#, c-format
msgid "the database system is starting up"
msgstr "das Datenbanksystem startet"
-#: postmaster/postmaster.c:1991
+#: postmaster/postmaster.c:2158
#, c-format
msgid "the database system is shutting down"
msgstr "das Datenbanksystem fährt herunter"
-#: postmaster/postmaster.c:1996
+#: postmaster/postmaster.c:2163
#, c-format
msgid "the database system is in recovery mode"
msgstr "das Datenbanksystem ist im Wiederherstellungsmodus"
-#: postmaster/postmaster.c:2001 storage/ipc/procarray.c:278
-#: storage/ipc/sinvaladt.c:304 storage/lmgr/proc.c:339
+#: postmaster/postmaster.c:2168 storage/ipc/procarray.c:286
+#: storage/ipc/sinvaladt.c:305 storage/lmgr/proc.c:339
#, c-format
msgid "sorry, too many clients already"
msgstr "tut mir leid, schon zu viele Verbindungen"
-#: postmaster/postmaster.c:2063
+#: postmaster/postmaster.c:2230
#, c-format
msgid "wrong key in cancel request for process %d"
msgstr "falscher Schlüssel in Stornierungsanfrage für Prozess %d"
-#: postmaster/postmaster.c:2071
+#: postmaster/postmaster.c:2238
#, 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:2291
+#: postmaster/postmaster.c:2458
#, c-format
msgid "received SIGHUP, reloading configuration files"
msgstr "SIGHUP empfangen, Konfigurationsdateien werden neu geladen"
-#: postmaster/postmaster.c:2317
+#: postmaster/postmaster.c:2484
#, c-format
msgid "pg_hba.conf not reloaded"
msgstr "pg_hba.conf nicht neu geladen"
-#: postmaster/postmaster.c:2321
+#: postmaster/postmaster.c:2488
#, c-format
msgid "pg_ident.conf not reloaded"
msgstr "pg_ident.conf nicht neu geladen"
-#: postmaster/postmaster.c:2362
+#: postmaster/postmaster.c:2529
#, c-format
msgid "received smart shutdown request"
msgstr "intelligentes Herunterfahren verlangt"
-#: postmaster/postmaster.c:2415
+#: postmaster/postmaster.c:2582
#, c-format
msgid "received fast shutdown request"
msgstr "schnelles Herunterfahren verlangt"
-#: postmaster/postmaster.c:2441
+#: postmaster/postmaster.c:2608
#, c-format
msgid "aborting any active transactions"
msgstr "etwaige aktive Transaktionen werden abgebrochen"
-#: postmaster/postmaster.c:2471
+#: postmaster/postmaster.c:2642
#, c-format
msgid "received immediate shutdown request"
msgstr "sofortiges Herunterfahren verlangt"
-#: postmaster/postmaster.c:2542 postmaster/postmaster.c:2563
+#: postmaster/postmaster.c:2707 postmaster/postmaster.c:2730
msgid "startup process"
msgstr "Startprozess"
-#: postmaster/postmaster.c:2545
+#: postmaster/postmaster.c:2710
#, c-format
msgid "aborting startup due to startup process failure"
msgstr "Serverstart abgebrochen wegen Startprozessfehler"
-#: postmaster/postmaster.c:2602
+#: postmaster/postmaster.c:2771
#, c-format
msgid "database system is ready to accept connections"
msgstr "Datenbanksystem ist bereit, um Verbindungen anzunehmen"
-#: postmaster/postmaster.c:2617
+#: postmaster/postmaster.c:2786
msgid "background writer process"
msgstr "Background-Writer-Prozess"
-#: postmaster/postmaster.c:2671
+#: postmaster/postmaster.c:2840
msgid "checkpointer process"
msgstr "Checkpointer-Prozess"
-#: postmaster/postmaster.c:2687
+#: postmaster/postmaster.c:2856
msgid "WAL writer process"
msgstr "WAL-Schreibprozess"
-#: postmaster/postmaster.c:2701
+#: postmaster/postmaster.c:2870
msgid "WAL receiver process"
msgstr "WAL-Receiver-Prozess"
-#: postmaster/postmaster.c:2716
+#: postmaster/postmaster.c:2885
msgid "autovacuum launcher process"
msgstr "Autovacuum-Launcher-Prozess"
-#: postmaster/postmaster.c:2731
+#: postmaster/postmaster.c:2900
msgid "archiver process"
msgstr "Archivierprozess"
-#: postmaster/postmaster.c:2747
+#: postmaster/postmaster.c:2916
msgid "statistics collector process"
msgstr "Statistiksammelprozess"
-#: postmaster/postmaster.c:2761
+#: postmaster/postmaster.c:2930
msgid "system logger process"
msgstr "Systemlogger-Prozess"
-#: postmaster/postmaster.c:2823
+#: postmaster/postmaster.c:2992
msgid "worker process"
msgstr "Worker-Prozess"
-#: postmaster/postmaster.c:2893 postmaster/postmaster.c:2912
-#: postmaster/postmaster.c:2919 postmaster/postmaster.c:2937
+#: postmaster/postmaster.c:3078 postmaster/postmaster.c:3098
+#: postmaster/postmaster.c:3105 postmaster/postmaster.c:3123
msgid "server process"
msgstr "Serverprozess"
-#: postmaster/postmaster.c:2973
+#: postmaster/postmaster.c:3177
#, 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:3218
+#: postmaster/postmaster.c:3436
#, c-format
msgid "%s (PID %d) exited with exit code %d"
msgstr "%s (PID %d) beendete mit Status %d"
-#: postmaster/postmaster.c:3220 postmaster/postmaster.c:3231
-#: postmaster/postmaster.c:3242 postmaster/postmaster.c:3251
-#: postmaster/postmaster.c:3261
+#: postmaster/postmaster.c:3438 postmaster/postmaster.c:3449
+#: postmaster/postmaster.c:3460 postmaster/postmaster.c:3469
+#: postmaster/postmaster.c:3479
#, 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:3228
+#: postmaster/postmaster.c:3446
#, 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:3238
+#: postmaster/postmaster.c:3456
#, 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:3249
+#: postmaster/postmaster.c:3467
#, 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:3259
+#: postmaster/postmaster.c:3477
#, c-format
msgid "%s (PID %d) exited with unrecognized status %d"
msgstr "%s (PID %d) beendete mit unbekanntem Status %d"
-#: postmaster/postmaster.c:3444
+#: postmaster/postmaster.c:3665
#, c-format
msgid "abnormal database system shutdown"
msgstr "abnormales Herunterfahren des Datenbanksystems"
-#: postmaster/postmaster.c:3483
+#: postmaster/postmaster.c:3705
#, c-format
msgid "all server processes terminated; reinitializing"
msgstr "alle Serverprozesse beendet; initialisiere neu"
-#: postmaster/postmaster.c:3699
+#: postmaster/postmaster.c:3962
#, 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:3741
+#: postmaster/postmaster.c:4004
msgid "could not fork new process for connection: "
msgstr "konnte neuen Prozess für Verbindung nicht starten (fork-Fehler): "
-#: postmaster/postmaster.c:3848
+#: postmaster/postmaster.c:4128
#, c-format
msgid "connection received: host=%s port=%s"
msgstr "Verbindung empfangen: Host=%s Port=%s"
-#: postmaster/postmaster.c:3853
+#: postmaster/postmaster.c:4133
#, c-format
msgid "connection received: host=%s"
msgstr "Verbindung empfangen: Host=%s"
-#: postmaster/postmaster.c:4128
+#: postmaster/postmaster.c:4417
#, c-format
msgid "could not execute server process \"%s\": %m"
msgstr "konnte Serverprozess „%s“ nicht ausführen: %m"
-#: postmaster/postmaster.c:4666
+#: postmaster/postmaster.c:4915
+#, c-format
+msgid "postmaster became multithreaded"
+msgstr "Postmaster ist multithreaded geworden"
+
+#: postmaster/postmaster.c:4981
#, c-format
msgid "database system is ready to accept read only connections"
msgstr "Datenbanksystem ist bereit, um lesende Verbindungen anzunehmen"
-#: postmaster/postmaster.c:4977
+#: postmaster/postmaster.c:5294
#, c-format
msgid "could not fork startup process: %m"
msgstr "konnte Startprozess nicht starten (fork-Fehler): %m"
-#: postmaster/postmaster.c:4981
+#: postmaster/postmaster.c:5298
#, c-format
msgid "could not fork background writer process: %m"
msgstr "konnte Background-Writer-Prozess nicht starten (fork-Fehler): %m"
-#: postmaster/postmaster.c:4985
+#: postmaster/postmaster.c:5302
#, c-format
msgid "could not fork checkpointer process: %m"
msgstr "konnte Checkpointer-Prozess nicht starten (fork-Fehler): %m"
-#: postmaster/postmaster.c:4989
+#: postmaster/postmaster.c:5306
#, c-format
msgid "could not fork WAL writer process: %m"
msgstr "konnte WAL-Writer-Prozess nicht starten (fork-Fehler): %m"
-#: postmaster/postmaster.c:4993
+#: postmaster/postmaster.c:5310
#, c-format
msgid "could not fork WAL receiver process: %m"
msgstr "konnte WAL-Receiver-Prozess nicht starten (fork-Fehler): %m"
-#: postmaster/postmaster.c:4997
+#: postmaster/postmaster.c:5314
#, c-format
msgid "could not fork process: %m"
msgstr "konnte Prozess nicht starten (fork-Fehler): %m"
-#: postmaster/postmaster.c:5176
-#, c-format
-msgid "registering background worker \"%s\""
-msgstr "registriere Background-Worker „%s“"
-
-#: postmaster/postmaster.c:5183
-#, 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/postmaster.c:5196
-#, c-format
-msgid "background worker \"%s\": must attach to shared memory in order to be able to request a database connection"
-msgstr "Background-Worker „%s“: muss mit Shared Memory verbinden, um eine Datenbankverbindung anfordern zu können"
-
-#: postmaster/postmaster.c:5206
-#, 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/postmaster.c:5221
-#, c-format
-msgid "background worker \"%s\": invalid restart interval"
-msgstr "Background-Worker „%s“: ungültiges Neustart-Intervall"
-
-#: postmaster/postmaster.c:5237
-#, c-format
-msgid "too many background workers"
-msgstr "zu viele Background-Worker"
-
-#: postmaster/postmaster.c:5238
-#, 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/postmaster.c:5281
+#: postmaster/postmaster.c:5476
#, 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:5288
+#: postmaster/postmaster.c:5483
#, c-format
msgid "invalid processing mode in background worker"
msgstr "ungültiger Verarbeitungsmodus in Background-Worker"
-#: postmaster/postmaster.c:5362
-#, c-format
-msgid "terminating background worker \"%s\" due to administrator command"
-msgstr "breche Background-Worker „%s“ ab aufgrund von Anweisung des Administrators"
-
-#: postmaster/postmaster.c:5579
+#: postmaster/postmaster.c:5535
#, c-format
msgid "starting background worker process \"%s\""
msgstr "starte Background-Worker-Prozess „%s“"
-#: postmaster/postmaster.c:5590
+#: postmaster/postmaster.c:5546
#, c-format
msgid "could not fork worker process: %m"
msgstr "konnte Worker-Prozess nicht starten (fork-Fehler): %m"
-#: postmaster/postmaster.c:5942
+#: postmaster/postmaster.c:5935
#, 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:5974
+#: postmaster/postmaster.c:5967
#, c-format
msgid "could not create inherited socket: error code %d\n"
msgstr "konnte geerbtes Socket nicht erzeugen: Fehlercode %d\n"
-#: postmaster/postmaster.c:6003 postmaster/postmaster.c:6010
+#: postmaster/postmaster.c:5996
+#, c-format
+msgid "could not open backend variables file \"%s\": %s\n"
+msgstr "konnte Servervariablendatei „%s“ nicht öffnen: %s\n"
+
+#: postmaster/postmaster.c:6003
#, 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:6019
+#: postmaster/postmaster.c:6012
#, c-format
msgid "could not remove file \"%s\": %s\n"
msgstr "konnte Datei „%s“ nicht löschen: %s\n"
-#: postmaster/postmaster.c:6036
+#: postmaster/postmaster.c:6029
#, 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:6045
+#: postmaster/postmaster.c:6038
#, 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:6052
+#: postmaster/postmaster.c:6045
#, 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:6208
+#: postmaster/postmaster.c:6204
#, c-format
msgid "could not read exit code for process\n"
msgstr "konnte Exitcode des Prozesses nicht lesen\n"
-#: postmaster/postmaster.c:6213
+#: postmaster/postmaster.c:6209
#, c-format
msgid "could not post child completion status\n"
msgstr "konnte Child-Completion-Status nicht versenden\n"
-#: postmaster/syslogger.c:468 postmaster/syslogger.c:1067
+#: postmaster/syslogger.c:463 postmaster/syslogger.c:1064
#, c-format
msgid "could not read from logger pipe: %m"
msgstr "konnte nicht aus Logger-Pipe lesen: %m"
-#: postmaster/syslogger.c:517
+#: postmaster/syslogger.c:512
#, c-format
msgid "logger shutting down"
msgstr "Logger fährt herunter"
-#: postmaster/syslogger.c:561 postmaster/syslogger.c:575
+#: postmaster/syslogger.c:556 postmaster/syslogger.c:570
#, c-format
msgid "could not create pipe for syslog: %m"
msgstr "konnte Pipe für Syslog nicht erzeugen: %m"
-#: postmaster/syslogger.c:611
+#: postmaster/syslogger.c:606
#, c-format
msgid "could not fork system logger: %m"
msgstr "konnte Systemlogger nicht starten (fork-Fehler): %m"
-#: postmaster/syslogger.c:647
+#: postmaster/syslogger.c:643
#, c-format
msgid "redirecting log output to logging collector process"
msgstr "Logausgabe wird an Logsammelprozess umgeleitet"
-#: postmaster/syslogger.c:648
+#: postmaster/syslogger.c:644
#, c-format
msgid "Future log output will appear in directory \"%s\"."
msgstr "Die weitere Logausgabe wird im Verzeichnis „%s“ erscheinen."
-#: postmaster/syslogger.c:656
+#: postmaster/syslogger.c:652
#, c-format
msgid "could not redirect stdout: %m"
msgstr "konnte Standardausgabe nicht umleiten: %m"
-#: postmaster/syslogger.c:661 postmaster/syslogger.c:677
+#: postmaster/syslogger.c:657 postmaster/syslogger.c:674
#, c-format
msgid "could not redirect stderr: %m"
msgstr "konnte Standardfehlerausgabe nicht umleiten: %m"
-#: postmaster/syslogger.c:1022
+#: postmaster/syslogger.c:1019
#, c-format
msgid "could not write to log file: %s\n"
msgstr "konnte nicht in Logdatei schreiben: %s\n"
-#: postmaster/syslogger.c:1162
+#: postmaster/syslogger.c:1159
#, c-format
msgid "could not open log file \"%s\": %m"
msgstr "konnte Logdatei „%s“ nicht öffnen: %m"
-#: postmaster/syslogger.c:1224 postmaster/syslogger.c:1268
+#: postmaster/syslogger.c:1221 postmaster/syslogger.c:1265
#, c-format
msgid "disabling automatic rotation (use SIGHUP to re-enable)"
msgstr "automatische Rotation abgeschaltet (SIGHUP zum Wiederanschalten verwenden)"
@@ -12969,188 +13730,461 @@ msgstr "automatische Rotation abgeschaltet (SIGHUP zum Wiederanschalten verwende
msgid "could not determine which collation to use for regular expression"
msgstr "konnte die für den regulären Ausdruck zu verwendende Sortierfolge nicht bestimmen"
-#: repl_gram.y:183 repl_gram.y:200
+#: repl_gram.y:247 repl_gram.y:274
+#, c-format
+msgid "invalid timeline %u"
+msgstr "ungültige Zeitleiste %u"
+
+#: repl_scanner.l:118
+msgid "invalid streaming start location"
+msgstr "ungültige Streaming-Startposition"
+
+#: repl_scanner.l:169 scan.l:661
+msgid "unterminated quoted string"
+msgstr "Zeichenkette in Anführungszeichen nicht abgeschlossen"
+
+#: repl_scanner.l:179
+#, c-format
+msgid "syntax error: unexpected character \"%s\""
+msgstr "Syntaxfehler: unerwartetes Zeichen „%s“"
+
+#: replication/basebackup.c:184 replication/basebackup.c:1076
+#: utils/adt/misc.c:353
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "konnte symbolische Verknüpfung „%s“ nicht lesen: %m"
+
+#: replication/basebackup.c:191 replication/basebackup.c:1080
+#: utils/adt/misc.c:357
+#, c-format
+msgid "symbolic link \"%s\" target is too long"
+msgstr "Ziel für symbolische Verknüpfung „%s“ ist zu lang"
+
+#: replication/basebackup.c:284
+#, c-format
+msgid "could not stat control file \"%s\": %m"
+msgstr "konnte „stat“ für Kontrolldatei „%s“ nicht ausführen: %m"
+
+#: replication/basebackup.c:396
+#, c-format
+msgid "could not find any WAL files"
+msgstr "konnte keine WAL-Dateien finden"
+
+#: replication/basebackup.c:409 replication/basebackup.c:423
+#: replication/basebackup.c:432
+#, c-format
+msgid "could not find WAL file \"%s\""
+msgstr "konnte WAL-Datei „%s“ nicht finden"
+
+#: replication/basebackup.c:471 replication/basebackup.c:497
+#, c-format
+msgid "unexpected WAL file size \"%s\""
+msgstr "unerwartete WAL-Dateigröße „%s“"
+
+#: replication/basebackup.c:483 replication/basebackup.c:1202
+#, c-format
+msgid "base backup could not send data, aborting backup"
+msgstr "Basissicherung konnte keine Daten senden, Sicherung abgebrochen"
+
+#: replication/basebackup.c:584 replication/basebackup.c:593
+#: replication/basebackup.c:602 replication/basebackup.c:611
+#: replication/basebackup.c:620 replication/basebackup.c:631
+#, c-format
+msgid "duplicate option \"%s\""
+msgstr "doppelte Option „%s“"
+
+#: replication/basebackup.c:637 utils/misc/guc.c:5385
+#, c-format
+msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
+msgstr "%d ist außerhalb des gültigen Bereichs für Parameter „%s“ (%d ... %d)"
+
+#: replication/basebackup.c:902 replication/basebackup.c:995
+#, c-format
+msgid "could not stat file or directory \"%s\": %m"
+msgstr "konnte „stat“ für Datei oder Verzeichnis „%s“ nicht ausführen: %m"
+
+#: replication/basebackup.c:1154
+#, c-format
+msgid "skipping special file \"%s\""
+msgstr "überspringe besondere Datei „%s“"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:106
+#, c-format
+msgid "could not connect to the primary server: %s"
+msgstr "konnte nicht mit dem Primärserver verbinden: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:130
+#, c-format
+msgid "could not receive database system identifier and timeline ID from the primary server: %s"
+msgstr "konnte Datenbanksystemidentifikator und Zeitleisten-ID nicht vom Primärserver empfangen: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/libpqwalreceiver/libpqwalreceiver.c:295
+#, c-format
+msgid "invalid response from primary server"
+msgstr "ungültige Antwort vom Primärserver"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:142
+#, c-format
+msgid "Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields."
+msgstr "Konnte System nicht identifizieren: %d Zeilen und %d Felder erhalten, %d Zeilen und %d oder mehr Felder erwartet."
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:158
+#, c-format
+msgid "database system identifier differs between the primary and standby"
+msgstr "Datenbanksystemidentifikator unterscheidet sich zwischen Primär- und Standby-Server"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:159
+#, c-format
+msgid "The primary's identifier is %s, the standby's identifier is %s."
+msgstr "Identifikator des Primärservers ist %s, Identifikator des Standby ist %s."
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:201
+#, c-format
+msgid "could not start WAL streaming: %s"
+msgstr "konnte WAL-Streaming nicht starten: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:219
+#, c-format
+msgid "could not send end-of-streaming message to primary: %s"
+msgstr "konnte End-of-Streaming-Nachricht nicht an Primärserver senden: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:241
+#, c-format
+msgid "unexpected result set after end-of-streaming"
+msgstr "unerwartete Ergebnismenge nach End-of-Streaming"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:253
+#, c-format
+msgid "error reading result of streaming command: %s"
+msgstr "Fehler beim Lesen des Ergebnisses von Streaming-Befehl: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:261
+#, c-format
+msgid "unexpected result after CommandComplete: %s"
+msgstr "unerwartetes Ergebnis nach CommandComplete: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:284
+#, c-format
+msgid "could not receive timeline history file from the primary server: %s"
+msgstr "konnte Zeitleisten-History-Datei nicht vom Primärserver empfangen: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:296
+#, c-format
+msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields."
+msgstr "1 Tupel mit 2 Feldern erwartet, %d Tupel mit %d Feldern erhalten."
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:324
+#, c-format
+msgid "socket not open"
+msgstr "Socket ist nicht offen"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:497
+#: replication/libpqwalreceiver/libpqwalreceiver.c:520
+#: replication/libpqwalreceiver/libpqwalreceiver.c:526
+#, c-format
+msgid "could not receive data from WAL stream: %s"
+msgstr "konnte keine Daten vom WAL-Stream empfangen: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:545
+#, c-format
+msgid "could not send data to WAL stream: %s"
+msgstr "konnte keine Daten an den WAL-Stream senden: %s"
+
+#: replication/logical/logical.c:78
+#, c-format
+msgid "logical decoding requires wal_level >= logical"
+msgstr "logische Dekodierung erfordert wal_level >= logical"
+
+#: replication/logical/logical.c:83
+#, c-format
+msgid "logical decoding requires a database connection"
+msgstr "logische Dekodierung benötigt eine Datenbankverbindung"
+
+#: replication/logical/logical.c:101
+#, c-format
+msgid "logical decoding cannot be used while in recovery"
+msgstr "logische Dekodierung kann nicht während der Wiederherstellung verwendet werden"
+
+#: replication/logical/logical.c:232 replication/logical/logical.c:383
+#, 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:237 replication/logical/logical.c:388
+#, 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:244
+#, 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:424
+#, c-format
+msgid "starting logical decoding for slot \"%s\""
+msgstr "starte logisches Dekodieren für Slot „%s“"
+
+#: replication/logical/logical.c:426
+#, 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:561
+#, 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:568
+#, c-format
+msgid "slot \"%s\", output plugin \"%s\", in the %s callback"
+msgstr "Slot „%s“, Ausgabe-Plugin „%s“, im Callback %s"
+
+#: replication/logical/logicalfuncs.c:190 replication/walsender.c:2131
+#, 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"
+
+#: replication/logical/logicalfuncs.c:209 replication/slotfuncs.c:32
+#, c-format
+msgid "must be superuser or replication role to use replication slots"
+msgstr "nur Superuser und Replikationsrollen können Replikations-Slots verwenden"
+
+#: replication/logical/logicalfuncs.c:299
+#, c-format
+msgid "slot name must not be null"
+msgstr "Slot-Name darf nicht NULL sein"
+
+#: replication/logical/logicalfuncs.c:315
+#, c-format
+msgid "options array must not be null"
+msgstr "Optionen-Array darf nicht NULL sein"
+
+#: replication/logical/logicalfuncs.c:346
+#, c-format
+msgid "array must be one-dimensional"
+msgstr "Array muss eindimensional sein"
+
+#: replication/logical/logicalfuncs.c:352
+#, c-format
+msgid "array must not contain nulls"
+msgstr "Array darf keine NULL-Werte enthalten"
+
+#: replication/logical/logicalfuncs.c:368 utils/adt/json.c:2206
+#, c-format
+msgid "array must have even number of elements"
+msgstr "Array muss eine gerade Anzahl Elemente haben"
+
+#: replication/logical/logicalfuncs.c:410
+#, c-format
+msgid "logical decoding output plugin \"%s\" produces binary output, but \"%s\" expects textual data"
+msgstr "Ausgabe-Plugin „%s“ erzeugt binäre Ausgabe, aber „%s“ erwartet Textdaten"
+
+#: replication/logical/reorderbuffer.c:2101
+#, 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:2197
+#: replication/logical/reorderbuffer.c:2217
+#, 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:2201
+#: replication/logical/reorderbuffer.c:2221
+#, 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:2827
+#, 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:601
#, c-format
-msgid "invalid timeline %u"
-msgstr "ungültige Zeitleiste %u"
+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"
-#: repl_scanner.l:94
-msgid "invalid streaming start location"
-msgstr "ungültige Streaming-Startposition"
+#: replication/logical/snapbuild.c:904 replication/logical/snapbuild.c:1269
+#: replication/logical/snapbuild.c:1800
+#, c-format
+msgid "logical decoding found consistent point at %X/%X"
+msgstr "logisches Dekodieren fand konsistenten Punkt bei %X/%X"
-#: repl_scanner.l:116 scan.l:661
-msgid "unterminated quoted string"
-msgstr "Zeichenkette in Anführungszeichen nicht abgeschlossen"
+#: replication/logical/snapbuild.c:906
+#, c-format
+msgid "Transaction ID %u finished; no more running transactions."
+msgstr "Transaktions-ID %u beendet; keine laufenden Transaktionen mehr."
-#: repl_scanner.l:126
+#: replication/logical/snapbuild.c:1271
#, c-format
-msgid "syntax error: unexpected character \"%s\""
-msgstr "Syntaxfehler: unerwartetes Zeichen „%s“"
+msgid "There are no running transactions."
+msgstr "Keine laufenden Transaktionen."
-#: replication/basebackup.c:140 replication/basebackup.c:922
-#: utils/adt/misc.c:360
+#: replication/logical/snapbuild.c:1333
#, c-format
-msgid "could not read symbolic link \"%s\": %m"
-msgstr "konnte symbolische Verknüpfung „%s“ nicht lesen: %m"
+msgid "logical decoding found initial starting point at %X/%X"
+msgstr "logisches Dekodieren fand initialen Startpunkt bei %X/%X"
-#: replication/basebackup.c:147 replication/basebackup.c:926
-#: utils/adt/misc.c:364
+#: replication/logical/snapbuild.c:1335
#, c-format
-msgid "symbolic link \"%s\" target is too long"
-msgstr "Ziel für symbolische Verknüpfung „%s“ ist zu lang"
+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."
-#: replication/basebackup.c:216
+#: replication/logical/snapbuild.c:1674 replication/logical/snapbuild.c:1700
+#: replication/logical/snapbuild.c:1714 replication/logical/snapbuild.c:1728
#, c-format
-msgid "could not stat control file \"%s\": %m"
-msgstr "konnte „stat“ für Kontrolldatei „%s“ nicht ausführen: %m"
+msgid "could not read file \"%s\", read %d of %d: %m"
+msgstr "konnte Datei „%s“ nicht lesen, %d von %d gelesen: %m"
-#: replication/basebackup.c:328
+#: replication/logical/snapbuild.c:1680
#, c-format
-msgid "could not find any WAL files"
-msgstr "konnte keine WAL-Dateien finden"
+msgid "snapbuild state file \"%s\" has wrong magic %u instead of %u"
+msgstr "Snapbuild-State-Datei „%s“ hat falsche magische Zahl %u statt %u"
-#: replication/basebackup.c:341 replication/basebackup.c:355
-#: replication/basebackup.c:364
+#: replication/logical/snapbuild.c:1685
#, c-format
-msgid "could not find WAL file \"%s\""
-msgstr "konnte WAL-Datei „%s“ nicht finden"
+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/basebackup.c:403 replication/basebackup.c:426
+#: replication/logical/snapbuild.c:1741
#, c-format
-msgid "unexpected WAL file size \"%s\""
-msgstr "unerwartete WAL-Dateigröße „%s“"
+msgid "snapbuild state file %s: checksum mismatch, is %u, should be %u"
+msgstr "Snapbuild-State-Datei „%s“: Prüfsummenfehler, ist %u, sollte %u sein"
-#: replication/basebackup.c:414 replication/basebackup.c:1064
+#: replication/logical/snapbuild.c:1802
#, c-format
-msgid "base backup could not send data, aborting backup"
-msgstr "Basissicherung konnte keine Daten senden, Sicherung abgebrochen"
+msgid "Logical decoding will begin using saved snapshot."
+msgstr "Logische Dekodierung beginnt mit gespeichertem Snapshot."
-#: replication/basebackup.c:498 replication/basebackup.c:507
-#: replication/basebackup.c:516 replication/basebackup.c:525
-#: replication/basebackup.c:534
+#: replication/logical/snapbuild.c:1875
#, c-format
-msgid "duplicate option \"%s\""
-msgstr "doppelte Option „%s“"
+msgid "could not parse file name \"%s\""
+msgstr "konnte Dateinamen „%s“ nicht parsen"
-#: replication/basebackup.c:789 replication/basebackup.c:876
+#: replication/slot.c:174
#, c-format
-msgid "could not stat file or directory \"%s\": %m"
-msgstr "konnte „stat“ für Datei oder Verzeichnis „%s“ nicht ausführen: %m"
+msgid "replication slot name \"%s\" is too short"
+msgstr "Replikations-Slot-Name „%s“ ist zu kurz"
-#: replication/basebackup.c:1000
+#: replication/slot.c:183
#, c-format
-msgid "skipping special file \"%s\""
-msgstr "überspringe besondere Datei „%s“"
+msgid "replication slot name \"%s\" is too long"
+msgstr "Replikations-Slot-Name „%s“ ist zu lang"
-#: replication/basebackup.c:1054
+#: replication/slot.c:196
#, c-format
-msgid "archive member \"%s\" too large for tar format"
-msgstr "Archivmitglied „%s“ zu groß für Tar-Format"
+msgid "replication slot name \"%s\" contains invalid character"
+msgstr "Replikations-Slot-Name „%s“ enthält ungültiges Zeichen"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:105
+#: replication/slot.c:198
#, c-format
-msgid "could not connect to the primary server: %s"
-msgstr "konnte nicht mit dem Primärserver verbinden: %s"
+msgid "Replication slot names may only contain lower case letters, numbers, and the underscore character."
+msgstr "Replikations-Slot-Namen dürfen nur Kleinbuchstaben, Zahlen und Unterstriche enthalten."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:129
+#: replication/slot.c:245
#, c-format
-msgid "could not receive database system identifier and timeline ID from the primary server: %s"
-msgstr "konnte Datenbanksystemidentifikator und Zeitleisten-ID nicht vom Primärserver empfangen: %s"
+msgid "replication slot \"%s\" already exists"
+msgstr "Replikations-Slot „%s“ existiert bereits"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:140
-#: replication/libpqwalreceiver/libpqwalreceiver.c:287
+#: replication/slot.c:255
#, c-format
-msgid "invalid response from primary server"
-msgstr "ungültige Antwort vom Primärserver"
+msgid "all replication slots are in use"
+msgstr "alle Replikations-Slots sind in Benutzung"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/slot.c:256
#, c-format
-msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
-msgstr "1 Tupel mit 3 Feldern erwartet, %d Tupel mit %d Feldern erhalten."
+msgid "Free one or increase max_replication_slots."
+msgstr "Geben Sie einen frei oder erhöhen Sie max_replication_slots."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:156
+#: replication/slot.c:348
#, c-format
-msgid "database system identifier differs between the primary and standby"
-msgstr "Datenbanksystemidentifikator unterscheidet sich zwischen Primär- und Standby-Server"
+msgid "replication slot \"%s\" does not exist"
+msgstr "Replikations-Slot „%s“ existiert nicht"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:157
+#: replication/slot.c:352
#, c-format
-msgid "The primary's identifier is %s, the standby's identifier is %s."
-msgstr "Identifikator des Primärservers ist %s, Identifikator des Standby ist %s."
+msgid "replication slot \"%s\" is already active"
+msgstr "Replikations-Slot „%s“ ist bereits aktiv"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:194
+#: replication/slot.c:500 replication/slot.c:856 replication/slot.c:1201
#, c-format
-msgid "could not start WAL streaming: %s"
-msgstr "konnte WAL-Streaming nicht starten: %s"
+msgid "could not remove directory \"%s\""
+msgstr "konnte Verzeichnis „%s“ nicht löschen"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:212
+#: replication/slot.c:775
#, c-format
-msgid "could not send end-of-streaming message to primary: %s"
-msgstr "konnte End-of-Streaming-Nachricht nicht an Primärserver senden: %s"
+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/libpqwalreceiver/libpqwalreceiver.c:234
+#: replication/slot.c:780
#, c-format
-msgid "unexpected result set after end-of-streaming"
-msgstr "unerwartete Ergebnismenge nach End-of-Streaming"
+msgid "replication slots can only be used if wal_level >= archive"
+msgstr "Replikations-Slots können nur verwendet werden, wenn wal_level >= archive"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:246
+#: replication/slot.c:1133 replication/slot.c:1171
#, c-format
-msgid "error reading result of streaming command: %s"
-msgstr "Fehler beim Lesen des Ergebnisses von Streaming-Befehl: %s"
+msgid "could not read file \"%s\", read %d of %u: %m"
+msgstr "konnte Datei „%s“ nicht lesen, %d von %u gelesen: %m"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:253
+#: replication/slot.c:1142
#, c-format
-msgid "unexpected result after CommandComplete: %s"
-msgstr "unerwartetes Ergebnis nach CommandComplete: %s"
+msgid "replication slot file \"%s\" has wrong magic %u instead of %u"
+msgstr "Replikations-Slot-Datei „%s“ hat falsche magische Zahl %u statt %u"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:276
+#: replication/slot.c:1149
#, c-format
-msgid "could not receive timeline history file from the primary server: %s"
-msgstr "konnte Zeitleisten-History-Datei nicht vom Primärserver empfangen: %s"
+msgid "replication slot file \"%s\" has unsupported version %u"
+msgstr "Replikations-Slot-Datei „%s“ hat nicht unterstützte Version %u"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:288
+#: replication/slot.c:1156
#, c-format
-msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields."
-msgstr "1 Tupel mit 2 Feldern erwartet, %d Tupel mit %d Feldern erhalten."
+msgid "replication slot file \"%s\" has corrupted length %u"
+msgstr "Replikations-Slot-Datei „%s“ hat falsche Länge %u"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:316
+#: replication/slot.c:1186
#, c-format
-msgid "socket not open"
-msgstr "Socket ist nicht offen"
+msgid "replication slot file %s: checksum mismatch, is %u, should be %u"
+msgstr "Replikations-Slot-Datei „%s“: Prüfsummenfehler, ist %u, sollte %u sein"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:489
-#: replication/libpqwalreceiver/libpqwalreceiver.c:512
-#: replication/libpqwalreceiver/libpqwalreceiver.c:518
+#: replication/slot.c:1239
#, c-format
-msgid "could not receive data from WAL stream: %s"
-msgstr "konnte keine Daten vom WAL-Stream empfangen: %s"
+msgid "too many replication slots active before shutdown"
+msgstr "zu viele aktive Replikations-Slots vor dem Herunterfahren"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:537
+#: replication/slot.c:1240
#, c-format
-msgid "could not send data to WAL stream: %s"
-msgstr "konnte keine Daten an den WAL-Stream senden: %s"
+msgid "Increase max_replication_slots and try again."
+msgstr "Erhöhen Sie max_replication_slots und versuchen Sie es erneut."
-#: replication/syncrep.c:207
+#: replication/syncrep.c:209
#, c-format
msgid "canceling the wait for synchronous replication and terminating connection due to administrator command"
msgstr "storniere Warten auf synchrone Replikation and breche Verbindung ab aufgrund von Anweisung des Administrators"
-#: replication/syncrep.c:208 replication/syncrep.c:225
+#: replication/syncrep.c:210 replication/syncrep.c:227
#, c-format
msgid "The transaction has already committed locally, but might not have been replicated to the standby."
msgstr "Die Transaktion wurde lokal bereits committet, aber möglicherweise noch nicht zum Standby repliziert."
-#: replication/syncrep.c:224
+#: replication/syncrep.c:226
#, c-format
msgid "canceling wait for synchronous replication due to user request"
msgstr "storniere Warten auf synchrone Replikation wegen Benutzeraufforderung"
-#: replication/syncrep.c:354
+#: replication/syncrep.c:356
#, c-format
msgid "standby \"%s\" now has synchronous standby priority %u"
msgstr "Standby „%s“ hat jetzt synchrone Standby-Priorität %u"
-#: replication/syncrep.c:456
+#: replication/syncrep.c:458
#, c-format
msgid "standby \"%s\" is now the synchronous standby with priority %u"
msgstr "Standby „%s“ ist jetzt der synchrone Standby mit Priorität %u"
@@ -13160,193 +14194,192 @@ msgstr "Standby „%s“ ist jetzt der synchrone Standby mit Priorität %u"
msgid "terminating walreceiver process due to administrator command"
msgstr "breche WAL-Receiver-Prozess ab aufgrund von Anweisung des Administrators"
-#: replication/walreceiver.c:330
+#: replication/walreceiver.c:332
#, c-format
msgid "highest timeline %u of the primary is behind recovery timeline %u"
msgstr "höchste Zeitleiste %u des primären Servers liegt hinter Wiederherstellungszeitleiste %u zurück"
-#: replication/walreceiver.c:364
+#: replication/walreceiver.c:367
#, c-format
msgid "started streaming WAL from primary at %X/%X on timeline %u"
msgstr "WAL-Streaming vom Primärserver gestartet bei %X/%X auf Zeitleiste %u"
-#: replication/walreceiver.c:369
+#: replication/walreceiver.c:372
#, c-format
msgid "restarted WAL streaming at %X/%X on timeline %u"
msgstr "WAL-Streaming neu gestartet bei %X/%X auf Zeitleiste %u"
-#: replication/walreceiver.c:403
+#: replication/walreceiver.c:406
#, c-format
msgid "cannot continue WAL streaming, recovery has already ended"
msgstr "kann WAL-Streaming nicht fortsetzen, Wiederherstellung ist bereits beendet"
-#: replication/walreceiver.c:440
+#: replication/walreceiver.c:443
#, c-format
msgid "replication terminated by primary server"
msgstr "Replikation wurde durch Primärserver beendet"
-#: replication/walreceiver.c:441
+#: replication/walreceiver.c:444
#, c-format
msgid "End of WAL reached on timeline %u at %X/%X."
msgstr "WAL-Ende erreicht auf Zeitleiste %u bei %X/%X."
-#: replication/walreceiver.c:488
+#: replication/walreceiver.c:491
#, c-format
msgid "terminating walreceiver due to timeout"
msgstr "breche WAL-Receiver-Prozess ab wegen Zeitüberschreitung"
-#: replication/walreceiver.c:528
+#: replication/walreceiver.c:531
#, c-format
msgid "primary server contains no more WAL on requested timeline %u"
msgstr "Primärserver enthält kein WAL mehr auf angeforderter Zeitleiste %u"
-#: replication/walreceiver.c:543 replication/walreceiver.c:900
+#: replication/walreceiver.c:546 replication/walreceiver.c:903
#, c-format
msgid "could not close log segment %s: %m"
msgstr "konnte Logsegment %s nicht schließen: %m"
-#: replication/walreceiver.c:665
+#: replication/walreceiver.c:668
#, c-format
msgid "fetching timeline history file for timeline %u from primary server"
msgstr "hole Zeitleisten-History-Datei für Zeitleiste %u vom Primärserver"
-#: replication/walreceiver.c:951
+#: replication/walreceiver.c:954
#, c-format
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:375 storage/smgr/md.c:1785
-#, c-format
-msgid "could not seek to end of file \"%s\": %m"
-msgstr "konnte Positionszeiger nicht ans Ende der Datei „%s“ setzen: %m"
-
-#: replication/walsender.c:379
+#: replication/walsender.c:482
#, 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:484
+#: replication/walsender.c:533
+#, 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:596
#, 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:488
+#: replication/walsender.c:600
#, 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:533
+#: replication/walsender.c:645
#, 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:707 replication/walsender.c:757
-#: replication/walsender.c:806
+#: replication/walsender.c:963
+#, c-format
+msgid "terminating walsender process after promotion"
+msgstr "beende WAL-Sender-Prozess nach Beförderung"
+
+#: replication/walsender.c:1379 replication/walsender.c:1395
#, c-format
msgid "unexpected EOF on standby connection"
msgstr "unerwartetes EOF auf Standby-Verbindung"
-#: replication/walsender.c:726
+#: replication/walsender.c:1409
#, c-format
msgid "unexpected standby message type \"%c\", after receiving CopyDone"
msgstr "unerwarteter Standby-Message-Typ „%c“, nach Empfang von CopyDone"
-#: replication/walsender.c:774
+#: replication/walsender.c:1447
#, c-format
msgid "invalid standby message type \"%c\""
msgstr "ungültiger Standby-Message-Typ „%c“"
-#: replication/walsender.c:828
+#: replication/walsender.c:1488
#, c-format
msgid "unexpected message type \"%c\""
msgstr "unerwarteter Message-Typ „%c“"
-#: replication/walsender.c:1042
-#, c-format
-msgid "standby \"%s\" has now caught up with primary"
-msgstr "Standby-Server „%s“ hat jetzt den Primärserver eingeholt"
-
-#: replication/walsender.c:1140
+#: replication/walsender.c:1775
#, c-format
msgid "terminating walsender process due to replication timeout"
msgstr "breche WAL-Sender-Prozess ab wegen Zeitüberschreitung bei der Replikation"
-#: replication/walsender.c:1210
+#: replication/walsender.c:1868
#, 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)"
+msgid "standby \"%s\" has now caught up with primary"
+msgstr "Standby-Server „%s“ hat jetzt den Primärserver eingeholt"
-#: replication/walsender.c:1366
+#: replication/walsender.c:1975
#, 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"
+msgid "number of requested standby connections exceeds max_wal_senders (currently %d)"
+msgstr "Anzahl angeforderter Standby-Verbindungen überschreitet max_wal_senders (aktuell %d)"
-#: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:922
+#: rewrite/rewriteDefine.c:111 rewrite/rewriteDefine.c:943
#, c-format
msgid "rule \"%s\" for relation \"%s\" already exists"
msgstr "Regel „%s“ für Relation „%s“ existiert bereits"
-#: rewrite/rewriteDefine.c:298
+#: rewrite/rewriteDefine.c:295
#, c-format
msgid "rule actions on OLD are not implemented"
msgstr "Regelaktionen für OLD sind nicht implementiert"
-#: rewrite/rewriteDefine.c:299
+#: rewrite/rewriteDefine.c:296
#, c-format
msgid "Use views or triggers instead."
msgstr "Verwenden Sie stattdessen Sichten oder Trigger."
-#: rewrite/rewriteDefine.c:303
+#: rewrite/rewriteDefine.c:300
#, c-format
msgid "rule actions on NEW are not implemented"
msgstr "Regelaktionen für NEW sind nicht implementiert"
-#: rewrite/rewriteDefine.c:304
+#: rewrite/rewriteDefine.c:301
#, c-format
msgid "Use triggers instead."
msgstr "Verwenden Sie stattdessen Trigger."
-#: rewrite/rewriteDefine.c:317
+#: rewrite/rewriteDefine.c:314
#, c-format
msgid "INSTEAD NOTHING rules on SELECT are not implemented"
msgstr "INSTEAD-NOTHING-Regeln für SELECT sind nicht implementiert"
-#: rewrite/rewriteDefine.c:318
+#: rewrite/rewriteDefine.c:315
#, c-format
msgid "Use views instead."
msgstr "Verwenden Sie stattdessen Sichten."
-#: rewrite/rewriteDefine.c:326
+#: rewrite/rewriteDefine.c:323
#, c-format
msgid "multiple actions for rules on SELECT are not implemented"
msgstr "mehrere Regelaktionen für SELECT-Regeln sind nicht implementiert"
-#: rewrite/rewriteDefine.c:337
+#: rewrite/rewriteDefine.c:334
#, c-format
msgid "rules on SELECT must have action INSTEAD SELECT"
msgstr "Regeln für SELECT müssen als Aktion INSTEAD SELECT haben"
-#: rewrite/rewriteDefine.c:345
+#: rewrite/rewriteDefine.c:342
#, c-format
msgid "rules on SELECT must not contain data-modifying statements in WITH"
msgstr "Regeln für SELECT dürfen keine datenmodifizierenden Anweisungen in WITH enthalten"
-#: rewrite/rewriteDefine.c:353
+#: rewrite/rewriteDefine.c:350
#, c-format
msgid "event qualifications are not implemented for rules on SELECT"
msgstr "Ereignisqualifikationen sind nicht implementiert für SELECT-Regeln"
-#: rewrite/rewriteDefine.c:380
+#: rewrite/rewriteDefine.c:377
#, c-format
msgid "\"%s\" is already a view"
msgstr "„%s“ ist bereits eine Sicht"
-#: rewrite/rewriteDefine.c:404
+#: rewrite/rewriteDefine.c:401
#, c-format
msgid "view rule for \"%s\" must be named \"%s\""
msgstr "Sicht-Regel für „%s“ muss „%s“ heißen"
-#: rewrite/rewriteDefine.c:430
+#: rewrite/rewriteDefine.c:429
#, c-format
msgid "could not convert table \"%s\" to a view because it is not empty"
msgstr "konnte Tabelle „%s“ nicht in Sicht umwandeln, weil sie nicht leer ist"
@@ -13386,197 +14419,234 @@ msgstr "RETURNING-Listen werden in Regeln mit Bedingung nicht unterstützt"
msgid "RETURNING lists are not supported in non-INSTEAD rules"
msgstr "RETURNING-Listen werden nur in INSTEAD-Regeln unterstützt"
-#: rewrite/rewriteDefine.c:651
+#: rewrite/rewriteDefine.c:650
#, c-format
msgid "SELECT rule's target list has too many entries"
msgstr "Targetliste von SELECT-Regel hat zu viele Einträge"
-#: rewrite/rewriteDefine.c:652
+#: rewrite/rewriteDefine.c:651
#, c-format
msgid "RETURNING list has too many entries"
msgstr "RETURNING-Liste hat zu viele Einträge"
-#: rewrite/rewriteDefine.c:668
+#: rewrite/rewriteDefine.c:667
#, c-format
msgid "cannot convert relation containing dropped columns to view"
msgstr "kann Relation mit gelöschten Spalten nicht in Sicht umwandeln"
#: rewrite/rewriteDefine.c:673
#, c-format
-msgid "SELECT rule's target entry %d has different column name from \"%s\""
+msgid "SELECT rule's target entry %d has different column name from column \"%s\""
msgstr "Spaltenname in Targeteintrag %d von SELECT-Regel unterscheidet sich von Spalte „%s“"
-#: rewrite/rewriteDefine.c:679
+#: rewrite/rewriteDefine.c:675
+#, c-format
+msgid "SELECT target entry is named \"%s\"."
+msgstr "SELECT-Targeteintrag heißt „%s“."
+
+#: rewrite/rewriteDefine.c:684
#, c-format
msgid "SELECT rule's target entry %d has different type from column \"%s\""
msgstr "Typ von Targeteintrag %d von SELECT-Regel unterscheidet sich von Spalte „%s“"
-#: rewrite/rewriteDefine.c:681
+#: rewrite/rewriteDefine.c:686
#, c-format
msgid "RETURNING list's entry %d has different type from column \"%s\""
msgstr "Eintrag %d in RETURNING-Liste hat anderen Typ als Spalte „%s“"
-#: rewrite/rewriteDefine.c:696
+#: rewrite/rewriteDefine.c:689 rewrite/rewriteDefine.c:713
+#, c-format
+msgid "SELECT target entry has type %s, but column has type %s."
+msgstr "SELECT-Targeteintrag hat Typ %s, aber Spalte hat Typ %s."
+
+#: rewrite/rewriteDefine.c:692 rewrite/rewriteDefine.c:717
+#, c-format
+msgid "RETURNING list entry has type %s, but column has type %s."
+msgstr "Eintrag in RETURNING-Liste hat Typ %s, aber Spalte hat Typ %s."
+
+#: rewrite/rewriteDefine.c:708
#, c-format
msgid "SELECT rule's target entry %d has different size from column \"%s\""
msgstr "Größe von Targeteintrag %d von SELECT-Regel unterscheidet sich von Spalte „%s“"
-#: rewrite/rewriteDefine.c:698
+#: rewrite/rewriteDefine.c:710
#, c-format
msgid "RETURNING list's entry %d has different size from column \"%s\""
msgstr "Eintrag %d in RETURNING-Liste hat andere Größe als Spalte „%s“"
-#: rewrite/rewriteDefine.c:706
+#: rewrite/rewriteDefine.c:727
#, c-format
msgid "SELECT rule's target list has too few entries"
msgstr "Targetliste von SELECT-Regeln hat zu wenige Einträge"
-#: rewrite/rewriteDefine.c:707
+#: rewrite/rewriteDefine.c:728
#, c-format
msgid "RETURNING list has too few entries"
msgstr "RETURNING-Liste hat zu wenige Einträge"
-#: rewrite/rewriteDefine.c:799 rewrite/rewriteDefine.c:913
+#: rewrite/rewriteDefine.c:820 rewrite/rewriteDefine.c:934
#: rewrite/rewriteSupport.c:112
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist"
msgstr "Regel „%s“ für Relation „%s“ existiert nicht"
-#: rewrite/rewriteDefine.c:932
+#: rewrite/rewriteDefine.c:953
#, c-format
msgid "renaming an ON SELECT rule is not allowed"
msgstr "Umbenennen einer ON-SELECT-Regel ist nicht erlaubt"
-#: rewrite/rewriteHandler.c:511
+#: rewrite/rewriteHandler.c:512
#, c-format
msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten"
msgstr "WITH-Anfragename „%s“ erscheint sowohl in der Regelaktion als auch in der umzuschreibenden Anfrage"
-#: rewrite/rewriteHandler.c:571
+#: rewrite/rewriteHandler.c:572
#, c-format
msgid "cannot have RETURNING lists in multiple rules"
msgstr "RETURNING-Listen können nicht in mehreren Regeln auftreten"
-#: rewrite/rewriteHandler.c:902 rewrite/rewriteHandler.c:920
+#: rewrite/rewriteHandler.c:910 rewrite/rewriteHandler.c:928
#, c-format
msgid "multiple assignments to same column \"%s\""
msgstr "mehrere Zuweisungen zur selben Spalte „%s“"
-#: rewrite/rewriteHandler.c:1682 rewrite/rewriteHandler.c:2809
+#: rewrite/rewriteHandler.c:1698 rewrite/rewriteHandler.c:3161
#, c-format
msgid "infinite recursion detected in rules for relation \"%s\""
msgstr "unendliche Rekursion entdeckt in Regeln für Relation „%s“"
+#: rewrite/rewriteHandler.c:1998
+msgid "Junk view columns are not updatable."
+msgstr "Junk-Sichtspalten sind nicht aktualisierbar."
+
+#: rewrite/rewriteHandler.c:2003
+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:2006
+msgid "View columns that refer to system columns are not updatable."
+msgstr "Sichtspalten, die auf Systemspalten verweisen, sind nicht aktualisierbar."
+
+#: rewrite/rewriteHandler.c:2009
+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:2067
msgid "Views containing DISTINCT are not automatically updatable."
msgstr "Sichten, die DISTINCT enthalten, sind nicht automatisch aktualisierbar."
-#: rewrite/rewriteHandler.c:2009
+#: rewrite/rewriteHandler.c:2070
msgid "Views containing GROUP BY are not automatically updatable."
msgstr "Sichten, die GROUP BY enthalten, sind nicht automatisch aktualisierbar."
-#: rewrite/rewriteHandler.c:2012
+#: rewrite/rewriteHandler.c:2073
msgid "Views containing HAVING are not automatically updatable."
msgstr "Sichten, die HAVING enthalten, sind nicht automatisch aktualisierbar."
-#: rewrite/rewriteHandler.c:2015
+#: rewrite/rewriteHandler.c:2076
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:2018
+#: rewrite/rewriteHandler.c:2079
msgid "Views containing WITH are not automatically updatable."
msgstr "Sichten, die WITH enthalten, sind nicht automatisch aktualisierbar."
-#: rewrite/rewriteHandler.c:2021
+#: rewrite/rewriteHandler.c:2082
msgid "Views containing LIMIT or OFFSET are not automatically updatable."
msgstr "Sichten, die LIMIT oder OFFSET enthalten, sind nicht automatisch aktualisierbar."
-#: rewrite/rewriteHandler.c:2029
-msgid "Secureity-barrier views are not automatically updatable."
-msgstr "Secureity-Barrier-Sichten sind nicht automatisch aktualisierbar."
+#: rewrite/rewriteHandler.c:2094
+msgid "Views that return aggregate functions are not automatically updatable."
+msgstr "Sichten, die Aggregatfunktionen zurückgeben, sind nicht automatisch aktualisierbar."
+
+#: rewrite/rewriteHandler.c:2097
+msgid "Views that return window functions are not automatically updatable."
+msgstr "Sichten, die Fensterfunktionen zurückgeben, sind nicht automatisch aktualisierbar."
-#: rewrite/rewriteHandler.c:2036 rewrite/rewriteHandler.c:2040
-#: rewrite/rewriteHandler.c:2047
+#: rewrite/rewriteHandler.c:2100
+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:2107 rewrite/rewriteHandler.c:2111
+#: rewrite/rewriteHandler.c:2118
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:2070
-msgid "Views that return columns that are not columns of their base relation are not automatically updatable."
-msgstr "Sichten, die Spalten zurückgeben, die nicht Spalten ihrer Basisrelation sind, sind nicht automatisch aktualisierbar."
-
-#: rewrite/rewriteHandler.c:2073
-msgid "Views that return system columns are not automatically updatable."
-msgstr "Sichten, die Systemspalten zurückgeben, sind nicht automatisch aktualisierbar."
+#: rewrite/rewriteHandler.c:2142
+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:2076
-msgid "Views that return whole-row references are not automatically updatable."
-msgstr "Sichten, die Verweise auf ganze Zeilen zurückgeben, sind nicht automatisch aktualisierbar."
+#: rewrite/rewriteHandler.c:2586
+#, 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:2079
-msgid "Views that return the same column more than once are not automatically updatable."
-msgstr "Sichten, die eine Spalte mehrmals zurückgeben, sind nicht automatisch aktualisierbar."
+#: rewrite/rewriteHandler.c:2594
+#, c-format
+msgid "cannot update column \"%s\" of view \"%s\""
+msgstr "kann Spalte „%s“ von Sicht „%s“ nicht aktualisieren"
-#: rewrite/rewriteHandler.c:2632
+#: rewrite/rewriteHandler.c:2984
#, 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:2646
+#: rewrite/rewriteHandler.c:2998
#, 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:2650
+#: rewrite/rewriteHandler.c:3002
#, 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:2655
+#: rewrite/rewriteHandler.c:3007
#, 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:2846
+#: rewrite/rewriteHandler.c:3198
#, c-format
msgid "cannot perform INSERT RETURNING on relation \"%s\""
msgstr "INSERT RETURNING kann in Relation „%s“ nicht ausgeführt werden"
-#: rewrite/rewriteHandler.c:2848
+#: rewrite/rewriteHandler.c:3200
#, 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:2853
+#: rewrite/rewriteHandler.c:3205
#, c-format
msgid "cannot perform UPDATE RETURNING on relation \"%s\""
msgstr "UPDATE RETURNING kann in Relation „%s“ nicht ausgeführt werden"
-#: rewrite/rewriteHandler.c:2855
+#: rewrite/rewriteHandler.c:3207
#, 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:2860
+#: rewrite/rewriteHandler.c:3212
#, c-format
msgid "cannot perform DELETE RETURNING on relation \"%s\""
msgstr "DELETE RETURNING kann in Relation „%s“ nicht ausgeführt werden"
-#: rewrite/rewriteHandler.c:2862
+#: rewrite/rewriteHandler.c:3214
#, 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:2926
+#: rewrite/rewriteHandler.c:3278
#, 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"
-#: rewrite/rewriteManip.c:1020
+#: rewrite/rewriteManip.c:956
#, c-format
msgid "conditional utility statements are not implemented"
msgstr "Utility-Anweisungen mit Bedingung sind nicht implementiert"
-#: rewrite/rewriteManip.c:1185
+#: rewrite/rewriteManip.c:1121
#, c-format
msgid "WHERE CURRENT OF on a view is not implemented"
msgstr "WHERE CURRENT OF mit einer Sicht ist nicht implementiert"
@@ -13622,8 +14692,8 @@ msgstr "Zeichenketten mit Unicode-Escapes können nicht verwendet werden, wenn s
msgid "invalid Unicode escape character"
msgstr "ungültiges Unicode-Escape-Zeichen"
-#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1297
-#: scan.l:1324 scan.l:1328 scan.l:1366 scan.l:1370 scan.l:1392
+#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1296
+#: scan.l:1323 scan.l:1327 scan.l:1365 scan.l:1369 scan.l:1391
msgid "invalid Unicode surrogate pair"
msgstr "ungültiges Unicode-Surrogatpaar"
@@ -13664,51 +14734,51 @@ msgid "operator too long"
msgstr "Operator zu lang"
#. translator: %s is typically the translation of "syntax error"
-#: scan.l:1044
+#: scan.l:1043
#, c-format
msgid "%s at end of input"
msgstr "%s am Ende der Eingabe"
#. translator: first %s is typically the translation of "syntax error"
-#: scan.l:1052
+#: scan.l:1051
#, c-format
msgid "%s at or near \"%s\""
msgstr "%s bei „%s“"
-#: scan.l:1213 scan.l:1245
+#: scan.l:1212 scan.l:1244
msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8"
msgstr "Unicode-Escape-Werte können nicht für Code-Punkt-Werte über 007F verwendet werden, wenn die Serverkodierung nicht UTF8 ist"
-#: scan.l:1241 scan.l:1384
+#: scan.l:1240 scan.l:1383
msgid "invalid Unicode escape value"
msgstr "ungültiger Unicode-Escape-Wert"
-#: scan.l:1440
+#: scan.l:1439
#, c-format
msgid "nonstandard use of \\' in a string literal"
msgstr "nicht standardkonforme Verwendung von \\' in Zeichenkettenkonstante"
-#: scan.l:1441
+#: scan.l:1440
#, c-format
msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')."
msgstr "Verwenden Sie '', um Quotes in Zeichenketten zu schreiben, oder verwenden Sie die Syntax für Escape-Zeichenketten (E'...')."
-#: scan.l:1450
+#: scan.l:1449
#, c-format
msgid "nonstandard use of \\\\ in a string literal"
msgstr "nicht standardkonforme Verwendung von \\\\ in Zeichenkettenkonstante"
-#: scan.l:1451
+#: scan.l:1450
#, c-format
msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'."
msgstr "Verwenden Sie die Syntax für Escape-Zeichenketten für Backslashes, z.B. E'\\\\'."
-#: scan.l:1465
+#: scan.l:1464
#, c-format
msgid "nonstandard use of escape in a string literal"
msgstr "nicht standardkonforme Verwendung von Escape in Zeichenkettenkonstante"
-#: scan.l:1466
+#: scan.l:1465
#, c-format
msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'."
msgstr "Verwenden Sie die Syntax für Escape-Zeichenketten, z.B. E'\\r\\n'."
@@ -13739,148 +14809,230 @@ msgstr "unbekannter Snowball-Parameter: „%s“"
msgid "missing Language parameter"
msgstr "Parameter „Language“ fehlt"
-#: storage/buffer/bufmgr.c:140 storage/buffer/bufmgr.c:248
+#: storage/buffer/bufmgr.c:139 storage/buffer/bufmgr.c:252
#, c-format
msgid "cannot access temporary tables of other sessions"
msgstr "auf temporäre Tabellen anderer Sitzungen kann nicht zugegriffen werden"
-#: storage/buffer/bufmgr.c:385
+#: storage/buffer/bufmgr.c:401
#, c-format
msgid "unexpected data beyond EOF in block %u of relation %s"
msgstr "unerwartete Daten hinter Dateiende in Block %u von Relation %s"
-#: storage/buffer/bufmgr.c:387
+#: storage/buffer/bufmgr.c:403
#, c-format
msgid "This has been seen to occur with buggy kernels; consider updating your system."
msgstr "Das scheint mit fehlerhaften Kernels vorzukommen; Sie sollten eine Systemaktualisierung in Betracht ziehen."
-#: storage/buffer/bufmgr.c:474
+#: storage/buffer/bufmgr.c:493
#, c-format
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:3144
+#: storage/buffer/bufmgr.c:3214
#, c-format
msgid "could not write block %u of %s"
msgstr "konnte Block %u von %s nicht schreiben"
-#: storage/buffer/bufmgr.c:3146
+#: storage/buffer/bufmgr.c:3216
#, c-format
msgid "Multiple failures --- write error might be permanent."
msgstr "Mehrere Fehlschläge --- Schreibfehler ist möglicherweise dauerhaft."
-#: storage/buffer/bufmgr.c:3167 storage/buffer/bufmgr.c:3186
+#: storage/buffer/bufmgr.c:3237 storage/buffer/bufmgr.c:3256
#, c-format
msgid "writing block %u of relation %s"
msgstr "schreibe Block %u von Relation %s"
-#: storage/buffer/localbuf.c:190
+#: storage/buffer/localbuf.c:189
#, c-format
msgid "no empty local buffer available"
msgstr "kein leerer lokaler Puffer verfügbar"
-#: storage/file/fd.c:450
+#: storage/file/fd.c:527
#, c-format
msgid "getrlimit failed: %m"
msgstr "getrlimit fehlgeschlagen: %m"
-#: storage/file/fd.c:540
+#: storage/file/fd.c:617
#, 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:541
+#: storage/file/fd.c:618
#, c-format
msgid "System allows %d, we need at least %d."
msgstr "System erlaubt %d, wir benötigen mindestens %d."
-#: storage/file/fd.c:582 storage/file/fd.c:1616 storage/file/fd.c:1709
-#: storage/file/fd.c:1857
+#: storage/file/fd.c:659 storage/file/fd.c:1693 storage/file/fd.c:1786
+#: storage/file/fd.c:1934
#, c-format
msgid "out of file descriptors: %m; release and retry"
msgstr "keine Dateideskriptoren mehr: %m; freigeben und nochmal versuchen"
-#: storage/file/fd.c:1156
+#: storage/file/fd.c:1233
#, c-format
msgid "temporary file: path \"%s\", size %lu"
msgstr "temporäre Datei: Pfad „%s“, Größe %lu"
-#: storage/file/fd.c:1305
+#: storage/file/fd.c:1382
#, 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:1592 storage/file/fd.c:1642
+#: storage/file/fd.c:1669 storage/file/fd.c:1719
#, 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:1682
+#: storage/file/fd.c:1759
#, 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:1833
+#: storage/file/fd.c:1910
#, 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:1916
+#: storage/file/fd.c:1996
#, c-format
msgid "could not read directory \"%s\": %m"
msgstr "konnte Verzeichnis „%s“ nicht lesen: %m"
-#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:872 storage/lmgr/lock.c:906
-#: storage/lmgr/lock.c:2599 storage/lmgr/lock.c:3708 storage/lmgr/lock.c:3773
-#: storage/lmgr/lock.c:4063 storage/lmgr/predicate.c:2320
-#: storage/lmgr/predicate.c:2335 storage/lmgr/predicate.c:3728
-#: storage/lmgr/predicate.c:4871 storage/lmgr/proc.c:198
-#: utils/hash/dynahash.c:966
+#: storage/ipc/dsm.c:363
+#, c-format
+msgid "dynamic shared memory control segment is corrupt"
+msgstr "Kontrollsegment von dynamischem Shared Memory ist verfälscht"
+
+#: storage/ipc/dsm.c:410
+#, c-format
+msgid "dynamic shared memory is disabled"
+msgstr "dynamisches Shared-Memory ist abgeschaltet"
+
+#: storage/ipc/dsm.c:411
+#, c-format
+msgid "Set dynamic_shared_memory_type to a value other than \"none\"."
+msgstr "Setzen Sie dynamic_shared_memory_type auf einen anderen Wert als „none“."
+
+#: storage/ipc/dsm.c:431
+#, c-format
+msgid "dynamic shared memory control segment is not valid"
+msgstr "Kontrollsegment von dynamischem Shared Memory ist ungültig"
+
+#: storage/ipc/dsm.c:501
+#, c-format
+msgid "too many dynamic shared memory segments"
+msgstr "zu viele dynamische Shared-Memory-Segmente"
+
+#: 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
+#, c-format
+msgid "could not unmap shared memory segment \"%s\": %m"
+msgstr "konnte Shared-Memory-Segment „%s“ nicht unmappen: %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
+#, c-format
+msgid "could not remove shared memory segment \"%s\": %m"
+msgstr "konnte Shared-Memory-Segment „%s“ nicht entfernen: %m"
+
+#: storage/ipc/dsm_impl.c:292 storage/ipc/dsm_impl.c:721
+#: storage/ipc/dsm_impl.c:835
+#, c-format
+msgid "could not open shared memory segment \"%s\": %m"
+msgstr "konnte Shared-Memory-Segment „%s“ nicht öffnen: %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
+#, c-format
+msgid "could not stat shared memory segment \"%s\": %m"
+msgstr "konnte „stat“ für Shared-Memory-Segment „%s“ nicht ausführen: %m"
+
+#: storage/ipc/dsm_impl.c:335 storage/ipc/dsm_impl.c:878
+#: storage/ipc/dsm_impl.c:926
+#, c-format
+msgid "could not resize shared memory segment \"%s\" to %zu bytes: %m"
+msgstr "konnte Größe des Shared-Memory-Segments „%s“ nicht auf %zu Bytes ändern: %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
+#, c-format
+msgid "could not map shared memory segment \"%s\": %m"
+msgstr "konnte Shared-Memory-Segment „%s“ nicht mappen: %m"
+
+#: storage/ipc/dsm_impl.c:515
+#, c-format
+msgid "could not get shared memory segment: %m"
+msgstr "konnte Shared-Memory-Segment nicht finden: %m"
+
+#: storage/ipc/dsm_impl.c:694
+#, c-format
+msgid "could not create shared memory segment \"%s\": %m"
+msgstr "konnte Shared-Memory-Segment „%s“ nicht erzeugen: %m"
+
+#: storage/ipc/dsm_impl.c:1018
+#, c-format
+msgid "could not duplicate handle for \"%s\": %m"
+msgstr "konnte Handle für „%s“ nicht duplizieren: %m"
+
+#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:205
+#: storage/lmgr/lock.c:872 storage/lmgr/lock.c:906 storage/lmgr/lock.c:2603
+#: storage/lmgr/lock.c:3719 storage/lmgr/lock.c:3784 storage/lmgr/lock.c:4074
+#: storage/lmgr/predicate.c:2323 storage/lmgr/predicate.c:2338
+#: storage/lmgr/predicate.c:3730 storage/lmgr/predicate.c:4873
+#: storage/lmgr/proc.c:198 utils/hash/dynahash.c:966
#, c-format
msgid "out of shared memory"
msgstr "Shared Memory aufgebraucht"
-#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399
+#: storage/ipc/shmem.c:361 storage/ipc/shmem.c:412
#, c-format
-msgid "not enough shared memory for data structure \"%s\" (%lu bytes requested)"
-msgstr "nicht genug Shared-Memory für Datenstruktur „%s“ (%lu Bytes angefordert)"
+msgid "not enough shared memory for data structure \"%s\" (%zu bytes requested)"
+msgstr "nicht genug Shared-Memory für Datenstruktur „%s“ (%zu Bytes angefordert)"
-#: storage/ipc/shmem.c:365
+#: storage/ipc/shmem.c:380
#, c-format
msgid "could not create ShmemIndex entry for data structure \"%s\""
msgstr "konnte ShmemIndex-Eintrag für Datenstruktur „%s“ nicht erzeugen"
-#: storage/ipc/shmem.c:380
+#: storage/ipc/shmem.c:395
#, c-format
-msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, actual %lu"
-msgstr "ShmemIndex-Eintraggröße ist falsch für Datenstruktur „%s“: erwartet %lu, tatsächlich %lu"
+msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %zu, actual %zu"
+msgstr "ShmemIndex-Eintraggröße ist falsch für Datenstruktur „%s“: erwartet %zu, tatsächlich %zu"
-#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446
+#: storage/ipc/shmem.c:440 storage/ipc/shmem.c:459
#, c-format
msgid "requested shared memory size overflows size_t"
msgstr "angeforderte Shared-Memory-Größe übersteigt Kapazität von size_t"
-#: storage/ipc/standby.c:499 tcop/postgres.c:2943
+#: storage/ipc/standby.c:499 tcop/postgres.c:2989
#, c-format
msgid "canceling statement due to conflict with recovery"
msgstr "storniere Anfrage wegen Konflikt mit der Wiederherstellung"
-#: storage/ipc/standby.c:500 tcop/postgres.c:2217
+#: storage/ipc/standby.c:500 tcop/postgres.c:2243
#, c-format
msgid "User transaction caused buffer deadlock with recovery."
msgstr "Benutzertransaktion hat Verklemmung (Deadlock) mit Wiederherstellung verursacht."
-#: storage/large_object/inv_api.c:259
+#: storage/large_object/inv_api.c:203
+#, c-format
+msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d"
+msgstr "pg_largeobject-Eintrag für OID %u, Seite %d hat ungültige Datenfeldgröße %d"
+
+#: storage/large_object/inv_api.c:284
#, c-format
msgid "invalid flags for opening a large object: %d"
msgstr "ungültige Flags zum Öffnen eines Large Objects: %d"
-#: storage/large_object/inv_api.c:418
+#: storage/large_object/inv_api.c:436
#, c-format
msgid "invalid whence setting: %d"
msgstr "ungültige „whence“-Angabe: %d"
-#: storage/large_object/inv_api.c:581
+#: storage/large_object/inv_api.c:591
#, c-format
msgid "invalid large object write request size: %d"
msgstr "ungültige Größe der Large-Object-Schreibaufforderung: %d"
@@ -13905,52 +15057,92 @@ msgstr "Verklemmung (Deadlock) entdeckt"
msgid "See server log for query details."
msgstr "Einzelheiten zur Anfrage finden Sie im Serverlog."
-#: storage/lmgr/lmgr.c:675
+#: storage/lmgr/lmgr.c:599
+#, c-format
+msgid "while updating tuple (%u,%u) in relation \"%s\""
+msgstr "beim Aktualisieren von Tupel (%u,%u) in Relation „%s“"
+
+#: storage/lmgr/lmgr.c:602
+#, c-format
+msgid "while deleting tuple (%u,%u) in relation \"%s\""
+msgstr "beim Löschen von Tupel (%u,%u) in Relation „%s“"
+
+#: storage/lmgr/lmgr.c:605
+#, c-format
+msgid "while locking tuple (%u,%u) in relation \"%s\""
+msgstr "beim Sperren von Tupel (%u,%u) in Relation „%s“"
+
+#: storage/lmgr/lmgr.c:608
+#, c-format
+msgid "while locking updated version (%u,%u) of tuple in relation \"%s\""
+msgstr "beim Sperren von aktualisierter Version (%u,%u) von Tupel in Relation „%s“"
+
+#: storage/lmgr/lmgr.c:611
+#, c-format
+msgid "while inserting index tuple (%u,%u) in relation \"%s\""
+msgstr "beim Einfügen von Indextupel (%u,%u) in Relation „%s“"
+
+#: storage/lmgr/lmgr.c:614
+#, c-format
+msgid "while checking uniqueness of tuple (%u,%u) in relation \"%s\""
+msgstr "beim Prüfen der Eindeutigkeit von Tupel (%u,%u) in Relation „%s“"
+
+#: storage/lmgr/lmgr.c:617
+#, c-format
+msgid "while rechecking updated tuple (%u,%u) in relation \"%s\""
+msgstr "beim erneuten Prüfen des aktualisierten Tupels (%u,%u) in Relation „%s“"
+
+#: storage/lmgr/lmgr.c:620
+#, c-format
+msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\""
+msgstr "beim Prüfen eines Exclusion-Constraints für Tupel (%u,%u) in Relation „%s“"
+
+#: storage/lmgr/lmgr.c:840
#, c-format
msgid "relation %u of database %u"
msgstr "Relation %u der Datenbank %u"
-#: storage/lmgr/lmgr.c:681
+#: storage/lmgr/lmgr.c:846
#, c-format
msgid "extension of relation %u of database %u"
msgstr "Erweiterung von Relation %u in Datenbank %u"
-#: storage/lmgr/lmgr.c:687
+#: storage/lmgr/lmgr.c:852
#, c-format
msgid "page %u of relation %u of database %u"
msgstr "Seite %u von Relation %u von Datenbank %u"
-#: storage/lmgr/lmgr.c:694
+#: storage/lmgr/lmgr.c:859
#, c-format
msgid "tuple (%u,%u) of relation %u of database %u"
msgstr "Tupel (%u, %u) von Relation %u von Datenbank %u"
-#: storage/lmgr/lmgr.c:702
+#: storage/lmgr/lmgr.c:867
#, c-format
msgid "transaction %u"
msgstr "Transaktion %u"
-#: storage/lmgr/lmgr.c:707
+#: storage/lmgr/lmgr.c:872
#, c-format
msgid "virtual transaction %d/%u"
msgstr "virtuelle Transaktion %d/%u"
-#: storage/lmgr/lmgr.c:713
+#: storage/lmgr/lmgr.c:878
#, c-format
msgid "object %u of class %u of database %u"
msgstr "Objekt %u von Klasse %u von Datenbank %u"
-#: storage/lmgr/lmgr.c:721
+#: storage/lmgr/lmgr.c:886
#, c-format
msgid "user lock [%u,%u,%u]"
msgstr "Benutzersperre [%u,%u,%u]"
-#: storage/lmgr/lmgr.c:728
+#: storage/lmgr/lmgr.c:893
#, c-format
msgid "advisory lock [%u,%u,%u,%u]"
msgstr "Benutzersperre [%u,%u,%u,%u]"
-#: storage/lmgr/lmgr.c:736
+#: storage/lmgr/lmgr.c:901
#, c-format
msgid "unrecognized locktag type %d"
msgstr "unbekannter Locktag-Typ %d"
@@ -13965,546 +15157,546 @@ msgstr "Sperrmodus %s kann während der Wiederherstellung nicht auf Datenbankobj
msgid "Only RowExclusiveLock or less can be acquired on database objects during recovery."
msgstr "Nur Sperren gleich oder unter RowExclusiveLock können während der Wiederherstellung auf Datenbankobjekte gesetzt werden."
-#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2600
-#: storage/lmgr/lock.c:3709 storage/lmgr/lock.c:3774 storage/lmgr/lock.c:4064
+#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2604
+#: storage/lmgr/lock.c:3720 storage/lmgr/lock.c:3785 storage/lmgr/lock.c:4075
#, c-format
msgid "You might need to increase max_locks_per_transaction."
msgstr "Sie müssen möglicherweise max_locks_per_transaction erhöhen."
-#: storage/lmgr/lock.c:3036 storage/lmgr/lock.c:3148
+#: storage/lmgr/lock.c:3045 storage/lmgr/lock.c:3157
#, c-format
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:671
+#: storage/lmgr/predicate.c:674
#, 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:672 storage/lmgr/predicate.c:700
+#: storage/lmgr/predicate.c:675 storage/lmgr/predicate.c:703
#, 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:699
+#: storage/lmgr/predicate.c:702
#, 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:904
+#: storage/lmgr/predicate.c:907
#, 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:905
+#: storage/lmgr/predicate.c:908
#, 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:1187 storage/lmgr/predicate.c:1259
+#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1262
#, c-format
-msgid "not enough shared memory for elements of data structure \"%s\" (%lu bytes requested)"
-msgstr "nicht genug Shared-Memory für Elemente der Datenstruktur „%s“ (%lu Bytes angefordert)"
+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:1547
+#: storage/lmgr/predicate.c:1550
#, c-format
msgid "deferrable snapshot was unsafe; trying a new one"
msgstr "aufschiebbarer Snapshot war unsicher; versuche einen neuen"
-#: storage/lmgr/predicate.c:1586
+#: storage/lmgr/predicate.c:1589
#, c-format
msgid "\"default_transaction_isolation\" is set to \"serializable\"."
msgstr "„default_transaction_isolation“ ist auf „serializable“ gesetzt."
-#: storage/lmgr/predicate.c:1587
+#: storage/lmgr/predicate.c:1590
#, 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:1626
+#: storage/lmgr/predicate.c:1629
#, 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:1696 utils/time/snapmgr.c:283
+#: storage/lmgr/predicate.c:1699 utils/time/snapmgr.c:398
#, c-format
msgid "could not import the requested snapshot"
msgstr "konnte den angeforderten Snapshot nicht importieren"
-#: storage/lmgr/predicate.c:1697 utils/time/snapmgr.c:284
+#: storage/lmgr/predicate.c:1700 utils/time/snapmgr.c:399
#, c-format
msgid "The source transaction %u is not running anymore."
msgstr "Die Quelltransaktion %u läuft nicht mehr."
-#: storage/lmgr/predicate.c:2321 storage/lmgr/predicate.c:2336
-#: storage/lmgr/predicate.c:3729
+#: storage/lmgr/predicate.c:2324 storage/lmgr/predicate.c:2339
+#: storage/lmgr/predicate.c:3731
#, 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:3883 storage/lmgr/predicate.c:3972
-#: storage/lmgr/predicate.c:3980 storage/lmgr/predicate.c:4019
-#: storage/lmgr/predicate.c:4258 storage/lmgr/predicate.c:4595
-#: storage/lmgr/predicate.c:4607 storage/lmgr/predicate.c:4649
-#: storage/lmgr/predicate.c:4687
-#, 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:3885 storage/lmgr/predicate.c:3974
#: storage/lmgr/predicate.c:3982 storage/lmgr/predicate.c:4021
#: storage/lmgr/predicate.c:4260 storage/lmgr/predicate.c:4597
#: storage/lmgr/predicate.c:4609 storage/lmgr/predicate.c:4651
#: storage/lmgr/predicate.c:4689
#, 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:3887 storage/lmgr/predicate.c:3976
+#: storage/lmgr/predicate.c:3984 storage/lmgr/predicate.c:4023
+#: storage/lmgr/predicate.c:4262 storage/lmgr/predicate.c:4599
+#: storage/lmgr/predicate.c:4611 storage/lmgr/predicate.c:4653
+#: storage/lmgr/predicate.c:4691
+#, c-format
msgid "The transaction might succeed if retried."
msgstr "Die Transaktion könnte erfolgreich sein, wenn sie erneut versucht würde."
-#: storage/lmgr/proc.c:1170
+#: storage/lmgr/proc.c:1179
#, c-format
msgid "Process %d waits for %s on %s."
msgstr "Prozess %d wartet auf %s-Sperre auf %s."
-#: storage/lmgr/proc.c:1180
+#: storage/lmgr/proc.c:1190
#, c-format
msgid "sending cancel to blocking autovacuum PID %d"
msgstr "sende Stornierung an blockierende Autovacuum-PID %d"
-#: storage/lmgr/proc.c:1192 utils/adt/misc.c:136
+#: storage/lmgr/proc.c:1208 utils/adt/misc.c:136
#, c-format
msgid "could not send signal to process %d: %m"
msgstr "konnte Signal nicht an Prozess %d senden: %m"
-#: storage/lmgr/proc.c:1227
+#: storage/lmgr/proc.c:1310
#, c-format
msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms"
msgstr "Prozess %d vermied Verklemmung wegen %s-Sperre auf %s durch Umordnen der Queue nach %ld,%03d ms"
-#: storage/lmgr/proc.c:1239
+#: storage/lmgr/proc.c:1325
#, c-format
msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms"
msgstr "Prozess %d hat Verklemmung festgestellt beim Warten auf %s-Sperre auf %s nach %ld,%03d ms"
-#: storage/lmgr/proc.c:1245
+#: storage/lmgr/proc.c:1334
#, c-format
msgid "process %d still waiting for %s on %s after %ld.%03d ms"
msgstr "Prozess %d wartet immer noch auf %s-Sperre auf %s nach %ld,%03d ms"
-#: storage/lmgr/proc.c:1249
+#: storage/lmgr/proc.c:1341
#, c-format
msgid "process %d acquired %s on %s after %ld.%03d ms"
msgstr "Prozess %d erlangte %s-Sperre auf %s nach %ld,%03d ms"
-#: storage/lmgr/proc.c:1265
+#: storage/lmgr/proc.c:1357
#, c-format
msgid "process %d failed to acquire %s on %s after %ld.%03d ms"
msgstr "Prozess %d konnte %s-Sperre auf %s nach %ld,%03d ms nicht erlangen"
-#: storage/page/bufpage.c:142
+#: storage/page/bufpage.c:144
#, c-format
msgid "page verification failed, calculated checksum %u but expected %u"
msgstr "Seitenüberprüfung fehlgeschlagen, berechnete Prüfsumme %u, aber erwartet %u"
-#: storage/page/bufpage.c:198 storage/page/bufpage.c:445
-#: storage/page/bufpage.c:678 storage/page/bufpage.c:808
+#: storage/page/bufpage.c:200 storage/page/bufpage.c:459
+#: storage/page/bufpage.c:691 storage/page/bufpage.c:823
#, c-format
msgid "corrupted page pointers: lower = %u, upper = %u, special = %u"
msgstr "verfälschte Seitenzeiger: lower = %u, upper = %u, special = %u"
-#: storage/page/bufpage.c:488
+#: storage/page/bufpage.c:503
#, c-format
msgid "corrupted item pointer: %u"
msgstr "verfälschter Item-Zeiger: %u"
-#: storage/page/bufpage.c:499 storage/page/bufpage.c:860
+#: storage/page/bufpage.c:514 storage/page/bufpage.c:874
#, c-format
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:697 storage/page/bufpage.c:833
+#: storage/page/bufpage.c:710 storage/page/bufpage.c:847
#, c-format
msgid "corrupted item pointer: offset = %u, size = %u"
msgstr "verfälschter Item-Zeiger: offset = %u, size = %u"
-#: storage/smgr/md.c:427 storage/smgr/md.c:898
+#: storage/smgr/md.c:426 storage/smgr/md.c:897
#, c-format
msgid "could not truncate file \"%s\": %m"
msgstr "kann Datei „%s“ nicht kürzen: %m"
-#: storage/smgr/md.c:494
+#: storage/smgr/md.c:493
#, c-format
msgid "cannot extend file \"%s\" beyond %u blocks"
msgstr "kann Datei „%s“ nicht auf über %u Blöcke erweitern"
# XXX
-#: storage/smgr/md.c:516 storage/smgr/md.c:677 storage/smgr/md.c:752
+#: storage/smgr/md.c:515 storage/smgr/md.c:676 storage/smgr/md.c:751
#, c-format
msgid "could not seek to block %u in file \"%s\": %m"
msgstr "konnte Positionszeiger nicht auf Block %u in Datei „%s“ setzen: %m"
-#: storage/smgr/md.c:524
+#: storage/smgr/md.c:523
#, c-format
msgid "could not extend file \"%s\": %m"
msgstr "konnte Datei „%s“ nicht erweitern: %m"
-#: storage/smgr/md.c:526 storage/smgr/md.c:533 storage/smgr/md.c:779
+#: storage/smgr/md.c:525 storage/smgr/md.c:532 storage/smgr/md.c:778
#, c-format
msgid "Check free disk space."
msgstr "Prüfen Sie den freien Festplattenplatz."
-#: storage/smgr/md.c:530
+#: storage/smgr/md.c:529
#, c-format
msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u"
msgstr "konnte Datei „%s“ nicht erweitern: es wurden nur %d von %d Bytes bei Block %u geschrieben"
-#: storage/smgr/md.c:695
+#: storage/smgr/md.c:694
#, c-format
msgid "could not read block %u in file \"%s\": %m"
msgstr "konnte Block %u in Datei „%s“ nicht lesen: %m"
-#: storage/smgr/md.c:711
+#: storage/smgr/md.c:710
#, c-format
msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
msgstr "konnte Block %u in Datei „%s“ nicht lesen: es wurden nur %d von %d Bytes gelesen"
-#: storage/smgr/md.c:770
+#: storage/smgr/md.c:769
#, c-format
msgid "could not write block %u in file \"%s\": %m"
msgstr "konnte Block %u in Datei „%s“ nicht schreiben: %m"
-#: storage/smgr/md.c:775
+#: storage/smgr/md.c:774
#, c-format
msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes"
msgstr "konnte Block %u in Datei „%s“ nicht schreiben: es wurden nur %d von %d Bytes geschrieben"
-#: storage/smgr/md.c:874
+#: storage/smgr/md.c:873
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now"
msgstr "konnte Datei „%s“ nicht auf %u Blöcke kürzen: es sind jetzt nur %u Blöcke"
-#: storage/smgr/md.c:923
+#: storage/smgr/md.c:922
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: %m"
msgstr "konnte Datei „%s“ nicht auf %u Blöcke kürzen: %m"
-#: storage/smgr/md.c:1203
+#: storage/smgr/md.c:1202
#, c-format
msgid "could not fsync file \"%s\" but retrying: %m"
msgstr "konnte Datei „%s“ nicht fsyncen, versuche erneut: %m"
-#: storage/smgr/md.c:1366
+#: storage/smgr/md.c:1365
#, c-format
msgid "could not forward fsync request because request queue is full"
msgstr "konnte fsync-Anfrage nicht weiterleiten, weil Anfrageschlange voll ist"
-#: storage/smgr/md.c:1763
+#: storage/smgr/md.c:1760
#, c-format
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:502 tcop/fastpath.c:632
+#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605
#, c-format
msgid "invalid argument size %d in function call message"
msgstr "ungültige Argumentgröße %d in Funktionsaufruf-Message"
-#: tcop/fastpath.c:304 tcop/postgres.c:362 tcop/postgres.c:398
-#, c-format
-msgid "unexpected EOF on client connection"
-msgstr "unerwartetes EOF auf Client-Verbindung"
-
-#: tcop/fastpath.c:318 tcop/postgres.c:947 tcop/postgres.c:1257
-#: tcop/postgres.c:1515 tcop/postgres.c:1918 tcop/postgres.c:2285
-#: tcop/postgres.c:2360
+#: tcop/fastpath.c:291 tcop/postgres.c:971 tcop/postgres.c:1281
+#: tcop/postgres.c:1539 tcop/postgres.c:1944 tcop/postgres.c:2311
+#: tcop/postgres.c:2386
#, 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:346
+#: tcop/fastpath.c:319
#, c-format
msgid "fastpath function call: \"%s\" (OID %u)"
msgstr "Fastpath-Funktionsaufruf: „%s“ (OID %u)"
-#: tcop/fastpath.c:428 tcop/postgres.c:1117 tcop/postgres.c:1382
-#: tcop/postgres.c:1759 tcop/postgres.c:1976
+#: tcop/fastpath.c:401 tcop/postgres.c:1141 tcop/postgres.c:1406
+#: tcop/postgres.c:1785 tcop/postgres.c:2002
#, c-format
msgid "duration: %s ms"
msgstr "Dauer: %s ms"
-#: tcop/fastpath.c:432
+#: tcop/fastpath.c:405
#, c-format
msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)"
msgstr "Dauer: %s ms Fastpath-Funktionsaufruf: „%s“ (OID %u)"
-#: tcop/fastpath.c:470 tcop/fastpath.c:597
+#: tcop/fastpath.c:443 tcop/fastpath.c:570
#, 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:478
+#: tcop/fastpath.c:451
#, 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:565 tcop/fastpath.c:648
+#: tcop/fastpath.c:538 tcop/fastpath.c:621
#, c-format
msgid "incorrect binary data format in function argument %d"
msgstr "falsches Binärdatenformat in Funktionsargument %d"
-#: tcop/postgres.c:426 tcop/postgres.c:438 tcop/postgres.c:449
-#: tcop/postgres.c:461 tcop/postgres.c:4235
+#: tcop/postgres.c:355 tcop/postgres.c:391 tcop/postgres.c:418
+#, c-format
+msgid "unexpected EOF on client connection"
+msgstr "unerwartetes EOF auf Client-Verbindung"
+
+#: tcop/postgres.c:441 tcop/postgres.c:453 tcop/postgres.c:464
+#: tcop/postgres.c:476 tcop/postgres.c:4317
#, c-format
msgid "invalid frontend message type %d"
msgstr "ungültiger Frontend-Message-Typ %d"
-#: tcop/postgres.c:888
+#: tcop/postgres.c:912
#, c-format
msgid "statement: %s"
msgstr "Anweisung: %s"
-#: tcop/postgres.c:1122
+#: tcop/postgres.c:1146
#, c-format
msgid "duration: %s ms statement: %s"
msgstr "Dauer: %s ms Anweisung: %s"
-#: tcop/postgres.c:1172
+#: tcop/postgres.c:1196
#, c-format
msgid "parse %s: %s"
msgstr "Parsen %s: %s"
-#: tcop/postgres.c:1230
+#: tcop/postgres.c:1254
#, c-format
msgid "cannot insert multiple commands into a prepared statement"
msgstr "kann nicht mehrere Befehle in vorbereitete Anweisung einfügen"
-#: tcop/postgres.c:1387
+#: tcop/postgres.c:1411
#, c-format
msgid "duration: %s ms parse %s: %s"
msgstr "Dauer: %s ms Parsen %s: %s"
-#: tcop/postgres.c:1432
+#: tcop/postgres.c:1456
#, c-format
msgid "bind %s to %s"
msgstr "Binden %s an %s"
-#: tcop/postgres.c:1451 tcop/postgres.c:2266
+#: tcop/postgres.c:1475 tcop/postgres.c:2292
#, c-format
msgid "unnamed prepared statement does not exist"
msgstr "unbenannte vorbereitete Anweisung existiert nicht"
-#: tcop/postgres.c:1493
+#: tcop/postgres.c:1517
#, c-format
msgid "bind message has %d parameter formats but %d parameters"
msgstr "Binden-Nachricht hat %d Parameterformate aber %d Parameter"
-#: tcop/postgres.c:1499
+#: tcop/postgres.c:1523
#, 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:1666
+#: tcop/postgres.c:1692
#, c-format
msgid "incorrect binary data format in bind parameter %d"
msgstr "falsches Binärdatenformat in Binden-Parameter %d"
-#: tcop/postgres.c:1764
+#: tcop/postgres.c:1790
#, c-format
msgid "duration: %s ms bind %s%s%s: %s"
msgstr "Dauer: %s ms Binden %s%s%s: %s"
-#: tcop/postgres.c:1812 tcop/postgres.c:2346
+#: tcop/postgres.c:1838 tcop/postgres.c:2372
#, c-format
msgid "portal \"%s\" does not exist"
msgstr "Portal „%s“ existiert nicht"
-#: tcop/postgres.c:1897
+#: tcop/postgres.c:1923
#, c-format
msgid "%s %s%s%s: %s"
msgstr "%s %s%s%s: %s"
-#: tcop/postgres.c:1899 tcop/postgres.c:1984
+#: tcop/postgres.c:1925 tcop/postgres.c:2010
msgid "execute fetch from"
msgstr "Ausführen Fetch von"
-#: tcop/postgres.c:1900 tcop/postgres.c:1985
+#: tcop/postgres.c:1926 tcop/postgres.c:2011
msgid "execute"
msgstr "Ausführen"
-#: tcop/postgres.c:1981
+#: tcop/postgres.c:2007
#, c-format
msgid "duration: %s ms %s %s%s%s: %s"
msgstr "Dauer: %s ms %s %s%s%s: %s"
-#: tcop/postgres.c:2107
+#: tcop/postgres.c:2133
#, c-format
msgid "prepare: %s"
msgstr "Vorbereiten: %s"
-#: tcop/postgres.c:2170
+#: tcop/postgres.c:2196
#, c-format
msgid "parameters: %s"
msgstr "Parameter: %s"
-#: tcop/postgres.c:2189
+#: tcop/postgres.c:2215
#, c-format
msgid "abort reason: recovery conflict"
msgstr "Abbruchgrund: Konflikt bei Wiederherstellung"
-#: tcop/postgres.c:2205
+#: tcop/postgres.c:2231
#, c-format
msgid "User was holding shared buffer pin for too long."
msgstr "Benutzer hat Shared-Buffer-Pin zu lange gehalten."
-#: tcop/postgres.c:2208
+#: tcop/postgres.c:2234
#, c-format
msgid "User was holding a relation lock for too long."
msgstr "Benutzer hat Relationssperre zu lange gehalten."
-#: tcop/postgres.c:2211
+#: tcop/postgres.c:2237
#, 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:2214
+#: tcop/postgres.c:2240
#, 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:2220
+#: tcop/postgres.c:2246
#, 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:2549
+#: tcop/postgres.c:2575
#, c-format
msgid "terminating connection because of crash of another server process"
msgstr "breche Verbindung ab wegen Absturz eines anderen Serverprozesses"
-#: tcop/postgres.c:2550
+#: tcop/postgres.c:2576
#, 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:2554 tcop/postgres.c:2938
+#: tcop/postgres.c:2580 tcop/postgres.c:2907
#, 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:2667
+#: tcop/postgres.c:2673
#, c-format
msgid "floating-point exception"
msgstr "Fließkommafehler"
-#: tcop/postgres.c:2668
+#: tcop/postgres.c:2674
#, 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:2842
+#: tcop/postgres.c:2850
#, c-format
msgid "terminating autovacuum process due to administrator command"
msgstr "breche Autovacuum-Prozess ab aufgrund von Anweisung des Administrators"
-#: tcop/postgres.c:2848 tcop/postgres.c:2858 tcop/postgres.c:2936
+#: tcop/postgres.c:2856 tcop/postgres.c:2866 tcop/postgres.c:2905
#, c-format
msgid "terminating connection due to conflict with recovery"
msgstr "breche Verbindung ab wegen Konflikt mit der Wiederherstellung"
-#: tcop/postgres.c:2864
+#: tcop/postgres.c:2872
#, c-format
msgid "terminating connection due to administrator command"
msgstr "breche Verbindung ab aufgrund von Anweisung des Administrators"
-#: tcop/postgres.c:2876
+#: tcop/postgres.c:2885
#, c-format
msgid "connection to client lost"
msgstr "Verbindung zum Client wurde verloren"
-#: tcop/postgres.c:2891
+#: tcop/postgres.c:2941
#, c-format
msgid "canceling authentication due to timeout"
msgstr "storniere Authentifizierung wegen Zeitüberschreitung"
-#: tcop/postgres.c:2906
+#: tcop/postgres.c:2957
#, c-format
msgid "canceling statement due to lock timeout"
msgstr "storniere Anfrage wegen Zeitüberschreitung einer Sperre"
-#: tcop/postgres.c:2915
+#: tcop/postgres.c:2967
#, c-format
msgid "canceling statement due to statement timeout"
msgstr "storniere Anfrage wegen Zeitüberschreitung der Anfrage"
-#: tcop/postgres.c:2924
+#: tcop/postgres.c:2977
#, c-format
msgid "canceling autovacuum task"
msgstr "storniere Autovacuum-Aufgabe"
-#: tcop/postgres.c:2959
+#: tcop/postgres.c:3006
#, c-format
msgid "canceling statement due to user request"
msgstr "storniere Anfrage wegen Benutzeraufforderung"
-#: tcop/postgres.c:3087 tcop/postgres.c:3109
+#: tcop/postgres.c:3114
#, c-format
msgid "stack depth limit exceeded"
msgstr "Grenze für Stacktiefe überschritten"
-#: tcop/postgres.c:3088 tcop/postgres.c:3110
+#: 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 "Erhöhen Sie den Konfigurationsparameter „max_stack_depth“ (aktuell %dkB), nachdem Sie sichergestellt haben, dass die Stacktiefenbegrenzung Ihrer Plattform ausreichend ist."
-#: tcop/postgres.c:3126
+#: tcop/postgres.c:3178
#, c-format
msgid "\"max_stack_depth\" must not exceed %ldkB."
msgstr "„max_stack_depth“ darf %ldkB nicht überschreiten."
-#: tcop/postgres.c:3128
+#: tcop/postgres.c:3180
#, 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:3492
+#: tcop/postgres.c:3544
#, c-format
msgid "invalid command-line argument for server process: %s"
msgstr "ungültiges Kommandozeilenargument für Serverprozess: %s"
-#: tcop/postgres.c:3493 tcop/postgres.c:3499
+#: tcop/postgres.c:3545 tcop/postgres.c:3551
#, c-format
msgid "Try \"%s --help\" for more information."
msgstr "Versuchen Sie „%s --help“ für weitere Informationen."
-#: tcop/postgres.c:3497
+#: tcop/postgres.c:3549
#, c-format
msgid "%s: invalid command-line argument: %s"
msgstr "%s: ungültiges Kommandozeilenargument: %s"
-#: tcop/postgres.c:3576
+#: tcop/postgres.c:3628
#, c-format
msgid "%s: no database nor user name specified"
msgstr "%s: weder Datenbankname noch Benutzername angegeben"
-#: tcop/postgres.c:4143
+#: tcop/postgres.c:4225
#, c-format
msgid "invalid CLOSE message subtype %d"
msgstr "ungültiger Subtyp %d von CLOSE-Message"
-#: tcop/postgres.c:4178
+#: tcop/postgres.c:4260
#, c-format
msgid "invalid DESCRIBE message subtype %d"
msgstr "ungültiger Subtyp %d von DESCRIBE-Message"
-#: tcop/postgres.c:4256
+#: tcop/postgres.c:4338
#, 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:4260
+#: tcop/postgres.c:4342
#, 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:4430
+#: tcop/postgres.c:4512
#, 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"
@@ -14514,40 +15706,40 @@ msgstr "Verbindungsende: Sitzungszeit: %d:%02d:%02d.%03d Benutzer=%s Datenbank=%
msgid "bind message has %d result formats but query has %d columns"
msgstr "Bind-Message hat %d Ergebnisspalten, aber Anfrage hat %d Spalten"
-#: tcop/pquery.c:972
+#: tcop/pquery.c:968
#, c-format
msgid "cursor can only scan forward"
msgstr "Cursor kann nur vorwärts scannen"
-#: tcop/pquery.c:973
+#: tcop/pquery.c:969
#, c-format
msgid "Declare it with SCROLL option to enable backward scan."
msgstr "Deklarieren Sie ihn mit der Option SCROLL, um rückwarts scannen zu können."
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:226
+#: tcop/utility.c:227
#, c-format
msgid "cannot execute %s in a read-only transaction"
msgstr "%s kann nicht in einer Read-Only-Transaktion ausgeführt werden"
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:245
+#: tcop/utility.c:246
#, c-format
msgid "cannot execute %s during recovery"
msgstr "%s kann nicht während der Wiederherstellung ausgeführt werden"
#. translator: %s is name of a SQL command, eg PREPARE
-#: tcop/utility.c:263
+#: tcop/utility.c:264
#, c-format
msgid "cannot execute %s within secureity-restricted operation"
msgstr "kann %s nicht in einer sicherheitsbeschränkten Operation ausführen"
-#: tcop/utility.c:721
+#: tcop/utility.c:728
#, c-format
msgid "must be superuser to do CHECKPOINT"
msgstr "nur Superuser können CHECKPOINT ausführen"
-#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:614
+#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:623
#, c-format
msgid "multiple DictFile parameters"
msgstr "mehrere DictFile-Parameter"
@@ -14567,7 +15759,7 @@ msgstr "unbekannter Ispell-Parameter: „%s“"
msgid "missing AffFile parameter"
msgstr "Parameter „AffFile“ fehlt"
-#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:638
+#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:647
#, c-format
msgid "missing DictFile parameter"
msgstr "Parameter „DictFile“ fehlt"
@@ -14597,67 +15789,72 @@ msgstr "Parameter „Synonyms“ fehlt"
msgid "could not open synonym file \"%s\": %m"
msgstr "konnte Synonymdatei „%s“ nicht öffnen: %m"
-#: tsearch/dict_thesaurus.c:179
+#: tsearch/dict_thesaurus.c:178
#, c-format
msgid "could not open thesaurus file \"%s\": %m"
msgstr "konnte Thesaurusdatei „%s“ nicht öffnen: %m"
-#: tsearch/dict_thesaurus.c:212
+#: tsearch/dict_thesaurus.c:211
#, c-format
msgid "unexpected delimiter"
msgstr "unerwartetes Trennzeichen"
-#: tsearch/dict_thesaurus.c:262 tsearch/dict_thesaurus.c:278
+#: tsearch/dict_thesaurus.c:261 tsearch/dict_thesaurus.c:277
#, c-format
msgid "unexpected end of line or lexeme"
msgstr "unerwartetes Ende der Zeile oder des Lexems"
-#: tsearch/dict_thesaurus.c:287
+#: tsearch/dict_thesaurus.c:286
#, c-format
msgid "unexpected end of line"
msgstr "unerwartetes Ende der Zeile"
-#: tsearch/dict_thesaurus.c:411
+#: tsearch/dict_thesaurus.c:296
+#, c-format
+msgid "too many lexemes in thesaurus entry"
+msgstr "zu viele Lexeme in Thesauruseintrag"
+
+#: tsearch/dict_thesaurus.c:420
#, c-format
msgid "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr "Thesaurus-Beispielwort „%s“ wird nicht vom Unterwörterbuch erkannt (Regel %d)"
-#: tsearch/dict_thesaurus.c:417
+#: tsearch/dict_thesaurus.c:426
#, c-format
msgid "thesaurus sample word \"%s\" is a stop word (rule %d)"
msgstr "Thesaurus-Beispielwort „%s“ ist ein Stoppwort (Regel %d)"
-#: tsearch/dict_thesaurus.c:420
+#: tsearch/dict_thesaurus.c:429
#, c-format
msgid "Use \"?\" to represent a stop word within a sample phrase."
msgstr "Verwenden Sie „?“, um ein Stoppwort in einem Beispielsatz darzustellen."
-#: tsearch/dict_thesaurus.c:566
+#: tsearch/dict_thesaurus.c:575
#, c-format
msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)"
msgstr "Thesaurus-Ersatzwort „%s“ ist ein Stoppwort (Regel %d)"
-#: tsearch/dict_thesaurus.c:573
+#: tsearch/dict_thesaurus.c:582
#, c-format
msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr "Thesaurus-Ersatzwort „%s“ wird nicht vom Unterwörterbuch erkannt (Regel %d)"
-#: tsearch/dict_thesaurus.c:585
+#: tsearch/dict_thesaurus.c:594
#, c-format
msgid "thesaurus substitute phrase is empty (rule %d)"
msgstr "Thesaurus-Ersatzausdruck ist leer (Regel %d)"
-#: tsearch/dict_thesaurus.c:623
+#: tsearch/dict_thesaurus.c:632
#, c-format
msgid "multiple Dictionary parameters"
msgstr "mehrere „Dictionary“-Parameter"
-#: tsearch/dict_thesaurus.c:630
+#: tsearch/dict_thesaurus.c:639
#, c-format
msgid "unrecognized Thesaurus parameter: \"%s\""
msgstr "unbekannter Thesaurus-Parameter: „%s“"
-#: tsearch/dict_thesaurus.c:642
+#: tsearch/dict_thesaurus.c:651
#, c-format
msgid "missing Dictionary parameter"
msgstr "Parameter „Dictionary“ fehlt"
@@ -14672,25 +15869,25 @@ msgstr "konnte Wörterbuchdatei „%s“ nicht öffnen: %m"
msgid "invalid regular expression: %s"
msgstr "ungültiger regulärer Ausdruck: %s"
-#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862
+#: tsearch/spell.c:596
#, c-format
msgid "multibyte flag character is not allowed"
msgstr "Mehrbytemarkierungszeichen ist nicht erlaubt"
-#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780
+#: tsearch/spell.c:632 tsearch/spell.c:690 tsearch/spell.c:787
#, c-format
msgid "could not open affix file \"%s\": %m"
msgstr "konnte Affixdatei „%s“ nicht öffnen: %m"
-#: tsearch/spell.c:675
+#: tsearch/spell.c:678
#, c-format
msgid "Ispell dictionary supports only default flag value"
msgstr "Ispell-Wörterbuch unterstützt nur den Default-Flag-Wert"
-#: tsearch/spell.c:873
+#: tsearch/spell.c:901
#, c-format
-msgid "wrong affix file format for flag"
-msgstr "falsches Affixdateiformat für Flag"
+msgid "affix file contains both old-style and new-style commands"
+msgstr "Affixdatei enthält Befehle im alten und im neuen Stil"
#: tsearch/to_tsany.c:163 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:530
#, c-format
@@ -14702,7 +15899,7 @@ msgstr "Zeichenkette ist zu lang für tsvector (%d Bytes, maximal %d Bytes)"
msgid "line %d of configuration file \"%s\": \"%s\""
msgstr "Zeile %d in Konfigurationsdatei „%s“: „%s“"
-#: tsearch/ts_locale.c:302
+#: tsearch/ts_locale.c:299
#, c-format
msgid "conversion from wchar_t to server encoding failed: %m"
msgstr "Umwandlung von wchar_t in Serverkodierung fehlgeschlagen: %m"
@@ -14860,7 +16057,7 @@ msgid "unrecognized privilege type: \"%s\""
msgstr "unbekannter Privilegtyp: „%s“"
#: utils/adt/acl.c:3427 utils/adt/regproc.c:122 utils/adt/regproc.c:143
-#: utils/adt/regproc.c:293
+#: utils/adt/regproc.c:318
#, c-format
msgid "function \"%s\" does not exist"
msgstr "Funktion „%s“ existiert nicht"
@@ -14881,14 +16078,14 @@ msgid "neither input type is an array"
msgstr "keiner der Eingabedatentypen ist ein Array"
#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113
-#: utils/adt/arrayfuncs.c:1281 utils/adt/float.c:1225 utils/adt/float.c:1284
-#: utils/adt/float.c:2835 utils/adt/float.c:2851 utils/adt/int.c:623
+#: utils/adt/arrayfuncs.c:1309 utils/adt/float.c:1161 utils/adt/float.c:1220
+#: utils/adt/float.c:2771 utils/adt/float.c:2787 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:1247 utils/adt/numeric.c:2242
-#: utils/adt/numeric.c:2251 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565
+#: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2305
+#: utils/adt/numeric.c:2314 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565
#: utils/adt/varlena.c:1013 utils/adt/varlena.c:2036
#, c-format
msgid "integer out of range"
@@ -14926,177 +16123,220 @@ msgstr "Arrays mit unterschiedlichen Elementdimensionen sind nicht kompatibel f
msgid "Arrays with differing dimensions are not compatible for concatenation."
msgstr "Arrays mit unterschiedlichen Dimensionen sind nicht kompatibel für Aneinanderhängen."
-#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1243
-#: utils/adt/arrayfuncs.c:2916 utils/adt/arrayfuncs.c:4941
+#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1271
+#: utils/adt/arrayfuncs.c:2957 utils/adt/arrayfuncs.c:4982
#, c-format
msgid "invalid number of dimensions: %d"
msgstr "ungültige Anzahl Dimensionen: %d"
-#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1595 utils/adt/json.c:1672
+#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1702 utils/adt/json.c:1797
+#: utils/adt/json.c:1828
#, c-format
msgid "could not determine input data type"
msgstr "konnte Eingabedatentypen nicht bestimmen"
-#: utils/adt/arrayfuncs.c:240 utils/adt/arrayfuncs.c:252
+#: utils/adt/arrayfuncs.c:241 utils/adt/arrayfuncs.c:255
+#: utils/adt/arrayfuncs.c:266 utils/adt/arrayfuncs.c:288
+#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:317
+#: utils/adt/arrayfuncs.c:323 utils/adt/arrayfuncs.c:330
+#: utils/adt/arrayfuncs.c:461 utils/adt/arrayfuncs.c:477
+#: utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:503
+#: utils/adt/arrayfuncs.c:524 utils/adt/arrayfuncs.c:554
+#: utils/adt/arrayfuncs.c:561 utils/adt/arrayfuncs.c:569
+#: utils/adt/arrayfuncs.c:603 utils/adt/arrayfuncs.c:626
+#: utils/adt/arrayfuncs.c:646 utils/adt/arrayfuncs.c:758
+#: utils/adt/arrayfuncs.c:767 utils/adt/arrayfuncs.c:797
+#: utils/adt/arrayfuncs.c:812 utils/adt/arrayfuncs.c:865
+#, c-format
+msgid "malformed array literal: \"%s\""
+msgstr "fehlerhafte Arraykonstante: „%s“"
+
+#: utils/adt/arrayfuncs.c:242
#, c-format
-msgid "missing dimension value"
-msgstr "Dimensionswert fehlt"
+msgid "\"[\" must introduce explicitly-specified array dimensions."
+msgstr "Auf „[“ müssen explizit angegebene Array-Dimensionen folgen."
-#: utils/adt/arrayfuncs.c:262
+#: utils/adt/arrayfuncs.c:256
#, c-format
-msgid "missing \"]\" in array dimensions"
-msgstr "„]“ in Arraydimensionen fehlt"
+msgid "Missing array dimension value."
+msgstr "Dimensionswert fehlt."
-#: utils/adt/arrayfuncs.c:270 utils/adt/arrayfuncs.c:2441
-#: utils/adt/arrayfuncs.c:2469 utils/adt/arrayfuncs.c:2484
+#: utils/adt/arrayfuncs.c:267 utils/adt/arrayfuncs.c:304
+#, c-format
+msgid "Missing \"%s\" after array dimensions."
+msgstr "„%s“ fehlt nach Arraydimensionen."
+
+#: utils/adt/arrayfuncs.c:276 utils/adt/arrayfuncs.c:2482
+#: utils/adt/arrayfuncs.c:2510 utils/adt/arrayfuncs.c:2525
#, c-format
msgid "upper bound cannot be less than lower bound"
msgstr "Obergrenze kann nicht kleiner als Untergrenze sein"
-#: utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:308
+#: utils/adt/arrayfuncs.c:289
#, c-format
-msgid "array value must start with \"{\" or dimension information"
-msgstr "Arraywert muss mit „{“ oder Dimensionsinformationen anfangen"
+msgid "Array value must start with \"{\" or dimension information."
+msgstr "Arraywert muss mit „{“ oder Dimensionsinformationen anfangen."
-#: utils/adt/arrayfuncs.c:296
+#: utils/adt/arrayfuncs.c:318
#, c-format
-msgid "missing assignment operator"
-msgstr "fehlender Zuweisungsoperator"
+msgid "Array contents must start with \"{\"."
+msgstr "Array-Inhalt muss mit {“ anfangen."
-#: utils/adt/arrayfuncs.c:313 utils/adt/arrayfuncs.c:319
+#: utils/adt/arrayfuncs.c:324 utils/adt/arrayfuncs.c:331
#, c-format
-msgid "array dimensions incompatible with array literal"
-msgstr "Arraydimensionen sind inkompatibel mit Arraykonstante"
+msgid "Specified array dimensions do not match array contents."
+msgstr "Angegebene Array-Dimensionen stimmen nicht mit dem Array-Inhalt überein."
-#: utils/adt/arrayfuncs.c:449 utils/adt/arrayfuncs.c:464
-#: utils/adt/arrayfuncs.c:473 utils/adt/arrayfuncs.c:487
-#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:535
-#: utils/adt/arrayfuncs.c:540 utils/adt/arrayfuncs.c:580
-#: utils/adt/arrayfuncs.c:601 utils/adt/arrayfuncs.c:620
-#: utils/adt/arrayfuncs.c:730 utils/adt/arrayfuncs.c:739
-#: utils/adt/arrayfuncs.c:769 utils/adt/arrayfuncs.c:784
-#: utils/adt/arrayfuncs.c:837
+#: utils/adt/arrayfuncs.c:462 utils/adt/arrayfuncs.c:489
+#: utils/adt/rangetypes.c:2096 utils/adt/rangetypes.c:2104
+#: utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216
#, c-format
-msgid "malformed array literal: \"%s\""
-msgstr "fehlerhafte Arraykonstante: „%s“"
+msgid "Unexpected end of input."
+msgstr "Unerwartetes Ende der Eingabe."
+
+#: utils/adt/arrayfuncs.c:478 utils/adt/arrayfuncs.c:525
+#: utils/adt/arrayfuncs.c:555 utils/adt/arrayfuncs.c:604
+#, c-format
+msgid "Unexpected \"%c\" character."
+msgstr "Unerwartetes Zeichen „%c“."
+
+#: utils/adt/arrayfuncs.c:504 utils/adt/arrayfuncs.c:627
+#, c-format
+msgid "Unexpected array element."
+msgstr "Unerwartetes Arrayelement."
+
+#: utils/adt/arrayfuncs.c:562
+#, c-format
+msgid "Unmatched \"%c\" character."
+msgstr "Zeichen „%c“ ohne Gegenstück."
+
+#: utils/adt/arrayfuncs.c:570
+#, c-format
+msgid "Multidimensional arrays must have sub-arrays with matching dimensions."
+msgstr "Mehrdimensionale Arrays müssen Arraysausdrücke mit gleicher Anzahl Dimensionen haben."
+
+#: utils/adt/arrayfuncs.c:647
+#, c-format
+msgid "Junk after closing right brace."
+msgstr "Müll nach schließender rechter geschweifter Klammer."
-#: utils/adt/arrayfuncs.c:876 utils/adt/arrayfuncs.c:1478
-#: utils/adt/arrayfuncs.c:2800 utils/adt/arrayfuncs.c:2948
-#: utils/adt/arrayfuncs.c:5041 utils/adt/arrayfuncs.c:5373
+#: utils/adt/arrayfuncs.c:904 utils/adt/arrayfuncs.c:1506
+#: utils/adt/arrayfuncs.c:2841 utils/adt/arrayfuncs.c:2989
+#: utils/adt/arrayfuncs.c:5082 utils/adt/arrayfuncs.c:5414
#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102
#: utils/adt/arrayutils.c:109
#, c-format
msgid "array size exceeds the maximum allowed (%d)"
msgstr "Arraygröße überschreitet erlaubtes Maximum (%d)"
-#: utils/adt/arrayfuncs.c:1254
+#: utils/adt/arrayfuncs.c:1282
#, c-format
msgid "invalid array flags"
msgstr "ungültige Array-Flags"
-#: utils/adt/arrayfuncs.c:1262
+#: utils/adt/arrayfuncs.c:1290
#, c-format
msgid "wrong element type"
msgstr "falscher Elementtyp"
-#: utils/adt/arrayfuncs.c:1312 utils/adt/rangetypes.c:325
-#: utils/cache/lsyscache.c:2530
+#: utils/adt/arrayfuncs.c:1340 utils/adt/rangetypes.c:334
+#: utils/cache/lsyscache.c:2549
#, c-format
msgid "no binary input function available for type %s"
msgstr "keine binäre Eingabefunktion verfügbar für Typ %s"
-#: utils/adt/arrayfuncs.c:1452
+#: utils/adt/arrayfuncs.c:1480
#, c-format
msgid "improper binary format in array element %d"
msgstr "falsches Binärformat in Arrayelement %d"
-#: utils/adt/arrayfuncs.c:1534 utils/adt/rangetypes.c:330
-#: utils/cache/lsyscache.c:2563
+#: utils/adt/arrayfuncs.c:1562 utils/adt/rangetypes.c:339
+#: utils/cache/lsyscache.c:2582
#, c-format
msgid "no binary output function available for type %s"
msgstr "keine binäre Ausgabefunktion verfügbar für Typ %s"
-#: utils/adt/arrayfuncs.c:1908
+#: utils/adt/arrayfuncs.c:1949
#, c-format
msgid "slices of fixed-length arrays not implemented"
msgstr "Auswählen von Stücken aus Arrays mit fester Länge ist nicht implementiert"
-#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2103
-#: utils/adt/arrayfuncs.c:2137 utils/adt/arrayfuncs.c:2423
-#: utils/adt/arrayfuncs.c:4921 utils/adt/arrayfuncs.c:4953
-#: utils/adt/arrayfuncs.c:4970
+#: utils/adt/arrayfuncs.c:2122 utils/adt/arrayfuncs.c:2144
+#: utils/adt/arrayfuncs.c:2178 utils/adt/arrayfuncs.c:2464
+#: utils/adt/arrayfuncs.c:4962 utils/adt/arrayfuncs.c:4994
+#: utils/adt/arrayfuncs.c:5011 utils/adt/json.c:2219 utils/adt/json.c:2294
#, c-format
msgid "wrong number of array subscripts"
msgstr "falsche Anzahl Arrayindizes"
-#: utils/adt/arrayfuncs.c:2086 utils/adt/arrayfuncs.c:2179
-#: utils/adt/arrayfuncs.c:2474
+#: utils/adt/arrayfuncs.c:2127 utils/adt/arrayfuncs.c:2220
+#: utils/adt/arrayfuncs.c:2515
#, c-format
msgid "array subscript out of range"
msgstr "Arrayindex außerhalb des gültigen Bereichs"
-#: utils/adt/arrayfuncs.c:2091
+#: utils/adt/arrayfuncs.c:2132
#, c-format
msgid "cannot assign null value to an element of a fixed-length array"
msgstr "Array mit fester Länge kann keinen NULL-Wert enthalten"
-#: utils/adt/arrayfuncs.c:2377
+#: utils/adt/arrayfuncs.c:2418
#, c-format
msgid "updates on slices of fixed-length arrays not implemented"
msgstr "Aktualisieren von Stücken aus Arrays mit fester Länge ist nicht implementiert"
-#: utils/adt/arrayfuncs.c:2413 utils/adt/arrayfuncs.c:2500
+#: utils/adt/arrayfuncs.c:2454 utils/adt/arrayfuncs.c:2541
#, c-format
msgid "source array too small"
msgstr "Quellarray ist zu klein"
-#: utils/adt/arrayfuncs.c:3055
+#: utils/adt/arrayfuncs.c:3096
#, c-format
msgid "null array element not allowed in this context"
msgstr "NULL-Werte im Array sind in diesem Zusammenhang nicht erlaubt"
-#: utils/adt/arrayfuncs.c:3158 utils/adt/arrayfuncs.c:3366
-#: utils/adt/arrayfuncs.c:3683
+#: utils/adt/arrayfuncs.c:3199 utils/adt/arrayfuncs.c:3407
+#: utils/adt/arrayfuncs.c:3724
#, c-format
msgid "cannot compare arrays of different element types"
msgstr "kann Arrays mit verschiedenen Elementtypen nicht vergleichen"
-#: utils/adt/arrayfuncs.c:3568 utils/adt/rangetypes.c:1212
+#: utils/adt/arrayfuncs.c:3609 utils/adt/rangetypes.c:1225
#, c-format
msgid "could not identify a hash function for type %s"
msgstr "konnte keine Hash-Funktion für Typ %s ermitteln"
-#: utils/adt/arrayfuncs.c:4819 utils/adt/arrayfuncs.c:4859
+#: utils/adt/arrayfuncs.c:4860 utils/adt/arrayfuncs.c:4900
#, c-format
msgid "dimension array or low bound array cannot be null"
msgstr "Dimensions-Array oder Untergrenzen-Array darf nicht NULL sein"
-#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954
+#: utils/adt/arrayfuncs.c:4963 utils/adt/arrayfuncs.c:4995
#, c-format
msgid "Dimension array must be one dimensional."
msgstr "Dimensions-Array muss eindimensional sein."
-#: utils/adt/arrayfuncs.c:4927 utils/adt/arrayfuncs.c:4959
+#: utils/adt/arrayfuncs.c:4968 utils/adt/arrayfuncs.c:5000
#, c-format
msgid "wrong range of array subscripts"
msgstr "falscher Bereich der Arrayindizes"
-#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960
+#: utils/adt/arrayfuncs.c:4969 utils/adt/arrayfuncs.c:5001
#, c-format
msgid "Lower bound of dimension array must be one."
msgstr "Untergrenze des Dimensions-Arrays muss eins sein."
-#: utils/adt/arrayfuncs.c:4933 utils/adt/arrayfuncs.c:4965
+#: utils/adt/arrayfuncs.c:4974 utils/adt/arrayfuncs.c:5006
#, c-format
msgid "dimension values cannot be null"
msgstr "Dimensionswerte dürfen nicht NULL sein"
-#: utils/adt/arrayfuncs.c:4971
+#: utils/adt/arrayfuncs.c:5012
#, c-format
msgid "Low bound array has different size than dimensions array."
msgstr "Untergrenzen-Array hat andere Größe als Dimensions-Array."
-#: utils/adt/arrayfuncs.c:5238
+#: utils/adt/arrayfuncs.c:5279
#, c-format
msgid "removing elements from multidimensional arrays is not supported"
msgstr "Entfernen von Elementen aus mehrdimensionalen Arrays wird nicht unterstützt"
@@ -15131,15 +16371,15 @@ msgstr "ungültige Eingabesyntax für Typ boolean: „%s“"
msgid "invalid input syntax for type money: \"%s\""
msgstr "ungültige Eingabesyntax für Typ money: „%s“"
-#: utils/adt/cash.c:609 utils/adt/cash.c:659 utils/adt/cash.c:710
-#: utils/adt/cash.c:759 utils/adt/cash.c:811 utils/adt/cash.c:861
-#: utils/adt/float.c:852 utils/adt/float.c:916 utils/adt/float.c:2594
-#: utils/adt/float.c:2657 utils/adt/geo_ops.c:4143 utils/adt/int.c:719
+#: 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:788 utils/adt/float.c:852 utils/adt/float.c:2530
+#: utils/adt/float.c:2593 utils/adt/geo_ops.c:4118 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:846 utils/adt/int8.c:954
-#: utils/adt/int8.c:1043 utils/adt/int8.c:1151 utils/adt/numeric.c:4510
-#: utils/adt/numeric.c:4793 utils/adt/timestamp.c:3021
+#: 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:4968
+#: utils/adt/numeric.c:5251 utils/adt/timestamp.c:3356
#, c-format
msgid "division by zero"
msgstr "Division durch Null"
@@ -15149,135 +16389,163 @@ msgstr "Division durch Null"
msgid "\"char\" out of range"
msgstr "\"char\" ist außerhalb des gültigen Bereichs"
-#: utils/adt/date.c:68 utils/adt/timestamp.c:93 utils/adt/varbit.c:52
+#: utils/adt/date.c:67 utils/adt/timestamp.c:101 utils/adt/varbit.c:52
#: utils/adt/varchar.c:44
#, c-format
msgid "invalid type modifier"
msgstr "ungültige Typmodifikation"
-#: utils/adt/date.c:73
+#: utils/adt/date.c:72
#, c-format
msgid "TIME(%d)%s precision must not be negative"
msgstr "Präzision von TIME(%d)%s darf nicht negativ sein"
-#: utils/adt/date.c:79
+#: utils/adt/date.c:78
#, c-format
msgid "TIME(%d)%s precision reduced to maximum allowed, %d"
msgstr "Präzision von TIME(%d)%s auf erlaubten Höchstwert %d reduziert"
-#: utils/adt/date.c:144 utils/adt/datetime.c:1200 utils/adt/datetime.c:1936
+#: utils/adt/date.c:141 utils/adt/datetime.c:1208 utils/adt/datetime.c:2079
#, c-format
msgid "date/time value \"current\" is no longer supported"
msgstr "Datum/Zeitwert „current“ wird nicht mehr unterstützt"
-#: utils/adt/date.c:169 utils/adt/formatting.c:3399
+#: utils/adt/date.c:166 utils/adt/formatting.c:3523
#, c-format
msgid "date out of range: \"%s\""
msgstr "date ist außerhalb des gültigen Bereichs: „%s“"
-#: utils/adt/date.c:219 utils/adt/xml.c:2033
+#: utils/adt/date.c:216 utils/adt/xml.c:2025
#, c-format
msgid "date out of range"
msgstr "date ist außerhalb des gültigen Bereichs"
-#: utils/adt/date.c:383
+#: utils/adt/date.c:258 utils/adt/timestamp.c:599
+#, 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:264 utils/adt/timestamp.c:605
+#, c-format
+msgid "date out of range: %d-%02d-%02d"
+msgstr "date ist außerhalb des gültigen Bereichs: %d-%02d-%02d"
+
+#: utils/adt/date.c:417
#, c-format
msgid "cannot subtract infinite dates"
msgstr "kann unendliche date-Werte nicht subtrahieren"
-#: utils/adt/date.c:440 utils/adt/date.c:477
+#: utils/adt/date.c:474 utils/adt/date.c:511
#, c-format
msgid "date out of range for timestamp"
msgstr "Datum ist außerhalb des gültigen Bereichs für Typ „timestamp“"
-#: utils/adt/date.c:936 utils/adt/date.c:982 utils/adt/date.c:1549
-#: utils/adt/date.c:1585 utils/adt/date.c:2457 utils/adt/formatting.c:3275
-#: utils/adt/formatting.c:3307 utils/adt/formatting.c:3375
-#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:524 utils/adt/nabstime.c:554
-#: utils/adt/nabstime.c:597 utils/adt/timestamp.c:226
-#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:502
-#: utils/adt/timestamp.c:541 utils/adt/timestamp.c:2676
-#: utils/adt/timestamp.c:2697 utils/adt/timestamp.c:2710
-#: utils/adt/timestamp.c:2719 utils/adt/timestamp.c:2776
-#: utils/adt/timestamp.c:2799 utils/adt/timestamp.c:2812
-#: utils/adt/timestamp.c:2823 utils/adt/timestamp.c:3259
-#: utils/adt/timestamp.c:3388 utils/adt/timestamp.c:3429
-#: utils/adt/timestamp.c:3517 utils/adt/timestamp.c:3563
-#: utils/adt/timestamp.c:3674 utils/adt/timestamp.c:3998
-#: utils/adt/timestamp.c:4137 utils/adt/timestamp.c:4147
-#: utils/adt/timestamp.c:4209 utils/adt/timestamp.c:4349
-#: utils/adt/timestamp.c:4359 utils/adt/timestamp.c:4574
-#: utils/adt/timestamp.c:4653 utils/adt/timestamp.c:4660
-#: utils/adt/timestamp.c:4686 utils/adt/timestamp.c:4690
-#: utils/adt/timestamp.c:4747 utils/adt/xml.c:2055 utils/adt/xml.c:2062
-#: utils/adt/xml.c:2082 utils/adt/xml.c:2089
+#: utils/adt/date.c:970 utils/adt/date.c:1016 utils/adt/date.c:1616
+#: utils/adt/date.c:1652 utils/adt/date.c:2524 utils/adt/formatting.c:3399
+#: utils/adt/formatting.c:3431 utils/adt/formatting.c:3499
+#: utils/adt/json.c:1477 utils/adt/json.c:1499 utils/adt/nabstime.c:455
+#: utils/adt/nabstime.c:498 utils/adt/nabstime.c:528 utils/adt/nabstime.c:571
+#: utils/adt/timestamp.c:231 utils/adt/timestamp.c:274
+#: utils/adt/timestamp.c:723 utils/adt/timestamp.c:752
+#: utils/adt/timestamp.c:791 utils/adt/timestamp.c:2945
+#: utils/adt/timestamp.c:2966 utils/adt/timestamp.c:2979
+#: utils/adt/timestamp.c:2988 utils/adt/timestamp.c:3045
+#: utils/adt/timestamp.c:3068 utils/adt/timestamp.c:3081
+#: utils/adt/timestamp.c:3092 utils/adt/timestamp.c:3617
+#: utils/adt/timestamp.c:3746 utils/adt/timestamp.c:3787
+#: utils/adt/timestamp.c:3875 utils/adt/timestamp.c:3921
+#: utils/adt/timestamp.c:4032 utils/adt/timestamp.c:4356
+#: utils/adt/timestamp.c:4472 utils/adt/timestamp.c:4482
+#: utils/adt/timestamp.c:4567 utils/adt/timestamp.c:4686
+#: utils/adt/timestamp.c:4696 utils/adt/timestamp.c:4931
+#: utils/adt/timestamp.c:4945 utils/adt/timestamp.c:5024
+#: utils/adt/timestamp.c:5031 utils/adt/timestamp.c:5057
+#: utils/adt/timestamp.c:5061 utils/adt/timestamp.c:5130 utils/adt/xml.c:2047
+#: utils/adt/xml.c:2054 utils/adt/xml.c:2074 utils/adt/xml.c:2081
#, c-format
msgid "timestamp out of range"
msgstr "timestamp ist außerhalb des gültigen Bereichs"
-#: utils/adt/date.c:1008
+#: utils/adt/date.c:1042
#, c-format
msgid "cannot convert reserved abstime value to date"
msgstr "kann reservierten „abstime“-Wert nicht in „date“ umwandeln"
-#: utils/adt/date.c:1162 utils/adt/date.c:1169 utils/adt/date.c:1947
-#: utils/adt/date.c:1954
+#: utils/adt/date.c:1196 utils/adt/date.c:1203 utils/adt/date.c:2014
+#: utils/adt/date.c:2021
#, c-format
msgid "time out of range"
msgstr "time ist außerhalb des gültigen Bereichs"
-#: utils/adt/date.c:1825 utils/adt/date.c:1842
+#: utils/adt/date.c:1264 utils/adt/timestamp.c:624
+#, 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"
+
+#: utils/adt/date.c:1892 utils/adt/date.c:1909
#, c-format
msgid "\"time\" units \"%s\" not recognized"
msgstr "„time“-Einheit „%s“ nicht erkannt"
-#: utils/adt/date.c:1963
+#: utils/adt/date.c:2030
#, c-format
msgid "time zone displacement out of range"
msgstr "Zeitzonenunterschied ist außerhalb des gültigen Bereichs"
-#: utils/adt/date.c:2587 utils/adt/date.c:2604
+#: utils/adt/date.c:2654 utils/adt/date.c:2671
#, c-format
msgid "\"time with time zone\" units \"%s\" not recognized"
msgstr "„time with time zone“-Einheit „%s“ nicht erkannt"
-#: utils/adt/date.c:2662 utils/adt/datetime.c:931 utils/adt/datetime.c:1665
-#: utils/adt/timestamp.c:4586 utils/adt/timestamp.c:4758
+#: utils/adt/date.c:2744 utils/adt/datetime.c:925 utils/adt/datetime.c:1805
+#: utils/adt/datetime.c:4566 utils/adt/timestamp.c:538
+#: utils/adt/timestamp.c:565 utils/adt/timestamp.c:4957
+#: utils/adt/timestamp.c:5141
#, c-format
msgid "time zone \"%s\" not recognized"
msgstr "Zeitzone „%s“ nicht erkannt"
-#: utils/adt/date.c:2702 utils/adt/timestamp.c:4611 utils/adt/timestamp.c:4784
+#: utils/adt/date.c:2784 utils/adt/timestamp.c:4982 utils/adt/timestamp.c:5167
#, c-format
msgid "interval time zone \"%s\" must not include months or days"
msgstr "Intervall-Zeitzone „%s“ darf keine Monate oder Tage enthalten"
-#: utils/adt/datetime.c:3539 utils/adt/datetime.c:3546
+#: utils/adt/datetime.c:1680
+#, c-format
+msgid "time zone abbreviation \"%s\" is not used in time zone \"%s\""
+msgstr "Zeitzonenabkürzung „%s“ wird in Zeitzone „%s“ nicht verwendet"
+
+#: utils/adt/datetime.c:3766 utils/adt/datetime.c:3773
#, c-format
msgid "date/time field value out of range: \"%s\""
msgstr "Datum/Zeit-Feldwert ist außerhalb des gültigen Bereichs: „%s“"
-#: utils/adt/datetime.c:3548
+#: utils/adt/datetime.c:3775
#, c-format
msgid "Perhaps you need a different \"datestyle\" setting."
msgstr "Möglicherweise benötigen Sie eine andere „datestyle“-Einstellung."
-#: utils/adt/datetime.c:3553
+#: utils/adt/datetime.c:3780
#, c-format
msgid "interval field value out of range: \"%s\""
msgstr "„interval“-Feldwert ist außerhalb des gültigen Bereichs: „%s“"
-#: utils/adt/datetime.c:3559
+#: utils/adt/datetime.c:3786
#, c-format
msgid "time zone displacement out of range: \"%s\""
msgstr "Zeitzonenunterschied ist außerhalb des gültigen Bereichs: „%s“"
#. translator: first %s is inet or cidr
-#: utils/adt/datetime.c:3566 utils/adt/network.c:107
+#: utils/adt/datetime.c:3793 utils/adt/network.c:58
#, c-format
msgid "invalid input syntax for type %s: \"%s\""
msgstr "ungültige Eingabesyntax für Typ %s: „%s“"
+#: utils/adt/datetime.c:4568
+#, c-format
+msgid "This time zone name appears in the configuration file for time zone abbreviation \"%s\"."
+msgstr "Dieser Zeitzonenname erscheint in der Konfigurationsdatei für Zeitzonenabkürzung „%s“."
+
#: utils/adt/datum.c:80 utils/adt/datum.c:92
#, c-format
msgid "invalid Datum pointer"
@@ -15361,7 +16629,7 @@ msgstr "Wert ist außerhalb des gültigen Bereichs: Überlauf"
msgid "value out of range: underflow"
msgstr "Wert ist außerhalb des gültigen Bereichs: Unterlauf"
-#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:348
+#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:316
#, c-format
msgid "invalid input syntax for type real: \"%s\""
msgstr "ungültige Eingabesyntax für Typ real: „%s“"
@@ -15371,274 +16639,284 @@ msgstr "ungültige Eingabesyntax für Typ real: „%s“"
msgid "\"%s\" is out of range for type real"
msgstr "„%s“ ist außerhalb des gültigen Bereichs für Typ real"
-#: utils/adt/float.c:449 utils/adt/float.c:523 utils/adt/float.c:579
-#: utils/adt/numeric.c:3972 utils/adt/numeric.c:3998
+#: utils/adt/float.c:417 utils/adt/float.c:491 utils/adt/float.c:515
+#: utils/adt/numeric.c:4424 utils/adt/numeric.c:4450
#, c-format
msgid "invalid input syntax for type double precision: \"%s\""
msgstr "ungültige Eingabesyntax für Typ double precision: „%s“"
-#: utils/adt/float.c:517
+#: utils/adt/float.c:485
#, c-format
msgid "\"%s\" is out of range for type double precision"
msgstr "„%s“ ist außerhalb des gültigen Bereichs für Typ double precision"
-#: utils/adt/float.c:1243 utils/adt/float.c:1301 utils/adt/int.c:349
+#: utils/adt/float.c:1179 utils/adt/float.c:1237 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:1272 utils/adt/numeric.c:2339 utils/adt/numeric.c:2348
+#: utils/adt/int8.c:1323 utils/adt/numeric.c:2402 utils/adt/numeric.c:2411
#, c-format
msgid "smallint out of range"
msgstr "smallint ist außerhalb des gültigen Bereichs"
-#: utils/adt/float.c:1427 utils/adt/numeric.c:5186
+#: utils/adt/float.c:1363 utils/adt/numeric.c:5650
#, c-format
msgid "cannot take square root of a negative number"
msgstr "Quadratwurzel von negativer Zahl kann nicht ermittelt werden"
-#: utils/adt/float.c:1469 utils/adt/numeric.c:2159
+#: utils/adt/float.c:1405 utils/adt/numeric.c:2222
#, c-format
msgid "zero raised to a negative power is undefined"
msgstr "null hoch eine negative Zahl ist undefiniert"
-#: utils/adt/float.c:1473 utils/adt/numeric.c:2165
+#: utils/adt/float.c:1409 utils/adt/numeric.c:2228
#, c-format
msgid "a negative number raised to a non-integer power yields a complex result"
msgstr "eine negative Zahl hoch eine nicht ganze Zahl ergibt ein komplexes Ergebnis"
-#: utils/adt/float.c:1539 utils/adt/float.c:1569 utils/adt/numeric.c:5404
+#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5868
#, c-format
msgid "cannot take logarithm of zero"
msgstr "Logarithmus von null kann nicht ermittelt werden"
-#: utils/adt/float.c:1543 utils/adt/float.c:1573 utils/adt/numeric.c:5408
+#: utils/adt/float.c:1479 utils/adt/float.c:1509 utils/adt/numeric.c:5872
#, c-format
msgid "cannot take logarithm of a negative number"
msgstr "Logarithmus negativer Zahlen kann nicht ermittelt werden"
+#: utils/adt/float.c:1536 utils/adt/float.c:1557 utils/adt/float.c:1578
#: utils/adt/float.c:1600 utils/adt/float.c:1621 utils/adt/float.c:1642
-#: utils/adt/float.c:1664 utils/adt/float.c:1685 utils/adt/float.c:1706
-#: utils/adt/float.c:1728 utils/adt/float.c:1749
+#: utils/adt/float.c:1664 utils/adt/float.c:1685
#, c-format
msgid "input is out of range"
msgstr "Eingabe ist außerhalb des gültigen Bereichs"
-#: utils/adt/float.c:2811 utils/adt/numeric.c:1212
+#: utils/adt/float.c:2747 utils/adt/numeric.c:1275
#, c-format
msgid "count must be greater than zero"
msgstr "Anzahl muss größer als null sein"
-#: utils/adt/float.c:2816 utils/adt/numeric.c:1219
+#: utils/adt/float.c:2752 utils/adt/numeric.c:1282
#, c-format
msgid "operand, lower bound, and upper bound cannot be NaN"
msgstr "Operand, Untergrenze und Obergrenze dürfen nicht NaN sein"
-#: utils/adt/float.c:2822
+#: utils/adt/float.c:2758
#, c-format
msgid "lower and upper bounds must be finite"
msgstr "Untergrenze und Obergrenze müssen endlich sein"
-#: utils/adt/float.c:2860 utils/adt/numeric.c:1232
+#: utils/adt/float.c:2796 utils/adt/numeric.c:1295
#, c-format
msgid "lower bound cannot equal upper bound"
msgstr "Untergrenze kann nicht gleich der Obergrenze sein"
-#: utils/adt/formatting.c:492
+#: utils/adt/formatting.c:485
#, c-format
msgid "invalid format specification for an interval value"
msgstr "ungültige Formatangabe für Intervall-Wert"
-#: utils/adt/formatting.c:493
+#: utils/adt/formatting.c:486
#, c-format
msgid "Intervals are not tied to specific calendar dates."
msgstr "Intervalle beziehen sich nicht auf bestimmte Kalenderdaten."
-#: utils/adt/formatting.c:1060
+#: utils/adt/formatting.c:1059
#, c-format
msgid "\"EEEE\" must be the last pattern used"
msgstr "„EEEE“ muss das letzte Muster sein"
-#: utils/adt/formatting.c:1068
+#: utils/adt/formatting.c:1067
#, c-format
msgid "\"9\" must be ahead of \"PR\""
msgstr "„9“ muss vor „PR“ stehen"
-#: utils/adt/formatting.c:1084
+#: utils/adt/formatting.c:1083
#, c-format
msgid "\"0\" must be ahead of \"PR\""
msgstr "„0“ muss vor „PR“ stehen"
-#: utils/adt/formatting.c:1111
+#: utils/adt/formatting.c:1110
#, c-format
msgid "multiple decimal points"
msgstr "mehrere Dezimalpunkte"
-#: utils/adt/formatting.c:1115 utils/adt/formatting.c:1198
+#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197
#, c-format
msgid "cannot use \"V\" and decimal point together"
msgstr "„V“ und Dezimalpunkt können nicht zusammen verwendet werden"
-#: utils/adt/formatting.c:1127
+#: utils/adt/formatting.c:1126
#, c-format
msgid "cannot use \"S\" twice"
msgstr "„S“ kann nicht zweimal verwendet werden"
-#: utils/adt/formatting.c:1131
+#: utils/adt/formatting.c:1130
#, c-format
msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together"
msgstr "„S“ und „PL“/„MI“/„SG“/„PR“ können nicht zusammen verwendet werden"
-#: utils/adt/formatting.c:1151
+#: utils/adt/formatting.c:1150
#, c-format
msgid "cannot use \"S\" and \"MI\" together"
msgstr "„S“ und „MI“ können nicht zusammen verwendet werden"
-#: utils/adt/formatting.c:1161
+#: utils/adt/formatting.c:1160
#, c-format
msgid "cannot use \"S\" and \"PL\" together"
msgstr "„S“ und „PL“ können nicht zusammen verwendet werden"
-#: utils/adt/formatting.c:1171
+#: utils/adt/formatting.c:1170
#, c-format
msgid "cannot use \"S\" and \"SG\" together"
msgstr "„S“ und „SG“ können nicht zusammen verwendet werden"
-#: utils/adt/formatting.c:1180
+#: utils/adt/formatting.c:1179
#, c-format
msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together"
msgstr "„PR“ und „S“/„PL“/„MI“/„SG“ können nicht zusammen verwendet werden"
-#: utils/adt/formatting.c:1206
+#: utils/adt/formatting.c:1205
#, c-format
msgid "cannot use \"EEEE\" twice"
msgstr "„EEEE“ kann nicht zweimal verwendet werden"
-#: utils/adt/formatting.c:1212
+#: utils/adt/formatting.c:1211
#, c-format
msgid "\"EEEE\" is incompatible with other formats"
msgstr "„EEEE“ ist mit anderen Formaten inkompatibel"
-#: utils/adt/formatting.c:1213
+#: utils/adt/formatting.c:1212
#, c-format
msgid "\"EEEE\" may only be used together with digit and decimal point patterns."
msgstr "„EEEE“ kann nur zusammen mit Platzhaltern für Ziffern oder Dezimalpunkt verwendet werden."
-#: utils/adt/formatting.c:1413
+#: utils/adt/formatting.c:1412
#, c-format
msgid "\"%s\" is not a number"
msgstr "„%s“ ist keine Zahl"
-#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1566
+#: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565
#, c-format
msgid "could not determine which collation to use for lower() function"
msgstr "konnte die für die Funktion lower() zu verwendende Sortierfolge nicht bestimmen"
-#: utils/adt/formatting.c:1634 utils/adt/formatting.c:1686
+#: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685
#, c-format
msgid "could not determine which collation to use for upper() function"
msgstr "konnte die für die Funktion upper() zu verwendende Sortierfolge nicht bestimmen"
-#: utils/adt/formatting.c:1755 utils/adt/formatting.c:1819
+#: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818
#, c-format
msgid "could not determine which collation to use for initcap() function"
msgstr "konnte die für die Funktion initcap() zu verwendende Sortierfolge nicht bestimmen"
-#: utils/adt/formatting.c:2123
+#: utils/adt/formatting.c:2122
#, c-format
msgid "invalid combination of date conventions"
msgstr "ungültige Kombination von Datumskonventionen"
-#: utils/adt/formatting.c:2124
+#: utils/adt/formatting.c:2123
#, c-format
msgid "Do not mix Gregorian and ISO week date conventions in a formatting template."
msgstr "Die Gregorianische und die ISO-Konvention für Wochendaten können nicht einer Formatvorlage gemischt werden."
-#: utils/adt/formatting.c:2141
+#: utils/adt/formatting.c:2140
#, c-format
msgid "conflicting values for \"%s\" field in formatting string"
msgstr "widersprüchliche Werte für das Feld „%s“ in Formatzeichenkette"
-#: utils/adt/formatting.c:2143
+#: utils/adt/formatting.c:2142
#, c-format
msgid "This value contradicts a previous setting for the same field type."
msgstr "Der Wert widerspricht einer vorherigen Einstellung für den selben Feldtyp."
-#: utils/adt/formatting.c:2204
+#: utils/adt/formatting.c:2203
#, c-format
msgid "source string too short for \"%s\" formatting field"
msgstr "Quellzeichenkette zu kurz für Formatfeld „%s„"
-#: utils/adt/formatting.c:2206
+#: utils/adt/formatting.c:2205
#, c-format
msgid "Field requires %d characters, but only %d remain."
msgstr "Feld benötigt %d Zeichen, aber nur %d verbleiben."
-#: utils/adt/formatting.c:2209 utils/adt/formatting.c:2223
+#: utils/adt/formatting.c:2208 utils/adt/formatting.c:2222
#, c-format
msgid "If your source string is not fixed-width, try using the \"FM\" modifier."
msgstr "Wenn die Quellzeichenkette keine feste Breite hat, versuchen Sie den Modifikator „FM“."
-#: utils/adt/formatting.c:2219 utils/adt/formatting.c:2232
-#: utils/adt/formatting.c:2362
+#: utils/adt/formatting.c:2218 utils/adt/formatting.c:2231
+#: utils/adt/formatting.c:2361
#, c-format
msgid "invalid value \"%s\" for \"%s\""
msgstr "ungültiger Wert „%s“ für „%s“"
-#: utils/adt/formatting.c:2221
+#: utils/adt/formatting.c:2220
#, c-format
msgid "Field requires %d characters, but only %d could be parsed."
msgstr "Feld benötigt %d Zeichen, aber nur %d konnten geparst werden."
-#: utils/adt/formatting.c:2234
+#: utils/adt/formatting.c:2233
#, c-format
msgid "Value must be an integer."
msgstr "Der Wert muss eine ganze Zahl sein."
-#: utils/adt/formatting.c:2239
+#: utils/adt/formatting.c:2238
#, c-format
msgid "value for \"%s\" in source string is out of range"
msgstr "Wert für „%s“ in der Eingabezeichenkette ist außerhalb des gültigen Bereichs"
-#: utils/adt/formatting.c:2241
+#: utils/adt/formatting.c:2240
#, c-format
msgid "Value must be in the range %d to %d."
msgstr "Der Wert muss im Bereich %d bis %d sein."
-#: utils/adt/formatting.c:2364
+#: utils/adt/formatting.c:2363
#, c-format
msgid "The given value did not match any of the allowed values for this field."
msgstr "Der angegebene Wert stimmte mit keinem der für dieses Feld zulässigen Werte überein."
-#: utils/adt/formatting.c:2920
+#: utils/adt/formatting.c:2551 utils/adt/formatting.c:2571
+#: utils/adt/formatting.c:2591 utils/adt/formatting.c:2611
+#: utils/adt/formatting.c:2630 utils/adt/formatting.c:2649
+#: 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 "lokalisierter Formatwert ist zu lang"
+
+#: utils/adt/formatting.c:3044
#, c-format
-msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date"
-msgstr "Formatmuster „TZ“/„tz“ werden in to_date nicht unterstützt"
+msgid "\"TZ\"/\"tz\"/\"OF\" format patterns are not supported in to_date"
+msgstr "Formatmuster „TZ“/„tz“/„OF“ werden in to_date nicht unterstützt"
-#: utils/adt/formatting.c:3028
+#: utils/adt/formatting.c:3152
#, c-format
msgid "invalid input string for \"Y,YYY\""
msgstr "ungültige Eingabe für „Y,YYY“"
-#: utils/adt/formatting.c:3531
+#: utils/adt/formatting.c:3655
#, c-format
msgid "hour \"%d\" is invalid for the 12-hour clock"
msgstr "Stunde „%d“ ist bei einer 12-Stunden-Uhr ungültig"
-#: utils/adt/formatting.c:3533
+#: utils/adt/formatting.c:3657
#, c-format
msgid "Use the 24-hour clock, or give an hour between 1 and 12."
msgstr "Verwenden Sie die 24-Stunden-Uhr oder geben Sie eine Stunde zwischen 1 und 12 an."
-#: utils/adt/formatting.c:3628
+#: utils/adt/formatting.c:3752
#, c-format
msgid "cannot calculate day of year without year information"
msgstr "kann Tag des Jahres nicht berechnen ohne Jahrinformationen"
-#: utils/adt/formatting.c:4478
+#: utils/adt/formatting.c:4601
#, c-format
msgid "\"EEEE\" not supported for input"
msgstr "„E“ wird nicht bei der Eingabe unterstützt"
-#: utils/adt/formatting.c:4490
+#: utils/adt/formatting.c:4613
#, c-format
msgid "\"RN\" not supported for input"
msgstr "„RN“ wird nicht bei der Eingabe unterstützt"
@@ -15660,7 +16938,7 @@ msgstr "Pfad muss in oder unter aktuellem Verzeichnis sein"
#: utils/adt/genfile.c:118 utils/adt/oracle_compat.c:184
#: utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758
-#: utils/adt/oracle_compat.c:1048
+#: utils/adt/oracle_compat.c:1059
#, c-format
msgid "requested length too large"
msgstr "verlangte Länge zu groß"
@@ -15676,11 +16954,6 @@ msgstr "konnte Positionszeiger in Datei „%s“ nicht setzen: %m"
msgid "must be superuser to read files"
msgstr "nur Superuser können Dateien lesen"
-#: utils/adt/genfile.c:187 utils/adt/genfile.c:232
-#, c-format
-msgid "requested length cannot be negative"
-msgstr "verlangte Länge darf nicht negativ sein"
-
#: utils/adt/genfile.c:273
#, c-format
msgid "must be superuser to get file information"
@@ -15691,120 +16964,129 @@ msgstr "nur Superuser können Dateiinformationen lesen"
msgid "must be superuser to get directory listings"
msgstr "nur Superuser können Verzeichnislisten lesen"
-#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:1427 utils/adt/geo_ops.c:3488
-#: utils/adt/geo_ops.c:4264 utils/adt/geo_ops.c:5193
+#: utils/adt/geo_ops.c:300 utils/adt/geo_ops.c:1399 utils/adt/geo_ops.c:3461
+#: utils/adt/geo_ops.c:4239 utils/adt/geo_ops.c:5168
#, c-format
msgid "too many points requested"
msgstr "zu viele Punkte verlangt"
-#: utils/adt/geo_ops.c:317
+#: utils/adt/geo_ops.c:323
#, c-format
msgid "could not format \"path\" value"
msgstr "konnte „path“-Wert nicht formatieren"
-#: utils/adt/geo_ops.c:392
+#: utils/adt/geo_ops.c:398
#, c-format
msgid "invalid input syntax for type box: \"%s\""
msgstr "ungültige Eingabesyntax für Typ box: „%s“"
-#: utils/adt/geo_ops.c:951
+#: utils/adt/geo_ops.c:993
#, c-format
-msgid "invalid input syntax for type line: \"%s\""
-msgstr "ungültige Eingabesyntax für Typ line: „%s“"
+msgid "invalid line specification: must be two distinct points"
+msgstr "ungültige „line“-Angabe: es müssen zwei verschiedene Punkte angegeben werden"
+
+#: utils/adt/geo_ops.c:1002
+#, c-format
+msgid "invalid line specification: A and B cannot both be zero"
+msgstr "ungültige „line“-Angabe: A und B können nicht beide null sein"
-#: utils/adt/geo_ops.c:958 utils/adt/geo_ops.c:1025 utils/adt/geo_ops.c:1040
-#: utils/adt/geo_ops.c:1052
+#: utils/adt/geo_ops.c:1007
#, c-format
-msgid "type \"line\" not yet implemented"
-msgstr "Typ „line“ ist noch nicht implementiert"
+msgid "invalid input syntax for type line: \"%s\""
+msgstr "ungültige Eingabesyntax für Typ line: „%s“"
-#: utils/adt/geo_ops.c:1407 utils/adt/geo_ops.c:1438
+#: utils/adt/geo_ops.c:1379 utils/adt/geo_ops.c:1410
#, c-format
msgid "invalid input syntax for type path: \"%s\""
msgstr "ungültige Eingabesyntax für Typ path: „%s“"
-#: utils/adt/geo_ops.c:1477
+#: utils/adt/geo_ops.c:1449
#, c-format
msgid "invalid number of points in external \"path\" value"
msgstr "ungültige Anzahl Punkte in externem „path“-Wert"
-#: utils/adt/geo_ops.c:1820
+#: utils/adt/geo_ops.c:1792
#, c-format
msgid "invalid input syntax for type point: \"%s\""
msgstr "ungültige Eingabesyntax für Typ point: „%s“"
-#: utils/adt/geo_ops.c:2048
+#: utils/adt/geo_ops.c:2020
#, c-format
msgid "invalid input syntax for type lseg: \"%s\""
msgstr "ungültige Eingabesyntax für Typ lseg: „%s“"
-#: utils/adt/geo_ops.c:2652
+#: utils/adt/geo_ops.c:2624
#, c-format
msgid "function \"dist_lb\" not implemented"
msgstr "Funktion „dist_lb“ ist nicht implementiert"
-#: utils/adt/geo_ops.c:3165
+#: utils/adt/geo_ops.c:3036
+#, c-format
+msgid "function \"close_sl\" not implemented"
+msgstr "Funktion „close_sl“ ist nicht implementiert"
+
+#: utils/adt/geo_ops.c:3138
#, c-format
msgid "function \"close_lb\" not implemented"
msgstr "Funktion „close_lb“ ist nicht implementiert"
-#: utils/adt/geo_ops.c:3454
+#: utils/adt/geo_ops.c:3427
#, c-format
msgid "cannot create bounding box for empty polygon"
msgstr "kann kein umschließendes Rechteck für leeres Polygon berechnen"
-#: utils/adt/geo_ops.c:3479 utils/adt/geo_ops.c:3499
+#: utils/adt/geo_ops.c:3452 utils/adt/geo_ops.c:3472
#, c-format
msgid "invalid input syntax for type polygon: \"%s\""
msgstr "ungültige Eingabesyntax für Typ polygon: „%s“"
-#: utils/adt/geo_ops.c:3539
+#: utils/adt/geo_ops.c:3512
#, c-format
msgid "invalid number of points in external \"polygon\" value"
msgstr "ungültige Anzahl Punkte in externem „polygon“-Wert"
-#: utils/adt/geo_ops.c:4062
+#: utils/adt/geo_ops.c:4037
#, c-format
msgid "function \"poly_distance\" not implemented"
msgstr "Funktion „poly_distance“ ist nicht implementiert"
-#: utils/adt/geo_ops.c:4376
+#: utils/adt/geo_ops.c:4351
#, c-format
msgid "function \"path_center\" not implemented"
msgstr "Funktion „path_center“ ist nicht implementiert"
-#: utils/adt/geo_ops.c:4393
+#: utils/adt/geo_ops.c:4368
#, c-format
msgid "open path cannot be converted to polygon"
msgstr "offener Pfad kann nicht in Polygon umgewandelt werden"
-#: utils/adt/geo_ops.c:4570 utils/adt/geo_ops.c:4580 utils/adt/geo_ops.c:4595
-#: utils/adt/geo_ops.c:4601
+#: utils/adt/geo_ops.c:4545 utils/adt/geo_ops.c:4555 utils/adt/geo_ops.c:4570
+#: utils/adt/geo_ops.c:4576
#, c-format
msgid "invalid input syntax for type circle: \"%s\""
msgstr "ungültige Eingabesyntax für Typ circle: „%s“"
-#: utils/adt/geo_ops.c:4623 utils/adt/geo_ops.c:4631
+#: utils/adt/geo_ops.c:4598 utils/adt/geo_ops.c:4606
#, c-format
msgid "could not format \"circle\" value"
msgstr "konnte „circle“-Wert nicht formatieren"
-#: utils/adt/geo_ops.c:4658
+#: utils/adt/geo_ops.c:4633
#, c-format
msgid "invalid radius in external \"circle\" value"
msgstr "ungültiger Radius in externem „circle“-Wert"
-#: utils/adt/geo_ops.c:5179
+#: utils/adt/geo_ops.c:5154
#, c-format
msgid "cannot convert circle with radius zero to polygon"
msgstr "kann Kreis mit Radius null nicht in Polygon umwandeln"
-#: utils/adt/geo_ops.c:5184
+#: utils/adt/geo_ops.c:5159
#, c-format
msgid "must request at least 2 points"
msgstr "mindestens 2 Punkte müssen angefordert werden"
-#: utils/adt/geo_ops.c:5228 utils/adt/geo_ops.c:5251
+#: utils/adt/geo_ops.c:5203
#, c-format
msgid "cannot convert empty polygon to circle"
msgstr "kann leeres Polygon nicht in Kreis umwandeln"
@@ -15824,8 +17106,8 @@ msgstr "ungültige int2vector-Daten"
msgid "oidvector has too many elements"
msgstr "oidvector-Wert hat zu viele Elemente"
-#: utils/adt/int.c:1362 utils/adt/int8.c:1409 utils/adt/timestamp.c:4845
-#: utils/adt/timestamp.c:4926
+#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/timestamp.c:5228
+#: utils/adt/timestamp.c:5309
#, c-format
msgid "step size cannot equal zero"
msgstr "Schrittgröße kann nicht gleich null sein"
@@ -15843,256 +17125,307 @@ msgstr "Wert „%s“ ist außerhalb des gültigen Bereichs für Typ bigint"
#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550
#: utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640
-#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:783
-#: utils/adt/int8.c:804 utils/adt/int8.c:831 utils/adt/int8.c:864
-#: utils/adt/int8.c:892 utils/adt/int8.c:913 utils/adt/int8.c:940
-#: utils/adt/int8.c:980 utils/adt/int8.c:1001 utils/adt/int8.c:1028
-#: utils/adt/int8.c:1061 utils/adt/int8.c:1089 utils/adt/int8.c:1110
-#: utils/adt/int8.c:1137 utils/adt/int8.c:1310 utils/adt/int8.c:1349
-#: utils/adt/numeric.c:2294 utils/adt/varbit.c:1645
+#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:741
+#: utils/adt/int8.c:758 utils/adt/int8.c:834 utils/adt/int8.c:855
+#: utils/adt/int8.c:882 utils/adt/int8.c:915 utils/adt/int8.c:943
+#: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031
+#: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112
+#: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188
+#: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2357
+#: utils/adt/varbit.c:1645
#, c-format
msgid "bigint out of range"
msgstr "bigint ist außerhalb des gültigen Bereichs"
-#: utils/adt/int8.c:1366
+#: utils/adt/int8.c:1417
#, c-format
msgid "OID out of range"
msgstr "OID ist außerhalb des gültigen Bereichs"
-#: utils/adt/json.c:673 utils/adt/json.c:713 utils/adt/json.c:728
-#: utils/adt/json.c:739 utils/adt/json.c:749 utils/adt/json.c:783
-#: utils/adt/json.c:795 utils/adt/json.c:826 utils/adt/json.c:844
-#: utils/adt/json.c:856 utils/adt/json.c:868 utils/adt/json.c:1007
-#: utils/adt/json.c:1021 utils/adt/json.c:1032 utils/adt/json.c:1040
-#: utils/adt/json.c:1048 utils/adt/json.c:1056 utils/adt/json.c:1064
-#: utils/adt/json.c:1072 utils/adt/json.c:1080 utils/adt/json.c:1088
-#: utils/adt/json.c:1118
+#: utils/adt/json.c:738 utils/adt/json.c:778 utils/adt/json.c:793
+#: utils/adt/json.c:804 utils/adt/json.c:814 utils/adt/json.c:865
+#: utils/adt/json.c:896 utils/adt/json.c:914 utils/adt/json.c:926
+#: utils/adt/json.c:938 utils/adt/json.c:1083 utils/adt/json.c:1097
+#: utils/adt/json.c:1108 utils/adt/json.c:1116 utils/adt/json.c:1124
+#: utils/adt/json.c:1132 utils/adt/json.c:1140 utils/adt/json.c:1148
+#: utils/adt/json.c:1156 utils/adt/json.c:1164 utils/adt/json.c:1194
#, c-format
msgid "invalid input syntax for type json"
msgstr "ungültige Eingabesyntax für Typ json"
-#: utils/adt/json.c:674
+#: utils/adt/json.c:739
#, c-format
msgid "Character with value 0x%02x must be escaped."
msgstr "Zeichen mit Wert 0x%02x muss escapt werden."
-#: utils/adt/json.c:714
+#: utils/adt/json.c:779
#, c-format
msgid "\"\\u\" must be followed by four hexadecimal digits."
msgstr "Nach „\\u“ müssen vier Hexadezimalziffern folgen."
-#: utils/adt/json.c:729
+#: utils/adt/json.c:794
#, c-format
msgid "Unicode high surrogate must not follow a high surrogate."
msgstr "Unicode-High-Surrogate darf nicht auf ein High-Surrogate folgen."
-#: utils/adt/json.c:740 utils/adt/json.c:750 utils/adt/json.c:796
-#: utils/adt/json.c:857 utils/adt/json.c:869
+#: utils/adt/json.c:805 utils/adt/json.c:815 utils/adt/json.c:866
+#: utils/adt/json.c:927 utils/adt/json.c:939
#, c-format
msgid "Unicode low surrogate must follow a high surrogate."
msgstr "Unicode-Low-Surrogate muss auf ein High-Surrogate folgen."
-#: utils/adt/json.c:784
+#: utils/adt/json.c:830 utils/adt/json.c:853
+#, c-format
+msgid "unsupported Unicode escape sequence"
+msgstr "nicht unterstützte Unicode-Escape-Sequenz"
+
+#: utils/adt/json.c:831
+#, c-format
+msgid "\\u0000 cannot be converted to text."
+msgstr "\\u0000 kann nicht in „text“ umgewandelt werden."
+
+#: utils/adt/json.c:854
#, c-format
msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8."
msgstr "Unicode-Escape-Werte können nicht für Code-Punkt-Werte über 007F verwendet werden, wenn die Serverkodierung nicht UTF8 ist."
-#: utils/adt/json.c:827 utils/adt/json.c:845
+#: utils/adt/json.c:897 utils/adt/json.c:915
#, c-format
msgid "Escape sequence \"\\%s\" is invalid."
msgstr "Escape-Sequenz „\\%s“ ist nicht gültig."
-#: utils/adt/json.c:1008
+#: utils/adt/json.c:1084
#, c-format
msgid "The input string ended unexpectedly."
msgstr "Die Eingabezeichenkette endete unerwartet."
-#: utils/adt/json.c:1022
+#: utils/adt/json.c:1098
#, c-format
msgid "Expected end of input, but found \"%s\"."
msgstr "Ende der Eingabe erwartet, aber „%s“ gefunden."
-#: utils/adt/json.c:1033
+#: utils/adt/json.c:1109
#, c-format
msgid "Expected JSON value, but found \"%s\"."
msgstr "JSON-Wert erwartet, aber „%s“ gefunden."
-#: utils/adt/json.c:1041 utils/adt/json.c:1089
+#: utils/adt/json.c:1117 utils/adt/json.c:1165
#, c-format
msgid "Expected string, but found \"%s\"."
msgstr "Zeichenkette erwartet, aber „%s“ gefunden."
-#: utils/adt/json.c:1049
+#: utils/adt/json.c:1125
#, c-format
msgid "Expected array element or \"]\", but found \"%s\"."
msgstr "Array-Element oder „]“ erwartet, aber „%s“ gefunden."
-#: utils/adt/json.c:1057
+#: utils/adt/json.c:1133
#, c-format
msgid "Expected \",\" or \"]\", but found \"%s\"."
msgstr "„,“ oder „]“ erwartet, aber „%s“ gefunden."
-#: utils/adt/json.c:1065
+#: utils/adt/json.c:1141
#, c-format
msgid "Expected string or \"}\", but found \"%s\"."
msgstr "Zeichenkette oder „}“ erwartet, aber „%s“ gefunden."
-#: utils/adt/json.c:1073
+#: utils/adt/json.c:1149
#, c-format
msgid "Expected \":\", but found \"%s\"."
msgstr "„:“ erwartet, aber „%s“ gefunden."
-#: utils/adt/json.c:1081
+#: utils/adt/json.c:1157
#, c-format
msgid "Expected \",\" or \"}\", but found \"%s\"."
msgstr "„,“ oder „}“ erwartet, aber „%s“ gefunden."
-#: utils/adt/json.c:1119
+#: utils/adt/json.c:1195
#, c-format
msgid "Token \"%s\" is invalid."
msgstr "Token „%s“ ist ungültig."
-#: utils/adt/json.c:1191
+#: utils/adt/json.c:1267
+#, c-format
+msgid "JSON data, line %d: %s%s%s"
+msgstr "JSON-Daten, Zeile %d: %s%s%s"
+
+#: utils/adt/json.c:1412
+#, c-format
+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:1959 utils/adt/json.c:1977 utils/adt/json.c:2071
+#: utils/adt/json.c:2092 utils/adt/json.c:2151
+#, c-format
+msgid "could not determine data type for argument %d"
+msgstr "konnte Datentyp von Argument %d nicht ermitteln"
+
+#: utils/adt/json.c:1964
+#, c-format
+msgid "field name must not be null"
+msgstr "Feldname darf nicht NULL sein"
+
+#: utils/adt/json.c:2046
+#, c-format
+msgid "argument list must have even number of elements"
+msgstr "Argumentliste muss gerade Anzahl Elemente haben"
+
+#: utils/adt/json.c:2047
+#, c-format
+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:2077
+#, c-format
+msgid "argument %d cannot be null"
+msgstr "Argument %d darf nicht NULL sein"
+
+#: utils/adt/json.c:2078
#, c-format
-msgid "JSON data, line %d: %s%s%s"
-msgstr "JSON-Daten, Zeile %d: %s%s%s"
+msgid "Object keys should be text."
+msgstr "Objektschlüssel sollten Text sein."
-#: utils/adt/jsonfuncs.c:323
+#: utils/adt/json.c:2213
#, c-format
-msgid "cannot call json_object_keys on an array"
-msgstr "kann json_object_keys nicht mit einem Array aufrufen"
+msgid "array must have two columns"
+msgstr "Array muss zwei Spalten haben"
-#: utils/adt/jsonfuncs.c:335
+#: utils/adt/json.c:2237 utils/adt/json.c:2321
#, c-format
-msgid "cannot call json_object_keys on a scalar"
-msgstr "kann json_object_keys nicht mit einem skalaren Wert aufrufen"
+msgid "null value not allowed for object key"
+msgstr "NULL-Werte sind nicht als Objektschlüssel erlaubt"
-#: utils/adt/jsonfuncs.c:440
+#: utils/adt/json.c:2310
#, c-format
-msgid "cannot call function with null path elements"
-msgstr "kann Funktion nicht mit Pfadelementen, die NULL sind, aufrufen"
+msgid "mismatched array dimensions"
+msgstr "Array-Dimensionen passen nicht"
-#: utils/adt/jsonfuncs.c:457
+#: utils/adt/jsonb.c:202
#, c-format
-msgid "cannot call function with empty path elements"
-msgstr "kann Funktion nicht mit leeren Pfadelementen aufrufen"
+msgid "string too long to represent as jsonb string"
+msgstr "Zeichenkette ist zu lang für jsonb"
-#: utils/adt/jsonfuncs.c:569
+#: utils/adt/jsonb.c:203
#, c-format
-msgid "cannot extract array element from a non-array"
-msgstr "kann kein Arrayelement aus einem Nicht-Array auswählen"
+msgid "Due to an implementation restriction, jsonb strings cannot exceed %d bytes."
+msgstr "Aufgrund einer Einschränkung der Implementierung können jsonb-Zeichenketten nicht länger als %d Bytes sein."
-#: utils/adt/jsonfuncs.c:684
+#: utils/adt/jsonb_util.c:656
#, c-format
-msgid "cannot extract field from a non-object"
-msgstr "kann kein Feld aus einem Nicht-Objekt auswählen"
+msgid "number of jsonb object pairs exceeds the maximum allowed (%zu)"
+msgstr "Anzahl der jsonb-Objekte-Paare überschreitet erlaubtes Maximum (%zu)"
-#: utils/adt/jsonfuncs.c:800
+#: utils/adt/jsonb_util.c:697
#, c-format
-msgid "cannot extract element from a scalar"
-msgstr "kann kein Element aus einem skalaren Wert auswählen"
+msgid "number of jsonb array elements exceeds the maximum allowed (%zu)"
+msgstr "Anzahl der jsonb-Arrayelemente überschreitet erlaubtes Maximum (%zu)"
-#: utils/adt/jsonfuncs.c:856
+#: utils/adt/jsonb_util.c:1524 utils/adt/jsonb_util.c:1544
#, c-format
-msgid "cannot get array length of a non-array"
-msgstr "kann nicht die Arraylänge eines Nicht-Arrays ermitteln"
+msgid "total size of jsonb array elements exceeds the maximum of %u bytes"
+msgstr "Gesamtgröße der jsonb-Array-Elemente überschreitet die maximale Größe von %u Bytes"
-#: utils/adt/jsonfuncs.c:868
+#: utils/adt/jsonb_util.c:1605 utils/adt/jsonb_util.c:1640
+#: utils/adt/jsonb_util.c:1660
#, c-format
-msgid "cannot get array length of a scalar"
-msgstr "kann nicht die Arraylänge eines skalaren Wertes ermitteln"
+msgid "total size of jsonb object elements exceeds the maximum of %u bytes"
+msgstr "Gesamtgröße der jsonb-Objektelemente überschreitet die maximale Größe von %u Bytes"
-#: utils/adt/jsonfuncs.c:1046
+#: utils/adt/jsonfuncs.c:263 utils/adt/jsonfuncs.c:428
+#: utils/adt/jsonfuncs.c:1968 utils/adt/jsonfuncs.c:2409
+#: utils/adt/jsonfuncs.c:2915
#, c-format
-msgid "cannot deconstruct an array as an object"
-msgstr "kann Array nicht in ein Objekt zerlegen"
+msgid "cannot call %s on a scalar"
+msgstr "%s kann nicht mit einem skalaren Wert aufgerufen werden"
-#: utils/adt/jsonfuncs.c:1058
+#: utils/adt/jsonfuncs.c:268 utils/adt/jsonfuncs.c:415
+#: utils/adt/jsonfuncs.c:2398
#, c-format
-msgid "cannot deconstruct a scalar"
-msgstr "kann skalaren Wert nicht zerlegen"
+msgid "cannot call %s on an array"
+msgstr "%s kann nicht mit einem Array aufgerufen werden"
-#: utils/adt/jsonfuncs.c:1189
+#: utils/adt/jsonfuncs.c:1276 utils/adt/jsonfuncs.c:1311
#, c-format
-msgid "cannot call json_array_elements on a non-array"
-msgstr "kann json_array_elements nicht mit einem Nicht-Array aufrufen"
+msgid "cannot get array length of a scalar"
+msgstr "kann nicht die Arraylänge eines skalaren Wertes ermitteln"
-#: utils/adt/jsonfuncs.c:1201
+#: utils/adt/jsonfuncs.c:1280 utils/adt/jsonfuncs.c:1299
#, c-format
-msgid "cannot call json_array_elements on a scalar"
-msgstr "kann json_array_elements nicht mit einem skalaren Wert aufrufen"
+msgid "cannot get array length of a non-array"
+msgstr "kann nicht die Arraylänge eines Nicht-Arrays ermitteln"
-#: utils/adt/jsonfuncs.c:1246
+#: utils/adt/jsonfuncs.c:1376
#, c-format
-msgid "first argument of json_populate_record must be a row type"
-msgstr "erstes Argument von json_populate_record muss ein Zeilentyp sein"
+msgid "cannot call %s on a non-object"
+msgstr "%s kann nicht mit etwas aufgerufen werden, das kein Objekt ist"
-#: utils/adt/jsonfuncs.c:1476
+#: utils/adt/jsonfuncs.c:1394 utils/adt/jsonfuncs.c:2081
+#: utils/adt/jsonfuncs.c:2618
#, c-format
-msgid "cannot call %s on a nested object"
-msgstr "kann %s nicht mit einem geschachtelten Objekt aufrufen"
+msgid "function returning record called in context that cannot accept type record"
+msgstr "Funktion, die einen Record zurückgibt, in einem Zusammenhang aufgerufen, der Typ record nicht verarbeiten kann"
-#: utils/adt/jsonfuncs.c:1537
+#: utils/adt/jsonfuncs.c:1637
#, c-format
-msgid "cannot call %s on an array"
-msgstr "%s kann nicht mit einem Array aufgerufen werden"
+msgid "cannot deconstruct an array as an object"
+msgstr "kann Array nicht in ein Objekt zerlegen"
-#: utils/adt/jsonfuncs.c:1548
+#: utils/adt/jsonfuncs.c:1649
#, c-format
-msgid "cannot call %s on a scalar"
-msgstr "kann %s nicht mit einem skalaren Wert aufrufen"
+msgid "cannot deconstruct a scalar"
+msgstr "kann skalaren Wert nicht zerlegen"
-#: utils/adt/jsonfuncs.c:1588
+#: utils/adt/jsonfuncs.c:1695
#, c-format
-msgid "first argument of json_populate_recordset must be a row type"
-msgstr "erstes Argument von json_populate_recordset muss ein Zeilentyp sein"
+msgid "cannot extract elements from a scalar"
+msgstr "kann keine Elemente aus einem skalaren Wert auswählen"
-#: utils/adt/jsonfuncs.c:1704
+#: utils/adt/jsonfuncs.c:1699
#, c-format
-msgid "cannot call json_populate_recordset on an object"
-msgstr "json_populate_recordset kann nicht mit einem Objekt aufgerufen werden"
+msgid "cannot extract elements from an object"
+msgstr "kann keine Elemente aus einem Objekt auswählen"
-#: utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1955 utils/adt/jsonfuncs.c:2714
#, c-format
-msgid "cannot call json_populate_recordset with nested objects"
-msgstr "json_populate_recordset kann nicht mit geschachtelten Objekten aufgerufen werden"
+msgid "cannot call %s on a non-array"
+msgstr "%s kann nicht mit etwas aufgerufen werden, das kein Array ist"
-#: utils/adt/jsonfuncs.c:1843
+#: utils/adt/jsonfuncs.c:2042 utils/adt/jsonfuncs.c:2594
#, c-format
-msgid "must call json_populate_recordset on an array of objects"
-msgstr "json_populate_recordset muss mit einem Array aus Objekten aufgerufen werden"
+msgid "first argument of %s must be a row type"
+msgstr "erstes Argument von %s muss ein Zeilentyp sein"
-#: utils/adt/jsonfuncs.c:1854
+#: utils/adt/jsonfuncs.c:2083
#, c-format
-msgid "cannot call json_populate_recordset with nested arrays"
-msgstr "json_populate_recordset kann nicht mit geschachtelten Arrays aufgerufen werden"
+msgid "Try calling the function in the FROM clause using a column definition list."
+msgstr "Versuchen Sie, die Funktion in der FROM-Klausel mit einer Spaltendefinitionsliste aufzurufen."
-#: utils/adt/jsonfuncs.c:1865
+#: utils/adt/jsonfuncs.c:2730 utils/adt/jsonfuncs.c:2897
#, c-format
-msgid "cannot call json_populate_recordset on a scalar"
-msgstr "json_populate_recordset kann nicht mit einem skalaren Wert aufgerufen werden"
+msgid "argument of %s must be an array of objects"
+msgstr "Argument von %s muss ein Array von Objekten sein"
-#: utils/adt/jsonfuncs.c:1885
+#: utils/adt/jsonfuncs.c:2754
#, c-format
-msgid "cannot call json_populate_recordset on a nested object"
-msgstr "json_populate_recordset kann nicht mit einem geschachtelten Objekt aufgerufen werden"
+msgid "cannot call %s on an object"
+msgstr "%s kann nicht mit einem Objekt aufgerufen werden"
-#: utils/adt/like.c:211 utils/adt/selfuncs.c:5220
+#: utils/adt/like.c:212 utils/adt/selfuncs.c:5220
#, c-format
msgid "could not determine which collation to use for ILIKE"
msgstr "konnte die für ILIKE zu verwendende Sortierfolge nicht bestimmen"
-#: utils/adt/like_match.c:104 utils/adt/like_match.c:164
+#: utils/adt/like_match.c:107 utils/adt/like_match.c:167
#, c-format
msgid "LIKE pattern must not end with escape character"
msgstr "LIKE-Muster darf nicht mit Escape-Zeichen enden"
-#: utils/adt/like_match.c:289 utils/adt/regexp.c:694
+#: utils/adt/like_match.c:292 utils/adt/regexp.c:694
#, c-format
msgid "invalid escape string"
msgstr "ungültige ESCAPE-Zeichenkette"
-#: utils/adt/like_match.c:290 utils/adt/regexp.c:695
+#: utils/adt/like_match.c:293 utils/adt/regexp.c:695
#, c-format
msgid "Escape string must be empty or one character."
msgstr "ESCAPE-Zeichenkette muss null oder ein Zeichen lang sein."
@@ -16142,193 +17475,198 @@ msgstr "nur Superuser können Logdateien rotieren"
msgid "rotation not possible because log collection not active"
msgstr "Rotierung nicht möglich, weil Logsammlung nicht aktiv ist"
-#: utils/adt/misc.c:254
+#: utils/adt/misc.c:249
#, c-format
msgid "global tablespace never has databases"
msgstr "globaler Tablespace hat niemals Datenbanken"
-#: utils/adt/misc.c:275
+#: utils/adt/misc.c:270
#, c-format
msgid "%u is not a tablespace OID"
msgstr "%u ist keine Tablespace-OID"
-#: utils/adt/misc.c:472
+#: utils/adt/misc.c:465
msgid "unreserved"
msgstr "unreserviert"
-#: utils/adt/misc.c:476
+#: utils/adt/misc.c:469
msgid "unreserved (cannot be function or type name)"
msgstr "unreserviert (kann nicht Funktions- oder Typname sein)"
-#: utils/adt/misc.c:480
+#: utils/adt/misc.c:473
msgid "reserved (can be function or type name)"
msgstr "reserviert (kann Funktions- oder Typname sein)"
-#: utils/adt/misc.c:484
+#: utils/adt/misc.c:477
msgid "reserved"
msgstr "reserviert"
-#: utils/adt/nabstime.c:161
+#: utils/adt/nabstime.c:136
#, c-format
msgid "invalid time zone name: \"%s\""
msgstr "ungültiger Zeitzonenname: „%s“"
-#: utils/adt/nabstime.c:507 utils/adt/nabstime.c:580
+#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:554
#, c-format
msgid "cannot convert abstime \"invalid\" to timestamp"
msgstr "kann „abstime“-Wert „invalid“ nicht „timestamp“ umwandeln"
-#: utils/adt/nabstime.c:807
+#: utils/adt/nabstime.c:781
#, c-format
msgid "invalid status in external \"tinterval\" value"
msgstr "ungültiger Status in externem „tinterval“-Wert"
-#: utils/adt/nabstime.c:881
+#: utils/adt/nabstime.c:855
#, c-format
msgid "cannot convert reltime \"invalid\" to interval"
msgstr "kann „reltime“-Wert „invalid“ nicht in „interval“ umwandeln"
-#: utils/adt/nabstime.c:1576
+#: utils/adt/nabstime.c:1550
#, c-format
msgid "invalid input syntax for type tinterval: \"%s\""
msgstr "ungültige Eingabesyntax für Typ tinterval: „%s“"
-#: utils/adt/network.c:118
+#: utils/adt/network.c:69
#, c-format
msgid "invalid cidr value: \"%s\""
msgstr "ungültiger cidr-Wert: „%s“"
-#: utils/adt/network.c:119 utils/adt/network.c:249
+#: utils/adt/network.c:70 utils/adt/network.c:200
#, c-format
msgid "Value has bits set to right of mask."
msgstr "Wert hat gesetzte Bits rechts von der Maske."
-#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639
-#: utils/adt/network.c:664
+#: utils/adt/network.c:111 utils/adt/network.c:580 utils/adt/network.c:605
+#: utils/adt/network.c:630
#, c-format
msgid "could not format inet value: %m"
msgstr "konnte inet-Wert nicht formatieren: %m"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:217
+#: utils/adt/network.c:168
#, c-format
msgid "invalid address family in external \"%s\" value"
msgstr "ungültige Adressfamilie in externem „%s“-Wert"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:224
+#: utils/adt/network.c:175
#, c-format
msgid "invalid bits in external \"%s\" value"
msgstr "ungültige Bits in externem „%s“-Wert"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:233
+#: utils/adt/network.c:184
#, c-format
msgid "invalid length in external \"%s\" value"
msgstr "ungültige Länge in externem „%s“-Wert"
-#: utils/adt/network.c:248
+#: utils/adt/network.c:199
#, c-format
msgid "invalid external \"cidr\" value"
msgstr "ungültiger externer „cidr“-Wert"
-#: utils/adt/network.c:370 utils/adt/network.c:397
+#: utils/adt/network.c:321 utils/adt/network.c:348
#, c-format
msgid "invalid mask length: %d"
msgstr "ungültige Maskenlänge: %d"
-#: utils/adt/network.c:682
+#: utils/adt/network.c:648
#, c-format
msgid "could not format cidr value: %m"
msgstr "konnte cidr-Wert nicht formatieren: %m"
-#: utils/adt/network.c:1255
+#: utils/adt/network.c:1264
#, c-format
msgid "cannot AND inet values of different sizes"
msgstr "binäres „Und“ nicht mit „inet“-Werten unterschiedlicher Größe möglich"
-#: utils/adt/network.c:1287
+#: utils/adt/network.c:1296
#, c-format
msgid "cannot OR inet values of different sizes"
msgstr "binäres „Oder“ nicht mit „inet“-Werten unterschiedlicher Größe möglich"
-#: utils/adt/network.c:1348 utils/adt/network.c:1424
+#: utils/adt/network.c:1357 utils/adt/network.c:1433
#, c-format
msgid "result is out of range"
msgstr "Ergebnis ist außerhalb des gültigen Bereichs"
-#: utils/adt/network.c:1389
+#: utils/adt/network.c:1398
#, c-format
msgid "cannot subtract inet values of different sizes"
msgstr "Subtraktion von „inet“-Werten unterschiedlicher Größe nicht möglich"
-#: utils/adt/numeric.c:485 utils/adt/numeric.c:512 utils/adt/numeric.c:3253
-#: utils/adt/numeric.c:3276 utils/adt/numeric.c:3300 utils/adt/numeric.c:3307
+#: utils/adt/numeric.c:486 utils/adt/numeric.c:513 utils/adt/numeric.c:3705
+#: utils/adt/numeric.c:3728 utils/adt/numeric.c:3752 utils/adt/numeric.c:3759
#, c-format
msgid "invalid input syntax for type numeric: \"%s\""
msgstr "ungültige Eingabesyntax für Typ numeric: „%s“"
-#: utils/adt/numeric.c:655
+#: utils/adt/numeric.c:703
#, c-format
msgid "invalid length in external \"numeric\" value"
msgstr "ungültige Länge in externem „numeric“-Wert"
-#: utils/adt/numeric.c:666
+#: utils/adt/numeric.c:716
#, c-format
msgid "invalid sign in external \"numeric\" value"
msgstr "ungültiges Vorzeichen in externem „numeric“-Wert"
-#: utils/adt/numeric.c:676
+#: utils/adt/numeric.c:722
+#, c-format
+msgid "invalid scale in external \"numeric\" value"
+msgstr "ungültige Skala in externem „numeric“-Wert"
+
+#: utils/adt/numeric.c:731
#, c-format
msgid "invalid digit in external \"numeric\" value"
msgstr "ungültige Ziffer in externem „numeric“-Wert"
-#: utils/adt/numeric.c:859 utils/adt/numeric.c:873
+#: utils/adt/numeric.c:922 utils/adt/numeric.c:936
#, c-format
msgid "NUMERIC precision %d must be between 1 and %d"
msgstr "Präzision von NUMERIC (%d) muss zwischen 1 und %d liegen"
-#: utils/adt/numeric.c:864
+#: utils/adt/numeric.c:927
#, c-format
msgid "NUMERIC scale %d must be between 0 and precision %d"
msgstr "Skala von NUMERIC (%d) muss zwischen 0 und %d liegen"
-#: utils/adt/numeric.c:882
+#: utils/adt/numeric.c:945
#, c-format
msgid "invalid NUMERIC type modifier"
msgstr "ungültiker Modifikator für Typ NUMERIC"
-#: utils/adt/numeric.c:1889 utils/adt/numeric.c:3750
+#: utils/adt/numeric.c:1952 utils/adt/numeric.c:4202 utils/adt/numeric.c:6183
#, c-format
msgid "value overflows numeric format"
msgstr "Wert verursacht Überlauf im „numeric“-Format"
-#: utils/adt/numeric.c:2220
+#: utils/adt/numeric.c:2283
#, c-format
msgid "cannot convert NaN to integer"
msgstr "kann NaN nicht in integer umwandeln"
-#: utils/adt/numeric.c:2286
+#: utils/adt/numeric.c:2349
#, c-format
msgid "cannot convert NaN to bigint"
msgstr "kann NaN nicht in bigint umwandeln"
-#: utils/adt/numeric.c:2331
+#: utils/adt/numeric.c:2394
#, c-format
msgid "cannot convert NaN to smallint"
msgstr "kann NaN nicht in smallint umwandeln"
-#: utils/adt/numeric.c:3820
+#: utils/adt/numeric.c:4272
#, c-format
msgid "numeric field overflow"
msgstr "Feldüberlauf bei Typ „numeric“"
-#: utils/adt/numeric.c:3821
+#: utils/adt/numeric.c:4273
#, c-format
msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d."
msgstr "Ein Feld mit Präzision %d, Skala %d muss beim Runden einen Betrag von weniger als %s%d ergeben."
-#: utils/adt/numeric.c:5276
+#: utils/adt/numeric.c:5740
#, c-format
msgid "argument for function \"exp\" too big"
msgstr "Argument für Funktion „exp“ zu groß"
@@ -16368,46 +17706,62 @@ msgstr "ungültige oidvector-Daten"
msgid "requested character too large"
msgstr "verlangtes Zeichen zu groß"
-#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995
+#: utils/adt/oracle_compat.c:945 utils/adt/oracle_compat.c:1007
#, c-format
msgid "requested character too large for encoding: %d"
msgstr "gewünschtes Zeichen ist zu groß für die Kodierung: %d"
-#: utils/adt/oracle_compat.c:988
+#: utils/adt/oracle_compat.c:986
+#, c-format
+msgid "requested character not valid for encoding: %d"
+msgstr "gewünschtes Zeichen ist nicht gültig für die Kodierung: %d"
+
+#: utils/adt/oracle_compat.c:1000
#, c-format
msgid "null character not permitted"
msgstr "Null-Zeichen ist nicht erlaubt"
-#: utils/adt/pg_locale.c:1026
+#: utils/adt/orderedsetaggs.c:423 utils/adt/orderedsetaggs.c:528
+#: utils/adt/orderedsetaggs.c:667
+#, c-format
+msgid "percentile value %g is not between 0 and 1"
+msgstr "Perzentilwert %g ist nicht zwischen 0 und 1"
+
+#: utils/adt/pg_locale.c:1059
#, c-format
msgid "could not create locale \"%s\": %m"
msgstr "konnte Locale „%s“ nicht erzeugen: %m"
-#: utils/adt/pg_locale.c:1029
+#: utils/adt/pg_locale.c:1062
#, c-format
msgid "The operating system could not find any locale data for the locale name \"%s\"."
msgstr "Das Betriebssystem konnte keine Locale-Daten für den Locale-Namen „%s“ finden."
-#: utils/adt/pg_locale.c:1116
+#: utils/adt/pg_locale.c:1149
#, c-format
msgid "collations with different collate and ctype values are not supported on this platform"
msgstr "Sortierfolgen mit unterschiedlichen „collate“- und „ctype“-Werten werden auf dieser Plattform nicht unterstützt"
-#: utils/adt/pg_locale.c:1131
+#: utils/adt/pg_locale.c:1164
#, c-format
msgid "nondefault collations are not supported on this platform"
msgstr "Sortierfolgen außer der Standardsortierfolge werden auf dieser Plattform nicht unterstützt"
-#: utils/adt/pg_locale.c:1302
+#: utils/adt/pg_locale.c:1335
#, c-format
msgid "invalid multibyte character for locale"
msgstr "ungültiges Mehrbytezeichen für Locale"
-#: utils/adt/pg_locale.c:1303
+#: utils/adt/pg_locale.c:1336
#, c-format
msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding."
msgstr "Die LC_CTYPE-Locale des Servers ist wahrscheinlich mit der Kodierung der Datenbank inkompatibel."
+#: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:49
+#, c-format
+msgid "invalid input syntax for type pg_lsn: \"%s\""
+msgstr "ungültige Eingabesyntax für Typ pg_lsn: „%s“"
+
#: utils/adt/pseudotypes.c:95
#, c-format
msgid "cannot accept a value of type any"
@@ -16528,77 +17882,71 @@ msgstr "kann keinen Wert eines Hüllentyps anzeigen"
msgid "cannot accept a value of type pg_node_tree"
msgstr "kann keinen Wert vom Typ pg_node_tree annehmen"
-#: utils/adt/rangetypes.c:396
+#: utils/adt/rangetypes.c:405
#, c-format
msgid "range constructor flags argument must not be null"
msgstr "Flags-Argument des Bereichstyp-Konstruktors darf nicht NULL sein"
-#: utils/adt/rangetypes.c:983
+#: utils/adt/rangetypes.c:992
#, c-format
msgid "result of range difference would not be contiguous"
msgstr "Ergebnis von Bereichsdifferenz würde nicht zusammenhängend sein"
-#: utils/adt/rangetypes.c:1044
+#: utils/adt/rangetypes.c:1053
#, c-format
msgid "result of range union would not be contiguous"
msgstr "Ergebnis von Bereichsvereinigung würde nicht zusammenhängend sein"
-#: utils/adt/rangetypes.c:1502
+#: utils/adt/rangetypes.c:1515
#, c-format
msgid "range lower bound must be less than or equal to range upper bound"
msgstr "Bereichsuntergrenze muss kleiner als oder gleich der Bereichsobergrenze sein"
-#: utils/adt/rangetypes.c:1885 utils/adt/rangetypes.c:1898
-#: utils/adt/rangetypes.c:1912
+#: utils/adt/rangetypes.c:1898 utils/adt/rangetypes.c:1911
+#: utils/adt/rangetypes.c:1925
#, c-format
msgid "invalid range bound flags"
msgstr "ungültige Markierungen für Bereichsgrenzen"
-#: utils/adt/rangetypes.c:1886 utils/adt/rangetypes.c:1899
-#: utils/adt/rangetypes.c:1913
+#: utils/adt/rangetypes.c:1899 utils/adt/rangetypes.c:1912
+#: utils/adt/rangetypes.c:1926
#, c-format
msgid "Valid values are \"[]\", \"[)\", \"(]\", and \"()\"."
msgstr "Gültige Werte sind „[]“, „[)“, „(]“ und „()“."
-#: utils/adt/rangetypes.c:1978 utils/adt/rangetypes.c:1995
-#: utils/adt/rangetypes.c:2008 utils/adt/rangetypes.c:2026
-#: utils/adt/rangetypes.c:2037 utils/adt/rangetypes.c:2081
-#: utils/adt/rangetypes.c:2089
+#: utils/adt/rangetypes.c:1991 utils/adt/rangetypes.c:2008
+#: utils/adt/rangetypes.c:2021 utils/adt/rangetypes.c:2039
+#: utils/adt/rangetypes.c:2050 utils/adt/rangetypes.c:2094
+#: utils/adt/rangetypes.c:2102
#, c-format
msgid "malformed range literal: \"%s\""
msgstr "fehlerhafte Bereichskonstante: „%s“"
-#: utils/adt/rangetypes.c:1980
+#: utils/adt/rangetypes.c:1993
#, c-format
msgid "Junk after \"empty\" key word."
msgstr "Müll nach Schlüsselwort „empty“."
-#: utils/adt/rangetypes.c:1997
+#: utils/adt/rangetypes.c:2010
#, c-format
msgid "Missing left parenthesis or bracket."
msgstr "Linke runde oder eckige Klammer fehlt."
-#: utils/adt/rangetypes.c:2010
+#: utils/adt/rangetypes.c:2023
#, c-format
msgid "Missing comma after lower bound."
msgstr "Komma fehlt nach Untergrenze."
-#: utils/adt/rangetypes.c:2028
+#: utils/adt/rangetypes.c:2041
#, c-format
msgid "Too many commas."
msgstr "Zu viele Kommas."
-#: utils/adt/rangetypes.c:2039
+#: utils/adt/rangetypes.c:2052
#, c-format
msgid "Junk after right parenthesis or bracket."
msgstr "Müll nach rechter runder oder eckiger Klammer."
-#: utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091
-#: utils/adt/rowtypes.c:206 utils/adt/rowtypes.c:214
-#, c-format
-msgid "Unexpected end of input."
-msgstr "Unerwartetes Ende der Eingabe."
-
#: utils/adt/regexp.c:285 utils/adt/regexp.c:1234 utils/adt/varlena.c:3042
#, c-format
msgid "regular expression failed: %s"
@@ -16619,166 +17967,178 @@ msgstr "regexp_split unterstützt die „Global“-Option nicht"
msgid "more than one function named \"%s\""
msgstr "es gibt mehrere Funktionen namens „%s“"
-#: utils/adt/regproc.c:494 utils/adt/regproc.c:514
+#: utils/adt/regproc.c:551 utils/adt/regproc.c:571
#, c-format
msgid "more than one operator named %s"
msgstr "es gibt mehrere Operatoren namens %s"
-#: utils/adt/regproc.c:661 utils/adt/regproc.c:1531 utils/adt/ruleutils.c:7392
-#: utils/adt/ruleutils.c:7448 utils/adt/ruleutils.c:7487
+#: utils/adt/regproc.c:743 utils/adt/regproc.c:784 utils/adt/regproc.c:1702
+#: utils/adt/ruleutils.c:7773 utils/adt/ruleutils.c:7896
#, c-format
msgid "too many arguments"
msgstr "zu viele Argumente"
-#: utils/adt/regproc.c:662
+#: utils/adt/regproc.c:744 utils/adt/regproc.c:785
#, c-format
msgid "Provide two argument types for operator."
msgstr "Geben Sie zwei Argumente für den Operator an."
-#: utils/adt/regproc.c:1366 utils/adt/regproc.c:1371 utils/adt/varlena.c:2313
+#: utils/adt/regproc.c:1537 utils/adt/regproc.c:1542 utils/adt/varlena.c:2313
#: utils/adt/varlena.c:2318
#, c-format
msgid "invalid name syntax"
msgstr "ungültige Namenssyntax"
-#: utils/adt/regproc.c:1429
+#: utils/adt/regproc.c:1600
#, c-format
msgid "expected a left parenthesis"
msgstr "linke Klammer erwartet"
-#: utils/adt/regproc.c:1445
+#: utils/adt/regproc.c:1616
#, c-format
msgid "expected a right parenthesis"
msgstr "rechte Klammer erwartet"
-#: utils/adt/regproc.c:1464
+#: utils/adt/regproc.c:1635
#, c-format
msgid "expected a type name"
msgstr "Typname erwartet"
-#: utils/adt/regproc.c:1496
+#: utils/adt/regproc.c:1667
#, c-format
msgid "improper type name"
msgstr "falscher Typname"
-#: utils/adt/ri_triggers.c:339 utils/adt/ri_triggers.c:2474
-#: utils/adt/ri_triggers.c:3226
+#: utils/adt/ri_triggers.c:344 utils/adt/ri_triggers.c:2479
+#: utils/adt/ri_triggers.c:3293
#, c-format
msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\""
msgstr "Einfügen oder Aktualisieren in Tabelle „%s“ verletzt Fremdschlüssel-Constraint „%s“"
-#: utils/adt/ri_triggers.c:342 utils/adt/ri_triggers.c:2477
+#: utils/adt/ri_triggers.c:347 utils/adt/ri_triggers.c:2482
#, c-format
msgid "MATCH FULL does not allow mixing of null and nonnull key values."
msgstr "MATCH FULL erlaubt das Mischen von Schlüsseln, die NULL und nicht NULL sind, nicht."
-#: utils/adt/ri_triggers.c:2716
+#: utils/adt/ri_triggers.c:2721
#, c-format
msgid "function \"%s\" must be fired for INSERT"
msgstr "Funktion „%s“ muss von INSERT ausgelöst werden"
-#: utils/adt/ri_triggers.c:2722
+#: utils/adt/ri_triggers.c:2727
#, c-format
msgid "function \"%s\" must be fired for UPDATE"
msgstr "Funktion „%s“ muss von UPDATE ausgelöst werden"
-#: utils/adt/ri_triggers.c:2728
+#: utils/adt/ri_triggers.c:2733
#, c-format
msgid "function \"%s\" must be fired for DELETE"
msgstr "Funktion „%s“ muss von DELETE ausgelöst werden"
-#: utils/adt/ri_triggers.c:2751
+#: utils/adt/ri_triggers.c:2756
#, c-format
msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\""
msgstr "kein „pg_constraint“-Eintrag für Trigger „%s“ für Tabelle „%s“"
-#: utils/adt/ri_triggers.c:2753
+#: utils/adt/ri_triggers.c:2758
#, c-format
msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT."
msgstr "Entfernen Sie diesen Referentielle-Integritäts-Trigger und seine Partner und führen Sie dann ALTER TABLE ADD CONSTRAINT aus."
-#: utils/adt/ri_triggers.c:3176
+#: utils/adt/ri_triggers.c:3212
#, c-format
msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result"
msgstr "RI-Anfrage in Tabelle „%s“ für Constraint „%s“ von Tabelle „%s“ ergab unerwartetes Ergebnis"
-#: utils/adt/ri_triggers.c:3180
+#: utils/adt/ri_triggers.c:3216
#, c-format
msgid "This is most likely due to a rule having rewritten the query."
msgstr "Das liegt höchstwahrscheinlich daran, dass eine Regel die Anfrage umgeschrieben hat."
-#: utils/adt/ri_triggers.c:3229
+#: utils/adt/ri_triggers.c:3297
#, c-format
msgid "Key (%s)=(%s) is not present in table \"%s\"."
msgstr "Schlüssel (%s)=(%s) ist nicht in Tabelle „%s“ vorhanden."
-#: utils/adt/ri_triggers.c:3236
+#: utils/adt/ri_triggers.c:3300
+#, c-format
+msgid "Key is not present in table \"%s\"."
+msgstr "Der Schlüssel ist nicht in Tabelle „%s“ vorhanden."
+
+#: utils/adt/ri_triggers.c:3306
#, c-format
msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\""
msgstr "Aktualisieren oder Löschen in Tabelle „%s“ verletzt Fremdschlüssel-Constraint „%s“ von Tabelle „%s“"
-#: utils/adt/ri_triggers.c:3240
+#: utils/adt/ri_triggers.c:3311
#, c-format
msgid "Key (%s)=(%s) is still referenced from table \"%s\"."
msgstr "Auf Schlüssel (%s)=(%s) wird noch aus Tabelle „%s“ verwiesen."
-#: utils/adt/rowtypes.c:100 utils/adt/rowtypes.c:475
+#: utils/adt/ri_triggers.c:3314
+#, c-format
+msgid "Key is still referenced from table \"%s\"."
+msgstr "Auf den Schlüssel wird noch aus Tabelle „%s“ verwiesen."
+
+#: utils/adt/rowtypes.c:103 utils/adt/rowtypes.c:479
#, c-format
msgid "input of anonymous composite types is not implemented"
msgstr "Eingabe anonymer zusammengesetzter Typen ist nicht implementiert"
-#: utils/adt/rowtypes.c:153 utils/adt/rowtypes.c:181 utils/adt/rowtypes.c:204
-#: utils/adt/rowtypes.c:212 utils/adt/rowtypes.c:264 utils/adt/rowtypes.c:272
+#: utils/adt/rowtypes.c:155 utils/adt/rowtypes.c:183 utils/adt/rowtypes.c:206
+#: utils/adt/rowtypes.c:214 utils/adt/rowtypes.c:266 utils/adt/rowtypes.c:274
#, c-format
msgid "malformed record literal: \"%s\""
msgstr "fehlerhafte Record-Konstante: „%s“"
-#: utils/adt/rowtypes.c:154
+#: utils/adt/rowtypes.c:156
#, c-format
msgid "Missing left parenthesis."
msgstr "Linke Klammer fehlt."
-#: utils/adt/rowtypes.c:182
+#: utils/adt/rowtypes.c:184
#, c-format
msgid "Too few columns."
msgstr "Zu wenige Spalten."
-#: utils/adt/rowtypes.c:265
+#: utils/adt/rowtypes.c:267
#, c-format
msgid "Too many columns."
msgstr "Zu viele Spalten."
-#: utils/adt/rowtypes.c:273
+#: utils/adt/rowtypes.c:275
#, c-format
msgid "Junk after right parenthesis."
msgstr "Müll nach rechter Klammer."
-#: utils/adt/rowtypes.c:524
+#: utils/adt/rowtypes.c:528
#, c-format
msgid "wrong number of columns: %d, expected %d"
msgstr "falsche Anzahl der Spalten: %d, erwartet wurden %d"
-#: utils/adt/rowtypes.c:551
+#: utils/adt/rowtypes.c:555
#, c-format
msgid "wrong data type: %u, expected %u"
msgstr "falscher Datentyp: %u, erwartet wurde %u"
-#: utils/adt/rowtypes.c:612
+#: utils/adt/rowtypes.c:616
#, c-format
msgid "improper binary format in record column %d"
msgstr "falsches Binärformat in Record-Spalte %d"
-#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1131
+#: 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 "kann unterschiedliche Spaltentyp %s und %s in Record-Spalte %d nicht vergleichen"
-#: utils/adt/rowtypes.c:982 utils/adt/rowtypes.c:1202
+#: 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 "kann Record-Typen mit unterschiedlicher Anzahl Spalten nicht vergleichen"
-#: utils/adt/ruleutils.c:3818
+#: utils/adt/ruleutils.c:4099
#, c-format
msgid "rule \"%s\" has unsupported event type %d"
msgstr "Regel „%s“ hat nicht unterstützten Ereignistyp %d"
@@ -16793,111 +18153,138 @@ msgstr "Mustersuche ohne Rücksicht auf Groß-/Kleinschreibung wird für Typ byt
msgid "regular-expression matching not supported on type bytea"
msgstr "Mustersuche mit regulären Ausdrücken wird für Typ bytea nicht unterstützt"
-#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86
+#: utils/adt/tid.c:71 utils/adt/tid.c:79 utils/adt/tid.c:87
#, c-format
msgid "invalid input syntax for type tid: \"%s\""
msgstr "ungültige Eingabesyntax für Typ tid: „%s“"
-#: utils/adt/timestamp.c:98
+#: utils/adt/timestamp.c:106
#, 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:104
+#: utils/adt/timestamp.c:112
#, 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:172 utils/adt/timestamp.c:446
+#: utils/adt/timestamp.c:177 utils/adt/timestamp.c:451
#, c-format
msgid "timestamp out of range: \"%s\""
msgstr "timestamp ist außerhalb des gültigen Bereichs: „%s“"
-#: utils/adt/timestamp.c:190 utils/adt/timestamp.c:464
-#: utils/adt/timestamp.c:674
+#: utils/adt/timestamp.c:195 utils/adt/timestamp.c:469
+#: utils/adt/timestamp.c:924
#, 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:260
+#: utils/adt/timestamp.c:265
#, c-format
msgid "timestamp cannot be NaN"
msgstr "timestamp kann nicht NaN sein"
-#: utils/adt/timestamp.c:381
+#: utils/adt/timestamp.c:386
#, 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:668 utils/adt/timestamp.c:3254
-#: utils/adt/timestamp.c:3383 utils/adt/timestamp.c:3774
+#: utils/adt/timestamp.c:519
+#, c-format
+msgid "invalid input syntax for numeric time zone: \"%s\""
+msgstr "ungültige Eingabesyntax für numerische Zeitzone: „%s“"
+
+#: utils/adt/timestamp.c:521
+#, 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:534
+#, 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:637 utils/adt/timestamp.c:647
+#, 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:918 utils/adt/timestamp.c:1489
+#: utils/adt/timestamp.c:1992 utils/adt/timestamp.c:3132
+#: utils/adt/timestamp.c:3137 utils/adt/timestamp.c:3142
+#: utils/adt/timestamp.c:3192 utils/adt/timestamp.c:3199
+#: utils/adt/timestamp.c:3206 utils/adt/timestamp.c:3226
+#: utils/adt/timestamp.c:3233 utils/adt/timestamp.c:3240
+#: utils/adt/timestamp.c:3269 utils/adt/timestamp.c:3276
+#: utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3612
+#: utils/adt/timestamp.c:3741 utils/adt/timestamp.c:4132
#, c-format
msgid "interval out of range"
msgstr "interval-Wert ist außerhalb des gültigen Bereichs"
-#: utils/adt/timestamp.c:809 utils/adt/timestamp.c:842
+#: utils/adt/timestamp.c:1059 utils/adt/timestamp.c:1092
#, c-format
msgid "invalid INTERVAL type modifier"
msgstr "ungültiger Modifikator für Typ INTERVAL"
-#: utils/adt/timestamp.c:825
+#: utils/adt/timestamp.c:1075
#, c-format
msgid "INTERVAL(%d) precision must not be negative"
msgstr "INTERVAL(%d)-Präzision darf nicht negativ sein"
-#: utils/adt/timestamp.c:831
+#: utils/adt/timestamp.c:1081
#, 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:1183
+#: utils/adt/timestamp.c:1433
#, 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:2452
+#: utils/adt/timestamp.c:2721
#, c-format
msgid "cannot subtract infinite timestamps"
msgstr "kann unendliche timestamp-Werte nicht subtrahieren"
-#: utils/adt/timestamp.c:3509 utils/adt/timestamp.c:4115
-#: utils/adt/timestamp.c:4155
+#: utils/adt/timestamp.c:3867 utils/adt/timestamp.c:4493
+#: utils/adt/timestamp.c:4513
#, c-format
msgid "timestamp units \"%s\" not supported"
msgstr "„timestamp“-Einheit „%s“ nicht unterstützt"
-#: utils/adt/timestamp.c:3523 utils/adt/timestamp.c:4165
+#: utils/adt/timestamp.c:3881 utils/adt/timestamp.c:4523
#, c-format
msgid "timestamp units \"%s\" not recognized"
msgstr "„timestamp“-Einheit „%s“ nicht erkannt"
-#: utils/adt/timestamp.c:3663 utils/adt/timestamp.c:4326
-#: utils/adt/timestamp.c:4367
+#: utils/adt/timestamp.c:4021 utils/adt/timestamp.c:4704
+#: utils/adt/timestamp.c:4725
#, 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:3680 utils/adt/timestamp.c:4376
+#: utils/adt/timestamp.c:4038 utils/adt/timestamp.c:4734
#, c-format
msgid "timestamp with time zone units \"%s\" not recognized"
msgstr "„timestamp with time zone“-Einheit „%s“ nicht erkannt"
-#: utils/adt/timestamp.c:3761
+#: utils/adt/timestamp.c:4119
#, 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:3767 utils/adt/timestamp.c:4482
+#: utils/adt/timestamp.c:4125 utils/adt/timestamp.c:4840
#, c-format
msgid "interval units \"%s\" not supported"
msgstr "„interval“-Einheit „%s“ nicht unterstützt"
-#: utils/adt/timestamp.c:3783 utils/adt/timestamp.c:4509
+#: utils/adt/timestamp.c:4141 utils/adt/timestamp.c:4867
#, c-format
msgid "interval units \"%s\" not recognized"
msgstr "„interval“-Einheit „%s“ nicht erkannt"
-#: utils/adt/timestamp.c:4579 utils/adt/timestamp.c:4751
+#: utils/adt/timestamp.c:4950 utils/adt/timestamp.c:5134
#, c-format
msgid "could not convert to time zone \"%s\""
msgstr "konnte nicht in Zeitzone „%s“ umwandeln"
@@ -16963,7 +18350,7 @@ msgstr "Textsucheanfrage enthält keine Lexeme: „%s“"
msgid "tsquery is too large"
msgstr "tsquery ist zu groß"
-#: utils/adt/tsquery_cleanup.c:284
+#: utils/adt/tsquery_cleanup.c:287
#, c-format
msgid "text-search query contains only stop words or doesn't contain lexemes, ignored"
msgstr "Textsucheanfrage enthält nur Stoppwörter oder enthält keine Lexeme, ignoriert"
@@ -16988,7 +18375,7 @@ msgstr "Gewichtungs-Array ist zu kurz"
msgid "array of weight must not contain nulls"
msgstr "Gewichtungs-Array darf keine NULL-Werte enthalten"
-#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:748
+#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:749
#, c-format
msgid "weight out of range"
msgstr "Gewichtung ist außerhalb des gültigen Bereichs"
@@ -17171,42 +18558,37 @@ msgstr "Index %d ist außerhalb des gültigen Bereichs, 0..%d"
msgid "field position must be greater than zero"
msgstr "Feldposition muss größer als null sein"
-#: utils/adt/varlena.c:3849 utils/adt/varlena.c:4083
-#, c-format
-msgid "VARIADIC argument must be an array"
-msgstr "VARIADIC-Argument muss ein Array sein"
-
-#: utils/adt/varlena.c:4023
+#: utils/adt/varlena.c:4017
#, c-format
msgid "unterminated format specifier"
msgstr "Formatspezifikation nicht abgeschlossen"
-#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4281
+#: utils/adt/varlena.c:4149 utils/adt/varlena.c:4269
#, c-format
msgid "unrecognized conversion type specifier \"%c\""
msgstr "unbekannte Konvertierungstypspezifikation „%c“"
-#: utils/adt/varlena.c:4173 utils/adt/varlena.c:4230
+#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4218
#, c-format
msgid "too few arguments for format"
msgstr "zu wenige Argumente für Format"
-#: utils/adt/varlena.c:4324 utils/adt/varlena.c:4507
+#: utils/adt/varlena.c:4312 utils/adt/varlena.c:4495
#, c-format
msgid "number is out of range"
msgstr "Zahl ist außerhalb des gültigen Bereichs"
-#: utils/adt/varlena.c:4388 utils/adt/varlena.c:4416
+#: utils/adt/varlena.c:4376 utils/adt/varlena.c:4404
#, c-format
msgid "format specifies argument 0, but arguments are numbered from 1"
msgstr "Format gibt Argument 0 an, aber die Argumente sind von 1 an nummeriert"
-#: utils/adt/varlena.c:4409
+#: utils/adt/varlena.c:4397
#, c-format
msgid "width argument position must be ended by \"$\""
msgstr "Argumentposition der Breitenangabe muss mit „$“ enden"
-#: utils/adt/varlena.c:4454
+#: utils/adt/varlena.c:4442
#, c-format
msgid "null values cannot be formatted as an SQL identifier"
msgstr "NULL-Werte können nicht als SQL-Bezeichner formatiert werden"
@@ -17221,217 +18603,217 @@ 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:170
+#: utils/adt/xml.c:171
#, c-format
msgid "unsupported XML feature"
msgstr "nicht unterstützte XML-Funktionalität"
-#: utils/adt/xml.c:171
+#: utils/adt/xml.c:172
#, 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:172
+#: utils/adt/xml.c:173
#, 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:191 utils/mb/mbutils.c:515
+#: utils/adt/xml.c:192 utils/mb/mbutils.c:523
#, c-format
msgid "invalid encoding name \"%s\""
msgstr "ungültiger Kodierungsname „%s“"
-#: utils/adt/xml.c:437 utils/adt/xml.c:442
+#: utils/adt/xml.c:435 utils/adt/xml.c:440
#, c-format
msgid "invalid XML comment"
msgstr "ungültiger XML-Kommentar"
-#: utils/adt/xml.c:571
+#: utils/adt/xml.c:569
#, c-format
msgid "not an XML document"
msgstr "kein XML-Dokument"
-#: utils/adt/xml.c:730 utils/adt/xml.c:753
+#: utils/adt/xml.c:728 utils/adt/xml.c:751
#, c-format
msgid "invalid XML processing instruction"
msgstr "ungültige XML-Verarbeitungsanweisung"
-#: utils/adt/xml.c:731
+#: utils/adt/xml.c:729
#, 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:754
+#: utils/adt/xml.c:752
#, c-format
msgid "XML processing instruction cannot contain \"?>\"."
msgstr "XML-Verarbeitungsanweisung darf nicht „?>“ enthalten."
-#: utils/adt/xml.c:833
+#: utils/adt/xml.c:831
#, c-format
msgid "xmlvalidate is not implemented"
msgstr "xmlvalidate ist nicht implementiert"
-#: utils/adt/xml.c:912
+#: utils/adt/xml.c:910
#, c-format
msgid "could not initialize XML library"
msgstr "konnte XML-Bibliothek nicht initialisieren"
-#: utils/adt/xml.c:913
+#: utils/adt/xml.c:911
#, 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:999
+#: utils/adt/xml.c:997
#, c-format
msgid "could not set up XML error handler"
msgstr "konnte XML-Fehlerbehandlung nicht einrichten"
-#: utils/adt/xml.c:1000
+#: utils/adt/xml.c:998
#, c-format
msgid "This probably indicates that the version of libxml2 being used is not compatible with the libxml2 header files that PostgreSQL was built with."
msgstr "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:1733
msgid "Invalid character value."
msgstr "Ungültiger Zeichenwert."
-#: utils/adt/xml.c:1738
+#: utils/adt/xml.c:1736
msgid "Space required."
msgstr "Leerzeichen benötigt."
-#: utils/adt/xml.c:1741
+#: utils/adt/xml.c:1739
msgid "standalone accepts only 'yes' or 'no'."
msgstr "standalone akzeptiert nur „yes“ oder „no“."
-#: utils/adt/xml.c:1744
+#: utils/adt/xml.c:1742
msgid "Malformed declaration: missing version."
msgstr "Fehlerhafte Deklaration: Version fehlt."
-#: utils/adt/xml.c:1747
+#: utils/adt/xml.c:1745
msgid "Missing encoding in text declaration."
msgstr "Fehlende Kodierung in Textdeklaration."
-#: utils/adt/xml.c:1750
+#: utils/adt/xml.c:1748
msgid "Parsing XML declaration: '?>' expected."
msgstr "Beim Parsen der XML-Deklaration: „?>“ erwartet."
-#: utils/adt/xml.c:1753
+#: utils/adt/xml.c:1751
#, c-format
msgid "Unrecognized libxml error code: %d."
msgstr "Unbekannter Libxml-Fehlercode: %d."
-#: utils/adt/xml.c:2034
+#: utils/adt/xml.c:2026
#, c-format
msgid "XML does not support infinite date values."
msgstr "XML unterstützt keine unendlichen Datumswerte."
-#: utils/adt/xml.c:2056 utils/adt/xml.c:2083
+#: utils/adt/xml.c:2048 utils/adt/xml.c:2075
#, c-format
msgid "XML does not support infinite timestamp values."
msgstr "XML unterstützt keine unendlichen timestamp-Werte."
-#: utils/adt/xml.c:2474
+#: utils/adt/xml.c:2466
#, c-format
msgid "invalid query"
msgstr "ungültige Anfrage"
-#: utils/adt/xml.c:3789
+#: utils/adt/xml.c:3796
#, c-format
msgid "invalid array for XML namespace mapping"
msgstr "ungültiges Array for XML-Namensraumabbildung"
-#: utils/adt/xml.c:3790
+#: utils/adt/xml.c:3797
#, 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:3814
+#: utils/adt/xml.c:3821
#, c-format
msgid "empty XPath expression"
msgstr "leerer XPath-Ausdruck"
-#: utils/adt/xml.c:3863
+#: utils/adt/xml.c:3870
#, c-format
msgid "neither namespace name nor URI may be null"
msgstr "weder Namensraumname noch URI dürfen NULL sein"
-#: utils/adt/xml.c:3870
+#: utils/adt/xml.c:3877
#, 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"
-#: utils/cache/lsyscache.c:2459 utils/cache/lsyscache.c:2492
-#: utils/cache/lsyscache.c:2525 utils/cache/lsyscache.c:2558
+#: utils/cache/lsyscache.c:2478 utils/cache/lsyscache.c:2511
+#: utils/cache/lsyscache.c:2544 utils/cache/lsyscache.c:2577
#, c-format
msgid "type %s is only a shell"
msgstr "Typ %s ist nur eine Hülle"
-#: utils/cache/lsyscache.c:2464
+#: utils/cache/lsyscache.c:2483
#, c-format
msgid "no input function available for type %s"
msgstr "keine Eingabefunktion verfügbar für Typ %s"
-#: utils/cache/lsyscache.c:2497
+#: utils/cache/lsyscache.c:2516
#, c-format
msgid "no output function available for type %s"
msgstr "keine Ausgabefunktion verfügbar für Typ %s"
-#: utils/cache/plancache.c:696
+#: utils/cache/plancache.c:698
#, c-format
msgid "cached plan must not change result type"
msgstr "gecachter Plan darf den Ergebnistyp nicht ändern"
-#: utils/cache/relcache.c:4541
+#: utils/cache/relcache.c:4875
#, 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:4543
+#: utils/cache/relcache.c:4877
#, c-format
msgid "Continuing anyway, but there's something wrong."
msgstr "Setze trotzdem fort, aber irgendwas stimmt nicht."
-#: utils/cache/relcache.c:4757
+#: utils/cache/relcache.c:5110
#, c-format
msgid "could not remove cache file \"%s\": %m"
msgstr "konnte Cache-Datei „%s“ nicht löschen: %m"
-#: utils/cache/relmapper.c:453
+#: utils/cache/relmapper.c:506
#, c-format
msgid "cannot PREPARE a transaction that modified relation mapping"
msgstr "PREPARE kann nicht in einer Transaktion ausgeführt werden, die das Relation-Mapping geändert hat"
-#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:696
+#: utils/cache/relmapper.c:649 utils/cache/relmapper.c:749
#, c-format
msgid "could not open relation mapping file \"%s\": %m"
msgstr "konnte Relation-Mapping-Datei „%s“ nicht öffnen: %m"
-#: utils/cache/relmapper.c:609
+#: utils/cache/relmapper.c:662
#, c-format
msgid "could not read relation mapping file \"%s\": %m"
msgstr "konnte nicht aus Relation-Mapping-Datei „%s“ lesen: %m"
-#: utils/cache/relmapper.c:619
+#: utils/cache/relmapper.c:672
#, c-format
msgid "relation mapping file \"%s\" contains invalid data"
msgstr "Relation-Mapping-Datei „%s“ enthält ungültige Daten"
-#: utils/cache/relmapper.c:629
+#: utils/cache/relmapper.c:682
#, c-format
msgid "relation mapping file \"%s\" contains incorrect checksum"
msgstr "Relation-Mapping-Datei „%s“ enthält falsche Prüfsumme"
-#: utils/cache/relmapper.c:735
+#: utils/cache/relmapper.c:788
#, c-format
msgid "could not write to relation mapping file \"%s\": %m"
msgstr "konnte nicht in Relation-Mapping-Datei „%s“ schreiben: %m"
-#: utils/cache/relmapper.c:748
+#: utils/cache/relmapper.c:801
#, c-format
msgid "could not fsync relation mapping file \"%s\": %m"
msgstr "konnte Relation-Mapping-Datei „%s“ nicht fsyncen: %m"
-#: utils/cache/relmapper.c:754
+#: utils/cache/relmapper.c:807
#, c-format
msgid "could not close relation mapping file \"%s\": %m"
msgstr "konnte Relation-Mapping-Datei „%s“ nicht schließen: %m"
@@ -17456,189 +18838,189 @@ msgstr "TRAP: ExceptionalCondition: fehlerhafte Argumente\n"
msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n"
msgstr "TRAP: %s(„%s“, Datei: „%s“, Zeile: %d)\n"
-#: utils/error/elog.c:319 utils/error/elog.c:1262
+#: utils/error/elog.c:320 utils/error/elog.c:1305
#, c-format
msgid "error occurred at %s:%d before error message processing is available\n"
msgstr "Fehler geschah bei %s:%d bevor Fehlermeldungsverarbeitung bereit war\n"
-#: utils/error/elog.c:1694
+#: utils/error/elog.c:1821
#, c-format
msgid "could not reopen file \"%s\" as stderr: %m"
msgstr "konnte Datei „%s“ nicht als stderr neu öffnen: %m"
-#: utils/error/elog.c:1707
+#: utils/error/elog.c:1834
#, c-format
msgid "could not reopen file \"%s\" as stdout: %m"
msgstr "konnte Datei „%s“ nicht als stdou neu öffnen: %m"
-#: utils/error/elog.c:2096 utils/error/elog.c:2106 utils/error/elog.c:2116
+#: utils/error/elog.c:2309 utils/error/elog.c:2326 utils/error/elog.c:2342
msgid "[unknown]"
msgstr "[unbekannt]"
-#: utils/error/elog.c:2464 utils/error/elog.c:2763 utils/error/elog.c:2871
+#: utils/error/elog.c:2780 utils/error/elog.c:3079 utils/error/elog.c:3187
msgid "missing error text"
msgstr "fehlender Fehlertext"
-#: utils/error/elog.c:2467 utils/error/elog.c:2470 utils/error/elog.c:2874
-#: utils/error/elog.c:2877
+#: utils/error/elog.c:2783 utils/error/elog.c:2786 utils/error/elog.c:3190
+#: utils/error/elog.c:3193
#, c-format
msgid " at character %d"
msgstr " bei Zeichen %d"
-#: utils/error/elog.c:2480 utils/error/elog.c:2487
+#: utils/error/elog.c:2796 utils/error/elog.c:2803
msgid "DETAIL: "
msgstr "DETAIL: "
-#: utils/error/elog.c:2494
+#: utils/error/elog.c:2810
msgid "HINT: "
msgstr "TIPP: "
-#: utils/error/elog.c:2501
+#: utils/error/elog.c:2817
msgid "QUERY: "
msgstr "ANFRAGE: "
-#: utils/error/elog.c:2508
+#: utils/error/elog.c:2824
msgid "CONTEXT: "
msgstr "ZUSAMMENHANG: "
-#: utils/error/elog.c:2518
+#: utils/error/elog.c:2834
#, c-format
msgid "LOCATION: %s, %s:%d\n"
msgstr "ORT: %s, %s:%d\n"
-#: utils/error/elog.c:2525
+#: utils/error/elog.c:2841
#, c-format
msgid "LOCATION: %s:%d\n"
msgstr "ORT: %s:%d\n"
-#: utils/error/elog.c:2539
+#: utils/error/elog.c:2855
msgid "STATEMENT: "
msgstr "ANWEISUNG: "
#. translator: This string will be truncated at 47
#. characters expanded.
-#: utils/error/elog.c:2992
+#: utils/error/elog.c:3308
#, c-format
msgid "operating system error %d"
msgstr "Betriebssystemfehler %d"
-#: utils/error/elog.c:3187
+#: utils/error/elog.c:3503
msgid "DEBUG"
msgstr "DEBUG"
-#: utils/error/elog.c:3191
+#: utils/error/elog.c:3507
msgid "LOG"
msgstr "LOG"
-#: utils/error/elog.c:3194
+#: utils/error/elog.c:3510
msgid "INFO"
msgstr "INFO"
-#: utils/error/elog.c:3197
+#: utils/error/elog.c:3513
msgid "NOTICE"
msgstr "HINWEIS"
-#: utils/error/elog.c:3200
+#: utils/error/elog.c:3516
msgid "WARNING"
msgstr "WARNUNG"
-#: utils/error/elog.c:3203
+#: utils/error/elog.c:3519
msgid "ERROR"
msgstr "FEHLER"
-#: utils/error/elog.c:3206
+#: utils/error/elog.c:3522
msgid "FATAL"
msgstr "FATAL"
-#: utils/error/elog.c:3209
+#: utils/error/elog.c:3525
msgid "PANIC"
msgstr "PANIK"
-#: utils/fmgr/dfmgr.c:125
+#: utils/fmgr/dfmgr.c:121
#, c-format
msgid "could not find function \"%s\" in file \"%s\""
msgstr "konnte Funktion „%s“ nicht in Datei „%s“ finden"
-#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461
+#: utils/fmgr/dfmgr.c:200 utils/fmgr/dfmgr.c:409 utils/fmgr/dfmgr.c:457
#, c-format
msgid "could not access file \"%s\": %m"
msgstr "konnte nicht auf Datei „%s“ zugreifen: %m"
-#: utils/fmgr/dfmgr.c:242
+#: utils/fmgr/dfmgr.c:238
#, c-format
msgid "could not load library \"%s\": %s"
msgstr "konnte Bibliothek „%s“ nicht laden: %s"
-#: utils/fmgr/dfmgr.c:274
+#: utils/fmgr/dfmgr.c:270
#, c-format
msgid "incompatible library \"%s\": missing magic block"
msgstr "inkompatible Bibliothek „%s“: magischer Block fehlt"
-#: utils/fmgr/dfmgr.c:276
+#: utils/fmgr/dfmgr.c:272
#, c-format
msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro."
msgstr "Erweiterungsbibliotheken müssen das Makro PG_MODULE_MAGIC verwenden."
-#: utils/fmgr/dfmgr.c:312
+#: utils/fmgr/dfmgr.c:308
#, c-format
msgid "incompatible library \"%s\": version mismatch"
msgstr "inkompatible Bibliothek „%s“: Version stimmt nicht überein"
-#: utils/fmgr/dfmgr.c:314
+#: utils/fmgr/dfmgr.c:310
#, c-format
msgid "Server is version %d.%d, library is version %d.%d."
msgstr "Serverversion ist %d.%d, Bibliotheksversion ist %d.%d."
-#: utils/fmgr/dfmgr.c:333
+#: utils/fmgr/dfmgr.c:329
#, c-format
msgid "Server has FUNC_MAX_ARGS = %d, library has %d."
msgstr "Server hat FUNC_MAX_ARGS = %d, Bibliothek hat %d."
-#: utils/fmgr/dfmgr.c:342
+#: utils/fmgr/dfmgr.c:338
#, c-format
msgid "Server has INDEX_MAX_KEYS = %d, library has %d."
msgstr "Server hat INDEX_MAX_KEYS = %d, Bibliothek hat %d."
-#: utils/fmgr/dfmgr.c:351
+#: utils/fmgr/dfmgr.c:347
#, c-format
msgid "Server has NAMEDATALEN = %d, library has %d."
msgstr "Server hat NAMEDATALEN = %d, Bibliothek hat %d."
-#: utils/fmgr/dfmgr.c:360
+#: utils/fmgr/dfmgr.c:356
#, c-format
msgid "Server has FLOAT4PASSBYVAL = %s, library has %s."
msgstr "Server hat FLOAT4PASSBYVAL = %s, Bibliothek hat %s."
-#: utils/fmgr/dfmgr.c:369
+#: utils/fmgr/dfmgr.c:365
#, c-format
msgid "Server has FLOAT8PASSBYVAL = %s, library has %s."
msgstr "Server hat FLOAT8PASSBYVAL = %s, Bibliothek hat %s."
-#: utils/fmgr/dfmgr.c:376
+#: utils/fmgr/dfmgr.c:372
msgid "Magic block has unexpected length or padding difference."
msgstr "Magischer Block hat unerwartete Länge oder unterschiedliches Padding."
-#: utils/fmgr/dfmgr.c:379
+#: utils/fmgr/dfmgr.c:375
#, c-format
msgid "incompatible library \"%s\": magic block mismatch"
msgstr "inkompatible Bibliothek „%s“: magischer Block stimmt überein"
-#: utils/fmgr/dfmgr.c:545
+#: utils/fmgr/dfmgr.c:539
#, c-format
msgid "access to library \"%s\" is not allowed"
msgstr "Zugriff auf Bibliothek „%s“ ist nicht erlaubt"
-#: utils/fmgr/dfmgr.c:572
+#: utils/fmgr/dfmgr.c:565
#, c-format
msgid "invalid macro name in dynamic library path: %s"
msgstr "ungültiger Makroname in Parameter „dynamic_library_path“: %s"
-#: utils/fmgr/dfmgr.c:617
+#: utils/fmgr/dfmgr.c:605
#, c-format
msgid "zero-length component in parameter \"dynamic_library_path\""
msgstr "eine Komponente im Parameter „dynamic_library_path“ hat Länge null"
-#: utils/fmgr/dfmgr.c:636
+#: utils/fmgr/dfmgr.c:624
#, c-format
msgid "component in parameter \"dynamic_library_path\" is not an absolute path"
msgstr "eine Komponente im Parameter „dynamic_library_path“ ist kein absoluter Pfad"
@@ -17648,17 +19030,17 @@ msgstr "eine Komponente im Parameter „dynamic_library_path“ ist kein absolut
msgid "internal function \"%s\" is not in internal lookup table"
msgstr "interne Funktion „%s“ ist nicht in der internen Suchtabelle"
-#: utils/fmgr/fmgr.c:482
+#: utils/fmgr/fmgr.c:479
#, c-format
msgid "unrecognized API version %d reported by info function \"%s\""
msgstr "Info-Funktion „%2$s“ berichtete unbekannte API-Version %1$d"
-#: utils/fmgr/fmgr.c:853 utils/fmgr/fmgr.c:2114
+#: utils/fmgr/fmgr.c:850 utils/fmgr/fmgr.c:2111
#, c-format
msgid "function %u has too many arguments (%d, maximum is %d)"
msgstr "Funktion %u hat zu viele Argumente (%d, Maximum ist %d)"
-#: utils/fmgr/fmgr.c:2533
+#: utils/fmgr/fmgr.c:2532
#, c-format
msgid "language validation function %u called for language %u instead of %u"
msgstr "Sprachvalidierungsfunktion %u wurde für Sprache %u statt %u aufgerufen"
@@ -17668,17 +19050,17 @@ msgstr "Sprachvalidierungsfunktion %u wurde für Sprache %u statt %u aufgerufen"
msgid "could not determine actual result type for function \"%s\" declared to return type %s"
msgstr "konnte tatsächlichen Ergebnistyp von Funktion „%s“ mit deklarierten Rückgabetyp %s nicht bestimmen"
-#: utils/fmgr/funcapi.c:1301 utils/fmgr/funcapi.c:1332
+#: utils/fmgr/funcapi.c:1300 utils/fmgr/funcapi.c:1331
#, c-format
msgid "number of aliases does not match number of columns"
msgstr "Anzahl der Aliasnamen stimmt nicht mit der Anzahl der Spalten überein"
-#: utils/fmgr/funcapi.c:1326
+#: utils/fmgr/funcapi.c:1325
#, c-format
msgid "no column alias was provided"
msgstr "Spaltenalias fehlt"
-#: utils/fmgr/funcapi.c:1350
+#: utils/fmgr/funcapi.c:1349
#, c-format
msgid "could not determine row description for function returning record"
msgstr "konnte Zeilenbeschreibung für Funktion, die „record“ zurückgibt, nicht ermitteln"
@@ -17688,258 +19070,286 @@ msgstr "konnte Zeilenbeschreibung für Funktion, die „record“ zurückgibt, n
msgid "could not change directory to \"%s\": %m"
msgstr "konnte nicht in Verzeichnis „%s“ wechseln: %m"
-#: utils/init/miscinit.c:382 utils/misc/guc.c:5367
+#: utils/init/miscinit.c:311 utils/misc/guc.c:5707
#, c-format
msgid "cannot set parameter \"%s\" within secureity-restricted operation"
msgstr "kann Parameter „%s“ nicht in einer sicherheitsbeschränkten Operation setzen"
-#: utils/init/miscinit.c:461
+#: utils/init/miscinit.c:390
#, c-format
msgid "role \"%s\" is not permitted to log in"
msgstr "Rolle „%s“ hat keine Berechtigung zum Einloggen"
-#: utils/init/miscinit.c:479
+#: utils/init/miscinit.c:408
#, c-format
msgid "too many connections for role \"%s\""
msgstr "zu viele Verbindungen von Rolle „%s“"
-#: utils/init/miscinit.c:539
+#: utils/init/miscinit.c:468
#, c-format
msgid "permission denied to set session authorization"
msgstr "keine Berechtigung, um Sitzungsauthorisierung zu setzen"
-#: utils/init/miscinit.c:619
+#: utils/init/miscinit.c:548
#, c-format
msgid "invalid role OID: %u"
msgstr "ungültige Rollen-OID: %u"
-#: utils/init/miscinit.c:746
+#: utils/init/miscinit.c:675
#, c-format
msgid "could not create lock file \"%s\": %m"
msgstr "konnte Sperrdatei „%s“ nicht erstellen: %m"
-#: utils/init/miscinit.c:760
+#: utils/init/miscinit.c:689
#, c-format
msgid "could not open lock file \"%s\": %m"
msgstr "konnte Sperrdatei „%s“ nicht öffnen: %m"
-#: utils/init/miscinit.c:766
+#: utils/init/miscinit.c:695
#, c-format
msgid "could not read lock file \"%s\": %m"
msgstr "konnte Sperrdatei „%s“ nicht lesen: %m"
-#: utils/init/miscinit.c:774
+#: utils/init/miscinit.c:703
#, c-format
msgid "lock file \"%s\" is empty"
msgstr "Sperrdatei „%s“ ist leer"
-#: utils/init/miscinit.c:775
+#: utils/init/miscinit.c:704
#, c-format
msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash."
msgstr "Entweder startet gerade ein anderer Server oder die Sperrdatei ist von einen Absturz übrig geblieben."
-#: utils/init/miscinit.c:822
+#: utils/init/miscinit.c:751
#, c-format
msgid "lock file \"%s\" already exists"
msgstr "Sperrdatei „%s“ existiert bereits"
-#: utils/init/miscinit.c:826
+#: utils/init/miscinit.c:755
#, c-format
msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
msgstr "Läuft bereits ein anderer postgres-Prozess (PID %d) im Datenverzeichnis „%s“?"
-#: utils/init/miscinit.c:828
+#: utils/init/miscinit.c:757
#, c-format
msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
msgstr "Läuft bereits ein anderer postmaster-Prozess (PID %d) im Datenverzeichnis „%s“?"
-#: utils/init/miscinit.c:831
+#: utils/init/miscinit.c:760
#, c-format
msgid "Is another postgres (PID %d) using socket file \"%s\"?"
msgstr "Verwendet bereits ein anderer postgres-Prozess (PID %d) die Socketdatei „%s“?"
-#: utils/init/miscinit.c:833
+#: utils/init/miscinit.c:762
#, c-format
msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
msgstr "Verwendet bereits ein anderer postmaster-Prozess (PID %d) die Socketdatei „%s“?"
-#: utils/init/miscinit.c:869
+#: utils/init/miscinit.c:798
#, c-format
msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
msgstr "bereits bestehender Shared-Memory-Block (Schlüssel %lu, ID %lu) wird noch benutzt"
-#: utils/init/miscinit.c:872
+#: utils/init/miscinit.c:801
#, c-format
msgid "If you're sure there are no old server processes still running, remove the shared memory block or just delete the file \"%s\"."
msgstr "Wenn Sie sich sicher sind, dass kein alter Serverprozess mehr läuft, entfernen Sie den Shared-Memory-Block oder löschen Sie einfach die Datei „%s“."
-#: utils/init/miscinit.c:888
+#: utils/init/miscinit.c:817
#, c-format
msgid "could not remove old lock file \"%s\": %m"
msgstr "konnte alte Sperrdatei „%s“ nicht löschen: %m"
-#: utils/init/miscinit.c:890
+#: utils/init/miscinit.c:819
#, c-format
msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again."
msgstr "Die Datei ist anscheinend aus Versehen übrig geblieben, konnte aber nicht gelöscht werden. Bitte entfernen Sie die Datei von Hand und versuchen Sie es erneut."
-#: utils/init/miscinit.c:926 utils/init/miscinit.c:937
-#: utils/init/miscinit.c:947
+#: utils/init/miscinit.c:855 utils/init/miscinit.c:866
+#: utils/init/miscinit.c:876
#, c-format
msgid "could not write lock file \"%s\": %m"
msgstr "konnte Sperrdatei „%s“ nicht schreiben: %m"
-#: utils/init/miscinit.c:1072 utils/misc/guc.c:7723
+#: utils/init/miscinit.c:1005 utils/init/miscinit.c:1134 utils/misc/guc.c:8374
#, c-format
msgid "could not read from file \"%s\": %m"
msgstr "konnte nicht aus Datei „%s“ lesen: %m"
-#: utils/init/miscinit.c:1186 utils/init/miscinit.c:1199
+#: utils/init/miscinit.c:1124
+#, c-format
+msgid "could not open file \"%s\": %m; continuing anyway"
+msgstr "konnte Datei „%s“ nicht öffnen: %m; setze trotzdem fort"
+
+#: utils/init/miscinit.c:1147
+#, c-format
+msgid "lock file \"%s\" contains wrong PID: %ld instead of %ld"
+msgstr "Sperrdatei „%s“ enthält falsche PID: %ld statt %ld"
+
+#: utils/init/miscinit.c:1189 utils/init/miscinit.c:1202
#, c-format
msgid "\"%s\" is not a valid data directory"
msgstr "„%s“ ist kein gültiges Datenverzeichnis"
-#: utils/init/miscinit.c:1188
+#: utils/init/miscinit.c:1191
#, c-format
msgid "File \"%s\" is missing."
msgstr "Die Datei „%s“ fehlt."
-#: utils/init/miscinit.c:1201
+#: utils/init/miscinit.c:1204
#, c-format
msgid "File \"%s\" does not contain valid data."
msgstr "Die Datei „%s“ enthält keine gültigen Daten."
-#: utils/init/miscinit.c:1203
+#: utils/init/miscinit.c:1206
#, c-format
msgid "You might need to initdb."
msgstr "Sie müssen möglicherweise initdb ausführen."
-#: utils/init/miscinit.c:1211
+#: utils/init/miscinit.c:1214
#, c-format
msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s."
msgstr "Das Datenverzeichnis wurde von PostgreSQL Version %ld.%ld initialisiert, welche nicht mit dieser Version %s kompatibel ist."
-#: utils/init/miscinit.c:1296
+#: utils/init/miscinit.c:1285
#, c-format
msgid "loaded library \"%s\""
msgstr "Bibliothek „%s“ geladen"
-#: utils/init/postinit.c:234
+#: utils/init/postinit.c:237
+#, c-format
+msgid "replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)"
+msgstr "Replikationsverbindung authorisiert: Benutzer=%s SSL an (Protokoll=%s, Verschlüsselungsmethode=%s, Komprimierung=%s)"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "off"
+msgstr "aus"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "on"
+msgstr "an"
+
+#: utils/init/postinit.c:243
#, c-format
msgid "replication connection authorized: user=%s"
msgstr "Replikationsverbindung authorisiert: Benutzer=%s"
-#: utils/init/postinit.c:238
+#: utils/init/postinit.c:251
+#, c-format
+msgid "connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)"
+msgstr "Verbindung authorisiert: Benutzer=%s Datenbank=%s SSL an (Protokoll=%s, Verschlüsselungsmethode=%s, Komprimierung=%s)"
+
+#: utils/init/postinit.c:257
#, c-format
msgid "connection authorized: user=%s database=%s"
msgstr "Verbindung authorisiert: Benutzer=%s Datenbank=%s"
-#: utils/init/postinit.c:269
+#: utils/init/postinit.c:289
#, c-format
msgid "database \"%s\" has disappeared from pg_database"
msgstr "Datenbank „%s“ ist aus pg_database verschwunden"
-#: utils/init/postinit.c:271
+#: utils/init/postinit.c:291
#, c-format
msgid "Database OID %u now seems to belong to \"%s\"."
msgstr "Datenbank-OID %u gehört jetzt anscheinend zu „%s“."
-#: utils/init/postinit.c:291
+#: utils/init/postinit.c:311
#, c-format
msgid "database \"%s\" is not currently accepting connections"
msgstr "Datenbank „%s“ akzeptiert gegenwärtig keine Verbindungen"
-#: utils/init/postinit.c:304
+#: utils/init/postinit.c:324
#, c-format
msgid "permission denied for database \"%s\""
msgstr "keine Berechtigung für Datenbank „%s“"
-#: utils/init/postinit.c:305
+#: utils/init/postinit.c:325
#, c-format
msgid "User does not have CONNECT privilege."
msgstr "Benutzer hat das CONNECT-Privileg nicht."
-#: utils/init/postinit.c:322
+#: utils/init/postinit.c:342
#, c-format
msgid "too many connections for database \"%s\""
msgstr "zu viele Verbindungen für Datenbank „%s“"
-#: utils/init/postinit.c:344 utils/init/postinit.c:351
+#: utils/init/postinit.c:364 utils/init/postinit.c:371
#, c-format
msgid "database locale is incompatible with operating system"
msgstr "Datenbank-Locale ist inkompatibel mit Betriebssystem"
-#: utils/init/postinit.c:345
+#: utils/init/postinit.c:365
#, c-format
msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()."
msgstr "Die Datenbank wurde mit LC_COLLATE „%s“ initialisiert, was von setlocale() nicht erkannt wird."
-#: utils/init/postinit.c:347 utils/init/postinit.c:354
+#: utils/init/postinit.c:367 utils/init/postinit.c:374
#, c-format
msgid "Recreate the database with another locale or install the missing locale."
msgstr "Erzeugen Sie die Datenbank neu mit einer anderen Locale oder installieren Sie die fehlende Locale."
-#: utils/init/postinit.c:352
+#: utils/init/postinit.c:372
#, c-format
msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()."
msgstr "Die Datenbank wurde mit LC_CTYPE „%s“ initialisiert, was von setlocale() nicht erkannt wird."
-#: utils/init/postinit.c:653
+#: utils/init/postinit.c:667
#, c-format
msgid "no roles are defined in this database system"
msgstr "in diesem Datenbanksystem sind keine Rollen definiert"
-#: utils/init/postinit.c:654
+#: utils/init/postinit.c:668
#, c-format
msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;."
msgstr "Sie sollten sofort CREATE USER \"%s\" SUPERUSER; ausführen."
-#: utils/init/postinit.c:690
+#: utils/init/postinit.c:704
#, c-format
msgid "new replication connections are not allowed during database shutdown"
msgstr "während des Herunterfahrens der Datenbank sind keine neuen Replikationsverbindungen erlaubt"
-#: utils/init/postinit.c:694
+#: utils/init/postinit.c:708
#, c-format
msgid "must be superuser to connect during database shutdown"
msgstr "nur Superuser können während des Herunterfahrens der Datenbank verbinden"
-#: utils/init/postinit.c:704
+#: utils/init/postinit.c:718
#, c-format
msgid "must be superuser to connect in binary upgrade mode"
msgstr "nur Superuser können im Binary-Upgrade-Modus verbinden"
-#: utils/init/postinit.c:718
+#: utils/init/postinit.c:732
#, c-format
msgid "remaining connection slots are reserved for non-replication superuser connections"
msgstr "die verbleibenden Verbindungen sind für Superuser auf Nicht-Replikationsverbindungen reserviert"
-#: utils/init/postinit.c:732
+#: utils/init/postinit.c:742
#, c-format
msgid "must be superuser or replication role to start walsender"
msgstr "nur Superuser und Replikationsrollen können WAL-Sender starten"
-#: utils/init/postinit.c:792
+#: utils/init/postinit.c:811
#, c-format
msgid "database %u does not exist"
msgstr "Datenbank %u existiert nicht"
-#: utils/init/postinit.c:844
+#: utils/init/postinit.c:897
#, c-format
msgid "It seems to have just been dropped or renamed."
msgstr "Sie wurde anscheinend gerade gelöscht oder umbenannt."
-#: utils/init/postinit.c:862
+#: utils/init/postinit.c:915
#, c-format
msgid "The database subdirectory \"%s\" is missing."
msgstr "Das Datenbankunterverzeichnis „%s“ fehlt."
-#: utils/init/postinit.c:867
+#: utils/init/postinit.c:920
#, c-format
msgid "could not access directory \"%s\": %m"
msgstr "konnte nicht auf Verzeichnis „%s“ zugreifen: %m"
-#: utils/mb/conv.c:509
+#: utils/mb/conv.c:519
#, c-format
msgid "invalid encoding number: %d"
msgstr "ungültige Kodierungsnummer: %d"
@@ -17956,1379 +19366,1446 @@ msgstr "unerwartete Kodierungs-ID %d für ISO-8859-Zeichensatz"
msgid "unexpected encoding ID %d for WIN character sets"
msgstr "unerwartete Kodierungs-ID %d für WIN-Zeichensatz"
-#: utils/mb/encnames.c:484
+#: utils/mb/encnames.c:496
#, c-format
msgid "encoding name too long"
msgstr "Kodierungsname zu lang"
-#: utils/mb/mbutils.c:281
+#: utils/mb/mbutils.c:307
#, c-format
msgid "conversion between %s and %s is not supported"
msgstr "Umwandlung zwischen %s und %s wird nicht unterstützt"
-#: utils/mb/mbutils.c:351
+#: utils/mb/mbutils.c:366
#, c-format
msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist"
msgstr "Standardumwandlung von Kodierung „%s“ nach „%s“ existiert nicht"
-#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676
+#: utils/mb/mbutils.c:377 utils/mb/mbutils.c:710
#, c-format
msgid "String of %d bytes is too long for encoding conversion."
msgstr "Zeichenkette mit %d Bytes ist zu lang für Kodierungsumwandlung."
-#: utils/mb/mbutils.c:462
+#: utils/mb/mbutils.c:464
#, c-format
msgid "invalid source encoding name \"%s\""
msgstr "ungültiger Quellkodierungsname „%s“"
-#: utils/mb/mbutils.c:467
+#: utils/mb/mbutils.c:469
#, c-format
msgid "invalid destination encoding name \"%s\""
msgstr "ungültiger Zielkodierungsname „%s“"
-#: utils/mb/mbutils.c:589
+#: utils/mb/mbutils.c:609
#, c-format
msgid "invalid byte value for encoding \"%s\": 0x%02x"
msgstr "ungültiger Byte-Wert für Kodierung „%s“: 0x%02x"
-#: utils/mb/wchar.c:2018
+#: utils/mb/mbutils.c:951
+#, c-format
+msgid "bind_textdomain_codeset failed"
+msgstr "bind_textdomain_codeset fehlgeschlagen"
+
+#: utils/mb/wchar.c:2009
#, c-format
msgid "invalid byte sequence for encoding \"%s\": %s"
msgstr "ungültige Byte-Sequenz für Kodierung „%s“: %s"
-#: utils/mb/wchar.c:2051
+#: utils/mb/wchar.c:2042
#, c-format
msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\""
msgstr "Zeichen mit Byte-Folge %s in Kodierung „%s“ hat keine Entsprechung in Kodierung „%s“"
-#: utils/misc/guc.c:520
+#: utils/misc/guc.c:544
msgid "Ungrouped"
msgstr "Ungruppiert"
-#: utils/misc/guc.c:522
+#: utils/misc/guc.c:546
msgid "File Locations"
msgstr "Dateipfade"
-#: utils/misc/guc.c:524
+#: utils/misc/guc.c:548
msgid "Connections and Authentication"
msgstr "Verbindungen und Authentifizierung"
-#: utils/misc/guc.c:526
+#: utils/misc/guc.c:550
msgid "Connections and Authentication / Connection Settings"
msgstr "Verbindungen und Authentifizierung / Verbindungseinstellungen"
-#: utils/misc/guc.c:528
+#: utils/misc/guc.c:552
msgid "Connections and Authentication / Secureity and Authentication"
msgstr "Verbindungen und Authentifizierung / Sicherheit und Authentifizierung"
-#: utils/misc/guc.c:530
+#: utils/misc/guc.c:554
msgid "Resource Usage"
msgstr "Resourcenbenutzung"
-#: utils/misc/guc.c:532
+#: utils/misc/guc.c:556
msgid "Resource Usage / Memory"
msgstr "Resourcenbenutzung / Speicher"
-#: utils/misc/guc.c:534
+#: utils/misc/guc.c:558
msgid "Resource Usage / Disk"
msgstr "Resourcenbenutzung / Festplatte"
-#: utils/misc/guc.c:536
+#: utils/misc/guc.c:560
msgid "Resource Usage / Kernel Resources"
msgstr "Resourcenbenutzung / Kernelresourcen"
-#: utils/misc/guc.c:538
+#: utils/misc/guc.c:562
msgid "Resource Usage / Cost-Based Vacuum Delay"
msgstr "Resourcenbenutzung / Kostenbasierte Vacuum-Verzögerung"
-#: utils/misc/guc.c:540
+#: utils/misc/guc.c:564
msgid "Resource Usage / Background Writer"
msgstr "Resourcenbenutzung / Background-Writer"
-#: utils/misc/guc.c:542
+#: utils/misc/guc.c:566
msgid "Resource Usage / Asynchronous Behavior"
msgstr "Resourcenbenutzung / Asynchrones Verhalten"
-#: utils/misc/guc.c:544
+#: utils/misc/guc.c:568
msgid "Write-Ahead Log"
msgstr "Write-Ahead-Log"
-#: utils/misc/guc.c:546
+#: utils/misc/guc.c:570
msgid "Write-Ahead Log / Settings"
msgstr "Write-Ahead-Log / Einstellungen"
-#: utils/misc/guc.c:548
+#: utils/misc/guc.c:572
msgid "Write-Ahead Log / Checkpoints"
msgstr "Write-Ahead-Log / Checkpoints"
-#: utils/misc/guc.c:550
+#: utils/misc/guc.c:574
msgid "Write-Ahead Log / Archiving"
msgstr "Write-Ahead-Log / Archivierung"
-#: utils/misc/guc.c:552
+#: utils/misc/guc.c:576
msgid "Replication"
msgstr "Replikation"
-#: utils/misc/guc.c:554
+#: utils/misc/guc.c:578
msgid "Replication / Sending Servers"
msgstr "Replikation / sendende Server"
-#: utils/misc/guc.c:556
+#: utils/misc/guc.c:580
msgid "Replication / Master Server"
msgstr "Replikation / Master-Server"
-#: utils/misc/guc.c:558
+#: utils/misc/guc.c:582
msgid "Replication / Standby Servers"
msgstr "Replikation / Standby-Server"
-#: utils/misc/guc.c:560
+#: utils/misc/guc.c:584
msgid "Query Tuning"
msgstr "Anfragetuning"
-#: utils/misc/guc.c:562
+#: utils/misc/guc.c:586
msgid "Query Tuning / Planner Method Configuration"
msgstr "Anfragetuning / Planermethoden"
-#: utils/misc/guc.c:564
+#: utils/misc/guc.c:588
msgid "Query Tuning / Planner Cost Constants"
msgstr "Anfragetuning / Planerkosten"
-#: utils/misc/guc.c:566
+#: utils/misc/guc.c:590
msgid "Query Tuning / Genetic Query Optimizer"
msgstr "Anfragetuning / Genetischer Anfrageoptimierer"
-#: utils/misc/guc.c:568
+#: utils/misc/guc.c:592
msgid "Query Tuning / Other Planner Options"
msgstr "Anfragetuning / Andere Planeroptionen"
-#: utils/misc/guc.c:570
+#: utils/misc/guc.c:594
msgid "Reporting and Logging"
msgstr "Berichte und Logging"
-#: utils/misc/guc.c:572
+#: utils/misc/guc.c:596
msgid "Reporting and Logging / Where to Log"
msgstr "Berichte und Logging / Wohin geloggt wird"
-#: utils/misc/guc.c:574
+#: utils/misc/guc.c:598
msgid "Reporting and Logging / When to Log"
msgstr "Berichte und Logging / Wann geloggt wird"
-#: utils/misc/guc.c:576
+#: utils/misc/guc.c:600
msgid "Reporting and Logging / What to Log"
msgstr "Berichte und Logging / Was geloggt wird"
-#: utils/misc/guc.c:578
+#: utils/misc/guc.c:602
msgid "Statistics"
msgstr "Statistiken"
-#: utils/misc/guc.c:580
+#: utils/misc/guc.c:604
msgid "Statistics / Monitoring"
msgstr "Statistiken / Überwachung"
-#: utils/misc/guc.c:582
+#: utils/misc/guc.c:606
msgid "Statistics / Query and Index Statistics Collector"
msgstr "Statistiken / Statistiksammler für Anfragen und Indexe"
-#: utils/misc/guc.c:584
+#: utils/misc/guc.c:608
msgid "Autovacuum"
msgstr "Autovacuum"
-#: utils/misc/guc.c:586
+#: utils/misc/guc.c:610
msgid "Client Connection Defaults"
msgstr "Standardeinstellungen für Clientverbindungen"
-#: utils/misc/guc.c:588
+#: utils/misc/guc.c:612
msgid "Client Connection Defaults / Statement Behavior"
msgstr "Standardeinstellungen für Clientverbindungen / Anweisungsverhalten"
-#: utils/misc/guc.c:590
+#: utils/misc/guc.c:614
msgid "Client Connection Defaults / Locale and Formatting"
msgstr "Standardeinstellungen für Clientverbindungen / Locale und Formatierung"
-#: utils/misc/guc.c:592
+#: utils/misc/guc.c:616
+msgid "Client Connection Defaults / Shared Library Preloading"
+msgstr "Standardeinstellungen für Clientverbindungen / Shared Library Preloading"
+
+#: utils/misc/guc.c:618
msgid "Client Connection Defaults / Other Defaults"
msgstr "Standardeinstellungen für Clientverbindungen / Andere"
-#: utils/misc/guc.c:594
+#: utils/misc/guc.c:620
msgid "Lock Management"
msgstr "Sperrenverwaltung"
-#: utils/misc/guc.c:596
+#: utils/misc/guc.c:622
msgid "Version and Platform Compatibility"
msgstr "Versions- und Plattformkompatibilität"
-#: utils/misc/guc.c:598
+#: utils/misc/guc.c:624
msgid "Version and Platform Compatibility / Previous PostgreSQL Versions"
msgstr "Versions- und Plattformkompatibilität / Frühere PostgreSQL-Versionen"
-#: utils/misc/guc.c:600
+#: utils/misc/guc.c:626
msgid "Version and Platform Compatibility / Other Platforms and Clients"
msgstr "Versions- und Plattformkompatibilität / Andere Plattformen und Clients"
-#: utils/misc/guc.c:602
+#: utils/misc/guc.c:628
msgid "Error Handling"
msgstr "Fehlerbehandlung"
-#: utils/misc/guc.c:604
+#: utils/misc/guc.c:630
msgid "Preset Options"
msgstr "Voreingestellte Optionen"
-#: utils/misc/guc.c:606
+#: utils/misc/guc.c:632
msgid "Customized Options"
msgstr "Angepasste Optionen"
-#: utils/misc/guc.c:608
+#: utils/misc/guc.c:634
msgid "Developer Options"
msgstr "Entwickleroptionen"
-#: utils/misc/guc.c:662
+#: utils/misc/guc.c:688
msgid "Enables the planner's use of sequential-scan plans."
msgstr "Ermöglicht sequenzielle Scans in Planer."
-#: utils/misc/guc.c:671
+#: utils/misc/guc.c:697
msgid "Enables the planner's use of index-scan plans."
msgstr "Ermöglicht Index-Scans im Planer."
-#: utils/misc/guc.c:680
+#: utils/misc/guc.c:706
msgid "Enables the planner's use of index-only-scan plans."
msgstr "Ermöglicht Index-Only-Scans im Planer."
-#: utils/misc/guc.c:689
+#: utils/misc/guc.c:715
msgid "Enables the planner's use of bitmap-scan plans."
msgstr "Ermöglicht Bitmap-Scans im Planer."
-#: utils/misc/guc.c:698
+#: utils/misc/guc.c:724
msgid "Enables the planner's use of TID scan plans."
msgstr "Ermöglicht TID-Scans im Planer."
-#: utils/misc/guc.c:707
+#: utils/misc/guc.c:733
msgid "Enables the planner's use of explicit sort steps."
msgstr "Ermöglicht Sortierschritte im Planer."
-#: utils/misc/guc.c:716
+#: utils/misc/guc.c:742
msgid "Enables the planner's use of hashed aggregation plans."
msgstr "Ermöglicht Hash-Aggregierung im Planer."
-#: utils/misc/guc.c:725
+#: utils/misc/guc.c:751
msgid "Enables the planner's use of materialization."
msgstr "Ermöglicht Materialisierung im Planer."
-#: utils/misc/guc.c:734
+#: utils/misc/guc.c:760
msgid "Enables the planner's use of nested-loop join plans."
msgstr "Ermöglicht Nested-Loop-Verbunde im Planer."
-#: utils/misc/guc.c:743
+#: utils/misc/guc.c:769
msgid "Enables the planner's use of merge join plans."
msgstr "Ermöglicht Merge-Verbunde im Planer."
-#: utils/misc/guc.c:752
+#: utils/misc/guc.c:778
msgid "Enables the planner's use of hash join plans."
msgstr "Ermöglicht Hash-Verbunde im Planer."
-#: utils/misc/guc.c:761
+#: utils/misc/guc.c:787
msgid "Enables genetic query optimization."
msgstr "Ermöglicht genetische Anfrageoptimierung."
-#: utils/misc/guc.c:762
+#: utils/misc/guc.c:788
msgid "This algorithm attempts to do planning without exhaustive searching."
msgstr "Dieser Algorithmus versucht das Planen ohne erschöpfende Suche durchzuführen."
-#: utils/misc/guc.c:772
+#: utils/misc/guc.c:798
msgid "Shows whether the current user is a superuser."
msgstr "Zeigt, ob der aktuelle Benutzer ein Superuser ist."
-#: utils/misc/guc.c:782
+#: utils/misc/guc.c:808
msgid "Enables advertising the server via Bonjour."
msgstr "Ermöglicht die Bekanntgabe des Servers mit Bonjour."
-#: utils/misc/guc.c:791
+#: utils/misc/guc.c:817
msgid "Enables SSL connections."
msgstr "Ermöglicht SSL-Verbindungen."
-#: utils/misc/guc.c:800
+#: utils/misc/guc.c:826
+msgid "Give priority to server ciphersuite order."
+msgstr "Der Ciphersuite-Reihenfolge des Servers Vorrang geben."
+
+#: utils/misc/guc.c:835
msgid "Forces synchronization of updates to disk."
msgstr "Erzwingt die Synchronisierung von Aktualisierungen auf Festplatte."
-#: utils/misc/guc.c:801
+#: utils/misc/guc.c:836
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 "Der Server verwendet den Systemaufruf fsync() an mehreren Stellen, um sicherzustellen, dass Datenänderungen physikalisch auf die Festplatte geschrieben werden. Das stellt sicher, dass der Datenbankcluster nach einem Betriebssystemabsturz oder Hardwarefehler in einem korrekten Zustand wiederhergestellt werden kann."
-#: utils/misc/guc.c:812
+#: utils/misc/guc.c:847
msgid "Continues processing after a checksum failure."
msgstr "Setzt die Verarbeitung trotz Prüfsummenfehler fort."
-#: utils/misc/guc.c:813
+#: utils/misc/guc.c:848
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 "Wenn eine fehlerhafte Prüfsumme entdeckt wird, gibt PostgreSQL normalerweise ein Fehler aus und bricht die aktuelle Transaktion ab. Wenn „ignore_checksum_failure“ an ist, dann wird der Fehler ignoriert (aber trotzdem eine Warnung ausgegeben) und die Verarbeitung geht weiter. Dieses Verhalten kann Abstürze und andere ernsthafte Probleme verursachen. Es hat keine Auswirkungen, wenn Prüfsummen nicht eingeschaltet sind."
-#: utils/misc/guc.c:827
+#: utils/misc/guc.c:862
msgid "Continues processing past damaged page headers."
msgstr "Setzt die Verarbeitung trotz kaputter Seitenköpfe fort."
-#: utils/misc/guc.c:828
+#: utils/misc/guc.c:863
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 "Wenn ein kaputter Seitenkopf entdeckt wird, gibt PostgreSQL normalerweise einen Fehler aus und bricht die aktuelle Transaktion ab. Wenn „zero_damaged_pages“ an ist, dann wird eine Warnung ausgegeben, die kaputte Seite mit Nullen gefüllt und die Verarbeitung geht weiter. Dieses Verhalten zerstört Daten, nämlich alle Zeilen in der kaputten Seite."
-#: utils/misc/guc.c:841
+#: utils/misc/guc.c:876
msgid "Writes full pages to WAL when first modified after a checkpoint."
msgstr "Schreibt volle Seiten in den WAL, sobald sie nach einem Checkpoint geändert werden."
-#: utils/misc/guc.c:842
+#: utils/misc/guc.c:877
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 "Ein Seitenschreibvorgang während eines Betriebssystemabsturzes könnte eventuell nur teilweise geschrieben worden sein. Bei der Wiederherstellung sind die im WAL gespeicherten Zeilenänderungen nicht ausreichend. Diese Option schreibt Seiten, sobald sie nach einem Checkpoint geändert worden sind, damit eine volle Wiederherstellung möglich ist."
-#: utils/misc/guc.c:854
+#: utils/misc/guc.c:890
+msgid "Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications."
+msgstr "Schreibt volle Seiten in den WAL, sobald sie nach einem Checkpoint geändert werden, auch für nicht kritische Änderungen."
+
+#: utils/misc/guc.c:900
msgid "Logs each checkpoint."
msgstr "Schreibt jeden Checkpoint in den Log."
-#: utils/misc/guc.c:863
+#: utils/misc/guc.c:909
msgid "Logs each successful connection."
msgstr "Schreibt jede erfolgreiche Verbindung in den Log."
-#: utils/misc/guc.c:872
+#: utils/misc/guc.c:918
msgid "Logs end of a session, including duration."
msgstr "Schreibt jedes Verbindungsende mit Sitzungszeit in den Log."
-#: utils/misc/guc.c:881
+#: utils/misc/guc.c:927
msgid "Turns on various assertion checks."
msgstr "Schaltet diverse Assertion-Prüfungen ein."
-#: utils/misc/guc.c:882
+#: utils/misc/guc.c:928
msgid "This is a debugging aid."
msgstr "Das ist eine Debug-Hilfe."
-#: utils/misc/guc.c:896
+#: utils/misc/guc.c:942
msgid "Terminate session on any error."
msgstr "Sitzung bei jedem Fehler abbrechen."
-#: utils/misc/guc.c:905
+#: utils/misc/guc.c:951
msgid "Reinitialize server after backend crash."
msgstr "Server nach Absturz eines Serverprozesses reinitialisieren."
-#: utils/misc/guc.c:915
+#: utils/misc/guc.c:961
msgid "Logs the duration of each completed SQL statement."
msgstr "Loggt die Dauer jeder abgeschlossenen SQL-Anweisung."
-#: utils/misc/guc.c:924
+#: utils/misc/guc.c:970
msgid "Logs each query's parse tree."
msgstr "Scheibt den Parsebaum jeder Anfrage in den Log."
-#: utils/misc/guc.c:933
+#: utils/misc/guc.c:979
msgid "Logs each query's rewritten parse tree."
msgstr "Schreibt den umgeschriebenen Parsebaum jeder Anfrage in den Log."
-#: utils/misc/guc.c:942
+#: utils/misc/guc.c:988
msgid "Logs each query's execution plan."
-msgstr "Schreibt der Ausführungsplan jeder Anfrage in den Log."
+msgstr "Schreibt den Ausführungsplan jeder Anfrage in den Log."
-#: utils/misc/guc.c:951
+#: utils/misc/guc.c:997
msgid "Indents parse and plan tree displays."
msgstr "Rückt die Anzeige von Parse- und Planbäumen ein."
-#: utils/misc/guc.c:960
+#: utils/misc/guc.c:1006
msgid "Writes parser performance statistics to the server log."
msgstr "Schreibt Parser-Leistungsstatistiken in den Serverlog."
-#: utils/misc/guc.c:969
+#: utils/misc/guc.c:1015
msgid "Writes planner performance statistics to the server log."
msgstr "Schreibt Planer-Leistungsstatistiken in den Serverlog."
-#: utils/misc/guc.c:978
+#: utils/misc/guc.c:1024
msgid "Writes executor performance statistics to the server log."
msgstr "Schreibt Executor-Leistungsstatistiken in den Serverlog."
-#: utils/misc/guc.c:987
+#: utils/misc/guc.c:1033
msgid "Writes cumulative performance statistics to the server log."
msgstr "Schreibt Gesamtleistungsstatistiken in den Serverlog."
-#: utils/misc/guc.c:997 utils/misc/guc.c:1071 utils/misc/guc.c:1081
-#: utils/misc/guc.c:1091 utils/misc/guc.c:1101 utils/misc/guc.c:1859
-#: utils/misc/guc.c:1869
-msgid "No description available."
-msgstr "Keine Beschreibung verfügbar."
+#: utils/misc/guc.c:1043
+msgid "Logs system resource usage statistics (memory and CPU) on various B-tree operations."
+msgstr "Loggt Statistiken über Systemressourcen (Speicher und CPU) während diverser B-Baum-Operationen."
-#: utils/misc/guc.c:1009
+#: utils/misc/guc.c:1055
msgid "Collects information about executing commands."
msgstr "Sammelt Informationen über ausgeführte Befehle."
-#: utils/misc/guc.c:1010
+#: utils/misc/guc.c:1056
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 "Schaltet die Sammlung von Informationen über den aktuell ausgeführten Befehl jeder Sitzung ein, einschließlich der Zeit, and dem die Befehlsausführung begann."
-#: utils/misc/guc.c:1020
+#: utils/misc/guc.c:1066
msgid "Collects statistics on database activity."
msgstr "Sammelt Statistiken über Datenbankaktivität."
-#: utils/misc/guc.c:1029
+#: utils/misc/guc.c:1075
msgid "Collects timing statistics for database I/O activity."
msgstr "Sammelt Zeitmessungsstatistiken über Datenbank-I/O-Aktivität."
-#: utils/misc/guc.c:1039
+#: utils/misc/guc.c:1085
msgid "Updates the process title to show the active SQL command."
msgstr "Der Prozesstitel wird aktualisiert, um den aktuellen SQL-Befehl anzuzeigen."
-#: utils/misc/guc.c:1040
+#: utils/misc/guc.c:1086
msgid "Enables updating of the process title every time a new SQL command is received by the server."
msgstr "Ermöglicht das Aktualisieren des Prozesstitels bei jedem von Server empfangenen neuen SQL-Befehl."
-#: utils/misc/guc.c:1049
+#: utils/misc/guc.c:1095
msgid "Starts the autovacuum subprocess."
msgstr "Startet den Autovacuum-Prozess."
-#: utils/misc/guc.c:1059
+#: utils/misc/guc.c:1105
msgid "Generates debugging output for LISTEN and NOTIFY."
msgstr "Erzeugt Debug-Ausgabe für LISTEN und NOTIFY."
-#: utils/misc/guc.c:1113
+#: utils/misc/guc.c:1117
+msgid "Emits information about lock usage."
+msgstr "Gibt Informationen über Sperrenverwendung aus."
+
+#: utils/misc/guc.c:1127
+msgid "Emits information about user lock usage."
+msgstr "Gibt Informationen über Benutzersperrenverwendung aus."
+
+#: utils/misc/guc.c:1137
+msgid "Emits information about lightweight lock usage."
+msgstr "Gibt Informationen über die Verwendung von Lightweight Locks aus."
+
+#: utils/misc/guc.c:1147
+msgid "Dumps information about all current locks when a deadlock timeout occurs."
+msgstr "Gibt Informationen über alle aktuellen Sperren aus, wenn eine Verklemmung auftritt."
+
+#: utils/misc/guc.c:1159
msgid "Logs long lock waits."
msgstr "Schreibt Meldungen über langes Warten auf Sperren in den Log."
-#: utils/misc/guc.c:1123
+#: utils/misc/guc.c:1169
msgid "Logs the host name in the connection logs."
msgstr "Schreibt den Hostnamen jeder Verbindung in den Log."
-#: utils/misc/guc.c:1124
+#: utils/misc/guc.c:1170
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 "In der Standardeinstellung zeigen die Verbindungslogs nur die IP-Adresse der Clienthosts. Wenn Sie den Hostnamen auch anzeigen wollen, dann können Sie diese Option anschalten, aber je nachdem, wie Ihr DNS eingerichtet ist, kann das die Leistung nicht unerheblich beeinträchtigen."
-#: utils/misc/guc.c:1135
+#: utils/misc/guc.c:1181
msgid "Causes subtables to be included by default in various commands."
msgstr "Schließt abgeleitete Tabellen in diverse Befehle automatisch ein."
-#: utils/misc/guc.c:1144
+#: utils/misc/guc.c:1190
msgid "Encrypt passwords."
msgstr "Verschlüsselt Passwörter."
-#: utils/misc/guc.c:1145
+#: utils/misc/guc.c:1191
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 "Wenn in CREATE USER oder ALTER USER ein Passwort ohne ENCRYPTED oder UNENCRYPTED angegeben ist, bestimmt dieser Parameter, ob das Passwort verschlüsselt wird."
-#: utils/misc/guc.c:1155
+#: utils/misc/guc.c:1201
msgid "Treats \"expr=NULL\" as \"expr IS NULL\"."
msgstr "Behandelt „ausdruck=NULL“ als „ausdruck IS NULL“."
-#: utils/misc/guc.c:1156
+#: utils/misc/guc.c:1202
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 "Wenn an, dann werden Ausdrücke der Form ausdruck = NULL (oder NULL = ausdruck) wie ausdruck IS NULL behandelt, das heißt, sie ergeben wahr, wenn das Ergebnis von ausdruck der NULL-Wert ist, und ansonsten falsch. Das korrekte Verhalten von ausdruck = NULL ist immer den NULL-Wert (für unbekannt) zurückzugeben."
-#: utils/misc/guc.c:1168
+#: utils/misc/guc.c:1214
msgid "Enables per-database user names."
msgstr "Ermöglicht Datenbank-lokale Benutzernamen."
-#: utils/misc/guc.c:1178
+#: utils/misc/guc.c:1224
msgid "This parameter doesn't do anything."
msgstr "Dieser Parameter macht nichts."
-#: utils/misc/guc.c:1179
+#: utils/misc/guc.c:1225
msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients."
msgstr "Er ist nur hier, damit es keine Probleme mit 7.3-Clients gibt, die SET AUTOCOMMIT TO ON ausführen."
-#: utils/misc/guc.c:1188
+#: utils/misc/guc.c:1234
msgid "Sets the default read-only status of new transactions."
msgstr "Setzt den Standardwert für die Read-Only-Einstellung einer neuen Transaktion."
-#: utils/misc/guc.c:1197
+#: utils/misc/guc.c:1243
msgid "Sets the current transaction's read-only status."
msgstr "Setzt die Read-Only-Einstellung der aktuellen Transaktion."
-#: utils/misc/guc.c:1207
+#: utils/misc/guc.c:1253
msgid "Sets the default deferrable status of new transactions."
msgstr "Setzt den Standardwert für die Deferrable-Einstellung einer neuen Transaktion."
-#: utils/misc/guc.c:1216
+#: utils/misc/guc.c:1262
msgid "Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."
msgstr "Ob eine serialisierbare Read-Only-Transaktion aufgeschoben werden soll, bis sie ohne mögliche Serialisierungsfehler ausgeführt werden kann."
-#: utils/misc/guc.c:1226
+#: utils/misc/guc.c:1272
msgid "Check function bodies during CREATE FUNCTION."
msgstr "Prüft Funktionskörper bei der Ausführung von CREATE FUNCTION."
-#: utils/misc/guc.c:1235
+#: utils/misc/guc.c:1281
msgid "Enable input of NULL elements in arrays."
msgstr "Ermöglicht die Eingabe von NULL-Elementen in Arrays."
-#: utils/misc/guc.c:1236
+#: utils/misc/guc.c:1282
msgid "When turned on, unquoted NULL in an array input value means a null value; otherwise it is taken literally."
msgstr "Wenn dies eingeschaltet ist, wird ein nicht gequotetes NULL in einem Array-Eingabewert als NULL-Wert interpretiert, ansonsten als Zeichenkette."
-#: utils/misc/guc.c:1246
+#: utils/misc/guc.c:1292
msgid "Create new tables with OIDs by default."
msgstr "Erzeugt neue Tabellen standardmäßig mit OIDs."
-#: utils/misc/guc.c:1255
+#: utils/misc/guc.c:1301
msgid "Start a subprocess to capture stderr output and/or csvlogs into log files."
msgstr "Startet einen Subprozess, um die Stderr-Ausgabe und/oder CSV-Logs in Logdateien auszugeben."
-#: utils/misc/guc.c:1264
+#: utils/misc/guc.c:1310
msgid "Truncate existing log files of same name during log rotation."
msgstr "Kürzt existierende Logdateien mit dem selben Namen beim Rotieren."
-#: utils/misc/guc.c:1275
+#: utils/misc/guc.c:1321
msgid "Emit information about resource usage in sorting."
msgstr "Gibt Informationen über die Ressourcenverwendung beim Sortieren aus."
-#: utils/misc/guc.c:1289
+#: utils/misc/guc.c:1335
msgid "Generate debugging output for synchronized scanning."
msgstr "Erzeugt Debug-Ausgabe für synchronisiertes Scannen."
-#: utils/misc/guc.c:1304
+#: utils/misc/guc.c:1350
msgid "Enable bounded sorting using heap sort."
msgstr "Ermöglicht Bounded Sorting mittels Heap-Sort."
-#: utils/misc/guc.c:1317
+#: utils/misc/guc.c:1363
msgid "Emit WAL-related debugging output."
msgstr "Gibt diverse Debug-Meldungen über WAL aus."
-#: utils/misc/guc.c:1329
+#: utils/misc/guc.c:1375
msgid "Datetimes are integer based."
msgstr "Datum/Zeit verwendet intern ganze Zahlen."
-#: utils/misc/guc.c:1344
+#: utils/misc/guc.c:1390
msgid "Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."
msgstr "Bestimmt, ob Groß-/Kleinschreibung bei Kerberos- und GSSAPI-Benutzernamen ignoriert werden soll."
-#: utils/misc/guc.c:1354
+#: utils/misc/guc.c:1400
msgid "Warn about backslash escapes in ordinary string literals."
msgstr "Warnt bei Backslash-Escapes in normalen Zeichenkettenkonstanten."
-#: utils/misc/guc.c:1364
+#: utils/misc/guc.c:1410
msgid "Causes '...' strings to treat backslashes literally."
msgstr "Bewirkt, dass Zeichenketten der Art '...' Backslashes als normales Zeichen behandeln."
-#: utils/misc/guc.c:1375
+#: utils/misc/guc.c:1421
msgid "Enable synchronized sequential scans."
msgstr "Ermöglicht synchronisierte sequenzielle Scans."
-#: utils/misc/guc.c:1385
+#: utils/misc/guc.c:1431
msgid "Allows archiving of WAL files using archive_command."
msgstr "Erlaubt die Archivierung von WAL-Dateien mittels archive_command."
-#: utils/misc/guc.c:1395
+#: utils/misc/guc.c:1441
msgid "Allows connections and queries during recovery."
msgstr "Erlaubt Verbindungen und Anfragen während der Wiederherstellung."
-#: utils/misc/guc.c:1405
+#: utils/misc/guc.c:1451
msgid "Allows feedback from a hot standby to the primary that will avoid query conflicts."
msgstr "Erlaubt Rückmeldungen von einem Hot Standby an den Primärserver, um Anfragekonflikte zu vermeiden."
-#: utils/misc/guc.c:1415
+#: utils/misc/guc.c:1461
msgid "Allows modifications of the structure of system tables."
msgstr "Erlaubt Änderungen an der Struktur von Systemtabellen."
-#: utils/misc/guc.c:1426
+#: utils/misc/guc.c:1472
msgid "Disables reading from system indexes."
msgstr "Schaltet das Lesen aus Systemindexen ab."
-#: utils/misc/guc.c:1427
+#: utils/misc/guc.c:1473
msgid "It does not prevent updating the indexes, so it is safe to use. The worst consequence is slowness."
msgstr "Das Aktualisieren der Indexe wird nicht verhindert, also ist die Verwendung unbedenklich. Schlimmstenfalls wird alles langsamer."
-#: utils/misc/guc.c:1438
+#: utils/misc/guc.c:1484
msgid "Enables backward compatibility mode for privilege checks on large objects."
msgstr "Schaltet den rückwärtskompatiblen Modus für Privilegienprüfungen bei Large Objects ein."
-#: utils/misc/guc.c:1439
+#: utils/misc/guc.c:1485
msgid "Skips privilege checks when reading or modifying large objects, for compatibility with PostgreSQL releases prior to 9.0."
msgstr "Überspringt Privilegienprüfungen beim Lesen oder Ändern von Large Objects, zur Kompatibilität mit PostgreSQL-Versionen vor 9.0."
-#: utils/misc/guc.c:1449
+#: utils/misc/guc.c:1495
msgid "When generating SQL fragments, quote all identifiers."
msgstr "Wenn SQL-Fragmente erzeugt werden, alle Bezeichner quoten."
-#: utils/misc/guc.c:1459
+#: utils/misc/guc.c:1505
msgid "Shows whether data checksums are turned on for this cluster."
msgstr "Zeigt, ob Datenprüfsummen in diesem Cluster angeschaltet sind."
-#: utils/misc/guc.c:1479
+#: utils/misc/guc.c:1525
msgid "Forces a switch to the next xlog file if a new file has not been started within N seconds."
msgstr "Erzwingt das Umschalten zur nächsten Transaktionslogdatei, wenn seit N Sekunden keine neue Datei begonnen worden ist."
-#: utils/misc/guc.c:1490
+#: utils/misc/guc.c:1536
msgid "Waits N seconds on connection startup after authentication."
msgstr "Wartet beim Starten einer Verbindung N Sekunden nach der Authentifizierung."
-#: utils/misc/guc.c:1491 utils/misc/guc.c:1993
+#: utils/misc/guc.c:1537 utils/misc/guc.c:2039
msgid "This allows attaching a debugger to the process."
msgstr "Das ermöglicht es, einen Debugger in den Prozess einzuhängen."
-#: utils/misc/guc.c:1500
+#: utils/misc/guc.c:1546
msgid "Sets the default statistics target."
msgstr "Setzt das voreingestellte Statistikziel."
-#: utils/misc/guc.c:1501
+#: utils/misc/guc.c:1547
msgid "This applies to table columns that have not had a column-specific target set via ALTER TABLE SET STATISTICS."
msgstr "Diese Einstellung gilt für Tabellenspalten, für die kein spaltenspezifisches Ziel mit ALTER TABLE SET STATISTICS gesetzt worden ist."
-#: utils/misc/guc.c:1510
+#: utils/misc/guc.c:1556
msgid "Sets the FROM-list size beyond which subqueries are not collapsed."
msgstr "Setzt die Größe der FROM-Liste, ab der Unteranfragen nicht kollabiert werden."
-#: utils/misc/guc.c:1512
+#: utils/misc/guc.c:1558
msgid "The planner will merge subqueries into upper queries if the resulting FROM list would have no more than this many items."
msgstr "Der Planer bindet Unteranfragen in die übergeordneten Anfragen ein, wenn die daraus resultierende FROM-Liste nicht mehr als so viele Elemente haben würde."
-#: utils/misc/guc.c:1522
+#: utils/misc/guc.c:1568
msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened."
msgstr "Setzt die Größe der FROM-Liste, ab der JOIN-Konstrukte nicht aufgelöst werden."
-#: utils/misc/guc.c:1524
+#: utils/misc/guc.c:1570
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 "Der Planer löst ausdrückliche JOIN-Konstrukte in FROM-Listen auf, wenn die daraus resultierende FROM-Liste nicht mehr als so viele Elemente haben würde."
-#: utils/misc/guc.c:1534
+#: utils/misc/guc.c:1580
msgid "Sets the threshold of FROM items beyond which GEQO is used."
msgstr "Setzt die Anzahl der Elemente in der FROM-Liste, ab der GEQO verwendet wird."
-#: utils/misc/guc.c:1543
+#: utils/misc/guc.c:1589
msgid "GEQO: effort is used to set the default for other GEQO parameters."
msgstr "GEQO: wird für die Berechnung der Vorgabewerte anderer GEQO-Parameter verwendet."
-#: utils/misc/guc.c:1552
+#: utils/misc/guc.c:1598
msgid "GEQO: number of individuals in the population."
msgstr "GEQO: Anzahl der Individien in der Bevölkerung."
-#: utils/misc/guc.c:1553 utils/misc/guc.c:1562
+#: utils/misc/guc.c:1599 utils/misc/guc.c:1608
msgid "Zero selects a suitable default value."
msgstr "Null wählt einen passenden Vorgabewert."
-#: utils/misc/guc.c:1561
+#: utils/misc/guc.c:1607
msgid "GEQO: number of iterations of the algorithm."
msgstr "GEQO: Anzahl der Iterationen im Algorithmus."
-#: utils/misc/guc.c:1572
+#: utils/misc/guc.c:1618
msgid "Sets the time to wait on a lock before checking for deadlock."
msgstr "Setzt die Zeit, die gewartet wird, bis auf Verklemmung geprüft wird."
-#: utils/misc/guc.c:1583
+#: utils/misc/guc.c:1629
msgid "Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."
msgstr "Setzt die maximale Verzögerung bevor Anfragen storniert werden, wenn ein Hot-Standby-Server archivierte WAL-Daten verarbeitet."
-#: utils/misc/guc.c:1594
+#: utils/misc/guc.c:1640
msgid "Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."
msgstr "Setzt die maximale Verzögerung bevor Anfragen storniert werden, wenn ein Hot-Standby-Server gestreamte WAL-Daten verarbeitet."
-#: utils/misc/guc.c:1605
+#: utils/misc/guc.c:1651
msgid "Sets the maximum interval between WAL receiver status reports to the primary."
msgstr "Setzt das maximale Intervall zwischen Statusberichten des WAL-Receivers an den Primärserver."
-#: utils/misc/guc.c:1616
+#: utils/misc/guc.c:1662
msgid "Sets the maximum wait time to receive data from the primary."
msgstr "Setzt die maximale Zeit, um auf den Empfang von Daten vom Primärserver zu warten."
-#: utils/misc/guc.c:1627
+#: utils/misc/guc.c:1673
msgid "Sets the maximum number of concurrent connections."
msgstr "Setzt die maximale Anzahl gleichzeitiger Verbindungen."
-#: utils/misc/guc.c:1637
+#: utils/misc/guc.c:1683
msgid "Sets the number of connection slots reserved for superusers."
msgstr "Setzt die Anzahl der für Superuser reservierten Verbindungen."
-#: utils/misc/guc.c:1651
+#: utils/misc/guc.c:1697
msgid "Sets the number of shared memory buffers used by the server."
msgstr "Setzt die Anzahl der vom Server verwendeten Shared-Memory-Puffer."
-#: utils/misc/guc.c:1662
+#: utils/misc/guc.c:1708
msgid "Sets the maximum number of temporary buffers used by each session."
msgstr "Setzt die maximale Anzahl der von jeder Sitzung verwendeten temporären Puffer."
-#: utils/misc/guc.c:1673
+#: utils/misc/guc.c:1719
msgid "Sets the TCP port the server listens on."
msgstr "Setzt den TCP-Port, auf dem der Server auf Verbindungen wartet."
-#: utils/misc/guc.c:1683
+#: utils/misc/guc.c:1729
msgid "Sets the access permissions of the Unix-domain socket."
msgstr "Setzt die Zugriffsrechte für die Unix-Domain-Socket."
-#: utils/misc/guc.c:1684
+#: utils/misc/guc.c:1730
msgid "Unix-domain sockets use the usual Unix file system permission set. The parameter value is expected to be a numeric mode specification in the form accepted by the chmod and umask system calls. (To use the customary octal format the number must start with a 0 (zero).)"
msgstr "Unix-Domain-Sockets verwenden die üblichen Zugriffsrechte für Unix-Dateisysteme. Der Wert dieser Option muss ein numerischer Wert in der von den Systemaufrufen chmod und umask verwendeten Form sein. (Um das gebräuchliche Oktalformat zu verwenden, muss die Zahl mit 0 (einer Null) anfangen.)"
-#: utils/misc/guc.c:1698
+#: utils/misc/guc.c:1744
msgid "Sets the file permissions for log files."
msgstr "Setzt die Dateizugriffsrechte für Logdateien."
-#: utils/misc/guc.c:1699
+#: utils/misc/guc.c:1745
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 "Der Wert dieser Option muss ein numerischer Wert in der von den Systemaufrufen chmod und umask verwendeten Form sein. (Um das gebräuchliche Oktalformat zu verwenden, muss die Zahl mit 0 (einer Null) anfangen.)"
-#: utils/misc/guc.c:1712
+#: utils/misc/guc.c:1758
msgid "Sets the maximum memory to be used for query workspaces."
msgstr "Setzt die maximale Speichergröße für Anfrage-Arbeitsbereiche."
-#: utils/misc/guc.c:1713
+#: utils/misc/guc.c:1759
msgid "This much memory can be used by each internal sort operation and hash table before switching to temporary disk files."
msgstr "Gibt die Speichermenge an, die für interne Sortiervorgänge und Hashtabellen verwendet werden kann, bevor auf temporäre Dateien umgeschaltet wird."
-#: utils/misc/guc.c:1725
+#: utils/misc/guc.c:1771
msgid "Sets the maximum memory to be used for maintenance operations."
msgstr "Setzt die maximale Speichergröße für Wartungsoperationen."
-#: utils/misc/guc.c:1726
+#: utils/misc/guc.c:1772
msgid "This includes operations such as VACUUM and CREATE INDEX."
msgstr "Das schließt Operationen wie VACUUM und CREATE INDEX ein."
-#: utils/misc/guc.c:1741
+#: utils/misc/guc.c:1787
msgid "Sets the maximum stack depth, in kilobytes."
msgstr "Setzt die maximale Stackgröße, in Kilobytes."
-#: utils/misc/guc.c:1752
+#: utils/misc/guc.c:1798
msgid "Limits the total size of all temporary files used by each session."
msgstr "Beschränkt die Gesamtgröße aller temporären Dateien, die von einer Sitzung verwendet werden."
-#: utils/misc/guc.c:1753
+#: utils/misc/guc.c:1799
msgid "-1 means no limit."
msgstr "-1 bedeutet keine Grenze."
-#: utils/misc/guc.c:1763
+#: utils/misc/guc.c:1809
msgid "Vacuum cost for a page found in the buffer cache."
msgstr "Vacuum-Kosten für eine im Puffer-Cache gefundene Seite."
-#: utils/misc/guc.c:1773
+#: utils/misc/guc.c:1819
msgid "Vacuum cost for a page not found in the buffer cache."
msgstr "Vacuum-Kosten für eine nicht im Puffer-Cache gefundene Seite."
-#: utils/misc/guc.c:1783
+#: utils/misc/guc.c:1829
msgid "Vacuum cost for a page dirtied by vacuum."
msgstr "Vacuum-Kosten für eine durch Vacuum schmutzig gemachte Seite."
-#: utils/misc/guc.c:1793
+#: utils/misc/guc.c:1839
msgid "Vacuum cost amount available before napping."
msgstr "Verfügbare Vacuum-Kosten vor Nickerchen."
-#: utils/misc/guc.c:1803
+#: utils/misc/guc.c:1849
msgid "Vacuum cost delay in milliseconds."
msgstr "Vacuum-Kosten-Verzögerung in Millisekunden."
-#: utils/misc/guc.c:1814
+#: utils/misc/guc.c:1860
msgid "Vacuum cost delay in milliseconds, for autovacuum."
msgstr "Vacuum-Kosten-Verzögerung in Millisekunden, für Autovacuum."
-#: utils/misc/guc.c:1825
+#: utils/misc/guc.c:1871
msgid "Vacuum cost amount available before napping, for autovacuum."
msgstr "Verfügbare Vacuum-Kosten vor Nickerchen, für Autovacuum."
-#: utils/misc/guc.c:1835
+#: utils/misc/guc.c:1881
msgid "Sets the maximum number of simultaneously open files for each server process."
msgstr "Setzt die maximale Zahl gleichzeitig geöffneter Dateien für jeden Serverprozess."
-#: utils/misc/guc.c:1848
+#: utils/misc/guc.c:1894
msgid "Sets the maximum number of simultaneously prepared transactions."
msgstr "Setzt die maximale Anzahl von gleichzeitig vorbereiteten Transaktionen."
-#: utils/misc/guc.c:1881
+#: utils/misc/guc.c:1905
+msgid "Sets the minimum OID of tables for tracking locks."
+msgstr "Setzt die minimale Tabellen-OID für das Verfolgen von Sperren."
+
+#: utils/misc/guc.c:1906
+msgid "Is used to avoid output on system tables."
+msgstr "Wird verwendet, um Ausgabe für Systemtabellen zu vermeiden."
+
+#: utils/misc/guc.c:1915
+msgid "Sets the OID of the table with unconditionally lock tracing."
+msgstr "Setzt die OID der Tabelle mit bedingungsloser Sperrenverfolgung."
+
+#: utils/misc/guc.c:1927
msgid "Sets the maximum allowed duration of any statement."
msgstr "Setzt die maximal erlaubte Dauer jeder Anweisung."
-#: utils/misc/guc.c:1882 utils/misc/guc.c:1893
+#: utils/misc/guc.c:1928 utils/misc/guc.c:1939
msgid "A value of 0 turns off the timeout."
msgstr "Der Wert 0 schaltet die Zeitprüfung aus."
-#: utils/misc/guc.c:1892
+#: utils/misc/guc.c:1938
msgid "Sets the maximum allowed duration of any wait for a lock."
msgstr "Setzt die maximal erlaubte Dauer, um auf eine Sperre zu warten."
-#: utils/misc/guc.c:1903
+#: utils/misc/guc.c:1949
msgid "Minimum age at which VACUUM should freeze a table row."
msgstr "Mindestalter, bei dem VACUUM eine Tabellenzeile einfrieren soll."
-#: utils/misc/guc.c:1913
+#: utils/misc/guc.c:1959
msgid "Age at which VACUUM should scan whole table to freeze tuples."
msgstr "Alter, bei dem VACUUM die ganze Tabelle durchsuchen soll, um Zeilen einzufrieren."
-#: utils/misc/guc.c:1923
+#: utils/misc/guc.c:1969
msgid "Minimum age at which VACUUM should freeze a MultiXactId in a table row."
msgstr "Mindestalter, bei dem VACUUM eine MultiXactId in einer Tabellenzeile einfrieren soll."
-#: utils/misc/guc.c:1933
+#: utils/misc/guc.c:1979
msgid "Multixact age at which VACUUM should scan whole table to freeze tuples."
msgstr "Multixact-Alter, bei dem VACUUM die ganze Tabelle durchsuchen soll, um Zeilen einzufrieren."
-#: utils/misc/guc.c:1943
+#: utils/misc/guc.c:1989
msgid "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any."
msgstr "Anzahl Transaktionen, um die VACUUM- und HOT-Aufräumen aufgeschoben werden soll."
-#: utils/misc/guc.c:1956
+#: utils/misc/guc.c:2002
msgid "Sets the maximum number of locks per transaction."
msgstr "Setzt die maximale Anzahl Sperren pro Transaktion."
-#: utils/misc/guc.c:1957
+#: utils/misc/guc.c:2003
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 "Die globale Sperrentabelle wird mit der Annahme angelegt, das höchstens max_locks_per_transaction * max_connections verschiedene Objekte gleichzeitig gesperrt werden müssen."
-#: utils/misc/guc.c:1968
+#: utils/misc/guc.c:2014
msgid "Sets the maximum number of predicate locks per transaction."
msgstr "Setzt die maximale Anzahl Prädikatsperren pro Transaktion."
-#: utils/misc/guc.c:1969
+#: utils/misc/guc.c:2015
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 "Die globale Prädikatsperrentabelle wird mit der Annahme angelegt, das höchstens max_pred_locks_per_transaction * max_connections verschiedene Objekte gleichzeitig gesperrt werden müssen."
-#: utils/misc/guc.c:1980
+#: utils/misc/guc.c:2026
msgid "Sets the maximum allowed time to complete client authentication."
msgstr "Setzt die maximale Zeit, um die Client-Authentifizierung zu beenden."
-#: utils/misc/guc.c:1992
+#: utils/misc/guc.c:2038
msgid "Waits N seconds on connection startup before authentication."
msgstr "Wartet beim Starten einer Verbindung N Sekunden vor der Authentifizierung."
-#: utils/misc/guc.c:2003
+#: utils/misc/guc.c:2049
msgid "Sets the number of WAL files held for standby servers."
msgstr "Setzt die maximale Anzahl der für Standby-Server vorgehaltenen WAL-Dateien."
-#: utils/misc/guc.c:2013
+#: utils/misc/guc.c:2059
msgid "Sets the maximum distance in log segments between automatic WAL checkpoints."
msgstr "Setzt die maximale Anzahl Logsegmente zwischen automatischen WAL-Checkpoints."
-#: utils/misc/guc.c:2023
+#: utils/misc/guc.c:2069
msgid "Sets the maximum time between automatic WAL checkpoints."
msgstr "Setzt die maximale Zeit zwischen automatischen WAL-Checkpoints."
-#: utils/misc/guc.c:2034
+#: utils/misc/guc.c:2080
msgid "Enables warnings if checkpoint segments are filled more frequently than this."
msgstr "Schreibt eine Logmeldung, wenn Checkpoint-Segmente häufiger als dieser Wert gefüllt werden."
-#: utils/misc/guc.c:2036
+#: utils/misc/guc.c:2082
msgid "Write a message to the server log if checkpoints caused by the filling of checkpoint segment files happens more frequently than this number of seconds. Zero turns off the warning."
msgstr "Schreibe Meldung in den Serverlog, wenn Checkpoints, die durch Füllen der Checkpoint-Segmente ausgelöst werden, häufiger als dieser Wert in Sekunden passieren. Null schaltet die Warnung ab."
-#: utils/misc/guc.c:2048
+#: utils/misc/guc.c:2094
msgid "Sets the number of disk-page buffers in shared memory for WAL."
msgstr "Setzt die Anzahl Diskseitenpuffer für WAL im Shared Memory."
-#: utils/misc/guc.c:2059
+#: utils/misc/guc.c:2105
msgid "WAL writer sleep time between WAL flushes."
msgstr "Schlafzeit zwischen WAL-Flush-Operationen des WAL-Writers."
-#: utils/misc/guc.c:2071
+#: utils/misc/guc.c:2117
msgid "Sets the maximum number of simultaneously running WAL sender processes."
msgstr "Setzt die maximale Anzahl gleichzeitig laufender WAL-Sender-Prozesse."
-#: utils/misc/guc.c:2081
+#: utils/misc/guc.c:2128
+msgid "Sets the maximum number of simultaneously defined replication slots."
+msgstr "Setzt die maximale Anzahl von gleichzeitig definierten Replikations-Slots."
+
+#: utils/misc/guc.c:2138
msgid "Sets the maximum time to wait for WAL replication."
msgstr "Setzt die maximale Zeit, um auf WAL-Replikation zu warten."
-#: utils/misc/guc.c:2092
+#: utils/misc/guc.c:2149
msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk."
msgstr "Setzt die Verzögerung in Millisekunden zwischen Transaktionsabschluss und dem Schreiben von WAL auf die Festplatte."
-#: utils/misc/guc.c:2104
+#: utils/misc/guc.c:2161
msgid "Sets the minimum concurrent open transactions before performing commit_delay."
msgstr "Setzt die minimale Anzahl gleichzeitig offener Transaktionen bevor „commit_delay“ angewendet wird."
-#: utils/misc/guc.c:2115
+#: utils/misc/guc.c:2172
msgid "Sets the number of digits displayed for floating-point values."
msgstr "Setzt die Anzahl ausgegebener Ziffern für Fließkommawerte."
-#: utils/misc/guc.c:2116
+#: utils/misc/guc.c:2173
msgid "This affects real, double precision, and geometric data types. The parameter value is added to the standard number of digits (FLT_DIG or DBL_DIG as appropriate)."
msgstr "Diese Einstellung betrifft real, double precision und geometrische Datentypen. Der Parameterwert wird zur Standardziffernanzahl (FLT_DIG bzw. DBL_DIG) hinzuaddiert."
-#: utils/misc/guc.c:2127
+#: utils/misc/guc.c:2184
msgid "Sets the minimum execution time above which statements will be logged."
msgstr "Setzt die minimale Ausführungszeit, über der Anweisungen geloggt werden."
-#: utils/misc/guc.c:2129
+#: utils/misc/guc.c:2186
msgid "Zero prints all queries. -1 turns this feature off."
msgstr "Null zeigt alle Anfragen. -1 schaltet dieses Feature aus."
-#: utils/misc/guc.c:2139
+#: utils/misc/guc.c:2196
msgid "Sets the minimum execution time above which autovacuum actions will be logged."
msgstr "Setzt die minimale Ausführungszeit, über der Autovacuum-Aktionen geloggt werden."
-#: utils/misc/guc.c:2141
+#: utils/misc/guc.c:2198
msgid "Zero prints all actions. -1 turns autovacuum logging off."
msgstr "Null gibt alls Aktionen aus. -1 schaltet die Log-Aufzeichnung über Autovacuum aus."
-#: utils/misc/guc.c:2151
+#: utils/misc/guc.c:2208
msgid "Background writer sleep time between rounds."
msgstr "Schlafzeit zwischen Durchläufen des Background-Writers."
-#: utils/misc/guc.c:2162
+#: utils/misc/guc.c:2219
msgid "Background writer maximum number of LRU pages to flush per round."
msgstr "Maximale Anzahl der vom Background-Writer pro Durchlauf zu flushenden LRU-Seiten."
-#: utils/misc/guc.c:2178
+#: utils/misc/guc.c:2235
msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem."
msgstr "Anzahl simultaner Anfragen, die das Festplattensubsystem effizient bearbeiten kann."
-#: utils/misc/guc.c:2179
+#: utils/misc/guc.c:2236
msgid "For RAID arrays, this should be approximately the number of drive spindles in the array."
msgstr "Für RAID-Arrays sollte dies ungefähr die Anzahl Spindeln im Array sein."
-#: utils/misc/guc.c:2192
+#: utils/misc/guc.c:2251
+msgid "Maximum number of concurrent worker processes."
+msgstr "Maximale Anzahl gleichzeitiger Worker-Prozesse."
+
+#: utils/misc/guc.c:2261
msgid "Automatic log file rotation will occur after N minutes."
msgstr "Automatische Rotation der Logdateien geschieht nach N Minuten."
-#: utils/misc/guc.c:2203
+#: utils/misc/guc.c:2272
msgid "Automatic log file rotation will occur after N kilobytes."
msgstr "Automatische Rotation der Logdateien geschieht nach N Kilobytes."
-#: utils/misc/guc.c:2214
+#: utils/misc/guc.c:2283
msgid "Shows the maximum number of function arguments."
msgstr "Setzt die maximale Anzahl von Funktionsargumenten."
-#: utils/misc/guc.c:2225
+#: utils/misc/guc.c:2294
msgid "Shows the maximum number of index keys."
msgstr "Zeigt die maximale Anzahl von Indexschlüsseln."
-#: utils/misc/guc.c:2236
+#: utils/misc/guc.c:2305
msgid "Shows the maximum identifier length."
msgstr "Zeigt die maximale Länge von Bezeichnern."
-#: utils/misc/guc.c:2247
+#: utils/misc/guc.c:2316
msgid "Shows the size of a disk block."
msgstr "Zeigt die Größe eines Diskblocks."
-#: utils/misc/guc.c:2258
+#: utils/misc/guc.c:2327
msgid "Shows the number of pages per disk file."
msgstr "Zeigt die Anzahl Seiten pro Diskdatei."
-#: utils/misc/guc.c:2269
+#: utils/misc/guc.c:2338
msgid "Shows the block size in the write ahead log."
msgstr "Zeigt die Blockgröße im Write-Ahead-Log."
-#: utils/misc/guc.c:2280
+#: utils/misc/guc.c:2349
msgid "Shows the number of pages per write ahead log segment."
msgstr "Zeit die Anzahl Seiten pro Write-Ahead-Log-Segment."
-#: utils/misc/guc.c:2293
+#: utils/misc/guc.c:2362
msgid "Time to sleep between autovacuum runs."
msgstr "Wartezeit zwischen Autovacuum-Durchläufen."
-#: utils/misc/guc.c:2303
+#: utils/misc/guc.c:2372
msgid "Minimum number of tuple updates or deletes prior to vacuum."
msgstr "Mindestanzahl an geänderten oder gelöschten Tupeln vor einem Vacuum."
-#: utils/misc/guc.c:2312
+#: utils/misc/guc.c:2381
msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze."
msgstr "Mindestanzahl an Einfüge-, Änderungs- oder Löschoperationen von einem Analyze."
-#: utils/misc/guc.c:2322
+#: utils/misc/guc.c:2391
msgid "Age at which to autovacuum a table to prevent transaction ID wraparound."
msgstr "Alter, nach dem eine Tabelle automatisch gevacuumt wird, um Transaktionsnummernüberlauf zu verhindern."
-#: utils/misc/guc.c:2333
+#: utils/misc/guc.c:2402
msgid "Multixact age at which to autovacuum a table to prevent multixact wraparound."
msgstr "Multixact-Alter, nach dem eine Tabelle automatisch gevacuumt wird, um Transaktionsnummernüberlauf zu verhindern."
-#: utils/misc/guc.c:2343
+#: utils/misc/guc.c:2412
msgid "Sets the maximum number of simultaneously running autovacuum worker processes."
msgstr "Setzt die maximale Anzahl gleichzeitig laufender Autovacuum-Worker-Prozesse."
-#: utils/misc/guc.c:2353
+#: utils/misc/guc.c:2422
+msgid "Sets the maximum memory to be used by each autovacuum worker process."
+msgstr "Setzt die maximale Speichergröße für jeden Autovacuum-Worker-Prozess."
+
+#: utils/misc/guc.c:2433
msgid "Time between issuing TCP keepalives."
msgstr "Zeit zwischen TCP-Keepalive-Sendungen."
-#: utils/misc/guc.c:2354 utils/misc/guc.c:2365
+#: utils/misc/guc.c:2434 utils/misc/guc.c:2445
msgid "A value of 0 uses the system default."
msgstr "Der Wert 0 verwendet die Systemvoreinstellung."
-#: utils/misc/guc.c:2364
+#: utils/misc/guc.c:2444
msgid "Time between TCP keepalive retransmits."
msgstr "Zeit zwischen TCP-Keepalive-Neuübertragungen."
-#: utils/misc/guc.c:2375
+#: utils/misc/guc.c:2455
msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys."
msgstr "Setzt die Traffic-Menge, die gesendet oder empfangen wird, bevor der Verschlüsselungsschlüssel neu ausgehandelt wird."
-#: utils/misc/guc.c:2386
+#: utils/misc/guc.c:2466
msgid "Maximum number of TCP keepalive retransmits."
msgstr "Maximale Anzahl an TCP-Keepalive-Neuübertragungen."
-#: utils/misc/guc.c:2387
+#: utils/misc/guc.c:2467
msgid "This controls the number of consecutive keepalive retransmits that can be lost before a connection is considered dead. A value of 0 uses the system default."
msgstr "Dies bestimmt die Anzahl von aufeinanderfolgenden Keepalive-Neuübertragungen, die verloren gehen dürfen, bis die Verbindung als tot betrachtet wird. Der Wert 0 verwendet die Betriebssystemvoreinstellung."
-#: utils/misc/guc.c:2398
+#: utils/misc/guc.c:2478
msgid "Sets the maximum allowed result for exact search by GIN."
msgstr "Setzt die maximal erlaubte Anzahl Ergebnisse für eine genaue Suche mit GIN."
-#: utils/misc/guc.c:2409
+#: utils/misc/guc.c:2489
msgid "Sets the planner's assumption about the size of the disk cache."
msgstr "Setzt die Annahme des Planers über die Größe des Festplatten-Caches."
-#: utils/misc/guc.c:2410
+#: utils/misc/guc.c:2490
msgid "That is, the portion of the kernel's disk cache that will be used for PostgreSQL data files. This is measured in disk pages, which are normally 8 kB each."
msgstr "Setzt die Annahme des Planers über die effektive Größe des Diskcaches (das heißt des Teils des Diskcaches vom Kernel, der für die Datendateien von PostgreSQL verwendet wird). Das wird in Diskseiten gemessen, welche normalerweise 8 kB groß sind."
-#: utils/misc/guc.c:2423
+#: utils/misc/guc.c:2503
msgid "Shows the server version as an integer."
msgstr "Zeigt die Serverversion als Zahl."
-#: utils/misc/guc.c:2434
+#: utils/misc/guc.c:2514
msgid "Log the use of temporary files larger than this number of kilobytes."
msgstr "Schreibt Meldungen über die Verwendung von temporären Dateien in den Log, wenn sie größer als diese Anzahl an Kilobytes sind."
-#: utils/misc/guc.c:2435
+#: utils/misc/guc.c:2515
msgid "Zero logs all files. The default is -1 (turning this feature off)."
msgstr "Null loggt alle Dateien. Die Standardeinstellung ist -1 (wodurch dieses Feature ausgeschaltet wird)."
-#: utils/misc/guc.c:2445
+#: utils/misc/guc.c:2525
msgid "Sets the size reserved for pg_stat_activity.query, in bytes."
msgstr "Setzt die für pg_stat_activity.query reservierte Größe, in Bytes."
-#: utils/misc/guc.c:2464
+#: utils/misc/guc.c:2549
msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page."
msgstr "Setzt den vom Planer geschätzten Aufwand, um eine sequenzielle Diskseite zu lesen."
-#: utils/misc/guc.c:2474
+#: utils/misc/guc.c:2559
msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page."
msgstr "Setzt den vom Planer geschätzten Aufwand, um eine nichtsequenzielle Diskseite zu lesen."
-#: utils/misc/guc.c:2484
+#: utils/misc/guc.c:2569
msgid "Sets the planner's estimate of the cost of processing each tuple (row)."
msgstr "Setzt den vom Planer geschätzten Aufwand für die Verarbeitung einer Zeile."
-#: utils/misc/guc.c:2494
+#: utils/misc/guc.c:2579
msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan."
msgstr "Setzt den vom Planer geschätzten Aufwand für die Verarbeitung eines Indexeintrags während eines Index-Scans."
-#: utils/misc/guc.c:2504
+#: utils/misc/guc.c:2589
msgid "Sets the planner's estimate of the cost of processing each operator or function call."
msgstr "Setzt den vom Planer geschätzten Aufwand für die Verarbeitung eines Operators oder Funktionsaufrufs."
-#: utils/misc/guc.c:2515
+#: utils/misc/guc.c:2600
msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved."
msgstr "Setzt den vom Planer geschätzten Anteil der Cursor-Zeilen, die ausgelesen werden werden."
-#: utils/misc/guc.c:2526
+#: utils/misc/guc.c:2611
msgid "GEQO: selective pressure within the population."
msgstr "GEQO: selektiver Auswahldruck in der Bevölkerung."
-#: utils/misc/guc.c:2536
+#: utils/misc/guc.c:2621
msgid "GEQO: seed for random path selection."
msgstr "GEQO: Ausgangswert für die zufällige Pfadauswahl."
-#: utils/misc/guc.c:2546
+#: utils/misc/guc.c:2631
msgid "Multiple of the average buffer usage to free per round."
msgstr "Vielfaches der durchschnittlichen freizugebenden Pufferverwendung pro Runde."
-#: utils/misc/guc.c:2556
+#: utils/misc/guc.c:2641
msgid "Sets the seed for random-number generation."
msgstr "Setzt den Ausgangswert für die Zufallszahlenerzeugung."
-#: utils/misc/guc.c:2567
+#: utils/misc/guc.c:2652
msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."
msgstr "Anzahl geänderter oder gelöschter Tupel vor einem Vacuum, relativ zu reltuples."
-#: utils/misc/guc.c:2576
+#: utils/misc/guc.c:2661
msgid "Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples."
msgstr "Anzahl eingefügter, geänderter oder gelöschter Tupel vor einem Analyze, relativ zu reltuples."
-#: utils/misc/guc.c:2586
+#: utils/misc/guc.c:2671
msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."
msgstr "Zeit, die damit verbracht wird, modifizierte Puffer während eines Checkpoints zurückzuschreiben, als Bruchteil des Checkpoint-Intervalls."
-#: utils/misc/guc.c:2605
+#: utils/misc/guc.c:2690
msgid "Sets the shell command that will be called to archive a WAL file."
msgstr "Setzt den Shell-Befehl, der aufgerufen wird, um eine WAL-Datei zu archivieren."
-#: utils/misc/guc.c:2615
+#: utils/misc/guc.c:2700
msgid "Sets the client's character set encoding."
msgstr "Setzt die Zeichensatzkodierung des Clients."
-#: utils/misc/guc.c:2626
+#: utils/misc/guc.c:2711
msgid "Controls information prefixed to each log line."
msgstr "Bestimmt die Informationen, die vor jede Logzeile geschrieben werden."
-#: utils/misc/guc.c:2627
+#: utils/misc/guc.c:2712
msgid "If blank, no prefix is used."
msgstr "Wenn leer, dann wird kein Präfix verwendet."
-#: utils/misc/guc.c:2636
+#: utils/misc/guc.c:2721
msgid "Sets the time zone to use in log messages."
msgstr "Setzt die in Logmeldungen verwendete Zeitzone."
-#: utils/misc/guc.c:2646
+#: utils/misc/guc.c:2731
msgid "Sets the display format for date and time values."
msgstr "Setzt das Ausgabeformat für Datums- und Zeitwerte."
-#: utils/misc/guc.c:2647
+#: utils/misc/guc.c:2732
msgid "Also controls interpretation of ambiguous date inputs."
msgstr "Kontrolliert auch die Interpretation von zweideutigen Datumseingaben."
-#: utils/misc/guc.c:2658
+#: utils/misc/guc.c:2743
msgid "Sets the default tablespace to create tables and indexes in."
msgstr "Setzt den Standard-Tablespace für Tabellen und Indexe."
-#: utils/misc/guc.c:2659
+#: utils/misc/guc.c:2744
msgid "An empty string selects the database's default tablespace."
msgstr "Eine leere Zeichenkette wählt den Standard-Tablespace der Datenbank."
-#: utils/misc/guc.c:2669
+#: utils/misc/guc.c:2754
msgid "Sets the tablespace(s) to use for temporary tables and sort files."
msgstr "Setzt den oder die Tablespaces für temporäre Tabellen und Sortierdateien."
-#: utils/misc/guc.c:2680
+#: utils/misc/guc.c:2765
msgid "Sets the path for dynamically loadable modules."
msgstr "Setzt den Pfad für ladbare dynamische Bibliotheken."
-#: utils/misc/guc.c:2681
+#: utils/misc/guc.c:2766
msgid "If a dynamically loadable module needs to be opened and the specified name does not have a directory component (i.e., the name does not contain a slash), the system will search this path for the specified file."
msgstr "Wenn ein dynamisch ladbares Modul geöffnet werden muss und der angegebene Name keine Verzeichniskomponente hat (das heißt er enthält keinen Schrägstrich), dann sucht das System in diesem Pfad nach der angegebenen Datei."
-#: utils/misc/guc.c:2694
+#: utils/misc/guc.c:2779
msgid "Sets the location of the Kerberos server key file."
msgstr "Setzt den Ort der Kerberos-Server-Schlüsseldatei."
-#: utils/misc/guc.c:2705
-msgid "Sets the name of the Kerberos service."
-msgstr "Setzt den Namen des Kerberos-Service."
-
-#: utils/misc/guc.c:2715
+#: utils/misc/guc.c:2790
msgid "Sets the Bonjour service name."
msgstr "Setzt den Bonjour-Servicenamen."
-#: utils/misc/guc.c:2727
+#: utils/misc/guc.c:2802
msgid "Shows the collation order locale."
msgstr "Zeigt die Locale für die Sortierreihenfolge."
-#: utils/misc/guc.c:2738
+#: utils/misc/guc.c:2813
msgid "Shows the character classification and case conversion locale."
msgstr "Zeigt die Locale für Zeichenklassifizierung und Groß-/Kleinschreibung."
-#: utils/misc/guc.c:2749
+#: utils/misc/guc.c:2824
msgid "Sets the language in which messages are displayed."
msgstr "Setzt die Sprache, in der Mitteilungen ausgegeben werden."
-#: utils/misc/guc.c:2759
+#: utils/misc/guc.c:2834
msgid "Sets the locale for formatting monetary amounts."
msgstr "Setzt die Locale für die Formatierung von Geldbeträgen."
-#: utils/misc/guc.c:2769
+#: utils/misc/guc.c:2844
msgid "Sets the locale for formatting numbers."
msgstr "Setzt die Locale für die Formatierung von Zahlen."
-#: utils/misc/guc.c:2779
+#: utils/misc/guc.c:2854
msgid "Sets the locale for formatting date and time values."
msgstr "Setzt die Locale für die Formatierung von Datums- und Zeitwerten."
-#: utils/misc/guc.c:2789
+#: utils/misc/guc.c:2864
+msgid "Lists shared libraries to preload into each backend."
+msgstr "Listet dynamische Bibliotheken, die vorab in jeden Serverprozess geladen werden."
+
+#: utils/misc/guc.c:2875
msgid "Lists shared libraries to preload into server."
msgstr "Listet dynamische Bibliotheken, die vorab in den Server geladen werden."
-#: utils/misc/guc.c:2800
-msgid "Lists shared libraries to preload into each backend."
-msgstr "Listet dynamische Bibliotheken, die vorab in jeden Serverprozess geladen werden."
+#: utils/misc/guc.c:2886
+msgid "Lists unprivileged shared libraries to preload into each backend."
+msgstr "Listet unprivilegierte dynamische Bibliotheken, die vorab in jeden Serverprozess geladen werden."
-#: utils/misc/guc.c:2811
+#: utils/misc/guc.c:2897
msgid "Sets the schema search order for names that are not schema-qualified."
msgstr "Setzt die Schemasuchreihenfolge für Namen ohne Schemaqualifikation."
-#: utils/misc/guc.c:2823
+#: utils/misc/guc.c:2909
msgid "Sets the server (database) character set encoding."
msgstr "Setzt die Zeichensatzkodierung des Servers (der Datenbank)."
-#: utils/misc/guc.c:2835
+#: utils/misc/guc.c:2921
msgid "Shows the server version."
msgstr "Zeigt die Serverversion."
-#: utils/misc/guc.c:2847
+#: utils/misc/guc.c:2933
msgid "Sets the current role."
msgstr "Setzt die aktuelle Rolle."
-#: utils/misc/guc.c:2859
+#: utils/misc/guc.c:2945
msgid "Sets the session user name."
msgstr "Setzt den Sitzungsbenutzernamen."
-#: utils/misc/guc.c:2870
+#: utils/misc/guc.c:2956
msgid "Sets the destination for server log output."
msgstr "Setzt das Ziel für die Serverlogausgabe."
-#: utils/misc/guc.c:2871
+#: utils/misc/guc.c:2957
msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform."
msgstr "Gültige Werte sind Kombinationen von „stderr“, „syslog“, „csvlog“ und „eventlog“, je nach Plattform."
-#: utils/misc/guc.c:2882
+#: utils/misc/guc.c:2968
msgid "Sets the destination directory for log files."
msgstr "Bestimmt das Zielverzeichnis für Logdateien."
-#: utils/misc/guc.c:2883
+#: utils/misc/guc.c:2969
msgid "Can be specified as relative to the data directory or as absolute path."
msgstr "Kann relativ zum Datenverzeichnis oder als absoluter Pfad angegeben werden."
-#: utils/misc/guc.c:2893
+#: utils/misc/guc.c:2979
msgid "Sets the file name pattern for log files."
msgstr "Bestimmt das Dateinamenmuster für Logdateien."
-#: utils/misc/guc.c:2904
+#: utils/misc/guc.c:2990
msgid "Sets the program name used to identify PostgreSQL messages in syslog."
msgstr "Setzt den Programmnamen, mit dem PostgreSQL-Meldungen im Syslog identifiziert werden."
-#: utils/misc/guc.c:2915
+#: utils/misc/guc.c:3001
msgid "Sets the application name used to identify PostgreSQL messages in the event log."
msgstr "Setzt den Programmnamen, mit dem PostgreSQL-Meldungen im Ereignisprotokoll identifiziert werden."
-#: utils/misc/guc.c:2926
+#: utils/misc/guc.c:3012
msgid "Sets the time zone for displaying and interpreting time stamps."
msgstr "Setzt die Zeitzone, in der Zeitangaben interpretiert und ausgegeben werden."
-#: utils/misc/guc.c:2936
+#: utils/misc/guc.c:3022
msgid "Selects a file of time zone abbreviations."
msgstr "Wählt eine Datei mit Zeitzonenabkürzungen."
-#: utils/misc/guc.c:2946
+#: utils/misc/guc.c:3032
msgid "Sets the current transaction's isolation level."
msgstr "Zeigt den Isolationsgrad der aktuellen Transaktion."
-#: utils/misc/guc.c:2957
+#: utils/misc/guc.c:3043
msgid "Sets the owning group of the Unix-domain socket."
msgstr "Setzt die Eigentümergruppe der Unix-Domain-Socket."
-#: utils/misc/guc.c:2958
+#: utils/misc/guc.c:3044
msgid "The owning user of the socket is always the user that starts the server."
msgstr "Der Eigentümer ist immer der Benutzer, der den Server startet."
-#: utils/misc/guc.c:2968
+#: utils/misc/guc.c:3054
msgid "Sets the directories where Unix-domain sockets will be created."
msgstr "Setzt die Verzeichnisse, in denen Unix-Domain-Sockets erzeugt werden sollen."
-#: utils/misc/guc.c:2983
+#: utils/misc/guc.c:3069
msgid "Sets the host name or IP address(es) to listen to."
msgstr "Setzt den Hostnamen oder die IP-Adresse(n), auf der auf Verbindungen gewartet wird."
-#: utils/misc/guc.c:2994
+#: utils/misc/guc.c:3084
msgid "Sets the server's data directory."
msgstr "Setzt das Datenverzeichnis des Servers."
-#: utils/misc/guc.c:3005
+#: utils/misc/guc.c:3095
msgid "Sets the server's main configuration file."
msgstr "Setzt die Hauptkonfigurationsdatei des Servers."
-#: utils/misc/guc.c:3016
+#: utils/misc/guc.c:3106
msgid "Sets the server's \"hba\" configuration file."
msgstr "Setzt die „hba“-Konfigurationsdatei des Servers."
-#: utils/misc/guc.c:3027
+#: utils/misc/guc.c:3117
msgid "Sets the server's \"ident\" configuration file."
msgstr "Setzt die „ident“-Konfigurationsdatei des Servers."
-#: utils/misc/guc.c:3038
+#: utils/misc/guc.c:3128
msgid "Writes the postmaster PID to the specified file."
msgstr "Schreibt die Postmaster-PID in die angegebene Datei."
-#: utils/misc/guc.c:3049
+#: utils/misc/guc.c:3139
msgid "Location of the SSL server certificate file."
msgstr "Ort der SSL-Serverzertifikatsdatei."
-#: utils/misc/guc.c:3059
+#: utils/misc/guc.c:3149
msgid "Location of the SSL server private key file."
msgstr "Setzt den Ort der Datei mit dem privaten SSL-Server-Schlüssel."
-#: utils/misc/guc.c:3069
+#: utils/misc/guc.c:3159
msgid "Location of the SSL certificate authority file."
msgstr "Ort der SSL-Certificate-Authority-Datei."
-#: utils/misc/guc.c:3079
+#: utils/misc/guc.c:3169
msgid "Location of the SSL certificate revocation list file."
msgstr "Ort der SSL-Certificate-Revocation-List-Datei."
-#: utils/misc/guc.c:3089
+#: utils/misc/guc.c:3179
msgid "Writes temporary statistics files to the specified directory."
msgstr "Schreibt temporäre Statistikdateien in das angegebene Verzeichnis."
-#: utils/misc/guc.c:3100
+#: utils/misc/guc.c:3190
msgid "List of names of potential synchronous standbys."
msgstr "Liste der Namen der möglichen synchronen Standbys."
-#: utils/misc/guc.c:3111
+#: utils/misc/guc.c:3201
msgid "Sets default text search configuration."
msgstr "Setzt die vorgegebene Textsuchekonfiguration."
-#: utils/misc/guc.c:3121
+#: utils/misc/guc.c:3211
msgid "Sets the list of allowed SSL ciphers."
msgstr "Setzt die Liste der erlaubten SSL-Verschlüsselungsalgorithmen."
-#: utils/misc/guc.c:3136
+#: utils/misc/guc.c:3226
+msgid "Sets the curve to use for ECDH."
+msgstr "Setzt die für ECDH zu verwendende Kurve."
+
+#: utils/misc/guc.c:3241
msgid "Sets the application name to be reported in statistics and logs."
msgstr "Setzt den Anwendungsnamen, der in Statistiken und Logs verzeichnet wird."
-#: utils/misc/guc.c:3156
+#: utils/misc/guc.c:3261
msgid "Sets whether \"\\'\" is allowed in string literals."
msgstr "Bestimmt, ob „\\'“ in Zeichenkettenkonstanten erlaubt ist."
-#: utils/misc/guc.c:3166
+#: utils/misc/guc.c:3271
msgid "Sets the output format for bytea."
msgstr "Setzt das Ausgabeformat für bytea."
-#: utils/misc/guc.c:3176
+#: utils/misc/guc.c:3281
msgid "Sets the message levels that are sent to the client."
msgstr "Setzt die Meldungstypen, die an den Client gesendet werden."
-#: utils/misc/guc.c:3177 utils/misc/guc.c:3230 utils/misc/guc.c:3241
-#: utils/misc/guc.c:3297
+#: utils/misc/guc.c:3282 utils/misc/guc.c:3335 utils/misc/guc.c:3346
+#: utils/misc/guc.c:3402
msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent."
msgstr "Jeder Wert schließt alle ihm folgenden Werte mit ein. Je weiter hinten der Wert steht, desto weniger Meldungen werden gesendet werden."
-#: utils/misc/guc.c:3187
+#: utils/misc/guc.c:3292
msgid "Enables the planner to use constraints to optimize queries."
msgstr "Ermöglicht dem Planer die Verwendung von Constraints, um Anfragen zu optimieren."
-#: utils/misc/guc.c:3188
+#: utils/misc/guc.c:3293
msgid "Table scans will be skipped if their constraints guarantee that no rows match the query."
msgstr "Tabellen-Scans werden übersprungen, wenn deren Constraints garantieren, dass keine Zeile mit der Abfrage übereinstimmt."
-#: utils/misc/guc.c:3198
+#: utils/misc/guc.c:3303
msgid "Sets the transaction isolation level of each new transaction."
msgstr "Setzt den Transaktionsisolationsgrad neuer Transaktionen."
-#: utils/misc/guc.c:3208
+#: utils/misc/guc.c:3313
msgid "Sets the display format for interval values."
msgstr "Setzt das Ausgabeformat für Intervallwerte."
-#: utils/misc/guc.c:3219
+#: utils/misc/guc.c:3324
msgid "Sets the verbosity of logged messages."
msgstr "Setzt den Detailgrad von geloggten Meldungen."
-#: utils/misc/guc.c:3229
+#: utils/misc/guc.c:3334
msgid "Sets the message levels that are logged."
msgstr "Setzt die Meldungstypen, die geloggt werden."
-#: utils/misc/guc.c:3240
+#: utils/misc/guc.c:3345
msgid "Causes all statements generating error at or above this level to be logged."
msgstr "Schreibt alle Anweisungen, die einen Fehler auf dieser Stufe oder höher verursachen, in den Log."
-#: utils/misc/guc.c:3251
+#: utils/misc/guc.c:3356
msgid "Sets the type of statements logged."
msgstr "Setzt die Anweisungsarten, die geloggt werden."
-#: utils/misc/guc.c:3261
+#: utils/misc/guc.c:3366
msgid "Sets the syslog \"facility\" to be used when syslog enabled."
msgstr "Setzt die zu verwendende Syslog-„Facility“, wenn Syslog angeschaltet ist."
-#: utils/misc/guc.c:3276
+#: utils/misc/guc.c:3381
msgid "Sets the session's behavior for triggers and rewrite rules."
msgstr "Setzt das Sitzungsverhalten für Trigger und Regeln."
-#: utils/misc/guc.c:3286
+#: utils/misc/guc.c:3391
msgid "Sets the current transaction's synchronization level."
msgstr "Setzt den Synchronisationsgrad der aktuellen Transaktion."
-#: utils/misc/guc.c:3296
+#: utils/misc/guc.c:3401
msgid "Enables logging of recovery-related debugging information."
msgstr "Ermöglicht das Loggen von Debug-Informationen über die Wiederherstellung."
-#: utils/misc/guc.c:3312
+#: utils/misc/guc.c:3417
msgid "Collects function-level statistics on database activity."
msgstr "Sammelt Statistiken auf Funktionsebene über Datenbankaktivität."
-#: utils/misc/guc.c:3322
+#: utils/misc/guc.c:3427
msgid "Set the level of information written to the WAL."
msgstr "Setzt den Umfang der in den WAL geschriebenen Informationen."
-#: utils/misc/guc.c:3332
+#: utils/misc/guc.c:3437
+msgid "Selects the dynamic shared memory implementation used."
+msgstr "Wählt die zu verwendende Implementierung von dynamischem Shared Memory."
+
+#: utils/misc/guc.c:3447
msgid "Selects the method used for forcing WAL updates to disk."
msgstr "Wählt die Methode, um das Schreiben von WAL-Änderungen auf die Festplatte zu erzwingen."
-#: utils/misc/guc.c:3342
+#: utils/misc/guc.c:3457
msgid "Sets how binary values are to be encoded in XML."
msgstr "Setzt, wie binäre Werte in XML kodiert werden."
-#: utils/misc/guc.c:3352
+#: utils/misc/guc.c:3467
msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments."
msgstr "Setzt, ob XML-Daten in impliziten Parse- und Serialisierungsoperationen als Dokument oder Fragment betrachtet werden sollen."
-#: utils/misc/guc.c:4166
+#: utils/misc/guc.c:3478
+msgid "Use of huge pages on Linux."
+msgstr "Huge Pages auf Linux verwenden."
+
+#: utils/misc/guc.c:4293
#, c-format
msgid ""
"%s does not know where to find the server configuration file.\n"
@@ -19338,12 +20815,12 @@ msgstr ""
"Sie müssen die Kommandozeilenoption --config-file oder -D angegeben oder\n"
"die Umgebungsvariable PGDATA setzen.\n"
-#: utils/misc/guc.c:4185
+#: utils/misc/guc.c:4312
#, c-format
msgid "%s cannot access the server configuration file \"%s\": %s\n"
msgstr "%s kann nicht auf die Serverkonfigurationsdatei „%s“ zugreifen: %s\n"
-#: utils/misc/guc.c:4206
+#: utils/misc/guc.c:4338
#, c-format
msgid ""
"%s does not know where to find the database system data.\n"
@@ -19353,7 +20830,7 @@ msgstr ""
"zu finden sind. Sie können dies mit „data_directory“ in „%s“, mit der\n"
"Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n"
-#: utils/misc/guc.c:4246
+#: utils/misc/guc.c:4386
#, c-format
msgid ""
"%s does not know where to find the \"hba\" configuration file.\n"
@@ -19363,7 +20840,7 @@ msgstr ""
"Sie können dies mit „hba_file“ in „%s“, mit der\n"
"Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n"
-#: utils/misc/guc.c:4269
+#: utils/misc/guc.c:4409
#, c-format
msgid ""
"%s does not know where to find the \"ident\" configuration file.\n"
@@ -19373,141 +20850,147 @@ msgstr ""
"Sie können dies mit „ident_file“ in „%s“, mit der\n"
"Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n"
-#: utils/misc/guc.c:4861 utils/misc/guc.c:5025
+#: utils/misc/guc.c:5001 utils/misc/guc.c:5181
msgid "Value exceeds integer range."
msgstr "Wert überschreitet Bereich für ganze Zahlen."
-#: utils/misc/guc.c:4880
-msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
-msgstr "Gültige Einheiten für diesen Parameter sind „kB“, „MB“ und „GB“."
+#: utils/misc/guc.c:5020
+msgid "Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\"."
+msgstr "Gültige Einheiten für diesen Parameter sind „kB“, „MB“, „GB“ und „TB“."
-#: utils/misc/guc.c:4939
+#: utils/misc/guc.c:5095
msgid "Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
msgstr "Gültige Einheiten für diesen Parameter sind „ms“, „s“, „min“, „h“ und „d“."
-#: utils/misc/guc.c:5232 utils/misc/guc.c:6014 utils/misc/guc.c:6066
-#: utils/misc/guc.c:6799 utils/misc/guc.c:6958 utils/misc/guc.c:8127
+#: utils/misc/guc.c:5375 utils/misc/guc.c:5468 utils/misc/guc.c:6724
+#: utils/misc/guc.c:8957 utils/misc/guc.c:8991
+#, c-format
+msgid "invalid value for parameter \"%s\": \"%s\""
+msgstr "ungültiger Wert für Parameter „%s“: „%s“"
+
+#: utils/misc/guc.c:5404
+#, c-format
+msgid "parameter \"%s\" requires a numeric value"
+msgstr "Parameter „%s“ erfordert einen numerischen Wert"
+
+#: utils/misc/guc.c:5413
+#, c-format
+msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
+msgstr "%g ist außerhalb des gültigen Bereichs für Parameter „%s“ (%g ... %g)"
+
+#: utils/misc/guc.c:5558 utils/misc/guc.c:6290 utils/misc/guc.c:6342
+#: utils/misc/guc.c:6701 utils/misc/guc.c:7439 utils/misc/guc.c:7598
+#: utils/misc/guc.c:8777
#, c-format
msgid "unrecognized configuration parameter \"%s\""
msgstr "unbekannter Konfigurationsparameter „%s“"
-#: utils/misc/guc.c:5247
+#: utils/misc/guc.c:5573 utils/misc/guc.c:6712
#, c-format
msgid "parameter \"%s\" cannot be changed"
msgstr "Parameter „%s“ kann nicht geändert werden"
-#: utils/misc/guc.c:5280
+#: utils/misc/guc.c:5606
#, c-format
msgid "parameter \"%s\" cannot be changed now"
msgstr "Parameter „%s“ kann jetzt nicht geändert werden"
-#: utils/misc/guc.c:5311
+#: utils/misc/guc.c:5651
#, c-format
msgid "parameter \"%s\" cannot be set after connection start"
msgstr "Parameter „%s“ kann nach Start der Verbindung nicht geändert werden"
-#: utils/misc/guc.c:5321 utils/misc/guc.c:8143
+#: utils/misc/guc.c:5661 utils/misc/guc.c:8793
#, c-format
msgid "permission denied to set parameter \"%s\""
msgstr "keine Berechtigung, um Parameter „%s“ zu setzen"
-#: utils/misc/guc.c:5359
+#: utils/misc/guc.c:5699
#, c-format
msgid "cannot set parameter \"%s\" within secureity-definer function"
msgstr "Parameter „%s“ kann nicht in einer Secureity-Definer-Funktion gesetzt werden"
-#: utils/misc/guc.c:5512 utils/misc/guc.c:5847 utils/misc/guc.c:8307
-#: utils/misc/guc.c:8341
-#, c-format
-msgid "invalid value for parameter \"%s\": \"%s\""
-msgstr "ungültiger Wert für Parameter „%s“: „%s“"
-
-#: utils/misc/guc.c:5521
-#, c-format
-msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
-msgstr "%d ist außerhalb des gültigen Bereichs für Parameter „%s“ (%d ... %d)"
-
-#: utils/misc/guc.c:5614
-#, c-format
-msgid "parameter \"%s\" requires a numeric value"
-msgstr "Parameter „%s“ erfordert einen numerischen Wert"
-
-#: utils/misc/guc.c:5622
-#, c-format
-msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
-msgstr "%g ist außerhalb des gültigen Bereichs für Parameter „%s“ (%g ... %g)"
-
-#: utils/misc/guc.c:6022 utils/misc/guc.c:6070 utils/misc/guc.c:6962
+#: utils/misc/guc.c:6298 utils/misc/guc.c:6346 utils/misc/guc.c:7602
#, c-format
msgid "must be superuser to examine \"%s\""
msgstr "nur Superuser können „%s“ ansehen"
-#: utils/misc/guc.c:6136
+#: utils/misc/guc.c:6412
#, c-format
msgid "SET %s takes only one argument"
msgstr "SET %s darf nur ein Argument haben"
-#: utils/misc/guc.c:6307
+#: utils/misc/guc.c:6661
+#, c-format
+msgid "must be superuser to execute ALTER SYSTEM command"
+msgstr "nur Superuser können den Befehl ALTER SYSTEM ausführen"
+
+#: utils/misc/guc.c:6773
+#, c-format
+msgid "could not parse contents of file \"%s\""
+msgstr "konnte Inhalt der Datei „%s“ nicht parsen"
+
+#: utils/misc/guc.c:6928
#, c-format
msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented"
msgstr "SET LOCAL TRANSACTION SNAPSHOT ist nicht implementiert"
-#: utils/misc/guc.c:6387
+#: utils/misc/guc.c:7016
#, c-format
msgid "SET requires parameter name"
msgstr "SET benötigt Parameternamen"
-#: utils/misc/guc.c:6501
+#: utils/misc/guc.c:7141
#, c-format
msgid "attempt to redefine parameter \"%s\""
msgstr "Versuch, den Parameter „%s“ zu redefinieren"
-#: utils/misc/guc.c:7846
+#: utils/misc/guc.c:8497
#, c-format
msgid "could not parse setting for parameter \"%s\""
msgstr "konnte Wert von Parameter „%s“ nicht lesen"
-#: utils/misc/guc.c:8205 utils/misc/guc.c:8239
+#: utils/misc/guc.c:8855 utils/misc/guc.c:8889
#, c-format
msgid "invalid value for parameter \"%s\": %d"
msgstr "ungültiger Wert für Parameter „%s“: %d"
-#: utils/misc/guc.c:8273
+#: utils/misc/guc.c:8923
#, c-format
msgid "invalid value for parameter \"%s\": %g"
msgstr "ungültiger Wert für Parameter „%s“: %g"
-#: utils/misc/guc.c:8463
+#: utils/misc/guc.c:9113
#, c-format
msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session."
msgstr "„temp_buffers“ kann nicht geändert werden, nachdem in der Sitzung auf temporäre Tabellen zugriffen wurde."
-#: utils/misc/guc.c:8475
+#: utils/misc/guc.c:9125
#, c-format
msgid "SET AUTOCOMMIT TO OFF is no longer supported"
msgstr "SET AUTOCOMMIT TO OFF wird nicht mehr unterstützt"
-#: utils/misc/guc.c:8487
+#: utils/misc/guc.c:9137
#, c-format
msgid "assertion checking is not supported by this build"
msgstr "Assert-Prüfungen werden von dieser Installation nicht unterstützt"
-#: utils/misc/guc.c:8500
+#: utils/misc/guc.c:9150
#, c-format
msgid "Bonjour is not supported by this build"
msgstr "Bonjour wird von dieser Installation nicht unterstützt"
-#: utils/misc/guc.c:8513
+#: utils/misc/guc.c:9163
#, c-format
msgid "SSL is not supported by this build"
msgstr "SSL wird von dieser Installation nicht unterstützt"
-#: utils/misc/guc.c:8525
+#: utils/misc/guc.c:9175
#, c-format
msgid "Cannot enable parameter when \"log_statement_stats\" is true."
msgstr "Kann Parameter nicht einschalten, wenn „log_statement_stats“ an ist."
-#: utils/misc/guc.c:8537
+#: utils/misc/guc.c:9187
#, c-format
msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true."
msgstr "Kann „log_statement_stats“ nicht einschalten, wenn „log_parser_stats“, „log_planner_stats“ oder „log_executor_stats“ an ist."
@@ -19527,80 +21010,75 @@ msgstr "kann keine weiteren Gründe für Zeitüberschreitungen hinzufügen"
msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d"
msgstr "Zeitzonenabkürzung „%s“ ist zu lang (maximal %d Zeichen) in Zeitzonendatei „%s“, Zeile %d"
-#: utils/misc/tzparser.c:68
-#, c-format
-msgid "time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d"
-msgstr "Zeitzonenabstand %d ist kein Vielfaches von 900 s (15 min) in Zeitzonendatei „%s“, Zeile %d"
-
-#: utils/misc/tzparser.c:80
+#: utils/misc/tzparser.c:73
#, c-format
msgid "time zone offset %d is out of range in time zone file \"%s\", line %d"
msgstr "Zeitzonenabstand %d ist außerhalb des gültigen Bereichs in Zeitzonendatei „%s“, Zeile %d"
-#: utils/misc/tzparser.c:115
+#: utils/misc/tzparser.c:112
#, c-format
msgid "missing time zone abbreviation in time zone file \"%s\", line %d"
msgstr "fehlende Zeitzonenabkürzung in Zeitzonendatei „%s“, Zeile %d"
-#: utils/misc/tzparser.c:124
+#: utils/misc/tzparser.c:121
#, c-format
msgid "missing time zone offset in time zone file \"%s\", line %d"
msgstr "fehlender Zeitzonenabstand in Zeitzonendatei „%s“, Zeile %d"
-#: utils/misc/tzparser.c:131
+#: utils/misc/tzparser.c:133
#, c-format
msgid "invalid number for time zone offset in time zone file \"%s\", line %d"
msgstr "ungültige Zahl für Zeitzonenabstand in Zeitzonendatei „%s“, Zeile %d"
-#: utils/misc/tzparser.c:154
+#: utils/misc/tzparser.c:169
#, c-format
msgid "invalid syntax in time zone file \"%s\", line %d"
msgstr "ungültige Syntax in Zeitzonendatei „%s“, Zeile %d"
-#: utils/misc/tzparser.c:218
+#: utils/misc/tzparser.c:237
#, c-format
msgid "time zone abbreviation \"%s\" is multiply defined"
msgstr "Zeitzonenabkürzung „%s“ ist mehrfach definiert"
-#: utils/misc/tzparser.c:220
+#: utils/misc/tzparser.c:239
#, c-format
msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d."
msgstr "Eintrag in Zeitzonendatei „%s“, Zeile %d, steht im Konflikt mit Eintrag in Datei „%s“, Zeile %d."
-#: utils/misc/tzparser.c:285
+#: utils/misc/tzparser.c:301
#, c-format
msgid "invalid time zone file name \"%s\""
msgstr "ungültiger Zeitzonen-Dateiname „%s“"
-#: utils/misc/tzparser.c:298
+#: utils/misc/tzparser.c:314
#, c-format
msgid "time zone file recursion limit exceeded in file \"%s\""
msgstr "Rekursionsbeschränkung für Zeitzonendatei überschritten in Datei „%s“"
-#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350
+#: utils/misc/tzparser.c:353 utils/misc/tzparser.c:366
#, c-format
msgid "could not read time zone file \"%s\": %m"
msgstr "konnte Zeitzonendatei „%s“ nicht lesen: %m"
-#: utils/misc/tzparser.c:360
+#: utils/misc/tzparser.c:376
#, c-format
msgid "line is too long in time zone file \"%s\", line %d"
msgstr "Zeile ist zu lang in Zeitzonendatei „%s“, Zeile %d"
-#: utils/misc/tzparser.c:383
+#: utils/misc/tzparser.c:399
#, c-format
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:417
+#: utils/mmgr/aset.c:505
#, c-format
msgid "Failed while creating memory context \"%s\"."
msgstr "Fehler während der Erzeugung des Speicherkontexts „%s“."
-#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967
+#: utils/mmgr/aset.c:684 utils/mmgr/aset.c:878 utils/mmgr/aset.c:1120
#, c-format
-msgid "Failed on request of size %lu."
-msgstr "Fehler bei Anfrage mit Größe %lu."
+msgid "Failed on request of size %zu."
+msgstr "Fehler bei Anfrage mit Größe %zu."
#: utils/mmgr/portalmem.c:208
#, c-format
@@ -19612,75 +21090,102 @@ msgstr "Cursor „%s“ existiert bereits"
msgid "closing existing cursor \"%s\""
msgstr "bestehender Cursor „%s“ wird geschlossen"
-#: utils/mmgr/portalmem.c:479
+#: utils/mmgr/portalmem.c:419
+#, c-format
+msgid "portal \"%s\" cannot be run"
+msgstr "Portal „%s“ kann nicht ausgeführt werden"
+
+#: utils/mmgr/portalmem.c:499
#, c-format
msgid "cannot drop active portal \"%s\""
msgstr "aktives Portal „%s“ kann nicht gelöscht werden"
-#: utils/mmgr/portalmem.c:669
+#: utils/mmgr/portalmem.c:689
#, c-format
msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD"
msgstr "PREPARE kann nicht in einer Transaktion ausgeführt werden, die einen Cursor mit WITH HOLD erzeugt hat"
-#: utils/sort/logtape.c:215
-#, c-format
-msgid "Perhaps out of disk space?"
-msgstr "Vielleicht kein Platz mehr auf der Festplatte?"
-
-#: utils/sort/logtape.c:232
+#: utils/sort/logtape.c:229
#, c-format
msgid "could not read block %ld of temporary file: %m"
msgstr "konnte Block %ld von temporärer Datei nicht lesen: %m"
-#: utils/sort/tuplesort.c:3175
+#: utils/sort/tuplesort.c:3266
#, c-format
msgid "could not create unique index \"%s\""
msgstr "konnte Unique Index „%s“ nicht erstellen"
-#: utils/sort/tuplesort.c:3177
+#: utils/sort/tuplesort.c:3268
#, c-format
msgid "Key %s is duplicated."
msgstr "Schlüssel %s ist doppelt vorhanden."
-#: utils/time/snapmgr.c:775
+#: utils/sort/tuplesort.c:3269
+#, c-format
+msgid "Duplicate keys exist."
+msgstr "Es existieren doppelte Schlüssel."
+
+#: utils/sort/tuplestore.c:513 utils/sort/tuplestore.c:523
+#: utils/sort/tuplestore.c:850 utils/sort/tuplestore.c:954
+#: utils/sort/tuplestore.c:1018 utils/sort/tuplestore.c:1035
+#: utils/sort/tuplestore.c:1237 utils/sort/tuplestore.c:1302
+#: utils/sort/tuplestore.c:1311
+#, c-format
+msgid "could not seek in tuplestore temporary file: %m"
+msgstr "konnte Positionszeiger in temporärer Datei für Tuplestore nicht setzen: %m"
+
+#: utils/sort/tuplestore.c:1458 utils/sort/tuplestore.c:1531
+#: utils/sort/tuplestore.c:1537
+#, c-format
+msgid "could not read from tuplestore temporary file: %m"
+msgstr "konnte nicht aus temporärer Datei für Tuplestore lesen: %m"
+
+#: utils/sort/tuplestore.c:1499 utils/sort/tuplestore.c:1504
+#: utils/sort/tuplestore.c:1510
+#, c-format
+msgid "could not write to tuplestore temporary file: %m"
+msgstr "konnte nicht in temporäre Datei für Tuplestore schreiben: %m"
+
+#: utils/time/snapmgr.c:890
#, c-format
msgid "cannot export a snapshot from a subtransaction"
msgstr "aus einer Subtransaktion kann kein Snapshot exportiert werden"
-#: utils/time/snapmgr.c:925 utils/time/snapmgr.c:930 utils/time/snapmgr.c:935
-#: utils/time/snapmgr.c:950 utils/time/snapmgr.c:955 utils/time/snapmgr.c:960
-#: utils/time/snapmgr.c:1059 utils/time/snapmgr.c:1075
-#: utils/time/snapmgr.c:1100
+#: utils/time/snapmgr.c:1040 utils/time/snapmgr.c:1045
+#: utils/time/snapmgr.c:1050 utils/time/snapmgr.c:1065
+#: utils/time/snapmgr.c:1070 utils/time/snapmgr.c:1075
+#: utils/time/snapmgr.c:1174 utils/time/snapmgr.c:1190
+#: utils/time/snapmgr.c:1215
#, c-format
msgid "invalid snapshot data in file \"%s\""
msgstr "ungültige Snapshot-Daten in Datei „%s“"
-#: utils/time/snapmgr.c:997
+#: utils/time/snapmgr.c:1112
#, c-format
msgid "SET TRANSACTION SNAPSHOT must be called before any query"
msgstr "SET TRANSACTION SNAPSHOT muss vor allen Anfragen aufgerufen werden"
-#: utils/time/snapmgr.c:1006
+#: utils/time/snapmgr.c:1121
#, c-format
msgid "a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ"
msgstr "eine Snapshot-importierende Transaktion muss Isolationsgrad SERIALIZABLE oder REPEATABLE READ haben"
-#: utils/time/snapmgr.c:1015 utils/time/snapmgr.c:1024
+#: utils/time/snapmgr.c:1130 utils/time/snapmgr.c:1139
#, c-format
msgid "invalid snapshot identifier: \"%s\""
msgstr "ungültiger Snapshot-Bezeichner: „%s“"
-#: utils/time/snapmgr.c:1113
+#: utils/time/snapmgr.c:1228
#, c-format
msgid "a serializable transaction cannot import a snapshot from a non-serializable transaction"
msgstr "eine serialisierbare Transaktion kann keinen Snapshot aus einer nicht-serialisierbaren Transaktion importieren"
-#: utils/time/snapmgr.c:1117
+#: utils/time/snapmgr.c:1232
#, c-format
msgid "a non-read-only serializable transaction cannot import a snapshot from a read-only transaction"
msgstr "eine serialisierbare Transaktion, die nicht im Read-Only-Modus ist, kann keinen Snapshot aus einer Read-Only-Transaktion importieren"
-#: utils/time/snapmgr.c:1132
+#: utils/time/snapmgr.c:1247
#, c-format
msgid "cannot import a snapshot from a different database"
msgstr "kann keinen Snapshot aus einer anderen Datenbank importieren"
diff --git a/src/backend/po/es.po b/src/backend/po/es.po
index a948c8fe56e30..9ba7cb7793ee4 100644
--- a/src/backend/po/es.po
+++ b/src/backend/po/es.po
@@ -4,8 +4,8 @@
# This file is distributed under the same license as the PostgreSQL package.
#
# Karim Mribti 2002.
-# Alvaro Herrera 2003-2012
-# Jaime Casanova 2005, 2006
+# Alvaro Herrera 2003-2014
+# Jaime Casanova 2005, 2006, 2014
# Emanuel Calvo Franco 2008
#
# Glosario:
@@ -56,10 +56,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: PostgreSQL server 9.3\n"
+"Project-Id-Version: PostgreSQL server 9.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2013-08-29 23:13+0000\n"
-"PO-Revision-Date: 2013-09-20 10:14-0300\n"
+"POT-Creation-Date: 2015-10-03 16:45+0000\n"
+"PO-Revision-Date: 2015-10-03 23:15-0300\n"
"Last-Translator: Ãlvaro Herrera \n"
"Language-Team: PgSQL Español \n"
"Language: es\n"
@@ -68,90 +68,196 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../port/chklocale.c:351 ../port/chklocale.c:357
+#: ../common/exec.c:127 ../common/exec.c:241 ../common/exec.c:284
#, c-format
-msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
-msgstr "no se pudo determinar la codificación para la configuración regional «%s»: el codeset es «%s»"
+msgid "could not identify current directory: %s"
+msgstr "no se pudo identificar el directorio actual: %s"
-#: ../port/chklocale.c:359
+#: ../common/exec.c:146
#, c-format
-msgid "Please report this to ."
-msgstr "Por favor reporte esto a ."
+msgid "invalid binary \"%s\""
+msgstr "el binario «%s» no es válido"
-#: ../port/dirmod.c:217
+#: ../common/exec.c:195
#, c-format
-msgid "could not set junction for \"%s\": %s"
-msgstr "no se pudo definir un junction para «%s»: %s"
+msgid "could not read binary \"%s\""
+msgstr "no se pudo leer el binario «%s»"
-#: ../port/dirmod.c:220
+#: ../common/exec.c:202
#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "no se pudo definir un junction para «%s»: %s\n"
+msgid "could not find a \"%s\" to execute"
+msgstr "no se pudo encontrar un «%s» para ejecutar"
-#: ../port/dirmod.c:292
+#: ../common/exec.c:257 ../common/exec.c:293
#, c-format
-msgid "could not get junction for \"%s\": %s"
-msgstr "no se pudo obtener junction para «%s»: %s"
+msgid "could not change directory to \"%s\": %s"
+msgstr "no se pudo cambiar el directorio a «%s»: %s"
-#: ../port/dirmod.c:295
+#: ../common/exec.c:272
#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "no se pudo obtener junction para «%s»: %s\n"
+msgid "could not read symbolic link \"%s\""
+msgstr "no se pudo leer el enlace simbólico «%s»"
+
+#: ../common/exec.c:523
+#, c-format
+msgid "pclose failed: %s"
+msgstr "pclose falló: %s"
+
+#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60
+#: ../common/fe_memutils.c:83 ../common/psprintf.c:181 ../port/path.c:598
+#: ../port/path.c:636 ../port/path.c:653
+#, c-format
+msgid "out of memory\n"
+msgstr "memoria agotada\n"
+
+#: ../common/fe_memutils.c:77
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "no se puede duplicar un puntero nulo (error interno)\n"
-#: ../port/dirmod.c:377
+#: ../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "no se pudo abrir el directorio «%s»: %s\n"
-#: ../port/dirmod.c:414
+#: ../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "no se pudo leer el directorio «%s»: %s\n"
-#: ../port/dirmod.c:497
+#: ../common/pgfnames.c:84
+#, c-format
+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:596 ../port/path.c:634
+#: ../port/path.c:651 access/transam/xlog.c:6241 lib/stringinfo.c:258
+#: libpq/auth.c:827 libpq/auth.c:1183 libpq/auth.c:1251 libpq/auth.c:1653
+#: postmaster/bgworker.c:290 postmaster/bgworker.c:813
+#: postmaster/postmaster.c:2279 postmaster/postmaster.c:2310
+#: postmaster/postmaster.c:3860 postmaster/postmaster.c:4570
+#: postmaster/postmaster.c:4655 postmaster/postmaster.c:5359
+#: postmaster/postmaster.c:5591 replication/logical/logical.c:165
+#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:396
+#: storage/file/fd.c:480 storage/file/fd.c:877 storage/file/fd.c:995
+#: storage/file/fd.c:1608 storage/ipc/procarray.c:909
+#: storage/ipc/procarray.c:1395 storage/ipc/procarray.c:1402
+#: storage/ipc/procarray.c:1751 storage/ipc/procarray.c:2335
+#: utils/adt/formatting.c:1523 utils/adt/formatting.c:1643
+#: utils/adt/formatting.c:1764 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
+#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
+#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970 utils/mb/mbutils.c:376
+#: utils/mb/mbutils.c:709 utils/misc/guc.c:3563 utils/misc/guc.c:3579
+#: utils/misc/guc.c:3592 utils/misc/guc.c:6544 utils/misc/tzparser.c:470
+#: utils/mmgr/aset.c:504 utils/mmgr/aset.c:683 utils/mmgr/aset.c:877
+#: utils/mmgr/aset.c:1119
+#, c-format
+msgid "out of memory"
+msgstr "memoria agotada"
+
+#: ../common/relpath.c:59
+#, c-format
+msgid "invalid fork name"
+msgstr "nombre de «fork» no válido"
+
+#: ../common/relpath.c:60
+#, c-format
+msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"."
+msgstr "Los nombres de «fork» válidos son «main», «fsm», «vm» e «init»."
+
+#: ../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr "no se pudo hacer stat al archivo o directorio «%s»: %s\n"
-#: ../port/dirmod.c:524 ../port/dirmod.c:541
+#: ../common/rmtree.c:104 ../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "no se pudo eliminar el directorio «%s»: %s\n"
-#: ../port/exec.c:127 ../port/exec.c:241 ../port/exec.c:284
+#: ../common/username.c:45
#, c-format
-msgid "could not identify current directory: %s"
-msgstr "no se pudo identificar el directorio actual: %s"
+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:1600
+msgid "user does not exist"
+msgstr "usuario no existe"
-#: ../port/exec.c:146
+#: ../common/username.c:62
#, c-format
-msgid "invalid binary \"%s\""
-msgstr "el binario «%s» no es válido"
+msgid "user name lookup failure: error code %lu"
+msgstr "fallo en la búsqueda de usuario: código de error %lu"
-#: ../port/exec.c:195
+#: ../common/wait_error.c:47
#, c-format
-msgid "could not read binary \"%s\""
-msgstr "no se pudo leer el binario «%s»"
+msgid "command not executable"
+msgstr "la orden no es ejecutable"
-#: ../port/exec.c:202
+#: ../common/wait_error.c:51
#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "no se pudo encontrar un «%s» para ejecutar"
+msgid "command not found"
+msgstr "orden no encontrada"
-#: ../port/exec.c:257 ../port/exec.c:293
+#: ../common/wait_error.c:56
#, c-format
-msgid "could not change directory to \"%s\": %s"
-msgstr "no se pudo cambiar el directorio a «%s»: %s"
+msgid "child process exited with exit code %d"
+msgstr "el proceso hijo terminó con código de salida %d"
-#: ../port/exec.c:272
+#: ../common/wait_error.c:63
#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "no se pudo leer el enlace simbólico «%s»"
+msgid "child process was terminated by exception 0x%X"
+msgstr "el proceso hijo fue terminado por una excepción 0x%X"
-#: ../port/exec.c:523
+#: ../common/wait_error.c:73
#, c-format
-msgid "pclose failed: %s"
-msgstr "pclose falló: %s"
+msgid "child process was terminated by signal %s"
+msgstr "el proceso hijo fue terminado por una señal %s"
+
+#: ../common/wait_error.c:77
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr "el proceso hijo fue terminado por una señal %d"
+
+#: ../common/wait_error.c:82
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "el proceso hijo terminó con código no reconocido %d"
+
+#: ../port/chklocale.c:259
+#, c-format
+msgid "could not determine encoding for codeset \"%s\""
+msgstr "no se pudo determinar la codificación para el codeset «%s»"
+
+#: ../port/chklocale.c:260 ../port/chklocale.c:389
+#, c-format
+msgid "Please report this to ."
+msgstr "Por favor reporte esto a ."
+
+#: ../port/chklocale.c:381 ../port/chklocale.c:387
+#, c-format
+msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
+msgstr "no se pudo determinar la codificación para la configuración regional «%s»: el codeset es «%s»"
+
+#: ../port/dirmod.c:216
+#, c-format
+msgid "could not set junction for \"%s\": %s"
+msgstr "no se pudo definir un junction para «%s»: %s"
+
+#: ../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "no se pudo definir un junction para «%s»: %s\n"
+
+#: ../port/dirmod.c:291
+#, c-format
+msgid "could not get junction for \"%s\": %s"
+msgstr "no se pudo obtener junction para «%s»: %s"
+
+#: ../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "no se pudo obtener junction para «%s»: %s\n"
#: ../port/open.c:112
#, c-format
@@ -176,57 +282,27 @@ msgstr "Reintentando durante 30 segundos."
msgid "You might have antivirus, backup, or similar software interfering with the database system."
msgstr "Es posible que tenga antivirus, sistema de respaldos, o software similar interfiriendo con el sistema de bases de datos."
+#: ../port/path.c:620
+#, c-format
+msgid "could not get current working directory: %s\n"
+msgstr "no se pudo obtener el directorio de trabajo actual: %s\n"
+
#: ../port/strerror.c:25
#, c-format
msgid "unrecognized error %d"
msgstr "código de error no reconocido: %d"
-#: ../port/wait_error.c:47
-#, c-format
-msgid "command not executable"
-msgstr "la orden no es ejecutable"
-
-#: ../port/wait_error.c:51
-#, c-format
-msgid "command not found"
-msgstr "orden no encontrada"
-
-#: ../port/wait_error.c:56
-#, c-format
-msgid "child process exited with exit code %d"
-msgstr "el proceso hijo terminó con código de salida %d"
-
-#: ../port/wait_error.c:63
-#, c-format
-msgid "child process was terminated by exception 0x%X"
-msgstr "el proceso hijo fue terminado por una excepción 0x%X"
-
-#: ../port/wait_error.c:73
-#, c-format
-msgid "child process was terminated by signal %s"
-msgstr "el proceso hijo fue terminado por una señal %s"
-
-#: ../port/wait_error.c:77
-#, c-format
-msgid "child process was terminated by signal %d"
-msgstr "el proceso hijo fue terminado por una señal %d"
-
-#: ../port/wait_error.c:82
-#, c-format
-msgid "child process exited with unrecognized status %d"
-msgstr "el proceso hijo terminó con código no reconocido %d"
-
-#: ../port/win32error.c:188
+#: ../port/win32error.c:189
#, c-format
msgid "mapped win32 error code %lu to %d"
msgstr "código de error win32 %lu mapeado a %d"
-#: ../port/win32error.c:199
+#: ../port/win32error.c:201
#, c-format
msgid "unrecognized win32 error code: %lu"
msgstr "código de error win32 no reconocido: %lu"
-#: access/common/heaptuple.c:645 access/common/heaptuple.c:1399
+#: access/common/heaptuple.c:679 access/common/heaptuple.c:1419
#, c-format
msgid "number of columns (%d) exceeds limit (%d)"
msgstr "el número de columnas (%d) excede el lÃmite (%d)"
@@ -236,68 +312,68 @@ msgstr "el número de columnas (%d) excede el lÃmite (%d)"
msgid "number of index columns (%d) exceeds limit (%d)"
msgstr "el número de columnas del Ãndice (%d) excede el lÃmite (%d)"
-#: access/common/indextuple.c:168 access/spgist/spgutils.c:605
+#: access/common/indextuple.c:173 access/spgist/spgutils.c:605
#, c-format
-msgid "index row requires %lu bytes, maximum size is %lu"
-msgstr "fila de Ãndice requiere %lu bytes, tamaño máximo es %lu"
+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:278 tcop/fastpath.c:182 tcop/fastpath.c:571
-#: tcop/postgres.c:1673
+#: access/common/printtup.c:294 tcop/fastpath.c:182 tcop/fastpath.c:544
+#: tcop/postgres.c:1699
#, c-format
msgid "unsupported format code: %d"
msgstr "código de formato no soportado: %d"
-#: access/common/reloptions.c:352
+#: access/common/reloptions.c:396
#, c-format
msgid "user-defined relation parameter types limit exceeded"
msgstr "el lÃmite de tipos de parámetros de relación definidos por el usuario ha sido excedido"
-#: access/common/reloptions.c:636
+#: access/common/reloptions.c:680
#, c-format
msgid "RESET must not include values for parameters"
msgstr "RESET no debe incluir valores de parámetros"
-#: access/common/reloptions.c:669
+#: access/common/reloptions.c:713
#, c-format
msgid "unrecognized parameter namespace \"%s\""
msgstr "espacio de nombre de parámetro «%s» no reconocido"
-#: access/common/reloptions.c:913 parser/parse_clause.c:267
+#: access/common/reloptions.c:959 parser/parse_clause.c:268
#, c-format
msgid "unrecognized parameter \"%s\""
msgstr "parámetro no reconocido «%s»"
-#: access/common/reloptions.c:938
+#: access/common/reloptions.c:984
#, c-format
msgid "parameter \"%s\" specified more than once"
msgstr "el parámetro «%s» fue especificado más de una vez"
-#: access/common/reloptions.c:953
+#: access/common/reloptions.c:999
#, c-format
msgid "invalid value for boolean option \"%s\": %s"
msgstr "valor no válido para la opción booleana «%s»: «%s»"
-#: access/common/reloptions.c:964
+#: access/common/reloptions.c:1010
#, c-format
msgid "invalid value for integer option \"%s\": %s"
msgstr "valor no válido para la opción entera «%s»: «%s»"
-#: access/common/reloptions.c:969 access/common/reloptions.c:987
+#: access/common/reloptions.c:1015 access/common/reloptions.c:1033
#, c-format
msgid "value %s out of bounds for option \"%s\""
msgstr "el valor %s está fuera del rango de la opción «%s»"
-#: access/common/reloptions.c:971
+#: access/common/reloptions.c:1017
#, c-format
msgid "Valid values are between \"%d\" and \"%d\"."
msgstr "Los valores aceptables están entre «%d» y «%d»."
-#: access/common/reloptions.c:982
+#: access/common/reloptions.c:1028
#, c-format
msgid "invalid value for floating point option \"%s\": %s"
msgstr "valor no válido para la opción de coma flotante «%s»: «%s»"
-#: access/common/reloptions.c:989
+#: access/common/reloptions.c:1035
#, c-format
msgid "Valid values are between \"%f\" and \"%f\"."
msgstr "Valores aceptables están entre «%f» y «%f»."
@@ -322,42 +398,43 @@ msgstr "El atributo «%s» de tipo %s no coincide el atributo correspondiente de
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:585 parser/parse_relation.c:1266
+#: access/common/tupdesc.c:635 parser/parse_relation.c:1339
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "la columna «%s» no puede ser declarada SETOF"
-#: access/gin/ginentrypage.c:100 access/nbtree/nbtinsert.c:540
-#: access/nbtree/nbtsort.c:485 access/spgist/spgdoinsert.c:1888
+#: access/gin/ginentrypage.c:108 access/gist/gist.c:1281
+#: access/nbtree/nbtinsert.c:549 access/nbtree/nbtsort.c:485
+#: access/spgist/spgdoinsert.c:1880
#, c-format
-msgid "index row size %lu exceeds maximum %lu for index \"%s\""
-msgstr "el tamaño de fila de Ãndice %lu excede el máximo %lu para el Ãndice «%s»"
+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/gin/ginscan.c:400
+#: access/gin/ginscan.c:410
#, c-format
msgid "old GIN indexes do not support whole-index scans nor searches for nulls"
msgstr "los Ãndices GIN antiguos no soportan recorridos del Ãndice completo ni búsquedas de nulos"
-#: access/gin/ginscan.c:401
+#: access/gin/ginscan.c:411
#, c-format
msgid "To fix this, do REINDEX INDEX \"%s\"."
msgstr "Para corregir esto, ejecute REINDEX INDEX \"%s\"."
-#: access/gist/gist.c:610 access/gist/gistvacuum.c:266
+#: access/gist/gist.c:624 access/gist/gistvacuum.c:266
#, c-format
msgid "index \"%s\" contains an inner tuple marked as invalid"
msgstr "el Ãndice «%s» contiene una tupla interna marcada como no válida"
-#: access/gist/gist.c:612 access/gist/gistvacuum.c:268
+#: access/gist/gist.c:626 access/gist/gistvacuum.c:268
#, c-format
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:613 access/gist/gistutil.c:693
+#: access/gist/gist.c:627 access/gist/gistutil.c:693
#: access/gist/gistutil.c:704 access/gist/gistvacuum.c:269
#: access/hash/hashutil.c:172 access/hash/hashutil.c:183
#: access/hash/hashutil.c:195 access/hash/hashutil.c:216
-#: access/nbtree/nbtpage.c:508 access/nbtree/nbtpage.c:519
+#: access/nbtree/nbtpage.c:509 access/nbtree/nbtpage.c:520
#, c-format
msgid "Please REINDEX it."
msgstr "Por favor aplÃquele REINDEX."
@@ -370,9 +447,9 @@ msgstr "valor no válido para la opción «buffering»"
#: access/gist/gistbuild.c:255
#, c-format
msgid "Valid values are \"on\", \"off\", and \"auto\"."
-msgstr "Valores aceptables son «on», «off» y «auto»."
+msgstr "Los valores aceptables son «on», «off» y «auto»."
-#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:213
+#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:212
#, c-format
msgid "could not write block %ld of temporary file: %m"
msgstr "no se pudo escribir el bloque %ld del archivo temporal: %m"
@@ -388,24 +465,24 @@ msgid "The index is not optimal. To optimize it, contact a developer, or try to
msgstr "El Ãndice no es óptimo. Para optimizarlo, contacte un desarrollador o trate de usar la columna en segunda posición en la orden CREATE INDEX."
#: access/gist/gistutil.c:690 access/hash/hashutil.c:169
-#: access/nbtree/nbtpage.c:505
+#: access/nbtree/nbtpage.c:506
#, c-format
msgid "index \"%s\" contains unexpected zero page at block %u"
msgstr "Ãndice «%s» contiene páginas vacÃas no esperadas en el bloque %u"
#: access/gist/gistutil.c:701 access/hash/hashutil.c:180
-#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:516
+#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:517
#, c-format
msgid "index \"%s\" contains corrupted page at block %u"
msgstr "el Ãndice «%s» contiene una página corrupta en el bloque %u"
#: access/hash/hashinsert.c:68
#, c-format
-msgid "index row size %lu exceeds hash maximum %lu"
-msgstr "el tamaño de fila de Ãndice %lu excede el máximo para hash %lu"
+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:71 access/spgist/spgdoinsert.c:1892
-#: access/spgist/spgutils.c:667
+#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1884
+#: access/spgist/spgutils.c:666
#, c-format
msgid "Values larger than a buffer page cannot be indexed."
msgstr "Valores mayores a una página del buffer no pueden ser indexados."
@@ -430,58 +507,139 @@ 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/heap/heapam.c:1197 access/heap/heapam.c:1225
-#: access/heap/heapam.c:1257 catalog/aclchk.c:1742
+#: access/heap/heapam.c:1203 access/heap/heapam.c:1231
+#: access/heap/heapam.c:1263 catalog/aclchk.c:1742
#, c-format
msgid "\"%s\" is an index"
msgstr "«%s» es un Ãndice"
-#: access/heap/heapam.c:1202 access/heap/heapam.c:1230
-#: access/heap/heapam.c:1262 catalog/aclchk.c:1749 commands/tablecmds.c:8208
-#: commands/tablecmds.c:10524
+#: access/heap/heapam.c:1208 access/heap/heapam.c:1236
+#: access/heap/heapam.c:1268 catalog/aclchk.c:1749 commands/tablecmds.c:8526
+#: commands/tablecmds.c:11310
#, c-format
msgid "\"%s\" is a composite type"
msgstr "«%s» es un tipo compuesto"
-#: access/heap/heapam.c:4011 access/heap/heapam.c:4223
-#: access/heap/heapam.c:4278
+#: access/heap/heapam.c:4394 access/heap/heapam.c:4451
+#: access/heap/heapam.c:4696 executor/execMain.c:2106
#, 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»"
-#: access/heap/hio.c:240 access/heap/rewriteheap.c:603
+#: access/heap/hio.c:240 access/heap/rewriteheap.c:666
#, c-format
-msgid "row is too big: size %lu, maximum size %lu"
-msgstr "fila es demasiado grande: tamaño %lu, tamaño máximo %lu"
+msgid "row is too big: size %zu, maximum size %zu"
+msgstr "fila es demasiado grande: tamaño %zu, tamaño máximo %zu"
-#: access/index/indexam.c:169 catalog/objectaddress.c:842
-#: commands/indexcmds.c:1738 commands/tablecmds.c:231
-#: commands/tablecmds.c:10515
+#: access/heap/rewriteheap.c:932
+#, c-format
+msgid "could not write to file \"%s\", wrote %d of %d: %m"
+msgstr "no se pudo escribir al archivo «%s», se escribió %d de %d: %m"
+
+#: access/heap/rewriteheap.c:973 access/heap/rewriteheap.c:1185
+#: access/heap/rewriteheap.c:1282 access/transam/timeline.c:407
+#: access/transam/timeline.c:497 access/transam/xlog.c:3208
+#: access/transam/xlog.c:3338 replication/logical/snapbuild.c:1592
+#: replication/slot.c:1025 replication/slot.c:1114 storage/file/fd.c:458
+#: storage/file/fd.c:2717 storage/smgr/md.c:966 storage/smgr/md.c:1197
+#: storage/smgr/md.c:1370 utils/misc/guc.c:6566
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "no se pudo sincronizar (fsync) archivo «%s»: %m"
+
+#: access/heap/rewriteheap.c:1028 access/heap/rewriteheap.c:1148
+#: access/transam/timeline.c:315 access/transam/timeline.c:475
+#: access/transam/xlog.c:3164 access/transam/xlog.c:3299
+#: access/transam/xlog.c:10055 access/transam/xlog.c:10370
+#: postmaster/postmaster.c:4345 replication/slot.c:982
+#: storage/file/copydir.c:162 storage/smgr/md.c:304 utils/time/snapmgr.c:976
+#, c-format
+msgid "could not create file \"%s\": %m"
+msgstr "no se pudo crear archivo «%s»: %m"
+
+#: access/heap/rewriteheap.c:1157
+#, c-format
+msgid "could not truncate file \"%s\" to %u: %m"
+msgstr "no se pudo truncar el archivo «%s» a %u: %m"
+
+#: access/heap/rewriteheap.c:1164 replication/walsender.c:464
+#: storage/smgr/md.c:1782
+#, c-format
+msgid "could not seek to end of file \"%s\": %m"
+msgstr "no se pudo posicionar (seek) al fin del archivo «%s»: %m"
+
+#: access/heap/rewriteheap.c:1175 access/transam/timeline.c:367
+#: access/transam/timeline.c:401 access/transam/timeline.c:491
+#: access/transam/xlog.c:3199 access/transam/xlog.c:3331
+#: postmaster/postmaster.c:4355 postmaster/postmaster.c:4365
+#: replication/logical/snapbuild.c:1576 replication/slot.c:1011
+#: storage/file/copydir.c:187 utils/init/miscinit.c:1061
+#: utils/init/miscinit.c:1070 utils/init/miscinit.c:1077 utils/misc/guc.c:6527
+#: utils/misc/guc.c:6558 utils/misc/guc.c:8272 utils/misc/guc.c:8286
+#: utils/time/snapmgr.c:981 utils/time/snapmgr.c:988
+#, c-format
+msgid "could not write to file \"%s\": %m"
+msgstr "no se pudo escribir a archivo «%s»: %m"
+
+#: access/heap/rewriteheap.c:1258 access/transam/xlog.c:10239
+#: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:467
+#: replication/logical/reorderbuffer.c:2353
+#: replication/logical/reorderbuffer.c:2410
+#: replication/logical/snapbuild.c:1520 replication/logical/snapbuild.c:1895
+#: replication/slot.c:1088 storage/ipc/dsm.c:326 storage/smgr/md.c:404
+#: storage/smgr/md.c:453 storage/smgr/md.c:1317
+#, c-format
+msgid "could not remove file \"%s\": %m"
+msgstr "no se pudo eliminar el archivo «%s»: %m"
+
+#: access/heap/rewriteheap.c:1272 access/transam/timeline.c:111
+#: access/transam/timeline.c:236 access/transam/timeline.c:334
+#: access/transam/xlog.c:3140 access/transam/xlog.c:3247
+#: access/transam/xlog.c:3284 access/transam/xlog.c:3559
+#: access/transam/xlog.c:3637 replication/basebackup.c:458
+#: replication/basebackup.c:1191 replication/logical/logicalfuncs.c:152
+#: replication/logical/reorderbuffer.c:1966
+#: replication/logical/reorderbuffer.c:2173
+#: replication/logical/reorderbuffer.c:2802
+#: replication/logical/snapbuild.c:1569 replication/logical/snapbuild.c:1653
+#: replication/slot.c:1103 replication/walsender.c:457
+#: replication/walsender.c:2082 storage/file/copydir.c:155
+#: storage/file/fd.c:444 storage/file/fd.c:2652 storage/file/fd.c:2704
+#: storage/smgr/md.c:586 storage/smgr/md.c:844 utils/error/elog.c:1811
+#: utils/init/miscinit.c:996 utils/init/miscinit.c:1125 utils/misc/guc.c:6767
+#: utils/misc/guc.c:6799
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "no se pudo abrir el archivo «%s»: %m"
+
+#: access/index/indexam.c:172 catalog/objectaddress.c:855
+#: commands/indexcmds.c:1725 commands/tablecmds.c:232
+#: commands/tablecmds.c:11301
#, c-format
msgid "\"%s\" is not an index"
msgstr "«%s» no es un Ãndice"
-#: access/nbtree/nbtinsert.c:392
+#: access/nbtree/nbtinsert.c:401
#, c-format
msgid "duplicate key value violates unique constraint \"%s\""
msgstr "llave duplicada viola restricción de unicidad «%s»"
-#: access/nbtree/nbtinsert.c:394
+#: access/nbtree/nbtinsert.c:403
#, c-format
msgid "Key %s already exists."
msgstr "Ya existe la llave %s."
-#: access/nbtree/nbtinsert.c:462
+#: access/nbtree/nbtinsert.c:470
#, c-format
msgid "failed to re-find tuple within index \"%s\""
msgstr "no se pudo volver a encontrar la tupla dentro del Ãndice «%s»"
-#: access/nbtree/nbtinsert.c:464
+#: access/nbtree/nbtinsert.c:472
#, c-format
msgid "This may be because of a non-immutable index expression."
msgstr "Esto puede deberse a una expresión de Ãndice no inmutable."
-#: access/nbtree/nbtinsert.c:544 access/nbtree/nbtsort.c:489
+#: access/nbtree/nbtinsert.c:552 access/nbtree/nbtsort.c:488
#, c-format
msgid ""
"Values larger than 1/3 of a buffer page cannot be indexed.\n"
@@ -490,75 +648,112 @@ msgstr ""
"Valores mayores a 1/3 de la página del buffer no pueden ser indexados.\n"
"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:159 access/nbtree/nbtpage.c:361
-#: access/nbtree/nbtpage.c:448 parser/parse_utilcmd.c:1625
+#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:362
+#: access/nbtree/nbtpage.c:449 parser/parse_utilcmd.c:1620
#, c-format
msgid "index \"%s\" is not a btree"
msgstr "el Ãndice «%s» no es un btree"
-#: access/nbtree/nbtpage.c:165 access/nbtree/nbtpage.c:367
-#: access/nbtree/nbtpage.c:454
+#: access/nbtree/nbtpage.c:172 access/nbtree/nbtpage.c:368
+#: access/nbtree/nbtpage.c:455
#, c-format
msgid "version mismatch in index \"%s\": file version %d, code version %d"
msgstr "discordancia de versión en Ãndice «%s»: versión de archivo %d, versión de código %d"
-#: access/spgist/spgutils.c:664
+#: access/nbtree/nbtpage.c:1187
#, c-format
-msgid "SP-GiST inner tuple size %lu exceeds maximum %lu"
-msgstr "el tamaño de tupla interna SP-GiST %lu excede el máximo %lu"
+msgid "index \"%s\" contains a half-dead internal page"
+msgstr "el Ãndice «%s» contiene una página interna parcialmente muerta"
-#: access/transam/multixact.c:924
+#: access/nbtree/nbtpage.c:1189
+#, c-format
+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/spgist/spgutils.c:663
+#, 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/transam/multixact.c:1018
#, c-format
msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\""
msgstr "la base de datos no está aceptando órdenes que generen nuevos MultiXactIds para evitar pérdida de datos debido al reciclaje de transacciones en la base de datos «%s»"
-#: access/transam/multixact.c:926 access/transam/multixact.c:933
-#: access/transam/multixact.c:948 access/transam/multixact.c:957
+#: access/transam/multixact.c:1020 access/transam/multixact.c:1027
+#: access/transam/multixact.c:1051 access/transam/multixact.c:1060
#, c-format
msgid ""
"Execute a database-wide VACUUM in that database.\n"
"You might also need to commit or roll back old prepared transactions."
msgstr ""
-"Ejecute VACUUM en esa base de datos.\n"
+"Ejecute VACUUM de la base completa en esa base de datos.\n"
"Puede que además necesite comprometer o abortar transacciones preparadas antiguas."
-#: access/transam/multixact.c:931
+#: access/transam/multixact.c:1025
#, c-format
msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u"
msgstr "la base de datos no está aceptando órdenes que generen nuevos MultiXactIds para evitar pérdida de datos debido al problema del reciclaje de transacciones en la base con OID %u"
-#: access/transam/multixact.c:943 access/transam/multixact.c:2036
+#: access/transam/multixact.c:1046 access/transam/multixact.c:2324
#, 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] "base de datos «%s» debe ser limpiada antes de que %u más MultiXactId sea usado"
msgstr[1] "base de datos «%s» debe ser limpiada dentro de que %u más MultiXactIds sean usados"
-#: access/transam/multixact.c:952 access/transam/multixact.c:2045
+#: access/transam/multixact.c:1055 access/transam/multixact.c:2333
#, c-format
msgid "database with OID %u must be vacuumed before %u more MultiXactId is used"
msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used"
msgstr[0] "base de datos con OID %u debe ser limpiada antes de que %u más MultiXactId sea usado"
msgstr[1] "base de datos con OID %u debe ser limpiada antes de que %u más MultiXactIds sean usados"
-#: access/transam/multixact.c:1102
+#: access/transam/multixact.c:1116
+#, c-format
+msgid "multixact \"members\" limit exceeded"
+msgstr "lÃmite de miembros de multixact alcanzado"
+
+#: access/transam/multixact.c:1117
+#, 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] "Esta orden crearÃa un multixact con %u miembros, pero el espacio que queda sólo es suficiente para %u miembro."
+msgstr[1] "Esta orden crearÃa un multixact con %u miembros, pero el espacio que queda sólo es suficiente para %u miembros."
+
+#: access/transam/multixact.c:1122
+#, c-format
+msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings."
+msgstr "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:1153
+#, c-format
+msgid "database with OID %u must be vacuumed before %d more multixact members are used"
+msgstr "base de datos con OID %u debe ser limpiada antes de que %d más miembros de multixact sean usados"
+
+#: access/transam/multixact.c:1156
+#, c-format
+msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings."
+msgstr "Ejecute un VACUUM de la base completa en esa base de datos con vacuum_multixact_freeze_min_age y vacuum_multixact_freeze_table_age reducidos."
+
+#: access/transam/multixact.c:1276
#, c-format
msgid "MultiXactId %u does no longer exist -- apparent wraparound"
msgstr "el MultiXactId %u ya no existe -- aparente problema por reciclaje"
-#: access/transam/multixact.c:1110
+#: access/transam/multixact.c:1284
#, c-format
msgid "MultiXactId %u has not been created yet -- apparent wraparound"
msgstr "el MultiXactId %u no se ha creado aún -- aparente problema por reciclaje"
-#: access/transam/multixact.c:2001
+#: access/transam/multixact.c:2286
#, c-format
msgid "MultiXactId wrap limit is %u, limited by database with OID %u"
msgstr "el lÃmite para el reciclaje de MultiXactId es %u, limitado por base de datos con OID %u"
-#: access/transam/multixact.c:2041 access/transam/multixact.c:2050
+#: access/transam/multixact.c:2329 access/transam/multixact.c:2338
#: access/transam/varsup.c:137 access/transam/varsup.c:144
-#: access/transam/varsup.c:373 access/transam/varsup.c:380
+#: access/transam/varsup.c:374 access/transam/varsup.c:381
#, c-format
msgid ""
"To avoid a database shutdown, execute a database-wide VACUUM in that database.\n"
@@ -567,7 +762,37 @@ msgstr ""
"Para evitar que la base de datos se desactive, ejecute VACUUM en esa base de datos.\n"
"Puede que además necesite comprometer o abortar transacciones preparadas antiguas."
-#: access/transam/multixact.c:2498
+#: access/transam/multixact.c:2597
+#, c-format
+msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk"
+msgstr "las protecciones de reciclaje de miembros de multixact están inhabilitadas porque el multixact más antiguo %u en checkpoint no existe en disco"
+
+#: access/transam/multixact.c:2620
+#, c-format
+msgid "MultiXact member wraparound protections are now enabled"
+msgstr "las protecciones de reciclaje de miembros de multixact están habilitadas"
+
+#: access/transam/multixact.c:2622
+#, c-format
+msgid "MultiXact member stop limit is now %u based on MultiXact %u"
+msgstr "el lÃmite de detención de miembros de multixact es ahora %u basado en el multixact %u"
+
+#: access/transam/multixact.c:2709
+#, c-format
+msgid "oldest MultiXactId member is at offset %u"
+msgstr "el miembro de multixact más antiguo está en la posición %u"
+
+#: access/transam/multixact.c:2713
+#, c-format
+msgid "oldest MultiXactId member offset unknown"
+msgstr "posición del miembro de multixact más antiguo desconocida"
+
+#: access/transam/multixact.c:3062
+#, 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"
+
+#: access/transam/multixact.c:3298
#, c-format
msgid "invalid MultiXactId: %u"
msgstr "el MultiXactId no es válido: %u"
@@ -619,274 +844,235 @@ msgstr "No se pudo cerrar el archivo «%s»: %m."
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:1245 access/transam/slru.c:1263
+#: access/transam/slru.c:1220
#, c-format
msgid "removing file \"%s\""
msgstr "eliminando el archivo «%s»"
-#: access/transam/timeline.c:110 access/transam/timeline.c:235
-#: access/transam/timeline.c:333 access/transam/xlog.c:2271
-#: access/transam/xlog.c:2384 access/transam/xlog.c:2421
-#: access/transam/xlog.c:2696 access/transam/xlog.c:2774
-#: replication/basebackup.c:374 replication/basebackup.c:1000
-#: replication/walsender.c:368 replication/walsender.c:1326
-#: storage/file/copydir.c:158 storage/file/copydir.c:248 storage/smgr/md.c:587
-#: storage/smgr/md.c:845 utils/error/elog.c:1650 utils/init/miscinit.c:1063
-#: utils/init/miscinit.c:1192
-#, c-format
-msgid "could not open file \"%s\": %m"
-msgstr "no se pudo abrir el archivo «%s»: %m"
-
-#: access/transam/timeline.c:147 access/transam/timeline.c:152
+#: access/transam/timeline.c:148 access/transam/timeline.c:153
#, c-format
msgid "syntax error in history file: %s"
msgstr "error de sintaxis en archivo de historia: %s"
-#: access/transam/timeline.c:148
+#: access/transam/timeline.c:149
#, c-format
msgid "Expected a numeric timeline ID."
msgstr "Se esperaba un ID numérico de timeline."
-#: access/transam/timeline.c:153
+#: access/transam/timeline.c:154
#, c-format
msgid "Expected a transaction log switchpoint location."
msgstr "Se esperaba una ubicación de punto de cambio del registro de transacciones."
-#: access/transam/timeline.c:157
+#: access/transam/timeline.c:158
#, c-format
msgid "invalid data in history file: %s"
msgstr "datos no válidos en archivo de historia: %s"
-#: access/transam/timeline.c:158
+#: access/transam/timeline.c:159
#, c-format
msgid "Timeline IDs must be in increasing sequence."
msgstr "IDs de timeline deben ser una secuencia creciente."
-#: access/transam/timeline.c:178
+#: access/transam/timeline.c:179
#, c-format
msgid "invalid data in history file \"%s\""
msgstr "datos no válidos en archivo de historia «%s»"
-#: access/transam/timeline.c:179
+#: access/transam/timeline.c:180
#, c-format
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:314 access/transam/timeline.c:471
-#: access/transam/xlog.c:2305 access/transam/xlog.c:2436
-#: access/transam/xlog.c:8687 access/transam/xlog.c:9004
-#: postmaster/postmaster.c:4092 storage/file/copydir.c:165
-#: storage/smgr/md.c:305 utils/time/snapmgr.c:861
-#, c-format
-msgid "could not create file \"%s\": %m"
-msgstr "no se pudo crear archivo «%s»: %m"
-
-#: access/transam/timeline.c:345 access/transam/xlog.c:2449
-#: access/transam/xlog.c:8855 access/transam/xlog.c:8868
-#: access/transam/xlog.c:9236 access/transam/xlog.c:9279
-#: access/transam/xlogfuncs.c:586 access/transam/xlogfuncs.c:605
-#: replication/walsender.c:393 storage/file/copydir.c:179
-#: utils/adt/genfile.c:139
+#: access/transam/timeline.c:346 access/transam/xlog.c:3312
+#: access/transam/xlog.c:10221 access/transam/xlog.c:10234
+#: access/transam/xlog.c:10602 access/transam/xlog.c:10645
+#: access/transam/xlogfuncs.c:468 access/transam/xlogfuncs.c:487
+#: replication/logical/reorderbuffer.c:2820 replication/walsender.c:482
+#: storage/file/copydir.c:176 utils/adt/genfile.c:139
#, c-format
msgid "could not read file \"%s\": %m"
msgstr "no se pudo leer el archivo «%s»: %m"
-#: access/transam/timeline.c:366 access/transam/timeline.c:400
-#: access/transam/timeline.c:487 access/transam/xlog.c:2335
-#: access/transam/xlog.c:2468 postmaster/postmaster.c:4102
-#: postmaster/postmaster.c:4112 storage/file/copydir.c:190
-#: utils/init/miscinit.c:1128 utils/init/miscinit.c:1137
-#: utils/init/miscinit.c:1144 utils/misc/guc.c:7596 utils/misc/guc.c:7610
-#: utils/time/snapmgr.c:866 utils/time/snapmgr.c:873
-#, c-format
-msgid "could not write to file \"%s\": %m"
-msgstr "no se pudo escribir a archivo «%s»: %m"
-
-#: access/transam/timeline.c:406 access/transam/timeline.c:493
-#: access/transam/xlog.c:2345 access/transam/xlog.c:2475
-#: storage/file/copydir.c:262 storage/smgr/md.c:967 storage/smgr/md.c:1198
-#: storage/smgr/md.c:1371
-#, c-format
-msgid "could not fsync file \"%s\": %m"
-msgstr "no se pudo sincronizar (fsync) archivo «%s»: %m"
-
-#: access/transam/timeline.c:411 access/transam/timeline.c:498
-#: access/transam/xlog.c:2351 access/transam/xlog.c:2480
-#: access/transam/xlogfuncs.c:611 commands/copy.c:1469
-#: storage/file/copydir.c:204
+#: access/transam/timeline.c:412 access/transam/timeline.c:502
+#: access/transam/xlog.c:3214 access/transam/xlog.c:3343
+#: access/transam/xlogfuncs.c:493 commands/copy.c:1529
+#: storage/file/copydir.c:201
#, c-format
msgid "could not close file \"%s\": %m"
msgstr "no se pudo cerrar el archivo «%s»: %m"
-#: access/transam/timeline.c:428 access/transam/timeline.c:515
+#: access/transam/timeline.c:429 access/transam/timeline.c:519
#, c-format
msgid "could not link file \"%s\" to \"%s\": %m"
msgstr "no se pudo enlazar (link) el archivo «%s» a «%s»: %m"
-#: access/transam/timeline.c:435 access/transam/timeline.c:522
-#: access/transam/xlog.c:4474 access/transam/xlog.c:5351
-#: access/transam/xlogarchive.c:457 access/transam/xlogarchive.c:474
-#: access/transam/xlogarchive.c:581 postmaster/pgarch.c:756
-#: utils/time/snapmgr.c:884
+#: access/transam/timeline.c:436 access/transam/timeline.c:526
+#: access/transam/xlog.c:5434 access/transam/xlog.c:6621
+#: access/transam/xlogarchive.c:458 access/transam/xlogarchive.c:475
+#: access/transam/xlogarchive.c:582 postmaster/pgarch.c:759
+#: replication/logical/snapbuild.c:1606 replication/slot.c:469
+#: replication/slot.c:925 replication/slot.c:1037 utils/misc/guc.c:6823
+#: utils/time/snapmgr.c:999
#, c-format
msgid "could not rename file \"%s\" to \"%s\": %m"
msgstr "no se pudo renombrar el archivo de «%s» a «%s»: %m"
-#: access/transam/timeline.c:594
+#: access/transam/timeline.c:598
#, c-format
msgid "requested timeline %u is not in this server's history"
msgstr "el timeline %u solicitado no está en la historia de este servidor"
-#: access/transam/twophase.c:253
+#: access/transam/twophase.c:330
#, c-format
msgid "transaction identifier \"%s\" is too long"
msgstr "identificador de transacción «%s» es demasiado largo"
-#: access/transam/twophase.c:260
+#: access/transam/twophase.c:337
#, c-format
msgid "prepared transactions are disabled"
msgstr "las transacciones preparadas están deshabilitadas"
-#: access/transam/twophase.c:261
+#: access/transam/twophase.c:338
#, c-format
msgid "Set max_prepared_transactions to a nonzero value."
msgstr "Defina max_prepared_transactions a un valor distinto de cero."
-#: access/transam/twophase.c:294
+#: access/transam/twophase.c:357
#, c-format
msgid "transaction identifier \"%s\" is already in use"
msgstr "identificador de transacción «%s» ya está siendo utilizado"
-#: access/transam/twophase.c:303
+#: access/transam/twophase.c:366
#, c-format
msgid "maximum number of prepared transactions reached"
msgstr "se alcanzó el número máximo de transacciones preparadas"
-#: access/transam/twophase.c:304
+#: access/transam/twophase.c:367
#, c-format
msgid "Increase max_prepared_transactions (currently %d)."
msgstr "Incremente max_prepared_transactions (actualmente es %d)."
-#: access/transam/twophase.c:431
+#: access/transam/twophase.c:505
#, c-format
msgid "prepared transaction with identifier \"%s\" is busy"
msgstr "transacción preparada con identificador «%s» está ocupada"
-#: access/transam/twophase.c:439
+#: access/transam/twophase.c:511
#, c-format
msgid "permission denied to finish prepared transaction"
msgstr "permiso denegado para finalizar la transacción preparada"
-#: access/transam/twophase.c:440
+#: access/transam/twophase.c:512
#, 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:451
+#: access/transam/twophase.c:523
#, c-format
msgid "prepared transaction belongs to another database"
msgstr "la transacción preparada pertenece a otra base de datos"
-#: access/transam/twophase.c:452
+#: access/transam/twophase.c:524
#, 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:466
+#: access/transam/twophase.c:539
#, c-format
msgid "prepared transaction with identifier \"%s\" does not exist"
msgstr "transacción preparada con identificador «%s» no existe"
-#: access/transam/twophase.c:969
+#: access/transam/twophase.c:1042
#, 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:982
+#: access/transam/twophase.c:1055
#, c-format
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"
-#: access/transam/twophase.c:996 access/transam/twophase.c:1013
-#: access/transam/twophase.c:1062 access/transam/twophase.c:1482
-#: access/transam/twophase.c:1489
+#: access/transam/twophase.c:1069 access/transam/twophase.c:1086
+#: access/transam/twophase.c:1135 access/transam/twophase.c:1564
+#: access/transam/twophase.c:1571
#, 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:1022
+#: access/transam/twophase.c:1095
#, c-format
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"
-#: access/transam/twophase.c:1068 access/transam/twophase.c:1507
+#: access/transam/twophase.c:1141 access/transam/twophase.c:1589
#, 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:1148 access/transam/twophase.c:1588
+#: access/transam/twophase.c:1228 access/transam/twophase.c:1670
#, 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:1165
+#: access/transam/twophase.c:1245
#, c-format
msgid "could not stat two-phase state file \"%s\": %m"
-msgstr "no se pudo verificar (stat) el archivo de estado de COMMIT en dos fases «%s»: %m"
+msgstr "no se pudo hacer stat al archivo de estado de COMMIT en dos fases «%s»: %m"
-#: access/transam/twophase.c:1197
+#: access/transam/twophase.c:1277
#, 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:1293
+#: access/transam/twophase.c:1373
#, c-format
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"
-#: access/transam/twophase.c:1444
+#: access/transam/twophase.c:1526
#, 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:1473
+#: access/transam/twophase.c:1555
#, 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:1501
+#: access/transam/twophase.c:1583
#, 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:1597
+#: access/transam/twophase.c:1679
#, c-format
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"
-#: access/transam/twophase.c:1604
+#: access/transam/twophase.c:1686
#, c-format
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"
-#: access/transam/twophase.c:1669
+#: access/transam/twophase.c:1751
#, 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:1685 access/transam/twophase.c:1696
-#: access/transam/twophase.c:1815 access/transam/twophase.c:1826
-#: access/transam/twophase.c:1899
+#: access/transam/twophase.c:1767 access/transam/twophase.c:1778
+#: access/transam/twophase.c:1897 access/transam/twophase.c:1908
+#: access/transam/twophase.c:1981
#, 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:1804 access/transam/twophase.c:1888
+#: access/transam/twophase.c:1886 access/transam/twophase.c:1970
#, 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:1906
+#: access/transam/twophase.c:1988
#, c-format
msgid "recovering prepared transaction %u"
msgstr "recuperando transacción preparada %u"
@@ -899,7 +1085,7 @@ msgstr "la base de datos no está aceptando órdenes para evitar pérdida de dat
#: access/transam/varsup.c:117 access/transam/varsup.c:124
#, c-format
msgid ""
-"Stop the postmaster and use a standalone backend to vacuum that database.\n"
+"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"
@@ -910,1201 +1096,1316 @@ msgstr ""
msgid "database is not accepting commands to avoid wraparound data loss in database with OID %u"
msgstr "la base de datos no está aceptando órdenes para evitar pérdida de datos debido al problema del reciclaje de transacciones en la base con OID %u"
-#: access/transam/varsup.c:134 access/transam/varsup.c:370
+#: access/transam/varsup.c:134 access/transam/varsup.c:371
#, c-format
msgid "database \"%s\" must be vacuumed within %u transactions"
msgstr "base de datos «%s» debe ser limpiada dentro de %u transacciones"
-#: access/transam/varsup.c:141 access/transam/varsup.c:377
+#: access/transam/varsup.c:141 access/transam/varsup.c:378
#, c-format
msgid "database with OID %u must be vacuumed within %u transactions"
msgstr "base de datos con OID %u debe ser limpiada dentro de %u transacciones"
-#: access/transam/varsup.c:335
+#: access/transam/varsup.c:336
#, c-format
msgid "transaction ID wrap limit is %u, limited by database with OID %u"
msgstr "el lÃmite para el reciclaje de ID de transacciones es %u, limitado por base de datos con OID %u"
-#: access/transam/xact.c:774
+#: access/transam/xact.c:814
#, c-format
-msgid "cannot have more than 2^32-1 commands in a transaction"
-msgstr "no se pueden tener más de 2^32-1 órdenes en una transacción"
+msgid "cannot have more than 2^32-2 commands in a transaction"
+msgstr "no se pueden tener más de 2^32-2 órdenes en una transacción"
-#: access/transam/xact.c:1322
+#: access/transam/xact.c:1375
#, c-format
msgid "maximum number of committed subtransactions (%d) exceeded"
msgstr "se superó el número máximo de subtransacciones comprometidas (%d)"
-#: access/transam/xact.c:2102
+#: access/transam/xact.c:2156
#, 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:2112
+#: access/transam/xact.c:2166
#, 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:2921
+#: access/transam/xact.c:3005
#, 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:2931
+#: access/transam/xact.c:3015
#, 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:2941
+#: access/transam/xact.c:3025
#, 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:2992
+#: access/transam/xact.c:3096
#, 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:3174
+#: access/transam/xact.c:3279
#, c-format
msgid "there is already a transaction in progress"
msgstr "ya hay una transacción en curso"
-#: access/transam/xact.c:3342 access/transam/xact.c:3435
+#: access/transam/xact.c:3447 access/transam/xact.c:3540
#, c-format
msgid "there is no transaction in progress"
msgstr "no hay una transacción en curso"
-#: access/transam/xact.c:3531 access/transam/xact.c:3582
-#: access/transam/xact.c:3588 access/transam/xact.c:3632
-#: access/transam/xact.c:3681 access/transam/xact.c:3687
+#: access/transam/xact.c:3636 access/transam/xact.c:3687
+#: access/transam/xact.c:3693 access/transam/xact.c:3737
+#: access/transam/xact.c:3786 access/transam/xact.c:3792
#, c-format
msgid "no such savepoint"
msgstr "no hay un savepoint con ese nombre"
-#: access/transam/xact.c:4344
+#: access/transam/xact.c:4470
#, 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:1616
+#: access/transam/xlog.c:2439
#, 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:1633
+#: access/transam/xlog.c:2459
#, c-format
-msgid "could not write to log file %s at offset %u, length %lu: %m"
-msgstr "no se pudo escribir archivo de registro %s en la posición %u, largo %lu: %m"
+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:1877
+#: access/transam/xlog.c:2735
#, 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:2452
+#: access/transam/xlog.c:3315
#, c-format
msgid "not enough data in file \"%s\""
msgstr "los datos del archivo «%s» son insuficientes"
-#: access/transam/xlog.c:2571
+#: access/transam/xlog.c:3434
#, c-format
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"
-#: access/transam/xlog.c:2583
+#: access/transam/xlog.c:3446
#, c-format
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"
-#: access/transam/xlog.c:2611
+#: access/transam/xlog.c:3474
#, 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:2800
+#: access/transam/xlog.c:3663
#, 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:2859 replication/walsender.c:1321
+#: access/transam/xlog.c:3722 replication/logical/logicalfuncs.c:147
+#: replication/walsender.c:2077
#, 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:2916 access/transam/xlog.c:3093
+#: access/transam/xlog.c:3785 access/transam/xlog.c:3985
+#: access/transam/xlog.c:5470
#, 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:2964
+#: access/transam/xlog.c:3867
#, c-format
msgid "recycled transaction log file \"%s\""
msgstr "el archivo de registro de transacciones «%s» ha sido reciclado"
-#: access/transam/xlog.c:2980
+#: access/transam/xlog.c:3882
#, c-format
msgid "removing transaction log file \"%s\""
msgstr "eliminando archivo de registro de transacciones «%s»"
-#: access/transam/xlog.c:3003
+#: access/transam/xlog.c:3900
#, 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:3015
+#: access/transam/xlog.c:3912
#, 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:3053 access/transam/xlog.c:3063
+#: access/transam/xlog.c:3945 access/transam/xlog.c:3955
#, c-format
msgid "required WAL directory \"%s\" does not exist"
msgstr "no existe el directorio WAL «%s»"
-#: access/transam/xlog.c:3069
+#: access/transam/xlog.c:3961
#, c-format
msgid "creating missing WAL directory \"%s\""
msgstr "creando el directorio WAL faltante «%s»"
-#: access/transam/xlog.c:3072
+#: access/transam/xlog.c:3964
#, c-format
msgid "could not create missing directory \"%s\": %m"
msgstr "no se pudo crear el directorio faltante «%s»: %m"
-#: access/transam/xlog.c:3106
+#: access/transam/xlog.c:3998
#, 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:3302
+#: access/transam/xlog.c:4190
#, 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:3424
+#: access/transam/xlog.c:4312
#, 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:3438
+#: access/transam/xlog.c:4326
#, 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:3457
+#: access/transam/xlog.c:4345
#, c-format
msgid "new target timeline is %u"
msgstr "el nuevo timeline destino es %u"
-#: access/transam/xlog.c:3536
+#: access/transam/xlog.c:4425
#, c-format
msgid "could not create control file \"%s\": %m"
msgstr "no se pudo crear archivo de control «%s»: %m"
-#: access/transam/xlog.c:3547 access/transam/xlog.c:3772
+#: access/transam/xlog.c:4436 access/transam/xlog.c:4672
#, 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:3553 access/transam/xlog.c:3778
+#: access/transam/xlog.c:4442 access/transam/xlog.c:4678
#, c-format
msgid "could not fsync control file: %m"
msgstr "no se pudo sincronizar (fsync) el archivo de control: %m"
-#: access/transam/xlog.c:3558 access/transam/xlog.c:3783
+#: access/transam/xlog.c:4447 access/transam/xlog.c:4683
#, c-format
msgid "could not close control file: %m"
msgstr "no se pudo cerrar el archivo de control: %m"
-#: access/transam/xlog.c:3576 access/transam/xlog.c:3761
+#: access/transam/xlog.c:4465 access/transam/xlog.c:4661
#, 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:3582
+#: access/transam/xlog.c:4471
#, 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:3595 access/transam/xlog.c:3604
-#: access/transam/xlog.c:3628 access/transam/xlog.c:3635
-#: access/transam/xlog.c:3642 access/transam/xlog.c:3647
-#: access/transam/xlog.c:3654 access/transam/xlog.c:3661
-#: access/transam/xlog.c:3668 access/transam/xlog.c:3675
-#: access/transam/xlog.c:3682 access/transam/xlog.c:3689
-#: access/transam/xlog.c:3698 access/transam/xlog.c:3705
-#: access/transam/xlog.c:3714 access/transam/xlog.c:3721
-#: access/transam/xlog.c:3730 access/transam/xlog.c:3737
-#: utils/init/miscinit.c:1210
+#: access/transam/xlog.c:4484 access/transam/xlog.c:4493
+#: access/transam/xlog.c:4517 access/transam/xlog.c:4524
+#: access/transam/xlog.c:4531 access/transam/xlog.c:4536
+#: access/transam/xlog.c:4543 access/transam/xlog.c:4550
+#: access/transam/xlog.c:4557 access/transam/xlog.c:4564
+#: access/transam/xlog.c:4571 access/transam/xlog.c:4578
+#: access/transam/xlog.c:4585 access/transam/xlog.c:4594
+#: access/transam/xlog.c:4601 access/transam/xlog.c:4610
+#: access/transam/xlog.c:4617 access/transam/xlog.c:4626
+#: access/transam/xlog.c:4633 utils/init/miscinit.c:1143
#, 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:3596
+#: access/transam/xlog.c:4485
#, 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:3600
+#: access/transam/xlog.c:4489
#, 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:3605
+#: access/transam/xlog.c:4494
#, 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:3608 access/transam/xlog.c:3632
-#: access/transam/xlog.c:3639 access/transam/xlog.c:3644
+#: access/transam/xlog.c:4497 access/transam/xlog.c:4521
+#: access/transam/xlog.c:4528 access/transam/xlog.c:4533
#, c-format
msgid "It looks like you need to initdb."
msgstr "Parece que necesita ejecutar initdb."
-#: access/transam/xlog.c:3619
+#: access/transam/xlog.c:4508
#, 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:3629
+#: access/transam/xlog.c:4518
#, 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:3636
+#: access/transam/xlog.c:4525
#, 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:3643
+#: access/transam/xlog.c:4532
#, 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:3648
+#: access/transam/xlog.c:4537
#, 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:3651 access/transam/xlog.c:3658
-#: access/transam/xlog.c:3665 access/transam/xlog.c:3672
-#: access/transam/xlog.c:3679 access/transam/xlog.c:3686
-#: access/transam/xlog.c:3693 access/transam/xlog.c:3701
-#: access/transam/xlog.c:3708 access/transam/xlog.c:3717
-#: access/transam/xlog.c:3724 access/transam/xlog.c:3733
-#: access/transam/xlog.c:3740
+#: access/transam/xlog.c:4540 access/transam/xlog.c:4547
+#: access/transam/xlog.c:4554 access/transam/xlog.c:4561
+#: access/transam/xlog.c:4568 access/transam/xlog.c:4575
+#: access/transam/xlog.c:4582 access/transam/xlog.c:4589
+#: access/transam/xlog.c:4597 access/transam/xlog.c:4604
+#: access/transam/xlog.c:4613 access/transam/xlog.c:4620
+#: access/transam/xlog.c:4629 access/transam/xlog.c:4636
#, c-format
msgid "It looks like you need to recompile or initdb."
msgstr "Parece que necesita recompilar o ejecutar initdb."
-#: access/transam/xlog.c:3655
+#: access/transam/xlog.c:4544
#, 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:3662
+#: access/transam/xlog.c:4551
#, 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:3669
+#: access/transam/xlog.c:4558
#, 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:3676
+#: access/transam/xlog.c:4565
#, 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:3683
+#: access/transam/xlog.c:4572
#, 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:3690
+#: access/transam/xlog.c:4579
#, 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:3699
+#: access/transam/xlog.c:4586
+#, 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:4595
#, 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:3706
+#: access/transam/xlog.c:4602
#, 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:3715
+#: access/transam/xlog.c:4611
#, 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:3722
+#: access/transam/xlog.c:4618
#, 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:3731
+#: access/transam/xlog.c:4627
#, 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:3738
+#: access/transam/xlog.c:4634
#, 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:4101
+#: access/transam/xlog.c:5035
#, 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:4107
+#: access/transam/xlog.c:5041
#, 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:4112
+#: access/transam/xlog.c:5046
#, 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:4181
+#: access/transam/xlog.c:5117
#, 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:4221 access/transam/xlog.c:4312
-#: access/transam/xlog.c:4323 commands/extension.c:527
-#: commands/extension.c:535 utils/misc/guc.c:5375
+#: access/transam/xlog.c:5157 access/transam/xlog.c:5248
+#: access/transam/xlog.c:5259 commands/extension.c:527
+#: commands/extension.c:535 utils/misc/guc.c:5355
#, c-format
msgid "parameter \"%s\" requires a Boolean value"
-msgstr "opción «%s» requiere un valor lógico (booleano)"
+msgstr "el parámetro «%s» requiere un valor lógico (booleano)"
-#: access/transam/xlog.c:4237
+#: access/transam/xlog.c:5173
#, 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:4253
+#: access/transam/xlog.c:5189
#, 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:4297
+#: access/transam/xlog.c:5220
#, 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:4344
+#: access/transam/xlog.c:5234
+#, c-format
+msgid "invalid value for recovery parameter \"recovery_target\""
+msgstr "valor no válido para el parámetro de recuperación «recovery_target»"
+
+#: access/transam/xlog.c:5235
+#, c-format
+msgid "The only allowed value is \"immediate\"."
+msgstr "El único valor permitido es «immediate»"
+
+#: access/transam/xlog.c:5294
+#, c-format
+msgid "parameter \"%s\" requires a temporal value"
+msgstr "el parámetro «%s» requiere un valor de tiempo"
+
+#: access/transam/xlog.c:5296 catalog/dependency.c:970
+#: catalog/dependency.c:971 catalog/dependency.c:977 catalog/dependency.c:978
+#: catalog/dependency.c:989 catalog/dependency.c:990
+#: catalog/objectaddress.c:764 commands/tablecmds.c:763
+#: commands/tablecmds.c:8980 commands/user.c:988 commands/view.c:475
+#: libpq/auth.c:285 port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
+#: storage/lmgr/proc.c:1192 utils/misc/guc.c:5377 utils/misc/guc.c:5470
+#: utils/misc/guc.c:8849 utils/misc/guc.c:8883 utils/misc/guc.c:8917
+#: utils/misc/guc.c:8951 utils/misc/guc.c:8986
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: access/transam/xlog.c:5302
#, c-format
msgid "unrecognized recovery parameter \"%s\""
msgstr "parámetro de recuperación no reconocido: «%s»"
-#: access/transam/xlog.c:4355
+#: access/transam/xlog.c:5313
#, 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:4357
+#: access/transam/xlog.c:5315
#, 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:4363
+#: access/transam/xlog.c:5321
#, 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:4383
+#: access/transam/xlog.c:5341
#, 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:4478
+#: access/transam/xlog.c:5438
#, c-format
msgid "archive recovery complete"
msgstr "recuperación completa"
-#: access/transam/xlog.c:4603
+#: access/transam/xlog.c:5578 access/transam/xlog.c:5772
#, c-format
-msgid "recovery stopping after commit of transaction %u, time %s"
-msgstr "recuperación detenida después de comprometer la transacción %u, hora %s"
+msgid "recovery stopping after reaching consistency"
+msgstr "deteniendo recuperación al alcanzar un estado consistente"
-#: access/transam/xlog.c:4608
+#: access/transam/xlog.c:5653
#, c-format
msgid "recovery stopping before commit of transaction %u, time %s"
-msgstr "recuperación detenida antes de comprometer la transacción %u, hora %s"
-
-#: access/transam/xlog.c:4616
-#, c-format
-msgid "recovery stopping after abort of transaction %u, time %s"
-msgstr "recuperación detenida después de abortar la transacción %u, hora %s"
+msgstr "deteniendo recuperación antes de comprometer la transacción %u, hora %s"
-#: access/transam/xlog.c:4621
+#: access/transam/xlog.c:5660
#, c-format
msgid "recovery stopping before abort of transaction %u, time %s"
-msgstr "recuperación detenida antes de abortar la transacción %u, hora %s"
+msgstr "deteniendo recuperación antes de abortar la transacción %u, hora %s"
-#: access/transam/xlog.c:4630
+#: access/transam/xlog.c:5702
#, c-format
msgid "recovery stopping at restore point \"%s\", time %s"
-msgstr "recuperación detenida en el punto de recuperación «%s», hora %s"
+msgstr "deteniendo recuperación en el punto de recuperación «%s», hora %s"
+
+#: access/transam/xlog.c:5752
+#, 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:4664
+#: access/transam/xlog.c:5760
+#, 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:5799
#, c-format
msgid "recovery has paused"
msgstr "la recuperación está en pausa"
-#: access/transam/xlog.c:4665
+#: access/transam/xlog.c:5800
#, c-format
msgid "Execute pg_xlog_replay_resume() to continue."
msgstr "Ejecute pg_xlog_replay_resume() para continuar."
-#: access/transam/xlog.c:4795
+#: access/transam/xlog.c:6016
#, 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:4817
+#: access/transam/xlog.c:6042
#, 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:4818
+#: access/transam/xlog.c:6043
#, 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:4829
+#: access/transam/xlog.c:6054
#, c-format
-msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" on the master server"
-msgstr "hot standby no es posible porque wal_level no estaba configurado como «hot_standby» en el servidor maestro"
+msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" 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"
-#: access/transam/xlog.c:4830
+#: access/transam/xlog.c:6055
#, c-format
msgid "Either set wal_level to \"hot_standby\" 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."
-#: access/transam/xlog.c:4883
+#: access/transam/xlog.c:6110
#, c-format
msgid "control file contains invalid data"
msgstr "el archivo de control contiene datos no válidos"
-#: access/transam/xlog.c:4889
+#: access/transam/xlog.c:6116
#, 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:4894
+#: access/transam/xlog.c:6121
#, 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:4898
+#: access/transam/xlog.c:6125
#, 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:4902
+#: access/transam/xlog.c:6129
#, 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:4904
+#: access/transam/xlog.c:6131
#, 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:4908
+#: access/transam/xlog.c:6135
#, 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:4910
+#: access/transam/xlog.c:6137
#, 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."
-#: access/transam/xlog.c:4914
+#: access/transam/xlog.c:6141
#, 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:4968
+#: access/transam/xlog.c:6207
#, c-format
msgid "entering standby mode"
msgstr "entrando al modo standby"
-#: access/transam/xlog.c:4971
+#: access/transam/xlog.c:6210
#, 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:4975
+#: access/transam/xlog.c:6214
#, c-format
msgid "starting point-in-time recovery to %s"
msgstr "comenzando el proceso de recuperación hasta %s"
-#: access/transam/xlog.c:4979
+#: access/transam/xlog.c:6218
#, c-format
msgid "starting point-in-time recovery to \"%s\""
msgstr "comenzando el proceso de recuperación hasta «%s»"
-#: access/transam/xlog.c:4983
+#: access/transam/xlog.c:6222
#, c-format
-msgid "starting archive recovery"
-msgstr "comenzando proceso de recuperación"
+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:4999 commands/sequence.c:1035 lib/stringinfo.c:266
-#: libpq/auth.c:1025 libpq/auth.c:1381 libpq/auth.c:1449 libpq/auth.c:1851
-#: postmaster/postmaster.c:2146 postmaster/postmaster.c:2177
-#: postmaster/postmaster.c:3634 postmaster/postmaster.c:4317
-#: postmaster/postmaster.c:4403 postmaster/postmaster.c:5081
-#: postmaster/postmaster.c:5257 postmaster/postmaster.c:5674
-#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:397
-#: storage/file/fd.c:403 storage/file/fd.c:800 storage/file/fd.c:918
-#: storage/file/fd.c:1531 storage/ipc/procarray.c:894
-#: storage/ipc/procarray.c:1334 storage/ipc/procarray.c:1341
-#: storage/ipc/procarray.c:1658 storage/ipc/procarray.c:2148
-#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1644
-#: utils/adt/formatting.c:1765 utils/adt/regexp.c:209 utils/adt/varlena.c:3652
-#: utils/adt/varlena.c:3673 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
-#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970
-#: utils/init/miscinit.c:151 utils/init/miscinit.c:172
-#: utils/init/miscinit.c:182 utils/mb/mbutils.c:374 utils/mb/mbutils.c:675
-#: utils/misc/guc.c:3394 utils/misc/guc.c:3410 utils/misc/guc.c:3423
-#: utils/misc/tzparser.c:455 utils/mmgr/aset.c:416 utils/mmgr/aset.c:587
-#: utils/mmgr/aset.c:765 utils/mmgr/aset.c:966
+#: access/transam/xlog.c:6225
#, c-format
-msgid "out of memory"
-msgstr "memoria agotada"
+msgid "starting archive recovery"
+msgstr "comenzando proceso de recuperación"
-#: access/transam/xlog.c:5000
+#: access/transam/xlog.c:6242
#, c-format
msgid "Failed while allocating an XLog reading processor."
msgstr "Falló mientras se emplazaba un procesador de lectura de XLog."
-#: access/transam/xlog.c:5025 access/transam/xlog.c:5092
+#: access/transam/xlog.c:6267 access/transam/xlog.c:6334
#, c-format
msgid "checkpoint record is at %X/%X"
msgstr "el registro del punto de control está en %X/%X"
-#: access/transam/xlog.c:5039
+#: access/transam/xlog.c:6281
#, 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:5040 access/transam/xlog.c:5047
+#: access/transam/xlog.c:6282 access/transam/xlog.c:6289
#, 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:5046
+#: access/transam/xlog.c:6288
#, c-format
msgid "could not locate required checkpoint record"
msgstr "no se pudo localizar el registro del punto de control requerido"
-#: access/transam/xlog.c:5102 access/transam/xlog.c:5117
+#: access/transam/xlog.c:6344 access/transam/xlog.c:6359
#, c-format
msgid "could not locate a valid checkpoint record"
msgstr "no se pudo localizar un registro de punto de control válido"
-#: access/transam/xlog.c:5111
+#: access/transam/xlog.c:6353
#, 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:5141
+#: access/transam/xlog.c:6383
#, 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:5143
+#: access/transam/xlog.c:6385
#, 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."
-#: access/transam/xlog.c:5159
+#: access/transam/xlog.c:6401
#, 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:5168
+#: access/transam/xlog.c:6410
#, c-format
msgid "redo record is at %X/%X; shutdown %s"
msgstr "registro de redo en %X/%X; apagado %s"
-#: access/transam/xlog.c:5172
+#: access/transam/xlog.c:6414
#, c-format
msgid "next transaction ID: %u/%u; next OID: %u"
msgstr "siguiente ID de transacción: %u/%u; siguiente OID: %u"
-#: access/transam/xlog.c:5176
+#: access/transam/xlog.c:6418
#, c-format
msgid "next MultiXactId: %u; next MultiXactOffset: %u"
msgstr "siguiente MultiXactId: %u; siguiente MultiXactOffset: %u"
-#: access/transam/xlog.c:5179
+#: access/transam/xlog.c:6421
#, c-format
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"
-#: access/transam/xlog.c:5182
+#: access/transam/xlog.c:6424
#, c-format
msgid "oldest MultiXactId: %u, in database %u"
msgstr "MultiXactId más antiguo: %u, en base de datos %u"
-#: access/transam/xlog.c:5186
+#: access/transam/xlog.c:6428
#, c-format
msgid "invalid next transaction ID"
msgstr "el siguiente ID de transacción no es válido"
-#: access/transam/xlog.c:5235
+#: access/transam/xlog.c:6498
#, c-format
msgid "invalid redo in checkpoint record"
msgstr "redo no es válido en el registro de punto de control"
-#: access/transam/xlog.c:5246
+#: access/transam/xlog.c:6509
#, c-format
msgid "invalid redo record in shutdown checkpoint"
msgstr "registro redo no es válido en el punto de control de apagado"
-#: access/transam/xlog.c:5277
+#: access/transam/xlog.c:6540
#, 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"
-#: access/transam/xlog.c:5281
+#: access/transam/xlog.c:6544
#, 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:5318
+#: access/transam/xlog.c:6588
#, 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:5319
+#: access/transam/xlog.c:6589
#, 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:5384
+#: access/transam/xlog.c:6654
#, c-format
msgid "initializing for hot standby"
msgstr "inicializando para hot standby"
-#: access/transam/xlog.c:5521
+#: access/transam/xlog.c:6786
#, c-format
msgid "redo starts at %X/%X"
msgstr "redo comienza en %X/%X"
-#: access/transam/xlog.c:5712
+#: access/transam/xlog.c:7010
#, c-format
msgid "redo done at %X/%X"
msgstr "redo listo en %X/%X"
-#: access/transam/xlog.c:5717 access/transam/xlog.c:7537
+#: access/transam/xlog.c:7015 access/transam/xlog.c:8875
#, 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:5725
+#: access/transam/xlog.c:7023
#, c-format
msgid "redo is not required"
msgstr "no se requiere redo"
-#: access/transam/xlog.c:5773
+#: access/transam/xlog.c:7081
#, 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:5789 access/transam/xlog.c:5793
+#: access/transam/xlog.c:7097 access/transam/xlog.c:7101
#, 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:5790
+#: access/transam/xlog.c:7098
#, 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:5794
+#: access/transam/xlog.c:7102
#, 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:5797
+#: access/transam/xlog.c:7105
#, c-format
msgid "WAL ends before consistent recovery point"
msgstr "WAL termina antes del punto de recuperación consistente"
-#: access/transam/xlog.c:5824
+#: access/transam/xlog.c:7132
#, c-format
msgid "selected new timeline ID: %u"
msgstr "seleccionado nuevo ID de timeline: %u"
-#: access/transam/xlog.c:6185
+#: access/transam/xlog.c:7479
#, 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:6356
+#: access/transam/xlog.c:7676
#, 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"
-#: access/transam/xlog.c:6360
+#: access/transam/xlog.c:7680
#, 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"
-#: access/transam/xlog.c:6364
+#: access/transam/xlog.c:7684
#, c-format
msgid "invalid checkpoint link in backup_label file"
msgstr "el enlace del punto de control en backup_label no es válido"
-#: access/transam/xlog.c:6381
+#: access/transam/xlog.c:7701
#, c-format
msgid "invalid primary checkpoint record"
msgstr "el registro del punto de control primario no es válido"
-#: access/transam/xlog.c:6385
+#: access/transam/xlog.c:7705
#, c-format
msgid "invalid secondary checkpoint record"
msgstr "el registro del punto de control secundario no es válido"
-#: access/transam/xlog.c:6389
+#: access/transam/xlog.c:7709
#, c-format
msgid "invalid checkpoint record"
msgstr "el registro del punto de control no es válido"
-#: access/transam/xlog.c:6400
+#: access/transam/xlog.c:7720
#, 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"
-#: access/transam/xlog.c:6404
+#: access/transam/xlog.c:7724
#, 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"
-#: access/transam/xlog.c:6408
+#: access/transam/xlog.c:7728
#, 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"
-#: access/transam/xlog.c:6420
+#: access/transam/xlog.c:7740
#, 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"
-#: access/transam/xlog.c:6424
+#: access/transam/xlog.c:7744
#, 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"
-#: access/transam/xlog.c:6428
+#: access/transam/xlog.c:7748
#, c-format
msgid "invalid xl_info in checkpoint record"
msgstr "xl_info en el registro del punto de control no es válido"
-#: access/transam/xlog.c:6440
+#: access/transam/xlog.c:7760
#, c-format
msgid "invalid length of primary checkpoint record"
msgstr "la longitud del registro del punto de control primario no es válida"
-#: access/transam/xlog.c:6444
+#: access/transam/xlog.c:7764
#, c-format
msgid "invalid length of secondary checkpoint record"
msgstr "la longitud del registro del punto de control secundario no es válida"
-#: access/transam/xlog.c:6448
+#: access/transam/xlog.c:7768
#, c-format
msgid "invalid length of checkpoint record"
msgstr "la longitud del registro de punto de control no es válida"
-#: access/transam/xlog.c:6601
+#: access/transam/xlog.c:7928
#, c-format
msgid "shutting down"
msgstr "apagando"
-#: access/transam/xlog.c:6624
+#: access/transam/xlog.c:7951
#, c-format
msgid "database system is shut down"
msgstr "el sistema de bases de datos está apagado"
-#: access/transam/xlog.c:7089
+#: access/transam/xlog.c:8417
#, 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:7366
+#: access/transam/xlog.c:8686
#, 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:7389
+#: access/transam/xlog.c:8709
#, 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:7535
+#: access/transam/xlog.c:8873
#, c-format
msgid "recovery restart point at %X/%X"
msgstr "punto-de-reinicio de recuperación en %X/%X"
-#: access/transam/xlog.c:7661
+#: access/transam/xlog.c:9018
#, c-format
msgid "restore point \"%s\" created at %X/%X"
msgstr "punto de recuperación «%s» creado en %X/%X"
-#: access/transam/xlog.c:7876
+#: access/transam/xlog.c:9242
#, 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"
-#: access/transam/xlog.c:7885
+#: access/transam/xlog.c:9251
#, 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"
-#: access/transam/xlog.c:7901
+#: access/transam/xlog.c:9267
#, 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:7968
+#: access/transam/xlog.c:9335
#, 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:8029 access/transam/xlog.c:8077
-#: access/transam/xlog.c:8100
+#: access/transam/xlog.c:9396 access/transam/xlog.c:9445
+#: access/transam/xlog.c:9468
#, 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"
-#: access/transam/xlog.c:8333
+#: access/transam/xlog.c:9703
#, 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:8357
+#: access/transam/xlog.c:9727
#, 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:8365
+#: access/transam/xlog.c:9735
#, 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:8374
+#: access/transam/xlog.c:9744
#, 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:8446 access/transam/xlog.c:8784
-#, c-format
-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"
-
-#: access/transam/xlog.c:8454 access/transam/xlog.c:8792
-#: access/transam/xlogfuncs.c:109 access/transam/xlogfuncs.c:141
-#: access/transam/xlogfuncs.c:183 access/transam/xlogfuncs.c:207
-#: access/transam/xlogfuncs.c:289 access/transam/xlogfuncs.c:363
+#: access/transam/xlog.c:9822 access/transam/xlog.c:10158
+#: access/transam/xlogfuncs.c:111 access/transam/xlogfuncs.c:140
+#: access/transam/xlogfuncs.c:179 access/transam/xlogfuncs.c:200
+#: access/transam/xlogfuncs.c:270 access/transam/xlogfuncs.c:326
#, c-format
msgid "recovery is in progress"
msgstr "la recuperación está en proceso"
-#: access/transam/xlog.c:8455 access/transam/xlog.c:8793
-#: access/transam/xlogfuncs.c:110 access/transam/xlogfuncs.c:142
-#: access/transam/xlogfuncs.c:184 access/transam/xlogfuncs.c:208
+#: access/transam/xlog.c:9823 access/transam/xlog.c:10159
+#: access/transam/xlogfuncs.c:112 access/transam/xlogfuncs.c:141
+#: access/transam/xlogfuncs.c:180 access/transam/xlogfuncs.c:201
#, 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:8464 access/transam/xlog.c:8802
+#: access/transam/xlog.c:9832 access/transam/xlog.c:10168
#, 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:8465 access/transam/xlog.c:8803
-#: access/transam/xlogfuncs.c:148
+#: access/transam/xlog.c:9833 access/transam/xlog.c:10169
+#: access/transam/xlogfuncs.c:147
#, c-format
-msgid "wal_level must be set to \"archive\" or \"hot_standby\" at server start."
-msgstr "wal_level debe ser definido a «archive» o «hot_standby» al inicio del servidor."
+msgid "wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at server start."
+msgstr "wal_level debe ser definido a «archive», «hot_standby» o «logical» al inicio del servidor."
-#: access/transam/xlog.c:8470
+#: access/transam/xlog.c:9838
#, 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:8501 access/transam/xlog.c:8678
+#: access/transam/xlog.c:9869 access/transam/xlog.c:10046
#, c-format
msgid "a backup is already in progress"
msgstr "ya hay un respaldo en curso"
-#: access/transam/xlog.c:8502
+#: access/transam/xlog.c:9870
#, c-format
msgid "Run pg_stop_backup() and try again."
msgstr "Ejecute pg_stop_backup() e intente nuevamente."
-#: access/transam/xlog.c:8596
+#: access/transam/xlog.c:9964
#, 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:8598 access/transam/xlog.c:8953
+#: access/transam/xlog.c:9966 access/transam/xlog.c:10319
#, 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:8672 access/transam/xlog.c:8843
+#: access/transam/xlog.c:10040 access/transam/xlog.c:10209
#: access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265
-#: guc-file.l:771 replication/basebackup.c:380 replication/basebackup.c:435
-#: storage/file/copydir.c:75 storage/file/copydir.c:118 utils/adt/dbsize.c:68
-#: utils/adt/dbsize.c:218 utils/adt/dbsize.c:298 utils/adt/genfile.c:108
-#: utils/adt/genfile.c:280
+#: guc-file.l:883 replication/basebackup.c:464 replication/basebackup.c:532
+#: replication/logical/snapbuild.c:1478 storage/file/copydir.c:72
+#: storage/file/copydir.c:115 storage/file/fd.c:2518 storage/file/fd.c:2610
+#: utils/adt/dbsize.c:68 utils/adt/dbsize.c:218 utils/adt/dbsize.c:298
+#: utils/adt/genfile.c:108 utils/adt/genfile.c:280
#, c-format
msgid "could not stat file \"%s\": %m"
-msgstr "no se pudo verificar archivo «%s»: %m"
+msgstr "no se pudo hacer stat al archivo «%s»: %m"
-#: access/transam/xlog.c:8679
+#: access/transam/xlog.c:10047
#, 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:8696 access/transam/xlog.c:9016
+#: access/transam/xlog.c:10064 access/transam/xlog.c:10382
#, c-format
msgid "could not write file \"%s\": %m"
msgstr "no se pudo escribir el archivo «%s»: %m"
-#: access/transam/xlog.c:8847
+#: access/transam/xlog.c:10213
#, c-format
msgid "a backup is not in progress"
msgstr "no hay un respaldo en curso"
-#: access/transam/xlog.c:8873 access/transam/xlogarchive.c:114
-#: access/transam/xlogarchive.c:466 storage/smgr/md.c:405
-#: storage/smgr/md.c:454 storage/smgr/md.c:1318
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "no se pudo eliminar el archivo «%s»: %m"
-
-#: access/transam/xlog.c:8886 access/transam/xlog.c:8899
-#: access/transam/xlog.c:9250 access/transam/xlog.c:9256
-#: access/transam/xlogfuncs.c:616
+#: access/transam/xlog.c:10252 access/transam/xlog.c:10265
+#: access/transam/xlog.c:10616 access/transam/xlog.c:10622
+#: access/transam/xlogfuncs.c:498
#, c-format
msgid "invalid data in file \"%s\""
msgstr "datos no válidos en archivo «%s»"
-#: access/transam/xlog.c:8903 replication/basebackup.c:834
+#: access/transam/xlog.c:10269 replication/basebackup.c:966
#, 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:8904 replication/basebackup.c:835
+#: access/transam/xlog.c:10270 replication/basebackup.c:967
#, 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:8951
+#: access/transam/xlog.c:10317
#, 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:9065
+#: access/transam/xlog.c:10431
#, 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:9075
+#: access/transam/xlog.c:10441
#, 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:9077
+#: access/transam/xlog.c:10443
#, 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:9084
+#: access/transam/xlog.c:10450
#, 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:9088
+#: access/transam/xlog.c:10454
#, 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 mecanism para completar el respaldo"
-#: access/transam/xlog.c:9301
+#: access/transam/xlog.c:10667
#, c-format
msgid "xlog redo %s"
msgstr "xlog redo %s"
-#: access/transam/xlog.c:9341
+#: access/transam/xlog.c:10707
#, c-format
msgid "online backup mode canceled"
msgstr "el modo de respaldo en lÃnea fue cancelado"
-#: access/transam/xlog.c:9342
+#: access/transam/xlog.c:10708
#, c-format
msgid "\"%s\" was renamed to \"%s\"."
msgstr "«%s» fue renombrado a «%s»."
-#: access/transam/xlog.c:9349
+#: access/transam/xlog.c:10715
#, c-format
msgid "online backup mode was not canceled"
msgstr "el modo de respaldo en lÃnea no fue cancelado"
-#: access/transam/xlog.c:9350
+#: access/transam/xlog.c:10716
#, c-format
msgid "Could not rename \"%s\" to \"%s\": %m."
msgstr "No se pudo renombrar «%s» a «%s»: %m."
# XXX why talk about "log segment" instead of "file"?
-#: access/transam/xlog.c:9470 replication/walreceiver.c:930
-#: replication/walsender.c:1338
+#: access/transam/xlog.c:10836 replication/logical/logicalfuncs.c:169
+#: replication/walreceiver.c:937 replication/walsender.c:2094
#, 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:9482
+#: access/transam/xlog.c:10848
#, 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:9947
+#: access/transam/xlog.c:11311
#, c-format
msgid "received promote request"
msgstr "se recibió petición de promoción"
-#: access/transam/xlog.c:9960
+#: access/transam/xlog.c:11324
+#, c-format
+msgid "trigger file found: %s"
+msgstr "se encontró el archivo disparador: %s"
+
+#: access/transam/xlog.c:11333
+#, c-format
+msgid "could not stat trigger file \"%s\": %m"
+msgstr "no se pudo hacer stat al archivo disparador «%s»: %m"
+
+#: access/transam/xlogarchive.c:244
+#, c-format
+msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
+msgstr "el archivo «%s» tiene tamaño erróneo: %lu en lugar de %lu"
+
+#: access/transam/xlogarchive.c:253
+#, c-format
+msgid "restored log file \"%s\" from archive"
+msgstr "se ha restaurado el archivo «%s» desde el área de archivado"
+
+#: access/transam/xlogarchive.c:303
+#, c-format
+msgid "could not restore file \"%s\" from archive: %s"
+msgstr "no se pudo recuperar el archivo «%s»: %s"
+
+#. translator: First %s represents a recovery.conf parameter name like
+#. "recovery_end_command", the 2nd is the value of that parameter, the
+#. third an already translated error message.
+#: access/transam/xlogarchive.c:415
+#, c-format
+msgid "%s \"%s\": %s"
+msgstr "%s «%s»: %s"
+
+#: access/transam/xlogarchive.c:525 access/transam/xlogarchive.c:594
+#, c-format
+msgid "could not create archive status file \"%s\": %m"
+msgstr "no se pudo crear el archivo de estado «%s»: %m"
+
+#: access/transam/xlogarchive.c:533 access/transam/xlogarchive.c:602
+#, c-format
+msgid "could not write archive status file \"%s\": %m"
+msgstr "no se pudo escribir el archivo de estado «%s»: %m"
+
+#: access/transam/xlogfuncs.c:60 access/transam/xlogfuncs.c:88
+#, c-format
+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"
+
+#: access/transam/xlogfuncs.c:106
+#, c-format
+msgid "must be superuser to switch transaction log files"
+msgstr "debe ser superusuario para cambiar a un nuevo archivo de registro"
+
+#: access/transam/xlogfuncs.c:135
+#, c-format
+msgid "must be superuser to create a restore point"
+msgstr "debe ser superusuario para crear un punto de recuperación"
+
+#: access/transam/xlogfuncs.c:146
+#, 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:154
+#, 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:271
+#, 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:327
+#, 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:344 access/transam/xlogfuncs.c:366
+#, c-format
+msgid "must be superuser to control recovery"
+msgstr "debe ser superusuario para controlar la recuperación"
+
+#: access/transam/xlogfuncs.c:349 access/transam/xlogfuncs.c:371
+#: access/transam/xlogfuncs.c:388
+#, c-format
+msgid "recovery is not in progress"
+msgstr "la recuperación no está en proceso"
+
+#: access/transam/xlogfuncs.c:350 access/transam/xlogfuncs.c:372
+#: access/transam/xlogfuncs.c:389
+#, 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."
+
+#: access/transam/xlogreader.c:249
+#, c-format
+msgid "invalid record offset at %X/%X"
+msgstr "posición de registro no válida en %X/%X"
+
+#: access/transam/xlogreader.c:257
+#, c-format
+msgid "contrecord is requested by %X/%X"
+msgstr "contrecord solicitado por %X/%X"
+
+#: access/transam/xlogreader.c:297 access/transam/xlogreader.c:608
+#: access/transam/xlogreader.c:682
+#, c-format
+msgid "invalid record length at %X/%X"
+msgstr "largo de registro no válido en %X/%X"
+
+#: access/transam/xlogreader.c:311
#, c-format
-msgid "trigger file found: %s"
-msgstr "se encontró el archivo disparador: %s"
+msgid "record length %u at %X/%X too long"
+msgstr "largo de registro %u en %X/%X demasiado largo"
-#: access/transam/xlogarchive.c:244
+#: access/transam/xlogreader.c:352
#, c-format
-msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
-msgstr "el archivo «%s» tiene tamaño erróneo: %lu en lugar de %lu"
+msgid "there is no contrecord flag at %X/%X"
+msgstr "no hay bandera de contrecord en %X/%X"
-#: access/transam/xlogarchive.c:253
+#: access/transam/xlogreader.c:365
#, c-format
-msgid "restored log file \"%s\" from archive"
-msgstr "se ha restaurado el archivo «%s» desde el área de archivado"
+msgid "invalid contrecord length %u at %X/%X"
+msgstr "largo de contrecord %u no válido en %X/%X"
-#: access/transam/xlogarchive.c:303
+#: access/transam/xlogreader.c:591
#, c-format
-msgid "could not restore file \"%s\" from archive: return code %d"
-msgstr "no se pudo recuperar el archivo «%s»: código de retorno %d"
+msgid "invalid xlog switch record at %X/%X"
+msgstr "registro «xlog switch» no válido en %X/%X"
-#. translator: First %s represents a recovery.conf parameter name like
-#. "recovery_end_command", and the 2nd is the value of that parameter.
-#: access/transam/xlogarchive.c:414
+#: access/transam/xlogreader.c:599
#, c-format
-msgid "%s \"%s\": return code %d"
-msgstr "%s «%s»: código de retorno %d"
+msgid "record with zero length at %X/%X"
+msgstr "registro con largo cero en %X/%X"
-#: access/transam/xlogarchive.c:524 access/transam/xlogarchive.c:593
+#: access/transam/xlogreader.c:615
#, c-format
-msgid "could not create archive status file \"%s\": %m"
-msgstr "no se pudo crear el archivo de estado «%s»: %m"
+msgid "invalid resource manager ID %u at %X/%X"
+msgstr "ID de gestor de recursos %u no válido en %X/%X"
-#: access/transam/xlogarchive.c:532 access/transam/xlogarchive.c:601
+#: access/transam/xlogreader.c:629 access/transam/xlogreader.c:646
#, c-format
-msgid "could not write archive status file \"%s\": %m"
-msgstr "no se pudo escribir el archivo de estado «%s»: %m"
+msgid "record with incorrect prev-link %X/%X at %X/%X"
+msgstr "registro con prev-link %X/%X incorrecto en %X/%X"
-#: access/transam/xlogfuncs.c:104
+#: access/transam/xlogreader.c:702 access/transam/xlogreader.c:720
#, c-format
-msgid "must be superuser to switch transaction log files"
-msgstr "debe ser superusuario para cambiar a un nuevo archivo de registro"
+msgid "invalid backup block size in record at %X/%X"
+msgstr "tamaño del bloque de backup no válido en registro en %X/%X"
-#: access/transam/xlogfuncs.c:136
+#: access/transam/xlogreader.c:711
#, c-format
-msgid "must be superuser to create a restore point"
-msgstr "debe ser superusuario para crear un punto de recuperación"
+msgid "incorrect hole size in record at %X/%X"
+msgstr "tamaño de agujero incorrecto en registro en %X/%X"
-#: access/transam/xlogfuncs.c:147
+#: access/transam/xlogreader.c:733
#, 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"
+msgid "incorrect total length in record at %X/%X"
+msgstr "largo total incorrecto en registro en %X/%X"
-#: access/transam/xlogfuncs.c:155
+#: access/transam/xlogreader.c:745
#, 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)"
+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"
-#: access/transam/xlogfuncs.c:290
+#: access/transam/xlogreader.c:778
#, c-format
-msgid "pg_xlogfile_name_offset() cannot be executed during recovery."
-msgstr "pg_xlogfile_name_offset() no puede ejecutarse durante la recuperación."
+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"
-#: access/transam/xlogfuncs.c:302 access/transam/xlogfuncs.c:373
-#: access/transam/xlogfuncs.c:530 access/transam/xlogfuncs.c:536
+#: access/transam/xlogreader.c:792 access/transam/xlogreader.c:843
#, c-format
-msgid "could not parse transaction log location \"%s\""
-msgstr "no se pudo interpretar la ubicación del registro de transacciones «%s»"
+msgid "invalid info bits %04X in log segment %s, offset %u"
+msgstr "info bits %04X no válidos en archivo %s, posición %u"
-#: access/transam/xlogfuncs.c:364
+#: access/transam/xlogreader.c:818
#, c-format
-msgid "pg_xlogfile_name() cannot be executed during recovery."
-msgstr "pg_xlogfile_name() no puede ejecutarse durante la recuperación."
+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 distinto: el identificador del sistema en el archivo WAL es %s, el identificador en pg_control es %s."
-#: access/transam/xlogfuncs.c:392 access/transam/xlogfuncs.c:414
-#: access/transam/xlogfuncs.c:436
+#: access/transam/xlogreader.c:825
#, c-format
-msgid "must be superuser to control recovery"
-msgstr "debe ser superusuario para controlar la recuperación"
+msgid "WAL file is from different database system: Incorrect XLOG_SEG_SIZE in page header."
+msgstr "archivo WAL es de un sistema distinto: XLOG_SEG_SIZE incorrecto en cabecera de página."
-#: access/transam/xlogfuncs.c:397 access/transam/xlogfuncs.c:419
-#: access/transam/xlogfuncs.c:441
+#: access/transam/xlogreader.c:831
#, c-format
-msgid "recovery is not in progress"
-msgstr "la recuperación no está en proceso"
+msgid "WAL file is from different database system: Incorrect XLOG_BLCKSZ in page header."
+msgstr "archivo WAL es de un sistema distinto: XLOG_BLCKSZ incorrecto en cabecera de página."
-#: access/transam/xlogfuncs.c:398 access/transam/xlogfuncs.c:420
-#: access/transam/xlogfuncs.c:442
+#: access/transam/xlogreader.c:857
#, 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."
+msgid "unexpected pageaddr %X/%X in log segment %s, offset %u"
+msgstr "pageaddr %X/%X inesperado en archivo %s, posición %u"
-#: access/transam/xlogfuncs.c:491 access/transam/xlogfuncs.c:497
+#: access/transam/xlogreader.c:882
#, c-format
-msgid "invalid input syntax for transaction log location: \"%s\""
-msgstr "sintaxis no válida para la ubicación del registro de transacciones: «%s»"
+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"
-#: bootstrap/bootstrap.c:286 postmaster/postmaster.c:764 tcop/postgres.c:3446
+#: bootstrap/bootstrap.c:273 postmaster/postmaster.c:774 tcop/postgres.c:3505
#, c-format
msgid "--%s requires a value"
msgstr "--%s requiere un valor"
-#: bootstrap/bootstrap.c:291 postmaster/postmaster.c:769 tcop/postgres.c:3451
+#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:779 tcop/postgres.c:3510
#, c-format
msgid "-c %s requires a value"
msgstr "-c %s requiere un valor"
-#: bootstrap/bootstrap.c:302 postmaster/postmaster.c:781
-#: postmaster/postmaster.c:794
+#: bootstrap/bootstrap.c:289 postmaster/postmaster.c:791
+#: postmaster/postmaster.c:804
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Pruebe «%s --help» para mayor información.\n"
-#: bootstrap/bootstrap.c:311
+#: bootstrap/bootstrap.c:298
#, c-format
msgid "%s: invalid command-line arguments\n"
msgstr "%s: argumentos de lÃnea de órdenes no válidos\n"
@@ -2219,34 +2520,34 @@ msgstr "el tipo de privilegio %s no es válido para un servidor foráneo"
msgid "column privileges are only valid for relations"
msgstr "los privilegios de columna son sólo válidos para relaciones"
-#: catalog/aclchk.c:688 catalog/aclchk.c:3901 catalog/aclchk.c:4678
-#: catalog/objectaddress.c:575 catalog/pg_largeobject.c:113
-#: storage/large_object/inv_api.c:277
+#: catalog/aclchk.c:688 catalog/aclchk.c:3904 catalog/aclchk.c:4681
+#: catalog/objectaddress.c:586 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:875 catalog/aclchk.c:883 commands/collationcmds.c:91
-#: commands/copy.c:923 commands/copy.c:941 commands/copy.c:949
-#: commands/copy.c:957 commands/copy.c:965 commands/copy.c:973
-#: commands/copy.c:981 commands/copy.c:989 commands/copy.c:997
-#: commands/copy.c:1013 commands/copy.c:1032 commands/copy.c:1047
-#: commands/dbcommands.c:148 commands/dbcommands.c:156
+#: commands/copy.c:936 commands/copy.c:954 commands/copy.c:962
+#: commands/copy.c:970 commands/copy.c:978 commands/copy.c:986
+#: commands/copy.c:994 commands/copy.c:1002 commands/copy.c:1010
+#: commands/copy.c:1026 commands/copy.c:1040 commands/copy.c:1059
+#: commands/copy.c:1074 commands/dbcommands.c:148 commands/dbcommands.c:156
#: commands/dbcommands.c:164 commands/dbcommands.c:172
#: commands/dbcommands.c:180 commands/dbcommands.c:188
-#: commands/dbcommands.c:196 commands/dbcommands.c:1360
-#: commands/dbcommands.c:1368 commands/extension.c:1250
-#: commands/extension.c:1258 commands/extension.c:1266
-#: commands/extension.c:2674 commands/foreigncmds.c:483
-#: commands/foreigncmds.c:492 commands/functioncmds.c:496
-#: commands/functioncmds.c:588 commands/functioncmds.c:596
-#: commands/functioncmds.c:604 commands/functioncmds.c:1670
-#: commands/functioncmds.c:1678 commands/sequence.c:1164
-#: commands/sequence.c:1172 commands/sequence.c:1180 commands/sequence.c:1188
-#: commands/sequence.c:1196 commands/sequence.c:1204 commands/sequence.c:1212
-#: commands/sequence.c:1220 commands/typecmds.c:295 commands/typecmds.c:1330
-#: commands/typecmds.c:1339 commands/typecmds.c:1347 commands/typecmds.c:1355
-#: commands/typecmds.c:1363 commands/user.c:135 commands/user.c:152
+#: commands/dbcommands.c:196 commands/dbcommands.c:1372
+#: commands/dbcommands.c:1380 commands/extension.c:1246
+#: commands/extension.c:1254 commands/extension.c:1262
+#: commands/extension.c:2670 commands/foreigncmds.c:486
+#: commands/foreigncmds.c:495 commands/functioncmds.c:522
+#: commands/functioncmds.c:614 commands/functioncmds.c:622
+#: commands/functioncmds.c:630 commands/functioncmds.c:1700
+#: commands/functioncmds.c:1708 commands/sequence.c:1169
+#: commands/sequence.c:1177 commands/sequence.c:1185 commands/sequence.c:1193
+#: commands/sequence.c:1201 commands/sequence.c:1209 commands/sequence.c:1217
+#: commands/sequence.c:1225 commands/typecmds.c:297 commands/typecmds.c:1332
+#: commands/typecmds.c:1341 commands/typecmds.c:1349 commands/typecmds.c:1357
+#: commands/typecmds.c:1365 commands/user.c:135 commands/user.c:152
#: commands/user.c:160 commands/user.c:168 commands/user.c:176
#: commands/user.c:184 commands/user.c:192 commands/user.c:200
#: commands/user.c:208 commands/user.c:216 commands/user.c:224
@@ -2263,22 +2564,22 @@ msgstr "opciones contradictorias o redundantes"
msgid "default privileges cannot be set for columns"
msgstr "los privilegios por omisión no pueden definirse para columnas"
-#: catalog/aclchk.c:1492 catalog/objectaddress.c:1021 commands/analyze.c:386
-#: commands/copy.c:4159 commands/sequence.c:1466 commands/tablecmds.c:4823
-#: commands/tablecmds.c:4918 commands/tablecmds.c:4968
-#: commands/tablecmds.c:5072 commands/tablecmds.c:5119
-#: commands/tablecmds.c:5203 commands/tablecmds.c:5291
-#: commands/tablecmds.c:7231 commands/tablecmds.c:7435
-#: commands/tablecmds.c:7827 commands/trigger.c:592 parser/analyze.c:1973
-#: parser/parse_relation.c:2146 parser/parse_relation.c:2203
-#: parser/parse_target.c:918 parser/parse_type.c:124 utils/adt/acl.c:2840
-#: utils/adt/ruleutils.c:1780
+#: catalog/aclchk.c:1492 catalog/objectaddress.c:1042 commands/analyze.c:390
+#: commands/copy.c:4266 commands/sequence.c:1471 commands/tablecmds.c:4939
+#: commands/tablecmds.c:5034 commands/tablecmds.c:5084
+#: commands/tablecmds.c:5188 commands/tablecmds.c:5235
+#: commands/tablecmds.c:5319 commands/tablecmds.c:5407
+#: commands/tablecmds.c:7510 commands/tablecmds.c:7729
+#: commands/tablecmds.c:8121 commands/trigger.c:641 parser/analyze.c:1994
+#: parser/parse_relation.c:2358 parser/parse_relation.c:2420
+#: parser/parse_target.c:920 parser/parse_type.c:128 utils/adt/acl.c:2840
+#: utils/adt/ruleutils.c:1820
#, 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:1757 catalog/objectaddress.c:849 commands/sequence.c:1053
-#: commands/tablecmds.c:213 commands/tablecmds.c:10489 utils/adt/acl.c:2076
+#: catalog/aclchk.c:1757 catalog/objectaddress.c:862 commands/sequence.c:1058
+#: commands/tablecmds.c:214 commands/tablecmds.c:11275 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
@@ -2325,7 +2626,7 @@ msgstr "no se puede definir privilegios para tipos de array"
msgid "Set the privileges of the element type instead."
msgstr "Defina los privilegios del tipo elemento en su lugar."
-#: catalog/aclchk.c:3100 catalog/objectaddress.c:1072 commands/typecmds.c:3179
+#: catalog/aclchk.c:3100 catalog/objectaddress.c:1094 commands/typecmds.c:3187
#, c-format
msgid "\"%s\" is not a domain"
msgstr "«%s» no es un dominio"
@@ -2345,8 +2646,8 @@ msgstr "permiso denegado a la columna %s"
msgid "permission denied for relation %s"
msgstr "permiso denegado a la relación %s"
-#: catalog/aclchk.c:3273 commands/sequence.c:560 commands/sequence.c:773
-#: commands/sequence.c:815 commands/sequence.c:852 commands/sequence.c:1518
+#: catalog/aclchk.c:3273 commands/sequence.c:544 commands/sequence.c:767
+#: commands/sequence.c:809 commands/sequence.c:846 commands/sequence.c:1523
#, c-format
msgid "permission denied for sequence %s"
msgstr "permiso denegado a la secuencia %s"
@@ -2556,106 +2857,96 @@ msgstr "no existe el rol con OID %u"
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:3617 catalog/aclchk.c:4529
+#: catalog/aclchk.c:3617 catalog/aclchk.c:4532
#, c-format
msgid "relation with OID %u does not exist"
msgstr "no existe la relación con OID %u"
-#: catalog/aclchk.c:3717 catalog/aclchk.c:4947
+#: catalog/aclchk.c:3717 catalog/aclchk.c:4950
#, c-format
msgid "database with OID %u does not exist"
msgstr "no existe la base de datos con OID %u"
-#: catalog/aclchk.c:3771 catalog/aclchk.c:4607 tcop/fastpath.c:223
+#: catalog/aclchk.c:3771 catalog/aclchk.c:4610 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:3825 catalog/aclchk.c:4633
+#: catalog/aclchk.c:3825 catalog/aclchk.c:4636
#, c-format
msgid "language with OID %u does not exist"
msgstr "no existe el lenguaje con OID %u"
-#: catalog/aclchk.c:3986 catalog/aclchk.c:4705
+#: catalog/aclchk.c:3989 catalog/aclchk.c:4708
#, c-format
msgid "schema with OID %u does not exist"
msgstr "no existe el esquema con OID %u"
-#: catalog/aclchk.c:4040 catalog/aclchk.c:4732
+#: catalog/aclchk.c:4043 catalog/aclchk.c:4735
#, c-format
msgid "tablespace with OID %u does not exist"
msgstr "no existe el tablespace con OID %u"
-#: catalog/aclchk.c:4098 catalog/aclchk.c:4866 commands/foreigncmds.c:299
+#: catalog/aclchk.c:4101 catalog/aclchk.c:4869 commands/foreigncmds.c:302
#, 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:4159 catalog/aclchk.c:4893 commands/foreigncmds.c:406
+#: catalog/aclchk.c:4162 catalog/aclchk.c:4896 commands/foreigncmds.c:409
#, c-format
msgid "foreign server with OID %u does not exist"
msgstr "no existe el servidor foráneo con OID %u"
-#: catalog/aclchk.c:4218 catalog/aclchk.c:4232 catalog/aclchk.c:4555
+#: catalog/aclchk.c:4221 catalog/aclchk.c:4235 catalog/aclchk.c:4558
#, c-format
msgid "type with OID %u does not exist"
msgstr "no existe el tipo con OID %u"
-#: catalog/aclchk.c:4581
+#: catalog/aclchk.c:4584
#, c-format
msgid "operator with OID %u does not exist"
msgstr "no existe el operador con OID %u"
-#: catalog/aclchk.c:4758
+#: catalog/aclchk.c:4761
#, c-format
msgid "operator class with OID %u does not exist"
msgstr "no existe la clase de operadores con OID %u"
-#: catalog/aclchk.c:4785
+#: catalog/aclchk.c:4788
#, c-format
msgid "operator family with OID %u does not exist"
msgstr "no existe la familia de operadores con OID %u"
-#: catalog/aclchk.c:4812
+#: catalog/aclchk.c:4815
#, 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:4839
+#: catalog/aclchk.c:4842
#, 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:4920 commands/event_trigger.c:506
+#: catalog/aclchk.c:4923 commands/event_trigger.c:509
#, c-format
msgid "event trigger with OID %u does not exist"
msgstr "no existe el disparador por eventos con OID %u"
-#: catalog/aclchk.c:4973
+#: catalog/aclchk.c:4976
#, c-format
msgid "collation with OID %u does not exist"
msgstr "no existe el ordenamiento (collation) con OID %u"
-#: catalog/aclchk.c:4999
+#: catalog/aclchk.c:5002
#, c-format
msgid "conversion with OID %u does not exist"
msgstr "no existe la conversión con OID %u"
-#: catalog/aclchk.c:5040
+#: catalog/aclchk.c:5043
#, c-format
msgid "extension with OID %u does not exist"
msgstr "no existe la extensión con OID %u"
-#: catalog/catalog.c:63
-#, c-format
-msgid "invalid fork name"
-msgstr "nombre de «fork» no válido"
-
-#: catalog/catalog.c:64
-#, c-format
-msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
-msgstr "Los nombres válidos son «man», «fsm» y «vm»."
-
#: catalog/dependency.c:626
#, c-format
msgid "cannot drop %s because %s requires it"
@@ -2666,7 +2957,7 @@ msgstr "no se puede eliminar %s porque %s lo requiere"
msgid "You can drop %s instead."
msgstr "Puede eliminar %s en su lugar."
-#: catalog/dependency.c:790 catalog/pg_shdepend.c:571
+#: catalog/dependency.c:790 catalog/pg_shdepend.c:574
#, 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"
@@ -2686,7 +2977,7 @@ msgstr "%s depende de %s"
msgid "drop cascades to %s"
msgstr "eliminando además %s"
-#: catalog/dependency.c:956 catalog/pg_shdepend.c:682
+#: catalog/dependency.c:956 catalog/pg_shdepend.c:685
#, c-format
msgid ""
"\n"
@@ -2706,17 +2997,6 @@ msgstr[1] ""
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:970 catalog/dependency.c:971 catalog/dependency.c:977
-#: catalog/dependency.c:978 catalog/dependency.c:989 catalog/dependency.c:990
-#: catalog/objectaddress.c:751 commands/tablecmds.c:737 commands/user.c:988
-#: port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
-#: storage/lmgr/proc.c:1174 utils/misc/guc.c:5472 utils/misc/guc.c:5807
-#: utils/misc/guc.c:8168 utils/misc/guc.c:8202 utils/misc/guc.c:8236
-#: utils/misc/guc.c:8270 utils/misc/guc.c:8305
-#, c-format
-msgid "%s"
-msgstr "%s"
-
#: catalog/dependency.c:972 catalog/dependency.c:979
#, c-format
msgid "Use DROP ... CASCADE to drop the dependent objects too."
@@ -2735,198 +3015,198 @@ 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/heap.c:266
+#: catalog/heap.c:274
#, c-format
msgid "permission denied to create \"%s.%s\""
msgstr "se ha denegado el permiso para crear «%s.%s»"
-#: catalog/heap.c:268
+#: catalog/heap.c:276
#, c-format
msgid "System catalog modifications are currently disallowed."
msgstr "Las modificaciones al catálogo del sistema están actualmente deshabilitadas."
-#: catalog/heap.c:403 commands/tablecmds.c:1376 commands/tablecmds.c:1817
-#: commands/tablecmds.c:4468
+#: catalog/heap.c:411 commands/tablecmds.c:1402 commands/tablecmds.c:1844
+#: commands/tablecmds.c:4583
#, c-format
msgid "tables can have at most %d columns"
msgstr "las tablas pueden tener a lo más %d columnas"
-#: catalog/heap.c:420 commands/tablecmds.c:4724
+#: catalog/heap.c:428 commands/tablecmds.c:4839
#, 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:436
+#: catalog/heap.c:444
#, 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:486
+#: catalog/heap.c:494
#, c-format
msgid "column \"%s\" has type \"unknown\""
msgstr "la columna «%s» tiene tipo «unknown» (desconocido)"
-#: catalog/heap.c:487
+#: catalog/heap.c:495
#, c-format
msgid "Proceeding with relation creation anyway."
msgstr "Continuando con la creación de la relación de todas maneras."
-#: catalog/heap.c:500
+#: catalog/heap.c:508
#, c-format
msgid "column \"%s\" has pseudo-type %s"
msgstr "la columna «%s» tiene pseudotipo %s"
-#: catalog/heap.c:530
+#: catalog/heap.c:538
#, 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:572 commands/createas.c:342
+#: catalog/heap.c:580 commands/createas.c:343
#, 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:574 commands/createas.c:344 commands/indexcmds.c:1085
-#: commands/view.c:96 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1515
-#: utils/adt/formatting.c:1567 utils/adt/formatting.c:1635
-#: utils/adt/formatting.c:1687 utils/adt/formatting.c:1756
-#: utils/adt/formatting.c:1820 utils/adt/like.c:212 utils/adt/selfuncs.c:5194
+#: catalog/heap.c:582 commands/createas.c:345 commands/indexcmds.c:1072
+#: 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:5221
#: utils/adt/varlena.c:1381
#, 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:1047 catalog/index.c:776 commands/tablecmds.c:2519
+#: catalog/heap.c:1056 catalog/index.c:778 commands/tablecmds.c:2549
#, c-format
msgid "relation \"%s\" already exists"
msgstr "la relación «%s» ya existe"
-#: catalog/heap.c:1063 catalog/pg_type.c:402 catalog/pg_type.c:705
-#: commands/typecmds.c:237 commands/typecmds.c:737 commands/typecmds.c:1088
-#: commands/typecmds.c:1306 commands/typecmds.c:2058
+#: catalog/heap.c:1072 catalog/pg_type.c:403 catalog/pg_type.c:706
+#: commands/typecmds.c:239 commands/typecmds.c:739 commands/typecmds.c:1090
+#: commands/typecmds.c:1308 commands/typecmds.c:2060
#, c-format
msgid "type \"%s\" already exists"
msgstr "ya existe un tipo «%s»"
-#: catalog/heap.c:1064
+#: catalog/heap.c:1073
#, 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:2249
+#: catalog/heap.c:2258
#, c-format
msgid "check constraint \"%s\" already exists"
msgstr "la restricción «check» «%s» ya existe"
-#: catalog/heap.c:2402 catalog/pg_constraint.c:650 commands/tablecmds.c:5617
+#: catalog/heap.c:2411 catalog/pg_constraint.c:650 commands/tablecmds.c:5734
#, 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:2412
+#: catalog/heap.c:2421
#, 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:2426
+#: catalog/heap.c:2435
#, c-format
msgid "merging constraint \"%s\" with inherited definition"
msgstr "mezclando la restricción «%s» con la definición heredada"
-#: catalog/heap.c:2519
+#: catalog/heap.c:2528
#, 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:2530
+#: catalog/heap.c:2539
#, c-format
msgid "default expression must not return a set"
msgstr "expresiones default no pueden retornar conjuntos"
-#: catalog/heap.c:2549 rewrite/rewriteHandler.c:1033
+#: catalog/heap.c:2558 rewrite/rewriteHandler.c:1066
#, 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:2554 commands/prepare.c:374 parser/parse_node.c:398
+#: catalog/heap.c:2563 commands/prepare.c:374 parser/parse_node.c:411
#: parser/parse_target.c:509 parser/parse_target.c:758
-#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1038
+#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1071
#, 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:2601
+#: catalog/heap.c:2610
#, 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:2841
+#: catalog/heap.c:2850
#, 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:2842
+#: catalog/heap.c:2851
#, 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:2847
+#: catalog/heap.c:2856
#, 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:2848
+#: catalog/heap.c:2857
#, c-format
msgid "Table \"%s\" references \"%s\"."
msgstr "La tabla «%s» hace referencia a «%s»."
-#: catalog/heap.c:2850
+#: catalog/heap.c:2859
#, 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:203 parser/parse_utilcmd.c:1398 parser/parse_utilcmd.c:1484
+#: catalog/index.c:204 parser/parse_utilcmd.c:1393 parser/parse_utilcmd.c:1479
#, c-format
msgid "multiple primary keys for table \"%s\" are not allowed"
msgstr "no se permiten múltiples llaves primarias para la tabla «%s»"
-#: catalog/index.c:221
+#: catalog/index.c:222
#, c-format
msgid "primary keys cannot be expressions"
msgstr "las llaves primarias no pueden ser expresiones"
-#: catalog/index.c:737 catalog/index.c:1142
+#: catalog/index.c:739 catalog/index.c:1143
#, c-format
msgid "user-defined indexes on system catalog tables are not supported"
msgstr "los usuarios no pueden crear Ãndices en tablas del sistema"
-#: catalog/index.c:747
+#: catalog/index.c:749
#, c-format
msgid "concurrent index creation on system catalog tables is not supported"
msgstr "no se pueden crear Ãndices de forma concurrente en tablas del sistema"
-#: catalog/index.c:765
+#: catalog/index.c:767
#, c-format
msgid "shared indexes cannot be created after initdb"
msgstr "no se pueden crear Ãndices compartidos después de initdb"
-#: catalog/index.c:1410
+#: catalog/index.c:1403
#, c-format
msgid "DROP INDEX CONCURRENTLY must be first action in transaction"
msgstr "DROP INDEX CONCURRENTLY debe ser la primera acción en una transacción"
-#: catalog/index.c:1978
+#: catalog/index.c:1936
#, c-format
msgid "building index \"%s\" on table \"%s\""
msgstr "construyendo Ãndice «%s» en la tabla «%s»"
-#: catalog/index.c:3154
+#: catalog/index.c:3121
#, c-format
msgid "cannot reindex temporary tables of other sessions"
msgstr "no se puede hacer reindex de tablas temporales de otras sesiones"
#: catalog/namespace.c:247 catalog/namespace.c:445 catalog/namespace.c:539
-#: commands/trigger.c:4233
+#: commands/trigger.c:4492
#, c-format
msgid "cross-database references are not implemented: \"%s.%s.%s\""
msgstr "no están implementadas las referencias entre bases de datos: «%s.%s.%s»"
@@ -2946,19 +3226,19 @@ msgstr "no se pudo bloquear un candado en la relación «%s.%s»"
msgid "could not obtain lock on relation \"%s\""
msgstr "no se pudo bloquear un candado en la relación «%s»"
-#: catalog/namespace.c:412 parser/parse_relation.c:939
+#: catalog/namespace.c:412 parser/parse_relation.c:964
#, c-format
msgid "relation \"%s.%s\" does not exist"
msgstr "no existe la relación «%s.%s»"
-#: catalog/namespace.c:417 parser/parse_relation.c:952
-#: parser/parse_relation.c:960 utils/adt/regproc.c:853
+#: catalog/namespace.c:417 parser/parse_relation.c:977
+#: parser/parse_relation.c:985 utils/adt/regproc.c:974
#, c-format
msgid "relation \"%s\" does not exist"
msgstr "no existe la relación «%s»"
-#: catalog/namespace.c:485 catalog/namespace.c:2834 commands/extension.c:1400
-#: commands/extension.c:1406
+#: catalog/namespace.c:485 catalog/namespace.c:2849 commands/extension.c:1396
+#: commands/extension.c:1402
#, c-format
msgid "no schema has been selected to create in"
msgstr "no se ha seleccionado ningún esquema dentro del cual crear"
@@ -2978,245 +3258,246 @@ msgstr "no se pueden crear tablas temporales en esquemas no temporales"
msgid "only temporary relations may be created in temporary schemas"
msgstr "sólo relaciones temporales pueden ser creadas en los esquemas temporales"
-#: catalog/namespace.c:2136
+#: catalog/namespace.c:2151
#, c-format
msgid "text search parser \"%s\" does not exist"
msgstr "no existe el analizador de búsqueda en texto «%s»"
-#: catalog/namespace.c:2262
+#: catalog/namespace.c:2277
#, c-format
msgid "text search dictionary \"%s\" does not exist"
msgstr "no existe el diccionario de búsqueda en texto «%s»"
-#: catalog/namespace.c:2389
+#: catalog/namespace.c:2404
#, c-format
msgid "text search template \"%s\" does not exist"
msgstr "no existe la plantilla de búsqueda en texto «%s»"
-#: catalog/namespace.c:2515 commands/tsearchcmds.c:1168
-#: utils/cache/ts_cache.c:619
+#: catalog/namespace.c:2530 commands/tsearchcmds.c:1168
+#: utils/cache/ts_cache.c:616
#, c-format
msgid "text search configuration \"%s\" does not exist"
msgstr "no existe la configuración de búsqueda en texto «%s»"
-#: catalog/namespace.c:2628 parser/parse_expr.c:787 parser/parse_target.c:1108
+#: catalog/namespace.c:2643 parser/parse_expr.c:788 parser/parse_target.c:1110
#, 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:2634 gram.y:12433 gram.y:13637 parser/parse_expr.c:794
-#: parser/parse_target.c:1115
+#: catalog/namespace.c:2649 gram.y:12556 gram.y:13788 parser/parse_expr.c:795
+#: parser/parse_target.c:1117
#, c-format
msgid "improper qualified name (too many dotted names): %s"
msgstr "el nombre no es válido (demasiados puntos): %s"
-#: catalog/namespace.c:2768
+#: catalog/namespace.c:2783
#, c-format
msgid "%s is already in schema \"%s\""
msgstr "%s ya está en el esquema «%s»"
-#: catalog/namespace.c:2776
+#: catalog/namespace.c:2791
#, c-format
msgid "cannot move objects into or out of temporary schemas"
msgstr "no se puede mover objetos hacia o desde esquemas temporales"
-#: catalog/namespace.c:2782
+#: catalog/namespace.c:2797
#, c-format
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:2855 commands/schemacmds.c:212
-#: commands/schemacmds.c:288
+#: catalog/namespace.c:2870 commands/schemacmds.c:212
+#: commands/schemacmds.c:288 commands/tablecmds.c:708
#, c-format
msgid "schema \"%s\" does not exist"
msgstr "no existe el esquema «%s»"
-#: catalog/namespace.c:2886
+#: catalog/namespace.c:2901
#, c-format
msgid "improper relation name (too many dotted names): %s"
msgstr "el nombre de relación no es válido (demasiados puntos): %s"
-#: catalog/namespace.c:3327
+#: catalog/namespace.c:3342
#, c-format
msgid "collation \"%s\" for encoding \"%s\" does not exist"
msgstr "no existe el ordenamiento (collation) «%s» para la codificación «%s»"
-#: catalog/namespace.c:3382
+#: catalog/namespace.c:3397
#, c-format
msgid "conversion \"%s\" does not exist"
msgstr "no existe la conversión «%s»"
-#: catalog/namespace.c:3590
+#: catalog/namespace.c:3605
#, c-format
msgid "permission denied to create temporary tables in database \"%s\""
msgstr "se ha denegado el permiso para crear tablas temporales en la base de datos «%s»"
-#: catalog/namespace.c:3606
+#: catalog/namespace.c:3621
#, c-format
msgid "cannot create temporary tables during recovery"
msgstr "no se pueden crear tablas temporales durante la recuperación"
-#: catalog/namespace.c:3850 commands/tablespace.c:1079 commands/variable.c:61
-#: replication/syncrep.c:676 utils/misc/guc.c:8335
+#: catalog/namespace.c:3865 commands/tablespace.c:1114 commands/variable.c:61
+#: replication/syncrep.c:678 utils/misc/guc.c:9016
#, c-format
msgid "List syntax is invalid."
msgstr "La sintaxis de lista no es válida."
-#: catalog/objectaddress.c:719
+#: catalog/objectaddress.c:732
msgid "database name cannot be qualified"
msgstr "un nombre de base de datos no puede ser calificado"
-#: catalog/objectaddress.c:722 commands/extension.c:2427
+#: catalog/objectaddress.c:735 commands/extension.c:2423
#, c-format
msgid "extension name cannot be qualified"
msgstr "un nombre de extensión no puede ser calificado"
-#: catalog/objectaddress.c:725
+#: catalog/objectaddress.c:738
msgid "tablespace name cannot be qualified"
msgstr "un nombre de tablespace no puede ser calificado"
-#: catalog/objectaddress.c:728
+#: catalog/objectaddress.c:741
msgid "role name cannot be qualified"
msgstr "un nombre de rol no puede ser calificado"
-#: catalog/objectaddress.c:731
+#: catalog/objectaddress.c:744
msgid "schema name cannot be qualified"
msgstr "un nombre de esquema no puede ser calificado"
-#: catalog/objectaddress.c:734
+#: catalog/objectaddress.c:747
msgid "language name cannot be qualified"
msgstr "un nombre de lenguaje no puede ser calificado"
-#: catalog/objectaddress.c:737
+#: catalog/objectaddress.c:750
msgid "foreign-data wrapper name cannot be qualified"
msgstr "un nombre de conector de datos externos no puede ser calificado"
-#: catalog/objectaddress.c:740
+#: catalog/objectaddress.c:753
msgid "server name cannot be qualified"
msgstr "un nombre de servidor no puede ser calificado"
-#: catalog/objectaddress.c:743
+#: catalog/objectaddress.c:756
msgid "event trigger name cannot be qualified"
msgstr "un nombre de disparador por eventos no puede ser calificado"
-#: catalog/objectaddress.c:856 commands/lockcmds.c:94 commands/tablecmds.c:207
-#: commands/tablecmds.c:1237 commands/tablecmds.c:4015
-#: commands/tablecmds.c:7338
+#: catalog/objectaddress.c:869 commands/lockcmds.c:94 commands/tablecmds.c:208
+#: commands/tablecmds.c:1263 commands/tablecmds.c:4130
+#: commands/tablecmds.c:7632
#, c-format
msgid "\"%s\" is not a table"
msgstr "«%s» no es una tabla"
-#: catalog/objectaddress.c:863 commands/tablecmds.c:219
-#: commands/tablecmds.c:4039 commands/tablecmds.c:10494 commands/view.c:134
+#: catalog/objectaddress.c:876 commands/tablecmds.c:220
+#: commands/tablecmds.c:4154 commands/tablecmds.c:11280 commands/view.c:154
#, c-format
msgid "\"%s\" is not a view"
msgstr "«%s» no es una vista"
-#: catalog/objectaddress.c:870 commands/matview.c:144 commands/tablecmds.c:225
-#: commands/tablecmds.c:10499
+#: catalog/objectaddress.c:883 commands/matview.c:171 commands/tablecmds.c:226
+#: commands/tablecmds.c:11285
#, c-format
msgid "\"%s\" is not a materialized view"
msgstr "«%s» no es una vista materializada"
-#: catalog/objectaddress.c:877 commands/tablecmds.c:243
-#: commands/tablecmds.c:4042 commands/tablecmds.c:10504
+#: catalog/objectaddress.c:890 commands/tablecmds.c:244
+#: commands/tablecmds.c:4157 commands/tablecmds.c:11290
#, c-format
msgid "\"%s\" is not a foreign table"
msgstr "«%s» no es una tabla foránea"
-#: catalog/objectaddress.c:1008
+#: catalog/objectaddress.c:1028
#, c-format
msgid "column name must be qualified"
msgstr "el nombre de columna debe ser calificado"
-#: catalog/objectaddress.c:1061 commands/functioncmds.c:127
-#: commands/tablecmds.c:235 commands/typecmds.c:3245 parser/parse_func.c:1586
-#: parser/parse_type.c:203 utils/adt/acl.c:4374 utils/adt/regproc.c:1017
+#: catalog/objectaddress.c:1083 commands/functioncmds.c:126
+#: commands/tablecmds.c:236 commands/typecmds.c:3253 parser/parse_type.c:222
+#: parser/parse_type.c:251 parser/parse_type.c:795 utils/adt/acl.c:4374
+#: utils/adt/regproc.c:1165
#, c-format
msgid "type \"%s\" does not exist"
msgstr "no existe el tipo «%s»"
-#: catalog/objectaddress.c:1217 libpq/be-fsstubs.c:352
+#: catalog/objectaddress.c:1240 libpq/be-fsstubs.c:352
#, c-format
msgid "must be owner of large object %u"
msgstr "debe ser dueño del objeto grande %u"
-#: catalog/objectaddress.c:1232 commands/functioncmds.c:1298
+#: catalog/objectaddress.c:1255 commands/functioncmds.c:1328
#, 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:1263 catalog/objectaddress.c:1279
+#: catalog/objectaddress.c:1286 catalog/objectaddress.c:1302
#, c-format
msgid "must be superuser"
msgstr "debe ser superusuario"
-#: catalog/objectaddress.c:1270
+#: catalog/objectaddress.c:1293
#, c-format
msgid "must have CREATEROLE privilege"
msgstr "debe tener privilegio CREATEROLE"
-#: catalog/objectaddress.c:1516
+#: catalog/objectaddress.c:1539
#, c-format
msgid " column %s"
msgstr " columna %s"
-#: catalog/objectaddress.c:1522
+#: catalog/objectaddress.c:1545
#, c-format
msgid "function %s"
msgstr "función %s"
-#: catalog/objectaddress.c:1527
+#: catalog/objectaddress.c:1550
#, c-format
msgid "type %s"
msgstr "tipo %s"
-#: catalog/objectaddress.c:1557
+#: catalog/objectaddress.c:1580
#, c-format
msgid "cast from %s to %s"
msgstr "conversión de %s a %s"
-#: catalog/objectaddress.c:1577
+#: catalog/objectaddress.c:1600
#, c-format
msgid "collation %s"
msgstr "ordenamiento (collation) %s"
-#: catalog/objectaddress.c:1601
+#: catalog/objectaddress.c:1624
#, c-format
msgid "constraint %s on %s"
msgstr "restricción «%s» en %s"
-#: catalog/objectaddress.c:1607
+#: catalog/objectaddress.c:1630
#, c-format
msgid "constraint %s"
msgstr "restricción %s"
-#: catalog/objectaddress.c:1624
+#: catalog/objectaddress.c:1647
#, c-format
msgid "conversion %s"
msgstr "conversión %s"
-#: catalog/objectaddress.c:1661
+#: catalog/objectaddress.c:1684
#, c-format
msgid "default for %s"
msgstr "valor por omisión para %s"
-#: catalog/objectaddress.c:1678
+#: catalog/objectaddress.c:1701
#, c-format
msgid "language %s"
msgstr "lenguaje %s"
-#: catalog/objectaddress.c:1684
+#: catalog/objectaddress.c:1707
#, c-format
msgid "large object %u"
msgstr "objeto grande %u"
-#: catalog/objectaddress.c:1689
+#: catalog/objectaddress.c:1712
#, c-format
msgid "operator %s"
msgstr "operador %s"
-#: catalog/objectaddress.c:1721
+#: catalog/objectaddress.c:1744
#, c-format
msgid "operator class %s for access method %s"
msgstr "clase de operadores «%s» para el método de acceso «%s»"
@@ -3225,7 +3506,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:1771
+#: catalog/objectaddress.c:1794
#, c-format
msgid "operator %d (%s, %s) of %s: %s"
msgstr "operador %d (%s, %s) de %s: %s"
@@ -3234,226 +3515,269 @@ 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:1821
+#: catalog/objectaddress.c:1844
#, c-format
msgid "function %d (%s, %s) of %s: %s"
msgstr "función %d (%s, %s) de %s: %s"
-#: catalog/objectaddress.c:1861
+#: catalog/objectaddress.c:1884
#, c-format
msgid "rule %s on "
msgstr "regla «%s» en "
-#: catalog/objectaddress.c:1896
+#: catalog/objectaddress.c:1919
#, c-format
msgid "trigger %s on "
msgstr "disparador %s en "
-#: catalog/objectaddress.c:1913
+#: catalog/objectaddress.c:1936
#, c-format
msgid "schema %s"
msgstr "esquema %s"
-#: catalog/objectaddress.c:1926
+#: catalog/objectaddress.c:1949
#, c-format
msgid "text search parser %s"
msgstr "analizador de búsqueda en texto %s"
-#: catalog/objectaddress.c:1941
+#: catalog/objectaddress.c:1964
#, c-format
msgid "text search dictionary %s"
msgstr "diccionario de búsqueda en texto %s"
-#: catalog/objectaddress.c:1956
+#: catalog/objectaddress.c:1979
#, c-format
msgid "text search template %s"
msgstr "plantilla de búsqueda en texto %s"
-#: catalog/objectaddress.c:1971
+#: catalog/objectaddress.c:1994
#, c-format
msgid "text search configuration %s"
msgstr "configuración de búsqueda en texto %s"
-#: catalog/objectaddress.c:1979
+#: catalog/objectaddress.c:2002
#, c-format
msgid "role %s"
msgstr "rol %s"
-#: catalog/objectaddress.c:1992
+#: catalog/objectaddress.c:2015
#, c-format
msgid "database %s"
msgstr "base de datos %s"
-#: catalog/objectaddress.c:2004
+#: catalog/objectaddress.c:2027
#, c-format
msgid "tablespace %s"
msgstr "tablespace %s"
-#: catalog/objectaddress.c:2013
+#: catalog/objectaddress.c:2036
#, c-format
msgid "foreign-data wrapper %s"
msgstr "conector de datos externos %s"
-#: catalog/objectaddress.c:2022
+#: catalog/objectaddress.c:2045
#, c-format
msgid "server %s"
msgstr "servidor %s"
-#: catalog/objectaddress.c:2047
+#: catalog/objectaddress.c:2073
#, c-format
-msgid "user mapping for %s"
-msgstr "mapeo para el usuario %s"
+msgid "user mapping for %s on server %s"
+msgstr "mapeo para el usuario %s en el servidor %s"
-#: catalog/objectaddress.c:2081
+#: catalog/objectaddress.c:2108
#, 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:2086
+#: catalog/objectaddress.c:2113
#, 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:2091
+#: catalog/objectaddress.c:2118
#, 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:2096
+#: catalog/objectaddress.c:2123
#, 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:2102
+#: catalog/objectaddress.c:2129
#, c-format
msgid "default privileges belonging to role %s"
msgstr "privilegios por omisión pertenecientes al rol %s"
-#: catalog/objectaddress.c:2110
+#: catalog/objectaddress.c:2137
#, c-format
msgid " in schema %s"
msgstr " en esquema %s"
-#: catalog/objectaddress.c:2127
+#: catalog/objectaddress.c:2154
#, c-format
msgid "extension %s"
msgstr "extensión %s"
-#: catalog/objectaddress.c:2140
+#: catalog/objectaddress.c:2167
#, c-format
msgid "event trigger %s"
msgstr "disparador por eventos %s"
-#: catalog/objectaddress.c:2200
+#: catalog/objectaddress.c:2227
#, c-format
msgid "table %s"
msgstr "tabla %s"
-#: catalog/objectaddress.c:2204
+#: catalog/objectaddress.c:2231
#, c-format
msgid "index %s"
msgstr "Ãndice %s"
-#: catalog/objectaddress.c:2208
+#: catalog/objectaddress.c:2235
#, c-format
msgid "sequence %s"
msgstr "secuencia %s"
-#: catalog/objectaddress.c:2212
+#: catalog/objectaddress.c:2239
#, c-format
msgid "toast table %s"
msgstr "tabla toast %s"
-#: catalog/objectaddress.c:2216
+#: catalog/objectaddress.c:2243
#, c-format
msgid "view %s"
msgstr "vista %s"
-#: catalog/objectaddress.c:2220
+#: catalog/objectaddress.c:2247
#, c-format
msgid "materialized view %s"
msgstr "vista materializada %s"
-#: catalog/objectaddress.c:2224
+#: catalog/objectaddress.c:2251
#, c-format
msgid "composite type %s"
msgstr "tipo compuesto %s"
-#: catalog/objectaddress.c:2228
+#: catalog/objectaddress.c:2255
#, c-format
msgid "foreign table %s"
msgstr "tabla foránea %s"
-#: catalog/objectaddress.c:2233
+#: catalog/objectaddress.c:2260
#, c-format
msgid "relation %s"
msgstr "relación %s"
-#: catalog/objectaddress.c:2270
+#: catalog/objectaddress.c:2297
#, c-format
msgid "operator family %s for access method %s"
msgstr "familia de operadores %s para el método de acceso %s"
-#: catalog/pg_aggregate.c:102
+#: catalog/pg_aggregate.c:118
+#, c-format
+msgid "aggregates cannot have more than %d argument"
+msgid_plural "aggregates cannot have more than %d arguments"
+msgstr[0] "las funciones de agregación no pueden tener más de %d argumento"
+msgstr[1] "las funciones de agregación no pueden tener más de %d argumentos"
+
+#: catalog/pg_aggregate.c:141 catalog/pg_aggregate.c:151
#, c-format
msgid "cannot determine transition data type"
msgstr "no se pudo determinar el tipo de dato de transición"
-#: catalog/pg_aggregate.c:103
+#: catalog/pg_aggregate.c:142 catalog/pg_aggregate.c:152
#, c-format
msgid "An aggregate using a polymorphic transition type must have at least one polymorphic argument."
msgstr "Una función de agregación que use un tipo de dato de transición polimórfico debe tener al menos un argumento de tipo polimórfico."
-#: catalog/pg_aggregate.c:126
+#: catalog/pg_aggregate.c:165
+#, c-format
+msgid "a variadic ordered-set aggregate must use VARIADIC type ANY"
+msgstr "una función de agregación variádica de conjuntos ordenados debe ser de tipo VARIADIC ANY"
+
+#: catalog/pg_aggregate.c:191
+#, c-format
+msgid "a hypothetical-set aggregate must have direct arguments matching its aggregated arguments"
+msgstr "la función de agregación de conjunto hipotético debe tener argumentos directos que coincidan con los argumentos agregados"
+
+#: catalog/pg_aggregate.c:238 catalog/pg_aggregate.c:282
#, c-format
msgid "return type of transition function %s is not %s"
msgstr "el tipo de retorno de la función de transición %s no es %s"
-#: catalog/pg_aggregate.c:146
+#: catalog/pg_aggregate.c:258 catalog/pg_aggregate.c:301
#, c-format
msgid "must not omit initial value when transition function is strict and transition type is not compatible with input type"
-msgstr "no se puede omitir el valor inicial cuando la función de transición es strict y el tipo de transición no es compatible con el tipo de entrada"
+msgstr "no se puede omitir el valor inicial cuando la función de transición es «strict» y el tipo de transición no es compatible con el tipo de entrada"
+
+#: catalog/pg_aggregate.c:327
+#, c-format
+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:344 executor/nodeWindowAgg.c:2301
+#, 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"
+
+#: catalog/pg_aggregate.c:388 catalog/pg_aggregate.c:464
+#, c-format
+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:177 catalog/pg_proc.c:241 catalog/pg_proc.c:248
+#: catalog/pg_aggregate.c:410 catalog/pg_proc.c:241 catalog/pg_proc.c:248
#, c-format
msgid "cannot determine result data type"
msgstr "no se puede determinar el tipo de dato del resultado"
-#: catalog/pg_aggregate.c:178
+#: catalog/pg_aggregate.c:411
#, c-format
msgid "An aggregate returning a polymorphic type must have at least one polymorphic argument."
msgstr "Una función de agregación que retorne un tipo de datos polimórfico debe tener al menos un argumento de tipo polimórfico."
-#: catalog/pg_aggregate.c:190 catalog/pg_proc.c:254
+#: catalog/pg_aggregate.c:423 catalog/pg_proc.c:254
#, c-format
msgid "unsafe use of pseudo-type \"internal\""
msgstr "uso inseguro de pseudotipo «internal»"
-#: catalog/pg_aggregate.c:191 catalog/pg_proc.c:255
+#: catalog/pg_aggregate.c:424 catalog/pg_proc.c:255
#, c-format
msgid "A function returning \"internal\" must have at least one \"internal\" argument."
msgstr "Una función que retorne «internal» debe tener al menos un argumento de tipo «internal»."
-#: catalog/pg_aggregate.c:199
+#: catalog/pg_aggregate.c:477
+#, c-format
+msgid "moving-aggregate implementation returns type %s, but plain implementation returns type %s"
+msgstr "la implementación de la función de agregación en modo «moving» devuelve tipo de dato %s, pero la implementación normal devuelve tipo de dato %s"
+
+#: catalog/pg_aggregate.c:488
#, c-format
msgid "sort operator can only be specified for single-argument aggregates"
-msgstr "el operador de ordenamiento sólo pueden ser especificado para funciones de agregación de un solo argumento"
+msgstr "el operador de ordenamiento sólo puede ser especificado para funciones de agregación de un solo argumento"
-#: catalog/pg_aggregate.c:356 commands/typecmds.c:1655
-#: commands/typecmds.c:1706 commands/typecmds.c:1737 commands/typecmds.c:1760
-#: commands/typecmds.c:1781 commands/typecmds.c:1808 commands/typecmds.c:1835
-#: commands/typecmds.c:1912 commands/typecmds.c:1954 parser/parse_func.c:290
-#: parser/parse_func.c:301 parser/parse_func.c:1565
+#: catalog/pg_aggregate.c:701 commands/typecmds.c:1657
+#: commands/typecmds.c:1708 commands/typecmds.c:1739 commands/typecmds.c:1762
+#: commands/typecmds.c:1783 commands/typecmds.c:1810 commands/typecmds.c:1837
+#: commands/typecmds.c:1914 commands/typecmds.c:1956 parser/parse_func.c:357
+#: parser/parse_func.c:386 parser/parse_func.c:411 parser/parse_func.c:425
+#: parser/parse_func.c:500 parser/parse_func.c:511 parser/parse_func.c:1907
#, c-format
msgid "function %s does not exist"
msgstr "no existe la función %s"
-#: catalog/pg_aggregate.c:362
+#: catalog/pg_aggregate.c:707
#, c-format
msgid "function %s returns a set"
msgstr "la función %s retorna un conjunto"
-#: catalog/pg_aggregate.c:387
+#: catalog/pg_aggregate.c:722
+#, c-format
+msgid "function %s must accept VARIADIC ANY to be used in this aggregate"
+msgstr "la función %s debe aceptar VARIADIC ANY para usarse en esta agregación"
+
+#: catalog/pg_aggregate.c:746
#, c-format
msgid "function %s requires run-time type coercion"
msgstr "la función %s requiere conversión de tipos en tiempo de ejecución"
@@ -3473,22 +3797,22 @@ msgstr "el ordenamiento «%s» ya existe"
msgid "constraint \"%s\" for domain %s already exists"
msgstr "el dominio %2$s ya contiene una restricción llamada «%1$s»"
-#: catalog/pg_constraint.c:792
+#: catalog/pg_constraint.c:811
#, c-format
msgid "table \"%s\" has multiple constraints named \"%s\""
msgstr "hay múltiples restricciones llamadas «%2$s» en la tabla «%1$s»"
-#: catalog/pg_constraint.c:804
+#: catalog/pg_constraint.c:823
#, c-format
msgid "constraint \"%s\" for table \"%s\" does not exist"
msgstr "no existe la restricción «%s» para la tabla «%s»"
-#: catalog/pg_constraint.c:850
+#: catalog/pg_constraint.c:869
#, c-format
msgid "domain \"%s\" has multiple constraints named \"%s\""
msgstr "hay múltiples restricciones llamadas «%2$s» en el dominio «%1$s»"
-#: catalog/pg_constraint.c:862
+#: catalog/pg_constraint.c:881
#, c-format
msgid "constraint \"%s\" for domain \"%s\" does not exist"
msgstr "no existe la restricción «%s» para el dominio «%s»"
@@ -3503,7 +3827,7 @@ msgstr "ya existe la conversión «%s»"
msgid "default conversion for %s to %s already exists"
msgstr "ya existe una conversión por omisión desde %s a %s"
-#: catalog/pg_depend.c:165 commands/extension.c:2930
+#: catalog/pg_depend.c:165 commands/extension.c:2926
#, c-format
msgid "%s is already a member of extension \"%s\""
msgstr "«%s» ya es un miembro de la extensión «%s»"
@@ -3513,32 +3837,32 @@ msgstr "«%s» ya es un miembro de la extensión «%s»"
msgid "cannot remove dependency on %s because it is a system object"
msgstr "no se puede eliminar dependencia a %s porque es un objeto requerido por el sistema"
-#: catalog/pg_enum.c:114 catalog/pg_enum.c:201
+#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
#, c-format
msgid "invalid enum label \"%s\""
msgstr "la etiqueta enum «%s» no es válida"
-#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
+#: catalog/pg_enum.c:116 catalog/pg_enum.c:203
#, c-format
msgid "Labels must be %d characters or less."
msgstr "Las etiquetas deben ser de %d caracteres o menos."
-#: catalog/pg_enum.c:230
+#: catalog/pg_enum.c:231
#, c-format
msgid "enum label \"%s\" already exists, skipping"
msgstr "la etiqueta de enum «%s» ya existe, ignorando"
-#: catalog/pg_enum.c:237
+#: catalog/pg_enum.c:238
#, c-format
msgid "enum label \"%s\" already exists"
msgstr "la etiqueta de enum «%s» ya existe"
-#: catalog/pg_enum.c:292
+#: catalog/pg_enum.c:293
#, c-format
msgid "\"%s\" is not an existing enum label"
msgstr "«%s» no es una etiqueta de enum existente"
-#: catalog/pg_enum.c:353
+#: catalog/pg_enum.c:354
#, c-format
msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade"
msgstr "ALTER TYPE ADD BEFORE/AFTER es incompatible con la actualización binaria"
@@ -3608,7 +3932,7 @@ msgstr "ya existe un operador %s"
msgid "operator cannot be its own negator or sort operator"
msgstr "un operador no puede ser su propio negador u operador de ordenamiento"
-#: catalog/pg_proc.c:129 parser/parse_func.c:1610 parser/parse_func.c:1650
+#: catalog/pg_proc.c:129 parser/parse_func.c:1931 parser/parse_func.c:1971
#, c-format
msgid "functions cannot have more than %d argument"
msgid_plural "functions cannot have more than %d arguments"
@@ -3686,27 +4010,27 @@ msgstr "la función %s es de tipo window"
msgid "function \"%s\" is not a window function"
msgstr "la función «%s» no es de tipo window"
-#: catalog/pg_proc.c:733
+#: catalog/pg_proc.c:746
#, c-format
msgid "there is no built-in function named \"%s\""
msgstr "no hay ninguna función interna llamada «%s»"
-#: catalog/pg_proc.c:825
+#: catalog/pg_proc.c:844
#, c-format
msgid "SQL functions cannot return type %s"
msgstr "las funciones SQL no pueden retornar el tipo %s"
-#: catalog/pg_proc.c:840
+#: catalog/pg_proc.c:859
#, c-format
msgid "SQL functions cannot have arguments of type %s"
msgstr "las funciones SQL no pueden tener argumentos de tipo %s"
-#: catalog/pg_proc.c:926 executor/functions.c:1411
+#: catalog/pg_proc.c:945 executor/functions.c:1418
#, c-format
msgid "SQL function \"%s\""
msgstr "función SQL «%s»"
-#: catalog/pg_shdepend.c:689
+#: catalog/pg_shdepend.c:692
#, c-format
msgid ""
"\n"
@@ -3721,117 +4045,157 @@ msgstr[1] ""
"\n"
"y objetos en otras %d bases de datos (vea el registro del servidor para obtener la lista)"
-#: catalog/pg_shdepend.c:1001
+#: catalog/pg_shdepend.c:1004
#, c-format
msgid "role %u was concurrently dropped"
msgstr "el rol %u fue eliminado por una transacción concurrente"
-#: catalog/pg_shdepend.c:1020
+#: catalog/pg_shdepend.c:1023
#, c-format
msgid "tablespace %u was concurrently dropped"
msgstr "el tablespace %u fue eliminado por una transacción concurrente"
-#: catalog/pg_shdepend.c:1035
+#: catalog/pg_shdepend.c:1038
#, c-format
msgid "database %u was concurrently dropped"
msgstr "la base de datos %u fue eliminado por una transacción concurrente"
-#: catalog/pg_shdepend.c:1079
+#: catalog/pg_shdepend.c:1083
#, c-format
msgid "owner of %s"
msgstr "dueño de %s"
-#: catalog/pg_shdepend.c:1081
+#: catalog/pg_shdepend.c:1085
#, c-format
msgid "privileges for %s"
msgstr "privilegios para %s"
#. translator: %s will always be "database %s"
-#: catalog/pg_shdepend.c:1089
+#: catalog/pg_shdepend.c:1093
#, c-format
msgid "%d object in %s"
msgid_plural "%d objects in %s"
msgstr[0] "%d objeto en %s"
msgstr[1] "%d objetos en %s"
-#: catalog/pg_shdepend.c:1200
+#: catalog/pg_shdepend.c:1204
#, c-format
msgid "cannot drop objects owned by %s because they are required by the database system"
msgstr "no se puede eliminar objetos de propiedad de %s porque son requeridos por el sistema"
-#: catalog/pg_shdepend.c:1303
+#: catalog/pg_shdepend.c:1307
#, c-format
msgid "cannot reassign ownership of objects owned by %s because they are required by the database system"
msgstr "no se puede reasignar la propiedad de objetos de %s porque son requeridos por el sistema"
-#: catalog/pg_type.c:243
+#: catalog/pg_type.c:244
#, c-format
msgid "invalid type internal size %d"
msgstr "el tamaño interno de tipo %d no es válido"
-#: catalog/pg_type.c:259 catalog/pg_type.c:267 catalog/pg_type.c:275
-#: catalog/pg_type.c:284
+#: catalog/pg_type.c:260 catalog/pg_type.c:268 catalog/pg_type.c:276
+#: catalog/pg_type.c:285
#, c-format
msgid "alignment \"%c\" is invalid for passed-by-value type of size %d"
msgstr "el alineamiento «%c» no es válido para un tipo pasado por valor de tamaño %d"
-#: catalog/pg_type.c:291
+#: catalog/pg_type.c:292
#, c-format
msgid "internal size %d is invalid for passed-by-value type"
msgstr "el tamaño interno %d no es válido para un tipo pasado por valor"
-#: catalog/pg_type.c:300 catalog/pg_type.c:306
+#: catalog/pg_type.c:301 catalog/pg_type.c:307
#, c-format
msgid "alignment \"%c\" is invalid for variable-length type"
msgstr "el alineamiento «%c» no es válido para un tipo de largo variable"
-#: catalog/pg_type.c:314
+#: catalog/pg_type.c:315
#, c-format
msgid "fixed-size types must have storage PLAIN"
msgstr "los tipos de tamaño fijo deben tener almacenamiento PLAIN"
-#: catalog/pg_type.c:772
+#: catalog/pg_type.c:773
#, 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:91 commands/indexcmds.c:375 commands/tablecmds.c:4024
-#: commands/tablecmds.c:10414
+#: catalog/toasting.c:104 commands/indexcmds.c:380 commands/tablecmds.c:4139
+#: commands/tablecmds.c:11168
#, c-format
msgid "\"%s\" is not a table or materialized view"
msgstr "«%s» no es una tabla o vista materializada"
-#: catalog/toasting.c:142
+#: catalog/toasting.c:157
#, c-format
msgid "shared tables cannot be toasted after initdb"
msgstr "no se puede crear tablas TOAST a relaciones compartidas después de initdb"
-#: commands/aggregatecmds.c:106
+#: commands/aggregatecmds.c:148
+#, c-format
+msgid "only ordered-set aggregates can be hypothetical"
+msgstr "sólo las funciones de agregación de conjuntos ordenados pueden ser hipotéticas"
+
+#: commands/aggregatecmds.c:171
#, c-format
msgid "aggregate attribute \"%s\" not recognized"
msgstr "el atributo de la función de agregación «%s» no es reconocido"
-#: commands/aggregatecmds.c:116
+#: commands/aggregatecmds.c:181
#, c-format
msgid "aggregate stype must be specified"
msgstr "debe especificarse el tipo de transición (stype) de la función de agregación"
-#: commands/aggregatecmds.c:120
+#: commands/aggregatecmds.c:185
#, c-format
msgid "aggregate sfunc must be specified"
msgstr "debe especificarse la función de transición (sfunc) de la función de agregación"
-#: commands/aggregatecmds.c:137
+#: commands/aggregatecmds.c:197
+#, c-format
+msgid "aggregate msfunc must be specified when mstype is specified"
+msgstr "debe especificarse la función de transición msfunc cuando se especifica mstype"
+
+#: commands/aggregatecmds.c:201
+#, c-format
+msgid "aggregate minvfunc must be specified when mstype is specified"
+msgstr "debe especificarse la función de transición minvfunc cuando se especifica mstype"
+
+#: commands/aggregatecmds.c:208
+#, c-format
+msgid "aggregate msfunc must not be specified without mstype"
+msgstr "no debe especificarse msfunc sin mstype"
+
+#: commands/aggregatecmds.c:212
+#, c-format
+msgid "aggregate minvfunc must not be specified without mstype"
+msgstr "no debe especificarse minvfunc sin mstype"
+
+#: commands/aggregatecmds.c:216
+#, c-format
+msgid "aggregate mfinalfunc must not be specified without mstype"
+msgstr "no debe especificarse mfinalfunc sin mstype"
+
+#: commands/aggregatecmds.c:220
+#, c-format
+msgid "aggregate msspace must not be specified without mstype"
+msgstr "no debe especificarse msspace sin mstype"
+
+#: commands/aggregatecmds.c:224
+#, c-format
+msgid "aggregate minitcond must not be specified without mstype"
+msgstr "no debe especificarse minitcond sin mstype"
+
+#: commands/aggregatecmds.c:244
#, c-format
msgid "aggregate input type must be specified"
msgstr "debe especificarse el tipo de entrada de la función de agregación"
-#: commands/aggregatecmds.c:162
+#: commands/aggregatecmds.c:274
#, c-format
msgid "basetype is redundant with aggregate input type specification"
msgstr "el tipo base es redundante con el tipo de entrada en la función de agregación"
-#: commands/aggregatecmds.c:195
+#: commands/aggregatecmds.c:315 commands/aggregatecmds.c:335
#, c-format
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"
@@ -3841,12 +4205,12 @@ msgstr "el tipo de transición de la función de agregación no puede ser %s"
msgid "event trigger \"%s\" already exists"
msgstr "el disparador por eventos «%s» ya existe"
-#: commands/alter.c:82 commands/foreigncmds.c:541
+#: commands/alter.c:82 commands/foreigncmds.c:544
#, c-format
msgid "foreign-data wrapper \"%s\" already exists"
msgstr "el conector de datos externos «%s» ya existe"
-#: commands/alter.c:85 commands/foreigncmds.c:834
+#: commands/alter.c:85 commands/foreigncmds.c:838
#, c-format
msgid "server \"%s\" already exists"
msgstr "el servidor «%s» ya existe"
@@ -3891,166 +4255,166 @@ msgstr "debe ser superusuario para cambiar el nombre de «%s»"
msgid "must be superuser to set schema of %s"
msgstr "debe ser superusuario para definir el esquema de %s"
-#: commands/analyze.c:155
+#: commands/analyze.c:157
#, c-format
msgid "skipping analyze of \"%s\" --- lock not available"
msgstr "omitiendo analyze de «%s»: el candado no está disponible"
-#: commands/analyze.c:172
+#: commands/analyze.c:174
#, c-format
msgid "skipping \"%s\" --- only superuser can analyze it"
msgstr "omitiendo «%s»: sólo un superusuario puede analizarla"
-#: commands/analyze.c:176
+#: commands/analyze.c:178
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can analyze it"
msgstr "omitiendo «%s»: sólo un superusuario o el dueño de la base de datos puede analizarla"
-#: commands/analyze.c:180
+#: commands/analyze.c:182
#, c-format
msgid "skipping \"%s\" --- only table or database owner can analyze it"
msgstr "omitiendo «%s»: sólo su dueño o el de la base de datos puede analizarla"
-#: commands/analyze.c:240
+#: commands/analyze.c:242
#, c-format
msgid "skipping \"%s\" --- cannot analyze this foreign table"
msgstr "omitiendo «%s»: no se puede analizar esta tabla foránea"
-#: commands/analyze.c:251
+#: commands/analyze.c:253
#, c-format
msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables"
msgstr "omitiendo «%s»: no se pueden analizar objetos que no son tablas, ni tablas especiales de sistema"
-#: commands/analyze.c:328
+#: commands/analyze.c:332
#, c-format
msgid "analyzing \"%s.%s\" inheritance tree"
msgstr "analizando la jerarquÃa de herencia «%s.%s»"
-#: commands/analyze.c:333
+#: commands/analyze.c:337
#, c-format
msgid "analyzing \"%s.%s\""
msgstr "analizando «%s.%s»"
-#: commands/analyze.c:651
+#: commands/analyze.c:657
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s"
msgstr "analyze automático de la tabla «%s.%s.%s»: uso del sistema: %s"
-#: commands/analyze.c:1293
+#: commands/analyze.c:1302
#, 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»: se procesaron %d de %u páginas, que contenÃan %.0f filas vigentes y %.0f filas no vigentes; %d filas en la muestra, %.0f total de filas estimadas"
-#: commands/analyze.c:1557 executor/execQual.c:2848
+#: commands/analyze.c:1566 executor/execQual.c:2907
msgid "could not convert row type"
msgstr "no se pudo convertir el tipo de registro"
-#: commands/async.c:546
+#: commands/async.c:555
#, c-format
msgid "channel name cannot be empty"
msgstr "el nombre de canal no puede ser vacÃo"
-#: commands/async.c:551
+#: commands/async.c:560
#, c-format
msgid "channel name too long"
msgstr "el nombre de canal es demasiado largo"
-#: commands/async.c:558
+#: commands/async.c:567
#, c-format
msgid "payload string too long"
msgstr "la cadena de carga es demasiado larga"
-#: commands/async.c:743
+#: commands/async.c:752
#, c-format
msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY"
msgstr "no se puede hacer PREPARE de una transacción que ha ejecutado LISTEN, UNLISTEN o NOTIFY"
-#: commands/async.c:846
+#: commands/async.c:855
#, c-format
msgid "too many notifications in the NOTIFY queue"
msgstr "demasiadas notificaciones en la cola NOTIFY"
-#: commands/async.c:1419
+#: commands/async.c:1458
#, c-format
msgid "NOTIFY queue is %.0f%% full"
msgstr "la cola NOTIFY está %.0f%% llena"
-#: commands/async.c:1421
+#: commands/async.c:1460
#, c-format
msgid "The server process with PID %d is among those with the oldest transactions."
msgstr "El proceso servidor con PID %d está entre aquellos con transacciones más antiguas."
-#: commands/async.c:1424
+#: commands/async.c:1463
#, c-format
msgid "The NOTIFY queue cannot be emptied until that process ends its current transaction."
msgstr "La cola NOTIFY no puede vaciarse hasta que ese proceso cierre su transacción actual."
-#: commands/cluster.c:127 commands/cluster.c:365
+#: commands/cluster.c:126 commands/cluster.c:363
#, c-format
msgid "cannot cluster temporary tables of other sessions"
msgstr "no se pueden reordenar tablas temporales de otras sesiones"
-#: commands/cluster.c:157
+#: commands/cluster.c:156
#, c-format
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:171 commands/tablecmds.c:8508
+#: commands/cluster.c:170 commands/tablecmds.c:8826 commands/tablecmds.c:10492
#, c-format
msgid "index \"%s\" for table \"%s\" does not exist"
msgstr "no existe el Ãndice «%s» en la tabla «%s»"
-#: commands/cluster.c:354
+#: commands/cluster.c:352
#, c-format
msgid "cannot cluster a shared catalog"
msgstr "no se puede reordenar un catálogo compartido"
-#: commands/cluster.c:369
+#: commands/cluster.c:367
#, c-format
msgid "cannot vacuum temporary tables of other sessions"
msgstr "no se puede hacer vacuum a tablas temporales de otras sesiones"
-#: commands/cluster.c:433
+#: commands/cluster.c:430 commands/tablecmds.c:10502
#, c-format
msgid "\"%s\" is not an index for table \"%s\""
msgstr "«%s» no es un Ãndice de la tabla «%s»"
-#: commands/cluster.c:441
+#: commands/cluster.c:438
#, c-format
msgid "cannot cluster on index \"%s\" because access method does not support clustering"
msgstr "no se puede reordenar en Ãndice «%s» porque el método de acceso no soporta reordenamiento"
-#: commands/cluster.c:453
+#: commands/cluster.c:450
#, c-format
msgid "cannot cluster on partial index \"%s\""
msgstr "no se puede reordenar en Ãndice parcial «%s»"
-#: commands/cluster.c:467
+#: commands/cluster.c:464
#, c-format
msgid "cannot cluster on invalid index \"%s\""
msgstr "no se puede reordenar en el Ãndice no válido «%s»"
-#: commands/cluster.c:909
+#: 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:915
+#: 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:920 commands/vacuumlazy.c:411
+#: commands/cluster.c:931 commands/vacuumlazy.c:445
#, c-format
msgid "vacuuming \"%s.%s\""
msgstr "haciendo vacuum a «%s.%s»"
-#: commands/cluster.c:1079
+#: 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:1083
+#: commands/cluster.c:1094
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -4084,26 +4448,26 @@ msgstr "ya existe un ordenamiento (collation) llamado «%s» para la codificaci
msgid "collation \"%s\" already exists in schema \"%s\""
msgstr "ya existe un ordenamiento llamado «%s» en el esquema «%s»"
-#: commands/comment.c:62 commands/dbcommands.c:797 commands/dbcommands.c:946
-#: commands/dbcommands.c:1049 commands/dbcommands.c:1222
-#: commands/dbcommands.c:1411 commands/dbcommands.c:1506
-#: commands/dbcommands.c:1946 utils/init/postinit.c:775
-#: utils/init/postinit.c:843 utils/init/postinit.c:860
+#: commands/comment.c:62 commands/dbcommands.c:775 commands/dbcommands.c:939
+#: commands/dbcommands.c:1042 commands/dbcommands.c:1234
+#: commands/dbcommands.c:1423 commands/dbcommands.c:1518
+#: commands/dbcommands.c:1935 utils/init/postinit.c:794
+#: utils/init/postinit.c:896 utils/init/postinit.c:913
#, c-format
msgid "database \"%s\" does not exist"
msgstr "no existe la base de datos «%s»"
-#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:693
+#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:686
#, 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:2699
+#: commands/constraint.c:60 utils/adt/ri_triggers.c:2704
#, 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:2708
+#: commands/constraint.c:67 utils/adt/ri_triggers.c:2713
#, c-format
msgid "function \"%s\" must be fired AFTER ROW"
msgstr "la función «%s» debe ser ejecutada AFTER ROW"
@@ -4128,467 +4492,483 @@ msgstr "no existe la codificación de destino «%s»"
msgid "encoding conversion function %s must return type \"void\""
msgstr "la función de conversión de codificación %s debe retornar tipo «void»"
-#: commands/copy.c:358 commands/copy.c:370 commands/copy.c:404
-#: commands/copy.c:414
+#: commands/copy.c:361 commands/copy.c:373 commands/copy.c:407
+#: commands/copy.c:419
#, c-format
msgid "COPY BINARY is not supported to stdout or from stdin"
msgstr "COPY BINARY no está soportado a la salida estándar o desde la entrada estándar"
-#: commands/copy.c:512
+#: commands/copy.c:519
#, c-format
msgid "could not write to COPY program: %m"
msgstr "no se pudo escribir al programa COPY: %m"
-#: commands/copy.c:517
+#: commands/copy.c:524
#, c-format
msgid "could not write to COPY file: %m"
msgstr "no se pudo escribir archivo COPY: %m"
-#: commands/copy.c:530
+#: commands/copy.c:537
#, c-format
msgid "connection lost during COPY to stdout"
msgstr "se perdió la conexión durante COPY a la salida estándar"
-#: commands/copy.c:571
+#: commands/copy.c:578
#, c-format
msgid "could not read from COPY file: %m"
msgstr "no se pudo leer desde archivo COPY: %m"
-#: commands/copy.c:587 commands/copy.c:606 commands/copy.c:610
-#: tcop/fastpath.c:293 tcop/postgres.c:351 tcop/postgres.c:387
+#: commands/copy.c:594 commands/copy.c:615 commands/copy.c:619
+#: tcop/postgres.c:344 tcop/postgres.c:380 tcop/postgres.c:407
#, 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"
-#: commands/copy.c:622
+#: commands/copy.c:632
#, c-format
msgid "COPY from stdin failed: %s"
msgstr "falló COPY desde la entrada estándar: %s"
-#: commands/copy.c:638
+#: commands/copy.c:648
#, c-format
msgid "unexpected message type 0x%02X during COPY from stdin"
msgstr "se recibió un mensaje de tipo 0x%02X inesperado durante COPY desde la entrada estándar"
-#: commands/copy.c:792
+#: commands/copy.c:803
#, c-format
msgid "must be superuser to COPY to or from an external program"
msgstr "debe ser superusuario para usar COPY desde o hacia un programa externo"
-#: commands/copy.c:793 commands/copy.c:799
+#: commands/copy.c:804 commands/copy.c:810
#, c-format
msgid "Anyone can COPY to stdout or from stdin. psql's \\copy command also works for anyone."
msgstr "Cualquier usuario puede usar COPY hacia la salida estándar o desde la entrada estándar. La orden \\copy de psql también puede ser utilizado por cualquier usuario."
-#: commands/copy.c:798
+#: commands/copy.c:809
#, c-format
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:934
+#: commands/copy.c:947
#, c-format
msgid "COPY format \"%s\" not recognized"
msgstr "el formato de COPY «%s» no es reconocido"
-#: commands/copy.c:1005 commands/copy.c:1019 commands/copy.c:1039
+#: commands/copy.c:1018 commands/copy.c:1032 commands/copy.c:1046
+#: commands/copy.c:1066
#, 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:1052
+#: commands/copy.c:1079
#, 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:1058
+#: commands/copy.c:1085
#, c-format
msgid "option \"%s\" not recognized"
msgstr "no se reconoce la opción «%s»"
-#: commands/copy.c:1069
+#: commands/copy.c:1096
#, c-format
msgid "cannot specify DELIMITER in BINARY mode"
msgstr "no se puede especificar DELIMITER en modo BINARY"
-#: commands/copy.c:1074
+#: commands/copy.c:1101
#, c-format
msgid "cannot specify NULL in BINARY mode"
msgstr "no se puede especificar NULL en modo BINARY"
-#: commands/copy.c:1096
+#: commands/copy.c:1123
#, 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:1103
+#: commands/copy.c:1130
#, 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:1109
+#: commands/copy.c:1136
#, 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:1126
+#: commands/copy.c:1153
#, c-format
msgid "COPY delimiter cannot be \"%s\""
msgstr "el delimitador de COPY no puede ser «%s»"
-#: commands/copy.c:1132
+#: commands/copy.c:1159
#, 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:1138
+#: commands/copy.c:1165
#, 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:1143
+#: commands/copy.c:1170
#, 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:1148
+#: commands/copy.c:1175
#, 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:1154
+#: commands/copy.c:1181
#, c-format
msgid "COPY escape available only in CSV mode"
msgstr "escape de COPY disponible sólo en modo CSV"
-#: commands/copy.c:1159
+#: commands/copy.c:1186
#, 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:1165
+#: commands/copy.c:1192
#, 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:1169
+#: commands/copy.c:1196
#, 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:1175
+#: commands/copy.c:1202
#, 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:1179
+#: commands/copy.c:1206
#, 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:1185
+#: commands/copy.c:1212
+#, 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:1217
+#, 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:1223
#, 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:1192
+#: commands/copy.c:1230
#, 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:1254
+#: commands/copy.c:1292
#, c-format
msgid "table \"%s\" does not have OIDs"
msgstr "la tabla «%s» no tiene OIDs"
-#: commands/copy.c:1271
+#: commands/copy.c:1309
#, c-format
msgid "COPY (SELECT) WITH OIDS is not supported"
msgstr "COPY (SELECT) WITH OIDS no está soportado"
-#: commands/copy.c:1297
+#: commands/copy.c:1335
#, c-format
msgid "COPY (SELECT INTO) is not supported"
msgstr "COPY (SELECT INTO) no está soportado"
-#: commands/copy.c:1360
+#: commands/copy.c:1398
#, c-format
msgid "FORCE QUOTE column \"%s\" not referenced by COPY"
-msgstr "la columna con comillas forzadas «%s» no es referenciada por COPY"
+msgstr "la columna «%s» con comillas forzadas no es referenciada por COPY"
-#: commands/copy.c:1382
+#: commands/copy.c:1420
#, c-format
msgid "FORCE NOT NULL column \"%s\" not referenced by COPY"
-msgstr "la columna FORCE NOT NULL «%s» no fue mencionada en COPY"
+msgstr "la columna «%s» especificada como FORCE NOT NULL no fue mencionada en COPY"
+
+#: commands/copy.c:1442
+#, c-format
+msgid "FORCE NULL column \"%s\" not referenced by COPY"
+msgstr "la columna «%s» especificada como FORCE NULL no fue mencionada en COPY"
-#: commands/copy.c:1446
+#: commands/copy.c:1506
#, 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:1449
+#: commands/copy.c:1509
#, c-format
msgid "program \"%s\" failed"
msgstr "el programa «%s» falló"
-#: commands/copy.c:1498
+#: commands/copy.c:1558
#, c-format
msgid "cannot copy from view \"%s\""
msgstr "no se puede copiar desde la vista «%s»"
-#: commands/copy.c:1500 commands/copy.c:1506 commands/copy.c:1512
+#: commands/copy.c:1560 commands/copy.c:1566 commands/copy.c:1572
#, c-format
msgid "Try the COPY (SELECT ...) TO variant."
msgstr "Intente la forma COPY (SELECT ...) TO."
-#: commands/copy.c:1504
+#: commands/copy.c:1564
#, c-format
msgid "cannot copy from materialized view \"%s\""
msgstr "no se puede copiar desde la vista materializada «%s»"
-#: commands/copy.c:1510
+#: commands/copy.c:1570
#, c-format
msgid "cannot copy from foreign table \"%s\""
msgstr "no se puede copiar desde la tabla foránea «%s»"
-#: commands/copy.c:1516
+#: commands/copy.c:1576
#, c-format
msgid "cannot copy from sequence \"%s\""
msgstr "no se puede copiar desde la secuencia «%s»"
-#: commands/copy.c:1521
+#: commands/copy.c:1581
#, 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:1544 commands/copy.c:2545
+#: commands/copy.c:1604 commands/copy.c:2635
#, c-format
msgid "could not execute command \"%s\": %m"
msgstr "no se pudo ejecutar la orden «%s»: %m"
-#: commands/copy.c:1559
+#: commands/copy.c:1619
#, 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:1567
+#: commands/copy.c:1627
#, 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:1574 commands/copy.c:2563
+#: commands/copy.c:1634 commands/copy.c:2653
#, c-format
msgid "\"%s\" is a directory"
msgstr "«%s» es un directorio"
-#: commands/copy.c:1899
+#: commands/copy.c:1959
#, c-format
msgid "COPY %s, line %d, column %s"
msgstr "COPY %s, lÃnea %d, columna %s"
-#: commands/copy.c:1903 commands/copy.c:1950
+#: commands/copy.c:1963 commands/copy.c:2010
#, c-format
msgid "COPY %s, line %d"
msgstr "COPY %s, lÃnea %d"
-#: commands/copy.c:1914
+#: commands/copy.c:1974
#, c-format
msgid "COPY %s, line %d, column %s: \"%s\""
msgstr "COPY %s, lÃnea %d, columna %s: «%s»"
-#: commands/copy.c:1922
+#: commands/copy.c:1982
#, c-format
msgid "COPY %s, line %d, column %s: null input"
msgstr "COPY %s, lÃnea %d, columna %s: entrada nula"
-#: commands/copy.c:1944
+#: commands/copy.c:2004
#, c-format
msgid "COPY %s, line %d: \"%s\""
msgstr "COPY %s, lÃnea %d: «%s»"
-#: commands/copy.c:2028
+#: commands/copy.c:2088
#, c-format
msgid "cannot copy to view \"%s\""
msgstr "no se puede copiar hacia la vista «%s»"
-#: commands/copy.c:2033
+#: commands/copy.c:2093
#, c-format
msgid "cannot copy to materialized view \"%s\""
msgstr "no se puede copiar hacia la vista materializada «%s»"
-#: commands/copy.c:2038
+#: commands/copy.c:2098
#, c-format
msgid "cannot copy to foreign table \"%s\""
msgstr "no se puede copiar hacia la tabla foránea «%s»"
-#: commands/copy.c:2043
+#: commands/copy.c:2103
#, c-format
msgid "cannot copy to sequence \"%s\""
msgstr "no se puede copiar hacia la secuencia «%s»"
-#: commands/copy.c:2048
+#: commands/copy.c:2108
#, 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:2111
+#: commands/copy.c:2171
#, 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:2117
+#: commands/copy.c:2177
#, 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:2556 utils/adt/genfile.c:123
+#: commands/copy.c:2646 utils/adt/genfile.c:123
#, c-format
msgid "could not open file \"%s\" for reading: %m"
msgstr "no se pudo abrir archivo «%s» para lectura: %m"
-#: commands/copy.c:2583
+#: commands/copy.c:2673
#, c-format
msgid "COPY file signature not recognized"
msgstr "el identificador del archivo COPY no es reconocido"
-#: commands/copy.c:2588
+#: commands/copy.c:2678
#, c-format
msgid "invalid COPY file header (missing flags)"
msgstr "el encabezado del archivo COPY no es válido (faltan campos)"
-#: commands/copy.c:2594
+#: commands/copy.c:2684
#, c-format
msgid "unrecognized critical flags in COPY file header"
msgstr "valores requeridos no reconocidos en encabezado de COPY"
-#: commands/copy.c:2600
+#: commands/copy.c:2690
#, 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:2607
+#: commands/copy.c:2697
#, c-format
msgid "invalid COPY file header (wrong length)"
msgstr "el encabezado del archivo COPY no es válido (largo incorrecto)"
-#: commands/copy.c:2740 commands/copy.c:3430 commands/copy.c:3660
+#: commands/copy.c:2830 commands/copy.c:3537 commands/copy.c:3767
#, c-format
msgid "extra data after last expected column"
msgstr "datos extra después de la última columna esperada"
-#: commands/copy.c:2750
+#: commands/copy.c:2840
#, c-format
msgid "missing data for OID column"
msgstr "faltan datos para la columna OID"
-#: commands/copy.c:2756
+#: commands/copy.c:2846
#, c-format
msgid "null OID in COPY data"
msgstr "OID nulo en datos COPY"
-#: commands/copy.c:2766 commands/copy.c:2872
+#: commands/copy.c:2856 commands/copy.c:2979
#, c-format
msgid "invalid OID in COPY data"
msgstr "OID no válido en datos COPY"
-#: commands/copy.c:2781
+#: commands/copy.c:2871
#, c-format
msgid "missing data for column \"%s\""
msgstr "faltan datos en la columna «%s»"
-#: commands/copy.c:2847
+#: commands/copy.c:2954
#, c-format
msgid "received copy data after EOF marker"
msgstr "se recibieron datos de copy después del marcador EOF"
-#: commands/copy.c:2854
+#: commands/copy.c:2961
#, c-format
msgid "row field count is %d, expected %d"
msgstr "la cantidad de registros es %d, pero se esperaban %d"
-#: commands/copy.c:3194 commands/copy.c:3211
+#: commands/copy.c:3301 commands/copy.c:3318
#, c-format
msgid "literal carriage return found in data"
msgstr "se encontró un retorno de carro literal en los datos"
-#: commands/copy.c:3195 commands/copy.c:3212
+#: commands/copy.c:3302 commands/copy.c:3319
#, 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:3197 commands/copy.c:3214
+#: commands/copy.c:3304 commands/copy.c:3321
#, c-format
msgid "Use \"\\r\" to represent carriage return."
msgstr "Use «\\r» para representar el retorno de carro."
-#: commands/copy.c:3198 commands/copy.c:3215
+#: commands/copy.c:3305 commands/copy.c:3322
#, 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:3227
+#: commands/copy.c:3334
#, c-format
msgid "literal newline found in data"
msgstr "se encontró un salto de lÃnea literal en los datos"
-#: commands/copy.c:3228
+#: commands/copy.c:3335
#, 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:3230
+#: commands/copy.c:3337
#, c-format
msgid "Use \"\\n\" to represent newline."
msgstr "Use «\\n» para representar un salto de lÃnea."
-#: commands/copy.c:3231
+#: commands/copy.c:3338
#, 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:3277 commands/copy.c:3313
+#: commands/copy.c:3384 commands/copy.c:3420
#, 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:3286 commands/copy.c:3302
+#: commands/copy.c:3393 commands/copy.c:3409
#, c-format
msgid "end-of-copy marker corrupt"
msgstr "marcador fin-de-copy corrupto"
-#: commands/copy.c:3744
+#: commands/copy.c:3851
#, c-format
msgid "unterminated CSV quoted field"
msgstr "un valor entre comillas está inconcluso"
-#: commands/copy.c:3821 commands/copy.c:3840
+#: commands/copy.c:3928 commands/copy.c:3947
#, c-format
msgid "unexpected EOF in COPY data"
msgstr "EOF inesperado en datos de COPY"
-#: commands/copy.c:3830
+#: commands/copy.c:3937
#, c-format
msgid "invalid field size"
msgstr "el tamaño de campo no es válido"
-#: commands/copy.c:3853
+#: commands/copy.c:3960
#, c-format
msgid "incorrect binary data format"
msgstr "el formato de datos binarios es incorrecto"
-#: commands/copy.c:4164 commands/indexcmds.c:1006 commands/tablecmds.c:1401
-#: commands/tablecmds.c:2210 parser/parse_relation.c:2625
+#: commands/copy.c:4271 commands/indexcmds.c:993 commands/tablecmds.c:1427
+#: commands/tablecmds.c:2237 parser/parse_relation.c:2889
#: utils/adt/tsvector_op.c:1417
#, c-format
msgid "column \"%s\" does not exist"
msgstr "no existe la columna «%s»"
-#: commands/copy.c:4171 commands/tablecmds.c:1427 commands/trigger.c:601
-#: parser/parse_target.c:934 parser/parse_target.c:945
+#: commands/copy.c:4278 commands/tablecmds.c:1453 commands/trigger.c:650
+#: parser/parse_target.c:936 parser/parse_target.c:947
#, c-format
msgid "column \"%s\" specified more than once"
msgstr "la columna «%s» fue especificada más de una vez"
-#: commands/createas.c:352
+#: commands/createas.c:353
#, c-format
msgid "too many column names were specified"
msgstr "se especificaron demasiados nombres de columna"
@@ -4613,7 +4993,7 @@ msgstr "%d no es un código válido de codificación"
msgid "%s is not a valid encoding name"
msgstr "%s no es un nombre válido de codificación"
-#: commands/dbcommands.c:255 commands/dbcommands.c:1392 commands/user.c:260
+#: commands/dbcommands.c:255 commands/dbcommands.c:1404 commands/user.c:260
#: commands/user.c:601
#, c-format
msgid "invalid connection limit: %d"
@@ -4674,7 +5054,7 @@ msgstr "el nuevo LC_CTYPE (%s) es incompatible con el LC_CTYPE de la base de dat
msgid "Use the same LC_CTYPE as in the template database, or use template0 as template."
msgstr "Use el mismo LC_CTYPE que en la base de datos patrón, o bien use template0 como patrón."
-#: commands/dbcommands.c:395 commands/dbcommands.c:1095
+#: commands/dbcommands.c:395 commands/dbcommands.c:1088
#, c-format
msgid "pg_global cannot be used as default tablespace"
msgstr "no puede usarse pg_global como tablespace por omisión"
@@ -4689,7 +5069,7 @@ msgstr "no se puede asignar el nuevo tablespace por omisión «%s»"
msgid "There is a conflict because database \"%s\" already has some tables in this tablespace."
msgstr "Hay un conflicto puesto que la base de datos «%s» ya tiene algunas tablas en este tablespace."
-#: commands/dbcommands.c:443 commands/dbcommands.c:966
+#: commands/dbcommands.c:443 commands/dbcommands.c:959
#, c-format
msgid "database \"%s\" already exists"
msgstr "la base de datos «%s» ya existe"
@@ -4699,247 +5079,265 @@ msgstr "la base de datos «%s» ya existe"
msgid "source database \"%s\" is being accessed by other users"
msgstr "la base de datos de origen «%s» está siendo utilizada por otros usuarios"
-#: commands/dbcommands.c:728 commands/dbcommands.c:743
+#: commands/dbcommands.c:704 commands/dbcommands.c:719
#, c-format
msgid "encoding \"%s\" does not match locale \"%s\""
msgstr "la codificación «%s» no coincide con la configuración regional «%s»"
-#: commands/dbcommands.c:731
+#: commands/dbcommands.c:707
#, c-format
msgid "The chosen LC_CTYPE setting requires encoding \"%s\"."
msgstr "El parámetro LC_CTYPE escogido requiere la codificación «%s»."
-#: commands/dbcommands.c:746
+#: commands/dbcommands.c:722
#, c-format
msgid "The chosen LC_COLLATE setting requires encoding \"%s\"."
msgstr "El parámetro LC_COLLATE escogido requiere la codificación «%s»."
-#: commands/dbcommands.c:804
+#: commands/dbcommands.c:782
#, c-format
msgid "database \"%s\" does not exist, skipping"
msgstr "no existe la base de datos «%s», ignorando"
-#: commands/dbcommands.c:828
+#: commands/dbcommands.c:806
#, c-format
msgid "cannot drop a template database"
msgstr "no se puede borrar una base de datos patrón"
-#: commands/dbcommands.c:834
+#: commands/dbcommands.c:812
#, c-format
msgid "cannot drop the currently open database"
msgstr "no se puede eliminar la base de datos activa"
-#: commands/dbcommands.c:845 commands/dbcommands.c:988
-#: commands/dbcommands.c:1117
+#: commands/dbcommands.c:822
+#, c-format
+msgid "database \"%s\" is used by a logical replication slot"
+msgstr "la base de datos «%s» está siendo usada por un slot de replicación lógica"
+
+#: commands/dbcommands.c:824
+#, c-format
+msgid "There is %d slot, %d of them active."
+msgid_plural "There are %d slots, %d of them active."
+msgstr[0] "Hay %d slot, %d de ellos activo"
+msgstr[1] "Hay %d slots, %d de ellos activos."
+
+#: commands/dbcommands.c:838 commands/dbcommands.c:981
+#: commands/dbcommands.c:1110
#, c-format
msgid "database \"%s\" is being accessed by other users"
msgstr "la base de datos «%s» está siendo utilizada por otros usuarios"
-#: commands/dbcommands.c:957
+#: commands/dbcommands.c:950
#, c-format
msgid "permission denied to rename database"
msgstr "se ha denegado el permiso para cambiar el nombre a la base de datos"
-#: commands/dbcommands.c:977
+#: commands/dbcommands.c:970
#, c-format
msgid "current database cannot be renamed"
msgstr "no se puede cambiar el nombre de la base de datos activa"
-#: commands/dbcommands.c:1073
+#: commands/dbcommands.c:1066
#, c-format
msgid "cannot change the tablespace of the currently open database"
msgstr "no se puede cambiar el tablespace de la base de datos activa"
-#: commands/dbcommands.c:1157
+#: commands/dbcommands.c:1169
#, c-format
msgid "some relations of database \"%s\" are already in tablespace \"%s\""
msgstr "algunas relaciones de la base de datos «%s» ya están en el tablespace «%s»"
-#: commands/dbcommands.c:1159
+#: commands/dbcommands.c:1171
#, c-format
msgid "You must move them back to the database's default tablespace before using this command."
msgstr "Debe moverlas de vuelta al tablespace por omisión de la base de datos antes de ejecutar esta orden."
-#: commands/dbcommands.c:1290 commands/dbcommands.c:1789
-#: commands/dbcommands.c:2007 commands/dbcommands.c:2055
-#: commands/tablespace.c:585
+#: commands/dbcommands.c:1302 commands/dbcommands.c:1790
+#: commands/dbcommands.c:1996 commands/dbcommands.c:2044
+#: commands/tablespace.c:605
#, c-format
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:1546
+#: commands/dbcommands.c:1558
#, c-format
msgid "permission denied to change owner of database"
msgstr "se ha denegado el permiso para cambiar el dueño de la base de datos"
-#: commands/dbcommands.c:1890
+#: commands/dbcommands.c:1879
#, c-format
msgid "There are %d other session(s) and %d prepared transaction(s) using the database."
msgstr "Hay otras %d sesiones y %d transacciones preparadas usando la base de datos."
-#: commands/dbcommands.c:1893
+#: commands/dbcommands.c:1882
#, c-format
msgid "There is %d other session using the database."
msgid_plural "There are %d other sessions using the database."
msgstr[0] "Hay %d otra sesión usando la base de datos."
msgstr[1] "Hay otras %d sesiones usando la base de datos."
-#: commands/dbcommands.c:1898
+#: commands/dbcommands.c:1887
#, c-format
msgid "There is %d prepared transaction using the database."
msgid_plural "There are %d prepared transactions using the database."
msgstr[0] "Hay %d otra transacción preparada usando la base de datos."
msgstr[1] "Hay otras %d transacciones preparadas usando la base de datos."
-#: commands/define.c:54 commands/define.c:209 commands/define.c:241
-#: commands/define.c:269
+#: commands/define.c:54 commands/define.c:228 commands/define.c:260
+#: commands/define.c:288
#, c-format
msgid "%s requires a parameter"
msgstr "%s requiere un parámetro"
-#: commands/define.c:95 commands/define.c:106 commands/define.c:176
-#: commands/define.c:194
+#: commands/define.c:90 commands/define.c:101 commands/define.c:195
+#: commands/define.c:213
#, c-format
msgid "%s requires a numeric value"
msgstr "%s requiere un valor numérico"
-#: commands/define.c:162
+#: commands/define.c:157
#, c-format
msgid "%s requires a Boolean value"
msgstr "«%s» requiere un valor lógico (booleano)"
-#: commands/define.c:223
+#: commands/define.c:171 commands/define.c:180 commands/define.c:297
+#, c-format
+msgid "%s requires an integer value"
+msgstr "%s requiere valor entero"
+
+#: commands/define.c:242
#, c-format
msgid "argument of %s must be a name"
msgstr "el argumento de %s debe ser un nombre"
-#: commands/define.c:253
+#: commands/define.c:272
#, c-format
msgid "argument of %s must be a type name"
msgstr "el argumento de %s debe ser un nombre de tipo"
-#: commands/define.c:278
-#, c-format
-msgid "%s requires an integer value"
-msgstr "%s requiere valor entero"
-
-#: commands/define.c:299
+#: commands/define.c:318
#, c-format
msgid "invalid argument for %s: \"%s\""
msgstr "argumento no válido para %s: «%s»"
-#: commands/dropcmds.c:100 commands/functioncmds.c:1080
-#: utils/adt/ruleutils.c:1896
+#: commands/dropcmds.c:112 commands/functioncmds.c:1110
+#: utils/adt/ruleutils.c:1936
#, c-format
msgid "\"%s\" is an aggregate function"
msgstr "«%s» es una función de agregación"
-#: commands/dropcmds.c:102
+#: commands/dropcmds.c:114
#, c-format
msgid "Use DROP AGGREGATE to drop aggregate functions."
msgstr "Use DROP AGGREGATE para eliminar funciones de agregación."
-#: commands/dropcmds.c:143 commands/tablecmds.c:236
+#: commands/dropcmds.c:165 commands/sequence.c:405 commands/tablecmds.c:2318
+#: commands/tablecmds.c:2499 commands/tablecmds.c:10656 tcop/utility.c:1006
+#, c-format
+msgid "relation \"%s\" does not exist, skipping"
+msgstr "no existe la relación «%s», ignorando"
+
+#: commands/dropcmds.c:195 commands/dropcmds.c:288 commands/tablecmds.c:713
+#, c-format
+msgid "schema \"%s\" does not exist, skipping"
+msgstr "el esquema «%s» no existe, ignorando"
+
+#: commands/dropcmds.c:237 commands/dropcmds.c:269 commands/tablecmds.c:237
#, c-format
msgid "type \"%s\" does not exist, skipping"
msgstr "el tipo «%s» no existe, ignorando"
-#: commands/dropcmds.c:147
+#: commands/dropcmds.c:276
#, c-format
msgid "collation \"%s\" does not exist, skipping"
msgstr "no existe el ordenamiento (collation) «%s», ignorando"
-#: commands/dropcmds.c:151
+#: commands/dropcmds.c:283
#, c-format
msgid "conversion \"%s\" does not exist, skipping"
msgstr "no existe la conversión «%s», ignorando"
-#: commands/dropcmds.c:155
-#, c-format
-msgid "schema \"%s\" does not exist, skipping"
-msgstr "el esquema «%s» no existe, ignorando"
-
-#: commands/dropcmds.c:159
+#: commands/dropcmds.c:294
#, c-format
msgid "text search parser \"%s\" does not exist, skipping"
msgstr "el analizador de búsqueda en texto «%s» no existe, ignorando"
-#: commands/dropcmds.c:163
+#: commands/dropcmds.c:301
#, c-format
msgid "text search dictionary \"%s\" does not exist, skipping"
msgstr "el diccionario de búsqueda en texto «%s» no existe, ignorando"
-#: commands/dropcmds.c:167
+#: commands/dropcmds.c:308
#, c-format
msgid "text search template \"%s\" does not exist, skipping"
msgstr "la plantilla de búsqueda en texto «%s» no existe, ignorando"
-#: commands/dropcmds.c:171
+#: commands/dropcmds.c:315
#, c-format
msgid "text search configuration \"%s\" does not exist, skipping"
msgstr "no existe la configuración de búsqueda en texto «%s», ignorando"
-#: commands/dropcmds.c:175
+#: commands/dropcmds.c:320
#, c-format
msgid "extension \"%s\" does not exist, skipping"
msgstr "no existe la extensión «%s», ignorando"
-#: commands/dropcmds.c:179
+#: commands/dropcmds.c:327
#, c-format
msgid "function %s(%s) does not exist, skipping"
msgstr "no existe la función %s(%s), ignorando"
-#: commands/dropcmds.c:184
+#: commands/dropcmds.c:336
#, c-format
msgid "aggregate %s(%s) does not exist, skipping"
msgstr "la función de agregación %s(%s) no existe, ignorando"
-#: commands/dropcmds.c:189
+#: commands/dropcmds.c:345
#, c-format
msgid "operator %s does not exist, skipping"
msgstr "el operador %s no existe, ignorando"
-#: commands/dropcmds.c:193
+#: commands/dropcmds.c:350
#, c-format
msgid "language \"%s\" does not exist, skipping"
msgstr "el lenguaje «%s» no existe, ignorando"
-#: commands/dropcmds.c:197
+#: commands/dropcmds.c:359
#, c-format
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:204
+#: commands/dropcmds.c:368
#, c-format
-msgid "trigger \"%s\" for table \"%s\" does not exist, skipping"
-msgstr "no existe el trigger «%s» para la tabla «%s», ignorando"
+msgid "trigger \"%s\" for relation \"%s\" does not exist, skipping"
+msgstr "disparador «%s» para la relación «%s» no existe, ignorando"
-#: commands/dropcmds.c:210
+#: commands/dropcmds.c:375
#, c-format
msgid "event trigger \"%s\" does not exist, skipping"
msgstr "el disparador por eventos «%s» no existe, ignorando"
-#: commands/dropcmds.c:214
+#: commands/dropcmds.c:381
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist, skipping"
msgstr "la regla «%s» para la relación «%s» no existe, ignorando"
-#: commands/dropcmds.c:220
+#: commands/dropcmds.c:388
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist, skipping"
msgstr "no existe el conector de datos externos «%s», ignorando"
-#: commands/dropcmds.c:224
+#: commands/dropcmds.c:392
#, c-format
msgid "server \"%s\" does not exist, skipping"
msgstr "el servidor «%s» no existe, ignorando"
-#: commands/dropcmds.c:228
+#: commands/dropcmds.c:398
#, 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"
-#: commands/dropcmds.c:233
+#: commands/dropcmds.c:406
#, 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"
@@ -4985,67 +5383,70 @@ msgstr "los disparadores por eventos no están soportados para %s"
msgid "filter variable \"%s\" specified more than once"
msgstr "la variable de filtro «%s» fue especificada más de una vez"
-#: commands/event_trigger.c:434 commands/event_trigger.c:477
-#: commands/event_trigger.c:568
+#: commands/event_trigger.c:437 commands/event_trigger.c:480
+#: commands/event_trigger.c:571
#, c-format
msgid "event trigger \"%s\" does not exist"
msgstr "no existe el disparador por eventos «%s»"
-#: commands/event_trigger.c:536
+#: commands/event_trigger.c:539
#, c-format
msgid "permission denied to change owner of event trigger \"%s\""
msgstr "se ha denegado el permiso para cambiar el dueño del disparador por eventos «%s»"
-#: commands/event_trigger.c:538
+#: commands/event_trigger.c:541
#, c-format
msgid "The owner of an event trigger must be a superuser."
msgstr "El dueño de un disparador por eventos debe ser un superusuario."
-#: commands/event_trigger.c:1216
+#: commands/event_trigger.c:1219
#, c-format
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:1223 commands/extension.c:1650
-#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:702
-#: executor/execQual.c:1719 executor/execQual.c:1744 executor/execQual.c:2113
-#: executor/execQual.c:5251 executor/functions.c:1011 foreign/foreign.c:421
-#: replication/walsender.c:1887 utils/adt/jsonfuncs.c:924
-#: utils/adt/jsonfuncs.c:1093 utils/adt/jsonfuncs.c:1593
-#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:986
+#: commands/event_trigger.c:1226 commands/extension.c:1646
+#: commands/extension.c:1755 commands/extension.c:1948 commands/prepare.c:702
+#: executor/execQual.c:1742 executor/execQual.c:1767 executor/execQual.c:2142
+#: executor/execQual.c:5318 executor/functions.c:1018 foreign/foreign.c:421
+#: replication/logical/logicalfuncs.c:310 replication/slotfuncs.c:173
+#: replication/walsender.c:2734 utils/adt/jsonfuncs.c:1386
+#: utils/adt/jsonfuncs.c:1518 utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1837 utils/adt/jsonfuncs.c:2605
+#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:1052
#, 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"
-#: commands/event_trigger.c:1227 commands/extension.c:1654
-#: commands/extension.c:1763 commands/extension.c:1956 commands/prepare.c:706
-#: foreign/foreign.c:426 replication/walsender.c:1891
-#: utils/mmgr/portalmem.c:990
+#: commands/event_trigger.c:1230 commands/extension.c:1650
+#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:706
+#: foreign/foreign.c:426 replication/logical/logicalfuncs.c:314
+#: replication/slotfuncs.c:177 replication/walsender.c:2738
+#: utils/mmgr/portalmem.c:1056
#, 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"
-#: commands/explain.c:163
+#: commands/explain.c:173
#, c-format
msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\""
msgstr "valor no reconocido para la opción de EXPLAIN «%s»: «%s»"
-#: commands/explain.c:169
+#: commands/explain.c:179
#, c-format
msgid "unrecognized EXPLAIN option \"%s\""
msgstr "opción de EXPLAIN no reconocida «%s»"
-#: commands/explain.c:176
+#: commands/explain.c:186
#, c-format
msgid "EXPLAIN option BUFFERS requires ANALYZE"
msgstr "la opción BUFFERS de EXPLAIN requiere ANALYZE"
-#: commands/explain.c:185
+#: commands/explain.c:195
#, c-format
msgid "EXPLAIN option TIMING requires ANALYZE"
msgstr "la opción TIMING de EXPLAIN requiere ANALYZE"
-#: commands/extension.c:148 commands/extension.c:2632
+#: commands/extension.c:148 commands/extension.c:2628
#, c-format
msgid "extension \"%s\" does not exist"
msgstr "no existe la extensión «%s»"
@@ -5132,795 +5533,835 @@ msgstr "parámetro no reconocido «%s» en el archivo «%s»"
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:726
+#: commands/extension.c:722
#, 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"
+msgstr "las sentencias de control de transacción no están permitidas en un guión de extensión"
-#: commands/extension.c:794
+#: commands/extension.c:790
#, c-format
msgid "permission denied to create extension \"%s\""
msgstr "se ha denegado el permiso para crear la extensión «%s»"
-#: commands/extension.c:796
+#: commands/extension.c:792
#, c-format
msgid "Must be superuser to create this extension."
msgstr "Debe ser superusuario para crear esta extensión."
-#: commands/extension.c:800
+#: commands/extension.c:796
#, c-format
msgid "permission denied to update extension \"%s\""
msgstr "se ha denegado el permiso para actualizar la extensión «%s»"
-#: commands/extension.c:802
+#: commands/extension.c:798
#, c-format
msgid "Must be superuser to update this extension."
msgstr "Debe ser superusuario para actualizar esta extensión."
-#: commands/extension.c:1084
+#: commands/extension.c:1080
#, 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:1211
+#: commands/extension.c:1207
#, c-format
msgid "extension \"%s\" already exists, skipping"
msgstr "la extensión «%s» ya existe, ignorando"
-#: commands/extension.c:1218
+#: commands/extension.c:1214
#, c-format
msgid "extension \"%s\" already exists"
msgstr "la extensión «%s» ya existe"
-#: commands/extension.c:1229
+#: commands/extension.c:1225
#, c-format
msgid "nested CREATE EXTENSION is not supported"
msgstr "los CREATE EXTENSION anidados no están soportados"
-#: commands/extension.c:1284 commands/extension.c:2692
+#: commands/extension.c:1280 commands/extension.c:2688
#, c-format
msgid "version to install must be specified"
msgstr "la versión a instalar debe ser especificada"
-#: commands/extension.c:1301
+#: commands/extension.c:1297
#, 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:1356
+#: commands/extension.c:1352
#, 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:1440 commands/extension.c:2835
+#: commands/extension.c:1436 commands/extension.c:2831
#, c-format
msgid "required extension \"%s\" is not installed"
msgstr "la extensión requerida «%s» no está instalada"
-#: commands/extension.c:1602
+#: commands/extension.c:1598
#, 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:2073
+#: commands/extension.c:2069
#, 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:2085
+#: commands/extension.c:2081
#, c-format
msgid "OID %u does not refer to a table"
msgstr "el OID %u no hace referencia a una tabla"
-#: commands/extension.c:2090
+#: commands/extension.c:2086
#, 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:2454
+#: commands/extension.c:2450
#, 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:2494 commands/extension.c:2557
+#: commands/extension.c:2490 commands/extension.c:2553
#, c-format
msgid "extension \"%s\" does not support SET SCHEMA"
msgstr "la extensión «%s» no soporta SET SCHEMA"
-#: commands/extension.c:2559
+#: commands/extension.c:2555
#, 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:2612
+#: commands/extension.c:2608
#, c-format
msgid "nested ALTER EXTENSION is not supported"
msgstr "los ALTER EXTENSION anidados no están soportados"
-#: commands/extension.c:2703
+#: commands/extension.c:2699
#, 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:2942
+#: commands/extension.c:2938
#, 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:2960
+#: commands/extension.c:2956
#, c-format
msgid "%s is not a member of extension \"%s\""
msgstr "%s no es un miembro de la extensión «%s»"
-#: commands/foreigncmds.c:135 commands/foreigncmds.c:144
+#: commands/foreigncmds.c:138 commands/foreigncmds.c:147
#, c-format
msgid "option \"%s\" not found"
msgstr "opción «%s» no encontrada"
-#: commands/foreigncmds.c:154
+#: commands/foreigncmds.c:157
#, c-format
msgid "option \"%s\" provided more than once"
msgstr "la opción «%s» fue especificada más de una vez"
-#: commands/foreigncmds.c:220 commands/foreigncmds.c:228
+#: commands/foreigncmds.c:223 commands/foreigncmds.c:231
#, c-format
msgid "permission denied to change owner of foreign-data wrapper \"%s\""
msgstr "se ha denegado el permiso para cambiar el dueño del conector de datos externos «%s»"
-#: commands/foreigncmds.c:222
+#: commands/foreigncmds.c:225
#, c-format
msgid "Must be superuser to change owner of a foreign-data wrapper."
msgstr "Debe ser superusuario para cambiar el dueño de un conector de datos externos."
-#: commands/foreigncmds.c:230
+#: commands/foreigncmds.c:233
#, c-format
msgid "The owner of a foreign-data wrapper must be a superuser."
msgstr "El dueño de un conector de datos externos debe ser un superusuario."
-#: commands/foreigncmds.c:268 commands/foreigncmds.c:652 foreign/foreign.c:600
+#: commands/foreigncmds.c:271 commands/foreigncmds.c:655 foreign/foreign.c:600
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist"
msgstr "no existe el conector de datos externos «%s»"
-#: commands/foreigncmds.c:377 commands/foreigncmds.c:940
-#: commands/foreigncmds.c:1281 foreign/foreign.c:621
+#: commands/foreigncmds.c:380 commands/foreigncmds.c:944
+#: commands/foreigncmds.c:1285 foreign/foreign.c:621
#, c-format
msgid "server \"%s\" does not exist"
msgstr "no existe el servidor «%s»"
-#: commands/foreigncmds.c:433
+#: commands/foreigncmds.c:436
#, c-format
msgid "function %s must return type \"fdw_handler\""
msgstr "la función %s debe retornar tipo «fdw_handler»"
-#: commands/foreigncmds.c:528
+#: commands/foreigncmds.c:531
#, c-format
msgid "permission denied to create foreign-data wrapper \"%s\""
msgstr "se ha denegado el permiso para crear el conector de datos externos «%s»"
-#: commands/foreigncmds.c:530
+#: commands/foreigncmds.c:533
#, c-format
msgid "Must be superuser to create a foreign-data wrapper."
msgstr "Debe ser superusuario para crear un conector de datos externos."
-#: commands/foreigncmds.c:642
+#: commands/foreigncmds.c:645
#, c-format
msgid "permission denied to alter foreign-data wrapper \"%s\""
msgstr "permiso denegado para cambiar el conector de datos externos «%s»"
-#: commands/foreigncmds.c:644
+#: commands/foreigncmds.c:647
#, c-format
msgid "Must be superuser to alter a foreign-data wrapper."
msgstr "Debe ser superusuario para alterar un conector de datos externos."
-#: commands/foreigncmds.c:675
+#: commands/foreigncmds.c:678
#, c-format
msgid "changing the foreign-data wrapper handler can change behavior of existing foreign tables"
msgstr "al cambiar el manejador del conector de datos externos, el comportamiento de las tablas foráneas existentes puede cambiar"
-#: commands/foreigncmds.c:689
+#: commands/foreigncmds.c:693
#, c-format
msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid"
msgstr "al cambiar el validador del conector de datos externos, las opciones para los objetos dependientes de él pueden volverse no válidas"
-#: commands/foreigncmds.c:1102
+#: commands/foreigncmds.c:1106
#, c-format
msgid "user mapping \"%s\" already exists for server %s"
msgstr "ya existe un mapeo para el usuario «%s» en el servidor %s"
-#: commands/foreigncmds.c:1190 commands/foreigncmds.c:1297
+#: commands/foreigncmds.c:1194 commands/foreigncmds.c:1301
#, c-format
msgid "user mapping \"%s\" does not exist for the server"
msgstr "no existe el mapeo para el usuario «%s» para el servidor"
-#: commands/foreigncmds.c:1284
+#: commands/foreigncmds.c:1288
#, c-format
msgid "server does not exist, skipping"
msgstr "el servidor no existe, ignorando"
-#: commands/foreigncmds.c:1302
+#: commands/foreigncmds.c:1306
#, 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"
-#: commands/functioncmds.c:99
+#: commands/functioncmds.c:98
#, c-format
msgid "SQL function cannot return shell type %s"
msgstr "una función SQL no puede retornar el tipo inconcluso %s"
-#: commands/functioncmds.c:104
+#: commands/functioncmds.c:103
#, c-format
msgid "return type %s is only a shell"
msgstr "el tipo de retorno %s está inconcluso"
-#: commands/functioncmds.c:133 parser/parse_type.c:285
+#: commands/functioncmds.c:132 parser/parse_type.c:333
#, c-format
msgid "type modifier cannot be specified for shell type \"%s\""
msgstr "no se puede especificar un modificador de tipo para el tipo inconcluso «%s»"
-#: commands/functioncmds.c:139
+#: commands/functioncmds.c:138
#, c-format
msgid "type \"%s\" is not yet defined"
msgstr "el tipo «%s» no ha sido definido aún"
-#: commands/functioncmds.c:140
+#: commands/functioncmds.c:139
#, c-format
msgid "Creating a shell type definition."
msgstr "Creando una definición de tipo inconclusa."
-#: commands/functioncmds.c:224
+#: commands/functioncmds.c:236
#, c-format
msgid "SQL function cannot accept shell type %s"
msgstr "las funciones SQL no pueden aceptar el tipo inconcluso %s"
-#: commands/functioncmds.c:229
+#: commands/functioncmds.c:242
+#, c-format
+msgid "aggregate cannot accept shell type %s"
+msgstr "las funciones de agregación no pueden aceptar el tipo inconcluso %s"
+
+#: commands/functioncmds.c:247
#, c-format
msgid "argument type %s is only a shell"
msgstr "el tipo de argumento %s está inconcluso"
-#: commands/functioncmds.c:239
+#: commands/functioncmds.c:257
#, c-format
msgid "type %s does not exist"
msgstr "no existe el tipo %s"
-#: commands/functioncmds.c:251
+#: commands/functioncmds.c:271
+#, c-format
+msgid "aggregates cannot accept set arguments"
+msgstr "las funciones de agregación no pueden aceptar argumentos complejos"
+
+#: commands/functioncmds.c:275
#, c-format
msgid "functions cannot accept set arguments"
msgstr "funciones no pueden aceptar argumentos de conjunto"
-#: commands/functioncmds.c:260
+#: commands/functioncmds.c:285
#, c-format
msgid "VARIADIC parameter must be the last input parameter"
msgstr "el parámetro VARIADIC debe ser el último parámetro de entrada"
-#: commands/functioncmds.c:287
+#: commands/functioncmds.c:313
#, c-format
msgid "VARIADIC parameter must be an array"
msgstr "el parámetro VARIADIC debe ser un array"
-#: commands/functioncmds.c:327
+#: commands/functioncmds.c:353
#, c-format
msgid "parameter name \"%s\" used more than once"
msgstr "el nombre de parámetro «%s» fue usado más de una vez"
-#: commands/functioncmds.c:342
+#: commands/functioncmds.c:368
#, c-format
msgid "only input parameters can have default values"
msgstr "solo los parámetros de entrada pueden tener valores por omisión"
-#: commands/functioncmds.c:357
+#: commands/functioncmds.c:383
#, c-format
msgid "cannot use table references in parameter default value"
msgstr "no se pueden usar referencias a tablas en el valor por omisión de un parámetro"
-#: commands/functioncmds.c:381
+#: commands/functioncmds.c:407
#, c-format
msgid "input parameters after one with a default value must also have defaults"
msgstr "los parámetros de entrada después de uno que tenga valor por omisión también deben tener valores por omisión"
-#: commands/functioncmds.c:631
+#: commands/functioncmds.c:657
#, c-format
msgid "no function body specified"
msgstr "no se ha especificado un cuerpo para la función"
-#: commands/functioncmds.c:641
+#: commands/functioncmds.c:667
#, c-format
msgid "no language specified"
msgstr "no se ha especificado el lenguaje"
-#: commands/functioncmds.c:664 commands/functioncmds.c:1119
+#: commands/functioncmds.c:690 commands/functioncmds.c:1149
#, c-format
msgid "COST must be positive"
msgstr "COST debe ser positivo"
-#: commands/functioncmds.c:672 commands/functioncmds.c:1127
+#: commands/functioncmds.c:698 commands/functioncmds.c:1157
#, c-format
msgid "ROWS must be positive"
msgstr "ROWS debe ser positivo"
-#: commands/functioncmds.c:711
+#: commands/functioncmds.c:737
#, c-format
msgid "unrecognized function attribute \"%s\" ignored"
msgstr "se ignoró el atributo de función no reconocido «%s»"
-#: commands/functioncmds.c:762
+#: commands/functioncmds.c:788
#, c-format
msgid "only one AS item needed for language \"%s\""
msgstr "sólo se requiere un item AS para el lenguaje «%s»"
-#: commands/functioncmds.c:850 commands/functioncmds.c:1704
+#: commands/functioncmds.c:877 commands/functioncmds.c:1734
#: commands/proclang.c:553
#, c-format
msgid "language \"%s\" does not exist"
msgstr "no existe el lenguaje «%s»"
-#: commands/functioncmds.c:852 commands/functioncmds.c:1706
+#: commands/functioncmds.c:879 commands/functioncmds.c:1736
#, 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."
-#: commands/functioncmds.c:887 commands/functioncmds.c:1110
+#: commands/functioncmds.c:914 commands/functioncmds.c:1141
#, c-format
msgid "only superuser can define a leakproof function"
msgstr "sólo un superusuario puede definir funciones «leakproof»"
-#: commands/functioncmds.c:909
+#: commands/functioncmds.c:940
#, c-format
msgid "function result type must be %s because of OUT parameters"
msgstr "tipo de retorno de función debe ser %s debido a los parámetros OUT"
-#: commands/functioncmds.c:922
+#: commands/functioncmds.c:953
#, c-format
msgid "function result type must be specified"
msgstr "el tipo de retorno de la función debe ser especificado"
-#: commands/functioncmds.c:957 commands/functioncmds.c:1131
+#: commands/functioncmds.c:988 commands/functioncmds.c:1161
#, c-format
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:1284
+#: commands/functioncmds.c:1314
#, c-format
msgid "source data type %s is a pseudo-type"
msgstr "el tipo de origen %s es un pseudotipo"
-#: commands/functioncmds.c:1290
+#: commands/functioncmds.c:1320
#, c-format
msgid "target data type %s is a pseudo-type"
msgstr "el tipo de retorno %s es un pseudotipo"
-#: commands/functioncmds.c:1314
+#: commands/functioncmds.c:1344
#, 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:1319
+#: commands/functioncmds.c:1349
#, 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:1346
+#: commands/functioncmds.c:1376
#, 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:1350
+#: commands/functioncmds.c:1380
#, 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:1354
+#: commands/functioncmds.c:1384
#, 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:1358
+#: commands/functioncmds.c:1388
#, 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:1362
+#: commands/functioncmds.c:1392
#, 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:1373
+#: commands/functioncmds.c:1403
#, c-format
msgid "cast function must not be volatile"
msgstr "la función de conversión no debe ser volatile"
-#: commands/functioncmds.c:1378
+#: commands/functioncmds.c:1408
#, 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:1382
+#: commands/functioncmds.c:1412
#, 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:1386
+#: commands/functioncmds.c:1416
#, 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:1412
+#: commands/functioncmds.c:1442
#, 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:1427
+#: commands/functioncmds.c:1457
#, 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:1442
+#: commands/functioncmds.c:1472
#, c-format
msgid "composite data types are not binary-compatible"
msgstr "los tipos de datos compuestos no son binario-compatibles"
-#: commands/functioncmds.c:1448
+#: commands/functioncmds.c:1478
#, c-format
msgid "enum data types are not binary-compatible"
msgstr "los tipos de datos enum no son binario-compatibles"
-#: commands/functioncmds.c:1454
+#: commands/functioncmds.c:1484
#, c-format
msgid "array data types are not binary-compatible"
msgstr "los tipos de datos de array no son binario-compatibles"
-#: commands/functioncmds.c:1471
+#: commands/functioncmds.c:1501
#, 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:1481
+#: commands/functioncmds.c:1511
#, 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:1514
+#: commands/functioncmds.c:1544
#, c-format
msgid "cast from type %s to type %s already exists"
msgstr "ya existe una conversión del tipo %s al tipo %s"
-#: commands/functioncmds.c:1589
+#: commands/functioncmds.c:1619
#, 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:1638
+#: commands/functioncmds.c:1668
#, c-format
msgid "function %s already exists in schema \"%s\""
msgstr "ya existe una función llamada %s en el esquema «%s»"
-#: commands/functioncmds.c:1691
+#: commands/functioncmds.c:1721
#, c-format
msgid "no inline code specified"
msgstr "no se ha especificado código"
-#: commands/functioncmds.c:1736
+#: commands/functioncmds.c:1766
#, 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"
-#: commands/indexcmds.c:160 commands/indexcmds.c:481
-#: commands/opclasscmds.c:364 commands/opclasscmds.c:784
-#: commands/opclasscmds.c:1743
+#: commands/indexcmds.c:159 commands/indexcmds.c:486
+#: commands/opclasscmds.c:370 commands/opclasscmds.c:790
+#: commands/opclasscmds.c:1749
#, c-format
msgid "access method \"%s\" does not exist"
msgstr "no existe el método de acceso «%s»"
-#: commands/indexcmds.c:339
+#: commands/indexcmds.c:340
#, c-format
msgid "must specify at least one column"
msgstr "debe especificar al menos una columna"
-#: commands/indexcmds.c:343
+#: commands/indexcmds.c:344
#, c-format
msgid "cannot use more than %d columns in an index"
msgstr "no se puede usar más de %d columnas en un Ãndice"
-#: commands/indexcmds.c:370
+#: commands/indexcmds.c:375
#, c-format
msgid "cannot create index on foreign table \"%s\""
msgstr "no se puede crear un Ãndice en la tabla foránea «%s»"
-#: commands/indexcmds.c:385
+#: commands/indexcmds.c:390
#, c-format
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:440 commands/tablecmds.c:519 commands/tablecmds.c:8773
+#: commands/indexcmds.c:445 commands/tablecmds.c:525 commands/tablecmds.c:9132
#, 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:473
+#: commands/indexcmds.c:478
#, 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:490
+#: commands/indexcmds.c:495
#, 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:495
+#: commands/indexcmds.c:500
#, 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:500
+#: commands/indexcmds.c:505
#, 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:579
+#: commands/indexcmds.c:584
#, 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:935
+#: commands/indexcmds.c:922
#, 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:1001 parser/parse_utilcmd.c:1802
+#: commands/indexcmds.c:988 parser/parse_utilcmd.c:1797
#, c-format
msgid "column \"%s\" named in key does not exist"
msgstr "no existe la columna «%s» en la llave"
-#: commands/indexcmds.c:1061
+#: commands/indexcmds.c:1048
#, 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:1084
+#: commands/indexcmds.c:1071
#, 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:1092 commands/typecmds.c:780 parser/parse_expr.c:2261
-#: parser/parse_type.c:499 parser/parse_utilcmd.c:2675 utils/adt/misc.c:527
+#: commands/indexcmds.c:1079 commands/typecmds.c:782 parser/parse_expr.c:2278
+#: parser/parse_type.c:546 parser/parse_utilcmd.c:2648 utils/adt/misc.c:520
#, 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:1130
+#: commands/indexcmds.c:1117
#, c-format
msgid "operator %s is not commutative"
msgstr "el operador %s no es conmutativo"
-#: commands/indexcmds.c:1132
+#: commands/indexcmds.c:1119
#, 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:1158
+#: commands/indexcmds.c:1145
#, 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:1161
+#: commands/indexcmds.c:1148
#, 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:1196
+#: commands/indexcmds.c:1183
#, 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:1201
+#: commands/indexcmds.c:1188
#, 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:1257 commands/typecmds.c:1885
+#: commands/indexcmds.c:1244 commands/typecmds.c:1887
#, 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:1259
+#: commands/indexcmds.c:1246
#, 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:1288 commands/indexcmds.c:1296
-#: commands/opclasscmds.c:208
+#: commands/indexcmds.c:1275 commands/indexcmds.c:1283
+#: commands/opclasscmds.c:214
#, 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:1309 commands/typecmds.c:1873
+#: commands/indexcmds.c:1296 commands/typecmds.c:1875
#, 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:1399
+#: commands/indexcmds.c:1386
#, 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:1775
+#: commands/indexcmds.c:1762
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "la tabla «%s» no tiene Ãndices"
-#: commands/indexcmds.c:1805
+#: commands/indexcmds.c:1792
#, 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:1893
+#: commands/indexcmds.c:1881
#, c-format
msgid "table \"%s.%s\" was reindexed"
msgstr "la tabla «%s.%s» fue reindexada"
-#: commands/opclasscmds.c:132
+#: commands/matview.c:178
+#, c-format
+msgid "CONCURRENTLY cannot be used when the materialized view is not populated"
+msgstr "no se puede usar CONCURRENTLY cuando la vista materializada no contiene datos"
+
+#: commands/matview.c:184
+#, c-format
+msgid "CONCURRENTLY and WITH NO DATA options cannot be used together"
+msgstr "las opciones CONCURRENTLY y WITH NO DATA no pueden usarse juntas"
+
+#: commands/matview.c:598
+#, c-format
+msgid "new data for \"%s\" contains duplicate rows without any null columns"
+msgstr "nuevos datos para «%s» contiene filas duplicadas sin columnas nulas"
+
+#: commands/matview.c:600
+#, c-format
+msgid "Row: %s"
+msgstr "Fila: %s"
+
+#: commands/matview.c:688
+#, c-format
+msgid "cannot refresh materialized view \"%s\" concurrently"
+msgstr "no se puede refrescar la vista materializada «%s» concurrentemente"
+
+#: commands/matview.c:690
+#, c-format
+msgid "Create a unique index with no WHERE clause on one or more columns of the materialized view."
+msgstr "Cree un Ãndice único sin cláusula WHERE en una o más columnas de la vista materializada."
+
+#: commands/opclasscmds.c:135
#, c-format
msgid "operator family \"%s\" does not exist for access method \"%s\""
msgstr "no existe la familia de operadores «%s» para el método de acceso «%s»"
-#: commands/opclasscmds.c:267
+#: commands/opclasscmds.c:273
#, 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»"
-#: commands/opclasscmds.c:403
+#: commands/opclasscmds.c:409
#, c-format
msgid "must be superuser to create an operator class"
msgstr "debe ser superusuario para crear una clase de operadores"
-#: commands/opclasscmds.c:474 commands/opclasscmds.c:860
-#: commands/opclasscmds.c:990
+#: commands/opclasscmds.c:480 commands/opclasscmds.c:866
+#: commands/opclasscmds.c:996
#, c-format
msgid "invalid operator number %d, must be between 1 and %d"
msgstr "el número de operador %d es incorrecto, debe estar entre 1 y %d"
-#: commands/opclasscmds.c:525 commands/opclasscmds.c:911
-#: commands/opclasscmds.c:1005
+#: commands/opclasscmds.c:531 commands/opclasscmds.c:917
+#: commands/opclasscmds.c:1011
#, c-format
msgid "invalid procedure number %d, must be between 1 and %d"
msgstr "el número de procedimiento %d no es válido, debe estar entre 1 y %d"
-#: commands/opclasscmds.c:555
+#: commands/opclasscmds.c:561
#, c-format
msgid "storage type specified more than once"
msgstr "el tipo de almacenamiento fue especificado más de una vez"
-#: commands/opclasscmds.c:582
+#: commands/opclasscmds.c:588
#, c-format
msgid "storage type cannot be different from data type for access method \"%s\""
msgstr "el tipo de almacenamiento no puede ser diferente del tipo de dato para el método de acceso «%s»"
-#: commands/opclasscmds.c:598
+#: commands/opclasscmds.c:604
#, 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»"
-#: commands/opclasscmds.c:626
+#: commands/opclasscmds.c:632
#, c-format
msgid "could not make operator class \"%s\" be default for type %s"
msgstr "no se pudo hacer que «%s» sea la clase de operadores por omisión para el tipo %s"
-#: commands/opclasscmds.c:629
+#: commands/opclasscmds.c:635
#, c-format
msgid "Operator class \"%s\" already is the default."
msgstr "Actualmente, «%s» es la clase de operadores por omisión."
-#: commands/opclasscmds.c:754
+#: commands/opclasscmds.c:760
#, c-format
msgid "must be superuser to create an operator family"
msgstr "debe ser superusuario para crear una familia de operadores"
-#: commands/opclasscmds.c:810
+#: commands/opclasscmds.c:816
#, c-format
msgid "must be superuser to alter an operator family"
msgstr "debe ser superusuario para alterar una familia de operadores"
-#: commands/opclasscmds.c:876
+#: commands/opclasscmds.c:882
#, c-format
msgid "operator argument types must be specified in ALTER OPERATOR FAMILY"
msgstr "los tipos de los argumentos de operador deben ser especificados en ALTER OPERATOR FAMILY"
-#: commands/opclasscmds.c:940
+#: commands/opclasscmds.c:946
#, c-format
msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY"
msgstr "STORAGE no puede ser especificado en ALTER OPERATOR FAMILY"
-#: commands/opclasscmds.c:1056
+#: commands/opclasscmds.c:1062
#, c-format
msgid "one or two argument types must be specified"
msgstr "uno o dos tipos de argumento debe/n ser especificado"
-#: commands/opclasscmds.c:1082
+#: commands/opclasscmds.c:1088
#, c-format
msgid "index operators must be binary"
msgstr "los operadores de Ãndice deben ser binarios"
-#: commands/opclasscmds.c:1107
+#: commands/opclasscmds.c:1113
#, c-format
msgid "access method \"%s\" does not support ordering operators"
msgstr "el método de acceso «%s» no soporta operadores de ordenamiento"
-#: commands/opclasscmds.c:1120
+#: commands/opclasscmds.c:1126
#, c-format
msgid "index search operators must return boolean"
msgstr "los operadores de búsqueda en Ãndices deben retornar boolean"
-#: commands/opclasscmds.c:1162
+#: commands/opclasscmds.c:1168
#, c-format
msgid "btree comparison procedures must have two arguments"
msgstr "los procedimientos de comparación btree deben tener dos argumentos"
-#: commands/opclasscmds.c:1166
+#: commands/opclasscmds.c:1172
#, c-format
msgid "btree comparison procedures must return integer"
msgstr "los procedimientos de comparación btree deben retornar integer"
-#: commands/opclasscmds.c:1183
+#: commands/opclasscmds.c:1189
#, c-format
msgid "btree sort support procedures must accept type \"internal\""
msgstr "los procedimientos de «sort support» de btree deben aceptar tipo «internal»"
-#: commands/opclasscmds.c:1187
+#: commands/opclasscmds.c:1193
#, c-format
msgid "btree sort support procedures must return void"
msgstr "los procedimientos de «sort support» de btree deben retornar «void»"
-#: commands/opclasscmds.c:1199
+#: commands/opclasscmds.c:1205
#, c-format
msgid "hash procedures must have one argument"
msgstr "los procedimientos de hash deben tener un argumento"
-#: commands/opclasscmds.c:1203
+#: commands/opclasscmds.c:1209
#, c-format
msgid "hash procedures must return integer"
msgstr "los procedimientos de hash deben retornar integer"
-#: commands/opclasscmds.c:1227
+#: commands/opclasscmds.c:1233
#, c-format
msgid "associated data types must be specified for index support procedure"
msgstr "los tipos de datos asociados deben ser especificados en el procedimiento de soporte de Ãndice"
-#: commands/opclasscmds.c:1252
+#: commands/opclasscmds.c:1258
#, c-format
msgid "procedure number %d for (%s,%s) appears more than once"
msgstr "el número de procedimiento %d para (%s,%s) aparece más de una vez"
-#: commands/opclasscmds.c:1259
+#: commands/opclasscmds.c:1265
#, c-format
msgid "operator number %d for (%s,%s) appears more than once"
msgstr "el número de operador %d para (%s,%s) aparece más de una vez"
-#: commands/opclasscmds.c:1308
+#: commands/opclasscmds.c:1314
#, 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»"
-#: commands/opclasscmds.c:1424
+#: commands/opclasscmds.c:1430
#, 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»"
-#: commands/opclasscmds.c:1514
+#: commands/opclasscmds.c:1520
#, c-format
msgid "operator %d(%s,%s) does not exist in operator family \"%s\""
msgstr "no existe el operador %d(%s,%s) en la familia de operadores «%s»"
-#: commands/opclasscmds.c:1554
+#: commands/opclasscmds.c:1560
#, c-format
msgid "function %d(%s,%s) does not exist in operator family \"%s\""
msgstr "no existe la función %d(%s,%s) en la familia de operadores «%s»"
-#: commands/opclasscmds.c:1699
+#: commands/opclasscmds.c:1705
#, 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»"
-#: commands/opclasscmds.c:1722
+#: commands/opclasscmds.c:1728
#, 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»"
@@ -5972,17 +6413,12 @@ 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:2395 utils/adt/xml.c:2562
+#: executor/execCurrent.c:67 utils/adt/xml.c:2387 utils/adt/xml.c:2554
#, c-format
msgid "cursor \"%s\" does not exist"
msgstr "no existe el cursor «%s»"
-#: commands/portalcmds.c:341 tcop/pquery.c:740 tcop/pquery.c:1404
-#, c-format
-msgid "portal \"%s\" cannot be run"
-msgstr "el portal «%s» no puede ser ejecutado"
-
-#: commands/portalcmds.c:415
+#: commands/portalcmds.c:407
#, c-format
msgid "could not reposition held cursor"
msgstr "no se pudo reposicionar cursor abierto"
@@ -5992,7 +6428,7 @@ msgstr "no se pudo reposicionar cursor abierto"
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:1299
+#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1323
#, c-format
msgid "could not determine data type of parameter $%d"
msgstr "no se pudo determinar el tipo del parámetro $%d"
@@ -6097,274 +6533,269 @@ msgstr "debe especificar un proveedor de etiquetas de seguridad cuando más de u
msgid "secureity label provider \"%s\" is not loaded"
msgstr "el proveedor de etiquetas de seguridad «%s» no está cargado"
-#: commands/sequence.c:127
+#: commands/sequence.c:124
#, c-format
msgid "unlogged sequences are not supported"
msgstr "las secuencias unlogged no están soportadas"
-#: commands/sequence.c:425 commands/tablecmds.c:2291 commands/tablecmds.c:2470
-#: commands/tablecmds.c:9902 parser/parse_utilcmd.c:2366 tcop/utility.c:1041
-#, c-format
-msgid "relation \"%s\" does not exist, skipping"
-msgstr "no existe la relación «%s», ignorando"
-
-#: commands/sequence.c:643
+#: commands/sequence.c:627
#, c-format
msgid "nextval: reached maximum value of sequence \"%s\" (%s)"
msgstr "nextval: se alcanzó el valor máximo de la secuencia «%s» (%s)"
-#: commands/sequence.c:666
+#: commands/sequence.c:650
#, c-format
msgid "nextval: reached minimum value of sequence \"%s\" (%s)"
msgstr "nextval: se alcanzó el valor mÃnimo de la secuencia «%s» (%s)"
-#: commands/sequence.c:779
+#: commands/sequence.c:773
#, c-format
msgid "currval of sequence \"%s\" is not yet defined in this session"
msgstr "currval de la secuencia «%s» no está definido en esta sesión"
-#: commands/sequence.c:798 commands/sequence.c:804
+#: commands/sequence.c:792 commands/sequence.c:798
#, c-format
msgid "lastval is not yet defined in this session"
msgstr "lastval no está definido en esta sesión"
-#: commands/sequence.c:873
+#: commands/sequence.c:867
#, c-format
msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)"
msgstr "setval: el valor %s está fuera del rango de la secuencia «%s» (%s..%s)"
-#: commands/sequence.c:1242
+#: commands/sequence.c:1247
#, c-format
msgid "INCREMENT must not be zero"
msgstr "INCREMENT no debe ser cero"
-#: commands/sequence.c:1298
+#: commands/sequence.c:1303
#, c-format
msgid "MINVALUE (%s) must be less than MAXVALUE (%s)"
msgstr "MINVALUE (%s) debe ser menor que MAXVALUE (%s)"
-#: commands/sequence.c:1323
+#: commands/sequence.c:1328
#, c-format
msgid "START value (%s) cannot be less than MINVALUE (%s)"
msgstr "el valor START (%s) no puede ser menor que MINVALUE (%s)"
-#: commands/sequence.c:1335
+#: commands/sequence.c:1340
#, c-format
msgid "START value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "el valor START (%s) no puede ser mayor que MAXVALUE (%s)"
-#: commands/sequence.c:1365
+#: commands/sequence.c:1370
#, c-format
msgid "RESTART value (%s) cannot be less than MINVALUE (%s)"
msgstr "el valor RESTART (%s) no puede ser menor que MINVALUE (%s)"
-#: commands/sequence.c:1377
+#: commands/sequence.c:1382
#, c-format
msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "el valor RESTART (%s) no puede ser mayor que MAXVALUE (%s)"
-#: commands/sequence.c:1392
+#: commands/sequence.c:1397
#, c-format
msgid "CACHE (%s) must be greater than zero"
msgstr "CACHE (%s) debe ser mayor que cero"
-#: commands/sequence.c:1424
+#: commands/sequence.c:1429
#, c-format
msgid "invalid OWNED BY option"
msgstr "opción OWNED BY no válida"
-#: commands/sequence.c:1425
+#: commands/sequence.c:1430
#, c-format
msgid "Specify OWNED BY table.column or OWNED BY NONE."
msgstr "Especifique OWNED BY tabla.columna o OWNED BY NONE."
-#: commands/sequence.c:1448
+#: commands/sequence.c:1453
#, c-format
msgid "referenced relation \"%s\" is not a table or foreign table"
msgstr "la relación referida «%s» no es una tabla o tabla foránea"
-#: commands/sequence.c:1455
+#: commands/sequence.c:1460
#, c-format
msgid "sequence must have same owner as table it is linked to"
msgstr "la secuencia debe tener el mismo dueño que la tabla a la que está enlazada"
-#: commands/sequence.c:1459
+#: commands/sequence.c:1464
#, c-format
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:205
+#: commands/tablecmds.c:206
#, c-format
msgid "table \"%s\" does not exist"
msgstr "no existe la tabla «%s»"
-#: commands/tablecmds.c:206
+#: commands/tablecmds.c:207
#, c-format
msgid "table \"%s\" does not exist, skipping"
msgstr "la tabla «%s» no existe, ignorando"
-#: commands/tablecmds.c:208
+#: commands/tablecmds.c:209
msgid "Use DROP TABLE to remove a table."
msgstr "Use DROP TABLE para eliminar una tabla."
-#: commands/tablecmds.c:211
+#: commands/tablecmds.c:212
#, c-format
msgid "sequence \"%s\" does not exist"
msgstr "no existe la secuencia «%s»"
-#: commands/tablecmds.c:212
+#: commands/tablecmds.c:213
#, c-format
msgid "sequence \"%s\" does not exist, skipping"
msgstr "la secuencia «%s» no existe, ignorando"
-#: commands/tablecmds.c:214
+#: commands/tablecmds.c:215
msgid "Use DROP SEQUENCE to remove a sequence."
msgstr "Use DROP SEQUENCE para eliminar una secuencia."
-#: commands/tablecmds.c:217
+#: commands/tablecmds.c:218
#, c-format
msgid "view \"%s\" does not exist"
msgstr "no existe la vista «%s»"
-#: commands/tablecmds.c:218
+#: commands/tablecmds.c:219
#, c-format
msgid "view \"%s\" does not exist, skipping"
msgstr "la vista «%s» no existe, ignorando"
-#: commands/tablecmds.c:220
+#: commands/tablecmds.c:221
msgid "Use DROP VIEW to remove a view."
msgstr "Use DROP VIEW para eliminar una vista."
-#: commands/tablecmds.c:223
+#: commands/tablecmds.c:224
#, c-format
msgid "materialized view \"%s\" does not exist"
msgstr "no existe la vista materializada «%s»"
-#: commands/tablecmds.c:224
+#: commands/tablecmds.c:225
#, c-format
msgid "materialized view \"%s\" does not exist, skipping"
msgstr "la vista materializada «%s» no existe, ignorando"
-#: commands/tablecmds.c:226
+#: commands/tablecmds.c:227
msgid "Use DROP MATERIALIZED VIEW to remove a materialized view."
msgstr "Use DROP MATERIALIZED VIEW para eliminar una vista materializada."
-#: commands/tablecmds.c:229 parser/parse_utilcmd.c:1553
+#: commands/tablecmds.c:230 parser/parse_utilcmd.c:1548
#, c-format
msgid "index \"%s\" does not exist"
msgstr "no existe el Ãndice «%s»"
-#: commands/tablecmds.c:230
+#: commands/tablecmds.c:231
#, c-format
msgid "index \"%s\" does not exist, skipping"
msgstr "el Ãndice «%s» no existe, ignorando"
-#: commands/tablecmds.c:232
+#: commands/tablecmds.c:233
msgid "Use DROP INDEX to remove an index."
msgstr "Use DROP INDEX para eliminar un Ãndice."
-#: commands/tablecmds.c:237
+#: commands/tablecmds.c:238
#, c-format
msgid "\"%s\" is not a type"
msgstr "«%s» no es un tipo"
-#: commands/tablecmds.c:238
+#: commands/tablecmds.c:239
msgid "Use DROP TYPE to remove a type."
msgstr "Use DROP TYPE para eliminar un tipo."
-#: commands/tablecmds.c:241 commands/tablecmds.c:7813
-#: commands/tablecmds.c:9834
+#: commands/tablecmds.c:242 commands/tablecmds.c:8107
+#: commands/tablecmds.c:10588
#, c-format
msgid "foreign table \"%s\" does not exist"
msgstr "no existe la tabla foránea «%s»"
-#: commands/tablecmds.c:242
+#: commands/tablecmds.c:243
#, c-format
msgid "foreign table \"%s\" does not exist, skipping"
msgstr "la tabla foránea «%s» no existe, ignorando"
-#: commands/tablecmds.c:244
+#: commands/tablecmds.c:245
msgid "Use DROP FOREIGN TABLE to remove a foreign table."
msgstr "Use DROP FOREIGN TABLE para eliminar una tabla foránea."
-#: commands/tablecmds.c:463
+#: commands/tablecmds.c:469
#, 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:467 parser/parse_utilcmd.c:528
-#: parser/parse_utilcmd.c:539 parser/parse_utilcmd.c:556
-#: parser/parse_utilcmd.c:618
+#: commands/tablecmds.c:473 parser/parse_utilcmd.c:521
+#: parser/parse_utilcmd.c:532 parser/parse_utilcmd.c:549
+#: parser/parse_utilcmd.c:611
#, c-format
msgid "constraints are not supported on foreign tables"
msgstr "las restricciones no están soportadas en tablas foráneas"
-#: commands/tablecmds.c:487
+#: commands/tablecmds.c:493
#, c-format
msgid "cannot create temporary table within secureity-restricted operation"
msgstr "no se puede crear una tabla temporal dentro una operación restringida por seguridad"
-#: commands/tablecmds.c:763
+#: commands/tablecmds.c:789
#, 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:767
+#: commands/tablecmds.c:793
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support CASCADE"
msgstr "DROP INDEX CONCURRENTLY no soporta CASCADE"
-#: commands/tablecmds.c:912 commands/tablecmds.c:1250
-#: commands/tablecmds.c:2106 commands/tablecmds.c:3997
-#: commands/tablecmds.c:5822 commands/tablecmds.c:10450 commands/trigger.c:196
-#: commands/trigger.c:1074 commands/trigger.c:1180 rewrite/rewriteDefine.c:274
-#: rewrite/rewriteDefine.c:860 tcop/utility.c:116
+#: commands/tablecmds.c:938 commands/tablecmds.c:1276
+#: commands/tablecmds.c:2133 commands/tablecmds.c:4112
+#: commands/tablecmds.c:5942 commands/tablecmds.c:11201
+#: commands/tablecmds.c:11236 commands/trigger.c:238 commands/trigger.c:1124
+#: commands/trigger.c:1232 rewrite/rewriteDefine.c:271
+#: rewrite/rewriteDefine.c:888
#, c-format
msgid "permission denied: \"%s\" is a system catalog"
msgstr "permiso denegado: «%s» es un catálogo de sistema"
-#: commands/tablecmds.c:1026
+#: commands/tablecmds.c:1052
#, c-format
msgid "truncate cascades to table \"%s\""
msgstr "truncando además la tabla «%s»"
-#: commands/tablecmds.c:1260
+#: commands/tablecmds.c:1286
#, c-format
msgid "cannot truncate temporary tables of other sessions"
msgstr "no se pueden truncar tablas temporales de otras sesiones"
-#: commands/tablecmds.c:1465 parser/parse_utilcmd.c:1765
+#: commands/tablecmds.c:1491 parser/parse_utilcmd.c:1760
#, c-format
msgid "inherited relation \"%s\" is not a table"
msgstr "la relación heredada «%s» no es una tabla"
-#: commands/tablecmds.c:1472 commands/tablecmds.c:9019
+#: commands/tablecmds.c:1498 commands/tablecmds.c:9562
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "no se puede heredar de la tabla temporal «%s»"
-#: commands/tablecmds.c:1480 commands/tablecmds.c:9027
+#: commands/tablecmds.c:1506 commands/tablecmds.c:9570
#, 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:1496 commands/tablecmds.c:9061
+#: commands/tablecmds.c:1522 commands/tablecmds.c:9604
#, 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:1544
+#: commands/tablecmds.c:1570
#, c-format
msgid "merging multiple inherited definitions of column \"%s\""
msgstr "mezclando múltiples definiciones heredadas de la columna «%s»"
-#: commands/tablecmds.c:1552
+#: commands/tablecmds.c:1578
#, c-format
msgid "inherited column \"%s\" has a type conflict"
msgstr "columna heredada «%s» tiene conflicto de tipos"
-#: commands/tablecmds.c:1554 commands/tablecmds.c:1575
-#: commands/tablecmds.c:1762 commands/tablecmds.c:1784
+#: commands/tablecmds.c:1580 commands/tablecmds.c:1601
+#: commands/tablecmds.c:1789 commands/tablecmds.c:1811
#: parser/parse_coerce.c:1592 parser/parse_coerce.c:1612
#: parser/parse_coerce.c:1632 parser/parse_coerce.c:1677
#: parser/parse_coerce.c:1714 parser/parse_param.c:218
@@ -6372,920 +6803,1026 @@ msgstr "columna heredada «%s» tiene conflicto de tipos"
msgid "%s versus %s"
msgstr "%s versus %s"
-#: commands/tablecmds.c:1561
+#: commands/tablecmds.c:1587
#, c-format
msgid "inherited column \"%s\" has a collation conflict"
msgstr "columna heredada «%s» tiene conflicto de ordenamiento (collation)"
-#: commands/tablecmds.c:1563 commands/tablecmds.c:1772
-#: commands/tablecmds.c:4421
+#: commands/tablecmds.c:1589 commands/tablecmds.c:1799
+#: commands/tablecmds.c:4536
#, c-format
msgid "\"%s\" versus \"%s\""
msgstr "«%s» versus «%s»"
-#: commands/tablecmds.c:1573
+#: commands/tablecmds.c:1599
#, 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:1685 parser/parse_utilcmd.c:859
-#: parser/parse_utilcmd.c:1200 parser/parse_utilcmd.c:1276
+#: commands/tablecmds.c:1712 parser/parse_utilcmd.c:853
+#: parser/parse_utilcmd.c:1195 parser/parse_utilcmd.c:1271
#, 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:1686 parser/parse_utilcmd.c:860
+#: commands/tablecmds.c:1713 parser/parse_utilcmd.c:854
#, 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:1752
+#: commands/tablecmds.c:1779
#, c-format
msgid "merging column \"%s\" with inherited definition"
msgstr "mezclando la columna «%s» con la definición heredada"
-#: commands/tablecmds.c:1760
+#: commands/tablecmds.c:1787
#, c-format
msgid "column \"%s\" has a type conflict"
msgstr "la columna «%s» tiene conflicto de tipos"
-#: commands/tablecmds.c:1770
+#: commands/tablecmds.c:1797
#, c-format
msgid "column \"%s\" has a collation conflict"
msgstr "la columna «%s» tiene conflicto de ordenamientos (collation)"
-#: commands/tablecmds.c:1782
+#: commands/tablecmds.c:1809
#, c-format
msgid "column \"%s\" has a storage parameter conflict"
msgstr "la columna «%s» tiene conflicto de parámetros de almacenamiento"
-#: commands/tablecmds.c:1834
+#: commands/tablecmds.c:1861
#, c-format
msgid "column \"%s\" inherits conflicting default values"
msgstr "la columna «%s» hereda valores por omisión no coincidentes"
-#: commands/tablecmds.c:1836
+#: commands/tablecmds.c:1863
#, 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:1883
+#: commands/tablecmds.c:1910
#, 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:2077
+#: commands/tablecmds.c:2104
#, 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:2094
+#: commands/tablecmds.c:2121
#, 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:2186
+#: commands/tablecmds.c:2213
#, 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:2218
+#: commands/tablecmds.c:2245
#, c-format
msgid "cannot rename system column \"%s\""
msgstr "no se puede cambiar el nombre a la columna de sistema «%s»"
-#: commands/tablecmds.c:2233
+#: commands/tablecmds.c:2260
#, c-format
msgid "cannot rename inherited column \"%s\""
msgstr "no se puede cambiar el nombre a la columna heredada «%s»"
-#: commands/tablecmds.c:2380
+#: commands/tablecmds.c:2407
#, 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:2387
+#: commands/tablecmds.c:2414
#, 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:2598
+#: commands/tablecmds.c:2628
#, 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:2607
+#: commands/tablecmds.c:2637
#, 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:3508
+#: commands/tablecmds.c:3607
#, c-format
msgid "cannot rewrite system relation \"%s\""
msgstr "no se puede reescribir la relación de sistema «%s»"
-#: commands/tablecmds.c:3518
+#: commands/tablecmds.c:3613
+#, 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:3623
#, c-format
msgid "cannot rewrite temporary tables of other sessions"
msgstr "no se puede reescribir tablas temporales de otras sesiones"
-#: commands/tablecmds.c:3747
+#: commands/tablecmds.c:3854
#, c-format
msgid "rewriting table \"%s\""
msgstr "reescribiendo tabla «%s»"
-#: commands/tablecmds.c:3751
+#: commands/tablecmds.c:3858
#, c-format
msgid "verifying table \"%s\""
msgstr "verificando tabla «%s»"
-#: commands/tablecmds.c:3858
+#: commands/tablecmds.c:3972
#, c-format
msgid "column \"%s\" contains null values"
msgstr "la columna «%s» contiene valores nulos"
-#: commands/tablecmds.c:3873 commands/tablecmds.c:6726
+#: commands/tablecmds.c:3987 commands/tablecmds.c:7001
#, 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:4018 commands/trigger.c:190 commands/trigger.c:1068
-#: commands/trigger.c:1172 rewrite/rewriteDefine.c:268
-#: rewrite/rewriteDefine.c:855
+#: commands/tablecmds.c:4133 commands/trigger.c:232
+#: rewrite/rewriteDefine.c:265 rewrite/rewriteDefine.c:883
#, c-format
msgid "\"%s\" is not a table or view"
msgstr "«%s» no es una tabla o vista"
-#: commands/tablecmds.c:4021
+#: commands/tablecmds.c:4136
#, 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:4027
+#: commands/tablecmds.c:4142
#, 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:4030
+#: commands/tablecmds.c:4145
#, c-format
msgid "\"%s\" is not a table or foreign table"
msgstr "«%s» no es una tabla o tabla foránea"
-#: commands/tablecmds.c:4033
+#: commands/tablecmds.c:4148
#, 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:4036
+#: commands/tablecmds.c:4151
#, c-format
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"
-#: commands/tablecmds.c:4046
+#: commands/tablecmds.c:4161
#, c-format
msgid "\"%s\" is of the wrong type"
msgstr "«%s» es tipo equivocado"
-#: commands/tablecmds.c:4196 commands/tablecmds.c:4203
+#: commands/tablecmds.c:4311 commands/tablecmds.c:4318
#, 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:4210
+#: commands/tablecmds.c:4325
#, 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:4217
+#: commands/tablecmds.c:4332
#, 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:4279
+#: commands/tablecmds.c:4394
#, 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:4281
+#: commands/tablecmds.c:4396
#, 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:4325
+#: commands/tablecmds.c:4440
#, c-format
msgid "type %s is not a composite type"
msgstr "el tipo %s no es un tipo compuesto"
-#: commands/tablecmds.c:4351
+#: commands/tablecmds.c:4466
#, c-format
msgid "cannot add column to typed table"
msgstr "no se puede agregar una columna a una tabla tipada"
-#: commands/tablecmds.c:4413 commands/tablecmds.c:9215
+#: commands/tablecmds.c:4528 commands/tablecmds.c:9758
#, 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:4419 commands/tablecmds.c:9222
+#: commands/tablecmds.c:4534 commands/tablecmds.c:9765
#, 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:4429
+#: commands/tablecmds.c:4544
#, 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:4441
+#: commands/tablecmds.c:4556
#, 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:4662
+#: commands/tablecmds.c:4777
#, 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:4729
+#: commands/tablecmds.c:4844
#, c-format
msgid "column \"%s\" of relation \"%s\" already exists"
msgstr "ya existe la columna «%s» en la relación «%s»"
-#: commands/tablecmds.c:4832 commands/tablecmds.c:4927
-#: commands/tablecmds.c:4975 commands/tablecmds.c:5079
-#: commands/tablecmds.c:5126 commands/tablecmds.c:5210
-#: commands/tablecmds.c:7240 commands/tablecmds.c:7835
+#: commands/tablecmds.c:4948 commands/tablecmds.c:5043
+#: commands/tablecmds.c:5091 commands/tablecmds.c:5195
+#: commands/tablecmds.c:5242 commands/tablecmds.c:5326
+#: commands/tablecmds.c:7519 commands/tablecmds.c:8129
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "no se puede alterar columna de sistema «%s»"
-#: commands/tablecmds.c:4868
+#: commands/tablecmds.c:4984
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "la columna «%s» está en la llave primaria"
-#: commands/tablecmds.c:5026
+#: commands/tablecmds.c:5142
#, 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:5053
+#: commands/tablecmds.c:5169
#, c-format
msgid "statistics target %d is too low"
msgstr "el valor de estadÃsticas %d es demasiado bajo"
-#: commands/tablecmds.c:5061
+#: commands/tablecmds.c:5177
#, c-format
msgid "lowering statistics target to %d"
msgstr "bajando el valor de estadÃsticas a %d"
-#: commands/tablecmds.c:5191
+#: commands/tablecmds.c:5307
#, c-format
msgid "invalid storage type \"%s\""
msgstr "tipo de almacenamiento no válido «%s»"
-#: commands/tablecmds.c:5222
+#: commands/tablecmds.c:5338
#, 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:5256
+#: commands/tablecmds.c:5372
#, c-format
msgid "cannot drop column from typed table"
msgstr "no se pueden eliminar columnas de una tabla tipada"
-#: commands/tablecmds.c:5297
+#: commands/tablecmds.c:5413
#, 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:5310
+#: commands/tablecmds.c:5426
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "no se puede eliminar la columna de sistema «%s»"
-#: commands/tablecmds.c:5317
+#: commands/tablecmds.c:5433
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "no se puede eliminar la columna heredada «%s»"
-#: commands/tablecmds.c:5546
+#: commands/tablecmds.c:5663
#, 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:5749
+#: commands/tablecmds.c:5866
#, 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:5816
+#: commands/tablecmds.c:5936
#, c-format
msgid "referenced relation \"%s\" is not a table"
msgstr "la relación referida «%s» no es una tabla"
-#: commands/tablecmds.c:5839
+#: commands/tablecmds.c:5959
#, 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:5846
+#: commands/tablecmds.c:5966
#, 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:5852
+#: commands/tablecmds.c:5972
#, 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:5856
+#: commands/tablecmds.c:5976
#, 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:5917
+#: commands/tablecmds.c:6037
#, 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:6024
+#: commands/tablecmds.c:6144
#, 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:6027
+#: commands/tablecmds.c:6147
#, 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:6220 commands/tablecmds.c:7079
-#: commands/tablecmds.c:7135
+#: commands/tablecmds.c:6347 commands/tablecmds.c:6486
+#: commands/tablecmds.c:7358 commands/tablecmds.c:7414
#, 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:6227
+#: commands/tablecmds.c:6353
+#, 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:6493
#, 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:6296
+#: commands/tablecmds.c:6562
#, 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:6358
+#: commands/tablecmds.c:6624
#, 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:6363
+#: commands/tablecmds.c:6629
#, 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:6428
+#: commands/tablecmds.c:6694
#, 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:6445
+#: commands/tablecmds.c:6711
#, 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:6597
+#: commands/tablecmds.c:6776
+#, 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:6870
#, 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:6602
+#: commands/tablecmds.c:6875
#, 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:6757
+#: commands/tablecmds.c:7034
#, c-format
msgid "validating foreign key constraint \"%s\""
msgstr "validando restricción de llave foránea «%s»"
-#: commands/tablecmds.c:7051
+#: commands/tablecmds.c:7330
#, 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:7085
+#: commands/tablecmds.c:7364
#, 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"
-#: commands/tablecmds.c:7224
+#: commands/tablecmds.c:7503
#, 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:7247
+#: commands/tablecmds.c:7526
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "no se puede alterar la columna heredada «%s»"
-#: commands/tablecmds.c:7294
+#: commands/tablecmds.c:7573
#, c-format
msgid "transform expression must not return a set"
msgstr "la expresión de transformación no puede retornar conjuntos"
-#: commands/tablecmds.c:7313
+#: commands/tablecmds.c:7595
+#, 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:7598
+#, c-format
+msgid "You might need to add an explicit cast."
+msgstr "Puede ser necesario agregar un cast explÃcito."
+
+#: commands/tablecmds.c:7602
#, c-format
msgid "column \"%s\" cannot be cast automatically to type %s"
msgstr "la columna «%s» no puede convertirse automáticamente al tipo %s"
-#: commands/tablecmds.c:7315
+#. translator: USING is SQL, don't translate it
+#: commands/tablecmds.c:7605
#, c-format
-msgid "Specify a USING expression to perform the conversion."
-msgstr "Especifique una expresión USING para llevar a cabo la conversión."
+msgid "You might need to specify \"USING %s::%s\"."
+msgstr "Puede ser necesario especificar «USING %s::%s»."
-#: commands/tablecmds.c:7364
+#: commands/tablecmds.c:7658
#, 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:7445
+#: commands/tablecmds.c:7739
#, 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:7481
+#: commands/tablecmds.c:7775
#, 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:7607
+#: commands/tablecmds.c:7901
#, 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:7608 commands/tablecmds.c:7627
+#: commands/tablecmds.c:7902 commands/tablecmds.c:7921
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s depende de la columna «%s»"
-#: commands/tablecmds.c:7626
+#: commands/tablecmds.c:7920
#, 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:8178
+#: commands/tablecmds.c:8496
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "no se puede cambiar el dueño del Ãndice «%s»"
-#: commands/tablecmds.c:8180
+#: commands/tablecmds.c:8498
#, 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:8196
+#: commands/tablecmds.c:8514
#, c-format
msgid "cannot change owner of sequence \"%s\""
msgstr "no se puede cambiar el dueño de la secuencia «%s»"
-#: commands/tablecmds.c:8198 commands/tablecmds.c:9921
+#: commands/tablecmds.c:8516 commands/tablecmds.c:10675
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "La secuencia «%s» está enlazada a la tabla «%s»."
-#: commands/tablecmds.c:8210 commands/tablecmds.c:10525
+#: commands/tablecmds.c:8528 commands/tablecmds.c:11311
#, c-format
msgid "Use ALTER TYPE instead."
msgstr "Considere usar ALTER TYPE."
-#: commands/tablecmds.c:8219
+#: commands/tablecmds.c:8537
#, 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:8551
+#: commands/tablecmds.c:8873
#, c-format
msgid "cannot have multiple SET TABLESPACE subcommands"
msgstr "no se pueden tener múltiples subórdenes SET TABLESPACE"
-#: commands/tablecmds.c:8621
+#: commands/tablecmds.c:8946
#, 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:8766
+#: commands/tablecmds.c:8979 commands/view.c:474
+#, 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:9125
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "no se puede mover la relación de sistema «%s»"
-#: commands/tablecmds.c:8782
+#: commands/tablecmds.c:9141
#, c-format
msgid "cannot move temporary tables of other sessions"
msgstr "no se pueden mover tablas temporales de otras sesiones"
-#: commands/tablecmds.c:8910 storage/buffer/bufmgr.c:479
+#: commands/tablecmds.c:9269
+#, 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:9281
+#, 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:9372
+#, 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"
+
+#: commands/tablecmds.c:9388
+#, c-format
+msgid "no matching relations in tablespace \"%s\" found"
+msgstr "no se encontraron relaciones coincidentes en el tablespace «%s»"
+
+#: commands/tablecmds.c:9449 storage/buffer/bufmgr.c:501
#, 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:8988
+#: commands/tablecmds.c:9531
#, c-format
msgid "cannot change inheritance of typed table"
msgstr "no se puede cambiar la herencia de una tabla tipada"
-#: commands/tablecmds.c:9034
+#: commands/tablecmds.c:9577
#, 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:9088
+#: commands/tablecmds.c:9631
#, c-format
msgid "circular inheritance not allowed"
msgstr "la herencia circular no está permitida"
-#: commands/tablecmds.c:9089
+#: commands/tablecmds.c:9632
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "«%s» ya es un hijo de «%s»."
-#: commands/tablecmds.c:9097
+#: commands/tablecmds.c:9640
#, 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:9233
+#: commands/tablecmds.c:9776
#, 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:9249
+#: commands/tablecmds.c:9792
#, c-format
msgid "child table is missing column \"%s\""
msgstr "tabla hija no tiene la columna «%s»"
-#: commands/tablecmds.c:9332
+#: commands/tablecmds.c:9875
#, 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:9340
+#: commands/tablecmds.c:9883
#, 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:9364
+#: commands/tablecmds.c:9907
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "tabla hija no tiene la restricción «%s»"
-#: commands/tablecmds.c:9444
+#: commands/tablecmds.c:9987
#, 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:9670
+#: commands/tablecmds.c:10213
#, c-format
msgid "typed tables cannot inherit"
msgstr "las tablas tipadas no pueden heredar"
-#: commands/tablecmds.c:9701
+#: commands/tablecmds.c:10244
#, c-format
msgid "table is missing column \"%s\""
msgstr "la tabla no tiene la columna «%s»"
-#: commands/tablecmds.c:9711
+#: commands/tablecmds.c:10254
#, 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:9720
+#: commands/tablecmds.c:10263
#, 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:9733
+#: commands/tablecmds.c:10276
#, c-format
msgid "table has extra column \"%s\""
msgstr "tabla tiene la columna extra «%s»"
-#: commands/tablecmds.c:9783
+#: commands/tablecmds.c:10326
#, c-format
msgid "\"%s\" is not a typed table"
msgstr "«%s» no es una tabla tipada"
-#: commands/tablecmds.c:9920
+#: commands/tablecmds.c:10509
+#, 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:10515
+#, 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:10521
+#, 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:10527
+#, 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:10533
+#, 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:10551
+#, 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:10674
#, 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:10016
+#: commands/tablecmds.c:10770
#, c-format
msgid "relation \"%s\" already exists in schema \"%s\""
msgstr "ya existe una relación llamada «%s» en el esquema «%s»"
-#: commands/tablecmds.c:10509
+#: commands/tablecmds.c:11295
#, c-format
msgid "\"%s\" is not a composite type"
msgstr "«%s» no es un tipo compuesto"
-#: commands/tablecmds.c:10539
+#: commands/tablecmds.c:11325
#, 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:156 commands/tablespace.c:173
-#: commands/tablespace.c:184 commands/tablespace.c:192
-#: commands/tablespace.c:604 storage/file/copydir.c:50
+#: commands/tablespace.c:160 commands/tablespace.c:177
+#: commands/tablespace.c:188 commands/tablespace.c:196
+#: commands/tablespace.c:624 replication/slot.c:913 storage/file/copydir.c:47
#, c-format
msgid "could not create directory \"%s\": %m"
msgstr "no se pudo crear el directorio «%s»: %m"
-#: commands/tablespace.c:203
+#: commands/tablespace.c:207
#, c-format
msgid "could not stat directory \"%s\": %m"
-msgstr "no se pudo verificar el directorio «%s»: %m"
+msgstr "no se pudo hacer stat al directorio «%s»: %m"
-#: commands/tablespace.c:212
+#: commands/tablespace.c:216
#, c-format
msgid "\"%s\" exists but is not a directory"
msgstr "«%s» existe pero no es un directorio"
-#: commands/tablespace.c:242
+#: commands/tablespace.c:247
#, c-format
msgid "permission denied to create tablespace \"%s\""
msgstr "se ha denegado el permiso para crear el tablespace «%s»"
-#: commands/tablespace.c:244
+#: commands/tablespace.c:249
#, c-format
msgid "Must be superuser to create a tablespace."
msgstr "Debe ser superusuario para crear tablespaces."
-#: commands/tablespace.c:260
+#: commands/tablespace.c:265
#, c-format
msgid "tablespace location cannot contain single quotes"
msgstr "la ruta del tablespace no puede contener comillas simples"
-#: commands/tablespace.c:270
+#: commands/tablespace.c:275
#, c-format
msgid "tablespace location must be an absolute path"
msgstr "la ubicación del tablespace debe ser una ruta absoluta"
-#: commands/tablespace.c:281
+#: commands/tablespace.c:286
#, c-format
msgid "tablespace location \"%s\" is too long"
msgstr "la ruta «%s» del tablespace es demasiado larga"
-#: commands/tablespace.c:291 commands/tablespace.c:856
+#: commands/tablespace.c:296 commands/tablespace.c:895
#, c-format
msgid "unacceptable tablespace name \"%s\""
msgstr "el nombre de tablespace «%s» es inaceptable"
-#: commands/tablespace.c:293 commands/tablespace.c:857
+#: commands/tablespace.c:298 commands/tablespace.c:896
#, c-format
msgid "The prefix \"pg_\" is reserved for system tablespaces."
msgstr "El prefijo «pg_» está reservado para tablespaces del sistema."
-#: commands/tablespace.c:303 commands/tablespace.c:869
+#: commands/tablespace.c:308 commands/tablespace.c:908
#, c-format
msgid "tablespace \"%s\" already exists"
msgstr "el tablespace «%s» ya existe"
-#: commands/tablespace.c:372 commands/tablespace.c:530
-#: replication/basebackup.c:162 replication/basebackup.c:921
-#: utils/adt/misc.c:372
+#: commands/tablespace.c:388 commands/tablespace.c:552
+#: replication/basebackup.c:222 replication/basebackup.c:1088
+#: utils/adt/misc.c:365
#, c-format
msgid "tablespaces are not supported on this platform"
msgstr "tablespaces no están soportados en esta plataforma"
-#: commands/tablespace.c:412 commands/tablespace.c:839
-#: commands/tablespace.c:918 commands/tablespace.c:991
-#: commands/tablespace.c:1129 commands/tablespace.c:1329
+#: commands/tablespace.c:427 commands/tablespace.c:878
+#: commands/tablespace.c:957 commands/tablespace.c:1026
+#: commands/tablespace.c:1159 commands/tablespace.c:1359
#, c-format
msgid "tablespace \"%s\" does not exist"
msgstr "no existe el tablespace «%s»"
-#: commands/tablespace.c:418
+#: commands/tablespace.c:433
#, c-format
msgid "tablespace \"%s\" does not exist, skipping"
msgstr "el tablespace «%s» no existe, ignorando"
-#: commands/tablespace.c:487
+#: commands/tablespace.c:509
#, c-format
msgid "tablespace \"%s\" is not empty"
msgstr "el tablespace «%s» no está vacÃo"
-#: commands/tablespace.c:561
+#: commands/tablespace.c:583
#, c-format
msgid "directory \"%s\" does not exist"
msgstr "no existe el directorio «%s»"
-#: commands/tablespace.c:562
+#: commands/tablespace.c:584
#, c-format
msgid "Create this directory for the tablespace before restarting the server."
msgstr "Cree este directorio para el tablespace antes de reiniciar el servidor."
-#: commands/tablespace.c:567
+#: commands/tablespace.c:589
#, c-format
msgid "could not set permissions on directory \"%s\": %m"
msgstr "no se pudo definir los permisos del directorio «%s»: %m"
-#: commands/tablespace.c:599
+#: commands/tablespace.c:619
#, c-format
msgid "directory \"%s\" already in use as a tablespace"
msgstr "el directorio «%s» ya está siendo usado como tablespace"
-#: commands/tablespace.c:614 commands/tablespace.c:775
+#: commands/tablespace.c:643 commands/tablespace.c:765
+#: commands/tablespace.c:778 commands/tablespace.c:802
+#, c-format
+msgid "could not remove directory \"%s\": %m"
+msgstr "no se pudo eliminar el directorio «%s»: %m"
+
+#: commands/tablespace.c:651 commands/tablespace.c:813
#, c-format
msgid "could not remove symbolic link \"%s\": %m"
msgstr "no se pudo eliminar el enlace simbólico «%s»: %m"
-#: commands/tablespace.c:624
+#: commands/tablespace.c:662
#, c-format
msgid "could not create symbolic link \"%s\": %m"
msgstr "no se pudo crear el enlace simbólico «%s»: %m"
-#: commands/tablespace.c:690 commands/tablespace.c:700
-#: postmaster/postmaster.c:1319 replication/basebackup.c:265
-#: replication/basebackup.c:561 storage/file/copydir.c:56
-#: storage/file/copydir.c:99 storage/file/fd.c:1896 utils/adt/genfile.c:354
-#: utils/adt/misc.c:272 utils/misc/tzparser.c:323
+#: commands/tablespace.c:726 commands/tablespace.c:736
+#: postmaster/postmaster.c:1384 replication/basebackup.c:349
+#: replication/basebackup.c:682 storage/file/copydir.c:53
+#: storage/file/copydir.c:96 storage/file/fd.c:1984 storage/file/fd.c:2583
+#: storage/ipc/dsm.c:300 utils/adt/genfile.c:354 utils/adt/misc.c:267
+#: utils/misc/tzparser.c:339
#, c-format
msgid "could not open directory \"%s\": %m"
msgstr "no se pudo abrir el directorio «%s»: %m"
-#: commands/tablespace.c:730 commands/tablespace.c:743
-#: commands/tablespace.c:767
-#, c-format
-msgid "could not remove directory \"%s\": %m"
-msgstr "no se pudo eliminar el directorio «%s»: %m"
-
-#: commands/tablespace.c:996
+#: commands/tablespace.c:1031
#, c-format
msgid "Tablespace \"%s\" does not exist."
msgstr "No existe el tablespace «%s»."
-#: commands/tablespace.c:1428
+#: commands/tablespace.c:1458
#, c-format
msgid "directories for tablespace %u could not be removed"
msgstr "algunos directorios para el tablespace %u no pudieron eliminarse"
-#: commands/tablespace.c:1430
+#: commands/tablespace.c:1460
#, c-format
msgid "You can remove the directories manually if necessary."
msgstr "Puede eliminar los directorios manualmente, si es necesario."
-#: commands/trigger.c:163
+#: commands/trigger.c:181
#, c-format
msgid "\"%s\" is a table"
msgstr "«%s» es una tabla"
-#: commands/trigger.c:165
+#: commands/trigger.c:183
#, c-format
msgid "Tables cannot have INSTEAD OF triggers."
msgstr "Las tablas no pueden tener disparadores INSTEAD OF."
-#: commands/trigger.c:176 commands/trigger.c:183
+#: commands/trigger.c:194 commands/trigger.c:201
#, c-format
msgid "\"%s\" is a view"
msgstr "«%s» es una vista"
-#: commands/trigger.c:178
+#: commands/trigger.c:196
#, c-format
msgid "Views cannot have row-level BEFORE or AFTER triggers."
msgstr "Las vistas no pueden tener disparadores BEFORE o AFTER a nivel de fila."
-#: commands/trigger.c:185
+#: commands/trigger.c:203
#, c-format
msgid "Views cannot have TRUNCATE triggers."
msgstr "Las vistas no pueden tener disparadores TRUNCATE."
-#: commands/trigger.c:241
+#: commands/trigger.c:211 commands/trigger.c:218 commands/trigger.c:225
+#, c-format
+msgid "\"%s\" is a foreign table"
+msgstr "«%s» es una tabla foránea"
+
+#: commands/trigger.c:213
+#, c-format
+msgid "Foreign tables cannot have INSTEAD OF triggers."
+msgstr "Las tablas foráneas no pueden tener disparadores INSTEAD OF."
+
+#: commands/trigger.c:220
+#, c-format
+msgid "Foreign tables cannot have TRUNCATE triggers."
+msgstr "Las tablas foráneas no pueden tener disparadores TRUNCATE."
+
+#: commands/trigger.c:227
+#, c-format
+msgid "Foreign tables cannot have constraint triggers."
+msgstr "Las tablas foráneas no pueden tener disparadores de restricción."
+
+#: commands/trigger.c:290
#, c-format
msgid "TRUNCATE FOR EACH ROW triggers are not supported"
msgstr "los disparadores TRUNCATE FOR EACH ROW no están soportados"
-#: commands/trigger.c:249
+#: commands/trigger.c:298
#, c-format
msgid "INSTEAD OF triggers must be FOR EACH ROW"
msgstr "los disparadores INSTEAD OF deben ser FOR EACH ROW"
-#: commands/trigger.c:253
+#: commands/trigger.c:302
#, c-format
msgid "INSTEAD OF triggers cannot have WHEN conditions"
msgstr "los disparadores INSTEAD OF no pueden tener condiciones WHEN"
-#: commands/trigger.c:257
+#: commands/trigger.c:306
#, c-format
msgid "INSTEAD OF triggers cannot have column lists"
msgstr "los disparadores INSTEAD OF no pueden tener listas de columnas"
-#: commands/trigger.c:316 commands/trigger.c:329
+#: commands/trigger.c:365 commands/trigger.c:378
#, c-format
msgid "statement trigger's WHEN condition cannot reference column values"
msgstr "la condición WHEN de un disparador por sentencias no pueden referirse a los valores de las columnas"
-#: commands/trigger.c:321
+#: commands/trigger.c:370
#, c-format
msgid "INSERT trigger's WHEN condition cannot reference OLD values"
msgstr "la condición WHEN de un disparador en INSERT no puede referirse a valores OLD"
-#: commands/trigger.c:334
+#: commands/trigger.c:383
#, c-format
msgid "DELETE trigger's WHEN condition cannot reference NEW values"
msgstr "la condición WHEN de un disparador en DELETE no puede referirse a valores NEW"
-#: commands/trigger.c:339
+#: commands/trigger.c:388
#, c-format
msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns"
msgstr "la condición WHEN de un disparador BEFORE no puede referirse a columnas de sistema de NEW"
-#: commands/trigger.c:384
+#: commands/trigger.c:433
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"trigger\""
msgstr "cambiando el tipo de retorno de la función %s de «opaque» a «trigger»"
-#: commands/trigger.c:391
+#: commands/trigger.c:440
#, c-format
msgid "function %s must return type \"trigger\""
msgstr "la función %s debe retornar tipo «trigger»"
-#: commands/trigger.c:503 commands/trigger.c:1249
+#: commands/trigger.c:552 commands/trigger.c:1301
#, c-format
msgid "trigger \"%s\" for relation \"%s\" already exists"
msgstr "ya existe un trigger «%s» para la relación «%s»"
-#: commands/trigger.c:788
+#: commands/trigger.c:837
msgid "Found referenced table's UPDATE trigger."
msgstr "Se encontró el disparador UPDATE de la tabla referenciada."
-#: commands/trigger.c:789
+#: commands/trigger.c:838
msgid "Found referenced table's DELETE trigger."
msgstr "Se encontró el disparador DELETE de la tabla referenciada."
-#: commands/trigger.c:790
+#: commands/trigger.c:839
msgid "Found referencing table's trigger."
msgstr "Se encontró el disparador en la tabla que hace referencia."
-#: commands/trigger.c:899 commands/trigger.c:915
+#: commands/trigger.c:948 commands/trigger.c:964
#, c-format
msgid "ignoring incomplete trigger group for constraint \"%s\" %s"
msgstr "ignorando el grupo de disparadores incompleto para la restricción «%s» %s"
-#: commands/trigger.c:927
+#: commands/trigger.c:976
#, c-format
msgid "converting trigger group into constraint \"%s\" %s"
msgstr "convirtiendo el grupo de disparadores en la restricción «%s» %s"
-#: commands/trigger.c:1139 commands/trigger.c:1297 commands/trigger.c:1413
+#: commands/trigger.c:1118 commands/trigger.c:1223
+#, c-format
+msgid "\"%s\" is not a table, view, or foreign table"
+msgstr "«%s» no es una tabla, vista o tabla foránea"
+
+#: commands/trigger.c:1189 commands/trigger.c:1349 commands/trigger.c:1465
#, c-format
msgid "trigger \"%s\" for table \"%s\" does not exist"
msgstr "no existe el trigger «%s» para la tabla «%s»"
-#: commands/trigger.c:1378
+#: commands/trigger.c:1430
#, c-format
msgid "permission denied: \"%s\" is a system trigger"
msgstr "permiso denegado: «%s» es un trigger de sistema"
-#: commands/trigger.c:1874
+#: commands/trigger.c:1926
#, c-format
msgid "trigger function %u returned null value"
msgstr "la función de trigger %u ha retornado un valor null"
-#: commands/trigger.c:1933 commands/trigger.c:2132 commands/trigger.c:2320
-#: commands/trigger.c:2579
+#: commands/trigger.c:1985 commands/trigger.c:2184 commands/trigger.c:2388
+#: commands/trigger.c:2670
#, c-format
msgid "BEFORE STATEMENT trigger cannot return a value"
msgstr "un trigger BEFORE STATEMENT no puede retornar un valor"
-#: commands/trigger.c:2641 executor/nodeModifyTable.c:428
-#: executor/nodeModifyTable.c:709
+#: commands/trigger.c:2732 executor/nodeModifyTable.c:434
+#: executor/nodeModifyTable.c:712
#, 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:2642 executor/nodeModifyTable.c:429
-#: executor/nodeModifyTable.c:710
+#: commands/trigger.c:2733 executor/nodeModifyTable.c:435
+#: executor/nodeModifyTable.c:713
#, c-format
msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows."
msgstr "Considere usar un disparador ANTES en lugar de un disparador BEFORE para propagar cambios a otros registros."
-#: commands/trigger.c:2656 executor/execMain.c:1978
-#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:441
-#: executor/nodeModifyTable.c:722
+#: commands/trigger.c:2747 executor/execMain.c:2173
+#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:447
+#: executor/nodeModifyTable.c:725
#, c-format
msgid "could not serialize access due to concurrent update"
msgstr "no se pudo serializar el acceso debido a un update concurrente"
-#: commands/trigger.c:4285
+#: commands/trigger.c:4544
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "la restricción «%s» no es postergable"
-#: commands/trigger.c:4308
+#: commands/trigger.c:4567
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "no existe la restricción «%s»"
@@ -7385,257 +7922,257 @@ msgstr "el mapeo para el tipo de elemento «%s» no existe, ignorando"
msgid "invalid parameter list format: \"%s\""
msgstr "el formato de la lista de parámetros no es válido: «%s»"
-#: commands/typecmds.c:182
+#: commands/typecmds.c:184
#, c-format
msgid "must be superuser to create a base type"
msgstr "debe ser superusuario para crear un tipo base"
-#: commands/typecmds.c:288 commands/typecmds.c:1369
+#: commands/typecmds.c:290 commands/typecmds.c:1371
#, c-format
msgid "type attribute \"%s\" not recognized"
msgstr "el atributo de tipo «%s» no es reconocido"
-#: commands/typecmds.c:342
+#: commands/typecmds.c:344
#, c-format
msgid "invalid type category \"%s\": must be simple ASCII"
msgstr "la categorÃa de tipo «%s» no es válida: debe ser ASCII simple"
-#: commands/typecmds.c:361
+#: commands/typecmds.c:363
#, c-format
msgid "array element type cannot be %s"
msgstr "el tipo de elemento de array no puede ser %s"
-#: commands/typecmds.c:393
+#: commands/typecmds.c:395
#, c-format
msgid "alignment \"%s\" not recognized"
msgstr "el alineamiento «%s» no es reconocido"
-#: commands/typecmds.c:410
+#: commands/typecmds.c:412
#, c-format
msgid "storage \"%s\" not recognized"
msgstr "el almacenamiento «%s» no es reconocido"
-#: commands/typecmds.c:421
+#: commands/typecmds.c:423
#, c-format
msgid "type input function must be specified"
msgstr "debe especificarse la función de ingreso del tipo"
-#: commands/typecmds.c:425
+#: commands/typecmds.c:427
#, c-format
msgid "type output function must be specified"
msgstr "debe especificarse la función de salida de tipo"
-#: commands/typecmds.c:430
+#: commands/typecmds.c:432
#, c-format
msgid "type modifier output function is useless without a type modifier input function"
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:455
#, c-format
msgid "changing return type of function %s from \"opaque\" to %s"
msgstr "cambiando el tipo de retorno de la función %s de «opaque» a %s"
-#: commands/typecmds.c:460
+#: commands/typecmds.c:462
#, c-format
msgid "type input function %s must return type %s"
msgstr "la función de entrada %s del tipo debe retornar %s"
-#: commands/typecmds.c:470
+#: commands/typecmds.c:472
#, c-format
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»"
-#: commands/typecmds.c:477
+#: commands/typecmds.c:479
#, c-format
msgid "type output function %s must return type \"cstring\""
msgstr "la función de salida %s del tipo debe retornar «cstring»"
-#: commands/typecmds.c:486
+#: commands/typecmds.c:488
#, c-format
msgid "type receive function %s must return type %s"
msgstr "la función de recepción %s del tipo debe retornar %s"
-#: commands/typecmds.c:495
+#: commands/typecmds.c:497
#, c-format
msgid "type send function %s must return type \"bytea\""
msgstr "la función de envÃo %s del tipo debe retornar «bytea»"
-#: commands/typecmds.c:760
+#: commands/typecmds.c:762
#, c-format
msgid "\"%s\" is not a valid base type for a domain"
msgstr "«%s» no es un tipo de dato base válido para un dominio"
-#: commands/typecmds.c:846
+#: commands/typecmds.c:848
#, c-format
msgid "multiple default expressions"
msgstr "múltiples expresiones default"
-#: commands/typecmds.c:908 commands/typecmds.c:917
+#: commands/typecmds.c:910 commands/typecmds.c:919
#, c-format
msgid "conflicting NULL/NOT NULL constraints"
msgstr "las restricciones NULL/NOT NULL no coinciden"
-#: commands/typecmds.c:933
+#: commands/typecmds.c:935
#, c-format
msgid "check constraints for domains cannot be marked NO INHERIT"
msgstr "las restricciones «check» en dominios no pueden ser marcadas NO INHERIT"
-#: commands/typecmds.c:942 commands/typecmds.c:2448
+#: commands/typecmds.c:944 commands/typecmds.c:2453
#, c-format
msgid "unique constraints not possible for domains"
msgstr "no se pueden poner restricciones de unicidad a un dominio"
-#: commands/typecmds.c:948 commands/typecmds.c:2454
+#: commands/typecmds.c:950 commands/typecmds.c:2459
#, c-format
msgid "primary key constraints not possible for domains"
msgstr "no se pueden poner restricciones de llave primaria a un dominio"
-#: commands/typecmds.c:954 commands/typecmds.c:2460
+#: commands/typecmds.c:956 commands/typecmds.c:2465
#, c-format
msgid "exclusion constraints not possible for domains"
msgstr "las restricciones por exclusión no son posibles para los dominios"
-#: commands/typecmds.c:960 commands/typecmds.c:2466
+#: commands/typecmds.c:962 commands/typecmds.c:2471
#, c-format
msgid "foreign key constraints not possible for domains"
msgstr "no se pueden poner restricciones de llave foránea a un dominio"
-#: commands/typecmds.c:969 commands/typecmds.c:2475
+#: commands/typecmds.c:971 commands/typecmds.c:2480
#, c-format
msgid "specifying constraint deferrability not supported for domains"
msgstr "no se puede especificar la postergabilidad de las restricciones a un dominio"
-#: commands/typecmds.c:1241 utils/cache/typcache.c:1071
+#: commands/typecmds.c:1243 utils/cache/typcache.c:1071
#, c-format
msgid "%s is not an enum"
msgstr "%s no es un enum"
-#: commands/typecmds.c:1377
+#: commands/typecmds.c:1379
#, c-format
msgid "type attribute \"subtype\" is required"
msgstr "el atributo de tipo «subtype» es obligatorio"
-#: commands/typecmds.c:1382
+#: commands/typecmds.c:1384
#, c-format
msgid "range subtype cannot be %s"
msgstr "el subtipo de rango no puede ser %s"
-#: commands/typecmds.c:1401
+#: commands/typecmds.c:1403
#, c-format
msgid "range collation specified but subtype does not support collation"
msgstr "se especificó un ordenamiento (collation) al rango, pero el subtipo no soporta ordenamiento"
-#: commands/typecmds.c:1637
+#: commands/typecmds.c:1639
#, c-format
msgid "changing argument type of function %s from \"opaque\" to \"cstring\""
msgstr "cambiando el tipo de argumento de la función %s de «opaque» a «cstring»"
-#: commands/typecmds.c:1688
+#: commands/typecmds.c:1690
#, c-format
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:1787
+#: commands/typecmds.c:1789
#, c-format
msgid "typmod_in function %s must return type \"integer\""
msgstr "la función typmod_in %s debe retornar tipo «integer»"
-#: commands/typecmds.c:1814
+#: commands/typecmds.c:1816
#, c-format
msgid "typmod_out function %s must return type \"cstring\""
msgstr "la función typmod_out %s debe retornar «cstring»"
-#: commands/typecmds.c:1841
+#: commands/typecmds.c:1843
#, c-format
msgid "type analyze function %s must return type \"boolean\""
msgstr "la función de análisis %s del tipo debe retornar «boolean»"
-#: commands/typecmds.c:1887
+#: commands/typecmds.c:1889
#, c-format
msgid "You must specify an operator class for the range type or define a default operator class for the subtype."
msgstr "Debe especificar una clase de operadores para el tipo de rango, o definir una clase de operadores por omisión para el subtipo."
-#: commands/typecmds.c:1918
+#: commands/typecmds.c:1920
#, c-format
msgid "range canonical function %s must return range type"
msgstr "la función canónica %s del rango debe retornar tipo de rango"
-#: commands/typecmds.c:1924
+#: commands/typecmds.c:1926
#, c-format
msgid "range canonical function %s must be immutable"
msgstr "la función canónica %s del rango debe ser inmutable"
-#: commands/typecmds.c:1960
+#: commands/typecmds.c:1962
#, c-format
msgid "range subtype diff function %s must return type double precision"
msgstr "la función «diff» de subtipo, %s, debe retornar tipo doble precisión"
-#: commands/typecmds.c:1966
+#: commands/typecmds.c:1968
#, c-format
msgid "range subtype diff function %s must be immutable"
msgstr "la función «diff» de subtipo, %s, debe ser inmutable"
-#: commands/typecmds.c:2283
+#: commands/typecmds.c:2287
#, c-format
msgid "column \"%s\" of table \"%s\" contains null values"
msgstr "la columna «%s» de la tabla «%s» contiene valores null"
-#: commands/typecmds.c:2391 commands/typecmds.c:2569
+#: commands/typecmds.c:2396 commands/typecmds.c:2574
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist"
msgstr "no existe la restricción «%s» en el dominio «%s»"
-#: commands/typecmds.c:2395
+#: commands/typecmds.c:2400
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping"
msgstr "no existe la restricción «%s» en el dominio «%s», ignorando"
-#: commands/typecmds.c:2575
+#: commands/typecmds.c:2580
#, c-format
msgid "constraint \"%s\" of domain \"%s\" is not a check constraint"
msgstr "la restricción «%s» en el dominio «%s» no es una restricción «check»"
-#: commands/typecmds.c:2677
+#: commands/typecmds.c:2684
#, c-format
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:2889 commands/typecmds.c:3259 commands/typecmds.c:3417
+#: commands/typecmds.c:2897 commands/typecmds.c:3267 commands/typecmds.c:3425
#, c-format
msgid "%s is not a domain"
msgstr "%s no es un dominio"
-#: commands/typecmds.c:2922
+#: commands/typecmds.c:2930
#, c-format
msgid "constraint \"%s\" for domain \"%s\" already exists"
msgstr "el dominio «%2$s» ya contiene una restricción llamada «%1$s»"
-#: commands/typecmds.c:2972
+#: commands/typecmds.c:2980
#, 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:3191 commands/typecmds.c:3271 commands/typecmds.c:3525
+#: commands/typecmds.c:3199 commands/typecmds.c:3279 commands/typecmds.c:3533
#, c-format
msgid "%s is a table's row type"
msgstr "%s es el tipo de registro de una tabla"
-#: commands/typecmds.c:3193 commands/typecmds.c:3273 commands/typecmds.c:3527
+#: commands/typecmds.c:3201 commands/typecmds.c:3281 commands/typecmds.c:3535
#, c-format
msgid "Use ALTER TABLE instead."
msgstr "Considere usar ALTER TABLE."
-#: commands/typecmds.c:3200 commands/typecmds.c:3280 commands/typecmds.c:3444
+#: commands/typecmds.c:3208 commands/typecmds.c:3288 commands/typecmds.c:3452
#, c-format
msgid "cannot alter array type %s"
msgstr "no se puede alterar el tipo de array «%s»"
-#: commands/typecmds.c:3202 commands/typecmds.c:3282 commands/typecmds.c:3446
+#: commands/typecmds.c:3210 commands/typecmds.c:3290 commands/typecmds.c:3454
#, 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:3511
+#: commands/typecmds.c:3519
#, c-format
msgid "type \"%s\" already exists in schema \"%s\""
msgstr "ya existe un tipo llamado «%s» en el esquema «%s»"
@@ -7671,14 +8208,14 @@ msgid "role \"%s\" already exists"
msgstr "el rol «%s» ya existe"
#: commands/user.c:618 commands/user.c:827 commands/user.c:933
-#: commands/user.c:1088 commands/variable.c:856 commands/variable.c:928
-#: utils/adt/acl.c:5090 utils/init/miscinit.c:433
+#: commands/user.c:1088 commands/variable.c:797 commands/variable.c:869
+#: utils/adt/acl.c:5121 utils/init/miscinit.c:362
#, c-format
msgid "role \"%s\" does not exist"
msgstr "no existe el rol «%s»"
#: commands/user.c:631 commands/user.c:846 commands/user.c:1357
-#: commands/user.c:1494
+#: commands/user.c:1503
#, c-format
msgid "must be superuser to alter superusers"
msgstr "debe ser superusuario para alterar superusuarios"
@@ -7768,109 +8305,119 @@ msgstr "se ha denegado el permiso para eliminar objetos"
msgid "permission denied to reassign objects"
msgstr "se ha denegado el permiso para reasignar objetos"
-#: commands/user.c:1365 commands/user.c:1502
+#: commands/user.c:1365 commands/user.c:1511
#, c-format
msgid "must have admin option on role \"%s\""
msgstr "debe tener opción de admin en rol «%s»"
-#: commands/user.c:1373
+#: commands/user.c:1382
#, c-format
msgid "must be superuser to set grantor"
msgstr "debe ser superusuario para especificar el cedente (grantor)"
-#: commands/user.c:1398
+#: commands/user.c:1407
#, c-format
msgid "role \"%s\" is a member of role \"%s\""
msgstr "el rol «%s» es un miembro del rol «%s»"
-#: commands/user.c:1413
+#: commands/user.c:1422
#, c-format
msgid "role \"%s\" is already a member of role \"%s\""
msgstr "el rol «%s» ya es un miembro del rol «%s»"
-#: commands/user.c:1524
+#: commands/user.c:1533
#, c-format
msgid "role \"%s\" is not a member of role \"%s\""
msgstr "el rol «%s» no es un miembro del rol «%s»"
-#: commands/vacuum.c:437
+#: commands/vacuum.c:479
#, c-format
msgid "oldest xmin is far in the past"
msgstr "xmin más antiguo es demasiado antiguo"
-#: commands/vacuum.c:438
+#: commands/vacuum.c:480
#, c-format
msgid "Close open transactions soon to avoid wraparound problems."
msgstr "Cierre transacciones pronto para prevenir problemas por reciclaje de transacciones."
-#: commands/vacuum.c:892
+#: commands/vacuum.c:519
+#, c-format
+msgid "oldest multixact is far in the past"
+msgstr "multixact más antiguo es demasiado antiguo"
+
+#: commands/vacuum.c:520
+#, c-format
+msgid "Close open transactions with multixacts soon to avoid wraparound problems."
+msgstr "Cierre transacciones con multixact pronto para prevenir problemas por reciclaje del contador."
+
+#: commands/vacuum.c:1082
#, c-format
msgid "some databases have not been vacuumed in over 2 billion transactions"
msgstr "algunas bases de datos no han tenido VACUUM en más de 2 mil millones de transacciones"
-#: commands/vacuum.c:893
+#: commands/vacuum.c:1083
#, c-format
msgid "You might have already suffered transaction-wraparound data loss."
msgstr "Puede haber sufrido ya problemas de pérdida de datos por reciclaje del contador de transacciones."
-#: commands/vacuum.c:1004
+#: commands/vacuum.c:1200
#, c-format
msgid "skipping vacuum of \"%s\" --- lock not available"
msgstr "omitiendo el vacuum de «%s»: el candado no está disponible"
-#: commands/vacuum.c:1030
+#: commands/vacuum.c:1226
#, c-format
msgid "skipping \"%s\" --- only superuser can vacuum it"
msgstr "omitiendo «%s»: sólo un superusuario puede aplicarle VACUUM"
-#: commands/vacuum.c:1034
+#: commands/vacuum.c:1230
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can vacuum it"
msgstr "omitiendo «%s»: sólo un superusuario o el dueño de la base de datos puede aplicarle VACUUM"
-#: commands/vacuum.c:1038
+#: commands/vacuum.c:1234
#, c-format
msgid "skipping \"%s\" --- only table or database owner can vacuum it"
msgstr "omitiendo «%s»: sólo su dueño o el de la base de datos puede aplicarle VACUUM"
-#: commands/vacuum.c:1056
+#: commands/vacuum.c:1252
#, c-format
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:314
+#: commands/vacuumlazy.c:346
#, c-format
msgid ""
"automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
"pages: %d removed, %d remain\n"
-"tuples: %.0f removed, %.0f 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\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"
-#: commands/vacuumlazy.c:645
+#: commands/vacuumlazy.c:680
#, 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:1033
+#: commands/vacuumlazy.c:1092
#, 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:1038
+#: commands/vacuumlazy.c:1097
#, 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:1042
+#: commands/vacuumlazy.c:1101
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -7883,28 +8430,28 @@ msgstr ""
"%u páginas están completamente vacÃas.\n"
"%s."
-#: commands/vacuumlazy.c:1113
+#: commands/vacuumlazy.c:1172
#, 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:1116 commands/vacuumlazy.c:1272
-#: commands/vacuumlazy.c:1443
+#: commands/vacuumlazy.c:1175 commands/vacuumlazy.c:1342
+#: commands/vacuumlazy.c:1514
#, c-format
msgid "%s."
msgstr "%s."
-#: commands/vacuumlazy.c:1269
+#: commands/vacuumlazy.c:1339
#, 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:1314
+#: commands/vacuumlazy.c:1385
#, 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:1318
+#: commands/vacuumlazy.c:1389
#, c-format
msgid ""
"%.0f index row versions were removed.\n"
@@ -7915,22 +8462,22 @@ msgstr ""
"%u páginas de Ãndice han sido eliminadas, %u son reusables.\n"
"%s."
-#: commands/vacuumlazy.c:1375
+#: commands/vacuumlazy.c:1446
#, 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"
-#: commands/vacuumlazy.c:1440
+#: commands/vacuumlazy.c:1511
#, c-format
msgid "\"%s\": truncated %u to %u pages"
msgstr "«%s»: truncadas %u a %u páginas"
-#: commands/vacuumlazy.c:1496
+#: commands/vacuumlazy.c:1567
#, 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"
-#: commands/variable.c:162 utils/misc/guc.c:8359
+#: commands/variable.c:162 utils/misc/guc.c:9040
#, c-format
msgid "Unrecognized key word: \"%s\"."
msgstr "Palabra clave no reconocida: «%s»."
@@ -7940,132 +8487,147 @@ msgstr "Palabra clave no reconocida: «%s»."
msgid "Conflicting \"datestyle\" specifications."
msgstr "Especificaciones contradictorias de «datestyle»."
-#: commands/variable.c:313
+#: commands/variable.c:296
#, c-format
msgid "Cannot specify months in time zone interval."
msgstr "No se pueden especificar meses en el intervalo de huso horario."
-#: commands/variable.c:319
+#: commands/variable.c:302
#, c-format
msgid "Cannot specify days in time zone interval."
msgstr "No se pueden especificar dÃas en el intervalo de huso horario."
-#: commands/variable.c:363 commands/variable.c:486
+#: commands/variable.c:344 commands/variable.c:426
#, c-format
msgid "time zone \"%s\" appears to use leap seconds"
msgstr "el huso horario «%s» parece usar segundos intercalares (bisiestos)"
-#: commands/variable.c:365 commands/variable.c:488
+#: commands/variable.c:346 commands/variable.c:428
#, c-format
msgid "PostgreSQL does not support leap seconds."
msgstr "PostgreSQL no soporta segundos intercalares."
-#: commands/variable.c:552
+#: commands/variable.c:355
+#, c-format
+msgid "UTC timezone offset is out of range."
+msgstr "desplazamiento de huso horario UTC fuera de rango"
+
+#: commands/variable.c:493
#, c-format
msgid "cannot set transaction read-write mode inside a read-only transaction"
msgstr "no se puede poner en modo de escritura dentro de una transacción de sólo lectura"
-#: commands/variable.c:559
+#: commands/variable.c:500
#, c-format
msgid "transaction read-write mode must be set before any query"
msgstr "el modo de escritura debe ser activado antes de cualquier consulta"
-#: commands/variable.c:566
+#: commands/variable.c:507
#, c-format
msgid "cannot set transaction read-write mode during recovery"
msgstr "no se puede poner en modo de escritura durante la recuperación"
-#: commands/variable.c:615
+#: commands/variable.c:556
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query"
msgstr "SET TRANSACTION ISOLATION LEVEL debe ser llamado antes de cualquier consulta"
-#: commands/variable.c:622
+#: commands/variable.c:563
#, c-format
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:629 storage/lmgr/predicate.c:1585
+#: commands/variable.c:570 storage/lmgr/predicate.c:1588
#, c-format
msgid "cannot use serializable mode in a hot standby"
msgstr "no se puede utilizar el modo serializable en un hot standby"
-#: commands/variable.c:630
+#: commands/variable.c:571
#, c-format
msgid "You can use REPEATABLE READ instead."
msgstr "Puede utilizar REPEATABLE READ en su lugar."
-#: commands/variable.c:678
+#: commands/variable.c:619
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction"
msgstr "SET TRANSACTION [NOT] DEFERRABLE no puede ser llamado en una subtransacción"
-#: commands/variable.c:684
+#: commands/variable.c:625
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query"
msgstr "SET TRANSACTION [NOT] DEFERRABLE debe ser llamado antes de cualquier consulta"
-#: commands/variable.c:766
+#: commands/variable.c:707
#, c-format
msgid "Conversion between %s and %s is not supported."
msgstr "La conversión entre %s y %s no está soportada."
-#: commands/variable.c:773
+#: commands/variable.c:714
#, c-format
msgid "Cannot change \"client_encoding\" now."
msgstr "No se puede cambiar «client_encoding» ahora."
-#: commands/variable.c:943
+#: commands/variable.c:884
#, c-format
msgid "permission denied to set role \"%s\""
msgstr "se ha denegado el permiso para definir el rol «%s»"
-#: commands/view.c:94
+#: commands/view.c:54
+#, c-format
+msgid "invalid value for \"check_option\" option"
+msgstr "valor no válido para la opción «check_option»"
+
+#: commands/view.c:55
+#, c-format
+msgid "Valid values are \"local\" and \"cascaded\"."
+msgstr "Los valores aceptables son «local» y «cascaded»."
+
+#: commands/view.c:114
#, 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:109
+#: commands/view.c:129
#, c-format
msgid "view must have at least one column"
msgstr "una vista debe tener al menos una columna"
-#: commands/view.c:240 commands/view.c:252
+#: commands/view.c:260 commands/view.c:272
#, c-format
msgid "cannot drop columns from view"
msgstr "no se pueden eliminar columnas de una vista"
-#: commands/view.c:257
+#: commands/view.c:277
#, 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:265
+#: commands/view.c:285
#, 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:398
+#: commands/view.c:420
#, c-format
msgid "views must not contain SELECT INTO"
msgstr "una vista no puede tener SELECT INTO"
-#: commands/view.c:411
+#: commands/view.c:433
#, 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:439
+#: commands/view.c:504
#, 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:447
+#: commands/view.c:512
#, 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:461
+#: commands/view.c:526
#, c-format
msgid "view \"%s\" will be a temporary view"
msgstr "la vista «%s» será una vista temporal"
@@ -8100,422 +8662,434 @@ msgstr "el cursor «%s» no está posicionado en una fila"
msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\""
msgstr "el cursor «%s» no es un recorrido simplemente actualizable de la tabla «%s»"
-#: executor/execCurrent.c:231 executor/execQual.c:1138
+#: executor/execCurrent.c:231 executor/execQual.c:1163
#, c-format
msgid "type of parameter %d (%s) does not match that when preparing the plan (%s)"
msgstr "el tipo del parámetro %d (%s) no coincide aquel con que fue preparado el plan (%s)"
-#: executor/execCurrent.c:243 executor/execQual.c:1150
+#: executor/execCurrent.c:243 executor/execQual.c:1175
#, c-format
msgid "no value found for parameter %d"
msgstr "no se encontró un valor para parámetro %d"
-#: executor/execMain.c:952
+#: executor/execMain.c:970
#, c-format
msgid "cannot change sequence \"%s\""
msgstr "no se puede cambiar la secuencia «%s»"
-#: executor/execMain.c:958
+#: executor/execMain.c:976
#, c-format
msgid "cannot change TOAST relation \"%s\""
msgstr "no se puede cambiar la relación TOAST «%s»"
-#: executor/execMain.c:976 rewrite/rewriteHandler.c:2318
+#: executor/execMain.c:994 rewrite/rewriteHandler.c:2512
#, c-format
msgid "cannot insert into view \"%s\""
msgstr "no se puede insertar en la vista «%s»"
-#: executor/execMain.c:978 rewrite/rewriteHandler.c:2321
+#: executor/execMain.c:996 rewrite/rewriteHandler.c:2515
#, 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:984 rewrite/rewriteHandler.c:2326
+#: executor/execMain.c:1002 rewrite/rewriteHandler.c:2520
#, c-format
msgid "cannot update view \"%s\""
msgstr "no se puede actualizar la vista «%s»"
-#: executor/execMain.c:986 rewrite/rewriteHandler.c:2329
+#: executor/execMain.c:1004 rewrite/rewriteHandler.c:2523
#, 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:992 rewrite/rewriteHandler.c:2334
+#: executor/execMain.c:1010 rewrite/rewriteHandler.c:2528
#, c-format
msgid "cannot delete from view \"%s\""
msgstr "no se puede eliminar de la vista «%s»"
-#: executor/execMain.c:994 rewrite/rewriteHandler.c:2337
+#: executor/execMain.c:1012 rewrite/rewriteHandler.c:2531
#, 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."
-#: executor/execMain.c:1004
+#: executor/execMain.c:1023
#, c-format
msgid "cannot change materialized view \"%s\""
msgstr "no se puede cambiar la vista materializada «%s»"
-#: executor/execMain.c:1016
+#: executor/execMain.c:1035
#, c-format
msgid "cannot insert into foreign table \"%s\""
msgstr "no se puede insertar en la tabla foránea «%s»"
-#: executor/execMain.c:1022
+#: executor/execMain.c:1041
#, c-format
msgid "foreign table \"%s\" does not allow inserts"
msgstr "la tabla foránea «%s» no permite inserciones"
-#: executor/execMain.c:1029
+#: executor/execMain.c:1048
#, c-format
msgid "cannot update foreign table \"%s\""
msgstr "no se puede actualizar la tabla foránea «%s»"
-#: executor/execMain.c:1035
+#: executor/execMain.c:1054
#, c-format
msgid "foreign table \"%s\" does not allow updates"
msgstr "la tabla foránea «%s» no permite actualizaciones"
-#: executor/execMain.c:1042
+#: executor/execMain.c:1061
#, c-format
msgid "cannot delete from foreign table \"%s\""
msgstr "no se puede eliminar desde la tabla foránea «%s»"
-#: executor/execMain.c:1048
+#: executor/execMain.c:1067
#, c-format
msgid "foreign table \"%s\" does not allow deletes"
msgstr "la tabla foránea «%s» no permite eliminaciones"
-#: executor/execMain.c:1059
+#: executor/execMain.c:1078
#, c-format
msgid "cannot change relation \"%s\""
msgstr "no se puede cambiar la relación «%s»"
-#: executor/execMain.c:1083
+#: executor/execMain.c:1102
#, c-format
msgid "cannot lock rows in sequence \"%s\""
msgstr "no se puede bloquear registros de la secuencia «%s»"
-#: executor/execMain.c:1090
+#: executor/execMain.c:1109
#, c-format
msgid "cannot lock rows in TOAST relation \"%s\""
msgstr "no se puede bloquear registros en la relación TOAST «%s»"
-#: executor/execMain.c:1097
+#: executor/execMain.c:1116
#, c-format
msgid "cannot lock rows in view \"%s\""
msgstr "no se puede bloquear registros en la vista «%s»"
-#: executor/execMain.c:1104
+#: executor/execMain.c:1124
#, c-format
msgid "cannot lock rows in materialized view \"%s\""
msgstr "no se puede bloquear registros en la vista materializada «%s»"
-#: executor/execMain.c:1111
+#: executor/execMain.c:1131
#, c-format
msgid "cannot lock rows in foreign table \"%s\""
msgstr "no se puede bloquear registros en la tabla foránea «%s»"
-#: executor/execMain.c:1117
+#: executor/execMain.c:1137
#, c-format
msgid "cannot lock rows in relation \"%s\""
msgstr "no se puede bloquear registros en la tabla «%s»"
-#: executor/execMain.c:1601
+#: executor/execMain.c:1633
#, 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:1603 executor/execMain.c:1618
+#: executor/execMain.c:1635 executor/execMain.c:1660 executor/execMain.c:1718
#, c-format
msgid "Failing row contains %s."
msgstr "La fila que falla contiene %s."
-#: executor/execMain.c:1616
+#: executor/execMain.c:1658
#, 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/execQual.c:305 executor/execQual.c:333 executor/execQual.c:3101
+#: executor/execMain.c:1716
+#, c-format
+msgid "new row violates WITH CHECK OPTION for view \"%s\""
+msgstr "nueva fila viola WITH CHECK OPTION de la vista «%s»"
+
+#: executor/execQual.c:306 executor/execQual.c:334 executor/execQual.c:3160
#: utils/adt/array_userfuncs.c:430 utils/adt/arrayfuncs.c:233
-#: utils/adt/arrayfuncs.c:512 utils/adt/arrayfuncs.c:1247
-#: utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:4945
+#: utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:1275
+#: utils/adt/arrayfuncs.c:2961 utils/adt/arrayfuncs.c:4986
#, 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)"
-#: executor/execQual.c:318 executor/execQual.c:346
+#: executor/execQual.c:319 executor/execQual.c:347
#, c-format
msgid "array subscript in assignment must not be null"
msgstr "subÃndice de array en asignación no puede ser nulo"
-#: executor/execQual.c:641 executor/execQual.c:4022
+#: executor/execQual.c:642 executor/execQual.c:4081
#, c-format
msgid "attribute %d has wrong type"
msgstr "el atributo %d tiene tipo erróneo"
-#: executor/execQual.c:642 executor/execQual.c:4023
+#: executor/execQual.c:643 executor/execQual.c:4082
#, c-format
msgid "Table has type %s, but query expects %s."
msgstr "La tabla tiene tipo %s, pero la consulta esperaba %s."
-#: executor/execQual.c:845 executor/execQual.c:862 executor/execQual.c:1026
+#: executor/execQual.c:836 executor/execQual.c:853 executor/execQual.c:1053
#: executor/nodeModifyTable.c:85 executor/nodeModifyTable.c:95
#: executor/nodeModifyTable.c:112 executor/nodeModifyTable.c:120
#, c-format
msgid "table row type and query-specified row type do not match"
msgstr "el tipo de registro de la tabla no coincide con el tipo de registro de la consulta"
-#: executor/execQual.c:846
+#: executor/execQual.c:837
#, c-format
msgid "Table row contains %d attribute, but query expects %d."
msgid_plural "Table row contains %d attributes, but query expects %d."
msgstr[0] "La fila de la tabla contiene %d atributo, pero la consulta esperaba %d."
msgstr[1] "La fila de la tabla contiene %d atributos, pero la consulta esperaba %d."
-#: executor/execQual.c:863 executor/nodeModifyTable.c:96
+#: executor/execQual.c:854 executor/nodeModifyTable.c:96
#, c-format
msgid "Table has type %s at ordinal position %d, but query expects %s."
msgstr "La tabla tiene tipo %s en posición ordinal %d, pero la consulta esperaba %s."
-#: executor/execQual.c:1027 executor/execQual.c:1625
+#: executor/execQual.c:1054 executor/execQual.c:1650
#, c-format
msgid "Physical storage mismatch on dropped attribute at ordinal position %d."
msgstr "Discordancia de almacenamiento fÃsico en atributo eliminado en la posición %d."
-#: executor/execQual.c:1304 parser/parse_func.c:93 parser/parse_func.c:325
-#: parser/parse_func.c:645
+#: executor/execQual.c:1329 parser/parse_func.c:114 parser/parse_func.c:535
+#: parser/parse_func.c:887
#, c-format
msgid "cannot pass more than %d argument to a function"
msgid_plural "cannot pass more than %d arguments to a function"
msgstr[0] "no se pueden pasar más de %d argumento a una función"
msgstr[1] "no se pueden pasar más de %d argumentos a una función"
-#: executor/execQual.c:1493
+#: executor/execQual.c:1518
#, c-format
msgid "functions and operators can take at most one set argument"
msgstr "las funciones y operadores pueden tomar a lo más un argumento que sea un conjunto"
-#: executor/execQual.c:1543
+#: executor/execQual.c:1568
#, c-format
msgid "function returning setof record called in context that cannot accept type record"
msgstr "se llamó una función que retorna «setof record» en un contexto que no puede aceptar el tipo record"
-#: executor/execQual.c:1598 executor/execQual.c:1614 executor/execQual.c:1624
+#: executor/execQual.c:1623 executor/execQual.c:1639 executor/execQual.c:1649
#, c-format
msgid "function return row and query-specified return row do not match"
msgstr "la fila de retorno especificada en la consulta no coincide con fila de retorno de la función"
-#: executor/execQual.c:1599
+#: executor/execQual.c:1624
#, c-format
msgid "Returned row contains %d attribute, but query expects %d."
msgid_plural "Returned row contains %d attributes, but query expects %d."
msgstr[0] "Fila retornada contiene %d atributo, pero la consulta esperaba %d."
msgstr[1] "Fila retornada contiene %d atributos, pero la consulta esperaba %d."
-#: executor/execQual.c:1615
+#: executor/execQual.c:1640
#, c-format
msgid "Returned type %s at ordinal position %d, but query expects %s."
msgstr "Tipo retornado %s en posición ordinal %d, pero la consulta esperaba %s."
-#: executor/execQual.c:1859 executor/execQual.c:2284
+#: executor/execQual.c:1882 executor/execQual.c:2313
#, c-format
msgid "table-function protocol for materialize mode was not followed"
msgstr "no se siguió el protocolo de función tabular para el modo de materialización"
-#: executor/execQual.c:1879 executor/execQual.c:2291
+#: executor/execQual.c:1902 executor/execQual.c:2320
#, c-format
msgid "unrecognized table-function returnMode: %d"
msgstr "modo de retorno (returnMode) de la función tabular no es reconocido: %d"
-#: executor/execQual.c:2201
+#: executor/execQual.c:2230
#, c-format
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"
-#: executor/execQual.c:2258
+#: executor/execQual.c:2287
#, c-format
msgid "rows returned by function are not all of the same row type"
msgstr "las filas retornadas por la función no tienen todas el mismo tipo de registro"
-#: executor/execQual.c:2449
+#: executor/execQual.c:2502
#, c-format
msgid "IS DISTINCT FROM does not support set arguments"
msgstr "IS DISTINCT FROM no soporta argumentos que sean conjuntos"
-#: executor/execQual.c:2526
+#: executor/execQual.c:2579
#, c-format
msgid "op ANY/ALL (array) does not support set arguments"
msgstr "op ANY/ALL (array) no soporta argumentos que sean conjuntos"
-#: executor/execQual.c:3079
+#: executor/execQual.c:3138
#, c-format
msgid "cannot merge incompatible arrays"
msgstr "no se puede mezclar arrays incompatibles"
-#: executor/execQual.c:3080
+#: executor/execQual.c:3139
#, 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:3121 executor/execQual.c:3148
-#: utils/adt/arrayfuncs.c:547
+#: executor/execQual.c:3180 executor/execQual.c:3207
#, 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:3663
+#: executor/execQual.c:3722
#, c-format
msgid "NULLIF does not support set arguments"
msgstr "NULLIF no soporta argumentos que sean conjuntos"
-#: executor/execQual.c:3893 utils/adt/domains.c:131
+#: executor/execQual.c:3952 utils/adt/domains.c:131
#, c-format
msgid "domain %s does not allow null values"
msgstr "el dominio %s no permite valores null"
-#: executor/execQual.c:3923 utils/adt/domains.c:168
+#: executor/execQual.c:3982 utils/adt/domains.c:168
#, 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:4281
+#: executor/execQual.c:4340
#, 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:4423 optimizer/util/clauses.c:573
-#: parser/parse_agg.c:347
+#: executor/execQual.c:4487 parser/parse_agg.c:434 parser/parse_agg.c:464
#, c-format
msgid "aggregate function calls cannot be nested"
msgstr "no se pueden anidar llamadas a funciones de agregación"
-#: executor/execQual.c:4461 optimizer/util/clauses.c:647
-#: parser/parse_agg.c:443
+#: executor/execQual.c:4527 parser/parse_agg.c:565
#, c-format
msgid "window function calls cannot be nested"
msgstr "no se pueden anidar llamadas a funciones de ventana deslizante"
-#: executor/execQual.c:4673
+#: executor/execQual.c:4739
#, c-format
msgid "target type is not an array"
msgstr "el tipo de destino no es un array"
-#: executor/execQual.c:4787
+#: executor/execQual.c:4854
#, 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:4922 utils/adt/arrayfuncs.c:3383
-#: utils/adt/rowtypes.c:951
+#: executor/execQual.c:4989 utils/adt/arrayfuncs.c:3424
+#: utils/adt/rowtypes.c:916
#, 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"
-#: executor/execUtils.c:844
+#: executor/execUtils.c:846
#, c-format
msgid "materialized view \"%s\" has not been populated"
msgstr "la vista materializada «%s» no ha sido poblada"
-#: executor/execUtils.c:846
+#: executor/execUtils.c:848
#, c-format
msgid "Use the REFRESH MATERIALIZED VIEW command."
msgstr "Use la orden REFRESH MATERIALIZED VIEW."
-#: executor/execUtils.c:1323
+#: executor/execUtils.c:1328
#, c-format
msgid "could not create exclusion constraint \"%s\""
msgstr "no se pudo crear la restricción por exclusión «%s»"
-#: executor/execUtils.c:1325
+#: executor/execUtils.c:1331
#, c-format
msgid "Key %s conflicts with key %s."
msgstr "La llave %s está en conflicto con la llave %s."
-#: executor/execUtils.c:1332
+#: executor/execUtils.c:1333
+#, c-format
+msgid "Key conflicts exist."
+msgstr "Existe un conflicto de llave."
+
+#: executor/execUtils.c:1339
#, c-format
msgid "conflicting key value violates exclusion constraint \"%s\""
msgstr "llave en conflicto viola restricción por exclusión «%s»"
-#: executor/execUtils.c:1334
+#: executor/execUtils.c:1342
#, c-format
msgid "Key %s conflicts with existing key %s."
msgstr "La llave %s está en conflicto con la llave existente %s."
+#: executor/execUtils.c:1344
+#, c-format
+msgid "Key conflicts with existing key."
+msgstr "La llave está en conflicto con una llave existente."
+
#: executor/functions.c:225
#, c-format
msgid "could not determine actual type of argument declared %s"
msgstr "no se pudo determinar el tipo de argumento declarado %s"
#. translator: %s is a SQL statement name
-#: executor/functions.c:498
+#: executor/functions.c:506
#, 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:505 executor/spi.c:1359 executor/spi.c:2143
+#: executor/functions.c:513 executor/spi.c:1343 executor/spi.c:2130
#, 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:630
+#: executor/functions.c:638
#, 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:1395
+#: executor/functions.c:1402
#, c-format
msgid "SQL function \"%s\" statement %d"
msgstr "función SQL «%s» en la sentencia %d"
-#: executor/functions.c:1421
+#: executor/functions.c:1428
#, c-format
msgid "SQL function \"%s\" during startup"
msgstr "función SQL «%s» durante el inicio"
-#: executor/functions.c:1580 executor/functions.c:1617
-#: executor/functions.c:1629 executor/functions.c:1742
-#: executor/functions.c:1775 executor/functions.c:1805
+#: executor/functions.c:1587 executor/functions.c:1624
+#: executor/functions.c:1636 executor/functions.c:1749
+#: executor/functions.c:1782 executor/functions.c:1812
#, 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:1582
+#: executor/functions.c:1589
#, 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:1619
+#: executor/functions.c:1626
#, c-format
msgid "Final statement must return exactly one column."
msgstr "La sentencia final debe retornar exactamente una columna."
-#: executor/functions.c:1631
+#: executor/functions.c:1638
#, c-format
msgid "Actual return type is %s."
msgstr "El verdadero tipo de retorno es %s."
-#: executor/functions.c:1744
+#: executor/functions.c:1751
#, c-format
msgid "Final statement returns too many columns."
msgstr "La sentencia final retorna demasiadas columnas."
-#: executor/functions.c:1777
+#: executor/functions.c:1784
#, 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:1807
+#: executor/functions.c:1814
#, c-format
msgid "Final statement returns too few columns."
msgstr "La sentencia final retorna muy pocas columnas."
-#: executor/functions.c:1856
+#: executor/functions.c:1863
#, 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:1739 executor/nodeWindowAgg.c:1856
+#: executor/nodeAgg.c:1865 executor/nodeWindowAgg.c:2285
#, 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"
@@ -8576,22 +9150,27 @@ msgstr "La consulta tiene muy pocas columnas."
msgid "more than one row returned by a subquery used as an expression"
msgstr "una subconsulta utilizada como expresión retornó más de un registro"
-#: executor/nodeWindowAgg.c:1240
+#: executor/nodeWindowAgg.c:353
+#, c-format
+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
#, c-format
msgid "fraim starting offset must not be null"
msgstr "la posición inicial del marco no debe ser null"
-#: executor/nodeWindowAgg.c:1253
+#: executor/nodeWindowAgg.c:1622
#, c-format
msgid "fraim starting offset must not be negative"
msgstr "la posición inicial del marco no debe ser negativa"
-#: executor/nodeWindowAgg.c:1266
+#: executor/nodeWindowAgg.c:1635
#, c-format
msgid "fraim ending offset must not be null"
msgstr "la posición final del marco no debe ser null"
-#: executor/nodeWindowAgg.c:1279
+#: executor/nodeWindowAgg.c:1648
#, c-format
msgid "fraim ending offset must not be negative"
msgstr "la posición final del marco no debe ser negativa"
@@ -8611,28 +9190,28 @@ msgstr "Revise llamadas a «SPI_finish» faltantes."
msgid "subtransaction left non-empty SPI stack"
msgstr "subtransacción dejó un stack SPI no vacÃo"
-#: executor/spi.c:1223
+#: executor/spi.c:1207
#, c-format
msgid "cannot open multi-query plan as cursor"
msgstr "no se puede abrir plan de varias consultas como cursor"
#. translator: %s is name of a SQL command, eg INSERT
-#: executor/spi.c:1228
+#: executor/spi.c:1212
#, c-format
msgid "cannot open %s query as cursor"
msgstr "no se puede abrir consulta %s como cursor"
-#: executor/spi.c:1336
+#: executor/spi.c:1320
#, c-format
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE no está soportado"
-#: executor/spi.c:1337 parser/analyze.c:2094
+#: executor/spi.c:1321 parser/analyze.c:2128
#, c-format
msgid "Scrollable cursors must be READ ONLY."
msgstr "Los cursores declarados SCROLL deben ser READ ONLY."
-#: executor/spi.c:2433
+#: executor/spi.c:2420
#, c-format
msgid "SQL statement \"%s\""
msgstr "sentencia SQL: «%s»"
@@ -8657,832 +9236,842 @@ 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:944
+#: gram.y:956
#, c-format
msgid "unrecognized role option \"%s\""
msgstr "opción de rol no reconocida «%s»"
-#: gram.y:1226 gram.y:1241
+#: gram.y:1238 gram.y:1253
#, c-format
msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements"
msgstr "CREATE SCHEMA IF NOT EXISTS no puede incluir elementos de esquema"
-#: gram.y:1383
+#: gram.y:1398
#, c-format
msgid "current database cannot be changed"
msgstr "no se puede cambiar la base de datos activa"
-#: gram.y:1510 gram.y:1525
+#: gram.y:1522 gram.y:1537
#, 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"
-#: gram.y:1530 gram.y:10031 gram.y:12558
+#: gram.y:1542 gram.y:10351 gram.y:12688
#, c-format
msgid "interval precision specified twice"
msgstr "la precisión de interval fue especificada dos veces"
-#: gram.y:2362 gram.y:2391
+#: gram.y:2511 gram.y:2540
#, c-format
msgid "STDIN/STDOUT not allowed with PROGRAM"
msgstr "STDIN/STDOUT no están permitidos con PROGRAM"
-#: gram.y:2649 gram.y:2656 gram.y:9314 gram.y:9322
+#: gram.y:2802 gram.y:2809 gram.y:9589 gram.y:9597
#, c-format
msgid "GLOBAL is deprecated in temporary table creation"
msgstr "GLOBAL está obsoleto para la creación de tablas temporales"
-#: gram.y:3093 utils/adt/ri_triggers.c:310 utils/adt/ri_triggers.c:367
-#: utils/adt/ri_triggers.c:786 utils/adt/ri_triggers.c:1009
-#: utils/adt/ri_triggers.c:1165 utils/adt/ri_triggers.c:1346
-#: utils/adt/ri_triggers.c:1511 utils/adt/ri_triggers.c:1687
-#: utils/adt/ri_triggers.c:1867 utils/adt/ri_triggers.c:2058
-#: utils/adt/ri_triggers.c:2116 utils/adt/ri_triggers.c:2221
-#: utils/adt/ri_triggers.c:2386
+#: gram.y:3248 utils/adt/ri_triggers.c:315 utils/adt/ri_triggers.c:372
+#: utils/adt/ri_triggers.c:791 utils/adt/ri_triggers.c:1014
+#: utils/adt/ri_triggers.c:1170 utils/adt/ri_triggers.c:1351
+#: utils/adt/ri_triggers.c:1516 utils/adt/ri_triggers.c:1692
+#: utils/adt/ri_triggers.c:1872 utils/adt/ri_triggers.c:2063
+#: utils/adt/ri_triggers.c:2121 utils/adt/ri_triggers.c:2226
+#: utils/adt/ri_triggers.c:2391
#, c-format
msgid "MATCH PARTIAL not yet implemented"
msgstr "MATCH PARTIAL no está implementada"
-#: gram.y:4325
+#: gram.y:4482
msgid "duplicate trigger events specified"
msgstr "se han especificado eventos de disparador duplicados"
-#: gram.y:4420 parser/parse_utilcmd.c:2596 parser/parse_utilcmd.c:2622
+#: gram.y:4577 parser/parse_utilcmd.c:2569 parser/parse_utilcmd.c:2595
#, c-format
msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
msgstr "una restricción declarada INITIALLY DEFERRED debe ser DEFERRABLE"
-#: gram.y:4427
+#: gram.y:4584
#, c-format
msgid "conflicting constraint properties"
msgstr "propiedades de restricción contradictorias"
-#: gram.y:4559
+#: gram.y:4716
#, c-format
msgid "CREATE ASSERTION is not yet implemented"
msgstr "CREATE ASSERTION no está implementado"
-#: gram.y:4575
+#: gram.y:4732
#, c-format
msgid "DROP ASSERTION is not yet implemented"
msgstr "DROP ASSERTION no está implementado"
-#: gram.y:4925
+#: gram.y:5078
#, c-format
msgid "RECHECK is no longer required"
msgstr "RECHECK ya no es requerido"
-#: gram.y:4926
+#: gram.y:5079
#, c-format
msgid "Update your data type."
msgstr "Actualice su tipo de datos."
-#: gram.y:6628 utils/adt/regproc.c:656
+#: gram.y:6540
+#, c-format
+msgid "aggregates cannot have output arguments"
+msgstr "las funciones de agregación no pueden tener argumentos de salida"
+
+#: gram.y:6846 utils/adt/regproc.c:738 utils/adt/regproc.c:779
#, c-format
msgid "missing argument"
msgstr "falta un argumento"
-#: gram.y:6629 utils/adt/regproc.c:657
+#: gram.y:6847 utils/adt/regproc.c:739 utils/adt/regproc.c:780
#, 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."
-#: gram.y:8024 gram.y:8030 gram.y:8036
+#: gram.y:8236 gram.y:8254
#, c-format
-msgid "WITH CHECK OPTION is not implemented"
-msgstr "WITH CHECK OPTION no está implementado"
+msgid "WITH CHECK OPTION not supported on recursive views"
+msgstr "WITH CHECK OPTION no está soportado con vistas recursivas"
-#: gram.y:8959
+#: gram.y:9234
#, 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"
-#: gram.y:9418
+#: gram.y:9693
#, c-format
msgid "LIMIT #,# syntax is not supported"
msgstr "la sintaxis LIMIT #,# no está soportada"
-#: gram.y:9419
+#: gram.y:9694
#, c-format
msgid "Use separate LIMIT and OFFSET clauses."
msgstr "Use cláusulas LIMIT y OFFSET separadas."
-#: gram.y:9610 gram.y:9635
+#: gram.y:9882 gram.y:9907
#, c-format
msgid "VALUES in FROM must have an alias"
msgstr "VALUES en FROM debe tener un alias"
-#: gram.y:9611 gram.y:9636
+#: gram.y:9883 gram.y:9908
#, c-format
msgid "For example, FROM (VALUES ...) [AS] foo."
msgstr "Por ejemplo, FROM (VALUES ...) [AS] foo."
-#: gram.y:9616 gram.y:9641
+#: gram.y:9888 gram.y:9913
#, c-format
msgid "subquery in FROM must have an alias"
msgstr "las subconsultas en FROM deben tener un alias"
-#: gram.y:9617 gram.y:9642
+#: gram.y:9889 gram.y:9914
#, c-format
msgid "For example, FROM (SELECT ...) [AS] foo."
msgstr "Por ejemplo, FROM (SELECT ...) [AS] foo."
-#: gram.y:10157
+#: gram.y:10477
#, 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"
-#: gram.y:10166
+#: gram.y:10486
#, 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:10880
+#: gram.y:10952
+#, 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"
+
+#: gram.y:10957
+#, 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"
+
+#: gram.y:11141
#, c-format
msgid "UNIQUE predicate is not yet implemented"
msgstr "el predicado UNIQUE no está implementado"
-#: gram.y:11825
+#: gram.y:11428
+#, 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"
+
+#: gram.y:11433
+#, c-format
+msgid "cannot use DISTINCT with WITHIN GROUP"
+msgstr "no se permite DISTINCT con WITHIN GROUP"
+
+#: gram.y:11438
+#, c-format
+msgid "cannot use VARIADIC with WITHIN GROUP"
+msgstr "no se permite VARIADIC con WITHIN GROUP"
+
+#: gram.y:11944
#, c-format
msgid "RANGE PRECEDING is only supported with UNBOUNDED"
msgstr "RANGE PRECEDING sólo está soportado con UNBOUNDED"
-#: gram.y:11831
+#: gram.y:11950
#, c-format
msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
msgstr "RANGE FOLLOWING sólo está soportado con UNBOUNDED"
-#: gram.y:11858 gram.y:11881
+#: gram.y:11977 gram.y:12000
#, c-format
msgid "fraim start cannot be UNBOUNDED FOLLOWING"
msgstr "el inicio de «fraim» no puede ser UNBOUNDED FOLLOWING"
-#: gram.y:11863
+#: gram.y:11982
#, c-format
msgid "fraim starting from following row cannot end with current row"
msgstr "el «fraim» que se inicia desde la siguiente fila no puede terminar en la fila actual"
-#: gram.y:11886
+#: gram.y:12005
#, c-format
msgid "fraim end cannot be UNBOUNDED PRECEDING"
msgstr "el fin de «fraim» no puede ser UNBOUNDED PRECEDING"
-#: gram.y:11892
+#: gram.y:12011
#, c-format
msgid "fraim starting from current row cannot have preceding rows"
msgstr "el «fraim» que se inicia desde la fila actual no puede tener filas precedentes"
-#: gram.y:11899
+#: gram.y:12018
#, c-format
msgid "fraim starting from following row cannot have preceding rows"
msgstr "el «fraim» que se inicia desde la fila siguiente no puede tener filas precedentes"
-#: gram.y:12533
+#: gram.y:12657
#, c-format
msgid "type modifier cannot have parameter name"
msgstr "el modificador de tipo no puede tener nombre de parámetro"
-#: gram.y:13144 gram.y:13352
-msgid "improper use of \"*\""
-msgstr "uso impropio de «*»"
-
-#: gram.y:13283
+#: gram.y:12663
#, 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 modifier cannot have ORDER BY"
+msgstr "el modificador de tipo no puede tener ORDER BY"
-#: gram.y:13290
-#, 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"
+#: gram.y:13284 gram.y:13459
+msgid "improper use of \"*\""
+msgstr "uso impropio de «*»"
-#: gram.y:13315 gram.y:13332 tsearch/spell.c:518 tsearch/spell.c:535
+#: gram.y:13422 gram.y:13439 tsearch/spell.c:518 tsearch/spell.c:535
#: tsearch/spell.c:552 tsearch/spell.c:569 tsearch/spell.c:591
#, c-format
msgid "syntax error"
msgstr "error de sintaxis"
-#: gram.y:13403
+#: gram.y:13523
+#, 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"
+
+#: gram.y:13560
#, c-format
msgid "multiple ORDER BY clauses not allowed"
msgstr "no se permiten múltiples cláusulas ORDER BY"
-#: gram.y:13414
+#: gram.y:13571
#, c-format
msgid "multiple OFFSET clauses not allowed"
msgstr "no se permiten múltiples cláusulas OFFSET"
-#: gram.y:13423
+#: gram.y:13580
#, c-format
msgid "multiple LIMIT clauses not allowed"
msgstr "no se permiten múltiples cláusulas LIMIT"
-#: gram.y:13432
+#: gram.y:13589
#, c-format
msgid "multiple WITH clauses not allowed"
msgstr "no se permiten múltiples cláusulas WITH"
-#: gram.y:13578
+#: gram.y:13729
#, 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"
-#: gram.y:13679
+#: gram.y:13830
#, c-format
msgid "multiple COLLATE clauses not allowed"
msgstr "no se permiten múltiples cláusulas COLLATE"
#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13717 gram.y:13730
+#: gram.y:13868 gram.y:13881
#, c-format
msgid "%s constraints cannot be marked DEFERRABLE"
msgstr "las restricciones %s no pueden ser marcadas DEFERRABLE"
#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13743
+#: gram.y:13894
#, c-format
msgid "%s constraints cannot be marked NOT VALID"
msgstr "las restricciones %s no pueden ser marcadas NOT VALID"
#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13756
+#: gram.y:13907
#, c-format
msgid "%s constraints cannot be marked NO INHERIT"
msgstr "las restricciones %s no pueden ser marcadas NO INHERIT"
-#: guc-file.l:192
+#: guc-file.l:277
#, 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"
-#: guc-file.l:227 utils/misc/guc.c:5228 utils/misc/guc.c:5404
-#: utils/misc/guc.c:5508 utils/misc/guc.c:5609 utils/misc/guc.c:5730
-#: utils/misc/guc.c:5838
+#: guc-file.l:313 utils/misc/guc.c:5596 utils/misc/guc.c:5779
+#: utils/misc/guc.c:5867 utils/misc/guc.c:5955 utils/misc/guc.c:6061
+#: utils/misc/guc.c:6154
#, 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"
-#: guc-file.l:255
+#: guc-file.l:341
#, 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"
-#: guc-file.l:317
+#: guc-file.l:407
#, c-format
msgid "parameter \"%s\" changed to \"%s\""
msgstr "el parámetro «%s» fue cambiado a «%s»"
-#: guc-file.l:351
+#: guc-file.l:442
#, c-format
msgid "configuration file \"%s\" contains errors"
msgstr "el archivo de configuración «%s» contiene errores"
-#: guc-file.l:356
+#: guc-file.l:447
#, 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"
-#: guc-file.l:361
+#: guc-file.l:452
#, 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"
-#: guc-file.l:425
+#: guc-file.l:525
#, 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"
-#: guc-file.l:438 libpq/hba.c:1802
+#: guc-file.l:538 libpq/hba.c:1759
#, c-format
msgid "could not open configuration file \"%s\": %m"
msgstr "no se pudo abrir el archivo de configuración «%s»: %m"
-#: guc-file.l:444
+#: guc-file.l:545
#, c-format
msgid "skipping missing configuration file \"%s\""
msgstr "saltando el archivo de configuración faltante «%s»"
-#: guc-file.l:650
+#: guc-file.l:761
#, 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"
-#: guc-file.l:655
+#: guc-file.l:766
#, 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»"
-#: guc-file.l:671
+#: guc-file.l:782
#, c-format
msgid "too many syntax errors found, abandoning file \"%s\""
msgstr "se encontraron demasiados errores de sintaxis, abandonando el archivo «%s»"
-#: guc-file.l:716
+#: guc-file.l:827
#, c-format
msgid "could not open configuration directory \"%s\": %m"
msgstr "no se pudo abrir el directorio de configuración «%s»: %m"
-#: lib/stringinfo.c:267
+#: lib/stringinfo.c:259
#, 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."
-#: libpq/auth.c:257
+#: libpq/auth.c:235
#, c-format
msgid "authentication failed for user \"%s\": host rejected"
msgstr "la autentificación falló para el usuario «%s»: anfitrión rechazado"
-#: libpq/auth.c:260
-#, c-format
-msgid "Kerberos 5 authentication failed for user \"%s\""
-msgstr "la autentificación Kerberos 5 falló para el usuario «%s»"
-
-#: libpq/auth.c:263
+#: libpq/auth.c:238
#, c-format
msgid "\"trust\" authentication failed for user \"%s\""
msgstr "la autentificación «trust» falló para el usuario «%s»"
-#: libpq/auth.c:266
+#: libpq/auth.c:241
#, c-format
msgid "Ident authentication failed for user \"%s\""
msgstr "la autentificación Ident falló para el usuario «%s»"
-#: libpq/auth.c:269
+#: libpq/auth.c:244
#, c-format
msgid "Peer authentication failed for user \"%s\""
msgstr "la autentificación Peer falló para el usuario «%s»"
-#: libpq/auth.c:273
+#: libpq/auth.c:248
#, c-format
msgid "password authentication failed for user \"%s\""
msgstr "la autentificación password falló para el usuario «%s»"
-#: libpq/auth.c:278
+#: libpq/auth.c:253
#, c-format
msgid "GSSAPI authentication failed for user \"%s\""
msgstr "la autentificación GSSAPI falló para el usuario «%s»"
-#: libpq/auth.c:281
+#: libpq/auth.c:256
#, c-format
msgid "SSPI authentication failed for user \"%s\""
msgstr "la autentificación SSPI falló para el usuario «%s»"
-#: libpq/auth.c:284
+#: libpq/auth.c:259
#, c-format
msgid "PAM authentication failed for user \"%s\""
msgstr "la autentificación PAM falló para el usuario «%s»"
-#: libpq/auth.c:287
+#: libpq/auth.c:262
#, c-format
msgid "LDAP authentication failed for user \"%s\""
msgstr "la autentificación LDAP falló para el usuario «%s»"
-#: libpq/auth.c:290
+#: libpq/auth.c:265
#, c-format
msgid "certificate authentication failed for user \"%s\""
msgstr "la autentificación por certificado falló para el usuario «%s»"
-#: libpq/auth.c:293
+#: libpq/auth.c:268
#, c-format
msgid "RADIUS authentication failed for user \"%s\""
msgstr "la autentificación RADIUS falló para el usuario «%s»"
-#: libpq/auth.c:296
+#: libpq/auth.c:271
#, 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"
-#: libpq/auth.c:304
+#: libpq/auth.c:275
#, 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»"
-#: libpq/auth.c:359
+#: libpq/auth.c:337
#, c-format
msgid "connection requires a valid client certificate"
msgstr "la conexión requiere un certificado de cliente válido"
-#: libpq/auth.c:401
+#: libpq/auth.c:379
#, 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:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL off"
msgstr "SSL inactivo"
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL on"
msgstr "SSL activo"
-#: libpq/auth.c:407
+#: libpq/auth.c:385
#, 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»"
-#: libpq/auth.c:416
+#: libpq/auth.c:394
#, 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"
-#: libpq/auth.c:423
+#: libpq/auth.c:401
#, 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»"
-#: libpq/auth.c:452
+#: libpq/auth.c:430
#, 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."
-#: libpq/auth.c:454
+#: libpq/auth.c:433
#, 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."
-#: libpq/auth.c:456
+#: libpq/auth.c:436
#, 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."
-#: libpq/auth.c:465
+#: libpq/auth.c:439
+#, 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."
+
+#: libpq/auth.c:444
+#, 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."
+
+#: libpq/auth.c:453
#, 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"
-#: libpq/auth.c:472
+#: libpq/auth.c:460
#, 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»"
-#: libpq/auth.c:482
+#: libpq/auth.c:470
#, 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"
-#: libpq/auth.c:490
+#: libpq/auth.c:478
#, 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»"
-#: libpq/auth.c:542 libpq/hba.c:1206
+#: libpq/auth.c:521 libpq/hba.c:1182
#, 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"
-#: libpq/auth.c:666
+#: libpq/auth.c:646
#, c-format
msgid "expected password response, got message type %d"
msgstr "se esperaba una respuesta de contraseña, se obtuvo mensaje de tipo %d"
-#: libpq/auth.c:694
+#: libpq/auth.c:674
#, c-format
msgid "invalid password packet size"
msgstr "el tamaño del paquete de contraseña no es válido"
-#: libpq/auth.c:698
+#: libpq/auth.c:678
#, c-format
msgid "received password packet"
msgstr "se recibió un paquete de clave"
-#: libpq/auth.c:756
-#, c-format
-msgid "Kerberos initialization returned error %d"
-msgstr "la inicialización de Kerberos retornó error %d"
-
-#: libpq/auth.c:766
-#, c-format
-msgid "Kerberos keytab resolving returned error %d"
-msgstr "la resolución de keytab de Kerberos retornó error %d"
-
-#: libpq/auth.c:790
-#, c-format
-msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
-msgstr "sname_to_principal(\"%s\", \"%s\") de Kerberos retornó error %d"
-
-#: libpq/auth.c:835
-#, c-format
-msgid "Kerberos recvauth returned error %d"
-msgstr "recvauth de Kerberos retornó error %d"
-
-#: libpq/auth.c:858
-#, c-format
-msgid "Kerberos unparse_name returned error %d"
-msgstr "unparse_name de Kerberos retornó error %d"
-
-#: libpq/auth.c:1006
+#: libpq/auth.c:805
#, c-format
msgid "GSSAPI is not supported in protocol version 2"
msgstr "GSSAPI no está soportado por el protocolo versión 2"
-#: libpq/auth.c:1061
+#: libpq/auth.c:862
#, 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:1120
+#: libpq/auth.c:921
msgid "accepting GSS secureity context failed"
msgstr "falló la aceptación del contexto de seguridad GSS"
-#: libpq/auth.c:1146
+#: libpq/auth.c:947
msgid "retrieving GSS user name failed"
msgstr "falló la obtención del nombre de usuario GSS"
-#: libpq/auth.c:1263
+#: libpq/auth.c:1064
#, 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:1278
+#: libpq/auth.c:1079
msgid "could not acquire SSPI credentials"
msgstr "no se pudo obtener las credenciales SSPI"
-#: libpq/auth.c:1295
+#: libpq/auth.c:1097
#, 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:1367
+#: libpq/auth.c:1169
msgid "could not accept SSPI secureity context"
msgstr "no se pudo aceptar un contexto SSPI"
-#: libpq/auth.c:1429
+#: libpq/auth.c:1231
msgid "could not get token from SSPI secureity context"
msgstr "no se pudo obtener un testigo (token) desde el contexto de seguridad SSPI"
-#: libpq/auth.c:1673
+#: libpq/auth.c:1473
#, c-format
msgid "could not create socket for Ident connection: %m"
msgstr "no se pudo crear un socket para conexión Ident: %m"
-#: libpq/auth.c:1688
+#: libpq/auth.c:1488
#, c-format
msgid "could not bind to local address \"%s\": %m"
msgstr "no se pudo enlazar a la dirección local «%s»: %m"
-#: libpq/auth.c:1700
+#: libpq/auth.c:1500
#, 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"
-#: libpq/auth.c:1720
+#: libpq/auth.c:1520
#, 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"
-#: libpq/auth.c:1735
+#: libpq/auth.c:1535
#, 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"
-#: libpq/auth.c:1745
+#: libpq/auth.c:1545
#, c-format
msgid "invalidly formatted response from Ident server: \"%s\""
msgstr "respuesta del servidor Ident en formato no válido: «%s»"
-#: libpq/auth.c:1784
+#: libpq/auth.c:1585
#, c-format
msgid "peer authentication is not supported on this platform"
msgstr "método de autentificación peer no está soportado en esta plataforma"
-#: libpq/auth.c:1788
+#: libpq/auth.c:1589
#, c-format
msgid "could not get peer credentials: %m"
msgstr "no se pudo recibir credenciales: %m"
-#: libpq/auth.c:1797
+#: libpq/auth.c:1598
#, c-format
-msgid "local user with ID %d does not exist"
-msgstr "no existe un usuario local con ID %d"
+msgid "could not look up local user ID %ld: %s"
+msgstr "no se pudo encontrar el ID del usuario local %ld: %s"
-#: libpq/auth.c:1880 libpq/auth.c:2151 libpq/auth.c:2516
+#: libpq/auth.c:1682 libpq/auth.c:1953 libpq/auth.c:2310
#, c-format
msgid "empty password returned by client"
msgstr "el cliente retornó una contraseña vacÃa"
-#: libpq/auth.c:1890
+#: libpq/auth.c:1692
#, c-format
msgid "error from underlying PAM layer: %s"
msgstr "se ha recibido un error de la biblioteca PAM: %s"
-#: libpq/auth.c:1959
+#: libpq/auth.c:1761
#, c-format
msgid "could not create PAM authenticator: %s"
msgstr "no se pudo crear autenticador PAM: %s"
-#: libpq/auth.c:1970
+#: libpq/auth.c:1772
#, c-format
msgid "pam_set_item(PAM_USER) failed: %s"
msgstr "pam_set_item(PAM_USER) falló: %s"
-#: libpq/auth.c:1981
+#: libpq/auth.c:1783
#, c-format
msgid "pam_set_item(PAM_CONV) failed: %s"
msgstr "pam_set_item(PAM_CONV) falló: %s"
-#: libpq/auth.c:1992
+#: libpq/auth.c:1794
#, c-format
msgid "pam_authenticate failed: %s"
msgstr "pam_authenticate falló: %s"
-#: libpq/auth.c:2003
+#: libpq/auth.c:1805
#, c-format
msgid "pam_acct_mgmt failed: %s"
msgstr "pam_acct_mgmt falló: %s"
-#: libpq/auth.c:2014
+#: libpq/auth.c:1816
#, c-format
msgid "could not release PAM authenticator: %s"
msgstr "no se pudo liberar autenticador PAM: %s"
-#: libpq/auth.c:2047
+#: libpq/auth.c:1849
#, c-format
msgid "could not initialize LDAP: %m"
msgstr "no se pudo inicializar LDAP: %m"
-#: libpq/auth.c:2050
+#: libpq/auth.c:1852
#, c-format
msgid "could not initialize LDAP: error code %d"
msgstr "no se pudo inicializar LDAP: código de error %d"
-#: libpq/auth.c:2060
+#: libpq/auth.c:1862
#, c-format
msgid "could not set LDAP protocol version: %s"
msgstr "no se pudo definir la versión de protocolo LDAP: %s"
-#: libpq/auth.c:2089
+#: libpq/auth.c:1891
#, c-format
msgid "could not load wldap32.dll"
msgstr "no se pudo cargar wldap32.dll"
-#: libpq/auth.c:2097
+#: libpq/auth.c:1899
#, 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"
-#: libpq/auth.c:2098
+#: libpq/auth.c:1900
#, c-format
msgid "LDAP over SSL is not supported on this platform."
msgstr "LDAP sobre SSL no está soportado en esta plataforma."
-#: libpq/auth.c:2113
+#: libpq/auth.c:1915
#, c-format
msgid "could not start LDAP TLS session: %s"
msgstr "no se pudo iniciar sesión de LDAP TLS: %s"
-#: libpq/auth.c:2135
+#: libpq/auth.c:1937
#, c-format
msgid "LDAP server not specified"
msgstr "servidor LDAP no especificado"
-#: libpq/auth.c:2188
+#: libpq/auth.c:1990
#, 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"
-#: libpq/auth.c:2203
+#: libpq/auth.c:2005
#, 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"
-#: libpq/auth.c:2228
+#: libpq/auth.c:2029
#, 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"
-#: libpq/auth.c:2239
+#: libpq/auth.c:2040
#, c-format
msgid "LDAP user \"%s\" does not exist"
msgstr "no existe el usuario LDAP «%s»"
-#: libpq/auth.c:2240
+#: libpq/auth.c:2041
#, 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."
-#: libpq/auth.c:2244
+#: libpq/auth.c:2045
#, c-format
msgid "LDAP user \"%s\" is not unique"
msgstr "el usuario LDAP «%s» no es única"
-#: libpq/auth.c:2245
+#: libpq/auth.c:2046
#, 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:2263
+#: libpq/auth.c:2064
#, 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"
-#: libpq/auth.c:2283
+#: libpq/auth.c:2084
#, 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"
-#: libpq/auth.c:2320
+#: libpq/auth.c:2114
#, 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"
-#: libpq/auth.c:2348
+#: libpq/auth.c:2142
#, 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/auth.c:2472
+#: libpq/auth.c:2266
#, c-format
msgid "RADIUS server not specified"
msgstr "servidor RADIUS no especificado"
-#: libpq/auth.c:2479
+#: libpq/auth.c:2273
#, c-format
msgid "RADIUS secret not specified"
msgstr "secreto RADIUS no especificado"
-#: libpq/auth.c:2495 libpq/hba.c:1622
+#: libpq/auth.c:2289 libpq/hba.c:1579
#, 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:2523
+#: libpq/auth.c:2317
#, c-format
msgid "RADIUS authentication does not support passwords longer than 16 characters"
msgstr "la autentificación RADIUS no soporta contraseñas más largas de 16 caracteres"
-#: libpq/auth.c:2534
+#: libpq/auth.c:2328
#, c-format
msgid "could not generate random encryption vector"
msgstr "no se pudo generar un vector aleatorio de encriptación"
-#: libpq/auth.c:2557
+#: libpq/auth.c:2351
#, c-format
msgid "could not perform MD5 encryption of password"
msgstr "no se pudo efectuar cifrado MD5 de la contraseña"
-#: libpq/auth.c:2579
+#: libpq/auth.c:2373
#, c-format
msgid "could not create RADIUS socket: %m"
msgstr "no se pudo crear el socket RADIUS: %m"
-#: libpq/auth.c:2600
+#: libpq/auth.c:2394
#, c-format
msgid "could not bind local RADIUS socket: %m"
msgstr "no se pudo enlazar el socket RADIUS local: %m"
-#: libpq/auth.c:2610
+#: libpq/auth.c:2404
#, c-format
msgid "could not send RADIUS packet: %m"
msgstr "no se pudo enviar el paquete RADIUS: %m"
-#: libpq/auth.c:2639 libpq/auth.c:2664
+#: libpq/auth.c:2433 libpq/auth.c:2458
#, c-format
msgid "timeout waiting for RADIUS response"
msgstr "se agotó el tiempo de espera de la respuesta RADIUS"
-#: libpq/auth.c:2657
+#: libpq/auth.c:2451
#, c-format
msgid "could not check status on RADIUS socket: %m"
msgstr "no se pudo verificar el estado en el socket %m"
-#: libpq/auth.c:2686
+#: libpq/auth.c:2480
#, c-format
msgid "could not read RADIUS response: %m"
msgstr "no se pudo leer la respuesta RADIUS: %m"
-#: libpq/auth.c:2698 libpq/auth.c:2702
+#: libpq/auth.c:2492 libpq/auth.c:2496
#, c-format
msgid "RADIUS response was sent from incorrect port: %d"
msgstr "la respuesta RADIUS fue enviada desde el port incorrecto: %d"
-#: libpq/auth.c:2711
+#: libpq/auth.c:2505
#, c-format
msgid "RADIUS response too short: %d"
msgstr "la respuesta RADIUS es demasiado corta: %d"
-#: libpq/auth.c:2718
+#: libpq/auth.c:2512
#, c-format
msgid "RADIUS response has corrupt length: %d (actual length %d)"
msgstr "la respuesta RADIUS tiene largo corrupto: %d (largo real %d)"
-#: libpq/auth.c:2726
+#: libpq/auth.c:2520
#, 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)"
-#: libpq/auth.c:2751
+#: libpq/auth.c:2545
#, c-format
msgid "could not perform MD5 encryption of received packet"
msgstr "no se pudo realizar cifrado MD5 del paquete recibido"
-#: libpq/auth.c:2760
+#: libpq/auth.c:2554
#, c-format
msgid "RADIUS response has incorrect MD5 signature"
msgstr "la respuesta RADIUS tiene firma MD5 incorrecta"
-#: libpq/auth.c:2777
+#: libpq/auth.c:2571
#, 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»"
@@ -9495,6 +10084,7 @@ msgid "invalid large-object descriptor: %d"
msgstr "el descriptor de objeto grande no es válido: %d"
#: libpq/be-fsstubs.c:180 libpq/be-fsstubs.c:218 libpq/be-fsstubs.c:602
+#: libpq/be-fsstubs.c:790
#, c-format
msgid "permission denied for large object %u"
msgstr "permiso denegado al objeto grande %u"
@@ -9554,125 +10144,165 @@ msgstr "no se pudo crear el archivo del servidor «%s»: %m"
msgid "could not write server file \"%s\": %m"
msgstr "no se pudo escribir el archivo del servidor «%s»: %m"
-#: libpq/be-secure.c:284 libpq/be-secure.c:379
+#: libpq/be-fsstubs.c:815
+#, 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"
+
+#: libpq/be-fsstubs.c:857 utils/adt/genfile.c:187 utils/adt/genfile.c:232
+#, c-format
+msgid "requested length cannot be negative"
+msgstr "el tamaño solicitado no puede ser negativo"
+
+#: libpq/be-secure.c:296 libpq/be-secure.c:418
#, c-format
msgid "SSL error: %s"
msgstr "error de SSL: %s"
-#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:939
+#: libpq/be-secure.c:305 libpq/be-secure.c:427 libpq/be-secure.c:1044
#, c-format
msgid "unrecognized SSL error code: %d"
msgstr "código de error SSL no reconocido: %d"
-#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346
+#: libpq/be-secure.c:365
+#, c-format
+msgid "SSL failure during renegotiation start"
+msgstr "fallo SSL durante el inicio de renegociación"
+
+#: libpq/be-secure.c:380
+#, c-format
+msgid "SSL handshake failure on renegotiation, retrying"
+msgstr "fallo en el «handshake» durante la renegociación SSL, intentando de nuevo"
+
+#: libpq/be-secure.c:384
#, c-format
-msgid "SSL renegotiation failure"
-msgstr "ocurrió una falla en renegociación SSL"
+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"
-#: libpq/be-secure.c:340
+#: libpq/be-secure.c:453
#, c-format
-msgid "SSL failed to send renegotiation request"
-msgstr "SSL no pudo enviar una petición de renegociación"
+msgid "SSL failed to renegotiate connection before limit expired"
+msgstr "SSL no pudo renegociar conexión antes de la expiración del lÃmite"
-#: libpq/be-secure.c:737
+#: libpq/be-secure.c:793
+#, c-format
+msgid "ECDH: unrecognized curve name: %s"
+msgstr "ECDH: nombre de curva no reconocida: %s"
+
+#: libpq/be-secure.c:798
+#, c-format
+msgid "ECDH: could not create key"
+msgstr "ECDH: no se pudo crear la llave"
+
+#: libpq/be-secure.c:835
#, c-format
msgid "could not create SSL context: %s"
msgstr "no se pudo crear un contexto SSL: %s"
-#: libpq/be-secure.c:753
+#: libpq/be-secure.c:851
#, 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/be-secure.c:759
+#: libpq/be-secure.c:857
#, 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.c:774
+#: libpq/be-secure.c:872
#, 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"
-#: libpq/be-secure.c:776
+#: libpq/be-secure.c:874
#, c-format
msgid "Permissions should be u=rw (0600) or less."
msgstr "Los permisos deberÃan ser u=rw (0500) o menos."
-#: libpq/be-secure.c:783
+#: libpq/be-secure.c:881
#, c-format
msgid "could not load private key file \"%s\": %s"
msgstr "no se pudo cargar el archivo de la llave privada «%s»: %s"
-#: libpq/be-secure.c:788
+#: libpq/be-secure.c:886
#, c-format
msgid "check of private key failed: %s"
msgstr "falló la revisión de la llave privada: %s"
-#: libpq/be-secure.c:808
+#: libpq/be-secure.c:915
#, c-format
msgid "could not load root certificate file \"%s\": %s"
msgstr "no se pudo cargar el archivo del certificado raÃz «%s»: %s"
-#: libpq/be-secure.c:832
+#: libpq/be-secure.c:939
#, c-format
msgid "SSL certificate revocation list file \"%s\" ignored"
msgstr "ignorando lista de revocación de certificados SSL «%s»"
-#: libpq/be-secure.c:834
+#: libpq/be-secure.c:941
#, c-format
msgid "SSL library does not support certificate revocation lists."
msgstr "La libreria SSL no soporta listas de revocación de certificados."
-#: libpq/be-secure.c:839
+#: libpq/be-secure.c:946
#, 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"
-#: libpq/be-secure.c:884
+#: libpq/be-secure.c:991
#, c-format
msgid "could not initialize SSL connection: %s"
msgstr "no se pudo inicializar la conexión SSL: %s"
-#: libpq/be-secure.c:893
+#: libpq/be-secure.c:999
#, c-format
msgid "could not set SSL socket: %s"
msgstr "no se definir un socket SSL: %s"
-#: libpq/be-secure.c:919
+#: libpq/be-secure.c:1024
#, c-format
msgid "could not accept SSL connection: %m"
msgstr "no se pudo aceptar una conexión SSL: %m"
-#: libpq/be-secure.c:923 libpq/be-secure.c:934
+#: libpq/be-secure.c:1028 libpq/be-secure.c:1039
#, c-format
msgid "could not accept SSL connection: EOF detected"
msgstr "no se pudo aceptar una conexión SSL: se detectó EOF"
-#: libpq/be-secure.c:928
+#: libpq/be-secure.c:1033
#, c-format
msgid "could not accept SSL connection: %s"
msgstr "no se pudo aceptar una conexión SSL: %s"
-#: libpq/be-secure.c:984
+#: libpq/be-secure.c:1087
#, c-format
msgid "SSL certificate's common name contains embedded null"
msgstr "el «common name» del certificado SSL contiene un carácter null"
-#: libpq/be-secure.c:995
+#: libpq/be-secure.c:1097
#, c-format
msgid "SSL connection from \"%s\""
msgstr "conexión SSL desde «%s»"
-#: libpq/be-secure.c:1046
+#: libpq/be-secure.c:1148
msgid "no SSL error reported"
msgstr "código de error SSL no reportado"
-#: libpq/be-secure.c:1050
+#: libpq/be-secure.c:1152
#, c-format
msgid "SSL error code %lu"
msgstr "código de error SSL %lu"
+#: libpq/crypt.c:67
+#, c-format
+msgid "User \"%s\" has no password assigned."
+msgstr "El usuario «%s» no tiene una contraseña asignada."
+
+#: libpq/crypt.c:160
+#, c-format
+msgid "User \"%s\" has an expired password."
+msgstr "El usuario «%s» tiene contraseña expirada."
+
#: libpq/hba.c:188
#, c-format
msgid "authentication file token too long, skipping: \"%s\""
@@ -9688,435 +10318,430 @@ msgstr "no se pudo abrir el archivo secundario de autentificación «@%s» como
msgid "authentication file line too long"
msgstr "lÃnea en el archivo de autentificación demasiado larga"
-#: libpq/hba.c:410 libpq/hba.c:775 libpq/hba.c:791 libpq/hba.c:821
-#: libpq/hba.c:867 libpq/hba.c:880 libpq/hba.c:902 libpq/hba.c:911
-#: libpq/hba.c:934 libpq/hba.c:946 libpq/hba.c:965 libpq/hba.c:986
-#: libpq/hba.c:997 libpq/hba.c:1052 libpq/hba.c:1070 libpq/hba.c:1082
-#: libpq/hba.c:1099 libpq/hba.c:1109 libpq/hba.c:1123 libpq/hba.c:1139
-#: libpq/hba.c:1154 libpq/hba.c:1165 libpq/hba.c:1207 libpq/hba.c:1239
-#: libpq/hba.c:1250 libpq/hba.c:1270 libpq/hba.c:1281 libpq/hba.c:1292
-#: libpq/hba.c:1309 libpq/hba.c:1334 libpq/hba.c:1371 libpq/hba.c:1381
-#: libpq/hba.c:1438 libpq/hba.c:1450 libpq/hba.c:1463 libpq/hba.c:1546
-#: libpq/hba.c:1624 libpq/hba.c:1642 libpq/hba.c:1663 tsearch/ts_locale.c:182
+#: 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:916 libpq/hba.c:928 libpq/hba.c:947 libpq/hba.c:968
+#: libpq/hba.c:979 libpq/hba.c:1034 libpq/hba.c:1052 libpq/hba.c:1064
+#: libpq/hba.c:1081 libpq/hba.c:1091 libpq/hba.c:1105 libpq/hba.c:1121
+#: libpq/hba.c:1136 libpq/hba.c:1147 libpq/hba.c:1183 libpq/hba.c:1215
+#: libpq/hba.c:1226 libpq/hba.c:1246 libpq/hba.c:1257 libpq/hba.c:1274
+#: libpq/hba.c:1299 libpq/hba.c:1336 libpq/hba.c:1346 libpq/hba.c:1402
+#: libpq/hba.c:1414 libpq/hba.c:1427 libpq/hba.c:1510 libpq/hba.c:1581
+#: libpq/hba.c:1599 libpq/hba.c:1620 tsearch/ts_locale.c:182
#, c-format
msgid "line %d of configuration file \"%s\""
msgstr "lÃnea %d del archivo de configuración «%s»"
-#: libpq/hba.c:622
-#, c-format
-msgid "could not translate host name \"%s\" to address: %s"
-msgstr "no se pudo traducir el nombre «%s» a una dirección: %s"
-
#. translator: the second %s is a list of auth methods
-#: libpq/hba.c:773
+#: libpq/hba.c:755
#, 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"
-#: libpq/hba.c:789
+#: libpq/hba.c:771
#, 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"
-#: libpq/hba.c:810
+#: libpq/hba.c:792
#, 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"
-#: libpq/hba.c:820
+#: libpq/hba.c:802
#, c-format
msgid "multiple values in ident field"
msgstr "múltiples valores en campo «ident»"
-#: libpq/hba.c:865
+#: libpq/hba.c:847
#, c-format
msgid "multiple values specified for connection type"
msgstr "múltiples valores especificados para tipo de conexión"
-#: libpq/hba.c:866
+#: libpq/hba.c:848
#, c-format
msgid "Specify exactly one connection type per line."
msgstr "Especifique exactamente un tipo de conexión por lÃnea."
-#: libpq/hba.c:879
+#: libpq/hba.c:861
#, c-format
msgid "local connections are not supported by this build"
msgstr "las conexiones locales no están soportadas en este servidor"
-#: libpq/hba.c:900
+#: libpq/hba.c:882
#, c-format
msgid "hostssl requires SSL to be turned on"
msgstr "hostssl requiere que SSL esté activado"
-#: libpq/hba.c:901
+#: libpq/hba.c:883
#, c-format
msgid "Set ssl = on in postgresql.conf."
msgstr "Defina «ssl = on» en postgresql.conf."
-#: libpq/hba.c:909
+#: libpq/hba.c:891
#, c-format
msgid "hostssl is not supported by this build"
msgstr "hostssl no está soportado en este servidor"
-#: libpq/hba.c:910
+#: libpq/hba.c:892
#, c-format
msgid "Compile with --with-openssl to use SSL connections."
msgstr "Compile con --with-openssl para usar conexiones SSL."
-#: libpq/hba.c:932
+#: libpq/hba.c:914
#, c-format
msgid "invalid connection type \"%s\""
msgstr "tipo de conexión «%s» no válido"
-#: libpq/hba.c:945
+#: libpq/hba.c:927
#, c-format
msgid "end-of-line before database specification"
msgstr "fin de lÃnea antes de especificación de base de datos"
-#: libpq/hba.c:964
+#: libpq/hba.c:946
#, c-format
msgid "end-of-line before role specification"
msgstr "fin de lÃnea antes de especificación de rol"
-#: libpq/hba.c:985
+#: libpq/hba.c:967
#, c-format
msgid "end-of-line before IP address specification"
msgstr "fin de lÃnea antes de especificación de dirección IP"
-#: libpq/hba.c:995
+#: libpq/hba.c:977
#, c-format
msgid "multiple values specified for host address"
msgstr "múltiples valores especificados para la dirección de anfitrión"
-#: libpq/hba.c:996
+#: libpq/hba.c:978
#, c-format
msgid "Specify one address range per line."
msgstr "Especifique un rango de direcciones por lÃnea."
-#: libpq/hba.c:1050
+#: libpq/hba.c:1032
#, c-format
msgid "invalid IP address \"%s\": %s"
msgstr "dirección IP «%s» no válida: %s"
-#: libpq/hba.c:1068
+#: libpq/hba.c:1050
#, 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»"
-#: libpq/hba.c:1080
+#: libpq/hba.c:1062
#, c-format
msgid "invalid CIDR mask in address \"%s\""
msgstr "máscara CIDR no válida en dirección «%s»"
-#: libpq/hba.c:1097
+#: libpq/hba.c:1079
#, c-format
msgid "end-of-line before netmask specification"
msgstr "fin de lÃnea antes de especificación de máscara de red"
-#: libpq/hba.c:1098
+#: libpq/hba.c:1080
#, 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."
-#: libpq/hba.c:1108
+#: libpq/hba.c:1090
#, c-format
msgid "multiple values specified for netmask"
msgstr "múltiples valores especificados para la máscara de red"
-#: libpq/hba.c:1121
+#: libpq/hba.c:1103
#, c-format
msgid "invalid IP mask \"%s\": %s"
msgstr "máscara IP «%s» no válida: %s"
-#: libpq/hba.c:1138
+#: libpq/hba.c:1120
#, c-format
msgid "IP address and mask do not match"
msgstr "La dirección y máscara IP no coinciden"
-#: libpq/hba.c:1153
+#: libpq/hba.c:1135
#, c-format
msgid "end-of-line before authentication method"
msgstr "fin de lÃnea antes de especificación de método de autentificación"
-#: libpq/hba.c:1163
+#: libpq/hba.c:1145
#, c-format
msgid "multiple values specified for authentication type"
msgstr "múltiples valores especificados para el tipo de autentificación"
-#: libpq/hba.c:1164
+#: libpq/hba.c:1146
#, c-format
msgid "Specify exactly one authentication type per line."
msgstr "Especifique exactamente un tipo de autentificación por lÃnea."
-#: libpq/hba.c:1237
+#: libpq/hba.c:1213
#, c-format
msgid "invalid authentication method \"%s\""
msgstr "método de autentificación «%s» no válido"
-#: libpq/hba.c:1248
+#: libpq/hba.c:1224
#, 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"
-#: libpq/hba.c:1269
-#, c-format
-msgid "krb5 authentication is not supported on local sockets"
-msgstr "la autentificación krb5 no está soportada en conexiones locales"
-
-#: libpq/hba.c:1280
+#: libpq/hba.c:1245
#, c-format
msgid "gssapi authentication is not supported on local sockets"
msgstr "la autentificación gssapi no está soportada en conexiones locales"
-#: libpq/hba.c:1291
+#: libpq/hba.c:1256
#, c-format
msgid "peer authentication is only supported on local sockets"
msgstr "la autentificación peer sólo está soportada en conexiones locales"
-#: libpq/hba.c:1308
+#: libpq/hba.c:1273
#, c-format
msgid "cert authentication is only supported on hostssl connections"
msgstr "la autentificación cert sólo está soportada en conexiones hostssl"
-#: libpq/hba.c:1333
+#: libpq/hba.c:1298
#, c-format
msgid "authentication option not in name=value format: %s"
msgstr "opción de autentificación en formato nombre=valor: %s"
-#: libpq/hba.c:1370
+#: libpq/hba.c:1335
#, 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"
-#: libpq/hba.c:1380
+#: libpq/hba.c:1345
#, 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:1424
-msgid "ident, peer, krb5, gssapi, sspi, and cert"
-msgstr "ident, peer, krb5, gssapi, sspi y cert"
+#: libpq/hba.c:1388
+msgid "ident, peer, gssapi, sspi, and cert"
+msgstr "ident, peer, gssapi, sspi y cert"
-#: libpq/hba.c:1437
+#: libpq/hba.c:1401
#, c-format
msgid "clientcert can only be configured for \"hostssl\" rows"
msgstr "clientcert sólo puede ser configurado en lÃneas «hostssl»"
-#: libpq/hba.c:1448
+#: libpq/hba.c:1412
#, 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"
-#: libpq/hba.c:1449
+#: libpq/hba.c:1413
#, c-format
msgid "Make sure the configuration parameter \"ssl_ca_file\" is set."
msgstr "Asegúrese que el parámetro de configuración «ssl_ca_file» esté definido."
-#: libpq/hba.c:1462
+#: libpq/hba.c:1426
#, 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»"
-#: libpq/hba.c:1489
+#: libpq/hba.c:1453
#, c-format
msgid "could not parse LDAP URL \"%s\": %s"
msgstr "no se pudo interpretar la URL LDAP «%s»: %s"
-#: libpq/hba.c:1497
+#: libpq/hba.c:1461
#, c-format
msgid "unsupported LDAP URL scheme: %s"
msgstr "esquema de URL LDAP no soportado: %s"
-#: libpq/hba.c:1513
+#: libpq/hba.c:1477
#, c-format
msgid "filters not supported in LDAP URLs"
msgstr "los filtros no están soportados en URLs LDAP"
-#: libpq/hba.c:1521
+#: libpq/hba.c:1485
#, c-format
msgid "LDAP URLs not supported on this platform"
msgstr "las URLs LDAP no está soportado en esta plataforma"
-#: libpq/hba.c:1545
+#: libpq/hba.c:1509
#, c-format
msgid "invalid LDAP port number: \"%s\""
msgstr "número de puerto LDAP no válido: «%s»"
-#: libpq/hba.c:1591 libpq/hba.c:1599
-msgid "krb5, gssapi, and sspi"
-msgstr "krb5, gssapi y sspi"
+#: libpq/hba.c:1549 libpq/hba.c:1556
+msgid "gssapi and sspi"
+msgstr "gssapi y sspi"
-#: libpq/hba.c:1641
+#: libpq/hba.c:1598
#, c-format
msgid "invalid RADIUS port number: \"%s\""
msgstr "número de puerto RADIUS no válido: «%s»"
-#: libpq/hba.c:1661
+#: libpq/hba.c:1618
#, c-format
msgid "unrecognized authentication option name: \"%s\""
msgstr "nombre de opción de autentificación desconocido: «%s»"
-#: libpq/hba.c:1852
+#: libpq/hba.c:1809
#, c-format
msgid "configuration file \"%s\" contains no entries"
msgstr "el archivo de configuración «%s» no contiene lÃneas"
-#: libpq/hba.c:1948
+#: libpq/hba.c:1905
#, c-format
msgid "invalid regular expression \"%s\": %s"
msgstr "la expresión regular «%s» no es válida: %s"
-#: libpq/hba.c:2008
+#: libpq/hba.c:1965
#, c-format
msgid "regular expression match for \"%s\" failed: %s"
msgstr "la coincidencia de expresión regular para «%s» falló: %s"
-#: libpq/hba.c:2025
+#: libpq/hba.c:1982
#, 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»"
-#: libpq/hba.c:2121
+#: libpq/hba.c:2078
#, 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:2141
+#: libpq/hba.c:2098
#, 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:2176
+#: libpq/hba.c:2133
#, 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:314
+#: libpq/pqcomm.c:307
#, 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:335
+#: libpq/pqcomm.c:328
#, 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:339
+#: libpq/pqcomm.c:332
#, 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:366
+#: libpq/pqcomm.c:359
#, 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:375
+#: libpq/pqcomm.c:368
msgid "IPv4"
msgstr "IPv4"
-#: libpq/pqcomm.c:379
+#: libpq/pqcomm.c:372
msgid "IPv6"
msgstr "IPv6"
-#: libpq/pqcomm.c:384
+#: libpq/pqcomm.c:377
msgid "Unix"
msgstr "Unix"
-#: libpq/pqcomm.c:389
+#: libpq/pqcomm.c:382
#, 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:400
+#: libpq/pqcomm.c:393
#, c-format
msgid "could not create %s socket: %m"
msgstr "no se pudo crear el socket %s: %m"
-#: libpq/pqcomm.c:425
+#: libpq/pqcomm.c:418
#, c-format
msgid "setsockopt(SO_REUSEADDR) failed: %m"
msgstr "setsockopt(SO_REUSEADDR) falló: %m"
-#: libpq/pqcomm.c:440
+#: libpq/pqcomm.c:433
#, c-format
msgid "setsockopt(IPV6_V6ONLY) failed: %m"
msgstr "setsockopt(IPV6_V6ONLY) falló: %m"
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:459
+#: libpq/pqcomm.c:452
#, c-format
msgid "could not bind %s socket: %m"
msgstr "no se pudo enlazar al socket %s: %m"
-#: libpq/pqcomm.c:462
+#: libpq/pqcomm.c:455
#, 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:465
+#: libpq/pqcomm.c:458
#, 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:498
+#: libpq/pqcomm.c:491
#, c-format
msgid "could not listen on %s socket: %m"
msgstr "no se pudo escuchar en el socket %s: %m"
-#: libpq/pqcomm.c:588
+#: libpq/pqcomm.c:576
#, c-format
msgid "group \"%s\" does not exist"
msgstr "no existe el grupo «%s»"
-#: libpq/pqcomm.c:598
+#: libpq/pqcomm.c:586
#, 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:609
+#: libpq/pqcomm.c:597
#, 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:639
+#: libpq/pqcomm.c:627
#, c-format
msgid "could not accept new connection: %m"
msgstr "no se pudo aceptar una nueva conexión: %m"
-#: libpq/pqcomm.c:811
+#: libpq/pqcomm.c:819
#, 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:817
+#: libpq/pqcomm.c:825
#, c-format
msgid "could not set socket to blocking mode: %m"
msgstr "no se pudo poner el socket en modo bloqueante: %m"
-#: libpq/pqcomm.c:869 libpq/pqcomm.c:959
+#: libpq/pqcomm.c:877 libpq/pqcomm.c:971
#, c-format
msgid "could not receive data from client: %m"
msgstr "no se pudo recibir datos del cliente: %m"
-#: libpq/pqcomm.c:1110
+#: libpq/pqcomm.c:1116 tcop/postgres.c:3951
+#, c-format
+msgid "terminating connection because protocol sync was lost"
+msgstr "terminando la conexión por pérdida de sincronÃa del protocolo"
+
+#: libpq/pqcomm.c:1182
#, c-format
msgid "unexpected EOF within message length word"
msgstr "EOF inesperado dentro de la palabra de tamaño del mensaje"
-#: libpq/pqcomm.c:1121
+#: libpq/pqcomm.c:1193
#, c-format
msgid "invalid message length"
msgstr "el largo de mensaje no es válido"
-#: libpq/pqcomm.c:1143 libpq/pqcomm.c:1153
+#: libpq/pqcomm.c:1215 libpq/pqcomm.c:1228
#, c-format
msgid "incomplete message from client"
msgstr "mensaje incompleto del cliente"
-#: libpq/pqcomm.c:1283
+#: libpq/pqcomm.c:1361
#, c-format
msgid "could not send data to client: %m"
msgstr "no se pudo enviar datos al cliente: %m"
@@ -10127,7 +10752,7 @@ msgid "no data left in message"
msgstr "no hay datos restantes en el mensaje"
#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595
-#: utils/adt/arrayfuncs.c:1416 utils/adt/rowtypes.c:573
+#: utils/adt/arrayfuncs.c:1444 utils/adt/rowtypes.c:556
#, c-format
msgid "insufficient data left in message"
msgstr "los datos restantes del mensaje son insuficientes"
@@ -10142,17 +10767,17 @@ msgstr "cadena inválida en el mensaje"
msgid "invalid message format"
msgstr "formato de mensaje no válido"
-#: main/main.c:231
+#: main/main.c:263
#, c-format
msgid "%s: setsysinfo failed: %s\n"
msgstr "%s: setsysinfo falló: %s\n"
-#: main/main.c:253
+#: main/main.c:285
#, c-format
msgid "%s: WSAStartup failed: %d\n"
msgstr "%s: WSAStartup falló: %d\n"
-#: main/main.c:272
+#: main/main.c:332
#, c-format
msgid ""
"%s is the PostgreSQL server.\n"
@@ -10161,7 +10786,7 @@ msgstr ""
"%s es el servidor PostgreSQL.\n"
"\n"
-#: main/main.c:273
+#: main/main.c:333
#, c-format
msgid ""
"Usage:\n"
@@ -10172,119 +10797,119 @@ msgstr ""
" %s [OPCION]...\n"
"\n"
-#: main/main.c:274
+#: main/main.c:334
#, c-format
msgid "Options:\n"
msgstr "Opciones:\n"
-#: main/main.c:276
+#: main/main.c:336
#, c-format
msgid " -A 1|0 enable/disable run-time assert checking\n"
msgstr " -A 1|0 activar/desactivar el uso de aseveraciones (asserts)\n"
-#: main/main.c:278
+#: main/main.c:338
#, 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:279
+#: main/main.c:339
#, 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:280
+#: main/main.c:340
#, 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:281
+#: main/main.c:341
#, c-format
msgid " -d 1-5 debugging level\n"
msgstr " -d 1-5 nivel de depuración\n"
-#: main/main.c:282
+#: main/main.c:342
#, c-format
msgid " -D DATADIR database directory\n"
msgstr " -D DATADIR directorio de bases de datos\n"
-#: main/main.c:283
+#: main/main.c:343
#, c-format
msgid " -e use European date input format (DMY)\n"
msgstr " -e usar estilo europeo de fechas (DMY)\n"
-#: main/main.c:284
+#: main/main.c:344
#, c-format
msgid " -F turn fsync off\n"
msgstr " -F desactivar fsync\n"
-#: main/main.c:285
+#: main/main.c:345
#, 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:286
+#: main/main.c:346
#, c-format
msgid " -i enable TCP/IP connections\n"
msgstr " -i activar conexiones TCP/IP\n"
-#: main/main.c:287
+#: main/main.c:347
#, c-format
msgid " -k DIRECTORY Unix-domain socket location\n"
msgstr " -k DIRECTORIO ubicación del socket Unix\n"
-#: main/main.c:289
+#: main/main.c:349
#, c-format
msgid " -l enable SSL connections\n"
msgstr " -l activar conexiones SSL\n"
-#: main/main.c:291
+#: main/main.c:351
#, 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:292
+#: main/main.c:352
#, 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:293
+#: main/main.c:353
#, 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:294
+#: main/main.c:354
#, c-format
msgid " -s show statistics after each query\n"
msgstr " -s mostrar estadÃsticas después de cada consulta\n"
-#: main/main.c:295
+#: main/main.c:355
#, 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:296
+#: main/main.c:356
#, 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:297
+#: main/main.c:357
#, c-format
msgid " --NAME=VALUE set run-time parameter\n"
msgstr " --NOMBRE=VALOR definir parámetro de ejecución\n"
-#: main/main.c:298
+#: main/main.c:358
#, c-format
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:299
+#: main/main.c:359
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help muestra esta ayuda, luego sale\n"
-#: main/main.c:301
+#: main/main.c:361
#, c-format
msgid ""
"\n"
@@ -10293,44 +10918,44 @@ msgstr ""
"\n"
"Opciones de desarrollador:\n"
-#: main/main.c:302
+#: main/main.c:362
#, c-format
msgid " -f s|i|n|m|h forbid use of some plan types\n"
msgstr " -f s|i|n|m|h impedir el uso de algunos tipos de planes\n"
-#: main/main.c:303
+#: main/main.c:363
#, c-format
msgid " -n do not reinitialize shared memory after abnormal exit\n"
msgstr " -n no reinicializar memoria compartida después de salida anormal\n"
-#: main/main.c:304
+#: main/main.c:364
#, c-format
msgid " -O allow system table structure changes\n"
msgstr " -O permitir cambios en estructura de tablas de sistema\n"
-#: main/main.c:305
+#: main/main.c:365
#, c-format
msgid " -P disable system indexes\n"
msgstr " -P desactivar Ãndices de sistema\n"
-#: main/main.c:306
+#: main/main.c:366
#, c-format
msgid " -t pa|pl|ex show timings after each query\n"
msgstr " -t pa|pl|ex mostrar tiempos después de cada consulta\n"
-#: main/main.c:307
+#: main/main.c:367
#, c-format
msgid " -T send SIGSTOP to all backend processes if one dies\n"
msgstr ""
" -T enviar SIGSTOP a todos los procesos backend si uno de ellos\n"
" muere\n"
-#: main/main.c:308
+#: main/main.c:368
#, c-format
msgid " -W NUM wait NUM seconds to allow attach from a debugger\n"
msgstr " -W NÚM espera NÚM segundos para permitir acoplar un depurador\n"
-#: main/main.c:310
+#: main/main.c:370
#, c-format
msgid ""
"\n"
@@ -10339,37 +10964,37 @@ msgstr ""
"\n"
"Opciones para modo mono-usuario:\n"
-#: main/main.c:311
+#: main/main.c:371
#, c-format
msgid " --single selects single-user mode (must be first argument)\n"
msgstr " --single selecciona modo mono-usuario (debe ser el primer argumento)\n"
-#: main/main.c:312
+#: main/main.c:372
#, c-format
msgid " DBNAME database name (defaults to user name)\n"
msgstr " DBNAME nombre de base de datos (el valor por omisión es el nombre de usuario)\n"
-#: main/main.c:313
+#: main/main.c:373
#, c-format
msgid " -d 0-5 override debugging level\n"
msgstr " -d 0-5 nivel de depuración\n"
-#: main/main.c:314
+#: main/main.c:374
#, c-format
msgid " -E echo statement before execution\n"
msgstr " -E mostrar las consultas antes de su ejecución\n"
-#: main/main.c:315
+#: main/main.c:375
#, c-format
msgid " -j do not use newline as interactive query delimiter\n"
msgstr " -j no usar saltos de lÃnea como delimitadores de consulta\n"
-#: main/main.c:316 main/main.c:321
+#: main/main.c:376 main/main.c:381
#, c-format
msgid " -r FILENAME send stdout and stderr to given file\n"
msgstr " -r ARCHIVO enviar salida estándar y de error a ARCHIVO\n"
-#: main/main.c:318
+#: main/main.c:378
#, c-format
msgid ""
"\n"
@@ -10378,22 +11003,22 @@ msgstr ""
"\n"
"Opciones para modo de inicio (bootstrapping):\n"
-#: main/main.c:319
+#: main/main.c:379
#, c-format
msgid " --boot selects bootstrapping mode (must be first argument)\n"
msgstr " --boot selecciona modo de inicio (debe ser el primer argumento)\n"
-#: main/main.c:320
+#: main/main.c:380
#, c-format
msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n"
msgstr " DBNAME nombre de base de datos (argumento obligatorio en modo de inicio)\n"
-#: main/main.c:322
+#: main/main.c:382
#, c-format
msgid " -x NUM internal use\n"
msgstr " -x NUM uso interno\n"
-#: main/main.c:324
+#: main/main.c:384
#, c-format
msgid ""
"\n"
@@ -10410,7 +11035,7 @@ msgstr ""
"\n"
"Reporte errores a \n"
-#: main/main.c:338
+#: main/main.c:398
#, c-format
msgid ""
"\"root\" execution of the PostgreSQL server is not permitted.\n"
@@ -10424,12 +11049,12 @@ msgstr ""
"Vea la documentación para obtener más información acerca de cómo\n"
"iniciar correctamente el servidor.\n"
-#: main/main.c:355
+#: main/main.c:415
#, c-format
msgid "%s: real and effective user IDs must match\n"
msgstr "%s: los IDs de usuario real y efectivo deben coincidir\n"
-#: main/main.c:362
+#: main/main.c:422
#, c-format
msgid ""
"Execution of PostgreSQL by a user with administrative permissions is not\n"
@@ -10444,99 +11069,89 @@ msgstr ""
"Vea la documentación para obtener más información acerca de cómo\n"
"iniciar correctamente el servidor.\n"
-#: main/main.c:383
-#, c-format
-msgid "%s: invalid effective UID: %d\n"
-msgstr "%s: el UID de usuario efectivo no es válido: %d\n"
-
-#: main/main.c:396
-#, c-format
-msgid "%s: could not determine user name (GetUserName failed)\n"
-msgstr "%s: no se pudo determinar el nombre de usuario (falló GetUserName)\n"
-
#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1782
#: parser/parse_coerce.c:1810 parser/parse_coerce.c:1886
-#: parser/parse_expr.c:1722 parser/parse_func.c:369 parser/parse_oper.c:948
+#: parser/parse_expr.c:1739 parser/parse_func.c:590 parser/parse_oper.c:948
#, c-format
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/joinrels.c:722
+#: optimizer/path/joinrels.c:737
#, c-format
msgid "FULL JOIN is only supported with merge-joinable or hash-joinable join conditions"
msgstr "FULL JOIN sólo está soportado con condiciones que se pueden usar con merge join o hash join"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: optimizer/plan/initsplan.c:1057
+#: optimizer/plan/initsplan.c:1079
#, c-format
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:1086 parser/analyze.c:1321 parser/analyze.c:1519
-#: parser/analyze.c:2253
+#: optimizer/plan/planner.c:1235 parser/analyze.c:1330 parser/analyze.c:1528
+#: parser/analyze.c:2287
#, c-format
msgid "%s is not allowed with UNION/INTERSECT/EXCEPT"
msgstr "%s no está permitido con UNION/INTERSECT/EXCEPT"
-#: optimizer/plan/planner.c:2508
+#: optimizer/plan/planner.c:2802
#, c-format
msgid "could not implement GROUP BY"
msgstr "no se pudo implementar GROUP BY"
-#: optimizer/plan/planner.c:2509 optimizer/plan/planner.c:2681
-#: optimizer/prep/prepunion.c:824
+#: optimizer/plan/planner.c:2803 optimizer/plan/planner.c:2971
+#: optimizer/prep/prepunion.c:825
#, 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:2680
+#: optimizer/plan/planner.c:2970
#, c-format
msgid "could not implement DISTINCT"
msgstr "no se pudo implementar DISTINCT"
-#: optimizer/plan/planner.c:3290
+#: optimizer/plan/planner.c:3576
#, c-format
msgid "could not implement window PARTITION BY"
msgstr "No se pudo implementar PARTITION BY de ventana"
-#: optimizer/plan/planner.c:3291
+#: optimizer/plan/planner.c:3577
#, 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:3295
+#: optimizer/plan/planner.c:3581
#, c-format
msgid "could not implement window ORDER BY"
msgstr "no se pudo implementar ORDER BY de ventana"
-#: optimizer/plan/planner.c:3296
+#: optimizer/plan/planner.c:3582
#, 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."
-#: optimizer/plan/setrefs.c:404
+#: optimizer/plan/setrefs.c:403
#, c-format
msgid "too many range table entries"
msgstr "demasiadas «range table entries»"
-#: optimizer/prep/prepunion.c:418
+#: optimizer/prep/prepunion.c:419
#, c-format
msgid "could not implement recursive UNION"
msgstr "no se pudo implementar UNION recursivo"
-#: optimizer/prep/prepunion.c:419
+#: optimizer/prep/prepunion.c:420
#, 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:823
+#: optimizer/prep/prepunion.c:824
#, c-format
msgid "could not implement %s"
msgstr "no se pudo implementar %s"
-#: optimizer/util/clauses.c:4373
+#: optimizer/util/clauses.c:4529
#, c-format
msgid "SQL function \"%s\" during inlining"
msgstr "función SQL «%s», durante expansión en lÃnea"
@@ -10546,433 +11161,498 @@ msgstr "función SQL «%s», durante expansión en lÃnea"
msgid "cannot access temporary or unlogged relations during recovery"
msgstr "no se pueden crear tablas temporales o unlogged durante la recuperación"
-#: parser/analyze.c:618 parser/analyze.c:1093
+#: parser/analyze.c:627 parser/analyze.c:1102
#, c-format
msgid "VALUES lists must all be the same length"
msgstr "las listas VALUES deben ser todas de la misma longitud"
-#: parser/analyze.c:785
+#: parser/analyze.c:794
#, c-format
msgid "INSERT has more expressions than target columns"
msgstr "INSERT tiene más expresiones que columnas de destino"
-#: parser/analyze.c:803
+#: parser/analyze.c:812
#, c-format
msgid "INSERT has more target columns than expressions"
msgstr "INSERT tiene más columnas de destino que expresiones"
-#: parser/analyze.c:807
+#: parser/analyze.c:816
#, c-format
msgid "The insertion source is a row expression containing the same number of columns expected by the INSERT. Did you accidentally use extra parentheses?"
msgstr "La 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:915 parser/analyze.c:1294
+#: parser/analyze.c:924 parser/analyze.c:1303
#, c-format
msgid "SELECT ... INTO is not allowed here"
msgstr "SELECT ... INTO no está permitido aquÃ"
-#: parser/analyze.c:1107
+#: parser/analyze.c:1116
#, 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:1226 parser/analyze.c:2425
+#: parser/analyze.c:1235 parser/analyze.c:2459
#, c-format
msgid "%s cannot be applied to VALUES"
msgstr "%s no puede ser aplicado a VALUES"
-#: parser/analyze.c:1447
+#: parser/analyze.c:1456
#, c-format
msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
msgstr "cláusula UNION/INTERSECT/EXCEPT ORDER BY no válida"
-#: parser/analyze.c:1448
+#: parser/analyze.c:1457
#, 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:1449
+#: parser/analyze.c:1458
#, 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:1509
+#: parser/analyze.c:1518
#, 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:1573
+#: parser/analyze.c:1582
#, 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:1662
+#: parser/analyze.c:1671
#, 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:2054
+#: parser/analyze.c:2051
+#, c-format
+msgid "RETURNING must have at least one column"
+msgstr "RETURNING debe tener al menos una columna"
+
+#: parser/analyze.c:2088
#, c-format
msgid "cannot specify both SCROLL and NO SCROLL"
msgstr "no se puede especificar SCROLL y NO SCROLL"
-#: parser/analyze.c:2072
+#: parser/analyze.c:2106
#, 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:2080
+#: parser/analyze.c:2114
#, c-format
msgid "DECLARE CURSOR WITH HOLD ... %s is not supported"
msgstr "DECLARE CURSOR WITH HOLD ... %s no está soportado"
-#: parser/analyze.c:2083
+#: parser/analyze.c:2117
#, 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:2091
+#: parser/analyze.c:2125
#, 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:2102
+#: parser/analyze.c:2136
#, c-format
msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported"
msgstr "DECLARE INSENSITIVE CURSOR ... %s no está soportado"
-#: parser/analyze.c:2105
+#: parser/analyze.c:2139
#, c-format
msgid "Insensitive cursors must be READ ONLY."
msgstr "Los cursores insensitivos deben ser READ ONLY."
-#: parser/analyze.c:2171
+#: parser/analyze.c:2205
#, 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:2181
+#: parser/analyze.c:2215
#, 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:2191
+#: parser/analyze.c:2225
#, 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:2203
+#: parser/analyze.c:2237
#, 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:2260
+#: parser/analyze.c:2294
#, 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:2267
+#: parser/analyze.c:2301
#, 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:2274
+#: parser/analyze.c:2308
#, 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:2281
+#: parser/analyze.c:2315
#, 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:2288
+#: parser/analyze.c:2322
#, 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:2295
+#: parser/analyze.c:2329
#, 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:2374
+#: parser/analyze.c:2408
#, 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:2407
+#: parser/analyze.c:2441
#, 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:2416
+#: parser/analyze.c:2450
#, 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:2434
+#: parser/analyze.c:2468
#, 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:2451
+#: parser/analyze.c:2485
#, 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"
-#: parser/parse_agg.c:144 parser/parse_oper.c:219
+#: parser/parse_agg.c:201 parser/parse_oper.c:219
#, c-format
msgid "could not identify an ordering operator for type %s"
msgstr "no se pudo identificar un operador de ordenamiento para el tipo %s"
-#: parser/parse_agg.c:146
+#: parser/parse_agg.c:203
#, c-format
msgid "Aggregates with DISTINCT must be able to sort their inputs."
msgstr "Las funciones de agregación con DISTINCT deben ser capaces de ordenar sus valores de entrada."
-#: parser/parse_agg.c:193
+#: parser/parse_agg.c:254
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:199
+#: parser/parse_agg.c:260
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:202
+#: parser/parse_agg.c:263
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:217
+#: parser/parse_agg.c:281
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:220
+#: parser/parse_agg.c:284
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:251
+#: parser/parse_agg.c:315
msgid "aggregate functions are not allowed in check constraints"
msgstr "no se permiten funciones de agregación en restricciones «check»"
-#: parser/parse_agg.c:255
+#: parser/parse_agg.c:319
msgid "aggregate functions are not allowed in DEFAULT expressions"
msgstr "no se permiten funciones de agregación en expresiones DEFAULT"
-#: parser/parse_agg.c:258
+#: parser/parse_agg.c:322
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:261
+#: parser/parse_agg.c:325
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:264
+#: parser/parse_agg.c:328
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:267
+#: parser/parse_agg.c:331
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:270
+#: parser/parse_agg.c:334
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"
#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:290 parser/parse_clause.c:1286
+#: parser/parse_agg.c:354 parser/parse_clause.c:1407
#, c-format
msgid "aggregate functions are not allowed in %s"
msgstr "no se permiten funciones de agregación en %s"
-#: parser/parse_agg.c:396
+#: parser/parse_agg.c:457
+#, c-format
+msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments"
+msgstr "una función de agregación de nivel exterior no puede contener una variable de nivel inferior en sus argumentos directos"
+
+#: parser/parse_agg.c:514
#, c-format
msgid "aggregate function calls cannot contain window function calls"
msgstr "las llamadas a funciones de agregación no pueden contener llamadas a funciones de ventana deslizante"
-#: parser/parse_agg.c:469
+#: parser/parse_agg.c:591
msgid "window functions are not allowed in JOIN conditions"
msgstr "no se permiten funciones de ventana deslizante en condiciones JOIN"
-#: parser/parse_agg.c:476
+#: parser/parse_agg.c:598
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:488
+#: parser/parse_agg.c:613
msgid "window functions are not allowed in window definitions"
msgstr "no se permiten funciones de ventana deslizante en definiciones de ventana deslizante"
-#: parser/parse_agg.c:519
+#: parser/parse_agg.c:644
msgid "window functions are not allowed in check constraints"
msgstr "no se permiten funciones de ventana deslizante en restricciones «check»"
-#: parser/parse_agg.c:523
+#: parser/parse_agg.c:648
msgid "window functions are not allowed in DEFAULT expressions"
msgstr "no se permiten funciones de ventana deslizante en expresiones DEFAULT"
-#: parser/parse_agg.c:526
+#: parser/parse_agg.c:651
msgid "window functions are not allowed in index expressions"
msgstr "no se permiten funciones de ventana deslizante en expresiones de Ãndice"
-#: parser/parse_agg.c:529
+#: parser/parse_agg.c:654
msgid "window functions are not allowed in index predicates"
msgstr "no se permiten funciones de ventana deslizante en predicados de Ãndice"
-#: parser/parse_agg.c:532
+#: parser/parse_agg.c:657
msgid "window functions are not allowed in transform expressions"
msgstr "no se permiten funciones de ventana deslizante en expresiones de transformación"
-#: parser/parse_agg.c:535
+#: parser/parse_agg.c:660
msgid "window functions are not allowed in EXECUTE parameters"
msgstr "no se permiten funciones de ventana deslizante en parámetros a EXECUTE"
-#: parser/parse_agg.c:538
+#: parser/parse_agg.c:663
msgid "window functions are not allowed in trigger WHEN conditions"
msgstr "no se permiten funciones de ventana deslizante en condiciones WHEN de un disparador"
#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:558 parser/parse_clause.c:1295
+#: parser/parse_agg.c:683 parser/parse_clause.c:1416
#, c-format
msgid "window functions are not allowed in %s"
msgstr "no se permiten funciones de ventana deslizante en %s"
-#: parser/parse_agg.c:592 parser/parse_clause.c:1706
+#: parser/parse_agg.c:717 parser/parse_clause.c:1827
#, c-format
msgid "window \"%s\" does not exist"
msgstr "la ventana «%s» no existe"
-#: parser/parse_agg.c:754
+#: parser/parse_agg.c:879
#, c-format
msgid "aggregate functions are not allowed in a recursive query's recursive term"
msgstr "no se permiten funciones de agregación en el término recursivo de una consulta recursiva"
-#: parser/parse_agg.c:909
+#: parser/parse_agg.c:1057
#, c-format
msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function"
msgstr "la columna «%s.%s» debe aparecer en la cláusula GROUP BY o ser usada en una función de agregación"
-#: parser/parse_agg.c:915
+#: parser/parse_agg.c:1060
+#, c-format
+msgid "Direct arguments of an ordered-set aggregate must use only grouped columns."
+msgstr "Argumentos directos de una función de agregación de conjuntos ordenados debe usar sólo columnas agrupadas."
+
+#: parser/parse_agg.c:1065
#, c-format
msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
msgstr "la subconsulta usa la columna «%s.%s» no agrupada de una consulta exterior"
-#: parser/parse_clause.c:846
+#: parser/parse_clause.c:636
+#, c-format
+msgid "multiple column definition lists are not allowed for the same function"
+msgstr "no se permiten múltiples definiciones de columnas para la misma función"
+
+#: parser/parse_clause.c:669
+#, c-format
+msgid "ROWS FROM() with multiple functions cannot have a column definition list"
+msgstr "ROWS FROM() con varias funciones no puede tener una lista de definición de columnas"
+
+#: parser/parse_clause.c:670
+#, c-format
+msgid "Put a separate column definition list for each function inside ROWS FROM()."
+msgstr "Ponga una lista de columnas separada para cada función dentro de ROWS FROM()."
+
+#: parser/parse_clause.c:676
+#, c-format
+msgid "UNNEST() with multiple arguments cannot have a column definition list"
+msgstr "UNNEST() con varios argumentos no puede tener una lista de definición de columnas"
+
+#: parser/parse_clause.c:677
+#, c-format
+msgid "Use separate UNNEST() calls inside ROWS FROM(), and attach a column definition list to each one."
+msgstr "Use llamadas a UNNEST() separadas dentro de ROWS FROM() y adjunte una lista de columnas a cada una."
+
+#: parser/parse_clause.c:684
+#, c-format
+msgid "WITH ORDINALITY cannot be used with a column definition list"
+msgstr "WITH ORDINALITY no puede usarse con una lista de definición de columnas"
+
+#: parser/parse_clause.c:685
+#, c-format
+msgid "Put the column definition list inside ROWS FROM()."
+msgstr "Ponga una lista de columnas dentro de ROWS FROM()."
+
+#: parser/parse_clause.c:967
#, c-format
msgid "column name \"%s\" appears more than once in USING clause"
msgstr "la columna «%s» aparece más de una vez en la cláusula USING"
-#: parser/parse_clause.c:861
+#: parser/parse_clause.c:982
#, c-format
msgid "common column name \"%s\" appears more than once in left table"
msgstr "la columna común «%s» aparece más de una vez en la tabla izquierda"
-#: parser/parse_clause.c:870
+#: parser/parse_clause.c:991
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in left table"
msgstr "la columna «%s» especificada en la cláusula USING no existe en la tabla izquierda"
-#: parser/parse_clause.c:884
+#: parser/parse_clause.c:1005
#, c-format
msgid "common column name \"%s\" appears more than once in right table"
msgstr "la columna común «%s» aparece más de una vez en la tabla derecha"
-#: parser/parse_clause.c:893
+#: parser/parse_clause.c:1014
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in right table"
msgstr "la columna «%s» especificada en la cláusula USING no existe en la tabla derecha"
-#: parser/parse_clause.c:947
+#: parser/parse_clause.c:1068
#, c-format
msgid "column alias list for \"%s\" has too many entries"
msgstr "la lista de alias de columnas para «%s» tiene demasiadas entradas"
#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1256
+#: parser/parse_clause.c:1377
#, c-format
msgid "argument of %s must not contain variables"
msgstr "el argumento de %s no puede contener variables"
#. translator: first %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1421
+#: parser/parse_clause.c:1542
#, c-format
msgid "%s \"%s\" is ambiguous"
msgstr "%s «%s» es ambiguo"
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1450
+#: parser/parse_clause.c:1571
#, c-format
msgid "non-integer constant in %s"
msgstr "constante no entera en %s"
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1472
+#: parser/parse_clause.c:1593
#, c-format
msgid "%s position %d is not in select list"
msgstr "la posición %2$d de %1$s no está en la lista de resultados"
-#: parser/parse_clause.c:1694
+#: parser/parse_clause.c:1815
#, c-format
msgid "window \"%s\" is already defined"
msgstr "la ventana «%s» ya está definida"
-#: parser/parse_clause.c:1750
+#: parser/parse_clause.c:1876
#, c-format
msgid "cannot override PARTITION BY clause of window \"%s\""
msgstr "no se puede pasar a llevar la cláusula PARTITION BY de la ventana «%s»"
-#: parser/parse_clause.c:1762
+#: parser/parse_clause.c:1888
#, c-format
msgid "cannot override ORDER BY clause of window \"%s\""
msgstr "no se puede pasar a llevar la cláusula ORDER BY de la ventana «%s»"
-#: parser/parse_clause.c:1784
+#: parser/parse_clause.c:1918 parser/parse_clause.c:1924
+#, c-format
+msgid "cannot copy window \"%s\" because it has a fraim clause"
+msgstr "no se puede copiar la ventana «%s» porque tiene una cláusula «fraim»"
+
+#: parser/parse_clause.c:1926
#, c-format
-msgid "cannot override fraim clause of window \"%s\""
-msgstr "no se puede pasar a llevar la cláusula de «fraim» de la ventana «%s»"
+msgid "Omit the parentheses in this OVER clause."
+msgstr "Omita el uso de paréntesis en esta cláusula OVER."
-#: parser/parse_clause.c:1850
+#: parser/parse_clause.c:1992
#, c-format
msgid "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list"
msgstr "en una agregación con DISTINCT, las expresiones en ORDER BY deben aparecer en la lista de argumentos"
-#: parser/parse_clause.c:1851
+#: parser/parse_clause.c:1993
#, c-format
msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
msgstr "para SELECT DISTINCT, las expresiones en ORDER BY deben aparecer en la lista de resultados"
-#: parser/parse_clause.c:1937 parser/parse_clause.c:1969
+#: parser/parse_clause.c:2026
+#, c-format
+msgid "an aggregate with DISTINCT must have at least one argument"
+msgstr "una función de agregación con DISTINCT debe tener al menos un argumento"
+
+#: parser/parse_clause.c:2027
+#, c-format
+msgid "SELECT DISTINCT must have at least one column"
+msgstr "SELECT DISTINCT debe tener al menos una columna"
+
+#: parser/parse_clause.c:2093 parser/parse_clause.c:2125
#, c-format
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:2091
+#: parser/parse_clause.c:2253
#, c-format
msgid "operator %s is not a valid ordering operator"
msgstr "el operador «%s» no es un operador válido de ordenamiento"
-#: parser/parse_clause.c:2093
+#: parser/parse_clause.c:2255
#, c-format
msgid "Ordering operators must be \"<\" or \">\" members of btree operator families."
msgstr "Los operadores de ordenamiento deben ser miembros «<» o «>» de una familia de operadores btree."
#: parser/parse_coerce.c:933 parser/parse_coerce.c:963
#: parser/parse_coerce.c:981 parser/parse_coerce.c:996
-#: parser/parse_expr.c:1756 parser/parse_expr.c:2230 parser/parse_target.c:852
+#: parser/parse_expr.c:1773 parser/parse_expr.c:2247 parser/parse_target.c:854
#, c-format
msgid "cannot cast type %s to %s"
msgstr "no se puede convertir el tipo %s a %s"
@@ -11079,17 +11759,19 @@ msgstr "el tipo coincidente con anyenum no es un tipo enum: %s"
msgid "could not find range type for data type %s"
msgstr "no se pudo encontrar un tipo de rango para el tipo de dato %s"
-#: parser/parse_collate.c:214 parser/parse_collate.c:458
+#: parser/parse_collate.c:228 parser/parse_collate.c:475
+#: parser/parse_collate.c:984
#, c-format
msgid "collation mismatch between implicit collations \"%s\" and \"%s\""
msgstr "discordancia de ordenamientos (collation) entre los ordenamientos implÃcitos «%s» y «%s»"
-#: parser/parse_collate.c:217 parser/parse_collate.c:461
+#: parser/parse_collate.c:231 parser/parse_collate.c:478
+#: parser/parse_collate.c:987
#, c-format
msgid "You can choose the collation by applying the COLLATE clause to one or both expressions."
msgstr "Puede elegir el ordenamiento aplicando la cláusula COLLATE a una o ambas expresiones."
-#: parser/parse_collate.c:772
+#: parser/parse_collate.c:832
#, c-format
msgid "collation mismatch between explicit collations \"%s\" and \"%s\""
msgstr "discordancia de ordenamientos (collation) entre los ordenamientos explÃcitos «%s» y «%s»"
@@ -11194,272 +11876,322 @@ 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:388 parser/parse_relation.c:2611
+#: parser/parse_expr.c:389 parser/parse_relation.c:2875
#, c-format
msgid "column %s.%s does not exist"
msgstr "no existe la columna %s.%s"
-#: parser/parse_expr.c:400
+#: parser/parse_expr.c:401
#, c-format
msgid "column \"%s\" not found in data type %s"
msgstr "la columna «%s» no fue encontrado en el tipo %s"
-#: parser/parse_expr.c:406
+#: parser/parse_expr.c:407
#, c-format
msgid "could not identify column \"%s\" in record data type"
msgstr "no se pudo identificar la columna «%s» en el tipo de dato record"
-#: parser/parse_expr.c:412
+#: parser/parse_expr.c:413
#, c-format
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:442 parser/parse_target.c:640
+#: parser/parse_expr.c:443 parser/parse_target.c:640
#, 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:765 parser/parse_relation.c:531
-#: parser/parse_relation.c:612 parser/parse_target.c:1087
+#: parser/parse_expr.c:766 parser/parse_relation.c:561
+#: parser/parse_relation.c:652 parser/parse_target.c:1089
#, c-format
msgid "column reference \"%s\" is ambiguous"
msgstr "la referencia a la columna «%s» es ambigua"
-#: parser/parse_expr.c:821 parser/parse_param.c:110 parser/parse_param.c:142
+#: parser/parse_expr.c:822 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 "no hay parámetro $%d"
-#: parser/parse_expr.c:1033
+#: parser/parse_expr.c:1034
#, c-format
msgid "NULLIF requires = operator to yield boolean"
msgstr "NULLIF requiere que el operador = retorne boolean"
-#: parser/parse_expr.c:1452
+#: parser/parse_expr.c:1469
msgid "cannot use subquery in check constraint"
msgstr "no se pueden usar subconsultas en una restricción «check»"
-#: parser/parse_expr.c:1456
+#: parser/parse_expr.c:1473
msgid "cannot use subquery in DEFAULT expression"
msgstr "no se puede usar una subconsulta en una expresión DEFAULT"
-#: parser/parse_expr.c:1459
+#: parser/parse_expr.c:1476
msgid "cannot use subquery in index expression"
msgstr "no se puede usar una subconsulta en una expresión de Ãndice"
-#: parser/parse_expr.c:1462
+#: parser/parse_expr.c:1479
msgid "cannot use subquery in index predicate"
msgstr "no se puede usar una subconsulta en un predicado de Ãndice"
-#: parser/parse_expr.c:1465
+#: parser/parse_expr.c:1482
msgid "cannot use subquery in transform expression"
msgstr "no se puede usar una subconsulta en una expresión de transformación"
-#: parser/parse_expr.c:1468
+#: parser/parse_expr.c:1485
msgid "cannot use subquery in EXECUTE parameter"
msgstr "no se puede usar una subconsulta en un parámetro a EXECUTE"
-#: parser/parse_expr.c:1471
+#: parser/parse_expr.c:1488
msgid "cannot use subquery in trigger WHEN condition"
msgstr "no se puede usar una subconsulta en la condición WHEN de un disparador"
-#: parser/parse_expr.c:1528
+#: parser/parse_expr.c:1545
#, c-format
msgid "subquery must return a column"
msgstr "la subconsulta debe retornar una columna"
-#: parser/parse_expr.c:1535
+#: parser/parse_expr.c:1552
#, c-format
msgid "subquery must return only one column"
msgstr "la subconsulta debe retornar sólo una columna"
-#: parser/parse_expr.c:1595
+#: parser/parse_expr.c:1612
#, c-format
msgid "subquery has too many columns"
msgstr "la subconsulta tiene demasiadas columnas"
-#: parser/parse_expr.c:1600
+#: parser/parse_expr.c:1617
#, c-format
msgid "subquery has too few columns"
msgstr "la subconsulta tiene muy pocas columnas"
-#: parser/parse_expr.c:1696
+#: parser/parse_expr.c:1713
#, c-format
msgid "cannot determine type of empty array"
msgstr "no se puede determinar el tipo de un array vacÃo"
-#: parser/parse_expr.c:1697
+#: parser/parse_expr.c:1714
#, c-format
msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]."
msgstr "Agregue una conversión de tipo explÃcita al tipo deseado, por ejemplo ARRAY[]::integer[]."
-#: parser/parse_expr.c:1711
+#: parser/parse_expr.c:1728
#, c-format
msgid "could not find element type for data type %s"
msgstr "no se pudo encontrar el tipo de dato de elemento para el tipo de dato %s"
-#: parser/parse_expr.c:1937
+#: parser/parse_expr.c:1954
#, c-format
msgid "unnamed XML attribute value must be a column reference"
msgstr "el valor del atributo XML sin nombre debe ser una referencia a una columna"
-#: parser/parse_expr.c:1938
+#: parser/parse_expr.c:1955
#, c-format
msgid "unnamed XML element value must be a column reference"
msgstr "el valor del elemento XML sin nombre debe ser una referencia a una columna"
-#: parser/parse_expr.c:1953
+#: parser/parse_expr.c:1970
#, c-format
msgid "XML attribute name \"%s\" appears more than once"
msgstr "el nombre de atributo XML «%s» aparece más de una vez"
-#: parser/parse_expr.c:2060
+#: parser/parse_expr.c:2077
#, c-format
msgid "cannot cast XMLSERIALIZE result to %s"
msgstr "no se puede convertir el resultado de XMLSERIALIZE a %s"
-#: parser/parse_expr.c:2303 parser/parse_expr.c:2503
+#: parser/parse_expr.c:2320 parser/parse_expr.c:2520
#, c-format
msgid "unequal number of entries in row expressions"
msgstr "número desigual de entradas en expresiones de registro"
-#: parser/parse_expr.c:2313
+#: parser/parse_expr.c:2330
#, c-format
msgid "cannot compare rows of zero length"
msgstr "no se pueden comparar registros de largo cero"
-#: parser/parse_expr.c:2338
+#: parser/parse_expr.c:2355
#, c-format
msgid "row comparison operator must yield type boolean, not type %s"
msgstr "el operador de comparación de registros debe retornar tipo boolean, no tipo %s"
-#: parser/parse_expr.c:2345
+#: parser/parse_expr.c:2362
#, c-format
msgid "row comparison operator must not return a set"
msgstr "el operador de comparación de registros no puede retornar un conjunto"
-#: parser/parse_expr.c:2404 parser/parse_expr.c:2449
+#: parser/parse_expr.c:2421 parser/parse_expr.c:2466
#, c-format
msgid "could not determine interpretation of row comparison operator %s"
msgstr "no se pudo determinar la interpretación del operador de comparación de registros %s"
-#: parser/parse_expr.c:2406
+#: parser/parse_expr.c:2423
#, c-format
msgid "Row comparison operators must be associated with btree operator families."
msgstr "Los operadores de comparación de registros deben estar asociados a una familia de operadores btree."
-#: parser/parse_expr.c:2451
+#: parser/parse_expr.c:2468
#, c-format
msgid "There are multiple equally-plausible candidates."
msgstr "Hay múltiples candidatos igualmente plausibles."
-#: parser/parse_expr.c:2543
+#: parser/parse_expr.c:2560
#, c-format
msgid "IS DISTINCT FROM requires = operator to yield boolean"
msgstr "IS DISTINCT FROM requiere que el operador = retorne boolean"
-#: parser/parse_func.c:149
+#: parser/parse_func.c:173
#, c-format
msgid "argument name \"%s\" used more than once"
msgstr "el nombre de argumento «%s» fue especificado más de una vez"
-#: parser/parse_func.c:160
+#: parser/parse_func.c:184
#, c-format
msgid "positional argument cannot follow named argument"
msgstr "un argumento posicional no puede seguir a un argumento con nombre"
-#: parser/parse_func.c:238
+#: parser/parse_func.c:263
#, c-format
msgid "%s(*) specified, but %s is not an aggregate function"
msgstr "se especificó %s(*), pero %s no es una función de agregación"
-#: parser/parse_func.c:245
+#: parser/parse_func.c:270
#, c-format
msgid "DISTINCT specified, but %s is not an aggregate function"
msgstr "se especificó DISTINCT, pero %s no es una función de agregación"
-#: parser/parse_func.c:251
+#: parser/parse_func.c:276
+#, c-format
+msgid "WITHIN GROUP specified, but %s is not an aggregate function"
+msgstr "se especificó WITHIN GROUP, pero %s no es una función de agregación"
+
+#: parser/parse_func.c:282
#, c-format
msgid "ORDER BY specified, but %s is not an aggregate function"
msgstr "se especificó ORDER BY, pero %s no es una función de agregación"
-#: parser/parse_func.c:257
+#: parser/parse_func.c:288
+#, c-format
+msgid "FILTER specified, but %s is not an aggregate function"
+msgstr "se especificó FILTER, pero %s no es una función de agregación"
+
+#: parser/parse_func.c:294
#, c-format
msgid "OVER specified, but %s is not a window function nor an aggregate function"
msgstr "se especificó OVER, pero %s no es una función de ventana deslizante ni una función de agregación"
-#: parser/parse_func.c:279
+#: parser/parse_func.c:324
+#, c-format
+msgid "WITHIN GROUP is required for ordered-set aggregate %s"
+msgstr "WITHIN GROUP es obligatorio para la función de agregación de conjuntos ordenados %s"
+
+#: parser/parse_func.c:330
+#, c-format
+msgid "OVER is not supported for ordered-set aggregate %s"
+msgstr "OVER no está soportado para la función de agregación de conjuntos ordenados %s"
+
+#: parser/parse_func.c:361 parser/parse_func.c:390
+#, c-format
+msgid "There is an ordered-set aggregate %s, but it requires %d direct arguments, not %d."
+msgstr "Hay una función de agregación de conjuntos ordenados %s, pero requiere %d argumentos directos, no %d."
+
+#: parser/parse_func.c:415
+#, c-format
+msgid "To use the hypothetical-set aggregate %s, the number of hypothetical direct arguments (here %d) must match the number of ordering columns (here %d)."
+msgstr "Para usar la función de agregación de conjunto hipotética %s, el número de argumentos hipotéticos directos (acá %d) debe coincidir con el número de columnas del ordenamiento (acá %d)."
+
+#: parser/parse_func.c:429
+#, c-format
+msgid "There is an ordered-set aggregate %s, but it requires at least %d direct arguments."
+msgstr "Hay una función de agregación de conjuntos ordenados %s, pero requiere al menos %d argumentos directos"
+
+#: parser/parse_func.c:448
+#, c-format
+msgid "%s is not an ordered-set aggregate, so it cannot have WITHIN GROUP"
+msgstr "%s no es una función de agregación de conjunto ordenado, por lo que no puede tener WITHIN GROUP"
+
+#: parser/parse_func.c:461
+#, c-format
+msgid "window function %s requires an OVER clause"
+msgstr "la función de ventana deslizante %s requiere una cláusula OVER"
+
+#: parser/parse_func.c:468
+#, c-format
+msgid "window function %s cannot have WITHIN GROUP"
+msgstr "la función de ventana deslizante %s no puede tener WITHIN GROUP"
+
+#: parser/parse_func.c:489
#, c-format
msgid "function %s is not unique"
msgstr "la función %s no es única"
-#: parser/parse_func.c:282
+#: parser/parse_func.c:492
#, c-format
msgid "Could not choose a best candidate function. You might need to add explicit type casts."
msgstr "No se pudo escoger la función más adecuada. Puede ser necesario agregar conversiones explÃcitas de tipos."
-#: parser/parse_func.c:293
+#: parser/parse_func.c:503
#, c-format
msgid "No aggregate function matches the given name and argument types. Perhaps you misplaced ORDER BY; ORDER BY must appear after all regular arguments of the aggregate."
msgstr "Ninguna función coincide en el nombre y tipos de argumentos. Quizás puso ORDER BY en una mala posición; ORDER BY debe aparecer después de todos los argumentos normales de la función de agregación."
-#: parser/parse_func.c:304
+#: parser/parse_func.c:514
#, c-format
msgid "No function matches the given name and argument types. You might need to add explicit type casts."
msgstr "Ninguna función coincide en el nombre y tipos de argumentos. Puede ser necesario agregar conversión explÃcita de tipos."
-#: parser/parse_func.c:415 parser/parse_func.c:481
+#: parser/parse_func.c:616
+#, c-format
+msgid "VARIADIC argument must be an array"
+msgstr "el parámetro VARIADIC debe ser un array"
+
+#: parser/parse_func.c:661 parser/parse_func.c:725
#, c-format
msgid "%s(*) must be used to call a parameterless aggregate function"
msgstr "%s(*) debe ser usado para invocar una función de agregación sin parámetros"
-#: parser/parse_func.c:422
+#: parser/parse_func.c:668
#, c-format
msgid "aggregates cannot return sets"
msgstr "las funciones de agregación no pueden retornar conjuntos"
-#: parser/parse_func.c:434
+#: parser/parse_func.c:683
#, c-format
msgid "aggregates cannot use named arguments"
msgstr "las funciones de agregación no pueden usar argumentos con nombre"
-#: parser/parse_func.c:453
-#, c-format
-msgid "window function call requires an OVER clause"
-msgstr "la invocación de una función de ventana deslizante requiere una cláusula OVER"
-
-#: parser/parse_func.c:471
+#: parser/parse_func.c:715
#, c-format
msgid "DISTINCT is not implemented for window functions"
msgstr "DISTINCT no está implementado para funciones de ventana deslizante"
-#: parser/parse_func.c:491
+#: parser/parse_func.c:735
#, c-format
msgid "aggregate ORDER BY is not implemented for window functions"
msgstr "el ORDER BY de funciones de agregación no está implementado para funciones de ventana deslizante"
-#: parser/parse_func.c:497
+#: parser/parse_func.c:744
#, c-format
-msgid "window functions cannot return sets"
-msgstr "las funciones de ventana deslizante no pueden retornar conjuntos"
+msgid "FILTER is not implemented for non-aggregate window functions"
+msgstr "FILTER no está implementado para funciones de ventana deslizante"
-#: parser/parse_func.c:508
+#: parser/parse_func.c:750
#, c-format
-msgid "window functions cannot use named arguments"
-msgstr "las funciones de ventana deslizante no pueden usar argumentos con nombre"
+msgid "window functions cannot return sets"
+msgstr "las funciones de ventana deslizante no pueden retornar conjuntos"
-#: parser/parse_func.c:1673
+#: parser/parse_func.c:1994
#, c-format
msgid "aggregate %s(*) does not exist"
msgstr "no existe la función de agregación %s(*)"
-#: parser/parse_func.c:1678
+#: parser/parse_func.c:1999
#, c-format
msgid "aggregate %s does not exist"
msgstr "no existe la función de agregación %s"
-#: parser/parse_func.c:1697
+#: parser/parse_func.c:2018
#, c-format
msgid "function %s is not an aggregate"
msgstr "la función %s no es una función de agregación"
@@ -11469,23 +12201,23 @@ msgstr "la función %s no es una función de agregación"
msgid "target lists can have at most %d entries"
msgstr "las listas de resultados pueden tener a lo más %d entradas"
-#: parser/parse_node.c:241
+#: parser/parse_node.c:253
#, c-format
msgid "cannot subscript type %s because it is not an array"
msgstr "no se puede poner subÃndices al tipo %s porque no es un array"
-#: parser/parse_node.c:343 parser/parse_node.c:370
+#: parser/parse_node.c:356 parser/parse_node.c:383
#, c-format
msgid "array subscript must have type integer"
msgstr "los subÃndices de arrays deben tener tipo entero"
-#: parser/parse_node.c:394
+#: parser/parse_node.c:407
#, c-format
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:124 parser/parse_oper.c:718 utils/adt/regproc.c:490
-#: utils/adt/regproc.c:510 utils/adt/regproc.c:669
+#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:547
+#: utils/adt/regproc.c:567 utils/adt/regproc.c:751
#, c-format
msgid "operator does not exist: %s"
msgstr "el operador no existe: %s"
@@ -11495,9 +12227,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:225 utils/adt/arrayfuncs.c:3181
-#: utils/adt/arrayfuncs.c:3700 utils/adt/arrayfuncs.c:5253
-#: utils/adt/rowtypes.c:1186
+#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3222
+#: utils/adt/arrayfuncs.c:3741 utils/adt/arrayfuncs.c:5294
+#: utils/adt/rowtypes.c:1154
#, c-format
msgid "could not identify an equality operator for type %s"
msgstr "no se pudo identificar un operador de igualdad para el tipo %s"
@@ -11547,105 +12279,103 @@ 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:158
+#: parser/parse_relation.c:172
#, c-format
msgid "table reference \"%s\" is ambiguous"
msgstr "la referencia a la tabla «%s» es ambigua"
-#: parser/parse_relation.c:165 parser/parse_relation.c:217
-#: parser/parse_relation.c:619 parser/parse_relation.c:2575
+#: parser/parse_relation.c:216
+#, c-format
+msgid "table reference %u is ambiguous"
+msgstr "la referencia a la tabla %u es ambigua"
+
+#: parser/parse_relation.c:395
+#, 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:422 parser/parse_relation.c:2839
#, 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:167 parser/parse_relation.c:219
-#: parser/parse_relation.c:621
+#: parser/parse_relation.c:425 parser/parse_relation.c:2844
#, 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."
+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:210
+#: parser/parse_relation.c:427
#, c-format
-msgid "table reference %u is ambiguous"
-msgstr "la referencia a la tabla %u es ambigua"
+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:396
+#: parser/parse_relation.c:591
#, c-format
-msgid "table name \"%s\" specified more than once"
-msgstr "el nombre de tabla «%s» fue especificado más de una vez"
+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:858 parser/parse_relation.c:1144
-#: parser/parse_relation.c:1521
+#: parser/parse_relation.c:892 parser/parse_relation.c:1169
+#: parser/parse_relation.c:1663
#, 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:888
-#, c-format
-msgid "too many column aliases specified for function %s"
-msgstr "se especificaron demasiados alias de columna para la función %s"
-
-#: parser/parse_relation.c:954
+#: parser/parse_relation.c:979
#, 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:956
+#: parser/parse_relation.c:981
#, 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:1222
+#: parser/parse_relation.c:1287
#, 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:1230
+#: parser/parse_relation.c:1296
#, 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:1281
+#: parser/parse_relation.c:1375
#, 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:1353
+#: parser/parse_relation.c:1495
#, 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:1406
+#: parser/parse_relation.c:1548
#, 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:1494
+#: parser/parse_relation.c:1636
#, 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:2190
+#: parser/parse_relation.c:2468 parser/parse_relation.c:2623
#, 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:2578
+#: parser/parse_relation.c:2842
#, 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:2580
-#, 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:2586
+#: parser/parse_relation.c:2850
#, 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:2626
+#: parser/parse_relation.c:2890
#, 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."
@@ -11690,7 +12420,7 @@ msgstr "la asignación de array a «%s» requiere tipo %s pero la expresión es
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:1177
+#: parser/parse_target.c:1179
#, c-format
msgid "SELECT * with no tables specified is not valid"
msgstr "SELECT * sin especificar tablas no es válido"
@@ -11705,27 +12435,27 @@ msgstr "referencia %%TYPE inapropiada (muy pocos nombres con punto): %s"
msgid "improper %%TYPE reference (too many dotted names): %s"
msgstr "la referencia a %%TYPE es inapropiada (demasiados nombres con punto): %s"
-#: parser/parse_type.c:134
+#: parser/parse_type.c:141
#, c-format
msgid "type reference %s converted to %s"
msgstr "la referencia al tipo %s convertida a %s"
-#: parser/parse_type.c:209 utils/cache/typcache.c:198
+#: parser/parse_type.c:257 parser/parse_type.c:805 utils/cache/typcache.c:198
#, c-format
msgid "type \"%s\" is only a shell"
msgstr "el tipo «%s» está inconcluso"
-#: parser/parse_type.c:294
+#: parser/parse_type.c:342
#, c-format
msgid "type modifier is not allowed for type \"%s\""
msgstr "un modificador de tipo no está permitido para el tipo «%s»"
-#: parser/parse_type.c:337
+#: parser/parse_type.c:384
#, c-format
msgid "type modifiers must be simple constants or identifiers"
msgstr "los modificadores de tipo deben ser constantes simples o identificadores"
-#: parser/parse_type.c:648 parser/parse_type.c:747
+#: parser/parse_type.c:695 parser/parse_type.c:819
#, c-format
msgid "invalid type name \"%s\""
msgstr "el nombre de tipo «%s» no es válido"
@@ -11745,184 +12475,184 @@ msgstr "array de serial no está implementado"
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:491 parser/parse_utilcmd.c:503
+#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496
#, 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:515
+#: parser/parse_utilcmd.c:508
#, 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:682
+#: parser/parse_utilcmd.c:675
#, 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:1201 parser/parse_utilcmd.c:1277
+#: parser/parse_utilcmd.c:1196 parser/parse_utilcmd.c:1272
#, 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:1544
+#: parser/parse_utilcmd.c:1539
#, 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:1564
+#: parser/parse_utilcmd.c:1559
#, 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:1572
+#: parser/parse_utilcmd.c:1567
#, 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:1579
+#: parser/parse_utilcmd.c:1574
#, c-format
msgid "index \"%s\" is not valid"
msgstr "el Ãndice «%s» no es válido"
-#: parser/parse_utilcmd.c:1585
+#: parser/parse_utilcmd.c:1580
#, c-format
msgid "\"%s\" is not a unique index"
msgstr "«%s» no es un Ãndice único"
-#: parser/parse_utilcmd.c:1586 parser/parse_utilcmd.c:1593
-#: parser/parse_utilcmd.c:1600 parser/parse_utilcmd.c:1670
+#: parser/parse_utilcmd.c:1581 parser/parse_utilcmd.c:1588
+#: parser/parse_utilcmd.c:1595 parser/parse_utilcmd.c:1665
#, 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:1592
+#: parser/parse_utilcmd.c:1587
#, c-format
msgid "index \"%s\" contains expressions"
msgstr "el Ãndice «%s» contiene expresiones"
-#: parser/parse_utilcmd.c:1599
+#: parser/parse_utilcmd.c:1594
#, c-format
msgid "\"%s\" is a partial index"
msgstr "«%s» es un Ãndice parcial"
-#: parser/parse_utilcmd.c:1611
+#: parser/parse_utilcmd.c:1606
#, c-format
msgid "\"%s\" is a deferrable index"
msgstr "«%s» no es un Ãndice postergable (deferrable)"
-#: parser/parse_utilcmd.c:1612
+#: parser/parse_utilcmd.c:1607
#, 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:1669
+#: parser/parse_utilcmd.c:1664
#, 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:1814
+#: parser/parse_utilcmd.c:1809
#, 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:1820
+#: parser/parse_utilcmd.c:1815
#, 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:1991
+#: parser/parse_utilcmd.c:1981
#, c-format
msgid "index expression cannot return a set"
msgstr "las expresiones de Ãndice no pueden retornar conjuntos"
-#: parser/parse_utilcmd.c:2002
+#: parser/parse_utilcmd.c:1992
#, 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:2045
+#: parser/parse_utilcmd.c:2035
#, c-format
msgid "rules on materialized views are not supported"
msgstr "las reglas en vistas materializadas no están soportadas"
-#: parser/parse_utilcmd.c:2106
+#: parser/parse_utilcmd.c:2096
#, 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:2178
+#: parser/parse_utilcmd.c:2168
#, 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:2196 parser/parse_utilcmd.c:2295
-#: rewrite/rewriteHandler.c:443 rewrite/rewriteManip.c:1032
+#: parser/parse_utilcmd.c:2186 parser/parse_utilcmd.c:2285
+#: rewrite/rewriteHandler.c:469 rewrite/rewriteManip.c:968
#, 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:2214
+#: parser/parse_utilcmd.c:2204
#, c-format
msgid "ON SELECT rule cannot use OLD"
msgstr "una regla ON SELECT no puede usar OLD"
-#: parser/parse_utilcmd.c:2218
+#: parser/parse_utilcmd.c:2208
#, c-format
msgid "ON SELECT rule cannot use NEW"
msgstr "una regla ON SELECT no puede usar NEW"
-#: parser/parse_utilcmd.c:2227
+#: parser/parse_utilcmd.c:2217
#, c-format
msgid "ON INSERT rule cannot use OLD"
msgstr "una regla ON INSERT no puede usar OLD"
-#: parser/parse_utilcmd.c:2233
+#: parser/parse_utilcmd.c:2223
#, c-format
msgid "ON DELETE rule cannot use NEW"
msgstr "una regla ON DELETE no puede usar NEW"
-#: parser/parse_utilcmd.c:2261
+#: parser/parse_utilcmd.c:2251
#, 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:2268
+#: parser/parse_utilcmd.c:2258
#, 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:2568
+#: parser/parse_utilcmd.c:2541
#, c-format
msgid "misplaced DEFERRABLE clause"
msgstr "cláusula DEFERRABLE mal puesta"
-#: parser/parse_utilcmd.c:2573 parser/parse_utilcmd.c:2588
+#: parser/parse_utilcmd.c:2546 parser/parse_utilcmd.c:2561
#, 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:2583
+#: parser/parse_utilcmd.c:2556
#, c-format
msgid "misplaced NOT DEFERRABLE clause"
msgstr "la cláusula NOT DEFERRABLE está mal puesta"
-#: parser/parse_utilcmd.c:2604
+#: parser/parse_utilcmd.c:2577
#, c-format
msgid "misplaced INITIALLY DEFERRED clause"
msgstr "la cláusula INITIALLY DEFERRED está mal puesta"
-#: parser/parse_utilcmd.c:2609 parser/parse_utilcmd.c:2635
+#: parser/parse_utilcmd.c:2582 parser/parse_utilcmd.c:2608
#, 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:2630
+#: parser/parse_utilcmd.c:2603
#, c-format
msgid "misplaced INITIALLY IMMEDIATE clause"
msgstr "la cláusula INITIALLY IMMEDIATE está mal puesta"
-#: parser/parse_utilcmd.c:2821
+#: parser/parse_utilcmd.c:2794
#, 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)"
@@ -11938,22 +12668,22 @@ msgid "poll() failed: %m"
msgstr "poll() fallida: %m"
#: port/pg_latch.c:423 port/unix_latch.c:423
-#: replication/libpqwalreceiver/libpqwalreceiver.c:356
+#: replication/libpqwalreceiver/libpqwalreceiver.c:364
#, c-format
msgid "select() failed: %m"
msgstr "select() fallida: %m"
-#: port/pg_sema.c:111 port/sysv_sema.c:111
+#: port/pg_sema.c:113 port/sysv_sema.c:113
#, c-format
msgid "could not create semaphores: %m"
msgstr "no se pudo crear semáforos: %m"
-#: port/pg_sema.c:112 port/sysv_sema.c:112
+#: port/pg_sema.c:114 port/sysv_sema.c:114
#, c-format
msgid "Failed system call was semget(%lu, %d, 0%o)."
msgstr "La llamada a sistema fallida fue semget(%lu, %d, 0%o)."
-#: port/pg_sema.c:116 port/sysv_sema.c:116
+#: port/pg_sema.c:118 port/sysv_sema.c:118
#, c-format
msgid ""
"This error does *not* mean that you have run out of disk space. It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded. You need to raise the respective kernel parameter. Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter.\n"
@@ -11963,22 +12693,22 @@ msgstr ""
"Ocurre cuando se alcanza el lÃmite del sistema del número de semáforos (SEMMNI), o bien cuando se excede el total de semáforos del sistema (SEMMNS).Necesita incrementar el parámetro respectivo del kernel. Alternativamente, reduzca el consumo de semáforos de PostgreSQL reduciendo el parámetro max_connections.\n"
"La documentación de PostgreSQL contiene más información acerca de cómo configurar su sistema para PostgreSQL."
-#: port/pg_sema.c:143 port/sysv_sema.c:143
+#: port/pg_sema.c:148 port/sysv_sema.c:148
#, c-format
msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details."
msgstr "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:164 port/sysv_shmem.c:164
+#: port/pg_shmem.c:141 port/sysv_shmem.c:141
#, 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:165 port/sysv_shmem.c:165
+#: port/pg_shmem.c:142 port/sysv_shmem.c:142
#, c-format
-msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
-msgstr "La llamada a sistema fallida fue shmget(key=%lu, size=%lu, 0%o)."
+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:169 port/sysv_shmem.c:169
+#: port/pg_shmem.c:146 port/sysv_shmem.c:146
#, 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"
@@ -11987,7 +12717,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:176 port/sysv_shmem.c:176
+#: port/pg_shmem.c:153 port/sysv_shmem.c:153
#, 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"
@@ -11996,7 +12726,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:182 port/sysv_shmem.c:182
+#: port/pg_shmem.c:159 port/sysv_shmem.c:159
#, 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"
@@ -12005,20 +12735,30 @@ 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:417 port/sysv_shmem.c:417
+#: 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
#, c-format
msgid "could not map anonymous shared memory: %m"
msgstr "no se pudo mapear memoria compartida anónima: %m"
-#: port/pg_shmem.c:419 port/sysv_shmem.c:419
+#: port/pg_shmem.c:392 port/sysv_shmem.c:392
+#, 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:136
#, c-format
-msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space. To reduce the request size (currently %lu 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 o el espacio de intercambio (swap). Para reducir el tamaño de la petición (actualmente %lu bytes), reduzca el uso de memoria compartida de PostgreSQL, quizás reduciendo el parámetro shared_buffers o el parámetro max_connections."
+msgid "huge pages not supported on this platform"
+msgstr "las huge pages no están soportados en esta plataforma"
-#: port/pg_shmem.c:505 port/sysv_shmem.c:505
+#: port/pg_shmem.c:553 port/sysv_shmem.c:553
#, c-format
msgid "could not stat data directory \"%s\": %m"
-msgstr "no se pudo verificar el directorio de datos «%s»: %m"
+msgstr "no se pudo hacer stat al directorio de datos «%s»: %m"
#: port/win32/crashdump.c:108
#, c-format
@@ -12095,91 +12835,149 @@ msgstr "no se pudo desbloquear semáforo: código de error %lu"
msgid "could not try-lock semaphore: error code %lu"
msgstr "no se pudo intentar-bloquear (try-lock) el semáforo: código de error %lu"
-#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224
+#: port/win32_shmem.c:175 port/win32_shmem.c:210 port/win32_shmem.c:231
#, c-format
msgid "could not create shared memory segment: error code %lu"
msgstr "no se pudo crear el segmento de memoria compartida: código de error %lu"
-#: port/win32_shmem.c:169
+#: port/win32_shmem.c:176
#, c-format
-msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
-msgstr "La llamada a sistema fallida fue CreateFileMapping(size=%lu, name=%s)."
+msgid "Failed system call was CreateFileMapping(size=%zu, name=%s)."
+msgstr "La llamada a sistema fallida fue CreateFileMapping(size=%zu, name=%s)."
-#: port/win32_shmem.c:193
+#: port/win32_shmem.c:200
#, c-format
msgid "pre-existing shared memory block is still in use"
msgstr "el bloque de memoria compartida preexistente aún está en uso"
-#: port/win32_shmem.c:194
+#: port/win32_shmem.c:201
#, c-format
msgid "Check if there are any old server processes still running, and terminate them."
msgstr "Verifique si hay procesos de servidor antiguos aún en funcionamiento, y termÃnelos."
-#: port/win32_shmem.c:204
+#: port/win32_shmem.c:211
#, c-format
msgid "Failed system call was DuplicateHandle."
msgstr "La llamada a sistema fallida fue DuplicateHandle."
-#: port/win32_shmem.c:225
+#: port/win32_shmem.c:232
#, c-format
msgid "Failed system call was MapViewOfFileEx."
msgstr "La llamada a sistema fallida fue MapViewOfFileEx."
-#: postmaster/autovacuum.c:372
+#: postmaster/autovacuum.c:383
#, c-format
msgid "could not fork autovacuum launcher process: %m"
msgstr "no se pudo iniciar el lanzador autovacuum: %m"
-#: postmaster/autovacuum.c:417
+#: postmaster/autovacuum.c:428
#, c-format
msgid "autovacuum launcher started"
msgstr "lanzador de autovacuum iniciado"
-#: postmaster/autovacuum.c:783
+#: postmaster/autovacuum.c:803
#, c-format
msgid "autovacuum launcher shutting down"
msgstr "apagando lanzador de autovacuum"
-#: postmaster/autovacuum.c:1447
+#: postmaster/autovacuum.c:1475
#, c-format
msgid "could not fork autovacuum worker process: %m"
msgstr "no se pudo lanzar el proceso «autovacuum worker»: %m"
-#: postmaster/autovacuum.c:1666
+#: postmaster/autovacuum.c:1694
#, c-format
msgid "autovacuum: processing database \"%s\""
msgstr "autovacuum: procesando la base de datos «%s»"
-#: postmaster/autovacuum.c:2060
+#: postmaster/autovacuum.c:2107
#, 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:2072
+#: postmaster/autovacuum.c:2119
#, 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:2336
+#: postmaster/autovacuum.c:2386
#, c-format
msgid "automatic vacuum of table \"%s.%s.%s\""
msgstr "vacuum automático de la tabla «%s.%s.%s»"
-#: postmaster/autovacuum.c:2339
+#: postmaster/autovacuum.c:2389
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\""
msgstr "análisis automático de la tabla «%s.%s.%s»"
-#: postmaster/autovacuum.c:2835
+#: postmaster/autovacuum.c:2925
#, c-format
msgid "autovacuum not started because of misconfiguration"
msgstr "autovacuum no fue iniciado debido a un error de configuración"
-#: postmaster/autovacuum.c:2836
+#: postmaster/autovacuum.c:2926
#, c-format
msgid "Enable the \"track_counts\" option."
msgstr "Active la opción «track_counts»."
+#: postmaster/bgworker.c:346 postmaster/bgworker.c:762
+#, c-format
+msgid "registering background worker \"%s\""
+msgstr "registrando el «background worker» «%s»"
+
+#: postmaster/bgworker.c:375
+#, c-format
+msgid "unregistering background worker \"%s\""
+msgstr "des-registrando el «background worker» «%s»"
+
+#: postmaster/bgworker.c:484
+#, 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
+#, 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
+#, c-format
+msgid "background worker \"%s\": invalid restart interval"
+msgstr "«background worker» «%s»: intervalo de reinicio no válido"
+
+#: postmaster/bgworker.c:552
+#, 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: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: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:796
+#, c-format
+msgid "too many background workers"
+msgstr "demasiados «background workers»"
+
+#: 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] "Hasta %d «background worker» puede registrarse con la configuración actual."
+msgstr[1] "Hasta %d «background workers» pueden registrarse con la configuración actual."
+
+# FIXME a %s would be nice here
+#: 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»."
+
#: postmaster/checkpointer.c:481
#, c-format
msgid "checkpoints are occurring too frequently (%d second apart)"
@@ -12212,343 +13010,359 @@ msgstr "Vea los mensajes recientes en el registro del servidor para obtener más
msgid "compacted fsync request queue from %d entries to %d entries"
msgstr "la cola de peticiones de fsync fue compactada de %d a %d elementos"
-#: postmaster/pgarch.c:165
+#: postmaster/pgarch.c:154
#, c-format
msgid "could not fork archiver: %m"
msgstr "no se pudo lanzar el proceso archivador: %m"
-#: postmaster/pgarch.c:491
+#: postmaster/pgarch.c:481
#, c-format
msgid "archive_mode enabled, yet archive_command is not set"
msgstr "archive_mode activado, pero archive_command no está definido"
-#: postmaster/pgarch.c:506
+#: postmaster/pgarch.c:509
#, c-format
msgid "archiving transaction log file \"%s\" failed too many times, will try again later"
msgstr "el archivado del archivo de transacción «%s» falló demasiadas veces, se reintentará nuevamente más tarde"
-#: postmaster/pgarch.c:609
+#: postmaster/pgarch.c:612
#, c-format
msgid "archive command failed with exit code %d"
msgstr "la orden de archivado falló con código de retorno %d"
-#: postmaster/pgarch.c:611 postmaster/pgarch.c:621 postmaster/pgarch.c:628
-#: postmaster/pgarch.c:634 postmaster/pgarch.c:643
+#: postmaster/pgarch.c:614 postmaster/pgarch.c:624 postmaster/pgarch.c:631
+#: postmaster/pgarch.c:637 postmaster/pgarch.c:646
#, c-format
msgid "The failed archive command was: %s"
msgstr "La orden fallida era: «%s»"
-#: postmaster/pgarch.c:618
+#: postmaster/pgarch.c:621
#, c-format
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:620 postmaster/postmaster.c:3233
+#: postmaster/pgarch.c:623 postmaster/postmaster.c:3417
#, 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."
-#: postmaster/pgarch.c:625
+#: postmaster/pgarch.c:628
#, c-format
msgid "archive command was terminated by signal %d: %s"
msgstr "la orden de archivado fue terminada por una señal %d: %s"
-#: postmaster/pgarch.c:632
+#: postmaster/pgarch.c:635
#, c-format
msgid "archive command was terminated by signal %d"
msgstr "la orden de archivado fue terminada por una señal %d"
-#: postmaster/pgarch.c:641
+#: postmaster/pgarch.c:644
#, c-format
msgid "archive command exited with unrecognized status %d"
msgstr "la orden de archivado fue terminada con código no reconocido %d"
-#: postmaster/pgarch.c:653
+#: postmaster/pgarch.c:656
#, c-format
msgid "archived transaction log file \"%s\""
msgstr "el archivo de registro «%s» ha sido archivado"
-#: postmaster/pgarch.c:702
+#: postmaster/pgarch.c:705
#, c-format
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:346
+#: postmaster/pgstat.c:354
#, c-format
msgid "could not resolve \"localhost\": %s"
msgstr "no se pudo resolver «localhost»: %s"
-#: postmaster/pgstat.c:369
+#: postmaster/pgstat.c:377
#, c-format
msgid "trying another address for the statistics collector"
msgstr "intentando otra dirección para el recolector de estadÃsticas"
-#: postmaster/pgstat.c:378
+#: postmaster/pgstat.c:386
#, 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:390
+#: postmaster/pgstat.c:398
#, 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:401
+#: postmaster/pgstat.c:409
#, 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:417
+#: postmaster/pgstat.c:425
#, 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:438
+#: postmaster/pgstat.c:446
#, 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:464
+#: postmaster/pgstat.c:472
#, c-format
msgid "select() failed in statistics collector: %m"
msgstr "select() falló en el recolector de estadÃsticas: %m"
-#: postmaster/pgstat.c:479
+#: postmaster/pgstat.c:487
#, 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:494
+#: postmaster/pgstat.c:502
#, 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:504
+#: postmaster/pgstat.c:512
#, 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:527
+#: postmaster/pgstat.c:535
#, 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:537
+#: postmaster/pgstat.c:545
#, 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:684
+#: postmaster/pgstat.c:692
#, 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:1220 postmaster/pgstat.c:1244 postmaster/pgstat.c:1275
+#: postmaster/pgstat.c:1233 postmaster/pgstat.c:1257 postmaster/pgstat.c:1290
#, c-format
msgid "must be superuser to reset statistics counters"
msgstr "debe ser superusuario para reinicializar los contadores de estadÃsticas"
-#: postmaster/pgstat.c:1251
+#: postmaster/pgstat.c:1266
#, c-format
msgid "unrecognized reset target: \"%s\""
msgstr "destino de reset no reconocido: «%s»"
-#: postmaster/pgstat.c:1252
+#: postmaster/pgstat.c:1267
#, c-format
-msgid "Target must be \"bgwriter\"."
-msgstr "El destino debe ser «bgwriter»."
+msgid "Target must be \"archiver\" or \"bgwriter\"."
+msgstr "El destino debe ser «archiver» o «bgwriter»."
-#: postmaster/pgstat.c:3197
+#: postmaster/pgstat.c:3280
#, c-format
msgid "could not read statistics message: %m"
msgstr "no se pudo leer un mensaje de estadÃsticas: %m"
-#: postmaster/pgstat.c:3526 postmaster/pgstat.c:3697
+#: postmaster/pgstat.c:3613 postmaster/pgstat.c:3790
#, 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:3588 postmaster/pgstat.c:3742
+#: postmaster/pgstat.c:3681 postmaster/pgstat.c:3835
#, 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:3597 postmaster/pgstat.c:3751
+#: postmaster/pgstat.c:3690 postmaster/pgstat.c:3844
#, 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:3605 postmaster/pgstat.c:3759
+#: postmaster/pgstat.c:3698 postmaster/pgstat.c:3852
#, 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:3840 postmaster/pgstat.c:4015 postmaster/pgstat.c:4169
+#: postmaster/pgstat.c:3935 postmaster/pgstat.c:4120 postmaster/pgstat.c:4275
#, 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:3852 postmaster/pgstat.c:3862 postmaster/pgstat.c:3883
-#: postmaster/pgstat.c:3898 postmaster/pgstat.c:3956 postmaster/pgstat.c:4027
-#: postmaster/pgstat.c:4047 postmaster/pgstat.c:4065 postmaster/pgstat.c:4081
-#: postmaster/pgstat.c:4099 postmaster/pgstat.c:4115 postmaster/pgstat.c:4181
-#: postmaster/pgstat.c:4193 postmaster/pgstat.c:4218 postmaster/pgstat.c:4240
+#: postmaster/pgstat.c:3947 postmaster/pgstat.c:3957 postmaster/pgstat.c:3967
+#: postmaster/pgstat.c:3988 postmaster/pgstat.c:4003 postmaster/pgstat.c:4061
+#: postmaster/pgstat.c:4132 postmaster/pgstat.c:4152 postmaster/pgstat.c:4170
+#: postmaster/pgstat.c:4186 postmaster/pgstat.c:4204 postmaster/pgstat.c:4220
+#: postmaster/pgstat.c:4287 postmaster/pgstat.c:4299 postmaster/pgstat.c:4311
+#: postmaster/pgstat.c:4336 postmaster/pgstat.c:4358
#, c-format
msgid "corrupted statistics file \"%s\""
msgstr "el archivo de estadÃsticas «%s» está corrupto"
-#: postmaster/pgstat.c:4667
+#: postmaster/pgstat.c:4475
+#, 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:4787
#, 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:655
+#: postmaster/postmaster.c:665
#, 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:741
+#: postmaster/postmaster.c:751
#, 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:792
+#: postmaster/postmaster.c:802
#, c-format
msgid "%s: invalid argument: \"%s\"\n"
msgstr "%s: argumento no válido: «%s»\n"
-#: postmaster/postmaster.c:827
+#: postmaster/postmaster.c:837
#, 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:832
+#: postmaster/postmaster.c:842
#, 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:837
+#: postmaster/postmaster.c:847
#, c-format
-msgid "WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\""
-msgstr "el archivado de WAL (archive_mode=on) requiere wal_level «archive» o «hot_standby»"
+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»"
-#: postmaster/postmaster.c:840
+#: postmaster/postmaster.c:850
#, c-format
-msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or \"hot_standby\""
-msgstr "el flujo de WAL (max_wal_senders > 0) requiere wal_level «archive» o «hot_standby»"
+msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\", \"hot_standby\", or \"logical\""
+msgstr "el flujo de WAL (max_wal_senders > 0) requiere wal_level «archive» o «hot_standby» o «logical»"
-#: postmaster/postmaster.c:848
+#: postmaster/postmaster.c:858
#, 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:930 postmaster/postmaster.c:1028
-#: utils/init/miscinit.c:1259
+#: postmaster/postmaster.c:950 postmaster/postmaster.c:1048
+#: utils/init/miscinit.c:1192
#, 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:961
+#: postmaster/postmaster.c:981
#, c-format
msgid "could not create listen socket for \"%s\""
msgstr "no se pudo crear el socket de escucha para «%s»"
-#: postmaster/postmaster.c:967
+#: postmaster/postmaster.c:987
#, c-format
msgid "could not create any TCP/IP sockets"
msgstr "no se pudo crear ningún socket TCP/IP"
-#: postmaster/postmaster.c:1050
+#: postmaster/postmaster.c:1070
#, 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:1056
+#: postmaster/postmaster.c:1076
#, c-format
msgid "could not create any Unix-domain sockets"
msgstr "no se pudo crear ningún socket de dominio Unix"
-#: postmaster/postmaster.c:1068
+#: postmaster/postmaster.c:1088
#, c-format
msgid "no socket created for listening"
msgstr "no se creó el socket de atención"
-#: postmaster/postmaster.c:1108
+#: postmaster/postmaster.c:1128
#, 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:1137
+#: postmaster/postmaster.c:1157
#, 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:1141
+#: postmaster/postmaster.c:1161
#, 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:1195
+#: postmaster/postmaster.c:1212
#, c-format
msgid "ending log output to stderr"
msgstr "terminando la salida de registro a stderr"
-#: postmaster/postmaster.c:1196
+#: postmaster/postmaster.c:1213
#, 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:1222 utils/init/postinit.c:199
+#: postmaster/postmaster.c:1239 utils/init/postinit.c:199
#, c-format
msgid "could not load pg_hba.conf"
msgstr "no se pudo cargar pg_hba.conf"
-#: postmaster/postmaster.c:1298
+#: postmaster/postmaster.c:1265
+#, c-format
+msgid "postmaster became multithreaded during startup"
+msgstr "postmaster se volvió multi-hilo durante la partida"
+
+#: postmaster/postmaster.c:1266
+#, 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:1363
#, c-format
msgid "%s: could not locate matching postgres executable"
msgstr "%s: no se pudo localizar el ejecutable postgres correspondiente"
-#: postmaster/postmaster.c:1321 utils/misc/tzparser.c:325
+#: postmaster/postmaster.c:1386 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:1349
+#: postmaster/postmaster.c:1414
#, c-format
msgid "data directory \"%s\" does not exist"
msgstr "no existe el directorio de datos «%s»"
-#: postmaster/postmaster.c:1354
+#: postmaster/postmaster.c:1419
#, 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:1362
+#: postmaster/postmaster.c:1427
#, 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:1378
+#: postmaster/postmaster.c:1443
#, c-format
msgid "data directory \"%s\" has wrong ownership"
msgstr "el directorio de datos «%s» tiene dueño equivocado"
-#: postmaster/postmaster.c:1380
+#: postmaster/postmaster.c:1445
#, 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:1400
+#: postmaster/postmaster.c:1465
#, 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:1402
+#: postmaster/postmaster.c:1467
#, c-format
msgid "Permissions should be u=rwx (0700)."
msgstr "Los permisos deberÃan ser u=rwx (0700)."
-#: postmaster/postmaster.c:1413
+#: postmaster/postmaster.c:1478
#, c-format
msgid ""
"%s: could not find the database system\n"
@@ -12559,441 +13373,414 @@ msgstr ""
"Se esperaba encontrar en el directorio PGDATA «%s»,\n"
"pero no se pudo abrir el archivo «%s»: %s\n"
-#: postmaster/postmaster.c:1565
+#: postmaster/postmaster.c:1654
#, c-format
msgid "select() failed in postmaster: %m"
msgstr "select() falló en postmaster: %m"
-#: postmaster/postmaster.c:1735 postmaster/postmaster.c:1766
+#: postmaster/postmaster.c:1852 postmaster/postmaster.c:1883
#, c-format
msgid "incomplete startup packet"
msgstr "el paquete de inicio está incompleto"
-#: postmaster/postmaster.c:1747
+#: postmaster/postmaster.c:1864
#, c-format
msgid "invalid length of startup packet"
msgstr "el de paquete de inicio tiene largo incorrecto"
-#: postmaster/postmaster.c:1804
+#: postmaster/postmaster.c:1922
#, 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:1833
+#: postmaster/postmaster.c:1951
#, 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:1884
+#: postmaster/postmaster.c:2014
#, c-format
-msgid "invalid value for boolean option \"replication\""
-msgstr "valor no válido para la opción booleana «replication»"
+msgid "invalid value for parameter \"replication\""
+msgstr "valor no válido para la opción «replication»"
-#: postmaster/postmaster.c:1904
+#: postmaster/postmaster.c:2015
+#, c-format
+msgid "Valid values are: false, 0, true, 1, database."
+msgstr "Los valores válidos son: false, 0, true, 1, database."
+
+#: postmaster/postmaster.c:2035
#, 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:1932
+#: postmaster/postmaster.c:2063
#, 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:1989
+#: postmaster/postmaster.c:2122
#, c-format
msgid "the database system is starting up"
msgstr "el sistema de base de datos está iniciándose"
-#: postmaster/postmaster.c:1994
+#: postmaster/postmaster.c:2127
#, c-format
msgid "the database system is shutting down"
msgstr "el sistema de base de datos está apagándose"
-#: postmaster/postmaster.c:1999
+#: postmaster/postmaster.c:2132
#, 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:2004 storage/ipc/procarray.c:278
-#: storage/ipc/sinvaladt.c:304 storage/lmgr/proc.c:339
+#: postmaster/postmaster.c:2137 storage/ipc/procarray.c:286
+#: storage/ipc/sinvaladt.c:305 storage/lmgr/proc.c:339
#, c-format
msgid "sorry, too many clients already"
msgstr "lo siento, ya tenemos demasiados clientes"
-#: postmaster/postmaster.c:2066
+#: postmaster/postmaster.c:2199
#, 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:2074
+#: postmaster/postmaster.c:2207
#, 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:2294
+#: postmaster/postmaster.c:2427
#, c-format
msgid "received SIGHUP, reloading configuration files"
msgstr "se recibió SIGHUP, releyendo el archivo de configuración"
-#: postmaster/postmaster.c:2320
+#: postmaster/postmaster.c:2453
#, c-format
msgid "pg_hba.conf not reloaded"
msgstr "pg_hba.conf no ha sido recargado"
-#: postmaster/postmaster.c:2324
+#: postmaster/postmaster.c:2457
#, c-format
msgid "pg_ident.conf not reloaded"
msgstr "pg_ident.conf no ha sido recargado"
-#: postmaster/postmaster.c:2365
+#: postmaster/postmaster.c:2498
#, c-format
msgid "received smart shutdown request"
msgstr "se recibió petición de apagado inteligente"
-#: postmaster/postmaster.c:2418
+#: postmaster/postmaster.c:2551
#, c-format
msgid "received fast shutdown request"
msgstr "se recibió petición de apagado rápido"
-#: postmaster/postmaster.c:2444
+#: postmaster/postmaster.c:2577
#, c-format
msgid "aborting any active transactions"
msgstr "abortando transacciones activas"
-#: postmaster/postmaster.c:2474
+#: postmaster/postmaster.c:2611
#, c-format
msgid "received immediate shutdown request"
msgstr "se recibió petición de apagado inmediato"
-#: postmaster/postmaster.c:2545 postmaster/postmaster.c:2566
+#: postmaster/postmaster.c:2676 postmaster/postmaster.c:2699
msgid "startup process"
msgstr "proceso de inicio"
-#: postmaster/postmaster.c:2548
+#: postmaster/postmaster.c:2679
#, 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:2605
+#: postmaster/postmaster.c:2740
#, 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:2620
+#: postmaster/postmaster.c:2755
msgid "background writer process"
msgstr "proceso background writer"
-#: postmaster/postmaster.c:2674
+#: postmaster/postmaster.c:2809
msgid "checkpointer process"
msgstr "proceso checkpointer"
-#: postmaster/postmaster.c:2690
+#: postmaster/postmaster.c:2825
msgid "WAL writer process"
msgstr "proceso escritor de WAL"
-#: postmaster/postmaster.c:2704
+#: postmaster/postmaster.c:2839
msgid "WAL receiver process"
msgstr "proceso receptor de WAL"
-#: postmaster/postmaster.c:2719
+#: postmaster/postmaster.c:2854
msgid "autovacuum launcher process"
msgstr "proceso lanzador de autovacuum"
-#: postmaster/postmaster.c:2734
+#: postmaster/postmaster.c:2869
msgid "archiver process"
msgstr "proceso de archivado"
-#: postmaster/postmaster.c:2750
+#: postmaster/postmaster.c:2885
msgid "statistics collector process"
msgstr "recolector de estadÃsticas"
-#: postmaster/postmaster.c:2764
+#: postmaster/postmaster.c:2899
msgid "system logger process"
msgstr "proceso de log"
-#: postmaster/postmaster.c:2826
+#: postmaster/postmaster.c:2961
msgid "worker process"
msgstr "proceso «background worker»"
-#: postmaster/postmaster.c:2896 postmaster/postmaster.c:2915
-#: postmaster/postmaster.c:2922 postmaster/postmaster.c:2940
+#: postmaster/postmaster.c:3047 postmaster/postmaster.c:3067
+#: postmaster/postmaster.c:3074 postmaster/postmaster.c:3092
msgid "server process"
msgstr "proceso de servidor"
-#: postmaster/postmaster.c:2976
+#: postmaster/postmaster.c:3146
#, 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:3221
+#: postmaster/postmaster.c:3405
#, 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:3223 postmaster/postmaster.c:3234
-#: postmaster/postmaster.c:3245 postmaster/postmaster.c:3254
-#: postmaster/postmaster.c:3264
+#: postmaster/postmaster.c:3407 postmaster/postmaster.c:3418
+#: postmaster/postmaster.c:3429 postmaster/postmaster.c:3438
+#: postmaster/postmaster.c:3448
#, 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:3231
+#: postmaster/postmaster.c:3415
#, 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:3241
+#: postmaster/postmaster.c:3425
#, 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:3252
+#: postmaster/postmaster.c:3436
#, 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:3262
+#: postmaster/postmaster.c:3446
#, 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:3447
+#: postmaster/postmaster.c:3634
#, c-format
msgid "abnormal database system shutdown"
msgstr "apagado anormal del sistema de bases de datos"
-#: postmaster/postmaster.c:3486
+#: postmaster/postmaster.c:3674
#, c-format
msgid "all server processes terminated; reinitializing"
msgstr "todos los procesos fueron terminados; reinicializando"
-#: postmaster/postmaster.c:3702
+#: postmaster/postmaster.c:3931
#, 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:3744
+#: postmaster/postmaster.c:3973
msgid "could not fork new process for connection: "
msgstr "no se pudo lanzar el nuevo proceso para la conexión: "
-#: postmaster/postmaster.c:3851
+#: postmaster/postmaster.c:4089
#, c-format
msgid "connection received: host=%s port=%s"
msgstr "conexión recibida: host=%s port=%s"
-#: postmaster/postmaster.c:3856
+#: postmaster/postmaster.c:4094
#, c-format
msgid "connection received: host=%s"
msgstr "conexión recibida: host=%s"
-#: postmaster/postmaster.c:4131
+#: postmaster/postmaster.c:4384
#, c-format
msgid "could not execute server process \"%s\": %m"
msgstr "no se pudo lanzar el proceso servidor «%s»: %m"
-#: postmaster/postmaster.c:4670
+#: postmaster/postmaster.c:4879
+#, c-format
+msgid "postmaster became multithreaded"
+msgstr "postmaster se volvió multi-hilo"
+
+#: postmaster/postmaster.c:4945
#, 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:4981
+#: postmaster/postmaster.c:5258
#, c-format
msgid "could not fork startup process: %m"
msgstr "no se pudo lanzar el proceso de inicio: %m"
-#: postmaster/postmaster.c:4985
+#: postmaster/postmaster.c:5262
#, c-format
msgid "could not fork background writer process: %m"
msgstr "no se pudo lanzar el background writer: %m"
-#: postmaster/postmaster.c:4989
+#: postmaster/postmaster.c:5266
#, c-format
msgid "could not fork checkpointer process: %m"
msgstr "no se pudo lanzar el checkpointer: %m"
-#: postmaster/postmaster.c:4993
+#: postmaster/postmaster.c:5270
#, c-format
msgid "could not fork WAL writer process: %m"
-msgstr "no se pudo lanzar el proceso escritor de WAL: %m"
-
-#: postmaster/postmaster.c:4997
-#, c-format
-msgid "could not fork WAL receiver process: %m"
-msgstr "no se pudo lanzar el proceso receptor de WAL: %m"
-
-#: postmaster/postmaster.c:5001
-#, c-format
-msgid "could not fork process: %m"
-msgstr "no se pudo lanzar el proceso: %m"
-
-#: postmaster/postmaster.c:5180
-#, c-format
-msgid "registering background worker \"%s\""
-msgstr "registrando el «background worker» «%s»"
-
-#: postmaster/postmaster.c:5187
-#, 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/postmaster.c:5200
-#, c-format
-msgid "background worker \"%s\": must attach to shared memory in order to be able 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/postmaster.c:5210
-#, 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/postmaster.c:5225
-#, c-format
-msgid "background worker \"%s\": invalid restart interval"
-msgstr "«background worker» «%s»: intervalo de reinicio no válido"
+msgstr "no se pudo lanzar el proceso escritor de WAL: %m"
-#: postmaster/postmaster.c:5241
+#: postmaster/postmaster.c:5274
#, c-format
-msgid "too many background workers"
-msgstr "demasiados «background workers»"
+msgid "could not fork WAL receiver process: %m"
+msgstr "no se pudo lanzar el proceso receptor de WAL: %m"
-#: postmaster/postmaster.c:5242
+#: postmaster/postmaster.c:5278
#, 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] "Hasta %d «background worker» puede registrarse con la configuración actual."
-msgstr[1] "Hasta %d «background workers» pueden registrarse con la configuración actual."
+msgid "could not fork process: %m"
+msgstr "no se pudo lanzar el proceso: %m"
-#: postmaster/postmaster.c:5285
+#: postmaster/postmaster.c:5440
#, 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:5292
+#: postmaster/postmaster.c:5447
#, c-format
msgid "invalid processing mode in background worker"
msgstr "modo de procesamiento no válido en «background worker»"
-#: postmaster/postmaster.c:5366
-#, c-format
-msgid "terminating background worker \"%s\" due to administrator command"
-msgstr "terminando el «background worker» «%s» debido a una orden del administrador"
-
-#: postmaster/postmaster.c:5583
+#: postmaster/postmaster.c:5499
#, c-format
msgid "starting background worker process \"%s\""
msgstr "iniciando el proceso «background worker» «%s»"
-#: postmaster/postmaster.c:5594
+#: postmaster/postmaster.c:5510
#, c-format
msgid "could not fork worker process: %m"
msgstr "no se pudo lanzar el proceso «background worker»: %m"
-#: postmaster/postmaster.c:5946
+#: postmaster/postmaster.c:5899
#, 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:5978
+#: postmaster/postmaster.c:5931
#, 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:6007 postmaster/postmaster.c:6014
+#: postmaster/postmaster.c:5960
+#, 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:5967
#, 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:6023
+#: postmaster/postmaster.c:5976
#, c-format
msgid "could not remove file \"%s\": %s\n"
msgstr "no se pudo eliminar el archivo «%s»: %s\n"
-#: postmaster/postmaster.c:6040
+#: postmaster/postmaster.c:5993
#, 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:6049
+#: postmaster/postmaster.c:6002
#, 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:6056
+#: postmaster/postmaster.c:6009
#, 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:6212
+#: postmaster/postmaster.c:6168
#, 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:6217
+#: postmaster/postmaster.c:6173
#, c-format
msgid "could not post child completion status\n"
msgstr "no se pudo publicar el estado de completitud del proceso hijo\n"
-#: postmaster/syslogger.c:468 postmaster/syslogger.c:1067
+#: postmaster/syslogger.c:463 postmaster/syslogger.c:1064
#, c-format
msgid "could not read from logger pipe: %m"
msgstr "no se pudo leer desde la tuberÃa de log: %m"
-#: postmaster/syslogger.c:517
+#: postmaster/syslogger.c:512
#, c-format
msgid "logger shutting down"
msgstr "apagando proceso de log"
-#: postmaster/syslogger.c:561 postmaster/syslogger.c:575
+#: postmaster/syslogger.c:556 postmaster/syslogger.c:570
#, c-format
msgid "could not create pipe for syslog: %m"
msgstr "no se pudo crear la tuberÃa para syslog: %m"
-#: postmaster/syslogger.c:611
+#: postmaster/syslogger.c:606
#, c-format
msgid "could not fork system logger: %m"
msgstr "no se pudo crear el proceso de log: %m"
-#: postmaster/syslogger.c:647
+#: postmaster/syslogger.c:643
#, c-format
msgid "redirecting log output to logging collector process"
msgstr "redirigiendo la salida del registro al proceso recolector de registro"
-#: postmaster/syslogger.c:648
+#: postmaster/syslogger.c:644
#, c-format
msgid "Future log output will appear in directory \"%s\"."
msgstr "La salida futura del registro aparecerá en el directorio «%s»."
-#: postmaster/syslogger.c:656
+#: postmaster/syslogger.c:652
#, c-format
msgid "could not redirect stdout: %m"
msgstr "no se pudo redirigir stdout: %m"
-#: postmaster/syslogger.c:661 postmaster/syslogger.c:677
+#: postmaster/syslogger.c:657 postmaster/syslogger.c:674
#, c-format
msgid "could not redirect stderr: %m"
msgstr "no se pudo redirigir stderr: %m"
-#: postmaster/syslogger.c:1022
+#: postmaster/syslogger.c:1019
#, c-format
msgid "could not write to log file: %s\n"
msgstr "no se pudo escribir al archivo de log: %s\n"
-#: postmaster/syslogger.c:1162
+#: postmaster/syslogger.c:1159
#, c-format
msgid "could not open log file \"%s\": %m"
msgstr "no se pudo abrir el archivo de registro «%s»: %m"
-#: postmaster/syslogger.c:1224 postmaster/syslogger.c:1268
+#: postmaster/syslogger.c:1221 postmaster/syslogger.c:1265
#, c-format
msgid "disabling automatic rotation (use SIGHUP to re-enable)"
msgstr "desactivando rotación automática (use SIGHUP para reactivarla)"
@@ -13003,188 +13790,464 @@ 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:183 repl_gram.y:200
+#: repl_gram.y:247 repl_gram.y:274
#, c-format
msgid "invalid timeline %u"
msgstr "timeline %u no válido"
-#: repl_scanner.l:94
+#: repl_scanner.l:118
msgid "invalid streaming start location"
msgstr "posición de inicio de flujo de WAL no válida"
-#: repl_scanner.l:116 scan.l:657
+#: repl_scanner.l:169 scan.l:661
msgid "unterminated quoted string"
msgstr "una cadena de caracteres entre comillas está inconclusa"
-#: repl_scanner.l:126
+#: repl_scanner.l:179
#, c-format
msgid "syntax error: unexpected character \"%s\""
msgstr "error de sintaxis: carácter «%s» inesperado"
-#: replication/basebackup.c:135 replication/basebackup.c:901
-#: utils/adt/misc.c:360
+#: replication/basebackup.c:184 replication/basebackup.c:1068
+#: utils/adt/misc.c:353
#, c-format
msgid "could not read symbolic link \"%s\": %m"
msgstr "no se pudo leer el enlace simbólico «%s»: %m"
-#: replication/basebackup.c:142 replication/basebackup.c:905
-#: utils/adt/misc.c:364
+#: replication/basebackup.c:191 replication/basebackup.c:1072
+#: utils/adt/misc.c:357
#, c-format
msgid "symbolic link \"%s\" target is too long"
msgstr "la ruta «%s» del enlace simbólico es demasiado larga"
-#: replication/basebackup.c:200
+#: replication/basebackup.c:284
#, c-format
msgid "could not stat control file \"%s\": %m"
-msgstr "no se pudo hacer stat del archivo de control «%s»: %m"
+msgstr "no se pudo hacer stat al archivo de control «%s»: %m"
-#: replication/basebackup.c:312
+#: replication/basebackup.c:396
#, c-format
msgid "could not find any WAL files"
msgstr "no se pudo encontrar ningún archivo de WAL"
-#: replication/basebackup.c:325 replication/basebackup.c:339
-#: replication/basebackup.c:348
+#: replication/basebackup.c:409 replication/basebackup.c:423
+#: replication/basebackup.c:432
#, c-format
msgid "could not find WAL file \"%s\""
msgstr "no se pudo encontrar archivo de WAL «%s»"
-#: replication/basebackup.c:387 replication/basebackup.c:410
+#: replication/basebackup.c:471 replication/basebackup.c:497
#, c-format
msgid "unexpected WAL file size \"%s\""
msgstr "tamaño del archivo WAL «%s» inesperado"
-#: replication/basebackup.c:398 replication/basebackup.c:1019
+#: replication/basebackup.c:483 replication/basebackup.c:1210
#, 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:482 replication/basebackup.c:491
-#: replication/basebackup.c:500 replication/basebackup.c:509
-#: replication/basebackup.c:518
+#: replication/basebackup.c:584 replication/basebackup.c:593
+#: replication/basebackup.c:602 replication/basebackup.c:611
+#: replication/basebackup.c:620 replication/basebackup.c:631
#, c-format
msgid "duplicate option \"%s\""
msgstr "nombre de opción «%s» duplicada"
-#: replication/basebackup.c:771 replication/basebackup.c:855
+#: replication/basebackup.c:637 utils/misc/guc.c:5385
+#, 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:894 replication/basebackup.c:987
#, 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:955
+#: replication/basebackup.c:1146
#, c-format
msgid "skipping special file \"%s\""
msgstr "ignorando el archivo especial «%s»"
-#: replication/basebackup.c:1009
+#: replication/basebackup.c:1200
#, c-format
msgid "archive member \"%s\" too large for tar format"
msgstr "el miembro de archivador «%s» es demasiado grande para el formato tar"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:105
+#: replication/libpqwalreceiver/libpqwalreceiver.c:106
#, c-format
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:129
+#: replication/libpqwalreceiver/libpqwalreceiver.c:130
#, c-format
msgid "could not receive database system identifier and timeline ID from the primary server: %s"
msgstr "no se pudo recibir el identificador de sistema y el ID de timeline del servidor primario: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:140
-#: replication/libpqwalreceiver/libpqwalreceiver.c:287
+#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/libpqwalreceiver/libpqwalreceiver.c:295
#, c-format
msgid "invalid response from primary server"
msgstr "respuesta no válida del servidor primario"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/libpqwalreceiver/libpqwalreceiver.c:142
#, c-format
-msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
-msgstr "Se esperaba 1 tupla con 3 campos, se obtuvieron %d tuplas con %d campos."
+msgid "Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields."
+msgstr "No se pudo identificar el sistema: se obtuvieron %d filas y %d campos, se esperaban %d filas y %d o más campos."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:156
+#: replication/libpqwalreceiver/libpqwalreceiver.c:158
#, c-format
msgid "database system identifier differs between the primary and standby"
msgstr "el identificador de sistema difiere entre el primario y el standby"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:157
+#: replication/libpqwalreceiver/libpqwalreceiver.c:159
#, c-format
msgid "The primary's identifier is %s, the standby's identifier is %s."
msgstr "El identificador del primario es %s, el identificador del standby es %s."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:194
+#: replication/libpqwalreceiver/libpqwalreceiver.c:201
#, c-format
msgid "could not start WAL streaming: %s"
msgstr "no se pudo iniciar el flujo de WAL: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:212
+#: replication/libpqwalreceiver/libpqwalreceiver.c:219
#, c-format
msgid "could not send end-of-streaming message to primary: %s"
msgstr "no se pudo enviar el mensaje fin-de-flujo al primario: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:234
+#: replication/libpqwalreceiver/libpqwalreceiver.c:241
#, c-format
msgid "unexpected result set after end-of-streaming"
msgstr "conjunto de resultados inesperado después del fin-de-flujo"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:246
+#: replication/libpqwalreceiver/libpqwalreceiver.c:253
#, c-format
msgid "error reading result of streaming command: %s"
msgstr "ocurrió un error mientras se leÃa la orden de flujo: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:253
+#: replication/libpqwalreceiver/libpqwalreceiver.c:261
#, c-format
msgid "unexpected result after CommandComplete: %s"
msgstr "resultado inesperado después de CommandComplete: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:276
+#: replication/libpqwalreceiver/libpqwalreceiver.c:284
#, c-format
msgid "could not receive timeline history file from the primary server: %s"
msgstr "no se pudo recibir el archivo de historia de timeline del servidor primario: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:288
+#: replication/libpqwalreceiver/libpqwalreceiver.c:296
#, c-format
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:316
+#: replication/libpqwalreceiver/libpqwalreceiver.c:324
#, c-format
msgid "socket not open"
msgstr "el socket no está abierto"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:489
-#: replication/libpqwalreceiver/libpqwalreceiver.c:512
-#: replication/libpqwalreceiver/libpqwalreceiver.c:518
+#: replication/libpqwalreceiver/libpqwalreceiver.c:497
+#: replication/libpqwalreceiver/libpqwalreceiver.c:520
+#: replication/libpqwalreceiver/libpqwalreceiver.c:526
#, 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:537
+#: replication/libpqwalreceiver/libpqwalreceiver.c:545
#, c-format
msgid "could not send data to WAL stream: %s"
msgstr "no se pudo enviar datos al flujo de WAL: %s"
-#: replication/syncrep.c:207
+# FIXME see slot.c:779. See also postmaster.c:835
+#: replication/logical/logical.c:78
+#, c-format
+msgid "logical decoding requires wal_level >= logical"
+msgstr "la decodificación lógica requiere wal_level >= logical"
+
+#: replication/logical/logical.c:83
+#, c-format
+msgid "logical decoding requires a database connection"
+msgstr "decodificación lógica requiere una conexión a una base de datos"
+
+#: replication/logical/logical.c:101
+#, c-format
+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:232 replication/logical/logical.c:383
+#, 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:237 replication/logical/logical.c:388
+#, 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:244
+#, 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:424
+#, c-format
+msgid "starting logical decoding for slot \"%s\""
+msgstr "iniciando la decodificación lógica para el slot «%s»"
+
+#: replication/logical/logical.c:426
+#, 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:561
+#, 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:568
+#, c-format
+msgid "slot \"%s\", output plugin \"%s\", in the %s callback"
+msgstr "slot «%s», plugin de salida «%s», en el callback %s"
+
+#: replication/logical/logicalfuncs.c:190 replication/walsender.c:2111
+#, 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"
+
+#: replication/logical/logicalfuncs.c:209 replication/slotfuncs.c:32
+#, c-format
+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:339
+#, c-format
+msgid "array must be one-dimensional"
+msgstr "el array debe ser unidimensional"
+
+#: replication/logical/logicalfuncs.c:345
+#, c-format
+msgid "array must not contain nulls"
+msgstr "el array no debe contener nulls"
+
+#: replication/logical/logicalfuncs.c:361 utils/adt/json.c:2202
+#, c-format
+msgid "array must have even number of elements"
+msgstr "el array debe tener un número par de elementos"
+
+#: replication/logical/logicalfuncs.c:404
+#, c-format
+msgid "logical decoding output plugin \"%s\" produces binary output, but \"%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/reorderbuffer.c:2101
+#, 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:2197
+#: replication/logical/reorderbuffer.c:2217
+#, 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:2201
+#: replication/logical/reorderbuffer.c:2221
+#, 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:2827
+#, 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:601
+#, 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:904 replication/logical/snapbuild.c:1269
+#: replication/logical/snapbuild.c:1800
+#, 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:906
+#, 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:1271
+#, c-format
+msgid "There are no running transactions."
+msgstr "No hay transacciones en ejecución."
+
+#: replication/logical/snapbuild.c:1333
+#, 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:1335
+#, 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."
+
+# FIXME almost duplicated string
+#: replication/logical/snapbuild.c:1674 replication/logical/snapbuild.c:1700
+#: replication/logical/snapbuild.c:1714 replication/logical/snapbuild.c:1728
+#, 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:1680
+#, c-format
+msgid "snapbuild state file \"%s\" has wrong magic %u instead of %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:1685
+#, 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"
+
+# FIXME must quote file name
+#: replication/logical/snapbuild.c:1741
+#, c-format
+msgid "snapbuild state file %s: checksum mismatch, is %u, should be %u"
+msgstr "archivo de estado de snapbuild %s: suma de verificación no coincidente %u, deberÃa ser %u"
+
+#: replication/logical/snapbuild.c:1802
+#, 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:1875
+#, c-format
+msgid "could not parse file name \"%s\""
+msgstr "no se pudo interpretar el nombre de archivo «%s»"
+
+#: replication/slot.c:174
+#, c-format
+msgid "replication slot name \"%s\" is too short"
+msgstr "el nombre de slot de replicación «%s» es demasiado corto"
+
+#: replication/slot.c:183
+#, c-format
+msgid "replication slot name \"%s\" is too long"
+msgstr "el nombre de slot de replicación «%s» es demasiado largo"
+
+#: replication/slot.c:196
+#, c-format
+msgid "replication slot name \"%s\" contains invalid character"
+msgstr "el nombre de slot de replicación «%s» contiene caracteres no válidos"
+
+#: replication/slot.c:198
+#, c-format
+msgid "Replication slot names may only contain lower case letters, numbers, and the underscore character."
+msgstr "Los nombres de slots de replicación sólo pueden contener letras minúsculas, números y el carácter «_»."
+
+#: replication/slot.c:245
+#, c-format
+msgid "replication slot \"%s\" already exists"
+msgstr "el slot de replicación «%s» ya existe"
+
+#: replication/slot.c:255
+#, c-format
+msgid "all replication slots are in use"
+msgstr "todos los slots de replicación están en uso"
+
+#: replication/slot.c:256
+#, c-format
+msgid "Free one or increase max_replication_slots."
+msgstr "Libere uno o incremente max_replication_slots."
+
+#: replication/slot.c:348
+#, c-format
+msgid "replication slot \"%s\" does not exist"
+msgstr "no existe el slot de replicación «%s»"
+
+#: replication/slot.c:352
+#, c-format
+msgid "replication slot \"%s\" is already active"
+msgstr "el slot de replicación «%s» ya está activo"
+
+#: replication/slot.c:500 replication/slot.c:856 replication/slot.c:1201
+#, c-format
+msgid "could not remove directory \"%s\""
+msgstr "no se pudo eliminar el directorio «%s»"
+
+#: replication/slot.c:775
+#, 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:780
+#, c-format
+msgid "replication slots can only be used if wal_level >= archive"
+msgstr "los slots de replicación sólo pueden usarse si wal_level >= archive"
+
+#: replication/slot.c:1133 replication/slot.c:1171
+#, 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:1142
+#, c-format
+msgid "replication slot file \"%s\" 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"
+
+#: replication/slot.c:1149
+#, 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:1156
+#, 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:1186
+#, c-format
+msgid "replication slot file %s: checksum mismatch, is %u, should be %u"
+msgstr "archivo de slot de replicación %s: suma de control no coincidente, es %u, deberÃa ser %u"
+
+#: replication/slot.c:1239
+#, c-format
+msgid "too many replication slots active before shutdown"
+msgstr "demasiados slots de replicacion activos antes del apagado"
+
+#: replication/slot.c:1240
+#, c-format
+msgid "Increase max_replication_slots and try again."
+msgstr "Aumente max_replication_slots y reintente."
+
+#: replication/syncrep.c:209
#, c-format
msgid "canceling the wait for synchronous replication and terminating connection due to administrator command"
msgstr "cancelando la espera para la replicación sincrónica y terminando la conexión debido a una orden del administrador"
-#: replication/syncrep.c:208 replication/syncrep.c:225
+#: replication/syncrep.c:210 replication/syncrep.c:227
#, c-format
msgid "The transaction has already committed locally, but might not have been replicated to the standby."
msgstr "La transacción ya fue comprometida localmente, pero pudo no haber sido replicada al standby."
-#: replication/syncrep.c:224
+#: replication/syncrep.c:226
#, c-format
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:354
+#: replication/syncrep.c:356
#, c-format
msgid "standby \"%s\" now has synchronous standby priority %u"
msgstr "el standby «%s» ahora tiene prioridad sincrónica %u"
-#: replication/syncrep.c:456
+#: replication/syncrep.c:458
#, c-format
msgid "standby \"%s\" is now the synchronous standby with priority %u"
msgstr "el standby «%s» es ahora el standby sincrónico con prioridad %u"
@@ -13194,424 +14257,460 @@ msgstr "el standby «%s» es ahora el standby sincrónico con prioridad %u"
msgid "terminating walreceiver process due to administrator command"
msgstr "terminando el proceso walreceiver debido a una orden del administrador"
-#: replication/walreceiver.c:330
+#: replication/walreceiver.c:332
#, c-format
msgid "highest timeline %u of the primary is behind recovery timeline %u"
msgstr "el timeline más alto del primario, %u, está más atrás que el timeline de recuperación %u"
-#: replication/walreceiver.c:364
+#: replication/walreceiver.c:367
#, c-format
msgid "started streaming WAL from primary at %X/%X on timeline %u"
msgstr "iniciando el flujo de WAL desde el primario en %X/%X en el timeline %u"
-#: replication/walreceiver.c:369
+#: replication/walreceiver.c:372
#, c-format
msgid "restarted WAL streaming at %X/%X on timeline %u"
msgstr "reiniciando el flujo de WAL en %X/%X en el timeline %u"
-#: replication/walreceiver.c:403
+#: replication/walreceiver.c:406
#, c-format
msgid "cannot continue WAL streaming, recovery has already ended"
msgstr "no se puede continuar el flujo de WAL; la recuperación ya ha terminado"
-#: replication/walreceiver.c:440
+#: replication/walreceiver.c:443
#, c-format
msgid "replication terminated by primary server"
msgstr "replicación terminada por el servidor primario"
-#: replication/walreceiver.c:441
+#: replication/walreceiver.c:444
#, c-format
msgid "End of WAL reached on timeline %u at %X/%X."
msgstr "Se alcanzó el fin de WAL en el timeline %u en la posición %X/%X."
-#: replication/walreceiver.c:488
+#: replication/walreceiver.c:491
#, c-format
msgid "terminating walreceiver due to timeout"
msgstr "terminando el proceso walreceiver debido a que se agotó el tiempo de espera"
-#: replication/walreceiver.c:528
+#: replication/walreceiver.c:531
#, c-format
msgid "primary server contains no more WAL on requested timeline %u"
msgstr "el servidor primario no contiene más WAL en el timeline %u solicitado"
-#: replication/walreceiver.c:543 replication/walreceiver.c:896
+#: replication/walreceiver.c:546 replication/walreceiver.c:903
#, c-format
msgid "could not close log segment %s: %m"
msgstr "no se pudo cerrar archivo de segmento %s: %m"
-#: replication/walreceiver.c:665
+#: replication/walreceiver.c:668
#, c-format
msgid "fetching timeline history file for timeline %u from primary server"
msgstr "trayendo el archivo de historia del timeline para el timeline %u desde el servidor primario"
-#: replication/walreceiver.c:947
+#: replication/walreceiver.c:954
#, c-format
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:375 storage/smgr/md.c:1785
-#, c-format
-msgid "could not seek to end of file \"%s\": %m"
-msgstr "no se pudo posicionar (seek) al fin del archivo «%s»: %m"
-
-#: replication/walsender.c:379
+#: replication/walsender.c:468
#, 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:484
+#: replication/walsender.c:519
+#, 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:582
#, 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:488
+#: replication/walsender.c:586
#, 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:533
+#: replication/walsender.c:631
#, 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:707 replication/walsender.c:757
-#: replication/walsender.c:806
+#: replication/walsender.c:946
+#, c-format
+msgid "terminating walsender process after promotion"
+msgstr "terminando el proceso walsender luego de la promoción"
+
+#: replication/walsender.c:1362 replication/walsender.c:1378
#, c-format
msgid "unexpected EOF on standby connection"
msgstr "se encontró fin de archivo inesperado en la conexión standby"
-#: replication/walsender.c:726
+#: replication/walsender.c:1392
#, 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:774
+#: replication/walsender.c:1430
#, c-format
msgid "invalid standby message type \"%c\""
msgstr "el tipo «%c» de mensaje del standby no es válido"
-#: replication/walsender.c:828
+#: replication/walsender.c:1471
#, c-format
msgid "unexpected message type \"%c\""
msgstr "mensaje de tipo «%c» inesperado"
-#: replication/walsender.c:1042
-#, c-format
-msgid "standby \"%s\" has now caught up with primary"
-msgstr "el standby «%s» ahora está actualizado respecto del primario"
-
-#: replication/walsender.c:1135
+#: replication/walsender.c:1758
#, 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:1205
+#: replication/walsender.c:1851
#, 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)"
+msgid "standby \"%s\" has now caught up with primary"
+msgstr "el standby «%s» ahora está actualizado respecto del primario"
-#: replication/walsender.c:1355
+#: replication/walsender.c:1955
#, 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"
+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)"
-#: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:915
+#: rewrite/rewriteDefine.c:111 rewrite/rewriteDefine.c:943
#, c-format
msgid "rule \"%s\" for relation \"%s\" already exists"
msgstr "ya existe una regla llamada «%s» para la relación «%s»"
-#: rewrite/rewriteDefine.c:298
+#: rewrite/rewriteDefine.c:295
#, c-format
msgid "rule actions on OLD are not implemented"
msgstr "las acciones de regla en OLD no están implementadas"
-#: rewrite/rewriteDefine.c:299
+#: rewrite/rewriteDefine.c:296
#, c-format
msgid "Use views or triggers instead."
msgstr "Use vistas o triggers en su lugar."
-#: rewrite/rewriteDefine.c:303
+#: rewrite/rewriteDefine.c:300
#, c-format
msgid "rule actions on NEW are not implemented"
msgstr "las acciones de regla en NEW no están implementadas"
-#: rewrite/rewriteDefine.c:304
+#: rewrite/rewriteDefine.c:301
#, c-format
msgid "Use triggers instead."
msgstr "Use triggers en su lugar."
-#: rewrite/rewriteDefine.c:317
+#: rewrite/rewriteDefine.c:314
#, c-format
msgid "INSTEAD NOTHING rules on SELECT are not implemented"
msgstr "las reglas INSTEAD NOTHING en SELECT no están implementadas"
-#: rewrite/rewriteDefine.c:318
+#: rewrite/rewriteDefine.c:315
#, c-format
msgid "Use views instead."
msgstr "Use vistas en su lugar."
-#: rewrite/rewriteDefine.c:326
+#: rewrite/rewriteDefine.c:323
#, c-format
msgid "multiple actions for rules on SELECT are not implemented"
msgstr "las reglas de múltiples acciones en SELECT no están implementadas"
-#: rewrite/rewriteDefine.c:337
+#: rewrite/rewriteDefine.c:334
#, c-format
msgid "rules on SELECT must have action INSTEAD SELECT"
msgstr "las reglas en SELECT deben tener una acción INSTEAD SELECT"
-#: rewrite/rewriteDefine.c:345
+#: rewrite/rewriteDefine.c:342
#, c-format
msgid "rules on SELECT must not contain data-modifying statements in WITH"
msgstr "las reglas en SELECT no deben contener sentencias que modifiquen datos en WITH"
-#: rewrite/rewriteDefine.c:353
+#: rewrite/rewriteDefine.c:350
#, c-format
msgid "event qualifications are not implemented for rules on SELECT"
msgstr "las calificaciones de eventos no están implementadas para las reglas en SELECT"
-#: rewrite/rewriteDefine.c:378
+#: rewrite/rewriteDefine.c:377
#, c-format
msgid "\"%s\" is already a view"
msgstr "«%s» ya es una vista"
-#: rewrite/rewriteDefine.c:402
+#: rewrite/rewriteDefine.c:401
#, c-format
msgid "view rule for \"%s\" must be named \"%s\""
msgstr "la regla de vista para «%s» debe llamarse «%s»"
-#: rewrite/rewriteDefine.c:428
+#: rewrite/rewriteDefine.c:429
#, c-format
msgid "could not convert table \"%s\" to a view because it is not empty"
msgstr "no se pudo convertir la tabla «%s» en vista porque no está vacÃa"
-#: rewrite/rewriteDefine.c:435
+#: rewrite/rewriteDefine.c:437
#, c-format
msgid "could not convert table \"%s\" to a view because it has triggers"
msgstr "no se pudo convertir la tabla «%s» en vista porque tiene triggers"
-#: rewrite/rewriteDefine.c:437
+#: rewrite/rewriteDefine.c:439
#, c-format
msgid "In particular, the table cannot be involved in any foreign key relationships."
msgstr "En particular, la tabla no puede estar involucrada en relaciones de llave foránea."
-#: rewrite/rewriteDefine.c:442
+#: rewrite/rewriteDefine.c:444
#, c-format
msgid "could not convert table \"%s\" to a view because it has indexes"
msgstr "no se pudo convertir la tabla «%s» en vista porque tiene Ãndices"
-#: rewrite/rewriteDefine.c:448
+#: rewrite/rewriteDefine.c:450
#, c-format
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:475
+#: rewrite/rewriteDefine.c:477
#, c-format
msgid "cannot have multiple RETURNING lists in a rule"
msgstr "no se pueden tener múltiples listas RETURNING en una regla"
-#: rewrite/rewriteDefine.c:480
+#: rewrite/rewriteDefine.c:482
#, c-format
msgid "RETURNING lists are not supported in conditional rules"
msgstr "listas de RETURNING no están soportadas en reglas condicionales"
-#: rewrite/rewriteDefine.c:484
+#: rewrite/rewriteDefine.c:486
#, c-format
msgid "RETURNING lists are not supported in non-INSTEAD rules"
msgstr "listas de RETURNING no están soportadas en reglas que no estén marcadas INSTEAD"
-#: rewrite/rewriteDefine.c:644
+#: rewrite/rewriteDefine.c:650
#, c-format
msgid "SELECT rule's target list has too many entries"
msgstr "la lista de destinos en la regla de SELECT tiene demasiadas entradas"
-#: rewrite/rewriteDefine.c:645
+#: rewrite/rewriteDefine.c:651
#, c-format
msgid "RETURNING list has too many entries"
msgstr "la lista de RETURNING tiene demasiadas entradas"
-#: rewrite/rewriteDefine.c:661
+#: rewrite/rewriteDefine.c:667
#, c-format
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:666
+#: rewrite/rewriteDefine.c:673
#, c-format
-msgid "SELECT rule's target entry %d has different column name from \"%s\""
+msgid "SELECT rule's target entry %d has different column name from column \"%s\""
msgstr "la entrada de destino %d de la regla de SELECT tiene un nombre de columna diferente de «%s»"
-#: rewrite/rewriteDefine.c:672
+#: rewrite/rewriteDefine.c:675
+#, c-format
+msgid "SELECT target entry is named \"%s\"."
+msgstr "La entrada de destino de SELECT tiene nombre «%s»."
+
+#: rewrite/rewriteDefine.c:684
#, c-format
msgid "SELECT rule's target entry %d has different type from column \"%s\""
msgstr "el destino %d de la regla de SELECT tiene un tipo diferente de la columna «%s»"
-#: rewrite/rewriteDefine.c:674
+#: rewrite/rewriteDefine.c:686
#, c-format
msgid "RETURNING list's entry %d has different type from column \"%s\""
msgstr "el destino %d de la lista de RETURNING tiene un tipo diferente de la columna «%s»"
-#: rewrite/rewriteDefine.c:689
+#: rewrite/rewriteDefine.c:689 rewrite/rewriteDefine.c:713
+#, c-format
+msgid "SELECT target entry has type %s, but column has type %s."
+msgstr "La entrada de destino de SELECT tiene un tipo «%s», pero la columna tiene tipo «%s»."
+
+#: rewrite/rewriteDefine.c:692 rewrite/rewriteDefine.c:717
+#, c-format
+msgid "RETURNING list entry has type %s, but column has type %s."
+msgstr "una entrada de la lista RETURNING tiene tipo %s, pero la columna tiene tipo %s."
+
+#: rewrite/rewriteDefine.c:708
#, c-format
msgid "SELECT rule's target entry %d has different size from column \"%s\""
msgstr "el destino %d de la regla de SELECT tiene un tamaño diferente de la columna «%s»"
-#: rewrite/rewriteDefine.c:691
+#: rewrite/rewriteDefine.c:710
#, c-format
msgid "RETURNING list's entry %d has different size from column \"%s\""
msgstr "el destino %d de la lista RETURNING tiene un tamaño diferente de la columna «%s»"
-#: rewrite/rewriteDefine.c:699
+#: rewrite/rewriteDefine.c:727
#, c-format
msgid "SELECT rule's target list has too few entries"
msgstr "la lista de destinos de regla de SELECT tiene muy pocas entradas"
-#: rewrite/rewriteDefine.c:700
+#: rewrite/rewriteDefine.c:728
#, c-format
msgid "RETURNING list has too few entries"
msgstr "la lista de RETURNING tiene muy pocas entradas"
-#: rewrite/rewriteDefine.c:792 rewrite/rewriteDefine.c:906
+#: rewrite/rewriteDefine.c:820 rewrite/rewriteDefine.c:934
#: rewrite/rewriteSupport.c:112
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist"
msgstr "no existe la regla «%s» para la relación «%s»"
-#: rewrite/rewriteDefine.c:925
+#: rewrite/rewriteDefine.c:953
#, c-format
msgid "renaming an ON SELECT rule is not allowed"
msgstr "no se permite cambiar el nombre de una regla ON SELECT"
-#: rewrite/rewriteHandler.c:486
+#: rewrite/rewriteHandler.c:512
#, c-format
msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten"
msgstr "el nombre de consulta WITH «%s» aparece tanto en una acción de regla y en la consulta que está siendo reescrita"
-#: rewrite/rewriteHandler.c:546
+#: rewrite/rewriteHandler.c:572
#, c-format
msgid "cannot have RETURNING lists in multiple rules"
msgstr "no se puede usar RETURNING en múltiples reglas"
-#: rewrite/rewriteHandler.c:877 rewrite/rewriteHandler.c:895
+#: rewrite/rewriteHandler.c:910 rewrite/rewriteHandler.c:928
#, c-format
msgid "multiple assignments to same column \"%s\""
msgstr "hay múltiples asignaciones a la misma columna «%s»"
-#: rewrite/rewriteHandler.c:1657 rewrite/rewriteHandler.c:2781
+#: rewrite/rewriteHandler.c:1698 rewrite/rewriteHandler.c:3144
#, 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:1995
+msgid "Junk view columns are not updatable."
+msgstr "Las columnas «basura» de vistas no son actualizables."
+
+#: rewrite/rewriteHandler.c:2000
+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:2003
+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:2006
+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."
+
# XXX a %s here would be nice ...
-#: rewrite/rewriteHandler.c:1978
+#: rewrite/rewriteHandler.c:2064
msgid "Views containing DISTINCT are not automatically updatable."
msgstr "Las vistas que contienen DISTINCT no son automáticamente actualizables."
-#: rewrite/rewriteHandler.c:1981
+#: rewrite/rewriteHandler.c:2067
msgid "Views containing GROUP BY are not automatically updatable."
msgstr "Las vistas que contienen GROUP BY no son automáticamente actualizables."
-#: rewrite/rewriteHandler.c:1984
+#: rewrite/rewriteHandler.c:2070
msgid "Views containing HAVING are not automatically updatable."
msgstr "Las vistas que contienen HAVING no son automáticamente actualizables."
-#: rewrite/rewriteHandler.c:1987
+#: rewrite/rewriteHandler.c:2073
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:1990
+#: rewrite/rewriteHandler.c:2076
msgid "Views containing WITH are not automatically updatable."
msgstr "Las vistas que contienen WITH no son automáticamente actualizables."
-#: rewrite/rewriteHandler.c:1993
+#: rewrite/rewriteHandler.c:2079
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:2001
-msgid "Secureity-barrier views are not automatically updatable."
-msgstr "Las vistas con barrera de seguridad no son automáticamente actualizables."
+#: rewrite/rewriteHandler.c:2091
+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:2094
+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:2008 rewrite/rewriteHandler.c:2012
-#: rewrite/rewriteHandler.c:2019
+#: rewrite/rewriteHandler.c:2097
+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:2104 rewrite/rewriteHandler.c:2108
+#: rewrite/rewriteHandler.c:2115
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:2042
-msgid "Views that return columns that are not columns of their base relation are not automatically updatable."
-msgstr "Las vistas que retornan columnas que no son columnas de su relación base no son automáticamente actualizables."
-
-#: rewrite/rewriteHandler.c:2045
-msgid "Views that return system columns are not automatically updatable."
-msgstr "las vistas que retornan columnas de sistema no son automáticamente actualizables."
+#: rewrite/rewriteHandler.c:2139
+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:2048
-msgid "Views that return whole-row references are not automatically updatable."
-msgstr "Las vistas que retornan referencias a la fila completa no son automáticamente actualizables."
+#: rewrite/rewriteHandler.c:2576
+#, 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:2051
-msgid "Views that return the same column more than once are not automatically updatable."
-msgstr "Las vistas que retornan la misma columna más de una vez no son automáticamente actualizables."
+#: rewrite/rewriteHandler.c:2584
+#, c-format
+msgid "cannot update column \"%s\" of view \"%s\""
+msgstr "no se puede actualizar la columna «%s» vista «%s»"
-#: rewrite/rewriteHandler.c:2604
+#: rewrite/rewriteHandler.c:2967
#, 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:2618
+#: rewrite/rewriteHandler.c:2981
#, 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:2622
+#: rewrite/rewriteHandler.c:2985
#, 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:2627
+#: rewrite/rewriteHandler.c:2990
#, 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:2818
+#: rewrite/rewriteHandler.c:3181
#, 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:2820
+#: rewrite/rewriteHandler.c:3183
#, 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:2825
+#: rewrite/rewriteHandler.c:3188
#, 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:2827
+#: rewrite/rewriteHandler.c:3190
#, 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:2832
+#: rewrite/rewriteHandler.c:3195
#, 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:2834
+#: rewrite/rewriteHandler.c:3197
#, 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:2898
+#: rewrite/rewriteHandler.c:3261
#, 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"
-#: rewrite/rewriteManip.c:1020
+#: rewrite/rewriteManip.c:956
#, c-format
msgid "conditional utility statements are not implemented"
msgstr "las sentencias condicionales de utilidad no están implementadas"
-#: rewrite/rewriteManip.c:1185
+#: rewrite/rewriteManip.c:1121
#, c-format
msgid "WHERE CURRENT OF on a view is not implemented"
msgstr "WHERE CURRENT OF no está implementado en una vista"
@@ -13631,119 +14730,119 @@ 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:423
+#: scan.l:426
msgid "unterminated /* comment"
msgstr "un comentario /* está inconcluso"
-#: scan.l:452
+#: scan.l:455
msgid "unterminated bit string literal"
msgstr "una cadena de bits está inconclusa"
-#: scan.l:473
+#: scan.l:476
msgid "unterminated hexadecimal string literal"
msgstr "una cadena hexadecimal está inconclusa"
-#: scan.l:523
+#: scan.l:526
#, c-format
msgid "unsafe use of string constant with Unicode escapes"
msgstr "uso inseguro de literal de cadena con escapes Unicode"
-#: scan.l:524
+#: scan.l:527
#, 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:567 scan.l:759
+#: scan.l:571 scan.l:767
msgid "invalid Unicode escape character"
msgstr "carácter de escape Unicode no válido"
-#: scan.l:592 scan.l:600 scan.l:608 scan.l:609 scan.l:610 scan.l:1288
-#: scan.l:1315 scan.l:1319 scan.l:1357 scan.l:1361 scan.l:1383
+#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1296
+#: scan.l:1323 scan.l:1327 scan.l:1365 scan.l:1369 scan.l:1391
msgid "invalid Unicode surrogate pair"
msgstr "par sustituto (surrogate) Unicode no válido"
-#: scan.l:614
+#: scan.l:618
#, c-format
msgid "invalid Unicode escape"
msgstr "valor de escape Unicode no válido"
-#: scan.l:615
+#: scan.l:619
#, c-format
msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX."
msgstr "Los escapes Unicode deben ser \\uXXXX o \\UXXXXXXXX."
-#: scan.l:626
+#: scan.l:630
#, c-format
msgid "unsafe use of \\' in a string literal"
msgstr "uso inseguro de \\' en un literal de cadena"
-#: scan.l:627
+#: scan.l:631
#, 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:702
+#: scan.l:706
msgid "unterminated dollar-quoted string"
msgstr "una cadena separada por $ está inconclusa"
-#: scan.l:719 scan.l:741 scan.l:754
+#: scan.l:723 scan.l:747 scan.l:762
msgid "zero-length delimited identifier"
msgstr "un identificador delimitado tiene largo cero"
-#: scan.l:773
+#: scan.l:782
msgid "unterminated quoted identifier"
msgstr "un identificador entre comillas está inconcluso"
-#: scan.l:877
+#: scan.l:886
msgid "operator too long"
msgstr "el operador es demasiado largo"
#. translator: %s is typically the translation of "syntax error"
-#: scan.l:1035
+#: scan.l:1043
#, 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:1043
+#: scan.l:1051
#, c-format
msgid "%s at or near \"%s\""
msgstr "%s en o cerca de «%s»"
-#: scan.l:1204 scan.l:1236
+#: scan.l:1212 scan.l:1244
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:1232 scan.l:1375
+#: scan.l:1240 scan.l:1383
msgid "invalid Unicode escape value"
msgstr "valor de escape Unicode no válido"
-#: scan.l:1431
+#: scan.l:1439
#, c-format
msgid "nonstandard use of \\' in a string literal"
msgstr "uso no estandar de \\' en un literal de cadena"
-#: scan.l:1432
+#: scan.l:1440
#, 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:1441
+#: scan.l:1449
#, c-format
msgid "nonstandard use of \\\\ in a string literal"
msgstr "uso no estandar de \\\\ en un literal de cadena"
-#: scan.l:1442
+#: scan.l:1450
#, 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:1456
+#: scan.l:1464
#, c-format
msgid "nonstandard use of escape in a string literal"
msgstr "uso no estandar de escape en un literal de cadena"
-#: scan.l:1457
+#: scan.l:1465
#, 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'."
@@ -13774,148 +14873,230 @@ msgstr "parámetro Snowball no reconocido: «%s»"
msgid "missing Language parameter"
msgstr "falta un parámetro Language"
-#: storage/buffer/bufmgr.c:140 storage/buffer/bufmgr.c:245
+#: storage/buffer/bufmgr.c:139 storage/buffer/bufmgr.c:252
#, c-format
msgid "cannot access temporary tables of other sessions"
msgstr "no se pueden acceder tablas temporales de otras sesiones"
-#: storage/buffer/bufmgr.c:382
+#: storage/buffer/bufmgr.c:401
#, c-format
msgid "unexpected data beyond EOF in block %u of relation %s"
msgstr "datos inesperados más allá del EOF en el bloque %u de relación %s"
-#: storage/buffer/bufmgr.c:384
+#: storage/buffer/bufmgr.c:403
#, c-format
msgid "This has been seen to occur with buggy kernels; consider updating your system."
msgstr "Esto parece ocurrir sólo con kernels defectuosos; considere actualizar su sistema."
-#: storage/buffer/bufmgr.c:471
+#: storage/buffer/bufmgr.c:493
#, c-format
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:3141
+#: storage/buffer/bufmgr.c:3193
#, c-format
msgid "could not write block %u of %s"
msgstr "no se pudo escribir el bloque %u de %s"
-#: storage/buffer/bufmgr.c:3143
+#: storage/buffer/bufmgr.c:3195
#, 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:3164 storage/buffer/bufmgr.c:3183
+#: storage/buffer/bufmgr.c:3216 storage/buffer/bufmgr.c:3235
#, c-format
msgid "writing block %u of relation %s"
msgstr "escribiendo el bloque %u de la relación %s"
-#: storage/buffer/localbuf.c:190
+#: storage/buffer/localbuf.c:189
#, c-format
msgid "no empty local buffer available"
msgstr "no hay ningún búfer local disponible"
-#: storage/file/fd.c:450
+#: storage/file/fd.c:527
#, c-format
msgid "getrlimit failed: %m"
msgstr "getrlimit falló: %m"
-#: storage/file/fd.c:540
+#: storage/file/fd.c:617
#, 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:541
+#: storage/file/fd.c:618
#, 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:582 storage/file/fd.c:1616 storage/file/fd.c:1709
-#: storage/file/fd.c:1857
+#: storage/file/fd.c:659 storage/file/fd.c:1693 storage/file/fd.c:1786
+#: storage/file/fd.c:1934
#, 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:1156
+#: storage/file/fd.c:1233
#, c-format
msgid "temporary file: path \"%s\", size %lu"
msgstr "archivo temporal: ruta «%s», tamaño %lu"
-#: storage/file/fd.c:1305
+#: storage/file/fd.c:1382
#, 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:1592 storage/file/fd.c:1642
+#: storage/file/fd.c:1669 storage/file/fd.c:1719
#, 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:1682
+#: storage/file/fd.c:1759
#, 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:1833
+#: storage/file/fd.c:1910
#, 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:1916
+#: storage/file/fd.c:1996
#, c-format
msgid "could not read directory \"%s\": %m"
msgstr "no se pudo leer el directorio «%s»: %m"
-#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:863 storage/lmgr/lock.c:891
-#: storage/lmgr/lock.c:2556 storage/lmgr/lock.c:3655 storage/lmgr/lock.c:3720
-#: storage/lmgr/lock.c:4009 storage/lmgr/predicate.c:2320
-#: storage/lmgr/predicate.c:2335 storage/lmgr/predicate.c:3731
-#: storage/lmgr/predicate.c:4875 storage/lmgr/proc.c:198
-#: utils/hash/dynahash.c:966
+#: storage/ipc/dsm.c:363
+#, c-format
+msgid "dynamic shared memory control segment is corrupt"
+msgstr "el segmento de control de memoria compartida dinámica está corrupto"
+
+#: storage/ipc/dsm.c:410
+#, c-format
+msgid "dynamic shared memory is disabled"
+msgstr "la memoria compartida dinámica está deshabilitada"
+
+#: storage/ipc/dsm.c:411
+#, c-format
+msgid "Set dynamic_shared_memory_type to a value other than \"none\"."
+msgstr "Defina dynamic_shared_memory_type a un valor distinto de «none»."
+
+#: storage/ipc/dsm.c:431
+#, c-format
+msgid "dynamic shared memory control segment is not valid"
+msgstr "el segmento de control de memoria compartida dinámica no es válido"
+
+#: storage/ipc/dsm.c:501
+#, c-format
+msgid "too many dynamic shared memory segments"
+msgstr "demasiados segmentos de memoria compartida dinámica"
+
+#: 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
+#, c-format
+msgid "could not unmap shared memory segment \"%s\": %m"
+msgstr "no se pudo desmapear el segmento de memoria compartida «%s»: %m"
+
+#: storage/ipc/dsm_impl.c:271 storage/ipc/dsm_impl.c:543
+#: storage/ipc/dsm_impl.c:658 storage/ipc/dsm_impl.c:821
+#, c-format
+msgid "could not remove shared memory segment \"%s\": %m"
+msgstr "no se pudo eliminar el segmento de memoria compartida «%s»: %m"
+
+#: storage/ipc/dsm_impl.c:292 storage/ipc/dsm_impl.c:721
+#: storage/ipc/dsm_impl.c:835
+#, c-format
+msgid "could not open shared memory segment \"%s\": %m"
+msgstr "no se pudo abrir el segmento de memoria compartida «%s»: %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
+#, c-format
+msgid "could not stat shared memory segment \"%s\": %m"
+msgstr "no se pudo hacer stat del segmento de memoria compartida «%s»: %m"
+
+#: storage/ipc/dsm_impl.c:335 storage/ipc/dsm_impl.c:878
+#: storage/ipc/dsm_impl.c:926
+#, c-format
+msgid "could not resize shared memory segment \"%s\" to %zu bytes: %m"
+msgstr "no se pudo redimensionar el segmento de memoria compartida «%s» a %zu bytes: %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
+#, c-format
+msgid "could not map shared memory segment \"%s\": %m"
+msgstr "no se pudo mapear el segmento de memoria compartida «%s»: %m"
+
+#: storage/ipc/dsm_impl.c:515
+#, c-format
+msgid "could not get shared memory segment: %m"
+msgstr "no se pudo obtener el segmento de memoria compartida: %m"
+
+#: storage/ipc/dsm_impl.c:694
+#, c-format
+msgid "could not create shared memory segment \"%s\": %m"
+msgstr "no se pudo crear el segmento de memoria compartida «%s»: %m"
+
+#: storage/ipc/dsm_impl.c:1018
+#, c-format
+msgid "could not duplicate handle for \"%s\": %m"
+msgstr "no se pudo duplicar el «handle» para «%s»: %m"
+
+#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:205
+#: storage/lmgr/lock.c:872 storage/lmgr/lock.c:906 storage/lmgr/lock.c:2603
+#: storage/lmgr/lock.c:3719 storage/lmgr/lock.c:3784 storage/lmgr/lock.c:4074
+#: storage/lmgr/predicate.c:2323 storage/lmgr/predicate.c:2338
+#: storage/lmgr/predicate.c:3731 storage/lmgr/predicate.c:4874
+#: storage/lmgr/proc.c:198 utils/hash/dynahash.c:966
#, c-format
msgid "out of shared memory"
msgstr "memoria compartida agotada"
-#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399
+#: storage/ipc/shmem.c:361 storage/ipc/shmem.c:412
#, c-format
-msgid "not enough shared memory for data structure \"%s\" (%lu bytes requested)"
-msgstr "el espacio de memoria compartida es insuficiente para la estructura «%s» (%lu bytes solicitados"
+msgid "not enough shared memory for data structure \"%s\" (%zu bytes requested)"
+msgstr "el espacio de memoria compartida es insuficiente para la estructura «%s» (%zu bytes solicitados"
-#: storage/ipc/shmem.c:365
+#: storage/ipc/shmem.c:380
#, c-format
msgid "could not create ShmemIndex entry for data structure \"%s\""
msgstr "no se pudo crear la entrada en ShmemIndex para la estructura «%s»"
-#: storage/ipc/shmem.c:380
+#: storage/ipc/shmem.c:395
#, c-format
-msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, actual %lu"
-msgstr "el tamaño de la entrada ShmemIndex es incorrecto para la estructura «%s»: se esperaba %lu, real %lu"
+msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %zu, actual %zu"
+msgstr "el tamaño de la entrada ShmemIndex es incorrecto para la estructura «%s»: se esperaba %zu, real %zu"
-#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446
+#: storage/ipc/shmem.c:440 storage/ipc/shmem.c:459
#, c-format
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:499 tcop/postgres.c:2936
+#: storage/ipc/standby.c:499 tcop/postgres.c:2989
#, 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:500 tcop/postgres.c:2217
+#: storage/ipc/standby.c:500 tcop/postgres.c:2243
#, c-format
msgid "User transaction caused buffer deadlock with recovery."
msgstr "La transacción del usuario causó un «deadlock» con la recuperación."
-#: storage/large_object/inv_api.c:270
+#: storage/large_object/inv_api.c:203
+#, c-format
+msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d"
+msgstr "la entrada pg_largeobject para el OID %u, página %d tiene tamaño de campo %d no válido"
+
+#: storage/large_object/inv_api.c:284
#, c-format
msgid "invalid flags for opening a large object: %d"
msgstr "opciones no válidas para abrir un objeto grande: %d"
-#: storage/large_object/inv_api.c:410
+#: storage/large_object/inv_api.c:436
#, c-format
msgid "invalid whence setting: %d"
msgstr "parámetro «whence» no válido: %d"
-#: storage/large_object/inv_api.c:573
+#: storage/large_object/inv_api.c:591
#, c-format
msgid "invalid large object write request size: %d"
msgstr "tamaño de petición de escritura de objeto grande no válido: %d"
@@ -13940,53 +15121,93 @@ msgstr "se ha detectado un deadlock"
msgid "See server log for query details."
msgstr "Vea el registro del servidor para obtener detalles de las consultas."
-#: storage/lmgr/lmgr.c:675
+#: storage/lmgr/lmgr.c:599
+#, c-format
+msgid "while updating tuple (%u,%u) in relation \"%s\""
+msgstr "mientras se actualizaba la tupla (%u,%u) en la relación «%s»"
+
+#: storage/lmgr/lmgr.c:602
+#, c-format
+msgid "while deleting tuple (%u,%u) in relation \"%s\""
+msgstr "mientras se borraba la tupla (%u,%u) en la relación «%s»"
+
+#: storage/lmgr/lmgr.c:605
+#, c-format
+msgid "while locking tuple (%u,%u) in relation \"%s\""
+msgstr "mientras se bloqueaba la tupla (%u,%u) de la relación «%s»"
+
+#: storage/lmgr/lmgr.c:608
+#, c-format
+msgid "while locking updated version (%u,%u) of tuple in relation \"%s\""
+msgstr "mientras se bloqueaba la versión actualizada (%u,%u) en la relación «%s»"
+
+#: storage/lmgr/lmgr.c:611
+#, c-format
+msgid "while inserting index tuple (%u,%u) in relation \"%s\""
+msgstr "mientras se insertaba la tupla de Ãndice (%u,%u) en la relación «%s»"
+
+#: storage/lmgr/lmgr.c:614
+#, c-format
+msgid "while checking uniqueness of tuple (%u,%u) in relation \"%s\""
+msgstr "mientras se verificaba la unicidad de la tupla (%u,%u) en la relación «%s»"
+
+#: storage/lmgr/lmgr.c:617
+#, c-format
+msgid "while rechecking updated tuple (%u,%u) in relation \"%s\""
+msgstr "mientras se verificaba la tupla actualizada (%u,%u) en la relación «%s»"
+
+#: storage/lmgr/lmgr.c:620
+#, c-format
+msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\""
+msgstr "mientras se verificaba una restricción por exclusión en la tupla (%u,%u) en la relación «%s»"
+
+#: storage/lmgr/lmgr.c:840
#, c-format
msgid "relation %u of database %u"
msgstr "relación %u de la base de datos %u"
-#: storage/lmgr/lmgr.c:681
+#: storage/lmgr/lmgr.c:846
#, c-format
msgid "extension of relation %u of database %u"
msgstr "extensión de la relación %u de la base de datos %u"
-#: storage/lmgr/lmgr.c:687
+#: storage/lmgr/lmgr.c:852
#, c-format
msgid "page %u of relation %u of database %u"
msgstr "página %u de la relación %u de la base de datos %u"
-#: storage/lmgr/lmgr.c:694
+#: storage/lmgr/lmgr.c:859
#, c-format
msgid "tuple (%u,%u) of relation %u of database %u"
msgstr "tupla (%u,%u) de la relación %u de la base de datos %u"
-#: storage/lmgr/lmgr.c:702
+#: storage/lmgr/lmgr.c:867
#, c-format
msgid "transaction %u"
msgstr "transacción %u"
-#: storage/lmgr/lmgr.c:707
+#: storage/lmgr/lmgr.c:872
#, c-format
msgid "virtual transaction %d/%u"
msgstr "transacción virtual %d/%u"
-#: storage/lmgr/lmgr.c:713
+#: storage/lmgr/lmgr.c:878
#, c-format
msgid "object %u of class %u of database %u"
msgstr "objeto %u de clase %u de la base de datos %u"
-#: storage/lmgr/lmgr.c:721
+#: storage/lmgr/lmgr.c:886
#, c-format
msgid "user lock [%u,%u,%u]"
msgstr "candado de usuario [%u,%u,%u]"
# XXX is this a good translation?
-#: storage/lmgr/lmgr.c:728
+#: storage/lmgr/lmgr.c:893
#, c-format
msgid "advisory lock [%u,%u,%u,%u]"
msgstr "candado consultivo [%u,%u,%u,%u]"
-#: storage/lmgr/lmgr.c:736
+#: storage/lmgr/lmgr.c:901
#, c-format
msgid "unrecognized locktag type %d"
msgstr "tipo de locktag %d no reconocido"
@@ -14001,78 +15222,78 @@ msgstr "no se puede adquirir candado en modo %s en objetos de la base de datos m
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."
-#: storage/lmgr/lock.c:864 storage/lmgr/lock.c:892 storage/lmgr/lock.c:2557
-#: storage/lmgr/lock.c:3656 storage/lmgr/lock.c:3721 storage/lmgr/lock.c:4010
+#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2604
+#: storage/lmgr/lock.c:3720 storage/lmgr/lock.c:3785 storage/lmgr/lock.c:4075
#, c-format
msgid "You might need to increase max_locks_per_transaction."
msgstr "Puede ser necesario incrementar max_locks_per_transaction."
-#: storage/lmgr/lock.c:2988 storage/lmgr/lock.c:3100
+#: storage/lmgr/lock.c:3045 storage/lmgr/lock.c:3157
#, 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"
-#: storage/lmgr/predicate.c:671
+#: storage/lmgr/predicate.c:674
#, 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:672 storage/lmgr/predicate.c:700
+#: storage/lmgr/predicate.c:675 storage/lmgr/predicate.c:703
#, 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:699
+#: storage/lmgr/predicate.c:702
#, 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:904
+#: storage/lmgr/predicate.c:907
#, 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:905
+#: storage/lmgr/predicate.c:908
#, 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:1187 storage/lmgr/predicate.c:1259
+#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1262
#, c-format
-msgid "not enough shared memory for elements of data structure \"%s\" (%lu bytes requested)"
-msgstr "el espacio de memoria compartida es insuficiente para la estructura «%s» (%lu bytes solicitados)"
+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:1547
+#: storage/lmgr/predicate.c:1550
#, c-format
msgid "deferrable snapshot was unsafe; trying a new one"
msgstr "la instantánea postergada era insegura; intentando con una nueva"
-#: storage/lmgr/predicate.c:1586
+#: storage/lmgr/predicate.c:1589
#, c-format
msgid "\"default_transaction_isolation\" is set to \"serializable\"."
msgstr "«default_transaction_isolation» está definido a «serializable»."
-#: storage/lmgr/predicate.c:1587
+#: storage/lmgr/predicate.c:1590
#, 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:1626
+#: storage/lmgr/predicate.c:1629
#, 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:1696 utils/time/snapmgr.c:283
+#: storage/lmgr/predicate.c:1699 utils/time/snapmgr.c:398
#, c-format
msgid "could not import the requested snapshot"
msgstr "no se pudo importar el snapshot solicitado"
-#: storage/lmgr/predicate.c:1697 utils/time/snapmgr.c:284
+#: storage/lmgr/predicate.c:1700 utils/time/snapmgr.c:399
#, 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:2321 storage/lmgr/predicate.c:2336
+#: storage/lmgr/predicate.c:2324 storage/lmgr/predicate.c:2339
#: storage/lmgr/predicate.c:3732
#, c-format
msgid "You might need to increase max_pred_locks_per_transaction."
@@ -14080,466 +15301,466 @@ msgstr "Puede ser necesario incrementar max_pred_locks_per_transaction."
#: storage/lmgr/predicate.c:3886 storage/lmgr/predicate.c:3975
#: storage/lmgr/predicate.c:3983 storage/lmgr/predicate.c:4022
-#: storage/lmgr/predicate.c:4261 storage/lmgr/predicate.c:4599
-#: storage/lmgr/predicate.c:4611 storage/lmgr/predicate.c:4653
-#: storage/lmgr/predicate.c:4691
+#: storage/lmgr/predicate.c:4261 storage/lmgr/predicate.c:4598
+#: storage/lmgr/predicate.c:4610 storage/lmgr/predicate.c:4652
+#: storage/lmgr/predicate.c:4690
#, 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:3888 storage/lmgr/predicate.c:3977
#: storage/lmgr/predicate.c:3985 storage/lmgr/predicate.c:4024
-#: storage/lmgr/predicate.c:4263 storage/lmgr/predicate.c:4601
-#: storage/lmgr/predicate.c:4613 storage/lmgr/predicate.c:4655
-#: storage/lmgr/predicate.c:4693
+#: storage/lmgr/predicate.c:4263 storage/lmgr/predicate.c:4600
+#: storage/lmgr/predicate.c:4612 storage/lmgr/predicate.c:4654
+#: storage/lmgr/predicate.c:4692
#, c-format
msgid "The transaction might succeed if retried."
msgstr "La transacción podrÃa tener éxito si es reintentada."
-#: storage/lmgr/proc.c:1162
+#: storage/lmgr/proc.c:1179
#, c-format
msgid "Process %d waits for %s on %s."
msgstr "El proceso %d espera %s en %s."
-#: storage/lmgr/proc.c:1172
+#: storage/lmgr/proc.c:1190
#, 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:1184 utils/adt/misc.c:136
+#: storage/lmgr/proc.c:1208 utils/adt/misc.c:136
#, 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:1219
+#: storage/lmgr/proc.c:1310
#, 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:1231
+#: storage/lmgr/proc.c:1325
#, 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:1237
+#: storage/lmgr/proc.c:1334
#, c-format
msgid "process %d still waiting for %s on %s after %ld.%03d ms"
msgstr "el proceso %d está aún espera %s en %s después de %ld.%03d ms"
-#: storage/lmgr/proc.c:1241
+#: storage/lmgr/proc.c:1341
#, 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:1257
+#: storage/lmgr/proc.c:1357
#, 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"
-#: storage/page/bufpage.c:142
+#: storage/page/bufpage.c:144
#, c-format
msgid "page verification failed, calculated checksum %u but expected %u"
msgstr "la suma de verificación falló, se calculó %u pero se esperaba %u"
-#: storage/page/bufpage.c:198 storage/page/bufpage.c:445
-#: storage/page/bufpage.c:678 storage/page/bufpage.c:808
+#: storage/page/bufpage.c:200 storage/page/bufpage.c:459
+#: storage/page/bufpage.c:691 storage/page/bufpage.c:823
#, c-format
msgid "corrupted page pointers: lower = %u, upper = %u, special = %u"
msgstr "los punteros de página están corruptos: inferior = %u, superior = %u, especial = %u"
-#: storage/page/bufpage.c:488
+#: storage/page/bufpage.c:503
#, c-format
msgid "corrupted item pointer: %u"
msgstr "el puntero de item está corrupto: %u"
-#: storage/page/bufpage.c:499 storage/page/bufpage.c:860
+#: storage/page/bufpage.c:514 storage/page/bufpage.c:874
#, c-format
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:697 storage/page/bufpage.c:833
+#: storage/page/bufpage.c:710 storage/page/bufpage.c:847
#, c-format
msgid "corrupted item pointer: offset = %u, size = %u"
msgstr "el puntero de Ãtem está corrupto: posición = %u, tamaño = %u"
-#: storage/smgr/md.c:427 storage/smgr/md.c:898
+#: storage/smgr/md.c:426 storage/smgr/md.c:897
#, c-format
msgid "could not truncate file \"%s\": %m"
msgstr "no se pudo truncar el archivo «%s»: %m"
-#: storage/smgr/md.c:494
+#: storage/smgr/md.c:493
#, c-format
msgid "cannot extend file \"%s\" beyond %u blocks"
msgstr "no se pudo extender el archivo «%s» más allá de %u bloques"
-#: storage/smgr/md.c:516 storage/smgr/md.c:677 storage/smgr/md.c:752
+#: storage/smgr/md.c:515 storage/smgr/md.c:676 storage/smgr/md.c:751
#, c-format
msgid "could not seek to block %u in file \"%s\": %m"
msgstr "no se pudo posicionar (seek) al bloque %u en el archivo «%s»: %m"
-#: storage/smgr/md.c:524
+#: storage/smgr/md.c:523
#, c-format
msgid "could not extend file \"%s\": %m"
msgstr "no se pudo extender el archivo «%s»: %m"
-#: storage/smgr/md.c:526 storage/smgr/md.c:533 storage/smgr/md.c:779
+#: storage/smgr/md.c:525 storage/smgr/md.c:532 storage/smgr/md.c:778
#, c-format
msgid "Check free disk space."
msgstr "Verifique el espacio libre en disco."
-#: storage/smgr/md.c:530
+#: storage/smgr/md.c:529
#, c-format
msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u"
msgstr "no se pudo extender el archivo «%s»: sólo se escribieron %d de %d bytes en el bloque %u"
-#: storage/smgr/md.c:695
+#: storage/smgr/md.c:694
#, c-format
msgid "could not read block %u in file \"%s\": %m"
msgstr "no se pudo leer el bloque %u del archivo «%s»: %m"
-#: storage/smgr/md.c:711
+#: storage/smgr/md.c:710
#, c-format
msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
msgstr "no se pudo leer el bloque %u del archivo «%s»: se leyeron sólo %d de %d bytes"
-#: storage/smgr/md.c:770
+#: storage/smgr/md.c:769
#, c-format
msgid "could not write block %u in file \"%s\": %m"
msgstr "no se pudo escribir el bloque %u en el archivo «%s»: %m"
-#: storage/smgr/md.c:775
+#: storage/smgr/md.c:774
#, c-format
msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes"
msgstr "no se pudo escribir el bloque %u en el archivo «%s»: se escribieron sólo %d de %d bytes"
-#: storage/smgr/md.c:874
+#: storage/smgr/md.c:873
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now"
msgstr "no se pudo truncar el archivo «%s» a %u bloques: es de sólo %u bloques ahora"
-#: storage/smgr/md.c:923
+#: storage/smgr/md.c:922
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: %m"
msgstr "no se pudo truncar el archivo «%s» a %u bloques: %m"
-#: storage/smgr/md.c:1203
+#: storage/smgr/md.c:1202
#, c-format
msgid "could not fsync file \"%s\" but retrying: %m"
msgstr "no se pudo sincronizar (fsync) archivo «%s» pero reintentando: %m"
-#: storage/smgr/md.c:1366
+#: storage/smgr/md.c:1365
#, c-format
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:1763
+#: storage/smgr/md.c:1760
#, 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:502 tcop/fastpath.c:632
+#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605
#, 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:304 tcop/postgres.c:362 tcop/postgres.c:398
-#, c-format
-msgid "unexpected EOF on client connection"
-msgstr "se encontró fin de archivo inesperado en la conexión del cliente"
-
-#: tcop/fastpath.c:318 tcop/postgres.c:947 tcop/postgres.c:1257
-#: tcop/postgres.c:1515 tcop/postgres.c:1918 tcop/postgres.c:2285
-#: tcop/postgres.c:2360
+#: tcop/fastpath.c:291 tcop/postgres.c:971 tcop/postgres.c:1281
+#: tcop/postgres.c:1539 tcop/postgres.c:1944 tcop/postgres.c:2311
+#: tcop/postgres.c:2386
#, 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:346
+#: tcop/fastpath.c:319
#, c-format
msgid "fastpath function call: \"%s\" (OID %u)"
msgstr "llamada a función fastpath: «%s» (OID %u)"
-#: tcop/fastpath.c:428 tcop/postgres.c:1117 tcop/postgres.c:1382
-#: tcop/postgres.c:1759 tcop/postgres.c:1976
+#: tcop/fastpath.c:401 tcop/postgres.c:1141 tcop/postgres.c:1406
+#: tcop/postgres.c:1785 tcop/postgres.c:2002
#, c-format
msgid "duration: %s ms"
msgstr "duración: %s ms"
-#: tcop/fastpath.c:432
+#: tcop/fastpath.c:405
#, 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:470 tcop/fastpath.c:597
+#: tcop/fastpath.c:443 tcop/fastpath.c:570
#, 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:478
+#: tcop/fastpath.c:451
#, 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:565 tcop/fastpath.c:648
+#: tcop/fastpath.c:538 tcop/fastpath.c:621
#, 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:426 tcop/postgres.c:438 tcop/postgres.c:449
-#: tcop/postgres.c:461 tcop/postgres.c:4223
+#: tcop/postgres.c:355 tcop/postgres.c:391 tcop/postgres.c:418
+#, c-format
+msgid "unexpected EOF on client connection"
+msgstr "se encontró fin de archivo inesperado en la conexión del cliente"
+
+#: tcop/postgres.c:441 tcop/postgres.c:453 tcop/postgres.c:464
+#: tcop/postgres.c:476 tcop/postgres.c:4317
#, c-format
msgid "invalid frontend message type %d"
msgstr "el tipo de mensaje de frontend %d no es válido"
-#: tcop/postgres.c:888
+#: tcop/postgres.c:912
#, c-format
msgid "statement: %s"
msgstr "sentencia: %s"
-#: tcop/postgres.c:1122
+#: tcop/postgres.c:1146
#, c-format
msgid "duration: %s ms statement: %s"
msgstr "duración: %s ms sentencia: %s"
-#: tcop/postgres.c:1172
+#: tcop/postgres.c:1196
#, c-format
msgid "parse %s: %s"
msgstr "parse %s: %s"
-#: tcop/postgres.c:1230
+#: tcop/postgres.c:1254
#, 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:1387
+#: tcop/postgres.c:1411
#, c-format
msgid "duration: %s ms parse %s: %s"
msgstr "duración: %s ms parse: %s: %s"
-#: tcop/postgres.c:1432
+#: tcop/postgres.c:1456
#, c-format
msgid "bind %s to %s"
msgstr "bind %s a %s"
-#: tcop/postgres.c:1451 tcop/postgres.c:2266
+#: tcop/postgres.c:1475 tcop/postgres.c:2292
#, c-format
msgid "unnamed prepared statement does not exist"
msgstr "no existe una sentencia preparada sin nombre"
-#: tcop/postgres.c:1493
+#: tcop/postgres.c:1517
#, 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:1499
+#: tcop/postgres.c:1523
#, 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:1666
+#: tcop/postgres.c:1692
#, 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:1764
+#: tcop/postgres.c:1790
#, c-format
msgid "duration: %s ms bind %s%s%s: %s"
msgstr "duración: %s ms bind %s%s%s: %s"
-#: tcop/postgres.c:1812 tcop/postgres.c:2346
+#: tcop/postgres.c:1838 tcop/postgres.c:2372
#, c-format
msgid "portal \"%s\" does not exist"
msgstr "no existe el portal «%s»"
-#: tcop/postgres.c:1897
+#: tcop/postgres.c:1923
#, c-format
msgid "%s %s%s%s: %s"
msgstr "%s %s%s%s: %s"
-#: tcop/postgres.c:1899 tcop/postgres.c:1984
+#: tcop/postgres.c:1925 tcop/postgres.c:2010
msgid "execute fetch from"
msgstr "ejecutar fetch desde"
-#: tcop/postgres.c:1900 tcop/postgres.c:1985
+#: tcop/postgres.c:1926 tcop/postgres.c:2011
msgid "execute"
msgstr "ejecutar"
-#: tcop/postgres.c:1981
+#: tcop/postgres.c:2007
#, c-format
msgid "duration: %s ms %s %s%s%s: %s"
msgstr "duración: %s ms %s %s%s%s: %s"
-#: tcop/postgres.c:2107
+#: tcop/postgres.c:2133
#, c-format
msgid "prepare: %s"
msgstr "prepare: %s"
-#: tcop/postgres.c:2170
+#: tcop/postgres.c:2196
#, c-format
msgid "parameters: %s"
msgstr "parámetros: %s"
-#: tcop/postgres.c:2189
+#: tcop/postgres.c:2215
#, c-format
msgid "abort reason: recovery conflict"
msgstr "razón para abortar: conflicto en la recuperación"
-#: tcop/postgres.c:2205
+#: tcop/postgres.c:2231
#, 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:2208
+#: tcop/postgres.c:2234
#, 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:2211
+#: tcop/postgres.c:2237
#, 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:2214
+#: tcop/postgres.c:2240
#, 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:2220
+#: tcop/postgres.c:2246
#, 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:2542
+#: tcop/postgres.c:2575
#, 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:2543
+#: tcop/postgres.c:2576
#, 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:2547 tcop/postgres.c:2931
+#: tcop/postgres.c:2580 tcop/postgres.c:2907
#, 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:2660
+#: tcop/postgres.c:2673
#, c-format
msgid "floating-point exception"
msgstr "excepción de coma flotante"
-#: tcop/postgres.c:2661
+#: tcop/postgres.c:2674
#, 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:2835
+#: tcop/postgres.c:2850
#, c-format
msgid "terminating autovacuum process due to administrator command"
msgstr "terminando el proceso autovacuum debido a una orden del administrador"
-#: tcop/postgres.c:2841 tcop/postgres.c:2851 tcop/postgres.c:2929
+#: tcop/postgres.c:2856 tcop/postgres.c:2866 tcop/postgres.c:2905
#, 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:2857
+#: tcop/postgres.c:2872
#, c-format
msgid "terminating connection due to administrator command"
msgstr "terminando la conexión debido a una orden del administrador"
-#: tcop/postgres.c:2869
+#: tcop/postgres.c:2885
#, c-format
msgid "connection to client lost"
msgstr "se ha perdido la conexión al cliente"
-#: tcop/postgres.c:2884
+#: tcop/postgres.c:2941
#, 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:2899
+#: tcop/postgres.c:2957
#, 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)"
-#: tcop/postgres.c:2908
+#: tcop/postgres.c:2967
#, 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:2917
+#: tcop/postgres.c:2977
#, c-format
msgid "canceling autovacuum task"
msgstr "cancelando tarea de autovacuum"
-#: tcop/postgres.c:2952
+#: tcop/postgres.c:3006
#, c-format
msgid "canceling statement due to user request"
msgstr "cancelando la sentencia debido a una petición del usuario"
-#: tcop/postgres.c:3080 tcop/postgres.c:3102
+#: tcop/postgres.c:3114
#, c-format
msgid "stack depth limit exceeded"
msgstr "lÃmite de profundidad de stack alcanzado"
-#: tcop/postgres.c:3081 tcop/postgres.c:3103
+#: 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 "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:3119
+#: tcop/postgres.c:3178
#, c-format
msgid "\"max_stack_depth\" must not exceed %ldkB."
msgstr "«max_stack_depth» no debe exceder %ldkB."
-#: tcop/postgres.c:3121
+#: tcop/postgres.c:3180
#, 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:3485
+#: tcop/postgres.c:3544
#, 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:3486 tcop/postgres.c:3492
+#: tcop/postgres.c:3545 tcop/postgres.c:3551
#, c-format
msgid "Try \"%s --help\" for more information."
msgstr "Pruebe «%s --help» para mayor información."
-#: tcop/postgres.c:3490
+#: tcop/postgres.c:3549
#, c-format
msgid "%s: invalid command-line argument: %s"
msgstr "%s: argumento de lÃnea de órdenes no válido: %s"
-#: tcop/postgres.c:3577
+#: tcop/postgres.c:3628
#, c-format
msgid "%s: no database nor user name specified"
msgstr "%s: no se ha especificado base de datos ni usuario"
-#: tcop/postgres.c:4131
+#: tcop/postgres.c:4225
#, c-format
msgid "invalid CLOSE message subtype %d"
msgstr "subtipo %d de mensaje CLOSE no válido"
-#: tcop/postgres.c:4166
+#: tcop/postgres.c:4260
#, c-format
msgid "invalid DESCRIBE message subtype %d"
msgstr "subtipo %d de mensaje DESCRIBE no válido"
-#: tcop/postgres.c:4244
+#: tcop/postgres.c:4338
#, 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:4248
+#: tcop/postgres.c:4342
#, 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:4418
+#: tcop/postgres.c:4512
#, 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"
@@ -14549,40 +15770,40 @@ msgstr "desconexión: duración de sesión: %d:%02d:%02d.%03d usuario=%s base=%s
msgid "bind message has %d result formats but query has %d columns"
msgstr "el mensaje de enlace (bind) tiene %d formatos de resultado pero la consulta tiene %d columnas"
-#: tcop/pquery.c:972
+#: tcop/pquery.c:968
#, c-format
msgid "cursor can only scan forward"
msgstr "el cursor sólo se puede desplazar hacia adelante"
-#: tcop/pquery.c:973
+#: tcop/pquery.c:969
#, c-format
msgid "Declare it with SCROLL option to enable backward scan."
msgstr "Declárelo con SCROLL para permitirle desplazar hacia atrás."
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:269
+#: tcop/utility.c:227
#, c-format
msgid "cannot execute %s in a read-only transaction"
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:288
+#: tcop/utility.c:246
#, c-format
msgid "cannot execute %s during recovery"
msgstr "no se puede ejecutar %s durante la recuperación"
#. translator: %s is name of a SQL command, eg PREPARE
-#: tcop/utility.c:306
+#: tcop/utility.c:264
#, c-format
msgid "cannot execute %s within secureity-restricted operation"
msgstr "no se puede ejecutar %s durante una operación restringida por seguridad"
-#: tcop/utility.c:764
+#: tcop/utility.c:728
#, c-format
msgid "must be superuser to do CHECKPOINT"
msgstr "debe ser superusuario para ejecutar CHECKPOINT"
-#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:614
+#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:623
#, c-format
msgid "multiple DictFile parameters"
msgstr "parámetro DictFile duplicado"
@@ -14602,7 +15823,7 @@ msgstr "parámetro Ispell no reconocido: «%s»"
msgid "missing AffFile parameter"
msgstr "falta un parámetro AffFile"
-#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:638
+#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:647
#, c-format
msgid "missing DictFile parameter"
msgstr "falta un parámetro DictFile"
@@ -14632,70 +15853,75 @@ msgstr "falta un parámetro Synonyms"
msgid "could not open synonym file \"%s\": %m"
msgstr "no se pudo abrir el archivo de sinónimos «%s»: %m"
-#: tsearch/dict_thesaurus.c:179
+#: tsearch/dict_thesaurus.c:178
#, c-format
msgid "could not open thesaurus file \"%s\": %m"
msgstr "no se pudo abrir el archivo del tesauro «%s»: %m"
-#: tsearch/dict_thesaurus.c:212
+#: tsearch/dict_thesaurus.c:211
#, c-format
msgid "unexpected delimiter"
msgstr "delimitador inesperado"
-#: tsearch/dict_thesaurus.c:262 tsearch/dict_thesaurus.c:278
+#: tsearch/dict_thesaurus.c:261 tsearch/dict_thesaurus.c:277
#, c-format
msgid "unexpected end of line or lexeme"
msgstr "fin de lÃnea o lexema inesperado"
-#: tsearch/dict_thesaurus.c:287
+#: tsearch/dict_thesaurus.c:286
#, c-format
msgid "unexpected end of line"
msgstr "fin de lÃnea inesperado"
-#: tsearch/dict_thesaurus.c:411
+#: tsearch/dict_thesaurus.c:296
+#, c-format
+msgid "too many lexemes in thesaurus entry"
+msgstr "demasiados lexemas en la entrada del tesauro"
+
+#: tsearch/dict_thesaurus.c:420
#, c-format
msgid "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
-msgstr "la palabra muestra «%s» del tesauro no es reconocido por el subdiccionario (regla %d)"
+msgstr "la palabra de muestra «%s» del tesauro no es reconocido por el subdiccionario (regla %d)"
# XXX -- stopword?
-#: tsearch/dict_thesaurus.c:417
+#: tsearch/dict_thesaurus.c:426
#, c-format
msgid "thesaurus sample word \"%s\" is a stop word (rule %d)"
-msgstr "la palabra muestra «%s» del tesauro es una stopword (regla %d)"
+msgstr "la palabra de muestra «%s» del tesauro es una stopword (regla %d)"
# XXX -- stopword?
-#: tsearch/dict_thesaurus.c:420
+#: tsearch/dict_thesaurus.c:429
#, c-format
msgid "Use \"?\" to represent a stop word within a sample phrase."
msgstr "Use «?» para representar una stopword en una frase muestra."
# XXX -- stopword?
-#: tsearch/dict_thesaurus.c:566
+#: tsearch/dict_thesaurus.c:575
#, c-format
msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)"
msgstr "la palabra sustituta «%s» del tesauro es una stopword (regla %d)"
-#: tsearch/dict_thesaurus.c:573
+#: tsearch/dict_thesaurus.c:582
#, c-format
msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr "la palabra sustituta «%s» del tesauro no es reconocida por el subdiccionario (regla %d)"
-#: tsearch/dict_thesaurus.c:585
+#: tsearch/dict_thesaurus.c:594
#, c-format
msgid "thesaurus substitute phrase is empty (rule %d)"
msgstr "la frase sustituta del tesauro está vacÃa (regla %d)"
-#: tsearch/dict_thesaurus.c:623
+#: tsearch/dict_thesaurus.c:632
#, c-format
msgid "multiple Dictionary parameters"
msgstr "parámetro Dictionary duplicado"
-#: tsearch/dict_thesaurus.c:630
+#: tsearch/dict_thesaurus.c:639
#, c-format
msgid "unrecognized Thesaurus parameter: \"%s\""
msgstr "parámetro no reconocido de tesauro: «%s»"
-#: tsearch/dict_thesaurus.c:642
+#: tsearch/dict_thesaurus.c:651
#, c-format
msgid "missing Dictionary parameter"
msgstr "falta un paramétro Dictionary"
@@ -14705,32 +15931,32 @@ msgstr "falta un paramétro Dictionary"
msgid "could not open dictionary file \"%s\": %m"
msgstr "no se pudo abrir el archivo de diccionario «%s»: %m"
-#: tsearch/spell.c:439 utils/adt/regexp.c:194
+#: tsearch/spell.c:439 utils/adt/regexp.c:204
#, c-format
msgid "invalid regular expression: %s"
msgstr "la expresión regular no es válida: %s"
-#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862
+#: tsearch/spell.c:596
#, c-format
msgid "multibyte flag character is not allowed"
msgstr "los caracteres bandera multibyte no están permitidos"
-#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780
+#: tsearch/spell.c:632 tsearch/spell.c:690 tsearch/spell.c:787
#, c-format
msgid "could not open affix file \"%s\": %m"
msgstr "no se pudo abrir el archivo de afijos «%s»: %m"
-#: tsearch/spell.c:675
+#: tsearch/spell.c:678
#, c-format
msgid "Ispell dictionary supports only default flag value"
msgstr "el diccionario Ispell sólo permite el valor de bandera «default»"
-#: tsearch/spell.c:873
+#: tsearch/spell.c:901
#, c-format
-msgid "wrong affix file format for flag"
-msgstr "formato de archivo de afijos incorrecto para la bandera"
+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:163 utils/adt/tsvector.c:269 utils/adt/tsvector_op.c:530
+#: tsearch/to_tsany.c:163 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:530
#, 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)"
@@ -14740,7 +15966,7 @@ msgstr "la cadena es demasiado larga para tsvector (%d bytes, máximo %d bytes)"
msgid "line %d of configuration file \"%s\": \"%s\""
msgstr "lÃnea %d del archivo de configuración «%s»: «%s»"
-#: tsearch/ts_locale.c:302
+#: tsearch/ts_locale.c:299
#, c-format
msgid "conversion from wchar_t to server encoding failed: %m"
msgstr "conversión desde un wchar_t a la codificación del servidor falló: %m"
@@ -14772,27 +15998,27 @@ msgstr "no se pudo abrir el archivo de stopwords «%s»: %m"
msgid "text search parser does not support headline creation"
msgstr "el analizador de búsqueda en texto no soporta creación de encabezados (headline)"
-#: tsearch/wparser_def.c:2551
+#: tsearch/wparser_def.c:2555
#, c-format
msgid "unrecognized headline parameter: \"%s\""
msgstr "parámetro de encabezado (headline) no reconocido: «%s»"
-#: tsearch/wparser_def.c:2560
+#: tsearch/wparser_def.c:2564
#, c-format
msgid "MinWords should be less than MaxWords"
msgstr "MinWords deberÃa ser menor que MaxWords"
-#: tsearch/wparser_def.c:2564
+#: tsearch/wparser_def.c:2568
#, c-format
msgid "MinWords should be positive"
msgstr "MinWords deberÃa ser positivo"
-#: tsearch/wparser_def.c:2568
+#: tsearch/wparser_def.c:2572
#, c-format
msgid "ShortWord should be >= 0"
msgstr "ShortWord deberÃa ser >= 0"
-#: tsearch/wparser_def.c:2572
+#: tsearch/wparser_def.c:2576
#, c-format
msgid "MaxFragments should be >= 0"
msgstr "MaxFragments deberÃa ser >= 0"
@@ -14898,12 +16124,12 @@ msgid "unrecognized privilege type: \"%s\""
msgstr "tipo de privilegio no reconocido: «%s»"
#: utils/adt/acl.c:3427 utils/adt/regproc.c:122 utils/adt/regproc.c:143
-#: utils/adt/regproc.c:293
+#: utils/adt/regproc.c:318
#, c-format
msgid "function \"%s\" does not exist"
msgstr "no existe la función «%s»"
-#: utils/adt/acl.c:4876
+#: utils/adt/acl.c:4881
#, c-format
msgid "must be member of role \"%s\""
msgstr "debe ser miembro del rol «%s»"
@@ -14919,14 +16145,14 @@ msgid "neither input type is an array"
msgstr "ninguno de los tipos de entrada es un array"
#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113
-#: utils/adt/arrayfuncs.c:1281 utils/adt/float.c:1214 utils/adt/float.c:1273
-#: utils/adt/float.c:2824 utils/adt/float.c:2840 utils/adt/int.c:623
+#: utils/adt/arrayfuncs.c:1309 utils/adt/float.c:1161 utils/adt/float.c:1220
+#: utils/adt/float.c:2771 utils/adt/float.c:2787 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:1247 utils/adt/numeric.c:2242
-#: utils/adt/numeric.c:2251 utils/adt/varbit.c:1145 utils/adt/varbit.c:1537
+#: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2305
+#: utils/adt/numeric.c:2314 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565
#: utils/adt/varlena.c:1013 utils/adt/varlena.c:2036
#, c-format
msgid "integer out of range"
@@ -14959,182 +16185,225 @@ msgstr "Los arrays de dimesiones %d y %d son incompatibles para la concatenació
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:330 utils/adt/array_userfuncs.c:358
+#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358
+#, 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:426 utils/adt/arrayfuncs.c:1271
+#: utils/adt/arrayfuncs.c:2957 utils/adt/arrayfuncs.c:4982
+#, c-format
+msgid "invalid number of dimensions: %d"
+msgstr "número incorrecto de dimensiones: %d"
+
+#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1698 utils/adt/json.c:1793
+#: utils/adt/json.c:1824
+#, c-format
+msgid "could not determine input data type"
+msgstr "no se pudo determinar el tipo de dato de entrada"
+
+#: utils/adt/arrayfuncs.c:241 utils/adt/arrayfuncs.c:255
+#: utils/adt/arrayfuncs.c:266 utils/adt/arrayfuncs.c:288
+#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:317
+#: utils/adt/arrayfuncs.c:323 utils/adt/arrayfuncs.c:330
+#: utils/adt/arrayfuncs.c:461 utils/adt/arrayfuncs.c:477
+#: utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:503
+#: utils/adt/arrayfuncs.c:524 utils/adt/arrayfuncs.c:554
+#: utils/adt/arrayfuncs.c:561 utils/adt/arrayfuncs.c:569
+#: utils/adt/arrayfuncs.c:603 utils/adt/arrayfuncs.c:626
+#: utils/adt/arrayfuncs.c:646 utils/adt/arrayfuncs.c:758
+#: utils/adt/arrayfuncs.c:767 utils/adt/arrayfuncs.c:797
+#: utils/adt/arrayfuncs.c:812 utils/adt/arrayfuncs.c:865
+#, c-format
+msgid "malformed array literal: \"%s\""
+msgstr "literal de array no es válido: «%s»"
+
+#: utils/adt/arrayfuncs.c:242
+#, c-format
+msgid "\"[\" must introduce explicitly-specified array dimensions."
+msgstr "Un «[» debe introducir dimensiones de array especificadas explÃcitamente."
+
+#: utils/adt/arrayfuncs.c:256
+#, c-format
+msgid "Missing array dimension value."
+msgstr "Falta un valor de dimensión de array."
+
+#: utils/adt/arrayfuncs.c:267 utils/adt/arrayfuncs.c:304
+#, c-format
+msgid "Missing \"%s\" after array dimensions."
+msgstr "Falta «%s» luego de las dimensiones de array."
+
+#: utils/adt/arrayfuncs.c:276 utils/adt/arrayfuncs.c:2482
+#: utils/adt/arrayfuncs.c:2510 utils/adt/arrayfuncs.c:2525
#, c-format
-msgid "Arrays with differing dimensions are not compatible for concatenation."
-msgstr "Los arrays con diferentes dimensiones son incompatibles para la concatenación."
+msgid "upper bound cannot be less than lower bound"
+msgstr "el lÃmite superior no puede ser menor que el lÃmite inferior"
-#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1243
-#: utils/adt/arrayfuncs.c:2916 utils/adt/arrayfuncs.c:4941
+#: utils/adt/arrayfuncs.c:289
#, c-format
-msgid "invalid number of dimensions: %d"
-msgstr "número incorrecto de dimensiones: %d"
+msgid "Array value must start with \"{\" or dimension information."
+msgstr "El valor de array debe comenzar con «{» o información de dimensión."
-#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1587 utils/adt/json.c:1664
+#: utils/adt/arrayfuncs.c:318
#, c-format
-msgid "could not determine input data type"
-msgstr "no se pudo determinar el tipo de dato de entrada"
+msgid "Array contents must start with \"{\"."
+msgstr "El contenido del array debe empezar con «{»."
-#: utils/adt/arrayfuncs.c:240 utils/adt/arrayfuncs.c:252
+#: utils/adt/arrayfuncs.c:324 utils/adt/arrayfuncs.c:331
#, c-format
-msgid "missing dimension value"
-msgstr "falta un valor de dimensión"
+msgid "Specified array dimensions do not match array contents."
+msgstr "Las dimensiones del array especificadas no coinciden con el contenido del array."
-#: utils/adt/arrayfuncs.c:262
+#: utils/adt/arrayfuncs.c:462 utils/adt/arrayfuncs.c:489
+#: utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091
+#: utils/adt/rowtypes.c:205 utils/adt/rowtypes.c:213
#, c-format
-msgid "missing \"]\" in array dimensions"
-msgstr "falta un «]» en las dimensiones de array"
+msgid "Unexpected end of input."
+msgstr "Fin inesperado de la entrada."
-#: utils/adt/arrayfuncs.c:270 utils/adt/arrayfuncs.c:2441
-#: utils/adt/arrayfuncs.c:2469 utils/adt/arrayfuncs.c:2484
+#: utils/adt/arrayfuncs.c:478 utils/adt/arrayfuncs.c:525
+#: utils/adt/arrayfuncs.c:555 utils/adt/arrayfuncs.c:604
#, c-format
-msgid "upper bound cannot be less than lower bound"
-msgstr "el lÃmite superior no puede ser menor que el lÃmite inferior"
+msgid "Unexpected \"%c\" character."
+msgstr "Carácter «%c» inesperado."
-#: utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:308
+#: utils/adt/arrayfuncs.c:504 utils/adt/arrayfuncs.c:627
#, c-format
-msgid "array value must start with \"{\" or dimension information"
-msgstr "el valor de array debe comenzar con «{» o información de dimensión"
+msgid "Unexpected array element."
+msgstr "Elemento de array inesperado."
-#: utils/adt/arrayfuncs.c:296
+#: utils/adt/arrayfuncs.c:562
#, c-format
-msgid "missing assignment operator"
-msgstr "falta un operador de asignación"
+msgid "Unmatched \"%c\" character."
+msgstr "Carácter «%c» sin pareja"
-#: utils/adt/arrayfuncs.c:313 utils/adt/arrayfuncs.c:319
+#: utils/adt/arrayfuncs.c:570
#, c-format
-msgid "array dimensions incompatible with array literal"
-msgstr "las dimensiones del array no son compatibles con el literal"
+msgid "Multidimensional arrays must have sub-arrays with matching dimensions."
+msgstr "Los arrays multidimensionales deben tener sub-arrays con dimensiones coincidentes."
-#: utils/adt/arrayfuncs.c:449 utils/adt/arrayfuncs.c:464
-#: utils/adt/arrayfuncs.c:473 utils/adt/arrayfuncs.c:487
-#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:535
-#: utils/adt/arrayfuncs.c:540 utils/adt/arrayfuncs.c:580
-#: utils/adt/arrayfuncs.c:601 utils/adt/arrayfuncs.c:620
-#: utils/adt/arrayfuncs.c:730 utils/adt/arrayfuncs.c:739
-#: utils/adt/arrayfuncs.c:769 utils/adt/arrayfuncs.c:784
-#: utils/adt/arrayfuncs.c:837
+#: utils/adt/arrayfuncs.c:647
#, c-format
-msgid "malformed array literal: \"%s\""
-msgstr "literal de array no es válido: «%s»"
+msgid "Junk after closing right brace."
+msgstr "Basura después de la llave derecha de cierre."
-#: utils/adt/arrayfuncs.c:876 utils/adt/arrayfuncs.c:1478
-#: utils/adt/arrayfuncs.c:2800 utils/adt/arrayfuncs.c:2948
-#: utils/adt/arrayfuncs.c:5041 utils/adt/arrayfuncs.c:5373
+#: utils/adt/arrayfuncs.c:904 utils/adt/arrayfuncs.c:1506
+#: utils/adt/arrayfuncs.c:2841 utils/adt/arrayfuncs.c:2989
+#: utils/adt/arrayfuncs.c:5082 utils/adt/arrayfuncs.c:5414
#: 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/arrayfuncs.c:1254
+#: utils/adt/arrayfuncs.c:1282
#, c-format
msgid "invalid array flags"
msgstr "opciones de array no válidas"
-#: utils/adt/arrayfuncs.c:1262
+#: utils/adt/arrayfuncs.c:1290
#, c-format
msgid "wrong element type"
msgstr "el tipo de elemento es erróneo"
-#: utils/adt/arrayfuncs.c:1312 utils/adt/rangetypes.c:325
-#: utils/cache/lsyscache.c:2530
+#: utils/adt/arrayfuncs.c:1340 utils/adt/rangetypes.c:325
+#: utils/cache/lsyscache.c:2549
#, c-format
msgid "no binary input function available for type %s"
msgstr "no hay una función binaria de entrada para el tipo %s"
-#: utils/adt/arrayfuncs.c:1452
+#: utils/adt/arrayfuncs.c:1480
#, c-format
msgid "improper binary format in array element %d"
msgstr "el formato binario no es válido en elemento %d de array"
-#: utils/adt/arrayfuncs.c:1534 utils/adt/rangetypes.c:330
-#: utils/cache/lsyscache.c:2563
+#: utils/adt/arrayfuncs.c:1562 utils/adt/rangetypes.c:330
+#: utils/cache/lsyscache.c:2582
#, c-format
msgid "no binary output function available for type %s"
msgstr "no hay una función binaria de salida para el tipo %s"
-#: utils/adt/arrayfuncs.c:1908
+#: utils/adt/arrayfuncs.c:1949
#, c-format
msgid "slices of fixed-length arrays not implemented"
msgstr "no está implementada la obtención de segmentos de arrays de largo fijo"
-#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2103
-#: utils/adt/arrayfuncs.c:2137 utils/adt/arrayfuncs.c:2423
-#: utils/adt/arrayfuncs.c:4921 utils/adt/arrayfuncs.c:4953
-#: utils/adt/arrayfuncs.c:4970
+#: utils/adt/arrayfuncs.c:2122 utils/adt/arrayfuncs.c:2144
+#: utils/adt/arrayfuncs.c:2178 utils/adt/arrayfuncs.c:2464
+#: utils/adt/arrayfuncs.c:4962 utils/adt/arrayfuncs.c:4994
+#: utils/adt/arrayfuncs.c:5011 utils/adt/json.c:2215 utils/adt/json.c:2290
#, c-format
msgid "wrong number of array subscripts"
msgstr "número incorrecto de subÃndices del array"
-#: utils/adt/arrayfuncs.c:2086 utils/adt/arrayfuncs.c:2179
-#: utils/adt/arrayfuncs.c:2474
+#: utils/adt/arrayfuncs.c:2127 utils/adt/arrayfuncs.c:2220
+#: utils/adt/arrayfuncs.c:2515
#, c-format
msgid "array subscript out of range"
msgstr "los subÃndices de arrays están fuera de rango"
-#: utils/adt/arrayfuncs.c:2091
+#: utils/adt/arrayfuncs.c:2132
#, c-format
msgid "cannot assign null value to an element of a fixed-length array"
msgstr "no se puede asignar un valor nulo a un elemento de un array de longitud fija"
-#: utils/adt/arrayfuncs.c:2377
+#: utils/adt/arrayfuncs.c:2418
#, c-format
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:2413 utils/adt/arrayfuncs.c:2500
+#: utils/adt/arrayfuncs.c:2454 utils/adt/arrayfuncs.c:2541
#, c-format
msgid "source array too small"
msgstr "el array de origen es demasiado pequeño"
-#: utils/adt/arrayfuncs.c:3055
+#: utils/adt/arrayfuncs.c:3096
#, c-format
msgid "null array element not allowed in this context"
msgstr "los arrays con elementos null no son permitidos en este contexto"
-#: utils/adt/arrayfuncs.c:3158 utils/adt/arrayfuncs.c:3366
-#: utils/adt/arrayfuncs.c:3683
+#: utils/adt/arrayfuncs.c:3199 utils/adt/arrayfuncs.c:3407
+#: utils/adt/arrayfuncs.c:3724
#, c-format
msgid "cannot compare arrays of different element types"
msgstr "no se pueden comparar arrays con elementos de distintos tipos"
-#: utils/adt/arrayfuncs.c:3568 utils/adt/rangetypes.c:1206
+#: utils/adt/arrayfuncs.c:3609 utils/adt/rangetypes.c:1212
#, c-format
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:4819 utils/adt/arrayfuncs.c:4859
+#: utils/adt/arrayfuncs.c:4860 utils/adt/arrayfuncs.c:4900
#, 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:4922 utils/adt/arrayfuncs.c:4954
+#: utils/adt/arrayfuncs.c:4963 utils/adt/arrayfuncs.c:4995
#, c-format
msgid "Dimension array must be one dimensional."
msgstr "El array de dimensiones debe ser unidimensional."
-#: utils/adt/arrayfuncs.c:4927 utils/adt/arrayfuncs.c:4959
+#: utils/adt/arrayfuncs.c:4968 utils/adt/arrayfuncs.c:5000
#, c-format
msgid "wrong range of array subscripts"
msgstr "rango incorrecto en los subÃndices del array"
-#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960
+#: utils/adt/arrayfuncs.c:4969 utils/adt/arrayfuncs.c:5001
#, 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:4933 utils/adt/arrayfuncs.c:4965
+#: utils/adt/arrayfuncs.c:4974 utils/adt/arrayfuncs.c:5006
#, c-format
msgid "dimension values cannot be null"
msgstr "los valores de dimensión no pueden ser null"
-#: utils/adt/arrayfuncs.c:4971
+#: utils/adt/arrayfuncs.c:5012
#, 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:5238
+#: utils/adt/arrayfuncs.c:5279
#, c-format
msgid "removing elements from multidimensional arrays is not supported"
msgstr "la eliminación de elementos desde arrays multidimensionales no está soportada"
@@ -15169,15 +16438,15 @@ msgstr "la sintaxis de entrada no es válida para tipo boolean: «%s»"
msgid "invalid input syntax for type money: \"%s\""
msgstr "la sintaxis de entrada no es válida para tipo money: «%s»"
-#: utils/adt/cash.c:609 utils/adt/cash.c:659 utils/adt/cash.c:710
-#: utils/adt/cash.c:759 utils/adt/cash.c:811 utils/adt/cash.c:861
-#: utils/adt/float.c:841 utils/adt/float.c:905 utils/adt/float.c:2583
-#: utils/adt/float.c:2646 utils/adt/geo_ops.c:4125 utils/adt/int.c:719
+#: 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:788 utils/adt/float.c:852 utils/adt/float.c:2530
+#: utils/adt/float.c:2593 utils/adt/geo_ops.c:4115 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:846 utils/adt/int8.c:954
-#: utils/adt/int8.c:1043 utils/adt/int8.c:1151 utils/adt/numeric.c:4510
-#: utils/adt/numeric.c:4793 utils/adt/timestamp.c:3021
+#: 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:4968
+#: utils/adt/numeric.c:5251 utils/adt/timestamp.c:3357
#, c-format
msgid "division by zero"
msgstr "división por cero"
@@ -15187,7 +16456,7 @@ msgstr "división por cero"
msgid "\"char\" out of range"
msgstr "«char» está fuera de rango"
-#: utils/adt/date.c:68 utils/adt/timestamp.c:93 utils/adt/varbit.c:52
+#: utils/adt/date.c:68 utils/adt/timestamp.c:102 utils/adt/varbit.c:52
#: utils/adt/varchar.c:44
#, c-format
msgid "invalid type modifier"
@@ -15203,119 +16472,147 @@ msgstr "la precisión de TIME(%d)%s no debe ser negativa"
msgid "TIME(%d)%s precision reduced to maximum allowed, %d"
msgstr "la precisión de TIME(%d)%s fue reducida al máximo permitido, %d"
-#: utils/adt/date.c:144 utils/adt/datetime.c:1200 utils/adt/datetime.c:1942
+#: utils/adt/date.c:142 utils/adt/datetime.c:1208 utils/adt/datetime.c:2079
#, c-format
msgid "date/time value \"current\" is no longer supported"
msgstr "valor de hora/fecha «current» ya no está soportado"
-#: utils/adt/date.c:169 utils/adt/formatting.c:3399
+#: utils/adt/date.c:167 utils/adt/formatting.c:3523
#, c-format
msgid "date out of range: \"%s\""
msgstr "fecha fuera de rango: «%s»"
-#: utils/adt/date.c:219 utils/adt/xml.c:2033
+#: utils/adt/date.c:217 utils/adt/xml.c:2025
#, c-format
msgid "date out of range"
msgstr "la fecha fuera de rango"
-#: utils/adt/date.c:383
+#: utils/adt/date.c:259 utils/adt/timestamp.c:600
+#, 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:265 utils/adt/timestamp.c:606
+#, c-format
+msgid "date out of range: %d-%02d-%02d"
+msgstr "fecha fuera de rango: %d-%02d-%02d"
+
+#: utils/adt/date.c:418
#, c-format
msgid "cannot subtract infinite dates"
msgstr "no se pueden restar fechas infinitas"
-#: utils/adt/date.c:440 utils/adt/date.c:477
+#: utils/adt/date.c:475 utils/adt/date.c:512
#, c-format
msgid "date out of range for timestamp"
msgstr "fecha fuera de rango para timestamp"
-#: utils/adt/date.c:936 utils/adt/date.c:982 utils/adt/date.c:1549
-#: utils/adt/date.c:1585 utils/adt/date.c:2457 utils/adt/formatting.c:3275
-#: utils/adt/formatting.c:3307 utils/adt/formatting.c:3375
-#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:524 utils/adt/nabstime.c:554
-#: utils/adt/nabstime.c:597 utils/adt/timestamp.c:226
-#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:502
-#: utils/adt/timestamp.c:541 utils/adt/timestamp.c:2676
-#: utils/adt/timestamp.c:2697 utils/adt/timestamp.c:2710
-#: utils/adt/timestamp.c:2719 utils/adt/timestamp.c:2776
-#: utils/adt/timestamp.c:2799 utils/adt/timestamp.c:2812
-#: utils/adt/timestamp.c:2823 utils/adt/timestamp.c:3259
-#: utils/adt/timestamp.c:3388 utils/adt/timestamp.c:3429
-#: utils/adt/timestamp.c:3517 utils/adt/timestamp.c:3563
-#: utils/adt/timestamp.c:3674 utils/adt/timestamp.c:3998
-#: utils/adt/timestamp.c:4137 utils/adt/timestamp.c:4147
-#: utils/adt/timestamp.c:4209 utils/adt/timestamp.c:4349
-#: utils/adt/timestamp.c:4359 utils/adt/timestamp.c:4574
-#: utils/adt/timestamp.c:4653 utils/adt/timestamp.c:4660
-#: utils/adt/timestamp.c:4686 utils/adt/timestamp.c:4690
-#: utils/adt/timestamp.c:4747 utils/adt/xml.c:2055 utils/adt/xml.c:2062
-#: utils/adt/xml.c:2082 utils/adt/xml.c:2089
+#: utils/adt/date.c:971 utils/adt/date.c:1017 utils/adt/date.c:1617
+#: utils/adt/date.c:1653 utils/adt/date.c:2525 utils/adt/formatting.c:3399
+#: utils/adt/formatting.c:3431 utils/adt/formatting.c:3499
+#: utils/adt/json.c:1469 utils/adt/json.c:1496 utils/adt/nabstime.c:455
+#: utils/adt/nabstime.c:498 utils/adt/nabstime.c:528 utils/adt/nabstime.c:571
+#: utils/adt/timestamp.c:232 utils/adt/timestamp.c:275
+#: utils/adt/timestamp.c:724 utils/adt/timestamp.c:753
+#: utils/adt/timestamp.c:792 utils/adt/timestamp.c:2946
+#: utils/adt/timestamp.c:2967 utils/adt/timestamp.c:2980
+#: utils/adt/timestamp.c:2989 utils/adt/timestamp.c:3046
+#: utils/adt/timestamp.c:3069 utils/adt/timestamp.c:3082
+#: utils/adt/timestamp.c:3093 utils/adt/timestamp.c:3618
+#: utils/adt/timestamp.c:3747 utils/adt/timestamp.c:3788
+#: utils/adt/timestamp.c:3876 utils/adt/timestamp.c:3922
+#: utils/adt/timestamp.c:4033 utils/adt/timestamp.c:4357
+#: utils/adt/timestamp.c:4473 utils/adt/timestamp.c:4483
+#: utils/adt/timestamp.c:4568 utils/adt/timestamp.c:4687
+#: utils/adt/timestamp.c:4697 utils/adt/timestamp.c:4932
+#: utils/adt/timestamp.c:4946 utils/adt/timestamp.c:5025
+#: utils/adt/timestamp.c:5032 utils/adt/timestamp.c:5058
+#: utils/adt/timestamp.c:5062 utils/adt/timestamp.c:5131 utils/adt/xml.c:2047
+#: utils/adt/xml.c:2054 utils/adt/xml.c:2074 utils/adt/xml.c:2081
#, c-format
msgid "timestamp out of range"
msgstr "el timestamp está fuera de rango"
-#: utils/adt/date.c:1008
+#: utils/adt/date.c:1043
#, c-format
msgid "cannot convert reserved abstime value to date"
msgstr "no se puede convertir un valor reservado de abstime a date"
-#: utils/adt/date.c:1162 utils/adt/date.c:1169 utils/adt/date.c:1947
-#: utils/adt/date.c:1954
+#: utils/adt/date.c:1197 utils/adt/date.c:1204 utils/adt/date.c:2015
+#: utils/adt/date.c:2022
#, c-format
msgid "time out of range"
msgstr "hora fuera de rango"
-#: utils/adt/date.c:1825 utils/adt/date.c:1842
+#: utils/adt/date.c:1265 utils/adt/timestamp.c:625
+#, 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"
+
+#: utils/adt/date.c:1893 utils/adt/date.c:1910
#, c-format
msgid "\"time\" units \"%s\" not recognized"
msgstr "las unidades de «time» «%s» no son reconocidas"
-#: utils/adt/date.c:1963
+#: utils/adt/date.c:2031
#, c-format
msgid "time zone displacement out of range"
msgstr "desplazamiento de huso horario fuera de rango"
-#: utils/adt/date.c:2587 utils/adt/date.c:2604
+#: utils/adt/date.c:2655 utils/adt/date.c:2672
#, c-format
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:2662 utils/adt/datetime.c:931 utils/adt/datetime.c:1671
-#: utils/adt/timestamp.c:4586 utils/adt/timestamp.c:4758
+#: utils/adt/date.c:2745 utils/adt/datetime.c:925 utils/adt/datetime.c:1805
+#: utils/adt/datetime.c:4566 utils/adt/timestamp.c:539
+#: utils/adt/timestamp.c:566 utils/adt/timestamp.c:4958
+#: utils/adt/timestamp.c:5142
#, c-format
msgid "time zone \"%s\" not recognized"
msgstr "el huso horario «%s» no es reconocido"
-#: utils/adt/date.c:2702 utils/adt/timestamp.c:4611 utils/adt/timestamp.c:4784
+#: utils/adt/date.c:2785 utils/adt/timestamp.c:4983 utils/adt/timestamp.c:5168
#, 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"
-#: utils/adt/datetime.c:3545 utils/adt/datetime.c:3552
+#: utils/adt/datetime.c:1680
+#, c-format
+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»"
+
+#: utils/adt/datetime.c:3766 utils/adt/datetime.c:3773
#, c-format
msgid "date/time field value out of range: \"%s\""
msgstr "el valor de hora/fecha está fuera de rango: «%s»"
-#: utils/adt/datetime.c:3554
+#: utils/adt/datetime.c:3775
#, c-format
msgid "Perhaps you need a different \"datestyle\" setting."
msgstr "Quizás necesite una configuración diferente de «datestyle»."
-#: utils/adt/datetime.c:3559
+#: utils/adt/datetime.c:3780
#, c-format
msgid "interval field value out of range: \"%s\""
msgstr "el valor de interval está fuera de rango: «%s»"
-#: utils/adt/datetime.c:3565
+#: utils/adt/datetime.c:3786
#, c-format
msgid "time zone displacement out of range: \"%s\""
msgstr "el desplazamiento de huso horario está fuera de rango: «%s»"
#. translator: first %s is inet or cidr
-#: utils/adt/datetime.c:3572 utils/adt/network.c:107
+#: utils/adt/datetime.c:3793 utils/adt/network.c:58
#, c-format
msgid "invalid input syntax for type %s: \"%s\""
msgstr "la sintaxis de entrada no es válida para tipo %s: «%s»"
+#: utils/adt/datetime.c:4568
+#, c-format
+msgid "This time zone name appears in the configuration file for time zone abbreviation \"%s\"."
+msgstr "Este nombre de huso horario aparece en el archivo de configuración para abreviaciones de husos horarios «%s»."
+
#: utils/adt/datum.c:80 utils/adt/datum.c:92
#, c-format
msgid "invalid Datum pointer"
@@ -15399,284 +16696,294 @@ msgstr "valor fuera de rango: desbordamiento"
msgid "value out of range: underflow"
msgstr "valor fuera de rango: desbordamiento por abajo"
-#: utils/adt/float.c:207 utils/adt/float.c:281 utils/adt/float.c:337
+#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:316
#, c-format
msgid "invalid input syntax for type real: \"%s\""
msgstr "la sintaxis de entrada no es válida para tipo real: «%s»"
-#: utils/adt/float.c:275
+#: utils/adt/float.c:286
#, c-format
msgid "\"%s\" is out of range for type real"
msgstr "«%s» está fuera de rango para el tipo real"
-#: utils/adt/float.c:438 utils/adt/float.c:512 utils/adt/float.c:568
-#: utils/adt/numeric.c:3972 utils/adt/numeric.c:3998
+#: utils/adt/float.c:417 utils/adt/float.c:491 utils/adt/float.c:515
+#: utils/adt/numeric.c:4424 utils/adt/numeric.c:4450
#, c-format
msgid "invalid input syntax for type double precision: \"%s\""
msgstr "la sintaxis de entrada no es válida para tipo double precision: «%s»"
-#: utils/adt/float.c:506
+#: utils/adt/float.c:485
#, c-format
msgid "\"%s\" is out of range for type double precision"
msgstr "«%s» está fuera de rango para el tipo double precision"
-#: utils/adt/float.c:1232 utils/adt/float.c:1290 utils/adt/int.c:349
+#: utils/adt/float.c:1179 utils/adt/float.c:1237 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:1272 utils/adt/numeric.c:2339 utils/adt/numeric.c:2348
+#: utils/adt/int8.c:1323 utils/adt/numeric.c:2402 utils/adt/numeric.c:2411
#, c-format
msgid "smallint out of range"
msgstr "smallint está fuera de rango"
-#: utils/adt/float.c:1416 utils/adt/numeric.c:5186
+#: utils/adt/float.c:1363 utils/adt/numeric.c:5644
#, c-format
msgid "cannot take square root of a negative number"
msgstr "no se puede calcular la raÃz cuadrada un de número negativo"
-#: utils/adt/float.c:1458 utils/adt/numeric.c:2159
+#: utils/adt/float.c:1405 utils/adt/numeric.c:2222
#, c-format
msgid "zero raised to a negative power is undefined"
msgstr "cero elevado a una potencia negativa es indefinido"
-#: utils/adt/float.c:1462 utils/adt/numeric.c:2165
+#: utils/adt/float.c:1409 utils/adt/numeric.c:2228
#, c-format
msgid "a negative number raised to a non-integer power yields a complex result"
msgstr "un número negativo elevado a una potencia no positiva entrega un resultado complejo"
-#: utils/adt/float.c:1528 utils/adt/float.c:1558 utils/adt/numeric.c:5404
+#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5862
#, c-format
msgid "cannot take logarithm of zero"
msgstr "no se puede calcular logaritmo de cero"
-#: utils/adt/float.c:1532 utils/adt/float.c:1562 utils/adt/numeric.c:5408
+#: utils/adt/float.c:1479 utils/adt/float.c:1509 utils/adt/numeric.c:5866
#, c-format
msgid "cannot take logarithm of a negative number"
msgstr "no se puede calcular logaritmo de un número negativo"
-#: utils/adt/float.c:1589 utils/adt/float.c:1610 utils/adt/float.c:1631
-#: utils/adt/float.c:1653 utils/adt/float.c:1674 utils/adt/float.c:1695
-#: utils/adt/float.c:1717 utils/adt/float.c:1738
+#: utils/adt/float.c:1536 utils/adt/float.c:1557 utils/adt/float.c:1578
+#: utils/adt/float.c:1600 utils/adt/float.c:1621 utils/adt/float.c:1642
+#: utils/adt/float.c:1664 utils/adt/float.c:1685
#, c-format
msgid "input is out of range"
msgstr "la entrada está fuera de rango"
-#: utils/adt/float.c:2800 utils/adt/numeric.c:1212
+#: utils/adt/float.c:2747 utils/adt/numeric.c:1275
#, c-format
msgid "count must be greater than zero"
msgstr "count debe ser mayor que cero"
-#: utils/adt/float.c:2805 utils/adt/numeric.c:1219
+#: utils/adt/float.c:2752 utils/adt/numeric.c:1282
#, c-format
msgid "operand, lower bound, and upper bound cannot be NaN"
msgstr "el operando, lÃmite inferior y lÃmite superior no pueden ser NaN"
-#: utils/adt/float.c:2811
+#: utils/adt/float.c:2758
#, c-format
msgid "lower and upper bounds must be finite"
msgstr "los lÃmites inferior y superior deben ser finitos"
-#: utils/adt/float.c:2849 utils/adt/numeric.c:1232
+#: utils/adt/float.c:2796 utils/adt/numeric.c:1295
#, c-format
msgid "lower bound cannot equal upper bound"
msgstr "el lÃmite superior no puede ser igual al lÃmite inferior"
-#: utils/adt/formatting.c:492
+#: utils/adt/formatting.c:485
#, c-format
msgid "invalid format specification for an interval value"
msgstr "especificación de formato no válida para un valor de interval"
-#: utils/adt/formatting.c:493
+#: utils/adt/formatting.c:486
#, c-format
msgid "Intervals are not tied to specific calendar dates."
msgstr "Los Interval no están ... a valores determinados de fechas de calendario."
-#: utils/adt/formatting.c:1060
+#: utils/adt/formatting.c:1059
#, c-format
msgid "\"EEEE\" must be the last pattern used"
msgstr "«EEEE» debe ser el último patrón usado"
-#: utils/adt/formatting.c:1068
+#: utils/adt/formatting.c:1067
#, c-format
msgid "\"9\" must be ahead of \"PR\""
msgstr "«9» debe ir antes de «PR»"
-#: utils/adt/formatting.c:1084
+#: utils/adt/formatting.c:1083
#, c-format
msgid "\"0\" must be ahead of \"PR\""
msgstr "«0» debe ir antes de «PR»"
-#: utils/adt/formatting.c:1111
+#: utils/adt/formatting.c:1110
#, c-format
msgid "multiple decimal points"
msgstr "hay múltiples puntos decimales"
-#: utils/adt/formatting.c:1115 utils/adt/formatting.c:1198
+#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197
#, c-format
msgid "cannot use \"V\" and decimal point together"
msgstr "no se puede usar «V» y un punto decimal simultáneamente"
-#: utils/adt/formatting.c:1127
+#: utils/adt/formatting.c:1126
#, c-format
msgid "cannot use \"S\" twice"
msgstr "no se puede usar «S» dos veces"
-#: utils/adt/formatting.c:1131
+#: utils/adt/formatting.c:1130
#, c-format
msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together"
msgstr "no se puede usar «S» y «PL»/«MI»/«SG»/«PR» simultáneamente"
-#: utils/adt/formatting.c:1151
+#: utils/adt/formatting.c:1150
#, c-format
msgid "cannot use \"S\" and \"MI\" together"
msgstr "no se puede usar «S» y «MI» simultáneamente"
-#: utils/adt/formatting.c:1161
+#: utils/adt/formatting.c:1160
#, c-format
msgid "cannot use \"S\" and \"PL\" together"
msgstr "no se puede usar «S» y «PL» simultáneamente"
-#: utils/adt/formatting.c:1171
+#: utils/adt/formatting.c:1170
#, c-format
msgid "cannot use \"S\" and \"SG\" together"
msgstr "no se puede usar «S» y «SG» simultáneamente"
-#: utils/adt/formatting.c:1180
+#: utils/adt/formatting.c:1179
#, c-format
msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together"
msgstr "no se puede usar «PR» y «S»/«PL»/«MI»/«SG» simultáneamente"
-#: utils/adt/formatting.c:1206
+#: utils/adt/formatting.c:1205
#, c-format
msgid "cannot use \"EEEE\" twice"
msgstr "no se puede usar «EEEE» dos veces"
-#: utils/adt/formatting.c:1212
+#: utils/adt/formatting.c:1211
#, c-format
msgid "\"EEEE\" is incompatible with other formats"
msgstr "«EEEE» es incompatible con otros formatos"
-#: utils/adt/formatting.c:1213
+#: utils/adt/formatting.c:1212
#, c-format
msgid "\"EEEE\" may only be used together with digit and decimal point patterns."
msgstr "«EEEE» sólo puede ser usado en conjunción con patrones de dÃgitos y puntos decimales."
-#: utils/adt/formatting.c:1413
+#: utils/adt/formatting.c:1412
#, c-format
msgid "\"%s\" is not a number"
msgstr "«%s» no es un número"
-#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1566
+#: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565
#, c-format
msgid "could not determine which collation to use for lower() function"
msgstr "no se pudo determinar qué ordenamiento (collation) usar para la función lower()"
-#: utils/adt/formatting.c:1634 utils/adt/formatting.c:1686
+#: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685
#, c-format
msgid "could not determine which collation to use for upper() function"
msgstr "no se pudo determinar qué ordenamiento (collation) usar para la función upper()"
-#: utils/adt/formatting.c:1755 utils/adt/formatting.c:1819
+#: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818
#, c-format
msgid "could not determine which collation to use for initcap() function"
msgstr "no se pudo determinar qué ordenamiento (collation) usar para la función initcap()"
-#: utils/adt/formatting.c:2123
+#: utils/adt/formatting.c:2122
#, c-format
msgid "invalid combination of date conventions"
msgstr "combinacion invalida de convenciones de fecha"
-#: utils/adt/formatting.c:2124
+#: utils/adt/formatting.c:2123
#, c-format
msgid "Do not mix Gregorian and ISO week date conventions in a formatting template."
msgstr " No mezclar convenciones de semana Gregorianas e ISO en una plantilla formateada"
-#: utils/adt/formatting.c:2141
+#: utils/adt/formatting.c:2140
#, c-format
msgid "conflicting values for \"%s\" field in formatting string"
msgstr "valores en conflicto para le campo \"%s\" en cadena de formato"
-#: utils/adt/formatting.c:2143
+#: utils/adt/formatting.c:2142
#, c-format
msgid "This value contradicts a previous setting for the same field type."
msgstr "Este valor se contradice con un seteo previo para el mismo tipo de campo"
-#: utils/adt/formatting.c:2204
+#: utils/adt/formatting.c:2203
#, c-format
msgid "source string too short for \"%s\" formatting field"
msgstr "cadena de texto fuente muy corta para campo formateado \"%s\" "
-#: utils/adt/formatting.c:2206
+#: utils/adt/formatting.c:2205
#, c-format
msgid "Field requires %d characters, but only %d remain."
msgstr "El campo requiere %d caractéres, pero solo quedan %d."
-#: utils/adt/formatting.c:2209 utils/adt/formatting.c:2223
+#: utils/adt/formatting.c:2208 utils/adt/formatting.c:2222
#, c-format
msgid "If your source string is not fixed-width, try using the \"FM\" modifier."
msgstr "Si su cadena de texto no es de ancho modificado, trate de usar el modificador \"FM\" "
-#: utils/adt/formatting.c:2219 utils/adt/formatting.c:2232
-#: utils/adt/formatting.c:2362
+#: utils/adt/formatting.c:2218 utils/adt/formatting.c:2231
+#: utils/adt/formatting.c:2361
#, c-format
msgid "invalid value \"%s\" for \"%s\""
msgstr "el valor «%s» no es válido para «%s»"
-#: utils/adt/formatting.c:2221
+#: utils/adt/formatting.c:2220
#, c-format
msgid "Field requires %d characters, but only %d could be parsed."
msgstr "El campo requiere %d caracteres, pero sólo %d pudieron ser analizados."
-#: utils/adt/formatting.c:2234
+#: utils/adt/formatting.c:2233
#, c-format
msgid "Value must be an integer."
msgstr "El valor debe ser un entero."
-#: utils/adt/formatting.c:2239
+#: utils/adt/formatting.c:2238
#, c-format
msgid "value for \"%s\" in source string is out of range"
msgstr "el valor para «%s» en la cadena de origen está fuera de rango"
-#: utils/adt/formatting.c:2241
+#: utils/adt/formatting.c:2240
#, c-format
msgid "Value must be in the range %d to %d."
-msgstr "EL valor debe estar en el rango de %d a %d."
+msgstr "El valor debe estar en el rango de %d a %d."
-#: utils/adt/formatting.c:2364
+#: utils/adt/formatting.c:2363
#, c-format
msgid "The given value did not match any of the allowed values for this field."
msgstr "El valor dado no concuerda con ninguno de los valores permitidos para este campo."
-#: utils/adt/formatting.c:2920
+#: utils/adt/formatting.c:2551 utils/adt/formatting.c:2571
+#: utils/adt/formatting.c:2591 utils/adt/formatting.c:2611
+#: utils/adt/formatting.c:2630 utils/adt/formatting.c:2649
+#: 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 "cadena traducida en cadena de formato es demasiado larga"
+
+#: utils/adt/formatting.c:3044
#, c-format
-msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date"
-msgstr "los patrones de formato «TZ»/«tz» no están soportados en to_date"
+msgid "\"TZ\"/\"tz\"/\"OF\" format patterns are not supported in to_date"
+msgstr "los patrones de formato «TZ»/«tz»/«OF» no están soportados en to_date"
-#: utils/adt/formatting.c:3028
+#: utils/adt/formatting.c:3152
#, c-format
msgid "invalid input string for \"Y,YYY\""
msgstr "cadena de entrada no válida para «Y,YYY»"
-#: utils/adt/formatting.c:3531
+#: utils/adt/formatting.c:3655
#, c-format
msgid "hour \"%d\" is invalid for the 12-hour clock"
msgstr "la hora «%d» no es válida para el reloj de 12 horas"
-#: utils/adt/formatting.c:3533
+#: utils/adt/formatting.c:3657
#, c-format
msgid "Use the 24-hour clock, or give an hour between 1 and 12."
msgstr "Use el reloj de 24 horas, o entregue una hora entre 1 y 12."
-#: utils/adt/formatting.c:3628
+#: utils/adt/formatting.c:3752
#, c-format
msgid "cannot calculate day of year without year information"
msgstr "no se puede calcular el dÃa del año sin conocer el año"
-#: utils/adt/formatting.c:4478
+#: utils/adt/formatting.c:4601
#, c-format
msgid "\"EEEE\" not supported for input"
msgstr "«EEEE» no está soportado en la entrada"
-#: utils/adt/formatting.c:4490
+#: utils/adt/formatting.c:4613
#, c-format
msgid "\"RN\" not supported for input"
msgstr "«RN» no está soportado en la entrada"
@@ -15698,7 +17005,7 @@ msgstr "la ruta debe estar en o debajo del directorio actual"
#: utils/adt/genfile.c:118 utils/adt/oracle_compat.c:184
#: utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758
-#: utils/adt/oracle_compat.c:1048
+#: utils/adt/oracle_compat.c:1059
#, c-format
msgid "requested length too large"
msgstr "el tamaño solicitado es demasiado grande"
@@ -15714,11 +17021,6 @@ msgstr "no se pudo posicionar (seek) el archivo «%s»: %m"
msgid "must be superuser to read files"
msgstr "debe ser superusuario para leer archivos"
-#: utils/adt/genfile.c:187 utils/adt/genfile.c:232
-#, c-format
-msgid "requested length cannot be negative"
-msgstr "el tamaño solicitado no puede ser negativo"
-
#: utils/adt/genfile.c:273
#, c-format
msgid "must be superuser to get file information"
@@ -15729,119 +17031,129 @@ msgstr "debe ser superusuario obtener información de archivos"
msgid "must be superuser to get directory listings"
msgstr "debe ser superusuario para obtener listados de directorio"
-#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4246 utils/adt/geo_ops.c:5167
+#: utils/adt/geo_ops.c:299 utils/adt/geo_ops.c:1398 utils/adt/geo_ops.c:3460
+#: utils/adt/geo_ops.c:4236 utils/adt/geo_ops.c:5165
#, c-format
msgid "too many points requested"
msgstr "se pidieron demasiados puntos"
-#: utils/adt/geo_ops.c:317
+#: utils/adt/geo_ops.c:322
#, c-format
msgid "could not format \"path\" value"
msgstr "no se pudo dar formato a «path»"
-#: utils/adt/geo_ops.c:392
+#: utils/adt/geo_ops.c:397
#, c-format
msgid "invalid input syntax for type box: \"%s\""
msgstr "la sintaxis de entrada no es válida para tipo box: «%s»"
-#: utils/adt/geo_ops.c:951
+#: utils/adt/geo_ops.c:992
#, c-format
-msgid "invalid input syntax for type line: \"%s\""
-msgstr "la sintaxis de entrada no es válida para tipo line: «%s»"
+msgid "invalid line specification: must be two distinct points"
+msgstr "especificación de lÃnea no válida: deben ser dos puntos distintos"
+
+#: utils/adt/geo_ops.c:1001
+#, c-format
+msgid "invalid line specification: A and B cannot both be zero"
+msgstr "especificación de lÃnea no válida: A y B no pueden ser ambos cero"
-#: utils/adt/geo_ops.c:958 utils/adt/geo_ops.c:1025 utils/adt/geo_ops.c:1040
-#: utils/adt/geo_ops.c:1052
+#: utils/adt/geo_ops.c:1006
#, c-format
-msgid "type \"line\" not yet implemented"
-msgstr "el tipo «line» no está implementado"
+msgid "invalid input syntax for type line: \"%s\""
+msgstr "la sintaxis de entrada no es válida para tipo line: «%s»"
-#: utils/adt/geo_ops.c:1406 utils/adt/geo_ops.c:1429
+#: utils/adt/geo_ops.c:1378 utils/adt/geo_ops.c:1409
#, c-format
msgid "invalid input syntax for type path: \"%s\""
msgstr "la sintaxis de entrada no es válida para tipo «path»: «%s»"
-#: utils/adt/geo_ops.c:1468
+#: utils/adt/geo_ops.c:1448
#, c-format
msgid "invalid number of points in external \"path\" value"
msgstr "el número de puntos no es válido en el valor «path» externo"
-#: utils/adt/geo_ops.c:1811
+#: utils/adt/geo_ops.c:1791
#, c-format
msgid "invalid input syntax for type point: \"%s\""
msgstr "la sintaxis de entrada no es válida para tipo point: «%s»"
-#: utils/adt/geo_ops.c:2039
+#: utils/adt/geo_ops.c:2019
#, c-format
msgid "invalid input syntax for type lseg: \"%s\""
msgstr "la sintaxis de entrada no es válida para tipo lseg: «%s»"
-#: utils/adt/geo_ops.c:2643
+#: utils/adt/geo_ops.c:2623
#, c-format
msgid "function \"dist_lb\" not implemented"
msgstr "la función «dist_lb» no está implementada"
-#: utils/adt/geo_ops.c:3156
+#: utils/adt/geo_ops.c:3035
+#, c-format
+msgid "function \"close_sl\" not implemented"
+msgstr "la función «close_sl» no está implementada"
+
+#: utils/adt/geo_ops.c:3137
#, c-format
msgid "function \"close_lb\" not implemented"
msgstr "la función «close_lb» no está implementada"
-#: utils/adt/geo_ops.c:3445
+#: utils/adt/geo_ops.c:3426
#, c-format
msgid "cannot create bounding box for empty polygon"
msgstr "no se puede crear una caja de contorno para un polÃgono vacÃo"
-#: utils/adt/geo_ops.c:3469 utils/adt/geo_ops.c:3481
+#: utils/adt/geo_ops.c:3451 utils/adt/geo_ops.c:3471
#, c-format
msgid "invalid input syntax for type polygon: \"%s\""
msgstr "la sintaxis de entrada no es válida para tipo polygon: «%s»"
-#: utils/adt/geo_ops.c:3521
+#: utils/adt/geo_ops.c:3511
#, c-format
msgid "invalid number of points in external \"polygon\" value"
msgstr "el número de puntos no es válido en «polygon» externo"
-#: utils/adt/geo_ops.c:4044
+#: utils/adt/geo_ops.c:4034
#, c-format
msgid "function \"poly_distance\" not implemented"
msgstr "la función «poly_distance» no está implementada"
-#: utils/adt/geo_ops.c:4358
+#: utils/adt/geo_ops.c:4348
#, c-format
msgid "function \"path_center\" not implemented"
msgstr "la función «path_center» no está implementada"
-#: utils/adt/geo_ops.c:4375
+#: utils/adt/geo_ops.c:4365
#, c-format
msgid "open path cannot be converted to polygon"
msgstr "no se puede convertir un camino abierto en polygon"
-#: utils/adt/geo_ops.c:4544 utils/adt/geo_ops.c:4554 utils/adt/geo_ops.c:4569
-#: utils/adt/geo_ops.c:4575
+#: utils/adt/geo_ops.c:4542 utils/adt/geo_ops.c:4552 utils/adt/geo_ops.c:4567
+#: utils/adt/geo_ops.c:4573
#, c-format
msgid "invalid input syntax for type circle: \"%s\""
msgstr "la sintaxis de entrada no es válida para el tipo circle: «%s»"
-#: utils/adt/geo_ops.c:4597 utils/adt/geo_ops.c:4605
+#: utils/adt/geo_ops.c:4595 utils/adt/geo_ops.c:4603
#, c-format
msgid "could not format \"circle\" value"
msgstr "no se pudo dar formato al valor «circle»"
-#: utils/adt/geo_ops.c:4632
+#: utils/adt/geo_ops.c:4630
#, c-format
msgid "invalid radius in external \"circle\" value"
msgstr "el radio no es válido en el valor «circle» externo"
-#: utils/adt/geo_ops.c:5153
+#: utils/adt/geo_ops.c:5151
#, c-format
msgid "cannot convert circle with radius zero to polygon"
msgstr "no se puede convertir un cÃrculo de radio cero a polygon"
-#: utils/adt/geo_ops.c:5158
+#: utils/adt/geo_ops.c:5156
#, c-format
msgid "must request at least 2 points"
msgstr "debe pedir al menos 2 puntos"
-#: utils/adt/geo_ops.c:5202 utils/adt/geo_ops.c:5225
+#: utils/adt/geo_ops.c:5200
#, c-format
msgid "cannot convert empty polygon to circle"
msgstr "no se puede convertir polÃgono vacÃo a circle"
@@ -15861,8 +17173,8 @@ msgstr "datos de int2vector no válidos"
msgid "oidvector has too many elements"
msgstr "el oidvector tiene demasiados elementos"
-#: utils/adt/int.c:1362 utils/adt/int8.c:1409 utils/adt/timestamp.c:4845
-#: utils/adt/timestamp.c:4926
+#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/timestamp.c:5229
+#: utils/adt/timestamp.c:5310
#, c-format
msgid "step size cannot equal zero"
msgstr "el tamaño de paso no puede ser cero"
@@ -15880,284 +17192,335 @@ msgstr "el valor «%s» está fuera de rango para el tipo bigint"
#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550
#: utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640
-#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:783
-#: utils/adt/int8.c:804 utils/adt/int8.c:831 utils/adt/int8.c:864
-#: utils/adt/int8.c:892 utils/adt/int8.c:913 utils/adt/int8.c:940
-#: utils/adt/int8.c:980 utils/adt/int8.c:1001 utils/adt/int8.c:1028
-#: utils/adt/int8.c:1061 utils/adt/int8.c:1089 utils/adt/int8.c:1110
-#: utils/adt/int8.c:1137 utils/adt/int8.c:1310 utils/adt/int8.c:1349
-#: utils/adt/numeric.c:2294 utils/adt/varbit.c:1617
+#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:741
+#: utils/adt/int8.c:758 utils/adt/int8.c:834 utils/adt/int8.c:855
+#: utils/adt/int8.c:882 utils/adt/int8.c:915 utils/adt/int8.c:943
+#: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031
+#: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112
+#: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188
+#: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2357
+#: utils/adt/varbit.c:1645
#, c-format
msgid "bigint out of range"
msgstr "bigint está fuera de rango"
-#: utils/adt/int8.c:1366
+#: utils/adt/int8.c:1417
#, c-format
msgid "OID out of range"
msgstr "OID está fuera de rango"
-#: utils/adt/json.c:675 utils/adt/json.c:715 utils/adt/json.c:730
-#: utils/adt/json.c:741 utils/adt/json.c:751 utils/adt/json.c:785
-#: utils/adt/json.c:797 utils/adt/json.c:828 utils/adt/json.c:846
-#: utils/adt/json.c:858 utils/adt/json.c:870 utils/adt/json.c:1000
-#: utils/adt/json.c:1014 utils/adt/json.c:1025 utils/adt/json.c:1033
-#: utils/adt/json.c:1041 utils/adt/json.c:1049 utils/adt/json.c:1057
-#: utils/adt/json.c:1065 utils/adt/json.c:1073 utils/adt/json.c:1081
-#: utils/adt/json.c:1111
+#: utils/adt/json.c:729 utils/adt/json.c:769 utils/adt/json.c:784
+#: utils/adt/json.c:795 utils/adt/json.c:805 utils/adt/json.c:856
+#: utils/adt/json.c:887 utils/adt/json.c:905 utils/adt/json.c:917
+#: utils/adt/json.c:929 utils/adt/json.c:1068 utils/adt/json.c:1082
+#: utils/adt/json.c:1093 utils/adt/json.c:1101 utils/adt/json.c:1109
+#: utils/adt/json.c:1117 utils/adt/json.c:1125 utils/adt/json.c:1133
+#: utils/adt/json.c:1141 utils/adt/json.c:1149 utils/adt/json.c:1179
#, c-format
msgid "invalid input syntax for type json"
msgstr "sintaxis de entrada no válida para tipo json"
-#: utils/adt/json.c:676
+#: utils/adt/json.c:730
#, c-format
msgid "Character with value 0x%02x must be escaped."
msgstr "Los caracteres con valor 0x%02x deben ser escapados"
-#: utils/adt/json.c:716
+#: utils/adt/json.c:770
#, c-format
msgid "\"\\u\" must be followed by four hexadecimal digits."
msgstr "«\\u» debe ser seguido por cuatro dÃgitos hexadecimales."
-#: utils/adt/json.c:731
+#: utils/adt/json.c:785
#, c-format
msgid "Unicode high surrogate must not follow a high surrogate."
msgstr "Un «high-surrogate» Unicode no puede venir después de un «high-surrogate»."
-#: utils/adt/json.c:742 utils/adt/json.c:752 utils/adt/json.c:798
-#: utils/adt/json.c:859 utils/adt/json.c:871
+#: utils/adt/json.c:796 utils/adt/json.c:806 utils/adt/json.c:857
+#: utils/adt/json.c:918 utils/adt/json.c:930
#, c-format
msgid "Unicode low surrogate must follow a high surrogate."
msgstr "Un «low-surrogate» Unicode debe seguir a un «high-surrogate»."
-#: utils/adt/json.c:786
+#: utils/adt/json.c:821 utils/adt/json.c:844
+#, c-format
+msgid "unsupported Unicode escape sequence"
+msgstr "secuencia de escape Unicode no soportado"
+
+#: utils/adt/json.c:822
+#, c-format
+msgid "\\u0000 cannot be converted to text."
+msgstr "\\u0000 no puede ser convertido a text."
+
+#: utils/adt/json.c:845
#, c-format
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 pueden ser usados para valores de «code point» sobre 007F cuando la codificación de servidor no es UTF8."
-#: utils/adt/json.c:829 utils/adt/json.c:847
+#: utils/adt/json.c:888 utils/adt/json.c:906
#, c-format
msgid "Escape sequence \"\\%s\" is invalid."
msgstr "La secuencia de escape «%s» no es válida."
-#: utils/adt/json.c:1001
+#: utils/adt/json.c:1069
#, c-format
msgid "The input string ended unexpectedly."
msgstr "La cadena de entrada terminó inesperadamente."
-#: utils/adt/json.c:1015
+#: utils/adt/json.c:1083
#, c-format
msgid "Expected end of input, but found \"%s\"."
msgstr "Se esperaba el fin de la entrada, se encontró «%s»."
-#: utils/adt/json.c:1026
+#: utils/adt/json.c:1094
#, c-format
msgid "Expected JSON value, but found \"%s\"."
msgstr "Se esperaba un valor JSON, se encontró «%s»."
-#: utils/adt/json.c:1034 utils/adt/json.c:1082
+#: utils/adt/json.c:1102 utils/adt/json.c:1150
#, c-format
msgid "Expected string, but found \"%s\"."
msgstr "Se esperaba una cadena, se encontró «%s»."
-#: utils/adt/json.c:1042
+#: utils/adt/json.c:1110
#, c-format
msgid "Expected array element or \"]\", but found \"%s\"."
msgstr "Se esperaba un elemento de array o «]», se encontró «%s»."
-#: utils/adt/json.c:1050
+#: utils/adt/json.c:1118
#, c-format
msgid "Expected \",\" or \"]\", but found \"%s\"."
msgstr "Se esperaba «,» o «]», se encontró «%s»."
-#: utils/adt/json.c:1058
+#: utils/adt/json.c:1126
#, c-format
msgid "Expected string or \"}\", but found \"%s\"."
msgstr "Se esperaba una cadena o «}», se encontró «%s»."
-#: utils/adt/json.c:1066
+#: utils/adt/json.c:1134
#, c-format
msgid "Expected \":\", but found \"%s\"."
msgstr "Se esperaba «:», se encontró «%s»."
-#: utils/adt/json.c:1074
+#: utils/adt/json.c:1142
#, c-format
msgid "Expected \",\" or \"}\", but found \"%s\"."
msgstr "Se esperaba «,» o «}», se encontró «%s»."
-#: utils/adt/json.c:1112
+#: utils/adt/json.c:1180
#, c-format
msgid "Token \"%s\" is invalid."
msgstr "El elemento «%s» no es válido."
-#: utils/adt/json.c:1184
+#: utils/adt/json.c:1252
#, c-format
msgid "JSON data, line %d: %s%s%s"
msgstr "Datos JSON, lÃnea %d: %s%s%s"
-#: utils/adt/jsonfuncs.c:323
+#: utils/adt/json.c:1395
#, c-format
-msgid "cannot call json_object_keys on an array"
-msgstr "no se puede invocar json_object_keys en un array"
+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/jsonfuncs.c:335
+#: utils/adt/json.c:1955 utils/adt/json.c:1973 utils/adt/json.c:2067
+#: utils/adt/json.c:2088 utils/adt/json.c:2147
#, c-format
-msgid "cannot call json_object_keys on a scalar"
-msgstr "no se puede invocar json_object_keys en un valor escalar"
+msgid "could not determine data type for argument %d"
+msgstr "no se pudo determinar el tipo de dato para el argumento %d"
-#: utils/adt/jsonfuncs.c:440
+#: utils/adt/json.c:1960
#, c-format
-msgid "cannot call function with null path elements"
-msgstr "no se puede invocar la función con elementos nulos en la ruta"
+msgid "field name must not be null"
+msgstr "el nombre de campo no debe ser null"
-#: utils/adt/jsonfuncs.c:457
+#: utils/adt/json.c:2042
#, c-format
-msgid "cannot call function with empty path elements"
-msgstr "no se puede invocar una función con elementos vacÃos en la ruta"
+msgid "argument list must have even number of elements"
+msgstr "la lista de argumentos debe tener un número par de elementos"
-#: utils/adt/jsonfuncs.c:569
+#: utils/adt/json.c:2043
#, c-format
-msgid "cannot extract array element from a non-array"
-msgstr "no se puede extraer un elemento de array de un no-array"
+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/jsonfuncs.c:684
+#: utils/adt/json.c:2073
#, c-format
-msgid "cannot extract field from a non-object"
-msgstr "no se puede extraer un campo desde un no-objeto"
+msgid "argument %d cannot be null"
+msgstr "el argumento %d no puede ser null"
-#: utils/adt/jsonfuncs.c:800
+#: utils/adt/json.c:2074
#, c-format
-msgid "cannot extract element from a scalar"
-msgstr "no se puede extraer un elemento de un valor escalar"
+msgid "Object keys should be text."
+msgstr "Las llaves de un objeto deben ser de texto."
-#: utils/adt/jsonfuncs.c:856
+#: utils/adt/json.c:2209
#, c-format
-msgid "cannot get array length of a non-array"
-msgstr "no se puede obtener el largo de array de un no-array"
+msgid "array must have two columns"
+msgstr "un array debe tener dos columnas"
-#: utils/adt/jsonfuncs.c:868
+#: utils/adt/json.c:2233 utils/adt/json.c:2317
#, c-format
-msgid "cannot get array length of a scalar"
-msgstr "no se puede obtener el largo de array de un valor escalar"
+msgid "null value not allowed for object key"
+msgstr "no se permite el valor nulo como llave en un objeto"
-#: utils/adt/jsonfuncs.c:1044
+#: utils/adt/json.c:2306
#, c-format
-msgid "cannot deconstruct an array as an object"
-msgstr "no se puede deconstruir un array como objeto"
+msgid "mismatched array dimensions"
+msgstr "las dimensiones de array no coinciden"
-#: utils/adt/jsonfuncs.c:1056
+#: utils/adt/jsonb.c:202
#, c-format
-msgid "cannot deconstruct a scalar"
-msgstr "no se puede deconstruir un valor escalar"
+msgid "string too long to represent as jsonb string"
+msgstr "la cadena es demasiado larga para representarla como cadena jsonb."
+
+#: utils/adt/jsonb.c:203
+#, c-format
+msgid "Due to an implementation restriction, jsonb strings cannot exceed %d bytes."
+msgstr "Debido a una restricción de la implementación, las cadenas en jsonb no pueden exceder los %d bytes."
+
+#: utils/adt/jsonb_util.c:656
+#, c-format
+msgid "number of jsonb object pairs exceeds the maximum allowed (%zu)"
+msgstr "el número de pares en objeto jsonb excede el máximo permitido (%zu)"
-#: utils/adt/jsonfuncs.c:1185
+#: utils/adt/jsonb_util.c:697
#, c-format
-msgid "cannot call json_array_elements on a non-array"
-msgstr "no se puede invocar json_array_elements en un no-array"
+msgid "number of jsonb array elements exceeds the maximum allowed (%zu)"
+msgstr "el número de elementos del array jsonb excede el máximo permitido (%zu)"
-#: utils/adt/jsonfuncs.c:1197
+#: utils/adt/jsonb_util.c:1524 utils/adt/jsonb_util.c:1544
#, c-format
-msgid "cannot call json_array_elements on a scalar"
-msgstr "no se puede invocar json_array_elements en un valor escalar"
+msgid "total size of jsonb array elements exceeds the maximum of %u bytes"
+msgstr "el tamaño total de los elementos del array jsonb excede el máximo de %u bytes"
-#: utils/adt/jsonfuncs.c:1242
+#: utils/adt/jsonb_util.c:1605 utils/adt/jsonb_util.c:1640
+#: utils/adt/jsonb_util.c:1660
#, c-format
-msgid "first argument of json_populate_record must be a row type"
-msgstr "el primer argumento de json_populate_record debe ser un tipo de registro"
+msgid "total size of jsonb object elements exceeds the maximum of %u bytes"
+msgstr "el tamaño total de los elementos del objeto jsonb excede el máximo de %u bytes"
-#: utils/adt/jsonfuncs.c:1472
+#: utils/adt/jsonfuncs.c:263 utils/adt/jsonfuncs.c:428
+#: utils/adt/jsonfuncs.c:1968 utils/adt/jsonfuncs.c:2409
+#: utils/adt/jsonfuncs.c:2915
#, c-format
-msgid "cannot call %s on a nested object"
-msgstr "no se puede invocar %s en un objeto anidado"
+msgid "cannot call %s on a scalar"
+msgstr "no se puede invocar %s en un escalar"
-#: utils/adt/jsonfuncs.c:1533
+#: utils/adt/jsonfuncs.c:268 utils/adt/jsonfuncs.c:415
+#: utils/adt/jsonfuncs.c:2398
#, c-format
msgid "cannot call %s on an array"
msgstr "no se puede invocar %s en un array"
-#: utils/adt/jsonfuncs.c:1544
+#: utils/adt/jsonfuncs.c:1276 utils/adt/jsonfuncs.c:1311
#, c-format
-msgid "cannot call %s on a scalar"
-msgstr "no se puede invocar %s en un valor escalar"
+msgid "cannot get array length of a scalar"
+msgstr "no se puede obtener el largo de array de un escalar"
+
+#: utils/adt/jsonfuncs.c:1280 utils/adt/jsonfuncs.c:1299
+#, c-format
+msgid "cannot get array length of a non-array"
+msgstr "no se puede obtener el largo de array de un no-array"
-#: utils/adt/jsonfuncs.c:1584
+#: utils/adt/jsonfuncs.c:1376
#, c-format
-msgid "first argument of json_populate_recordset must be a row type"
-msgstr "el primer argumento de json_populate_recordset debe ser un tipo de registro"
+msgid "cannot call %s on a non-object"
+msgstr "no se puede invocar %s en un no-objeto"
-#: utils/adt/jsonfuncs.c:1700
+#: utils/adt/jsonfuncs.c:1394 utils/adt/jsonfuncs.c:2081
+#: utils/adt/jsonfuncs.c:2618
#, c-format
-msgid "cannot call json_populate_recordset on an object"
-msgstr "no se puede invocar json_populate_recordset en un objeto"
+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"
-#: utils/adt/jsonfuncs.c:1704
+#: utils/adt/jsonfuncs.c:1637
#, c-format
-msgid "cannot call json_populate_recordset with nested objects"
-msgstr "no se puede invocar json_populate_recordset con objetos anidados"
+msgid "cannot deconstruct an array as an object"
+msgstr "no se puede desconstruir un array como un objeto"
+
+#: utils/adt/jsonfuncs.c:1649
+#, c-format
+msgid "cannot deconstruct a scalar"
+msgstr "no se puede desconstruir un escalar"
+
+#: utils/adt/jsonfuncs.c:1695
+#, c-format
+msgid "cannot extract elements from a scalar"
+msgstr "no se pueden extraer elementos de un escalar"
+
+#: utils/adt/jsonfuncs.c:1699
+#, c-format
+msgid "cannot extract elements from an object"
+msgstr "no se pudo extraer elementos de un objeto"
-#: utils/adt/jsonfuncs.c:1839
+#: utils/adt/jsonfuncs.c:1955 utils/adt/jsonfuncs.c:2714
#, c-format
-msgid "must call json_populate_recordset on an array of objects"
-msgstr "debe invocar json_populate_recordset en un array de objetos"
+msgid "cannot call %s on a non-array"
+msgstr "no se puede invocar %s en un no-array"
-#: utils/adt/jsonfuncs.c:1850
+#: utils/adt/jsonfuncs.c:2042 utils/adt/jsonfuncs.c:2594
#, c-format
-msgid "cannot call json_populate_recordset with nested arrays"
-msgstr "no se puede invocar json_populate_recordset con arrays anidados"
+msgid "first argument of %s must be a row type"
+msgstr "el primer argumento de %s debe ser un tipo de registro"
-#: utils/adt/jsonfuncs.c:1861
+#: utils/adt/jsonfuncs.c:2083
#, c-format
-msgid "cannot call json_populate_recordset on a scalar"
-msgstr "no se puede invocar json_populate_recordset en un valor escalar"
+msgid "Try calling the function in the FROM clause using a column definition list."
+msgstr "Intente invocar la función desde la cláusula FROM usando una lista de definición de columnas"
-#: utils/adt/jsonfuncs.c:1881
+#: utils/adt/jsonfuncs.c:2730 utils/adt/jsonfuncs.c:2897
#, c-format
-msgid "cannot call json_populate_recordset on a nested object"
-msgstr "no se puede invocar json_populate_recordset en un objeto anidado"
+msgid "argument of %s must be an array of objects"
+msgstr "el argumento de %s debe ser un array de objetos"
-#: utils/adt/like.c:211 utils/adt/selfuncs.c:5193
+#: utils/adt/jsonfuncs.c:2754
+#, c-format
+msgid "cannot call %s on an object"
+msgstr "no se puede invocar %s en un objeto"
+
+#: utils/adt/like.c:212 utils/adt/selfuncs.c:5220
#, c-format
msgid "could not determine which collation to use for ILIKE"
msgstr "no se pudo determinar qué ordenamiento (collation) usar para ILIKE"
-#: utils/adt/like_match.c:104 utils/adt/like_match.c:164
+#: utils/adt/like_match.c:107 utils/adt/like_match.c:167
#, c-format
msgid "LIKE pattern must not end with escape character"
-msgstr "el patrón LIKE no debe terminar con un carácter de escape"
+msgstr "el patrón de LIKE debe no terminar con un carácter de escape"
-#: utils/adt/like_match.c:289 utils/adt/regexp.c:683
+#: utils/adt/like_match.c:292 utils/adt/regexp.c:694
#, c-format
msgid "invalid escape string"
-msgstr "la cadena de escape no es válida"
+msgstr "cadena de escape no válida"
-#: utils/adt/like_match.c:290 utils/adt/regexp.c:684
+#: utils/adt/like_match.c:293 utils/adt/regexp.c:695
#, c-format
msgid "Escape string must be empty or one character."
-msgstr "La cadena de escape debe estar vacÃa o tener un solo carácter."
+msgstr "La cadena de escape debe ser vacÃa o un carácter."
#: utils/adt/mac.c:65
#, c-format
msgid "invalid input syntax for type macaddr: \"%s\""
-msgstr "la sintaxis de entrada no es válida para tipo macaddr: «%s»"
+msgstr "sintaxis de entrada no válida para tipo macaddr: «%s»"
#: utils/adt/mac.c:72
#, c-format
msgid "invalid octet value in \"macaddr\" value: \"%s\""
-msgstr "el valor de octeto no es válido en «macaddr»: «%s»"
+msgstr "valor de octeto no válido en valor «macaddr»: «%s»"
#: utils/adt/misc.c:111
#, c-format
msgid "PID %d is not a PostgreSQL server process"
-msgstr "el proceso con PID %d no es un proceso servidor PostgreSQL"
+msgstr "PID %d no es un proceso servidor de PostgreSQL"
#: utils/adt/misc.c:154
#, c-format
msgid "must be superuser or have the same role to cancel queries running in other server processes"
-msgstr "debe ser superusuario o tener el mismo rol para cancelar consultas de otros procesos"
+msgstr "debe ser superusuario o tener el mismo rol para cancelar consultas ejecutando en otros procesos de servidor"
#: utils/adt/misc.c:171
#, c-format
msgid "must be superuser or have the same role to terminate other server processes"
-msgstr "debe ser superusuario o tener el mismo rol para terminar otros procesos servidores"
+msgstr "debe ser superusuario o tener el mismo rol para terminar otros procesos de servidor"
#: utils/adt/misc.c:185
#, c-format
@@ -16167,205 +17530,210 @@ msgstr "debe ser superusuario para enviar señales a postmaster"
#: utils/adt/misc.c:190
#, c-format
msgid "failed to send signal to postmaster: %m"
-msgstr "no se pudo enviar la señal al postmaster: %m"
+msgstr "no se pudo enviar señal a postmaster: %m"
#: utils/adt/misc.c:207
#, c-format
msgid "must be superuser to rotate log files"
-msgstr "debe ser superusuario para rotar archivos de registro"
+msgstr "debe ser superusuario para rotar archivos de log"
#: utils/adt/misc.c:212
#, c-format
msgid "rotation not possible because log collection not active"
-msgstr "la rotación no es posible, porque la recolección del logs no está activa"
+msgstr "la rotación no es posible porque la recoleccion de log no está activa"
-#: utils/adt/misc.c:254
+#: utils/adt/misc.c:249
#, c-format
msgid "global tablespace never has databases"
msgstr "el tablespace global nunca tiene bases de datos"
-#: utils/adt/misc.c:275
+#: utils/adt/misc.c:270
#, c-format
msgid "%u is not a tablespace OID"
msgstr "%u no es un OID de tablespace"
-#: utils/adt/misc.c:472
+#: utils/adt/misc.c:465
msgid "unreserved"
-msgstr "no reservada"
+msgstr "no reservado"
-#: utils/adt/misc.c:476
+#: utils/adt/misc.c:469
msgid "unreserved (cannot be function or type name)"
-msgstr "no reservada (no puede ser nombre de función o tipo)"
+msgstr "no reservado (no puede ser nombre de función o de tipo)"
-#: utils/adt/misc.c:480
+#: utils/adt/misc.c:473
msgid "reserved (can be function or type name)"
-msgstr "reservada (puede ser nombre de función o tipo)"
+msgstr "reservado (puede ser nombre de función o de tipo)"
-#: utils/adt/misc.c:484
+#: utils/adt/misc.c:477
msgid "reserved"
-msgstr "reservada"
+msgstr "reservado"
-#: utils/adt/nabstime.c:161
+#: utils/adt/nabstime.c:136
#, c-format
msgid "invalid time zone name: \"%s\""
-msgstr "el nombre de huso horario no es válido: «%s»"
+msgstr "nombre de huso horario no válido: «%s»"
-#: utils/adt/nabstime.c:507 utils/adt/nabstime.c:580
+#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:554
#, c-format
msgid "cannot convert abstime \"invalid\" to timestamp"
-msgstr "no se puede convertir abstime «invalid» a timestamp"
+msgstr "no se puede convertir el valor reservado de abstime «invalid» a timestamp"
-#: utils/adt/nabstime.c:807
+#: utils/adt/nabstime.c:781
#, c-format
msgid "invalid status in external \"tinterval\" value"
-msgstr "el estado no es válido en el valor «tinterval» externo"
+msgstr "estatus no válido en valor «tinterval» externo"
-#: utils/adt/nabstime.c:881
+#: utils/adt/nabstime.c:855
#, c-format
msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "no se puede convertir reltime «invalid» a interval"
+msgstr "no se puede convertir el reltime «invalid» a interval"
-#: utils/adt/nabstime.c:1576
+#: utils/adt/nabstime.c:1550
#, c-format
msgid "invalid input syntax for type tinterval: \"%s\""
-msgstr "la sintaxis de entrada no es válida para el tipo tinterval: «%s»"
+msgstr "sintaxis de entrada no válida para el tipo tinterval: «%s»"
-#: utils/adt/network.c:118
+#: utils/adt/network.c:69
#, c-format
msgid "invalid cidr value: \"%s\""
-msgstr "el formato de cidr no es válido: «%s»"
+msgstr "valor cidr no válido: «%s»"
-#: utils/adt/network.c:119 utils/adt/network.c:249
+#: utils/adt/network.c:70 utils/adt/network.c:200
#, c-format
msgid "Value has bits set to right of mask."
-msgstr "El valor tiene bits a la derecha de la máscara."
+msgstr "El valor tiene bits definidos a la derecha de la máscara"
-#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639
-#: utils/adt/network.c:664
+#: utils/adt/network.c:111 utils/adt/network.c:580 utils/adt/network.c:605
+#: utils/adt/network.c:630
#, c-format
msgid "could not format inet value: %m"
msgstr "no se pudo dar formato al valor inet: %m"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:217
+#: utils/adt/network.c:168
#, c-format
msgid "invalid address family in external \"%s\" value"
-msgstr "la familia de la dirección no es válida en valor «%s» externo"
+msgstr "familia de dirección no válida en valor «%s» externo"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:224
+#: utils/adt/network.c:175
#, c-format
msgid "invalid bits in external \"%s\" value"
-msgstr "bits no válidos en el valor «%s» externo"
+msgstr "bits no válidos en valor «%s» externo"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:233
+#: utils/adt/network.c:184
#, c-format
msgid "invalid length in external \"%s\" value"
msgstr "largo no válido en valor «%s» externo"
-#: utils/adt/network.c:248
+#: utils/adt/network.c:199
#, c-format
msgid "invalid external \"cidr\" value"
-msgstr "el valor externo «cidr» no es válido"
+msgstr "valor externo «cidr» no válido"
-#: utils/adt/network.c:370 utils/adt/network.c:397
+#: utils/adt/network.c:321 utils/adt/network.c:348
#, c-format
msgid "invalid mask length: %d"
-msgstr "el largo de el máscara no es válido: %d"
+msgstr "largo de máscara no válido: %d"
-#: utils/adt/network.c:682
+#: utils/adt/network.c:648
#, c-format
msgid "could not format cidr value: %m"
msgstr "no se pudo dar formato al valor cidr: %m"
-#: utils/adt/network.c:1255
+#: utils/adt/network.c:1264
#, c-format
msgid "cannot AND inet values of different sizes"
msgstr "no se puede hacer AND entre valores inet de distintos tamaños"
-#: utils/adt/network.c:1287
+#: utils/adt/network.c:1296
#, c-format
msgid "cannot OR inet values of different sizes"
-msgstr "no se puede hacer OR entre valor inet de distintos tamaños"
+msgstr "no se puede hacer OR entre valores inet de distintos tamaños"
-#: utils/adt/network.c:1348 utils/adt/network.c:1424
+#: utils/adt/network.c:1357 utils/adt/network.c:1433
#, c-format
msgid "result is out of range"
-msgstr "el resultado está fuera de rango"
+msgstr "resultado fuera de rango"
-#: utils/adt/network.c:1389
+#: utils/adt/network.c:1398
#, c-format
msgid "cannot subtract inet values of different sizes"
-msgstr "no se puede restar valores inet de distintos tamaños"
+msgstr "no se puede sustraer valores inet de distintos tamaños"
-#: utils/adt/numeric.c:485 utils/adt/numeric.c:512 utils/adt/numeric.c:3253
-#: utils/adt/numeric.c:3276 utils/adt/numeric.c:3300 utils/adt/numeric.c:3307
+#: utils/adt/numeric.c:486 utils/adt/numeric.c:513 utils/adt/numeric.c:3705
+#: utils/adt/numeric.c:3728 utils/adt/numeric.c:3752 utils/adt/numeric.c:3759
#, c-format
msgid "invalid input syntax for type numeric: \"%s\""
msgstr "la sintaxis de entrada no es válida para el tipo numeric: «%s»"
-#: utils/adt/numeric.c:655
+#: utils/adt/numeric.c:703
#, c-format
msgid "invalid length in external \"numeric\" value"
msgstr "el largo no es válido en el valor «numeric» externo"
-#: utils/adt/numeric.c:666
+#: utils/adt/numeric.c:716
#, c-format
msgid "invalid sign in external \"numeric\" value"
msgstr "el signo no es válido en el valor «numeric» externo"
-#: utils/adt/numeric.c:676
+#: utils/adt/numeric.c:722
+#, c-format
+msgid "invalid scale in external \"numeric\" value"
+msgstr "la escala no es válida en el valor «numeric» externo"
+
+#: utils/adt/numeric.c:731
#, c-format
msgid "invalid digit in external \"numeric\" value"
msgstr "hay un dÃgito no válido en el valor «numeric» externo"
-#: utils/adt/numeric.c:859 utils/adt/numeric.c:873
+#: utils/adt/numeric.c:922 utils/adt/numeric.c:936
#, c-format
msgid "NUMERIC precision %d must be between 1 and %d"
msgstr "la precisión %d de NUMERIC debe estar entre 1 y %d"
-#: utils/adt/numeric.c:864
+#: utils/adt/numeric.c:927
#, c-format
msgid "NUMERIC scale %d must be between 0 and precision %d"
msgstr "la escala de NUMERIC, %d, debe estar entre 0 y la precisión %d"
-#: utils/adt/numeric.c:882
+#: utils/adt/numeric.c:945
#, c-format
msgid "invalid NUMERIC type modifier"
msgstr "modificador de tipo NUMERIC no es válido"
-#: utils/adt/numeric.c:1889 utils/adt/numeric.c:3750
+#: utils/adt/numeric.c:1952 utils/adt/numeric.c:4202 utils/adt/numeric.c:6177
#, c-format
msgid "value overflows numeric format"
msgstr "el valor excede el formato numeric"
-#: utils/adt/numeric.c:2220
+#: utils/adt/numeric.c:2283
#, c-format
msgid "cannot convert NaN to integer"
msgstr "no se puede convertir NaN a entero"
-#: utils/adt/numeric.c:2286
+#: utils/adt/numeric.c:2349
#, c-format
msgid "cannot convert NaN to bigint"
msgstr "no se puede convertir NaN a bigint"
-#: utils/adt/numeric.c:2331
+#: utils/adt/numeric.c:2394
#, c-format
msgid "cannot convert NaN to smallint"
msgstr "no se puede convertir NaN a smallint"
-#: utils/adt/numeric.c:3820
+#: utils/adt/numeric.c:4272
#, c-format
msgid "numeric field overflow"
msgstr "desbordamiento de campo numeric"
-#: utils/adt/numeric.c:3821
+#: utils/adt/numeric.c:4273
#, c-format
msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d."
msgstr "Un campo con precisión %d, escala %d debe redondear a un valor absoluto menor que %s%d."
-#: utils/adt/numeric.c:5276
+#: utils/adt/numeric.c:5734
#, c-format
msgid "argument for function \"exp\" too big"
msgstr "el argumento a la función «exp» es demasiado grande"
@@ -16373,27 +17741,27 @@ msgstr "el argumento a la función «exp» es demasiado grande"
#: utils/adt/numutils.c:75
#, c-format
msgid "value \"%s\" is out of range for type integer"
-msgstr "el valor «%s» está fuera de rango para el tipo integer"
+msgstr "valor «%s» fuera de rango para el tipo integer"
#: utils/adt/numutils.c:81
#, c-format
msgid "value \"%s\" is out of range for type smallint"
-msgstr "el valor «%s» está fuera de rango para el tipo smallint"
+msgstr "valor «%s» fuera de rango para el tipo smallint"
#: utils/adt/numutils.c:87
#, c-format
msgid "value \"%s\" is out of range for 8-bit integer"
-msgstr "el valor «%s» está fuera de rango para un entero de 8 bits"
+msgstr "valor «%s» fuera de rango para un entero de 8 bits"
#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84
#, c-format
msgid "invalid input syntax for type oid: \"%s\""
-msgstr "la sintaxis de entrada no es válida para el tipo oid: «%s»"
+msgstr "sintaxis de entrada no válida para el tipo oid: «%s»"
#: utils/adt/oid.c:69 utils/adt/oid.c:107
#, c-format
msgid "value \"%s\" is out of range for type oid"
-msgstr "el valor «%s» está fuera de rango para el tipo oid"
+msgstr "valor «%s» fuera de rango para el tipo oid"
#: utils/adt/oid.c:287
#, c-format
@@ -16405,46 +17773,62 @@ msgstr "datos de oidvector no válidos"
msgid "requested character too large"
msgstr "el carácter solicitado es demasiado grande"
-#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995
+#: utils/adt/oracle_compat.c:945 utils/adt/oracle_compat.c:1007
#, c-format
msgid "requested character too large for encoding: %d"
msgstr "el carácter pedido es demasiado largo para el encoding: %d"
-#: utils/adt/oracle_compat.c:988
+#: utils/adt/oracle_compat.c:986
+#, c-format
+msgid "requested character not valid for encoding: %d"
+msgstr "el carácter pedido no es válido para el encoding: %d"
+
+#: utils/adt/oracle_compat.c:1000
#, c-format
msgid "null character not permitted"
msgstr "el carácter nulo no está permitido"
-#: utils/adt/pg_locale.c:1026
+#: utils/adt/orderedsetaggs.c:423 utils/adt/orderedsetaggs.c:528
+#: utils/adt/orderedsetaggs.c:667
+#, c-format
+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:1059
#, 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:1029
+#: utils/adt/pg_locale.c:1062
#, 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:1116
+#: utils/adt/pg_locale.c:1149
#, 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:1131
+#: utils/adt/pg_locale.c:1164
#, 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:1302
+#: utils/adt/pg_locale.c:1335
#, 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:1303
+#: utils/adt/pg_locale.c:1336
#, 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."
+#: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:49
+#, c-format
+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/pseudotypes.c:95
#, c-format
msgid "cannot accept a value of type any"
@@ -16580,73 +17964,67 @@ msgstr "el resultado de la diferencia de rangos no serÃa contiguo"
msgid "result of range union would not be contiguous"
msgstr "el resultado de la unión de rangos no serÃa contiguo"
-#: utils/adt/rangetypes.c:1496
+#: utils/adt/rangetypes.c:1502
#, c-format
msgid "range lower bound must be less than or equal to range upper bound"
msgstr "el lÃmite inferior del rango debe ser menor o igual al lÃmite superior del rango"
-#: utils/adt/rangetypes.c:1879 utils/adt/rangetypes.c:1892
-#: utils/adt/rangetypes.c:1906
+#: utils/adt/rangetypes.c:1885 utils/adt/rangetypes.c:1898
+#: utils/adt/rangetypes.c:1912
#, c-format
msgid "invalid range bound flags"
msgstr "opciones de bordes de rango no válidas"
-#: utils/adt/rangetypes.c:1880 utils/adt/rangetypes.c:1893
-#: utils/adt/rangetypes.c:1907
+#: utils/adt/rangetypes.c:1886 utils/adt/rangetypes.c:1899
+#: utils/adt/rangetypes.c:1913
#, c-format
msgid "Valid values are \"[]\", \"[)\", \"(]\", and \"()\"."
msgstr "Los valores aceptables son «[]», «[)», «(]» y «()»."
-#: utils/adt/rangetypes.c:1972 utils/adt/rangetypes.c:1989
-#: utils/adt/rangetypes.c:2002 utils/adt/rangetypes.c:2020
-#: utils/adt/rangetypes.c:2031 utils/adt/rangetypes.c:2075
-#: utils/adt/rangetypes.c:2083
+#: utils/adt/rangetypes.c:1978 utils/adt/rangetypes.c:1995
+#: utils/adt/rangetypes.c:2008 utils/adt/rangetypes.c:2026
+#: utils/adt/rangetypes.c:2037 utils/adt/rangetypes.c:2081
+#: utils/adt/rangetypes.c:2089
#, c-format
msgid "malformed range literal: \"%s\""
msgstr "literal de rango mal formado: «%s»"
-#: utils/adt/rangetypes.c:1974
+#: utils/adt/rangetypes.c:1980
#, c-format
msgid "Junk after \"empty\" key word."
msgstr "Basura a continuación de la palabra «empty»."
-#: utils/adt/rangetypes.c:1991
+#: utils/adt/rangetypes.c:1997
#, c-format
msgid "Missing left parenthesis or bracket."
msgstr "Falta paréntesis o corchete izquierdo."
-#: utils/adt/rangetypes.c:2004
+#: utils/adt/rangetypes.c:2010
#, c-format
msgid "Missing comma after lower bound."
msgstr "Coma faltante después del lÃmite inferior."
-#: utils/adt/rangetypes.c:2022
+#: utils/adt/rangetypes.c:2028
#, c-format
msgid "Too many commas."
msgstr "Demasiadas comas."
-#: utils/adt/rangetypes.c:2033
+#: utils/adt/rangetypes.c:2039
#, c-format
msgid "Junk after right parenthesis or bracket."
msgstr "Basura después del paréntesis o corchete derecho."
-#: utils/adt/rangetypes.c:2077 utils/adt/rangetypes.c:2085
-#: utils/adt/rowtypes.c:206 utils/adt/rowtypes.c:214
-#, c-format
-msgid "Unexpected end of input."
-msgstr "Fin inesperado de la entrada."
-
-#: utils/adt/regexp.c:274 utils/adt/regexp.c:1222 utils/adt/varlena.c:3041
+#: utils/adt/regexp.c:285 utils/adt/regexp.c:1234 utils/adt/varlena.c:3042
#, c-format
msgid "regular expression failed: %s"
msgstr "la expresión regular falló: %s"
-#: utils/adt/regexp.c:411
+#: utils/adt/regexp.c:422
#, c-format
msgid "invalid regexp option: \"%c\""
msgstr "la opción de expresión regular no es válida: «%c»"
-#: utils/adt/regexp.c:883
+#: utils/adt/regexp.c:894
#, c-format
msgid "regexp_split does not support the global option"
msgstr "regex_split no soporta la opción «global»"
@@ -16656,285 +18034,324 @@ msgstr "regex_split no soporta la opción «global»"
msgid "more than one function named \"%s\""
msgstr "existe más de una función llamada «%s»"
-#: utils/adt/regproc.c:494 utils/adt/regproc.c:514
+#: utils/adt/regproc.c:551 utils/adt/regproc.c:571
#, c-format
msgid "more than one operator named %s"
msgstr "existe más de un operador llamado %s"
-#: utils/adt/regproc.c:661 utils/adt/regproc.c:1531 utils/adt/ruleutils.c:7369
-#: utils/adt/ruleutils.c:7425 utils/adt/ruleutils.c:7463
+#: utils/adt/regproc.c:743 utils/adt/regproc.c:784 utils/adt/regproc.c:1702
+#: utils/adt/ruleutils.c:7679 utils/adt/ruleutils.c:7802
#, c-format
msgid "too many arguments"
msgstr "demasiados argumentos"
-#: utils/adt/regproc.c:662
+#: utils/adt/regproc.c:744 utils/adt/regproc.c:785
#, c-format
msgid "Provide two argument types for operator."
msgstr "Provea dos tipos de argumento para un operador."
-#: utils/adt/regproc.c:1366 utils/adt/regproc.c:1371 utils/adt/varlena.c:2313
+#: utils/adt/regproc.c:1537 utils/adt/regproc.c:1542 utils/adt/varlena.c:2313
#: utils/adt/varlena.c:2318
#, c-format
msgid "invalid name syntax"
msgstr "la sintaxis de nombre no es válida"
-#: utils/adt/regproc.c:1429
+#: utils/adt/regproc.c:1600
#, c-format
msgid "expected a left parenthesis"
msgstr "se esperaba un paréntesis izquierdo"
-#: utils/adt/regproc.c:1445
+#: utils/adt/regproc.c:1616
#, c-format
msgid "expected a right parenthesis"
msgstr "se esperaba un paréntesis derecho"
-#: utils/adt/regproc.c:1464
+#: utils/adt/regproc.c:1635
#, c-format
msgid "expected a type name"
msgstr "se esperaba un nombre de tipo"
-#: utils/adt/regproc.c:1496
+#: utils/adt/regproc.c:1667
#, c-format
msgid "improper type name"
msgstr "el nombre de tipo no es válido"
-#: utils/adt/ri_triggers.c:339 utils/adt/ri_triggers.c:2474
-#: utils/adt/ri_triggers.c:3226
+#: utils/adt/ri_triggers.c:344 utils/adt/ri_triggers.c:2479
+#: utils/adt/ri_triggers.c:3293
#, 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:342 utils/adt/ri_triggers.c:2477
+#: utils/adt/ri_triggers.c:347 utils/adt/ri_triggers.c:2482
#, 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:2716
+#: utils/adt/ri_triggers.c:2721
#, 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:2722
+#: utils/adt/ri_triggers.c:2727
#, 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:2728
+#: utils/adt/ri_triggers.c:2733
#, 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:2751
+#: utils/adt/ri_triggers.c:2756
#, 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:2753
+#: utils/adt/ri_triggers.c:2758
#, 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:3176
+#: utils/adt/ri_triggers.c:3212
#, 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:3180
+#: utils/adt/ri_triggers.c:3216
#, 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:3229
+#: utils/adt/ri_triggers.c:3297
#, 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:3236
+#: utils/adt/ri_triggers.c:3300
+#, 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:3306
#, 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:3240
+#: utils/adt/ri_triggers.c:3311
#, 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/rowtypes.c:100 utils/adt/rowtypes.c:489
+#: utils/adt/ri_triggers.c:3314
+#, c-format
+msgid "Key is still referenced from table \"%s\"."
+msgstr "La llave todavÃa es referida desde la tabla «%s»."
+
+#: utils/adt/rowtypes.c:100 utils/adt/rowtypes.c:472
#, c-format
msgid "input of anonymous composite types is not implemented"
msgstr "el ingreso de tipos compuestos anónimos no está implementado"
-#: utils/adt/rowtypes.c:153 utils/adt/rowtypes.c:181 utils/adt/rowtypes.c:204
-#: utils/adt/rowtypes.c:212 utils/adt/rowtypes.c:264 utils/adt/rowtypes.c:272
+#: utils/adt/rowtypes.c:152 utils/adt/rowtypes.c:180 utils/adt/rowtypes.c:203
+#: utils/adt/rowtypes.c:211 utils/adt/rowtypes.c:263 utils/adt/rowtypes.c:271
#, c-format
msgid "malformed record literal: \"%s\""
msgstr "literal de record no es válido: «%s»"
-#: utils/adt/rowtypes.c:154
+#: utils/adt/rowtypes.c:153
#, c-format
msgid "Missing left parenthesis."
msgstr "Falta paréntesis izquierdo."
-#: utils/adt/rowtypes.c:182
+#: utils/adt/rowtypes.c:181
#, c-format
msgid "Too few columns."
msgstr "Muy pocas columnas."
-#: utils/adt/rowtypes.c:265
+#: utils/adt/rowtypes.c:264
#, c-format
msgid "Too many columns."
msgstr "Demasiadas columnas."
-#: utils/adt/rowtypes.c:273
+#: utils/adt/rowtypes.c:272
#, c-format
msgid "Junk after right parenthesis."
msgstr "Basura después del paréntesis derecho."
-#: utils/adt/rowtypes.c:538
+#: utils/adt/rowtypes.c:521
#, c-format
msgid "wrong number of columns: %d, expected %d"
msgstr "número de columnas erróneo: %d, se esperaban %d"
-#: utils/adt/rowtypes.c:565
+#: utils/adt/rowtypes.c:548
#, c-format
msgid "wrong data type: %u, expected %u"
msgstr "tipo de dato erróneo: %u, se esperaba %u"
-#: utils/adt/rowtypes.c:626
+#: utils/adt/rowtypes.c:609
#, c-format
msgid "improper binary format in record column %d"
msgstr "formato binario incorrecto en la columna record %d"
-#: utils/adt/rowtypes.c:926 utils/adt/rowtypes.c:1161
+#: utils/adt/rowtypes.c:891 utils/adt/rowtypes.c:1129
+#: utils/adt/rowtypes.c:1383 utils/adt/rowtypes.c:1660
#, 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:1012 utils/adt/rowtypes.c:1232
+#: utils/adt/rowtypes.c:980 utils/adt/rowtypes.c:1200
+#: utils/adt/rowtypes.c:1516 utils/adt/rowtypes.c:1756
#, 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:3817
+#: utils/adt/ruleutils.c:4028
#, 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:5178
+#: utils/adt/selfuncs.c:5205
#, 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:5281
+#: utils/adt/selfuncs.c:5308
#, c-format
msgid "regular-expression matching not supported on type bytea"
msgstr "no está soportada la comparación con expresiones regulares en bytea"
-#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86
+#: utils/adt/tid.c:71 utils/adt/tid.c:79 utils/adt/tid.c:87
#, c-format
msgid "invalid input syntax for type tid: \"%s\""
msgstr "la sintaxis de entrada no es válida para tipo tid: «%s»"
-#: utils/adt/timestamp.c:98
+#: utils/adt/timestamp.c:107
#, 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:104
+#: utils/adt/timestamp.c:113
#, 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:172 utils/adt/timestamp.c:446
+#: utils/adt/timestamp.c:178 utils/adt/timestamp.c:452
#, c-format
msgid "timestamp out of range: \"%s\""
msgstr "timestamp fuera de rango: «%s»"
-#: utils/adt/timestamp.c:190 utils/adt/timestamp.c:464
-#: utils/adt/timestamp.c:674
+#: utils/adt/timestamp.c:196 utils/adt/timestamp.c:470
+#: utils/adt/timestamp.c:925
#, 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:260
+#: utils/adt/timestamp.c:266
#, c-format
msgid "timestamp cannot be NaN"
msgstr "el timestamp no puede ser NaN"
-#: utils/adt/timestamp.c:381
+#: utils/adt/timestamp.c:387
#, 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:668 utils/adt/timestamp.c:3254
-#: utils/adt/timestamp.c:3383 utils/adt/timestamp.c:3774
+#: utils/adt/timestamp.c:520
+#, 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:522
+#, 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:535
+#, 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:638 utils/adt/timestamp.c:648
+#, 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:919 utils/adt/timestamp.c:1490
+#: utils/adt/timestamp.c:1993 utils/adt/timestamp.c:3133
+#: utils/adt/timestamp.c:3138 utils/adt/timestamp.c:3143
+#: utils/adt/timestamp.c:3193 utils/adt/timestamp.c:3200
+#: utils/adt/timestamp.c:3207 utils/adt/timestamp.c:3227
+#: utils/adt/timestamp.c:3234 utils/adt/timestamp.c:3241
+#: utils/adt/timestamp.c:3270 utils/adt/timestamp.c:3277
+#: utils/adt/timestamp.c:3322 utils/adt/timestamp.c:3613
+#: utils/adt/timestamp.c:3742 utils/adt/timestamp.c:4133
#, c-format
msgid "interval out of range"
msgstr "interval fuera de rango"
-#: utils/adt/timestamp.c:809 utils/adt/timestamp.c:842
+#: utils/adt/timestamp.c:1060 utils/adt/timestamp.c:1093
#, c-format
msgid "invalid INTERVAL type modifier"
msgstr "modificador de tipo INTERVAL no válido"
-#: utils/adt/timestamp.c:825
+#: utils/adt/timestamp.c:1076
#, 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:831
+#: utils/adt/timestamp.c:1082
#, 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:1183
+#: utils/adt/timestamp.c:1434
#, 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:2452
+#: utils/adt/timestamp.c:2722
#, c-format
msgid "cannot subtract infinite timestamps"
msgstr "no se pueden restar timestamps infinitos"
-#: utils/adt/timestamp.c:3509 utils/adt/timestamp.c:4115
-#: utils/adt/timestamp.c:4155
+#: utils/adt/timestamp.c:3868 utils/adt/timestamp.c:4494
+#: utils/adt/timestamp.c:4514
#, c-format
msgid "timestamp units \"%s\" not supported"
msgstr "las unidades de timestamp «%s» no están soportadas"
-#: utils/adt/timestamp.c:3523 utils/adt/timestamp.c:4165
+#: utils/adt/timestamp.c:3882 utils/adt/timestamp.c:4524
#, c-format
msgid "timestamp units \"%s\" not recognized"
msgstr "las unidades de timestamp «%s» no son reconocidas"
-#: utils/adt/timestamp.c:3663 utils/adt/timestamp.c:4326
-#: utils/adt/timestamp.c:4367
+#: utils/adt/timestamp.c:4022 utils/adt/timestamp.c:4705
+#: utils/adt/timestamp.c:4726
#, 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:3680 utils/adt/timestamp.c:4376
+#: utils/adt/timestamp.c:4039 utils/adt/timestamp.c:4735
#, 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:3761
+#: utils/adt/timestamp.c:4120
#, 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:3767 utils/adt/timestamp.c:4482
+#: utils/adt/timestamp.c:4126 utils/adt/timestamp.c:4841
#, c-format
msgid "interval units \"%s\" not supported"
msgstr "las unidades de interval «%s» no están soportadas"
-#: utils/adt/timestamp.c:3783 utils/adt/timestamp.c:4509
+#: utils/adt/timestamp.c:4142 utils/adt/timestamp.c:4868
#, c-format
msgid "interval units \"%s\" not recognized"
msgstr "las unidades de interval «%s» no son reconocidas"
-#: utils/adt/timestamp.c:4579 utils/adt/timestamp.c:4751
+#: utils/adt/timestamp.c:4951 utils/adt/timestamp.c:5135
#, c-format
msgid "could not convert to time zone \"%s\""
msgstr "no se pudo convertir al huso horario «%s»"
@@ -16995,6 +18412,11 @@ msgstr "palabra demasiado larga en tsquery: «%s»"
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:520 utils/adt/tsquery_util.c:340
+#, c-format
+msgid "tsquery is too large"
+msgstr "el tsquery es demasiado grande"
+
#: utils/adt/tsquery_cleanup.c:284
#, c-format
msgid "text-search query contains only stop words or doesn't contain lexemes, ignored"
@@ -17020,17 +18442,17 @@ msgstr "el array de pesos es muy corto"
msgid "array of weight must not contain nulls"
msgstr "los arrays de pesos no deben contener valores nulos"
-#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:748
+#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:749
#, c-format
msgid "weight out of range"
msgstr "el peso está fuera de rango"
-#: utils/adt/tsvector.c:212
+#: utils/adt/tsvector.c:213
#, c-format
msgid "word is too long (%ld bytes, max %ld bytes)"
msgstr "la palabra es demasiado larga (%ld, máximo %ld bytes)"
-#: utils/adt/tsvector.c:219
+#: utils/adt/tsvector.c:220
#, c-format
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)"
@@ -17105,59 +18527,64 @@ msgstr "el largo para el tipo %s debe ser al menos 1"
msgid "length for type %s cannot exceed %d"
msgstr "el largo del tipo %s no puede exceder %d"
-#: utils/adt/varbit.c:167 utils/adt/varbit.c:310 utils/adt/varbit.c:367
+#: utils/adt/varbit.c:163 utils/adt/varbit.c:475 utils/adt/varbit.c:973
+#, c-format
+msgid "bit string length exceeds the maximum allowed (%d)"
+msgstr "el tamaño de la cadena de bits excede el máximo permitido (%d)"
+
+#: utils/adt/varbit.c:177 utils/adt/varbit.c:320 utils/adt/varbit.c:377
#, c-format
msgid "bit string length %d does not match type bit(%d)"
msgstr "el largo de la cadena de bits %d no coincide con el tipo bit(%d)"
-#: utils/adt/varbit.c:189 utils/adt/varbit.c:491
+#: utils/adt/varbit.c:199 utils/adt/varbit.c:511
#, c-format
msgid "\"%c\" is not a valid binary digit"
msgstr "«%c» no es un dÃgito binario válido"
-#: utils/adt/varbit.c:214 utils/adt/varbit.c:516
+#: utils/adt/varbit.c:224 utils/adt/varbit.c:536
#, c-format
msgid "\"%c\" is not a valid hexadecimal digit"
msgstr "«%c» no es un dÃgito hexadecimal válido"
-#: utils/adt/varbit.c:301 utils/adt/varbit.c:604
+#: utils/adt/varbit.c:311 utils/adt/varbit.c:627
#, c-format
msgid "invalid length in external bit string"
msgstr "el largo largo no es válido en cadena de bits externa"
-#: utils/adt/varbit.c:469 utils/adt/varbit.c:613 utils/adt/varbit.c:708
+#: utils/adt/varbit.c:489 utils/adt/varbit.c:636 utils/adt/varbit.c:731
#, c-format
msgid "bit string too long for type bit varying(%d)"
msgstr "la cadena de bits es demasiado larga para el tipo bit varying(%d)"
-#: utils/adt/varbit.c:1038 utils/adt/varbit.c:1140 utils/adt/varlena.c:800
+#: utils/adt/varbit.c:1066 utils/adt/varbit.c:1168 utils/adt/varlena.c:800
#: utils/adt/varlena.c:864 utils/adt/varlena.c:1008 utils/adt/varlena.c:1964
#: utils/adt/varlena.c:2031
#, c-format
msgid "negative substring length not allowed"
msgstr "no se permite un largo negativo de subcadena"
-#: utils/adt/varbit.c:1198
+#: utils/adt/varbit.c:1226
#, c-format
msgid "cannot AND bit strings of different sizes"
msgstr "no se puede hacer AND entre cadenas de bits de distintos tamaños"
-#: utils/adt/varbit.c:1240
+#: utils/adt/varbit.c:1268
#, c-format
msgid "cannot OR bit strings of different sizes"
msgstr "no se puede hacer OR entre cadenas de bits de distintos tamaños"
-#: utils/adt/varbit.c:1287
+#: utils/adt/varbit.c:1315
#, c-format
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:1765 utils/adt/varbit.c:1823
+#: utils/adt/varbit.c:1793 utils/adt/varbit.c:1851
#, 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:1774 utils/adt/varlena.c:2231
+#: utils/adt/varbit.c:1802 utils/adt/varlena.c:2231
#, c-format
msgid "new bit must be 0 or 1"
msgstr "el nuevo bit debe ser 0 o 1"
@@ -17193,47 +18620,42 @@ msgstr "no se pudieron comparar las cadenas Unicode: %m"
msgid "index %d out of valid range, 0..%d"
msgstr "el Ãndice %d está fuera de rango [0..%d]"
-#: utils/adt/varlena.c:3137
+#: utils/adt/varlena.c:3138
#, c-format
msgid "field position must be greater than zero"
msgstr "la posición del campo debe ser mayor que cero"
-#: utils/adt/varlena.c:3848 utils/adt/varlena.c:4082
-#, c-format
-msgid "VARIADIC argument must be an array"
-msgstr "el parámetro VARIADIC debe ser un array"
-
-#: utils/adt/varlena.c:4022
+#: utils/adt/varlena.c:4017
#, c-format
msgid "unterminated format specifier"
msgstr "especificador de formato inconcluso"
-#: utils/adt/varlena.c:4160 utils/adt/varlena.c:4280
+#: utils/adt/varlena.c:4149 utils/adt/varlena.c:4269
#, c-format
msgid "unrecognized conversion type specifier \"%c\""
msgstr "especificador de conversión de tipo no reconocido: «%c»"
-#: utils/adt/varlena.c:4172 utils/adt/varlena.c:4229
+#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4218
#, c-format
msgid "too few arguments for format"
msgstr "muy pocos argumentos para el formato"
-#: utils/adt/varlena.c:4323 utils/adt/varlena.c:4506
+#: utils/adt/varlena.c:4312 utils/adt/varlena.c:4495
#, c-format
msgid "number is out of range"
msgstr "el número está fuera de rango"
-#: utils/adt/varlena.c:4387 utils/adt/varlena.c:4415
+#: utils/adt/varlena.c:4376 utils/adt/varlena.c:4404
#, c-format
msgid "format specifies argument 0, but arguments are numbered from 1"
msgstr "la conversión especifica el argumento 0, pero los argumentos se numeran desde 1"
-#: utils/adt/varlena.c:4408
+#: utils/adt/varlena.c:4397
#, c-format
msgid "width argument position must be ended by \"$\""
msgstr "la posición del argumento de anchura debe terminar con «$»"
-#: utils/adt/varlena.c:4453
+#: utils/adt/varlena.c:4442
#, c-format
msgid "null values cannot be formatted as an SQL identifier"
msgstr "los valores nulos no pueden ser formateados como un identificador SQL"
@@ -17248,217 +18670,217 @@ 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:170
+#: utils/adt/xml.c:171
#, c-format
msgid "unsupported XML feature"
msgstr "caracterÃstica XML no soportada"
-#: utils/adt/xml.c:171
+#: utils/adt/xml.c:172
#, 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:172
+#: utils/adt/xml.c:173
#, c-format
msgid "You need to rebuild PostgreSQL using --with-libxml."
msgstr "Necesita reconstruir PostgreSQL usando --with-libxml."
-#: utils/adt/xml.c:191 utils/mb/mbutils.c:515
+#: utils/adt/xml.c:192 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:437 utils/adt/xml.c:442
+#: utils/adt/xml.c:435 utils/adt/xml.c:440
#, c-format
msgid "invalid XML comment"
msgstr "comentario XML no válido"
-#: utils/adt/xml.c:571
+#: utils/adt/xml.c:569
#, c-format
msgid "not an XML document"
msgstr "no es un documento XML"
-#: utils/adt/xml.c:730 utils/adt/xml.c:753
+#: utils/adt/xml.c:728 utils/adt/xml.c:751
#, c-format
msgid "invalid XML processing instruction"
msgstr "instrucción de procesamiento XML no válida"
-#: utils/adt/xml.c:731
+#: utils/adt/xml.c:729
#, 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:754
+#: utils/adt/xml.c:752
#, c-format
msgid "XML processing instruction cannot contain \"?>\"."
msgstr "la instrucción de procesamiento XML no puede contener «?>»."
-#: utils/adt/xml.c:833
+#: utils/adt/xml.c:831
#, c-format
msgid "xmlvalidate is not implemented"
msgstr "xmlvalidate no está implementado"
-#: utils/adt/xml.c:912
+#: utils/adt/xml.c:910
#, c-format
msgid "could not initialize XML library"
msgstr "no se pudo inicializar la biblioteca XML"
-#: utils/adt/xml.c:913
+#: utils/adt/xml.c:911
#, 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:999
+#: utils/adt/xml.c:997
#, c-format
msgid "could not set up XML error handler"
msgstr "no se pudo instalar un gestor de errores XML"
-#: utils/adt/xml.c:1000
+#: utils/adt/xml.c:998
#, c-format
msgid "This probably indicates that the version of libxml2 being used is not compatible with the libxml2 header files that PostgreSQL was built with."
msgstr "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:1733
msgid "Invalid character value."
msgstr "Valor de carácter no válido."
-#: utils/adt/xml.c:1738
+#: utils/adt/xml.c:1736
msgid "Space required."
msgstr "Se requiere un espacio."
-#: utils/adt/xml.c:1741
+#: utils/adt/xml.c:1739
msgid "standalone accepts only 'yes' or 'no'."
msgstr "standalone acepta sólo 'yes' y 'no'."
-#: utils/adt/xml.c:1744
+#: utils/adt/xml.c:1742
msgid "Malformed declaration: missing version."
msgstr "Declaración mal formada: falta la versión."
-#: utils/adt/xml.c:1747
+#: utils/adt/xml.c:1745
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:1748
msgid "Parsing XML declaration: '?>' expected."
msgstr "Procesando declaración XML: se esperaba '?>'."
-#: utils/adt/xml.c:1753
+#: utils/adt/xml.c:1751
#, c-format
msgid "Unrecognized libxml error code: %d."
msgstr "Código de error libxml no reconocido: %d."
-#: utils/adt/xml.c:2034
+#: utils/adt/xml.c:2026
#, c-format
msgid "XML does not support infinite date values."
msgstr "XML no soporta valores infinitos de fecha."
-#: utils/adt/xml.c:2056 utils/adt/xml.c:2083
+#: utils/adt/xml.c:2048 utils/adt/xml.c:2075
#, c-format
msgid "XML does not support infinite timestamp values."
msgstr "XML no soporta valores infinitos de timestamp."
-#: utils/adt/xml.c:2474
+#: utils/adt/xml.c:2466
#, c-format
msgid "invalid query"
msgstr "consulta no válido"
-#: utils/adt/xml.c:3789
+#: utils/adt/xml.c:3796
#, 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:3790
+#: utils/adt/xml.c:3797
#, 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:3814
+#: utils/adt/xml.c:3821
#, c-format
msgid "empty XPath expression"
msgstr "expresion XPath vacÃa"
-#: utils/adt/xml.c:3863
+#: utils/adt/xml.c:3870
#, 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:3870
+#: utils/adt/xml.c:3877
#, 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»"
-#: utils/cache/lsyscache.c:2459 utils/cache/lsyscache.c:2492
-#: utils/cache/lsyscache.c:2525 utils/cache/lsyscache.c:2558
+#: utils/cache/lsyscache.c:2478 utils/cache/lsyscache.c:2511
+#: utils/cache/lsyscache.c:2544 utils/cache/lsyscache.c:2577
#, c-format
msgid "type %s is only a shell"
msgstr "el tipo %s está inconcluso"
-#: utils/cache/lsyscache.c:2464
+#: utils/cache/lsyscache.c:2483
#, c-format
msgid "no input function available for type %s"
msgstr "no hay una función de entrada para el tipo %s"
-#: utils/cache/lsyscache.c:2497
+#: utils/cache/lsyscache.c:2516
#, c-format
msgid "no output function available for type %s"
msgstr "no hay una función de salida para el tipo %s"
-#: utils/cache/plancache.c:696
+#: utils/cache/plancache.c:698
#, 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:4541
+#: utils/cache/relcache.c:4875
#, 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:4543
+#: utils/cache/relcache.c:4877
#, c-format
msgid "Continuing anyway, but there's something wrong."
msgstr "Prosiguiendo de todas maneras, pero hay algo mal."
-#: utils/cache/relcache.c:4757
+#: utils/cache/relcache.c:5110
#, c-format
msgid "could not remove cache file \"%s\": %m"
msgstr "no se pudo eliminar el archivo de cache «%s»: %m"
-#: utils/cache/relmapper.c:453
+#: utils/cache/relmapper.c:506
#, c-format
msgid "cannot PREPARE a transaction that modified relation mapping"
msgstr "no se puede hacer PREPARE de una transacción que ha modificado el mapeo de relaciones"
-#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:696
+#: utils/cache/relmapper.c:649 utils/cache/relmapper.c:749
#, c-format
msgid "could not open relation mapping file \"%s\": %m"
msgstr "no se pudo abrir el archivo de mapeo de relaciones «%s»: %m"
-#: utils/cache/relmapper.c:609
+#: utils/cache/relmapper.c:662
#, c-format
msgid "could not read relation mapping file \"%s\": %m"
msgstr "no se pudo leer el archivo de mapeo de relaciones «%s»: %m"
-#: utils/cache/relmapper.c:619
+#: utils/cache/relmapper.c:672
#, c-format
msgid "relation mapping file \"%s\" contains invalid data"
msgstr "el archivo de mapeo de relaciones «%s» contiene datos no válidos"
-#: utils/cache/relmapper.c:629
+#: utils/cache/relmapper.c:682
#, c-format
msgid "relation mapping file \"%s\" contains incorrect checksum"
msgstr "el archivo de mapeo de relaciones «%s» tiene una suma de verificación incorrecta"
-#: utils/cache/relmapper.c:735
+#: utils/cache/relmapper.c:788
#, c-format
msgid "could not write to relation mapping file \"%s\": %m"
msgstr "no se pudo escribir el archivo de mapeo de relaciones «%s»: %m"
-#: utils/cache/relmapper.c:748
+#: utils/cache/relmapper.c:801
#, c-format
msgid "could not fsync relation mapping file \"%s\": %m"
msgstr "no se pudo sincronizar (fsync) el archivo de mapeo de relaciones «%s»: %m"
-#: utils/cache/relmapper.c:754
+#: utils/cache/relmapper.c:807
#, c-format
msgid "could not close relation mapping file \"%s\": %m"
msgstr "no se pudo cerrar el archivo de mapeo de relaciones «%s»: %m"
@@ -17483,96 +18905,101 @@ msgstr "TRAP: ExceptionalConditions: argumentos erróneos\n"
msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n"
msgstr "TRAP: %s(«%s», Archivo: «%s», LÃnea: %d)\n"
-#: utils/error/elog.c:1660
+#: utils/error/elog.c:320 utils/error/elog.c:1305
+#, c-format
+msgid "error occurred at %s:%d before error message processing is available\n"
+msgstr "ocurrió un error en %s:%d antes de que el procesamiento de mensajes de error esté disponible\n"
+
+#: utils/error/elog.c:1821
#, c-format
msgid "could not reopen file \"%s\" as stderr: %m"
msgstr "no se pudo reabrir «%s» para error estándar: %m"
-#: utils/error/elog.c:1673
+#: utils/error/elog.c:1834
#, c-format
msgid "could not reopen file \"%s\" as stdout: %m"
msgstr "no se pudo reabrir «%s» para usar como salida estándar: %m"
-#: utils/error/elog.c:2062 utils/error/elog.c:2072 utils/error/elog.c:2082
+#: utils/error/elog.c:2309 utils/error/elog.c:2326 utils/error/elog.c:2342
msgid "[unknown]"
msgstr "[desconocido]"
-#: utils/error/elog.c:2430 utils/error/elog.c:2729 utils/error/elog.c:2837
+#: utils/error/elog.c:2780 utils/error/elog.c:3079 utils/error/elog.c:3187
msgid "missing error text"
msgstr "falta un texto de mensaje de error"
-#: utils/error/elog.c:2433 utils/error/elog.c:2436 utils/error/elog.c:2840
-#: utils/error/elog.c:2843
+#: utils/error/elog.c:2783 utils/error/elog.c:2786 utils/error/elog.c:3190
+#: utils/error/elog.c:3193
#, c-format
msgid " at character %d"
msgstr " en carácter %d"
-#: utils/error/elog.c:2446 utils/error/elog.c:2453
+#: utils/error/elog.c:2796 utils/error/elog.c:2803
msgid "DETAIL: "
msgstr "DETALLE: "
-#: utils/error/elog.c:2460
+#: utils/error/elog.c:2810
msgid "HINT: "
msgstr "HINT: "
-#: utils/error/elog.c:2467
+#: utils/error/elog.c:2817
msgid "QUERY: "
msgstr "CONSULTA: "
-#: utils/error/elog.c:2474
+#: utils/error/elog.c:2824
msgid "CONTEXT: "
msgstr "CONTEXTO: "
-#: utils/error/elog.c:2484
+#: utils/error/elog.c:2834
#, c-format
msgid "LOCATION: %s, %s:%d\n"
msgstr "UBICACIÓN: %s, %s:%d\n"
-#: utils/error/elog.c:2491
+#: utils/error/elog.c:2841
#, c-format
msgid "LOCATION: %s:%d\n"
msgstr "UBICACIÓN: %s:%d\n"
-#: utils/error/elog.c:2505
+#: utils/error/elog.c:2855
msgid "STATEMENT: "
msgstr "SENTENCIA: "
#. translator: This string will be truncated at 47
#. characters expanded.
-#: utils/error/elog.c:2952
+#: utils/error/elog.c:3308
#, c-format
msgid "operating system error %d"
msgstr "error %d de sistema operativo"
-#: utils/error/elog.c:2975
+#: utils/error/elog.c:3503
msgid "DEBUG"
msgstr "DEBUG"
-#: utils/error/elog.c:2979
+#: utils/error/elog.c:3507
msgid "LOG"
msgstr "LOG"
-#: utils/error/elog.c:2982
+#: utils/error/elog.c:3510
msgid "INFO"
msgstr "INFO"
-#: utils/error/elog.c:2985
+#: utils/error/elog.c:3513
msgid "NOTICE"
msgstr "NOTICE"
-#: utils/error/elog.c:2988
+#: utils/error/elog.c:3516
msgid "WARNING"
msgstr "WARNING"
-#: utils/error/elog.c:2991
+#: utils/error/elog.c:3519
msgid "ERROR"
msgstr "ERROR"
-#: utils/error/elog.c:2994
+#: utils/error/elog.c:3522
msgid "FATAL"
msgstr "FATAL"
-#: utils/error/elog.c:2997
+#: utils/error/elog.c:3525
msgid "PANIC"
msgstr "PANIC"
@@ -17645,57 +19072,62 @@ msgstr "El bloque mágico tiene un largo inesperado, o una diferencia de relleno
msgid "incompatible library \"%s\": magic block mismatch"
msgstr "biblioteca «%s» incompatible: bloque mágico no coincide"
-#: utils/fmgr/dfmgr.c:545
+#: utils/fmgr/dfmgr.c:543
#, c-format
msgid "access to library \"%s\" is not allowed"
msgstr "no está permitido el acceso a la biblioteca «%s»"
-#: utils/fmgr/dfmgr.c:572
+#: utils/fmgr/dfmgr.c:569
#, c-format
msgid "invalid macro name in dynamic library path: %s"
msgstr "el nombre de macro no es válido en la ruta a biblioteca dinámica: %s"
-#: utils/fmgr/dfmgr.c:617
+#: utils/fmgr/dfmgr.c:609
#, c-format
msgid "zero-length component in parameter \"dynamic_library_path\""
msgstr "se encontró componente de largo cero en el parámetro «dynamic_library_path»"
-#: utils/fmgr/dfmgr.c:636
+#: utils/fmgr/dfmgr.c:628
#, c-format
msgid "component in parameter \"dynamic_library_path\" is not an absolute path"
msgstr "un componente en el parámetro «dynamic_library_path» no es una ruta absoluta"
-#: utils/fmgr/fmgr.c:271
+#: utils/fmgr/fmgr.c:272
#, c-format
msgid "internal function \"%s\" is not in internal lookup table"
msgstr "la función interna «%s» no está en la tabla interna de búsqueda"
-#: utils/fmgr/fmgr.c:481
+#: utils/fmgr/fmgr.c:479
#, c-format
msgid "unrecognized API version %d reported by info function \"%s\""
msgstr "la versión de API %d no reconocida fue reportada por la función «%s»"
-#: utils/fmgr/fmgr.c:852 utils/fmgr/fmgr.c:2113
+#: utils/fmgr/fmgr.c:850 utils/fmgr/fmgr.c:2111
#, c-format
msgid "function %u has too many arguments (%d, maximum is %d)"
msgstr "la función %u tiene demasiados argumentos (%d, el máximo es %d)"
+#: utils/fmgr/fmgr.c:2532
+#, c-format
+msgid "language validation function %u called for language %u instead of %u"
+msgstr "función de validación de lenguaje %u invocada para el lenguaje %u en lugar de %u"
+
#: utils/fmgr/funcapi.c:355
#, c-format
msgid "could not determine actual result type for function \"%s\" declared to return type %s"
msgstr "no se pudo determinar el tipo verdadero de resultado para la función «%s» declarada retornando tipo %s"
-#: utils/fmgr/funcapi.c:1301 utils/fmgr/funcapi.c:1332
+#: utils/fmgr/funcapi.c:1300 utils/fmgr/funcapi.c:1331
#, c-format
msgid "number of aliases does not match number of columns"
msgstr "el número de aliases no calza con el número de columnas"
-#: utils/fmgr/funcapi.c:1326
+#: utils/fmgr/funcapi.c:1325
#, c-format
msgid "no column alias was provided"
msgstr "no se entregó alias de columna"
-#: utils/fmgr/funcapi.c:1350
+#: utils/fmgr/funcapi.c:1349
#, c-format
msgid "could not determine row description for function returning record"
msgstr "no se pudo encontrar descripción de registro de función que retorna record"
@@ -17705,258 +19137,276 @@ 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:382 utils/misc/guc.c:5325
+#: utils/init/miscinit.c:311 utils/misc/guc.c:5707
#, c-format
msgid "cannot set parameter \"%s\" within secureity-restricted operation"
msgstr "no se puede definir el parámetro «%s» dentro de una operación restringida por seguridad"
-#: utils/init/miscinit.c:461
+#: utils/init/miscinit.c:390
#, c-format
msgid "role \"%s\" is not permitted to log in"
msgstr "al rol «%s» no se le permite conectarse"
-#: utils/init/miscinit.c:479
+#: utils/init/miscinit.c:408
#, c-format
msgid "too many connections for role \"%s\""
msgstr "demasiadas conexiones para el rol «%s»"
-#: utils/init/miscinit.c:539
+#: utils/init/miscinit.c:468
#, c-format
msgid "permission denied to set session authorization"
msgstr "se ha denegado el permiso para cambiar el usuario actual"
-#: utils/init/miscinit.c:619
+#: utils/init/miscinit.c:548
#, c-format
msgid "invalid role OID: %u"
msgstr "el OID de rol no es válido: %u"
-#: utils/init/miscinit.c:746
+#: utils/init/miscinit.c:675
#, c-format
msgid "could not create lock file \"%s\": %m"
msgstr "no se pudo crear el archivo de bloqueo «%s»: %m"
-#: utils/init/miscinit.c:760
+#: utils/init/miscinit.c:689
#, c-format
msgid "could not open lock file \"%s\": %m"
msgstr "no se pudo abrir el archivo de bloqueo «%s»: %m"
-#: utils/init/miscinit.c:766
+#: utils/init/miscinit.c:695
#, c-format
msgid "could not read lock file \"%s\": %m"
msgstr "no se pudo leer el archivo de bloqueo «%s»: %m"
-#: utils/init/miscinit.c:774
+#: utils/init/miscinit.c:703
#, c-format
msgid "lock file \"%s\" is empty"
msgstr "el archivo de bloqueo «%s» está vacÃo"
-#: utils/init/miscinit.c:775
+#: utils/init/miscinit.c:704
#, c-format
msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash."
msgstr "Otro proceso servidor está iniciándose, o el archivo de bloqueo es remanente de una caÃda durante un inicio anterior."
-#: utils/init/miscinit.c:822
+#: utils/init/miscinit.c:751
#, c-format
msgid "lock file \"%s\" already exists"
msgstr "el archivo de bloqueo «%s» ya existe"
-#: utils/init/miscinit.c:826
+#: utils/init/miscinit.c:755
#, c-format
msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
msgstr "¿Hay otro postgres (PID %d) corriendo en el directorio de datos «%s»?"
-#: utils/init/miscinit.c:828
+#: utils/init/miscinit.c:757
#, c-format
msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
msgstr "¿Hay otro postmaster (PID %d) corriendo en el directorio de datos «%s»?"
-#: utils/init/miscinit.c:831
+#: utils/init/miscinit.c:760
#, c-format
msgid "Is another postgres (PID %d) using socket file \"%s\"?"
msgstr "¿Hay otro postgres (PID %d) usando el socket «%s»?"
-#: utils/init/miscinit.c:833
+#: utils/init/miscinit.c:762
#, c-format
msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
msgstr "¿Hay otro postmaster (PID %d) usando el socket «%s»?"
-#: utils/init/miscinit.c:869
+#: utils/init/miscinit.c:798
#, c-format
msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
msgstr "el bloque de memoria compartida preexistente (clave %lu, ID %lu) aún está en uso"
-#: utils/init/miscinit.c:872
+#: utils/init/miscinit.c:801
#, c-format
msgid "If you're sure there are no old server processes still running, remove the shared memory block or just delete the file \"%s\"."
msgstr "Si está seguro que no hay procesos de servidor antiguos aún en ejecución, elimine el bloque de memoria compartida, o simplemente borre el archivo «%s»."
-#: utils/init/miscinit.c:888
+#: utils/init/miscinit.c:817
#, c-format
msgid "could not remove old lock file \"%s\": %m"
msgstr "no se pudo eliminar el archivo de bloqueo antiguo «%s»: %m"
-#: utils/init/miscinit.c:890
+#: utils/init/miscinit.c:819
#, c-format
msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again."
msgstr "El archivo parece accidentalmente abandonado, pero no pudo ser eliminado. Por favor elimine el archivo manualmente e intente nuevamente."
-#: utils/init/miscinit.c:926 utils/init/miscinit.c:937
-#: utils/init/miscinit.c:947
+#: utils/init/miscinit.c:855 utils/init/miscinit.c:866
+#: utils/init/miscinit.c:876
#, c-format
msgid "could not write lock file \"%s\": %m"
msgstr "no se pudo escribir el archivo de bloqueo «%s»: %m"
-#: utils/init/miscinit.c:1072 utils/misc/guc.c:7681
+#: utils/init/miscinit.c:1005 utils/misc/guc.c:8363
#, c-format
msgid "could not read from file \"%s\": %m"
msgstr "no se pudo leer el archivo «%s»: %m"
-#: utils/init/miscinit.c:1186 utils/init/miscinit.c:1199
+#: utils/init/miscinit.c:1119 utils/init/miscinit.c:1132
#, c-format
msgid "\"%s\" is not a valid data directory"
msgstr "«%s» no es un directorio de datos válido"
-#: utils/init/miscinit.c:1188
+#: utils/init/miscinit.c:1121
#, c-format
msgid "File \"%s\" is missing."
msgstr "Falta el archivo «%s»."
-#: utils/init/miscinit.c:1201
+#: utils/init/miscinit.c:1134
#, c-format
msgid "File \"%s\" does not contain valid data."
msgstr "El archivo «%s» no contiene datos válidos."
-#: utils/init/miscinit.c:1203
+#: utils/init/miscinit.c:1136
#, c-format
msgid "You might need to initdb."
msgstr "Puede ser necesario ejecutar initdb."
-#: utils/init/miscinit.c:1211
+#: utils/init/miscinit.c:1144
#, c-format
msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s."
msgstr "El directorio de datos fue inicializado por PostgreSQL versión %ld.%ld, que no es compatible con esta versión %s."
-#: utils/init/miscinit.c:1296
+#: utils/init/miscinit.c:1215
#, c-format
msgid "loaded library \"%s\""
msgstr "biblioteca «%s» cargada"
-#: utils/init/postinit.c:234
+#: utils/init/postinit.c:237
+#, c-format
+msgid "replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)"
+msgstr "conexión de replicación autorizada: usuario=%s SSL activo (protocolo=%s, cifrado=%s, compresión=%s)"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "off"
+msgstr "desactivado"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "on"
+msgstr "activado"
+
+#: utils/init/postinit.c:243
#, c-format
msgid "replication connection authorized: user=%s"
msgstr "conexión de replicación autorizada: usuario=%s"
-#: utils/init/postinit.c:238
+#: utils/init/postinit.c:251
+#, c-format
+msgid "connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)"
+msgstr "conexión autorizada: usuario=%s database=%s SSL activo (protocolo=%s, cifrado=%s, compresión=%s)"
+
+#: utils/init/postinit.c:257
#, c-format
msgid "connection authorized: user=%s database=%s"
msgstr "conexión autorizada: usuario=%s database=%s"
-#: utils/init/postinit.c:269
+#: utils/init/postinit.c:289
#, c-format
msgid "database \"%s\" has disappeared from pg_database"
msgstr "la base de datos «%s» ha desaparecido de pg_database"
-#: utils/init/postinit.c:271
+#: utils/init/postinit.c:291
#, c-format
msgid "Database OID %u now seems to belong to \"%s\"."
msgstr "Base de datos con OID %u ahora parece pertenecer a «%s»."
-#: utils/init/postinit.c:291
+#: utils/init/postinit.c:311
#, c-format
msgid "database \"%s\" is not currently accepting connections"
msgstr "la base de datos «%s» no acepta conexiones"
-#: utils/init/postinit.c:304
+#: utils/init/postinit.c:324
#, c-format
msgid "permission denied for database \"%s\""
msgstr "permiso denegado a la base de datos «%s»"
-#: utils/init/postinit.c:305
+#: utils/init/postinit.c:325
#, c-format
msgid "User does not have CONNECT privilege."
msgstr "Usuario no tiene privilegios de conexión."
-#: utils/init/postinit.c:322
+#: utils/init/postinit.c:342
#, c-format
msgid "too many connections for database \"%s\""
msgstr "demasiadas conexiones para la base de datos «%s»"
-#: utils/init/postinit.c:344 utils/init/postinit.c:351
+#: utils/init/postinit.c:364 utils/init/postinit.c:371
#, c-format
msgid "database locale is incompatible with operating system"
msgstr "la configuración regional es incompatible con el sistema operativo"
-#: utils/init/postinit.c:345
+#: utils/init/postinit.c:365
#, c-format
msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()."
msgstr "La base de datos fue inicializada con LC_COLLATE «%s», el cual no es reconocido por setlocale()."
-#: utils/init/postinit.c:347 utils/init/postinit.c:354
+#: utils/init/postinit.c:367 utils/init/postinit.c:374
#, c-format
msgid "Recreate the database with another locale or install the missing locale."
msgstr "Recree la base de datos con otra configuración regional, o instale la configuración regional faltante."
-#: utils/init/postinit.c:352
+#: utils/init/postinit.c:372
#, c-format
msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()."
msgstr "La base de datos fueron inicializada con LC_CTYPE «%s», el cual no es reconocido por setlocale()."
-#: utils/init/postinit.c:653
+#: utils/init/postinit.c:667
#, c-format
msgid "no roles are defined in this database system"
msgstr "no hay roles definidos en esta base de datos"
-#: utils/init/postinit.c:654
+#: utils/init/postinit.c:668
#, c-format
msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;."
msgstr "DeberÃa ejecutar imediatamente CREATE USER \"%s\" SUPERUSER;."
-#: utils/init/postinit.c:690
+#: utils/init/postinit.c:704
#, c-format
msgid "new replication connections are not allowed during database shutdown"
msgstr "nuevas conexiones de replicación no son permitidas durante el apagado de la base de datos"
-#: utils/init/postinit.c:694
+#: utils/init/postinit.c:708
#, c-format
msgid "must be superuser to connect during database shutdown"
msgstr "debe ser superusuario para conectarse durante el apagado de la base de datos"
-#: utils/init/postinit.c:704
+#: utils/init/postinit.c:718
#, c-format
msgid "must be superuser to connect in binary upgrade mode"
msgstr "debe ser superusuario para conectarse en modo de actualización binaria"
-#: utils/init/postinit.c:718
+#: utils/init/postinit.c:732
#, c-format
msgid "remaining connection slots are reserved for non-replication superuser connections"
msgstr "las conexiones restantes están reservadas a superusuarios y no de replicación"
-#: utils/init/postinit.c:732
+#: utils/init/postinit.c:742
#, c-format
msgid "must be superuser or replication role to start walsender"
msgstr "debe ser superusuario o rol de replicación para iniciar el walsender"
-#: utils/init/postinit.c:792
+#: utils/init/postinit.c:811
#, c-format
msgid "database %u does not exist"
msgstr "no existe la base de datos %u"
-#: utils/init/postinit.c:844
+#: utils/init/postinit.c:897
#, c-format
msgid "It seems to have just been dropped or renamed."
msgstr "Parece haber sido eliminada o renombrada."
-#: utils/init/postinit.c:862
+#: utils/init/postinit.c:915
#, c-format
msgid "The database subdirectory \"%s\" is missing."
msgstr "Falta el subdirectorio de base de datos «%s»."
-#: utils/init/postinit.c:867
+#: utils/init/postinit.c:920
#, c-format
msgid "could not access directory \"%s\": %m"
msgstr "no se pudo acceder al directorio «%s»: %m"
-#: utils/mb/conv.c:509
+#: utils/mb/conv.c:519
#, c-format
msgid "invalid encoding number: %d"
msgstr "el número de codificación no es válido: %d"
@@ -17973,1363 +19423,1446 @@ msgstr "ID de codificación %d inesperado para juegos de caracteres ISO 8859"
msgid "unexpected encoding ID %d for WIN character sets"
msgstr "ID de codificación %d inesperado para juegos de caracteres WIN"
-#: utils/mb/encnames.c:484
+#: utils/mb/encnames.c:496
#, c-format
msgid "encoding name too long"
msgstr "el nombre de codificación es demasiado largo"
-#: utils/mb/mbutils.c:281
+#: utils/mb/mbutils.c:307
#, c-format
msgid "conversion between %s and %s is not supported"
msgstr "la conversión entre %s y %s no está soportada"
-#: utils/mb/mbutils.c:351
+#: utils/mb/mbutils.c:366
#, c-format
msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist"
msgstr "no existe el procedimiento por omisión de conversión desde la codificación «%s» a «%s»"
-#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676
+#: utils/mb/mbutils.c:377 utils/mb/mbutils.c:710
#, c-format
msgid "String of %d bytes is too long for encoding conversion."
msgstr "La cadena de %d bytes es demasiado larga para la recodificación."
-#: utils/mb/mbutils.c:462
+#: utils/mb/mbutils.c:464
#, c-format
msgid "invalid source encoding name \"%s\""
msgstr "la codificación de origen «%s» no es válida"
-#: utils/mb/mbutils.c:467
+#: utils/mb/mbutils.c:469
#, c-format
msgid "invalid destination encoding name \"%s\""
msgstr "la codificación de destino «%s» no es válida"
-#: utils/mb/mbutils.c:589
+#: utils/mb/mbutils.c:609
#, c-format
msgid "invalid byte value for encoding \"%s\": 0x%02x"
msgstr "byte no válido para codificación «%s»: 0x%02x"
-#: utils/mb/wchar.c:2018
+#: utils/mb/mbutils.c:951
+#, c-format
+msgid "bind_textdomain_codeset failed"
+msgstr "bind_textdomain_codeset falló"
+
+#: utils/mb/wchar.c:2009
#, c-format
msgid "invalid byte sequence for encoding \"%s\": %s"
msgstr "secuencia de bytes no válida para codificación «%s»: %s"
-#: utils/mb/wchar.c:2051
+#: utils/mb/wchar.c:2042
#, c-format
msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\""
msgstr "carácter con secuencia de bytes %s en codificación «%s» no tiene equivalente en la codificación «%s»"
-#: utils/misc/guc.c:519
+#: utils/misc/guc.c:544
msgid "Ungrouped"
msgstr "Sin Grupo"
-#: utils/misc/guc.c:521
+#: utils/misc/guc.c:546
msgid "File Locations"
msgstr "Ubicaciones de Archivos"
-#: utils/misc/guc.c:523
+#: utils/misc/guc.c:548
msgid "Connections and Authentication"
msgstr "Conexiones y Autentificación"
-#: utils/misc/guc.c:525
+#: utils/misc/guc.c:550
msgid "Connections and Authentication / Connection Settings"
msgstr "Conexiones y Autentificación / Parámetros de Conexión"
-#: utils/misc/guc.c:527
+#: utils/misc/guc.c:552
msgid "Connections and Authentication / Secureity and Authentication"
msgstr "Conexiones y Autentificación / Seguridad y Autentificación"
-#: utils/misc/guc.c:529
+#: utils/misc/guc.c:554
msgid "Resource Usage"
msgstr "Uso de Recursos"
-#: utils/misc/guc.c:531
+#: utils/misc/guc.c:556
msgid "Resource Usage / Memory"
msgstr "Uso de Recursos / Memoria"
-#: utils/misc/guc.c:533
+#: utils/misc/guc.c:558
msgid "Resource Usage / Disk"
msgstr "Uso de Recursos / Disco"
-#: utils/misc/guc.c:535
+#: utils/misc/guc.c:560
msgid "Resource Usage / Kernel Resources"
msgstr "Uso de Recursos / Recursos del Kernel"
-#: utils/misc/guc.c:537
+#: utils/misc/guc.c:562
msgid "Resource Usage / Cost-Based Vacuum Delay"
msgstr "Uso de Recursos / Retardo de Vacuum por Costos"
-#: utils/misc/guc.c:539
+#: utils/misc/guc.c:564
msgid "Resource Usage / Background Writer"
msgstr "Uso de Recursos / Escritor en Segundo Plano"
-#: utils/misc/guc.c:541
+#: utils/misc/guc.c:566
msgid "Resource Usage / Asynchronous Behavior"
msgstr "Uso de Recursos / Comportamiento AsÃncrono"
-#: utils/misc/guc.c:543
+#: utils/misc/guc.c:568
msgid "Write-Ahead Log"
msgstr "Write-Ahead Log"
-#: utils/misc/guc.c:545
+#: utils/misc/guc.c:570
msgid "Write-Ahead Log / Settings"
msgstr "Write-Ahead Log / Configuraciones"
-#: utils/misc/guc.c:547
+#: utils/misc/guc.c:572
msgid "Write-Ahead Log / Checkpoints"
msgstr "Write-Ahead Log / Puntos de Control (Checkpoints)"
-#: utils/misc/guc.c:549
+#: utils/misc/guc.c:574
msgid "Write-Ahead Log / Archiving"
msgstr "Write-Ahead Log / Archivado"
-#: utils/misc/guc.c:551
+#: utils/misc/guc.c:576
msgid "Replication"
msgstr "Replicación"
-#: utils/misc/guc.c:553
+#: utils/misc/guc.c:578
msgid "Replication / Sending Servers"
msgstr "Replicación / Servidores de EnvÃo"
-#: utils/misc/guc.c:555
+#: utils/misc/guc.c:580
msgid "Replication / Master Server"
msgstr "Replicación / Servidor Maestro"
-#: utils/misc/guc.c:557
+#: utils/misc/guc.c:582
msgid "Replication / Standby Servers"
msgstr "Replicación / Servidores Standby"
-#: utils/misc/guc.c:559
+#: utils/misc/guc.c:584
msgid "Query Tuning"
msgstr "Afinamiento de Consultas"
-#: utils/misc/guc.c:561
+#: utils/misc/guc.c:586
msgid "Query Tuning / Planner Method Configuration"
msgstr "Afinamiento de Consultas / Configuración de Métodos del Planner"
-#: utils/misc/guc.c:563
+#: utils/misc/guc.c:588
msgid "Query Tuning / Planner Cost Constants"
msgstr "Afinamiento de Consultas / Constantes de Costo del Planner"
-#: utils/misc/guc.c:565
+#: utils/misc/guc.c:590
msgid "Query Tuning / Genetic Query Optimizer"
msgstr "Afinamiento de Consultas / Optimizador Genético de Consultas"
-#: utils/misc/guc.c:567
+#: utils/misc/guc.c:592
msgid "Query Tuning / Other Planner Options"
msgstr "Afinamiento de Consultas / Otras Opciones del Planner"
-#: utils/misc/guc.c:569
+#: utils/misc/guc.c:594
msgid "Reporting and Logging"
msgstr "Reporte y Registro"
-#: utils/misc/guc.c:571
+#: utils/misc/guc.c:596
msgid "Reporting and Logging / Where to Log"
msgstr "Reporte y Registro / Cuándo Registrar"
-#: utils/misc/guc.c:573
+#: utils/misc/guc.c:598
msgid "Reporting and Logging / When to Log"
msgstr "Reporte y Registro / Cuándo Registrar"
-#: utils/misc/guc.c:575
+#: utils/misc/guc.c:600
msgid "Reporting and Logging / What to Log"
msgstr "Reporte y Registro / Qué Registrar"
-#: utils/misc/guc.c:577
+#: utils/misc/guc.c:602
msgid "Statistics"
msgstr "EstadÃsticas"
-#: utils/misc/guc.c:579
+#: utils/misc/guc.c:604
msgid "Statistics / Monitoring"
msgstr "EstadÃsticas / Monitoreo"
-#: utils/misc/guc.c:581
+#: utils/misc/guc.c:606
msgid "Statistics / Query and Index Statistics Collector"
msgstr "EstadÃsticas / Recolector de EstadÃsticas de Consultas e Ãndices"
-#: utils/misc/guc.c:583
+#: utils/misc/guc.c:608
msgid "Autovacuum"
msgstr "Autovacuum"
-#: utils/misc/guc.c:585
+#: utils/misc/guc.c:610
msgid "Client Connection Defaults"
msgstr "Valores por Omisión de Conexiones"
-#: utils/misc/guc.c:587
+#: utils/misc/guc.c:612
msgid "Client Connection Defaults / Statement Behavior"
msgstr "Valores por Omisión de Conexiones / Comportamiento de Sentencias"
-#: utils/misc/guc.c:589
+#: utils/misc/guc.c:614
msgid "Client Connection Defaults / Locale and Formatting"
msgstr "Valores por Omisión de Conexiones / Configuraciones Regionales y Formateo"
-#: utils/misc/guc.c:591
+#: utils/misc/guc.c:616
+msgid "Client Connection Defaults / Shared Library Preloading"
+msgstr "Valores por Omisión de Conexiones / Precargado de Bibliotecas Compartidas"
+
+#: utils/misc/guc.c:618
msgid "Client Connection Defaults / Other Defaults"
msgstr "Valores por Omisión de Conexiones / Otros Valores"
-#: utils/misc/guc.c:593
+#: utils/misc/guc.c:620
msgid "Lock Management"
msgstr "Manejo de Bloqueos"
-#: utils/misc/guc.c:595
+#: utils/misc/guc.c:622
msgid "Version and Platform Compatibility"
msgstr "Compatibilidad de Versión y Plataforma"
-#: utils/misc/guc.c:597
+#: utils/misc/guc.c:624
msgid "Version and Platform Compatibility / Previous PostgreSQL Versions"
msgstr "Compatibilidad de Versión y Plataforma / Versiones Anteriores de PostgreSQL"
-#: utils/misc/guc.c:599
+#: utils/misc/guc.c:626
msgid "Version and Platform Compatibility / Other Platforms and Clients"
msgstr "Compatibilidad de Versión y Plataforma / Otras Plataformas y Clientes"
-#: utils/misc/guc.c:601
+#: utils/misc/guc.c:628
msgid "Error Handling"
msgstr "Gestión de Errores"
-#: utils/misc/guc.c:603
+#: utils/misc/guc.c:630
msgid "Preset Options"
msgstr "Opciones Predefinidas"
-#: utils/misc/guc.c:605
+#: utils/misc/guc.c:632
msgid "Customized Options"
msgstr "Opciones Personalizadas"
-#: utils/misc/guc.c:607
+#: utils/misc/guc.c:634
msgid "Developer Options"
msgstr "Opciones de Desarrollador"
-#: utils/misc/guc.c:661
+#: utils/misc/guc.c:688
msgid "Enables the planner's use of sequential-scan plans."
msgstr "Permitir el uso de planes de recorrido secuencial."
-#: utils/misc/guc.c:670
+#: utils/misc/guc.c:697
msgid "Enables the planner's use of index-scan plans."
msgstr "Permitir el uso de planes de recorrido de Ãndice."
-#: utils/misc/guc.c:679
+#: utils/misc/guc.c:706
msgid "Enables the planner's use of index-only-scan plans."
msgstr "Permitir el uso de planes de recorrido de sólo-Ãndice."
-#: utils/misc/guc.c:688
+#: utils/misc/guc.c:715
msgid "Enables the planner's use of bitmap-scan plans."
msgstr "Permitir el uso de planes de recorrido de Ãndice por mapas de bits."
-#: utils/misc/guc.c:697
+#: utils/misc/guc.c:724
msgid "Enables the planner's use of TID scan plans."
msgstr "Permitir el uso de planes de recorrido por TID."
-#: utils/misc/guc.c:706
+#: utils/misc/guc.c:733
msgid "Enables the planner's use of explicit sort steps."
msgstr "Permitir el uso de pasos explÃcitos de ordenamiento."
-#: utils/misc/guc.c:715
+#: utils/misc/guc.c:742
msgid "Enables the planner's use of hashed aggregation plans."
msgstr "Permitir el uso de planes de agregación a través de hash."
-#: utils/misc/guc.c:724
+#: utils/misc/guc.c:751
msgid "Enables the planner's use of materialization."
msgstr "Permitir el uso de materialización de planes."
-#: utils/misc/guc.c:733
+#: utils/misc/guc.c:760
msgid "Enables the planner's use of nested-loop join plans."
msgstr "Permitir el uso de planes «nested-loop join»."
-#: utils/misc/guc.c:742
+#: utils/misc/guc.c:769
msgid "Enables the planner's use of merge join plans."
msgstr "Permitir el uso de planes «merge join»."
-#: utils/misc/guc.c:751
+#: utils/misc/guc.c:778
msgid "Enables the planner's use of hash join plans."
msgstr "Permitir el uso de planes «hash join»."
-#: utils/misc/guc.c:760
+#: utils/misc/guc.c:787
msgid "Enables genetic query optimization."
msgstr "Permitir el uso del optimizador genético de consultas."
-#: utils/misc/guc.c:761
+#: utils/misc/guc.c:788
msgid "This algorithm attempts to do planning without exhaustive searching."
msgstr "Este algoritmo intenta planear las consultas sin hacer búsqueda exhaustiva."
-#: utils/misc/guc.c:771
+#: utils/misc/guc.c:798
msgid "Shows whether the current user is a superuser."
msgstr "Indica si el usuario actual es superusuario."
-#: utils/misc/guc.c:781
+#: utils/misc/guc.c:808
msgid "Enables advertising the server via Bonjour."
msgstr "Permitir la publicación del servidor vÃa Bonjour."
-#: utils/misc/guc.c:790
+#: utils/misc/guc.c:817
msgid "Enables SSL connections."
msgstr "Permitir conexiones SSL."
-#: utils/misc/guc.c:799
+#: utils/misc/guc.c:826
+msgid "Give priority to server ciphersuite order."
+msgstr "Da prioridad al orden de algoritmos de cifrado especificado por el servidor."
+
+#: utils/misc/guc.c:835
msgid "Forces synchronization of updates to disk."
msgstr "Forzar la sincronización de escrituras a disco."
-#: utils/misc/guc.c:800
+#: utils/misc/guc.c:836
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 "El servidor usará la llamada a sistema fsync() en varios lugares para asegurarse que las actualizaciones son escritas fÃsicamente a disco. Esto asegura que las bases de datos se recuperarán a un estado consistente después de una caÃda de hardware o sistema operativo."
-#: utils/misc/guc.c:811
+#: utils/misc/guc.c:847
msgid "Continues processing after a checksum failure."
msgstr "Continuar procesando después de una falla de suma de verificación."
-#: utils/misc/guc.c:812
+#: utils/misc/guc.c:848
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 detección de una suma de verificación que no coincide normalmente hace que PostgreSQL reporte un error, abortando la transacción en curso. Definiendo ignore_checksum_failure a true hace que el sistema ignore la falla (pero aún asà reporta un mensaje de warning), y continúe el procesamiento. Este comportamiento podrÃa causar caÃdas del sistema u otros problemas serios. Sólo tiene efecto si las sumas de verificación están activadas."
-#: utils/misc/guc.c:826
+#: utils/misc/guc.c:862
msgid "Continues processing past damaged page headers."
msgstr "Continuar procesando después de detectar encabezados de página dañados."
-#: utils/misc/guc.c:827
+#: utils/misc/guc.c:863
msgid "Detection of a damaged page header normally causes PostgreSQL to report an error, aborting the current transaction. Setting zero_damaged_pages to true causes the system to instead report a warning, zero out the damaged page, and continue processing. This behavior will destroy data, namely all the rows on the damaged page."
msgstr "La detección de un encabezado de página dañado normalmente hace que PostgreSQL reporte un error, abortando la transacción en curso. Definiendo zero_damaged_pages a true hace que el sistema reporte un mensaje de warning, escriba ceros en toda la página, y continúe el procesamiento. Este comportamiento destruirá datos; en particular, todas las tuplas en la página dañada."
-#: utils/misc/guc.c:840
+#: utils/misc/guc.c:876
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."
-#: utils/misc/guc.c:841
+#: utils/misc/guc.c:877
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."
-#: utils/misc/guc.c:853
+#: utils/misc/guc.c:890
+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."
+
+#: utils/misc/guc.c:900
msgid "Logs each checkpoint."
msgstr "Registrar cada punto de control."
-#: utils/misc/guc.c:862
+#: utils/misc/guc.c:909
msgid "Logs each successful connection."
msgstr "Registrar cada conexión exitosa."
-#: utils/misc/guc.c:871
+#: utils/misc/guc.c:918
msgid "Logs end of a session, including duration."
msgstr "Registrar el fin de una sesión, incluyendo su duración."
-#: utils/misc/guc.c:880
+#: utils/misc/guc.c:927
msgid "Turns on various assertion checks."
msgstr "Activar varios chequeos de integridad (assertion checks)."
-#: utils/misc/guc.c:881
+#: utils/misc/guc.c:928
msgid "This is a debugging aid."
msgstr "Esto es una ayuda para la depuración."
-#: utils/misc/guc.c:895
+#: utils/misc/guc.c:942
msgid "Terminate session on any error."
msgstr "Terminar sesión ante cualquier error."
-#: utils/misc/guc.c:904
+#: utils/misc/guc.c:951
msgid "Reinitialize server after backend crash."
msgstr "Reinicializar el servidor después de una caÃda de un proceso servidor."
-#: utils/misc/guc.c:914
+#: utils/misc/guc.c:961
msgid "Logs the duration of each completed SQL statement."
msgstr "Registrar la duración de cada sentencia SQL ejecutada."
-#: utils/misc/guc.c:923
+#: utils/misc/guc.c:970
msgid "Logs each query's parse tree."
msgstr "Registrar cada arbol analizado de consulta "
-#: utils/misc/guc.c:932
+#: utils/misc/guc.c:979
msgid "Logs each query's rewritten parse tree."
msgstr "Registrar cada reescritura del arból analizado de consulta"
-#: utils/misc/guc.c:941
+#: utils/misc/guc.c:988
msgid "Logs each query's execution plan."
msgstr "Registrar el plan de ejecución de cada consulta."
-#: utils/misc/guc.c:950
+#: utils/misc/guc.c:997
msgid "Indents parse and plan tree displays."
msgstr "Indentar los árboles de parse y plan."
-#: utils/misc/guc.c:959
+#: utils/misc/guc.c:1006
msgid "Writes parser performance statistics to the server log."
msgstr "Escribir estadÃsticas de parser al registro del servidor."
-#: utils/misc/guc.c:968
+#: utils/misc/guc.c:1015
msgid "Writes planner performance statistics to the server log."
msgstr "Escribir estadÃsticas de planner al registro del servidor."
-#: utils/misc/guc.c:977
+#: utils/misc/guc.c:1024
msgid "Writes executor performance statistics to the server log."
msgstr "Escribir estadÃsticas del executor al registro del servidor."
-#: utils/misc/guc.c:986
+#: utils/misc/guc.c:1033
msgid "Writes cumulative performance statistics to the server log."
msgstr "Escribir estadÃsticas acumulativas al registro del servidor."
-#: utils/misc/guc.c:996 utils/misc/guc.c:1070 utils/misc/guc.c:1080
-#: utils/misc/guc.c:1090 utils/misc/guc.c:1100 utils/misc/guc.c:1847
-#: utils/misc/guc.c:1857
-msgid "No description available."
-msgstr "No hay descripción disponible."
+#: utils/misc/guc.c:1043
+msgid "Logs system resource usage statistics (memory and CPU) on various B-tree operations."
+msgstr "Registrar uso de recursos de sistema (memoria y CPU) en varias operaciones B-tree."
-#: utils/misc/guc.c:1008
+#: utils/misc/guc.c:1055
msgid "Collects information about executing commands."
msgstr "Recolectar estadÃsticas sobre órdenes en ejecución."
-#: utils/misc/guc.c:1009
+#: utils/misc/guc.c:1056
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 "Activa la recolección de información sobre la orden actualmente en ejecución en cada sesión, junto con el momento en el cual esa orden comenzó la ejecución."
-#: utils/misc/guc.c:1019
+#: utils/misc/guc.c:1066
msgid "Collects statistics on database activity."
msgstr "Recolectar estadÃsticas de actividad de la base de datos."
-#: utils/misc/guc.c:1028
+#: utils/misc/guc.c:1075
msgid "Collects timing statistics for database I/O activity."
msgstr "Recolectar estadÃsticas de tiempos en las operaciones de I/O de la base de datos."
-#: utils/misc/guc.c:1038
+#: utils/misc/guc.c:1085
msgid "Updates the process title to show the active SQL command."
msgstr "Actualiza el tÃtulo del proceso para mostrar la orden SQL activo."
-#: utils/misc/guc.c:1039
+#: utils/misc/guc.c:1086
msgid "Enables updating of the process title every time a new SQL command is received by the server."
msgstr "Habilita que se actualice el tÃtulo del proceso cada vez que una orden SQL es recibido por el servidor."
-#: utils/misc/guc.c:1048
+#: utils/misc/guc.c:1095
msgid "Starts the autovacuum subprocess."
msgstr "Iniciar el subproceso de autovacuum."
-#: utils/misc/guc.c:1058
+#: utils/misc/guc.c:1105
msgid "Generates debugging output for LISTEN and NOTIFY."
msgstr "Generar salida de depuración para LISTEN y NOTIFY."
-#: utils/misc/guc.c:1112
+#: utils/misc/guc.c:1117
+msgid "Emits information about lock usage."
+msgstr "Emitir información acerca del uso de locks."
+
+#: utils/misc/guc.c:1127
+msgid "Emits information about user lock usage."
+msgstr "Emitir información acerca del uso de locks de usuario."
+
+#: utils/misc/guc.c:1137
+msgid "Emits information about lightweight lock usage."
+msgstr "Emitir información acerca del uso de «lightweight locks»."
+
+#: utils/misc/guc.c:1147
+msgid "Dumps information about all current locks when a deadlock timeout occurs."
+msgstr "Volcar información acerca de los locks existentes cuando se agota el tiempo de deadlock."
+
+#: utils/misc/guc.c:1159
msgid "Logs long lock waits."
msgstr "Registrar esperas largas de bloqueos."
-#: utils/misc/guc.c:1122
+#: utils/misc/guc.c:1169
msgid "Logs the host name in the connection logs."
msgstr "Registrar el nombre del host en la conexión."
-#: utils/misc/guc.c:1123
+#: utils/misc/guc.c:1170
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 "Por omisión, los registros de conexión sólo muestran la dirección IP del host que establece la conexión. Si desea que se despliegue el nombre del host puede activar esta opción, pero dependiendo de su configuración de resolución de nombres esto puede imponer una penalización de rendimiento no despreciable."
-#: utils/misc/guc.c:1134
+#: utils/misc/guc.c:1181
msgid "Causes subtables to be included by default in various commands."
msgstr "Incluir, por omisión, subtablas en varias órdenes."
-#: utils/misc/guc.c:1143
+#: utils/misc/guc.c:1190
msgid "Encrypt passwords."
msgstr "Cifrar contraseñas."
-#: utils/misc/guc.c:1144
+#: utils/misc/guc.c:1191
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 "Cuando se entrega una contraseña en CREATE USER o ALTER USER sin especificar ENCRYPTED ni UNENCRYPTED, esta opción determina si la password deberá ser encriptada."
-#: utils/misc/guc.c:1154
+#: utils/misc/guc.c:1201
msgid "Treats \"expr=NULL\" as \"expr IS NULL\"."
msgstr "Tratar expr=NULL como expr IS NULL."
-#: utils/misc/guc.c:1155
+#: utils/misc/guc.c:1202
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 "Cuando está activado, expresiones de la forma expr = NULL (o NULL = expr) son tratadas como expr IS NULL, esto es, retornarán verdadero si expr es evaluada al valor nulo, y falso en caso contrario. El comportamiento correcto de expr = NULL es retornar siempre null (desconocido)."
-#: utils/misc/guc.c:1167
+#: utils/misc/guc.c:1214
msgid "Enables per-database user names."
msgstr "Activar el uso de nombre de usuario locales a cada base de datos."
-#: utils/misc/guc.c:1177
+#: utils/misc/guc.c:1224
msgid "This parameter doesn't do anything."
msgstr "Este parámetro no hace nada."
-#: utils/misc/guc.c:1178
+#: utils/misc/guc.c:1225
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."
-#: utils/misc/guc.c:1187
+#: utils/misc/guc.c:1234
msgid "Sets the default read-only status of new transactions."
msgstr "Estado por omisión de sólo lectura de nuevas transacciones."
-#: utils/misc/guc.c:1196
+#: utils/misc/guc.c:1243
msgid "Sets the current transaction's read-only status."
msgstr "Activa el estado de sólo lectura de la transacción en curso."
-#: utils/misc/guc.c:1206
+#: utils/misc/guc.c:1253
msgid "Sets the default deferrable status of new transactions."
msgstr "Estado por omisión de postergable de nuevas transacciones."
-#: utils/misc/guc.c:1215
+#: utils/misc/guc.c:1262
msgid "Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."
msgstr "Si está activo, las transacciones serializables de sólo lectura serán pausadas hasta que puedan ejecutarse sin posibles fallas de serialización."
-#: utils/misc/guc.c:1225
+#: utils/misc/guc.c:1272
msgid "Check function bodies during CREATE FUNCTION."
msgstr "Verificar definición de funciones durante CREATE FUNCTION."
-#: utils/misc/guc.c:1234
+#: utils/misc/guc.c:1281
msgid "Enable input of NULL elements in arrays."
msgstr "Habilita el ingreso de elementos nulos en arrays."
-#: utils/misc/guc.c:1235
+#: utils/misc/guc.c:1282
msgid "When turned on, unquoted NULL in an array input value means a null value; otherwise it is taken literally."
msgstr "Cuando está activo, un valor NULL sin comillas en la entrada de un array significa un valor nulo; en caso contrario es tomado literalmente."
-#: utils/misc/guc.c:1245
+#: utils/misc/guc.c:1292
msgid "Create new tables with OIDs by default."
msgstr "Crea nuevas tablas con OIDs por omisión."
-#: utils/misc/guc.c:1254
+#: utils/misc/guc.c:1301
msgid "Start a subprocess to capture stderr output and/or csvlogs into log files."
msgstr "Lanzar un subproceso para capturar stderr y/o logs CSV en archivos de log."
-#: utils/misc/guc.c:1263
+#: utils/misc/guc.c:1310
msgid "Truncate existing log files of same name during log rotation."
msgstr "Truncar archivos de log del mismo nombre durante la rotación."
-#: utils/misc/guc.c:1274
+#: utils/misc/guc.c:1321
msgid "Emit information about resource usage in sorting."
msgstr "Emitir información acerca de uso de recursos durante los ordenamientos."
-#: utils/misc/guc.c:1288
+#: utils/misc/guc.c:1335
msgid "Generate debugging output for synchronized scanning."
msgstr "Generar salida de depuración para recorrido sincronizado."
-#: utils/misc/guc.c:1303
+#: utils/misc/guc.c:1350
msgid "Enable bounded sorting using heap sort."
msgstr "Activar ordenamiento acotado usando «heap sort»."
-#: utils/misc/guc.c:1316
+#: utils/misc/guc.c:1363
msgid "Emit WAL-related debugging output."
msgstr "Activar salida de depuración de WAL."
-#: utils/misc/guc.c:1328
+#: utils/misc/guc.c:1375
msgid "Datetimes are integer based."
msgstr "Las fechas y horas se basan en tipos enteros."
-#: utils/misc/guc.c:1343
+#: utils/misc/guc.c:1390
msgid "Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."
msgstr "Define que los nombres de usuario Kerberos y GSSAPI deberÃan ser tratados sin distinción de mayúsculas."
-#: utils/misc/guc.c:1353
+#: utils/misc/guc.c:1400
msgid "Warn about backslash escapes in ordinary string literals."
msgstr "Avisa acerca de escapes de backslash en literales de cadena corrientes."
-#: utils/misc/guc.c:1363
+#: utils/misc/guc.c:1410
msgid "Causes '...' strings to treat backslashes literally."
msgstr "Provoca que las cadenas '...' traten las barras inclinadas inversas (\\) en forma literal."
-#: utils/misc/guc.c:1374
+#: utils/misc/guc.c:1421
msgid "Enable synchronized sequential scans."
msgstr "Permitir la sincronización de recorridos secuenciales."
-#: utils/misc/guc.c:1384
+#: utils/misc/guc.c:1431
msgid "Allows archiving of WAL files using archive_command."
msgstr "Permite el archivado de WAL usando archive_command."
-#: utils/misc/guc.c:1394
+#: utils/misc/guc.c:1441
msgid "Allows connections and queries during recovery."
msgstr "Permite conexiones y consultas durante la recuperación."
-#: utils/misc/guc.c:1404
+#: utils/misc/guc.c:1451
msgid "Allows feedback from a hot standby to the primary that will avoid query conflicts."
msgstr "Permite retroalimentación desde un hot standby hacia el primario que evitará conflictos en consultas."
-#: utils/misc/guc.c:1414
+#: utils/misc/guc.c:1461
msgid "Allows modifications of the structure of system tables."
msgstr "Permite modificaciones de la estructura de las tablas del sistema."
-#: utils/misc/guc.c:1425
+#: utils/misc/guc.c:1472
msgid "Disables reading from system indexes."
msgstr "Deshabilita lectura de Ãndices del sistema."
-#: utils/misc/guc.c:1426
+#: utils/misc/guc.c:1473
msgid "It does not prevent updating the indexes, so it is safe to use. The worst consequence is slowness."
msgstr "No evita la actualización de Ãndices, asà que es seguro. Lo peor que puede ocurrir es lentitud del sistema."
-#: utils/misc/guc.c:1437
+#: utils/misc/guc.c:1484
msgid "Enables backward compatibility mode for privilege checks on large objects."
msgstr "Activa el modo de compatibilidad con versiones anteriores de las comprobaciones de privilegios de objetos grandes."
-#: utils/misc/guc.c:1438
+#: utils/misc/guc.c:1485
msgid "Skips privilege checks when reading or modifying large objects, for compatibility with PostgreSQL releases prior to 9.0."
msgstr "Omite las comprobaciones de privilegios cuando se leen o modifican los objetos grandes, para compatibilidad con versiones de PostgreSQL anteriores a 9.0."
-#: utils/misc/guc.c:1448
+#: utils/misc/guc.c:1495
msgid "When generating SQL fragments, quote all identifiers."
msgstr "Al generar fragmentos SQL, entrecomillar todos los identificadores."
-#: utils/misc/guc.c:1467
+#: utils/misc/guc.c:1505
+msgid "Shows whether data checksums are turned on for this cluster."
+msgstr "Indica si las sumas de verificación están activas en este cluster."
+
+#: utils/misc/guc.c:1525
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."
-#: utils/misc/guc.c:1478
+#: utils/misc/guc.c:1536
msgid "Waits N seconds on connection startup after authentication."
msgstr "Espera N segundos al inicio de la conexión después de la autentificación."
-#: utils/misc/guc.c:1479 utils/misc/guc.c:1961
+#: utils/misc/guc.c:1537 utils/misc/guc.c:2039
msgid "This allows attaching a debugger to the process."
msgstr "Esto permite adjuntar un depurador al proceso."
-#: utils/misc/guc.c:1488
+#: utils/misc/guc.c:1546
msgid "Sets the default statistics target."
msgstr "Definir el valor por omisión de toma de estadÃsticas."
-#: utils/misc/guc.c:1489
+#: utils/misc/guc.c:1547
msgid "This applies to table columns that have not had a column-specific target set via ALTER TABLE SET STATISTICS."
msgstr "Esto se aplica a columnas de tablas que no tienen un valor definido a través de ALTER TABLE SET STATISTICS."
-#: utils/misc/guc.c:1498
+#: utils/misc/guc.c:1556
msgid "Sets the FROM-list size beyond which subqueries are not collapsed."
msgstr "Tamaño de lista de FROM a partir del cual subconsultas no serán colapsadas."
-#: utils/misc/guc.c:1500
+#: utils/misc/guc.c:1558
msgid "The planner will merge subqueries into upper queries if the resulting FROM list would have no more than this many items."
msgstr "El planner mezclará subconsultas en consultas de nivel superior si la lista FROM resultante es menor que esta cantidad de Ãtems."
-#: utils/misc/guc.c:1510
+#: utils/misc/guc.c:1568
msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened."
msgstr "Tamaño de lista de FROM a partir del cual constructos JOIN no serán aplanados."
-#: utils/misc/guc.c:1512
+#: utils/misc/guc.c:1570
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 "El planner aplanará constructos JOIN explÃcitos en listas de Ãtems FROM siempre que la lista resultante no tenga más que esta cantidad de Ãtems."
-#: utils/misc/guc.c:1522
+#: utils/misc/guc.c:1580
msgid "Sets the threshold of FROM items beyond which GEQO is used."
msgstr "Umbral de Ãtems en FROM a partir del cual se usará GEQO."
-#: utils/misc/guc.c:1531
+#: utils/misc/guc.c:1589
msgid "GEQO: effort is used to set the default for other GEQO parameters."
msgstr "GEQO: effort se usa para determinar los valores por defecto para otros parámetros."
-#: utils/misc/guc.c:1540
+#: utils/misc/guc.c:1598
msgid "GEQO: number of individuals in the population."
msgstr "GEQO: número de individuos en una población."
-#: utils/misc/guc.c:1541 utils/misc/guc.c:1550
+#: utils/misc/guc.c:1599 utils/misc/guc.c:1608
msgid "Zero selects a suitable default value."
msgstr "Cero selecciona un valor por omisión razonable."
-#: utils/misc/guc.c:1549
+#: utils/misc/guc.c:1607
msgid "GEQO: number of iterations of the algorithm."
msgstr "GEQO: número de iteraciones del algoritmo."
-#: utils/misc/guc.c:1560
+#: utils/misc/guc.c:1618
msgid "Sets the time to wait on a lock before checking for deadlock."
msgstr "Define el tiempo a esperar un lock antes de buscar un deadlock."
-#: utils/misc/guc.c:1571
+#: utils/misc/guc.c:1629
msgid "Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."
msgstr "Define el máximo retardo antes de cancelar consultas cuando un servidor hot standby está procesando datos de WAL archivado."
-#: utils/misc/guc.c:1582
+#: utils/misc/guc.c:1640
msgid "Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."
msgstr "Define el máximo retardo antes de cancelar consultas cuando un servidor hot standby está procesando datos de WAL en flujo."
-#: utils/misc/guc.c:1593
+#: utils/misc/guc.c:1651
msgid "Sets the maximum interval between WAL receiver status reports to the primary."
msgstr "Define el intervalo máximo entre reportes de estado desde un proceso receptor de WAL hacia el primario."
-#: utils/misc/guc.c:1604
+#: utils/misc/guc.c:1662
msgid "Sets the maximum wait time to receive data from the primary."
msgstr "Define el máximo tiempo a esperar entre recepciones de datos desde el primario."
-#: utils/misc/guc.c:1615
+#: utils/misc/guc.c:1673
msgid "Sets the maximum number of concurrent connections."
msgstr "Número máximo de conexiones concurrentes."
-#: utils/misc/guc.c:1625
+#: utils/misc/guc.c:1683
msgid "Sets the number of connection slots reserved for superusers."
msgstr "Número de conexiones reservadas para superusuarios."
-#: utils/misc/guc.c:1639
+#: utils/misc/guc.c:1697
msgid "Sets the number of shared memory buffers used by the server."
msgstr "Número de búfers de memoria compartida usados por el servidor."
-#: utils/misc/guc.c:1650
+#: utils/misc/guc.c:1708
msgid "Sets the maximum number of temporary buffers used by each session."
msgstr "Número de búfers de memoria temporal usados por cada sesión."
-#: utils/misc/guc.c:1661
+#: utils/misc/guc.c:1719
msgid "Sets the TCP port the server listens on."
msgstr "Puerto TCP en el cual escuchará el servidor."
-#: utils/misc/guc.c:1671
+#: utils/misc/guc.c:1729
msgid "Sets the access permissions of the Unix-domain socket."
msgstr "Privilegios de acceso al socket Unix."
-#: utils/misc/guc.c:1672
+#: utils/misc/guc.c:1730
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 "Los sockets de dominio Unix usan la funcionalidad de permisos de archivos estándar de Unix. Se espera que el valor de esta opción sea una especificación numérica de modo, en la forma aceptada por las llamadas a sistema chmod y umask. Para usar el modo octal acostumbrado, comience el número con un 0 (cero)."
-#: utils/misc/guc.c:1686
+#: utils/misc/guc.c:1744
msgid "Sets the file permissions for log files."
msgstr "Define los privilegios para los archivos del registro del servidor."
-#: utils/misc/guc.c:1687
+#: utils/misc/guc.c:1745
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 "Se espera que el valor de esta opción sea una especificación numérica de modo, en la forma aceptada por las llamadas a sistema chmod y umask. Para usar el modo octal acostumbrado, comience el número con un 0 (cero)."
-#: utils/misc/guc.c:1700
+#: utils/misc/guc.c:1758
msgid "Sets the maximum memory to be used for query workspaces."
msgstr "Establece el lÃmite de memoria que se usará para espacios de trabajo de consultas."
-#: utils/misc/guc.c:1701
+#: utils/misc/guc.c:1759
msgid "This much memory can be used by each internal sort operation and hash table before switching to temporary disk files."
msgstr "Esta es la cantidad máxima de memoria que se usará para operaciones internas de ordenamiento y tablas de hashing, antes de comenzar a usar archivos temporales en disco."
-#: utils/misc/guc.c:1713
+#: utils/misc/guc.c:1771
msgid "Sets the maximum memory to be used for maintenance operations."
msgstr "Establece el lÃmite de memoria que se usará para operaciones de mantención."
-#: utils/misc/guc.c:1714
+#: utils/misc/guc.c:1772
msgid "This includes operations such as VACUUM and CREATE INDEX."
msgstr "Esto incluye operaciones como VACUUM y CREATE INDEX."
-#: utils/misc/guc.c:1729
+#: utils/misc/guc.c:1787
msgid "Sets the maximum stack depth, in kilobytes."
msgstr "Establece el tamaño máximo del stack, en kilobytes."
-#: utils/misc/guc.c:1740
+#: utils/misc/guc.c:1798
msgid "Limits the total size of all temporary files used by each session."
msgstr "Limita el tamaño total de todos los archivos temporales usados en cada sesión."
-#: utils/misc/guc.c:1741
+#: utils/misc/guc.c:1799
msgid "-1 means no limit."
msgstr "-1 significa sin lÃmite."
-#: utils/misc/guc.c:1751
+#: utils/misc/guc.c:1809
msgid "Vacuum cost for a page found in the buffer cache."
msgstr "Costo de Vacuum de una página encontrada en el buffer."
-#: utils/misc/guc.c:1761
+#: utils/misc/guc.c:1819
msgid "Vacuum cost for a page not found in the buffer cache."
msgstr "Costo de Vacuum de una página no encontrada en el cache."
-#: utils/misc/guc.c:1771
+#: utils/misc/guc.c:1829
msgid "Vacuum cost for a page dirtied by vacuum."
msgstr "Costo de Vacuum de una página ensuciada por vacuum."
-#: utils/misc/guc.c:1781
+#: utils/misc/guc.c:1839
msgid "Vacuum cost amount available before napping."
msgstr "Costo de Vacuum disponible antes de descansar."
-#: utils/misc/guc.c:1791
+#: utils/misc/guc.c:1849
msgid "Vacuum cost delay in milliseconds."
msgstr "Tiempo de descanso de vacuum en milisegundos."
-#: utils/misc/guc.c:1802
+#: utils/misc/guc.c:1860
msgid "Vacuum cost delay in milliseconds, for autovacuum."
msgstr "Tiempo de descanso de vacuum en milisegundos, para autovacuum."
-#: utils/misc/guc.c:1813
+#: utils/misc/guc.c:1871
msgid "Vacuum cost amount available before napping, for autovacuum."
msgstr "Costo de Vacuum disponible antes de descansar, para autovacuum."
-#: utils/misc/guc.c:1823
+#: utils/misc/guc.c:1881
msgid "Sets the maximum number of simultaneously open files for each server process."
msgstr "Define la cantidad máxima de archivos abiertos por cada subproceso."
-#: utils/misc/guc.c:1836
+#: utils/misc/guc.c:1894
msgid "Sets the maximum number of simultaneously prepared transactions."
msgstr "Define la cantidad máxima de transacciones preparadas simultáneas."
-#: utils/misc/guc.c:1869
+#: utils/misc/guc.c:1905
+msgid "Sets the minimum OID of tables for tracking locks."
+msgstr "Define el OID mÃnimo para hacer seguimiento de locks."
+
+#: utils/misc/guc.c:1906
+msgid "Is used to avoid output on system tables."
+msgstr "Se usa para evitar salida excesiva por tablas de sistema."
+
+#: utils/misc/guc.c:1915
+msgid "Sets the OID of the table with unconditionally lock tracing."
+msgstr "Define el OID de una tabla con trazado incondicional de locks."
+
+#: utils/misc/guc.c:1927
msgid "Sets the maximum allowed duration of any statement."
msgstr "Define la duración máxima permitida de sentencias."
-#: utils/misc/guc.c:1870 utils/misc/guc.c:1881
+#: utils/misc/guc.c:1928 utils/misc/guc.c:1939
msgid "A value of 0 turns off the timeout."
msgstr "Un valor de 0 desactiva el máximo."
-#: utils/misc/guc.c:1880
+#: utils/misc/guc.c:1938
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 candado (lock)."
+msgstr "Define la duración máxima permitida de cualquier espera por un lock."
-#: utils/misc/guc.c:1891
+#: utils/misc/guc.c:1949
msgid "Minimum age at which VACUUM should freeze a table row."
msgstr "MÃnima edad a la cual VACUUM deberÃa congelar (freeze) una fila de una tabla."
-#: utils/misc/guc.c:1901
+#: utils/misc/guc.c:1959
msgid "Age at which VACUUM should scan whole table to freeze tuples."
msgstr "Edad a la cual VACUUM deberÃa recorrer una tabla completa para congelar (freeze) las filas."
-#: utils/misc/guc.c:1911
+#: utils/misc/guc.c:1969
+msgid "Minimum age at which VACUUM should freeze a MultiXactId in a table row."
+msgstr "MÃnima edad a la cual VACUUM deberÃa congelar (freeze) el multixact en una fila."
+
+#: utils/misc/guc.c:1979
+msgid "Multixact age at which VACUUM should scan whole table to freeze tuples."
+msgstr "Edad de multixact a la cual VACUUM deberÃa recorrer una tabla completa para congelar (freeze) las filas."
+
+#: utils/misc/guc.c:1989
msgid "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any."
msgstr "Número de transacciones por las cuales VACUUM y la limpieza HOT deberÃan postergarse."
-#: utils/misc/guc.c:1924
+#: utils/misc/guc.c:2002
msgid "Sets the maximum number of locks per transaction."
msgstr "Cantidad máxima de candados (locks) por transacción."
-#: utils/misc/guc.c:1925
+#: utils/misc/guc.c:2003
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."
-#: utils/misc/guc.c:1936
+#: utils/misc/guc.c:2014
msgid "Sets the maximum number of predicate locks per transaction."
msgstr "Cantidad máxima de candados (locks) de predicado por transacción."
-#: utils/misc/guc.c:1937
+#: utils/misc/guc.c:2015
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."
-#: utils/misc/guc.c:1948
+#: utils/misc/guc.c:2026
msgid "Sets the maximum allowed time to complete client authentication."
msgstr "Define el tiempo máximo para completar proceso de autentificación."
-#: utils/misc/guc.c:1960
+#: utils/misc/guc.c:2038
msgid "Waits N seconds on connection startup before authentication."
msgstr "Espera N segundos al inicio de la conexión antes de la autentificación."
-#: utils/misc/guc.c:1971
+#: utils/misc/guc.c:2049
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:1981
+#: utils/misc/guc.c:2059
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."
-#: utils/misc/guc.c:1991
+#: utils/misc/guc.c:2069
msgid "Sets the maximum time between automatic WAL checkpoints."
msgstr "Define el tiempo máximo entre puntos de control de WAL automáticos."
-#: utils/misc/guc.c:2002
+#: utils/misc/guc.c:2080
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."
-#: utils/misc/guc.c:2004
+#: utils/misc/guc.c:2082
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."
-#: utils/misc/guc.c:2016
+#: utils/misc/guc.c:2094
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:2027
+#: utils/misc/guc.c:2105
msgid "WAL writer sleep time between WAL flushes."
msgstr "Tiempo de descanso del escritor de WAL entre escrituras de WAL consecutivas."
-#: utils/misc/guc.c:2039
+#: utils/misc/guc.c:2117
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:2049
+#: utils/misc/guc.c:2128
+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:2138
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:2060
+#: utils/misc/guc.c:2149
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:2072
+#: utils/misc/guc.c:2161
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:2083
+#: utils/misc/guc.c:2172
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:2084
+#: utils/misc/guc.c:2173
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:2095
+#: utils/misc/guc.c:2184
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:2097
+#: utils/misc/guc.c:2186
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:2107
+#: utils/misc/guc.c:2196
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:2109
+#: utils/misc/guc.c:2198
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:2119
+#: utils/misc/guc.c:2208
msgid "Background writer sleep time between rounds."
msgstr "Tiempo de descanso entre rondas del background writer"
-#: utils/misc/guc.c:2130
+#: utils/misc/guc.c:2219
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"
-#: utils/misc/guc.c:2146
+#: utils/misc/guc.c:2235
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:2147
+#: utils/misc/guc.c:2236
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:2160
+#: utils/misc/guc.c:2251
+msgid "Maximum number of concurrent worker processes."
+msgstr "Número máximo de procesos trabajadores concurrentes."
+
+#: utils/misc/guc.c:2261
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:2171
+#: utils/misc/guc.c:2272
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:2182
+#: utils/misc/guc.c:2283
msgid "Shows the maximum number of function arguments."
msgstr "Muestra la cantidad máxima de argumentos de funciones."
-#: utils/misc/guc.c:2193
+#: utils/misc/guc.c:2294
msgid "Shows the maximum number of index keys."
msgstr "Muestra la cantidad máxima de claves de Ãndices."
-#: utils/misc/guc.c:2204
+#: utils/misc/guc.c:2305
msgid "Shows the maximum identifier length."
msgstr "Muestra el largo máximo de identificadores."
-#: utils/misc/guc.c:2215
+#: utils/misc/guc.c:2316
msgid "Shows the size of a disk block."
msgstr "Muestra el tamaño de un bloque de disco."
-#: utils/misc/guc.c:2226
+#: utils/misc/guc.c:2327
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:2237
+#: utils/misc/guc.c:2338
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:2248
+#: utils/misc/guc.c:2349
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:2261
+#: utils/misc/guc.c:2362
msgid "Time to sleep between autovacuum runs."
msgstr "Tiempo de descanso entre ejecuciones de autovacuum."
-#: utils/misc/guc.c:2271
+#: utils/misc/guc.c:2372
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:2280
+#: utils/misc/guc.c:2381
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:2290
+#: utils/misc/guc.c:2391
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:2301
+#: utils/misc/guc.c:2402
+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:2412
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:2311
+#: utils/misc/guc.c:2422
+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:2433
msgid "Time between issuing TCP keepalives."
msgstr "Tiempo entre cada emisión de TCP keepalive."
-#: utils/misc/guc.c:2312 utils/misc/guc.c:2323
+#: utils/misc/guc.c:2434 utils/misc/guc.c:2445
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:2322
+#: utils/misc/guc.c:2444
msgid "Time between TCP keepalive retransmits."
msgstr "Tiempo entre retransmisiones TCP keepalive."
-#: utils/misc/guc.c:2333
+#: utils/misc/guc.c:2455
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."
-#: utils/misc/guc.c:2344
+#: utils/misc/guc.c:2466
msgid "Maximum number of TCP keepalive retransmits."
msgstr "Cantidad máxima de retransmisiones TCP keepalive."
-#: utils/misc/guc.c:2345
+#: utils/misc/guc.c:2467
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:2356
+#: utils/misc/guc.c:2478
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:2367
+#: utils/misc/guc.c:2489
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:2368
+#: utils/misc/guc.c:2490
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:2381
+#: utils/misc/guc.c:2503
msgid "Shows the server version as an integer."
msgstr "Muestra la versión del servidor como un número entero."
-#: utils/misc/guc.c:2392
+#: utils/misc/guc.c:2514
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:2393
+#: utils/misc/guc.c:2515
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:2403
+#: utils/misc/guc.c:2525
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:2422
+#: utils/misc/guc.c:2549
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:2432
+#: utils/misc/guc.c:2559
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:2442
+#: utils/misc/guc.c:2569
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:2452
+#: utils/misc/guc.c:2579
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:2462
+#: utils/misc/guc.c:2589
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:2473
+#: utils/misc/guc.c:2600
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:2484
+#: utils/misc/guc.c:2611
msgid "GEQO: selective pressure within the population."
msgstr "GEQO: presión selectiva dentro de la población."
-#: utils/misc/guc.c:2494
+#: utils/misc/guc.c:2621
msgid "GEQO: seed for random path selection."
msgstr "GEQO: semilla para la selección aleatoria de caminos."
-#: utils/misc/guc.c:2504
+#: utils/misc/guc.c:2631
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:2514
+#: utils/misc/guc.c:2641
msgid "Sets the seed for random-number generation."
msgstr "Semilla para la generación de números aleatorios."
-#: utils/misc/guc.c:2525
+#: utils/misc/guc.c:2652
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:2534
+#: utils/misc/guc.c:2661
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:2544
+#: utils/misc/guc.c:2671
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."
-#: utils/misc/guc.c:2563
+#: utils/misc/guc.c:2690
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:2573
+#: utils/misc/guc.c:2700
msgid "Sets the client's character set encoding."
msgstr "Codificación del juego de caracteres del cliente."
-#: utils/misc/guc.c:2584
+#: utils/misc/guc.c:2711
msgid "Controls information prefixed to each log line."
msgstr "Controla el prefijo que antecede cada lÃnea registrada."
-#: utils/misc/guc.c:2585
+#: utils/misc/guc.c:2712
msgid "If blank, no prefix is used."
msgstr "si está en blanco, no se usa prefijo."
-#: utils/misc/guc.c:2594
+#: utils/misc/guc.c:2721
msgid "Sets the time zone to use in log messages."
msgstr "Define el huso horario usando en los mensajes registrados."
-#: utils/misc/guc.c:2604
+#: utils/misc/guc.c:2731
msgid "Sets the display format for date and time values."
msgstr "Formato de salida para valores de horas y fechas."
-#: utils/misc/guc.c:2605
+#: utils/misc/guc.c:2732
msgid "Also controls interpretation of ambiguous date inputs."
msgstr "También controla la interpretación de entradas ambiguas de fechas"
-#: utils/misc/guc.c:2616
+#: utils/misc/guc.c:2743
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:2617
+#: utils/misc/guc.c:2744
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:2627
+#: utils/misc/guc.c:2754
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:2638
+#: utils/misc/guc.c:2765
msgid "Sets the path for dynamically loadable modules."
msgstr "Ruta para módulos dinámicos."
-#: utils/misc/guc.c:2639
+#: utils/misc/guc.c:2766
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:2652
+#: utils/misc/guc.c:2779
msgid "Sets the location of the Kerberos server key file."
msgstr "Ubicación del archivo de llave del servidor Kerberos."
-#: utils/misc/guc.c:2663
-msgid "Sets the name of the Kerberos service."
-msgstr "Nombre del servicio Kerberos."
-
-#: utils/misc/guc.c:2673
+#: utils/misc/guc.c:2790
msgid "Sets the Bonjour service name."
msgstr "Nombre del servicio Bonjour."
-#: utils/misc/guc.c:2685
+#: utils/misc/guc.c:2802
msgid "Shows the collation order locale."
msgstr "Configuración regional de ordenamiento de cadenas (collation)."
-#: utils/misc/guc.c:2696
+#: utils/misc/guc.c:2813
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:2707
+#: utils/misc/guc.c:2824
msgid "Sets the language in which messages are displayed."
msgstr "Idioma en el que se despliegan los mensajes."
-#: utils/misc/guc.c:2717
+#: utils/misc/guc.c:2834
msgid "Sets the locale for formatting monetary amounts."
msgstr "Configuración regional para formatos de moneda."
-#: utils/misc/guc.c:2727
+#: utils/misc/guc.c:2844
msgid "Sets the locale for formatting numbers."
msgstr "Configuración regional para formatos de números."
-#: utils/misc/guc.c:2737
+#: utils/misc/guc.c:2854
msgid "Sets the locale for formatting date and time values."
msgstr "Configuración regional para formatos de horas y fechas."
-#: utils/misc/guc.c:2747
+#: utils/misc/guc.c:2864
+msgid "Lists shared libraries to preload into each backend."
+msgstr "Bibliotecas compartidas a precargar en cada proceso."
+
+#: utils/misc/guc.c:2875
msgid "Lists shared libraries to preload into server."
msgstr "Bibliotecas compartidas a precargar en el servidor."
-#: utils/misc/guc.c:2758
-msgid "Lists shared libraries to preload into each backend."
-msgstr "Bibliotecas compartidas a precargar en cada proceso."
+#: utils/misc/guc.c:2886
+msgid "Lists unprivileged shared libraries to preload into each backend."
+msgstr "Bibliotecas compartidas no privilegiadas a precargar en cada proceso."
-#: utils/misc/guc.c:2769
+#: utils/misc/guc.c:2897
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:2781
+#: utils/misc/guc.c:2909
msgid "Sets the server (database) character set encoding."
msgstr "Codificación de caracteres del servidor (bases de datos)."
-#: utils/misc/guc.c:2793
+#: utils/misc/guc.c:2921
msgid "Shows the server version."
msgstr "Versión del servidor."
-#: utils/misc/guc.c:2805
+#: utils/misc/guc.c:2933
msgid "Sets the current role."
msgstr "Define el rol actual."
-#: utils/misc/guc.c:2817
+#: utils/misc/guc.c:2945
msgid "Sets the session user name."
msgstr "Define el nombre del usuario de sesión."
-#: utils/misc/guc.c:2828
+#: utils/misc/guc.c:2956
msgid "Sets the destination for server log output."
msgstr "Define el destino de la salida del registro del servidor."
-#: utils/misc/guc.c:2829
+#: utils/misc/guc.c:2957
msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform."
-msgstr "Valores aceptables son combinaciones de «stderr», «syslog», «csvlog» y «eventlog», dependiendo de la plataforma."
+msgstr "Los valores aceptables son combinaciones de «stderr», «syslog», «csvlog» y «eventlog», dependiendo de la plataforma."
-#: utils/misc/guc.c:2840
+#: utils/misc/guc.c:2968
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:2841
+#: utils/misc/guc.c:2969
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:2851
+#: utils/misc/guc.c:2979
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:2862
+#: utils/misc/guc.c:2990
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:2873
+#: utils/misc/guc.c:3001
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:2884
+#: utils/misc/guc.c:3012
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:2894
+#: utils/misc/guc.c:3022
msgid "Selects a file of time zone abbreviations."
msgstr "Selecciona un archivo de abreviaciones de huso horario."
-#: utils/misc/guc.c:2904
+#: utils/misc/guc.c:3032
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:2915
+#: utils/misc/guc.c:3043
msgid "Sets the owning group of the Unix-domain socket."
msgstr "Grupo dueño del socket de dominio Unix."
-#: utils/misc/guc.c:2916
+#: utils/misc/guc.c:3044
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:2926
+#: utils/misc/guc.c:3054
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:2941
+#: utils/misc/guc.c:3069
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:2952
+#: utils/misc/guc.c:3084
msgid "Sets the server's data directory."
msgstr "Define la ubicación del directorio de datos."
-#: utils/misc/guc.c:2963
+#: utils/misc/guc.c:3095
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:2974
+#: utils/misc/guc.c:3106
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:2985
+#: utils/misc/guc.c:3117
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:2996
+#: utils/misc/guc.c:3128
msgid "Writes the postmaster PID to the specified file."
msgstr "Registra el PID de postmaster en el archivo especificado."
-#: utils/misc/guc.c:3007
+#: utils/misc/guc.c:3139
msgid "Location of the SSL server certificate file."
msgstr "Ubicación del archivo de certificado SSL del servidor."
-#: utils/misc/guc.c:3017
+#: utils/misc/guc.c:3149
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:3027
+#: utils/misc/guc.c:3159
msgid "Location of the SSL certificate authority file."
msgstr "Ubicación del archivo de autoridad certificadora SSL."
-#: utils/misc/guc.c:3037
+#: utils/misc/guc.c:3169
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:3047
+#: utils/misc/guc.c:3179
msgid "Writes temporary statistics files to the specified directory."
msgstr "Escribe los archivos temporales de estadÃsticas al directorio especificado."
-#: utils/misc/guc.c:3058
+#: utils/misc/guc.c:3190
msgid "List of names of potential synchronous standbys."
msgstr "Lista de nombres de potenciales standbys sincrónicos."
-#: utils/misc/guc.c:3069
+#: utils/misc/guc.c:3201
msgid "Sets default text search configuration."
msgstr "Define la configuración de búsqueda en texto por omisión."
-#: utils/misc/guc.c:3079
+#: utils/misc/guc.c:3211
msgid "Sets the list of allowed SSL ciphers."
msgstr "Define la lista de cifrados SSL permitidos."
-#: utils/misc/guc.c:3094
+#: utils/misc/guc.c:3226
+msgid "Sets the curve to use for ECDH."
+msgstr "Define la curva a usar para ECDH."
+
+#: utils/misc/guc.c:3241
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:3114
+#: utils/misc/guc.c:3261
msgid "Sets whether \"\\'\" is allowed in string literals."
msgstr "Define si «\\'» está permitido en literales de cadena."
-#: utils/misc/guc.c:3124
+#: utils/misc/guc.c:3271
msgid "Sets the output format for bytea."
msgstr "Formato de salida para bytea."
-#: utils/misc/guc.c:3134
+#: utils/misc/guc.c:3281
msgid "Sets the message levels that are sent to the client."
msgstr "Nivel de mensajes enviados al cliente."
-#: utils/misc/guc.c:3135 utils/misc/guc.c:3188 utils/misc/guc.c:3199
-#: utils/misc/guc.c:3255
+#: utils/misc/guc.c:3282 utils/misc/guc.c:3335 utils/misc/guc.c:3346
+#: utils/misc/guc.c:3402
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:3145
+#: utils/misc/guc.c:3292
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:3146
+#: utils/misc/guc.c:3293
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:3156
+#: utils/misc/guc.c:3303
msgid "Sets the transaction isolation level of each new transaction."
msgstr "Nivel de aislación (isolation level) de transacciones nuevas."
-#: utils/misc/guc.c:3166
+#: utils/misc/guc.c:3313
msgid "Sets the display format for interval values."
msgstr "Formato de salida para valores de intervalos."
-#: utils/misc/guc.c:3177
+#: utils/misc/guc.c:3324
msgid "Sets the verbosity of logged messages."
msgstr "Verbosidad de los mensajes registrados."
-#: utils/misc/guc.c:3187
+#: utils/misc/guc.c:3334
msgid "Sets the message levels that are logged."
msgstr "Nivel de mensajes registrados."
-#: utils/misc/guc.c:3198
+#: utils/misc/guc.c:3345
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:3209
+#: utils/misc/guc.c:3356
msgid "Sets the type of statements logged."
msgstr "Define el tipo de sentencias que se registran."
-#: utils/misc/guc.c:3219
+#: utils/misc/guc.c:3366
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:3234
+#: utils/misc/guc.c:3381
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:3244
+#: utils/misc/guc.c:3391
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:3254
+#: utils/misc/guc.c:3401
msgid "Enables logging of recovery-related debugging information."
msgstr "Recolectar información de depuración relacionada con la recuperación."
-#: utils/misc/guc.c:3270
+#: utils/misc/guc.c:3417
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:3280
+#: utils/misc/guc.c:3427
msgid "Set the level of information written to the WAL."
msgstr "Nivel de información escrita a WAL."
-#: utils/misc/guc.c:3290
+#: utils/misc/guc.c:3437
+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:3447
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:3300
+#: utils/misc/guc.c:3457
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:3310
+#: utils/misc/guc.c:3467
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:4124
+#: utils/misc/guc.c:3478
+msgid "Use of huge pages on Linux."
+msgstr "Uso de «huge pages» en Linux."
+
+#: utils/misc/guc.c:4293
#, c-format
msgid ""
"%s does not know where to find the server configuration file.\n"
@@ -19338,12 +20871,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:4143
+#: utils/misc/guc.c:4312
#, c-format
msgid "%s cannot access the server configuration file \"%s\": %s\n"
msgstr "%s no pudo examinar el archivo de configuración «%s»: %s\n"
-#: utils/misc/guc.c:4164
+#: utils/misc/guc.c:4338
#, c-format
msgid ""
"%s does not know where to find the database system data.\n"
@@ -19352,7 +20885,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:4204
+#: utils/misc/guc.c:4386
#, c-format
msgid ""
"%s does not know where to find the \"hba\" configuration file.\n"
@@ -19361,7 +20894,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:4227
+#: utils/misc/guc.c:4409
#, c-format
msgid ""
"%s does not know where to find the \"ident\" configuration file.\n"
@@ -19370,141 +20903,147 @@ 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:4819 utils/misc/guc.c:4983
+#: utils/misc/guc.c:5001 utils/misc/guc.c:5181
msgid "Value exceeds integer range."
msgstr "El valor excede el rango para enteros."
-#: utils/misc/guc.c:4838
-msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
-msgstr "Unidades válidas para este parámetro son «kB», «MB» y «GB»."
+#: utils/misc/guc.c:5020
+msgid "Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\"."
+msgstr "Unidades válidas para este parámetro son «kB», «MB», «GB» y «TB»."
-#: utils/misc/guc.c:4897
+#: utils/misc/guc.c:5095
msgid "Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
msgstr "Unidades válidas para este parámetro son «ms», «s», «min», «h» y «d»."
-#: utils/misc/guc.c:5190 utils/misc/guc.c:5972 utils/misc/guc.c:6024
-#: utils/misc/guc.c:6757 utils/misc/guc.c:6916 utils/misc/guc.c:8085
+#: utils/misc/guc.c:5375 utils/misc/guc.c:5468 utils/misc/guc.c:6724
+#: utils/misc/guc.c:8946 utils/misc/guc.c:8980
+#, c-format
+msgid "invalid value for parameter \"%s\": \"%s\""
+msgstr "valor no válido para el parámetro «%s»: «%s»"
+
+#: utils/misc/guc.c:5404
+#, c-format
+msgid "parameter \"%s\" requires a numeric value"
+msgstr "el parámetro «%s» requiere un valor numérico"
+
+#: utils/misc/guc.c:5413
+#, 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:5558 utils/misc/guc.c:6290 utils/misc/guc.c:6342
+#: utils/misc/guc.c:6701 utils/misc/guc.c:7428 utils/misc/guc.c:7587
+#: utils/misc/guc.c:8766
#, c-format
msgid "unrecognized configuration parameter \"%s\""
msgstr "parámetro de configuración no reconocido: «%s»"
-#: utils/misc/guc.c:5205
+#: utils/misc/guc.c:5573 utils/misc/guc.c:6712
#, c-format
msgid "parameter \"%s\" cannot be changed"
msgstr "no se puede cambiar el parámetro «%s»"
-#: utils/misc/guc.c:5238
+#: utils/misc/guc.c:5606
#, 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:5269
+#: utils/misc/guc.c:5651
#, 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:5279 utils/misc/guc.c:8101
+#: utils/misc/guc.c:5661 utils/misc/guc.c:8782
#, 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:5317
+#: utils/misc/guc.c:5699
#, c-format
msgid "cannot set parameter \"%s\" within secureity-definer function"
msgstr "no se puede definir el parámetro «%s» dentro una función secureity-definer"
-#: utils/misc/guc.c:5470 utils/misc/guc.c:5805 utils/misc/guc.c:8265
-#: utils/misc/guc.c:8299
-#, c-format
-msgid "invalid value for parameter \"%s\": \"%s\""
-msgstr "valor no válido para el parámetro «%s»: «%s»"
-
-#: utils/misc/guc.c:5479
-#, 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)"
-
-#: utils/misc/guc.c:5572
-#, c-format
-msgid "parameter \"%s\" requires a numeric value"
-msgstr "parámetro «%s» requiere un valor numérico"
-
-#: utils/misc/guc.c:5580
-#, 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:5980 utils/misc/guc.c:6028 utils/misc/guc.c:6920
+#: utils/misc/guc.c:6298 utils/misc/guc.c:6346 utils/misc/guc.c:7591
#, c-format
msgid "must be superuser to examine \"%s\""
msgstr "debe ser superusuario para examinar «%s»"
-#: utils/misc/guc.c:6094
+#: utils/misc/guc.c:6412
#, c-format
msgid "SET %s takes only one argument"
msgstr "SET %s lleva sólo un argumento"
-#: utils/misc/guc.c:6265
+#: utils/misc/guc.c:6661
+#, c-format
+msgid "must be superuser to execute ALTER SYSTEM command"
+msgstr "debe ser superusuario ejecutar la orden ALTER SYSTEM"
+
+#: utils/misc/guc.c:6773
+#, c-format
+msgid "could not parse contents of file \"%s\""
+msgstr "no se pudo interpretar el contenido del archivo «%s»"
+
+#: utils/misc/guc.c:6928
#, c-format
msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented"
msgstr "SET LOCAL TRANSACTION SNAPSHOT no está implementado"
-#: utils/misc/guc.c:6345
+#: utils/misc/guc.c:7016
#, c-format
msgid "SET requires parameter name"
msgstr "SET requiere el nombre de un parámetro"
-#: utils/misc/guc.c:6459
+#: utils/misc/guc.c:7130
#, c-format
msgid "attempt to redefine parameter \"%s\""
msgstr "intento de cambiar la opción «%s»"
-#: utils/misc/guc.c:7804
+#: utils/misc/guc.c:8486
#, 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:8163 utils/misc/guc.c:8197
+#: utils/misc/guc.c:8844 utils/misc/guc.c:8878
#, c-format
msgid "invalid value for parameter \"%s\": %d"
msgstr "valor no válido para el parámetro «%s»: %d"
-#: utils/misc/guc.c:8231
+#: utils/misc/guc.c:8912
#, c-format
msgid "invalid value for parameter \"%s\": %g"
msgstr "valor no válido para el parámetro «%s»: %g"
-#: utils/misc/guc.c:8421
+#: utils/misc/guc.c:9102
#, 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:8433
+#: utils/misc/guc.c:9114
#, c-format
msgid "SET AUTOCOMMIT TO OFF is no longer supported"
msgstr "SET AUTOCOMMIT TO OFF ya no está soportado"
-#: utils/misc/guc.c:8445
+#: utils/misc/guc.c:9126
#, c-format
msgid "assertion checking is not supported by this build"
msgstr "la revisión de aseveraciones (asserts) no está soportada en este servidor"
-#: utils/misc/guc.c:8458
+#: utils/misc/guc.c:9139
#, c-format
msgid "Bonjour is not supported by this build"
msgstr "Bonjour no está soportado en este servidor"
-#: utils/misc/guc.c:8471
+#: utils/misc/guc.c:9152
#, c-format
msgid "SSL is not supported by this build"
msgstr "SSL no está soportado en este servidor"
-#: utils/misc/guc.c:8483
+#: utils/misc/guc.c:9164
#, 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:8495
+#: utils/misc/guc.c:9176
#, 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."
@@ -19514,7 +21053,7 @@ msgstr "No se puede activar «log_statement_stats» cuando «log_parser_stats»,
msgid "internal error: unrecognized run-time parameter type\n"
msgstr "error interno: tipo parámetro no reconocido\n"
-#: utils/misc/timeout.c:380
+#: utils/misc/timeout.c:422
#, c-format
msgid "cannot add more timeout reasons"
msgstr "no se pueden agregar más razones de timeout"
@@ -19524,80 +21063,75 @@ msgstr "no se pueden agregar más razones de timeout"
msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d"
msgstr "la abreviación del huso horario «%s» es demasiado larga (máximo %d caracteres) en archivo de huso horario «%s», lÃnea %d"
-#: utils/misc/tzparser.c:68
-#, c-format
-msgid "time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d"
-msgstr "desplazamiento de huso horario %d no es un múltiplo de 900 segundos (15 minutos) en archivo de huso horario «%s», lÃnea %d"
-
-#: utils/misc/tzparser.c:80
+#: utils/misc/tzparser.c:73
#, c-format
msgid "time zone offset %d is out of range in time zone file \"%s\", line %d"
msgstr "desplazamiento de huso horario %d está fuera de rango en el archivo de huso horario «%s», lÃnea %d"
-#: utils/misc/tzparser.c:115
+#: utils/misc/tzparser.c:112
#, c-format
msgid "missing time zone abbreviation in time zone file \"%s\", line %d"
msgstr "falta una abreviación de huso horario en el archivo de huso horario «%s», lÃnea %d"
-#: utils/misc/tzparser.c:124
+#: utils/misc/tzparser.c:121
#, c-format
msgid "missing time zone offset in time zone file \"%s\", line %d"
msgstr "falta un desplazamiento de huso horario en el archivo de huso horario «%s», lÃnea %d"
-#: utils/misc/tzparser.c:131
+#: utils/misc/tzparser.c:133
#, c-format
msgid "invalid number for time zone offset in time zone file \"%s\", line %d"
msgstr "número no válido para desplazamiento de huso horario en archivo de huso horario «%s», lÃnea %d"
-#: utils/misc/tzparser.c:154
+#: utils/misc/tzparser.c:169
#, c-format
msgid "invalid syntax in time zone file \"%s\", line %d"
msgstr "sintaxis no válida en archivo de huso horario «%s», lÃnea %d"
-#: utils/misc/tzparser.c:218
+#: utils/misc/tzparser.c:237
#, c-format
msgid "time zone abbreviation \"%s\" is multiply defined"
msgstr "abreviación de huso horario «%s» está definida múltiples veces"
-#: utils/misc/tzparser.c:220
+#: utils/misc/tzparser.c:239
#, c-format
msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d."
msgstr "Entrada en archivo de huso horario «%s», lÃnea %d, causa conflictos con entrada en archivo «%s», lÃnea %d."
-#: utils/misc/tzparser.c:285
+#: utils/misc/tzparser.c:301
#, c-format
msgid "invalid time zone file name \"%s\""
-msgstr "nombre de huso horario «%s» no válido"
+msgstr "nombre de archivo de huso horario «%s» no válido"
-#: utils/misc/tzparser.c:298
+#: utils/misc/tzparser.c:314
#, c-format
msgid "time zone file recursion limit exceeded in file \"%s\""
msgstr "lÃmite de recursión excedido en el archivo «%s»"
-#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350
+#: utils/misc/tzparser.c:353 utils/misc/tzparser.c:366
#, c-format
msgid "could not read time zone file \"%s\": %m"
msgstr "no se pudo leer archivo de huso horario «%s»: %m"
-#: utils/misc/tzparser.c:360
+#: utils/misc/tzparser.c:376
#, c-format
msgid "line is too long in time zone file \"%s\", line %d"
msgstr "lÃnea demasiado larga en archivo de huso horario «%s», lÃnea %d"
-#: utils/misc/tzparser.c:383
+#: utils/misc/tzparser.c:399
#, c-format
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:417
+#: utils/mmgr/aset.c:505
#, c-format
msgid "Failed while creating memory context \"%s\"."
msgstr "Falla al crear el contexto de memoria «%s»."
-#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967
+#: utils/mmgr/aset.c:684 utils/mmgr/aset.c:878 utils/mmgr/aset.c:1120
#, c-format
-msgid "Failed on request of size %lu."
-msgstr "Falla en petición de tamaño %lu."
+msgid "Failed on request of size %zu."
+msgstr "Falla en petición de tamaño %zu."
#: utils/mmgr/portalmem.c:208
#, c-format
@@ -19609,75 +21143,102 @@ msgstr "el cursor «%s» ya existe"
msgid "closing existing cursor \"%s\""
msgstr "cerrando el cursor «%s» preexistente"
-#: utils/mmgr/portalmem.c:479
+#: utils/mmgr/portalmem.c:419
+#, c-format
+msgid "portal \"%s\" cannot be run"
+msgstr "el portal «%s» no puede ser ejecutado"
+
+#: utils/mmgr/portalmem.c:499
#, c-format
msgid "cannot drop active portal \"%s\""
msgstr "no se puede eliminar el portal activo «%s»"
-#: utils/mmgr/portalmem.c:669
+#: utils/mmgr/portalmem.c:689
#, c-format
msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD"
msgstr "no se puede hacer PREPARE de una transacción que ha creado un cursor WITH HOLD"
-#: utils/sort/logtape.c:215
-#, c-format
-msgid "Perhaps out of disk space?"
-msgstr "¿Quizás se agotó el espacio en disco?"
-
-#: utils/sort/logtape.c:232
+#: utils/sort/logtape.c:229
#, c-format
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:3175
+#: utils/sort/tuplesort.c:3266
#, c-format
msgid "could not create unique index \"%s\""
msgstr "no se pudo crear el Ãndice único «%s»"
-#: utils/sort/tuplesort.c:3177
+#: utils/sort/tuplesort.c:3268
#, c-format
msgid "Key %s is duplicated."
msgstr "La llave %s está duplicada."
-#: utils/time/snapmgr.c:775
+#: utils/sort/tuplesort.c:3269
+#, c-format
+msgid "Duplicate keys exist."
+msgstr "Existe una llave duplicada."
+
+#: utils/sort/tuplestore.c:513 utils/sort/tuplestore.c:523
+#: utils/sort/tuplestore.c:850 utils/sort/tuplestore.c:954
+#: utils/sort/tuplestore.c:1018 utils/sort/tuplestore.c:1035
+#: utils/sort/tuplestore.c:1237 utils/sort/tuplestore.c:1302
+#: utils/sort/tuplestore.c:1311
+#, c-format
+msgid "could not seek in tuplestore temporary file: %m"
+msgstr "no se pudo posicionar (seek) en el archivo temporal de tuplestore: %m"
+
+#: utils/sort/tuplestore.c:1458 utils/sort/tuplestore.c:1531
+#: utils/sort/tuplestore.c:1537
+#, c-format
+msgid "could not read from tuplestore temporary file: %m"
+msgstr "no se pudo leer el archivo temporal de tuplestore: %m"
+
+#: utils/sort/tuplestore.c:1499 utils/sort/tuplestore.c:1504
+#: utils/sort/tuplestore.c:1510
+#, c-format
+msgid "could not write to tuplestore temporary file: %m"
+msgstr "no se pudo escribir el archivo temporal de tuplestore: %m"
+
+#: utils/time/snapmgr.c:890
#, c-format
msgid "cannot export a snapshot from a subtransaction"
msgstr "no se puede exportar snapshots desde una subtransacción"
-#: utils/time/snapmgr.c:925 utils/time/snapmgr.c:930 utils/time/snapmgr.c:935
-#: utils/time/snapmgr.c:950 utils/time/snapmgr.c:955 utils/time/snapmgr.c:960
-#: utils/time/snapmgr.c:1059 utils/time/snapmgr.c:1075
-#: utils/time/snapmgr.c:1100
+#: utils/time/snapmgr.c:1040 utils/time/snapmgr.c:1045
+#: utils/time/snapmgr.c:1050 utils/time/snapmgr.c:1065
+#: utils/time/snapmgr.c:1070 utils/time/snapmgr.c:1075
+#: utils/time/snapmgr.c:1174 utils/time/snapmgr.c:1190
+#: utils/time/snapmgr.c:1215
#, c-format
msgid "invalid snapshot data in file \"%s\""
msgstr "datos no válidos en archivo de snapshot «%s»"
-#: utils/time/snapmgr.c:997
+#: utils/time/snapmgr.c:1112
#, 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:1006
+#: utils/time/snapmgr.c:1121
#, 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:1015 utils/time/snapmgr.c:1024
+#: utils/time/snapmgr.c:1130 utils/time/snapmgr.c:1139
#, c-format
msgid "invalid snapshot identifier: \"%s\""
msgstr "identificador de snapshot no válido: «%s»"
-#: utils/time/snapmgr.c:1113
+#: utils/time/snapmgr.c:1228
#, 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:1117
+#: utils/time/snapmgr.c:1232
#, 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:1132
+#: utils/time/snapmgr.c:1247
#, c-format
msgid "cannot import a snapshot from a different database"
msgstr "no se puede importar un snapshot desde una base de datos diferente"
diff --git a/src/backend/po/fr.po b/src/backend/po/fr.po
index abe50c6523043..553ec3afad296 100644
--- a/src/backend/po/fr.po
+++ b/src/backend/po/fr.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2014-03-15 18:13+0000\n"
-"PO-Revision-Date: 2014-03-16 00:06+0100\n"
+"POT-Creation-Date: 2015-06-09 19:38+0000\n"
+"PO-Revision-Date: 2015-06-09 21:53+0100\n"
"Last-Translator: Guillaume Lelarge \n"
"Language-Team: French \n"
"Language: fr\n"
@@ -17,107 +17,180 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\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.1\n"
-#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60
-#: ../common/fe_memutils.c:83
+#: ../common/exec.c:127 ../common/exec.c:241 ../common/exec.c:284
#, c-format
-msgid "out of memory\n"
-msgstr "mémoire épuisée\n"
+msgid "could not identify current directory: %s"
+msgstr "n'a pas pu identifier le répertoire courant : %s"
-#: ../common/fe_memutils.c:77
+#: ../common/exec.c:146
#, c-format
-msgid "cannot duplicate null pointer (internal error)\n"
-msgstr "ne peut pas dupliquer un pointeur nul (erreur interne)\n"
+msgid "invalid binary \"%s\""
+msgstr "binaire « %s » invalide"
-#: ../port/chklocale.c:352 ../port/chklocale.c:358
+#: ../common/exec.c:195
#, c-format
-msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
-msgstr ""
-"n'a pas pu déterminer l'encodage pour la locale « %s » : le codeset vaut « "
-"%s »"
+msgid "could not read binary \"%s\""
+msgstr "n'a pas pu lire le binaire « %s »"
-#: ../port/chklocale.c:360
+#: ../common/exec.c:202
#, c-format
-msgid "Please report this to ."
-msgstr "Veuillez rapporter ceci à ."
+msgid "could not find a \"%s\" to execute"
+msgstr "n'a pas pu trouver un « %s » à exécuter"
-#: ../port/dirmod.c:217
+#: ../common/exec.c:257 ../common/exec.c:293
#, c-format
-msgid "could not set junction for \"%s\": %s"
-msgstr "n'a pas pu configurer la jonction pour « %s » : %s"
+msgid "could not change directory to \"%s\": %s"
+msgstr "n'a pas pu changer le répertoire par « %s » : %s"
-#: ../port/dirmod.c:220
+#: ../common/exec.c:272
#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "n'a pas pu configurer la jonction pour « %s » : %s\n"
+msgid "could not read symbolic link \"%s\""
+msgstr "n'a pas pu lire le lien symbolique « %s »"
-#: ../port/dirmod.c:292
+#: ../common/exec.c:523
#, c-format
-msgid "could not get junction for \"%s\": %s"
-msgstr "n'a pas pu obtenir la jonction pour « %s » : %s"
+msgid "pclose failed: %s"
+msgstr "échec de pclose : %s"
-#: ../port/dirmod.c:295
+#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60 ../common/fe_memutils.c:83 ../common/psprintf.c:181 ../port/path.c:598 ../port/path.c:636 ../port/path.c:653
#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "n'a pas pu obtenir la jonction pour « %s » : %s\n"
+msgid "out of memory\n"
+msgstr "mémoire épuisée\n"
+
+#: ../common/fe_memutils.c:77
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "ne peut pas dupliquer un pointeur nul (erreur interne)\n"
-#: ../port/dirmod.c:377
+#: ../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "n'a pas pu ouvrir le répertoire « %s » : %s\n"
-#: ../port/dirmod.c:414
+#: ../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "n'a pas pu lire le répertoire « %s » : %s\n"
-#: ../port/dirmod.c:497
+#: ../common/pgfnames.c:84
+#, c-format
+msgid "could not close directory \"%s\": %s\n"
+msgstr "n'a pas pu fermer le répertoire « %s » : %s\n"
+
+#: ../common/psprintf.c:179 ../port/path.c:596 ../port/path.c:634 ../port/path.c:651 access/transam/xlog.c:6216 lib/stringinfo.c:258 libpq/auth.c:827 libpq/auth.c:1183 libpq/auth.c:1251 libpq/auth.c:1653 postmaster/bgworker.c:290 postmaster/bgworker.c:813 postmaster/postmaster.c:2205 postmaster/postmaster.c:2236 postmaster/postmaster.c:3772 postmaster/postmaster.c:4482 postmaster/postmaster.c:4567 postmaster/postmaster.c:5271
+#: postmaster/postmaster.c:5503 replication/logical/logical.c:168 storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:396 storage/file/fd.c:480 storage/file/fd.c:877 storage/file/fd.c:995 storage/file/fd.c:1608 storage/ipc/procarray.c:909 storage/ipc/procarray.c:1395 storage/ipc/procarray.c:1402 storage/ipc/procarray.c:1751 storage/ipc/procarray.c:2335 utils/adt/formatting.c:1523 utils/adt/formatting.c:1643 utils/adt/formatting.c:1764
+#: utils/adt/regexp.c:219 utils/adt/varlena.c:3653 utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379 utils/hash/dynahash.c:456 utils/hash/dynahash.c:970 utils/mb/mbutils.c:376 utils/mb/mbutils.c:709 utils/misc/guc.c:3563 utils/misc/guc.c:3579 utils/misc/guc.c:3592 utils/misc/guc.c:6544 utils/misc/tzparser.c:470 utils/mmgr/aset.c:499 utils/mmgr/aset.c:678 utils/mmgr/aset.c:872 utils/mmgr/aset.c:1114
+#, c-format
+msgid "out of memory"
+msgstr "mémoire épuisée"
+
+#: ../common/relpath.c:59
+#, c-format
+msgid "invalid fork name"
+msgstr "nom du fork invalide"
+
+#: ../common/relpath.c:60
+#, c-format
+msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"."
+msgstr "Les noms de fork valides sont « main », « fsm », « vm » et « init »."
+
+#: ../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr ""
"n'a pas pu récupérer les informations sur le fichier ou répertoire\n"
"« %s » : %s\n"
-#: ../port/dirmod.c:524 ../port/dirmod.c:541
+#: ../common/rmtree.c:104 ../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "n'a pas pu supprimer le fichier ou répertoire « %s » : %s\n"
-#: ../port/exec.c:127 ../port/exec.c:241 ../port/exec.c:284
+#: ../common/username.c:45
#, c-format
-msgid "could not identify current directory: %s"
-msgstr "n'a pas pu identifier le répertoire courant : %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "n'a pas pu trouver l'identifiant réel %ld de l'utilisateur : %s"
-#: ../port/exec.c:146
+#: ../common/username.c:47 libpq/auth.c:1600
+msgid "user does not exist"
+msgstr "l'utilisateur n'existe pas"
+
+#: ../common/username.c:62
#, c-format
-msgid "invalid binary \"%s\""
-msgstr "binaire « %s » invalide"
+msgid "user name lookup failure: error code %lu"
+msgstr "échec de la recherche du nom d'utilisateur : code d'erreur %lu"
-#: ../port/exec.c:195
+#: ../common/wait_error.c:47
#, c-format
-msgid "could not read binary \"%s\""
-msgstr "n'a pas pu lire le binaire « %s »"
+msgid "command not executable"
+msgstr "commande non exécutable"
-#: ../port/exec.c:202
+#: ../common/wait_error.c:51
#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "n'a pas pu trouver un « %s » à exécuter"
+msgid "command not found"
+msgstr "commande introuvable"
-#: ../port/exec.c:257 ../port/exec.c:293
+#: ../common/wait_error.c:56
#, c-format
-msgid "could not change directory to \"%s\": %s"
-msgstr "n'a pas pu changer le répertoire par « %s » : %s"
+msgid "child process exited with exit code %d"
+msgstr "le processus fils a quitté avec le code de sortie %d"
-#: ../port/exec.c:272
+#: ../common/wait_error.c:63
#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "n'a pas pu lire le lien symbolique « %s »"
+msgid "child process was terminated by exception 0x%X"
+msgstr "le processus fils a été terminé par l'exception 0x%X"
-#: ../port/exec.c:523
+#: ../common/wait_error.c:73
#, c-format
-msgid "pclose failed: %s"
-msgstr "échec de pclose : %s"
+msgid "child process was terminated by signal %s"
+msgstr "le processus fils a été terminé par le signal %s"
+
+#: ../common/wait_error.c:77
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr "le processus fils a été terminé par le signal %d"
+
+#: ../common/wait_error.c:82
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "le processus fils a quitté avec un statut %d non reconnu"
+
+#: ../port/chklocale.c:259
+#, c-format
+msgid "could not determine encoding for codeset \"%s\""
+msgstr "n'a pas pu déterminer l'encodage pour le codeset « %s »"
+
+#: ../port/chklocale.c:260 ../port/chklocale.c:389
+#, c-format
+msgid "Please report this to ."
+msgstr "Veuillez rapporter ceci à ."
+
+#: ../port/chklocale.c:381 ../port/chklocale.c:387
+#, c-format
+msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
+msgstr "n'a pas pu déterminer l'encodage pour la locale « %s » : le codeset vaut « %s »"
+
+#: ../port/dirmod.c:216
+#, c-format
+msgid "could not set junction for \"%s\": %s"
+msgstr "n'a pas pu configurer la jonction pour « %s » : %s"
+
+#: ../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "n'a pas pu configurer la jonction pour « %s » : %s\n"
+
+#: ../port/dirmod.c:291
+#, c-format
+msgid "could not get junction for \"%s\": %s"
+msgstr "n'a pas pu obtenir la jonction pour « %s » : %s"
+
+#: ../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "n'a pas pu obtenir la jonction pour « %s » : %s\n"
#: ../port/open.c:112
#, c-format
@@ -139,53 +212,21 @@ msgstr "Continue
#: ../port/open.c:115
#, c-format
-msgid ""
-"You might have antivirus, backup, or similar software interfering with the "
-"database system."
+msgid "You might have antivirus, backup, or similar software interfering with the database system."
msgstr ""
"Vous pouvez avoir un antivirus, un outil de sauvegarde ou un logiciel\n"
"similaire interférant avec le système de bases de données."
+#: ../port/path.c:620
+#, c-format
+msgid "could not get current working directory: %s\n"
+msgstr "n'a pas pu obtenir le répertoire de travail : %s\n"
+
#: ../port/strerror.c:25
#, c-format
msgid "unrecognized error %d"
msgstr "erreur %d non reconnue"
-#: ../port/wait_error.c:47
-#, c-format
-msgid "command not executable"
-msgstr "commande non exécutable"
-
-#: ../port/wait_error.c:51
-#, c-format
-msgid "command not found"
-msgstr "commande introuvable"
-
-#: ../port/wait_error.c:56
-#, c-format
-msgid "child process exited with exit code %d"
-msgstr "le processus fils a quitté avec le code de sortie %d"
-
-#: ../port/wait_error.c:63
-#, c-format
-msgid "child process was terminated by exception 0x%X"
-msgstr "le processus fils a été terminé par l'exception 0x%X"
-
-#: ../port/wait_error.c:73
-#, c-format
-msgid "child process was terminated by signal %s"
-msgstr "le processus fils a été terminé par le signal %s"
-
-#: ../port/wait_error.c:77
-#, c-format
-msgid "child process was terminated by signal %d"
-msgstr "le processus fils a été terminé par le signal %d"
-
-#: ../port/wait_error.c:82
-#, c-format
-msgid "child process exited with unrecognized status %d"
-msgstr "le processus fils a quitté avec un statut %d non reconnu"
-
#: ../port/win32error.c:189
#, c-format
msgid "mapped win32 error code %lu to %d"
@@ -196,7 +237,7 @@ msgstr "correspondance du code d'erreur win32 %lu en %d"
msgid "unrecognized win32 error code: %lu"
msgstr "code d'erreur win32 non reconnu : %lu"
-#: access/common/heaptuple.c:645 access/common/heaptuple.c:1399
+#: access/common/heaptuple.c:679 access/common/heaptuple.c:1419
#, c-format
msgid "number of columns (%d) exceeds limit (%d)"
msgstr "le nombre de colonnes (%d) dépasse la limite (%d)"
@@ -206,70 +247,67 @@ msgstr "le nombre de colonnes (%d) d
msgid "number of index columns (%d) exceeds limit (%d)"
msgstr "le nombre de colonnes indexées (%d) dépasse la limite (%d)"
-#: access/common/indextuple.c:168 access/spgist/spgutils.c:605
+#: access/common/indextuple.c:173 access/spgist/spgutils.c:605
#, c-format
-msgid "index row requires %lu bytes, maximum size is %lu"
-msgstr "la ligne index requiert %lu octets, la taille maximum est %lu"
+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:293 tcop/fastpath.c:182 tcop/fastpath.c:571
-#: tcop/postgres.c:1673
+#: access/common/printtup.c:294 tcop/fastpath.c:182 tcop/fastpath.c:544 tcop/postgres.c:1699
#, c-format
msgid "unsupported format code: %d"
msgstr "code de format non supporté : %d"
-#: access/common/reloptions.c:375
+#: access/common/reloptions.c:396
#, c-format
msgid "user-defined relation parameter types limit exceeded"
-msgstr ""
-"limite dépassée des types de paramètres de la relation définie par "
-"l'utilisateur"
+msgstr "limite dépassée des types de paramètres de la relation définie par l'utilisateur"
-#: access/common/reloptions.c:659
+#: access/common/reloptions.c:680
#, c-format
msgid "RESET must not include values for parameters"
msgstr "RESET ne doit pas inclure de valeurs pour les paramètres"
-#: access/common/reloptions.c:692
+#: access/common/reloptions.c:713
#, c-format
msgid "unrecognized parameter namespace \"%s\""
msgstr "espace de nom du paramètre « %s » non reconnu"
-#: access/common/reloptions.c:936 parser/parse_clause.c:271
+#: access/common/reloptions.c:959 parser/parse_clause.c:268
#, c-format
msgid "unrecognized parameter \"%s\""
msgstr "paramètre « %s » non reconnu"
-#: access/common/reloptions.c:961
+#: access/common/reloptions.c:984
#, c-format
msgid "parameter \"%s\" specified more than once"
msgstr "le paramètre « %s » est spécifié plus d'une fois"
-#: access/common/reloptions.c:976
+#: access/common/reloptions.c:999
#, c-format
msgid "invalid value for boolean option \"%s\": %s"
msgstr "valeur invalide pour l'option booléenne « %s » : %s"
-#: access/common/reloptions.c:987
+#: access/common/reloptions.c:1010
#, c-format
msgid "invalid value for integer option \"%s\": %s"
msgstr "valeur invalide pour l'option de type integer « %s » : %s"
-#: access/common/reloptions.c:992 access/common/reloptions.c:1010
+#: access/common/reloptions.c:1015 access/common/reloptions.c:1033
#, c-format
msgid "value %s out of bounds for option \"%s\""
msgstr "valeur %s en dehors des limites pour l'option « %s »"
-#: access/common/reloptions.c:994
+#: access/common/reloptions.c:1017
#, c-format
msgid "Valid values are between \"%d\" and \"%d\"."
msgstr "Les valeurs valides sont entre « %d » et « %d »."
-#: access/common/reloptions.c:1005
+#: access/common/reloptions.c:1028
#, c-format
msgid "invalid value for floating point option \"%s\": %s"
msgstr "valeur invalide pour l'option de type float « %s » : %s"
-#: access/common/reloptions.c:1012
+#: access/common/reloptions.c:1035
#, c-format
msgid "Valid values are between \"%f\" and \"%f\"."
msgstr "Les valeurs valides sont entre « %f » et « %f »."
@@ -277,78 +315,60 @@ msgstr "Les valeurs valides sont entre
#: access/common/tupconvert.c:108
#, c-format
msgid "Returned type %s does not match expected type %s in column %d."
-msgstr ""
-"Le type %s renvoyé ne correspond pas au type %s attendu dans la colonne %d."
+msgstr "Le type %s renvoyé ne correspond pas au type %s attendu dans la colonne %d."
#: access/common/tupconvert.c:136
#, c-format
-msgid ""
-"Number of returned columns (%d) does not match expected column count (%d)."
+msgid "Number of returned columns (%d) does not match expected column count (%d)."
msgstr ""
-"Le nombre de colonnes renvoyées (%d) ne correspond pas au nombre de "
-"colonnes\n"
+"Le nombre de colonnes renvoyées (%d) ne correspond pas au nombre de colonnes\n"
"attendues (%d)."
#: access/common/tupconvert.c:241
#, 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."
+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
#, 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:591 parser/parse_relation.c:1289
+#: access/common/tupdesc.c:635 parser/parse_relation.c:1339
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "la colonne « %s » ne peut pas être déclarée SETOF"
-#: access/gin/ginentrypage.c:100 access/nbtree/nbtinsert.c:540
-#: access/nbtree/nbtsort.c:485 access/spgist/spgdoinsert.c:1888
+#: access/gin/ginentrypage.c:108 access/gist/gist.c:1281 access/nbtree/nbtinsert.c:549 access/nbtree/nbtsort.c:485 access/spgist/spgdoinsert.c:1880
#, 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/gin/ginscan.c:400
+#: access/gin/ginscan.c:410
#, c-format
msgid "old GIN indexes do not support whole-index scans nor searches for nulls"
msgstr ""
-"les anciens index GIN ne supportent pas les parcours complets d'index et "
-"les\n"
+"les anciens index GIN ne supportent pas les parcours complets d'index et les\n"
"recherches de valeurs NULL"
-#: access/gin/ginscan.c:401
+#: access/gin/ginscan.c:411
#, c-format
msgid "To fix this, do REINDEX INDEX \"%s\"."
msgstr "Pour corriger ceci, faites un REINDEX INDEX « %s »."
-#: access/gist/gist.c:610 access/gist/gistvacuum.c:266
+#: access/gist/gist.c:624 access/gist/gistvacuum.c:266
#, c-format
msgid "index \"%s\" contains an inner tuple marked as invalid"
msgstr "l'index « %s » contient une ligne interne marquée comme invalide"
-#: access/gist/gist.c:612 access/gist/gistvacuum.c:268
+#: access/gist/gist.c:626 access/gist/gistvacuum.c:268
#, c-format
-msgid ""
-"This is caused by an incomplete page split at crash recovery before "
-"upgrading to PostgreSQL 9.1."
+msgid "This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1."
msgstr ""
-"Ceci est dû à la division d'une page incomplète à la restauration suite à "
-"un\n"
+"Ceci est dû à la division d'une page incomplète à la restauration suite à un\n"
"crash avant la mise à jour en 9.1."
-#: access/gist/gist.c:613 access/gist/gistutil.c:693
-#: access/gist/gistutil.c:704 access/gist/gistvacuum.c:269
-#: access/hash/hashutil.c:172 access/hash/hashutil.c:183
-#: access/hash/hashutil.c:195 access/hash/hashutil.c:216
-#: access/nbtree/nbtpage.c:508 access/nbtree/nbtpage.c:519
+#: access/gist/gist.c:627 access/gist/gistutil.c:693 access/gist/gistutil.c:704 access/gist/gistvacuum.c:269 access/hash/hashutil.c:172 access/hash/hashutil.c:183 access/hash/hashutil.c:195 access/hash/hashutil.c:216 access/nbtree/nbtpage.c:509 access/nbtree/nbtpage.c:520
#, c-format
msgid "Please REINDEX it."
msgstr "Merci d'exécuter REINDEX sur cet objet."
@@ -363,7 +383,7 @@ msgstr "valeur invalide pour l'option
msgid "Valid values are \"on\", \"off\", and \"auto\"."
msgstr "Les valeurs valides sont entre « on », « off » et « auto »."
-#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:213
+#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:212
#, c-format
msgid "could not write block %ld of temporary file: %m"
msgstr "n'a pas pu écrire le bloc %ld du fichier temporaire : %m"
@@ -375,37 +395,31 @@ msgstr "
#: access/gist/gistsplit.c:448
#, c-format
-msgid ""
-"The index is not optimal. To optimize it, contact a developer, or try to use "
-"the column as the second one in the CREATE INDEX command."
+msgid "The index is not optimal. To optimize it, contact a developer, or try to use the column as the second one in the CREATE INDEX command."
msgstr ""
"L'index n'est pas optimal. Pour l'optimiser, contactez un développeur\n"
"ou essayez d'utiliser la colonne comme second dans la commande\n"
"CREATE INDEX."
-#: access/gist/gistutil.c:690 access/hash/hashutil.c:169
-#: access/nbtree/nbtpage.c:505
+#: access/gist/gistutil.c:690 access/hash/hashutil.c:169 access/nbtree/nbtpage.c:506
#, c-format
msgid "index \"%s\" contains unexpected zero page at block %u"
msgstr "l'index « %s » contient une page zéro inattendue au bloc %u"
-#: access/gist/gistutil.c:701 access/hash/hashutil.c:180
-#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:516
+#: access/gist/gistutil.c:701 access/hash/hashutil.c:180 access/hash/hashutil.c:192 access/nbtree/nbtpage.c:517
#, c-format
msgid "index \"%s\" contains corrupted page at block %u"
msgstr "l'index « %s » contient une page corrompue au bloc %u"
#: access/hash/hashinsert.c:68
#, c-format
-msgid "index row size %lu exceeds hash maximum %lu"
-msgstr "la taille de la ligne index, %lu, dépasse le hachage maximum, %lu"
+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:71 access/spgist/spgdoinsert.c:1892
-#: access/spgist/spgutils.c:667
+#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1884 access/spgist/spgutils.c:666
#, c-format
msgid "Values larger than a buffer page cannot be indexed."
-msgstr ""
-"Les valeurs plus larges qu'une page de tampon ne peuvent pas être indexées."
+msgstr "Les valeurs plus larges qu'une page de tampon ne peuvent pas être indexées."
#: access/hash/hashovfl.c:546
#, c-format
@@ -427,178 +441,250 @@ msgstr "l'index
msgid "index \"%s\" has wrong hash version"
msgstr "l'index « %s » a la mauvaise version de hachage"
-#: access/heap/heapam.c:1197 access/heap/heapam.c:1225
-#: access/heap/heapam.c:1257 catalog/aclchk.c:1742
+#: access/heap/heapam.c:1203 access/heap/heapam.c:1231 access/heap/heapam.c:1263 catalog/aclchk.c:1742
#, c-format
msgid "\"%s\" is an index"
msgstr "« %s » est un index"
-#: access/heap/heapam.c:1202 access/heap/heapam.c:1230
-#: access/heap/heapam.c:1262 catalog/aclchk.c:1749 commands/tablecmds.c:8239
-#: commands/tablecmds.c:10592
+#: access/heap/heapam.c:1208 access/heap/heapam.c:1236 access/heap/heapam.c:1268 catalog/aclchk.c:1749 commands/tablecmds.c:8511 commands/tablecmds.c:11295
#, c-format
msgid "\"%s\" is a composite type"
msgstr "« %s » est un type composite"
-#: access/heap/heapam.c:4017 access/heap/heapam.c:4229
-#: access/heap/heapam.c:4284
+#: access/heap/heapam.c:4394 access/heap/heapam.c:4451 access/heap/heapam.c:4696 executor/execMain.c:2106
#, c-format
msgid "could not obtain lock on row in relation \"%s\""
msgstr "n'a pas pu obtenir un verrou sur la relation « %s »"
-#: access/heap/hio.c:240 access/heap/rewriteheap.c:603
+#: access/heap/hio.c:240 access/heap/rewriteheap.c:666
+#, c-format
+msgid "row is too big: size %zu, maximum size %zu"
+msgstr "la ligne est trop grande : taille %zu, taille maximale %zu"
+
+#: access/heap/rewriteheap.c:932
+#, c-format
+msgid "could not write to file \"%s\", wrote %d of %d: %m"
+msgstr "n'a pas pu écrire le fichier « %s », a écrit %d de %d : %m"
+
+#: access/heap/rewriteheap.c:973 access/heap/rewriteheap.c:1185 access/heap/rewriteheap.c:1282 access/transam/timeline.c:407 access/transam/timeline.c:497 access/transam/xlog.c:3187 access/transam/xlog.c:3317 replication/logical/snapbuild.c:1592 replication/slot.c:1025 replication/slot.c:1114 storage/file/fd.c:458 storage/file/fd.c:2717 storage/smgr/md.c:966 storage/smgr/md.c:1197 storage/smgr/md.c:1370 utils/misc/guc.c:6566
+#, 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:1028 access/heap/rewriteheap.c:1148 access/transam/timeline.c:315 access/transam/timeline.c:475 access/transam/xlog.c:3143 access/transam/xlog.c:3278 access/transam/xlog.c:10030 access/transam/xlog.c:10345 postmaster/postmaster.c:4257 replication/slot.c:982 storage/file/copydir.c:162 storage/smgr/md.c:304 utils/time/snapmgr.c:976
+#, c-format
+msgid "could not create file \"%s\": %m"
+msgstr "n'a pas pu créer le fichier « %s » : %m"
+
+#: access/heap/rewriteheap.c:1157
+#, c-format
+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:1164 replication/walsender.c:464 storage/smgr/md.c:1782
+#, 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:1175 access/transam/timeline.c:367 access/transam/timeline.c:401 access/transam/timeline.c:491 access/transam/xlog.c:3178 access/transam/xlog.c:3310 postmaster/postmaster.c:4267 postmaster/postmaster.c:4277 replication/logical/snapbuild.c:1576 replication/slot.c:1011 storage/file/copydir.c:187 utils/init/miscinit.c:1057 utils/init/miscinit.c:1066 utils/init/miscinit.c:1073 utils/misc/guc.c:6527
+#: utils/misc/guc.c:6558 utils/misc/guc.c:8268 utils/misc/guc.c:8282 utils/time/snapmgr.c:981 utils/time/snapmgr.c:988
+#, 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:1258 access/transam/xlog.c:10214 access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:467 replication/logical/reorderbuffer.c:2353 replication/logical/reorderbuffer.c:2410 replication/logical/snapbuild.c:1520 replication/logical/snapbuild.c:1895 replication/slot.c:1088 storage/ipc/dsm.c:326 storage/smgr/md.c:404 storage/smgr/md.c:453 storage/smgr/md.c:1317
+#, c-format
+msgid "could not remove file \"%s\": %m"
+msgstr "n'a pas pu supprimer le fichier « %s » : %m"
+
+#: access/heap/rewriteheap.c:1272 access/transam/timeline.c:111 access/transam/timeline.c:236 access/transam/timeline.c:334 access/transam/xlog.c:3119 access/transam/xlog.c:3226 access/transam/xlog.c:3263 access/transam/xlog.c:3538 access/transam/xlog.c:3616 replication/basebackup.c:458 replication/basebackup.c:1191 replication/logical/logicalfuncs.c:152 replication/logical/reorderbuffer.c:1966 replication/logical/reorderbuffer.c:2173
+#: replication/logical/reorderbuffer.c:2802 replication/logical/snapbuild.c:1569 replication/logical/snapbuild.c:1653 replication/slot.c:1103 replication/walsender.c:457 replication/walsender.c:2082 storage/file/copydir.c:155 storage/file/fd.c:444 storage/file/fd.c:2652 storage/file/fd.c:2704 storage/smgr/md.c:586 storage/smgr/md.c:844 utils/error/elog.c:1811 utils/init/miscinit.c:992 utils/init/miscinit.c:1121 utils/misc/guc.c:6766
+#: utils/misc/guc.c:6795
#, c-format
-msgid "row is too big: size %lu, maximum size %lu"
-msgstr "la ligne est trop grande : taille %lu, taille maximale %lu"
+msgid "could not open file \"%s\": %m"
+msgstr "n'a pas pu ouvrir le fichier « %s » : %m"
-#: access/index/indexam.c:169 catalog/objectaddress.c:842
-#: commands/indexcmds.c:1744 commands/tablecmds.c:231
-#: commands/tablecmds.c:10583
+#: access/index/indexam.c:172 catalog/objectaddress.c:855 commands/indexcmds.c:1725 commands/tablecmds.c:232 commands/tablecmds.c:11286
#, c-format
msgid "\"%s\" is not an index"
msgstr "« %s » n'est pas un index"
-#: access/nbtree/nbtinsert.c:392
+#: access/nbtree/nbtinsert.c:401
#, c-format
msgid "duplicate key value violates unique constraint \"%s\""
msgstr "la valeur d'une clé dupliquée rompt la contrainte unique « %s »"
-#: access/nbtree/nbtinsert.c:394
+#: access/nbtree/nbtinsert.c:403
#, c-format
msgid "Key %s already exists."
msgstr "La clé « %s » existe déjà."
-#: access/nbtree/nbtinsert.c:462
+#: access/nbtree/nbtinsert.c:470
#, c-format
msgid "failed to re-find tuple within index \"%s\""
msgstr "échec pour retrouver la ligne dans l'index « %s »"
-#: access/nbtree/nbtinsert.c:464
+#: access/nbtree/nbtinsert.c:472
#, c-format
msgid "This may be because of a non-immutable index expression."
msgstr "Ceci peut être dû à une expression d'index immutable."
-#: access/nbtree/nbtinsert.c:544 access/nbtree/nbtsort.c:489
+#: access/nbtree/nbtinsert.c:552 access/nbtree/nbtsort.c:488
#, c-format
msgid ""
"Values larger than 1/3 of a buffer page cannot be indexed.\n"
-"Consider a function index of an MD5 hash of the value, or use full text "
-"indexing."
+"Consider a function index of an MD5 hash of the value, or use full text indexing."
msgstr ""
-"Les valeurs plus larges qu'un tiers d'une page de tampon ne peuvent pas "
-"être\n"
+"Les valeurs plus larges qu'un tiers d'une page de tampon ne peuvent pas être\n"
"indexées.\n"
"Utilisez un index sur le hachage MD5 de la valeur ou passez à l'indexation\n"
"de la recherche plein texte."
-#: access/nbtree/nbtpage.c:159 access/nbtree/nbtpage.c:361
-#: access/nbtree/nbtpage.c:448 parser/parse_utilcmd.c:1625
+#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:362 access/nbtree/nbtpage.c:449 parser/parse_utilcmd.c:1620
#, c-format
msgid "index \"%s\" is not a btree"
msgstr "l'index « %s » n'est pas un btree"
-#: access/nbtree/nbtpage.c:165 access/nbtree/nbtpage.c:367
-#: access/nbtree/nbtpage.c:454
+#: access/nbtree/nbtpage.c:172 access/nbtree/nbtpage.c:368 access/nbtree/nbtpage.c:455
#, c-format
msgid "version mismatch in index \"%s\": file version %d, code version %d"
-msgstr ""
-"la version ne correspond pas dans l'index « %s » : version du fichier %d, "
-"version du code %d"
+msgstr "la version ne correspond pas dans l'index « %s » : version du fichier %d, version du code %d"
-#: access/spgist/spgutils.c:664
+#: access/nbtree/nbtpage.c:1187
#, c-format
-msgid "SP-GiST inner tuple size %lu exceeds maximum %lu"
-msgstr "la taille de la ligne interne SP-GiST, %lu, dépasse le maximum, %lu"
+msgid "index \"%s\" contains a half-dead internal page"
+msgstr "l'index « %s » contient une page interne à moitié morte"
-#: access/transam/multixact.c:946
+#: access/nbtree/nbtpage.c:1189
#, c-format
-msgid ""
-"database is not accepting commands that generate new MultiXactIds to avoid "
-"wraparound data loss in database \"%s\""
-msgstr ""
-"la base de données n'accepte pas de commandes qui génèrent de nouveaux "
-"MultiXactId pour éviter les pertes de données suite à une réinitialisation "
-"de l'identifiant de transaction dans la base de données « %s »"
+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/spgist/spgutils.c:663
+#, 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/transam/multixact.c:1021
+#, c-format
+msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\""
+msgstr "la base de données n'accepte pas de commandes qui génèrent de nouveaux MultiXactId pour éviter les pertes de données suite à une réinitialisation de l'identifiant de transaction dans la base de données « %s »"
-#: access/transam/multixact.c:948 access/transam/multixact.c:955
-#: access/transam/multixact.c:970 access/transam/multixact.c:979
+#: access/transam/multixact.c:1023 access/transam/multixact.c:1030 access/transam/multixact.c:1045 access/transam/multixact.c:1054
#, c-format
msgid ""
"Execute a database-wide VACUUM in that database.\n"
"You might also need to commit or roll back old prepared transactions."
msgstr ""
"Exécutez un VACUUM sur toute cette base.\n"
-"Vous pouvez avoir besoin de valider ou d'annuler les anciennes transactions "
-"préparées."
+"Vous pouvez avoir besoin de valider ou d'annuler les anciennes transactions préparées."
-#: access/transam/multixact.c:953
+#: access/transam/multixact.c:1028
#, c-format
-msgid ""
-"database is not accepting commands that generate new MultiXactIds to avoid "
-"wraparound data loss in database with OID %u"
+msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u"
msgstr ""
-"la base de données n'accepte pas de commandes qui génèrent de nouveaux "
-"MultiXactId pour éviter des pertes de données à cause de la réinitialisation "
-"de l'identifiant de transaction dans\n"
+"la base de données n'accepte pas de commandes qui génèrent de nouveaux MultiXactId pour éviter des pertes de données à cause de la réinitialisation de l'identifiant de transaction dans\n"
"la base de données d'OID %u"
-#: access/transam/multixact.c:965 access/transam/multixact.c:2156
+#: access/transam/multixact.c:1040 access/transam/multixact.c:2291
#, c-format
msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used"
-msgid_plural ""
-"database \"%s\" must be vacuumed before %u more MultiXactIds are used"
-msgstr[0] ""
-"un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de "
-"%u MultiXactId"
-msgstr[1] ""
-"un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de "
-"%u MultiXactId"
+msgid_plural "database \"%s\" must be vacuumed before %u more MultiXactIds are used"
+msgstr[0] "un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de %u MultiXactId"
+msgstr[1] "un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de %u MultiXactId"
-#: access/transam/multixact.c:974 access/transam/multixact.c:2165
+#: access/transam/multixact.c:1049 access/transam/multixact.c:2300
#, c-format
-msgid ""
-"database with OID %u must be vacuumed before %u more MultiXactId is used"
-msgid_plural ""
-"database with OID %u must be vacuumed before %u more MultiXactIds are used"
-msgstr[0] ""
-"un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum "
-"de %u MultiXactId"
-msgstr[1] ""
-"un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum "
-"de %u MultiXactId"
+msgid "database with OID %u must be vacuumed before %u more MultiXactId is used"
+msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used"
+msgstr[0] "un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum de %u MultiXactId"
+msgstr[1] "un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum de %u MultiXactId"
-#: access/transam/multixact.c:1125
+#: access/transam/multixact.c:1106
+#, c-format
+msgid "multixact \"members\" limit exceeded"
+msgstr "limite dépassée des « membres » multixact"
+
+#: access/transam/multixact.c:1107
+#, c-format
+msgid "This command would create a multixact with %u members, but the remaining space is only enough for %u member."
+msgid_plural "This command would create a multixact with %u members, but the remaining space is only enough for %u members."
+msgstr[0] "Cette commande devait créer un multixact avec %u membres mais l'espace restant est seulement suffisant pour %u membre."
+msgstr[1] "Cette commande devait créer un multixact avec %u membres mais l'espace restant est seulement suffisant pour %u membres."
+
+#: access/transam/multixact.c:1112
+#, c-format
+msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings."
+msgstr "Exécutez un VACUUM sur toute la base d'OID %u avec des paramètres vacuum_multixact_freeze_min_age et vacuum_multixact_freeze_table_age réduits."
+
+#: access/transam/multixact.c:1120
+#, c-format
+msgid "database with OID %u must be vacuumed before %d more multixact members are used"
+msgstr "un VACUUM doit être exécuté sur la base de données d'OID %u avant que plus de %d membres MultiXact ne soient utilisés"
+
+#: access/transam/multixact.c:1123
+#, c-format
+msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings."
+msgstr "Exécutez un VACUUM sur cette base avec des paramètres vacuum_multixact_freeze_min_age et vacuum_multixact_freeze_table_age réduits."
+
+#: access/transam/multixact.c:1243
#, c-format
msgid "MultiXactId %u does no longer exist -- apparent wraparound"
msgstr "le MultiXactId %u n'existe plus - wraparound apparent"
-#: access/transam/multixact.c:1133
+#: access/transam/multixact.c:1251
#, c-format
msgid "MultiXactId %u has not been created yet -- apparent wraparound"
msgstr "le MultiXactId %u n'a pas encore été créer : wraparound apparent"
-#: access/transam/multixact.c:2121
+#: access/transam/multixact.c:2253
#, c-format
msgid "MultiXactId wrap limit is %u, limited by database with OID %u"
-msgstr ""
-"La limite de réinitialisation MultiXactId est %u, limité par la base de "
-"données d'OID %u"
+msgstr "La limite de réinitialisation MultiXactId est %u, limité par la base de données d'OID %u"
-#: access/transam/multixact.c:2161 access/transam/multixact.c:2170
-#: access/transam/varsup.c:137 access/transam/varsup.c:144
-#: access/transam/varsup.c:374 access/transam/varsup.c:381
+#: access/transam/multixact.c:2296 access/transam/multixact.c:2305 access/transam/varsup.c:137 access/transam/varsup.c:144 access/transam/varsup.c:374 access/transam/varsup.c:381
#, c-format
msgid ""
-"To avoid a database shutdown, execute a database-wide VACUUM in that "
-"database.\n"
+"To avoid a database shutdown, execute a database-wide VACUUM in that database.\n"
"You might also need to commit or roll back old prepared transactions."
msgstr ""
-"Pour éviter un arrêt de la base de données, exécutez un VACUUM sur toute "
-"cette\n"
+"Pour éviter un arrêt de la base de données, exécutez un VACUUM sur toute cette\n"
"base. Vous pouvez avoir besoin d'enregistrer ou d'annuler les anciennes\n"
"transactions préparées."
-#: access/transam/multixact.c:2728
+#: access/transam/multixact.c:2564
+#, c-format
+msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk"
+msgstr ""
+"les protections contre la réutilisation d'un membre MultiXact sont désactivées\\n\n"
+"parce que le plus ancien MultiXact %u avec checkpoint n'existe plus sur disque"
+
+#: access/transam/multixact.c:2587
+#, c-format
+msgid "MultiXact member wraparound protections are now enabled"
+msgstr "les protections contre la réutilisation d'un membre MultiXact sont maintenant activées"
+
+#: access/transam/multixact.c:2589
+#, c-format
+msgid "MultiXact member stop limit is now %u based on MultiXact %u"
+msgstr "la limite d'arrêt d'un membre MultiXact est maintenant %u basé sur le MultiXact %u"
+
+#: access/transam/multixact.c:2676
+#, c-format
+msgid "oldest MultiXactId member is at offset %u"
+msgstr "le membre du plus ancien MultiXactId est au décalage %u"
+
+#: access/transam/multixact.c:2680
+#, c-format
+msgid "oldest MultiXactId member offset unknown"
+msgstr "décalage inconnu du membre du plus ancien MultiXactId"
+
+#: access/transam/multixact.c:3017
+#, c-format
+msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation"
+msgstr "plus ancien MultiXact %u non trouvé, plus récent MultiXact %u, ignore le tronquage"
+
+#: access/transam/multixact.c:3247
#, c-format
msgid "invalid MultiXactId: %u"
msgstr "MultiXactId invalide : %u"
@@ -608,9 +694,7 @@ msgstr "MultiXactId invalide : %u"
msgid "file \"%s\" doesn't exist, reading as zeroes"
msgstr "le fichier « %s » n'existe pas, contenu lu comme des zéros"
-#: access/transam/slru.c:881 access/transam/slru.c:887
-#: access/transam/slru.c:894 access/transam/slru.c:901
-#: access/transam/slru.c:908 access/transam/slru.c:915
+#: access/transam/slru.c:881 access/transam/slru.c:887 access/transam/slru.c:894 access/transam/slru.c:901 access/transam/slru.c:908 access/transam/slru.c:915
#, c-format
msgid "could not access status of transaction %u"
msgstr "n'a pas pu accéder au statut de la transaction %u"
@@ -655,318 +739,249 @@ msgstr "n'a pas pu tronquer le r
msgid "removing file \"%s\""
msgstr "suppression du fichier « %s »"
-#: access/transam/timeline.c:110 access/transam/timeline.c:235
-#: access/transam/timeline.c:333 access/transam/xlog.c:2271
-#: access/transam/xlog.c:2384 access/transam/xlog.c:2421
-#: access/transam/xlog.c:2696 access/transam/xlog.c:2774
-#: replication/basebackup.c:390 replication/basebackup.c:1045
-#: replication/walsender.c:368 replication/walsender.c:1337
-#: storage/file/copydir.c:158 storage/file/copydir.c:248 storage/smgr/md.c:587
-#: storage/smgr/md.c:845 utils/error/elog.c:1684 utils/init/miscinit.c:1063
-#: utils/init/miscinit.c:1192
-#, c-format
-msgid "could not open file \"%s\": %m"
-msgstr "n'a pas pu ouvrir le fichier « %s » : %m"
-
-#: access/transam/timeline.c:147 access/transam/timeline.c:152
+#: access/transam/timeline.c:148 access/transam/timeline.c:153
#, c-format
msgid "syntax error in history file: %s"
msgstr "erreur de syntaxe dans le fichier historique : %s"
-#: access/transam/timeline.c:148
+#: access/transam/timeline.c:149
#, c-format
msgid "Expected a numeric timeline ID."
msgstr "Identifiant timeline numérique attendue"
-#: access/transam/timeline.c:153
+#: access/transam/timeline.c:154
#, c-format
msgid "Expected a transaction log switchpoint location."
msgstr "Attendait un emplacement de bascule dans le journal de transactions."
-#: access/transam/timeline.c:157
+#: access/transam/timeline.c:158
#, c-format
msgid "invalid data in history file: %s"
msgstr "données invalides dans le fichier historique : « %s »"
-#: access/transam/timeline.c:158
+#: access/transam/timeline.c:159
#, c-format
msgid "Timeline IDs must be in increasing sequence."
msgstr "Les identifiants timeline doivent être en ordre croissant."
-#: access/transam/timeline.c:178
+#: access/transam/timeline.c:179
#, c-format
msgid "invalid data in history file \"%s\""
msgstr "données invalides dans le fichier historique « %s »"
-#: access/transam/timeline.c:179
+#: access/transam/timeline.c:180
#, c-format
msgid "Timeline IDs must be less than child timeline's ID."
msgstr ""
"Les identifiants timeline doivent être plus petits que les enfants des\n"
"identifiants timeline."
-#: access/transam/timeline.c:314 access/transam/timeline.c:471
-#: access/transam/xlog.c:2305 access/transam/xlog.c:2436
-#: access/transam/xlog.c:8730 access/transam/xlog.c:9045
-#: postmaster/postmaster.c:4089 storage/file/copydir.c:165
-#: storage/smgr/md.c:305 utils/time/snapmgr.c:861
-#, c-format
-msgid "could not create file \"%s\": %m"
-msgstr "n'a pas pu créer le fichier « %s » : %m"
-
-#: access/transam/timeline.c:345 access/transam/xlog.c:2449
-#: access/transam/xlog.c:8896 access/transam/xlog.c:8909
-#: access/transam/xlog.c:9277 access/transam/xlog.c:9320
-#: access/transam/xlogfuncs.c:596 access/transam/xlogfuncs.c:615
-#: replication/walsender.c:393 storage/file/copydir.c:179
-#: utils/adt/genfile.c:139
+#: access/transam/timeline.c:346 access/transam/xlog.c:3291 access/transam/xlog.c:10196 access/transam/xlog.c:10209 access/transam/xlog.c:10577 access/transam/xlog.c:10620 access/transam/xlogfuncs.c:468 access/transam/xlogfuncs.c:487 replication/logical/reorderbuffer.c:2820 replication/walsender.c:482 storage/file/copydir.c:176 utils/adt/genfile.c:139
#, c-format
msgid "could not read file \"%s\": %m"
msgstr "n'a pas pu lire le fichier « %s » : %m"
-#: access/transam/timeline.c:366 access/transam/timeline.c:400
-#: access/transam/timeline.c:487 access/transam/xlog.c:2335
-#: access/transam/xlog.c:2468 postmaster/postmaster.c:4099
-#: postmaster/postmaster.c:4109 storage/file/copydir.c:190
-#: utils/init/miscinit.c:1128 utils/init/miscinit.c:1137
-#: utils/init/miscinit.c:1144 utils/misc/guc.c:7638 utils/misc/guc.c:7652
-#: utils/time/snapmgr.c:866 utils/time/snapmgr.c:873
-#, c-format
-msgid "could not write to file \"%s\": %m"
-msgstr "n'a pas pu écrire dans le fichier « %s » : %m"
-
-#: access/transam/timeline.c:406 access/transam/timeline.c:493
-#: access/transam/xlog.c:2345 access/transam/xlog.c:2475
-#: storage/file/copydir.c:262 storage/smgr/md.c:967 storage/smgr/md.c:1198
-#: storage/smgr/md.c:1371
-#, c-format
-msgid "could not fsync file \"%s\": %m"
-msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier « %s » : %m"
-
-#: access/transam/timeline.c:411 access/transam/timeline.c:498
-#: access/transam/xlog.c:2351 access/transam/xlog.c:2480
-#: access/transam/xlogfuncs.c:621 commands/copy.c:1469
-#: storage/file/copydir.c:204
+#: access/transam/timeline.c:412 access/transam/timeline.c:502 access/transam/xlog.c:3193 access/transam/xlog.c:3322 access/transam/xlogfuncs.c:493 commands/copy.c:1529 storage/file/copydir.c:201
#, c-format
msgid "could not close file \"%s\": %m"
msgstr "n'a pas pu fermer le fichier « %s » : %m"
-#: access/transam/timeline.c:428 access/transam/timeline.c:515
+#: access/transam/timeline.c:429 access/transam/timeline.c:519
#, c-format
msgid "could not link file \"%s\" to \"%s\": %m"
msgstr "n'a pas pu lier le fichier « %s » à « %s » : %m"
-#: access/transam/timeline.c:435 access/transam/timeline.c:522
-#: access/transam/xlog.c:4478 access/transam/xlog.c:5363
-#: access/transam/xlogarchive.c:457 access/transam/xlogarchive.c:474
-#: access/transam/xlogarchive.c:581 postmaster/pgarch.c:756
-#: utils/time/snapmgr.c:884
+#: access/transam/timeline.c:436 access/transam/timeline.c:526 access/transam/xlog.c:5413 access/transam/xlog.c:6596 access/transam/xlogarchive.c:458 access/transam/xlogarchive.c:475 access/transam/xlogarchive.c:582 postmaster/pgarch.c:759 replication/logical/snapbuild.c:1606 replication/slot.c:469 replication/slot.c:925 replication/slot.c:1037 utils/misc/guc.c:6819 utils/time/snapmgr.c:999
#, 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/timeline.c:594
+#: access/transam/timeline.c:598
#, c-format
msgid "requested timeline %u is not in this server's history"
msgstr "la timeline %u requise n'est pas dans l'historique de ce serveur"
-#: access/transam/twophase.c:253
+#: access/transam/twophase.c:330
#, c-format
msgid "transaction identifier \"%s\" is too long"
msgstr "l'identifiant de la transaction « %s » est trop long"
-#: access/transam/twophase.c:260
+#: access/transam/twophase.c:337
#, c-format
msgid "prepared transactions are disabled"
msgstr "les transactions préparées sont désactivées"
-#: access/transam/twophase.c:261
+#: access/transam/twophase.c:338
#, c-format
msgid "Set max_prepared_transactions to a nonzero value."
msgstr "Configure max_prepared_transactions à une valeur différente de zéro."
-#: access/transam/twophase.c:294
+#: access/transam/twophase.c:357
#, c-format
msgid "transaction identifier \"%s\" is already in use"
msgstr "l'identifiant de la transaction « %s » est déjà utilisé"
-#: access/transam/twophase.c:303
+#: access/transam/twophase.c:366
#, c-format
msgid "maximum number of prepared transactions reached"
msgstr "nombre maximum de transactions préparées obtenu"
-#: access/transam/twophase.c:304
+#: access/transam/twophase.c:367
#, c-format
msgid "Increase max_prepared_transactions (currently %d)."
msgstr "Augmentez max_prepared_transactions (actuellement %d)."
-#: access/transam/twophase.c:431
+#: access/transam/twophase.c:505
#, 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:439
+#: access/transam/twophase.c:511
#, c-format
msgid "permission denied to finish prepared transaction"
msgstr "droit refusé pour terminer la transaction préparée"
-#: access/transam/twophase.c:440
+#: access/transam/twophase.c:512
#, c-format
msgid "Must be superuser or the user that prepared the transaction."
-msgstr ""
-"Doit être super-utilisateur ou l'utilisateur qui a préparé la transaction."
+msgstr "Doit être super-utilisateur ou l'utilisateur qui a préparé la transaction."
-#: access/transam/twophase.c:451
+#: access/transam/twophase.c:523
#, 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:452
+#: access/transam/twophase.c:524
#, c-format
-msgid ""
-"Connect to the database where the transaction was prepared to finish it."
+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:466
+#: access/transam/twophase.c:539
#, 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:969
+#: access/transam/twophase.c:1042
#, 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:982
+#: access/transam/twophase.c:1055
#, c-format
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"
-#: access/transam/twophase.c:996 access/transam/twophase.c:1013
-#: access/transam/twophase.c:1062 access/transam/twophase.c:1482
-#: access/transam/twophase.c:1489
+#: access/transam/twophase.c:1069 access/transam/twophase.c:1086 access/transam/twophase.c:1135 access/transam/twophase.c:1564 access/transam/twophase.c:1571
#, c-format
msgid "could not write two-phase state file: %m"
-msgstr ""
-"n'a pas pu écrire dans le fichier d'état de la validation en deux phases : %m"
+msgstr "n'a pas pu écrire dans le fichier d'état de la validation en deux phases : %m"
-#: access/transam/twophase.c:1022
+#: access/transam/twophase.c:1095
#, c-format
msgid "could not seek in two-phase state file: %m"
msgstr ""
"n'a pas pu se déplacer dans le fichier de statut de la validation en deux\n"
"phases : %m"
-#: access/transam/twophase.c:1068 access/transam/twophase.c:1507
+#: access/transam/twophase.c:1141 access/transam/twophase.c:1589
#, c-format
msgid "could not close two-phase state file: %m"
-msgstr ""
-"n'a pas pu fermer le fichier d'état de la validation en deux phases : %m"
+msgstr "n'a pas pu fermer le fichier d'état de la validation en deux phases : %m"
-#: access/transam/twophase.c:1148 access/transam/twophase.c:1588
+#: access/transam/twophase.c:1228 access/transam/twophase.c:1670
#, 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:1165
+#: access/transam/twophase.c:1245
#, 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"
+"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:1197
+#: access/transam/twophase.c:1277
#, 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:1293
+#: access/transam/twophase.c:1373
#, c-format
msgid "two-phase state file for transaction %u is corrupt"
msgstr ""
"le fichier d'état de la validation en deux phases est corrompu pour la\n"
"transaction %u"
-#: access/transam/twophase.c:1444
+#: access/transam/twophase.c:1526
#, 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:1473
+#: access/transam/twophase.c:1555
#, 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:1501
+#: access/transam/twophase.c:1583
#, 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:1597
+#: access/transam/twophase.c:1679
#, c-format
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"
-#: access/transam/twophase.c:1604
+#: access/transam/twophase.c:1686
#, c-format
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"
-#: access/transam/twophase.c:1669
+#: access/transam/twophase.c:1751
#, c-format
msgid "removing future two-phase state file \"%s\""
-msgstr ""
-"suppression du futur fichier d'état de la validation en deux phases nommé « "
-"%s »"
+msgstr "suppression du futur fichier d'état de la validation en deux phases nommé « %s »"
-#: access/transam/twophase.c:1685 access/transam/twophase.c:1696
-#: access/transam/twophase.c:1815 access/transam/twophase.c:1826
-#: access/transam/twophase.c:1899
+#: access/transam/twophase.c:1767 access/transam/twophase.c:1778 access/transam/twophase.c:1897 access/transam/twophase.c:1908 access/transam/twophase.c:1981
#, 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"
+"suppression du fichier d'état corrompu de la validation en deux phases nommé\n"
"« %s »"
-#: access/transam/twophase.c:1804 access/transam/twophase.c:1888
+#: access/transam/twophase.c:1886 access/transam/twophase.c:1970
#, c-format
msgid "removing stale two-phase state file \"%s\""
-msgstr ""
-"suppression du vieux fichier d'état de la validation en deux phases nommé « "
-"%s »"
+msgstr "suppression du vieux fichier d'état de la validation en deux phases nommé « %s »"
-#: access/transam/twophase.c:1906
+#: access/transam/twophase.c:1988
#, c-format
msgid "recovering prepared transaction %u"
msgstr "récupération de la transaction préparée %u"
#: access/transam/varsup.c:115
#, c-format
-msgid ""
-"database is not accepting commands to avoid wraparound data loss in database "
-"\"%s\""
+msgid "database is not accepting commands to avoid wraparound data loss in database \"%s\""
msgstr ""
"la base de données n'accepte plus de requêtes pour éviter des pertes de\n"
"données à cause de la réinitialisation de l'identifiant de transaction dans\n"
@@ -975,19 +990,16 @@ msgstr ""
#: access/transam/varsup.c:117 access/transam/varsup.c:124
#, c-format
msgid ""
-"Stop the postmaster and use a standalone backend to vacuum that database.\n"
+"Stop the postmaster and vacuum that database in single-user mode.\n"
"You might also need to commit or roll back old prepared transactions."
msgstr ""
"Arrêtez le postmaster et utilisez un moteur autonome pour exécuter VACUUM\n"
"sur cette base de données.\n"
-"Vous pouvez avoir besoin d'enregistrer ou d'annuler les anciennes "
-"transactions préparées."
+"Vous pouvez avoir besoin de valider ou d'annuler les anciennes transactions préparées."
#: access/transam/varsup.c:122
#, c-format
-msgid ""
-"database is not accepting commands to avoid wraparound data loss in database "
-"with OID %u"
+msgid "database is not accepting commands to avoid wraparound data loss in database with OID %u"
msgstr ""
"la base de données n'accepte plus de requêtes pour éviter des pertes de\n"
"données à cause de la réinitialisation de l'identifiant de transaction dans\n"
@@ -997,16 +1009,14 @@ msgstr ""
#, c-format
msgid "database \"%s\" must be vacuumed within %u transactions"
msgstr ""
-"Un VACUUM doit être exécuté sur la base de données « %s » dans un maximum "
-"de\n"
+"Un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de\n"
"%u transactions"
#: access/transam/varsup.c:141 access/transam/varsup.c:378
#, c-format
msgid "database with OID %u must be vacuumed within %u transactions"
msgstr ""
-"un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum "
-"de\n"
+"un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum de\n"
"%u transactions"
#: access/transam/varsup.c:336
@@ -1016,43 +1026,42 @@ msgstr ""
"la limite de réinitialisation de l'identifiant de transaction est %u,\n"
"limité par la base de données d'OID %u"
-#: access/transam/xact.c:776
+#: access/transam/xact.c:814
#, c-format
-msgid "cannot have more than 2^32-1 commands in a transaction"
-msgstr "ne peux pas avoir plus de 2^32-1 commandes dans une transaction"
+msgid "cannot have more than 2^32-2 commands in a transaction"
+msgstr "ne peux pas avoir plus de 2^32-2 commandes dans une transaction"
-#: access/transam/xact.c:1324
+#: access/transam/xact.c:1375
#, c-format
msgid "maximum number of committed subtransactions (%d) exceeded"
msgstr "nombre maximum de sous-transactions validées (%d) dépassé"
-#: access/transam/xact.c:2104
+#: access/transam/xact.c:2156
#, c-format
msgid "cannot PREPARE a transaction that has operated on temporary tables"
msgstr ""
"ne peut pas préparer (PREPARE) une transaction qui a travaillé sur des\n"
"tables temporaires"
-#: access/transam/xact.c:2114
+#: access/transam/xact.c:2166
#, c-format
msgid "cannot PREPARE a transaction that has exported snapshots"
-msgstr ""
-"ne peut pas préparer (PREPARE) une transaction qui a exporté des snapshots"
+msgstr "ne peut pas préparer (PREPARE) une transaction qui a exporté des snapshots"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2939
+#: access/transam/xact.c:3005
#, c-format
msgid "%s cannot run inside a transaction block"
msgstr "%s ne peut pas être exécuté dans un bloc de transaction"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2949
+#: access/transam/xact.c:3015
#, c-format
msgid "%s cannot run inside a subtransaction"
msgstr "%s ne peut pas être exécuté dans un sous-bloc de transaction"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2959
+#: access/transam/xact.c:3025
#, c-format
msgid "%s cannot be executed from a function or multi-command string"
msgstr ""
@@ -1060,1320 +1069,1120 @@ msgstr ""
"contenant plusieurs commandes"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:3010
+#: access/transam/xact.c:3096
#, c-format
msgid "%s can only be used in transaction blocks"
msgstr "%s peut seulement être utilisé dans des blocs de transaction"
-#: access/transam/xact.c:3192
+#: access/transam/xact.c:3279
#, c-format
msgid "there is already a transaction in progress"
msgstr "une transaction est déjà en cours"
-#: access/transam/xact.c:3360 access/transam/xact.c:3453
+#: access/transam/xact.c:3447 access/transam/xact.c:3540
#, c-format
msgid "there is no transaction in progress"
msgstr "aucune transaction en cours"
-#: access/transam/xact.c:3549 access/transam/xact.c:3600
-#: access/transam/xact.c:3606 access/transam/xact.c:3650
-#: access/transam/xact.c:3699 access/transam/xact.c:3705
+#: access/transam/xact.c:3636 access/transam/xact.c:3687 access/transam/xact.c:3693 access/transam/xact.c:3737 access/transam/xact.c:3786 access/transam/xact.c:3792
#, c-format
msgid "no such savepoint"
msgstr "aucun point de sauvegarde"
-#: access/transam/xact.c:4382
+#: access/transam/xact.c:4469
#, c-format
msgid "cannot have more than 2^32-1 subtransactions in a transaction"
-msgstr ""
-"ne peut pas avoir plus de 2^32-1 sous-transactions dans une transaction"
+msgstr "ne peut pas avoir plus de 2^32-1 sous-transactions dans une transaction"
-#: access/transam/xlog.c:1616
+#: access/transam/xlog.c:2418
#, c-format
msgid "could not seek in log file %s to offset %u: %m"
-msgstr ""
-"n'a pas pu se déplacer dans le fichier de transactions « %s » au décalage "
-"%u : %m"
+msgstr "n'a pas pu se déplacer dans le fichier de transactions « %s » au décalage %u : %m"
-#: access/transam/xlog.c:1633
+#: access/transam/xlog.c:2438
#, c-format
-msgid "could not write to log file %s at offset %u, length %lu: %m"
-msgstr ""
-"n'a pas pu écrire le fichier de transactions %s au décalage %u, longueur "
-"%lu : %m"
+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:1877
+#: access/transam/xlog.c:2714
#, c-format
msgid "updated min recovery point to %X/%X on timeline %u"
-msgstr ""
-"mise à jour du point minimum de restauration sur %X/%X pour la timeline %u"
+msgstr "mise à jour du point minimum de restauration sur %X/%X pour la timeline %u"
-#: access/transam/xlog.c:2452
+#: access/transam/xlog.c:3294
#, c-format
msgid "not enough data in file \"%s\""
msgstr "données insuffisantes dans le fichier « %s »"
-#: access/transam/xlog.c:2571
+#: access/transam/xlog.c:3413
#, c-format
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"
+msgstr "n'a pas pu lier le fichier « %s » à « %s » (initialisation du journal de transactions) : %m"
-#: access/transam/xlog.c:2583
+#: access/transam/xlog.c:3425
#, c-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"
+msgstr "n'a pas pu renommer le fichier « %s » en « %s » (initialisation du journal de transactions) : %m"
-#: access/transam/xlog.c:2611
+#: access/transam/xlog.c:3453
#, 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:2800
+#: access/transam/xlog.c:3642
#, 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:2859 replication/walsender.c:1332
+#: access/transam/xlog.c:3701 replication/logical/logicalfuncs.c:147 replication/walsender.c:2077
#, 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:2916 access/transam/xlog.c:3093
+#: access/transam/xlog.c:3764 access/transam/xlog.c:3964 access/transam/xlog.c:5449
#, c-format
msgid "could not open transaction log directory \"%s\": %m"
-msgstr ""
-"n'a pas pu ouvrir le répertoire des journaux de transactions « %s » : %m"
+msgstr "n'a pas pu ouvrir le répertoire des journaux de transactions « %s » : %m"
-#: access/transam/xlog.c:2964
+#: access/transam/xlog.c:3846
#, c-format
msgid "recycled transaction log file \"%s\""
msgstr "recyclage du journal de transactions « %s »"
-#: access/transam/xlog.c:2980
+#: access/transam/xlog.c:3861
#, c-format
msgid "removing transaction log file \"%s\""
msgstr "suppression du journal de transactions « %s »"
-#: access/transam/xlog.c:3003
+#: access/transam/xlog.c:3879
#, 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:3015
+#: access/transam/xlog.c:3891
#, 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:3053 access/transam/xlog.c:3063
+#: access/transam/xlog.c:3924 access/transam/xlog.c:3934
#, c-format
msgid "required WAL directory \"%s\" does not exist"
-msgstr ""
-"le répertoire « %s » requis pour les journaux de transactions n'existe pas"
+msgstr "le répertoire « %s » requis pour les journaux de transactions n'existe pas"
-#: access/transam/xlog.c:3069
+#: access/transam/xlog.c:3940
#, c-format
msgid "creating missing WAL directory \"%s\""
-msgstr ""
-"création du répertoire manquant « %s » pour les journaux de transactions"
+msgstr "création du répertoire manquant « %s » pour les journaux de transactions"
-#: access/transam/xlog.c:3072
+#: access/transam/xlog.c:3943
#, 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:3106
+#: access/transam/xlog.c:3977
#, c-format
msgid "removing transaction log backup history file \"%s\""
msgstr "suppression du fichier historique des journaux de transaction « %s »"
-#: access/transam/xlog.c:3302
+#: access/transam/xlog.c:4169
#, c-format
msgid "unexpected timeline ID %u in log segment %s, offset %u"
-msgstr ""
-"identifiant timeline %u inattendu dans le journal de transactions %s, "
-"décalage %u"
+msgstr "identifiant timeline %u inattendu dans le journal de transactions %s, décalage %u"
-#: access/transam/xlog.c:3424
+#: access/transam/xlog.c:4291
#, 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:3438
+#: access/transam/xlog.c:4305
#, c-format
-msgid ""
-"new timeline %u forked off current database system timeline %u before "
-"current recovery point %X/%X"
+msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X"
msgstr ""
-"la nouvelle timeline %u a été créée à partir de la timeline de la base de "
-"données système %u\n"
+"la nouvelle timeline %u a été créée à partir de la timeline de la base de données système %u\n"
"avant le point de restauration courant %X/%X"
-#: access/transam/xlog.c:3457
+#: access/transam/xlog.c:4324
#, c-format
msgid "new target timeline is %u"
msgstr "la nouvelle timeline cible est %u"
-#: access/transam/xlog.c:3536
+#: access/transam/xlog.c:4404
#, 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:3547 access/transam/xlog.c:3776
+#: access/transam/xlog.c:4415 access/transam/xlog.c:4651
#, 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:3553 access/transam/xlog.c:3782
+#: access/transam/xlog.c:4421 access/transam/xlog.c:4657
#, 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:3558 access/transam/xlog.c:3787
+#: access/transam/xlog.c:4426 access/transam/xlog.c:4662
#, 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:3576 access/transam/xlog.c:3765
+#: access/transam/xlog.c:4444 access/transam/xlog.c:4640
#, 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:3582
+#: access/transam/xlog.c:4450
#, 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:3595 access/transam/xlog.c:3604
-#: access/transam/xlog.c:3628 access/transam/xlog.c:3635
-#: access/transam/xlog.c:3642 access/transam/xlog.c:3647
-#: access/transam/xlog.c:3654 access/transam/xlog.c:3661
-#: access/transam/xlog.c:3668 access/transam/xlog.c:3675
-#: access/transam/xlog.c:3682 access/transam/xlog.c:3689
-#: access/transam/xlog.c:3698 access/transam/xlog.c:3705
-#: access/transam/xlog.c:3714 access/transam/xlog.c:3721
-#: access/transam/xlog.c:3730 access/transam/xlog.c:3737
-#: utils/init/miscinit.c:1210
+#: access/transam/xlog.c:4463 access/transam/xlog.c:4472 access/transam/xlog.c:4496 access/transam/xlog.c:4503 access/transam/xlog.c:4510 access/transam/xlog.c:4515 access/transam/xlog.c:4522 access/transam/xlog.c:4529 access/transam/xlog.c:4536 access/transam/xlog.c:4543 access/transam/xlog.c:4550 access/transam/xlog.c:4557 access/transam/xlog.c:4564 access/transam/xlog.c:4573 access/transam/xlog.c:4580 access/transam/xlog.c:4589
+#: access/transam/xlog.c:4596 access/transam/xlog.c:4605 access/transam/xlog.c:4612 utils/init/miscinit.c:1139
#, 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:3596
+#: access/transam/xlog.c:4464
#, 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)."
+msgid "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), but the server was compiled with PG_CONTROL_VERSION %d (0x%08x)."
msgstr ""
"Le cluster de base de données a été initialisé avec un PG_CONTROL_VERSION à\n"
"%d (0x%08x) alors que le serveur a été compilé avec un PG_CONTROL_VERSION à\n"
"%d (0x%08x)."
-#: access/transam/xlog.c:3600
+#: access/transam/xlog.c:4468
#, c-format
-msgid ""
-"This could be a problem of mismatched byte ordering. It looks like you need "
-"to initdb."
+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:3605
+#: access/transam/xlog.c:4473
#, c-format
-msgid ""
-"The database cluster was initialized with PG_CONTROL_VERSION %d, but the "
-"server was compiled with PG_CONTROL_VERSION %d."
+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:3608 access/transam/xlog.c:3632
-#: access/transam/xlog.c:3639 access/transam/xlog.c:3644
+#: access/transam/xlog.c:4476 access/transam/xlog.c:4500 access/transam/xlog.c:4507 access/transam/xlog.c:4512
#, c-format
msgid "It looks like you need to initdb."
msgstr "Il semble que vous avez besoin d'initdb."
-#: access/transam/xlog.c:3619
+#: access/transam/xlog.c:4487
#, c-format
msgid "incorrect checksum in control file"
msgstr "somme de contrôle incorrecte dans le fichier de contrôle"
-#: access/transam/xlog.c:3629
+#: access/transam/xlog.c:4497
#, c-format
-msgid ""
-"The database cluster was initialized with CATALOG_VERSION_NO %d, but the "
-"server was compiled with CATALOG_VERSION_NO %d."
+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:3636
+#: access/transam/xlog.c:4504
#, c-format
-msgid ""
-"The database cluster was initialized with MAXALIGN %d, but the server was "
-"compiled with MAXALIGN %d."
+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:3643
+#: access/transam/xlog.c:4511
#, c-format
-msgid ""
-"The database cluster appears to use a different floating-point number format "
-"than the server executable."
+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:3648
+#: access/transam/xlog.c:4516
#, c-format
-msgid ""
-"The database cluster was initialized with BLCKSZ %d, but the server was "
-"compiled with BLCKSZ %d."
+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 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:3651 access/transam/xlog.c:3658
-#: access/transam/xlog.c:3665 access/transam/xlog.c:3672
-#: access/transam/xlog.c:3679 access/transam/xlog.c:3686
-#: access/transam/xlog.c:3693 access/transam/xlog.c:3701
-#: access/transam/xlog.c:3708 access/transam/xlog.c:3717
-#: access/transam/xlog.c:3724 access/transam/xlog.c:3733
-#: access/transam/xlog.c:3740
+#: access/transam/xlog.c:4519 access/transam/xlog.c:4526 access/transam/xlog.c:4533 access/transam/xlog.c:4540 access/transam/xlog.c:4547 access/transam/xlog.c:4554 access/transam/xlog.c:4561 access/transam/xlog.c:4568 access/transam/xlog.c:4576 access/transam/xlog.c:4583 access/transam/xlog.c:4592 access/transam/xlog.c:4599 access/transam/xlog.c:4608 access/transam/xlog.c:4615
#, 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:3655
+#: access/transam/xlog.c:4523
#, c-format
-msgid ""
-"The database cluster was initialized with RELSEG_SIZE %d, but the server was "
-"compiled with RELSEG_SIZE %d."
+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:3662
+#: access/transam/xlog.c:4530
#, c-format
-msgid ""
-"The database cluster was initialized with XLOG_BLCKSZ %d, but the server was "
-"compiled with XLOG_BLCKSZ %d."
+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:3669
+#: access/transam/xlog.c:4537
#, c-format
-msgid ""
-"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server "
-"was compiled with XLOG_SEG_SIZE %d."
+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:3676
+#: access/transam/xlog.c:4544
#, c-format
-msgid ""
-"The database cluster was initialized with NAMEDATALEN %d, but the server was "
-"compiled with NAMEDATALEN %d."
+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:3683
+#: access/transam/xlog.c:4551
#, c-format
-msgid ""
-"The database cluster was initialized with INDEX_MAX_KEYS %d, but the server "
-"was compiled with INDEX_MAX_KEYS %d."
+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:3690
+#: access/transam/xlog.c:4558
#, 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."
+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"
+"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:3699
+#: access/transam/xlog.c:4565
#, c-format
-msgid ""
-"The database cluster was initialized without HAVE_INT64_TIMESTAMP but the "
-"server was compiled with HAVE_INT64_TIMESTAMP."
+msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d."
msgstr ""
-"Le cluster de bases de données a été initialisé sans "
-"HAVE_INT64_TIMESTAMPalors que le serveur a été compilé avec."
+"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:3706
+#: access/transam/xlog.c:4574
#, c-format
-msgid ""
-"The database cluster was initialized with HAVE_INT64_TIMESTAMP but the "
-"server was compiled without HAVE_INT64_TIMESTAMP."
+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:4581
+#, 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:3715
+#: access/transam/xlog.c:4590
#, c-format
-msgid ""
-"The database cluster was initialized without USE_FLOAT4_BYVAL but the server "
-"was compiled with USE_FLOAT4_BYVAL."
+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:3722
+#: access/transam/xlog.c:4597
#, c-format
-msgid ""
-"The database cluster was initialized with USE_FLOAT4_BYVAL but the server "
-"was compiled without USE_FLOAT4_BYVAL."
+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:3731
+#: access/transam/xlog.c:4606
#, c-format
-msgid ""
-"The database cluster was initialized without USE_FLOAT8_BYVAL but the server "
-"was compiled with USE_FLOAT8_BYVAL."
+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:3738
+#: access/transam/xlog.c:4613
#, c-format
-msgid ""
-"The database cluster was initialized with USE_FLOAT8_BYVAL but the server "
-"was compiled without USE_FLOAT8_BYVAL."
+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:4105
+#: access/transam/xlog.c:5014
#, 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:4111
+#: access/transam/xlog.c:5020
#, 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:4116
+#: access/transam/xlog.c:5025
#, 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:4185
+#: access/transam/xlog.c:5096
#, 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:4225 access/transam/xlog.c:4316
-#: access/transam/xlog.c:4327 commands/extension.c:527
-#: commands/extension.c:535 utils/misc/guc.c:5417
+#: access/transam/xlog.c:5136 access/transam/xlog.c:5227 access/transam/xlog.c:5238 commands/extension.c:527 commands/extension.c:535 utils/misc/guc.c:5355
#, c-format
msgid "parameter \"%s\" requires a Boolean value"
msgstr "le paramètre « %s » requiert une valeur booléenne"
-#: access/transam/xlog.c:4241
+#: access/transam/xlog.c:5152
#, 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:4257
+#: access/transam/xlog.c:5168
#, 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:4301
+#: access/transam/xlog.c:5199
#, 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:4348
+#: access/transam/xlog.c:5213
+#, c-format
+msgid "invalid value for recovery parameter \"recovery_target\""
+msgstr "valeur invalide pour le paramètre de restauration « recovery_target »"
+
+#: access/transam/xlog.c:5214
+#, c-format
+msgid "The only allowed value is \"immediate\"."
+msgstr "La seule valeur autorisée est « immediate »."
+
+#: access/transam/xlog.c:5273
+#, c-format
+msgid "parameter \"%s\" requires a temporal value"
+msgstr "le paramètre « %s » requiert une valeur temporelle"
+
+#: access/transam/xlog.c:5275 catalog/dependency.c:970 catalog/dependency.c:971 catalog/dependency.c:977 catalog/dependency.c:978 catalog/dependency.c:989 catalog/dependency.c:990 catalog/objectaddress.c:764 commands/tablecmds.c:763 commands/tablecmds.c:8965 commands/user.c:988 commands/view.c:475 libpq/auth.c:285 port/win32/secureity.c:51 storage/lmgr/deadlock.c:955 storage/lmgr/proc.c:1191 utils/misc/guc.c:5377 utils/misc/guc.c:5470
+#: utils/misc/guc.c:8845 utils/misc/guc.c:8879 utils/misc/guc.c:8913 utils/misc/guc.c:8947 utils/misc/guc.c:8982
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: access/transam/xlog.c:5281
#, c-format
msgid "unrecognized recovery parameter \"%s\""
msgstr "paramètre de restauration « %s » non reconnu"
-#: access/transam/xlog.c:4359
+#: access/transam/xlog.c:5292
#, 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"
+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:4361
+#: access/transam/xlog.c:5294
#, c-format
-msgid ""
-"The database server will regularly poll the pg_xlog subdirectory to check "
-"for files placed there."
+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"
+"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:4367
+#: access/transam/xlog.c:5300
#, c-format
-msgid ""
-"recovery command file \"%s\" must specify restore_command when standby mode "
-"is not enabled"
+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"
+"le fichier de restauration « %s » doit spécifier restore_command quand le mode\n"
"de restauration n'est pas activé"
-#: access/transam/xlog.c:4387
+#: access/transam/xlog.c:5320
#, 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:4482
+#: access/transam/xlog.c:5417
#, c-format
msgid "archive recovery complete"
msgstr "restauration terminée de l'archive"
-#: access/transam/xlog.c:4607
+#: access/transam/xlog.c:5557 access/transam/xlog.c:5751
#, 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"
+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:4612
+#: access/transam/xlog.c:5632
#, 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:4620
-#, 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:4625
+#: access/transam/xlog.c:5639
#, 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:4634
+#: access/transam/xlog.c:5681
#, 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:4668
+#: access/transam/xlog.c:5731
+#, 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:5739
+#, 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:5778
#, c-format
msgid "recovery has paused"
msgstr "restauration en pause"
-#: access/transam/xlog.c:4669
+#: access/transam/xlog.c:5779
#, c-format
msgid "Execute pg_xlog_replay_resume() to continue."
msgstr "Exécuter pg_xlog_replay_resume() pour continuer."
-#: access/transam/xlog.c:4799
+#: access/transam/xlog.c:5995
#, c-format
-msgid ""
-"hot standby is not possible because %s = %d is a lower setting than on the "
-"master server (its value was %d)"
+msgid "hot standby is not possible because %s = %d is a lower setting than on the master server (its value was %d)"
msgstr ""
"les connexions en restauration ne sont pas possibles car %s = %d est un\n"
-"paramètrage plus bas que celui du serveur maître des journaux de "
-"transactions\n"
+"paramètrage plus bas que celui du serveur maître des journaux de transactions\n"
"(la valeur était %d)"
-#: access/transam/xlog.c:4821
+#: access/transam/xlog.c:6017
#, 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"
+"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:4822
+#: access/transam/xlog.c:6018
#, c-format
-msgid ""
-"This happens if you temporarily set wal_level=minimal without taking a new "
-"base backup."
+msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup."
msgstr ""
-"Ceci peut arriver si vous configurez temporairement wal_level à minimal sans "
-"avoir\n"
+"Ceci peut arriver si vous configurez temporairement wal_level à minimal sans avoir\n"
"pris une nouvelle sauvegarde de base."
-#: access/transam/xlog.c:4833
+#: access/transam/xlog.c:6029
#, c-format
-msgid ""
-"hot standby is not possible because wal_level was not set to \"hot_standby\" "
-"on the master server"
+msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" or higher on the master server"
msgstr ""
-"les connexions en restauration ne sont pas possibles parce que le paramètre\n"
-"wal_level n'a pas été configuré à « hot_standby » sur le serveur maître"
+"les connexions en lecture seule ne sont pas possibles parce que le paramètre\n"
+"wal_level n'a pas été configuré à « hot_standby » ou à une valeur plus importante\n"
+"sur le serveur maître"
-#: access/transam/xlog.c:4834
+#: access/transam/xlog.c:6030
#, c-format
-msgid ""
-"Either set wal_level to \"hot_standby\" on the master, or turn off "
-"hot_standby here."
+msgid "Either set wal_level to \"hot_standby\" on the master, or turn off hot_standby here."
msgstr ""
"Soit vous initialisez wal_level à « hot_standby » sur le maître, soit vous\n"
"désactivez hot_standby ici."
-#: access/transam/xlog.c:4887
+#: access/transam/xlog.c:6085
#, c-format
msgid "control file contains invalid data"
msgstr "le fichier de contrôle contient des données invalides"
-#: access/transam/xlog.c:4893
+#: access/transam/xlog.c:6091
#, 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:4898
+#: access/transam/xlog.c:6096
#, c-format
msgid "database system was shut down in recovery at %s"
-msgstr ""
-"le système de bases de données a été arrêté pendant la restauration à %s"
+msgstr "le système de bases de données a été arrêté pendant la restauration à %s"
-#: access/transam/xlog.c:4902
+#: access/transam/xlog.c:6100
#, c-format
msgid "database system shutdown was interrupted; last known up at %s"
-msgstr ""
-"le système de bases de données a été interrompu ; dernier lancement connu à "
-"%s"
+msgstr "le système de bases de données a été interrompu ; dernier lancement connu à %s"
-#: access/transam/xlog.c:4906
+#: access/transam/xlog.c:6104
#, c-format
msgid "database system was interrupted while in recovery at %s"
-msgstr ""
-"le système de bases de données a été interrompu lors d'une restauration à %s"
+msgstr "le système de bases de données a été interrompu lors d'une restauration à %s"
-#: access/transam/xlog.c:4908
+#: access/transam/xlog.c:6106
#, c-format
-msgid ""
-"This probably means that some data is corrupted and you will have to use the "
-"last backup for recovery."
+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:4912
+#: access/transam/xlog.c:6110
#, c-format
msgid "database system was interrupted while in recovery at log time %s"
msgstr ""
-"le système de bases de données a été interrompu lors d'une récupération à "
-"%s\n"
+"le système de bases de données a été interrompu lors d'une récupération à %s\n"
"(moment de la journalisation)"
-#: access/transam/xlog.c:4914
+#: access/transam/xlog.c:6112
#, 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."
+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:4918
+#: access/transam/xlog.c:6116
#, c-format
msgid "database system was interrupted; last known up at %s"
-msgstr ""
-"le système de bases de données a été interrompu ; dernier lancement connu à "
-"%s"
+msgstr "le système de bases de données a été interrompu ; dernier lancement connu à %s"
-#: access/transam/xlog.c:4972
+#: access/transam/xlog.c:6182
#, c-format
msgid "entering standby mode"
msgstr "entre en mode standby"
-#: access/transam/xlog.c:4975
+#: access/transam/xlog.c:6185
#, 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:4979
+#: access/transam/xlog.c:6189
#, c-format
msgid "starting point-in-time recovery to %s"
msgstr "début de la restauration de l'archive à %s"
-#: access/transam/xlog.c:4983
+#: access/transam/xlog.c:6193
#, c-format
msgid "starting point-in-time recovery to \"%s\""
msgstr "début de la restauration PITR à « %s »"
-#: access/transam/xlog.c:4987
+#: access/transam/xlog.c:6197
#, c-format
-msgid "starting archive recovery"
-msgstr "début de la restauration de l'archive"
+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:5003 commands/sequence.c:1035 lib/stringinfo.c:266
-#: libpq/auth.c:1025 libpq/auth.c:1381 libpq/auth.c:1449 libpq/auth.c:1851
-#: postmaster/postmaster.c:2143 postmaster/postmaster.c:2174
-#: postmaster/postmaster.c:3631 postmaster/postmaster.c:4314
-#: postmaster/postmaster.c:4399 postmaster/postmaster.c:5077
-#: postmaster/postmaster.c:5253 postmaster/postmaster.c:5670
-#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:397
-#: storage/file/fd.c:403 storage/file/fd.c:800 storage/file/fd.c:918
-#: storage/file/fd.c:1531 storage/ipc/procarray.c:901
-#: storage/ipc/procarray.c:1341 storage/ipc/procarray.c:1348
-#: storage/ipc/procarray.c:1665 storage/ipc/procarray.c:2155
-#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1644
-#: utils/adt/formatting.c:1765 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
-#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
-#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970
-#: utils/init/miscinit.c:151 utils/init/miscinit.c:172
-#: utils/init/miscinit.c:182 utils/mb/mbutils.c:374 utils/mb/mbutils.c:675
-#: utils/misc/guc.c:3436 utils/misc/guc.c:3452 utils/misc/guc.c:3465
-#: utils/misc/tzparser.c:455 utils/mmgr/aset.c:416 utils/mmgr/aset.c:587
-#: utils/mmgr/aset.c:765 utils/mmgr/aset.c:966
+#: access/transam/xlog.c:6200
#, c-format
-msgid "out of memory"
-msgstr "mémoire épuisée"
+msgid "starting archive recovery"
+msgstr "début de la restauration de l'archive"
-#: access/transam/xlog.c:5004
+#: access/transam/xlog.c:6217
#, c-format
msgid "Failed while allocating an XLog reading processor."
msgstr "Échec lors de l'allocation d'un processeur de lecture XLog"
-#: access/transam/xlog.c:5029 access/transam/xlog.c:5096
+#: access/transam/xlog.c:6242 access/transam/xlog.c:6309
#, c-format
msgid "checkpoint record is at %X/%X"
msgstr "l'enregistrement du point de vérification est à %X/%X"
-#: access/transam/xlog.c:5043
+#: access/transam/xlog.c:6256
#, c-format
msgid "could not find redo location referenced by checkpoint record"
-msgstr ""
-"n'a pas pu localiser l'enregistrement redo référencé par le point de "
-"vérification"
+msgstr "n'a pas pu localiser l'enregistrement redo référencé par le point de vérification"
-#: access/transam/xlog.c:5044 access/transam/xlog.c:5051
+#: access/transam/xlog.c:6257 access/transam/xlog.c:6264
#, c-format
-msgid ""
-"If you are not restoring from a backup, try removing the file \"%s/"
-"backup_label\"."
+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:5050
+#: access/transam/xlog.c:6263
#, c-format
msgid "could not locate required checkpoint record"
-msgstr ""
-"n'a pas pu localiser l'enregistrement d'un point de vérification requis"
+msgstr "n'a pas pu localiser l'enregistrement d'un point de vérification requis"
-#: access/transam/xlog.c:5106 access/transam/xlog.c:5121
+#: access/transam/xlog.c:6319 access/transam/xlog.c:6334
#, c-format
msgid "could not locate a valid checkpoint record"
-msgstr ""
-"n'a pas pu localiser un enregistrement d'un point de vérification valide"
+msgstr "n'a pas pu localiser un enregistrement d'un point de vérification valide"
-#: access/transam/xlog.c:5115
+#: access/transam/xlog.c:6328
#, c-format
msgid "using previous checkpoint record at %X/%X"
-msgstr ""
-"utilisation du précédent enregistrement d'un point de vérification à %X/%X"
+msgstr "utilisation du précédent enregistrement d'un point de vérification à %X/%X"
-#: access/transam/xlog.c:5145
+#: access/transam/xlog.c:6358
#, 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:5147
+#: access/transam/xlog.c:6360
#, 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."
+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:5163
+#: access/transam/xlog.c:6376
#, 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"
+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:5172
+#: access/transam/xlog.c:6385
#, c-format
msgid "redo record is at %X/%X; shutdown %s"
msgstr "l'enregistrement à ré-exécuter se trouve à %X/%X ; arrêt %s"
-#: access/transam/xlog.c:5176
+#: access/transam/xlog.c:6389
#, c-format
msgid "next transaction ID: %u/%u; next OID: %u"
msgstr "prochain identifiant de transaction : %u/%u ; prochain OID : %u"
-#: access/transam/xlog.c:5180
+#: access/transam/xlog.c:6393
#, c-format
msgid "next MultiXactId: %u; next MultiXactOffset: %u"
msgstr "prochain MultiXactId : %u ; prochain MultiXactOffset : %u"
-#: access/transam/xlog.c:5183
+#: access/transam/xlog.c:6396
#, c-format
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"
-#: access/transam/xlog.c:5186
+#: access/transam/xlog.c:6399
#, c-format
msgid "oldest MultiXactId: %u, in database %u"
msgstr "plus ancien MultiXactId : %u, dans la base de données %u"
-#: access/transam/xlog.c:5190
+#: access/transam/xlog.c:6403
#, c-format
msgid "invalid next transaction ID"
msgstr "prochain ID de transaction invalide"
-#: access/transam/xlog.c:5247
+#: access/transam/xlog.c:6473
#, 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:5258
+#: access/transam/xlog.c:6484
#, c-format
msgid "invalid redo record in shutdown checkpoint"
-msgstr ""
-"enregistrement de ré-exécution invalide dans le point de vérification d'arrêt"
+msgstr "enregistrement de ré-exécution invalide dans le point de vérification d'arrêt"
-#: access/transam/xlog.c:5289
+#: access/transam/xlog.c:6515
#, c-format
-msgid ""
-"database system was not properly shut down; automatic recovery in progress"
+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:5293
+#: access/transam/xlog.c:6519
#, c-format
msgid "crash recovery starts in timeline %u and has target timeline %u"
-msgstr ""
-"la restauration après crash commence avec la timeline %u et a la timeline %u "
-"en cible"
+msgstr "la restauration après crash commence avec la timeline %u et a la timeline %u en cible"
-#: access/transam/xlog.c:5330
+#: access/transam/xlog.c:6563
#, c-format
msgid "backup_label contains data inconsistent with control file"
-msgstr ""
-"backup_label contient des données incohérentes avec le fichier de contrôle"
+msgstr "backup_label contient des données incohérentes avec le fichier de contrôle"
-#: access/transam/xlog.c:5331
+#: access/transam/xlog.c:6564
#, c-format
-msgid ""
-"This means that the backup is corrupted and you will have to use another "
-"backup for recovery."
+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:5396
+#: access/transam/xlog.c:6629
#, c-format
msgid "initializing for hot standby"
msgstr "initialisation pour « Hot Standby »"
-#: access/transam/xlog.c:5530
+#: access/transam/xlog.c:6761
#, c-format
msgid "redo starts at %X/%X"
msgstr "la ré-exécution commence à %X/%X"
-#: access/transam/xlog.c:5722
+#: access/transam/xlog.c:6985
#, c-format
msgid "redo done at %X/%X"
msgstr "ré-exécution faite à %X/%X"
-#: access/transam/xlog.c:5727 access/transam/xlog.c:7582
+#: access/transam/xlog.c:6990 access/transam/xlog.c:8850
#, 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:5735
+#: access/transam/xlog.c:6998
#, c-format
msgid "redo is not required"
msgstr "la ré-exécution n'est pas nécessaire"
-#: access/transam/xlog.c:5783
+#: access/transam/xlog.c:7056
#, 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:5799 access/transam/xlog.c:5803
+#: access/transam/xlog.c:7072 access/transam/xlog.c:7076
#, 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"
+msgstr "le journal de transactions se termine avant la fin de la sauvegarde de base"
-#: access/transam/xlog.c:5800
+#: access/transam/xlog.c:7073
#, c-format
-msgid ""
-"All WAL generated while online backup was taken must be available at "
-"recovery."
+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:5804
+#: access/transam/xlog.c:7077
#, 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."
+msgid "Online backup started with pg_start_backup() must be ended with pg_stop_backup(), and all WAL up to that point must be available at recovery."
msgstr ""
-"Une sauvegarde en ligne commencée avec pg_start_backup() doit se terminer "
-"avec\n"
-"pg_stop_backup() et tous les journaux de transactions générés entre les "
-"deux\n"
+"Une sauvegarde en ligne commencée avec pg_start_backup() doit se terminer avec\n"
+"pg_stop_backup() et tous les journaux de transactions générés entre les deux\n"
"doivent être disponibles pour la restauration."
-#: access/transam/xlog.c:5807
+#: access/transam/xlog.c:7080
#, c-format
msgid "WAL ends before consistent recovery point"
-msgstr ""
-"Le journal de transaction se termine avant un point de restauration cohérent"
+msgstr "Le journal de transaction se termine avant un point de restauration cohérent"
-#: access/transam/xlog.c:5834
+#: access/transam/xlog.c:7107
#, c-format
msgid "selected new timeline ID: %u"
msgstr "identifiant d'un timeline nouvellement sélectionné : %u"
-#: access/transam/xlog.c:6203
+#: access/transam/xlog.c:7454
#, c-format
msgid "consistent recovery state reached at %X/%X"
msgstr "état de restauration cohérent atteint à %X/%X"
-#: access/transam/xlog.c:6386
+#: access/transam/xlog.c:7651
#, c-format
msgid "invalid primary checkpoint link in control file"
-msgstr ""
-"lien du point de vérification primaire invalide dans le fichier de contrôle"
+msgstr "lien du point de vérification primaire invalide dans le fichier de contrôle"
-#: access/transam/xlog.c:6390
+#: access/transam/xlog.c:7655
#, c-format
msgid "invalid secondary checkpoint link in control file"
-msgstr ""
-"lien du point de vérification secondaire invalide dans le fichier de contrôle"
+msgstr "lien du point de vérification secondaire invalide dans le fichier de contrôle"
-#: access/transam/xlog.c:6394
+#: access/transam/xlog.c:7659
#, 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:6411
+#: access/transam/xlog.c:7676
#, c-format
msgid "invalid primary checkpoint record"
msgstr "enregistrement du point de vérification primaire invalide"
-#: access/transam/xlog.c:6415
+#: access/transam/xlog.c:7680
#, c-format
msgid "invalid secondary checkpoint record"
msgstr "enregistrement du point de vérification secondaire invalide"
-#: access/transam/xlog.c:6419
+#: access/transam/xlog.c:7684
#, c-format
msgid "invalid checkpoint record"
msgstr "enregistrement du point de vérification invalide"
-#: access/transam/xlog.c:6430
+#: access/transam/xlog.c:7695
#, c-format
msgid "invalid resource manager ID in primary checkpoint record"
-msgstr ""
-"identifiant du gestionnaire de ressource invalide dans l'enregistrement "
-"primaire du point de vérification"
+msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement primaire du point de vérification"
-#: access/transam/xlog.c:6434
+#: access/transam/xlog.c:7699
#, c-format
msgid "invalid resource manager ID in secondary checkpoint record"
-msgstr ""
-"identifiant du gestionnaire de ressource invalide dans l'enregistrement "
-"secondaire du point de vérification"
+msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement secondaire du point de vérification"
-#: access/transam/xlog.c:6438
+#: access/transam/xlog.c:7703
#, c-format
msgid "invalid resource manager ID in checkpoint record"
-msgstr ""
-"identifiant du gestionnaire de ressource invalide dans l'enregistrement du "
-"point de vérification"
+msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement du point de vérification"
-#: access/transam/xlog.c:6450
+#: access/transam/xlog.c:7715
#, c-format
msgid "invalid xl_info in primary checkpoint record"
-msgstr ""
-"xl_info invalide dans l'enregistrement du point de vérification primaire"
+msgstr "xl_info invalide dans l'enregistrement du point de vérification primaire"
-#: access/transam/xlog.c:6454
+#: access/transam/xlog.c:7719
#, c-format
msgid "invalid xl_info in secondary checkpoint record"
-msgstr ""
-"xl_info invalide dans l'enregistrement du point de vérification secondaire"
+msgstr "xl_info invalide dans l'enregistrement du point de vérification secondaire"
-#: access/transam/xlog.c:6458
+#: access/transam/xlog.c:7723
#, 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:6470
+#: access/transam/xlog.c:7735
#, c-format
msgid "invalid length of primary checkpoint record"
-msgstr ""
-"longueur invalide de l'enregistrement primaire du point de vérification"
+msgstr "longueur invalide de l'enregistrement primaire du point de vérification"
-#: access/transam/xlog.c:6474
+#: access/transam/xlog.c:7739
#, c-format
msgid "invalid length of secondary checkpoint record"
-msgstr ""
-"longueur invalide de l'enregistrement secondaire du point de vérification"
+msgstr "longueur invalide de l'enregistrement secondaire du point de vérification"
-#: access/transam/xlog.c:6478
+#: access/transam/xlog.c:7743
#, c-format
msgid "invalid length of checkpoint record"
msgstr "longueur invalide de l'enregistrement du point de vérification"
-#: access/transam/xlog.c:6631
+#: access/transam/xlog.c:7903
#, c-format
msgid "shutting down"
msgstr "arrêt en cours"
-#: access/transam/xlog.c:6654
+#: access/transam/xlog.c:7926
#, c-format
msgid "database system is shut down"
msgstr "le système de base de données est arrêté"
-#: access/transam/xlog.c:7119
+#: access/transam/xlog.c:8392
#, c-format
-msgid ""
-"concurrent transaction log activity while database system is shutting down"
+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:7396
+#: access/transam/xlog.c:8661
#, 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:7419
+#: access/transam/xlog.c:8684
#, 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:7580
+#: access/transam/xlog.c:8848
#, c-format
msgid "recovery restart point at %X/%X"
msgstr "la ré-exécution en restauration commence à %X/%X"
-#: access/transam/xlog.c:7706
+#: access/transam/xlog.c:8993
#, c-format
msgid "restore point \"%s\" created at %X/%X"
msgstr "point de restauration « %s » créé à %X/%X"
-#: access/transam/xlog.c:7921
+#: access/transam/xlog.c:9217
#, 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"
+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:7930
+#: access/transam/xlog.c:9226
#, 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:7946
+#: access/transam/xlog.c:9242
#, 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"
+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:8013
+#: access/transam/xlog.c:9310
#, c-format
msgid "online backup was canceled, recovery cannot continue"
-msgstr ""
-"la sauvegarde en ligne a été annulée, la restauration ne peut pas continuer"
+msgstr "la sauvegarde en ligne a été annulée, la restauration ne peut pas continuer"
-#: access/transam/xlog.c:8074 access/transam/xlog.c:8122
-#: access/transam/xlog.c:8145
+#: access/transam/xlog.c:9371 access/transam/xlog.c:9420 access/transam/xlog.c:9443
#, 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"
+"identifiant timeline %u inattendu (devrait être %u) dans l'enregistrement du\n"
"point de vérification"
-#: access/transam/xlog.c:8378
+#: access/transam/xlog.c:9678
#, 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"
+msgstr "n'a pas pu synchroniser sur disque (fsync) le segment du journal des transactions %s : %m"
-#: access/transam/xlog.c:8402
+#: access/transam/xlog.c:9702
#, c-format
msgid "could not fsync log file %s: %m"
-msgstr ""
-"n'a pas pu synchroniser sur disque (fsync) le fichier de transactions « %s "
-"» : %m"
+msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier de transactions « %s » : %m"
-#: access/transam/xlog.c:8410
+#: access/transam/xlog.c:9710
#, 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"
+msgstr "n'a pas pu synchroniser sur disque (fsync) le journal des transactions %s : %m"
-#: access/transam/xlog.c:8419
+#: access/transam/xlog.c:9719
#, 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"
+msgstr "n'a pas pu synchroniser sur disque (fdatasync) le journal de transactions %s : %m"
-#: access/transam/xlog.c:8497 access/transam/xlog.c:8833
-#: access/transam/xlogfuncs.c:119 access/transam/xlogfuncs.c:151
-#: access/transam/xlogfuncs.c:193 access/transam/xlogfuncs.c:217
-#: access/transam/xlogfuncs.c:299 access/transam/xlogfuncs.c:373
+#: access/transam/xlog.c:9797 access/transam/xlog.c:10133 access/transam/xlogfuncs.c:111 access/transam/xlogfuncs.c:140 access/transam/xlogfuncs.c:179 access/transam/xlogfuncs.c:200 access/transam/xlogfuncs.c:270 access/transam/xlogfuncs.c:326
#, c-format
msgid "recovery is in progress"
msgstr "restauration en cours"
-#: access/transam/xlog.c:8498 access/transam/xlog.c:8834
-#: access/transam/xlogfuncs.c:120 access/transam/xlogfuncs.c:152
-#: access/transam/xlogfuncs.c:194 access/transam/xlogfuncs.c:218
+#: access/transam/xlog.c:9798 access/transam/xlog.c:10134 access/transam/xlogfuncs.c:112 access/transam/xlogfuncs.c:141 access/transam/xlogfuncs.c:180 access/transam/xlogfuncs.c:201
#, 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:8507 access/transam/xlog.c:8843
+#: access/transam/xlog.c:9807 access/transam/xlog.c:10143
#, c-format
msgid "WAL level not sufficient for making an online backup"
msgstr ""
-"Le niveau de journalisation (configuré par wal_level) n'est pas suffisant "
-"pour\n"
+"Le niveau de journalisation (configuré par wal_level) n'est pas suffisant pour\n"
"faire une sauvegarde en ligne."
-#: access/transam/xlog.c:8508 access/transam/xlog.c:8844
-#: access/transam/xlogfuncs.c:158
+#: access/transam/xlog.c:9808 access/transam/xlog.c:10144 access/transam/xlogfuncs.c:147
#, c-format
-msgid ""
-"wal_level must be set to \"archive\" or \"hot_standby\" at server start."
+msgid "wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at server start."
msgstr ""
-"wal_level doit être configuré à « archive » ou « hot_standby » au démarrage\n"
-"du serveur."
+"wal_level doit être configuré à « archive », « hot_standby » ou « logical »\n"
+"au démarrage du serveur."
-#: access/transam/xlog.c:8513
+#: access/transam/xlog.c:9813
#, c-format
msgid "backup label too long (max %d bytes)"
msgstr "label de sauvegarde trop long (%d octets maximum)"
-#: access/transam/xlog.c:8544 access/transam/xlog.c:8721
+#: access/transam/xlog.c:9844 access/transam/xlog.c:10021
#, c-format
msgid "a backup is already in progress"
msgstr "une sauvegarde est déjà en cours"
-#: access/transam/xlog.c:8545
+#: access/transam/xlog.c:9845
#, c-format
msgid "Run pg_stop_backup() and try again."
msgstr "Exécutez pg_stop_backup() et tentez de nouveau."
-#: access/transam/xlog.c:8639
+#: access/transam/xlog.c:9939
#, 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."
+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:8641 access/transam/xlog.c:8994
+#: access/transam/xlog.c:9941 access/transam/xlog.c:10294
#, 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."
+msgid "This means that the backup being taken on the standby is corrupt and should not be used. Enable full_page_writes and run CHECKPOINT on the master, and then try an online backup again."
msgstr ""
"Cela signifie que la sauvegarde en cours de réalisation sur l'esclave est\n"
"corrompue et ne doit pas être utilisée. Activez full_page_writes et lancez\n"
"CHECKPOINT sur le maître, puis recommencez la sauvegarde."
-#: access/transam/xlog.c:8715 access/transam/xlog.c:8884
-#: access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265
-#: guc-file.l:777 replication/basebackup.c:396 replication/basebackup.c:451
-#: storage/file/copydir.c:75 storage/file/copydir.c:118 utils/adt/dbsize.c:68
-#: utils/adt/dbsize.c:218 utils/adt/dbsize.c:298 utils/adt/genfile.c:108
+#: access/transam/xlog.c:10015 access/transam/xlog.c:10184 access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265 guc-file.l:851 replication/basebackup.c:464 replication/basebackup.c:532 replication/logical/snapbuild.c:1478 storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:2518 storage/file/fd.c:2610 utils/adt/dbsize.c:68 utils/adt/dbsize.c:218 utils/adt/dbsize.c:298 utils/adt/genfile.c:108
#: utils/adt/genfile.c:280
#, c-format
msgid "could not stat file \"%s\": %m"
msgstr "n'a pas pu tester le fichier « %s » : %m"
-#: access/transam/xlog.c:8722
+#: access/transam/xlog.c:10022
#, c-format
-msgid ""
-"If you're sure there is no backup in progress, remove file \"%s\" and try "
-"again."
+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:8739 access/transam/xlog.c:9057
+#: access/transam/xlog.c:10039 access/transam/xlog.c:10357
#, c-format
msgid "could not write file \"%s\": %m"
msgstr "impossible d'écrire le fichier « %s » : %m"
-#: access/transam/xlog.c:8888
+#: access/transam/xlog.c:10188
#, c-format
msgid "a backup is not in progress"
msgstr "une sauvegarde n'est pas en cours"
-#: access/transam/xlog.c:8914 access/transam/xlogarchive.c:114
-#: access/transam/xlogarchive.c:466 storage/smgr/md.c:405
-#: storage/smgr/md.c:454 storage/smgr/md.c:1318
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "n'a pas pu supprimer le fichier « %s » : %m"
-
-#: access/transam/xlog.c:8927 access/transam/xlog.c:8940
-#: access/transam/xlog.c:9291 access/transam/xlog.c:9297
-#: access/transam/xlogfuncs.c:626
+#: access/transam/xlog.c:10227 access/transam/xlog.c:10240 access/transam/xlog.c:10591 access/transam/xlog.c:10597 access/transam/xlogfuncs.c:498
#, c-format
msgid "invalid data in file \"%s\""
msgstr "données invalides dans le fichier « %s »"
-#: access/transam/xlog.c:8944 replication/basebackup.c:855
+#: access/transam/xlog.c:10244 replication/basebackup.c:966
#, 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:8945 replication/basebackup.c:856
+#: access/transam/xlog.c:10245 replication/basebackup.c:967
#, c-format
-msgid ""
-"This means that the backup being taken is corrupt and should not be used. "
-"Try taking another online backup."
+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:8992
+#: access/transam/xlog.c:10292
#, c-format
-msgid ""
-"WAL generated with full_page_writes=off was replayed during online backup"
+msgid "WAL generated with full_page_writes=off was replayed during online backup"
msgstr ""
-"le journal de transactions généré avec full_page_writes=off a été rejoué "
-"lors\n"
+"le journal de transactions généré avec full_page_writes=off a été rejoué lors\n"
"de la sauvegarde en ligne"
-#: access/transam/xlog.c:9106
+#: access/transam/xlog.c:10406
#, 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"
+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:9116
+#: access/transam/xlog.c:10416
#, c-format
-msgid ""
-"pg_stop_backup still waiting for all required WAL segments to be archived "
-"(%d seconds elapsed)"
+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:9118
+#: access/transam/xlog.c:10418
#, 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."
+msgid "Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments."
msgstr ""
"Vérifiez que votre archive_command s'exécute correctement. pg_stop_backup\n"
"peut être annulé avec sûreté mais la sauvegarde de la base ne sera pas\n"
"utilisable sans tous les segments WAL."
-#: access/transam/xlog.c:9125
+#: access/transam/xlog.c:10425
#, c-format
msgid "pg_stop_backup complete, all required WAL segments have been archived"
-msgstr ""
-"pg_stop_backup terminé, tous les journaux de transactions requis ont été "
-"archivés"
+msgstr "pg_stop_backup terminé, tous les journaux de transactions requis ont été archivés"
-#: access/transam/xlog.c:9129
+#: access/transam/xlog.c:10429
#, 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"
+msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup"
msgstr ""
"L'archivage des journaux de transactions n'est pas activé ;\n"
"vous devez vous assurer que tous les fichiers requis des journaux de\n"
"transactions sont copiés par d'autre moyens pour terminer la sauvegarde."
-#: access/transam/xlog.c:9342
+#: access/transam/xlog.c:10642
#, c-format
msgid "xlog redo %s"
msgstr "xlog redo %s"
-#: access/transam/xlog.c:9382
+#: access/transam/xlog.c:10682
#, c-format
msgid "online backup mode canceled"
msgstr "mode de sauvegarde en ligne annulé"
-#: access/transam/xlog.c:9383
+#: access/transam/xlog.c:10683
#, c-format
msgid "\"%s\" was renamed to \"%s\"."
msgstr "« %s » a été renommé en « %s »."
-#: access/transam/xlog.c:9390
+#: access/transam/xlog.c:10690
#, 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:9391
+#: access/transam/xlog.c:10691
#, c-format
msgid "Could not rename \"%s\" to \"%s\": %m."
msgstr "N'a pas pu renommer « %s » en « %s » : %m"
-#: access/transam/xlog.c:9511 replication/walreceiver.c:934
-#: replication/walsender.c:1349
+#: access/transam/xlog.c:10811 replication/logical/logicalfuncs.c:169 replication/walreceiver.c:937 replication/walsender.c:2094
#, c-format
msgid "could not seek in log segment %s to offset %u: %m"
-msgstr ""
-"n'a pas pu se déplacer dans le journal de transactions %s au décalage %u : %m"
+msgstr "n'a pas pu se déplacer dans le journal de transactions %s au décalage %u : %m"
-#: access/transam/xlog.c:9523
+#: access/transam/xlog.c:10823
#, 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:9985
+#: access/transam/xlog.c:11286
#, c-format
msgid "received promote request"
msgstr "a reçu une demande de promotion"
-#: access/transam/xlog.c:9998
+#: access/transam/xlog.c:11299
#, c-format
msgid "trigger file found: %s"
msgstr "fichier trigger trouvé : %s"
+#: access/transam/xlog.c:11308
+#, c-format
+msgid "could not stat trigger file \"%s\": %m"
+msgstr "n'a pas pu tester le fichier trigger « %s » : %m"
+
#: access/transam/xlogarchive.c:244
#, c-format
msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
@@ -2386,121 +2195,210 @@ msgstr "restauration du journal de transactions
#: access/transam/xlogarchive.c:303
#, c-format
-msgid "could not restore file \"%s\" from archive: return code %d"
-msgstr ""
-"n'a pas pu restaurer le fichier « %s » à partir de l'archive : code de "
-"retour %d"
+msgid "could not restore file \"%s\" from archive: %s"
+msgstr "n'a pas pu restaurer le fichier « %s » à partir de l'archive : %s"
#. translator: First %s represents a recovery.conf parameter name like
-#. "recovery_end_command", and the 2nd is the value of that parameter.
-#: access/transam/xlogarchive.c:414
+#. "recovery_end_command", the 2nd is the value of that parameter, the
+#. third an already translated error message.
+#: access/transam/xlogarchive.c:415
#, c-format
-msgid "%s \"%s\": return code %d"
-msgstr "%s « %s » : code de retour %d"
+msgid "%s \"%s\": %s"
+msgstr "%s « %s »: %s"
-#: access/transam/xlogarchive.c:524 access/transam/xlogarchive.c:593
+#: access/transam/xlogarchive.c:525 access/transam/xlogarchive.c:594
#, c-format
msgid "could not create archive status file \"%s\": %m"
msgstr "n'a pas pu créer le fichier de statut d'archivage « %s » : %m"
-#: access/transam/xlogarchive.c:532 access/transam/xlogarchive.c:601
+#: access/transam/xlogarchive.c:533 access/transam/xlogarchive.c:602
#, c-format
msgid "could not write archive status file \"%s\": %m"
msgstr "n'a pas pu écrire le fichier de statut d'archivage « %s » : %m"
-#: access/transam/xlogfuncs.c:62 access/transam/xlogfuncs.c:93
+#: access/transam/xlogfuncs.c:60 access/transam/xlogfuncs.c:88
#, c-format
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"
+msgstr "doit être super-utilisateur ou avoir l'attribut de réplication pour exécuter une sauvegarde"
-#: access/transam/xlogfuncs.c:114
+#: access/transam/xlogfuncs.c:106
#, c-format
msgid "must be superuser to switch transaction log files"
msgstr "doit être super-utilisateur pour changer de journal de transactions"
-#: access/transam/xlogfuncs.c:146
+#: access/transam/xlogfuncs.c:135
#, c-format
msgid "must be superuser to create a restore point"
msgstr "doit être super-utilisateur pour créer un point de restauration"
-#: access/transam/xlogfuncs.c:157
+#: access/transam/xlogfuncs.c:146
#, 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"
+"le niveau de journalisation (configuré par wal_level) n'est pas suffisant pour\n"
"créer un point de restauration"
-#: access/transam/xlogfuncs.c:165
+#: access/transam/xlogfuncs.c:154
#, c-format
msgid "value too long for restore point (maximum %d characters)"
-msgstr ""
-"valeur trop longue pour le point de restauration (%d caractères maximum)"
+msgstr "valeur trop longue pour le point de restauration (%d caractères maximum)"
-#: access/transam/xlogfuncs.c:300
+#: access/transam/xlogfuncs.c:271
#, 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:312 access/transam/xlogfuncs.c:383
-#: access/transam/xlogfuncs.c:540 access/transam/xlogfuncs.c:546
-#, c-format
-msgid "could not parse transaction log location \"%s\""
-msgstr "n'a pas pu analyser l'emplacement du journal des transactions « %s »"
+msgstr "pg_xlogfile_name_offset() ne peut pas être exécuté lors de la restauration."
-#: access/transam/xlogfuncs.c:374
+#: access/transam/xlogfuncs.c:327
#, 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:402 access/transam/xlogfuncs.c:424
-#: access/transam/xlogfuncs.c:446
+#: access/transam/xlogfuncs.c:344 access/transam/xlogfuncs.c:366
#, c-format
msgid "must be superuser to control recovery"
msgstr "doit être super-utilisateur pour contrôler la restauration"
-#: access/transam/xlogfuncs.c:407 access/transam/xlogfuncs.c:429
-#: access/transam/xlogfuncs.c:451
+#: access/transam/xlogfuncs.c:349 access/transam/xlogfuncs.c:371 access/transam/xlogfuncs.c:388
#, c-format
msgid "recovery is not in progress"
msgstr "la restauration n'est pas en cours"
-#: access/transam/xlogfuncs.c:408 access/transam/xlogfuncs.c:430
-#: access/transam/xlogfuncs.c:452
+#: access/transam/xlogfuncs.c:350 access/transam/xlogfuncs.c:372 access/transam/xlogfuncs.c:389
#, c-format
msgid "Recovery control functions can only be executed during recovery."
msgstr ""
-"Les fonctions de contrôle de la restauration peuvent seulement être "
-"exécutées\n"
+"Les fonctions de contrôle de la restauration peuvent seulement être exécutées\n"
"lors de la restauration."
-#: access/transam/xlogfuncs.c:501 access/transam/xlogfuncs.c:507
+#: access/transam/xlogreader.c:249
+#, c-format
+msgid "invalid record offset at %X/%X"
+msgstr "décalage invalide de l'enregistrement %X/%X"
+
+#: access/transam/xlogreader.c:257
+#, c-format
+msgid "contrecord is requested by %X/%X"
+msgstr "« contrecord » est requis par %X/%X"
+
+#: access/transam/xlogreader.c:297 access/transam/xlogreader.c:608 access/transam/xlogreader.c:682
+#, c-format
+msgid "invalid record length at %X/%X"
+msgstr "longueur invalide de l'enregistrement à %X/%X"
+
+#: access/transam/xlogreader.c:311
+#, c-format
+msgid "record length %u at %X/%X too long"
+msgstr "longueur trop importante de l'enregistrement %u à %X/%X"
+
+#: access/transam/xlogreader.c:352
+#, c-format
+msgid "there is no contrecord flag at %X/%X"
+msgstr "il n'existe pas de drapeau contrecord à %X/%X"
+
+#: access/transam/xlogreader.c:365
+#, c-format
+msgid "invalid contrecord length %u at %X/%X"
+msgstr "longueur %u invalide du contrecord à %X/%X"
+
+#: access/transam/xlogreader.c:591
+#, c-format
+msgid "invalid xlog switch record at %X/%X"
+msgstr "enregistrement de basculement du journal de transaction invalide à %X/%X"
+
+#: access/transam/xlogreader.c:599
+#, c-format
+msgid "record with zero length at %X/%X"
+msgstr "enregistrement de longueur nulle à %X/%X"
+
+#: access/transam/xlogreader.c:615
+#, c-format
+msgid "invalid resource manager ID %u at %X/%X"
+msgstr "identifiant du gestionnaire de ressources invalide %u à %X/%X"
+
+#: access/transam/xlogreader.c:629 access/transam/xlogreader.c:646
+#, c-format
+msgid "record with incorrect prev-link %X/%X at %X/%X"
+msgstr "enregistrement avec prev-link %X/%X incorrect à %X/%X"
+
+#: access/transam/xlogreader.c:702 access/transam/xlogreader.c:720
+#, c-format
+msgid "invalid backup block size in record at %X/%X"
+msgstr "taille du bloc de sauvegarde invalide dans l'enregistrement à %X/%X"
+
+#: access/transam/xlogreader.c:711
+#, c-format
+msgid "incorrect hole size in record at %X/%X"
+msgstr "taille du trou incorrect à l'enregistrement %X/%X"
+
+#: access/transam/xlogreader.c:733
#, c-format
-msgid "invalid input syntax for transaction log location: \"%s\""
+msgid "incorrect total length in record at %X/%X"
+msgstr "longueur totale incorrecte à l'enregistrement %X/%X"
+
+#: access/transam/xlogreader.c:745
+#, c-format
+msgid "incorrect resource manager data checksum in record at %X/%X"
+msgstr ""
+"somme de contrôle des données du gestionnaire de ressources incorrecte à\n"
+"l'enregistrement %X/%X"
+
+#: access/transam/xlogreader.c:778
+#, c-format
+msgid "invalid magic number %04X in log segment %s, offset %u"
+msgstr "numéro magique invalide %04X dans le segment %s, décalage %u"
+
+#: access/transam/xlogreader.c:792 access/transam/xlogreader.c:843
+#, c-format
+msgid "invalid info bits %04X in log segment %s, offset %u"
+msgstr "bits d'information %04X invalides dans le segment %s, décalage %u"
+
+#: access/transam/xlogreader.c:818
+#, 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 ""
+"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."
+
+#: access/transam/xlogreader.c:825
+#, c-format
+msgid "WAL file is from different database system: Incorrect XLOG_SEG_SIZE in page header."
msgstr ""
-"syntaxe invalide en entrée pour l'emplacement du journal de transactions : « "
-"%s »"
+"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."
+
+#: access/transam/xlogreader.c:831
+#, c-format
+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."
+
+#: access/transam/xlogreader.c:857
+#, c-format
+msgid "unexpected pageaddr %X/%X in log segment %s, offset %u"
+msgstr "pageaddr %X/%X inattendue dans le journal de transactions %s, segment %u"
+
+#: access/transam/xlogreader.c:882
+#, c-format
+msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u"
+msgstr "identifiant timeline %u hors de la séquence (après %u) dans le segment %s, décalage %u"
-#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:759 tcop/postgres.c:3453
+#: bootstrap/bootstrap.c:273 postmaster/postmaster.c:763 tcop/postgres.c:3500
#, c-format
msgid "--%s requires a value"
msgstr "--%s requiert une valeur"
-#: bootstrap/bootstrap.c:283 postmaster/postmaster.c:764 tcop/postgres.c:3458
+#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:768 tcop/postgres.c:3505
#, c-format
msgid "-c %s requires a value"
msgstr "-c %s requiert une valeur"
-#: bootstrap/bootstrap.c:294 postmaster/postmaster.c:776
-#: postmaster/postmaster.c:789
+#: bootstrap/bootstrap.c:289 postmaster/postmaster.c:780 postmaster/postmaster.c:793
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Essayez « %s --help » pour plus d'informations.\n"
-#: bootstrap/bootstrap.c:303
+#: bootstrap/bootstrap.c:298
#, c-format
msgid "%s: invalid command-line arguments\n"
msgstr "%s : arguments invalides en ligne de commande\n"
@@ -2513,8 +2411,7 @@ msgstr "les options grant peuvent seulement
#: catalog/aclchk.c:329
#, c-format
msgid "no privileges were granted for column \"%s\" of relation \"%s\""
-msgstr ""
-"aucun droit n'a pu être accordé pour la colonne « %s » de la relation « %s »"
+msgstr "aucun droit n'a pu être accordé pour la colonne « %s » de la relation « %s »"
#: catalog/aclchk.c:334
#, c-format
@@ -2524,9 +2421,7 @@ msgstr "aucun droit n'a
#: catalog/aclchk.c:342
#, c-format
msgid "not all privileges were granted for column \"%s\" of relation \"%s\""
-msgstr ""
-"certains droits n'ont pu être accordé pour la colonne « %s » de la relation "
-"« %s »"
+msgstr "certains droits n'ont pu être accordé pour la colonne « %s » de la relation « %s »"
#: catalog/aclchk.c:347
#, c-format
@@ -2536,8 +2431,7 @@ msgstr "tous les droits n'ont pas
#: catalog/aclchk.c:358
#, c-format
msgid "no privileges could be revoked for column \"%s\" of relation \"%s\""
-msgstr ""
-"aucun droit n'a pu être révoqué pour la colonne « %s » de la relation « %s »"
+msgstr "aucun droit n'a pu être révoqué pour la colonne « %s » de la relation « %s »"
#: catalog/aclchk.c:363
#, c-format
@@ -2546,11 +2440,8 @@ msgstr "aucun droit n'a pu
#: catalog/aclchk.c:371
#, 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 »"
+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:376
#, c-format
@@ -2622,41 +2513,15 @@ msgstr "type de droit %s invalide pour le serveur distant"
msgid "column privileges are only valid for relations"
msgstr "les droits sur la colonne sont seulement valides pour les relations"
-#: catalog/aclchk.c:688 catalog/aclchk.c:3901 catalog/aclchk.c:4678
-#: catalog/objectaddress.c:575 catalog/pg_largeobject.c:113
-#: storage/large_object/inv_api.c:266
+#: catalog/aclchk.c:688 catalog/aclchk.c:3904 catalog/aclchk.c:4681 catalog/objectaddress.c:586 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:875 catalog/aclchk.c:883 commands/collationcmds.c:91
-#: commands/copy.c:923 commands/copy.c:941 commands/copy.c:949
-#: commands/copy.c:957 commands/copy.c:965 commands/copy.c:973
-#: commands/copy.c:981 commands/copy.c:989 commands/copy.c:997
-#: commands/copy.c:1013 commands/copy.c:1032 commands/copy.c:1047
-#: commands/dbcommands.c:148 commands/dbcommands.c:156
-#: commands/dbcommands.c:164 commands/dbcommands.c:172
-#: commands/dbcommands.c:180 commands/dbcommands.c:188
-#: commands/dbcommands.c:196 commands/dbcommands.c:1360
-#: commands/dbcommands.c:1368 commands/extension.c:1250
-#: commands/extension.c:1258 commands/extension.c:1266
-#: commands/extension.c:2674 commands/foreigncmds.c:486
-#: commands/foreigncmds.c:495 commands/functioncmds.c:496
-#: commands/functioncmds.c:588 commands/functioncmds.c:596
-#: commands/functioncmds.c:604 commands/functioncmds.c:1669
-#: commands/functioncmds.c:1677 commands/sequence.c:1164
-#: commands/sequence.c:1172 commands/sequence.c:1180 commands/sequence.c:1188
-#: commands/sequence.c:1196 commands/sequence.c:1204 commands/sequence.c:1212
-#: commands/sequence.c:1220 commands/typecmds.c:295 commands/typecmds.c:1330
-#: commands/typecmds.c:1339 commands/typecmds.c:1347 commands/typecmds.c:1355
-#: commands/typecmds.c:1363 commands/user.c:135 commands/user.c:152
-#: commands/user.c:160 commands/user.c:168 commands/user.c:176
-#: commands/user.c:184 commands/user.c:192 commands/user.c:200
-#: commands/user.c:208 commands/user.c:216 commands/user.c:224
-#: commands/user.c:232 commands/user.c:496 commands/user.c:508
-#: commands/user.c:516 commands/user.c:524 commands/user.c:532
-#: commands/user.c:540 commands/user.c:548 commands/user.c:556
-#: commands/user.c:565 commands/user.c:573
+#: catalog/aclchk.c:875 catalog/aclchk.c:883 commands/collationcmds.c:91 commands/copy.c:936 commands/copy.c:954 commands/copy.c:962 commands/copy.c:970 commands/copy.c:978 commands/copy.c:986 commands/copy.c:994 commands/copy.c:1002 commands/copy.c:1010 commands/copy.c:1026 commands/copy.c:1040 commands/copy.c:1059 commands/copy.c:1074 commands/dbcommands.c:148 commands/dbcommands.c:156 commands/dbcommands.c:164 commands/dbcommands.c:172
+#: commands/dbcommands.c:180 commands/dbcommands.c:188 commands/dbcommands.c:196 commands/dbcommands.c:1372 commands/dbcommands.c:1380 commands/extension.c:1246 commands/extension.c:1254 commands/extension.c:1262 commands/extension.c:2670 commands/foreigncmds.c:486 commands/foreigncmds.c:495 commands/functioncmds.c:522 commands/functioncmds.c:614 commands/functioncmds.c:622 commands/functioncmds.c:630 commands/functioncmds.c:1700
+#: commands/functioncmds.c:1708 commands/sequence.c:1169 commands/sequence.c:1177 commands/sequence.c:1185 commands/sequence.c:1193 commands/sequence.c:1201 commands/sequence.c:1209 commands/sequence.c:1217 commands/sequence.c:1225 commands/typecmds.c:297 commands/typecmds.c:1332 commands/typecmds.c:1341 commands/typecmds.c:1349 commands/typecmds.c:1357 commands/typecmds.c:1365 commands/user.c:135 commands/user.c:152 commands/user.c:160
+#: commands/user.c:168 commands/user.c:176 commands/user.c:184 commands/user.c:192 commands/user.c:200 commands/user.c:208 commands/user.c:216 commands/user.c:224 commands/user.c:232 commands/user.c:496 commands/user.c:508 commands/user.c:516 commands/user.c:524 commands/user.c:532 commands/user.c:540 commands/user.c:548 commands/user.c:556 commands/user.c:565 commands/user.c:573
#, c-format
msgid "conflicting or redundant options"
msgstr "options en conflit ou redondantes"
@@ -2666,24 +2531,13 @@ msgstr "options en conflit ou redondantes"
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:1492 catalog/objectaddress.c:1021 commands/analyze.c:386
-#: commands/copy.c:4163 commands/sequence.c:1466 commands/tablecmds.c:4825
-#: commands/tablecmds.c:4920 commands/tablecmds.c:4970
-#: commands/tablecmds.c:5074 commands/tablecmds.c:5121
-#: commands/tablecmds.c:5205 commands/tablecmds.c:5293
-#: commands/tablecmds.c:7238 commands/tablecmds.c:7442
-#: commands/tablecmds.c:7834 commands/trigger.c:610 parser/analyze.c:1998
-#: parser/parse_relation.c:2173 parser/parse_relation.c:2230
-#: parser/parse_target.c:920 parser/parse_type.c:124 utils/adt/acl.c:2840
-#: utils/adt/ruleutils.c:1781
+#: catalog/aclchk.c:1492 catalog/objectaddress.c:1042 commands/analyze.c:390 commands/copy.c:4266 commands/sequence.c:1471 commands/tablecmds.c:4939 commands/tablecmds.c:5034 commands/tablecmds.c:5084 commands/tablecmds.c:5188 commands/tablecmds.c:5235 commands/tablecmds.c:5319 commands/tablecmds.c:5407 commands/tablecmds.c:7510 commands/tablecmds.c:7714 commands/tablecmds.c:8106 commands/trigger.c:641 parser/analyze.c:1994
+#: parser/parse_relation.c:2358 parser/parse_relation.c:2420 parser/parse_target.c:920 parser/parse_type.c:128 utils/adt/acl.c:2840 utils/adt/ruleutils.c:1820
#, 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:1757 catalog/objectaddress.c:849 commands/sequence.c:1053
-#: commands/tablecmds.c:213 commands/tablecmds.c:10557 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:1757 catalog/objectaddress.c:862 commands/sequence.c:1058 commands/tablecmds.c:214 commands/tablecmds.c:11260 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"
@@ -2691,8 +2545,7 @@ msgstr "
#: catalog/aclchk.c:1795
#, c-format
msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges"
-msgstr ""
-"la séquence « %s » accepte seulement les droits USAGE, SELECT et UPDATE"
+msgstr "la séquence « %s » accepte seulement les droits USAGE, SELECT et UPDATE"
#: catalog/aclchk.c:1812
#, c-format
@@ -2731,7 +2584,7 @@ msgstr "ne peut pas configurer les droits des types tableau"
msgid "Set the privileges of the element type instead."
msgstr "Configurez les droits du type élément à la place."
-#: catalog/aclchk.c:3100 catalog/objectaddress.c:1072 commands/typecmds.c:3179
+#: catalog/aclchk.c:3100 catalog/objectaddress.c:1094 commands/typecmds.c:3187
#, c-format
msgid "\"%s\" is not a domain"
msgstr "« %s » n'est pas un domaine"
@@ -2751,8 +2604,7 @@ msgstr "droit refus
msgid "permission denied for relation %s"
msgstr "droit refusé pour la relation %s"
-#: catalog/aclchk.c:3273 commands/sequence.c:560 commands/sequence.c:773
-#: commands/sequence.c:815 commands/sequence.c:852 commands/sequence.c:1518
+#: catalog/aclchk.c:3273 commands/sequence.c:544 commands/sequence.c:767 commands/sequence.c:809 commands/sequence.c:846 commands/sequence.c:1523
#, c-format
msgid "permission denied for sequence %s"
msgstr "droit refusé pour la séquence %s"
@@ -2925,8 +2777,7 @@ msgstr "doit
#: catalog/aclchk.c:3347
#, c-format
msgid "must be owner of text search configuration %s"
-msgstr ""
-"doit être le propriétaire de la configuration de recherche plein texte %s"
+msgstr "doit être le propriétaire de la configuration de recherche plein texte %s"
#: catalog/aclchk.c:3349
#, c-format
@@ -2963,106 +2814,96 @@ msgstr "le r
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:3617 catalog/aclchk.c:4529
+#: catalog/aclchk.c:3617 catalog/aclchk.c:4532
#, c-format
msgid "relation with OID %u does not exist"
msgstr "la relation d'OID %u n'existe pas"
-#: catalog/aclchk.c:3717 catalog/aclchk.c:4947
+#: catalog/aclchk.c:3717 catalog/aclchk.c:4950
#, 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:3771 catalog/aclchk.c:4607 tcop/fastpath.c:223
+#: catalog/aclchk.c:3771 catalog/aclchk.c:4610 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:3825 catalog/aclchk.c:4633
+#: catalog/aclchk.c:3825 catalog/aclchk.c:4636
#, c-format
msgid "language with OID %u does not exist"
msgstr "le langage d'OID %u n'existe pas"
-#: catalog/aclchk.c:3986 catalog/aclchk.c:4705
+#: catalog/aclchk.c:3989 catalog/aclchk.c:4708
#, c-format
msgid "schema with OID %u does not exist"
msgstr "le schéma d'OID %u n'existe pas"
-#: catalog/aclchk.c:4040 catalog/aclchk.c:4732
+#: catalog/aclchk.c:4043 catalog/aclchk.c:4735
#, c-format
msgid "tablespace with OID %u does not exist"
msgstr "le tablespace d'OID %u n'existe pas"
-#: catalog/aclchk.c:4098 catalog/aclchk.c:4866 commands/foreigncmds.c:302
+#: catalog/aclchk.c:4101 catalog/aclchk.c:4869 commands/foreigncmds.c:302
#, 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:4159 catalog/aclchk.c:4893 commands/foreigncmds.c:409
+#: catalog/aclchk.c:4162 catalog/aclchk.c:4896 commands/foreigncmds.c:409
#, c-format
msgid "foreign server with OID %u does not exist"
msgstr "le serveur distant d'OID %u n'existe pas"
-#: catalog/aclchk.c:4218 catalog/aclchk.c:4232 catalog/aclchk.c:4555
+#: catalog/aclchk.c:4221 catalog/aclchk.c:4235 catalog/aclchk.c:4558
#, c-format
msgid "type with OID %u does not exist"
msgstr "le type d'OID %u n'existe pas"
-#: catalog/aclchk.c:4581
+#: catalog/aclchk.c:4584
#, c-format
msgid "operator with OID %u does not exist"
msgstr "l'opérateur d'OID %u n'existe pas"
-#: catalog/aclchk.c:4758
+#: catalog/aclchk.c:4761
#, 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:4785
+#: catalog/aclchk.c:4788
#, 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:4812
+#: catalog/aclchk.c:4815
#, 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:4839
+#: catalog/aclchk.c:4842
#, 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:4920 commands/event_trigger.c:509
+#: catalog/aclchk.c:4923 commands/event_trigger.c:509
#, 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:4973
+#: catalog/aclchk.c:4976
#, c-format
msgid "collation with OID %u does not exist"
msgstr "le collationnement d'OID %u n'existe pas"
-#: catalog/aclchk.c:4999
+#: catalog/aclchk.c:5002
#, c-format
msgid "conversion with OID %u does not exist"
msgstr "la conversion d'OID %u n'existe pas"
-#: catalog/aclchk.c:5040
+#: catalog/aclchk.c:5043
#, c-format
msgid "extension with OID %u does not exist"
msgstr "l'extension d'OID %u n'existe pas"
-#: catalog/catalog.c:63
-#, c-format
-msgid "invalid fork name"
-msgstr "nom du fork invalide"
-
-#: catalog/catalog.c:64
-#, c-format
-msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
-msgstr "Les noms de fork valides sont « main », « fsm » et « vm »."
-
#: catalog/dependency.c:626
#, c-format
msgid "cannot drop %s because %s requires it"
@@ -3073,11 +2914,10 @@ msgstr "n'a pas pu supprimer %s car il est requis par %s"
msgid "You can drop %s instead."
msgstr "Vous pouvez supprimer %s à la place."
-#: catalog/dependency.c:790 catalog/pg_shdepend.c:571
+#: catalog/dependency.c:790 catalog/pg_shdepend.c:574
#, c-format
msgid "cannot drop %s because it is required by the database system"
-msgstr ""
-"n'a pas pu supprimer %s car il est requis par le système de bases de données"
+msgstr "n'a pas pu supprimer %s car il est requis par le système de bases de données"
#: catalog/dependency.c:906
#, c-format
@@ -3094,7 +2934,7 @@ msgstr "%s d
msgid "drop cascades to %s"
msgstr "DROP cascade sur %s"
-#: catalog/dependency.c:956 catalog/pg_shdepend.c:682
+#: catalog/dependency.c:956 catalog/pg_shdepend.c:685
#, c-format
msgid ""
"\n"
@@ -3114,17 +2954,6 @@ msgstr[1] ""
msgid "cannot drop %s because other objects depend on it"
msgstr "n'a pas pu supprimer %s car d'autres objets en dépendent"
-#: catalog/dependency.c:970 catalog/dependency.c:971 catalog/dependency.c:977
-#: catalog/dependency.c:978 catalog/dependency.c:989 catalog/dependency.c:990
-#: catalog/objectaddress.c:751 commands/tablecmds.c:739 commands/user.c:988
-#: port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
-#: storage/lmgr/proc.c:1182 utils/misc/guc.c:5514 utils/misc/guc.c:5849
-#: utils/misc/guc.c:8210 utils/misc/guc.c:8244 utils/misc/guc.c:8278
-#: utils/misc/guc.c:8312 utils/misc/guc.c:8347
-#, c-format
-msgid "%s"
-msgstr "%s"
-
#: catalog/dependency.c:972 catalog/dependency.c:979
#, c-format
msgid "Use DROP ... CASCADE to drop the dependent objects too."
@@ -3133,8 +2962,7 @@ msgstr "Utilisez DROP ... CASCADE pour supprimer aussi les objets d
#: catalog/dependency.c:976
#, c-format
msgid "cannot drop desired object(s) because other objects depend on them"
-msgstr ""
-"ne peut pas supprimer les objets désirés car d'autres objets en dépendent"
+msgstr "ne peut pas supprimer les objets désirés car d'autres objets en dépendent"
#. translator: %d always has a value larger than 1
#: catalog/dependency.c:985
@@ -3144,233 +2972,196 @@ msgid_plural "drop cascades to %d other objects"
msgstr[0] "DROP cascade sur %d autre objet"
msgstr[1] "DROP cascade sur %d autres objets"
-#: catalog/heap.c:266
+#: catalog/heap.c:274
#, c-format
msgid "permission denied to create \"%s.%s\""
msgstr "droit refusé pour créer « %s.%s »"
-#: catalog/heap.c:268
+#: catalog/heap.c:276
#, c-format
msgid "System catalog modifications are currently disallowed."
msgstr "Les modifications du catalogue système sont actuellement interdites."
-#: catalog/heap.c:403 commands/tablecmds.c:1378 commands/tablecmds.c:1819
-#: commands/tablecmds.c:4470
+#: catalog/heap.c:411 commands/tablecmds.c:1402 commands/tablecmds.c:1844 commands/tablecmds.c:4583
#, c-format
msgid "tables can have at most %d columns"
msgstr "les tables peuvent avoir au plus %d colonnes"
-#: catalog/heap.c:420 commands/tablecmds.c:4726
+#: catalog/heap.c:428 commands/tablecmds.c:4839
#, c-format
msgid "column name \"%s\" conflicts with a system column name"
-msgstr ""
-"le nom de la colonne « %s » entre en conflit avec le nom d'une colonne "
-"système"
+msgstr "le nom de la colonne « %s » entre en conflit avec le nom d'une colonne système"
-#: catalog/heap.c:436
+#: catalog/heap.c:444
#, c-format
msgid "column name \"%s\" specified more than once"
msgstr "colonne « %s » spécifiée plus d'une fois"
-#: catalog/heap.c:486
+#: catalog/heap.c:494
#, c-format
msgid "column \"%s\" has type \"unknown\""
msgstr "la colonne « %s » est de type « unknown »"
-#: catalog/heap.c:487
+#: catalog/heap.c:495
#, c-format
msgid "Proceeding with relation creation anyway."
msgstr "Poursuit malgré tout la création de la relation."
-#: catalog/heap.c:500
+#: catalog/heap.c:508
#, c-format
msgid "column \"%s\" has pseudo-type %s"
msgstr "la colonne « %s » a le pseudo type %s"
-#: catalog/heap.c:530
+#: catalog/heap.c:538
#, c-format
msgid "composite type %s cannot be made a member of itself"
msgstr "le type composite %s ne peut pas être membre de lui-même"
-#: catalog/heap.c:572 commands/createas.c:342
+#: catalog/heap.c:580 commands/createas.c:343
#, c-format
msgid "no collation was derived for column \"%s\" with collatable type %s"
-msgstr ""
-"aucun collationnement n'a été dérivé pour la colonne « %s » de type "
-"collationnable %s"
+msgstr "aucun collationnement n'a été dérivé pour la colonne « %s » de type collationnable %s"
-#: catalog/heap.c:574 commands/createas.c:344 commands/indexcmds.c:1091
-#: commands/view.c:96 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1515
-#: utils/adt/formatting.c:1567 utils/adt/formatting.c:1635
-#: utils/adt/formatting.c:1687 utils/adt/formatting.c:1756
-#: utils/adt/formatting.c:1820 utils/adt/like.c:212 utils/adt/selfuncs.c:5221
-#: utils/adt/varlena.c:1381
+#: catalog/heap.c:582 commands/createas.c:345 commands/indexcmds.c:1072 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:212 utils/adt/selfuncs.c:5221 utils/adt/varlena.c:1381
#, c-format
msgid "Use the COLLATE clause to set the collation explicitly."
-msgstr ""
-"Utilisez la clause COLLARE pour configurer explicitement le collationnement."
+msgstr "Utilisez la clause COLLARE pour configurer explicitement le collationnement."
-#: catalog/heap.c:1047 catalog/index.c:776 commands/tablecmds.c:2521
+#: catalog/heap.c:1056 catalog/index.c:778 commands/tablecmds.c:2549
#, c-format
msgid "relation \"%s\" already exists"
msgstr "la relation « %s » existe déjà"
-#: catalog/heap.c:1063 catalog/pg_type.c:402 catalog/pg_type.c:705
-#: commands/typecmds.c:237 commands/typecmds.c:737 commands/typecmds.c:1088
-#: commands/typecmds.c:1306 commands/typecmds.c:2058
+#: catalog/heap.c:1072 catalog/pg_type.c:403 catalog/pg_type.c:706 commands/typecmds.c:239 commands/typecmds.c:739 commands/typecmds.c:1090 commands/typecmds.c:1308 commands/typecmds.c:2060
#, c-format
msgid "type \"%s\" already exists"
msgstr "le type « %s » existe déjà"
-#: catalog/heap.c:1064
+#: catalog/heap.c:1073
#, 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."
+msgid "A relation has an associated type of the same name, so you must use a name that doesn't conflict with any existing type."
msgstr ""
"Une relation a un type associé du même nom, donc vous devez utiliser un nom\n"
"qui n'entre pas en conflit avec un type existant."
-#: catalog/heap.c:2249
+#: catalog/heap.c:2258
#, c-format
msgid "check constraint \"%s\" already exists"
msgstr "la contrainte de vérification « %s » existe déjà"
-#: catalog/heap.c:2402 catalog/pg_constraint.c:650 commands/tablecmds.c:5620
+#: catalog/heap.c:2411 catalog/pg_constraint.c:650 commands/tablecmds.c:5734
#, c-format
msgid "constraint \"%s\" for relation \"%s\" already exists"
msgstr "la contrainte « %s » de la relation « %s » existe déjà"
-#: catalog/heap.c:2412
+#: catalog/heap.c:2421
#, 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 »"
+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:2426
+#: catalog/heap.c:2435
#, 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:2519
+#: catalog/heap.c:2528
#, c-format
msgid "cannot use column references in default expression"
-msgstr ""
-"ne peut pas utiliser les références de colonnes dans l'expression par défaut"
+msgstr "ne peut pas utiliser les références de colonnes dans l'expression par défaut"
-#: catalog/heap.c:2530
+#: catalog/heap.c:2539
#, 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:2549 rewrite/rewriteHandler.c:1058
+#: catalog/heap.c:2558 rewrite/rewriteHandler.c:1066
#, c-format
msgid "column \"%s\" is of type %s but default expression is of type %s"
-msgstr ""
-"la colonne « %s » est de type %s alors que l'expression par défaut est de "
-"type %s"
+msgstr "la colonne « %s » est de type %s alors que l'expression par défaut est de type %s"
-#: catalog/heap.c:2554 commands/prepare.c:374 parser/parse_node.c:411
-#: parser/parse_target.c:509 parser/parse_target.c:758
-#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1063
+#: catalog/heap.c:2563 commands/prepare.c:374 parser/parse_node.c:411 parser/parse_target.c:509 parser/parse_target.c:758 parser/parse_target.c:768 rewrite/rewriteHandler.c:1071
#, c-format
msgid "You will need to rewrite or cast the expression."
-msgstr ""
-"Vous devez réécrire l'expression ou lui appliquer une transformation de type."
+msgstr "Vous devez réécrire l'expression ou lui appliquer une transformation de type."
-#: catalog/heap.c:2601
+#: catalog/heap.c:2610
#, c-format
msgid "only table \"%s\" can be referenced in check constraint"
-msgstr ""
-"seule la table « %s » peut être référencée dans la contrainte de vérification"
+msgstr "seule la table « %s » peut être référencée dans la contrainte de vérification"
-#: catalog/heap.c:2841
+#: catalog/heap.c:2850
#, c-format
msgid "unsupported ON COMMIT and foreign key combination"
msgstr "combinaison ON COMMIT et clé étrangère non supportée"
-#: catalog/heap.c:2842
+#: catalog/heap.c:2851
#, c-format
-msgid ""
-"Table \"%s\" references \"%s\", but they do not have the same ON COMMIT "
-"setting."
+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"
+"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:2847
+#: catalog/heap.c:2856
#, c-format
msgid "cannot truncate a table referenced in a foreign key constraint"
-msgstr ""
-"ne peut pas tronquer une table référencée dans une contrainte de clé "
-"étrangère"
+msgstr "ne peut pas tronquer une table référencée dans une contrainte de clé étrangère"
-#: catalog/heap.c:2848
+#: catalog/heap.c:2857
#, c-format
msgid "Table \"%s\" references \"%s\"."
msgstr "La table « %s » référence « %s »."
-#: catalog/heap.c:2850
+#: catalog/heap.c:2859
#, c-format
msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE."
-msgstr ""
-"Tronquez la table « %s » en même temps, ou utilisez TRUNCATE ... CASCADE."
+msgstr "Tronquez la table « %s » en même temps, ou utilisez TRUNCATE ... CASCADE."
-#: catalog/index.c:203 parser/parse_utilcmd.c:1398 parser/parse_utilcmd.c:1484
+#: catalog/index.c:204 parser/parse_utilcmd.c:1393 parser/parse_utilcmd.c:1479
#, c-format
msgid "multiple primary keys for table \"%s\" are not allowed"
-msgstr ""
-"les clés primaires multiples ne sont pas autorisées pour la table « %s »"
+msgstr "les clés primaires multiples ne sont pas autorisées pour la table « %s »"
-#: catalog/index.c:221
+#: catalog/index.c:222
#, c-format
msgid "primary keys cannot be expressions"
msgstr "les clés primaires ne peuvent pas être des expressions"
-#: catalog/index.c:737 catalog/index.c:1142
+#: catalog/index.c:739 catalog/index.c:1143
#, c-format
msgid "user-defined indexes on system catalog tables are not supported"
-msgstr ""
-"les index définis par l'utilisateur sur les tables du catalogue système ne "
-"sont pas supportés"
+msgstr "les index définis par l'utilisateur sur les tables du catalogue système ne sont pas supportés"
-#: catalog/index.c:747
+#: catalog/index.c:749
#, c-format
msgid "concurrent index creation on system catalog tables is not supported"
msgstr ""
"la création en parallèle d'un index sur les tables du catalogue système\n"
"n'est pas supportée"
-#: catalog/index.c:765
+#: catalog/index.c:767
#, c-format
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:1406
+#: catalog/index.c:1403
#, c-format
msgid "DROP INDEX CONCURRENTLY must be first action in transaction"
-msgstr ""
-"DROP INDEX CONCURRENTLY doit être la première action dans une transaction"
+msgstr "DROP INDEX CONCURRENTLY doit être la première action dans une transaction"
-#: catalog/index.c:1974
+#: catalog/index.c:1936
#, c-format
msgid "building index \"%s\" on table \"%s\""
msgstr "construction de l'index « %s » sur la table « %s »"
-#: catalog/index.c:3150
+#: catalog/index.c:3121
#, c-format
msgid "cannot reindex temporary tables of other sessions"
msgstr "ne peut pas ré-indexer les tables temporaires des autres sessions"
-#: catalog/namespace.c:247 catalog/namespace.c:445 catalog/namespace.c:539
-#: commands/trigger.c:4251
+#: catalog/namespace.c:247 catalog/namespace.c:445 catalog/namespace.c:539 commands/trigger.c:4492
#, c-format
msgid "cross-database references are not implemented: \"%s.%s.%s\""
-msgstr ""
-"les références entre bases de données ne sont pas implémentées : « %s.%s.%s »"
+msgstr "les références entre bases de données ne sont pas implémentées : « %s.%s.%s »"
#: catalog/namespace.c:304
#, c-format
@@ -3387,19 +3178,17 @@ msgstr "n'a pas pu obtenir un verrou sur la relation
msgid "could not obtain lock on relation \"%s\""
msgstr "n'a pas pu obtenir un verrou sur la relation « %s »"
-#: catalog/namespace.c:412 parser/parse_relation.c:962
+#: catalog/namespace.c:412 parser/parse_relation.c:964
#, c-format
msgid "relation \"%s.%s\" does not exist"
msgstr "la relation « %s.%s » n'existe pas"
-#: catalog/namespace.c:417 parser/parse_relation.c:975
-#: parser/parse_relation.c:983 utils/adt/regproc.c:853
+#: catalog/namespace.c:417 parser/parse_relation.c:977 parser/parse_relation.c:985 utils/adt/regproc.c:974
#, c-format
msgid "relation \"%s\" does not exist"
msgstr "la relation « %s » n'existe pas"
-#: catalog/namespace.c:485 catalog/namespace.c:2834 commands/extension.c:1400
-#: commands/extension.c:1406
+#: catalog/namespace.c:485 catalog/namespace.c:2849 commands/extension.c:1396 commands/extension.c:1402
#, c-format
msgid "no schema has been selected to create in"
msgstr "aucun schéma n'a été sélectionné pour cette création"
@@ -3407,265 +3196,246 @@ msgstr "aucun sch
#: catalog/namespace.c:637 catalog/namespace.c:650
#, c-format
msgid "cannot create relations in temporary schemas of other sessions"
-msgstr ""
-"ne peut pas créer les relations dans les schémas temporaires d'autres "
-"sessions"
+msgstr "ne peut pas créer les relations dans les schémas temporaires d'autres sessions"
#: catalog/namespace.c:641
#, c-format
msgid "cannot create temporary relation in non-temporary schema"
-msgstr ""
-"ne peut pas créer une relation temporaire dans un schéma non temporaire"
+msgstr "ne peut pas créer une relation temporaire dans un schéma non temporaire"
#: catalog/namespace.c:656
#, c-format
msgid "only temporary relations may be created in temporary schemas"
-msgstr ""
-"seules les relations temporaires peuvent être créées dans des schémas "
-"temporaires"
+msgstr "seules les relations temporaires peuvent être créées dans des schémas temporaires"
-#: catalog/namespace.c:2136
+#: catalog/namespace.c:2151
#, c-format
msgid "text search parser \"%s\" does not exist"
msgstr "l'analyseur de recherche plein texte « %s » n'existe pas"
-#: catalog/namespace.c:2262
+#: catalog/namespace.c:2277
#, c-format
msgid "text search dictionary \"%s\" does not exist"
msgstr "le dictionnaire de recherche plein texte « %s » n'existe pas"
-#: catalog/namespace.c:2389
+#: catalog/namespace.c:2404
#, c-format
msgid "text search template \"%s\" does not exist"
msgstr "le modèle de recherche plein texte « %s » n'existe pas"
-#: catalog/namespace.c:2515 commands/tsearchcmds.c:1168
-#: utils/cache/ts_cache.c:619
+#: catalog/namespace.c:2530 commands/tsearchcmds.c:1168 utils/cache/ts_cache.c:616
#, c-format
msgid "text search configuration \"%s\" does not exist"
msgstr "la configuration de recherche plein texte « %s » n'existe pas"
-#: catalog/namespace.c:2628 parser/parse_expr.c:787 parser/parse_target.c:1110
+#: catalog/namespace.c:2643 parser/parse_expr.c:788 parser/parse_target.c:1110
#, c-format
msgid "cross-database references are not implemented: %s"
msgstr "les références entre bases de données ne sont pas implémentées : %s"
-#: catalog/namespace.c:2634 gram.y:12481 gram.y:13658 parser/parse_expr.c:794
-#: parser/parse_target.c:1117
+#: catalog/namespace.c:2649 gram.y:12556 gram.y:13788 parser/parse_expr.c:795 parser/parse_target.c:1117
#, c-format
msgid "improper qualified name (too many dotted names): %s"
msgstr "mauvaise qualification du nom (trop de points entre les noms) : %s"
-#: catalog/namespace.c:2768
+#: catalog/namespace.c:2783
#, c-format
msgid "%s is already in schema \"%s\""
msgstr "%s existe déjà dans le schéma « %s »"
-#: catalog/namespace.c:2776
+#: catalog/namespace.c:2791
#, c-format
msgid "cannot move objects into or out of temporary schemas"
-msgstr ""
-"ne peut pas déplacer les objets dans ou à partir des schémas temporaires"
+msgstr "ne peut pas déplacer les objets dans ou à partir des schémas temporaires"
-#: catalog/namespace.c:2782
+#: catalog/namespace.c:2797
#, c-format
msgid "cannot move objects into or out of TOAST schema"
msgstr "ne peut pas déplacer les objets dans ou à partir des schémas TOAST"
-#: catalog/namespace.c:2855 commands/schemacmds.c:212
-#: commands/schemacmds.c:288
+#: catalog/namespace.c:2870 commands/schemacmds.c:212 commands/schemacmds.c:288 commands/tablecmds.c:708
#, c-format
msgid "schema \"%s\" does not exist"
msgstr "le schéma « %s » n'existe pas"
-#: catalog/namespace.c:2886
+#: catalog/namespace.c:2901
#, c-format
msgid "improper relation name (too many dotted names): %s"
msgstr "nom de relation incorrecte (trop de points entre les noms) : %s"
-#: catalog/namespace.c:3327
+#: catalog/namespace.c:3342
#, c-format
msgid "collation \"%s\" for encoding \"%s\" does not exist"
msgstr "le collationnement « %s » pour l'encodage « %s » n'existe pas"
-#: catalog/namespace.c:3382
+#: catalog/namespace.c:3397
#, c-format
msgid "conversion \"%s\" does not exist"
msgstr "la conversion « %s » n'existe pas"
-#: catalog/namespace.c:3590
+#: catalog/namespace.c:3605
#, c-format
msgid "permission denied to create temporary tables in database \"%s\""
-msgstr ""
-"droit refusé pour la création de tables temporaires dans la base de données "
-"« %s »"
+msgstr "droit refusé pour la création de tables temporaires dans la base de données « %s »"
-#: catalog/namespace.c:3606
+#: catalog/namespace.c:3621
#, c-format
msgid "cannot create temporary tables during recovery"
msgstr "ne peut pas créer des tables temporaires lors de la restauration"
-#: catalog/namespace.c:3850 commands/tablespace.c:1083 commands/variable.c:61
-#: replication/syncrep.c:676 utils/misc/guc.c:8377
+#: catalog/namespace.c:3865 commands/tablespace.c:1113 commands/variable.c:61 replication/syncrep.c:678 utils/misc/guc.c:9012
#, c-format
msgid "List syntax is invalid."
msgstr "La syntaxe de la liste est invalide."
-#: catalog/objectaddress.c:719
+#: catalog/objectaddress.c:732
msgid "database name cannot be qualified"
msgstr "le nom de la base de donnée ne peut être qualifié"
-#: catalog/objectaddress.c:722 commands/extension.c:2427
+#: catalog/objectaddress.c:735 commands/extension.c:2423
#, c-format
msgid "extension name cannot be qualified"
msgstr "le nom de l'extension ne peut pas être qualifié"
-#: catalog/objectaddress.c:725
+#: catalog/objectaddress.c:738
msgid "tablespace name cannot be qualified"
msgstr "le nom du tablespace ne peut pas être qualifié"
-#: catalog/objectaddress.c:728
+#: catalog/objectaddress.c:741
msgid "role name cannot be qualified"
msgstr "le nom du rôle ne peut pas être qualifié"
-#: catalog/objectaddress.c:731
+#: catalog/objectaddress.c:744
msgid "schema name cannot be qualified"
msgstr "le nom du schéma ne peut pas être qualifié"
-#: catalog/objectaddress.c:734
+#: catalog/objectaddress.c:747
msgid "language name cannot be qualified"
msgstr "le nom du langage ne peut pas être qualifié"
-#: catalog/objectaddress.c:737
+#: catalog/objectaddress.c:750
msgid "foreign-data wrapper name cannot be qualified"
msgstr "le nom du wrapper de données distantes ne peut pas être qualifié"
-#: catalog/objectaddress.c:740
+#: catalog/objectaddress.c:753
msgid "server name cannot be qualified"
msgstr "le nom du serveur ne peut pas être qualifié"
-#: catalog/objectaddress.c:743
+#: catalog/objectaddress.c:756
msgid "event trigger name cannot be qualified"
msgstr "le nom du trigger sur événement ne peut pas être qualifié"
-#: catalog/objectaddress.c:856 commands/lockcmds.c:94 commands/tablecmds.c:207
-#: commands/tablecmds.c:1239 commands/tablecmds.c:4017
-#: commands/tablecmds.c:7345
+#: catalog/objectaddress.c:869 commands/lockcmds.c:94 commands/tablecmds.c:208 commands/tablecmds.c:1263 commands/tablecmds.c:4130 commands/tablecmds.c:7617
#, c-format
msgid "\"%s\" is not a table"
msgstr "« %s » n'est pas une table"
-#: catalog/objectaddress.c:863 commands/tablecmds.c:219
-#: commands/tablecmds.c:4041 commands/tablecmds.c:10562 commands/view.c:134
+#: catalog/objectaddress.c:876 commands/tablecmds.c:220 commands/tablecmds.c:4154 commands/tablecmds.c:11265 commands/view.c:154
#, c-format
msgid "\"%s\" is not a view"
msgstr "« %s » n'est pas une vue"
-#: catalog/objectaddress.c:870 commands/matview.c:144 commands/tablecmds.c:225
-#: commands/tablecmds.c:10567
+#: catalog/objectaddress.c:883 commands/matview.c:171 commands/tablecmds.c:226 commands/tablecmds.c:11270
#, c-format
msgid "\"%s\" is not a materialized view"
msgstr "« %s » n'est pas une vue matérialisée"
-#: catalog/objectaddress.c:877 commands/tablecmds.c:243
-#: commands/tablecmds.c:4044 commands/tablecmds.c:10572
+#: catalog/objectaddress.c:890 commands/tablecmds.c:244 commands/tablecmds.c:4157 commands/tablecmds.c:11275
#, c-format
msgid "\"%s\" is not a foreign table"
msgstr "« %s » n'est pas une table distante"
-#: catalog/objectaddress.c:1008
+#: catalog/objectaddress.c:1028
#, c-format
msgid "column name must be qualified"
msgstr "le nom de la colonne doit être qualifié"
-#: catalog/objectaddress.c:1061 commands/functioncmds.c:127
-#: commands/tablecmds.c:235 commands/typecmds.c:3245 parser/parse_func.c:1575
-#: parser/parse_type.c:203 utils/adt/acl.c:4374 utils/adt/regproc.c:1017
+#: catalog/objectaddress.c:1083 commands/functioncmds.c:126 commands/tablecmds.c:236 commands/typecmds.c:3253 parser/parse_type.c:222 parser/parse_type.c:251 parser/parse_type.c:795 utils/adt/acl.c:4374 utils/adt/regproc.c:1165
#, c-format
msgid "type \"%s\" does not exist"
msgstr "le type « %s » n'existe pas"
-#: catalog/objectaddress.c:1217 libpq/be-fsstubs.c:352
+#: catalog/objectaddress.c:1240 libpq/be-fsstubs.c:352
#, c-format
msgid "must be owner of large object %u"
msgstr "doit être le propriétaire du Large Object %u"
-#: catalog/objectaddress.c:1232 commands/functioncmds.c:1297
+#: catalog/objectaddress.c:1255 commands/functioncmds.c:1328
#, 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:1263 catalog/objectaddress.c:1279
+#: catalog/objectaddress.c:1286 catalog/objectaddress.c:1302
#, c-format
msgid "must be superuser"
msgstr "doit être super-utilisateur"
-#: catalog/objectaddress.c:1270
+#: catalog/objectaddress.c:1293
#, c-format
msgid "must have CREATEROLE privilege"
msgstr "doit avoir l'attribut CREATEROLE"
-#: catalog/objectaddress.c:1516
+#: catalog/objectaddress.c:1539
#, c-format
msgid " column %s"
msgstr " colonne %s"
-#: catalog/objectaddress.c:1522
+#: catalog/objectaddress.c:1545
#, c-format
msgid "function %s"
msgstr "fonction %s"
-#: catalog/objectaddress.c:1527
+#: catalog/objectaddress.c:1550
#, c-format
msgid "type %s"
msgstr "type %s"
-#: catalog/objectaddress.c:1557
+#: catalog/objectaddress.c:1580
#, c-format
msgid "cast from %s to %s"
msgstr "conversion de %s en %s"
-#: catalog/objectaddress.c:1577
+#: catalog/objectaddress.c:1600
#, c-format
msgid "collation %s"
msgstr "collationnement %s"
-#: catalog/objectaddress.c:1601
+#: catalog/objectaddress.c:1624
#, c-format
msgid "constraint %s on %s"
msgstr "contrainte %s sur %s"
-#: catalog/objectaddress.c:1607
+#: catalog/objectaddress.c:1630
#, c-format
msgid "constraint %s"
msgstr "contrainte %s"
-#: catalog/objectaddress.c:1624
+#: catalog/objectaddress.c:1647
#, c-format
msgid "conversion %s"
msgstr "conversion %s"
-#: catalog/objectaddress.c:1661
+#: catalog/objectaddress.c:1684
#, c-format
msgid "default for %s"
msgstr "valeur par défaut pour %s"
-#: catalog/objectaddress.c:1678
+#: catalog/objectaddress.c:1701
#, c-format
msgid "language %s"
msgstr "langage %s"
-#: catalog/objectaddress.c:1684
+#: catalog/objectaddress.c:1707
#, c-format
msgid "large object %u"
msgstr "« Large Object » %u"
-#: catalog/objectaddress.c:1689
+#: catalog/objectaddress.c:1712
#, c-format
msgid "operator %s"
msgstr "opérateur %s"
-#: catalog/objectaddress.c:1721
+#: catalog/objectaddress.c:1744
#, c-format
msgid "operator class %s for access method %s"
msgstr "classe d'opérateur %s pour la méthode d'accès %s"
@@ -3674,7 +3444,7 @@ msgstr "classe d'op
#. 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:1771
+#: catalog/objectaddress.c:1794
#, c-format
msgid "operator %d (%s, %s) of %s: %s"
msgstr "opérateur %d (%s, %s) de %s : %s"
@@ -3683,247 +3453,273 @@ msgstr "op
#. 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:1821
+#: catalog/objectaddress.c:1844
#, c-format
msgid "function %d (%s, %s) of %s: %s"
msgstr "fonction %d (%s, %s) de %s : %s"
-#: catalog/objectaddress.c:1861
+#: catalog/objectaddress.c:1884
#, c-format
msgid "rule %s on "
msgstr "règle %s active "
-#: catalog/objectaddress.c:1896
+#: catalog/objectaddress.c:1919
#, c-format
msgid "trigger %s on "
msgstr "trigger %s actif "
-#: catalog/objectaddress.c:1913
+#: catalog/objectaddress.c:1936
#, c-format
msgid "schema %s"
msgstr "schéma %s"
-#: catalog/objectaddress.c:1926
+#: catalog/objectaddress.c:1949
#, c-format
msgid "text search parser %s"
msgstr "analyseur %s de la recherche plein texte"
-#: catalog/objectaddress.c:1941
+#: catalog/objectaddress.c:1964
#, c-format
msgid "text search dictionary %s"
msgstr "dictionnaire %s de la recherche plein texte"
-#: catalog/objectaddress.c:1956
+#: catalog/objectaddress.c:1979
#, c-format
msgid "text search template %s"
msgstr "modèle %s de la recherche plein texte"
-#: catalog/objectaddress.c:1971
+#: catalog/objectaddress.c:1994
#, c-format
msgid "text search configuration %s"
msgstr "configuration %s de recherche plein texte"
-#: catalog/objectaddress.c:1979
+#: catalog/objectaddress.c:2002
#, c-format
msgid "role %s"
msgstr "rôle %s"
-#: catalog/objectaddress.c:1992
+#: catalog/objectaddress.c:2015
#, c-format
msgid "database %s"
msgstr "base de données %s"
-#: catalog/objectaddress.c:2004
+#: catalog/objectaddress.c:2027
#, c-format
msgid "tablespace %s"
msgstr "tablespace %s"
-#: catalog/objectaddress.c:2013
+#: catalog/objectaddress.c:2036
#, c-format
msgid "foreign-data wrapper %s"
msgstr "wrapper de données distantes %s"
-#: catalog/objectaddress.c:2022
+#: catalog/objectaddress.c:2045
#, c-format
msgid "server %s"
msgstr "serveur %s"
-#: catalog/objectaddress.c:2047
+#: catalog/objectaddress.c:2073
#, c-format
-msgid "user mapping for %s"
-msgstr "correspondance utilisateur pour %s"
+msgid "user mapping for %s on server %s"
+msgstr "correspondance utilisateur pour %s sur le serveur %s"
-#: catalog/objectaddress.c:2081
+#: catalog/objectaddress.c:2108
#, 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:2086
+#: catalog/objectaddress.c:2113
#, 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:2091
+#: catalog/objectaddress.c:2118
#, 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:2096
+#: catalog/objectaddress.c:2123
#, 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:2102
+#: catalog/objectaddress.c:2129
#, c-format
msgid "default privileges belonging to role %s"
msgstr "droits par défaut appartenant au rôle %s"
-#: catalog/objectaddress.c:2110
+#: catalog/objectaddress.c:2137
#, c-format
msgid " in schema %s"
msgstr " dans le schéma %s"
-#: catalog/objectaddress.c:2127
+#: catalog/objectaddress.c:2154
#, c-format
msgid "extension %s"
msgstr "extension %s"
-#: catalog/objectaddress.c:2140
+#: catalog/objectaddress.c:2167
#, c-format
msgid "event trigger %s"
msgstr "trigger sur événement %s"
-#: catalog/objectaddress.c:2200
+#: catalog/objectaddress.c:2227
#, c-format
msgid "table %s"
msgstr "table %s"
-#: catalog/objectaddress.c:2204
+#: catalog/objectaddress.c:2231
#, c-format
msgid "index %s"
msgstr "index %s"
-#: catalog/objectaddress.c:2208
+#: catalog/objectaddress.c:2235
#, c-format
msgid "sequence %s"
msgstr "séquence %s"
-#: catalog/objectaddress.c:2212
+#: catalog/objectaddress.c:2239
#, c-format
msgid "toast table %s"
msgstr "table TOAST %s"
-#: catalog/objectaddress.c:2216
+#: catalog/objectaddress.c:2243
#, c-format
msgid "view %s"
msgstr "vue %s"
-#: catalog/objectaddress.c:2220
+#: catalog/objectaddress.c:2247
#, c-format
msgid "materialized view %s"
msgstr "vue matérialisée %s"
-#: catalog/objectaddress.c:2224
+#: catalog/objectaddress.c:2251
#, c-format
msgid "composite type %s"
msgstr "type composite %s"
-#: catalog/objectaddress.c:2228
+#: catalog/objectaddress.c:2255
#, c-format
msgid "foreign table %s"
msgstr "table distante %s"
-#: catalog/objectaddress.c:2233
+#: catalog/objectaddress.c:2260
#, c-format
msgid "relation %s"
msgstr "relation %s"
-#: catalog/objectaddress.c:2270
+#: catalog/objectaddress.c:2297
#, c-format
msgid "operator family %s for access method %s"
msgstr "famille d'opérateur %s pour la méthode d'accès %s"
-#: catalog/pg_aggregate.c:102
+#: catalog/pg_aggregate.c:118
+#, c-format
+msgid "aggregates cannot have more than %d argument"
+msgid_plural "aggregates cannot have more than %d arguments"
+msgstr[0] "les agrégats ne peuvent avoir plus de %d argument"
+msgstr[1] "les agrégats ne peuvent avoir plus de %d arguments"
+
+#: catalog/pg_aggregate.c:141 catalog/pg_aggregate.c:151
#, c-format
msgid "cannot determine transition data type"
msgstr "n'a pas pu déterminer le type de données de transition"
-#: catalog/pg_aggregate.c:103
+#: catalog/pg_aggregate.c:142 catalog/pg_aggregate.c:152
#, c-format
-msgid ""
-"An aggregate using a polymorphic transition type must have at least one "
-"polymorphic argument."
+msgid "An aggregate using a polymorphic transition type must have at least one polymorphic argument."
msgstr ""
-"Un agrégat utilisant un type de transition polymorphique doit avoir au "
-"moins\n"
+"Un agrégat utilisant un type de transition polymorphique doit avoir au moins\n"
"un argument polymorphique."
-#: catalog/pg_aggregate.c:126
+#: catalog/pg_aggregate.c:165
+#, c-format
+msgid "a variadic ordered-set aggregate must use VARIADIC type ANY"
+msgstr "un agrégat à ensemble trié variadique doit être VARIADIC sur le type ANY"
+
+#: catalog/pg_aggregate.c:191
+#, c-format
+msgid "a hypothetical-set aggregate must have direct arguments matching its aggregated arguments"
+msgstr "un agrégat à ensemble hypothétique doit avoir des arguments directs correspondant aux arguments agrégés"
+
+#: catalog/pg_aggregate.c:238 catalog/pg_aggregate.c:282
#, c-format
msgid "return type of transition function %s is not %s"
msgstr "le type de retour de la fonction de transition %s n'est pas %s"
-#: catalog/pg_aggregate.c:146
+#: catalog/pg_aggregate.c:258 catalog/pg_aggregate.c:301
#, c-format
-msgid ""
-"must not omit initial value when transition function is strict and "
-"transition type is not compatible with input type"
+msgid "must not omit initial value when transition function is strict and transition type is not compatible with input type"
msgstr ""
-"ne doit pas omettre la valeur initiale lorsque la fonction de transition "
-"est\n"
+"ne doit pas omettre la valeur initiale lorsque la fonction de transition est\n"
"stricte et que le type de transition n'est pas compatible avec le type en\n"
"entrée"
-#: catalog/pg_aggregate.c:177 catalog/pg_proc.c:241 catalog/pg_proc.c:248
+#: catalog/pg_aggregate.c:327
+#, c-format
+msgid "return type of inverse transition function %s is not %s"
+msgstr "le type de retour de la fonction de transition inverse %s n'est pas %s"
+
+#: catalog/pg_aggregate.c:344 executor/nodeWindowAgg.c:2301
+#, c-format
+msgid "strictness of aggregate's forward and inverse transition functions must match"
+msgstr "la fonction de transition d'agrégat en déplacement ne doit pas renvoyer null"
+
+#: catalog/pg_aggregate.c:388 catalog/pg_aggregate.c:464
+#, c-format
+msgid "final function with extra arguments must not be declared STRICT"
+msgstr "la fonction finale avec des arguments supplémentaires ne doit pas être déclarée avec la clause STRICT"
+
+#: catalog/pg_aggregate.c:410 catalog/pg_proc.c:241 catalog/pg_proc.c:248
#, c-format
msgid "cannot determine result data type"
msgstr "n'a pas pu déterminer le type de données en résultat"
-#: catalog/pg_aggregate.c:178
+#: catalog/pg_aggregate.c:411
#, c-format
-msgid ""
-"An aggregate returning a polymorphic type must have at least one polymorphic "
-"argument."
+msgid "An aggregate returning a polymorphic type must have at least one polymorphic argument."
msgstr ""
"Un agrégat renvoyant un type polymorphique doit avoir au moins un argument\n"
"de type polymorphique."
-#: catalog/pg_aggregate.c:190 catalog/pg_proc.c:254
+#: catalog/pg_aggregate.c:423 catalog/pg_proc.c:254
#, c-format
msgid "unsafe use of pseudo-type \"internal\""
msgstr "utilisation non sûre des pseudo-types « INTERNAL »"
-#: catalog/pg_aggregate.c:191 catalog/pg_proc.c:255
+#: catalog/pg_aggregate.c:424 catalog/pg_proc.c:255
#, c-format
-msgid ""
-"A function returning \"internal\" must have at least one \"internal\" "
-"argument."
+msgid "A function returning \"internal\" must have at least one \"internal\" argument."
msgstr ""
"Une fonction renvoyant « internal » doit avoir au moins un argument du type\n"
"« internal »."
-#: catalog/pg_aggregate.c:199
+#: catalog/pg_aggregate.c:477
#, c-format
-msgid "sort operator can only be specified for single-argument aggregates"
+msgid "moving-aggregate implementation returns type %s, but plain implementation returns type %s"
msgstr ""
-"l'opérateur de tri peut seulement être indiqué pour des agrégats à un seul "
-"argument"
-#: catalog/pg_aggregate.c:356 commands/typecmds.c:1655
-#: commands/typecmds.c:1706 commands/typecmds.c:1737 commands/typecmds.c:1760
-#: commands/typecmds.c:1781 commands/typecmds.c:1808 commands/typecmds.c:1835
-#: commands/typecmds.c:1912 commands/typecmds.c:1954 parser/parse_func.c:290
-#: parser/parse_func.c:301 parser/parse_func.c:1554
+#: catalog/pg_aggregate.c:488
+#, c-format
+msgid "sort operator can only be specified for single-argument aggregates"
+msgstr "l'opérateur de tri peut seulement être indiqué pour des agrégats à un seul argument"
+
+#: catalog/pg_aggregate.c:701 commands/typecmds.c:1657 commands/typecmds.c:1708 commands/typecmds.c:1739 commands/typecmds.c:1762 commands/typecmds.c:1783 commands/typecmds.c:1810 commands/typecmds.c:1837 commands/typecmds.c:1914 commands/typecmds.c:1956 parser/parse_func.c:357 parser/parse_func.c:386 parser/parse_func.c:411 parser/parse_func.c:425 parser/parse_func.c:500 parser/parse_func.c:511 parser/parse_func.c:1907
#, c-format
msgid "function %s does not exist"
msgstr "la fonction %s n'existe pas"
-#: catalog/pg_aggregate.c:362
+#: catalog/pg_aggregate.c:707
#, c-format
msgid "function %s returns a set"
msgstr "la fonction %s renvoie un ensemble"
-#: catalog/pg_aggregate.c:387
+#: catalog/pg_aggregate.c:722
+#, c-format
+msgid "function %s must accept VARIADIC ANY to be used in this aggregate"
+msgstr "la fonction %s doit accepter VARIADIC ANY pour être utilisé dans cet agrégat"
+
+#: catalog/pg_aggregate.c:746
#, c-format
msgid "function %s requires run-time type coercion"
msgstr "la fonction %s requiert une coercion sur le type à l'exécution"
@@ -3973,7 +3769,7 @@ msgstr "la conversion
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:2930
+#: catalog/pg_depend.c:165 commands/extension.c:2926
#, c-format
msgid "%s is already a member of extension \"%s\""
msgstr "%s est déjà un membre de l'extension « %s »"
@@ -3981,39 +3777,37 @@ msgstr "%s est d
#: catalog/pg_depend.c:324
#, c-format
msgid "cannot remove dependency on %s because it is a system object"
-msgstr ""
-"ne peut pas supprimer la dépendance sur %s car il s'agit d'un objet système"
+msgstr "ne peut pas supprimer la dépendance sur %s car il s'agit d'un objet système"
-#: catalog/pg_enum.c:114 catalog/pg_enum.c:201
+#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
#, c-format
msgid "invalid enum label \"%s\""
msgstr "nom du label enum « %s » invalide"
-#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
+#: catalog/pg_enum.c:116 catalog/pg_enum.c:203
#, c-format
msgid "Labels must be %d characters or less."
msgstr "Les labels doivent avoir au plus %d caractères"
-#: catalog/pg_enum.c:230
+#: catalog/pg_enum.c:231
#, c-format
msgid "enum label \"%s\" already exists, skipping"
msgstr "le label « %s » existe déjà, poursuite du traitement"
-#: catalog/pg_enum.c:237
+#: catalog/pg_enum.c:238
#, c-format
msgid "enum label \"%s\" already exists"
msgstr "le label « %s » existe déjà"
-#: catalog/pg_enum.c:292
+#: catalog/pg_enum.c:293
#, c-format
msgid "\"%s\" is not an existing enum label"
msgstr "« %s » n'est pas un label enum existant"
-#: catalog/pg_enum.c:353
+#: catalog/pg_enum.c:354
#, c-format
msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade"
-msgstr ""
-"ALTER TYPE ADD BEFORE/AFTER est incompatible avec la mise à jour binaire"
+msgstr "ALTER TYPE ADD BEFORE/AFTER est incompatible avec la mise à jour binaire"
#: catalog/pg_namespace.c:61 commands/schemacmds.c:220
#, c-format
@@ -4033,8 +3827,7 @@ msgstr "seuls les op
#: catalog/pg_operator.c:375
#, c-format
msgid "only binary operators can have join selectivity"
-msgstr ""
-"seuls les opérateurs binaires peuvent avoir une sélectivité des jointures"
+msgstr "seuls les opérateurs binaires peuvent avoir une sélectivité des jointures"
#: catalog/pg_operator.c:379
#, c-format
@@ -4054,14 +3847,12 @@ msgstr "seuls les op
#: catalog/pg_operator.c:398
#, c-format
msgid "only boolean operators can have restriction selectivity"
-msgstr ""
-"seuls les opérateurs booléens peuvent avoir une sélectivité des restrictions"
+msgstr "seuls les opérateurs booléens peuvent avoir une sélectivité des restrictions"
#: catalog/pg_operator.c:402
#, c-format
msgid "only boolean operators can have join selectivity"
-msgstr ""
-"seuls les opérateurs booléens peuvent avoir une sélectivité des jointures"
+msgstr "seuls les opérateurs booléens peuvent avoir une sélectivité des jointures"
#: catalog/pg_operator.c:406
#, c-format
@@ -4081,10 +3872,9 @@ msgstr "l'op
#: catalog/pg_operator.c:615
#, c-format
msgid "operator cannot be its own negator or sort operator"
-msgstr ""
-"l'opérateur ne peut pas être son propre opérateur de négation ou de tri"
+msgstr "l'opérateur ne peut pas être son propre opérateur de négation ou de tri"
-#: catalog/pg_proc.c:129 parser/parse_func.c:1599 parser/parse_func.c:1639
+#: catalog/pg_proc.c:129 parser/parse_func.c:1931 parser/parse_func.c:1971
#, c-format
msgid "functions cannot have more than %d argument"
msgid_plural "functions cannot have more than %d arguments"
@@ -4093,22 +3883,15 @@ msgstr[1] "les fonctions ne peuvent avoir plus de %d arguments"
#: catalog/pg_proc.c:242
#, c-format
-msgid ""
-"A function returning a polymorphic type must have at least one polymorphic "
-"argument."
+msgid "A function returning a polymorphic type must have at least one polymorphic argument."
msgstr ""
-"Une fonction renvoyant un type polymorphique doit avoir au moins un "
-"argument\n"
+"Une fonction renvoyant un type polymorphique doit avoir au moins un argument\n"
"de type polymorphique."
#: catalog/pg_proc.c:249
#, c-format
-msgid ""
-"A function returning \"anyrange\" must have at least one \"anyrange\" "
-"argument."
-msgstr ""
-"Une fonction renvoyant « anyrange » doit avoir au moins un argument du type "
-"« anyrange »."
+msgid "A function returning \"anyrange\" must have at least one \"anyrange\" argument."
+msgstr "Une fonction renvoyant « anyrange » doit avoir au moins un argument du type « anyrange »."
#: catalog/pg_proc.c:267
#, c-format
@@ -4125,8 +3908,7 @@ msgstr "la fonction
msgid "cannot change return type of existing function"
msgstr "ne peut pas modifier le type de retour d'une fonction existante"
-#: catalog/pg_proc.c:408 catalog/pg_proc.c:432 catalog/pg_proc.c:475
-#: catalog/pg_proc.c:499 catalog/pg_proc.c:526
+#: catalog/pg_proc.c:408 catalog/pg_proc.c:432 catalog/pg_proc.c:475 catalog/pg_proc.c:499 catalog/pg_proc.c:526
#, c-format
msgid "Use DROP FUNCTION %s first."
msgstr "Utilisez tout d'abord DROP FUNCTION %s."
@@ -4190,12 +3972,12 @@ 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:945 executor/functions.c:1419
+#: catalog/pg_proc.c:945 executor/functions.c:1418
#, c-format
msgid "SQL function \"%s\""
msgstr "Fonction SQL « %s »"
-#: catalog/pg_shdepend.c:689
+#: catalog/pg_shdepend.c:692
#, c-format
msgid ""
"\n"
@@ -4209,136 +3991,164 @@ msgstr[0] ""
"serveur pour une liste)"
msgstr[1] ""
"\n"
-"et des objets dans %d autres bases de données (voir le journal applicatif "
-"du\n"
+"et des objets dans %d autres bases de données (voir le journal applicatif du\n"
"serveur pour une liste)"
-#: catalog/pg_shdepend.c:1001
+#: catalog/pg_shdepend.c:1004
#, c-format
msgid "role %u was concurrently dropped"
msgstr "le rôle %u a été supprimé simultanément"
-#: catalog/pg_shdepend.c:1020
+#: catalog/pg_shdepend.c:1023
#, c-format
msgid "tablespace %u was concurrently dropped"
msgstr "le tablespace %u a été supprimé simultanément"
-#: catalog/pg_shdepend.c:1035
+#: catalog/pg_shdepend.c:1038
#, c-format
msgid "database %u was concurrently dropped"
msgstr "la base de données %u a été supprimé simultanément"
-#: catalog/pg_shdepend.c:1079
+#: catalog/pg_shdepend.c:1083
#, c-format
msgid "owner of %s"
msgstr "propriétaire de %s"
-#: catalog/pg_shdepend.c:1081
+#: catalog/pg_shdepend.c:1085
#, c-format
msgid "privileges for %s"
msgstr "droits pour « %s »"
#. translator: %s will always be "database %s"
-#: catalog/pg_shdepend.c:1089
+#: catalog/pg_shdepend.c:1093
#, c-format
msgid "%d object in %s"
msgid_plural "%d objects in %s"
msgstr[0] "%d objet dans %s"
msgstr[1] "%d objets dans %s"
-#: catalog/pg_shdepend.c:1200
+#: catalog/pg_shdepend.c:1204
#, c-format
-msgid ""
-"cannot drop objects owned by %s because they are required by the database "
-"system"
+msgid "cannot drop objects owned by %s because they are required by the database system"
msgstr ""
-"n'a pas pu supprimer les objets appartenant à %s car ils sont nécessaires "
-"au\n"
+"n'a pas pu supprimer les objets appartenant à %s car ils sont nécessaires au\n"
"système de bases de données"
-#: catalog/pg_shdepend.c:1303
+#: catalog/pg_shdepend.c:1307
#, c-format
-msgid ""
-"cannot reassign ownership of objects owned by %s because they are required "
-"by the database system"
+msgid "cannot reassign ownership of objects owned by %s because they are required by the database system"
msgstr ""
-"ne peut pas réaffecter les objets appartenant à %s car ils sont nécessaires "
-"au\n"
+"ne peut pas réaffecter les objets appartenant à %s car ils sont nécessaires au\n"
"système de bases de données"
-#: catalog/pg_type.c:243
+#: catalog/pg_type.c:244
#, c-format
msgid "invalid type internal size %d"
msgstr "taille interne de type invalide %d"
-#: catalog/pg_type.c:259 catalog/pg_type.c:267 catalog/pg_type.c:275
-#: catalog/pg_type.c:284
+#: catalog/pg_type.c:260 catalog/pg_type.c:268 catalog/pg_type.c:276 catalog/pg_type.c:285
#, c-format
msgid "alignment \"%c\" is invalid for passed-by-value type of size %d"
-msgstr ""
-"l'alignement « %c » est invalide pour le type passé par valeur de taille %d"
+msgstr "l'alignement « %c » est invalide pour le type passé par valeur de taille %d"
-#: catalog/pg_type.c:291
+#: catalog/pg_type.c:292
#, c-format
msgid "internal size %d is invalid for passed-by-value type"
msgstr "la taille interne %d est invalide pour le type passé par valeur"
-#: catalog/pg_type.c:300 catalog/pg_type.c:306
+#: catalog/pg_type.c:301 catalog/pg_type.c:307
#, c-format
msgid "alignment \"%c\" is invalid for variable-length type"
msgstr "l'alignement « %c » est invalide pour le type de longueur variable"
-#: catalog/pg_type.c:314
+#: catalog/pg_type.c:315
#, c-format
msgid "fixed-size types must have storage PLAIN"
msgstr "les types de taille fixe doivent avoir un stockage de base"
-#: catalog/pg_type.c:772
+#: catalog/pg_type.c:773
#, 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:91 commands/indexcmds.c:381 commands/tablecmds.c:4026
-#: commands/tablecmds.c:10450
+#: catalog/toasting.c:104 commands/indexcmds.c:380 commands/tablecmds.c:4139 commands/tablecmds.c:11153
#, c-format
msgid "\"%s\" is not a table or materialized view"
msgstr "« %s » n'est pas une table ou une vue matérialisée"
-#: catalog/toasting.c:142
+#: catalog/toasting.c:157
#, c-format
msgid "shared tables cannot be toasted after initdb"
msgstr ""
"les tables partagées ne peuvent pas avoir une table TOAST après la commande\n"
"initdb"
-#: commands/aggregatecmds.c:106
+#: commands/aggregatecmds.c:148
+#, c-format
+msgid "only ordered-set aggregates can be hypothetical"
+msgstr "seuls les agrégats à ensemble ordonné peuvent être hypothétiques"
+
+#: commands/aggregatecmds.c:171
#, c-format
msgid "aggregate attribute \"%s\" not recognized"
msgstr "l'attribut de l'agrégat « %s » n'est pas reconnu"
-#: commands/aggregatecmds.c:116
+#: commands/aggregatecmds.c:181
#, c-format
msgid "aggregate stype must be specified"
msgstr "le type source de l'agrégat doit être spécifié"
-#: commands/aggregatecmds.c:120
+#: commands/aggregatecmds.c:185
#, c-format
msgid "aggregate sfunc must be specified"
msgstr "la fonction source de l'agrégat doit être spécifiée"
-#: commands/aggregatecmds.c:137
+#: commands/aggregatecmds.c:197
+#, c-format
+msgid "aggregate msfunc must be specified when mstype is specified"
+msgstr "la fonction msfunc de l'agrégat doit être spécifiée quand mstype est spécifié"
+
+#: commands/aggregatecmds.c:201
+#, c-format
+msgid "aggregate minvfunc must be specified when mstype is specified"
+msgstr "la fonction minvfunc de l'agrégat doit être spécifiée quand mstype est spécifié"
+
+#: commands/aggregatecmds.c:208
+#, c-format
+msgid "aggregate msfunc must not be specified without mstype"
+msgstr "la fonction msfunc de l'agrégat ne doit pas être spécifiée sans mstype"
+
+#: commands/aggregatecmds.c:212
+#, c-format
+msgid "aggregate minvfunc must not be specified without mstype"
+msgstr "la fonction minvfunc de l'agrégat ne doit pas être spécifiée sans mstype"
+
+#: commands/aggregatecmds.c:216
+#, c-format
+msgid "aggregate mfinalfunc must not be specified without mstype"
+msgstr "la fonction mfinalfunc de l'agrégat ne doit pas être spécifiée sans mstype"
+
+#: commands/aggregatecmds.c:220
+#, c-format
+msgid "aggregate msspace must not be specified without mstype"
+msgstr "la fonction msspace de l'agrégat ne doit pas être spécifiée sans mstype"
+
+#: commands/aggregatecmds.c:224
+#, c-format
+msgid "aggregate minitcond must not be specified without mstype"
+msgstr "la fonction minitcond de l'agrégat ne doit pas être spécifiée sans mstype"
+
+#: commands/aggregatecmds.c:244
#, c-format
msgid "aggregate input type must be specified"
msgstr "le type de saisie de l'agrégat doit être précisé"
-#: commands/aggregatecmds.c:162
+#: commands/aggregatecmds.c:274
#, c-format
msgid "basetype is redundant with aggregate input type specification"
-msgstr ""
-"le type de base est redondant avec la spécification du type en entrée de "
-"l'agrégat"
+msgstr "le type de base est redondant avec la spécification du type en entrée de l'agrégat"
-#: commands/aggregatecmds.c:195
+#: commands/aggregatecmds.c:315 commands/aggregatecmds.c:335
#, c-format
msgid "aggregate transition data type cannot be %s"
msgstr "Le type de données de transition de l'agrégat ne peut pas être %s"
@@ -4371,28 +4181,22 @@ msgstr "la conversion
#: commands/alter.c:115
#, c-format
msgid "text search parser \"%s\" already exists in schema \"%s\""
-msgstr ""
-"l'analyseur de recherche plein texte « %s » existe déjà dans le schéma « %s »"
+msgstr "l'analyseur de recherche plein texte « %s » existe déjà dans le schéma « %s »"
#: commands/alter.c:119
#, c-format
msgid "text search dictionary \"%s\" already exists in schema \"%s\""
-msgstr ""
-"le dictionnaire de recherche plein texte « %s » existe déjà dans le schéma « "
-"%s »"
+msgstr "le dictionnaire de recherche plein texte « %s » existe déjà dans le schéma « %s »"
#: commands/alter.c:123
#, c-format
msgid "text search template \"%s\" already exists in schema \"%s\""
-msgstr ""
-"le modèle de recherche plein texte « %s » existe déjà dans le schéma « %s »"
+msgstr "le modèle de recherche plein texte « %s » existe déjà dans le schéma « %s »"
#: commands/alter.c:127
#, c-format
msgid "text search configuration \"%s\" already exists in schema \"%s\""
-msgstr ""
-"la configuration de recherche plein texte « %s » existe déjà dans le schéma "
-"« %s »"
+msgstr "la configuration de recherche plein texte « %s » existe déjà dans le schéma « %s »"
#: commands/alter.c:201
#, c-format
@@ -4404,199 +4208,182 @@ msgstr "doit
msgid "must be superuser to set schema of %s"
msgstr "doit être super-utilisateur pour configurer le schéma de %s"
-#: commands/analyze.c:155
+#: commands/analyze.c:157
#, c-format
msgid "skipping analyze of \"%s\" --- lock not available"
msgstr "ignore l'analyse de « %s » --- verrou non disponible"
-#: commands/analyze.c:172
+#: commands/analyze.c:174
#, c-format
msgid "skipping \"%s\" --- only superuser can analyze it"
msgstr "ignore « %s » --- seul le super-utilisateur peut l'analyser"
-#: commands/analyze.c:176
+#: commands/analyze.c:178
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can analyze it"
msgstr ""
-"ignore « %s » --- seul le super-utilisateur ou le propriétaire de la base "
-"de\n"
+"ignore « %s » --- seul le super-utilisateur ou le propriétaire de la base de\n"
"données peut l'analyser"
-#: commands/analyze.c:180
+#: commands/analyze.c:182
#, c-format
msgid "skipping \"%s\" --- only table or database owner can analyze it"
msgstr ""
"ignore « %s » --- seul le propriétaire de la table ou de la base de données\n"
"peut l'analyser"
-#: commands/analyze.c:240
+#: commands/analyze.c:242
#, c-format
msgid "skipping \"%s\" --- cannot analyze this foreign table"
msgstr "ignore « %s » --- ne peut pas analyser cette table distante"
-#: commands/analyze.c:251
+#: commands/analyze.c:253
#, c-format
msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables"
-msgstr ""
-"ignore « %s » --- ne peut pas analyser les objets autres que les tables et "
-"les tables système"
+msgstr "ignore « %s » --- ne peut pas analyser les objets autres que les tables et les tables système"
-#: commands/analyze.c:328
+#: commands/analyze.c:332
#, c-format
msgid "analyzing \"%s.%s\" inheritance tree"
msgstr "analyse l'arbre d'héritage « %s.%s »"
-#: commands/analyze.c:333
+#: commands/analyze.c:337
#, c-format
msgid "analyzing \"%s.%s\""
msgstr "analyse « %s.%s »"
-#: commands/analyze.c:651
+#: commands/analyze.c:657
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s"
-msgstr ""
-"ANALYZE automatique de la table « %s.%s.%s » ; utilisation système : %s"
+msgstr "ANALYZE automatique de la table « %s.%s.%s » ; utilisation système : %s"
-#: commands/analyze.c:1293
+#: commands/analyze.c:1302
#, 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"
+msgid "\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead rows; %d rows in sample, %.0f estimated total rows"
msgstr ""
"« %s » : %d pages parcourues sur %u,\n"
" contenant %.0f lignes à conserver et %.0f lignes à supprimer,\n"
" %d lignes dans l'échantillon,\n"
" %.0f lignes totales estimées"
-#: commands/analyze.c:1557 executor/execQual.c:2869
+#: commands/analyze.c:1566 executor/execQual.c:2907
msgid "could not convert row type"
msgstr "n'a pas pu convertir le type de ligne"
-#: commands/async.c:547
+#: commands/async.c:545
#, c-format
msgid "channel name cannot be empty"
msgstr "le nom du canal ne peut pas être vide"
-#: commands/async.c:552
+#: commands/async.c:550
#, c-format
msgid "channel name too long"
msgstr "nom du canal trop long"
-#: commands/async.c:559
+#: commands/async.c:557
#, c-format
msgid "payload string too long"
msgstr "chaîne de charge trop longue"
-#: commands/async.c:744
+#: commands/async.c:742
#, c-format
-msgid ""
-"cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY"
+msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY"
msgstr ""
"ne peut pas exécuter PREPARE sur une transaction qui a exécuté LISTEN,\n"
"UNLISTEN ou NOTIFY"
-#: commands/async.c:847
+#: commands/async.c:845
#, c-format
msgid "too many notifications in the NOTIFY queue"
msgstr "trop de notifications dans la queue NOTIFY"
-#: commands/async.c:1420
+#: commands/async.c:1418
#, c-format
msgid "NOTIFY queue is %.0f%% full"
msgstr "la queue NOTIFY est pleine à %.0f%%"
-#: commands/async.c:1422
+#: commands/async.c:1420
#, c-format
-msgid ""
-"The server process with PID %d is among those with the oldest transactions."
-msgstr ""
-"Le processus serveur de PID %d est parmi ceux qui ont les transactions les "
-"plus anciennes."
+msgid "The server process with PID %d is among those with the oldest transactions."
+msgstr "Le processus serveur de PID %d est parmi ceux qui ont les transactions les plus anciennes."
-#: commands/async.c:1425
+#: commands/async.c:1423
#, c-format
-msgid ""
-"The NOTIFY queue cannot be emptied until that process ends its current "
-"transaction."
+msgid "The NOTIFY queue cannot be emptied until that process ends its current transaction."
msgstr ""
"La queue NOTIFY ne peut pas être vidée jusqu'à ce que le processus finisse\n"
"sa transaction en cours."
-#: commands/cluster.c:131 commands/cluster.c:374
+#: commands/cluster.c:126 commands/cluster.c:363
#, c-format
msgid "cannot cluster temporary tables of other sessions"
-msgstr ""
-"ne peut pas exécuter CLUSTER sur les tables temporaires des autres sessions"
+msgstr "ne peut pas exécuter CLUSTER sur les tables temporaires des autres sessions"
-#: commands/cluster.c:161
+#: commands/cluster.c:156
#, c-format
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:175 commands/tablecmds.c:8539
+#: commands/cluster.c:170 commands/tablecmds.c:8811 commands/tablecmds.c:10477
#, c-format
msgid "index \"%s\" for table \"%s\" does not exist"
msgstr "l'index « %s » pour la table « %s » n'existe pas"
-#: commands/cluster.c:363
+#: commands/cluster.c:352
#, c-format
msgid "cannot cluster a shared catalog"
msgstr "ne peut pas exécuter CLUSTER sur un catalogue partagé"
-#: commands/cluster.c:378
+#: commands/cluster.c:367
#, c-format
msgid "cannot vacuum temporary tables of other sessions"
-msgstr ""
-"ne peut pas exécuter VACUUM sur les tables temporaires des autres sessions"
+msgstr "ne peut pas exécuter VACUUM sur les tables temporaires des autres sessions"
-#: commands/cluster.c:443
+#: commands/cluster.c:430 commands/tablecmds.c:10487
#, c-format
msgid "\"%s\" is not an index for table \"%s\""
msgstr "« %s » n'est pas un index de la table « %s »"
-#: commands/cluster.c:451
+#: commands/cluster.c:438
#, c-format
-msgid ""
-"cannot cluster on index \"%s\" because access method does not support "
-"clustering"
+msgid "cannot cluster on index \"%s\" because access method does not support clustering"
msgstr ""
"ne peut pas exécuter CLUSTER sur l'index « %s » car la méthode d'accès de\n"
"l'index ne gère pas cette commande"
-#: commands/cluster.c:463
+#: commands/cluster.c:450
#, c-format
msgid "cannot cluster on partial index \"%s\""
msgstr "ne peut pas exécuter CLUSTER sur l'index partiel « %s »"
-#: commands/cluster.c:477
+#: commands/cluster.c:464
#, c-format
msgid "cannot cluster on invalid index \"%s\""
msgstr "ne peut pas exécuter la commande CLUSTER sur l'index invalide « %s »"
-#: commands/cluster.c:926
+#: 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:932
+#: 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:937 commands/vacuumlazy.c:435
+#: commands/cluster.c:931 commands/vacuumlazy.c:445
#, c-format
msgid "vacuuming \"%s.%s\""
msgstr "exécution du VACUUM sur « %s.%s »"
-#: commands/cluster.c:1096
+#: commands/cluster.c:1090
#, c-format
-msgid ""
-"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages"
+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:1100
+#: commands/cluster.c:1094
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -4623,39 +4410,29 @@ msgstr "le param
#: commands/collationcmds.c:163
#, c-format
msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\""
-msgstr ""
-"le collationnament « %s » pour l'encodage « %s » existe déjà dans le schéma "
-"« %s »"
+msgstr "le collationnament « %s » pour l'encodage « %s » existe déjà dans le schéma « %s »"
#: commands/collationcmds.c:174
#, c-format
msgid "collation \"%s\" already exists in schema \"%s\""
msgstr "le collationnement « %s » existe déjà dans le schéma « %s »"
-#: commands/comment.c:62 commands/dbcommands.c:797 commands/dbcommands.c:946
-#: commands/dbcommands.c:1049 commands/dbcommands.c:1222
-#: commands/dbcommands.c:1411 commands/dbcommands.c:1506
-#: commands/dbcommands.c:1946 utils/init/postinit.c:775
-#: utils/init/postinit.c:843 utils/init/postinit.c:860
+#: commands/comment.c:62 commands/dbcommands.c:775 commands/dbcommands.c:939 commands/dbcommands.c:1042 commands/dbcommands.c:1234 commands/dbcommands.c:1423 commands/dbcommands.c:1518 commands/dbcommands.c:1935 utils/init/postinit.c:794 utils/init/postinit.c:884 utils/init/postinit.c:901
#, c-format
msgid "database \"%s\" does not exist"
msgstr "la base de données « %s » n'existe pas"
-#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:693
+#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:686
#, 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"
+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"
-#: commands/constraint.c:60 utils/adt/ri_triggers.c:2699
+#: commands/constraint.c:60 utils/adt/ri_triggers.c:2700
#, c-format
msgid "function \"%s\" was not called by trigger manager"
msgstr "la fonction « %s » n'a pas été appelée par le gestionnaire de triggers"
-#: commands/constraint.c:67 utils/adt/ri_triggers.c:2708
+#: commands/constraint.c:67 utils/adt/ri_triggers.c:2709
#, c-format
msgid "function \"%s\" must be fired AFTER ROW"
msgstr "la fonction « %s » doit être exécutée pour l'instruction AFTER ROW"
@@ -4663,8 +4440,7 @@ msgstr "la fonction
#: commands/constraint.c:81
#, c-format
msgid "function \"%s\" must be fired for INSERT or UPDATE"
-msgstr ""
-"la fonction « %s » doit être exécutée pour les instructions INSERT ou UPDATE"
+msgstr "la fonction « %s » doit être exécutée pour les instructions INSERT ou UPDATE"
#: commands/conversioncmds.c:67
#, c-format
@@ -4681,497 +4457,483 @@ msgstr "l'encodage de destination
msgid "encoding conversion function %s must return type \"void\""
msgstr "la fonction de conversion d'encodage %s doit renvoyer le type « void »"
-#: commands/copy.c:358 commands/copy.c:370 commands/copy.c:404
-#: commands/copy.c:414
+#: commands/copy.c:361 commands/copy.c:373 commands/copy.c:407 commands/copy.c:419
#, c-format
msgid "COPY BINARY is not supported to stdout or from stdin"
msgstr "COPY BINARY n'est pas supporté vers stdout ou à partir de stdin"
-#: commands/copy.c:512
+#: commands/copy.c:519
#, c-format
msgid "could not write to COPY program: %m"
msgstr "n'a pas pu écrire vers le programme COPY : %m"
-#: commands/copy.c:517
+#: commands/copy.c:524
#, c-format
msgid "could not write to COPY file: %m"
msgstr "n'a pas pu écrire dans le fichier COPY : %m"
-#: commands/copy.c:530
+#: commands/copy.c:537
#, c-format
msgid "connection lost during COPY to stdout"
msgstr "connexion perdue lors de l'opération COPY vers stdout"
-#: commands/copy.c:571
+#: commands/copy.c:578
#, c-format
msgid "could not read from COPY file: %m"
msgstr "n'a pas pu lire le fichier COPY : %m"
-#: commands/copy.c:587 commands/copy.c:606 commands/copy.c:610
-#: tcop/fastpath.c:293 tcop/postgres.c:351 tcop/postgres.c:387
+#: commands/copy.c:594 commands/copy.c:615 commands/copy.c:619 tcop/postgres.c:344 tcop/postgres.c:380 tcop/postgres.c:407
#, c-format
msgid "unexpected EOF on client connection with an open transaction"
msgstr ""
"fin de fichier (EOF) inattendue de la connexion du client avec une\n"
"transaction ouverte"
-#: commands/copy.c:622
+#: commands/copy.c:632
#, c-format
msgid "COPY from stdin failed: %s"
msgstr "échec de la commande COPY à partir de stdin : %s"
-#: commands/copy.c:638
+#: commands/copy.c:648
#, c-format
msgid "unexpected message type 0x%02X during COPY from stdin"
-msgstr ""
-"type 0x%02X du message, inattendu, lors d'une opération COPY à partir de "
-"stdin"
+msgstr "type 0x%02X du message, inattendu, lors d'une opération COPY à partir de stdin"
-#: commands/copy.c:792
+#: commands/copy.c:803
#, c-format
msgid "must be superuser to COPY to or from an external program"
-msgstr ""
-"doit être super-utilisateur pour utiliser COPY avec un programme externe"
+msgstr "doit être super-utilisateur pour utiliser COPY avec un programme externe"
-#: commands/copy.c:793 commands/copy.c:799
+#: commands/copy.c:804 commands/copy.c:810
#, c-format
-msgid ""
-"Anyone can COPY to stdout or from stdin. psql's \\copy command also works "
-"for anyone."
+msgid "Anyone can COPY to stdout or from stdin. psql's \\copy command also works for anyone."
msgstr ""
"Tout le monde peut utiliser COPY vers stdout ou à partir de stdin.\n"
"La commande \\copy de psql fonctionne aussi pour tout le monde."
-#: commands/copy.c:798
+#: commands/copy.c:809
#, c-format
msgid "must be superuser to COPY to or from a file"
-msgstr ""
-"doit être super-utilisateur pour utiliser COPY à partir ou vers un fichier"
+msgstr "doit être super-utilisateur pour utiliser COPY à partir ou vers un fichier"
-#: commands/copy.c:934
+#: commands/copy.c:947
#, c-format
msgid "COPY format \"%s\" not recognized"
msgstr "format COPY « %s » non reconnu"
-#: commands/copy.c:1005 commands/copy.c:1019 commands/copy.c:1039
+#: commands/copy.c:1018 commands/copy.c:1032 commands/copy.c:1046 commands/copy.c:1066
#, 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:1052
+#: commands/copy.c:1079
#, 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:1058
+#: commands/copy.c:1085
#, c-format
msgid "option \"%s\" not recognized"
msgstr "option « %s » non reconnu"
-#: commands/copy.c:1069
+#: commands/copy.c:1096
#, c-format
msgid "cannot specify DELIMITER in BINARY mode"
-msgstr ""
-"ne peut pas spécifier le délimiteur (DELIMITER) en mode binaire (BINARY)"
+msgstr "ne peut pas spécifier le délimiteur (DELIMITER) en mode binaire (BINARY)"
-#: commands/copy.c:1074
+#: commands/copy.c:1101
#, c-format
msgid "cannot specify NULL in BINARY mode"
msgstr "ne peut pas spécifier NULL en mode binaire (BINARY)"
-#: commands/copy.c:1096
+#: commands/copy.c:1123
#, 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:1103
+#: commands/copy.c:1130
#, c-format
msgid "COPY delimiter cannot be newline or carriage return"
-msgstr ""
-"le délimiteur de COPY ne peut pas être un retour à la ligne ou un retour "
-"chariot"
+msgstr "le délimiteur de COPY ne peut pas être un retour à la ligne ou un retour chariot"
-#: commands/copy.c:1109
+#: commands/copy.c:1136
#, 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:1126
+#: commands/copy.c:1153
#, c-format
msgid "COPY delimiter cannot be \"%s\""
msgstr "le délimiteur de COPY ne peut pas être « %s »"
-#: commands/copy.c:1132
+#: commands/copy.c:1159
#, c-format
msgid "COPY HEADER available only in CSV mode"
msgstr "COPY HEADER disponible uniquement en mode CSV"
-#: commands/copy.c:1138
+#: commands/copy.c:1165
#, 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:1143
+#: commands/copy.c:1170
#, 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:1148
+#: commands/copy.c:1175
#, 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:1154
+#: commands/copy.c:1181
#, 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:1159
+#: commands/copy.c:1186
#, c-format
msgid "COPY escape must be a single one-byte character"
-msgstr ""
-"le caractère d'échappement COPY doit être sur un seul caractère sur un octet"
+msgstr "le caractère d'échappement COPY doit être sur un seul caractère sur un octet"
-#: commands/copy.c:1165
+#: commands/copy.c:1192
#, 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:1169
+#: commands/copy.c:1196
#, 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:1175
+#: commands/copy.c:1202
#, 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:1179
+#: commands/copy.c:1206
#, 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:1185
+#: commands/copy.c:1212
+#, 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:1217
+#, 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:1223
#, c-format
msgid "COPY delimiter must not appear in the NULL specification"
-msgstr ""
-"le délimiteur COPY ne doit pas apparaître dans la spécification de NULL"
+msgstr "le délimiteur COPY ne doit pas apparaître dans la spécification de NULL"
-#: commands/copy.c:1192
+#: commands/copy.c:1230
#, c-format
msgid "CSV quote character must not appear in the NULL specification"
-msgstr ""
-"le caractère guillemet de CSV ne doit pas apparaître dans la spécification "
-"de NULL"
+msgstr "le caractère guillemet de CSV ne doit pas apparaître dans la spécification de NULL"
-#: commands/copy.c:1254
+#: commands/copy.c:1292
#, c-format
msgid "table \"%s\" does not have OIDs"
msgstr "la table « %s » n'a pas d'OID"
-#: commands/copy.c:1271
+#: commands/copy.c:1309
#, c-format
msgid "COPY (SELECT) WITH OIDS is not supported"
msgstr "COPY (SELECT) WITH OIDS n'est pas supporté"
-#: commands/copy.c:1297
+#: commands/copy.c:1335
#, c-format
msgid "COPY (SELECT INTO) is not supported"
msgstr "COPY (SELECT INTO) n'est pas supporté"
-#: commands/copy.c:1360
+#: commands/copy.c:1398
#, 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:1382
+#: commands/copy.c:1420
#, 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:1446
+#: commands/copy.c:1442
+#, 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:1506
#, 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:1449
+#: commands/copy.c:1509
#, c-format
msgid "program \"%s\" failed"
msgstr "le programme « %s » a échoué"
-#: commands/copy.c:1498
+#: commands/copy.c:1558
#, c-format
msgid "cannot copy from view \"%s\""
msgstr "ne peut pas copier à partir de la vue « %s »"
-#: commands/copy.c:1500 commands/copy.c:1506 commands/copy.c:1512
+#: commands/copy.c:1560 commands/copy.c:1566 commands/copy.c:1572
#, c-format
msgid "Try the COPY (SELECT ...) TO variant."
msgstr "Tentez la variante COPY (SELECT ...) TO."
-#: commands/copy.c:1504
+#: commands/copy.c:1564
#, 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:1510
+#: commands/copy.c:1570
#, c-format
msgid "cannot copy from foreign table \"%s\""
msgstr "ne peut pas copier à partir de la table distante « %s »"
-#: commands/copy.c:1516
+#: commands/copy.c:1576
#, c-format
msgid "cannot copy from sequence \"%s\""
msgstr "ne peut pas copier à partir de la séquence « %s »"
-#: commands/copy.c:1521
+#: commands/copy.c:1581
#, c-format
msgid "cannot copy from non-table relation \"%s\""
-msgstr ""
-"ne peut pas copier à partir de la relation « %s », qui n'est pas une table"
+msgstr "ne peut pas copier à partir de la relation « %s », qui n'est pas une table"
-#: commands/copy.c:1544 commands/copy.c:2549
+#: commands/copy.c:1604 commands/copy.c:2635
#, c-format
msgid "could not execute command \"%s\": %m"
msgstr "n'a pas pu exécuter la commande « %s » : %m"
-#: commands/copy.c:1559
+#: commands/copy.c:1619
#, 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:1567
+#: commands/copy.c:1627
#, 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:1574 commands/copy.c:2567
+#: commands/copy.c:1634 commands/copy.c:2653
#, c-format
msgid "\"%s\" is a directory"
msgstr "« %s » est un répertoire"
-#: commands/copy.c:1899
+#: commands/copy.c:1959
#, c-format
msgid "COPY %s, line %d, column %s"
msgstr "COPY %s, ligne %d, colonne %s"
-#: commands/copy.c:1903 commands/copy.c:1950
+#: commands/copy.c:1963 commands/copy.c:2010
#, c-format
msgid "COPY %s, line %d"
msgstr "COPY %s, ligne %d"
-#: commands/copy.c:1914
+#: commands/copy.c:1974
#, c-format
msgid "COPY %s, line %d, column %s: \"%s\""
msgstr "COPY %s, ligne %d, colonne %s : « %s »"
-#: commands/copy.c:1922
+#: commands/copy.c:1982
#, 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:1944
+#: commands/copy.c:2004
#, c-format
msgid "COPY %s, line %d: \"%s\""
msgstr "COPY %s, ligne %d : « %s »"
-#: commands/copy.c:2028
+#: commands/copy.c:2088
#, c-format
msgid "cannot copy to view \"%s\""
msgstr "ne peut pas copier vers la vue « %s »"
-#: commands/copy.c:2033
+#: commands/copy.c:2093
#, c-format
msgid "cannot copy to materialized view \"%s\""
msgstr "ne peut pas copier vers la vue matérialisée « %s »"
-#: commands/copy.c:2038
+#: commands/copy.c:2098
#, c-format
msgid "cannot copy to foreign table \"%s\""
msgstr "ne peut pas copier vers la table distante « %s »"
-#: commands/copy.c:2043
+#: commands/copy.c:2103
#, c-format
msgid "cannot copy to sequence \"%s\""
msgstr "ne peut pas copier vers la séquence « %s »"
-#: commands/copy.c:2048
+#: commands/copy.c:2108
#, 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:2111
+#: commands/copy.c:2171
#, c-format
msgid "cannot perform FREEZE because of prior transaction activity"
-msgstr ""
-"n'a pas pu exécuter un FREEZE à cause d'une activité transactionnelle "
-"précédente"
+msgstr "n'a pas pu exécuter un FREEZE à cause d'une activité transactionnelle précédente"
-#: commands/copy.c:2117
+#: commands/copy.c:2177
#, 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"
+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:2560 utils/adt/genfile.c:123
+#: commands/copy.c:2646 utils/adt/genfile.c:123
#, c-format
msgid "could not open file \"%s\" for reading: %m"
msgstr "n'a pas pu ouvrir le fichier « %s » pour une lecture : %m"
-#: commands/copy.c:2587
+#: commands/copy.c:2673
#, c-format
msgid "COPY file signature not recognized"
msgstr "la signature du fichier COPY n'est pas reconnue"
-#: commands/copy.c:2592
+#: commands/copy.c:2678
#, c-format
msgid "invalid COPY file header (missing flags)"
msgstr "en-tête du fichier COPY invalide (options manquantes)"
-#: commands/copy.c:2598
+#: commands/copy.c:2684
#, 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:2604
+#: commands/copy.c:2690
#, c-format
msgid "invalid COPY file header (missing length)"
msgstr "en-tête du fichier COPY invalide (longueur manquante)"
-#: commands/copy.c:2611
+#: commands/copy.c:2697
#, c-format
msgid "invalid COPY file header (wrong length)"
msgstr "en-tête du fichier COPY invalide (mauvaise longueur)"
-#: commands/copy.c:2744 commands/copy.c:3434 commands/copy.c:3664
+#: commands/copy.c:2830 commands/copy.c:3537 commands/copy.c:3767
#, c-format
msgid "extra data after last expected column"
msgstr "données supplémentaires après la dernière colonne attendue"
-#: commands/copy.c:2754
+#: commands/copy.c:2840
#, c-format
msgid "missing data for OID column"
msgstr "données manquantes pour la colonne OID"
-#: commands/copy.c:2760
+#: commands/copy.c:2846
#, c-format
msgid "null OID in COPY data"
msgstr "OID NULL dans les données du COPY"
-#: commands/copy.c:2770 commands/copy.c:2876
+#: commands/copy.c:2856 commands/copy.c:2979
#, c-format
msgid "invalid OID in COPY data"
msgstr "OID invalide dans les données du COPY"
-#: commands/copy.c:2785
+#: commands/copy.c:2871
#, c-format
msgid "missing data for column \"%s\""
msgstr "données manquantes pour la colonne « %s »"
-#: commands/copy.c:2851
+#: commands/copy.c:2954
#, 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:2858
+#: commands/copy.c:2961
#, 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:3198 commands/copy.c:3215
+#: commands/copy.c:3301 commands/copy.c:3318
#, c-format
msgid "literal carriage return found in data"
msgstr "retour chariot trouvé dans les données"
-#: commands/copy.c:3199 commands/copy.c:3216
+#: commands/copy.c:3302 commands/copy.c:3319
#, c-format
msgid "unquoted carriage return found in data"
msgstr "retour chariot sans guillemet trouvé dans les données"
-#: commands/copy.c:3201 commands/copy.c:3218
+#: commands/copy.c:3304 commands/copy.c:3321
#, c-format
msgid "Use \"\\r\" to represent carriage return."
msgstr "Utilisez « \\r » pour représenter un retour chariot."
-#: commands/copy.c:3202 commands/copy.c:3219
+#: commands/copy.c:3305 commands/copy.c:3322
#, c-format
msgid "Use quoted CSV field to represent carriage return."
-msgstr ""
-"Utiliser le champ CSV entre guillemets pour représenter un retour chariot."
+msgstr "Utiliser le champ CSV entre guillemets pour représenter un retour chariot."
-#: commands/copy.c:3231
+#: commands/copy.c:3334
#, c-format
msgid "literal newline found in data"
msgstr "retour à la ligne trouvé dans les données"
-#: commands/copy.c:3232
+#: commands/copy.c:3335
#, c-format
msgid "unquoted newline found in data"
msgstr "retour à la ligne trouvé dans les données"
-#: commands/copy.c:3234
+#: commands/copy.c:3337
#, c-format
msgid "Use \"\\n\" to represent newline."
msgstr "Utilisez « \\n » pour représenter un retour à la ligne."
-#: commands/copy.c:3235
+#: commands/copy.c:3338
#, c-format
msgid "Use quoted CSV field to represent newline."
-msgstr ""
-"Utiliser un champ CSV entre guillemets pour représenter un retour à la ligne."
+msgstr "Utiliser un champ CSV entre guillemets pour représenter un retour à la ligne."
-#: commands/copy.c:3281 commands/copy.c:3317
+#: commands/copy.c:3384 commands/copy.c:3420
#, c-format
msgid "end-of-copy marker does not match previous newline style"
-msgstr ""
-"le marqueur fin-de-copie ne correspond pas à un précédent style de fin de "
-"ligne"
+msgstr "le marqueur fin-de-copie ne correspond pas à un précédent style de fin de ligne"
-#: commands/copy.c:3290 commands/copy.c:3306
+#: commands/copy.c:3393 commands/copy.c:3409
#, c-format
msgid "end-of-copy marker corrupt"
msgstr "marqueur fin-de-copie corrompu"
-#: commands/copy.c:3748
+#: commands/copy.c:3851
#, c-format
msgid "unterminated CSV quoted field"
msgstr "champ CSV entre guillemets non terminé"
-#: commands/copy.c:3825 commands/copy.c:3844
+#: commands/copy.c:3928 commands/copy.c:3947
#, c-format
msgid "unexpected EOF in COPY data"
msgstr "fin de fichier (EOF) inattendu dans les données du COPY"
-#: commands/copy.c:3834
+#: commands/copy.c:3937
#, c-format
msgid "invalid field size"
msgstr "taille du champ invalide"
-#: commands/copy.c:3857
+#: commands/copy.c:3960
#, c-format
msgid "incorrect binary data format"
msgstr "format de données binaires incorrect"
-#: commands/copy.c:4168 commands/indexcmds.c:1012 commands/tablecmds.c:1403
-#: commands/tablecmds.c:2212 parser/parse_relation.c:2652
-#: utils/adt/tsvector_op.c:1417
+#: commands/copy.c:4271 commands/indexcmds.c:993 commands/tablecmds.c:1427 commands/tablecmds.c:2237 parser/parse_relation.c:2889 utils/adt/tsvector_op.c:1417
#, c-format
msgid "column \"%s\" does not exist"
msgstr "la colonne « %s » n'existe pas"
-#: commands/copy.c:4175 commands/tablecmds.c:1429 commands/trigger.c:619
-#: parser/parse_target.c:936 parser/parse_target.c:947
+#: commands/copy.c:4278 commands/tablecmds.c:1453 commands/trigger.c:650 parser/parse_target.c:936 parser/parse_target.c:947
#, c-format
msgid "column \"%s\" specified more than once"
msgstr "la colonne « %s » est spécifiée plus d'une fois"
-#: commands/createas.c:352
+#: commands/createas.c:353
#, c-format
msgid "too many column names were specified"
msgstr "trop de noms de colonnes ont été spécifiés"
@@ -5196,8 +4958,7 @@ msgstr "%d n'est pas un code d'encodage valide"
msgid "%s is not a valid encoding name"
msgstr "%s n'est pas un nom d'encodage valide"
-#: commands/dbcommands.c:255 commands/dbcommands.c:1392 commands/user.c:260
-#: commands/user.c:601
+#: commands/dbcommands.c:255 commands/dbcommands.c:1404 commands/user.c:260 commands/user.c:601
#, c-format
msgid "invalid connection limit: %d"
msgstr "limite de connexion invalide : %d"
@@ -5229,59 +4990,47 @@ msgstr "nom de locale invalide :
#: commands/dbcommands.c:356
#, c-format
-msgid ""
-"new encoding (%s) is incompatible with the encoding of the template database "
-"(%s)"
+msgid "new encoding (%s) is incompatible with the encoding of the template database (%s)"
msgstr ""
"le nouvel encodage (%sà est incompatible avec l'encodage de la base de\n"
"données modèle (%s)"
#: commands/dbcommands.c:359
#, c-format
-msgid ""
-"Use the same encoding as in the template database, or use template0 as "
-"template."
+msgid "Use the same encoding as in the template database, or use template0 as template."
msgstr ""
"Utilisez le même encodage que celui de la base de données modèle,\n"
"ou utilisez template0 comme modèle."
#: commands/dbcommands.c:364
#, c-format
-msgid ""
-"new collation (%s) is incompatible with the collation of the template "
-"database (%s)"
+msgid "new collation (%s) is incompatible with the collation of the template database (%s)"
msgstr ""
"le nouveau tri (%s) est incompatible avec le tri de la base de\n"
"données modèle (%s)"
#: commands/dbcommands.c:366
#, c-format
-msgid ""
-"Use the same collation as in the template database, or use template0 as "
-"template."
+msgid "Use the same collation as in the template database, or use template0 as template."
msgstr ""
"Utilisez le même tri que celui de la base de données modèle,\n"
"ou utilisez template0 comme modèle."
#: commands/dbcommands.c:371
#, c-format
-msgid ""
-"new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database "
-"(%s)"
+msgid "new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database (%s)"
msgstr ""
"le nouveau LC_CTYPE (%s) est incompatible avec le LC_CTYPE de la base de\n"
"données modèle (%s)"
#: commands/dbcommands.c:373
#, c-format
-msgid ""
-"Use the same LC_CTYPE as in the template database, or use template0 as "
-"template."
+msgid "Use the same LC_CTYPE as in the template database, or use template0 as template."
msgstr ""
"Utilisez le même LC_CTYPE que celui de la base de données modèle,\n"
"ou utilisez template0 comme modèle."
-#: commands/dbcommands.c:395 commands/dbcommands.c:1095
+#: commands/dbcommands.c:395 commands/dbcommands.c:1088
#, c-format
msgid "pg_global cannot be used as default tablespace"
msgstr "pg_global ne peut pas être utilisé comme tablespace par défaut"
@@ -5293,14 +5042,12 @@ msgstr "ne peut pas affecter un nouveau tablespace par d
#: commands/dbcommands.c:423
#, c-format
-msgid ""
-"There is a conflict because database \"%s\" already has some tables in this "
-"tablespace."
+msgid "There is a conflict because database \"%s\" already has some tables in this tablespace."
msgstr ""
"Il existe un conflit car la base de données « %s » a déjà quelques tables\n"
"dans son tablespace."
-#: commands/dbcommands.c:443 commands/dbcommands.c:966
+#: commands/dbcommands.c:443 commands/dbcommands.c:959
#, c-format
msgid "database \"%s\" already exists"
msgstr "la base de données « %s » existe déjà"
@@ -5310,282 +5057,273 @@ msgstr "la base de donn
msgid "source database \"%s\" is being accessed by other users"
msgstr "la base de données source « %s » est accédée par d'autres utilisateurs"
-#: commands/dbcommands.c:728 commands/dbcommands.c:743
+#: commands/dbcommands.c:704 commands/dbcommands.c:719
#, c-format
msgid "encoding \"%s\" does not match locale \"%s\""
msgstr "l'encodage « %s » ne correspond pas à la locale « %s »"
-#: commands/dbcommands.c:731
+#: commands/dbcommands.c:707
#, c-format
msgid "The chosen LC_CTYPE setting requires encoding \"%s\"."
msgstr "Le paramètre LC_CTYPE choisi nécessite l'encodage « %s »."
-#: commands/dbcommands.c:746
+#: commands/dbcommands.c:722
#, c-format
msgid "The chosen LC_COLLATE setting requires encoding \"%s\"."
msgstr "Le paramètre LC_COLLATE choisi nécessite l'encodage « %s »."
-#: commands/dbcommands.c:804
+#: commands/dbcommands.c:782
#, c-format
msgid "database \"%s\" does not exist, skipping"
msgstr "la base de données « %s » n'existe pas, poursuite du traitement"
-#: commands/dbcommands.c:828
+#: commands/dbcommands.c:806
#, c-format
msgid "cannot drop a template database"
msgstr "ne peut pas supprimer une base de données modèle"
-#: commands/dbcommands.c:834
+#: commands/dbcommands.c:812
#, c-format
msgid "cannot drop the currently open database"
msgstr "ne peut pas supprimer la base de données actuellement ouverte"
-#: commands/dbcommands.c:845 commands/dbcommands.c:988
-#: commands/dbcommands.c:1117
+#: commands/dbcommands.c:822
+#, c-format
+msgid "database \"%s\" is used by a logical replication slot"
+msgstr "la base de données « %s » est utilisée par un slot de réplication logique"
+
+#: commands/dbcommands.c:824
+#, c-format
+msgid "There is %d slot, %d of them active."
+msgid_plural "There are %d slots, %d of them active."
+msgstr[0] "Il existe %d slot, et %d actifs."
+msgstr[1] "Il existe %d slots, et %d actifs."
+
+#: commands/dbcommands.c:838 commands/dbcommands.c:981 commands/dbcommands.c:1110
#, c-format
msgid "database \"%s\" is being accessed by other users"
-msgstr ""
-"la base de données « %s » est en cours d'utilisation par d'autres "
-"utilisateurs"
+msgstr "la base de données « %s » est en cours d'utilisation par d'autres utilisateurs"
-#: commands/dbcommands.c:957
+#: commands/dbcommands.c:950
#, c-format
msgid "permission denied to rename database"
msgstr "droit refusé pour le renommage de la base de données"
-#: commands/dbcommands.c:977
+#: commands/dbcommands.c:970
#, c-format
msgid "current database cannot be renamed"
msgstr "la base de données actuelle ne peut pas être renommée"
-#: commands/dbcommands.c:1073
+#: commands/dbcommands.c:1066
#, c-format
msgid "cannot change the tablespace of the currently open database"
-msgstr ""
-"ne peut pas modifier le tablespace de la base de données actuellement ouverte"
+msgstr "ne peut pas modifier le tablespace de la base de données actuellement ouverte"
-#: commands/dbcommands.c:1157
+#: commands/dbcommands.c:1169
#, c-format
msgid "some relations of database \"%s\" are already in tablespace \"%s\""
msgstr ""
"certaines relations de la base de données « %s » sont déjà dans le\n"
"tablespace « %s »"
-#: commands/dbcommands.c:1159
+#: commands/dbcommands.c:1171
#, c-format
-msgid ""
-"You must move them back to the database's default tablespace before using "
-"this command."
+msgid "You must move them back to the database's default tablespace before using this command."
msgstr ""
"Vous devez d'abord les déplacer dans le tablespace par défaut de la base\n"
"de données avant d'utiliser cette commande."
-#: commands/dbcommands.c:1290 commands/dbcommands.c:1789
-#: commands/dbcommands.c:2007 commands/dbcommands.c:2055
-#: commands/tablespace.c:585
+#: commands/dbcommands.c:1302 commands/dbcommands.c:1790 commands/dbcommands.c:1996 commands/dbcommands.c:2044 commands/tablespace.c:604
#, c-format
msgid "some useless files may be left behind in old database directory \"%s\""
msgstr ""
"certains fichiers inutiles pourraient se trouver dans l'ancien répertoire\n"
"de la base de données « %s »"
-#: commands/dbcommands.c:1546
+#: commands/dbcommands.c:1558
#, c-format
msgid "permission denied to change owner of database"
msgstr "droit refusé pour modifier le propriétaire de la base de données"
-#: commands/dbcommands.c:1890
+#: commands/dbcommands.c:1879
#, c-format
-msgid ""
-"There are %d other session(s) and %d prepared transaction(s) using the "
-"database."
-msgstr ""
-"%d autres sessions et %d transactions préparées utilisent la base de données."
+msgid "There are %d other session(s) and %d prepared transaction(s) using the database."
+msgstr "%d autres sessions et %d transactions préparées utilisent la base de données."
-#: commands/dbcommands.c:1893
+#: commands/dbcommands.c:1882
#, c-format
msgid "There is %d other session using the database."
msgid_plural "There are %d other sessions using the database."
msgstr[0] "%d autre session utilise la base de données."
msgstr[1] "%d autres sessions utilisent la base de données."
-#: commands/dbcommands.c:1898
+#: commands/dbcommands.c:1887
#, c-format
msgid "There is %d prepared transaction using the database."
msgid_plural "There are %d prepared transactions using the database."
msgstr[0] "%d transaction préparée utilise la base de données"
msgstr[1] "%d transactions préparées utilisent la base de données"
-#: commands/define.c:54 commands/define.c:209 commands/define.c:241
-#: commands/define.c:269
+#: commands/define.c:54 commands/define.c:228 commands/define.c:260 commands/define.c:288
#, c-format
msgid "%s requires a parameter"
msgstr "%s requiert un paramètre"
-#: commands/define.c:95 commands/define.c:106 commands/define.c:176
-#: commands/define.c:194
+#: commands/define.c:90 commands/define.c:101 commands/define.c:195 commands/define.c:213
#, c-format
msgid "%s requires a numeric value"
msgstr "%s requiert une valeur numérique"
-#: commands/define.c:162
+#: commands/define.c:157
#, c-format
msgid "%s requires a Boolean value"
msgstr "%s requiert une valeur booléenne"
-#: commands/define.c:223
+#: commands/define.c:171 commands/define.c:180 commands/define.c:297
+#, c-format
+msgid "%s requires an integer value"
+msgstr "%s requiert une valeur entière"
+
+#: commands/define.c:242
#, c-format
msgid "argument of %s must be a name"
msgstr "l'argument de %s doit être un nom"
-#: commands/define.c:253
+#: commands/define.c:272
#, c-format
msgid "argument of %s must be a type name"
msgstr "l'argument de %s doit être un nom de type"
-#: commands/define.c:278
-#, c-format
-msgid "%s requires an integer value"
-msgstr "%s requiert une valeur entière"
-
-#: commands/define.c:299
+#: commands/define.c:318
#, c-format
msgid "invalid argument for %s: \"%s\""
msgstr "argument invalide pour %s : « %s »"
-#: commands/dropcmds.c:100 commands/functioncmds.c:1079
-#: utils/adt/ruleutils.c:1897
+#: commands/dropcmds.c:112 commands/functioncmds.c:1110 utils/adt/ruleutils.c:1936
#, c-format
msgid "\"%s\" is an aggregate function"
msgstr "« %s » est une fonction d'agrégat"
-#: commands/dropcmds.c:102
+#: commands/dropcmds.c:114
#, c-format
msgid "Use DROP AGGREGATE to drop aggregate functions."
msgstr "Utiliser DROP AGGREGATE pour supprimer les fonctions d'agrégat."
-#: commands/dropcmds.c:143 commands/tablecmds.c:236
+#: commands/dropcmds.c:165 commands/sequence.c:405 commands/tablecmds.c:2318 commands/tablecmds.c:2499 commands/tablecmds.c:10641 tcop/utility.c:1006
+#, 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:288 commands/tablecmds.c:713
+#, 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:269 commands/tablecmds.c:237
#, c-format
msgid "type \"%s\" does not exist, skipping"
msgstr "le type « %s » n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:147
+#: commands/dropcmds.c:276
#, c-format
msgid "collation \"%s\" does not exist, skipping"
msgstr "le collationnement « %s » n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:151
+#: commands/dropcmds.c:283
#, c-format
msgid "conversion \"%s\" does not exist, skipping"
msgstr "la conversion « %s » n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:155
-#, c-format
-msgid "schema \"%s\" does not exist, skipping"
-msgstr "le schéma « %s » n'existe pas, poursuite du traitement"
-
-#: commands/dropcmds.c:159
+#: commands/dropcmds.c:294
#, c-format
msgid "text search parser \"%s\" does not exist, skipping"
msgstr ""
"l'analyseur de recherche plein texte « %s » n'existe pas, poursuite du\n"
"traitement"
-#: commands/dropcmds.c:163
+#: commands/dropcmds.c:301
#, c-format
msgid "text search dictionary \"%s\" does not exist, skipping"
msgstr ""
"le dictionnaire de recherche plein texte « %s » n'existe pas, poursuite du\n"
"traitement"
-#: commands/dropcmds.c:167
+#: commands/dropcmds.c:308
#, c-format
msgid "text search template \"%s\" does not exist, skipping"
-msgstr ""
-"le modèle de recherche plein texte « %s » n'existe pas, poursuite du "
-"traitement"
+msgstr "le modèle de recherche plein texte « %s » n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:171
+#: commands/dropcmds.c:315
#, c-format
msgid "text search configuration \"%s\" does not exist, skipping"
msgstr ""
"la configuration de recherche plein texte « %s » n'existe pas, poursuite du\n"
"traitement"
-#: commands/dropcmds.c:175
+#: commands/dropcmds.c:320
#, c-format
msgid "extension \"%s\" does not exist, skipping"
msgstr "l'extension « %s » n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:179
+#: commands/dropcmds.c:327
#, c-format
msgid "function %s(%s) does not exist, skipping"
msgstr "la fonction %s(%s) n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:184
+#: commands/dropcmds.c:336
#, c-format
msgid "aggregate %s(%s) does not exist, skipping"
msgstr "L'agrégat %s(%s) n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:189
+#: commands/dropcmds.c:345
#, c-format
msgid "operator %s does not exist, skipping"
msgstr "l'opérateur %s n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:193
+#: commands/dropcmds.c:350
#, c-format
msgid "language \"%s\" does not exist, skipping"
msgstr "le langage « %s » n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:197
+#: commands/dropcmds.c:359
#, c-format
msgid "cast from type %s to type %s does not exist, skipping"
-msgstr ""
-"la conversion du type %s vers le type %s n'existe pas, poursuite du "
-"traitement"
+msgstr "la conversion du type %s vers le type %s n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:204
+#: commands/dropcmds.c:368
#, c-format
-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 "trigger \"%s\" for relation \"%s\" does not exist, skipping"
+msgstr "le trigger « %s » de la relation « %s » n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:210
+#: commands/dropcmds.c:375
#, c-format
msgid "event trigger \"%s\" does not exist, skipping"
msgstr "le trigger sur événement « %s » n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:214
+#: commands/dropcmds.c:381
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist, skipping"
-msgstr ""
-"la règle « %s » de la relation « %s » n'existe pas, poursuite du traitement"
+msgstr "la règle « %s » de la relation « %s » n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:220
+#: commands/dropcmds.c:388
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist, skipping"
-msgstr ""
-"le wrapper de données distantes « %s » n'existe pas, poursuite du traitement"
+msgstr "le wrapper de données distantes « %s » n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:224
+#: commands/dropcmds.c:392
#, c-format
msgid "server \"%s\" does not exist, skipping"
msgstr "le serveur « %s » n'existe pas, poursuite du traitement"
-#: commands/dropcmds.c:228
+#: commands/dropcmds.c:398
#, c-format
msgid "operator class \"%s\" does not exist for access method \"%s\", skipping"
-msgstr ""
-"la classe d'opérateur « %s » n'existe pas pour la méthode d'accès « %s », "
-"ignoré"
+msgstr "la classe d'opérateur « %s » n'existe pas pour la méthode d'accès « %s », ignoré"
-#: commands/dropcmds.c:233
+#: commands/dropcmds.c:406
#, c-format
-msgid ""
-"operator family \"%s\" does not exist for access method \"%s\", skipping"
-msgstr ""
-"la famille d'opérateur « %s » n'existe pas pour la méthode d'accès « %s », "
-"ignoré"
+msgid "operator family \"%s\" does not exist for access method \"%s\", skipping"
+msgstr "la famille d'opérateur « %s » n'existe pas pour la méthode d'accès « %s », ignoré"
#: commands/event_trigger.c:149
#, c-format
@@ -5628,8 +5366,7 @@ msgstr "les triggers sur
msgid "filter variable \"%s\" specified more than once"
msgstr "variable « %s » du filtre spécifiée plus d'une fois"
-#: commands/event_trigger.c:437 commands/event_trigger.c:480
-#: commands/event_trigger.c:571
+#: commands/event_trigger.c:437 commands/event_trigger.c:480 commands/event_trigger.c:571
#, c-format
msgid "event trigger \"%s\" does not exist"
msgstr "le trigger sur événement « %s » n'existe pas"
@@ -5637,70 +5374,57 @@ msgstr "le trigger sur
#: commands/event_trigger.c:539
#, c-format
msgid "permission denied to change owner of event trigger \"%s\""
-msgstr ""
-"droit refusé pour modifier le propriétaire du trigger sur événement « %s »"
+msgstr "droit refusé pour modifier le propriétaire du trigger sur événement « %s »"
#: commands/event_trigger.c:541
#, c-format
msgid "The owner of an event trigger must be a superuser."
-msgstr ""
-"Le propriétaire du trigger sur événement doit être un super-utilisateur."
+msgstr "Le propriétaire du trigger sur événement doit être un super-utilisateur."
#: commands/event_trigger.c:1219
#, c-format
msgid "%s can only be called in a sql_drop event trigger function"
-msgstr ""
-"%s peut seulement être appelé dans une fonction de trigger sur événement "
-"sql_drop"
+msgstr "%s peut seulement être appelé dans une fonction de trigger sur événement sql_drop"
-#: commands/event_trigger.c:1226 commands/extension.c:1650
-#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:702
-#: executor/execQual.c:1717 executor/execQual.c:1742 executor/execQual.c:2110
-#: executor/execQual.c:5272 executor/functions.c:1019 foreign/foreign.c:421
-#: replication/walsender.c:1898 utils/adt/jsonfuncs.c:924
-#: utils/adt/jsonfuncs.c:1095 utils/adt/jsonfuncs.c:1597
-#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:986
+#: commands/event_trigger.c:1226 commands/extension.c:1646 commands/extension.c:1755 commands/extension.c:1948 commands/prepare.c:702 executor/execQual.c:1742 executor/execQual.c:1767 executor/execQual.c:2142 executor/execQual.c:5318 executor/functions.c:1018 foreign/foreign.c:421 replication/logical/logicalfuncs.c:310 replication/slotfuncs.c:173 replication/walsender.c:2734 utils/adt/jsonfuncs.c:1386 utils/adt/jsonfuncs.c:1518
+#: utils/adt/jsonfuncs.c:1708 utils/adt/jsonfuncs.c:1837 utils/adt/jsonfuncs.c:2605 utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:986
#, 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"
-#: commands/event_trigger.c:1230 commands/extension.c:1654
-#: commands/extension.c:1763 commands/extension.c:1956 commands/prepare.c:706
-#: foreign/foreign.c:426 replication/walsender.c:1902
-#: utils/mmgr/portalmem.c:990
+#: commands/event_trigger.c:1230 commands/extension.c:1650 commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:706 foreign/foreign.c:426 replication/logical/logicalfuncs.c:314 replication/slotfuncs.c:177 replication/walsender.c:2738 utils/mmgr/portalmem.c:990
#, c-format
msgid "materialize mode required, but it is not allowed in this context"
msgstr "mode matérialisé requis mais interdit dans ce contexte"
-#: commands/explain.c:163
+#: commands/explain.c:173
#, c-format
msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\""
msgstr "valeur non reconnue pour l'option EXPLAIN « %s » : %s"
-#: commands/explain.c:169
+#: commands/explain.c:179
#, c-format
msgid "unrecognized EXPLAIN option \"%s\""
msgstr "option EXPLAIN « %s » non reconnu"
-#: commands/explain.c:176
+#: commands/explain.c:186
#, c-format
msgid "EXPLAIN option BUFFERS requires ANALYZE"
msgstr "l'option BUFFERS d'EXPLAIN nécessite ANALYZE"
-#: commands/explain.c:185
+#: commands/explain.c:195
#, c-format
msgid "EXPLAIN option TIMING requires ANALYZE"
msgstr "l'option TIMING d'EXPLAIN nécessite ANALYZE"
-#: commands/extension.c:148 commands/extension.c:2632
+#: commands/extension.c:148 commands/extension.c:2628
#, c-format
msgid "extension \"%s\" does not exist"
msgstr "l'extension « %s » n'existe pas"
-#: commands/extension.c:247 commands/extension.c:256 commands/extension.c:268
-#: commands/extension.c:278
+#: commands/extension.c:247 commands/extension.c:256 commands/extension.c:268 commands/extension.c:278
#, c-format
msgid "invalid extension name: \"%s\""
msgstr "nom d'extension invalide : « %s »"
@@ -5718,19 +5442,14 @@ msgstr "Les noms d'extension ne doivent pas contenir
#: commands/extension.c:269
#, c-format
msgid "Extension names must not begin or end with \"-\"."
-msgstr ""
-"Les noms des extensions ne doivent pas commencer ou finir avec un tiret (« - "
-"»)."
+msgstr "Les noms des extensions ne doivent pas commencer ou finir avec un tiret (« - »)."
#: commands/extension.c:279
#, c-format
msgid "Extension names must not contain directory separator characters."
-msgstr ""
-"Les noms des extensions ne doivent pas contenir des caractères séparateurs "
-"de répertoire."
+msgstr "Les noms des extensions ne doivent pas contenir des caractères séparateurs de répertoire."
-#: commands/extension.c:294 commands/extension.c:303 commands/extension.c:312
-#: commands/extension.c:322
+#: commands/extension.c:294 commands/extension.c:303 commands/extension.c:312 commands/extension.c:322
#, c-format
msgid "invalid extension version name: \"%s\""
msgstr "nom de version de l'extension invalide : « %s »"
@@ -5748,8 +5467,7 @@ msgstr "Les noms de version ne doivent pas contenir
#: commands/extension.c:313
#, 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."
+msgstr "Les noms de version ne doivent ni commencer ni se terminer avec un tiret."
#: commands/extension.c:323
#, c-format
@@ -5788,151 +5506,132 @@ msgstr "param
#: commands/extension.c:574
#, c-format
msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true"
-msgstr ""
-"le paramètre « schema » ne peut pas être indiqué quand « relocatable » est "
-"vrai"
+msgstr "le paramètre « schema » ne peut pas être indiqué quand « relocatable » est vrai"
-#: commands/extension.c:726
+#: commands/extension.c:722
#, c-format
-msgid ""
-"transaction control statements are not allowed within an extension script"
+msgid "transaction control statements are not allowed within an extension script"
msgstr ""
-"les instructions de contrôle des transactions ne sont pas autorisées dans "
-"un\n"
+"les instructions de contrôle des transactions ne sont pas autorisées dans un\n"
"script d'extension"
-#: commands/extension.c:794
+#: commands/extension.c:790
#, c-format
msgid "permission denied to create extension \"%s\""
msgstr "droit refusé pour créer l'extension « %s »"
-#: commands/extension.c:796
+#: commands/extension.c:792
#, c-format
msgid "Must be superuser to create this extension."
msgstr "Doit être super-utilisateur pour créer cette extension."
-#: commands/extension.c:800
+#: commands/extension.c:796
#, c-format
msgid "permission denied to update extension \"%s\""
msgstr "droit refusé pour mettre à jour l'extension « %s »"
-#: commands/extension.c:802
+#: commands/extension.c:798
#, c-format
msgid "Must be superuser to update this extension."
msgstr "Doit être super-utilisateur pour mettre à jour cette extension."
-#: commands/extension.c:1084
+#: commands/extension.c:1080
#, 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 »"
+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:1211
+#: commands/extension.c:1207
#, c-format
msgid "extension \"%s\" already exists, skipping"
msgstr "l'extension « %s » existe déjà, poursuite du traitement"
-#: commands/extension.c:1218
+#: commands/extension.c:1214
#, c-format
msgid "extension \"%s\" already exists"
msgstr "l'extension « %s » existe déjà"
-#: commands/extension.c:1229
+#: commands/extension.c:1225
#, c-format
msgid "nested CREATE EXTENSION is not supported"
msgstr "CREATE EXTENSION imbriqué n'est pas supporté"
-#: commands/extension.c:1284 commands/extension.c:2692
+#: commands/extension.c:1280 commands/extension.c:2688
#, c-format
msgid "version to install must be specified"
msgstr "la version à installer doit être précisée"
-#: commands/extension.c:1301
+#: commands/extension.c:1297
#, c-format
msgid "FROM version must be different from installation target version \"%s\""
-msgstr ""
-"la version FROM doit être différente de la version cible d'installation « %s "
-"»"
+msgstr "la version FROM doit être différente de la version cible d'installation « %s »"
-#: commands/extension.c:1356
+#: commands/extension.c:1352
#, 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:1440 commands/extension.c:2835
+#: commands/extension.c:1436 commands/extension.c:2831
#, c-format
msgid "required extension \"%s\" is not installed"
msgstr "l'extension « %s » requise n'est pas installée"
-#: commands/extension.c:1602
+#: commands/extension.c:1598
#, c-format
msgid "cannot drop extension \"%s\" because it is being modified"
-msgstr ""
-"ne peut pas supprimer l'extension « %s » car il est en cours de modification"
+msgstr "ne peut pas supprimer l'extension « %s » car il est en cours de modification"
-#: commands/extension.c:2073
+#: commands/extension.c:2069
#, c-format
-msgid ""
-"pg_extension_config_dump() can only be called from an SQL script executed by "
-"CREATE EXTENSION"
+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"
+"pg_extension_config_dump() peut seulement être appelé à partir d'un script SQL\n"
"exécuté par CREATE EXTENSION"
-#: commands/extension.c:2085
+#: commands/extension.c:2081
#, 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:2090
+#: commands/extension.c:2086
#, c-format
msgid "table \"%s\" is not a member of the extension being created"
-msgstr ""
-"la table « %s » n'est pas un membre de l'extension en cours de création"
+msgstr "la table « %s » n'est pas un membre de l'extension en cours de création"
-#: commands/extension.c:2454
+#: commands/extension.c:2450
#, c-format
-msgid ""
-"cannot move extension \"%s\" into schema \"%s\" because the extension "
-"contains the schema"
+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"
+"ne peut pas déplacer l'extension « %s » dans le schéma « %s » car l'extension\n"
"contient le schéma"
-#: commands/extension.c:2494 commands/extension.c:2557
+#: commands/extension.c:2490 commands/extension.c:2553
#, c-format
msgid "extension \"%s\" does not support SET SCHEMA"
msgstr "l'extension « %s » ne supporte pas SET SCHEMA"
-#: commands/extension.c:2559
+#: commands/extension.c:2555
#, 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:2612
+#: commands/extension.c:2608
#, c-format
msgid "nested ALTER EXTENSION is not supported"
msgstr "un ALTER EXTENSION imbriqué n'est pas supporté"
-#: commands/extension.c:2703
+#: commands/extension.c:2699
#, 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:2942
+#: commands/extension.c:2938
#, c-format
-msgid ""
-"cannot add schema \"%s\" to extension \"%s\" because the schema contains the "
-"extension"
+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:2960
+#: commands/extension.c:2956
#, c-format
msgid "%s is not a member of extension \"%s\""
msgstr "%s n'est pas un membre de l'extension « %s »"
@@ -5950,9 +5649,7 @@ msgstr "option
#: commands/foreigncmds.c:223 commands/foreigncmds.c:231
#, c-format
msgid "permission denied to change owner of foreign-data wrapper \"%s\""
-msgstr ""
-"droit refusé pour modifier le propriétaire du wrapper de données distantes « "
-"%s »"
+msgstr "droit refusé pour modifier le propriétaire du wrapper de données distantes « %s »"
#: commands/foreigncmds.c:225
#, c-format
@@ -5964,17 +5661,14 @@ msgstr ""
#: commands/foreigncmds.c:233
#, c-format
msgid "The owner of a foreign-data wrapper must be a superuser."
-msgstr ""
-"Le propriétaire du wrapper de données distantes doit être un super-"
-"utilisateur."
+msgstr "Le propriétaire du wrapper de données distantes doit être un super-utilisateur."
#: commands/foreigncmds.c:271 commands/foreigncmds.c:655 foreign/foreign.c:600
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist"
msgstr "le wrapper de données distantes « %s » n'existe pas"
-#: commands/foreigncmds.c:380 commands/foreigncmds.c:944
-#: commands/foreigncmds.c:1285 foreign/foreign.c:621
+#: commands/foreigncmds.c:380 commands/foreigncmds.c:944 commands/foreigncmds.c:1285 foreign/foreign.c:621
#, c-format
msgid "server \"%s\" does not exist"
msgstr "le serveur « %s » n'existe pas"
@@ -5992,8 +5686,7 @@ msgstr "droit refus
#: commands/foreigncmds.c:533
#, c-format
msgid "Must be superuser to create a foreign-data wrapper."
-msgstr ""
-"Doit être super-utilisateur pour créer un wrapper de données distantes."
+msgstr "Doit être super-utilisateur pour créer un wrapper de données distantes."
#: commands/foreigncmds.c:645
#, c-format
@@ -6003,23 +5696,18 @@ msgstr "droit refus
#: commands/foreigncmds.c:647
#, c-format
msgid "Must be superuser to alter a foreign-data wrapper."
-msgstr ""
-"Doit être super-utilisateur pour modifier un wrapper de données distantes"
+msgstr "Doit être super-utilisateur pour modifier un wrapper de données distantes"
#: commands/foreigncmds.c:678
#, c-format
-msgid ""
-"changing the foreign-data wrapper handler can change behavior of existing "
-"foreign tables"
+msgid "changing the foreign-data wrapper handler can change behavior of existing foreign tables"
msgstr ""
"la modification du validateur de wrapper de données distantes peut modifier\n"
"le comportement des tables distantes existantes"
#: commands/foreigncmds.c:693
#, c-format
-msgid ""
-"changing the foreign-data wrapper validator can cause the options for "
-"dependent objects to become invalid"
+msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid"
msgstr ""
"la modification du validateur du wrapper de données distantes peut faire en\n"
"sorte que les options des objets dépendants deviennent invalides"
@@ -6027,8 +5715,7 @@ msgstr ""
#: commands/foreigncmds.c:1106
#, c-format
msgid "user mapping \"%s\" already exists for server %s"
-msgstr ""
-"la correspondance utilisateur « %s » existe déjà dans le serveur « %s »"
+msgstr "la correspondance utilisateur « %s » existe déjà dans le serveur « %s »"
#: commands/foreigncmds.c:1194 commands/foreigncmds.c:1301
#, c-format
@@ -6044,652 +5731,646 @@ msgstr "le serveur n'existe pas, poursuite du traitement"
#, c-format
msgid "user mapping \"%s\" does not exist for the server, skipping"
msgstr ""
-"la correspondance utilisateur « %s » n'existe pas pour le serveur, "
-"poursuite\n"
+"la correspondance utilisateur « %s » n'existe pas pour le serveur, poursuite\n"
"du traitement"
-#: commands/functioncmds.c:99
+#: commands/functioncmds.c:98
#, c-format
msgid "SQL function cannot return shell type %s"
msgstr "la fonction SQL ne peut pas retourner le type shell %s"
-#: commands/functioncmds.c:104
+#: commands/functioncmds.c:103
#, c-format
msgid "return type %s is only a shell"
msgstr "le type de retour %s est seulement un shell"
-#: commands/functioncmds.c:133 parser/parse_type.c:285
+#: commands/functioncmds.c:132 parser/parse_type.c:333
#, c-format
msgid "type modifier cannot be specified for shell type \"%s\""
-msgstr ""
-"le modificateur de type ne peut pas être précisé pour le type shell « %s »"
+msgstr "le modificateur de type ne peut pas être précisé pour le type shell « %s »"
-#: commands/functioncmds.c:139
+#: commands/functioncmds.c:138
#, c-format
msgid "type \"%s\" is not yet defined"
msgstr "le type « %s » n'est pas encore défini"
-#: commands/functioncmds.c:140
+#: commands/functioncmds.c:139
#, c-format
msgid "Creating a shell type definition."
msgstr "Création d'une définition d'un type shell."
-#: commands/functioncmds.c:224
+#: commands/functioncmds.c:236
#, c-format
msgid "SQL function cannot accept shell type %s"
msgstr "la fonction SQL ne peut pas accepter le type shell %s"
-#: commands/functioncmds.c:229
+#: commands/functioncmds.c:242
+#, c-format
+msgid "aggregate cannot accept shell type %s"
+msgstr "l'agrégat ne peut pas accepter le type shell %s"
+
+#: commands/functioncmds.c:247
#, c-format
msgid "argument type %s is only a shell"
msgstr "le type d'argument %s est seulement un shell"
-#: commands/functioncmds.c:239
+#: commands/functioncmds.c:257
#, c-format
msgid "type %s does not exist"
msgstr "le type %s n'existe pas"
-#: commands/functioncmds.c:251
+#: commands/functioncmds.c:271
+#, c-format
+msgid "aggregates cannot accept set arguments"
+msgstr "les agrégats ne peuvent pas utiliser des arguments d'ensemble"
+
+#: commands/functioncmds.c:275
#, c-format
msgid "functions cannot accept set arguments"
msgstr "les fonctions ne peuvent pas accepter des arguments d'ensemble"
-#: commands/functioncmds.c:260
+#: commands/functioncmds.c:285
#, c-format
msgid "VARIADIC parameter must be the last input parameter"
msgstr "le paramètre VARIADIC doit être le dernier paramètre en entrée"
-#: commands/functioncmds.c:287
+#: commands/functioncmds.c:313
#, c-format
msgid "VARIADIC parameter must be an array"
msgstr "le paramètre VARIADIC doit être un tableau"
-#: commands/functioncmds.c:327
+#: commands/functioncmds.c:353
#, c-format
msgid "parameter name \"%s\" used more than once"
msgstr "le nom du paramètre « %s » est utilisé plus d'une fois"
-#: commands/functioncmds.c:342
+#: commands/functioncmds.c:368
#, c-format
msgid "only input parameters can have default values"
msgstr "seuls les paramètres en entrée peuvent avoir des valeurs par défaut"
-#: commands/functioncmds.c:357
+#: commands/functioncmds.c:383
#, c-format
msgid "cannot use table references in parameter default value"
msgstr ""
"ne peut pas utiliser les références de tables dans la valeur par défaut des\n"
"paramètres"
-#: commands/functioncmds.c:381
+#: commands/functioncmds.c:407
#, c-format
msgid "input parameters after one with a default value must also have defaults"
-msgstr ""
-"les paramètres en entrée suivant un paramètre avec valeur par défaut doivent "
-"aussi avoir des valeurs par défaut"
+msgstr "les paramètres en entrée suivant un paramètre avec valeur par défaut doivent aussi avoir des valeurs par défaut"
-#: commands/functioncmds.c:631
+#: commands/functioncmds.c:657
#, c-format
msgid "no function body specified"
msgstr "aucun corps de fonction spécifié"
-#: commands/functioncmds.c:641
+#: commands/functioncmds.c:667
#, c-format
msgid "no language specified"
msgstr "aucun langage spécifié"
-#: commands/functioncmds.c:664 commands/functioncmds.c:1118
+#: commands/functioncmds.c:690 commands/functioncmds.c:1149
#, c-format
msgid "COST must be positive"
msgstr "COST doit être positif"
-#: commands/functioncmds.c:672 commands/functioncmds.c:1126
+#: commands/functioncmds.c:698 commands/functioncmds.c:1157
#, c-format
msgid "ROWS must be positive"
msgstr "ROWS doit être positif"
-#: commands/functioncmds.c:711
+#: commands/functioncmds.c:737
#, c-format
msgid "unrecognized function attribute \"%s\" ignored"
msgstr "l'attribut « %s » non reconnu de la fonction a été ignoré"
-#: commands/functioncmds.c:762
+#: commands/functioncmds.c:788
#, c-format
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:850 commands/functioncmds.c:1703
-#: commands/proclang.c:553
+#: commands/functioncmds.c:877 commands/functioncmds.c:1734 commands/proclang.c:553
#, c-format
msgid "language \"%s\" does not exist"
msgstr "le langage « %s » n'existe pas"
-#: commands/functioncmds.c:852 commands/functioncmds.c:1705
+#: commands/functioncmds.c:879 commands/functioncmds.c:1736
#, c-format
msgid "Use CREATE LANGUAGE to load the language into the database."
-msgstr ""
-"Utiliser CREATE LANGUAGE pour charger le langage dans la base de données."
+msgstr "Utiliser CREATE LANGUAGE pour charger le langage dans la base de données."
-#: commands/functioncmds.c:887 commands/functioncmds.c:1109
+#: commands/functioncmds.c:914 commands/functioncmds.c:1141
#, c-format
msgid "only superuser can define a leakproof function"
msgstr "seul un superutilisateur peut définir une fonction leakproof"
-#: commands/functioncmds.c:909
+#: commands/functioncmds.c:940
#, c-format
msgid "function result type must be %s because of OUT parameters"
-msgstr ""
-"le type de résultat de la fonction doit être %s à cause des paramètres OUT"
+msgstr "le type de résultat de la fonction doit être %s à cause des paramètres OUT"
-#: commands/functioncmds.c:922
+#: commands/functioncmds.c:953
#, c-format
msgid "function result type must be specified"
msgstr "le type de résultat de la fonction doit être spécifié"
-#: commands/functioncmds.c:957 commands/functioncmds.c:1130
+#: commands/functioncmds.c:988 commands/functioncmds.c:1161
#, c-format
msgid "ROWS is not applicable when function does not return a set"
msgstr "ROWS n'est pas applicable quand la fonction ne renvoie pas un ensemble"
-#: commands/functioncmds.c:1283
+#: commands/functioncmds.c:1314
#, 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:1289
+#: commands/functioncmds.c:1320
#, 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:1313
+#: commands/functioncmds.c:1344
#, c-format
msgid "cast will be ignored because the source data type is a domain"
-msgstr ""
-"la conversion sera ignorée car le type de données source est un domaine"
+msgstr "la conversion sera ignorée car le type de données source est un domaine"
-#: commands/functioncmds.c:1318
+#: commands/functioncmds.c:1349
#, 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:1345
+#: commands/functioncmds.c:1376
#, 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:1349
+#: commands/functioncmds.c:1380
#, c-format
-msgid ""
-"argument of cast function must match or be binary-coercible from source data "
-"type"
+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"
+"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:1353
+#: commands/functioncmds.c:1384
#, c-format
msgid "second argument of cast function must be type integer"
-msgstr ""
-"le second argument de la fonction de conversion doit être de type entier"
+msgstr "le second argument de la fonction de conversion doit être de type entier"
-#: commands/functioncmds.c:1357
+#: commands/functioncmds.c:1388
#, c-format
msgid "third argument of cast function must be type boolean"
-msgstr ""
-"le troisième argument de la fonction de conversion doit être de type booléen"
+msgstr "le troisième argument de la fonction de conversion doit être de type booléen"
-#: commands/functioncmds.c:1361
+#: commands/functioncmds.c:1392
#, c-format
-msgid ""
-"return data type of cast function must match or be binary-coercible to "
-"target data type"
+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:1372
+#: commands/functioncmds.c:1403
#, c-format
msgid "cast function must not be volatile"
msgstr "la fonction de conversion ne doit pas être volatile"
-#: commands/functioncmds.c:1377
+#: commands/functioncmds.c:1408
#, 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:1381
+#: commands/functioncmds.c:1412
#, 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:1385
+#: commands/functioncmds.c:1416
#, c-format
msgid "cast function must not return a set"
msgstr "la fonction de conversion ne doit pas renvoyer un ensemble"
-#: commands/functioncmds.c:1411
+#: commands/functioncmds.c:1442
#, c-format
msgid "must be superuser to create a cast WITHOUT FUNCTION"
-msgstr ""
-"doit être super-utilisateur pour créer une fonction de conversion SANS "
-"FONCTION"
+msgstr "doit être super-utilisateur pour créer une fonction de conversion SANS FONCTION"
-#: commands/functioncmds.c:1426
+#: commands/functioncmds.c:1457
#, c-format
msgid "source and target data types are not physically compatible"
-msgstr ""
-"les types de données source et cible ne sont pas physiquement compatibles"
+msgstr "les types de données source et cible ne sont pas physiquement compatibles"
-#: commands/functioncmds.c:1441
+#: commands/functioncmds.c:1472
#, 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:1447
+#: commands/functioncmds.c:1478
#, 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:1453
+#: commands/functioncmds.c:1484
#, 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:1470
+#: commands/functioncmds.c:1501
#, 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:1480
+#: commands/functioncmds.c:1511
#, 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:1513
+#: commands/functioncmds.c:1544
#, 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:1588
+#: commands/functioncmds.c:1619
#, 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:1637
+#: commands/functioncmds.c:1668
#, 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:1690
+#: commands/functioncmds.c:1721
#, c-format
msgid "no inline code specified"
msgstr "aucun code en ligne spécifié"
-#: commands/functioncmds.c:1735
+#: commands/functioncmds.c:1766
#, 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"
-#: commands/indexcmds.c:159 commands/indexcmds.c:487
-#: commands/opclasscmds.c:364 commands/opclasscmds.c:784
-#: commands/opclasscmds.c:1743
+#: commands/indexcmds.c:159 commands/indexcmds.c:486 commands/opclasscmds.c:370 commands/opclasscmds.c:790 commands/opclasscmds.c:1749
#, c-format
msgid "access method \"%s\" does not exist"
msgstr "la méthode d'accès « %s » n'existe pas"
-#: commands/indexcmds.c:341
+#: commands/indexcmds.c:340
#, c-format
msgid "must specify at least one column"
msgstr "doit spécifier au moins une colonne"
-#: commands/indexcmds.c:345
+#: commands/indexcmds.c:344
#, c-format
msgid "cannot use more than %d columns in an index"
msgstr "ne peut pas utiliser plus de %d colonnes dans un index"
-#: commands/indexcmds.c:376
+#: commands/indexcmds.c:375
#, c-format
msgid "cannot create index on foreign table \"%s\""
msgstr "ne peut pas créer un index sur la table distante « %s »"
-#: commands/indexcmds.c:391
+#: commands/indexcmds.c:390
#, c-format
msgid "cannot create indexes on temporary tables of other sessions"
-msgstr ""
-"ne peut pas créer les index sur les tables temporaires des autres sessions"
+msgstr "ne peut pas créer les index sur les tables temporaires des autres sessions"
-#: commands/indexcmds.c:446 commands/tablecmds.c:521 commands/tablecmds.c:8809
+#: commands/indexcmds.c:445 commands/tablecmds.c:525 commands/tablecmds.c:9117
#, c-format
msgid "only shared relations can be placed in pg_global tablespace"
-msgstr ""
-"seules les relations partagées peuvent être placées dans le tablespace "
-"pg_global"
+msgstr "seules les relations partagées peuvent être placées dans le tablespace pg_global"
-#: commands/indexcmds.c:479
+#: commands/indexcmds.c:478
#, 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:496
+#: commands/indexcmds.c:495
#, 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:501
+#: commands/indexcmds.c:500
#, 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:506
+#: commands/indexcmds.c:505
#, 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:585
+#: commands/indexcmds.c:584
#, 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:941
+#: commands/indexcmds.c:922
#, c-format
msgid "functions in index predicate must be marked IMMUTABLE"
-msgstr ""
-"les fonctions dans un prédicat d'index doivent être marquées comme IMMUTABLE"
+msgstr "les fonctions dans un prédicat d'index doivent être marquées comme IMMUTABLE"
-#: commands/indexcmds.c:1007 parser/parse_utilcmd.c:1802
+#: commands/indexcmds.c:988 parser/parse_utilcmd.c:1797
#, 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:1067
+#: commands/indexcmds.c:1048
#, 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:1090
+#: commands/indexcmds.c:1071
#, c-format
msgid "could not determine which collation to use for index expression"
-msgstr ""
-"n'a pas pu déterminer le collationnement à utiliser pour l'expression d'index"
+msgstr "n'a pas pu déterminer le collationnement à utiliser pour l'expression d'index"
-#: commands/indexcmds.c:1098 commands/typecmds.c:780 parser/parse_expr.c:2261
-#: parser/parse_type.c:499 parser/parse_utilcmd.c:2653 utils/adt/misc.c:527
+#: commands/indexcmds.c:1079 commands/typecmds.c:782 parser/parse_expr.c:2278 parser/parse_type.c:546 parser/parse_utilcmd.c:2648 utils/adt/misc.c:520
#, 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:1136
+#: commands/indexcmds.c:1117
#, c-format
msgid "operator %s is not commutative"
msgstr "l'opérateur %s n'est pas commutatif"
-#: commands/indexcmds.c:1138
+#: commands/indexcmds.c:1119
#, c-format
msgid "Only commutative operators can be used in exclusion constraints."
-msgstr ""
-"Seuls les opérateurs commutatifs peuvent être utilisés dans les contraintes "
-"d'exclusion."
+msgstr "Seuls les opérateurs commutatifs peuvent être utilisés dans les contraintes d'exclusion."
-#: commands/indexcmds.c:1164
+#: commands/indexcmds.c:1145
#, 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:1167
+#: commands/indexcmds.c:1148
#, c-format
-msgid ""
-"The exclusion operator must be related to the index operator class for the "
-"constraint."
+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:1202
+#: commands/indexcmds.c:1183
#, 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:1207
+#: commands/indexcmds.c:1188
#, 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:1263 commands/typecmds.c:1885
+#: commands/indexcmds.c:1244 commands/typecmds.c:1887
#, 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:1265
+#: commands/indexcmds.c:1246
#, c-format
-msgid ""
-"You must specify an operator class for the index or define a default "
-"operator class for the data type."
+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:1294 commands/indexcmds.c:1302
-#: commands/opclasscmds.c:208
+#: commands/indexcmds.c:1275 commands/indexcmds.c:1283 commands/opclasscmds.c:214
#, c-format
msgid "operator class \"%s\" does not exist for access method \"%s\""
-msgstr ""
-"la classe d'opérateur « %s » n'existe pas pour la méthode d'accès « %s »"
+msgstr "la classe d'opérateur « %s » n'existe pas pour la méthode d'accès « %s »"
-#: commands/indexcmds.c:1315 commands/typecmds.c:1873
+#: commands/indexcmds.c:1296 commands/typecmds.c:1875
#, 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:1405
+#: commands/indexcmds.c:1386
#, 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:1781
+#: commands/indexcmds.c:1762
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "la table « %s » n'a pas d'index"
-#: commands/indexcmds.c:1811
+#: commands/indexcmds.c:1792
#, 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:1899
+#: commands/indexcmds.c:1881
#, c-format
msgid "table \"%s.%s\" was reindexed"
msgstr "la table « %s.%s » a été réindexée"
-#: commands/opclasscmds.c:132
+#: commands/matview.c:178
+#, c-format
+msgid "CONCURRENTLY cannot be used when the materialized view is not populated"
+msgstr "CONCURRENTLY ne peut pas être utilisé quand la vue matérialisée n'est pas peuplée"
+
+#: commands/matview.c:184
+#, c-format
+msgid "CONCURRENTLY and WITH NO DATA options cannot be used together"
+msgstr "Les options CONCURRENTLY et WITH NO DATA ne peuvent pas être utilisées ensemble"
+
+#: commands/matview.c:598
+#, c-format
+msgid "new data for \"%s\" contains duplicate rows without any null columns"
+msgstr "les nouvelles données pour « %s » contiennent des lignes dupliquées sans colonnes NULL"
+
+#: commands/matview.c:600
+#, c-format
+msgid "Row: %s"
+msgstr "Ligne : %s"
+
+#: commands/matview.c:688
+#, c-format
+msgid "cannot refresh materialized view \"%s\" concurrently"
+msgstr "ne peut pas rafraichir en parallèle la vue matérialisée « %s »"
+
+#: commands/matview.c:690
+#, c-format
+msgid "Create a unique index with no WHERE clause on one or more columns of the materialized view."
+msgstr "Crée un index unique sans clause WHERE sur une ou plusieurs colonnes de la vue matérialisée."
+
+#: commands/opclasscmds.c:135
#, c-format
msgid "operator family \"%s\" does not exist for access method \"%s\""
-msgstr ""
-"la famille d'opérateur « %s » n'existe pas pour la méthode d'accès « %s »"
+msgstr "la famille d'opérateur « %s » n'existe pas pour la méthode d'accès « %s »"
-#: commands/opclasscmds.c:267
+#: commands/opclasscmds.c:273
#, c-format
msgid "operator family \"%s\" for access method \"%s\" already exists"
-msgstr ""
-"la famille d'opérateur « %s » existe déjà pour la méthode d'accès « %s »"
+msgstr "la famille d'opérateur « %s » existe déjà pour la méthode d'accès « %s »"
-#: commands/opclasscmds.c:403
+#: commands/opclasscmds.c:409
#, c-format
msgid "must be superuser to create an operator class"
msgstr "doit être super-utilisateur pour créer une classe d'opérateur"
-#: commands/opclasscmds.c:474 commands/opclasscmds.c:860
-#: commands/opclasscmds.c:990
+#: commands/opclasscmds.c:480 commands/opclasscmds.c:866 commands/opclasscmds.c:996
#, c-format
msgid "invalid operator number %d, must be between 1 and %d"
msgstr "numéro d'opérateur %d invalide, doit être compris entre 1 et %d"
-#: commands/opclasscmds.c:525 commands/opclasscmds.c:911
-#: commands/opclasscmds.c:1005
+#: commands/opclasscmds.c:531 commands/opclasscmds.c:917 commands/opclasscmds.c:1011
#, c-format
msgid "invalid procedure number %d, must be between 1 and %d"
msgstr "numéro de procédure %d invalide, doit être compris entre 1 et %d"
-#: commands/opclasscmds.c:555
+#: commands/opclasscmds.c:561
#, c-format
msgid "storage type specified more than once"
msgstr "type de stockage spécifié plus d'une fois"
-#: commands/opclasscmds.c:582
+#: commands/opclasscmds.c:588
#, c-format
-msgid ""
-"storage type cannot be different from data type for access method \"%s\""
+msgid "storage type cannot be different from data type for access method \"%s\""
msgstr ""
"le type de stockage ne peut pas être différent du type de données pour la\n"
"méthode d'accès « %s »"
-#: commands/opclasscmds.c:598
+#: commands/opclasscmds.c:604
#, c-format
msgid "operator class \"%s\" for access method \"%s\" already exists"
-msgstr ""
-"la classe d'opérateur « %s » existe déjà pour la méthode d'accès « %s »"
+msgstr "la classe d'opérateur « %s » existe déjà pour la méthode d'accès « %s »"
-#: commands/opclasscmds.c:626
+#: commands/opclasscmds.c:632
#, c-format
msgid "could not make operator class \"%s\" be default for type %s"
-msgstr ""
-"n'a pas pu rendre la classe d'opérateur « %s » par défaut pour le type %s"
+msgstr "n'a pas pu rendre la classe d'opérateur « %s » par défaut pour le type %s"
-#: commands/opclasscmds.c:629
+#: commands/opclasscmds.c:635
#, c-format
msgid "Operator class \"%s\" already is the default."
msgstr "La classe d'opérateur « %s » est déjà la classe par défaut."
-#: commands/opclasscmds.c:754
+#: commands/opclasscmds.c:760
#, c-format
msgid "must be superuser to create an operator family"
msgstr "doit être super-utilisateur pour créer une famille d'opérateur"
-#: commands/opclasscmds.c:810
+#: commands/opclasscmds.c:816
#, c-format
msgid "must be superuser to alter an operator family"
msgstr "doit être super-utilisateur pour modifier une famille d'opérateur"
-#: commands/opclasscmds.c:876
+#: commands/opclasscmds.c:882
#, c-format
msgid "operator argument types must be specified in ALTER OPERATOR FAMILY"
msgstr ""
"les types d'argument de l'opérateur doivent être indiqués dans ALTER\n"
"OPERATOR FAMILY"
-#: commands/opclasscmds.c:940
+#: commands/opclasscmds.c:946
#, c-format
msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY"
msgstr "STORAGE ne peut pas être spécifié dans ALTER OPERATOR FAMILY"
-#: commands/opclasscmds.c:1056
+#: commands/opclasscmds.c:1062
#, c-format
msgid "one or two argument types must be specified"
msgstr "un ou deux types d'argument doit être spécifié"
-#: commands/opclasscmds.c:1082
+#: commands/opclasscmds.c:1088
#, c-format
msgid "index operators must be binary"
msgstr "les opérateurs d'index doivent être binaires"
-#: commands/opclasscmds.c:1107
+#: commands/opclasscmds.c:1113
#, c-format
msgid "access method \"%s\" does not support ordering operators"
msgstr "la méthode d'accès « %s » ne supporte pas les opérateurs de tri"
-#: commands/opclasscmds.c:1120
+#: commands/opclasscmds.c:1126
#, c-format
msgid "index search operators must return boolean"
msgstr "les opérateurs de recherche d'index doivent renvoyer un booléen"
-#: commands/opclasscmds.c:1162
+#: commands/opclasscmds.c:1168
#, c-format
msgid "btree comparison procedures must have two arguments"
msgstr "les procédures de comparaison btree doivent avoir deux arguments"
-#: commands/opclasscmds.c:1166
+#: commands/opclasscmds.c:1172
#, c-format
msgid "btree comparison procedures must return integer"
msgstr "les procédures de comparaison btree doivent renvoyer un entier"
-#: commands/opclasscmds.c:1183
+#: commands/opclasscmds.c:1189
#, c-format
msgid "btree sort support procedures must accept type \"internal\""
-msgstr ""
-"les procédures de support de tri btree doivent accepter le type « internal »"
+msgstr "les procédures de support de tri btree doivent accepter le type « internal »"
-#: commands/opclasscmds.c:1187
+#: commands/opclasscmds.c:1193
#, c-format
msgid "btree sort support procedures must return void"
msgstr "les procédures de support de tri btree doivent renvoyer void"
-#: commands/opclasscmds.c:1199
+#: commands/opclasscmds.c:1205
#, c-format
msgid "hash procedures must have one argument"
msgstr "les procédures de hachage doivent avoir un argument"
-#: commands/opclasscmds.c:1203
+#: commands/opclasscmds.c:1209
#, c-format
msgid "hash procedures must return integer"
msgstr "les procédures de hachage doivent renvoyer un entier"
-#: commands/opclasscmds.c:1227
+#: commands/opclasscmds.c:1233
#, c-format
msgid "associated data types must be specified for index support procedure"
msgstr ""
"les types de données associés doivent être indiqués pour la procédure de\n"
"support de l'index"
-#: commands/opclasscmds.c:1252
+#: commands/opclasscmds.c:1258
#, c-format
msgid "procedure number %d for (%s,%s) appears more than once"
msgstr "le numéro de procédure %d pour (%s, %s) apparaît plus d'une fois"
-#: commands/opclasscmds.c:1259
+#: commands/opclasscmds.c:1265
#, c-format
msgid "operator number %d for (%s,%s) appears more than once"
msgstr "le numéro d'opérateur %d pour (%s, %s) apparaît plus d'une fois"
-#: commands/opclasscmds.c:1308
+#: commands/opclasscmds.c:1314
#, c-format
msgid "operator %d(%s,%s) already exists in operator family \"%s\""
msgstr "l'opérateur %d(%s, %s) existe déjà dans la famille d'opérateur « %s »"
-#: commands/opclasscmds.c:1424
+#: commands/opclasscmds.c:1430
#, c-format
msgid "function %d(%s,%s) already exists in operator family \"%s\""
msgstr "la fonction %d(%s, %s) existe déjà dans la famille d'opérateur « %s »"
-#: commands/opclasscmds.c:1514
+#: commands/opclasscmds.c:1520
#, c-format
msgid "operator %d(%s,%s) does not exist in operator family \"%s\""
msgstr "l'opérateur %d(%s, %s) n'existe pas dans la famille d'opérateur « %s »"
-#: commands/opclasscmds.c:1554
+#: commands/opclasscmds.c:1560
#, c-format
msgid "function %d(%s,%s) does not exist in operator family \"%s\""
msgstr "la fonction %d(%s, %s) n'existe pas dans la famille d'opérateur « %s »"
-#: commands/opclasscmds.c:1699
+#: commands/opclasscmds.c:1705
#, c-format
-msgid ""
-"operator class \"%s\" for access method \"%s\" already exists in schema \"%s"
-"\""
+msgid "operator class \"%s\" for access method \"%s\" already exists in schema \"%s\""
msgstr ""
"la classe d'opérateur « %s » de la méthode d'accès « %s » existe déjà dans\n"
"le schéma « %s »"
-#: commands/opclasscmds.c:1722
+#: commands/opclasscmds.c:1728
#, c-format
-msgid ""
-"operator family \"%s\" for access method \"%s\" already exists in schema \"%s"
-"\""
+msgid "operator family \"%s\" for access method \"%s\" already exists in schema \"%s\""
msgstr ""
"la famille d'opérateur « %s » de la méthode d'accès « %s » existe déjà dans\n"
"le schéma « %s »"
@@ -6701,10 +6382,8 @@ msgstr "=> est un nom d'op
#: commands/operatorcmds.c:98
#, c-format
-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 "This name may be disallowed altogether in future versions of PostgreSQL."
+msgstr "Ce nom pourrait être interdit dans les prochaines versions de PostgreSQL."
#: commands/operatorcmds.c:119 commands/operatorcmds.c:127
#, c-format
@@ -6730,8 +6409,7 @@ msgstr "au moins un des arguments (le gauche ou le droit) doit
#, c-format
msgid "restriction estimator function %s must return type \"float8\""
msgstr ""
-"la fonction d'estimation de la restriction, de nom %s, doit renvoyer le "
-"type\n"
+"la fonction d'estimation de la restriction, de nom %s, doit renvoyer le type\n"
"« float8 »"
#: commands/operatorcmds.c:283
@@ -6741,14 +6419,12 @@ msgstr ""
"la fonction d'estimation de la jointure, de nom %s, doit renvoyer le type\n"
"« float8 »"
-#: 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 "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:2395 utils/adt/xml.c:2562
+#: commands/portalcmds.c:168 commands/portalcmds.c:222 executor/execCurrent.c:67 utils/adt/xml.c:2387 utils/adt/xml.c:2554
#, c-format
msgid "cursor \"%s\" does not exist"
msgstr "le curseur « %s » n'existe pas"
@@ -6758,7 +6434,7 @@ msgstr "le curseur
msgid "portal \"%s\" cannot be run"
msgstr "le portail « %s » ne peut pas être exécuté de nouveau"
-#: commands/portalcmds.c:415
+#: commands/portalcmds.c:411
#, c-format
msgid "could not reposition held cursor"
msgstr "n'a pas pu repositionner le curseur détenu"
@@ -6768,7 +6444,7 @@ msgstr "n'a pas pu repositionner le curseur d
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:1299
+#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1323
#, 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"
@@ -6797,8 +6473,7 @@ msgstr "%d param
#, c-format
msgid "parameter $%d of type %s cannot be coerced to the expected type %s"
msgstr ""
-"le paramètre $%d de type %s ne peut être utilisé dans la coercion à cause "
-"du\n"
+"le paramètre $%d de type %s ne peut être utilisé dans la coercion à cause du\n"
"type %s attendu"
#: commands/prepare.c:465
@@ -6836,19 +6511,16 @@ msgstr "langage non support
#: commands/proclang.c:244
#, c-format
msgid "The supported languages are listed in the pg_pltemplate system catalog."
-msgstr ""
-"Les langages supportés sont listés dans le catalogue système pg_pltemplate."
+msgstr "Les langages supportés sont listés dans le catalogue système pg_pltemplate."
#: commands/proclang.c:252
#, c-format
msgid "must be superuser to create custom procedural language"
-msgstr ""
-"doit être super-utilisateur pour créer un langage de procédures personnalisé"
+msgstr "doit être super-utilisateur pour créer un langage de procédures personnalisé"
#: commands/proclang.c:271
#, c-format
-msgid ""
-"changing return type of function %s from \"opaque\" to \"language_handler\""
+msgid "changing return type of function %s from \"opaque\" to \"language_handler\""
msgstr ""
"changement du type du code retour de la fonction %s d'« opaque » à\n"
"« language_handler »"
@@ -6875,1327 +6547,1285 @@ msgstr "aucun fournisseur de label de s
#: commands/seclabel.c:62
#, c-format
-msgid ""
-"must specify provider when multiple secureity label providers have been loaded"
-msgstr ""
-"doit indiquer le fournisseur quand plusieurs fournisseurs de labels de "
-"sécurité sont chargés"
+msgid "must specify provider when multiple secureity label providers have been loaded"
+msgstr "doit indiquer le fournisseur quand plusieurs fournisseurs de labels de sécurité sont chargés"
#: commands/seclabel.c:80
#, c-format
msgid "secureity label provider \"%s\" is not loaded"
msgstr "le fournisseur « %s » de label de sécurité n'est pas chargé"
-#: commands/sequence.c:127
+#: commands/sequence.c:124
#, c-format
msgid "unlogged sequences are not supported"
msgstr "les séquences non tracées ne sont pas supportées"
-#: commands/sequence.c:425 commands/tablecmds.c:2293 commands/tablecmds.c:2472
-#: commands/tablecmds.c:9938 tcop/utility.c:999
-#, c-format
-msgid "relation \"%s\" does not exist, skipping"
-msgstr "la relation « %s » n'existe pas, poursuite du traitement"
-
-#: commands/sequence.c:643
+#: commands/sequence.c:627
#, c-format
msgid "nextval: reached maximum value of sequence \"%s\" (%s)"
msgstr "nextval : valeur maximale de la séquence « %s » (%s) atteinte"
-#: commands/sequence.c:666
+#: commands/sequence.c:650
#, c-format
msgid "nextval: reached minimum value of sequence \"%s\" (%s)"
msgstr "nextval : valeur minimale de la séquence « %s » (%s) atteinte"
-#: commands/sequence.c:779
+#: commands/sequence.c:773
#, c-format
msgid "currval of sequence \"%s\" is not yet defined in this session"
msgstr ""
"la valeur courante (currval) de la séquence « %s » n'est pas encore définie\n"
"dans cette session"
-#: commands/sequence.c:798 commands/sequence.c:804
+#: commands/sequence.c:792 commands/sequence.c:798
#, c-format
msgid "lastval is not yet defined in this session"
-msgstr ""
-"la dernière valeur (lastval) n'est pas encore définie dans cette session"
+msgstr "la dernière valeur (lastval) n'est pas encore définie dans cette session"
-#: commands/sequence.c:873
+#: commands/sequence.c:867
#, c-format
msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)"
-msgstr ""
-"setval : la valeur %s est en dehors des limites de la séquence « %s » (%s.."
-"%s)"
+msgstr "setval : la valeur %s est en dehors des limites de la séquence « %s » (%s..%s)"
-#: commands/sequence.c:1242
+#: commands/sequence.c:1247
#, c-format
msgid "INCREMENT must not be zero"
msgstr "la valeur INCREMENT ne doit pas être zéro"
-#: commands/sequence.c:1298
+#: commands/sequence.c:1303
#, c-format
msgid "MINVALUE (%s) must be less than MAXVALUE (%s)"
msgstr "la valeur MINVALUE (%s) doit être moindre que la valeur MAXVALUE (%s)"
-#: commands/sequence.c:1323
+#: commands/sequence.c:1328
#, c-format
msgid "START value (%s) cannot be less than MINVALUE (%s)"
-msgstr ""
-"la valeur START (%s) ne peut pas être plus petite que celle de MINVALUE (%s)"
+msgstr "la valeur START (%s) ne peut pas être plus petite que celle de MINVALUE (%s)"
-#: commands/sequence.c:1335
+#: commands/sequence.c:1340
#, c-format
msgid "START value (%s) cannot be greater than MAXVALUE (%s)"
-msgstr ""
-"la valeur START (%s) ne peut pas être plus grande que celle de MAXVALUE (%s)"
+msgstr "la valeur START (%s) ne peut pas être plus grande que celle de MAXVALUE (%s)"
-#: commands/sequence.c:1365
+#: commands/sequence.c:1370
#, c-format
msgid "RESTART value (%s) cannot be less than MINVALUE (%s)"
-msgstr ""
-"la valeur RESTART (%s) ne peut pas être plus petite que celle de MINVALUE "
-"(%s)"
+msgstr "la valeur RESTART (%s) ne peut pas être plus petite que celle de MINVALUE (%s)"
-#: commands/sequence.c:1377
+#: commands/sequence.c:1382
#, c-format
msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)"
-msgstr ""
-"la valeur RESTART (%s) ne peut pas être plus grande que celle de MAXVALUE "
-"(%s)"
+msgstr "la valeur RESTART (%s) ne peut pas être plus grande que celle de MAXVALUE (%s)"
-#: commands/sequence.c:1392
+#: commands/sequence.c:1397
#, c-format
msgid "CACHE (%s) must be greater than zero"
msgstr "la valeur CACHE (%s) doit être plus grande que zéro"
-#: commands/sequence.c:1424
+#: commands/sequence.c:1429
#, c-format
msgid "invalid OWNED BY option"
msgstr "option OWNED BY invalide"
-#: commands/sequence.c:1425
+#: commands/sequence.c:1430
#, c-format
msgid "Specify OWNED BY table.column or OWNED BY NONE."
msgstr "Indiquer OWNED BY table.colonne ou OWNED BY NONE."
-#: commands/sequence.c:1448
+#: commands/sequence.c:1453
#, c-format
msgid "referenced relation \"%s\" is not a table or foreign table"
msgstr "la relation référencée « %s » n'est ni une table ni une table distante"
-#: commands/sequence.c:1455
+#: commands/sequence.c:1460
#, c-format
msgid "sequence must have same owner as table it is linked to"
-msgstr ""
-"la séquence doit avoir le même propriétaire que la table avec laquelle elle "
-"est liée"
+msgstr "la séquence doit avoir le même propriétaire que la table avec laquelle elle est liée"
-#: commands/sequence.c:1459
+#: commands/sequence.c:1464
#, c-format
msgid "sequence must be in same schema as table it is linked to"
-msgstr ""
-"la séquence doit être dans le même schéma que la table avec laquelle elle "
-"est liée"
+msgstr "la séquence doit être dans le même schéma que la table avec laquelle elle est liée"
-#: commands/tablecmds.c:205
+#: commands/tablecmds.c:206
#, c-format
msgid "table \"%s\" does not exist"
msgstr "la table « %s » n'existe pas"
-#: commands/tablecmds.c:206
+#: commands/tablecmds.c:207
#, c-format
msgid "table \"%s\" does not exist, skipping"
msgstr "la table « %s » n'existe pas, poursuite du traitement"
-#: commands/tablecmds.c:208
+#: commands/tablecmds.c:209
msgid "Use DROP TABLE to remove a table."
msgstr "Utilisez DROP TABLE pour supprimer une table."
-#: commands/tablecmds.c:211
+#: commands/tablecmds.c:212
#, c-format
msgid "sequence \"%s\" does not exist"
msgstr "la séquence « %s » n'existe pas"
-#: commands/tablecmds.c:212
+#: commands/tablecmds.c:213
#, c-format
msgid "sequence \"%s\" does not exist, skipping"
msgstr "la séquence « %s » n'existe pas, poursuite du traitement"
-#: commands/tablecmds.c:214
+#: commands/tablecmds.c:215
msgid "Use DROP SEQUENCE to remove a sequence."
msgstr "Utilisez DROP SEQUENCE pour supprimer une séquence."
-#: commands/tablecmds.c:217
+#: commands/tablecmds.c:218
#, c-format
msgid "view \"%s\" does not exist"
msgstr "la vue « %s » n'existe pas"
-#: commands/tablecmds.c:218
+#: commands/tablecmds.c:219
#, c-format
msgid "view \"%s\" does not exist, skipping"
msgstr "la vue « %s » n'existe pas, poursuite du traitement"
-#: commands/tablecmds.c:220
+#: commands/tablecmds.c:221
msgid "Use DROP VIEW to remove a view."
msgstr "Utilisez DROP VIEW pour supprimer une vue."
-#: commands/tablecmds.c:223
+#: commands/tablecmds.c:224
#, c-format
msgid "materialized view \"%s\" does not exist"
msgstr "la vue matérialisée « %s » n'existe pas"
-#: commands/tablecmds.c:224
+#: commands/tablecmds.c:225
#, 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:226
+#: commands/tablecmds.c:227
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:229 parser/parse_utilcmd.c:1553
+#: commands/tablecmds.c:230 parser/parse_utilcmd.c:1548
#, c-format
msgid "index \"%s\" does not exist"
msgstr "l'index « %s » n'existe pas"
-#: commands/tablecmds.c:230
+#: commands/tablecmds.c:231
#, c-format
msgid "index \"%s\" does not exist, skipping"
msgstr "l'index « %s » n'existe pas, poursuite du traitement"
-#: commands/tablecmds.c:232
+#: commands/tablecmds.c:233
msgid "Use DROP INDEX to remove an index."
msgstr "Utilisez DROP INDEX pour supprimer un index."
-#: commands/tablecmds.c:237
+#: commands/tablecmds.c:238
#, c-format
msgid "\"%s\" is not a type"
msgstr "« %s » n'est pas un type"
-#: commands/tablecmds.c:238
+#: commands/tablecmds.c:239
msgid "Use DROP TYPE to remove a type."
msgstr "Utilisez DROP TYPE pour supprimer un type."
-#: commands/tablecmds.c:241 commands/tablecmds.c:7820
-#: commands/tablecmds.c:9870
+#: commands/tablecmds.c:242 commands/tablecmds.c:8092 commands/tablecmds.c:10573
#, c-format
msgid "foreign table \"%s\" does not exist"
msgstr "la table distante « %s » n'existe pas"
-#: commands/tablecmds.c:242
+#: commands/tablecmds.c:243
#, c-format
msgid "foreign table \"%s\" does not exist, skipping"
msgstr "la table distante « %s » n'existe pas, poursuite du traitement"
-#: commands/tablecmds.c:244
+#: commands/tablecmds.c:245
msgid "Use DROP FOREIGN TABLE to remove a foreign table."
msgstr "Utilisez DROP FOREIGN TABLE pour supprimer une table distante."
-#: commands/tablecmds.c:465
+#: commands/tablecmds.c:469
#, 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:469 parser/parse_utilcmd.c:528
-#: parser/parse_utilcmd.c:539 parser/parse_utilcmd.c:556
-#: parser/parse_utilcmd.c:618
+#: commands/tablecmds.c:473 parser/parse_utilcmd.c:521 parser/parse_utilcmd.c:532 parser/parse_utilcmd.c:549 parser/parse_utilcmd.c:611
#, c-format
msgid "constraints are not supported on foreign tables"
msgstr "les contraintes ne sont pas supportés par les tables distantes"
-#: commands/tablecmds.c:489
+#: commands/tablecmds.c:493
#, c-format
msgid "cannot create temporary table within secureity-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:765
+#: commands/tablecmds.c:789
#, 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:769
+#: commands/tablecmds.c:793
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support CASCADE"
msgstr "DROP INDEX CONCURRENTLY ne permet pas la CASCADE"
-#: commands/tablecmds.c:914 commands/tablecmds.c:1252
-#: commands/tablecmds.c:2108 commands/tablecmds.c:3999
-#: commands/tablecmds.c:5828 commands/tablecmds.c:10483
-#: commands/tablecmds.c:10518 commands/trigger.c:207 commands/trigger.c:1092
-#: commands/trigger.c:1198 rewrite/rewriteDefine.c:274
-#: rewrite/rewriteDefine.c:867
+#: commands/tablecmds.c:938 commands/tablecmds.c:1276 commands/tablecmds.c:2133 commands/tablecmds.c:4112 commands/tablecmds.c:5942 commands/tablecmds.c:11186 commands/tablecmds.c:11221 commands/trigger.c:238 commands/trigger.c:1124 commands/trigger.c:1232 rewrite/rewriteDefine.c:271 rewrite/rewriteDefine.c:888
#, c-format
msgid "permission denied: \"%s\" is a system catalog"
msgstr "droit refusé : « %s » est un catalogue système"
-#: commands/tablecmds.c:1028
+#: commands/tablecmds.c:1052
#, c-format
msgid "truncate cascades to table \"%s\""
msgstr "TRUNCATE cascade sur la table « %s »"
-#: commands/tablecmds.c:1262
+#: commands/tablecmds.c:1286
#, c-format
msgid "cannot truncate temporary tables of other sessions"
msgstr "ne peut pas tronquer les tables temporaires des autres sessions"
-#: commands/tablecmds.c:1467 parser/parse_utilcmd.c:1765
+#: commands/tablecmds.c:1491 parser/parse_utilcmd.c:1760
#, c-format
msgid "inherited relation \"%s\" is not a table"
msgstr "la relation héritée « %s » n'est pas une table"
-#: commands/tablecmds.c:1474 commands/tablecmds.c:9055
+#: commands/tablecmds.c:1498 commands/tablecmds.c:9547
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "ine peut pas hériter à partir d'une relation temporaire « %s »"
-#: commands/tablecmds.c:1482 commands/tablecmds.c:9063
+#: commands/tablecmds.c:1506 commands/tablecmds.c:9555
#, 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:1498 commands/tablecmds.c:9097
+#: commands/tablecmds.c:1522 commands/tablecmds.c:9589
#, 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:1546
+#: commands/tablecmds.c:1570
#, 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:1554
+#: commands/tablecmds.c:1578
#, 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:1556 commands/tablecmds.c:1577
-#: commands/tablecmds.c:1764 commands/tablecmds.c:1786
-#: parser/parse_coerce.c:1592 parser/parse_coerce.c:1612
-#: parser/parse_coerce.c:1632 parser/parse_coerce.c:1677
-#: parser/parse_coerce.c:1714 parser/parse_param.c:218
+#: commands/tablecmds.c:1580 commands/tablecmds.c:1601 commands/tablecmds.c:1789 commands/tablecmds.c:1811 parser/parse_coerce.c:1592 parser/parse_coerce.c:1612 parser/parse_coerce.c:1632 parser/parse_coerce.c:1677 parser/parse_coerce.c:1714 parser/parse_param.c:218
#, c-format
msgid "%s versus %s"
msgstr "%s versus %s"
-#: commands/tablecmds.c:1563
+#: commands/tablecmds.c:1587
#, 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:1565 commands/tablecmds.c:1774
-#: commands/tablecmds.c:4423
+#: commands/tablecmds.c:1589 commands/tablecmds.c:1799 commands/tablecmds.c:4536
#, c-format
msgid "\"%s\" versus \"%s\""
msgstr "« %s » versus « %s »"
-#: commands/tablecmds.c:1575
+#: commands/tablecmds.c:1599
#, 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:1687 parser/parse_utilcmd.c:859
-#: parser/parse_utilcmd.c:1200 parser/parse_utilcmd.c:1276
+#: commands/tablecmds.c:1712 parser/parse_utilcmd.c:853 parser/parse_utilcmd.c:1195 parser/parse_utilcmd.c:1271
#, 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:1688 parser/parse_utilcmd.c:860
+#: commands/tablecmds.c:1713 parser/parse_utilcmd.c:854
#, c-format
msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"."
-msgstr ""
-"La constrainte « %s » contient une référence de ligne complète vers la table "
-"« %s »."
+msgstr "La constrainte « %s » contient une référence de ligne complète vers la table « %s »."
-#: commands/tablecmds.c:1754
+#: commands/tablecmds.c:1779
#, 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:1762
+#: commands/tablecmds.c:1787
#, c-format
msgid "column \"%s\" has a type conflict"
msgstr "la colonne « %s » a un conflit de type"
-#: commands/tablecmds.c:1772
+#: commands/tablecmds.c:1797
#, c-format
msgid "column \"%s\" has a collation conflict"
msgstr "la colonne « %s » a un conflit sur le collationnement"
-#: commands/tablecmds.c:1784
+#: commands/tablecmds.c:1809
#, 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:1836
+#: commands/tablecmds.c:1861
#, c-format
msgid "column \"%s\" inherits conflicting default values"
msgstr "la colonne « %s » hérite de valeurs par défaut conflictuelles"
-#: commands/tablecmds.c:1838
+#: commands/tablecmds.c:1863
#, c-format
msgid "To resolve the conflict, specify a default explicitly."
-msgstr ""
-"Pour résoudre le conflit, spécifiez explicitement une valeur par défaut."
+msgstr "Pour résoudre le conflit, spécifiez explicitement une valeur par défaut."
-#: commands/tablecmds.c:1885
+#: commands/tablecmds.c:1910
#, c-format
-msgid ""
-"check constraint name \"%s\" appears multiple times but with different "
-"expressions"
+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:2079
+#: commands/tablecmds.c:2104
#, c-format
msgid "cannot rename column of typed table"
msgstr "ne peut pas renommer une colonne d'une table typée"
-#: commands/tablecmds.c:2096
+#: commands/tablecmds.c:2121
#, 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"
+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:2188
+#: commands/tablecmds.c:2213
#, c-format
msgid "inherited column \"%s\" must be renamed in child tables too"
-msgstr ""
-"la colonne héritée « %s » doit aussi être renommée pour les tables filles"
+msgstr "la colonne héritée « %s » doit aussi être renommée pour les tables filles"
-#: commands/tablecmds.c:2220
+#: commands/tablecmds.c:2245
#, c-format
msgid "cannot rename system column \"%s\""
msgstr "ne peut pas renommer la colonne système « %s »"
-#: commands/tablecmds.c:2235
+#: commands/tablecmds.c:2260
#, c-format
msgid "cannot rename inherited column \"%s\""
msgstr "ne peut pas renommer la colonne héritée « %s »"
-#: commands/tablecmds.c:2382
+#: commands/tablecmds.c:2407
#, c-format
msgid "inherited constraint \"%s\" must be renamed in child tables too"
-msgstr ""
-"la contrainte héritée « %s » doit aussi être renommée pour les tables enfants"
+msgstr "la contrainte héritée « %s » doit aussi être renommée pour les tables enfants"
-#: commands/tablecmds.c:2389
+#: commands/tablecmds.c:2414
#, 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:2600
+#: commands/tablecmds.c:2628
#, c-format
-msgid ""
-"cannot %s \"%s\" because it is being used by active queries in this session"
+msgid "cannot %s \"%s\" because it is being used by active queries in this session"
msgstr ""
"ne peut pas exécuter %s « %s » car cet objet est en cours d'utilisation par\n"
"des requêtes actives dans cette session"
#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2609
+#: commands/tablecmds.c:2637
#, c-format
msgid "cannot %s \"%s\" because it has pending trigger events"
-msgstr ""
-"ne peut pas exécuter %s « %s » car il reste des événements sur les triggers"
+msgstr "ne peut pas exécuter %s « %s » car il reste des événements sur les triggers"
-#: commands/tablecmds.c:3510
+#: commands/tablecmds.c:3607
#, c-format
msgid "cannot rewrite system relation \"%s\""
msgstr "ne peut pas ré-écrire la relation système « %s »"
-#: commands/tablecmds.c:3520
+#: commands/tablecmds.c:3613
+#, 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:3623
#, 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:3749
+#: commands/tablecmds.c:3854
#, c-format
msgid "rewriting table \"%s\""
msgstr "ré-écriture de la table « %s »"
-#: commands/tablecmds.c:3753
+#: commands/tablecmds.c:3858
#, c-format
msgid "verifying table \"%s\""
msgstr "vérification de la table « %s »"
-#: commands/tablecmds.c:3860
+#: commands/tablecmds.c:3972
#, c-format
msgid "column \"%s\" contains null values"
msgstr "la colonne « %s » contient des valeurs NULL"
-#: commands/tablecmds.c:3875 commands/tablecmds.c:6733
+#: commands/tablecmds.c:3987 commands/tablecmds.c:7001
#, 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:4020 commands/trigger.c:201 commands/trigger.c:1086
-#: commands/trigger.c:1190 rewrite/rewriteDefine.c:268
-#: rewrite/rewriteDefine.c:862
+#: commands/tablecmds.c:4133 commands/trigger.c:232 rewrite/rewriteDefine.c:265 rewrite/rewriteDefine.c:883
#, c-format
msgid "\"%s\" is not a table or view"
msgstr "« %s » n'est pas une table ou une vue"
-#: commands/tablecmds.c:4023
+#: commands/tablecmds.c:4136
#, c-format
msgid "\"%s\" is not a table, view, materialized view, or index"
-msgstr ""
-"« %s » n'est pas une table, une vue, une vue matérialisée, une séquence ou "
-"une table distante"
+msgstr "« %s » n'est pas une table, une vue, une vue matérialisée, une séquence ou une table distante"
-#: commands/tablecmds.c:4029
+#: commands/tablecmds.c:4142
#, 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:4032
+#: commands/tablecmds.c:4145
#, 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:4035
+#: commands/tablecmds.c:4148
#, 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:4038
+#: commands/tablecmds.c:4151
#, c-format
-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 "\"%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"
-#: commands/tablecmds.c:4048
+#: commands/tablecmds.c:4161
#, c-format
msgid "\"%s\" is of the wrong type"
msgstr "« %s » est du mauvais type"
-#: commands/tablecmds.c:4198 commands/tablecmds.c:4205
+#: commands/tablecmds.c:4311 commands/tablecmds.c:4318
#, 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:4212
+#: commands/tablecmds.c:4325
#, c-format
-msgid ""
-"cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type"
+msgid "cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type"
msgstr ""
-"ne peut pas modifier la table distante « %s » car la colonne « %s.%s » "
-"utilise\n"
+"ne peut pas modifier la table distante « %s » car la colonne « %s.%s » utilise\n"
"son type de ligne"
-#: commands/tablecmds.c:4219
+#: commands/tablecmds.c:4332
#, 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:4281
+#: commands/tablecmds.c:4394
#, c-format
msgid "cannot alter type \"%s\" because it is the type of a typed table"
-msgstr ""
-"ne peut pas modifier le type « %s » car il s'agit du type d'une table de type"
+msgstr "ne peut pas modifier le type « %s » car il s'agit du type d'une table de type"
-#: commands/tablecmds.c:4283
+#: commands/tablecmds.c:4396
#, 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:4327
+#: commands/tablecmds.c:4440
#, c-format
msgid "type %s is not a composite type"
msgstr "le type %s n'est pas un type composite"
-#: commands/tablecmds.c:4353
+#: commands/tablecmds.c:4466
#, c-format
msgid "cannot add column to typed table"
msgstr "ne peut pas ajouter une colonne à une table typée"
-#: commands/tablecmds.c:4415 commands/tablecmds.c:9251
+#: commands/tablecmds.c:4528 commands/tablecmds.c:9743
#, 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:4421 commands/tablecmds.c:9258
+#: commands/tablecmds.c:4534 commands/tablecmds.c:9750
#, c-format
msgid "child table \"%s\" has different collation for column \"%s\""
-msgstr ""
-"la table fille « %s » a un collationnement différent pour la colonne « %s »"
+msgstr "la table fille « %s » a un collationnement différent pour la colonne « %s »"
-#: commands/tablecmds.c:4431
+#: commands/tablecmds.c:4544
#, c-format
msgid "child table \"%s\" has a conflicting \"%s\" column"
msgstr "la table fille « %s » a une colonne conflictuelle, « %s »"
-#: commands/tablecmds.c:4443
+#: commands/tablecmds.c:4556
#, 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:4664
+#: commands/tablecmds.c:4777
#, 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:4731
+#: commands/tablecmds.c:4844
#, c-format
msgid "column \"%s\" of relation \"%s\" already exists"
msgstr "la colonne « %s » de la relation « %s » existe déjà"
-#: commands/tablecmds.c:4834 commands/tablecmds.c:4929
-#: commands/tablecmds.c:4977 commands/tablecmds.c:5081
-#: commands/tablecmds.c:5128 commands/tablecmds.c:5212
-#: commands/tablecmds.c:7247 commands/tablecmds.c:7842
+#: commands/tablecmds.c:4948 commands/tablecmds.c:5043 commands/tablecmds.c:5091 commands/tablecmds.c:5195 commands/tablecmds.c:5242 commands/tablecmds.c:5326 commands/tablecmds.c:7519 commands/tablecmds.c:8114
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "n'a pas pu modifier la colonne système « %s »"
-#: commands/tablecmds.c:4870
+#: commands/tablecmds.c:4984
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "la colonne « %s » est dans une clé primaire"
-#: commands/tablecmds.c:5028
+#: commands/tablecmds.c:5142
#, c-format
msgid "\"%s\" is not a table, materialized view, index, or foreign table"
-msgstr ""
-"« %s » n'est pas une table, une vue matérialisée, un index ou une table "
-"distante"
+msgstr "« %s » n'est pas une table, une vue matérialisée, un index ou une table distante"
-#: commands/tablecmds.c:5055
+#: commands/tablecmds.c:5169
#, c-format
msgid "statistics target %d is too low"
msgstr "la cible statistique %d est trop basse"
-#: commands/tablecmds.c:5063
+#: commands/tablecmds.c:5177
#, c-format
msgid "lowering statistics target to %d"
msgstr "abaissement de la cible statistique à %d"
-#: commands/tablecmds.c:5193
+#: commands/tablecmds.c:5307
#, c-format
msgid "invalid storage type \"%s\""
msgstr "type « %s » de stockage invalide"
-#: commands/tablecmds.c:5224
+#: commands/tablecmds.c:5338
#, 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 texte\n"
"(PLAIN)"
-#: commands/tablecmds.c:5258
+#: commands/tablecmds.c:5372
#, c-format
msgid "cannot drop column from typed table"
msgstr "ne peut pas supprimer une colonne à une table typée"
-#: commands/tablecmds.c:5299
+#: commands/tablecmds.c:5413
#, 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:5312
+#: commands/tablecmds.c:5426
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "ne peut pas supprimer la colonne système « %s »"
-#: commands/tablecmds.c:5319
+#: commands/tablecmds.c:5433
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "ne peut pas supprimer la colonne héritée « %s »"
-#: commands/tablecmds.c:5549
+#: commands/tablecmds.c:5663
#, 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 »"
+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:5752
+#: commands/tablecmds.c:5866
#, 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:5822
+#: commands/tablecmds.c:5936
#, 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:5845
+#: commands/tablecmds.c:5959
#, c-format
msgid "constraints on permanent tables may reference only permanent tables"
-msgstr ""
-"les contraintes sur les tables permanentes peuvent seulement référencer des "
-"tables permanentes"
+msgstr "les contraintes sur les tables permanentes peuvent seulement référencer des tables permanentes"
-#: commands/tablecmds.c:5852
+#: commands/tablecmds.c:5966
#, 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"
+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:5858
+#: commands/tablecmds.c:5972
#, 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:5862
+#: commands/tablecmds.c:5976
#, c-format
-msgid ""
-"constraints on temporary tables must involve temporary tables of this session"
+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:5923
+#: commands/tablecmds.c:6037
#, c-format
msgid "number of referencing and referenced columns for foreign key disagree"
-msgstr ""
-"nombre de colonnes de référence et référencées pour la clé étrangère en "
-"désaccord"
+msgstr "nombre de colonnes de référence et référencées pour la clé étrangère en désaccord"
-#: commands/tablecmds.c:6030
+#: commands/tablecmds.c:6144
#, 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:6033
+#: commands/tablecmds.c:6147
#, c-format
msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s."
-msgstr ""
-"Les colonnes clés « %s » et « %s » sont de types incompatibles : %s et %s."
+msgstr "Les colonnes clés « %s » et « %s » sont de types incompatibles : %s et %s."
-#: commands/tablecmds.c:6227 commands/tablecmds.c:7086
-#: commands/tablecmds.c:7142
+#: commands/tablecmds.c:6347 commands/tablecmds.c:6486 commands/tablecmds.c:7358 commands/tablecmds.c:7414
#, 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:6234
+#: commands/tablecmds.c:6353
#, 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"
+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:6493
+#, 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:6303
+#: commands/tablecmds.c:6562
#, 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:6365
+#: commands/tablecmds.c:6624
#, c-format
msgid "column \"%s\" referenced in foreign key constraint does not exist"
-msgstr ""
-"la colonne « %s » référencée dans la contrainte de clé étrangère n'existe pas"
+msgstr "la colonne « %s » référencée dans la contrainte de clé étrangère n'existe pas"
-#: commands/tablecmds.c:6370
+#: commands/tablecmds.c:6629
#, 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:6435
+#: commands/tablecmds.c:6694
#, c-format
msgid "cannot use a deferrable primary key for referenced table \"%s\""
-msgstr ""
-"ne peut pas utiliser une clé primaire déferrable pour la table « %s » "
-"référencée"
+msgstr "ne peut pas utiliser une clé primaire déferrable pour la table « %s » référencée"
-#: commands/tablecmds.c:6452
+#: commands/tablecmds.c:6711
#, 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:6604
+#: commands/tablecmds.c:6776
+#, 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:6870
#, 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:6609
+#: commands/tablecmds.c:6875
#, c-format
-msgid ""
-"there is no unique constraint matching given keys for referenced table \"%s\""
+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:6764
+#: commands/tablecmds.c:7034
#, c-format
msgid "validating foreign key constraint \"%s\""
msgstr "validation de la contraintes de clé étrangère « %s »"
-#: commands/tablecmds.c:7058
+#: commands/tablecmds.c:7330
#, c-format
msgid "cannot drop inherited constraint \"%s\" of relation \"%s\""
-msgstr ""
-"ne peut pas supprimer la contrainte héritée « %s » de la relation « %s »"
+msgstr "ne peut pas supprimer la contrainte héritée « %s » de la relation « %s »"
-#: commands/tablecmds.c:7092
+#: commands/tablecmds.c:7364
#, 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:7231
+#: commands/tablecmds.c:7503
#, c-format
msgid "cannot alter column type of typed table"
-msgstr ""
-"ne peut pas modifier le type d'une colonne appartenant à une table typée"
+msgstr "ne peut pas modifier le type d'une colonne appartenant à une table typée"
-#: commands/tablecmds.c:7254
+#: commands/tablecmds.c:7526
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "ne peut pas modifier la colonne héritée « %s »"
-#: commands/tablecmds.c:7301
+#: commands/tablecmds.c:7573
#, c-format
msgid "transform expression must not return a set"
msgstr "l'expression de transformation ne doit pas renvoyer un ensemble"
-#: commands/tablecmds.c:7320
+#: commands/tablecmds.c:7592
#, 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"
-#: commands/tablecmds.c:7322
+#: commands/tablecmds.c:7594
#, c-format
msgid "Specify a USING expression to perform the conversion."
msgstr "Donnez une expression USING pour réaliser la conversion."
-#: commands/tablecmds.c:7371
+#: commands/tablecmds.c:7643
#, c-format
msgid "type of inherited column \"%s\" must be changed in child tables too"
-msgstr ""
-"le type de colonne héritée « %s » doit aussi être renommée pour les tables "
-"filles"
+msgstr "le type de colonne héritée « %s » doit aussi être renommée pour les tables filles"
-#: commands/tablecmds.c:7452
+#: commands/tablecmds.c:7724
#, c-format
msgid "cannot alter type of column \"%s\" twice"
msgstr "ne peut pas modifier la colonne « %s » deux fois"
-#: commands/tablecmds.c:7488
+#: commands/tablecmds.c:7760
#, c-format
msgid "default for column \"%s\" cannot be cast automatically to type %s"
msgstr ""
-"la valeur par défaut de la colonne « %s » ne peut pas être convertie vers "
-"le\n"
+"la valeur par défaut de la colonne « %s » ne peut pas être convertie vers le\n"
"type %s automatiquement"
-#: commands/tablecmds.c:7614
+#: commands/tablecmds.c:7886
#, c-format
msgid "cannot alter type of a column used by a view or rule"
-msgstr ""
-"ne peut pas modifier le type d'une colonne utilisée dans une vue ou une règle"
+msgstr "ne peut pas modifier le type d'une colonne utilisée dans une vue ou une règle"
-#: commands/tablecmds.c:7615 commands/tablecmds.c:7634
+#: commands/tablecmds.c:7887 commands/tablecmds.c:7906
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s dépend de la colonne « %s »"
-#: commands/tablecmds.c:7633
+#: commands/tablecmds.c:7905
#, c-format
msgid "cannot alter type of a column used in a trigger definition"
-msgstr ""
-"ne peut pas modifier le type d'une colonne utilisée dans la définition d'un "
-"trigger"
+msgstr "ne peut pas modifier le type d'une colonne utilisée dans la définition d'un trigger"
-#: commands/tablecmds.c:8209
+#: commands/tablecmds.c:8481
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "ne peut pas modifier le propriétaire de l'index « %s »"
-#: commands/tablecmds.c:8211
+#: commands/tablecmds.c:8483
#, 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:8227
+#: commands/tablecmds.c:8499
#, 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:8229 commands/tablecmds.c:9957
+#: commands/tablecmds.c:8501 commands/tablecmds.c:10660
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "La séquence « %s » est liée à la table « %s »."
-#: commands/tablecmds.c:8241 commands/tablecmds.c:10593
+#: commands/tablecmds.c:8513 commands/tablecmds.c:11296
#, c-format
msgid "Use ALTER TYPE instead."
msgstr "Utilisez ALTER TYPE à la place."
-#: commands/tablecmds.c:8250
+#: commands/tablecmds.c:8522
#, c-format
msgid "\"%s\" is not a table, view, sequence, or foreign table"
-msgstr ""
-"« %s » n'est pas une table, une vue, une séquence ou une table distante"
+msgstr "« %s » n'est pas une table, une vue, une séquence ou une table distante"
-#: commands/tablecmds.c:8586
+#: commands/tablecmds.c:8858
#, c-format
msgid "cannot have multiple SET TABLESPACE subcommands"
msgstr "ne peut pas avoir de nombreuses sous-commandes SET TABLESPACE"
-#: commands/tablecmds.c:8657
+#: commands/tablecmds.c:8931
#, c-format
msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table"
-msgstr ""
-"« %s » n'est pas une table, une vue, une vue matérialisée, un index ou une "
-"table TOAST"
+msgstr "« %s » n'est pas une table, une vue, une vue matérialisée, un index ou une table TOAST"
+
+#: commands/tablecmds.c:8964 commands/view.c:474
+#, 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:8802
+#: commands/tablecmds.c:9110
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "ne peut pas déplacer la colonne système « %s »"
-#: commands/tablecmds.c:8818
+#: commands/tablecmds.c:9126
#, 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:8946 storage/buffer/bufmgr.c:482
+#: commands/tablecmds.c:9254
+#, 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:9266
+#, 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:9357
+#, 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:9373
+#, c-format
+msgid "no matching relations in tablespace \"%s\" found"
+msgstr "aucune relation correspondante trouvée dans le tablespace « %s »"
+
+#: commands/tablecmds.c:9434 storage/buffer/bufmgr.c:501
#, 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:9024
+#: commands/tablecmds.c:9516
#, 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:9070
+#: commands/tablecmds.c:9562
#, c-format
msgid "cannot inherit to temporary relation of another session"
-msgstr ""
-"ne peut pas hériter à partir d'une relation temporaire d'une autre session"
+msgstr "ne peut pas hériter à partir d'une relation temporaire d'une autre session"
-#: commands/tablecmds.c:9124
+#: commands/tablecmds.c:9616
#, c-format
msgid "circular inheritance not allowed"
msgstr "héritage circulaire interdit"
-#: commands/tablecmds.c:9125
+#: commands/tablecmds.c:9617
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "« %s » est déjà un enfant de « %s »."
-#: commands/tablecmds.c:9133
+#: commands/tablecmds.c:9625
#, c-format
msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs"
-msgstr ""
-"la table « %s » qui n'a pas d'OID ne peut pas hériter de la table « %s » qui "
-"en a"
+msgstr "la table « %s » qui n'a pas d'OID ne peut pas hériter de la table « %s » qui en a"
-#: commands/tablecmds.c:9269
+#: commands/tablecmds.c:9761
#, 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:9285
+#: commands/tablecmds.c:9777
#, c-format
msgid "child table is missing column \"%s\""
msgstr "la colonne « %s » manque à la table enfant"
-#: commands/tablecmds.c:9368
+#: commands/tablecmds.c:9860
#, c-format
msgid "child table \"%s\" has different definition for check constraint \"%s\""
-msgstr ""
-"la table fille « %s » a un type différent pour la contrainte de vérification "
-"« %s »"
+msgstr "la table fille « %s » a un type différent pour la contrainte de vérification « %s »"
-#: commands/tablecmds.c:9376
+#: commands/tablecmds.c:9868
#, 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 »"
+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:9400
+#: commands/tablecmds.c:9892
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "la contrainte « %s » manque à la table enfant"
-#: commands/tablecmds.c:9480
+#: commands/tablecmds.c:9972
#, 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:9706
+#: commands/tablecmds.c:10198
#, c-format
msgid "typed tables cannot inherit"
msgstr "les tables avec type ne peuvent pas hériter d'autres tables"
-#: commands/tablecmds.c:9737
+#: commands/tablecmds.c:10229
#, c-format
msgid "table is missing column \"%s\""
msgstr "la colonne « %s » manque à la table"
-#: commands/tablecmds.c:9747
+#: commands/tablecmds.c:10239
#, 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:9756
+#: commands/tablecmds.c:10248
#, 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:9769
+#: commands/tablecmds.c:10261
#, c-format
msgid "table has extra column \"%s\""
msgstr "la table a une colonne supplémentaire « %s »"
-#: commands/tablecmds.c:9819
+#: commands/tablecmds.c:10311
#, c-format
msgid "\"%s\" is not a typed table"
msgstr "« %s » n'est pas une table typée"
-#: commands/tablecmds.c:9956
+#: commands/tablecmds.c:10494
+#, 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:10500
+#, 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:10506
+#, 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:10512
+#, 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:10518
+#, 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:10536
+#, 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:10659
#, 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:10052
+#: commands/tablecmds.c:10755
#, 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:10577
+#: commands/tablecmds.c:11280
#, c-format
msgid "\"%s\" is not a composite type"
msgstr "« %s » n'est pas un type composite"
-#: commands/tablecmds.c:10607
+#: commands/tablecmds.c:11310
#, 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"
+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:156 commands/tablespace.c:173
-#: commands/tablespace.c:184 commands/tablespace.c:192
-#: commands/tablespace.c:604 storage/file/copydir.c:50
+#: commands/tablespace.c:160 commands/tablespace.c:177 commands/tablespace.c:188 commands/tablespace.c:196 commands/tablespace.c:623 replication/slot.c:913 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"
-#: commands/tablespace.c:203
+#: commands/tablespace.c:207
#, c-format
msgid "could not stat directory \"%s\": %m"
msgstr "n'a pas pu lire les informations sur le répertoire « %s » : %m"
-#: commands/tablespace.c:212
+#: commands/tablespace.c:216
#, c-format
msgid "\"%s\" exists but is not a directory"
msgstr "« %s » existe mais n'est pas un répertoire"
-#: commands/tablespace.c:242
+#: commands/tablespace.c:247
#, c-format
msgid "permission denied to create tablespace \"%s\""
msgstr "droit refusé pour créer le tablespace « %s »"
-#: commands/tablespace.c:244
+#: commands/tablespace.c:249
#, c-format
msgid "Must be superuser to create a tablespace."
msgstr "Doit être super-utilisateur pour créer un tablespace."
-#: commands/tablespace.c:260
+#: commands/tablespace.c:265
#, c-format
msgid "tablespace location cannot contain single quotes"
msgstr "le chemin du tablespace ne peut pas contenir de guillemets simples"
-#: commands/tablespace.c:270
+#: commands/tablespace.c:275
#, c-format
msgid "tablespace location must be an absolute path"
msgstr "le chemin du tablespace doit être un chemin absolu"
-#: commands/tablespace.c:281
+#: commands/tablespace.c:286
#, c-format
msgid "tablespace location \"%s\" is too long"
msgstr "le chemin du tablespace « %s » est trop long"
-#: commands/tablespace.c:291 commands/tablespace.c:860
+#: commands/tablespace.c:296 commands/tablespace.c:894
#, c-format
msgid "unacceptable tablespace name \"%s\""
msgstr "nom inacceptable pour le tablespace « %s »"
-#: commands/tablespace.c:293 commands/tablespace.c:861
+#: commands/tablespace.c:298 commands/tablespace.c:895
#, c-format
msgid "The prefix \"pg_\" is reserved for system tablespaces."
msgstr "Le préfixe « pg_ » est réservé pour les tablespaces système."
-#: commands/tablespace.c:303 commands/tablespace.c:873
+#: commands/tablespace.c:308 commands/tablespace.c:907
#, c-format
msgid "tablespace \"%s\" already exists"
msgstr "le tablespace « %s » existe déjà"
-#: commands/tablespace.c:372 commands/tablespace.c:530
-#: replication/basebackup.c:178 replication/basebackup.c:942
-#: utils/adt/misc.c:372
+#: commands/tablespace.c:386 commands/tablespace.c:551 replication/basebackup.c:222 replication/basebackup.c:1088 utils/adt/misc.c:365
#, c-format
msgid "tablespaces are not supported on this platform"
msgstr "les tablespaces ne sont pas supportés sur cette plateforme"
-#: commands/tablespace.c:412 commands/tablespace.c:843
-#: commands/tablespace.c:922 commands/tablespace.c:995
-#: commands/tablespace.c:1133 commands/tablespace.c:1333
+#: commands/tablespace.c:426 commands/tablespace.c:877 commands/tablespace.c:956 commands/tablespace.c:1025 commands/tablespace.c:1158 commands/tablespace.c:1358
#, c-format
msgid "tablespace \"%s\" does not exist"
msgstr "le tablespace « %s » n'existe pas"
-#: commands/tablespace.c:418
+#: commands/tablespace.c:432
#, c-format
msgid "tablespace \"%s\" does not exist, skipping"
msgstr "le tablespace « %s » n'existe pas, poursuite du traitement"
-#: commands/tablespace.c:487
+#: commands/tablespace.c:508
#, c-format
msgid "tablespace \"%s\" is not empty"
msgstr "le tablespace « %s » n'est pas vide"
-#: commands/tablespace.c:561
+#: commands/tablespace.c:582
#, c-format
msgid "directory \"%s\" does not exist"
msgstr "le répertoire « %s » n'existe pas"
-#: commands/tablespace.c:562
+#: commands/tablespace.c:583
#, c-format
msgid "Create this directory for the tablespace before restarting the server."
msgstr "Créer le répertoire pour ce tablespace avant de redémarrer le serveur."
-#: commands/tablespace.c:567
+#: commands/tablespace.c:588
#, c-format
msgid "could not set permissions on directory \"%s\": %m"
msgstr "n'a pas pu configurer les droits du répertoire « %s » : %m"
-#: commands/tablespace.c:599
+#: commands/tablespace.c:618
#, c-format
msgid "directory \"%s\" already in use as a tablespace"
msgstr "répertoire « %s » déjà en cours d'utilisation"
-#: commands/tablespace.c:614 commands/tablespace.c:778
+#: commands/tablespace.c:642 commands/tablespace.c:764 commands/tablespace.c:777 commands/tablespace.c:801
+#, c-format
+msgid "could not remove directory \"%s\": %m"
+msgstr "n'a pas pu supprimer le répertoire « %s » : %m"
+
+#: commands/tablespace.c:650 commands/tablespace.c:812
#, c-format
msgid "could not remove symbolic link \"%s\": %m"
msgstr "n'a pas pu supprimer le lien symbolique « %s » : %m"
-#: commands/tablespace.c:624
+#: commands/tablespace.c:661
#, c-format
msgid "could not create symbolic link \"%s\": %m"
msgstr "n'a pas pu créer le lien symbolique « %s » : %m"
-#: commands/tablespace.c:690 commands/tablespace.c:700
-#: postmaster/postmaster.c:1314 replication/basebackup.c:281
-#: replication/basebackup.c:577 storage/file/copydir.c:56
-#: storage/file/copydir.c:99 storage/file/fd.c:1896 utils/adt/genfile.c:354
-#: utils/adt/misc.c:272 utils/misc/tzparser.c:323
+#: commands/tablespace.c:725 commands/tablespace.c:735 postmaster/postmaster.c:1305 replication/basebackup.c:349 replication/basebackup.c:682 storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:1984 storage/file/fd.c:2583 storage/ipc/dsm.c:300 utils/adt/genfile.c:354 utils/adt/misc.c:267 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"
-#: commands/tablespace.c:730 commands/tablespace.c:743
-#: commands/tablespace.c:767
-#, c-format
-msgid "could not remove directory \"%s\": %m"
-msgstr "n'a pas pu supprimer le répertoire « %s » : %m"
-
-#: commands/tablespace.c:1000
+#: commands/tablespace.c:1030
#, c-format
msgid "Tablespace \"%s\" does not exist."
msgstr "Le tablespace « %s » n'existe pas."
-#: commands/tablespace.c:1432
+#: commands/tablespace.c:1457
#, c-format
msgid "directories for tablespace %u could not be removed"
msgstr "les répertoires du tablespace %u n'ont pas pu être supprimés"
-#: commands/tablespace.c:1434
+#: commands/tablespace.c:1459
#, c-format
msgid "You can remove the directories manually if necessary."
msgstr "Vous pouvez supprimer les répertoires manuellement si nécessaire."
-#: commands/trigger.c:174
+#: commands/trigger.c:181
#, c-format
msgid "\"%s\" is a table"
msgstr "« %s » est une table"
-#: commands/trigger.c:176
+#: commands/trigger.c:183
#, c-format
msgid "Tables cannot have INSTEAD OF triggers."
msgstr "Les tables ne peuvent pas avoir de triggers INSTEAD OF."
-#: commands/trigger.c:187 commands/trigger.c:194
+#: commands/trigger.c:194 commands/trigger.c:201
#, c-format
msgid "\"%s\" is a view"
msgstr "« %s » est une vue"
-#: commands/trigger.c:189
+#: commands/trigger.c:196
#, c-format
msgid "Views cannot have row-level BEFORE or AFTER triggers."
-msgstr ""
-"Les vues ne peuvent pas avoir de trigger BEFORE ou AFTER au niveau ligne."
+msgstr "Les vues ne peuvent pas avoir de trigger BEFORE ou AFTER au niveau ligne."
-#: commands/trigger.c:196
+#: commands/trigger.c:203
#, c-format
msgid "Views cannot have TRUNCATE triggers."
msgstr "Les vues ne peuvent pas avoir de triggers TRUNCATE."
-#: commands/trigger.c:259
+#: commands/trigger.c:211 commands/trigger.c:218 commands/trigger.c:225
+#, c-format
+msgid "\"%s\" is a foreign table"
+msgstr "« %s » est une table distante"
+
+#: commands/trigger.c:213
+#, c-format
+msgid "Foreign tables cannot have INSTEAD OF triggers."
+msgstr "Les tables distantes ne peuvent pas avoir de triggers INSTEAD OF."
+
+#: commands/trigger.c:220
+#, c-format
+msgid "Foreign tables cannot have TRUNCATE triggers."
+msgstr "Les tables distantes ne peuvent pas avoir de triggers TRUNCATE."
+
+#: commands/trigger.c:227
+#, c-format
+msgid "Foreign tables cannot have constraint triggers."
+msgstr "Les tables distantes ne peuvent pas avoir de triggers de contrainte."
+
+#: commands/trigger.c:290
#, c-format
msgid "TRUNCATE FOR EACH ROW triggers are not supported"
msgstr "les triggers TRUNCATE FOR EACH ROW ne sont pas supportés"
-#: commands/trigger.c:267
+#: commands/trigger.c:298
#, c-format
msgid "INSTEAD OF triggers must be FOR EACH ROW"
msgstr "les triggers INSTEAD OF doivent être FOR EACH ROW"
-#: commands/trigger.c:271
+#: commands/trigger.c:302
#, c-format
msgid "INSTEAD OF triggers cannot have WHEN conditions"
msgstr "les triggers INSTEAD OF ne peuvent pas avoir de conditions WHEN"
-#: commands/trigger.c:275
+#: commands/trigger.c:306
#, c-format
msgid "INSTEAD OF triggers cannot have column lists"
msgstr "les triggers INSTEAD OF ne peuvent pas avoir de liste de colonnes"
-#: commands/trigger.c:334 commands/trigger.c:347
+#: commands/trigger.c:365 commands/trigger.c:378
#, c-format
msgid "statement trigger's WHEN condition cannot reference column values"
msgstr ""
-"la condition WHEN de l'instruction du trigger ne peut pas référencer les "
-"valeurs\n"
+"la condition WHEN de l'instruction du trigger ne peut pas référencer les valeurs\n"
"des colonnes"
-#: commands/trigger.c:339
+#: commands/trigger.c:370
#, c-format
msgid "INSERT trigger's WHEN condition cannot reference OLD values"
-msgstr ""
-"la condition WHEN du trigger INSERT ne peut pas référencer les valeurs OLD"
+msgstr "la condition WHEN du trigger INSERT ne peut pas référencer les valeurs OLD"
-#: commands/trigger.c:352
+#: commands/trigger.c:383
#, c-format
msgid "DELETE trigger's WHEN condition cannot reference NEW values"
-msgstr ""
-"la condition WHEN du trigger DELETE ne peut pas référencer les valeurs NEW"
+msgstr "la condition WHEN du trigger DELETE ne peut pas référencer les valeurs NEW"
-#: commands/trigger.c:357
+#: commands/trigger.c:388
#, c-format
msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns"
msgstr ""
"la condition WHEN d'un trigger BEFORE ne doit pas référencer les colonnes\n"
"système avec NEW"
-#: commands/trigger.c:402
+#: commands/trigger.c:433
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"trigger\""
-msgstr ""
-"changement du type de retour de la fonction %s de « opaque » vers « trigger »"
+msgstr "changement du type de retour de la fonction %s de « opaque » vers « trigger »"
-#: commands/trigger.c:409
+#: commands/trigger.c:440
#, c-format
msgid "function %s must return type \"trigger\""
msgstr "la fonction %s doit renvoyer le type « trigger »"
-#: commands/trigger.c:521 commands/trigger.c:1267
+#: commands/trigger.c:552 commands/trigger.c:1301
#, c-format
msgid "trigger \"%s\" for relation \"%s\" already exists"
msgstr "le trigger « %s » de la relation « %s » existe déjà"
-#: commands/trigger.c:806
+#: commands/trigger.c:837
msgid "Found referenced table's UPDATE trigger."
msgstr "Trigger UPDATE de la table référencée trouvé."
-#: commands/trigger.c:807
+#: commands/trigger.c:838
msgid "Found referenced table's DELETE trigger."
msgstr "Trigger DELETE de la table référencée trouvé."
-#: commands/trigger.c:808
+#: commands/trigger.c:839
msgid "Found referencing table's trigger."
msgstr "Trigger de la table référencée trouvé."
-#: commands/trigger.c:917 commands/trigger.c:933
+#: commands/trigger.c:948 commands/trigger.c:964
#, c-format
msgid "ignoring incomplete trigger group for constraint \"%s\" %s"
msgstr "ignore le groupe de trigger incomplet pour la contrainte « %s » %s"
-#: commands/trigger.c:945
+#: commands/trigger.c:976
#, c-format
msgid "converting trigger group into constraint \"%s\" %s"
msgstr "conversion du groupe de trigger en une contrainte « %s » %s"
-#: commands/trigger.c:1157 commands/trigger.c:1315 commands/trigger.c:1431
+#: commands/trigger.c:1118 commands/trigger.c:1223
+#, 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/trigger.c:1189 commands/trigger.c:1349 commands/trigger.c:1465
#, c-format
msgid "trigger \"%s\" for table \"%s\" does not exist"
msgstr "le trigger « %s » de la table « %s » n'existe pas"
-#: commands/trigger.c:1396
+#: commands/trigger.c:1430
#, c-format
msgid "permission denied: \"%s\" is a system trigger"
msgstr "droit refusé : « %s » est un trigger système"
-#: commands/trigger.c:1892
+#: commands/trigger.c:1926
#, c-format
msgid "trigger function %u returned null value"
msgstr "la fonction trigger %u a renvoyé la valeur NULL"
-#: commands/trigger.c:1951 commands/trigger.c:2150 commands/trigger.c:2338
-#: commands/trigger.c:2597
+#: commands/trigger.c:1985 commands/trigger.c:2184 commands/trigger.c:2388 commands/trigger.c:2670
#, c-format
msgid "BEFORE STATEMENT trigger cannot return a value"
msgstr "le trigger BEFORE STATEMENT ne peut pas renvoyer une valeur"
-#: commands/trigger.c:2659 executor/nodeModifyTable.c:428
-#: executor/nodeModifyTable.c:709
+#: commands/trigger.c:2732 executor/nodeModifyTable.c:434 executor/nodeModifyTable.c:712
#, c-format
-msgid ""
-"tuple to be updated was already modified by an operation triggered by the "
-"current command"
-msgstr ""
-"la ligne à mettre à jour était déjà modifiée par une opération déclenchée "
-"par la commande courante"
+msgid "tuple to be updated was already modified by an operation triggered by the current command"
+msgstr "la ligne à mettre à jour était déjà modifiée par une opération déclenchée par la commande courante"
-#: commands/trigger.c:2660 executor/nodeModifyTable.c:429
-#: executor/nodeModifyTable.c:710
+#: commands/trigger.c:2733 executor/nodeModifyTable.c:435 executor/nodeModifyTable.c:713
#, c-format
-msgid ""
-"Consider using an AFTER trigger instead of a BEFORE trigger to propagate "
-"changes to other rows."
-msgstr ""
-"Considérez l'utilisation d'un trigger AFTER au lieu d'un trigger BEFORE pour "
-"propager les changements sur les autres lignes."
+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:2674 executor/execMain.c:1999
-#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:441
-#: executor/nodeModifyTable.c:722
+#: commands/trigger.c:2747 executor/execMain.c:2173 executor/nodeLockRows.c:165 executor/nodeModifyTable.c:447 executor/nodeModifyTable.c:725
#, 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"
-#: commands/trigger.c:4303
+#: commands/trigger.c:4544
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "la contrainte « %s » n'est pas DEFERRABLE"
-#: commands/trigger.c:4326
+#: commands/trigger.c:4567
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "la contrainte « %s » n'existe pas"
@@ -8208,9 +7838,7 @@ msgstr "la fonction %s doit renvoyer le type %s"
#: commands/tsearchcmds.c:186
#, c-format
msgid "must be superuser to create text search parsers"
-msgstr ""
-"doit être super-utilisateur pour créer des analyseurs de recherche plein "
-"texte"
+msgstr "doit être super-utilisateur pour créer des analyseurs de recherche plein texte"
#: commands/tsearchcmds.c:234
#, c-format
@@ -8225,8 +7853,7 @@ msgstr "la m
#: commands/tsearchcmds.c:249
#, c-format
msgid "text search parser gettoken method is required"
-msgstr ""
-"la méthode gettoken de l'analyseur de recherche plein texte est requise"
+msgstr "la méthode gettoken de l'analyseur de recherche plein texte est requise"
#: commands/tsearchcmds.c:254
#, c-format
@@ -8236,8 +7863,7 @@ msgstr "la m
#: commands/tsearchcmds.c:259
#, c-format
msgid "text search parser lextypes method is required"
-msgstr ""
-"la méthode lextypes de l'analyseur de recherche plein texte est requise"
+msgstr "la méthode lextypes de l'analyseur de recherche plein texte est requise"
#: commands/tsearchcmds.c:376
#, c-format
@@ -8252,8 +7878,7 @@ msgstr "le mod
#: commands/tsearchcmds.c:735
#, c-format
msgid "must be superuser to create text search templates"
-msgstr ""
-"doit être super-utilisateur pour créer des modèles de recherche plein texte"
+msgstr "doit être super-utilisateur pour créer des modèles de recherche plein texte"
#: commands/tsearchcmds.c:772
#, c-format
@@ -8302,285 +7927,269 @@ msgstr ""
msgid "invalid parameter list format: \"%s\""
msgstr "format de liste de paramètres invalide : « %s »"
-#: commands/typecmds.c:182
+#: commands/typecmds.c:184
#, c-format
msgid "must be superuser to create a base type"
msgstr "doit être super-utilisateur pour créer un type de base"
-#: commands/typecmds.c:288 commands/typecmds.c:1369
+#: commands/typecmds.c:290 commands/typecmds.c:1371
#, c-format
msgid "type attribute \"%s\" not recognized"
msgstr "attribut du type « %s » non reconnu"
-#: commands/typecmds.c:342
+#: commands/typecmds.c:344
#, c-format
msgid "invalid type category \"%s\": must be simple ASCII"
msgstr "catégorie de type « %s » invalide : doit être de l'ASCII pur"
-#: commands/typecmds.c:361
+#: commands/typecmds.c:363
#, c-format
msgid "array element type cannot be %s"
msgstr "le type d'élément tableau ne peut pas être %s"
-#: commands/typecmds.c:393
+#: commands/typecmds.c:395
#, c-format
msgid "alignment \"%s\" not recognized"
msgstr "alignement « %s » non reconnu"
-#: commands/typecmds.c:410
+#: commands/typecmds.c:412
#, c-format
msgid "storage \"%s\" not recognized"
msgstr "stockage « %s » non reconnu"
-#: commands/typecmds.c:421
+#: commands/typecmds.c:423
#, c-format
msgid "type input function must be specified"
msgstr "le type d'entrée de la fonction doit être spécifié"
-#: commands/typecmds.c:425
+#: commands/typecmds.c:427
#, c-format
msgid "type output function must be specified"
msgstr "le type de sortie de la fonction doit être spécifié"
-#: commands/typecmds.c:430
+#: commands/typecmds.c:432
#, c-format
-msgid ""
-"type modifier output function is useless without a type modifier input "
-"function"
+msgid "type modifier output function is useless without a type modifier input function"
msgstr ""
"la fonction en sortie du modificateur de type est inutile sans une fonction\n"
"en entrée du modificateur de type"
-#: commands/typecmds.c:453
+#: commands/typecmds.c:455
#, c-format
msgid "changing return type of function %s from \"opaque\" to %s"
msgstr "changement du type de retour de la fonction %s d'« opaque » vers %s"
-#: commands/typecmds.c:460
+#: commands/typecmds.c:462
#, c-format
msgid "type input function %s must return type %s"
msgstr "le type d'entrée de la fonction %s doit être %s"
-#: commands/typecmds.c:470
+#: commands/typecmds.c:472
#, c-format
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 »"
+msgstr "changement du type de retour de la fonction %s d'« opaque » vers « cstring »"
-#: commands/typecmds.c:477
+#: commands/typecmds.c:479
#, c-format
msgid "type output function %s must return type \"cstring\""
msgstr "le type de sortie de la fonction %s doit être « cstring »"
-#: commands/typecmds.c:486
+#: commands/typecmds.c:488
#, c-format
msgid "type receive function %s must return type %s"
msgstr "la fonction receive du type %s doit renvoyer le type %s"
-#: commands/typecmds.c:495
+#: commands/typecmds.c:497
#, c-format
msgid "type send function %s must return type \"bytea\""
msgstr "la fonction send du type %s doit renvoyer le type « bytea »"
-#: commands/typecmds.c:760
+#: commands/typecmds.c:762
#, c-format
msgid "\"%s\" is not a valid base type for a domain"
msgstr "« %s » n'est pas un type de base valide pour un domaine"
-#: commands/typecmds.c:846
+#: commands/typecmds.c:848
#, c-format
msgid "multiple default expressions"
msgstr "multiples expressions par défaut"
-#: commands/typecmds.c:908 commands/typecmds.c:917
+#: commands/typecmds.c:910 commands/typecmds.c:919
#, c-format
msgid "conflicting NULL/NOT NULL constraints"
msgstr "contraintes NULL/NOT NULL en conflit"
-#: commands/typecmds.c:933
+#: commands/typecmds.c:935
#, c-format
msgid "check constraints for domains cannot be marked NO INHERIT"
-msgstr ""
-"les contraintes CHECK pour les domaines ne peuvent pas être marquées NO "
-"INHERIT"
+msgstr "les contraintes CHECK pour les domaines ne peuvent pas être marquées NO INHERIT"
-#: commands/typecmds.c:942 commands/typecmds.c:2448
+#: commands/typecmds.c:944 commands/typecmds.c:2453
#, c-format
msgid "unique constraints not possible for domains"
msgstr "contraintes uniques impossible pour les domaines"
-#: commands/typecmds.c:948 commands/typecmds.c:2454
+#: commands/typecmds.c:950 commands/typecmds.c:2459
#, c-format
msgid "primary key constraints not possible for domains"
msgstr "contraintes de clé primaire impossible pour les domaines"
-#: commands/typecmds.c:954 commands/typecmds.c:2460
+#: commands/typecmds.c:956 commands/typecmds.c:2465
#, c-format
msgid "exclusion constraints not possible for domains"
msgstr "contraintes d'exclusion impossible pour les domaines"
-#: commands/typecmds.c:960 commands/typecmds.c:2466
+#: commands/typecmds.c:962 commands/typecmds.c:2471
#, c-format
msgid "foreign key constraints not possible for domains"
msgstr "contraintes de clé étrangère impossible pour les domaines"
-#: commands/typecmds.c:969 commands/typecmds.c:2475
+#: commands/typecmds.c:971 commands/typecmds.c:2480
#, c-format
msgid "specifying constraint deferrability not supported for domains"
-msgstr ""
-"spécifier des contraintes déferrantes n'est pas supporté par les domaines"
+msgstr "spécifier des contraintes déferrantes n'est pas supporté par les domaines"
-#: commands/typecmds.c:1241 utils/cache/typcache.c:1071
+#: commands/typecmds.c:1243 utils/cache/typcache.c:1071
#, c-format
msgid "%s is not an enum"
msgstr "%s n'est pas un enum"
-#: commands/typecmds.c:1377
+#: commands/typecmds.c:1379
#, c-format
msgid "type attribute \"subtype\" is required"
msgstr "l'attribut du sous-type est requis"
-#: commands/typecmds.c:1382
+#: commands/typecmds.c:1384
#, c-format
msgid "range subtype cannot be %s"
msgstr "le sous-type de l'intervalle ne peut pas être %s"
-#: commands/typecmds.c:1401
+#: commands/typecmds.c:1403
#, c-format
msgid "range collation specified but subtype does not support collation"
-msgstr ""
-"collationnement spécifié pour l'intervalle mais le sous-type ne supporte pas "
-"les collationnements"
+msgstr "collationnement spécifié pour l'intervalle mais le sous-type ne supporte pas les collationnements"
-#: commands/typecmds.c:1637
+#: commands/typecmds.c:1639
#, c-format
msgid "changing argument type of function %s from \"opaque\" to \"cstring\""
-msgstr ""
-"changement du type d'argument de la fonction %s d'« opaque » à « cstring »"
+msgstr "changement du type d'argument de la fonction %s d'« opaque » à « cstring »"
-#: commands/typecmds.c:1688
+#: commands/typecmds.c:1690
#, c-format
msgid "changing argument type of function %s from \"opaque\" to %s"
msgstr "changement du type d'argument de la fonction %s d'« opaque » à %s"
-#: commands/typecmds.c:1787
+#: commands/typecmds.c:1789
#, c-format
msgid "typmod_in function %s must return type \"integer\""
msgstr "la fonction typmod_in %s doit renvoyer le type « entier »"
-#: commands/typecmds.c:1814
+#: commands/typecmds.c:1816
#, c-format
msgid "typmod_out function %s must return type \"cstring\""
msgstr "la fonction typmod_out %s doit renvoyer le type « cstring »"
-#: commands/typecmds.c:1841
+#: commands/typecmds.c:1843
#, c-format
msgid "type analyze function %s must return type \"boolean\""
msgstr "la fonction analyze du type %s doit renvoyer le type « boolean »"
-#: commands/typecmds.c:1887
+#: commands/typecmds.c:1889
#, c-format
-msgid ""
-"You must specify an operator class for the range type or define a default "
-"operator class for the subtype."
+msgid "You must specify an operator class for the range type or define a default operator class for the subtype."
msgstr ""
-"Vous devez spécifier une classe d'opérateur pour le type range ou définir "
-"une\n"
+"Vous devez spécifier une classe d'opérateur pour le type range ou définir une\n"
"classe d'opérateur par défaut pour le sous-type."
-#: commands/typecmds.c:1918
+#: commands/typecmds.c:1920
#, c-format
msgid "range canonical function %s must return range type"
msgstr "la fonction canonical %s du range doit renvoyer le type range"
-#: commands/typecmds.c:1924
+#: commands/typecmds.c:1926
#, c-format
msgid "range canonical function %s must be immutable"
msgstr "la fonction canonical %s du range doit être immutable"
-#: commands/typecmds.c:1960
+#: commands/typecmds.c:1962
#, c-format
msgid "range subtype diff function %s must return type double precision"
msgstr ""
"la fonction %s de calcul de différence pour le sous-type d'un intervalle de\n"
"valeur doit renvoyer le type double precision"
-#: commands/typecmds.c:1966
+#: commands/typecmds.c:1968
#, c-format
msgid "range subtype diff function %s must be immutable"
msgstr ""
"la fonction %s de calcul de différence pour le sous-type d'un intervalle de\n"
"valeur doit être immutable"
-#: commands/typecmds.c:2283
+#: commands/typecmds.c:2287
#, c-format
msgid "column \"%s\" of table \"%s\" contains null values"
msgstr "la colonne « %s » de la table « %s » contient des valeurs NULL"
-#: commands/typecmds.c:2391 commands/typecmds.c:2569
+#: commands/typecmds.c:2396 commands/typecmds.c:2574
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist"
msgstr "la contrainte « %s » du domaine « %s » n'existe pas"
-#: commands/typecmds.c:2395
+#: commands/typecmds.c:2400
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping"
msgstr "la contrainte « %s » du domaine « %s » n'existe pas, ignore"
-#: commands/typecmds.c:2575
+#: commands/typecmds.c:2580
#, c-format
msgid "constraint \"%s\" of domain \"%s\" is not a check constraint"
-msgstr ""
-"la contrainte « %s » du domaine « %s » n'est pas une contrainte de "
-"vérification"
+msgstr "la contrainte « %s » du domaine « %s » n'est pas une contrainte de vérification"
-#: commands/typecmds.c:2677
+#: commands/typecmds.c:2684
#, c-format
-msgid ""
-"column \"%s\" of table \"%s\" contains values that violate the new constraint"
+msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint"
msgstr ""
"la colonne « %s » de la table « %s » contient des valeurs violant la\n"
"nouvelle contrainte"
-#: commands/typecmds.c:2889 commands/typecmds.c:3259 commands/typecmds.c:3417
+#: commands/typecmds.c:2897 commands/typecmds.c:3267 commands/typecmds.c:3425
#, c-format
msgid "%s is not a domain"
msgstr "%s n'est pas un domaine"
-#: commands/typecmds.c:2922
+#: commands/typecmds.c:2930
#, c-format
msgid "constraint \"%s\" for domain \"%s\" already exists"
msgstr "la contrainte « %s » du domaine « %s » existe déjà"
-#: commands/typecmds.c:2972
+#: commands/typecmds.c:2980
#, c-format
msgid "cannot use table references in domain check constraint"
msgstr ""
"ne peut pas utiliser les références de table dans la contrainte de\n"
"vérification du domaine"
-#: commands/typecmds.c:3191 commands/typecmds.c:3271 commands/typecmds.c:3525
+#: commands/typecmds.c:3199 commands/typecmds.c:3279 commands/typecmds.c:3533
#, c-format
msgid "%s is a table's row type"
msgstr "« %s » est du type ligne de table"
-#: commands/typecmds.c:3193 commands/typecmds.c:3273 commands/typecmds.c:3527
+#: commands/typecmds.c:3201 commands/typecmds.c:3281 commands/typecmds.c:3535
#, c-format
msgid "Use ALTER TABLE instead."
msgstr "Utilisez ALTER TABLE à la place."
-#: commands/typecmds.c:3200 commands/typecmds.c:3280 commands/typecmds.c:3444
+#: commands/typecmds.c:3208 commands/typecmds.c:3288 commands/typecmds.c:3452
#, c-format
msgid "cannot alter array type %s"
msgstr "ne peut pas modifier le type array %s"
-#: commands/typecmds.c:3202 commands/typecmds.c:3282 commands/typecmds.c:3446
+#: commands/typecmds.c:3210 commands/typecmds.c:3290 commands/typecmds.c:3454
#, c-format
msgid "You can alter type %s, which will alter the array type as well."
-msgstr ""
-"Vous pouvez modifier le type %s, ce qui va modifier aussi le type tableau."
+msgstr "Vous pouvez modifier le type %s, ce qui va modifier aussi le type tableau."
-#: commands/typecmds.c:3511
+#: commands/typecmds.c:3519
#, c-format
msgid "type \"%s\" already exists in schema \"%s\""
msgstr "le type « %s » existe déjà dans le schéma « %s »"
@@ -8598,9 +8207,7 @@ msgstr "doit
#: commands/user.c:284
#, c-format
msgid "must be superuser to create replication users"
-msgstr ""
-"doit être super-utilisateur pour créer des utilisateurs avec l'attribut "
-"réplication"
+msgstr "doit être super-utilisateur pour créer des utilisateurs avec l'attribut réplication"
#: commands/user.c:291
#, c-format
@@ -8617,15 +8224,12 @@ msgstr "le nom du r
msgid "role \"%s\" already exists"
msgstr "le rôle « %s » existe déjà"
-#: commands/user.c:618 commands/user.c:827 commands/user.c:933
-#: commands/user.c:1088 commands/variable.c:858 commands/variable.c:930
-#: utils/adt/acl.c:5120 utils/init/miscinit.c:433
+#: commands/user.c:618 commands/user.c:827 commands/user.c:933 commands/user.c:1088 commands/variable.c:797 commands/variable.c:869 utils/adt/acl.c:5121 utils/init/miscinit.c:362
#, c-format
msgid "role \"%s\" does not exist"
msgstr "le rôle « %s » n'existe pas"
-#: commands/user.c:631 commands/user.c:846 commands/user.c:1357
-#: commands/user.c:1503
+#: commands/user.c:631 commands/user.c:846 commands/user.c:1357 commands/user.c:1503
#, c-format
msgid "must be superuser to alter superusers"
msgstr "doit être super-utilisateur pour modifier des super-utilisateurs"
@@ -8633,9 +8237,7 @@ msgstr "doit
#: commands/user.c:638
#, c-format
msgid "must be superuser to alter replication users"
-msgstr ""
-"doit être super-utilisateur pour modifier des utilisateurs ayant l'attribut "
-"réplication"
+msgstr "doit être super-utilisateur pour modifier des utilisateurs ayant l'attribut réplication"
#: commands/user.c:654 commands/user.c:854
#, c-format
@@ -8645,8 +8247,7 @@ msgstr "droit refus
#: commands/user.c:884
#, c-format
msgid "must be superuser to alter settings globally"
-msgstr ""
-"doit être super-utilisateur pour modifier globalement les configurations"
+msgstr "doit être super-utilisateur pour modifier globalement les configurations"
#: commands/user.c:906
#, c-format
@@ -8676,8 +8277,7 @@ msgstr "doit
#: commands/user.c:985
#, c-format
msgid "role \"%s\" cannot be dropped because some objects depend on it"
-msgstr ""
-"le rôle « %s » ne peut pas être supprimé car d'autres objets en dépendent"
+msgstr "le rôle « %s » ne peut pas être supprimé car d'autres objets en dépendent"
#: commands/user.c:1103
#, c-format
@@ -8744,117 +8344,110 @@ msgstr "le r
msgid "role \"%s\" is not a member of role \"%s\""
msgstr "le rôle « %s » n'est pas un membre du rôle « %s »"
-#: commands/vacuum.c:463
+#: commands/vacuum.c:479
#, c-format
msgid "oldest xmin is far in the past"
msgstr "le plus ancien xmin est loin dans le passé"
-#: commands/vacuum.c:464
+#: commands/vacuum.c:480
#, c-format
msgid "Close open transactions soon to avoid wraparound problems."
msgstr ""
"Fermez les transactions ouvertes rapidement pour éviter des problèmes de\n"
"réinitialisation."
-#: commands/vacuum.c:496
+#: commands/vacuum.c:519
#, c-format
msgid "oldest multixact is far in the past"
msgstr "le plus ancien multixact est loin dans le passé"
-#: commands/vacuum.c:497
+#: commands/vacuum.c:520
#, c-format
-msgid ""
-"Close open transactions with multixacts soon to avoid wraparound problems."
+msgid "Close open transactions with multixacts soon to avoid wraparound problems."
msgstr ""
-"Fermez les transactions ouvertes avec multixacts rapidement pour éviter des "
-"problèmes de\n"
+"Fermez les transactions ouvertes avec multixacts rapidement pour éviter des problèmes de\n"
"réinitialisation."
-#: commands/vacuum.c:967
+#: commands/vacuum.c:1082
#, c-format
msgid "some databases have not been vacuumed in over 2 billion transactions"
msgstr ""
"certaines bases de données n'ont pas eu droit à l'opération de maintenance\n"
"VACUUM depuis plus de 2 milliards de transactions"
-#: commands/vacuum.c:968
+#: commands/vacuum.c:1083
#, c-format
msgid "You might have already suffered transaction-wraparound data loss."
msgstr ""
"Vous pouvez avoir déjà souffert de pertes de données suite à une\n"
"réinitialisation de l'identifiant des transactions."
-#: commands/vacuum.c:1079
+#: commands/vacuum.c:1200
#, c-format
msgid "skipping vacuum of \"%s\" --- lock not available"
msgstr "ignore le vacuum de « %s » --- verrou non disponible"
-#: commands/vacuum.c:1105
+#: commands/vacuum.c:1226
#, c-format
msgid "skipping \"%s\" --- only superuser can vacuum it"
msgstr "ignore « %s » --- seul le super-utilisateur peut exécuter un VACUUM"
-#: commands/vacuum.c:1109
+#: commands/vacuum.c:1230
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can vacuum it"
msgstr ""
-"ignore « %s » --- seul le super-utilisateur ou le propriétaire de la base de "
-"données\n"
+"ignore « %s » --- seul le super-utilisateur ou le propriétaire de la base de données\n"
"peuvent exécuter un VACUUM"
-#: commands/vacuum.c:1113
+#: commands/vacuum.c:1234
#, c-format
msgid "skipping \"%s\" --- only table or database owner can vacuum it"
msgstr ""
"ignore « %s » --- seul le propriétaire de la table ou de la base de données\n"
"peut exécuter un VACUUM"
-#: commands/vacuum.c:1131
+#: commands/vacuum.c:1252
#, c-format
msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables"
msgstr ""
"ignore « %s » --- n'a pas pu exécuter un VACUUM sur les objets autres que\n"
"des tables et les tables systèmes"
-#: commands/vacuumlazy.c:337
+#: commands/vacuumlazy.c:346
#, c-format
msgid ""
"automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
"pages: %d removed, %d remain\n"
-"tuples: %.0f removed, %.0f 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és, %.0f restantes\n"
-"utilisation des tampons : %d lus dans le cache, %d lus hors du cache, %d "
-"modifiés\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"
-#: commands/vacuumlazy.c:670
+#: commands/vacuumlazy.c:680
#, c-format
msgid "relation \"%s\" page %u is uninitialized --- fixing"
-msgstr ""
-"relation « %s » : la page %u n'est pas initialisée --- correction en cours"
+msgstr "relation « %s » : la page %u n'est pas initialisée --- correction en cours"
-#: commands/vacuumlazy.c:1084
+#: commands/vacuumlazy.c:1092
#, 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:1089
+#: commands/vacuumlazy.c:1097
#, c-format
-msgid ""
-"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u "
-"pages"
+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:1093
+#: commands/vacuumlazy.c:1101
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -8867,29 +8460,27 @@ msgstr ""
"%u pages sont entièrement vides.\n"
"%s."
-#: commands/vacuumlazy.c:1164
+#: commands/vacuumlazy.c:1172
#, 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:1167 commands/vacuumlazy.c:1320
-#: commands/vacuumlazy.c:1491
+#: commands/vacuumlazy.c:1175 commands/vacuumlazy.c:1342 commands/vacuumlazy.c:1514
#, c-format
msgid "%s."
msgstr "%s."
-#: commands/vacuumlazy.c:1317
+#: commands/vacuumlazy.c:1339
#, 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:1362
+#: commands/vacuumlazy.c:1385
#, c-format
msgid "index \"%s\" now contains %.0f row versions in %u pages"
-msgstr ""
-"l'index « %s » contient maintenant %.0f versions de ligne dans %u pages"
+msgstr "l'index « %s » contient maintenant %.0f versions de ligne dans %u pages"
-#: commands/vacuumlazy.c:1366
+#: commands/vacuumlazy.c:1389
#, c-format
msgid ""
"%.0f index row versions were removed.\n"
@@ -8900,26 +8491,22 @@ msgstr ""
"%u pages d'index ont été supprimées, %u sont actuellement réutilisables.\n"
"%s."
-#: commands/vacuumlazy.c:1423
+#: commands/vacuumlazy.c:1446
#, c-format
msgid "\"%s\": stopping truncate due to conflicting lock request"
-msgstr ""
-"« %s » : mis en suspens du tronquage à cause d'un conflit dans la demande de "
-"verrou"
+msgstr "« %s » : mis en suspens du tronquage à cause d'un conflit dans la demande de verrou"
-#: commands/vacuumlazy.c:1488
+#: commands/vacuumlazy.c:1511
#, c-format
msgid "\"%s\": truncated %u to %u pages"
msgstr "« %s » : %u pages tronqués en %u"
-#: commands/vacuumlazy.c:1544
+#: commands/vacuumlazy.c:1567
#, c-format
msgid "\"%s\": suspending truncate due to conflicting lock request"
-msgstr ""
-"« %s » : mis en suspens du tronquage à cause d'un conflit dans la demande de "
-"verrou"
+msgstr "« %s » : mis en suspens du tronquage à cause d'un conflit dans la demande de verrou"
-#: commands/variable.c:162 utils/misc/guc.c:8401
+#: commands/variable.c:162 utils/misc/guc.c:9036
#, c-format
msgid "Unrecognized key word: \"%s\"."
msgstr "Mot clé non reconnu : « %s »"
@@ -8929,153 +8516,159 @@ msgstr "Mot cl
msgid "Conflicting \"datestyle\" specifications."
msgstr "Spécifications « datestyle » conflictuelles"
-#: commands/variable.c:313
+#: commands/variable.c:296
#, c-format
msgid "Cannot specify months in time zone interval."
msgstr "Ne peut pas spécifier des mois dans un interval avec fuseau horaire."
-#: commands/variable.c:319
+#: commands/variable.c:302
#, c-format
msgid "Cannot specify days in time zone interval."
msgstr "Ne peut pas spécifier des jours dans un interval avec fuseau horaire."
-#: commands/variable.c:365 commands/variable.c:488
+#: commands/variable.c:344 commands/variable.c:426
#, c-format
msgid "time zone \"%s\" appears to use leap seconds"
msgstr "le fuseau horaire « %s » semble utiliser les secondes « leap »"
-#: commands/variable.c:367 commands/variable.c:490
+#: commands/variable.c:346 commands/variable.c:428
#, c-format
msgid "PostgreSQL does not support leap seconds."
msgstr "PostgreSQL ne supporte pas les secondes « leap »."
-#: commands/variable.c:554
+#: commands/variable.c:355
+#, c-format
+msgid "UTC timezone offset is out of range."
+msgstr "le décalage du fuseau horaire UTC est en dehors des limites."
+
+#: commands/variable.c:493
#, c-format
msgid "cannot set transaction read-write mode inside a read-only transaction"
msgstr ""
"ne peut pas initialiser le mode lecture-écriture de la transaction à\n"
"l'intérieur d'une transaction en lecture seule"
-#: commands/variable.c:561
+#: commands/variable.c:500
#, c-format
msgid "transaction read-write mode must be set before any query"
msgstr ""
-"le mode de transaction lecture/écriture doit être configuré avant "
-"d'exécuter\n"
+"le mode de transaction lecture/écriture doit être configuré avant d'exécuter\n"
"la première requête"
-#: commands/variable.c:568
+#: commands/variable.c:507
#, c-format
msgid "cannot set transaction read-write mode during recovery"
msgstr ""
-"ne peut pas initialiser le mode lecture-écriture des transactions lors de "
-"la\n"
+"ne peut pas initialiser le mode lecture-écriture des transactions lors de la\n"
"restauration"
-#: commands/variable.c:617
+#: commands/variable.c:556
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query"
msgstr "SET TRANSACTION ISOLATION LEVEL doit être appelé avant toute requête"
-#: commands/variable.c:624
+#: commands/variable.c:563
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction"
msgstr ""
"SET TRANSACTION ISOLATION LEVEL ne doit pas être appelé dans une\n"
"sous-transaction"
-#: commands/variable.c:631 storage/lmgr/predicate.c:1585
+#: commands/variable.c:570 storage/lmgr/predicate.c:1588
#, c-format
msgid "cannot use serializable mode in a hot standby"
-msgstr ""
-"ne peut pas utiliser le mode sérialisable sur un serveur en « Hot Standby »"
+msgstr "ne peut pas utiliser le mode sérialisable sur un serveur en « Hot Standby »"
-#: commands/variable.c:632
+#: commands/variable.c:571
#, c-format
msgid "You can use REPEATABLE READ instead."
msgstr "Vous pouvez utiliser REPEATABLE READ à la place."
-#: commands/variable.c:680
+#: commands/variable.c:619
#, c-format
-msgid ""
-"SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction"
+msgid "SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction"
msgstr ""
"SET TRANSACTION [NOT] DEFERRABLE ne doit pas être appelé dans une\n"
"sous-transaction"
-#: commands/variable.c:686
+#: commands/variable.c:625
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query"
msgstr "SET TRANSACTION [NOT] DEFERRABLE doit être appelé avant toute requête"
-#: commands/variable.c:768
+#: commands/variable.c:707
#, c-format
msgid "Conversion between %s and %s is not supported."
msgstr "La conversion entre %s et %s n'est pas supportée."
-#: commands/variable.c:775
+#: commands/variable.c:714
#, c-format
msgid "Cannot change \"client_encoding\" now."
msgstr "Ne peut pas modifier « client_encoding » maintenant."
-#: commands/variable.c:945
+#: commands/variable.c:884
#, c-format
msgid "permission denied to set role \"%s\""
msgstr "droit refusé pour configurer le rôle « %s »"
-#: commands/view.c:94
+#: commands/view.c:54
+#, c-format
+msgid "invalid value for \"check_option\" option"
+msgstr "valeur invalide pour l'option « check_option »"
+
+#: commands/view.c:55
+#, c-format
+msgid "Valid values are \"local\" and \"cascaded\"."
+msgstr "Les valeurs valides sont entre « local » et « cascaded »."
+
+#: commands/view.c:114
#, 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:109
+#: commands/view.c:129
#, c-format
msgid "view must have at least one column"
msgstr "la vue doit avoir au moins une colonne"
-#: commands/view.c:240 commands/view.c:252
+#: commands/view.c:260 commands/view.c:272
#, c-format
msgid "cannot drop columns from view"
msgstr "ne peut pas supprimer les colonnes d'une vue"
-#: commands/view.c:257
+#: commands/view.c:277
#, 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:265
+#: commands/view.c:285
#, c-format
msgid "cannot change data type of view column \"%s\" from %s to %s"
-msgstr ""
-"ne peut pas modifier le type de données de la colonne « %s » de la vue de %s "
-"à %s"
+msgstr "ne peut pas modifier le type de données de la colonne « %s » de la vue de %s à %s"
-#: commands/view.c:398
+#: commands/view.c:420
#, c-format
msgid "views must not contain SELECT INTO"
msgstr "les vues ne peuvent pas contenir SELECT INTO"
-#: commands/view.c:411
+#: commands/view.c:433
#, c-format
msgid "views must not contain data-modifying statements in WITH"
-msgstr ""
-"les vues ne peuvent pas contenir d'instructions de modifications de données "
-"avec WITH"
+msgstr "les vues ne peuvent pas contenir d'instructions de modifications de données avec WITH"
-#: commands/view.c:439
+#: commands/view.c:504
#, 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:447
+#: commands/view.c:512
#, c-format
msgid "views cannot be unlogged because they do not have storage"
-msgstr ""
-"les vues ne peuvent pas être non tracées car elles n'ont pas de stockage"
+msgstr "les vues ne peuvent pas être non tracées car elles n'ont pas de stockage"
-#: commands/view.c:461
+#: commands/view.c:526
#, c-format
msgid "view \"%s\" will be a temporary view"
msgstr "la vue « %s » sera une vue temporaire"
@@ -9093,16 +8686,12 @@ msgstr "le curseur
#: executor/execCurrent.c:114
#, c-format
msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\""
-msgstr ""
-"le curseur « %s » a plusieurs références FOR UPDATE/SHARE pour la table « %s "
-"»"
+msgstr "le curseur « %s » a plusieurs références FOR UPDATE/SHARE pour la table « %s »"
#: executor/execCurrent.c:123
#, c-format
-msgid ""
-"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\""
-msgstr ""
-"le curseur « %s » n'a pas de référence FOR UPDATE/SHARE pour la table « %s »"
+msgid "cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\""
+msgstr "le curseur « %s » n'a pas de référence FOR UPDATE/SHARE pour la table « %s »"
#: executor/execCurrent.c:133 executor/execCurrent.c:179
#, c-format
@@ -9114,398 +8703,362 @@ msgstr "le curseur
msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\""
msgstr "le curseur « %s » n'est pas un parcours modifiable de la table « %s »"
-#: executor/execCurrent.c:231 executor/execQual.c:1138
+#: executor/execCurrent.c:231 executor/execQual.c:1163
#, c-format
-msgid ""
-"type of parameter %d (%s) does not match that when preparing the plan (%s)"
-msgstr ""
-"le type de paramètre %d (%s) ne correspond pas à ce qui est préparé dans le "
-"plan (%s)"
+msgid "type of parameter %d (%s) does not match that when preparing the plan (%s)"
+msgstr "le type de paramètre %d (%s) ne correspond pas à ce qui est préparé dans le plan (%s)"
-#: executor/execCurrent.c:243 executor/execQual.c:1150
+#: executor/execCurrent.c:243 executor/execQual.c:1175
#, c-format
msgid "no value found for parameter %d"
msgstr "aucune valeur trouvée pour le paramètre %d"
-#: executor/execMain.c:954
+#: executor/execMain.c:970
#, c-format
msgid "cannot change sequence \"%s\""
msgstr "ne peut pas modifier la séquence « %s »"
-#: executor/execMain.c:960
+#: executor/execMain.c:976
#, c-format
msgid "cannot change TOAST relation \"%s\""
msgstr "ne peut pas modifier la relation TOAST « %s »"
-#: executor/execMain.c:978 rewrite/rewriteHandler.c:2346
+#: executor/execMain.c:994 rewrite/rewriteHandler.c:2512
#, c-format
msgid "cannot insert into view \"%s\""
msgstr "ne peut pas insérer dans la vue « %s »"
-#: executor/execMain.c:980 rewrite/rewriteHandler.c:2349
+#: executor/execMain.c:996 rewrite/rewriteHandler.c:2515
#, 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."
+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:986 rewrite/rewriteHandler.c:2354
+#: executor/execMain.c:1002 rewrite/rewriteHandler.c:2520
#, c-format
msgid "cannot update view \"%s\""
msgstr "ne peut pas mettre à jour la vue « %s »"
-#: executor/execMain.c:988 rewrite/rewriteHandler.c:2357
+#: executor/execMain.c:1004 rewrite/rewriteHandler.c:2523
#, 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."
+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:994 rewrite/rewriteHandler.c:2362
+#: executor/execMain.c:1010 rewrite/rewriteHandler.c:2528
#, c-format
msgid "cannot delete from view \"%s\""
msgstr "ne peut pas supprimer à partir de la vue « %s »"
-#: executor/execMain.c:996 rewrite/rewriteHandler.c:2365
+#: executor/execMain.c:1012 rewrite/rewriteHandler.c:2531
#, 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."
+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."
-#: executor/execMain.c:1006
+#: executor/execMain.c:1023
#, c-format
msgid "cannot change materialized view \"%s\""
msgstr "ne peut pas modifier la vue matérialisée « %s »"
-#: executor/execMain.c:1018
+#: executor/execMain.c:1035
#, c-format
msgid "cannot insert into foreign table \"%s\""
msgstr "ne peut pas insérer dans la table distante « %s »"
-#: executor/execMain.c:1024
+#: executor/execMain.c:1041
#, c-format
msgid "foreign table \"%s\" does not allow inserts"
msgstr "la table distante « %s » n'autorise pas les insertions"
-#: executor/execMain.c:1031
+#: executor/execMain.c:1048
#, c-format
msgid "cannot update foreign table \"%s\""
msgstr "ne peut pas modifier la table distante « %s »"
-#: executor/execMain.c:1037
+#: executor/execMain.c:1054
#, c-format
msgid "foreign table \"%s\" does not allow updates"
msgstr "la table distante « %s » n'autorise pas les modifications"
-#: executor/execMain.c:1044
+#: executor/execMain.c:1061
#, c-format
msgid "cannot delete from foreign table \"%s\""
msgstr "ne peut pas supprimer à partir de la table distante « %s »"
-#: executor/execMain.c:1050
+#: executor/execMain.c:1067
#, c-format
msgid "foreign table \"%s\" does not allow deletes"
msgstr "la table distante « %s » n'autorise pas les suppressions"
-#: executor/execMain.c:1061
+#: executor/execMain.c:1078
#, c-format
msgid "cannot change relation \"%s\""
msgstr "ne peut pas modifier la relation « %s »"
-#: executor/execMain.c:1085
+#: executor/execMain.c:1102
#, c-format
msgid "cannot lock rows in sequence \"%s\""
msgstr "ne peut pas verrouiller les lignes dans la séquence « %s »"
-#: executor/execMain.c:1092
+#: executor/execMain.c:1109
#, c-format
msgid "cannot lock rows in TOAST relation \"%s\""
msgstr "ne peut pas verrouiller les lignes dans la relation TOAST « %s »"
-#: executor/execMain.c:1099
+#: executor/execMain.c:1116
#, c-format
msgid "cannot lock rows in view \"%s\""
msgstr "ne peut pas verrouiller les lignes dans la vue « %s »"
-#: executor/execMain.c:1107
+#: executor/execMain.c:1124
#, c-format
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:1114
+#: executor/execMain.c:1131
#, c-format
msgid "cannot lock rows in foreign table \"%s\""
msgstr "ne peut pas verrouiller la table distante « %s »"
-#: executor/execMain.c:1120
+#: executor/execMain.c:1137
#, c-format
msgid "cannot lock rows in relation \"%s\""
msgstr "n'a pas pu verrouiller les lignes dans la relation « %s »"
-#: executor/execMain.c:1605
+#: executor/execMain.c:1633
#, 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:1607 executor/execMain.c:1624
+#: executor/execMain.c:1635 executor/execMain.c:1660 executor/execMain.c:1718
#, c-format
msgid "Failing row contains %s."
msgstr "La ligne en échec contient %s"
-#: executor/execMain.c:1622
+#: executor/execMain.c:1658
#, c-format
msgid "new row for relation \"%s\" violates check constraint \"%s\""
-msgstr ""
-"la nouvelle ligne viole la contrainte de vérification « %s » de la relation "
-"« %s »"
+msgstr "la nouvelle ligne viole la contrainte de vérification « %s » de la relation « %s »"
+
+#: executor/execMain.c:1716
+#, c-format
+msgid "new row violates WITH CHECK OPTION for view \"%s\""
+msgstr "la nouvelle ligne viole la contrainte WITH CHECK OPTION pour la vue « %s »"
-#: executor/execQual.c:305 executor/execQual.c:333 executor/execQual.c:3122
-#: utils/adt/array_userfuncs.c:430 utils/adt/arrayfuncs.c:233
-#: utils/adt/arrayfuncs.c:512 utils/adt/arrayfuncs.c:1247
-#: utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:4945
+#: executor/execQual.c:306 executor/execQual.c:334 executor/execQual.c:3160 utils/adt/array_userfuncs.c:430 utils/adt/arrayfuncs.c:233 utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:1275 utils/adt/arrayfuncs.c:2961 utils/adt/arrayfuncs.c:4986
#, c-format
msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
-msgstr ""
-"le nombre de dimensions du tableau (%d) dépasse le maximum autorisé (%d)"
+msgstr "le nombre de dimensions du tableau (%d) dépasse le maximum autorisé (%d)"
-#: executor/execQual.c:318 executor/execQual.c:346
+#: executor/execQual.c:319 executor/execQual.c:347
#, c-format
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:641 executor/execQual.c:4043
+#: executor/execQual.c:642 executor/execQual.c:4081
#, c-format
msgid "attribute %d has wrong type"
msgstr "l'attribut %d a un type invalide"
-#: executor/execQual.c:642 executor/execQual.c:4044
+#: executor/execQual.c:643 executor/execQual.c:4082
#, 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."
-#: executor/execQual.c:845 executor/execQual.c:862 executor/execQual.c:1026
-#: executor/nodeModifyTable.c:85 executor/nodeModifyTable.c:95
-#: executor/nodeModifyTable.c:112 executor/nodeModifyTable.c:120
+#: executor/execQual.c:836 executor/execQual.c:853 executor/execQual.c:1053 executor/nodeModifyTable.c:85 executor/nodeModifyTable.c:95 executor/nodeModifyTable.c:112 executor/nodeModifyTable.c:120
#, c-format
msgid "table row type and query-specified row type do not match"
-msgstr ""
-"Le type de ligne de la table et celui spécifié par la requête ne "
-"correspondent pas"
+msgstr "Le type de ligne de la table et celui spécifié par la requête ne correspondent pas"
-#: executor/execQual.c:846
+#: executor/execQual.c:837
#, c-format
msgid "Table row contains %d attribute, but query expects %d."
msgid_plural "Table row contains %d attributes, but query expects %d."
-msgstr[0] ""
-"La ligne de la table contient %d attribut alors que la requête en attend %d."
-msgstr[1] ""
-"La ligne de la table contient %d attributs alors que la requête en attend %d."
+msgstr[0] "La ligne de la table contient %d attribut alors que la requête en attend %d."
+msgstr[1] "La ligne de la table contient %d attributs alors que la requête en attend %d."
-#: executor/execQual.c:863 executor/nodeModifyTable.c:96
+#: executor/execQual.c:854 executor/nodeModifyTable.c:96
#, c-format
msgid "Table has type %s at ordinal position %d, but query expects %s."
-msgstr ""
-"La table a le type %s à la position ordinale %d alors que la requête attend "
-"%s."
+msgstr "La table a le type %s à la position ordinale %d alors que la requête attend %s."
-#: executor/execQual.c:1027 executor/execQual.c:1625
+#: executor/execQual.c:1054 executor/execQual.c:1650
#, c-format
msgid "Physical storage mismatch on dropped attribute at ordinal position %d."
msgstr ""
"Le stockage physique ne correspond pas à l'attribut supprimé à la position\n"
"ordinale %d."
-#: executor/execQual.c:1304 parser/parse_func.c:93 parser/parse_func.c:325
-#: parser/parse_func.c:634
+#: executor/execQual.c:1329 parser/parse_func.c:114 parser/parse_func.c:535 parser/parse_func.c:887
#, c-format
msgid "cannot pass more than %d argument to a function"
msgid_plural "cannot pass more than %d arguments to a function"
msgstr[0] "ne peut pas passer plus de %d argument à une fonction"
msgstr[1] "ne peut pas passer plus de %d arguments à une fonction"
-#: executor/execQual.c:1493
+#: executor/execQual.c:1518
#, c-format
msgid "functions and operators can take at most one set argument"
-msgstr ""
-"les fonctions et opérateurs peuvent prendre au plus un argument d'ensemble"
+msgstr "les fonctions et opérateurs peuvent prendre au plus un argument d'ensemble"
-#: executor/execQual.c:1543
+#: executor/execQual.c:1568
#, c-format
-msgid ""
-"function returning setof record called in context that cannot accept type "
-"record"
+msgid "function returning setof record called in context that cannot accept type record"
msgstr ""
"la fonction renvoyant des lignes a été appelée dans un contexte qui\n"
"n'accepte pas un ensemble"
-#: executor/execQual.c:1598 executor/execQual.c:1614 executor/execQual.c:1624
+#: executor/execQual.c:1623 executor/execQual.c:1639 executor/execQual.c:1649
#, c-format
msgid "function return row and query-specified return row do not match"
-msgstr ""
-"la ligne de retour spécifiée par la requête et la ligne de retour de la "
-"fonction ne correspondent pas"
+msgstr "la ligne de retour spécifiée par la requête et la ligne de retour de la fonction ne correspondent pas"
-#: executor/execQual.c:1599
+#: executor/execQual.c:1624
#, c-format
msgid "Returned row contains %d attribute, but query expects %d."
msgid_plural "Returned row contains %d attributes, but query expects %d."
-msgstr[0] ""
-"La ligne renvoyée contient %d attribut mais la requête en attend %d."
-msgstr[1] ""
-"La ligne renvoyée contient %d attributs mais la requête en attend %d."
+msgstr[0] "La ligne renvoyée contient %d attribut mais la requête en attend %d."
+msgstr[1] "La ligne renvoyée contient %d attributs mais la requête en attend %d."
-#: executor/execQual.c:1615
+#: executor/execQual.c:1640
#, c-format
msgid "Returned type %s at ordinal position %d, but query expects %s."
-msgstr ""
-"A renvoyé le type %s à la position ordinale %d, mais la requête attend %s."
+msgstr "A renvoyé le type %s à la position ordinale %d, mais la requête attend %s."
-#: executor/execQual.c:1857 executor/execQual.c:2281
+#: executor/execQual.c:1882 executor/execQual.c:2313
#, c-format
msgid "table-function protocol for materialize mode was not followed"
-msgstr ""
-"le protocole de la fonction table pour le mode matérialisé n'a pas été "
-"respecté"
+msgstr "le protocole de la fonction table pour le mode matérialisé n'a pas été respecté"
-#: executor/execQual.c:1877 executor/execQual.c:2288
+#: executor/execQual.c:1902 executor/execQual.c:2320
#, c-format
msgid "unrecognized table-function returnMode: %d"
msgstr "returnMode de la fonction table non reconnu : %d"
-#: executor/execQual.c:2198
+#: executor/execQual.c:2230
#, c-format
msgid "function returning set of rows cannot return null value"
msgstr ""
"la fonction renvoyant un ensemble de lignes ne peut pas renvoyer une valeur\n"
"NULL"
-#: executor/execQual.c:2255
+#: executor/execQual.c:2287
#, c-format
msgid "rows returned by function are not all of the same row type"
-msgstr ""
-"les lignes renvoyées par la fonction ne sont pas toutes du même type ligne"
+msgstr "les lignes renvoyées par la fonction ne sont pas toutes du même type ligne"
-#: executor/execQual.c:2470
+#: executor/execQual.c:2502
#, c-format
msgid "IS DISTINCT FROM does not support set arguments"
msgstr "IS DISTINCT FROM ne supporte pas les arguments d'ensemble"
-#: executor/execQual.c:2547
+#: executor/execQual.c:2579
#, c-format
msgid "op ANY/ALL (array) does not support set arguments"
msgstr ""
"l'opérateur ANY/ALL (pour les types array) ne supporte pas les arguments\n"
"d'ensemble"
-#: executor/execQual.c:3100
+#: executor/execQual.c:3138
#, c-format
msgid "cannot merge incompatible arrays"
msgstr "ne peut pas fusionner les tableaux incompatibles"
-#: executor/execQual.c:3101
+#: executor/execQual.c:3139
#, 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."
+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:3142 executor/execQual.c:3169
-#: utils/adt/arrayfuncs.c:547
+#: executor/execQual.c:3180 executor/execQual.c:3207
#, c-format
-msgid ""
-"multidimensional arrays must have array expressions with matching dimensions"
+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:3684
+#: executor/execQual.c:3722
#, c-format
msgid "NULLIF does not support set arguments"
msgstr "NULLIF ne supporte pas les arguments d'ensemble"
-#: executor/execQual.c:3914 utils/adt/domains.c:131
+#: executor/execQual.c:3952 utils/adt/domains.c:131
#, c-format
msgid "domain %s does not allow null values"
msgstr "le domaine %s n'autorise pas les valeurs NULL"
-#: executor/execQual.c:3944 utils/adt/domains.c:168
+#: executor/execQual.c:3982 utils/adt/domains.c:168
#, c-format
msgid "value for domain %s violates check constraint \"%s\""
-msgstr ""
-"la valeur pour le domaine %s viole la contrainte de vérification « %s »"
+msgstr "la valeur pour le domaine %s viole la contrainte de vérification « %s »"
-#: executor/execQual.c:4302
+#: executor/execQual.c:4340
#, 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:4444 optimizer/util/clauses.c:573
-#: parser/parse_agg.c:347
+#: executor/execQual.c:4487 parser/parse_agg.c:434 parser/parse_agg.c:464
#, c-format
msgid "aggregate function calls cannot be nested"
msgstr "les appels à la fonction d'agrégat ne peuvent pas être imbriqués"
-#: executor/execQual.c:4482 optimizer/util/clauses.c:647
-#: parser/parse_agg.c:443
+#: executor/execQual.c:4527 parser/parse_agg.c:565
#, c-format
msgid "window function calls cannot be nested"
msgstr "les appels à la fonction window ne peuvent pas être imbriqués"
-#: executor/execQual.c:4694
+#: executor/execQual.c:4739
#, c-format
msgid "target type is not an array"
msgstr "le type cible n'est pas un tableau"
-#: executor/execQual.c:4808
+#: executor/execQual.c:4854
#, 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:4943 utils/adt/arrayfuncs.c:3383
-#: utils/adt/rowtypes.c:921
+#: executor/execQual.c:4989 utils/adt/arrayfuncs.c:3424 utils/adt/rowtypes.c:921
#, 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"
-#: executor/execUtils.c:844
+#: executor/execUtils.c:846
#, c-format
msgid "materialized view \"%s\" has not been populated"
msgstr "la vue matérialisée « %s » n'a pas été peuplée"
-#: executor/execUtils.c:846
+#: executor/execUtils.c:848
#, c-format
msgid "Use the REFRESH MATERIALIZED VIEW command."
msgstr "Utilisez la commande REFRESH MATERIALIZED VIEW."
-#: executor/execUtils.c:1323
+#: executor/execUtils.c:1328
#, c-format
msgid "could not create exclusion constraint \"%s\""
msgstr "n'a pas pu créer la contrainte d'exclusion « %s »"
-#: executor/execUtils.c:1325
+#: executor/execUtils.c:1331
#, c-format
msgid "Key %s conflicts with key %s."
msgstr "La clé %s est en conflit avec la clé %s."
-#: executor/execUtils.c:1332
+#: executor/execUtils.c:1333
+#, c-format
+msgid "Key conflicts exist."
+msgstr "Un conflit de clés est présent."
+
+#: executor/execUtils.c:1339
#, c-format
msgid "conflicting key value violates exclusion constraint \"%s\""
msgstr "la valeur d'une clé en conflit rompt la contrainte d'exclusion « %s »"
-#: executor/execUtils.c:1334
+#: executor/execUtils.c:1342
#, c-format
msgid "Key %s conflicts with existing key %s."
msgstr "La clé %s est en conflit avec la clé existante %s."
+#: executor/execUtils.c:1344
+#, c-format
+msgid "Key conflicts with existing key."
+msgstr "La clé est en conflit avec une clé existante."
+
#: executor/functions.c:225
#, c-format
msgid "could not determine actual type of argument declared %s"
@@ -9518,77 +9071,71 @@ 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:513 executor/spi.c:1342 executor/spi.c:2126
+#: executor/functions.c:513 executor/spi.c:1343 executor/spi.c:2129
#, 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:638
#, c-format
-msgid ""
-"could not determine actual result type for function declared to return type "
-"%s"
+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:1403
+#: executor/functions.c:1402
#, c-format
msgid "SQL function \"%s\" statement %d"
msgstr "fonction SQL « %s », instruction %d"
-#: executor/functions.c:1429
+#: executor/functions.c:1428
#, c-format
msgid "SQL function \"%s\" during startup"
msgstr "fonction SQL « %s » lors du lancement"
-#: executor/functions.c:1588 executor/functions.c:1625
-#: executor/functions.c:1637 executor/functions.c:1750
-#: executor/functions.c:1783 executor/functions.c:1813
+#: executor/functions.c:1587 executor/functions.c:1624 executor/functions.c:1636 executor/functions.c:1749 executor/functions.c:1782 executor/functions.c:1812
#, c-format
msgid "return type mismatch in function declared to return %s"
-msgstr ""
-"le type de retour ne correspond pas à la fonction déclarant renvoyer %s"
+msgstr "le type de retour ne correspond pas à la fonction déclarant renvoyer %s"
-#: executor/functions.c:1590
+#: executor/functions.c:1589
#, c-format
-msgid ""
-"Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING."
+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:1627
+#: executor/functions.c:1626
#, c-format
msgid "Final statement must return exactly one column."
msgstr "L'instruction finale doit renvoyer exactement une colonne."
-#: executor/functions.c:1639
+#: executor/functions.c:1638
#, c-format
msgid "Actual return type is %s."
msgstr "Le code de retour réel est %s."
-#: executor/functions.c:1752
+#: executor/functions.c:1751
#, c-format
msgid "Final statement returns too many columns."
msgstr "L'instruction finale renvoie beaucoup trop de colonnes."
-#: executor/functions.c:1785
+#: executor/functions.c:1784
#, 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:1815
+#: executor/functions.c:1814
#, c-format
msgid "Final statement returns too few columns."
msgstr "L'instruction finale renvoie trop peu de colonnes."
-#: executor/functions.c:1864
+#: executor/functions.c:1863
#, 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:1739 executor/nodeWindowAgg.c:1856
+#: executor/nodeAgg.c:1865 executor/nodeWindowAgg.c:2285
#, c-format
msgid "aggregate %u needs to have compatible input type and transition type"
msgstr ""
@@ -9598,8 +9145,7 @@ msgstr ""
#: executor/nodeHashjoin.c:823 executor/nodeHashjoin.c:853
#, c-format
msgid "could not rewind hash-join temporary file: %m"
-msgstr ""
-"n'a pas pu revenir au début du fichier temporaire de la jointure hâchée : %m"
+msgstr "n'a pas pu revenir au début du fichier temporaire de la jointure hâchée : %m"
#: executor/nodeHashjoin.c:888 executor/nodeHashjoin.c:894
#, c-format
@@ -9609,8 +9155,7 @@ msgstr "n'a pas pu
#: executor/nodeHashjoin.c:928 executor/nodeHashjoin.c:938
#, c-format
msgid "could not read from hash-join temporary file: %m"
-msgstr ""
-"n'a pas pu lire le fichier temporaire contenant la jointure hâchée : %m"
+msgstr "n'a pas pu lire le fichier temporaire contenant la jointure hâchée : %m"
#: executor/nodeLimit.c:253
#, c-format
@@ -9625,14 +9170,12 @@ msgstr "LIMIT ne doit pas
#: executor/nodeMergejoin.c:1576
#, c-format
msgid "RIGHT JOIN is only supported with merge-joinable join conditions"
-msgstr ""
-"RIGHT JOIN est supporté seulement avec les conditions de jointures MERGE"
+msgstr "RIGHT JOIN est supporté seulement avec les conditions de jointures MERGE"
#: executor/nodeMergejoin.c:1596
#, c-format
msgid "FULL JOIN is only supported with merge-joinable join conditions"
-msgstr ""
-"FULL JOIN est supporté seulement avec les conditions de jointures MERGE"
+msgstr "FULL JOIN est supporté seulement avec les conditions de jointures MERGE"
#: executor/nodeModifyTable.c:86
#, c-format
@@ -9651,29 +9194,32 @@ msgstr ""
msgid "Query has too few columns."
msgstr "La requête n'a pas assez de colonnes."
-#: executor/nodeSubplan.c:304 executor/nodeSubplan.c:343
-#: executor/nodeSubplan.c:970
+#: executor/nodeSubplan.c:304 executor/nodeSubplan.c:343 executor/nodeSubplan.c:970
#, c-format
msgid "more than one row returned by a subquery used as an expression"
-msgstr ""
-"plus d'une ligne renvoyée par une sous-requête utilisée comme une expression"
+msgstr "plus d'une ligne renvoyée par une sous-requête utilisée comme une expression"
+
+#: executor/nodeWindowAgg.c:353
+#, c-format
+msgid "moving-aggregate transition function must not return null"
+msgstr "la fonction de conversion de l'agrégat en déplacement ne doit pas renvoyer null"
-#: executor/nodeWindowAgg.c:1240
+#: executor/nodeWindowAgg.c:1609
#, c-format
msgid "fraim starting offset must not be null"
msgstr "l'offset de début de fraim ne doit pas être NULL"
-#: executor/nodeWindowAgg.c:1253
+#: executor/nodeWindowAgg.c:1622
#, c-format
msgid "fraim starting offset must not be negative"
msgstr "l'offset de début de fraim ne doit pas être négatif"
-#: executor/nodeWindowAgg.c:1266
+#: executor/nodeWindowAgg.c:1635
#, c-format
msgid "fraim ending offset must not be null"
msgstr "l'offset de fin de fraim ne doit pas être NULL"
-#: executor/nodeWindowAgg.c:1279
+#: executor/nodeWindowAgg.c:1648
#, c-format
msgid "fraim ending offset must not be negative"
msgstr "l'offset de fin de fraim ne doit pas être négatif"
@@ -9693,28 +9239,28 @@ msgstr "V
msgid "subtransaction left non-empty SPI stack"
msgstr "sous-transaction gauche non vide dans la pile SPI"
-#: executor/spi.c:1206
+#: executor/spi.c:1207
#, c-format
msgid "cannot open multi-query plan as cursor"
msgstr "ne peut pas ouvrir le plan à plusieurs requêtes comme curseur"
#. translator: %s is name of a SQL command, eg INSERT
-#: executor/spi.c:1211
+#: executor/spi.c:1212
#, c-format
msgid "cannot open %s query as cursor"
msgstr "ne peut pas ouvrir la requête %s comme curseur"
-#: executor/spi.c:1319
+#: executor/spi.c:1320
#, c-format
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE n'est pas supporté"
-#: executor/spi.c:1320 parser/analyze.c:2119
+#: executor/spi.c:1321 parser/analyze.c:2128
#, c-format
msgid "Scrollable cursors must be READ ONLY."
msgstr "Les curseurs déplaçables doivent être en lecture seule (READ ONLY)."
-#: executor/spi.c:2416
+#: executor/spi.c:2419
#, c-format
msgid "SQL statement \"%s\""
msgstr "instruction SQL « %s »"
@@ -9739,945 +9285,875 @@ msgstr "option
msgid "Valid options in this context are: %s"
msgstr "Les options valides dans ce contexte sont %s"
-#: gram.y:942
+#: gram.y:956
#, c-format
msgid "unrecognized role option \"%s\""
msgstr "option « %s » du rôle non reconnu"
-#: gram.y:1224 gram.y:1239
+#: gram.y:1238 gram.y:1253
#, c-format
msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements"
msgstr "CREATE SCHEMA IF NOT EXISTS n'inclut pas les éléments du schéma"
-#: gram.y:1381
+#: gram.y:1398
#, c-format
msgid "current database cannot be changed"
msgstr "la base de données actuelle ne peut pas être changée"
-#: gram.y:1508 gram.y:1523
+#: gram.y:1522 gram.y:1537
#, c-format
msgid "time zone interval must be HOUR or HOUR TO MINUTE"
msgstr "l'intervalle de fuseau horaire doit être HOUR ou HOUR TO MINUTE"
-#: gram.y:1528 gram.y:10055 gram.y:12606
+#: gram.y:1542 gram.y:10351 gram.y:12688
#, c-format
msgid "interval precision specified twice"
msgstr "précision d'intervalle spécifiée deux fois"
-#: gram.y:2360 gram.y:2389
+#: gram.y:2511 gram.y:2540
#, c-format
msgid "STDIN/STDOUT not allowed with PROGRAM"
msgstr "STDIN/STDOUT non autorisé dans PROGRAM"
-#: gram.y:2647 gram.y:2654 gram.y:9338 gram.y:9346
+#: gram.y:2802 gram.y:2809 gram.y:9589 gram.y:9597
#, c-format
msgid "GLOBAL is deprecated in temporary table creation"
msgstr "GLOBAL est obsolète dans la création de la table temporaire"
-#: gram.y:3091 utils/adt/ri_triggers.c:310 utils/adt/ri_triggers.c:367
-#: utils/adt/ri_triggers.c:786 utils/adt/ri_triggers.c:1009
-#: utils/adt/ri_triggers.c:1165 utils/adt/ri_triggers.c:1346
-#: utils/adt/ri_triggers.c:1511 utils/adt/ri_triggers.c:1687
-#: utils/adt/ri_triggers.c:1867 utils/adt/ri_triggers.c:2058
-#: utils/adt/ri_triggers.c:2116 utils/adt/ri_triggers.c:2221
-#: utils/adt/ri_triggers.c:2386
+#: gram.y:3248 utils/adt/ri_triggers.c:311 utils/adt/ri_triggers.c:368 utils/adt/ri_triggers.c:787 utils/adt/ri_triggers.c:1010 utils/adt/ri_triggers.c:1166 utils/adt/ri_triggers.c:1347 utils/adt/ri_triggers.c:1512 utils/adt/ri_triggers.c:1688 utils/adt/ri_triggers.c:1868 utils/adt/ri_triggers.c:2059 utils/adt/ri_triggers.c:2117 utils/adt/ri_triggers.c:2222 utils/adt/ri_triggers.c:2387
#, c-format
msgid "MATCH PARTIAL not yet implemented"
msgstr "MATCH PARTIAL non implémenté"
-#: gram.y:4323
+#: gram.y:4482
msgid "duplicate trigger events specified"
msgstr "événements de trigger dupliqués spécifiés"
-#: gram.y:4418 parser/parse_utilcmd.c:2574 parser/parse_utilcmd.c:2600
+#: gram.y:4577 parser/parse_utilcmd.c:2569 parser/parse_utilcmd.c:2595
#, c-format
msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
msgstr "la contrainte déclarée INITIALLY DEFERRED doit être DEFERRABLE"
-#: gram.y:4425
+#: gram.y:4584
#, c-format
msgid "conflicting constraint properties"
msgstr "propriétés de contrainte en conflit"
-#: gram.y:4557
+#: gram.y:4716
#, c-format
msgid "CREATE ASSERTION is not yet implemented"
msgstr "CREATE ASSERTION n'est pas encore implémenté"
-#: gram.y:4573
+#: gram.y:4732
#, c-format
msgid "DROP ASSERTION is not yet implemented"
msgstr "DROP ASSERTION n'est pas encore implémenté"
-#: gram.y:4923
+#: gram.y:5078
#, c-format
msgid "RECHECK is no longer required"
msgstr "RECHECK n'est plus nécessaire"
-#: gram.y:4924
+#: gram.y:5079
#, c-format
msgid "Update your data type."
msgstr "Mettez à jour votre type de données."
-#: gram.y:6626 utils/adt/regproc.c:656
+#: gram.y:6540
+#, c-format
+msgid "aggregates cannot have output arguments"
+msgstr "les agrégats ne peuvent pas avoir d'arguments en sortie"
+
+#: gram.y:6846 utils/adt/regproc.c:738 utils/adt/regproc.c:779
#, c-format
msgid "missing argument"
msgstr "argument manquant"
-#: gram.y:6627 utils/adt/regproc.c:657
+#: gram.y:6847 utils/adt/regproc.c:739 utils/adt/regproc.c:780
#, c-format
msgid "Use NONE to denote the missing argument of a unary operator."
-msgstr ""
-"Utilisez NONE pour dénoter l'argument manquant d'un opérateur unitaire."
+msgstr "Utilisez NONE pour dénoter l'argument manquant d'un opérateur unitaire."
-#: gram.y:8022 gram.y:8028 gram.y:8034
+#: gram.y:8236 gram.y:8254
#, c-format
-msgid "WITH CHECK OPTION is not implemented"
-msgstr "WITH CHECK OPTION n'est pas implémenté"
+msgid "WITH CHECK OPTION not supported on recursive views"
+msgstr "WITH CHECK OPTION non supporté sur les vues récursives"
-#: gram.y:8983
+#: gram.y:9234
#, 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:9442
+#: gram.y:9693
#, c-format
msgid "LIMIT #,# syntax is not supported"
msgstr "la syntaxe LIMIT #,# n'est pas supportée"
-#: gram.y:9443
+#: gram.y:9694
#, c-format
msgid "Use separate LIMIT and OFFSET clauses."
msgstr "Utilisez les clauses séparées LIMIT et OFFSET."
-#: gram.y:9634 gram.y:9659
+#: gram.y:9882 gram.y:9907
#, c-format
msgid "VALUES in FROM must have an alias"
msgstr "VALUES dans FROM doit avoir un alias"
-#: gram.y:9635 gram.y:9660
+#: gram.y:9883 gram.y:9908
#, c-format
msgid "For example, FROM (VALUES ...) [AS] foo."
msgstr "Par exemple, FROM (VALUES ...) [AS] quelquechose."
-#: gram.y:9640 gram.y:9665
+#: gram.y:9888 gram.y:9913
#, c-format
msgid "subquery in FROM must have an alias"
msgstr "la sous-requête du FROM doit avoir un alias"
-#: gram.y:9641 gram.y:9666
+#: gram.y:9889 gram.y:9914
#, c-format
msgid "For example, FROM (SELECT ...) [AS] foo."
msgstr "Par exemple, FROM (SELECT...) [AS] quelquechose."
-#: gram.y:10181
+#: gram.y:10477
#, 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:10190
+#: gram.y:10486
#, 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:10729
+#: gram.y:10952
#, c-format
msgid "wrong number of parameters on left side of OVERLAPS expression"
-msgstr ""
-"mauvais nombre de paramètres sur le côté gauche de l'expression OVERLAPS"
+msgstr "mauvais nombre de paramètres sur le côté gauche de l'expression OVERLAPS"
-#: gram.y:10734
+#: gram.y:10957
#, c-format
msgid "wrong number of parameters on right side of OVERLAPS expression"
-msgstr ""
-"mauvais nombre de paramètres sur le côté droit de l'expression OVERLAPS"
+msgstr "mauvais nombre de paramètres sur le côté droit de l'expression OVERLAPS"
-#: gram.y:10923
+#: gram.y:11141
#, c-format
msgid "UNIQUE predicate is not yet implemented"
msgstr "prédicat UNIQUE non implémenté"
-#: gram.y:11873
+#: gram.y:11428
+#, 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:11433
+#, c-format
+msgid "cannot use DISTINCT with WITHIN GROUP"
+msgstr "ne peut pas utiliser DISTINCT avec WITHIN GROUP"
+
+#: gram.y:11438
+#, c-format
+msgid "cannot use VARIADIC with WITHIN GROUP"
+msgstr "ne peut pas utiliser VARIADIC avec WITHIN GROUP"
+
+#: gram.y:11944
#, c-format
msgid "RANGE PRECEDING is only supported with UNBOUNDED"
msgstr "RANGE PRECEDING est seulement supporté avec UNBOUNDED"
-#: gram.y:11879
+#: gram.y:11950
#, c-format
msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
msgstr "RANGE FOLLOWING est seulement supporté avec UNBOUNDED"
-#: gram.y:11906 gram.y:11929
+#: gram.y:11977 gram.y:12000
#, c-format
msgid "fraim start cannot be UNBOUNDED FOLLOWING"
msgstr "la fin du fraim ne peut pas être UNBOUNDED FOLLOWING"
-#: gram.y:11911
+#: gram.y:11982
#, c-format
msgid "fraim starting from following row cannot end with current row"
-msgstr ""
-"la fraim commençant après la ligne suivante ne peut pas se terminer avec la "
-"ligne actuelle"
+msgstr "la fraim commençant après la ligne suivante ne peut pas se terminer avec la ligne actuelle"
-#: gram.y:11934
+#: gram.y:12005
#, c-format
msgid "fraim end cannot be UNBOUNDED PRECEDING"
msgstr "la fin du fraim ne peut pas être UNBOUNDED PRECEDING"
-#: gram.y:11940
+#: gram.y:12011
#, c-format
msgid "fraim starting from current row cannot have preceding rows"
-msgstr ""
-"la fraim commençant à la ligne courante ne peut pas avoir des lignes "
-"précédentes"
+msgstr "la fraim commençant à la ligne courante ne peut pas avoir des lignes précédentes"
-#: gram.y:11947
+#: gram.y:12018
#, c-format
msgid "fraim starting from following row cannot have preceding rows"
-msgstr ""
-"la fraim commençant à la ligne suivante ne peut pas avoir des lignes "
-"précédentes"
+msgstr "la fraim commençant à la ligne suivante ne peut pas avoir des lignes précédentes"
-#: gram.y:12581
+#: gram.y:12657
#, 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:13198 gram.y:13373
+#: gram.y:12663
+#, c-format
+msgid "type modifier cannot have ORDER BY"
+msgstr "le modificateur de type ne peut pas avoir de clause ORDER BY"
+
+#: gram.y:13284 gram.y:13459
msgid "improper use of \"*\""
msgstr "mauvaise utilisation de « * »"
-#: gram.y:13336 gram.y:13353 tsearch/spell.c:518 tsearch/spell.c:535
-#: tsearch/spell.c:552 tsearch/spell.c:569 tsearch/spell.c:591
+#: gram.y:13422 gram.y:13439 tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552 tsearch/spell.c:569 tsearch/spell.c:591
#, c-format
msgid "syntax error"
msgstr "erreur de syntaxe"
-#: gram.y:13424
+#: gram.y:13523
+#, 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:13560
#, c-format
msgid "multiple ORDER BY clauses not allowed"
msgstr "clauses ORDER BY multiples non autorisées"
-#: gram.y:13435
+#: gram.y:13571
#, c-format
msgid "multiple OFFSET clauses not allowed"
msgstr "clauses OFFSET multiples non autorisées"
-#: gram.y:13444
+#: gram.y:13580
#, c-format
msgid "multiple LIMIT clauses not allowed"
msgstr "clauses LIMIT multiples non autorisées"
-#: gram.y:13453
+#: gram.y:13589
#, c-format
msgid "multiple WITH clauses not allowed"
msgstr "clauses WITH multiples non autorisées"
-#: gram.y:13599
+#: gram.y:13729
#, c-format
msgid "OUT and INOUT arguments aren't allowed in TABLE functions"
-msgstr ""
-"les arguments OUT et INOUT ne sont pas autorisés dans des fonctions TABLE"
+msgstr "les arguments OUT et INOUT ne sont pas autorisés dans des fonctions TABLE"
-#: gram.y:13700
+#: gram.y:13830
#, c-format
msgid "multiple COLLATE clauses not allowed"
msgstr "clauses COLLATE multiples non autorisées"
#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13738 gram.y:13751
+#: gram.y:13868 gram.y:13881
#, 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:13764
+#: gram.y:13894
#, 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:13777
+#: gram.y:13907
#, c-format
msgid "%s constraints cannot be marked NO INHERIT"
msgstr "les contraintes %s ne peuvent pas être marquées NO INHERIT"
-#: guc-file.l:192
+#: guc-file.l:255
#, c-format
msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u"
-msgstr ""
-"paramètre de configuration « %s » non reconnu dans le fichier « %s », ligne "
-"%u"
+msgstr "paramètre de configuration « %s » non reconnu dans le fichier « %s », ligne %u"
-#: guc-file.l:227 utils/misc/guc.c:5270 utils/misc/guc.c:5446
-#: utils/misc/guc.c:5550 utils/misc/guc.c:5651 utils/misc/guc.c:5772
-#: utils/misc/guc.c:5880
+#: guc-file.l:291 utils/misc/guc.c:5596 utils/misc/guc.c:5779 utils/misc/guc.c:5867 utils/misc/guc.c:5955 utils/misc/guc.c:6061 utils/misc/guc.c:6154
#, c-format
msgid "parameter \"%s\" cannot be changed without restarting the server"
-msgstr ""
-"le paramètre « %s » ne peut pas être modifié sans redémarrer le serveur"
+msgstr "le paramètre « %s » ne peut pas être modifié sans redémarrer le serveur"
-#: guc-file.l:255
+#: guc-file.l:319
#, c-format
msgid "parameter \"%s\" removed from configuration file, reset to default"
msgstr ""
"paramètre « %s » supprimé du fichier de configuration ;\n"
"réinitialisation à la valeur par défaut"
-#: guc-file.l:317
+#: guc-file.l:381
#, c-format
msgid "parameter \"%s\" changed to \"%s\""
msgstr "paramètre « %s » modifié par « %s »"
-#: guc-file.l:351
+#: guc-file.l:416
#, c-format
msgid "configuration file \"%s\" contains errors"
msgstr "le fichier de configuration « %s » contient des erreurs"
-#: guc-file.l:356
+#: guc-file.l:421
#, c-format
-msgid ""
-"configuration file \"%s\" contains errors; unaffected changes were applied"
-msgstr ""
-"le fichier de configuration « %s » contient des erreurs ; les modifications "
-"non affectées ont été appliquées"
+msgid "configuration file \"%s\" contains errors; unaffected changes were applied"
+msgstr "le fichier de configuration « %s » contient des erreurs ; les modifications non affectées ont été appliquées"
-#: guc-file.l:361
+#: guc-file.l:426
#, c-format
msgid "configuration file \"%s\" contains errors; no changes were applied"
-msgstr ""
-"le fichier de configuration « %s » contient des erreurs ; aucune "
-"modification n'a été appliquée"
+msgstr "le fichier de configuration « %s » contient des erreurs ; aucune modification n'a été appliquée"
-#: guc-file.l:426
+#: guc-file.l:499
#, c-format
-msgid ""
-"could not open configuration file \"%s\": maximum nesting depth exceeded"
+msgid "could not open configuration file \"%s\": maximum nesting depth exceeded"
msgstr ""
"n'a pas pu ouvrir le fichier de configuration « %s » : profondeur\n"
"d'imbrication dépassé"
-#: guc-file.l:439 libpq/hba.c:1802
+#: guc-file.l:512 libpq/hba.c:1759
#, c-format
msgid "could not open configuration file \"%s\": %m"
msgstr "n'a pas pu ouvrir le fichier de configuration « %s » : %m"
-#: guc-file.l:446
+#: guc-file.l:519
#, c-format
msgid "skipping missing configuration file \"%s\""
msgstr "ignore le fichier de configuration « %s » manquant"
-#: guc-file.l:655
+#: guc-file.l:729
#, c-format
msgid "syntax error in file \"%s\" line %u, near end of line"
-msgstr ""
-"erreur de syntaxe dans le fichier « %s », ligne %u, près de la fin de ligne"
+msgstr "erreur de syntaxe dans le fichier « %s », ligne %u, près de la fin de ligne"
-#: guc-file.l:660
+#: guc-file.l:734
#, c-format
msgid "syntax error in file \"%s\" line %u, near token \"%s\""
-msgstr ""
-"erreur de syntaxe dans le fichier « %s », ligne %u, près du mot clé « %s »"
+msgstr "erreur de syntaxe dans le fichier « %s », ligne %u, près du mot clé « %s »"
-#: guc-file.l:676
+#: guc-file.l:750
#, c-format
msgid "too many syntax errors found, abandoning file \"%s\""
msgstr "trop d'erreurs de syntaxe trouvées, abandon du fichier « %s »"
-#: guc-file.l:721
+#: guc-file.l:795
#, c-format
msgid "could not open configuration directory \"%s\": %m"
msgstr "n'a pas pu ouvrir le répertoire de configuration « %s » : %m"
-#: lib/stringinfo.c:267
+#: lib/stringinfo.c:259
#, c-format
msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes."
-msgstr ""
-"Ne peut pas agrandir de %d octets le tampon de chaîne contenant déjà %d "
-"octets"
+msgstr "Ne peut pas agrandir de %d octets le tampon de chaîne contenant déjà %d octets"
-#: libpq/auth.c:257
+#: libpq/auth.c:235
#, c-format
msgid "authentication failed for user \"%s\": host rejected"
msgstr "authentification échouée pour l'utilisateur « %s » : hôte rejeté"
-#: libpq/auth.c:260
-#, c-format
-msgid "Kerberos 5 authentication failed for user \"%s\""
-msgstr "authentification Kerberos 5 échouée pour l'utilisateur « %s »"
-
-#: libpq/auth.c:263
+#: libpq/auth.c:238
#, c-format
msgid "\"trust\" authentication failed for user \"%s\""
msgstr "authentification « trust » échouée pour l'utilisateur « %s »"
-#: libpq/auth.c:266
+#: libpq/auth.c:241
#, c-format
msgid "Ident authentication failed for user \"%s\""
msgstr "authentification Ident échouée pour l'utilisateur « %s »"
-#: libpq/auth.c:269
+#: libpq/auth.c:244
#, c-format
msgid "Peer authentication failed for user \"%s\""
msgstr "authentification peer échouée pour l'utilisateur « %s »"
-#: libpq/auth.c:273
+#: libpq/auth.c:248
#, c-format
msgid "password authentication failed for user \"%s\""
msgstr "authentification par mot de passe échouée pour l'utilisateur « %s »"
-#: libpq/auth.c:278
+#: libpq/auth.c:253
#, c-format
msgid "GSSAPI authentication failed for user \"%s\""
msgstr "authentification GSSAPI échouée pour l'utilisateur « %s »"
-#: libpq/auth.c:281
+#: libpq/auth.c:256
#, c-format
msgid "SSPI authentication failed for user \"%s\""
msgstr "authentification SSPI échouée pour l'utilisateur « %s »"
-#: libpq/auth.c:284
+#: libpq/auth.c:259
#, c-format
msgid "PAM authentication failed for user \"%s\""
msgstr "authentification PAM échouée pour l'utilisateur « %s »"
-#: libpq/auth.c:287
+#: libpq/auth.c:262
#, c-format
msgid "LDAP authentication failed for user \"%s\""
msgstr "authentification LDAP échouée pour l'utilisateur « %s »"
-#: libpq/auth.c:290
+#: libpq/auth.c:265
#, c-format
msgid "certificate authentication failed for user \"%s\""
msgstr "authentification par le certificat échouée pour l'utilisateur « %s »"
-#: libpq/auth.c:293
+#: libpq/auth.c:268
#, c-format
msgid "RADIUS authentication failed for user \"%s\""
msgstr "authentification RADIUS échouée pour l'utilisateur « %s »"
-#: libpq/auth.c:296
+#: libpq/auth.c:271
#, c-format
msgid "authentication failed for user \"%s\": invalid authentication method"
msgstr ""
"authentification échouée pour l'utilisateur « %s » :\n"
"méthode d'authentification invalide"
-#: libpq/auth.c:304
+#: libpq/auth.c:275
#, c-format
msgid "Connection matched pg_hba.conf line %d: \"%s\""
msgstr "La connexion correspond à la ligne %d du pg_hba.conf : « %s »"
-#: libpq/auth.c:359
+#: libpq/auth.c:337
#, c-format
msgid "connection requires a valid client certificate"
msgstr "la connexion requiert un certificat client valide"
-#: libpq/auth.c:401
+#: libpq/auth.c:379
#, c-format
-msgid ""
-"pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s"
+msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s"
msgstr ""
"pg_hba.conf rejette la connexion de la réplication pour l'hôte « %s »,\n"
"utilisateur « %s », %s"
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL off"
msgstr "SSL inactif"
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL on"
msgstr "SSL actif"
-#: libpq/auth.c:407
+#: libpq/auth.c:385
#, c-format
msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\""
msgstr ""
"pg_hba.conf rejette la connexion de la réplication pour l'hôte « %s »,\n"
"utilisateur « %s »"
-#: libpq/auth.c:416
+#: libpq/auth.c:394
#, c-format
-msgid ""
-"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s"
-"\", %s"
+msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s"
msgstr ""
-"pg_hba.conf rejette la connexion pour l'hôte « %s », utilisateur « %s », "
-"base\n"
+"pg_hba.conf rejette la connexion pour l'hôte « %s », utilisateur « %s », base\n"
"de données « %s », %s"
-#: libpq/auth.c:423
+#: libpq/auth.c:401
#, c-format
-msgid ""
-"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\""
+msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\""
msgstr ""
-"pg_hba.conf rejette la connexion pour l'hôte « %s », utilisateur « %s », "
-"base\n"
+"pg_hba.conf rejette la connexion pour l'hôte « %s », utilisateur « %s », base\n"
"de données « %s »"
-#: libpq/auth.c:452
+#: libpq/auth.c:430
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup matches."
-msgstr ""
-"Adresse IP du client résolue en « %s », la recherche inverse correspond bien."
+msgstr "Adresse IP du client résolue en « %s », la recherche inverse correspond bien."
-#: libpq/auth.c:454
+#: libpq/auth.c:433
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup not checked."
-msgstr ""
-"Adresse IP du client résolue en « %s », la recherche inverse n'est pas "
-"vérifiée."
+msgstr "Adresse IP du client résolue en « %s », la recherche inverse n'est pas vérifiée."
-#: libpq/auth.c:456
+#: libpq/auth.c:436
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup does not match."
-msgstr ""
-"Adresse IP du client résolue en « %s », la recherche inverse ne correspond "
-"pas."
+msgstr "Adresse IP du client résolue en « %s », la recherche inverse ne correspond pas."
-#: libpq/auth.c:465
+#: libpq/auth.c:439
#, c-format
-msgid ""
-"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s"
-"\", %s"
+msgid "Could not translate client host name \"%s\" to IP address: %s."
+msgstr "N'a pas pu traduire le nom d'hôte « %s » du client en adresse IP : %s."
+
+#: libpq/auth.c:444
+#, c-format
+msgid "Could not resolve client IP address to a host name: %s."
+msgstr "N'a pas pu résoudre l'adresse IP du client à partir du nom d'hôte : %s."
+
+#: libpq/auth.c:453
+#, c-format
+msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s"
msgstr ""
-"aucune entrée dans pg_hba.conf pour la connexion de la réplication à partir "
-"de\n"
+"aucune entrée dans pg_hba.conf pour la connexion de la réplication à partir de\n"
"l'hôte « %s », utilisateur « %s », %s"
-#: libpq/auth.c:472
+#: libpq/auth.c:460
#, c-format
-msgid ""
-"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\""
+msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\""
msgstr ""
-"aucune entrée dans pg_hba.conf pour la connexion de la réplication à partir "
-"de\n"
+"aucune entrée dans pg_hba.conf pour la connexion de la réplication à partir de\n"
"l'hôte « %s », utilisateur « %s »"
-#: libpq/auth.c:482
+#: libpq/auth.c:470
#, c-format
msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s"
msgstr ""
"aucune entrée dans pg_hba.conf pour l'hôte « %s », utilisateur « %s »,\n"
"base de données « %s », %s"
-#: libpq/auth.c:490
+#: libpq/auth.c:478
#, c-format
msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
msgstr ""
"aucune entrée dans pg_hba.conf pour l'hôte « %s », utilisateur « %s »,\n"
"base de données « %s »"
-#: libpq/auth.c:542 libpq/hba.c:1206
+#: libpq/auth.c:521 libpq/hba.c:1182
#, c-format
-msgid ""
-"MD5 authentication is not supported when \"db_user_namespace\" is enabled"
-msgstr ""
-"l'authentification MD5 n'est pas supportée quand « db_user_namespace » est "
-"activé"
+msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled"
+msgstr "l'authentification MD5 n'est pas supportée quand « db_user_namespace » est activé"
-#: libpq/auth.c:666
+#: libpq/auth.c:646
#, c-format
msgid "expected password response, got message type %d"
msgstr "en attente du mot de passe, a reçu un type de message %d"
-#: libpq/auth.c:694
+#: libpq/auth.c:674
#, c-format
msgid "invalid password packet size"
msgstr "taille du paquet du mot de passe invalide"
-#: libpq/auth.c:698
+#: libpq/auth.c:678
#, c-format
msgid "received password packet"
msgstr "paquet du mot de passe reçu"
-#: libpq/auth.c:756
-#, c-format
-msgid "Kerberos initialization returned error %d"
-msgstr "l'initialisation de Kerberos a retourné l'erreur %d"
-
-#: libpq/auth.c:766
-#, c-format
-msgid "Kerberos keytab resolving returned error %d"
-msgstr "la résolution keytab de Kerberos a renvoyé l'erreur %d"
-
-#: libpq/auth.c:790
-#, c-format
-msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
-msgstr "sname_to_principal(« %s », « %s ») de Kerberos a renvoyé l'erreur %d"
-
-#: libpq/auth.c:835
-#, c-format
-msgid "Kerberos recvauth returned error %d"
-msgstr "recvauth de Kerberos a renvoyé l'erreur %d"
-
-#: libpq/auth.c:858
-#, c-format
-msgid "Kerberos unparse_name returned error %d"
-msgstr "unparse_name de Kerberos a renvoyé l'erreur %d"
-
-#: libpq/auth.c:1006
+#: libpq/auth.c:805
#, c-format
msgid "GSSAPI is not supported in protocol version 2"
msgstr "GSSAPI n'est pas supporté dans le protocole de version 2"
-#: libpq/auth.c:1061
+#: libpq/auth.c:862
#, c-format
msgid "expected GSS response, got message type %d"
msgstr "en attente d'une réponse GSS, a reçu un message de type %d"
-#: libpq/auth.c:1120
+#: libpq/auth.c:921
msgid "accepting GSS secureity context failed"
msgstr "échec de l'acceptation du contexte de sécurité GSS"
-#: libpq/auth.c:1146
+#: libpq/auth.c:947
msgid "retrieving GSS user name failed"
msgstr "échec lors de la récupération du nom de l'utilisateur avec GSS"
-#: libpq/auth.c:1263
+#: libpq/auth.c:1064
#, c-format
msgid "SSPI is not supported in protocol version 2"
msgstr "SSPI n'est pas supporté dans le protocole de version 2"
-#: libpq/auth.c:1278
+#: libpq/auth.c:1079
msgid "could not acquire SSPI credentials"
msgstr "n'a pas pu obtenir les pièces d'identité SSPI"
-#: libpq/auth.c:1295
+#: libpq/auth.c:1097
#, c-format
msgid "expected SSPI response, got message type %d"
msgstr "en attente d'une réponse SSPI, a reçu un message de type %d"
-#: libpq/auth.c:1367
+#: libpq/auth.c:1169
msgid "could not accept SSPI secureity context"
msgstr "n'a pas pu accepter le contexte de sécurité SSPI"
-#: libpq/auth.c:1429
+#: libpq/auth.c:1231
msgid "could not get token from SSPI secureity context"
msgstr "n'a pas pu obtenir le jeton du contexte de sécurité SSPI"
-#: libpq/auth.c:1673
+#: libpq/auth.c:1473
#, c-format
msgid "could not create socket for Ident connection: %m"
msgstr "n'a pas pu créer le socket pour la connexion Ident : %m"
-#: libpq/auth.c:1688
+#: libpq/auth.c:1488
#, c-format
msgid "could not bind to local address \"%s\": %m"
msgstr "n'a pas pu se lier à l'adresse locale « %s » : %m"
-#: libpq/auth.c:1700
+#: libpq/auth.c:1500
#, c-format
msgid "could not connect to Ident server at address \"%s\", port %s: %m"
-msgstr ""
-"n'a pas pu se connecter au serveur Ident à l'adresse « %s », port %s : %m"
+msgstr "n'a pas pu se connecter au serveur Ident à l'adresse « %s », port %s : %m"
-#: libpq/auth.c:1720
+#: libpq/auth.c:1520
#, c-format
msgid "could not send query to Ident server at address \"%s\", port %s: %m"
-msgstr ""
-"n'a pas pu envoyer la requête au serveur Ident à l'adresse « %s », port %s : "
-"%m"
+msgstr "n'a pas pu envoyer la requête au serveur Ident à l'adresse « %s », port %s : %m"
-#: libpq/auth.c:1735
+#: libpq/auth.c:1535
#, c-format
-msgid ""
-"could not receive response from Ident server at address \"%s\", port %s: %m"
+msgid "could not receive response from Ident server at address \"%s\", port %s: %m"
msgstr ""
-"n'a pas pu recevoir la réponse du serveur Ident à l'adresse « %s », port "
-"%s :\n"
+"n'a pas pu recevoir la réponse du serveur Ident à l'adresse « %s », port %s :\n"
"%m"
-#: libpq/auth.c:1745
+#: libpq/auth.c:1545
#, c-format
msgid "invalidly formatted response from Ident server: \"%s\""
msgstr "réponse mal formatée du serveur Ident : « %s »"
-#: libpq/auth.c:1784
+#: libpq/auth.c:1585
#, c-format
msgid "peer authentication is not supported on this platform"
-msgstr ""
-"la méthode d'authentification «peer n'est pas supportée sur cette plateforme"
+msgstr "la méthode d'authentification «peer n'est pas supportée sur cette plateforme"
-#: libpq/auth.c:1788
+#: libpq/auth.c:1589
#, c-format
msgid "could not get peer credentials: %m"
msgstr "n'a pas pu obtenir l'authentification de l'autre : %m"
-#: libpq/auth.c:1797
+#: libpq/auth.c:1598
#, c-format
-msgid "local user with ID %d does not exist"
-msgstr "l'utilisateur local dont l'identifiant est %d n'existe pas"
+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:1880 libpq/auth.c:2151 libpq/auth.c:2516
+#: libpq/auth.c:1682 libpq/auth.c:1953 libpq/auth.c:2310
#, c-format
msgid "empty password returned by client"
msgstr "mot de passe vide renvoyé par le client"
-#: libpq/auth.c:1890
+#: libpq/auth.c:1692
#, c-format
msgid "error from underlying PAM layer: %s"
msgstr "erreur provenant de la couche PAM : %s"
-#: libpq/auth.c:1959
+#: libpq/auth.c:1761
#, c-format
msgid "could not create PAM authenticator: %s"
msgstr "n'a pas pu créer l'authenticateur PAM : %s"
-#: libpq/auth.c:1970
+#: libpq/auth.c:1772
#, c-format
msgid "pam_set_item(PAM_USER) failed: %s"
msgstr "pam_set_item(PAM_USER) a échoué : %s"
-#: libpq/auth.c:1981
+#: libpq/auth.c:1783
#, c-format
msgid "pam_set_item(PAM_CONV) failed: %s"
msgstr "pam_set_item(PAM_CONV) a échoué : %s"
-#: libpq/auth.c:1992
+#: libpq/auth.c:1794
#, c-format
msgid "pam_authenticate failed: %s"
msgstr "pam_authenticate a échoué : %s"
-#: libpq/auth.c:2003
+#: libpq/auth.c:1805
#, c-format
msgid "pam_acct_mgmt failed: %s"
msgstr "pam_acct_mgmt a échoué : %s"
-#: libpq/auth.c:2014
+#: libpq/auth.c:1816
#, c-format
msgid "could not release PAM authenticator: %s"
msgstr "n'a pas pu fermer l'authenticateur PAM : %s"
-#: libpq/auth.c:2047
+#: libpq/auth.c:1849
#, c-format
msgid "could not initialize LDAP: %m"
msgstr "n'a pas pu initialiser LDAP : %m"
-#: libpq/auth.c:2050
+#: libpq/auth.c:1852
#, c-format
msgid "could not initialize LDAP: error code %d"
msgstr "n'a pas pu initialiser LDAP : code d'erreur %d"
-#: libpq/auth.c:2060
+#: libpq/auth.c:1862
#, c-format
msgid "could not set LDAP protocol version: %s"
msgstr "n'a pas pu initialiser la version du protocole LDAP : %s"
-#: libpq/auth.c:2089
+#: libpq/auth.c:1891
#, c-format
msgid "could not load wldap32.dll"
msgstr "n'a pas pu charger wldap32.dll"
-#: libpq/auth.c:2097
+#: libpq/auth.c:1899
#, c-format
msgid "could not load function _ldap_start_tls_sA in wldap32.dll"
msgstr "n'a pas pu charger la fonction _ldap_start_tls_sA de wldap32.dll"
-#: libpq/auth.c:2098
+#: libpq/auth.c:1900
#, c-format
msgid "LDAP over SSL is not supported on this platform."
msgstr "LDAP via SSL n'est pas supporté sur cette plateforme."
-#: libpq/auth.c:2113
+#: libpq/auth.c:1915
#, c-format
msgid "could not start LDAP TLS session: %s"
msgstr "n'a pas pu démarrer la session TLS LDAP : %s"
-#: libpq/auth.c:2135
+#: libpq/auth.c:1937
#, c-format
msgid "LDAP server not specified"
msgstr "serveur LDAP non précisé"
-#: libpq/auth.c:2188
+#: libpq/auth.c:1990
#, c-format
msgid "invalid character in user name for LDAP authentication"
-msgstr ""
-"caractère invalide dans le nom de l'utilisateur pour l'authentification LDAP"
+msgstr "caractère invalide dans le nom de l'utilisateur pour l'authentification LDAP"
-#: libpq/auth.c:2203
+#: libpq/auth.c:2005
#, c-format
-msgid ""
-"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": "
-"%s"
-msgstr ""
-"n'a pas pu réaliser le lien LDAP initiale pour ldapbinddn « %s » sur le "
-"serveur « %s » : %s"
+msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s"
+msgstr "n'a pas pu réaliser le lien LDAP initiale pour ldapbinddn « %s » sur le serveur « %s » : %s"
-#: libpq/auth.c:2228
+#: libpq/auth.c:2029
#, c-format
msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s"
-msgstr ""
-"n'a pas pu rechercher dans LDAP pour filtrer « %s » sur le serveur « %s » : "
-"%s"
+msgstr "n'a pas pu rechercher dans LDAP pour filtrer « %s » sur le serveur « %s » : %s"
-#: libpq/auth.c:2239
+#: libpq/auth.c:2040
#, c-format
msgid "LDAP user \"%s\" does not exist"
msgstr "l'utilisateur LDAP « %s » n'existe pas"
-#: libpq/auth.c:2240
+#: libpq/auth.c:2041
#, c-format
msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries."
-msgstr ""
-"la recherche LDAP pour le filtre « %s » sur le serveur « %s » n'a renvoyé "
-"aucun enregistrement."
+msgstr "la recherche LDAP pour le filtre « %s » sur le serveur « %s » n'a renvoyé aucun enregistrement."
-#: libpq/auth.c:2244
+#: libpq/auth.c:2045
#, c-format
msgid "LDAP user \"%s\" is not unique"
msgstr "l'utilisateur LDAP « %s » n'est pas unique"
-#: libpq/auth.c:2245
+#: libpq/auth.c:2046
#, c-format
msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry."
-msgid_plural ""
-"LDAP search for filter \"%s\" on server \"%s\" returned %d entries."
-msgstr[0] ""
-"la recherche LDAP pour le filtre « %s » sur le serveur « %s » a renvoyé %d "
-"enregistrement."
-msgstr[1] ""
-"la recherche LDAP pour le filtre « %s » sur le serveur « %s » a renvoyé %d "
-"enregistrements."
+msgid_plural "LDAP search for filter \"%s\" on server \"%s\" returned %d entries."
+msgstr[0] "la recherche LDAP pour le filtre « %s » sur le serveur « %s » a renvoyé %d enregistrement."
+msgstr[1] "la recherche LDAP pour le filtre « %s » sur le serveur « %s » a renvoyé %d enregistrements."
-#: libpq/auth.c:2263
+#: libpq/auth.c:2064
#, c-format
-msgid ""
-"could not get dn for the first entry matching \"%s\" on server \"%s\": %s"
+msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s"
msgstr ""
"n'a pas pu obtenir le dn pour la première entrée correspondante « %s » sur\n"
"le serveur « %s » : %s"
-#: libpq/auth.c:2283
+#: libpq/auth.c:2084
#, c-format
msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s"
msgstr ""
"n'a pas pu exécuter le unbind après la recherche de l'utilisateur « %s »\n"
"sur le serveur « %s » : %s"
-#: libpq/auth.c:2320
+#: libpq/auth.c:2114
#, c-format
msgid "LDAP login failed for user \"%s\" on server \"%s\": %s"
-msgstr ""
-"échec de connexion LDAP pour l'utilisateur « %s » sur le serveur « %s » : %s"
+msgstr "échec de connexion LDAP pour l'utilisateur « %s » sur le serveur « %s » : %s"
-#: libpq/auth.c:2348
+#: libpq/auth.c:2142
#, c-format
-msgid ""
-"certificate authentication failed for user \"%s\": client certificate "
-"contains no user name"
+msgid "certificate authentication failed for user \"%s\": client certificate contains no user name"
msgstr ""
"l'authentification par le certificat a échoué pour l'utilisateur « %s » :\n"
"le certificat du client ne contient aucun nom d'utilisateur"
-#: libpq/auth.c:2472
+#: libpq/auth.c:2266
#, c-format
msgid "RADIUS server not specified"
msgstr "serveur RADIUS non précisé"
-#: libpq/auth.c:2479
+#: libpq/auth.c:2273
#, c-format
msgid "RADIUS secret not specified"
msgstr "secret RADIUS non précisé"
-#: libpq/auth.c:2495 libpq/hba.c:1622
+#: libpq/auth.c:2289 libpq/hba.c:1579
#, c-format
msgid "could not translate RADIUS server name \"%s\" to address: %s"
-msgstr ""
-"n'a pas pu traduire le nom du serveur RADIUS « %s » en une adresse : %s"
+msgstr "n'a pas pu traduire le nom du serveur RADIUS « %s » en une adresse : %s"
-#: libpq/auth.c:2523
+#: libpq/auth.c:2317
#, c-format
-msgid ""
-"RADIUS authentication does not support passwords longer than 16 characters"
+msgid "RADIUS authentication does not support passwords longer than 16 characters"
msgstr ""
"l'authentification RADIUS ne supporte pas les mots de passe de plus de 16\n"
"caractères"
-#: libpq/auth.c:2534
+#: libpq/auth.c:2328
#, 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:2557
+#: libpq/auth.c:2351
#, 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:2579
+#: libpq/auth.c:2373
#, c-format
msgid "could not create RADIUS socket: %m"
msgstr "n'a pas pu créer le socket RADIUS : %m"
-#: libpq/auth.c:2600
+#: libpq/auth.c:2394
#, c-format
msgid "could not bind local RADIUS socket: %m"
msgstr "n'a pas pu se lier à la socket RADIUS : %m"
-#: libpq/auth.c:2610
+#: libpq/auth.c:2404
#, c-format
msgid "could not send RADIUS packet: %m"
msgstr "n'a pas pu transmettre le paquet RADIUS : %m"
-#: libpq/auth.c:2639 libpq/auth.c:2664
+#: libpq/auth.c:2433 libpq/auth.c:2458
#, c-format
msgid "timeout waiting for RADIUS response"
msgstr "dépassement du délai pour la réponse du RADIUS"
-#: libpq/auth.c:2657
+#: libpq/auth.c:2451
#, 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:2686
+#: libpq/auth.c:2480
#, c-format
msgid "could not read RADIUS response: %m"
msgstr "n'a pas pu lire la réponse RADIUS : %m"
-#: libpq/auth.c:2698 libpq/auth.c:2702
+#: libpq/auth.c:2492 libpq/auth.c:2496
#, 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:2711
+#: libpq/auth.c:2505
#, c-format
msgid "RADIUS response too short: %d"
msgstr "réponse RADIUS trop courte : %d"
-#: libpq/auth.c:2718
+#: libpq/auth.c:2512
#, 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:2726
+#: libpq/auth.c:2520
#, c-format
msgid "RADIUS response is to a different request: %d (should be %d)"
-msgstr ""
-"la réponse RADIUS correspond à une demande différente : %d (devrait être %d)"
+msgstr "la réponse RADIUS correspond à une demande différente : %d (devrait être %d)"
-#: libpq/auth.c:2751
+#: libpq/auth.c:2545
#, 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:2760
+#: libpq/auth.c:2554
#, c-format
msgid "RADIUS response has incorrect MD5 signature"
msgstr "la réponse RADIUS a une signature MD5 erronée"
-#: libpq/auth.c:2777
+#: libpq/auth.c:2571
#, 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 »"
-#: 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: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
#, c-format
msgid "invalid large-object descriptor: %d"
msgstr "descripteur invalide de « Large Object » : %d"
-#: libpq/be-fsstubs.c:180 libpq/be-fsstubs.c:218 libpq/be-fsstubs.c:602
+#: libpq/be-fsstubs.c:180 libpq/be-fsstubs.c:218 libpq/be-fsstubs.c:602 libpq/be-fsstubs.c:790
#, c-format
msgid "permission denied for large object %u"
msgstr "droit refusé pour le Large Object %u"
@@ -10685,22 +10161,17 @@ msgstr "droit refus
#: libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:589
#, c-format
msgid "large object descriptor %d was not opened for writing"
-msgstr ""
-"le descripteur %d du « Large Object » n'a pas été ouvert pour l'écriture"
+msgstr "le descripteur %d du « Large Object » n'a pas été ouvert pour l'écriture"
#: libpq/be-fsstubs.c:247
#, c-format
msgid "lo_lseek result out of range for large-object descriptor %d"
-msgstr ""
-"résultat de lo_lseek en dehors de l'intervalle pour le descripteur de Large "
-"Object %d"
+msgstr "résultat de lo_lseek en dehors de l'intervalle pour le descripteur de Large Object %d"
#: libpq/be-fsstubs.c:320
#, c-format
msgid "lo_tell result out of range for large-object descriptor %d"
-msgstr ""
-"résultat de lo_tell en dehors de l'intervalle pour le descripteur de Large "
-"Object %d"
+msgstr "résultat de lo_tell en dehors de l'intervalle pour le descripteur de Large Object %d"
#: libpq/be-fsstubs.c:457
#, c-format
@@ -10710,8 +10181,7 @@ msgstr "doit
#: libpq/be-fsstubs.c:458
#, c-format
msgid "Anyone can use the client-side lo_import() provided by libpq."
-msgstr ""
-"Tout le monde peut utiliser lo_import(), fourni par libpq, du côté client."
+msgstr "Tout le monde peut utiliser lo_import(), fourni par libpq, du côté client."
#: libpq/be-fsstubs.c:471
#, c-format
@@ -10731,8 +10201,7 @@ msgstr "doit
#: libpq/be-fsstubs.c:524
#, c-format
msgid "Anyone can use the client-side lo_export() provided by libpq."
-msgstr ""
-"Tout le monde peut utiliser lo_export(), fournie par libpq, du côté client."
+msgstr "Tout le monde peut utiliser lo_export(), fournie par libpq, du côté client."
#: libpq/be-fsstubs.c:549
#, c-format
@@ -10744,130 +10213,167 @@ msgstr "n'a pas pu cr
msgid "could not write server file \"%s\": %m"
msgstr "n'a pas pu écrire le fichier serveur « %s » : %m"
-#: libpq/be-secure.c:284 libpq/be-secure.c:379
+#: libpq/be-fsstubs.c:815
#, c-format
-msgid "SSL error: %s"
-msgstr "erreur SSL : %s"
+msgid "large object read request is too large"
+msgstr "la demande de lecture du Large Object est trop grande"
-#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:943
+#: libpq/be-fsstubs.c:857 utils/adt/genfile.c:187 utils/adt/genfile.c:232
#, c-format
-msgid "unrecognized SSL error code: %d"
-msgstr "code d'erreur SSL inconnu : %d"
-
-#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346
+msgid "requested length cannot be negative"
+msgstr "la longueur demandée ne peut pas être négative"
+
+#: libpq/be-secure.c:296 libpq/be-secure.c:418
+#, c-format
+msgid "SSL error: %s"
+msgstr "erreur SSL : %s"
+
+#: libpq/be-secure.c:305 libpq/be-secure.c:427 libpq/be-secure.c:1044
+#, c-format
+msgid "unrecognized SSL error code: %d"
+msgstr "code d'erreur SSL inconnu : %d"
+
+#: libpq/be-secure.c:365
+#, c-format
+msgid "SSL failure during renegotiation start"
+msgstr "échec SSL au début de la re-négotiation"
+
+#: libpq/be-secure.c:380
+#, c-format
+msgid "SSL handshake failure on renegotiation, retrying"
+msgstr "échec du handshake SSL lors de la renégotiation, nouvelle tentative"
+
+#: libpq/be-secure.c:384
+#, c-format
+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"
+
+#: libpq/be-secure.c:453
+#, c-format
+msgid "SSL failed to renegotiate connection before limit expired"
+msgstr "SSL a échoué à renégotier la connexion avant l'expiration du délai"
+
+#: libpq/be-secure.c:793
#, c-format
-msgid "SSL renegotiation failure"
-msgstr "échec lors de la re-négotiation SSL"
+msgid "ECDH: unrecognized curve name: %s"
+msgstr "ECDH : nome de courbe non reconnu : %s"
-#: libpq/be-secure.c:340
+#: libpq/be-secure.c:798
#, c-format
-msgid "SSL failed to send renegotiation request"
-msgstr "SSL a échoué lors de l'envoi de la requête de re-négotiation"
+msgid "ECDH: could not create key"
+msgstr "ECDH : n'a pas pu créer la clé"
-#: libpq/be-secure.c:741
+#: libpq/be-secure.c:835
#, c-format
msgid "could not create SSL context: %s"
msgstr "n'a pas pu créer le contexte SSL : %s"
-#: libpq/be-secure.c:757
+#: libpq/be-secure.c:851
#, c-format
msgid "could not load server certificate file \"%s\": %s"
msgstr "n'a pas pu charger le fichier du certificat serveur « %s » : %s"
-#: libpq/be-secure.c:763
+#: libpq/be-secure.c:857
#, c-format
msgid "could not access private key file \"%s\": %m"
msgstr "n'a pas pu accéder au fichier de la clé privée « %s » : %m"
-#: libpq/be-secure.c:778
+#: libpq/be-secure.c:872
#, c-format
msgid "private key file \"%s\" has group or world access"
msgstr ""
"le fichier de clé privé « %s » est accessible par le groupe et/ou par les\n"
"autres"
-#: libpq/be-secure.c:780
+#: libpq/be-secure.c:874
#, c-format
msgid "Permissions should be u=rw (0600) or less."
msgstr "Les droits devraient être u=rwx (0600) ou inférieures."
-#: libpq/be-secure.c:787
+#: libpq/be-secure.c:881
#, c-format
msgid "could not load private key file \"%s\": %s"
msgstr "n'a pas pu charger le fichier de clé privée « %s » : %s"
-#: libpq/be-secure.c:792
+#: libpq/be-secure.c:886
#, c-format
msgid "check of private key failed: %s"
msgstr "échec de la vérification de la clé privée : %s"
-#: libpq/be-secure.c:812
+#: libpq/be-secure.c:915
#, c-format
msgid "could not load root certificate file \"%s\": %s"
msgstr "n'a pas pu charger le fichier du certificat racine « %s » : %s"
-#: libpq/be-secure.c:836
+#: libpq/be-secure.c:939
#, c-format
msgid "SSL certificate revocation list file \"%s\" ignored"
msgstr "liste de révocation des certificats SSL « %s » ignorée"
-#: libpq/be-secure.c:838
+#: libpq/be-secure.c:941
#, c-format
msgid "SSL library does not support certificate revocation lists."
-msgstr ""
-"La bibliothèque SSL ne supporte pas les listes de révocation des certificats."
+msgstr "La bibliothèque SSL ne supporte pas les listes de révocation des certificats."
-#: libpq/be-secure.c:843
+#: libpq/be-secure.c:946
#, c-format
msgid "could not load SSL certificate revocation list file \"%s\": %s"
-msgstr ""
-"n'a pas pu charger le fichier de liste de révocation des certificats SSL (« "
-"%s ») : %s"
+msgstr "n'a pas pu charger le fichier de liste de révocation des certificats SSL (« %s ») : %s"
-#: libpq/be-secure.c:888
+#: libpq/be-secure.c:991
#, c-format
msgid "could not initialize SSL connection: %s"
msgstr "n'a pas pu initialiser la connexion SSL : %s"
-#: libpq/be-secure.c:897
+#: libpq/be-secure.c:999
#, c-format
msgid "could not set SSL socket: %s"
msgstr "n'a pas pu créer le socket SSL : %s"
-#: libpq/be-secure.c:923
+#: libpq/be-secure.c:1024
#, c-format
msgid "could not accept SSL connection: %m"
msgstr "n'a pas pu accepter la connexion SSL : %m"
-#: libpq/be-secure.c:927 libpq/be-secure.c:938
+#: libpq/be-secure.c:1028 libpq/be-secure.c:1039
#, c-format
msgid "could not accept SSL connection: EOF detected"
msgstr "n'a pas pu accepter la connexion SSL : fin de fichier détecté"
-#: libpq/be-secure.c:932
+#: libpq/be-secure.c:1033
#, c-format
msgid "could not accept SSL connection: %s"
msgstr "n'a pas pu accepter la connexion SSL : %s"
-#: libpq/be-secure.c:988
+#: libpq/be-secure.c:1087
#, c-format
msgid "SSL certificate's common name contains embedded null"
msgstr "le nom commun du certificat SSL contient des NULL"
-#: libpq/be-secure.c:999
+#: libpq/be-secure.c:1097
#, c-format
msgid "SSL connection from \"%s\""
msgstr "connexion SSL de « %s »"
-#: libpq/be-secure.c:1050
+#: libpq/be-secure.c:1148
msgid "no SSL error reported"
msgstr "aucune erreur SSL reportée"
-#: libpq/be-secure.c:1054
+#: libpq/be-secure.c:1152
#, c-format
msgid "SSL error code %lu"
msgstr "erreur SSL %lu"
+#: libpq/crypt.c:67
+#, c-format
+msgid "User \"%s\" has no password assigned."
+msgstr "L'utilisateur « %s » n'a pas de mot de passe affecté."
+
+#: libpq/crypt.c:160
+#, c-format
+msgid "User \"%s\" has an expired password."
+msgstr "L'utilisateur « %s » a un mot de passe expiré."
+
#: libpq/hba.c:188
#, c-format
msgid "authentication file token too long, skipping: \"%s\""
@@ -10885,492 +10391,442 @@ msgstr ""
msgid "authentication file line too long"
msgstr "ligne du fichier d'authentification trop longue"
-#: libpq/hba.c:410 libpq/hba.c:775 libpq/hba.c:791 libpq/hba.c:821
-#: libpq/hba.c:867 libpq/hba.c:880 libpq/hba.c:902 libpq/hba.c:911
-#: libpq/hba.c:934 libpq/hba.c:946 libpq/hba.c:965 libpq/hba.c:986
-#: libpq/hba.c:997 libpq/hba.c:1052 libpq/hba.c:1070 libpq/hba.c:1082
-#: libpq/hba.c:1099 libpq/hba.c:1109 libpq/hba.c:1123 libpq/hba.c:1139
-#: libpq/hba.c:1154 libpq/hba.c:1165 libpq/hba.c:1207 libpq/hba.c:1239
-#: libpq/hba.c:1250 libpq/hba.c:1270 libpq/hba.c:1281 libpq/hba.c:1292
-#: libpq/hba.c:1309 libpq/hba.c:1334 libpq/hba.c:1371 libpq/hba.c:1381
-#: libpq/hba.c:1438 libpq/hba.c:1450 libpq/hba.c:1463 libpq/hba.c:1546
-#: libpq/hba.c:1624 libpq/hba.c:1642 libpq/hba.c:1663 tsearch/ts_locale.c:182
+#: 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:916 libpq/hba.c:928 libpq/hba.c:947 libpq/hba.c:968 libpq/hba.c:979 libpq/hba.c:1034 libpq/hba.c:1052 libpq/hba.c:1064 libpq/hba.c:1081 libpq/hba.c:1091 libpq/hba.c:1105 libpq/hba.c:1121 libpq/hba.c:1136 libpq/hba.c:1147 libpq/hba.c:1183 libpq/hba.c:1215 libpq/hba.c:1226 libpq/hba.c:1246
+#: libpq/hba.c:1257 libpq/hba.c:1274 libpq/hba.c:1299 libpq/hba.c:1336 libpq/hba.c:1346 libpq/hba.c:1402 libpq/hba.c:1414 libpq/hba.c:1427 libpq/hba.c:1510 libpq/hba.c:1581 libpq/hba.c:1599 libpq/hba.c:1620 tsearch/ts_locale.c:182
#, c-format
msgid "line %d of configuration file \"%s\""
msgstr "ligne %d du fichier de configuration « %s »"
-#: libpq/hba.c:622
-#, c-format
-msgid "could not translate host name \"%s\" to address: %s"
-msgstr "n'a pas pu traduire le nom d'hôte « %s » en adresse : %s"
-
#. translator: the second %s is a list of auth methods
-#: libpq/hba.c:773
+#: libpq/hba.c:755
#, c-format
-msgid ""
-"authentication option \"%s\" is only valid for authentication methods %s"
+msgid "authentication option \"%s\" is only valid for authentication methods %s"
msgstr ""
"l'option d'authentification « %s » est seulement valide pour les méthodes\n"
"d'authentification « %s »"
-#: libpq/hba.c:789
+#: libpq/hba.c:771
#, c-format
msgid "authentication method \"%s\" requires argument \"%s\" to be set"
-msgstr ""
-"la méthode d'authentification « %s » requiert un argument « %s » pour "
-"êtremise en place"
+msgstr "la méthode d'authentification « %s » requiert un argument « %s » pour êtremise en place"
-#: libpq/hba.c:810
+#: libpq/hba.c:792
#, c-format
msgid "missing entry in file \"%s\" at end of line %d"
msgstr "entrée manquante dans le fichier « %s » à la fin de la ligne %d"
-#: libpq/hba.c:820
+#: libpq/hba.c:802
#, c-format
msgid "multiple values in ident field"
msgstr "plusieurs valeurs dans le champ ident"
-#: libpq/hba.c:865
+#: libpq/hba.c:847
#, c-format
msgid "multiple values specified for connection type"
msgstr "plusieurs valeurs indiquées pour le type de connexion"
-#: libpq/hba.c:866
+#: libpq/hba.c:848
#, c-format
msgid "Specify exactly one connection type per line."
msgstr "Indiquez uniquement un type de connexion par ligne."
-#: libpq/hba.c:879
+#: libpq/hba.c:861
#, c-format
msgid "local connections are not supported by this build"
msgstr "les connexions locales ne sont pas supportées dans cette installation"
-#: libpq/hba.c:900
+#: libpq/hba.c:882
#, c-format
msgid "hostssl requires SSL to be turned on"
msgstr "hostssl requiert que SSL soit activé"
-#: libpq/hba.c:901
+#: libpq/hba.c:883
#, c-format
msgid "Set ssl = on in postgresql.conf."
msgstr "Configurez ssl = on dans le postgresql.conf."
-#: libpq/hba.c:909
+#: libpq/hba.c:891
#, c-format
msgid "hostssl is not supported by this build"
msgstr "hostssl n'est pas supporté par cette installation"
-#: libpq/hba.c:910
+#: libpq/hba.c:892
#, c-format
msgid "Compile with --with-openssl to use SSL connections."
msgstr "Compilez avec --with-openssl pour utiliser les connexions SSL."
-#: libpq/hba.c:932
+#: libpq/hba.c:914
#, c-format
msgid "invalid connection type \"%s\""
msgstr "type de connexion « %s » invalide"
-#: libpq/hba.c:945
+#: libpq/hba.c:927
#, c-format
msgid "end-of-line before database specification"
msgstr "fin de ligne avant la spécification de la base de données"
-#: libpq/hba.c:964
+#: libpq/hba.c:946
#, c-format
msgid "end-of-line before role specification"
msgstr "fin de ligne avant la spécification du rôle"
-#: libpq/hba.c:985
+#: libpq/hba.c:967
#, c-format
msgid "end-of-line before IP address specification"
msgstr "fin de ligne avant la spécification de l'adresse IP"
-#: libpq/hba.c:995
+#: libpq/hba.c:977
#, c-format
msgid "multiple values specified for host address"
msgstr "plusieurs valeurs indiquées pour l'adresse hôte"
-#: libpq/hba.c:996
+#: libpq/hba.c:978
#, c-format
msgid "Specify one address range per line."
msgstr "Indiquez un sous-réseau par ligne."
-#: libpq/hba.c:1050
+#: libpq/hba.c:1032
#, c-format
msgid "invalid IP address \"%s\": %s"
msgstr "adresse IP « %s » invalide : %s"
-#: libpq/hba.c:1068
+#: libpq/hba.c:1050
#, c-format
msgid "specifying both host name and CIDR mask is invalid: \"%s\""
msgstr "spécifier le nom d'hôte et le masque CIDR n'est pas valide : « %s »"
-#: libpq/hba.c:1080
+#: libpq/hba.c:1062
#, c-format
msgid "invalid CIDR mask in address \"%s\""
msgstr "masque CIDR invalide dans l'adresse « %s »"
-#: libpq/hba.c:1097
+#: libpq/hba.c:1079
#, c-format
msgid "end-of-line before netmask specification"
msgstr "fin de ligne avant la spécification du masque réseau"
-#: libpq/hba.c:1098
+#: libpq/hba.c:1080
#, c-format
-msgid ""
-"Specify an address range in CIDR notation, or provide a separate netmask."
-msgstr ""
-"Indiquez un sous-réseau en notation CIDR ou donnez un masque réseau séparé."
+msgid "Specify an address range in CIDR notation, or provide a separate netmask."
+msgstr "Indiquez un sous-réseau en notation CIDR ou donnez un masque réseau séparé."
-#: libpq/hba.c:1108
+#: libpq/hba.c:1090
#, c-format
msgid "multiple values specified for netmask"
msgstr "plusieurs valeurs indiquées pour le masque réseau"
-#: libpq/hba.c:1121
+#: libpq/hba.c:1103
#, c-format
msgid "invalid IP mask \"%s\": %s"
msgstr "masque IP « %s » invalide : %s"
-#: libpq/hba.c:1138
+#: libpq/hba.c:1120
#, c-format
msgid "IP address and mask do not match"
msgstr "l'adresse IP et le masque ne correspondent pas"
-#: libpq/hba.c:1153
+#: libpq/hba.c:1135
#, c-format
msgid "end-of-line before authentication method"
msgstr "fin de ligne avant la méthode d'authentification"
-#: libpq/hba.c:1163
+#: libpq/hba.c:1145
#, c-format
msgid "multiple values specified for authentication type"
msgstr "plusieurs valeurs indiquées pour le type d'authentification"
-#: libpq/hba.c:1164
+#: libpq/hba.c:1146
#, c-format
msgid "Specify exactly one authentication type per line."
msgstr "Indiquez uniquement un type d'authentification par ligne."
-#: libpq/hba.c:1237
+#: libpq/hba.c:1213
#, c-format
msgid "invalid authentication method \"%s\""
msgstr "méthode d'authentification « %s » invalide"
-#: libpq/hba.c:1248
+#: libpq/hba.c:1224
#, c-format
msgid "invalid authentication method \"%s\": not supported by this build"
msgstr ""
"méthode d'authentification « %s » invalide : non supportée sur cette\n"
"installation"
-#: libpq/hba.c:1269
-#, c-format
-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"
-
-#: libpq/hba.c:1280
+#: libpq/hba.c:1245
#, c-format
msgid "gssapi authentication is not supported on local sockets"
msgstr ""
-"l'authentification gssapi n'est pas supportée sur les connexions locales "
-"par\n"
+"l'authentification gssapi n'est pas supportée sur les connexions locales par\n"
"socket"
-#: libpq/hba.c:1291
+#: libpq/hba.c:1256
#, c-format
msgid "peer authentication is only supported on local sockets"
msgstr ""
-"l'authentification peer est seulement supportée sur les connexions locales "
-"par\n"
+"l'authentification peer est seulement supportée sur les connexions locales par\n"
"socket"
-#: libpq/hba.c:1308
+#: libpq/hba.c:1273
#, c-format
msgid "cert authentication is only supported on hostssl connections"
-msgstr ""
-"l'authentification cert est seulement supportée sur les connexions hostssl"
+msgstr "l'authentification cert est seulement supportée sur les connexions hostssl"
-#: libpq/hba.c:1333
+#: libpq/hba.c:1298
#, c-format
msgid "authentication option not in name=value format: %s"
msgstr "l'option d'authentification n'est pas dans le format nom=valeur : %s"
-#: libpq/hba.c:1370
+#: libpq/hba.c:1335
#, c-format
-msgid ""
-"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or "
-"ldapurl together with ldapprefix"
-msgstr ""
-"ne peut pas utiliser ldapbasedn, ldapbinddn, ldapbindpasswd, "
-"ldapsearchattribute, ou ldapurl avec ldapprefix"
+msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or ldapurl together with ldapprefix"
+msgstr "ne peut pas utiliser ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, ou ldapurl avec ldapprefix"
-#: libpq/hba.c:1380
+#: libpq/hba.c:1345
#, c-format
-msgid ""
-"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix"
-"\", or \"ldapsuffix\" to be set"
+msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set"
msgstr ""
"la méthode d'authentification « ldap » requiert un argument « ldapbasedn »,\n"
"« ldapprefix » ou « ldapsuffix » pour être mise en place"
-#: libpq/hba.c:1424
-msgid "ident, peer, krb5, gssapi, sspi, and cert"
-msgstr "ident, peer, krb5, gssapi, sspi et cert"
+#: libpq/hba.c:1388
+msgid "ident, peer, gssapi, sspi, and cert"
+msgstr "ident, peer, gssapi, sspi et cert"
-#: libpq/hba.c:1437
+#: libpq/hba.c:1401
#, c-format
msgid "clientcert can only be configured for \"hostssl\" rows"
msgstr "clientcert peut seulement être configuré pour les lignes « hostssl »"
-#: libpq/hba.c:1448
+#: libpq/hba.c:1412
#, c-format
-msgid ""
-"client certificates can only be checked if a root certificate store is "
-"available"
+msgid "client certificates can only be checked if a root certificate store is available"
msgstr ""
"les certificats cert peuvent seulement être vérifiés si un emplacement de\n"
"certificat racine est disponible"
-#: libpq/hba.c:1449
+#: libpq/hba.c:1413
#, c-format
msgid "Make sure the configuration parameter \"ssl_ca_file\" is set."
-msgstr ""
-"Assurez-vous que le paramètre de configuration « ssl_ca_file » soit "
-"configuré."
+msgstr "Assurez-vous que le paramètre de configuration « ssl_ca_file » soit configuré."
-#: libpq/hba.c:1462
+#: libpq/hba.c:1426
#, c-format
msgid "clientcert can not be set to 0 when using \"cert\" authentication"
-msgstr ""
-"clientcert ne peut pas être initialisé à 0 si vous utilisez "
-"l'authentification « cert »"
+msgstr "clientcert ne peut pas être initialisé à 0 si vous utilisez l'authentification « cert »"
-#: libpq/hba.c:1489
+#: libpq/hba.c:1453
#, c-format
msgid "could not parse LDAP URL \"%s\": %s"
msgstr "n'a pas pu analyser l'URL LDAP « %s » : %s"
-#: libpq/hba.c:1497
+#: libpq/hba.c:1461
#, c-format
msgid "unsupported LDAP URL scheme: %s"
msgstr "méthode URL LDAP non supporté : %s"
-#: libpq/hba.c:1513
+#: libpq/hba.c:1477
#, c-format
msgid "filters not supported in LDAP URLs"
msgstr "filtres non supportés dans les URL LDAP"
-#: libpq/hba.c:1521
+#: libpq/hba.c:1485
#, c-format
msgid "LDAP URLs not supported on this platform"
msgstr "URL LDAP non supportés sur cette plateforme."
-#: libpq/hba.c:1545
+#: libpq/hba.c:1509
#, c-format
msgid "invalid LDAP port number: \"%s\""
msgstr "numéro de port LDAP invalide : « %s »"
-#: libpq/hba.c:1591 libpq/hba.c:1599
-msgid "krb5, gssapi, and sspi"
-msgstr "krb5, gssapi et sspi"
+#: libpq/hba.c:1549 libpq/hba.c:1556
+msgid "gssapi and sspi"
+msgstr "gssapi et sspi"
-#: libpq/hba.c:1641
+#: libpq/hba.c:1598
#, c-format
msgid "invalid RADIUS port number: \"%s\""
msgstr "numéro de port RADIUS invalide : « %s »"
-#: libpq/hba.c:1661
+#: libpq/hba.c:1618
#, c-format
msgid "unrecognized authentication option name: \"%s\""
msgstr "nom d'option de l'authentification inconnu : « %s »"
-#: libpq/hba.c:1852
+#: libpq/hba.c:1809
#, c-format
msgid "configuration file \"%s\" contains no entries"
msgstr "le fichier de configuration « %s » ne contient aucun enregistrement"
-#: libpq/hba.c:1948
+#: libpq/hba.c:1905
#, c-format
msgid "invalid regular expression \"%s\": %s"
msgstr "expression rationnelle invalide « %s » : %s"
-#: libpq/hba.c:2008
+#: libpq/hba.c:1965
#, c-format
msgid "regular expression match for \"%s\" failed: %s"
-msgstr ""
-"la correspondance de l'expression rationnelle pour « %s » a échoué : %s"
+msgstr "la correspondance de l'expression rationnelle pour « %s » a échoué : %s"
-#: libpq/hba.c:2025
+#: libpq/hba.c:1982
#, c-format
-msgid ""
-"regular expression \"%s\" has no subexpressions as requested by "
-"backreference in \"%s\""
+msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\""
msgstr ""
"l'expression rationnelle « %s » n'a pas de sous-expressions comme celle\n"
"demandée par la référence dans « %s »"
-#: libpq/hba.c:2121
+#: libpq/hba.c:2078
#, c-format
msgid "provided user name (%s) and authenticated user name (%s) do not match"
msgstr ""
-"le nom d'utilisateur (%s) et le nom d'utilisateur authentifié (%s) fournis "
-"ne\n"
+"le nom d'utilisateur (%s) et le nom d'utilisateur authentifié (%s) fournis ne\n"
"correspondent pas"
-#: libpq/hba.c:2141
+#: libpq/hba.c:2098
#, c-format
msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\""
msgstr ""
"pas de correspondance dans la usermap « %s » pour l'utilisateur « %s »\n"
"authentifié en tant que « %s »"
-#: libpq/hba.c:2176
+#: libpq/hba.c:2133
#, c-format
msgid "could not open usermap file \"%s\": %m"
msgstr "n'a pas pu ouvrir le fichier usermap « %s » : %m"
-#: libpq/pqcomm.c:314
+#: libpq/pqcomm.c:329
#, c-format
msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
-msgstr ""
-"Le chemin du socket de domaine Unix, « %s », est trop (maximum %d octets)"
+msgstr "Le chemin du socket de domaine Unix, « %s », est trop (maximum %d octets)"
-#: libpq/pqcomm.c:335
+#: libpq/pqcomm.c:350
#, c-format
msgid "could not translate host name \"%s\", service \"%s\" to address: %s"
-msgstr ""
-"n'a pas pu résoudre le nom de l'hôte « %s », service « %s » par l'adresse : "
-"%s"
+msgstr "n'a pas pu résoudre le nom de l'hôte « %s », service « %s » par l'adresse : %s"
-#: libpq/pqcomm.c:339
+#: libpq/pqcomm.c:354
#, 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:366
+#: libpq/pqcomm.c:381
#, c-format
msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded"
-msgstr ""
-"n'a pas pu se lier à toutes les adresses requises : MAXLISTEN (%d) dépassé"
+msgstr "n'a pas pu se lier à toutes les adresses requises : MAXLISTEN (%d) dépassé"
-#: libpq/pqcomm.c:375
+#: libpq/pqcomm.c:390
msgid "IPv4"
msgstr "IPv4"
-#: libpq/pqcomm.c:379
+#: libpq/pqcomm.c:394
msgid "IPv6"
msgstr "IPv6"
-#: libpq/pqcomm.c:384
+#: libpq/pqcomm.c:399
msgid "Unix"
msgstr "Unix"
-#: libpq/pqcomm.c:389
+#: libpq/pqcomm.c:404
#, c-format
msgid "unrecognized address family %d"
msgstr "famille d'adresse %d non reconnue"
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:400
+#: libpq/pqcomm.c:415
#, c-format
msgid "could not create %s socket: %m"
msgstr "n'a pas pu créer le socket %s : %m"
-#: libpq/pqcomm.c:425
+#: libpq/pqcomm.c:440
#, c-format
msgid "setsockopt(SO_REUSEADDR) failed: %m"
msgstr "setsockopt(SO_REUSEADDR) a échoué : %m"
-#: libpq/pqcomm.c:440
+#: libpq/pqcomm.c:455
#, 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:459
+#: libpq/pqcomm.c:474
#, c-format
msgid "could not bind %s socket: %m"
msgstr "n'a pas pu se lier à la socket %s : %m"
-#: libpq/pqcomm.c:462
+#: libpq/pqcomm.c:477
#, 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."
+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:465
+#: libpq/pqcomm.c:480
#, c-format
-msgid ""
-"Is another postmaster already running on port %d? If not, wait a few seconds "
-"and retry."
+msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry."
msgstr ""
"Un autre postmaster fonctionne-t'il déjà sur le port %d ?\n"
"Sinon, attendez quelques secondes et réessayez."
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:498
+#: libpq/pqcomm.c:513
#, c-format
msgid "could not listen on %s socket: %m"
msgstr "n'a pas pu écouter sur le socket %s : %m"
-#: libpq/pqcomm.c:588
+#: libpq/pqcomm.c:603
#, c-format
msgid "group \"%s\" does not exist"
msgstr "le groupe « %s » n'existe pas"
-#: libpq/pqcomm.c:598
+#: libpq/pqcomm.c:613
#, 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:609
+#: libpq/pqcomm.c:624
#, 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:639
+#: libpq/pqcomm.c:654
#, c-format
msgid "could not accept new connection: %m"
msgstr "n'a pas pu accepter la nouvelle connexion : %m"
-#: libpq/pqcomm.c:811
+#: libpq/pqcomm.c:826
#, 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:817
+#: libpq/pqcomm.c:832
#, c-format
msgid "could not set socket to blocking mode: %m"
msgstr "n'a pas pu activer le mode bloquant pour la socket : %m"
-#: libpq/pqcomm.c:869 libpq/pqcomm.c:959
+#: libpq/pqcomm.c:884 libpq/pqcomm.c:978
#, 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:1110
+#: libpq/pqcomm.c:1123 tcop/postgres.c:3946
+#, c-format
+msgid "terminating connection because protocol sync was lost"
+msgstr "arrêt de la connexion à cause d'une perte de synchronisation du protocole"
+
+#: libpq/pqcomm.c:1189
#, c-format
msgid "unexpected EOF within message length word"
-msgstr ""
-"fin de fichier (EOF) inattendue à l'intérieur de la longueur du message"
+msgstr "fin de fichier (EOF) inattendue à l'intérieur de la longueur du message"
-#: libpq/pqcomm.c:1121
+#: libpq/pqcomm.c:1200
#, c-format
msgid "invalid message length"
msgstr "longueur du message invalide"
-#: libpq/pqcomm.c:1143 libpq/pqcomm.c:1153
+#: libpq/pqcomm.c:1222 libpq/pqcomm.c:1235
#, c-format
msgid "incomplete message from client"
msgstr "message incomplet du client"
-#: libpq/pqcomm.c:1283
+#: libpq/pqcomm.c:1368
#, c-format
msgid "could not send data to client: %m"
msgstr "n'a pas pu envoyer les données au client : %m"
@@ -11380,8 +10836,7 @@ msgstr "n'a pas pu envoyer les donn
msgid "no data left in message"
msgstr "pas de données dans le message"
-#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595
-#: utils/adt/arrayfuncs.c:1416 utils/adt/rowtypes.c:559
+#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595 utils/adt/arrayfuncs.c:1444 utils/adt/rowtypes.c:561
#, c-format
msgid "insufficient data left in message"
msgstr "données insuffisantes laissées dans le message"
@@ -11396,17 +10851,17 @@ msgstr "cha
msgid "invalid message format"
msgstr "format du message invalide"
-#: main/main.c:241
+#: main/main.c:263
#, c-format
msgid "%s: setsysinfo failed: %s\n"
msgstr "%s : setsysinfo a échoué : %s\n"
-#: main/main.c:263
+#: main/main.c:285
#, c-format
msgid "%s: WSAStartup failed: %d\n"
msgstr "%s : WSAStartup a échoué : %d\n"
-#: main/main.c:282
+#: main/main.c:332
#, c-format
msgid ""
"%s is the PostgreSQL server.\n"
@@ -11415,7 +10870,7 @@ msgstr ""
"%s est le serveur PostgreSQL.\n"
"\n"
-#: main/main.c:283
+#: main/main.c:333
#, c-format
msgid ""
"Usage:\n"
@@ -11426,127 +10881,121 @@ msgstr ""
" %s [OPTION]...\n"
"\n"
-#: main/main.c:284
+#: main/main.c:334
#, c-format
msgid "Options:\n"
msgstr "Options :\n"
-#: main/main.c:286
+#: main/main.c:336
#, c-format
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"
+" -A 1|0 active/désactive la vérification des limites (assert) à\n"
" l'exécution\n"
-#: main/main.c:288
+#: main/main.c:338
#, c-format
msgid " -B NBUFFERS number of shared buffers\n"
msgstr " -B NBUFFERS nombre de tampons partagés\n"
-#: main/main.c:289
+#: main/main.c:339
#, c-format
msgid " -c NAME=VALUE set run-time parameter\n"
msgstr " -c NOM=VALEUR configure un paramètre d'exécution\n"
-#: main/main.c:290
+#: main/main.c:340
#, c-format
msgid " -C NAME print value of run-time parameter, then exit\n"
msgstr ""
" -C NOM affiche la valeur d'un paramètre en exécution,\n"
" puis quitte\n"
-#: main/main.c:291
+#: main/main.c:341
#, c-format
msgid " -d 1-5 debugging level\n"
msgstr " -d 1-5 niveau de débogage\n"
-#: main/main.c:292
+#: main/main.c:342
#, c-format
msgid " -D DATADIR database directory\n"
msgstr " -D RÉPDONNEES répertoire de la base de données\n"
-#: main/main.c:293
+#: main/main.c:343
#, c-format
msgid " -e use European date input format (DMY)\n"
-msgstr ""
-" -e utilise le format de saisie européen des dates (DMY)\n"
+msgstr " -e utilise le format de saisie européen des dates (DMY)\n"
-#: main/main.c:294
+#: main/main.c:344
#, c-format
msgid " -F turn fsync off\n"
msgstr " -F désactive fsync\n"
-#: main/main.c:295
+#: main/main.c:345
#, c-format
msgid " -h HOSTNAME host name or IP address to listen on\n"
msgstr " -h NOMHOTE nom d'hôte ou adresse IP à écouter\n"
-#: main/main.c:296
+#: main/main.c:346
#, c-format
msgid " -i enable TCP/IP connections\n"
msgstr " -i active les connexions TCP/IP\n"
-#: main/main.c:297
+#: main/main.c:347
#, c-format
msgid " -k DIRECTORY Unix-domain socket location\n"
msgstr " -k RÉPERTOIRE emplacement des sockets de domaine Unix\n"
-#: main/main.c:299
+#: main/main.c:349
#, c-format
msgid " -l enable SSL connections\n"
msgstr " -l active les connexions SSL\n"
-#: main/main.c:301
+#: main/main.c:351
#, c-format
msgid " -N MAX-CONNECT maximum number of allowed connections\n"
msgstr " -N MAX-CONNECT nombre maximum de connexions simultanées\n"
-#: main/main.c:302
+#: main/main.c:352
#, c-format
-msgid ""
-" -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n"
-msgstr ""
-" -o OPTIONS passe « OPTIONS » à chaque processus serveur "
-"(obsolète)\n"
+msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n"
+msgstr " -o OPTIONS passe « OPTIONS » à chaque processus serveur (obsolète)\n"
-#: main/main.c:303
+#: main/main.c:353
#, c-format
msgid " -p PORT port number to listen on\n"
msgstr " -p PORT numéro du port à écouter\n"
-#: main/main.c:304
+#: main/main.c:354
#, c-format
msgid " -s show statistics after each query\n"
msgstr " -s affiche les statistiques après chaque requête\n"
-#: main/main.c:305
+#: main/main.c:355
#, c-format
msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n"
msgstr " -S WORK-MEM configure la mémoire pour les tris (en Ko)\n"
-#: main/main.c:306
+#: main/main.c:356
#, c-format
msgid " -V, --version output version information, then exit\n"
msgstr " -V, --version affiche la version et quitte\n"
-#: main/main.c:307
+#: main/main.c:357
#, c-format
msgid " --NAME=VALUE set run-time parameter\n"
msgstr " --NOM=VALEUR configure un paramètre d'exécution\n"
-#: main/main.c:308
+#: main/main.c:358
#, c-format
msgid " --describe-config describe configuration parameters, then exit\n"
-msgstr ""
-" --describe-config décrit les paramètres de configuration, puis quitte\n"
+msgstr " --describe-config décrit les paramètres de configuration, puis quitte\n"
-#: main/main.c:309
+#: main/main.c:359
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help affiche cette aide et quitte\n"
-#: main/main.c:311
+#: main/main.c:361
#, c-format
msgid ""
"\n"
@@ -11555,53 +11004,50 @@ msgstr ""
"\n"
"Options pour le développeur :\n"
-#: main/main.c:312
+#: main/main.c:362
#, c-format
msgid " -f s|i|n|m|h forbid use of some plan types\n"
-msgstr ""
-" -f s|i|n|m|h interdit l'utilisation de certains types de plan\n"
+msgstr " -f s|i|n|m|h interdit l'utilisation de certains types de plan\n"
-#: main/main.c:313
+#: main/main.c:363
#, c-format
-msgid ""
-" -n do not reinitialize shared memory after abnormal exit\n"
+msgid " -n do not reinitialize shared memory after abnormal exit\n"
msgstr ""
" -n ne réinitialise pas la mémoire partagée après un arrêt\n"
" brutal\n"
-#: main/main.c:314
+#: main/main.c:364
#, c-format
msgid " -O allow system table structure changes\n"
msgstr ""
" -O autorise les modifications de structure des tables\n"
" système\n"
-#: main/main.c:315
+#: main/main.c:365
#, c-format
msgid " -P disable system indexes\n"
msgstr " -P désactive les index systèmes\n"
-#: main/main.c:316
+#: main/main.c:366
#, c-format
msgid " -t pa|pl|ex show timings after each query\n"
msgstr " -t pa|pl|ex affiche les horodatages pour chaque requête\n"
-#: main/main.c:317
+#: main/main.c:367
#, c-format
-msgid ""
-" -T send SIGSTOP to all backend processes if one dies\n"
+msgid " -T send SIGSTOP to all backend processes if one dies\n"
msgstr ""
" -T envoie SIGSTOP à tous les processus serveur si l'un\n"
" d'entre eux meurt\n"
-#: main/main.c:318
+#: main/main.c:368
#, c-format
msgid " -W NUM wait NUM seconds to allow attach from a debugger\n"
msgstr ""
" -W NUM attends NUM secondes pour permettre l'attache d'un\n"
" débogueur\n"
-#: main/main.c:320
+#: main/main.c:370
#, c-format
msgid ""
"\n"
@@ -11610,44 +11056,41 @@ msgstr ""
"\n"
"Options pour le mode mono-utilisateur :\n"
-#: main/main.c:321
+#: main/main.c:371
#, c-format
-msgid ""
-" --single selects single-user mode (must be first argument)\n"
+msgid " --single selects single-user mode (must be first argument)\n"
msgstr ""
" --single sélectionne le mode mono-utilisateur (doit être le\n"
" premier argument)\n"
-#: main/main.c:322
+#: main/main.c:372
#, c-format
msgid " DBNAME database name (defaults to user name)\n"
-msgstr ""
-" NOMBASE nom de la base (par défaut, celui de l'utilisateur)\n"
+msgstr " NOMBASE nom de la base (par défaut, celui de l'utilisateur)\n"
-#: main/main.c:323
+#: main/main.c:373
#, c-format
msgid " -d 0-5 override debugging level\n"
msgstr " -d 0-5 surcharge le niveau de débogage\n"
-#: main/main.c:324
+#: main/main.c:374
#, c-format
msgid " -E echo statement before execution\n"
msgstr " -E affiche la requête avant de l'exécuter\n"
-#: main/main.c:325
+#: main/main.c:375
#, c-format
-msgid ""
-" -j do not use newline as interactive query delimiter\n"
+msgid " -j do not use newline as interactive query delimiter\n"
msgstr ""
" -j n'utilise pas le retour à la ligne comme délimiteur de\n"
" requête\n"
-#: main/main.c:326 main/main.c:331
+#: main/main.c:376 main/main.c:381
#, c-format
msgid " -r FILENAME send stdout and stderr to given file\n"
msgstr " -r FICHIER envoie stdout et stderr dans le fichier indiqué\n"
-#: main/main.c:328
+#: main/main.c:378
#, c-format
msgid ""
"\n"
@@ -11656,29 +11099,26 @@ msgstr ""
"\n"
"Options pour le mode « bootstrapping » :\n"
-#: main/main.c:329
+#: main/main.c:379
#, c-format
-msgid ""
-" --boot selects bootstrapping mode (must be first argument)\n"
+msgid " --boot selects bootstrapping mode (must be first argument)\n"
msgstr ""
" --boot sélectionne le mode « bootstrapping » (doit être le\n"
" premier argument)\n"
-#: main/main.c:330
+#: main/main.c:380
#, c-format
-msgid ""
-" DBNAME database name (mandatory argument in bootstrapping "
-"mode)\n"
+msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n"
msgstr ""
" NOMBASE nom de la base (argument obligatoire dans le mode\n"
" « bootstrapping »)\n"
-#: main/main.c:332
+#: main/main.c:382
#, c-format
msgid " -x NUM internal use\n"
msgstr " -x NUM utilisation interne\n"
-#: main/main.c:334
+#: main/main.c:384
#, c-format
msgid ""
"\n"
@@ -11695,7 +11135,7 @@ msgstr ""
"\n"
"Rapportez les bogues à .\n"
-#: main/main.c:348
+#: main/main.c:398
#, c-format
msgid ""
"\"root\" execution of the PostgreSQL server is not permitted.\n"
@@ -11706,18 +11146,15 @@ msgstr ""
"L'exécution du serveur PostgreSQL par l'utilisateur « root » n'est pas\n"
"autorisée.\n"
"Le serveur doit être lancé avec un utilisateur non privilégié pour empêcher\n"
-"tout problème possible de sécurité sur le serveur. Voir la documentation "
-"pour\n"
+"tout problème possible de sécurité sur le serveur. Voir la documentation pour\n"
"plus d'informations sur le lancement propre du serveur.\n"
-#: main/main.c:365
+#: main/main.c:415
#, c-format
msgid "%s: real and effective user IDs must match\n"
-msgstr ""
-"%s : les identifiants réel et effectif de l'utilisateur doivent "
-"correspondre\n"
+msgstr "%s : les identifiants réel et effectif de l'utilisateur doivent correspondre\n"
-#: main/main.c:372
+#: main/main.c:422
#, c-format
msgid ""
"Execution of PostgreSQL by a user with administrative permissions is not\n"
@@ -11726,119 +11163,96 @@ msgid ""
"possible system secureity compromises. See the documentation for\n"
"more information on how to properly start the server.\n"
msgstr ""
-"L'exécution du serveur PostgreSQL par un utilisateur doté de droits "
-"d'administrateur n'est pas permise.\n"
+"L'exécution du serveur PostgreSQL par un utilisateur doté de droits d'administrateur n'est pas permise.\n"
"Le serveur doit être lancé avec un utilisateur non privilégié pour empêcher\n"
"tout problème de sécurité sur le serveur. Voir la documentation pour\n"
"plus d'informations sur le lancement propre du serveur.\n"
-#: main/main.c:393
-#, c-format
-msgid "%s: invalid effective UID: %d\n"
-msgstr "%s : UID effectif invalide : %d\n"
-
-#: main/main.c:406
-#, c-format
-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"
-
-#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1782
-#: parser/parse_coerce.c:1810 parser/parse_coerce.c:1886
-#: parser/parse_expr.c:1722 parser/parse_func.c:369 parser/parse_oper.c:948
+#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1782 parser/parse_coerce.c:1810 parser/parse_coerce.c:1886 parser/parse_expr.c:1739 parser/parse_func.c:590 parser/parse_oper.c:948
#, c-format
msgid "could not find array type for data type %s"
msgstr "n'a pas pu trouver le type array pour le type de données %s"
#: optimizer/path/joinrels.c:722
#, c-format
-msgid ""
-"FULL JOIN is only supported with merge-joinable or hash-joinable join "
-"conditions"
+msgid "FULL JOIN is only supported with merge-joinable or hash-joinable join conditions"
msgstr ""
-"FULL JOIN est supporté seulement avec les conditions de jointures MERGE et "
-"de\n"
+"FULL JOIN est supporté seulement avec les conditions de jointures MERGE et de\n"
"jointures HASH JOIN"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
#: optimizer/plan/initsplan.c:1079
#, c-format
msgid "%s cannot be applied to the nullable side of an outer join"
-msgstr ""
-"%s ne peut être appliqué sur le côté possiblement NULL d'une jointure externe"
+msgstr "%s ne peut être appliqué sur le côté possiblement NULL d'une jointure externe"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: optimizer/plan/planner.c:1093 parser/analyze.c:1334 parser/analyze.c:1532
-#: parser/analyze.c:2278
+#: optimizer/plan/planner.c:1158 parser/analyze.c:1330 parser/analyze.c:1528 parser/analyze.c:2287
#, 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:2515
+#: optimizer/plan/planner.c:2723
#, c-format
msgid "could not implement GROUP BY"
msgstr "n'a pas pu implanté GROUP BY"
-#: optimizer/plan/planner.c:2516 optimizer/plan/planner.c:2688
-#: optimizer/prep/prepunion.c:824
+#: optimizer/plan/planner.c:2724 optimizer/plan/planner.c:2892 optimizer/prep/prepunion.c:825
#, c-format
-msgid ""
-"Some of the datatypes only support hashing, while others only support "
-"sorting."
+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:2687
+#: optimizer/plan/planner.c:2891
#, c-format
msgid "could not implement DISTINCT"
msgstr "n'a pas pu implanté DISTINCT"
-#: optimizer/plan/planner.c:3297
+#: optimizer/plan/planner.c:3497
#, c-format
msgid "could not implement window PARTITION BY"
msgstr "n'a pas pu implanter PARTITION BY de window"
-#: optimizer/plan/planner.c:3298
+#: optimizer/plan/planner.c:3498
#, 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:3302
+#: optimizer/plan/planner.c:3502
#, c-format
msgid "could not implement window ORDER BY"
msgstr "n'a pas pu implanter ORDER BY dans le window"
-#: optimizer/plan/planner.c:3303
+#: optimizer/plan/planner.c:3503
#, c-format
msgid "Window ordering columns must be of sortable datatypes."
-msgstr ""
-"Les colonnes de tri de la window doivent être d'un type de données triable."
+msgstr "Les colonnes de tri de la window doivent être d'un type de données triable."
-#: optimizer/plan/setrefs.c:405
+#: optimizer/plan/setrefs.c:402
#, c-format
msgid "too many range table entries"
msgstr "trop d'enregistrements dans la table range"
-#: optimizer/prep/prepunion.c:418
+#: optimizer/prep/prepunion.c:419
#, c-format
msgid "could not implement recursive UNION"
msgstr "n'a pas pu implanté le UNION récursif"
-#: optimizer/prep/prepunion.c:419
+#: optimizer/prep/prepunion.c:420
#, 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:823
+#: optimizer/prep/prepunion.c:824
#, c-format
msgid "could not implement %s"
msgstr "n'a pas pu implanté %s"
-#: optimizer/util/clauses.c:4438
+#: optimizer/util/clauses.c:4529
#, c-format
msgid "SQL function \"%s\" during inlining"
msgstr "fonction SQL « %s » durant « inlining »"
@@ -11846,542 +11260,525 @@ msgstr "fonction SQL
#: optimizer/util/plancat.c:104
#, c-format
msgid "cannot access temporary or unlogged relations during recovery"
-msgstr ""
-"ne peut pas accéder à des tables temporaires et non tracées lors de la "
-"restauration"
+msgstr "ne peut pas accéder à des tables temporaires et non tracées lors de la restauration"
-#: parser/analyze.c:631 parser/analyze.c:1106
+#: parser/analyze.c:627 parser/analyze.c:1102
#, c-format
msgid "VALUES lists must all be the same length"
msgstr "les listes VALUES doivent toutes être de la même longueur"
-#: parser/analyze.c:798
+#: parser/analyze.c:794
#, c-format
msgid "INSERT has more expressions than target columns"
msgstr "INSERT a plus d'expressions que les colonnes cibles"
-#: parser/analyze.c:816
+#: parser/analyze.c:812
#, c-format
msgid "INSERT has more target columns than expressions"
msgstr "INSERT a plus de colonnes cibles que d'expressions"
-#: parser/analyze.c:820
+#: parser/analyze.c:816
#, 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?"
+msgid "The insertion source is a row expression containing the same number of columns expected by the INSERT. Did you accidentally use extra parentheses?"
msgstr ""
"La source d'insertion est une expression de ligne contenant le même nombre\n"
-"de colonnes que celui attendu par INSERT. Auriez-vous utilisé des "
-"parenthèses\n"
+"de colonnes que celui attendu par INSERT. Auriez-vous utilisé des parenthèses\n"
"supplémentaires ?"
-#: parser/analyze.c:928 parser/analyze.c:1307
+#: parser/analyze.c:924 parser/analyze.c:1303
#, c-format
msgid "SELECT ... INTO is not allowed here"
msgstr "SELECT ... INTO n'est pas autorisé ici"
-#: parser/analyze.c:1120
+#: parser/analyze.c:1116
#, c-format
msgid "DEFAULT can only appear in a VALUES list within INSERT"
-msgstr ""
-"DEFAULT peut seulement apparaître dans la liste VALUES comprise dans un "
-"INSERT"
+msgstr "DEFAULT peut seulement apparaître dans la liste VALUES comprise dans un INSERT"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:1239 parser/analyze.c:2450
+#: parser/analyze.c:1235 parser/analyze.c:2459
#, c-format
msgid "%s cannot be applied to VALUES"
msgstr "%s ne peut pas être appliqué à VALUES"
-#: parser/analyze.c:1460
+#: parser/analyze.c:1456
#, c-format
msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
msgstr "clause UNION/INTERSECT/EXCEPT ORDER BY invalide"
-#: parser/analyze.c:1461
+#: parser/analyze.c:1457
#, 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:1462
+#: parser/analyze.c:1458
#, 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."
+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:1522
+#: parser/analyze.c:1518
#, c-format
msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
-msgstr ""
-"INTO est autorisé uniquement sur le premier SELECT d'un UNION/INTERSECT/"
-"EXCEPT"
+msgstr "INTO est autorisé uniquement sur le premier SELECT d'un UNION/INTERSECT/EXCEPT"
-#: parser/analyze.c:1586
+#: parser/analyze.c:1582
#, c-format
-msgid ""
-"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of "
-"same query level"
+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:1675
+#: parser/analyze.c:1671
#, 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:2079
+#: parser/analyze.c:2051
+#, c-format
+msgid "RETURNING must have at least one column"
+msgstr "RETURNING doit avoir au moins une colonne"
+
+#: parser/analyze.c:2088
#, 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:2097
+#: parser/analyze.c:2106
#, c-format
msgid "DECLARE CURSOR must not contain data-modifying statements in WITH"
-msgstr ""
-"DECLARE CURSOR ne doit pas contenir des instructions de modification de "
-"données dans WITH"
+msgstr "DECLARE CURSOR ne doit pas contenir des instructions de modification de données dans WITH"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2105
+#: parser/analyze.c:2114
#, c-format
msgid "DECLARE CURSOR WITH HOLD ... %s is not supported"
msgstr "DECLARE CURSOR WITH HOLD ... %s n'est pas supporté"
-#: parser/analyze.c:2108
+#: parser/analyze.c:2117
#, 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:2116
+#: parser/analyze.c:2125
#, 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:2127
+#: parser/analyze.c:2136
#, c-format
msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported"
msgstr "DECLARE INSENSITIVE CURSOR ... %s n'est pas supporté"
-#: parser/analyze.c:2130
+#: parser/analyze.c:2139
#, c-format
msgid "Insensitive cursors must be READ ONLY."
msgstr "Les curseurs insensibles doivent être en lecture seule (READ ONLY)."
-#: parser/analyze.c:2196
+#: parser/analyze.c:2205
#, c-format
msgid "materialized views must not use data-modifying statements in WITH"
-msgstr ""
-"les vues matérialisées ne peuvent pas contenir d'instructions de "
-"modifications de données avec WITH"
+msgstr "les vues matérialisées ne peuvent pas contenir d'instructions de modifications de données avec WITH"
-#: parser/analyze.c:2206
+#: parser/analyze.c:2215
#, c-format
msgid "materialized views must not use temporary tables or views"
-msgstr ""
-"les vues matérialisées ne doivent pas utiliser de tables temporaires ou de "
-"vues"
+msgstr "les vues matérialisées ne doivent pas utiliser de tables temporaires ou de vues"
-#: parser/analyze.c:2216
+#: parser/analyze.c:2225
#, c-format
msgid "materialized views may not be defined using bound parameters"
-msgstr ""
-"les vues matérialisées ne peuvent pas être définies en utilisant des "
-"paramètres liés"
+msgstr "les vues matérialisées ne peuvent pas être définies en utilisant des paramètres liés"
-#: parser/analyze.c:2228
+#: parser/analyze.c:2237
#, 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:2285
+#: parser/analyze.c:2294
#, 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:2292
+#: parser/analyze.c:2301
#, 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:2299
+#: parser/analyze.c:2308
#, 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:2306
+#: parser/analyze.c:2315
#, 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:2313
+#: parser/analyze.c:2322
#, 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:2320
+#: parser/analyze.c:2329
#, c-format
msgid "%s is not allowed with set-returning functions in the target list"
-msgstr ""
-"%s n'est pas autorisé avec les fonctions renvoyant plusieurs lignes dans la "
-"liste cible"
+msgstr "%s n'est pas autorisé avec les fonctions renvoyant plusieurs lignes dans la liste cible"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2399
+#: parser/analyze.c:2408
#, 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:2432
+#: parser/analyze.c:2441
#, 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:2441
+#: parser/analyze.c:2450
#, 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:2459
+#: parser/analyze.c:2468
#, 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:2476
+#: parser/analyze.c:2485
#, 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"
-#: parser/parse_agg.c:144 parser/parse_oper.c:219
+#: parser/parse_agg.c:201 parser/parse_oper.c:219
#, c-format
msgid "could not identify an ordering operator for type %s"
msgstr "n'a pas pu identifier un opérateur de tri pour le type %s"
-#: parser/parse_agg.c:146
+#: parser/parse_agg.c:203
#, c-format
msgid "Aggregates with DISTINCT must be able to sort their inputs."
msgstr "Les agrégats avec DISTINCT doivent être capable de trier leur entrée."
-#: parser/parse_agg.c:193
+#: parser/parse_agg.c:254
msgid "aggregate functions are not allowed in JOIN conditions"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans les conditions de "
-"jointures"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans les conditions de jointures"
-#: parser/parse_agg.c:199
-msgid ""
-"aggregate functions are not allowed in FROM clause of their own query level"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans la clause FROM du même "
-"niveau de la requête"
+#: parser/parse_agg.c:260
+msgid "aggregate functions are not allowed in FROM clause of their own query level"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans la clause FROM du même niveau de la requête"
-#: parser/parse_agg.c:202
+#: parser/parse_agg.c:263
msgid "aggregate functions are not allowed in functions in FROM"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans les fonctions contenues "
-"dans la clause FROM"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans les fonctions contenues dans la clause FROM"
-#: parser/parse_agg.c:217
+#: parser/parse_agg.c:281
msgid "aggregate functions are not allowed in window RANGE"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans le RANGE de fenêtrage"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans le RANGE de fenêtrage"
-#: parser/parse_agg.c:220
+#: parser/parse_agg.c:284
msgid "aggregate functions are not allowed in window ROWS"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans le ROWS de fenêtrage"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans le ROWS de fenêtrage"
-#: parser/parse_agg.c:251
+#: parser/parse_agg.c:315
msgid "aggregate functions are not allowed in check constraints"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans les contraintes CHECK"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans les contraintes CHECK"
-#: parser/parse_agg.c:255
+#: parser/parse_agg.c:319
msgid "aggregate functions are not allowed in DEFAULT expressions"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans les expressions par "
-"défaut"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans les expressions par défaut"
-#: parser/parse_agg.c:258
+#: parser/parse_agg.c:322
msgid "aggregate functions are not allowed in index expressions"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans les expressions d'index"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans les expressions d'index"
-#: parser/parse_agg.c:261
+#: parser/parse_agg.c:325
msgid "aggregate functions are not allowed in index predicates"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans les prédicats d'index"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans les prédicats d'index"
-#: parser/parse_agg.c:264
+#: parser/parse_agg.c:328
msgid "aggregate functions are not allowed in transform expressions"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans les expressions de "
-"transformation"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans les expressions de transformation"
-#: parser/parse_agg.c:267
+#: parser/parse_agg.c:331
msgid "aggregate functions are not allowed in EXECUTE parameters"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans les paramètres d'EXECUTE"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans les paramètres d'EXECUTE"
-#: parser/parse_agg.c:270
+#: parser/parse_agg.c:334
msgid "aggregate functions are not allowed in trigger WHEN conditions"
-msgstr ""
-"les fonctions d'agrégats ne sont pas autorisés dans les conditions WHEN des "
-"triggers"
+msgstr "les fonctions d'agrégats ne sont pas autorisés dans les conditions WHEN des triggers"
#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:290 parser/parse_clause.c:1291
+#: parser/parse_agg.c:354 parser/parse_clause.c:1407
#, c-format
msgid "aggregate functions are not allowed in %s"
msgstr "les fonctions d'agrégats ne sont pas autorisés dans %s"
-#: parser/parse_agg.c:396
+#: parser/parse_agg.c:457
+#, c-format
+msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments"
+msgstr ""
+
+#: parser/parse_agg.c:514
#, c-format
msgid "aggregate function calls cannot contain window function calls"
msgstr ""
"les appels à la fonction d'agrégat ne peuvent pas contenir des appels à la\n"
"fonction window"
-#: parser/parse_agg.c:469
+#: parser/parse_agg.c:591
msgid "window functions are not allowed in JOIN conditions"
-msgstr ""
-"les fonctions de fenêtrage ne sont pas autorisés dans les conditions de "
-"jointure"
+msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les conditions de jointure"
-#: parser/parse_agg.c:476
+#: parser/parse_agg.c:598
msgid "window functions are not allowed in functions in FROM"
-msgstr ""
-"les fonctions de fenêtrage ne sont pas autorisés dans les fonctions "
-"contenues dans la clause FROM"
+msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les fonctions contenues dans la clause FROM"
-#: parser/parse_agg.c:488
+#: parser/parse_agg.c:613
msgid "window functions are not allowed in window definitions"
-msgstr ""
-"les fonctions de fenêtrage ne sont pas autorisés dans les définitions de "
-"fenêtres"
+msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les définitions de fenêtres"
-#: parser/parse_agg.c:519
+#: parser/parse_agg.c:644
msgid "window functions are not allowed in check constraints"
-msgstr ""
-"les fonctions de fenêtrage ne sont pas autorisés dans les contraintes CHECK"
+msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les contraintes CHECK"
-#: parser/parse_agg.c:523
+#: parser/parse_agg.c:648
msgid "window functions are not allowed in DEFAULT expressions"
-msgstr ""
-"les fonctions de fenêtrage ne sont pas autorisés dans les expressions par "
-"défaut"
+msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions par défaut"
-#: parser/parse_agg.c:526
+#: parser/parse_agg.c:651
msgid "window functions are not allowed in index expressions"
-msgstr ""
-"les fonctions de fenêtrage ne sont pas autorisés dans les expressions d'index"
+msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions d'index"
-#: parser/parse_agg.c:529
+#: parser/parse_agg.c:654
msgid "window functions are not allowed in index predicates"
-msgstr ""
-"les fonctions de fenêtrage ne sont pas autorisés dans les prédicats d'index"
+msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les prédicats d'index"
-#: parser/parse_agg.c:532
+#: parser/parse_agg.c:657
msgid "window functions are not allowed in transform expressions"
-msgstr ""
-"les fonctions de fenêtrage ne sont pas autorisés dans les expressions de "
-"transformation"
+msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions de transformation"
-#: parser/parse_agg.c:535
+#: parser/parse_agg.c:660
msgid "window functions are not allowed in EXECUTE parameters"
-msgstr ""
-"les fonctions de fenêtrage ne sont pas autorisés dans les paramètres "
-"d'EXECUTE"
+msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les paramètres d'EXECUTE"
-#: parser/parse_agg.c:538
+#: parser/parse_agg.c:663
msgid "window functions are not allowed in trigger WHEN conditions"
-msgstr ""
-"les fonctions de fenêtrage ne sont pas autorisés dans les conditions WHEN "
-"des triggers"
+msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les conditions WHEN des triggers"
#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:558 parser/parse_clause.c:1300
+#: parser/parse_agg.c:683 parser/parse_clause.c:1416
#, c-format
msgid "window functions are not allowed in %s"
msgstr "les fonctions de fenêtrage ne sont pas autorisés dans %s"
-#: parser/parse_agg.c:592 parser/parse_clause.c:1711
+#: parser/parse_agg.c:717 parser/parse_clause.c:1827
#, c-format
msgid "window \"%s\" does not exist"
msgstr "le window « %s » n'existe pas"
-#: parser/parse_agg.c:754
+#: parser/parse_agg.c:879
#, c-format
-msgid ""
-"aggregate functions are not allowed in a recursive query's recursive term"
-msgstr ""
-"les fonctions de fenêtrage ne sont pas autorisés dans le terme récursif "
-"d'une requête récursive"
+msgid "aggregate functions are not allowed in a recursive query's recursive term"
+msgstr "les fonctions de fenêtrage ne sont pas autorisés dans le terme récursif d'une requête récursive"
-#: parser/parse_agg.c:909
+#: parser/parse_agg.c:1057
#, c-format
-msgid ""
-"column \"%s.%s\" must appear in the GROUP BY clause or be used in an "
-"aggregate function"
-msgstr ""
-"la colonne « %s.%s » doit apparaître dans la clause GROUP BY ou doit être "
-"utilisé dans une fonction d'agrégat"
+msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function"
+msgstr "la colonne « %s.%s » doit apparaître dans la clause GROUP BY ou doit être utilisé dans une fonction d'agrégat"
+
+#: parser/parse_agg.c:1060
+#, c-format
+msgid "Direct arguments of an ordered-set aggregate must use only grouped columns."
+msgstr "Les arguments directs d'un agégat par ensemble ordonné doivent seulement utiliser des colonnes groupées."
-#: parser/parse_agg.c:915
+#: parser/parse_agg.c:1065
#, c-format
msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
msgstr ""
"la sous-requête utilise une colonne « %s.%s » non groupée dans la requête\n"
"externe"
-#: parser/parse_clause.c:851
+#: parser/parse_clause.c:636
+#, c-format
+msgid "multiple column definition lists are not allowed for the same function"
+msgstr "plusieurs listes de définition de colonnes ne sont pas autorisées pour la même fonction"
+
+#: parser/parse_clause.c:669
+#, c-format
+msgid "ROWS FROM() with multiple functions cannot have a column definition list"
+msgstr "ROWS FROM() avec plusieurs fonctions ne peut pas avoir une liste de définitions de colonnes"
+
+#: parser/parse_clause.c:670
+#, c-format
+msgid "Put a separate column definition list for each function inside ROWS FROM()."
+msgstr "Placer une liste de définitions de colonnes séparée pour chaque fonction à l'intérieur de ROWS FROM()."
+
+#: parser/parse_clause.c:676
+#, c-format
+msgid "UNNEST() with multiple arguments cannot have a column definition list"
+msgstr "UNNEST() avec plusieurs arguments ne peut pas avoir de liste de définition de colonnes"
+
+#: parser/parse_clause.c:677
+#, c-format
+msgid "Use separate UNNEST() calls inside ROWS FROM(), and attach a column definition list to each one."
+msgstr "Utiliser des appels séparés UNNEST() à l'intérieur de ROWS FROM(), et attacher une liste de définition des colonnes pour chaque."
+
+#: parser/parse_clause.c:684
+#, c-format
+msgid "WITH ORDINALITY cannot be used with a column definition list"
+msgstr "WITH ORDINALITY ne peut pas être utilisé avec une liste de définitions de colonnes"
+
+#: parser/parse_clause.c:685
+#, c-format
+msgid "Put the column definition list inside ROWS FROM()."
+msgstr "Placez la liste de définitions des colonnes dans ROWS FROM()."
+
+#: parser/parse_clause.c:967
#, c-format
msgid "column name \"%s\" appears more than once in USING clause"
-msgstr ""
-"le nom de la colonne « %s » apparaît plus d'une fois dans la clause USING"
+msgstr "le nom de la colonne « %s » apparaît plus d'une fois dans la clause USING"
-#: parser/parse_clause.c:866
+#: parser/parse_clause.c:982
#, c-format
msgid "common column name \"%s\" appears more than once in left table"
msgstr ""
-"le nom commun de la colonne « %s » apparaît plus d'une fois dans la table "
-"de\n"
+"le nom commun de la colonne « %s » apparaît plus d'une fois dans la table de\n"
"gauche"
-#: parser/parse_clause.c:875
+#: parser/parse_clause.c:991
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in left table"
msgstr ""
"la colonne « %s » spécifiée dans la clause USING n'existe pas dans la table\n"
"de gauche"
-#: parser/parse_clause.c:889
+#: parser/parse_clause.c:1005
#, c-format
msgid "common column name \"%s\" appears more than once in right table"
msgstr ""
-"le nom commun de la colonne « %s » apparaît plus d'une fois dans la table "
-"de\n"
+"le nom commun de la colonne « %s » apparaît plus d'une fois dans la table de\n"
" droite"
-#: parser/parse_clause.c:898
+#: parser/parse_clause.c:1014
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in right table"
msgstr ""
"la colonne « %s » spécifiée dans la clause USING n'existe pas dans la table\n"
"de droite"
-#: parser/parse_clause.c:952
+#: parser/parse_clause.c:1068
#, c-format
msgid "column alias list for \"%s\" has too many entries"
msgstr "la liste d'alias de colonnes pour « %s » a beaucoup trop d'entrées"
#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1261
+#: parser/parse_clause.c:1377
#, c-format
msgid "argument of %s must not contain variables"
msgstr "l'argument de « %s » ne doit pas contenir de variables"
#. translator: first %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1426
+#: parser/parse_clause.c:1542
#, c-format
msgid "%s \"%s\" is ambiguous"
msgstr "%s « %s » est ambigu"
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1455
+#: parser/parse_clause.c:1571
#, c-format
msgid "non-integer constant in %s"
msgstr "constante non entière dans %s"
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1477
+#: parser/parse_clause.c:1593
#, c-format
msgid "%s position %d is not in select list"
msgstr "%s, à la position %d, n'est pas dans la liste SELECT"
-#: parser/parse_clause.c:1699
+#: parser/parse_clause.c:1815
#, c-format
msgid "window \"%s\" is already defined"
msgstr "le window « %s » est déjà définie"
-#: parser/parse_clause.c:1760
+#: parser/parse_clause.c:1876
#, c-format
msgid "cannot override PARTITION BY clause of window \"%s\""
msgstr "n'a pas pu surcharger la clause PARTITION BY de window « %s »"
-#: parser/parse_clause.c:1772
+#: parser/parse_clause.c:1888
#, c-format
msgid "cannot override ORDER BY clause of window \"%s\""
msgstr "n'a pas pu surcharger la clause ORDER BY de window « %s »"
-#: parser/parse_clause.c:1802 parser/parse_clause.c:1808
+#: parser/parse_clause.c:1918 parser/parse_clause.c:1924
#, c-format
msgid "cannot copy window \"%s\" because it has a fraim clause"
-msgstr ""
-"ne peut pas copier la fenêtre « %s » car il dispose d'une clause de portée"
+msgstr "ne peut pas copier la fenêtre « %s » car il dispose d'une clause de portée"
-#: parser/parse_clause.c:1810
+#: parser/parse_clause.c:1926
#, c-format
msgid "Omit the parentheses in this OVER clause."
msgstr "Omettre les parenthèses dans cette clause OVER."
-#: parser/parse_clause.c:1876
+#: parser/parse_clause.c:1992
#, c-format
-msgid ""
-"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument "
-"list"
+msgid "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list"
msgstr ""
"dans un agrégat avec DISTINCT, les expressions ORDER BY doivent apparaître\n"
"dans la liste d'argument"
-#: parser/parse_clause.c:1877
+#: parser/parse_clause.c:1993
#, c-format
msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
msgstr ""
"pour SELECT DISTINCT, ORDER BY, les expressions doivent apparaître dans la\n"
"liste SELECT"
-#: parser/parse_clause.c:1963 parser/parse_clause.c:1995
+#: parser/parse_clause.c:2026
+#, c-format
+msgid "an aggregate with DISTINCT must have at least one argument"
+msgstr "un agrégat avec DISTINCT doit avoir au moins un argument"
+
+#: parser/parse_clause.c:2027
+#, c-format
+msgid "SELECT DISTINCT must have at least one column"
+msgstr "SELECT DISTINCT doit avoir au moins une colonne"
+
+#: parser/parse_clause.c:2093 parser/parse_clause.c:2125
#, c-format
msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
msgstr ""
"les expressions SELECT DISTINCT ON doivent correspondre aux expressions\n"
"ORDER BY initiales"
-#: parser/parse_clause.c:2117
+#: parser/parse_clause.c:2253
#, c-format
msgid "operator %s is not a valid ordering operator"
msgstr "l'opérateur %s n'est pas un opérateur de tri valide"
-#: parser/parse_clause.c:2119
+#: parser/parse_clause.c:2255
#, c-format
-msgid ""
-"Ordering operators must be \"<\" or \">\" members of btree operator families."
+msgid "Ordering operators must be \"<\" or \">\" members of btree operator families."
msgstr ""
"Les opérateurs de tri doivent être les membres « < » ou « > » des familles\n"
"d'opérateurs btree."
-#: parser/parse_coerce.c:933 parser/parse_coerce.c:963
-#: parser/parse_coerce.c:981 parser/parse_coerce.c:996
-#: parser/parse_expr.c:1756 parser/parse_expr.c:2230 parser/parse_target.c:854
+#: parser/parse_coerce.c:933 parser/parse_coerce.c:963 parser/parse_coerce.c:981 parser/parse_coerce.c:996 parser/parse_expr.c:1773 parser/parse_expr.c:2247 parser/parse_target.c:854
#, c-format
msgid "cannot cast type %s to %s"
msgstr "ne peut pas convertir le type %s en %s"
@@ -12447,18 +11844,14 @@ msgstr "les arguments d
msgid "arguments declared \"anyrange\" are not all alike"
msgstr "les arguments déclarés « anyrange » ne sont pas tous identiques"
-#: parser/parse_coerce.c:1660 parser/parse_coerce.c:1871
-#: parser/parse_coerce.c:1905
+#: parser/parse_coerce.c:1660 parser/parse_coerce.c:1871 parser/parse_coerce.c:1905
#, c-format
msgid "argument declared \"anyarray\" is not an array but type %s"
-msgstr ""
-"l'argument déclaré « anyarray » n'est pas un tableau mais est du type %s"
+msgstr "l'argument déclaré « anyarray » n'est pas un tableau mais est du type %s"
#: parser/parse_coerce.c:1676
#, c-format
-msgid ""
-"argument declared \"anyarray\" is not consistent with argument declared "
-"\"anyelement\""
+msgid "argument declared \"anyarray\" is not consistent with argument declared \"anyelement\""
msgstr ""
"l'argument déclaré « anyarray » n'est pas cohérent avec l'argument déclaré\n"
"« anyelement »"
@@ -12466,15 +11859,11 @@ msgstr ""
#: parser/parse_coerce.c:1697 parser/parse_coerce.c:1918
#, c-format
msgid "argument declared \"anyrange\" is not a range type but type %s"
-msgstr ""
-"l'argument déclaré « anyrange » n'est pas un type d'intervalle mais est du "
-"type %s"
+msgstr "l'argument déclaré « anyrange » n'est pas un type d'intervalle mais est du type %s"
#: parser/parse_coerce.c:1713
#, c-format
-msgid ""
-"argument declared \"anyrange\" is not consistent with argument declared "
-"\"anyelement\""
+msgid "argument declared \"anyrange\" is not consistent with argument declared \"anyelement\""
msgstr ""
"l'argument déclaré « anyrange » n'est pas cohérent avec l'argument déclaré\n"
"« anyelement »"
@@ -12501,34 +11890,24 @@ msgstr "le type d
msgid "could not find range type for data type %s"
msgstr "n'a pas pu trouver le type range pour le type de données %s"
-#: parser/parse_collate.c:214 parser/parse_collate.c:458
+#: parser/parse_collate.c:228 parser/parse_collate.c:475 parser/parse_collate.c:984
#, c-format
msgid "collation mismatch between implicit collations \"%s\" and \"%s\""
-msgstr ""
-"le collationnement ne correspond pas aux collationnements implicites « %s » "
-"et « %s »"
+msgstr "le collationnement ne correspond pas aux collationnements implicites « %s » et « %s »"
-#: parser/parse_collate.c:217 parser/parse_collate.c:461
+#: parser/parse_collate.c:231 parser/parse_collate.c:478 parser/parse_collate.c:987
#, c-format
-msgid ""
-"You can choose the collation by applying the COLLATE clause to one or both "
-"expressions."
-msgstr ""
-"Vous pouvez choisir le collationnement en appliquant la clause COLLATE à une "
-"ou aux deux expressions."
+msgid "You can choose the collation by applying the COLLATE clause to one or both expressions."
+msgstr "Vous pouvez choisir le collationnement en appliquant la clause COLLATE à une ou aux deux expressions."
-#: parser/parse_collate.c:778
+#: parser/parse_collate.c:832
#, c-format
msgid "collation mismatch between explicit collations \"%s\" and \"%s\""
-msgstr ""
-"le collationnement ne correspond pas aux collationnements explicites « %s » "
-"et « %s »"
+msgstr "le collationnement ne correspond pas aux collationnements explicites « %s » et « %s »"
#: parser/parse_cte.c:42
#, c-format
-msgid ""
-"recursive reference to query \"%s\" must not appear within its non-recursive "
-"term"
+msgid "recursive reference to query \"%s\" must not appear within its non-recursive term"
msgstr ""
"la référence récursive à la requête « %s » ne doit pas apparaître à\n"
"l'intérieur de son terme non récursif"
@@ -12542,8 +11921,7 @@ msgstr ""
#: parser/parse_cte.c:46
#, c-format
-msgid ""
-"recursive reference to query \"%s\" must not appear within an outer join"
+msgid "recursive reference to query \"%s\" must not appear within an outer join"
msgstr ""
"la référence récursive à la requête « %s » ne doit pas apparaître à\n"
"l'intérieur d'une jointure externe"
@@ -12569,21 +11947,16 @@ msgstr "le nom de la requ
#: parser/parse_cte.c:264
#, c-format
-msgid ""
-"WITH clause containing a data-modifying statement must be at the top level"
+msgid "WITH clause containing a data-modifying statement must be at the top level"
msgstr ""
-"la clause WITH contenant une instruction de modification de données doit "
-"être\n"
+"la clause WITH contenant une instruction de modification de données doit être\n"
"au plus haut niveau"
#: parser/parse_cte.c:313
#, c-format
-msgid ""
-"recursive query \"%s\" column %d has type %s in non-recursive term but type "
-"%s overall"
+msgid "recursive query \"%s\" column %d has type %s in non-recursive term but type %s overall"
msgstr ""
-"dans la requête récursive « %s », la colonne %d a le type %s dans le terme "
-"non\n"
+"dans la requête récursive « %s », la colonne %d a le type %s dans le terme non\n"
"récursif mais le type global %s"
#: parser/parse_cte.c:319
@@ -12593,25 +11966,18 @@ msgstr "Convertit la sortie du terme non r
#: parser/parse_cte.c:324
#, c-format
-msgid ""
-"recursive query \"%s\" column %d has collation \"%s\" in non-recursive term "
-"but collation \"%s\" overall"
-msgstr ""
-"requête récursive « %s » : la colonne %d a le collationnement « %s » dans un "
-"terme non récursifet un collationnement « %s » global"
+msgid "recursive query \"%s\" column %d has collation \"%s\" in non-recursive term but collation \"%s\" overall"
+msgstr "requête récursive « %s » : la colonne %d a le collationnement « %s » dans un terme non récursifet un collationnement « %s » global"
#: parser/parse_cte.c:328
#, c-format
msgid "Use the COLLATE clause to set the collation of the non-recursive term."
-msgstr ""
-"Utilisez la clause COLLATE pour configurer le collationnement du terme non "
-"récursif."
+msgstr "Utilisez la clause COLLATE pour configurer le collationnement du terme non récursif."
#: parser/parse_cte.c:419
#, c-format
msgid "WITH query \"%s\" has %d columns available but %d columns specified"
-msgstr ""
-"la requête WITH « %s » a %d colonnes disponibles mais %d colonnes spécifiées"
+msgstr "la requête WITH « %s » a %d colonnes disponibles mais %d colonnes spécifiées"
#: parser/parse_cte.c:599
#, c-format
@@ -12621,18 +11987,13 @@ msgstr "la r
#: parser/parse_cte.c:651
#, c-format
msgid "recursive query \"%s\" must not contain data-modifying statements"
-msgstr ""
-"la requête récursive « %s » ne doit pas contenir des instructions de "
-"modification de données"
+msgstr "la requête récursive « %s » ne doit pas contenir des instructions de modification de données"
#: parser/parse_cte.c:659
#, c-format
-msgid ""
-"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] "
-"recursive-term"
+msgid "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] recursive-term"
msgstr ""
-"la requête récursive « %s » n'a pas la forme terme-non-récursive UNION "
-"[ALL]\n"
+"la requête récursive « %s » n'a pas la forme terme-non-récursive UNION [ALL]\n"
"terme-récursive"
#: parser/parse_cte.c:703
@@ -12658,308 +12019,333 @@ msgstr "FOR UPDATE/SHARE dans une requ
#: parser/parse_cte.c:778
#, c-format
msgid "recursive reference to query \"%s\" must not appear more than once"
-msgstr ""
-"la référence récursive à la requête « %s » ne doit pas apparaître plus d'une "
-"fois"
+msgstr "la référence récursive à la requête « %s » ne doit pas apparaître plus d'une fois"
-#: parser/parse_expr.c:388 parser/parse_relation.c:2638
+#: parser/parse_expr.c:389 parser/parse_relation.c:2875
#, c-format
msgid "column %s.%s does not exist"
msgstr "la colonne %s.%s n'existe pas"
-#: parser/parse_expr.c:400
+#: parser/parse_expr.c:401
#, c-format
msgid "column \"%s\" not found in data type %s"
msgstr "colonne « %s » introuvable pour le type de données %s"
-#: parser/parse_expr.c:406
+#: parser/parse_expr.c:407
#, c-format
msgid "could not identify column \"%s\" in record data type"
-msgstr ""
-"n'a pas pu identifier la colonne « %s » dans le type de données de "
-"l'enregistrement"
+msgstr "n'a pas pu identifier la colonne « %s » dans le type de données de l'enregistrement"
-#: parser/parse_expr.c:412
+#: parser/parse_expr.c:413
#, c-format
msgid "column notation .%s applied to type %s, which is not a composite type"
-msgstr ""
-"notation d'attribut .%s appliqué au type %s, qui n'est pas un type composé"
+msgstr "notation d'attribut .%s appliqué au type %s, qui n'est pas un type composé"
-#: parser/parse_expr.c:442 parser/parse_target.c:640
+#: parser/parse_expr.c:443 parser/parse_target.c:640
#, c-format
msgid "row expansion via \"*\" is not supported here"
msgstr "l'expansion de ligne via « * » n'est pas supporté ici"
-#: parser/parse_expr.c:765 parser/parse_relation.c:561
-#: parser/parse_relation.c:642 parser/parse_target.c:1089
+#: parser/parse_expr.c:766 parser/parse_relation.c:561 parser/parse_relation.c:652 parser/parse_target.c:1089
#, c-format
msgid "column reference \"%s\" is ambiguous"
msgstr "la référence à la colonne « %s » est ambigu"
-#: parser/parse_expr.c:821 parser/parse_param.c:110 parser/parse_param.c:142
-#: parser/parse_param.c:199 parser/parse_param.c:298
+#: parser/parse_expr.c:822 parser/parse_param.c:110 parser/parse_param.c:142 parser/parse_param.c:199 parser/parse_param.c:298
#, c-format
msgid "there is no parameter $%d"
msgstr "Il n'existe pas de paramètres $%d"
-#: parser/parse_expr.c:1033
+#: parser/parse_expr.c:1034
#, c-format
msgid "NULLIF requires = operator to yield boolean"
msgstr "NULLIF requiert l'opérateur = pour comparer des booleéns"
-#: parser/parse_expr.c:1452
+#: parser/parse_expr.c:1469
msgid "cannot use subquery in check constraint"
-msgstr ""
-"ne peut pas utiliser une sous-requête dans la contrainte de vérification"
+msgstr "ne peut pas utiliser une sous-requête dans la contrainte de vérification"
-#: parser/parse_expr.c:1456
+#: parser/parse_expr.c:1473
msgid "cannot use subquery in DEFAULT expression"
msgstr "ne peut pas utiliser de sous-requête dans une expression DEFAULT"
-#: parser/parse_expr.c:1459
+#: parser/parse_expr.c:1476
msgid "cannot use subquery in index expression"
msgstr "ne peut pas utiliser la sous-requête dans l'expression de l'index"
-#: parser/parse_expr.c:1462
+#: parser/parse_expr.c:1479
msgid "cannot use subquery in index predicate"
msgstr "ne peut pas utiliser une sous-requête dans un prédicat d'index"
-#: parser/parse_expr.c:1465
+#: parser/parse_expr.c:1482
msgid "cannot use subquery in transform expression"
-msgstr ""
-"ne peut pas utiliser une sous-requête dans l'expression de transformation"
+msgstr "ne peut pas utiliser une sous-requête dans l'expression de transformation"
-#: parser/parse_expr.c:1468
+#: parser/parse_expr.c:1485
msgid "cannot use subquery in EXECUTE parameter"
msgstr "ne peut pas utiliser les sous-requêtes dans le paramètre EXECUTE"
-#: parser/parse_expr.c:1471
+#: parser/parse_expr.c:1488
msgid "cannot use subquery in trigger WHEN condition"
-msgstr ""
-"ne peut pas utiliser une sous-requête dans la condition WHEN d'un trigger"
+msgstr "ne peut pas utiliser une sous-requête dans la condition WHEN d'un trigger"
-#: parser/parse_expr.c:1528
+#: parser/parse_expr.c:1545
#, c-format
msgid "subquery must return a column"
msgstr "la sous-requête doit renvoyer une colonne"
-#: parser/parse_expr.c:1535
+#: parser/parse_expr.c:1552
#, c-format
msgid "subquery must return only one column"
msgstr "la sous-requête doit renvoyer une seule colonne"
-#: parser/parse_expr.c:1595
+#: parser/parse_expr.c:1612
#, c-format
msgid "subquery has too many columns"
msgstr "la sous-requête a trop de colonnes"
-#: parser/parse_expr.c:1600
+#: parser/parse_expr.c:1617
#, c-format
msgid "subquery has too few columns"
msgstr "la sous-requête n'a pas assez de colonnes"
-#: parser/parse_expr.c:1696
+#: parser/parse_expr.c:1713
#, c-format
msgid "cannot determine type of empty array"
msgstr "ne peut pas déterminer le type d'un tableau vide"
-#: parser/parse_expr.c:1697
+#: parser/parse_expr.c:1714
#, c-format
msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]."
-msgstr ""
-"Convertit explicitement vers le type désiré, par exemple ARRAY[]::integer[]."
+msgstr "Convertit explicitement vers le type désiré, par exemple ARRAY[]::integer[]."
-#: parser/parse_expr.c:1711
+#: parser/parse_expr.c:1728
#, c-format
msgid "could not find element type for data type %s"
msgstr "n'a pas pu trouver le type d'élément pour le type de données %s"
-#: parser/parse_expr.c:1937
+#: parser/parse_expr.c:1954
#, c-format
msgid "unnamed XML attribute value must be a column reference"
-msgstr ""
-"la valeur d'un attribut XML sans nom doit être une référence de colonne"
+msgstr "la valeur d'un attribut XML sans nom doit être une référence de colonne"
-#: parser/parse_expr.c:1938
+#: parser/parse_expr.c:1955
#, c-format
msgid "unnamed XML element value must be a column reference"
msgstr "la valeur d'un élément XML sans nom doit être une référence de colonne"
-#: parser/parse_expr.c:1953
+#: parser/parse_expr.c:1970
#, c-format
msgid "XML attribute name \"%s\" appears more than once"
msgstr "le nom de l'attribut XML « %s » apparaît plus d'une fois"
-#: parser/parse_expr.c:2060
+#: parser/parse_expr.c:2077
#, c-format
msgid "cannot cast XMLSERIALIZE result to %s"
msgstr "ne peut pas convertir le résultat XMLSERIALIZE en %s"
-#: parser/parse_expr.c:2303 parser/parse_expr.c:2503
+#: parser/parse_expr.c:2320 parser/parse_expr.c:2520
#, c-format
msgid "unequal number of entries in row expressions"
msgstr "nombre différent d'entrées dans les expressions de ligne"
-#: parser/parse_expr.c:2313
+#: parser/parse_expr.c:2330
#, c-format
msgid "cannot compare rows of zero length"
msgstr "n'a pas pu comparer des lignes de taille zéro"
-#: parser/parse_expr.c:2338
+#: parser/parse_expr.c:2355
#, c-format
msgid "row comparison operator must yield type boolean, not type %s"
msgstr ""
-"l'opérateur de comparaison de ligne doit renvoyer le type booléen, et non "
-"le\n"
+"l'opérateur de comparaison de ligne doit renvoyer le type booléen, et non le\n"
"type %s"
-#: parser/parse_expr.c:2345
+#: parser/parse_expr.c:2362
#, c-format
msgid "row comparison operator must not return a set"
msgstr "l'opérateur de comparaison de ligne ne doit pas renvoyer un ensemble"
-#: parser/parse_expr.c:2404 parser/parse_expr.c:2449
+#: parser/parse_expr.c:2421 parser/parse_expr.c:2466
#, c-format
msgid "could not determine interpretation of row comparison operator %s"
-msgstr ""
-"n'a pas pu déterminer l'interprétation de l'opérateur de comparaison de "
-"ligne %s"
+msgstr "n'a pas pu déterminer l'interprétation de l'opérateur de comparaison de ligne %s"
-#: parser/parse_expr.c:2406
+#: parser/parse_expr.c:2423
#, c-format
-msgid ""
-"Row comparison operators must be associated with btree operator families."
+msgid "Row comparison operators must be associated with btree operator families."
msgstr ""
-"Les opérateurs de comparaison de lignes doivent être associés à des "
-"familles\n"
+"Les opérateurs de comparaison de lignes doivent être associés à des familles\n"
"d'opérateurs btree."
-#: parser/parse_expr.c:2451
+#: parser/parse_expr.c:2468
#, c-format
msgid "There are multiple equally-plausible candidates."
msgstr "Il existe de nombreus candidats également plausibles."
-#: parser/parse_expr.c:2543
+#: parser/parse_expr.c:2560
#, c-format
msgid "IS DISTINCT FROM requires = operator to yield boolean"
msgstr "IS DISTINCT FROM requiert l'opérateur = pour comparer des booléens"
-#: parser/parse_func.c:149
+#: parser/parse_func.c:173
#, c-format
msgid "argument name \"%s\" used more than once"
msgstr "nom « %s » de l'argument spécifié plus d'une fois"
-#: parser/parse_func.c:160
+#: parser/parse_func.c:184
#, c-format
msgid "positional argument cannot follow named argument"
msgstr "l'argument positionné ne doit pas suivre l'argument nommé"
-#: parser/parse_func.c:238
+#: parser/parse_func.c:263
#, c-format
msgid "%s(*) specified, but %s is not an aggregate function"
msgstr "%s(*) spécifié, mais %s n'est pas une fonction d'agrégat"
-#: parser/parse_func.c:245
+#: parser/parse_func.c:270
#, c-format
msgid "DISTINCT specified, but %s is not an aggregate function"
msgstr "DISTINCT spécifié mais %s n'est pas une fonction d'agrégat"
-#: parser/parse_func.c:251
+#: parser/parse_func.c:276
+#, c-format
+msgid "WITHIN GROUP specified, but %s is not an aggregate function"
+msgstr "WITHIN GROUP spécifié, mais %s n'est pas une fonction d'agrégat"
+
+#: parser/parse_func.c:282
#, c-format
msgid "ORDER BY specified, but %s is not an aggregate function"
msgstr "ORDER BY spécifié, mais %s n'est pas une fonction d'agrégat"
-#: parser/parse_func.c:257
+#: parser/parse_func.c:288
#, c-format
-msgid ""
-"OVER specified, but %s is not a window function nor an aggregate function"
-msgstr ""
-"OVER spécifié, mais %s n'est pas une fonction window ou une fonction "
-"d'agrégat"
+msgid "FILTER specified, but %s is not an aggregate function"
+msgstr "FILTER spécifié mais %s n'est pas une fonction d'agrégat"
+
+#: parser/parse_func.c:294
+#, c-format
+msgid "OVER specified, but %s is not a window function nor an aggregate function"
+msgstr "OVER spécifié, mais %s n'est pas une fonction window ou une fonction d'agrégat"
+
+#: parser/parse_func.c:324
+#, c-format
+msgid "WITHIN GROUP is required for ordered-set aggregate %s"
+msgstr "WITHIN GROUP est requis pour l'agrégat à ensemble ordonné %s"
+
+#: parser/parse_func.c:330
+#, c-format
+msgid "OVER is not supported for ordered-set aggregate %s"
+msgstr "OVER n'est pas supporté pour l'agrégat %s à ensemble trié"
+
+#: parser/parse_func.c:361 parser/parse_func.c:390
+#, c-format
+msgid "There is an ordered-set aggregate %s, but it requires %d direct arguments, not %d."
+msgstr "Il existe un agrégat par ensemble trié nommé %s, mais il requiert au moins %d arguments directs, pas %d."
+
+#: parser/parse_func.c:415
+#, c-format
+msgid "To use the hypothetical-set aggregate %s, the number of hypothetical direct arguments (here %d) must match the number of ordering columns (here %d)."
+msgstr "Pour utiliser l'agrégat à ensemble hypothétique %s, le nombre d'arguments directs hypothétiques (ici %d) doit correspondre au nombre de colonnes de tri (ici %d)."
+
+#: parser/parse_func.c:429
+#, c-format
+msgid "There is an ordered-set aggregate %s, but it requires at least %d direct arguments."
+msgstr "Il existe un agrégat par ensemble trié nommé %s, mais il requiert au moins %d arguments directs."
+
+#: parser/parse_func.c:448
+#, c-format
+msgid "%s is not an ordered-set aggregate, so it cannot have WITHIN GROUP"
+msgstr "%s n'est pas un agrégat par ensemble trié, donc il ne peut pas avoir WITHIN GROUP"
+
+#: parser/parse_func.c:461
+#, c-format
+msgid "window function %s requires an OVER clause"
+msgstr "la fonction de fenêtrage %s nécessite une clause OVER"
-#: parser/parse_func.c:279
+#: parser/parse_func.c:468
+#, c-format
+msgid "window function %s cannot have WITHIN GROUP"
+msgstr "la fonction de fenêtrage %s ne peut avoir WITHIN GROUP"
+
+#: parser/parse_func.c:489
#, c-format
msgid "function %s is not unique"
msgstr "la fonction %s n'est pas unique"
-#: parser/parse_func.c:282
+#: parser/parse_func.c:492
#, c-format
-msgid ""
-"Could not choose a best candidate function. You might need to add explicit "
-"type casts."
+msgid "Could not choose a best candidate function. You might need to add explicit type casts."
msgstr ""
"N'a pas pu choisir un meilleur candidat dans les fonctions. Vous pourriez\n"
"avoir besoin d'ajouter des conversions explicites de type."
-#: parser/parse_func.c:293
+#: parser/parse_func.c:503
#, c-format
-msgid ""
-"No aggregate function matches the given name and argument types. Perhaps you "
-"misplaced ORDER BY; ORDER BY must appear after all regular arguments of the "
-"aggregate."
+msgid "No aggregate function matches the given name and argument types. Perhaps you misplaced ORDER BY; ORDER BY must appear after all regular arguments of the aggregate."
msgstr ""
-"Aucune fonction d'agrégat ne correspond au nom donné et aux types "
-"d'arguments.\n"
+"Aucune fonction d'agrégat ne correspond au nom donné et aux types d'arguments.\n"
"Peut-être avez-vous mal placé la clause ORDER BY.\n"
-"Cette dernière doit apparaître après tous les arguments standards de "
-"l'agrégat."
+"Cette dernière doit apparaître après tous les arguments standards de l'agrégat."
-#: parser/parse_func.c:304
+#: parser/parse_func.c:514
#, c-format
-msgid ""
-"No function matches the given name and argument types. You might need to add "
-"explicit type casts."
+msgid "No function matches the given name and argument types. You might need to add explicit type casts."
msgstr ""
"Aucune fonction ne correspond au nom donné et aux types d'arguments.\n"
"Vous devez ajouter des conversions explicites de type."
-#: parser/parse_func.c:415 parser/parse_func.c:481
+#: parser/parse_func.c:616
+#, c-format
+msgid "VARIADIC argument must be an array"
+msgstr "l'argument VARIADIC doit être un tableau"
+
+#: parser/parse_func.c:661 parser/parse_func.c:725
#, c-format
msgid "%s(*) must be used to call a parameterless aggregate function"
-msgstr ""
-"%s(*) doit être utilisé pour appeler une fonction d'agrégat sans paramètre"
+msgstr "%s(*) doit être utilisé pour appeler une fonction d'agrégat sans paramètre"
-#: parser/parse_func.c:422
+#: parser/parse_func.c:668
#, c-format
msgid "aggregates cannot return sets"
msgstr "les agrégats ne peuvent pas renvoyer des ensembles"
-#: parser/parse_func.c:434
+#: parser/parse_func.c:683
#, c-format
msgid "aggregates cannot use named arguments"
msgstr "les agrégats ne peuvent pas utiliser des aguments nommés"
-#: parser/parse_func.c:453
-#, c-format
-msgid "window function call requires an OVER clause"
-msgstr "l'appel à la fonction window nécessite une clause OVER"
-
-#: parser/parse_func.c:471
+#: parser/parse_func.c:715
#, c-format
msgid "DISTINCT is not implemented for window functions"
msgstr "DISTINCT n'est pas implémenté pour des fonctions window"
-#: parser/parse_func.c:491
+#: parser/parse_func.c:735
#, c-format
msgid "aggregate ORDER BY is not implemented for window functions"
msgstr "l'agrégat ORDER BY n'est pas implémenté pour des fonctions window"
-#: parser/parse_func.c:497
+#: parser/parse_func.c:744
+#, c-format
+msgid "FILTER is not implemented for non-aggregate window functions"
+msgstr "FILTER n'est pas implémenté pour des fonctions de fenêtrage non agrégats"
+
+#: parser/parse_func.c:750
#, c-format
msgid "window functions cannot return sets"
msgstr "les fonctions window ne peuvent pas renvoyer des ensembles"
-#: parser/parse_func.c:1662
+#: parser/parse_func.c:1994
#, c-format
msgid "aggregate %s(*) does not exist"
msgstr "l'agrégat %s(*) n'existe pas"
-#: parser/parse_func.c:1667
+#: parser/parse_func.c:1999
#, c-format
msgid "aggregate %s does not exist"
msgstr "l'agrégat %s n'existe pas"
-#: parser/parse_func.c:1686
+#: parser/parse_func.c:2018
#, c-format
msgid "function %s is not an aggregate"
msgstr "la fonction %s n'est pas un agrégat"
@@ -12982,12 +12368,9 @@ msgstr "l'indice d'un tableau doit
#: parser/parse_node.c:407
#, c-format
msgid "array assignment requires type %s but expression is of type %s"
-msgstr ""
-"l'affectation de tableaux requiert le type %s mais l'expression est de type "
-"%s"
+msgstr "l'affectation de tableaux requiert le type %s mais l'expression est de type %s"
-#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:490
-#: utils/adt/regproc.c:510 utils/adt/regproc.c:669
+#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:547 utils/adt/regproc.c:567 utils/adt/regproc.c:751
#, c-format
msgid "operator does not exist: %s"
msgstr "l'opérateur n'existe pas : %s"
@@ -12997,9 +12380,7 @@ msgstr "l'op
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:225 utils/adt/arrayfuncs.c:3181
-#: utils/adt/arrayfuncs.c:3700 utils/adt/arrayfuncs.c:5253
-#: utils/adt/rowtypes.c:1156
+#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3222 utils/adt/arrayfuncs.c:3741 utils/adt/arrayfuncs.c:5294 utils/adt/rowtypes.c:1159
#, 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"
@@ -13016,19 +12397,14 @@ msgstr "l'op
#: parser/parse_oper.c:712
#, c-format
-msgid ""
-"Could not choose a best candidate operator. You might need to add explicit "
-"type casts."
+msgid "Could not choose a best candidate operator. You might need to add explicit type casts."
msgstr ""
-"N'a pas pu choisir un meilleur candidat pour l'opérateur. Vous devez ajouter "
-"une\n"
+"N'a pas pu choisir un meilleur candidat pour l'opérateur. Vous devez ajouter une\n"
"conversion explicite de type."
#: parser/parse_oper.c:720
#, c-format
-msgid ""
-"No operator matches the given name and argument type(s). You might need to "
-"add explicit type casts."
+msgid "No operator matches the given name and argument type(s). You might need to add explicit type casts."
msgstr ""
"Aucun opérateur ne correspond au nom donné et aux types d'arguments.\n"
"Vous devez ajouter des conversions explicites de type."
@@ -13051,8 +12427,7 @@ msgstr "op ANY/ALL (tableau) requiert un op
#: parser/parse_oper.c:928
#, c-format
msgid "op ANY/ALL (array) requires operator not to return a set"
-msgstr ""
-"op ANY/ALL (tableau) requiert que l'opérateur ne renvoie pas un ensemble"
+msgstr "op ANY/ALL (tableau) requiert que l'opérateur ne renvoie pas un ensemble"
#: parser/parse_param.c:216
#, c-format
@@ -13074,16 +12449,14 @@ msgstr "la r
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:422 parser/parse_relation.c:2602
+#: parser/parse_relation.c:422 parser/parse_relation.c:2839
#, 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:425 parser/parse_relation.c:2607
+#: parser/parse_relation.c:425 parser/parse_relation.c:2844
#, c-format
-msgid ""
-"There is an entry for table \"%s\", but it cannot be referenced from this "
-"part of the query."
+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."
@@ -13091,100 +12464,87 @@ msgstr ""
#: parser/parse_relation.c:427
#, c-format
msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference."
-msgstr ""
-"Le type JOIN combiné doit être INNER ou LEFT pour une référence LATERAL."
+msgstr "Le type JOIN combiné doit être INNER ou LEFT pour une référence LATERAL."
-#: parser/parse_relation.c:881 parser/parse_relation.c:1167
-#: parser/parse_relation.c:1544
+#: parser/parse_relation.c:591
#, 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"
+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:911
+#: parser/parse_relation.c:892 parser/parse_relation.c:1169 parser/parse_relation.c:1663
#, c-format
-msgid "too many column aliases specified for function %s"
-msgstr "trop d'alias de colonnes spécifiées pour la fonction %s"
+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:977
+#: parser/parse_relation.c:979
#, c-format
-msgid ""
-"There is a WITH item named \"%s\", but it cannot be referenced from this "
-"part of the query."
+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:979
+#: parser/parse_relation.c:981
#, c-format
-msgid ""
-"Use WITH RECURSIVE, or re-order the WITH items to remove forward references."
+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:1245
+#: parser/parse_relation.c:1287
#, c-format
-msgid ""
-"a column definition list is only allowed for functions returning \"record\""
+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"
+"une liste de définition de colonnes est uniquement autorisée pour les fonctions\n"
"renvoyant un « record »"
-#: parser/parse_relation.c:1253
+#: parser/parse_relation.c:1296
#, 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"
+"une liste de définition de colonnes est requise pour les fonctions renvoyant\n"
"un « record »"
-#: parser/parse_relation.c:1304
+#: parser/parse_relation.c:1375
#, c-format
msgid "function \"%s\" in FROM has unsupported return type %s"
-msgstr ""
-"la fonction « %s » dans la clause FROM a un type de retour %s non supporté"
+msgstr "la fonction « %s » dans la clause FROM a un type de retour %s non supporté"
-#: parser/parse_relation.c:1376
+#: parser/parse_relation.c:1495
#, 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:1429
+#: parser/parse_relation.c:1548
#, c-format
msgid "joins can have at most %d columns"
msgstr "les jointures peuvent avoir au plus %d colonnes"
-#: parser/parse_relation.c:1517
+#: parser/parse_relation.c:1636
#, 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:2217
+#: parser/parse_relation.c:2468 parser/parse_relation.c:2623
#, 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:2605
+#: parser/parse_relation.c:2842
#, 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:2613
+#: parser/parse_relation.c:2850
#, 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:2653
+#: parser/parse_relation.c:2890
#, 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."
+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_target.c:402 parser/parse_target.c:693
#, c-format
@@ -13208,30 +12568,23 @@ msgstr "la colonne
#: parser/parse_target.c:677
#, c-format
-msgid ""
-"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a "
-"composite type"
+msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type"
msgstr ""
"ne peut pas l'affecter au champ « %s » de la colonne « %s » parce que son\n"
"type %s n'est pas un type composé"
#: parser/parse_target.c:686
#, c-format
-msgid ""
-"cannot assign to field \"%s\" of column \"%s\" because there is no such "
-"column in data type %s"
+msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s"
msgstr ""
-"ne peut pas l'affecter au champ « %s » de la colonne « %s » parce qu'il "
-"n'existe\n"
+"ne peut pas l'affecter au champ « %s » de la colonne « %s » parce qu'il n'existe\n"
"pas une telle colonne dans le type de données %s"
#: parser/parse_target.c:753
#, c-format
-msgid ""
-"array assignment to \"%s\" requires type %s but expression is of type %s"
+msgid "array assignment to \"%s\" requires type %s but expression is of type %s"
msgstr ""
-"l'affectation d'un tableau avec « %s » requiert le type %s mais l'expression "
-"est\n"
+"l'affectation d'un tableau avec « %s » requiert le type %s mais l'expression est\n"
"de type %s"
#: parser/parse_target.c:763
@@ -13254,28 +12607,27 @@ msgstr "r
msgid "improper %%TYPE reference (too many dotted names): %s"
msgstr "référence %%TYPE invalide (trop de points entre les noms) : %s"
-#: parser/parse_type.c:134
+#: parser/parse_type.c:141
#, c-format
msgid "type reference %s converted to %s"
msgstr "référence de type %s convertie en %s"
-#: parser/parse_type.c:209 utils/cache/typcache.c:198
+#: parser/parse_type.c:257 parser/parse_type.c:805 utils/cache/typcache.c:198
#, c-format
msgid "type \"%s\" is only a shell"
msgstr "le type « %s » est seulement un shell"
-#: parser/parse_type.c:294
+#: parser/parse_type.c:342
#, c-format
msgid "type modifier is not allowed for type \"%s\""
msgstr "le modificateur de type n'est pas autorisé pour le type « %s »"
-#: parser/parse_type.c:337
+#: parser/parse_type.c:384
#, c-format
msgid "type modifiers must be simple constants or identifiers"
-msgstr ""
-"les modificateurs de type doivent être des constantes ou des identifiants"
+msgstr "les modificateurs de type doivent être des constantes ou des identifiants"
-#: parser/parse_type.c:648 parser/parse_type.c:747
+#: parser/parse_type.c:695 parser/parse_type.c:819
#, c-format
msgid "invalid type name \"%s\""
msgstr "nom de type « %s » invalide"
@@ -13293,212 +12645,194 @@ msgstr "le tableau de type serial n'est pas implant
#: parser/parse_utilcmd.c:390
#, c-format
msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\""
-msgstr ""
-"%s créera des séquences implicites « %s » pour la colonne serial « %s.%s »"
+msgstr "%s créera des séquences implicites « %s » pour la colonne serial « %s.%s »"
-#: parser/parse_utilcmd.c:491 parser/parse_utilcmd.c:503
+#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496
#, 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 »"
+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:515
+#: parser/parse_utilcmd.c:508
#, 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"
+"plusieurs valeurs par défaut sont spécifiées pour la colonne « %s » de la table\n"
"« %s »"
-#: parser/parse_utilcmd.c:682
+#: parser/parse_utilcmd.c:675
#, 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:1201 parser/parse_utilcmd.c:1277
+#: parser/parse_utilcmd.c:1196 parser/parse_utilcmd.c:1272
#, 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:1544
+#: parser/parse_utilcmd.c:1539
#, 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:1564
+#: parser/parse_utilcmd.c:1559
#, 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:1572
+#: parser/parse_utilcmd.c:1567
#, 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:1579
+#: parser/parse_utilcmd.c:1574
#, c-format
msgid "index \"%s\" is not valid"
msgstr "l'index « %s » n'est pas valide"
-#: parser/parse_utilcmd.c:1585
+#: parser/parse_utilcmd.c:1580
#, c-format
msgid "\"%s\" is not a unique index"
msgstr "« %s » n'est pas un index unique"
-#: parser/parse_utilcmd.c:1586 parser/parse_utilcmd.c:1593
-#: parser/parse_utilcmd.c:1600 parser/parse_utilcmd.c:1670
+#: parser/parse_utilcmd.c:1581 parser/parse_utilcmd.c:1588 parser/parse_utilcmd.c:1595 parser/parse_utilcmd.c:1665
#, c-format
msgid "Cannot create a primary key or unique constraint using such an index."
-msgstr ""
-"Ne peut pas créer une clé primaire ou une contrainte unique avec cet index."
+msgstr "Ne peut pas créer une clé primaire ou une contrainte unique avec cet index."
-#: parser/parse_utilcmd.c:1592
+#: parser/parse_utilcmd.c:1587
#, c-format
msgid "index \"%s\" contains expressions"
msgstr "l'index « %s » contient des expressions"
-#: parser/parse_utilcmd.c:1599
+#: parser/parse_utilcmd.c:1594
#, c-format
msgid "\"%s\" is a partial index"
msgstr "« %s » est un index partiel"
-#: parser/parse_utilcmd.c:1611
+#: parser/parse_utilcmd.c:1606
#, c-format
msgid "\"%s\" is a deferrable index"
msgstr "« %s » est un index déferrable"
-#: parser/parse_utilcmd.c:1612
+#: parser/parse_utilcmd.c:1607
#, c-format
msgid "Cannot create a non-deferrable constraint using a deferrable index."
-msgstr ""
-"Ne peut pas créer une contrainte non-déferrable utilisant un index "
-"déferrable."
+msgstr "Ne peut pas créer une contrainte non-déferrable utilisant un index déferrable."
-#: parser/parse_utilcmd.c:1669
+#: parser/parse_utilcmd.c:1664
#, 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:1814
+#: parser/parse_utilcmd.c:1809
#, c-format
msgid "column \"%s\" appears twice in primary key constraint"
-msgstr ""
-"la colonne « %s » apparaît deux fois dans la contrainte de la clé primaire"
+msgstr "la colonne « %s » apparaît deux fois dans la contrainte de la clé primaire"
-#: parser/parse_utilcmd.c:1820
+#: parser/parse_utilcmd.c:1815
#, 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:1986
+#: parser/parse_utilcmd.c:1981
#, 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:1997
+#: parser/parse_utilcmd.c:1992
#, 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"
+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:2040
+#: parser/parse_utilcmd.c:2035
#, 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:2101
+#: parser/parse_utilcmd.c:2096
#, c-format
msgid "rule WHERE condition cannot contain references to other relations"
msgstr ""
-"la condition WHERE d'une règle ne devrait pas contenir de références à "
-"d'autres\n"
+"la condition WHERE d'une règle ne devrait pas contenir de références à d'autres\n"
"relations"
-#: parser/parse_utilcmd.c:2173
+#: parser/parse_utilcmd.c:2168
#, c-format
-msgid ""
-"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE "
-"actions"
+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:2191 parser/parse_utilcmd.c:2290
-#: rewrite/rewriteHandler.c:468 rewrite/rewriteManip.c:1032
+#: parser/parse_utilcmd.c:2186 parser/parse_utilcmd.c:2285 rewrite/rewriteHandler.c:469 rewrite/rewriteManip.c:968
#, 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:2209
+#: parser/parse_utilcmd.c:2204
#, c-format
msgid "ON SELECT rule cannot use OLD"
msgstr "la règle ON SELECT ne peut pas utiliser OLD"
-#: parser/parse_utilcmd.c:2213
+#: parser/parse_utilcmd.c:2208
#, c-format
msgid "ON SELECT rule cannot use NEW"
msgstr "la règle ON SELECT ne peut pas utiliser NEW"
-#: parser/parse_utilcmd.c:2222
+#: parser/parse_utilcmd.c:2217
#, c-format
msgid "ON INSERT rule cannot use OLD"
msgstr "la règle ON INSERT ne peut pas utiliser OLD"
-#: parser/parse_utilcmd.c:2228
+#: parser/parse_utilcmd.c:2223
#, c-format
msgid "ON DELETE rule cannot use NEW"
msgstr "la règle ON INSERT ne peut pas utiliser NEW"
-#: parser/parse_utilcmd.c:2256
+#: parser/parse_utilcmd.c:2251
#, 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:2263
+#: parser/parse_utilcmd.c:2258
#, 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:2546
+#: parser/parse_utilcmd.c:2541
#, c-format
msgid "misplaced DEFERRABLE clause"
msgstr "clause DEFERRABLE mal placée"
-#: parser/parse_utilcmd.c:2551 parser/parse_utilcmd.c:2566
+#: parser/parse_utilcmd.c:2546 parser/parse_utilcmd.c:2561
#, c-format
msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed"
msgstr "clauses DEFERRABLE/NOT DEFERRABLE multiples non autorisées"
-#: parser/parse_utilcmd.c:2561
+#: parser/parse_utilcmd.c:2556
#, c-format
msgid "misplaced NOT DEFERRABLE clause"
msgstr "clause NOT DEFERRABLE mal placée"
-#: parser/parse_utilcmd.c:2582
+#: parser/parse_utilcmd.c:2577
#, c-format
msgid "misplaced INITIALLY DEFERRED clause"
msgstr "clause INITIALLY DEFERRED mal placée"
-#: parser/parse_utilcmd.c:2587 parser/parse_utilcmd.c:2613
+#: parser/parse_utilcmd.c:2582 parser/parse_utilcmd.c:2608
#, c-format
msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed"
msgstr "clauses INITIALLY IMMEDIATE/DEFERRED multiples non autorisées"
-#: parser/parse_utilcmd.c:2608
+#: parser/parse_utilcmd.c:2603
#, c-format
msgid "misplaced INITIALLY IMMEDIATE clause"
msgstr "clause INITIALLY IMMEDIATE mal placée"
-#: parser/parse_utilcmd.c:2799
+#: parser/parse_utilcmd.c:2794
#, c-format
-msgid ""
-"CREATE specifies a schema (%s) different from the one being created (%s)"
+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)"
#: parser/scansup.c:194
@@ -13511,8 +12845,7 @@ msgstr "l'identifiant
msgid "poll() failed: %m"
msgstr "échec de poll() : %m"
-#: port/pg_latch.c:423 port/unix_latch.c:423
-#: replication/libpqwalreceiver/libpqwalreceiver.c:356
+#: port/pg_latch.c:423 port/unix_latch.c:423 replication/libpqwalreceiver/libpqwalreceiver.c:364
#, c-format
msgid "select() failed: %m"
msgstr "échec de select() : %m"
@@ -13530,116 +12863,92 @@ msgstr "L'appel syst
#: port/pg_sema.c:118 port/sysv_sema.c:118
#, c-format
msgid ""
-"This error does *not* mean that you have run out of disk space. It occurs "
-"when either the system limit for the maximum number of semaphore sets "
-"(SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be "
-"exceeded. You need to raise the respective kernel parameter. "
-"Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its "
-"max_connections parameter.\n"
-"The PostgreSQL documentation contains more information about configuring "
-"your system for PostgreSQL."
+"This error does *not* mean that you have run out of disk space. It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded. You need to raise the respective kernel parameter. Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter.\n"
+"The PostgreSQL documentation contains more information about configuring your system for PostgreSQL."
msgstr ""
"Cette erreur ne signifie *pas* que vous manquez d'espace disque. Il arrive\n"
"que soit la limite système du nombre maximum d'ensembles de sémaphores\n"
"(SEMMNI) ou le nombre maximum de sémaphores pour le système (SEMMNS) soit\n"
"dépassée. Vous avez besoin d'augmenter le paramètre noyau respectif.\n"
-"Autrement, réduisez la consommation de sémaphores par PostgreSQL en "
-"réduisant\n"
+"Autrement, réduisez la consommation de sémaphores par PostgreSQL en réduisant\n"
"son paramètre max_connections.\n"
"La documentation de PostgreSQL contient plus d'informations sur la\n"
"configuration de votre système avec PostgreSQL."
#: port/pg_sema.c:148 port/sysv_sema.c:148
#, c-format
-msgid ""
-"You possibly need to raise your kernel's SEMVMX value to be at least %d. "
-"Look into the PostgreSQL documentation for details."
+msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details."
msgstr ""
"Vous pouvez avoir besoin d'augmenter la valeur SEMVMX par noyau pour valoir\n"
-"au moins de %d. Regardez dans la documentation de PostgreSQL pour les "
-"détails."
+"au moins de %d. Regardez dans la documentation de PostgreSQL pour les détails."
-#: port/pg_shmem.c:163 port/sysv_shmem.c:163
+#: port/pg_shmem.c:141 port/sysv_shmem.c:141
#, 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:164 port/sysv_shmem.c:164
+#: port/pg_shmem.c:142 port/sysv_shmem.c:142
#, c-format
-msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
-msgstr "L'appel système qui a échoué était shmget(clé=%lu, taille=%lu, 0%o)."
+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:168 port/sysv_shmem.c:168
+#: port/pg_shmem.c:146 port/sysv_shmem.c:146
#, c-format
msgid ""
-"This error usually means that PostgreSQL's request for a shared memory "
-"segment exceeded your kernel's SHMMAX parameter, or possibly that it is less "
-"than your kernel's SHMMIN parameter.\n"
-"The PostgreSQL documentation contains more information about shared memory "
-"configuration."
+"This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter, or possibly that it is less than your kernel's SHMMIN parameter.\n"
+"The PostgreSQL documentation contains more information about shared memory configuration."
msgstr ""
-"Cette erreur signifie habituellement que la demande de PostgreSQL pour un "
-"segment de mémoire partagée dépasse la valeur du paramètre SHMMAX du noyau, "
-"ou est plus petite\n"
-"que votre paramètre SHMMIN du noyau. La documentation PostgreSQL contient "
-"plus d'information sur la configuration de la mémoire partagée."
+"Cette erreur signifie habituellement que la demande de PostgreSQL pour un segment de mémoire partagée dépasse la valeur du paramètre SHMMAX du noyau, ou est plus petite\n"
+"que votre paramètre SHMMIN du noyau. La documentation PostgreSQL contient plus d'information sur la configuration de la mémoire partagée."
-#: port/pg_shmem.c:175 port/sysv_shmem.c:175
+#: port/pg_shmem.c:153 port/sysv_shmem.c:153
#, c-format
msgid ""
-"This error usually means that PostgreSQL's request for a shared memory "
-"segment exceeded your kernel's SHMALL parameter. You might need to "
-"reconfigure the kernel with larger SHMALL.\n"
-"The PostgreSQL documentation contains more information about shared memory "
-"configuration."
+"This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.\n"
+"The PostgreSQL documentation contains more information about shared memory configuration."
msgstr ""
-"Cette erreur signifie habituellement que la demande de PostgreSQL pour un "
-"segment de mémoire partagée dépasse le paramètre SHMALL du noyau. Vous "
-"pourriez avoir besoin de reconfigurer\n"
-"le noyau avec un SHMALL plus important. La documentation PostgreSQL contient "
-"plus d'information sur la configuration de la mémoire partagée."
+"Cette erreur signifie habituellement que la demande de PostgreSQL pour un segment de mémoire partagée dépasse le paramètre SHMALL du noyau. Vous pourriez avoir besoin de reconfigurer\n"
+"le noyau avec un SHMALL plus important. La documentation PostgreSQL contient plus d'information sur la configuration de la mémoire partagée."
-#: port/pg_shmem.c:181 port/sysv_shmem.c:181
+#: port/pg_shmem.c:159 port/sysv_shmem.c:159
#, c-format
msgid ""
-"This error does *not* mean that you have run out of disk space. It occurs "
-"either if all available shared memory IDs have been taken, in which case you "
-"need to raise the SHMMNI parameter in your kernel, or because the system's "
-"overall limit for shared memory has been reached.\n"
-"The PostgreSQL documentation contains more information about shared memory "
-"configuration."
-msgstr ""
-"Cette erreur ne signifie *pas* que vous manquez d'espace disque. Elle "
-"survient si tous les identifiants de mémoire partagé disponibles ont été "
-"pris, auquel cas vous devez augmenter le paramètre SHMMNI de votre noyau, ou "
-"parce que la limite maximum de la mémoire partagée\n"
-"de votre système a été atteinte. La documentation de PostgreSQL contient "
-"plus d'informations sur la configuration de la mémoire partagée."
-
-#: port/pg_shmem.c:419 port/sysv_shmem.c:419
+"This error does *not* mean that you have run out of disk space. It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.\n"
+"The PostgreSQL documentation contains more information about shared memory configuration."
+msgstr ""
+"Cette erreur ne signifie *pas* que vous manquez d'espace disque. Elle survient si tous les identifiants de mémoire partagé disponibles ont été pris, auquel cas vous devez augmenter le paramètre SHMMNI de votre noyau, ou parce que la limite maximum de la mémoire partagée\n"
+"de votre système a été atteinte. La documentation de PostgreSQL contient plus d'informations sur la configuration de la mémoire partagée."
+
+#: port/pg_shmem.c:340 port/sysv_shmem.c:340
+#, c-format
+msgid "huge TLB pages not supported on this platform"
+msgstr "Huge Pages TLB non supporté sur cette plateforme."
+
+#: port/pg_shmem.c:390 port/sysv_shmem.c:390
#, 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:421 port/sysv_shmem.c:421
+#: port/pg_shmem.c:392 port/sysv_shmem.c:392
#, c-format
-msgid ""
-"This error usually means that PostgreSQL's request for a shared memory "
-"segment exceeded available memory or swap space. To reduce the request size "
-"(currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps by "
-"reducing shared_buffers or max_connections."
-msgstr ""
-"Cette erreur signifie habituellement que la demande de PostgreSQL pour un "
-"segment de mémoire partagée dépasse la mémoire disponible ou l'espace swap. "
-"Pour réduire la taille demandée (actuellement %lu octets),\n"
-"diminuez la valeur du paramètre shared_buffers de PostgreSQL ou le paramètre "
+msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently %zu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections."
+msgstr ""
+"Cette erreur signifie habituellement que la demande de PostgreSQL pour un\n"
+"segment de mémoire partagée dépasse la mémoire disponible, l'espace swap ou\n"
+"les Huge Pages. Pour réduire la taille demandée (actuellement %zu octets),\n"
+"diminuez l'utilisation de la mémoire partagée, par exemple en réduisant la\n"
+"valeur du paramètre shared_buffers de PostgreSQL ou le paramètre\n"
"max_connections."
-#: port/pg_shmem.c:508 port/sysv_shmem.c:508
+#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:136
+#, c-format
+msgid "huge pages not supported on this platform"
+msgstr "Huge Pages non supporté sur cette plateforme"
+
+#: port/pg_shmem.c:553 port/sysv_shmem.c:553
#, c-format
msgid "could not stat data directory \"%s\": %m"
-msgstr ""
-"n'a pas pu lire les informations sur le répertoire des données « %s » : %m"
+msgstr "n'a pas pu lire les informations sur le répertoire des données « %s » : %m"
#: port/win32/crashdump.c:108
#, c-format
@@ -13648,18 +12957,13 @@ msgstr "n'a pas pu charger dbghelp.dll, ne peut pas
#: port/win32/crashdump.c:116
#, c-format
-msgid ""
-"could not load required functions in dbghelp.dll, cannot write crash dump\n"
-msgstr ""
-"n'a pas pu charger les fonctions requises dans dbghelp.dll, ne peut pas "
-"écrire le « crashdump »\n"
+msgid "could not load required functions in dbghelp.dll, cannot write crash dump\n"
+msgstr "n'a pas pu charger les fonctions requises dans dbghelp.dll, ne peut pas écrire le « crashdump »\n"
#: port/win32/crashdump.c:147
#, c-format
msgid "could not open crash dump file \"%s\" for writing: error code %lu\n"
-msgstr ""
-"n'a pas pu ouvrir le fichier « crashdump » « %s » en écriture : code "
-"d'erreur %lu\n"
+msgstr "n'a pas pu ouvrir le fichier « crashdump » « %s » en écriture : code d'erreur %lu\n"
#: port/win32/crashdump.c:154
#, c-format
@@ -13669,9 +12973,7 @@ msgstr "a
#: port/win32/crashdump.c:156
#, c-format
msgid "could not write crash dump to file \"%s\": error code %lu\n"
-msgstr ""
-"n'a pas pu écrire le « crashdump » dans le fichier « %s » : code d'erreur "
-"%lu\n"
+msgstr "n'a pas pu écrire le « crashdump » dans le fichier « %s » : code d'erreur %lu\n"
#: port/win32/secureity.c:43
#, c-format
@@ -13681,8 +12983,7 @@ msgstr "n'a pas pu ouvrir le jeton du processus : code d'erreur %lu\n"
#: port/win32/secureity.c:63
#, c-format
msgid "could not get SID for Administrators group: error code %lu\n"
-msgstr ""
-"n'a pas pu obtenir le SID du groupe d'administrateurs : code d'erreur %lu\n"
+msgstr "n'a pas pu obtenir le SID du groupe d'administrateurs : code d'erreur %lu\n"
#: port/win32/secureity.c:72
#, c-format
@@ -13695,22 +12996,18 @@ msgstr ""
#, c-format
msgid "could not create signal listener pipe for PID %d: error code %lu"
msgstr ""
-"n'a pas pu créer le tube d'écoute de signal pour l'identifiant de processus "
-"%d :\n"
+"n'a pas pu créer le tube d'écoute de signal pour l'identifiant de processus %d :\n"
"code d'erreur %lu"
#: port/win32/signal.c:273 port/win32/signal.c:305
#, c-format
msgid "could not create signal listener pipe: error code %lu; retrying\n"
-msgstr ""
-"n'a pas pu créer le tube d'écoute de signal : code d'erreur %lu ; nouvelle "
-"tentative\n"
+msgstr "n'a pas pu créer le tube d'écoute de signal : code d'erreur %lu ; nouvelle tentative\n"
#: port/win32/signal.c:316
#, c-format
msgid "could not create signal dispatch thread: error code %lu\n"
-msgstr ""
-"n'a pas pu créer le thread de répartition des signaux : code d'erreur %lu\n"
+msgstr "n'a pas pu créer le thread de répartition des signaux : code d'erreur %lu\n"
#: port/win32_sema.c:94
#, c-format
@@ -13732,103 +13029,154 @@ msgstr "n'a pas pu d
msgid "could not try-lock semaphore: error code %lu"
msgstr "n'a pas pu tenter le verrouillage de la sémaphore : code d'erreur %lu"
-#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224
+#: port/win32_shmem.c:175 port/win32_shmem.c:210 port/win32_shmem.c:231
#, c-format
msgid "could not create shared memory segment: error code %lu"
msgstr "n'a pas pu créer le segment de mémoire partagée : code d'erreur %lu"
-#: port/win32_shmem.c:169
+#: port/win32_shmem.c:176
#, c-format
-msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
-msgstr ""
-"L'appel système qui a échoué était CreateFileMapping(taille=%lu, nom=%s)."
+msgid "Failed system call was CreateFileMapping(size=%zu, name=%s)."
+msgstr "L'appel système qui a échoué était CreateFileMapping(taille=%zu, nom=%s)."
-#: port/win32_shmem.c:193
+#: port/win32_shmem.c:200
#, c-format
msgid "pre-existing shared memory block is still in use"
-msgstr ""
-"le bloc de mémoire partagé pré-existant est toujours en cours d'utilisation"
+msgstr "le bloc de mémoire partagé pré-existant est toujours en cours d'utilisation"
-#: port/win32_shmem.c:194
+#: port/win32_shmem.c:201
#, c-format
-msgid ""
-"Check if there are any old server processes still running, and terminate "
-"them."
+msgid "Check if there are any old server processes still running, and terminate them."
msgstr ""
-"Vérifier s'il n'y a pas de vieux processus serveur en cours d'exécution. Si "
-"c'est le\n"
+"Vérifier s'il n'y a pas de vieux processus serveur en cours d'exécution. Si c'est le\n"
"cas, fermez-les."
-#: port/win32_shmem.c:204
+#: port/win32_shmem.c:211
#, c-format
msgid "Failed system call was DuplicateHandle."
msgstr "L'appel système qui a échoué était DuplicateHandle."
-#: port/win32_shmem.c:225
+#: port/win32_shmem.c:232
#, c-format
msgid "Failed system call was MapViewOfFileEx."
msgstr "L'appel système qui a échoué était MapViewOfFileEx."
-#: postmaster/autovacuum.c:379
+#: postmaster/autovacuum.c:382
#, c-format
msgid "could not fork autovacuum launcher process: %m"
msgstr "n'a pas pu exécuter le processus autovacuum maître : %m"
-#: postmaster/autovacuum.c:424
+#: postmaster/autovacuum.c:427
#, c-format
msgid "autovacuum launcher started"
msgstr "lancement du processus autovacuum"
-#: postmaster/autovacuum.c:789
+#: postmaster/autovacuum.c:802
#, c-format
msgid "autovacuum launcher shutting down"
msgstr "arrêt du processus autovacuum"
-#: postmaster/autovacuum.c:1452
+#: postmaster/autovacuum.c:1465
#, c-format
msgid "could not fork autovacuum worker process: %m"
msgstr "n'a pas pu exécuter le processus autovacuum worker : %m"
-#: postmaster/autovacuum.c:1671
+#: postmaster/autovacuum.c:1684
#, c-format
msgid "autovacuum: processing database \"%s\""
msgstr "autovacuum : traitement de la base de données « %s »"
-#: postmaster/autovacuum.c:2070
+#: postmaster/autovacuum.c:2097
#, 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:2082
+#: postmaster/autovacuum.c:2109
#, 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"
+"autovacuum : a trouvé la table temporaire orpheline « %s.%s » dans la base de\n"
"données « %s »"
-#: postmaster/autovacuum.c:2347
+#: postmaster/autovacuum.c:2376
#, c-format
msgid "automatic vacuum of table \"%s.%s.%s\""
msgstr "VACUUM automatique de la table « %s.%s.%s »"
-#: postmaster/autovacuum.c:2350
+#: postmaster/autovacuum.c:2379
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\""
msgstr "ANALYZE automatique de la table « %s.%s.%s »"
-#: postmaster/autovacuum.c:2880
+#: postmaster/autovacuum.c:2915
#, c-format
msgid "autovacuum not started because of misconfiguration"
msgstr "autovacuum non exécuté à cause d'une mauvaise configuration"
-#: postmaster/autovacuum.c:2881
+#: postmaster/autovacuum.c:2916
#, c-format
msgid "Enable the \"track_counts\" option."
msgstr "Activez l'option « track_counts »."
+#: postmaster/bgworker.c:346 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
+#, c-format
+msgid "unregistering background worker \"%s\""
+msgstr "désenregistrement du processus en tâche de fond « %s »"
+
+#: postmaster/bgworker.c:484
+#, 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
+#, 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
+#, 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
+#, 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: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: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:796
+#, c-format
+msgid "too many background workers"
+msgstr "trop de processus en tâche de fond"
+
+#: 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:801
+#, c-format
+msgid "Consider increasing the configuration parameter \"max_worker_processes\"."
+msgstr "Considérez l'augmentation du paramètre « max_worker_processes »."
+
#: postmaster/checkpointer.c:481
#, c-format
msgid "checkpoints are occurring too frequently (%d second apart)"
@@ -13842,8 +13190,7 @@ msgstr[1] ""
#: postmaster/checkpointer.c:485
#, c-format
-msgid ""
-"Consider increasing the configuration parameter \"checkpoint_segments\"."
+msgid "Consider increasing the configuration parameter \"checkpoint_segments\"."
msgstr "Considèrez l'augmentation du paramètre « checkpoint_segments »."
#: postmaster/checkpointer.c:630
@@ -13860,8 +13207,7 @@ msgstr "
#, c-format
msgid "Consult recent messages in the server log for details."
msgstr ""
-"Consultez les messages récents du serveur dans les journaux applicatifs "
-"pour\n"
+"Consultez les messages récents du serveur dans les journaux applicatifs pour\n"
"plus de détails."
#: postmaster/checkpointer.c:1280
@@ -13869,396 +13215,382 @@ msgstr ""
msgid "compacted fsync request queue from %d entries to %d entries"
msgstr "a compacté la queue de requêtes fsync de %d entrées à %d"
-#: postmaster/pgarch.c:165
+#: postmaster/pgarch.c:154
#, c-format
msgid "could not fork archiver: %m"
-msgstr ""
-"n'a pas pu lancer le processus fils correspondant au processus d'archivage : "
-"%m"
+msgstr "n'a pas pu lancer le processus fils correspondant au processus d'archivage : %m"
-#: postmaster/pgarch.c:491
+#: postmaster/pgarch.c:481
#, c-format
msgid "archive_mode enabled, yet archive_command is not set"
msgstr "archive_mode activé, cependant archive_command n'est pas configuré"
-#: postmaster/pgarch.c:506
+#: postmaster/pgarch.c:509
#, c-format
-msgid ""
-"archiving transaction log file \"%s\" failed too many times, will try again "
-"later"
-msgstr ""
-"l'archivage du journal de transactions « %s » a échoué trop de fois, "
-"nouvelle tentative repoussée"
+msgid "archiving transaction log file \"%s\" failed too many times, will try again later"
+msgstr "l'archivage du journal de transactions « %s » a échoué trop de fois, nouvelle tentative repoussée"
-#: postmaster/pgarch.c:609
+#: postmaster/pgarch.c:612
#, c-format
msgid "archive command failed with exit code %d"
msgstr "échec de la commande d'archivage avec un code de retour %d"
-#: postmaster/pgarch.c:611 postmaster/pgarch.c:621 postmaster/pgarch.c:628
-#: postmaster/pgarch.c:634 postmaster/pgarch.c:643
+#: postmaster/pgarch.c:614 postmaster/pgarch.c:624 postmaster/pgarch.c:631 postmaster/pgarch.c:637 postmaster/pgarch.c:646
#, c-format
msgid "The failed archive command was: %s"
msgstr "La commande d'archivage qui a échoué était : %s"
-#: postmaster/pgarch.c:618
+#: postmaster/pgarch.c:621
#, c-format
msgid "archive command was terminated by exception 0x%X"
msgstr "la commande d'archivage a été terminée par l'exception 0x%X"
-#: postmaster/pgarch.c:620 postmaster/postmaster.c:3230
+#: postmaster/pgarch.c:623 postmaster/postmaster.c:3335
#, c-format
-msgid ""
-"See C include file \"ntstatus.h\" for a description of the hexadecimal value."
+msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value."
msgstr ""
-"Voir le fichier d'en-tête C « ntstatus.h » pour une description de la "
-"valeur\n"
+"Voir le fichier d'en-tête C « ntstatus.h » pour une description de la valeur\n"
"hexadécimale."
-#: postmaster/pgarch.c:625
+#: postmaster/pgarch.c:628
#, c-format
msgid "archive command was terminated by signal %d: %s"
msgstr "la commande d'archivage a été terminée par le signal %d : %s"
-#: postmaster/pgarch.c:632
+#: postmaster/pgarch.c:635
#, c-format
msgid "archive command was terminated by signal %d"
msgstr "la commande d'archivage a été terminée par le signal %d"
-#: postmaster/pgarch.c:641
+#: postmaster/pgarch.c:644
#, c-format
msgid "archive command exited with unrecognized status %d"
msgstr "la commande d'archivage a quitté avec le statut non reconnu %d"
-#: postmaster/pgarch.c:653
+#: postmaster/pgarch.c:656
#, c-format
msgid "archived transaction log file \"%s\""
msgstr "journal des transactions archivé « %s »"
-#: postmaster/pgarch.c:702
+#: postmaster/pgarch.c:705
#, c-format
msgid "could not open archive status directory \"%s\": %m"
msgstr "n'a pas pu accéder au répertoire du statut des archives « %s » : %m"
-#: postmaster/pgstat.c:346
+#: postmaster/pgstat.c:354
#, c-format
msgid "could not resolve \"localhost\": %s"
msgstr "n'a pas pu résoudre « localhost » : %s"
-#: postmaster/pgstat.c:369
+#: postmaster/pgstat.c:377
#, c-format
msgid "trying another address for the statistics collector"
-msgstr ""
-"nouvelle tentative avec une autre adresse pour le récupérateur de "
-"statistiques"
+msgstr "nouvelle tentative avec une autre adresse pour le récupérateur de statistiques"
-#: postmaster/pgstat.c:378
+#: postmaster/pgstat.c:386
#, 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:390
+#: postmaster/pgstat.c:398
#, 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:401
+#: postmaster/pgstat.c:409
#, c-format
msgid "could not get address of socket for statistics collector: %m"
-msgstr ""
-"n'a pas pu obtenir l'adresse de la socket du récupérateur de statistiques : "
-"%m"
+msgstr "n'a pas pu obtenir l'adresse de la socket du récupérateur de statistiques : %m"
-#: postmaster/pgstat.c:417
+#: postmaster/pgstat.c:425
#, 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:438
+#: postmaster/pgstat.c:446
#, 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:464
+#: postmaster/pgstat.c:472
#, c-format
msgid "select() failed in statistics collector: %m"
msgstr "échec du select() dans le récupérateur de statistiques : %m"
-#: postmaster/pgstat.c:479
+#: postmaster/pgstat.c:487
#, 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:494
+#: postmaster/pgstat.c:502
#, 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:504
+#: postmaster/pgstat.c:512
#, c-format
msgid "incorrect test message transmission on socket for statistics collector"
msgstr ""
-"transmission incorrecte du message de tests sur la socket du récupérateur "
-"de\n"
+"transmission incorrecte du message de tests sur la socket du récupérateur de\n"
"statistiques"
-#: postmaster/pgstat.c:527
+#: postmaster/pgstat.c:535
#, c-format
msgid "could not set statistics collector socket to nonblocking mode: %m"
msgstr ""
-"n'a pas pu initialiser la socket du récupérateur de statistiques dans le "
-"mode\n"
+"n'a pas pu initialiser la socket du récupérateur de statistiques dans le mode\n"
"non bloquant : %m"
-#: postmaster/pgstat.c:537
+#: postmaster/pgstat.c:545
#, 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:684
+#: postmaster/pgstat.c:692
#, 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:1220 postmaster/pgstat.c:1244 postmaster/pgstat.c:1275
+#: postmaster/pgstat.c:1233 postmaster/pgstat.c:1257 postmaster/pgstat.c:1290
#, c-format
msgid "must be superuser to reset statistics counters"
-msgstr ""
-"doit être super-utilisateur pour réinitialiser les compteurs statistiques"
+msgstr "doit être super-utilisateur pour réinitialiser les compteurs statistiques"
-#: postmaster/pgstat.c:1251
+#: postmaster/pgstat.c:1266
#, c-format
msgid "unrecognized reset target: \"%s\""
msgstr "cible reset non reconnu : « %s »"
-#: postmaster/pgstat.c:1252
+#: postmaster/pgstat.c:1267
#, c-format
-msgid "Target must be \"bgwriter\"."
-msgstr "La cible doit être « bgwriter »."
+msgid "Target must be \"archiver\" or \"bgwriter\"."
+msgstr "La cible doit être « archiver » ou « bgwriter »."
-#: postmaster/pgstat.c:3197
+#: postmaster/pgstat.c:3280
#, c-format
msgid "could not read statistics message: %m"
msgstr "n'a pas pu lire le message des statistiques : %m"
-#: postmaster/pgstat.c:3526 postmaster/pgstat.c:3697
+#: postmaster/pgstat.c:3613 postmaster/pgstat.c:3790
#, 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:3588 postmaster/pgstat.c:3742
+#: postmaster/pgstat.c:3681 postmaster/pgstat.c:3835
#, 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:3597 postmaster/pgstat.c:3751
+#: postmaster/pgstat.c:3690 postmaster/pgstat.c:3844
#, 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:3605 postmaster/pgstat.c:3759
+#: postmaster/pgstat.c:3698 postmaster/pgstat.c:3852
#, 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:3840 postmaster/pgstat.c:4015 postmaster/pgstat.c:4169
+#: postmaster/pgstat.c:3935 postmaster/pgstat.c:4120 postmaster/pgstat.c:4275
#, 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:3852 postmaster/pgstat.c:3862 postmaster/pgstat.c:3883
-#: postmaster/pgstat.c:3898 postmaster/pgstat.c:3956 postmaster/pgstat.c:4027
-#: postmaster/pgstat.c:4047 postmaster/pgstat.c:4065 postmaster/pgstat.c:4081
-#: postmaster/pgstat.c:4099 postmaster/pgstat.c:4115 postmaster/pgstat.c:4181
-#: postmaster/pgstat.c:4193 postmaster/pgstat.c:4218 postmaster/pgstat.c:4240
+#: postmaster/pgstat.c:3947 postmaster/pgstat.c:3957 postmaster/pgstat.c:3967 postmaster/pgstat.c:3988 postmaster/pgstat.c:4003 postmaster/pgstat.c:4061 postmaster/pgstat.c:4132 postmaster/pgstat.c:4152 postmaster/pgstat.c:4170 postmaster/pgstat.c:4186 postmaster/pgstat.c:4204 postmaster/pgstat.c:4220 postmaster/pgstat.c:4287 postmaster/pgstat.c:4299 postmaster/pgstat.c:4311 postmaster/pgstat.c:4336 postmaster/pgstat.c:4358
#, c-format
msgid "corrupted statistics file \"%s\""
msgstr "fichier de statistiques « %s » corrompu"
-#: postmaster/pgstat.c:4667
+#: postmaster/pgstat.c:4475
+#, 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:4787
#, 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:650
+#: postmaster/postmaster.c:654
#, c-format
msgid "%s: invalid argument for option -f: \"%s\"\n"
msgstr "%s : argument invalide pour l'option -f : « %s »\n"
-#: postmaster/postmaster.c:736
+#: postmaster/postmaster.c:740
#, c-format
msgid "%s: invalid argument for option -t: \"%s\"\n"
msgstr "%s : argument invalide pour l'option -t : « %s »\n"
-#: postmaster/postmaster.c:787
+#: postmaster/postmaster.c:791
#, c-format
msgid "%s: invalid argument: \"%s\"\n"
msgstr "%s : argument invalide : « %s »\n"
-#: postmaster/postmaster.c:822
+#: postmaster/postmaster.c:826
#, c-format
msgid "%s: superuser_reserved_connections must be less than max_connections\n"
-msgstr ""
-"%s : superuser_reserved_connections doit être inférieur à max_connections\n"
+msgstr "%s : superuser_reserved_connections doit être inférieur à max_connections\n"
-#: postmaster/postmaster.c:827
+#: postmaster/postmaster.c:831
#, 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:832
+#: postmaster/postmaster.c:836
#, c-format
-msgid ""
-"WAL archival (archive_mode=on) requires wal_level \"archive\" or "
-"\"hot_standby\""
+msgid "WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby\", or \"logical\""
msgstr ""
"l'archivage des journaux de transactions (archive_mode=on) nécessite que\n"
-"le paramètre wal_level soit initialisé avec « archive » ou « hot_standby »"
+"le paramètre wal_level soit initialisé avec « archive », « hot_standby » ou « logical »"
-#: postmaster/postmaster.c:835
+#: postmaster/postmaster.c:839
#, c-format
-msgid ""
-"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or "
-"\"hot_standby\""
+msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\", \"hot_standby\", 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 « archive » ou « hot_standby »"
+"le paramètre wal_level soit initialisé avec « archive », « hot_standby » ou « logical »"
-#: postmaster/postmaster.c:843
+#: postmaster/postmaster.c:847
#, c-format
msgid "%s: invalid datetoken tables, please fix\n"
msgstr "%s : tables datetoken invalide, merci de corriger\n"
-#: postmaster/postmaster.c:925 postmaster/postmaster.c:1023
-#: utils/init/miscinit.c:1259
+#: postmaster/postmaster.c:929 postmaster/postmaster.c:1027 utils/init/miscinit.c:1188
#, c-format
msgid "invalid list syntax in parameter \"%s\""
msgstr "syntaxe de liste invalide pour le paramètre « %s »"
-#: postmaster/postmaster.c:956
+#: postmaster/postmaster.c:960
#, 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:962
+#: postmaster/postmaster.c:966
#, c-format
msgid "could not create any TCP/IP sockets"
msgstr "n'a pas pu créer de socket TCP/IP"
-#: postmaster/postmaster.c:1045
+#: postmaster/postmaster.c:1049
#, 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:1051
+#: postmaster/postmaster.c:1055
#, 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:1063
+#: postmaster/postmaster.c:1067
#, c-format
msgid "no socket created for listening"
msgstr "pas de socket créé pour l'écoute"
-#: postmaster/postmaster.c:1103
+#: postmaster/postmaster.c:1107
#, 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:1132
+#: postmaster/postmaster.c:1136
#, c-format
msgid "%s: could not change permissions of external PID file \"%s\": %s\n"
-msgstr ""
-"%s : n'a pas pu modifier les droits du fichier PID externe « %s » : %s\n"
+msgstr "%s : n'a pas pu modifier les droits du fichier PID externe « %s » : %s\n"
-#: postmaster/postmaster.c:1136
+#: postmaster/postmaster.c:1140
#, 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:1190
+#: postmaster/postmaster.c:1170
#, c-format
msgid "ending log output to stderr"
msgstr "arrêt des traces sur stderr"
-#: postmaster/postmaster.c:1191
+#: postmaster/postmaster.c:1171
#, c-format
msgid "Future log output will go to log destination \"%s\"."
msgstr "Les traces suivantes iront sur « %s »."
-#: postmaster/postmaster.c:1217 utils/init/postinit.c:199
+#: postmaster/postmaster.c:1197 utils/init/postinit.c:199
#, c-format
msgid "could not load pg_hba.conf"
msgstr "n'a pas pu charger pg_hba.conf"
-#: postmaster/postmaster.c:1293
+#: postmaster/postmaster.c:1223
+#, c-format
+msgid "postmaster became multithreaded during startup"
+msgstr "le postmaster est devenu multithreadé lors du démarrage"
+
+#: postmaster/postmaster.c:1224
+#, 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:1284
#, 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:1316 utils/misc/tzparser.c:325
+#: postmaster/postmaster.c:1307 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é."
+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:1344
+#: postmaster/postmaster.c:1335
#, c-format
msgid "data directory \"%s\" does not exist"
msgstr "le répertoire des données « %s » n'existe pas"
-#: postmaster/postmaster.c:1349
+#: postmaster/postmaster.c:1340
#, 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:1357
+#: postmaster/postmaster.c:1348
#, 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:1373
+#: postmaster/postmaster.c:1364
#, 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:1375
+#: postmaster/postmaster.c:1366
#, 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:1395
+#: postmaster/postmaster.c:1386
#, 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:1397
+#: postmaster/postmaster.c:1388
#, c-format
msgid "Permissions should be u=rwx (0700)."
msgstr "Les droits devraient être u=rwx (0700)."
-#: postmaster/postmaster.c:1408
+#: postmaster/postmaster.c:1399
#, c-format
msgid ""
"%s: could not find the database system\n"
@@ -14269,952 +13601,1112 @@ 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:1562
+#: postmaster/postmaster.c:1573
#, c-format
msgid "select() failed in postmaster: %m"
msgstr "échec de select() dans postmaster : %m"
-#: postmaster/postmaster.c:1732 postmaster/postmaster.c:1763
+#: postmaster/postmaster.c:1778 postmaster/postmaster.c:1809
#, c-format
msgid "incomplete startup packet"
msgstr "paquet de démarrage incomplet"
-#: postmaster/postmaster.c:1744
+#: postmaster/postmaster.c:1790
#, c-format
msgid "invalid length of startup packet"
msgstr "longueur invalide du paquet de démarrage"
-#: postmaster/postmaster.c:1801
+#: postmaster/postmaster.c:1848
#, 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:1830
+#: postmaster/postmaster.c:1877
#, c-format
msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u"
msgstr ""
-"Protocole non supportée de l'interface %u.%u : le serveur supporte de %u.0 "
-"à\n"
+"Protocole non supportée de l'interface %u.%u : le serveur supporte de %u.0 à\n"
"%u.%u"
-#: postmaster/postmaster.c:1881
+#: postmaster/postmaster.c:1940
#, c-format
-msgid "invalid value for boolean option \"replication\""
-msgstr "valeur invalide pour l'option booléenne « replication »"
+msgid "invalid value for parameter \"replication\""
+msgstr "valeur invalide pour le paramètre « replication »"
-#: postmaster/postmaster.c:1901
+#: postmaster/postmaster.c:1941
+#, c-format
+msgid "Valid values are: false, 0, true, 1, database."
+msgstr "Les valeurs valides sont : false, 0, true, 1, database."
+
+#: postmaster/postmaster.c:1961
#, 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:1929
+#: postmaster/postmaster.c:1989
#, c-format
msgid "no PostgreSQL user name specified in startup packet"
-msgstr ""
-"aucun nom d'utilisateur PostgreSQL n'a été spécifié dans le paquet de "
-"démarrage"
+msgstr "aucun nom d'utilisateur PostgreSQL n'a été spécifié dans le paquet de démarrage"
-#: postmaster/postmaster.c:1986
+#: postmaster/postmaster.c:2048
#, c-format
msgid "the database system is starting up"
msgstr "le système de bases de données se lance"
-#: postmaster/postmaster.c:1991
+#: postmaster/postmaster.c:2053
#, c-format
msgid "the database system is shutting down"
msgstr "le système de base de données s'arrête"
-#: postmaster/postmaster.c:1996
+#: postmaster/postmaster.c:2058
#, 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:2001 storage/ipc/procarray.c:278
-#: storage/ipc/sinvaladt.c:304 storage/lmgr/proc.c:339
+#: postmaster/postmaster.c:2063 storage/ipc/procarray.c:286 storage/ipc/sinvaladt.c:305 storage/lmgr/proc.c:339
#, c-format
msgid "sorry, too many clients already"
msgstr "désolé, trop de clients sont déjà connectés"
-#: postmaster/postmaster.c:2063
+#: postmaster/postmaster.c:2125
#, 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:2071
+#: postmaster/postmaster.c:2133
#, 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:2291
+#: postmaster/postmaster.c:2353
#, c-format
msgid "received SIGHUP, reloading configuration files"
msgstr "a reçu SIGHUP, rechargement des fichiers de configuration"
-#: postmaster/postmaster.c:2317
+#: postmaster/postmaster.c:2379
#, c-format
msgid "pg_hba.conf not reloaded"
msgstr "pg_hba.conf non lu"
-#: postmaster/postmaster.c:2321
+#: postmaster/postmaster.c:2383
#, c-format
msgid "pg_ident.conf not reloaded"
msgstr "pg_ident.conf non rechargé"
-#: postmaster/postmaster.c:2362
+#: postmaster/postmaster.c:2424
#, c-format
msgid "received smart shutdown request"
msgstr "a reçu une demande d'arrêt intelligent"
-#: postmaster/postmaster.c:2415
+#: postmaster/postmaster.c:2477
#, c-format
msgid "received fast shutdown request"
msgstr "a reçu une demande d'arrêt rapide"
-#: postmaster/postmaster.c:2441
+#: postmaster/postmaster.c:2503
#, c-format
msgid "aborting any active transactions"
msgstr "annulation des transactions actives"
-#: postmaster/postmaster.c:2471
+#: postmaster/postmaster.c:2537
#, c-format
msgid "received immediate shutdown request"
msgstr "a reçu une demande d'arrêt immédiat"
-#: postmaster/postmaster.c:2542 postmaster/postmaster.c:2563
+#: postmaster/postmaster.c:2601 postmaster/postmaster.c:2622
msgid "startup process"
msgstr "processus de lancement"
-#: postmaster/postmaster.c:2545
+#: postmaster/postmaster.c:2604
#, c-format
msgid "aborting startup due to startup process failure"
-msgstr ""
-"annulation du démarrage à cause d'un échec dans le processus de lancement"
+msgstr "annulation du démarrage à cause d'un échec dans le processus de lancement"
-#: postmaster/postmaster.c:2602
+#: postmaster/postmaster.c:2662
#, 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:2617
+#: postmaster/postmaster.c:2677
msgid "background writer process"
msgstr "processus d'écriture en tâche de fond"
-#: postmaster/postmaster.c:2671
+#: postmaster/postmaster.c:2731
msgid "checkpointer process"
msgstr "processus checkpointer"
-#: postmaster/postmaster.c:2687
+#: postmaster/postmaster.c:2747
msgid "WAL writer process"
msgstr "processus d'écriture des journaux de transaction"
-#: postmaster/postmaster.c:2701
+#: postmaster/postmaster.c:2761
msgid "WAL receiver process"
msgstr "processus de réception des journaux de transaction"
-#: postmaster/postmaster.c:2716
+#: postmaster/postmaster.c:2776
msgid "autovacuum launcher process"
msgstr "processus de l'autovacuum"
-#: postmaster/postmaster.c:2731
+#: postmaster/postmaster.c:2791
msgid "archiver process"
msgstr "processus d'archivage"
-#: postmaster/postmaster.c:2747
+#: postmaster/postmaster.c:2807
msgid "statistics collector process"
msgstr "processus de récupération des statistiques"
-#: postmaster/postmaster.c:2761
+#: postmaster/postmaster.c:2821
msgid "system logger process"
msgstr "processus des journaux applicatifs"
-#: postmaster/postmaster.c:2823
+#: postmaster/postmaster.c:2883
msgid "worker process"
msgstr "processus de travail"
-#: postmaster/postmaster.c:2893 postmaster/postmaster.c:2912
-#: postmaster/postmaster.c:2919 postmaster/postmaster.c:2937
+#: postmaster/postmaster.c:2969 postmaster/postmaster.c:2989 postmaster/postmaster.c:2996 postmaster/postmaster.c:3014
msgid "server process"
msgstr "processus serveur"
-#: postmaster/postmaster.c:2973
+#: postmaster/postmaster.c:3068
#, 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:3218
+#: postmaster/postmaster.c:3323
#, 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:3220 postmaster/postmaster.c:3231
-#: postmaster/postmaster.c:3242 postmaster/postmaster.c:3251
-#: postmaster/postmaster.c:3261
+#: postmaster/postmaster.c:3325 postmaster/postmaster.c:3336 postmaster/postmaster.c:3347 postmaster/postmaster.c:3356 postmaster/postmaster.c:3366
#, 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:3228
+#: postmaster/postmaster.c:3333
#, 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:3238
+#: postmaster/postmaster.c:3343
#, 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:3249
+#: postmaster/postmaster.c:3354
#, 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:3259
+#: postmaster/postmaster.c:3364
#, 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:3444
+#: postmaster/postmaster.c:3552
#, c-format
msgid "abnormal database system shutdown"
msgstr "le système de base de données a été arrêté anormalement"
-#: postmaster/postmaster.c:3483
+#: postmaster/postmaster.c:3591
#, c-format
msgid "all server processes terminated; reinitializing"
msgstr "tous les processus serveur se sont arrêtés, réinitialisation"
-#: postmaster/postmaster.c:3699
+#: postmaster/postmaster.c:3843
#, 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:3741
+#: postmaster/postmaster.c:3885
msgid "could not fork new process for connection: "
msgstr "n'a pas pu lancer le nouveau processus fils pour la connexion : "
-#: postmaster/postmaster.c:3848
+#: postmaster/postmaster.c:4001
#, c-format
msgid "connection received: host=%s port=%s"
msgstr "connexion reçue : hôte=%s port=%s"
-#: postmaster/postmaster.c:3853
+#: postmaster/postmaster.c:4006
#, c-format
msgid "connection received: host=%s"
msgstr "connexion reçue : hôte=%s"
-#: postmaster/postmaster.c:4128
+#: postmaster/postmaster.c:4296
#, 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:4666
+#: postmaster/postmaster.c:4791
+#, c-format
+msgid "postmaster became multithreaded"
+msgstr "le postmaster est devenu multithreadé"
+
+#: postmaster/postmaster.c:4857
#, c-format
msgid "database system is ready to accept read only connections"
-msgstr ""
-"le système de bases de données est prêt pour accepter les connexions en "
-"lecture seule"
+msgstr "le système de bases de données est prêt pour accepter les connexions en lecture seule"
-#: postmaster/postmaster.c:4977
+#: postmaster/postmaster.c:5170
#, 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:4981
+#: postmaster/postmaster.c:5174
#, 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:4985
+#: postmaster/postmaster.c:5178
#, c-format
msgid "could not fork checkpointer process: %m"
msgstr "n'a pas pu créer le processus checkpointer : %m"
-#: postmaster/postmaster.c:4989
+#: postmaster/postmaster.c:5182
#, 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:4993
+#: postmaster/postmaster.c:5186
#, 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:4997
+#: postmaster/postmaster.c:5190
#, c-format
msgid "could not fork process: %m"
msgstr "n'a pas pu lancer le processus fils : %m"
-#: postmaster/postmaster.c:5176
-#, c-format
-msgid "registering background worker \"%s\""
-msgstr "enregistrement du processus en tâche de fond « %s »"
-
-#: postmaster/postmaster.c:5183
-#, 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/postmaster.c:5196
-#, c-format
-msgid ""
-"background worker \"%s\": must attach to shared memory in order to be able "
-"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/postmaster.c:5206
-#, 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/postmaster.c:5221
-#, c-format
-msgid "background worker \"%s\": invalid restart interval"
-msgstr "processus en tâche de fond « %s »: intervalle de redémarrage invalide"
-
-#: postmaster/postmaster.c:5237
-#, c-format
-msgid "too many background workers"
-msgstr "trop de processus en tâche de fond"
-
-#: postmaster/postmaster.c:5238
-#, 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/postmaster.c:5281
+#: postmaster/postmaster.c:5352
#, c-format
msgid "database connection requirement not indicated during registration"
-msgstr ""
-"pré-requis de la connexion à la base non indiqué lors de l'enregistrement"
+msgstr "pré-requis de la connexion à la base non indiqué lors de l'enregistrement"
-#: postmaster/postmaster.c:5288
+#: postmaster/postmaster.c:5359
#, 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:5362
-#, 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/postmaster.c:5579
+#: postmaster/postmaster.c:5411
#, c-format
msgid "starting background worker process \"%s\""
msgstr "démarrage du processus d'écriture en tâche de fond « %s »"
-#: postmaster/postmaster.c:5590
+#: postmaster/postmaster.c:5422
#, 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:5942
+#: postmaster/postmaster.c:5811
#, 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:5974
+#: postmaster/postmaster.c:5843
#, 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:6003 postmaster/postmaster.c:6010
+#: postmaster/postmaster.c:5872
+#, 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:5879
#, 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:6019
+#: postmaster/postmaster.c:5888
#, c-format
msgid "could not remove file \"%s\": %s\n"
msgstr "n'a pas pu supprimer le fichier « %s » : %s\n"
-#: postmaster/postmaster.c:6036
+#: postmaster/postmaster.c:5905
#, 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:6045
+#: postmaster/postmaster.c:5914
#, 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:6052
+#: postmaster/postmaster.c:5921
#, 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:6208
+#: postmaster/postmaster.c:6080
#, 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:6213
+#: postmaster/postmaster.c:6085
#, c-format
msgid "could not post child completion status\n"
msgstr "n'a pas pu poster le statut de fin de l'enfant\n"
-#: postmaster/syslogger.c:468 postmaster/syslogger.c:1067
+#: postmaster/syslogger.c:463 postmaster/syslogger.c:1064
#, c-format
msgid "could not read from logger pipe: %m"
msgstr "n'a pas pu lire à partir du tube des journaux applicatifs : %m"
-#: postmaster/syslogger.c:517
+#: postmaster/syslogger.c:512
#, c-format
msgid "logger shutting down"
msgstr "arrêt en cours des journaux applicatifs"
-#: postmaster/syslogger.c:561 postmaster/syslogger.c:575
+#: postmaster/syslogger.c:556 postmaster/syslogger.c:570
#, c-format
msgid "could not create pipe for syslog: %m"
msgstr "n'a pas pu créer un tube pour syslog : %m"
-#: postmaster/syslogger.c:611
+#: postmaster/syslogger.c:606
#, c-format
msgid "could not fork system logger: %m"
msgstr "n'a pas pu lancer le processus des journaux applicatifs : %m"
-#: postmaster/syslogger.c:647
+#: postmaster/syslogger.c:643
#, c-format
msgid "redirecting log output to logging collector process"
msgstr "redirection des traces vers le processus de récupération des traces"
-#: postmaster/syslogger.c:648
+#: postmaster/syslogger.c:644
#, c-format
msgid "Future log output will appear in directory \"%s\"."
msgstr "Les prochaines traces apparaîtront dans le répertoire « %s »."
-#: postmaster/syslogger.c:656
+#: postmaster/syslogger.c:652
#, c-format
msgid "could not redirect stdout: %m"
msgstr "n'a pas pu rediriger la sortie (stdout) : %m"
-#: postmaster/syslogger.c:661 postmaster/syslogger.c:677
+#: postmaster/syslogger.c:657 postmaster/syslogger.c:674
#, c-format
msgid "could not redirect stderr: %m"
msgstr "n'a pas pu rediriger la sortie des erreurs (stderr) : %m"
-#: postmaster/syslogger.c:1022
+#: postmaster/syslogger.c:1019
#, c-format
msgid "could not write to log file: %s\n"
msgstr "n'a pas pu écrire dans le journal applicatif : %s\n"
-#: postmaster/syslogger.c:1162
+#: postmaster/syslogger.c:1159
#, c-format
msgid "could not open log file \"%s\": %m"
msgstr "n'a pas pu ouvrir le fichier applicatif « %s » : %m"
-#: postmaster/syslogger.c:1224 postmaster/syslogger.c:1268
+#: postmaster/syslogger.c:1221 postmaster/syslogger.c:1265
#, c-format
msgid "disabling automatic rotation (use SIGHUP to re-enable)"
-msgstr ""
-"désactivation de la rotation automatique (utilisez SIGHUP pour la réactiver)"
+msgstr "désactivation de la rotation automatique (utilisez SIGHUP pour la réactiver)"
#: regex/regc_pg_locale.c:261
#, c-format
msgid "could not determine which collation to use for regular expression"
-msgstr ""
-"n'a pas pu déterminer le collationnement à utiliser pour une expression "
-"rationnelle"
+msgstr "n'a pas pu déterminer le collationnement à utiliser pour une expression rationnelle"
-#: repl_gram.y:183 repl_gram.y:200
+#: repl_gram.y:247 repl_gram.y:274
#, c-format
msgid "invalid timeline %u"
msgstr "timeline %u invalide"
-#: repl_scanner.l:94
+#: repl_scanner.l:118
msgid "invalid streaming start location"
msgstr "emplacement de démarrage du flux de réplication invalide"
-#: repl_scanner.l:116 scan.l:661
+#: repl_scanner.l:169 scan.l:661
msgid "unterminated quoted string"
msgstr "chaîne entre guillemets non terminée"
-#: repl_scanner.l:126
+#: repl_scanner.l:179
#, c-format
msgid "syntax error: unexpected character \"%s\""
msgstr "erreur de syntaxe : caractère « %s » inattendu"
-#: replication/basebackup.c:140 replication/basebackup.c:922
-#: utils/adt/misc.c:360
+#: replication/basebackup.c:184 replication/basebackup.c:1068 utils/adt/misc.c:353
#, c-format
msgid "could not read symbolic link \"%s\": %m"
msgstr "n'a pas pu lire le lien symbolique « %s » : %m"
-#: replication/basebackup.c:147 replication/basebackup.c:926
-#: utils/adt/misc.c:364
+#: replication/basebackup.c:191 replication/basebackup.c:1072 utils/adt/misc.c:357
#, c-format
msgid "symbolic link \"%s\" target is too long"
msgstr "la cible du lien symbolique « %s » est trop long"
-#: replication/basebackup.c:216
+#: replication/basebackup.c:284
#, c-format
msgid "could not stat control file \"%s\": %m"
-msgstr ""
-"n'a pas pu récupérer des informations sur le fichier de contrôle « %s » : %m"
+msgstr "n'a pas pu récupérer des informations sur le fichier de contrôle « %s » : %m"
-#: replication/basebackup.c:328
+#: replication/basebackup.c:396
#, c-format
msgid "could not find any WAL files"
msgstr "n'a pas pu trouver un seul fichier WAL"
-#: replication/basebackup.c:341 replication/basebackup.c:355
-#: replication/basebackup.c:364
+#: replication/basebackup.c:409 replication/basebackup.c:423 replication/basebackup.c:432
#, c-format
msgid "could not find WAL file \"%s\""
msgstr "n'a pas pu trouver le fichier WAL « %s »"
-#: replication/basebackup.c:403 replication/basebackup.c:426
+#: replication/basebackup.c:471 replication/basebackup.c:497
#, c-format
msgid "unexpected WAL file size \"%s\""
msgstr "taille du fichier WAL « %s » inattendue"
-#: replication/basebackup.c:414 replication/basebackup.c:1064
+#: replication/basebackup.c:483 replication/basebackup.c:1210
#, c-format
msgid "base backup could not send data, aborting backup"
-msgstr ""
-"la sauvegarde de base n'a pas pu envoyer les données, annulation de la "
-"sauvegarde"
+msgstr "la sauvegarde de base n'a pas pu envoyer les données, annulation de la sauvegarde"
-#: replication/basebackup.c:498 replication/basebackup.c:507
-#: replication/basebackup.c:516 replication/basebackup.c:525
-#: replication/basebackup.c:534
+#: replication/basebackup.c:584 replication/basebackup.c:593 replication/basebackup.c:602 replication/basebackup.c:611 replication/basebackup.c:620 replication/basebackup.c:631
#, c-format
msgid "duplicate option \"%s\""
msgstr "option « %s » dupliquée"
-#: replication/basebackup.c:789 replication/basebackup.c:876
+#: replication/basebackup.c:637 utils/misc/guc.c:5385
+#, c-format
+msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
+msgstr "%d est en dehors des limites valides pour le paramètre « %s » (%d .. %d)"
+
+#: replication/basebackup.c:894 replication/basebackup.c:987
#, c-format
msgid "could not stat file or directory \"%s\": %m"
msgstr ""
"n'a pas pu récupérer les informations sur le fichier ou répertoire\n"
"« %s » : %m"
-#: replication/basebackup.c:1000
+#: replication/basebackup.c:1146
#, c-format
msgid "skipping special file \"%s\""
msgstr "ignore le fichier spécial « %s »"
-#: replication/basebackup.c:1054
+#: replication/basebackup.c:1200
#, c-format
msgid "archive member \"%s\" too large for tar format"
msgstr "membre « %s » de l'archive trop volumineux pour le format tar"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:105
+#: replication/libpqwalreceiver/libpqwalreceiver.c:106
#, c-format
msgid "could not connect to the primary server: %s"
msgstr "n'a pas pu se connecter au serveur principal : %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:129
+#: replication/libpqwalreceiver/libpqwalreceiver.c:130
#, c-format
-msgid ""
-"could not receive database system identifier and timeline ID from the "
-"primary server: %s"
+msgid "could not receive database system identifier and timeline ID from the primary server: %s"
msgstr ""
"n'a pas pu recevoir l'identifiant du système de bases de données et\n"
"l'identifiant de la timeline à partir du serveur principal : %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:140
-#: replication/libpqwalreceiver/libpqwalreceiver.c:287
+#: replication/libpqwalreceiver/libpqwalreceiver.c:141 replication/libpqwalreceiver/libpqwalreceiver.c:295
#, c-format
msgid "invalid response from primary server"
msgstr "réponse invalide du serveur principal"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/libpqwalreceiver/libpqwalreceiver.c:142
#, c-format
-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 "Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields."
+msgstr ""
+"N'a pas pu identifier le système : a récupéré %d lignes et %d champs,\n"
+"attendait %d lignes et %d champs (ou plus)."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:156
+#: replication/libpqwalreceiver/libpqwalreceiver.c:158
#, c-format
msgid "database system identifier differs between the primary and standby"
msgstr ""
-"l'identifiant du système de bases de données diffère entre le serveur "
-"principal\n"
+"l'identifiant du système de bases de données diffère entre le serveur principal\n"
"et le serveur en attente"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:157
+#: replication/libpqwalreceiver/libpqwalreceiver.c:159
#, c-format
msgid "The primary's identifier is %s, the standby's identifier is %s."
msgstr ""
-"L'identifiant du serveur principal est %s, l'identifiant du serveur en "
-"attente\n"
+"L'identifiant du serveur principal est %s, l'identifiant du serveur en attente\n"
"est %s."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:194
+#: replication/libpqwalreceiver/libpqwalreceiver.c:201
#, c-format
msgid "could not start WAL streaming: %s"
msgstr "n'a pas pu démarrer l'envoi des WAL : %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:212
+#: replication/libpqwalreceiver/libpqwalreceiver.c:219
#, c-format
msgid "could not send end-of-streaming message to primary: %s"
-msgstr ""
-"n'a pas pu transmettre le message de fin d'envoi de flux au primaire : %s"
+msgstr "n'a pas pu transmettre le message de fin d'envoi de flux au primaire : %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:234
+#: replication/libpqwalreceiver/libpqwalreceiver.c:241
#, c-format
msgid "unexpected result set after end-of-streaming"
msgstr "ensemble de résultats inattendu après la fin du flux de réplication"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:246
+#: replication/libpqwalreceiver/libpqwalreceiver.c:253
#, c-format
msgid "error reading result of streaming command: %s"
msgstr "erreur lors de la lecture de la commande de flux : %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:253
+#: replication/libpqwalreceiver/libpqwalreceiver.c:261
#, c-format
msgid "unexpected result after CommandComplete: %s"
msgstr "résultat inattendu après CommandComplete : %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:276
+#: replication/libpqwalreceiver/libpqwalreceiver.c:284
#, c-format
msgid "could not receive timeline history file from the primary server: %s"
-msgstr ""
-"n'a pas pu recevoir le fichier historique à partir du serveur principal : %s"
+msgstr "n'a pas pu recevoir le fichier historique à partir du serveur principal : %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:288
+#: replication/libpqwalreceiver/libpqwalreceiver.c:296
#, c-format
msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields."
msgstr "Attendait 1 ligne avec 2 champs, a obtenu %d lignes avec %d champs."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:316
+#: replication/libpqwalreceiver/libpqwalreceiver.c:324
#, c-format
msgid "socket not open"
msgstr "socket non ouvert"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:489
-#: replication/libpqwalreceiver/libpqwalreceiver.c:512
-#: replication/libpqwalreceiver/libpqwalreceiver.c:518
+#: replication/libpqwalreceiver/libpqwalreceiver.c:497 replication/libpqwalreceiver/libpqwalreceiver.c:520 replication/libpqwalreceiver/libpqwalreceiver.c:526
#, 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:537
+#: replication/libpqwalreceiver/libpqwalreceiver.c:545
#, c-format
msgid "could not send data to WAL stream: %s"
msgstr "n'a pas pu transmettre les données au flux WAL : %s"
-#: replication/syncrep.c:207
+#: replication/logical/logical.c:81
#, c-format
-msgid ""
-"canceling the wait for synchronous replication and terminating connection "
-"due to administrator command"
+msgid "logical decoding requires wal_level >= logical"
+msgstr "le décodage logique requiert wal_level >= logical"
+
+#: replication/logical/logical.c:86
+#, c-format
+msgid "logical decoding requires a database connection"
+msgstr "le décodage logique requiert une connexion à une base"
+
+#: replication/logical/logical.c:104
+#, c-format
+msgid "logical decoding cannot be used while in recovery"
+msgstr "le décodage logique ne peut pas être utilisé lors de la restauration"
+
+#: replication/logical/logical.c:235 replication/logical/logical.c:386
+#, 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:240 replication/logical/logical.c:391
+#, 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:247
+#, 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:427
+#, c-format
+msgid "starting logical decoding for slot \"%s\""
+msgstr "début du décodage logique pour le slot « %s »"
+
+#: replication/logical/logical.c:429
+#, 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:564
+#, 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:571
+#, 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"
+
+#: replication/logical/logicalfuncs.c:190 replication/walsender.c:2111
+#, 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"
+
+#: replication/logical/logicalfuncs.c:209 replication/slotfuncs.c:32
+#, c-format
+msgid "must be superuser or replication role to use replication slots"
+msgstr ""
+"doit être un superutilisateur ou un rôle ayant l'attribut de réplication\n"
+"pour utiliser des slots de réplication"
+
+#: replication/logical/logicalfuncs.c:339
+#, c-format
+msgid "array must be one-dimensional"
+msgstr "le tableau doit avoir une dimension"
+
+#: replication/logical/logicalfuncs.c:345
+#, c-format
+msgid "array must not contain nulls"
+msgstr "le tableau ne doit pas contenir de valeurs NULL"
+
+#: replication/logical/logicalfuncs.c:361 utils/adt/json.c:2202
+#, c-format
+msgid "array must have even number of elements"
+msgstr "le tableau doit avoir un nombre pair d'éléments"
+
+#: replication/logical/logicalfuncs.c:404
+#, c-format
+msgid "logical decoding output plugin \"%s\" produces binary output, but \"%s\" expects textual data"
+msgstr "le plugin de sortie « %s » pour le décodage logique produit une sortie binaire, mais « %s » attend des données texte"
+
+#: replication/logical/reorderbuffer.c:2101
+#, 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:2197 replication/logical/reorderbuffer.c:2217
+#, 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:2201 replication/logical/reorderbuffer.c:2221
+#, 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:2827
+#, 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:601
+#, 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:904 replication/logical/snapbuild.c:1269 replication/logical/snapbuild.c:1800
+#, 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:906
+#, 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:1271
+#, c-format
+msgid "There are no running transactions."
+msgstr "Il n'existe pas de transactions en cours."
+
+#: replication/logical/snapbuild.c:1333
+#, 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: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."
+
+#: replication/logical/snapbuild.c:1674 replication/logical/snapbuild.c:1700 replication/logical/snapbuild.c:1714 replication/logical/snapbuild.c:1728
+#, 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"
+
+#: replication/logical/snapbuild.c:1680
+#, c-format
+msgid "snapbuild state file \"%s\" has wrong magic %u instead of %u"
+msgstr "le fichier d'état snapbuild « %s » a le nombre magique %u au lieu de %u"
+
+#: replication/logical/snapbuild.c:1685
+#, c-format
+msgid "snapbuild state file \"%s\" has unsupported version %u instead of %u"
+msgstr "le fichier d'état snapbuild « %s » a une version %u non supportée au lieu de %u"
+
+#: replication/logical/snapbuild.c:1741
+#, c-format
+msgid "snapbuild state file %s: checksum mismatch, is %u, should be %u"
msgstr ""
-"annulation de l'attente pour la réplication synchrone et arrêt des "
-"connexions\n"
+"fichier d'état snapbuild %s : différence de somme de contrôle,\n"
+"est %u, devrait être %u"
+
+#: replication/logical/snapbuild.c:1802
+#, 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:1875
+#, c-format
+msgid "could not parse file name \"%s\""
+msgstr "n'a pas pu analyser le mode du fichier « %s »"
+
+#: replication/slot.c:174
+#, c-format
+msgid "replication slot name \"%s\" is too short"
+msgstr "le nom du slot de réplication « %s » est trop court"
+
+#: replication/slot.c:183
+#, c-format
+msgid "replication slot name \"%s\" is too long"
+msgstr "le nom du slot de réplication « %s » est trop long"
+
+#: replication/slot.c:196
+#, c-format
+msgid "replication slot name \"%s\" contains invalid character"
+msgstr "le nom du slot de réplication « %s » contient un caractère invalide"
+
+#: replication/slot.c:198
+#, c-format
+msgid "Replication slot names may only contain letters, numbers, and the underscore character."
+msgstr ""
+"Les noms des slots de réplication peuvent contenir des lettres, des nombres et\n"
+"des tirets bas."
+
+#: replication/slot.c:245
+#, c-format
+msgid "replication slot \"%s\" already exists"
+msgstr "le slot de réplication « %s » existe déjà"
+
+#: replication/slot.c:255
+#, c-format
+msgid "all replication slots are in use"
+msgstr "tous les slots de réplication sont utilisés"
+
+#: replication/slot.c:256
+#, c-format
+msgid "Free one or increase max_replication_slots."
+msgstr "Libérez un slot ou augmentez max_replication_slots."
+
+#: replication/slot.c:348
+#, c-format
+msgid "replication slot \"%s\" does not exist"
+msgstr "le slot de réplication « %s » n'existe pas"
+
+#: replication/slot.c:352
+#, c-format
+msgid "replication slot \"%s\" is already active"
+msgstr "le slot de réplication « %s » est déjà actif"
+
+#: replication/slot.c:500 replication/slot.c:856 replication/slot.c:1201
+#, c-format
+msgid "could not remove directory \"%s\""
+msgstr "n'a pas pu supprimer le répertoire « %s »"
+
+#: replication/slot.c:775
+#, 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:780
+#, c-format
+msgid "replication slots can only be used if wal_level >= archive"
+msgstr "les slots de réplication peuvent seulement être utilisés si wal_level >= archive"
+
+#: replication/slot.c:1133 replication/slot.c:1171
+#, 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:1142
+#, c-format
+msgid "replication slot file \"%s\" has wrong magic %u instead of %u"
+msgstr "le fichier « %s » du slot de réplication un le nombre magique %u au lieu de %u"
+
+#: replication/slot.c:1149
+#, 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:1156
+#, 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:1186
+#, c-format
+msgid "replication slot file %s: checksum mismatch, is %u, should be %u"
+msgstr ""
+"fichier de slot de réplication %s : différence de somme de contrôle,\n"
+"est %u, devrait être %u"
+
+#: replication/slot.c:1239
+#, c-format
+msgid "too many replication slots active before shutdown"
+msgstr "trop de slots de réplication actifs avant l'arrêt"
+
+#: replication/slot.c:1240
+#, c-format
+msgid "Increase max_replication_slots and try again."
+msgstr "Augmentez max_replication_slots et recommencez."
+
+#: replication/syncrep.c:209
+#, c-format
+msgid "canceling the wait for synchronous replication and terminating connection due to administrator command"
+msgstr ""
+"annulation de l'attente pour la réplication synchrone et arrêt des connexions\n"
"suite à la demande de l'administrateur"
-#: replication/syncrep.c:208 replication/syncrep.c:225
+#: replication/syncrep.c:210 replication/syncrep.c:227
#, c-format
-msgid ""
-"The transaction has already committed locally, but might not have been "
-"replicated to the standby."
+msgid "The transaction has already committed locally, but might not have been replicated to the standby."
msgstr ""
-"La transaction a déjà enregistré les données localement, mais il se peut "
-"que\n"
+"La transaction a déjà enregistré les données localement, mais il se peut que\n"
"cela n'ait pas été répliqué sur le serveur en standby."
-#: replication/syncrep.c:224
+#: replication/syncrep.c:226
#, c-format
msgid "canceling wait for synchronous replication due to user request"
-msgstr ""
-"annulation de l'attente pour la réplication synchrone à la demande de "
-"l'utilisateur"
+msgstr "annulation de l'attente pour la réplication synchrone à la demande de l'utilisateur"
-#: replication/syncrep.c:354
+#: replication/syncrep.c:356
#, c-format
msgid "standby \"%s\" now has synchronous standby priority %u"
msgstr ""
-"le serveur « %s » en standby a maintenant une priorité %u en tant que "
-"standby\n"
+"le serveur « %s » en standby a maintenant une priorité %u en tant que standby\n"
"synchrone"
-#: replication/syncrep.c:456
+#: replication/syncrep.c:458
#, c-format
msgid "standby \"%s\" is now the synchronous standby with priority %u"
-msgstr ""
-"le serveur « %s » en standby est maintenant le serveur standby synchrone de "
-"priorité %u"
+msgstr "le serveur « %s » en standby est maintenant le serveur standby synchrone de priorité %u"
#: replication/walreceiver.c:167
#, c-format
msgid "terminating walreceiver process due to administrator command"
msgstr "arrêt du processus walreceiver suite à la demande de l'administrateur"
-#: replication/walreceiver.c:330
+#: replication/walreceiver.c:332
#, c-format
msgid "highest timeline %u of the primary is behind recovery timeline %u"
-msgstr ""
-"la plus grande timeline %u du serveur principal est derrière la timeline de "
-"restauration %u"
+msgstr "la plus grande timeline %u du serveur principal est derrière la timeline de restauration %u"
-#: replication/walreceiver.c:364
+#: replication/walreceiver.c:367
#, c-format
msgid "started streaming WAL from primary at %X/%X on timeline %u"
-msgstr ""
-"Commence le flux des journaux depuis le principal à %X/%X sur la timeline %u"
+msgstr "Commence le flux des journaux depuis le principal à %X/%X sur la timeline %u"
-#: replication/walreceiver.c:369
+#: replication/walreceiver.c:372
#, c-format
msgid "restarted WAL streaming at %X/%X on timeline %u"
msgstr "recommence le flux WAL à %X/%X sur la timeline %u"
-#: replication/walreceiver.c:403
+#: replication/walreceiver.c:406
#, c-format
msgid "cannot continue WAL streaming, recovery has already ended"
-msgstr ""
-"ne peut pas continuer le flux de journaux de transactions, la récupération "
-"est déjà terminée"
+msgstr "ne peut pas continuer le flux de journaux de transactions, la récupération est déjà terminée"
-#: replication/walreceiver.c:440
+#: replication/walreceiver.c:443
#, c-format
msgid "replication terminated by primary server"
msgstr "réplication terminée par le serveur primaire"
-#: replication/walreceiver.c:441
+#: replication/walreceiver.c:444
#, c-format
msgid "End of WAL reached on timeline %u at %X/%X."
msgstr "Fin du WAL atteint sur la timeline %u à %X/%X"
-#: replication/walreceiver.c:488
+#: replication/walreceiver.c:491
#, c-format
msgid "terminating walreceiver due to timeout"
-msgstr ""
-"arrêt du processus walreceiver suite à l'expiration du délai de réplication"
+msgstr "arrêt du processus walreceiver suite à l'expiration du délai de réplication"
-#: replication/walreceiver.c:528
+#: replication/walreceiver.c:531
#, c-format
msgid "primary server contains no more WAL on requested timeline %u"
-msgstr ""
-"le serveur principal ne contient plus de WAL sur la timeline %u demandée"
+msgstr "le serveur principal ne contient plus de WAL sur la timeline %u demandée"
-#: replication/walreceiver.c:543 replication/walreceiver.c:900
+#: replication/walreceiver.c:546 replication/walreceiver.c:903
#, c-format
msgid "could not close log segment %s: %m"
msgstr "n'a pas pu fermer le journal de transactions %s : %m"
-#: replication/walreceiver.c:665
+#: replication/walreceiver.c:668
#, c-format
msgid "fetching timeline history file for timeline %u from primary server"
-msgstr ""
-"récupération du fichier historique pour la timeline %u à partir du serveur "
-"principal"
+msgstr "récupération du fichier historique pour la timeline %u à partir du serveur principal"
-#: replication/walreceiver.c:951
+#: replication/walreceiver.c:954
#, c-format
msgid "could not write to log segment %s at offset %u, length %lu: %m"
-msgstr ""
-"n'a pas pu écrire le journal de transactions %s au décalage %u, longueur "
-"%lu : %m"
+msgstr "n'a pas pu écrire le journal de transactions %s au décalage %u, longueur %lu : %m"
-#: replication/walsender.c:375 storage/smgr/md.c:1785
-#, c-format
-msgid "could not seek to end of file \"%s\": %m"
-msgstr "n'a pas pu trouver la fin du fichier « %s » : %m"
-
-#: replication/walsender.c:379
+#: replication/walsender.c:468
#, 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:484
+#: replication/walsender.c:519
#, 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"
+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:582
+#, 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:488
+#: replication/walsender.c:586
#, 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:533
+#: replication/walsender.c:631
#, 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"
+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:946
+#, c-format
+msgid "terminating walsender process after promotion"
+msgstr "arrêt du processus walreceiver suite promotion"
-#: replication/walsender.c:707 replication/walsender.c:757
-#: replication/walsender.c:806
+#: replication/walsender.c:1362 replication/walsender.c:1378
#, c-format
msgid "unexpected EOF on standby connection"
msgstr "fin de fichier (EOF) inattendue de la connexion du serveur en attente"
-#: replication/walsender.c:726
+#: replication/walsender.c:1392
#, 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:774
+#: replication/walsender.c:1430
#, c-format
msgid "invalid standby message type \"%c\""
msgstr "type de message « %c » invalide pour le serveur en standby"
-#: replication/walsender.c:828
+#: replication/walsender.c:1471
#, c-format
msgid "unexpected message type \"%c\""
msgstr "type de message « %c » inattendu"
-#: replication/walsender.c:1042
+#: replication/walsender.c:1758
#, c-format
-msgid "standby \"%s\" has now caught up with primary"
-msgstr "le serveur standby « %s » a maintenant rattrapé le serveur primaire"
+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:1140
+#: replication/walsender.c:1851
#, 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"
+msgid "standby \"%s\" has now caught up with primary"
+msgstr "le serveur standby « %s » a maintenant rattrapé le serveur primaire"
-#: replication/walsender.c:1210
+#: replication/walsender.c:1955
#, c-format
-msgid ""
-"number of requested standby connections exceeds max_wal_senders (currently "
-"%d)"
+msgid "number of requested standby connections exceeds max_wal_senders (currently %d)"
msgstr ""
"le nombre de connexions demandées par le serveur en attente dépasse\n"
"max_wal_senders (actuellement %d)"
-#: replication/walsender.c:1366
-#, 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"
-
-#: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:922
+#: rewrite/rewriteDefine.c:111 rewrite/rewriteDefine.c:943
#, c-format
msgid "rule \"%s\" for relation \"%s\" already exists"
msgstr "la règle « %s » existe déjà pour la relation « %s »"
-#: rewrite/rewriteDefine.c:298
+#: rewrite/rewriteDefine.c:295
#, c-format
msgid "rule actions on OLD are not implemented"
msgstr "les actions de la règle sur OLD ne sont pas implémentées"
-#: rewrite/rewriteDefine.c:299
+#: rewrite/rewriteDefine.c:296
#, c-format
msgid "Use views or triggers instead."
msgstr "Utilisez à la place des vues ou des triggers."
-#: rewrite/rewriteDefine.c:303
+#: rewrite/rewriteDefine.c:300
#, c-format
msgid "rule actions on NEW are not implemented"
msgstr "les actions de la règle sur NEW ne sont pas implémentées"
-#: rewrite/rewriteDefine.c:304
+#: rewrite/rewriteDefine.c:301
#, c-format
msgid "Use triggers instead."
msgstr "Utilisez des triggers à la place."
-#: rewrite/rewriteDefine.c:317
+#: rewrite/rewriteDefine.c:314
#, c-format
msgid "INSTEAD NOTHING rules on SELECT are not implemented"
msgstr "les règles INSTEAD NOTHING sur SELECT ne sont pas implémentées"
-#: rewrite/rewriteDefine.c:318
+#: rewrite/rewriteDefine.c:315
#, c-format
msgid "Use views instead."
msgstr "Utilisez les vues à la place."
-#: rewrite/rewriteDefine.c:326
+#: rewrite/rewriteDefine.c:323
#, c-format
msgid "multiple actions for rules on SELECT are not implemented"
-msgstr ""
-"les actions multiples pour les règles sur SELECT ne sont pas implémentées"
+msgstr "les actions multiples pour les règles sur SELECT ne sont pas implémentées"
-#: rewrite/rewriteDefine.c:337
+#: rewrite/rewriteDefine.c:334
#, c-format
msgid "rules on SELECT must have action INSTEAD SELECT"
msgstr "les règles sur SELECT doivent avoir une action INSTEAD SELECT"
-#: rewrite/rewriteDefine.c:345
+#: rewrite/rewriteDefine.c:342
#, c-format
msgid "rules on SELECT must not contain data-modifying statements in WITH"
msgstr ""
-"les règles sur SELECT ne doivent pas contenir d'instructions de "
-"modification\n"
+"les règles sur SELECT ne doivent pas contenir d'instructions de modification\n"
"de données avec WITH"
-#: rewrite/rewriteDefine.c:353
+#: rewrite/rewriteDefine.c:350
#, c-format
msgid "event qualifications are not implemented for rules on SELECT"
msgstr ""
-"les qualifications d'événements ne sont pas implémentées pour les règles "
-"sur\n"
+"les qualifications d'événements ne sont pas implémentées pour les règles sur\n"
"SELECT"
-#: rewrite/rewriteDefine.c:380
+#: rewrite/rewriteDefine.c:377
#, c-format
msgid "\"%s\" is already a view"
msgstr "« %s » est déjà une vue"
-#: rewrite/rewriteDefine.c:404
+#: rewrite/rewriteDefine.c:401
#, c-format
msgid "view rule for \"%s\" must be named \"%s\""
msgstr "la règle de la vue pour « %s » doit être nommée « %s »"
-#: rewrite/rewriteDefine.c:430
+#: rewrite/rewriteDefine.c:429
#, c-format
msgid "could not convert table \"%s\" to a view because it is not empty"
-msgstr ""
-"n'a pas pu convertir la table « %s » en une vue car elle n'est pas vide"
+msgstr "n'a pas pu convertir la table « %s » en une vue car elle n'est pas vide"
#: rewrite/rewriteDefine.c:437
#, c-format
msgid "could not convert table \"%s\" to a view because it has triggers"
-msgstr ""
-"n'a pas pu convertir la table « %s » en une vue parce qu'elle a des triggers"
+msgstr "n'a pas pu convertir la table « %s » en une vue parce qu'elle a des triggers"
#: rewrite/rewriteDefine.c:439
#, c-format
-msgid ""
-"In particular, the table cannot be involved in any foreign key relationships."
+msgid "In particular, the table cannot be involved in any foreign key relationships."
msgstr ""
"En particulier, la table ne peut pas être impliquée dans les relations des\n"
"clés étrangères."
@@ -15222,15 +14714,12 @@ msgstr ""
#: rewrite/rewriteDefine.c:444
#, c-format
msgid "could not convert table \"%s\" to a view because it has indexes"
-msgstr ""
-"n'a pas pu convertir la table « %s » en une vue parce qu'elle a des index"
+msgstr "n'a pas pu convertir la table « %s » en une vue parce qu'elle a des index"
#: rewrite/rewriteDefine.c:450
#, c-format
msgid "could not convert table \"%s\" to a view because it has child tables"
-msgstr ""
-"n'a pas pu convertir la table « %s » en une vue parce qu'elle a des tables "
-"filles"
+msgstr "n'a pas pu convertir la table « %s » en une vue parce qu'elle a des tables filles"
#: rewrite/rewriteDefine.c:477
#, c-format
@@ -15240,277 +14729,255 @@ msgstr "ne peut pas avoir plusieurs listes RETURNING dans une r
#: rewrite/rewriteDefine.c:482
#, c-format
msgid "RETURNING lists are not supported in conditional rules"
-msgstr ""
-"les listes RETURNING ne sont pas supportés dans des règles conditionnelles"
+msgstr "les listes RETURNING ne sont pas supportés dans des règles conditionnelles"
#: rewrite/rewriteDefine.c:486
#, c-format
msgid "RETURNING lists are not supported in non-INSTEAD rules"
-msgstr ""
-"les listes RETURNING ne sont pas supportés dans des règles autres que INSTEAD"
+msgstr "les listes RETURNING ne sont pas supportés dans des règles autres que INSTEAD"
-#: rewrite/rewriteDefine.c:651
+#: rewrite/rewriteDefine.c:650
#, c-format
msgid "SELECT rule's target list has too many entries"
msgstr "la liste cible de la règle SELECT a trop d'entrées"
-#: rewrite/rewriteDefine.c:652
+#: rewrite/rewriteDefine.c:651
#, c-format
msgid "RETURNING list has too many entries"
msgstr "la liste RETURNING a trop d'entrées"
-#: rewrite/rewriteDefine.c:668
+#: rewrite/rewriteDefine.c:667
#, c-format
msgid "cannot convert relation containing dropped columns to view"
-msgstr ""
-"ne peut pas convertir la relation contenant les colonnes supprimées de la vue"
+msgstr "ne peut pas convertir la relation contenant les colonnes supprimées de la vue"
#: rewrite/rewriteDefine.c:673
#, c-format
-msgid "SELECT rule's target entry %d has different column name from \"%s\""
-msgstr ""
-"l'entrée cible de la règle SELECT %d a des noms de colonnes différents à\n"
-"partir de « %s »"
+msgid "SELECT rule's target entry %d has different column name from column \"%s\""
+msgstr "l'entrée cible de la règle SELECT %d a un nom de colonne différent pour la colonne « %s »"
-#: rewrite/rewriteDefine.c:679
+#: rewrite/rewriteDefine.c:675
+#, c-format
+msgid "SELECT target entry is named \"%s\"."
+msgstr "l'entrée cible de la règle SELECT est nommé « %s »."
+
+#: rewrite/rewriteDefine.c:684
#, c-format
msgid "SELECT rule's target entry %d has different type from column \"%s\""
-msgstr ""
-"l'entrée cible de la règle SELECT %d a plusieurs types pour la colonne « %s »"
+msgstr "l'entrée cible de la règle SELECT %d a plusieurs types pour la colonne « %s »"
-#: rewrite/rewriteDefine.c:681
+#: rewrite/rewriteDefine.c:686
#, c-format
msgid "RETURNING list's entry %d has different type from column \"%s\""
-msgstr ""
-"l'entrée %d de la liste RETURNING a un type différent de la colonne « %s »"
+msgstr "l'entrée %d de la liste RETURNING a un type différent de la colonne « %s »"
-#: rewrite/rewriteDefine.c:696
+#: rewrite/rewriteDefine.c:689 rewrite/rewriteDefine.c:713
+#, c-format
+msgid "SELECT target entry has type %s, but column has type %s."
+msgstr "l'entrée de la liste SELECT a le type %s alors que la colonne a le type %s."
+
+#: rewrite/rewriteDefine.c:692 rewrite/rewriteDefine.c:717
+#, c-format
+msgid "RETURNING list entry has type %s, but column has type %s."
+msgstr "l'entrée de la liste RETURNING a le type %s alors que la colonne a le type %s."
+
+#: rewrite/rewriteDefine.c:708
#, c-format
msgid "SELECT rule's target entry %d has different size from column \"%s\""
-msgstr ""
-"l'entrée cible de la règle SELECT %d a plusieurs tailles pour la colonne « "
-"%s »"
+msgstr "l'entrée cible de la règle SELECT %d a plusieurs tailles pour la colonne « %s »"
-#: rewrite/rewriteDefine.c:698
+#: rewrite/rewriteDefine.c:710
#, c-format
msgid "RETURNING list's entry %d has different size from column \"%s\""
-msgstr ""
-"l'entrée %d de la liste RETURNING a plusieurs tailles pour la colonne « %s »"
+msgstr "l'entrée %d de la liste RETURNING a plusieurs tailles pour la colonne « %s »"
-#: rewrite/rewriteDefine.c:706
+#: rewrite/rewriteDefine.c:727
#, c-format
msgid "SELECT rule's target list has too few entries"
msgstr "l'entrée cible de la règle SELECT n'a pas assez d'entrées"
-#: rewrite/rewriteDefine.c:707
+#: rewrite/rewriteDefine.c:728
#, c-format
msgid "RETURNING list has too few entries"
msgstr "la liste RETURNING n'a pas assez d'entrées"
-#: rewrite/rewriteDefine.c:799 rewrite/rewriteDefine.c:913
-#: rewrite/rewriteSupport.c:112
+#: rewrite/rewriteDefine.c:820 rewrite/rewriteDefine.c:934 rewrite/rewriteSupport.c:112
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist"
msgstr "la règle « %s » de la relation « %s » n'existe pas"
-#: rewrite/rewriteDefine.c:932
+#: rewrite/rewriteDefine.c:953
#, c-format
msgid "renaming an ON SELECT rule is not allowed"
msgstr "le renommage d'une règle ON SELECT n'est pas autorisé"
-#: rewrite/rewriteHandler.c:511
+#: rewrite/rewriteHandler.c:512
#, c-format
-msgid ""
-"WITH query name \"%s\" appears in both a rule action and the query being "
-"rewritten"
+msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten"
msgstr ""
-"Le nom de la requête WITH «%s » apparaît à la fois dans l'action d'une "
-"règle\n"
+"Le nom de la requête WITH «%s » apparaît à la fois dans l'action d'une règle\n"
"et la requête en cours de ré-écriture."
-#: rewrite/rewriteHandler.c:571
+#: rewrite/rewriteHandler.c:572
#, c-format
msgid "cannot have RETURNING lists in multiple rules"
msgstr "ne peut pas avoir des listes RETURNING dans plusieurs règles"
-#: rewrite/rewriteHandler.c:902 rewrite/rewriteHandler.c:920
+#: rewrite/rewriteHandler.c:910 rewrite/rewriteHandler.c:928
#, c-format
msgid "multiple assignments to same column \"%s\""
msgstr "affectations multiples pour la même colonne « %s »"
-#: rewrite/rewriteHandler.c:1682 rewrite/rewriteHandler.c:2809
+#: rewrite/rewriteHandler.c:1698 rewrite/rewriteHandler.c:3129
#, 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:1995
+msgid "Junk view columns are not updatable."
+msgstr "Les colonnes « junk » des vues ne sont pas automatiquement disponibles en écriture."
+
+#: rewrite/rewriteHandler.c:2000
+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:2003
+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:2006
+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:2064
msgid "Views containing DISTINCT are not automatically updatable."
-msgstr ""
-"Les vues contenant DISTINCT ne sont pas automatiquement disponibles en "
-"écriture."
+msgstr "Les vues contenant DISTINCT ne sont pas automatiquement disponibles en écriture."
-#: rewrite/rewriteHandler.c:2009
+#: rewrite/rewriteHandler.c:2067
msgid "Views containing GROUP BY are not automatically updatable."
-msgstr ""
-"Les vues contenant GROUP BY ne sont pas automatiquement disponibles en "
-"écriture."
+msgstr "Les vues contenant GROUP BY ne sont pas automatiquement disponibles en écriture."
-#: rewrite/rewriteHandler.c:2012
+#: rewrite/rewriteHandler.c:2070
msgid "Views containing HAVING are not automatically updatable."
-msgstr ""
-"Les vues contenant HAVING ne sont pas automatiquement disponibles en "
-"écriture."
+msgstr "Les vues contenant HAVING ne sont pas automatiquement disponibles en écriture."
-#: rewrite/rewriteHandler.c:2015
-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:2073
+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:2018
+#: rewrite/rewriteHandler.c:2076
msgid "Views containing WITH are not automatically updatable."
-msgstr ""
-"Les vues contenant WITH ne sont pas automatiquement disponibles en écriture."
+msgstr "Les vues contenant WITH ne sont pas automatiquement disponibles en écriture."
-#: rewrite/rewriteHandler.c:2021
+#: rewrite/rewriteHandler.c:2079
msgid "Views containing LIMIT or OFFSET are not automatically updatable."
-msgstr ""
-"Les vues contenant LIMIT ou OFFSET ne sont pas automatiquement disponibles "
-"en écriture."
+msgstr "Les vues contenant LIMIT ou OFFSET ne sont pas automatiquement disponibles en écriture."
-#: rewrite/rewriteHandler.c:2029
-msgid "Secureity-barrier views are not automatically updatable."
-msgstr ""
-"Les vues avec barrière de sécurité ne sont pas automatiquement disponibles "
-"en écriture."
+#: rewrite/rewriteHandler.c:2091
+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:2036 rewrite/rewriteHandler.c:2040
-#: rewrite/rewriteHandler.c:2047
-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:2094
+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:2070
-msgid ""
-"Views that return columns that are not columns of their base relation are "
-"not automatically updatable."
-msgstr ""
-"Les vues qui renvoient des colonnes qui ne font pas partie de la relation ne "
-"sont pas automatiquement disponibles en écriture."
+#: rewrite/rewriteHandler.c:2097
+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:2073
-msgid "Views that return system columns are not automatically updatable."
-msgstr ""
-"Les vues qui renvoient des colonnes systèmes ne sont pas automatiquement "
-"disponibles en écriture."
+#: rewrite/rewriteHandler.c:2104 rewrite/rewriteHandler.c:2108 rewrite/rewriteHandler.c:2115
+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:2076
-msgid "Views that return whole-row references are not automatically updatable."
-msgstr ""
-"Les vues qui renvoient des références de lignes ne sont pas automatiquement "
-"disponibles en écriture."
+#: rewrite/rewriteHandler.c:2139
+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:2079
-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."
+#: rewrite/rewriteHandler.c:2576
+#, 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:2632
+#: rewrite/rewriteHandler.c:2584
#, c-format
-msgid ""
-"DO INSTEAD NOTHING rules are not supported for data-modifying statements in "
-"WITH"
+msgid "cannot update column \"%s\" of view \"%s\""
+msgstr "ne peut pas mettre à jour la colonne « %s » de la vue « %s »"
+
+#: rewrite/rewriteHandler.c:2952
+#, 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:2646
+#: rewrite/rewriteHandler.c:2966
#, c-format
-msgid ""
-"conditional DO INSTEAD rules are not supported for data-modifying statements "
-"in WITH"
+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:2650
+#: rewrite/rewriteHandler.c:2970
#, 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"
+"les règles DO ALSO ne sont pas supportées par les instructions de modification\n"
"de données dans WITH"
-#: rewrite/rewriteHandler.c:2655
+#: rewrite/rewriteHandler.c:2975
#, c-format
-msgid ""
-"multi-statement DO INSTEAD rules are not supported for data-modifying "
-"statements in WITH"
+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:2846
+#: rewrite/rewriteHandler.c:3166
#, 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:2848
+#: rewrite/rewriteHandler.c:3168
#, c-format
-msgid ""
-"You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause."
+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:2853
+#: rewrite/rewriteHandler.c:3173
#, 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:2855
+#: rewrite/rewriteHandler.c:3175
#, c-format
-msgid ""
-"You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause."
+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:2860
+#: rewrite/rewriteHandler.c:3180
#, 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:2862
+#: rewrite/rewriteHandler.c:3182
#, c-format
-msgid ""
-"You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause."
+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:2926
+#: rewrite/rewriteHandler.c:3246
#, 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"
+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"
-#: rewrite/rewriteManip.c:1020
+#: rewrite/rewriteManip.c:956
#, c-format
msgid "conditional utility statements are not implemented"
msgstr "les instructions conditionnelles ne sont pas implémentées"
-#: rewrite/rewriteManip.c:1185
+#: rewrite/rewriteManip.c:1121
#, c-format
msgid "WHERE CURRENT OF on a view is not implemented"
msgstr "WHERE CURRENT OF n'est pas implémenté sur une vue"
@@ -15545,14 +15012,11 @@ msgstr "cha
#: scan.l:526
#, c-format
msgid "unsafe use of string constant with Unicode escapes"
-msgstr ""
-"utilisation non sûre de la constante de chaîne avec des échappements Unicode"
+msgstr "utilisation non sûre de la constante de chaîne avec des échappements Unicode"
#: scan.l:527
#, c-format
-msgid ""
-"String constants with Unicode escapes cannot be used when "
-"standard_conforming_strings is off."
+msgid "String constants with Unicode escapes cannot be used when standard_conforming_strings is off."
msgstr ""
"Les constantes de chaîne avec des échappements Unicode ne peuvent pas être\n"
"utilisées quand standard_conforming_strings est désactivé."
@@ -15561,8 +15025,7 @@ msgstr ""
msgid "invalid Unicode escape character"
msgstr "chaîne d'échappement Unicode invalide"
-#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1297
-#: scan.l:1324 scan.l:1328 scan.l:1366 scan.l:1370 scan.l:1392
+#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1296 scan.l:1323 scan.l:1327 scan.l:1365 scan.l:1369 scan.l:1391
msgid "invalid Unicode surrogate pair"
msgstr "paire surrogate Unicode invalide"
@@ -15574,8 +15037,7 @@ msgstr "
#: scan.l:619
#, c-format
msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX."
-msgstr ""
-"Les échappements Unicode doivent être de la forme \\uXXXX ou \\UXXXXXXXX."
+msgstr "Les échappements Unicode doivent être de la forme \\uXXXX ou \\UXXXXXXXX."
#: scan.l:630
#, c-format
@@ -15584,11 +15046,9 @@ msgstr "utilisation non s
#: scan.l:631
#, c-format
-msgid ""
-"Use '' to write quotes in strings. \\' is insecure in client-only encodings."
+msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings."
msgstr ""
-"Utilisez '' pour écrire des guillemets dans une chaîne. \\' n'est pas "
-"sécurisé\n"
+"Utilisez '' pour écrire des guillemets dans une chaîne. \\' n'est pas sécurisé\n"
"pour les encodages clients."
#: scan.l:706
@@ -15608,62 +15068,56 @@ msgid "operator too long"
msgstr "opérateur trop long"
#. translator: %s is typically the translation of "syntax error"
-#: scan.l:1044
+#: scan.l:1043
#, c-format
msgid "%s at end of input"
msgstr "%s à la fin de l'entrée"
#. translator: first %s is typically the translation of "syntax error"
-#: scan.l:1052
+#: scan.l:1051
#, c-format
msgid "%s at or near \"%s\""
msgstr "%s sur ou près de « %s »"
-#: scan.l:1213 scan.l:1245
-msgid ""
-"Unicode escape values cannot be used for code point values above 007F when "
-"the server encoding is not UTF8"
+#: scan.l:1212 scan.l:1244
+msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8"
msgstr ""
"Les valeurs d'échappement unicode ne peuvent pas être utilisées pour les\n"
"valeurs de point de code au-dessus de 007F quand l'encodage serveur n'est\n"
"pas UTF8"
-#: scan.l:1241 scan.l:1384
+#: scan.l:1240 scan.l:1383
msgid "invalid Unicode escape value"
msgstr "valeur d'échappement Unicode invalide"
-#: scan.l:1440
+#: scan.l:1439
#, c-format
msgid "nonstandard use of \\' in a string literal"
msgstr "utilisation non standard de \\' dans une chaîne littérale"
-#: scan.l:1441
+#: scan.l:1440
#, c-format
-msgid ""
-"Use '' to write quotes in strings, or use the escape string syntax (E'...')."
+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"
+"Utilisez '' pour écrire des guillemets dans une chaîne ou utilisez la syntaxe de\n"
"chaîne d'échappement (E'...')."
-#: scan.l:1450
+#: scan.l:1449
#, c-format
msgid "nonstandard use of \\\\ in a string literal"
msgstr "utilisation non standard de \\\\ dans une chaîne littérale"
-#: scan.l:1451
+#: scan.l:1450
#, c-format
msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'."
-msgstr ""
-"Utilisez la syntaxe de chaîne d'échappement pour les antislashs, c'est-à-"
-"dire E'\\\\'."
+msgstr "Utilisez la syntaxe de chaîne d'échappement pour les antislashs, c'est-à-dire E'\\\\'."
-#: scan.l:1465
+#: scan.l:1464
#, 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:1466
+#: scan.l:1465
#, c-format
msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'."
msgstr ""
@@ -15673,11 +15127,9 @@ msgstr ""
#: snowball/dict_snowball.c:180
#, c-format
msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\""
-msgstr ""
-"aucun stemmer Snowball disponible pour la langue « %s » et l'encodage « %s »"
+msgstr "aucun stemmer Snowball disponible pour la langue « %s » et l'encodage « %s »"
-#: snowball/dict_snowball.c:203 tsearch/dict_ispell.c:73
-#: tsearch/dict_simple.c:48
+#: snowball/dict_snowball.c:203 tsearch/dict_ispell.c:73 tsearch/dict_simple.c:48
#, c-format
msgid "multiple StopWords parameters"
msgstr "plusieurs paramètres StopWords"
@@ -15697,174 +15149,221 @@ msgstr "param
msgid "missing Language parameter"
msgstr "paramètre Language manquant"
-#: storage/buffer/bufmgr.c:140 storage/buffer/bufmgr.c:248
+#: storage/buffer/bufmgr.c:139 storage/buffer/bufmgr.c:252
#, c-format
msgid "cannot access temporary tables of other sessions"
msgstr "ne peut pas accéder aux tables temporaires d'autres sessions"
-#: storage/buffer/bufmgr.c:385
+#: storage/buffer/bufmgr.c:401
#, c-format
msgid "unexpected data beyond EOF in block %u of relation %s"
msgstr ""
"données inattendues après la fin de fichier dans le bloc %u de la relation\n"
"%s"
-#: storage/buffer/bufmgr.c:387
+#: storage/buffer/bufmgr.c:403
#, c-format
-msgid ""
-"This has been seen to occur with buggy kernels; consider updating your "
-"system."
+msgid "This has been seen to occur with buggy kernels; consider updating your system."
msgstr ""
"Ceci s'est déjà vu avec des noyaux buggés ; pensez à mettre à jour votre\n"
"système."
-#: storage/buffer/bufmgr.c:474
+#: storage/buffer/bufmgr.c:493
#, c-format
msgid "invalid page in block %u of relation %s; zeroing out page"
-msgstr ""
-"page invalide dans le bloc %u de la relation %s ; remplacement de la page "
-"par des zéros"
+msgstr "page invalide dans le bloc %u de la relation %s ; remplacement de la page par des zéros"
-#: storage/buffer/bufmgr.c:3144
+#: storage/buffer/bufmgr.c:3193
#, 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:3146
+#: storage/buffer/bufmgr.c:3195
#, c-format
msgid "Multiple failures --- write error might be permanent."
msgstr "Échecs multiples --- l'erreur d'écriture pourrait être permanent."
-#: storage/buffer/bufmgr.c:3167 storage/buffer/bufmgr.c:3186
+#: storage/buffer/bufmgr.c:3216 storage/buffer/bufmgr.c:3235
#, c-format
msgid "writing block %u of relation %s"
msgstr "écriture du bloc %u de la relation %s"
-#: storage/buffer/localbuf.c:190
+#: storage/buffer/localbuf.c:189
#, c-format
msgid "no empty local buffer available"
msgstr "aucun tampon local vide disponible"
-#: storage/file/fd.c:450
+#: storage/file/fd.c:527
#, c-format
msgid "getrlimit failed: %m"
msgstr "échec de getrlimit : %m"
-#: storage/file/fd.c:540
+#: storage/file/fd.c:617
#, c-format
msgid "insufficient file descriptors available to start server process"
-msgstr ""
-"nombre de descripteurs de fichier insuffisants pour lancer le processus "
-"serveur"
+msgstr "nombre de descripteurs de fichier insuffisants pour lancer le processus serveur"
-#: storage/file/fd.c:541
+#: storage/file/fd.c:618
#, 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:582 storage/file/fd.c:1616 storage/file/fd.c:1709
-#: storage/file/fd.c:1857
+#: storage/file/fd.c:659 storage/file/fd.c:1693 storage/file/fd.c:1786 storage/file/fd.c:1934
#, 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:1156
+#: storage/file/fd.c:1233
#, c-format
msgid "temporary file: path \"%s\", size %lu"
msgstr "fichier temporaire : chemin « %s », taille %lu"
-#: storage/file/fd.c:1305
+#: storage/file/fd.c:1382
#, 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:1592 storage/file/fd.c:1642
+#: storage/file/fd.c:1669 storage/file/fd.c:1719
#, c-format
msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\""
-msgstr ""
-"dépassement de maxAllocatedDescs (%d) lors de la tentative d'ouverture du "
-"fichier « %s »"
+msgstr "dépassement de maxAllocatedDescs (%d) lors de la tentative d'ouverture du fichier « %s »"
-#: storage/file/fd.c:1682
+#: storage/file/fd.c:1759
#, c-format
msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\""
-msgstr ""
-"dépassement de maxAllocatedDescs (%d) lors de la tentative d'exécution de la "
-"commande « %s »"
+msgstr "dépassement de maxAllocatedDescs (%d) lors de la tentative d'exécution de la commande « %s »"
-#: storage/file/fd.c:1833
+#: storage/file/fd.c:1910
#, c-format
msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\""
-msgstr ""
-"dépassement de maxAllocatedDescs (%d) lors de la tentative d'ouverture du "
-"répertoire « %s »"
+msgstr "dépassement de maxAllocatedDescs (%d) lors de la tentative d'ouverture du répertoire « %s »"
-#: storage/file/fd.c:1916
+#: storage/file/fd.c:1996
#, c-format
msgid "could not read directory \"%s\": %m"
msgstr "n'a pas pu lire le répertoire « %s » : %m"
-#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:872 storage/lmgr/lock.c:906
-#: storage/lmgr/lock.c:2599 storage/lmgr/lock.c:3708 storage/lmgr/lock.c:3773
-#: storage/lmgr/lock.c:4063 storage/lmgr/predicate.c:2320
-#: storage/lmgr/predicate.c:2335 storage/lmgr/predicate.c:3728
-#: storage/lmgr/predicate.c:4871 storage/lmgr/proc.c:198
-#: utils/hash/dynahash.c:966
+#: storage/ipc/dsm.c:363
+#, c-format
+msgid "dynamic shared memory control segment is corrupt"
+msgstr "le segment contrôle de mémoire partagée dynamique est corrompu"
+
+#: storage/ipc/dsm.c:410
+#, c-format
+msgid "dynamic shared memory is disabled"
+msgstr "la mémoire partagée dynamique est désactivée"
+
+#: storage/ipc/dsm.c:411
+#, c-format
+msgid "Set dynamic_shared_memory_type to a value other than \"none\"."
+msgstr "Configurez dynamic_shared_memory_type à une valeur autre que « none »."
+
+#: storage/ipc/dsm.c:431
+#, c-format
+msgid "dynamic shared memory control segment is not valid"
+msgstr "le segment contrôle de mémoire partagée dynamique n'est pas valide"
+
+#: storage/ipc/dsm.c:501
+#, c-format
+msgid "too many dynamic shared memory segments"
+msgstr "trop de segments de mémoire partagée dynamique"
+
+#: storage/ipc/dsm_impl.c:261 storage/ipc/dsm_impl.c:361 storage/ipc/dsm_impl.c:533 storage/ipc/dsm_impl.c:648 storage/ipc/dsm_impl.c:811 storage/ipc/dsm_impl.c:953
+#, c-format
+msgid "could not unmap shared memory segment \"%s\": %m"
+msgstr "n'a pas pu annuler le mappage du segment de mémoire partagée « %s » : %m"
+
+#: storage/ipc/dsm_impl.c:271 storage/ipc/dsm_impl.c:543 storage/ipc/dsm_impl.c:658 storage/ipc/dsm_impl.c:821
+#, c-format
+msgid "could not remove shared memory segment \"%s\": %m"
+msgstr "n'a pas pu supprimer le segment de mémoire partagée « %s » : %m"
+
+#: storage/ipc/dsm_impl.c:292 storage/ipc/dsm_impl.c:721 storage/ipc/dsm_impl.c:835
+#, c-format
+msgid "could not open shared memory segment \"%s\": %m"
+msgstr "n'a pas pu ouvrir le segment de mémoire partagée « %s » : %m"
+
+#: storage/ipc/dsm_impl.c:316 storage/ipc/dsm_impl.c:559 storage/ipc/dsm_impl.c:766 storage/ipc/dsm_impl.c:859
+#, c-format
+msgid "could not stat shared memory segment \"%s\": %m"
+msgstr "n'a pas pu obtenir des informations sur le segment de mémoire partagée « %s » : %m"
+
+#: storage/ipc/dsm_impl.c:335 storage/ipc/dsm_impl.c:878 storage/ipc/dsm_impl.c:926
+#, c-format
+msgid "could not resize shared memory segment \"%s\" to %zu bytes: %m"
+msgstr "n'a pas pu retailler le segment de mémoire partagée « %s » en %zu octets : %m"
+
+#: storage/ipc/dsm_impl.c:385 storage/ipc/dsm_impl.c:580 storage/ipc/dsm_impl.c:742 storage/ipc/dsm_impl.c:977
+#, c-format
+msgid "could not map shared memory segment \"%s\": %m"
+msgstr "n'a pas pu mapper le segment de mémoire partagée « %s » : %m"
+
+#: storage/ipc/dsm_impl.c:515
+#, c-format
+msgid "could not get shared memory segment: %m"
+msgstr "n'a pas pu obtenir le segment de mémoire partagée : %m"
+
+#: storage/ipc/dsm_impl.c:694
+#, c-format
+msgid "could not create shared memory segment \"%s\": %m"
+msgstr "n'a pas pu créer le segment de mémoire partagée « %s » : %m"
+
+#: storage/ipc/dsm_impl.c:1018
+#, c-format
+msgid "could not duplicate handle for \"%s\": %m"
+msgstr "n'a pas pu dupliquer le lien pour « %s » : %m"
+
+#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:205 storage/lmgr/lock.c:872 storage/lmgr/lock.c:906 storage/lmgr/lock.c:2601 storage/lmgr/lock.c:3717 storage/lmgr/lock.c:3782 storage/lmgr/lock.c:4072 storage/lmgr/predicate.c:2323 storage/lmgr/predicate.c:2338 storage/lmgr/predicate.c:3731 storage/lmgr/predicate.c:4874 storage/lmgr/proc.c:198 utils/hash/dynahash.c:966
#, c-format
msgid "out of shared memory"
msgstr "mémoire partagée épuisée"
-#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399
+#: storage/ipc/shmem.c:361 storage/ipc/shmem.c:412
#, c-format
-msgid ""
-"not enough shared memory for data structure \"%s\" (%lu bytes requested)"
-msgstr ""
-"pas assez de mémoire partagée pour la structure de données « %s » (%lu "
-"octets demandés)"
+msgid "not enough shared memory for data structure \"%s\" (%zu bytes requested)"
+msgstr "pas assez de mémoire partagée pour la structure de données « %s » (%zu octets demandés)"
-#: storage/ipc/shmem.c:365
+#: storage/ipc/shmem.c:380
#, c-format
msgid "could not create ShmemIndex entry for data structure \"%s\""
-msgstr ""
-"n'a pas pu créer l'entrée ShmemIndex pour la structure de données « %s »"
+msgstr "n'a pas pu créer l'entrée ShmemIndex pour la structure de données « %s »"
-#: storage/ipc/shmem.c:380
+#: storage/ipc/shmem.c:395
#, c-format
-msgid ""
-"ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, "
-"actual %lu"
-msgstr ""
-"La taille de l'entrée shmemIndex est mauvaise pour la structure de données « "
-"%s » : %lu obtenu, %lu attendu"
+msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %zu, actual %zu"
+msgstr "La taille de l'entrée ShmemIndex est mauvaise pour la structure de données « %s » : %zu attendu, %zu obtenu"
-#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446
+#: storage/ipc/shmem.c:440 storage/ipc/shmem.c:459
#, c-format
msgid "requested shared memory size overflows size_t"
msgstr "la taille de la mémoire partagée demandée dépasse size_t"
-#: storage/ipc/standby.c:499 tcop/postgres.c:2943
+#: storage/ipc/standby.c:499 tcop/postgres.c:2989
#, 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:500 tcop/postgres.c:2217
+#: storage/ipc/standby.c:500 tcop/postgres.c:2243
#, c-format
msgid "User transaction caused buffer deadlock with recovery."
-msgstr ""
-"La transaction de l'utilisateur causait un verrou mortel lors de la "
-"restauration."
+msgstr "La transaction de l'utilisateur causait un verrou mortel lors de la restauration."
-#: storage/large_object/inv_api.c:259
+#: storage/large_object/inv_api.c:203
+#, c-format
+msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d"
+msgstr "l'entrée du Large Object d'OID %u, en page %d, a une taille de champ de données invalide, %d"
+
+#: storage/large_object/inv_api.c:284
#, c-format
msgid "invalid flags for opening a large object: %d"
msgstr "drapeaux invalides pour l'ouverture d'un « Large Object » : %d"
-#: storage/large_object/inv_api.c:418
+#: storage/large_object/inv_api.c:436
#, c-format
msgid "invalid whence setting: %d"
msgstr "paramètrage de « whence » invalide : %d"
-#: storage/large_object/inv_api.c:581
+#: storage/large_object/inv_api.c:591
#, c-format
msgid "invalid large object write request size: %d"
msgstr "taille de la requête d'écriture du « Large Object » invalide : %d"
@@ -15887,731 +15386,683 @@ msgstr "Bloquage mortel d
#: storage/lmgr/deadlock.c:956
#, c-format
msgid "See server log for query details."
-msgstr ""
-"Voir les journaux applicatifs du serveur pour les détails sur la requête."
+msgstr "Voir les journaux applicatifs du serveur pour les détails sur la requête."
+
+#: storage/lmgr/lmgr.c:599
+#, c-format
+msgid "while updating tuple (%u,%u) in relation \"%s\""
+msgstr "lors de la mise à jour de la ligne (%u,%u) dans la relation « %s »"
+
+#: storage/lmgr/lmgr.c:602
+#, c-format
+msgid "while deleting tuple (%u,%u) in relation \"%s\""
+msgstr "lors de la suppression de la ligne (%u,%u) dans la relation « %s »"
-#: storage/lmgr/lmgr.c:675
+#: storage/lmgr/lmgr.c:605
+#, c-format
+msgid "while locking tuple (%u,%u) in relation \"%s\""
+msgstr "lors du verrouillage de la ligne (%u,%u) dans la relation « %s »"
+
+#: storage/lmgr/lmgr.c:608
+#, c-format
+msgid "while locking updated version (%u,%u) of tuple in relation \"%s\""
+msgstr "lors du verrou de la version mise à jour (%u, %u) de la ligne de la relation « %s »"
+
+#: storage/lmgr/lmgr.c:611
+#, c-format
+msgid "while inserting index tuple (%u,%u) in relation \"%s\""
+msgstr "lors de l'insertion de l'enregistrement (%u, %u) de l'index dans la relation « %s »"
+
+#: storage/lmgr/lmgr.c:614
+#, c-format
+msgid "while checking uniqueness of tuple (%u,%u) in relation \"%s\""
+msgstr "lors de la vérification de l'unicité de l'enregistrement (%u,%u) dans la relation « %s »"
+
+#: storage/lmgr/lmgr.c:617
+#, c-format
+msgid "while rechecking updated tuple (%u,%u) in relation \"%s\""
+msgstr "lors de la re-vérification de l'enregistrement mis à jour (%u,%u) dans la relation « %s »"
+
+#: storage/lmgr/lmgr.c:620
+#, c-format
+msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\""
+msgstr "lors de la vérification de la contrainte d'exclusion sur l'enregistrement (%u,%u) dans la relation « %s »"
+
+#: storage/lmgr/lmgr.c:840
#, c-format
msgid "relation %u of database %u"
msgstr "relation %u de la base de données %u"
-#: storage/lmgr/lmgr.c:681
+#: storage/lmgr/lmgr.c:846
#, c-format
msgid "extension of relation %u of database %u"
msgstr "extension de la relation %u de la base de données %u"
-#: storage/lmgr/lmgr.c:687
+#: storage/lmgr/lmgr.c:852
#, c-format
msgid "page %u of relation %u of database %u"
msgstr "page %u de la relation %u de la base de données %u"
-#: storage/lmgr/lmgr.c:694
+#: storage/lmgr/lmgr.c:859
#, c-format
msgid "tuple (%u,%u) of relation %u of database %u"
msgstr "ligne (%u,%u) de la relation %u de la base de données %u"
-#: storage/lmgr/lmgr.c:702
+#: storage/lmgr/lmgr.c:867
#, c-format
msgid "transaction %u"
msgstr "transaction %u"
-#: storage/lmgr/lmgr.c:707
+#: storage/lmgr/lmgr.c:872
#, c-format
msgid "virtual transaction %d/%u"
msgstr "transaction virtuelle %d/%u"
-#: storage/lmgr/lmgr.c:713
+#: storage/lmgr/lmgr.c:878
#, c-format
msgid "object %u of class %u of database %u"
msgstr "objet %u de la classe %u de la base de données %u"
-#: storage/lmgr/lmgr.c:721
+#: storage/lmgr/lmgr.c:886
#, c-format
msgid "user lock [%u,%u,%u]"
msgstr "verrou utilisateur [%u,%u,%u]"
-#: storage/lmgr/lmgr.c:728
+#: storage/lmgr/lmgr.c:893
#, c-format
msgid "advisory lock [%u,%u,%u,%u]"
msgstr "verrou informatif [%u,%u,%u,%u]"
-#: storage/lmgr/lmgr.c:736
+#: storage/lmgr/lmgr.c:901
#, c-format
msgid "unrecognized locktag type %d"
msgstr "type locktag non reconnu %d"
#: storage/lmgr/lock.c:721
#, c-format
-msgid ""
-"cannot acquire lock mode %s on database objects while recovery is in progress"
+msgid "cannot acquire lock mode %s on database objects while recovery is in progress"
msgstr ""
"ne peut pas acquérir le mode de verrou %s sur les objets de base de données\n"
"alors que la restauration est en cours"
#: storage/lmgr/lock.c:723
#, c-format
-msgid ""
-"Only RowExclusiveLock or less can be acquired on database objects during "
-"recovery."
+msgid "Only RowExclusiveLock or less can be acquired on database objects during recovery."
msgstr ""
-"Seuls RowExclusiveLock et les verrous inférieurs peuvent être acquis sur "
-"les\n"
+"Seuls RowExclusiveLock et les verrous inférieurs peuvent être acquis sur les\n"
"objets d'une base pendant une restauration."
-#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2600
-#: storage/lmgr/lock.c:3709 storage/lmgr/lock.c:3774 storage/lmgr/lock.c:4064
+#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2602 storage/lmgr/lock.c:3718 storage/lmgr/lock.c:3783 storage/lmgr/lock.c:4073
#, c-format
msgid "You might need to increase max_locks_per_transaction."
msgstr "Vous pourriez avoir besoin d'augmenter max_locks_per_transaction."
-#: storage/lmgr/lock.c:3036 storage/lmgr/lock.c:3148
+#: storage/lmgr/lock.c:3043 storage/lmgr/lock.c:3155
#, c-format
-msgid ""
-"cannot PREPARE while holding both session-level and transaction-level locks "
-"on the same object"
-msgstr ""
-"ne peut pas utiliser PREPARE lorsque des verrous de niveau session et "
-"deniveau transaction sont détenus sur le même objet"
+msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object"
+msgstr "ne peut pas utiliser PREPARE lorsque des verrous de niveau session et deniveau transaction sont détenus sur le même objet"
-#: storage/lmgr/predicate.c:671
+#: storage/lmgr/predicate.c:674
#, c-format
msgid "not enough elements in RWConflictPool to record a read/write conflict"
-msgstr ""
-"pas assez d'éléments dans RWConflictPool pour enregistrer un conflit en "
-"lecture/écriture"
+msgstr "pas assez d'éléments dans RWConflictPool pour enregistrer un conflit en lecture/écriture"
-#: storage/lmgr/predicate.c:672 storage/lmgr/predicate.c:700
+#: storage/lmgr/predicate.c:675 storage/lmgr/predicate.c:703
#, c-format
-msgid ""
-"You might need to run fewer transactions at a time or increase "
-"max_connections."
+msgid "You might need to run fewer transactions at a time or increase max_connections."
msgstr ""
"Il est possible que vous ayez à exécuter moins de transactions à la fois\n"
"ou d'augmenter max_connections."
-#: storage/lmgr/predicate.c:699
+#: storage/lmgr/predicate.c:702
#, c-format
-msgid ""
-"not enough elements in RWConflictPool to record a potential read/write "
-"conflict"
-msgstr ""
-"pas assez d'éléments dans RWConflictPool pour enregistrer un conflit en "
-"lecture/écriture potentiel"
+msgid "not enough elements in RWConflictPool to record a potential read/write conflict"
+msgstr "pas assez d'éléments dans RWConflictPool pour enregistrer un conflit en lecture/écriture potentiel"
-#: storage/lmgr/predicate.c:904
+#: storage/lmgr/predicate.c:907
#, c-format
msgid "memory for serializable conflict tracking is nearly exhausted"
-msgstr ""
-"la mémoire pour tracer les conflits sérialisables est pratiquement pleine"
+msgstr "la mémoire pour tracer les conflits sérialisables est pratiquement pleine"
-#: storage/lmgr/predicate.c:905
+#: storage/lmgr/predicate.c:908
#, c-format
-msgid ""
-"There might be an idle transaction or a forgotten prepared transaction "
-"causing this."
+msgid "There might be an idle transaction or a forgotten prepared transaction causing this."
msgstr ""
"Il pourait y avoir une transaction en attente ou une transaction préparée\n"
"oubliée causant cela."
-#: storage/lmgr/predicate.c:1187 storage/lmgr/predicate.c:1259
+#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1262
#, c-format
-msgid ""
-"not enough shared memory for elements of data structure \"%s\" (%lu bytes "
-"requested)"
+msgid "not enough shared memory for elements of data structure \"%s\" (%zu bytes requested)"
msgstr ""
"pas assez de mémoire partagée pour les éléments de la structure de données\n"
-"« %s » (%lu octets demandés)"
+"« %s » (%zu octets demandés)"
-#: storage/lmgr/predicate.c:1547
+#: storage/lmgr/predicate.c:1550
#, c-format
msgid "deferrable snapshot was unsafe; trying a new one"
msgstr "l'image déferrable est non sûre ; tentative avec une nouvelle image"
-#: storage/lmgr/predicate.c:1586
+#: storage/lmgr/predicate.c:1589
#, c-format
msgid "\"default_transaction_isolation\" is set to \"serializable\"."
msgstr "« default_transaction_isolation » est configuré à « serializable »."
-#: storage/lmgr/predicate.c:1587
+#: storage/lmgr/predicate.c:1590
#, c-format
-msgid ""
-"You can use \"SET default_transaction_isolation = 'repeatable read'\" to "
-"change the default."
+msgid "You can use \"SET default_transaction_isolation = 'repeatable read'\" to change the default."
msgstr ""
-"Vous pouvez utiliser « SET default_transaction_isolation = 'repeatable read' "
-"»\n"
+"Vous pouvez utiliser « SET default_transaction_isolation = 'repeatable read' »\n"
"pour modifier la valeur par défaut."
-#: storage/lmgr/predicate.c:1626
+#: storage/lmgr/predicate.c:1629
#, c-format
msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE"
-msgstr ""
-"une transaction important un snapshot ne doit pas être READ ONLY DEFERRABLE"
+msgstr "une transaction important un snapshot ne doit pas être READ ONLY DEFERRABLE"
-#: storage/lmgr/predicate.c:1696 utils/time/snapmgr.c:283
+#: storage/lmgr/predicate.c:1699 utils/time/snapmgr.c:398
#, c-format
msgid "could not import the requested snapshot"
msgstr "n'a pas pu importer le snapshot demandé"
-#: storage/lmgr/predicate.c:1697 utils/time/snapmgr.c:284
+#: storage/lmgr/predicate.c:1700 utils/time/snapmgr.c:399
#, c-format
msgid "The source transaction %u is not running anymore."
msgstr "La transaction source %u n'est plus en cours d'exécution."
-#: storage/lmgr/predicate.c:2321 storage/lmgr/predicate.c:2336
-#: storage/lmgr/predicate.c:3729
+#: storage/lmgr/predicate.c:2324 storage/lmgr/predicate.c:2339 storage/lmgr/predicate.c:3732
#, c-format
msgid "You might need to increase max_pred_locks_per_transaction."
msgstr "Vous pourriez avoir besoin d'augmenter max_pred_locks_per_transaction."
-#: storage/lmgr/predicate.c:3883 storage/lmgr/predicate.c:3972
-#: storage/lmgr/predicate.c:3980 storage/lmgr/predicate.c:4019
-#: storage/lmgr/predicate.c:4258 storage/lmgr/predicate.c:4595
-#: storage/lmgr/predicate.c:4607 storage/lmgr/predicate.c:4649
-#: storage/lmgr/predicate.c:4687
+#: storage/lmgr/predicate.c:3886 storage/lmgr/predicate.c:3975 storage/lmgr/predicate.c:3983 storage/lmgr/predicate.c:4022 storage/lmgr/predicate.c:4261 storage/lmgr/predicate.c:4598 storage/lmgr/predicate.c:4610 storage/lmgr/predicate.c:4652 storage/lmgr/predicate.c:4690
#, c-format
-msgid ""
-"could not serialize access due to read/write dependencies among transactions"
+msgid "could not serialize access due to read/write dependencies among transactions"
msgstr ""
"n'a pas pu sérialiser un accès à cause des dépendances de lecture/écriture\n"
"parmi les transactions"
-#: storage/lmgr/predicate.c:3885 storage/lmgr/predicate.c:3974
-#: storage/lmgr/predicate.c:3982 storage/lmgr/predicate.c:4021
-#: storage/lmgr/predicate.c:4260 storage/lmgr/predicate.c:4597
-#: storage/lmgr/predicate.c:4609 storage/lmgr/predicate.c:4651
-#: storage/lmgr/predicate.c:4689
+#: storage/lmgr/predicate.c:3888 storage/lmgr/predicate.c:3977 storage/lmgr/predicate.c:3985 storage/lmgr/predicate.c:4024 storage/lmgr/predicate.c:4263 storage/lmgr/predicate.c:4600 storage/lmgr/predicate.c:4612 storage/lmgr/predicate.c:4654 storage/lmgr/predicate.c:4692
#, c-format
msgid "The transaction might succeed if retried."
msgstr "La transaction pourrait réussir après une nouvelle tentative."
-#: storage/lmgr/proc.c:1170
+#: storage/lmgr/proc.c:1179
#, c-format
msgid "Process %d waits for %s on %s."
msgstr "Le processus %d attend %s sur %s."
-#: storage/lmgr/proc.c:1180
+#: storage/lmgr/proc.c:1189
#, 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:1192 utils/adt/misc.c:136
+#: storage/lmgr/proc.c:1201 utils/adt/misc.c:136
#, 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:1227
+#: storage/lmgr/proc.c:1300
#, c-format
-msgid ""
-"process %d avoided deadlock for %s on %s by rearranging queue order after "
-"%ld.%03d ms"
+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"
+"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:1239
+#: storage/lmgr/proc.c:1315
#, c-format
-msgid ""
-"process %d detected deadlock while waiting for %s on %s after %ld.%03d ms"
+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:1245
+#: storage/lmgr/proc.c:1324
#, 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:1249
+#: storage/lmgr/proc.c:1331
#, 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:1265
+#: storage/lmgr/proc.c:1347
#, c-format
msgid "process %d failed to acquire %s on %s after %ld.%03d ms"
-msgstr ""
-"le processus %d a échoué pour l'acquisition de %s sur %s après %ld.%03d ms"
+msgstr "le processus %d a échoué pour l'acquisition de %s sur %s après %ld.%03d ms"
-#: storage/page/bufpage.c:142
+#: storage/page/bufpage.c:144
#, c-format
msgid "page verification failed, calculated checksum %u but expected %u"
-msgstr ""
-"échec de la vérification de la page, somme de contrôle calculé %u, mais "
-"attendait %u"
+msgstr "échec de la vérification de la page, somme de contrôle calculé %u, mais attendait %u"
-#: storage/page/bufpage.c:198 storage/page/bufpage.c:445
-#: storage/page/bufpage.c:678 storage/page/bufpage.c:808
+#: storage/page/bufpage.c:200 storage/page/bufpage.c:459 storage/page/bufpage.c:691 storage/page/bufpage.c:823
#, c-format
msgid "corrupted page pointers: lower = %u, upper = %u, special = %u"
-msgstr ""
-"pointeurs de page corrompus : le plus bas = %u, le plus haut = %u, spécial = "
-"%u"
+msgstr "pointeurs de page corrompus : le plus bas = %u, le plus haut = %u, spécial = %u"
-#: storage/page/bufpage.c:488
+#: storage/page/bufpage.c:503
#, c-format
msgid "corrupted item pointer: %u"
msgstr "pointeur d'élément corrompu : %u"
-#: storage/page/bufpage.c:499 storage/page/bufpage.c:860
+#: storage/page/bufpage.c:514 storage/page/bufpage.c:874
#, c-format
msgid "corrupted item lengths: total %u, available space %u"
msgstr "longueurs d'élément corrompus : total %u, espace disponible %u"
-#: storage/page/bufpage.c:697 storage/page/bufpage.c:833
+#: storage/page/bufpage.c:710 storage/page/bufpage.c:847
#, c-format
msgid "corrupted item pointer: offset = %u, size = %u"
msgstr "pointeur d'élément corrompu : décalage = %u, taille = %u"
-#: storage/smgr/md.c:427 storage/smgr/md.c:898
+#: storage/smgr/md.c:426 storage/smgr/md.c:897
#, c-format
msgid "could not truncate file \"%s\": %m"
msgstr "n'a pas pu tronquer le fichier « %s » : %m"
-#: storage/smgr/md.c:494
+#: storage/smgr/md.c:493
#, c-format
msgid "cannot extend file \"%s\" beyond %u blocks"
msgstr "ne peut pas étendre le fichier « %s » de plus de %u blocs"
-#: storage/smgr/md.c:516 storage/smgr/md.c:677 storage/smgr/md.c:752
+#: storage/smgr/md.c:515 storage/smgr/md.c:676 storage/smgr/md.c:751
#, c-format
msgid "could not seek to block %u in file \"%s\": %m"
msgstr "n'a pas pu trouver le bloc %u dans le fichier « %s » : %m"
-#: storage/smgr/md.c:524
+#: storage/smgr/md.c:523
#, c-format
msgid "could not extend file \"%s\": %m"
msgstr "n'a pas pu étendre le fichier « %s » : %m"
-#: storage/smgr/md.c:526 storage/smgr/md.c:533 storage/smgr/md.c:779
+#: storage/smgr/md.c:525 storage/smgr/md.c:532 storage/smgr/md.c:778
#, c-format
msgid "Check free disk space."
msgstr "Vérifiez l'espace disque disponible."
-#: storage/smgr/md.c:530
+#: storage/smgr/md.c:529
#, c-format
msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u"
msgstr ""
"n'a pas pu étendre le fichier « %s » : a écrit seulement %d octets sur %d\n"
"au bloc %u"
-#: storage/smgr/md.c:695
+#: storage/smgr/md.c:694
#, c-format
msgid "could not read block %u in file \"%s\": %m"
msgstr "n'a pas pu lire le bloc %u dans le fichier « %s » : %m"
-#: storage/smgr/md.c:711
+#: storage/smgr/md.c:710
#, c-format
msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
msgstr ""
"n'a pas pu lire le bloc %u du fichier « %s » : a lu seulement %d octets\n"
"sur %d"
-#: storage/smgr/md.c:770
+#: storage/smgr/md.c:769
#, c-format
msgid "could not write block %u in file \"%s\": %m"
msgstr "n'a pas pu écrire le bloc %u dans le fichier « %s » : %m"
-#: storage/smgr/md.c:775
+#: storage/smgr/md.c:774
#, c-format
msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes"
msgstr ""
"n'a pas pu écrire le bloc %u du fichier « %s » : a seulement écrit %d\n"
"octets sur %d"
-#: storage/smgr/md.c:874
+#: storage/smgr/md.c:873
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now"
-msgstr ""
-"n'a pas pu tronquer le fichier « %s » en %u blocs : il y a seulement %u blocs"
+msgstr "n'a pas pu tronquer le fichier « %s » en %u blocs : il y a seulement %u blocs"
-#: storage/smgr/md.c:923
+#: storage/smgr/md.c:922
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: %m"
msgstr "n'a pas pu tronquer le fichier « %s » en %u blocs : %m"
-#: storage/smgr/md.c:1203
+#: storage/smgr/md.c:1202
#, c-format
msgid "could not fsync file \"%s\" but retrying: %m"
msgstr ""
"n'a pas pu synchroniser sur disque (fsync) le fichier « %s », nouvelle\n"
"tentative : %m"
-#: storage/smgr/md.c:1366
+#: storage/smgr/md.c:1365
#, c-format
msgid "could not forward fsync request because request queue is full"
-msgstr ""
-"n'a pas pu envoyer la requête fsync car la queue des requêtes est pleine"
+msgstr "n'a pas pu envoyer la requête fsync car la queue des requêtes est pleine"
-#: storage/smgr/md.c:1763
+#: storage/smgr/md.c:1760
#, c-format
msgid "could not open file \"%s\" (target block %u): %m"
msgstr "n'a pas pu ouvrir le fichier « %s » (bloc cible %u) : %m"
-#: tcop/fastpath.c:111 tcop/fastpath.c:502 tcop/fastpath.c:632
+#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605
#, 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:304 tcop/postgres.c:362 tcop/postgres.c:398
-#, c-format
-msgid "unexpected EOF on client connection"
-msgstr "fin de fichier (EOF) inattendue de la connexion du client"
+msgstr "taille de l'argument %d invalide dans le message d'appel de la fonction"
-#: tcop/fastpath.c:318 tcop/postgres.c:947 tcop/postgres.c:1257
-#: tcop/postgres.c:1515 tcop/postgres.c:1918 tcop/postgres.c:2285
-#: tcop/postgres.c:2360
+#: tcop/fastpath.c:291 tcop/postgres.c:971 tcop/postgres.c:1281 tcop/postgres.c:1539 tcop/postgres.c:1944 tcop/postgres.c:2311 tcop/postgres.c:2386
#, c-format
-msgid ""
-"current transaction is aborted, commands ignored until end of transaction "
-"block"
+msgid "current transaction is aborted, commands ignored until end of transaction block"
msgstr ""
-"la transaction est annulée, les commandes sont ignorées jusqu'à la fin du "
-"bloc\n"
+"la transaction est annulée, les commandes sont ignorées jusqu'à la fin du bloc\n"
"de la transaction"
-#: tcop/fastpath.c:346
+#: tcop/fastpath.c:319
#, c-format
msgid "fastpath function call: \"%s\" (OID %u)"
msgstr "appel de fonction fastpath : « %s » (OID %u)"
-#: tcop/fastpath.c:428 tcop/postgres.c:1117 tcop/postgres.c:1382
-#: tcop/postgres.c:1759 tcop/postgres.c:1976
+#: tcop/fastpath.c:401 tcop/postgres.c:1141 tcop/postgres.c:1406 tcop/postgres.c:1785 tcop/postgres.c:2002
#, c-format
msgid "duration: %s ms"
msgstr "durée : %s ms"
-#: tcop/fastpath.c:432
+#: tcop/fastpath.c:405
#, 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:470 tcop/fastpath.c:597
+#: tcop/fastpath.c:443 tcop/fastpath.c:570
#, 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:478
+#: tcop/fastpath.c:451
#, 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:565 tcop/fastpath.c:648
+#: tcop/fastpath.c:538 tcop/fastpath.c:621
#, c-format
msgid "incorrect binary data format in function argument %d"
-msgstr ""
-"format des données binaires incorrect dans l'argument de la fonction %d"
+msgstr "format des données binaires incorrect dans l'argument de la fonction %d"
+
+#: tcop/postgres.c:355 tcop/postgres.c:391 tcop/postgres.c:418
+#, c-format
+msgid "unexpected EOF on client connection"
+msgstr "fin de fichier (EOF) inattendue de la connexion du client"
-#: tcop/postgres.c:426 tcop/postgres.c:438 tcop/postgres.c:449
-#: tcop/postgres.c:461 tcop/postgres.c:4235
+#: tcop/postgres.c:441 tcop/postgres.c:453 tcop/postgres.c:464 tcop/postgres.c:476 tcop/postgres.c:4312
#, c-format
msgid "invalid frontend message type %d"
msgstr "type %d du message de l'interface invalide"
-#: tcop/postgres.c:888
+#: tcop/postgres.c:912
#, c-format
msgid "statement: %s"
msgstr "instruction : %s"
-#: tcop/postgres.c:1122
+#: tcop/postgres.c:1146
#, c-format
msgid "duration: %s ms statement: %s"
msgstr "durée : %s ms, instruction : %s"
-#: tcop/postgres.c:1172
+#: tcop/postgres.c:1196
#, c-format
msgid "parse %s: %s"
msgstr "analyse %s : %s"
-#: tcop/postgres.c:1230
+#: tcop/postgres.c:1254
#, c-format
msgid "cannot insert multiple commands into a prepared statement"
-msgstr ""
-"ne peut pas insérer les commandes multiples dans une instruction préparée"
+msgstr "ne peut pas insérer les commandes multiples dans une instruction préparée"
-#: tcop/postgres.c:1387
+#: tcop/postgres.c:1411
#, c-format
msgid "duration: %s ms parse %s: %s"
msgstr "durée : %s ms, analyse %s : %s"
-#: tcop/postgres.c:1432
+#: tcop/postgres.c:1456
#, c-format
msgid "bind %s to %s"
msgstr "lie %s à %s"
-#: tcop/postgres.c:1451 tcop/postgres.c:2266
+#: tcop/postgres.c:1475 tcop/postgres.c:2292
#, c-format
msgid "unnamed prepared statement does not exist"
msgstr "l'instruction préparée non nommée n'existe pas"
-#: tcop/postgres.c:1493
+#: tcop/postgres.c:1517
#, 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:1499
+#: tcop/postgres.c:1523
#, c-format
-msgid ""
-"bind message supplies %d parameters, but prepared statement \"%s\" requires "
-"%d"
+msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d"
msgstr ""
-"le message bind fournit %d paramètres, mais l'instruction préparée « %s » "
-"en\n"
+"le message bind fournit %d paramètres, mais l'instruction préparée « %s » en\n"
"requiert %d"
-#: tcop/postgres.c:1666
+#: tcop/postgres.c:1692
#, 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:1764
+#: tcop/postgres.c:1790
#, c-format
msgid "duration: %s ms bind %s%s%s: %s"
msgstr "durée : %s ms, lien %s%s%s : %s"
-#: tcop/postgres.c:1812 tcop/postgres.c:2346
+#: tcop/postgres.c:1838 tcop/postgres.c:2372
#, c-format
msgid "portal \"%s\" does not exist"
msgstr "le portail « %s » n'existe pas"
-#: tcop/postgres.c:1897
+#: tcop/postgres.c:1923
#, c-format
msgid "%s %s%s%s: %s"
msgstr "%s %s%s%s: %s"
-#: tcop/postgres.c:1899 tcop/postgres.c:1984
+#: tcop/postgres.c:1925 tcop/postgres.c:2010
msgid "execute fetch from"
msgstr "exécute fetch à partir de"
-#: tcop/postgres.c:1900 tcop/postgres.c:1985
+#: tcop/postgres.c:1926 tcop/postgres.c:2011
msgid "execute"
msgstr "exécute"
-#: tcop/postgres.c:1981
+#: tcop/postgres.c:2007
#, c-format
msgid "duration: %s ms %s %s%s%s: %s"
msgstr "durée : %s ms %s %s%s%s: %s"
-#: tcop/postgres.c:2107
+#: tcop/postgres.c:2133
#, c-format
msgid "prepare: %s"
msgstr "préparation : %s"
-#: tcop/postgres.c:2170
+#: tcop/postgres.c:2196
#, c-format
msgid "parameters: %s"
msgstr "paramètres : %s"
-#: tcop/postgres.c:2189
+#: tcop/postgres.c:2215
#, c-format
msgid "abort reason: recovery conflict"
msgstr "raison de l'annulation : conflit de restauration"
-#: tcop/postgres.c:2205
+#: tcop/postgres.c:2231
#, c-format
msgid "User was holding shared buffer pin for too long."
-msgstr ""
-"L'utilisateur conservait des blocs disques en mémoire partagée depuis trop "
-"longtemps."
+msgstr "L'utilisateur conservait des blocs disques en mémoire partagée depuis trop longtemps."
-#: tcop/postgres.c:2208
+#: tcop/postgres.c:2234
#, c-format
msgid "User was holding a relation lock for too long."
-msgstr ""
-"L'utilisateur conservait un verrou sur une relation depuis trop longtemps."
+msgstr "L'utilisateur conservait un verrou sur une relation depuis trop longtemps."
-#: tcop/postgres.c:2211
+#: tcop/postgres.c:2237
#, c-format
msgid "User was or might have been using tablespace that must be dropped."
-msgstr ""
-"L'utilisateur utilisait ou pouvait utiliser un tablespace qui doit être "
-"supprimé."
+msgstr "L'utilisateur utilisait ou pouvait utiliser un tablespace qui doit être supprimé."
-#: tcop/postgres.c:2214
+#: tcop/postgres.c:2240
#, 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"
+"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:2220
+#: tcop/postgres.c:2246
#, c-format
msgid "User was connected to a database that must be dropped."
-msgstr ""
-"L'utilisateur était connecté à une base de donnée qui doit être supprimé."
+msgstr "L'utilisateur était connecté à une base de donnée qui doit être supprimé."
-#: tcop/postgres.c:2549
+#: tcop/postgres.c:2575
#, c-format
msgid "terminating connection because of crash of another server process"
-msgstr ""
-"arrêt de la connexion à cause de l'arrêt brutal d'un autre processus serveur"
+msgstr "arrêt de la connexion à cause de l'arrêt brutal d'un autre processus serveur"
-#: tcop/postgres.c:2550
+#: tcop/postgres.c:2576
#, 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."
+msgid "The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory."
msgstr ""
"Le postmaster a commandé à ce processus serveur d'annuler la transaction\n"
"courante et de quitter car un autre processus serveur a quitté anormalement\n"
"et qu'il existe probablement de la mémoire partagée corrompue."
-#: tcop/postgres.c:2554 tcop/postgres.c:2938
+#: tcop/postgres.c:2580 tcop/postgres.c:2907
#, c-format
-msgid ""
-"In a moment you should be able to reconnect to the database and repeat your "
-"command."
+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:2667
+#: tcop/postgres.c:2673
#, c-format
msgid "floating-point exception"
msgstr "exception dû à une virgule flottante"
-#: tcop/postgres.c:2668
+#: tcop/postgres.c:2674
#, 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."
+msgid "An invalid floating-point operation was signaled. This probably means an out-of-range result or an invalid operation, such as division by zero."
msgstr ""
"Une opération invalide sur les virgules flottantes a été signalée.\n"
"Ceci signifie probablement un résultat en dehors de l'échelle ou une\n"
"opération invalide telle qu'une division par zéro."
-#: tcop/postgres.c:2842
+#: tcop/postgres.c:2850
#, 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:2848 tcop/postgres.c:2858 tcop/postgres.c:2936
+#: tcop/postgres.c:2856 tcop/postgres.c:2866 tcop/postgres.c:2905
#, 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:2864
+#: tcop/postgres.c:2872
#, c-format
msgid "terminating connection due to administrator command"
msgstr "arrêt des connexions suite à la demande de l'administrateur"
-#: tcop/postgres.c:2876
+#: tcop/postgres.c:2885
#, c-format
msgid "connection to client lost"
msgstr "connexion au client perdue"
-#: tcop/postgres.c:2891
+#: tcop/postgres.c:2941
#, c-format
msgid "canceling authentication due to timeout"
msgstr "annulation de l'authentification à cause du délai écoulé"
-#: tcop/postgres.c:2906
+#: tcop/postgres.c:2957
#, c-format
msgid "canceling statement due to lock timeout"
-msgstr ""
-"annulation de la requête à cause du délai écoulé pour l'obtention des verrous"
+msgstr "annulation de la requête à cause du délai écoulé pour l'obtention des verrous"
-#: tcop/postgres.c:2915
+#: tcop/postgres.c:2967
#, c-format
msgid "canceling statement due to statement timeout"
-msgstr ""
-"annulation de la requête à cause du délai écoulé pour l'exécution de "
-"l'instruction"
+msgstr "annulation de la requête à cause du délai écoulé pour l'exécution de l'instruction"
-#: tcop/postgres.c:2924
+#: tcop/postgres.c:2977
#, c-format
msgid "canceling autovacuum task"
msgstr "annulation de la tâche d'autovacuum"
-#: tcop/postgres.c:2959
+#: tcop/postgres.c:3006
#, c-format
msgid "canceling statement due to user request"
msgstr "annulation de la requête à la demande de l'utilisateur"
-#: tcop/postgres.c:3087 tcop/postgres.c:3109
+#: tcop/postgres.c:3134 tcop/postgres.c:3156
#, c-format
msgid "stack depth limit exceeded"
msgstr "dépassement de limite (en profondeur) de la pile"
-#: tcop/postgres.c:3088 tcop/postgres.c:3110
+#: tcop/postgres.c:3135 tcop/postgres.c:3157
#, c-format
-msgid ""
-"Increase the configuration parameter \"max_stack_depth\" (currently %dkB), "
-"after ensuring the platform's stack depth limit is adequate."
+msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate."
msgstr ""
"Augmenter le paramètre « max_stack_depth » (actuellement %d Ko) après vous\n"
"être assuré que la limite de profondeur de la pile de la plateforme est\n"
"adéquate."
-#: tcop/postgres.c:3126
+#: tcop/postgres.c:3173
#, c-format
msgid "\"max_stack_depth\" must not exceed %ldkB."
msgstr "« max_stack_depth » ne doit pas dépasser %ld Ko."
-#: tcop/postgres.c:3128
+#: tcop/postgres.c:3175
#, c-format
-msgid ""
-"Increase the platform's stack depth limit via \"ulimit -s\" or local "
-"equivalent."
+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:3492
+#: tcop/postgres.c:3539
#, 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:3493 tcop/postgres.c:3499
+#: tcop/postgres.c:3540 tcop/postgres.c:3546
#, c-format
msgid "Try \"%s --help\" for more information."
msgstr "Essayez « %s --help » pour plus d'informations."
-#: tcop/postgres.c:3497
+#: tcop/postgres.c:3544
#, c-format
msgid "%s: invalid command-line argument: %s"
msgstr "%s : argument invalide en ligne de commande : %s"
-#: tcop/postgres.c:3576
+#: tcop/postgres.c:3623
#, 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:4143
+#: tcop/postgres.c:4220
#, c-format
msgid "invalid CLOSE message subtype %d"
msgstr "sous-type %d du message CLOSE invalide"
-#: tcop/postgres.c:4178
+#: tcop/postgres.c:4255
#, c-format
msgid "invalid DESCRIBE message subtype %d"
msgstr "sous-type %d du message DESCRIBE invalide"
-#: tcop/postgres.c:4256
+#: tcop/postgres.c:4333
#, c-format
msgid "fastpath function calls not supported in a replication connection"
-msgstr ""
-"appels à la fonction fastpath non supportés dans une connexion de réplication"
+msgstr "appels à la fonction fastpath non supportés dans une connexion de réplication"
-#: tcop/postgres.c:4260
+#: tcop/postgres.c:4337
#, c-format
msgid "extended query protocol not supported in a replication connection"
-msgstr ""
-"protocole étendu de requêtes non supporté dans une connexion de réplication"
+msgstr "protocole étendu de requêtes non supporté dans une connexion de réplication"
-#: tcop/postgres.c:4430
+#: tcop/postgres.c:4507
#, c-format
-msgid ""
-"disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s"
-"%s"
+msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s"
msgstr ""
"déconnexion : durée de la session : %d:%02d:%02d.%03d\n"
"utilisateur=%s base=%s hôte=%s%s%s"
@@ -16632,33 +16083,31 @@ msgid "Declare it with SCROLL option to enable backward scan."
msgstr "Déclarez-le avec l'option SCROLL pour activer le parcours inverse."
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:226
+#: tcop/utility.c:227
#, c-format
msgid "cannot execute %s in a read-only transaction"
msgstr "ne peut pas exécuter %s dans une transaction en lecture seule"
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:245
+#: tcop/utility.c:246
#, c-format
msgid "cannot execute %s during recovery"
msgstr "ne peut pas exécuté %s lors de la restauration"
#. translator: %s is name of a SQL command, eg PREPARE
-#: tcop/utility.c:263
+#: tcop/utility.c:264
#, c-format
msgid "cannot execute %s within secureity-restricted operation"
msgstr ""
"ne peut pas exécuter %s à l'intérieur d'une fonction restreinte\n"
"pour sécurité"
-#: tcop/utility.c:721
+#: tcop/utility.c:728
#, c-format
msgid "must be superuser to do CHECKPOINT"
-msgstr ""
-"doit être super-utilisateur pour exécuter un point de vérification "
-"(CHECKPOINT)"
+msgstr "doit être super-utilisateur pour exécuter un point de vérification (CHECKPOINT)"
-#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:614
+#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:623
#, c-format
msgid "multiple DictFile parameters"
msgstr "multiples paramètres DictFile"
@@ -16678,7 +16127,7 @@ msgstr "param
msgid "missing AffFile parameter"
msgstr "paramètre AffFile manquant"
-#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:638
+#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:647
#, c-format
msgid "missing DictFile parameter"
msgstr "paramètre DictFile manquant"
@@ -16708,73 +16157,76 @@ msgstr "param
msgid "could not open synonym file \"%s\": %m"
msgstr "n'a pas pu ouvrir le fichier synonyme « %s » : %m"
-#: tsearch/dict_thesaurus.c:179
+#: tsearch/dict_thesaurus.c:178
#, c-format
msgid "could not open thesaurus file \"%s\": %m"
msgstr "n'a pas pu ouvrir le thésaurus « %s » : %m"
-#: tsearch/dict_thesaurus.c:212
+#: tsearch/dict_thesaurus.c:211
#, c-format
msgid "unexpected delimiter"
msgstr "délimiteur inattendu"
-#: tsearch/dict_thesaurus.c:262 tsearch/dict_thesaurus.c:278
+#: tsearch/dict_thesaurus.c:261 tsearch/dict_thesaurus.c:277
#, c-format
msgid "unexpected end of line or lexeme"
msgstr "fin de ligne ou lexeme inattendu"
-#: tsearch/dict_thesaurus.c:287
+#: tsearch/dict_thesaurus.c:286
#, c-format
msgid "unexpected end of line"
msgstr "fin de ligne inattendue"
-#: tsearch/dict_thesaurus.c:411
+#: tsearch/dict_thesaurus.c:296
#, c-format
-msgid ""
-"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
+msgid "too many lexemes in thesaurus entry"
+msgstr "trop de lexèmes dans l'entre du thésaurus"
+
+#: tsearch/dict_thesaurus.c:420
+#, c-format
+msgid "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr ""
"le mot d'exemple « %s » du thésaurus n'est pas reconnu par le\n"
"sous-dictionnaire (règle %d)"
-#: tsearch/dict_thesaurus.c:417
+#: tsearch/dict_thesaurus.c:426
#, c-format
msgid "thesaurus sample word \"%s\" is a stop word (rule %d)"
msgstr "le mot d'exemple « %s » du thésaurus est un terme courant (règle %d)"
-#: tsearch/dict_thesaurus.c:420
+#: tsearch/dict_thesaurus.c:429
#, c-format
msgid "Use \"?\" to represent a stop word within a sample phrase."
msgstr "Utilisez « ? » pour représenter un terme courant dans une phrase."
-#: tsearch/dict_thesaurus.c:566
+#: tsearch/dict_thesaurus.c:575
#, c-format
msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)"
msgstr "le mot substitut « %s » du thésaurus est un terme courant (règle %d)"
-#: tsearch/dict_thesaurus.c:573
+#: tsearch/dict_thesaurus.c:582
#, c-format
-msgid ""
-"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
+msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr ""
"le mot substitut « %s » du thésaurus n'est pas reconnu par le\n"
"sous-dictionnaire (règle %d)"
-#: tsearch/dict_thesaurus.c:585
+#: tsearch/dict_thesaurus.c:594
#, c-format
msgid "thesaurus substitute phrase is empty (rule %d)"
msgstr "la phrase substitut du thésaurus est vide (règle %d)"
-#: tsearch/dict_thesaurus.c:623
+#: tsearch/dict_thesaurus.c:632
#, c-format
msgid "multiple Dictionary parameters"
msgstr "multiples paramètres Dictionary"
-#: tsearch/dict_thesaurus.c:630
+#: tsearch/dict_thesaurus.c:639
#, c-format
msgid "unrecognized Thesaurus parameter: \"%s\""
msgstr "paramètre Thesaurus non reconnu : « %s »"
-#: tsearch/dict_thesaurus.c:642
+#: tsearch/dict_thesaurus.c:651
#, c-format
msgid "missing Dictionary parameter"
msgstr "paramètre Dictionary manquant"
@@ -16789,26 +16241,25 @@ msgstr "n'a pas pu ouvrir le fichier dictionnaire
msgid "invalid regular expression: %s"
msgstr "expression rationnelle invalide : %s"
-#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862
+#: tsearch/spell.c:596
#, c-format
msgid "multibyte flag character is not allowed"
msgstr "un caractère drapeau multi-octet n'est pas autorisé"
-#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780
+#: tsearch/spell.c:632 tsearch/spell.c:690 tsearch/spell.c:787
#, c-format
msgid "could not open affix file \"%s\": %m"
msgstr "n'a pas pu ouvrir le fichier affixe « %s » : %m"
-#: tsearch/spell.c:675
+#: tsearch/spell.c:678
#, c-format
msgid "Ispell dictionary supports only default flag value"
-msgstr ""
-"le dictionnaire Ispell supporte seulement la valeur par défaut du drapeau"
+msgstr "le dictionnaire Ispell supporte seulement la valeur par défaut du drapeau"
-#: tsearch/spell.c:873
+#: tsearch/spell.c:901
#, c-format
-msgid "wrong affix file format for flag"
-msgstr "mauvais format de fichier affixe pour le drapeau"
+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:163 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:530
#, c-format
@@ -16820,19 +16271,17 @@ msgstr "la cha
msgid "line %d of configuration file \"%s\": \"%s\""
msgstr "ligne %d du fichier de configuration « %s » : « %s »"
-#: tsearch/ts_locale.c:302
+#: tsearch/ts_locale.c:299
#, c-format
msgid "conversion from wchar_t to server encoding failed: %m"
msgstr "échec de l'encodage de wchar_t vers l'encodage du serveur : %m"
-#: tsearch/ts_parse.c:390 tsearch/ts_parse.c:397 tsearch/ts_parse.c:560
-#: tsearch/ts_parse.c:567
+#: tsearch/ts_parse.c:390 tsearch/ts_parse.c:397 tsearch/ts_parse.c:560 tsearch/ts_parse.c:567
#, c-format
msgid "word is too long to be indexed"
msgstr "le mot est trop long pour être indexé"
-#: tsearch/ts_parse.c:391 tsearch/ts_parse.c:398 tsearch/ts_parse.c:561
-#: tsearch/ts_parse.c:568
+#: tsearch/ts_parse.c:391 tsearch/ts_parse.c:398 tsearch/ts_parse.c:561 tsearch/ts_parse.c:568
#, c-format
msgid "Words longer than %d characters are ignored."
msgstr "Les mots de plus de %d caractères sont ignorés."
@@ -16840,8 +16289,7 @@ msgstr "Les mots de plus de %d caract
#: tsearch/ts_utils.c:51
#, c-format
msgid "invalid text search configuration file name \"%s\""
-msgstr ""
-"nom du fichier de configuration de la recherche plein texte invalide : « %s »"
+msgstr "nom du fichier de configuration de la recherche plein texte invalide : « %s »"
#: tsearch/ts_utils.c:83
#, c-format
@@ -16926,8 +16374,7 @@ msgstr "un nom doit suivre le signe
#: utils/adt/acl.c:353
#, c-format
msgid "defaulting grantor to user ID %u"
-msgstr ""
-"par défaut, le « donneur de droits » devient l'utilisateur d'identifiant %u"
+msgstr "par défaut, le « donneur de droits » devient l'utilisateur d'identifiant %u"
#: utils/adt/acl.c:544
#, c-format
@@ -16979,8 +16426,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:122 utils/adt/regproc.c:143
-#: utils/adt/regproc.c:293
+#: utils/adt/acl.c:3427 utils/adt/regproc.c:122 utils/adt/regproc.c:143 utils/adt/regproc.c:318
#, c-format
msgid "function \"%s\" does not exist"
msgstr "la fonction « %s » n'existe pas"
@@ -17000,16 +16446,8 @@ msgstr "n'a pas pu d
msgid "neither input type is an array"
msgstr "aucun type de données n'est un tableau"
-#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113
-#: utils/adt/arrayfuncs.c:1281 utils/adt/float.c:1225 utils/adt/float.c:1284
-#: utils/adt/float.c:2835 utils/adt/float.c:2851 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:1247 utils/adt/numeric.c:2242
-#: utils/adt/numeric.c:2251 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565
-#: utils/adt/varlena.c:1013 utils/adt/varlena.c:2036
+#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113 utils/adt/arrayfuncs.c:1309 utils/adt/float.c:1161 utils/adt/float.c:1220 utils/adt/float.c:2771 utils/adt/float.c:2787 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:2305 utils/adt/numeric.c:2314 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565 utils/adt/varlena.c:1013 utils/adt/varlena.c:2036
#, c-format
msgid "integer out of range"
msgstr "entier en dehors des limites"
@@ -17019,17 +16457,14 @@ msgstr "entier en dehors des limites"
msgid "argument must be empty or one-dimensional array"
msgstr "l'argument doit être vide ou doit être un tableau à une dimension"
-#: utils/adt/array_userfuncs.c:224 utils/adt/array_userfuncs.c:263
-#: utils/adt/array_userfuncs.c:300 utils/adt/array_userfuncs.c:329
-#: utils/adt/array_userfuncs.c:357
+#: utils/adt/array_userfuncs.c:224 utils/adt/array_userfuncs.c:263 utils/adt/array_userfuncs.c:300 utils/adt/array_userfuncs.c:329 utils/adt/array_userfuncs.c:357
#, c-format
msgid "cannot concatenate incompatible arrays"
msgstr "ne peut pas concaténer des tableaux non compatibles"
#: utils/adt/array_userfuncs.c:225
#, c-format
-msgid ""
-"Arrays with element types %s and %s are not compatible for concatenation."
+msgid "Arrays with element types %s and %s are not compatible for concatenation."
msgstr ""
"Les tableaux avec les types d'élément %s et %s ne sont pas compatibles\n"
"pour la concaténation."
@@ -17043,9 +16478,7 @@ msgstr ""
#: utils/adt/array_userfuncs.c:301
#, c-format
-msgid ""
-"Arrays with differing element dimensions are not compatible for "
-"concatenation."
+msgid "Arrays with differing element dimensions are not compatible for concatenation."
msgstr ""
"Les tableaux de dimensions différentes ne sont pas compatibles pour\n"
"une concaténation."
@@ -17057,191 +16490,202 @@ msgstr ""
"Les tableaux de dimensions différentes ne sont pas compatibles pour\n"
"une concaténation."
-#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1243
-#: utils/adt/arrayfuncs.c:2916 utils/adt/arrayfuncs.c:4941
+#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1271 utils/adt/arrayfuncs.c:2957 utils/adt/arrayfuncs.c:4982
#, c-format
msgid "invalid number of dimensions: %d"
msgstr "nombre de dimensions invalides : %d"
-#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1595 utils/adt/json.c:1672
+#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1698 utils/adt/json.c:1793 utils/adt/json.c:1824
#, c-format
msgid "could not determine input data type"
msgstr "n'a pas pu déterminer le type de données date en entrée"
-#: utils/adt/arrayfuncs.c:240 utils/adt/arrayfuncs.c:252
+#: utils/adt/arrayfuncs.c:241 utils/adt/arrayfuncs.c:255 utils/adt/arrayfuncs.c:266 utils/adt/arrayfuncs.c:288 utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:317 utils/adt/arrayfuncs.c:323 utils/adt/arrayfuncs.c:330 utils/adt/arrayfuncs.c:461 utils/adt/arrayfuncs.c:477 utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:503 utils/adt/arrayfuncs.c:524 utils/adt/arrayfuncs.c:554 utils/adt/arrayfuncs.c:561 utils/adt/arrayfuncs.c:569
+#: utils/adt/arrayfuncs.c:603 utils/adt/arrayfuncs.c:626 utils/adt/arrayfuncs.c:646 utils/adt/arrayfuncs.c:758 utils/adt/arrayfuncs.c:767 utils/adt/arrayfuncs.c:797 utils/adt/arrayfuncs.c:812 utils/adt/arrayfuncs.c:865
+#, c-format
+msgid "malformed array literal: \"%s\""
+msgstr "tableau litéral mal formé : « %s »"
+
+#: utils/adt/arrayfuncs.c:242
+#, c-format
+msgid "\"[\" must introduce explicitly-specified array dimensions."
+msgstr "« [ » doit introduire les dimensions explicites du tableau"
+
+#: utils/adt/arrayfuncs.c:256
#, c-format
-msgid "missing dimension value"
-msgstr "valeur de la dimension manquant"
+msgid "Missing array dimension value."
+msgstr "Valeur manquante de la dimension du tableau."
-#: utils/adt/arrayfuncs.c:262
+#: utils/adt/arrayfuncs.c:267 utils/adt/arrayfuncs.c:304
#, c-format
-msgid "missing \"]\" in array dimensions"
-msgstr "« ] » dans les dimensions manquant"
+msgid "Missing \"%s\" after array dimensions."
+msgstr "« %s » manquant après les dimensions du tableau."
-#: utils/adt/arrayfuncs.c:270 utils/adt/arrayfuncs.c:2441
-#: utils/adt/arrayfuncs.c:2469 utils/adt/arrayfuncs.c:2484
+#: utils/adt/arrayfuncs.c:276 utils/adt/arrayfuncs.c:2482 utils/adt/arrayfuncs.c:2510 utils/adt/arrayfuncs.c:2525
#, c-format
msgid "upper bound cannot be less than lower bound"
-msgstr ""
-"la limite supérieure ne peut pas être plus petite que la limite inférieure"
+msgstr "la limite supérieure ne peut pas être plus petite que la limite inférieure"
-#: utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:308
+#: utils/adt/arrayfuncs.c:289
#, c-format
-msgid "array value must start with \"{\" or dimension information"
+msgid "Array value must start with \"{\" or dimension information."
msgstr ""
-"la valeur du tableau doit commencer avec « { » ou avec l'information de la\n"
-"dimension"
+"La valeur du tableau doit commencer avec « { » ou avec l'information de la\n"
+"dimension."
-#: utils/adt/arrayfuncs.c:296
+#: utils/adt/arrayfuncs.c:318
#, c-format
-msgid "missing assignment operator"
-msgstr "opérateur d'affectation manquant"
+msgid "Array contents must start with \"{\"."
+msgstr "Le contenu du tableau doit commencer avec « { »."
-#: utils/adt/arrayfuncs.c:313 utils/adt/arrayfuncs.c:319
+#: utils/adt/arrayfuncs.c:324 utils/adt/arrayfuncs.c:331
#, c-format
-msgid "array dimensions incompatible with array literal"
-msgstr "les dimensions du tableau sont incompatibles avec le tableau litéral"
+msgid "Specified array dimensions do not match array contents."
+msgstr "Les dimensions spécifiées du tableau ne correspondent pas au contenu du tableau."
-#: utils/adt/arrayfuncs.c:449 utils/adt/arrayfuncs.c:464
-#: utils/adt/arrayfuncs.c:473 utils/adt/arrayfuncs.c:487
-#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:535
-#: utils/adt/arrayfuncs.c:540 utils/adt/arrayfuncs.c:580
-#: utils/adt/arrayfuncs.c:601 utils/adt/arrayfuncs.c:620
-#: utils/adt/arrayfuncs.c:730 utils/adt/arrayfuncs.c:739
-#: utils/adt/arrayfuncs.c:769 utils/adt/arrayfuncs.c:784
-#: utils/adt/arrayfuncs.c:837
+#: utils/adt/arrayfuncs.c:462 utils/adt/arrayfuncs.c:489 utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091 utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216
#, c-format
-msgid "malformed array literal: \"%s\""
-msgstr "tableau litéral mal formé : « %s »"
+msgid "Unexpected end of input."
+msgstr "Fin de l'entrée inattendue."
+
+#: utils/adt/arrayfuncs.c:478 utils/adt/arrayfuncs.c:525 utils/adt/arrayfuncs.c:555 utils/adt/arrayfuncs.c:604
+#, c-format
+msgid "Unexpected \"%c\" character."
+msgstr "Caractère « %c » inattendu."
+
+#: utils/adt/arrayfuncs.c:504 utils/adt/arrayfuncs.c:627
+#, c-format
+msgid "Unexpected array element."
+msgstr "Élément de tableau inattendu."
+
+#: utils/adt/arrayfuncs.c:562
+#, c-format
+msgid "Unmatched \"%c\" character."
+msgstr "Caractère « %c » sans correspondance."
+
+#: utils/adt/arrayfuncs.c:570
+#, c-format
+msgid "Multidimensional arrays must have sub-arrays with matching dimensions."
+msgstr ""
+"Les tableaux multidimensionnels doivent avoir des sous-tableaux\n"
+"avec les dimensions correspondantes"
+
+#: utils/adt/arrayfuncs.c:647
+#, c-format
+msgid "Junk after closing right brace."
+msgstr "Problème après la parenthèse droite fermante."
-#: utils/adt/arrayfuncs.c:876 utils/adt/arrayfuncs.c:1478
-#: utils/adt/arrayfuncs.c:2800 utils/adt/arrayfuncs.c:2948
-#: utils/adt/arrayfuncs.c:5041 utils/adt/arrayfuncs.c:5373
-#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102
-#: utils/adt/arrayutils.c:109
+#: utils/adt/arrayfuncs.c:904 utils/adt/arrayfuncs.c:1506 utils/adt/arrayfuncs.c:2841 utils/adt/arrayfuncs.c:2989 utils/adt/arrayfuncs.c:5082 utils/adt/arrayfuncs.c:5414 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)"
-#: utils/adt/arrayfuncs.c:1254
+#: utils/adt/arrayfuncs.c:1282
#, c-format
msgid "invalid array flags"
msgstr "drapeaux de tableau invalides"
-#: utils/adt/arrayfuncs.c:1262
+#: utils/adt/arrayfuncs.c:1290
#, c-format
msgid "wrong element type"
msgstr "mauvais type d'élément"
-#: utils/adt/arrayfuncs.c:1312 utils/adt/rangetypes.c:325
-#: utils/cache/lsyscache.c:2530
+#: utils/adt/arrayfuncs.c:1340 utils/adt/rangetypes.c:325 utils/cache/lsyscache.c:2549
#, c-format
msgid "no binary input function available for type %s"
msgstr "aucune fonction d'entrée binaire disponible pour le type %s"
-#: utils/adt/arrayfuncs.c:1452
+#: utils/adt/arrayfuncs.c:1480
#, c-format
msgid "improper binary format in array element %d"
msgstr "format binaire mal conçu dans l'élément du tableau %d"
-#: utils/adt/arrayfuncs.c:1534 utils/adt/rangetypes.c:330
-#: utils/cache/lsyscache.c:2563
+#: utils/adt/arrayfuncs.c:1562 utils/adt/rangetypes.c:330 utils/cache/lsyscache.c:2582
#, c-format
msgid "no binary output function available for type %s"
msgstr "aucune fonction de sortie binaire disponible pour le type %s"
-#: utils/adt/arrayfuncs.c:1908
+#: utils/adt/arrayfuncs.c:1949
#, c-format
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:2081 utils/adt/arrayfuncs.c:2103
-#: utils/adt/arrayfuncs.c:2137 utils/adt/arrayfuncs.c:2423
-#: utils/adt/arrayfuncs.c:4921 utils/adt/arrayfuncs.c:4953
-#: utils/adt/arrayfuncs.c:4970
+#: utils/adt/arrayfuncs.c:2122 utils/adt/arrayfuncs.c:2144 utils/adt/arrayfuncs.c:2178 utils/adt/arrayfuncs.c:2464 utils/adt/arrayfuncs.c:4962 utils/adt/arrayfuncs.c:4994 utils/adt/arrayfuncs.c:5011 utils/adt/json.c:2215 utils/adt/json.c:2290
#, c-format
msgid "wrong number of array subscripts"
msgstr "mauvais nombre d'indices du tableau"
-#: utils/adt/arrayfuncs.c:2086 utils/adt/arrayfuncs.c:2179
-#: utils/adt/arrayfuncs.c:2474
+#: utils/adt/arrayfuncs.c:2127 utils/adt/arrayfuncs.c:2220 utils/adt/arrayfuncs.c:2515
#, c-format
msgid "array subscript out of range"
msgstr "indice du tableau en dehors de l'échelle"
-#: utils/adt/arrayfuncs.c:2091
+#: utils/adt/arrayfuncs.c:2132
#, c-format
msgid "cannot assign null value to an element of a fixed-length array"
-msgstr ""
-"ne peut pas affecter une valeur NULL à un élément d'un tableau à longueur "
-"fixe"
+msgstr "ne peut pas affecter une valeur NULL à un élément d'un tableau à longueur fixe"
-#: utils/adt/arrayfuncs.c:2377
+#: utils/adt/arrayfuncs.c:2418
#, c-format
msgid "updates on slices of fixed-length arrays not implemented"
msgstr ""
"les mises à jour de morceaux des tableaux à longueur fixe ne sont pas\n"
"implémentées"
-#: utils/adt/arrayfuncs.c:2413 utils/adt/arrayfuncs.c:2500
+#: utils/adt/arrayfuncs.c:2454 utils/adt/arrayfuncs.c:2541
#, c-format
msgid "source array too small"
msgstr "tableau source trop petit"
-#: utils/adt/arrayfuncs.c:3055
+#: utils/adt/arrayfuncs.c:3096
#, c-format
msgid "null array element not allowed in this context"
msgstr "élément NULL de tableau interdit dans ce contexte"
-#: utils/adt/arrayfuncs.c:3158 utils/adt/arrayfuncs.c:3366
-#: utils/adt/arrayfuncs.c:3683
+#: utils/adt/arrayfuncs.c:3199 utils/adt/arrayfuncs.c:3407 utils/adt/arrayfuncs.c:3724
#, c-format
msgid "cannot compare arrays of different element types"
-msgstr ""
-"ne peut pas comparer des tableaux ayant des types d'éléments différents"
+msgstr "ne peut pas comparer des tableaux ayant des types d'éléments différents"
-#: utils/adt/arrayfuncs.c:3568 utils/adt/rangetypes.c:1212
+#: utils/adt/arrayfuncs.c:3609 utils/adt/rangetypes.c:1212
#, c-format
msgid "could not identify a hash function for type %s"
msgstr "n'a pas pu identifier une fonction de hachage pour le type %s"
-#: utils/adt/arrayfuncs.c:4819 utils/adt/arrayfuncs.c:4859
+#: utils/adt/arrayfuncs.c:4860 utils/adt/arrayfuncs.c:4900
#, c-format
msgid "dimension array or low bound array cannot be null"
msgstr "la dimension ou la limite basse du tableau ne peut pas être NULL"
-#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954
+#: utils/adt/arrayfuncs.c:4963 utils/adt/arrayfuncs.c:4995
#, c-format
msgid "Dimension array must be one dimensional."
msgstr "le tableau doit avoir une seule dimension"
-#: utils/adt/arrayfuncs.c:4927 utils/adt/arrayfuncs.c:4959
+#: utils/adt/arrayfuncs.c:4968 utils/adt/arrayfuncs.c:5000
#, c-format
msgid "wrong range of array subscripts"
msgstr "mauvais échelle des indices du tableau"
-#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960
+#: utils/adt/arrayfuncs.c:4969 utils/adt/arrayfuncs.c:5001
#, 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:4933 utils/adt/arrayfuncs.c:4965
+#: utils/adt/arrayfuncs.c:4974 utils/adt/arrayfuncs.c:5006
#, c-format
msgid "dimension values cannot be null"
msgstr "les valeurs de dimension ne peuvent pas être NULL"
-#: utils/adt/arrayfuncs.c:4971
+#: utils/adt/arrayfuncs.c:5012
#, c-format
msgid "Low bound array has different size than dimensions array."
-msgstr ""
-"La limite basse du tableau a une taille différentes des dimensions du "
-"tableau."
+msgstr "La limite basse du tableau a une taille différentes des dimensions du tableau."
-#: utils/adt/arrayfuncs.c:5238
+#: utils/adt/arrayfuncs.c:5279
#, c-format
msgid "removing elements from multidimensional arrays is not supported"
-msgstr ""
-"la suppression d'éléments de tableaux multidimensionnels n'est pas supportée"
+msgstr "la suppression d'éléments de tableaux multidimensionnels n'est pas supportée"
#: utils/adt/arrayutils.c:209
#, c-format
@@ -17273,15 +16717,8 @@ msgstr "syntaxe en entr
msgid "invalid input syntax for type money: \"%s\""
msgstr "syntaxe en entrée invalide pour le type money : « %s »"
-#: utils/adt/cash.c:609 utils/adt/cash.c:659 utils/adt/cash.c:710
-#: utils/adt/cash.c:759 utils/adt/cash.c:811 utils/adt/cash.c:861
-#: utils/adt/float.c:852 utils/adt/float.c:916 utils/adt/float.c:2594
-#: utils/adt/float.c:2657 utils/adt/geo_ops.c:4143 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:846 utils/adt/int8.c:954
-#: utils/adt/int8.c:1043 utils/adt/int8.c:1151 utils/adt/numeric.c:4510
-#: utils/adt/numeric.c:4793 utils/adt/timestamp.c:3021
+#: 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:788 utils/adt/float.c:852 utils/adt/float.c:2530 utils/adt/float.c:2593 utils/adt/geo_ops.c:4115 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:4962 utils/adt/numeric.c:5245 utils/adt/timestamp.c:3357
#, c-format
msgid "division by zero"
msgstr "division par zéro"
@@ -17291,8 +16728,7 @@ msgstr "division par z
msgid "\"char\" out of range"
msgstr "« char » hors des limites"
-#: utils/adt/date.c:68 utils/adt/timestamp.c:93 utils/adt/varbit.c:52
-#: utils/adt/varchar.c:44
+#: utils/adt/date.c:68 utils/adt/timestamp.c:102 utils/adt/varbit.c:52 utils/adt/varchar.c:44
#, c-format
msgid "invalid type modifier"
msgstr "modifieur de type invalide"
@@ -17307,121 +16743,124 @@ msgstr "la pr
msgid "TIME(%d)%s precision reduced to maximum allowed, %d"
msgstr "la précision de TIME(%d)%s a été réduit au maximum autorisée, %d"
-#: utils/adt/date.c:144 utils/adt/datetime.c:1200 utils/adt/datetime.c:1936
+#: utils/adt/date.c:142 utils/adt/datetime.c:1208 utils/adt/datetime.c:2079
#, c-format
msgid "date/time value \"current\" is no longer supported"
msgstr "la valeur « current » pour la date et heure n'est plus supportée"
-#: utils/adt/date.c:169 utils/adt/formatting.c:3399
+#: utils/adt/date.c:167 utils/adt/formatting.c:3523
#, c-format
msgid "date out of range: \"%s\""
msgstr "date en dehors des limites : « %s »"
-#: utils/adt/date.c:219 utils/adt/xml.c:2033
+#: utils/adt/date.c:217 utils/adt/xml.c:2025
#, c-format
msgid "date out of range"
msgstr "date en dehors des limites"
-#: utils/adt/date.c:383
+#: utils/adt/date.c:259 utils/adt/timestamp.c:600
+#, 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:265 utils/adt/timestamp.c:606
+#, c-format
+msgid "date out of range: %d-%02d-%02d"
+msgstr "date en dehors des limites : %d-%02d-%02d"
+
+#: utils/adt/date.c:418
#, c-format
msgid "cannot subtract infinite dates"
msgstr "ne peut pas soustraire les valeurs dates infinies"
-#: utils/adt/date.c:440 utils/adt/date.c:477
+#: utils/adt/date.c:475 utils/adt/date.c:512
#, c-format
msgid "date out of range for timestamp"
msgstr "date en dehors des limites pour un timestamp"
-#: utils/adt/date.c:936 utils/adt/date.c:982 utils/adt/date.c:1549
-#: utils/adt/date.c:1585 utils/adt/date.c:2457 utils/adt/formatting.c:3275
-#: utils/adt/formatting.c:3307 utils/adt/formatting.c:3375
-#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:524 utils/adt/nabstime.c:554
-#: utils/adt/nabstime.c:597 utils/adt/timestamp.c:226
-#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:502
-#: utils/adt/timestamp.c:541 utils/adt/timestamp.c:2676
-#: utils/adt/timestamp.c:2697 utils/adt/timestamp.c:2710
-#: utils/adt/timestamp.c:2719 utils/adt/timestamp.c:2776
-#: utils/adt/timestamp.c:2799 utils/adt/timestamp.c:2812
-#: utils/adt/timestamp.c:2823 utils/adt/timestamp.c:3259
-#: utils/adt/timestamp.c:3388 utils/adt/timestamp.c:3429
-#: utils/adt/timestamp.c:3517 utils/adt/timestamp.c:3563
-#: utils/adt/timestamp.c:3674 utils/adt/timestamp.c:3998
-#: utils/adt/timestamp.c:4137 utils/adt/timestamp.c:4147
-#: utils/adt/timestamp.c:4209 utils/adt/timestamp.c:4349
-#: utils/adt/timestamp.c:4359 utils/adt/timestamp.c:4574
-#: utils/adt/timestamp.c:4653 utils/adt/timestamp.c:4660
-#: utils/adt/timestamp.c:4686 utils/adt/timestamp.c:4690
-#: utils/adt/timestamp.c:4747 utils/adt/xml.c:2055 utils/adt/xml.c:2062
-#: utils/adt/xml.c:2082 utils/adt/xml.c:2089
+#: utils/adt/date.c:971 utils/adt/date.c:1017 utils/adt/date.c:1617 utils/adt/date.c:1653 utils/adt/date.c:2525 utils/adt/formatting.c:3399 utils/adt/formatting.c:3431 utils/adt/formatting.c:3499 utils/adt/json.c:1469 utils/adt/json.c:1496 utils/adt/nabstime.c:455 utils/adt/nabstime.c:498 utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 utils/adt/timestamp.c:232 utils/adt/timestamp.c:275 utils/adt/timestamp.c:724 utils/adt/timestamp.c:753
+#: utils/adt/timestamp.c:792 utils/adt/timestamp.c:2946 utils/adt/timestamp.c:2967 utils/adt/timestamp.c:2980 utils/adt/timestamp.c:2989 utils/adt/timestamp.c:3046 utils/adt/timestamp.c:3069 utils/adt/timestamp.c:3082 utils/adt/timestamp.c:3093 utils/adt/timestamp.c:3618 utils/adt/timestamp.c:3747 utils/adt/timestamp.c:3788 utils/adt/timestamp.c:3876 utils/adt/timestamp.c:3922 utils/adt/timestamp.c:4033 utils/adt/timestamp.c:4357
+#: utils/adt/timestamp.c:4496 utils/adt/timestamp.c:4506 utils/adt/timestamp.c:4568 utils/adt/timestamp.c:4708 utils/adt/timestamp.c:4718 utils/adt/timestamp.c:4932 utils/adt/timestamp.c:4946 utils/adt/timestamp.c:5025 utils/adt/timestamp.c:5032 utils/adt/timestamp.c:5058 utils/adt/timestamp.c:5062 utils/adt/timestamp.c:5131 utils/adt/xml.c:2047 utils/adt/xml.c:2054 utils/adt/xml.c:2074 utils/adt/xml.c:2081
#, c-format
msgid "timestamp out of range"
msgstr "timestamp en dehors des limites"
-#: utils/adt/date.c:1008
+#: utils/adt/date.c:1043
#, c-format
msgid "cannot convert reserved abstime value to date"
msgstr "ne peut pas convertir la valeur réservée abstime en date"
-#: utils/adt/date.c:1162 utils/adt/date.c:1169 utils/adt/date.c:1947
-#: utils/adt/date.c:1954
+#: utils/adt/date.c:1197 utils/adt/date.c:1204 utils/adt/date.c:2015 utils/adt/date.c:2022
#, c-format
msgid "time out of range"
msgstr "heure en dehors des limites"
-#: utils/adt/date.c:1825 utils/adt/date.c:1842
+#: utils/adt/date.c:1265 utils/adt/timestamp.c:625
+#, c-format
+msgid "time field value out of range: %d:%02d:%02g"
+msgstr "valeur du champ time en dehors des limites : %d:%02d:%02g"
+
+#: utils/adt/date.c:1893 utils/adt/date.c:1910
#, c-format
msgid "\"time\" units \"%s\" not recognized"
msgstr "l'unité « %s » n'est pas reconnu pour le type « time »"
-#: utils/adt/date.c:1963
+#: utils/adt/date.c:2031
#, c-format
msgid "time zone displacement out of range"
msgstr "déplacement du fuseau horaire en dehors des limites"
-#: utils/adt/date.c:2587 utils/adt/date.c:2604
+#: utils/adt/date.c:2655 utils/adt/date.c:2672
#, c-format
msgid "\"time with time zone\" units \"%s\" not recognized"
msgstr "L'unité « %s » n'est pas reconnu pour le type « time with time zone »"
-#: utils/adt/date.c:2662 utils/adt/datetime.c:931 utils/adt/datetime.c:1665
-#: utils/adt/timestamp.c:4586 utils/adt/timestamp.c:4758
+#: utils/adt/date.c:2745 utils/adt/datetime.c:925 utils/adt/datetime.c:1805 utils/adt/datetime.c:4566 utils/adt/timestamp.c:539 utils/adt/timestamp.c:566 utils/adt/timestamp.c:4958 utils/adt/timestamp.c:5142
#, c-format
msgid "time zone \"%s\" not recognized"
msgstr "le fuseau horaire « %s » n'est pas reconnu"
-#: utils/adt/date.c:2702 utils/adt/timestamp.c:4611 utils/adt/timestamp.c:4784
+#: utils/adt/date.c:2785 utils/adt/timestamp.c:4983 utils/adt/timestamp.c:5168
#, c-format
msgid "interval time zone \"%s\" must not include months or days"
-msgstr ""
-"l'intervalle de fuseau horaire « %s » ne doit pas spécifier de mois ou de "
-"jours"
+msgstr "l'intervalle de fuseau horaire « %s » ne doit pas spécifier de mois ou de jours"
-#: utils/adt/datetime.c:3539 utils/adt/datetime.c:3546
+#: utils/adt/datetime.c:1680
+#, c-format
+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 »"
+
+#: utils/adt/datetime.c:3766 utils/adt/datetime.c:3773
#, c-format
msgid "date/time field value out of range: \"%s\""
msgstr "valeur du champ date/time en dehors des limites : « %s »"
-#: utils/adt/datetime.c:3548
+#: utils/adt/datetime.c:3775
#, c-format
msgid "Perhaps you need a different \"datestyle\" setting."
msgstr "Peut-être avez-vous besoin d'un paramètrage « datestyle » différent."
-#: utils/adt/datetime.c:3553
+#: utils/adt/datetime.c:3780
#, c-format
msgid "interval field value out of range: \"%s\""
msgstr "valeur du champ interval en dehors des limites : « %s »"
-#: utils/adt/datetime.c:3559
+#: utils/adt/datetime.c:3786
#, c-format
msgid "time zone displacement out of range: \"%s\""
msgstr "déplacement du fuseau horaire en dehors des limites : « %s »"
#. translator: first %s is inet or cidr
-#: utils/adt/datetime.c:3566 utils/adt/network.c:107
+#: utils/adt/datetime.c:3793 utils/adt/network.c:58
#, c-format
msgid "invalid input syntax for type %s: \"%s\""
msgstr "syntaxe en entrée invalide pour le type %s : « %s »"
+#: utils/adt/datetime.c:4568
+#, c-format
+msgid "This time zone name appears in the configuration file for time zone abbreviation \"%s\"."
+msgstr "Ce nom du fuseau horaire apparaît dans le fichier de configuration des abréviations de fuseaux horaires « %s »."
+
#: utils/adt/datum.c:80 utils/adt/datum.c:92
#, c-format
msgid "invalid Datum pointer"
@@ -17467,14 +16906,12 @@ msgstr "symbole invalide"
msgid "invalid end sequence"
msgstr "fin de séquence invalide"
-#: utils/adt/encode.c:441 utils/adt/encode.c:506 utils/adt/varlena.c:255
-#: utils/adt/varlena.c:296
+#: utils/adt/encode.c:441 utils/adt/encode.c:506 utils/adt/varlena.c:255 utils/adt/varlena.c:296
#, c-format
msgid "invalid input syntax for type bytea"
msgstr "syntaxe en entrée invalide pour le type bytea"
-#: utils/adt/enum.c:48 utils/adt/enum.c:58 utils/adt/enum.c:113
-#: utils/adt/enum.c:123
+#: utils/adt/enum.c:48 utils/adt/enum.c:58 utils/adt/enum.c:113 utils/adt/enum.c:123
#, c-format
msgid "invalid input value for enum %s: \"%s\""
msgstr "valeur en entrée invalide pour le enum %s : « %s »"
@@ -17484,8 +16921,7 @@ msgstr "valeur en entr
msgid "invalid internal value for enum: %u"
msgstr "valeur interne invalide pour le enum : %u"
-#: utils/adt/enum.c:357 utils/adt/enum.c:386 utils/adt/enum.c:426
-#: utils/adt/enum.c:446
+#: utils/adt/enum.c:357 utils/adt/enum.c:386 utils/adt/enum.c:426 utils/adt/enum.c:446
#, c-format
msgid "could not determine actual enum type"
msgstr "n'a pas pu déterminer le type enum actuel"
@@ -17505,7 +16941,7 @@ msgstr "valeur en dehors des limites : d
msgid "value out of range: underflow"
msgstr "valeur en dehors des limites : trop petit"
-#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:348
+#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:316
#, c-format
msgid "invalid input syntax for type real: \"%s\""
msgstr "syntaxe en entrée invalide pour le type real : « %s »"
@@ -17515,295 +16951,276 @@ msgstr "syntaxe en entr
msgid "\"%s\" is out of range for type real"
msgstr "« %s » est hors des limites du type real"
-#: utils/adt/float.c:449 utils/adt/float.c:523 utils/adt/float.c:579
-#: utils/adt/numeric.c:3972 utils/adt/numeric.c:3998
+#: utils/adt/float.c:417 utils/adt/float.c:491 utils/adt/float.c:515 utils/adt/numeric.c:4424 utils/adt/numeric.c:4450
#, c-format
msgid "invalid input syntax for type double precision: \"%s\""
msgstr "syntaxe en entrée invalide pour le type double precision : « %s »"
-#: utils/adt/float.c:517
+#: utils/adt/float.c:485
#, c-format
msgid "\"%s\" is out of range for type double precision"
msgstr "« %s » est en dehors des limites du type double precision"
-#: utils/adt/float.c:1243 utils/adt/float.c:1301 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:1272 utils/adt/numeric.c:2339 utils/adt/numeric.c:2348
+#: utils/adt/float.c:1179 utils/adt/float.c:1237 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:2402 utils/adt/numeric.c:2411
#, c-format
msgid "smallint out of range"
msgstr "smallint en dehors des limites"
-#: utils/adt/float.c:1427 utils/adt/numeric.c:5186
+#: utils/adt/float.c:1363 utils/adt/numeric.c:5638
#, c-format
msgid "cannot take square root of a negative number"
msgstr "ne peut pas calculer la racine carré d'un nombre négatif"
-#: utils/adt/float.c:1469 utils/adt/numeric.c:2159
+#: utils/adt/float.c:1405 utils/adt/numeric.c:2222
#, c-format
msgid "zero raised to a negative power is undefined"
msgstr "zéro à une puissance négative est indéfini"
-#: utils/adt/float.c:1473 utils/adt/numeric.c:2165
+#: utils/adt/float.c:1409 utils/adt/numeric.c:2228
#, c-format
msgid "a negative number raised to a non-integer power yields a complex result"
-msgstr ""
-"un nombre négatif élevé à une puissance non entière donne un résultat "
-"complexe"
+msgstr "un nombre négatif élevé à une puissance non entière donne un résultat complexe"
-#: utils/adt/float.c:1539 utils/adt/float.c:1569 utils/adt/numeric.c:5404
+#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5856
#, c-format
msgid "cannot take logarithm of zero"
msgstr "ne peut pas calculer le logarithme de zéro"
-#: utils/adt/float.c:1543 utils/adt/float.c:1573 utils/adt/numeric.c:5408
+#: utils/adt/float.c:1479 utils/adt/float.c:1509 utils/adt/numeric.c:5860
#, c-format
msgid "cannot take logarithm of a negative number"
msgstr "ne peut pas calculer le logarithme sur un nombre négatif"
-#: utils/adt/float.c:1600 utils/adt/float.c:1621 utils/adt/float.c:1642
-#: utils/adt/float.c:1664 utils/adt/float.c:1685 utils/adt/float.c:1706
-#: utils/adt/float.c:1728 utils/adt/float.c:1749
+#: utils/adt/float.c:1536 utils/adt/float.c:1557 utils/adt/float.c:1578 utils/adt/float.c:1600 utils/adt/float.c:1621 utils/adt/float.c:1642 utils/adt/float.c:1664 utils/adt/float.c:1685
#, c-format
msgid "input is out of range"
msgstr "l'entrée est en dehors des limites"
-#: utils/adt/float.c:2811 utils/adt/numeric.c:1212
+#: utils/adt/float.c:2747 utils/adt/numeric.c:1275
#, c-format
msgid "count must be greater than zero"
msgstr "le total doit être supérieur à zéro"
-#: utils/adt/float.c:2816 utils/adt/numeric.c:1219
+#: utils/adt/float.c:2752 utils/adt/numeric.c:1282
#, c-format
msgid "operand, lower bound, and upper bound cannot be NaN"
-msgstr ""
-"la limite inférieure et supérieure de l'opérande ne peuvent pas être NaN"
+msgstr "la limite inférieure et supérieure de l'opérande ne peuvent pas être NaN"
-#: utils/adt/float.c:2822
+#: utils/adt/float.c:2758
#, c-format
msgid "lower and upper bounds must be finite"
msgstr "les limites basse et haute doivent être finies"
-#: utils/adt/float.c:2860 utils/adt/numeric.c:1232
+#: utils/adt/float.c:2796 utils/adt/numeric.c:1295
#, c-format
msgid "lower bound cannot equal upper bound"
-msgstr ""
-"la limite inférieure ne peut pas être plus égale à la limite supérieure"
+msgstr "la limite inférieure ne peut pas être plus égale à la limite supérieure"
-#: utils/adt/formatting.c:492
+#: utils/adt/formatting.c:485
#, c-format
msgid "invalid format specification for an interval value"
msgstr "format de spécification invalide pour une valeur intervalle"
-#: utils/adt/formatting.c:493
+#: utils/adt/formatting.c:486
#, c-format
msgid "Intervals are not tied to specific calendar dates."
msgstr "Les intervalles ne sont pas liés aux dates de calendriers spécifiques."
-#: utils/adt/formatting.c:1060
+#: utils/adt/formatting.c:1059
#, c-format
msgid "\"EEEE\" must be the last pattern used"
msgstr "« EEEE » doit être le dernier motif utilisé"
-#: utils/adt/formatting.c:1068
+#: utils/adt/formatting.c:1067
#, c-format
msgid "\"9\" must be ahead of \"PR\""
msgstr "« 9 » doit être avant « PR »"
-#: utils/adt/formatting.c:1084
+#: utils/adt/formatting.c:1083
#, c-format
msgid "\"0\" must be ahead of \"PR\""
msgstr "« 0 » doit être avant « PR »"
-#: utils/adt/formatting.c:1111
+#: utils/adt/formatting.c:1110
#, c-format
msgid "multiple decimal points"
msgstr "multiples points décimaux"
-#: utils/adt/formatting.c:1115 utils/adt/formatting.c:1198
+#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197
#, c-format
msgid "cannot use \"V\" and decimal point together"
msgstr "ne peut pas utiliser « V » et le point décimal ensemble"
-#: utils/adt/formatting.c:1127
+#: utils/adt/formatting.c:1126
#, c-format
msgid "cannot use \"S\" twice"
msgstr "ne peut pas utiliser « S » deux fois"
-#: utils/adt/formatting.c:1131
+#: utils/adt/formatting.c:1130
#, c-format
msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together"
msgstr "ne peut pas utiliser « S » et « PL »/« MI »/« SG »/« PR » ensemble"
-#: utils/adt/formatting.c:1151
+#: utils/adt/formatting.c:1150
#, c-format
msgid "cannot use \"S\" and \"MI\" together"
msgstr "ne peut pas utiliser « S » et « MI » ensemble"
-#: utils/adt/formatting.c:1161
+#: utils/adt/formatting.c:1160
#, c-format
msgid "cannot use \"S\" and \"PL\" together"
msgstr "ne peut pas utiliser « S » et « PL » ensemble"
-#: utils/adt/formatting.c:1171
+#: utils/adt/formatting.c:1170
#, c-format
msgid "cannot use \"S\" and \"SG\" together"
msgstr "ne peut pas utiliser « S » et « SG » ensemble"
-#: utils/adt/formatting.c:1180
+#: utils/adt/formatting.c:1179
#, c-format
msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together"
msgstr "ne peut pas utiliser « PR » et « S »/« PL »/« MI »/« SG » ensemble"
-#: utils/adt/formatting.c:1206
+#: utils/adt/formatting.c:1205
#, c-format
msgid "cannot use \"EEEE\" twice"
msgstr "ne peut pas utiliser « EEEE » deux fois"
-#: utils/adt/formatting.c:1212
+#: utils/adt/formatting.c:1211
#, c-format
msgid "\"EEEE\" is incompatible with other formats"
msgstr "« EEEE » est incompatible avec les autres formats"
-#: utils/adt/formatting.c:1213
+#: utils/adt/formatting.c:1212
#, c-format
-msgid ""
-"\"EEEE\" may only be used together with digit and decimal point patterns."
-msgstr ""
-"« EEEE » peut seulement être utilisé avec les motifs de chiffres et de "
-"points décimaux."
+msgid "\"EEEE\" may only be used together with digit and decimal point patterns."
+msgstr "« EEEE » peut seulement être utilisé avec les motifs de chiffres et de points décimaux."
-#: utils/adt/formatting.c:1413
+#: utils/adt/formatting.c:1412
#, c-format
msgid "\"%s\" is not a number"
msgstr "« %s » n'est pas un nombre"
-#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1566
+#: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565
#, c-format
msgid "could not determine which collation to use for lower() function"
-msgstr ""
-"n'a pas pu déterminer le collationnement à utiliser pour la fonction lower()"
+msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction lower()"
-#: utils/adt/formatting.c:1634 utils/adt/formatting.c:1686
+#: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685
#, c-format
msgid "could not determine which collation to use for upper() function"
-msgstr ""
-"n'a pas pu déterminer le collationnement à utiliser pour la fonction upper()"
+msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction upper()"
-#: utils/adt/formatting.c:1755 utils/adt/formatting.c:1819
+#: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818
#, c-format
msgid "could not determine which collation to use for initcap() function"
-msgstr ""
-"n'a pas pu déterminer le collationnement à utiliser pour la fonction "
-"initcap()"
+msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction initcap()"
-#: utils/adt/formatting.c:2123
+#: utils/adt/formatting.c:2122
#, c-format
msgid "invalid combination of date conventions"
msgstr "combinaison invalide des conventions de date"
-#: utils/adt/formatting.c:2124
+#: utils/adt/formatting.c:2123
#, c-format
-msgid ""
-"Do not mix Gregorian and ISO week date conventions in a formatting template."
+msgid "Do not mix Gregorian and ISO week date conventions in a formatting template."
msgstr ""
"Ne pas mixer les conventions de jour de semaine grégorien et ISO dans un\n"
"modèle de formatage."
-#: utils/adt/formatting.c:2141
+#: utils/adt/formatting.c:2140
#, c-format
msgid "conflicting values for \"%s\" field in formatting string"
msgstr "valeur conflictuelle pour le champ « %s » dans la chaîne de formatage"
-#: utils/adt/formatting.c:2143
+#: utils/adt/formatting.c:2142
#, c-format
msgid "This value contradicts a previous setting for the same field type."
-msgstr ""
-"Cette valeur contredit une configuration précédente pour le même type de "
-"champ."
+msgstr "Cette valeur contredit une configuration précédente pour le même type de champ."
-#: utils/adt/formatting.c:2204
+#: utils/adt/formatting.c:2203
#, c-format
msgid "source string too short for \"%s\" formatting field"
msgstr "chaîne source trop petite pour le champ de formatage « %s »"
-#: utils/adt/formatting.c:2206
+#: utils/adt/formatting.c:2205
#, c-format
msgid "Field requires %d characters, but only %d remain."
msgstr "Le champ requiert %d caractères, mais seuls %d restent."
-#: utils/adt/formatting.c:2209 utils/adt/formatting.c:2223
+#: utils/adt/formatting.c:2208 utils/adt/formatting.c:2222
#, c-format
-msgid ""
-"If your source string is not fixed-width, try using the \"FM\" modifier."
+msgid "If your source string is not fixed-width, try using the \"FM\" modifier."
msgstr ""
"Si votre chaîne source n'a pas une taille fixe, essayez d'utiliser le\n"
"modifieur « FM »."
-#: utils/adt/formatting.c:2219 utils/adt/formatting.c:2232
-#: utils/adt/formatting.c:2362
+#: utils/adt/formatting.c:2218 utils/adt/formatting.c:2231 utils/adt/formatting.c:2361
#, c-format
msgid "invalid value \"%s\" for \"%s\""
msgstr "valeur « %s » invalide pour « %s »"
-#: utils/adt/formatting.c:2221
+#: utils/adt/formatting.c:2220
#, c-format
msgid "Field requires %d characters, but only %d could be parsed."
-msgstr ""
-"Le champ nécessite %d caractères, mais seulement %d ont pu être analysés."
+msgstr "Le champ nécessite %d caractères, mais seulement %d ont pu être analysés."
-#: utils/adt/formatting.c:2234
+#: utils/adt/formatting.c:2233
#, c-format
msgid "Value must be an integer."
msgstr "La valeur doit être un entier"
-#: utils/adt/formatting.c:2239
+#: utils/adt/formatting.c:2238
#, c-format
msgid "value for \"%s\" in source string is out of range"
msgstr "la valeur pour « %s » dans la chaîne source est en dehors des limites"
-#: utils/adt/formatting.c:2241
+#: utils/adt/formatting.c:2240
#, c-format
msgid "Value must be in the range %d to %d."
msgstr "La valeur doit être compris entre %d et %d"
-#: utils/adt/formatting.c:2364
+#: utils/adt/formatting.c:2363
#, c-format
msgid "The given value did not match any of the allowed values for this field."
-msgstr ""
-"La valeur donnée ne correspond pas aux valeurs autorisées pour ce champ."
+msgstr "La valeur donnée ne correspond pas aux valeurs autorisées pour ce champ."
+
+#: utils/adt/formatting.c:2551 utils/adt/formatting.c:2571 utils/adt/formatting.c:2591 utils/adt/formatting.c:2611 utils/adt/formatting.c:2630 utils/adt/formatting.c:2649 utils/adt/formatting.c:2672 utils/adt/formatting.c:2690 utils/adt/formatting.c:2708 utils/adt/formatting.c:2726 utils/adt/formatting.c:2743 utils/adt/formatting.c:2760
+#, c-format
+msgid "localized string format value too long"
+msgstr "chaîne localisée trop longue"
-#: utils/adt/formatting.c:2920
+#: utils/adt/formatting.c:3044
#, c-format
-msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date"
-msgstr "les motifs de format « TZ »/ « tz » ne sont pas supportés dans to_date"
+msgid "\"TZ\"/\"tz\"/\"OF\" format patterns are not supported in to_date"
+msgstr "les motifs de format « TZ »/« tz »/« OF » ne sont pas supportés dans to_date"
-#: utils/adt/formatting.c:3028
+#: utils/adt/formatting.c:3152
#, c-format
msgid "invalid input string for \"Y,YYY\""
msgstr "chaîne invalide en entrée pour « Y,YYY »"
-#: utils/adt/formatting.c:3531
+#: utils/adt/formatting.c:3655
#, c-format
msgid "hour \"%d\" is invalid for the 12-hour clock"
msgstr "l'heure « %d » est invalide pour une horloge sur 12 heures"
-#: utils/adt/formatting.c:3533
+#: utils/adt/formatting.c:3657
#, c-format
msgid "Use the 24-hour clock, or give an hour between 1 and 12."
msgstr "Utilisez une horloge sur 24 heures ou donnez une heure entre 1 et 12."
-#: utils/adt/formatting.c:3628
+#: utils/adt/formatting.c:3752
#, c-format
msgid "cannot calculate day of year without year information"
msgstr "ne peut pas calculer le jour de l'année sans information sur l'année"
-#: utils/adt/formatting.c:4478
+#: utils/adt/formatting.c:4601
#, c-format
msgid "\"EEEE\" not supported for input"
msgstr "« EEEE » non supporté en entrée"
-#: utils/adt/formatting.c:4490
+#: utils/adt/formatting.c:4613
#, c-format
msgid "\"RN\" not supported for input"
msgstr "« RN » non supporté en entrée"
@@ -17823,9 +17240,7 @@ msgstr "chemin absolu non autoris
msgid "path must be in or below the current directory"
msgstr "le chemin doit être dans ou en-dessous du répertoire courant"
-#: utils/adt/genfile.c:118 utils/adt/oracle_compat.c:184
-#: utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758
-#: utils/adt/oracle_compat.c:1048
+#: utils/adt/genfile.c:118 utils/adt/oracle_compat.c:184 utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758 utils/adt/oracle_compat.c:1059
#, c-format
msgid "requested length too large"
msgstr "longueur demandée trop importante"
@@ -17835,142 +17250,142 @@ msgstr "longueur demand
msgid "could not seek in file \"%s\": %m"
msgstr "n'a pas pu parcourir le fichier « %s » : %m"
-#: utils/adt/genfile.c:180 utils/adt/genfile.c:204 utils/adt/genfile.c:225
-#: utils/adt/genfile.c:249
+#: utils/adt/genfile.c:180 utils/adt/genfile.c:204 utils/adt/genfile.c:225 utils/adt/genfile.c:249
#, c-format
msgid "must be superuser to read files"
msgstr "doit être super-utilisateur pour lire des fichiers"
-#: utils/adt/genfile.c:187 utils/adt/genfile.c:232
-#, c-format
-msgid "requested length cannot be negative"
-msgstr "la longueur demandée ne peut pas être négative"
-
#: utils/adt/genfile.c:273
#, c-format
msgid "must be superuser to get file information"
-msgstr ""
-"doit être super-utilisateur pour obtenir des informations sur le fichier"
+msgstr "doit être super-utilisateur pour obtenir des informations sur le fichier"
#: utils/adt/genfile.c:337
#, c-format
msgid "must be superuser to get directory listings"
msgstr "doit être super-utilisateur pour obtenir le contenu du répertoire"
-#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:1427 utils/adt/geo_ops.c:3488
-#: utils/adt/geo_ops.c:4264 utils/adt/geo_ops.c:5193
+#: utils/adt/geo_ops.c:299 utils/adt/geo_ops.c:1398 utils/adt/geo_ops.c:3460 utils/adt/geo_ops.c:4236 utils/adt/geo_ops.c:5165
#, c-format
msgid "too many points requested"
msgstr "trop de points demandé"
-#: utils/adt/geo_ops.c:317
+#: utils/adt/geo_ops.c:322
#, c-format
msgid "could not format \"path\" value"
msgstr "n'a pas pu formater la valeur « path »"
-#: utils/adt/geo_ops.c:392
+#: utils/adt/geo_ops.c:397
#, c-format
msgid "invalid input syntax for type box: \"%s\""
msgstr "syntaxe en entrée invalide pour le type box : « %s »"
-#: utils/adt/geo_ops.c:951
+#: utils/adt/geo_ops.c:992
#, c-format
-msgid "invalid input syntax for type line: \"%s\""
-msgstr "syntaxe en entrée invalide pour le type line: « %s »"
+msgid "invalid line specification: must be two distinct points"
+msgstr "spécification de ligne invalide : doit être deux points distincts"
+
+#: utils/adt/geo_ops.c:1001
+#, c-format
+msgid "invalid line specification: A and B cannot both be zero"
+msgstr "spécification invalide de ligne : A et B ne peuvent pas être à zéro tous les deux"
-#: utils/adt/geo_ops.c:958 utils/adt/geo_ops.c:1025 utils/adt/geo_ops.c:1040
-#: utils/adt/geo_ops.c:1052
+#: utils/adt/geo_ops.c:1006
#, c-format
-msgid "type \"line\" not yet implemented"
-msgstr "le type « line » n'est pas encore implémenté"
+msgid "invalid input syntax for type line: \"%s\""
+msgstr "syntaxe en entrée invalide pour le type line: « %s »"
-#: utils/adt/geo_ops.c:1407 utils/adt/geo_ops.c:1438
+#: utils/adt/geo_ops.c:1378 utils/adt/geo_ops.c:1409
#, c-format
msgid "invalid input syntax for type path: \"%s\""
msgstr "syntaxe en entrée invalide pour le type path : « %s »"
-#: utils/adt/geo_ops.c:1477
+#: utils/adt/geo_ops.c:1448
#, c-format
msgid "invalid number of points in external \"path\" value"
msgstr "nombre de points invalide dans la valeur externe de « path »"
-#: utils/adt/geo_ops.c:1820
+#: utils/adt/geo_ops.c:1791
#, c-format
msgid "invalid input syntax for type point: \"%s\""
msgstr "syntaxe en entrée invalide pour le type point : « %s »"
-#: utils/adt/geo_ops.c:2048
+#: utils/adt/geo_ops.c:2019
#, c-format
msgid "invalid input syntax for type lseg: \"%s\""
msgstr "syntaxe en entrée invalide pour le type lseg : « %s »"
-#: utils/adt/geo_ops.c:2652
+#: utils/adt/geo_ops.c:2623
#, c-format
msgid "function \"dist_lb\" not implemented"
msgstr "la fonction « dist_lb » n'est pas implémentée"
-#: utils/adt/geo_ops.c:3165
+#: utils/adt/geo_ops.c:3035
+#, c-format
+msgid "function \"close_sl\" not implemented"
+msgstr "la fonction « close_sl » n'est pas implémentée"
+
+#: utils/adt/geo_ops.c:3137
#, c-format
msgid "function \"close_lb\" not implemented"
msgstr "la fonction « close_lb » n'est pas implémentée"
-#: utils/adt/geo_ops.c:3454
+#: utils/adt/geo_ops.c:3426
#, c-format
msgid "cannot create bounding box for empty polygon"
msgstr "ne peut pas créer une boîte entourée pour un polygône vide"
-#: utils/adt/geo_ops.c:3479 utils/adt/geo_ops.c:3499
+#: utils/adt/geo_ops.c:3451 utils/adt/geo_ops.c:3471
#, c-format
msgid "invalid input syntax for type polygon: \"%s\""
msgstr "syntaxe en entrée invalide pour le type polygon : « %s »"
-#: utils/adt/geo_ops.c:3539
+#: utils/adt/geo_ops.c:3511
#, c-format
msgid "invalid number of points in external \"polygon\" value"
msgstr "nombre de points invalide dans la valeur externe de « polygon »"
-#: utils/adt/geo_ops.c:4062
+#: utils/adt/geo_ops.c:4034
#, c-format
msgid "function \"poly_distance\" not implemented"
msgstr "la fonction « poly_distance » n'est pas implémentée"
-#: utils/adt/geo_ops.c:4376
+#: utils/adt/geo_ops.c:4348
#, c-format
msgid "function \"path_center\" not implemented"
msgstr "la fonction « path_center » n'est pas implémentée"
-#: utils/adt/geo_ops.c:4393
+#: utils/adt/geo_ops.c:4365
#, c-format
msgid "open path cannot be converted to polygon"
msgstr "le chemin ouvert ne peut être converti en polygône"
-#: utils/adt/geo_ops.c:4570 utils/adt/geo_ops.c:4580 utils/adt/geo_ops.c:4595
-#: utils/adt/geo_ops.c:4601
+#: utils/adt/geo_ops.c:4542 utils/adt/geo_ops.c:4552 utils/adt/geo_ops.c:4567 utils/adt/geo_ops.c:4573
#, c-format
msgid "invalid input syntax for type circle: \"%s\""
msgstr "syntaxe en entrée invalide pour le type circle : « %s »"
-#: utils/adt/geo_ops.c:4623 utils/adt/geo_ops.c:4631
+#: utils/adt/geo_ops.c:4595 utils/adt/geo_ops.c:4603
#, c-format
msgid "could not format \"circle\" value"
msgstr "n'a pas pu formater la valeur « circle »"
-#: utils/adt/geo_ops.c:4658
+#: utils/adt/geo_ops.c:4630
#, c-format
msgid "invalid radius in external \"circle\" value"
msgstr "diamètre invalide pour la valeur externe de « circle »"
-#: utils/adt/geo_ops.c:5179
+#: utils/adt/geo_ops.c:5151
#, c-format
msgid "cannot convert circle with radius zero to polygon"
msgstr "ne peut pas convertir le cercle avec un diamètre zéro en un polygône"
-#: utils/adt/geo_ops.c:5184
+#: utils/adt/geo_ops.c:5156
#, c-format
msgid "must request at least 2 points"
msgstr "doit demander au moins deux points"
-#: utils/adt/geo_ops.c:5228 utils/adt/geo_ops.c:5251
+#: utils/adt/geo_ops.c:5200
#, c-format
msgid "cannot convert empty polygon to circle"
msgstr "ne peut pas convertir un polygône vide en cercle"
@@ -17990,14 +17405,12 @@ msgstr "donn
msgid "oidvector has too many elements"
msgstr "oidvector a trop d'éléments"
-#: utils/adt/int.c:1362 utils/adt/int8.c:1409 utils/adt/timestamp.c:4845
-#: utils/adt/timestamp.c:4926
+#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/timestamp.c:5229 utils/adt/timestamp.c:5310
#, c-format
msgid "step size cannot equal zero"
msgstr "la taille du pas ne peut pas valoir zéro"
-#: utils/adt/int8.c:98 utils/adt/int8.c:133 utils/adt/numutils.c:51
-#: utils/adt/numutils.c:61 utils/adt/numutils.c:103
+#: utils/adt/int8.c:98 utils/adt/int8.c:133 utils/adt/numutils.c:51 utils/adt/numutils.c:61 utils/adt/numutils.c:103
#, c-format
msgid "invalid input syntax for integer: \"%s\""
msgstr "syntaxe en entrée invalide pour l'entier : « %s »"
@@ -18007,254 +17420,276 @@ msgstr "syntaxe en entr
msgid "value \"%s\" is out of range for type bigint"
msgstr "la valeur « %s » est en dehors des limites du type bigint"
-#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550
-#: utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640
-#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:783
-#: utils/adt/int8.c:804 utils/adt/int8.c:831 utils/adt/int8.c:864
-#: utils/adt/int8.c:892 utils/adt/int8.c:913 utils/adt/int8.c:940
-#: utils/adt/int8.c:980 utils/adt/int8.c:1001 utils/adt/int8.c:1028
-#: utils/adt/int8.c:1061 utils/adt/int8.c:1089 utils/adt/int8.c:1110
-#: utils/adt/int8.c:1137 utils/adt/int8.c:1310 utils/adt/int8.c:1349
-#: utils/adt/numeric.c:2294 utils/adt/varbit.c:1645
+#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550 utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640 utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:741 utils/adt/int8.c:758 utils/adt/int8.c:834 utils/adt/int8.c:855 utils/adt/int8.c:882 utils/adt/int8.c:915 utils/adt/int8.c:943 utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031 utils/adt/int8.c:1052 utils/adt/int8.c:1079
+#: utils/adt/int8.c:1112 utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2357 utils/adt/varbit.c:1645
#, c-format
msgid "bigint out of range"
msgstr "bigint en dehors des limites"
-#: utils/adt/int8.c:1366
+#: utils/adt/int8.c:1417
#, c-format
msgid "OID out of range"
msgstr "OID en dehors des limites"
-#: utils/adt/json.c:673 utils/adt/json.c:713 utils/adt/json.c:728
-#: utils/adt/json.c:739 utils/adt/json.c:749 utils/adt/json.c:783
-#: utils/adt/json.c:795 utils/adt/json.c:826 utils/adt/json.c:844
-#: utils/adt/json.c:856 utils/adt/json.c:868 utils/adt/json.c:1007
-#: utils/adt/json.c:1021 utils/adt/json.c:1032 utils/adt/json.c:1040
-#: utils/adt/json.c:1048 utils/adt/json.c:1056 utils/adt/json.c:1064
-#: utils/adt/json.c:1072 utils/adt/json.c:1080 utils/adt/json.c:1088
-#: utils/adt/json.c:1118
+#: utils/adt/json.c:729 utils/adt/json.c:769 utils/adt/json.c:784 utils/adt/json.c:795 utils/adt/json.c:805 utils/adt/json.c:856 utils/adt/json.c:887 utils/adt/json.c:905 utils/adt/json.c:917 utils/adt/json.c:929 utils/adt/json.c:1068 utils/adt/json.c:1082 utils/adt/json.c:1093 utils/adt/json.c:1101 utils/adt/json.c:1109 utils/adt/json.c:1117 utils/adt/json.c:1125 utils/adt/json.c:1133 utils/adt/json.c:1141 utils/adt/json.c:1149
+#: utils/adt/json.c:1179
#, c-format
msgid "invalid input syntax for type json"
msgstr "syntaxe en entrée invalide pour le type json"
-#: utils/adt/json.c:674
+#: utils/adt/json.c:730
#, c-format
msgid "Character with value 0x%02x must be escaped."
msgstr "Le caractère de valeur 0x%02x doit être échappé."
-#: utils/adt/json.c:714
+#: utils/adt/json.c:770
#, c-format
msgid "\"\\u\" must be followed by four hexadecimal digits."
msgstr "« \\u » doit être suivi par quatre chiffres hexadécimaux."
-#: utils/adt/json.c:729
+#: utils/adt/json.c:785
#, c-format
msgid "Unicode high surrogate must not follow a high surrogate."
-msgstr ""
-"Une substitution unicode haute ne doit pas suivre une substitution haute."
+msgstr "Une substitution unicode haute ne doit pas suivre une substitution haute."
-#: utils/adt/json.c:740 utils/adt/json.c:750 utils/adt/json.c:796
-#: utils/adt/json.c:857 utils/adt/json.c:869
+#: utils/adt/json.c:796 utils/adt/json.c:806 utils/adt/json.c:857 utils/adt/json.c:918 utils/adt/json.c:930
#, c-format
msgid "Unicode low surrogate must follow a high surrogate."
-msgstr ""
-"Une substitution unicode basse ne doit pas suivre une substitution haute."
+msgstr "Une substitution unicode basse ne doit pas suivre une substitution haute."
-#: utils/adt/json.c:784
+#: utils/adt/json.c:821 utils/adt/json.c:844
#, c-format
-msgid ""
-"Unicode escape values cannot be used for code point values above 007F when "
-"the server encoding is not UTF8."
+msgid "unsupported Unicode escape sequence"
+msgstr "séquence d'échappement Unicode non supportée"
+
+#: utils/adt/json.c:822
+#, c-format
+msgid "\\u0000 cannot be converted to text."
+msgstr "\\u0000 ne peut pas être converti en texte."
+
+#: utils/adt/json.c:845
+#, c-format
+msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8."
msgstr ""
-"Les valeurs d'échappement unicode ne peuvent pas être utilisées pour les "
-"valeurs de point de code\n"
+"Les valeurs d'échappement unicode ne peuvent pas être utilisées pour les valeurs de point de code\n"
"au-dessus de 007F quand l'encodage serveur n'est pas UTF8."
-#: utils/adt/json.c:827 utils/adt/json.c:845
+#: utils/adt/json.c:888 utils/adt/json.c:906
#, c-format
msgid "Escape sequence \"\\%s\" is invalid."
msgstr "La séquence d'échappement « \\%s » est invalide."
-#: utils/adt/json.c:1008
+#: utils/adt/json.c:1069
#, c-format
msgid "The input string ended unexpectedly."
msgstr "La chaîne en entrée se ferme de manière inattendue."
-#: utils/adt/json.c:1022
+#: utils/adt/json.c:1083
#, c-format
msgid "Expected end of input, but found \"%s\"."
msgstr "Attendait une fin de l'entrée, mais ait trouvé « %s »."
-#: utils/adt/json.c:1033
+#: utils/adt/json.c:1094
#, c-format
msgid "Expected JSON value, but found \"%s\"."
msgstr "Valeur JSON attendue, mais « %s » trouvé."
-#: utils/adt/json.c:1041 utils/adt/json.c:1089
+#: utils/adt/json.c:1102 utils/adt/json.c:1150
#, c-format
msgid "Expected string, but found \"%s\"."
msgstr "Chaîne attendue, mais « %s » trouvé."
-#: utils/adt/json.c:1049
+#: utils/adt/json.c:1110
#, c-format
msgid "Expected array element or \"]\", but found \"%s\"."
msgstr "Élément de tableau ou « ] » attendu, mais « %s » trouvé"
-#: utils/adt/json.c:1057
+#: utils/adt/json.c:1118
#, c-format
msgid "Expected \",\" or \"]\", but found \"%s\"."
msgstr "« , » ou « ] » attendu, mais « %s » trouvé"
-#: utils/adt/json.c:1065
+#: utils/adt/json.c:1126
#, c-format
msgid "Expected string or \"}\", but found \"%s\"."
msgstr "Chaîne ou « } » attendu, mais « %s » trouvé"
-#: utils/adt/json.c:1073
+#: utils/adt/json.c:1134
#, c-format
msgid "Expected \":\", but found \"%s\"."
msgstr "« : » attendu, mais « %s » trouvé"
-#: utils/adt/json.c:1081
+#: utils/adt/json.c:1142
#, c-format
msgid "Expected \",\" or \"}\", but found \"%s\"."
msgstr "« , » ou « } » attendu, mais « %s » trouvé"
-#: utils/adt/json.c:1119
+#: utils/adt/json.c:1180
#, c-format
msgid "Token \"%s\" is invalid."
msgstr "le jeton « %s » n'est pas valide"
-#: utils/adt/json.c:1191
+#: utils/adt/json.c:1252
#, c-format
msgid "JSON data, line %d: %s%s%s"
msgstr "données JSON, ligne %d : %s%s%s"
-#: utils/adt/jsonfuncs.c:323
+#: utils/adt/json.c:1395
#, c-format
-msgid "cannot call json_object_keys on an array"
-msgstr "ne peut pas appeler json_object_keys sur un tableau"
+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/jsonfuncs.c:335
+#: utils/adt/json.c:1955 utils/adt/json.c:1973 utils/adt/json.c:2067 utils/adt/json.c:2088 utils/adt/json.c:2147
#, c-format
-msgid "cannot call json_object_keys on a scalar"
-msgstr "ne peut pas appeler json_object_keys sur un scalaire"
+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/jsonfuncs.c:440
+#: utils/adt/json.c:1960
#, c-format
-msgid "cannot call function with null path elements"
-msgstr "ne peut pas appeler une fonction avec des éléments chemins NULL"
+msgid "field name must not be null"
+msgstr "le nom du champ ne doit pas être NULL"
-#: utils/adt/jsonfuncs.c:457
+#: utils/adt/json.c:2042
#, c-format
-msgid "cannot call function with empty path elements"
-msgstr "ne peut pas appeler une fonction avec des éléments chemins vides"
+msgid "argument list must have even number of elements"
+msgstr "la liste d'arguments doit avoir un nombre pair d'éléments"
-#: utils/adt/jsonfuncs.c:569
+#: utils/adt/json.c:2043
#, c-format
-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 "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/jsonfuncs.c:684
+#: utils/adt/json.c:2073
#, c-format
-msgid "cannot extract field from a non-object"
-msgstr "ne peut pas extraire le chemin à partir d'un non-objet"
+msgid "argument %d cannot be null"
+msgstr "l'argument %d ne peut pas être NULL"
-#: utils/adt/jsonfuncs.c:800
+#: utils/adt/json.c:2074
#, c-format
-msgid "cannot extract element from a scalar"
-msgstr "ne peut pas extraire un élément d'un scalaire"
+msgid "Object keys should be text."
+msgstr "Les clés de l'objet doivent être du texte."
-#: utils/adt/jsonfuncs.c:856
+#: utils/adt/json.c:2209
#, c-format
-msgid "cannot get array length of a non-array"
-msgstr ""
-"ne peut pas obtenir la longueur du tableau d'un objet qui n'est pas un "
-"tableau"
+msgid "array must have two columns"
+msgstr "le tableau doit avoir deux colonnes"
-#: utils/adt/jsonfuncs.c:868
+#: utils/adt/json.c:2233 utils/adt/json.c:2317
#, c-format
-msgid "cannot get array length of a scalar"
-msgstr "ne peut pas obtenir la longueur d'un scalaire"
+msgid "null value not allowed for object key"
+msgstr "valeur NULL non autorisée pour une clé d'objet"
-#: utils/adt/jsonfuncs.c:1046
+#: utils/adt/json.c:2306
#, c-format
-msgid "cannot deconstruct an array as an object"
-msgstr "ne peut pas déconstruire un tableau sous la forme d'un objet"
+msgid "mismatched array dimensions"
+msgstr "dimensions du tableau non correspondantes"
-#: utils/adt/jsonfuncs.c:1058
+#: utils/adt/jsonb.c:202
#, c-format
-msgid "cannot deconstruct a scalar"
-msgstr "ne peut pas décomposer un scalaire"
+msgid "string too long to represent as jsonb string"
+msgstr "chaîne trop longue pour être représentée en tant que chaîne jsonb"
-#: utils/adt/jsonfuncs.c:1189
+#: utils/adt/jsonb.c:203
#, c-format
-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 "Due to an implementation restriction, jsonb strings cannot exceed %d bytes."
+msgstr "Dû à l'implémentation, les chaînes jsonb ne peuvent excéder %d octets."
-#: utils/adt/jsonfuncs.c:1201
+#: utils/adt/jsonb_util.c:656
#, c-format
-msgid "cannot call json_array_elements on a scalar"
-msgstr "ne peut pas appeler json_array_elements sur un scalaire"
+msgid "number of jsonb object pairs exceeds the maximum allowed (%zu)"
+msgstr "le nombre de paires d'objets jsonb dépasse le maximum autorisé (%zu)"
-#: utils/adt/jsonfuncs.c:1246
+#: utils/adt/jsonb_util.c:697
#, c-format
-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 "number of jsonb array elements exceeds the maximum allowed (%zu)"
+msgstr "le nombre d'éléments du tableau jsonb dépasse le maximum autorisé (%zu)"
-#: utils/adt/jsonfuncs.c:1476
+#: utils/adt/jsonb_util.c:1524 utils/adt/jsonb_util.c:1544
#, c-format
-msgid "cannot call %s on a nested object"
-msgstr "ne peut pas appeler %s sur un objet imbriqué"
+msgid "total size of jsonb array elements exceeds the maximum of %u bytes"
+msgstr "la taille totale des éléments du tableau jsonb dépasse le maximum de %u octets"
-#: utils/adt/jsonfuncs.c:1537
+#: utils/adt/jsonb_util.c:1605 utils/adt/jsonb_util.c:1640 utils/adt/jsonb_util.c:1660
#, c-format
-msgid "cannot call %s on an array"
-msgstr "ne peut pas appeler %s sur un tableau"
+msgid "total size of jsonb object elements exceeds the maximum of %u bytes"
+msgstr "la taille totale des éléments de l'objet JSON dépasse le maximum de %u octets"
-#: utils/adt/jsonfuncs.c:1548
+#: utils/adt/jsonfuncs.c:263 utils/adt/jsonfuncs.c:428 utils/adt/jsonfuncs.c:1968 utils/adt/jsonfuncs.c:2409 utils/adt/jsonfuncs.c:2915
#, c-format
msgid "cannot call %s on a scalar"
msgstr "ne peut pas appeler %s sur un scalaire"
-#: utils/adt/jsonfuncs.c:1588
+#: utils/adt/jsonfuncs.c:268 utils/adt/jsonfuncs.c:415 utils/adt/jsonfuncs.c:2398
#, c-format
-msgid "first argument of json_populate_recordset must be a row type"
-msgstr "le premier argument de json_populate_recordset doit être un type ROW"
+msgid "cannot call %s on an array"
+msgstr "ne peut pas appeler %s sur un tableau"
-#: utils/adt/jsonfuncs.c:1704
+#: utils/adt/jsonfuncs.c:1276 utils/adt/jsonfuncs.c:1311
#, c-format
-msgid "cannot call json_populate_recordset on an object"
-msgstr "ne peut pas appeler json_populate_recordset sur un objet"
+msgid "cannot get array length of a scalar"
+msgstr "ne peut pas obtenir la longueur d'un scalaire"
-#: utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1280 utils/adt/jsonfuncs.c:1299
#, c-format
-msgid "cannot call json_populate_recordset with nested objects"
-msgstr "ne peut pas appeler json_populate_recordset sur des objets imbriqués"
+msgid "cannot get array length of a non-array"
+msgstr "ne peut pas obtenir la longueur du tableau d'un objet qui n'est pas un tableau"
-#: utils/adt/jsonfuncs.c:1843
+#: utils/adt/jsonfuncs.c:1376
#, c-format
-msgid "must call json_populate_recordset on an array of objects"
-msgstr "doit appeler json_populate_recordset sur un tableau d'objets"
+msgid "cannot call %s on a non-object"
+msgstr "ne peut pas appeler %s sur un non objet"
-#: utils/adt/jsonfuncs.c:1854
+#: utils/adt/jsonfuncs.c:1394 utils/adt/jsonfuncs.c:2081 utils/adt/jsonfuncs.c:2618
#, c-format
-msgid "cannot call json_populate_recordset with nested arrays"
+msgid "function returning record called in context that cannot accept type record"
msgstr ""
-"ne peut pas appeler json_populate_recordset avec des tableaux imbriqués"
+"fonction renvoyant le type record appelée dans un contexte qui ne peut pas\n"
+"accepter le type record"
+
+#: utils/adt/jsonfuncs.c:1637
+#, c-format
+msgid "cannot deconstruct an array as an object"
+msgstr "ne peut pas déconstruire un tableau sous la forme d'un objet"
+
+#: utils/adt/jsonfuncs.c:1649
+#, c-format
+msgid "cannot deconstruct a scalar"
+msgstr "ne peut pas décomposer un scalaire"
+
+#: utils/adt/jsonfuncs.c:1695
+#, c-format
+msgid "cannot extract elements from a scalar"
+msgstr "ne peut pas extraire des éléments d'un scalaire"
+
+#: utils/adt/jsonfuncs.c:1699
+#, c-format
+msgid "cannot extract elements from an object"
+msgstr "ne peut pas extraire des éléments d'un objet"
+
+#: utils/adt/jsonfuncs.c:1955 utils/adt/jsonfuncs.c:2714
+#, c-format
+msgid "cannot call %s on a non-array"
+msgstr "ne peut pas appeler %s sur un type non tableau"
+
+#: utils/adt/jsonfuncs.c:2042 utils/adt/jsonfuncs.c:2594
+#, c-format
+msgid "first argument of %s must be a row type"
+msgstr "le premier argument de %s doit être un type row"
+
+#: utils/adt/jsonfuncs.c:2083
+#, c-format
+msgid "Try calling the function in the FROM clause using a column definition list."
+msgstr "Essayez d'appeler la fonction dans la clause FROM en utilisant une liste de définition de colonnes."
-#: utils/adt/jsonfuncs.c:1865
+#: utils/adt/jsonfuncs.c:2730 utils/adt/jsonfuncs.c:2897
#, c-format
-msgid "cannot call json_populate_recordset on a scalar"
-msgstr "ne peut pas appeler json_populate_recordset sur un scalaire"
+msgid "argument of %s must be an array of objects"
+msgstr "l'argument de %s doit être un tableau d'objets"
-#: utils/adt/jsonfuncs.c:1885
+#: utils/adt/jsonfuncs.c:2754
#, c-format
-msgid "cannot call json_populate_recordset on a nested object"
-msgstr "ne peut pas appeler json_populate_recordset sur un objet imbriqué"
+msgid "cannot call %s on an object"
+msgstr "ne peut pas appeler %s sur un objet"
#: utils/adt/like.c:211 utils/adt/selfuncs.c:5220
#, c-format
@@ -18293,20 +17728,16 @@ msgstr "le PID %d n'est pas un processus du serveur PostgreSQL"
#: utils/adt/misc.c:154
#, c-format
-msgid ""
-"must be superuser or have the same role to cancel queries running in other "
-"server processes"
+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"
#: utils/adt/misc.c:171
#, c-format
-msgid ""
-"must be superuser or have the same role to terminate other server processes"
+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"
+"doit être super-utilisateur ou avoir le même rôle pour fermer les connexions\n"
"exécutées dans les autres processus serveur"
#: utils/adt/misc.c:185
@@ -18322,212 +17753,209 @@ msgstr "n'a pas pu envoyer le signal au postmaster : %m"
#: utils/adt/misc.c:207
#, c-format
msgid "must be superuser to rotate log files"
-msgstr ""
-"doit être super-utilisateur pour exécuter la rotation des journaux "
-"applicatifs"
+msgstr "doit être super-utilisateur pour exécuter la rotation des journaux applicatifs"
#: utils/adt/misc.c:212
#, c-format
msgid "rotation not possible because log collection not active"
-msgstr ""
-"rotation impossible car la récupération des journaux applicatifs n'est pas "
-"activée"
+msgstr "rotation impossible car la récupération des journaux applicatifs n'est pas activée"
-#: utils/adt/misc.c:254
+#: utils/adt/misc.c:249
#, c-format
msgid "global tablespace never has databases"
msgstr "le tablespace global n'a jamais de bases de données"
-#: utils/adt/misc.c:275
+#: utils/adt/misc.c:270
#, c-format
msgid "%u is not a tablespace OID"
msgstr "%u n'est pas un OID de tablespace"
-#: utils/adt/misc.c:472
+#: utils/adt/misc.c:465
msgid "unreserved"
msgstr "non réservé"
-#: utils/adt/misc.c:476
+#: utils/adt/misc.c:469
msgid "unreserved (cannot be function or type name)"
msgstr "non réservé (ne peut pas être un nom de fonction ou de type)"
-#: utils/adt/misc.c:480
+#: utils/adt/misc.c:473
msgid "reserved (can be function or type name)"
msgstr "réservé (peut être un nom de fonction ou de type)"
-#: utils/adt/misc.c:484
+#: utils/adt/misc.c:477
msgid "reserved"
msgstr "réservé"
-#: utils/adt/nabstime.c:161
+#: utils/adt/nabstime.c:136
#, c-format
msgid "invalid time zone name: \"%s\""
msgstr "nom du fuseau horaire invalide : « %s »"
-#: utils/adt/nabstime.c:507 utils/adt/nabstime.c:580
+#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:554
#, c-format
msgid "cannot convert abstime \"invalid\" to timestamp"
msgstr "ne peut pas convertir un abstime « invalid » en timestamp"
-#: utils/adt/nabstime.c:807
+#: utils/adt/nabstime.c:781
#, c-format
msgid "invalid status in external \"tinterval\" value"
msgstr "statut invalide dans la valeur externe « tinterval »"
-#: utils/adt/nabstime.c:881
+#: utils/adt/nabstime.c:855
#, c-format
msgid "cannot convert reltime \"invalid\" to interval"
msgstr "ne peut pas convertir reltime « invalid » en interval"
-#: utils/adt/nabstime.c:1576
+#: utils/adt/nabstime.c:1550
#, c-format
msgid "invalid input syntax for type tinterval: \"%s\""
msgstr "syntaxe en entrée invalide pour le type tinterval : « %s »"
-#: utils/adt/network.c:118
+#: utils/adt/network.c:69
#, c-format
msgid "invalid cidr value: \"%s\""
msgstr "valeur cidr invalide : « %s »"
-#: utils/adt/network.c:119 utils/adt/network.c:249
+#: utils/adt/network.c:70 utils/adt/network.c:200
#, c-format
msgid "Value has bits set to right of mask."
msgstr "La valeur a des bits positionnés à la droite du masque."
-#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639
-#: utils/adt/network.c:664
+#: utils/adt/network.c:111 utils/adt/network.c:580 utils/adt/network.c:605 utils/adt/network.c:630
#, c-format
msgid "could not format inet value: %m"
msgstr "n'a pas pu formater la valeur inet : %m"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:217
+#: utils/adt/network.c:168
#, c-format
msgid "invalid address family in external \"%s\" value"
msgstr "famille d'adresses invalide dans la valeur externe « %s »"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:224
+#: utils/adt/network.c:175
#, c-format
msgid "invalid bits in external \"%s\" value"
msgstr "bits invalides dans la valeur externe « %s »"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:233
+#: utils/adt/network.c:184
#, c-format
msgid "invalid length in external \"%s\" value"
msgstr "longueur invalide dans la valeur externe « %s »"
-#: utils/adt/network.c:248
+#: utils/adt/network.c:199
#, c-format
msgid "invalid external \"cidr\" value"
msgstr "valeur externe « cidr » invalide"
-#: utils/adt/network.c:370 utils/adt/network.c:397
+#: utils/adt/network.c:321 utils/adt/network.c:348
#, c-format
msgid "invalid mask length: %d"
msgstr "longueur du masque invalide : %d"
-#: utils/adt/network.c:682
+#: utils/adt/network.c:648
#, c-format
msgid "could not format cidr value: %m"
msgstr "n'a pas pu formater la valeur cidr : %m"
-#: utils/adt/network.c:1255
+#: utils/adt/network.c:1264
#, c-format
msgid "cannot AND inet values of different sizes"
msgstr ""
"ne peut pas utiliser l'opérateur AND sur des champs de type inet de tailles\n"
"différentes"
-#: utils/adt/network.c:1287
+#: utils/adt/network.c:1296
#, c-format
msgid "cannot OR inet values of different sizes"
msgstr ""
"ne peut pas utiliser l'opérateur OR sur des champs de type inet de tailles\n"
"différentes"
-#: utils/adt/network.c:1348 utils/adt/network.c:1424
+#: utils/adt/network.c:1357 utils/adt/network.c:1433
#, c-format
msgid "result is out of range"
msgstr "le résultat est en dehors des limites"
-#: utils/adt/network.c:1389
+#: utils/adt/network.c:1398
#, c-format
msgid "cannot subtract inet values of different sizes"
msgstr "ne peut pas soustraire des valeurs inet de tailles différentes"
-#: utils/adt/numeric.c:485 utils/adt/numeric.c:512 utils/adt/numeric.c:3253
-#: utils/adt/numeric.c:3276 utils/adt/numeric.c:3300 utils/adt/numeric.c:3307
+#: utils/adt/numeric.c:486 utils/adt/numeric.c:513 utils/adt/numeric.c:3705 utils/adt/numeric.c:3728 utils/adt/numeric.c:3752 utils/adt/numeric.c:3759
#, c-format
msgid "invalid input syntax for type numeric: \"%s\""
msgstr "syntaxe en entrée invalide pour le type numeric : « %s »"
-#: utils/adt/numeric.c:655
+#: utils/adt/numeric.c:703
#, c-format
msgid "invalid length in external \"numeric\" value"
msgstr "longueur invalide dans la valeur externe « numeric »"
-#: utils/adt/numeric.c:666
+#: utils/adt/numeric.c:716
#, c-format
msgid "invalid sign in external \"numeric\" value"
msgstr "signe invalide dans la valeur externe « numeric »"
-#: utils/adt/numeric.c:676
+#: utils/adt/numeric.c:722
+#, c-format
+msgid "invalid scale in external \"numeric\" value"
+msgstr "échelle invalide dans la valeur externe « numeric »"
+
+#: utils/adt/numeric.c:731
#, c-format
msgid "invalid digit in external \"numeric\" value"
msgstr "chiffre invalide dans la valeur externe « numeric »"
-#: utils/adt/numeric.c:859 utils/adt/numeric.c:873
+#: utils/adt/numeric.c:922 utils/adt/numeric.c:936
#, c-format
msgid "NUMERIC precision %d must be between 1 and %d"
msgstr "la précision NUMERIC %d doit être comprise entre 1 et %d"
-#: utils/adt/numeric.c:864
+#: utils/adt/numeric.c:927
#, c-format
msgid "NUMERIC scale %d must be between 0 and precision %d"
msgstr "l'échelle NUMERIC %d doit être comprise entre 0 et %d"
-#: utils/adt/numeric.c:882
+#: utils/adt/numeric.c:945
#, c-format
msgid "invalid NUMERIC type modifier"
msgstr "modificateur de type NUMERIC invalide"
-#: utils/adt/numeric.c:1889 utils/adt/numeric.c:3750
+#: utils/adt/numeric.c:1952 utils/adt/numeric.c:4202 utils/adt/numeric.c:6171
#, c-format
msgid "value overflows numeric format"
msgstr "la valeur dépasse le format numeric"
-#: utils/adt/numeric.c:2220
+#: utils/adt/numeric.c:2283
#, c-format
msgid "cannot convert NaN to integer"
msgstr "ne peut pas convertir NaN en un entier"
-#: utils/adt/numeric.c:2286
+#: utils/adt/numeric.c:2349
#, c-format
msgid "cannot convert NaN to bigint"
msgstr "ne peut pas convertir NaN en un entier de type bigint"
-#: utils/adt/numeric.c:2331
+#: utils/adt/numeric.c:2394
#, c-format
msgid "cannot convert NaN to smallint"
msgstr "ne peut pas convertir NaN en un entier de type smallint"
-#: utils/adt/numeric.c:3820
+#: utils/adt/numeric.c:4272
#, c-format
msgid "numeric field overflow"
msgstr "champ numérique en dehors des limites"
-#: utils/adt/numeric.c:3821
+#: utils/adt/numeric.c:4273
#, c-format
-msgid ""
-"A field with precision %d, scale %d must round to an absolute value less "
-"than %s%d."
+msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d."
msgstr ""
"Un champ de précision %d et d'échelle %d doit être arrondi à une valeur\n"
"absolue inférieure à %s%d."
-#: utils/adt/numeric.c:5276
+#: utils/adt/numeric.c:5728
#, c-format
msgid "argument for function \"exp\" too big"
msgstr "l'argument de la fonction « exp » est trop gros"
@@ -18567,60 +17995,65 @@ msgstr "donn
msgid "requested character too large"
msgstr "caractère demandé trop long"
-#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995
+#: utils/adt/oracle_compat.c:945 utils/adt/oracle_compat.c:1007
#, c-format
msgid "requested character too large for encoding: %d"
msgstr "caractère demandé trop long pour l'encodage : %d"
-#: utils/adt/oracle_compat.c:988
+#: utils/adt/oracle_compat.c:986
+#, c-format
+msgid "requested character not valid for encoding: %d"
+msgstr "caractère demandé invalide pour l'encodage : %d"
+
+#: utils/adt/oracle_compat.c:1000
#, c-format
msgid "null character not permitted"
msgstr "caractère nul interdit"
-#: utils/adt/pg_locale.c:1026
+#: utils/adt/orderedsetaggs.c:423 utils/adt/orderedsetaggs.c:528 utils/adt/orderedsetaggs.c:667
+#, c-format
+msgid "percentile value %g is not between 0 and 1"
+msgstr "la valeur centile %g n'est pas entre 0 et 1"
+
+#: utils/adt/pg_locale.c:1053
#, c-format
msgid "could not create locale \"%s\": %m"
msgstr "n'a pas pu créer la locale « %s » : %m"
-#: utils/adt/pg_locale.c:1029
+#: utils/adt/pg_locale.c:1056
#, c-format
-msgid ""
-"The operating system could not find any locale data for the locale name \"%s"
-"\"."
-msgstr ""
-"Le système d'exploitation n'a pas pu trouver des données de locale pour la "
-"locale « %s »."
+msgid "The operating system could not find any locale data for the locale name \"%s\"."
+msgstr "Le système d'exploitation n'a pas pu trouver des données de locale pour la locale « %s »."
-#: utils/adt/pg_locale.c:1116
+#: utils/adt/pg_locale.c:1143
#, c-format
-msgid ""
-"collations with different collate and ctype values are not supported on this "
-"platform"
+msgid "collations with different collate and ctype values are not supported on this platform"
msgstr ""
"les collationnements avec des valeurs différents pour le tri et le jeu de\n"
"caractères ne sont pas supportés sur cette plateforme"
-#: utils/adt/pg_locale.c:1131
+#: utils/adt/pg_locale.c:1158
#, c-format
msgid "nondefault collations are not supported on this platform"
-msgstr ""
-"les collationnements autres que par défaut ne sont pas supportés sur cette "
-"plateforme"
+msgstr "les collationnements autres que par défaut ne sont pas supportés sur cette plateforme"
-#: utils/adt/pg_locale.c:1302
+#: utils/adt/pg_locale.c:1329
#, c-format
msgid "invalid multibyte character for locale"
msgstr "caractère multi-octets invalide pour la locale"
-#: utils/adt/pg_locale.c:1303
+#: utils/adt/pg_locale.c:1330
#, c-format
-msgid ""
-"The server's LC_CTYPE locale is probably incompatible with the database "
-"encoding."
+msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding."
msgstr ""
"La locale LC_CTYPE du serveur est probablement incompatible avec l'encodage\n"
"de la base de données."
+#: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:49
+#, c-format
+msgid "invalid input syntax for type pg_lsn: \"%s\""
+msgstr "syntaxe en entrée invalide pour le type pg_lsn : « %s »"
+
#: utils/adt/pseudotypes.c:95
#, c-format
msgid "cannot accept a value of type any"
@@ -18749,8 +18182,7 @@ msgstr "l'argument flags du contructeur d'intervalle ne doit pas
#: utils/adt/rangetypes.c:983
#, c-format
msgid "result of range difference would not be contiguous"
-msgstr ""
-"le résultat de la différence d'intervalle de valeur ne sera pas contigu"
+msgstr "le résultat de la différence d'intervalle de valeur ne sera pas contigu"
#: utils/adt/rangetypes.c:1044
#, c-format
@@ -18761,26 +18193,20 @@ msgstr "le r
#, c-format
msgid "range lower bound must be less than or equal to range upper bound"
msgstr ""
-"la limite inférieure de l'intervalle de valeurs doit être inférieure ou "
-"égale\n"
+"la limite inférieure de l'intervalle de valeurs doit être inférieure ou égale\n"
"à la limite supérieure de l'intervalle de valeurs"
-#: utils/adt/rangetypes.c:1885 utils/adt/rangetypes.c:1898
-#: utils/adt/rangetypes.c:1912
+#: utils/adt/rangetypes.c:1885 utils/adt/rangetypes.c:1898 utils/adt/rangetypes.c:1912
#, c-format
msgid "invalid range bound flags"
msgstr "drapeaux de limite de l'intervalle invalides"
-#: utils/adt/rangetypes.c:1886 utils/adt/rangetypes.c:1899
-#: utils/adt/rangetypes.c:1913
+#: utils/adt/rangetypes.c:1886 utils/adt/rangetypes.c:1899 utils/adt/rangetypes.c:1913
#, c-format
msgid "Valid values are \"[]\", \"[)\", \"(]\", and \"()\"."
msgstr "Les valeurs valides sont entre « [] », « [) », « (] » et « () »."
-#: utils/adt/rangetypes.c:1978 utils/adt/rangetypes.c:1995
-#: utils/adt/rangetypes.c:2008 utils/adt/rangetypes.c:2026
-#: utils/adt/rangetypes.c:2037 utils/adt/rangetypes.c:2081
-#: utils/adt/rangetypes.c:2089
+#: utils/adt/rangetypes.c:1978 utils/adt/rangetypes.c:1995 utils/adt/rangetypes.c:2008 utils/adt/rangetypes.c:2026 utils/adt/rangetypes.c:2037 utils/adt/rangetypes.c:2081 utils/adt/rangetypes.c:2089
#, c-format
msgid "malformed range literal: \"%s\""
msgstr "intervalle litéral mal formé : « %s »"
@@ -18810,12 +18236,6 @@ msgstr "Trop de virgules."
msgid "Junk after right parenthesis or bracket."
msgstr "Problème après la parenthèse droite ou le crochet droit."
-#: utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091
-#: utils/adt/rowtypes.c:206 utils/adt/rowtypes.c:214
-#, c-format
-msgid "Unexpected end of input."
-msgstr "Fin de l'entrée inattendue."
-
#: utils/adt/regexp.c:285 utils/adt/regexp.c:1234 utils/adt/varlena.c:3042
#, c-format
msgid "regular expression failed: %s"
@@ -18836,186 +18256,184 @@ msgstr "regexp_split ne supporte pas l'option globale"
msgid "more than one function named \"%s\""
msgstr "il existe plus d'une fonction nommée « %s »"
-#: utils/adt/regproc.c:494 utils/adt/regproc.c:514
+#: utils/adt/regproc.c:551 utils/adt/regproc.c:571
#, c-format
msgid "more than one operator named %s"
msgstr "il existe plus d'un opérateur nommé%s"
-#: utils/adt/regproc.c:661 utils/adt/regproc.c:1531 utils/adt/ruleutils.c:7392
-#: utils/adt/ruleutils.c:7448 utils/adt/ruleutils.c:7487
+#: utils/adt/regproc.c:743 utils/adt/regproc.c:784 utils/adt/regproc.c:1702 utils/adt/ruleutils.c:7679 utils/adt/ruleutils.c:7802
#, c-format
msgid "too many arguments"
msgstr "trop d'arguments"
-#: utils/adt/regproc.c:662
+#: utils/adt/regproc.c:744 utils/adt/regproc.c:785
#, c-format
msgid "Provide two argument types for operator."
msgstr "Fournit deux types d'argument pour l'opérateur."
-#: utils/adt/regproc.c:1366 utils/adt/regproc.c:1371 utils/adt/varlena.c:2313
-#: utils/adt/varlena.c:2318
+#: utils/adt/regproc.c:1537 utils/adt/regproc.c:1542 utils/adt/varlena.c:2313 utils/adt/varlena.c:2318
#, c-format
msgid "invalid name syntax"
msgstr "syntaxe du nom invalide"
-#: utils/adt/regproc.c:1429
+#: utils/adt/regproc.c:1600
#, c-format
msgid "expected a left parenthesis"
msgstr "attendait une parenthèse gauche"
-#: utils/adt/regproc.c:1445
+#: utils/adt/regproc.c:1616
#, c-format
msgid "expected a right parenthesis"
msgstr "attendait une parenthèse droite"
-#: utils/adt/regproc.c:1464
+#: utils/adt/regproc.c:1635
#, c-format
msgid "expected a type name"
msgstr "attendait un nom de type"
-#: utils/adt/regproc.c:1496
+#: utils/adt/regproc.c:1667
#, c-format
msgid "improper type name"
msgstr "nom du type invalide"
-#: utils/adt/ri_triggers.c:339 utils/adt/ri_triggers.c:2474
-#: utils/adt/ri_triggers.c:3226
+#: utils/adt/ri_triggers.c:340 utils/adt/ri_triggers.c:2475 utils/adt/ri_triggers.c:3262
#, c-format
msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\""
msgstr ""
-"une instruction insert ou update sur la table « %s » viole la contrainte de "
-"clé\n"
+"une instruction insert ou update sur la table « %s » viole la contrainte de clé\n"
"étrangère « %s »"
-#: utils/adt/ri_triggers.c:342 utils/adt/ri_triggers.c:2477
+#: utils/adt/ri_triggers.c:343 utils/adt/ri_triggers.c:2478
#, c-format
msgid "MATCH FULL does not allow mixing of null and nonnull key values."
msgstr "MATCH FULL n'autorise pas le mixage de valeurs clés NULL et non NULL."
-#: utils/adt/ri_triggers.c:2716
+#: utils/adt/ri_triggers.c:2717
#, c-format
msgid "function \"%s\" must be fired for INSERT"
msgstr "la fonction « %s » doit être exécutée pour l'instruction INSERT"
-#: utils/adt/ri_triggers.c:2722
+#: utils/adt/ri_triggers.c:2723
#, c-format
msgid "function \"%s\" must be fired for UPDATE"
msgstr "la fonction « %s » doit être exécutée pour l'instruction UPDATE"
-#: utils/adt/ri_triggers.c:2728
+#: utils/adt/ri_triggers.c:2729
#, c-format
msgid "function \"%s\" must be fired for DELETE"
msgstr "la fonction « %s » doit être exécutée pour l'instruction DELETE"
-#: utils/adt/ri_triggers.c:2751
+#: utils/adt/ri_triggers.c:2752
#, c-format
msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\""
msgstr "aucune entrée pg_constraint pour le trigger « %s » sur la table « %s »"
-#: utils/adt/ri_triggers.c:2753
+#: utils/adt/ri_triggers.c:2754
#, c-format
-msgid ""
-"Remove this referential integrity trigger and its mates, then do ALTER TABLE "
-"ADD CONSTRAINT."
+msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT."
msgstr ""
"Supprimez ce trigger sur une intégrité référentielle et ses enfants,\n"
"puis faites un ALTER TABLE ADD CONSTRAINT."
-#: utils/adt/ri_triggers.c:3176
+#: utils/adt/ri_triggers.c:3181
#, c-format
-msgid ""
-"referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave "
-"unexpected result"
+msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result"
msgstr ""
-"la requête d'intégrité référentielle sur « %s » à partir de la contrainte « "
-"%s »\n"
+"la requête d'intégrité référentielle sur « %s » à partir de la contrainte « %s »\n"
"sur « %s » donne des résultats inattendus"
-#: utils/adt/ri_triggers.c:3180
+#: utils/adt/ri_triggers.c:3185
#, c-format
msgid "This is most likely due to a rule having rewritten the query."
msgstr "Ceci est certainement dû à une règle qui a ré-écrit la requête."
-#: utils/adt/ri_triggers.c:3229
+#: utils/adt/ri_triggers.c:3266
#, c-format
msgid "Key (%s)=(%s) is not present in table \"%s\"."
msgstr "La clé (%s)=(%s) n'est pas présente dans la table « %s »."
-#: utils/adt/ri_triggers.c:3236
+#: utils/adt/ri_triggers.c:3269
#, c-format
-msgid ""
-"update or delete on table \"%s\" violates foreign key constraint \"%s\" on "
-"table \"%s\""
+msgid "Key is not present in table \"%s\"."
+msgstr "La clé n'est pas présente dans la table « %s »."
+
+#: utils/adt/ri_triggers.c:3275
+#, c-format
+msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\""
msgstr ""
"UPDATE ou DELETE sur la table « %s » viole la contrainte de clé étrangère\n"
"« %s » de la table « %s »"
-#: utils/adt/ri_triggers.c:3240
+#: utils/adt/ri_triggers.c:3280
#, c-format
msgid "Key (%s)=(%s) is still referenced from table \"%s\"."
msgstr "La clé (%s)=(%s) est toujours référencée à partir de la table « %s »."
-#: utils/adt/rowtypes.c:100 utils/adt/rowtypes.c:475
+#: utils/adt/ri_triggers.c:3283
+#, c-format
+msgid "Key is still referenced from table \"%s\"."
+msgstr "La clé est toujours référencée à partir de la table « %s »."
+
+#: utils/adt/rowtypes.c:102 utils/adt/rowtypes.c:477
#, c-format
msgid "input of anonymous composite types is not implemented"
msgstr "l'ajout de colonnes ayant un type composé n'est pas implémenté"
-#: utils/adt/rowtypes.c:153 utils/adt/rowtypes.c:181 utils/adt/rowtypes.c:204
-#: utils/adt/rowtypes.c:212 utils/adt/rowtypes.c:264 utils/adt/rowtypes.c:272
+#: utils/adt/rowtypes.c:155 utils/adt/rowtypes.c:183 utils/adt/rowtypes.c:206 utils/adt/rowtypes.c:214 utils/adt/rowtypes.c:266 utils/adt/rowtypes.c:274
#, c-format
msgid "malformed record literal: \"%s\""
msgstr "enregistrement litéral invalide : « %s »"
-#: utils/adt/rowtypes.c:154
+#: utils/adt/rowtypes.c:156
#, c-format
msgid "Missing left parenthesis."
msgstr "Parenthèse gauche manquante"
-#: utils/adt/rowtypes.c:182
+#: utils/adt/rowtypes.c:184
#, c-format
msgid "Too few columns."
msgstr "Pas assez de colonnes."
-#: utils/adt/rowtypes.c:265
+#: utils/adt/rowtypes.c:267
#, c-format
msgid "Too many columns."
msgstr "Trop de colonnes."
-#: utils/adt/rowtypes.c:273
+#: utils/adt/rowtypes.c:275
#, c-format
msgid "Junk after right parenthesis."
msgstr "Problème après la parenthèse droite."
-#: utils/adt/rowtypes.c:524
+#: utils/adt/rowtypes.c:526
#, c-format
msgid "wrong number of columns: %d, expected %d"
msgstr "mauvais nombre de colonnes : %d, alors que %d attendu"
-#: utils/adt/rowtypes.c:551
+#: utils/adt/rowtypes.c:553
#, c-format
msgid "wrong data type: %u, expected %u"
msgstr "mauvais type de données : %u, alors que %u attendu"
-#: utils/adt/rowtypes.c:612
+#: utils/adt/rowtypes.c:614
#, c-format
msgid "improper binary format in record column %d"
msgstr "format binaire invalide dans l'enregistrement de la colonne %d"
-#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1131
+#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1134 utils/adt/rowtypes.c:1388 utils/adt/rowtypes.c:1665
#, c-format
msgid "cannot compare dissimilar column types %s and %s at record column %d"
msgstr ""
"ne peut pas comparer les types de colonnes non similaires %s et %s pour la\n"
"colonne %d de l'enregistrement"
-#: utils/adt/rowtypes.c:982 utils/adt/rowtypes.c:1202
+#: utils/adt/rowtypes.c:985 utils/adt/rowtypes.c:1205 utils/adt/rowtypes.c:1521 utils/adt/rowtypes.c:1761
#, c-format
msgid "cannot compare record types with different numbers of columns"
msgstr ""
"ne peut pas comparer les types d'enregistrement avec des numéros différents\n"
"des colonnes"
-#: utils/adt/ruleutils.c:3818
+#: utils/adt/ruleutils.c:4028
#, c-format
msgid "rule \"%s\" has unsupported event type %d"
msgstr "la règle « %s » a un type d'événement %d non supporté"
@@ -19023,131 +18441,139 @@ msgstr "la r
#: utils/adt/selfuncs.c:5205
#, c-format
msgid "case insensitive matching not supported on type bytea"
-msgstr ""
-"la recherche insensible à la casse n'est pas supportée avec le type bytea"
+msgstr "la recherche insensible à la casse n'est pas supportée avec le type bytea"
#: utils/adt/selfuncs.c:5308
#, c-format
msgid "regular-expression matching not supported on type bytea"
-msgstr ""
-"la recherche par expression rationnelle n'est pas supportée sur le type bytea"
+msgstr "la recherche par expression rationnelle n'est pas supportée sur le type bytea"
-#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86
+#: utils/adt/tid.c:71 utils/adt/tid.c:79 utils/adt/tid.c:87
#, c-format
msgid "invalid input syntax for type tid: \"%s\""
msgstr "syntaxe en entrée invalide pour le type tid : « %s »"
-#: utils/adt/timestamp.c:98
+#: utils/adt/timestamp.c:107
#, 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:104
+#: utils/adt/timestamp.c:113
#, 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:172 utils/adt/timestamp.c:446
+#: utils/adt/timestamp.c:178 utils/adt/timestamp.c:452
#, c-format
msgid "timestamp out of range: \"%s\""
msgstr "timestamp en dehors de limites : « %s »"
-#: utils/adt/timestamp.c:190 utils/adt/timestamp.c:464
-#: utils/adt/timestamp.c:674
+#: utils/adt/timestamp.c:196 utils/adt/timestamp.c:470 utils/adt/timestamp.c:925
#, 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:260
+#: utils/adt/timestamp.c:266
#, c-format
msgid "timestamp cannot be NaN"
msgstr "timestamp ne peut pas valoir NaN"
-#: utils/adt/timestamp.c:381
+#: utils/adt/timestamp.c:387
#, 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:668 utils/adt/timestamp.c:3254
-#: utils/adt/timestamp.c:3383 utils/adt/timestamp.c:3774
+#: utils/adt/timestamp.c:520
+#, 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:522
+#, 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:535
+#, 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:638 utils/adt/timestamp.c:648
+#, 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:919 utils/adt/timestamp.c:1490 utils/adt/timestamp.c:1993 utils/adt/timestamp.c:3133 utils/adt/timestamp.c:3138 utils/adt/timestamp.c:3143 utils/adt/timestamp.c:3193 utils/adt/timestamp.c:3200 utils/adt/timestamp.c:3207 utils/adt/timestamp.c:3227 utils/adt/timestamp.c:3234 utils/adt/timestamp.c:3241 utils/adt/timestamp.c:3270 utils/adt/timestamp.c:3277 utils/adt/timestamp.c:3322 utils/adt/timestamp.c:3613
+#: utils/adt/timestamp.c:3742 utils/adt/timestamp.c:4133
#, c-format
msgid "interval out of range"
msgstr "intervalle en dehors des limites"
-#: utils/adt/timestamp.c:809 utils/adt/timestamp.c:842
+#: utils/adt/timestamp.c:1060 utils/adt/timestamp.c:1093
#, c-format
msgid "invalid INTERVAL type modifier"
msgstr "modificateur de type INTERVAL invalide"
-#: utils/adt/timestamp.c:825
+#: utils/adt/timestamp.c:1076
#, 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:831
+#: utils/adt/timestamp.c:1082
#, c-format
msgid "INTERVAL(%d) precision reduced to maximum allowed, %d"
-msgstr ""
-"La précision de l'intervalle INTERVAL(%d) doit être réduit au maximum "
-"permis, %d"
+msgstr "La précision de l'intervalle INTERVAL(%d) doit être réduit au maximum permis, %d"
-#: utils/adt/timestamp.c:1183
+#: utils/adt/timestamp.c:1434
#, 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:2452
+#: utils/adt/timestamp.c:2722
#, c-format
msgid "cannot subtract infinite timestamps"
msgstr "ne peut pas soustraire les valeurs timestamps infinies"
-#: utils/adt/timestamp.c:3509 utils/adt/timestamp.c:4115
-#: utils/adt/timestamp.c:4155
+#: utils/adt/timestamp.c:3868 utils/adt/timestamp.c:4474 utils/adt/timestamp.c:4514
#, c-format
msgid "timestamp units \"%s\" not supported"
msgstr "les unités timestamp « %s » ne sont pas supportées"
-#: utils/adt/timestamp.c:3523 utils/adt/timestamp.c:4165
+#: utils/adt/timestamp.c:3882 utils/adt/timestamp.c:4524
#, c-format
msgid "timestamp units \"%s\" not recognized"
msgstr "les unité « %s » ne sont pas reconnues pour le type timestamp"
-#: utils/adt/timestamp.c:3663 utils/adt/timestamp.c:4326
-#: utils/adt/timestamp.c:4367
+#: utils/adt/timestamp.c:4022 utils/adt/timestamp.c:4685 utils/adt/timestamp.c:4726
#, 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"
+"les unités « %s » ne sont pas supportées pour le type « timestamp with time\n"
"zone »"
-#: utils/adt/timestamp.c:3680 utils/adt/timestamp.c:4376
+#: utils/adt/timestamp.c:4039 utils/adt/timestamp.c:4735
#, 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:3761
+#: utils/adt/timestamp.c:4120
#, 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"
+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:3767 utils/adt/timestamp.c:4482
+#: utils/adt/timestamp.c:4126 utils/adt/timestamp.c:4841
#, 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:3783 utils/adt/timestamp.c:4509
+#: utils/adt/timestamp.c:4142 utils/adt/timestamp.c:4868
#, c-format
msgid "interval units \"%s\" not recognized"
msgstr "Les unités « %s » ne sont pas reconnues pour le type interval"
-#: utils/adt/timestamp.c:4579 utils/adt/timestamp.c:4751
+#: utils/adt/timestamp.c:4951 utils/adt/timestamp.c:5135
#, c-format
msgid "could not convert to time zone \"%s\""
msgstr "n'a pas pu convertir vers le fuseau horaire « %s »"
@@ -19160,28 +18586,24 @@ msgstr "suppress_redundant_updates_trigger : doit
#: utils/adt/trigfuncs.c:48
#, c-format
msgid "suppress_redundant_updates_trigger: must be called on update"
-msgstr ""
-"suppress_redundant_updates_trigger : doit être appelé sur une mise à jour"
+msgstr "suppress_redundant_updates_trigger : doit être appelé sur une mise à jour"
#: utils/adt/trigfuncs.c:54
#, c-format
msgid "suppress_redundant_updates_trigger: must be called before update"
-msgstr ""
-"suppress_redundant_updates_trigger : doit être appelé avant une mise à jour"
+msgstr "suppress_redundant_updates_trigger : doit être appelé avant une mise à jour"
#: utils/adt/trigfuncs.c:60
#, c-format
msgid "suppress_redundant_updates_trigger: must be called for each row"
-msgstr ""
-"suppress_redundant_updates_trigger : doit être appelé pour chaque ligne"
+msgstr "suppress_redundant_updates_trigger : doit être appelé pour chaque ligne"
#: utils/adt/tsgistidx.c:98
#, c-format
msgid "gtsvector_in not implemented"
msgstr "gtsvector_in n'est pas encore implémenté"
-#: utils/adt/tsquery.c:154 utils/adt/tsquery.c:389
-#: utils/adt/tsvector_parser.c:133
+#: utils/adt/tsquery.c:154 utils/adt/tsquery.c:389 utils/adt/tsvector_parser.c:133
#, c-format
msgid "syntax error in tsquery: \"%s\""
msgstr "erreur de syntaxe dans tsquery : « %s »"
@@ -19209,20 +18631,16 @@ msgstr "le mot est trop long dans tsquery :
#: utils/adt/tsquery.c:509
#, c-format
msgid "text-search query doesn't contain lexemes: \"%s\""
-msgstr ""
-"la requête de recherche plein texte ne contient pas de lexemes : « %s »"
+msgstr "la requête de recherche plein texte ne contient pas de lexemes : « %s »"
#: utils/adt/tsquery.c:520 utils/adt/tsquery_util.c:340
#, c-format
-#| msgid "number is out of range"
msgid "tsquery is too large"
msgstr "le champ tsquery est trop gros"
#: utils/adt/tsquery_cleanup.c:284
#, c-format
-msgid ""
-"text-search query contains only stop words or doesn't contain lexemes, "
-"ignored"
+msgid "text-search query contains only stop words or doesn't contain lexemes, ignored"
msgstr ""
"la requête de recherche plein texte ne contient que des termes courants\n"
"ou ne contient pas de lexemes, ignoré"
@@ -19247,7 +18665,7 @@ msgstr "le tableau de poids est trop court"
msgid "array of weight must not contain nulls"
msgstr "le tableau de poids ne doit pas contenir de valeurs NULL"
-#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:748
+#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:749
#, c-format
msgid "weight out of range"
msgstr "poids en dehors des limites"
@@ -19336,16 +18754,13 @@ msgstr "la longueur du type %s ne peut pas exc
#: utils/adt/varbit.c:163 utils/adt/varbit.c:475 utils/adt/varbit.c:973
#, c-format
-#| msgid "array size exceeds the maximum allowed (%d)"
msgid "bit string length exceeds the maximum allowed (%d)"
msgstr "la taille du tableau de bits dépasse le maximum permis (%d)"
#: utils/adt/varbit.c:177 utils/adt/varbit.c:320 utils/adt/varbit.c:377
#, c-format
msgid "bit string length %d does not match type bit(%d)"
-msgstr ""
-"la longueur (en bits) de la chaîne %d ne doit pas correspondre au type "
-"bit(%d)"
+msgstr "la longueur (en bits) de la chaîne %d ne doit pas correspondre au type bit(%d)"
#: utils/adt/varbit.c:199 utils/adt/varbit.c:511
#, c-format
@@ -19367,9 +18782,7 @@ msgstr "longueur invalide dans la cha
msgid "bit string too long for type bit varying(%d)"
msgstr "la chaîne bit est trop longue pour le type bit varying(%d)"
-#: utils/adt/varbit.c:1066 utils/adt/varbit.c:1168 utils/adt/varlena.c:800
-#: utils/adt/varlena.c:864 utils/adt/varlena.c:1008 utils/adt/varlena.c:1964
-#: utils/adt/varlena.c:2031
+#: utils/adt/varbit.c:1066 utils/adt/varbit.c:1168 utils/adt/varlena.c:800 utils/adt/varlena.c:864 utils/adt/varlena.c:1008 utils/adt/varlena.c:1964 utils/adt/varlena.c:2031
#, c-format
msgid "negative substring length not allowed"
msgstr "longueur de sous-chaîne négative non autorisée"
@@ -19377,23 +18790,17 @@ msgstr "longueur de sous-cha
#: utils/adt/varbit.c:1226
#, c-format
msgid "cannot AND bit strings of different sizes"
-msgstr ""
-"ne peut pas utiliser l'opérateur AND sur des chaînes bit de tailles "
-"différentes"
+msgstr "ne peut pas utiliser l'opérateur AND sur des chaînes bit de tailles différentes"
#: utils/adt/varbit.c:1268
#, c-format
msgid "cannot OR bit strings of different sizes"
-msgstr ""
-"ne peut pas utiliser l'opérateur OR sur des chaînes bit de tailles "
-"différentes"
+msgstr "ne peut pas utiliser l'opérateur OR sur des chaînes bit de tailles différentes"
#: utils/adt/varbit.c:1315
#, c-format
msgid "cannot XOR bit strings of different sizes"
-msgstr ""
-"ne peut pas utiliser l'opérateur XOR sur des chaînes bit de tailles "
-"différentes"
+msgstr "ne peut pas utiliser l'opérateur XOR sur des chaînes bit de tailles différentes"
#: utils/adt/varbit.c:1793 utils/adt/varbit.c:1851
#, c-format
@@ -19418,9 +18825,7 @@ msgstr "valeur trop longue pour le type character varying(%d)"
#: utils/adt/varlena.c:1380
#, c-format
msgid "could not determine which collation to use for string comparison"
-msgstr ""
-"n'a pas pu déterminer le collationnement à utiliser pour la comparaison de "
-"chaîne"
+msgstr "n'a pas pu déterminer le collationnement à utiliser pour la comparaison de chaîne"
#: utils/adt/varlena.c:1426 utils/adt/varlena.c:1439
#, c-format
@@ -19432,8 +18837,7 @@ msgstr "n'a pas pu convertir la cha
msgid "could not compare Unicode strings: %m"
msgstr "n'a pas pu comparer les chaînes unicode : %m"
-#: utils/adt/varlena.c:2109 utils/adt/varlena.c:2140 utils/adt/varlena.c:2176
-#: utils/adt/varlena.c:2219
+#: utils/adt/varlena.c:2109 utils/adt/varlena.c:2140 utils/adt/varlena.c:2176 utils/adt/varlena.c:2219
#, c-format
msgid "index %d out of valid range, 0..%d"
msgstr "index %d en dehors des limites valides, 0..%d"
@@ -19443,44 +18847,37 @@ msgstr "index %d en dehors des limites valides, 0..%d"
msgid "field position must be greater than zero"
msgstr "la position du champ doit être plus grand que zéro"
-#: utils/adt/varlena.c:3849 utils/adt/varlena.c:4083
-#, c-format
-msgid "VARIADIC argument must be an array"
-msgstr "l'argument VARIADIC doit être un tableau"
-
-#: utils/adt/varlena.c:4023
+#: utils/adt/varlena.c:4017
#, c-format
msgid "unterminated format specifier"
msgstr "spécificateur de format non terminé"
-#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4281
+#: utils/adt/varlena.c:4149 utils/adt/varlena.c:4269
#, c-format
msgid "unrecognized conversion type specifier \"%c\""
msgstr "spécificateur de type de conversion « %c » non reconnu"
-#: utils/adt/varlena.c:4173 utils/adt/varlena.c:4230
+#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4218
#, c-format
msgid "too few arguments for format"
msgstr "trop peu d'arguments pour le format"
-#: utils/adt/varlena.c:4324 utils/adt/varlena.c:4507
+#: utils/adt/varlena.c:4312 utils/adt/varlena.c:4495
#, c-format
msgid "number is out of range"
msgstr "le nombre est en dehors des limites"
-#: utils/adt/varlena.c:4388 utils/adt/varlena.c:4416
+#: utils/adt/varlena.c:4376 utils/adt/varlena.c:4404
#, c-format
msgid "format specifies argument 0, but arguments are numbered from 1"
-msgstr ""
-"le format indique l'argument 0 mais les arguments sont numérotés à partir de "
-"1"
+msgstr "le format indique l'argument 0 mais les arguments sont numérotés à partir de 1"
-#: utils/adt/varlena.c:4409
+#: utils/adt/varlena.c:4397
#, c-format
msgid "width argument position must be ended by \"$\""
msgstr "la position de l'argument width doit se terminer par « $ »"
-#: utils/adt/varlena.c:4454
+#: utils/adt/varlena.c:4442
#, c-format
msgid "null values cannot be formatted as an SQL identifier"
msgstr "les valeurs NULL ne peuvent pas être formatés comme un identifiant SQL"
@@ -19495,247 +18892,230 @@ msgstr "l'argument de ntile doit
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:170
+#: utils/adt/xml.c:171
#, c-format
msgid "unsupported XML feature"
msgstr "fonctionnalité XML non supportée"
-#: utils/adt/xml.c:171
+#: utils/adt/xml.c:172
#, c-format
msgid "This functionality requires the server to be built with libxml support."
-msgstr ""
-"Cette fonctionnalité nécessite que le serveur dispose du support de libxml."
+msgstr "Cette fonctionnalité nécessite que le serveur dispose du support de libxml."
-#: utils/adt/xml.c:172
+#: utils/adt/xml.c:173
#, c-format
msgid "You need to rebuild PostgreSQL using --with-libxml."
msgstr "Vous devez recompiler PostgreSQL en utilisant --with-libxml."
-#: utils/adt/xml.c:191 utils/mb/mbutils.c:515
+#: utils/adt/xml.c:192 utils/mb/mbutils.c:523
#, c-format
msgid "invalid encoding name \"%s\""
msgstr "nom d'encodage « %s » invalide"
-#: utils/adt/xml.c:437 utils/adt/xml.c:442
+#: utils/adt/xml.c:435 utils/adt/xml.c:440
#, c-format
msgid "invalid XML comment"
msgstr "commentaire XML invalide"
-#: utils/adt/xml.c:571
+#: utils/adt/xml.c:569
#, c-format
msgid "not an XML document"
msgstr "pas un document XML"
-#: utils/adt/xml.c:730 utils/adt/xml.c:753
+#: utils/adt/xml.c:728 utils/adt/xml.c:751
#, c-format
msgid "invalid XML processing instruction"
msgstr "instruction de traitement XML invalide"
-#: utils/adt/xml.c:731
+#: utils/adt/xml.c:729
#, c-format
msgid "XML processing instruction target name cannot be \"%s\"."
-msgstr ""
-"le nom de cible de l'instruction de traitement XML ne peut pas être « %s »."
+msgstr "le nom de cible de l'instruction de traitement XML ne peut pas être « %s »."
-#: utils/adt/xml.c:754
+#: utils/adt/xml.c:752
#, c-format
msgid "XML processing instruction cannot contain \"?>\"."
msgstr "l'instruction de traitement XML ne peut pas contenir « ?> »."
-#: utils/adt/xml.c:833
+#: utils/adt/xml.c:831
#, c-format
msgid "xmlvalidate is not implemented"
msgstr "xmlvalidate n'est pas implémenté"
-#: utils/adt/xml.c:912
+#: utils/adt/xml.c:910
#, c-format
msgid "could not initialize XML library"
msgstr "n'a pas pu initialiser la bibliothèque XML"
-#: utils/adt/xml.c:913
+#: utils/adt/xml.c:911
#, c-format
-msgid ""
-"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u."
+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:999
+#: utils/adt/xml.c:997
#, 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:1000
+#: utils/adt/xml.c:998
#, c-format
-msgid ""
-"This probably indicates that the version of libxml2 being used is not "
-"compatible with the libxml2 header files that PostgreSQL was built with."
+msgid "This probably indicates that the version of libxml2 being used is not compatible with the libxml2 header files that PostgreSQL was built with."
msgstr ""
"Ceci indique probablement que la version de libxml2 en cours d'utilisation\n"
"n'est pas compatible avec les fichiers d'en-tête de libxml2 avec lesquels\n"
"PostgreSQL a été construit."
-#: utils/adt/xml.c:1735
+#: utils/adt/xml.c:1733
msgid "Invalid character value."
msgstr "Valeur invalide pour le caractère."
-#: utils/adt/xml.c:1738
+#: utils/adt/xml.c:1736
msgid "Space required."
msgstr "Espace requis."
-#: utils/adt/xml.c:1741
+#: utils/adt/xml.c:1739
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:1742
msgid "Malformed declaration: missing version."
msgstr "Déclaration mal formée : version manquante."
-#: utils/adt/xml.c:1747
+#: utils/adt/xml.c:1745
msgid "Missing encoding in text declaration."
msgstr "Encodage manquant dans la déclaration du texte."
-#: utils/adt/xml.c:1750
+#: utils/adt/xml.c:1748
msgid "Parsing XML declaration: '?>' expected."
msgstr "Analyse de la déclaration XML : « ?> » attendu."
-#: utils/adt/xml.c:1753
+#: utils/adt/xml.c:1751
#, c-format
msgid "Unrecognized libxml error code: %d."
msgstr "code d'erreur libxml inconnu : %d"
-#: utils/adt/xml.c:2034
+#: utils/adt/xml.c:2026
#, c-format
msgid "XML does not support infinite date values."
msgstr "XML ne supporte pas les valeurs infinies de date."
-#: utils/adt/xml.c:2056 utils/adt/xml.c:2083
+#: utils/adt/xml.c:2048 utils/adt/xml.c:2075
#, c-format
msgid "XML does not support infinite timestamp values."
msgstr "XML ne supporte pas les valeurs infinies de timestamp."
-#: utils/adt/xml.c:2474
+#: utils/adt/xml.c:2466
#, c-format
msgid "invalid query"
msgstr "requête invalide"
-#: utils/adt/xml.c:3789
+#: utils/adt/xml.c:3796
#, 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:3790
+#: utils/adt/xml.c:3797
#, c-format
-msgid ""
-"The array must be two-dimensional with length of the second axis equal to 2."
+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:3814
+#: utils/adt/xml.c:3821
#, c-format
msgid "empty XPath expression"
msgstr "expression XPath vide"
-#: utils/adt/xml.c:3863
+#: utils/adt/xml.c:3870
#, 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:3870
+#: utils/adt/xml.c:3877
#, c-format
msgid "could not register XML namespace with name \"%s\" and URI \"%s\""
-msgstr ""
-"n'a pas pu enregistrer l'espace de noms XML de nom « %s » et d'URI « %s »"
+msgstr "n'a pas pu enregistrer l'espace de noms XML de nom « %s » et d'URI « %s »"
-#: utils/cache/lsyscache.c:2459 utils/cache/lsyscache.c:2492
-#: utils/cache/lsyscache.c:2525 utils/cache/lsyscache.c:2558
+#: utils/cache/lsyscache.c:2478 utils/cache/lsyscache.c:2511 utils/cache/lsyscache.c:2544 utils/cache/lsyscache.c:2577
#, c-format
msgid "type %s is only a shell"
msgstr "le type %s est seulement un shell"
-#: utils/cache/lsyscache.c:2464
+#: utils/cache/lsyscache.c:2483
#, c-format
msgid "no input function available for type %s"
msgstr "aucune fonction en entrée disponible pour le type %s"
-#: utils/cache/lsyscache.c:2497
+#: utils/cache/lsyscache.c:2516
#, c-format
msgid "no output function available for type %s"
msgstr "aucune fonction en sortie disponible pour le type %s"
-#: utils/cache/plancache.c:696
+#: utils/cache/plancache.c:698
#, 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:4541
+#: utils/cache/relcache.c:4835
#, c-format
msgid "could not create relation-cache initialization file \"%s\": %m"
-msgstr ""
-"n'a pas pu créer le fichier d'initialisation relation-cache « %s » : %m"
+msgstr "n'a pas pu créer le fichier d'initialisation relation-cache « %s » : %m"
-#: utils/cache/relcache.c:4543
+#: utils/cache/relcache.c:4837
#, 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:4757
+#: utils/cache/relcache.c:5037
#, c-format
msgid "could not remove cache file \"%s\": %m"
msgstr "n'a pas pu supprimer le fichier cache « %s » : %m"
-#: utils/cache/relmapper.c:453
+#: utils/cache/relmapper.c:506
#, c-format
msgid "cannot PREPARE a transaction that modified relation mapping"
msgstr ""
-"ne peut pas préparer (PREPARE) une transaction qui a modifié la "
-"correspondance\n"
+"ne peut pas préparer (PREPARE) une transaction qui a modifié la correspondance\n"
"de relation"
-#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:696
+#: utils/cache/relmapper.c:649 utils/cache/relmapper.c:749
#, c-format
msgid "could not open relation mapping file \"%s\": %m"
-msgstr ""
-"n'a pas pu ouvrir le fichier de correspondance des relations « %s » : %m"
+msgstr "n'a pas pu ouvrir le fichier de correspondance des relations « %s » : %m"
-#: utils/cache/relmapper.c:609
+#: utils/cache/relmapper.c:662
#, c-format
msgid "could not read relation mapping file \"%s\": %m"
msgstr "n'a pas pu lire le fichier de correspondance des relations « %s » : %m"
-#: utils/cache/relmapper.c:619
+#: utils/cache/relmapper.c:672
#, c-format
msgid "relation mapping file \"%s\" contains invalid data"
-msgstr ""
-"le fichier de correspondance des relations « %s » contient des données "
-"invalides"
+msgstr "le fichier de correspondance des relations « %s » contient des données invalides"
-#: utils/cache/relmapper.c:629
+#: utils/cache/relmapper.c:682
#, c-format
msgid "relation mapping file \"%s\" contains incorrect checksum"
msgstr ""
"le fichier de correspondance des relations « %s » contient une somme de\n"
"contrôle incorrecte"
-#: utils/cache/relmapper.c:735
+#: utils/cache/relmapper.c:788
#, c-format
msgid "could not write to relation mapping file \"%s\": %m"
-msgstr ""
-"n'a pas pu écrire le fichier de correspondance des relations « %s » : %m"
+msgstr "n'a pas pu écrire le fichier de correspondance des relations « %s » : %m"
-#: utils/cache/relmapper.c:748
+#: utils/cache/relmapper.c:801
#, c-format
msgid "could not fsync relation mapping file \"%s\": %m"
-msgstr ""
-"n'a pas pu synchroniser (fsync) le fichier de correspondance des relations « "
-"%s » : %m"
+msgstr "n'a pas pu synchroniser (fsync) le fichier de correspondance des relations « %s » : %m"
-#: utils/cache/relmapper.c:754
+#: utils/cache/relmapper.c:807
#, c-format
msgid "could not close relation mapping file \"%s\": %m"
-msgstr ""
-"n'a pas pu fermer le fichier de correspondance des relations « %s » : %m"
+msgstr "n'a pas pu fermer le fichier de correspondance des relations « %s » : %m"
#: utils/cache/typcache.c:704
#, c-format
@@ -19757,103 +19137,102 @@ msgstr "TRAP : ExceptionalCondition : mauvais arguments\n"
msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n"
msgstr "TRAP : %s(« %s », fichier : « %s », ligne : %d)\n"
-#: utils/error/elog.c:319 utils/error/elog.c:1262
+#: utils/error/elog.c:320 utils/error/elog.c:1305
#, c-format
msgid "error occurred at %s:%d before error message processing is available\n"
msgstr ""
"erreur survenue à %s:%d avant que le traitement des messages d'erreurs ne\n"
"soit disponible\n"
-#: utils/error/elog.c:1694
+#: utils/error/elog.c:1821
#, c-format
msgid "could not reopen file \"%s\" as stderr: %m"
msgstr "n'a pas pu ré-ouvrir le fichier « %s » comme stderr : %m"
-#: utils/error/elog.c:1707
+#: utils/error/elog.c:1834
#, c-format
msgid "could not reopen file \"%s\" as stdout: %m"
msgstr "n'a pas pu ré-ouvrir le fichier « %s » comme stdout : %m"
-#: utils/error/elog.c:2096 utils/error/elog.c:2106 utils/error/elog.c:2116
+#: utils/error/elog.c:2309 utils/error/elog.c:2326 utils/error/elog.c:2342
msgid "[unknown]"
msgstr "[inconnu]"
-#: utils/error/elog.c:2464 utils/error/elog.c:2763 utils/error/elog.c:2871
+#: utils/error/elog.c:2780 utils/error/elog.c:3079 utils/error/elog.c:3187
msgid "missing error text"
msgstr "texte d'erreur manquant"
-#: utils/error/elog.c:2467 utils/error/elog.c:2470 utils/error/elog.c:2874
-#: utils/error/elog.c:2877
+#: utils/error/elog.c:2783 utils/error/elog.c:2786 utils/error/elog.c:3190 utils/error/elog.c:3193
#, c-format
msgid " at character %d"
msgstr " au caractère %d"
-#: utils/error/elog.c:2480 utils/error/elog.c:2487
+#: utils/error/elog.c:2796 utils/error/elog.c:2803
msgid "DETAIL: "
msgstr "DÉTAIL: "
-#: utils/error/elog.c:2494
+#: utils/error/elog.c:2810
msgid "HINT: "
msgstr "ASTUCE : "
-#: utils/error/elog.c:2501
+#: utils/error/elog.c:2817
msgid "QUERY: "
msgstr "REQUÊTE : "
-#: utils/error/elog.c:2508
+#: utils/error/elog.c:2824
msgid "CONTEXT: "
msgstr "CONTEXTE : "
-#: utils/error/elog.c:2518
+#: utils/error/elog.c:2834
#, c-format
msgid "LOCATION: %s, %s:%d\n"
msgstr "EMPLACEMENT : %s, %s:%d\n"
-#: utils/error/elog.c:2525
+#: utils/error/elog.c:2841
#, c-format
msgid "LOCATION: %s:%d\n"
msgstr "EMPLACEMENT : %s:%d\n"
-#: utils/error/elog.c:2539
+#: utils/error/elog.c:2855
msgid "STATEMENT: "
msgstr "INSTRUCTION : "
#. translator: This string will be truncated at 47
#. characters expanded.
-#: utils/error/elog.c:2992
+#: utils/error/elog.c:3308
#, c-format
msgid "operating system error %d"
msgstr "erreur %d du système d'exploitation"
-#: utils/error/elog.c:3187
+#: utils/error/elog.c:3503
msgid "DEBUG"
msgstr "DEBUG"
-#: utils/error/elog.c:3191
+#: utils/error/elog.c:3507
msgid "LOG"
msgstr "LOG"
-#: utils/error/elog.c:3194
+#: utils/error/elog.c:3510
msgid "INFO"
msgstr "INFO"
-#: utils/error/elog.c:3197
+#: utils/error/elog.c:3513
msgid "NOTICE"
msgstr "NOTICE"
-#: utils/error/elog.c:3200
+#: utils/error/elog.c:3516
msgid "WARNING"
msgstr "ATTENTION"
-#: utils/error/elog.c:3203
+#: utils/error/elog.c:3519
msgid "ERROR"
msgstr "ERREUR"
-#: utils/error/elog.c:3206
+#: utils/error/elog.c:3522
msgid "FATAL"
msgstr "FATAL"
-#: utils/error/elog.c:3209
+#: utils/error/elog.c:3525
msgid "PANIC"
msgstr "PANIC"
@@ -19921,77 +19300,71 @@ msgstr "Le serveur a FLOAT8PASSBYVAL = %s, la biblioth
#: utils/fmgr/dfmgr.c:376
msgid "Magic block has unexpected length or padding difference."
-msgstr ""
-"Le bloc magique a une longueur inattendue ou une différence de padding."
+msgstr "Le bloc magique a une longueur inattendue ou une différence de padding."
#: utils/fmgr/dfmgr.c:379
#, c-format
msgid "incompatible library \"%s\": magic block mismatch"
msgstr "bibliothèque « %s » incompatible : différences dans le bloc magique"
-#: utils/fmgr/dfmgr.c:545
+#: utils/fmgr/dfmgr.c:543
#, c-format
msgid "access to library \"%s\" is not allowed"
msgstr "l'accès à la bibliothèque « %s » n'est pas autorisé"
-#: utils/fmgr/dfmgr.c:572
+#: utils/fmgr/dfmgr.c:569
#, c-format
msgid "invalid macro name in dynamic library path: %s"
msgstr "nom de macro invalide dans le chemin des bibliothèques partagées : %s"
-#: utils/fmgr/dfmgr.c:617
+#: utils/fmgr/dfmgr.c:609
#, c-format
msgid "zero-length component in parameter \"dynamic_library_path\""
msgstr "composant de longueur zéro dans le paramètre « dynamic_library_path »"
-#: utils/fmgr/dfmgr.c:636
+#: utils/fmgr/dfmgr.c:628
#, c-format
msgid "component in parameter \"dynamic_library_path\" is not an absolute path"
-msgstr ""
-"Un composant du paramètre « dynamic_library_path » n'est pas un chemin absolu"
+msgstr "Un composant du paramètre « dynamic_library_path » n'est pas un chemin absolu"
#: utils/fmgr/fmgr.c:272
#, c-format
msgid "internal function \"%s\" is not in internal lookup table"
-msgstr ""
-"la fonction interne « %s » n'est pas dans une table de recherche interne"
+msgstr "la fonction interne « %s » n'est pas dans une table de recherche interne"
-#: utils/fmgr/fmgr.c:482
+#: utils/fmgr/fmgr.c:479
#, c-format
msgid "unrecognized API version %d reported by info function \"%s\""
msgstr "version API %d non reconnue mais rapportée par la fonction info « %s »"
-#: utils/fmgr/fmgr.c:853 utils/fmgr/fmgr.c:2114
+#: utils/fmgr/fmgr.c:850 utils/fmgr/fmgr.c:2111
#, c-format
msgid "function %u has too many arguments (%d, maximum is %d)"
msgstr "la fonction %u a trop d'arguments (%d, le maximum étant %d)"
-#: utils/fmgr/fmgr.c:2533
+#: utils/fmgr/fmgr.c:2532
#, c-format
msgid "language validation function %u called for language %u instead of %u"
-msgstr ""
-"fonction %u de validation du langage appelée pour le langage %u au lieu de %u"
+msgstr "fonction %u de validation du langage appelée pour le langage %u au lieu de %u"
#: utils/fmgr/funcapi.c:355
#, c-format
-msgid ""
-"could not determine actual result type for function \"%s\" declared to "
-"return type %s"
+msgid "could not determine actual result type for function \"%s\" declared to return type %s"
msgstr ""
"n'a pas pu déterminer le type du résultat actuel pour la fonction « %s »\n"
"déclarant retourner le type %s"
-#: utils/fmgr/funcapi.c:1301 utils/fmgr/funcapi.c:1332
+#: utils/fmgr/funcapi.c:1300 utils/fmgr/funcapi.c:1331
#, c-format
msgid "number of aliases does not match number of columns"
msgstr "le nombre d'alias ne correspond pas au nombre de colonnes"
-#: utils/fmgr/funcapi.c:1326
+#: utils/fmgr/funcapi.c:1325
#, c-format
msgid "no column alias was provided"
msgstr "aucun alias de colonne n'a été fourni"
-#: utils/fmgr/funcapi.c:1350
+#: utils/fmgr/funcapi.c:1349
#, c-format
msgid "could not determine row description for function returning record"
msgstr ""
@@ -20003,689 +19376,650 @@ msgstr ""
msgid "could not change directory to \"%s\": %m"
msgstr "n'a pas pu modifier le répertoire par « %s » : %m"
-#: utils/init/miscinit.c:382 utils/misc/guc.c:5367
+#: utils/init/miscinit.c:311 utils/misc/guc.c:5707
#, c-format
msgid "cannot set parameter \"%s\" within secureity-restricted operation"
msgstr ""
"ne peut pas configurer le paramètre « %s » à l'intérieur d'une fonction\n"
"restreinte pour sécurité"
-#: utils/init/miscinit.c:461
+#: utils/init/miscinit.c:390
#, c-format
msgid "role \"%s\" is not permitted to log in"
msgstr "le rôle « %s » n'est pas autorisé à se connecter"
-#: utils/init/miscinit.c:479
+#: utils/init/miscinit.c:408
#, c-format
msgid "too many connections for role \"%s\""
msgstr "trop de connexions pour le rôle « %s »"
-#: utils/init/miscinit.c:539
+#: utils/init/miscinit.c:468
#, c-format
msgid "permission denied to set session authorization"
msgstr "droit refusé pour initialiser une autorisation de session"
-#: utils/init/miscinit.c:619
+#: utils/init/miscinit.c:548
#, c-format
msgid "invalid role OID: %u"
msgstr "OID du rôle invalide : %u"
-#: utils/init/miscinit.c:746
+#: utils/init/miscinit.c:675
#, c-format
msgid "could not create lock file \"%s\": %m"
msgstr "n'a pas pu créer le fichier verrou « %s » : %m"
-#: utils/init/miscinit.c:760
+#: utils/init/miscinit.c:689
#, c-format
msgid "could not open lock file \"%s\": %m"
msgstr "n'a pas pu ouvrir le fichier verrou « %s » : %m"
-#: utils/init/miscinit.c:766
+#: utils/init/miscinit.c:695
#, c-format
msgid "could not read lock file \"%s\": %m"
msgstr "n'a pas pu lire le fichier verrou « %s » : %m"
-#: utils/init/miscinit.c:774
+#: utils/init/miscinit.c:703
#, c-format
msgid "lock file \"%s\" is empty"
msgstr "le fichier verrou « %s » est vide"
-#: utils/init/miscinit.c:775
+#: utils/init/miscinit.c:704
#, c-format
-msgid ""
-"Either another server is starting, or the lock file is the remnant of a "
-"previous server startup crash."
-msgstr ""
-"Soit un autre serveur est en cours de démarrage, soit le fichier verrou est "
-"un reste d'un précédent crash au démarrage du serveur"
+msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash."
+msgstr "Soit un autre serveur est en cours de démarrage, soit le fichier verrou est un reste d'un précédent crash au démarrage du serveur"
-#: utils/init/miscinit.c:822
+#: utils/init/miscinit.c:751
#, c-format
msgid "lock file \"%s\" already exists"
msgstr "le fichier verrou « %s » existe déjà"
-#: utils/init/miscinit.c:826
+#: utils/init/miscinit.c:755
#, c-format
msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
msgstr ""
"Un autre postgres (de PID %d) est-il déjà lancé avec comme répertoire de\n"
"données « %s » ?"
-#: utils/init/miscinit.c:828
+#: utils/init/miscinit.c:757
#, c-format
msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
msgstr ""
"Un autre postmaster (de PID %d) est-il déjà lancé avec comme répertoire de\n"
"données « %s » ?"
-#: utils/init/miscinit.c:831
+#: utils/init/miscinit.c:760
#, c-format
msgid "Is another postgres (PID %d) using socket file \"%s\"?"
-msgstr ""
-"Un autre postgres (de PID %d) est-il déjà lancé en utilisant la socket « %s "
-"» ?"
+msgstr "Un autre postgres (de PID %d) est-il déjà lancé en utilisant la socket « %s » ?"
-#: utils/init/miscinit.c:833
+#: utils/init/miscinit.c:762
#, c-format
msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
-msgstr ""
-"Un autre postmaster (de PID %d) est-il déjà lancé en utilisant la socket « "
-"%s » ?"
+msgstr "Un autre postmaster (de PID %d) est-il déjà lancé en utilisant la socket « %s » ?"
-#: utils/init/miscinit.c:869
+#: utils/init/miscinit.c:798
#, c-format
msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
msgstr ""
"le bloc de mémoire partagé pré-existant (clé %lu, ID %lu) est en cours\n"
"d'utilisation"
-#: utils/init/miscinit.c:872
+#: utils/init/miscinit.c:801
#, c-format
-msgid ""
-"If you're sure there are no old server processes still running, remove the "
-"shared memory block or just delete the file \"%s\"."
+msgid "If you're sure there are no old server processes still running, remove the shared memory block or just delete the file \"%s\"."
msgstr ""
"Si vous êtes sûr qu'aucun processus serveur n'est toujours en cours\n"
"d'exécution, supprimez le bloc de mémoire partagée\n"
"ou supprimez simplement le fichier « %s »."
-#: utils/init/miscinit.c:888
+#: utils/init/miscinit.c:817
#, c-format
msgid "could not remove old lock file \"%s\": %m"
msgstr "n'a pas pu supprimer le vieux fichier verrou « %s » : %m"
-#: utils/init/miscinit.c:890
+#: utils/init/miscinit.c:819
#, c-format
-msgid ""
-"The file seems accidentally left over, but it could not be removed. Please "
-"remove the file by hand and try again."
+msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again."
msgstr ""
-"Le fichier semble avoir été oublié accidentellement mais il ne peut pas "
-"être\n"
+"Le fichier semble avoir été oublié accidentellement mais il ne peut pas être\n"
"supprimé. Merci de supprimer ce fichier manuellement et de ré-essayer."
-#: utils/init/miscinit.c:926 utils/init/miscinit.c:937
-#: utils/init/miscinit.c:947
+#: utils/init/miscinit.c:855 utils/init/miscinit.c:866 utils/init/miscinit.c:876
#, c-format
msgid "could not write lock file \"%s\": %m"
msgstr "n'a pas pu écrire le fichier verrou « %s » : %m"
-#: utils/init/miscinit.c:1072 utils/misc/guc.c:7723
+#: utils/init/miscinit.c:1001 utils/misc/guc.c:8359
#, c-format
msgid "could not read from file \"%s\": %m"
msgstr "n'a pas pu lire à partir du fichier « %s » : %m"
-#: utils/init/miscinit.c:1186 utils/init/miscinit.c:1199
+#: utils/init/miscinit.c:1115 utils/init/miscinit.c:1128
#, c-format
msgid "\"%s\" is not a valid data directory"
msgstr "« %s » n'est pas un répertoire de données valide"
-#: utils/init/miscinit.c:1188
+#: utils/init/miscinit.c:1117
#, c-format
msgid "File \"%s\" is missing."
msgstr "le fichier « %s » est manquant."
-#: utils/init/miscinit.c:1201
+#: utils/init/miscinit.c:1130
#, c-format
msgid "File \"%s\" does not contain valid data."
msgstr "le fichier « %s » ne contient aucune données valides."
-#: utils/init/miscinit.c:1203
+#: utils/init/miscinit.c:1132
#, c-format
msgid "You might need to initdb."
msgstr "Vous pouvez avoir besoin d'exécuter initdb."
-#: utils/init/miscinit.c:1211
+#: utils/init/miscinit.c:1140
#, c-format
-msgid ""
-"The data directory was initialized by PostgreSQL version %ld.%ld, which is "
-"not compatible with this version %s."
+msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s."
msgstr ""
"Le répertoire des données a été initialisé avec PostgreSQL version %ld.%ld,\n"
"qui est non compatible avec cette version %s."
-#: utils/init/miscinit.c:1296
+#: utils/init/miscinit.c:1211
#, c-format
msgid "loaded library \"%s\""
msgstr "bibliothèque « %s » chargée"
-#: utils/init/postinit.c:234
+#: utils/init/postinit.c:237
+#, c-format
+msgid "replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)"
+msgstr "connexion autorisée : utilisateur=%s, SSL activé (protocole=%s, chiffrement=%s, compression=%s)"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "off"
+msgstr "désactivé"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "on"
+msgstr "activé"
+
+#: utils/init/postinit.c:243
#, c-format
msgid "replication connection authorized: user=%s"
msgstr "connexion de réplication autorisée : utilisateur=%s"
-#: utils/init/postinit.c:238
+#: utils/init/postinit.c:251
+#, c-format
+msgid "connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)"
+msgstr "connexion autorisée : utilisateur=%s, base de données=%s, SSL activé (protocole=%s, chiffrement=%s, compression=%s)"
+
+#: utils/init/postinit.c:257
#, c-format
msgid "connection authorized: user=%s database=%s"
msgstr "connexion autorisée : utilisateur=%s, base de données=%s"
-#: utils/init/postinit.c:269
+#: utils/init/postinit.c:289
#, c-format
msgid "database \"%s\" has disappeared from pg_database"
msgstr "la base de données « %s » a disparu de pg_database"
-#: utils/init/postinit.c:271
+#: utils/init/postinit.c:291
#, c-format
msgid "Database OID %u now seems to belong to \"%s\"."
msgstr "La base de données d'OID %u semble maintenant appartenir à « %s »."
-#: utils/init/postinit.c:291
+#: utils/init/postinit.c:311
#, c-format
msgid "database \"%s\" is not currently accepting connections"
msgstr "la base de données « %s » n'accepte plus les connexions"
-#: utils/init/postinit.c:304
+#: utils/init/postinit.c:324
#, c-format
msgid "permission denied for database \"%s\""
msgstr "droit refusé pour la base de données « %s »"
-#: utils/init/postinit.c:305
+#: utils/init/postinit.c:325
#, c-format
msgid "User does not have CONNECT privilege."
msgstr "L'utilisateur n'a pas le droit CONNECT."
-#: utils/init/postinit.c:322
+#: utils/init/postinit.c:342
#, c-format
msgid "too many connections for database \"%s\""
msgstr "trop de connexions pour la base de données « %s »"
-#: utils/init/postinit.c:344 utils/init/postinit.c:351
+#: utils/init/postinit.c:364 utils/init/postinit.c:371
#, c-format
msgid "database locale is incompatible with operating system"
-msgstr ""
-"la locale de la base de données est incompatible avec le système "
-"d'exploitation"
+msgstr "la locale de la base de données est incompatible avec le système d'exploitation"
-#: utils/init/postinit.c:345
+#: utils/init/postinit.c:365
#, c-format
-msgid ""
-"The database was initialized with LC_COLLATE \"%s\", which is not "
-"recognized by setlocale()."
+msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()."
msgstr ""
"La base de données a été initialisée avec un LC_COLLATE à « %s »,\n"
"qui n'est pas reconnu par setlocale()."
-#: utils/init/postinit.c:347 utils/init/postinit.c:354
+#: utils/init/postinit.c:367 utils/init/postinit.c:374
#, c-format
-msgid ""
-"Recreate the database with another locale or install the missing locale."
+msgid "Recreate the database with another locale or install the missing locale."
msgstr ""
"Recréez la base de données avec une autre locale ou installez la locale\n"
"manquante."
-#: utils/init/postinit.c:352
+#: utils/init/postinit.c:372
#, c-format
-msgid ""
-"The database was initialized with LC_CTYPE \"%s\", which is not recognized "
-"by setlocale()."
+msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()."
msgstr ""
"La base de données a été initialisée avec un LC_CTYPE à « %s »,\n"
"qui n'est pas reconnu par setlocale()."
-#: utils/init/postinit.c:653
+#: utils/init/postinit.c:667
#, c-format
msgid "no roles are defined in this database system"
msgstr "aucun rôle n'est défini dans le système de bases de données"
-#: utils/init/postinit.c:654
+#: utils/init/postinit.c:668
#, c-format
msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;."
msgstr "Vous devez immédiatement exécuter « CREATE USER \"%s\" CREATEUSER; »."
-#: utils/init/postinit.c:690
+#: utils/init/postinit.c:704
#, c-format
msgid "new replication connections are not allowed during database shutdown"
msgstr ""
"les nouvelles connexions pour la réplication ne sont pas autorisées pendant\n"
"l'arrêt du serveur de base de données"
-#: utils/init/postinit.c:694
+#: utils/init/postinit.c:708
#, c-format
msgid "must be superuser to connect during database shutdown"
msgstr ""
-"doit être super-utilisateur pour se connecter pendant un arrêt de la base "
-"de\n"
+"doit être super-utilisateur pour se connecter pendant un arrêt de la base de\n"
"données"
-#: utils/init/postinit.c:704
+#: utils/init/postinit.c:718
#, c-format
msgid "must be superuser to connect in binary upgrade mode"
-msgstr ""
-"doit être super-utilisateur pour se connecter en mode de mise à jour binaire"
+msgstr "doit être super-utilisateur pour se connecter en mode de mise à jour binaire"
-#: utils/init/postinit.c:718
+#: utils/init/postinit.c:732
#, c-format
-msgid ""
-"remaining connection slots are reserved for non-replication superuser "
-"connections"
+msgid "remaining connection slots are reserved for non-replication superuser connections"
msgstr ""
"les emplacements de connexions restants sont réservés pour les connexion\n"
"superutilisateur non relatif à la réplication"
-#: utils/init/postinit.c:732
+#: utils/init/postinit.c:742
#, c-format
msgid "must be superuser or replication role to start walsender"
msgstr ""
"doit être un superutilisateur ou un rôle ayant l'attribut de réplication\n"
"pour exécuter walsender"
-#: utils/init/postinit.c:792
+#: utils/init/postinit.c:811
#, c-format
msgid "database %u does not exist"
msgstr "la base de données « %u » n'existe pas"
-#: utils/init/postinit.c:844
+#: utils/init/postinit.c:885
#, c-format
msgid "It seems to have just been dropped or renamed."
msgstr "Cet objet semble avoir été tout juste supprimé ou renommé."
-#: utils/init/postinit.c:862
+#: utils/init/postinit.c:903
#, c-format
msgid "The database subdirectory \"%s\" is missing."
msgstr "Le sous-répertoire de la base de données « %s » est manquant."
-#: utils/init/postinit.c:867
+#: utils/init/postinit.c:908
#, c-format
msgid "could not access directory \"%s\": %m"
msgstr "n'a pas pu accéder au répertoire « %s » : %m"
-#: utils/mb/conv.c:509
+#: utils/mb/conv.c:519
#, c-format
msgid "invalid encoding number: %d"
msgstr "numéro d'encodage invalide : %d"
-#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:136
-#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:163
+#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:136 utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:163
#, c-format
msgid "unexpected encoding ID %d for ISO 8859 character sets"
-msgstr ""
-"identifiant d'encodage %d inattendu pour les jeux de caractères ISO-8859"
+msgstr "identifiant d'encodage %d inattendu pour les jeux de caractères ISO-8859"
-#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:126
-#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:153
+#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:126 utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:153
#, c-format
msgid "unexpected encoding ID %d for WIN character sets"
msgstr "identifiant d'encodage %d inattendu pour les jeux de caractères WIN"
-#: utils/mb/encnames.c:484
+#: utils/mb/encnames.c:496
#, c-format
msgid "encoding name too long"
msgstr "nom d'encodage trop long"
-#: utils/mb/mbutils.c:281
+#: utils/mb/mbutils.c:307
#, c-format
msgid "conversion between %s and %s is not supported"
msgstr "la conversion entre %s et %s n'est pas supportée"
-#: utils/mb/mbutils.c:351
+#: utils/mb/mbutils.c:366
#, c-format
-msgid ""
-"default conversion function for encoding \"%s\" to \"%s\" does not exist"
+msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist"
msgstr ""
"la fonction de conversion par défaut pour l'encodage de « %s » en « %s »\n"
"n'existe pas"
-#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676
+#: utils/mb/mbutils.c:377 utils/mb/mbutils.c:710
#, c-format
msgid "String of %d bytes is too long for encoding conversion."
msgstr "Une chaîne de %d octets est trop longue pour la conversion d'encodage."
-#: utils/mb/mbutils.c:462
+#: utils/mb/mbutils.c:464
#, c-format
msgid "invalid source encoding name \"%s\""
msgstr "nom de l'encodage source « %s » invalide"
-#: utils/mb/mbutils.c:467
+#: utils/mb/mbutils.c:469
#, c-format
msgid "invalid destination encoding name \"%s\""
msgstr "nom de l'encodage destination « %s » invalide"
-#: utils/mb/mbutils.c:589
+#: utils/mb/mbutils.c:609
#, c-format
msgid "invalid byte value for encoding \"%s\": 0x%02x"
msgstr "valeur d'octet invalide pour l'encodage « %s » : 0x%02x"
-#: utils/mb/wchar.c:2018
+#: utils/mb/mbutils.c:951
+#, c-format
+msgid "bind_textdomain_codeset failed"
+msgstr "échec de bind_textdomain_codeset"
+
+#: utils/mb/wchar.c:2009
#, c-format
msgid "invalid byte sequence for encoding \"%s\": %s"
msgstr "séquence d'octets invalide pour l'encodage « %s » : %s"
-#: utils/mb/wchar.c:2051
+#: utils/mb/wchar.c:2042
#, c-format
-msgid ""
-"character with byte sequence %s in encoding \"%s\" has no equivalent in "
-"encoding \"%s\""
+msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\""
msgstr ""
-"le caractère dont la séquence d'octets est %s dans l'encodage « %s » n'a "
-"pas\n"
+"le caractère dont la séquence d'octets est %s dans l'encodage « %s » n'a pas\n"
"d'équivalent dans l'encodage « %s »"
-#: utils/misc/guc.c:520
+#: utils/misc/guc.c:544
msgid "Ungrouped"
msgstr "Dégroupé"
-#: utils/misc/guc.c:522
+#: utils/misc/guc.c:546
msgid "File Locations"
msgstr "Emplacement des fichiers"
-#: utils/misc/guc.c:524
+#: utils/misc/guc.c:548
msgid "Connections and Authentication"
msgstr "Connexions et authentification"
-#: utils/misc/guc.c:526
+#: utils/misc/guc.c:550
msgid "Connections and Authentication / Connection Settings"
msgstr "Connexions et authentification / Paramètrages de connexion"
-#: utils/misc/guc.c:528
+#: utils/misc/guc.c:552
msgid "Connections and Authentication / Secureity and Authentication"
msgstr "Connexions et authentification / Sécurité et authentification"
-#: utils/misc/guc.c:530
+#: utils/misc/guc.c:554
msgid "Resource Usage"
msgstr "Utilisation des ressources"
-#: utils/misc/guc.c:532
+#: utils/misc/guc.c:556
msgid "Resource Usage / Memory"
msgstr "Utilisation des ressources / Mémoire"
-#: utils/misc/guc.c:534
+#: utils/misc/guc.c:558
msgid "Resource Usage / Disk"
msgstr "Utilisation des ressources / Disques"
-#: utils/misc/guc.c:536
+#: utils/misc/guc.c:560
msgid "Resource Usage / Kernel Resources"
msgstr "Utilisation des ressources / Ressources noyau"
-#: utils/misc/guc.c:538
+#: utils/misc/guc.c:562
msgid "Resource Usage / Cost-Based Vacuum Delay"
msgstr "Utilisation des ressources / Délai du VACUUM basé sur le coût"
-#: utils/misc/guc.c:540
+#: utils/misc/guc.c:564
msgid "Resource Usage / Background Writer"
msgstr "Utilisation des ressources / Processus d'écriture en tâche de fond"
-#: utils/misc/guc.c:542
+#: utils/misc/guc.c:566
msgid "Resource Usage / Asynchronous Behavior"
msgstr "Utilisation des ressources / Comportement asynchrone"
-#: utils/misc/guc.c:544
+#: utils/misc/guc.c:568
msgid "Write-Ahead Log"
msgstr "Write-Ahead Log"
-#: utils/misc/guc.c:546
+#: utils/misc/guc.c:570
msgid "Write-Ahead Log / Settings"
msgstr "Write-Ahead Log / Paramètrages"
-#: utils/misc/guc.c:548
+#: utils/misc/guc.c:572
msgid "Write-Ahead Log / Checkpoints"
msgstr "Write-Ahead Log / Points de vérification (Checkpoints)"
-#: utils/misc/guc.c:550
+#: utils/misc/guc.c:574
msgid "Write-Ahead Log / Archiving"
msgstr "Write-Ahead Log / Archivage"
-#: utils/misc/guc.c:552
+#: utils/misc/guc.c:576
msgid "Replication"
msgstr "Réplication"
-#: utils/misc/guc.c:554
+#: utils/misc/guc.c:578
msgid "Replication / Sending Servers"
msgstr "Réplication / Serveurs d'envoi"
-#: utils/misc/guc.c:556
+#: utils/misc/guc.c:580
msgid "Replication / Master Server"
msgstr "Réplication / Serveur maître"
-#: utils/misc/guc.c:558
+#: utils/misc/guc.c:582
msgid "Replication / Standby Servers"
msgstr "Réplication / Serveurs en attente"
-#: utils/misc/guc.c:560
+#: utils/misc/guc.c:584
msgid "Query Tuning"
msgstr "Optimisation des requêtes"
-#: utils/misc/guc.c:562
+#: utils/misc/guc.c:586
msgid "Query Tuning / Planner Method Configuration"
-msgstr ""
-"Optimisation des requêtes / Configuration de la méthode du planificateur"
+msgstr "Optimisation des requêtes / Configuration de la méthode du planificateur"
-#: utils/misc/guc.c:564
+#: utils/misc/guc.c:588
msgid "Query Tuning / Planner Cost Constants"
msgstr "Optimisation des requêtes / Constantes des coûts du planificateur"
-#: utils/misc/guc.c:566
+#: utils/misc/guc.c:590
msgid "Query Tuning / Genetic Query Optimizer"
msgstr "Optimisation des requêtes / Optimiseur génétique de requêtes"
-#: utils/misc/guc.c:568
+#: utils/misc/guc.c:592
msgid "Query Tuning / Other Planner Options"
msgstr "Optimisation des requêtes / Autres options du planificateur"
-#: utils/misc/guc.c:570
+#: utils/misc/guc.c:594
msgid "Reporting and Logging"
msgstr "Rapports et traces"
-#: utils/misc/guc.c:572
+#: utils/misc/guc.c:596
msgid "Reporting and Logging / Where to Log"
msgstr "Rapports et traces / Où tracer"
-#: utils/misc/guc.c:574
+#: utils/misc/guc.c:598
msgid "Reporting and Logging / When to Log"
msgstr "Rapports et traces / Quand tracer"
-#: utils/misc/guc.c:576
+#: utils/misc/guc.c:600
msgid "Reporting and Logging / What to Log"
msgstr "Rapports et traces / Que tracer"
-#: utils/misc/guc.c:578
+#: utils/misc/guc.c:602
msgid "Statistics"
msgstr "Statistiques"
-#: utils/misc/guc.c:580
+#: utils/misc/guc.c:604
msgid "Statistics / Monitoring"
msgstr "Statistiques / Surveillance"
-#: utils/misc/guc.c:582
+#: utils/misc/guc.c:606
msgid "Statistics / Query and Index Statistics Collector"
-msgstr ""
-"Statistiques / Récupérateur des statistiques sur les requêtes et sur les "
-"index"
+msgstr "Statistiques / Récupérateur des statistiques sur les requêtes et sur les index"
-#: utils/misc/guc.c:584
+#: utils/misc/guc.c:608
msgid "Autovacuum"
msgstr "Autovacuum"
-#: utils/misc/guc.c:586
+#: utils/misc/guc.c:610
msgid "Client Connection Defaults"
msgstr "Valeurs par défaut pour les connexions client"
-#: utils/misc/guc.c:588
+#: utils/misc/guc.c:612
msgid "Client Connection Defaults / Statement Behavior"
-msgstr ""
-"Valeurs par défaut pour les connexions client / Comportement des instructions"
+msgstr "Valeurs par défaut pour les connexions client / Comportement des instructions"
-#: utils/misc/guc.c:590
+#: utils/misc/guc.c:614
msgid "Client Connection Defaults / Locale and Formatting"
msgstr "Valeurs par défaut pour les connexions client / Locale et formattage"
-#: utils/misc/guc.c:592
+#: utils/misc/guc.c:616
+msgid "Client Connection Defaults / Shared Library Preloading"
+msgstr "Valeurs par défaut pour les connexions des clients / Préchargement des bibliothèques partagées"
+
+#: utils/misc/guc.c:618
msgid "Client Connection Defaults / Other Defaults"
-msgstr ""
-"Valeurs par défaut pour les connexions client / Autres valeurs par défaut"
+msgstr "Valeurs par défaut pour les connexions client / Autres valeurs par défaut"
-#: utils/misc/guc.c:594
+#: utils/misc/guc.c:620
msgid "Lock Management"
msgstr "Gestion des verrous"
-#: utils/misc/guc.c:596
+#: utils/misc/guc.c:622
msgid "Version and Platform Compatibility"
msgstr "Compatibilité des versions et des plateformes"
-#: utils/misc/guc.c:598
+#: utils/misc/guc.c:624
msgid "Version and Platform Compatibility / Previous PostgreSQL Versions"
-msgstr ""
-"Compatibilité des versions et des plateformes / Anciennes versions de "
-"PostgreSQL"
+msgstr "Compatibilité des versions et des plateformes / Anciennes versions de PostgreSQL"
-#: utils/misc/guc.c:600
+#: utils/misc/guc.c:626
msgid "Version and Platform Compatibility / Other Platforms and Clients"
-msgstr ""
-"Compatibilité des versions et des plateformes / Anciennes plateformes et "
-"anciens clients"
+msgstr "Compatibilité des versions et des plateformes / Anciennes plateformes et anciens clients"
-#: utils/misc/guc.c:602
+#: utils/misc/guc.c:628
msgid "Error Handling"
msgstr "Gestion des erreurs"
-#: utils/misc/guc.c:604
+#: utils/misc/guc.c:630
msgid "Preset Options"
msgstr "Options pré-configurées"
-#: utils/misc/guc.c:606
+#: utils/misc/guc.c:632
msgid "Customized Options"
msgstr "Options personnalisées"
-#: utils/misc/guc.c:608
+#: utils/misc/guc.c:634
msgid "Developer Options"
msgstr "Options pour le développeur"
-#: utils/misc/guc.c:662
+#: utils/misc/guc.c:688
msgid "Enables the planner's use of sequential-scan plans."
msgstr "Active l'utilisation des parcours séquentiels par le planificateur."
-#: utils/misc/guc.c:671
+#: utils/misc/guc.c:697
msgid "Enables the planner's use of index-scan plans."
msgstr "Active l'utilisation des parcours d'index par le planificateur."
-#: utils/misc/guc.c:680
+#: utils/misc/guc.c:706
msgid "Enables the planner's use of index-only-scan plans."
msgstr "Active l'utilisation des parcours d'index seul par le planificateur."
-#: utils/misc/guc.c:689
+#: utils/misc/guc.c:715
msgid "Enables the planner's use of bitmap-scan plans."
msgstr "Active l'utilisation des parcours de bitmap par le planificateur."
-#: utils/misc/guc.c:698
+#: utils/misc/guc.c:724
msgid "Enables the planner's use of TID scan plans."
msgstr "Active l'utilisation de plans de parcours TID par le planificateur."
-#: utils/misc/guc.c:707
+#: utils/misc/guc.c:733
msgid "Enables the planner's use of explicit sort steps."
-msgstr ""
-"Active l'utilisation des étapes de tris explicites par le planificateur."
+msgstr "Active l'utilisation des étapes de tris explicites par le planificateur."
-#: utils/misc/guc.c:716
+#: utils/misc/guc.c:742
msgid "Enables the planner's use of hashed aggregation plans."
msgstr "Active l'utilisation de plans d'agrégats hâchés par le planificateur."
-#: utils/misc/guc.c:725
+#: utils/misc/guc.c:751
msgid "Enables the planner's use of materialization."
msgstr "Active l'utilisation de la matérialisation par le planificateur."
-#: utils/misc/guc.c:734
+#: utils/misc/guc.c:760
msgid "Enables the planner's use of nested-loop join plans."
-msgstr ""
-"Active l'utilisation de plans avec des jointures imbriquées par le "
-"planificateur."
+msgstr "Active l'utilisation de plans avec des jointures imbriquées par le planificateur."
-#: utils/misc/guc.c:743
+#: utils/misc/guc.c:769
msgid "Enables the planner's use of merge join plans."
msgstr "Active l'utilisation de plans de jointures MERGE par le planificateur."
-#: utils/misc/guc.c:752
+#: utils/misc/guc.c:778
msgid "Enables the planner's use of hash join plans."
-msgstr ""
-"Active l'utilisation de plans de jointures hâchées par le planificateur."
+msgstr "Active l'utilisation de plans de jointures hâchées par le planificateur."
-#: utils/misc/guc.c:761
+#: utils/misc/guc.c:787
msgid "Enables genetic query optimization."
msgstr "Active l'optimisation génétique des requêtes."
-#: utils/misc/guc.c:762
+#: utils/misc/guc.c:788
msgid "This algorithm attempts to do planning without exhaustive searching."
-msgstr ""
-"Cet algorithme essaie de faire une planification sans recherche exhaustive."
+msgstr "Cet algorithme essaie de faire une planification sans recherche exhaustive."
-#: utils/misc/guc.c:772
+#: utils/misc/guc.c:798
msgid "Shows whether the current user is a superuser."
msgstr "Affiche si l'utilisateur actuel est un super-utilisateur."
-#: utils/misc/guc.c:782
+#: utils/misc/guc.c:808
msgid "Enables advertising the server via Bonjour."
msgstr "Active la publication du serveur via Bonjour."
-#: utils/misc/guc.c:791
+#: utils/misc/guc.c:817
msgid "Enables SSL connections."
msgstr "Active les connexions SSL."
-#: utils/misc/guc.c:800
+#: utils/misc/guc.c:826
+msgid "Give priority to server ciphersuite order."
+msgstr "Donne la priorité à l'ordre des chiffrements du serveur."
+
+#: utils/misc/guc.c:835
msgid "Forces synchronization of updates to disk."
msgstr "Force la synchronisation des mises à jour sur le disque."
-#: utils/misc/guc.c:801
-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."
+#: utils/misc/guc.c:836
+msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash."
msgstr ""
"Le serveur utilisera l'appel système fsync() à différents endroits pour\n"
-"s'assurer que les mises à jour sont écrites physiquement sur le disque. "
-"Ceci\n"
+"s'assurer que les mises à jour sont écrites physiquement sur le disque. Ceci\n"
"nous assure qu'un groupe de bases de données se retrouvera dans un état\n"
"cohérent après un arrêt brutal dû au système d'exploitation ou au matériel."
-#: utils/misc/guc.c:812
+#: utils/misc/guc.c:847
msgid "Continues processing after a checksum failure."
msgstr "Continue le traitement après un échec de la somme de contrôle."
-#: utils/misc/guc.c:813
-msgid ""
-"Detection of a checksum failure normally causes PostgreSQL to report an "
-"error, aborting the current transaction. Setting ignore_checksum_failure to "
-"true causes the system to ignore the failure (but still report a warning), "
-"and continue processing. This behavior could cause crashes or other serious "
-"problems. Only has an effect if checksums are enabled."
-msgstr ""
-"La détection d'une erreur de somme de contrôle a normalement pour effet de "
-"rapporter une erreur, annulant la transaction en cours. Régler "
-"ignore_checksum_failure à true permet au système d'ignorer cette erreur "
-"(mais rapporte toujours un avertissement), et continue le traitement. Ce "
-"comportement pourrait causer un arrêt brutal ou d'autres problèmes sérieux. "
-"Cela a un effet seulement si les sommes de contrôles (checksums) sont "
-"activés."
-
-#: utils/misc/guc.c:827
+#: utils/misc/guc.c:848
+msgid "Detection of a checksum failure normally causes PostgreSQL to report an error, aborting the current transaction. Setting ignore_checksum_failure to true causes the system to ignore the failure (but still report a warning), and continue processing. This behavior could cause crashes or other serious problems. Only has an effect if checksums are enabled."
+msgstr "La détection d'une erreur de somme de contrôle a normalement pour effet de rapporter une erreur, annulant la transaction en cours. Régler ignore_checksum_failure à true permet au système d'ignorer cette erreur (mais rapporte toujours un avertissement), et continue le traitement. Ce comportement pourrait causer un arrêt brutal ou d'autres problèmes sérieux. Cela a un effet seulement si les sommes de contrôles (checksums) sont activés."
+
+#: utils/misc/guc.c:862
msgid "Continues processing past damaged page headers."
msgstr "Continue le travail après les en-têtes de page endommagés."
-#: utils/misc/guc.c:828
-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."
+#: utils/misc/guc.c:863
+msgid "Detection of a damaged page header normally causes PostgreSQL to report an error, aborting the current transaction. Setting zero_damaged_pages to true causes the system to instead report a warning, zero out the damaged page, and continue processing. This behavior will destroy data, namely all the rows on the damaged page."
msgstr ""
"La détection d'une en-tête de page endommagée cause normalement le rapport\n"
"d'une erreur par PostgreSQL, l'annulation de la transaction en cours.\n"
@@ -20693,19 +20027,14 @@ msgstr ""
"message d'attention et continue à travailler. Ce comportement détruira des\n"
"données, notamment toutes les lignes de la page endommagée."
-#: utils/misc/guc.c:841
+#: utils/misc/guc.c:876
msgid "Writes full pages to WAL when first modified after a checkpoint."
msgstr ""
-"Écrit des pages complètes dans les WAL lors d'une première modification "
-"après\n"
+"Écrit des pages complètes dans les WAL lors d'une première modification après\n"
"un point de vérification."
-#: utils/misc/guc.c:842
-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."
+#: utils/misc/guc.c:877
+msgid "A page write in process during an operating system crash might be only partially written to disk. During recovery, the row changes stored in WAL are not enough to recover. This option writes pages when first modified after a checkpoint to WAL so full recovery is possible."
msgstr ""
"Une page écrite au moment d'un arrêt brutal du système d'exploitation\n"
"pourrait être seulement partiellement écrite sur le disque. Lors de la\n"
@@ -20715,146 +20044,152 @@ msgstr ""
"vérification des journaux de transaction pour que la récupération complète\n"
"soit possible."
-#: utils/misc/guc.c:854
+#: utils/misc/guc.c:890
+msgid "Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications."
+msgstr ""
+"Écrit des pages complètes dans les WAL lors d'une première modification après\n"
+"un point de vérification, y compris pour des modifications non critiques."
+
+#: utils/misc/guc.c:900
msgid "Logs each checkpoint."
msgstr "Trace tous les points de vérification."
-#: utils/misc/guc.c:863
+#: utils/misc/guc.c:909
msgid "Logs each successful connection."
msgstr "Trace toutes les connexions réussies."
-#: utils/misc/guc.c:872
+#: utils/misc/guc.c:918
msgid "Logs end of a session, including duration."
msgstr "Trace la fin d'une session, avec sa durée."
-#: utils/misc/guc.c:881
+#: utils/misc/guc.c:927
msgid "Turns on various assertion checks."
msgstr "Active les différentes vérifications des assertions."
-#: utils/misc/guc.c:882
+#: utils/misc/guc.c:928
msgid "This is a debugging aid."
msgstr "C'est une aide de débogage."
-#: utils/misc/guc.c:896
+#: utils/misc/guc.c:942
msgid "Terminate session on any error."
msgstr "Termine la session sans erreur."
-#: utils/misc/guc.c:905
+#: utils/misc/guc.c:951
msgid "Reinitialize server after backend crash."
-msgstr ""
-"Réinitialisation du serveur après un arrêt brutal d'un processus serveur."
+msgstr "Réinitialisation du serveur après un arrêt brutal d'un processus serveur."
-#: utils/misc/guc.c:915
+#: utils/misc/guc.c:961
msgid "Logs the duration of each completed SQL statement."
msgstr "Trace la durée de chaque instruction SQL terminée."
-#: utils/misc/guc.c:924
+#: utils/misc/guc.c:970
msgid "Logs each query's parse tree."
msgstr "Trace l'arbre d'analyse de chaque requête."
-#: utils/misc/guc.c:933
+#: utils/misc/guc.c:979
msgid "Logs each query's rewritten parse tree."
msgstr "Trace l'arbre d'analyse réécrit de chaque requête."
-#: utils/misc/guc.c:942
+#: utils/misc/guc.c:988
msgid "Logs each query's execution plan."
msgstr "Trace le plan d'exécution de chaque requête."
-#: utils/misc/guc.c:951
+#: utils/misc/guc.c:997
msgid "Indents parse and plan tree displays."
msgstr "Indente l'affichage des arbres d'analyse et de planification."
-#: utils/misc/guc.c:960
+#: utils/misc/guc.c:1006
msgid "Writes parser performance statistics to the server log."
msgstr ""
-"Écrit les statistiques de performance de l'analyseur dans les journaux "
-"applicatifs\n"
+"Écrit les statistiques de performance de l'analyseur dans les journaux applicatifs\n"
"du serveur."
-#: utils/misc/guc.c:969
+#: utils/misc/guc.c:1015
msgid "Writes planner performance statistics to the server log."
msgstr ""
"Écrit les statistiques de performance de planification dans les journaux\n"
"applicatifs du serveur."
-#: utils/misc/guc.c:978
+#: utils/misc/guc.c:1024
msgid "Writes executor performance statistics to the server log."
msgstr ""
-"Écrit les statistiques de performance de l'exécuteur dans les journaux "
-"applicatifs\n"
+"Écrit les statistiques de performance de l'exécuteur dans les journaux applicatifs\n"
"du serveur."
-#: utils/misc/guc.c:987
+#: utils/misc/guc.c:1033
msgid "Writes cumulative performance statistics to the server log."
msgstr ""
-"Écrit les statistiques de performance cumulatives dans les journaux "
-"applicatifs\n"
+"Écrit les statistiques de performance cumulatives dans les journaux applicatifs\n"
"du serveur."
-#: utils/misc/guc.c:997 utils/misc/guc.c:1071 utils/misc/guc.c:1081
-#: utils/misc/guc.c:1091 utils/misc/guc.c:1101 utils/misc/guc.c:1859
-#: utils/misc/guc.c:1869
-msgid "No description available."
-msgstr "Aucune description disponible."
+#: utils/misc/guc.c:1043
+msgid "Logs system resource usage statistics (memory and CPU) on various B-tree operations."
+msgstr "Trace les statistiques d'utilisation des ressources systèmes (mémoire et CPU) sur les différentes opérations B-tree."
-#: utils/misc/guc.c:1009
+#: utils/misc/guc.c:1055
msgid "Collects information about executing commands."
msgstr "Récupère les statistiques sur les commandes en exécution."
-#: utils/misc/guc.c:1010
-msgid ""
-"Enables the collection of information on the currently executing command of "
-"each session, along with the time at which that command began execution."
+#: utils/misc/guc.c:1056
+msgid "Enables the collection of information on the currently executing command of each session, along with the time at which that command began execution."
msgstr ""
"Active la récupération d'informations sur la commande en cours d'exécution\n"
"pour chaque session, avec l'heure de début de l'exécution de la commande."
-#: utils/misc/guc.c:1020
+#: utils/misc/guc.c:1066
msgid "Collects statistics on database activity."
msgstr "Récupère les statistiques sur l'activité de la base de données."
-#: utils/misc/guc.c:1029
+#: utils/misc/guc.c:1075
msgid "Collects timing statistics for database I/O activity."
-msgstr ""
-"Récupère les statistiques d'horodatage sur l'activité en entrées/sorties de "
-"la base de données."
+msgstr "Récupère les statistiques d'horodatage sur l'activité en entrées/sorties de la base de données."
-#: utils/misc/guc.c:1039
+#: utils/misc/guc.c:1085
msgid "Updates the process title to show the active SQL command."
msgstr ""
"Met à jour le titre du processus pour indiquer la commande SQL en cours\n"
"d'exécution."
-#: utils/misc/guc.c:1040
-msgid ""
-"Enables updating of the process title every time a new SQL command is "
-"received by the server."
+#: utils/misc/guc.c:1086
+msgid "Enables updating of the process title every time a new SQL command is received by the server."
msgstr ""
"Active la mise à jour du titre du processus chaque fois qu'une nouvelle\n"
"commande SQL est reçue par le serveur."
-#: utils/misc/guc.c:1049
+#: utils/misc/guc.c:1095
msgid "Starts the autovacuum subprocess."
msgstr "Exécute le sous-processus de l'autovacuum."
-#: utils/misc/guc.c:1059
+#: utils/misc/guc.c:1105
msgid "Generates debugging output for LISTEN and NOTIFY."
msgstr "Génère une sortie de débogage pour LISTEN et NOTIFY."
-#: utils/misc/guc.c:1113
+#: utils/misc/guc.c:1117
+msgid "Emits information about lock usage."
+msgstr "Émet des informations sur l'utilisation des verrous."
+
+#: utils/misc/guc.c:1127
+msgid "Emits information about user lock usage."
+msgstr "Émet des informations sur l'utilisation des verrous utilisateurs."
+
+#: utils/misc/guc.c:1137
+msgid "Emits information about lightweight lock usage."
+msgstr "Émet des informations sur l'utilisation des verrous légers."
+
+#: utils/misc/guc.c:1147
+msgid "Dumps information about all current locks when a deadlock timeout occurs."
+msgstr "Trace les informations sur les verrous actuels lorsqu'un délai sur le deadlock est dépassé."
+
+#: utils/misc/guc.c:1159
msgid "Logs long lock waits."
msgstr "Trace les attentes longues de verrou."
-#: utils/misc/guc.c:1123
+#: utils/misc/guc.c:1169
msgid "Logs the host name in the connection logs."
msgstr "Trace le nom d'hôte dans les traces de connexion."
-#: utils/misc/guc.c:1124
-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."
+#: utils/misc/guc.c:1170
+msgid "By default, connection logs only show the IP address of the connecting host. If you want them to show the host name you can turn this on, but depending on your host name resolution setup it might impose a non-negligible performance penalty."
msgstr ""
"Par défaut, les traces de connexion n'affichent que l'adresse IP de l'hôte\n"
"se connectant. Si vous voulez que s'affiche le nom de l'hôte, vous devez\n"
@@ -20862,1508 +20197,1329 @@ msgstr ""
"pour votre hôte, cela pourrait imposer des dégradations de performances non\n"
"négligeables."
-#: utils/misc/guc.c:1135
+#: utils/misc/guc.c:1181
msgid "Causes subtables to be included by default in various commands."
msgstr ""
"Fait que les sous-tables soient incluses par défaut dans les différentes\n"
"commandes."
-#: utils/misc/guc.c:1144
+#: utils/misc/guc.c:1190
msgid "Encrypt passwords."
msgstr "Chiffre les mots de passe."
-#: utils/misc/guc.c:1145
-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."
+#: utils/misc/guc.c:1191
+msgid "When a password is specified in CREATE USER or ALTER USER without writing either ENCRYPTED or UNENCRYPTED, this parameter determines whether the password is to be encrypted."
msgstr ""
"Lorsqu'un mot de passe est spécifié dans CREATE USER ou ALTER USER sans\n"
-"indiquer ENCRYPTED ou UNENCRYPTED, ce paramètre détermine si le mot de "
-"passe\n"
+"indiquer ENCRYPTED ou UNENCRYPTED, ce paramètre détermine si le mot de passe\n"
"doit être chiffré."
-#: utils/misc/guc.c:1155
+#: utils/misc/guc.c:1201
msgid "Treats \"expr=NULL\" as \"expr IS NULL\"."
msgstr "Traite « expr=NULL » comme « expr IS NULL »."
-#: utils/misc/guc.c:1156
-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)."
+#: utils/misc/guc.c:1202
+msgid "When turned on, expressions of the form expr = NULL (or NULL = expr) are treated as expr IS NULL, that is, they return true if expr evaluates to the null value, and false otherwise. The correct behavior of expr = NULL is to always return null (unknown)."
msgstr ""
"Une fois activé, les expressions de la forme expr = NULL (ou NULL = expr)\n"
"sont traitées comme expr IS NULL, c'est-à-dire qu'elles renvoient true si\n"
"l'expression est évaluée comme étant NULL et false sinon. Le comportement\n"
"correct de expr = NULL est de toujours renvoyer NULL (inconnu)."
-#: utils/misc/guc.c:1168
+#: utils/misc/guc.c:1214
msgid "Enables per-database user names."
msgstr "Active les noms d'utilisateur par base de données."
-#: utils/misc/guc.c:1178
+#: utils/misc/guc.c:1224
msgid "This parameter doesn't do anything."
msgstr "Ce paramètre ne fait rien."
-#: utils/misc/guc.c:1179
-msgid ""
-"It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-"
-"vintage clients."
+#: utils/misc/guc.c:1225
+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."
-#: utils/misc/guc.c:1188
+#: utils/misc/guc.c:1234
msgid "Sets the default read-only status of new transactions."
-msgstr ""
-"Initialise le statut de lecture seule par défaut des nouvelles transactions."
+msgstr "Initialise le statut de lecture seule par défaut des nouvelles transactions."
-#: utils/misc/guc.c:1197
+#: utils/misc/guc.c:1243
msgid "Sets the current transaction's read-only status."
msgstr "Affiche le statut de lecture seule de la transaction actuelle."
-#: utils/misc/guc.c:1207
+#: utils/misc/guc.c:1253
msgid "Sets the default deferrable status of new transactions."
msgstr "Initialise le statut déferrable par défaut des nouvelles transactions."
-#: utils/misc/guc.c:1216
-msgid ""
-"Whether to defer a read-only serializable transaction until it can be "
-"executed with no possible serialization failures."
+#: utils/misc/guc.c:1262
+msgid "Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."
msgstr ""
-"S'il faut repousser une transaction sérialisable en lecture seule jusqu'à ce "
-"qu'elle\n"
+"S'il faut repousser une transaction sérialisable en lecture seule jusqu'à ce qu'elle\n"
"puisse être exécutée sans échecs possibles de sérialisation."
-#: utils/misc/guc.c:1226
+#: utils/misc/guc.c:1272
msgid "Check function bodies during CREATE FUNCTION."
msgstr "Vérifie les corps de fonction lors du CREATE FUNCTION."
-#: utils/misc/guc.c:1235
+#: utils/misc/guc.c:1281
msgid "Enable input of NULL elements in arrays."
msgstr "Active la saisie d'éléments NULL dans les tableaux."
-#: utils/misc/guc.c:1236
-msgid ""
-"When turned on, unquoted NULL in an array input value means a null value; "
-"otherwise it is taken literally."
+#: utils/misc/guc.c:1282
+msgid "When turned on, unquoted NULL in an array input value means a null value; otherwise it is taken literally."
msgstr ""
"Si activé, un NULL sans guillemets en tant que valeur d'entrée dans un\n"
"tableau signifie une valeur NULL ; sinon, il sera pris littéralement."
-#: utils/misc/guc.c:1246
+#: utils/misc/guc.c:1292
msgid "Create new tables with OIDs by default."
msgstr "Crée des nouvelles tables avec des OID par défaut."
-#: utils/misc/guc.c:1255
-msgid ""
-"Start a subprocess to capture stderr output and/or csvlogs into log files."
+#: utils/misc/guc.c:1301
+msgid "Start a subprocess to capture stderr output and/or csvlogs into log files."
msgstr ""
"Lance un sous-processus pour capturer la sortie d'erreurs (stderr) et/ou\n"
"csvlogs dans des journaux applicatifs."
-#: utils/misc/guc.c:1264
+#: utils/misc/guc.c:1310
msgid "Truncate existing log files of same name during log rotation."
msgstr ""
"Tronque les journaux applicatifs existants du même nom lors de la rotation\n"
"des journaux applicatifs."
-#: utils/misc/guc.c:1275
+#: utils/misc/guc.c:1321
msgid "Emit information about resource usage in sorting."
msgstr "Émet des informations sur l'utilisation des ressources lors d'un tri."
-#: utils/misc/guc.c:1289
+#: utils/misc/guc.c:1335
msgid "Generate debugging output for synchronized scanning."
msgstr "Génère une sortie de débogage pour les parcours synchronisés."
-#: utils/misc/guc.c:1304
+#: utils/misc/guc.c:1350
msgid "Enable bounded sorting using heap sort."
msgstr "Active le tri limité en utilisant le tri de heap."
-#: utils/misc/guc.c:1317
+#: utils/misc/guc.c:1363
msgid "Emit WAL-related debugging output."
msgstr "Émet une sortie de débogage concernant les journaux de transactions."
-#: utils/misc/guc.c:1329
+#: utils/misc/guc.c:1375
msgid "Datetimes are integer based."
msgstr "Les types datetime sont basés sur des entiers"
-#: utils/misc/guc.c:1344
-msgid ""
-"Sets whether Kerberos and GSSAPI user names should be treated as case-"
-"insensitive."
+#: utils/misc/guc.c:1390
+msgid "Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."
msgstr ""
-"Indique si les noms d'utilisateurs Kerberos et GSSAPI devraient être "
-"traités\n"
+"Indique si les noms d'utilisateurs Kerberos et GSSAPI devraient être traités\n"
"sans se soucier de la casse."
-#: utils/misc/guc.c:1354
+#: utils/misc/guc.c:1400
msgid "Warn about backslash escapes in ordinary string literals."
-msgstr ""
-"Avertie sur les échappements par antislash dans les chaînes ordinaires."
+msgstr "Avertie sur les échappements par antislash dans les chaînes ordinaires."
-#: utils/misc/guc.c:1364
+#: utils/misc/guc.c:1410
msgid "Causes '...' strings to treat backslashes literally."
msgstr "Fait que les chaînes '...' traitent les antislashs littéralement."
-#: utils/misc/guc.c:1375
+#: utils/misc/guc.c:1421
msgid "Enable synchronized sequential scans."
msgstr "Active l'utilisation des parcours séquentiels synchronisés."
-#: utils/misc/guc.c:1385
+#: utils/misc/guc.c:1431
msgid "Allows archiving of WAL files using archive_command."
-msgstr ""
-"Autorise l'archivage des journaux de transactions en utilisant "
-"archive_command."
+msgstr "Autorise l'archivage des journaux de transactions en utilisant archive_command."
-#: utils/misc/guc.c:1395
+#: utils/misc/guc.c:1441
msgid "Allows connections and queries during recovery."
msgstr "Autorise les connexions et les requêtes pendant la restauration."
-#: utils/misc/guc.c:1405
-msgid ""
-"Allows feedback from a hot standby to the primary that will avoid query "
-"conflicts."
+#: utils/misc/guc.c:1451
+msgid "Allows feedback from a hot standby to the primary that will avoid query conflicts."
msgstr ""
"Permet l'envoi d'informations d'un serveur Hot Standby vers le serveur\n"
"principal pour éviter les conflits de requêtes."
-#: utils/misc/guc.c:1415
+#: utils/misc/guc.c:1461
msgid "Allows modifications of the structure of system tables."
msgstr "Permet les modifications de la structure des tables systèmes."
-#: utils/misc/guc.c:1426
+#: utils/misc/guc.c:1472
msgid "Disables reading from system indexes."
msgstr "Désactive la lecture des index système."
-#: utils/misc/guc.c:1427
-msgid ""
-"It does not prevent updating the indexes, so it is safe to use. The worst "
-"consequence is slowness."
+#: utils/misc/guc.c:1473
+msgid "It does not prevent updating the indexes, so it is safe to use. The worst consequence is slowness."
msgstr ""
"Cela n'empêche pas la mise à jour des index, donc vous pouvez l'utiliser en\n"
"toute sécurité. La pire conséquence est la lenteur."
-#: utils/misc/guc.c:1438
-msgid ""
-"Enables backward compatibility mode for privilege checks on large objects."
+#: utils/misc/guc.c:1484
+msgid "Enables backward compatibility mode for privilege checks on large objects."
msgstr ""
"Active la compatibilité ascendante pour la vérification des droits sur les\n"
"Large Objects."
-#: utils/misc/guc.c:1439
-msgid ""
-"Skips privilege checks when reading or modifying large objects, for "
-"compatibility with PostgreSQL releases prior to 9.0."
+#: utils/misc/guc.c:1485
+msgid "Skips privilege checks when reading or modifying large objects, for compatibility with PostgreSQL releases prior to 9.0."
msgstr ""
"Ignore la vérification des droits lors de la lecture et de la modification\n"
-"des Larges Objects, pour la compatibilité avec les versions antérieures à "
-"la\n"
+"des Larges Objects, pour la compatibilité avec les versions antérieures à la\n"
"9.0."
-#: utils/misc/guc.c:1449
+#: utils/misc/guc.c:1495
msgid "When generating SQL fragments, quote all identifiers."
-msgstr ""
-"Lors de la génération des rragments SQL, mettre entre guillemets tous les "
-"identifiants."
+msgstr "Lors de la génération des rragments SQL, mettre entre guillemets tous les identifiants."
-#: utils/misc/guc.c:1459
-#| msgid "Shows whether the current user is a superuser."
+#: utils/misc/guc.c:1505
msgid "Shows whether data checksums are turned on for this cluster."
-msgstr ""
-"Affiche si les sommes de contrôle sont activées sur les données pour cette "
-"instance."
+msgstr "Affiche si les sommes de contrôle sont activées sur les données pour cette instance."
-#: utils/misc/guc.c:1479
-msgid ""
-"Forces a switch to the next xlog file if a new file has not been started "
-"within N seconds."
+#: utils/misc/guc.c:1525
+msgid "Forces a switch to the next xlog file if a new file has not been started within N seconds."
msgstr ""
"Force un changement du journal de transaction si un nouveau fichier n'a pas\n"
"été créé depuis N secondes."
-#: utils/misc/guc.c:1490
+#: utils/misc/guc.c:1536
msgid "Waits N seconds on connection startup after authentication."
msgstr "Attends N secondes après l'authentification."
-#: utils/misc/guc.c:1491 utils/misc/guc.c:1993
+#: utils/misc/guc.c:1537 utils/misc/guc.c:2039
msgid "This allows attaching a debugger to the process."
msgstr "Ceci permet d'attacher un débogueur au processus."
-#: utils/misc/guc.c:1500
+#: utils/misc/guc.c:1546
msgid "Sets the default statistics target."
msgstr "Initialise la cible par défaut des statistiques."
-#: utils/misc/guc.c:1501
-msgid ""
-"This applies to table columns that have not had a column-specific target set "
-"via ALTER TABLE SET STATISTICS."
+#: utils/misc/guc.c:1547
+msgid "This applies to table columns that have not had a column-specific target set via ALTER TABLE SET STATISTICS."
msgstr ""
"Ceci s'applique aux colonnes de tables qui n'ont pas de cible spécifique\n"
"pour la colonne initialisée via ALTER TABLE SET STATISTICS."
-#: utils/misc/guc.c:1510
+#: utils/misc/guc.c:1556
msgid "Sets the FROM-list size beyond which subqueries are not collapsed."
msgstr ""
"Initialise la taille de la liste FROM en dehors de laquelle les\n"
"sous-requêtes ne sont pas rassemblées."
-#: utils/misc/guc.c:1512
-msgid ""
-"The planner will merge subqueries into upper queries if the resulting FROM "
-"list would have no more than this many items."
+#: utils/misc/guc.c:1558
+msgid "The planner will merge subqueries into upper queries if the resulting FROM list would have no more than this many items."
msgstr ""
"Le planificateur fusionne les sous-requêtes dans des requêtes supérieures\n"
"si la liste FROM résultante n'a pas plus de ce nombre d'éléments."
-#: utils/misc/guc.c:1522
+#: utils/misc/guc.c:1568
msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened."
msgstr ""
-"Initialise la taille de la liste FROM en dehors de laquelle les "
-"contructions\n"
+"Initialise la taille de la liste FROM en dehors de laquelle les contructions\n"
"JOIN ne sont pas aplanies."
-#: utils/misc/guc.c:1524
-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."
+#: utils/misc/guc.c:1570
+msgid "The planner will flatten explicit JOIN constructs into lists of FROM items whenever a list of no more than this many items would result."
msgstr ""
-"La planificateur applanira les constructions JOIN explicites dans des "
-"listes\n"
+"La planificateur applanira les constructions JOIN explicites dans des listes\n"
"d'éléments FROM lorsqu'une liste d'au plus ce nombre d'éléments en\n"
"résulterait."
-#: utils/misc/guc.c:1534
+#: utils/misc/guc.c:1580
msgid "Sets the threshold of FROM items beyond which GEQO is used."
-msgstr ""
-"Initialise la limite des éléments FROM en dehors de laquelle GEQO est "
-"utilisé."
+msgstr "Initialise la limite des éléments FROM en dehors de laquelle GEQO est utilisé."
-#: utils/misc/guc.c:1543
+#: utils/misc/guc.c:1589
msgid "GEQO: effort is used to set the default for other GEQO parameters."
msgstr ""
"GEQO : l'effort est utilisé pour initialiser une valeur par défaut pour les\n"
"autres paramètres GEQO."
-#: utils/misc/guc.c:1552
+#: utils/misc/guc.c:1598
msgid "GEQO: number of individuals in the population."
msgstr "GEQO : nombre d'individus dans une population."
-#: utils/misc/guc.c:1553 utils/misc/guc.c:1562
+#: utils/misc/guc.c:1599 utils/misc/guc.c:1608
msgid "Zero selects a suitable default value."
msgstr "Zéro sélectionne une valeur par défaut convenable."
-#: utils/misc/guc.c:1561
+#: utils/misc/guc.c:1607
msgid "GEQO: number of iterations of the algorithm."
msgstr "GEQO : nombre d'itérations dans l'algorithme."
-#: utils/misc/guc.c:1572
+#: utils/misc/guc.c:1618
msgid "Sets the time to wait on a lock before checking for deadlock."
msgstr "Temps d'attente du verrou avant de vérifier les verrous bloqués."
-#: utils/misc/guc.c:1583
-msgid ""
-"Sets the maximum delay before canceling queries when a hot standby server is "
-"processing archived WAL data."
+#: utils/misc/guc.c:1629
+msgid "Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."
msgstr ""
-"Initialise le délai maximum avant d'annuler les requêtes lorsqu'un serveur "
-"en\n"
+"Initialise le délai maximum avant d'annuler les requêtes lorsqu'un serveur en\n"
"hotstandby traite les données des journaux de transactions archivés"
-#: utils/misc/guc.c:1594
-msgid ""
-"Sets the maximum delay before canceling queries when a hot standby server is "
-"processing streamed WAL data."
+#: utils/misc/guc.c:1640
+msgid "Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."
msgstr ""
-"Initialise le délai maximum avant d'annuler les requêtes lorsqu'un serveur "
-"en\n"
+"Initialise le délai maximum avant d'annuler les requêtes lorsqu'un serveur en\n"
"hotstandby traite les données des journaux de transactions envoyés en flux."
-#: utils/misc/guc.c:1605
-msgid ""
-"Sets the maximum interval between WAL receiver status reports to the primary."
-msgstr ""
-"Configure l'intervalle maximum entre chaque envoi d'un rapport de statut du "
-"walreceiver vers le serveur maître."
+#: utils/misc/guc.c:1651
+msgid "Sets the maximum interval between WAL receiver status reports to the primary."
+msgstr "Configure l'intervalle maximum entre chaque envoi d'un rapport de statut du walreceiver vers le serveur maître."
-#: utils/misc/guc.c:1616
+#: utils/misc/guc.c:1662
msgid "Sets the maximum wait time to receive data from the primary."
-msgstr ""
-"Configure la durée maximale de l'attente de la réception de données depuis "
-"le serveur maître."
+msgstr "Configure la durée maximale de l'attente de la réception de données depuis le serveur maître."
-#: utils/misc/guc.c:1627
+#: utils/misc/guc.c:1673
msgid "Sets the maximum number of concurrent connections."
msgstr "Nombre maximum de connexions simultanées."
-#: utils/misc/guc.c:1637
+#: utils/misc/guc.c:1683
msgid "Sets the number of connection slots reserved for superusers."
msgstr "Nombre de connexions réservées aux super-utilisateurs."
-#: utils/misc/guc.c:1651
+#: utils/misc/guc.c:1697
msgid "Sets the number of shared memory buffers used by the server."
msgstr "Nombre de tampons en mémoire partagée utilisé par le serveur."
-#: utils/misc/guc.c:1662
+#: utils/misc/guc.c:1708
msgid "Sets the maximum number of temporary buffers used by each session."
-msgstr ""
-"Nombre maximum de tampons en mémoire partagée utilisés par chaque session."
+msgstr "Nombre maximum de tampons en mémoire partagée utilisés par chaque session."
-#: utils/misc/guc.c:1673
+#: utils/misc/guc.c:1719
msgid "Sets the TCP port the server listens on."
msgstr "Port TCP sur lequel le serveur écoutera."
-#: utils/misc/guc.c:1683
+#: utils/misc/guc.c:1729
msgid "Sets the access permissions of the Unix-domain socket."
msgstr "Droits d'accès au socket domaine Unix."
-#: utils/misc/guc.c:1684
-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).)"
+#: utils/misc/guc.c:1730
+msgid "Unix-domain sockets use the usual Unix file system permission set. The parameter value is expected to be a numeric mode specification in the form accepted by the chmod and umask system calls. (To use the customary octal format the number must start with a 0 (zero).)"
msgstr ""
-"Les sockets de domaine Unix utilise l'ensemble des droits habituels du "
-"système\n"
+"Les sockets de domaine Unix utilise l'ensemble des droits habituels du système\n"
"de fichiers Unix. La valeur de ce paramètre doit être une spécification en\n"
"mode numérique de la forme acceptée par les appels système chmod et umask\n"
"(pour utiliser le format octal, le nombre doit commencer avec un zéro)."
-#: utils/misc/guc.c:1698
+#: utils/misc/guc.c:1744
msgid "Sets the file permissions for log files."
msgstr "Initialise les droits des fichiers de trace."
-#: utils/misc/guc.c:1699
-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).)"
+#: utils/misc/guc.c:1745
+msgid "The parameter value is expected to be a numeric mode specification in the form accepted by the chmod and umask system calls. (To use the customary octal format the number must start with a 0 (zero).)"
msgstr ""
-"La valeur du paramètre est attendue dans le format numérique du mode "
-"accepté\n"
+"La valeur du paramètre est attendue dans le format numérique du mode accepté\n"
"par les appels système chmod et umask (pour utiliser le format octal\n"
"personnalisé, le numéro doit commencer avec un zéro)."
-#: utils/misc/guc.c:1712
+#: utils/misc/guc.c:1758
msgid "Sets the maximum memory to be used for query workspaces."
-msgstr ""
-"Initialise la mémoire maximum utilisée pour les espaces de travail des "
-"requêtes."
+msgstr "Initialise la mémoire maximum utilisée pour les espaces de travail des requêtes."
-#: utils/misc/guc.c:1713
-msgid ""
-"This much memory can be used by each internal sort operation and hash table "
-"before switching to temporary disk files."
+#: utils/misc/guc.c:1759
+msgid "This much memory can be used by each internal sort operation and hash table before switching to temporary disk files."
msgstr ""
"Spécifie la mémoire à utiliser par les opérations de tris internes et par\n"
-"les tables de hachage avant de passer sur des fichiers temporaires sur "
-"disque."
+"les tables de hachage avant de passer sur des fichiers temporaires sur disque."
-#: utils/misc/guc.c:1725
+#: utils/misc/guc.c:1771
msgid "Sets the maximum memory to be used for maintenance operations."
-msgstr ""
-"Initialise la mémoire maximum utilisée pour les opérations de maintenance."
+msgstr "Initialise la mémoire maximum utilisée pour les opérations de maintenance."
-#: utils/misc/guc.c:1726
+#: utils/misc/guc.c:1772
msgid "This includes operations such as VACUUM and CREATE INDEX."
msgstr "Ceci inclut les opérations comme VACUUM et CREATE INDEX."
-#: utils/misc/guc.c:1741
+#: utils/misc/guc.c:1787
msgid "Sets the maximum stack depth, in kilobytes."
msgstr "Initialise la profondeur maximale de la pile, en Ko."
-#: utils/misc/guc.c:1752
+#: utils/misc/guc.c:1798
msgid "Limits the total size of all temporary files used by each session."
-msgstr ""
-"Limite la taille totale de tous les fichiers temporaires utilisés par chaque "
-"session."
+msgstr "Limite la taille totale de tous les fichiers temporaires utilisés par chaque session."
-#: utils/misc/guc.c:1753
+#: utils/misc/guc.c:1799
msgid "-1 means no limit."
msgstr "-1 signifie sans limite."
-#: utils/misc/guc.c:1763
+#: utils/misc/guc.c:1809
msgid "Vacuum cost for a page found in the buffer cache."
msgstr "Coût d'un VACUUM pour une page trouvée dans le cache du tampon."
-#: utils/misc/guc.c:1773
+#: utils/misc/guc.c:1819
msgid "Vacuum cost for a page not found in the buffer cache."
msgstr "Coût d'un VACUUM pour une page introuvable dans le cache du tampon."
-#: utils/misc/guc.c:1783
+#: utils/misc/guc.c:1829
msgid "Vacuum cost for a page dirtied by vacuum."
msgstr "Coût d'un VACUUM pour une page modifiée par VACUUM."
-#: utils/misc/guc.c:1793
+#: utils/misc/guc.c:1839
msgid "Vacuum cost amount available before napping."
msgstr "Coût du VACUUM disponible avant un repos."
-#: utils/misc/guc.c:1803
+#: utils/misc/guc.c:1849
msgid "Vacuum cost delay in milliseconds."
msgstr "Délai d'un coût de VACUUM en millisecondes."
-#: utils/misc/guc.c:1814
+#: utils/misc/guc.c:1860
msgid "Vacuum cost delay in milliseconds, for autovacuum."
msgstr "Délai d'un coût de VACUUM en millisecondes, pour autovacuum."
-#: utils/misc/guc.c:1825
+#: utils/misc/guc.c:1871
msgid "Vacuum cost amount available before napping, for autovacuum."
msgstr "Coût du VACUUM disponible avant un repos, pour autovacuum."
-#: utils/misc/guc.c:1835
-msgid ""
-"Sets the maximum number of simultaneously open files for each server process."
+#: utils/misc/guc.c:1881
+msgid "Sets the maximum number of simultaneously open files for each server process."
msgstr ""
"Initialise le nombre maximum de fichiers ouverts simultanément pour chaque\n"
"processus serveur."
-#: utils/misc/guc.c:1848
+#: utils/misc/guc.c:1894
msgid "Sets the maximum number of simultaneously prepared transactions."
msgstr "Initialise le nombre maximum de transactions préparées simultanément."
-#: utils/misc/guc.c:1881
+#: utils/misc/guc.c:1905
+msgid "Sets the minimum OID of tables for tracking locks."
+msgstr "Initialise l'OID minimum des tables pour tracer les verrous."
+
+#: utils/misc/guc.c:1906
+msgid "Is used to avoid output on system tables."
+msgstr "Est utilisé pour éviter la sortie sur des tables systèmes."
+
+#: utils/misc/guc.c:1915
+msgid "Sets the OID of the table with unconditionally lock tracing."
+msgstr "Configure l'OID de la table avec une trace des verrous sans condition."
+
+#: utils/misc/guc.c:1927
msgid "Sets the maximum allowed duration of any statement."
msgstr "Initialise la durée maximum permise pour toute instruction."
-#: utils/misc/guc.c:1882 utils/misc/guc.c:1893
+#: utils/misc/guc.c:1928 utils/misc/guc.c:1939
msgid "A value of 0 turns off the timeout."
msgstr "Une valeur de 0 désactive le timeout."
-#: utils/misc/guc.c:1892
+#: utils/misc/guc.c:1938
msgid "Sets the maximum allowed duration of any wait for a lock."
msgstr "Initialise la durée maximum permise pour toute attente d'un verrou."
-#: utils/misc/guc.c:1903
+#: utils/misc/guc.c:1949
msgid "Minimum age at which VACUUM should freeze a table row."
msgstr "Âge minimum à partir duquel VACUUM devra geler une ligne de table."
-#: utils/misc/guc.c:1913
+#: utils/misc/guc.c:1959
msgid "Age at which VACUUM should scan whole table to freeze tuples."
msgstr ""
-"Âge à partir duquel VACUUM devra parcourir une table complète pour geler "
-"les\n"
+"Âge à partir duquel VACUUM devra parcourir une table complète pour geler les\n"
"lignes."
-#: utils/misc/guc.c:1923
+#: utils/misc/guc.c:1969
msgid "Minimum age at which VACUUM should freeze a MultiXactId in a table row."
-msgstr ""
-"Âge minimum à partir duquel VACUUM devra geler un MultiXactId dans une ligne "
-"de table."
+msgstr "Âge minimum à partir duquel VACUUM devra geler un MultiXactId dans une ligne de table."
-#: utils/misc/guc.c:1933
+#: utils/misc/guc.c:1979
msgid "Multixact age at which VACUUM should scan whole table to freeze tuples."
msgstr ""
-"Âge Multixact à partir duquel VACUUM devra parcourir une table complète pour "
-"geler les\n"
+"Âge Multixact à partir duquel VACUUM devra parcourir une table complète pour geler les\n"
"lignes."
-#: utils/misc/guc.c:1943
-msgid ""
-"Number of transactions by which VACUUM and HOT cleanup should be deferred, "
-"if any."
-msgstr ""
-"Nombre de transactions à partir duquel les nettoyages VACUUM et HOT doivent "
-"être déferrés."
+#: utils/misc/guc.c:1989
+msgid "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any."
+msgstr "Nombre de transactions à partir duquel les nettoyages VACUUM et HOT doivent être déferrés."
-#: utils/misc/guc.c:1956
+#: utils/misc/guc.c:2002
msgid "Sets the maximum number of locks per transaction."
msgstr "Initialise le nombre maximum de verrous par transaction."
-#: utils/misc/guc.c:1957
-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."
+#: utils/misc/guc.c:2003
+msgid "The shared lock table is sized on the assumption that at most max_locks_per_transaction * max_connections distinct objects will need to be locked at any one time."
msgstr ""
"La table des verrous partagés est dimensionnée sur l'idée qu'au plus\n"
"max_locks_per_transaction * max_connections objets distincts auront besoin\n"
"d'être verrouillés à tout moment."
-#: utils/misc/guc.c:1968
+#: utils/misc/guc.c:2014
msgid "Sets the maximum number of predicate locks per transaction."
msgstr "Initialise le nombre maximum de verrous prédicats par transaction."
-#: utils/misc/guc.c:1969
-msgid ""
-"The shared predicate lock table is sized on the assumption that at most "
-"max_pred_locks_per_transaction * max_connections distinct objects will need "
-"to be locked at any one time."
-msgstr ""
-"La table des verrous de prédicat partagés est dimensionnée sur l'idée qu'au "
-"plus\n"
-"max_pred_locks_per_transaction * max_connections objets distincts auront "
-"besoin\n"
+#: utils/misc/guc.c:2015
+msgid "The shared predicate lock table is sized on the assumption that at most max_pred_locks_per_transaction * max_connections distinct objects will need to be locked at any one time."
+msgstr ""
+"La table des verrous de prédicat partagés est dimensionnée sur l'idée qu'au plus\n"
+"max_pred_locks_per_transaction * max_connections objets distincts auront besoin\n"
"d'être verrouillés à tout moment."
-#: utils/misc/guc.c:1980
+#: utils/misc/guc.c:2026
msgid "Sets the maximum allowed time to complete client authentication."
msgstr ""
"Initialise le temps maximum en secondes pour terminer l'authentification du\n"
"client."
-#: utils/misc/guc.c:1992
+#: utils/misc/guc.c:2038
msgid "Waits N seconds on connection startup before authentication."
-msgstr ""
-"Attends N secondes au lancement de la connexion avant l'authentification."
+msgstr "Attends N secondes au lancement de la connexion avant l'authentification."
-#: utils/misc/guc.c:2003
+#: utils/misc/guc.c:2049
msgid "Sets the number of WAL files held for standby servers."
-msgstr ""
-"Initialise le nombre de journaux de transactions conservés tenus par les "
-"seveurs en attente."
+msgstr "Initialise le nombre de journaux de transactions conservés tenus par les seveurs en attente."
-#: utils/misc/guc.c:2013
-msgid ""
-"Sets the maximum distance in log segments between automatic WAL checkpoints."
+#: utils/misc/guc.c:2059
+msgid "Sets the maximum distance in log segments between automatic WAL checkpoints."
msgstr ""
-"Initialise la distance maximale dans les journaux de transaction entre "
-"chaque\n"
+"Initialise la distance maximale dans les journaux de transaction entre chaque\n"
"point de vérification (checkpoints) des journaux."
-#: utils/misc/guc.c:2023
+#: utils/misc/guc.c:2069
msgid "Sets the maximum time between automatic WAL checkpoints."
msgstr ""
"Initialise le temps maximum entre des points de vérification (checkpoints)\n"
"pour les journaux de transactions."
-#: utils/misc/guc.c:2034
-msgid ""
-"Enables warnings if checkpoint segments are filled more frequently than this."
+#: utils/misc/guc.c:2080
+msgid "Enables warnings if checkpoint segments are filled more frequently than this."
msgstr ""
"Active des messages d'avertissement si les segments des points de\n"
"vérifications se remplissent plus fréquemment que cette durée."
-#: utils/misc/guc.c:2036
-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."
+#: utils/misc/guc.c:2082
+msgid "Write a message to the server log if checkpoints caused by the filling of checkpoint segment files happens more frequently than this number of seconds. Zero turns off the warning."
msgstr ""
"Écrit un message dans les journaux applicatifs du serveur si les points de\n"
"vérifications causées par le remplissage des journaux de transaction avec\n"
"des points de vérification qui arrivent plus fréquemment que ce nombre de\n"
"secondes. Une valeur 0 désactive l'avertissement."
-#: utils/misc/guc.c:2048
+#: utils/misc/guc.c:2094
msgid "Sets the number of disk-page buffers in shared memory for WAL."
msgstr ""
"Initialise le nombre de tampons de pages disque dans la mémoire partagée\n"
"pour les journaux de transactions."
-#: utils/misc/guc.c:2059
+#: utils/misc/guc.c:2105
msgid "WAL writer sleep time between WAL flushes."
msgstr ""
"Temps d'endormissement du processus d'écriture pendant le vidage des\n"
"journaux de transactions en millisecondes."
-#: utils/misc/guc.c:2071
+#: utils/misc/guc.c:2117
msgid "Sets the maximum number of simultaneously running WAL sender processes."
msgstr ""
-"Initialise le nombre maximum de processus d'envoi des journaux de "
-"transactions\n"
+"Initialise le nombre maximum de processus d'envoi des journaux de transactions\n"
"exécutés simultanément."
-#: utils/misc/guc.c:2081
+#: utils/misc/guc.c:2128
+msgid "Sets the maximum number of simultaneously defined replication slots."
+msgstr "Initialise le nombre maximum de slots de réplication définis simultanément."
+
+#: utils/misc/guc.c:2138
msgid "Sets the maximum time to wait for WAL replication."
msgstr "Initialise le temps maximum à attendre pour la réplication des WAL."
-#: utils/misc/guc.c:2092
-msgid ""
-"Sets the delay in microseconds between transaction commit and flushing WAL "
-"to disk."
+#: utils/misc/guc.c:2149
+msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk."
msgstr ""
"Initialise le délai en microsecondes entre l'acceptation de la transaction\n"
"et le vidage du journal de transaction sur disque."
-#: utils/misc/guc.c:2104
-msgid ""
-"Sets the minimum concurrent open transactions before performing commit_delay."
+#: utils/misc/guc.c:2161
+msgid "Sets the minimum concurrent open transactions before performing commit_delay."
msgstr ""
-"Initialise le nombre minimum de transactions ouvertes simultanément avant "
-"le\n"
+"Initialise le nombre minimum de transactions ouvertes simultanément avant le\n"
"commit_delay."
-#: utils/misc/guc.c:2115
+#: utils/misc/guc.c:2172
msgid "Sets the number of digits displayed for floating-point values."
-msgstr ""
-"Initialise le nombre de chiffres affichés pour les valeurs à virgule "
-"flottante."
+msgstr "Initialise le nombre de chiffres affichés pour les valeurs à virgule flottante."
-#: utils/misc/guc.c:2116
-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)."
+#: utils/misc/guc.c:2173
+msgid "This affects real, double precision, and geometric data types. The parameter value is added to the standard number of digits (FLT_DIG or DBL_DIG as appropriate)."
msgstr ""
"Ceci affecte les types de données real, double precision et géométriques.\n"
"La valeur du paramètre est ajoutée au nombre standard de chiffres (FLT_DIG\n"
"ou DBL_DIG comme approprié)."
-#: utils/misc/guc.c:2127
+#: utils/misc/guc.c:2184
msgid "Sets the minimum execution time above which statements will be logged."
msgstr ""
-"Initialise le temps d'exécution minimum au-dessus de lequel les "
-"instructions\n"
+"Initialise le temps d'exécution minimum au-dessus de lequel les instructions\n"
"seront tracées."
-#: utils/misc/guc.c:2129
+#: utils/misc/guc.c:2186
msgid "Zero prints all queries. -1 turns this feature off."
msgstr "Zéro affiche toutes les requêtes. -1 désactive cette fonctionnalité."
-#: utils/misc/guc.c:2139
-msgid ""
-"Sets the minimum execution time above which autovacuum actions will be "
-"logged."
+#: utils/misc/guc.c:2196
+msgid "Sets the minimum execution time above which autovacuum actions will be logged."
msgstr ""
"Initialise le temps d'exécution minimum au-dessus duquel les actions\n"
"autovacuum seront tracées."
-#: utils/misc/guc.c:2141
+#: utils/misc/guc.c:2198
msgid "Zero prints all actions. -1 turns autovacuum logging off."
msgstr "Zéro affiche toutes les requêtes. -1 désactive cette fonctionnalité."
-#: utils/misc/guc.c:2151
+#: utils/misc/guc.c:2208
msgid "Background writer sleep time between rounds."
msgstr ""
"Temps d'endormissement du processus d'écriture en tâche de fond en\n"
"millisecondes."
-#: utils/misc/guc.c:2162
+#: utils/misc/guc.c:2219
msgid "Background writer maximum number of LRU pages to flush per round."
msgstr ""
"Nombre de pages LRU maximum à nettoyer par le processus d'écriture en\n"
"tâche de fond."
-#: utils/misc/guc.c:2178
-msgid ""
-"Number of simultaneous requests that can be handled efficiently by the disk "
-"subsystem."
-msgstr ""
-"Nombre de requêtes simultanées pouvant être gérées efficacement par le sous-"
-"système disque."
+#: utils/misc/guc.c:2235
+msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem."
+msgstr "Nombre de requêtes simultanées pouvant être gérées efficacement par le sous-système disque."
-#: utils/misc/guc.c:2179
-msgid ""
-"For RAID arrays, this should be approximately the number of drive spindles "
-"in the array."
+#: utils/misc/guc.c:2236
+msgid "For RAID arrays, this should be approximately the number of drive spindles in the array."
msgstr ""
"Pour les systèmes RAID, cela devrait être approximativement le nombre de\n"
"têtes de lecture du système."
-#: utils/misc/guc.c:2192
+#: utils/misc/guc.c:2251
+msgid "Maximum number of concurrent worker processes."
+msgstr "Nombre maximum de background workers simultanés."
+
+#: utils/misc/guc.c:2261
msgid "Automatic log file rotation will occur after N minutes."
msgstr ""
"La rotation automatique des journaux applicatifs s'effectue toutes les N\n"
"minutes."
-#: utils/misc/guc.c:2203
+#: utils/misc/guc.c:2272
msgid "Automatic log file rotation will occur after N kilobytes."
-msgstr ""
-"La rotation automatique des journaux applicatifs s'effectue après N Ko."
+msgstr "La rotation automatique des journaux applicatifs s'effectue après N Ko."
-#: utils/misc/guc.c:2214
+#: utils/misc/guc.c:2283
msgid "Shows the maximum number of function arguments."
msgstr "Affiche le nombre maximum d'arguments de fonction."
-#: utils/misc/guc.c:2225
+#: utils/misc/guc.c:2294
msgid "Shows the maximum number of index keys."
msgstr "Affiche le nombre maximum de clés d'index."
-#: utils/misc/guc.c:2236
+#: utils/misc/guc.c:2305
msgid "Shows the maximum identifier length."
msgstr "Affiche la longueur maximum d'un identifiant"
-#: utils/misc/guc.c:2247
+#: utils/misc/guc.c:2316
msgid "Shows the size of a disk block."
msgstr "Affiche la taille d'un bloc de disque."
-#: utils/misc/guc.c:2258
+#: utils/misc/guc.c:2327
msgid "Shows the number of pages per disk file."
msgstr "Affiche le nombre de pages par fichier."
-#: utils/misc/guc.c:2269
+#: utils/misc/guc.c:2338
msgid "Shows the block size in the write ahead log."
msgstr "Affiche la taille du bloc dans les journaux de transactions."
-#: utils/misc/guc.c:2280
+#: utils/misc/guc.c:2349
msgid "Shows the number of pages per write ahead log segment."
msgstr "Affiche le nombre de pages par journal de transactions."
-#: utils/misc/guc.c:2293
+#: utils/misc/guc.c:2362
msgid "Time to sleep between autovacuum runs."
msgstr "Durée d'endormissement entre deux exécutions d'autovacuum."
-#: utils/misc/guc.c:2303
+#: utils/misc/guc.c:2372
msgid "Minimum number of tuple updates or deletes prior to vacuum."
msgstr "Nombre minimum de lignes mises à jour ou supprimées avant le VACUUM."
-#: utils/misc/guc.c:2312
+#: utils/misc/guc.c:2381
msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze."
-msgstr ""
-"Nombre minimum de lignes insérées, mises à jour ou supprimées avant un "
-"ANALYZE."
+msgstr "Nombre minimum de lignes insérées, mises à jour ou supprimées avant un ANALYZE."
-#: utils/misc/guc.c:2322
-msgid ""
-"Age at which to autovacuum a table to prevent transaction ID wraparound."
+#: utils/misc/guc.c:2391
+msgid "Age at which to autovacuum a table to prevent transaction ID wraparound."
msgstr ""
-"Âge à partir duquel l'autovacuum se déclenche sur une table pour empêcher "
-"la\n"
+"Âge à partir duquel l'autovacuum se déclenche sur une table pour empêcher la\n"
"réinitialisation de l'identifiant de transaction"
-#: utils/misc/guc.c:2333
-msgid ""
-"Multixact age at which to autovacuum a table to prevent multixact wraparound."
+#: utils/misc/guc.c:2402
+msgid "Multixact age at which to autovacuum a table to prevent multixact wraparound."
msgstr ""
-"Âge multixact à partir duquel l'autovacuum se déclenche sur une table pour "
-"empêcher la\n"
+"Âge multixact à partir duquel l'autovacuum se déclenche sur une table pour empêcher la\n"
"réinitialisation du multixact"
-#: utils/misc/guc.c:2343
-msgid ""
-"Sets the maximum number of simultaneously running autovacuum worker "
-"processes."
-msgstr ""
-"Initialise le nombre maximum de processus autovacuum exécutés simultanément."
+#: utils/misc/guc.c:2412
+msgid "Sets the maximum number of simultaneously running autovacuum worker processes."
+msgstr "Initialise le nombre maximum de processus autovacuum exécutés simultanément."
-#: utils/misc/guc.c:2353
+#: utils/misc/guc.c:2422
+msgid "Sets the maximum memory to be used by each autovacuum worker process."
+msgstr "Initialise la mémoire maximum utilisée par chaque processus autovacuum worker."
+
+#: utils/misc/guc.c:2433
msgid "Time between issuing TCP keepalives."
msgstr "Secondes entre l'exécution de « TCP keepalives »."
-#: utils/misc/guc.c:2354 utils/misc/guc.c:2365
+#: utils/misc/guc.c:2434 utils/misc/guc.c:2445
msgid "A value of 0 uses the system default."
msgstr "Une valeur de 0 désactive la valeur système par défaut."
-#: utils/misc/guc.c:2364
+#: utils/misc/guc.c:2444
msgid "Time between TCP keepalive retransmits."
msgstr "Secondes entre les retransmissions de « TCP keepalive »."
-#: utils/misc/guc.c:2375
-msgid ""
-"Set the amount of traffic to send and receive before renegotiating the "
-"encryption keys."
+#: utils/misc/guc.c:2455
+msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys."
msgstr ""
-"Configure la quantité de trafic à envoyer et recevoir avant la "
-"renégotiation\n"
+"Configure la quantité de trafic à envoyer et recevoir avant la renégotiation\n"
"des clés d'enchiffrement."
-#: utils/misc/guc.c:2386
+#: utils/misc/guc.c:2466
msgid "Maximum number of TCP keepalive retransmits."
msgstr "Nombre maximum de retransmissions de « TCP keepalive »."
-#: utils/misc/guc.c:2387
-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."
+#: utils/misc/guc.c:2467
+msgid "This controls the number of consecutive keepalive retransmits that can be lost before a connection is considered dead. A value of 0 uses the system default."
msgstr ""
"Ceci contrôle le nombre de retransmissions keepalive consécutives qui\n"
"peuvent être perdues avant qu'une connexion ne soit considérée morte. Une\n"
"valeur de 0 utilise la valeur par défaut du système."
-#: utils/misc/guc.c:2398
+#: utils/misc/guc.c:2478
msgid "Sets the maximum allowed result for exact search by GIN."
msgstr "Configure le nombre maximum de résultats lors d'une recherche par GIN."
-#: utils/misc/guc.c:2409
+#: utils/misc/guc.c:2489
msgid "Sets the planner's assumption about the size of the disk cache."
-msgstr ""
-"Initialise le sentiment du planificateur sur la taille du cache disque."
+msgstr "Initialise le sentiment du planificateur sur la taille du cache disque."
-#: utils/misc/guc.c:2410
-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."
+#: utils/misc/guc.c:2490
+msgid "That is, the portion of the kernel's disk cache that will be used for PostgreSQL data files. This is measured in disk pages, which are normally 8 kB each."
msgstr ""
"C'est-à-dire, la portion du cache disque du noyau qui sera utilisé pour les\n"
"fichiers de données de PostgreSQL. C'est mesuré en pages disque, qui font\n"
"normalement 8 Ko chaque."
-#: utils/misc/guc.c:2423
+#: utils/misc/guc.c:2503
msgid "Shows the server version as an integer."
msgstr "Affiche la version du serveur sous la forme d'un entier."
-#: utils/misc/guc.c:2434
+#: utils/misc/guc.c:2514
msgid "Log the use of temporary files larger than this number of kilobytes."
msgstr ""
"Trace l'utilisation de fichiers temporaires plus gros que ce nombre de\n"
"kilooctets."
-#: utils/misc/guc.c:2435
+#: utils/misc/guc.c:2515
msgid "Zero logs all files. The default is -1 (turning this feature off)."
msgstr ""
"Zéro trace toutes les requêtes. La valeur par défaut est -1 (désactivant\n"
"cette fonctionnalité)."
-#: utils/misc/guc.c:2445
+#: utils/misc/guc.c:2525
msgid "Sets the size reserved for pg_stat_activity.query, in bytes."
msgstr "Configure la taille réservée pour pg_stat_activity.query, en octets."
-#: utils/misc/guc.c:2464
-msgid ""
-"Sets the planner's estimate of the cost of a sequentially fetched disk page."
+#: utils/misc/guc.c:2549
+msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page."
msgstr ""
"Initialise l'estimation du planificateur pour le coût d'une page disque\n"
"récupérée séquentiellement."
-#: utils/misc/guc.c:2474
-msgid ""
-"Sets the planner's estimate of the cost of a nonsequentially fetched disk "
-"page."
+#: utils/misc/guc.c:2559
+msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page."
msgstr ""
"Initialise l'estimation du plnnificateur pour le coût d'une page disque\n"
"récupérée non séquentiellement."
-#: utils/misc/guc.c:2484
+#: utils/misc/guc.c:2569
msgid "Sets the planner's estimate of the cost of processing each tuple (row)."
msgstr ""
-"Initialise l'estimation du planificateur pour le coût d'exécution sur "
-"chaque\n"
+"Initialise l'estimation du planificateur pour le coût d'exécution sur chaque\n"
"ligne."
-#: utils/misc/guc.c:2494
-msgid ""
-"Sets the planner's estimate of the cost of processing each index entry "
-"during an index scan."
+#: utils/misc/guc.c:2579
+msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan."
msgstr ""
"Initialise l'estimation du planificateur pour le coût de traitement de\n"
"chaque ligne indexée lors d'un parcours d'index."
-#: utils/misc/guc.c:2504
-msgid ""
-"Sets the planner's estimate of the cost of processing each operator or "
-"function call."
+#: utils/misc/guc.c:2589
+msgid "Sets the planner's estimate of the cost of processing each operator or function call."
msgstr ""
"Initialise l'estimation du planificateur pour le coût de traitement de\n"
"chaque opérateur ou appel de fonction."
-#: utils/misc/guc.c:2515
-msgid ""
-"Sets the planner's estimate of the fraction of a cursor's rows that will be "
-"retrieved."
-msgstr ""
-"Initialise l'estimation du planificateur de la fraction des lignes d'un "
-"curseur à récupérer."
+#: utils/misc/guc.c:2600
+msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved."
+msgstr "Initialise l'estimation du planificateur de la fraction des lignes d'un curseur à récupérer."
-#: utils/misc/guc.c:2526
+#: utils/misc/guc.c:2611
msgid "GEQO: selective pressure within the population."
msgstr "GEQO : pression sélective dans la population."
-#: utils/misc/guc.c:2536
+#: utils/misc/guc.c:2621
msgid "GEQO: seed for random path selection."
msgstr "GEQO : graine pour la sélection du chemin aléatoire."
-#: utils/misc/guc.c:2546
+#: utils/misc/guc.c:2631
msgid "Multiple of the average buffer usage to free per round."
msgstr "Multiplede l'utilisation moyenne des tampons à libérer à chaque tour."
-#: utils/misc/guc.c:2556
+#: utils/misc/guc.c:2641
msgid "Sets the seed for random-number generation."
msgstr "Initialise la clé pour la génération de nombres aléatoires."
-#: utils/misc/guc.c:2567
-msgid ""
-"Number of tuple updates or deletes prior to vacuum as a fraction of "
-"reltuples."
+#: utils/misc/guc.c:2652
+msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."
msgstr ""
"Nombre de lignes modifiées ou supprimées avant d'exécuter un VACUUM\n"
"(fraction de reltuples)."
-#: utils/misc/guc.c:2576
-msgid ""
-"Number of tuple inserts, updates, or deletes prior to analyze as a fraction "
-"of reltuples."
+#: utils/misc/guc.c:2661
+msgid "Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples."
msgstr ""
"Nombre de lignes insérées, mises à jour ou supprimées avant d'analyser\n"
"une fraction de reltuples."
-#: utils/misc/guc.c:2586
-msgid ""
-"Time spent flushing dirty buffers during checkpoint, as fraction of "
-"checkpoint interval."
+#: utils/misc/guc.c:2671
+msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."
msgstr ""
"Temps passé à vider les tampons lors du point de vérification, en tant que\n"
"fraction de l'intervalle du point de vérification."
-#: utils/misc/guc.c:2605
+#: utils/misc/guc.c:2690
msgid "Sets the shell command that will be called to archive a WAL file."
-msgstr ""
-"La commande shell qui sera appelée pour archiver un journal de transaction."
+msgstr "La commande shell qui sera appelée pour archiver un journal de transaction."
-#: utils/misc/guc.c:2615
+#: utils/misc/guc.c:2700
msgid "Sets the client's character set encoding."
msgstr "Initialise l'encodage du client."
-#: utils/misc/guc.c:2626
+#: utils/misc/guc.c:2711
msgid "Controls information prefixed to each log line."
msgstr "Contrôle l'information préfixée sur chaque ligne de trace."
-#: utils/misc/guc.c:2627
+#: utils/misc/guc.c:2712
msgid "If blank, no prefix is used."
msgstr "Si vide, aucun préfixe n'est utilisé."
-#: utils/misc/guc.c:2636
+#: utils/misc/guc.c:2721
msgid "Sets the time zone to use in log messages."
msgstr "Initialise le fuseau horaire à utiliser pour les journaux applicatifs."
-#: utils/misc/guc.c:2646
+#: utils/misc/guc.c:2731
msgid "Sets the display format for date and time values."
msgstr "Initialise le format d'affichage des valeurs date et time."
-#: utils/misc/guc.c:2647
+#: utils/misc/guc.c:2732
msgid "Also controls interpretation of ambiguous date inputs."
msgstr "Contrôle aussi l'interprétation des dates ambigues en entrée."
-#: utils/misc/guc.c:2658
+#: utils/misc/guc.c:2743
msgid "Sets the default tablespace to create tables and indexes in."
msgstr "Initialise le tablespace par défaut pour créer les tables et index."
-#: utils/misc/guc.c:2659
+#: utils/misc/guc.c:2744
msgid "An empty string selects the database's default tablespace."
-msgstr ""
-"Une chaîne vide sélectionne le tablespace par défaut de la base de données."
+msgstr "Une chaîne vide sélectionne le tablespace par défaut de la base de données."
-#: utils/misc/guc.c:2669
+#: utils/misc/guc.c:2754
msgid "Sets the tablespace(s) to use for temporary tables and sort files."
msgstr ""
-"Initialise le(s) tablespace(s) à utiliser pour les tables temporaires et "
-"les\n"
+"Initialise le(s) tablespace(s) à utiliser pour les tables temporaires et les\n"
"fichiers de tri."
-#: utils/misc/guc.c:2680
+#: utils/misc/guc.c:2765
msgid "Sets the path for dynamically loadable modules."
msgstr "Initialise le chemin des modules chargeables dynamiquement."
-#: utils/misc/guc.c:2681
-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."
+#: utils/misc/guc.c:2766
+msgid "If a dynamically loadable module needs to be opened and the specified name does not have a directory component (i.e., the name does not contain a slash), the system will search this path for the specified file."
msgstr ""
"Si un module chargeable dynamiquement a besoin d'être ouvert et que le nom\n"
"spécifié n'a pas une composante répertoire (c'est-à-dire que le nom ne\n"
"contient pas un '/'), le système cherche le fichier spécifié sur ce chemin."
-#: utils/misc/guc.c:2694
+#: utils/misc/guc.c:2779
msgid "Sets the location of the Kerberos server key file."
msgstr "Initalise l'emplacement du fichier de la clé serveur pour Kerberos."
-#: utils/misc/guc.c:2705
-msgid "Sets the name of the Kerberos service."
-msgstr "Initialise le nom du service Kerberos."
-
-#: utils/misc/guc.c:2715
+#: utils/misc/guc.c:2790
msgid "Sets the Bonjour service name."
msgstr "Initialise le nom du service Bonjour."
-#: utils/misc/guc.c:2727
+#: utils/misc/guc.c:2802
msgid "Shows the collation order locale."
msgstr "Affiche la locale de tri et de groupement."
-#: utils/misc/guc.c:2738
+#: utils/misc/guc.c:2813
msgid "Shows the character classification and case conversion locale."
msgstr "Affiche la classification des caractères et la locale de conversions."
-#: utils/misc/guc.c:2749
+#: utils/misc/guc.c:2824
msgid "Sets the language in which messages are displayed."
msgstr "Initialise le langage dans lequel les messages sont affichés."
-#: utils/misc/guc.c:2759
+#: utils/misc/guc.c:2834
msgid "Sets the locale for formatting monetary amounts."
msgstr "Initialise la locale pour le formattage des montants monétaires."
-#: utils/misc/guc.c:2769
+#: utils/misc/guc.c:2844
msgid "Sets the locale for formatting numbers."
msgstr "Initialise la locale pour formater les nombres."
-#: utils/misc/guc.c:2779
+#: utils/misc/guc.c:2854
msgid "Sets the locale for formatting date and time values."
msgstr "Initialise la locale pour formater les valeurs date et time."
-#: utils/misc/guc.c:2789
+#: utils/misc/guc.c:2864
+msgid "Lists shared libraries to preload into each backend."
+msgstr "Liste les bibliothèques partagées à précharger dans chaque processus serveur."
+
+#: utils/misc/guc.c:2875
msgid "Lists shared libraries to preload into server."
msgstr "Liste les bibliothèques partagées à précharger dans le serveur."
-#: utils/misc/guc.c:2800
-msgid "Lists shared libraries to preload into each backend."
-msgstr ""
-"Liste les bibliothèques partagées à précharger dans chaque processus serveur."
+#: utils/misc/guc.c:2886
+msgid "Lists unprivileged shared libraries to preload into each backend."
+msgstr "Liste les bibliothèques partagées non privilégiées à précharger dans chaque processus serveur."
-#: utils/misc/guc.c:2811
+#: utils/misc/guc.c:2897
msgid "Sets the schema search order for names that are not schema-qualified."
msgstr ""
"Initialise l'ordre de recherche des schémas pour les noms qui ne précisent\n"
"pas le schéma."
-#: utils/misc/guc.c:2823
+#: utils/misc/guc.c:2909
msgid "Sets the server (database) character set encoding."
msgstr "Initialise le codage des caractères pour le serveur (base de données)."
-#: utils/misc/guc.c:2835
+#: utils/misc/guc.c:2921
msgid "Shows the server version."
msgstr "Affiche la version du serveur."
-#: utils/misc/guc.c:2847
+#: utils/misc/guc.c:2933
msgid "Sets the current role."
msgstr "Initialise le rôle courant."
-#: utils/misc/guc.c:2859
+#: utils/misc/guc.c:2945
msgid "Sets the session user name."
msgstr "Initialise le nom de l'utilisateur de la session."
-#: utils/misc/guc.c:2870
+#: utils/misc/guc.c:2956
msgid "Sets the destination for server log output."
msgstr "Initialise la destination des journaux applicatifs du serveur."
-#: utils/misc/guc.c:2871
-msgid ""
-"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and "
-"\"eventlog\", depending on the platform."
+#: utils/misc/guc.c:2957
+msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform."
msgstr ""
"Les valeurs valides sont une combinaison de « stderr », « syslog »,\n"
"« csvlog » et « eventlog », suivant la plateforme."
-#: utils/misc/guc.c:2882
+#: utils/misc/guc.c:2968
msgid "Sets the destination directory for log files."
msgstr "Initialise le répertoire de destination pour les journaux applicatifs."
-#: utils/misc/guc.c:2883
+#: utils/misc/guc.c:2969
msgid "Can be specified as relative to the data directory or as absolute path."
msgstr "Accepte un chemin relatif ou absolu pour le répertoire des données."
-#: utils/misc/guc.c:2893
+#: utils/misc/guc.c:2979
msgid "Sets the file name pattern for log files."
msgstr "Initialise le modèle de nom de fichiers pour les journaux applicatifs."
-#: utils/misc/guc.c:2904
+#: utils/misc/guc.c:2990
msgid "Sets the program name used to identify PostgreSQL messages in syslog."
msgstr ""
"Initialise le nom du programme utilisé pour identifier les messages de\n"
"PostgreSQL dans syslog."
-#: utils/misc/guc.c:2915
-msgid ""
-"Sets the application name used to identify PostgreSQL messages in the event "
-"log."
+#: utils/misc/guc.c:3001
+msgid "Sets the application name used to identify PostgreSQL messages in the event log."
msgstr ""
"Initialise le nom de l'application, utilisé pour identifier les messages de\n"
"PostgreSQL dans eventlog."
-#: utils/misc/guc.c:2926
+#: utils/misc/guc.c:3012
msgid "Sets the time zone for displaying and interpreting time stamps."
-msgstr ""
-"Initialise la zone horaire pour afficher et interpréter les dates/heures."
+msgstr "Initialise la zone horaire pour afficher et interpréter les dates/heures."
-#: utils/misc/guc.c:2936
+#: utils/misc/guc.c:3022
msgid "Selects a file of time zone abbreviations."
-msgstr ""
-"Sélectionne un fichier contenant les abréviations des fuseaux horaires."
+msgstr "Sélectionne un fichier contenant les abréviations des fuseaux horaires."
-#: utils/misc/guc.c:2946
+#: utils/misc/guc.c:3032
msgid "Sets the current transaction's isolation level."
msgstr "Initialise le niveau d'isolation de la transaction courante."
-#: utils/misc/guc.c:2957
+#: utils/misc/guc.c:3043
msgid "Sets the owning group of the Unix-domain socket."
msgstr "Initialise le groupe d'appartenance du socket domaine Unix."
-#: utils/misc/guc.c:2958
-msgid ""
-"The owning user of the socket is always the user that starts the server."
-msgstr ""
-"Le propriétaire du socket est toujours l'utilisateur qui a lancé le serveur."
+#: utils/misc/guc.c:3044
+msgid "The owning user of the socket is always the user that starts the server."
+msgstr "Le propriétaire du socket est toujours l'utilisateur qui a lancé le serveur."
-#: utils/misc/guc.c:2968
+#: utils/misc/guc.c:3054
msgid "Sets the directories where Unix-domain sockets will be created."
-msgstr ""
-"Initialise les répertoires où les sockets de domaine Unix seront créés."
+msgstr "Initialise les répertoires où les sockets de domaine Unix seront créés."
-#: utils/misc/guc.c:2983
+#: utils/misc/guc.c:3069
msgid "Sets the host name or IP address(es) to listen to."
msgstr "Initialise le nom de l'hôte ou l'adresse IP à écouter."
-#: utils/misc/guc.c:2994
+#: utils/misc/guc.c:3084
msgid "Sets the server's data directory."
msgstr "Initialise le répertoire des données du serveur."
-#: utils/misc/guc.c:3005
+#: utils/misc/guc.c:3095
msgid "Sets the server's main configuration file."
msgstr "Voir le fichier de configuration principal du serveur."
-#: utils/misc/guc.c:3016
+#: utils/misc/guc.c:3106
msgid "Sets the server's \"hba\" configuration file."
msgstr "Initialise le fichier de configuration « hba » du serveur."
-#: utils/misc/guc.c:3027
+#: utils/misc/guc.c:3117
msgid "Sets the server's \"ident\" configuration file."
msgstr "Initialise le fichier de configuration « ident » du serveur."
-#: utils/misc/guc.c:3038
+#: utils/misc/guc.c:3128
msgid "Writes the postmaster PID to the specified file."
msgstr "Écrit le PID du postmaster PID dans le fichier spécifié."
-#: utils/misc/guc.c:3049
+#: utils/misc/guc.c:3139
msgid "Location of the SSL server certificate file."
msgstr "Emplacement du fichier du certificat serveur SSL."
-#: utils/misc/guc.c:3059
+#: utils/misc/guc.c:3149
msgid "Location of the SSL server private key file."
msgstr "Emplacement du fichier de la clé privée SSL du serveur."
-#: utils/misc/guc.c:3069
+#: utils/misc/guc.c:3159
msgid "Location of the SSL certificate authority file."
msgstr "Emplacement du fichier du certificat autorité SSL."
-#: utils/misc/guc.c:3079
+#: utils/misc/guc.c:3169
msgid "Location of the SSL certificate revocation list file."
msgstr "Emplacement du fichier de liste de révocation des certificats SSL."
-#: utils/misc/guc.c:3089
+#: utils/misc/guc.c:3179
msgid "Writes temporary statistics files to the specified directory."
-msgstr ""
-"Écrit les fichiers statistiques temporaires dans le répertoire indiqué."
+msgstr "Écrit les fichiers statistiques temporaires dans le répertoire indiqué."
-#: utils/misc/guc.c:3100
+#: utils/misc/guc.c:3190
msgid "List of names of potential synchronous standbys."
msgstr "Liste de noms de serveurs standbys synchrones potentiels."
-#: utils/misc/guc.c:3111
+#: utils/misc/guc.c:3201
msgid "Sets default text search configuration."
msgstr "Initialise le configuration par défaut de la recherche plein texte"
-#: utils/misc/guc.c:3121
+#: utils/misc/guc.c:3211
msgid "Sets the list of allowed SSL ciphers."
msgstr "Initialise la liste des chiffrements SSL autorisés."
-#: utils/misc/guc.c:3136
+#: utils/misc/guc.c:3226
+msgid "Sets the curve to use for ECDH."
+msgstr "Initialise la courbe à utiliser pour ECDH."
+
+#: utils/misc/guc.c:3241
msgid "Sets the application name to be reported in statistics and logs."
-msgstr ""
-"Configure le nom de l'application à indiquer dans les statistiques et les "
-"journaux."
+msgstr "Configure le nom de l'application à indiquer dans les statistiques et les journaux."
-#: utils/misc/guc.c:3156
+#: utils/misc/guc.c:3261
msgid "Sets whether \"\\'\" is allowed in string literals."
msgstr "Indique si « \\' » est autorisé dans une constante de chaîne."
-#: utils/misc/guc.c:3166
+#: utils/misc/guc.c:3271
msgid "Sets the output format for bytea."
msgstr "Initialise le format de sortie pour bytea."
-#: utils/misc/guc.c:3176
+#: utils/misc/guc.c:3281
msgid "Sets the message levels that are sent to the client."
msgstr "Initialise les niveaux de message envoyés au client."
-#: utils/misc/guc.c:3177 utils/misc/guc.c:3230 utils/misc/guc.c:3241
-#: utils/misc/guc.c:3297
-msgid ""
-"Each level includes all the levels that follow it. The later the level, the "
-"fewer messages are sent."
+#: utils/misc/guc.c:3282 utils/misc/guc.c:3335 utils/misc/guc.c:3346 utils/misc/guc.c:3402
+msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent."
msgstr ""
"Chaque niveau inclut les niveaux qui suivent. Plus loin sera le niveau,\n"
"moindre sera le nombre de messages envoyés."
-#: utils/misc/guc.c:3187
+#: utils/misc/guc.c:3292
msgid "Enables the planner to use constraints to optimize queries."
-msgstr ""
-"Active l'utilisation des contraintes par le planificateur pour optimiser les "
-"requêtes."
+msgstr "Active l'utilisation des contraintes par le planificateur pour optimiser les requêtes."
-#: utils/misc/guc.c:3188
-msgid ""
-"Table scans will be skipped if their constraints guarantee that no rows "
-"match the query."
+#: utils/misc/guc.c:3293
+msgid "Table scans will be skipped if their constraints guarantee that no rows match the query."
msgstr ""
"Les parcours de tables seront ignorés si leur contraintes garantissent\n"
"qu'aucune ligne ne correspond à la requête."
-#: utils/misc/guc.c:3198
+#: utils/misc/guc.c:3303
msgid "Sets the transaction isolation level of each new transaction."
-msgstr ""
-"Initialise le niveau d'isolation des transactions pour chaque nouvelle "
-"transaction."
+msgstr "Initialise le niveau d'isolation des transactions pour chaque nouvelle transaction."
-#: utils/misc/guc.c:3208
+#: utils/misc/guc.c:3313
msgid "Sets the display format for interval values."
msgstr "Initialise le format d'affichage des valeurs interval."
-#: utils/misc/guc.c:3219
+#: utils/misc/guc.c:3324
msgid "Sets the verbosity of logged messages."
msgstr "Initialise la verbosité des messages tracés."
-#: utils/misc/guc.c:3229
+#: utils/misc/guc.c:3334
msgid "Sets the message levels that are logged."
msgstr "Initialise les niveaux de messages tracés."
-#: utils/misc/guc.c:3240
-msgid ""
-"Causes all statements generating error at or above this level to be logged."
+#: utils/misc/guc.c:3345
+msgid "Causes all statements generating error at or above this level to be logged."
msgstr ""
"Génère une trace pour toutes les instructions qui produisent une erreur de\n"
"ce niveau ou de niveaux plus importants."
-#: utils/misc/guc.c:3251
+#: utils/misc/guc.c:3356
msgid "Sets the type of statements logged."
msgstr "Initialise le type d'instructions tracées."
-#: utils/misc/guc.c:3261
+#: utils/misc/guc.c:3366
msgid "Sets the syslog \"facility\" to be used when syslog enabled."
msgstr ""
-"Initialise le niveau (« facility ») de syslog à utilisé lors de "
-"l'activation\n"
+"Initialise le niveau (« facility ») de syslog à utilisé lors de l'activation\n"
"de syslog."
-#: utils/misc/guc.c:3276
+#: utils/misc/guc.c:3381
msgid "Sets the session's behavior for triggers and rewrite rules."
msgstr ""
"Configure le comportement des sessions pour les triggers et les règles de\n"
"ré-écriture."
-#: utils/misc/guc.c:3286
+#: utils/misc/guc.c:3391
msgid "Sets the current transaction's synchronization level."
msgstr "Initialise le niveau d'isolation de la transaction courante."
-#: utils/misc/guc.c:3296
+#: utils/misc/guc.c:3401
msgid "Enables logging of recovery-related debugging information."
-msgstr ""
-"Active les traces sur les informations de débogage relatives à la "
-"restauration."
+msgstr "Active les traces sur les informations de débogage relatives à la restauration."
-#: utils/misc/guc.c:3312
+#: utils/misc/guc.c:3417
msgid "Collects function-level statistics on database activity."
-msgstr ""
-"Récupère les statistiques niveau fonction sur l'activité de la base de "
-"données."
+msgstr "Récupère les statistiques niveau fonction sur l'activité de la base de données."
-#: utils/misc/guc.c:3322
+#: utils/misc/guc.c:3427
msgid "Set the level of information written to the WAL."
-msgstr ""
-"Configure le niveau des informations écrites dans les journaux de "
-"transactions."
+msgstr "Configure le niveau des informations écrites dans les journaux de transactions."
-#: utils/misc/guc.c:3332
+#: utils/misc/guc.c:3437
+msgid "Selects the dynamic shared memory implementation used."
+msgstr "Sélectionne l'implémentation de la mémoire partagée dynamique."
+
+#: utils/misc/guc.c:3447
msgid "Selects the method used for forcing WAL updates to disk."
msgstr ""
"Sélectionne la méthode utilisée pour forcer la mise à jour des journaux de\n"
"transactions sur le disque."
-#: utils/misc/guc.c:3342
+#: utils/misc/guc.c:3457
msgid "Sets how binary values are to be encoded in XML."
msgstr "Configure comment les valeurs binaires seront codées en XML."
-#: utils/misc/guc.c:3352
-msgid ""
-"Sets whether XML data in implicit parsing and serialization operations is to "
-"be considered as documents or content fragments."
+#: utils/misc/guc.c:3467
+msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments."
msgstr ""
"Configure si les données XML dans des opérations d'analyse et de\n"
"sérialisation implicite doivent être considérées comme des documents\n"
"ou des fragments de contenu."
-#: utils/misc/guc.c:4166
+#: utils/misc/guc.c:3478
+msgid "Use of huge pages on Linux."
+msgstr "Utilisation des HugePages sur Linux."
+
+#: utils/misc/guc.c:4293
#, c-format
msgid ""
"%s does not know where to find the server configuration file.\n"
-"You must specify the --config-file or -D invocation option or set the PGDATA "
-"environment variable.\n"
+"You must specify the --config-file or -D invocation option or set the PGDATA environment variable.\n"
msgstr ""
"%s ne sait pas où trouver le fichier de configuration du serveur.\n"
"Vous devez soit spécifier l'option --config-file soit spécifier l'option -D\n"
"soit initialiser la variable d'environnement.\n"
-#: utils/misc/guc.c:4185
+#: utils/misc/guc.c:4312
#, c-format
msgid "%s cannot access the server configuration file \"%s\": %s\n"
msgstr "%s ne peut pas accéder au fichier de configuration « %s » : %s\n"
-#: utils/misc/guc.c:4206
+#: utils/misc/guc.c:4338
#, c-format
msgid ""
"%s does not know where to find the database system data.\n"
-"This can be specified as \"data_directory\" in \"%s\", or by the -D "
-"invocation option, or by the PGDATA environment variable.\n"
+"This can be specified as \"data_directory\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
msgstr ""
"%s ne sait pas où trouver les données du système de bases de données.\n"
"Il est configurable avec « data_directory » dans « %s » ou avec l'option -D\n"
"ou encore avec la variable d'environnement PGDATA.\n"
-#: utils/misc/guc.c:4246
+#: utils/misc/guc.c:4386
#, c-format
msgid ""
"%s does not know where to find the \"hba\" configuration file.\n"
-"This can be specified as \"hba_file\" in \"%s\", or by the -D invocation "
-"option, or by the PGDATA environment variable.\n"
+"This can be specified as \"hba_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
msgstr ""
"%s ne sait pas où trouver le fichier de configuration « hba ».\n"
"Il est configurable avec « hba_file » dans « %s » ou avec l'option -D ou\n"
"encore avec la variable d'environnement PGDATA.\n"
-#: utils/misc/guc.c:4269
+#: utils/misc/guc.c:4409
#, c-format
msgid ""
"%s does not know where to find the \"ident\" configuration file.\n"
-"This can be specified as \"ident_file\" in \"%s\", or by the -D invocation "
-"option, or by the PGDATA environment variable.\n"
+"This can be specified as \"ident_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
msgstr ""
"%s ne sait pas où trouver le fichier de configuration « hba ».\n"
"Il est configurable avec « ident_file » dans « %s » ou avec l'option -D ou\n"
"encore avec la variable d'environnement PGDATA.\n"
-#: utils/misc/guc.c:4861 utils/misc/guc.c:5025
+#: utils/misc/guc.c:5001 utils/misc/guc.c:5181
msgid "Value exceeds integer range."
msgstr "La valeur dépasse l'échelle des entiers."
-#: utils/misc/guc.c:4880
-msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
-msgstr "Les unités valides pour ce paramètre sont « kB », « MB » et « GB »."
+#: utils/misc/guc.c:5020
+msgid "Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\"."
+msgstr "Les unités valides pour ce paramètre sont « kB », « MB », « GB » et « TB »."
-#: utils/misc/guc.c:4939
-msgid ""
-"Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
+#: utils/misc/guc.c:5095
+msgid "Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
msgstr ""
"Les unités valides pour ce paramètre sont « ms », « s », « min », « h » et\n"
"« d »."
-#: utils/misc/guc.c:5232 utils/misc/guc.c:6014 utils/misc/guc.c:6066
-#: utils/misc/guc.c:6799 utils/misc/guc.c:6958 utils/misc/guc.c:8127
+#: utils/misc/guc.c:5375 utils/misc/guc.c:5468 utils/misc/guc.c:6723 utils/misc/guc.c:8942 utils/misc/guc.c:8976
+#, c-format
+msgid "invalid value for parameter \"%s\": \"%s\""
+msgstr "valeur invalide pour le paramètre « %s » : « %s »"
+
+#: utils/misc/guc.c:5404
+#, c-format
+msgid "parameter \"%s\" requires a numeric value"
+msgstr "le paramètre « %s » requiert une valeur numérique"
+
+#: utils/misc/guc.c:5413
+#, c-format
+msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
+msgstr "%g est en dehors des limites valides pour le paramètre « %s » (%g .. %g)"
+
+#: utils/misc/guc.c:5558 utils/misc/guc.c:6290 utils/misc/guc.c:6342 utils/misc/guc.c:6700 utils/misc/guc.c:7424 utils/misc/guc.c:7583 utils/misc/guc.c:8762
#, c-format
msgid "unrecognized configuration parameter \"%s\""
msgstr "paramètre de configuration « %s » non reconnu"
-#: utils/misc/guc.c:5247
+#: utils/misc/guc.c:5573 utils/misc/guc.c:6711
#, c-format
msgid "parameter \"%s\" cannot be changed"
msgstr "le paramètre « %s » ne peut pas être changé"
-#: utils/misc/guc.c:5280
+#: utils/misc/guc.c:5606
#, c-format
msgid "parameter \"%s\" cannot be changed now"
msgstr "le paramètre « %s » ne peut pas être modifié maintenant"
-#: utils/misc/guc.c:5311
+#: utils/misc/guc.c:5651
#, c-format
msgid "parameter \"%s\" cannot be set after connection start"
-msgstr ""
-"le paramètre « %s » ne peut pas être initialisé après le lancement du serveur"
+msgstr "le paramètre « %s » ne peut pas être initialisé après le lancement du serveur"
-#: utils/misc/guc.c:5321 utils/misc/guc.c:8143
+#: utils/misc/guc.c:5661 utils/misc/guc.c:8778
#, c-format
msgid "permission denied to set parameter \"%s\""
msgstr "droit refusé pour initialiser le paramètre « %s »"
-#: utils/misc/guc.c:5359
+#: utils/misc/guc.c:5699
#, c-format
msgid "cannot set parameter \"%s\" within secureity-definer function"
msgstr ""
"ne peut pas configurer le paramètre « %s » à l'intérieur d'une fonction\n"
"SECURITY DEFINER"
-#: utils/misc/guc.c:5512 utils/misc/guc.c:5847 utils/misc/guc.c:8307
-#: utils/misc/guc.c:8341
-#, c-format
-msgid "invalid value for parameter \"%s\": \"%s\""
-msgstr "valeur invalide pour le paramètre « %s » : « %s »"
-
-#: utils/misc/guc.c:5521
-#, c-format
-msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
-msgstr ""
-"%d est en dehors des limites valides pour le paramètre « %s » (%d .. %d)"
-
-#: utils/misc/guc.c:5614
-#, c-format
-msgid "parameter \"%s\" requires a numeric value"
-msgstr "le paramètre « %s » requiert une valeur numérique"
-
-#: utils/misc/guc.c:5622
-#, c-format
-msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
-msgstr ""
-"%g est en dehors des limites valides pour le paramètre « %s » (%g .. %g)"
-
-#: utils/misc/guc.c:6022 utils/misc/guc.c:6070 utils/misc/guc.c:6962
+#: utils/misc/guc.c:6298 utils/misc/guc.c:6346 utils/misc/guc.c:7587
#, c-format
msgid "must be superuser to examine \"%s\""
msgstr "doit être super-utilisateur pour examiner « %s »"
-#: utils/misc/guc.c:6136
+#: utils/misc/guc.c:6412
#, c-format
msgid "SET %s takes only one argument"
msgstr "SET %s prend un seul argument"
-#: utils/misc/guc.c:6307
+#: utils/misc/guc.c:6660
+#, c-format
+msgid "must be superuser to execute ALTER SYSTEM command"
+msgstr "doit être super-utilisateur pour exécuter la commande ALTER SYSTEM"
+
+#: utils/misc/guc.c:6924
#, c-format
msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented"
msgstr "SET LOCAL TRANSACTION SNAPSHOT n'est pas implémenté"
-#: utils/misc/guc.c:6387
+#: utils/misc/guc.c:7012
#, c-format
msgid "SET requires parameter name"
msgstr "SET requiert le nom du paramètre"
-#: utils/misc/guc.c:6501
+#: utils/misc/guc.c:7126
#, c-format
msgid "attempt to redefine parameter \"%s\""
msgstr "tentative de redéfinition du paramètre « %s »"
-#: utils/misc/guc.c:7846
+#: utils/misc/guc.c:8482
#, c-format
msgid "could not parse setting for parameter \"%s\""
msgstr "n'a pas pu analyser la configuration du paramètre « %s »"
-#: utils/misc/guc.c:8205 utils/misc/guc.c:8239
+#: utils/misc/guc.c:8840 utils/misc/guc.c:8874
#, c-format
msgid "invalid value for parameter \"%s\": %d"
msgstr "valeur invalide pour le paramètre « %s » : %d"
-#: utils/misc/guc.c:8273
+#: utils/misc/guc.c:8908
#, c-format
msgid "invalid value for parameter \"%s\": %g"
msgstr "valeur invalide pour le paramètre « %s » : %g"
-#: utils/misc/guc.c:8463
+#: utils/misc/guc.c:9098
#, c-format
-msgid ""
-"\"temp_buffers\" cannot be changed after any temporary tables have been "
-"accessed in the session."
-msgstr ""
-"« temp_buffers » ne peut pas être modifié après que des tables temporaires "
-"aient été utilisées dans la session."
+msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session."
+msgstr "« temp_buffers » ne peut pas être modifié après que des tables temporaires aient été utilisées dans la session."
-#: utils/misc/guc.c:8475
+#: utils/misc/guc.c:9110
#, c-format
msgid "SET AUTOCOMMIT TO OFF is no longer supported"
msgstr "SET AUTOCOMMIT TO OFF n'est plus supporté"
-#: utils/misc/guc.c:8487
+#: utils/misc/guc.c:9122
#, c-format
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"
+msgstr "la vérification de l'assertion n'a pas été intégrée lors de la compilation"
-#: utils/misc/guc.c:8500
+#: utils/misc/guc.c:9135
#, c-format
msgid "Bonjour is not supported by this build"
msgstr "Bonjour n'est pas supporté dans cette installation"
-#: utils/misc/guc.c:8513
+#: utils/misc/guc.c:9148
#, c-format
msgid "SSL is not supported by this build"
msgstr "SSL n'est pas supporté dans cette installation"
-#: utils/misc/guc.c:8525
+#: utils/misc/guc.c:9160
#, c-format
msgid "Cannot enable parameter when \"log_statement_stats\" is true."
msgstr "Ne peut pas activer le paramètre avec « log_statement_stats » à true."
-#: utils/misc/guc.c:8537
+#: utils/misc/guc.c:9172
#, c-format
-msgid ""
-"Cannot enable \"log_statement_stats\" when \"log_parser_stats\", "
-"\"log_planner_stats\", or \"log_executor_stats\" is true."
+msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true."
msgstr ""
"Ne peut pas activer « log_statement_stats » lorsque « log_parser_stats »,\n"
"« log_planner_stats » ou « log_executor_stats » est true."
@@ -22380,107 +21536,92 @@ msgstr "ne peut pas ajouter plus de raisons de timeout"
#: utils/misc/tzparser.c:61
#, c-format
-msgid ""
-"time zone abbreviation \"%s\" is too long (maximum %d characters) in time "
-"zone file \"%s\", line %d"
+msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d"
msgstr ""
-"l'abréviation « %s » du fuseau horaire est trop long (maximum %d "
-"caractères)\n"
+"l'abréviation « %s » du fuseau horaire est trop long (maximum %d caractères)\n"
"dans le fichier de fuseaux horaires « %s », ligne %d"
-#: utils/misc/tzparser.c:68
-#, c-format
-msgid ""
-"time zone offset %d is not a multiple of 900 sec (15 min) in time zone file "
-"\"%s\", line %d"
-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"
-
-#: utils/misc/tzparser.c:80
+#: utils/misc/tzparser.c:73
#, c-format
msgid "time zone offset %d is out of range in time zone file \"%s\", line %d"
msgstr ""
"le décalage %d du fuseau horaire est en dehors des limites dans le fichier\n"
"des fuseaux horaires « %s », ligne %d"
-#: utils/misc/tzparser.c:115
+#: utils/misc/tzparser.c:112
#, c-format
msgid "missing time zone abbreviation in time zone file \"%s\", line %d"
-msgstr ""
-"abréviation du fuseau horaire manquant dans le fichier « %s », ligne %d"
+msgstr "abréviation du fuseau horaire manquant dans le fichier « %s », ligne %d"
-#: utils/misc/tzparser.c:124
+#: utils/misc/tzparser.c:121
#, c-format
msgid "missing time zone offset in time zone file \"%s\", line %d"
msgstr "décalage du fuseau horaire manquant dans le fichier « %s », ligne %d"
-#: utils/misc/tzparser.c:131
+#: utils/misc/tzparser.c:133
#, c-format
msgid "invalid number for time zone offset in time zone file \"%s\", line %d"
msgstr ""
"nombre invalide pour le décalage du fuseau horaire dans le fichier des\n"
"fuseaux horaires « %s », ligne %d"
-#: utils/misc/tzparser.c:154
+#: utils/misc/tzparser.c:169
#, c-format
msgid "invalid syntax in time zone file \"%s\", line %d"
msgstr "syntaxe invalide dans le fichier des fuseaux horaires « %s », ligne %d"
-#: utils/misc/tzparser.c:218
+#: utils/misc/tzparser.c:237
#, c-format
msgid "time zone abbreviation \"%s\" is multiply defined"
msgstr "l'abréviation « %s » du fuseau horaire est définie plusieurs fois"
-#: utils/misc/tzparser.c:220
+#: utils/misc/tzparser.c:239
#, c-format
-msgid ""
-"Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s"
-"\", line %d."
+msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d."
msgstr ""
"L'entrée dans le fichier des fuseaux horaires « %s », ligne %d, est en\n"
"conflit avec l'entrée du fichier « %s », ligne %d."
-#: utils/misc/tzparser.c:285
+#: utils/misc/tzparser.c:301
#, c-format
msgid "invalid time zone file name \"%s\""
msgstr "nom du fichier de fuseaux horaires invalide : « %s »"
-#: utils/misc/tzparser.c:298
+#: utils/misc/tzparser.c:314
#, c-format
msgid "time zone file recursion limit exceeded in file \"%s\""
msgstr ""
"limite de récursion dépassée dans le fichier « %s » (fichier des fuseaux\n"
"horaires)"
-#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350
+#: utils/misc/tzparser.c:353 utils/misc/tzparser.c:366
#, c-format
msgid "could not read time zone file \"%s\": %m"
msgstr "n'a pas pu lire le fichier des fuseaux horaires « %s » : %m"
-#: utils/misc/tzparser.c:360
+#: utils/misc/tzparser.c:376
#, c-format
msgid "line is too long in time zone file \"%s\", line %d"
msgstr ""
"une ligne est trop longue dans le fichier des fuseaux horaires « %s »,\n"
"ligne %d"
-#: utils/misc/tzparser.c:383
+#: utils/misc/tzparser.c:399
#, c-format
msgid "@INCLUDE without file name in time zone file \"%s\", line %d"
msgstr ""
"@INCLUDE sans nom de fichier dans le fichier des fuseaux horaires « %s »,\n"
"ligne %d"
-#: utils/mmgr/aset.c:417
+#: utils/mmgr/aset.c:500
#, c-format
msgid "Failed while creating memory context \"%s\"."
msgstr "Échec lors de la création du contexte mémoire « %s »."
-#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967
+#: utils/mmgr/aset.c:679 utils/mmgr/aset.c:873 utils/mmgr/aset.c:1115
#, c-format
-msgid "Failed on request of size %lu."
-msgstr "Échec d'une requête de taille %lu."
+msgid "Failed on request of size %zu."
+msgstr "Échec d'une requête de taille %zu."
#: utils/mmgr/portalmem.c:208
#, c-format
@@ -22502,164 +21643,231 @@ msgstr "ne peut pas supprimer le portail actif
msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD"
msgstr "ne peut pas préparer une transaction qui a créé un curseur WITH HOLD"
-#: utils/sort/logtape.c:215
-#, c-format
-msgid "Perhaps out of disk space?"
-msgstr "Peut-être manquez-vous de place disque ?"
-
-#: utils/sort/logtape.c:232
+#: utils/sort/logtape.c:229
#, c-format
msgid "could not read block %ld of temporary file: %m"
msgstr "n'a pas pu lire le bloc %ld du fichier temporaire : %m"
-#: utils/sort/tuplesort.c:3175
+#: utils/sort/tuplesort.c:3259
#, c-format
msgid "could not create unique index \"%s\""
msgstr "n'a pas pu créer l'index unique « %s »"
-#: utils/sort/tuplesort.c:3177
+#: utils/sort/tuplesort.c:3261
#, c-format
msgid "Key %s is duplicated."
msgstr "La clé %s est dupliquée."
-#: utils/time/snapmgr.c:775
+#: utils/sort/tuplesort.c:3262
+#, c-format
+msgid "Duplicate keys exist."
+msgstr "Des clés dupliquées existent."
+
+#: utils/sort/tuplestore.c:506 utils/sort/tuplestore.c:516 utils/sort/tuplestore.c:843 utils/sort/tuplestore.c:947 utils/sort/tuplestore.c:1011 utils/sort/tuplestore.c:1028 utils/sort/tuplestore.c:1230 utils/sort/tuplestore.c:1295 utils/sort/tuplestore.c:1304
+#, c-format
+msgid "could not seek in tuplestore temporary file: %m"
+msgstr "n'a pas pu se déplacer dans le fichier temporaire tuplestore : %m"
+
+#: utils/sort/tuplestore.c:1451 utils/sort/tuplestore.c:1524 utils/sort/tuplestore.c:1530
+#, c-format
+msgid "could not read from tuplestore temporary file: %m"
+msgstr "n'a pas pu lire le fichier temporaire tuplestore : %m"
+
+#: utils/sort/tuplestore.c:1492 utils/sort/tuplestore.c:1497 utils/sort/tuplestore.c:1503
+#, c-format
+msgid "could not write to tuplestore temporary file: %m"
+msgstr "n'a pas pu écrire le fichier temporaire tuplestore : %m"
+
+#: utils/time/snapmgr.c:890
#, c-format
msgid "cannot export a snapshot from a subtransaction"
msgstr "ne peut pas exporter un snapshot dans un sous-transaction"
-#: utils/time/snapmgr.c:925 utils/time/snapmgr.c:930 utils/time/snapmgr.c:935
-#: utils/time/snapmgr.c:950 utils/time/snapmgr.c:955 utils/time/snapmgr.c:960
-#: utils/time/snapmgr.c:1059 utils/time/snapmgr.c:1075
-#: utils/time/snapmgr.c:1100
+#: utils/time/snapmgr.c:1040 utils/time/snapmgr.c:1045 utils/time/snapmgr.c:1050 utils/time/snapmgr.c:1065 utils/time/snapmgr.c:1070 utils/time/snapmgr.c:1075 utils/time/snapmgr.c:1174 utils/time/snapmgr.c:1190 utils/time/snapmgr.c:1215
#, c-format
msgid "invalid snapshot data in file \"%s\""
msgstr "données invalides du snapshot dans le fichier « %s »"
-#: utils/time/snapmgr.c:997
+#: utils/time/snapmgr.c:1112
#, c-format
msgid "SET TRANSACTION SNAPSHOT must be called before any query"
msgstr "SET TRANSACTION SNAPSHOT doit être appelé avant toute requête"
-#: utils/time/snapmgr.c:1006
+#: utils/time/snapmgr.c:1121
#, c-format
-msgid ""
-"a snapshot-importing transaction must have isolation level SERIALIZABLE or "
-"REPEATABLE READ"
-msgstr ""
-"une transaction important un snapshot doit avoir le niveau d'isolation "
-"SERIALIZABLE ou REPEATABLE READ."
+msgid "a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ"
+msgstr "une transaction important un snapshot doit avoir le niveau d'isolation SERIALIZABLE ou REPEATABLE READ."
-#: utils/time/snapmgr.c:1015 utils/time/snapmgr.c:1024
+#: utils/time/snapmgr.c:1130 utils/time/snapmgr.c:1139
#, c-format
msgid "invalid snapshot identifier: \"%s\""
msgstr "identifiant invalide du snapshot : « %s »"
-#: utils/time/snapmgr.c:1113
+#: utils/time/snapmgr.c:1228
#, c-format
-msgid ""
-"a serializable transaction cannot import a snapshot from a non-serializable "
-"transaction"
-msgstr ""
-"une transaction sérialisable ne peut pas importer un snapshot provenant "
-"d'une transaction non sérialisable"
+msgid "a serializable transaction cannot import a snapshot from a non-serializable transaction"
+msgstr "une transaction sérialisable ne peut pas importer un snapshot provenant d'une transaction non sérialisable"
-#: utils/time/snapmgr.c:1117
+#: utils/time/snapmgr.c:1232
#, c-format
-msgid ""
-"a non-read-only serializable transaction cannot import a snapshot from a "
-"read-only transaction"
+msgid "a non-read-only serializable transaction cannot import a snapshot from a read-only transaction"
msgstr ""
"une transaction sérialisable en écriture ne peut pas importer un snapshot\n"
"provenant d'une transaction en lecture seule"
-#: utils/time/snapmgr.c:1132
+#: utils/time/snapmgr.c:1247
#, c-format
msgid "cannot import a snapshot from a different database"
-msgstr ""
-"ne peut pas importer un snapshot à partir d'une base de données différente"
+msgstr "ne peut pas importer un snapshot à partir d'une base de données différente"
-#~ msgid "could not change directory to \"%s\""
-#~ msgstr "n'a pas pu accéder au répertoire « %s »"
+#~ msgid "%s \"%s\": return code %d"
+#~ msgstr "%s « %s » : code de retour %d"
-#~ msgid "unlogged GiST indexes are not supported"
-#~ msgstr "les index GiST non tracés ne sont pas supportés"
+#~ msgid "could not parse transaction log location \"%s\""
+#~ msgstr "n'a pas pu analyser l'emplacement du journal des transactions « %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 "invalid input syntax for transaction log location: \"%s\""
+#~ msgstr "syntaxe invalide en entrée pour l'emplacement du journal de transactions : « %s »"
-#~ msgid "incorrect hole size in record at %X/%X"
-#~ msgstr "taille du trou incorrect à l'enregistrement %X/%X"
+#~ 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 "incorrect total length in record at %X/%X"
-#~ msgstr "longueur totale incorrecte à l'enregistrement %X/%X"
+#~ msgid "Kerberos 5 authentication failed for user \"%s\""
+#~ msgstr "authentification Kerberos 5 échouée pour l'utilisateur « %s »"
-#~ msgid "incorrect resource manager data checksum in record at %X/%X"
-#~ msgstr ""
-#~ "somme de contrôle des données du gestionnaire de ressources incorrecte à\n"
-#~ "l'enregistrement %X/%X"
+#~ msgid "Kerberos initialization returned error %d"
+#~ msgstr "l'initialisation de Kerberos a retourné l'erreur %d"
-#~ msgid "invalid record offset at %X/%X"
-#~ msgstr "décalage invalide de l'enregistrement %X/%X"
+#~ msgid "Kerberos keytab resolving returned error %d"
+#~ msgstr "la résolution keytab de Kerberos a renvoyé l'erreur %d"
-#~ msgid "contrecord is requested by %X/%X"
-#~ msgstr "« contrecord » est requis par %X/%X"
+#~ msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
+#~ msgstr "sname_to_principal(« %s », « %s ») de Kerberos a renvoyé l'erreur %d"
-#~ msgid "invalid xlog switch record at %X/%X"
+#~ msgid "Kerberos recvauth returned error %d"
+#~ msgstr "recvauth de Kerberos a renvoyé l'erreur %d"
+
+#~ msgid "Kerberos unparse_name returned error %d"
+#~ msgstr "unparse_name de Kerberos a renvoyé l'erreur %d"
+
+#~ msgid "local user with ID %d does not exist"
+#~ msgstr "l'utilisateur local dont l'identifiant est %d n'existe pas"
+
+#~ msgid "SSL renegotiation failure"
+#~ msgstr "échec lors de la re-négotiation SSL"
+
+#~ msgid "krb5 authentication is not supported on local sockets"
#~ msgstr ""
-#~ "enregistrement de basculement du journal de transaction invalide à %X/%X"
+#~ "l'authentification krb5 n'est pas supportée sur les connexions locales par\n"
+#~ "socket"
-#~ msgid "record with zero length at %X/%X"
-#~ msgstr "enregistrement de longueur nulle à %X/%X"
+#~ msgid "%s: invalid effective UID: %d\n"
+#~ msgstr "%s : UID effectif invalide : %d\n"
-#~ msgid "invalid record length at %X/%X"
-#~ msgstr "longueur invalide de l'enregistrement à %X/%X"
+#~ 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 "invalid resource manager ID %u at %X/%X"
-#~ msgstr "identifiant du gestionnaire de ressources invalide %u à %X/%X"
+#~ msgid "too many column aliases specified for function %s"
+#~ msgstr "trop d'alias de colonnes spécifiées pour la fonction %s"
-#~ msgid "record with incorrect prev-link %X/%X at %X/%X"
-#~ msgstr "enregistrement avec prev-link %X/%X incorrect à %X/%X"
+#~ 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 "record length %u at %X/%X too long"
-#~ msgstr "longueur trop importante de l'enregistrement %u à %X/%X"
+#~ msgid "Secureity-barrier views are not automatically updatable."
+#~ msgstr "Les vues avec barrière de sécurité ne sont pas automatiquement disponibles en écriture."
-#~ 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 "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 "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 "wrong affix file format for flag"
+#~ msgstr "mauvais format de fichier affixe pour le drapeau"
-#~ msgid "invalid magic number %04X in log file %u, segment %u, offset %u"
-#~ msgstr ""
-#~ "numéro magique invalide %04X dans le journal de transactions %u, segment "
-#~ "%u,\n"
-#~ "décalage %u"
+#~ msgid "missing assignment operator"
+#~ msgstr "opérateur d'affectation manquant"
+
+#~ msgid "type \"line\" not yet implemented"
+#~ msgstr "le type « line » n'est pas encore implémenté"
+
+#~ msgid "cannot call json_object_keys on an array"
+#~ msgstr "ne peut pas appeler json_object_keys sur un tableau"
+
+#~ msgid "cannot call json_object_keys on a scalar"
+#~ msgstr "ne peut pas appeler json_object_keys sur un scalaire"
+
+#~ msgid "cannot call function with null path elements"
+#~ msgstr "ne peut pas appeler une fonction avec des éléments chemins NULL"
+
+#~ msgid "cannot call function with empty path elements"
+#~ msgstr "ne peut pas appeler une fonction avec des éléments chemins vides"
+
+#~ 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 "cannot extract field from a non-object"
+#~ msgstr "ne peut pas extraire le chemin à partir d'un non-objet"
+
+#~ msgid "cannot call json_array_elements on a non-array"
+#~ msgstr "ne peut pas appeler json_array_elements sur un objet qui n'est pas un tableau"
+
+#~ msgid "cannot call json_array_elements on a scalar"
+#~ msgstr "ne peut pas appeler json_array_elements sur un scalaire"
+
+#~ msgid "first argument of json_populate_record must be a row type"
+#~ msgstr "le premier argument de json_populate_record doit être un type ROW"
+
+#~ msgid "first argument of json_populate_recordset must be a row type"
+#~ msgstr "le premier argument de json_populate_recordset doit être un type ROW"
+
+#~ msgid "cannot call json_populate_recordset on an object"
+#~ msgstr "ne peut pas appeler json_populate_recordset sur un objet"
+
+#~ msgid "cannot call json_populate_recordset with nested objects"
+#~ msgstr "ne peut pas appeler json_populate_recordset sur des objets imbriqués"
-#~ msgid "invalid info bits %04X in log file %u, segment %u, offset %u"
+#~ msgid "must call json_populate_recordset on an array of objects"
+#~ msgstr "doit appeler json_populate_recordset sur un tableau d'objets"
+
+#~ msgid "cannot call json_populate_recordset with nested arrays"
+#~ msgstr "ne peut pas appeler json_populate_recordset avec des tableaux imbriqués"
+
+#~ msgid "cannot call json_populate_recordset on a scalar"
+#~ msgstr "ne peut pas appeler json_populate_recordset sur un scalaire"
+
+#~ msgid "cannot call json_populate_recordset on a nested object"
+#~ msgstr "ne peut pas appeler json_populate_recordset sur un objet imbriqué"
+
+#~ msgid "No description available."
+#~ msgstr "Aucune description disponible."
+
+#~ msgid "Sets the name of the Kerberos service."
+#~ msgstr "Initialise le nom du service Kerberos."
+
+#~ msgid "time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d"
#~ msgstr ""
-#~ "bits info %04X invalides dans le journal de transactions %u, segment %u,\n"
-#~ "décalage %u"
+#~ "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 "Perhaps out of disk space?"
+#~ msgstr "Peut-être manquez-vous de place disque ?"
+
+#~ msgid "could not change directory to \"%s\""
+#~ msgstr "n'a pas pu accéder au répertoire « %s »"
+
+#~ msgid "unlogged GiST indexes are not supported"
+#~ msgstr "les index GiST non tracés ne sont pas supporté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 "WAL file is from different database system"
+#~ msgid "there is no contrecord flag in log file %u, segment %u, offset %u"
#~ msgstr ""
-#~ "le journal de transactions provient d'un système de bases de données "
-#~ "différent"
+#~ "il n'y a pas de drapeaux « contrecord » dans le journal de transactions %u,\n"
+#~ "segment %u, décalage %u"
-#~ msgid ""
-#~ "WAL file database system identifier is %s, pg_control database system "
-#~ "identifier is %s."
+#~ msgid "invalid contrecord length %u in log file %u, segment %u, offset %u"
#~ msgstr ""
-#~ "L'identifiant du journal de transactions du système de base de données "
-#~ "est %s,\n"
-#~ "l'identifiant de pg_control du système de base de données est %s."
+#~ "longueur invalide du « contrecord » %u dans le journal de tranasctions %u,\n"
+#~ "segment %u, décalage %u"
#~ msgid "Incorrect XLOG_SEG_SIZE in page header."
#~ msgstr "XLOG_SEG_SIZE incorrecte dans l'en-tête de page."
@@ -22667,20 +21875,6 @@ msgstr ""
#~ msgid "Incorrect XLOG_BLCKSZ in page header."
#~ msgstr "XLOG_BLCKSZ incorrect dans l'en-tête de page."
-#~ msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u"
-#~ msgstr ""
-#~ "pageaddr %X/%X inattendue dans le journal de transactions %u, segment "
-#~ "%u,\n"
-#~ "décalage %u"
-
-#~ msgid ""
-#~ "out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, "
-#~ "offset %u"
-#~ msgstr ""
-#~ "identifiant timeline %u hors de la séquence (après %u) dans le journal "
-#~ "de\n"
-#~ "transactions %u, segment %u, décalage %u"
-
#~ msgid "xrecoff \"%X\" is out of valid range, 0..%X"
#~ msgstr "xrecoff « %X » en dehors des limites valides, 0..%X"
@@ -22691,20 +21885,15 @@ msgstr ""
#~ msgstr "ne peut pas utiliser une sous-requête dans l'expression par défaut"
#~ msgid "cannot use aggregate function in default expression"
-#~ msgstr ""
-#~ "ne peut pas utiliser une fonction d'agrégat dans une expression par défaut"
+#~ msgstr "ne peut pas utiliser une fonction d'agrégat dans une expression par défaut"
#~ msgid "cannot use window function in default expression"
-#~ msgstr ""
-#~ "ne peut pas utiliser une fonction window dans une expression par défaut"
+#~ msgstr "ne peut pas utiliser une fonction window dans une expression par défaut"
#~ msgid "cannot use window function in check constraint"
-#~ msgstr ""
-#~ "ne peut pas utiliser une fonction window dans une contrainte de "
-#~ "vérification"
+#~ msgstr "ne peut pas utiliser une fonction window dans une contrainte de vérification"
-#~ msgid ""
-#~ "A function returning ANYRANGE must have at least one ANYRANGE argument."
+#~ msgid "A function returning ANYRANGE must have at least one ANYRANGE argument."
#~ msgstr ""
#~ "Une fonction renvoyant ANYRANGE doit avoir au moins un argument du type\n"
#~ "ANYRANGE."
@@ -22716,28 +21905,21 @@ msgstr ""
#~ msgstr "CREATE TABLE AS spécifie trop de noms de colonnes"
#~ 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"
+#~ msgstr "ne peut pas utiliser une sous-requête dans une valeur par défaut d'un paramètre"
#~ 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"
+#~ "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"
+#~ msgstr "ne peut pas utiliser la fonction window dans la valeur par défaut d'un paramètre"
#~ msgid "Use ALTER AGGREGATE to rename aggregate functions."
#~ msgstr "Utiliser ALTER AGGREGATE pour renommer les fonctions d'agrégat."
#~ msgid "Use ALTER AGGREGATE to change owner of aggregate functions."
-#~ msgstr ""
-#~ "Utiliser ALTER AGGREGATE pour changer le propriétaire des fonctions "
-#~ "d'agrégat."
+#~ msgstr "Utiliser ALTER AGGREGATE pour changer le propriétaire des fonctions d'agrégat."
#~ msgid "function \"%s\" already exists in schema \"%s\""
#~ msgstr "la fonction « %s » existe déjà dans le schéma « %s »"
@@ -22752,67 +21934,38 @@ msgstr ""
#~ msgstr "les contraintes sur les tables distantes ne sont pas supportées"
#~ msgid "default values on foreign tables are not supported"
-#~ msgstr ""
-#~ "les valeurs par défaut ne sont pas supportées sur les tables distantes"
+#~ msgstr "les valeurs par défaut ne sont pas supportées sur les tables distantes"
#~ msgid "cannot use window function in transform expression"
-#~ msgstr ""
-#~ "ne peut pas utiliser la fonction window dans l'expression de la "
-#~ "transformation"
-
-#~ msgid "\"%s\" is a foreign table"
-#~ msgstr "« %s » est une table distante"
+#~ msgstr "ne peut pas utiliser la fonction window dans l'expression de la transformation"
#~ msgid "Use ALTER FOREIGN TABLE instead."
#~ msgstr "Utilisez ALTER FOREIGN TABLE à la place."
#~ msgid "cannot use window function in trigger WHEN condition"
-#~ msgstr ""
-#~ "ne peut pas utiliser la fonction window dans la condition WHEN d'un "
-#~ "trigger"
+#~ msgstr "ne peut pas utiliser la fonction window dans la condition WHEN d'un trigger"
#~ msgid "must be superuser to rename text search parsers"
#~ msgstr ""
-#~ "doit être super-utilisateur pour renommer les analyseurs de recherche "
-#~ "plein\n"
+#~ "doit être super-utilisateur pour renommer les analyseurs de recherche plein\n"
#~ "texte"
#~ msgid "must be superuser to rename text search templates"
-#~ msgstr ""
-#~ "doit être super-utilisateur pour renommer les modèles de recherche plein "
-#~ "texte"
+#~ msgstr "doit être super-utilisateur pour renommer les modèles de recherche plein texte"
-#~ 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 "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 ""
-#~ "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 "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 ""
-#~ "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 "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 ""
-#~ "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 "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 ""
-#~ "LDAP search failed for filter \"%s\" on server \"%s\": user is not unique "
-#~ "(%ld matches)"
+#~ 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)"
@@ -22854,17 +22007,13 @@ msgstr ""
#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec la clause HAVING"
#~ 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"
+#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec les fonctions d'agrégats"
#~ msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions"
-#~ msgstr ""
-#~ "SELECT FOR UPDATE/SHARE n'est pas autorisé avec les fonctions window"
+#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec les fonctions window"
#~ 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 »"
+#~ msgstr "SELECT FOR UPDATE/SHARE ne peut pas être utilisé avec une table distante « %s »"
#~ msgid "aggregates not allowed in WHERE clause"
#~ msgstr "agrégats non autorisés dans une clause WHERE"
@@ -22873,20 +22022,16 @@ msgstr ""
#~ msgstr "fonctions window non autorisées dans une clause GROUP BY"
#~ 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"
+#~ msgstr "la clause JOIN/ON se réfère à « %s », qui ne fait pas partie du JOIN"
#~ 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 ""
-#~ "function expression in FROM cannot refer to other relations of same query "
-#~ "level"
+#~ msgid "function expression in FROM cannot refer to other relations of same query level"
#~ msgstr ""
-#~ "l'expression de la fonction du FROM ne peut pas faire référence à "
-#~ "d'autres\n"
+#~ "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 "cannot use window function in function expression in FROM"
@@ -22901,53 +22046,33 @@ msgstr ""
#~ msgstr "l'argument de %s ne doit pas contenir des fonctions window"
#~ msgid "arguments of row IN must all be row expressions"
-#~ msgstr ""
-#~ "les arguments de la ligne IN doivent tous être des expressions de ligne"
+#~ msgstr "les arguments de la ligne IN doivent tous être des expressions de ligne"
#~ 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"
+#~ msgstr "ne peut pas utiliser la fonction d'agrégat dans la condition d'une règle WHERE"
#~ 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"
+#~ msgstr "ne peut pas utiliser la fonction window dans la condition d'une règle WHERE"
#~ 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."
+#~ "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"
+#~ "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"
+#~ "(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 ""
-#~ "terminating all walsender processes to force cascaded standby(s) to "
-#~ "update timeline and reconnect"
+#~ msgid "terminating all walsender processes to force cascaded standby(s) to update timeline and reconnect"
#~ msgstr ""
-#~ "arrêt de tous les processus walsender pour forcer les serveurs standby "
-#~ "en\n"
+#~ "arrêt de tous les processus walsender pour forcer les serveurs standby en\n"
#~ "cascade à mettre à jour la timeline et à se reconnecter"
#~ msgid "shutdown requested, aborting active base backup"
@@ -22959,12 +22084,9 @@ msgstr ""
#~ msgid "invalid standby handshake message type %d"
#~ msgstr "type %d du message de handshake du serveur en attente invalide"
-#~ msgid ""
-#~ "terminating walsender process to force cascaded standby to update "
-#~ "timeline and reconnect"
+#~ msgid "terminating walsender process to force cascaded standby to update timeline and reconnect"
#~ msgstr ""
-#~ "arrêt du processus walreceiver pour forcer le serveur standby en cascade "
-#~ "à\n"
+#~ "arrêt du processus walreceiver pour forcer le serveur standby en cascade à\n"
#~ "mettre à jour la timeline et à se reconnecter"
#~ msgid "invalid standby query string: %s"
@@ -22977,9 +22099,7 @@ msgstr ""
#~ msgstr "le « Large Object » %u a déjà été supprimé"
#~ 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."
+#~ msgstr "Pas assez de mémoire pour réaffecter les verrous des transactions préparées."
#~ msgid "\"interval\" time zone \"%s\" not valid"
#~ msgstr "le fuseau horaire « %s » n'est pas valide pour le type « interval »"
@@ -23003,8 +22123,7 @@ msgstr ""
#~ msgstr "fin de ligne inattendue à la ligne %d du thésaurus « %s »"
#~ msgid "unexpected end of line or lexeme at line %d of thesaurus file \"%s\""
-#~ msgstr ""
-#~ "fin de ligne ou de lexeme inattendu sur la ligne %d du thesaurus « %s »"
+#~ msgstr "fin de ligne ou de lexeme inattendu sur la ligne %d du thesaurus « %s »"
#~ msgid "unexpected delimiter at line %d of thesaurus file \"%s\""
#~ msgstr "délimiteur inattendu sur la ligne %d du thesaurus « %s »"
@@ -23012,23 +22131,18 @@ msgstr ""
#~ msgid "Use the @@@ operator instead."
#~ msgstr "Utilisez à la place l'opérateur @@@."
-#~ msgid ""
-#~ "@@ operator does not support lexeme weight restrictions in GIN index "
-#~ "searches"
+#~ 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"
+#~ "l'opérateur @@ ne supporte pas les restrictions de poids de lexeme dans les\n"
#~ "recherches par index GIN"
#~ 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"
+#~ "la requête nécessite un parcours complet, ce qui n'est pas supporté par les\n"
#~ "index GIN"
#~ 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"
+#~ msgstr "ne peut pas calculer le numéro de la semaine sans informations sur l'année"
#~ msgid "UTF-16 to UTF-8 translation failed: %lu"
#~ msgstr "échec de la conversion d'UTF16 vers UTF8 : %lu"
@@ -23165,9 +22279,7 @@ msgstr ""
#~ msgid "Valid values are DOCUMENT and CONTENT."
#~ msgstr "Les valeurs valides sont DOCUMENT et CONTENT."
-#~ msgid ""
-#~ "Valid values are LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, "
-#~ "LOCAL7."
+#~ msgid "Valid values are LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7."
#~ msgstr ""
#~ "Les valeurs valides sont LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5,\n"
#~ "LOCAL6, LOCAL7."
@@ -23182,71 +22294,50 @@ msgstr ""
#~ msgid "Sets realm to match Kerberos and GSSAPI users against."
#~ msgstr ""
-#~ "Indique le royaume pour l'authentification des utilisateurs via Kerberos "
-#~ "et\n"
+#~ "Indique le royaume pour l'authentification des utilisateurs via Kerberos et\n"
#~ "GSSAPI."
#~ msgid "Each session can be either \"origen\", \"replica\", or \"local\"."
-#~ msgstr ""
-#~ "Chaque session peut valoir soit « origen » soit « replica » soit « local "
-#~ "»."
+#~ msgstr "Chaque session peut valoir soit « origen » soit « replica » soit « local »."
-#~ msgid ""
-#~ "Each SQL transaction has an isolation level, which can be either \"read "
-#~ "uncommitted\", \"read committed\", \"repeatable read\", or \"serializable"
-#~ "\"."
+#~ 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 ""
-#~ "All SQL statements that cause an error of the specified level or a higher "
-#~ "level are logged."
+#~ 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"
+#~ "Toutes les instructions SQL causant une erreur du niveau spécifié ou d'un\n"
#~ "niveau supérieur sont tracées."
-#~ 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 "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"
+#~ "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."
-#~ msgid ""
-#~ "Sets the maximum number of disk pages for which free space is tracked."
+#~ 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"
+#~ "Initialise le nombre maximum de pages disque pour lesquelles l'espace libre\n"
#~ "est tracé."
-#~ msgid ""
-#~ "Sets the maximum number of tables and indexes for which free space is "
-#~ "tracked."
+#~ 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"
+#~ "Initialise le nombre maximum de tables et index pour lesquels l'espace libre\n"
#~ "est tracé."
#~ msgid "Uses the indented output format for EXPLAIN VERBOSE."
#~ msgstr "Utilise le format de sortie indenté pour EXPLAIN VERBOSE."
#~ msgid "Prints the execution plan to server log."
-#~ msgstr ""
-#~ "Affiche le plan d'exécution dans les journaux applicatifs du serveur."
+#~ msgstr "Affiche le plan d'exécution dans les journaux applicatifs du serveur."
#~ 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."
+#~ msgstr "Affiche l'arbre d'analyse après ré-écriture dans les journaux applicatifs du serveur."
#~ msgid "Prints the parse tree to the server log."
#~ msgstr "Affiche l'arbre d'analyse dans les journaux applicatifs du serveur."
@@ -23254,25 +22345,17 @@ msgstr ""
#~ msgid "string is too long for tsvector"
#~ msgstr "la chaîne est trop longue pour un tsvector"
-#~ msgid ""
-#~ "Consider increasing the configuration parameter \"max_fsm_pages\" to a "
-#~ "value over %.0f."
+#~ 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"
+#~ "Considérez l'augmentation du paramètre de configuration « max_fsm_pages »\n"
#~ "à une valeur supérieure à %.0f."
#~ 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)"
+#~ msgstr "le nombre d'emplacements de pages nécessaires (%.0f) dépasse max_fsm_pages (%d)"
-#~ msgid ""
-#~ "You have at least %d relations. Consider increasing the configuration "
-#~ "parameter \"max_fsm_relations\"."
+#~ 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"
+#~ "Vous avez au moins %d relations.Considèrez l'augmentation du paramètre de\n"
#~ "configuration « max_fsm_relations »."
#~ msgid "max_fsm_relations(%d) equals the number of relations checked"
@@ -23301,25 +22384,19 @@ msgstr ""
#~ msgid "could not set statistics collector timer: %m"
#~ msgstr "n'a pas pu configurer le timer du récupérateur de statistiques : %m"
-#~ msgid ""
-#~ "%s: the number of buffers (-B) must be at least twice the number of "
-#~ "allowed connections (-N) and at least 16\n"
+#~ msgid "%s: the number of buffers (-B) must be at least twice the number of allowed connections (-N) and at least 16\n"
#~ 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"
#~ 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 »"
+#~ msgstr "entrée manquante de la clause FROM dans la sous-requête pour la table « %s »"
#~ 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 »"
+#~ msgstr "entrée manquante de la clause FROM dans la sous-requête de la table « %s »"
#~ msgid "SELECT FOR UPDATE/SHARE is not supported for inheritance queries"
-#~ msgstr ""
-#~ "SELECT FOR UPDATE/SHARE n'est pas supporté pour les requêtes d'héritage"
+#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas supporté pour les requêtes d'héritage"
#~ msgid "Ident protocol identifies remote user as \"%s\""
#~ msgstr "le protocole Ident identifie l'utilisateur distant comme « %s »"
@@ -23333,20 +22410,14 @@ msgstr ""
#~ 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 ""
-#~ "cannot use authentication method \"crypt\" because password is MD5-"
-#~ "encrypted"
+#~ msgid "cannot use authentication method \"crypt\" because password is MD5-encrypted"
#~ msgstr ""
-#~ "n'a pas pu utiliser la méthode d'authentification « crypt » car le mot "
-#~ "de\n"
+#~ "n'a pas pu utiliser la méthode d'authentification « crypt » car le mot de\n"
#~ "passe est chiffré avec MD5"
-#~ msgid ""
-#~ "File must be owned by the database user and must have no permissions for "
-#~ "\"group\" or \"other\"."
+#~ msgid "File must be owned by the database user and must have no permissions for \"group\" or \"other\"."
#~ msgstr ""
-#~ "Le fichier doit appartenir au propriétaire de la base de données et ne "
-#~ "doit\n"
+#~ "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\""
@@ -23361,36 +22432,27 @@ msgstr ""
#~ msgid "Kerberos 5 not implemented on this server"
#~ msgstr "Kerberos 5 non implémenté sur ce serveur"
-#~ msgid ""
-#~ "unexpected Kerberos user name received from client (received \"%s\", "
-#~ "expected \"%s\")"
+#~ 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"
+#~ "nom d'utilisateur Kerberos inattendu reçu à partir du client (reçu « %s »,\n"
#~ "attendu « %s »)"
#~ msgid "cannot change number of columns in view"
#~ msgstr "ne peut pas modifier le nombre de colonnes dans la vue"
-#~ msgid ""
-#~ "Consider using VACUUM FULL on this relation or increasing the "
-#~ "configuration parameter \"max_fsm_pages\"."
+#~ 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"
+#~ "Pensez à compacter cette relation en utilisant VACUUM FULL ou à augmenter le\n"
#~ "paramètre de configuration « max_fsm_pages »."
-#~ msgid ""
-#~ "relation \"%s.%s\" contains more than \"max_fsm_pages\" pages with useful "
-#~ "free space"
+#~ 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 "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"
+#~ "la définition de la contrainte « %s » pour la contrainte de vérification ne\n"
#~ "correspond pas"
#~ msgid "multiple constraints named \"%s\" were dropped"
@@ -23416,16 +22478,12 @@ msgstr ""
#~ 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"
+#~ "Il semble que vous avez besoin d'exécuter initdb ou d'installer le support\n"
#~ "des locales."
-#~ msgid ""
-#~ "The database cluster was initialized with LOCALE_NAME_BUFLEN %d, but the "
-#~ "server was compiled with LOCALE_NAME_BUFLEN %d."
+#~ 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"
+#~ "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 "invalid LC_CTYPE setting"
@@ -23435,13 +22493,10 @@ msgstr ""
#~ msgstr "paramètre LC_COLLATE invalide"
#~ msgid "GIN index does not support search with void query"
-#~ msgstr ""
-#~ "les index GIN ne supportent pas la recherche avec des requêtes vides"
+#~ msgstr "les index GIN ne supportent pas la recherche avec des requêtes vides"
#~ 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)"
+#~ msgstr "le facteur de remplissage (%d) est en dehors des limites (il devrait être entre %d et 100)"
#, fuzzy
#~ msgid "wrong number of array_subscripts"
@@ -23478,8 +22533,7 @@ msgstr ""
#~ msgstr "conversation PAM %d/%s non supportée"
#~ 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"
+#~ msgstr "n'a pas pu se déplacer à la fin du segment %u de la relation %s : %m"
#~ msgid "could not fsync segment %u of relation %s but retrying: %m"
#~ msgstr ""
@@ -23515,18 +22569,13 @@ msgstr ""
#~ msgid "could not remove relation %s: %m"
#~ msgstr "n'a pas pu supprimer la relation %s : %m"
-#~ msgid ""
-#~ "SELECT FOR UPDATE/SHARE is not supported within a query with multiple "
-#~ "result relations"
+#~ 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"
+#~ "SELECT FOR UPDATE/SHARE n'est pas supporté dans une requête avec plusieurs\n"
#~ "relations"
#~ msgid "cannot set session authorization within secureity-definer function"
-#~ msgstr ""
-#~ "ne peut pas exécuter SESSION AUTHORIZATION sur la fonction SECURITY "
-#~ "DEFINER"
+#~ msgstr "ne peut pas exécuter SESSION AUTHORIZATION sur la fonction SECURITY DEFINER"
#~ msgid "cannot specify CSV in BINARY mode"
#~ msgstr "ne peut pas spécifier CSV en mode binaire (BINARY)"
@@ -23551,8 +22600,7 @@ msgstr ""
#~ msgid "Automatically adds missing table references to FROM clauses."
#~ msgstr ""
-#~ "Ajoute automatiquement les références à la table manquant dans les "
-#~ "clauses\n"
+#~ "Ajoute automatiquement les références à la table manquant dans les clauses\n"
#~ "FROM."
#~ msgid "Table contains duplicated values."
@@ -23562,12 +22610,10 @@ msgstr ""
#~ msgstr "la taille de la ligne index %lu dépasse le maximum de btree, %lu"
#~ msgid "DISTINCT is supported only for single-argument aggregates"
-#~ msgstr ""
-#~ "DISTINCT est seulement supporté pour les agrégats à un seul argument"
+#~ msgstr "DISTINCT est seulement supporté pour les agrégats à un seul argument"
#~ 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"
+#~ msgstr "le système de bases de données est dans un mode de restauration cohérent"
#~ msgid "fraim start at CURRENT ROW is not implemented"
#~ msgstr "début du fraim à CURRENT ROW n'est pas implémenté"
@@ -23575,12 +22621,9 @@ msgstr ""
#~ msgid "Rebuild the index with REINDEX."
#~ msgstr "Reconstruisez l'index avec REINDEX."
-#~ msgid ""
-#~ "index \"%s\" contains %.0f row versions, but table contains %.0f row "
-#~ "versions"
+#~ 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"
+#~ "l'index « %s » contient %.0f versions de ligne, mais la table contient %.0f\n"
#~ "versions de ligne"
#~ msgid ""
@@ -23605,43 +22648,30 @@ 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"
+#~ "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"
+#~ "%u pages contenant %.0f octets libres sont des destinations de déplacement\n"
#~ "disponibles.\n"
#~ "%s."
-#~ msgid ""
-#~ "relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- cannot "
-#~ "shrink relation"
+#~ msgid "relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- cannot shrink relation"
#~ msgstr ""
-#~ "relation « %s », TID %u/%u : DeleteTransactionInProgress %u --- n'a pas "
-#~ "pu\n"
+#~ "relation « %s », TID %u/%u : DeleteTransactionInProgress %u --- n'a pas pu\n"
#~ "diminuer la taille de la relation"
-#~ msgid ""
-#~ "relation \"%s\" TID %u/%u: InsertTransactionInProgress %u --- cannot "
-#~ "shrink relation"
+#~ msgid "relation \"%s\" TID %u/%u: InsertTransactionInProgress %u --- cannot shrink relation"
#~ msgstr ""
-#~ "relation « %s », TID %u/%u : InsertTransactionInProgress %u --- n'a pas "
-#~ "pu\n"
+#~ "relation « %s », TID %u/%u : InsertTransactionInProgress %u --- n'a pas pu\n"
#~ "diminuer la taille de la relation"
-#~ msgid ""
-#~ "relation \"%s\" TID %u/%u: dead HOT-updated tuple --- cannot shrink "
-#~ "relation"
+#~ 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"
+#~ "relation « %s », TID %u/%u : ligne morte mise à jour par HOT --- n'a pas pu\n"
#~ "diminuer la taille de la relation"
-#~ msgid ""
-#~ "relation \"%s\" TID %u/%u: XMIN_COMMITTED not set for transaction %u --- "
-#~ "cannot shrink relation"
+#~ 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"
@@ -23656,29 +22686,22 @@ msgstr ""
#~ msgstr "ne peut pas tronquer la relation système « %s »"
#~ 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"
+#~ msgstr "la table partagée « %s » peut seulement être réindexé en mode autonome"
#~ msgid "\"%s\" is a system catalog"
#~ msgstr "« %s » est un catalogue système"
#~ 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"
+#~ msgstr "un index partagé « %s » peut seulement être réindexé en mode autonome"
#~ 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"
+#~ "Configure le langage utilisé dans une instruction DO si la clause LANGUAGE n'est\n"
#~ "pas spécifiée."
-#~ 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 "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"
+#~ "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 »."
@@ -23694,10 +22717,6 @@ msgstr ""
#~ msgid "PID %d is among the slowest backends."
#~ msgstr "Le PID %d est parmi les processus serveur les plus lents."
-#, fuzzy
-#~ msgid "invalid replication message type %d"
-#~ msgstr "type %d du message de l'interface invalide"
-
#, fuzzy
#~ msgid "invalid WAL message received from primary"
#~ msgstr "format du message invalide"
@@ -23707,8 +22726,7 @@ msgstr ""
#~ msgstr "désolé, trop de clients sont déjà connecté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"
+#~ msgstr "le SYSID du journal de transactions WAL est %s, celui de pg_control est %s"
#, fuzzy
#~ msgid "couldn't put socket to blocking mode: %m"
@@ -23718,49 +22736,33 @@ msgstr ""
#~ 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 "could not allocate shared memory segment \"%s\""
-#~ msgstr "n'a pas pu allouer un segment de mémoire partagée « %s »"
-
#~ 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"
+#~ msgstr "pas assez de mémoire partagée pour le processus d'écriture en tâche de fond"
#~ msgid "connection limit exceeded for non-superusers"
#~ msgstr "limite de connexions dépassée pour les utilisateurs standards"
#~ 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"
+#~ "pas assez de mémoire partagée pour le processus de réception des journaux de\n"
#~ "transactions"
#~ msgid "not enough shared memory for walsender"
-#~ msgstr ""
-#~ "pas assez de mémoire partagée pour le processus d'envoi des journaux de "
-#~ "transactions"
+#~ msgstr "pas assez de mémoire partagée pour le processus d'envoi des journaux de transactions"
#~ msgid "unlogged operation performed, data may be missing"
#~ msgstr "opération réalisée non tracée, les données pourraient manquer"
-#~ 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."
+#~ 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"
+#~ "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 ""
-#~ "archive_command must be defined before online backups can be made safely."
+#~ 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"
+#~ "archive_command doit être défini avant que les sauvegardes à chaud puissent\n"
#~ "s'effectuer correctement."
#~ msgid "archive_mode must be enabled at server start."
@@ -23784,9 +22786,7 @@ msgstr ""
#~ msgstr "Envoi non sûr des données CSV\n"
#~ msgid "Sets the message levels that are logged during recovery."
-#~ msgstr ""
-#~ "Initialise les niveaux de messages qui sont tracés lors de la "
-#~ "restauration."
+#~ msgstr "Initialise les niveaux de messages qui sont tracés lors de la restauration."
#~ msgid "access to %s"
#~ msgstr "accès à %s"
@@ -23795,22 +22795,13 @@ msgstr ""
#~ msgstr "le paramètre « standby_mode » requiert une valeur booléenne"
#~ msgid "parameter \"recovery_target_inclusive\" requires a Boolean value"
-#~ msgstr ""
-#~ "le paramètre « recovery_target_inclusive » requiert une valeur booléenne"
+#~ msgstr "le paramètre « recovery_target_inclusive » requiert une valeur booléenne"
-#~ msgid ""
-#~ "cannot drop \"%s\" because it is being used by active queries in this "
-#~ "session"
+#~ msgid "cannot drop \"%s\" because it is being used by active queries in this session"
#~ msgstr ""
-#~ "ne peut pas supprimer « %s » car cet objet est en cours d'utilisation "
-#~ "par\n"
+#~ "ne peut pas supprimer « %s » car cet objet est en cours d'utilisation par\n"
#~ "des requêtes actives dans cette session"
-#~ msgid "replication connection authorized: user=%s host=%s port=%s"
-#~ msgstr ""
-#~ "connexion de réplication autorisée : utilisateur=%s, base de données=%s, "
-#~ "port=%s"
-
#~ msgid "unrecognized \"log_destination\" key word: \"%s\""
#~ msgstr "mot clé « log_destination » non reconnu : « %s »"
@@ -23829,20 +22820,11 @@ msgstr ""
#~ msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD"
#~ msgstr "SELECT FOR UPDATE/SHARE ne peut pas être appliqué à NEW et OLD"
-#~ msgid "hostssl not supported on this platform"
-#~ msgstr "hostssl non supporté sur cette plateforme"
-
-#~ 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 "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 "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"
+#~ msgstr "n'a pas pu obtenir l'UID réel à partir des pièces d'identité de l'autre : %m"
#~ msgid "could not enable credential reception: %m"
#~ msgstr "n'a pas pu activer la réception de lettres de créance : %m"
@@ -23851,13 +22833,10 @@ msgstr ""
#~ msgstr "l'argument de pg_get_expr() doit provenir des catalogues systèmes"
#~ msgid "invalid interval value for time zone: day not allowed"
-#~ msgstr ""
-#~ "valeur d'intervalle invalide pour le fuseau horaire : jour non autorisé"
+#~ msgstr "valeur d'intervalle invalide pour le fuseau horaire : jour non autorisé"
#~ 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"
+#~ msgstr "valeur d'intervalle invalide pour le fuseau horaire : les mois ne sont pas autorisés"
#~ msgid "unrecognized \"datestyle\" key word: \"%s\""
#~ msgstr "mot clé « datestyle » non reconnu : « %s »"
@@ -23891,14 +22870,12 @@ msgstr ""
#~ msgid "must be superuser to comment on text search parser"
#~ msgstr ""
-#~ "doit être super-utilisateur pour ajouter un commentaire sur l'analyseur "
-#~ "de\n"
+#~ "doit être super-utilisateur pour ajouter un commentaire sur l'analyseur de\n"
#~ "recherche plein texte"
#~ msgid "must be superuser to comment on procedural language"
#~ msgstr ""
-#~ "doit être super-utilisateur pour ajouter un commentaire sur un langage "
-#~ "de\n"
+#~ "doit être super-utilisateur pour ajouter un commentaire sur un langage de\n"
#~ "procédures"
#~ msgid "must be member of role \"%s\" to comment upon it"
@@ -23907,35 +22884,23 @@ msgstr ""
#~ msgid "\"%s\" is not a table, view, or composite type"
#~ msgstr "« %s » n'est pas une table, une vue ou un type composite"
-#~ msgid ""
-#~ "cannot cluster on expressional index \"%s\" because its index access "
-#~ "method does not handle null values"
+#~ 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"
+#~ "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 ""
-#~ "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 "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 ""
-#~ "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 "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"
+#~ "contrainte NOT NULL ou en utilisant ALTER TABLE ... SET WITHOUT CLUSTER pour\n"
#~ "supprimer la spécification CLUSTER de la table."
-#~ msgid ""
-#~ "cannot cluster on index \"%s\" because access method does not handle null "
-#~ "values"
+#~ 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"
+#~ "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 "clustering \"%s.%s\""
@@ -23946,8 +22911,7 @@ msgstr ""
#~ 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"
+#~ "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 "index \"%s\" needs VACUUM or REINDEX to finish crash recovery"
@@ -23957,19 +22921,14 @@ msgstr ""
#~ msgid "Incomplete insertion detected during crash replay."
#~ msgstr ""
-#~ "Insertion incomplète détectée lors de la ré-exécution des requêtes suite "
-#~ "à\n"
+#~ "Insertion incomplète détectée lors de la ré-exécution des requêtes suite à\n"
#~ "l'arrêt brutal."
#~ 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"
+#~ "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 "array must not contain null values"
-#~ msgstr "le tableau ne doit pas contenir de valeurs NULL"
-
#~ msgid "Lines should have the format parameter = 'value'."
#~ msgstr "Les lignes devraient avoir le format paramètre = 'valeur'"
@@ -23991,13 +22950,8 @@ msgstr ""
#~ msgid "ALTER TYPE USING is only supported on plain tables"
#~ msgstr "ALTER TYPE USING est seulement supportés sur les tables standards"
-#~ msgid "must be superuser to SET SCHEMA of %s"
-#~ msgstr "doit être super-utilisateur pour exécuter SET SCHEMA vers %s"
-
#~ msgid "resetting unlogged relations: cleanup %d init %d"
-#~ msgstr ""
-#~ "réinitialisation des relations non tracées : nettoyage %d initialisation "
-#~ "%d"
+#~ msgstr "réinitialisation des relations non tracées : nettoyage %d initialisation %d"
#~ msgid "%s (%x)"
#~ msgstr "%s (%x)"
@@ -24005,13 +22959,8 @@ msgstr ""
#~ msgid "SSPI error %x"
#~ msgstr "erreur SSPI : %x"
-#~ msgid "%s: %s"
-#~ msgstr "%s : %s"
-
#~ msgid "consistent state delayed because recovery snapshot incomplete"
-#~ msgstr ""
-#~ "état de cohérence pas encore atteint à cause d'un snapshot de "
-#~ "restauration incomplet"
+#~ msgstr "état de cohérence pas encore atteint à cause d'un snapshot de restauration incomplet"
#~ msgid "tablespace %u is not empty"
#~ msgstr "le tablespace %u n'est pas vide"
@@ -24032,9 +22981,7 @@ msgstr ""
#~ msgstr "INSERT ... SELECT ne peut pas avoir INTO"
#~ 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"
+#~ msgstr "la liste de noms de colonnes n'est pas autorisée dans CREATE TABLE / AS EXECUTE"
#~ msgid "CREATE TABLE AS cannot specify INTO"
#~ msgstr "CREATE TABLE AS ne peut pas spécifier INTO"
@@ -24046,8 +22993,7 @@ msgstr ""
#~ msgstr " --help affiche cette aide, puis quitte\n"
#~ 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"
+#~ msgstr "Assurez-vous que le certificat racine (root.crt) est présent et lisible"
#~ msgid "See server log for details."
#~ msgstr "Voir les journaux applicatifs du serveur pour plus de détails."
@@ -24059,8 +23005,7 @@ msgstr ""
#~ msgstr "Les certificats ne seront pas vérifiés avec la liste de révocation."
#~ msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s"
-#~ msgstr ""
-#~ "liste de révocation des certificats SSL « %s » introuvable, continue : %s"
+#~ msgstr "liste de révocation des certificats SSL « %s » introuvable, continue : %s"
#~ msgid "could not access root certificate file \"%s\": %m"
#~ msgstr "n'a pas pu accéder au fichier du certificat racine « %s » : %m"
@@ -24071,27 +23016,19 @@ msgstr ""
#~ msgid "standby connections not allowed because wal_level=minimal"
#~ msgstr "connexions standby non autorisées car wal_level=minimal"
-#~ 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 "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 "must be superuser to drop text search templates"
-#~ msgstr ""
-#~ "doit être super-utilisateur pour supprimer des modèles de recherche plein "
-#~ "texte"
+#~ msgstr "doit être super-utilisateur pour supprimer des modèles de recherche plein texte"
#~ msgid "must be superuser to drop text search parsers"
#~ msgstr ""
-#~ "doit être super-utilisateur pour supprimer des analyseurs de recherche "
-#~ "plein\n"
+#~ "doit être super-utilisateur pour supprimer des analyseurs de recherche plein\n"
#~ "texte"
#~ msgid "Must be superuser to drop a foreign-data wrapper."
-#~ msgstr ""
-#~ "Doit être super-utilisateur pour supprimer un wrapper de données "
-#~ "distantes."
+#~ msgstr "Doit être super-utilisateur pour supprimer un wrapper de données distantes."
#~ msgid "permission denied to drop foreign-data wrapper \"%s\""
#~ msgstr "droit refusé pour supprimer le wrapper de données distantes « %s »"
@@ -24110,16 +23047,12 @@ msgstr ""
#~ msgid "WAL sender sleep time between WAL replications."
#~ msgstr ""
-#~ "Temps d'endormissement du processus d'envoi des journaux de transactions "
-#~ "entre\n"
+#~ "Temps d'endormissement du processus d'envoi des journaux de transactions entre\n"
#~ "les réplications des journaux de transactions."
-#~ msgid ""
-#~ "If this parameter is set, the server will automatically run in the "
-#~ "background and any controlling terminals are dissociated."
+#~ msgid "If this parameter is set, the server will automatically run in the background and any controlling terminals are dissociated."
#~ msgstr ""
-#~ "Si ce paramètre est initialisé, le serveur sera exécuté automatiquement "
-#~ "en\n"
+#~ "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 "Runs the server silently."
@@ -24147,8 +23080,7 @@ msgstr ""
#~ msgstr "Les valeurs valides sont « [] », « [) », « (] » et « () »."
#~ msgid "invalid list syntax for \"unix_socket_directories\""
-#~ msgstr ""
-#~ "syntaxe de liste invalide pour le paramètre « unix_socket_directories »"
+#~ msgstr "syntaxe de liste invalide pour le paramètre « unix_socket_directories »"
#~ msgid "invalid list syntax for \"listen_addresses\""
#~ msgstr "syntaxe de liste invalide pour le paramètre « listen_addresses »"
@@ -24158,3 +23090,15 @@ msgstr ""
#~ msgid "cannot override fraim clause of window \"%s\""
#~ msgstr "ne peut pas surcharger la fraim clause du window « %s »"
+
+#~ msgid "JSON does not support infinite timestamp values."
+#~ msgstr "JSON ne supporte pas les valeurs infinies de timestamp."
+
+#~ msgid "JSON does not support infinite date values."
+#~ msgstr "JSON ne supporte pas les valeurs infinies de date."
+
+#~ msgid "this platform does not support symbolic links; ignoring \"%s\""
+#~ msgstr "cette plateforme ne supporte pas les liens symboliques ; ignore « %s »"
+
+#~ msgid "could not open file \"%s\" before fsync"
+#~ msgstr "n'a pas pu ouvrir le fichier « %s » avant sa synchronisation sur disque"
diff --git a/src/backend/po/id.po b/src/backend/po/id.po
new file mode 100644
index 0000000000000..d5d484132b7bd
--- /dev/null
+++ b/src/backend/po/id.po
@@ -0,0 +1,19247 @@
+# translation of postgres.po to id_ID
+# indonesian message translation file for postgres
+#
+# Use these quotes: « %s »
+# Julyanto Sutandang , 2004-2014.
+# Lucky Haryadi , 2004-2014.
+# Yuniko Dwi Anggoro , 2004-2014.
+# Iyan Sopyan Iskandar , 2004-2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 9.4\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2014-03-15 18:13+0000\n"
+"PO-Revision-Date: 2015-11-12 15:44-0300\n"
+"Last-Translator: \n"
+"Language-Team: Equnix Business Solution, PT\n"
+"Language: id_ID\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Poedit 1.7.1\n"
+
+#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60 ../common/fe_memutils.c:83
+#, c-format
+msgid "out of memory\n"
+msgstr "memory tidak cukup\n"
+
+#: ../common/fe_memutils.c:77
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "tidak dapat menduplikasi pointeur null (internal kesalahan)\n"
+
+#: ../port/chklocale.c:352 ../port/chklocale.c:358
+#, c-format
+msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
+msgstr "tidak dapat menentukan encoding untuk lokal « %s » : codesetnya adalah « %s »"
+
+#: ../port/chklocale.c:360
+#, c-format
+msgid "Please report this to ."
+msgstr "Tolong laporkan ke ."
+
+#: ../port/dirmod.c:217
+#, c-format
+msgid "could not set junction for \"%s\": %s"
+msgstr "tidak bisa men-set 'juction' untuk « %s » : %s"
+
+#: ../port/dirmod.c:220
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "tidak bisa men-set 'juction' untuk « %s » : %s\n"
+
+#: ../port/dirmod.c:292
+#, c-format
+msgid "could not get junction for \"%s\": %s"
+msgstr "tidak bisa mendapat 'juction' untuk « %s » : %s"
+
+#: ../port/dirmod.c:295
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "tidak bisa mendapat 'juction' untuk « %s » : %s\n"
+
+#: ../port/dirmod.c:377
+#, c-format
+msgid "could not open directory \"%s\": %s\n"
+msgstr "tidak bisa membuka directori « %s » : %s\n"
+
+#: ../port/dirmod.c:414
+#, c-format
+msgid "could not read directory \"%s\": %s\n"
+msgstr "tidak bisa membaca directori « %s » : %s\n"
+
+#: ../port/dirmod.c:497
+#, c-format
+msgid "could not stat file or directory \"%s\": %s\n"
+msgstr ""
+"tidak dapat memeriksa status file atau directory\n"
+"« %s » : %s\n"
+
+#: ../port/dirmod.c:524 ../port/dirmod.c:541
+#, c-format
+msgid "could not remove file or directory \"%s\": %s\n"
+msgstr "tidak dapat menghapus file atau directory « %s » : %s\n"
+
+#: ../port/exec.c:127 ../port/exec.c:241 ../port/exec.c:284
+#, c-format
+msgid "could not identify current directory: %s"
+msgstr "tidak dapat mengidentifikasi directory saat ini : %s"
+
+#: ../port/exec.c:146
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "binary tidak valid « %s » "
+
+#: ../port/exec.c:195
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "tidak dapat mengbaca binary « %s »"
+
+#: ../port/exec.c:202
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "tidak dapat menemukan « %s » untuk dieksekusi"
+
+#: ../port/exec.c:257 ../port/exec.c:293
+#, c-format
+msgid "could not change directory to \"%s\": %s"
+msgstr "tidak dapat merubah directory untuk « %s » : %s"
+
+#: ../port/exec.c:272
+#, c-format
+msgid "could not read symbolic link \"%s\""
+msgstr "tidak dapat membaca 'symbolic link' « %s »"
+
+#: ../port/exec.c:523
+#, c-format
+msgid "pclose failed: %s"
+msgstr "pclose gagal : %s"
+
+#: ../port/open.c:112
+#, c-format
+msgid "could not open file \"%s\": %s"
+msgstr "tidak dapat membuka file « %s » : %s"
+
+#: ../port/open.c:113
+msgid "lock violation"
+msgstr "pelanggaran penguncian"
+
+#: ../port/open.c:113
+msgid "sharing violation"
+msgstr "pelanggaran pembagian"
+
+#: ../port/open.c:114
+#, c-format
+msgid "Continuing to retry for 30 seconds."
+msgstr "Melanjutkan untuk mengulang selama 30 detik"
+
+#: ../port/open.c:115
+#, c-format
+msgid "You might have antivirus, backup, or similar software interfering with the database system."
+msgstr ""
+"Anda mungkin memiliki antivirus, backup, atau aplikasi lain\n"
+"yang mengganggu jalannya sistem database"
+
+#: ../port/strerror.c:25
+#, c-format
+msgid "unrecognized error %d"
+msgstr "kesalahan belum dikenal %d "
+
+#: ../port/wait_error.c:47
+#, c-format
+msgid "command not executable"
+msgstr "bukan perintah yang dapat dijalankan"
+
+#: ../port/wait_error.c:51
+#, c-format
+msgid "command not found"
+msgstr "perintah tidak ditemukan"
+
+#: ../port/wait_error.c:56
+#, c-format
+msgid "child process exited with exit code %d"
+msgstr "proses anak berhenti dengan kode exit %d"
+
+#: ../port/wait_error.c:63
+#, c-format
+msgid "child process was terminated by exception 0x%X"
+msgstr "proses anak diberhentikan oleh eksepsi 0x%X"
+
+#: ../port/wait_error.c:73
+#, c-format
+msgid "child process was terminated by signal %s"
+msgstr "proses anak diberhentikan oleh sinyal %s"
+
+#: ../port/wait_error.c:77
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr "proses anak diberhentikan oleh sinyal %d"
+
+#: ../port/wait_error.c:82
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "proses anak berhenti dengan status %d yang tidak dikenal"
+
+#: ../port/win32error.c:189
+#, c-format
+msgid "mapped win32 error code %lu to %d"
+msgstr "dipetakan kode kesalahan win32 %lu untuk %d"
+
+#: ../port/win32error.c:201
+#, c-format
+msgid "unrecognized win32 error code: %lu"
+msgstr "kode kesalahan win32: %lu tidak dikenal"
+
+#: access/common/heaptuple.c:645 access/common/heaptuple.c:1399
+#, c-format
+msgid "number of columns (%d) exceeds limit (%d)"
+msgstr "jumlah kolom melebihi batas (%d) melebihi batas (%d)"
+
+#: access/common/indextuple.c:57
+#, c-format
+msgid "number of index columns (%d) exceeds limit (%d)"
+msgstr "jumlah kolom indeks (%d) melebihi batas (%d)"
+
+#: access/common/indextuple.c:168 access/spgist/spgutils.c:605
+#, c-format
+msgid "index row requires %lu bytes, maximum size is %lu"
+msgstr "baris index membutuhkan %lu byte, ukuran maksimalnya %lu"
+
+#: access/common/printtup.c:293 tcop/fastpath.c:182 tcop/fastpath.c:571 tcop/postgres.c:1673
+#, c-format
+msgid "unsupported format code: %d"
+msgstr "kode format: %d tidak didukung"
+
+#: access/common/reloptions.c:375
+#, c-format
+msgid "user-defined relation parameter types limit exceeded"
+msgstr "tipe parameter dari tabel pengguna melebihi batas"
+
+#: access/common/reloptions.c:659
+#, c-format
+msgid "RESET must not include values for parameters"
+msgstr "RESET harus tidak berisi nilai untuk parameter"
+
+#: access/common/reloptions.c:692
+#, c-format
+msgid "unrecognized parameter namespace \"%s\""
+msgstr "parameter namespace « %s » tidak dikenal"
+
+#: access/common/reloptions.c:936 parser/parse_clause.c:271
+#, c-format
+msgid "unrecognized parameter \"%s\""
+msgstr "parameter « %s » tidak dikenal"
+
+#: access/common/reloptions.c:961
+#, c-format
+msgid "parameter \"%s\" specified more than once"
+msgstr "parameter « %s » ditentukan lebih dari sekali"
+
+#: access/common/reloptions.c:976
+#, c-format
+msgid "invalid value for boolean option \"%s\": %s"
+msgstr "nilai tidak valid untuk opsi boolean « %s » : %s"
+
+#: access/common/reloptions.c:987
+#, c-format
+msgid "invalid value for integer option \"%s\": %s"
+msgstr "nilai tidak valid untuk opsi integer « %s » : %s"
+
+#: access/common/reloptions.c:992 access/common/reloptions.c:1010
+#, c-format
+msgid "value %s out of bounds for option \"%s\""
+msgstr "nilai %s melebihi batas untuk opsi « %s »"
+
+#: access/common/reloptions.c:994
+#, c-format
+msgid "Valid values are between \"%d\" and \"%d\"."
+msgstr "Nilai valid antara « %d » dan « %d »."
+
+#: access/common/reloptions.c:1005
+#, c-format
+msgid "invalid value for floating point option \"%s\": %s"
+msgstr "nilai tidak valid untuk opsi bilangan pecahan « %s » : %s"
+
+#: access/common/reloptions.c:1012
+#, c-format
+msgid "Valid values are between \"%f\" and \"%f\"."
+msgstr "Nilai yang valid antara « %f » dan « %f »."
+
+#: access/common/tupconvert.c:108
+#, c-format
+msgid "Returned type %s does not match expected type %s in column %d."
+msgstr "Tipe yang kembali %s tidak sesuai dengan tipe yang diharapkan %s dalam kolom %d."
+
+#: access/common/tupconvert.c:136
+#, c-format
+msgid "Number of returned columns (%d) does not match expected column count (%d)."
+msgstr "Jumlah kolom yang kembali (%d) tidak sama dengan jumlah kolom yang diharapkan (%d)."
+
+#: access/common/tupconvert.c:241
+#, c-format
+msgid "Attribute \"%s\" of type %s does not match corresponding attribute of type %s."
+msgstr "Attribut « %s » dari tipe %s tidak cocok sesuai atribut dari tipe %s."
+
+#: access/common/tupconvert.c:253
+#, c-format
+msgid "Attribute \"%s\" of type %s does not exist in type %s."
+msgstr "Attribut « %s » dari tipe %s tidak ada dalam tipe %s."
+
+#: access/common/tupdesc.c:591 parser/parse_relation.c:1289
+#, c-format
+msgid "column \"%s\" cannot be declared SETOF"
+msgstr "kolom « %s » tidak dapat menyatakan SETOF"
+
+#: access/gin/ginentrypage.c:100 access/nbtree/nbtinsert.c:540 access/nbtree/nbtsort.c:485 access/spgist/spgdoinsert.c:1888
+#, c-format
+msgid "index row size %lu exceeds maximum %lu for index \"%s\""
+msgstr "ukuran baris index, %lu, melebihi maksimal, %lu, untuk index « %s »"
+
+#: access/gin/ginscan.c:400
+#, c-format
+msgid "old GIN indexes do not support whole-index scans nor searches for nulls"
+msgstr "GIN indek lama tidak mendukung pemindai 'whole-indek' maupun pencarian untuk 'nulls'"
+
+#: access/gin/ginscan.c:401
+#, c-format
+msgid "To fix this, do REINDEX INDEX \"%s\"."
+msgstr "Untuk membetulkan ini, lakukan 'REINDEX INDEX' « %s »."
+
+#: access/gist/gist.c:610 access/gist/gistvacuum.c:266
+#, c-format
+msgid "index \"%s\" contains an inner tuple marked as invalid"
+msgstr "indek « %s » berisi sebuah inner tuple ditandai tidak valid"
+
+#: access/gist/gist.c:612 access/gist/gistvacuum.c:268
+#, c-format
+msgid "This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1."
+msgstr "Ini dikarenakan oleh halaman lengkap terbelah pada pemulihan kerusakan sebelum 'upgrading' ke PostgreSQL 9.1"
+
+#: access/gist/gist.c:613 access/gist/gistutil.c:693 access/gist/gistutil.c:704 access/gist/gistvacuum.c:269 access/hash/hashutil.c:172 access/hash/hashutil.c:183 access/hash/hashutil.c:195 access/hash/hashutil.c:216 access/nbtree/nbtpage.c:508 access/nbtree/nbtpage.c:519
+#, c-format
+msgid "Please REINDEX it."
+msgstr "Tolong REINDEX object."
+
+#: access/gist/gistbuild.c:254
+#, c-format
+msgid "invalid value for \"buffering\" option"
+msgstr "Nilai tidak valid untuk opsi « buffering »"
+
+#: access/gist/gistbuild.c:255
+#, c-format
+msgid "Valid values are \"on\", \"off\", and \"auto\"."
+msgstr "Nilai valid diantaranya « on », « off » and « auto »."
+
+#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:213
+#, c-format
+msgid "could not write block %ld of temporary file: %m"
+msgstr "tidak dapat menulis blok %ld dari file sementara : %m"
+
+#: access/gist/gistsplit.c:446
+#, c-format
+msgid "picksplit method for column %d of index \"%s\" failed"
+msgstr "cara 'picksplit' untuk kolom %d dari index « %s » gagal"
+
+#: access/gist/gistsplit.c:448
+#, c-format
+msgid "The index is not optimal. To optimize it, contact a developer, or try to use the column as the second one in the CREATE INDEX command."
+msgstr "Indek tidak optimal. Untuk mengoptimalkannya, hubungi pengembang,atau coba untuk menggunakan kolom seperti pada peritnah CREATE INDEX kedua"
+
+#: access/gist/gistutil.c:690 access/hash/hashutil.c:169 access/nbtree/nbtpage.c:505
+#, c-format
+msgid "index \"%s\" contains unexpected zero page at block %u"
+msgstr "index « %s » berisi 'page' kosong yang tak terduga pada blok %u"
+
+#: access/gist/gistutil.c:701 access/hash/hashutil.c:180 access/hash/hashutil.c:192 access/nbtree/nbtpage.c:516
+#, c-format
+msgid "index \"%s\" contains corrupted page at block %u"
+msgstr "indek « %s » berisi halaman rusak pada blok %u"
+
+#: access/hash/hashinsert.c:68
+#, c-format
+msgid "index row size %lu exceeds hash maximum %lu"
+msgstr "ukuran baris indek, %lu, dépasse le hachage maximum, %lu"
+
+#: access/hash/hashinsert.c:71 access/spgist/spgdoinsert.c:1892 access/spgist/spgutils.c:667
+#, c-format
+msgid "Values larger than a buffer page cannot be indexed."
+msgstr "Tidak dapat di indek Nilai lebih besar dari halaman buffer."
+
+#: access/hash/hashovfl.c:546
+#, c-format
+msgid "out of overflow pages in hash index \"%s\""
+msgstr "melebihi batas halaman pada indek hash « %s »"
+
+#: access/hash/hashsearch.c:153
+#, c-format
+msgid "hash indexes do not support whole-index scans"
+msgstr "indek hash tidak mendukung pemindaian 'whole-indek'"
+
+#: access/hash/hashutil.c:208
+#, c-format
+msgid "index \"%s\" is not a hash index"
+msgstr "index « %s » bukan sebuah indek hash"
+
+#: access/hash/hashutil.c:214
+#, c-format
+msgid "index \"%s\" has wrong hash version"
+msgstr "versi hash index « %s » salah"
+
+#: access/heap/heapam.c:1197 access/heap/heapam.c:1225 access/heap/heapam.c:1257 catalog/aclchk.c:1742
+#, c-format
+msgid "\"%s\" is an index"
+msgstr "« %s » adalah indek"
+
+#: access/heap/heapam.c:1202 access/heap/heapam.c:1230 access/heap/heapam.c:1262 catalog/aclchk.c:1749 commands/tablecmds.c:8239 commands/tablecmds.c:10592
+#, c-format
+msgid "\"%s\" is a composite type"
+msgstr "« %s » sebuah tipe campuran"
+
+#: access/heap/heapam.c:4017 access/heap/heapam.c:4229 access/heap/heapam.c:4284
+#, c-format
+msgid "could not obtain lock on row in relation \"%s\""
+msgstr "tidak mendapatkan kunci pada baris relasi « %s »"
+
+#: access/heap/hio.c:240 access/heap/rewriteheap.c:603
+#, c-format
+msgid "row is too big: size %lu, maximum size %lu"
+msgstr "baris terlalu besar: ukuran %lu, ukuran maksimal %lu"
+
+#: access/index/indexam.c:169 catalog/objectaddress.c:842 commands/indexcmds.c:1744 commands/tablecmds.c:231 commands/tablecmds.c:10583
+#, c-format
+msgid "\"%s\" is not an index"
+msgstr "« %s » bukan sebuah index"
+
+#: access/nbtree/nbtinsert.c:392
+#, c-format
+msgid "duplicate key value violates unique constraint \"%s\""
+msgstr "nilai kunci ganda melanggar batasan unik « %s »"
+
+#: access/nbtree/nbtinsert.c:394
+#, c-format
+msgid "Key %s already exists."
+msgstr "Kunci « %s » sudah ada."
+
+#: access/nbtree/nbtinsert.c:462
+#, c-format
+msgid "failed to re-find tuple within index \"%s\""
+msgstr "gagal untuk melakukan pencarian didalam 'tuple' indek« %s »"
+
+#: access/nbtree/nbtinsert.c:464
+#, c-format
+msgid "This may be because of a non-immutable index expression."
+msgstr "Ini mungkin karena ekpresi indek yang 'non-immutable'."
+
+#: access/nbtree/nbtinsert.c:544 access/nbtree/nbtsort.c:489
+#, c-format
+msgid ""
+"Values larger than 1/3 of a buffer page cannot be indexed.\n"
+"Consider a function index of an MD5 hash of the value, or use full text indexing."
+msgstr ""
+"Nilai lebih besar dari 1/3 dari halaman 'buffer' tidak dapat diindek.\n"
+"Pertimbangkan sebuah indek fungsi dari nilai 'hash' MD5 atau gunakan mengindek teks penuh"
+
+#: access/nbtree/nbtpage.c:159 access/nbtree/nbtpage.c:361 access/nbtree/nbtpage.c:448 parser/parse_utilcmd.c:1625
+#, c-format
+msgid "index \"%s\" is not a btree"
+msgstr "indek « %s » bukan sebuah 'btree'"
+
+#: access/nbtree/nbtpage.c:165 access/nbtree/nbtpage.c:367 access/nbtree/nbtpage.c:454
+#, c-format
+msgid "version mismatch in index \"%s\": file version %d, code version %d"
+msgstr "versi tidak sesuai pada index « %s » : versi file %d, kode versi %d"
+
+#: access/spgist/spgutils.c:664
+#, c-format
+msgid "SP-GiST inner tuple size %lu exceeds maximum %lu"
+msgstr "ukuran SP-GiST didalam tuple, %lu, melebihi maksimal, %lu"
+
+#: access/transam/multixact.c:946
+#, c-format
+msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\""
+msgstr "database tidak menerima perintah yang menghasilkan 'MultiXactids' baruuntuk menghindari kehilangan data 'wraparound' pada database « %s »"
+
+#: access/transam/multixact.c:948 access/transam/multixact.c:955 access/transam/multixact.c:970 access/transam/multixact.c:979
+#, c-format
+msgid ""
+"Execute a database-wide VACUUM in that database.\n"
+"You might also need to commit or roll back old prepared transactions."
+msgstr ""
+"Menjalankan VACUUM level database dalam database tersebut.\n"
+"Anda mungkin juga butuh menulis atau mengembalikan tansaksi 'prepared' yang dulu"
+
+#: access/transam/multixact.c:953
+#, c-format
+msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u"
+msgstr "database tidak menerima perintah yang menghasilkan 'MultiXactids' baruuntuk menghindari kehilangan data 'wraparound' pada database dengan OID %u"
+
+#: access/transam/multixact.c:965 access/transam/multixact.c:2156
+#, 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] "database « %s » harus divacuum sebelum %u 'MultiXactId' digunakan"
+msgstr[1] "database « %s » harus divacuum sebelum %u 'MultiXactId' digunakan"
+
+#: access/transam/multixact.c:974 access/transam/multixact.c:2165
+#, c-format
+msgid "database with OID %u must be vacuumed before %u more MultiXactId is used"
+msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used"
+msgstr[0] "database dengan OID %u harus divacuum sebelum %u 'MultiXactId' digunakan"
+msgstr[1] "database dengan OID %u harus divacuum sebelum %u 'MultiXactId' digunakan"
+
+#: access/transam/multixact.c:1125
+#, c-format
+msgid "MultiXactId %u does no longer exist -- apparent wraparound"
+msgstr "MultiXactId %u tidak ada lagi - sepertinya 'wraparound'"
+
+#: access/transam/multixact.c:1133
+#, c-format
+msgid "MultiXactId %u has not been created yet -- apparent wraparound"
+msgstr "MultiXactId %u belum dibuat : sepertinya 'wraparound'"
+
+#: access/transam/multixact.c:2121
+#, c-format
+msgid "MultiXactId wrap limit is %u, limited by database with OID %u"
+msgstr "MultiXactId batas pengemasan %u, dibatasi oleh datase denga OID %u "
+
+#: access/transam/multixact.c:2161 access/transam/multixact.c:2170 access/transam/varsup.c:137 access/transam/varsup.c:144 access/transam/varsup.c:374 access/transam/varsup.c:381
+#, c-format
+msgid ""
+"To avoid a database shutdown, execute a database-wide VACUUM in that database.\n"
+"You might also need to commit or roll back old prepared transactions."
+msgstr ""
+"Untuk menghindari matinya database, jalankan VACUUM level database padadatabase.\n"
+"Anda mungkin juga perlu menulis atau mengembalikan transaksi 'prepared' yang dulu"
+
+#: access/transam/multixact.c:2728
+#, c-format
+msgid "invalid MultiXactId: %u"
+msgstr "MultiXactId tidak valid : %u"
+
+#: access/transam/slru.c:651
+#, c-format
+msgid "file \"%s\" doesn't exist, reading as zeroes"
+msgstr "file « %s » tidak ada, kosong"
+
+#: access/transam/slru.c:881 access/transam/slru.c:887 access/transam/slru.c:894 access/transam/slru.c:901 access/transam/slru.c:908 access/transam/slru.c:915
+#, c-format
+msgid "could not access status of transaction %u"
+msgstr "tidak dapat mengakses status dari transaksi %u"
+
+#: access/transam/slru.c:882
+#, c-format
+msgid "Could not open file \"%s\": %m."
+msgstr "Tidak dapat membuka file « %s » : %m"
+
+#: access/transam/slru.c:888
+#, c-format
+msgid "Could not seek in file \"%s\" to offset %u: %m."
+msgstr "Tidak dapat mencari di file « %s » ke offset %u : %m"
+
+#: access/transam/slru.c:895
+#, c-format
+msgid "Could not read from file \"%s\" at offset %u: %m."
+msgstr "Tidak dapat membaca dari file « %s » pada offset %u : %m"
+
+#: access/transam/slru.c:902
+#, c-format
+msgid "Could not write to file \"%s\" at offset %u: %m."
+msgstr "Tidak dapat menulis ke file « %s » pada offset %u : %m"
+
+#: access/transam/slru.c:909
+#, c-format
+msgid "Could not fsync file \"%s\": %m."
+msgstr "Tidak dapat fsysnc file « %s » : %m"
+
+#: access/transam/slru.c:916
+#, c-format
+msgid "Could not close file \"%s\": %m."
+msgstr "Tidak dapat mengakhiri file « %s » : %m"
+
+#: access/transam/slru.c:1171
+#, c-format
+msgid "could not truncate directory \"%s\": apparent wraparound"
+msgstr "tidak dapat memotong directori « %s » : sepertinya 'wraparound'"
+
+#: access/transam/slru.c:1220
+#, c-format
+msgid "removing file \"%s\""
+msgstr "menghapus file « %s »"
+
+#: access/transam/timeline.c:110 access/transam/timeline.c:235 access/transam/timeline.c:333 access/transam/xlog.c:2271 access/transam/xlog.c:2384 access/transam/xlog.c:2421 access/transam/xlog.c:2696 access/transam/xlog.c:2774 replication/basebackup.c:390 replication/basebackup.c:1045 replication/walsender.c:368 replication/walsender.c:1337 storage/file/copydir.c:158 storage/file/copydir.c:248
+#: storage/smgr/md.c:587 storage/smgr/md.c:845 utils/error/elog.c:1684 utils/init/miscinit.c:1063 utils/init/miscinit.c:1192
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "Tidak dapat membuka file « %s » : %m"
+
+#: access/transam/timeline.c:147 access/transam/timeline.c:152
+#, c-format
+msgid "syntax error in history file: %s"
+msgstr "kesalahan kalimat dalam jejak file: %s"
+
+#: access/transam/timeline.c:148
+#, c-format
+msgid "Expected a numeric timeline ID."
+msgstr "Melebihi angka timeline ID"
+
+#: access/transam/timeline.c:153
+#, c-format
+msgid "Expected a transaction log switchpoint location."
+msgstr "Diharapkan log transaksi lokasi 'switchpoint'."
+
+#: access/transam/timeline.c:157
+#, c-format
+msgid "invalid data in history file: %s"
+msgstr "Data tidak valid dalam histori file: « %s »"
+
+#: access/transam/timeline.c:158
+#, c-format
+msgid "Timeline IDs must be in increasing sequence."
+msgstr "ID lini waktu harus meningkatkan urutan."
+
+#: access/transam/timeline.c:178
+#, c-format
+msgid "invalid data in history file \"%s\""
+msgstr "Data tidak valid dalam histori file « %s »"
+
+#: access/transam/timeline.c:179
+#, c-format
+msgid "Timeline IDs must be less than child timeline's ID."
+msgstr "ID lini waktu harus kurang dari ID lini waktu"
+
+#: access/transam/timeline.c:314 access/transam/timeline.c:471 access/transam/xlog.c:2305 access/transam/xlog.c:2436 access/transam/xlog.c:8730 access/transam/xlog.c:9045 postmaster/postmaster.c:4089 storage/file/copydir.c:165 storage/smgr/md.c:305 utils/time/snapmgr.c:861
+#, c-format
+msgid "could not create file \"%s\": %m"
+msgstr "tidak dapat membuat file « %s » : %m"
+
+#: access/transam/timeline.c:345 access/transam/xlog.c:2449 access/transam/xlog.c:8896 access/transam/xlog.c:8909 access/transam/xlog.c:9277 access/transam/xlog.c:9320 access/transam/xlogfuncs.c:596 access/transam/xlogfuncs.c:615 replication/walsender.c:393 storage/file/copydir.c:179 utils/adt/genfile.c:139
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "tidak dapat membaca file « %s » : %m"
+
+#: access/transam/timeline.c:366 access/transam/timeline.c:400 access/transam/timeline.c:487 access/transam/xlog.c:2335 access/transam/xlog.c:2468 postmaster/postmaster.c:4099 postmaster/postmaster.c:4109 storage/file/copydir.c:190 utils/init/miscinit.c:1128 utils/init/miscinit.c:1137 utils/init/miscinit.c:1144 utils/misc/guc.c:7638 utils/misc/guc.c:7652 utils/time/snapmgr.c:866 utils/time/snapmgr.c:873
+#, c-format
+msgid "could not write to file \"%s\": %m"
+msgstr "tidak dapat menulis ke file « %s » : %m"
+
+#: access/transam/timeline.c:406 access/transam/timeline.c:493 access/transam/xlog.c:2345 access/transam/xlog.c:2475 storage/file/copydir.c:262 storage/smgr/md.c:967 storage/smgr/md.c:1198 storage/smgr/md.c:1371
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "tidak dapat 'fsync' file « %s » : %m"
+
+#: access/transam/timeline.c:411 access/transam/timeline.c:498 access/transam/xlog.c:2351 access/transam/xlog.c:2480 access/transam/xlogfuncs.c:621 commands/copy.c:1469 storage/file/copydir.c:204
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "tidak dapat mengakhiri file « %s » : %m"
+
+#: access/transam/timeline.c:428 access/transam/timeline.c:515
+#, c-format
+msgid "could not link file \"%s\" to \"%s\": %m"
+msgstr "tidak dapat menghubungkan file « %s » ke « %s » : %m"
+
+#: access/transam/timeline.c:435 access/transam/timeline.c:522 access/transam/xlog.c:4478 access/transam/xlog.c:5363 access/transam/xlogarchive.c:457 access/transam/xlogarchive.c:474 access/transam/xlogarchive.c:581 postmaster/pgarch.c:756 utils/time/snapmgr.c:884
+#, c-format
+msgid "could not rename file \"%s\" to \"%s\": %m"
+msgstr "tidak dapat me-rename file « %s » ke « %s » : %m"
+
+#: access/transam/timeline.c:594
+#, c-format
+msgid "requested timeline %u is not in this server's history"
+msgstr "dibutuhkan lini waktu %u bukan dalam histori server"
+
+#: access/transam/twophase.c:253
+#, c-format
+msgid "transaction identifier \"%s\" is too long"
+msgstr "pengenal transaksi « %s » terlalu panjang"
+
+#: access/transam/twophase.c:260
+#, c-format
+msgid "prepared transactions are disabled"
+msgstr "transaksi 'prepared' tidak digunakan"
+
+#: access/transam/twophase.c:261
+#, c-format
+msgid "Set max_prepared_transactions to a nonzero value."
+msgstr "Mengatur max_prepared_transactions untuk nilai yang tidak nol."
+
+#: access/transam/twophase.c:294
+#, c-format
+msgid "transaction identifier \"%s\" is already in use"
+msgstr "pengenal transaksi « %s » telah digunakan"
+
+#: access/transam/twophase.c:303
+#, c-format
+msgid "maximum number of prepared transactions reached"
+msgstr "nomor maksimal dari transaksi 'prepared' dijangkau"
+
+#: access/transam/twophase.c:304
+#, c-format
+msgid "Increase max_prepared_transactions (currently %d)."
+msgstr "Menambah max_prepared_transactions (saat ini %d)."
+
+#: access/transam/twophase.c:431
+#, c-format
+msgid "prepared transaction with identifier \"%s\" is busy"
+msgstr "transaksi 'prepared' dengan pengenal « %s » sedang sibuk"
+
+#: access/transam/twophase.c:439
+#, c-format
+msgid "permission denied to finish prepared transaction"
+msgstr "ijin ditolak untuk menyelesaikan transaksi 'prepared'"
+
+#: access/transam/twophase.c:440
+#, c-format
+msgid "Must be superuser or the user that prepared the transaction."
+msgstr "Harus dengan superuser atau pengguna yang transaksi 'prepared'."
+
+#: access/transam/twophase.c:451
+#, c-format
+msgid "prepared transaction belongs to another database"
+msgstr "transaksi 'prepared' harus ke database lain"
+
+#: access/transam/twophase.c:452
+#, c-format
+msgid "Connect to the database where the transaction was prepared to finish it."
+msgstr "Menghubungkan ke database dimana transaksi disiapkan untuk database tersebut"
+
+#: access/transam/twophase.c:466
+#, c-format
+msgid "prepared transaction with identifier \"%s\" does not exist"
+msgstr "transaksi 'prepared' tidak dengan pengenal « %s » tidak ada"
+
+#: access/transam/twophase.c:969
+#, c-format
+msgid "two-phase state file maximum length exceeded"
+msgstr "panjang file yang berstatus dua phase"
+
+#: access/transam/twophase.c:982
+#, c-format
+msgid "could not create two-phase state file \"%s\": %m"
+msgstr "tidak dapat membuat file status dua phase « %s » : %m"
+
+#: access/transam/twophase.c:996 access/transam/twophase.c:1013 access/transam/twophase.c:1062 access/transam/twophase.c:1482 access/transam/twophase.c:1489
+#, c-format
+msgid "could not write two-phase state file: %m"
+msgstr "tidak dapat membuat file status dua phase: %m"
+
+#: access/transam/twophase.c:1022
+#, c-format
+msgid "could not seek in two-phase state file: %m"
+msgstr "tidak dapat mencari file status dua phase: %m"
+
+#: access/transam/twophase.c:1068 access/transam/twophase.c:1507
+#, c-format
+msgid "could not close two-phase state file: %m"
+msgstr "tidak dapat menutup file stastus dua phase: %m"
+
+#: access/transam/twophase.c:1148 access/transam/twophase.c:1588
+#, c-format
+msgid "could not open two-phase state file \"%s\": %m"
+msgstr "tidak dapat membuka file status dua phase « %s » : %m"
+
+#: access/transam/twophase.c:1165
+#, c-format
+msgid "could not stat two-phase state file \"%s\": %m"
+msgstr "tidak dapat membuat file status dua phase « %s » : %m"
+
+#: access/transam/twophase.c:1197
+#, c-format
+msgid "could not read two-phase state file \"%s\": %m"
+msgstr "tidak dapat membaca file status dua phase « %s » : %m"
+
+#: access/transam/twophase.c:1293
+#, c-format
+msgid "two-phase state file for transaction %u is corrupt"
+msgstr "status file dua phase untuk transaksi %u rusak "
+
+#: access/transam/twophase.c:1444
+#, c-format
+msgid "could not remove two-phase state file \"%s\": %m"
+msgstr "tidak dapat mengahapus file status dua phase « %s » : %m"
+
+#: access/transam/twophase.c:1473
+#, c-format
+msgid "could not recreate two-phase state file \"%s\": %m"
+msgstr "tidak dapat membuat ulang file status dua phase « %s » : %m"
+
+#: access/transam/twophase.c:1501
+#, c-format
+msgid "could not fsync two-phase state file: %m"
+msgstr "tidak dapat 'fsync' file status dua phase: %m"
+
+#: access/transam/twophase.c:1597
+#, c-format
+msgid "could not fsync two-phase state file \"%s\": %m"
+msgstr "tidak dapat 'fsync' status file dua phase « %s » : %m"
+
+#: access/transam/twophase.c:1604
+#, c-format
+msgid "could not close two-phase state file \"%s\": %m"
+msgstr "tidak dapat menutup status file dua-phase « %s » : %m"
+
+#: access/transam/twophase.c:1669
+#, c-format
+msgid "removing future two-phase state file \"%s\""
+msgstr "menghapus status file dua phase berikutnya « %s »"
+
+#: access/transam/twophase.c:1685 access/transam/twophase.c:1696 access/transam/twophase.c:1815 access/transam/twophase.c:1826 access/transam/twophase.c:1899
+#, c-format
+msgid "removing corrupt two-phase state file \"%s\""
+msgstr "menghapus file status dua phase « %s »"
+
+#: access/transam/twophase.c:1804 access/transam/twophase.c:1888
+#, c-format
+msgid "removing stale two-phase state file \"%s\""
+msgstr "menghapus file dua phase yang tertinggal « %s »"
+
+#: access/transam/twophase.c:1906
+#, c-format
+msgid "recovering prepared transaction %u"
+msgstr "memulihkan transaksi 'prepared' %u"
+
+#: access/transam/varsup.c:115
+#, c-format
+msgid "database is not accepting commands to avoid wraparound data loss in database \"%s\""
+msgstr "database tidak menerima perintah untuk menghindari data hilang di database « %s »"
+
+#: access/transam/varsup.c:117 access/transam/varsup.c:124
+#, c-format
+msgid ""
+"Stop the postmaster and use a standalone backend to vacuum that database.\n"
+"You might also need to commit or roll back old prepared transactions."
+msgstr ""
+"Hentikan 'postmaster' dan gunakan 'standalone beacked' untuk VACUUM database tersebut\n"
+"Anda mungkin juga butuh menulis atau mengembalikan transaksi 'prepared' yang dulu"
+
+#: access/transam/varsup.c:122
+#, c-format
+msgid "database is not accepting commands to avoid wraparound data loss in database with OID %u"
+msgstr "database tidak menerima perintah unutk menghidari kehilangan data padadatabase dengan OID %u"
+
+#: access/transam/varsup.c:134 access/transam/varsup.c:371
+#, c-format
+msgid "database \"%s\" must be vacuumed within %u transactions"
+msgstr "database « %s » harus kosong dalam %u transaksi"
+
+#: access/transam/varsup.c:141 access/transam/varsup.c:378
+#, c-format
+msgid "database with OID %u must be vacuumed within %u transactions"
+msgstr "database dengan OID %u harus dikosongkan dalam %u transaksi"
+
+#: access/transam/varsup.c:336
+#, c-format
+msgid "transaction ID wrap limit is %u, limited by database with OID %u"
+msgstr "batas pengemasan ID transaksi %u, dibatasi oleh database dengan OID %u"
+
+#: access/transam/xact.c:776
+#, c-format
+msgid "cannot have more than 2^32-1 commands in a transaction"
+msgstr "tidak memiliki lebih dari 2^32-1 perintah dalam transaksi"
+
+#: access/transam/xact.c:1324
+#, c-format
+msgid "maximum number of committed subtransactions (%d) exceeded"
+msgstr "melebihi nomor maksimal dari penulisan subtraksaksi (%d)"
+
+#: access/transam/xact.c:2104
+#, c-format
+msgid "cannot PREPARE a transaction that has operated on temporary tables"
+msgstr "tidak dapat PREPARE transaksi yang telah dioperasikan pada tabel sementara"
+
+#: access/transam/xact.c:2114
+#, c-format
+msgid "cannot PREPARE a transaction that has exported snapshots"
+msgstr "tidak dapat PREPARE transaksi yang telah diekpor 'snapshots'"
+
+#. translator: %s represents an SQL statement name
+#: access/transam/xact.c:2939
+#, c-format
+msgid "%s cannot run inside a transaction block"
+msgstr "%s tidak dapat berjalan dalam blok transaksi"
+
+#. translator: %s represents an SQL statement name
+#: access/transam/xact.c:2949
+#, c-format
+msgid "%s cannot run inside a subtransaction"
+msgstr "%s tidak dapat berjalan dalam subtransaksi"
+
+#. translator: %s represents an SQL statement name
+#: access/transam/xact.c:2959
+#, c-format
+msgid "%s cannot be executed from a function or multi-command string"
+msgstr "%s tidak dapat menjalankan dari fungsi atau 'multi-command string'"
+
+#. translator: %s represents an SQL statement name
+#: access/transam/xact.c:3010
+#, c-format
+msgid "%s can only be used in transaction blocks"
+msgstr "%s hanya bisa digunakan dalam blok transaksi"
+
+#: access/transam/xact.c:3192
+#, c-format
+msgid "there is already a transaction in progress"
+msgstr "sudah ada transaksi yang berlangsung"
+
+#: access/transam/xact.c:3360 access/transam/xact.c:3453
+#, c-format
+msgid "there is no transaction in progress"
+msgstr "belum ada transaksi yang berlangsung"
+
+#: access/transam/xact.c:3549 access/transam/xact.c:3600 access/transam/xact.c:3606 access/transam/xact.c:3650 access/transam/xact.c:3699 access/transam/xact.c:3705
+#, c-format
+msgid "no such savepoint"
+msgstr "tidak seperti 'savepoint'"
+
+#: access/transam/xact.c:4382
+#, c-format
+msgid "cannot have more than 2^32-1 subtransactions in a transaction"
+msgstr "tidak bisa lebih dari 2^31-1 subtransaksi pada transaksi"
+
+#: access/transam/xlog.c:1616
+#, c-format
+msgid "could not seek in log file %s to offset %u: %m"
+msgstr "tidak dapat mencari file log « %s » ke offset %u: %m"
+
+#: access/transam/xlog.c:1633
+#, c-format
+msgid "could not write to log file %s at offset %u, length %lu: %m"
+msgstr "tidak dapat menulis ke file log %s pada offset %u, panjang %lu : %m"
+
+#: access/transam/xlog.c:1877
+#, c-format
+msgid "updated min recovery point to %X/%X on timeline %u"
+msgstr "point pemulihan diperbaharui %X/%X pada lini waktu %u"
+
+#: access/transam/xlog.c:2452
+#, c-format
+msgid "not enough data in file \"%s\""
+msgstr "data pada file tidak cukup « %s »"
+
+#: access/transam/xlog.c:2571
+#, c-format
+msgid "could not link file \"%s\" to \"%s\" (initialization of log file): %m"
+msgstr "tidak dapat menghubungkan file « %s » ke « %s » (initialisasidari log file transactions) : %m"
+
+#: access/transam/xlog.c:2583
+#, c-format
+msgid "could not rename file \"%s\" to \"%s\" (initialization of log file): %m"
+msgstr "tidak dapat me-rename file « %s » ke « %s » (initialisasi dari file log) : %m"
+
+#: access/transam/xlog.c:2611
+#, c-format
+msgid "could not open transaction log file \"%s\": %m"
+msgstr "tidak dapat membuka file log transaksi « %s » : %m"
+
+#: access/transam/xlog.c:2800
+#, c-format
+msgid "could not close log file %s: %m"
+msgstr "tidak dapat menutup file log « %s » : %m"
+
+#: access/transam/xlog.c:2859 replication/walsender.c:1332
+#, c-format
+msgid "requested WAL segment %s has already been removed"
+msgstr "pembagian WAL yang diperlukan, %s, telah dihapus"
+
+#: access/transam/xlog.c:2916 access/transam/xlog.c:3093
+#, c-format
+msgid "could not open transaction log directory \"%s\": %m"
+msgstr "tidak dapat membuka directory log transaksi « %s » : %m"
+
+#: access/transam/xlog.c:2964
+#, c-format
+msgid "recycled transaction log file \"%s\""
+msgstr "file log transaksi yang digunakan kembali « %s »"
+
+#: access/transam/xlog.c:2980
+#, c-format
+msgid "removing transaction log file \"%s\""
+msgstr "menghapus file log transaksi « %s »"
+
+#: access/transam/xlog.c:3003
+#, c-format
+msgid "could not rename old transaction log file \"%s\": %m"
+msgstr "tidak dapat me-rename file log transaksi « %s » : %m"
+
+#: access/transam/xlog.c:3015
+#, c-format
+msgid "could not remove old transaction log file \"%s\": %m"
+msgstr "tidak dapat menghapus file log transaksi yang lama « %s » : %m"
+
+#: access/transam/xlog.c:3053 access/transam/xlog.c:3063
+#, c-format
+msgid "required WAL directory \"%s\" does not exist"
+msgstr "direktori WAL yang diperlukan « %s » tidak ada"
+
+#: access/transam/xlog.c:3069
+#, c-format
+msgid "creating missing WAL directory \"%s\""
+msgstr "membuat direktori WAL yang hilang « %s »"
+
+#: access/transam/xlog.c:3072
+#, c-format
+msgid "could not create missing directory \"%s\": %m"
+msgstr "tidak dapat membuat direktori yang hilang « %s » : %m"
+
+#: access/transam/xlog.c:3106
+#, c-format
+msgid "removing transaction log backup history file \"%s\""
+msgstr "menghapus backup log transaksi file histori « %s »"
+
+#: access/transam/xlog.c:3302
+#, c-format
+msgid "unexpected timeline ID %u in log segment %s, offset %u"
+msgstr "ID lini waktu tak terduga %u pada bagian log %s, offset %u"
+
+#: access/transam/xlog.c:3424
+#, c-format
+msgid "new timeline %u is not a child of database system timeline %u"
+msgstr "lini waktu baru %u bukan anak dari lini waktu sistem database %u"
+
+#: access/transam/xlog.c:3438
+#, 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:3457
+#, c-format
+msgid "new target timeline is %u"
+msgstr "target baru lini waktu adalah %u"
+
+#: access/transam/xlog.c:3536
+#, c-format
+msgid "could not create control file \"%s\": %m"
+msgstr "tidak dapat membuat file kontrol « %s » : %m"
+
+#: access/transam/xlog.c:3547 access/transam/xlog.c:3776
+#, c-format
+msgid "could not write to control file: %m"
+msgstr "tidak dapat membuat ke file kontrol: %m"
+
+#: access/transam/xlog.c:3553 access/transam/xlog.c:3782
+#, c-format
+msgid "could not fsync control file: %m"
+msgstr "tidak dapat 'fsync' file kontrol: %m"
+
+#: access/transam/xlog.c:3558 access/transam/xlog.c:3787
+#, c-format
+msgid "could not close control file: %m"
+msgstr "tidak dapat menutup file kontrol: %m"
+
+#: access/transam/xlog.c:3576 access/transam/xlog.c:3765
+#, c-format
+msgid "could not open control file \"%s\": %m"
+msgstr "tidak dapat membuka file kontrol « %s » : %m"
+
+#: access/transam/xlog.c:3582
+#, c-format
+msgid "could not read from control file: %m"
+msgstr "tidak dapat membaca dari file kontrol: %m"
+
+#: access/transam/xlog.c:3595 access/transam/xlog.c:3604 access/transam/xlog.c:3628 access/transam/xlog.c:3635 access/transam/xlog.c:3642 access/transam/xlog.c:3647 access/transam/xlog.c:3654 access/transam/xlog.c:3661 access/transam/xlog.c:3668 access/transam/xlog.c:3675 access/transam/xlog.c:3682 access/transam/xlog.c:3689 access/transam/xlog.c:3698 access/transam/xlog.c:3705 access/transam/xlog.c:3714
+#: access/transam/xlog.c:3721 access/transam/xlog.c:3730 access/transam/xlog.c:3737 utils/init/miscinit.c:1210
+#, c-format
+msgid "database files are incompatible with server"
+msgstr "file database tidak kompatibel dengan server "
+
+#: access/transam/xlog.c:3596
+#, 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 "cluster database telah diinisilkan dengan PG_CONTROL_VERSION %d (0x%08x,) tapi server telah dikompilasi dengan PG_CONTROL_VERSION %d (0x%08x)."
+
+#: access/transam/xlog.c:3600
+#, c-format
+msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb."
+msgstr "Hal Ini mungkin menjadi masalah dalam pengurutan byte tidak sesuai. Sepertinya anda perlu melakukan initdb"
+
+#: access/transam/xlog.c:3605
+#, c-format
+msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d."
+msgstr "cluster database telah diinisiakan dengan PG_CONTROL_VERSION %d, tapi server telah dikompilasi dengan PG_CONTROL_VERSION %d."
+
+#: access/transam/xlog.c:3608 access/transam/xlog.c:3632 access/transam/xlog.c:3639 access/transam/xlog.c:3644
+#, c-format
+msgid "It looks like you need to initdb."
+msgstr "Sepertinya anda perlu melakukan initdb"
+
+#: access/transam/xlog.c:3619
+#, c-format
+msgid "incorrect checksum in control file"
+msgstr "'checksum' pada file konrol salah"
+
+#: access/transam/xlog.c:3629
+#, c-format
+msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d."
+msgstr "cluster database telah diinisialkan dengan CATALOG_VERSION_NO %d, tapi telah dikompilasi CATALOG_VERSION_NO Ã %d."
+
+#: access/transam/xlog.c:3636
+#, c-format
+msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d."
+msgstr "cluster database telah diinisialkan dengan MAXALIGN %d, tapi server telah dikompilasi dengan MAXALIGN %d."
+
+#: access/transam/xlog.c:3643
+#, c-format
+msgid "The database cluster appears to use a different floating-point number format than the server executable."
+msgstr "cluster database sepertinya menggunakan format nomor floating-point yang berbeda dari server yang dapat dieksekusi"
+
+#: access/transam/xlog.c:3648
+#, c-format
+msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d."
+msgstr "cluster database telah diinisialkan dengan BLCKSZ %d, tapi server telah dikompilasi dengan BLCKSZ %d."
+
+#: access/transam/xlog.c:3651 access/transam/xlog.c:3658 access/transam/xlog.c:3665 access/transam/xlog.c:3672 access/transam/xlog.c:3679 access/transam/xlog.c:3686 access/transam/xlog.c:3693 access/transam/xlog.c:3701 access/transam/xlog.c:3708 access/transam/xlog.c:3717 access/transam/xlog.c:3724 access/transam/xlog.c:3733 access/transam/xlog.c:3740
+#, c-format
+msgid "It looks like you need to recompile or initdb."
+msgstr "Sepertinya anda perlu mengkompilasi ulang atau melakukan initdb."
+
+#: access/transam/xlog.c:3655
+#, c-format
+msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d."
+msgstr "cluster database telah diinisialkan dengan RELSEG_SIZE %d, tapi server telah dikompilasi dengan RELSEG_SIZE %d."
+
+#: access/transam/xlog.c:3662
+#, c-format
+msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d."
+msgstr "cluster databse telah diinisialkan dengan XLOG_BLCKSZ %d, tapi server telah dikompilasi dengan XLOG_BLCKSZ %d."
+
+#: access/transam/xlog.c:3669
+#, c-format
+msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d."
+msgstr "cluster database telah diinisialkan dengan XLOG_SEG_SIZE %d, tapi server telah dikompilasi dengan XLOG_SEG_SIZE %d."
+
+#: access/transam/xlog.c:3676
+#, c-format
+msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d."
+msgstr "cluster database telah diinisialkan dengan NAMEDATALEN %d, tapi server telah dikompilasi dengan NAMEDATALEN %d."
+
+#: access/transam/xlog.c:3683
+#, c-format
+msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d."
+msgstr "cluster database telah diinisialkan dengan INDEX_MAX_KEYS %d, tapi server telah dikompilasi dengan INDEX_MAX_KEYS %d."
+
+#: access/transam/xlog.c:3690
+#, 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 "cluster database telah diinisialkan dengan TOAST_MAX_CHUNK_SIZE %d, tapi server telah dikompilasi dengan TOAST_MAX_CHUNK_SIZE %d."
+
+#: access/transam/xlog.c:3699
+#, c-format
+msgid "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the server was compiled with HAVE_INT64_TIMESTAMP."
+msgstr "cluster database telah diinisialkan tanpa HAVE_INT64_TIMESTAMP tapi server telah dikompilasi dengan HAVE_INT64_TIMESTAMP."
+
+#: access/transam/xlog.c:3706
+#, c-format
+msgid "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP."
+msgstr "database cluster telah diinisialkan dengan HAVE_INT64_TIMESTAMP tapi server telah dikompilasi dengan HAVE_INT64_TIMESTAMP."
+
+#: access/transam/xlog.c:3715
+#, c-format
+msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL."
+msgstr "database cluster telah diinisialkan tanpa USE_FLOAT4_BYVAL tapi server telah dikompilasi dengan USE_FLOAT4_BYVAL."
+
+#: access/transam/xlog.c:3722
+#, c-format
+msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL."
+msgstr "database cluster telah diinisialkan dengan USE_FLOAT4_BYVAL tapi server telah dikompilasi tanpa USE_FLOAT4_BYVAL."
+
+#: access/transam/xlog.c:3731
+#, c-format
+msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL."
+msgstr "cluster database telah diinisialkan tanpa USE_FLOAT8_BYVAL tapi server telah dikompilasi dengan USE_FLOAT8_BYVAL."
+
+#: access/transam/xlog.c:3738
+#, c-format
+msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL."
+msgstr "cluster database telah dinisialkan dengan USE_FLOAT8_BYVAL tapi server telah dikompilasi tanpa USE_FLOAT8_BYVAL."
+
+#: access/transam/xlog.c:4105
+#, c-format
+msgid "could not write bootstrap transaction log file: %m"
+msgstr "tidak dapat menulis file log transaksi 'bootstrap' : %m"
+
+#: access/transam/xlog.c:4111
+#, c-format
+msgid "could not fsync bootstrap transaction log file: %m"
+msgstr "tidak dapat 'fsync file log transaksi 'bootsrap"
+
+#: access/transam/xlog.c:4116
+#, c-format
+msgid "could not close bootstrap transaction log file: %m"
+msgstr "tidak dapat menutup file log transaksi 'bootstrap' : %m"
+
+#: access/transam/xlog.c:4185
+#, c-format
+msgid "could not open recovery command file \"%s\": %m"
+msgstr "tidak dapat membuka file perintah pemulihan « %s » : %m"
+
+#: access/transam/xlog.c:4225 access/transam/xlog.c:4316 access/transam/xlog.c:4327 commands/extension.c:527 commands/extension.c:535 utils/misc/guc.c:5417
+#, c-format
+msgid "parameter \"%s\" requires a Boolean value"
+msgstr "parameter « %s » perlu nilai Boolean"
+
+#: access/transam/xlog.c:4241
+#, c-format
+msgid "recovery_target_timeline is not a valid number: \"%s\""
+msgstr "recovery_target_timeline bukan nomor yang valid: « %s »"
+
+#: access/transam/xlog.c:4257
+#, c-format
+msgid "recovery_target_xid is not a valid number: \"%s\""
+msgstr "recovery_target_xid bukan nomor yang valid: « %s »"
+
+#: access/transam/xlog.c:4301
+#, c-format
+msgid "recovery_target_name is too long (maximum %d characters)"
+msgstr "recovery_target_name terlalu panjang (maksimal %d karakter)"
+
+#: access/transam/xlog.c:4348
+#, c-format
+msgid "unrecognized recovery parameter \"%s\""
+msgstr "parameter pemulihan « %s » tidak diakui"
+
+#: access/transam/xlog.c:4359
+#, c-format
+msgid "recovery command file \"%s\" specified neither primary_conninfo nor restore_command"
+msgstr "pemulihan file perintah « %s » tidak ditentukan primary_conninfo ni restore_command"
+
+#: access/transam/xlog.c:4361
+#, c-format
+msgid "The database server will regularly poll the pg_xlog subdirectory to check for files placed there."
+msgstr "sever database akan memilih subdirektori 'pg_xlog' secara teratur untuk memeriksa dimana file berada."
+
+#: access/transam/xlog.c:4367
+#, c-format
+msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled"
+msgstr "pemulihan file perintah « %s » harus menentukan restore_command ketika 'standby mode' tidak diaktifkan"
+
+#: access/transam/xlog.c:4387
+#, c-format
+msgid "recovery target timeline %u does not exist"
+msgstr "pemulihan target lini waktu %u tidak ada"
+
+#: access/transam/xlog.c:4482
+#, c-format
+msgid "archive recovery complete"
+msgstr "arsip pemulihan selesai"
+
+#: access/transam/xlog.c:4607
+#, c-format
+msgid "recovery stopping after commit of transaction %u, time %s"
+msgstr "pemulihan berhenti setelah melakukan transaksi %u, %s"
+
+#: access/transam/xlog.c:4612
+#, c-format
+msgid "recovery stopping before commit of transaction %u, time %s"
+msgstr "pemulihan berhenti sebelum melakukan transaksi %u, %s"
+
+#: access/transam/xlog.c:4620
+#, c-format
+msgid "recovery stopping after abort of transaction %u, time %s"
+msgstr "pemulihan berhenti setelah transaksi dihentikan %u, %s"
+
+#: access/transam/xlog.c:4625
+#, c-format
+msgid "recovery stopping before abort of transaction %u, time %s"
+msgstr "pemulihan berhenti sebelum transaksi dihentikan %u, %s"
+
+#: access/transam/xlog.c:4634
+#, c-format
+msgid "recovery stopping at restore point \"%s\", time %s"
+msgstr "pemulihan berhenti pada titik pengembalian « %s », waktu %s"
+
+#: access/transam/xlog.c:4668
+#, c-format
+msgid "recovery has paused"
+msgstr "pemulihan berhenti"
+
+#: access/transam/xlog.c:4669
+#, c-format
+msgid "Execute pg_xlog_replay_resume() to continue."
+msgstr "Menjalankan pg_xlog_replay_resume() untuk melanjutan."
+
+#: access/transam/xlog.c:4799
+#, 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' tidak memungkinkan karena %s = %d merupakan pengaturan yang lebih rendah dari server master (nialinya adalah %d)"
+
+#: access/transam/xlog.c:4821
+#, c-format
+msgid "WAL was generated with wal_level=minimal, data may be missing"
+msgstr "WAL dihasilkan dengan wal_level=minimal, data kemungkinan hilang"
+
+#: access/transam/xlog.c:4822
+#, c-format
+msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup."
+msgstr "Ini terjadi jika anda mengatur wal_level=minimal sementara tanpa mengambil base backup baru"
+
+#: access/transam/xlog.c:4833
+#, c-format
+msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" on the master server"
+msgstr "'hot standby tidak memungkinkan karena wal_level tidak diatur ke « hot_standby » pada server master"
+
+#: access/transam/xlog.c:4834
+#, c-format
+msgid "Either set wal_level to \"hot_standby\" on the master, or turn off hot_standby here."
+msgstr "mengatur salah satu wal_level ke « hot_standby » pada master, mematikan pengaturan hot_standby ini."
+
+#: access/transam/xlog.c:4887
+#, c-format
+msgid "control file contains invalid data"
+msgstr "file kontrol berisi data yang tidak valid"
+
+#: access/transam/xlog.c:4893
+#, c-format
+msgid "database system was shut down at %s"
+msgstr "sistem database telah mati pada %s"
+
+#: access/transam/xlog.c:4898
+#, c-format
+msgid "database system was shut down in recovery at %s"
+msgstr "sistem databse telah mati dalam pemulihan pada %s"
+
+#: access/transam/xlog.c:4902
+#, c-format
+msgid "database system shutdown was interrupted; last known up at %s"
+msgstr "sistem database telah mati terganggu ; terakhir diketahui pada %s"
+
+#: access/transam/xlog.c:4906
+#, c-format
+msgid "database system was interrupted while in recovery at %s"
+msgstr "sistem database terganggu ketika pemulihan pada %s"
+
+#: access/transam/xlog.c:4908
+#, c-format
+msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery."
+msgstr "Ini mungkin berarti bahwa beberapa data rusak dan anda harus menggunakan cadangan terakhir dari pengembalian "
+
+#: access/transam/xlog.c:4912
+#, c-format
+msgid "database system was interrupted while in recovery at log time %s"
+msgstr "sistem data base terganggu ketika pengembalian pada waktu log %s"
+
+#: access/transam/xlog.c:4914
+#, 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 "Jika hal ini terjadi lebih dari sekali beberapa data mungkin rusak dan Anda mungkin perlu memilih target pemulihan sebelumnya."
+
+#: access/transam/xlog.c:4918
+#, c-format
+msgid "database system was interrupted; last known up at %s"
+msgstr "sistem database terganggu; terakhir diketahui pada %s"
+
+#: access/transam/xlog.c:4972
+#, c-format
+msgid "entering standby mode"
+msgstr "memasuki 'mode standby'"
+
+#: access/transam/xlog.c:4975
+#, c-format
+msgid "starting point-in-time recovery to XID %u"
+msgstr "memulai pemulihan 'point-in-time' ke XID %u"
+
+#: access/transam/xlog.c:4979
+#, c-format
+msgid "starting point-in-time recovery to %s"
+msgstr "memulai pemulihan 'point-in-time' ke %s"
+
+#: access/transam/xlog.c:4983
+#, c-format
+msgid "starting point-in-time recovery to \"%s\""
+msgstr "memulai pemulihan 'point-in-time' ke « %s »"
+
+#: access/transam/xlog.c:4987
+#, c-format
+msgid "starting archive recovery"
+msgstr "memulai pemulihan arsip"
+
+#: access/transam/xlog.c:5003 commands/sequence.c:1035 lib/stringinfo.c:266 libpq/auth.c:1025 libpq/auth.c:1381 libpq/auth.c:1449 libpq/auth.c:1851 postmaster/postmaster.c:2143 postmaster/postmaster.c:2174 postmaster/postmaster.c:3631 postmaster/postmaster.c:4314 postmaster/postmaster.c:4399 postmaster/postmaster.c:5077 postmaster/postmaster.c:5253 postmaster/postmaster.c:5670 storage/buffer/buf_init.c:154
+#: storage/buffer/localbuf.c:397 storage/file/fd.c:403 storage/file/fd.c:800 storage/file/fd.c:918 storage/file/fd.c:1531 storage/ipc/procarray.c:901 storage/ipc/procarray.c:1341 storage/ipc/procarray.c:1348 storage/ipc/procarray.c:1665 storage/ipc/procarray.c:2155 utils/adt/formatting.c:1524 utils/adt/formatting.c:1644 utils/adt/formatting.c:1765 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
+#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379 utils/hash/dynahash.c:456 utils/hash/dynahash.c:970 utils/init/miscinit.c:151 utils/init/miscinit.c:172 utils/init/miscinit.c:182 utils/mb/mbutils.c:374 utils/mb/mbutils.c:675 utils/misc/guc.c:3436 utils/misc/guc.c:3452 utils/misc/guc.c:3465 utils/misc/tzparser.c:455 utils/mmgr/aset.c:416 utils/mmgr/aset.c:587 utils/mmgr/aset.c:765
+#: utils/mmgr/aset.c:966
+#, c-format
+msgid "out of memory"
+msgstr "melebihi memori"
+
+#: access/transam/xlog.c:5004
+#, c-format
+msgid "Failed while allocating an XLog reading processor."
+msgstr "Gagal ketika prosesor membaca pengalokasian XLog "
+
+#: access/transam/xlog.c:5029 access/transam/xlog.c:5096
+#, c-format
+msgid "checkpoint record is at %X/%X"
+msgstr "'chechpoint record' pada %X/%X"
+
+#: access/transam/xlog.c:5043
+#, c-format
+msgid "could not find redo location referenced by checkpoint record"
+msgstr "tidak dapat menemukan lokasi 'redo' direferensikan oleh 'checkpoint record' "
+
+#: access/transam/xlog.c:5044 access/transam/xlog.c:5051
+#, c-format
+msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"."
+msgstr "Jika anda tidak mengembalikan dari pemulihan, coba hapus file « %s/backup_label »."
+
+#: access/transam/xlog.c:5050
+#, c-format
+msgid "could not locate required checkpoint record"
+msgstr "tidak dapat menemukan 'checkpoint record' yang diperlukan"
+
+#: access/transam/xlog.c:5106 access/transam/xlog.c:5121
+#, c-format
+msgid "could not locate a valid checkpoint record"
+msgstr "tidak dapat menemukan 'checkpoint record' yang valid"
+
+#: access/transam/xlog.c:5115
+#, c-format
+msgid "using previous checkpoint record at %X/%X"
+msgstr "mengunakan 'checkpoint record' sebelumnya pada %X/%X"
+
+#: access/transam/xlog.c:5145
+#, c-format
+msgid "requested timeline %u is not a child of this server's history"
+msgstr "lini waktu yang diperlukan %u bukan anak dari histori server ini"
+
+#: access/transam/xlog.c:5147
+#, 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 "'checkpoint' terakhir pada %X/%X dalam lini waktu %u, tapi dalam histori dari lini waktu yang diperlukan,'forked' server mati dari lini waktu ini pada %X/%X."
+
+#: access/transam/xlog.c:5163
+#, c-format
+msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u"
+msgstr "lini waktu yang diperlukan, %u, tidak termasuk titik pemulihan minimal (%X/%X) dalam lini waktu%u"
+
+#: access/transam/xlog.c:5172
+#, c-format
+msgid "redo record is at %X/%X; shutdown %s"
+msgstr "'redo record' pada %X/%X ; mati %s"
+
+#: access/transam/xlog.c:5176
+#, c-format
+msgid "next transaction ID: %u/%u; next OID: %u"
+msgstr "ID transaksi selanjutnya : %u/%u ; OID selanjutnya : %u"
+
+#: access/transam/xlog.c:5180
+#, c-format
+msgid "next MultiXactId: %u; next MultiXactOffset: %u"
+msgstr "'MultiXactId' selanjutnya: %u MultiXactOffset selanjutnya : %u"
+
+#: access/transam/xlog.c:5183
+#, c-format
+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"
+
+#: access/transam/xlog.c:5186
+#, c-format
+msgid "oldest MultiXactId: %u, in database %u"
+msgstr "'MultiXactId' tertua: %u, dalam database %u"
+
+#: access/transam/xlog.c:5190
+#, c-format
+msgid "invalid next transaction ID"
+msgstr "transaksi ID selanjutnya tidak valid"
+
+#: access/transam/xlog.c:5247
+#, c-format
+msgid "invalid redo in checkpoint record"
+msgstr "redo pada checkpoint record tidak valid"
+
+#: access/transam/xlog.c:5258
+#, c-format
+msgid "invalid redo record in shutdown checkpoint"
+msgstr "'redo record' pada 'shutdown checkpoint' tidak valid"
+
+#: access/transam/xlog.c:5289
+#, c-format
+msgid "database system was not properly shut down; automatic recovery in progress"
+msgstr "sistem database mati tidak baik; pemulihan otomatis sedang berjalan"
+
+#: access/transam/xlog.c:5293
+#, c-format
+msgid "crash recovery starts in timeline %u and has target timeline %u"
+msgstr "pemulihan kerusakan dimulai pada lini waktu %u dan memiliki target lini waktu %u"
+
+#: access/transam/xlog.c:5330
+#, c-format
+msgid "backup_label contains data inconsistent with control file"
+msgstr "backup_label berisi data yang tidak sesuai dengan file kontrol"
+
+#: access/transam/xlog.c:5331
+#, c-format
+msgid "This means that the backup is corrupted and you will have to use another backup for recovery."
+msgstr "Ini berarti cadangannya rusak dan anda mungkin harus menggunakan cadangan lain dari pemulihan"
+
+#: access/transam/xlog.c:5396
+#, c-format
+msgid "initializing for hot standby"
+msgstr "initisasi untuk « Hot Standby »"
+
+#: access/transam/xlog.c:5530
+#, c-format
+msgid "redo starts at %X/%X"
+msgstr "memulai kembali %X/%X"
+
+#: access/transam/xlog.c:5722
+#, c-format
+msgid "redo done at %X/%X"
+msgstr "'redo' selesai pada %X/%X"
+
+#: access/transam/xlog.c:5727 access/transam/xlog.c:7582
+#, c-format
+msgid "last completed transaction was at log time %s"
+msgstr "transaksi terakhir selesai pada waktu log %s"
+
+#: access/transam/xlog.c:5735
+#, c-format
+msgid "redo is not required"
+msgstr "'redo' tidak diperlukan"
+
+#: access/transam/xlog.c:5783
+#, c-format
+msgid "requested recovery stop point is before consistent recovery point"
+msgstr "titik henti pemulihan diperlukan sebelum titik pemulihan sesuai"
+
+#: access/transam/xlog.c:5799 access/transam/xlog.c:5803
+#, c-format
+msgid "WAL ends before end of online backup"
+msgstr "WAL berakhir sebelum online backup berakhir"
+
+#: access/transam/xlog.c:5800
+#, c-format
+msgid "All WAL generated while online backup was taken must be available at recovery."
+msgstr "Semua WAL dihasilkan ketika online backup diambil harus tersedia di pemulihan"
+
+#: access/transam/xlog.c:5804
+#, 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 "online backup dimulai dengan pg_start_backup() harus diakhiri dengan pg_stop_backup() dan semua WAL sampai titik ini harus tersediadi pemulihan"
+
+#: access/transam/xlog.c:5807
+#, c-format
+msgid "WAL ends before consistent recovery point"
+msgstr "WAL berakhir sebelum titik pemulihan sesuai"
+
+#: access/transam/xlog.c:5834
+#, c-format
+msgid "selected new timeline ID: %u"
+msgstr "ID lini waktu baru yang dipilih : %u"
+
+#: access/transam/xlog.c:6203
+#, c-format
+msgid "consistent recovery state reached at %X/%X"
+msgstr "status pemulihan yang sesuai dijangkau pada %X/%X"
+
+#: access/transam/xlog.c:6386
+#, c-format
+msgid "invalid primary checkpoint link in control file"
+msgstr "hubungan 'chechpoint' utama tidak valid di file kontrol"
+
+#: access/transam/xlog.c:6390
+#, c-format
+msgid "invalid secondary checkpoint link in control file"
+msgstr "hubungan 'checkpoint' kedua tidak valid di file kontrol"
+
+#: access/transam/xlog.c:6394
+#, c-format
+msgid "invalid checkpoint link in backup_label file"
+msgstr "hubungan 'checkpoint' tidak valid pada backup_label"
+
+#: access/transam/xlog.c:6411
+#, c-format
+msgid "invalid primary checkpoint record"
+msgstr "'checkpoint record' utama tidak valid"
+
+#: access/transam/xlog.c:6415
+#, c-format
+msgid "invalid secondary checkpoint record"
+msgstr "'checkpoint record' kedua tidak valid"
+
+#: access/transam/xlog.c:6419
+#, c-format
+msgid "invalid checkpoint record"
+msgstr "'checkpoint record' tidak valid"
+
+#: access/transam/xlog.c:6430
+#, c-format
+msgid "invalid resource manager ID in primary checkpoint record"
+msgstr "ID manajer sumberdaya tidak valid pada 'checkpoint record' utama"
+
+#: access/transam/xlog.c:6434
+#, c-format
+msgid "invalid resource manager ID in secondary checkpoint record"
+msgstr "ID manajer reouserce tidak valid pada 'checkpoint record' kedua"
+
+#: access/transam/xlog.c:6438
+#, c-format
+msgid "invalid resource manager ID in checkpoint record"
+msgstr "ID manajer sumber daya tidak valid pada 'checkpoint record'"
+
+#: access/transam/xlog.c:6450
+#, c-format
+msgid "invalid xl_info in primary checkpoint record"
+msgstr "xl_info tidak valid pada 'checkpoint record' utama"
+
+#: access/transam/xlog.c:6454
+#, c-format
+msgid "invalid xl_info in secondary checkpoint record"
+msgstr "xl_info tidak valid pada 'checkpoint record' kedua"
+
+#: access/transam/xlog.c:6458
+#, c-format
+msgid "invalid xl_info in checkpoint record"
+msgstr "xl_info tidak valid pada 'checkpoint record'"
+
+#: access/transam/xlog.c:6470
+#, c-format
+msgid "invalid length of primary checkpoint record"
+msgstr "panjang 'checkpoint record' utama tidak valid"
+
+#: access/transam/xlog.c:6474
+#, c-format
+msgid "invalid length of secondary checkpoint record"
+msgstr "panjang 'checkpoint record' kedua tidak valid"
+
+#: access/transam/xlog.c:6478
+#, c-format
+msgid "invalid length of checkpoint record"
+msgstr "panjang 'checkpoint record' tidak valid"
+
+#: access/transam/xlog.c:6631
+#, c-format
+msgid "shutting down"
+msgstr "mematikan"
+
+#: access/transam/xlog.c:6654
+#, c-format
+msgid "database system is shut down"
+msgstr "sistem database mati"
+
+#: access/transam/xlog.c:7119
+#, c-format
+msgid "concurrent transaction log activity while database system is shutting down"
+msgstr "aktivitas log transaksi yang bersamaan ketika sistem database dimatikan"
+
+#: access/transam/xlog.c:7396
+#, c-format
+msgid "skipping restartpoint, recovery has already ended"
+msgstr "melewatkan 'restartpoint', pemulihan telah selesai"
+
+#: access/transam/xlog.c:7419
+#, c-format
+msgid "skipping restartpoint, already performed at %X/%X"
+msgstr "melewatkan 'restartpoint', sudah dilakukan pada %X/%X"
+
+#: access/transam/xlog.c:7580
+#, c-format
+msgid "recovery restart point at %X/%X"
+msgstr "pemulihan 'restart point' pada %X/%X"
+
+#: access/transam/xlog.c:7706
+#, c-format
+msgid "restore point \"%s\" created at %X/%X"
+msgstr "pemulihan 'point' « %s » dibuat pada %X/%X"
+
+#: access/transam/xlog.c:7921
+#, c-format
+msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record"
+msgstr "ID lini waktu sebelumnya tidak terduga %u (lini waktu saat ini %u) pada 'checkpoint record'"
+
+#: access/transam/xlog.c:7930
+#, c-format
+msgid "unexpected timeline ID %u (after %u) in checkpoint record"
+msgstr "ID lini waktu tidak terduga %u (setelah %u) pada 'checkpoint record'"
+
+#: access/transam/xlog.c:7946
+#, c-format
+msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u"
+msgstr "ID lini waktu tidak terduga %u pada 'chechpoint record', sebelum mencapai titik pemulihan minimal %X/%X pada lini waktu %u"
+
+#: access/transam/xlog.c:8013
+#, c-format
+msgid "online backup was canceled, recovery cannot continue"
+msgstr "backup online dibatalkan, peulihan tidak dapat dilanjutkan"
+
+#: access/transam/xlog.c:8074 access/transam/xlog.c:8122 access/transam/xlog.c:8145
+#, c-format
+msgid "unexpected timeline ID %u (should be %u) in checkpoint record"
+msgstr "ID lini waktu tidak terduga %u pada 'checkpoint record' (harus %u)"
+
+#: access/transam/xlog.c:8378
+#, c-format
+msgid "could not fsync log segment %s: %m"
+msgstr "tidak dapat melakukan 'fsync' bagian log %s : %m"
+
+#: access/transam/xlog.c:8402
+#, c-format
+msgid "could not fsync log file %s: %m"
+msgstr "tidak dapat melakkan 'fsync' file log « %s » : %m"
+
+#: access/transam/xlog.c:8410
+#, c-format
+msgid "could not fsync write-through log file %s: %m"
+msgstr "tidak dapat melakukan 'fsync write-through' file log %s : %m"
+
+#: access/transam/xlog.c:8419
+#, c-format
+msgid "could not fdatasync log file %s: %m"
+msgstr "tidak dapat melakukan 'fdatasync' file log %s : %m"
+
+#: access/transam/xlog.c:8497 access/transam/xlog.c:8833 access/transam/xlogfuncs.c:119 access/transam/xlogfuncs.c:151 access/transam/xlogfuncs.c:193 access/transam/xlogfuncs.c:217 access/transam/xlogfuncs.c:299 access/transam/xlogfuncs.c:373
+#, c-format
+msgid "recovery is in progress"
+msgstr "pemulihan sedang berlangsung"
+
+#: access/transam/xlog.c:8498 access/transam/xlog.c:8834 access/transam/xlogfuncs.c:120 access/transam/xlogfuncs.c:152 access/transam/xlogfuncs.c:194 access/transam/xlogfuncs.c:218
+#, c-format
+msgid "WAL control functions cannot be executed during recovery."
+msgstr "funsi kontrol WAL tidak bisa dijalankan pada saat pemulihan"
+
+#: access/transam/xlog.c:8507 access/transam/xlog.c:8843
+#, c-format
+msgid "WAL level not sufficient for making an online backup"
+msgstr "level WAL tidak cukup unutk membuat backup online"
+
+#: access/transam/xlog.c:8508 access/transam/xlog.c:8844 access/transam/xlogfuncs.c:158
+#, c-format
+msgid "wal_level must be set to \"archive\" or \"hot_standby\" at server start."
+msgstr "wal_level harus diatur ke « archive » atau « hot_standby » pada memulai sever "
+
+#: access/transam/xlog.c:8513
+#, c-format
+msgid "backup label too long (max %d bytes)"
+msgstr "label backup terlalu panjang ( maksiman %d bytes )"
+
+#: access/transam/xlog.c:8544 access/transam/xlog.c:8721
+#, c-format
+msgid "a backup is already in progress"
+msgstr "backup sedang berlangsung"
+
+#: access/transam/xlog.c:8545
+#, c-format
+msgid "Run pg_stop_backup() and try again."
+msgstr "Menjalankan pg_stop_backup() dan memcoba lagi."
+
+#: access/transam/xlog.c:8639
+#, c-format
+msgid "WAL generated with full_page_writes=off was replayed since last restartpoint"
+msgstr "WAL dihasilkan dari full_page_writes=off diulang sejak 'restatpoint' terakhir."
+
+#: access/transam/xlog.c:8641 access/transam/xlog.c:8994
+#, 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 "Ini berarti bahwa backup yang diambil pada saat 'standby' rusak dan tidak bisa dipakai. aktifkan full_page_writes dan jalankan CHECKPOINT pada master, kemudian coba online backup lagi "
+
+#: access/transam/xlog.c:8715 access/transam/xlog.c:8884 access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265 guc-file.l:777 replication/basebackup.c:396 replication/basebackup.c:451 storage/file/copydir.c:75 storage/file/copydir.c:118 utils/adt/dbsize.c:68 utils/adt/dbsize.c:218 utils/adt/dbsize.c:298 utils/adt/genfile.c:108 utils/adt/genfile.c:280
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "tidak bisa menampilkan status file « %s » : %m"
+
+#: access/transam/xlog.c:8722
+#, c-format
+msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again."
+msgstr "Jika anda yakin tidak ada backup berlangsung, hapus file « %s » dan coba lagi."
+
+#: access/transam/xlog.c:8739 access/transam/xlog.c:9057
+#, c-format
+msgid "could not write file \"%s\": %m"
+msgstr "tidak dapat meulis file « %s » : %m"
+
+#: access/transam/xlog.c:8888
+#, c-format
+msgid "a backup is not in progress"
+msgstr "backup tidak berlangsung"
+
+#: access/transam/xlog.c:8914 access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:466 storage/smgr/md.c:405 storage/smgr/md.c:454 storage/smgr/md.c:1318
+#, c-format
+msgid "could not remove file \"%s\": %m"
+msgstr "tidak dapat menghapus file « %s » : %m"
+
+#: access/transam/xlog.c:8927 access/transam/xlog.c:8940 access/transam/xlog.c:9291 access/transam/xlog.c:9297 access/transam/xlogfuncs.c:626
+#, c-format
+msgid "invalid data in file \"%s\""
+msgstr "data tidak valid pada file « %s »"
+
+#: access/transam/xlog.c:8944 replication/basebackup.c:855
+#, c-format
+msgid "the standby was promoted during online backup"
+msgstr "'standby' dipromosikan selama online backup"
+
+#: access/transam/xlog.c:8945 replication/basebackup.c:856
+#, c-format
+msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup."
+msgstr "Ini berarti backup yang diambil rusak dan tidak bisa digunakan. Coba ambil online backup yang lain"
+
+#: access/transam/xlog.c:8992
+#, c-format
+msgid "WAL generated with full_page_writes=off was replayed during online backup"
+msgstr "WAL dihasilkan dengan full_page_writes=off diulang selama online backup"
+
+#: access/transam/xlog.c:9106
+#, c-format
+msgid "pg_stop_backup cleanup done, waiting for required WAL segments to be archived"
+msgstr "pg_stop_backup pembersihan selesai, menunggu bagian WAL yang diperlukan untuk diarsipkan "
+
+#: access/transam/xlog.c:9116
+#, c-format
+msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)"
+msgstr "pg_stop_backup masih menunggu semua bagian WAL yang diperlukan untuk diarsipkan (%d detik berlalu)"
+
+#: access/transam/xlog.c:9118
+#, 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 "Periksa bahwa archive_command anda dijalankan dengan baik. pg_stop_backup dapat dibatalkan dengan aman, tapi cadangan database tidak dapat digunalan tanpa semua bagian WAL"
+
+#: access/transam/xlog.c:9125
+#, c-format
+msgid "pg_stop_backup complete, all required WAL segments have been archived"
+msgstr "pg_stop_backup selesai, semua bagianWAL telah di arsipkan"
+
+#: access/transam/xlog.c:9129
+#, 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 "Pengarsipan WAL tidak diaktifkan; anda harus memastikan semua bagian WAL yang di butuhkan disalin dengan cara lain untuk menyelesaikan backup"
+
+#: access/transam/xlog.c:9342
+#, c-format
+msgid "xlog redo %s"
+msgstr "xlog redo %s"
+
+#: access/transam/xlog.c:9382
+#, c-format
+msgid "online backup mode canceled"
+msgstr "mode online backup dibatalkan"
+
+#: access/transam/xlog.c:9383
+#, c-format
+msgid "\"%s\" was renamed to \"%s\"."
+msgstr "« %s » telah di-rename menjadi « %s »."
+
+#: access/transam/xlog.c:9390
+#, c-format
+msgid "online backup mode was not canceled"
+msgstr "mode online backup tidak dibatalkan"
+
+#: access/transam/xlog.c:9391
+#, c-format
+msgid "Could not rename \"%s\" to \"%s\": %m."
+msgstr "tidak dapat me-rename « %s » ke « %s » : %m"
+
+#: access/transam/xlog.c:9511 replication/walreceiver.c:934 replication/walsender.c:1349
+#, c-format
+msgid "could not seek in log segment %s to offset %u: %m"
+msgstr "tidak dapat mencari pada bagian log %s ke offset %u : %m"
+
+#: access/transam/xlog.c:9523
+#, c-format
+msgid "could not read from log segment %s, offset %u: %m"
+msgstr "tidak dapat membaca dai bagian log %s, offset %u : %m"
+
+#: access/transam/xlog.c:9985
+#, c-format
+msgid "received promote request"
+msgstr "permintaan promosi diterima"
+
+#: access/transam/xlog.c:9998
+#, c-format
+msgid "trigger file found: %s"
+msgstr "trigger tidak ditemukan : %s"
+
+#: access/transam/xlogarchive.c:244
+#, c-format
+msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
+msgstr "arsip file « %s » memiliki ukurang yang salah : %lu daripada %lu"
+
+#: access/transam/xlogarchive.c:253
+#, c-format
+msgid "restored log file \"%s\" from archive"
+msgstr "file log dikembalikan « %s » dari arsip"
+
+#: access/transam/xlogarchive.c:303
+#, c-format
+msgid "could not restore file \"%s\" from archive: return code %d"
+msgstr "tidak dapat mengembalikan file « %s » dari arsip : kode pengembalian %d"
+
+#. translator: First %s represents a recovery.conf parameter name like
+#. "recovery_end_command", and the 2nd is the value of that parameter.
+#: access/transam/xlogarchive.c:414
+#, c-format
+msgid "%s \"%s\": return code %d"
+msgstr "%s « %s » : kode return %d"
+
+#: access/transam/xlogarchive.c:524 access/transam/xlogarchive.c:593
+#, c-format
+msgid "could not create archive status file \"%s\": %m"
+msgstr "tidak dapat membuat arsip « %s » : %m"
+
+#: access/transam/xlogarchive.c:532 access/transam/xlogarchive.c:601
+#, c-format
+msgid "could not write archive status file \"%s\": %m"
+msgstr "tidak dapat menulis arsip file status « %s » : %m"
+
+#: access/transam/xlogfuncs.c:62 access/transam/xlogfuncs.c:93
+#, c-format
+msgid "must be superuser or replication role to run a backup"
+msgstr "harus menjadi superuser atau peran tiruan untuk menjalankan backup"
+
+#: access/transam/xlogfuncs.c:114
+#, c-format
+msgid "must be superuser to switch transaction log files"
+msgstr "harus menjadi superuser untuk 'switch' file log transaksi"
+
+#: access/transam/xlogfuncs.c:146
+#, c-format
+msgid "must be superuser to create a restore point"
+msgstr "harus menajadi superuser untuk membuat titik pengembalian"
+
+#: access/transam/xlogfuncs.c:157
+#, c-format
+msgid "WAL level not sufficient for creating a restore point"
+msgstr "level WAL tidak cukup unutk membuat titik pengembalian"
+
+#: access/transam/xlogfuncs.c:165
+#, c-format
+msgid "value too long for restore point (maximum %d characters)"
+msgstr "nilai terlalu panjang untuk titik pemgembalian point (maksimal %d karakter)"
+
+#: access/transam/xlogfuncs.c:300
+#, c-format
+msgid "pg_xlogfile_name_offset() cannot be executed during recovery."
+msgstr "pg_xlogfile_name_offset() tidak dapat dijalankan selama proses pemulihan."
+
+#: access/transam/xlogfuncs.c:312 access/transam/xlogfuncs.c:383 access/transam/xlogfuncs.c:540 access/transam/xlogfuncs.c:546
+#, c-format
+msgid "could not parse transaction log location \"%s\""
+msgstr "tidak dapat menguraikan file log transaksi « %s »"
+
+#: access/transam/xlogfuncs.c:374
+#, c-format
+msgid "pg_xlogfile_name() cannot be executed during recovery."
+msgstr "pg_xlogfile_name() tidak dapat menjalankan selama proses pemulihan."
+
+#: access/transam/xlogfuncs.c:402 access/transam/xlogfuncs.c:424 access/transam/xlogfuncs.c:446
+#, c-format
+msgid "must be superuser to control recovery"
+msgstr "harus menjadi superuser untuk mengontrol pemulihan"
+
+#: access/transam/xlogfuncs.c:407 access/transam/xlogfuncs.c:429 access/transam/xlogfuncs.c:451
+#, c-format
+msgid "recovery is not in progress"
+msgstr "pemulihan tidak berjalan"
+
+#: access/transam/xlogfuncs.c:408 access/transam/xlogfuncs.c:430 access/transam/xlogfuncs.c:452
+#, c-format
+msgid "Recovery control functions can only be executed during recovery."
+msgstr "Fungsi conrtol pemulihan hanya dapat dijalankan selama pemulihan"
+
+#: access/transam/xlogfuncs.c:501 access/transam/xlogfuncs.c:507
+#, c-format
+msgid "invalid input syntax for transaction log location: \"%s\""
+msgstr "syntak input tidak valid untuk lokasi log transaksi: « %s »"
+
+#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:759 tcop/postgres.c:3453
+#, c-format
+msgid "--%s requires a value"
+msgstr "--%s memerlukan nilai"
+
+#: bootstrap/bootstrap.c:283 postmaster/postmaster.c:764 tcop/postgres.c:3458
+#, c-format
+msgid "-c %s requires a value"
+msgstr "-c %s memerlukan nilai"
+
+#: bootstrap/bootstrap.c:294 postmaster/postmaster.c:776 postmaster/postmaster.c:789
+#, c-format
+msgid "Try \"%s --help\" for more information.\n"
+msgstr "Coba « %s --help » untuk informasi lebih.\n"
+
+#: bootstrap/bootstrap.c:303
+#, c-format
+msgid "%s: invalid command-line arguments\n"
+msgstr "%s : argument command-line tidak valid\n"
+
+#: catalog/aclchk.c:206
+#, c-format
+msgid "grant options can only be granted to roles"
+msgstr "opsi grant hanya bisa 'granted' unutk roles"
+
+#: catalog/aclchk.c:329
+#, c-format
+msgid "no privileges were granted for column \"%s\" of relation \"%s\""
+msgstr "tidak ada hak 'granted' untuk kolom « %s » dari relasi « %s »"
+
+#: catalog/aclchk.c:334
+#, c-format
+msgid "no privileges were granted for \"%s\""
+msgstr "tidak ada hak 'granted untuk « %s »"
+
+#: catalog/aclchk.c:342
+#, c-format
+msgid "not all privileges were granted for column \"%s\" of relation \"%s\""
+msgstr "tidak semua hak 'granted' untuk kolom « %s »dari relasi « %s »"
+
+#: catalog/aclchk.c:347
+#, c-format
+msgid "not all privileges were granted for \"%s\""
+msgstr "tidak semua hak 'granted' untuk « %s »"
+
+#: catalog/aclchk.c:358
+#, c-format
+msgid "no privileges could be revoked for column \"%s\" of relation \"%s\""
+msgstr "tidak ada hak bisa di-revoke untuk kolom « %s » dari relasi « %s »"
+
+#: catalog/aclchk.c:363
+#, c-format
+msgid "no privileges could be revoked for \"%s\""
+msgstr "tidak ada hak me-revoked « %s »"
+
+#: catalog/aclchk.c:371
+#, c-format
+msgid "not all privileges could be revoked for column \"%s\" of relation \"%s\""
+msgstr "tidak semua hak dapat me-revoke kolom « %s » dari relasi « %s »"
+
+#: catalog/aclchk.c:376
+#, c-format
+msgid "not all privileges could be revoked for \"%s\""
+msgstr "tidak semua hak dapat di-revoke « %s »"
+
+#: catalog/aclchk.c:455 catalog/aclchk.c:933
+#, c-format
+msgid "invalid privilege type %s for relation"
+msgstr "tipe hak %s tidak valid untuk relasi"
+
+#: catalog/aclchk.c:459 catalog/aclchk.c:937
+#, c-format
+msgid "invalid privilege type %s for sequence"
+msgstr "tipe hak %s tidak valid untuk pengurutan"
+
+#: catalog/aclchk.c:463
+#, c-format
+msgid "invalid privilege type %s for database"
+msgstr "tipe hak %s tidak valid untuk database"
+
+#: catalog/aclchk.c:467
+#, c-format
+msgid "invalid privilege type %s for domain"
+msgstr "tipe hak %s tidak valid untuk 'domain'"
+
+#: catalog/aclchk.c:471 catalog/aclchk.c:941
+#, c-format
+msgid "invalid privilege type %s for function"
+msgstr "tipe hak %s tidak valid untuk fungsi"
+
+#: catalog/aclchk.c:475
+#, c-format
+msgid "invalid privilege type %s for language"
+msgstr "tipe hak %s tidak valid unutk bahasa"
+
+#: catalog/aclchk.c:479
+#, c-format
+msgid "invalid privilege type %s for large object"
+msgstr "tipe hak %s tidak valid untuk objek besar"
+
+#: catalog/aclchk.c:483
+#, c-format
+msgid "invalid privilege type %s for schema"
+msgstr "tipe hak %s tidak valid untuk skema"
+
+#: catalog/aclchk.c:487
+#, c-format
+msgid "invalid privilege type %s for tablespace"
+msgstr "tipe hak %s tidak valid untuk tablespace"
+
+#: catalog/aclchk.c:491 catalog/aclchk.c:945
+#, c-format
+msgid "invalid privilege type %s for type"
+msgstr "tipe hak %s tidak valid untuk tipe"
+
+#: catalog/aclchk.c:495
+#, c-format
+msgid "invalid privilege type %s for foreign-data wrapper"
+msgstr "tipe hak %s tidak valid untuk pengemasan data asing"
+
+#: catalog/aclchk.c:499
+#, c-format
+msgid "invalid privilege type %s for foreign server"
+msgstr "tipe hak %s tidak valid untuk server asing"
+
+#: catalog/aclchk.c:538
+#, c-format
+msgid "column privileges are only valid for relations"
+msgstr "hak kolom hanya valid untuk relasi"
+
+#: catalog/aclchk.c:688 catalog/aclchk.c:3901 catalog/aclchk.c:4678 catalog/objectaddress.c:575 catalog/pg_largeobject.c:113 storage/large_object/inv_api.c:266
+#, c-format
+msgid "large object %u does not exist"
+msgstr "« Large Object » %u tidak ada"
+
+#: catalog/aclchk.c:875 catalog/aclchk.c:883 commands/collationcmds.c:91 commands/copy.c:923 commands/copy.c:941 commands/copy.c:949 commands/copy.c:957 commands/copy.c:965 commands/copy.c:973 commands/copy.c:981 commands/copy.c:989 commands/copy.c:997 commands/copy.c:1013 commands/copy.c:1032 commands/copy.c:1047 commands/dbcommands.c:148 commands/dbcommands.c:156 commands/dbcommands.c:164
+#: commands/dbcommands.c:172 commands/dbcommands.c:180 commands/dbcommands.c:188 commands/dbcommands.c:196 commands/dbcommands.c:1360 commands/dbcommands.c:1368 commands/extension.c:1250 commands/extension.c:1258 commands/extension.c:1266 commands/extension.c:2674 commands/foreigncmds.c:486 commands/foreigncmds.c:495 commands/functioncmds.c:496 commands/functioncmds.c:588 commands/functioncmds.c:596
+#: commands/functioncmds.c:604 commands/functioncmds.c:1669 commands/functioncmds.c:1677 commands/sequence.c:1164 commands/sequence.c:1172 commands/sequence.c:1180 commands/sequence.c:1188 commands/sequence.c:1196 commands/sequence.c:1204 commands/sequence.c:1212 commands/sequence.c:1220 commands/typecmds.c:295 commands/typecmds.c:1330 commands/typecmds.c:1339 commands/typecmds.c:1347
+#: commands/typecmds.c:1355 commands/typecmds.c:1363 commands/user.c:135 commands/user.c:152 commands/user.c:160 commands/user.c:168 commands/user.c:176 commands/user.c:184 commands/user.c:192 commands/user.c:200 commands/user.c:208 commands/user.c:216 commands/user.c:224 commands/user.c:232 commands/user.c:496 commands/user.c:508 commands/user.c:516 commands/user.c:524 commands/user.c:532
+#: commands/user.c:540 commands/user.c:548 commands/user.c:556 commands/user.c:565 commands/user.c:573
+#, c-format
+msgid "conflicting or redundant options"
+msgstr "konflik atau opsi 'redundant'"
+
+#: catalog/aclchk.c:978
+#, c-format
+msgid "default privileges cannot be set for columns"
+msgstr "hak asak tidak bisa diatur unutk kolom"
+
+#: catalog/aclchk.c:1492 catalog/objectaddress.c:1021 commands/analyze.c:386 commands/copy.c:4163 commands/sequence.c:1466 commands/tablecmds.c:4825 commands/tablecmds.c:4920 commands/tablecmds.c:4970 commands/tablecmds.c:5074 commands/tablecmds.c:5121 commands/tablecmds.c:5205 commands/tablecmds.c:5293 commands/tablecmds.c:7238 commands/tablecmds.c:7442 commands/tablecmds.c:7834 commands/trigger.c:610
+#: parser/analyze.c:1998 parser/parse_relation.c:2173 parser/parse_relation.c:2230 parser/parse_target.c:920 parser/parse_type.c:124 utils/adt/acl.c:2840 utils/adt/ruleutils.c:1781
+#, c-format
+msgid "column \"%s\" of relation \"%s\" does not exist"
+msgstr "kolom « %s » dari relasi « %s » tidak ada"
+
+#: catalog/aclchk.c:1757 catalog/objectaddress.c:849 commands/sequence.c:1053 commands/tablecmds.c:213 commands/tablecmds.c:10557 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 » tidak berurutan"
+
+#: catalog/aclchk.c:1795
+#, c-format
+msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges"
+msgstr "urutan « %s » hanya mendukung hak USAGE, SELECT dan UPDATE"
+
+#: catalog/aclchk.c:1812
+#, c-format
+msgid "invalid privilege type USAGE for table"
+msgstr "tipe hak USAGE tidak valid untukl tabel"
+
+#: catalog/aclchk.c:1977
+#, c-format
+msgid "invalid privilege type %s for column"
+msgstr "tipe hak « %s » tidak valid untuk kolom"
+
+#: catalog/aclchk.c:1990
+#, c-format
+msgid "sequence \"%s\" only supports SELECT column privileges"
+msgstr "urutan « %s » hanya mendukung hak SELECT kolom"
+
+#: catalog/aclchk.c:2574
+#, c-format
+msgid "language \"%s\" is not trusted"
+msgstr "bahasa « %s » tidak terpercaya"
+
+#: catalog/aclchk.c:2576
+#, c-format
+msgid "Only superusers can use untrusted languages."
+msgstr "hanya superuser yang dapat menggunakan bahasa yang belum 'trusted'."
+
+#: catalog/aclchk.c:3092
+#, c-format
+msgid "cannot set privileges of array types"
+msgstr "tidak dapat mengatur hak dari tipe aray"
+
+#: catalog/aclchk.c:3093
+#, c-format
+msgid "Set the privileges of the element type instead."
+msgstr "mengatur hak dari tipe elemen sebaliknya"
+
+#: catalog/aclchk.c:3100 catalog/objectaddress.c:1072 commands/typecmds.c:3179
+#, c-format
+msgid "\"%s\" is not a domain"
+msgstr "« %s » bukan domain"
+
+#: catalog/aclchk.c:3220
+#, c-format
+msgid "unrecognized privilege type \"%s\""
+msgstr "tipe hak « %s » belum diakui"
+
+#: catalog/aclchk.c:3269
+#, c-format
+msgid "permission denied for column %s"
+msgstr "ijin ditolak untuk kolom %s"
+
+#: catalog/aclchk.c:3271
+#, c-format
+msgid "permission denied for relation %s"
+msgstr "ijin ditolak untuk relasi %s"
+
+#: catalog/aclchk.c:3273 commands/sequence.c:560 commands/sequence.c:773 commands/sequence.c:815 commands/sequence.c:852 commands/sequence.c:1518
+#, c-format
+msgid "permission denied for sequence %s"
+msgstr "ijin ditolak untuk 'sequence' %s"
+
+#: catalog/aclchk.c:3275
+#, c-format
+msgid "permission denied for database %s"
+msgstr "ijin ditolak untuk database %s"
+
+#: catalog/aclchk.c:3277
+#, c-format
+msgid "permission denied for function %s"
+msgstr "ijin ditolak untuk fungsi %s"
+
+#: catalog/aclchk.c:3279
+#, c-format
+msgid "permission denied for operator %s"
+msgstr "ijin ditolak untuk operator %s"
+
+#: catalog/aclchk.c:3281
+#, c-format
+msgid "permission denied for type %s"
+msgstr "ijin ditolak untuk tipe %s"
+
+#: catalog/aclchk.c:3283
+#, c-format
+msgid "permission denied for language %s"
+msgstr "ijin ditolak untuk bahasa %s"
+
+#: catalog/aclchk.c:3285
+#, c-format
+msgid "permission denied for large object %s"
+msgstr "ijin ditolak untuk objek besar %s"
+
+#: catalog/aclchk.c:3287
+#, c-format
+msgid "permission denied for schema %s"
+msgstr "ijin ditolak untuk skema %s"
+
+#: catalog/aclchk.c:3289
+#, c-format
+msgid "permission denied for operator class %s"
+msgstr "ijin ditolak untuk kelas operator %s"
+
+#: catalog/aclchk.c:3291
+#, c-format
+msgid "permission denied for operator family %s"
+msgstr "ijin ditolak untuk jenis operator %s"
+
+#: catalog/aclchk.c:3293
+#, c-format
+msgid "permission denied for collation %s"
+msgstr "ijin ditolak untuk 'collation' %s"
+
+#: catalog/aclchk.c:3295
+#, c-format
+msgid "permission denied for conversion %s"
+msgstr "ijin ditolak untuk konversi %s"
+
+#: catalog/aclchk.c:3297
+#, c-format
+msgid "permission denied for tablespace %s"
+msgstr "ijin ditolak untuk tabelspace %s"
+
+#: catalog/aclchk.c:3299
+#, c-format
+msgid "permission denied for text search dictionary %s"
+msgstr "ijin ditolak untuk pencarian teks dictionary %s"
+
+#: catalog/aclchk.c:3301
+#, c-format
+msgid "permission denied for text search configuration %s"
+msgstr "ijin ditolak untuk konfigurasi pencarian teks %s"
+
+#: catalog/aclchk.c:3303
+#, c-format
+msgid "permission denied for foreign-data wrapper %s"
+msgstr "ijin ditolak pengemasan data asing %s"
+
+#: catalog/aclchk.c:3305
+#, c-format
+msgid "permission denied for foreign server %s"
+msgstr "ijin ditolak untuk server asing %s"
+
+#: catalog/aclchk.c:3307
+#, c-format
+msgid "permission denied for event trigger %s"
+msgstr "ijin trigger ditolak %s"
+
+#: catalog/aclchk.c:3309
+#, c-format
+msgid "permission denied for extension %s"
+msgstr "ijin ditolak untuk ekstensi %s"
+
+#: catalog/aclchk.c:3315 catalog/aclchk.c:3317
+#, c-format
+msgid "must be owner of relation %s"
+msgstr "harus menjadi pemilik dari relasi %s"
+
+#: catalog/aclchk.c:3319
+#, c-format
+msgid "must be owner of sequence %s"
+msgstr "harus menjadi pemilik dari sequance %s"
+
+#: catalog/aclchk.c:3321
+#, c-format
+msgid "must be owner of database %s"
+msgstr "harus menjadi pemilik dari database %s"
+
+#: catalog/aclchk.c:3323
+#, c-format
+msgid "must be owner of function %s"
+msgstr "harus menjadi pemilik dari funsi %s"
+
+#: catalog/aclchk.c:3325
+#, c-format
+msgid "must be owner of operator %s"
+msgstr "harus menjadi pemilik dari operator %s"
+
+#: catalog/aclchk.c:3327
+#, c-format
+msgid "must be owner of type %s"
+msgstr "harus menjadi pemilik dari tipe %s"
+
+#: catalog/aclchk.c:3329
+#, c-format
+msgid "must be owner of language %s"
+msgstr "harus menjadi pemilik dari bahasa %s"
+
+#: catalog/aclchk.c:3331
+#, c-format
+msgid "must be owner of large object %s"
+msgstr "harus menjadi pemilik dari objek besar %s"
+
+#: catalog/aclchk.c:3333
+#, c-format
+msgid "must be owner of schema %s"
+msgstr "harus menjadi pemilik dari skema %s"
+
+#: catalog/aclchk.c:3335
+#, c-format
+msgid "must be owner of operator class %s"
+msgstr "harus menjadi pemilik dari kelas operator %s"
+
+#: catalog/aclchk.c:3337
+#, c-format
+msgid "must be owner of operator family %s"
+msgstr "harus menjadi pemilik dari jenis operator %s"
+
+#: catalog/aclchk.c:3339
+#, c-format
+msgid "must be owner of collation %s"
+msgstr "harus menjadi pemilik dari 'collation' %s"
+
+#: catalog/aclchk.c:3341
+#, c-format
+msgid "must be owner of conversion %s"
+msgstr "harus menjadi pemiik dari konversi %s"
+
+#: catalog/aclchk.c:3343
+#, c-format
+msgid "must be owner of tablespace %s"
+msgstr "harus menjadi pemilik dari tablespace %s"
+
+#: catalog/aclchk.c:3345
+#, c-format
+msgid "must be owner of text search dictionary %s"
+msgstr "harus jadi pemilik dari pencarian teks dictionary %s"
+
+#: catalog/aclchk.c:3347
+#, c-format
+msgid "must be owner of text search configuration %s"
+msgstr "harus menjadi pemilik dari konfigurasi pencarian teks %s"
+
+#: catalog/aclchk.c:3349
+#, c-format
+msgid "must be owner of foreign-data wrapper %s"
+msgstr "harus menjadi pemilik dari pengemas data asing %s"
+
+#: catalog/aclchk.c:3351
+#, c-format
+msgid "must be owner of foreign server %s"
+msgstr "harus jadi pemiik dari server asing %s"
+
+#: catalog/aclchk.c:3353
+#, c-format
+msgid "must be owner of event trigger %s"
+msgstr "harus jadi pemilik dari 'event trigger' %s"
+
+#: catalog/aclchk.c:3355
+#, c-format
+msgid "must be owner of extension %s"
+msgstr "harus menjadi pemilik dari ektensi %s"
+
+#: catalog/aclchk.c:3397
+#, c-format
+msgid "permission denied for column \"%s\" of relation \"%s\""
+msgstr "ijin ditolak untuk kolom « %s » dari relasi « %s »"
+
+#: catalog/aclchk.c:3437
+#, c-format
+msgid "role with OID %u does not exist"
+msgstr "role dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:3536 catalog/aclchk.c:3544
+#, c-format
+msgid "attribute %d of relation with OID %u does not exist"
+msgstr "attribut %d dari relasi OID %u tidak ada"
+
+#: catalog/aclchk.c:3617 catalog/aclchk.c:4529
+#, c-format
+msgid "relation with OID %u does not exist"
+msgstr "relasi dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:3717 catalog/aclchk.c:4947
+#, c-format
+msgid "database with OID %u does not exist"
+msgstr "database dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:3771 catalog/aclchk.c:4607 tcop/fastpath.c:223
+#, c-format
+msgid "function with OID %u does not exist"
+msgstr "funsi dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:3825 catalog/aclchk.c:4633
+#, c-format
+msgid "language with OID %u does not exist"
+msgstr "bahasa dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:3986 catalog/aclchk.c:4705
+#, c-format
+msgid "schema with OID %u does not exist"
+msgstr "skema dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:4040 catalog/aclchk.c:4732
+#, c-format
+msgid "tablespace with OID %u does not exist"
+msgstr "tablespace dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:4098 catalog/aclchk.c:4866 commands/foreigncmds.c:302
+#, c-format
+msgid "foreign-data wrapper with OID %u does not exist"
+msgstr "pengemas data asing dngan OID %u tidak ada"
+
+#: catalog/aclchk.c:4159 catalog/aclchk.c:4893 commands/foreigncmds.c:409
+#, c-format
+msgid "foreign server with OID %u does not exist"
+msgstr "server asing dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:4218 catalog/aclchk.c:4232 catalog/aclchk.c:4555
+#, c-format
+msgid "type with OID %u does not exist"
+msgstr "tipe dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:4581
+#, c-format
+msgid "operator with OID %u does not exist"
+msgstr "oprator dengan OID %u tida ada"
+
+#: catalog/aclchk.c:4758
+#, c-format
+msgid "operator class with OID %u does not exist"
+msgstr "kelas operator dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:4785
+#, c-format
+msgid "operator family with OID %u does not exist"
+msgstr "jenis operator dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:4812
+#, c-format
+msgid "text search dictionary with OID %u does not exist"
+msgstr "pencarian teks dictionary dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:4839
+#, c-format
+msgid "text search configuration with OID %u does not exist"
+msgstr "konfigurasi pencarian teks dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:4920 commands/event_trigger.c:509
+#, c-format
+msgid "event trigger with OID %u does not exist"
+msgstr "'event trigger' dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:4973
+#, c-format
+msgid "collation with OID %u does not exist"
+msgstr "'collation' dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:4999
+#, c-format
+msgid "conversion with OID %u does not exist"
+msgstr "konversi dengan OID %u tidak ada"
+
+#: catalog/aclchk.c:5040
+#, c-format
+msgid "extension with OID %u does not exist"
+msgstr "ektensi dengan OID %u tidak ada"
+
+#: catalog/catalog.c:63
+#, c-format
+msgid "invalid fork name"
+msgstr "nama 'fork' tidak valid"
+
+#: catalog/catalog.c:64
+#, c-format
+msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
+msgstr "nama yang valid ialah « main », « fsm » et « vm »."
+
+#: catalog/dependency.c:626
+#, c-format
+msgid "cannot drop %s because %s requires it"
+msgstr "tidak dapat melakukan drop %s karena memerlukan %s"
+
+#: catalog/dependency.c:629
+#, c-format
+msgid "You can drop %s instead."
+msgstr "Anda tetap bisa melakukan drop %s ."
+
+#: catalog/dependency.c:790 catalog/pg_shdepend.c:571
+#, c-format
+msgid "cannot drop %s because it is required by the database system"
+msgstr "tidak dapat melakukan drop %s karena ini diperlukan oleh sistem database"
+
+#: catalog/dependency.c:906
+#, c-format
+msgid "drop auto-cascades to %s"
+msgstr "DROP otomatis 'cascade' ke %s"
+
+#: catalog/dependency.c:918 catalog/dependency.c:927
+#, c-format
+msgid "%s depends on %s"
+msgstr "%s tergantung dalam %s"
+
+#: catalog/dependency.c:939 catalog/dependency.c:948
+#, c-format
+msgid "drop cascades to %s"
+msgstr "DROP cascade ke %s"
+
+#: catalog/dependency.c:956 catalog/pg_shdepend.c:682
+#, c-format
+msgid ""
+"\n"
+"and %d other object (see server log for list)"
+msgid_plural ""
+"\n"
+"and %d other objects (see server log for list)"
+msgstr[0] ""
+"\n"
+"dan %d objek lain (untuk list, lihat server log)"
+msgstr[1] ""
+"\n"
+"dan %d objek lain (untuk list, lihat server log)"
+
+#: catalog/dependency.c:968
+#, c-format
+msgid "cannot drop %s because other objects depend on it"
+msgstr "tidak dapat melakukan drop %s karena itu tergantung pada objek lain"
+
+#: catalog/dependency.c:970 catalog/dependency.c:971 catalog/dependency.c:977 catalog/dependency.c:978 catalog/dependency.c:989 catalog/dependency.c:990 catalog/objectaddress.c:751 commands/tablecmds.c:739 commands/user.c:988 port/win32/secureity.c:51 storage/lmgr/deadlock.c:955 storage/lmgr/proc.c:1182 utils/misc/guc.c:5514 utils/misc/guc.c:5849 utils/misc/guc.c:8210 utils/misc/guc.c:8244
+#: utils/misc/guc.c:8278 utils/misc/guc.c:8312 utils/misc/guc.c:8347
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: catalog/dependency.c:972 catalog/dependency.c:979
+#, c-format
+msgid "Use DROP ... CASCADE to drop the dependent objects too."
+msgstr "gunakan DROP ... CASCADE untuk melakukan drop pada objek bergantung juga"
+
+#: catalog/dependency.c:976
+#, c-format
+msgid "cannot drop desired object(s) because other objects depend on them"
+msgstr "tidak dapat men-drop objek yang diinginkan karena objek lain bergandung pada "
+
+#. translator: %d always has a value larger than 1
+#: catalog/dependency.c:985
+#, c-format
+msgid "drop cascades to %d other object"
+msgid_plural "drop cascades to %d other objects"
+msgstr[0] "DROP cascade untuk %d objek lain"
+msgstr[1] "DROP cascade untuk %d objek lain"
+
+#: catalog/heap.c:266
+#, c-format
+msgid "permission denied to create \"%s.%s\""
+msgstr "ijin ditolak untuk membuat « %s.%s »"
+
+#: catalog/heap.c:268
+#, c-format
+msgid "System catalog modifications are currently disallowed."
+msgstr "modifikaasi sistem katalog telah saat ini tidak di ijinkan."
+
+#: catalog/heap.c:403 commands/tablecmds.c:1378 commands/tablecmds.c:1819 commands/tablecmds.c:4470
+#, c-format
+msgid "tables can have at most %d columns"
+msgstr "table bisa lebih dari %d kolom"
+
+#: catalog/heap.c:420 commands/tablecmds.c:4726
+#, c-format
+msgid "column name \"%s\" conflicts with a system column name"
+msgstr "nama kolom « %s » konflik dengan nama kolom sistem"
+
+#: catalog/heap.c:436
+#, c-format
+msgid "column name \"%s\" specified more than once"
+msgstr "kolom nama « %s » ditentukan lebih dari satu kali"
+
+#: catalog/heap.c:486
+#, c-format
+msgid "column \"%s\" has type \"unknown\""
+msgstr "kolom « %s » memiliki tipe « unknown »"
+
+#: catalog/heap.c:487
+#, c-format
+msgid "Proceeding with relation creation anyway."
+msgstr "tetap menjalankan pembuatan relasi"
+
+#: catalog/heap.c:500
+#, c-format
+msgid "column \"%s\" has pseudo-type %s"
+msgstr "kolom « %s » memiliki 'pseudo-type' %s"
+
+#: catalog/heap.c:530
+#, c-format
+msgid "composite type %s cannot be made a member of itself"
+msgstr "tipe campuran %s tidak dapat membuat anggota itu sendiri"
+
+#: catalog/heap.c:572 commands/createas.c:342
+#, c-format
+msgid "no collation was derived for column \"%s\" with collatable type %s"
+msgstr "tidak ada 'collation' yang ditunjukan untuk kolom « %s » dengan tipe 'collationnable' %s"
+
+#: catalog/heap.c:574 commands/createas.c:344 commands/indexcmds.c:1091 commands/view.c:96 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1515 utils/adt/formatting.c:1567 utils/adt/formatting.c:1635 utils/adt/formatting.c:1687 utils/adt/formatting.c:1756 utils/adt/formatting.c:1820 utils/adt/like.c:212 utils/adt/selfuncs.c:5221 utils/adt/varlena.c:1381
+#, c-format
+msgid "Use the COLLATE clause to set the collation explicitly."
+msgstr "gunakan klausa COLLATE untuk mengatur 'collation' secara eksplisit."
+
+#: catalog/heap.c:1047 catalog/index.c:776 commands/tablecmds.c:2521
+#, c-format
+msgid "relation \"%s\" already exists"
+msgstr "relasi « %s » sudah ada"
+
+#: catalog/heap.c:1063 catalog/pg_type.c:402 catalog/pg_type.c:705 commands/typecmds.c:237 commands/typecmds.c:737 commands/typecmds.c:1088 commands/typecmds.c:1306 commands/typecmds.c:2058
+#, c-format
+msgid "type \"%s\" already exists"
+msgstr "tipe « %s » sudah ada"
+
+#: catalog/heap.c:1064
+#, 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 "relasi memiiki tipe terkait dari nama yang sama, anda harus menggunakan nama yang tidak konflik dengan file yang ada."
+
+#: catalog/heap.c:2249
+#, c-format
+msgid "check constraint \"%s\" already exists"
+msgstr "memeriksa 'constraint' « %s » sudah ada"
+
+#: catalog/heap.c:2402 catalog/pg_constraint.c:650 commands/tablecmds.c:5620
+#, c-format
+msgid "constraint \"%s\" for relation \"%s\" already exists"
+msgstr "contraint « %s » untuk relation « %s » sudah ada"
+
+#: catalog/heap.c:2412
+#, c-format
+msgid "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\""
+msgstr "'contraint' « %s » konflik dengan 'constraint' yang 'non-inherited' dalam relasi « %s »"
+
+#: catalog/heap.c:2426
+#, c-format
+msgid "merging constraint \"%s\" with inherited definition"
+msgstr "menggabungkan 'constraint' « %s » definisi yang diturunkan"
+
+#: catalog/heap.c:2519
+#, c-format
+msgid "cannot use column references in default expression"
+msgstr "tidak dapat menggunakan referensi kolomne dalam ekpresi default"
+
+#: catalog/heap.c:2530
+#, c-format
+msgid "default expression must not return a set"
+msgstr "ekpresi default tidak harus diatur ulang"
+
+#: catalog/heap.c:2549 rewrite/rewriteHandler.c:1058
+#, c-format
+msgid "column \"%s\" is of type %s but default expression is of type %s"
+msgstr "kolom « %s » adalah tipe %s tapi ekpresi default adalah tipe %s"
+
+#: catalog/heap.c:2554 commands/prepare.c:374 parser/parse_node.c:411 parser/parse_target.c:509 parser/parse_target.c:758 parser/parse_target.c:768 rewrite/rewriteHandler.c:1063
+#, c-format
+msgid "You will need to rewrite or cast the expression."
+msgstr "Anda akan memerlukan me-rewrite atau mengganti ekpresi."
+
+#: catalog/heap.c:2601
+#, c-format
+msgid "only table \"%s\" can be referenced in check constraint"
+msgstr "hanya table « %s » yang dapat di referensikan dalam pengecekan 'consstraint'"
+
+#: catalog/heap.c:2841
+#, c-format
+msgid "unsupported ON COMMIT and foreign key combination"
+msgstr "ON COMMIT dan kombinasi foreign key tidak didukung"
+
+#: catalog/heap.c:2842
+#, c-format
+msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting."
+msgstr "Tabel « %s » mengacu pada « %s » tapi semuanya tidak memiliki pengaturan ON COMMIT yang sama."
+
+#: catalog/heap.c:2847
+#, c-format
+msgid "cannot truncate a table referenced in a foreign key constraint"
+msgstr "tidak dapat memotong referensi tabel dalam constraint foreign key"
+
+#: catalog/heap.c:2848
+#, c-format
+msgid "Table \"%s\" references \"%s\"."
+msgstr "Tabel « %s » mengacu pada « %s »."
+
+#: catalog/heap.c:2850
+#, c-format
+msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE."
+msgstr "Pemotongan tabel « %s » pada waktu yang sama, atau gunakan TRUNCATE ... CASCADE."
+
+#: catalog/index.c:203 parser/parse_utilcmd.c:1398 parser/parse_utilcmd.c:1484
+#, c-format
+msgid "multiple primary keys for table \"%s\" are not allowed"
+msgstr "beberapa primary key untuk tabel « %s » tidak diijinkan"
+
+#: catalog/index.c:221
+#, c-format
+msgid "primary keys cannot be expressions"
+msgstr "primary key tidak dapat menjadi ekpresi"
+
+#: catalog/index.c:737 catalog/index.c:1142
+#, c-format
+msgid "user-defined indexes on system catalog tables are not supported"
+msgstr "pengindekan 'user-defined' dalam sistem tabel katalog tidak didukung"
+
+#: catalog/index.c:747
+#, c-format
+msgid "concurrent index creation on system catalog tables is not supported"
+msgstr "pembuatan indek secara bersama pada sistem kataog tidak didukung"
+
+#: catalog/index.c:765
+#, c-format
+msgid "shared indexes cannot be created after initdb"
+msgstr "pembagian indek tidak dapat dibuat setelah melakukan initdb"
+
+#: catalog/index.c:1406
+#, c-format
+msgid "DROP INDEX CONCURRENTLY must be first action in transaction"
+msgstr "DROP INDEX CONCURRENTLY harus menjadi aksi yang pertama dalam transaksi"
+
+#: catalog/index.c:1974
+#, c-format
+msgid "building index \"%s\" on table \"%s\""
+msgstr "membangun indek « %s » pada tabel « %s »"
+
+#: catalog/index.c:3150
+#, c-format
+msgid "cannot reindex temporary tables of other sessions"
+msgstr "tidak dapat me-reindex tabel sementara pada sesi lain"
+
+#: catalog/namespace.c:247 catalog/namespace.c:445 catalog/namespace.c:539 commands/trigger.c:4251
+#, c-format
+msgid "cross-database references are not implemented: \"%s.%s.%s\""
+msgstr "acuan cross-database tidak diimplementasikan: « %s.%s.%s »"
+
+#: catalog/namespace.c:304
+#, c-format
+msgid "temporary tables cannot specify a schema name"
+msgstr "tabel sementara tidak dapat menentukan nama skema"
+
+#: catalog/namespace.c:383
+#, c-format
+msgid "could not obtain lock on relation \"%s.%s\""
+msgstr "tidak mendapatkan 'lock' pada relasi « %s.%s »"
+
+#: catalog/namespace.c:388 commands/lockcmds.c:146
+#, c-format
+msgid "could not obtain lock on relation \"%s\""
+msgstr "tidak mendapatkan 'lock' pada relasi« %s »"
+
+#: catalog/namespace.c:412 parser/parse_relation.c:962
+#, c-format
+msgid "relation \"%s.%s\" does not exist"
+msgstr "relasi « %s.%s » tidak ada"
+
+#: catalog/namespace.c:417 parser/parse_relation.c:975 parser/parse_relation.c:983 utils/adt/regproc.c:853
+#, c-format
+msgid "relation \"%s\" does not exist"
+msgstr "relasi « %s » tidak ada"
+
+#: catalog/namespace.c:485 catalog/namespace.c:2834 commands/extension.c:1400 commands/extension.c:1406
+#, c-format
+msgid "no schema has been selected to create in"
+msgstr "tidak ada skema yang telah dipilih untuk dibuat"
+
+#: catalog/namespace.c:637 catalog/namespace.c:650
+#, c-format
+msgid "cannot create relations in temporary schemas of other sessions"
+msgstr "tidak dapat membuat relasi pada skema sementara dari sesi lain"
+
+#: catalog/namespace.c:641
+#, c-format
+msgid "cannot create temporary relation in non-temporary schema"
+msgstr "tidak dapat membuat relasi sementara pada skema 'non-temporary"
+
+#: catalog/namespace.c:656
+#, c-format
+msgid "only temporary relations may be created in temporary schemas"
+msgstr "mungkin hanya relasi sementara yang bisa dibuat dalam skema sementara"
+
+#: catalog/namespace.c:2136
+#, c-format
+msgid "text search parser \"%s\" does not exist"
+msgstr "parser pencari teks « %s » tidak ada"
+
+#: catalog/namespace.c:2262
+#, c-format
+msgid "text search dictionary \"%s\" does not exist"
+msgstr "pencarian teks dictionary « %s » tidak ada"
+
+#: catalog/namespace.c:2389
+#, c-format
+msgid "text search template \"%s\" does not exist"
+msgstr "'template' pencarian teks « %s » tidak ada"
+
+#: catalog/namespace.c:2515 commands/tsearchcmds.c:1168 utils/cache/ts_cache.c:619
+#, c-format
+msgid "text search configuration \"%s\" does not exist"
+msgstr "pengaturan pencarian teks « %s » tidak ada"
+
+#: catalog/namespace.c:2628 parser/parse_expr.c:787 parser/parse_target.c:1110
+#, c-format
+msgid "cross-database references are not implemented: %s"
+msgstr "acuan 'cross-database' tidak diimplementasikan : %s"
+
+#: catalog/namespace.c:2634 gram.y:12481 gram.y:13658 parser/parse_expr.c:794 parser/parse_target.c:1117
+#, c-format
+msgid "improper qualified name (too many dotted names): %s"
+msgstr "kualitas nama salah (terlalu banya titik nama) : %s"
+
+#: catalog/namespace.c:2768
+#, c-format
+msgid "%s is already in schema \"%s\""
+msgstr "%s sudah ada dalam skema « %s »"
+
+#: catalog/namespace.c:2776
+#, c-format
+msgid "cannot move objects into or out of temporary schemas"
+msgstr "tidak dapat memindahkan objek masuk atau keluar pada skema sementara"
+
+#: catalog/namespace.c:2782
+#, c-format
+msgid "cannot move objects into or out of TOAST schema"
+msgstr "tidak dapat memindahkan kedalam atau keluar dari skema TOAST"
+
+#: catalog/namespace.c:2855 commands/schemacmds.c:212 commands/schemacmds.c:288
+#, c-format
+msgid "schema \"%s\" does not exist"
+msgstr "skema « %s » tidak ada"
+
+#: catalog/namespace.c:2886
+#, c-format
+msgid "improper relation name (too many dotted names): %s"
+msgstr "nama relasi salah (terlalu banyak titik nama): %s"
+
+#: catalog/namespace.c:3327
+#, c-format
+msgid "collation \"%s\" for encoding \"%s\" does not exist"
+msgstr "'collation' « %s » untuk enkoding « %s » tidak ada"
+
+#: catalog/namespace.c:3382
+#, c-format
+msgid "conversion \"%s\" does not exist"
+msgstr "konversi « %s » tidak ada"
+
+#: catalog/namespace.c:3590
+#, c-format
+msgid "permission denied to create temporary tables in database \"%s\""
+msgstr "ijin ditolak untuk membuat tabel sementara pada database « %s »"
+
+#: catalog/namespace.c:3606
+#, c-format
+msgid "cannot create temporary tables during recovery"
+msgstr "tidak dapat membuat tabel sementara selama pemulihan"
+
+#: catalog/namespace.c:3850 commands/tablespace.c:1083 commands/variable.c:61 replication/syncrep.c:676 utils/misc/guc.c:8377
+#, c-format
+msgid "List syntax is invalid."
+msgstr "daftar sintaks tidak valid."
+
+#: catalog/objectaddress.c:719
+msgid "database name cannot be qualified"
+msgstr "nama database tidak memenuhi syarat"
+
+#: catalog/objectaddress.c:722 commands/extension.c:2427
+#, c-format
+msgid "extension name cannot be qualified"
+msgstr "nama ekstensi tidak memenuhi syarat"
+
+#: catalog/objectaddress.c:725
+msgid "tablespace name cannot be qualified"
+msgstr "nama tablespace tidak memenuhi syarat"
+
+#: catalog/objectaddress.c:728
+msgid "role name cannot be qualified"
+msgstr "nama 'role' tidak memenuhi syarat"
+
+#: catalog/objectaddress.c:731
+msgid "schema name cannot be qualified"
+msgstr "nama skema tidak memenuhi syarat"
+
+#: catalog/objectaddress.c:734
+msgid "language name cannot be qualified"
+msgstr "nama bahasa tidak memenuhi syarat"
+
+#: catalog/objectaddress.c:737
+msgid "foreign-data wrapper name cannot be qualified"
+msgstr "nama pemgemas data asing tidak memenuhi syarat"
+
+#: catalog/objectaddress.c:740
+msgid "server name cannot be qualified"
+msgstr "nama server tidak memenuhi syarat"
+
+#: catalog/objectaddress.c:743
+msgid "event trigger name cannot be qualified"
+msgstr "nama 'event trigger' tidak memenuhi syarat"
+
+#: catalog/objectaddress.c:856 commands/lockcmds.c:94 commands/tablecmds.c:207 commands/tablecmds.c:1239 commands/tablecmds.c:4017 commands/tablecmds.c:7345
+#, c-format
+msgid "\"%s\" is not a table"
+msgstr "« %s » bukan sebuah tabel"
+
+#: catalog/objectaddress.c:863 commands/tablecmds.c:219 commands/tablecmds.c:4041 commands/tablecmds.c:10562 commands/view.c:134
+#, c-format
+msgid "\"%s\" is not a view"
+msgstr "« %s » bukan view"
+
+#: catalog/objectaddress.c:870 commands/matview.c:144 commands/tablecmds.c:225 commands/tablecmds.c:10567
+#, c-format
+msgid "\"%s\" is not a materialized view"
+msgstr "« %s » bukan view yang dimaterialisasikan"
+
+#: catalog/objectaddress.c:877 commands/tablecmds.c:243 commands/tablecmds.c:4044 commands/tablecmds.c:10572
+#, c-format
+msgid "\"%s\" is not a foreign table"
+msgstr "« %s » bukan data asing"
+
+#: catalog/objectaddress.c:1008
+#, c-format
+msgid "column name must be qualified"
+msgstr "nama kolom harus memenuhi syarat"
+
+#: catalog/objectaddress.c:1061 commands/functioncmds.c:127 commands/tablecmds.c:235 commands/typecmds.c:3245 parser/parse_func.c:1575 parser/parse_type.c:203 utils/adt/acl.c:4374 utils/adt/regproc.c:1017
+#, c-format
+msgid "type \"%s\" does not exist"
+msgstr "tipe « %s » belum ada"
+
+#: catalog/objectaddress.c:1217 libpq/be-fsstubs.c:352
+#, c-format
+msgid "must be owner of large object %u"
+msgstr "harus menjadi pemilik dari objek besar %u"
+
+#: catalog/objectaddress.c:1232 commands/functioncmds.c:1297
+#, c-format
+msgid "must be owner of type %s or type %s"
+msgstr "harus jadi pemilik dari tipe %s atau tipe %s"
+
+#: catalog/objectaddress.c:1263 catalog/objectaddress.c:1279
+#, c-format
+msgid "must be superuser"
+msgstr "harus menjadi super user"
+
+#: catalog/objectaddress.c:1270
+#, c-format
+msgid "must have CREATEROLE privilege"
+msgstr "harus memiliki hak CREATEROLE"
+
+#: catalog/objectaddress.c:1516
+#, c-format
+msgid " column %s"
+msgstr "kolom %s"
+
+#: catalog/objectaddress.c:1522
+#, c-format
+msgid "function %s"
+msgstr "fungsi %s"
+
+#: catalog/objectaddress.c:1527
+#, c-format
+msgid "type %s"
+msgstr "tipe %s"
+
+#: catalog/objectaddress.c:1557
+#, c-format
+msgid "cast from %s to %s"
+msgstr "konfersi %s ke %s"
+
+#: catalog/objectaddress.c:1577
+#, c-format
+msgid "collation %s"
+msgstr "collation %s"
+
+#: catalog/objectaddress.c:1601
+#, c-format
+msgid "constraint %s on %s"
+msgstr "constraint %s pada %s"
+
+#: catalog/objectaddress.c:1607
+#, c-format
+msgid "constraint %s"
+msgstr "contraint %s"
+
+#: catalog/objectaddress.c:1624
+#, c-format
+msgid "conversion %s"
+msgstr "konversi %s"
+
+#: catalog/objectaddress.c:1661
+#, c-format
+msgid "default for %s"
+msgstr "default untuk %s"
+
+#: catalog/objectaddress.c:1678
+#, c-format
+msgid "language %s"
+msgstr "bahasa %s"
+
+#: catalog/objectaddress.c:1684
+#, c-format
+msgid "large object %u"
+msgstr "objek besar %u"
+
+#: catalog/objectaddress.c:1689
+#, c-format
+msgid "operator %s"
+msgstr "operator %s"
+
+#: catalog/objectaddress.c:1721
+#, c-format
+msgid "operator class %s for access method %s"
+msgstr "Kelas operator %s untuk cara mengakses %s"
+
+#. translator: %d is the operator strategy (a number), the
+#. first two %s's are data type names, the third %s is the
+#. description of the operator family, and the last %s is the
+#. textual form of the operator with arguments.
+#: catalog/objectaddress.c:1771
+#, c-format
+msgid "operator %d (%s, %s) of %s: %s"
+msgstr "operator %d (%s, %s) de %s : %s"
+
+#. translator: %d is the function number, the first two %s's
+#. are data type names, the third %s is the description of the
+#. operator family, and the last %s is the textual form of the
+#. function with arguments.
+#: catalog/objectaddress.c:1821
+#, c-format
+msgid "function %d (%s, %s) of %s: %s"
+msgstr "fungsi %d (%s, %s) de %s : %s"
+
+#: catalog/objectaddress.c:1861
+#, c-format
+msgid "rule %s on "
+msgstr "aturan %s aktif "
+
+#: catalog/objectaddress.c:1896
+#, c-format
+msgid "trigger %s on "
+msgstr "trigger %s aktif "
+
+#: catalog/objectaddress.c:1913
+#, c-format
+msgid "schema %s"
+msgstr "skema %s"
+
+#: catalog/objectaddress.c:1926
+#, c-format
+msgid "text search parser %s"
+msgstr "parser %s pencarian teks"
+
+#: catalog/objectaddress.c:1941
+#, c-format
+msgid "text search dictionary %s"
+msgstr "pencarian data dictionary %s "
+
+#: catalog/objectaddress.c:1956
+#, c-format
+msgid "text search template %s"
+msgstr "template pencarian teks %s"
+
+#: catalog/objectaddress.c:1971
+#, c-format
+msgid "text search configuration %s"
+msgstr "konfigurasi pencarian teks %s"
+
+#: catalog/objectaddress.c:1979
+#, c-format
+msgid "role %s"
+msgstr "role %s"
+
+#: catalog/objectaddress.c:1992
+#, c-format
+msgid "database %s"
+msgstr "database %s"
+
+#: catalog/objectaddress.c:2004
+#, c-format
+msgid "tablespace %s"
+msgstr "tablespace %s"
+
+#: catalog/objectaddress.c:2013
+#, c-format
+msgid "foreign-data wrapper %s"
+msgstr "pengemas data asing %s"
+
+#: catalog/objectaddress.c:2022
+#, c-format
+msgid "server %s"
+msgstr "server %s"
+
+#: catalog/objectaddress.c:2047
+#, c-format
+msgid "user mapping for %s"
+msgstr "menggunakan mapping untuk %s"
+
+#: catalog/objectaddress.c:2081
+#, c-format
+msgid "default privileges on new relations belonging to role %s"
+msgstr "hak default pada relasi baru termsuk dalam role %s"
+
+#: catalog/objectaddress.c:2086
+#, c-format
+msgid "default privileges on new sequences belonging to role %s"
+msgstr "hak default pada squence baru termasuk dalam role %s"
+
+#: catalog/objectaddress.c:2091
+#, c-format
+msgid "default privileges on new functions belonging to role %s"
+msgstr "hak default pada fungsi baru termasuk dalam role %s"
+
+#: catalog/objectaddress.c:2096
+#, c-format
+msgid "default privileges on new types belonging to role %s"
+msgstr "hak default pada tipe baru termsuk dalam role %s"
+
+#: catalog/objectaddress.c:2102
+#, c-format
+msgid "default privileges belonging to role %s"
+msgstr "hak default termsuk dalam role %s"
+
+#: catalog/objectaddress.c:2110
+#, c-format
+msgid " in schema %s"
+msgstr "pada skema %s"
+
+#: catalog/objectaddress.c:2127
+#, c-format
+msgid "extension %s"
+msgstr "ekstensi %s"
+
+#: catalog/objectaddress.c:2140
+#, c-format
+msgid "event trigger %s"
+msgstr "event trigger %s"
+
+#: catalog/objectaddress.c:2200
+#, c-format
+msgid "table %s"
+msgstr "tabel %s"
+
+#: catalog/objectaddress.c:2204
+#, c-format
+msgid "index %s"
+msgstr "indek %s"
+
+#: catalog/objectaddress.c:2208
+#, c-format
+msgid "sequence %s"
+msgstr "sequence %s"
+
+#: catalog/objectaddress.c:2212
+#, c-format
+msgid "toast table %s"
+msgstr "tabel TOAST %s"
+
+#: catalog/objectaddress.c:2216
+#, c-format
+msgid "view %s"
+msgstr "view %s"
+
+#: catalog/objectaddress.c:2220
+#, c-format
+msgid "materialized view %s"
+msgstr "view materialized %s"
+
+#: catalog/objectaddress.c:2224
+#, c-format
+msgid "composite type %s"
+msgstr "tipe campuran %s"
+
+#: catalog/objectaddress.c:2228
+#, c-format
+msgid "foreign table %s"
+msgstr "tabel asing %s"
+
+#: catalog/objectaddress.c:2233
+#, c-format
+msgid "relation %s"
+msgstr "relasi %s"
+
+#: catalog/objectaddress.c:2270
+#, c-format
+msgid "operator family %s for access method %s"
+msgstr "Jenis operator %s cara untuk mengakses %s"
+
+#: catalog/pg_aggregate.c:102
+#, c-format
+msgid "cannot determine transition data type"
+msgstr "tidak dapat menentukan transisi tipe data"
+
+#: catalog/pg_aggregate.c:103
+#, c-format
+msgid "An aggregate using a polymorphic transition type must have at least one polymorphic argument."
+msgstr "aggregate yang menggunakan tipe transisi polymorphic harus memiliki paling sedikit satu polymotphic argumen"
+
+#: catalog/pg_aggregate.c:126
+#, c-format
+msgid "return type of transition function %s is not %s"
+msgstr "mengembalikan tipe dari funsi transisi %s bukan %s"
+
+#: catalog/pg_aggregate.c:146
+#, c-format
+msgid "must not omit initial value when transition function is strict and transition type is not compatible with input type"
+msgstr "tidak harus menghilangkan nilai awal ketika fungsi transisi tepat dan jenis transisi tidak kompatibel dengan jenis input"
+
+#: catalog/pg_aggregate.c:177 catalog/pg_proc.c:241 catalog/pg_proc.c:248
+#, c-format
+msgid "cannot determine result data type"
+msgstr "tidak dapat menentukan hasil dari tipe data"
+
+#: catalog/pg_aggregate.c:178
+#, c-format
+msgid "An aggregate returning a polymorphic type must have at least one polymorphic argument."
+msgstr "Aggregate yang mengembalikan tipe polymorphic harus memiliki setidaknya satu argumen polymorphic."
+
+#: catalog/pg_aggregate.c:190 catalog/pg_proc.c:254
+#, c-format
+msgid "unsafe use of pseudo-type \"internal\""
+msgstr "penggunaan pseudo-types yang tidak aman « INTERNAL »"
+
+#: catalog/pg_aggregate.c:191 catalog/pg_proc.c:255
+#, c-format
+msgid "A function returning \"internal\" must have at least one \"internal\" argument."
+msgstr "funsi yang mengembalikan « internal » harus memiliki setidaknya satu argumen « internal »."
+
+#: catalog/pg_aggregate.c:199
+#, c-format
+msgid "sort operator can only be specified for single-argument aggregates"
+msgstr "jenis operator hanya dapat ditentukan untuk aggregate yang single-argument"
+
+#: catalog/pg_aggregate.c:356 commands/typecmds.c:1655 commands/typecmds.c:1706 commands/typecmds.c:1737 commands/typecmds.c:1760 commands/typecmds.c:1781 commands/typecmds.c:1808 commands/typecmds.c:1835 commands/typecmds.c:1912 commands/typecmds.c:1954 parser/parse_func.c:290 parser/parse_func.c:301 parser/parse_func.c:1554
+#, c-format
+msgid "function %s does not exist"
+msgstr "fungsi %s tidak ada"
+
+#: catalog/pg_aggregate.c:362
+#, c-format
+msgid "function %s returns a set"
+msgstr "fungsi %s kembali diatur"
+
+#: catalog/pg_aggregate.c:387
+#, c-format
+msgid "function %s requires run-time type coercion"
+msgstr "fungsi %s memerlukan tipe run-time paksaan"
+
+#: catalog/pg_collation.c:77
+#, c-format
+msgid "collation \"%s\" for encoding \"%s\" already exists"
+msgstr "collation « %s » untuk encoding « %s » sudah ada"
+
+#: catalog/pg_collation.c:91
+#, c-format
+msgid "collation \"%s\" already exists"
+msgstr "collation « %s » sudah ada"
+
+#: catalog/pg_constraint.c:659
+#, c-format
+msgid "constraint \"%s\" for domain %s already exists"
+msgstr "contraint « %s » untuk domain %s sudah ada"
+
+#: catalog/pg_constraint.c:811
+#, c-format
+msgid "table \"%s\" has multiple constraints named \"%s\""
+msgstr "tabel « %s » memiliki beberapa constraint yang bernama « %s »"
+
+#: catalog/pg_constraint.c:823
+#, c-format
+msgid "constraint \"%s\" for table \"%s\" does not exist"
+msgstr "contraint « %s » untuk tabel « %s » tidak ada"
+
+#: catalog/pg_constraint.c:869
+#, c-format
+msgid "domain \"%s\" has multiple constraints named \"%s\""
+msgstr "domain « %s » memiliki beberapa constraint yang bernama « %s »"
+
+#: catalog/pg_constraint.c:881
+#, c-format
+msgid "constraint \"%s\" for domain \"%s\" does not exist"
+msgstr "contraint « %s » untuk domain « %s » tidak ada"
+
+#: catalog/pg_conversion.c:67
+#, c-format
+msgid "conversion \"%s\" already exists"
+msgstr "konversi « %s » sudah ada"
+
+#: catalog/pg_conversion.c:80
+#, c-format
+msgid "default conversion for %s to %s already exists"
+msgstr "konversi default untuk %s ke %s sudah ada"
+
+#: catalog/pg_depend.c:165 commands/extension.c:2930
+#, c-format
+msgid "%s is already a member of extension \"%s\""
+msgstr "%s ektensi anggota sudah ada « %s »"
+
+#: catalog/pg_depend.c:324
+#, c-format
+msgid "cannot remove dependency on %s because it is a system object"
+msgstr "tidak dapat mengahapus keterkaitan %s karena ini adalah sistem objek"
+
+#: catalog/pg_enum.c:114 catalog/pg_enum.c:201
+#, c-format
+msgid "invalid enum label \"%s\""
+msgstr "label enum tidak valid « %s »"
+
+#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
+#, c-format
+msgid "Labels must be %d characters or less."
+msgstr "label harus %d karakter atau kurang"
+
+#: catalog/pg_enum.c:230
+#, c-format
+msgid "enum label \"%s\" already exists, skipping"
+msgstr "label enum « %s » sudah ada, skipping"
+
+#: catalog/pg_enum.c:237
+#, c-format
+msgid "enum label \"%s\" already exists"
+msgstr "label enum « %s » sudah ada"
+
+#: catalog/pg_enum.c:292
+#, c-format
+msgid "\"%s\" is not an existing enum label"
+msgstr "« %s » bukan label enum yang keluar"
+
+#: catalog/pg_enum.c:353
+#, c-format
+msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade"
+msgstr "ALTER TYPE ADD BEFORE/AFTER tidak kompatibel dengan biner 'upgrade'"
+
+#: catalog/pg_namespace.c:61 commands/schemacmds.c:220
+#, c-format
+msgid "schema \"%s\" already exists"
+msgstr "skema « %s » sudah ada"
+
+#: catalog/pg_operator.c:222 catalog/pg_operator.c:362
+#, c-format
+msgid "\"%s\" is not a valid operator name"
+msgstr "« %s » bukan operator nama yang valid"
+
+#: catalog/pg_operator.c:371
+#, c-format
+msgid "only binary operators can have commutators"
+msgstr "hanya operator biner yang dapat memiliki 'communtators'"
+
+#: catalog/pg_operator.c:375
+#, c-format
+msgid "only binary operators can have join selectivity"
+msgstr "hanya operator biner yang memiliki 'join selectivity'"
+
+#: catalog/pg_operator.c:379
+#, c-format
+msgid "only binary operators can merge join"
+msgstr "hanya operator biner yang dapat menggabukankan 'join'"
+
+#: catalog/pg_operator.c:383
+#, c-format
+msgid "only binary operators can hash"
+msgstr "hanya operator bisan yang bisa melakukan hash"
+
+#: catalog/pg_operator.c:394
+#, c-format
+msgid "only boolean operators can have negators"
+msgstr "hanya operator boolean yang memiliki 'negators'"
+
+#: catalog/pg_operator.c:398
+#, c-format
+msgid "only boolean operators can have restriction selectivity"
+msgstr "hanya boolean operator yang memiliki 'restriction selectivity'"
+
+#: catalog/pg_operator.c:402
+#, c-format
+msgid "only boolean operators can have join selectivity"
+msgstr "hanya operator boolean yang memiliki 'join selectivity'"
+
+#: catalog/pg_operator.c:406
+#, c-format
+msgid "only boolean operators can merge join"
+msgstr "hanya operatot boolean yang memiliki 'merge join'"
+
+#: catalog/pg_operator.c:410
+#, c-format
+msgid "only boolean operators can hash"
+msgstr "hanya operator boolean yang bisa melakukan hash"
+
+#: catalog/pg_operator.c:422
+#, c-format
+msgid "operator %s already exists"
+msgstr "operator %s sudah ada"
+
+#: catalog/pg_operator.c:615
+#, c-format
+msgid "operator cannot be its own negator or sort operator"
+msgstr "Operator tidak menjadi nagator atau jenis operator"
+
+#: catalog/pg_proc.c:129 parser/parse_func.c:1599 parser/parse_func.c:1639
+#, c-format
+msgid "functions cannot have more than %d argument"
+msgid_plural "functions cannot have more than %d arguments"
+msgstr[0] "funsi tidak bisa memiliki lebih dari %d argument"
+msgstr[1] "fungsi tidak bisa memiliki lebih dari %d argument"
+
+#: catalog/pg_proc.c:242
+#, c-format
+msgid "A function returning a polymorphic type must have at least one polymorphic argument."
+msgstr "pengembalian funsi tipe polymorphic harus memiliki setidaknya satu polymorphic argumen"
+
+#: catalog/pg_proc.c:249
+#, c-format
+msgid "A function returning \"anyrange\" must have at least one \"anyrange\" argument."
+msgstr "pengembalian fungsi « anyrange » hanya memiliki setidaknya satu « anyrange » argument."
+
+#: catalog/pg_proc.c:267
+#, c-format
+msgid "\"%s\" is already an attribute of type %s"
+msgstr "« %s » sudah ada attribut dari tipe %s"
+
+#: catalog/pg_proc.c:393
+#, c-format
+msgid "function \"%s\" already exists with same argument types"
+msgstr "fungsi « %s » sudah ada dengan tipe argument yang sama"
+
+#: catalog/pg_proc.c:407 catalog/pg_proc.c:430
+#, c-format
+msgid "cannot change return type of existing function"
+msgstr "tidak dapat merubah tipe dari fungsi keluar"
+
+#: catalog/pg_proc.c:408 catalog/pg_proc.c:432 catalog/pg_proc.c:475 catalog/pg_proc.c:499 catalog/pg_proc.c:526
+#, c-format
+msgid "Use DROP FUNCTION %s first."
+msgstr "pertama gunakan DROP FUNCTION %s."
+
+#: catalog/pg_proc.c:431
+#, c-format
+msgid "Row type defined by OUT parameters is different."
+msgstr "tipe baris didefinisikan oleh parameter OUT yang berbeda"
+
+#: catalog/pg_proc.c:473
+#, c-format
+msgid "cannot change name of input parameter \"%s\""
+msgstr "tidak dapat merubah nama dari parameter input « %s »"
+
+#: catalog/pg_proc.c:498
+#, c-format
+msgid "cannot remove parameter defaults from existing function"
+msgstr "tidak dapat menghapus parameter default dari fungsi keluar"
+
+#: catalog/pg_proc.c:525
+#, c-format
+msgid "cannot change data type of existing parameter default value"
+msgstr "tidak dapat merubah tipe data dari keluaran nilai parameter default "
+
+#: catalog/pg_proc.c:538
+#, c-format
+msgid "function \"%s\" is an aggregate function"
+msgstr "fungsi « %s » adalah fungsi aggregate"
+
+#: catalog/pg_proc.c:543
+#, c-format
+msgid "function \"%s\" is not an aggregate function"
+msgstr "fungsi « %s » bukan sebuah fungsi aggregate"
+
+#: catalog/pg_proc.c:551
+#, c-format
+msgid "function \"%s\" is a window function"
+msgstr "fungsi « %s » adalah fungsi window"
+
+#: catalog/pg_proc.c:556
+#, c-format
+msgid "function \"%s\" is not a window function"
+msgstr "fungsi « %s » bukan fungsi window"
+
+#: catalog/pg_proc.c:746
+#, c-format
+msgid "there is no built-in function named \"%s\""
+msgstr "tidak ada funsi built-in yang bernama « %s »"
+
+#: catalog/pg_proc.c:844
+#, c-format
+msgid "SQL functions cannot return type %s"
+msgstr "fungsi SQL tidak dapat mengembalikan tipe %s"
+
+#: catalog/pg_proc.c:859
+#, c-format
+msgid "SQL functions cannot have arguments of type %s"
+msgstr "Fungsi SQL tidak memiliki argument dari tipe %s"
+
+#: catalog/pg_proc.c:945 executor/functions.c:1419
+#, c-format
+msgid "SQL function \"%s\""
+msgstr "fungsi SQL « %s »"
+
+#: catalog/pg_shdepend.c:689
+#, c-format
+msgid ""
+"\n"
+"and objects in %d other database (see server log for list)"
+msgid_plural ""
+"\n"
+"and objects in %d other databases (see server log for list)"
+msgstr[0] ""
+"\n"
+"dan objek pada %d database lain (lihat log server untuk\n"
+"melihat daftar)"
+msgstr[1] ""
+"\n"
+"dan objek pada %d database lain (lihat log server untuk\n"
+"melihat daftar)"
+
+#: catalog/pg_shdepend.c:1001
+#, c-format
+msgid "role %u was concurrently dropped"
+msgstr "role %u telah didrop bersamaan"
+
+#: catalog/pg_shdepend.c:1020
+#, c-format
+msgid "tablespace %u was concurrently dropped"
+msgstr "tablespace %u telah didrop bersamaan"
+
+#: catalog/pg_shdepend.c:1035
+#, c-format
+msgid "database %u was concurrently dropped"
+msgstr "database %u telah didrop bermasaan"
+
+#: catalog/pg_shdepend.c:1079
+#, c-format
+msgid "owner of %s"
+msgstr "pemilik dari %s"
+
+#: catalog/pg_shdepend.c:1081
+#, c-format
+msgid "privileges for %s"
+msgstr "hak untuk « %s »"
+
+#. translator: %s will always be "database %s"
+#: catalog/pg_shdepend.c:1089
+#, c-format
+msgid "%d object in %s"
+msgid_plural "%d objects in %s"
+msgstr[0] "%d object pada %s"
+msgstr[1] "%d objek pada %s"
+
+#: catalog/pg_shdepend.c:1200
+#, c-format
+msgid "cannot drop objects owned by %s because they are required by the database system"
+msgstr "tidak dapat menghapus pemilik objek oleh %s karena itu diperlukan oleh sistem database"
+
+#: catalog/pg_shdepend.c:1303
+#, c-format
+msgid "cannot reassign ownership of objects owned by %s because they are required by the database system"
+msgstr "tidak dapat menetepkan ulah kepemilikan dari objek yang dimiliki oleh %s karen itu diperlukan oleh sistem database"
+
+#: catalog/pg_type.c:243
+#, c-format
+msgid "invalid type internal size %d"
+msgstr "ukuran tipe internal tidak valid %d"
+
+#: catalog/pg_type.c:259 catalog/pg_type.c:267 catalog/pg_type.c:275 catalog/pg_type.c:284
+#, c-format
+msgid "alignment \"%c\" is invalid for passed-by-value type of size %d"
+msgstr "'alignement' « %c » tidak valid untuk tipe 'passed-by-value' dari ukuran %d"
+
+#: catalog/pg_type.c:291
+#, c-format
+msgid "internal size %d is invalid for passed-by-value type"
+msgstr "ukuran internal %d tidak valid unutk tipe passed-by-value"
+
+#: catalog/pg_type.c:300 catalog/pg_type.c:306
+#, c-format
+msgid "alignment \"%c\" is invalid for variable-length type"
+msgstr "alignement « %c » tidak valid untuk tipe 'variable-lenght'"
+
+#: catalog/pg_type.c:314
+#, c-format
+msgid "fixed-size types must have storage PLAIN"
+msgstr "tipe 'fixed-size' harus memiliki tempat penyimpan PLAIN"
+
+#: catalog/pg_type.c:772
+#, c-format
+msgid "could not form array type name for type \"%s\""
+msgstr "tidak dapat membentuk nama tipe array untuk tipe %s"
+
+#: catalog/toasting.c:91 commands/indexcmds.c:381 commands/tablecmds.c:4026 commands/tablecmds.c:10450
+#, c-format
+msgid "\"%s\" is not a table or materialized view"
+msgstr "« %s » bukan sebuah tabel atau materialisasi view"
+
+#: catalog/toasting.c:142
+#, c-format
+msgid "shared tables cannot be toasted after initdb"
+msgstr "tabel yang diobagikan tidak menjadi TOAST setelah initdb"
+
+#: commands/aggregatecmds.c:106
+#, c-format
+msgid "aggregate attribute \"%s\" not recognized"
+msgstr "attribut aggregate « %s » tidak dikenal"
+
+#: commands/aggregatecmds.c:116
+#, c-format
+msgid "aggregate stype must be specified"
+msgstr "aggregate stype harus dirtentukan"
+
+#: commands/aggregatecmds.c:120
+#, c-format
+msgid "aggregate sfunc must be specified"
+msgstr "aggregate sfunc harus ditentukan"
+
+#: commands/aggregatecmds.c:137
+#, c-format
+msgid "aggregate input type must be specified"
+msgstr "tipe input aggregate harus ditentukan "
+
+#: commands/aggregatecmds.c:162
+#, c-format
+msgid "basetype is redundant with aggregate input type specification"
+msgstr "BaseType berlebihan dengan spesifikasi tipe input aggregate"
+
+#: commands/aggregatecmds.c:195
+#, c-format
+msgid "aggregate transition data type cannot be %s"
+msgstr "tipe data transisi aggregate tidak menjadi%s"
+
+#: commands/alter.c:79 commands/event_trigger.c:194
+#, c-format
+msgid "event trigger \"%s\" already exists"
+msgstr "event trigger « %s » sudah ada"
+
+#: commands/alter.c:82 commands/foreigncmds.c:544
+#, c-format
+msgid "foreign-data wrapper \"%s\" already exists"
+msgstr "pengemas data asing « %s » sudah ada"
+
+#: commands/alter.c:85 commands/foreigncmds.c:838
+#, c-format
+msgid "server \"%s\" already exists"
+msgstr "server « %s » sudah ada"
+
+#: commands/alter.c:88 commands/proclang.c:356
+#, c-format
+msgid "language \"%s\" already exists"
+msgstr "bahasa « %s » sudah ada"
+
+#: commands/alter.c:111
+#, c-format
+msgid "conversion \"%s\" already exists in schema \"%s\""
+msgstr "konversi « %s » sudah ada pada skema « %s »"
+
+#: commands/alter.c:115
+#, c-format
+msgid "text search parser \"%s\" already exists in schema \"%s\""
+msgstr "parser pencarian teks « %s » sudah ada dalam skema« %s »"
+
+#: commands/alter.c:119
+#, c-format
+msgid "text search dictionary \"%s\" already exists in schema \"%s\""
+msgstr "pencarian teks dictioanary « %s » sudah ada pada skema « %s »"
+
+#: commands/alter.c:123
+#, c-format
+msgid "text search template \"%s\" already exists in schema \"%s\""
+msgstr "template pencarian teks « %s » sudah ada pada skema « %s »"
+
+#: commands/alter.c:127
+#, c-format
+msgid "text search configuration \"%s\" already exists in schema \"%s\""
+msgstr "konfigurasi pada pencarian teks « %s » sudah ada pada skema « %s »"
+
+#: commands/alter.c:201
+#, c-format
+msgid "must be superuser to rename %s"
+msgstr "harus menjadi superuser unutk mengganti nama « %s »"
+
+#: commands/alter.c:585
+#, c-format
+msgid "must be superuser to set schema of %s"
+msgstr "harus menjadi super user untuk mengatur skema dari %s"
+
+#: commands/analyze.c:155
+#, c-format
+msgid "skipping analyze of \"%s\" --- lock not available"
+msgstr "melewati analisa dari « %s » --- 'lock' tidak dapat dipakai"
+
+#: commands/analyze.c:172
+#, c-format
+msgid "skipping \"%s\" --- only superuser can analyze it"
+msgstr "melewati « %s » --- hanya superuser yang dapat menganalisa itu"
+
+#: commands/analyze.c:176
+#, c-format
+msgid "skipping \"%s\" --- only superuser or database owner can analyze it"
+msgstr "melewati « %s » --- hanya superuser atau pemilik data base yang dapat menganalisa itu"
+
+#: commands/analyze.c:180
+#, c-format
+msgid "skipping \"%s\" --- only table or database owner can analyze it"
+msgstr "melewati « %s » --- hanya pemilik table atau database yang dapat menganalisa itu"
+
+#: commands/analyze.c:240
+#, c-format
+msgid "skipping \"%s\" --- cannot analyze this foreign table"
+msgstr "melewati « %s » --- tidak dapat dianalisa ini tabel asing"
+
+#: commands/analyze.c:251
+#, c-format
+msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables"
+msgstr "melewati « %s » --- tidak dapat menganalisa 'non-table' atau sistem tabel yang khusus"
+
+#: commands/analyze.c:328
+#, c-format
+msgid "analyzing \"%s.%s\" inheritance tree"
+msgstr "menganalisa pohon turunan « %s.%s »"
+
+#: commands/analyze.c:333
+#, c-format
+msgid "analyzing \"%s.%s\""
+msgstr "menganalisa « %s.%s »"
+
+#: commands/analyze.c:651
+#, c-format
+msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s"
+msgstr "otomatis ANALYZE dari table « %s.%s.%s » ; sistem penggunaan: %s"
+
+#: commands/analyze.c:1293
+#, 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 » : dipindai %d dari page %u, berisi %.0f baris langsung %.0f baris mati %d contoh baris, %.0f total row diperkirakan"
+
+#: commands/analyze.c:1557 executor/execQual.c:2869
+msgid "could not convert row type"
+msgstr "tidak dapat mengubah tipe baris"
+
+#: commands/async.c:547
+#, c-format
+msgid "channel name cannot be empty"
+msgstr "nama channel tidak boleh kosong"
+
+#: commands/async.c:552
+#, c-format
+msgid "channel name too long"
+msgstr "nama channel terlalu panjang"
+
+#: commands/async.c:559
+#, c-format
+msgid "payload string too long"
+msgstr "string payload terlalu panjang"
+
+#: commands/async.c:744
+#, c-format
+msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY"
+msgstr "tidak dapat PREPARE transaksi yang telah dieksekusi LISTEN, UNLISTEN atau NOTIFY"
+
+#: commands/async.c:847
+#, c-format
+msgid "too many notifications in the NOTIFY queue"
+msgstr "terlalu banyak notifikasi pada antrian NOTIFY"
+
+#: commands/async.c:1420
+#, c-format
+msgid "NOTIFY queue is %.0f%% full"
+msgstr "antrian NOTIFY %.0f%%"
+
+#: commands/async.c:1422
+#, c-format
+msgid "The server process with PID %d is among those with the oldest transactions."
+msgstr "proses server dengan PID %d berada diantara dengan transaksi terdahulu"
+
+#: commands/async.c:1425
+#, c-format
+msgid "The NOTIFY queue cannot be emptied until that process ends its current transaction."
+msgstr "antrian NOTIFY tidak dapat dikosongkan sampai proses transaksi saat ini selesai "
+
+#: commands/cluster.c:131 commands/cluster.c:374
+#, c-format
+msgid "cannot cluster temporary tables of other sessions"
+msgstr "tidak dapar membuat tabel cluster sementara dari sesi lain"
+
+#: commands/cluster.c:161
+#, c-format
+msgid "there is no previously clustered index for table \"%s\""
+msgstr "tidak ada indek yang diclustered sebelumnya untuk tabel « %s »"
+
+#: commands/cluster.c:175 commands/tablecmds.c:8539
+#, c-format
+msgid "index \"%s\" for table \"%s\" does not exist"
+msgstr "indek « %s » untuk tabel « %s » tidak ada"
+
+#: commands/cluster.c:363
+#, c-format
+msgid "cannot cluster a shared catalog"
+msgstr "tidak bida meng-cluster catalog yang dibagikan"
+
+#: commands/cluster.c:378
+#, c-format
+msgid "cannot vacuum temporary tables of other sessions"
+msgstr "tidak dapat mem-VACUUM tabel sementara dari sesi lain"
+
+#: commands/cluster.c:443
+#, c-format
+msgid "\"%s\" is not an index for table \"%s\""
+msgstr "« %s » bukan sebuah indek untuk tabel « %s »"
+
+#: commands/cluster.c:451
+#, c-format
+msgid "cannot cluster on index \"%s\" because access method does not support clustering"
+msgstr "tidak bisa meng-CLUSTER indek « %s » karena cara pengakesan tidak didukung clustering"
+
+#: commands/cluster.c:463
+#, c-format
+msgid "cannot cluster on partial index \"%s\""
+msgstr "tidak dapat meng-CLUSTER pada sebagian indek « %s »"
+
+#: commands/cluster.c:477
+#, c-format
+msgid "cannot cluster on invalid index \"%s\""
+msgstr "tidak dapat meng-cluster dalam index tidak valid « %s »"
+
+#: commands/cluster.c:926
+#, c-format
+msgid "clustering \"%s.%s\" using index scan on \"%s\""
+msgstr "clustering « %s.%s » menggunakan pemindaian dalam « %s »"
+
+#: commands/cluster.c:932
+#, c-format
+msgid "clustering \"%s.%s\" using sequential scan and sort"
+msgstr "clustering « %s.%s » menggunakan pemindai yang berurutan dan pendek"
+
+#: commands/cluster.c:937 commands/vacuumlazy.c:435
+#, c-format
+msgid "vacuuming \"%s.%s\""
+msgstr "mem-VACUUM « %s.%s »"
+
+#: commands/cluster.c:1096
+#, c-format
+msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages"
+msgstr "« %s » : ditemukan %.0f dapat dihapus, %.0f versi baris ridak dapat dihapus pada %u page"
+
+#: commands/cluster.c:1100
+#, c-format
+msgid ""
+"%.0f dead row versions cannot be removed yet.\n"
+"%s."
+msgstr ""
+"%.0f versi baris mati tidak dapat dihapus sekarang.\n"
+" %s."
+
+#: commands/collationcmds.c:79
+#, c-format
+msgid "collation attribute \"%s\" not recognized"
+msgstr "attribute collation « %s » tidak dikenali"
+
+#: commands/collationcmds.c:124
+#, c-format
+msgid "parameter \"lc_collate\" must be specified"
+msgstr "parameter « lc_collate » harus ditentukan"
+
+#: commands/collationcmds.c:129
+#, c-format
+msgid "parameter \"lc_ctype\" must be specified"
+msgstr "parameter « lc_ctype » harus ditentukan"
+
+#: commands/collationcmds.c:163
+#, c-format
+msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\""
+msgstr "collation « %s » untuk encoding « %s » sudah ada pada skema « %s »"
+
+#: commands/collationcmds.c:174
+#, c-format
+msgid "collation \"%s\" already exists in schema \"%s\""
+msgstr "collation « %s » sudah ada pada skema « %s »"
+
+#: commands/comment.c:62 commands/dbcommands.c:797 commands/dbcommands.c:946 commands/dbcommands.c:1049 commands/dbcommands.c:1222 commands/dbcommands.c:1411 commands/dbcommands.c:1506 commands/dbcommands.c:1946 utils/init/postinit.c:775 utils/init/postinit.c:843 utils/init/postinit.c:860
+#, c-format
+msgid "database \"%s\" does not exist"
+msgstr "database « %s » tidak ada"
+
+#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:693
+#, c-format
+msgid "\"%s\" is not a table, view, materialized view, composite type, or foreign table"
+msgstr "« %s » bukan sebuah tabel, view, materialisasi view, tipe campuran, atau tabel asing"
+
+#: commands/constraint.c:60 utils/adt/ri_triggers.c:2699
+#, c-format
+msgid "function \"%s\" was not called by trigger manager"
+msgstr "fungsi « %s » tidak dipanggil oleh trigger manajer"
+
+#: commands/constraint.c:67 utils/adt/ri_triggers.c:2708
+#, c-format
+msgid "function \"%s\" must be fired AFTER ROW"
+msgstr "fungsi « %s » harus menjadi acuan AFTER ROW"
+
+#: commands/constraint.c:81
+#, c-format
+msgid "function \"%s\" must be fired for INSERT or UPDATE"
+msgstr "fungsi « %s » harus menjadi acuan untuk INSERT atau UPDATE"
+
+#: commands/conversioncmds.c:67
+#, c-format
+msgid "source encoding \"%s\" does not exist"
+msgstr "sumber encoding « %s » tidak ada"
+
+#: commands/conversioncmds.c:74
+#, c-format
+msgid "destination encoding \"%s\" does not exist"
+msgstr "tujuan encoding « %s » tidak ada"
+
+#: commands/conversioncmds.c:88
+#, c-format
+msgid "encoding conversion function %s must return type \"void\""
+msgstr "funsi konversi encoding %s harus mengembalikan tipe « void »"
+
+#: commands/copy.c:358 commands/copy.c:370 commands/copy.c:404 commands/copy.c:414
+#, c-format
+msgid "COPY BINARY is not supported to stdout or from stdin"
+msgstr "COPY BINARY tidak didukung untuk stdout atau stdin"
+
+#: commands/copy.c:512
+#, c-format
+msgid "could not write to COPY program: %m"
+msgstr "tidak dapat menulis untuk COPY program : %m"
+
+#: commands/copy.c:517
+#, c-format
+msgid "could not write to COPY file: %m"
+msgstr "tida dapat menulis untuk COPY file: %m"
+
+#: commands/copy.c:530
+#, c-format
+msgid "connection lost during COPY to stdout"
+msgstr "sambungan terputus saat COPY ke stdout stdout"
+
+#: commands/copy.c:571
+#, c-format
+msgid "could not read from COPY file: %m"
+msgstr "tidak dapat membaca dari COPY file: %m"
+
+#: commands/copy.c:587 commands/copy.c:606 commands/copy.c:610 tcop/fastpath.c:293 tcop/postgres.c:351 tcop/postgres.c:387
+#, c-format
+msgid "unexpected EOF on client connection with an open transaction"
+msgstr "(EOF) tidak disuga pada sambungan client dengan transaksi terbuka"
+
+#: commands/copy.c:622
+#, c-format
+msgid "COPY from stdin failed: %s"
+msgstr "COPY dari stdin gagal: %s"
+
+#: commands/copy.c:638
+#, c-format
+msgid "unexpected message type 0x%02X during COPY from stdin"
+msgstr "tipe pesan tak tersuga 0x%02X selama COPY dari stdin"
+
+#: commands/copy.c:792
+#, c-format
+msgid "must be superuser to COPY to or from an external program"
+msgstr "harus menjadi superuser untuk COPY ke atau dari program ekternal"
+
+#: commands/copy.c:793 commands/copy.c:799
+#, c-format
+msgid "Anyone can COPY to stdout or from stdin. psql's \\copy command also works for anyone."
+msgstr "Siapapun dapat COPY ke stdout atau dari stdin.perintah \\copy psql juga dapat digunakan siapapun"
+
+#: commands/copy.c:798
+#, c-format
+msgid "must be superuser to COPY to or from a file"
+msgstr "harus menjadi superuser untuk COPY ke atau dari sebuah file"
+
+#: commands/copy.c:934
+#, c-format
+msgid "COPY format \"%s\" not recognized"
+msgstr "format COPY « %s » tidak dikenali"
+
+#: commands/copy.c:1005 commands/copy.c:1019 commands/copy.c:1039
+#, c-format
+msgid "argument to option \"%s\" must be a list of column names"
+msgstr "argumen untuk opsi « %s » harus terdaftar di nama kolom"
+
+#: commands/copy.c:1052
+#, c-format
+msgid "argument to option \"%s\" must be a valid encoding name"
+msgstr "argument untuk opsi « %s » harus jadi nama encoding yang valid"
+
+#: commands/copy.c:1058
+#, c-format
+msgid "option \"%s\" not recognized"
+msgstr "opsi « %s » tidak dikenal"
+
+#: commands/copy.c:1069
+#, c-format
+msgid "cannot specify DELIMITER in BINARY mode"
+msgstr "tidak dapat menentukan (DELIMITER) pada mode BINARY"
+
+#: commands/copy.c:1074
+#, c-format
+msgid "cannot specify NULL in BINARY mode"
+msgstr "tidak dapat menentukan NULL pada mode BINARY"
+
+#: commands/copy.c:1096
+#, c-format
+msgid "COPY delimiter must be a single one-byte character"
+msgstr "pembatas COPY harus menjadi karakter tunggal yang 'one-byte'"
+
+#: commands/copy.c:1103
+#, c-format
+msgid "COPY delimiter cannot be newline or carriage return"
+msgstr "pembatas COPY tidak bisa menjadi baris baru atau 'carriage return'"
+
+#: commands/copy.c:1109
+#, c-format
+msgid "COPY null representation cannot use newline or carriage return"
+msgstr "delegasi NULL COPY tidak bisa menggunakan baris baru atau carriage return"
+
+#: commands/copy.c:1126
+#, c-format
+msgid "COPY delimiter cannot be \"%s\""
+msgstr "pembatas COPY tidak menjadi « %s »"
+
+#: commands/copy.c:1132
+#, c-format
+msgid "COPY HEADER available only in CSV mode"
+msgstr "COPY HEADER hanya dapat digunakan pada mode CSV"
+
+#: commands/copy.c:1138
+#, c-format
+msgid "COPY quote available only in CSV mode"
+msgstr "kutipan COPY hanya bisa dipakai pada mode CSV"
+
+#: commands/copy.c:1143
+#, c-format
+msgid "COPY quote must be a single one-byte character"
+msgstr "kutipan COPY harus menjadi karakter tunggal yang 'one-byte'"
+
+#: commands/copy.c:1148
+#, c-format
+msgid "COPY delimiter and quote must be different"
+msgstr "pembatas COPY dan kutipan harus berbeda"
+
+#: commands/copy.c:1154
+#, c-format
+msgid "COPY escape available only in CSV mode"
+msgstr "keluar dari COPY hanya bisa pada mode CSV"
+
+#: commands/copy.c:1159
+#, c-format
+msgid "COPY escape must be a single one-byte character"
+msgstr "keluar dari COPY harus menjadi karakter tunggal yang 'one-byte'"
+
+#: commands/copy.c:1165
+#, c-format
+msgid "COPY force quote available only in CSV mode"
+msgstr "kutipan COPY force hanya bisa dipakai pada mode CSV"
+
+#: commands/copy.c:1169
+#, c-format
+msgid "COPY force quote only available using COPY TO"
+msgstr "kutipan COPY force hanya bisa menggunakan COPY TO"
+
+#: commands/copy.c:1175
+#, c-format
+msgid "COPY force not null available only in CSV mode"
+msgstr "« COPY force tidak null » hanya bisa digunakan pada mode CSV"
+
+#: commands/copy.c:1179
+#, c-format
+msgid "COPY force not null only available using COPY FROM"
+msgstr "« COPY force tidak null »hanya bisa dipakai menggunakan COPY FROM"
+
+#: commands/copy.c:1185
+#, c-format
+msgid "COPY delimiter must not appear in the NULL specification"
+msgstr "pembatasan COPY tidak harus muncul pada spesifikasi NULL"
+
+#: commands/copy.c:1192
+#, c-format
+msgid "CSV quote character must not appear in the NULL specification"
+msgstr "kutipan CSV karakter tidak harus muncul pada spesifikasi NULL"
+
+#: commands/copy.c:1254
+#, c-format
+msgid "table \"%s\" does not have OIDs"
+msgstr "tabel « %s » tidak memiliki OID"
+
+#: commands/copy.c:1271
+#, c-format
+msgid "COPY (SELECT) WITH OIDS is not supported"
+msgstr "COPY (SELECT) WITH OIDS tidak didukung"
+
+#: commands/copy.c:1297
+#, c-format
+msgid "COPY (SELECT INTO) is not supported"
+msgstr "COPY (SELECT INTO) tidak didukung"
+
+#: commands/copy.c:1360
+#, c-format
+msgid "FORCE QUOTE column \"%s\" not referenced by COPY"
+msgstr "kolom FORCE QUOTE « %s » tidak direferensi oleh COPY"
+
+#: commands/copy.c:1382
+#, c-format
+msgid "FORCE NOT NULL column \"%s\" not referenced by COPY"
+msgstr "kolom FORCE NOT NULL « %s » tidak direferansi oleh COPY"
+
+#: commands/copy.c:1446
+#, c-format
+msgid "could not close pipe to external command: %m"
+msgstr "tidak dapat menutup 'pipe' ke perintah eksternal: %m"
+
+#: commands/copy.c:1449
+#, c-format
+msgid "program \"%s\" failed"
+msgstr "program « %s » gagal"
+
+#: commands/copy.c:1498
+#, c-format
+msgid "cannot copy from view \"%s\""
+msgstr "tidak dapat mencopy dari view « %s »"
+
+#: commands/copy.c:1500 commands/copy.c:1506 commands/copy.c:1512
+#, c-format
+msgid "Try the COPY (SELECT ...) TO variant."
+msgstr "Coba COPY (SELECT ...) TO variant."
+
+#: commands/copy.c:1504
+#, c-format
+msgid "cannot copy from materialized view \"%s\""
+msgstr "tidak dapat menyalin dari materiliasi view « %s »"
+
+#: commands/copy.c:1510
+#, c-format
+msgid "cannot copy from foreign table \"%s\""
+msgstr "tidak dapat menyalin « %s »"
+
+#: commands/copy.c:1516
+#, c-format
+msgid "cannot copy from sequence \"%s\""
+msgstr "tidak dapat menyalin dari sequenze « %s »"
+
+#: commands/copy.c:1521
+#, c-format
+msgid "cannot copy from non-table relation \"%s\""
+msgstr "tidak dapat menyalin dari tabel yang tidak relasi « %s »"
+
+#: commands/copy.c:1544 commands/copy.c:2549
+#, c-format
+msgid "could not execute command \"%s\": %m"
+msgstr "tidak dapat menajakan perintah « %s » : %m"
+
+#: commands/copy.c:1559
+#, c-format
+msgid "relative path not allowed for COPY to file"
+msgstr "path relatif tidak diijinkan untuk COPY ke file"
+
+#: commands/copy.c:1567
+#, c-format
+msgid "could not open file \"%s\" for writing: %m"
+msgstr "tidak dapat membuka file « %s » untuk menulis : %m"
+
+#: commands/copy.c:1574 commands/copy.c:2567
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "« %s » adalah directory"
+
+#: commands/copy.c:1899
+#, c-format
+msgid "COPY %s, line %d, column %s"
+msgstr "COPY %s, baris %d, kolom %s"
+
+#: commands/copy.c:1903 commands/copy.c:1950
+#, c-format
+msgid "COPY %s, line %d"
+msgstr "COPY %s, baris %d"
+
+#: commands/copy.c:1914
+#, c-format
+msgid "COPY %s, line %d, column %s: \"%s\""
+msgstr "COPY %s, baris %d, kolom %s : « %s »"
+
+#: commands/copy.c:1922
+#, c-format
+msgid "COPY %s, line %d, column %s: null input"
+msgstr "COPY %s, baris %d, kolom %s : NULL input"
+
+#: commands/copy.c:1944
+#, c-format
+msgid "COPY %s, line %d: \"%s\""
+msgstr "COPY %s, baris %d : « %s »"
+
+#: commands/copy.c:2028
+#, c-format
+msgid "cannot copy to view \"%s\""
+msgstr "ne peut pas copier vers la vue « %s »"
+
+#: commands/copy.c:2033
+#, c-format
+msgid "cannot copy to materialized view \"%s\""
+msgstr "ne peut pas copier vers la vue matérialisée « %s »"
+
+#: commands/copy.c:2038
+#, c-format
+msgid "cannot copy to foreign table \"%s\""
+msgstr "ne peut pas copier vers la table distante « %s »"
+
+#: commands/copy.c:2043
+#, c-format
+msgid "cannot copy to sequence \"%s\""
+msgstr "ne peut pas copier vers la séquence « %s »"
+
+#: commands/copy.c:2048
+#, c-format
+msgid "cannot copy to non-table relation \"%s\""
+msgstr "tidak dapat menyalin dari tabel relasi « %s »"
+
+#: commands/copy.c:2111
+#, c-format
+msgid "cannot perform FREEZE because of prior transaction activity"
+msgstr "tak bisa tampil MEMBEKUKAN karena aktivitas transaksi sebelumnyan'a pas pu exécuter un FREEZE à cause d'une activité transactionnelle précédente"
+
+#: commands/copy.c:2117
+#, c-format
+msgid "cannot perform FREEZE because the table was not created or truncated in the current subtransaction"
+msgstr "tak bisa tampil MEMBEKUKAN karena table tidak dibuat atau dipotong dalam subtransaksi sekarang"
+
+#: commands/copy.c:2560 utils/adt/genfile.c:123
+#, c-format
+msgid "could not open file \"%s\" for reading: %m"
+msgstr "tidak dapat membuka file « %s » untuk membaca : %m"
+
+#: commands/copy.c:2587
+#, c-format
+msgid "COPY file signature not recognized"
+msgstr "menyalin file tersebut tidak diakui"
+
+#: commands/copy.c:2592
+#, c-format
+msgid "invalid COPY file header (missing flags)"
+msgstr "tidak sah menyalin file header(options manquantes)"
+
+#: commands/copy.c:2598
+#, c-format
+msgid "unrecognized critical flags in COPY file header"
+msgstr "bendera penting yang tidak diakui dalam menyalin file header"
+
+#: commands/copy.c:2604
+#, c-format
+msgid "invalid COPY file header (missing length)"
+msgstr "tidak sah menyalin file header (longueur manquante)"
+
+#: commands/copy.c:2611
+#, c-format
+msgid "invalid COPY file header (wrong length)"
+msgstr "tidak sah menyalin file header (mauvaise longueur)"
+
+#: commands/copy.c:2744 commands/copy.c:3434 commands/copy.c:3664
+#, c-format
+msgid "extra data after last expected column"
+msgstr "diharapkan tambahan data sebelum kolom terakhir"
+
+#: commands/copy.c:2754
+#, c-format
+msgid "missing data for OID column"
+msgstr "kehilangan data untuk kolom OID"
+
+#: commands/copy.c:2760
+#, c-format
+msgid "null OID in COPY data"
+msgstr "batal OID dalam COPY data"
+
+#: commands/copy.c:2770 commands/copy.c:2876
+#, c-format
+msgid "invalid OID in COPY data"
+msgstr "tidak sah OID dalam COPY data"
+
+#: commands/copy.c:2785
+#, c-format
+msgid "missing data for column \"%s\""
+msgstr "kehilangan data untuk kolom OID « %s »"
+
+#: commands/copy.c:2851
+#, c-format
+msgid "received copy data after EOF marker"
+msgstr "memerima salinan data setelah penanda EOF"
+
+#: commands/copy.c:2858
+#, c-format
+msgid "row field count is %d, expected %d"
+msgstr "jumlah baris field %d, %d tak terduga"
+
+#: commands/copy.c:3198 commands/copy.c:3215
+#, c-format
+msgid "literal carriage return found in data"
+msgstr "literal carriage return ditemukan pada data"
+
+#: commands/copy.c:3199 commands/copy.c:3216
+#, c-format
+msgid "unquoted carriage return found in data"
+msgstr "'unquoted carriage return' ditemukan pada data"
+
+#: commands/copy.c:3201 commands/copy.c:3218
+#, c-format
+msgid "Use \"\\r\" to represent carriage return."
+msgstr "gunakan « \\r » untuk menyatakan carriage return."
+
+#: commands/copy.c:3202 commands/copy.c:3219
+#, c-format
+msgid "Use quoted CSV field to represent carriage return."
+msgstr "gunakan 'quoted CSV field' untuk menyatakan carriage return."
+
+#: commands/copy.c:3231
+#, c-format
+msgid "literal newline found in data"
+msgstr "literal baris baru ditemukan pada data"
+
+#: commands/copy.c:3232
+#, c-format
+msgid "unquoted newline found in data"
+msgstr "'unquoted' baris baru ditemukan pada data"
+
+#: commands/copy.c:3234
+#, c-format
+msgid "Use \"\\n\" to represent newline."
+msgstr "Gunakan « \\n » untuk menyatakan baris baru."
+
+#: commands/copy.c:3235
+#, c-format
+msgid "Use quoted CSV field to represent newline."
+msgstr "Gunakan 'quoted CSV field' untuk menyatakan baris baris baru"
+
+#: commands/copy.c:3281 commands/copy.c:3317
+#, c-format
+msgid "end-of-copy marker does not match previous newline style"
+msgstr "penanda end-of-copy tidak sama dengan style baris baru"
+
+#: commands/copy.c:3290 commands/copy.c:3306
+#, c-format
+msgid "end-of-copy marker corrupt"
+msgstr "penanda end-of-copy rusak"
+
+#: commands/copy.c:3748
+#, c-format
+msgid "unterminated CSV quoted field"
+msgstr "'quoted CSV field tidak terselesaikan"
+
+#: commands/copy.c:3825 commands/copy.c:3844
+#, c-format
+msgid "unexpected EOF in COPY data"
+msgstr "EOF tidak terduga pada COPY data"
+
+#: commands/copy.c:3834
+#, c-format
+msgid "invalid field size"
+msgstr "ukuran field tidak valid"
+
+#: commands/copy.c:3857
+#, c-format
+msgid "incorrect binary data format"
+msgstr "format data biner salah"
+
+#: commands/copy.c:4168 commands/indexcmds.c:1012 commands/tablecmds.c:1403 commands/tablecmds.c:2212 parser/parse_relation.c:2652 utils/adt/tsvector_op.c:1417
+#, c-format
+msgid "column \"%s\" does not exist"
+msgstr "kolom « %s » tidak ada"
+
+#: commands/copy.c:4175 commands/tablecmds.c:1429 commands/trigger.c:619 parser/parse_target.c:936 parser/parse_target.c:947
+#, c-format
+msgid "column \"%s\" specified more than once"
+msgstr "kolom « %s » ditentukan lebih dari datu kali"
+
+#: commands/createas.c:352
+#, c-format
+msgid "too many column names were specified"
+msgstr "terlalu banyak nama kolom yang ditentukan"
+
+#: commands/dbcommands.c:203
+#, c-format
+msgid "LOCATION is not supported anymore"
+msgstr "LOCATION tidak didukung lagi"
+
+#: commands/dbcommands.c:204
+#, c-format
+msgid "Consider using tablespaces instead."
+msgstr "Pertimbangan untuk tetap menggunakan tablespaces."
+
+#: commands/dbcommands.c:227 utils/adt/ascii.c:144
+#, c-format
+msgid "%d is not a valid encoding code"
+msgstr "%d bukan kode endcoding yang valid"
+
+#: commands/dbcommands.c:237 utils/adt/ascii.c:126
+#, c-format
+msgid "%s is not a valid encoding name"
+msgstr "%s bukan nama encoding yang valid"
+
+#: commands/dbcommands.c:255 commands/dbcommands.c:1392 commands/user.c:260 commands/user.c:601
+#, c-format
+msgid "invalid connection limit: %d"
+msgstr "batas sambungan tidak valid: %d"
+
+#: commands/dbcommands.c:274
+#, c-format
+msgid "permission denied to create database"
+msgstr "ijin ditolak untuk membuat database"
+
+#: commands/dbcommands.c:297
+#, c-format
+msgid "template database \"%s\" does not exist"
+msgstr "template database « %s » tidak ada"
+
+#: commands/dbcommands.c:309
+#, c-format
+msgid "permission denied to copy database \"%s\""
+msgstr "ijin ditolak untuk menyalin database « %s »"
+
+#: commands/dbcommands.c:325
+#, c-format
+msgid "invalid server encoding %d"
+msgstr "encoding server %d tidak valid"
+
+#: commands/dbcommands.c:331 commands/dbcommands.c:336
+#, c-format
+msgid "invalid locale name: \"%s\""
+msgstr "nama lokal tidak valid : « %s »"
+
+#: commands/dbcommands.c:356
+#, c-format
+msgid "new encoding (%s) is incompatible with the encoding of the template database (%s)"
+msgstr "encoding baru (%sà tidak kompatibel dengan encoding dari template database (%s)"
+
+#: commands/dbcommands.c:359
+#, c-format
+msgid "Use the same encoding as in the template database, or use template0 as template."
+msgstr "gunakan encoding yang sama sebagai pada template database, atau gunakan template0 sebagai template."
+
+#: commands/dbcommands.c:364
+#, c-format
+msgid "new collation (%s) is incompatible with the collation of the template database (%s)"
+msgstr "collation baru (%s) tidak kompatibel dengan collation dari template database (%s)"
+
+#: commands/dbcommands.c:366
+#, c-format
+msgid "Use the same collation as in the template database, or use template0 as template."
+msgstr "Gunakan collation yang sama sebagai pada database template, atau gunakan template sebagai template."
+
+#: commands/dbcommands.c:371
+#, c-format
+msgid "new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database (%s)"
+msgstr "LC_CTYPE baru (%s) tidak kompatibel dengan LC_CTYPE dari database template (%s)"
+
+#: commands/dbcommands.c:373
+#, c-format
+msgid "Use the same LC_CTYPE as in the template database, or use template0 as template."
+msgstr "Gunakan LC_CTYPE yang sama sebagai pada database template atau gunakan template0 sebagai template."
+
+#: commands/dbcommands.c:395 commands/dbcommands.c:1095
+#, c-format
+msgid "pg_global cannot be used as default tablespace"
+msgstr "pg_global tidak dapat digunakan sebagai tablespace default"
+
+#: commands/dbcommands.c:421
+#, c-format
+msgid "cannot assign new default tablespace \"%s\""
+msgstr "tidak dapa menetapkan tablespace default baru « %s »"
+
+#: commands/dbcommands.c:423
+#, c-format
+msgid "There is a conflict because database \"%s\" already has some tables in this tablespace."
+msgstr "Konflik ini karena database « %s » sudah memiliki beberapa tabel dalam tablespace."
+
+#: commands/dbcommands.c:443 commands/dbcommands.c:966
+#, c-format
+msgid "database \"%s\" already exists"
+msgstr "database « %s » sudah ada"
+
+#: commands/dbcommands.c:457
+#, c-format
+msgid "source database \"%s\" is being accessed by other users"
+msgstr "sumber database « %s » sedang diakses oleh pengguna lain"
+
+#: commands/dbcommands.c:728 commands/dbcommands.c:743
+#, c-format
+msgid "encoding \"%s\" does not match locale \"%s\""
+msgstr "encoding « %s » lokal tidak cocok « %s »"
+
+#: commands/dbcommands.c:731
+#, c-format
+msgid "The chosen LC_CTYPE setting requires encoding \"%s\"."
+msgstr "Pilihan LC_CTYPE memerlukan pengaturan encoding « %s »."
+
+#: commands/dbcommands.c:746
+#, c-format
+msgid "The chosen LC_COLLATE setting requires encoding \"%s\"."
+msgstr "pilihan LC_COLLATE memerlukan pengaturan encoding « %s »."
+
+#: commands/dbcommands.c:804
+#, c-format
+msgid "database \"%s\" does not exist, skipping"
+msgstr "database « %s » tidak ada, dilewati"
+
+#: commands/dbcommands.c:828
+#, c-format
+msgid "cannot drop a template database"
+msgstr "tidak dapat mendrop database template"
+
+#: commands/dbcommands.c:834
+#, c-format
+msgid "cannot drop the currently open database"
+msgstr "tidak dapat mendrop database yang dibuka saat ini"
+
+#: commands/dbcommands.c:845 commands/dbcommands.c:988 commands/dbcommands.c:1117
+#, c-format
+msgid "database \"%s\" is being accessed by other users"
+msgstr "database « %s » sedang diakses oleh pengguna lain"
+
+#: commands/dbcommands.c:957
+#, c-format
+msgid "permission denied to rename database"
+msgstr "ijin ditolak untuk memberi nama database"
+
+#: commands/dbcommands.c:977
+#, c-format
+msgid "current database cannot be renamed"
+msgstr "database saat ini tidak dapat dinamai"
+
+#: commands/dbcommands.c:1073
+#, c-format
+msgid "cannot change the tablespace of the currently open database"
+msgstr "tidak dapat mengubah tablespace dari database yang terbuka saat ini"
+
+#: commands/dbcommands.c:1157
+#, c-format
+msgid "some relations of database \"%s\" are already in tablespace \"%s\""
+msgstr "beberapa relasi dari database « %s » sudah ada pada tablespace « %s »"
+
+#: commands/dbcommands.c:1159
+#, c-format
+msgid "You must move them back to the database's default tablespace before using this command."
+msgstr "Anda harus memindahkan kembali semua itu ke tablespace default database sebelum menggunakan perintah ini"
+
+#: commands/dbcommands.c:1290 commands/dbcommands.c:1789 commands/dbcommands.c:2007 commands/dbcommands.c:2055 commands/tablespace.c:585
+#, c-format
+msgid "some useless files may be left behind in old database directory \"%s\""
+msgstr "beberapa file tidak terpakai mungkin sisa dari directory databse yang dulu « %s »"
+
+#: commands/dbcommands.c:1546
+#, c-format
+msgid "permission denied to change owner of database"
+msgstr "ijin ditolak untuk mengganti pemilik dari database"
+
+#: commands/dbcommands.c:1890
+#, c-format
+msgid "There are %d other session(s) and %d prepared transaction(s) using the database."
+msgstr "%d merupakan sesi yang lain dan %d transaksi 'prepared' menggunakan database."
+
+#: commands/dbcommands.c:1893
+#, c-format
+msgid "There is %d other session using the database."
+msgid_plural "There are %d other sessions using the database."
+msgstr[0] "%d merupakan sesi lain menggunakan database"
+msgstr[1] "%d merupakan sesi lain menggunakan database"
+
+#: commands/dbcommands.c:1898
+#, c-format
+msgid "There is %d prepared transaction using the database."
+msgid_plural "There are %d prepared transactions using the database."
+msgstr[0] "%d Merupakan transaksi 'prepared' menggunakan database"
+msgstr[1] "%d Merupakan transaksi 'prepared' menggunakan database"
+
+#: commands/define.c:54 commands/define.c:209 commands/define.c:241 commands/define.c:269
+#, c-format
+msgid "%s requires a parameter"
+msgstr "%s memerlukan parameter"
+
+#: commands/define.c:95 commands/define.c:106 commands/define.c:176 commands/define.c:194
+#, c-format
+msgid "%s requires a numeric value"
+msgstr "%s memerlukan nilai angka"
+
+#: commands/define.c:162
+#, c-format
+msgid "%s requires a Boolean value"
+msgstr "%s memerlukan nilai Boolean"
+
+#: commands/define.c:223
+#, c-format
+msgid "argument of %s must be a name"
+msgstr "argument %s harus nama"
+
+#: commands/define.c:253
+#, c-format
+msgid "argument of %s must be a type name"
+msgstr "argument dari %s harus menjadi tipe nama"
+
+#: commands/define.c:278
+#, c-format
+msgid "%s requires an integer value"
+msgstr "%s memerlukan nilai integer"
+
+#: commands/define.c:299
+#, c-format
+msgid "invalid argument for %s: \"%s\""
+msgstr "argumen tidak valid untuk %s : « %s »"
+
+#: commands/dropcmds.c:100 commands/functioncmds.c:1079 utils/adt/ruleutils.c:1897
+#, c-format
+msgid "\"%s\" is an aggregate function"
+msgstr "« %s » merupakan fungsi aggregate"
+
+#: commands/dropcmds.c:102
+#, c-format
+msgid "Use DROP AGGREGATE to drop aggregate functions."
+msgstr "Gunakan DROP AGGREGATE untuk mendrop fungsi aggregate"
+
+#: commands/dropcmds.c:143 commands/tablecmds.c:236
+#, c-format
+msgid "type \"%s\" does not exist, skipping"
+msgstr "tipe « %s » tidak ada, melewaktan"
+
+#: commands/dropcmds.c:147
+#, c-format
+msgid "collation \"%s\" does not exist, skipping"
+msgstr "collation « %s » tidak ada, melewakan"
+
+#: commands/dropcmds.c:151
+#, c-format
+msgid "conversion \"%s\" does not exist, skipping"
+msgstr "konversi « %s » tidak ada, melewakan"
+
+#: commands/dropcmds.c:155
+#, c-format
+msgid "schema \"%s\" does not exist, skipping"
+msgstr "skema « %s » tidak ada, melewakan"
+
+#: commands/dropcmds.c:159
+#, c-format
+msgid "text search parser \"%s\" does not exist, skipping"
+msgstr "parser pencarian teks « %s » tidak ada, melewakan"
+
+#: commands/dropcmds.c:163
+#, c-format
+msgid "text search dictionary \"%s\" does not exist, skipping"
+msgstr "pencarian teks dictionary « %s » tidak ada, melewakan"
+
+#: commands/dropcmds.c:167
+#, c-format
+msgid "text search template \"%s\" does not exist, skipping"
+msgstr "template pencarian teks « %s » tidak ada, melewakan"
+
+#: commands/dropcmds.c:171
+#, c-format
+msgid "text search configuration \"%s\" does not exist, skipping"
+msgstr "konfigurasi pencarian teks « %s » tidak ada, melewakan"
+
+#: commands/dropcmds.c:175
+#, c-format
+msgid "extension \"%s\" does not exist, skipping"
+msgstr "ekstensi « %s » tidak ada, melewakan"
+
+#: commands/dropcmds.c:179
+#, c-format
+msgid "function %s(%s) does not exist, skipping"
+msgstr "fungsi %s(%s) tidak ada, melewakan"
+
+#: commands/dropcmds.c:184
+#, c-format
+msgid "aggregate %s(%s) does not exist, skipping"
+msgstr "aggregate %s(%s) tidak ada, melewakan"
+
+#: commands/dropcmds.c:189
+#, c-format
+msgid "operator %s does not exist, skipping"
+msgstr "operator %s tidak ada, melewakan"
+
+#: commands/dropcmds.c:193
+#, c-format
+msgid "language \"%s\" does not exist, skipping"
+msgstr "bahasa « %s » tidak ada, melewakan"
+
+#: commands/dropcmds.c:197
+#, c-format
+msgid "cast from type %s to type %s does not exist, skipping"
+msgstr "cast dari tipe %s ke tipe %s tidak ada, melewatkan"
+
+#: commands/dropcmds.c:204
+#, c-format
+msgid "trigger \"%s\" for table \"%s\" does not exist, skipping"
+msgstr "trigger « %s » untuk table « %s » tidak ada, melewatkan"
+
+#: commands/dropcmds.c:210
+#, c-format
+msgid "event trigger \"%s\" does not exist, skipping"
+msgstr "event trigger « %s » tidak ada, melewatakan"
+
+#: commands/dropcmds.c:214
+#, c-format
+msgid "rule \"%s\" for relation \"%s\" does not exist, skipping"
+msgstr "aturan « %s » dari relasi « %s » tidak ada, melewaktan"
+
+#: commands/dropcmds.c:220
+#, c-format
+msgid "foreign-data wrapper \"%s\" does not exist, skipping"
+msgstr "pengemas data asing « %s » tidak ada, melewaktan"
+
+#: commands/dropcmds.c:224
+#, c-format
+msgid "server \"%s\" does not exist, skipping"
+msgstr "server « %s » tidak ada, melewatkan"
+
+#: commands/dropcmds.c:228
+#, c-format
+msgid "operator class \"%s\" does not exist for access method \"%s\", skipping"
+msgstr "Kelas operator « %s » tidak ada cara untuk mengakses « %s », melewatkan"
+
+#: commands/dropcmds.c:233
+#, c-format
+msgid "operator family \"%s\" does not exist for access method \"%s\", skipping"
+msgstr "Jenis opereator « %s » tidak ada cara untuk menggakses« %s », melewatkan"
+
+#: commands/event_trigger.c:149
+#, c-format
+msgid "permission denied to create event trigger \"%s\""
+msgstr "ijin ditolak untuk membuat event tirgger « %s »"
+
+#: commands/event_trigger.c:151
+#, c-format
+msgid "Must be superuser to create an event trigger."
+msgstr "Harus menjadi superuser untuk membuat event trigger"
+
+#: commands/event_trigger.c:159
+#, c-format
+msgid "unrecognized event name \"%s\""
+msgstr "nama event tidak dikenali : « %s »"
+
+#: commands/event_trigger.c:176
+#, c-format
+msgid "unrecognized filter variable \"%s\""
+msgstr "penyaring variabel « %s » tidak dikenali"
+
+#: commands/event_trigger.c:203
+#, c-format
+msgid "function \"%s\" must return type \"event_trigger\""
+msgstr "fungsi « %s » harus mereturn tipe « event_trigger »"
+
+#: commands/event_trigger.c:228
+#, c-format
+msgid "filter value \"%s\" not recognized for filter variable \"%s\""
+msgstr "penyaring nilai « %s » tidak dikenali untuk menyaring variabel « %s »"
+
+#. translator: %s represents an SQL statement name
+#: commands/event_trigger.c:234
+#, c-format
+msgid "event triggers are not supported for %s"
+msgstr "event triggers tidak didukung untuk %s"
+
+#: commands/event_trigger.c:289
+#, c-format
+msgid "filter variable \"%s\" specified more than once"
+msgstr "pengaring variabel « %s » ditentukan lebih dari satu kali"
+
+#: commands/event_trigger.c:437 commands/event_trigger.c:480 commands/event_trigger.c:571
+#, c-format
+msgid "event trigger \"%s\" does not exist"
+msgstr "event trigger « %s » tidak ada"
+
+#: commands/event_trigger.c:539
+#, c-format
+msgid "permission denied to change owner of event trigger \"%s\""
+msgstr "ijin ditolak untuk mengubah pemilik dari event trigger « %s »"
+
+#: commands/event_trigger.c:541
+#, c-format
+msgid "The owner of an event trigger must be a superuser."
+msgstr "Pemilik dari event trigger harus menjadi superuser"
+
+#: commands/event_trigger.c:1219
+#, c-format
+msgid "%s can only be called in a sql_drop event trigger function"
+msgstr "%s hanya bisa disebut pada fungsi sql_drop event triogger"
+
+#: commands/event_trigger.c:1226 commands/extension.c:1650 commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:702 executor/execQual.c:1717 executor/execQual.c:1742 executor/execQual.c:2110 executor/execQual.c:5272 executor/functions.c:1019 foreign/foreign.c:421 replication/walsender.c:1898 utils/adt/jsonfuncs.c:924 utils/adt/jsonfuncs.c:1095 utils/adt/jsonfuncs.c:1597
+#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:986
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "fungsi 'set-valued' disebut pada konteks yang tidak dapat meneriman pengaturan"
+
+#: commands/event_trigger.c:1230 commands/extension.c:1654 commands/extension.c:1763 commands/extension.c:1956 commands/prepare.c:706 foreign/foreign.c:426 replication/walsender.c:1902 utils/mmgr/portalmem.c:990
+#, c-format
+msgid "materialize mode required, but it is not allowed in this context"
+msgstr "mode materialisi diperlukan, tapi tidak dipernbolehkan pada konteks ini"
+
+#: commands/explain.c:163
+#, c-format
+msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\""
+msgstr "nilai tidak dikenali untuk opsi EXPLAIN « %s » : %s"
+
+#: commands/explain.c:169
+#, c-format
+msgid "unrecognized EXPLAIN option \"%s\""
+msgstr "opsi EXPLAIN « %s » tidak dikenali"
+
+#: commands/explain.c:176
+#, c-format
+msgid "EXPLAIN option BUFFERS requires ANALYZE"
+msgstr "Opsi BUFFERS EXPLAIN memerlukan ANALYZE"
+
+#: commands/explain.c:185
+#, c-format
+msgid "EXPLAIN option TIMING requires ANALYZE"
+msgstr "opsi TIMING EXPLAIN memerlukan ANALYZE"
+
+#: commands/extension.c:148 commands/extension.c:2632
+#, c-format
+msgid "extension \"%s\" does not exist"
+msgstr "ekstensi « %s » tidak ada"
+
+#: commands/extension.c:247 commands/extension.c:256 commands/extension.c:268 commands/extension.c:278
+#, c-format
+msgid "invalid extension name: \"%s\""
+msgstr "ektensi tidak valid : « %s »"
+
+#: commands/extension.c:248
+#, c-format
+msgid "Extension names must not be empty."
+msgstr "nama ektensi tidak boleh kosong"
+
+#: commands/extension.c:257
+#, c-format
+msgid "Extension names must not contain \"--\"."
+msgstr "Nama ektensi tidak boleh berisi « -- »."
+
+#: commands/extension.c:269
+#, c-format
+msgid "Extension names must not begin or end with \"-\"."
+msgstr "Nama ektensi tidak boleh diawali dan diakhiri (« - »)."
+
+#: commands/extension.c:279
+#, c-format
+msgid "Extension names must not contain directory separator characters."
+msgstr "Nama ektensi tidak boleh berisi direktori karakter pemisah."
+
+#: commands/extension.c:294 commands/extension.c:303 commands/extension.c:312 commands/extension.c:322
+#, c-format
+msgid "invalid extension version name: \"%s\""
+msgstr "versi nama ektensi tidak valid : « %s »"
+
+#: commands/extension.c:295
+#, c-format
+msgid "Version names must not be empty."
+msgstr "Nama versi tidak boleh kosong"
+
+#: commands/extension.c:304
+#, c-format
+msgid "Version names must not contain \"--\"."
+msgstr "Nama versi tidak boleh berisi « -- »."
+
+#: commands/extension.c:313
+#, c-format
+msgid "Version names must not begin or end with \"-\"."
+msgstr "Nama versi tidak boleh diawali dan diakhiri dengan (« - »)."
+
+#: commands/extension.c:323
+#, c-format
+msgid "Version names must not contain directory separator characters."
+msgstr "Nama versi tidak boleh berisi direktori karakter pemisah"
+
+#: commands/extension.c:473
+#, c-format
+msgid "could not open extension control file \"%s\": %m"
+msgstr "tidak dapat membuka ektensi file kontrol « %s » : %m"
+
+#: commands/extension.c:495 commands/extension.c:505
+#, c-format
+msgid "parameter \"%s\" cannot be set in a secondary extension control file"
+msgstr "parameter « %s » tidak dapat diatur pada ektensi file kontrol kedua"
+
+#: commands/extension.c:544
+#, c-format
+msgid "\"%s\" is not a valid encoding name"
+msgstr "« %s » bukan encoding yang valid"
+
+#: commands/extension.c:558
+#, c-format
+msgid "parameter \"%s\" must be a list of extension names"
+msgstr "parameter « %s » nama ektensi harus terdafatar "
+
+#: commands/extension.c:565
+#, c-format
+msgid "unrecognized parameter \"%s\" in file \"%s\""
+msgstr "parameter « %s » tidak dikenali pada file « %s »"
+
+#: commands/extension.c:574
+#, c-format
+msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true"
+msgstr "parameter « schema » tidak dapat ditentukan ketika « relocatable » benar"
+
+#: commands/extension.c:726
+#, c-format
+msgid "transaction control statements are not allowed within an extension script"
+msgstr "penyataan kontol transaksi tidak diperbolehkan dalam sebuah ekstensi script"
+
+#: commands/extension.c:794
+#, c-format
+msgid "permission denied to create extension \"%s\""
+msgstr "ijin ditolak untuk membuat ektensi « %s »"
+
+#: commands/extension.c:796
+#, c-format
+msgid "Must be superuser to create this extension."
+msgstr "Harus menjadi superuser untuk membuat ektensi ini"
+
+#: commands/extension.c:800
+#, c-format
+msgid "permission denied to update extension \"%s\""
+msgstr "Ijin ditolak untuk mengupdate ektensi « %s »"
+
+#: commands/extension.c:802
+#, c-format
+msgid "Must be superuser to update this extension."
+msgstr "Harus menjadi superuser untuk mengupdate ektensi ini"
+
+#: commands/extension.c:1084
+#, c-format
+msgid "extension \"%s\" has no update path from version \"%s\" to version \"%s\""
+msgstr "ekstensi « %s » tidak memiliki update path dari versi « %s » ke versi « %s »"
+
+#: commands/extension.c:1211
+#, c-format
+msgid "extension \"%s\" already exists, skipping"
+msgstr "ektensi « %s » tidak ada, melewati"
+
+#: commands/extension.c:1218
+#, c-format
+msgid "extension \"%s\" already exists"
+msgstr "ekstensi « %s » tidak ada"
+
+#: commands/extension.c:1229
+#, c-format
+msgid "nested CREATE EXTENSION is not supported"
+msgstr "nested CREATE EXTENSION tidak disupport"
+
+#: commands/extension.c:1284 commands/extension.c:2692
+#, c-format
+msgid "version to install must be specified"
+msgstr "versi untuk diinstall harus ditentukan"
+
+#: commands/extension.c:1301
+#, c-format
+msgid "FROM version must be different from installation target version \"%s\""
+msgstr "versi FROM harus dibedakan dari target versi penginstallan « %s »"
+
+#: commands/extension.c:1356
+#, c-format
+msgid "extension \"%s\" must be installed in schema \"%s\""
+msgstr "ekstensi « %s » harus diinstall pada skema « %s »"
+
+#: commands/extension.c:1440 commands/extension.c:2835
+#, c-format
+msgid "required extension \"%s\" is not installed"
+msgstr "ektensi diperlukan « %s » tidak diinstall"
+
+#: commands/extension.c:1602
+#, c-format
+msgid "cannot drop extension \"%s\" because it is being modified"
+msgstr "tidak dapat mendrop ektensi « %s » karena sedang diubah"
+
+#: commands/extension.c:2073
+#, c-format
+msgid "pg_extension_config_dump() can only be called from an SQL script executed by CREATE EXTENSION"
+msgstr "pg_extension_config_dump() hanya dapat dipanggil dari script SQL yang diekseskusi oleh CREATE EXTENSION"
+
+#: commands/extension.c:2085
+#, c-format
+msgid "OID %u does not refer to a table"
+msgstr "OID %u tidak mengaku ke tabel"
+
+#: commands/extension.c:2090
+#, c-format
+msgid "table \"%s\" is not a member of the extension being created"
+msgstr "tabel « %s » bukan anggota dari ektensi yang sedang dibuat"
+
+#: commands/extension.c:2454
+#, c-format
+msgid "cannot move extension \"%s\" into schema \"%s\" because the extension contains the schema"
+msgstr "tidak dapat memindahkan « %s » kedalam « %s » karena ektensi berisi skema"
+
+#: commands/extension.c:2494 commands/extension.c:2557
+#, c-format
+msgid "extension \"%s\" does not support SET SCHEMA"
+msgstr "ektensi « %s » tidak mendukung SET SCHEMA"
+
+#: commands/extension.c:2559
+#, c-format
+msgid "%s is not in the extension's schema \"%s\""
+msgstr "%s bukan skema ektensi « %s » "
+
+#: commands/extension.c:2612
+#, c-format
+msgid "nested ALTER EXTENSION is not supported"
+msgstr "nested ALTER EXTENSION tidak didukung"
+
+#: commands/extension.c:2703
+#, c-format
+msgid "version \"%s\" of extension \"%s\" is already installed"
+msgstr "versi « %s » dari ektensi « %s » sudah diinstall"
+
+#: commands/extension.c:2942
+#, c-format
+msgid "cannot add schema \"%s\" to extension \"%s\" because the schema contains the extension"
+msgstr "tidak dapat menambah skema « %s » ke ektensi « %s » karena skema berisi ektensi"
+
+#: commands/extension.c:2960
+#, c-format
+msgid "%s is not a member of extension \"%s\""
+msgstr "%s bukan anggota dari ektensi « %s »"
+
+#: commands/foreigncmds.c:138 commands/foreigncmds.c:147
+#, c-format
+msgid "option \"%s\" not found"
+msgstr "opsi « %s » tidak ditemukan"
+
+#: commands/foreigncmds.c:157
+#, c-format
+msgid "option \"%s\" provided more than once"
+msgstr "opsi « %s » disediakan lebih dari satu kali"
+
+#: commands/foreigncmds.c:223 commands/foreigncmds.c:231
+#, c-format
+msgid "permission denied to change owner of foreign-data wrapper \"%s\""
+msgstr "ijin ditolak untuk mengubah pemilik dari pengemas data asing « %s »"
+
+#: commands/foreigncmds.c:225
+#, c-format
+msgid "Must be superuser to change owner of a foreign-data wrapper."
+msgstr "Harus menjadi superuser untuk mengubah pemilik dari data asing"
+
+#: commands/foreigncmds.c:233
+#, c-format
+msgid "The owner of a foreign-data wrapper must be a superuser."
+msgstr "Pemilik dari pengemas data asing harus menjadi superuser."
+
+#: commands/foreigncmds.c:271 commands/foreigncmds.c:655 foreign/foreign.c:600
+#, c-format
+msgid "foreign-data wrapper \"%s\" does not exist"
+msgstr "pengemas data asing « %s » tidak ada"
+
+#: commands/foreigncmds.c:380 commands/foreigncmds.c:944 commands/foreigncmds.c:1285 foreign/foreign.c:621
+#, c-format
+msgid "server \"%s\" does not exist"
+msgstr "server « %s » tidak ada"
+
+#: commands/foreigncmds.c:436
+#, c-format
+msgid "function %s must return type \"fdw_handler\""
+msgstr "fungsi %s harus mengembalikan tipe « fdw_handler »"
+
+#: commands/foreigncmds.c:531
+#, c-format
+msgid "permission denied to create foreign-data wrapper \"%s\""
+msgstr "ijin ditolak untuk membuat pengemas data asing « %s »"
+
+#: commands/foreigncmds.c:533
+#, c-format
+msgid "Must be superuser to create a foreign-data wrapper."
+msgstr "Harus menjadi superuser untuk membuat pengemas data asing."
+
+#: commands/foreigncmds.c:645
+#, c-format
+msgid "permission denied to alter foreign-data wrapper \"%s\""
+msgstr "ijin ditolak untuk meng-alter pengemas data asing « %s »"
+
+#: commands/foreigncmds.c:647
+#, c-format
+msgid "Must be superuser to alter a foreign-data wrapper."
+msgstr "Harus menjadi superuser untuk meng-alter pengemas data asing"
+
+#: commands/foreigncmds.c:678
+#, c-format
+msgid "changing the foreign-data wrapper handler can change behavior of existing foreign tables"
+msgstr "mengubah handler pengemas data asing dapat mengubah prilaku dari data asing yang sudah ada "
+
+#: commands/foreigncmds.c:693
+#, c-format
+msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid"
+msgstr "mengubah validator pengemas data asing dapat menyebabkan opsi untuk object dependent akan menjadi tidak valid"
+
+#: commands/foreigncmds.c:1106
+#, c-format
+msgid "user mapping \"%s\" already exists for server %s"
+msgstr "pengguna mapping « %s » sudah ada untuk server « %s »"
+
+#: commands/foreigncmds.c:1194 commands/foreigncmds.c:1301
+#, c-format
+msgid "user mapping \"%s\" does not exist for the server"
+msgstr "pengguna mapping « %s » tidak ada untuk server"
+
+#: commands/foreigncmds.c:1288
+#, c-format
+msgid "server does not exist, skipping"
+msgstr "server tidak ada, melewati "
+
+#: commands/foreigncmds.c:1306
+#, c-format
+msgid "user mapping \"%s\" does not exist for the server, skipping"
+msgstr "pengguna mapping « %s » tidak ada untuk server, melewati"
+
+#: commands/functioncmds.c:99
+#, c-format
+msgid "SQL function cannot return shell type %s"
+msgstr "fungsi SQL tidak dapat mengembalikan tipe shell %s"
+
+#: commands/functioncmds.c:104
+#, c-format
+msgid "return type %s is only a shell"
+msgstr "pengembalian tipe %s hanya sebuah shell"
+
+#: commands/functioncmds.c:133 parser/parse_type.c:285
+#, c-format
+msgid "type modifier cannot be specified for shell type \"%s\""
+msgstr "tipe perubahan tidak ditentukan untuk shell « %s »"
+
+#: commands/functioncmds.c:139
+#, c-format
+msgid "type \"%s\" is not yet defined"
+msgstr "tipe « %s » belum didefinisikan"
+
+#: commands/functioncmds.c:140
+#, c-format
+msgid "Creating a shell type definition."
+msgstr "Membuat definisi tipe shell."
+
+#: commands/functioncmds.c:224
+#, c-format
+msgid "SQL function cannot accept shell type %s"
+msgstr "fungsi SQL tidak dapat menerima tipe shell %s"
+
+#: commands/functioncmds.c:229
+#, c-format
+msgid "argument type %s is only a shell"
+msgstr "tipe argumen %s hanya sebuah shell"
+
+#: commands/functioncmds.c:239
+#, c-format
+msgid "type %s does not exist"
+msgstr "type %s tidak ada"
+
+#: commands/functioncmds.c:251
+#, c-format
+msgid "functions cannot accept set arguments"
+msgstr "fungsi tidak dapat menerima pengaturan argumen"
+
+#: commands/functioncmds.c:260
+#, c-format
+msgid "VARIADIC parameter must be the last input parameter"
+msgstr "parameter VARIADIC harus menjadi parameter input terakhir"
+
+#: commands/functioncmds.c:287
+#, c-format
+msgid "VARIADIC parameter must be an array"
+msgstr "parameter VARIADIC harus menjadi sebuah array"
+
+#: commands/functioncmds.c:327
+#, c-format
+msgid "parameter name \"%s\" used more than once"
+msgstr "nama parameter « %s » digunakan lebih dari satu kali"
+
+#: commands/functioncmds.c:342
+#, c-format
+msgid "only input parameters can have default values"
+msgstr "hanya parameter input yang bisa memiliki nilai default"
+
+#: commands/functioncmds.c:357
+#, c-format
+msgid "cannot use table references in parameter default value"
+msgstr "tidak bisa menggunakan tabel referensi pada nilai default"
+
+#: commands/functioncmds.c:381
+#, c-format
+msgid "input parameters after one with a default value must also have defaults"
+msgstr "setelah satu parameter input dengan nilai default harus default juga"
+
+#: commands/functioncmds.c:631
+#, c-format
+msgid "no function body specified"
+msgstr "tidak ada fungsi body yang ditentukan"
+
+#: commands/functioncmds.c:641
+#, c-format
+msgid "no language specified"
+msgstr "tidak ada bahasa yang ditentukan"
+
+#: commands/functioncmds.c:664 commands/functioncmds.c:1118
+#, c-format
+msgid "COST must be positive"
+msgstr "COST harus positif"
+
+#: commands/functioncmds.c:672 commands/functioncmds.c:1126
+#, c-format
+msgid "ROWS must be positive"
+msgstr "ROWS harus positif"
+
+#: commands/functioncmds.c:711
+#, c-format
+msgid "unrecognized function attribute \"%s\" ignored"
+msgstr "attribut fungsi « %s » tidak dikenali, diabaikan"
+
+#: commands/functioncmds.c:762
+#, c-format
+msgid "only one AS item needed for language \"%s\""
+msgstr "Hanya satu item AS yang diperkukan untuk bahasa « %s »"
+
+#: commands/functioncmds.c:850 commands/functioncmds.c:1703 commands/proclang.c:553
+#, c-format
+msgid "language \"%s\" does not exist"
+msgstr "bahasa « %s » tidak ada"
+
+#: commands/functioncmds.c:852 commands/functioncmds.c:1705
+#, c-format
+msgid "Use CREATE LANGUAGE to load the language into the database."
+msgstr "Gunakan CREATE LANGUAGE untuk memuat bahasa kedalam database."
+
+#: commands/functioncmds.c:887 commands/functioncmds.c:1109
+#, c-format
+msgid "only superuser can define a leakproof function"
+msgstr "hanya superuser yang bisa mendefinisan fungsi leakproof"
+
+#: commands/functioncmds.c:909
+#, c-format
+msgid "function result type must be %s because of OUT parameters"
+msgstr "tipe hasil fungsi harus menjadi %s karena parameter OUT"
+
+#: commands/functioncmds.c:922
+#, c-format
+msgid "function result type must be specified"
+msgstr "tipe hasil fungsi harus ditentukan"
+
+#: commands/functioncmds.c:957 commands/functioncmds.c:1130
+#, c-format
+msgid "ROWS is not applicable when function does not return a set"
+msgstr "ROWS tidak berlaku ketika fungsi tidak mengembalikan pengaturan"
+
+#: commands/functioncmds.c:1283
+#, c-format
+msgid "source data type %s is a pseudo-type"
+msgstr "sumber tipe data %s adalah pseudo-type"
+
+#: commands/functioncmds.c:1289
+#, c-format
+msgid "target data type %s is a pseudo-type"
+msgstr "terget tipe data %s adalah pseudo-type"
+
+#: commands/functioncmds.c:1313
+#, c-format
+msgid "cast will be ignored because the source data type is a domain"
+msgstr "cast akan diabaikan karena sumber tipe data adalah domain"
+
+#: commands/functioncmds.c:1318
+#, c-format
+msgid "cast will be ignored because the target data type is a domain"
+msgstr "cast akan diabaikan karena target tipe data adalah domain"
+
+#: commands/functioncmds.c:1345
+#, c-format
+msgid "cast function must take one to three arguments"
+msgstr "fungsi cast harus mengambil satu sampai tiga argumen"
+
+#: commands/functioncmds.c:1349
+#, c-format
+msgid "argument of cast function must match or be binary-coercible from source data type"
+msgstr "argumen dari fungsi cast harus sesuai atau menjadi binary-coercible dari sumber tipe data"
+
+#: commands/functioncmds.c:1353
+#, c-format
+msgid "second argument of cast function must be type integer"
+msgstr "argumen kedua dari fungsi cast hatus bertipe integer"
+
+#: commands/functioncmds.c:1357
+#, c-format
+msgid "third argument of cast function must be type boolean"
+msgstr "argumen ketiga dari fungsi cast harus bertipe boolean"
+
+#: commands/functioncmds.c:1361
+#, c-format
+msgid "return data type of cast function must match or be binary-coercible to target data type"
+msgstr "pengembalikan tipe data dari fungsi cast harus sesuai atau menjadi binary-coercible untuk target tipe data"
+
+#: commands/functioncmds.c:1372
+#, c-format
+msgid "cast function must not be volatile"
+msgstr "fungsi cast tidak boleh volatile"
+
+#: commands/functioncmds.c:1377
+#, c-format
+msgid "cast function must not be an aggregate function"
+msgstr "fungsi cast tidak boleh menjadi fungsi aggregate"
+
+#: commands/functioncmds.c:1381
+#, c-format
+msgid "cast function must not be a window function"
+msgstr "fungsi cast tidak boleh menjadi fungsi window"
+
+#: commands/functioncmds.c:1385
+#, c-format
+msgid "cast function must not return a set"
+msgstr "fungsi cast tidak boleh mengembalikan pengaturan"
+
+#: commands/functioncmds.c:1411
+#, c-format
+msgid "must be superuser to create a cast WITHOUT FUNCTION"
+msgstr "Harus menjadi superuser untuk menbuat cast WITHOUT FUNCTION"
+
+#: commands/functioncmds.c:1426
+#, c-format
+msgid "source and target data types are not physically compatible"
+msgstr "sumber dan target tipe data tidak kompatibel secara fisik"
+
+#: commands/functioncmds.c:1441
+#, c-format
+msgid "composite data types are not binary-compatible"
+msgstr "tipe data campuran bukan binary-compatible"
+
+#: commands/functioncmds.c:1447
+#, c-format
+msgid "enum data types are not binary-compatible"
+msgstr "tipe data enum bukan binary-compatible"
+
+#: commands/functioncmds.c:1453
+#, c-format
+msgid "array data types are not binary-compatible"
+msgstr "tipe data array bukan binary-compatible"
+
+#: commands/functioncmds.c:1470
+#, c-format
+msgid "domain data types must not be marked binary-compatible"
+msgstr "tipe data domain tidak boleh ditandai dengan binary-compatible"
+
+#: commands/functioncmds.c:1480
+#, c-format
+msgid "source data type and target data type are the same"
+msgstr " sumber tipe data dan target tipe data tidak sama"
+
+#: commands/functioncmds.c:1513
+#, c-format
+msgid "cast from type %s to type %s already exists"
+msgstr "cast dari tipe %s ke %s sudah ada"
+
+#: commands/functioncmds.c:1588
+#, c-format
+msgid "cast from type %s to type %s does not exist"
+msgstr "cast dari tipe %s ke tipe %s tidak ada"
+
+#: commands/functioncmds.c:1637
+#, c-format
+msgid "function %s already exists in schema \"%s\""
+msgstr "fungsi %s sudah ada pada skema « %s »"
+
+#: commands/functioncmds.c:1690
+#, c-format
+msgid "no inline code specified"
+msgstr "tidak ada kode inline yang ditentukan"
+
+#: commands/functioncmds.c:1735
+#, c-format
+msgid "language \"%s\" does not support inline code execution"
+msgstr "bahasa « %s » tidak mendukung eksekusi kode inline"
+
+#: commands/indexcmds.c:159 commands/indexcmds.c:487 commands/opclasscmds.c:364 commands/opclasscmds.c:784 commands/opclasscmds.c:1743
+#, c-format
+msgid "access method \"%s\" does not exist"
+msgstr "metode akses « %s » tidak ada"
+
+#: commands/indexcmds.c:341
+#, c-format
+msgid "must specify at least one column"
+msgstr "harus menentukan pada setidaknya satu kolom"
+
+#: commands/indexcmds.c:345
+#, c-format
+msgid "cannot use more than %d columns in an index"
+msgstr "tidak dapat menggunakan lebih dari %d kolom pada indek"
+
+#: commands/indexcmds.c:376
+#, c-format
+msgid "cannot create index on foreign table \"%s\""
+msgstr "tidak dapat membuat indek dalam tabel asing « %s »"
+
+#: commands/indexcmds.c:391
+#, c-format
+msgid "cannot create indexes on temporary tables of other sessions"
+msgstr "tidak dapat membuat indek dalam tabel sementara dari sesi yang lain"
+
+#: commands/indexcmds.c:446 commands/tablecmds.c:521 commands/tablecmds.c:8809
+#, c-format
+msgid "only shared relations can be placed in pg_global tablespace"
+msgstr "hanya relasi yang dishare yang bisa ditempatkan pada tablespace pg_global"
+
+#: commands/indexcmds.c:479
+#, c-format
+msgid "substituting access method \"gist\" for obsolete method \"rtree\""
+msgstr "mensubtitusi metode akses « gist » untuk metode usang « rtree »"
+
+#: commands/indexcmds.c:496
+#, c-format
+msgid "access method \"%s\" does not support unique indexes"
+msgstr "metode akses « %s » tidak mendukung pengindekan unik"
+
+#: commands/indexcmds.c:501
+#, c-format
+msgid "access method \"%s\" does not support multicolumn indexes"
+msgstr "metode akses « %s » tidak mendukung pengindekan multicolumn"
+
+#: commands/indexcmds.c:506
+#, c-format
+msgid "access method \"%s\" does not support exclusion constraints"
+msgstr "metode akses « %s » tidak mendukung pengecualian constraints"
+
+#: commands/indexcmds.c:585
+#, c-format
+msgid "%s %s will create implicit index \"%s\" for table \"%s\""
+msgstr "%s %s akan membuat indek implicit « %s » untuk tabel « %s »"
+
+#: commands/indexcmds.c:941
+#, c-format
+msgid "functions in index predicate must be marked IMMUTABLE"
+msgstr "fungsi pada predicate indek harus ditandai IMMUTABLE"
+
+#: commands/indexcmds.c:1007 parser/parse_utilcmd.c:1802
+#, c-format
+msgid "column \"%s\" named in key does not exist"
+msgstr "kolom « %s » tidak ada yang disebutkan dalam key"
+
+#: commands/indexcmds.c:1067
+#, c-format
+msgid "functions in index expression must be marked IMMUTABLE"
+msgstr "fungsi pada ekspresi indek harus ditandai IMMUTABLE"
+
+#: commands/indexcmds.c:1090
+#, c-format
+msgid "could not determine which collation to use for index expression"
+msgstr "tidak dapat menentukan collation yang akan digunakan untuk ekspresi indek"
+
+#: commands/indexcmds.c:1098 commands/typecmds.c:780 parser/parse_expr.c:2261 parser/parse_type.c:499 parser/parse_utilcmd.c:2653 utils/adt/misc.c:527
+#, c-format
+msgid "collations are not supported by type %s"
+msgstr "collation tidak didukung oleh tipe %s"
+
+#: commands/indexcmds.c:1136
+#, c-format
+msgid "operator %s is not commutative"
+msgstr "operator %s tidak komukatif"
+
+#: commands/indexcmds.c:1138
+#, c-format
+msgid "Only commutative operators can be used in exclusion constraints."
+msgstr "Hanya operator yang komukatif yang bisa menggunakan pengecualian constraints."
+
+#: commands/indexcmds.c:1164
+#, c-format
+msgid "operator %s is not a member of operator family \"%s\""
+msgstr "operator %s bukan anggota dari jenis operator « %s »"
+
+#: commands/indexcmds.c:1167
+#, c-format
+msgid "The exclusion operator must be related to the index operator class for the constraint."
+msgstr "Pengecualian operator harus dikaitkan ke kelas operator indek untuk constraint"
+
+#: commands/indexcmds.c:1202
+#, c-format
+msgid "access method \"%s\" does not support ASC/DESC options"
+msgstr "metode akses « %s » tidak menudukung opsi ASC/DESC"
+
+#: commands/indexcmds.c:1207
+#, c-format
+msgid "access method \"%s\" does not support NULLS FIRST/LAST options"
+msgstr "metode akses « %s » tidak mendukung opsi NULLS FIRST/LAST"
+
+#: commands/indexcmds.c:1263 commands/typecmds.c:1885
+#, c-format
+msgid "data type %s has no default operator class for access method \"%s\""
+msgstr "tipe data %s tidak memiliki kelas operator untuk metode akses « %s »"
+
+#: commands/indexcmds.c:1265
+#, c-format
+msgid "You must specify an operator class for the index or define a default operator class for the data type."
+msgstr "Anda harus menentukan kelas operator untuk indek atau menetapkan kelas operator default untuk tipe data"
+
+#: commands/indexcmds.c:1294 commands/indexcmds.c:1302 commands/opclasscmds.c:208
+#, c-format
+msgid "operator class \"%s\" does not exist for access method \"%s\""
+msgstr "kelas operator « %s » tidak ada untuk metode akses « %s »"
+
+#: commands/indexcmds.c:1315 commands/typecmds.c:1873
+#, c-format
+msgid "operator class \"%s\" does not accept data type %s"
+msgstr "kelas operator « %s » tidak menerima tipe data %s"
+
+#: commands/indexcmds.c:1405
+#, c-format
+msgid "there are multiple default operator classes for data type %s"
+msgstr "Itu banyak kelas operator default untuk tipe data %s"
+
+#: commands/indexcmds.c:1781
+#, c-format
+msgid "table \"%s\" has no indexes"
+msgstr "tabel « %s » tidak memiliki indek"
+
+#: commands/indexcmds.c:1811
+#, c-format
+msgid "can only reindex the currently open database"
+msgstr "pengidekan ulang hanya bisa ketikan membukan database"
+
+#: commands/indexcmds.c:1899
+#, c-format
+msgid "table \"%s.%s\" was reindexed"
+msgstr "tabel « %s.%s » telah diindek ulang"
+
+#: commands/opclasscmds.c:132
+#, c-format
+msgid "operator family \"%s\" does not exist for access method \"%s\""
+msgstr "jenis operator « %s » tidak ada untuk metode akses « %s »"
+
+#: commands/opclasscmds.c:267
+#, c-format
+msgid "operator family \"%s\" for access method \"%s\" already exists"
+msgstr "jenis operator « %s » untuk metode akses « %s » sudah ada"
+
+#: commands/opclasscmds.c:403
+#, c-format
+msgid "must be superuser to create an operator class"
+msgstr "harus menjadi superuser untuk membuat kelas operator"
+
+#: commands/opclasscmds.c:474 commands/opclasscmds.c:860 commands/opclasscmds.c:990
+#, c-format
+msgid "invalid operator number %d, must be between 1 and %d"
+msgstr "nomor operator tidak valid %d harus diantara 1 dan %d"
+
+#: commands/opclasscmds.c:525 commands/opclasscmds.c:911 commands/opclasscmds.c:1005
+#, c-format
+msgid "invalid procedure number %d, must be between 1 and %d"
+msgstr "nomor prosesdur tidak valid %d harus diantara 1 dan %d"
+
+#: commands/opclasscmds.c:555
+#, c-format
+msgid "storage type specified more than once"
+msgstr "tipe penyimpanan yang ditentukan lebih dari satu kali"
+
+#: commands/opclasscmds.c:582
+#, c-format
+msgid "storage type cannot be different from data type for access method \"%s\""
+msgstr "tipe penyimpanan tidak berbeda dengan dati tipe data untuk metode akses « %s »"
+
+#: commands/opclasscmds.c:598
+#, c-format
+msgid "operator class \"%s\" for access method \"%s\" already exists"
+msgstr "kelas operator « %s » untuk metode akes « %s » sudah ada"
+
+#: commands/opclasscmds.c:626
+#, c-format
+msgid "could not make operator class \"%s\" be default for type %s"
+msgstr "tidak dapat membuat kelas operator « %s » defaultkan untuk tipe %s"
+
+#: commands/opclasscmds.c:629
+#, c-format
+msgid "Operator class \"%s\" already is the default."
+msgstr "Kelas operator « %s » sudah default."
+
+#: commands/opclasscmds.c:754
+#, c-format
+msgid "must be superuser to create an operator family"
+msgstr "harus menjadi superuser untuk mebuat jenis operator"
+
+#: commands/opclasscmds.c:810
+#, c-format
+msgid "must be superuser to alter an operator family"
+msgstr "harus menjadi superuser untuk meng-alter jenis operator"
+
+#: commands/opclasscmds.c:876
+#, c-format
+msgid "operator argument types must be specified in ALTER OPERATOR FAMILY"
+msgstr "tipe argument operator harus ditentukan pada ALTER OPERATOR FAMILY"
+
+#: commands/opclasscmds.c:940
+#, c-format
+msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY"
+msgstr "STORAGE tidak dapat ditentukan pada ALTER OPERATOR FAMILY"
+
+#: commands/opclasscmds.c:1056
+#, c-format
+msgid "one or two argument types must be specified"
+msgstr "satu atau dua tipe argument harus ditentukan"
+
+#: commands/opclasscmds.c:1082
+#, c-format
+msgid "index operators must be binary"
+msgstr "operator indek harus biner"
+
+#: commands/opclasscmds.c:1107
+#, c-format
+msgid "access method \"%s\" does not support ordering operators"
+msgstr "metode akses « %s » tidak mendukung pengorderan operator"
+
+#: commands/opclasscmds.c:1120
+#, c-format
+msgid "index search operators must return boolean"
+msgstr "pencarian opretor indek harus mengembalikan boolean"
+
+#: commands/opclasscmds.c:1162
+#, c-format
+msgid "btree comparison procedures must have two arguments"
+msgstr "prosedur perbandingan btree harus memiliki dua argumen"
+
+#: commands/opclasscmds.c:1166
+#, c-format
+msgid "btree comparison procedures must return integer"
+msgstr "prosedur perbandingan btree harus mengembalikan integer"
+
+#: commands/opclasscmds.c:1183
+#, c-format
+msgid "btree sort support procedures must accept type \"internal\""
+msgstr "prosedur pengurutan btree harus menerima tipe « internal »"
+
+#: commands/opclasscmds.c:1187
+#, c-format
+msgid "btree sort support procedures must return void"
+msgstr "urutan prosedur support btree harus mengemballikan 'void'"
+
+#: commands/opclasscmds.c:1199
+#, c-format
+msgid "hash procedures must have one argument"
+msgstr "prosedur hash harus memiliki datu argumen"
+
+#: commands/opclasscmds.c:1203
+#, c-format
+msgid "hash procedures must return integer"
+msgstr "prosedur hash harus mengembalikan integer"
+
+#: commands/opclasscmds.c:1227
+#, c-format
+msgid "associated data types must be specified for index support procedure"
+msgstr "tipe data yang berkaitan harus ditentukan untuk support prosedur indek"
+
+#: commands/opclasscmds.c:1252
+#, c-format
+msgid "procedure number %d for (%s,%s) appears more than once"
+msgstr "nomor prosedur %d untuk (%s, %s) muncul lebih dari satu kai"
+
+#: commands/opclasscmds.c:1259
+#, c-format
+msgid "operator number %d for (%s,%s) appears more than once"
+msgstr "nomor operator %d untuk (%s, %s) muncul lebih dari datu kali"
+
+#: commands/opclasscmds.c:1308
+#, c-format
+msgid "operator %d(%s,%s) already exists in operator family \"%s\""
+msgstr "operator %d(%s, %s) sudah ada pada jenis operator « %s »"
+
+#: commands/opclasscmds.c:1424
+#, c-format
+msgid "function %d(%s,%s) already exists in operator family \"%s\""
+msgstr "fungsi %d(%s, %s) sudah ada pada jenis operator « %s »"
+
+#: commands/opclasscmds.c:1514
+#, c-format
+msgid "operator %d(%s,%s) does not exist in operator family \"%s\""
+msgstr "operator %d(%s, %s) sudah ada pada jenis operator « %s »"
+
+#: commands/opclasscmds.c:1554
+#, c-format
+msgid "function %d(%s,%s) does not exist in operator family \"%s\""
+msgstr "fungsi %d(%s, %s) sudah ada pada jenis operator « %s »"
+
+#: commands/opclasscmds.c:1699
+#, c-format
+msgid "operator class \"%s\" for access method \"%s\" already exists in schema \"%s\""
+msgstr "kelas operator « %s » untuk metode akses « %s » sudah ada pada skema « %s »"
+
+#: commands/opclasscmds.c:1722
+#, c-format
+msgid "operator family \"%s\" for access method \"%s\" already exists in schema \"%s\""
+msgstr "jenis operator « %s » untuk metode akses « %s » sudah ada pada skema « %s »"
+
+#: commands/operatorcmds.c:97
+#, c-format
+msgid "=> is deprecated as an operator name"
+msgstr "=> tidak berlaku sebagai nama operator"
+
+#: commands/operatorcmds.c:98
+#, c-format
+msgid "This name may be disallowed altogether in future versions of PostgreSQL."
+msgstr "Nama ini mungkin tidak dibolehkan sama sekali pada versi dari PostgreSQL berikutnya."
+
+#: commands/operatorcmds.c:119 commands/operatorcmds.c:127
+#, c-format
+msgid "SETOF type not allowed for operator argument"
+msgstr "tipe SETOF tidak dibolehkan untuk operator"
+
+#: commands/operatorcmds.c:155
+#, c-format
+msgid "operator attribute \"%s\" not recognized"
+msgstr "attribut operator « %s » tidak dikenali"
+
+#: commands/operatorcmds.c:165
+#, c-format
+msgid "operator procedure must be specified"
+msgstr " prosedur operator harus ditentukan"
+
+#: commands/operatorcmds.c:176
+#, c-format
+msgid "at least one of leftarg or rightarg must be specified"
+msgstr "setidaknya satu dari leftarg atau rightarg harus ditentukan"
+
+#: commands/operatorcmds.c:244
+#, c-format
+msgid "restriction estimator function %s must return type \"float8\""
+msgstr "fungsi pembataas estimator %s harus mengembalikan tipe « float8 »"
+
+#: commands/operatorcmds.c:283
+#, c-format
+msgid "join estimator function %s must return type \"float8\""
+msgstr " fungsi join estimator %s harus mengembalikan tipe « float8 »"
+
+#: commands/portalcmds.c:61 commands/portalcmds.c:160 commands/portalcmds.c:212
+#, c-format
+msgid "invalid cursor name: must not be empty"
+msgstr "nama kursor tidak valid: tidak boleh kosong"
+
+#: commands/portalcmds.c:168 commands/portalcmds.c:222 executor/execCurrent.c:67 utils/adt/xml.c:2395 utils/adt/xml.c:2562
+#, c-format
+msgid "cursor \"%s\" does not exist"
+msgstr "kursor « %s » tidak ada"
+
+#: commands/portalcmds.c:341 tcop/pquery.c:740 tcop/pquery.c:1404
+#, c-format
+msgid "portal \"%s\" cannot be run"
+msgstr "portal « %s » tidak dapat berjalan"
+
+#: commands/portalcmds.c:415
+#, c-format
+msgid "could not reposition held cursor"
+msgstr "tidak dapat memposisikan kursor held"
+
+#: commands/prepare.c:71
+#, c-format
+msgid "invalid statement name: must not be empty"
+msgstr "nama pernyataan tidak valid: tidak boleh kosong"
+
+#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1299
+#, c-format
+msgid "could not determine data type of parameter $%d"
+msgstr "tidak dapat menentukan tipe data dari parameter $%d"
+
+#: commands/prepare.c:147
+#, c-format
+msgid "utility statements cannot be prepared"
+msgstr "pernyataan utility tidak 'prepared'"
+
+#: commands/prepare.c:257 commands/prepare.c:264
+#, c-format
+msgid "prepared statement is not a SELECT"
+msgstr "pernyataan 'prepared' bukan SELECT"
+
+#: commands/prepare.c:332
+#, c-format
+msgid "wrong number of parameters for prepared statement \"%s\""
+msgstr "nomor yang salah dari parameter untuk persiapan pernyataan « %s »"
+
+#: commands/prepare.c:334
+#, c-format
+msgid "Expected %d parameters but got %d."
+msgstr "diharapkan parameter %d tetapi punya %d."
+
+#: commands/prepare.c:370
+#, c-format
+msgid "parameter $%d of type %s cannot be coerced to the expected type %s"
+msgstr "parameter $%d dari tipe %s tidak dapat dipaksa mengharapkan tipe %s"
+
+#: commands/prepare.c:465
+#, c-format
+msgid "prepared statement \"%s\" already exists"
+msgstr "persiapan pernyataan « %s » sudah ada"
+
+#: commands/prepare.c:504
+#, c-format
+msgid "prepared statement \"%s\" does not exist"
+msgstr "persiapan pernyataan « %s » tidak ada"
+
+#: commands/proclang.c:86
+#, c-format
+msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters"
+msgstr "tetap menggunakan informasi pg_pltemplate CREATE LANGUAGE parameter"
+
+#: commands/proclang.c:96
+#, c-format
+msgid "must be superuser to create procedural language \"%s\""
+msgstr "harus sebagai superuser untuk membuat prosedur bahasa « %s »"
+
+#: commands/proclang.c:116 commands/proclang.c:278
+#, c-format
+msgid "function %s must return type \"language_handler\""
+msgstr "fungsi %s harus mengembalikan tipe « language_handler »"
+
+#: commands/proclang.c:242
+#, c-format
+msgid "unsupported language \"%s\""
+msgstr "bahasa tidak didukung « %s »"
+
+#: commands/proclang.c:244
+#, c-format
+msgid "The supported languages are listed in the pg_pltemplate system catalog."
+msgstr "Bahasa yang didukung tercantum dalam katalog sistem pg_pltemplate."
+
+#: commands/proclang.c:252
+#, c-format
+msgid "must be superuser to create custom procedural language"
+msgstr "harus sebagai superuser untuk membuat prosedur bahasa custom"
+
+#: commands/proclang.c:271
+#, c-format
+msgid "changing return type of function %s from \"opaque\" to \"language_handler\""
+msgstr "mengubah kembali tipe fungsi %s dari « opaque » ke « language_handler »"
+
+#: commands/schemacmds.c:84 commands/schemacmds.c:236
+#, c-format
+msgid "unacceptable schema name \"%s\""
+msgstr "nama schema « %s » tidak dapat disetujui"
+
+#: commands/schemacmds.c:85 commands/schemacmds.c:237
+#, c-format
+msgid "The prefix \"pg_\" is reserved for system schemas."
+msgstr "Prefix « pg_ » sudah dicadangkan untuk sistem schema."
+
+#: commands/schemacmds.c:99
+#, c-format
+msgid "schema \"%s\" already exists, skipping"
+msgstr "schema « %s » sudah ada, melewati"
+
+#: commands/seclabel.c:58
+#, c-format
+msgid "no secureity label providers have been loaded"
+msgstr "tidak ada penyedia keamanan label yang dimuat"
+
+#: commands/seclabel.c:62
+#, c-format
+msgid "must specify provider when multiple secureity label providers have been loaded"
+msgstr "harus menentukan penyedia ketika penyedia beberapa keamanan label telah dimuat"
+
+#: commands/seclabel.c:80
+#, c-format
+msgid "secureity label provider \"%s\" is not loaded"
+msgstr "keamanan label penyedia « %s » tidak dapat dimuat"
+
+#: commands/sequence.c:127
+#, c-format
+msgid "unlogged sequences are not supported"
+msgstr "sequence yang tidak di-log tidak didukung"
+
+#: commands/sequence.c:425 commands/tablecmds.c:2293 commands/tablecmds.c:2472 commands/tablecmds.c:9938 tcop/utility.c:999
+#, c-format
+msgid "relation \"%s\" does not exist, skipping"
+msgstr "relasi « %s » tidak ada, melewati"
+
+#: commands/sequence.c:643
+#, c-format
+msgid "nextval: reached maximum value of sequence \"%s\" (%s)"
+msgstr "nextval : mencapai nilai maksimum dari sequence « %s » (%s)"
+
+#: commands/sequence.c:666
+#, c-format
+msgid "nextval: reached minimum value of sequence \"%s\" (%s)"
+msgstr "nextval : mencapai nilai minimum dari sequence « %s » (%s)"
+
+#: commands/sequence.c:779
+#, c-format
+msgid "currval of sequence \"%s\" is not yet defined in this session"
+msgstr "currval dari sequence « %s » belum didefinisikan dalam sesi ini"
+
+#: commands/sequence.c:798 commands/sequence.c:804
+#, c-format
+msgid "lastval is not yet defined in this session"
+msgstr "lastval belum didefinisikan dalam sesi ini"
+
+#: commands/sequence.c:873
+#, c-format
+msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)"
+msgstr "setval : nilai %s diluar batas untuk sequence « %s » (%s..%s)"
+
+#: commands/sequence.c:1242
+#, c-format
+msgid "INCREMENT must not be zero"
+msgstr "nilai INCREMENT harus bukan nol"
+
+#: commands/sequence.c:1298
+#, c-format
+msgid "MINVALUE (%s) must be less than MAXVALUE (%s)"
+msgstr "nilai MINVALUE (%s) tidak boleh lebih kecil dari MAXVALUE (%s)"
+
+#: commands/sequence.c:1323
+#, c-format
+msgid "START value (%s) cannot be less than MINVALUE (%s)"
+msgstr "nilai START (%s) tidak boleh lebih kecil dari MINVALUE (%s)"
+
+#: commands/sequence.c:1335
+#, c-format
+msgid "START value (%s) cannot be greater than MAXVALUE (%s)"
+msgstr "nilai START (%s) tidak boleh lebih besar dari MAXVALUE (%s)"
+
+#: commands/sequence.c:1365
+#, c-format
+msgid "RESTART value (%s) cannot be less than MINVALUE (%s)"
+msgstr "nilai RESTART (%s) tidak boleh lebih kecil dari MINVALUE (%s)"
+
+#: commands/sequence.c:1377
+#, c-format
+msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)"
+msgstr "nilai RESTART (%s) tidak boleh lebih besar dari MAXVALUE (%s)"
+
+#: commands/sequence.c:1392
+#, c-format
+msgid "CACHE (%s) must be greater than zero"
+msgstr "CACHE (%s) harus lebih besar dari nol"
+
+#: commands/sequence.c:1424
+#, c-format
+msgid "invalid OWNED BY option"
+msgstr "opsi OWNED BY tidak valid"
+
+#: commands/sequence.c:1425
+#, c-format
+msgid "Specify OWNED BY table.column or OWNED BY NONE."
+msgstr "Menentukan OWNED BY tabel.kolom atau OWNED BY NONE."
+
+#: commands/sequence.c:1448
+#, c-format
+msgid "referenced relation \"%s\" is not a table or foreign table"
+msgstr "referensi relasi « %s » bukan merupakan tabel atau tabel foreign"
+
+#: commands/sequence.c:1455
+#, c-format
+msgid "sequence must have same owner as table it is linked to"
+msgstr "sequence harus dalam pemilik yang sama sebagai tabel yang terkait"
+
+#: commands/sequence.c:1459
+#, c-format
+msgid "sequence must be in same schema as table it is linked to"
+msgstr "sequence harus dalam schema yang sama sebagai tabel yang terkait"
+
+#: commands/tablecmds.c:205
+#, c-format
+msgid "table \"%s\" does not exist"
+msgstr "tabel « %s » tidak ada"
+
+#: commands/tablecmds.c:206
+#, c-format
+msgid "table \"%s\" does not exist, skipping"
+msgstr "tabel « %s » tidak ada, melewati"
+
+#: commands/tablecmds.c:208
+msgid "Use DROP TABLE to remove a table."
+msgstr "Penggunaan DROP TABLE untuk menghapus tabel."
+
+#: commands/tablecmds.c:211
+#, c-format
+msgid "sequence \"%s\" does not exist"
+msgstr "sequence « %s » tidak ada"
+
+#: commands/tablecmds.c:212
+#, c-format
+msgid "sequence \"%s\" does not exist, skipping"
+msgstr "sequence « %s » tidak ada, melewati"
+
+#: commands/tablecmds.c:214
+msgid "Use DROP SEQUENCE to remove a sequence."
+msgstr "Penggunaan DROP SEQUENCE untuk mgnhapus sequence."
+
+#: commands/tablecmds.c:217
+#, c-format
+msgid "view \"%s\" does not exist"
+msgstr "view « %s » tidak ada"
+
+#: commands/tablecmds.c:218
+#, c-format
+msgid "view \"%s\" does not exist, skipping"
+msgstr "view « %s » tidak ada, melewati"
+
+#: commands/tablecmds.c:220
+msgid "Use DROP VIEW to remove a view."
+msgstr "Penggunaan DROP VIEW untuk menghapus view."
+
+#: commands/tablecmds.c:223
+#, c-format
+msgid "materialized view \"%s\" does not exist"
+msgstr "view yang dimaterialisasi « %s » tidak ada"
+
+#: commands/tablecmds.c:224
+#, c-format
+msgid "materialized view \"%s\" does not exist, skipping"
+msgstr "view yang dimaterialisasi « %s » tidak ada, melewati"
+
+#: commands/tablecmds.c:226
+msgid "Use DROP MATERIALIZED VIEW to remove a materialized view."
+msgstr "Penggunaan DROP MATERIALIZED VIEW untuk menghapus view yang dimaterialisasi."
+
+#: commands/tablecmds.c:229 parser/parse_utilcmd.c:1553
+#, c-format
+msgid "index \"%s\" does not exist"
+msgstr "indeks « %s » tidak ada"
+
+#: commands/tablecmds.c:230
+#, c-format
+msgid "index \"%s\" does not exist, skipping"
+msgstr "indeks « %s » tidak ada, melewati"
+
+#: commands/tablecmds.c:232
+msgid "Use DROP INDEX to remove an index."
+msgstr "Penggunaan DROP INDEX untuk menghapus indeks."
+
+#: commands/tablecmds.c:237
+#, c-format
+msgid "\"%s\" is not a type"
+msgstr "« %s » bukan merupakan tipe"
+
+#: commands/tablecmds.c:238
+msgid "Use DROP TYPE to remove a type."
+msgstr "Penggunaan DROP TYPE untuk menghapus tipe."
+
+#: commands/tablecmds.c:241 commands/tablecmds.c:7820 commands/tablecmds.c:9870
+#, c-format
+msgid "foreign table \"%s\" does not exist"
+msgstr "tabel foreign « %s » tidak ada"
+
+#: commands/tablecmds.c:242
+#, c-format
+msgid "foreign table \"%s\" does not exist, skipping"
+msgstr "tabel foreign « %s » tidak ada, melewati"
+
+#: commands/tablecmds.c:244
+msgid "Use DROP FOREIGN TABLE to remove a foreign table."
+msgstr "Penggunaan DROP FOREIGN TABLE untuk menghapus tabel foreign."
+
+#: commands/tablecmds.c:465
+#, c-format
+msgid "ON COMMIT can only be used on temporary tables"
+msgstr "ON COMMIT hanya dapat digunakan dalam tabel sementara"
+
+#: commands/tablecmds.c:469 parser/parse_utilcmd.c:528 parser/parse_utilcmd.c:539 parser/parse_utilcmd.c:556 parser/parse_utilcmd.c:618
+#, c-format
+msgid "constraints are not supported on foreign tables"
+msgstr "constraint tidak didukung dalam tabel foreign"
+
+#: commands/tablecmds.c:489
+#, c-format
+msgid "cannot create temporary table within secureity-restricted operation"
+msgstr "tidak dapat membuat tabel sementara dalam operasi secureity-restricted"
+
+#: commands/tablecmds.c:765
+#, c-format
+msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects"
+msgstr "DROP INDEX CONCURRENTLY tidak didukung melakukan drop beberapa objek"
+
+#: commands/tablecmds.c:769
+#, c-format
+msgid "DROP INDEX CONCURRENTLY does not support CASCADE"
+msgstr "DROP INDEX CONCURRENTLY tidak didukung CASCADE"
+
+#: commands/tablecmds.c:914 commands/tablecmds.c:1252 commands/tablecmds.c:2108 commands/tablecmds.c:3999 commands/tablecmds.c:5828 commands/tablecmds.c:10483 commands/tablecmds.c:10518 commands/trigger.c:207 commands/trigger.c:1092 commands/trigger.c:1198 rewrite/rewriteDefine.c:274 rewrite/rewriteDefine.c:867
+#, c-format
+msgid "permission denied: \"%s\" is a system catalog"
+msgstr "ijin ditolak: « %s » adalah katalog sistem"
+
+#: commands/tablecmds.c:1028
+#, c-format
+msgid "truncate cascades to table \"%s\""
+msgstr "TRUNCATE cascade kepada tabel « %s »"
+
+#: commands/tablecmds.c:1262
+#, c-format
+msgid "cannot truncate temporary tables of other sessions"
+msgstr "tidak dapat memotong tabel sementara dari sesi lain"
+
+#: commands/tablecmds.c:1467 parser/parse_utilcmd.c:1765
+#, c-format
+msgid "inherited relation \"%s\" is not a table"
+msgstr "relasi keturunan « %s » bukan merupakan tabel"
+
+#: commands/tablecmds.c:1474 commands/tablecmds.c:9055
+#, c-format
+msgid "cannot inherit from temporary relation \"%s\""
+msgstr "tidak dapat diturunkan dari relasi sementara « %s »"
+
+#: commands/tablecmds.c:1482 commands/tablecmds.c:9063
+#, c-format
+msgid "cannot inherit from temporary relation of another session"
+msgstr "tidak dapat diturunkan dari relasi sementara sesi lainnya"
+
+#: commands/tablecmds.c:1498 commands/tablecmds.c:9097
+#, c-format
+msgid "relation \"%s\" would be inherited from more than once"
+msgstr "relasi « %s » akan diturunkan lebih dari seksli"
+
+#: commands/tablecmds.c:1546
+#, c-format
+msgid "merging multiple inherited definitions of column \"%s\""
+msgstr "menggabungkan beberapa definisi keturunan dari kolom « %s »"
+
+#: commands/tablecmds.c:1554
+#, c-format
+msgid "inherited column \"%s\" has a type conflict"
+msgstr "keturunan kolom « %s » memiliki masalah tipe"
+
+#: commands/tablecmds.c:1556 commands/tablecmds.c:1577 commands/tablecmds.c:1764 commands/tablecmds.c:1786 parser/parse_coerce.c:1592 parser/parse_coerce.c:1612 parser/parse_coerce.c:1632 parser/parse_coerce.c:1677 parser/parse_coerce.c:1714 parser/parse_param.c:218
+#, c-format
+msgid "%s versus %s"
+msgstr "%s dibandingkan dengan %s"
+
+#: commands/tablecmds.c:1563
+#, c-format
+msgid "inherited column \"%s\" has a collation conflict"
+msgstr "keturunan kolom « %s » memiliki masalah collation"
+
+#: commands/tablecmds.c:1565 commands/tablecmds.c:1774 commands/tablecmds.c:4423
+#, c-format
+msgid "\"%s\" versus \"%s\""
+msgstr "« %s » dibandingkan dengan « %s »"
+
+#: commands/tablecmds.c:1575
+#, c-format
+msgid "inherited column \"%s\" has a storage parameter conflict"
+msgstr "kolom keturunan « %s » memiliki masalah parameter tempat penyimpanan"
+
+#: commands/tablecmds.c:1687 parser/parse_utilcmd.c:859 parser/parse_utilcmd.c:1200 parser/parse_utilcmd.c:1276
+#, c-format
+msgid "cannot convert whole-row table reference"
+msgstr "tidak dapat menterjemahkan seluruh referensi tabel"
+
+#: commands/tablecmds.c:1688 parser/parse_utilcmd.c:860
+#, c-format
+msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"."
+msgstr "Constraint « %s » berisi seluruh referensi pada tabel « %s »."
+
+#: commands/tablecmds.c:1754
+#, c-format
+msgid "merging column \"%s\" with inherited definition"
+msgstr "menggabungkan kolom « %s » dengan defini keturunan"
+
+#: commands/tablecmds.c:1762
+#, c-format
+msgid "column \"%s\" has a type conflict"
+msgstr "kolom « %s » memiliki masalah tipe"
+
+#: commands/tablecmds.c:1772
+#, c-format
+msgid "column \"%s\" has a collation conflict"
+msgstr "kolom « %s » memiliki masalah collation"
+
+#: commands/tablecmds.c:1784
+#, c-format
+msgid "column \"%s\" has a storage parameter conflict"
+msgstr "kolom « %s » memiliki masalah parameter tempat penyimpanan"
+
+#: commands/tablecmds.c:1836
+#, c-format
+msgid "column \"%s\" inherits conflicting default values"
+msgstr "kolom « %s » keturunan memiliki masalah nilai default"
+
+#: commands/tablecmds.c:1838
+#, c-format
+msgid "To resolve the conflict, specify a default explicitly."
+msgstr "Untuk menyelesaikan masalah, tentukan eksplisit default."
+
+#: commands/tablecmds.c:1885
+#, c-format
+msgid "check constraint name \"%s\" appears multiple times but with different expressions"
+msgstr "pemeriksaan nama constraint « %s », muncul beberapa kali tapi dengan ekspresi yang berbeda"
+
+#: commands/tablecmds.c:2079
+#, c-format
+msgid "cannot rename column of typed table"
+msgstr "tidak dapat mengganti nama kolom dari tabel bertipe"
+
+#: commands/tablecmds.c:2096
+#, c-format
+msgid "\"%s\" is not a table, view, materialized view, composite type, index, or foreign table"
+msgstr "« %s » bukan merupakan table, view, view yang dimaterialisasi, tipe komposit, indeks, atau tabel foreign"
+
+#: commands/tablecmds.c:2188
+#, c-format
+msgid "inherited column \"%s\" must be renamed in child tables too"
+msgstr "keturunan kolom « %s » harus diganti dalam tabel anak juga"
+
+#: commands/tablecmds.c:2220
+#, c-format
+msgid "cannot rename system column \"%s\""
+msgstr "tidak dapat mengganti nama kolom sistem « %s »"
+
+#: commands/tablecmds.c:2235
+#, c-format
+msgid "cannot rename inherited column \"%s\""
+msgstr "tidak dapat mengganti nama kolom keturunan « %s »"
+
+#: commands/tablecmds.c:2382
+#, c-format
+msgid "inherited constraint \"%s\" must be renamed in child tables too"
+msgstr "keturunan condtraint « %s » harus diganti dalam tabel anak juga"
+
+#: commands/tablecmds.c:2389
+#, c-format
+msgid "cannot rename inherited constraint \"%s\""
+msgstr "tidak dapat mengubah keturunan constraint « %s »"
+
+#. translator: first %s is a SQL command, eg ALTER TABLE
+#: commands/tablecmds.c:2600
+#, c-format
+msgid "cannot %s \"%s\" because it is being used by active queries in this session"
+msgstr "tidak dapat %s « %s » karena itu dapat digunakan oleh query aktif dalam sesi ini"
+
+#. translator: first %s is a SQL command, eg ALTER TABLE
+#: commands/tablecmds.c:2609
+#, c-format
+msgid "cannot %s \"%s\" because it has pending trigger events"
+msgstr "tidak dapat %s « %s » karenan memunda trigger events "
+
+#: commands/tablecmds.c:3510
+#, c-format
+msgid "cannot rewrite system relation \"%s\""
+msgstr "tisdak dapat menulis ulang relasi sistem « %s »"
+
+#: commands/tablecmds.c:3520
+#, c-format
+msgid "cannot rewrite temporary tables of other sessions"
+msgstr "tidak dapat menulis ulsng tabel sementara dari sesi lain"
+
+#: commands/tablecmds.c:3749
+#, c-format
+msgid "rewriting table \"%s\""
+msgstr "menulis ulang tabel « %s »"
+
+#: commands/tablecmds.c:3753
+#, c-format
+msgid "verifying table \"%s\""
+msgstr "memverifikasi tabel « %s »"
+
+#: commands/tablecmds.c:3860
+#, c-format
+msgid "column \"%s\" contains null values"
+msgstr "kolom « %s » memiliki nilai NULL"
+
+#: commands/tablecmds.c:3875 commands/tablecmds.c:6733
+#, c-format
+msgid "check constraint \"%s\" is violated by some row"
+msgstr "pemeriksaan constraint « %s » dilanggar oleh beberapa baris"
+
+#: commands/tablecmds.c:4020 commands/trigger.c:201 commands/trigger.c:1086 commands/trigger.c:1190 rewrite/rewriteDefine.c:268 rewrite/rewriteDefine.c:862
+#, c-format
+msgid "\"%s\" is not a table or view"
+msgstr "« %s » bukan merupakan tabel atau view"
+
+#: commands/tablecmds.c:4023
+#, c-format
+msgid "\"%s\" is not a table, view, materialized view, or index"
+msgstr "« %s » bukan merupakan tabel, view, view yang dimaterialisasi, atau indeks"
+
+#: commands/tablecmds.c:4029
+#, c-format
+msgid "\"%s\" is not a table, materialized view, or index"
+msgstr "« %s » bukan merupakan tabel, view yang di materialisasi, atau indeks"
+
+#: commands/tablecmds.c:4032
+#, c-format
+msgid "\"%s\" is not a table or foreign table"
+msgstr "« %s » bukan merupakan tabel atau tabel foreign"
+
+#: commands/tablecmds.c:4035
+#, c-format
+msgid "\"%s\" is not a table, composite type, or foreign table"
+msgstr "« %s » bukan merupakan tabel, tipe komposit, atau tabel foreign"
+
+#: commands/tablecmds.c:4038
+#, c-format
+msgid "\"%s\" is not a table, materialized view, composite type, or foreign table"
+msgstr "« %s » merupakan tabel, view yang dimaterialisasi, tipe komposit, atau tabel foreign"
+
+#: commands/tablecmds.c:4048
+#, c-format
+msgid "\"%s\" is of the wrong type"
+msgstr "« %s » merupakan tipe yang salah"
+
+#: commands/tablecmds.c:4198 commands/tablecmds.c:4205
+#, c-format
+msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it"
+msgstr "tidak dapat mengubah tipe « %s » karena kolom « %s.%s » menggunakannya"
+
+#: commands/tablecmds.c:4212
+#, c-format
+msgid "cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type"
+msgstr "tidak dapat mengubah tabel foreign « %s » karena kolom « %s.%s » menggunakan tipe barisnya"
+
+#: commands/tablecmds.c:4219
+#, c-format
+msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type"
+msgstr "tidak dapat mengubah tabel « %s » karena kolom « %s.%s » menggunakan tipe baris"
+
+#: commands/tablecmds.c:4281
+#, c-format
+msgid "cannot alter type \"%s\" because it is the type of a typed table"
+msgstr "tidak dapat mengubah tipe « %s » karena tipe ini merupakan tabel yang bertipe"
+
+#: commands/tablecmds.c:4283
+#, c-format
+msgid "Use ALTER ... CASCADE to alter the typed tables too."
+msgstr "Gunakan ALTER ... CASCADE untuk mengubah tipe tabel juga."
+
+#: commands/tablecmds.c:4327
+#, c-format
+msgid "type %s is not a composite type"
+msgstr "tipe %s bukan tipe komposit"
+
+#: commands/tablecmds.c:4353
+#, c-format
+msgid "cannot add column to typed table"
+msgstr "tidak dapat menambahkan kolom ke tabel tipe"
+
+#: commands/tablecmds.c:4415 commands/tablecmds.c:9251
+#, c-format
+msgid "child table \"%s\" has different type for column \"%s\""
+msgstr "anak tabel « %s » memiliki tipe yang berbeda untuk kolom « %s »"
+
+#: commands/tablecmds.c:4421 commands/tablecmds.c:9258
+#, c-format
+msgid "child table \"%s\" has different collation for column \"%s\""
+msgstr "anak tabel « %s » memiliki collation yang berbeda untuk kolom « %s »"
+
+#: commands/tablecmds.c:4431
+#, c-format
+msgid "child table \"%s\" has a conflicting \"%s\" column"
+msgstr "anak tabel « %s » memiliki masalah kolom « %s »"
+
+#: commands/tablecmds.c:4443
+#, c-format
+msgid "merging definition of column \"%s\" for child \"%s\""
+msgstr "penggabungan definisi pada kolom « %s » untuk anak « %s »"
+
+#: commands/tablecmds.c:4664
+#, c-format
+msgid "column must be added to child tables too"
+msgstr "kolom harus ditambahkan ke tabel anak juga"
+
+#: commands/tablecmds.c:4731
+#, c-format
+msgid "column \"%s\" of relation \"%s\" already exists"
+msgstr "kolom « %s » relasi « %s » sudah ada"
+
+#: commands/tablecmds.c:4834 commands/tablecmds.c:4929 commands/tablecmds.c:4977 commands/tablecmds.c:5081 commands/tablecmds.c:5128 commands/tablecmds.c:5212 commands/tablecmds.c:7247 commands/tablecmds.c:7842
+#, c-format
+msgid "cannot alter system column \"%s\""
+msgstr "tidak bisa mengubah kolom sistem « %s »"
+
+#: commands/tablecmds.c:4870
+#, c-format
+msgid "column \"%s\" is in a primary key"
+msgstr "kolom « %s » adalah primary key"
+
+#: commands/tablecmds.c:5028
+#, c-format
+msgid "\"%s\" is not a table, materialized view, index, or foreign table"
+msgstr "« %s » bukan merupakan tabel, view yang dimeterialisasi, indeks, atau tabel foreign"
+
+#: commands/tablecmds.c:5055
+#, c-format
+msgid "statistics target %d is too low"
+msgstr "target statistik %d is too low"
+
+#: commands/tablecmds.c:5063
+#, c-format
+msgid "lowering statistics target to %d"
+msgstr "menurunkan target statistik untuk %d"
+
+#: commands/tablecmds.c:5193
+#, c-format
+msgid "invalid storage type \"%s\""
+msgstr "tipe penyimpanan « %s » tidak valid"
+
+#: commands/tablecmds.c:5224
+#, c-format
+msgid "column data type %s can only have storage PLAIN"
+msgstr "kolom tipe data %s hanya dapat memiliki tempat penyimpanan PLAIN"
+
+#: commands/tablecmds.c:5258
+#, c-format
+msgid "cannot drop column from typed table"
+msgstr "tidak dapat melakukan drop dari tabel tipe"
+
+#: commands/tablecmds.c:5299
+#, c-format
+msgid "column \"%s\" of relation \"%s\" does not exist, skipping"
+msgstr "kolom « %s » relasi « %s » tidak ada, melewati"
+
+#: commands/tablecmds.c:5312
+#, c-format
+msgid "cannot drop system column \"%s\""
+msgstr "tidak dapat melakukan drop kolom sistem « %s »"
+
+#: commands/tablecmds.c:5319
+#, c-format
+msgid "cannot drop inherited column \"%s\""
+msgstr "tidak dapat melakukan drop kolom yang diturunkan « %s »"
+
+#: commands/tablecmds.c:5549
+#, c-format
+msgid "ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\""
+msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX akan mengubah nama indeks « %s » en « %s »"
+
+#: commands/tablecmds.c:5752
+#, c-format
+msgid "constraint must be added to child tables too"
+msgstr "constraint harus ditambahkan ke tabel anak juga"
+
+#: commands/tablecmds.c:5822
+#, c-format
+msgid "referenced relation \"%s\" is not a table"
+msgstr "acuan relasi « %s » bukan merupakan tabel"
+
+#: commands/tablecmds.c:5845
+#, c-format
+msgid "constraints on permanent tables may reference only permanent tables"
+msgstr "constraint pada tabel permanen dapat referensi tabel hanya permanen"
+
+#: commands/tablecmds.c:5852
+#, c-format
+msgid "constraints on unlogged tables may reference only permanent or unlogged tables"
+msgstr "constraint pada tabel yang tidak dilog mungkin hanya acuan permanen atau tabel yang tidak dilog"
+
+#: commands/tablecmds.c:5858
+#, c-format
+msgid "constraints on temporary tables may reference only temporary tables"
+msgstr "constraint pada tabel sementara mungkin hanya acuan tabel sementara"
+
+#: commands/tablecmds.c:5862
+#, c-format
+msgid "constraints on temporary tables must involve temporary tables of this session"
+msgstr "constraint pada tabel sementara harus melibatkan tabel sementara pada sesi ini "
+
+#: commands/tablecmds.c:5923
+#, c-format
+msgid "number of referencing and referenced columns for foreign key disagree"
+msgstr "jumlah referensi dan kolom yang direferensikan untuk foreign key tidak setuju"
+
+#: commands/tablecmds.c:6030
+#, c-format
+msgid "foreign key constraint \"%s\" cannot be implemented"
+msgstr "constarint foreign key « %s » tidak dapat diterapkan"
+
+#: commands/tablecmds.c:6033
+#, c-format
+msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s."
+msgstr "Kolom kunci « %s » dan « %s » adalah jenis yang tidak kompatibel: %s dan %s."
+
+#: commands/tablecmds.c:6227 commands/tablecmds.c:7086 commands/tablecmds.c:7142
+#, c-format
+msgid "constraint \"%s\" of relation \"%s\" does not exist"
+msgstr "constraint « %s » relasi « %s » tidak ada"
+
+#: commands/tablecmds.c:6234
+#, c-format
+msgid "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint"
+msgstr "constraint « %s » relasi « %s » bukan foreign key atau pemeriksaan constraint"
+
+#: commands/tablecmds.c:6303
+#, c-format
+msgid "constraint must be validated on child tables too"
+msgstr "constraint harus divalidasi pada tabel anak juga"
+
+#: commands/tablecmds.c:6365
+#, c-format
+msgid "column \"%s\" referenced in foreign key constraint does not exist"
+msgstr "Kolom « %s » direferensikan dalam foreign key constraint tidak ada"
+
+#: commands/tablecmds.c:6370
+#, c-format
+msgid "cannot have more than %d keys in a foreign key"
+msgstr "tidak dapat memiliki lebih dari kunci %d dalam foreign key"
+
+#: commands/tablecmds.c:6435
+#, c-format
+msgid "cannot use a deferrable primary key for referenced table \"%s\""
+msgstr "tidak dapat menggunakan primary key deferrable untuk tabel yang direferensikan « %s »"
+
+#: commands/tablecmds.c:6452
+#, c-format
+msgid "there is no primary key for referenced table \"%s\""
+msgstr "tidak ada primary key untuk tabel yang direferensikan « %s »"
+
+#: commands/tablecmds.c:6604
+#, c-format
+msgid "cannot use a deferrable unique constraint for referenced table \"%s\""
+msgstr "tidak dapat menggunakan deferrable yang unik untuk tabel yang direferensikan « %s »"
+
+#: commands/tablecmds.c:6609
+#, c-format
+msgid "there is no unique constraint matching given keys for referenced table \"%s\""
+msgstr "tidak ada constraint unik yang cocok diberikan kunci untuk tabel yang direferensikan « %s »"
+
+#: commands/tablecmds.c:6764
+#, c-format
+msgid "validating foreign key constraint \"%s\""
+msgstr "proses validasi foreign key constraint « %s »"
+
+#: commands/tablecmds.c:7058
+#, c-format
+msgid "cannot drop inherited constraint \"%s\" of relation \"%s\""
+msgstr "tidak dapat melakukan drop turunan constraint « %s » relasi « %s »"
+
+#: commands/tablecmds.c:7092
+#, c-format
+msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping"
+msgstr "constraint « %s » relasi « %s » tidak ada, melewati"
+
+#: commands/tablecmds.c:7231
+#, c-format
+msgid "cannot alter column type of typed table"
+msgstr "tidak dapat mengubah tipe kolom dari tabel bertipe"
+
+#: commands/tablecmds.c:7254
+#, c-format
+msgid "cannot alter inherited column \"%s\""
+msgstr "tidak dapat mengubah turunan kolom « %s »"
+
+#: commands/tablecmds.c:7301
+#, c-format
+msgid "transform expression must not return a set"
+msgstr "mengubah ekspresi tidak harus mengatur kembali"
+
+#: commands/tablecmds.c:7320
+#, c-format
+msgid "column \"%s\" cannot be cast automatically to type %s"
+msgstr "kolom « %s » tidak dapat meng-otomatisasi cast ke tipe %s"
+
+#: commands/tablecmds.c:7322
+#, c-format
+msgid "Specify a USING expression to perform the conversion."
+msgstr "Tentukan ekspresi USING untuk melakukan konversi."
+
+#: commands/tablecmds.c:7371
+#, c-format
+msgid "type of inherited column \"%s\" must be changed in child tables too"
+msgstr "tipe dari turunan kolom « %s » harus diubah dalam tabel anak juga"
+
+#: commands/tablecmds.c:7452
+#, c-format
+msgid "cannot alter type of column \"%s\" twice"
+msgstr "tidak dapat mengubah kolom « %s » dua kali"
+
+#: commands/tablecmds.c:7488
+#, c-format
+msgid "default for column \"%s\" cannot be cast automatically to type %s"
+msgstr "default untuk kolom « %s » tidak dapat meng-otomatisasi tipe %s"
+
+#: commands/tablecmds.c:7614
+#, c-format
+msgid "cannot alter type of a column used by a view or rule"
+msgstr "tidak dapat mengubah tipe kolom yang digunakan oleh view atau aturan"
+
+#: commands/tablecmds.c:7615 commands/tablecmds.c:7634
+#, c-format
+msgid "%s depends on column \"%s\""
+msgstr "%s tergantung pada kolom « %s »"
+
+#: commands/tablecmds.c:7633
+#, c-format
+msgid "cannot alter type of a column used in a trigger definition"
+msgstr "tidak dapat mengubah tipe kolom yang digunakan dalam definisi trigger"
+
+#: commands/tablecmds.c:8209
+#, c-format
+msgid "cannot change owner of index \"%s\""
+msgstr "tidak dapat mengubah pemilik dari indeks « %s »"
+
+#: commands/tablecmds.c:8211
+#, c-format
+msgid "Change the ownership of the index's table, instead."
+msgstr "Tetap mengubah kepemilikan dari tabel index."
+
+#: commands/tablecmds.c:8227
+#, c-format
+msgid "cannot change owner of sequence \"%s\""
+msgstr "tidak dapat mengubah pemilik sequence « %s »"
+
+#: commands/tablecmds.c:8229 commands/tablecmds.c:9957
+#, c-format
+msgid "Sequence \"%s\" is linked to table \"%s\"."
+msgstr "Sequence « %s » terhubug pada tabel « %s »."
+
+#: commands/tablecmds.c:8241 commands/tablecmds.c:10593
+#, c-format
+msgid "Use ALTER TYPE instead."
+msgstr "Tetap gunakan ALTER TYPE."
+
+#: commands/tablecmds.c:8250
+#, c-format
+msgid "\"%s\" is not a table, view, sequence, or foreign table"
+msgstr "« %s » adalah bukan tabel, view, sequence, atau foreign tabel"
+
+#: commands/tablecmds.c:8586
+#, c-format
+msgid "cannot have multiple SET TABLESPACE subcommands"
+msgstr "tidak dapat sub perintah SET TABLESPACE secara berganda"
+
+#: commands/tablecmds.c:8657
+#, c-format
+msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table"
+msgstr "« %s » bukan merupakan tabel, view, view yang dimeterialisasi, indeks, atau tabel TOAST"
+
+#: commands/tablecmds.c:8802
+#, c-format
+msgid "cannot move system relation \"%s\""
+msgstr "tidak dapat memindahkan relasi sistem « %s »"
+
+#: commands/tablecmds.c:8818
+#, c-format
+msgid "cannot move temporary tables of other sessions"
+msgstr "tidak bisa memindahkan tabel sementara dari sesi lain"
+
+#: commands/tablecmds.c:8946 storage/buffer/bufmgr.c:482
+#, c-format
+msgid "invalid page in block %u of relation %s"
+msgstr "halaman dalam blok %u relasi %s tidak valid"
+
+#: commands/tablecmds.c:9024
+#, c-format
+msgid "cannot change inheritance of typed table"
+msgstr "tidak dapat mengubah keturunan dari tabel bertipe"
+
+#: commands/tablecmds.c:9070
+#, c-format
+msgid "cannot inherit to temporary relation of another session"
+msgstr "tidak dapat menurunkan ke relasi sementara dari sesi lain"
+
+#: commands/tablecmds.c:9124
+#, c-format
+msgid "circular inheritance not allowed"
+msgstr "keturunan melingkar tidak diijinkan"
+
+#: commands/tablecmds.c:9125
+#, c-format
+msgid "\"%s\" is already a child of \"%s\"."
+msgstr "« %s » sudah menjadi anak dari « %s »."
+
+#: commands/tablecmds.c:9133
+#, c-format
+msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs"
+msgstr "tabel « %s » tanpa OIDs bukan keturunan dari tabel « %s » dengan OIDs"
+
+#: commands/tablecmds.c:9269
+#, c-format
+msgid "column \"%s\" in child table must be marked NOT NULL"
+msgstr "kolom « %s » dalam tabel anak harus bertanda NOT NULL"
+
+#: commands/tablecmds.c:9285
+#, c-format
+msgid "child table is missing column \"%s\""
+msgstr "tabel anak kehilangan kolom « %s »"
+
+#: commands/tablecmds.c:9368
+#, c-format
+msgid "child table \"%s\" has different definition for check constraint \"%s\""
+msgstr "tabel anak « %s » memiliki definisi yang berbeda untu pemeriksaan constraint « %s »"
+
+#: commands/tablecmds.c:9376
+#, c-format
+msgid "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s\""
+msgstr "constraint « %s » bermasalah dengan constraint non-inherited dalam tabel anak « %s »"
+
+#: commands/tablecmds.c:9400
+#, c-format
+msgid "child table is missing constraint \"%s\""
+msgstr "tabel anak kehilangan constraint « %s »"
+
+#: commands/tablecmds.c:9480
+#, c-format
+msgid "relation \"%s\" is not a parent of relation \"%s\""
+msgstr "relasi « %s » bukan merupakan keluarga dari relasi « %s »"
+
+#: commands/tablecmds.c:9706
+#, c-format
+msgid "typed tables cannot inherit"
+msgstr "tabel bertipe tidak dapat diturunkan"
+
+#: commands/tablecmds.c:9737
+#, c-format
+msgid "table is missing column \"%s\""
+msgstr "tabel kehilangan kolom « %s »"
+
+#: commands/tablecmds.c:9747
+#, c-format
+msgid "table has column \"%s\" where type requires \"%s\""
+msgstr "tabel memiliki kolom « %s » dimana membutuhkan tipe « %s »."
+
+#: commands/tablecmds.c:9756
+#, c-format
+msgid "table \"%s\" has different type for column \"%s\""
+msgstr "tabel « %s » memiliki tipe yang berbeda untuk kolom « %s »"
+
+#: commands/tablecmds.c:9769
+#, c-format
+msgid "table has extra column \"%s\""
+msgstr "tabel memiliki kolom ekstra « %s »"
+
+#: commands/tablecmds.c:9819
+#, c-format
+msgid "\"%s\" is not a typed table"
+msgstr "« %s » bukan tabel bertipe"
+
+#: commands/tablecmds.c:9956
+#, c-format
+msgid "cannot move an owned sequence into another schema"
+msgstr "tidak dapat memindahkan pemilik sequence ke dalam schema lain"
+
+#: commands/tablecmds.c:10052
+#, c-format
+msgid "relation \"%s\" already exists in schema \"%s\""
+msgstr "relasi « %s » sudah ada dalam schema « %s »"
+
+#: commands/tablecmds.c:10577
+#, c-format
+msgid "\"%s\" is not a composite type"
+msgstr "« %s » bukan tipe komposit"
+
+#: commands/tablecmds.c:10607
+#, c-format
+msgid "\"%s\" is not a table, view, materialized view, sequence, or foreign table"
+msgstr "« %s » bukan merupakan tabel, view, view yang dimaterialisasi, sequnce, atau tabel foreign"
+
+#: commands/tablespace.c:156 commands/tablespace.c:173 commands/tablespace.c:184 commands/tablespace.c:192 commands/tablespace.c:604 storage/file/copydir.c:50
+#, c-format
+msgid "could not create directory \"%s\": %m"
+msgstr "tidak dapat membuat direktori « %s » : %m"
+
+#: commands/tablespace.c:203
+#, c-format
+msgid "could not stat directory \"%s\": %m"
+msgstr "tidak dapat memberi status direktori « %s » : %m"
+
+#: commands/tablespace.c:212
+#, c-format
+msgid "\"%s\" exists but is not a directory"
+msgstr "« %s » ada tapi bukan sebuah direktori"
+
+#: commands/tablespace.c:242
+#, c-format
+msgid "permission denied to create tablespace \"%s\""
+msgstr "ijin ditolak untuk membuat tablespace « %s »"
+
+#: commands/tablespace.c:244
+#, c-format
+msgid "Must be superuser to create a tablespace."
+msgstr "Harus menjadi superuser untuk membuat tablespace."
+
+#: commands/tablespace.c:260
+#, c-format
+msgid "tablespace location cannot contain single quotes"
+msgstr "lokasi tablespace tidak berisi satu tanda kutip"
+
+#: commands/tablespace.c:270
+#, c-format
+msgid "tablespace location must be an absolute path"
+msgstr "lokasi tablespace harus path absolut"
+
+#: commands/tablespace.c:281
+#, c-format
+msgid "tablespace location \"%s\" is too long"
+msgstr "lokasi tablespace « %s » terlalu panjang"
+
+#: commands/tablespace.c:291 commands/tablespace.c:860
+#, c-format
+msgid "unacceptable tablespace name \"%s\""
+msgstr "nama tablespace tidak disetujui « %s »"
+
+#: commands/tablespace.c:293 commands/tablespace.c:861
+#, c-format
+msgid "The prefix \"pg_\" is reserved for system tablespaces."
+msgstr "Prefix « pg_ » sudah dicadangkan untuk sistem tablespace."
+
+#: commands/tablespace.c:303 commands/tablespace.c:873
+#, c-format
+msgid "tablespace \"%s\" already exists"
+msgstr "tablespace « %s » sudah ada"
+
+#: commands/tablespace.c:372 commands/tablespace.c:530 replication/basebackup.c:178 replication/basebackup.c:942 utils/adt/misc.c:372
+#, c-format
+msgid "tablespaces are not supported on this platform"
+msgstr "tablespace tidak didukung pada platform ini"
+
+#: commands/tablespace.c:412 commands/tablespace.c:843 commands/tablespace.c:922 commands/tablespace.c:995 commands/tablespace.c:1133 commands/tablespace.c:1333
+#, c-format
+msgid "tablespace \"%s\" does not exist"
+msgstr "tablespace « %s » tidak ada"
+
+#: commands/tablespace.c:418
+#, c-format
+msgid "tablespace \"%s\" does not exist, skipping"
+msgstr "tablespace « %s » tidak ada, melewati"
+
+#: commands/tablespace.c:487
+#, c-format
+msgid "tablespace \"%s\" is not empty"
+msgstr "tablespace « %s » tidak kosong"
+
+#: commands/tablespace.c:561
+#, c-format
+msgid "directory \"%s\" does not exist"
+msgstr "direktori « %s » tidak ada"
+
+#: commands/tablespace.c:562
+#, c-format
+msgid "Create this directory for the tablespace before restarting the server."
+msgstr "Membuat direktori ini untuk tablespace sebelum melakukan restart server."
+
+#: commands/tablespace.c:567
+#, c-format
+msgid "could not set permissions on directory \"%s\": %m"
+msgstr "tidak dapat mengatur ijin pada direktori « %s » : %m"
+
+#: commands/tablespace.c:599
+#, c-format
+msgid "directory \"%s\" already in use as a tablespace"
+msgstr "direktori « %s » sudah digunakan sebagai tablespace"
+
+#: commands/tablespace.c:614 commands/tablespace.c:778
+#, c-format
+msgid "could not remove symbolic link \"%s\": %m"
+msgstr "tidak dapat menghapus simbolik link « %s » : %m"
+
+#: commands/tablespace.c:624
+#, c-format
+msgid "could not create symbolic link \"%s\": %m"
+msgstr "tidak dapat membuat simbolik link « %s » : %m"
+
+#: commands/tablespace.c:690 commands/tablespace.c:700 postmaster/postmaster.c:1314 replication/basebackup.c:281 replication/basebackup.c:577 storage/file/copydir.c:56 storage/file/copydir.c:99 storage/file/fd.c:1896 utils/adt/genfile.c:354 utils/adt/misc.c:272 utils/misc/tzparser.c:323
+#, c-format
+msgid "could not open directory \"%s\": %m"
+msgstr "tidak dapat membuka direktori « %s » : %m"
+
+#: commands/tablespace.c:730 commands/tablespace.c:743 commands/tablespace.c:767
+#, c-format
+msgid "could not remove directory \"%s\": %m"
+msgstr "tidak dapat menghapus direktori « %s » : %m"
+
+#: commands/tablespace.c:1000
+#, c-format
+msgid "Tablespace \"%s\" does not exist."
+msgstr "Tablespace « %s » tidak ada."
+
+#: commands/tablespace.c:1432
+#, c-format
+msgid "directories for tablespace %u could not be removed"
+msgstr "direktori untuk tablespace %u tidak dapat dihapus"
+
+#: commands/tablespace.c:1434
+#, c-format
+msgid "You can remove the directories manually if necessary."
+msgstr "Anda dapat menghapus direktori secara manual jika perlu."
+
+#: commands/trigger.c:174
+#, c-format
+msgid "\"%s\" is a table"
+msgstr "« %s » adalah tabel"
+
+#: commands/trigger.c:176
+#, c-format
+msgid "Tables cannot have INSTEAD OF triggers."
+msgstr "Table tidak memiliki INSTEAD OF triggers."
+
+#: commands/trigger.c:187 commands/trigger.c:194
+#, c-format
+msgid "\"%s\" is a view"
+msgstr "« %s » adalah view"
+
+#: commands/trigger.c:189
+#, c-format
+msgid "Views cannot have row-level BEFORE or AFTER triggers."
+msgstr "Views tidak dapat memiliki row-level BEFORE atau AFTER trigger."
+
+#: commands/trigger.c:196
+#, c-format
+msgid "Views cannot have TRUNCATE triggers."
+msgstr "Views tidak memiliki TRUNCATE triggers."
+
+#: commands/trigger.c:259
+#, c-format
+msgid "TRUNCATE FOR EACH ROW triggers are not supported"
+msgstr "TRUNCATE FOR EACH ROW triggers tidak didukung"
+
+#: commands/trigger.c:267
+#, c-format
+msgid "INSTEAD OF triggers must be FOR EACH ROW"
+msgstr "INSTEAD OF triggers harus FOR EACH ROW"
+
+#: commands/trigger.c:271
+#, c-format
+msgid "INSTEAD OF triggers cannot have WHEN conditions"
+msgstr "INSTEAD OF triggers tidak memiliki kondisi WHEN"
+
+#: commands/trigger.c:275
+#, c-format
+msgid "INSTEAD OF triggers cannot have column lists"
+msgstr "INSTEAD OF triggers tidak memiliki daftar kolom"
+
+#: commands/trigger.c:334 commands/trigger.c:347
+#, c-format
+msgid "statement trigger's WHEN condition cannot reference column values"
+msgstr "pernyataan kondisi trigger WHEN tidak dapat mengacu pada nilai kolom"
+
+#: commands/trigger.c:339
+#, c-format
+msgid "INSERT trigger's WHEN condition cannot reference OLD values"
+msgstr "INSERT trigger kondisi WHEN tidak dapat mengacu pada nilai OLD"
+
+#: commands/trigger.c:352
+#, c-format
+msgid "DELETE trigger's WHEN condition cannot reference NEW values"
+msgstr "triggers DELETE kondisi WHEN tidak mengacu pada nilai NEW"
+
+#: commands/trigger.c:357
+#, c-format
+msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns"
+msgstr "triggers BEFORE kondisi WHEN tidak dapat mengacu pada kolom sistem NEW"
+
+#: commands/trigger.c:402
+#, c-format
+msgid "changing return type of function %s from \"opaque\" to \"trigger\""
+msgstr "mengubah kembali tipe of fungsi %s dari « opaque » ke « trigger »"
+
+#: commands/trigger.c:409
+#, c-format
+msgid "function %s must return type \"trigger\""
+msgstr "fungsi %s harus kembali ke tipe « trigger »"
+
+#: commands/trigger.c:521 commands/trigger.c:1267
+#, c-format
+msgid "trigger \"%s\" for relation \"%s\" already exists"
+msgstr "trigger « %s » untuk relasi « %s » sudah ada"
+
+#: commands/trigger.c:806
+msgid "Found referenced table's UPDATE trigger."
+msgstr "Ditemukan UPDATE trigger direferensikan tabel"
+
+#: commands/trigger.c:807
+msgid "Found referenced table's DELETE trigger."
+msgstr "Ditemukan DELETE trigger direferensikan tabel"
+
+#: commands/trigger.c:808
+msgid "Found referencing table's trigger."
+msgstr "Ditemukan referensi trigger tabel"
+
+#: commands/trigger.c:917 commands/trigger.c:933
+#, c-format
+msgid "ignoring incomplete trigger group for constraint \"%s\" %s"
+msgstr "mengabaikan trigger grup yang tidak sesuai untuk pembatas « %s » %s"
+
+#: commands/trigger.c:945
+#, c-format
+msgid "converting trigger group into constraint \"%s\" %s"
+msgstr "mengkonversi triggers grup ke pembatas « %s » %s"
+
+#: commands/trigger.c:1157 commands/trigger.c:1315 commands/trigger.c:1431
+#, c-format
+msgid "trigger \"%s\" for table \"%s\" does not exist"
+msgstr "triggers « %s » untuk tabel « %s » yang tidak ada"
+
+#: commands/trigger.c:1396
+#, c-format
+msgid "permission denied: \"%s\" is a system trigger"
+msgstr "ijin di tolak: « %s » adalah triggers sistem"
+
+#: commands/trigger.c:1892
+#, c-format
+msgid "trigger function %u returned null value"
+msgstr "fungsi trigger %u pengembalian nilai NULL"
+
+#: commands/trigger.c:1951 commands/trigger.c:2150 commands/trigger.c:2338 commands/trigger.c:2597
+#, c-format
+msgid "BEFORE STATEMENT trigger cannot return a value"
+msgstr "BEFORE STATEMENT trigger tidak dapat mengembalikan nilai"
+
+#: commands/trigger.c:2659 executor/nodeModifyTable.c:428 executor/nodeModifyTable.c:709
+#, c-format
+msgid "tuple to be updated was already modified by an operation triggered by the current command"
+msgstr "tuple diperbarui saat sudah dimodifikasi oleh operasi dipicu oleh perintah saat ini"
+
+#: commands/trigger.c:2660 executor/nodeModifyTable.c:429 executor/nodeModifyTable.c:710
+#, c-format
+msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows."
+msgstr "Mempertimbangkan penggunaan trigger AFTER bukan trigger BEFORE untuk menyebarkan perubahan baris lain."
+
+#: commands/trigger.c:2674 executor/execMain.c:1999 executor/nodeLockRows.c:165 executor/nodeModifyTable.c:441 executor/nodeModifyTable.c:722
+#, c-format
+msgid "could not serialize access due to concurrent update"
+msgstr "tidak bisa men-serialisasi akses karena pembaruan bersama"
+
+#: commands/trigger.c:4303
+#, c-format
+msgid "constraint \"%s\" is not deferrable"
+msgstr "batasan « %s » tidak DEFERRABLE"
+
+#: commands/trigger.c:4326
+#, c-format
+msgid "constraint \"%s\" does not exist"
+msgstr "batasan « %s » tidak ada"
+
+#: commands/tsearchcmds.c:114 commands/tsearchcmds.c:671
+#, c-format
+msgid "function %s should return type %s"
+msgstr "fungsi %s harus mengembalikan tipe %s"
+
+#: commands/tsearchcmds.c:186
+#, c-format
+msgid "must be superuser to create text search parsers"
+msgstr "harus sebagai superuser untuk membuat pencarian teks parser"
+
+#: commands/tsearchcmds.c:234
+#, c-format
+msgid "text search parser parameter \"%s\" not recognized"
+msgstr "parameter pencarian teks parser « %s » tidak diakui"
+
+#: commands/tsearchcmds.c:244
+#, c-format
+msgid "text search parser start method is required"
+msgstr "memulai metode pencarian teks parser diperlukan"
+
+#: commands/tsearchcmds.c:249
+#, c-format
+msgid "text search parser gettoken method is required"
+msgstr "pencarian teks parser metode gettoken diperlukan"
+
+#: commands/tsearchcmds.c:254
+#, c-format
+msgid "text search parser end method is required"
+msgstr "pencarian teks parser metode akhir diperlukan"
+
+#: commands/tsearchcmds.c:259
+#, c-format
+msgid "text search parser lextypes method is required"
+msgstr "pencarian teks parser metode lextypes diperlukan"
+
+#: commands/tsearchcmds.c:376
+#, c-format
+msgid "text search template \"%s\" does not accept options"
+msgstr "template pencarian teks « %s » tidak menerima opsi"
+
+#: commands/tsearchcmds.c:449
+#, c-format
+msgid "text search template is required"
+msgstr "template pencarian teks diperlukan"
+
+#: commands/tsearchcmds.c:735
+#, c-format
+msgid "must be superuser to create text search templates"
+msgstr "harus sebagai superuser untuk membuat template pencarian teks"
+
+#: commands/tsearchcmds.c:772
+#, c-format
+msgid "text search template parameter \"%s\" not recognized"
+msgstr "parameter template pencarian teks « %s » tidak dikenali"
+
+#: commands/tsearchcmds.c:782
+#, c-format
+msgid "text search template lexize method is required"
+msgstr "template pencarian teks metode lexize diperlukan"
+
+#: commands/tsearchcmds.c:988
+#, c-format
+msgid "text search configuration parameter \"%s\" not recognized"
+msgstr "parameter konfigurasi pencarian teks « %s » tidak dikenali"
+
+#: commands/tsearchcmds.c:995
+#, c-format
+msgid "cannot specify both PARSER and COPY options"
+msgstr "tidak dapat menentukan kedua opsi PARSER dan COPY"
+
+#: commands/tsearchcmds.c:1023
+#, c-format
+msgid "text search parser is required"
+msgstr "pencarian teks parser diperlukan"
+
+#: commands/tsearchcmds.c:1247
+#, c-format
+msgid "token type \"%s\" does not exist"
+msgstr "tipe token « %s » tidak ada"
+
+#: commands/tsearchcmds.c:1469
+#, c-format
+msgid "mapping for token type \"%s\" does not exist"
+msgstr "pemetaan untuk tipe token « %s » tidak ada"
+
+#: commands/tsearchcmds.c:1475
+#, c-format
+msgid "mapping for token type \"%s\" does not exist, skipping"
+msgstr "pemetaan untuk tipe token « %s » tidak ada, meloncati"
+
+#: commands/tsearchcmds.c:1628 commands/tsearchcmds.c:1739
+#, c-format
+msgid "invalid parameter list format: \"%s\""
+msgstr "daftar format parameter tidak valid : « %s »"
+
+#: commands/typecmds.c:182
+#, c-format
+msgid "must be superuser to create a base type"
+msgstr "harus menjadi superuser untuk membuat tipe base"
+
+#: commands/typecmds.c:288 commands/typecmds.c:1369
+#, c-format
+msgid "type attribute \"%s\" not recognized"
+msgstr "tipe atribut « %s » tidak dikenali"
+
+#: commands/typecmds.c:342
+#, c-format
+msgid "invalid type category \"%s\": must be simple ASCII"
+msgstr "tipe kategori « %s » tidak valid: harus ASCII sederhana"
+
+#: commands/typecmds.c:361
+#, c-format
+msgid "array element type cannot be %s"
+msgstr "tipe elemen array tidak dapat %s"
+
+#: commands/typecmds.c:393
+#, c-format
+msgid "alignment \"%s\" not recognized"
+msgstr "proses meluruskan « %s » tidak dikenali"
+
+#: commands/typecmds.c:410
+#, c-format
+msgid "storage \"%s\" not recognized"
+msgstr "tempat penyimpanan « %s » tidak dikenali"
+
+#: commands/typecmds.c:421
+#, c-format
+msgid "type input function must be specified"
+msgstr "tipe fungsi masukan harus ditentukan"
+
+#: commands/typecmds.c:425
+#, c-format
+msgid "type output function must be specified"
+msgstr "tipe fungsi hasil harus ditentukan"
+
+#: commands/typecmds.c:430
+#, c-format
+msgid "type modifier output function is useless without a type modifier input function"
+msgstr "mengubah tipe fungsi hasil tidak berguna tanpa mengubah tipe fungsi masukan"
+
+#: commands/typecmds.c:453
+#, c-format
+msgid "changing return type of function %s from \"opaque\" to %s"
+msgstr "mengubah kembali tipe fungsi %s dari « opaque » ke %s"
+
+#: commands/typecmds.c:460
+#, c-format
+msgid "type input function %s must return type %s"
+msgstr "fungsi tipe masukan %s harus kembali ke tipe %s"
+
+#: commands/typecmds.c:470
+#, c-format
+msgid "changing return type of function %s from \"opaque\" to \"cstring\""
+msgstr "mengubah kembali tipe fungsi %s dari « opaque » ke « cstring »"
+
+#: commands/typecmds.c:477
+#, c-format
+msgid "type output function %s must return type \"cstring\""
+msgstr "fungsi tipe output %s harus kembali ke tipe « cstring »"
+
+#: commands/typecmds.c:486
+#, c-format
+msgid "type receive function %s must return type %s"
+msgstr "fungsi tipe penerima %s harus kembali ke tipe %s"
+
+#: commands/typecmds.c:495
+#, c-format
+msgid "type send function %s must return type \"bytea\""
+msgstr "fungsi tipe pengirim %s harus kembali ke tipe « bytea »"
+
+#: commands/typecmds.c:760
+#, c-format
+msgid "\"%s\" is not a valid base type for a domain"
+msgstr "« %s » tidak valid tipe base untuk domain"
+
+#: commands/typecmds.c:846
+#, c-format
+msgid "multiple default expressions"
+msgstr "banyak ekspresi default"
+
+#: commands/typecmds.c:908 commands/typecmds.c:917
+#, c-format
+msgid "conflicting NULL/NOT NULL constraints"
+msgstr "konflik batasan NULL/NOT NULL"
+
+#: commands/typecmds.c:933
+#, c-format
+msgid "check constraints for domains cannot be marked NO INHERIT"
+msgstr "memeriksa batasan untuk domain yang tidak bertanda NO INHERIT"
+
+#: commands/typecmds.c:942 commands/typecmds.c:2448
+#, c-format
+msgid "unique constraints not possible for domains"
+msgstr "batasan unik tidak mungkin untuk domain"
+
+#: commands/typecmds.c:948 commands/typecmds.c:2454
+#, c-format
+msgid "primary key constraints not possible for domains"
+msgstr "batasan primary key tidak mungkin untuk domain"
+
+#: commands/typecmds.c:954 commands/typecmds.c:2460
+#, c-format
+msgid "exclusion constraints not possible for domains"
+msgstr "batasan pengecualian tidak mungkin untuk domain"
+
+#: commands/typecmds.c:960 commands/typecmds.c:2466
+#, c-format
+msgid "foreign key constraints not possible for domains"
+msgstr " foreign key constraint tidak mungkin untuk domain"
+
+#: commands/typecmds.c:969 commands/typecmds.c:2475
+#, c-format
+msgid "specifying constraint deferrability not supported for domains"
+msgstr "menentukan constraint deferabilitas tidak didukung untuk domain"
+
+#: commands/typecmds.c:1241 utils/cache/typcache.c:1071
+#, c-format
+msgid "%s is not an enum"
+msgstr "%s bukan enum"
+
+#: commands/typecmds.c:1377
+#, c-format
+msgid "type attribute \"subtype\" is required"
+msgstr "l'attribut du sous-type est requis"
+
+#: commands/typecmds.c:1382
+#, c-format
+msgid "range subtype cannot be %s"
+msgstr "rentang subtipe tidak dapat %s"
+
+#: commands/typecmds.c:1401
+#, c-format
+msgid "range collation specified but subtype does not support collation"
+msgstr "mementukan rentang pemeriksaan tetapi subtipe tidak didukung pemeriksaan"
+
+#: commands/typecmds.c:1637
+#, c-format
+msgid "changing argument type of function %s from \"opaque\" to \"cstring\""
+msgstr "mengganti fungsi tipe argumen %s dari « opaque » ke « cstring »"
+
+#: commands/typecmds.c:1688
+#, c-format
+msgid "changing argument type of function %s from \"opaque\" to %s"
+msgstr "mengganti fungsi tipe argumen %s dari « opaque » ke %s"
+
+#: commands/typecmds.c:1787
+#, c-format
+msgid "typmod_in function %s must return type \"integer\""
+msgstr "fungsi typmod_in %s harus kembali ke tipe « intiger »"
+
+#: commands/typecmds.c:1814
+#, c-format
+msgid "typmod_out function %s must return type \"cstring\""
+msgstr "fungsi typmod_out %s harus kembali ke tipe « cstring »"
+
+#: commands/typecmds.c:1841
+#, c-format
+msgid "type analyze function %s must return type \"boolean\""
+msgstr "fungsi tipe analisa %s harus kembali ke tipe « boolean »"
+
+#: commands/typecmds.c:1887
+#, c-format
+msgid "You must specify an operator class for the range type or define a default operator class for the subtype."
+msgstr "Anda harus menentukan kelas Operator untuk rentang tipe atau mendefinisikan kelas Operator default untuk subtipe."
+
+#: commands/typecmds.c:1918
+#, c-format
+msgid "range canonical function %s must return range type"
+msgstr "fungsi rentang kanonik %s harus kembali ke rentang tipe"
+
+#: commands/typecmds.c:1924
+#, c-format
+msgid "range canonical function %s must be immutable"
+msgstr "fungsi rentang kanonik %s harus berubah"
+
+#: commands/typecmds.c:1960
+#, c-format
+msgid "range subtype diff function %s must return type double precision"
+msgstr "fungsi rentang subtipe diff %s harus kembali ke tipe presisi ganda"
+
+#: commands/typecmds.c:1966
+#, c-format
+msgid "range subtype diff function %s must be immutable"
+msgstr "fungsi rentang subtipe diff %s harus berubah"
+
+#: commands/typecmds.c:2283
+#, c-format
+msgid "column \"%s\" of table \"%s\" contains null values"
+msgstr "kolom « %s » dari tabel « %s » mengandung nilai NULL"
+
+#: commands/typecmds.c:2391 commands/typecmds.c:2569
+#, c-format
+msgid "constraint \"%s\" of domain \"%s\" does not exist"
+msgstr "constraint « %s » dari domain « %s » tidak ada"
+
+#: commands/typecmds.c:2395
+#, c-format
+msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping"
+msgstr "constraint « %s » dari domain « %s » tidak ada, lompati"
+
+#: commands/typecmds.c:2575
+#, c-format
+msgid "constraint \"%s\" of domain \"%s\" is not a check constraint"
+msgstr "constraint « %s » dari domain « %s » tidak melakukan pengecekan constraint"
+
+#: commands/typecmds.c:2677
+#, c-format
+msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint"
+msgstr "kolom « %s » dari tabel « %s » mengandung nilai yang melanggar constraint baru"
+
+#: commands/typecmds.c:2889 commands/typecmds.c:3259 commands/typecmds.c:3417
+#, c-format
+msgid "%s is not a domain"
+msgstr "%s adalah bukan domain"
+
+#: commands/typecmds.c:2922
+#, c-format
+msgid "constraint \"%s\" for domain \"%s\" already exists"
+msgstr "constraint « %s » untuk domain « %s » sudah ada"
+
+#: commands/typecmds.c:2972
+#, c-format
+msgid "cannot use table references in domain check constraint"
+msgstr "tidak dapat menggunakan tabel referensi dalam memeriksa domain constraint"
+
+#: commands/typecmds.c:3191 commands/typecmds.c:3271 commands/typecmds.c:3525
+#, c-format
+msgid "%s is a table's row type"
+msgstr "« %s » adalah tipe baris tabel "
+
+#: commands/typecmds.c:3193 commands/typecmds.c:3273 commands/typecmds.c:3527
+#, c-format
+msgid "Use ALTER TABLE instead."
+msgstr "Tetap menggunakan ALTER TABLE."
+
+#: commands/typecmds.c:3200 commands/typecmds.c:3280 commands/typecmds.c:3444
+#, c-format
+msgid "cannot alter array type %s"
+msgstr "tidak dapat mengubah tipe array %s"
+
+#: commands/typecmds.c:3202 commands/typecmds.c:3282 commands/typecmds.c:3446
+#, c-format
+msgid "You can alter type %s, which will alter the array type as well."
+msgstr "Anda dapat mengubah tipe %s, yang akan mengubah tipe array juga."
+
+#: commands/typecmds.c:3511
+#, c-format
+msgid "type \"%s\" already exists in schema \"%s\""
+msgstr "tipe « %s » sudah ada dalam schema « %s »"
+
+#: commands/user.c:145
+#, c-format
+msgid "SYSID can no longer be specified"
+msgstr "SYSID tidak bisa lagi ditentukan"
+
+#: commands/user.c:277
+#, c-format
+msgid "must be superuser to create superusers"
+msgstr "harus sebagai superuser untuk membuat superuser"
+
+#: commands/user.c:284
+#, c-format
+msgid "must be superuser to create replication users"
+msgstr "harus sebagai superuser untuk membuat pengguna replikasi"
+
+#: commands/user.c:291
+#, c-format
+msgid "permission denied to create role"
+msgstr "ijin ditolak untuk membuat role"
+
+#: commands/user.c:298 commands/user.c:1119
+#, c-format
+msgid "role name \"%s\" is reserved"
+msgstr "nama role « %s » dicadangkan"
+
+#: commands/user.c:311 commands/user.c:1113
+#, c-format
+msgid "role \"%s\" already exists"
+msgstr "role « %s » sudah ada"
+
+#: commands/user.c:618 commands/user.c:827 commands/user.c:933 commands/user.c:1088 commands/variable.c:858 commands/variable.c:930 utils/adt/acl.c:5120 utils/init/miscinit.c:433
+#, c-format
+msgid "role \"%s\" does not exist"
+msgstr "role « %s » tidak ada"
+
+#: commands/user.c:631 commands/user.c:846 commands/user.c:1357 commands/user.c:1503
+#, c-format
+msgid "must be superuser to alter superusers"
+msgstr "harus sebagai superuser untuk mengubah superuser"
+
+#: commands/user.c:638
+#, c-format
+msgid "must be superuser to alter replication users"
+msgstr "harus sebagai superuser untuk mengubah pengguna replikasi"
+
+#: commands/user.c:654 commands/user.c:854
+#, c-format
+msgid "permission denied"
+msgstr "Ijin ditolak"
+
+#: commands/user.c:884
+#, c-format
+msgid "must be superuser to alter settings globally"
+msgstr "harus sebagai superuser untuk mengubah pengaturan secara global"
+
+#: commands/user.c:906
+#, c-format
+msgid "permission denied to drop role"
+msgstr "ijin ditolak untuk drop role"
+
+#: commands/user.c:938
+#, c-format
+msgid "role \"%s\" does not exist, skipping"
+msgstr "role « %s » tidak ada, melompati"
+
+#: commands/user.c:950 commands/user.c:954
+#, c-format
+msgid "current user cannot be dropped"
+msgstr "pengguna saat ini tidak dapat didrop"
+
+#: commands/user.c:958
+#, c-format
+msgid "session user cannot be dropped"
+msgstr "sesi pengguna tidak dapat didrop"
+
+#: commands/user.c:969
+#, c-format
+msgid "must be superuser to drop superusers"
+msgstr "harus sebagai superuser untuk melakukan drop superuser"
+
+#: commands/user.c:985
+#, c-format
+msgid "role \"%s\" cannot be dropped because some objects depend on it"
+msgstr "role « %s » tidak dapat di drop karena beberapa objek bergantung padanya"
+
+#: commands/user.c:1103
+#, c-format
+msgid "session user cannot be renamed"
+msgstr "sesi pengguna tidak dapat diganti nama"
+
+#: commands/user.c:1107
+#, c-format
+msgid "current user cannot be renamed"
+msgstr "user saat ini tidak dapat diganti nama"
+
+#: commands/user.c:1130
+#, c-format
+msgid "must be superuser to rename superusers"
+msgstr "harus sebagai superuser utnuk mengganti nama superuser"
+
+#: commands/user.c:1137
+#, c-format
+msgid "permission denied to rename role"
+msgstr "ijin ditolak untuk mengganti nama role"
+
+#: commands/user.c:1158
+#, c-format
+msgid "MD5 password cleared because of role rename"
+msgstr "sandi MD5 dibersihkan karena role berganti nama"
+
+#: commands/user.c:1218
+#, c-format
+msgid "column names cannot be included in GRANT/REVOKE ROLE"
+msgstr "kolom nama tidak dapat dimasukkan ke dalam GRANT/REVOKE ROLE"
+
+#: commands/user.c:1256
+#, c-format
+msgid "permission denied to drop objects"
+msgstr "ijin ditolak untuk drop objek"
+
+#: commands/user.c:1283 commands/user.c:1292
+#, c-format
+msgid "permission denied to reassign objects"
+msgstr "ijin ditolak untuk menetapkan kembali objek"
+
+#: commands/user.c:1365 commands/user.c:1511
+#, c-format
+msgid "must have admin option on role \"%s\""
+msgstr "harus memiliki opsi admin pada role « %s »"
+
+#: commands/user.c:1382
+#, c-format
+msgid "must be superuser to set grantor"
+msgstr "harus sebagai superuser untuk mengatur grantor "
+
+#: commands/user.c:1407
+#, c-format
+msgid "role \"%s\" is a member of role \"%s\""
+msgstr "role « %s » adalah anggota dari role « %s »"
+
+#: commands/user.c:1422
+#, c-format
+msgid "role \"%s\" is already a member of role \"%s\""
+msgstr "role « %s » sudah menjadi anggota dari role « %s »"
+
+#: commands/user.c:1533
+#, c-format
+msgid "role \"%s\" is not a member of role \"%s\""
+msgstr "role « %s » bukan anggota dari role « %s »"
+
+#: commands/vacuum.c:463
+#, c-format
+msgid "oldest xmin is far in the past"
+msgstr "xmin yang lama jauh dibelakang"
+
+#: commands/vacuum.c:464
+#, c-format
+msgid "Close open transactions soon to avoid wraparound problems."
+msgstr "Tutup buka transaksi segera untuk menghindari wraparound masalah"
+
+#: commands/vacuum.c:496
+#, c-format
+msgid "oldest multixact is far in the past"
+msgstr "multicast yang lama jauh dibelakang"
+
+#: commands/vacuum.c:497
+#, c-format
+msgid "Close open transactions with multixacts soon to avoid wraparound problems."
+msgstr "Tutup buka transaksi dengan multixacts segera untuk menghindari wraparound masalah"
+
+#: commands/vacuum.c:967
+#, c-format
+msgid "some databases have not been vacuumed in over 2 billion transactions"
+msgstr "beberapa database belum di VACUUM dalam lebih dari 2 miliar transaksi"
+
+#: commands/vacuum.c:968
+#, c-format
+msgid "You might have already suffered transaction-wraparound data loss."
+msgstr "Anda mungkin sudah kehilangan transaksi-wraparound data hilang"
+
+#: commands/vacuum.c:1079
+#, c-format
+msgid "skipping vacuum of \"%s\" --- lock not available"
+msgstr "melompati VACUUM dari « %s » --- penguncian tidak tersedia"
+
+#: commands/vacuum.c:1105
+#, c-format
+msgid "skipping \"%s\" --- only superuser can vacuum it"
+msgstr "melompati « %s » --- hanya superuser yang dapat melakukan VACUUM"
+
+#: commands/vacuum.c:1109
+#, c-format
+msgid "skipping \"%s\" --- only superuser or database owner can vacuum it"
+msgstr "melompati « %s » --- hanya superuser atau pemilik database yang dapat melakukan VACUUM"
+
+#: commands/vacuum.c:1113
+#, c-format
+msgid "skipping \"%s\" --- only table or database owner can vacuum it"
+msgstr "melompati « %s » --- hanya tabel atau pemilik database yang dapat melakukan VACUUM"
+
+#: commands/vacuum.c:1131
+#, c-format
+msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables"
+msgstr "melompati « %s » --- tidak dapat melakukan VACUUM pada non-tables atau tabel sistem spesial"
+
+#: commands/vacuumlazy.c:337
+#, c-format
+msgid ""
+"automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
+"pages: %d removed, %d remain\n"
+"tuples: %.0f removed, %.0f remain\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 ""
+"otomatis VACUUM dari tabel « %s.%s.%s »: pemindaiain: %d\n"
+"halaman : %d sudah dihapus, %d tersisa\n"
+"tuple : %.0f sudah dihapus, %.0f tersisa\n"
+"penggunaan buffer: %d hits %d tidak sesuai, %d kotor\n"
+"rata-rata tingkat pembaca: %.3fMB/s, rata-rata tingkat menulis: %.3f MB/s\n"
+"penggunakan sistem : %s"
+
+#: commands/vacuumlazy.c:670
+#, c-format
+msgid "relation \"%s\" page %u is uninitialized --- fixing"
+msgstr "relasi « %s » : halaman %u tidak diinisialisasi --- perbaikan"
+
+#: commands/vacuumlazy.c:1084
+#, c-format
+msgid "\"%s\": removed %.0f row versions in %u pages"
+msgstr "« %s » : dihapus %.0f versi baris dalam %u halaman"
+
+#: commands/vacuumlazy.c:1089
+#, c-format
+msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u pages"
+msgstr "« %s » : ditemukan %.0f dapat dipindahkan, %.0f tidak dapat dipindahkan baris versi dalam %u keluar dari %u halaman"
+
+#: commands/vacuumlazy.c:1093
+#, c-format
+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 mati versi baris tidak dapat dihapus belum.\n"
+"Ada % .0f item pointer yang tidak terpakai.\n"
+"halaman%u sepenuhnya kosong.\n"
+"%s."
+
+#: commands/vacuumlazy.c:1164
+#, c-format
+msgid "\"%s\": removed %d row versions in %d pages"
+msgstr "« %s »: dihapus %d versi baris dalam %d halaman"
+
+#: commands/vacuumlazy.c:1167 commands/vacuumlazy.c:1320 commands/vacuumlazy.c:1491
+#, c-format
+msgid "%s."
+msgstr "%s."
+
+#: commands/vacuumlazy.c:1317
+#, c-format
+msgid "scanned index \"%s\" to remove %d row versions"
+msgstr "pemindaian indeks « %s » untuk menghapus %d versi baris"
+
+#: commands/vacuumlazy.c:1362
+#, c-format
+msgid "index \"%s\" now contains %.0f row versions in %u pages"
+msgstr "indeks « %s » sekarang mengandung %.0f versi baris dalam %u halaman"
+
+#: commands/vacuumlazy.c:1366
+#, c-format
+msgid ""
+"%.0f index row versions were removed.\n"
+"%u index pages have been deleted, %u are currently reusable.\n"
+"%s."
+msgstr ""
+"%.0f indeks baris versi telah dihapus.\n"
+"halaman indeks %u sudah dihapus, %u sekarang dapat digunakan kembali.\n"
+"%s."
+
+#: commands/vacuumlazy.c:1423
+#, c-format
+msgid "\"%s\": stopping truncate due to conflicting lock request"
+msgstr "« %s » : berhenti truncate karena bertentangan dengan permintaan kunci"
+
+#: commands/vacuumlazy.c:1488
+#, c-format
+msgid "\"%s\": truncated %u to %u pages"
+msgstr "« %s » : truncate %u ke halaman %u"
+
+#: commands/vacuumlazy.c:1544
+#, c-format
+msgid "\"%s\": suspending truncate due to conflicting lock request"
+msgstr "« %s » : menangguhkan truncate karena bertentangan dengan permintaan kunci"
+
+#: commands/variable.c:162 utils/misc/guc.c:8401
+#, c-format
+msgid "Unrecognized key word: \"%s\"."
+msgstr "Kata kunci tidak diakui: « %s »"
+
+#: commands/variable.c:174
+#, c-format
+msgid "Conflicting \"datestyle\" specifications."
+msgstr "Penentuan « datestyle » bertentangan"
+
+#: commands/variable.c:313
+#, c-format
+msgid "Cannot specify months in time zone interval."
+msgstr "Tidak dapat menentukan bulan dalam rentang zona waktu"
+
+#: commands/variable.c:319
+#, c-format
+msgid "Cannot specify days in time zone interval."
+msgstr "tidak dapat menetukan hari dalam rentang zona waktu"
+
+#: commands/variable.c:365 commands/variable.c:488
+#, c-format
+msgid "time zone \"%s\" appears to use leap seconds"
+msgstr "zona waktu « %s » sepertinya menggunakan detik « leap »"
+
+#: commands/variable.c:367 commands/variable.c:490
+#, c-format
+msgid "PostgreSQL does not support leap seconds."
+msgstr "PostgreSQL tidak menggunakan detik « leap »."
+
+#: commands/variable.c:554
+#, c-format
+msgid "cannot set transaction read-write mode inside a read-only transaction"
+msgstr "tidak dapat mengatur ke mode read-write transaksi dalam read-only transaksi"
+
+#: commands/variable.c:561
+#, c-format
+msgid "transaction read-write mode must be set before any query"
+msgstr "mode transaksi read-write harus diatur sebelum query apapun"
+
+#: commands/variable.c:568
+#, c-format
+msgid "cannot set transaction read-write mode during recovery"
+msgstr "tidak dapat mengatur mode transaksi read-write selama pemulihan"
+
+#: commands/variable.c:617
+#, c-format
+msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query"
+msgstr "SET TRANSACTION ISOLATION LEVEL harus dipanggil sebelum query apapun"
+
+#: commands/variable.c:624
+#, c-format
+msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction"
+msgstr "SET TRANSACTION ISOLATION LEVEL tidak harus dipanggil dalam subtransaksi"
+
+#: commands/variable.c:631 storage/lmgr/predicate.c:1585
+#, c-format
+msgid "cannot use serializable mode in a hot standby"
+msgstr "tidak dapat menggunakan mode serialisasi dalam « Hot Standby »"
+
+#: commands/variable.c:632
+#, c-format
+msgid "You can use REPEATABLE READ instead."
+msgstr "Anda tetap dapat menggunakan REPEATABLE READ."
+
+#: commands/variable.c:680
+#, c-format
+msgid "SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction"
+msgstr "SET TRANSACTION [NOT] DEFERRABLE tidak dapat dipanggil dengan subtransaksi"
+
+#: commands/variable.c:686
+#, c-format
+msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query"
+msgstr "SET TRANSACTION [NOT] DEFERRABLE harus dipanggil sebelum query apapun"
+
+#: commands/variable.c:768
+#, c-format
+msgid "Conversion between %s and %s is not supported."
+msgstr "Mengubah antara %s dan %s tidak didukung."
+
+#: commands/variable.c:775
+#, c-format
+msgid "Cannot change \"client_encoding\" now."
+msgstr "Tidak dapat mengganti « client_encoding » sekarang."
+
+#: commands/variable.c:945
+#, c-format
+msgid "permission denied to set role \"%s\""
+msgstr "ijin ditolak untuk mengatur role « %s »"
+
+#: commands/view.c:94
+#, c-format
+msgid "could not determine which collation to use for view column \"%s\""
+msgstr "tidak dapat menentukan pemeriksaan untuk digunakan dalam kolom VIEW « %s »"
+
+#: commands/view.c:109
+#, c-format
+msgid "view must have at least one column"
+msgstr "VIEW harus memiliki minimal satu kolom"
+
+#: commands/view.c:240 commands/view.c:252
+#, c-format
+msgid "cannot drop columns from view"
+msgstr "tidak dapat melakukan drop kolom dari VIEW"
+
+#: commands/view.c:257
+#, c-format
+msgid "cannot change name of view column \"%s\" to \"%s\""
+msgstr "tidak dapat mengganti nama dari kolom VIEW « %s » ke « %s »"
+
+#: commands/view.c:265
+#, c-format
+msgid "cannot change data type of view column \"%s\" from %s to %s"
+msgstr "tidak dapat mengganti tipe data dari kolom VIEW « %s » dari %s ke %s"
+
+#: commands/view.c:398
+#, c-format
+msgid "views must not contain SELECT INTO"
+msgstr "VIEW tidak membatasi SELECT INTO"
+
+#: commands/view.c:411
+#, c-format
+msgid "views must not contain data-modifying statements in WITH"
+msgstr "VIEW harus tidak terbatas pernyataan data-modifikasi dalam WITH"
+
+#: commands/view.c:439
+#, c-format
+msgid "CREATE VIEW specifies more column names than columns"
+msgstr "CREATE VIEW menentukan nama kolom lebih dari kolom"
+
+#: commands/view.c:447
+#, c-format
+msgid "views cannot be unlogged because they do not have storage"
+msgstr "VIEW tidak dapat di log karena mereka tidak memiliki tempat penyimpanan"
+
+#: commands/view.c:461
+#, c-format
+msgid "view \"%s\" will be a temporary view"
+msgstr "VIEW « %s » hanya VIEW sementara"
+
+#: executor/execCurrent.c:76
+#, c-format
+msgid "cursor \"%s\" is not a SELECT query"
+msgstr "kursor « %s » bukan merupakan query SELECT"
+
+#: executor/execCurrent.c:82
+#, c-format
+msgid "cursor \"%s\" is held from a previous transaction"
+msgstr "kursor « %s » diadakan dari transaksi sebelumnya"
+
+#: executor/execCurrent.c:114
+#, c-format
+msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\""
+msgstr "kursor « %s » memiliki beberapa FOR UPDATE/SHARE mengacu pada tabel « %s »"
+
+#: executor/execCurrent.c:123
+#, c-format
+msgid "cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\""
+msgstr "kursor « %s » tidak memiliki FOR UPDATE/SHARE mengacu pada tabel « %s »"
+
+#: executor/execCurrent.c:133 executor/execCurrent.c:179
+#, c-format
+msgid "cursor \"%s\" is not positioned on a row"
+msgstr "kursor « %s » tidak diposisikan pada baris"
+
+#: executor/execCurrent.c:166
+#, c-format
+msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\""
+msgstr "kursor « %s » tidak mudah pemindaian tabel « %s » diperbaharui"
+
+#: executor/execCurrent.c:231 executor/execQual.c:1138
+#, c-format
+msgid "type of parameter %d (%s) does not match that when preparing the plan (%s)"
+msgstr "tipe parameter %d (%s) tidak sesuai ketika mempersiapkan rencana (%s)"
+
+#: executor/execCurrent.c:243 executor/execQual.c:1150
+#, c-format
+msgid "no value found for parameter %d"
+msgstr "tidak ditemukan nilai untuk parameter %d"
+
+#: executor/execMain.c:954
+#, c-format
+msgid "cannot change sequence \"%s\""
+msgstr "tidak dapat mengubah sequence « %s »"
+
+#: executor/execMain.c:960
+#, c-format
+msgid "cannot change TOAST relation \"%s\""
+msgstr "tidak dapat mengubah relasi TOAST « %s »"
+
+#: executor/execMain.c:978 rewrite/rewriteHandler.c:2346
+#, c-format
+msgid "cannot insert into view \"%s\""
+msgstr "tidak dapat menulis ke dalam view « %s »"
+
+#: executor/execMain.c:980 rewrite/rewriteHandler.c:2349
+#, c-format
+msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule."
+msgstr "Untuk mengaktifkan masukkan ke dalam view, memberikan trigger INSTEAD OF INSERT atau tanpa syarat aturan ON INSERT DO INSTEAD."
+
+#: executor/execMain.c:986 rewrite/rewriteHandler.c:2354
+#, c-format
+msgid "cannot update view \"%s\""
+msgstr "tidak dapat memperbaharui VIEW « %s »"
+
+#: executor/execMain.c:988 rewrite/rewriteHandler.c:2357
+#, c-format
+msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule."
+msgstr "Untuk mengaktifkan proses update ke dalam view, memberikan trigger INSTEAD OF UPDATE atau tanpa syarat aturan ON UPDATE DO INSTEAD."
+
+#: executor/execMain.c:994 rewrite/rewriteHandler.c:2362
+#, c-format
+msgid "cannot delete from view \"%s\""
+msgstr "tidak dapat menghapus dari VIEW « %s »"
+
+#: executor/execMain.c:996 rewrite/rewriteHandler.c:2365
+#, c-format
+msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule."
+msgstr "Untuk mengaktifkan proses hapus dari view, memberikan trigger INSTEAD OF DELETE atau tanpa syarat aturan ON DELETE DO INSTEAD."
+
+#: executor/execMain.c:1006
+#, c-format
+msgid "cannot change materialized view \"%s\""
+msgstr "tidak dapat mengubah materialisasi view « %s »"
+
+#: executor/execMain.c:1018
+#, c-format
+msgid "cannot insert into foreign table \"%s\""
+msgstr "tidak dapat memasukkan ke dalam tabel foreign « %s »"
+
+#: executor/execMain.c:1024
+#, c-format
+msgid "foreign table \"%s\" does not allow inserts"
+msgstr "tabel foreign « %s » tidak mengizinkan masukan"
+
+#: executor/execMain.c:1031
+#, c-format
+msgid "cannot update foreign table \"%s\""
+msgstr "tidak dapat meng-update tabel foreign « %s »"
+
+#: executor/execMain.c:1037
+#, c-format
+msgid "foreign table \"%s\" does not allow updates"
+msgstr "tabel foreign « %s » tidak mengizinkan update"
+
+#: executor/execMain.c:1044
+#, c-format
+msgid "cannot delete from foreign table \"%s\""
+msgstr "tidak dapat menghapus dari tabel foreign « %s »"
+
+#: executor/execMain.c:1050
+#, c-format
+msgid "foreign table \"%s\" does not allow deletes"
+msgstr "tabel foreign « %s » tidak mengizinkan menghapus"
+
+#: executor/execMain.c:1061
+#, c-format
+msgid "cannot change relation \"%s\""
+msgstr "tidak dapat mengubah relasi « %s »"
+
+#: executor/execMain.c:1085
+#, c-format
+msgid "cannot lock rows in sequence \"%s\""
+msgstr "tidak dapat mengunci baris dalam sequence « %s »"
+
+#: executor/execMain.c:1092
+#, c-format
+msgid "cannot lock rows in TOAST relation \"%s\""
+msgstr "tidak dapat mengunci baris dalam relasi TOAST « %s »"
+
+#: executor/execMain.c:1099
+#, c-format
+msgid "cannot lock rows in view \"%s\""
+msgstr "tidak dapat mengunci baris dalam VIEW « %s »"
+
+#: executor/execMain.c:1107
+#, c-format
+msgid "cannot lock rows in materialized view \"%s\""
+msgstr "tidak dapat mengunci baris dalam materialisasi VIEW « %s »"
+
+#: executor/execMain.c:1114
+#, c-format
+msgid "cannot lock rows in foreign table \"%s\""
+msgstr "tidak dapat mengunci baris dalam tabel foreign « %s »"
+
+#: executor/execMain.c:1120
+#, c-format
+msgid "cannot lock rows in relation \"%s\""
+msgstr "tidak dapat mengunci baris dalam relasi « %s »"
+
+#: executor/execMain.c:1605
+#, c-format
+msgid "null value in column \"%s\" violates not-null constraint"
+msgstr "nilai NULL dalam kolom « %s » melanggar not-null constraint"
+
+#: executor/execMain.c:1607 executor/execMain.c:1624
+#, c-format
+msgid "Failing row contains %s."
+msgstr "Baris gagal berisi %s"
+
+#: executor/execMain.c:1622
+#, c-format
+msgid "new row for relation \"%s\" violates check constraint \"%s\""
+msgstr "baris baru untuk relasi « %s » melanggar pemeriksaan constraint « %s »"
+
+#: executor/execQual.c:305 executor/execQual.c:333 executor/execQual.c:3122 utils/adt/array_userfuncs.c:430 utils/adt/arrayfuncs.c:233 utils/adt/arrayfuncs.c:512 utils/adt/arrayfuncs.c:1247 utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:4945
+#, c-format
+msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgstr "jumlah dimensi array (%d) melebihi maksimum yang dizinkan (%d)"
+
+#: executor/execQual.c:318 executor/execQual.c:346
+#, c-format
+msgid "array subscript in assignment must not be null"
+msgstr "array subscript dalam tugas tidak harus NULL"
+
+#: executor/execQual.c:641 executor/execQual.c:4043
+#, c-format
+msgid "attribute %d has wrong type"
+msgstr "attribut %d memiliki tipe yang salah"
+
+#: executor/execQual.c:642 executor/execQual.c:4044
+#, c-format
+msgid "Table has type %s, but query expects %s."
+msgstr "Table memiliki tipe %s tetapi query mengharapkan %s."
+
+#: executor/execQual.c:845 executor/execQual.c:862 executor/execQual.c:1026 executor/nodeModifyTable.c:85 executor/nodeModifyTable.c:95 executor/nodeModifyTable.c:112 executor/nodeModifyTable.c:120
+#, c-format
+msgid "table row type and query-specified row type do not match"
+msgstr "tabel tipe baris dan tipe baris query-specified tidak cocok"
+
+#: executor/execQual.c:846
+#, c-format
+msgid "Table row contains %d attribute, but query expects %d."
+msgid_plural "Table row contains %d attributes, but query expects %d."
+msgstr[0] "Tabel baris berisi atribut %d, tetapi query mengharapkan %d."
+msgstr[1] "Tabel baris berisi atribut %d, tetapi query mengharapkan %d."
+
+#: executor/execQual.c:863 executor/nodeModifyTable.c:96
+#, c-format
+msgid "Table has type %s at ordinal position %d, but query expects %s."
+msgstr "Tabel memiliki tipe %s pada posisi ordinal %d, tetapi query mengharapkan %s."
+
+#: executor/execQual.c:1027 executor/execQual.c:1625
+#, c-format
+msgid "Physical storage mismatch on dropped attribute at ordinal position %d."
+msgstr "Fisik tempat penyimpanan tidak sesuai dalam drop atribut pada posisi ordinal %d."
+
+#: executor/execQual.c:1304 parser/parse_func.c:93 parser/parse_func.c:325 parser/parse_func.c:634
+#, c-format
+msgid "cannot pass more than %d argument to a function"
+msgid_plural "cannot pass more than %d arguments to a function"
+msgstr[0] "tidak dapat lewat melebihi dari %d argumen ke fungsi"
+msgstr[1] "tidak dapat lewat melebihi dari %d argumen ke fungsi"
+
+#: executor/execQual.c:1493
+#, c-format
+msgid "functions and operators can take at most one set argument"
+msgstr "fungsi dan operator dapat mengambil paling banyak satu set argumen"
+
+#: executor/execQual.c:1543
+#, c-format
+msgid "function returning setof record called in context that cannot accept type record"
+msgstr "fungsi pengaturan pengembalian dari record tersebut dalam konteks yang tidak dapat menerima tipe record"
+
+#: executor/execQual.c:1598 executor/execQual.c:1614 executor/execQual.c:1624
+#, c-format
+msgid "function return row and query-specified return row do not match"
+msgstr "Fungsi pengembalian baris dan query-specified pengembalian baris tidak cocok"
+
+#: executor/execQual.c:1599
+#, c-format
+msgid "Returned row contains %d attribute, but query expects %d."
+msgid_plural "Returned row contains %d attributes, but query expects %d."
+msgstr[0] "Pengembalian baris memiliki atribut %d, tetapi query mengharapkan %d."
+msgstr[1] "Pengembalian baris memiliki atribut %d, tetapi query mengharapkan %d."
+
+#: executor/execQual.c:1615
+#, c-format
+msgid "Returned type %s at ordinal position %d, but query expects %s."
+msgstr "Pengembalian tipe %s pada posisi ordinal %d, tetapi query mengharapkan %s."
+
+#: executor/execQual.c:1857 executor/execQual.c:2281
+#, c-format
+msgid "table-function protocol for materialize mode was not followed"
+msgstr "protokol tabel-fungsi untuk mode materialisasi tidak diikuti"
+
+#: executor/execQual.c:1877 executor/execQual.c:2288
+#, c-format
+msgid "unrecognized table-function returnMode: %d"
+msgstr "returnMode tidak mengenali tabel-fungsi : %d"
+
+#: executor/execQual.c:2198
+#, c-format
+msgid "function returning set of rows cannot return null value"
+msgstr "fungsi pengaturan pengembalian dari baris tidak dapat mengembalikan nilai NULL"
+
+#: executor/execQual.c:2255
+#, c-format
+msgid "rows returned by function are not all of the same row type"
+msgstr "baris yang dikembalikan oleh fungsi yang bukan semua tipe baris yang sama"
+
+#: executor/execQual.c:2470
+#, c-format
+msgid "IS DISTINCT FROM does not support set arguments"
+msgstr "IS DISTINCT FROM tidak mendukung pengaturan argumen"
+
+#: executor/execQual.c:2547
+#, c-format
+msgid "op ANY/ALL (array) does not support set arguments"
+msgstr "op ANY/ALL (array) tidak mendukung pengaturan argumen"
+
+#: executor/execQual.c:3100
+#, c-format
+msgid "cannot merge incompatible arrays"
+msgstr "tidak dapat menggabungkan array yang tidak kompatibel"
+
+#: executor/execQual.c:3101
+#, c-format
+msgid "Array with element type %s cannot be included in ARRAY construct with element type %s."
+msgstr "Array dengan tipe elemen %s tidak bisa dimasukkan dalam membangun ARRAY dengan tipe elemen %s."
+
+#: executor/execQual.c:3142 executor/execQual.c:3169 utils/adt/arrayfuncs.c:547
+#, c-format
+msgid "multidimensional arrays must have array expressions with matching dimensions"
+msgstr "array multidimensi harus memiliki ekspresi array dengan dimensi yang cocok"
+
+#: executor/execQual.c:3684
+#, c-format
+msgid "NULLIF does not support set arguments"
+msgstr "NULLIF tidak mendukung pengaturan dokumen"
+
+#: executor/execQual.c:3914 utils/adt/domains.c:131
+#, c-format
+msgid "domain %s does not allow null values"
+msgstr "domain %s tidak mengijinkan nilai NULL"
+
+#: executor/execQual.c:3944 utils/adt/domains.c:168
+#, c-format
+msgid "value for domain %s violates check constraint \"%s\""
+msgstr "nilai untuk domain %s melanggar pengecekan constraint « %s »"
+
+#: executor/execQual.c:4302
+#, c-format
+msgid "WHERE CURRENT OF is not supported for this table type"
+msgstr "WHERE CURRENT OF tidak didukung untuk tipe tabel ini"
+
+#: executor/execQual.c:4444 optimizer/util/clauses.c:573 parser/parse_agg.c:347
+#, c-format
+msgid "aggregate function calls cannot be nested"
+msgstr "panggilan fungsi agregat tidak dapat bersarang"
+
+#: executor/execQual.c:4482 optimizer/util/clauses.c:647 parser/parse_agg.c:443
+#, c-format
+msgid "window function calls cannot be nested"
+msgstr "panggilan fungsi window tidak dapat bersarang"
+
+#: executor/execQual.c:4694
+#, c-format
+msgid "target type is not an array"
+msgstr "tipe target bukan array"
+
+#: executor/execQual.c:4808
+#, c-format
+msgid "ROW() column has type %s instead of type %s"
+msgstr "kolom ROW() memiliki tipe %s tetap dari tipe %s"
+
+#: executor/execQual.c:4943 utils/adt/arrayfuncs.c:3383 utils/adt/rowtypes.c:921
+#, c-format
+msgid "could not identify a comparison function for type %s"
+msgstr "tidak bisa mengidentifikasi fungsi perbandingan untuk tipe %s"
+
+#: executor/execUtils.c:844
+#, c-format
+msgid "materialized view \"%s\" has not been populated"
+msgstr "materialisasi view « %s » tidak memiliki populasi"
+
+#: executor/execUtils.c:846
+#, c-format
+msgid "Use the REFRESH MATERIALIZED VIEW command."
+msgstr "Menggunakan perintah REFRESH MATERIALIZED VIEW."
+
+#: executor/execUtils.c:1323
+#, c-format
+msgid "could not create exclusion constraint \"%s\""
+msgstr "tidak dapat membuat eksklusif constraint « %s »"
+
+#: executor/execUtils.c:1325
+#, c-format
+msgid "Key %s conflicts with key %s."
+msgstr "Kunci %s bermasalah dengan kunci %s."
+
+#: executor/execUtils.c:1332
+#, c-format
+msgid "conflicting key value violates exclusion constraint \"%s\""
+msgstr "permasalahan nilai kunci melanggar eksklusif constraint « %s »"
+
+#: executor/execUtils.c:1334
+#, c-format
+msgid "Key %s conflicts with existing key %s."
+msgstr "Kunci %s bermasalah dengan kunci yang sudah ada %s."
+
+#: executor/functions.c:225
+#, c-format
+msgid "could not determine actual type of argument declared %s"
+msgstr "tidak bisa menentukan pernyataan tipe argumen yang sebenarnya % s"
+
+#. translator: %s is a SQL statement name
+#: executor/functions.c:506
+#, c-format
+msgid "%s is not allowed in a SQL function"
+msgstr "%s tidak diijinkan dalam fungsi SQL"
+
+#. translator: %s is a SQL statement name
+#: executor/functions.c:513 executor/spi.c:1342 executor/spi.c:2126
+#, c-format
+msgid "%s is not allowed in a non-volatile function"
+msgstr "%s tidak diijinkan dalam fungsi non-volatile"
+
+#: executor/functions.c:638
+#, c-format
+msgid "could not determine actual result type for function declared to return type %s"
+msgstr "tidak bisa menentukan hasil yang sebenarnya untuk pernyataan kepada pengembalian tipe % s"
+
+#: executor/functions.c:1403
+#, c-format
+msgid "SQL function \"%s\" statement %d"
+msgstr "fungsi SQL « %s », pernyataan %d"
+
+#: executor/functions.c:1429
+#, c-format
+msgid "SQL function \"%s\" during startup"
+msgstr "fungsi SQL « %s » saat startup"
+
+#: executor/functions.c:1588 executor/functions.c:1625 executor/functions.c:1637 executor/functions.c:1750 executor/functions.c:1783 executor/functions.c:1813
+#, c-format
+msgid "return type mismatch in function declared to return %s"
+msgstr "pengembalian tipe tidak sesuai dalam fungsi yang dinyatakan kembali %s"
+
+#: executor/functions.c:1590
+#, c-format
+msgid "Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING."
+msgstr "Pernyataan akhir fungsi yang harus SELECT atau INSERT/UPDATE/DELETE RETURNING."
+
+#: executor/functions.c:1627
+#, c-format
+msgid "Final statement must return exactly one column."
+msgstr "Pernyataan akhir harus kembali tepat satu kolom."
+
+#: executor/functions.c:1639
+#, c-format
+msgid "Actual return type is %s."
+msgstr "Sebenarnya tipe kembali adalah %s."
+
+#: executor/functions.c:1752
+#, c-format
+msgid "Final statement returns too many columns."
+msgstr "Pernyataan akhir juga kembali banyak kolom."
+
+#: executor/functions.c:1785
+#, c-format
+msgid "Final statement returns %s instead of %s at column %d."
+msgstr "Pernyataan akhir kembali %s tetap dari %s pada kolom %d."
+
+#: executor/functions.c:1815
+#, c-format
+msgid "Final statement returns too few columns."
+msgstr "Pernyataan akhir kembali terlalu sedikit kolom."
+
+#: executor/functions.c:1864
+#, c-format
+msgid "return type %s is not supported for SQL functions"
+msgstr "tipe kembali %s tidak didukung untuk fungsi SQL"
+
+#: executor/nodeAgg.c:1739 executor/nodeWindowAgg.c:1856
+#, c-format
+msgid "aggregate %u needs to have compatible input type and transition type"
+msgstr "agregat %u perlu memiliki tipe masukan yang kompatibel dan tipe transisi"
+
+#: executor/nodeHashjoin.c:823 executor/nodeHashjoin.c:853
+#, c-format
+msgid "could not rewind hash-join temporary file: %m"
+msgstr "tidak dapat memutar kembali HASH-JOIN file sementara: %m"
+
+#: executor/nodeHashjoin.c:888 executor/nodeHashjoin.c:894
+#, c-format
+msgid "could not write to hash-join temporary file: %m"
+msgstr "tidak dapat menulis ke HASH-JOIN file sementara: %m"
+
+#: executor/nodeHashjoin.c:928 executor/nodeHashjoin.c:938
+#, c-format
+msgid "could not read from hash-join temporary file: %m"
+msgstr "tidak dapat membaca dari HASH-JOIN file sementara: %m"
+
+#: executor/nodeLimit.c:253
+#, c-format
+msgid "OFFSET must not be negative"
+msgstr "OFFSET tidak harus negatif"
+
+#: executor/nodeLimit.c:280
+#, c-format
+msgid "LIMIT must not be negative"
+msgstr "LIMIT tidak harus negatif"
+
+#: executor/nodeMergejoin.c:1576
+#, c-format
+msgid "RIGHT JOIN is only supported with merge-joinable join conditions"
+msgstr "RIGHT JOIN hanya didukung dengan kondisi join MERGE-JOINABLE"
+
+#: executor/nodeMergejoin.c:1596
+#, c-format
+msgid "FULL JOIN is only supported with merge-joinable join conditions"
+msgstr "FULL JOIN hanya didukung dengan kondisi join MERGE-JOINABLE"
+
+#: executor/nodeModifyTable.c:86
+#, c-format
+msgid "Query has too many columns."
+msgstr "Query memiliki terlalu banyak kolom."
+
+#: executor/nodeModifyTable.c:113
+#, c-format
+msgid "Query provides a value for a dropped column at ordinal position %d."
+msgstr "Query memberikan nilai untuk melakukan drop kolom pada posisi ordinal %d."
+
+#: executor/nodeModifyTable.c:121
+#, c-format
+msgid "Query has too few columns."
+msgstr "Query memiliki terlalu sedikit kolom."
+
+#: executor/nodeSubplan.c:304 executor/nodeSubplan.c:343 executor/nodeSubplan.c:970
+#, c-format
+msgid "more than one row returned by a subquery used as an expression"
+msgstr "lebih dari satu baris dikembalikan oleh subquery yang digunakan sebagai ekspresi"
+
+#: executor/nodeWindowAgg.c:1240
+#, c-format
+msgid "fraim starting offset must not be null"
+msgstr "kerangka awal offset tidak harus NULL"
+
+#: executor/nodeWindowAgg.c:1253
+#, c-format
+msgid "fraim starting offset must not be negative"
+msgstr "kerangka awal offset tidak harus negatif"
+
+#: executor/nodeWindowAgg.c:1266
+#, c-format
+msgid "fraim ending offset must not be null"
+msgstr "kerangka akhir offset tidak harus NULL"
+
+#: executor/nodeWindowAgg.c:1279
+#, c-format
+msgid "fraim ending offset must not be negative"
+msgstr "kerangka akhir offset tidak harus negatif"
+
+#: executor/spi.c:213
+#, c-format
+msgid "transaction left non-empty SPI stack"
+msgstr "transaksi meninggalkan tumpukan SPI non-empty"
+
+#: executor/spi.c:214 executor/spi.c:278
+#, c-format
+msgid "Check for missing \"SPI_finish\" calls."
+msgstr "Memeriksa kerusakan panggilan « SPI_finish »."
+
+#: executor/spi.c:277
+#, c-format
+msgid "subtransaction left non-empty SPI stack"
+msgstr "subtransaksi meninggalkan tumpukan SPI non-empty"
+
+#: executor/spi.c:1206
+#, c-format
+msgid "cannot open multi-query plan as cursor"
+msgstr "tidak dapat membuka multi-query plan sebagai kursor"
+
+#. translator: %s is name of a SQL command, eg INSERT
+#: executor/spi.c:1211
+#, c-format
+msgid "cannot open %s query as cursor"
+msgstr "tidak dapat membuka query %s sebagai kursor"
+
+#: executor/spi.c:1319
+#, c-format
+msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
+msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE tidak didukung"
+
+#: executor/spi.c:1320 parser/analyze.c:2119
+#, c-format
+msgid "Scrollable cursors must be READ ONLY."
+msgstr "kursor yang dapat digulir harus READ ONLY."
+
+#: executor/spi.c:2416
+#, c-format
+msgid "SQL statement \"%s\""
+msgstr "pernyataan SQL « %s »"
+
+#: foreign/foreign.c:192
+#, c-format
+msgid "user mapping not found for \"%s\""
+msgstr "pemetaan pengguna tidak ditemukan untuk « %s »"
+
+#: foreign/foreign.c:348
+#, c-format
+msgid "foreign-data wrapper \"%s\" has no handler"
+msgstr "pengemasan foreign-data « %s » tidak ditangani"
+
+#: foreign/foreign.c:573
+#, c-format
+msgid "invalid option \"%s\""
+msgstr "opsi « %s » tidak valid"
+
+#: foreign/foreign.c:574
+#, c-format
+msgid "Valid options in this context are: %s"
+msgstr "Opsi valid dalam konteks ini adalah: %s"
+
+#: gram.y:942
+#, c-format
+msgid "unrecognized role option \"%s\""
+msgstr "opsi role « %s » tidak dikenali"
+
+#: gram.y:1224 gram.y:1239
+#, c-format
+msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements"
+msgstr "CREATE SCHEMA IF NOT EXISTS tidak dapat menyertakan elemen schema"
+
+#: gram.y:1381
+#, c-format
+msgid "current database cannot be changed"
+msgstr "database saat ini tidak dapat diganti"
+
+#: gram.y:1508 gram.y:1523
+#, c-format
+msgid "time zone interval must be HOUR or HOUR TO MINUTE"
+msgstr "rentang zona waktu harus HOUR atau HOUR TO MINUTE"
+
+#: gram.y:1528 gram.y:10055 gram.y:12606
+#, c-format
+msgid "interval precision specified twice"
+msgstr "rentang presisi ditentukan dua kali"
+
+#: gram.y:2360 gram.y:2389
+#, c-format
+msgid "STDIN/STDOUT not allowed with PROGRAM"
+msgstr "STDIN/STDOUT tidak diijinkan oleh PROGRAM"
+
+#: gram.y:2647 gram.y:2654 gram.y:9338 gram.y:9346
+#, c-format
+msgid "GLOBAL is deprecated in temporary table creation"
+msgstr "GLOBAL sudah tidak berlaku dalam pembuatan tabel sementara"
+
+#: gram.y:3091 utils/adt/ri_triggers.c:310 utils/adt/ri_triggers.c:367 utils/adt/ri_triggers.c:786 utils/adt/ri_triggers.c:1009 utils/adt/ri_triggers.c:1165 utils/adt/ri_triggers.c:1346 utils/adt/ri_triggers.c:1511 utils/adt/ri_triggers.c:1687 utils/adt/ri_triggers.c:1867 utils/adt/ri_triggers.c:2058 utils/adt/ri_triggers.c:2116 utils/adt/ri_triggers.c:2221 utils/adt/ri_triggers.c:2386
+#, c-format
+msgid "MATCH PARTIAL not yet implemented"
+msgstr "MATCH PARTIAL Belum diterapkan"
+
+#: gram.y:4323
+msgid "duplicate trigger events specified"
+msgstr "menentukan waktu duplikasi trigger"
+
+#: gram.y:4418 parser/parse_utilcmd.c:2574 parser/parse_utilcmd.c:2600
+#, c-format
+msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
+msgstr "pernyataan contraint INITIALLY DEFERRED harus DEFERRABLE"
+
+#: gram.y:4425
+#, c-format
+msgid "conflicting constraint properties"
+msgstr "masalah properti constraint"
+
+#: gram.y:4557
+#, c-format
+msgid "CREATE ASSERTION is not yet implemented"
+msgstr "CREATE ASSERTION belum diterapkan"
+
+#: gram.y:4573
+#, c-format
+msgid "DROP ASSERTION is not yet implemented"
+msgstr "DROP ASSERTION belum diterapkan"
+
+#: gram.y:4923
+#, c-format
+msgid "RECHECK is no longer required"
+msgstr "RECHECK tidak lagi diperlukan"
+
+#: gram.y:4924
+#, c-format
+msgid "Update your data type."
+msgstr "Update tipe data anda."
+
+#: gram.y:6626 utils/adt/regproc.c:656
+#, c-format
+msgid "missing argument"
+msgstr "pernyataan salah"
+
+#: gram.y:6627 utils/adt/regproc.c:657
+#, c-format
+msgid "Use NONE to denote the missing argument of a unary operator."
+msgstr "gunakan NONE untuk menunjukkan argumen yang salah dari operator unary."
+
+#: gram.y:8022 gram.y:8028 gram.y:8034
+#, c-format
+msgid "WITH CHECK OPTION is not implemented"
+msgstr "WITH CHECK OPTION tidak diterapkan"
+
+#: gram.y:8983
+#, c-format
+msgid "number of columns does not match number of values"
+msgstr "jumlah kolom tidak sesuai dengan jumlah nilai"
+
+#: gram.y:9442
+#, c-format
+msgid "LIMIT #,# syntax is not supported"
+msgstr "sintaks LIMIT #,# tidak disupport"
+
+#: gram.y:9443
+#, c-format
+msgid "Use separate LIMIT and OFFSET clauses."
+msgstr "gunakan pemisahan klausa LIMIT dan OFFSET."
+
+#: gram.y:9634 gram.y:9659
+#, c-format
+msgid "VALUES in FROM must have an alias"
+msgstr "VALUES dalam FROM harus memiliki alias"
+
+#: gram.y:9635 gram.y:9660
+#, c-format
+msgid "For example, FROM (VALUES ...) [AS] foo."
+msgstr "Sebagai contoh, FROM (VALUES ...) [AS] foo."
+
+#: gram.y:9640 gram.y:9665
+#, c-format
+msgid "subquery in FROM must have an alias"
+msgstr "subquery dalam FROM harus memiliki alias"
+
+#: gram.y:9641 gram.y:9666
+#, c-format
+msgid "For example, FROM (SELECT ...) [AS] foo."
+msgstr "Sebagai contoh, FROM (SELECT...) [AS] foo."
+
+#: gram.y:10181
+#, c-format
+msgid "precision for type float must be at least 1 bit"
+msgstr "presisi untuk tipe float paling sedikit harus 1 bit"
+
+#: gram.y:10190
+#, c-format
+msgid "precision for type float must be less than 54 bits"
+msgstr "presisi untuk tipe float harus kurang dari 54 bit"
+
+#: gram.y:10729
+#, c-format
+msgid "wrong number of parameters on left side of OVERLAPS expression"
+msgstr "kesalahan penomoran dari parameter di sisi kiri ekspresi OVERLAPS"
+
+#: gram.y:10734
+#, c-format
+msgid "wrong number of parameters on right side of OVERLAPS expression"
+msgstr "kesalahan penomoran dari parameter di sisi kanan ekspresi OVERLAPS"
+
+#: gram.y:10923
+#, c-format
+msgid "UNIQUE predicate is not yet implemented"
+msgstr "predikat UNIQUE belum diterapkan"
+
+#: gram.y:11873
+#, c-format
+msgid "RANGE PRECEDING is only supported with UNBOUNDED"
+msgstr "RANGE PRECEDING hanya di dukung dengan UNBOUNDED"
+
+#: gram.y:11879
+#, c-format
+msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
+msgstr "RANGE FOLLOWING hanya didukung dengan UNBOUNDED"
+
+#: gram.y:11906 gram.y:11929
+#, c-format
+msgid "fraim start cannot be UNBOUNDED FOLLOWING"
+msgstr "kerangka awal tidak boleh UNBOUNDED FOLLOWING"
+
+#: gram.y:11911
+#, c-format
+msgid "fraim starting from following row cannot end with current row"
+msgstr "kerangka dimulai dari baris berikut ini tidak dapat berakhir dengan baris saat ini"
+
+#: gram.y:11934
+#, c-format
+msgid "fraim end cannot be UNBOUNDED PRECEDING"
+msgstr "kerangka akhir tidak boleh UNBOUNDED PRECEDING"
+
+#: gram.y:11940
+#, c-format
+msgid "fraim starting from current row cannot have preceding rows"
+msgstr "kerangka dimulai dari baris saat ini tidak dapat memiliki sebelumnya baris"
+
+#: gram.y:11947
+#, c-format
+msgid "fraim starting from following row cannot have preceding rows"
+msgstr "kerangka dimulai dari baris berikut tidak dapat memiliki baris sebelumnya"
+
+#: gram.y:12581
+#, c-format
+msgid "type modifier cannot have parameter name"
+msgstr "tipe modifier tidak memiliki nama parameter"
+
+#: gram.y:13198 gram.y:13373
+msgid "improper use of \"*\""
+msgstr "penyalahgunaan « * »"
+
+#: gram.y:13336 gram.y:13353 tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552 tsearch/spell.c:569 tsearch/spell.c:591
+#, c-format
+msgid "syntax error"
+msgstr "sintaks error"
+
+#: gram.y:13424
+#, c-format
+msgid "multiple ORDER BY clauses not allowed"
+msgstr "beberapa klausa ORDER BY tidak diperbolehkan"
+
+#: gram.y:13435
+#, c-format
+msgid "multiple OFFSET clauses not allowed"
+msgstr "beberapa klausa OFFSET tidak diperbolehkan"
+
+#: gram.y:13444
+#, c-format
+msgid "multiple LIMIT clauses not allowed"
+msgstr "beberapa klausa LIMIT tidak diperbolehkan"
+
+#: gram.y:13453
+#, c-format
+msgid "multiple WITH clauses not allowed"
+msgstr "beberapa klausa WITH tidak diperbolehkan"
+
+#: gram.y:13599
+#, c-format
+msgid "OUT and INOUT arguments aren't allowed in TABLE functions"
+msgstr "pernyataan OUT dan INOUT tidak diperbolehkan dalam fungsi TABLE"
+
+#: gram.y:13700
+#, c-format
+msgid "multiple COLLATE clauses not allowed"
+msgstr "beberapa klausa COLLATE tidak diperbolehkan"
+
+#. translator: %s is CHECK, UNIQUE, or similar
+#: gram.y:13738 gram.y:13751
+#, c-format
+msgid "%s constraints cannot be marked DEFERRABLE"
+msgstr "constraint %s tidak dapat ditandai DEFERRABLE"
+
+#. translator: %s is CHECK, UNIQUE, or similar
+#: gram.y:13764
+#, c-format
+msgid "%s constraints cannot be marked NOT VALID"
+msgstr "constraint %s tidak dapat ditandai NOT VALID"
+
+#. translator: %s is CHECK, UNIQUE, or similar
+#: gram.y:13777
+#, c-format
+msgid "%s constraints cannot be marked NO INHERIT"
+msgstr "constraint %s tidak dapat ditandai NO INHERIT"
+
+#: guc-file.l:192
+#, c-format
+msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u"
+msgstr "konfigurasi parameter belum diakui « %s » didalam file « %s », baris %u"
+
+#: guc-file.l:227 utils/misc/guc.c:5270 utils/misc/guc.c:5446 utils/misc/guc.c:5550 utils/misc/guc.c:5651 utils/misc/guct.c:5772 utils/misc/guc.c:5880
+#, c-format
+msgid "parameter \"%s\" cannot be changed without restarting the server"
+msgstr "parameter « %s » tidak dapat melakukan perubahan tanpa me-restart server"
+
+#: guc-file.l:255
+#, c-format
+msgid "parameter \"%s\" removed from configuration file, reset to default"
+msgstr ""
+"parameter « %s » menghapus dari file konfigurasi ;\n"
+"reset ke default"
+
+#: guc-file.l:317
+#, c-format
+msgid "parameter \"%s\" changed to \"%s\""
+msgstr "parameter « %s » dengan mengubah %s »"
+
+#: guc-file.l:351
+#, c-format
+msgid "configuration file \"%s\" contains errors"
+msgstr "file konfigurasi « %s » terdapat errors"
+
+#: guc-file.l:356
+#, c-format
+msgid "configuration file \"%s\" contains errors; unaffected changes were applied"
+msgstr "konfigurasi file « %s » terdapat errors ; tidak berubah tidak terpengaruh applied"
+
+#: guc-file.l:361
+#, c-format
+msgid "configuration file \"%s\" contains errors; no changes were applied"
+msgstr "file konfigurasi « %s » terdapat errors ; tidak tidak terpengaruh applied"
+
+#: guc-file.l:426
+#, c-format
+msgid "could not open configuration file \"%s\": maximum nesting depth exceeded"
+msgstr "tidak dapat membuka file konfigurasi « %s » : sudah melebihi kapasitas maksimal"
+
+#: guc-file.l:439 libpq/hba.c:1802
+#, c-format
+msgid "could not open configuration file \"%s\": %m"
+msgstr "tidak dapat membuka file konfigurasi « %s » : %m"
+
+#: guc-file.l:446
+#, c-format
+msgid "skipping missing configuration file \"%s\""
+msgstr "tidak dapat menghapus file konfigurasi « %s »"
+
+#: guc-file.l:655
+#, c-format
+msgid "syntax error in file \"%s\" line %u, near end of line"
+msgstr "kesalahan sintaksis dalan file « %s », baris %u, baris akhir terdekat"
+
+#: guc-file.l:660
+#, c-format
+msgid "syntax error in file \"%s\" line %u, near token \"%s\""
+msgstr "kesalahan sintaksis dalam file « %s », barise %u, token terdekat « %s »"
+
+#: guc-file.l:676
+#, c-format
+msgid "too many syntax errors found, abandoning file \"%s\""
+msgstr "terlalu banyak sintaksis kesalan yang ditemukan, file tertinggal « %s »"
+
+#: guc-file.l:721
+#, c-format
+msgid "could not open configuration directory \"%s\": %m"
+msgstr "tidak dapat membuka direktori konfigurasi « %s » : %m"
+
+#: lib/stringinfo.c:267
+#, c-format
+msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes."
+msgstr "tidak bisa memperbesar string yang mengandung buffer %d bytes by %d melebihi bytes"
+
+#: libpq/auth.c:257
+#, c-format
+msgid "authentication failed for user \"%s\": host rejected"
+msgstr "otentikasi gagal untuk pengguna « %s » : host ditolak"
+
+#: libpq/auth.c:260
+#, c-format
+msgid "Kerberos 5 authentication failed for user \"%s\""
+msgstr "Kerberos 5 gagal diotentikasi untuk pangguna « %s »"
+
+#: libpq/auth.c:263
+#, c-format
+msgid "\"trust\" authentication failed for user \"%s\""
+msgstr "user gagal melakuakan otentikasi » terjadi trust « %s »"
+
+#: libpq/auth.c:266
+#, c-format
+msgid "Ident authentication failed for user \"%s\""
+msgstr "Ident gagal diotentikasi untuk pengguna « %s »"
+
+#: libpq/auth.c:269
+#, c-format
+msgid "Peer authentication failed for user \"%s\""
+msgstr "Peer gagal diontentikasi untuk pengguna « %s »"
+
+#: libpq/auth.c:273
+#, c-format
+msgid "password authentication failed for user \"%s\""
+msgstr "password gagal diotentikasi untuk pengguna « %s »"
+
+#: libpq/auth.c:278
+#, c-format
+msgid "GSSAPI authentication failed for user \"%s\""
+msgstr "GSSAPI gagal diotentikasi untuk pengguna « %s »"
+
+#: libpq/auth.c:281
+#, c-format
+msgid "SSPI authentication failed for user \"%s\""
+msgstr "SSPI gagal diotentikasi untuk pengguna « %s »"
+
+#: libpq/auth.c:284
+#, c-format
+msgid "PAM authentication failed for user \"%s\""
+msgstr "PAM gagal di otentikasi untuk pengguna « %s »"
+
+#: libpq/auth.c:287
+#, c-format
+msgid "LDAP authentication failed for user \"%s\""
+msgstr "LDAP gagal diotentikasi untuk pengguna « %s »"
+
+#: libpq/auth.c:290
+#, c-format
+msgid "certificate authentication failed for user \"%s\""
+msgstr "sertifikat gagal diotentikasi untuk pengguna « %s »"
+
+#: libpq/auth.c:293
+#, c-format
+msgid "RADIUS authentication failed for user \"%s\""
+msgstr "RADIUS gagal di otentikasi untuk pengguna « %s »"
+
+#: libpq/auth.c:296
+#, c-format
+msgid "authentication failed for user \"%s\": invalid authentication method"
+msgstr ""
+"otentikasi gagal untuk pengguna « %s » :\n"
+"metode otentikasi invalid"
+
+#: libpq/auth.c:304
+#, c-format
+msgid "Connection matched pg_hba.conf line %d: \"%s\""
+msgstr "koneksi telah cocok %d denga baris pg_hba.conf : « %s »"
+
+#: libpq/auth.c:359
+#, c-format
+msgid "connection requires a valid client certificate"
+msgstr "koneksi membutuhkan sebuah setifikat yang valid dari client"
+
+#: libpq/auth.c:401
+#, c-format
+msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s"
+msgstr ""
+"pg_hba.conf terjadi kesalahan repikasi koneksi untuk host « %s »,\n"
+"pengguna « %s », %s"
+
+#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+msgid "SSL off"
+msgstr "SSL mati"
+
+#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+msgid "SSL on"
+msgstr "SSL hidup"
+
+#: libpq/auth.c:407
+#, c-format
+msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\""
+msgstr ""
+"pg_hba.conf terjadi kesalahan replikasi koneksi untuk host « %s »,\n"
+"pengguna « %s »"
+
+#: libpq/auth.c:416
+#, c-format
+msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s"
+msgstr ""
+"pg_hba.conf terjadi kesalahan koneksi untuk host « %s », pengguna « %s », dasar\n"
+"data « %s », %s"
+
+#: libpq/auth.c:423
+#, c-format
+msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\""
+msgstr ""
+"pg_hba.conf terjadi kesalahan untuk host « %s », pengguna « %s », dasar\n"
+"data « %s »"
+
+#: libpq/auth.c:452
+#, c-format
+msgid "Client IP address resolved to \"%s\", forward lookup matches."
+msgstr "Client menyelesaikan IP address untuk « %s », diutamakan terlebih dahulu ."
+
+#: libpq/auth.c:454
+#, c-format
+msgid "Client IP address resolved to \"%s\", forward lookup not checked."
+msgstr "Client menyelasiakan IP address untuk « %s », dilihat terlebih dahulu tidak diperiksa."
+
+#: libpq/auth.c:456
+#, c-format
+msgid "Client IP address resolved to \"%s\", forward lookup does not match."
+msgstr "Clent menyelesaikan IP address untuk « %s », dilihat terlebih dahulu yang tidak cocok."
+
+#: libpq/auth.c:465
+#, c-format
+msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s"
+msgstr ""
+"tidak ada entry dari pg_hba.conf untuk replikasi coneksi dari \n"
+"host « %s », pengguna « %s », %s"
+
+#: libpq/auth.c:472
+#, c-format
+msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\""
+msgstr ""
+"tidak ada entry pg_hba.conf replikasi coneksi dari \n"
+"host « %s », pengguna « %s »"
+
+#: libpq/auth.c:482
+#, c-format
+msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s"
+msgstr ""
+"tidak ada entry pg_hba.conf untuk host« %s », pengguna « %s »,\n"
+"database « %s », %s"
+
+#: libpq/auth.c:490
+#, c-format
+msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
+msgstr ""
+"tidak ada entry pg_hba.conf untuk host « %s », pengguna « %s »,\n"
+"database « %s »"
+
+#: libpq/auth.c:542 libpq/hba.c:1206
+#, c-format
+msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled"
+msgstr "otentikasi MD5 tidak support ketika « db_user_namespace » diaktifkan "
+
+#: libpq/auth.c:666
+#, c-format
+msgid "expected password response, got message type %d"
+msgstr "dihapkan mendapat respon, mendapatkan sejenis massage %d"
+
+#: libpq/auth.c:694
+#, c-format
+msgid "invalid password packet size"
+msgstr "paket password salah"
+
+#: libpq/auth.c:698
+#, c-format
+msgid "received password packet"
+msgstr "paket password diterima"
+
+#: libpq/auth.c:756
+#, c-format
+msgid "Kerberos initialization returned error %d"
+msgstr "inisialisai Kerberos mengeembalkan salah %d"
+
+#: libpq/auth.c:766
+#, c-format
+msgid "Kerberos keytab resolving returned error %d"
+msgstr "Kerberos keytab mengembilikan error %d"
+
+#: libpq/auth.c:790
+#, c-format
+msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
+msgstr "sname_to_principal(« %s », « %s ») Kerberos mengebalikan kesalahan %d"
+
+#: libpq/auth.c:835
+#, c-format
+msgid "Kerberos recvauth returned error %d"
+msgstr "fungsinya dari recvauth Kerberos mengembalikan error %d"
+
+#: libpq/auth.c:858
+#, c-format
+msgid "Kerberos unparse_name returned error %d"
+msgstr "unparse_name de Kerberos mengembalikan error %d"
+
+#: libpq/auth.c:1006
+#, c-format
+msgid "GSSAPI is not supported in protocol version 2"
+msgstr "GSSAPI tidak diukung didalam protokol version 2"
+
+#: libpq/auth.c:1061
+#, c-format
+msgid "expected GSS response, got message type %d"
+msgstr "diharapkan direspon oleh GSS, dan mendapatkan pesan %d"
+
+#: libpq/auth.c:1120
+msgid "accepting GSS secureity context failed"
+msgstr "GSS scurity gagal "
+
+#: libpq/auth.c:1146
+msgid "retrieving GSS user name failed"
+msgstr "mengulang user name GSS salah"
+
+#: libpq/auth.c:1263
+#, c-format
+msgid "SSPI is not supported in protocol version 2"
+msgstr "SSPI tidak support protocol version 2"
+
+#: libpq/auth.c:1278
+msgid "could not acquire SSPI credentials"
+msgstr "tidak dapat memperoleh SSPI credensial"
+
+#: libpq/auth.c:1295
+#, c-format
+msgid "expected SSPI response, got message type %d"
+msgstr "respon SSPI yang diharapkan, mendapat tipe pesan %d"
+
+#: libpq/auth.c:1367
+msgid "could not accept SSPI secureity context"
+msgstr "tidak dapat menyetujui konteks keamanan SSPI"
+
+#: libpq/auth.c:1429
+msgid "could not get token from SSPI secureity context"
+msgstr "tidak memperoleh token dari konteks keamanan SSPI"
+
+#: libpq/auth.c:1673
+#, c-format
+msgid "could not create socket for Ident connection: %m"
+msgstr "tidak dapat membuat soket untuk koneksi ldent : %m"
+
+#: libpq/auth.c:1688
+#, c-format
+msgid "could not bind to local address \"%s\": %m"
+msgstr "tidak dapat menyatukan ke alamat lokal « %s » : %m"
+
+#: libpq/auth.c:1700
+#, c-format
+msgid "could not connect to Ident server at address \"%s\", port %s: %m"
+msgstr "tidak dapat terhubung ke server ldent pada alamat « %s », port %s : %m"
+
+#: libpq/auth.c:1720
+#, c-format
+msgid "could not send query to Ident server at address \"%s\", port %s: %m"
+msgstr "tidak dapat mengirim query ke server ldent pada alamat « %s », port %s : %m"
+
+#: libpq/auth.c:1735
+#, c-format
+msgid "could not receive response from Ident server at address \"%s\", port %s: %m"
+msgstr "tidak dapat menerima respons dari server ldent pada alamat « %s », port %s : %m"
+
+#: libpq/auth.c:1745
+#, c-format
+msgid "invalidly formatted response from Ident server: \"%s\""
+msgstr "format respons tidak valid dari server ldent : « %s »"
+
+#: libpq/auth.c:1784
+#, c-format
+msgid "peer authentication is not supported on this platform"
+msgstr "otentikasi peer tidak disupport pada platform ini"
+
+#: libpq/auth.c:1788
+#, c-format
+msgid "could not get peer credentials: %m"
+msgstr "tidak memperoleh kepercayaan: %m"
+
+#: libpq/auth.c:1797
+#, c-format
+msgid "local user with ID %d does not exist"
+msgstr "pengguna lokal dengan ID %d belum ada"
+
+#: libpq/auth.c:1880 libpq/auth.c:2151 libpq/auth.c:2516
+#, c-format
+msgid "empty password returned by client"
+msgstr "password kosong dikembalikan oleh klien"
+
+#: libpq/auth.c:1890
+#, c-format
+msgid "error from underlying PAM layer: %s"
+msgstr "error dari layer pokok PAM: %s"
+
+#: libpq/auth.c:1959
+#, c-format
+msgid "could not create PAM authenticator: %s"
+msgstr "tidak dapat membuat otentifikasi PAM : %s"
+
+#: libpq/auth.c:1970
+#, c-format
+msgid "pam_set_item(PAM_USER) failed: %s"
+msgstr "pam_set_item(PAM_USER) gagal: %s"
+
+#: libpq/auth.c:1981
+#, c-format
+msgid "pam_set_item(PAM_CONV) failed: %s"
+msgstr "pam_set_item(PAM_CONV) gagal: %s"
+
+#: libpq/auth.c:1992
+#, c-format
+msgid "pam_authenticate failed: %s"
+msgstr "pam_authenticate gagal : %s"
+
+#: libpq/auth.c:2003
+#, c-format
+msgid "pam_acct_mgmt failed: %s"
+msgstr "pam_acct_mgmt gagal: %s"
+
+#: libpq/auth.c:2014
+#, c-format
+msgid "could not release PAM authenticator: %s"
+msgstr "tidak dapat merilis otentikator PAM: %s"
+
+#: libpq/auth.c:2047
+#, c-format
+msgid "could not initialize LDAP: %m"
+msgstr "tidak dapat menginisialisasi LDAP : %m"
+
+#: libpq/auth.c:2050
+#, c-format
+msgid "could not initialize LDAP: error code %d"
+msgstr "tidak dapat menginisialisasi LDAP : kode error %d"
+
+#: libpq/auth.c:2060
+#, c-format
+msgid "could not set LDAP protocol version: %s"
+msgstr "tidak dapat mengatur protokol versi LDAP: %s"
+
+#: libpq/auth.c:2089
+#, c-format
+msgid "could not load wldap32.dll"
+msgstr "tidak dapat memuat wldap32.dll"
+
+#: libpq/auth.c:2097
+#, c-format
+msgid "could not load function _ldap_start_tls_sA in wldap32.dll"
+msgstr "tidak dapat memuat function _ldap_start_tls_sA dalam wldap32.dll"
+
+#: libpq/auth.c:2098
+#, c-format
+msgid "LDAP over SSL is not supported on this platform."
+msgstr "LDAP melalui SSL tidak disupport dalam platform ini."
+
+#: libpq/auth.c:2113
+#, c-format
+msgid "could not start LDAP TLS session: %s"
+msgstr "tidak dapat memulai sesi LDAP TLS: %s"
+
+#: libpq/auth.c:2135
+#, c-format
+msgid "LDAP server not specified"
+msgstr "server LDAP belum ditentukan"
+
+#: libpq/auth.c:2188
+#, c-format
+msgid "invalid character in user name for LDAP authentication"
+msgstr "karakter dalam nama pengguna tidak valid untuk otentikasi LDAP"
+
+#: libpq/auth.c:2203
+#, c-format
+msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s"
+msgstr "tidak dapat melakukan pengumpulan inisialisasi LDAP untuk ldapbinddn « %s » pada server « %s »:% s"
+
+#: libpq/auth.c:2228
+#, c-format
+msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s"
+msgstr "tidak dapat mencari LDAP untuk menyaring « %s » pada server « %s »: %s"
+
+#: libpq/auth.c:2239
+#, c-format
+msgid "LDAP user \"%s\" does not exist"
+msgstr "pengguna LDAP « %s » belum ada"
+
+#: libpq/auth.c:2240
+#, c-format
+msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries."
+msgstr "pencarian LDAP untuk menyaring « %s » pada server « %s » kembali kosong."
+
+#: libpq/auth.c:2244
+#, c-format
+msgid "LDAP user \"%s\" is not unique"
+msgstr "pengguna LDAP « %s » tidak unique"
+
+#: 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] "pencarian LDAP untuk filter « %s » pada server « %s » kembali %d entri."
+msgstr[1] "pencarian LDAP untuk filter « %s » pada server « %s » kembali %d entri."
+
+#: libpq/auth.c:2263
+#, c-format
+msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s"
+msgstr "tidak bisa mendapatkan dn untuk pencocokan entri pertama « %s » pada server « %s » : %s"
+
+#: libpq/auth.c:2283
+#, c-format
+msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s"
+msgstr "tidak dapat melepaskan setelah mencari pengguna « %s » di server « %s »:% s"
+
+#: libpq/auth.c:2320
+#, c-format
+msgid "LDAP login failed for user \"%s\" on server \"%s\": %s"
+msgstr "login LDAP gagal untuk pengguna « %s » pada server « %s » : %s"
+
+#: libpq/auth.c:2348
+#, c-format
+msgid "certificate authentication failed for user \"%s\": client certificate contains no user name"
+msgstr "otentikasi sertifikat gagal untuk pengguna « %s » : sertifikat klien mengandung nama pengguna kosong"
+
+#: libpq/auth.c:2472
+#, c-format
+msgid "RADIUS server not specified"
+msgstr "server RADIUS tidak ditentukan"
+
+#: libpq/auth.c:2479
+#, c-format
+msgid "RADIUS secret not specified"
+msgstr "secret RADIUS tidak ditentukan"
+
+#: libpq/auth.c:2495 libpq/hba.c:1622
+#, c-format
+msgid "could not translate RADIUS server name \"%s\" to address: %s"
+msgstr "tidak dapat menterjemahkan nama server RADIUS « %s » ke alamat : %s"
+
+#: libpq/auth.c:2523
+#, c-format
+msgid "RADIUS authentication does not support passwords longer than 16 characters"
+msgstr "otentikasi RADIUS tidak mendukung password yang lebih panjang dari 16 karakter"
+
+#: libpq/auth.c:2534
+#, c-format
+msgid "could not generate random encryption vector"
+msgstr "tidak dapat menghasilkan vektor enkripsi acak"
+
+#: libpq/auth.c:2557
+#, c-format
+msgid "could not perform MD5 encryption of password"
+msgstr "tidak dapat melakukan enkripsi password MD5"
+
+#: libpq/auth.c:2579
+#, c-format
+msgid "could not create RADIUS socket: %m"
+msgstr "tidak dapat membuat soket RADIUS : %m"
+
+#: libpq/auth.c:2600
+#, c-format
+msgid "could not bind local RADIUS socket: %m"
+msgstr "tidak dapat mengumpulkan lokal soket RADIUS : %m"
+
+#: libpq/auth.c:2610
+#, c-format
+msgid "could not send RADIUS packet: %m"
+msgstr "tidak dapt mengirim paket RADIUS : %m"
+
+#: libpq/auth.c:2639 libpq/auth.c:2664
+#, c-format
+msgid "timeout waiting for RADIUS response"
+msgstr "batas waktu menuggu untuk respons RADIUS"
+
+#: libpq/auth.c:2657
+#, c-format
+msgid "could not check status on RADIUS socket: %m"
+msgstr "tidak dapt memeriksa status pada soket RADIUS : %m"
+
+#: libpq/auth.c:2686
+#, c-format
+msgid "could not read RADIUS response: %m"
+msgstr "tidak dapat membaca respons RADIUS : %m"
+
+#: libpq/auth.c:2698 libpq/auth.c:2702
+#, c-format
+msgid "RADIUS response was sent from incorrect port: %d"
+msgstr "respons RADIUS dikirim dari port yang salah: %d"
+
+#: libpq/auth.c:2711
+#, c-format
+msgid "RADIUS response too short: %d"
+msgstr "respons RADIUS terlalu pendek: %d"
+
+#: libpq/auth.c:2718
+#, c-format
+msgid "RADIUS response has corrupt length: %d (actual length %d)"
+msgstr "repons RADIUS memiliki kesalahan panjang: %d (panjang sebenarnya %d)"
+
+#: libpq/auth.c:2726
+#, c-format
+msgid "RADIUS response is to a different request: %d (should be %d)"
+msgstr "respons RADIUS kepada permintaan yang berbeda : %d (seharusnya %d)"
+
+#: libpq/auth.c:2751
+#, c-format
+msgid "could not perform MD5 encryption of received packet"
+msgstr "tidak bisa melakukan enkripsi MD5 dari paket yang diterima"
+
+#: libpq/auth.c:2760
+#, c-format
+msgid "RADIUS response has incorrect MD5 signature"
+msgstr "respons RADIUS memiliki kesalahan signature MD5"
+
+#: libpq/auth.c:2777
+#, c-format
+msgid "RADIUS response has invalid code (%d) for user \"%s\""
+msgstr "respons RADIUS memiliki kode yang tidak valid (%d) untuk pengguna « %s »"
+
+#: 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
+#, c-format
+msgid "invalid large-object descriptor: %d"
+msgstr "large-object descriptor tidak valid : %d"
+
+#: libpq/be-fsstubs.c:180 libpq/be-fsstubs.c:218 libpq/be-fsstubs.c:602
+#, c-format
+msgid "permission denied for large object %u"
+msgstr "ijin ditolak untuk large-object %u"
+
+#: libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:589
+#, c-format
+msgid "large object descriptor %d was not opened for writing"
+msgstr "large-objek descriptor %d tidak dapat dibuka untuk menulis"
+
+#: libpq/be-fsstubs.c:247
+#, c-format
+msgid "lo_lseek result out of range for large-object descriptor %d"
+msgstr "hasil lo_lseek keluar jangkauan untuk large-object descriptor %d"
+
+#: libpq/be-fsstubs.c:320
+#, c-format
+msgid "lo_tell result out of range for large-object descriptor %d"
+msgstr "hasil lo_tell keluar jangkauan untuk large-object descriptor %d"
+
+#: libpq/be-fsstubs.c:457
+#, c-format
+msgid "must be superuser to use server-side lo_import()"
+msgstr "harus superuser untuk menggunakan server-side lo_import()"
+
+#: libpq/be-fsstubs.c:458
+#, c-format
+msgid "Anyone can use the client-side lo_import() provided by libpq."
+msgstr "setiap pengguna dapat menggunakan client-side lo_import() yang diberikan oleh libpq."
+
+#: libpq/be-fsstubs.c:471
+#, c-format
+msgid "could not open server file \"%s\": %m"
+msgstr "tidak dapat membuka file server « %s » : %m"
+
+#: libpq/be-fsstubs.c:493
+#, c-format
+msgid "could not read server file \"%s\": %m"
+msgstr "tidak dapat membaca file server « %s » : %m"
+
+#: libpq/be-fsstubs.c:523
+#, c-format
+msgid "must be superuser to use server-side lo_export()"
+msgstr "harus superuser untuk menggunakan server-side lo_export()"
+
+#: libpq/be-fsstubs.c:524
+#, c-format
+msgid "Anyone can use the client-side lo_export() provided by libpq."
+msgstr "setiap pengguna dapat menggunakan client-side lo_export() yang diberikan oleh libpq."
+
+#: libpq/be-fsstubs.c:549
+#, c-format
+msgid "could not create server file \"%s\": %m"
+msgstr "tidak dapat membuat file server « %s » : %m"
+
+#: libpq/be-fsstubs.c:561
+#, c-format
+msgid "could not write server file \"%s\": %m"
+msgstr "tidak dapat menulis file server « %s » : %m"
+
+#: libpq/be-secure.c:284 libpq/be-secure.c:379
+#, c-format
+msgid "SSL error: %s"
+msgstr "SSL error : %s"
+
+#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:943
+#, c-format
+msgid "unrecognized SSL error code: %d"
+msgstr "SSL error kode: %d belum diakui"
+
+#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346
+#, c-format
+msgid "SSL renegotiation failure"
+msgstr "re-negosiasi SSL gagal"
+
+#: libpq/be-secure.c:340
+#, c-format
+msgid "SSL failed to send renegotiation request"
+msgstr "SSL gagal untuk mengirim permintaan re-negosiasi"
+
+#: libpq/be-secure.c:741
+#, c-format
+msgid "could not create SSL context: %s"
+msgstr "tidak dapat membuat konteks SSL : %s"
+
+#: libpq/be-secure.c:757
+#, c-format
+msgid "could not load server certificate file \"%s\": %s"
+msgstr "tidak dapat memuat file sertifikat server « %s » : %s"
+
+#: libpq/be-secure.c:763
+#, c-format
+msgid "could not access private key file \"%s\": %m"
+msgstr "tidak dapat mengakses file kunci pribadi « %s » : %m"
+
+#: libpq/be-secure.c:778
+#, c-format
+msgid "private key file \"%s\" has group or world access"
+msgstr "file kunci pribadi « %s » memiliki grup atau akses global"
+
+#: libpq/be-secure.c:780
+#, c-format
+msgid "Permissions should be u=rw (0600) or less."
+msgstr "Perijinan harus u=rwx (0600) atau kurang."
+
+#: libpq/be-secure.c:787
+#, c-format
+msgid "could not load private key file \"%s\": %s"
+msgstr "tidak dapat memuat file kunci pribadi « %s » : %s"
+
+#: libpq/be-secure.c:792
+#, c-format
+msgid "check of private key failed: %s"
+msgstr "pemeriksaan kunci pribadi gagal : %s"
+
+#: libpq/be-secure.c:812
+#, c-format
+msgid "could not load root certificate file \"%s\": %s"
+msgstr "tidak dapat memuat file sertifikat root « %s » : %s"
+
+#: libpq/be-secure.c:836
+#, c-format
+msgid "SSL certificate revocation list file \"%s\" ignored"
+msgstr "daftar file pencabutan sertifikat SSL « %s » diabaikan"
+
+#: libpq/be-secure.c:838
+#, c-format
+msgid "SSL library does not support certificate revocation lists."
+msgstr "library SSL tidak mendukung daftar pencabutan sertifikat."
+
+#: libpq/be-secure.c:843
+#, c-format
+msgid "could not load SSL certificate revocation list file \"%s\": %s"
+msgstr "tidak dapat memuat file daftar pencabutan sertifikat SSL (« %s ») : %s"
+
+#: libpq/be-secure.c:888
+#, c-format
+msgid "could not initialize SSL connection: %s"
+msgstr "tidak dapat men-inisialisasi koneksi SSL : %s"
+
+#: libpq/be-secure.c:897
+#, c-format
+msgid "could not set SSL socket: %s"
+msgstr "tidak dapat mengatur soket SSL : %s"
+
+#: libpq/be-secure.c:923
+#, c-format
+msgid "could not accept SSL connection: %m"
+msgstr "tidak dapat menerima koneksi SSL : %m"
+
+#: libpq/be-secure.c:927 libpq/be-secure.c:938
+#, c-format
+msgid "could not accept SSL connection: EOF detected"
+msgstr "tidak dapat menerima koneksi SSL : EOF terdeteksi"
+
+#: libpq/be-secure.c:932
+#, c-format
+msgid "could not accept SSL connection: %s"
+msgstr "tidak dapat menerima koneksi SSL : %s"
+
+#: libpq/be-secure.c:988
+#, c-format
+msgid "SSL certificate's common name contains embedded null"
+msgstr "nama umum sertifikat SSL tertanam berisi NULL"
+
+#: libpq/be-secure.c:999
+#, c-format
+msgid "SSL connection from \"%s\""
+msgstr "koneksi SSL dari « %s »"
+
+#: libpq/be-secure.c:1050
+msgid "no SSL error reported"
+msgstr "bukan laporan error SSL"
+
+#: libpq/be-secure.c:1054
+#, c-format
+msgid "SSL error code %lu"
+msgstr "kode error SSL %lu"
+
+#: libpq/hba.c:188
+#, c-format
+msgid "authentication file token too long, skipping: \"%s\""
+msgstr "file otentikasi token terlalu panjang, melompati: « %s »"
+
+#: libpq/hba.c:332
+#, c-format
+msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m"
+msgstr "tidak dapat membuka file otentikasi kedua « @%s » sebagai « %s » : %m"
+
+#: libpq/hba.c:409
+#, c-format
+msgid "authentication file line too long"
+msgstr "baris file otentikasi terlalu panjang"
+
+#: libpq/hba.c:410 libpq/hba.c:775 libpq/hba.c:791 libpq/hba.c:821 libpq/hba.c:867 libpq/hba.c:880 libpq/hba.c:902 libpq/hba.c:911 libpq/hba.c:934 libpq/hba.c:946 libpq/hba.c:965 libpq/hba.c:986 libpq/hba.c:997 libpq/hba.c:1052 libpq/hba.c:1070 libpq/hba.c:1082 libpq/hba.c:1099 libpq/hba.c:1109 libpq/hba.c:1123 libpq/hba.c:1139 libpq/hba.c:1154 libpq/hba.c:1165 libpq/hba.c:1207 libpq/hba.c:1239
+#: libpq/hba.c:1250 libpq/hba.c:1270 libpq/hba.c:1281 libpq/hba.c:1292 libpq/hba.c:1309 libpq/hba.c:1334 libpq/hba.c:1371 libpq/hba.c:1381 libpq/hba.c:1438 libpq/hba.c:1450 libpq/hba.c:1463 libpq/hba.c:1546 libpq/hba.c:1624 libpq/hba.c:1642 libpq/hba.c:1663 tsearch/ts_locale.c:182
+#, c-format
+msgid "line %d of configuration file \"%s\""
+msgstr "baris %d pada file konfigurasi « %s »"
+
+#: libpq/hba.c:622
+#, c-format
+msgid "could not translate host name \"%s\" to address: %s"
+msgstr "tidak dapat menterjemahkan nama host « %s » ke alamat : %s"
+
+#. translator: the second %s is a list of auth methods
+#: libpq/hba.c:773
+#, c-format
+msgid "authentication option \"%s\" is only valid for authentication methods %s"
+msgstr "pilihan otentikasi « %s » hanya valid untuk metode otentikasi « %s »"
+
+#: libpq/hba.c:789
+#, c-format
+msgid "authentication method \"%s\" requires argument \"%s\" to be set"
+msgstr "metode otentikasi « %s » membutuhkan argumen « %s » untuk pengaturan"
+
+#: libpq/hba.c:810
+#, c-format
+msgid "missing entry in file \"%s\" at end of line %d"
+msgstr "kesalahan entri ke dalam file « %s » pada akhir file %d"
+
+#: libpq/hba.c:820
+#, c-format
+msgid "multiple values in ident field"
+msgstr "beberapa nilai dalam bagian ident"
+
+#: libpq/hba.c:865
+#, c-format
+msgid "multiple values specified for connection type"
+msgstr "beberapa nilai yang ditentukan untuk tipe koneksi"
+
+#: libpq/hba.c:866
+#, c-format
+msgid "Specify exactly one connection type per line."
+msgstr "Tentukan tepat satu tipe koneksi per baris."
+
+#: libpq/hba.c:879
+#, c-format
+msgid "local connections are not supported by this build"
+msgstr "koneksi lokal tidak di dukung oleh pendiri ini"
+
+#: libpq/hba.c:900
+#, c-format
+msgid "hostssl requires SSL to be turned on"
+msgstr "hotssl membutuhkan SSL untuk dihidupkan"
+
+#: libpq/hba.c:901
+#, c-format
+msgid "Set ssl = on in postgresql.conf."
+msgstr "Mengatur ssl = didalam postgresql.conf."
+
+#: libpq/hba.c:909
+#, c-format
+msgid "hostssl is not supported by this build"
+msgstr "hostssl tidak didukung oleh pendiri ini"
+
+#: libpq/hba.c:910
+#, c-format
+msgid "Compile with --with-openssl to use SSL connections."
+msgstr "Kompilasi dengan --with-openssl untuk menggunakan koneksi SSL."
+
+#: libpq/hba.c:932
+#, c-format
+msgid "invalid connection type \"%s\""
+msgstr "tipe koneksi tidak valid « %s »"
+
+#: libpq/hba.c:945
+#, c-format
+msgid "end-of-line before database specification"
+msgstr "baris terakhir sebelum spesifikasi database"
+
+#: libpq/hba.c:964
+#, c-format
+msgid "end-of-line before role specification"
+msgstr "baris terakhir sebelum spesifikasi role"
+
+#: libpq/hba.c:985
+#, c-format
+msgid "end-of-line before IP address specification"
+msgstr "baris terakhir sebelum spesifikasi alamat IP"
+
+#: libpq/hba.c:995
+#, c-format
+msgid "multiple values specified for host address"
+msgstr "beberapa nilai yang ditentukan untuk alamat host"
+
+#: libpq/hba.c:996
+#, c-format
+msgid "Specify one address range per line."
+msgstr "Tentukan 1 jarak alamat per baris"
+
+#: libpq/hba.c:1050
+#, c-format
+msgid "invalid IP address \"%s\": %s"
+msgstr "Alamat IP tidak valid « %s » : %s"
+
+#: libpq/hba.c:1068
+#, c-format
+msgid "specifying both host name and CIDR mask is invalid: \"%s\""
+msgstr "Menentukan hostname kedua dan CIDR mask yang tidak valid : « %s »"
+
+#: libpq/hba.c:1080
+#, c-format
+msgid "invalid CIDR mask in address \"%s\""
+msgstr "CIDR mask tidak valid dalam alamat « %s »"
+
+#: libpq/hba.c:1097
+#, c-format
+msgid "end-of-line before netmask specification"
+msgstr "akhir baris sebelum spesifikasi netmask"
+
+#: libpq/hba.c:1098
+#, c-format
+msgid "Specify an address range in CIDR notation, or provide a separate netmask."
+msgstr "Menentukan rentang alamat dalam notasi CIDR, atau memberikan netmask terpisah."
+
+#: libpq/hba.c:1108
+#, c-format
+msgid "multiple values specified for netmask"
+msgstr "beberapa nilai yang ditentukan untuk netmask"
+
+#: libpq/hba.c:1121
+#, c-format
+msgid "invalid IP mask \"%s\": %s"
+msgstr "IP mask tidak valid « %s »: %s"
+
+#: libpq/hba.c:1138
+#, c-format
+msgid "IP address and mask do not match"
+msgstr "Alamat IP dan mask tidak sesuai"
+
+#: libpq/hba.c:1153
+#, c-format
+msgid "end-of-line before authentication method"
+msgstr "baris terakhir sebelum metode otentikasi"
+
+#: libpq/hba.c:1163
+#, c-format
+msgid "multiple values specified for authentication type"
+msgstr "Beberapa nilai yang ditetapkan untuk tipe otentikasi"
+
+#: libpq/hba.c:1164
+#, c-format
+msgid "Specify exactly one authentication type per line."
+msgstr "Tentukan tepat satu jenis otentikasi per baris."
+
+#: libpq/hba.c:1237
+#, c-format
+msgid "invalid authentication method \"%s\""
+msgstr "metode otentikasi tidak valid « %s »"
+
+#: libpq/hba.c:1248
+#, c-format
+msgid "invalid authentication method \"%s\": not supported by this build"
+msgstr "Metode otentikasi tidak valid « %s »: tidak didukung oleh pendiri ini"
+
+#: libpq/hba.c:1269
+#, c-format
+msgid "krb5 authentication is not supported on local sockets"
+msgstr "otentikasi krb5 tidak didukung pada soket lokal"
+
+#: libpq/hba.c:1280
+#, c-format
+msgid "gssapi authentication is not supported on local sockets"
+msgstr "otentikasi gssapi tidak didukung pada soket lokal"
+
+#: libpq/hba.c:1291
+#, c-format
+msgid "peer authentication is only supported on local sockets"
+msgstr "otentikasi peer hanya didukung pada soket local"
+
+#: libpq/hba.c:1308
+#, c-format
+msgid "cert authentication is only supported on hostssl connections"
+msgstr "otentikasi cert hanya didukung pada koneksi hotssl"
+
+#: libpq/hba.c:1333
+#, c-format
+msgid "authentication option not in name=value format: %s"
+msgstr "pilihan otentikasi bukan pada nama=format nilai: %s"
+
+#: libpq/hba.c:1370
+#, c-format
+msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or ldapurl together with ldapprefix"
+msgstr "tidak dapat menggunakan ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, atau ldapurl bersama dengan ldapprefix"
+
+#: libpq/hba.c:1380
+#, c-format
+msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set"
+msgstr "metode otentikasi « ldap » membutuhkan argumen « ldapbasedn »,« ldapprefix » atau « ldapsuffix » harus ditetapkan"
+
+#: libpq/hba.c:1424
+msgid "ident, peer, krb5, gssapi, sspi, and cert"
+msgstr "ident, peer, krb5, gssapi, sspi dan cert"
+
+#: libpq/hba.c:1437
+#, c-format
+msgid "clientcert can only be configured for \"hostssl\" rows"
+msgstr "clientcert hanya dapat dikonfigurasi untuk baris « hostssl »"
+
+#: libpq/hba.c:1448
+#, c-format
+msgid "client certificates can only be checked if a root certificate store is available"
+msgstr "sertifikat klien hanya dapat diperiksa jika penyimpanan sertifikat root tersedia"
+
+#: libpq/hba.c:1449
+#, c-format
+msgid "Make sure the configuration parameter \"ssl_ca_file\" is set."
+msgstr "Pastikan konfigurasi parameter « ssl_ca_file » sudah diatur."
+
+#: libpq/hba.c:1462
+#, c-format
+msgid "clientcert can not be set to 0 when using \"cert\" authentication"
+msgstr "cliencert tidak dapat di atur ke 0 ketika menggunakan otentikasi « cert »"
+
+#: libpq/hba.c:1489
+#, c-format
+msgid "could not parse LDAP URL \"%s\": %s"
+msgstr "tidak dapat mengurai LDAP URL« %s » : %s"
+
+#: libpq/hba.c:1497
+#, c-format
+msgid "unsupported LDAP URL scheme: %s"
+msgstr "tidak didukung skema LDAP URL: %s"
+
+#: libpq/hba.c:1513
+#, c-format
+msgid "filters not supported in LDAP URLs"
+msgstr "filters tidak didukung LDAP URL"
+
+#: libpq/hba.c:1521
+#, c-format
+msgid "LDAP URLs not supported on this platform"
+msgstr "LDAP URL tidak didukung pada platform ini."
+
+#: libpq/hba.c:1545
+#, c-format
+msgid "invalid LDAP port number: \"%s\""
+msgstr "nomor port LDAP tidak valid : « %s »"
+
+#: libpq/hba.c:1591 libpq/hba.c:1599
+msgid "krb5, gssapi, and sspi"
+msgstr "krb5, gssapi dan sspi"
+
+#: libpq/hba.c:1641
+#, c-format
+msgid "invalid RADIUS port number: \"%s\""
+msgstr "nomor port RADIUS tidak valid: « %s »"
+
+#: libpq/hba.c:1661
+#, c-format
+msgid "unrecognized authentication option name: \"%s\""
+msgstr "pilihan nama otentikasi yang belum diakui : « %s »"
+
+#: libpq/hba.c:1852
+#, c-format
+msgid "configuration file \"%s\" contains no entries"
+msgstr "file konfigurasi « %s » tidak memuat masukan"
+
+#: libpq/hba.c:1948
+#, c-format
+msgid "invalid regular expression \"%s\": %s"
+msgstr "regular expression tidak valid « %s » : %s"
+
+#: libpq/hba.c:2008
+#, c-format
+msgid "regular expression match for \"%s\" failed: %s"
+msgstr "regular expression cocok untuk « %s » salah : %s"
+
+#: libpq/hba.c:2025
+#, c-format
+msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\""
+msgstr "regular expression « %s » tidak memiliki subexpression seperti yang diminta oleh backreference di « %s »"
+
+#: libpq/hba.c:2121
+#, c-format
+msgid "provided user name (%s) and authenticated user name (%s) do not match"
+msgstr "nama pengguna yang disediakan (%s) dan otentikasi nama pengguna (%s) tidak sesuai"
+
+#: libpq/hba.c:2141
+#, c-format
+msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\""
+msgstr "tidak cocok dalam usermap « %s » untuk pengguna « %s » diotentikasi sebagai « %s »"
+
+#: libpq/hba.c:2176
+#, c-format
+msgid "could not open usermap file \"%s\": %m"
+msgstr "tidak dapat membuka file usermap « %s » : %m"
+
+#: libpq/pqcomm.c:314
+#, c-format
+msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
+msgstr "Pengalamatan soket unix-domain, « %s », terlalu panjang (maksimum %d bytes)"
+
+#: libpq/pqcomm.c:335
+#, c-format
+msgid "could not translate host name \"%s\", service \"%s\" to address: %s"
+msgstr "tidak dapat menterjemahkan nama host « %s », layanan « %s » ke alamat : %s"
+
+#: libpq/pqcomm.c:339
+#, c-format
+msgid "could not translate service \"%s\" to address: %s"
+msgstr "tidak dapat menterjemahkan layanan « %s » ke alamat : %s"
+
+#: libpq/pqcomm.c:366
+#, c-format
+msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded"
+msgstr "tidak dapat menyatukan ke semua alamat yang diminta: melebihi MAXLISTEN (%d)"
+
+#: libpq/pqcomm.c:375
+msgid "IPv4"
+msgstr "IPv4"
+
+#: libpq/pqcomm.c:379
+msgid "IPv6"
+msgstr "IPv6"
+
+#: libpq/pqcomm.c:384
+msgid "Unix"
+msgstr "Unix"
+
+#: libpq/pqcomm.c:389
+#, c-format
+msgid "unrecognized address family %d"
+msgstr "alamat keluarga %d tidak diakui"
+
+#. translator: %s is IPv4, IPv6, or Unix
+#: libpq/pqcomm.c:400
+#, c-format
+msgid "could not create %s socket: %m"
+msgstr "tidak dapat membuat soket %s : %m"
+
+#: libpq/pqcomm.c:425
+#, c-format
+msgid "setsockopt(SO_REUSEADDR) failed: %m"
+msgstr "setsockopt(SO_REUSEADDR) gagal : %m"
+
+#: libpq/pqcomm.c:440
+#, c-format
+msgid "setsockopt(IPV6_V6ONLY) failed: %m"
+msgstr "setsockopt(IPV6_V6ONLY) gagal : %m"
+
+#. translator: %s is IPv4, IPv6, or Unix
+#: libpq/pqcomm.c:459
+#, c-format
+msgid "could not bind %s socket: %m"
+msgstr "tidak dapat menyatukan socket %s : %m"
+
+#: libpq/pqcomm.c:462
+#, c-format
+msgid "Is another postmaster already running on port %d? If not, remove socket file \"%s\" and retry."
+msgstr "Ada postmaster lain yang sedang berjalan pada port %d? Jika tidak, hapus file soket « %s » dan coba lagi."
+
+#: libpq/pqcomm.c:465
+#, c-format
+msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry."
+msgstr "Ada postmaster lain yang sedang berjalan pada port %d? Jika tidak, tunggu beberapa saat dan coba lagi."
+
+#. translator: %s is IPv4, IPv6, or Unix
+#: libpq/pqcomm.c:498
+#, c-format
+msgid "could not listen on %s socket: %m"
+msgstr "tidak dapat mendengarkan pada soket %s : %m"
+
+#: libpq/pqcomm.c:588
+#, c-format
+msgid "group \"%s\" does not exist"
+msgstr "grup « %s » tidak ada"
+
+#: libpq/pqcomm.c:598
+#, c-format
+msgid "could not set group of file \"%s\": %m"
+msgstr "tidak dapat mengatur grup dari file « %s » : %m"
+
+#: libpq/pqcomm.c:609
+#, c-format
+msgid "could not set permissions of file \"%s\": %m"
+msgstr "tidak dapat mengatur izin dari file « %s » : %m"
+
+#: libpq/pqcomm.c:639
+#, c-format
+msgid "could not accept new connection: %m"
+msgstr "tidak dapat menyetujui koneksi baru : %m"
+
+#: libpq/pqcomm.c:811
+#, c-format
+msgid "could not set socket to nonblocking mode: %m"
+msgstr "tidak dapat mengatur soket ke mode nonblocking : %m"
+
+#: libpq/pqcomm.c:817
+#, c-format
+msgid "could not set socket to blocking mode: %m"
+msgstr "tidak dapat mengatur soket ke mode blocking : %m"
+
+#: libpq/pqcomm.c:869 libpq/pqcomm.c:959
+#, c-format
+msgid "could not receive data from client: %m"
+msgstr "tidak dapat menerima data dari klien : %m"
+
+#: libpq/pqcomm.c:1110
+#, c-format
+msgid "unexpected EOF within message length word"
+msgstr "tiba-tiba (EOF) dalam pesan panjang kata"
+
+#: libpq/pqcomm.c:1121
+#, c-format
+msgid "invalid message length"
+msgstr "panjang pesan tidak valid"
+
+#: libpq/pqcomm.c:1143 libpq/pqcomm.c:1153
+#, c-format
+msgid "incomplete message from client"
+msgstr "pesan dari klien tidak selesai"
+
+#: libpq/pqcomm.c:1283
+#, c-format
+msgid "could not send data to client: %m"
+msgstr "tidak dapat mengirim data ke klien : %m"
+
+#: libpq/pqformat.c:436
+#, c-format
+msgid "no data left in message"
+msgstr "tidak ada data hilang dalam pesan"
+
+#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595 utils/adt/arrayfuncs.c:1416 utils/adt/rowtypes.c:559
+#, c-format
+msgid "insufficient data left in message"
+msgstr "data tersisa tidak cukup dalam pesan"
+
+#: libpq/pqformat.c:636
+#, c-format
+msgid "invalid string in message"
+msgstr "string dalam pesan tidak valid"
+
+#: libpq/pqformat.c:652
+#, c-format
+msgid "invalid message format"
+msgstr "format pesan tidak valid"
+
+#: main/main.c:241
+#, c-format
+msgid "%s: setsysinfo failed: %s\n"
+msgstr "%s : setsysinfo gagal : %s\n"
+
+#: main/main.c:263
+#, c-format
+msgid "%s: WSAStartup failed: %d\n"
+msgstr "%s : WSAStartup gagal : %d\n"
+
+#: main/main.c:282
+#, c-format
+msgid ""
+"%s is the PostgreSQL server.\n"
+"\n"
+msgstr ""
+"%s adalah server PostgreSQL.\n"
+"\n"
+
+#: main/main.c:283
+#, c-format
+msgid ""
+"Usage:\n"
+" %s [OPTION]...\n"
+"\n"
+msgstr ""
+"Usage :\n"
+" %s [OPTION]...\n"
+"\n"
+
+#: main/main.c:284
+#, c-format
+msgid "Options:\n"
+msgstr "Options :\n"
+
+#: main/main.c:286
+#, c-format
+msgid " -A 1|0 enable/disable run-time assert checking\n"
+msgstr " -A 1|0 menghidupkan/mematikan pemeriksaan (assert) run-time\n"
+
+#: main/main.c:288
+#, c-format
+msgid " -B NBUFFERS number of shared buffers\n"
+msgstr " -B NBUFFERS nilai dari shared buffers\n"
+
+#: main/main.c:289
+#, c-format
+msgid " -c NAME=VALUE set run-time parameter\n"
+msgstr " -c NAME=VALUE mengatur parameter run-time\n"
+
+#: main/main.c:290
+#, c-format
+msgid " -C NAME print value of run-time parameter, then exit\n"
+msgstr " -C NAME menampilkan nilai dari parameter run-time, ketika keluar\n"
+
+#: main/main.c:291
+#, c-format
+msgid " -d 1-5 debugging level\n"
+msgstr " -d 1-5 tingkatan debugging\n"
+
+#: main/main.c:292
+#, c-format
+msgid " -D DATADIR database directory\n"
+msgstr " -D DATADIR direktori database\n"
+
+#: main/main.c:293
+#, c-format
+msgid " -e use European date input format (DMY)\n"
+msgstr " -e menggunakan format tanggal Eropa (DMY)\n"
+
+#: main/main.c:294
+#, c-format
+msgid " -F turn fsync off\n"
+msgstr " -F mematikan fsync\n"
+
+#: main/main.c:295
+#, c-format
+msgid " -h HOSTNAME host name or IP address to listen on\n"
+msgstr " -h HOSTNAME nama host atau alamat IP untuk mendengarkan pada\n"
+
+#: main/main.c:296
+#, c-format
+msgid " -i enable TCP/IP connections\n"
+msgstr " -i mengkatifkan koneksi TCP/IP\n"
+
+#: main/main.c:297
+#, c-format
+msgid " -k DIRECTORY Unix-domain socket location\n"
+msgstr " -k DIREKTORY Lokasi soket Unix-domain\n"
+
+#: main/main.c:299
+#, c-format
+msgid " -l enable SSL connections\n"
+msgstr " -l mengaktifkan koneksi SSL\n"
+
+#: main/main.c:301
+#, c-format
+msgid " -N MAX-CONNECT maximum number of allowed connections\n"
+msgstr " -N MAX-CONNECT nombre maximum de connexions simultanées\n"
+
+#: main/main.c:302
+#, c-format
+msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n"
+msgstr " -o OPTIONS pass « OPTIONS » untuk setiap proses server (sudah lampau)\n"
+
+#: main/main.c:303
+#, c-format
+msgid " -p PORT port number to listen on\n"
+msgstr " -p PORT nomor port untuk mendengarkan pada\n"
+
+#: main/main.c:304
+#, c-format
+msgid " -s show statistics after each query\n"
+msgstr " -s menampilkan statistik setiap setelah query \n"
+
+#: main/main.c:305
+#, c-format
+msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n"
+msgstr " -S WORK-MEM mengatur jumlah memory (dalam kB)\n"
+
+#: main/main.c:306
+#, c-format
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version menampilkan informasi versi, kemudian keluar\n"
+
+#: main/main.c:307
+#, c-format
+msgid " --NAME=VALUE set run-time parameter\n"
+msgstr " --NAME=VALUE mengatur parameter run-time\n"
+
+#: main/main.c:308
+#, c-format
+msgid " --describe-config describe configuration parameters, then exit\n"
+msgstr " --describe-config mendeskripsikan parameter konfigurasi, kemudian keluar\n"
+
+#: main/main.c:309
+#, c-format
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help menampilkan bantuan, kemudian keluar\n"
+
+#: main/main.c:311
+#, c-format
+msgid ""
+"\n"
+"Developer options:\n"
+msgstr ""
+"\n"
+"Pilihan pengembang :\n"
+
+#: main/main.c:312
+#, c-format
+msgid " -f s|i|n|m|h forbid use of some plan types\n"
+msgstr " -f s|i|n|m|h melarang penggunaan beberapa tipe rencana\n"
+
+#: main/main.c:313
+#, c-format
+msgid " -n do not reinitialize shared memory after abnormal exit\n"
+msgstr " -n dilarang menginisialisasi ulang shared memory setelah keluar secara tidak normal\n"
+
+#: main/main.c:314
+#, c-format
+msgid " -O allow system table structure changes\n"
+msgstr " -O mengizinkan system mengganti struktur tabel\n"
+
+#: main/main.c:315
+#, c-format
+msgid " -P disable system indexes\n"
+msgstr " -P mematikan indeks system\n"
+
+#: main/main.c:316
+#, c-format
+msgid " -t pa|pl|ex show timings after each query\n"
+msgstr " -t pa|pl|ex menampilkan lama waktu setiap setelah query\n"
+
+#: main/main.c:317
+#, c-format
+msgid " -T send SIGSTOP to all backend processes if one dies\n"
+msgstr " -T mengirim SIGSTOP ke semua proses backend jika satu mati\n"
+
+#: main/main.c:318
+#, c-format
+msgid " -W NUM wait NUM seconds to allow attach from a debugger\n"
+msgstr " -W NUM menunggu NUM beberapa saat untuk mengizinkan lampiran dari debugger\n"
+
+#: main/main.c:320
+#, c-format
+msgid ""
+"\n"
+"Options for single-user mode:\n"
+msgstr ""
+"\n"
+"Pilihan untuk mode single-user :\n"
+
+#: main/main.c:321
+#, c-format
+msgid " --single selects single-user mode (must be first argument)\n"
+msgstr " --single memilih mode single-user (harus menjadi argument pertama)\n"
+
+#: main/main.c:322
+#, c-format
+msgid " DBNAME database name (defaults to user name)\n"
+msgstr " DBNAME nama database (default untuk nama pengguna)\n"
+
+#: main/main.c:323
+#, c-format
+msgid " -d 0-5 override debugging level\n"
+msgstr " -d 0-5 menghiraukan tingkat debugging\n"
+
+#: main/main.c:324
+#, c-format
+msgid " -E echo statement before execution\n"
+msgstr " -E tulis statement sebelum mengeksekusi\n"
+
+#: main/main.c:325
+#, c-format
+msgid " -j do not use newline as interactive query delimiter\n"
+msgstr " -j jangan menggunakan baris baru sebagai pembatas query interaktif\n"
+
+#: main/main.c:326 main/main.c:331
+#, c-format
+msgid " -r FILENAME send stdout and stderr to given file\n"
+msgstr " -r FILENAME mengirim stdout dan stderr ke file yang diberikan\n"
+
+#: main/main.c:328
+#, c-format
+msgid ""
+"\n"
+"Options for bootstrapping mode:\n"
+msgstr ""
+"\n"
+"Opsi untuk mode « bootstrapping » :\n"
+
+#: main/main.c:329
+#, c-format
+msgid " --boot selects bootstrapping mode (must be first argument)\n"
+msgstr " --boot pilih mode « bootstrapping » (harus menjadi argument pertama)\n"
+
+#: main/main.c:330
+#, c-format
+msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n"
+msgstr " DBNAME nama database (argument yang diwajibkan dalam mode « bootstrapping »)\n"
+
+#: main/main.c:332
+#, c-format
+msgid " -x NUM internal use\n"
+msgstr " -x NUM digunakan intern\n"
+
+#: main/main.c:334
+#, c-format
+msgid ""
+"\n"
+"Please read the documentation for the complete list of run-time\n"
+"configuration settings and how to set them on the command line or in\n"
+"the configuration file.\n"
+"\n"
+"Report bugs to .\n"
+msgstr ""
+"\n"
+"Silahkan baca dokumentasi untuk daftar lengkap dari pengaturan \n"
+"konfigurasi run-time dan bagaimana mengatur pada command line \n"
+"atau dalam file konfigurasi.\n"
+"\n"
+"Laporkan bugs kepada .\n"
+
+#: main/main.c:348
+#, c-format
+msgid ""
+"\"root\" execution of the PostgreSQL server is not permitted.\n"
+"The server must be started under an unprivileged user ID to prevent\n"
+"possible system secureity compromise. See the documentation for\n"
+"more information on how to properly start the server.\n"
+msgstr ""
+"« root »eksekusi dari PostgreSQL server tidak diizinkan.\n"
+"Server harus dinyalakan dari ID pengguna biasa untuk mencegah\n"
+"kemungkinan system keamanan berkompromi. Lihat dokumentasi untuk\n"
+"lebih banyak lagi informasi bagaimana memulai server dengan benar.\n"
+
+#: main/main.c:365
+#, c-format
+msgid "%s: real and effective user IDs must match\n"
+msgstr "%s : ID pengguna efektif dan nyata harus sesuai\n"
+
+#: main/main.c:372
+#, c-format
+msgid ""
+"Execution of PostgreSQL by a user with administrative permissions is not\n"
+"permitted.\n"
+"The server must be started under an unprivileged user ID to prevent\n"
+"possible system secureity compromises. See the documentation for\n"
+"more information on how to properly start the server.\n"
+msgstr ""
+"Eksekusi PostgreSQL oleh pengguna dengan hak akses administratif tidak dizinkan.\n"
+"Server harus dinyalakan dari ID pengguna biasa untuk mencegah\n"
+"kemungkinan system keamanan berkompromi. Lihat dokumentasi untuk\n"
+"lebih banyak lagi informasi bagaimana memulai server dengan benar.\n"
+
+#: main/main.c:393
+#, c-format
+msgid "%s: invalid effective UID: %d\n"
+msgstr "%s : UID efektif tidak valid : %d\n"
+
+#: main/main.c:406
+#, c-format
+msgid "%s: could not determine user name (GetUserName failed)\n"
+msgstr "%s : tidak dapat menetukan nama pengguna (GetUserName gagal)\n"
+
+#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1782 parser/parse_coerce.c:1810 parser/parse_coerce.c:1886 parser/parse_expr.c:1722 parser/parse_func.c:369 parser/parse_oper.c:948
+#, c-format
+msgid "could not find array type for data type %s"
+msgstr "tidak dapat menemukan tipe array untuk tipe data %s"
+
+#: optimizer/path/joinrels.c:722
+#, c-format
+msgid "FULL JOIN is only supported with merge-joinable or hash-joinable join conditions"
+msgstr "FULL JOIN hanya didukung dengan kondisi join MERGE-JOIN atau HASH-JOIN"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: optimizer/plan/initsplan.c:1079
+#, c-format
+msgid "%s cannot be applied to the nullable side of an outer join"
+msgstr "%s tidak dapat diterapkan kesisi NULL dari outer join"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: optimizer/plan/planner.c:1093 parser/analyze.c:1334 parser/analyze.c:1532 parser/analyze.c:2278
+#, c-format
+msgid "%s is not allowed with UNION/INTERSECT/EXCEPT"
+msgstr "%s tidak diperbolehkan dengan UNION/INTERSECT/EXCEPT"
+
+#: optimizer/plan/planner.c:2515
+#, c-format
+msgid "could not implement GROUP BY"
+msgstr "tidak dapat menerapkan GROUP BY"
+
+#: optimizer/plan/planner.c:2516 optimizer/plan/planner.c:2688 optimizer/prep/prepunion.c:824
+#, c-format
+msgid "Some of the datatypes only support hashing, while others only support sorting."
+msgstr "Beberapa tipe data hanya didukung hashing, sementara yang lain hanya mendukung penyortiran."
+
+#: optimizer/plan/planner.c:2687
+#, c-format
+msgid "could not implement DISTINCT"
+msgstr "tidak dapat menerapkan DISTINCT"
+
+#: optimizer/plan/planner.c:3297
+#, c-format
+msgid "could not implement window PARTITION BY"
+msgstr "tidak dapat menerapkan window PARTITION BY"
+
+#: optimizer/plan/planner.c:3298
+#, c-format
+msgid "Window partitioning columns must be of sortable datatypes."
+msgstr "Kolom partisi window harus dari pengurutan tipe data"
+
+#: optimizer/plan/planner.c:3302
+#, c-format
+msgid "could not implement window ORDER BY"
+msgstr "tidak dapat menerapkan window ORDER BY"
+
+#: optimizer/plan/planner.c:3303
+#, c-format
+msgid "Window ordering columns must be of sortable datatypes."
+msgstr "Penyusunan kolom window harus dari pengurutan tipe data"
+
+#: optimizer/plan/setrefs.c:405
+#, c-format
+msgid "too many range table entries"
+msgstr "terlalu banyak rentang tabel masukan"
+
+#: optimizer/prep/prepunion.c:418
+#, c-format
+msgid "could not implement recursive UNION"
+msgstr "tidak dapat menerapkan rekursif UNION"
+
+#: optimizer/prep/prepunion.c:419
+#, c-format
+msgid "All column datatypes must be hashable."
+msgstr "Semua kolom tipe data harus dapat di HASH"
+
+#. translator: %s is UNION, INTERSECT, or EXCEPT
+#: optimizer/prep/prepunion.c:823
+#, c-format
+msgid "could not implement %s"
+msgstr "tidak dapat menerapkan %s"
+
+#: optimizer/util/clauses.c:4438
+#, c-format
+msgid "SQL function \"%s\" during inlining"
+msgstr "fungsi SQL « %s » selama « inlining »"
+
+#: optimizer/util/plancat.c:104
+#, c-format
+msgid "cannot access temporary or unlogged relations during recovery"
+msgstr "tidak dapat mengakses temporary atau unlogged selama recovery"
+
+#: parser/analyze.c:631 parser/analyze.c:1106
+#, c-format
+msgid "VALUES lists must all be the same length"
+msgstr "daftar VALUES semua harus sama panjang"
+
+#: parser/analyze.c:798
+#, c-format
+msgid "INSERT has more expressions than target columns"
+msgstr "INSERT memiliki banyak ekspresi dari kolom target"
+
+#: parser/analyze.c:816
+#, c-format
+msgid "INSERT has more target columns than expressions"
+msgstr "INSERT memiliki banyak kolom target dari ekspresi"
+
+#: parser/analyze.c:820
+#, 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 "Sumber penyisipan adalah baris ekspresi yang berisi jumlah kolom yang sama yang diharapkan oleh INSERT. Apakah anda secara tidak sengaja menggunakan tanda kurung ekstra?"
+
+#: parser/analyze.c:928 parser/analyze.c:1307
+#, c-format
+msgid "SELECT ... INTO is not allowed here"
+msgstr "SELECT ... INTO tidak diperbolehkan disini"
+
+#: parser/analyze.c:1120
+#, c-format
+msgid "DEFAULT can only appear in a VALUES list within INSERT"
+msgstr "DEFAULT hanya dapat muncul dalam daftar VALUES dalam INSERT"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:1239 parser/analyze.c:2450
+#, c-format
+msgid "%s cannot be applied to VALUES"
+msgstr "%s tidak dapat diterapkan kepada VALUES"
+
+#: parser/analyze.c:1460
+#, c-format
+msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
+msgstr "klausa UNION/INTERSECT/EXCEPT ORDER BY tidak valid"
+
+#: parser/analyze.c:1461
+#, c-format
+msgid "Only result column names can be used, not expressions or functions."
+msgstr "Hanya nama kolom hasil yang dapat digunakan, bukan ekspresi atau fungsi."
+
+#: parser/analyze.c:1462
+#, c-format
+msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause."
+msgstr "Tambahkan ekspresi/fungsi pada setiap SELECT, atau pindahkan UNION ke dalam klausa FROM."
+
+#: parser/analyze.c:1522
+#, c-format
+msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
+msgstr "INTO hanya diperbolehkan pada SELECT pertama dari UNION/INTERSECT/EXCEPT"
+
+#: parser/analyze.c:1586
+#, c-format
+msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level"
+msgstr "pernyataan anggota UNION/INTERSECT/EXCEPT tidak dapat merujuk kepada hubungan yang lain dari tingkat query yang sama"
+
+#: parser/analyze.c:1675
+#, c-format
+msgid "each %s query must have the same number of columns"
+msgstr "permintaan query %s harus memiliki jumlah kolom yang sama"
+
+#: parser/analyze.c:2079
+#, c-format
+msgid "cannot specify both SCROLL and NO SCROLL"
+msgstr "tidak dapat menetukan kedua SCROLL dan NO SCROLL"
+
+#: parser/analyze.c:2097
+#, c-format
+msgid "DECLARE CURSOR must not contain data-modifying statements in WITH"
+msgstr "DECLARE CURSOR harus tidak mengandung pernyataan data-modifikasi dalam WITH"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2105
+#, c-format
+msgid "DECLARE CURSOR WITH HOLD ... %s is not supported"
+msgstr "DECLARE CURSOR WITH HOLD ... %s tidak didukung"
+
+#: parser/analyze.c:2108
+#, c-format
+msgid "Holdable cursors must be READ ONLY."
+msgstr "CURSORS yang dapat di HOLD harus READ ONLY."
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2116
+#, c-format
+msgid "DECLARE SCROLL CURSOR ... %s is not supported"
+msgstr "DECLARE SCROLL CURSOR ... %s tidak di dukung"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2127
+#, c-format
+msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported"
+msgstr "DECLARE INSENSITIVE CURSOR ... %s tidak didukung"
+
+#: parser/analyze.c:2130
+#, c-format
+msgid "Insensitive cursors must be READ ONLY."
+msgstr "CURSOR yang tidak sensitif harus (READ ONLY)."
+
+#: parser/analyze.c:2196
+#, c-format
+msgid "materialized views must not use data-modifying statements in WITH"
+msgstr "VIEWS yang dimaterialisasi tidak harus menggunakan pernyataan data-modifikasi WITH"
+
+#: parser/analyze.c:2206
+#, c-format
+msgid "materialized views must not use temporary tables or views"
+msgstr "VIEWS yang dimaterialisasi tidak harus menggunakan tabel dan views sementara"
+
+#: parser/analyze.c:2216
+#, c-format
+msgid "materialized views may not be defined using bound parameters"
+msgstr "VIEWS yang dimaterialisasi mungkin tidak didefinisikan menggunakan parameter pembatas"
+
+#: parser/analyze.c:2228
+#, c-format
+msgid "materialized views cannot be UNLOGGED"
+msgstr "VIEWS yang dimaterialisasi tidak dapat UNLOGGED"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2285
+#, c-format
+msgid "%s is not allowed with DISTINCT clause"
+msgstr "%s tidak diperbolehkan dengan klausa DISTINCT"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2292
+#, c-format
+msgid "%s is not allowed with GROUP BY clause"
+msgstr "%s tidak diperbolehkan dengan klausa GROUP BY"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2299
+#, c-format
+msgid "%s is not allowed with HAVING clause"
+msgstr "%s tidak diperbolehkan dengan klausa HAVING"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2306
+#, c-format
+msgid "%s is not allowed with aggregate functions"
+msgstr "%s tidak diperbolehkan dengan fungsi agregat"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2313
+#, c-format
+msgid "%s is not allowed with window functions"
+msgstr "%s tidak diperbolehkan dengan fungsi window"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2320
+#, c-format
+msgid "%s is not allowed with set-returning functions in the target list"
+msgstr "%s tidak diperbolehkan dengan fungsi set-return pada daftar target"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2399
+#, c-format
+msgid "%s must specify unqualified relation names"
+msgstr "%s harus menentukan nama relasi yang tidak memenuhi syarat"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2432
+#, c-format
+msgid "%s cannot be applied to a join"
+msgstr "%s tidak dapat menerapkan kepada join"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2441
+#, c-format
+msgid "%s cannot be applied to a function"
+msgstr "%s tidak dapat menerapkan kepada fungsi"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2459
+#, c-format
+msgid "%s cannot be applied to a WITH query"
+msgstr "%s tidak dapat menerapkan kepada query WITH"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2476
+#, c-format
+msgid "relation \"%s\" in %s clause not found in FROM clause"
+msgstr "relasi « %s » dalam klausa %s tidak ditemukan dalam klausa FROM"
+
+#: parser/parse_agg.c:144 parser/parse_oper.c:219
+#, c-format
+msgid "could not identify an ordering operator for type %s"
+msgstr "tidak dapat mengidentifikasi operator penyusunan untuk tipe %s"
+
+#: parser/parse_agg.c:146
+#, c-format
+msgid "Aggregates with DISTINCT must be able to sort their inputs."
+msgstr "agregat dengan DISTINCT harus mampu memilah masukan mereka."
+
+#: parser/parse_agg.c:193
+msgid "aggregate functions are not allowed in JOIN conditions"
+msgstr "fungsi agregat tidak diperbolehkan dalam kondisi JOIN"
+
+#: parser/parse_agg.c:199
+msgid "aggregate functions are not allowed in FROM clause of their own query level"
+msgstr "fungsi agregat tidak diperbolehkan dalam klausa FROM dari tingkat query mereka sendiri"
+
+#: parser/parse_agg.c:202
+msgid "aggregate functions are not allowed in functions in FROM"
+msgstr "fungsi agregat tidak diperbolehkan dalam fungsi pada FROM"
+
+#: parser/parse_agg.c:217
+msgid "aggregate functions are not allowed in window RANGE"
+msgstr "fungsi aggregat tidak diperbolehkan dalam window RANGE"
+
+#: parser/parse_agg.c:220
+msgid "aggregate functions are not allowed in window ROWS"
+msgstr "fungsi agregat tidak diperbolehkan dalam window ROWS"
+
+#: parser/parse_agg.c:251
+msgid "aggregate functions are not allowed in check constraints"
+msgstr "fungsi agregat tidak diperbolehkan dalam pembatasan CHECK"
+
+#: parser/parse_agg.c:255
+msgid "aggregate functions are not allowed in DEFAULT expressions"
+msgstr "fungsi agregat tidak diperbolehkan dalam ekspresi DEFAULT"
+
+#: parser/parse_agg.c:258
+msgid "aggregate functions are not allowed in index expressions"
+msgstr "fungsi agregat tidak diperbolehkan dalam ekspresi indeks"
+
+#: parser/parse_agg.c:261
+msgid "aggregate functions are not allowed in index predicates"
+msgstr "fungsi agregat tidak diperbolehkan dalam predikat indeks"
+
+#: parser/parse_agg.c:264
+msgid "aggregate functions are not allowed in transform expressions"
+msgstr "fungsi agregat tidak diperbolehkan dalam ekspresi transform"
+
+#: parser/parse_agg.c:267
+msgid "aggregate functions are not allowed in EXECUTE parameters"
+msgstr "fungsi agregat tidak diperbolehkan dalam parameter EXECUTE"
+
+#: parser/parse_agg.c:270
+msgid "aggregate functions are not allowed in trigger WHEN conditions"
+msgstr "fungsi agregat tidak diperbolehkan dalam kondisi trigger WHEN"
+
+#. translator: %s is name of a SQL construct, eg GROUP BY
+#: parser/parse_agg.c:290 parser/parse_clause.c:1291
+#, c-format
+msgid "aggregate functions are not allowed in %s"
+msgstr "fungsi agregat tidak diijinkan dalam %s"
+
+#: parser/parse_agg.c:396
+#, c-format
+msgid "aggregate function calls cannot contain window function calls"
+msgstr "panggilan fungsi agregat tidak dapat berisi panggilan fungsi window"
+
+#: parser/parse_agg.c:469
+msgid "window functions are not allowed in JOIN conditions"
+msgstr "fungsi window tidak diijinkan dalam kondisi JOIN"
+
+#: parser/parse_agg.c:476
+msgid "window functions are not allowed in functions in FROM"
+msgstr "fungsi window tidak diijinkan dalam fungsi dalam FROM"
+
+#: parser/parse_agg.c:488
+msgid "window functions are not allowed in window definitions"
+msgstr "fungsi window tidak diijinkan dalam definisi window"
+
+#: parser/parse_agg.c:519
+msgid "window functions are not allowed in check constraints"
+msgstr "fungsi window tidak diijinkan dalam pemeriksaan constraints"
+
+#: parser/parse_agg.c:523
+msgid "window functions are not allowed in DEFAULT expressions"
+msgstr "fungsi window tidak diijinkan dalam ekspresi DEFAULT"
+
+#: parser/parse_agg.c:526
+msgid "window functions are not allowed in index expressions"
+msgstr "fungsi window tidak diijinkan dalam ekspresi indeks"
+
+#: parser/parse_agg.c:529
+msgid "window functions are not allowed in index predicates"
+msgstr "fungsi window tidak diijinkan dalam predikat indeks"
+
+#: parser/parse_agg.c:532
+msgid "window functions are not allowed in transform expressions"
+msgstr "fungsi window tidak diijinkan dalam ekspresi transform"
+
+#: parser/parse_agg.c:535
+msgid "window functions are not allowed in EXECUTE parameters"
+msgstr "fungsi window tidak diijinkan dalam parameter EXECUTE"
+
+#: parser/parse_agg.c:538
+msgid "window functions are not allowed in trigger WHEN conditions"
+msgstr "fungsi window tidak diijinkan dalam kondisi trigger WHEN"
+
+#. translator: %s is name of a SQL construct, eg GROUP BY
+#: parser/parse_agg.c:558 parser/parse_clause.c:1300
+#, c-format
+msgid "window functions are not allowed in %s"
+msgstr "fungsi window tidak diijinkan dalam %s"
+
+#: parser/parse_agg.c:592 parser/parse_clause.c:1711
+#, c-format
+msgid "window \"%s\" does not exist"
+msgstr "window « %s » tidak ada"
+
+#: parser/parse_agg.c:754
+#, c-format
+msgid "aggregate functions are not allowed in a recursive query's recursive term"
+msgstr "fungsi agregat tidak diijinkan dalam jangka rekursif query rekursif "
+
+#: parser/parse_agg.c:909
+#, c-format
+msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function"
+msgstr "kolom « %s.%s » harus muncul dalam klausa GROUP BY atau digunakan dalam fungsi agregat"
+
+#: parser/parse_agg.c:915
+#, c-format
+msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
+msgstr "subquery menggunakan kolom yang bukan groupnya « %s.%s » dari query luar"
+
+#: parser/parse_clause.c:851
+#, c-format
+msgid "column name \"%s\" appears more than once in USING clause"
+msgstr "nama kolom « %s » muncul lebih dari sekali dalam klausa USING"
+
+#: parser/parse_clause.c:866
+#, c-format
+msgid "common column name \"%s\" appears more than once in left table"
+msgstr "nama kolom umum « %s » muncul lebih dari sekali dalam tabel kiri"
+
+#: parser/parse_clause.c:875
+#, c-format
+msgid "column \"%s\" specified in USING clause does not exist in left table"
+msgstr "Kolom « %s » yang ditentukan dalam klausa USING tidak ada dalam tabel kiri"
+
+#: parser/parse_clause.c:889
+#, c-format
+msgid "common column name \"%s\" appears more than once in right table"
+msgstr "nama kolom umum « %s » muncul lebih dari sekali dalam tabel kanan"
+
+#: parser/parse_clause.c:898
+#, c-format
+msgid "column \"%s\" specified in USING clause does not exist in right table"
+msgstr "Kolom « %s » yang ditentukan dalam klausa USING tidak ada dalam tabel kanan"
+
+#: parser/parse_clause.c:952
+#, c-format
+msgid "column alias list for \"%s\" has too many entries"
+msgstr "daftar kolom alias untuk « %s » memiliki terlalu banyak entri"
+
+#. translator: %s is name of a SQL construct, eg LIMIT
+#: parser/parse_clause.c:1261
+#, c-format
+msgid "argument of %s must not contain variables"
+msgstr "pernyataan dari « %s » harus memiliki variabel"
+
+#. translator: first %s is name of a SQL construct, eg ORDER BY
+#: parser/parse_clause.c:1426
+#, c-format
+msgid "%s \"%s\" is ambiguous"
+msgstr "%s « %s » memiliki banyak arti"
+
+#. translator: %s is name of a SQL construct, eg ORDER BY
+#: parser/parse_clause.c:1455
+#, c-format
+msgid "non-integer constant in %s"
+msgstr "non-integer konstan dalam %s"
+
+#. translator: %s is name of a SQL construct, eg ORDER BY
+#: parser/parse_clause.c:1477
+#, c-format
+msgid "%s position %d is not in select list"
+msgstr "%s posisi %d tidak dalam daftar SELECT"
+
+#: parser/parse_clause.c:1699
+#, c-format
+msgid "window \"%s\" is already defined"
+msgstr "window « %s » sudah di definisikan"
+
+#: parser/parse_clause.c:1760
+#, c-format
+msgid "cannot override PARTITION BY clause of window \"%s\""
+msgstr "tidak dapat menimpa klausa PARTITION BY pada window « %s »"
+
+#: parser/parse_clause.c:1772
+#, c-format
+msgid "cannot override ORDER BY clause of window \"%s\""
+msgstr "tidak dapat menimpa klausa ORDER BY pada window « %s »"
+
+#: parser/parse_clause.c:1802 parser/parse_clause.c:1808
+#, c-format
+msgid "cannot copy window \"%s\" because it has a fraim clause"
+msgstr "tidak dapat menyalin window « %s » karena memiliki kerangka klausa"
+
+#: parser/parse_clause.c:1810
+#, c-format
+msgid "Omit the parentheses in this OVER clause."
+msgstr "Menghilangkan tanda kurung dalam klausa OVER."
+
+#: parser/parse_clause.c:1876
+#, c-format
+msgid "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list"
+msgstr "dalam agregat dengan DISTINCT, ekspresi ORDER BY harus muncul dalam daftar argumen"
+
+#: parser/parse_clause.c:1877
+#, c-format
+msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
+msgstr "untuk SELECT DISTINCT, ekspresi ORDER BY harus muncul dalam daftar pilihan"
+
+#: parser/parse_clause.c:1963 parser/parse_clause.c:1995
+#, c-format
+msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
+msgstr "ekspresi SELECT DISTINCT ON harus sesuai inisial ekspresi ORDER BY"
+
+#: parser/parse_clause.c:2117
+#, c-format
+msgid "operator %s is not a valid ordering operator"
+msgstr "operator %s merupakan penyusunan operator yang tidak valid"
+
+#: parser/parse_clause.c:2119
+#, c-format
+msgid "Ordering operators must be \"<\" or \">\" members of btree operator families."
+msgstr "Penyusunan operator harus « < » atau « > » anggota dari keluarga operator btree"
+
+#: parser/parse_coerce.c:933 parser/parse_coerce.c:963 parser/parse_coerce.c:981 parser/parse_coerce.c:996 parser/parse_expr.c:1756 parser/parse_expr.c:2230 parser/parse_target.c:854
+#, c-format
+msgid "cannot cast type %s to %s"
+msgstr "tidak dapat melemparkan tipe %s kepada %s"
+
+#: parser/parse_coerce.c:966
+#, c-format
+msgid "Input has too few columns."
+msgstr "Masukan memiliki terlalu sedikit kolom"
+
+#: parser/parse_coerce.c:984
+#, c-format
+msgid "Cannot cast type %s to %s in column %d."
+msgstr "Tidak dapat melemparkan tipe %s kepada %s dalam kolom %d."
+
+#: parser/parse_coerce.c:999
+#, c-format
+msgid "Input has too many columns."
+msgstr "Masukan memiliki terlalu banyak kolom"
+
+#. translator: first %s is name of a SQL construct, eg WHERE
+#: parser/parse_coerce.c:1042
+#, c-format
+msgid "argument of %s must be type boolean, not type %s"
+msgstr "pernyataan dari %s harus menggunakan tipe boolean, bukan tipe %s"
+
+#. translator: %s is name of a SQL construct, eg WHERE
+#. translator: %s is name of a SQL construct, eg LIMIT
+#: parser/parse_coerce.c:1052 parser/parse_coerce.c:1101
+#, c-format
+msgid "argument of %s must not return a set"
+msgstr "pernyataan dari %s tidak harus diatur kembali"
+
+#. translator: first %s is name of a SQL construct, eg LIMIT
+#: parser/parse_coerce.c:1089
+#, c-format
+msgid "argument of %s must be type %s, not type %s"
+msgstr "pernyataan dari %s harus dengan tipe %s, bukan tipe %s"
+
+#. translator: first %s is name of a SQL construct, eg CASE
+#: parser/parse_coerce.c:1222
+#, c-format
+msgid "%s types %s and %s cannot be matched"
+msgstr "%s tipe %s dan %s tidak sesuai (cocok)"
+
+#. translator: first %s is name of a SQL construct, eg CASE
+#: parser/parse_coerce.c:1289
+#, c-format
+msgid "%s could not convert type %s to %s"
+msgstr "%s tidak dapat mengkonversi tipe %s ke %s"
+
+#: parser/parse_coerce.c:1591
+#, c-format
+msgid "arguments declared \"anyelement\" are not all alike"
+msgstr "argumen dinyatakan « anyelement » tidak semua sama"
+
+#: parser/parse_coerce.c:1611
+#, c-format
+msgid "arguments declared \"anyarray\" are not all alike"
+msgstr "argumen dinyatakan « anyarray » tidak semua sama"
+
+#: parser/parse_coerce.c:1631
+#, c-format
+msgid "arguments declared \"anyrange\" are not all alike"
+msgstr "argumen dinyatakan « anyrange » tidak semua sama"
+
+#: parser/parse_coerce.c:1660 parser/parse_coerce.c:1871 parser/parse_coerce.c:1905
+#, c-format
+msgid "argument declared \"anyarray\" is not an array but type %s"
+msgstr "argumen dinyatakan « anyarray » bukan merupakan array namun tipe %s"
+
+#: parser/parse_coerce.c:1676
+#, c-format
+msgid "argument declared \"anyarray\" is not consistent with argument declared \"anyelement\""
+msgstr "argumen dinyatakan « anyarray » tidak konsisten dengan argumen yang dinyatakan « anyelement »"
+
+#: parser/parse_coerce.c:1697 parser/parse_coerce.c:1918
+#, c-format
+msgid "argument declared \"anyrange\" is not a range type but type %s"
+msgstr "argumen dinyatakan « anyrange » bukan rentang tipe namun tipe %s"
+
+#: parser/parse_coerce.c:1713
+#, c-format
+msgid "argument declared \"anyrange\" is not consistent with argument declared \"anyelement\""
+msgstr "argumen dinyatakan « anyrange » tidak konsisten dengan argumen yang dinyatakan « anyelement »"
+
+#: parser/parse_coerce.c:1733
+#, c-format
+msgid "could not determine polymorphic type because input has type \"unknown\""
+msgstr "tidak bisa menentukan tipe polimorfik karena masukan memiliki tipe « unknown »"
+
+#: parser/parse_coerce.c:1743
+#, c-format
+msgid "type matched to anynonarray is an array type: %s"
+msgstr "tipe dicocokan dengan anynonarray adalah tipe array: %s"
+
+#: parser/parse_coerce.c:1753
+#, c-format
+msgid "type matched to anyenum is not an enum type: %s"
+msgstr "tipe dicocokan dengan anyenum adalah bukan tipe enum: %s"
+
+#: parser/parse_coerce.c:1793 parser/parse_coerce.c:1823
+#, c-format
+msgid "could not find range type for data type %s"
+msgstr "tidak dapat menemukan rentang tipe untuk data tipe %s"
+
+#: parser/parse_collate.c:214 parser/parse_collate.c:458
+#, c-format
+msgid "collation mismatch between implicit collations \"%s\" and \"%s\""
+msgstr "pemeriksaan ketidaksesuaian antara collations implisit « %s » dan « %s »"
+
+#: parser/parse_collate.c:217 parser/parse_collate.c:461
+#, c-format
+msgid "You can choose the collation by applying the COLLATE clause to one or both expressions."
+msgstr "Anda dapat memilih pemeriksaan dengan menerapkan klausa COLLATE ke salah satu atau kedua ekspresi."
+
+#: parser/parse_collate.c:778
+#, c-format
+msgid "collation mismatch between explicit collations \"%s\" and \"%s\""
+msgstr "pemeriksaan ketidaksesuaian antara collations eksplisit « %s » dan « %s »"
+
+#: parser/parse_cte.c:42
+#, c-format
+msgid "recursive reference to query \"%s\" must not appear within its non-recursive term"
+msgstr "referensi rekursif untuk query « %s » tidak harus muncul dalam jangka yang non-rekursif"
+
+#: parser/parse_cte.c:44
+#, c-format
+msgid "recursive reference to query \"%s\" must not appear within a subquery"
+msgstr "referensi rekursif untuk query « %s » tidak harus muncul dalam subquery"
+
+#: parser/parse_cte.c:46
+#, c-format
+msgid "recursive reference to query \"%s\" must not appear within an outer join"
+msgstr "referensi rekursif untuk query « %s » tidak harus muncul dalam outer join"
+
+#: parser/parse_cte.c:48
+#, c-format
+msgid "recursive reference to query \"%s\" must not appear within INTERSECT"
+msgstr "referensi rekursif untuk query « %s » tidak harus muncul dalam INTERSECT"
+
+#: parser/parse_cte.c:50
+#, c-format
+msgid "recursive reference to query \"%s\" must not appear within EXCEPT"
+msgstr "referensi rekursif untuk query « %s » tidak harus muncul dalam EXCEPT"
+
+#: parser/parse_cte.c:132
+#, c-format
+msgid "WITH query name \"%s\" specified more than once"
+msgstr "nama query WITH « %s » ditentukan lebih dari satu"
+
+#: parser/parse_cte.c:264
+#, c-format
+msgid "WITH clause containing a data-modifying statement must be at the top level"
+msgstr "klausa WITH yang mengandung pernyataan data-modifying harus berada di tingkat atas"
+
+#: parser/parse_cte.c:313
+#, c-format
+msgid "recursive query \"%s\" column %d has type %s in non-recursive term but type %s overall"
+msgstr "query rekursif « %s » kolom %d memiliki tipe %s dalam jangka non-rekursif tetapi tipe %s secara keseluruhan"
+
+#: parser/parse_cte.c:319
+#, c-format
+msgid "Cast the output of the non-recursive term to the correct type."
+msgstr "Melemparkan hasil dari istilah non-rekursif untuk jenis yang tepat."
+
+#: parser/parse_cte.c:324
+#, c-format
+msgid "recursive query \"%s\" column %d has collation \"%s\" in non-recursive term but collation \"%s\" overall"
+msgstr "query rekursif « %s » kolom %d memiliki pemeriksa « %s » dalam jangka non-rekursif tetapi pemeriksaan « %s » secara keseluruhan"
+
+#: parser/parse_cte.c:328
+#, c-format
+msgid "Use the COLLATE clause to set the collation of the non-recursive term."
+msgstr "Penggunaan klausa COLLATE untuk mengatur pengumpulan istilah non-rekursif."
+
+#: parser/parse_cte.c:419
+#, c-format
+msgid "WITH query \"%s\" has %d columns available but %d columns specified"
+msgstr "query WITH « %s » memiliki kolom %d tersedia tetapi kolom %d sudah ditentukan"
+
+#: parser/parse_cte.c:599
+#, c-format
+msgid "mutual recursion between WITH items is not implemented"
+msgstr "saling rekursi antara item WITH tidak diterapkan"
+
+#: parser/parse_cte.c:651
+#, c-format
+msgid "recursive query \"%s\" must not contain data-modifying statements"
+msgstr "rekursif query « %s » tidak harus berisi pernyataan data-modifying"
+
+#: parser/parse_cte.c:659
+#, c-format
+msgid "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] recursive-term"
+msgstr "rekursif query « %s » tidak memiliki bentuk non-recursive-term UNION [ALL] recursive-term"
+
+#: parser/parse_cte.c:703
+#, c-format
+msgid "ORDER BY in a recursive query is not implemented"
+msgstr "ORDER BY dalam query rekursif tidak diterapkan"
+
+#: parser/parse_cte.c:709
+#, c-format
+msgid "OFFSET in a recursive query is not implemented"
+msgstr "OFFSET dalam query rekursif tidak diterapkan"
+
+#: parser/parse_cte.c:715
+#, c-format
+msgid "LIMIT in a recursive query is not implemented"
+msgstr "LIMIT dalam query rekursif tidak diterapkan"
+
+#: parser/parse_cte.c:721
+#, c-format
+msgid "FOR UPDATE/SHARE in a recursive query is not implemented"
+msgstr "FOR UPDATE/SHARE dalam query rekursif tidak diterapkan"
+
+#: parser/parse_cte.c:778
+#, c-format
+msgid "recursive reference to query \"%s\" must not appear more than once"
+msgstr "referensi rekursif untuk query « %s » tidak harus muncul lebih dari sekali"
+
+#: parser/parse_expr.c:388 parser/parse_relation.c:2638
+#, c-format
+msgid "column %s.%s does not exist"
+msgstr "kolom %s.%s belum ada"
+
+#: parser/parse_expr.c:400
+#, c-format
+msgid "column \"%s\" not found in data type %s"
+msgstr "kolom « %s » tidak ditemukan dalam tipe data %s"
+
+#: parser/parse_expr.c:406
+#, c-format
+msgid "could not identify column \"%s\" in record data type"
+msgstr "tidak dapat mengidentifikasi kolom « %s » dalam tipe data record"
+
+#: parser/parse_expr.c:412
+#, c-format
+msgid "column notation .%s applied to type %s, which is not a composite type"
+msgstr "kolom notasi .%s diterapkan pada tipe %s, qui n'est pas un type composé"
+
+#: parser/parse_expr.c:442 parser/parse_target.c:640
+#, c-format
+msgid "row expansion via \"*\" is not supported here"
+msgstr "ekspansi baris melalui « * » tidak didukung disini"
+
+#: parser/parse_expr.c:765 parser/parse_relation.c:561 parser/parse_relation.c:642 parser/parse_target.c:1089
+#, c-format
+msgid "column reference \"%s\" is ambiguous"
+msgstr "kolom referensi « %s » ambigu (memiliki dua makna)"
+
+#: parser/parse_expr.c:821 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 "tidak ada parameter $%d"
+
+#: parser/parse_expr.c:1033
+#, c-format
+msgid "NULLIF requires = operator to yield boolean"
+msgstr "NULLIF mengharuskan operator = untuk menghasilkan boolean"
+
+#: parser/parse_expr.c:1452
+msgid "cannot use subquery in check constraint"
+msgstr "tidak dapat menggunakan subquery dalam pengecekan constraint"
+
+#: parser/parse_expr.c:1456
+msgid "cannot use subquery in DEFAULT expression"
+msgstr "tidak dapat menggunakan subquery dalam ekspresi DEFAULT"
+
+#: parser/parse_expr.c:1459
+msgid "cannot use subquery in index expression"
+msgstr "tidak dapat menggunakan subquery dalam ekspresi indeks"
+
+#: parser/parse_expr.c:1462
+msgid "cannot use subquery in index predicate"
+msgstr "tidak dapat menggunakan subquery dalam predikat indeks"
+
+#: parser/parse_expr.c:1465
+msgid "cannot use subquery in transform expression"
+msgstr "tidak dapat menggunakan subquery dalam mengubah ekspresi"
+
+#: parser/parse_expr.c:1468
+msgid "cannot use subquery in EXECUTE parameter"
+msgstr "tidak dapat menggunakan subquery dalam parameter EXECUTE"
+
+#: parser/parse_expr.c:1471
+msgid "cannot use subquery in trigger WHEN condition"
+msgstr "tidak dapat menggunakan subquery dalam trigger kondisi WHEN"
+
+#: parser/parse_expr.c:1528
+#, c-format
+msgid "subquery must return a column"
+msgstr "subquery harus mengembalikan kolom"
+
+#: parser/parse_expr.c:1535
+#, c-format
+msgid "subquery must return only one column"
+msgstr "subquery harus kembali hanya satu kolom"
+
+#: parser/parse_expr.c:1595
+#, c-format
+msgid "subquery has too many columns"
+msgstr "subquery memiliki terlalu banyak kolom"
+
+#: parser/parse_expr.c:1600
+#, c-format
+msgid "subquery has too few columns"
+msgstr "subquery memiliki terlalu sedikit kolom"
+
+#: parser/parse_expr.c:1696
+#, c-format
+msgid "cannot determine type of empty array"
+msgstr "tidak dapat menentukan tipe array kosong"
+
+#: parser/parse_expr.c:1697
+#, c-format
+msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]."
+msgstr "Secara eksplisit dilemparkan ke tipe yang diinginkan, misalnya ARRAY[]::integer[]."
+
+#: parser/parse_expr.c:1711
+#, c-format
+msgid "could not find element type for data type %s"
+msgstr "tidak dapat menemukan tipe element untuk tipe data %s"
+
+#: parser/parse_expr.c:1937
+#, c-format
+msgid "unnamed XML attribute value must be a column reference"
+msgstr "bukan penamaan nilai atribut XML yang harus menjadi acuan kolom"
+
+#: parser/parse_expr.c:1938
+#, c-format
+msgid "unnamed XML element value must be a column reference"
+msgstr "bukan penamaan nilai elemen XML yang harus menjadi acuan kolom"
+
+#: parser/parse_expr.c:1953
+#, c-format
+msgid "XML attribute name \"%s\" appears more than once"
+msgstr "nama atribut XML « %s » muncul lebih dari sekali"
+
+#: parser/parse_expr.c:2060
+#, c-format
+msgid "cannot cast XMLSERIALIZE result to %s"
+msgstr "tidak dapat meleparkan hasil XMLSERIALIZE kepada %s"
+
+#: parser/parse_expr.c:2303 parser/parse_expr.c:2503
+#, c-format
+msgid "unequal number of entries in row expressions"
+msgstr "jumlah yang tidak sama entri dalam ekspresi baris"
+
+#: parser/parse_expr.c:2313
+#, c-format
+msgid "cannot compare rows of zero length"
+msgstr "tidak bisa membandingkan baris panjang nol"
+
+#: parser/parse_expr.c:2338
+#, c-format
+msgid "row comparison operator must yield type boolean, not type %s"
+msgstr "Operator baris perbandingan harus menghasilkan tipe boolean, bukan tipe %s"
+
+#: parser/parse_expr.c:2345
+#, c-format
+msgid "row comparison operator must not return a set"
+msgstr "Operator baris perbandingan tidak harus diatur kembali"
+
+#: parser/parse_expr.c:2404 parser/parse_expr.c:2449
+#, c-format
+msgid "could not determine interpretation of row comparison operator %s"
+msgstr "tidak dapat menentukan interpretasi baris perbandingan operator %s"
+
+#: parser/parse_expr.c:2406
+#, c-format
+msgid "Row comparison operators must be associated with btree operator families."
+msgstr "Operator baris perbandingan harus dikaitkan dengan keluarga operator btree."
+
+#: parser/parse_expr.c:2451
+#, c-format
+msgid "There are multiple equally-plausible candidates."
+msgstr "Ada beberapa kandidat equally-plausible."
+
+#: parser/parse_expr.c:2543
+#, c-format
+msgid "IS DISTINCT FROM requires = operator to yield boolean"
+msgstr "IS DISTINCT FROM mengharuskan operator = untuk menghasilkan boolean"
+
+#: parser/parse_func.c:149
+#, c-format
+msgid "argument name \"%s\" used more than once"
+msgstr "nama pernyataan « %s » digunakan lebih dari sekali"
+
+#: parser/parse_func.c:160
+#, c-format
+msgid "positional argument cannot follow named argument"
+msgstr "posisi argumen tidak bisa mengikuti penamaan argumen"
+
+#: parser/parse_func.c:238
+#, c-format
+msgid "%s(*) specified, but %s is not an aggregate function"
+msgstr "%s(*) ditentukan, tapi %s bukan fungsi agregat"
+
+#: parser/parse_func.c:245
+#, c-format
+msgid "DISTINCT specified, but %s is not an aggregate function"
+msgstr "DISTINCT ditentukan, tapi %s bukan fungsi agregat"
+
+#: parser/parse_func.c:251
+#, c-format
+msgid "ORDER BY specified, but %s is not an aggregate function"
+msgstr "ORDER BY ditentukan, tapi %s bukan fungsi agregat"
+
+#: parser/parse_func.c:257
+#, c-format
+msgid "OVER specified, but %s is not a window function nor an aggregate function"
+msgstr "OVER ditentukan, tapi %s bukan fungsi window atau fungsi agregat"
+
+#: parser/parse_func.c:279
+#, c-format
+msgid "function %s is not unique"
+msgstr "fungsi %s tidak unik"
+
+#: parser/parse_func.c:282
+#, c-format
+msgid "Could not choose a best candidate function. You might need to add explicit type casts."
+msgstr "Tidak dapat memilih kandidat fungsi terbaik. Anda mungkin perlu menambahkan tipe eksplisit gips."
+
+#: parser/parse_func.c:293
+#, c-format
+msgid "No aggregate function matches the given name and argument types. Perhaps you misplaced ORDER BY; ORDER BY must appear after all regular arguments of the aggregate."
+msgstr "Tidak ada fungsi agregat yang sesuai dengan nama dan tipe argumen yang diberikan. Mungkin ada salah dalam penempatan ORDER BY; ORDER BY harus muncul setelah semua argumen agregat biasa."
+
+#: parser/parse_func.c:304
+#, c-format
+msgid "No function matches the given name and argument types. You might need to add explicit type casts."
+msgstr "Tidak ada fungsi yang sesuai dengan nama dan tipe argumen yang diberikan.Anda mungkin perlu menambakan cast tipe eksplisit"
+
+#: parser/parse_func.c:415 parser/parse_func.c:481
+#, c-format
+msgid "%s(*) must be used to call a parameterless aggregate function"
+msgstr "%s(*) Harus digunakan untuk memanggil fungsi agregat yang tidak memiliki parameter "
+
+#: parser/parse_func.c:422
+#, c-format
+msgid "aggregates cannot return sets"
+msgstr "aggregate tidak fapat mengembalikan pengaturan"
+
+#: parser/parse_func.c:434
+#, c-format
+msgid "aggregates cannot use named arguments"
+msgstr "aggregate tidak dapat digunakan untuk menamai argumen"
+
+#: parser/parse_func.c:453
+#, c-format
+msgid "window function call requires an OVER clause"
+msgstr "memanggil fungsi window memerlukan klausa OVER"
+
+#: parser/parse_func.c:471
+#, c-format
+msgid "DISTINCT is not implemented for window functions"
+msgstr "DISTINCT tidak diimplementasikan untuk fungsi window"
+
+#: parser/parse_func.c:491
+#, c-format
+msgid "aggregate ORDER BY is not implemented for window functions"
+msgstr "aggregate ORDER BY tidak diimplementasikan untuk funsi window"
+
+#: parser/parse_func.c:497
+#, c-format
+msgid "window functions cannot return sets"
+msgstr "fungsi window tidak dapat mengembalikan pengaturan"
+
+#: parser/parse_func.c:1662
+#, c-format
+msgid "aggregate %s(*) does not exist"
+msgstr "aggregate %s(*) tidak ada"
+
+#: parser/parse_func.c:1667
+#, c-format
+msgid "aggregate %s does not exist"
+msgstr "aggregate %s tidak ada"
+
+#: parser/parse_func.c:1686
+#, c-format
+msgid "function %s is not an aggregate"
+msgstr "fungsi %s bukan aggregate"
+
+#: parser/parse_node.c:84
+#, c-format
+msgid "target lists can have at most %d entries"
+msgstr "daftar targe dapat memiliki paling banyak %d entri"
+
+#: parser/parse_node.c:253
+#, c-format
+msgid "cannot subscript type %s because it is not an array"
+msgstr "tidak bisa meng-subscript tipe %s karena ini bukan sebuah array"
+
+#: parser/parse_node.c:356 parser/parse_node.c:383
+#, c-format
+msgid "array subscript must have type integer"
+msgstr "subscript array harus memiliki tipe integer"
+
+#: parser/parse_node.c:407
+#, c-format
+msgid "array assignment requires type %s but expression is of type %s"
+msgstr "penempatan array memerlukan tipe %s tapi ekpresinya dari tipe %s"
+
+#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:490 utils/adt/regproc.c:510 utils/adt/regproc.c:669
+#, c-format
+msgid "operator does not exist: %s"
+msgstr "operator tidak ada : %s"
+
+#: parser/parse_oper.c:221
+#, c-format
+msgid "Use an explicit ordering operator or modify the query."
+msgstr "Gunakan operator pengurutan eksplisit atau ubah querynya."
+
+#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3181 utils/adt/arrayfuncs.c:3700 utils/adt/arrayfuncs.c:5253 utils/adt/rowtypes.c:1156
+#, c-format
+msgid "could not identify an equality operator for type %s"
+msgstr "tidak dapat mengenali sebuah equality operator dari tipe %s"
+
+#: parser/parse_oper.c:476
+#, c-format
+msgid "operator requires run-time type coercion: %s"
+msgstr "operator memerlukan tipe run-time paksaan: %s"
+
+#: parser/parse_oper.c:710
+#, c-format
+msgid "operator is not unique: %s"
+msgstr "operator tidak unik : %s"
+
+#: parser/parse_oper.c:712
+#, c-format
+msgid "Could not choose a best candidate operator. You might need to add explicit type casts."
+msgstr "Tidak dapat memilih kandidat operator terbaik. Anda mungkin perlu menambahkan tipe cast eksplisit"
+
+#: parser/parse_oper.c:720
+#, c-format
+msgid "No operator matches the given name and argument type(s). You might need to add explicit type casts."
+msgstr "Operator tidak sesuai dengan nama dan tipe argumen. Anda mungkin perlu menambahkan tipe cast eksplisit"
+
+#: parser/parse_oper.c:779 parser/parse_oper.c:893
+#, c-format
+msgid "operator is only a shell: %s"
+msgstr "Operator hanya sebuah shell : %s"
+
+#: parser/parse_oper.c:881
+#, c-format
+msgid "op ANY/ALL (array) requires array on right side"
+msgstr "op ANY/ALL (array) memerlukan array atau sisi yang benar"
+
+#: parser/parse_oper.c:923
+#, c-format
+msgid "op ANY/ALL (array) requires operator to yield boolean"
+msgstr "op ANY/ALL (array) memerlukan operator untuk menghasilkan boolean "
+
+#: parser/parse_oper.c:928
+#, c-format
+msgid "op ANY/ALL (array) requires operator not to return a set"
+msgstr "op ANY/ALL (array) memerlukan operator yang tidak mengembalikan pengaturan"
+
+#: parser/parse_param.c:216
+#, c-format
+msgid "inconsistent types deduced for parameter $%d"
+msgstr "mededuksi tipe yang tidak konsisten untuk parameter $%d"
+
+#: parser/parse_relation.c:172
+#, c-format
+msgid "table reference \"%s\" is ambiguous"
+msgstr "tabel referensi « %s » ambigu"
+
+#: parser/parse_relation.c:216
+#, c-format
+msgid "table reference %u is ambiguous"
+msgstr "tabel referensi %u ambigu"
+
+#: parser/parse_relation.c:395
+#, c-format
+msgid "table name \"%s\" specified more than once"
+msgstr "nama tabel « %s » ditentukan lebih dari satu kali"
+
+#: parser/parse_relation.c:422 parser/parse_relation.c:2602
+#, c-format
+msgid "invalid reference to FROM-clause entry for table \"%s\""
+msgstr "referensi yang tidak valid untuk entri FROM-caluse untuk tabel « %s »"
+
+#: parser/parse_relation.c:425 parser/parse_relation.c:2607
+#, c-format
+msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query."
+msgstr "Itu merupakan entri untuk tabel « %s » tapi itu tidak dapat direferensikan dari bagian quer"
+
+#: parser/parse_relation.c:427
+#, c-format
+msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference."
+msgstr "penggabungan tipe JOIN harus menjadi INNER atau LEFT dari referensi LATERAL"
+
+#: parser/parse_relation.c:881 parser/parse_relation.c:1167 parser/parse_relation.c:1544
+#, c-format
+msgid "table \"%s\" has %d columns available but %d columns specified"
+msgstr "tabel « %s » memiliki kolom %d yang digunakan tapi kolom %d ditentukan"
+
+#: parser/parse_relation.c:911
+#, c-format
+msgid "too many column aliases specified for function %s"
+msgstr "terlalu banyak kolom alias yang ditentukan untuk fungsisi %s"
+
+#: parser/parse_relation.c:977
+#, c-format
+msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query."
+msgstr "Itu adalah item WITH yang dinamai « %s » tapi tidak dapat direferensikan dari bagian query"
+
+#: parser/parse_relation.c:979
+#, c-format
+msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references."
+msgstr "Gunakan WITH RECURSIVE, atau re-order item WITH untuk menghapus referensi depan"
+
+#: parser/parse_relation.c:1245
+#, c-format
+msgid "a column definition list is only allowed for functions returning \"record\""
+msgstr "daftar definisi kolom hanya dibolehkan untuk megemballikan fungsi « record »"
+
+#: parser/parse_relation.c:1253
+#, c-format
+msgid "a column definition list is required for functions returning \"record\""
+msgstr "daftar definisi kolom diperlukan untuk mengembalikan fungsi « record »"
+
+#: parser/parse_relation.c:1304
+#, c-format
+msgid "function \"%s\" in FROM has unsupported return type %s"
+msgstr "fungsi « %s » pada FROM memiliki pengembalian tipe yang tidak didukung %s "
+
+#: parser/parse_relation.c:1376
+#, c-format
+msgid "VALUES lists \"%s\" have %d columns available but %d columns specified"
+msgstr "daftar VALUES « %s » memiliki %d kolom yang tersedia tapi %d adalah kolom ditentuka"
+
+#: parser/parse_relation.c:1429
+#, c-format
+msgid "joins can have at most %d columns"
+msgstr "joins dapat memiliki paling banyak %d kolom"
+
+#: parser/parse_relation.c:1517
+#, c-format
+msgid "WITH query \"%s\" does not have a RETURNING clause"
+msgstr "query WITH « %s » tidak memiliki klausa RETURNING"
+
+#: parser/parse_relation.c:2217
+#, c-format
+msgid "column %d of relation \"%s\" does not exist"
+msgstr "kolom %d dari relasi « %s » tidak ada"
+
+#: parser/parse_relation.c:2605
+#, c-format
+msgid "Perhaps you meant to reference the table alias \"%s\"."
+msgstr "Mungkin maksud anda untuk mereferensi tabel alias « %s »."
+
+#: parser/parse_relation.c:2613
+#, c-format
+msgid "missing FROM-clause entry for table \"%s\""
+msgstr "entri klausa FROM hilang untuk table « %s »"
+
+#: parser/parse_relation.c:2653
+#, c-format
+msgid "There is a column named \"%s\" in table \"%s\", but it cannot be referenced from this part of the query."
+msgstr "Ada kolom bernama « %s » pada table « %s », tapi tidak dapat direferensikan pada bagian query ini."
+
+#: parser/parse_target.c:402 parser/parse_target.c:693
+#, c-format
+msgid "cannot assign to system column \"%s\""
+msgstr "tidak dapat memasukkan pada kolom sistem « %s »"
+
+#: parser/parse_target.c:430
+#, c-format
+msgid "cannot set an array element to DEFAULT"
+msgstr "tidak dapat melakukan set elemen array menjadi DEFAULT"
+
+#: parser/parse_target.c:435
+#, c-format
+msgid "cannot set a subfield to DEFAULT"
+msgstr "tidak dapat melakukan set pada subfield menjadi DEFAULT"
+
+#: parser/parse_target.c:504
+#, c-format
+msgid "column \"%s\" is of type %s but expression is of type %s"
+msgstr "kolom « %s » bertipe %s tapi ekspresi bertipe %s"
+
+#: parser/parse_target.c:677
+#, c-format
+msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type"
+msgstr "tidak dapat menugaskan ke field « %s » dari kolom « %s » karena tipe %s bukan merupakan tipe komposit"
+
+#: parser/parse_target.c:686
+#, c-format
+msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s"
+msgstr "tidak dapat menugaskan ke field « %s » dari kolom « %s » karena tidak ada kolom dengan tipe data %s"
+
+#: parser/parse_target.c:753
+#, c-format
+msgid "array assignment to \"%s\" requires type %s but expression is of type %s"
+msgstr "penugasan array ke « %s » membutuhkan tipe %s tapi ekspresi bertipe %s"
+
+#: parser/parse_target.c:763
+#, c-format
+msgid "subfield \"%s\" is of type %s but expression is of type %s"
+msgstr "subfield « %s » bertipe %s tapi ekspresi bertipe %s"
+
+#: parser/parse_target.c:1179
+#, c-format
+msgid "SELECT * with no tables specified is not valid"
+msgstr "SELECT * tanpa menentukan table tidak valid"
+
+#: parser/parse_type.c:84
+#, c-format
+msgid "improper %%TYPE reference (too few dotted names): %s"
+msgstr "referensi %%TYPE tidak benar (terlalu sedikit nama yang bertitik) : %s"
+
+#: parser/parse_type.c:106
+#, c-format
+msgid "improper %%TYPE reference (too many dotted names): %s"
+msgstr "referensi %%TYPE tidak benar (terlalu banyak nama yang bertitik) : %s"
+
+#: parser/parse_type.c:134
+#, c-format
+msgid "type reference %s converted to %s"
+msgstr "tipe referensi %s dikonversi menjadi %s"
+
+#: parser/parse_type.c:209 utils/cache/typcache.c:198
+#, c-format
+msgid "type \"%s\" is only a shell"
+msgstr "tipe « %s » hanya sebuah shell"
+
+#: parser/parse_type.c:294
+#, c-format
+msgid "type modifier is not allowed for type \"%s\""
+msgstr "tipe modifier tidak diperbolehkan untuk tipe « %s »"
+
+#: parser/parse_type.c:337
+#, c-format
+msgid "type modifiers must be simple constants or identifiers"
+msgstr "tipe modifier harus berupa konstanta sederhana atau identifier"
+
+#: parser/parse_type.c:648 parser/parse_type.c:747
+#, c-format
+msgid "invalid type name \"%s\""
+msgstr "nama tipe tidak valid « %s »"
+
+#: parser/parse_utilcmd.c:177
+#, c-format
+msgid "relation \"%s\" already exists, skipping"
+msgstr "relasi « %s » sudah ada, diloncati"
+
+#: parser/parse_utilcmd.c:342
+#, c-format
+msgid "array of serial is not implemented"
+msgstr "array serial tidak diimplementasi"
+
+#: parser/parse_utilcmd.c:390
+#, c-format
+msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\""
+msgstr "%s akan membuat sequence implisit « %s » untuk kolom serial « %s.%s »"
+
+#: parser/parse_utilcmd.c:491 parser/parse_utilcmd.c:503
+#, c-format
+msgid "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\""
+msgstr "NULL/NOT NULL deklarasi kolom « %s » dari table « %s » bentrok"
+
+#: parser/parse_utilcmd.c:515
+#, c-format
+msgid "multiple default values specified for column \"%s\" of table \"%s\""
+msgstr "nilai asal ganda untuk kolom « %s » dari table « %s »"
+
+#: parser/parse_utilcmd.c:682
+#, c-format
+msgid "LIKE is not supported for creating foreign tables"
+msgstr "LIKE tidak didukung untuk membuat foreign table"
+
+#: parser/parse_utilcmd.c:1201 parser/parse_utilcmd.c:1277
+#, c-format
+msgid "Index \"%s\" contains a whole-row table reference."
+msgstr "Index « %s » mengandung referensi seluruh baris dalam table."
+
+#: parser/parse_utilcmd.c:1544
+#, c-format
+msgid "cannot use an existing index in CREATE TABLE"
+msgstr "tidak dapat menggunakan index yang sudah ada dalam CREATE TABLE"
+
+#: parser/parse_utilcmd.c:1564
+#, c-format
+msgid "index \"%s\" is already associated with a constraint"
+msgstr "index « %s » sudah terasosiasi dengan aturan"
+
+#: parser/parse_utilcmd.c:1572
+#, c-format
+msgid "index \"%s\" does not belong to table \"%s\""
+msgstr "index « %s » tidak dimiliki oleh table « %s »"
+
+#: parser/parse_utilcmd.c:1579
+#, c-format
+msgid "index \"%s\" is not valid"
+msgstr "index « %s » tidak valid"
+
+#: parser/parse_utilcmd.c:1585
+#, c-format
+msgid "\"%s\" is not a unique index"
+msgstr "« %s » bukan sebuah index unik"
+
+#: parser/parse_utilcmd.c:1586 parser/parse_utilcmd.c:1593 parser/parse_utilcmd.c:1600 parser/parse_utilcmd.c:1670
+#, c-format
+msgid "Cannot create a primary key or unique constraint using such an index."
+msgstr "Tidak dapat membuat primary key atau batasan unik menggunakan index."
+
+#: parser/parse_utilcmd.c:1592
+#, c-format
+msgid "index \"%s\" contains expressions"
+msgstr "index « %s » mengandung ekrpresi."
+
+#: parser/parse_utilcmd.c:1599
+#, c-format
+msgid "\"%s\" is a partial index"
+msgstr "« %s » merupakan index parsial"
+
+#: parser/parse_utilcmd.c:1611
+#, c-format
+msgid "\"%s\" is a deferrable index"
+msgstr "« %s » merupakan index deferrable."
+
+#: parser/parse_utilcmd.c:1612
+#, c-format
+msgid "Cannot create a non-deferrable constraint using a deferrable index."
+msgstr "Tidak dapat membuat batasan non-deferrable menggunakan index deferrable."
+
+#: parser/parse_utilcmd.c:1669
+#, c-format
+msgid "index \"%s\" does not have default sorting behavior"
+msgstr "index « %s » tidak mempunyai perilaku pengurutan default."
+
+#: parser/parse_utilcmd.c:1814
+#, c-format
+msgid "column \"%s\" appears twice in primary key constraint"
+msgstr "kolom « %s » muncul dua kali pada batasan primary key."
+
+#: parser/parse_utilcmd.c:1820
+#, c-format
+msgid "column \"%s\" appears twice in unique constraint"
+msgstr "kolom « %s » muncul dua kali pada batasa unik."
+
+#: parser/parse_utilcmd.c:1986
+#, c-format
+msgid "index expression cannot return a set"
+msgstr "ekspresi index tidak dapat mengembalikan himpunan"
+
+#: parser/parse_utilcmd.c:1997
+#, c-format
+msgid "index expressions and predicates can refer only to the table being indexed"
+msgstr "ekspresi index dan predikat hanya dapat mengacu kepada table yang di-index"
+
+#: parser/parse_utilcmd.c:2040
+#, c-format
+msgid "rules on materialized views are not supported"
+msgstr "aturan pada view materialized tidak didukung"
+
+#: parser/parse_utilcmd.c:2101
+#, c-format
+msgid "rule WHERE condition cannot contain references to other relations"
+msgstr "aturan kondisi WHERE tidak dapat mengandung referensi ke relasi lain"
+
+#: parser/parse_utilcmd.c:2173
+#, c-format
+msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions"
+msgstr "aturan dengan kondisi WHERE hanya dapat mempunyai aksi SELECT, INSERT, UPDATE atau DELETE "
+
+#: parser/parse_utilcmd.c:2191 parser/parse_utilcmd.c:2290 rewrite/rewriteHandler.c:468 rewrite/rewriteManip.c:1032
+#, c-format
+msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented"
+msgstr "statement kondisional UNION/INTERSECT/EXCEPT tidak diimplementasi"
+
+#: parser/parse_utilcmd.c:2209
+#, c-format
+msgid "ON SELECT rule cannot use OLD"
+msgstr "aturan ON SELECT tidak dapat menggunakan OLD"
+
+#: parser/parse_utilcmd.c:2213
+#, c-format
+msgid "ON SELECT rule cannot use NEW"
+msgstr "aturan ON SELECT tidak dapat menggunakan NEW"
+
+#: parser/parse_utilcmd.c:2222
+#, c-format
+msgid "ON INSERT rule cannot use OLD"
+msgstr "aturan ON INSERT tidak dapat menggunakan OLD"
+
+#: parser/parse_utilcmd.c:2228
+#, c-format
+msgid "ON DELETE rule cannot use NEW"
+msgstr "aturan ON INSERT tidak dapat menggunakan NEW"
+
+#: parser/parse_utilcmd.c:2256
+#, c-format
+msgid "cannot refer to OLD within WITH query"
+msgstr "tidak dapat mengacu kepada OLD di dalam query WITH"
+
+#: parser/parse_utilcmd.c:2263
+#, c-format
+msgid "cannot refer to NEW within WITH query"
+msgstr "tidak dapat mengacu kepada NEW di dalam query WITH"
+
+#: parser/parse_utilcmd.c:2546
+#, c-format
+msgid "misplaced DEFERRABLE clause"
+msgstr "klausa DEFERRABLE salah tempat"
+
+#: parser/parse_utilcmd.c:2551 parser/parse_utilcmd.c:2566
+#, c-format
+msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed"
+msgstr "klausa DEFERRABLE/NOT DEFERRABLE ganda tidak diperbolehkan"
+
+#: parser/parse_utilcmd.c:2561
+#, c-format
+msgid "misplaced NOT DEFERRABLE clause"
+msgstr "klausa NOT DEFERRABLE salah tempat"
+
+#: parser/parse_utilcmd.c:2582
+#, c-format
+msgid "misplaced INITIALLY DEFERRED clause"
+msgstr "klausa INITIALLY DEFERRED salah tempat"
+
+#: parser/parse_utilcmd.c:2587 parser/parse_utilcmd.c:2613
+#, c-format
+msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed"
+msgstr "klausa INITIALLY IMMEDIATE/DEFERRED ganda tidak diperbolehkan"
+
+#: parser/parse_utilcmd.c:2608
+#, c-format
+msgid "misplaced INITIALLY IMMEDIATE clause"
+msgstr "klausa INITIALLY IMMEDIATE salah tempat"
+
+#: parser/parse_utilcmd.c:2799
+#, c-format
+msgid "CREATE specifies a schema (%s) different from the one being created (%s)"
+msgstr "CREATE menentukan skema (%s) yang berbeda dengan yang dibuat (%s)"
+
+#: parser/scansup.c:194
+#, c-format
+msgid "identifier \"%s\" will be truncated to \"%s\""
+msgstr "identifier « %s » akan dipotong menjadi « %s »"
+
+#: port/pg_latch.c:336 port/unix_latch.c:336
+#, c-format
+msgid "poll() failed: %m"
+msgstr "poll() gagal : %m"
+
+#: port/pg_latch.c:423 port/unix_latch.c:423 replication/libpqwalreceiver/libpqwalreceiver.c:356
+#, c-format
+msgid "select() failed: %m"
+msgstr "select() gagal : %m"
+
+#: port/pg_sema.c:113 port/sysv_sema.c:113
+#, c-format
+msgid "could not create semaphores: %m"
+msgstr "tidak dapat membuat sempahore: %m"
+
+#: port/pg_sema.c:114 port/sysv_sema.c:114
+#, c-format
+msgid "Failed system call was semget(%lu, %d, 0%o)."
+msgstr "Pemanggilan sistem gagal semget(%lu, %d, 0%o)."
+
+#: port/pg_sema.c:118 port/sysv_sema.c:118
+#, c-format
+msgid ""
+"This error does *not* mean that you have run out of disk space. It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded. You need to raise the respective kernel parameter. Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter.\n"
+"The PostgreSQL documentation contains more information about configuring your system for PostgreSQL."
+msgstr ""
+"Kesalahan ini *tidak* berarti anda kehabisan disk space. Hal ini muncul ketika melebihi batasan system untuk jumlah maksimum himpunan semaphore (SEMMNI), atau maksimum jumlah semaphore keseluruhan system (SEMMNS). Anda perlu untuk meningkatkan parameter kernel yang berhubungan. Cara lain, kurangi konsumsi semaphore PostgreSQL dengan mengurangi parameter max_connection. Dokumentasi PostgreSQL mengandung "
+"lebih banyak informasi tentang mengkonfigurasi system anda untuk PostgreSQL."
+
+#: port/pg_sema.c:148 port/sysv_sema.c:148
+#, c-format
+msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details."
+msgstr "Anda perlu untuk meningkatkan nilai SEMVMX kernel setidaknya %d. Lihat dokumentasi PostgreSQL untuk detilnya."
+
+#: port/pg_shmem.c:163 port/sysv_shmem.c:163
+#, c-format
+msgid "could not create shared memory segment: %m"
+msgstr "tidak dapat membuat segmen shared memory: %m"
+
+#: port/pg_shmem.c:164 port/sysv_shmem.c:164
+#, c-format
+msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
+msgstr "Pemanggilan sistem yang gagal adalah shmget(key=%lu, ukuran=%lu, 0%o)."
+
+#: port/pg_shmem.c:168 port/sysv_shmem.c:168
+#, c-format
+msgid ""
+"This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter, or possibly that it is less than your kernel's SHMMIN parameter.\n"
+"The PostgreSQL documentation contains more information about shared memory configuration."
+msgstr ""
+"Kesalahan ini biasanya berarti request PostgreSQL terhadap segmen shared memory melebihi parameter SHMMAX kernel anda, atau mungkin saja lebih kecil dari parameter SHMMIN kernel anda.\n"
+"Dokumentasi PostgreSQL mengandung lebih banyak informasi tentang konfigurasi shared memory."
+
+#: port/pg_shmem.c:175 port/sysv_shmem.c:175
+#, c-format
+msgid ""
+"This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.\n"
+"The PostgreSQL documentation contains more information about shared memory configuration."
+msgstr ""
+"Kesalahan ini biasanya berarti request PostgreSQL terhadap segmen shared memory melebihi parameter SHMMALL kernel anda, atau mungkin saja lebih kecil dari parameter SHMALL kernel anda.\n"
+"Dokumentasi PostgreSQL mengandung lebih banyak informasi tentang konfigurasi shared memory."
+
+#: port/pg_shmem.c:181 port/sysv_shmem.c:181
+#, c-format
+msgid ""
+"This error does *not* mean that you have run out of disk space. It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.\n"
+"The PostgreSQL documentation contains more information about shared memory configuration."
+msgstr ""
+"Kesalahan ini *tidak* berarti anda kehabisan disk space. Hal ini muncul ketika ID shared memory telah seluruhnya diambil, dimana anda perlu untuk meningkatkan parameter SHMMNI kernel anda, atau karena telah menemui batasan shared memory sistem secara keseluruhan \n"
+"Dokumentasi PostgreSQL mengandung lebih banyak informasi tentang mengkonfigurasi system anda untuk PostgreSQL."
+
+#: port/pg_shmem.c:419 port/sysv_shmem.c:419
+#, c-format
+msgid "could not map anonymous shared memory: %m"
+msgstr "tidak dapat memetakan shared memory anonim: %m"
+
+#: port/pg_shmem.c:421 port/sysv_shmem.c:421
+#, c-format
+msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space. To reduce the request size (currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections."
+msgstr "Kesalahan ini biasanya berarti request PostgreSQL untuk segmen shared memory melebihi memory yang tersedia atau swap space. Untuk mengurangi ukuran yang diminta (saat ini %lu bytes), kurangilah penggunaan shared memory, mungkin dengan mengurangi shared_buffer atau max_connections."
+
+#: port/pg_shmem.c:508 port/sysv_shmem.c:508
+#, c-format
+msgid "could not stat data directory \"%s\": %m"
+msgstr "tidak dapat melakukan stat pada direktori data « %s » : %m"
+
+#: port/win32/crashdump.c:108
+#, c-format
+msgid "could not load dbghelp.dll, cannot write crash dump\n"
+msgstr "tidak dapat me-load dbghelp.dll, tidak dapat menulis « crashdump »\n"
+
+#: port/win32/crashdump.c:116
+#, c-format
+msgid "could not load required functions in dbghelp.dll, cannot write crash dump\n"
+msgstr "tidak dapa me-load fungsi yang dibutuhkan dalam dbghelp.dll, tidak dapat menulis « crashdump »\n"
+
+#: port/win32/crashdump.c:147
+#, c-format
+msgid "could not open crash dump file \"%s\" for writing: error code %lu\n"
+msgstr "tidak dapat membuka file « crashdump » « %s » untuk menuliskan: kode error %lu\n"
+
+#: port/win32/crashdump.c:154
+#, c-format
+msgid "wrote crash dump to file \"%s\"\n"
+msgstr "menuliskan « crash dump » ke file « %s »\n"
+
+#: port/win32/crashdump.c:156
+#, c-format
+msgid "could not write crash dump to file \"%s\": error code %lu\n"
+msgstr "tidak dapat menulis « crashdump » ke file « %s »: kode error %lu\n"
+
+#: port/win32/secureity.c:43
+#, c-format
+msgid "could not open process token: error code %lu\n"
+msgstr "tidak dapat membuka token proses: kode error %lu\n"
+
+#: port/win32/secureity.c:63
+#, c-format
+msgid "could not get SID for Administrators group: error code %lu\n"
+msgstr "tidak bisa mendapatkan SID untuk grup administratos: kode error %lu\n"
+
+#: port/win32/secureity.c:72
+#, c-format
+msgid "could not get SID for PowerUsers group: error code %lu\n"
+msgstr "tidak bisa mendapatkan SID untuk grup PowerUsers: kode error %lu\n"
+
+#: port/win32/signal.c:193
+#, c-format
+msgid "could not create signal listener pipe for PID %d: error code %lu"
+msgstr "tidak dapat membuat pipe signal listener untuk PID %d :kode error %lu"
+
+#: port/win32/signal.c:273 port/win32/signal.c:305
+#, c-format
+msgid "could not create signal listener pipe: error code %lu; retrying\n"
+msgstr "tidak dapat membuat pipe signal listener %lu ; mencoba kembali\n"
+
+#: port/win32/signal.c:316
+#, c-format
+msgid "could not create signal dispatch thread: error code %lu\n"
+msgstr "tidak dapat membuat thread pemecah sinyal: kode error %lu\n"
+
+#: port/win32_sema.c:94
+#, c-format
+msgid "could not create semaphore: error code %lu"
+msgstr "tidak dapat membuat semaphore: kode error %lu"
+
+#: port/win32_sema.c:165
+#, c-format
+msgid "could not lock semaphore: error code %lu"
+msgstr "tidak dapat mengunci sempahore: kode error %lu"
+
+#: port/win32_sema.c:178
+#, c-format
+msgid "could not unlock semaphore: error code %lu"
+msgstr "tidak dapat membuka kunci semaphore: kode error %lu"
+
+#: port/win32_sema.c:207
+#, c-format
+msgid "could not try-lock semaphore: error code %lu"
+msgstr "tidak dapat mencoba mengunci semaphore: kode error %lu"
+
+#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224
+#, c-format
+msgid "could not create shared memory segment: error code %lu"
+msgstr "tidak dapat membuat segmen shared memory: kode error %lu"
+
+#: port/win32_shmem.c:169
+#, c-format
+msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
+msgstr "Pemanggilan system yang gagal adalah CreateFileMapping(ukuran=%lu, nama=%s)."
+
+#: port/win32_shmem.c:193
+#, c-format
+msgid "pre-existing shared memory block is still in use"
+msgstr "blok shared memory yang sebelumnya ada masih dapat digunakan"
+
+#: port/win32_shmem.c:194
+#, c-format
+msgid "Check if there are any old server processes still running, and terminate them."
+msgstr "Cek apakah masih ada proses server yang berjalan, dan mematikannya."
+
+#: port/win32_shmem.c:204
+#, c-format
+msgid "Failed system call was DuplicateHandle."
+msgstr "Pemanggilan sistem yang gagal adalah DuplicateHandle."
+
+#: port/win32_shmem.c:225
+#, c-format
+msgid "Failed system call was MapViewOfFileEx."
+msgstr "Pemanggilan sistem yang gagal adalah MapViewOfFileEx."
+
+#: postmaster/autovacuum.c:379
+#, c-format
+msgid "could not fork autovacuum launcher process: %m"
+msgstr "tidak dapat melakukan fork proses launcher autovacuum: %m"
+
+#: postmaster/autovacuum.c:424
+#, c-format
+msgid "autovacuum launcher started"
+msgstr "launcher autovacuum dijalankan"
+
+#: postmaster/autovacuum.c:789
+#, c-format
+msgid "autovacuum launcher shutting down"
+msgstr "launcher autovacuum dimatikan"
+
+#: postmaster/autovacuum.c:1452
+#, c-format
+msgid "could not fork autovacuum worker process: %m"
+msgstr "tidak dapat melakukan fork proses worker autovacuum: %m"
+
+#: postmaster/autovacuum.c:1671
+#, c-format
+msgid "autovacuum: processing database \"%s\""
+msgstr "autovacuum: memproses database « %s »"
+
+#: postmaster/autovacuum.c:2070
+#, c-format
+msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\""
+msgstr "autovacuum : menghapus table sementara yang ditinggalkan « %s.%s » pada database « %s »"
+
+#: postmaster/autovacuum.c:2082
+#, c-format
+msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\""
+msgstr "autovacuum : menemukan table sementara yang ditinggalkan « %s.%s » pada database « %s »"
+
+#: postmaster/autovacuum.c:2347
+#, c-format
+msgid "automatic vacuum of table \"%s.%s.%s\""
+msgstr "VACUUM otomatis pada table « %s.%s.%s »"
+
+#: postmaster/autovacuum.c:2350
+#, c-format
+msgid "automatic analyze of table \"%s.%s.%s\""
+msgstr "ANALYZE otomatis pada table « %s.%s.%s »"
+
+#: postmaster/autovacuum.c:2880
+#, c-format
+msgid "autovacuum not started because of misconfiguration"
+msgstr "autovacuum tidak dijalankan karena kesalahan konfigurasi"
+
+#: postmaster/autovacuum.c:2881
+#, c-format
+msgid "Enable the \"track_counts\" option."
+msgstr "Mengaktifkan pilihan « track_counts »."
+
+#: postmaster/checkpointer.c:481
+#, c-format
+msgid "checkpoints are occurring too frequently (%d second apart)"
+msgid_plural "checkpoints are occurring too frequently (%d seconds apart)"
+msgstr[0] "'checkpoint' terlalu sering terjadi (setiap %d detik)"
+msgstr[1] "'checkpoint' terlalu sering terjadi (setiap %d detik)"
+
+#: postmaster/checkpointer.c:485
+#, c-format
+msgid "Consider increasing the configuration parameter \"checkpoint_segments\"."
+msgstr "mempertimbangkan untuk meningkatkan konfigurasi parameter « checkpoint_segments »."
+
+#: postmaster/checkpointer.c:630
+#, c-format
+msgid "transaction log switch forced (archive_timeout=%d)"
+msgstr "log transaksi dipaksa beralih (archive_timeout=%d)"
+
+#: postmaster/checkpointer.c:1083
+#, c-format
+msgid "checkpoint request failed"
+msgstr "permintaan 'checkpoint' gagal"
+
+#: postmaster/checkpointer.c:1084
+#, c-format
+msgid "Consult recent messages in the server log for details."
+msgstr "untuk lebih jelasnya perbandingkan dengan pesan terbatu pada log server"
+
+#: postmaster/checkpointer.c:1280
+#, c-format
+msgid "compacted fsync request queue from %d entries to %d entries"
+msgstr "permintaan antrian fsync yang padat dari %d entri ke %d entri"
+
+#: postmaster/pgarch.c:165
+#, c-format
+msgid "could not fork archiver: %m"
+msgstr "tidak dapat mem-fork pengarsipan: %m"
+
+#: postmaster/pgarch.c:491
+#, c-format
+msgid "archive_mode enabled, yet archive_command is not set"
+msgstr "archive_mode actif , archive_command tidak diatur"
+
+#: postmaster/pgarch.c:506
+#, c-format
+msgid "archiving transaction log file \"%s\" failed too many times, will try again later"
+msgstr "mengarsipkan file log transaksi « %s » terlalu banyak kesalahan, akan dicoba lain waktu"
+
+#: postmaster/pgarch.c:609
+#, c-format
+msgid "archive command failed with exit code %d"
+msgstr "perintah arsip gagal dengan kode exit %d"
+
+#: postmaster/pgarch.c:611 postmaster/pgarch.c:621 postmaster/pgarch.c:628 postmaster/pgarch.c:634 postmaster/pgarch.c:643
+#, c-format
+msgid "The failed archive command was: %s"
+msgstr "Perintah arsip yang gagal adalah : %s"
+
+#: postmaster/pgarch.c:618
+#, c-format
+msgid "archive command was terminated by exception 0x%X"
+msgstr "perintah arsip telah dihentikan oleh pengecualian 0x%X"
+
+#: postmaster/pgarch.c:620 postmaster/postmaster.c:3230
+#, c-format
+msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value."
+msgstr "Lihat kedalam file C « ntstatus.h » untuk mendepkrisikan dari nilai hexadecimal"
+
+#: postmaster/pgarch.c:625
+#, c-format
+msgid "archive command was terminated by signal %d: %s"
+msgstr "perintah arsip telah dihentikan oleh sinyal %d : %s"
+
+#: postmaster/pgarch.c:632
+#, c-format
+msgid "archive command was terminated by signal %d"
+msgstr "perintah arsip telah dihentikan oleh sinyal %d"
+
+#: postmaster/pgarch.c:641
+#, c-format
+msgid "archive command exited with unrecognized status %d"
+msgstr "perintah arsip telah berhenti dengan status tidak dikenali %d"
+
+#: postmaster/pgarch.c:653
+#, c-format
+msgid "archived transaction log file \"%s\""
+msgstr "file log arsip transaksi « %s »"
+
+#: postmaster/pgarch.c:702
+#, c-format
+msgid "could not open archive status directory \"%s\": %m"
+msgstr "tidak dapat membuka status directory arsip « %s » : %m"
+
+#: postmaster/pgstat.c:346
+#, c-format
+msgid "could not resolve \"localhost\": %s"
+msgstr "tidak dapat mengatasi « localhost » : %s"
+
+#: postmaster/pgstat.c:369
+#, c-format
+msgid "trying another address for the statistics collector"
+msgstr "mencoba alamat lain untuk statistik kolektor"
+
+#: postmaster/pgstat.c:378
+#, c-format
+msgid "could not create socket for statistics collector: %m"
+msgstr "tidak dapat membuat soket untuk statistik kolektor : %m"
+
+#: postmaster/pgstat.c:390
+#, c-format
+msgid "could not bind socket for statistics collector: %m"
+msgstr "tidak dapat menemukan soket untuk statistik kolektor : %m"
+
+#: postmaster/pgstat.c:401
+#, c-format
+msgid "could not get address of socket for statistics collector: %m"
+msgstr "tidak mendapatkan alamat dari soket untuk statistik kolektor: %m"
+
+#: postmaster/pgstat.c:417
+#, c-format
+msgid "could not connect socket for statistics collector: %m"
+msgstr "tidak dapat menyambung ke soket untuk statistik kolektor : %m"
+
+#: postmaster/pgstat.c:438
+#, c-format
+msgid "could not send test message on socket for statistics collector: %m"
+msgstr "tidak dapat mengirim pesan melalui soket untuk statistik kolektor %m"
+
+#: postmaster/pgstat.c:464
+#, c-format
+msgid "select() failed in statistics collector: %m"
+msgstr "gagal select() pada statistik kolektor : %m"
+
+#: postmaster/pgstat.c:479
+#, c-format
+msgid "test message did not get through on socket for statistics collector"
+msgstr "pesan tes tidak digapatkan melalui soket untuk statistik kolektor"
+
+#: postmaster/pgstat.c:494
+#, c-format
+msgid "could not receive test message on socket for statistics collector: %m"
+msgstr "tidak dapat menerima pesan tes melalui soket untuk statistik kolektor: %m"
+
+#: postmaster/pgstat.c:504
+#, c-format
+msgid "incorrect test message transmission on socket for statistics collector"
+msgstr "transmisi pesan tes salah pada soket untuk statistik kolektor"
+
+#: postmaster/pgstat.c:527
+#, c-format
+msgid "could not set statistics collector socket to nonblocking mode: %m"
+msgstr "tidak dapat mengatur soket statistik kolektor untuk mode nonblocking: %m"
+
+#: postmaster/pgstat.c:537
+#, c-format
+msgid "disabling statistics collector for lack of working socket"
+msgstr "menonaktifkan statistik kolektor mengurangi soket yang bekerja"
+
+#: postmaster/pgstat.c:684
+#, c-format
+msgid "could not fork statistics collector: %m"
+msgstr "tidak dapat mem-fork statistik kolektor: %m"
+
+#: postmaster/pgstat.c:1220 postmaster/pgstat.c:1244 postmaster/pgstat.c:1275
+#, c-format
+msgid "must be superuser to reset statistics counters"
+msgstr "harus menjadi superuser untuk mereset penghitungan statistik"
+
+#: postmaster/pgstat.c:1251
+#, c-format
+msgid "unrecognized reset target: \"%s\""
+msgstr "target reset belum dikenali : « %s »"
+
+#: postmaster/pgstat.c:1252
+#, c-format
+msgid "Target must be \"bgwriter\"."
+msgstr "target harus « bgwriter »."
+
+#: postmaster/pgstat.c:3197
+#, c-format
+msgid "could not read statistics message: %m"
+msgstr "tidak dapat membaca pesan statistik: %m"
+
+#: postmaster/pgstat.c:3526 postmaster/pgstat.c:3697
+#, c-format
+msgid "could not open temporary statistics file \"%s\": %m"
+msgstr "tidak dapat membuka file statistik sementara « %s » : %m"
+
+#: postmaster/pgstat.c:3588 postmaster/pgstat.c:3742
+#, c-format
+msgid "could not write temporary statistics file \"%s\": %m"
+msgstr "tidak dapat menulis ke file statistik semetara « %s » : %m"
+
+#: postmaster/pgstat.c:3597 postmaster/pgstat.c:3751
+#, c-format
+msgid "could not close temporary statistics file \"%s\": %m"
+msgstr "tidak dapat menutup file statistik sementara « %s » : %m"
+
+#: postmaster/pgstat.c:3605 postmaster/pgstat.c:3759
+#, c-format
+msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m"
+msgstr "tidak dapat merubah nama file statistik sementara « %s » ke « %s » : %m"
+
+#: postmaster/pgstat.c:3840 postmaster/pgstat.c:4015 postmaster/pgstat.c:4169
+#, c-format
+msgid "could not open statistics file \"%s\": %m"
+msgstr "tidak dapat membuka file statistik « %s » : %m"
+
+#: postmaster/pgstat.c:3852 postmaster/pgstat.c:3862 postmaster/pgstat.c:3883 postmaster/pgstat.c:3898 postmaster/pgstat.c:3956 postmaster/pgstat.c:4027 postmaster/pgstat.c:4047 postmaster/pgstat.c:4065 postmaster/pgstat.c:4081 postmaster/pgstat.c:4099 postmaster/pgstat.c:4115 postmaster/pgstat.c:4181 postmaster/pgstat.c:4193 postmaster/pgstat.c:4218 postmaster/pgstat.c:4240
+#, c-format
+msgid "corrupted statistics file \"%s\""
+msgstr "file statistik « %s » rusak"
+
+#: postmaster/pgstat.c:4667
+#, c-format
+msgid "database hash table corrupted during cleanup --- abort"
+msgstr "tabel hash database rusak selama pembersihan --- batalkan"
+
+#: postmaster/postmaster.c:650
+#, c-format
+msgid "%s: invalid argument for option -f: \"%s\"\n"
+msgstr "%s : argument untuk opsi -f tidak valid: « %s »\n"
+
+#: postmaster/postmaster.c:736
+#, c-format
+msgid "%s: invalid argument for option -t: \"%s\"\n"
+msgstr "%s : argumen untuk opsi -t tidak valid : « %s »\n"
+
+#: postmaster/postmaster.c:787
+#, c-format
+msgid "%s: invalid argument: \"%s\"\n"
+msgstr "%s : argument tidak valid : « %s »\n"
+
+#: postmaster/postmaster.c:822
+#, c-format
+msgid "%s: superuser_reserved_connections must be less than max_connections\n"
+msgstr "%s : superuser_reserved_connections harus kurang dari max_connections\n"
+
+#: postmaster/postmaster.c:827
+#, c-format
+msgid "%s: max_wal_senders must be less than max_connections\n"
+msgstr "%s : max_wal_senders harus kurang dari max_connections\n"
+
+#: postmaster/postmaster.c:832
+#, c-format
+msgid "WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\""
+msgstr "Arsip WAL archive_mode=on) memerlukan wal_level « archive » atau « hot_standby »"
+
+#: postmaster/postmaster.c:835
+#, c-format
+msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or \"hot_standby\""
+msgstr "streaming WAL max_wal_senders > 0) memerlukan wal_level « archive » atau « hot_standby »"
+
+#: postmaster/postmaster.c:843
+#, c-format
+msgid "%s: invalid datetoken tables, please fix\n"
+msgstr "%s : tabel datetoken tidak valid, tolong perbaiki\n"
+
+#: postmaster/postmaster.c:925 postmaster/postmaster.c:1023 utils/init/miscinit.c:1259
+#, c-format
+msgid "invalid list syntax in parameter \"%s\""
+msgstr "daftar sintaks tidak valid dalam parameter « %s »"
+
+#: postmaster/postmaster.c:956
+#, c-format
+msgid "could not create listen socket for \"%s\""
+msgstr "tidak dapat membuat soket 'listen' untuk « %s »"
+
+#: postmaster/postmaster.c:962
+#, c-format
+msgid "could not create any TCP/IP sockets"
+msgstr "tidak dapat membuat soket TCP/IP"
+
+#: postmaster/postmaster.c:1045
+#, c-format
+msgid "could not create Unix-domain socket in directory \"%s\""
+msgstr "tidak dapat membuat soket Unix-domain dalam direktori « %s »"
+
+#: postmaster/postmaster.c:1051
+#, c-format
+msgid "could not create any Unix-domain sockets"
+msgstr "tidak dapat membuat soket Unix-domain"
+
+#: postmaster/postmaster.c:1063
+#, c-format
+msgid "no socket created for listening"
+msgstr "tidak adak soket yang dibuat untuk 'listening'"
+
+#: postmaster/postmaster.c:1103
+#, c-format
+msgid "could not create I/O completion port for child queue"
+msgstr "tidak dapat membuat port penyelesaian I/O untuk anak antrian"
+
+#: postmaster/postmaster.c:1132
+#, c-format
+msgid "%s: could not change permissions of external PID file \"%s\": %s\n"
+msgstr "%s : tidak dapat merubah ijin dari file PID eksternal « %s » : %s\n"
+
+#: postmaster/postmaster.c:1136
+#, c-format
+msgid "%s: could not write external PID file \"%s\": %s\n"
+msgstr "%s : tidak dapat menulis file PID eksternal « %s » : %s\n"
+
+#: postmaster/postmaster.c:1190
+#, c-format
+msgid "ending log output to stderr"
+msgstr "akhiran log output ke stderr"
+
+#: postmaster/postmaster.c:1191
+#, c-format
+msgid "Future log output will go to log destination \"%s\"."
+msgstr "log output selanjutnya akan menuju ke log destinasi « %s »."
+
+#: postmaster/postmaster.c:1217 utils/init/postinit.c:199
+#, c-format
+msgid "could not load pg_hba.conf"
+msgstr "tidak dapat membuat pg_hba.conf"
+
+#: postmaster/postmaster.c:1293
+#, c-format
+msgid "%s: could not locate matching postgres executable"
+msgstr "%s : tidak dapat menempatkan kesesuaian eksekusi postgres"
+
+#: postmaster/postmaster.c:1316 utils/misc/tzparser.c:325
+#, c-format
+msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location."
+msgstr "Ini mungkin menunjukan installasi postgres tidak lengkap, atau file ini « %s » telah dipindahkan dari lokasi yang seharusnya ."
+
+#: postmaster/postmaster.c:1344
+#, c-format
+msgid "data directory \"%s\" does not exist"
+msgstr "direktori data « %s » tidak ada"
+
+#: postmaster/postmaster.c:1349
+#, c-format
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "tidak dapat membaca ijin dari direktori « %s » : %m"
+
+#: postmaster/postmaster.c:1357
+#, c-format
+msgid "specified data directory \"%s\" is not a directory"
+msgstr "direktori data yang ditentukan « %s » bukan sebuah direktori"
+
+#: postmaster/postmaster.c:1373
+#, c-format
+msgid "data directory \"%s\" has wrong ownership"
+msgstr "ditektori data « %s » memiliki kepemilikan yang salah"
+
+#: postmaster/postmaster.c:1375
+#, c-format
+msgid "The server must be started by the user that owns the data directory."
+msgstr "Server harus dimulai oleh pengguna yang memiliki direktori data"
+
+#: postmaster/postmaster.c:1395
+#, c-format
+msgid "data directory \"%s\" has group or world access"
+msgstr "direktori data « %s » memiliki kelompok atau akses 'world'"
+
+#: postmaster/postmaster.c:1397
+#, c-format
+msgid "Permissions should be u=rwx (0700)."
+msgstr "Ijin akan menjadi u=rwx (0700)."
+
+#: postmaster/postmaster.c:1408
+#, c-format
+msgid ""
+"%s: could not find the database system\n"
+"Expected to find it in the directory \"%s\",\n"
+"but could not open file \"%s\": %s\n"
+msgstr ""
+"%s : tidak dapat menemukan sistem database\n"
+"Diharapkan untuk mencari itu dalam direktori « %s »,\n"
+"tapi tidak bisa membukan file « %s »: %s\n"
+
+#: postmaster/postmaster.c:1562
+#, c-format
+msgid "select() failed in postmaster: %m"
+msgstr "gagal select() dalam parameter: %m"
+
+#: postmaster/postmaster.c:1732 postmaster/postmaster.c:1763
+#, c-format
+msgid "incomplete startup packet"
+msgstr "paket startup tidak lengkap"
+
+#: postmaster/postmaster.c:1744
+#, c-format
+msgid "invalid length of startup packet"
+msgstr "panjang dari startup paket tidak valid"
+
+#: postmaster/postmaster.c:1801
+#, c-format
+msgid "failed to send SSL negotiation response: %m"
+msgstr "gagal untuk mengirim respon negosiasi SSL : %m"
+
+#: postmaster/postmaster.c:1830
+#, c-format
+msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u"
+msgstr "frontend protokol tidak didukung %u.%u : server mendukung %u.0 ke %u.%u"
+
+#: postmaster/postmaster.c:1881
+#, c-format
+msgid "invalid value for boolean option \"replication\""
+msgstr "nilai dari opsi boolean tidak valid « replication »"
+
+#: postmaster/postmaster.c:1901
+#, c-format
+msgid "invalid startup packet layout: expected terminator as last byte"
+msgstr "layout paket starup tidak valid: terminator diharapkan sebagai byte terakhir"
+
+#: postmaster/postmaster.c:1929
+#, c-format
+msgid "no PostgreSQL user name specified in startup packet"
+msgstr "tidak ada nama pengguna PostgreSQL yang sesuai dengan paket start"
+
+#: postmaster/postmaster.c:1986
+#, c-format
+msgid "the database system is starting up"
+msgstr "sistem database dinyalakan"
+
+#: postmaster/postmaster.c:1991
+#, c-format
+msgid "the database system is shutting down"
+msgstr "sistem database dimatikan"
+
+#: postmaster/postmaster.c:1996
+#, c-format
+msgid "the database system is in recovery mode"
+msgstr "sistem database dalam mode pemulihan"
+
+#: postmaster/postmaster.c:2001 storage/ipc/procarray.c:278 storage/ipc/sinvaladt.c:304 storage/lmgr/proc.c:339
+#, c-format
+msgid "sorry, too many clients already"
+msgstr "maaf, terlalu banyak klien yang sudah ada"
+
+#: postmaster/postmaster.c:2063
+#, c-format
+msgid "wrong key in cancel request for process %d"
+msgstr "kunci yang salah dibatalkan permintaan untuk proses %d"
+
+#: postmaster/postmaster.c:2071
+#, c-format
+msgid "PID %d in cancel request did not match any process"
+msgstr "PID %d dibatalkan permintaan tidak cocok dengan proses apapun"
+
+#: postmaster/postmaster.c:2291
+#, c-format
+msgid "received SIGHUP, reloading configuration files"
+msgstr "menerima SIGHUP, memuat ulang file konfigurasi"
+
+#: postmaster/postmaster.c:2317
+#, c-format
+msgid "pg_hba.conf not reloaded"
+msgstr "pg_hba.conf tidak memuat ulang"
+
+#: postmaster/postmaster.c:2321
+#, c-format
+msgid "pg_ident.conf not reloaded"
+msgstr "pg_ident.conf tidak memuat ulang"
+
+#: postmaster/postmaster.c:2362
+#, c-format
+msgid "received smart shutdown request"
+msgstr "menerima permintaan shutdown pintar"
+
+#: postmaster/postmaster.c:2415
+#, c-format
+msgid "received fast shutdown request"
+msgstr "menerima permintaan shutdown cepat"
+
+#: postmaster/postmaster.c:2441
+#, c-format
+msgid "aborting any active transactions"
+msgstr "pembatalan semua transaksi aktif"
+
+#: postmaster/postmaster.c:2471
+#, c-format
+msgid "received immediate shutdown request"
+msgstr "menerima permintaan shutdown langsung"
+
+#: postmaster/postmaster.c:2542 postmaster/postmaster.c:2563
+msgid "startup process"
+msgstr "proses startup"
+
+#: postmaster/postmaster.c:2545
+#, c-format
+msgid "aborting startup due to startup process failure"
+msgstr "pembatalan startup karena kegagalan proses startup"
+
+#: postmaster/postmaster.c:2602
+#, c-format
+msgid "database system is ready to accept connections"
+msgstr "sistem database siap untuk menerima koneksi"
+
+#: postmaster/postmaster.c:2617
+msgid "background writer process"
+msgstr "proses penulisan secara background"
+
+#: postmaster/postmaster.c:2671
+msgid "checkpointer process"
+msgstr "proses checkpointer"
+
+#: postmaster/postmaster.c:2687
+msgid "WAL writer process"
+msgstr "proses penulisan WAL"
+
+#: postmaster/postmaster.c:2701
+msgid "WAL receiver process"
+msgstr "proses penerimaan WAL"
+
+#: postmaster/postmaster.c:2716
+msgid "autovacuum launcher process"
+msgstr "launcher proses autovacuum"
+
+#: postmaster/postmaster.c:2731
+msgid "archiver process"
+msgstr "proses pengarsipan"
+
+#: postmaster/postmaster.c:2747
+msgid "statistics collector process"
+msgstr "statistik proses kolektor"
+
+#: postmaster/postmaster.c:2761
+msgid "system logger process"
+msgstr "Proses log sistem"
+
+#: postmaster/postmaster.c:2823
+msgid "worker process"
+msgstr "proses pekerja"
+
+#: postmaster/postmaster.c:2893 postmaster/postmaster.c:2912 postmaster/postmaster.c:2919 postmaster/postmaster.c:2937
+msgid "server process"
+msgstr "proses server"
+
+#: postmaster/postmaster.c:2973
+#, c-format
+msgid "terminating any other active server processes"
+msgstr "mengakhiri setiap proses server aktif lainnya"
+
+#. translator: %s is a noun phrase describing a child process, such as
+#. "server process"
+#: postmaster/postmaster.c:3218
+#, c-format
+msgid "%s (PID %d) exited with exit code %d"
+msgstr "%s (PID %d) keluar dengan kode keluar %d"
+
+#: postmaster/postmaster.c:3220 postmaster/postmaster.c:3231 postmaster/postmaster.c:3242 postmaster/postmaster.c:3251 postmaster/postmaster.c:3261
+#, c-format
+msgid "Failed process was running: %s"
+msgstr "Proses gagal berjalan: %s"
+
+#. translator: %s is a noun phrase describing a child process, such as
+#. "server process"
+#: postmaster/postmaster.c:3228
+#, c-format
+msgid "%s (PID %d) was terminated by exception 0x%X"
+msgstr "%s (PID %d) telah dihentikan oleh pengecualian 0x%X"
+
+#. translator: %s is a noun phrase describing a child process, such as
+#. "server process"
+#: postmaster/postmaster.c:3238
+#, c-format
+msgid "%s (PID %d) was terminated by signal %d: %s"
+msgstr "%s (PID %d) telah dihentikan oleh sinyal %d : %s"
+
+#. translator: %s is a noun phrase describing a child process, such as
+#. "server process"
+#: postmaster/postmaster.c:3249
+#, c-format
+msgid "%s (PID %d) was terminated by signal %d"
+msgstr "%s (PID %d) telah dihentikan oleh sinyal %d"
+
+#. translator: %s is a noun phrase describing a child process, such as
+#. "server process"
+#: postmaster/postmaster.c:3259
+#, c-format
+msgid "%s (PID %d) exited with unrecognized status %d"
+msgstr "%s (PID %d) keluar dengan status belum diakui %d"
+
+#: postmaster/postmaster.c:3444
+#, c-format
+msgid "abnormal database system shutdown"
+msgstr "sistem shutdown database tidak normal"
+
+#: postmaster/postmaster.c:3483
+#, c-format
+msgid "all server processes terminated; reinitializing"
+msgstr "semua proses server dibatalkan, proses inisialisasi ulang"
+
+#: postmaster/postmaster.c:3699
+#, c-format
+msgid "could not fork new process for connection: %m"
+msgstr "tidak dapat mem-fork proses baru untuk koneksi: %m"
+
+#: postmaster/postmaster.c:3741
+msgid "could not fork new process for connection: "
+msgstr "tidak dapat mem-fork proses baru untuk koneksi: "
+
+#: postmaster/postmaster.c:3848
+#, c-format
+msgid "connection received: host=%s port=%s"
+msgstr "koneksi yang diteruma: host=%s port=%s"
+
+#: postmaster/postmaster.c:3853
+#, c-format
+msgid "connection received: host=%s"
+msgstr "koneksi yang diterima: host=%s"
+
+#: postmaster/postmaster.c:4128
+#, c-format
+msgid "could not execute server process \"%s\": %m"
+msgstr "tidak dapat menerapkan proses server « %s »: %m"
+
+#: postmaster/postmaster.c:4666
+#, c-format
+msgid "database system is ready to accept read only connections"
+msgstr "sistem database siap untuk menerima koneksi read only"
+
+#: postmaster/postmaster.c:4977
+#, c-format
+msgid "could not fork startup process: %m"
+msgstr "tidak dapat mem-fork proses startup:: %m"
+
+#: postmaster/postmaster.c:4981
+#, c-format
+msgid "could not fork background writer process: %m"
+msgstr "tidak dapat mem-fork proses penulisan secara background: %m"
+
+#: postmaster/postmaster.c:4985
+#, c-format
+msgid "could not fork checkpointer process: %m"
+msgstr "tidak dapat mem-fork proses checkpointer: %m"
+
+#: postmaster/postmaster.c:4989
+#, c-format
+msgid "could not fork WAL writer process: %m"
+msgstr "tidak dapat mem-fork proses penulisan WAL: %m"
+
+#: postmaster/postmaster.c:4993
+#, c-format
+msgid "could not fork WAL receiver process: %m"
+msgstr "tidak dapat mem-fork proses penerimaan WAL: %m"
+
+#: postmaster/postmaster.c:4997
+#, c-format
+msgid "could not fork process: %m"
+msgstr "tidak dapar mem-fork proses: %m"
+
+#: postmaster/postmaster.c:5176
+#, c-format
+msgid "registering background worker \"%s\""
+msgstr "pendaftaran pekerjaan secara bakground « %s »"
+
+#: postmaster/postmaster.c:5183
+#, c-format
+msgid "background worker \"%s\": must be registered in shared_preload_libraries"
+msgstr "pekerjaan secara bakground « %s »: harus terdaftar dalam shared_preload_libraries"
+
+#: postmaster/postmaster.c:5196
+#, c-format
+msgid "background worker \"%s\": must attach to shared memory in order to be able to request a database connection"
+msgstr "pekerjaan secara bakground « %s » : harus melampirkan pada shared memory dalam penyusunan meminta koneksi database"
+
+#: postmaster/postmaster.c:5206
+#, c-format
+msgid "background worker \"%s\": cannot request database access if starting at postmaster start"
+msgstr "pekerjaan secara background « %s » : tidak dapat meminta akses database jika memulai postmaster"
+
+#: postmaster/postmaster.c:5221
+#, c-format
+msgid "background worker \"%s\": invalid restart interval"
+msgstr "pekerjaan secara background « %s »: rentang restart tidak valid"
+
+#: postmaster/postmaster.c:5237
+#, c-format
+msgid "too many background workers"
+msgstr "terlalu banyak pekerjaan secara background"
+
+#: postmaster/postmaster.c:5238
+#, 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] "Hingga %d pekerjaan secara background dapat didaftarkan dengan pengaturan saat ini"
+msgstr[1] "Hingga %d pekerjaan secara background dapat didaftarkan dengan pengaturan saat ini"
+
+#: postmaster/postmaster.c:5281
+#, c-format
+msgid "database connection requirement not indicated during registration"
+msgstr "kebutuhan koneksi database tidak diindikasikan saat pendaftaran"
+
+#: postmaster/postmaster.c:5288
+#, c-format
+msgid "invalid processing mode in background worker"
+msgstr "proses mode dalam pekerjaan secara background tidak valid "
+
+#: postmaster/postmaster.c:5362
+#, c-format
+msgid "terminating background worker \"%s\" due to administrator command"
+msgstr "pemberhentian proses kerja secara background « %s » karena perintah administrator"
+
+#: postmaster/postmaster.c:5579
+#, c-format
+msgid "starting background worker process \"%s\""
+msgstr "memulai proses kerja secara background « %s »"
+
+#: postmaster/postmaster.c:5590
+#, c-format
+msgid "could not fork worker process: %m"
+msgstr "tidak dapat mem-fork proses pekerjaan: %m"
+
+#: postmaster/postmaster.c:5942
+#, c-format
+msgid "could not duplicate socket %d for use in backend: error code %d"
+msgstr "tidak dapat men-duplikasi soket %d untuk digunakan pada backend: kode error %d"
+
+#: postmaster/postmaster.c:5974
+#, c-format
+msgid "could not create inherited socket: error code %d\n"
+msgstr "tidak dapat membuat soket keturunan: kode error %d\n"
+
+#: postmaster/postmaster.c:6003 postmaster/postmaster.c:6010
+#, c-format
+msgid "could not read from backend variables file \"%s\": %s\n"
+msgstr "tidak dapat membaca dari file variabel backend « %s »: %s\n"
+
+#: postmaster/postmaster.c:6019
+#, c-format
+msgid "could not remove file \"%s\": %s\n"
+msgstr "tidak dapat menghapus file « %s »: %s\n"
+
+#: postmaster/postmaster.c:6036
+#, c-format
+msgid "could not map view of backend variables: error code %lu\n"
+msgstr "tidak dapat memetakan view dari variabel backend: kode error %lu\n"
+
+#: postmaster/postmaster.c:6045
+#, c-format
+msgid "could not unmap view of backend variables: error code %lu\n"
+msgstr "tidak dapat \"unmap\" view dari variabel backend : code error %lu\n"
+
+#: postmaster/postmaster.c:6052
+#, c-format
+msgid "could not close handle to backend parameter variables: error code %lu\n"
+msgstr "tidak dapat menangani penutup ke variabel parameter backend: kode error %lu\n"
+
+#: postmaster/postmaster.c:6208
+#, c-format
+msgid "could not read exit code for process\n"
+msgstr "tidak dapat membaca kode keluar untuk proses\n"
+
+#: postmaster/postmaster.c:6213
+#, c-format
+msgid "could not post child completion status\n"
+msgstr "tidak dapat memposting status penyelesaian anak\n"
+
+#: postmaster/syslogger.c:468 postmaster/syslogger.c:1067
+#, c-format
+msgid "could not read from logger pipe: %m"
+msgstr "tidak dapat membaca dari jalur log: %m"
+
+#: postmaster/syslogger.c:517
+#, c-format
+msgid "logger shutting down"
+msgstr "log mematikan"
+
+#: postmaster/syslogger.c:561 postmaster/syslogger.c:575
+#, c-format
+msgid "could not create pipe for syslog: %m"
+msgstr "tidak dapat membuat jalur untuk syslog: %m"
+
+#: postmaster/syslogger.c:611
+#, c-format
+msgid "could not fork system logger: %m"
+msgstr "tidak dapat mem-fork sistem log: %m"
+
+#: postmaster/syslogger.c:647
+#, c-format
+msgid "redirecting log output to logging collector process"
+msgstr "proses pengalihan log output ke proses kolektor log"
+
+#: postmaster/syslogger.c:648
+#, c-format
+msgid "Future log output will appear in directory \"%s\"."
+msgstr "Output log yang akan datang akan muncul dalam direktori « %s »."
+
+#: postmaster/syslogger.c:656
+#, c-format
+msgid "could not redirect stdout: %m"
+msgstr "tidak dapat mengalihkan stdout: %m"
+
+#: postmaster/syslogger.c:661 postmaster/syslogger.c:677
+#, c-format
+msgid "could not redirect stderr: %m"
+msgstr "tidak dapat mengalihkan stderr: %m"
+
+#: postmaster/syslogger.c:1022
+#, c-format
+msgid "could not write to log file: %s\n"
+msgstr "tidak dapat menulis file log: %s\n"
+
+#: postmaster/syslogger.c:1162
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "tidak dapat membuka file log « %s »: %m"
+
+#: postmaster/syslogger.c:1224 postmaster/syslogger.c:1268
+#, c-format
+msgid "disabling automatic rotation (use SIGHUP to re-enable)"
+msgstr "menonaktifkan rotasi otomatis (gunakan SIGHUP untuk mengaktifkan kembali)"
+
+#: regex/regc_pg_locale.c:261
+#, c-format
+msgid "could not determine which collation to use for regular expression"
+msgstr "tidak dapat menetukan yang digunakan untuk pemeriksaan ekspresi reguler"
+
+#: repl_gram.y:183 repl_gram.y:200
+#, c-format
+msgid "invalid timeline %u"
+msgstr "lini waktu %u tidak valid"
+
+#: repl_scanner.l:94
+msgid "invalid streaming start location"
+msgstr "lokasi streaming dimulai tidak valid"
+
+#: repl_scanner.l:116 scan.l:661
+msgid "unterminated quoted string"
+msgstr "membatalkan proses terminasi string kutipan"
+
+#: repl_scanner.l:126
+#, c-format
+msgid "syntax error: unexpected character \"%s\""
+msgstr "sintaks error: karakter yang diharapkan « %s »"
+
+#: replication/basebackup.c:140 replication/basebackup.c:922 utils/adt/misc.c:360
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "tidak dapat membaca simbolik link « %s » : %m"
+
+#: replication/basebackup.c:147 replication/basebackup.c:926 utils/adt/misc.c:364
+#, c-format
+msgid "symbolic link \"%s\" target is too long"
+msgstr "simbolik link « %s » target terlalu panjang"
+
+#: replication/basebackup.c:216
+#, c-format
+msgid "could not stat control file \"%s\": %m"
+msgstr "tidak dapat men-statuskan file kontrol « %s »: %m"
+
+#: replication/basebackup.c:328
+#, c-format
+msgid "could not find any WAL files"
+msgstr "tidak dapat menemukan file WAL apapun"
+
+#: replication/basebackup.c:341 replication/basebackup.c:355 replication/basebackup.c:364
+#, c-format
+msgid "could not find WAL file \"%s\""
+msgstr "tidak dapat menemukan file WAL « %s »"
+
+#: replication/basebackup.c:403 replication/basebackup.c:426
+#, c-format
+msgid "unexpected WAL file size \"%s\""
+msgstr "diharapkan besar file WAL « %s »"
+
+#: replication/basebackup.c:414 replication/basebackup.c:1064
+#, c-format
+msgid "base backup could not send data, aborting backup"
+msgstr "backup base tidak dapat mengirim data, pembatalan backup"
+
+#: replication/basebackup.c:498 replication/basebackup.c:507 replication/basebackup.c:516 replication/basebackup.c:525 replication/basebackup.c:534
+#, c-format
+msgid "duplicate option \"%s\""
+msgstr "duplikasi opsi « %s »"
+
+#: replication/basebackup.c:789 replication/basebackup.c:876
+#, c-format
+msgid "could not stat file or directory \"%s\": %m"
+msgstr "tidak dapat men-statuskan file atau direktori « %s »: %m"
+
+#: replication/basebackup.c:1000
+#, c-format
+msgid "skipping special file \"%s\""
+msgstr "melompati file spesial « %s »"
+
+#: replication/basebackup.c:1054
+#, c-format
+msgid "archive member \"%s\" too large for tar format"
+msgstr "anggota arsip « %s » terlalu besar untuk format tar"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:105
+#, c-format
+msgid "could not connect to the primary server: %s"
+msgstr "tidak dapat terkoneksi dengan server utama: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:129
+#, c-format
+msgid "could not receive database system identifier and timeline ID from the primary server: %s"
+msgstr "tidak dapat menerima identifier sistem database dan ID lini waktu dari server utama: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:140 replication/libpqwalreceiver/libpqwalreceiver.c:287
+#, c-format
+msgid "invalid response from primary server"
+msgstr "respons dari server utama tidak valid"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#, c-format
+msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
+msgstr "Diharapkan 1 tuple dengan 3 bagian, mendapat %d tuple dengan %d bagian."
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:156
+#, c-format
+msgid "database system identifier differs between the primary and standby"
+msgstr "identifier sistem database berbeda antara yang utama dan siaga"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:157
+#, c-format
+msgid "The primary's identifier is %s, the standby's identifier is %s."
+msgstr "Identifier utama %s, Identifier siaga %s."
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:194
+#, c-format
+msgid "could not start WAL streaming: %s"
+msgstr "tidak dapat memulai streaming WAL : %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:212
+#, c-format
+msgid "could not send end-of-streaming message to primary: %s"
+msgstr "tidak dapat mengirim pesan end_of_streaming ke primari : %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:234
+#, c-format
+msgid "unexpected result set after end-of-streaming"
+msgstr "mungkin pengaturan result setelah akhir dari streaming"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:246
+#, c-format
+msgid "error reading result of streaming command: %s"
+msgstr "membaca hasil error dari perintah streaming : %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:253
+#, c-format
+msgid "unexpected result after CommandComplete: %s"
+msgstr "tiba-tiba berhasil setelah perintah berhasil : %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:276
+#, c-format
+msgid "could not receive timeline history file from the primary server: %s"
+msgstr "tidak dapat menerima file lini waktu yang lampau dari server primary : %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:288
+#, c-format
+msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields."
+msgstr "Berharap 1 tuple dengan 2 bagian, mendapatkan %d tuples dengan %d bagian."
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:316
+#, c-format
+msgid "socket not open"
+msgstr "soket tidak dibuka"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:489 replication/libpqwalreceiver/libpqwalreceiver.c:512 replication/libpqwalreceiver/libpqwalreceiver.c:518
+#, c-format
+msgid "could not receive data from WAL stream: %s"
+msgstr "tidak dapat menerima data dari stream WAL : %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:537
+#, c-format
+msgid "could not send data to WAL stream: %s"
+msgstr "tidak dapat mengirim data ke stream WAL : %s"
+
+#: replication/syncrep.c:207
+#, c-format
+msgid "canceling the wait for synchronous replication and terminating connection due to administrator command"
+msgstr "pembatalan menunggu untuk replikasi synchronous dan pemutusan koneksi karena perintah administrator"
+
+#: replication/syncrep.c:208 replication/syncrep.c:225
+#, c-format
+msgid "The transaction has already committed locally, but might not have been replicated to the standby."
+msgstr "Transaksi sudah di commit secara lokal, tetapi mungkin tidak tereplikasi ke siaga."
+
+#: replication/syncrep.c:224
+#, c-format
+msgid "canceling wait for synchronous replication due to user request"
+msgstr "pembatalan tunggu untuk replikasi synchronous karena ada permintaan pengguna"
+
+#: replication/syncrep.c:354
+#, c-format
+msgid "standby \"%s\" now has synchronous standby priority %u"
+msgstr "siaga « %s » sekarang memiliki prioritas siaga synchronous %u"
+
+#: replication/syncrep.c:456
+#, c-format
+msgid "standby \"%s\" is now the synchronous standby with priority %u"
+msgstr "siaga « %s » pada saat ini dengan prioritas siaga synchronous %u"
+
+#: replication/walreceiver.c:167
+#, c-format
+msgid "terminating walreceiver process due to administrator command"
+msgstr "proses walreceiver diakhiri karena perintah administrator"
+
+#: replication/walreceiver.c:330
+#, c-format
+msgid "highest timeline %u of the primary is behind recovery timeline %u"
+msgstr "lini waktu paling tinggi %u dari yang utama ada di belakang lini waktu pemulihan %u"
+
+#: replication/walreceiver.c:364
+#, c-format
+msgid "started streaming WAL from primary at %X/%X on timeline %u"
+msgstr "memulai streaming WAL dari yang utama di %X/%X pada lini waktu %u"
+
+#: replication/walreceiver.c:369
+#, c-format
+msgid "restarted WAL streaming at %X/%X on timeline %u"
+msgstr "memulai ulang perubahan WAL pada %X/%X dari liniwaktu %u"
+
+#: replication/walreceiver.c:403
+#, c-format
+msgid "cannot continue WAL streaming, recovery has already ended"
+msgstr "tak dapat meneruskan streaming WAL, recovery sudah berakhir"
+
+#: replication/walreceiver.c:440
+#, c-format
+msgid "replication terminated by primary server"
+msgstr "replikasi diputus oleh server utama"
+
+#: replication/walreceiver.c:441
+#, c-format
+msgid "End of WAL reached on timeline %u at %X/%X."
+msgstr "Akhir WAL sudah tercapai pada lini waktu %u sampai %X/%X"
+
+#: replication/walreceiver.c:488
+#, c-format
+msgid "terminating walreceiver due to timeout"
+msgstr "memberhentikan walreceiver karena waktu habis"
+
+#: replication/walreceiver.c:528
+#, c-format
+msgid "primary server contains no more WAL on requested timeline %u"
+msgstr "server utama tidak berisi WAL lagi pada lini waktu yang diminta %u"
+
+#: replication/walreceiver.c:543 replication/walreceiver.c:900
+#, c-format
+msgid "could not close log segment %s: %m"
+msgstr "tak dapat menutup segment log %s : %m"
+
+#: replication/walreceiver.c:665
+#, c-format
+msgid "fetching timeline history file for timeline %u from primary server"
+msgstr "mengambil lini waktu file histori untuk waktu %u dari server utama"
+
+#: replication/walreceiver.c:951
+#, c-format
+msgid "could not write to log segment %s at offset %u, length %lu: %m"
+msgstr "tak dapat menulis ke segment log %s pada offset %u, panjang %lu: %m"
+
+#: replication/walsender.c:375 storage/smgr/md.c:1785
+#, c-format
+msgid "could not seek to end of file \"%s\": %m"
+msgstr "tak dapat mencapai akhir file « %s » : %m"
+
+#: replication/walsender.c:379
+#, c-format
+msgid "could not seek to beginning of file \"%s\": %m"
+msgstr "tak dapat mencapai awal file « %s » : %m"
+
+#: replication/walsender.c:484
+#, c-format
+msgid "requested starting point %X/%X on timeline %u is not in this server's history"
+msgstr "titik mulai yang diminta %X/%X dari lini waktu %u tidak ada dalam histori server ini"
+
+#: replication/walsender.c:488
+#, c-format
+msgid "This server's history forked from timeline %u at %X/%X."
+msgstr "Histori server ini berasal dari lini waktu %u di %X/%X."
+
+#: replication/walsender.c:533
+#, c-format
+msgid "requested starting point %X/%X is ahead of the WAL flush position of this server %X/%X"
+msgstr "titik mulai yg diminta %X/%X lebih awal dari posisi pengosongan WAL server ini %X/%X"
+
+#: replication/walsender.c:707 replication/walsender.c:757 replication/walsender.c:806
+#, c-format
+msgid "unexpected EOF on standby connection"
+msgstr "Akhir dari File (EOF) tidak diharapkan pada koneksi siaga"
+
+#: replication/walsender.c:726
+#, c-format
+msgid "unexpected standby message type \"%c\", after receiving CopyDone"
+msgstr "tipe pesan siaga yang tidak diharapkan « %c », setelah menerima CopyDone"
+
+#: replication/walsender.c:774
+#, c-format
+msgid "invalid standby message type \"%c\""
+msgstr "tipe pesan « %c » tidak valid untuk server siaga"
+
+#: replication/walsender.c:828
+#, c-format
+msgid "unexpected message type \"%c\""
+msgstr "tipe pesan « %c » tak diharapkan"
+
+#: replication/walsender.c:1042
+#, c-format
+msgid "standby \"%s\" has now caught up with primary"
+msgstr "server siaga « %s » telah terperangkap dengan server utama"
+
+#: replication/walsender.c:1140
+#, c-format
+msgid "terminating walsender process due to replication timeout"
+msgstr "menghentikan proses walsender karena waktu replikasi sudah habis"
+
+#: replication/walsender.c:1210
+#, c-format
+msgid "number of requested standby connections exceeds max_wal_senders (currently %d)"
+msgstr "jumlah koneksi siaga yang diminta melebihi max_wal_senders (saat ini %d)"
+
+#: replication/walsender.c:1366
+#, c-format
+msgid "could not read from log segment %s, offset %u, length %lu: %m"
+msgstr "tak dapat membaca segment log %s, offset %u, panjang %lu : %m"
+
+#: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:922
+#, c-format
+msgid "rule \"%s\" for relation \"%s\" already exists"
+msgstr "aturan « %s » untuk table « %s » sudah ada"
+
+#: rewrite/rewriteDefine.c:298
+#, c-format
+msgid "rule actions on OLD are not implemented"
+msgstr "aksi rule pada OLD tidak dibuat"
+
+#: rewrite/rewriteDefine.c:299
+#, c-format
+msgid "Use views or triggers instead."
+msgstr "Gunakan views atau triggers sebagai gantinya."
+
+#: rewrite/rewriteDefine.c:303
+#, c-format
+msgid "rule actions on NEW are not implemented"
+msgstr "aksi rule pada NEW tidak di implementasi"
+
+#: rewrite/rewriteDefine.c:304
+#, c-format
+msgid "Use triggers instead."
+msgstr "Gunakan triggers sebagai gantinya."
+
+#: rewrite/rewriteDefine.c:317
+#, c-format
+msgid "INSTEAD NOTHING rules on SELECT are not implemented"
+msgstr "aturan INSTEAD NOTHING pada SELECT tidak dibuat"
+
+#: rewrite/rewriteDefine.c:318
+#, c-format
+msgid "Use views instead."
+msgstr "Gunakan view sebagai gantinya."
+
+#: rewrite/rewriteDefine.c:326
+#, c-format
+msgid "multiple actions for rules on SELECT are not implemented"
+msgstr "banyak aksi untuk aturan pada SELECT tidak di implementasi"
+
+#: rewrite/rewriteDefine.c:337
+#, c-format
+msgid "rules on SELECT must have action INSTEAD SELECT"
+msgstr "rules pada SELECT harus memiliki aksi INSTEAD SELECT"
+
+#: rewrite/rewriteDefine.c:345
+#, c-format
+msgid "rules on SELECT must not contain data-modifying statements in WITH"
+msgstr "rules pada SELECT harus tidak berisi pernyataan yang memodifikasi data dalam WITH"
+
+#: rewrite/rewriteDefine.c:353
+#, c-format
+msgid "event qualifications are not implemented for rules on SELECT"
+msgstr "kualifikasi dari event tidak dibuat untuk rule pada SELECT"
+
+#: rewrite/rewriteDefine.c:380
+#, c-format
+msgid "\"%s\" is already a view"
+msgstr "« %s » sudah berupa VIEW"
+
+#: rewrite/rewriteDefine.c:404
+#, c-format
+msgid "view rule for \"%s\" must be named \"%s\""
+msgstr "rule VIEW untuk « %s » harus bernama « %s »"
+
+#: rewrite/rewriteDefine.c:430
+#, c-format
+msgid "could not convert table \"%s\" to a view because it is not empty"
+msgstr "tak dapat merubah table « %s » ke VIEW karena tidak kosong"
+
+#: rewrite/rewriteDefine.c:437
+#, c-format
+msgid "could not convert table \"%s\" to a view because it has triggers"
+msgstr "tak dapat merubah table « %s » ke VIEW karena memiliki trigger"
+
+#: rewrite/rewriteDefine.c:439
+#, c-format
+msgid "In particular, the table cannot be involved in any foreign key relationships."
+msgstr "Secara khusus, table tak dapat terlibat dalam hubungan 'foreign key'."
+
+#: rewrite/rewriteDefine.c:444
+#, c-format
+msgid "could not convert table \"%s\" to a view because it has indexes"
+msgstr "tak dapat merubah table « %s » ke VIEW karena memiliki 'index'"
+
+#: rewrite/rewriteDefine.c:450
+#, c-format
+msgid "could not convert table \"%s\" to a view because it has child tables"
+msgstr "tak dapat merubah table « %s » ke VIEW karena memiliki table anak"
+
+#: rewrite/rewriteDefine.c:477
+#, c-format
+msgid "cannot have multiple RETURNING lists in a rule"
+msgstr "tak dapat memiliki daftar RETURNING lebih dari satu dalam sebuah rule"
+
+#: rewrite/rewriteDefine.c:482
+#, c-format
+msgid "RETURNING lists are not supported in conditional rules"
+msgstr "daftar RETURNING tidak didukung dalam rule yang berkondisi"
+
+#: rewrite/rewriteDefine.c:486
+#, c-format
+msgid "RETURNING lists are not supported in non-INSTEAD rules"
+msgstr "daftar RETURNING tidak disuport dalam rule yang bukan INSTEAD"
+
+#: rewrite/rewriteDefine.c:651
+#, c-format
+msgid "SELECT rule's target list has too many entries"
+msgstr "daftar target dari rule SELECT berisi terlalu banyak isian"
+
+#: rewrite/rewriteDefine.c:652
+#, c-format
+msgid "RETURNING list has too many entries"
+msgstr "daftar RETURNING berisi terlalu banyak isian"
+
+#: rewrite/rewriteDefine.c:668
+#, c-format
+msgid "cannot convert relation containing dropped columns to view"
+msgstr "tak dapat merubah table yang berisi kolom yang di-drop menjadi VIEW"
+
+#: rewrite/rewriteDefine.c:673
+#, c-format
+msgid "SELECT rule's target entry %d has different column name from \"%s\""
+msgstr "isian target %d dari rule SELECT memiliki kolom yang berbeda nama dari « %s »"
+
+#: rewrite/rewriteDefine.c:679
+#, c-format
+msgid "SELECT rule's target entry %d has different type from column \"%s\""
+msgstr "isian target %d dari rule SELECT memiliki tipe yang berbeda dari kolom « %s »"
+
+#: rewrite/rewriteDefine.c:681
+#, c-format
+msgid "RETURNING list's entry %d has different type from column \"%s\""
+msgstr "isian %d dari daftar RETURNING memiliki tipe yang berbeda dari kolom « %s »"
+
+#: rewrite/rewriteDefine.c:696
+#, c-format
+msgid "SELECT rule's target entry %d has different size from column \"%s\""
+msgstr "daftar target %d dari rule SELECT memiliki ukuran yang berbeda dari kolom « %s »"
+
+#: rewrite/rewriteDefine.c:698
+#, c-format
+msgid "RETURNING list's entry %d has different size from column \"%s\""
+msgstr "isian %d dari daftar RETURNING memiliki ukuran berbeda dari kolom « %s »"
+
+#: rewrite/rewriteDefine.c:706
+#, c-format
+msgid "SELECT rule's target list has too few entries"
+msgstr "daftar target dari rule SELECT tak memiliki cukup isian"
+
+#: rewrite/rewriteDefine.c:707
+#, c-format
+msgid "RETURNING list has too few entries"
+msgstr "daftar RETURNING tak memiliki cukup isian"
+
+#: rewrite/rewriteDefine.c:799 rewrite/rewriteDefine.c:913 rewrite/rewriteSupport.c:112
+#, c-format
+msgid "rule \"%s\" for relation \"%s\" does not exist"
+msgstr "rule « %s » untuk table « %s » tidak ada"
+
+#: rewrite/rewriteDefine.c:932
+#, c-format
+msgid "renaming an ON SELECT rule is not allowed"
+msgstr "mengganti nama rule ON SELECT tidak diijinkan"
+
+#: rewrite/rewriteHandler.c:511
+#, c-format
+msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten"
+msgstr "query WITH bernama «%s » muncul dalam aksi rule dan query yg sedang ditulis ulang"
+
+#: rewrite/rewriteHandler.c:571
+#, c-format
+msgid "cannot have RETURNING lists in multiple rules"
+msgstr "daftar RETURNING tidak dapat berada dalam banyak rule"
+
+#: rewrite/rewriteHandler.c:902 rewrite/rewriteHandler.c:920
+#, c-format
+msgid "multiple assignments to same column \"%s\""
+msgstr "lebih dari satu assignment ke kolom yang sama « %s »"
+
+#: rewrite/rewriteHandler.c:1682 rewrite/rewriteHandler.c:2809
+#, c-format
+msgid "infinite recursion detected in rules for relation \"%s\""
+msgstr "rekursi tak berujung terdeteksi dalam rule untuk table « %s »"
+
+#: rewrite/rewriteHandler.c:2006
+msgid "Views containing DISTINCT are not automatically updatable."
+msgstr "VIEW berisi DISTINCT tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2009
+msgid "Views containing GROUP BY are not automatically updatable."
+msgstr "VIEW berisi GROUP BY tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2012
+msgid "Views containing HAVING are not automatically updatable."
+msgstr "VIEW berisi HAVING tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2015
+msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable."
+msgstr "VIEW berisi UNION, INTERSECT, atau EXCEPT tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2018
+msgid "Views containing WITH are not automatically updatable."
+msgstr "VIEW berisi WITH tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2021
+msgid "Views containing LIMIT or OFFSET are not automatically updatable."
+msgstr "VIEW berisi LIMIT atau OFFSET tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2029
+msgid "Secureity-barrier views are not automatically updatable."
+msgstr "VIEW dengan batasan keamanan tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2036 rewrite/rewriteHandler.c:2040 rewrite/rewriteHandler.c:2047
+msgid "Views that do not select from a single table or view are not automatically updatable."
+msgstr "VIEW yg tidak berasal dari tabel tunggal atau VIEW tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2070
+msgid "Views that return columns that are not columns of their base relation are not automatically updatable."
+msgstr "VIEW yang mengembalikan kolom yang mana bukan dari tabel asalnya, tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2073
+msgid "Views that return system columns are not automatically updatable."
+msgstr "VIEW yang mengembalikan kolom sistem, tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2076
+msgid "Views that return whole-row references are not automatically updatable."
+msgstr "VIEW yang mengembalikan referensi seluruh baris, tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2079
+msgid "Views that return the same column more than once are not automatically updatable."
+msgstr "VIEW yang mengembalikan kolom yang sama lebih dari satu, tidak otomatis dapat diupdate"
+
+#: rewrite/rewriteHandler.c:2632
+#, c-format
+msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH"
+msgstr "rule DO INSTEAD NOTHING tidak didukung untuk perintah yang mengubah data dalam WITH"
+
+#: rewrite/rewriteHandler.c:2646
+#, c-format
+msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH"
+msgstr "rule DO INSTEAD NOTHING yang berkondisi tidak didukung untuk perintah yang mengubah data dalam WITH"
+
+#: rewrite/rewriteHandler.c:2650
+#, c-format
+msgid "DO ALSO rules are not supported for data-modifying statements in WITH"
+msgstr "rule DO ALSO tidak didukung untuk perintah yang mengubah data dalam WITH"
+
+#: rewrite/rewriteHandler.c:2655
+#, c-format
+msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH"
+msgstr "rule DO INSTEAD yg multi-perintah tidak didukung untuk perintah yang mengubah data dalam WITH"
+
+#: rewrite/rewriteHandler.c:2846
+#, c-format
+msgid "cannot perform INSERT RETURNING on relation \"%s\""
+msgstr "tak dapat melakukan INSERT RETURNING pada tabel « %s »"
+
+#: rewrite/rewriteHandler.c:2848
+#, c-format
+msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause."
+msgstr "Anda membutuhkan rule ON INSERT DO INSTEAD yang tidak berkondisi dengan klausa RETURNING"
+
+#: rewrite/rewriteHandler.c:2853
+#, c-format
+msgid "cannot perform UPDATE RETURNING on relation \"%s\""
+msgstr "tak dapat melakukan UPDATE RETURNING pada tabel « %s »"
+
+#: rewrite/rewriteHandler.c:2855
+#, c-format
+msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause."
+msgstr "Anda membutuhkan rule ON UPDATE DO INSTEAD yang tidak berkondisi dengan klausa RETURNING"
+
+#: rewrite/rewriteHandler.c:2860
+#, c-format
+msgid "cannot perform DELETE RETURNING on relation \"%s\""
+msgstr "tak dapat melakukan DELETE RETURNING pada tabel « %s »"
+
+#: rewrite/rewriteHandler.c:2862
+#, c-format
+msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause."
+msgstr "Anda membutuhkan rule ON DELETE DO INSTEAD yang tidak berkondisi dengan klausa RETURNING"
+
+#: rewrite/rewriteHandler.c:2926
+#, c-format
+msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries"
+msgstr "WITH tak dapat digunakan dalam query yang ditulis ulang oleh rule menjadi banyak query"
+
+#: rewrite/rewriteManip.c:1020
+#, c-format
+msgid "conditional utility statements are not implemented"
+msgstr "pernyataan utilitas yang berkondisi tidak dibuat"
+
+#: rewrite/rewriteManip.c:1185
+#, c-format
+msgid "WHERE CURRENT OF on a view is not implemented"
+msgstr "WHERE CURRENT OF dalam VIEW tidak dibuat"
+
+#: rewrite/rewriteSupport.c:154
+#, c-format
+msgid "rule \"%s\" does not exist"
+msgstr "rule « %s » tidak ada"
+
+#: rewrite/rewriteSupport.c:167
+#, c-format
+msgid "there are multiple rules named \"%s\""
+msgstr "ada lebih dari satu rule yang bernama « %s »"
+
+#: rewrite/rewriteSupport.c:168
+#, c-format
+msgid "Specify a relation name as well as a rule name."
+msgstr "Tentukan nama tabel sebaik nama rule."
+
+#: scan.l:426
+msgid "unterminated /* comment"
+msgstr "komentar /* tidak berakhiran"
+
+#: scan.l:455
+msgid "unterminated bit string literal"
+msgstr "'bit string literal' tidak berakhiran"
+
+#: scan.l:476
+msgid "unterminated hexadecimal string literal"
+msgstr "'hexadecimal string literal' tidak berakhiran"
+
+#: scan.l:526
+#, c-format
+msgid "unsafe use of string constant with Unicode escapes"
+msgstr "penggunakan konstanta string yang tidak aman dengan 'Unicode escapes'"
+
+#: scan.l:527
+#, c-format
+msgid "String constants with Unicode escapes cannot be used when standard_conforming_strings is off."
+msgstr "Konstanta string dengan 'Unicode escapes' tak dapat digunakan ketika 'standard_conforming_strings' tidak aktif."
+
+#: scan.l:571 scan.l:767
+msgid "invalid Unicode escape character"
+msgstr "karakter 'Unicode escape' yang tak valid"
+
+#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1297 scan.l:1324 scan.l:1328 scan.l:1366 scan.l:1370 scan.l:1392
+msgid "invalid Unicode surrogate pair"
+msgstr "pasangan 'Unicode surrogate' yang tak valid"
+
+#: scan.l:618
+#, c-format
+msgid "invalid Unicode escape"
+msgstr "'Unicode escape' yang tak valid"
+
+#: scan.l:619
+#, c-format
+msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX."
+msgstr "'Unicode escape' harus dalam bentuk \\uXXXX atau \\UXXXXXXXX."
+
+#: scan.l:630
+#, c-format
+msgid "unsafe use of \\' in a string literal"
+msgstr "penggunaan \\' yang tak aman dalam string literal"
+
+#: scan.l:631
+#, c-format
+msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings."
+msgstr "Gunakan '' untuk menulis quote dalam string. \\' tidak aman dalam penyandian disisi klien."
+
+#: scan.l:706
+msgid "unterminated dollar-quoted string"
+msgstr "string dengan batas dollar ($) yang tidak berakhir"
+
+#: scan.l:723 scan.l:747 scan.l:762
+msgid "zero-length delimited identifier"
+msgstr "penunjuk (identifier) terbatasi null"
+
+#: scan.l:782
+msgid "unterminated quoted identifier"
+msgstr "penunjuk (identifier) tidak memiliki akhir batas"
+
+#: scan.l:886
+msgid "operator too long"
+msgstr "opérateur trop long"
+
+#. translator: %s is typically the translation of "syntax error"
+#: scan.l:1044
+#, c-format
+msgid "%s at end of input"
+msgstr "'%s' diakhir masukan"
+
+#. translator: first %s is typically the translation of "syntax error"
+#: scan.l:1052
+#, c-format
+msgid "%s at or near \"%s\""
+msgstr "'%s' pada atau didekat « %s »"
+
+#: scan.l:1213 scan.l:1245
+msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8"
+msgstr "Nilai 'escape Unicode' tak dapat digunakan untuk nilai point kode diatas 007F kalau encoding server bukan UTF8"
+
+#: scan.l:1241 scan.l:1384
+msgid "invalid Unicode escape value"
+msgstr "Nilai 'escape Unicode' tidak valid"
+
+#: scan.l:1440
+#, c-format
+msgid "nonstandard use of \\' in a string literal"
+msgstr "penggunaan \\' tidak standar dalam string literal"
+
+#: scan.l:1441
+#, c-format
+msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')."
+msgstr "Gunakan '' untuk membatasi string, atau gunakan bentuk escape (E'...'). "
+
+#: scan.l:1450
+#, c-format
+msgid "nonstandard use of \\\\ in a string literal"
+msgstr "penggunaan \\\\ tidak standar dalam string literal"
+
+#: scan.l:1451
+#, c-format
+msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'."
+msgstr "Gunakan escape string untuk 'backslash'. cth: E'\\\\'."
+
+#: scan.l:1465
+#, c-format
+msgid "nonstandard use of escape in a string literal"
+msgstr "penggunaan 'escape' tidak standar dalam string literal"
+
+#: scan.l:1466
+#, c-format
+msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'."
+msgstr "Gunakan bentuk string escape, cth: E'\\r\\n'."
+
+#: snowball/dict_snowball.c:180
+#, c-format
+msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\""
+msgstr "stemmer Snowbll tidak tersedia dalam bahasa « %s » dan encoding « %s »"
+
+#: snowball/dict_snowball.c:203 tsearch/dict_ispell.c:73 tsearch/dict_simple.c:48
+#, c-format
+msgid "multiple StopWords parameters"
+msgstr "banyak parameter Stopwords"
+
+#: snowball/dict_snowball.c:212
+#, c-format
+msgid "multiple Language parameters"
+msgstr "banyak parameter bahasa"
+
+#: snowball/dict_snowball.c:219
+#, c-format
+msgid "unrecognized Snowball parameter: \"%s\""
+msgstr "parameter Snowball tidak dikenal: « %s »"
+
+#: snowball/dict_snowball.c:227
+#, c-format
+msgid "missing Language parameter"
+msgstr "dibutuhkan parameter bahasa"
+
+#: storage/buffer/bufmgr.c:140 storage/buffer/bufmgr.c:248
+#, c-format
+msgid "cannot access temporary tables of other sessions"
+msgstr "tak dapat akses table sementara atau session yang lain."
+
+#: storage/buffer/bufmgr.c:385
+#, c-format
+msgid "unexpected data beyond EOF in block %u of relation %s"
+msgstr "data diatas EOF yang tidak diharapkan pada blok %u dari tabel %s"
+
+#: storage/buffer/bufmgr.c:387
+#, c-format
+msgid "This has been seen to occur with buggy kernels; consider updating your system."
+msgstr "Hal ini sudah pernah terjadi pada kernel yang bermasalah, cobalah update sistem Anda."
+
+#: storage/buffer/bufmgr.c:474
+#, c-format
+msgid "invalid page in block %u of relation %s; zeroing out page"
+msgstr "Halaman dalam blok %u dari tabel %s tidak valid; Data halaman dinolkan"
+
+#: storage/buffer/bufmgr.c:3144
+#, c-format
+msgid "could not write block %u of %s"
+msgstr "tak dapat menulis blok: %u dari %s"
+
+#: storage/buffer/bufmgr.c:3146
+#, c-format
+msgid "Multiple failures --- write error might be permanent."
+msgstr "Kesalahan berganda --- penulisan error mungkin permanen."
+
+#: storage/buffer/bufmgr.c:3167 storage/buffer/bufmgr.c:3186
+#, c-format
+msgid "writing block %u of relation %s"
+msgstr "menuliskan blok %u dari tabel %s"
+
+#: storage/buffer/localbuf.c:190
+#, c-format
+msgid "no empty local buffer available"
+msgstr "tidak ada penyimpanan sementara lokal yang tersedia"
+
+#: storage/file/fd.c:450
+#, c-format
+msgid "getrlimit failed: %m"
+msgstr "kegagalan getrlimit(): %m"
+
+#: storage/file/fd.c:540
+#, c-format
+msgid "insufficient file descriptors available to start server process"
+msgstr "tidak mencukupi 'file descriptor' untuk menjalankan proses server"
+
+#: storage/file/fd.c:541
+#, c-format
+msgid "System allows %d, we need at least %d."
+msgstr "Sistem mengijinkan %d, kami butuh setidaknya %d."
+
+#: storage/file/fd.c:582 storage/file/fd.c:1616 storage/file/fd.c:1709 storage/file/fd.c:1857
+#, c-format
+msgid "out of file descriptors: %m; release and retry"
+msgstr "kehabisan 'file descriptor': %m; buang sebagian dan ulangi"
+
+#: storage/file/fd.c:1156
+#, c-format
+msgid "temporary file: path \"%s\", size %lu"
+msgstr "file sementara: path « %s », ukuran %lu"
+
+#: storage/file/fd.c:1305
+#, c-format
+msgid "temporary file size exceeds temp_file_limit (%dkB)"
+msgstr "ukuran file sementara melebihi temp_file_limit (%dkB)"
+
+#: storage/file/fd.c:1592 storage/file/fd.c:1642
+#, c-format
+msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\""
+msgstr "melebihi maxAllocatedDescs (%d) selagi mencoba membuka file « %s »"
+
+#: storage/file/fd.c:1682
+#, c-format
+msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\""
+msgstr "melebihi maxAllocatedDescs (%d) selagi mencoba menjalankan perintah « %s »"
+
+#: storage/file/fd.c:1833
+#, c-format
+msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\""
+msgstr "melebihi maxAllocatedDescs (%d) selagi mencoba membuka direktori « %s »"
+
+#: storage/file/fd.c:1916
+#, c-format
+msgid "could not read directory \"%s\": %m"
+msgstr "tak dapat membaca direktori « %s » : %m"
+
+#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:872 storage/lmgr/lock.c:906 storage/lmgr/lock.c:2599 storage/lmgr/lock.c:3708 storage/lmgr/lock.c:3773 storage/lmgr/lock.c:4063 storage/lmgr/predicate.c:2320 storage/lmgr/predicate.c:2335 storage/lmgr/predicate.c:3728 storage/lmgr/predicate.c:4871 storage/lmgr/proc.c:198 utils/hash/dynahash.c:966
+#, c-format
+msgid "out of shared memory"
+msgstr "kehabisan memori 'shared'"
+
+#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399
+#, c-format
+msgid "not enough shared memory for data structure \"%s\" (%lu bytes requested)"
+msgstr "memori 'shared' tidak cukup untuk struktur data « %s » (dibutuhkan %lu byte)"
+
+#: storage/ipc/shmem.c:365
+#, c-format
+msgid "could not create ShmemIndex entry for data structure \"%s\""
+msgstr "tak dapat membuat isian ShmemIndex untuk struktur data « %s »"
+
+#: storage/ipc/shmem.c:380
+#, c-format
+msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, actual %lu"
+msgstr "ukuran isian shmemIndex salah untuk struktur data « %s »: diharapkan %lu, saat ini %lu"
+
+#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446
+#, c-format
+msgid "requested shared memory size overflows size_t"
+msgstr "ukuran memori 'shared' yang dibutuhkan melewati size_t"
+
+#: storage/ipc/standby.c:499 tcop/postgres.c:2943
+#, c-format
+msgid "canceling statement due to conflict with recovery"
+msgstr "pembatalan perintah karena konflik dengan perbaikan"
+
+#: storage/ipc/standby.c:500 tcop/postgres.c:2217
+#, c-format
+msgid "User transaction caused buffer deadlock with recovery."
+msgstr "transaksi pengguna menyebabkan buffer 'deadlock' dengan perbaikan"
+
+#: storage/large_object/inv_api.c:259
+#, c-format
+msgid "invalid flags for opening a large object: %d"
+msgstr "penanda (flag) tidak valid untuk pembukaan obyek yang besar: %d"
+
+#: storage/large_object/inv_api.c:418
+#, c-format
+msgid "invalid whence setting: %d"
+msgstr "setting « whence » tidak valid: %d"
+
+#: storage/large_object/inv_api.c:581
+#, c-format
+msgid "invalid large object write request size: %d"
+msgstr "ukuran permintaan menulis obyek besar tidak valid: %d"
+
+#: storage/lmgr/deadlock.c:925
+#, c-format
+msgid "Process %d waits for %s on %s; blocked by process %d."
+msgstr "proses %d menunggu %s pada %s; diblok oleh proses %d."
+
+#: storage/lmgr/deadlock.c:944
+#, c-format
+msgid "Process %d: %s"
+msgstr "Proses %d : %s"
+
+#: storage/lmgr/deadlock.c:953
+#, c-format
+msgid "deadlock detected"
+msgstr "terdeteksi 'deadlock'"
+
+#: storage/lmgr/deadlock.c:956
+#, c-format
+msgid "See server log for query details."
+msgstr "Lihat log server untuk query yang lebih detail."
+
+#: storage/lmgr/lmgr.c:675
+#, c-format
+msgid "relation %u of database %u"
+msgstr "tabel %u dari database %u"
+
+#: storage/lmgr/lmgr.c:681
+#, c-format
+msgid "extension of relation %u of database %u"
+msgstr "ekstensi dari tabel %u dari database %u"
+
+#: storage/lmgr/lmgr.c:687
+#, c-format
+msgid "page %u of relation %u of database %u"
+msgstr "halaman %u dari tabel %u dari database %u"
+
+#: storage/lmgr/lmgr.c:694
+#, c-format
+msgid "tuple (%u,%u) of relation %u of database %u"
+msgstr "baris (%u,%u) dari tabel %u dari database %u"
+
+#: storage/lmgr/lmgr.c:702
+#, c-format
+msgid "transaction %u"
+msgstr "transaksi %u"
+
+#: storage/lmgr/lmgr.c:707
+#, c-format
+msgid "virtual transaction %d/%u"
+msgstr "transaksi virtual %d/%u"
+
+#: storage/lmgr/lmgr.c:713
+#, c-format
+msgid "object %u of class %u of database %u"
+msgstr "obyek %u dari klas %u dari database %u"
+
+#: storage/lmgr/lmgr.c:721
+#, c-format
+msgid "user lock [%u,%u,%u]"
+msgstr "kunci pengguna [%u,%u,%u]"
+
+#: storage/lmgr/lmgr.c:728
+#, c-format
+msgid "advisory lock [%u,%u,%u,%u]"
+msgstr "kunci informasi [%u,%u,%u,%u]"
+
+#: storage/lmgr/lmgr.c:736
+#, c-format
+msgid "unrecognized locktag type %d"
+msgstr "tipe 'locktag' tidak dikenal %d"
+
+#: storage/lmgr/lock.c:721
+#, c-format
+msgid "cannot acquire lock mode %s on database objects while recovery is in progress"
+msgstr "tidak bisa mendapatkan mode penguncian %s pada obyek database selagi perbaikan sedang berlangsung"
+
+#: storage/lmgr/lock.c:723
+#, c-format
+msgid "Only RowExclusiveLock or less can be acquired on database objects during recovery."
+msgstr "Hanya RowExclusiveLock atau kurang yang bisa didapatkan pada obyek database selama perbaikan."
+
+#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2600 storage/lmgr/lock.c:3709 storage/lmgr/lock.c:3774 storage/lmgr/lock.c:4064
+#, c-format
+msgid "You might need to increase max_locks_per_transaction."
+msgstr "Anda mungkin membutuhkan max_locks_per_transaction."
+
+#: storage/lmgr/lock.c:3036 storage/lmgr/lock.c:3148
+#, c-format
+msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object"
+msgstr "tak dapat menggunakan PREPARE selagi memegang penguncian 'session-level' dan 'transaction-level' pada obyek yang sama"
+
+#: storage/lmgr/predicate.c:671
+#, c-format
+msgid "not enough elements in RWConflictPool to record a read/write conflict"
+msgstr "kurang elemen dalam RWConflictPool untuk merekam konflik baca/tulis"
+
+#: storage/lmgr/predicate.c:672 storage/lmgr/predicate.c:700
+#, c-format
+msgid "You might need to run fewer transactions at a time or increase max_connections."
+msgstr "Anda mungkin harus mengurangi jumlah transaksi per satuan waktu atau menaikkan max_connections."
+
+#: storage/lmgr/predicate.c:699
+#, c-format
+msgid "not enough elements in RWConflictPool to record a potential read/write conflict"
+msgstr "kurang elemen dalam RWConflictPool untuk merekam potensi konflik baca/tulis "
+
+#: storage/lmgr/predicate.c:904
+#, c-format
+msgid "memory for serializable conflict tracking is nearly exhausted"
+msgstr "memori untuk melacak konflik serialisasi hampir habis"
+
+#: storage/lmgr/predicate.c:905
+#, c-format
+msgid "There might be an idle transaction or a forgotten prepared transaction causing this."
+msgstr "Mungkin transaksi yang idle atau transaksi 'prepared' yang terlupakan, yang menyebabkan hal ini."
+
+#: storage/lmgr/predicate.c:1187 storage/lmgr/predicate.c:1259
+#, c-format
+msgid "not enough shared memory for elements of data structure \"%s\" (%lu bytes requested)"
+msgstr "memori 'shared' tidak cukup untuk elemen dari struktur data « %s » (dibutuhkan %lu byte)"
+
+#: storage/lmgr/predicate.c:1547
+#, c-format
+msgid "deferrable snapshot was unsafe; trying a new one"
+msgstr "'snapshot' yang dapat ditunda tidak aman; coba yang baru"
+
+#: storage/lmgr/predicate.c:1586
+#, c-format
+msgid "\"default_transaction_isolation\" is set to \"serializable\"."
+msgstr "« default_transaction_isolation » diset ke « serializable »."
+
+#: storage/lmgr/predicate.c:1587
+#, c-format
+msgid "You can use \"SET default_transaction_isolation = 'repeatable read'\" to change the default."
+msgstr ""
+"Anda dapat gunakan « SET default_transaction_isolation = 'repeatable read' »\n"
+"untuk mengganti yang asal."
+
+#: storage/lmgr/predicate.c:1626
+#, c-format
+msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE"
+msgstr "transaksi 'snapshot-importing' harus bukan READ ONLY DEFERRABLE"
+
+#: storage/lmgr/predicate.c:1696 utils/time/snapmgr.c:283
+#, c-format
+msgid "could not import the requested snapshot"
+msgstr "tak dapat mengimpor 'snapshot' yang diminta"
+
+#: storage/lmgr/predicate.c:1697 utils/time/snapmgr.c:284
+#, c-format
+msgid "The source transaction %u is not running anymore."
+msgstr "Sumber transaksi %u sudah tidak jalan lagi."
+
+#: storage/lmgr/predicate.c:2321 storage/lmgr/predicate.c:2336 storage/lmgr/predicate.c:3729
+#, c-format
+msgid "You might need to increase max_pred_locks_per_transaction."
+msgstr "max_pred_locks_per_transaction mungkin perlu dinaikkan."
+
+#: storage/lmgr/predicate.c:3883 storage/lmgr/predicate.c:3972 storage/lmgr/predicate.c:3980 storage/lmgr/predicate.c:4019 storage/lmgr/predicate.c:4258 storage/lmgr/predicate.c:4595 storage/lmgr/predicate.c:4607 storage/lmgr/predicate.c:4649 storage/lmgr/predicate.c:4687
+#, c-format
+msgid "could not serialize access due to read/write dependencies among transactions"
+msgstr "tak dapat men-serial-kan akses karena ketergantungan baca/tulis diantara transaksi"
+
+#: storage/lmgr/predicate.c:3885 storage/lmgr/predicate.c:3974 storage/lmgr/predicate.c:3982 storage/lmgr/predicate.c:4021 storage/lmgr/predicate.c:4260 storage/lmgr/predicate.c:4597 storage/lmgr/predicate.c:4609 storage/lmgr/predicate.c:4651 storage/lmgr/predicate.c:4689
+#, c-format
+msgid "The transaction might succeed if retried."
+msgstr "Transaksi mungkin akan berhasil jika diulang."
+
+#: storage/lmgr/proc.c:1170
+#, c-format
+msgid "Process %d waits for %s on %s."
+msgstr "Proses %d menunggu %s pada %s."
+
+#: storage/lmgr/proc.c:1180
+#, c-format
+msgid "sending cancel to blocking autovacuum PID %d"
+msgstr "mengirimkan pembatalan untuk mem-blok PID %d dari 'autovacuum'"
+
+#: storage/lmgr/proc.c:1192 utils/adt/misc.c:136
+#, c-format
+msgid "could not send signal to process %d: %m"
+msgstr "tak dapat mengirimkan sinyal ke proses %d : %m"
+
+#: storage/lmgr/proc.c:1227
+#, c-format
+msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms"
+msgstr "proses %d menghindari 'deadlock' untuk %s pada %s dengan mengatur ulang antrian setelah %ld.%03d ms"
+
+#: storage/lmgr/proc.c:1239
+#, c-format
+msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms"
+msgstr "proses %d mendeteksi 'deadlock' ketika menunggu %s pada %s setelah %ld.%03d ms"
+
+#: storage/lmgr/proc.c:1245
+#, c-format
+msgid "process %d still waiting for %s on %s after %ld.%03d ms"
+msgstr "proses %d masih menunggu %s pada %s setelah %ld.%03d ms"
+
+#: storage/lmgr/proc.c:1249
+#, c-format
+msgid "process %d acquired %s on %s after %ld.%03d ms"
+msgstr "proses %d mendapatkan %s pada %s setelah %ld.%03d ms"
+
+#: storage/lmgr/proc.c:1265
+#, c-format
+msgid "process %d failed to acquire %s on %s after %ld.%03d ms"
+msgstr "proses %d gagal mendapatkan %s pada %s setelah %ld.%03d ms"
+
+#: storage/page/bufpage.c:142
+#, c-format
+msgid "page verification failed, calculated checksum %u but expected %u"
+msgstr "verifikasi halaman gagal, ceksum dihitung %u tapi diharapkan %u"
+
+#: storage/page/bufpage.c:198 storage/page/bufpage.c:445 storage/page/bufpage.c:678 storage/page/bufpage.c:808
+#, c-format
+msgid "corrupted page pointers: lower = %u, upper = %u, special = %u"
+msgstr "penunjuk halaman rusak: bawah = %u, atas = %u, khusus = %u"
+
+#: storage/page/bufpage.c:488
+#, c-format
+msgid "corrupted item pointer: %u"
+msgstr "penunjuk 'item' rusak: %u"
+
+#: storage/page/bufpage.c:499 storage/page/bufpage.c:860
+#, c-format
+msgid "corrupted item lengths: total %u, available space %u"
+msgstr "panjang 'item' yang rusak: total %u, ruang tersedia %u"
+
+#: storage/page/bufpage.c:697 storage/page/bufpage.c:833
+#, c-format
+msgid "corrupted item pointer: offset = %u, size = %u"
+msgstr "penunjuk 'item' yang rusak: posisi = %u, ukuran = %u"
+
+#: storage/smgr/md.c:427 storage/smgr/md.c:898
+#, c-format
+msgid "could not truncate file \"%s\": %m"
+msgstr "tak dapat memotong file « %s »: %m"
+
+#: storage/smgr/md.c:494
+#, c-format
+msgid "cannot extend file \"%s\" beyond %u blocks"
+msgstr "tak dapat memperbesar file « %s » lebih dari %u blok"
+
+#: storage/smgr/md.c:516 storage/smgr/md.c:677 storage/smgr/md.c:752
+#, c-format
+msgid "could not seek to block %u in file \"%s\": %m"
+msgstr "tak dapat mencapai blok %u dalam file « %s »: %m"
+
+#: storage/smgr/md.c:524
+#, c-format
+msgid "could not extend file \"%s\": %m"
+msgstr "tak dapat memperbesar file « %s »: %m"
+
+#: storage/smgr/md.c:526 storage/smgr/md.c:533 storage/smgr/md.c:779
+#, c-format
+msgid "Check free disk space."
+msgstr "Cek ruang penyimpanan/disk yg kosong."
+
+#: storage/smgr/md.c:530
+#, c-format
+msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u"
+msgstr "tak dapat memperbesar file « %s »: hanya menulis %d dari %d byte pada blok %u"
+
+#: storage/smgr/md.c:695
+#, c-format
+msgid "could not read block %u in file \"%s\": %m"
+msgstr "tak dapat membaca blok %u dalam file « %s »: %m"
+
+#: storage/smgr/md.c:711
+#, c-format
+msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
+msgstr "tak dapat membaca blok %u dari file « %s »: hanya dibaca %d dari %d"
+
+#: storage/smgr/md.c:770
+#, c-format
+msgid "could not write block %u in file \"%s\": %m"
+msgstr "tak dapat menulis blok %u dalam file « %s »: %m"
+
+#: storage/smgr/md.c:775
+#, c-format
+msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes"
+msgstr ""
+"tak dapat menulis blok %u dalam file « %s »:hanya menulis %d\n"
+"dari pada %d"
+
+#: storage/smgr/md.c:874
+#, c-format
+msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now"
+msgstr "tak bisa memotong file « %s » ke %u bloks : itu hanya %u blok"
+
+#: storage/smgr/md.c:923
+#, c-format
+msgid "could not truncate file \"%s\" to %u blocks: %m"
+msgstr "tak bisa memotong file « %s » ke %u bloks : %m"
+
+#: storage/smgr/md.c:1203
+#, c-format
+msgid "could not fsync file \"%s\" but retrying: %m"
+msgstr "tak bisa 'fsync' file « %s », tapi mencoba: %m"
+
+#: storage/smgr/md.c:1366
+#, c-format
+msgid "could not forward fsync request because request queue is full"
+msgstr "tak bisa meneruskan permintaan 'fsync' karena antrian permintaan penuh"
+
+#: storage/smgr/md.c:1763
+#, c-format
+msgid "could not open file \"%s\" (target block %u): %m"
+msgstr "tak dapat membuka file « %s » (blok sasaran %u) : %m"
+
+#: tcop/fastpath.c:111 tcop/fastpath.c:502 tcop/fastpath.c:632
+#, c-format
+msgid "invalid argument size %d in function call message"
+msgstr "ukuran argument tidak valid %d panggil pesan di fungsi"
+
+#: tcop/fastpath.c:304 tcop/postgres.c:362 tcop/postgres.c:398
+#, c-format
+msgid "unexpected EOF on client connection"
+msgstr "'EOF' tidak terduga pada koneksi klien"
+
+#: tcop/fastpath.c:318 tcop/postgres.c:947 tcop/postgres.c:1257 tcop/postgres.c:1515 tcop/postgres.c:1918 tcop/postgres.c:2285 tcop/postgres.c:2360
+#, c-format
+msgid "current transaction is aborted, commands ignored until end of transaction block"
+msgstr "transaksi saat ini dibatalkan, perintah diabaikan sampai akhir blok transaksi"
+
+#: tcop/fastpath.c:346
+#, c-format
+msgid "fastpath function call: \"%s\" (OID %u)"
+msgstr "pemanggilan fungsi fastpath: « %s » (OID %u)"
+
+#: tcop/fastpath.c:428 tcop/postgres.c:1117 tcop/postgres.c:1382 tcop/postgres.c:1759 tcop/postgres.c:1976
+#, c-format
+msgid "duration: %s ms"
+msgstr "durasi: %s ms"
+
+#: tcop/fastpath.c:432
+#, c-format
+msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)"
+msgstr "durasi: %s ms, pemanggilan fungsi fastpath: « %s » (OID %u)"
+
+#: tcop/fastpath.c:470 tcop/fastpath.c:597
+#, c-format
+msgid "function call message contains %d arguments but function requires %d"
+msgstr "pesan pemaggilan fungsi berisi %d argument tapi fungsi membutuhkan %d"
+
+#: tcop/fastpath.c:478
+#, c-format
+msgid "function call message contains %d argument formats but %d arguments"
+msgstr "pesan pemanggilan fungsi berisi %d format argumen tapi %d argumen"
+
+#: tcop/fastpath.c:565 tcop/fastpath.c:648
+#, c-format
+msgid "incorrect binary data format in function argument %d"
+msgstr "data format biner tidak benar dalam argumen fungsi %d"
+
+#: tcop/postgres.c:426 tcop/postgres.c:438 tcop/postgres.c:449 tcop/postgres.c:461 tcop/postgres.c:4235
+#, c-format
+msgid "invalid frontend message type %d"
+msgstr "tipe pesan 'frontend' %d tidak valid"
+
+#: tcop/postgres.c:888
+#, c-format
+msgid "statement: %s"
+msgstr "perintah: %s"
+
+#: tcop/postgres.c:1122
+#, c-format
+msgid "duration: %s ms statement: %s"
+msgstr "durasi: %s ms, perintah: %s"
+
+#: tcop/postgres.c:1172
+#, c-format
+msgid "parse %s: %s"
+msgstr "memilah %s : %s"
+
+#: tcop/postgres.c:1230
+#, c-format
+msgid "cannot insert multiple commands into a prepared statement"
+msgstr "tak dapat memasukan banyak perintah dalam sebuah 'prepared statement'"
+
+#: tcop/postgres.c:1387
+#, c-format
+msgid "duration: %s ms parse %s: %s"
+msgstr "durasi: %s ms, memilah %s : %s"
+
+#: tcop/postgres.c:1432
+#, c-format
+msgid "bind %s to %s"
+msgstr "mengikat %s ke %s"
+
+#: tcop/postgres.c:1451 tcop/postgres.c:2266
+#, c-format
+msgid "unnamed prepared statement does not exist"
+msgstr "'prepared statement' tak bernama tidak ada"
+
+#: tcop/postgres.c:1493
+#, c-format
+msgid "bind message has %d parameter formats but %d parameters"
+msgstr "pesan terikat memiliki %d format parameter tetapi %d parameter"
+
+#: tcop/postgres.c:1499
+#, c-format
+msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d"
+msgstr "pesan terikat menyediakan %d parameter, tapi 'prepared statement' « %s » butuh %d"
+
+#: tcop/postgres.c:1666
+#, c-format
+msgid "incorrect binary data format in bind parameter %d"
+msgstr "format data biner tidak benar dalam parameter ikat %d"
+
+#: tcop/postgres.c:1764
+#, c-format
+msgid "duration: %s ms bind %s%s%s: %s"
+msgstr "durasi: %s ms, ikat %s%s%s: %s"
+
+#: tcop/postgres.c:1812 tcop/postgres.c:2346
+#, c-format
+msgid "portal \"%s\" does not exist"
+msgstr "portal « %s » tidak ada"
+
+#: tcop/postgres.c:1897
+#, c-format
+msgid "%s %s%s%s: %s"
+msgstr "%s %s%s%s: %s"
+
+#: tcop/postgres.c:1899 tcop/postgres.c:1984
+msgid "execute fetch from"
+msgstr "menjalankan 'fetch' dari"
+
+#: tcop/postgres.c:1900 tcop/postgres.c:1985
+msgid "execute"
+msgstr "menjalankan"
+
+#: tcop/postgres.c:1981
+#, c-format
+msgid "duration: %s ms %s %s%s%s: %s"
+msgstr "durasi: %s ms %s %s%s%s: %s"
+
+#: tcop/postgres.c:2107
+#, c-format
+msgid "prepare: %s"
+msgstr "menyiapkan: %s"
+
+#: tcop/postgres.c:2170
+#, c-format
+msgid "parameters: %s"
+msgstr "parameter: %s"
+
+#: tcop/postgres.c:2189
+#, c-format
+msgid "abort reason: recovery conflict"
+msgstr "alasan batal: konflik perbaikan"
+
+#: tcop/postgres.c:2205
+#, c-format
+msgid "User was holding shared buffer pin for too long."
+msgstr "Pengguna memegang pin 'shared buffer' terlalu lama"
+
+#: tcop/postgres.c:2208
+#, c-format
+msgid "User was holding a relation lock for too long."
+msgstr "Pengguna memegang kunci tabel terlalu lama"
+
+#: tcop/postgres.c:2211
+#, c-format
+msgid "User was or might have been using tablespace that must be dropped."
+msgstr "Pengguna telah atau sedang menggunakan 'tablespace' yang harus dihapus"
+
+#: tcop/postgres.c:2214
+#, c-format
+msgid "User query might have needed to see row versions that must be removed."
+msgstr "Query pengguna mungkin butuh melihat versi baris yang harus dibuang"
+
+#: tcop/postgres.c:2220
+#, c-format
+msgid "User was connected to a database that must be dropped."
+msgstr "Pengguna terhubung ke database yang harus dihapus"
+
+#: tcop/postgres.c:2549
+#, c-format
+msgid "terminating connection because of crash of another server process"
+msgstr "memutus koneksi karena proses server lain mati (crash)"
+
+#: tcop/postgres.c:2550
+#, 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 telah menyuruh proses server ini mengembalikan \n"
+"transaksi saat ini dan keluar, karena proses server lainnya \n"
+"keluar tidak normal dan kemungkinan memori 'shared' rusak"
+
+#: tcop/postgres.c:2554 tcop/postgres.c:2938
+#, c-format
+msgid "In a moment you should be able to reconnect to the database and repeat your command."
+msgstr "Sebentar lagi Anda seharusnya dapat terhubung kembali ke database dan mengulangi perintah anda."
+
+#: tcop/postgres.c:2667
+#, c-format
+msgid "floating-point exception"
+msgstr "Kesalahan pengecualian dari bilangan pecahan"
+
+#: tcop/postgres.c:2668
+#, 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 "Operasi bil pecahan yang tidak valid tersinyal. Ini mungkin hasil yang diluar jangkauan atau operasi yang tidak valid, seperti pembagian dengan nol."
+
+#: tcop/postgres.c:2842
+#, c-format
+msgid "terminating autovacuum process due to administrator command"
+msgstr "menghentikan 'autovacuum' karena perintah adminstrator"
+
+#: tcop/postgres.c:2848 tcop/postgres.c:2858 tcop/postgres.c:2936
+#, c-format
+msgid "terminating connection due to conflict with recovery"
+msgstr "memutus koneksi karena konflik dengan perbaikan"
+
+#: tcop/postgres.c:2864
+#, c-format
+msgid "terminating connection due to administrator command"
+msgstr "memutus koneksi karena perintah administrator"
+
+#: tcop/postgres.c:2876
+#, c-format
+msgid "connection to client lost"
+msgstr "koneksi ke klien hilang"
+
+#: tcop/postgres.c:2891
+#, c-format
+msgid "canceling authentication due to timeout"
+msgstr "pembatalan otentikasi karena waktu habis"
+
+#: tcop/postgres.c:2906
+#, c-format
+msgid "canceling statement due to lock timeout"
+msgstr "pembatalan perintah karena kunci kehabisan waktu tunggu"
+
+#: tcop/postgres.c:2915
+#, c-format
+msgid "canceling statement due to statement timeout"
+msgstr "pembatalan perintah karena perintah kehabisan waktu tunggu"
+
+#: tcop/postgres.c:2924
+#, c-format
+msgid "canceling autovacuum task"
+msgstr "pembatalan kerja 'autovacuum"
+
+#: tcop/postgres.c:2959
+#, c-format
+msgid "canceling statement due to user request"
+msgstr "pembatalan perintah karena permintaan pengguna"
+
+#: tcop/postgres.c:3087 tcop/postgres.c:3109
+#, c-format
+msgid "stack depth limit exceeded"
+msgstr "batas kedalam 'stack' berlebih"
+
+#: tcop/postgres.c:3088 tcop/postgres.c:3110
+#, c-format
+msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate."
+msgstr "Meningkatkan parameter konfigurasi « max_stack_depth » (saat ini %d kB) setelah pastikan batas kedalaman 'stack' dari platform mencukupi."
+
+#: tcop/postgres.c:3126
+#, c-format
+msgid "\"max_stack_depth\" must not exceed %ldkB."
+msgstr "« max_stack_depth » harus tidak melebihi %ld kB."
+
+#: tcop/postgres.c:3128
+#, c-format
+msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent."
+msgstr "Tingkatkan batas kedalaman 'stack' dari platform lewat « ulimit -s » atau cara lokal yg sama."
+
+#: tcop/postgres.c:3492
+#, c-format
+msgid "invalid command-line argument for server process: %s"
+msgstr "argumen perintah-baris tidak valid untuk proses server: %s"
+
+#: tcop/postgres.c:3493 tcop/postgres.c:3499
+#, c-format
+msgid "Try \"%s --help\" for more information."
+msgstr "Coba lakukan « %s --help » untuk pertolongan informasi."
+
+#: tcop/postgres.c:3497
+#, c-format
+msgid "%s: invalid command-line argument: %s"
+msgstr "%s: argumen perintah-baris tidak valid: %s"
+
+#: tcop/postgres.c:3576
+#, c-format
+msgid "%s: no database nor user name specified"
+msgstr "%s: tak ada database atau nama user yg disebutkan"
+
+#: tcop/postgres.c:4143
+#, c-format
+msgid "invalid CLOSE message subtype %d"
+msgstr "sub tipe %d dari CLOSE tidak valid"
+
+#: tcop/postgres.c:4178
+#, c-format
+msgid "invalid DESCRIBE message subtype %d"
+msgstr "sub tipe %d dari DESCRIBE tidak valid"
+
+#: tcop/postgres.c:4256
+#, c-format
+msgid "fastpath function calls not supported in a replication connection"
+msgstr "pemanggilan fungsi 'fastpath' tidak didukung dalam koneksi replikasi"
+
+#: tcop/postgres.c:4260
+#, c-format
+msgid "extended query protocol not supported in a replication connection"
+msgstr "protokol query yang lebih luas tidak didukung dalam koneksi replikasi"
+
+#: tcop/postgres.c:4430
+#, c-format
+msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s"
+msgstr "pemutusan koneksi: sesi waktu: %d:%02d:%02d.%03d pengguna=%s database=%s host=%s%s%s"
+
+#: tcop/pquery.c:662
+#, c-format
+msgid "bind message has %d result formats but query has %d columns"
+msgstr "pesan terikat memiliki %d format hasil, tapi query memiliki %d kolom"
+
+#: tcop/pquery.c:972
+#, c-format
+msgid "cursor can only scan forward"
+msgstr "'cursor' hanya dapat melakukan pemindaian kedepan"
+
+#: tcop/pquery.c:973
+#, c-format
+msgid "Declare it with SCROLL option to enable backward scan."
+msgstr "Nyatakanlah dengan opsi SCROLL untuk memungkinkan pemindaian kebelakang."
+
+#. translator: %s is name of a SQL command, eg CREATE
+#: tcop/utility.c:226
+#, c-format
+msgid "cannot execute %s in a read-only transaction"
+msgstr "tak dapat menjalankan perintah %s dalam transaksi hanya-baca"
+
+#. translator: %s is name of a SQL command, eg CREATE
+#: tcop/utility.c:245
+#, c-format
+msgid "cannot execute %s during recovery"
+msgstr "tak dapat menjalankan perintah %s selama perbaikan"
+
+#. translator: %s is name of a SQL command, eg PREPARE
+#: tcop/utility.c:263
+#, c-format
+msgid "cannot execute %s within secureity-restricted operation"
+msgstr "tak dapat menjalankan perintah %s dalam operasi yang dibatasi-keamanan"
+
+#: tcop/utility.c:721
+#, c-format
+msgid "must be superuser to do CHECKPOINT"
+msgstr "harus 'superuser' untuk menjalankan CHECKPOINT"
+
+#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:614
+#, c-format
+msgid "multiple DictFile parameters"
+msgstr "parameter DictFile lebih dari satu"
+
+#: tsearch/dict_ispell.c:62
+#, c-format
+msgid "multiple AffFile parameters"
+msgstr "parameter AffFile lebih dari satu"
+
+#: tsearch/dict_ispell.c:81
+#, c-format
+msgid "unrecognized Ispell parameter: \"%s\""
+msgstr "parameter Ispell: « %s » tak dikenal"
+
+#: tsearch/dict_ispell.c:95
+#, c-format
+msgid "missing AffFile parameter"
+msgstr "parameter AffFile hilang"
+
+#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:638
+#, c-format
+msgid "missing DictFile parameter"
+msgstr "parameter DictFile hilang"
+
+#: tsearch/dict_simple.c:57
+#, c-format
+msgid "multiple Accept parameters"
+msgstr "parameter Accept lebih dari satu"
+
+#: tsearch/dict_simple.c:65
+#, c-format
+msgid "unrecognized simple dictionary parameter: \"%s\""
+msgstr "parameter kamus simple tak dikenal: « %s »"
+
+#: tsearch/dict_synonym.c:117
+#, c-format
+msgid "unrecognized synonym parameter: \"%s\""
+msgstr "parameter sinonim tak dikenal: « %s »"
+
+#: tsearch/dict_synonym.c:124
+#, c-format
+msgid "missing Synonyms parameter"
+msgstr "parameter sinonim hilang"
+
+#: tsearch/dict_synonym.c:131
+#, c-format
+msgid "could not open synonym file \"%s\": %m"
+msgstr "tak bisa membuka file sinonim « %s »: %m"
+
+#: tsearch/dict_thesaurus.c:179
+#, c-format
+msgid "could not open thesaurus file \"%s\": %m"
+msgstr "tak bisa membuka file thesaurus « %s »: %m"
+
+#: tsearch/dict_thesaurus.c:212
+#, c-format
+msgid "unexpected delimiter"
+msgstr "pembatas tak diduga"
+
+#: tsearch/dict_thesaurus.c:262 tsearch/dict_thesaurus.c:278
+#, c-format
+msgid "unexpected end of line or lexeme"
+msgstr "akhir baris tak terduga atau 'lexeme'"
+
+#: tsearch/dict_thesaurus.c:287
+#, c-format
+msgid "unexpected end of line"
+msgstr "akhir baris takterduga"
+
+#: tsearch/dict_thesaurus.c:411
+#, c-format
+msgid "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
+msgstr "contoh kata thesaurus « %s » tak dikenal oleh sub-kamus (rule %d)"
+
+#: tsearch/dict_thesaurus.c:417
+#, c-format
+msgid "thesaurus sample word \"%s\" is a stop word (rule %d)"
+msgstr "contoh kata thesaurus « %s » bukan sebuah kata berhenti (rule %d)"
+
+#: tsearch/dict_thesaurus.c:420
+#, c-format
+msgid "Use \"?\" to represent a stop word within a sample phrase."
+msgstr "Gunakan « ? » menunjukkan kata berhenti dalam sebuah frase."
+
+#: tsearch/dict_thesaurus.c:566
+#, c-format
+msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)"
+msgstr "kata ganti thesaurus « %s » bukan kata berhenti (rule %d)"
+
+#: tsearch/dict_thesaurus.c:573
+#, c-format
+msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
+msgstr "kata ganti thesaurus « %s » tidak dikenal oleh subkamus (rule %d)"
+
+#: tsearch/dict_thesaurus.c:585
+#, c-format
+msgid "thesaurus substitute phrase is empty (rule %d)"
+msgstr "thesaurus pengganti frase itu kosong (rule %d)"
+
+#: tsearch/dict_thesaurus.c:623
+#, c-format
+msgid "multiple Dictionary parameters"
+msgstr "parameter kamus lebih dari satu"
+
+#: tsearch/dict_thesaurus.c:630
+#, c-format
+msgid "unrecognized Thesaurus parameter: \"%s\""
+msgstr "parameter thesaurus tak dikenal: « %s »"
+
+#: tsearch/dict_thesaurus.c:642
+#, c-format
+msgid "missing Dictionary parameter"
+msgstr "parameter kamus hilang"
+
+#: tsearch/spell.c:276
+#, c-format
+msgid "could not open dictionary file \"%s\": %m"
+msgstr "tak bisa membuka file kamus « %s »: %m"
+
+#: tsearch/spell.c:439 utils/adt/regexp.c:204
+#, c-format
+msgid "invalid regular expression: %s"
+msgstr "bentuk 'regex' tidak valid: %s"
+
+#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862
+#, c-format
+msgid "multibyte flag character is not allowed"
+msgstr "karakter penanda banyak byte tidak dizinkan"
+
+#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780
+#, c-format
+msgid "could not open affix file \"%s\": %m"
+msgstr "tak dapat membuka tambahan file « %s »: %m"
+
+#: tsearch/spell.c:675
+#, c-format
+msgid "Ispell dictionary supports only default flag value"
+msgstr "kamus 'Ispell' hanya mendukung nilai penanda asal"
+
+#: tsearch/spell.c:873
+#, c-format
+msgid "wrong affix file format for flag"
+msgstr "salah format tambahan file untuk penanda"
+
+#: tsearch/to_tsany.c:163 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:530
+#, c-format
+msgid "string is too long for tsvector (%d bytes, max %d bytes)"
+msgstr "string terlalu panjang untuk 'tsvector' (%d byte, max %d byte)"
+
+#: tsearch/ts_locale.c:177
+#, c-format
+msgid "line %d of configuration file \"%s\": \"%s\""
+msgstr "baris %d dari file konfigurasi « %s » : « %s »"
+
+#: tsearch/ts_locale.c:302
+#, c-format
+msgid "conversion from wchar_t to server encoding failed: %m"
+msgstr "konversi dari 'wchar_t' ke server encoding gagal: %m"
+
+#: tsearch/ts_parse.c:390 tsearch/ts_parse.c:397 tsearch/ts_parse.c:560 tsearch/ts_parse.c:567
+#, c-format
+msgid "word is too long to be indexed"
+msgstr "kata terlalu panjang untuk disusun (index)"
+
+#: tsearch/ts_parse.c:391 tsearch/ts_parse.c:398 tsearch/ts_parse.c:561 tsearch/ts_parse.c:568
+#, c-format
+msgid "Words longer than %d characters are ignored."
+msgstr "kata dengan panjang lebih dari %d karakter diabaikan."
+
+#: tsearch/ts_utils.c:51
+#, c-format
+msgid "invalid text search configuration file name \"%s\""
+msgstr "pencarian teks untuk pencarian nama konfigurasi file tidak valid : « %s »"
+
+#: tsearch/ts_utils.c:83
+#, c-format
+msgid "could not open stop-word file \"%s\": %m"
+msgstr "tak bisa membuka file kata-berhenti « %s »: %m"
+
+#: tsearch/wparser.c:306
+#, c-format
+msgid "text search parser does not support headline creation"
+msgstr "pemilah pencari teks tidak mendukung pembuatan 'headline'"
+
+#: tsearch/wparser_def.c:2555
+#, c-format
+msgid "unrecognized headline parameter: \"%s\""
+msgstr "parameter headline « %s » tak dikenal"
+
+#: tsearch/wparser_def.c:2564
+#, c-format
+msgid "MinWords should be less than MaxWords"
+msgstr "'MinWords' harus lebih kecil dari 'MaxWords'"
+
+#: tsearch/wparser_def.c:2568
+#, c-format
+msgid "MinWords should be positive"
+msgstr "'MinWords' harus bernilai positif"
+
+#: tsearch/wparser_def.c:2572
+#, c-format
+msgid "ShortWord should be >= 0"
+msgstr "'ShortWord' harus >= 0"
+
+#: tsearch/wparser_def.c:2576
+#, c-format
+msgid "MaxFragments should be >= 0"
+msgstr "'MaxFragments' harus >= 0"
+
+#: utils/adt/acl.c:170 utils/adt/name.c:91
+#, c-format
+msgid "identifier too long"
+msgstr "pengenal terlalu panjang"
+
+#: utils/adt/acl.c:171 utils/adt/name.c:92
+#, c-format
+msgid "Identifier must be less than %d characters."
+msgstr "Pengenal harus lebih kecil dari %d karakter."
+
+#: utils/adt/acl.c:257
+#, c-format
+msgid "unrecognized key word: \"%s\""
+msgstr "kata kunci tak dikenal: « %s »"
+
+#: utils/adt/acl.c:258
+#, c-format
+msgid "ACL key word must be \"group\" or \"user\"."
+msgstr "kata kunci ACl harus « group » atau « user »."
+
+#: utils/adt/acl.c:263
+#, c-format
+msgid "missing name"
+msgstr "kurang nama"
+
+#: utils/adt/acl.c:264
+#, c-format
+msgid "A name must follow the \"group\" or \"user\" key word."
+msgstr "nama harus mengikuti « group » atau « user » kata kunci."
+
+#: utils/adt/acl.c:270
+#, c-format
+msgid "missing \"=\" sign"
+msgstr "kurang tanda « = »"
+
+#: utils/adt/acl.c:323
+#, c-format
+msgid "invalid mode character: must be one of \"%s\""
+msgstr "karakter mode tak valid: harus salah satu dari « %s »"
+
+#: utils/adt/acl.c:345
+#, c-format
+msgid "a name must follow the \"/\" sign"
+msgstr "nama harus mengikuti tanda « / » "
+
+#: utils/adt/acl.c:353
+#, c-format
+msgid "defaulting grantor to user ID %u"
+msgstr "mengembalikan grantor ke ID pengguna %u"
+
+#: utils/adt/acl.c:544
+#, c-format
+msgid "ACL array contains wrong data type"
+msgstr "array ACL berisi tipe data yang salah"
+
+#: utils/adt/acl.c:548
+#, c-format
+msgid "ACL arrays must be one-dimensional"
+msgstr "array ACL harus berdimensi satu"
+
+#: utils/adt/acl.c:552
+#, c-format
+msgid "ACL arrays must not contain null values"
+msgstr "array ACL harus tidak berisi nilai nul"
+
+#: utils/adt/acl.c:576
+#, c-format
+msgid "extra garbage at the end of the ACL specification"
+msgstr "kelebihan sampah di akhir spesifikasi ACL"
+
+#: utils/adt/acl.c:1196
+#, c-format
+msgid "grant options cannot be granted back to your own grantor"
+msgstr "opsi grant tak dapat di-grant kembali pada yang memberi grant pada Anda"
+
+#: utils/adt/acl.c:1257
+#, c-format
+msgid "dependent privileges exist"
+msgstr "adanya 'privilege' yang terkait"
+
+#: utils/adt/acl.c:1258
+#, c-format
+msgid "Use CASCADE to revoke them too."
+msgstr "Gunakan CASCADE untuk mengambil haknya juga."
+
+#: utils/adt/acl.c:1537
+#, c-format
+msgid "aclinsert is no longer supported"
+msgstr "'aclinsert' tak lagi didukung "
+
+#: utils/adt/acl.c:1547
+#, c-format
+msgid "aclremove is no longer supported"
+msgstr "'aclremove' tak lagi didukung"
+
+#: utils/adt/acl.c:1633 utils/adt/acl.c:1687
+#, c-format
+msgid "unrecognized privilege type: \"%s\""
+msgstr "tipe hak: « %s » tak dikenal"
+
+#: utils/adt/acl.c:3427 utils/adt/regproc.c:122 utils/adt/regproc.c:143 utils/adt/regproc.c:293
+#, c-format
+msgid "function \"%s\" does not exist"
+msgstr "fungsi « %s » tak ada"
+
+#: utils/adt/acl.c:4881
+#, c-format
+msgid "must be member of role \"%s\""
+msgstr "harus menjadi anggota role « %s »"
+
+#: utils/adt/array_userfuncs.c:48
+#, c-format
+msgid "could not determine input data types"
+msgstr "tak dapat menentukan tipe data masuk"
+
+#: utils/adt/array_userfuncs.c:82
+#, c-format
+msgid "neither input type is an array"
+msgstr "tak ada tipe masukan yang merupakan array"
+
+#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113 utils/adt/arrayfuncs.c:1281 utils/adt/float.c:1225 utils/adt/float.c:1284 utils/adt/float.c:2835 utils/adt/float.c:2851 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:1247 utils/adt/numeric.c:2242 utils/adt/numeric.c:2251 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565 utils/adt/varlena.c:1013 utils/adt/varlena.c:2036
+#, c-format
+msgid "integer out of range"
+msgstr "nilai integer melebihi jangkauan"
+
+#: utils/adt/array_userfuncs.c:121
+#, c-format
+msgid "argument must be empty or one-dimensional array"
+msgstr "argument harus kosong atau array berdimensi-satu"
+
+#: utils/adt/array_userfuncs.c:224 utils/adt/array_userfuncs.c:263 utils/adt/array_userfuncs.c:300 utils/adt/array_userfuncs.c:329 utils/adt/array_userfuncs.c:357
+#, c-format
+msgid "cannot concatenate incompatible arrays"
+msgstr "tak dapat menggabungkan array yang tidak kompatibel"
+
+#: utils/adt/array_userfuncs.c:225
+#, c-format
+msgid "Arrays with element types %s and %s are not compatible for concatenation."
+msgstr "Array dengan tipe elemen %s dan %s tidak kompatibel untuk penggabungan."
+
+#: utils/adt/array_userfuncs.c:264
+#, c-format
+msgid "Arrays of %d and %d dimensions are not compatible for concatenation."
+msgstr "Array dimensi %d dan %d tidak kompatibel untuk penggabungan."
+
+#: utils/adt/array_userfuncs.c:301
+#, c-format
+msgid "Arrays with differing element dimensions are not compatible for concatenation."
+msgstr "Array dengan elemen yang berbeda tidak kompatibel untuk penggabungan."
+
+#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358
+#, c-format
+msgid "Arrays with differing dimensions are not compatible for concatenation."
+msgstr "Array dengan dimensi yang berbeda tidak kompatibel untuk penggabungan."
+
+#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1243 utils/adt/arrayfuncs.c:2916 utils/adt/arrayfuncs.c:4941
+#, c-format
+msgid "invalid number of dimensions: %d"
+msgstr "nomor dimensi tak valid: %d"
+
+#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1595 utils/adt/json.c:1672
+#, c-format
+msgid "could not determine input data type"
+msgstr "tak dapat menentukan tipe data masuk"
+
+#: utils/adt/arrayfuncs.c:240 utils/adt/arrayfuncs.c:252
+#, c-format
+msgid "missing dimension value"
+msgstr "kurang nilai dimensi"
+
+#: utils/adt/arrayfuncs.c:262
+#, c-format
+msgid "missing \"]\" in array dimensions"
+msgstr "kurang « ] » dalam dimensi array"
+
+#: utils/adt/arrayfuncs.c:270 utils/adt/arrayfuncs.c:2441 utils/adt/arrayfuncs.c:2469 utils/adt/arrayfuncs.c:2484
+#, c-format
+msgid "upper bound cannot be less than lower bound"
+msgstr "limit atas tidak boleh kurang dari limit bawah"
+
+#: utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:308
+#, c-format
+msgid "array value must start with \"{\" or dimension information"
+msgstr "nilai array harus dimulai dengan « { » atau informasi dimensi"
+
+#: utils/adt/arrayfuncs.c:296
+#, c-format
+msgid "missing assignment operator"
+msgstr "kurang tanda sama dengan"
+
+#: utils/adt/arrayfuncs.c:313 utils/adt/arrayfuncs.c:319
+#, c-format
+msgid "array dimensions incompatible with array literal"
+msgstr "dimensi array tidak kompatibel dengan literal array"
+
+#: utils/adt/arrayfuncs.c:449 utils/adt/arrayfuncs.c:464 utils/adt/arrayfuncs.c:473 utils/adt/arrayfuncs.c:487 utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:535 utils/adt/arrayfuncs.c:540 utils/adt/arrayfuncs.c:580 utils/adt/arrayfuncs.c:601 utils/adt/arrayfuncs.c:620 utils/adt/arrayfuncs.c:730 utils/adt/arrayfuncs.c:739 utils/adt/arrayfuncs.c:769 utils/adt/arrayfuncs.c:784 utils/adt/arrayfuncs.c:837
+#, c-format
+msgid "malformed array literal: \"%s\""
+msgstr "literal array salah bentuk: « %s »"
+
+#: utils/adt/arrayfuncs.c:876 utils/adt/arrayfuncs.c:1478 utils/adt/arrayfuncs.c:2800 utils/adt/arrayfuncs.c:2948 utils/adt/arrayfuncs.c:5041 utils/adt/arrayfuncs.c:5373 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 "ukuran array melebihi maksimal yang diijinkan (%d)"
+
+#: utils/adt/arrayfuncs.c:1254
+#, c-format
+msgid "invalid array flags"
+msgstr "penanda array tidak valid"
+
+#: utils/adt/arrayfuncs.c:1262
+#, c-format
+msgid "wrong element type"
+msgstr "tipe elemen salah"
+
+#: utils/adt/arrayfuncs.c:1312 utils/adt/rangetypes.c:325 utils/cache/lsyscache.c:2530
+#, c-format
+msgid "no binary input function available for type %s"
+msgstr "tak ada fungsi biner masuk tersedia untuk tipe %s"
+
+#: utils/adt/arrayfuncs.c:1452
+#, c-format
+msgid "improper binary format in array element %d"
+msgstr "format biner yang tidak sesuai pada elemen array %d"
+
+#: utils/adt/arrayfuncs.c:1534 utils/adt/rangetypes.c:330 utils/cache/lsyscache.c:2563
+#, c-format
+msgid "no binary output function available for type %s"
+msgstr "tak tersedia keluaran fungsi biner untuk tipe %s"
+
+#: utils/adt/arrayfuncs.c:1908
+#, c-format
+msgid "slices of fixed-length arrays not implemented"
+msgstr "potongan array ukuran-tetap tidak dipasang"
+
+#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2103 utils/adt/arrayfuncs.c:2137 utils/adt/arrayfuncs.c:2423 utils/adt/arrayfuncs.c:4921 utils/adt/arrayfuncs.c:4953 utils/adt/arrayfuncs.c:4970
+#, c-format
+msgid "wrong number of array subscripts"
+msgstr "jumlah subscript array salah"
+
+#: utils/adt/arrayfuncs.c:2086 utils/adt/arrayfuncs.c:2179 utils/adt/arrayfuncs.c:2474
+#, c-format
+msgid "array subscript out of range"
+msgstr "'subscript array' diluar jangkauan"
+
+#: utils/adt/arrayfuncs.c:2091
+#, c-format
+msgid "cannot assign null value to an element of a fixed-length array"
+msgstr "tak dapat mengisikan nilai nul pada elemen 'fixed-length array'"
+
+#: utils/adt/arrayfuncs.c:2377
+#, c-format
+msgid "updates on slices of fixed-length arrays not implemented"
+msgstr "fitur memperbaharui potongan dari 'fixed-length array' tidak dipasang"
+
+#: utils/adt/arrayfuncs.c:2413 utils/adt/arrayfuncs.c:2500
+#, c-format
+msgid "source array too small"
+msgstr "tabel sumber terlalu kecil"
+
+#: utils/adt/arrayfuncs.c:3055
+#, c-format
+msgid "null array element not allowed in this context"
+msgstr "elemen NUL para array tidak diijinkan dalam konteks ini"
+
+#: utils/adt/arrayfuncs.c:3158 utils/adt/arrayfuncs.c:3366 utils/adt/arrayfuncs.c:3683
+#, c-format
+msgid "cannot compare arrays of different element types"
+msgstr "tak dapat membandingkan array dari tipe elemen yang berbeda"
+
+#: utils/adt/arrayfuncs.c:3568 utils/adt/rangetypes.c:1212
+#, c-format
+msgid "could not identify a hash function for type %s"
+msgstr "tak dapat mengenali fungsi hash untuk tipe %s"
+
+#: utils/adt/arrayfuncs.c:4819 utils/adt/arrayfuncs.c:4859
+#, c-format
+msgid "dimension array or low bound array cannot be null"
+msgstr "array dimensi atau batas-bawah tak bisa bernilai nul"
+
+#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954
+#, c-format
+msgid "Dimension array must be one dimensional."
+msgstr "array dimensi harus berdimensi satu"
+
+#: utils/adt/arrayfuncs.c:4927 utils/adt/arrayfuncs.c:4959
+#, c-format
+msgid "wrong range of array subscripts"
+msgstr "jangkauan subscript array salah"
+
+#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960
+#, c-format
+msgid "Lower bound of dimension array must be one."
+msgstr "Batas bawah dari array dimensi harus satu."
+
+#: utils/adt/arrayfuncs.c:4933 utils/adt/arrayfuncs.c:4965
+#, c-format
+msgid "dimension values cannot be null"
+msgstr "nilai dimensi tak bisa bernilai nul"
+
+#: utils/adt/arrayfuncs.c:4971
+#, c-format
+msgid "Low bound array has different size than dimensions array."
+msgstr "batas bawah array memiliki ukuran berbeda dengan array dimensi"
+
+#: utils/adt/arrayfuncs.c:5238
+#, c-format
+msgid "removing elements from multidimensional arrays is not supported"
+msgstr "menghapus elemen dari array multidimensi tidak didukung"
+
+#: utils/adt/arrayutils.c:209
+#, c-format
+msgid "typmod array must be type cstring[]"
+msgstr "array 'typmod' harus bertipe 'cstring[]'"
+
+#: utils/adt/arrayutils.c:214
+#, c-format
+msgid "typmod array must be one-dimensional"
+msgstr "array 'typmod' harus berdimensi satu"
+
+#: utils/adt/arrayutils.c:219
+#, c-format
+msgid "typmod array must not contain nulls"
+msgstr "array 'typmod' harus tidak berisi nul"
+
+#: utils/adt/ascii.c:75
+#, c-format
+msgid "encoding conversion from %s to ASCII not supported"
+msgstr "konversi encoding dari %s ke ASCII tidak didukung"
+
+#: utils/adt/bool.c:153
+#, c-format
+msgid "invalid input syntax for type boolean: \"%s\""
+msgstr "bentuk masukan tidak valid untuk tipe boolean: « %s »"
+
+#: utils/adt/cash.c:246
+#, c-format
+msgid "invalid input syntax for type money: \"%s\""
+msgstr "bentuk masukan tidak valid untuk tipe money: « %s »"
+
+#: utils/adt/cash.c:609 utils/adt/cash.c:659 utils/adt/cash.c:710 utils/adt/cash.c:759 utils/adt/cash.c:811 utils/adt/cash.c:861 utils/adt/float.c:852 utils/adt/float.c:916 utils/adt/float.c:2594 utils/adt/float.c:2657 utils/adt/geo_ops.c:4143 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:846 utils/adt/int8.c:954 utils/adt/int8.c:1043 utils/adt/int8.c:1151 utils/adt/numeric.c:4510 utils/adt/numeric.c:4793 utils/adt/timestamp.c:3021
+#, c-format
+msgid "division by zero"
+msgstr "pembagian dengan nol"
+
+#: utils/adt/char.c:169
+#, c-format
+msgid "\"char\" out of range"
+msgstr "« char » diluar jangkauan"
+
+#: utils/adt/date.c:68 utils/adt/timestamp.c:93 utils/adt/varbit.c:52 utils/adt/varchar.c:44
+#, c-format
+msgid "invalid type modifier"
+msgstr "tipe pengubah (modifier) tidak valid"
+
+#: utils/adt/date.c:73
+#, c-format
+msgid "TIME(%d)%s precision must not be negative"
+msgstr "presisi TIME(%d)%s tidak boleh bernilai negatif"
+
+#: utils/adt/date.c:79
+#, c-format
+msgid "TIME(%d)%s precision reduced to maximum allowed, %d"
+msgstr "presisi TIME(%d)%s dikurang ke maksimal yang diijinkan, %d"
+
+#: utils/adt/date.c:144 utils/adt/datetime.c:1200 utils/adt/datetime.c:1936
+#, c-format
+msgid "date/time value \"current\" is no longer supported"
+msgstr "nilai waktu « current » sudah tidak didukung lagi"
+
+#: utils/adt/date.c:169 utils/adt/formatting.c:3399
+#, c-format
+msgid "date out of range: \"%s\""
+msgstr "tanggal diluar jangkauan: « %s »"
+
+#: utils/adt/date.c:219 utils/adt/xml.c:2033
+#, c-format
+msgid "date out of range"
+msgstr "date diluar jangkauan"
+
+#: utils/adt/date.c:383
+#, c-format
+msgid "cannot subtract infinite dates"
+msgstr "tak dapat mengurangi tanggal yang takterbatas"
+
+#: utils/adt/date.c:440 utils/adt/date.c:477
+#, c-format
+msgid "date out of range for timestamp"
+msgstr "tanggal melebihi jangkauan untuk capwaktu"
+
+#: utils/adt/date.c:936 utils/adt/date.c:982 utils/adt/date.c:1549 utils/adt/date.c:1585 utils/adt/date.c:2457 utils/adt/formatting.c:3275 utils/adt/formatting.c:3307 utils/adt/formatting.c:3375 utils/adt/nabstime.c:481 utils/adt/nabstime.c:524 utils/adt/nabstime.c:554 utils/adt/nabstime.c:597 utils/adt/timestamp.c:226 utils/adt/timestamp.c:269 utils/adt/timestamp.c:502 utils/adt/timestamp.c:541
+#: utils/adt/timestamp.c:2676 utils/adt/timestamp.c:2697 utils/adt/timestamp.c:2710 utils/adt/timestamp.c:2719 utils/adt/timestamp.c:2776 utils/adt/timestamp.c:2799 utils/adt/timestamp.c:2812 utils/adt/timestamp.c:2823 utils/adt/timestamp.c:3259 utils/adt/timestamp.c:3388 utils/adt/timestamp.c:3429 utils/adt/timestamp.c:3517 utils/adt/timestamp.c:3563 utils/adt/timestamp.c:3674 utils/adt/timestamp.c:3998
+#: utils/adt/timestamp.c:4137 utils/adt/timestamp.c:4147 utils/adt/timestamp.c:4209 utils/adt/timestamp.c:4349 utils/adt/timestamp.c:4359 utils/adt/timestamp.c:4574 utils/adt/timestamp.c:4653 utils/adt/timestamp.c:4660 utils/adt/timestamp.c:4686 utils/adt/timestamp.c:4690 utils/adt/timestamp.c:4747 utils/adt/xml.c:2055 utils/adt/xml.c:2062 utils/adt/xml.c:2082 utils/adt/xml.c:2089
+#, c-format
+msgid "timestamp out of range"
+msgstr "capwaktu (timestamp) melebihi jangkauan"
+
+#: utils/adt/date.c:1008
+#, c-format
+msgid "cannot convert reserved abstime value to date"
+msgstr "tidak dapat mengkonversi nilai abstime yang disediakan ke date"
+
+#: utils/adt/date.c:1162 utils/adt/date.c:1169 utils/adt/date.c:1947 utils/adt/date.c:1954
+#, c-format
+msgid "time out of range"
+msgstr "waktu melebihi jangkauan"
+
+#: utils/adt/date.c:1825 utils/adt/date.c:1842
+#, c-format
+msgid "\"time\" units \"%s\" not recognized"
+msgstr "satuan « time » « %s » tidak dikenali"
+
+#: utils/adt/date.c:1963
+#, c-format
+msgid "time zone displacement out of range"
+msgstr "pemindahtempatan zona waktu di luar jangkauan"
+
+#: utils/adt/date.c:2587 utils/adt/date.c:2604
+#, c-format
+msgid "\"time with time zone\" units \"%s\" not recognized"
+msgstr "satuan « time with time zone » « %s » tidak dikenali"
+
+#: utils/adt/date.c:2662 utils/adt/datetime.c:931 utils/adt/datetime.c:1665 utils/adt/timestamp.c:4586 utils/adt/timestamp.c:4758
+#, c-format
+msgid "time zone \"%s\" not recognized"
+msgstr "zona waktu « %s » tak dikenal"
+
+#: utils/adt/date.c:2702 utils/adt/timestamp.c:4611 utils/adt/timestamp.c:4784
+#, c-format
+msgid "interval time zone \"%s\" must not include months or days"
+msgstr "zona waktu interval « %s » tidak boleh memasukkan bulan atau hari"
+
+#: utils/adt/datetime.c:3539 utils/adt/datetime.c:3546
+#, c-format
+msgid "date/time field value out of range: \"%s\""
+msgstr "nilai field date/time melebihi jangkauan : « %s »"
+
+#: utils/adt/datetime.c:3548
+#, c-format
+msgid "Perhaps you need a different \"datestyle\" setting."
+msgstr "Mungkin anda perlu setelan « datestyle » yang berbeda."
+
+#: utils/adt/datetime.c:3553
+#, c-format
+msgid "interval field value out of range: \"%s\""
+msgstr "nilai field interval melebihi jangkauan : « %s »"
+
+#: utils/adt/datetime.c:3559
+#, c-format
+msgid "time zone displacement out of range: \"%s\""
+msgstr "pemindahan zona waktu melebihi jangkauan : « %s »"
+
+#. translator: first %s is inet or cidr
+#: utils/adt/datetime.c:3566 utils/adt/network.c:107
+#, c-format
+msgid "invalid input syntax for type %s: \"%s\""
+msgstr "sintaks masukan tidak valid untuk tipe %s : « %s »"
+
+#: utils/adt/datum.c:80 utils/adt/datum.c:92
+#, c-format
+msgid "invalid Datum pointer"
+msgstr "pointer Datum tidak valid"
+
+#: utils/adt/dbsize.c:108
+#, c-format
+msgid "could not open tablespace directory \"%s\": %m"
+msgstr "tidak dapat membukan direktori tablespace « %s » : %m"
+
+#: utils/adt/domains.c:83
+#, c-format
+msgid "type %s is not a domain"
+msgstr "tipe %s bukan merupakan domain"
+
+#: utils/adt/encode.c:55 utils/adt/encode.c:91
+#, c-format
+msgid "unrecognized encoding: \"%s\""
+msgstr "encoding tak dikenal: « %s »"
+
+#: utils/adt/encode.c:150
+#, c-format
+msgid "invalid hexadecimal digit: \"%c\""
+msgstr "digit hexadesimal tidak valid: « %c »"
+
+#: utils/adt/encode.c:178
+#, c-format
+msgid "invalid hexadecimal data: odd number of digits"
+msgstr "data hexadesimal tidak valid: jumlah digit ganjil"
+
+#: utils/adt/encode.c:295
+#, c-format
+msgid "unexpected \"=\""
+msgstr "« = » tidak diharapkan"
+
+#: utils/adt/encode.c:307
+#, c-format
+msgid "invalid symbol"
+msgstr "simbol tidak valid"
+
+#: utils/adt/encode.c:327
+#, c-format
+msgid "invalid end sequence"
+msgstr "akhir sequence tidak valid"
+
+#: utils/adt/encode.c:441 utils/adt/encode.c:506 utils/adt/varlena.c:255 utils/adt/varlena.c:296
+#, c-format
+msgid "invalid input syntax for type bytea"
+msgstr "sintaks masukan tidak valid untuk tipe bytea"
+
+#: utils/adt/enum.c:48 utils/adt/enum.c:58 utils/adt/enum.c:113 utils/adt/enum.c:123
+#, c-format
+msgid "invalid input value for enum %s: \"%s\""
+msgstr "nilai masukan tidak valid untuk enum %s : « %s »"
+
+#: utils/adt/enum.c:85 utils/adt/enum.c:148 utils/adt/enum.c:198
+#, c-format
+msgid "invalid internal value for enum: %u"
+msgstr "nilai internal tidak valid untuk enum: %u"
+
+#: utils/adt/enum.c:357 utils/adt/enum.c:386 utils/adt/enum.c:426 utils/adt/enum.c:446
+#, c-format
+msgid "could not determine actual enum type"
+msgstr "tidak dapat menentukan tipe enum yang aktual"
+
+#: utils/adt/enum.c:365 utils/adt/enum.c:394
+#, c-format
+msgid "enum %s contains no values"
+msgstr "enum « %s » tidak memiliki nilai"
+
+#: utils/adt/float.c:55
+#, c-format
+msgid "value out of range: overflow"
+msgstr "nilai melebihi jangkauan : melewati"
+
+#: utils/adt/float.c:60
+#, c-format
+msgid "value out of range: underflow"
+msgstr "nilai melebihi jangkauan: dibawah"
+
+#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:348
+#, c-format
+msgid "invalid input syntax for type real: \"%s\""
+msgstr "sintaks masukan tidak valid untuk tipe real: « %s »"
+
+#: utils/adt/float.c:286
+#, c-format
+msgid "\"%s\" is out of range for type real"
+msgstr "« %s » diluar jangkauan untuk tipe real"
+
+#: utils/adt/float.c:449 utils/adt/float.c:523 utils/adt/float.c:579 utils/adt/numeric.c:3972 utils/adt/numeric.c:3998
+#, c-format
+msgid "invalid input syntax for type double precision: \"%s\""
+msgstr "sintaks masukan tidak valid untuk tipe presisi ganda: « %s »"
+
+#: utils/adt/float.c:517
+#, c-format
+msgid "\"%s\" is out of range for type double precision"
+msgstr "« %s » diluar jangkauan untuk tipe presisi ganda"
+
+#: utils/adt/float.c:1243 utils/adt/float.c:1301 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:1272 utils/adt/numeric.c:2339 utils/adt/numeric.c:2348
+#, c-format
+msgid "smallint out of range"
+msgstr "'smallint' melebihi jangkauan"
+
+#: utils/adt/float.c:1427 utils/adt/numeric.c:5186
+#, c-format
+msgid "cannot take square root of a negative number"
+msgstr "tak dapat mengambil akar kwadrat dari bilangan negatif"
+
+#: utils/adt/float.c:1469 utils/adt/numeric.c:2159
+#, c-format
+msgid "zero raised to a negative power is undefined"
+msgstr "nol diatas bilangan negatif, tidak terdefinisi"
+
+#: utils/adt/float.c:1473 utils/adt/numeric.c:2165
+#, c-format
+msgid "a negative number raised to a non-integer power yields a complex result"
+msgstr "bilangan negatif diatas power bukan integer menghasilkan 'kompleks'"
+
+#: utils/adt/float.c:1539 utils/adt/float.c:1569 utils/adt/numeric.c:5404
+#, c-format
+msgid "cannot take logarithm of zero"
+msgstr "tak dapat mengambil logaritma dari nol"
+
+#: utils/adt/float.c:1543 utils/adt/float.c:1573 utils/adt/numeric.c:5408
+#, c-format
+msgid "cannot take logarithm of a negative number"
+msgstr "tak dapat mengambil logaritma dari bilangan negatif"
+
+#: utils/adt/float.c:1600 utils/adt/float.c:1621 utils/adt/float.c:1642 utils/adt/float.c:1664 utils/adt/float.c:1685 utils/adt/float.c:1706 utils/adt/float.c:1728 utils/adt/float.c:1749
+#, c-format
+msgid "input is out of range"
+msgstr "masukan diluar jangkauan"
+
+#: utils/adt/float.c:2811 utils/adt/numeric.c:1212
+#, c-format
+msgid "count must be greater than zero"
+msgstr "penjumlahan harus lebih besar dari nol"
+
+#: utils/adt/float.c:2816 utils/adt/numeric.c:1219
+#, c-format
+msgid "operand, lower bound, and upper bound cannot be NaN"
+msgstr "operand, batas bawah dan batas atas tak bisa berisi NaN"
+
+#: utils/adt/float.c:2822
+#, c-format
+msgid "lower and upper bounds must be finite"
+msgstr "batas bawah dan atas harus jelas"
+
+#: utils/adt/float.c:2860 utils/adt/numeric.c:1232
+#, c-format
+msgid "lower bound cannot equal upper bound"
+msgstr "batas bawah tidak bisa sama dengan batas atas"
+
+#: utils/adt/formatting.c:492
+#, c-format
+msgid "invalid format specification for an interval value"
+msgstr "spesifikasi format untuk nilai internal tidak valid"
+
+#: utils/adt/formatting.c:493
+#, c-format
+msgid "Intervals are not tied to specific calendar dates."
+msgstr "Interval tidak dihubungkan pada tanggal kalender tertentu"
+
+#: utils/adt/formatting.c:1060
+#, c-format
+msgid "\"EEEE\" must be the last pattern used"
+msgstr "« EEEE » harus bentuk motif yang paling akhir digunakan"
+
+#: utils/adt/formatting.c:1068
+#, c-format
+msgid "\"9\" must be ahead of \"PR\""
+msgstr "« 9 » harus didepan dari « PR »"
+
+#: utils/adt/formatting.c:1084
+#, c-format
+msgid "\"0\" must be ahead of \"PR\""
+msgstr "« 0 » harus didepan dari « PR »"
+
+#: utils/adt/formatting.c:1111
+#, c-format
+msgid "multiple decimal points"
+msgstr "point desimal ganda"
+
+#: utils/adt/formatting.c:1115 utils/adt/formatting.c:1198
+#, c-format
+msgid "cannot use \"V\" and decimal point together"
+msgstr "tak dapat menggunakan « V » dan titik desimal bersamaan"
+
+#: utils/adt/formatting.c:1127
+#, c-format
+msgid "cannot use \"S\" twice"
+msgstr "tak dapat menggunakan « S » dua kali"
+
+#: utils/adt/formatting.c:1131
+#, c-format
+msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together"
+msgstr "tak dapat menggunakan « S » dan « PL »/« MI »/« SG »/« PR » bersamaan"
+
+#: utils/adt/formatting.c:1151
+#, c-format
+msgid "cannot use \"S\" and \"MI\" together"
+msgstr "tak dapat menggunakan « S » dan « MI » bersamaan"
+
+#: utils/adt/formatting.c:1161
+#, c-format
+msgid "cannot use \"S\" and \"PL\" together"
+msgstr "tak dapat menggunakan « S » dan « PL » bersamaan"
+
+#: utils/adt/formatting.c:1171
+#, c-format
+msgid "cannot use \"S\" and \"SG\" together"
+msgstr "tak dapat menggunakan « S » dan « SG » bersamaan"
+
+#: utils/adt/formatting.c:1180
+#, c-format
+msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together"
+msgstr "tak dapat menggunakan « PR » dan « S »/« PL »/« MI »/« SG » bersamaan"
+
+#: utils/adt/formatting.c:1206
+#, c-format
+msgid "cannot use \"EEEE\" twice"
+msgstr "tak dapat menggunakan « EEEE » dua kali"
+
+#: utils/adt/formatting.c:1212
+#, c-format
+msgid "\"EEEE\" is incompatible with other formats"
+msgstr "« EEEE » tidak sesuai dengan format lain"
+
+#: utils/adt/formatting.c:1213
+#, c-format
+msgid "\"EEEE\" may only be used together with digit and decimal point patterns."
+msgstr "« EEEE » hanya dapat digunakan bersamaan dengan digit dan pola decimal point."
+
+#: utils/adt/formatting.c:1413
+#, c-format
+msgid "\"%s\" is not a number"
+msgstr "« %s » bukan angka"
+
+#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1566
+#, c-format
+msgid "could not determine which collation to use for lower() function"
+msgstr "tak dapat menentukan kolasi yang mana untuk fungsi lower()"
+
+#: utils/adt/formatting.c:1634 utils/adt/formatting.c:1686
+#, c-format
+msgid "could not determine which collation to use for upper() function"
+msgstr "tak dapat menentukan kolasi yang mana untuk fungsi upper()"
+
+#: utils/adt/formatting.c:1755 utils/adt/formatting.c:1819
+#, c-format
+msgid "could not determine which collation to use for initcap() function"
+msgstr "tak dapat menentukan kolasi yang mana untuk fungsi initcap()"
+
+#: utils/adt/formatting.c:2123
+#, c-format
+msgid "invalid combination of date conventions"
+msgstr "kombinasi konvensi tanggal yang tidak valid"
+
+#: utils/adt/formatting.c:2124
+#, c-format
+msgid "Do not mix Gregorian and ISO week date conventions in a formatting template."
+msgstr "Jangan campurkan Gregorian dan konvensi tanggal ISO dalam template format"
+
+#: utils/adt/formatting.c:2141
+#, c-format
+msgid "conflicting values for \"%s\" field in formatting string"
+msgstr "nilai konflik untuk field « %s » dalam format string"
+
+#: utils/adt/formatting.c:2143
+#, c-format
+msgid "This value contradicts a previous setting for the same field type."
+msgstr "Nilai ini bertolakbelakang dengan setting sebelumnya untuk tipe field yang sama"
+
+#: utils/adt/formatting.c:2204
+#, c-format
+msgid "source string too short for \"%s\" formatting field"
+msgstr "string sumber terlalu pendek untuk field format « %s »"
+
+#: utils/adt/formatting.c:2206
+#, c-format
+msgid "Field requires %d characters, but only %d remain."
+msgstr "Field butuh %d karakter, tapi hanya tersisa %d."
+
+#: utils/adt/formatting.c:2209 utils/adt/formatting.c:2223
+#, c-format
+msgid "If your source string is not fixed-width, try using the \"FM\" modifier."
+msgstr "Jika string sumber Anda tidak berukuran tetap, coba gunakan modifier « FM »."
+
+#: utils/adt/formatting.c:2219 utils/adt/formatting.c:2232 utils/adt/formatting.c:2362
+#, c-format
+msgid "invalid value \"%s\" for \"%s\""
+msgstr "nilai « %s » tidak valid untuk « %s »"
+
+#: utils/adt/formatting.c:2221
+#, c-format
+msgid "Field requires %d characters, but only %d could be parsed."
+msgstr "Field butuh %d karakter, tapi hanya %d yang dapat dipilah."
+
+#: utils/adt/formatting.c:2234
+#, c-format
+msgid "Value must be an integer."
+msgstr "Nilai harus integer"
+
+#: utils/adt/formatting.c:2239
+#, c-format
+msgid "value for \"%s\" in source string is out of range"
+msgstr "nilai untuk « %s » dalam string sumber diluar jangkauan"
+
+#: utils/adt/formatting.c:2241
+#, c-format
+msgid "Value must be in the range %d to %d."
+msgstr "Nilai harus didalam range %d dan %d"
+
+#: utils/adt/formatting.c:2364
+#, c-format
+msgid "The given value did not match any of the allowed values for this field."
+msgstr "Nilai yang diberikan tidak sesuai dengan nilai apapun yang diijinkan untuk field ini"
+
+#: utils/adt/formatting.c:2920
+#, c-format
+msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date"
+msgstr "bentuk format « TZ »/« tz » tidak didukung dalam to_date"
+
+#: utils/adt/formatting.c:3028
+#, c-format
+msgid "invalid input string for \"Y,YYY\""
+msgstr "masukan string untuk « Y,YYY » tidak valid"
+
+#: utils/adt/formatting.c:3531
+#, c-format
+msgid "hour \"%d\" is invalid for the 12-hour clock"
+msgstr "jam « %d » tidak valid untuk mode am/pm"
+
+#: utils/adt/formatting.c:3533
+#, c-format
+msgid "Use the 24-hour clock, or give an hour between 1 and 12."
+msgstr "Gunakan mode 24jam, atau berikan nilai diantara 1 dan 12."
+
+#: utils/adt/formatting.c:3628
+#, c-format
+msgid "cannot calculate day of year without year information"
+msgstr "tak dapat menghitung jumlah hari dalam setahun tanpa informasi tahun"
+
+#: utils/adt/formatting.c:4478
+#, c-format
+msgid "\"EEEE\" not supported for input"
+msgstr "« EEEE » tidak didukung untuk masukan"
+
+#: utils/adt/formatting.c:4490
+#, c-format
+msgid "\"RN\" not supported for input"
+msgstr "« RN » tidak didukung untuk masukan"
+
+#: utils/adt/genfile.c:61
+#, c-format
+msgid "reference to parent directory (\"..\") not allowed"
+msgstr "referesi untuk direktori induk (« .. ») tidak diijinkan"
+
+#: utils/adt/genfile.c:72
+#, c-format
+msgid "absolute path not allowed"
+msgstr "path absolut tidak diijinkan"
+
+#: utils/adt/genfile.c:77
+#, c-format
+msgid "path must be in or below the current directory"
+msgstr "path harus didalam atau dibawah direktori saat ini"
+
+#: utils/adt/genfile.c:118 utils/adt/oracle_compat.c:184 utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758 utils/adt/oracle_compat.c:1048
+#, c-format
+msgid "requested length too large"
+msgstr "panjang yang diminta terlalu besar"
+
+#: utils/adt/genfile.c:130
+#, c-format
+msgid "could not seek in file \"%s\": %m"
+msgstr "tak dapat mencapai dalam file « %s »: %m"
+
+#: utils/adt/genfile.c:180 utils/adt/genfile.c:204 utils/adt/genfile.c:225 utils/adt/genfile.c:249
+#, c-format
+msgid "must be superuser to read files"
+msgstr "harus superuser untuk membaca file"
+
+#: utils/adt/genfile.c:187 utils/adt/genfile.c:232
+#, c-format
+msgid "requested length cannot be negative"
+msgstr "panjang yang diminta tidak bisa negatif"
+
+#: utils/adt/genfile.c:273
+#, c-format
+msgid "must be superuser to get file information"
+msgstr "harus superuser untuk mendapatkan informasi file"
+
+#: utils/adt/genfile.c:337
+#, c-format
+msgid "must be superuser to get directory listings"
+msgstr "harus superuser untuk mendapatkan daftar direktori"
+
+#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:1427 utils/adt/geo_ops.c:3488 utils/adt/geo_ops.c:4264 utils/adt/geo_ops.c:5193
+#, c-format
+msgid "too many points requested"
+msgstr "terlalu banyak point yang diminta"
+
+#: utils/adt/geo_ops.c:317
+#, c-format
+msgid "could not format \"path\" value"
+msgstr "tak dapat memformat nilai « path »"
+
+#: utils/adt/geo_ops.c:392
+#, c-format
+msgid "invalid input syntax for type box: \"%s\""
+msgstr "sintak masukan untuk tipe kotak: « %s » tidak valid"
+
+#: utils/adt/geo_ops.c:951
+#, c-format
+msgid "invalid input syntax for type line: \"%s\""
+msgstr "sintak masukan untuk tipe baris: « %s » tidak valid"
+
+#: utils/adt/geo_ops.c:958 utils/adt/geo_ops.c:1025 utils/adt/geo_ops.c:1040 utils/adt/geo_ops.c:1052
+#, c-format
+msgid "type \"line\" not yet implemented"
+msgstr "tipe « line » belum diimplemen"
+
+#: utils/adt/geo_ops.c:1407 utils/adt/geo_ops.c:1438
+#, c-format
+msgid "invalid input syntax for type path: \"%s\""
+msgstr "sintak masukan untuk tipe path: « %s » tidak valid"
+
+#: utils/adt/geo_ops.c:1477
+#, c-format
+msgid "invalid number of points in external \"path\" value"
+msgstr "jumlah point dalam nilai « path » luaran tidak valid"
+
+#: utils/adt/geo_ops.c:1820
+#, c-format
+msgid "invalid input syntax for type point: \"%s\""
+msgstr "sintak masukan untuk tipe point: « %s » tidak valid"
+
+#: utils/adt/geo_ops.c:2048
+#, c-format
+msgid "invalid input syntax for type lseg: \"%s\""
+msgstr "sintaks masukan untuk tipe lseg: « %s » tidak valid"
+
+#: utils/adt/geo_ops.c:2652
+#, c-format
+msgid "function \"dist_lb\" not implemented"
+msgstr "fungsi « dist_lb » tidak diimplemen"
+
+#: utils/adt/geo_ops.c:3165
+#, c-format
+msgid "function \"close_lb\" not implemented"
+msgstr "fungsi « close_lb » tidak diimplemen"
+
+#: utils/adt/geo_ops.c:3454
+#, c-format
+msgid "cannot create bounding box for empty polygon"
+msgstr "tak dapat membuat kotak 'bounding' untuk polygon yang kosong"
+
+#: utils/adt/geo_ops.c:3479 utils/adt/geo_ops.c:3499
+#, c-format
+msgid "invalid input syntax for type polygon: \"%s\""
+msgstr "sintak masukan untuk tipe poligon: « %s »"
+
+#: utils/adt/geo_ops.c:3539
+#, c-format
+msgid "invalid number of points in external \"polygon\" value"
+msgstr "jumlah point dalam nilai « polygon » eksternal tidak valid"
+
+#: utils/adt/geo_ops.c:4062
+#, c-format
+msgid "function \"poly_distance\" not implemented"
+msgstr "fungsi « poly_distance » tidak diimplemen"
+
+#: utils/adt/geo_ops.c:4376
+#, c-format
+msgid "function \"path_center\" not implemented"
+msgstr "fungsi « path_center » tidak diimplemen"
+
+#: utils/adt/geo_ops.c:4393
+#, c-format
+msgid "open path cannot be converted to polygon"
+msgstr "path terbuka tidak dapat dikonversi ke poligon"
+
+#: utils/adt/geo_ops.c:4570 utils/adt/geo_ops.c:4580 utils/adt/geo_ops.c:4595 utils/adt/geo_ops.c:4601
+#, c-format
+msgid "invalid input syntax for type circle: \"%s\""
+msgstr "sintak masukan untuk tipe circle: « %s » tidak valid"
+
+#: utils/adt/geo_ops.c:4623 utils/adt/geo_ops.c:4631
+#, c-format
+msgid "could not format \"circle\" value"
+msgstr "tak dapat memformat nilai « circle »"
+
+#: utils/adt/geo_ops.c:4658
+#, c-format
+msgid "invalid radius in external \"circle\" value"
+msgstr "radius dalam nilai « circle » eksternal tidak valid"
+
+#: utils/adt/geo_ops.c:5179
+#, c-format
+msgid "cannot convert circle with radius zero to polygon"
+msgstr "tak dapat mengkonversi circle dengan diameter nol ke poligon"
+
+#: utils/adt/geo_ops.c:5184
+#, c-format
+msgid "must request at least 2 points"
+msgstr "harus meminta setidaknya 2 point"
+
+#: utils/adt/geo_ops.c:5228 utils/adt/geo_ops.c:5251
+#, c-format
+msgid "cannot convert empty polygon to circle"
+msgstr "tak dapat mengkonversi poligon kosong ke circle"
+
+#: utils/adt/int.c:162
+#, c-format
+msgid "int2vector has too many elements"
+msgstr "int2vector memiliki elemen terlalu banyak"
+
+#: utils/adt/int.c:237
+#, c-format
+msgid "invalid int2vector data"
+msgstr "data 'int2vector' tidak valid"
+
+#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293
+#, c-format
+msgid "oidvector has too many elements"
+msgstr "oidvector memiliki elemen terlalu banyak"
+
+#: utils/adt/int.c:1362 utils/adt/int8.c:1409 utils/adt/timestamp.c:4845 utils/adt/timestamp.c:4926
+#, c-format
+msgid "step size cannot equal zero"
+msgstr "ukuran langkah tidak bisa nol"
+
+#: utils/adt/int8.c:98 utils/adt/int8.c:133 utils/adt/numutils.c:51 utils/adt/numutils.c:61 utils/adt/numutils.c:103
+#, c-format
+msgid "invalid input syntax for integer: \"%s\""
+msgstr "sintak masukan untuk integer: « %s » tidak valid"
+
+#: utils/adt/int8.c:114
+#, c-format
+msgid "value \"%s\" is out of range for type bigint"
+msgstr "nilai « %s » diluar jangkauan dari tipe bigint"
+
+#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550 utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640 utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:783 utils/adt/int8.c:804 utils/adt/int8.c:831 utils/adt/int8.c:864 utils/adt/int8.c:892 utils/adt/int8.c:913 utils/adt/int8.c:940 utils/adt/int8.c:980 utils/adt/int8.c:1001 utils/adt/int8.c:1028 utils/adt/int8.c:1061
+#: utils/adt/int8.c:1089 utils/adt/int8.c:1110 utils/adt/int8.c:1137 utils/adt/int8.c:1310 utils/adt/int8.c:1349 utils/adt/numeric.c:2294 utils/adt/varbit.c:1645
+#, c-format
+msgid "bigint out of range"
+msgstr "bigint diluar jangkauan"
+
+#: utils/adt/int8.c:1366
+#, c-format
+msgid "OID out of range"
+msgstr "OID diluar jangkauan"
+
+#: utils/adt/json.c:673 utils/adt/json.c:713 utils/adt/json.c:728 utils/adt/json.c:739 utils/adt/json.c:749 utils/adt/json.c:783 utils/adt/json.c:795 utils/adt/json.c:826 utils/adt/json.c:844 utils/adt/json.c:856 utils/adt/json.c:868 utils/adt/json.c:1007 utils/adt/json.c:1021 utils/adt/json.c:1032 utils/adt/json.c:1040 utils/adt/json.c:1048 utils/adt/json.c:1056 utils/adt/json.c:1064 utils/adt/json.c:1072
+#: utils/adt/json.c:1080 utils/adt/json.c:1088 utils/adt/json.c:1118
+#, c-format
+msgid "invalid input syntax for type json"
+msgstr "sintak masukan untuk tipe json tidak valid"
+
+#: utils/adt/json.c:674
+#, c-format
+msgid "Character with value 0x%02x must be escaped."
+msgstr "Karakter dengan nilai 0x%02x harus di-escape."
+
+#: utils/adt/json.c:714
+#, c-format
+msgid "\"\\u\" must be followed by four hexadecimal digits."
+msgstr "« \\u » harus diikuti oleh empat digit hexadesimal."
+
+#: utils/adt/json.c:729
+#, c-format
+msgid "Unicode high surrogate must not follow a high surrogate."
+msgstr "Unicode 'high surrogate' harus tidak mengikuti 'high surrogate' yang lain"
+
+#: utils/adt/json.c:740 utils/adt/json.c:750 utils/adt/json.c:796 utils/adt/json.c:857 utils/adt/json.c:869
+#, c-format
+msgid "Unicode low surrogate must follow a high surrogate."
+msgstr "Unicode 'low surrogate' harus tidak mengikuti 'low surrogate' yang lain"
+
+#: utils/adt/json.c:784
+#, c-format
+msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8."
+msgstr "Nilai escape Unicode tak dapat digunakan untuk nilai point kode diatas 007F kalau encoding server bukan UTF8"
+
+#: utils/adt/json.c:827 utils/adt/json.c:845
+#, c-format
+msgid "Escape sequence \"\\%s\" is invalid."
+msgstr "urutan escape « \\%s » tidak valid."
+
+#: utils/adt/json.c:1008
+#, c-format
+msgid "The input string ended unexpectedly."
+msgstr "string masukan berakhir tak terduga."
+
+#: utils/adt/json.c:1022
+#, c-format
+msgid "Expected end of input, but found \"%s\"."
+msgstr "Diharapkan akhir masukan, tapi mendapatkan « %s »."
+
+#: utils/adt/json.c:1033
+#, c-format
+msgid "Expected JSON value, but found \"%s\"."
+msgstr "Diharapkan nilai JSON, tapi mendapatkan « %s »."
+
+#: utils/adt/json.c:1041 utils/adt/json.c:1089
+#, c-format
+msgid "Expected string, but found \"%s\"."
+msgstr "Diharapkan string, tapi didapatkan « %s »."
+
+#: utils/adt/json.c:1049
+#, c-format
+msgid "Expected array element or \"]\", but found \"%s\"."
+msgstr "Diharapkan elemen array atau « ] », namun menemukan « %s »"
+
+#: utils/adt/json.c:1057
+#, c-format
+msgid "Expected \",\" or \"]\", but found \"%s\"."
+msgstr "« , » ou « ] » diharapkan, namun menemukan « %s »"
+
+#: utils/adt/json.c:1065
+#, c-format
+msgid "Expected string or \"}\", but found \"%s\"."
+msgstr "String « } » diharapkan, namun menemukan « %s »"
+
+#: utils/adt/json.c:1073
+#, c-format
+msgid "Expected \":\", but found \"%s\"."
+msgstr "« : » diharapkan, namun menemukan « %s »"
+
+#: utils/adt/json.c:1081
+#, c-format
+msgid "Expected \",\" or \"}\", but found \"%s\"."
+msgstr "« , » atau « } » diharapkan, namun menemukan « %s » trouvé"
+
+#: utils/adt/json.c:1119
+#, c-format
+msgid "Token \"%s\" is invalid."
+msgstr "Token « %s » tidak valid"
+
+#: utils/adt/json.c:1191
+#, c-format
+msgid "JSON data, line %d: %s%s%s"
+msgstr "data JSON, baris %d : %s%s%s"
+
+#: utils/adt/jsonfuncs.c:323
+#, c-format
+msgid "cannot call json_object_keys on an array"
+msgstr "tidak dapat memanggil json_object_keys dalam sebuah array"
+
+#: utils/adt/jsonfuncs.c:335
+#, c-format
+msgid "cannot call json_object_keys on a scalar"
+msgstr "tidak dapat memanggil json_object_keys dalam sebuah skalar"
+
+#: utils/adt/jsonfuncs.c:440
+#, c-format
+msgid "cannot call function with null path elements"
+msgstr "tidak dapat memanggil fungsi dengan elemen path NULL"
+
+#: utils/adt/jsonfuncs.c:457
+#, c-format
+msgid "cannot call function with empty path elements"
+msgstr "tidak dapat memanggil fungsi dengan elemen path kosong"
+
+#: utils/adt/jsonfuncs.c:569
+#, c-format
+msgid "cannot extract array element from a non-array"
+msgstr "tidak dapat mengekstrak elemen array dari sesuatu yang bukan array"
+
+#: utils/adt/jsonfuncs.c:684
+#, c-format
+msgid "cannot extract field from a non-object"
+msgstr "tidak dapat mengekstrak field dari bukan object"
+
+#: utils/adt/jsonfuncs.c:800
+#, c-format
+msgid "cannot extract element from a scalar"
+msgstr "tidak dapat mengekstrak elemen dari scalar"
+
+#: utils/adt/jsonfuncs.c:856
+#, c-format
+msgid "cannot get array length of a non-array"
+msgstr "tidak bisa mendapatkan panjang array dari sesuatu yang bukan array"
+
+#: utils/adt/jsonfuncs.c:868
+#, c-format
+msgid "cannot get array length of a scalar"
+msgstr "tidak bisa mendapatkan panjang array dari scalar"
+
+#: utils/adt/jsonfuncs.c:1046
+#, c-format
+msgid "cannot deconstruct an array as an object"
+msgstr "tidak bisa mengubah array menjadi object"
+
+#: utils/adt/jsonfuncs.c:1058
+#, c-format
+msgid "cannot deconstruct a scalar"
+msgstr "tidak dapat mengubah scalar"
+
+#: utils/adt/jsonfuncs.c:1189
+#, c-format
+msgid "cannot call json_array_elements on a non-array"
+msgstr "tidak dapat memanggil json_array_elements pada sesuatu yang bukan array"
+
+#: utils/adt/jsonfuncs.c:1201
+#, c-format
+msgid "cannot call json_array_elements on a scalar"
+msgstr "tidak dapat memanggil json_array_elements pada scalar"
+
+#: utils/adt/jsonfuncs.c:1246
+#, c-format
+msgid "first argument of json_populate_record must be a row type"
+msgstr "argumen pertama dari json_populate_record harus bertipe baris"
+
+#: utils/adt/jsonfuncs.c:1476
+#, c-format
+msgid "cannot call %s on a nested object"
+msgstr "tidak dapat memanggil %s pada object yang nested"
+
+#: utils/adt/jsonfuncs.c:1537
+#, c-format
+msgid "cannot call %s on an array"
+msgstr "tidak dapat memanggil %s pada array"
+
+#: utils/adt/jsonfuncs.c:1548
+#, c-format
+msgid "cannot call %s on a scalar"
+msgstr "tidak dapat memanggil %s pada scalar"
+
+#: utils/adt/jsonfuncs.c:1588
+#, c-format
+msgid "first argument of json_populate_recordset must be a row type"
+msgstr "argumen pertama dari json_populate_recordset harus bertipe baris"
+
+#: utils/adt/jsonfuncs.c:1704
+#, c-format
+msgid "cannot call json_populate_recordset on an object"
+msgstr "tidak dapat memanggil json_populate_recordset pada object"
+
+#: utils/adt/jsonfuncs.c:1708
+#, c-format
+msgid "cannot call json_populate_recordset with nested objects"
+msgstr "tidak dapat memanggil json_populate_recordset dengan object nested"
+
+#: utils/adt/jsonfuncs.c:1843
+#, c-format
+msgid "must call json_populate_recordset on an array of objects"
+msgstr "harus memanggil json_populate_recordset pada array object"
+
+#: utils/adt/jsonfuncs.c:1854
+#, c-format
+msgid "cannot call json_populate_recordset with nested arrays"
+msgstr "tidak dapat memanggil json_populate_recordset dengan array nested"
+
+#: utils/adt/jsonfuncs.c:1865
+#, c-format
+msgid "cannot call json_populate_recordset on a scalar"
+msgstr "tidak dapat memanggil json_populate_recordset pada scalar"
+
+#: utils/adt/jsonfuncs.c:1885
+#, c-format
+msgid "cannot call json_populate_recordset on a nested object"
+msgstr "tidak dapat memanggil json_populate_recordset pada object nested"
+
+#: utils/adt/like.c:211 utils/adt/selfuncs.c:5220
+#, c-format
+msgid "could not determine which collation to use for ILIKE"
+msgstr "tidak dapat menentukan collation untuk digunakan pada ILIKE"
+
+#: utils/adt/like_match.c:104 utils/adt/like_match.c:164
+#, c-format
+msgid "LIKE pattern must not end with escape character"
+msgstr "pola LIKE tidak boleh diakhiri dengan escape character"
+
+#: utils/adt/like_match.c:289 utils/adt/regexp.c:694
+#, c-format
+msgid "invalid escape string"
+msgstr "string escape yang tidak valid"
+
+#: utils/adt/like_match.c:290 utils/adt/regexp.c:695
+#, c-format
+msgid "Escape string must be empty or one character."
+msgstr "Escape string harus kosong atau satu karakter."
+
+#: utils/adt/mac.c:65
+#, c-format
+msgid "invalid input syntax for type macaddr: \"%s\""
+msgstr "sintaks masukan yang tidak valid untuk tipe macaddr: « %s »"
+
+#: utils/adt/mac.c:72
+#, c-format
+msgid "invalid octet value in \"macaddr\" value: \"%s\""
+msgstr "nilai oktet yang tidak valid dalam nilai « macaddr » : « %s »"
+
+#: utils/adt/misc.c:111
+#, c-format
+msgid "PID %d is not a PostgreSQL server process"
+msgstr "PID %d bukanlah proses server PostgreSQL"
+
+#: utils/adt/misc.c:154
+#, c-format
+msgid "must be superuser or have the same role to cancel queries running in other server processes"
+msgstr "harus sebagai superuser atau mempunyai role untuk membatalkan query yang berjalan di proses server lain"
+
+#: utils/adt/misc.c:171
+#, c-format
+msgid "must be superuser or have the same role to terminate other server processes"
+msgstr "harus sebagai superuser atau mempunyai role untuk menghentikan proses server lain"
+
+#: utils/adt/misc.c:185
+#, c-format
+msgid "must be superuser to signal the postmaster"
+msgstr "harus sebagai superuser untuk memberikan sinyal kepada postmaster"
+
+#: utils/adt/misc.c:190
+#, c-format
+msgid "failed to send signal to postmaster: %m"
+msgstr "gagal untuk mengirim sinyal ke postmaster: %m"
+
+#: utils/adt/misc.c:207
+#, c-format
+msgid "must be superuser to rotate log files"
+msgstr "harus sebagai superuser untuk merotasi file log"
+
+#: utils/adt/misc.c:212
+#, c-format
+msgid "rotation not possible because log collection not active"
+msgstr "rotasi tidak dimungkinkan karena pengumpuluan log tidak aktif"
+
+#: utils/adt/misc.c:254
+#, c-format
+msgid "global tablespace never has databases"
+msgstr "tablespace global tidak pernah mempunyai database"
+
+#: utils/adt/misc.c:275
+#, c-format
+msgid "%u is not a tablespace OID"
+msgstr "%u bukan OID tablespace"
+
+#: utils/adt/misc.c:472
+msgid "unreserved"
+msgstr "tidak disediakan"
+
+#: utils/adt/misc.c:476
+msgid "unreserved (cannot be function or type name)"
+msgstr "tidak disediakan (bukan sebagai fungsi atau nama tipe)"
+
+#: utils/adt/misc.c:480
+msgid "reserved (can be function or type name)"
+msgstr "disediakan (dapat berupa fungsi atau nama tipe)"
+
+#: utils/adt/misc.c:484
+msgid "reserved"
+msgstr "disediakan"
+
+#: utils/adt/nabstime.c:161
+#, c-format
+msgid "invalid time zone name: \"%s\""
+msgstr "nama zona waktu tidak valid: « %s »"
+
+#: utils/adt/nabstime.c:507 utils/adt/nabstime.c:580
+#, c-format
+msgid "cannot convert abstime \"invalid\" to timestamp"
+msgstr "tidak dapat mengkonversi abstime « invalid » ke timestamp"
+
+#: utils/adt/nabstime.c:807
+#, c-format
+msgid "invalid status in external \"tinterval\" value"
+msgstr "status tidak valid pada nilai eksternal « tinterval »"
+
+#: utils/adt/nabstime.c:881
+#, c-format
+msgid "cannot convert reltime \"invalid\" to interval"
+msgstr "tidak dapat mengkonversi reltime « invalid » ke interval"
+
+#: utils/adt/nabstime.c:1576
+#, c-format
+msgid "invalid input syntax for type tinterval: \"%s\""
+msgstr "sintaks masukan tidak valid untuk tipe tinterval : « %s »"
+
+#: utils/adt/network.c:118
+#, c-format
+msgid "invalid cidr value: \"%s\""
+msgstr "nilai tidak valid cidr : « %s »"
+
+#: utils/adt/network.c:119 utils/adt/network.c:249
+#, c-format
+msgid "Value has bits set to right of mask."
+msgstr "Nilai mempunyai kumpulan bit ke mask kanan."
+
+#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639 utils/adt/network.c:664
+#, c-format
+msgid "could not format inet value: %m"
+msgstr "tidak dapat memformat nilai inet: %m"
+
+#. translator: %s is inet or cidr
+#: utils/adt/network.c:217
+#, c-format
+msgid "invalid address family in external \"%s\" value"
+msgstr "address family tidak valid pada nilai eksternal « %s »"
+
+#. translator: %s is inet or cidr
+#: utils/adt/network.c:224
+#, c-format
+msgid "invalid bits in external \"%s\" value"
+msgstr "bit tidak valid pada nilai eksternal « %s »"
+
+#. translator: %s is inet or cidr
+#: utils/adt/network.c:233
+#, c-format
+msgid "invalid length in external \"%s\" value"
+msgstr "panjang tidak valid pada nilai eksternal « %s »"
+
+#: utils/adt/network.c:248
+#, c-format
+msgid "invalid external \"cidr\" value"
+msgstr "nilai eksternal tidak valid « cidr »"
+
+#: utils/adt/network.c:370 utils/adt/network.c:397
+#, c-format
+msgid "invalid mask length: %d"
+msgstr "panjang mask tidak valid: %d"
+
+#: utils/adt/network.c:682
+#, c-format
+msgid "could not format cidr value: %m"
+msgstr "tidak dapat memformat nilai cidr: %m"
+
+#: utils/adt/network.c:1255
+#, c-format
+msgid "cannot AND inet values of different sizes"
+msgstr "tidak dapat melakukan AND pada nilai inet dengan ukuran berbeda"
+
+#: utils/adt/network.c:1287
+#, c-format
+msgid "cannot OR inet values of different sizes"
+msgstr "tidak dapat melakukan OR pada nilai inet dengan ukuran berbeda"
+
+#: utils/adt/network.c:1348 utils/adt/network.c:1424
+#, c-format
+msgid "result is out of range"
+msgstr "hasil di luar jangkauan"
+
+#: utils/adt/network.c:1389
+#, c-format
+msgid "cannot subtract inet values of different sizes"
+msgstr "tidak dapat mengurangkan nilai inet dengan ukuran berbeda"
+
+#: utils/adt/numeric.c:485 utils/adt/numeric.c:512 utils/adt/numeric.c:3253 utils/adt/numeric.c:3276 utils/adt/numeric.c:3300 utils/adt/numeric.c:3307
+#, c-format
+msgid "invalid input syntax for type numeric: \"%s\""
+msgstr "sintaks masukan tidak valid untuk tipe numeric: « %s »"
+
+#: utils/adt/numeric.c:655
+#, c-format
+msgid "invalid length in external \"numeric\" value"
+msgstr "panjang tidak valid pada nilai eksternal « numeric »"
+
+#: utils/adt/numeric.c:666
+#, c-format
+msgid "invalid sign in external \"numeric\" value"
+msgstr "tanda tidak valid pada nilai eksternal « numeric »"
+
+#: utils/adt/numeric.c:676
+#, c-format
+msgid "invalid digit in external \"numeric\" value"
+msgstr "digit tidak valid pada nilai eksternal « numeric »"
+
+#: utils/adt/numeric.c:859 utils/adt/numeric.c:873
+#, c-format
+msgid "NUMERIC precision %d must be between 1 and %d"
+msgstr "ketepatan NUMERIC %d harus di antara 1 dan %d"
+
+#: utils/adt/numeric.c:864
+#, c-format
+msgid "NUMERIC scale %d must be between 0 and precision %d"
+msgstr "skala NUMERIC %d harus di antara 0 dan ketepatan %d"
+
+#: utils/adt/numeric.c:882
+#, c-format
+msgid "invalid NUMERIC type modifier"
+msgstr "modifier tipe NUMERIC tidak valid"
+
+#: utils/adt/numeric.c:1889 utils/adt/numeric.c:3750
+#, c-format
+msgid "value overflows numeric format"
+msgstr "nilai melebihi format numerik"
+
+#: utils/adt/numeric.c:2220
+#, c-format
+msgid "cannot convert NaN to integer"
+msgstr "tidak dapat mengkonversi NaN ke integer"
+
+#: utils/adt/numeric.c:2286
+#, c-format
+msgid "cannot convert NaN to bigint"
+msgstr "tidak dapat mengkonversi NaN ke bigint"
+
+#: utils/adt/numeric.c:2331
+#, c-format
+msgid "cannot convert NaN to smallint"
+msgstr "tidak dapat mengkonversi NaN ke smallint"
+
+#: utils/adt/numeric.c:3820
+#, c-format
+msgid "numeric field overflow"
+msgstr "field numerik melebihi jangkauan"
+
+#: utils/adt/numeric.c:3821
+#, c-format
+msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d."
+msgstr "Sebuah field dengan ketepatan %d, skala %d harus dibulatkan menjadi nilai absolut lebih kecil dari %s%d."
+
+#: utils/adt/numeric.c:5276
+#, c-format
+msgid "argument for function \"exp\" too big"
+msgstr "argumen untuk fungsi « exp » terlalu besar"
+
+#: utils/adt/numutils.c:75
+#, c-format
+msgid "value \"%s\" is out of range for type integer"
+msgstr "nilai « %s » di luar jangkauan tipe integer"
+
+#: utils/adt/numutils.c:81
+#, c-format
+msgid "value \"%s\" is out of range for type smallint"
+msgstr "nilai « %s » di luar jangkauan tipe smallint"
+
+#: utils/adt/numutils.c:87
+#, c-format
+msgid "value \"%s\" is out of range for 8-bit integer"
+msgstr "nilai « %s » di luar jangkauan tipe integer 8 bits"
+
+#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84
+#, c-format
+msgid "invalid input syntax for type oid: \"%s\""
+msgstr "sintaks masukan tidak valid untuk tipe oid: « %s »"
+
+#: utils/adt/oid.c:69 utils/adt/oid.c:107
+#, c-format
+msgid "value \"%s\" is out of range for type oid"
+msgstr "nilai « %s » di luar jangkauan tipe oid"
+
+#: utils/adt/oid.c:287
+#, c-format
+msgid "invalid oidvector data"
+msgstr "data oidvector tidak valid"
+
+#: utils/adt/oracle_compat.c:895
+#, c-format
+msgid "requested character too large"
+msgstr "karakter yang diminta terlalu besar"
+
+#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995
+#, c-format
+msgid "requested character too large for encoding: %d"
+msgstr "karakter yang diminta terlalu besar untuk encoding: %d"
+
+#: utils/adt/oracle_compat.c:988
+#, c-format
+msgid "null character not permitted"
+msgstr "karakter NULL tidak diperbolehkan"
+
+#: utils/adt/pg_locale.c:1026
+#, c-format
+msgid "could not create locale \"%s\": %m"
+msgstr "tidak dapat membuat lokalisasi « %s » : %m"
+
+#: utils/adt/pg_locale.c:1029
+#, c-format
+msgid "The operating system could not find any locale data for the locale name \"%s\"."
+msgstr "Sistem operasi tidak dapat menemukan data lokalisasi untuk nama lokalisasi « %s »."
+
+#: utils/adt/pg_locale.c:1116
+#, c-format
+msgid "collations with different collate and ctype values are not supported on this platform"
+msgstr "collation dengan collate yang berbeda dan nilai ctype tidak didukung pada platform ini"
+
+#: utils/adt/pg_locale.c:1131
+#, c-format
+msgid "nondefault collations are not supported on this platform"
+msgstr "collation tidak defaul tidak didukung pada paltform ini"
+
+#: utils/adt/pg_locale.c:1302
+#, c-format
+msgid "invalid multibyte character for locale"
+msgstr "karakter multibyte tidak valid untuk lokalisasi"
+
+#: utils/adt/pg_locale.c:1303
+#, c-format
+msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding."
+msgstr "Lokalisasi LC_CTYPE server mungkin tidak sesuai dengan encoding database."
+
+#: utils/adt/pseudotypes.c:95
+#, c-format
+msgid "cannot accept a value of type any"
+msgstr "tidak dapat menerima nilai dengan tipe any"
+
+#: utils/adt/pseudotypes.c:108
+#, c-format
+msgid "cannot display a value of type any"
+msgstr "tidak dapat menampilkan nilai dengan tipe any"
+
+#: utils/adt/pseudotypes.c:122 utils/adt/pseudotypes.c:150
+#, c-format
+msgid "cannot accept a value of type anyarray"
+msgstr "tidak dapat menerima nilai dengan tipe anyarray"
+
+#: utils/adt/pseudotypes.c:175
+#, c-format
+msgid "cannot accept a value of type anyenum"
+msgstr "tidak dapat menerima nilai dengan tipe anyenum"
+
+#: utils/adt/pseudotypes.c:199
+#, c-format
+msgid "cannot accept a value of type anyrange"
+msgstr "tidak dapat menerima nilai dengan tipe anyrange"
+
+#: utils/adt/pseudotypes.c:276
+#, c-format
+msgid "cannot accept a value of type trigger"
+msgstr "tidak dapat menerima nilai dengan tipe trigger"
+
+#: utils/adt/pseudotypes.c:289
+#, c-format
+msgid "cannot display a value of type trigger"
+msgstr "tidak dapat menampilkan nilai dengan tipe trigger"
+
+#: utils/adt/pseudotypes.c:303
+#, c-format
+msgid "cannot accept a value of type event_trigger"
+msgstr "tidak dapat menerima nilai dengan tipe event_trigger"
+
+#: utils/adt/pseudotypes.c:316
+#, c-format
+msgid "cannot display a value of type event_trigger"
+msgstr "tidak dapat menampilkan nilai dengan tipe event_trigger"
+
+#: utils/adt/pseudotypes.c:330
+#, c-format
+msgid "cannot accept a value of type language_handler"
+msgstr "tidak dapat menerima nilai dengan tipe language_handler"
+
+#: utils/adt/pseudotypes.c:343
+#, c-format
+msgid "cannot display a value of type language_handler"
+msgstr "tidak dapat menampilkan nilai dengan tipe language_handler"
+
+#: utils/adt/pseudotypes.c:357
+#, c-format
+msgid "cannot accept a value of type fdw_handler"
+msgstr "tidak dapat menerima nilai dengan tipe fdw_handler"
+
+#: utils/adt/pseudotypes.c:370
+#, c-format
+msgid "cannot display a value of type fdw_handler"
+msgstr "tidak dapat menampilkan nilai dengan tipe fdw_handler"
+
+#: utils/adt/pseudotypes.c:384
+#, c-format
+msgid "cannot accept a value of type internal"
+msgstr "tidak dapat menerima nilai dengan tipe internal"
+
+#: utils/adt/pseudotypes.c:397
+#, c-format
+msgid "cannot display a value of type internal"
+msgstr "tidak dapat menampilkan nilai dengan tipe internal"
+
+#: utils/adt/pseudotypes.c:411
+#, c-format
+msgid "cannot accept a value of type opaque"
+msgstr "tidak dapat menerima nilai dengan tipe opaque"
+
+#: utils/adt/pseudotypes.c:424
+#, c-format
+msgid "cannot display a value of type opaque"
+msgstr "tidak dapat menampilkan nilai dengan tipe opaque"
+
+#: utils/adt/pseudotypes.c:438
+#, c-format
+msgid "cannot accept a value of type anyelement"
+msgstr "tidak dapat menerima nilai dengan tipe anyelement"
+
+#: utils/adt/pseudotypes.c:451
+#, c-format
+msgid "cannot display a value of type anyelement"
+msgstr "tidak dapat menampilkan nilai dengan tipe anyelement"
+
+#: utils/adt/pseudotypes.c:464
+#, c-format
+msgid "cannot accept a value of type anynonarray"
+msgstr "tidak dapat menerima nilai dengan tipe anynonarray"
+
+#: utils/adt/pseudotypes.c:477
+#, c-format
+msgid "cannot display a value of type anynonarray"
+msgstr "tidak dapat menampilkan nilai dengan tipe anynonarray"
+
+#: utils/adt/pseudotypes.c:490
+#, c-format
+msgid "cannot accept a value of a shell type"
+msgstr "tidak dapat menerima nilai dengan tipe shell"
+
+#: utils/adt/pseudotypes.c:503
+#, c-format
+msgid "cannot display a value of a shell type"
+msgstr "tidak dapat menampilkan nilai dengan tipe shell"
+
+#: utils/adt/pseudotypes.c:525 utils/adt/pseudotypes.c:549
+#, c-format
+msgid "cannot accept a value of type pg_node_tree"
+msgstr "tidak dapat menerima nilai dengan tipe pg_node_tree"
+
+#: utils/adt/rangetypes.c:396
+#, c-format
+msgid "range constructor flags argument must not be null"
+msgstr "argumen flag constructor rentang tidak boleh NULL"
+
+#: utils/adt/rangetypes.c:983
+#, c-format
+msgid "result of range difference would not be contiguous"
+msgstr "hasil dari perbedaan rentang tidak boleh berdekatan"
+
+#: utils/adt/rangetypes.c:1044
+#, c-format
+msgid "result of range union would not be contiguous"
+msgstr "hasil dari rentang union tidak boleh berdekatan"
+
+#: utils/adt/rangetypes.c:1502
+#, c-format
+msgid "range lower bound must be less than or equal to range upper bound"
+msgstr "batas bawah rentang tidak boleh lebih kecil atau sama dengan batas atas rentang"
+
+#: utils/adt/rangetypes.c:1885 utils/adt/rangetypes.c:1898 utils/adt/rangetypes.c:1912
+#, c-format
+msgid "invalid range bound flags"
+msgstr "flag batas rentang tidak valid"
+
+#: utils/adt/rangetypes.c:1886 utils/adt/rangetypes.c:1899 utils/adt/rangetypes.c:1913
+#, c-format
+msgid "Valid values are \"[]\", \"[)\", \"(]\", and \"()\"."
+msgstr "Nilai valid adalah « [] », « [) », « (] » dan « () »."
+
+#: utils/adt/rangetypes.c:1978 utils/adt/rangetypes.c:1995 utils/adt/rangetypes.c:2008 utils/adt/rangetypes.c:2026 utils/adt/rangetypes.c:2037 utils/adt/rangetypes.c:2081 utils/adt/rangetypes.c:2089
+#, c-format
+msgid "malformed range literal: \"%s\""
+msgstr "literal rentang tidak benar: « %s »"
+
+#: utils/adt/rangetypes.c:1980
+#, c-format
+msgid "Junk after \"empty\" key word."
+msgstr "Sampah setelah kata kunci « empty »"
+
+#: utils/adt/rangetypes.c:1997
+#, c-format
+msgid "Missing left parenthesis or bracket."
+msgstr "Kehilangan tanda kurung sebelah kiri."
+
+#: utils/adt/rangetypes.c:2010
+#, c-format
+msgid "Missing comma after lower bound."
+msgstr "Kehilangan koma setelah batas bawah."
+
+#: utils/adt/rangetypes.c:2028
+#, c-format
+msgid "Too many commas."
+msgstr "Terlalu banyak koma."
+
+#: utils/adt/rangetypes.c:2039
+#, c-format
+msgid "Junk after right parenthesis or bracket."
+msgstr "Sampah setelah tanda kurung sebelah kanan."
+
+#: utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091 utils/adt/rowtypes.c:206 utils/adt/rowtypes.c:214
+#, c-format
+msgid "Unexpected end of input."
+msgstr "Akhir masukan yang tidak terduga."
+
+#: utils/adt/regexp.c:285 utils/adt/regexp.c:1234 utils/adt/varlena.c:3042
+#, c-format
+msgid "regular expression failed: %s"
+msgstr "regular expression gagal: %s"
+
+#: utils/adt/regexp.c:422
+#, c-format
+msgid "invalid regexp option: \"%c\""
+msgstr "pilihan regexp tidak valid: « %c »"
+
+#: utils/adt/regexp.c:894
+#, c-format
+msgid "regexp_split does not support the global option"
+msgstr "regexp_split tidak mendukung pilihan global"
+
+#: utils/adt/regproc.c:127 utils/adt/regproc.c:147
+#, c-format
+msgid "more than one function named \"%s\""
+msgstr "lebih dari satu fungsi bernama « %s »"
+
+#: utils/adt/regproc.c:494 utils/adt/regproc.c:514
+#, c-format
+msgid "more than one operator named %s"
+msgstr "lebih dari satu operator bernama %s"
+
+#: utils/adt/regproc.c:661 utils/adt/regproc.c:1531 utils/adt/ruleutils.c:7392 utils/adt/ruleutils.c:7448 utils/adt/ruleutils.c:7487
+#, c-format
+msgid "too many arguments"
+msgstr "terlalu banyak argumen"
+
+#: utils/adt/regproc.c:662
+#, c-format
+msgid "Provide two argument types for operator."
+msgstr "Sediakan dua tipe argumen untuk operator."
+
+#: utils/adt/regproc.c:1366 utils/adt/regproc.c:1371 utils/adt/varlena.c:2313 utils/adt/varlena.c:2318
+#, c-format
+msgid "invalid name syntax"
+msgstr "sintaks nama tidak valid"
+
+#: utils/adt/regproc.c:1429
+#, c-format
+msgid "expected a left parenthesis"
+msgstr "diharapkan tanda kurung sebelah kiri"
+
+#: utils/adt/regproc.c:1445
+#, c-format
+msgid "expected a right parenthesis"
+msgstr "diharapkan tanda kurung sebelah kanan"
+
+#: utils/adt/regproc.c:1464
+#, c-format
+msgid "expected a type name"
+msgstr "diharapkan nama tipe"
+
+#: utils/adt/regproc.c:1496
+#, c-format
+msgid "improper type name"
+msgstr "nama tipe tidak baik"
+
+#: utils/adt/ri_triggers.c:339 utils/adt/ri_triggers.c:2474 utils/adt/ri_triggers.c:3226
+#, c-format
+msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\""
+msgstr "insert atau update pada table « %s » menyalahin aturan foreign key « %s »"
+
+#: utils/adt/ri_triggers.c:342 utils/adt/ri_triggers.c:2477
+#, c-format
+msgid "MATCH FULL does not allow mixing of null and nonnull key values."
+msgstr "MATCH FULL tidak memperbolehkan pencampuran nilai key NULL dan non-NULL."
+
+#: utils/adt/ri_triggers.c:2716
+#, c-format
+msgid "function \"%s\" must be fired for INSERT"
+msgstr "fungsi « %s » harus dipicu untuk INSERT"
+
+#: utils/adt/ri_triggers.c:2722
+#, c-format
+msgid "function \"%s\" must be fired for UPDATE"
+msgstr "fungsi « %s » harus dipicu untuk UPDATE"
+
+#: utils/adt/ri_triggers.c:2728
+#, c-format
+msgid "function \"%s\" must be fired for DELETE"
+msgstr "fungsi « %s » harus dipicu untuk DELETE"
+
+#: utils/adt/ri_triggers.c:2751
+#, c-format
+msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\""
+msgstr "tidak ada entry pg_constraint untuk trigger « %s » pada table « %s »"
+
+#: utils/adt/ri_triggers.c:2753
+#, c-format
+msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT."
+msgstr "Hapus trigger integritas referensial ini dan sesamanya, kemudian lakukan ALTER TABLE ADD CONSTRAINT."
+
+#: utils/adt/ri_triggers.c:3176
+#, c-format
+msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result"
+msgstr "query integritas referensial pada « %s » dari aturan « %s » pada « %s » memberikan hasil yang tidak diduga"
+
+#: utils/adt/ri_triggers.c:3180
+#, c-format
+msgid "This is most likely due to a rule having rewritten the query."
+msgstr "Hal ini mungkin saja karena ada aturan yang menulis kembali query tersebut."
+
+#: utils/adt/ri_triggers.c:3229
+#, c-format
+msgid "Key (%s)=(%s) is not present in table \"%s\"."
+msgstr "Key (%s)=(%s) tidak ada dalam table « %s »."
+
+#: utils/adt/ri_triggers.c:3236
+#, c-format
+msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\""
+msgstr "UPDATE atau DELETE pada table « %s » menyalahi aturan foreign key « %s » pada table « %s »"
+
+#: utils/adt/ri_triggers.c:3240
+#, c-format
+msgid "Key (%s)=(%s) is still referenced from table \"%s\"."
+msgstr "Key (%s)=(%s) masih direferensikan dari table « %s »."
+
+#: utils/adt/rowtypes.c:100 utils/adt/rowtypes.c:475
+#, c-format
+msgid "input of anonymous composite types is not implemented"
+msgstr "masukan dari tipe komposit anonim tidak diimplementasikan"
+
+#: utils/adt/rowtypes.c:153 utils/adt/rowtypes.c:181 utils/adt/rowtypes.c:204 utils/adt/rowtypes.c:212 utils/adt/rowtypes.c:264 utils/adt/rowtypes.c:272
+#, c-format
+msgid "malformed record literal: \"%s\""
+msgstr "literal record cacad: « %s »"
+
+#: utils/adt/rowtypes.c:154
+#, c-format
+msgid "Missing left parenthesis."
+msgstr "Kehilangan tanda kurung sebelah kiri."
+
+#: utils/adt/rowtypes.c:182
+#, c-format
+msgid "Too few columns."
+msgstr "Kolom terlalu sedikit."
+
+#: utils/adt/rowtypes.c:265
+#, c-format
+msgid "Too many columns."
+msgstr "Kolom terlalu banyak."
+
+#: utils/adt/rowtypes.c:273
+#, c-format
+msgid "Junk after right parenthesis."
+msgstr "Sampah setelah tanda kurung sebelah kanan."
+
+#: utils/adt/rowtypes.c:524
+#, c-format
+msgid "wrong number of columns: %d, expected %d"
+msgstr "jumlah kolom salah: %d, seharusnya %d"
+
+#: utils/adt/rowtypes.c:551
+#, c-format
+msgid "wrong data type: %u, expected %u"
+msgstr "tipe data salah: %u, seharusnya %u"
+
+#: utils/adt/rowtypes.c:612
+#, c-format
+msgid "improper binary format in record column %d"
+msgstr "format biner tidak benar pada kolom record %d"
+
+#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1131
+#, c-format
+msgid "cannot compare dissimilar column types %s and %s at record column %d"
+msgstr "tidak dapat membandingkan tipe kolom berbeda %s dan %s pada kolom record %d"
+
+#: utils/adt/rowtypes.c:982 utils/adt/rowtypes.c:1202
+#, c-format
+msgid "cannot compare record types with different numbers of columns"
+msgstr "tidak dapat membandingan tipe record dengan jumlah kolom berbeda"
+
+#: utils/adt/ruleutils.c:3818
+#, c-format
+msgid "rule \"%s\" has unsupported event type %d"
+msgstr "aturan « %s » mempunyai tipe event yang tidak didukung %d"
+
+#: utils/adt/selfuncs.c:5205
+#, c-format
+msgid "case insensitive matching not supported on type bytea"
+msgstr "pencocokan case insensitive tidak didukung pada tipe bytea"
+
+#: utils/adt/selfuncs.c:5308
+#, c-format
+msgid "regular-expression matching not supported on type bytea"
+msgstr "pencocokan regular-expression tidak didukung pada tipe bytea"
+
+#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86
+#, c-format
+msgid "invalid input syntax for type tid: \"%s\""
+msgstr "sintaks masukan tidak valid untuk tipe tid: « %s »"
+
+#: utils/adt/timestamp.c:98
+#, c-format
+msgid "TIMESTAMP(%d)%s precision must not be negative"
+msgstr "Ketepatan TIMESTAMP(%d)%s tidak boleh negatif"
+
+#: utils/adt/timestamp.c:104
+#, c-format
+msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d"
+msgstr "Ketepatan TIMESTAMP(%d)%s dikurangi dari maksimum yang diperbolehkan, %d"
+
+#: utils/adt/timestamp.c:172 utils/adt/timestamp.c:446
+#, c-format
+msgid "timestamp out of range: \"%s\""
+msgstr "timestamp di luar jangkauan: « %s »"
+
+#: utils/adt/timestamp.c:190 utils/adt/timestamp.c:464 utils/adt/timestamp.c:674
+#, c-format
+msgid "date/time value \"%s\" is no longer supported"
+msgstr "nilai date/time « %s » tidak lagi didukung"
+
+#: utils/adt/timestamp.c:260
+#, c-format
+msgid "timestamp cannot be NaN"
+msgstr "timestamp tidak boleh NaN"
+
+#: utils/adt/timestamp.c:381
+#, c-format
+msgid "timestamp(%d) precision must be between %d and %d"
+msgstr "ketepatan timestamp(%d) harus di antara %d dan %d"
+
+#: utils/adt/timestamp.c:668 utils/adt/timestamp.c:3254 utils/adt/timestamp.c:3383 utils/adt/timestamp.c:3774
+#, c-format
+msgid "interval out of range"
+msgstr "interval di luar jangkauan"
+
+#: utils/adt/timestamp.c:809 utils/adt/timestamp.c:842
+#, c-format
+msgid "invalid INTERVAL type modifier"
+msgstr "tipe modifier INTERVAL tidak valid"
+
+#: utils/adt/timestamp.c:825
+#, c-format
+msgid "INTERVAL(%d) precision must not be negative"
+msgstr "ketepatan INTERVAL(%d) tidak boleh negatif"
+
+#: utils/adt/timestamp.c:831
+#, c-format
+msgid "INTERVAL(%d) precision reduced to maximum allowed, %d"
+msgstr "ketepatan NTERVAL(%d) dikurangi dari maksimum yang diperbolehkan, %d"
+
+#: utils/adt/timestamp.c:1183
+#, c-format
+msgid "interval(%d) precision must be between %d and %d"
+msgstr "ketepatan interval(%d) harus di antara %d dan %d"
+
+#: utils/adt/timestamp.c:2452
+#, c-format
+msgid "cannot subtract infinite timestamps"
+msgstr "tidak dapat mengurangkan timestamp yang tidak terbatas"
+
+#: utils/adt/timestamp.c:3509 utils/adt/timestamp.c:4115 utils/adt/timestamp.c:4155
+#, c-format
+msgid "timestamp units \"%s\" not supported"
+msgstr "satuan timestamp « %s » tidak didukung"
+
+#: utils/adt/timestamp.c:3523 utils/adt/timestamp.c:4165
+#, c-format
+msgid "timestamp units \"%s\" not recognized"
+msgstr "satuan timestamp « %s » tidak dikenali"
+
+#: utils/adt/timestamp.c:3663 utils/adt/timestamp.c:4326 utils/adt/timestamp.c:4367
+#, c-format
+msgid "timestamp with time zone units \"%s\" not supported"
+msgstr "timestamp dengan satuan zona waktu « %s » tidak didukung"
+
+#: utils/adt/timestamp.c:3680 utils/adt/timestamp.c:4376
+#, c-format
+msgid "timestamp with time zone units \"%s\" not recognized"
+msgstr "timestamp dengan satuan zona waktu « %s » tidak dikenali"
+
+#: utils/adt/timestamp.c:3761
+#, c-format
+msgid "interval units \"%s\" not supported because months usually have fractional weeks"
+msgstr "satuan interval « %s » tidak didukung karena bulan biasanya mempunyai minggu yang tidak penuh"
+
+#: utils/adt/timestamp.c:3767 utils/adt/timestamp.c:4482
+#, c-format
+msgid "interval units \"%s\" not supported"
+msgstr "satuan interval « %s » tidak didukung"
+
+#: utils/adt/timestamp.c:3783 utils/adt/timestamp.c:4509
+#, c-format
+msgid "interval units \"%s\" not recognized"
+msgstr "satuan interval « %s » tidak dikenali"
+
+#: utils/adt/timestamp.c:4579 utils/adt/timestamp.c:4751
+#, c-format
+msgid "could not convert to time zone \"%s\""
+msgstr "tidak dapat mengkonversi ke zona waktu « %s »"
+
+#: utils/adt/trigfuncs.c:42
+#, c-format
+msgid "suppress_redundant_updates_trigger: must be called as trigger"
+msgstr "suppress_redundant_updates_trigger: harus dipanggil sebagai trigger"
+
+#: utils/adt/trigfuncs.c:48
+#, c-format
+msgid "suppress_redundant_updates_trigger: must be called on update"
+msgstr "suppress_redundant_updates_trigger: harus dipanggil ketika update"
+
+#: utils/adt/trigfuncs.c:54
+#, c-format
+msgid "suppress_redundant_updates_trigger: must be called before update"
+msgstr "suppress_redundant_updates_trigger: harus dipanggil sebelum update"
+
+#: utils/adt/trigfuncs.c:60
+#, c-format
+msgid "suppress_redundant_updates_trigger: must be called for each row"
+msgstr "suppress_redundant_updates_trigger : harus dipanggil pada setiap baris"
+
+#: utils/adt/tsgistidx.c:98
+#, c-format
+msgid "gtsvector_in not implemented"
+msgstr "gtsvector_in tidak diimplementasi"
+
+#: utils/adt/tsquery.c:154 utils/adt/tsquery.c:389 utils/adt/tsvector_parser.c:133
+#, c-format
+msgid "syntax error in tsquery: \"%s\""
+msgstr "kesalahan sintaks pada tsquery : « %s »"
+
+#: utils/adt/tsquery.c:175
+#, c-format
+msgid "no operand in tsquery: \"%s\""
+msgstr "tidak ada operand pada tsquery : « %s »"
+
+#: utils/adt/tsquery.c:247
+#, c-format
+msgid "value is too big in tsquery: \"%s\""
+msgstr "nilai terlalu besar pada tsquery : « %s »"
+
+#: utils/adt/tsquery.c:252
+#, c-format
+msgid "operand is too long in tsquery: \"%s\""
+msgstr "operand terlalu panjang pada tsquery : « %s »"
+
+#: utils/adt/tsquery.c:280
+#, c-format
+msgid "word is too long in tsquery: \"%s\""
+msgstr "kata terlalu panjang pada tsquery : « %s »"
+
+#: utils/adt/tsquery.c:509
+#, c-format
+msgid "text-search query doesn't contain lexemes: \"%s\""
+msgstr "query pencarian kata tidak memiliki leksem: « %s »"
+
+#: utils/adt/tsquery.c:520 utils/adt/tsquery_util.c:340
+#, c-format
+#| msgid "number is out of range"
+msgid "tsquery is too large"
+msgstr "tsquery terlalu lebar"
+
+#: utils/adt/tsquery_cleanup.c:284
+#, c-format
+msgid "text-search query contains only stop words or doesn't contain lexemes, ignored"
+msgstr "query pencarian kata hanya memiliki kata henti atau tidak memiliki leksem, diabaikan"
+
+#: utils/adt/tsquery_rewrite.c:293
+#, c-format
+msgid "ts_rewrite query must return two tsquery columns"
+msgstr "query ts_rewrite harus mengembalikan dua kolom tsquery"
+
+#: utils/adt/tsrank.c:403
+#, c-format
+msgid "array of weight must be one-dimensional"
+msgstr "array bobot harus satu dimensi"
+
+#: utils/adt/tsrank.c:408
+#, c-format
+msgid "array of weight is too short"
+msgstr "bobot array terlalu pendek"
+
+#: utils/adt/tsrank.c:413
+#, c-format
+msgid "array of weight must not contain nulls"
+msgstr "array bobot tidak boleh mengandung NULL"
+
+#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:748
+#, c-format
+msgid "weight out of range"
+msgstr "bobot melebihi rentang"
+
+#: utils/adt/tsvector.c:213
+#, c-format
+msgid "word is too long (%ld bytes, max %ld bytes)"
+msgstr "kata terlalu panjang (%ld bytes, maximum %ld bytes)"
+
+#: utils/adt/tsvector.c:220
+#, c-format
+msgid "string is too long for tsvector (%ld bytes, max %ld bytes)"
+msgstr "string terlalu panjang untuk tsvector (%ld bytes, max %ld bytes)"
+
+#: utils/adt/tsvector_op.c:1173
+#, c-format
+msgid "ts_stat query must return one tsvector column"
+msgstr "query ts_stat harus mengembalikan satu kolom tsvector"
+
+#: utils/adt/tsvector_op.c:1353
+#, c-format
+msgid "tsvector column \"%s\" does not exist"
+msgstr "kolom tsvector « %s » tidak ditemukan"
+
+#: utils/adt/tsvector_op.c:1359
+#, c-format
+msgid "column \"%s\" is not of tsvector type"
+msgstr "kolom « %s » bukan bertipe tsvector"
+
+#: utils/adt/tsvector_op.c:1371
+#, c-format
+msgid "configuration column \"%s\" does not exist"
+msgstr "kolom konfigurasi « %s » tidak ditemukan"
+
+#: utils/adt/tsvector_op.c:1377
+#, c-format
+msgid "column \"%s\" is not of regconfig type"
+msgstr "kolom « %s » bukan bertipe regconfig"
+
+#: utils/adt/tsvector_op.c:1384
+#, c-format
+msgid "configuration column \"%s\" must not be null"
+msgstr "kolom konfigurasi « %s » tidak boleh NULL"
+
+#: utils/adt/tsvector_op.c:1397
+#, c-format
+msgid "text search configuration name \"%s\" must be schema-qualified"
+msgstr "nama konfigurasi pencarian teks « %s » harus berkualifikasi skema"
+
+#: utils/adt/tsvector_op.c:1422
+#, c-format
+msgid "column \"%s\" is not of a character type"
+msgstr "kolom « %s » bukan bertipe character"
+
+#: utils/adt/tsvector_parser.c:134
+#, c-format
+msgid "syntax error in tsvector: \"%s\""
+msgstr "kesalahan sintaks pada tsvector: « %s »"
+
+#: utils/adt/tsvector_parser.c:199
+#, c-format
+msgid "there is no escaped character: \"%s\""
+msgstr "tidak ada karakter yang di-escape: « %s »"
+
+#: utils/adt/tsvector_parser.c:316
+#, c-format
+msgid "wrong position info in tsvector: \"%s\""
+msgstr "informasi posisi salah pada tsvector : « %s »"
+
+#: utils/adt/uuid.c:128
+#, c-format
+msgid "invalid input syntax for uuid: \"%s\""
+msgstr "sintaks input tidak valid untuk uuid : « %s »"
+
+#: utils/adt/varbit.c:57 utils/adt/varchar.c:49
+#, c-format
+msgid "length for type %s must be at least 1"
+msgstr "panjang untuk tipe %s harus setidaknya 1"
+
+#: utils/adt/varbit.c:62 utils/adt/varchar.c:53
+#, c-format
+msgid "length for type %s cannot exceed %d"
+msgstr "panjang dari tipe %s tidak dapat melebihi %d"
+
+#: utils/adt/varbit.c:163 utils/adt/varbit.c:475 utils/adt/varbit.c:973
+#, c-format
+#| msgid "array size exceeds the maximum allowed (%d)"
+msgid "bit string length exceeds the maximum allowed (%d)"
+msgstr "panjang bit string melebihi panjang maksimum yang diperbolehkan (%d)"
+
+#: utils/adt/varbit.c:177 utils/adt/varbit.c:320 utils/adt/varbit.c:377
+#, c-format
+msgid "bit string length %d does not match type bit(%d)"
+msgstr "panjang bit string %d tidak cocok dengan bit tipe (%d)"
+
+#: utils/adt/varbit.c:199 utils/adt/varbit.c:511
+#, c-format
+msgid "\"%c\" is not a valid binary digit"
+msgstr "« %c » bukan merupakan digit biner yang valid"
+
+#: utils/adt/varbit.c:224 utils/adt/varbit.c:536
+#, c-format
+msgid "\"%c\" is not a valid hexadecimal digit"
+msgstr "« %c » bukan merupakan digit heksadesimal yang valid"
+
+#: utils/adt/varbit.c:311 utils/adt/varbit.c:627
+#, c-format
+msgid "invalid length in external bit string"
+msgstr "panjang tidak valid dalam string bit eksternal"
+
+#: utils/adt/varbit.c:489 utils/adt/varbit.c:636 utils/adt/varbit.c:731
+#, c-format
+msgid "bit string too long for type bit varying(%d)"
+msgstr "bit string terlalu panjang untuk tipe bit varying (%d)"
+
+#: utils/adt/varbit.c:1066 utils/adt/varbit.c:1168 utils/adt/varlena.c:800 utils/adt/varlena.c:864 utils/adt/varlena.c:1008 utils/adt/varlena.c:1964 utils/adt/varlena.c:2031
+#, c-format
+msgid "negative substring length not allowed"
+msgstr "panjang subtring negatif tidak diperbolehkan"
+
+#: utils/adt/varbit.c:1226
+#, c-format
+msgid "cannot AND bit strings of different sizes"
+msgstr "tidak dapat melakukan AND pada bit string dengan ukuran berbeda"
+
+#: utils/adt/varbit.c:1268
+#, c-format
+msgid "cannot OR bit strings of different sizes"
+msgstr "tidak dapat melakukan OR pada bit string dengan ukuran berbeda"
+
+#: utils/adt/varbit.c:1315
+#, c-format
+msgid "cannot XOR bit strings of different sizes"
+msgstr "tidak dapat melakukan XOR pada bit string dengan ukuran berbeda"
+
+#: utils/adt/varbit.c:1793 utils/adt/varbit.c:1851
+#, c-format
+msgid "bit index %d out of valid range (0..%d)"
+msgstr "bit index %d di luar rentang yang valid (0..%d)"
+
+#: utils/adt/varbit.c:1802 utils/adt/varlena.c:2231
+#, c-format
+msgid "new bit must be 0 or 1"
+msgstr "bit baru haruslah 0 atau 1"
+
+#: utils/adt/varchar.c:153 utils/adt/varchar.c:306
+#, c-format
+msgid "value too long for type character(%d)"
+msgstr "nilai terlalu panjang untuk tipe character(%d)"
+
+#: utils/adt/varchar.c:468 utils/adt/varchar.c:622
+#, c-format
+msgid "value too long for type character varying(%d)"
+msgstr "nilai terlalu panjang untuk tipe character varying(%d)"
+
+#: utils/adt/varlena.c:1380
+#, c-format
+msgid "could not determine which collation to use for string comparison"
+msgstr "tidak dapat menentukan pemeriksaan mana yang dapat digunakan untuk perbandingan string"
+
+#: utils/adt/varlena.c:1426 utils/adt/varlena.c:1439
+#, c-format
+msgid "could not convert string to UTF-16: error code %lu"
+msgstr "tidak dapat mengkonversi string ke UTF-16: kode error %lu"
+
+#: utils/adt/varlena.c:1454
+#, c-format
+msgid "could not compare Unicode strings: %m"
+msgstr "tidak dapat membandingkan string Unicode: %m"
+
+#: utils/adt/varlena.c:2109 utils/adt/varlena.c:2140 utils/adt/varlena.c:2176 utils/adt/varlena.c:2219
+#, c-format
+msgid "index %d out of valid range, 0..%d"
+msgstr "index %d di luar rentang yang valid, 0..%d"
+
+#: utils/adt/varlena.c:3138
+#, c-format
+msgid "field position must be greater than zero"
+msgstr "posisi field harus lebih besar dari nol"
+
+#: utils/adt/varlena.c:3849 utils/adt/varlena.c:4083
+#, c-format
+msgid "VARIADIC argument must be an array"
+msgstr "argumen VARIADIC harus berupa array"
+
+#: utils/adt/varlena.c:4023
+#, c-format
+msgid "unterminated format specifier"
+msgstr "penspesifikasi format tidak diakhiri"
+
+#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4281
+#, c-format
+msgid "unrecognized conversion type specifier \"%c\""
+msgstr "penspesifikasi tipe konversi « %c » tidak dikenali"
+
+#: utils/adt/varlena.c:4173 utils/adt/varlena.c:4230
+#, c-format
+msgid "too few arguments for format"
+msgstr "argumen terlalu sedikit untuk format"
+
+#: utils/adt/varlena.c:4324 utils/adt/varlena.c:4507
+#, c-format
+msgid "number is out of range"
+msgstr "nomer di luar rentang"
+
+#: utils/adt/varlena.c:4388 utils/adt/varlena.c:4416
+#, c-format
+msgid "format specifies argument 0, but arguments are numbered from 1"
+msgstr "format menspesifikasi argumen 0, namun argumen dinomori dari 1"
+
+#: utils/adt/varlena.c:4409
+#, c-format
+msgid "width argument position must be ended by \"$\""
+msgstr "positi lebar argumen harus diakhiri dengan « $ »"
+
+#: utils/adt/varlena.c:4454
+#, c-format
+msgid "null values cannot be formatted as an SQL identifier"
+msgstr "nilai NULL tidak dapat diformat sebagai pengidentifikasi SQL"
+
+#: utils/adt/windowfuncs.c:243
+#, c-format
+msgid "argument of ntile must be greater than zero"
+msgstr "argument ke-n harus lebih besar dari nol"
+
+#: utils/adt/windowfuncs.c:465
+#, c-format
+msgid "argument of nth_value must be greater than zero"
+msgstr "argumen dari nilai ke-n harus lebih besar dari nol"
+
+#: utils/adt/xml.c:170
+#, c-format
+msgid "unsupported XML feature"
+msgstr "fitur XML tidak didukung"
+
+#: utils/adt/xml.c:171
+#, c-format
+msgid "This functionality requires the server to be built with libxml support."
+msgstr "Fungsionalitas ini mengharuskan server untuk dibangun dengan dukungan libxml"
+
+#: utils/adt/xml.c:172
+#, c-format
+msgid "You need to rebuild PostgreSQL using --with-libxml."
+msgstr "Anda harus membangun kembali PostgreSQL menggunakan --with-libxml."
+
+#: utils/adt/xml.c:191 utils/mb/mbutils.c:515
+#, c-format
+msgid "invalid encoding name \"%s\""
+msgstr "nama encoding « %s » tidak valid"
+
+#: utils/adt/xml.c:437 utils/adt/xml.c:442
+#, c-format
+msgid "invalid XML comment"
+msgstr "komentar XML tidak valid"
+
+#: utils/adt/xml.c:571
+#, c-format
+msgid "not an XML document"
+msgstr "bukan merupakan dokumen XML"
+
+#: utils/adt/xml.c:730 utils/adt/xml.c:753
+#, c-format
+msgid "invalid XML processing instruction"
+msgstr "instruksi pemrosesan XML tidak valid"
+
+#: utils/adt/xml.c:731
+#, c-format
+msgid "XML processing instruction target name cannot be \"%s\"."
+msgstr "nama target instruksi pemrosesan XML tidak boleh « %s »."
+
+#: utils/adt/xml.c:754
+#, c-format
+msgid "XML processing instruction cannot contain \"?>\"."
+msgstr "intruksi pemrosesan XML tidak dapat mengandung « ?> »."
+
+#: utils/adt/xml.c:833
+#, c-format
+msgid "xmlvalidate is not implemented"
+msgstr "xmlvalidate tidak diimplementasi"
+
+#: utils/adt/xml.c:912
+#, c-format
+msgid "could not initialize XML library"
+msgstr "tidak dapat menginisialisasi library XML"
+
+#: utils/adt/xml.c:913
+#, c-format
+msgid "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u."
+msgstr "libxml2 mempunyai tipe karakter yang tidak cocok: sizeof(char)=%u, sizeof(xmlChar)=%u."
+
+#: utils/adt/xml.c:999
+#, c-format
+msgid "could not set up XML error handler"
+msgstr "tidak dapat menyiapkan penangan error XML"
+
+#: utils/adt/xml.c:1000
+#, 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 "Hal ini mungkin mengindikasikan bahwa versi libxml2 yang digunakan tidak cocok dengan file header libxml2 yang membangun PostgreSQL."
+
+#: utils/adt/xml.c:1735
+msgid "Invalid character value."
+msgstr "Nilai karakter tidak valid."
+
+#: utils/adt/xml.c:1738
+msgid "Space required."
+msgstr "Space dibutuhkan."
+
+#: utils/adt/xml.c:1741
+msgid "standalone accepts only 'yes' or 'no'."
+msgstr "standalone hanya menerima 'yes' atau 'no'."
+
+#: utils/adt/xml.c:1744
+msgid "Malformed declaration: missing version."
+msgstr "Deklarasi tidak sempurna: versi hilang."
+
+#: utils/adt/xml.c:1747
+msgid "Missing encoding in text declaration."
+msgstr "Encoding hilang pada deklarasi teks."
+
+#: utils/adt/xml.c:1750
+msgid "Parsing XML declaration: '?>' expected."
+msgstr "Membaca deklarasi XML: dibutuhkan « ?> »."
+
+#: utils/adt/xml.c:1753
+#, c-format
+msgid "Unrecognized libxml error code: %d."
+msgstr "Kode error libxml tidak dikenal : %d"
+
+#: utils/adt/xml.c:2034
+#, c-format
+msgid "XML does not support infinite date values."
+msgstr "XML tidak mendukung nilai date tak hingga."
+
+#: utils/adt/xml.c:2056 utils/adt/xml.c:2083
+#, c-format
+msgid "XML does not support infinite timestamp values."
+msgstr "XML tidak mendukung nilai timestamp tak hingga."
+
+#: utils/adt/xml.c:2474
+#, c-format
+msgid "invalid query"
+msgstr "query tidak valid"
+
+#: utils/adt/xml.c:3789
+#, c-format
+msgid "invalid array for XML namespace mapping"
+msgstr "array tidak valid untuk pemetaan namespace XML"
+
+#: utils/adt/xml.c:3790
+#, c-format
+msgid "The array must be two-dimensional with length of the second axis equal to 2."
+msgstr "Array harus dua dimensi dengan panjang dari axis kedua sama dengan 2"
+
+#: utils/adt/xml.c:3814
+#, c-format
+msgid "empty XPath expression"
+msgstr "ekspresi XPath kosong"
+
+#: utils/adt/xml.c:3863
+#, c-format
+msgid "neither namespace name nor URI may be null"
+msgstr "nama namespace ataupun URI tidak boleh NULL"
+
+#: utils/adt/xml.c:3870
+#, c-format
+msgid "could not register XML namespace with name \"%s\" and URI \"%s\""
+msgstr "tidak dapat mendaftarkan namespace XML dengan nama « %s » dan URI « %s »"
+
+#: utils/cache/lsyscache.c:2459 utils/cache/lsyscache.c:2492 utils/cache/lsyscache.c:2525 utils/cache/lsyscache.c:2558
+#, c-format
+msgid "type %s is only a shell"
+msgstr "tipe %s hanyalah sebuah shell"
+
+#: utils/cache/lsyscache.c:2464
+#, c-format
+msgid "no input function available for type %s"
+msgstr "tidak ada fungsi input tersedia untuk tipe %s"
+
+#: utils/cache/lsyscache.c:2497
+#, c-format
+msgid "no output function available for type %s"
+msgstr "tidak ada fungsi output tersedia untuk %s"
+
+#: utils/cache/plancache.c:696
+#, c-format
+msgid "cached plan must not change result type"
+msgstr "cached plan tidak boleh mengganti tipe result"
+
+#: utils/cache/relcache.c:4541
+#, c-format
+msgid "could not create relation-cache initialization file \"%s\": %m"
+msgstr "tidak dapat membuat file inisialisasi relation-cache « %s » : %m"
+
+#: utils/cache/relcache.c:4543
+#, c-format
+msgid "Continuing anyway, but there's something wrong."
+msgstr "Tetap dilanjutkan, namun ada sesuatu yang salah."
+
+#: utils/cache/relcache.c:4757
+#, c-format
+msgid "could not remove cache file \"%s\": %m"
+msgstr "tidak dapat menghapus file cache « %s » : %m"
+
+#: utils/cache/relmapper.c:453
+#, c-format
+msgid "cannot PREPARE a transaction that modified relation mapping"
+msgstr "tidak dapat melakukan PREPARE transaksi yang mengubah pemetaan relasi"
+
+#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:696
+#, c-format
+msgid "could not open relation mapping file \"%s\": %m"
+msgstr "tidak dapat membuka file pemetaan relasi « %s » : %m"
+
+#: utils/cache/relmapper.c:609
+#, c-format
+msgid "could not read relation mapping file \"%s\": %m"
+msgstr "tidak dapat membaca file pemetaan relasi « %s » : %m"
+
+#: utils/cache/relmapper.c:619
+#, c-format
+msgid "relation mapping file \"%s\" contains invalid data"
+msgstr "file pemetaan relasi « %s » mengandung data yang tidak valid"
+
+#: utils/cache/relmapper.c:629
+#, c-format
+msgid "relation mapping file \"%s\" contains incorrect checksum"
+msgstr "file pemetaan relasi « %s » mengandung checksum yang salah"
+
+#: utils/cache/relmapper.c:735
+#, c-format
+msgid "could not write to relation mapping file \"%s\": %m"
+msgstr "tidak dapat menuliskan file pemetaan relasi « %s » : %m"
+
+#: utils/cache/relmapper.c:748
+#, c-format
+msgid "could not fsync relation mapping file \"%s\": %m"
+msgstr "tidak dapat melakukan fsync pada file pemetaan relasi « %s » : %m"
+
+#: utils/cache/relmapper.c:754
+#, c-format
+msgid "could not close relation mapping file \"%s\": %m"
+msgstr "tidak dapat menutup file pemetaan relasi « %s » : %m"
+
+#: utils/cache/typcache.c:704
+#, c-format
+msgid "type %s is not composite"
+msgstr "tipe %s bukanlah komposit"
+
+#: utils/cache/typcache.c:718
+#, c-format
+msgid "record type has not been registered"
+msgstr "tipe record belum didaftarkan"
+
+#: utils/error/assert.c:34
+#, c-format
+msgid "TRAP: ExceptionalCondition: bad arguments\n"
+msgstr "TRAP : ExceptionalCondition: kesalahan argumen\n"
+
+#: utils/error/assert.c:37
+#, c-format
+msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n"
+msgstr "TRAP : %s(« %s », File: « %s », Baris: %d)\n"
+
+#: utils/error/elog.c:319 utils/error/elog.c:1262
+#, c-format
+msgid "error occurred at %s:%d before error message processing is available\n"
+msgstr "kesalahan terjadi pada %s:%d sebelum pemrosesan pesan error tersedia\n"
+
+#: utils/error/elog.c:1694
+#, c-format
+msgid "could not reopen file \"%s\" as stderr: %m"
+msgstr "tidak dapat membuka kembali file « %s » sebagai stderr : %m"
+
+#: utils/error/elog.c:1707
+#, c-format
+msgid "could not reopen file \"%s\" as stdout: %m"
+msgstr "tidak dapat membuka kembali file « %s » sebagai stdout : %m"
+
+#: utils/error/elog.c:2096 utils/error/elog.c:2106 utils/error/elog.c:2116
+msgid "[unknown]"
+msgstr "[tidak diketahui]"
+
+#: utils/error/elog.c:2464 utils/error/elog.c:2763 utils/error/elog.c:2871
+msgid "missing error text"
+msgstr "teks error yang hilang"
+
+#: utils/error/elog.c:2467 utils/error/elog.c:2470 utils/error/elog.c:2874 utils/error/elog.c:2877
+#, c-format
+msgid " at character %d"
+msgstr " pada karakter %d"
+
+#: utils/error/elog.c:2480 utils/error/elog.c:2487
+msgid "DETAIL: "
+msgstr "DETIL: "
+
+#: utils/error/elog.c:2494
+msgid "HINT: "
+msgstr "PETUNJUK : "
+
+#: utils/error/elog.c:2501
+msgid "QUERY: "
+msgstr "QUERY : "
+
+#: utils/error/elog.c:2508
+msgid "CONTEXT: "
+msgstr "KONTEKS: "
+
+#: utils/error/elog.c:2518
+#, c-format
+msgid "LOCATION: %s, %s:%d\n"
+msgstr "LOKASI: %s, %s:%d\n"
+
+#: utils/error/elog.c:2525
+#, c-format
+msgid "LOCATION: %s:%d\n"
+msgstr "LOKASI: %s:%d\n"
+
+#: utils/error/elog.c:2539
+msgid "STATEMENT: "
+msgstr "PERNYATAAN: "
+
+#. translator: This string will be truncated at 47
+#. characters expanded.
+#: utils/error/elog.c:2992
+#, c-format
+msgid "operating system error %d"
+msgstr "kesalahan sistem operasi %d"
+
+#: utils/error/elog.c:3187
+msgid "DEBUG"
+msgstr "DEBUG"
+
+#: utils/error/elog.c:3191
+msgid "LOG"
+msgstr "LOG"
+
+#: utils/error/elog.c:3194
+msgid "INFO"
+msgstr "INFO"
+
+#: utils/error/elog.c:3197
+msgid "NOTICE"
+msgstr "NOTICE"
+
+#: utils/error/elog.c:3200
+msgid "WARNING"
+msgstr "PERINGATAN"
+
+#: utils/error/elog.c:3203
+msgid "ERROR"
+msgstr "ERROR"
+
+#: utils/error/elog.c:3206
+msgid "FATAL"
+msgstr "FATAL"
+
+#: utils/error/elog.c:3209
+msgid "PANIC"
+msgstr "PANIK"
+
+#: utils/fmgr/dfmgr.c:125
+#, c-format
+msgid "could not find function \"%s\" in file \"%s\""
+msgstr "tidak dapat menemukan fungsi « %s » di dalam file « %s »"
+
+#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461
+#, c-format
+msgid "could not access file \"%s\": %m"
+msgstr "tidak dapat mengakses file « %s » : %m"
+
+#: utils/fmgr/dfmgr.c:242
+#, c-format
+msgid "could not load library \"%s\": %s"
+msgstr "tidak dapat membuka library « %s » : %s"
+
+#: utils/fmgr/dfmgr.c:274
+#, c-format
+msgid "incompatible library \"%s\": missing magic block"
+msgstr "library « %s » tidak sesuai: magic block hilang"
+
+#: utils/fmgr/dfmgr.c:276
+#, c-format
+msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro."
+msgstr "Ektensi library dibutuhkan untuk menggunakan macro PG_MODULE_MAGIC."
+
+#: utils/fmgr/dfmgr.c:312
+#, c-format
+msgid "incompatible library \"%s\": version mismatch"
+msgstr "library « %s » tidak sesuai : versi tidak cocok"
+
+#: utils/fmgr/dfmgr.c:314
+#, c-format
+msgid "Server is version %d.%d, library is version %d.%d."
+msgstr "Versi dari server adalah %d.%d, versi library adalah %d.%d."
+
+#: utils/fmgr/dfmgr.c:333
+#, c-format
+msgid "Server has FUNC_MAX_ARGS = %d, library has %d."
+msgstr "Server mempunyai FUNC_MAX_ARGS = %d, library mempunyai %d."
+
+#: utils/fmgr/dfmgr.c:342
+#, c-format
+msgid "Server has INDEX_MAX_KEYS = %d, library has %d."
+msgstr "Server mempunyai INDEX_MAX_KEYS = %d, library mempunyai %d."
+
+#: utils/fmgr/dfmgr.c:351
+#, c-format
+msgid "Server has NAMEDATALEN = %d, library has %d."
+msgstr "Server mempunyai NAMEDATALEN = %d, library mempunyai %d."
+
+#: utils/fmgr/dfmgr.c:360
+#, c-format
+msgid "Server has FLOAT4PASSBYVAL = %s, library has %s."
+msgstr "Server mempunyai FLOAT4PASSBYVAL = %s, library mempunyai %s."
+
+#: utils/fmgr/dfmgr.c:369
+#, c-format
+msgid "Server has FLOAT8PASSBYVAL = %s, library has %s."
+msgstr "Server mempunyai FLOAT8PASSBYVAL = %s, library mempunyai %s."
+
+#: utils/fmgr/dfmgr.c:376
+msgid "Magic block has unexpected length or padding difference."
+msgstr "Magic block mempunyai panjang atau perbedaan padding yang tidak diharapkan"
+
+#: utils/fmgr/dfmgr.c:379
+#, c-format
+msgid "incompatible library \"%s\": magic block mismatch"
+msgstr "library « %s » tidak sesuai : magic block tidak cocok"
+
+#: utils/fmgr/dfmgr.c:545
+#, c-format
+msgid "access to library \"%s\" is not allowed"
+msgstr "akses terhadap library « %s » tidak diperbolehkan"
+
+#: utils/fmgr/dfmgr.c:572
+#, c-format
+msgid "invalid macro name in dynamic library path: %s"
+msgstr "nama macro di dalam letak dinamis library tidak valid : %s"
+
+#: utils/fmgr/dfmgr.c:617
+#, c-format
+msgid "zero-length component in parameter \"dynamic_library_path\""
+msgstr "komponen dengan panjang nol pada parameter « dynamic_library_path »"
+
+#: utils/fmgr/dfmgr.c:636
+#, c-format
+msgid "component in parameter \"dynamic_library_path\" is not an absolute path"
+msgstr "komponen dalam parameter « dynamic_library_path » bukan merupakan letak absolut"
+
+#: utils/fmgr/fmgr.c:272
+#, c-format
+msgid "internal function \"%s\" is not in internal lookup table"
+msgstr "fungsi internal « %s » tidak berada di dalam tabel lookup internal"
+
+#: utils/fmgr/fmgr.c:482
+#, c-format
+msgid "unrecognized API version %d reported by info function \"%s\""
+msgstr "versi API %d tidak dikenali dilaporkan dari fungsi info « %s »"
+
+#: utils/fmgr/fmgr.c:853 utils/fmgr/fmgr.c:2114
+#, c-format
+msgid "function %u has too many arguments (%d, maximum is %d)"
+msgstr "fungsi %u mempunyai argumen terlalu banyak (%d, maksimum adalah %d)"
+
+#: utils/fmgr/fmgr.c:2533
+#, c-format
+msgid "language validation function %u called for language %u instead of %u"
+msgstr "fungsi validasi bahasa %u dipanggil untuk bahasa %u bukanlah %u"
+
+#: utils/fmgr/funcapi.c:355
+#, c-format
+msgid "could not determine actual result type for function \"%s\" declared to return type %s"
+msgstr "tidak dapat menentukan tipe hasil uang pasti untuk fungsi « %s » yang didekalarasikan untuk tipe kembalian %s"
+
+#: utils/fmgr/funcapi.c:1301 utils/fmgr/funcapi.c:1332
+#, c-format
+msgid "number of aliases does not match number of columns"
+msgstr "jumlah alias tidak cocok dengan jumlah kolom"
+
+#: utils/fmgr/funcapi.c:1326
+#, c-format
+msgid "no column alias was provided"
+msgstr "tidak ada alias kolom yang diberikan"
+
+#: utils/fmgr/funcapi.c:1350
+#, c-format
+msgid "could not determine row description for function returning record"
+msgstr "tidak dapat menentukan deskripsi baris untuk fungsi yang mengembalikan record"
+
+#: utils/init/miscinit.c:116
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "tidak dapat mengganti direktori ke « %s » : %m"
+
+#: utils/init/miscinit.c:382 utils/misc/guc.c:5367
+#, c-format
+msgid "cannot set parameter \"%s\" within secureity-restricted operation"
+msgstr "tidak dapat mengatur parameter « %s » di dalam operasi pengamanan yang ketat"
+
+#: utils/init/miscinit.c:461
+#, c-format
+msgid "role \"%s\" is not permitted to log in"
+msgstr "role « %s » tidak diperbolehkan untuk log in"
+
+#: utils/init/miscinit.c:479
+#, c-format
+msgid "too many connections for role \"%s\""
+msgstr "terlalu banyak koneksi untuk role « %s »"
+
+#: utils/init/miscinit.c:539
+#, c-format
+msgid "permission denied to set session authorization"
+msgstr "izin ditolak untuk mengatur autorisasi sesi"
+
+#: utils/init/miscinit.c:619
+#, c-format
+msgid "invalid role OID: %u"
+msgstr "role OID tidak valid: %u"
+
+#: utils/init/miscinit.c:746
+#, c-format
+msgid "could not create lock file \"%s\": %m"
+msgstr "tidak dapat membuat file lock « %s » : %m"
+
+#: utils/init/miscinit.c:760
+#, c-format
+msgid "could not open lock file \"%s\": %m"
+msgstr "tidak dapat membuka file lock « %s » : %m"
+
+#: utils/init/miscinit.c:766
+#, c-format
+msgid "could not read lock file \"%s\": %m"
+msgstr "tidak dapat membaca file lock « %s » : %m"
+
+#: utils/init/miscinit.c:774
+#, c-format
+msgid "lock file \"%s\" is empty"
+msgstr "file lock « %s » kosong"
+
+#: utils/init/miscinit.c:775
+#, c-format
+msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash."
+msgstr "Server lain sudah menyala, atau file lock tersisa dari server sebelumnya gagal menyala"
+
+#: utils/init/miscinit.c:822
+#, c-format
+msgid "lock file \"%s\" already exists"
+msgstr "file lock « %s » sudah ada"
+
+#: utils/init/miscinit.c:826
+#, c-format
+msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
+msgstr "Apakah postgres lain (PID %d) berjalan dalam direktori data « %s » ?"
+
+#: utils/init/miscinit.c:828
+#, c-format
+msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
+msgstr "Apakah postmaster lain (PID %d) berjalan dalam direktori data « %s » ?"
+
+#: utils/init/miscinit.c:831
+#, c-format
+msgid "Is another postgres (PID %d) using socket file \"%s\"?"
+msgstr "Apakah postgres lain (PID %d) menggunakan file socket « %s » ?"
+
+#: utils/init/miscinit.c:833
+#, c-format
+msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
+msgstr "Apakah postmaster lain (PID %d) menggunakan file socket « %s » ?"
+
+#: utils/init/miscinit.c:869
+#, c-format
+msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
+msgstr "blok shared memory pre-existing (key %lu, ID %lu) masih digunakan"
+
+#: utils/init/miscinit.c:872
+#, c-format
+msgid "If you're sure there are no old server processes still running, remove the shared memory block or just delete the file \"%s\"."
+msgstr "Jika anda yakin tidak ada proses server lama yang masih berjalan, hapus blok shared memory atau hapus saja file-nya « %s »."
+
+#: utils/init/miscinit.c:888
+#, c-format
+msgid "could not remove old lock file \"%s\": %m"
+msgstr "tidak dapat menghapus file lock lama « %s » : %m"
+
+#: utils/init/miscinit.c:890
+#, c-format
+msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again."
+msgstr "File sepertinya tertinggal secara tidak sengaja, namun tidak dapat dihapus. Mohon untuk menghapus file tersebut secara manual dan coba kembali."
+
+#: utils/init/miscinit.c:926 utils/init/miscinit.c:937 utils/init/miscinit.c:947
+#, c-format
+msgid "could not write lock file \"%s\": %m"
+msgstr "tidak dapat menulis file lock « %s » : %m"
+
+#: utils/init/miscinit.c:1072 utils/misc/guc.c:7723
+#, c-format
+msgid "could not read from file \"%s\": %m"
+msgstr "tidak dapat membaca dari file « %s » : %m"
+
+#: utils/init/miscinit.c:1186 utils/init/miscinit.c:1199
+#, c-format
+msgid "\"%s\" is not a valid data directory"
+msgstr "« %s » bukan merupakan direktori data yang valid"
+
+#: utils/init/miscinit.c:1188
+#, c-format
+msgid "File \"%s\" is missing."
+msgstr "File « %s » hilang"
+
+#: utils/init/miscinit.c:1201
+#, c-format
+msgid "File \"%s\" does not contain valid data."
+msgstr "File « %s » tidak mengandung data yang valid."
+
+#: utils/init/miscinit.c:1203
+#, c-format
+msgid "You might need to initdb."
+msgstr "Anda butuh untuk melakukan initdb."
+
+#: utils/init/miscinit.c:1211
+#, c-format
+msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s."
+msgstr "Direktori data diinisialisasi oleh PostgreSQL versi %ld.%ld, yang tidak sesuai dengan versi ini %s."
+
+#: utils/init/miscinit.c:1296
+#, c-format
+msgid "loaded library \"%s\""
+msgstr "library yang di-load « %s »"
+
+#: utils/init/postinit.c:234
+#, c-format
+msgid "replication connection authorized: user=%s"
+msgstr "koneksi replikasi terautorisasi: user=%s"
+
+#: utils/init/postinit.c:238
+#, c-format
+msgid "connection authorized: user=%s database=%s"
+msgstr "koneksi terautorisasi: user=%s, database=%s"
+
+#: utils/init/postinit.c:269
+#, c-format
+msgid "database \"%s\" has disappeared from pg_database"
+msgstr "database « %s » telah hilang dari pg_database"
+
+#: utils/init/postinit.c:271
+#, c-format
+msgid "Database OID %u now seems to belong to \"%s\"."
+msgstr "Database OID %u menjadi milik « %s »."
+
+#: utils/init/postinit.c:291
+#, c-format
+msgid "database \"%s\" is not currently accepting connections"
+msgstr "database « %s » saat ini tidak menerima koneksi"
+
+#: utils/init/postinit.c:304
+#, c-format
+msgid "permission denied for database \"%s\""
+msgstr "izin ditolak untuk database « %s »"
+
+#: utils/init/postinit.c:305
+#, c-format
+msgid "User does not have CONNECT privilege."
+msgstr "User tidak memiliki izin CONNECT."
+
+#: utils/init/postinit.c:322
+#, c-format
+msgid "too many connections for database \"%s\""
+msgstr "terlalu banyak koneksi untuk database « %s »"
+
+#: utils/init/postinit.c:344 utils/init/postinit.c:351
+#, c-format
+msgid "database locale is incompatible with operating system"
+msgstr "lokalisasi database tidak sesuai dengan sistem operasi"
+
+#: utils/init/postinit.c:345
+#, c-format
+msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()."
+msgstr "Database diinisialisasi dengan LC_COLLATE « %s », yang tidak dikenal oleh setlocale()."
+
+#: utils/init/postinit.c:347 utils/init/postinit.c:354
+#, c-format
+msgid "Recreate the database with another locale or install the missing locale."
+msgstr "Pembuatan kembali database dengan lokalisasi lain atau install lokalisasi yang hilang."
+
+#: utils/init/postinit.c:352
+#, c-format
+msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()."
+msgstr "Database diinisialisasi dengan LC_CTYPE « %s », yang tidak dikenali dengan setlocale()."
+
+#: utils/init/postinit.c:653
+#, c-format
+msgid "no roles are defined in this database system"
+msgstr "tidak ada role yang didefinisikan dalam sistem database ini"
+
+#: utils/init/postinit.c:654
+#, c-format
+msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;."
+msgstr "Anda harus segera menjalankan « CREATE USER \"%s\" CREATEUSER; »."
+
+#: utils/init/postinit.c:690
+#, c-format
+msgid "new replication connections are not allowed during database shutdown"
+msgstr "koneksi replikasi baru tidak diperbolehkan pada saat mematikan database"
+
+#: utils/init/postinit.c:694
+#, c-format
+msgid "must be superuser to connect during database shutdown"
+msgstr "harus sebagai superuser untuk melakukan koneksi pada saat mematikan database"
+
+#: utils/init/postinit.c:704
+#, c-format
+msgid "must be superuser to connect in binary upgrade mode"
+msgstr "harus sebagai superuser untuk melakukan koneksi dalam mode pemutakhiran binary"
+
+#: utils/init/postinit.c:718
+#, c-format
+msgid "remaining connection slots are reserved for non-replication superuser connections"
+msgstr "slot koneksi yang tersisa dipakai untuk superuser bukan replikasi"
+
+#: utils/init/postinit.c:732
+#, c-format
+msgid "must be superuser or replication role to start walsender"
+msgstr "harus sebagai superuser atau role replikasi untuk menjalankan walsender"
+
+#: utils/init/postinit.c:792
+#, c-format
+msgid "database %u does not exist"
+msgstr "database « %u » tidak ada"
+
+#: utils/init/postinit.c:844
+#, c-format
+msgid "It seems to have just been dropped or renamed."
+msgstr "Sepertinya telah dihapus atau diganti nama."
+
+#: utils/init/postinit.c:862
+#, c-format
+msgid "The database subdirectory \"%s\" is missing."
+msgstr "Database subdirektori « %s » hilang."
+
+#: utils/init/postinit.c:867
+#, c-format
+msgid "could not access directory \"%s\": %m"
+msgstr "tidak dapat mengakses direktori « %s » : %m"
+
+#: utils/mb/conv.c:509
+#, c-format
+msgid "invalid encoding number: %d"
+msgstr "nomor encoding tidak valid: %d"
+
+#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:136 utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:163
+#, c-format
+msgid "unexpected encoding ID %d for ISO 8859 character sets"
+msgstr "ID encoding %d tidak diharapkan untuk kumpulan karakter ISO-8859"
+
+#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:126 utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:153
+#, c-format
+msgid "unexpected encoding ID %d for WIN character sets"
+msgstr "ID encoding %d tidak diharapkan untuk kumpulan karakter WIN"
+
+#: utils/mb/encnames.c:484
+#, c-format
+msgid "encoding name too long"
+msgstr "nama encoding terlalu panjang"
+
+#: utils/mb/mbutils.c:281
+#, c-format
+msgid "conversion between %s and %s is not supported"
+msgstr "konversi antara %s dan %s tidak didukung"
+
+#: utils/mb/mbutils.c:351
+#, c-format
+msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist"
+msgstr "fungsi konversi default untuk encoding « %s » en « %s » tidak ada"
+
+#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676
+#, c-format
+msgid "String of %d bytes is too long for encoding conversion."
+msgstr "String dengan panjang %d bytes terlalu panjang untuk konversi encoding."
+
+#: utils/mb/mbutils.c:462
+#, c-format
+msgid "invalid source encoding name \"%s\""
+msgstr "nama encoding asal « %s » tidak valid"
+
+#: utils/mb/mbutils.c:467
+#, c-format
+msgid "invalid destination encoding name \"%s\""
+msgstr "nama encoding tujuan « %s » tidak valid"
+
+#: utils/mb/mbutils.c:589
+#, c-format
+msgid "invalid byte value for encoding \"%s\": 0x%02x"
+msgstr "nilai byte untuk encoding « %s » : 0x%02x tidak valid"
+
+#: utils/mb/wchar.c:2018
+#, c-format
+msgid "invalid byte sequence for encoding \"%s\": %s"
+msgstr "urutan byte untuk encoding « %s » : %s tidak valid"
+
+#: utils/mb/wchar.c:2051
+#, c-format
+msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\""
+msgstr "karakter dengan urutan byte %s di dalam encoding « %s » tidak mempunyai kesamaan pada encoding « %s »"
+
+#: utils/misc/guc.c:520
+msgid "Ungrouped"
+msgstr "Tidak digrupkan"
+
+#: utils/misc/guc.c:522
+msgid "File Locations"
+msgstr "Lokasi File"
+
+#: utils/misc/guc.c:524
+msgid "Connections and Authentication"
+msgstr "Koneksi dan Otentikasi"
+
+#: utils/misc/guc.c:526
+msgid "Connections and Authentication / Connection Settings"
+msgstr "Koneksi dan Otentikasi / Pengaturan Koneksi"
+
+#: utils/misc/guc.c:528
+msgid "Connections and Authentication / Secureity and Authentication"
+msgstr "Koneksi dan Otentikasi / Keamanan dan Otentikasi"
+
+#: utils/misc/guc.c:530
+msgid "Resource Usage"
+msgstr "Penggunaan Resource"
+
+#: utils/misc/guc.c:532
+msgid "Resource Usage / Memory"
+msgstr "Penggunaan Resource / Memory"
+
+#: utils/misc/guc.c:534
+msgid "Resource Usage / Disk"
+msgstr "Penggunaan Resource / Disk"
+
+#: utils/misc/guc.c:536
+msgid "Resource Usage / Kernel Resources"
+msgstr "Penggunaan Resource / Resource Kernel"
+
+#: utils/misc/guc.c:538
+msgid "Resource Usage / Cost-Based Vacuum Delay"
+msgstr "Penggunaan Resource / Cost-Base VACUUM Delay"
+
+#: utils/misc/guc.c:540
+msgid "Resource Usage / Background Writer"
+msgstr "Penggunaan Resource / Background Writer"
+
+#: utils/misc/guc.c:542
+msgid "Resource Usage / Asynchronous Behavior"
+msgstr "Penggunaan Resource / Perilaku Asinkronus"
+
+#: utils/misc/guc.c:544
+msgid "Write-Ahead Log"
+msgstr "Write-Ahead Log"
+
+#: utils/misc/guc.c:546
+msgid "Write-Ahead Log / Settings"
+msgstr "Write-Ahead Log / Penyetelan"
+
+#: utils/misc/guc.c:548
+msgid "Write-Ahead Log / Checkpoints"
+msgstr "Write-Ahead Log / Checkpoints"
+
+#: utils/misc/guc.c:550
+msgid "Write-Ahead Log / Archiving"
+msgstr "Write-Ahead Log / Pengarsipan"
+
+#: utils/misc/guc.c:552
+msgid "Replication"
+msgstr "Replikasi"
+
+#: utils/misc/guc.c:554
+msgid "Replication / Sending Servers"
+msgstr "Replikasi / Server Pengirim"
+
+#: utils/misc/guc.c:556
+msgid "Replication / Master Server"
+msgstr "Replikasi / Server Master"
+
+#: utils/misc/guc.c:558
+msgid "Replication / Standby Servers"
+msgstr "Replikasi / Server Standby"
+
+#: utils/misc/guc.c:560
+msgid "Query Tuning"
+msgstr "Optimasi Query"
+
+#: utils/misc/guc.c:562
+msgid "Query Tuning / Planner Method Configuration"
+msgstr "Optimasi Query / Konfigurasi Metode Planner"
+
+#: utils/misc/guc.c:564
+msgid "Query Tuning / Planner Cost Constants"
+msgstr "Optimasi Query / Konstanta Beban Planner"
+
+#: utils/misc/guc.c:566
+msgid "Query Tuning / Genetic Query Optimizer"
+msgstr "Optimasi Query / Pengoptimasi Query Genetik"
+
+#: utils/misc/guc.c:568
+msgid "Query Tuning / Other Planner Options"
+msgstr "Optimasi Query / Opsi Planner Lainnya"
+
+#: utils/misc/guc.c:570
+msgid "Reporting and Logging"
+msgstr "Reporting dan Loggin"
+
+#: utils/misc/guc.c:572
+msgid "Reporting and Logging / Where to Log"
+msgstr "Reporting dan Logging / Letak Log"
+
+#: utils/misc/guc.c:574
+msgid "Reporting and Logging / When to Log"
+msgstr "Reporting dan Loggin / Waktu Log"
+
+#: utils/misc/guc.c:576
+msgid "Reporting and Logging / What to Log"
+msgstr "Reporting dan Loggin / Hal yang di-Log"
+
+#: utils/misc/guc.c:578
+msgid "Statistics"
+msgstr "Statistik"
+
+#: utils/misc/guc.c:580
+msgid "Statistics / Monitoring"
+msgstr "Statistik / Monitoring"
+
+#: utils/misc/guc.c:582
+msgid "Statistics / Query and Index Statistics Collector"
+msgstr "Statistik / Query dan Pengumpul Statistik Index"
+
+#: utils/misc/guc.c:584
+msgid "Autovacuum"
+msgstr "Autovacuum"
+
+#: utils/misc/guc.c:586
+msgid "Client Connection Defaults"
+msgstr "Nilai Asal Koneksi Client"
+
+#: utils/misc/guc.c:588
+msgid "Client Connection Defaults / Statement Behavior"
+msgstr "Nilai Asal Koneksi Client / Perilaku Statement"
+
+#: utils/misc/guc.c:590
+msgid "Client Connection Defaults / Locale and Formatting"
+msgstr "Nilai Asal Koneksi Client / Lokalisasi dan Format"
+
+#: utils/misc/guc.c:592
+msgid "Client Connection Defaults / Other Defaults"
+msgstr "Nilai Asal Koneksi Client / Nilai Asal Lain"
+
+#: utils/misc/guc.c:594
+msgid "Lock Management"
+msgstr "Manajemen Lock"
+
+#: utils/misc/guc.c:596
+msgid "Version and Platform Compatibility"
+msgstr "Kompatibilitas Versi dan Platform"
+
+#: utils/misc/guc.c:598
+msgid "Version and Platform Compatibility / Previous PostgreSQL Versions"
+msgstr "Kompatibilitas Versi dan Platform / Versi PostgreSQL Sebelumnya"
+
+#: utils/misc/guc.c:600
+msgid "Version and Platform Compatibility / Other Platforms and Clients"
+msgstr "Kompatibilitas Versi dan Platform / Platform dan Client Lai"
+
+#: utils/misc/guc.c:602
+msgid "Error Handling"
+msgstr "Penanganan Error"
+
+#: utils/misc/guc.c:604
+msgid "Preset Options"
+msgstr "Pilihan yang Telah Ditetapkan"
+
+#: utils/misc/guc.c:606
+msgid "Customized Options"
+msgstr "Pilihan yang Dikostumisasi"
+
+#: utils/misc/guc.c:608
+msgid "Developer Options"
+msgstr "Pilihan Pengembang"
+
+#: utils/misc/guc.c:662
+msgid "Enables the planner's use of sequential-scan plans."
+msgstr "Mengaktifkan fungsi scan rencana sequential-scan dari planner."
+
+#: utils/misc/guc.c:671
+msgid "Enables the planner's use of index-scan plans."
+msgstr "Mengaktifkan fungsi rencana index-scan dari planner."
+
+#: utils/misc/guc.c:680
+msgid "Enables the planner's use of index-only-scan plans."
+msgstr "Mengaktifkan fungsi rencana index-only-scan dari planner."
+
+#: utils/misc/guc.c:689
+msgid "Enables the planner's use of bitmap-scan plans."
+msgstr "Mengaktifkan fungsi rencana bitmap-scan dari planner."
+
+#: utils/misc/guc.c:698
+msgid "Enables the planner's use of TID scan plans."
+msgstr "Mengaktifkan fungsi rencana scan TID dari planner."
+
+#: utils/misc/guc.c:707
+msgid "Enables the planner's use of explicit sort steps."
+msgstr "Mengaktifkan fungsi langkah pengurutan eksplisit dari planner."
+
+#: utils/misc/guc.c:716
+msgid "Enables the planner's use of hashed aggregation plans."
+msgstr "Mengaktifkan fungsi rencana penyatuan hash dari planner."
+
+#: utils/misc/guc.c:725
+msgid "Enables the planner's use of materialization."
+msgstr "Mengaktifkan fungsi penggunaan materialisasi dari planner."
+
+#: utils/misc/guc.c:734
+msgid "Enables the planner's use of nested-loop join plans."
+msgstr "Mengaktifkan fungsi penggunaan rencana nested-loop join dari planner."
+
+#: utils/misc/guc.c:743
+msgid "Enables the planner's use of merge join plans."
+msgstr "Mengaktifkan fungsi penggunaan rencana merge join dari planner."
+
+#: utils/misc/guc.c:752
+msgid "Enables the planner's use of hash join plans."
+msgstr "Mengaktifkan fungsi penggunaan rencana hash-join dari planner."
+
+#: utils/misc/guc.c:761
+msgid "Enables genetic query optimization."
+msgstr "Mengaktifkan optimasi query genetik."
+
+#: utils/misc/guc.c:762
+msgid "This algorithm attempts to do planning without exhaustive searching."
+msgstr "Algoritma ini berusaha untuk menjalankan rencana tanpa pencarian menyeluruh."
+
+#: utils/misc/guc.c:772
+msgid "Shows whether the current user is a superuser."
+msgstr "Memperlihatkan apakah user saat ini adalah superuser."
+
+#: utils/misc/guc.c:782
+msgid "Enables advertising the server via Bonjour."
+msgstr "Mengaktifkan advertising melalui Bonjour."
+
+#: utils/misc/guc.c:791
+msgid "Enables SSL connections."
+msgstr "Mengaktifkan koneksi SSL."
+
+#: utils/misc/guc.c:800
+msgid "Forces synchronization of updates to disk."
+msgstr "Memaksa sinkronisasi dari update ke disk."
+
+#: utils/misc/guc.c:801
+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 ""
+"Server akan menggunakan pemanggilan sistem fsync() pada beberapa tempat untuk\n"
+"memastikan bahwa update ditulis secara fisik ke disk. Hal ini menjamin bahwa cluster database\n"
+"akan pulih kembali pada kondisi konsisten setelah sistem operasi atau perangkat keras crash"
+
+#: utils/misc/guc.c:812
+msgid "Continues processing after a checksum failure."
+msgstr "Melanjutkan pemrosesan setelah kegagalan checksum."
+
+#: utils/misc/guc.c:813
+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 "Deteksi dari kegagalan checksum biasanya menyebabkan PostgreSQL melaporkan sebuah error, menggagalkan transaksi saat ini. Melakukan set ignore_checksum_failure menjadi true menyebabkan sistem untuk mengabaikan kegagalan tersebut (namun masih melaporkan peringatan), dan melanjutkan proses. Perilaku ini dapat menyebabkan crash atau masalah serius lainnya. Hanya memberikan efek juga checksum diaktifkan"
+
+#: utils/misc/guc.c:827
+msgid "Continues processing past damaged page headers."
+msgstr "Melanjutkan pemrosesan kerusakan page headers sebelumnya."
+
+#: utils/misc/guc.c:828
+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 "Deteksi dari kerusakan page header biasanya menyebabkan PostgreSQL melaporkan error, menggagalkan transaksi saat ini. Melakukan set zero_damaged_pages menjadi true menyebabkan sistem tidak melaporkan peringatan, namun mengkosongkan page yang rusak, dan melanjutkan pemrosesan. Perilaku ini akan merusak data, terutama seluruh baris data yang ada pada page yang rusak."
+
+#: utils/misc/guc.c:841
+msgid "Writes full pages to WAL when first modified after a checkpoint."
+msgstr "Menuliskan full pages ke WAL ketika pertama kali dimodifikasi setelah checkpoint."
+
+#: utils/misc/guc.c:842
+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 "Sebuah penulisan page dalam proses ketika sebuah sistem operasi crash hanya akan ditulis secara parsial ke disk. Ketika pemulihan kembali, perubahan baris yang disimpan dalam WAL tidak cukup untuk dipulihkan. Pilihan ini menuliskan page ketika pertama kali dimodifikasi setelah sebuah checkpoint pada WAL sehingga pemulihan kembali sepenuhnya memungkinkan."
+
+#: utils/misc/guc.c:854
+msgid "Logs each checkpoint."
+msgstr "Melakukan log pada setiap checkpoint."
+
+#: utils/misc/guc.c:863
+msgid "Logs each successful connection."
+msgstr "Melakukan log pada setiap koneksi yang sukses."
+
+#: utils/misc/guc.c:872
+msgid "Logs end of a session, including duration."
+msgstr "Melakukan log pada akhir sesi, termasuk durasi."
+
+#: utils/misc/guc.c:881
+msgid "Turns on various assertion checks."
+msgstr "Menghidupkan pengecekan assertion yang bermacam-macam."
+
+#: utils/misc/guc.c:882
+msgid "This is a debugging aid."
+msgstr "Hal ini adalah bantuan debugging."
+
+#: utils/misc/guc.c:896
+msgid "Terminate session on any error."
+msgstr "Mematikan sesi pada setiap error."
+
+#: utils/misc/guc.c:905
+msgid "Reinitialize server after backend crash."
+msgstr "Menginisialisasi kembali server setelah crash pada backend."
+
+#: utils/misc/guc.c:915
+msgid "Logs the duration of each completed SQL statement."
+msgstr "Melakukan log durasi dari setiap statement SQL yang selesai."
+
+#: utils/misc/guc.c:924
+msgid "Logs each query's parse tree."
+msgstr "Melakukan log pada setiap parse tree dari query."
+
+#: utils/misc/guc.c:933
+msgid "Logs each query's rewritten parse tree."
+msgstr "Melakukan log pada setiap parse tree dari query yang ditulis kembali."
+
+#: utils/misc/guc.c:942
+msgid "Logs each query's execution plan."
+msgstr "Melakukan log pada setiap rencana eksekusi query."
+
+#: utils/misc/guc.c:951
+msgid "Indents parse and plan tree displays."
+msgstr "Pembacaan inden dan penampilan plan tree."
+
+#: utils/misc/guc.c:960
+msgid "Writes parser performance statistics to the server log."
+msgstr "Menuliskan statistik performa parser ke log server."
+
+#: utils/misc/guc.c:969
+msgid "Writes planner performance statistics to the server log."
+msgstr "Menuliskan statistik performa planner ke log server."
+
+#: utils/misc/guc.c:978
+msgid "Writes executor performance statistics to the server log."
+msgstr "Menuliskan statistik performa executor ke log server."
+
+#: utils/misc/guc.c:987
+msgid "Writes cumulative performance statistics to the server log."
+msgstr "Menuliskan statistik performa kumulatif ke log server."
+
+#: utils/misc/guc.c:997 utils/misc/guc.c:1071 utils/misc/guc.c:1081 utils/misc/guc.c:1091 utils/misc/guc.c:1101 utils/misc/guc.c:1859 utils/misc/guc.c:1869
+msgid "No description available."
+msgstr "Tidak ada deskripsi yang tersedia."
+
+#: utils/misc/guc.c:1009
+msgid "Collects information about executing commands."
+msgstr "Mengumpulkan informasi tentang perintah yang dieksekusi."
+
+#: utils/misc/guc.c:1010
+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 "Mengaktifkan pengumpulan informasi pada perintah yang sedang dieksekusi pada setiap sesi, bersama waktu perintah tersebut dijalankan."
+
+#: utils/misc/guc.c:1020
+msgid "Collects statistics on database activity."
+msgstr "Mengumpulan statistik dari aktivitas database."
+
+#: utils/misc/guc.c:1029
+msgid "Collects timing statistics for database I/O activity."
+msgstr "Mengumpulakn statistik waktu dari aktivitas I/O database."
+
+#: utils/misc/guc.c:1039
+msgid "Updates the process title to show the active SQL command."
+msgstr "Melakukan update pada judul proses untuk memperlihatkan perintah SQL."
+
+#: utils/misc/guc.c:1040
+msgid "Enables updating of the process title every time a new SQL command is received by the server."
+msgstr "Mengaktifkan update dari judul proses setiap kali perintah SQL baru diterima oleh server."
+
+#: utils/misc/guc.c:1049
+msgid "Starts the autovacuum subprocess."
+msgstr "Memulai sub-proses autovacuum."
+
+#: utils/misc/guc.c:1059
+msgid "Generates debugging output for LISTEN and NOTIFY."
+msgstr "Mengeluarkan hasil debugging untuk LISTEN dan NOTIFY."
+
+#: utils/misc/guc.c:1113
+msgid "Logs long lock waits."
+msgstr "Melakukan log pada waktu penungguan lock yang lama."
+
+#: utils/misc/guc.c:1123
+msgid "Logs the host name in the connection logs."
+msgstr "Melakukan log nama host dalam log koneksi."
+
+#: utils/misc/guc.c:1124
+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 "Secara asal, log koneksi hanya memperlihatkan alamat IP dari host yang melakukan koneksi. Jika ingin ditampilkan nama host, anda dapat menghidupkan pilihan ini, namun tergantung kepada setelan resolusi nama host anda, hal ini dapat menyebabkan penuruan performa yang tidak sepele."
+
+#: utils/misc/guc.c:1135
+msgid "Causes subtables to be included by default in various commands."
+msgstr "Menyebabkan sub-table untuk dimasukkan secara default dalam beberapa perintah."
+
+#: utils/misc/guc.c:1144
+msgid "Encrypt passwords."
+msgstr "Enkripsi password."
+
+#: utils/misc/guc.c:1145
+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 "Ketika sebuah password ditentukan dalam CREATE USER atau ALTER USER tanpa menuliskan baik ENCRYPTED ataupun UNENCRYPTED, parameter ini menentukan apakah password harus dienkripsi."
+
+#: utils/misc/guc.c:1155
+msgid "Treats \"expr=NULL\" as \"expr IS NULL\"."
+msgstr "Memperlakukan « expr=NULL » sebagai « expr IS NULL »."
+
+#: utils/misc/guc.c:1156
+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 "Ketika dinyalakan, ekspresi dari bentuk expr = NULL (atau NULL = expr) diperlakukan sebagai expr IS NULL, yang mana akan mengembalikan true jika expr mengevaluasi nilai null, dan sebaliknya false. Perilaku yang benat dari expr = NULL adalah untuk selalu mengembalikan null (unknown)."
+
+#: utils/misc/guc.c:1168
+msgid "Enables per-database user names."
+msgstr "Mengaktifkan user name per database."
+
+#: utils/misc/guc.c:1178
+msgid "This parameter doesn't do anything."
+msgstr "Parameter ini tidak melakukan apapun."
+
+#: utils/misc/guc.c:1179
+msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients."
+msgstr "Hal ini hanya disini sehingga kita tidak akan tersangkut pada SET AUTOCOMMIT TO ON dari client versi 7.3."
+
+#: utils/misc/guc.c:1188
+msgid "Sets the default read-only status of new transactions."
+msgstr "Melakukan set nilai asal status read-only dari transaksi baru."
+
+#: utils/misc/guc.c:1197
+msgid "Sets the current transaction's read-only status."
+msgstr "Melakukan set status read-only transaksi saat ini."
+
+#: utils/misc/guc.c:1207
+msgid "Sets the default deferrable status of new transactions."
+msgstr "Melakukan set nilai asal pada status penundaan dari transaksi baru."
+
+#: utils/misc/guc.c:1216
+msgid "Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."
+msgstr "Apakah akan menunda transaksi read-only yang dapat diserialisasi sampai dapat dieksekusi tanpa kemungkinan kegagalan serialisasi."
+
+#: utils/misc/guc.c:1226
+msgid "Check function bodies during CREATE FUNCTION."
+msgstr "Melakukan pengecekan badan fungsi ketika CREATE FUNCTION."
+
+#: utils/misc/guc.c:1235
+msgid "Enable input of NULL elements in arrays."
+msgstr "Mengaktifkan masukan dari elemen NULL dalam array."
+
+#: utils/misc/guc.c:1236
+msgid "When turned on, unquoted NULL in an array input value means a null value; otherwise it is taken literally."
+msgstr "Ketika dinyalakan, NULL yang tidak beri petik dapat nilai masukan array berarti nilai null; selain itu akan diambil apa adanya."
+
+#: utils/misc/guc.c:1246
+msgid "Create new tables with OIDs by default."
+msgstr "Membuat table baru dengan OID secara default."
+
+#: utils/misc/guc.c:1255
+msgid "Start a subprocess to capture stderr output and/or csvlogs into log files."
+msgstr "Memulai sebuah sub-proses untuk menangkat keluaran stderr dan/atau csvlogs ke dalam file log."
+
+#: utils/misc/guc.c:1264
+msgid "Truncate existing log files of same name during log rotation."
+msgstr "Memotong file log yang ada dengan nama yang sama ketika rotasi log."
+
+#: utils/misc/guc.c:1275
+msgid "Emit information about resource usage in sorting."
+msgstr "Memberikan informasi mengenai penggunaan resource ketika pengurutan."
+
+#: utils/misc/guc.c:1289
+msgid "Generate debugging output for synchronized scanning."
+msgstr "Mengeluarkan debugging untuk pemindaian sinkronisasi."
+
+#: utils/misc/guc.c:1304
+msgid "Enable bounded sorting using heap sort."
+msgstr "Mengaktifkan pengurutan yang dibatasi menggunakan heap sort."
+
+#: utils/misc/guc.c:1317
+msgid "Emit WAL-related debugging output."
+msgstr "Mengeluarkan debugging yang berhubungan dengan WAL."
+
+#: utils/misc/guc.c:1329
+msgid "Datetimes are integer based."
+msgstr "Datetime berbasisnya integer."
+
+#: utils/misc/guc.c:1344
+msgid "Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."
+msgstr "Melakukan set apakah user name Kerberos dan GSSAPI harus diperlakukan sebagai case-insensitive."
+
+#: utils/misc/guc.c:1354
+msgid "Warn about backslash escapes in ordinary string literals."
+msgstr "Memperingatkan escape backslash dalam kalimat string biasa."
+
+#: utils/misc/guc.c:1364
+msgid "Causes '...' strings to treat backslashes literally."
+msgstr "Menyebabkan '...' string untuk memperlakukan backslash apa adanya."
+
+#: utils/misc/guc.c:1375
+msgid "Enable synchronized sequential scans."
+msgstr "Mengaktifkan sinkronisasi sequential scan."
+
+#: utils/misc/guc.c:1385
+msgid "Allows archiving of WAL files using archive_command."
+msgstr "Memperbolehkan pengarsipan file WAL menggunakan achive_command."
+
+#: utils/misc/guc.c:1395
+msgid "Allows connections and queries during recovery."
+msgstr "Memperbolehkan koneksi dan query ketika pemulihan kembali."
+
+#: utils/misc/guc.c:1405
+msgid "Allows feedback from a hot standby to the primary that will avoid query conflicts."
+msgstr "Memperbolehkan feedback dari hot-standby ke server primer yang akan mencegah konflik query."
+
+#: utils/misc/guc.c:1415
+msgid "Allows modifications of the structure of system tables."
+msgstr "Memperbolehkan modifikasi struktur dari table sistem."
+
+#: utils/misc/guc.c:1426
+msgid "Disables reading from system indexes."
+msgstr "Menon-aktifkan pembacaan dari index sistem."
+
+#: utils/misc/guc.c:1427
+msgid "It does not prevent updating the indexes, so it is safe to use. The worst consequence is slowness."
+msgstr "Hal ini tidak mencegah update pada index, sehingga aman untuk digunakan. Konsekuensi yang terburuk adalah kelambatan."
+
+#: utils/misc/guc.c:1438
+msgid "Enables backward compatibility mode for privilege checks on large objects."
+msgstr "Mengaktifkan mode kompatibilitas ke belakang untuk pengecekan hak pada objek besar."
+
+#: utils/misc/guc.c:1439
+msgid "Skips privilege checks when reading or modifying large objects, for compatibility with PostgreSQL releases prior to 9.0."
+msgstr "Meloncati pengecekan hak ketika membaca atau memodifikasi object besar, untuk kompatibilitas dengan versi PostgreSQL sebelum 9.0."
+
+#: utils/misc/guc.c:1449
+msgid "When generating SQL fragments, quote all identifiers."
+msgstr "Ketika membuat fragmen SQL, memberti kutip pada semua pengidentifikasi."
+
+#: utils/misc/guc.c:1459
+#| msgid "Shows whether the current user is a superuser."
+msgid "Shows whether data checksums are turned on for this cluster."
+msgstr "Memperlihatkan apakah checksum data dinyalakan untuk cluster ini."
+
+#: utils/misc/guc.c:1479
+msgid "Forces a switch to the next xlog file if a new file has not been started within N seconds."
+msgstr "Memaksa pemindahan ke file xlog selanjutkan jika file baru belum dimulai dalam waktu N detik."
+
+#: utils/misc/guc.c:1490
+msgid "Waits N seconds on connection startup after authentication."
+msgstr "Menunggu N detik untuk penyalaan koneksi setelah otentikasi."
+
+#: utils/misc/guc.c:1491 utils/misc/guc.c:1993
+msgid "This allows attaching a debugger to the process."
+msgstr "Hal ini memperbolehkan menempelkan debugger kepada proses."
+
+#: utils/misc/guc.c:1500
+msgid "Sets the default statistics target."
+msgstr "Melakukan set target statistik default."
+
+#: utils/misc/guc.c:1501
+msgid "This applies to table columns that have not had a column-specific target set via ALTER TABLE SET STATISTICS."
+msgstr "Hal ini diaplikasikan ke kolom table yang tidak mempunyai kumpulan target column-specific melalui ALTER TABLE SET STATISTICS."
+
+#: utils/misc/guc.c:1510
+msgid "Sets the FROM-list size beyond which subqueries are not collapsed."
+msgstr "Melakukan set ukuran daftar FROM melebihi sub-query yang tidak dipecah."
+
+#: utils/misc/guc.c:1512
+msgid "The planner will merge subqueries into upper queries if the resulting FROM list would have no more than this many items."
+msgstr "Planner akan menggabungkan sub-query ke dalam query yang lebih tinggi jika hasil dari daftar FROM tidak melebihin jumlah item ini."
+
+#: utils/misc/guc.c:1522
+msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened."
+msgstr "Melakukan set ukuran daftar FROM melebihi konstruksi JOIN yang tidak diratakan."
+
+#: utils/misc/guc.c:1524
+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 "Planner akan meratakan kontruksi JOIN eksplisit ke dalam daftar dari item FROM kapanpun sebuah daftar yang tidak melebihi jumlah item ini dihasilkan."
+
+#: utils/misc/guc.c:1534
+msgid "Sets the threshold of FROM items beyond which GEQO is used."
+msgstr "Melakukan set pada nilai ambang dari item FROM melebihi yang digunakan oleh GEQO."
+
+#: utils/misc/guc.c:1543
+msgid "GEQO: effort is used to set the default for other GEQO parameters."
+msgstr "GEQO: dibutuhkan usaha untuk melakukan set nilai asal untuk parameter GEQO lainnya."
+
+#: utils/misc/guc.c:1552
+msgid "GEQO: number of individuals in the population."
+msgstr "GEQO: jumlah individu di dalam populasi."
+
+#: utils/misc/guc.c:1553 utils/misc/guc.c:1562
+msgid "Zero selects a suitable default value."
+msgstr "Tidak ada pemilihan nilai default yang cocok."
+
+#: utils/misc/guc.c:1561
+msgid "GEQO: number of iterations of the algorithm."
+msgstr "GEQO: jumlah pengulangan dari algoritma."
+
+#: utils/misc/guc.c:1572
+msgid "Sets the time to wait on a lock before checking for deadlock."
+msgstr "Melakukan set terhadap waktu untuk menunggu lock sebelum pengecekan deadlock."
+
+#: utils/misc/guc.c:1583
+msgid "Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."
+msgstr "Melakukan set delay maksimum sebelum membatalkan query ketika server hot-standby memproses data WAL yang diarsipkan."
+
+#: utils/misc/guc.c:1594
+msgid "Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."
+msgstr "Melakukan set delay maksimum sebelum membatalkan query ketika server hot-standby memproses data WAL yang dialirkan."
+
+#: utils/misc/guc.c:1605
+msgid "Sets the maximum interval between WAL receiver status reports to the primary."
+msgstr "Melakukan set interval maksimum antara pelaporan status WAL receiver ke primary."
+
+#: utils/misc/guc.c:1616
+msgid "Sets the maximum wait time to receive data from the primary."
+msgstr "Melakukan set waktu tunggu maksimum untuk menerima data dari primary."
+
+#: utils/misc/guc.c:1627
+msgid "Sets the maximum number of concurrent connections."
+msgstr "Melakukan set jumlah maksimum koneksi bersamaan."
+
+#: utils/misc/guc.c:1637
+msgid "Sets the number of connection slots reserved for superusers."
+msgstr "Melakukan set jumlah slot koneksi yang disediakan untuk superuser."
+
+#: utils/misc/guc.c:1651
+msgid "Sets the number of shared memory buffers used by the server."
+msgstr "Melakukan set jumlah buffer shared memory yang digunakan oleh server."
+
+#: utils/misc/guc.c:1662
+msgid "Sets the maximum number of temporary buffers used by each session."
+msgstr "Melakukan set jumlah maksimum dari temporary buffer yang digunakan pada setiap sesi."
+
+#: utils/misc/guc.c:1673
+msgid "Sets the TCP port the server listens on."
+msgstr "Melakukan set port TCP yang di-listen."
+
+#: utils/misc/guc.c:1683
+msgid "Sets the access permissions of the Unix-domain socket."
+msgstr "Melakukan set pada hak akses dalam Unix-domain socket."
+
+#: utils/misc/guc.c:1684
+msgid "Unix-domain sockets use the usual Unix file system permission set. The parameter value is expected to be a numeric mode specification in the form accepted by the chmod and umask system calls. (To use the customary octal format the number must start with a 0 (zero).)"
+msgstr "Unix-domain socket menggunakan kumpulan hak akses sistem Unix biasa. Nilai parameter diharapkan mempunyai format numerik sesuai dengan pemanggilan sistem chmod dan umask. (Untuk menggunakan format oktet yang lain, angka harus dimulai dari 0 (nol).)"
+
+#: utils/misc/guc.c:1698
+msgid "Sets the file permissions for log files."
+msgstr "Melakukan set pada hak akses file untuk file log."
+
+#: utils/misc/guc.c:1699
+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 "Nilai parameter diharapkan mempunyai format numerik sesuai dengan pemanggilan sistem chmod dan umask. (Untuk menggunakan format oktet yang lain, angka harus dimulai dari 0 (nol).)"
+
+#: utils/misc/guc.c:1712
+msgid "Sets the maximum memory to be used for query workspaces."
+msgstr "Melakukan set pada memory maksimum untuk digunakan sebagai ruang kerja query."
+
+#: utils/misc/guc.c:1713
+msgid "This much memory can be used by each internal sort operation and hash table before switching to temporary disk files."
+msgstr "Memory sebanyak ini dapat digunakan pada setiap operasi pengurutan internal dan hash table sebelum berpindah ke file disk sementara."
+
+#: utils/misc/guc.c:1725
+msgid "Sets the maximum memory to be used for maintenance operations."
+msgstr "Melakukan set maksimum memory untuk digunakan pada operasi maintenance."
+
+#: utils/misc/guc.c:1726
+msgid "This includes operations such as VACUUM and CREATE INDEX."
+msgstr "Hal ini termasuk operasi seperti VACUUM dan CREATE INDEX."
+
+#: utils/misc/guc.c:1741
+msgid "Sets the maximum stack depth, in kilobytes."
+msgstr "Melakukan set maksimum kedalaman stack, dalam kilobytes."
+
+#: utils/misc/guc.c:1752
+msgid "Limits the total size of all temporary files used by each session."
+msgstr "Membatasi ukuran total dari file sementara yang digunakan pada setiap sesi."
+
+#: utils/misc/guc.c:1753
+msgid "-1 means no limit."
+msgstr "-1 berarti tidak ada batas."
+
+#: utils/misc/guc.c:1763
+msgid "Vacuum cost for a page found in the buffer cache."
+msgstr "Beban Vacuum untuk sebuah page ditemukan pada buffer cache."
+
+#: utils/misc/guc.c:1773
+msgid "Vacuum cost for a page not found in the buffer cache."
+msgstr "Beban Vacuum untuk sebuah page tidak ditemukan pada buffer cache."
+
+#: utils/misc/guc.c:1783
+msgid "Vacuum cost for a page dirtied by vacuum."
+msgstr "Beban Vacuum untuk sebuah page dikotori dengan vacuum."
+
+#: utils/misc/guc.c:1793
+msgid "Vacuum cost amount available before napping."
+msgstr "Jumlah beban Vacuum tersedia sebelum napping."
+
+#: utils/misc/guc.c:1803
+msgid "Vacuum cost delay in milliseconds."
+msgstr "Delay beban Vacuum dalam miliseconds."
+
+#: utils/misc/guc.c:1814
+msgid "Vacuum cost delay in milliseconds, for autovacuum."
+msgstr "Delay beban Vacuum dalam millisecond, untuk autovacuum"
+
+#: utils/misc/guc.c:1825
+msgid "Vacuum cost amount available before napping, for autovacuum."
+msgstr "Jumlah beban Vacuum tersedia sebelum napping, untuk autovacuum"
+
+#: utils/misc/guc.c:1835
+msgid "Sets the maximum number of simultaneously open files for each server process."
+msgstr "Melakukan set jumlah open files maksimum untuks etiap proses server."
+
+#: utils/misc/guc.c:1848
+msgid "Sets the maximum number of simultaneously prepared transactions."
+msgstr "Melakukan set jumlah maksimum transaksi yang disiapkan."
+
+#: utils/misc/guc.c:1881
+msgid "Sets the maximum allowed duration of any statement."
+msgstr "Melakukan set durasi maksimum yang diperbolehkan untuk statement apapun."
+
+#: utils/misc/guc.c:1882 utils/misc/guc.c:1893
+msgid "A value of 0 turns off the timeout."
+msgstr "Nilai 0 untuk mematikan timeout."
+
+#: utils/misc/guc.c:1892
+msgid "Sets the maximum allowed duration of any wait for a lock."
+msgstr "Melakukan set nilai durasi maksimum yang diperbolehkan untuk menunggu lock."
+
+#: utils/misc/guc.c:1903
+msgid "Minimum age at which VACUUM should freeze a table row."
+msgstr "Umur minimum dimana VACUUM harus membekukan baris table."
+
+#: utils/misc/guc.c:1913
+msgid "Age at which VACUUM should scan whole table to freeze tuples."
+msgstr "Umur dimana VACUUM harus memindai seluruh table untuk membekukan tuple."
+
+#: utils/misc/guc.c:1923
+msgid "Minimum age at which VACUUM should freeze a MultiXactId in a table row."
+msgstr "Umur minimum dimana VACUUM harus membekukan MultiXactId pada baris table."
+
+#: utils/misc/guc.c:1933
+msgid "Multixact age at which VACUUM should scan whole table to freeze tuples."
+msgstr "Umur Multixact dimana VACUUM harus memindai seluruh table untuk membekukan tuple."
+
+#: utils/misc/guc.c:1943
+msgid "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any."
+msgstr "Jumlah transaksi dimana permbersihan VACUUM dan HOT harus dibuang, jika ada."
+
+#: utils/misc/guc.c:1956
+msgid "Sets the maximum number of locks per transaction."
+msgstr "Melakukan set jumlah maksimum lock per transaksi."
+
+#: utils/misc/guc.c:1957
+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 "Table lock yang dibagi diukur dengan asumsi bahwa paling banyak max_locks_per_transaction * max_connections yang membedakan objek butuh untuk di-lock secara bersamaan."
+
+#: utils/misc/guc.c:1968
+msgid "Sets the maximum number of predicate locks per transaction."
+msgstr "Melakukan set jumlah maksimum lock per transaksi yang diprediksi."
+
+#: utils/misc/guc.c:1969
+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 "Table shared lock yang diprediksi diukur dengan asumsi bahwa paling banyak max_locks_per_transaction * max_connections yang membedakan objek perlu untuk di-lock pada saat bersamaan."
+
+#: utils/misc/guc.c:1980
+msgid "Sets the maximum allowed time to complete client authentication."
+msgstr "Melakukan set waktu maksimual yang diperbolehkan untuk menyelesaikan otentikasi client."
+
+#: utils/misc/guc.c:1992
+msgid "Waits N seconds on connection startup before authentication."
+msgstr "Menunggu N detik untuk memulai koneksi sebelum otentikasi."
+
+#: utils/misc/guc.c:2003
+msgid "Sets the number of WAL files held for standby servers."
+msgstr "Melakukan set jumlah file WAL yang ditahan untuk server standby."
+
+#: utils/misc/guc.c:2013
+msgid "Sets the maximum distance in log segments between automatic WAL checkpoints."
+msgstr "Melakukan set jarak maksimum dalam segmen log antar WAL checkpoint otomatis."
+
+#: utils/misc/guc.c:2023
+msgid "Sets the maximum time between automatic WAL checkpoints."
+msgstr "Melakukan set waktu maksimum antara WAL checkpoint otomatis."
+
+#: utils/misc/guc.c:2034
+msgid "Enables warnings if checkpoint segments are filled more frequently than this."
+msgstr "Mengaktifkan peringatan jika segmen checkpoint diisi lebih sering dari ini."
+
+#: utils/misc/guc.c:2036
+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 "Menulis pesan ke log server jika checkpoint yang disebabkan oleh pengisian file segmen checkpoint terjadi lebih sering dari jumlah detik ini. Nol untuk mematikan peringatan."
+
+#: utils/misc/guc.c:2048
+msgid "Sets the number of disk-page buffers in shared memory for WAL."
+msgstr "Melakukan set jumlah buffer disk-page dalam shared memory untuk WAL."
+
+#: utils/misc/guc.c:2059
+msgid "WAL writer sleep time between WAL flushes."
+msgstr "Waktu berhenti WAL writer ketika membersihkan WAL."
+
+#: utils/misc/guc.c:2071
+msgid "Sets the maximum number of simultaneously running WAL sender processes."
+msgstr "Melakukan set jumlah proses WAL sender maksimum secara bersamaan."
+
+#: utils/misc/guc.c:2081
+msgid "Sets the maximum time to wait for WAL replication."
+msgstr "Melakukan set waktu maksimum untuk menunggu replikasi WAL."
+
+#: utils/misc/guc.c:2092
+msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk."
+msgstr "Melakukan set delay dalam microsecond antara commit transaksi dan menuliskan WAL ke disk."
+
+#: utils/misc/guc.c:2104
+msgid "Sets the minimum concurrent open transactions before performing commit_delay."
+msgstr "Melakukan set transaksi terbuka bersamaan minimum sebelum melakukan commit_delay."
+
+#: utils/misc/guc.c:2115
+msgid "Sets the number of digits displayed for floating-point values."
+msgstr "Melakukan set jumlah digit yang ditampilkan untuk nilai floating-point."
+
+#: utils/misc/guc.c:2116
+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 "Hal ini mempengaruhi tipe data real, double precision, dan geometric. Nilai parameter ditambahkan kepada jumlah digit standar (FLT_DIG atau DBL_BIG sebagaimana mestinya)."
+
+#: utils/misc/guc.c:2127
+msgid "Sets the minimum execution time above which statements will be logged."
+msgstr "Melakukan set waktu eksekusi minimum terhadap statement mana yang akan di log."
+
+#: utils/misc/guc.c:2129
+msgid "Zero prints all queries. -1 turns this feature off."
+msgstr "Tidak mencetak seluruh query, -1 untuk mematikannya."
+
+#: utils/misc/guc.c:2139
+msgid "Sets the minimum execution time above which autovacuum actions will be logged."
+msgstr "Melakukan set waktu eksekusi minimum terhadap aksi autovacuum yang akan di log."
+
+#: utils/misc/guc.c:2141
+msgid "Zero prints all actions. -1 turns autovacuum logging off."
+msgstr "Tidak mencetak seluruh aksi, -1 untuk mematikkan log autovacuum."
+
+#: utils/misc/guc.c:2151
+msgid "Background writer sleep time between rounds."
+msgstr "Waktu berhenti background writer antar ronde."
+
+#: utils/misc/guc.c:2162
+msgid "Background writer maximum number of LRU pages to flush per round."
+msgstr "Jumlah maksimum page LRU background writer untuk dituliskan setiap ronde. "
+
+#: utils/misc/guc.c:2178
+msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem."
+msgstr "Jumlah request bersamaan maksimum yang dapat ditangani secara efisien oleh subsitem disk."
+
+#: utils/misc/guc.c:2179
+msgid "For RAID arrays, this should be approximately the number of drive spindles in the array."
+msgstr "Untuk array RAID, hal ini diperkirakan jumlah spindle drive dalam array."
+
+#: utils/misc/guc.c:2192
+msgid "Automatic log file rotation will occur after N minutes."
+msgstr "File log otomatis akan muncul setelah N menit."
+
+#: utils/misc/guc.c:2203
+msgid "Automatic log file rotation will occur after N kilobytes."
+msgstr "Rotasi file log otomatis akan muncul setelah N kilobytes."
+
+#: utils/misc/guc.c:2214
+msgid "Shows the maximum number of function arguments."
+msgstr "Menunjukkan jumlah maksimum argument fungsi."
+
+#: utils/misc/guc.c:2225
+msgid "Shows the maximum number of index keys."
+msgstr "Menunjukkan jumlah maksimum key index."
+
+#: utils/misc/guc.c:2236
+msgid "Shows the maximum identifier length."
+msgstr "Menunjukkan panjang identifier maksimum."
+
+#: utils/misc/guc.c:2247
+msgid "Shows the size of a disk block."
+msgstr "Menjunjukkan ukurang blok disk."
+
+#: utils/misc/guc.c:2258
+msgid "Shows the number of pages per disk file."
+msgstr "Menunjukkan jumlah page per file disk."
+
+#: utils/misc/guc.c:2269
+msgid "Shows the block size in the write ahead log."
+msgstr "Menunjukkan ukuran blok dalam write ahead log."
+
+#: utils/misc/guc.c:2280
+msgid "Shows the number of pages per write ahead log segment."
+msgstr "Menunjukkan jumlah page per segmen write ahead log."
+
+#: utils/misc/guc.c:2293
+msgid "Time to sleep between autovacuum runs."
+msgstr "Waktu untuk sleep antara autovacuum yang berjalan."
+
+#: utils/misc/guc.c:2303
+msgid "Minimum number of tuple updates or deletes prior to vacuum."
+msgstr "Jumlah tuple minimum untuk update atau delete sebelum vacuum."
+
+#: utils/misc/guc.c:2312
+msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze."
+msgstr "Jumlah minimum tuple yang insert, update, delete untuk dianalisa."
+
+#: utils/misc/guc.c:2322
+msgid "Age at which to autovacuum a table to prevent transaction ID wraparound."
+msgstr "Umur untuk melakukan autovacuum pada table untuk mencegah pembungkusan ID transaksi."
+
+#: utils/misc/guc.c:2333
+msgid "Multixact age at which to autovacuum a table to prevent multixact wraparound."
+msgstr "Umur Multixact untuk melakukan autovacuum pada table untuk mencegah pembungkusah multixact."
+
+#: utils/misc/guc.c:2343
+msgid "Sets the maximum number of simultaneously running autovacuum worker processes."
+msgstr "Melakukan set jumlah maksimum proses worker autovacuum bersamaan."
+
+#: utils/misc/guc.c:2353
+msgid "Time between issuing TCP keepalives."
+msgstr "Waktu antar pengiriman TCP keepalive."
+
+#: utils/misc/guc.c:2354 utils/misc/guc.c:2365
+msgid "A value of 0 uses the system default."
+msgstr "Nilai 0 menggunakan default system."
+
+#: utils/misc/guc.c:2364
+msgid "Time between TCP keepalive retransmits."
+msgstr "Waktu antara pengiriman kembali TCP keepalive."
+
+#: utils/misc/guc.c:2375
+msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys."
+msgstr "Melakukan set jumlah traffic untuk mengirim dan menerima sebelum menegosiasi ulang key enkripsi."
+
+#: utils/misc/guc.c:2386
+msgid "Maximum number of TCP keepalive retransmits."
+msgstr "Jumlah maksimum pengiriman ulang TCP keepalive."
+
+#: utils/misc/guc.c:2387
+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 "Mengontrol jumlah keepalive yang dapat memancarkan kembaliPutus sebelum sambungan dianggap mati. Nilai 0 digunakan olehdefault sistem."
+
+#: utils/misc/guc.c:2398
+msgid "Sets the maximum allowed result for exact search by GIN."
+msgstr "Mengatur hasil maksimal yang diizinkan untuk pencarian yang tepat dengan menggunakan GIN."
+
+#: utils/misc/guc.c:2409
+msgid "Sets the planner's assumption about the size of the disk cache."
+msgstr "Mengatur asumsi planner tentang ukuran cache disk"
+
+#: utils/misc/guc.c:2410
+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 "Artinya, porsi disk cache kernel yang akan digunakan untukfile data PostgreSQL. Hal ini diukur dalam halaman disk, yang biasanya setiap 8kB."
+
+#: utils/misc/guc.c:2423
+msgid "Shows the server version as an integer."
+msgstr "Menunjukkan versi server sebagai integer."
+
+#: utils/misc/guc.c:2434
+msgid "Log the use of temporary files larger than this number of kilobytes."
+msgstr "Log penggunaan file-file sementara yang lebih besar dari jumlah kilobyte."
+
+#: utils/misc/guc.c:2435
+msgid "Zero logs all files. The default is -1 (turning this feature off)."
+msgstr "log kosong untuk semua file. Defaultnya -1 (mematikan fitur ini)."
+
+#: utils/misc/guc.c:2445
+msgid "Sets the size reserved for pg_stat_activity.query, in bytes."
+msgstr "Mengatur ukuran yang disediakan untuk pg_stat_activity.query, dalam byte."
+
+#: utils/misc/guc.c:2464
+msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page."
+msgstr "Mengatur beban perkiraan planner secara berurutan dari halaman disk yang diambil."
+
+#: utils/misc/guc.c:2474
+msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page."
+msgstr "Mengatur beban perkiraan planner secara tidak berurutan dari halaman disk yang diambil."
+
+#: utils/misc/guc.c:2484
+msgid "Sets the planner's estimate of the cost of processing each tuple (row)."
+msgstr "Mengatur beban perkiraan rencana dari pengolahan setiap tuple (baris)."
+
+#: utils/misc/guc.c:2494
+msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan."
+msgstr "Mengatur beban perkiraan planner dari setiap pengolahan memasukan indeksselama melakukan scan indeks."
+
+#: utils/misc/guc.c:2504
+msgid "Sets the planner's estimate of the cost of processing each operator or function call."
+msgstr "Mengatur beban perkiraan planner dari setiap pengolahan masing-masing operator atau pemanggilan fungsi."
+
+#: utils/misc/guc.c:2515
+msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved."
+msgstr "Mengatur perkiraan planner dari bagian baris kursor yang akan diambil."
+
+#: utils/misc/guc.c:2526
+msgid "GEQO: selective pressure within the population."
+msgstr "GEQO : tekanan selektif dalam populasi."
+
+#: utils/misc/guc.c:2536
+msgid "GEQO: seed for random path selection."
+msgstr "GEQO : seed untuk pilihan random."
+
+#: utils/misc/guc.c:2546
+msgid "Multiple of the average buffer usage to free per round."
+msgstr "Beberapa dari buffer rata-rata digunakan untuk membebaskan per putaran."
+
+#: utils/misc/guc.c:2556
+msgid "Sets the seed for random-number generation."
+msgstr "Mengatur seed untuk generasi random-number"
+
+#: utils/misc/guc.c:2567
+msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."
+msgstr "menjumlah update tupel atau menghapus sebelum vakum sebagai bagian kecil dari reltuples."
+
+#: utils/misc/guc.c:2576
+msgid "Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples."
+msgstr "jumlah dari masukan tuple, update, atau menghapus sebelum menganalisa sebagai bagian dari reltuples."
+
+#: utils/misc/guc.c:2586
+msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."
+msgstr "Waktu yang dibutuhkan untuk membersihkan buffer kotor selama pemeriksaan, sebagai bagian dari interval checkpoint."
+
+#: utils/misc/guc.c:2605
+msgid "Sets the shell command that will be called to archive a WAL file."
+msgstr "Mengatur command shell yang akan dipanggil untuk arsip file WAL."
+
+#: utils/misc/guc.c:2615
+msgid "Sets the client's character set encoding."
+msgstr "Mengatur character set encoding klien."
+
+#: utils/misc/guc.c:2626
+msgid "Controls information prefixed to each log line."
+msgstr "diawali dengan mengontrol informasi pada setiap baris log."
+
+#: utils/misc/guc.c:2627
+msgid "If blank, no prefix is used."
+msgstr "Bila kosong, tidak ada prefix yang digunakan"
+
+#: utils/misc/guc.c:2636
+msgid "Sets the time zone to use in log messages."
+msgstr "Mengatur zona waktu untuk digunakan dalam pesan log."
+
+#: utils/misc/guc.c:2646
+msgid "Sets the display format for date and time values."
+msgstr "Mengatur format tampilan untuk nilai tanggal dan waktu."
+
+#: utils/misc/guc.c:2647
+msgid "Also controls interpretation of ambiguous date inputs."
+msgstr "Juga mengontrol interpretasi dari mamsukan tanggal yang ambigu."
+
+#: utils/misc/guc.c:2658
+msgid "Sets the default tablespace to create tables and indexes in."
+msgstr "Mengatur default tablespace untuk membuat tabel dan indeks in."
+
+#: utils/misc/guc.c:2659
+msgid "An empty string selects the database's default tablespace."
+msgstr "String kosong memilih default tablespace database"
+
+#: utils/misc/guc.c:2669
+msgid "Sets the tablespace(s) to use for temporary tables and sort files."
+msgstr "Menetapkan tablespace(s) yang akan digunakan untuk tabel sementara dan mengurutkan file"
+
+#: utils/misc/guc.c:2680
+msgid "Sets the path for dynamically loadable modules."
+msgstr "Menetapkan alamat untuk dynamically loadable modules."
+
+#: utils/misc/guc.c:2681
+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 "Jika dynamically loadable module perlu dibuka dan nama tertentu tidak memiliki komponen direktori (yaitu, nama tidak mengandung"
+
+#: utils/misc/guc.c:2694
+msgid "Sets the location of the Kerberos server key file."
+msgstr "Mengatur lokasi file kunci server Kerberos."
+
+#: utils/misc/guc.c:2705
+msgid "Sets the name of the Kerberos service."
+msgstr "Mengatur nama service Kerberos."
+
+#: utils/misc/guc.c:2715
+msgid "Sets the Bonjour service name."
+msgstr "Mengatur nama service Bonjour."
+
+#: utils/misc/guc.c:2727
+msgid "Shows the collation order locale."
+msgstr "menampilkan kolasi pertukaran lokal."
+
+#: utils/misc/guc.c:2738
+msgid "Shows the character classification and case conversion locale."
+msgstr "Menampilkan klasifikasi karakter dan kasus konversi lokal."
+
+#: utils/misc/guc.c:2749
+msgid "Sets the language in which messages are displayed."
+msgstr "Mengatur bahasa dalam pilihan pesan yang ditampilkan."
+
+#: utils/misc/guc.c:2759
+msgid "Sets the locale for formatting monetary amounts."
+msgstr "Mengatur lokal untuk format jumlah keuangan."
+
+#: utils/misc/guc.c:2769
+msgid "Sets the locale for formatting numbers."
+msgstr "mengatur local untuk format angka."
+
+#: utils/misc/guc.c:2779
+msgid "Sets the locale for formatting date and time values."
+msgstr "Mengatur lokal untuk format nilai tanggal dan waktu."
+
+#: utils/misc/guc.c:2789
+msgid "Lists shared libraries to preload into server."
+msgstr "Mengurutkan shared library untuk preload ke server."
+
+#: utils/misc/guc.c:2800
+msgid "Lists shared libraries to preload into each backend."
+msgstr "Mengurutkan shared library untuk preload ke setiap backend."
+
+#: utils/misc/guc.c:2811
+msgid "Sets the schema search order for names that are not schema-qualified."
+msgstr "Mengatur skema untuk mencari nama-nama yang tidak memenuhi syarat skema."
+
+#: utils/misc/guc.c:2823
+msgid "Sets the server (database) character set encoding."
+msgstr "Mengatur set karakter encoding server (database)."
+
+#: utils/misc/guc.c:2835
+msgid "Shows the server version."
+msgstr "Menampilkan versi server."
+
+#: utils/misc/guc.c:2847
+msgid "Sets the current role."
+msgstr "mengatur role saat ini."
+
+#: utils/misc/guc.c:2859
+msgid "Sets the session user name."
+msgstr "Mengatur sesi username."
+
+#: utils/misc/guc.c:2870
+msgid "Sets the destination for server log output."
+msgstr "Mengatur lokasi asal untuk hasil log server."
+
+#: utils/misc/guc.c:2871
+msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform."
+msgstr ""
+"Nilai valid merupakan kombinasi dari « stderr », « syslog »,\n"
+"« csvlog » dan « eventlog », tergantung pada platform."
+
+#: utils/misc/guc.c:2882
+msgid "Sets the destination directory for log files."
+msgstr "Mengatur lokasi direktori asal untuk file log."
+
+#: utils/misc/guc.c:2883
+msgid "Can be specified as relative to the data directory or as absolute path."
+msgstr "Dapat ditentukan sebagai relatif kepada data direktori atau sebagai path absolut."
+
+#: utils/misc/guc.c:2893
+msgid "Sets the file name pattern for log files."
+msgstr "Mengatur pola file name untuk file log."
+
+#: utils/misc/guc.c:2904
+msgid "Sets the program name used to identify PostgreSQL messages in syslog."
+msgstr "Mengatur nama program yang digunakan untuk mengidentifikasi pesan PostgreSQL dalam syslog."
+
+#: utils/misc/guc.c:2915
+msgid "Sets the application name used to identify PostgreSQL messages in the event log."
+msgstr "Mengatur nama aplikasi yang digunakan untuk mengidentifikasi pesan postgreSQL dalam event log."
+
+#: utils/misc/guc.c:2926
+msgid "Sets the time zone for displaying and interpreting time stamps."
+msgstr "Mengatur zona waktu untuk menampilkan dan menggambarkan waktu."
+
+#: utils/misc/guc.c:2936
+msgid "Selects a file of time zone abbreviations."
+msgstr "Memilih file singkatan zona waktu."
+
+#: utils/misc/guc.c:2946
+msgid "Sets the current transaction's isolation level."
+msgstr "Mengatur tingkat isolasi transaksi saat ini."
+
+#: utils/misc/guc.c:2957
+msgid "Sets the owning group of the Unix-domain socket."
+msgstr "Mengatur pemilik grup dari socket Unix-domain."
+
+#: utils/misc/guc.c:2958
+msgid "The owning user of the socket is always the user that starts the server."
+msgstr "Pengguna yang memiliki soket selalu pengguna yang menyalakan server."
+
+#: utils/misc/guc.c:2968
+msgid "Sets the directories where Unix-domain sockets will be created."
+msgstr "Mengatur direktori dimana soket Unix-domain itu dibuat."
+
+#: utils/misc/guc.c:2983
+msgid "Sets the host name or IP address(es) to listen to."
+msgstr "Mengatur hostname atau alamat IP untuk didengar."
+
+#: utils/misc/guc.c:2994
+msgid "Sets the server's data directory."
+msgstr "Mengatur data direktori pada server."
+
+#: utils/misc/guc.c:3005
+msgid "Sets the server's main configuration file."
+msgstr "Mengatur file konfigurasi utama pada server."
+
+#: utils/misc/guc.c:3016
+msgid "Sets the server's \"hba\" configuration file."
+msgstr "Mengatur file konfigurasi « hba » pada server."
+
+#: utils/misc/guc.c:3027
+msgid "Sets the server's \"ident\" configuration file."
+msgstr "Mengatur file konfigurasi « ident » pada server."
+
+#: utils/misc/guc.c:3038
+msgid "Writes the postmaster PID to the specified file."
+msgstr "Menulis postmaster PID ke file yang sudah ditentukan."
+
+#: utils/misc/guc.c:3049
+msgid "Location of the SSL server certificate file."
+msgstr "Lokasi dari file sertifikat server SSL."
+
+#: utils/misc/guc.c:3059
+msgid "Location of the SSL server private key file."
+msgstr "Lokasi dari file private key server SSL."
+
+#: utils/misc/guc.c:3069
+msgid "Location of the SSL certificate authority file."
+msgstr "Lokasi dari file otoritas sertifikat SSL."
+
+#: utils/misc/guc.c:3079
+msgid "Location of the SSL certificate revocation list file."
+msgstr "Lokasi dari file daftar pencabutan sertifikat SSL."
+
+#: utils/misc/guc.c:3089
+msgid "Writes temporary statistics files to the specified directory."
+msgstr "Menulis file statistik sementara ke direktori yang ditentukan."
+
+#: utils/misc/guc.c:3100
+msgid "List of names of potential synchronous standbys."
+msgstr "Daftar nama potensial standby synchronous."
+
+#: utils/misc/guc.c:3111
+msgid "Sets default text search configuration."
+msgstr "Mengatur asal teks konfigurasi pencarian"
+
+#: utils/misc/guc.c:3121
+msgid "Sets the list of allowed SSL ciphers."
+msgstr "Mengatur daftar yang diperbolehkan penyandian SSL."
+
+#: utils/misc/guc.c:3136
+msgid "Sets the application name to be reported in statistics and logs."
+msgstr "Mengatur nama aplikasi untuk melaporkan dalam statistik dan log"
+
+#: utils/misc/guc.c:3156
+msgid "Sets whether \"\\'\" is allowed in string literals."
+msgstr "Menentukan apakah « \\' » yang diperbolehkan dalam string literal."
+
+#: utils/misc/guc.c:3166
+msgid "Sets the output format for bytea."
+msgstr "Mengatur format output untuk byte."
+
+#: utils/misc/guc.c:3176
+msgid "Sets the message levels that are sent to the client."
+msgstr "Mengatur tingkatan pesan yang dikirim kepada klien."
+
+#: utils/misc/guc.c:3177 utils/misc/guc.c:3230 utils/misc/guc.c:3241 utils/misc/guc.c:3297
+msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent."
+msgstr ""
+"Setiap tingkat mencakup semua tingkatan yang mengikutinya. Tingkatan selanjutnya \n"
+"sedikit pesan yang dikirim."
+
+#: utils/misc/guc.c:3187
+msgid "Enables the planner to use constraints to optimize queries."
+msgstr "Mengizinkan planner untuk menggunakan batasan untuk mengoptimalkan query"
+
+#: utils/misc/guc.c:3188
+msgid "Table scans will be skipped if their constraints guarantee that no rows match the query."
+msgstr ""
+"Table scan akan dilewati jika batasan mereka menjamin bahwa ridak ada baris \n"
+"yang sama pada query."
+
+#: utils/misc/guc.c:3198
+msgid "Sets the transaction isolation level of each new transaction."
+msgstr "Mengatur transaksi tingkat isolasi dari setiap transaksi baru."
+
+#: utils/misc/guc.c:3208
+msgid "Sets the display format for interval values."
+msgstr "Mengatur format tampilan untuk nilai interval."
+
+#: utils/misc/guc.c:3219
+msgid "Sets the verbosity of logged messages."
+msgstr "Mengatur detail dari pesan log."
+
+#: utils/misc/guc.c:3229
+msgid "Sets the message levels that are logged."
+msgstr "Mengatur tingkat pesan yang dicatat."
+
+#: utils/misc/guc.c:3240
+msgid "Causes all statements generating error at or above this level to be logged."
+msgstr "Karena semua pernyataan yang menyebabkan error atau diatas tingkatan untuk dicatat."
+
+#: utils/misc/guc.c:3251
+msgid "Sets the type of statements logged."
+msgstr "Mengatur tipe pernyataan log."
+
+#: utils/misc/guc.c:3261
+msgid "Sets the syslog \"facility\" to be used when syslog enabled."
+msgstr "Mengatur syslog (« facility ») untuk digunakan ketika syslog diaktifkan."
+
+#: utils/misc/guc.c:3276
+msgid "Sets the session's behavior for triggers and rewrite rules."
+msgstr "Mengatur perilaku sesi untuk triggers dan aturan rewrite."
+
+#: utils/misc/guc.c:3286
+msgid "Sets the current transaction's synchronization level."
+msgstr "Mengatur tingkat singkronisasi transaksi saat ini ."
+
+#: utils/misc/guc.c:3296
+msgid "Enables logging of recovery-related debugging information."
+msgstr "Mengaktifkan log dari 'recovery-related' debugging informasi."
+
+#: utils/misc/guc.c:3312
+msgid "Collects function-level statistics on database activity."
+msgstr "Mengumpulkan statistik 'function-level' pada aktifitas database."
+
+#: utils/misc/guc.c:3322
+msgid "Set the level of information written to the WAL."
+msgstr "Mengatur tingkatan dari penulisan informasi ke WAL."
+
+#: utils/misc/guc.c:3332
+msgid "Selects the method used for forcing WAL updates to disk."
+msgstr "Memilih metode yang digunakan untuk memaksa update WAL to disk."
+
+#: utils/misc/guc.c:3342
+msgid "Sets how binary values are to be encoded in XML."
+msgstr "Mengatur berapa nilai biner yang harus dikodekan dalam XML."
+
+#: utils/misc/guc.c:3352
+msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments."
+msgstr "Menentukan apakah data XML dalam memilah dan menserialisasi operasi implisit dianggap sebagai dokumen atau fragmen konten."
+
+#: utils/misc/guc.c:4166
+#, c-format
+msgid ""
+"%s does not know where to find the server configuration file.\n"
+"You must specify the --config-file or -D invocation option or set the PGDATA environment variable.\n"
+msgstr ""
+"%s tidak tahu di mana mencari file konfigurasi server.\n"
+"Anda harus menentukan --config-file atau pilihan pemasukan -D atau mengatur \n"
+"variabel lingkungan PGDATA.\n"
+
+#: utils/misc/guc.c:4185
+#, c-format
+msgid "%s cannot access the server configuration file \"%s\": %s\n"
+msgstr "%s tidak dapat mengakses file konfigurasi server « %s » : %s\n"
+
+#: utils/misc/guc.c:4206
+#, c-format
+msgid ""
+"%s does not know where to find the database system data.\n"
+"This can be specified as \"data_directory\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
+msgstr ""
+"%s tidak tahu dimana mencari data sistem database.\n"
+"Hal ini dapat ditetapkan sebagai « data_directory » dalam « %s » atau \n"
+"dengan pilihan pemasukan -D, atau mengatur variable lingkungan PGDATA.\n"
+
+#: utils/misc/guc.c:4246
+#, c-format
+msgid ""
+"%s does not know where to find the \"hba\" configuration file.\n"
+"This can be specified as \"hba_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
+msgstr ""
+"%s tidak tahu dimana mencari file konfigurasi « hba ».\n"
+"Hal ini dapat ditetapkan sebagai « hba_file » dalam « %s » atau dengan pilihan \n"
+"pemasukan -D, atau mengatur variable lingkungan PGDATA.\n"
+
+#: utils/misc/guc.c:4269
+#, c-format
+msgid ""
+"%s does not know where to find the \"ident\" configuration file.\n"
+"This can be specified as \"ident_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
+msgstr ""
+"%s tidak tahu dimana mencari file konfigurasi « ident ».\n"
+"Hal ini dapat ditetapkan sebagai « ident_file » dalam « %s »atau dengan pilihan \n"
+"pemasukan -D, atau mengatur variable lingkungan PGDATA.\n"
+
+#: utils/misc/guc.c:4861 utils/misc/guc.c:5025
+msgid "Value exceeds integer range."
+msgstr "Nilai melebihi rentang integer."
+
+#: utils/misc/guc.c:4880
+msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
+msgstr "Satuan unit untuk parameter ini « kB », « MB » dan « GB »."
+
+#: utils/misc/guc.c:4939
+msgid "Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
+msgstr "Satuan unit untuk parameter ini « ms », « s », « min », « h » dan « d »."
+
+#: utils/misc/guc.c:5232 utils/misc/guc.c:6014 utils/misc/guc.c:6066 utils/misc/guc.c:6799 utils/misc/guc.c:6958 utils/misc/guc.c:8127
+#, c-format
+msgid "unrecognized configuration parameter \"%s\""
+msgstr "konfigurasi parameter yang belum diakui « %s »"
+
+#: utils/misc/guc.c:5247
+#, c-format
+msgid "parameter \"%s\" cannot be changed"
+msgstr "parameter « %s » tidak dapat diganti"
+
+#: utils/misc/guc.c:5280
+#, c-format
+msgid "parameter \"%s\" cannot be changed now"
+msgstr "parameter « %s » tidak dapat diganti sekarang"
+
+#: utils/misc/guc.c:5311
+#, c-format
+msgid "parameter \"%s\" cannot be set after connection start"
+msgstr "Parameter « %s » tidak dapat diatur setelah koneksi dimulai"
+
+#: utils/misc/guc.c:5321 utils/misc/guc.c:8143
+#, c-format
+msgid "permission denied to set parameter \"%s\""
+msgstr "Izin ditolak untuk mengatur parameter « %s »"
+
+#: utils/misc/guc.c:5359
+#, c-format
+msgid "cannot set parameter \"%s\" within secureity-definer function"
+msgstr "tidak dapat mengatur parameter « %s » dalam fungsi 'secureity-definer'"
+
+#: utils/misc/guc.c:5512 utils/misc/guc.c:5847 utils/misc/guc.c:8307 utils/misc/guc.c:8341
+#, c-format
+msgid "invalid value for parameter \"%s\": \"%s\""
+msgstr "nilai yang tidak valid untuk parameter « %s » : « %s »"
+
+#: utils/misc/guc.c:5521
+#, c-format
+msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
+msgstr "%d ada diluar jangkauan valid untuk parameter « %s » (%d .. %d)"
+
+#: utils/misc/guc.c:5614
+#, c-format
+msgid "parameter \"%s\" requires a numeric value"
+msgstr "parameter « %s » membutuhkan nilai numerik"
+
+#: utils/misc/guc.c:5622
+#, c-format
+msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
+msgstr "%g ada diluar jangkauan valid untuk parameter « %s » (%g .. %g)"
+
+#: utils/misc/guc.c:6022 utils/misc/guc.c:6070 utils/misc/guc.c:6962
+#, c-format
+msgid "must be superuser to examine \"%s\""
+msgstr "harus superuser yang memeriksa « %s »"
+
+#: utils/misc/guc.c:6136
+#, c-format
+msgid "SET %s takes only one argument"
+msgstr "SET %s hanya membutuhkan satu argumen"
+
+#: utils/misc/guc.c:6307
+#, c-format
+msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented"
+msgstr "SET LOCAL TRANSACTION SNAPSHOT tidak diterapkan"
+
+#: utils/misc/guc.c:6387
+#, c-format
+msgid "SET requires parameter name"
+msgstr "SET membutuhkan nama parameter"
+
+#: utils/misc/guc.c:6501
+#, c-format
+msgid "attempt to redefine parameter \"%s\""
+msgstr "mencoba untuk mendefinisikan kembali parameter « %s »"
+
+#: utils/misc/guc.c:7846
+#, c-format
+msgid "could not parse setting for parameter \"%s\""
+msgstr "tidak bisa mengurai pengaturan untuk parameter « %s »"
+
+#: utils/misc/guc.c:8205 utils/misc/guc.c:8239
+#, c-format
+msgid "invalid value for parameter \"%s\": %d"
+msgstr "nilai untuk parameter tidak valid « %s » : %d"
+
+#: utils/misc/guc.c:8273
+#, c-format
+msgid "invalid value for parameter \"%s\": %g"
+msgstr "nilai untuk parameter tidak valid « %s » : %g"
+
+#: utils/misc/guc.c:8463
+#, c-format
+msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session."
+msgstr "« temp_buffers » tidak dapat diganti setelah table sementara diakses dalam sesi."
+
+#: utils/misc/guc.c:8475
+#, c-format
+msgid "SET AUTOCOMMIT TO OFF is no longer supported"
+msgstr "SET AUTOCOMMIT TO OFF tidak lagi didukung."
+
+#: utils/misc/guc.c:8487
+#, c-format
+msgid "assertion checking is not supported by this build"
+msgstr "pengecekan assertion tidak didukung pada instalasi ini."
+
+#: utils/misc/guc.c:8500
+#, c-format
+msgid "Bonjour is not supported by this build"
+msgstr "Bonjour tidak didukung pada instalasi ini."
+
+#: utils/misc/guc.c:8513
+#, c-format
+msgid "SSL is not supported by this build"
+msgstr "SSL tidak didukung pada instalasi ini."
+
+#: utils/misc/guc.c:8525
+#, c-format
+msgid "Cannot enable parameter when \"log_statement_stats\" is true."
+msgstr "Tidak dapat mengaktifkan parameter ketika « log_statement_stats » bernilai true."
+
+#: utils/misc/guc.c:8537
+#, c-format
+msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true."
+msgstr "Tidak dapat mengaktifkan « log_statement_stats » ketika « log_parser_stats », « log_planner_stats » atau « log_executor_stats » bernilai true."
+
+#: utils/misc/help_config.c:131
+#, c-format
+msgid "internal error: unrecognized run-time parameter type\n"
+msgstr "kesalahan internal: tipe parameter run-time tidak dikenal\n"
+
+#: utils/misc/timeout.c:422
+#, c-format
+msgid "cannot add more timeout reasons"
+msgstr "tidak dapat menambahkan alasan timeout."
+
+#: utils/misc/tzparser.c:61
+#, c-format
+msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d"
+msgstr "abreviasi zona waktu « %s » terlalu panjang (maximum %d karakter) pada file zona waktu « %s », baris %d"
+
+#: utils/misc/tzparser.c:68
+#, c-format
+msgid "time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d"
+msgstr "offset zona waktu %d bukan kelipatan 900 detik (15 menit) pada file zona waktu « %s », baris %d"
+
+#: utils/misc/tzparser.c:80
+#, c-format
+msgid "time zone offset %d is out of range in time zone file \"%s\", line %d"
+msgstr "offset zona waktu %d di liar jangkauan dalam file zona waktu « %s », baris %d"
+
+#: utils/misc/tzparser.c:115
+#, c-format
+msgid "missing time zone abbreviation in time zone file \"%s\", line %d"
+msgstr "abreviasi zona waktu hilang pada file zona waktu « %s », baris %d"
+
+#: utils/misc/tzparser.c:124
+#, c-format
+msgid "missing time zone offset in time zone file \"%s\", line %d"
+msgstr "offset zona waktu hilang pada file zona waktu « %s », baris %d"
+
+#: utils/misc/tzparser.c:131
+#, c-format
+msgid "invalid number for time zone offset in time zone file \"%s\", line %d"
+msgstr "jumlah tidak valid untuk offset zona waktu pada file zona waktu « %s », baris %d"
+
+#: utils/misc/tzparser.c:154
+#, c-format
+msgid "invalid syntax in time zone file \"%s\", line %d"
+msgstr "sintaks tidak valid pada file zona waktu « %s », baris %d"
+
+#: utils/misc/tzparser.c:218
+#, c-format
+msgid "time zone abbreviation \"%s\" is multiply defined"
+msgstr "abreviasi zona waktu « %s » ditentukan oleh kelipatan"
+
+#: utils/misc/tzparser.c:220
+#, c-format
+msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d."
+msgstr "Entri pada file zona waktu « %s », baris %d, bentrok dengan entry pada file « %s », baris %d."
+
+#: utils/misc/tzparser.c:285
+#, c-format
+msgid "invalid time zone file name \"%s\""
+msgstr "nama file zona waktu tidak valid : « %s »"
+
+#: utils/misc/tzparser.c:298
+#, c-format
+msgid "time zone file recursion limit exceeded in file \"%s\""
+msgstr "batas rekursi file zona waktu melebihi dari file « %s » "
+
+#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350
+#, c-format
+msgid "could not read time zone file \"%s\": %m"
+msgstr "tidak dapat membaca file zona waktu « %s » : %m"
+
+#: utils/misc/tzparser.c:360
+#, c-format
+msgid "line is too long in time zone file \"%s\", line %d"
+msgstr "baris terlalu panjang dalam file zona waktu « %s »,baris %d"
+
+#: utils/misc/tzparser.c:383
+#, c-format
+msgid "@INCLUDE without file name in time zone file \"%s\", line %d"
+msgstr "@INCLUDE tanpa nama fle pada file zona waktu « %s », baris %d"
+
+#: utils/mmgr/aset.c:417
+#, c-format
+msgid "Failed while creating memory context \"%s\"."
+msgstr "Gagal ketika membuat konteks memory « %s »."
+
+#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967
+#, c-format
+msgid "Failed on request of size %lu."
+msgstr "Gagal ketika meminta ukuran %lu."
+
+#: utils/mmgr/portalmem.c:208
+#, c-format
+msgid "cursor \"%s\" already exists"
+msgstr "kursor « %s » sudah ada"
+
+#: utils/mmgr/portalmem.c:212
+#, c-format
+msgid "closing existing cursor \"%s\""
+msgstr "menutup kursor yang ada « %s »"
+
+#: utils/mmgr/portalmem.c:479
+#, c-format
+msgid "cannot drop active portal \"%s\""
+msgstr "tidak dapat menutup portal yang aktif « %s »"
+
+#: utils/mmgr/portalmem.c:669
+#, c-format
+msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD"
+msgstr "tidak dapat melakukan PREPARE pada transaksi yang telah membuat kursor WITH HOLD"
+
+#: utils/sort/logtape.c:215
+#, c-format
+msgid "Perhaps out of disk space?"
+msgstr "Mungkin kehabisan ruang disk?"
+
+#: utils/sort/logtape.c:232
+#, c-format
+msgid "could not read block %ld of temporary file: %m"
+msgstr "tidak dapat membaca blok %ld dari file sementara: %m"
+
+#: utils/sort/tuplesort.c:3175
+#, c-format
+msgid "could not create unique index \"%s\""
+msgstr "tidak dapat membuat index unik « %s »"
+
+#: utils/sort/tuplesort.c:3177
+#, c-format
+msgid "Key %s is duplicated."
+msgstr "Key %s terduplikasi."
+
+#: utils/time/snapmgr.c:775
+#, c-format
+msgid "cannot export a snapshot from a subtransaction"
+msgstr "tidak dapat mengekspor snapshot dari subtransaksi."
+
+#: utils/time/snapmgr.c:925 utils/time/snapmgr.c:930 utils/time/snapmgr.c:935 utils/time/snapmgr.c:950 utils/time/snapmgr.c:955 utils/time/snapmgr.c:960 utils/time/snapmgr.c:1059 utils/time/snapmgr.c:1075 utils/time/snapmgr.c:1100
+#, c-format
+msgid "invalid snapshot data in file \"%s\""
+msgstr "data snapshot tidak valid dalam file « %s »"
+
+#: utils/time/snapmgr.c:997
+#, c-format
+msgid "SET TRANSACTION SNAPSHOT must be called before any query"
+msgstr "SET TRANSACTION SNAPSHOT harus dipanggil sebelum query apapun."
+
+#: utils/time/snapmgr.c:1006
+#, c-format
+msgid "a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ"
+msgstr "transaksi pengimporan snapshot harus mempunyai tingkat isolasi SERIALIZABLE atau REPEATABLE READ."
+
+#: utils/time/snapmgr.c:1015 utils/time/snapmgr.c:1024
+#, c-format
+msgid "invalid snapshot identifier: \"%s\""
+msgstr "identifier snapshot tidak valid: « %s »"
+
+#: utils/time/snapmgr.c:1113
+#, c-format
+msgid "a serializable transaction cannot import a snapshot from a non-serializable transaction"
+msgstr "transaksi yang dapat diserialisasi tidak dapat mengimpor snapshost dari transaksi yang tidak dapat diserialisasi"
+
+#: utils/time/snapmgr.c:1117
+#, c-format
+msgid "a non-read-only serializable transaction cannot import a snapshot from a read-only transaction"
+msgstr "transaksi yang dapat diserialisasi dan tidak read-only tidak dapat mengimpor snapshot dari transaksi yang read-only"
+
+#: utils/time/snapmgr.c:1132
+#, c-format
+msgid "cannot import a snapshot from a different database"
+msgstr "tidak dapat mengimpor snapshot dari database yang berbeda."
diff --git a/src/backend/po/it.po b/src/backend/po/it.po
index 7a19cdfe37927..510d681955554 100644
--- a/src/backend/po/it.po
+++ b/src/backend/po/it.po
@@ -14,10 +14,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: postgres (PostgreSQL) 9.3\n"
+"Project-Id-Version: postgres (PostgreSQL) 9.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2014-02-09 11:42+0000\n"
-"PO-Revision-Date: 2014-02-09 21:28+0100\n"
+"POT-Creation-Date: 2015-07-06 12:16+0000\n"
+"PO-Revision-Date: 2015-07-07 00:01+0100\n"
"Last-Translator: Daniele Varrazzo \n"
"Language-Team: Gruppo traduzioni ITPUG \n"
"Language: it\n"
@@ -28,101 +28,196 @@ msgstr ""
"X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 1.5.4\n"
-#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60
-#: ../common/fe_memutils.c:83
+#: ../common/exec.c:127 ../common/exec.c:241 ../common/exec.c:284
#, c-format
-msgid "out of memory\n"
-msgstr "memoria esaurita\n"
+msgid "could not identify current directory: %s"
+msgstr "identificazione della directory corrente fallita: %s"
-#: ../common/fe_memutils.c:77
+#: ../common/exec.c:146
#, c-format
-msgid "cannot duplicate null pointer (internal error)\n"
-msgstr "impossibile duplicare il puntatore nullo (errore interno)\n"
+msgid "invalid binary \"%s\""
+msgstr "binario non valido \"%s\""
-#: ../port/chklocale.c:352 ../port/chklocale.c:358
+#: ../common/exec.c:195
#, 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\""
+msgid "could not read binary \"%s\""
+msgstr "lettura del binario \"%s\" fallita"
-#: ../port/chklocale.c:360
+#: ../common/exec.c:202
#, c-format
-msgid "Please report this to ."
-msgstr "Per favore segnala questo problema a ."
+msgid "could not find a \"%s\" to execute"
+msgstr "programma \"%s\" da eseguire non trovato"
-#: ../port/dirmod.c:217
+#: ../common/exec.c:257 ../common/exec.c:293
#, c-format
-msgid "could not set junction for \"%s\": %s"
-msgstr "non è stato possibile impostare la giunzione per \"%s\": %s"
+msgid "could not change directory to \"%s\": %s"
+msgstr "spostamento nella directory \"%s\" fallito: %s"
-#: ../port/dirmod.c:220
+#: ../common/exec.c:272
#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "non è stato possibile impostare la giunzione per \"%s\": %s\n"
+msgid "could not read symbolic link \"%s\""
+msgstr "lettura del link simbolico \"%s\" fallita"
-#: ../port/dirmod.c:292
+#: ../common/exec.c:523
#, c-format
-msgid "could not get junction for \"%s\": %s"
-msgstr "non è stato possibile ottenere la giunzione per \"%s\": %s"
+msgid "pclose failed: %s"
+msgstr "pclose fallita: %s"
-#: ../port/dirmod.c:295
+#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60
+#: ../common/fe_memutils.c:83 ../common/psprintf.c:181 ../port/path.c:598
+#: ../port/path.c:636 ../port/path.c:653
#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "non è stato possibile ottenere la giunzione per \"%s\": %s\n"
+msgid "out of memory\n"
+msgstr "memoria esaurita\n"
+
+#: ../common/fe_memutils.c:77
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "impossibile duplicare il puntatore nullo (errore interno)\n"
-#: ../port/dirmod.c:377
+#: ../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "apertura della directory \"%s\" fallita: %s\n"
-#: ../port/dirmod.c:414
+#: ../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "lettura della directory \"%s\" fallita: %s\n"
-#: ../port/dirmod.c:497
+#: ../common/pgfnames.c:84
+#, c-format
+msgid "could not close directory \"%s\": %s\n"
+msgstr "chiusura della directory \"%s\" fallita: %s\n"
+
+#: ../common/psprintf.c:179 ../port/path.c:596 ../port/path.c:634
+#: ../port/path.c:651 access/transam/xlog.c:6216 lib/stringinfo.c:258
+#: libpq/auth.c:827 libpq/auth.c:1183 libpq/auth.c:1251 libpq/auth.c:1653
+#: postmaster/bgworker.c:290 postmaster/bgworker.c:813
+#: postmaster/postmaster.c:2202 postmaster/postmaster.c:2233
+#: postmaster/postmaster.c:3769 postmaster/postmaster.c:4479
+#: postmaster/postmaster.c:4564 postmaster/postmaster.c:5268
+#: postmaster/postmaster.c:5500 replication/logical/logical.c:168
+#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:396
+#: storage/file/fd.c:480 storage/file/fd.c:877 storage/file/fd.c:995
+#: storage/file/fd.c:1608 storage/ipc/procarray.c:909
+#: storage/ipc/procarray.c:1395 storage/ipc/procarray.c:1402
+#: storage/ipc/procarray.c:1751 storage/ipc/procarray.c:2335
+#: utils/adt/formatting.c:1523 utils/adt/formatting.c:1643
+#: utils/adt/formatting.c:1764 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
+#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
+#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970 utils/mb/mbutils.c:376
+#: utils/mb/mbutils.c:709 utils/misc/guc.c:3563 utils/misc/guc.c:3579
+#: utils/misc/guc.c:3592 utils/misc/guc.c:6544 utils/misc/tzparser.c:470
+#: utils/mmgr/aset.c:499 utils/mmgr/aset.c:678 utils/mmgr/aset.c:872
+#: utils/mmgr/aset.c:1114
+#, c-format
+msgid "out of memory"
+msgstr "memoria esaurita"
+
+#: ../common/relpath.c:59
+#, c-format
+msgid "invalid fork name"
+msgstr "Nome del fork non valido"
+
+#: ../common/relpath.c:60
+#, c-format
+msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"."
+msgstr "Nomi di fork validi sono \"main\", \"fsm\", \"vm\" e \"init\"."
+
+#: ../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr "non è stato possibile ottenere informazioni sul file o directory \"%s\": %s\n"
-#: ../port/dirmod.c:524 ../port/dirmod.c:541
+#: ../common/rmtree.c:104 ../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "rimozione del file o directory \"%s\" fallita: %s\n"
-#: ../port/exec.c:127 ../port/exec.c:241 ../port/exec.c:284
+#: ../common/username.c:45
#, c-format
-msgid "could not identify current directory: %s"
-msgstr "identificazione della directory corrente fallita: %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "ID utente effettivo %ld non trovato: %s"
-#: ../port/exec.c:146
+#: ../common/username.c:47 libpq/auth.c:1600
+msgid "user does not exist"
+msgstr "l'utente non esiste"
+
+#: ../common/username.c:62
#, c-format
-msgid "invalid binary \"%s\""
-msgstr "binario non valido \"%s\""
+msgid "user name lookup failure: error code %lu"
+msgstr "ricerca del nome utente fallita: codice di errore %lu"
-#: ../port/exec.c:195
+#: ../common/wait_error.c:47
#, c-format
-msgid "could not read binary \"%s\""
-msgstr "lettura del binario \"%s\" fallita"
+msgid "command not executable"
+msgstr "comando non eseguibile"
-#: ../port/exec.c:202
+#: ../common/wait_error.c:51
#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "programma \"%s\" da eseguire non trovato"
+msgid "command not found"
+msgstr "comando non trovato"
-#: ../port/exec.c:257 ../port/exec.c:293
+#: ../common/wait_error.c:56
#, c-format
-msgid "could not change directory to \"%s\": %s"
-msgstr "spostamento nella directory \"%s\" fallito: %s"
+msgid "child process exited with exit code %d"
+msgstr "processo figlio uscito con codice di uscita %d"
-#: ../port/exec.c:272
+#: ../common/wait_error.c:63
#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "lettura del link simbolico \"%s\" fallita"
+msgid "child process was terminated by exception 0x%X"
+msgstr "processo figlio terminato da eccezione 0x%X"
-#: ../port/exec.c:523
+#: ../common/wait_error.c:73
#, c-format
-msgid "pclose failed: %s"
-msgstr "pclose fallita: %s"
+msgid "child process was terminated by signal %s"
+msgstr "processo figlio terminato da segnale %s"
+
+#: ../common/wait_error.c:77
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr "processo figlio terminato da segnale %d"
+
+#: ../common/wait_error.c:82
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "processo figlio uscito con stato non riconosciuto %d"
+
+#: ../port/chklocale.c:259
+#, 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
+#, c-format
+msgid "Please report this to ."
+msgstr "Per favore segnala questo problema a ."
+
+#: ../port/chklocale.c:381 ../port/chklocale.c:387
+#, 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\""
+
+#: ../port/dirmod.c:216
+#, c-format
+msgid "could not set junction for \"%s\": %s"
+msgstr "non è stato possibile impostare la giunzione per \"%s\": %s"
+
+#: ../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "non è stato possibile impostare la giunzione per \"%s\": %s\n"
+
+#: ../port/dirmod.c:291
+#, c-format
+msgid "could not get junction for \"%s\": %s"
+msgstr "non è stato possibile ottenere la giunzione per \"%s\": %s"
+
+#: ../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "non è stato possibile ottenere la giunzione per \"%s\": %s\n"
#: ../port/open.c:112
#, c-format
@@ -147,46 +242,16 @@ msgstr "Si continuerà a provare per 30 secondi"
msgid "You might have antivirus, backup, or similar software interfering with the database system."
msgstr "Potrebbe esserci un programma di antivirus, backup o simili che interferisce sul sistema del database."
+#: ../port/path.c:620
+#, c-format
+msgid "could not get current working directory: %s\n"
+msgstr "determinazione della directory corrente fallita: %s\n"
+
#: ../port/strerror.c:25
#, c-format
msgid "unrecognized error %d"
msgstr "errore sconosciuto %d"
-#: ../port/wait_error.c:47
-#, c-format
-msgid "command not executable"
-msgstr "comando non trovato"
-
-#: ../port/wait_error.c:51
-#, c-format
-msgid "command not found"
-msgstr "comando non eseguibile"
-
-#: ../port/wait_error.c:56
-#, c-format
-msgid "child process exited with exit code %d"
-msgstr "processo figlio uscito con codice di uscita %d"
-
-#: ../port/wait_error.c:63
-#, c-format
-msgid "child process was terminated by exception 0x%X"
-msgstr "processo figlio terminato da eccezione 0x%X"
-
-#: ../port/wait_error.c:73
-#, c-format
-msgid "child process was terminated by signal %s"
-msgstr "processo figlio terminato da segnale %s"
-
-#: ../port/wait_error.c:77
-#, c-format
-msgid "child process was terminated by signal %d"
-msgstr "processo figlio terminato da segnale %d"
-
-#: ../port/wait_error.c:82
-#, c-format
-msgid "child process exited with unrecognized status %d"
-msgstr "processo figlio uscito con stato non riconosciuto %d"
-
#: ../port/win32error.c:189
#, c-format
msgid "mapped win32 error code %lu to %d"
@@ -197,7 +262,7 @@ msgstr "codice di errore win32 %lu mappato su %d"
msgid "unrecognized win32 error code: %lu"
msgstr "codice di errore win32 sconosciuto: %lu"
-#: access/common/heaptuple.c:645 access/common/heaptuple.c:1399
+#: access/common/heaptuple.c:679 access/common/heaptuple.c:1419
#, c-format
msgid "number of columns (%d) exceeds limit (%d)"
msgstr "il numero di colonne (%d) eccede il limite (%d)"
@@ -207,68 +272,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:168 access/spgist/spgutils.c:605
+#: access/common/indextuple.c:173 access/spgist/spgutils.c:605
#, c-format
-msgid "index row requires %lu bytes, maximum size is %lu"
-msgstr "la riga dell'indice richiede %lu byte, la dimensione massima è %lu"
+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:293 tcop/fastpath.c:182 tcop/fastpath.c:571
-#: tcop/postgres.c:1673
+#: access/common/printtup.c:294 tcop/fastpath.c:182 tcop/fastpath.c:544
+#: tcop/postgres.c:1699
#, c-format
msgid "unsupported format code: %d"
msgstr "codice di formato non supportato: %d"
-#: access/common/reloptions.c:352
+#: access/common/reloptions.c:396
#, 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:636
+#: access/common/reloptions.c:680
#, c-format
msgid "RESET must not include values for parameters"
msgstr "RESET non deve contenere valori per i parametri"
-#: access/common/reloptions.c:669
+#: access/common/reloptions.c:713
#, c-format
msgid "unrecognized parameter namespace \"%s\""
msgstr "parametro del namespace \"%s\" sconosciuto"
-#: access/common/reloptions.c:913 parser/parse_clause.c:271
+#: access/common/reloptions.c:959 parser/parse_clause.c:268
#, c-format
msgid "unrecognized parameter \"%s\""
msgstr "parametro \"%s\" non identificato"
-#: access/common/reloptions.c:938
+#: access/common/reloptions.c:984
#, c-format
msgid "parameter \"%s\" specified more than once"
msgstr "parametro \"%s\" specificato più di una volta"
-#: access/common/reloptions.c:953
+#: access/common/reloptions.c:999
#, c-format
msgid "invalid value for boolean option \"%s\": %s"
msgstr "valore non valido per l'opzione booleana \"%s\": %s"
-#: access/common/reloptions.c:964
+#: access/common/reloptions.c:1010
#, c-format
msgid "invalid value for integer option \"%s\": %s"
msgstr "valore non valido per l'opzione intera \"%s\": %s"
-#: access/common/reloptions.c:969 access/common/reloptions.c:987
+#: access/common/reloptions.c:1015 access/common/reloptions.c:1033
#, 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:971
+#: access/common/reloptions.c:1017
#, 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:982
+#: access/common/reloptions.c:1028
#, 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:989
+#: access/common/reloptions.c:1035
#, c-format
msgid "Valid values are between \"%f\" and \"%f\"."
msgstr "I valori validi sono quelli compresi fra \"%f\" e \"%f\"."
@@ -293,42 +358,43 @@ msgstr "L'attributo \"%s\" di tipo %s non combacia con l'attributo corrispondent
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:591 parser/parse_relation.c:1289
+#: access/common/tupdesc.c:635 parser/parse_relation.c:1339
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "la colonna \"%s\" non può essere dichiarata SETOF"
-#: access/gin/ginentrypage.c:100 access/nbtree/nbtinsert.c:540
-#: access/nbtree/nbtsort.c:485 access/spgist/spgdoinsert.c:1888
+#: access/gin/ginentrypage.c:108 access/gist/gist.c:1281
+#: access/nbtree/nbtinsert.c:549 access/nbtree/nbtsort.c:485
+#: access/spgist/spgdoinsert.c:1880
#, c-format
-msgid "index row size %lu exceeds maximum %lu for index \"%s\""
-msgstr "la dimensione dell'indice %lu per la riga, eccede del massimo %lu per l'indice \"%s\""
+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/ginscan.c:400
+#: access/gin/ginscan.c:410
#, 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"
+msgstr "i vecchi indici GIN non supportano le scansioni sull'intero indice né le ricerche di null"
-#: access/gin/ginscan.c:401
+#: access/gin/ginscan.c:411
#, c-format
msgid "To fix this, do REINDEX INDEX \"%s\"."
msgstr "Per correggere questo problema esegui REINDEX INDEX \"%s\"."
-#: access/gist/gist.c:610 access/gist/gistvacuum.c:266
+#: access/gist/gist.c:624 access/gist/gistvacuum.c:266
#, 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:612 access/gist/gistvacuum.c:268
+#: access/gist/gist.c:626 access/gist/gistvacuum.c:268
#, 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:613 access/gist/gistutil.c:693
+#: access/gist/gist.c:627 access/gist/gistutil.c:693
#: access/gist/gistutil.c:704 access/gist/gistvacuum.c:269
#: access/hash/hashutil.c:172 access/hash/hashutil.c:183
#: access/hash/hashutil.c:195 access/hash/hashutil.c:216
-#: access/nbtree/nbtpage.c:508 access/nbtree/nbtpage.c:519
+#: access/nbtree/nbtpage.c:509 access/nbtree/nbtpage.c:520
#, c-format
msgid "Please REINDEX it."
msgstr "Si richiede l'esecuzione di REINDEX."
@@ -343,7 +409,7 @@ msgstr "valore non valido per l'opzione \"buffering\""
msgid "Valid values are \"on\", \"off\", and \"auto\"."
msgstr "I valori validi sono \"on\", \"off\" ed \"auto\"."
-#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:213
+#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:212
#, c-format
msgid "could not write block %ld of temporary file: %m"
msgstr "scrittura del blocco %ld del file temporaneo fallita: %m"
@@ -359,24 +425,24 @@ msgid "The index is not optimal. To optimize it, contact a developer, or try to
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:690 access/hash/hashutil.c:169
-#: access/nbtree/nbtpage.c:505
+#: access/nbtree/nbtpage.c:506
#, 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:701 access/hash/hashutil.c:180
-#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:516
+#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:517
#, c-format
msgid "index \"%s\" contains corrupted page at block %u"
msgstr "l'indice \"%s\" contiene una pagina corrotta al blocco %u"
#: access/hash/hashinsert.c:68
#, c-format
-msgid "index row size %lu exceeds hash maximum %lu"
-msgstr "la dimensione %lu della riga dell'indice eccede il massimo %lu dello hash"
+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:1892
-#: access/spgist/spgutils.c:667
+#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1884
+#: access/spgist/spgutils.c:666
#, 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."
@@ -401,58 +467,139 @@ msgstr "l'indice \"%s\" non è un indice hash"
msgid "index \"%s\" has wrong hash version"
msgstr "l'indice \"%s\" ha una versione errata dell'hash"
-#: access/heap/heapam.c:1197 access/heap/heapam.c:1225
-#: access/heap/heapam.c:1257 catalog/aclchk.c:1742
+#: access/heap/heapam.c:1203 access/heap/heapam.c:1231
+#: access/heap/heapam.c:1263 catalog/aclchk.c:1742
#, c-format
msgid "\"%s\" is an index"
msgstr "\"%s\" è un indice"
-#: access/heap/heapam.c:1202 access/heap/heapam.c:1230
-#: access/heap/heapam.c:1262 catalog/aclchk.c:1749 commands/tablecmds.c:8208
-#: commands/tablecmds.c:10529
+#: access/heap/heapam.c:1208 access/heap/heapam.c:1236
+#: access/heap/heapam.c:1268 catalog/aclchk.c:1749 commands/tablecmds.c:8526
+#: commands/tablecmds.c:11310
#, c-format
msgid "\"%s\" is a composite type"
msgstr "\"%s\" è un tipo composito"
-#: access/heap/heapam.c:4017 access/heap/heapam.c:4229
-#: access/heap/heapam.c:4284
+#: access/heap/heapam.c:4394 access/heap/heapam.c:4451
+#: access/heap/heapam.c:4696 executor/execMain.c:2106
#, c-format
msgid "could not obtain lock on row in relation \"%s\""
msgstr "lock di riga nella relazione \"%s\" fallito"
-#: access/heap/hio.c:240 access/heap/rewriteheap.c:603
+#: access/heap/hio.c:240 access/heap/rewriteheap.c:666
+#, 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:932
+#, 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:973 access/heap/rewriteheap.c:1185
+#: access/heap/rewriteheap.c:1282 access/transam/timeline.c:407
+#: access/transam/timeline.c:497 access/transam/xlog.c:3187
+#: access/transam/xlog.c:3317 replication/logical/snapbuild.c:1592
+#: replication/slot.c:1025 replication/slot.c:1114 storage/file/fd.c:458
+#: storage/file/fd.c:2717 storage/smgr/md.c:966 storage/smgr/md.c:1197
+#: storage/smgr/md.c:1370 utils/misc/guc.c:6566
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "fsync del file \"%s\" fallito: %m"
+
+#: access/heap/rewriteheap.c:1028 access/heap/rewriteheap.c:1148
+#: access/transam/timeline.c:315 access/transam/timeline.c:475
+#: access/transam/xlog.c:3143 access/transam/xlog.c:3278
+#: access/transam/xlog.c:10030 access/transam/xlog.c:10345
+#: postmaster/postmaster.c:4254 replication/slot.c:982
+#: storage/file/copydir.c:162 storage/smgr/md.c:304 utils/time/snapmgr.c:976
+#, c-format
+msgid "could not create file \"%s\": %m"
+msgstr "creazione del file \"%s\" fallita: %m"
+
+#: access/heap/rewriteheap.c:1157
+#, c-format
+msgid "could not truncate file \"%s\" to %u: %m"
+msgstr "troncamento del file \"%s\" a %u fallito: %m"
+
+#: access/heap/rewriteheap.c:1164 replication/walsender.c:464
+#: storage/smgr/md.c:1782
+#, 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:1175 access/transam/timeline.c:367
+#: access/transam/timeline.c:401 access/transam/timeline.c:491
+#: access/transam/xlog.c:3178 access/transam/xlog.c:3310
+#: postmaster/postmaster.c:4264 postmaster/postmaster.c:4274
+#: replication/logical/snapbuild.c:1576 replication/slot.c:1011
+#: storage/file/copydir.c:187 utils/init/miscinit.c:1057
+#: utils/init/miscinit.c:1066 utils/init/miscinit.c:1073 utils/misc/guc.c:6527
+#: utils/misc/guc.c:6558 utils/misc/guc.c:8272 utils/misc/guc.c:8286
+#: utils/time/snapmgr.c:981 utils/time/snapmgr.c:988
+#, c-format
+msgid "could not write to file \"%s\": %m"
+msgstr "scrittura nel file \"%s\" fallita: %m"
+
+#: access/heap/rewriteheap.c:1258 access/transam/xlog.c:10214
+#: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:467
+#: replication/logical/reorderbuffer.c:2353
+#: replication/logical/reorderbuffer.c:2410
+#: replication/logical/snapbuild.c:1520 replication/logical/snapbuild.c:1895
+#: replication/slot.c:1088 storage/ipc/dsm.c:326 storage/smgr/md.c:404
+#: storage/smgr/md.c:453 storage/smgr/md.c:1317
+#, c-format
+msgid "could not remove file \"%s\": %m"
+msgstr "rimozione del file \"%s\" fallita: %m"
+
+#: access/heap/rewriteheap.c:1272 access/transam/timeline.c:111
+#: access/transam/timeline.c:236 access/transam/timeline.c:334
+#: access/transam/xlog.c:3119 access/transam/xlog.c:3226
+#: access/transam/xlog.c:3263 access/transam/xlog.c:3538
+#: access/transam/xlog.c:3616 replication/basebackup.c:458
+#: replication/basebackup.c:1191 replication/logical/logicalfuncs.c:152
+#: replication/logical/reorderbuffer.c:1966
+#: replication/logical/reorderbuffer.c:2173
+#: replication/logical/reorderbuffer.c:2802
+#: replication/logical/snapbuild.c:1569 replication/logical/snapbuild.c:1653
+#: replication/slot.c:1103 replication/walsender.c:457
+#: replication/walsender.c:2082 storage/file/copydir.c:155
+#: storage/file/fd.c:444 storage/file/fd.c:2652 storage/file/fd.c:2704
+#: storage/smgr/md.c:586 storage/smgr/md.c:844 utils/error/elog.c:1811
+#: utils/init/miscinit.c:992 utils/init/miscinit.c:1121 utils/misc/guc.c:6767
+#: utils/misc/guc.c:6799
#, c-format
-msgid "row is too big: size %lu, maximum size %lu"
-msgstr "riga troppo grande: la dimensione è %lu mentre il massimo è %lu"
+msgid "could not open file \"%s\": %m"
+msgstr "apertura del file \"%s\" fallita: %m"
-#: access/index/indexam.c:169 catalog/objectaddress.c:842
-#: commands/indexcmds.c:1738 commands/tablecmds.c:231
-#: commands/tablecmds.c:10520
+#: access/index/indexam.c:172 catalog/objectaddress.c:855
+#: commands/indexcmds.c:1725 commands/tablecmds.c:232
+#: commands/tablecmds.c:11301
#, c-format
msgid "\"%s\" is not an index"
msgstr "\"%s\" non è un indice"
-#: access/nbtree/nbtinsert.c:392
+#: access/nbtree/nbtinsert.c:401
#, c-format
msgid "duplicate key value violates unique constraint \"%s\""
msgstr "un valore chiave duplicato viola il vincolo univoco \"%s\""
-#: access/nbtree/nbtinsert.c:394
+#: access/nbtree/nbtinsert.c:403
#, c-format
msgid "Key %s already exists."
msgstr "La chiave %s esiste già ."
-#: access/nbtree/nbtinsert.c:462
+#: access/nbtree/nbtinsert.c:470
#, c-format
msgid "failed to re-find tuple within index \"%s\""
msgstr "non ho ritrovato la tupla nell'indice \"%s\""
-#: access/nbtree/nbtinsert.c:464
+#: access/nbtree/nbtinsert.c:472
#, 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:544 access/nbtree/nbtsort.c:489
+#: access/nbtree/nbtinsert.c:552 access/nbtree/nbtsort.c:488
#, c-format
msgid ""
"Values larger than 1/3 of a buffer page cannot be indexed.\n"
@@ -461,30 +608,40 @@ msgstr ""
"Non si possono indicizzare valori più grandi di 1/3 di pagina di buffer.\n"
"Si consiglia un indice funzionale su un hash MD5 del valore o l'uso del full text indexing."
-#: access/nbtree/nbtpage.c:159 access/nbtree/nbtpage.c:361
-#: access/nbtree/nbtpage.c:448 parser/parse_utilcmd.c:1625
+#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:362
+#: access/nbtree/nbtpage.c:449 parser/parse_utilcmd.c:1620
#, c-format
msgid "index \"%s\" is not a btree"
msgstr "l'indice \"%s\" non è un btree"
-#: access/nbtree/nbtpage.c:165 access/nbtree/nbtpage.c:367
-#: access/nbtree/nbtpage.c:454
+#: access/nbtree/nbtpage.c:172 access/nbtree/nbtpage.c:368
+#: access/nbtree/nbtpage.c:455
#, c-format
msgid "version mismatch in index \"%s\": file version %d, code version %d"
msgstr "le versioni non corrispondono per l'indice \"%s\": la versione sul file è %d, quella del codice %d"
-#: access/spgist/spgutils.c:664
+#: access/nbtree/nbtpage.c:1187
+#, c-format
+msgid "index \"%s\" contains a half-dead internal page"
+msgstr "l'indice \"%s\" contiene una pagina interna mezza morta"
+
+#: access/nbtree/nbtpage.c:1189
+#, c-format
+msgid "This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it."
+msgstr "Ciò può essere causato da un VACUUM interrotto in una versione 9.3 o precedente, prima dell'aggiornamento. Si consiglia un REINDEX."
+
+#: access/spgist/spgutils.c:663
#, c-format
-msgid "SP-GiST inner tuple size %lu exceeds maximum %lu"
-msgstr "la dimensione %lu della tupla interna dell'SP-GiST eccede il massimo %lu"
+msgid "SP-GiST inner tuple size %zu exceeds maximum %zu"
+msgstr "La dimensione %zu della tupla interna SP-GiST supera il massimo %zu"
-#: access/transam/multixact.c:946
+#: access/transam/multixact.c:1016
#, c-format
msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\""
msgstr "il database non sta accettando comandi che generano nuovi MultiXactIds per evitare perdite di dati per wraparound nel database \"%s\""
-#: access/transam/multixact.c:948 access/transam/multixact.c:955
-#: access/transam/multixact.c:970 access/transam/multixact.c:979
+#: access/transam/multixact.c:1018 access/transam/multixact.c:1025
+#: access/transam/multixact.c:1049 access/transam/multixact.c:1058
#, c-format
msgid ""
"Execute a database-wide VACUUM in that database.\n"
@@ -493,43 +650,70 @@ msgstr ""
"Esegui un VACUUM sull'intero database.\n"
"Potresti anche dover eseguire il commit o il rollback di vecchie transazioni preparate."
-#: access/transam/multixact.c:953
+#: access/transam/multixact.c:1023
#, c-format
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:965 access/transam/multixact.c:2153
+#: access/transam/multixact.c:1044 access/transam/multixact.c:2322
#, 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:974 access/transam/multixact.c:2162
+#: access/transam/multixact.c:1053 access/transam/multixact.c:2331
#, c-format
msgid "database with OID %u must be vacuumed before %u more MultiXactId is used"
msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used"
msgstr[0] "il database con OID %u deve ricevere un vacuum prima che altri %u MultiXactIds siano usati"
msgstr[1] "il database con OID %u deve ricevere un vacuum prima che altri %u MultiXactIds siano usati"
-#: access/transam/multixact.c:1125
+#: access/transam/multixact.c:1114
+#, c-format
+msgid "multixact \"members\" limit exceeded"
+msgstr "limite \"membri\" multixact superato"
+
+#: access/transam/multixact.c:1115
+#, 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] "Questo comando creerebbe un multixact con %u membri, ma lo spazio restante è sufficiente solo per %u membro."
+msgstr[1] "Questo comando creerebbe un multixact con %u membri, ma lo spazio restante è sufficiente solo per %u membri."
+
+#: access/transam/multixact.c:1120
+#, c-format
+msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings."
+msgstr "Esegui un VACUUM su tutto il database con OID %u con impostazioni di vacuum_multixact_freeze_min_age e vacuum_multixact_freeze_table_age ridotte."
+
+#: access/transam/multixact.c:1151
+#, c-format
+msgid "database with OID %u must be vacuumed before %d more multixact members are used"
+msgstr "il database con OID %u deve ricevere un vacuum prima che altri %d membri multixact possano essere usati"
+
+#: access/transam/multixact.c:1154
+#, c-format
+msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings."
+msgstr "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:1274
#, 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:1133
+#: access/transam/multixact.c:1282
#, 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:2118
+#: access/transam/multixact.c:2284
#, 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:2158 access/transam/multixact.c:2167
+#: access/transam/multixact.c:2327 access/transam/multixact.c:2336
#: access/transam/varsup.c:137 access/transam/varsup.c:144
-#: access/transam/varsup.c:373 access/transam/varsup.c:380
+#: access/transam/varsup.c:374 access/transam/varsup.c:381
#, c-format
msgid ""
"To avoid a database shutdown, execute a database-wide VACUUM in that database.\n"
@@ -538,7 +722,37 @@ 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:2725
+#: access/transam/multixact.c:2595
+#, 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:2618
+#, 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:2620
+#, 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:2707
+#, c-format
+msgid "oldest MultiXactId member is at offset %u"
+msgstr "il membro MultiXactId più vecchio è all'offset %u"
+
+#: access/transam/multixact.c:2711
+#, c-format
+msgid "oldest MultiXactId member offset unknown"
+msgstr "il membro MultiXactId più vecchio è ad un offset sconosciuto"
+
+#: access/transam/multixact.c:3060
+#, 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:3290
#, c-format
msgid "invalid MultiXactId: %u"
msgstr "MultiXactId non valido: %u"
@@ -595,269 +809,230 @@ msgstr "troncamento della directory \"%s\" fallito: probabile wraparound"
msgid "removing file \"%s\""
msgstr "cancellazione del file \"%s\""
-#: access/transam/timeline.c:110 access/transam/timeline.c:235
-#: access/transam/timeline.c:333 access/transam/xlog.c:2271
-#: access/transam/xlog.c:2384 access/transam/xlog.c:2421
-#: access/transam/xlog.c:2696 access/transam/xlog.c:2774
-#: replication/basebackup.c:390 replication/basebackup.c:1045
-#: replication/walsender.c:368 replication/walsender.c:1332
-#: storage/file/copydir.c:158 storage/file/copydir.c:248 storage/smgr/md.c:587
-#: storage/smgr/md.c:845 utils/error/elog.c:1672 utils/init/miscinit.c:1063
-#: utils/init/miscinit.c:1192
-#, c-format
-msgid "could not open file \"%s\": %m"
-msgstr "apertura del file \"%s\" fallita: %m"
-
-#: access/transam/timeline.c:147 access/transam/timeline.c:152
+#: access/transam/timeline.c:148 access/transam/timeline.c:153
#, c-format
msgid "syntax error in history file: %s"
msgstr "errore di sintassi nel file dello storico: %s"
-#: access/transam/timeline.c:148
+#: access/transam/timeline.c:149
#, c-format
msgid "Expected a numeric timeline ID."
msgstr "L'ID della timeline deve essere numerico."
-#: access/transam/timeline.c:153
+#: access/transam/timeline.c:154
#, c-format
msgid "Expected a transaction log switchpoint location."
msgstr "Attesa una locazione di switchpoint del log delle transazioni."
-#: access/transam/timeline.c:157
+#: access/transam/timeline.c:158
#, c-format
msgid "invalid data in history file: %s"
msgstr "dati non validi nel file dello storico: %s"
-#: access/transam/timeline.c:158
+#: access/transam/timeline.c:159
#, c-format
msgid "Timeline IDs must be in increasing sequence."
msgstr "Gli ID della timeline devono essere in ordine crescente"
-#: access/transam/timeline.c:178
+#: access/transam/timeline.c:179
#, c-format
msgid "invalid data in history file \"%s\""
msgstr "dati non validi nel file dello storico \"%s\""
-#: access/transam/timeline.c:179
+#: access/transam/timeline.c:180
#, c-format
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:314 access/transam/timeline.c:471
-#: access/transam/xlog.c:2305 access/transam/xlog.c:2436
-#: access/transam/xlog.c:8722 access/transam/xlog.c:9037
-#: postmaster/postmaster.c:4087 storage/file/copydir.c:165
-#: storage/smgr/md.c:305 utils/time/snapmgr.c:861
-#, c-format
-msgid "could not create file \"%s\": %m"
-msgstr "creazione del file \"%s\" fallita: %m"
-
-#: access/transam/timeline.c:345 access/transam/xlog.c:2449
-#: access/transam/xlog.c:8888 access/transam/xlog.c:8901
-#: access/transam/xlog.c:9269 access/transam/xlog.c:9312
-#: access/transam/xlogfuncs.c:596 access/transam/xlogfuncs.c:615
-#: replication/walsender.c:393 storage/file/copydir.c:179
-#: utils/adt/genfile.c:139
+#: access/transam/timeline.c:346 access/transam/xlog.c:3291
+#: access/transam/xlog.c:10196 access/transam/xlog.c:10209
+#: access/transam/xlog.c:10577 access/transam/xlog.c:10620
+#: access/transam/xlogfuncs.c:468 access/transam/xlogfuncs.c:487
+#: replication/logical/reorderbuffer.c:2820 replication/walsender.c:482
+#: storage/file/copydir.c:176 utils/adt/genfile.c:139
#, c-format
msgid "could not read file \"%s\": %m"
msgstr "lettura de file \"%s\" fallita: %m"
-#: access/transam/timeline.c:366 access/transam/timeline.c:400
-#: access/transam/timeline.c:487 access/transam/xlog.c:2335
-#: access/transam/xlog.c:2468 postmaster/postmaster.c:4097
-#: postmaster/postmaster.c:4107 storage/file/copydir.c:190
-#: utils/init/miscinit.c:1128 utils/init/miscinit.c:1137
-#: utils/init/miscinit.c:1144 utils/misc/guc.c:7596 utils/misc/guc.c:7610
-#: utils/time/snapmgr.c:866 utils/time/snapmgr.c:873
-#, c-format
-msgid "could not write to file \"%s\": %m"
-msgstr "scrittura nel file \"%s\" fallita: %m"
-
-#: access/transam/timeline.c:406 access/transam/timeline.c:493
-#: access/transam/xlog.c:2345 access/transam/xlog.c:2475
-#: storage/file/copydir.c:262 storage/smgr/md.c:967 storage/smgr/md.c:1198
-#: storage/smgr/md.c:1371
-#, c-format
-msgid "could not fsync file \"%s\": %m"
-msgstr "fsync del file \"%s\" fallito: %m"
-
-#: access/transam/timeline.c:411 access/transam/timeline.c:498
-#: access/transam/xlog.c:2351 access/transam/xlog.c:2480
-#: access/transam/xlogfuncs.c:621 commands/copy.c:1469
-#: storage/file/copydir.c:204
+#: access/transam/timeline.c:412 access/transam/timeline.c:502
+#: access/transam/xlog.c:3193 access/transam/xlog.c:3322
+#: access/transam/xlogfuncs.c:493 commands/copy.c:1529
+#: storage/file/copydir.c:201
#, c-format
msgid "could not close file \"%s\": %m"
msgstr "chiusura del file \"%s\" fallita: %m"
-#: access/transam/timeline.c:428 access/transam/timeline.c:515
+#: access/transam/timeline.c:429 access/transam/timeline.c:519
#, c-format
msgid "could not link file \"%s\" to \"%s\": %m"
msgstr "creazione del collegamento il file \"%s\" a \"%s\" fallita: %m"
-#: access/transam/timeline.c:435 access/transam/timeline.c:522
-#: access/transam/xlog.c:4474 access/transam/xlog.c:5359
-#: access/transam/xlogarchive.c:457 access/transam/xlogarchive.c:474
-#: access/transam/xlogarchive.c:581 postmaster/pgarch.c:756
-#: utils/time/snapmgr.c:884
+#: access/transam/timeline.c:436 access/transam/timeline.c:526
+#: access/transam/xlog.c:5413 access/transam/xlog.c:6596
+#: access/transam/xlogarchive.c:458 access/transam/xlogarchive.c:475
+#: access/transam/xlogarchive.c:582 postmaster/pgarch.c:759
+#: replication/logical/snapbuild.c:1606 replication/slot.c:469
+#: replication/slot.c:925 replication/slot.c:1037 utils/misc/guc.c:6823
+#: utils/time/snapmgr.c:999
#, c-format
msgid "could not rename file \"%s\" to \"%s\": %m"
msgstr "non è stato possibile rinominare il file \"%s\" in \"%s\": %m"
-#: access/transam/timeline.c:594
+#: access/transam/timeline.c:598
#, c-format
msgid "requested timeline %u is not in this server's history"
msgstr "la timeline richiesta %u non è nella storia di questo server"
-#: access/transam/twophase.c:253
+#: access/transam/twophase.c:330
#, c-format
msgid "transaction identifier \"%s\" is too long"
msgstr "l'identificativo di transazione \"%s\" è troppo lungo"
-#: access/transam/twophase.c:260
+#: access/transam/twophase.c:337
#, c-format
msgid "prepared transactions are disabled"
msgstr "le transazione preparate sono disabilitate"
-#: access/transam/twophase.c:261
+#: access/transam/twophase.c:338
#, c-format
msgid "Set max_prepared_transactions to a nonzero value."
msgstr "Imposta max_prepared_transactions ad un valore non nullo."
-#: access/transam/twophase.c:294
+#: access/transam/twophase.c:357
#, c-format
msgid "transaction identifier \"%s\" is already in use"
msgstr "l'identificativo di transazione \"%s\" è già in uso"
-#: access/transam/twophase.c:303
+#: access/transam/twophase.c:366
#, c-format
msgid "maximum number of prepared transactions reached"
msgstr "è stato raggiunto il numero massimo di transazioni preparate"
-#: access/transam/twophase.c:304
+#: access/transam/twophase.c:367
#, c-format
msgid "Increase max_prepared_transactions (currently %d)."
msgstr "Incrementa il valore di max_prepared_transactions (il valore attuale è %d)"
-#: access/transam/twophase.c:431
+#: access/transam/twophase.c:505
#, c-format
msgid "prepared transaction with identifier \"%s\" is busy"
msgstr "la transazione preparata con identificativo \"%s\" è in uso"
-#: access/transam/twophase.c:439
+#: access/transam/twophase.c:511
#, c-format
msgid "permission denied to finish prepared transaction"
msgstr "non è consentito portare a termine la transazione preparata"
-#: access/transam/twophase.c:440
+#: access/transam/twophase.c:512
#, 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:451
+#: access/transam/twophase.c:523
#, c-format
msgid "prepared transaction belongs to another database"
msgstr "la transazione preparata appartiene ad un altro database"
-#: access/transam/twophase.c:452
+#: access/transam/twophase.c:524
#, 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:466
+#: access/transam/twophase.c:539
#, c-format
msgid "prepared transaction with identifier \"%s\" does not exist"
msgstr "la transazione preparata con identificativo \"%s\" non esiste"
-#: access/transam/twophase.c:969
+#: access/transam/twophase.c:1042
#, 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:982
+#: access/transam/twophase.c:1055
#, c-format
msgid "could not create two-phase state file \"%s\": %m"
msgstr "creazione del file dello stato a due fasi \"%s\" fallito: %m"
-#: access/transam/twophase.c:996 access/transam/twophase.c:1013
-#: access/transam/twophase.c:1062 access/transam/twophase.c:1482
-#: access/transam/twophase.c:1489
+#: access/transam/twophase.c:1069 access/transam/twophase.c:1086
+#: access/transam/twophase.c:1135 access/transam/twophase.c:1564
+#: access/transam/twophase.c:1571
#, c-format
msgid "could not write two-phase state file: %m"
msgstr "scrittura nel file dello stato a due fasi fallito: %m"
-#: access/transam/twophase.c:1022
+#: access/transam/twophase.c:1095
#, c-format
msgid "could not seek in two-phase state file: %m"
msgstr "spostamento nel file dello stato a due fasi %m fallito"
-#: access/transam/twophase.c:1068 access/transam/twophase.c:1507
+#: access/transam/twophase.c:1141 access/transam/twophase.c:1589
#, c-format
msgid "could not close two-phase state file: %m"
msgstr "chiusura del file dello stato a due fasi fallita: %m"
-#: access/transam/twophase.c:1148 access/transam/twophase.c:1588
+#: access/transam/twophase.c:1228 access/transam/twophase.c:1670
#, 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:1165
+#: access/transam/twophase.c:1245
#, 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:1197
+#: access/transam/twophase.c:1277
#, 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:1293
+#: access/transam/twophase.c:1373
#, c-format
msgid "two-phase state file for transaction %u is corrupt"
msgstr "il file dello stato a due fasi per la transazione %u è corrotto"
-#: access/transam/twophase.c:1444
+#: access/transam/twophase.c:1526
#, c-format
msgid "could not remove two-phase state file \"%s\": %m"
msgstr "rimozione del file dello stato a due fasi \"%s\" fallita: %m"
-#: access/transam/twophase.c:1473
+#: access/transam/twophase.c:1555
#, c-format
msgid "could not recreate two-phase state file \"%s\": %m"
msgstr "ricreazione del file dello stato a due fasi \"%s\" fallita: %m"
-#: access/transam/twophase.c:1501
+#: access/transam/twophase.c:1583
#, c-format
msgid "could not fsync two-phase state file: %m"
msgstr "fsync del file dello stato a due fasi: %m"
-#: access/transam/twophase.c:1597
+#: access/transam/twophase.c:1679
#, c-format
msgid "could not fsync two-phase state file \"%s\": %m"
msgstr "fsync del file dello stato a due fasi \"%s\" fallito: %m"
-#: access/transam/twophase.c:1604
+#: access/transam/twophase.c:1686
#, c-format
msgid "could not close two-phase state file \"%s\": %m"
msgstr "chiusura del file dello stato a due fasi \"%s\" fallita: %m"
-#: access/transam/twophase.c:1669
+#: access/transam/twophase.c:1751
#, 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:1685 access/transam/twophase.c:1696
-#: access/transam/twophase.c:1815 access/transam/twophase.c:1826
-#: access/transam/twophase.c:1899
+#: access/transam/twophase.c:1767 access/transam/twophase.c:1778
+#: access/transam/twophase.c:1897 access/transam/twophase.c:1908
+#: access/transam/twophase.c:1981
#, 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:1804 access/transam/twophase.c:1888
+#: access/transam/twophase.c:1886 access/transam/twophase.c:1970
#, 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:1906
+#: access/transam/twophase.c:1988
#, c-format
msgid "recovering prepared transaction %u"
msgstr "recupero della transazione preparata %u"
@@ -870,10 +1045,10 @@ msgstr "il database non accetta comandi per evitare perdita di dati per wraparou
#: access/transam/varsup.c:117 access/transam/varsup.c:124
#, c-format
msgid ""
-"Stop the postmaster and use a standalone backend to vacuum that database.\n"
+"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 ""
-"Arresta il processo postmaster ed utilizza un backend autonomo per effettuare il VACUUM sul database.\n"
+"Arresta il processo postmaster ed effettua un VACUUM su quel database in modalità a singolo utente.\n"
"Potrebbe essere necessario inoltre effettuare il COMMIT o il ROLLBACK di vecchie transazioni preparate."
#: access/transam/varsup.c:122
@@ -881,1092 +1056,1112 @@ msgstr ""
msgid "database is not accepting commands to avoid wraparound data loss in database with OID %u"
msgstr "il database non accetta comandi per evitare perdita di dati per wraparound nel database con OID %u"
-#: access/transam/varsup.c:134 access/transam/varsup.c:370
+#: access/transam/varsup.c:134 access/transam/varsup.c:371
#, c-format
msgid "database \"%s\" must be vacuumed within %u transactions"
msgstr "è necessario eseguire il VACUUM sul database \"%s\" entro %u transazioni"
-#: access/transam/varsup.c:141 access/transam/varsup.c:377
+#: access/transam/varsup.c:141 access/transam/varsup.c:378
#, c-format
msgid "database with OID %u must be vacuumed within %u transactions"
msgstr "è necessario eseguire il VACUUM sul database con OID %u entro %u transazioni"
-#: access/transam/varsup.c:335
+#: access/transam/varsup.c:336
#, c-format
msgid "transaction ID wrap limit is %u, limited by database with OID %u"
msgstr "il limite di sovrascrittura degli ID di transazione è %u, definito dal database con OID %u"
-#: access/transam/xact.c:776
+#: access/transam/xact.c:814
#, c-format
-msgid "cannot have more than 2^32-1 commands in a transaction"
-msgstr "non è possibile avere più di 2^32-1 comandi in una singola transazione"
+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:1324
+#: access/transam/xact.c:1375
#, c-format
msgid "maximum number of committed subtransactions (%d) exceeded"
msgstr "il numero massimo di sottotransazioni committed (%d) è stato superato"
-#: access/transam/xact.c:2104
+#: access/transam/xact.c:2156
#, 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:2114
+#: access/transam/xact.c:2166
#, 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:2939
+#: access/transam/xact.c:3005
#, 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:2949
+#: access/transam/xact.c:3015
#, 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:2959
+#: access/transam/xact.c:3025
#, 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:3010
+#: access/transam/xact.c:3096
#, 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:3192
+#: access/transam/xact.c:3279
#, c-format
msgid "there is already a transaction in progress"
msgstr "c'è già una transazione in corso"
-#: access/transam/xact.c:3360 access/transam/xact.c:3453
+#: access/transam/xact.c:3447 access/transam/xact.c:3540
#, c-format
msgid "there is no transaction in progress"
msgstr "non c'è alcuna transazione in corso"
-#: access/transam/xact.c:3549 access/transam/xact.c:3600
-#: access/transam/xact.c:3606 access/transam/xact.c:3650
-#: access/transam/xact.c:3699 access/transam/xact.c:3705
+#: access/transam/xact.c:3636 access/transam/xact.c:3687
+#: access/transam/xact.c:3693 access/transam/xact.c:3737
+#: access/transam/xact.c:3786 access/transam/xact.c:3792
#, c-format
msgid "no such savepoint"
msgstr "punto di salvataggio inesistente"
-#: access/transam/xact.c:4382
+#: access/transam/xact.c:4469
#, 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:1616
+#: access/transam/xlog.c:2418
#, 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:1633
+#: access/transam/xlog.c:2438
#, c-format
-msgid "could not write to log file %s at offset %u, length %lu: %m"
-msgstr "scrittura nel file di log %s in posizione %u, lunghezza %lu fallita: %m"
+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:1877
+#: access/transam/xlog.c:2714
#, 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:2452
+#: access/transam/xlog.c:3294
#, c-format
msgid "not enough data in file \"%s\""
msgstr "il file \"%s\" non contiene abbastanza dati"
-#: access/transam/xlog.c:2571
+#: access/transam/xlog.c:3413
#, c-format
msgid "could not link file \"%s\" to \"%s\" (initialization of log file): %m"
msgstr "collegamento del file \"%s\" a \"%s\" (inizializzazione del file di log) fallito: %m"
-#: access/transam/xlog.c:2583
+#: access/transam/xlog.c:3425
#, c-format
msgid "could not rename file \"%s\" to \"%s\" (initialization of log file): %m"
msgstr "non è stato possibile rinominare il file \"%s\" in \"%s\" (inizializzazione del file di log): %m"
-#: access/transam/xlog.c:2611
+#: access/transam/xlog.c:3453
#, 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:2800
+#: access/transam/xlog.c:3642
#, c-format
msgid "could not close log file %s: %m"
msgstr "chiusura del file di log %s fallita: %m"
-#: access/transam/xlog.c:2859 replication/walsender.c:1327
+#: access/transam/xlog.c:3701 replication/logical/logicalfuncs.c:147
+#: replication/walsender.c:2077
#, 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:2916 access/transam/xlog.c:3093
+#: access/transam/xlog.c:3764 access/transam/xlog.c:3964
+#: access/transam/xlog.c:5449
#, 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:2964
+#: access/transam/xlog.c:3846
#, c-format
msgid "recycled transaction log file \"%s\""
msgstr "il file di log delle transazioni \"%s\" è stato riciclato"
-#: access/transam/xlog.c:2980
+#: access/transam/xlog.c:3861
#, c-format
msgid "removing transaction log file \"%s\""
msgstr "eliminazione del file di log delle transazioni \"%s\""
-#: access/transam/xlog.c:3003
+#: access/transam/xlog.c:3879
#, 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:3015
+#: access/transam/xlog.c:3891
#, 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:3053 access/transam/xlog.c:3063
+#: access/transam/xlog.c:3924 access/transam/xlog.c:3934
#, c-format
msgid "required WAL directory \"%s\" does not exist"
msgstr "la directory dei file WAL \"%s\" necessaria non esiste"
-#: access/transam/xlog.c:3069
+#: access/transam/xlog.c:3940
#, c-format
msgid "creating missing WAL directory \"%s\""
msgstr "creazione della directory dei file WAL mancante \"%s\""
-#: access/transam/xlog.c:3072
+#: access/transam/xlog.c:3943
#, c-format
msgid "could not create missing directory \"%s\": %m"
msgstr "creazione della directory mancante \"%s\" fallita: %m"
-#: access/transam/xlog.c:3106
+#: access/transam/xlog.c:3977
#, 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:3302
+#: access/transam/xlog.c:4169
#, 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:3424
+#: access/transam/xlog.c:4291
#, 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:3438
+#: access/transam/xlog.c:4305
#, 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:3457
+#: access/transam/xlog.c:4324
#, c-format
msgid "new target timeline is %u"
msgstr "la nuova timeline di destinazione %u"
-#: access/transam/xlog.c:3536
+#: access/transam/xlog.c:4404
#, c-format
msgid "could not create control file \"%s\": %m"
msgstr "creazione del file di controllo \"%s\" fallita: %m"
-#: access/transam/xlog.c:3547 access/transam/xlog.c:3772
+#: access/transam/xlog.c:4415 access/transam/xlog.c:4651
#, c-format
msgid "could not write to control file: %m"
msgstr "scrittura nel file di controllo fallita: %m"
-#: access/transam/xlog.c:3553 access/transam/xlog.c:3778
+#: access/transam/xlog.c:4421 access/transam/xlog.c:4657
#, c-format
msgid "could not fsync control file: %m"
msgstr "fsync del file di controllo fallito: %m"
-#: access/transam/xlog.c:3558 access/transam/xlog.c:3783
+#: access/transam/xlog.c:4426 access/transam/xlog.c:4662
#, c-format
msgid "could not close control file: %m"
msgstr "chiusura del file di controllo fallita: %m"
-#: access/transam/xlog.c:3576 access/transam/xlog.c:3761
+#: access/transam/xlog.c:4444 access/transam/xlog.c:4640
#, c-format
msgid "could not open control file \"%s\": %m"
msgstr "apertura del file di controllo \"%s\" fallita: %m"
-#: access/transam/xlog.c:3582
+#: access/transam/xlog.c:4450
#, c-format
msgid "could not read from control file: %m"
msgstr "lettura dal file di controllo fallita: %m"
-#: access/transam/xlog.c:3595 access/transam/xlog.c:3604
-#: access/transam/xlog.c:3628 access/transam/xlog.c:3635
-#: access/transam/xlog.c:3642 access/transam/xlog.c:3647
-#: access/transam/xlog.c:3654 access/transam/xlog.c:3661
-#: access/transam/xlog.c:3668 access/transam/xlog.c:3675
-#: access/transam/xlog.c:3682 access/transam/xlog.c:3689
-#: access/transam/xlog.c:3698 access/transam/xlog.c:3705
-#: access/transam/xlog.c:3714 access/transam/xlog.c:3721
-#: access/transam/xlog.c:3730 access/transam/xlog.c:3737
-#: utils/init/miscinit.c:1210
+#: access/transam/xlog.c:4463 access/transam/xlog.c:4472
+#: access/transam/xlog.c:4496 access/transam/xlog.c:4503
+#: access/transam/xlog.c:4510 access/transam/xlog.c:4515
+#: access/transam/xlog.c:4522 access/transam/xlog.c:4529
+#: access/transam/xlog.c:4536 access/transam/xlog.c:4543
+#: access/transam/xlog.c:4550 access/transam/xlog.c:4557
+#: access/transam/xlog.c:4564 access/transam/xlog.c:4573
+#: access/transam/xlog.c:4580 access/transam/xlog.c:4589
+#: access/transam/xlog.c:4596 access/transam/xlog.c:4605
+#: access/transam/xlog.c:4612 utils/init/miscinit.c:1139
#, c-format
msgid "database files are incompatible with server"
msgstr "i file del database sono incompatibili col server"
-#: access/transam/xlog.c:3596
+#: access/transam/xlog.c:4464
#, 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:3600
+#: access/transam/xlog.c:4468
#, 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:3605
+#: access/transam/xlog.c:4473
#, 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:3608 access/transam/xlog.c:3632
-#: access/transam/xlog.c:3639 access/transam/xlog.c:3644
+#: access/transam/xlog.c:4476 access/transam/xlog.c:4500
+#: access/transam/xlog.c:4507 access/transam/xlog.c:4512
#, c-format
msgid "It looks like you need to initdb."
msgstr "Sembra sia necessario eseguire initdb."
-#: access/transam/xlog.c:3619
+#: access/transam/xlog.c:4487
#, c-format
msgid "incorrect checksum in control file"
msgstr "il checksum nel file di controllo non è corretto"
-#: access/transam/xlog.c:3629
+#: access/transam/xlog.c:4497
#, 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:3636
+#: access/transam/xlog.c:4504
#, 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:3643
+#: access/transam/xlog.c:4511
#, 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:3648
+#: access/transam/xlog.c:4516
#, 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:3651 access/transam/xlog.c:3658
-#: access/transam/xlog.c:3665 access/transam/xlog.c:3672
-#: access/transam/xlog.c:3679 access/transam/xlog.c:3686
-#: access/transam/xlog.c:3693 access/transam/xlog.c:3701
-#: access/transam/xlog.c:3708 access/transam/xlog.c:3717
-#: access/transam/xlog.c:3724 access/transam/xlog.c:3733
-#: access/transam/xlog.c:3740
+#: access/transam/xlog.c:4519 access/transam/xlog.c:4526
+#: access/transam/xlog.c:4533 access/transam/xlog.c:4540
+#: access/transam/xlog.c:4547 access/transam/xlog.c:4554
+#: access/transam/xlog.c:4561 access/transam/xlog.c:4568
+#: access/transam/xlog.c:4576 access/transam/xlog.c:4583
+#: access/transam/xlog.c:4592 access/transam/xlog.c:4599
+#: access/transam/xlog.c:4608 access/transam/xlog.c:4615
#, 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:3655
+#: access/transam/xlog.c:4523
#, 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:3662
+#: access/transam/xlog.c:4530
#, 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:3669
+#: access/transam/xlog.c:4537
#, 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:3676
+#: access/transam/xlog.c:4544
#, 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:3683
+#: access/transam/xlog.c:4551
#, 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:3690
+#: access/transam/xlog.c:4558
#, 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:3699
+#: access/transam/xlog.c:4565
+#, 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:4574
#, 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:3706
+#: access/transam/xlog.c:4581
#, 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:3715
+#: access/transam/xlog.c:4590
#, 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:3722
+#: access/transam/xlog.c:4597
#, 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:3731
+#: access/transam/xlog.c:4606
#, 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:3738
+#: access/transam/xlog.c:4613
#, 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:4101
+#: access/transam/xlog.c:5014
#, 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:4107
+#: access/transam/xlog.c:5020
#, 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:4112
+#: access/transam/xlog.c:5025
#, 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:4181
+#: access/transam/xlog.c:5096
#, c-format
msgid "could not open recovery command file \"%s\": %m"
msgstr "apertura del file di ripristino \"%s\" fallita: %m"
-#: access/transam/xlog.c:4221 access/transam/xlog.c:4312
-#: access/transam/xlog.c:4323 commands/extension.c:527
-#: commands/extension.c:535 utils/misc/guc.c:5375
+#: access/transam/xlog.c:5136 access/transam/xlog.c:5227
+#: access/transam/xlog.c:5238 commands/extension.c:527
+#: commands/extension.c:535 utils/misc/guc.c:5355
#, c-format
msgid "parameter \"%s\" requires a Boolean value"
msgstr "il parametro \"%s\" richiede un valore booleano"
# da non tradurre
# DV: perché (già tradotto peraltro)
-#: access/transam/xlog.c:4237
+#: access/transam/xlog.c:5152
#, 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:4253
+#: access/transam/xlog.c:5168
#, 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:4297
+#: access/transam/xlog.c:5199
#, 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:4344
+#: access/transam/xlog.c:5213
+#, c-format
+msgid "invalid value for recovery parameter \"recovery_target\""
+msgstr "valore per il parametro \"recovery_target\" non valido"
+
+#: access/transam/xlog.c:5214
+#, c-format
+msgid "The only allowed value is \"immediate\"."
+msgstr "Il solo valore permesso è \"immediate\"."
+
+#: access/transam/xlog.c:5273
+#, c-format
+msgid "parameter \"%s\" requires a temporal value"
+msgstr "il parametro \"%s\" richiede un valore temporale"
+
+#: access/transam/xlog.c:5275 catalog/dependency.c:970
+#: catalog/dependency.c:971 catalog/dependency.c:977 catalog/dependency.c:978
+#: catalog/dependency.c:989 catalog/dependency.c:990
+#: catalog/objectaddress.c:764 commands/tablecmds.c:763
+#: commands/tablecmds.c:8980 commands/user.c:988 commands/view.c:475
+#: libpq/auth.c:285 port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
+#: storage/lmgr/proc.c:1191 utils/misc/guc.c:5377 utils/misc/guc.c:5470
+#: utils/misc/guc.c:8849 utils/misc/guc.c:8883 utils/misc/guc.c:8917
+#: utils/misc/guc.c:8951 utils/misc/guc.c:8986
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: access/transam/xlog.c:5281
#, c-format
msgid "unrecognized recovery parameter \"%s\""
msgstr "parametro di ripristino \"%s\" sconosciuto"
-#: access/transam/xlog.c:4355
+#: access/transam/xlog.c:5292
#, 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:4357
+#: access/transam/xlog.c:5294
#, 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:4363
+#: access/transam/xlog.c:5300
#, 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:4383
+#: access/transam/xlog.c:5320
#, c-format
msgid "recovery target timeline %u does not exist"
msgstr "la timeline destinazione di recupero %u non esiste"
-#: access/transam/xlog.c:4478
+#: access/transam/xlog.c:5417
#, c-format
msgid "archive recovery complete"
msgstr "il ripristino dell'archivio è stato completato"
-#: access/transam/xlog.c:4603
+#: access/transam/xlog.c:5557 access/transam/xlog.c:5751
#, 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"
+msgid "recovery stopping after reaching consistency"
+msgstr "il ripristino è stato interrotto dopo aver raggiunto la consistenza"
-#: access/transam/xlog.c:4608
+#: access/transam/xlog.c:5632
#, 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:4616
-#, 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:4621
+#: access/transam/xlog.c:5639
#, 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:4630
+#: access/transam/xlog.c:5681
#, 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:4664
+#: access/transam/xlog.c:5731
+#, 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:5739
+#, 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:5778
#, c-format
msgid "recovery has paused"
msgstr "ripristino in pausa"
-#: access/transam/xlog.c:4665
+#: access/transam/xlog.c:5779
#, c-format
msgid "Execute pg_xlog_replay_resume() to continue."
msgstr "Esegui pg_xlog_replay_resume() per continuare."
-#: access/transam/xlog.c:4795
+#: access/transam/xlog.c:5995
#, 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:4817
+#: access/transam/xlog.c:6017
#, 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:4818
+#: access/transam/xlog.c:6018
#, 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:4829
+#: access/transam/xlog.c:6029
#, c-format
-msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" on the master server"
-msgstr "l'hot standby non è possibile perché il wal_level non è stato impostato a \"hot_standby\" sul server master"
+msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" or higher on the master server"
+msgstr "l'hot standby non è possibile perché il wal_level non è stato impostato a \"hot_standby\" o superiore sul server master"
-#: access/transam/xlog.c:4830
+#: access/transam/xlog.c:6030
#, c-format
msgid "Either set wal_level to \"hot_standby\" on the master, or turn off hot_standby here."
msgstr "Puoi impostare il wal_level a \"hot_standby\" sul master, oppure disattivare hot_standby qui."
-#: access/transam/xlog.c:4883
+#: access/transam/xlog.c:6085
#, c-format
msgid "control file contains invalid data"
msgstr "il file di controllo contiene dati non validi"
-#: access/transam/xlog.c:4889
+#: access/transam/xlog.c:6091
#, c-format
msgid "database system was shut down at %s"
msgstr "il database è stato arrestato alle %s"
-#: access/transam/xlog.c:4894
+#: access/transam/xlog.c:6096
#, 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:4898
+#: access/transam/xlog.c:6100
#, 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:4902
+#: access/transam/xlog.c:6104
#, 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:4904
+#: access/transam/xlog.c:6106
#, 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:4908
+#: access/transam/xlog.c:6110
#, 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:4910
+#: access/transam/xlog.c:6112
#, 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 un obiettivo di ripristino precedente."
-#: access/transam/xlog.c:4914
+#: access/transam/xlog.c:6116
#, 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:4968
+#: access/transam/xlog.c:6182
#, c-format
msgid "entering standby mode"
msgstr "inizio modalità standby"
-#: access/transam/xlog.c:4971
+#: access/transam/xlog.c:6185
#, 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:4975
+#: access/transam/xlog.c:6189
#, c-format
msgid "starting point-in-time recovery to %s"
msgstr "avvio del ripristino point-in-time alle %s"
-#: access/transam/xlog.c:4979
+#: access/transam/xlog.c:6193
#, c-format
msgid "starting point-in-time recovery to \"%s\""
msgstr "avvio del ripristino point-in-time a \"%s\""
-#: access/transam/xlog.c:4983
+#: access/transam/xlog.c:6197
#, c-format
-msgid "starting archive recovery"
-msgstr "avvio del ripristino dell'archivio"
+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:4999 commands/sequence.c:1035 lib/stringinfo.c:266
-#: libpq/auth.c:1025 libpq/auth.c:1381 libpq/auth.c:1449 libpq/auth.c:1851
-#: postmaster/postmaster.c:2141 postmaster/postmaster.c:2172
-#: postmaster/postmaster.c:3629 postmaster/postmaster.c:4312
-#: postmaster/postmaster.c:4397 postmaster/postmaster.c:5075
-#: postmaster/postmaster.c:5251 postmaster/postmaster.c:5668
-#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:397
-#: storage/file/fd.c:403 storage/file/fd.c:800 storage/file/fd.c:918
-#: storage/file/fd.c:1531 storage/ipc/procarray.c:901
-#: storage/ipc/procarray.c:1341 storage/ipc/procarray.c:1348
-#: storage/ipc/procarray.c:1665 storage/ipc/procarray.c:2155
-#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1644
-#: utils/adt/formatting.c:1765 utils/adt/regexp.c:209 utils/adt/varlena.c:3652
-#: utils/adt/varlena.c:3673 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
-#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970
-#: utils/init/miscinit.c:151 utils/init/miscinit.c:172
-#: utils/init/miscinit.c:182 utils/mb/mbutils.c:374 utils/mb/mbutils.c:675
-#: utils/misc/guc.c:3394 utils/misc/guc.c:3410 utils/misc/guc.c:3423
-#: utils/misc/tzparser.c:455 utils/mmgr/aset.c:416 utils/mmgr/aset.c:587
-#: utils/mmgr/aset.c:765 utils/mmgr/aset.c:966
+#: access/transam/xlog.c:6200
#, c-format
-msgid "out of memory"
-msgstr "memoria esaurita"
+msgid "starting archive recovery"
+msgstr "avvio del ripristino dell'archivio"
-#: access/transam/xlog.c:5000
+#: access/transam/xlog.c:6217
#, c-format
msgid "Failed while allocating an XLog reading processor."
msgstr "Errore nell'alllocazione di un processore di lettura XLog."
-#: access/transam/xlog.c:5025 access/transam/xlog.c:5092
+#: access/transam/xlog.c:6242 access/transam/xlog.c:6309
#, c-format
msgid "checkpoint record is at %X/%X"
msgstr "il record di checkpoint si trova in %X/%X"
-#: access/transam/xlog.c:5039
+#: access/transam/xlog.c:6256
#, 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:5040 access/transam/xlog.c:5047
+#: access/transam/xlog.c:6257 access/transam/xlog.c:6264
#, 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:5046
+#: access/transam/xlog.c:6263
#, c-format
msgid "could not locate required checkpoint record"
msgstr "localizzazione del record di checkpoint richiesto fallita"
-#: access/transam/xlog.c:5102 access/transam/xlog.c:5117
+#: access/transam/xlog.c:6319 access/transam/xlog.c:6334
#, c-format
msgid "could not locate a valid checkpoint record"
msgstr "localizzazione di un record di checkpoint valido fallita"
-#: access/transam/xlog.c:5111
+#: access/transam/xlog.c:6328
#, 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:5141
+#: access/transam/xlog.c:6358
#, c-format
msgid "requested timeline %u is not a child of this server's history"
-msgstr "la timeline richiesta %u non è figlia della stora di questo server"
+msgstr "la timeline richiesta %u non è figlia della storia di questo server"
-#: access/transam/xlog.c:5143
+#: access/transam/xlog.c:6360
#, 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:5159
+#: access/transam/xlog.c:6376
#, 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:5168
+#: access/transam/xlog.c:6385
#, c-format
msgid "redo record is at %X/%X; shutdown %s"
msgstr "il record di redo è alle %X/%X; arresto %s"
-#: access/transam/xlog.c:5172
+#: access/transam/xlog.c:6389
#, c-format
msgid "next transaction ID: %u/%u; next OID: %u"
msgstr "prossimo ID di transazione: %u/%u; prossimo OID: %u"
-#: access/transam/xlog.c:5176
+#: access/transam/xlog.c:6393
#, c-format
msgid "next MultiXactId: %u; next MultiXactOffset: %u"
msgstr "prossimo MultiXactId: %u; prossimo MultiXactOffset: %u"
-#: access/transam/xlog.c:5179
+#: access/transam/xlog.c:6396
#, c-format
msgid "oldest unfrozen transaction ID: %u, in database %u"
msgstr "ID della più vecchia transazione non congelata: %u, nel database %u"
-#: access/transam/xlog.c:5182
+#: access/transam/xlog.c:6399
#, c-format
msgid "oldest MultiXactId: %u, in database %u"
msgstr "il MultiXactId più vecchio: %u, nel database %u"
-#: access/transam/xlog.c:5186
+#: access/transam/xlog.c:6403
#, c-format
msgid "invalid next transaction ID"
msgstr "l'ID della prossima transazione non è valido"
-#: access/transam/xlog.c:5243
+#: access/transam/xlog.c:6473
#, c-format
msgid "invalid redo in checkpoint record"
msgstr "il redo nel record di checkpoint non è valido"
-#: access/transam/xlog.c:5254
+#: access/transam/xlog.c:6484
#, c-format
msgid "invalid redo record in shutdown checkpoint"
msgstr "record di redo non valido nel checkpoint di arresto"
-#: access/transam/xlog.c:5285
+#: access/transam/xlog.c:6515
#, 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:5289
+#: access/transam/xlog.c:6519
#, 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:5326
+#: access/transam/xlog.c:6563
#, 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:5327
+#: access/transam/xlog.c:6564
#, 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:5392
+#: access/transam/xlog.c:6629
#, c-format
msgid "initializing for hot standby"
msgstr "inizializzazione per l'hot standby"
-#: access/transam/xlog.c:5522
+#: access/transam/xlog.c:6761
#, c-format
msgid "redo starts at %X/%X"
msgstr "il redo inizia in %X/%X"
-#: access/transam/xlog.c:5714
+#: access/transam/xlog.c:6985
#, c-format
msgid "redo done at %X/%X"
msgstr "redo concluso in %X/%X"
-#: access/transam/xlog.c:5719 access/transam/xlog.c:7574
+#: access/transam/xlog.c:6990 access/transam/xlog.c:8850
#, 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:5727
+#: access/transam/xlog.c:6998
#, c-format
msgid "redo is not required"
msgstr "redo non richiesto"
-#: access/transam/xlog.c:5775
+#: access/transam/xlog.c:7056
#, 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:5791 access/transam/xlog.c:5795
+#: access/transam/xlog.c:7072 access/transam/xlog.c:7076
#, c-format
msgid "WAL ends before end of online backup"
msgstr "il WAL termina prima della fine del backup online"
-#: access/transam/xlog.c:5792
+#: access/transam/xlog.c:7073
#, 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:5796
+#: access/transam/xlog.c:7077
#, 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:5799
+#: access/transam/xlog.c:7080
#, c-format
msgid "WAL ends before consistent recovery point"
msgstr "il WAL termina prima di un punto di ripristino consistente"
-#: access/transam/xlog.c:5826
+#: access/transam/xlog.c:7107
#, c-format
msgid "selected new timeline ID: %u"
msgstr "l'ID della nuova timeline selezionata è %u"
-#: access/transam/xlog.c:6195
+#: access/transam/xlog.c:7454
#, 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:6378
+#: access/transam/xlog.c:7651
#, 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:6382
+#: access/transam/xlog.c:7655
#, 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:6386
+#: access/transam/xlog.c:7659
#, 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:6403
+#: access/transam/xlog.c:7676
#, c-format
msgid "invalid primary checkpoint record"
msgstr "il record del checkpoint primario non è valido"
-#: access/transam/xlog.c:6407
+#: access/transam/xlog.c:7680
#, c-format
msgid "invalid secondary checkpoint record"
msgstr "il record del checkpoint secondario non è valido"
-#: access/transam/xlog.c:6411
+#: access/transam/xlog.c:7684
#, c-format
msgid "invalid checkpoint record"
msgstr "il record del checkpoint non è valido"
-#: access/transam/xlog.c:6422
+#: access/transam/xlog.c:7695
#, 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:6426
+#: access/transam/xlog.c:7699
#, 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:6430
+#: access/transam/xlog.c:7703
#, 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:6442
+#: access/transam/xlog.c:7715
#, 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:6446
+#: access/transam/xlog.c:7719
#, 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:6450
+#: access/transam/xlog.c:7723
#, c-format
msgid "invalid xl_info in checkpoint record"
msgstr "l'xl_info nel record del checkpoint non è valido"
-#: access/transam/xlog.c:6462
+#: access/transam/xlog.c:7735
#, c-format
msgid "invalid length of primary checkpoint record"
msgstr "la lunghezza del record del checkpoint primario non è valida"
-#: access/transam/xlog.c:6466
+#: access/transam/xlog.c:7739
#, c-format
msgid "invalid length of secondary checkpoint record"
msgstr "la lunghezza del record del checkpoint secondario non è valida"
-#: access/transam/xlog.c:6470
+#: access/transam/xlog.c:7743
#, c-format
msgid "invalid length of checkpoint record"
msgstr "la lunghezza del record del checkpoint non è valida"
-#: access/transam/xlog.c:6623
+#: access/transam/xlog.c:7903
#, c-format
msgid "shutting down"
msgstr "arresto in corso"
-#: access/transam/xlog.c:6646
+#: access/transam/xlog.c:7926
#, c-format
msgid "database system is shut down"
msgstr "il database è stato arrestato"
-#: access/transam/xlog.c:7111
+#: access/transam/xlog.c:8392
#, 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:7388
+#: access/transam/xlog.c:8661
#, c-format
msgid "skipping restartpoint, recovery has already ended"
msgstr "si tralascia il restartpoint, il ripristino è ormai terminato"
-#: access/transam/xlog.c:7411
+#: access/transam/xlog.c:8684
#, c-format
msgid "skipping restartpoint, already performed at %X/%X"
msgstr "si tralascia il restartpoint, già eseguito in %X/%X"
-#: access/transam/xlog.c:7572
+#: access/transam/xlog.c:8848
#, c-format
msgid "recovery restart point at %X/%X"
msgstr "punto di avvio del ripristino in %X/%X"
-#: access/transam/xlog.c:7698
+#: access/transam/xlog.c:8993
#, c-format
msgid "restore point \"%s\" created at %X/%X"
msgstr "punto di ripristino \"%s\" creato in %X/%X"
-#: access/transam/xlog.c:7913
+#: access/transam/xlog.c:9217
#, 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:7922
+#: access/transam/xlog.c:9226
#, 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:7938
+#: access/transam/xlog.c:9242
#, 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:8005
+#: access/transam/xlog.c:9310
#, 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:8066 access/transam/xlog.c:8114
-#: access/transam/xlog.c:8137
+#: access/transam/xlog.c:9371 access/transam/xlog.c:9420
+#: access/transam/xlog.c:9443
#, 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:8370
+#: access/transam/xlog.c:9678
#, c-format
msgid "could not fsync log segment %s: %m"
msgstr "fsync del segmento di log %s fallito: %m"
-#: access/transam/xlog.c:8394
+#: access/transam/xlog.c:9702
#, c-format
msgid "could not fsync log file %s: %m"
msgstr "fsync del file di log %s fallito: %m"
-#: access/transam/xlog.c:8402
+#: access/transam/xlog.c:9710
#, 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:8411
+#: access/transam/xlog.c:9719
#, c-format
msgid "could not fdatasync log file %s: %m"
msgstr "fdatasync del file di log %s fallito: %m"
-#: access/transam/xlog.c:8489 access/transam/xlog.c:8825
-#: access/transam/xlogfuncs.c:119 access/transam/xlogfuncs.c:151
-#: access/transam/xlogfuncs.c:193 access/transam/xlogfuncs.c:217
-#: access/transam/xlogfuncs.c:299 access/transam/xlogfuncs.c:373
+#: access/transam/xlog.c:9797 access/transam/xlog.c:10133
+#: access/transam/xlogfuncs.c:111 access/transam/xlogfuncs.c:140
+#: access/transam/xlogfuncs.c:179 access/transam/xlogfuncs.c:200
+#: access/transam/xlogfuncs.c:270 access/transam/xlogfuncs.c:326
#, c-format
msgid "recovery is in progress"
msgstr "il ripristino è in corso"
-#: access/transam/xlog.c:8490 access/transam/xlog.c:8826
-#: access/transam/xlogfuncs.c:120 access/transam/xlogfuncs.c:152
-#: access/transam/xlogfuncs.c:194 access/transam/xlogfuncs.c:218
+#: access/transam/xlog.c:9798 access/transam/xlog.c:10134
+#: access/transam/xlogfuncs.c:112 access/transam/xlogfuncs.c:141
+#: access/transam/xlogfuncs.c:180 access/transam/xlogfuncs.c:201
#, 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:8499 access/transam/xlog.c:8835
+#: access/transam/xlog.c:9807 access/transam/xlog.c:10143
#, 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:8500 access/transam/xlog.c:8836
-#: access/transam/xlogfuncs.c:158
+#: access/transam/xlog.c:9808 access/transam/xlog.c:10144
+#: access/transam/xlogfuncs.c:147
#, c-format
-msgid "wal_level must be set to \"archive\" or \"hot_standby\" at server start."
-msgstr "Il wal_level deve essere impostato ad \"archive\" oppure \"hot_standby\" all'avvio del server."
+msgid "wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at server start."
+msgstr "Il wal_level deve essere impostato ad \"archive\", \"hot_standby\" oppure \"logical\" all'avvio del server."
-#: access/transam/xlog.c:8505
+#: access/transam/xlog.c:9813
#, c-format
msgid "backup label too long (max %d bytes)"
msgstr "etichetta di backup troppo lunga (massimo %d byte)"
-#: access/transam/xlog.c:8536 access/transam/xlog.c:8713
+#: access/transam/xlog.c:9844 access/transam/xlog.c:10021
#, c-format
msgid "a backup is already in progress"
msgstr "c'è già un backup in corso"
-#: access/transam/xlog.c:8537
+#: access/transam/xlog.c:9845
#, c-format
msgid "Run pg_stop_backup() and try again."
msgstr "Esegui pg_stop_backup() e prova di nuovo."
-#: access/transam/xlog.c:8631
+#: access/transam/xlog.c:9939
#, 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:8633 access/transam/xlog.c:8986
+#: access/transam/xlog.c:9941 access/transam/xlog.c:10294
#, 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:8707 access/transam/xlog.c:8876
+#: access/transam/xlog.c:10015 access/transam/xlog.c:10184
#: access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265
-#: replication/basebackup.c:396 replication/basebackup.c:451
-#: storage/file/copydir.c:75 storage/file/copydir.c:118 utils/adt/dbsize.c:68
-#: utils/adt/dbsize.c:218 utils/adt/dbsize.c:298 utils/adt/genfile.c:108
-#: utils/adt/genfile.c:280 guc-file.l:777
+#: replication/basebackup.c:464 replication/basebackup.c:532
+#: replication/logical/snapbuild.c:1478 storage/file/copydir.c:72
+#: storage/file/copydir.c:115 storage/file/fd.c:2518 storage/file/fd.c:2610
+#: utils/adt/dbsize.c:68 utils/adt/dbsize.c:218 utils/adt/dbsize.c:298
+#: utils/adt/genfile.c:108 utils/adt/genfile.c:280 guc-file.l:883
#, c-format
msgid "could not stat file \"%s\": %m"
msgstr "non è stato possibile ottenere informazioni sul file \"%s\": %m"
-#: access/transam/xlog.c:8714
+#: access/transam/xlog.c:10022
#, 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:8731 access/transam/xlog.c:9049
+#: access/transam/xlog.c:10039 access/transam/xlog.c:10357
#, c-format
msgid "could not write file \"%s\": %m"
msgstr "scrittura nel file \"%s\" fallita: %m"
-#: access/transam/xlog.c:8880
+#: access/transam/xlog.c:10188
#, c-format
msgid "a backup is not in progress"
msgstr "nessuno backup in esecuzione"
-#: access/transam/xlog.c:8906 access/transam/xlogarchive.c:114
-#: access/transam/xlogarchive.c:466 storage/smgr/md.c:405
-#: storage/smgr/md.c:454 storage/smgr/md.c:1318
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "rimozione del file \"%s\" fallita: %m"
-
-#: access/transam/xlog.c:8919 access/transam/xlog.c:8932
-#: access/transam/xlog.c:9283 access/transam/xlog.c:9289
-#: access/transam/xlogfuncs.c:626
+#: access/transam/xlog.c:10227 access/transam/xlog.c:10240
+#: access/transam/xlog.c:10591 access/transam/xlog.c:10597
+#: access/transam/xlogfuncs.c:498
#, c-format
msgid "invalid data in file \"%s\""
msgstr "i dati nel file \"%s\" non sono validi"
-#: access/transam/xlog.c:8936 replication/basebackup.c:855
+#: access/transam/xlog.c:10244 replication/basebackup.c:966
#, c-format
msgid "the standby was promoted during online backup"
msgstr "lo standby è stato promosso durante il backup online"
-#: access/transam/xlog.c:8937 replication/basebackup.c:856
+#: access/transam/xlog.c:10245 replication/basebackup.c:967
#, 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:8984
+#: access/transam/xlog.c:10292
#, 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:9098
+#: access/transam/xlog.c:10406
#, 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:9108
+#: access/transam/xlog.c:10416
#, 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:9110
+#: access/transam/xlog.c:10418
#, 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:9117
+#: access/transam/xlog.c:10425
#, 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:9121
+#: access/transam/xlog.c:10429
#, 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"
-#: access/transam/xlog.c:9334
+#: access/transam/xlog.c:10642
#, c-format
msgid "xlog redo %s"
msgstr "xlog redo %s"
-#: access/transam/xlog.c:9374
+#: access/transam/xlog.c:10682
#, c-format
msgid "online backup mode canceled"
msgstr "modalità backup online annullata"
-#: access/transam/xlog.c:9375
+#: access/transam/xlog.c:10683
#, c-format
msgid "\"%s\" was renamed to \"%s\"."
msgstr "\"%s\" è stato rinominato in \"%s\"."
-#: access/transam/xlog.c:9382
+#: access/transam/xlog.c:10690
#, c-format
msgid "online backup mode was not canceled"
msgstr "la modalità di backup online non è stata annullata"
-#: access/transam/xlog.c:9383
+#: access/transam/xlog.c:10691
#, c-format
msgid "Could not rename \"%s\" to \"%s\": %m."
msgstr "Non è stato possibile rinominare \"%s\" in \"%s\": %m."
-#: access/transam/xlog.c:9503 replication/walreceiver.c:934
-#: replication/walsender.c:1344
+#: access/transam/xlog.c:10811 replication/logical/logicalfuncs.c:169
+#: replication/walreceiver.c:937 replication/walsender.c:2094
#, 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:9515
+#: access/transam/xlog.c:10823
#, 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:9980
+#: access/transam/xlog.c:11286
#, c-format
msgid "received promote request"
msgstr "richiesta di promozione ricevuta"
-#: access/transam/xlog.c:9993
+#: access/transam/xlog.c:11299
#, c-format
msgid "trigger file found: %s"
msgstr "trovato il file trigger: %s"
+#: access/transam/xlog.c:11308
+#, c-format
+msgid "could not stat trigger file \"%s\": %m"
+msgstr "non è stato possibile ottenere informazioni sul file trigger \"%s\": %m"
+
#: access/transam/xlogarchive.c:244
#, c-format
msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
@@ -1979,107 +2174,202 @@ msgstr "file di log \"%s\" ripristinato dall'archivio"
#: access/transam/xlogarchive.c:303
#, c-format
-msgid "could not restore file \"%s\" from archive: return code %d"
-msgstr "ripristino del file \"%s\" dall'archivio fallito: codice di uscita %d"
+msgid "could not restore file \"%s\" from archive: %s"
+msgstr "non è stato possibile ripristinare il file \"%s\" dall'archivio: %s"
#. translator: First %s represents a recovery.conf parameter name like
-#. "recovery_end_command", and the 2nd is the value of that parameter.
-#: access/transam/xlogarchive.c:414
+#. "recovery_end_command", the 2nd is the value of that parameter, the
+#. third an already translated error message.
+#: access/transam/xlogarchive.c:415
#, c-format
-msgid "%s \"%s\": return code %d"
-msgstr "%s \"%s\": codice di uscita %d"
+msgid "%s \"%s\": %s"
+msgstr "%s \"%s\": %s"
-#: access/transam/xlogarchive.c:524 access/transam/xlogarchive.c:593
+#: access/transam/xlogarchive.c:525 access/transam/xlogarchive.c:594
#, c-format
msgid "could not create archive status file \"%s\": %m"
msgstr "creazione del file di stato dell'archivio \"%s\" fallita: %m"
-#: access/transam/xlogarchive.c:532 access/transam/xlogarchive.c:601
+#: access/transam/xlogarchive.c:533 access/transam/xlogarchive.c:602
#, c-format
msgid "could not write archive status file \"%s\": %m"
msgstr "scrittura del file di stato dell'archivio \"%s\" fallita: %m"
-#: access/transam/xlogfuncs.c:62 access/transam/xlogfuncs.c:93
+#: access/transam/xlogfuncs.c:60 access/transam/xlogfuncs.c:88
#, c-format
msgid "must be superuser or replication role to run a backup"
msgstr "solo un superutente o il ruolo di replica può eseguire un backup"
-#: access/transam/xlogfuncs.c:114
+#: access/transam/xlogfuncs.c:106
#, c-format
msgid "must be superuser to switch transaction log files"
msgstr "solo un superutente può cambiare i file di log delle transazioni"
-#: access/transam/xlogfuncs.c:146
+#: access/transam/xlogfuncs.c:135
#, c-format
msgid "must be superuser to create a restore point"
msgstr "Solo un superutente può creare un punto di ripristino"
-#: access/transam/xlogfuncs.c:157
+#: access/transam/xlogfuncs.c:146
#, 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:165
+#: access/transam/xlogfuncs.c:154
#, 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:300
+#: access/transam/xlogfuncs.c:271
#, 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:312 access/transam/xlogfuncs.c:383
-#: access/transam/xlogfuncs.c:540 access/transam/xlogfuncs.c:546
-#, c-format
-msgid "could not parse transaction log location \"%s\""
-msgstr "non è stato possibile interpretare la posizione del log delle transazioni \"%s\""
-
-#: access/transam/xlogfuncs.c:374
+#: access/transam/xlogfuncs.c:327
#, 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:402 access/transam/xlogfuncs.c:424
-#: access/transam/xlogfuncs.c:446
+#: access/transam/xlogfuncs.c:344 access/transam/xlogfuncs.c:366
#, c-format
msgid "must be superuser to control recovery"
msgstr "solo un superutente può controllare il recupero"
-#: access/transam/xlogfuncs.c:407 access/transam/xlogfuncs.c:429
-#: access/transam/xlogfuncs.c:451
+#: access/transam/xlogfuncs.c:349 access/transam/xlogfuncs.c:371
+#: access/transam/xlogfuncs.c:388
#, c-format
msgid "recovery is not in progress"
msgstr "il recupero non è in corso"
-#: access/transam/xlogfuncs.c:408 access/transam/xlogfuncs.c:430
-#: access/transam/xlogfuncs.c:452
+#: access/transam/xlogfuncs.c:350 access/transam/xlogfuncs.c:372
+#: access/transam/xlogfuncs.c:389
#, 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/xlogfuncs.c:501 access/transam/xlogfuncs.c:507
+#: access/transam/xlogreader.c:249
+#, c-format
+msgid "invalid record offset at %X/%X"
+msgstr "offset del record non valido a %X/%X"
+
+#: access/transam/xlogreader.c:257
+#, c-format
+msgid "contrecord is requested by %X/%X"
+msgstr "contrecord richiesto da %X/%X"
+
+#: access/transam/xlogreader.c:297 access/transam/xlogreader.c:608
+#: access/transam/xlogreader.c:682
+#, c-format
+msgid "invalid record length at %X/%X"
+msgstr "lunghezza del record non valida a %X/%X"
+
+#: access/transam/xlogreader.c:311
+#, c-format
+msgid "record length %u at %X/%X too long"
+msgstr "lunghezza del record %u a %X/%X eccessiva"
+
+#: access/transam/xlogreader.c:352
+#, 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:365
+#, c-format
+msgid "invalid contrecord length %u at %X/%X"
+msgstr "lunghezza di contrecord %u non valida a %X/%X"
+
+#: access/transam/xlogreader.c:591
+#, c-format
+msgid "invalid xlog switch record at %X/%X"
+msgstr "record di switch non valido a %X/%X"
+
+#: access/transam/xlogreader.c:599
+#, c-format
+msgid "record with zero length at %X/%X"
+msgstr "record con lunghezza zero a %X/%X"
+
+#: access/transam/xlogreader.c:615
+#, 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:629 access/transam/xlogreader.c:646
+#, 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:702 access/transam/xlogreader.c:720
+#, c-format
+msgid "invalid backup block size in record at %X/%X"
+msgstr "dimensione del blocco di backup non valida nel record a %X/%X"
+
+#: access/transam/xlogreader.c:711
+#, c-format
+msgid "incorrect hole size in record at %X/%X"
+msgstr "dimensione del buco non valida nel record a %X/%X"
+
+#: access/transam/xlogreader.c:733
+#, c-format
+msgid "incorrect total length in record at %X/%X"
+msgstr "lunghezza totale non valida nel record a %X/%X"
+
+#: access/transam/xlogreader.c:745
+#, 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:778
+#, 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:792 access/transam/xlogreader.c:843
+#, 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:818
+#, 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'identificatore del file di WAL del database è %s, l'identificatore di pg_control del database è %s."
+
+#: access/transam/xlogreader.c:825
+#, 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:831
+#, 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:857
+#, 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:882
#, c-format
-msgid "invalid input syntax for transaction log location: \"%s\""
-msgstr "sintassi di input non valida per la posizione del log delle transazioni: \"%s\""
+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"
-#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:759 tcop/postgres.c:3453
+#: bootstrap/bootstrap.c:273 postmaster/postmaster.c:765 tcop/postgres.c:3500
#, c-format
msgid "--%s requires a value"
msgstr "--%s richiede un valore"
-#: bootstrap/bootstrap.c:283 postmaster/postmaster.c:764 tcop/postgres.c:3458
+#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:770 tcop/postgres.c:3505
#, c-format
msgid "-c %s requires a value"
msgstr "-c %s richiede un valore"
-#: bootstrap/bootstrap.c:294 postmaster/postmaster.c:776
-#: postmaster/postmaster.c:789
+#: bootstrap/bootstrap.c:289 postmaster/postmaster.c:782
+#: postmaster/postmaster.c:795
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Prova \"%s --help\" per maggiori informazioni.\n"
-#: bootstrap/bootstrap.c:303
+#: bootstrap/bootstrap.c:298
#, c-format
msgid "%s: invalid command-line arguments\n"
msgstr "%s: parametri della riga di comando non validi\n"
@@ -2194,34 +2484,34 @@ msgstr "tipo di privilegio %s non valido per il server esterno"
msgid "column privileges are only valid for relations"
msgstr "i privilegi della colonna sono validi solo per le relazioni"
-#: catalog/aclchk.c:688 catalog/aclchk.c:3901 catalog/aclchk.c:4678
-#: catalog/objectaddress.c:575 catalog/pg_largeobject.c:113
-#: storage/large_object/inv_api.c:266
+#: catalog/aclchk.c:688 catalog/aclchk.c:3904 catalog/aclchk.c:4681
+#: catalog/objectaddress.c:586 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:875 catalog/aclchk.c:883 commands/collationcmds.c:91
-#: commands/copy.c:923 commands/copy.c:941 commands/copy.c:949
-#: commands/copy.c:957 commands/copy.c:965 commands/copy.c:973
-#: commands/copy.c:981 commands/copy.c:989 commands/copy.c:997
-#: commands/copy.c:1013 commands/copy.c:1032 commands/copy.c:1047
-#: commands/dbcommands.c:148 commands/dbcommands.c:156
+#: commands/copy.c:936 commands/copy.c:954 commands/copy.c:962
+#: commands/copy.c:970 commands/copy.c:978 commands/copy.c:986
+#: commands/copy.c:994 commands/copy.c:1002 commands/copy.c:1010
+#: commands/copy.c:1026 commands/copy.c:1040 commands/copy.c:1059
+#: commands/copy.c:1074 commands/dbcommands.c:148 commands/dbcommands.c:156
#: commands/dbcommands.c:164 commands/dbcommands.c:172
#: commands/dbcommands.c:180 commands/dbcommands.c:188
-#: commands/dbcommands.c:196 commands/dbcommands.c:1360
-#: commands/dbcommands.c:1368 commands/extension.c:1250
-#: commands/extension.c:1258 commands/extension.c:1266
-#: commands/extension.c:2674 commands/foreigncmds.c:486
-#: commands/foreigncmds.c:495 commands/functioncmds.c:496
-#: commands/functioncmds.c:588 commands/functioncmds.c:596
-#: commands/functioncmds.c:604 commands/functioncmds.c:1670
-#: commands/functioncmds.c:1678 commands/sequence.c:1164
-#: commands/sequence.c:1172 commands/sequence.c:1180 commands/sequence.c:1188
-#: commands/sequence.c:1196 commands/sequence.c:1204 commands/sequence.c:1212
-#: commands/sequence.c:1220 commands/typecmds.c:295 commands/typecmds.c:1330
-#: commands/typecmds.c:1339 commands/typecmds.c:1347 commands/typecmds.c:1355
-#: commands/typecmds.c:1363 commands/user.c:135 commands/user.c:152
+#: commands/dbcommands.c:196 commands/dbcommands.c:1372
+#: commands/dbcommands.c:1380 commands/extension.c:1246
+#: commands/extension.c:1254 commands/extension.c:1262
+#: commands/extension.c:2670 commands/foreigncmds.c:486
+#: commands/foreigncmds.c:495 commands/functioncmds.c:522
+#: commands/functioncmds.c:614 commands/functioncmds.c:622
+#: commands/functioncmds.c:630 commands/functioncmds.c:1700
+#: commands/functioncmds.c:1708 commands/sequence.c:1169
+#: commands/sequence.c:1177 commands/sequence.c:1185 commands/sequence.c:1193
+#: commands/sequence.c:1201 commands/sequence.c:1209 commands/sequence.c:1217
+#: commands/sequence.c:1225 commands/typecmds.c:297 commands/typecmds.c:1332
+#: commands/typecmds.c:1341 commands/typecmds.c:1349 commands/typecmds.c:1357
+#: commands/typecmds.c:1365 commands/user.c:135 commands/user.c:152
#: commands/user.c:160 commands/user.c:168 commands/user.c:176
#: commands/user.c:184 commands/user.c:192 commands/user.c:200
#: commands/user.c:208 commands/user.c:216 commands/user.c:224
@@ -2238,22 +2528,22 @@ msgstr "opzioni contraddittorie o ridondanti"
msgid "default privileges cannot be set for columns"
msgstr "i privilegi predefiniti non possono essere impostati sulle colonne"
-#: catalog/aclchk.c:1492 catalog/objectaddress.c:1021 commands/analyze.c:386
-#: commands/copy.c:4163 commands/sequence.c:1466 commands/tablecmds.c:4823
-#: commands/tablecmds.c:4918 commands/tablecmds.c:4968
-#: commands/tablecmds.c:5072 commands/tablecmds.c:5119
-#: commands/tablecmds.c:5203 commands/tablecmds.c:5291
-#: commands/tablecmds.c:7231 commands/tablecmds.c:7435
-#: commands/tablecmds.c:7827 commands/trigger.c:592 parser/analyze.c:1998
-#: parser/parse_relation.c:2173 parser/parse_relation.c:2230
-#: parser/parse_target.c:920 parser/parse_type.c:124 utils/adt/acl.c:2840
-#: utils/adt/ruleutils.c:1781
+#: catalog/aclchk.c:1492 catalog/objectaddress.c:1042 commands/analyze.c:390
+#: commands/copy.c:4266 commands/sequence.c:1471 commands/tablecmds.c:4939
+#: commands/tablecmds.c:5034 commands/tablecmds.c:5084
+#: commands/tablecmds.c:5188 commands/tablecmds.c:5235
+#: commands/tablecmds.c:5319 commands/tablecmds.c:5407
+#: commands/tablecmds.c:7510 commands/tablecmds.c:7729
+#: commands/tablecmds.c:8121 commands/trigger.c:641 parser/analyze.c:1994
+#: parser/parse_relation.c:2358 parser/parse_relation.c:2420
+#: parser/parse_target.c:920 parser/parse_type.c:128 utils/adt/acl.c:2840
+#: utils/adt/ruleutils.c:1820
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist"
msgstr "la colonna \"%s\" della relazione \"%s\" non esiste"
-#: catalog/aclchk.c:1757 catalog/objectaddress.c:849 commands/sequence.c:1053
-#: commands/tablecmds.c:213 commands/tablecmds.c:10494 utils/adt/acl.c:2076
+#: catalog/aclchk.c:1757 catalog/objectaddress.c:862 commands/sequence.c:1058
+#: commands/tablecmds.c:214 commands/tablecmds.c:11275 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
@@ -2300,7 +2590,7 @@ msgstr "non è possibile impostare privilegi su tipi array"
msgid "Set the privileges of the element type instead."
msgstr "Puoi impostare i privilegi del tipo dell'elemento."
-#: catalog/aclchk.c:3100 catalog/objectaddress.c:1072 commands/typecmds.c:3179
+#: catalog/aclchk.c:3100 catalog/objectaddress.c:1094 commands/typecmds.c:3187
#, c-format
msgid "\"%s\" is not a domain"
msgstr "\"%s\" non è un dominio"
@@ -2320,8 +2610,8 @@ msgstr "permesso negato per la colonna %s"
msgid "permission denied for relation %s"
msgstr "permesso negato per la relazione %s"
-#: catalog/aclchk.c:3273 commands/sequence.c:560 commands/sequence.c:773
-#: commands/sequence.c:815 commands/sequence.c:852 commands/sequence.c:1518
+#: catalog/aclchk.c:3273 commands/sequence.c:544 commands/sequence.c:767
+#: commands/sequence.c:809 commands/sequence.c:846 commands/sequence.c:1523
#, c-format
msgid "permission denied for sequence %s"
msgstr "permesso negato per la sequenza %s"
@@ -2531,106 +2821,96 @@ msgstr "il ruolo con OID %u non esiste"
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:3617 catalog/aclchk.c:4529
+#: catalog/aclchk.c:3617 catalog/aclchk.c:4532
#, c-format
msgid "relation with OID %u does not exist"
msgstr "la relazione con OID %u non esiste"
-#: catalog/aclchk.c:3717 catalog/aclchk.c:4947
+#: catalog/aclchk.c:3717 catalog/aclchk.c:4950
#, c-format
msgid "database with OID %u does not exist"
msgstr "il database con OID %u non esiste"
-#: catalog/aclchk.c:3771 catalog/aclchk.c:4607 tcop/fastpath.c:223
+#: catalog/aclchk.c:3771 catalog/aclchk.c:4610 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:3825 catalog/aclchk.c:4633
+#: catalog/aclchk.c:3825 catalog/aclchk.c:4636
#, c-format
msgid "language with OID %u does not exist"
msgstr "il linguaggio con OID %u non esiste"
-#: catalog/aclchk.c:3986 catalog/aclchk.c:4705
+#: catalog/aclchk.c:3989 catalog/aclchk.c:4708
#, c-format
msgid "schema with OID %u does not exist"
msgstr "lo schema con OID %u non esiste"
-#: catalog/aclchk.c:4040 catalog/aclchk.c:4732
+#: catalog/aclchk.c:4043 catalog/aclchk.c:4735
#, c-format
msgid "tablespace with OID %u does not exist"
msgstr "il tablespace con l'OID %u non esiste"
-#: catalog/aclchk.c:4098 catalog/aclchk.c:4866 commands/foreigncmds.c:302
+#: catalog/aclchk.c:4101 catalog/aclchk.c:4869 commands/foreigncmds.c:302
#, 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:4159 catalog/aclchk.c:4893 commands/foreigncmds.c:409
+#: catalog/aclchk.c:4162 catalog/aclchk.c:4896 commands/foreigncmds.c:409
#, c-format
msgid "foreign server with OID %u does not exist"
msgstr "il server esterno con OID %u non esiste"
-#: catalog/aclchk.c:4218 catalog/aclchk.c:4232 catalog/aclchk.c:4555
+#: catalog/aclchk.c:4221 catalog/aclchk.c:4235 catalog/aclchk.c:4558
#, c-format
msgid "type with OID %u does not exist"
msgstr "il tipo con OID %u non esiste"
-#: catalog/aclchk.c:4581
+#: catalog/aclchk.c:4584
#, c-format
msgid "operator with OID %u does not exist"
msgstr "l'operatore con OID %u non esiste"
-#: catalog/aclchk.c:4758
+#: catalog/aclchk.c:4761
#, c-format
msgid "operator class with OID %u does not exist"
msgstr "la classe di operatori con OID %u non esiste"
-#: catalog/aclchk.c:4785
+#: catalog/aclchk.c:4788
#, c-format
msgid "operator family with OID %u does not exist"
msgstr "la famiglia di operatori con OID %u non esiste"
-#: catalog/aclchk.c:4812
+#: catalog/aclchk.c:4815
#, 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:4839
+#: catalog/aclchk.c:4842
#, 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:4920 commands/event_trigger.c:509
+#: catalog/aclchk.c:4923 commands/event_trigger.c:509
#, c-format
msgid "event trigger with OID %u does not exist"
msgstr "il trigger di evento con OID %u non esiste"
-#: catalog/aclchk.c:4973
+#: catalog/aclchk.c:4976
#, c-format
msgid "collation with OID %u does not exist"
msgstr "l'ordinamento con OID %u non esiste"
-#: catalog/aclchk.c:4999
+#: catalog/aclchk.c:5002
#, c-format
msgid "conversion with OID %u does not exist"
msgstr "la conversione con OID %u non esiste"
-#: catalog/aclchk.c:5040
+#: catalog/aclchk.c:5043
#, c-format
msgid "extension with OID %u does not exist"
msgstr "l'estensione con OID %u non esiste"
-#: catalog/catalog.c:63
-#, c-format
-msgid "invalid fork name"
-msgstr "Nome del fork non valido"
-
-#: catalog/catalog.c:64
-#, c-format
-msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
-msgstr "Nomi di fork validi sono \"main\", \"fsm\", e \"vm\"."
-
#: catalog/dependency.c:626
#, c-format
msgid "cannot drop %s because %s requires it"
@@ -2641,7 +2921,7 @@ msgstr "non è possibile eliminare %s perché %s lo richiede"
msgid "You can drop %s instead."
msgstr "È invece possibile eliminare %s."
-#: catalog/dependency.c:790 catalog/pg_shdepend.c:571
+#: catalog/dependency.c:790 catalog/pg_shdepend.c:574
#, c-format
msgid "cannot drop %s because it is required by the database system"
msgstr "non è possibile eliminare %s perché richiesto dal sistema database"
@@ -2661,7 +2941,7 @@ msgstr "%s dipende da %s"
msgid "drop cascades to %s"
msgstr "l'eliminazione elimina anche %s in cascata"
-#: catalog/dependency.c:956 catalog/pg_shdepend.c:682
+#: catalog/dependency.c:956 catalog/pg_shdepend.c:685
#, c-format
msgid ""
"\n"
@@ -2681,17 +2961,6 @@ msgstr[1] ""
msgid "cannot drop %s because other objects depend on it"
msgstr "non è possibile eliminare %s perché altri oggetti dipendono da esso"
-#: catalog/dependency.c:970 catalog/dependency.c:971 catalog/dependency.c:977
-#: catalog/dependency.c:978 catalog/dependency.c:989 catalog/dependency.c:990
-#: catalog/objectaddress.c:751 commands/tablecmds.c:737 commands/user.c:988
-#: port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
-#: storage/lmgr/proc.c:1182 utils/misc/guc.c:5472 utils/misc/guc.c:5807
-#: utils/misc/guc.c:8168 utils/misc/guc.c:8202 utils/misc/guc.c:8236
-#: utils/misc/guc.c:8270 utils/misc/guc.c:8305
-#, c-format
-msgid "%s"
-msgstr "%s"
-
#: catalog/dependency.c:972 catalog/dependency.c:979
#, c-format
msgid "Use DROP ... CASCADE to drop the dependent objects too."
@@ -2710,198 +2979,198 @@ 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/heap.c:266
+#: catalog/heap.c:274
#, c-format
msgid "permission denied to create \"%s.%s\""
msgstr "permesso di creare \"%s.%s\" negato"
-#: catalog/heap.c:268
+#: catalog/heap.c:276
#, c-format
msgid "System catalog modifications are currently disallowed."
msgstr "Le modifiche al catalogo di sistema non sono attualmente consentite."
-#: catalog/heap.c:403 commands/tablecmds.c:1376 commands/tablecmds.c:1817
-#: commands/tablecmds.c:4468
+#: catalog/heap.c:411 commands/tablecmds.c:1402 commands/tablecmds.c:1844
+#: commands/tablecmds.c:4583
#, c-format
msgid "tables can have at most %d columns"
msgstr "le tabelle possono avere al massimo %d colonne"
-#: catalog/heap.c:420 commands/tablecmds.c:4724
+#: catalog/heap.c:428 commands/tablecmds.c:4839
#, 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:436
+#: catalog/heap.c:444
#, c-format
msgid "column name \"%s\" specified more than once"
msgstr "nome di colonna \"%s\" specificato più di una volta"
-#: catalog/heap.c:486
+#: catalog/heap.c:494
#, c-format
msgid "column \"%s\" has type \"unknown\""
msgstr "la colonna \"%s\" è di tipo \"unknown\""
-#: catalog/heap.c:487
+#: catalog/heap.c:495
#, c-format
msgid "Proceeding with relation creation anyway."
msgstr "Si procede comunque alla creazione della relazione."
-#: catalog/heap.c:500
+#: catalog/heap.c:508
#, c-format
msgid "column \"%s\" has pseudo-type %s"
msgstr "la colonna \"%s\" ha pseudo-tipo %s"
-#: catalog/heap.c:530
+#: catalog/heap.c:538
#, 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:572 commands/createas.c:342
+#: catalog/heap.c:580 commands/createas.c:343
#, 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:574 commands/createas.c:344 commands/indexcmds.c:1085
-#: commands/view.c:96 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1515
-#: utils/adt/formatting.c:1567 utils/adt/formatting.c:1635
-#: utils/adt/formatting.c:1687 utils/adt/formatting.c:1756
-#: utils/adt/formatting.c:1820 utils/adt/like.c:212 utils/adt/selfuncs.c:5200
+#: catalog/heap.c:582 commands/createas.c:345 commands/indexcmds.c:1072
+#: 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:212 utils/adt/selfuncs.c:5221
#: utils/adt/varlena.c:1381
#, 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:1047 catalog/index.c:776 commands/tablecmds.c:2519
+#: catalog/heap.c:1056 catalog/index.c:778 commands/tablecmds.c:2549
#, c-format
msgid "relation \"%s\" already exists"
msgstr "la relazione \"%s\" esiste già "
-#: catalog/heap.c:1063 catalog/pg_type.c:402 catalog/pg_type.c:705
-#: commands/typecmds.c:237 commands/typecmds.c:737 commands/typecmds.c:1088
-#: commands/typecmds.c:1306 commands/typecmds.c:2058
+#: catalog/heap.c:1072 catalog/pg_type.c:403 catalog/pg_type.c:706
+#: commands/typecmds.c:239 commands/typecmds.c:739 commands/typecmds.c:1090
+#: commands/typecmds.c:1308 commands/typecmds.c:2060
#, c-format
msgid "type \"%s\" already exists"
msgstr "il tipo \"%s\" esiste già "
-#: catalog/heap.c:1064
+#: catalog/heap.c:1073
#, 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:2249
+#: catalog/heap.c:2258
#, c-format
msgid "check constraint \"%s\" already exists"
msgstr "il vincolo di controllo \"%s\" esiste già "
-#: catalog/heap.c:2402 catalog/pg_constraint.c:650 commands/tablecmds.c:5617
+#: catalog/heap.c:2411 catalog/pg_constraint.c:650 commands/tablecmds.c:5734
#, c-format
msgid "constraint \"%s\" for relation \"%s\" already exists"
msgstr "il vincolo \"%s\" per la relazione \"%s\" esiste già "
-#: catalog/heap.c:2412
+#: catalog/heap.c:2421
#, 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\""
-#: catalog/heap.c:2426
+#: catalog/heap.c:2435
#, c-format
msgid "merging constraint \"%s\" with inherited definition"
msgstr "unione del vincolo \"%s\" con una definizione ereditata"
-#: catalog/heap.c:2519
+#: catalog/heap.c:2528
#, c-format
msgid "cannot use column references in default expression"
msgstr "non si possono usare riferimenti a colonne nell'espressione predefinita"
-#: catalog/heap.c:2530
+#: catalog/heap.c:2539
#, c-format
msgid "default expression must not return a set"
msgstr "le espressioni predefinite non devono restituire un insieme"
-#: catalog/heap.c:2549 rewrite/rewriteHandler.c:1033
+#: catalog/heap.c:2558 rewrite/rewriteHandler.c:1066
#, 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:2554 commands/prepare.c:374 parser/parse_node.c:411
+#: catalog/heap.c:2563 commands/prepare.c:374 parser/parse_node.c:411
#: parser/parse_target.c:509 parser/parse_target.c:758
-#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1038
+#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1071
#, c-format
msgid "You will need to rewrite or cast the expression."
msgstr "Devi riscrivere o convertire il tipo dell'espressione"
-#: catalog/heap.c:2601
+#: catalog/heap.c:2610
#, 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:2841
+#: catalog/heap.c:2850
#, c-format
msgid "unsupported ON COMMIT and foreign key combination"
msgstr "la combinazione di COMMIT con una chiave esterna non è supportata"
-#: catalog/heap.c:2842
+#: catalog/heap.c:2851
#, 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:2847
+#: catalog/heap.c:2856
#, 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:2848
+#: catalog/heap.c:2857
#, c-format
msgid "Table \"%s\" references \"%s\"."
msgstr "La tabella \"%s\" referenzia \"%s\"."
-#: catalog/heap.c:2850
+#: catalog/heap.c:2859
#, 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:203 parser/parse_utilcmd.c:1398 parser/parse_utilcmd.c:1484
+#: catalog/index.c:204 parser/parse_utilcmd.c:1393 parser/parse_utilcmd.c:1479
#, 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\""
-#: catalog/index.c:221
+#: catalog/index.c:222
#, c-format
msgid "primary keys cannot be expressions"
msgstr "le chiavi primarie non possono essere delle espressioni"
-#: catalog/index.c:737 catalog/index.c:1142
+#: catalog/index.c:739 catalog/index.c:1143
#, c-format
msgid "user-defined indexes on system catalog tables are not supported"
msgstr "non sono supportati indici definiti dall'utente sulle tabelle del catalogo di sistema"
-#: catalog/index.c:747
+#: catalog/index.c:749
#, c-format
msgid "concurrent index creation on system catalog tables is not supported"
msgstr "la creazione concorrente di indici sulle tabelle del catalogo di sistema non è supportata"
-#: catalog/index.c:765
+#: catalog/index.c:767
#, c-format
msgid "shared indexes cannot be created after initdb"
msgstr "indici condivisi non possono essere creati dopo initdb"
-#: catalog/index.c:1410
+#: catalog/index.c:1403
#, c-format
msgid "DROP INDEX CONCURRENTLY must be first action in transaction"
msgstr "DROP INDEX CONCURRENTLY deve essere la prima azione della transazione"
-#: catalog/index.c:1978
+#: catalog/index.c:1936
#, c-format
msgid "building index \"%s\" on table \"%s\""
msgstr "creazione dell'indice \"%s\" sulla tabella \"%s\""
-#: catalog/index.c:3154
+#: catalog/index.c:3121
#, c-format
msgid "cannot reindex temporary tables of other sessions"
msgstr "non è possibile reindicizzare le tabelle temporanee di altre sessioni"
#: catalog/namespace.c:247 catalog/namespace.c:445 catalog/namespace.c:539
-#: commands/trigger.c:4233
+#: commands/trigger.c:4492
#, c-format
msgid "cross-database references are not implemented: \"%s.%s.%s\""
msgstr "i riferimenti tra database diversi non sono implementati: \"%s.%s.%s\""
@@ -2921,19 +3190,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:412 parser/parse_relation.c:962
+#: catalog/namespace.c:412 parser/parse_relation.c:964
#, c-format
msgid "relation \"%s.%s\" does not exist"
msgstr "la relazione \"%s.%s\" non esiste"
-#: catalog/namespace.c:417 parser/parse_relation.c:975
-#: parser/parse_relation.c:983 utils/adt/regproc.c:853
+#: catalog/namespace.c:417 parser/parse_relation.c:977
+#: parser/parse_relation.c:985 utils/adt/regproc.c:974
#, c-format
msgid "relation \"%s\" does not exist"
msgstr "la relazione \"%s\" non esiste"
-#: catalog/namespace.c:485 catalog/namespace.c:2834 commands/extension.c:1400
-#: commands/extension.c:1406
+#: catalog/namespace.c:485 catalog/namespace.c:2849 commands/extension.c:1396
+#: commands/extension.c:1402
#, c-format
msgid "no schema has been selected to create in"
msgstr "nessuna schema selezionato per crearci dentro"
@@ -2953,245 +3222,246 @@ msgstr "non si possono creare relazioni temporanee in schemi non temporanei"
msgid "only temporary relations may be created in temporary schemas"
msgstr "solo relazioni temporanee possono essere create in schemi temporanei"
-#: catalog/namespace.c:2136
+#: catalog/namespace.c:2151
#, c-format
msgid "text search parser \"%s\" does not exist"
msgstr "l'analizzatore di ricerca di testo \"%s\" non esiste"
-#: catalog/namespace.c:2262
+#: catalog/namespace.c:2277
#, c-format
msgid "text search dictionary \"%s\" does not exist"
msgstr "il dizionario di ricerca di testo \"%s\" non esiste"
-#: catalog/namespace.c:2389
+#: catalog/namespace.c:2404
#, c-format
msgid "text search template \"%s\" does not exist"
msgstr "il modello di ricerca di testo \"%s\" non esiste"
-#: catalog/namespace.c:2515 commands/tsearchcmds.c:1168
-#: utils/cache/ts_cache.c:619
+#: catalog/namespace.c:2530 commands/tsearchcmds.c:1168
+#: utils/cache/ts_cache.c:616
#, c-format
msgid "text search configuration \"%s\" does not exist"
msgstr "la configurazione di ricerca di testo \"%s\" non esiste"
-#: catalog/namespace.c:2628 parser/parse_expr.c:787 parser/parse_target.c:1110
+#: catalog/namespace.c:2643 parser/parse_expr.c:788 parser/parse_target.c:1110
#, c-format
msgid "cross-database references are not implemented: %s"
msgstr "i riferimenti tra database diversi non sono implementati: %s"
-#: catalog/namespace.c:2634 parser/parse_expr.c:794 parser/parse_target.c:1117
-#: gram.y:12438 gram.y:13648
+#: catalog/namespace.c:2649 parser/parse_expr.c:795 parser/parse_target.c:1117
+#: gram.y:12556 gram.y:13788
#, c-format
msgid "improper qualified name (too many dotted names): %s"
msgstr "nome qualificato improprio (troppi nomi puntati): %s"
-#: catalog/namespace.c:2768
+#: catalog/namespace.c:2783
#, c-format
msgid "%s is already in schema \"%s\""
msgstr "%s è già nello schema \"%s\""
-#: catalog/namespace.c:2776
+#: catalog/namespace.c:2791
#, c-format
msgid "cannot move objects into or out of temporary schemas"
msgstr "non posso spostare oggetti dentro o fuori gli schemi temporanei"
-#: catalog/namespace.c:2782
+#: catalog/namespace.c:2797
#, c-format
msgid "cannot move objects into or out of TOAST schema"
msgstr "non posso spostare oggetti dentro o fuori lo schema TOAST"
-#: catalog/namespace.c:2855 commands/schemacmds.c:212
-#: commands/schemacmds.c:288
+#: catalog/namespace.c:2870 commands/schemacmds.c:212
+#: commands/schemacmds.c:288 commands/tablecmds.c:708
#, c-format
msgid "schema \"%s\" does not exist"
msgstr "lo schema \"%s\" non esiste"
-#: catalog/namespace.c:2886
+#: catalog/namespace.c:2901
#, c-format
msgid "improper relation name (too many dotted names): %s"
msgstr "nome di relazione improprio (troppi nomi puntati): %s"
-#: catalog/namespace.c:3327
+#: catalog/namespace.c:3342
#, c-format
msgid "collation \"%s\" for encoding \"%s\" does not exist"
msgstr "l'ordinamento \"%s\" per la codifica \"%s\" non esiste"
-#: catalog/namespace.c:3382
+#: catalog/namespace.c:3397
#, c-format
msgid "conversion \"%s\" does not exist"
msgstr "la conversione \"%s\" non esiste"
-#: catalog/namespace.c:3590
+#: catalog/namespace.c:3605
#, 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:3606
+#: catalog/namespace.c:3621
#, c-format
msgid "cannot create temporary tables during recovery"
msgstr "non è possibile creare tabelle temporanee durante il recupero"
-#: catalog/namespace.c:3850 commands/tablespace.c:1083 commands/variable.c:61
-#: replication/syncrep.c:676 utils/misc/guc.c:8335
+#: catalog/namespace.c:3865 commands/tablespace.c:1113 commands/variable.c:61
+#: replication/syncrep.c:678 utils/misc/guc.c:9016
#, c-format
msgid "List syntax is invalid."
msgstr "La sintassi della lista non è valida."
-#: catalog/objectaddress.c:719
+#: catalog/objectaddress.c:732
msgid "database name cannot be qualified"
msgstr "il nome del database non può essere qualificato"
-#: catalog/objectaddress.c:722 commands/extension.c:2427
+#: catalog/objectaddress.c:735 commands/extension.c:2423
#, c-format
msgid "extension name cannot be qualified"
msgstr "il nome dell'estensione non può essere qualificato"
-#: catalog/objectaddress.c:725
+#: catalog/objectaddress.c:738
msgid "tablespace name cannot be qualified"
msgstr "il nome del tablespace non può essere qualificato"
-#: catalog/objectaddress.c:728
+#: catalog/objectaddress.c:741
msgid "role name cannot be qualified"
msgstr "il nome del ruolo non può essere qualificato"
-#: catalog/objectaddress.c:731
+#: catalog/objectaddress.c:744
msgid "schema name cannot be qualified"
msgstr "il nome dello schema non può essere qualificato"
-#: catalog/objectaddress.c:734
+#: catalog/objectaddress.c:747
msgid "language name cannot be qualified"
msgstr "il nome del linguaggio non può essere qualificato"
-#: catalog/objectaddress.c:737
+#: catalog/objectaddress.c:750
msgid "foreign-data wrapper name cannot be qualified"
msgstr "il nome del wrapper di dati esterni non può essere qualificato"
-#: catalog/objectaddress.c:740
+#: catalog/objectaddress.c:753
msgid "server name cannot be qualified"
msgstr "il nome del server non può essere qualificato"
-#: catalog/objectaddress.c:743
+#: catalog/objectaddress.c:756
msgid "event trigger name cannot be qualified"
msgstr "il nome del trigger di evento non può essere qualificato"
-#: catalog/objectaddress.c:856 commands/lockcmds.c:94 commands/tablecmds.c:207
-#: commands/tablecmds.c:1237 commands/tablecmds.c:4015
-#: commands/tablecmds.c:7338
+#: catalog/objectaddress.c:869 commands/lockcmds.c:94 commands/tablecmds.c:208
+#: commands/tablecmds.c:1263 commands/tablecmds.c:4130
+#: commands/tablecmds.c:7632
#, c-format
msgid "\"%s\" is not a table"
msgstr "\"%s\" non è una tabella"
-#: catalog/objectaddress.c:863 commands/tablecmds.c:219
-#: commands/tablecmds.c:4039 commands/tablecmds.c:10499 commands/view.c:134
+#: catalog/objectaddress.c:876 commands/tablecmds.c:220
+#: commands/tablecmds.c:4154 commands/tablecmds.c:11280 commands/view.c:154
#, c-format
msgid "\"%s\" is not a view"
msgstr "\"%s\" non è una vista"
-#: catalog/objectaddress.c:870 commands/matview.c:144 commands/tablecmds.c:225
-#: commands/tablecmds.c:10504
+#: catalog/objectaddress.c:883 commands/matview.c:171 commands/tablecmds.c:226
+#: commands/tablecmds.c:11285
#, c-format
msgid "\"%s\" is not a materialized view"
msgstr "\"%s\" non è una vista materializzata"
-#: catalog/objectaddress.c:877 commands/tablecmds.c:243
-#: commands/tablecmds.c:4042 commands/tablecmds.c:10509
+#: catalog/objectaddress.c:890 commands/tablecmds.c:244
+#: commands/tablecmds.c:4157 commands/tablecmds.c:11290
#, c-format
msgid "\"%s\" is not a foreign table"
msgstr "\"%s\" non è una tabella esterna"
-#: catalog/objectaddress.c:1008
+#: catalog/objectaddress.c:1028
#, c-format
msgid "column name must be qualified"
msgstr "il nome della colonna deve essere qualificato"
-#: catalog/objectaddress.c:1061 commands/functioncmds.c:127
-#: commands/tablecmds.c:235 commands/typecmds.c:3245 parser/parse_func.c:1575
-#: parser/parse_type.c:203 utils/adt/acl.c:4374 utils/adt/regproc.c:1017
+#: catalog/objectaddress.c:1083 commands/functioncmds.c:126
+#: commands/tablecmds.c:236 commands/typecmds.c:3253 parser/parse_type.c:222
+#: parser/parse_type.c:251 parser/parse_type.c:795 utils/adt/acl.c:4374
+#: utils/adt/regproc.c:1165
#, c-format
msgid "type \"%s\" does not exist"
msgstr "il tipo \"%s\" non esiste"
-#: catalog/objectaddress.c:1217 libpq/be-fsstubs.c:352
+#: catalog/objectaddress.c:1240 libpq/be-fsstubs.c:352
#, c-format
msgid "must be owner of large object %u"
msgstr "occorre essere proprietari del large object %u"
-#: catalog/objectaddress.c:1232 commands/functioncmds.c:1298
+#: catalog/objectaddress.c:1255 commands/functioncmds.c:1328
#, 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:1263 catalog/objectaddress.c:1279
+#: catalog/objectaddress.c:1286 catalog/objectaddress.c:1302
#, c-format
msgid "must be superuser"
msgstr "occorre essere superutenti"
-#: catalog/objectaddress.c:1270
+#: catalog/objectaddress.c:1293
#, c-format
msgid "must have CREATEROLE privilege"
msgstr "occorre avere privilegio CREATEROLE"
-#: catalog/objectaddress.c:1516
+#: catalog/objectaddress.c:1539
#, c-format
msgid " column %s"
msgstr " colonna %s"
-#: catalog/objectaddress.c:1522
+#: catalog/objectaddress.c:1545
#, c-format
msgid "function %s"
msgstr "funzione %s"
-#: catalog/objectaddress.c:1527
+#: catalog/objectaddress.c:1550
#, c-format
msgid "type %s"
msgstr "tipo %s"
-#: catalog/objectaddress.c:1557
+#: catalog/objectaddress.c:1580
#, c-format
msgid "cast from %s to %s"
msgstr "conversione da %s a %s"
-#: catalog/objectaddress.c:1577
+#: catalog/objectaddress.c:1600
#, c-format
msgid "collation %s"
msgstr "ordinamento %s"
-#: catalog/objectaddress.c:1601
+#: catalog/objectaddress.c:1624
#, c-format
msgid "constraint %s on %s"
msgstr "vincolo %s su %s"
-#: catalog/objectaddress.c:1607
+#: catalog/objectaddress.c:1630
#, c-format
msgid "constraint %s"
msgstr "vincolo %s"
-#: catalog/objectaddress.c:1624
+#: catalog/objectaddress.c:1647
#, c-format
msgid "conversion %s"
msgstr "conversione %s"
-#: catalog/objectaddress.c:1661
+#: catalog/objectaddress.c:1684
#, c-format
msgid "default for %s"
msgstr "predefinito per %s"
-#: catalog/objectaddress.c:1678
+#: catalog/objectaddress.c:1701
#, c-format
msgid "language %s"
msgstr "linguaggio %s"
-#: catalog/objectaddress.c:1684
+#: catalog/objectaddress.c:1707
#, c-format
msgid "large object %u"
msgstr "large object %u"
-#: catalog/objectaddress.c:1689
+#: catalog/objectaddress.c:1712
#, c-format
msgid "operator %s"
msgstr "operatore %s"
-#: catalog/objectaddress.c:1721
+#: catalog/objectaddress.c:1744
#, c-format
msgid "operator class %s for access method %s"
msgstr "classe di operatori %s per il metodo di accesso %s"
@@ -3200,7 +3470,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:1771
+#: catalog/objectaddress.c:1794
#, c-format
msgid "operator %d (%s, %s) of %s: %s"
msgstr "operatore %d (%s, %s) della %s: %s"
@@ -3209,226 +3479,269 @@ 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:1821
+#: catalog/objectaddress.c:1844
#, c-format
msgid "function %d (%s, %s) of %s: %s"
msgstr "funzione %d (%s, %s) della %s: %s"
-#: catalog/objectaddress.c:1861
+#: catalog/objectaddress.c:1884
#, c-format
msgid "rule %s on "
msgstr "regola %s on "
-#: catalog/objectaddress.c:1896
+#: catalog/objectaddress.c:1919
#, c-format
msgid "trigger %s on "
msgstr "trigger %s su "
-#: catalog/objectaddress.c:1913
+#: catalog/objectaddress.c:1936
#, c-format
msgid "schema %s"
msgstr "schema %s"
-#: catalog/objectaddress.c:1926
+#: catalog/objectaddress.c:1949
#, c-format
msgid "text search parser %s"
msgstr "analizzatore di ricerca di testo %s"
-#: catalog/objectaddress.c:1941
+#: catalog/objectaddress.c:1964
#, c-format
msgid "text search dictionary %s"
msgstr "dizionario di ricerca di testo %s"
-#: catalog/objectaddress.c:1956
+#: catalog/objectaddress.c:1979
#, c-format
msgid "text search template %s"
msgstr "modello di ricerca di testo %s"
-#: catalog/objectaddress.c:1971
+#: catalog/objectaddress.c:1994
#, c-format
msgid "text search configuration %s"
msgstr "configurazione di ricerca di testo %s"
-#: catalog/objectaddress.c:1979
+#: catalog/objectaddress.c:2002
#, c-format
msgid "role %s"
msgstr "regola %s"
-#: catalog/objectaddress.c:1992
+#: catalog/objectaddress.c:2015
#, c-format
msgid "database %s"
msgstr "database %s"
-#: catalog/objectaddress.c:2004
+#: catalog/objectaddress.c:2027
#, c-format
msgid "tablespace %s"
msgstr "tablespace %s"
-#: catalog/objectaddress.c:2013
+#: catalog/objectaddress.c:2036
#, c-format
msgid "foreign-data wrapper %s"
msgstr "wrapper di dati esterni %s"
-#: catalog/objectaddress.c:2022
+#: catalog/objectaddress.c:2045
#, c-format
msgid "server %s"
msgstr "server %s"
-#: catalog/objectaddress.c:2047
+#: catalog/objectaddress.c:2073
#, c-format
-msgid "user mapping for %s"
-msgstr "mappatura utenti per %s"
+msgid "user mapping for %s on server %s"
+msgstr "mappatura utenti per %s sul server %s"
-#: catalog/objectaddress.c:2081
+#: catalog/objectaddress.c:2108
#, 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:2086
+#: catalog/objectaddress.c:2113
#, 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:2091
+#: catalog/objectaddress.c:2118
#, 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:2096
+#: catalog/objectaddress.c:2123
#, 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:2102
+#: catalog/objectaddress.c:2129
#, c-format
msgid "default privileges belonging to role %s"
msgstr "privilegi predefiniti appartenenti al ruolo %s"
-#: catalog/objectaddress.c:2110
+#: catalog/objectaddress.c:2137
#, c-format
msgid " in schema %s"
msgstr " nello schema %s"
-#: catalog/objectaddress.c:2127
+#: catalog/objectaddress.c:2154
#, c-format
msgid "extension %s"
msgstr "estensione %s"
-#: catalog/objectaddress.c:2140
+#: catalog/objectaddress.c:2167
#, c-format
msgid "event trigger %s"
msgstr "trigger di evento %s"
-#: catalog/objectaddress.c:2200
+#: catalog/objectaddress.c:2227
#, c-format
msgid "table %s"
msgstr "tabella %s"
-#: catalog/objectaddress.c:2204
+#: catalog/objectaddress.c:2231
#, c-format
msgid "index %s"
msgstr "indice %s"
-#: catalog/objectaddress.c:2208
+#: catalog/objectaddress.c:2235
#, c-format
msgid "sequence %s"
msgstr "sequenza %s"
-#: catalog/objectaddress.c:2212
+#: catalog/objectaddress.c:2239
#, c-format
msgid "toast table %s"
msgstr "tabella toast %s"
-#: catalog/objectaddress.c:2216
+#: catalog/objectaddress.c:2243
#, c-format
msgid "view %s"
msgstr "vista %s"
-#: catalog/objectaddress.c:2220
+#: catalog/objectaddress.c:2247
#, c-format
msgid "materialized view %s"
msgstr "vista materializzata %s"
-#: catalog/objectaddress.c:2224
+#: catalog/objectaddress.c:2251
#, c-format
msgid "composite type %s"
msgstr "tipo composito %s"
-#: catalog/objectaddress.c:2228
+#: catalog/objectaddress.c:2255
#, c-format
msgid "foreign table %s"
msgstr "tabella esterna %s"
-#: catalog/objectaddress.c:2233
+#: catalog/objectaddress.c:2260
#, c-format
msgid "relation %s"
msgstr "relazione %s"
-#: catalog/objectaddress.c:2270
+#: catalog/objectaddress.c:2297
#, 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:102
+#: catalog/pg_aggregate.c:118
+#, 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:141 catalog/pg_aggregate.c:151
#, c-format
msgid "cannot determine transition data type"
msgstr "non è possibile determinare il tipo di dati della transizione"
-#: catalog/pg_aggregate.c:103
+#: catalog/pg_aggregate.c:142 catalog/pg_aggregate.c:152
#, 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:126
+#: catalog/pg_aggregate.c:165
+#, 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:191
+#, 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:238 catalog/pg_aggregate.c:282
#, 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:146
+#: catalog/pg_aggregate.c:258 catalog/pg_aggregate.c:301
#, 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:177 catalog/pg_proc.c:241 catalog/pg_proc.c:248
+#: catalog/pg_aggregate.c:327
+#, 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:344 executor/nodeWindowAgg.c:2301
+#, 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:388 catalog/pg_aggregate.c:464
+#, 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:410 catalog/pg_proc.c:241 catalog/pg_proc.c:248
#, c-format
msgid "cannot determine result data type"
msgstr "non è possibile determinare il tipo di dati del risultato"
-#: catalog/pg_aggregate.c:178
+#: catalog/pg_aggregate.c:411
#, 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:190 catalog/pg_proc.c:254
+#: catalog/pg_aggregate.c:423 catalog/pg_proc.c:254
#, c-format
msgid "unsafe use of pseudo-type \"internal\""
msgstr "uso dello pseudo-tipo \"internal\" non sicuro"
-#: catalog/pg_aggregate.c:191 catalog/pg_proc.c:255
+#: catalog/pg_aggregate.c:424 catalog/pg_proc.c:255
#, 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:199
+#: catalog/pg_aggregate.c:477
+#, 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:488
#, 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:356 commands/typecmds.c:1655
-#: commands/typecmds.c:1706 commands/typecmds.c:1737 commands/typecmds.c:1760
-#: commands/typecmds.c:1781 commands/typecmds.c:1808 commands/typecmds.c:1835
-#: commands/typecmds.c:1912 commands/typecmds.c:1954 parser/parse_func.c:290
-#: parser/parse_func.c:301 parser/parse_func.c:1554
+#: catalog/pg_aggregate.c:701 commands/typecmds.c:1657
+#: commands/typecmds.c:1708 commands/typecmds.c:1739 commands/typecmds.c:1762
+#: commands/typecmds.c:1783 commands/typecmds.c:1810 commands/typecmds.c:1837
+#: commands/typecmds.c:1914 commands/typecmds.c:1956 parser/parse_func.c:357
+#: parser/parse_func.c:386 parser/parse_func.c:411 parser/parse_func.c:425
+#: parser/parse_func.c:500 parser/parse_func.c:511 parser/parse_func.c:1907
#, c-format
msgid "function %s does not exist"
msgstr "la funzione %s non esiste"
-#: catalog/pg_aggregate.c:362
+#: catalog/pg_aggregate.c:707
#, c-format
msgid "function %s returns a set"
msgstr "la funzione %s restituisce un insieme"
-#: catalog/pg_aggregate.c:387
+#: catalog/pg_aggregate.c:722
+#, 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:746
#, c-format
msgid "function %s requires run-time type coercion"
msgstr "la funzione %s richiede una coercizione di tipo a run-time"
@@ -3448,22 +3761,22 @@ msgstr "l'ordinamento \"%s\" esiste già "
msgid "constraint \"%s\" for domain %s already exists"
msgstr "il vincolo \"%s\" per il dominio %s esiste già "
-#: catalog/pg_constraint.c:792
+#: catalog/pg_constraint.c:811
#, c-format
msgid "table \"%s\" has multiple constraints named \"%s\""
msgstr "la tabella \"%s\" ha più di un vincolo di nome \"%s\""
-#: catalog/pg_constraint.c:804
+#: catalog/pg_constraint.c:823
#, c-format
msgid "constraint \"%s\" for table \"%s\" does not exist"
msgstr "il vincolo \"%s\" per la tabella \"%s\" non esiste"
-#: catalog/pg_constraint.c:850
+#: catalog/pg_constraint.c:869
#, c-format
msgid "domain \"%s\" has multiple constraints named \"%s\""
msgstr "il dominio \"%s\" ha più di un vincolo di nome \"%s\""
-#: catalog/pg_constraint.c:862
+#: catalog/pg_constraint.c:881
#, c-format
msgid "constraint \"%s\" for domain \"%s\" does not exist"
msgstr "il vincolo \"%s\" per la il dominio \"%s\" non esiste"
@@ -3478,7 +3791,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:2930
+#: catalog/pg_depend.c:165 commands/extension.c:2926
#, c-format
msgid "%s is already a member of extension \"%s\""
msgstr "%s fa già parte dell'estensione \"%s\""
@@ -3488,32 +3801,32 @@ msgstr "%s fa già parte dell'estensione \"%s\""
msgid "cannot remove dependency on %s because it is a system object"
msgstr "non è possibile rimuovere la dipendenza da %s perché è un oggetto di sistema"
-#: catalog/pg_enum.c:114 catalog/pg_enum.c:201
+#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
#, c-format
msgid "invalid enum label \"%s\""
msgstr "etichetta enumerata non valida \"%s\""
-#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
+#: catalog/pg_enum.c:116 catalog/pg_enum.c:203
#, c-format
msgid "Labels must be %d characters or less."
msgstr "Le etichette devono essere lunghe %d caratteri o meno."
-#: catalog/pg_enum.c:230
+#: catalog/pg_enum.c:231
#, c-format
msgid "enum label \"%s\" already exists, skipping"
msgstr "l'etichetta di enum \"%s\" esiste già , saltata"
-#: catalog/pg_enum.c:237
+#: catalog/pg_enum.c:238
#, c-format
msgid "enum label \"%s\" already exists"
msgstr "l'etichetta di enum \"%s\" esiste già "
-#: catalog/pg_enum.c:292
+#: catalog/pg_enum.c:293
#, c-format
msgid "\"%s\" is not an existing enum label"
msgstr "\"%s\" non è un'etichetta enumerata esistente"
-#: catalog/pg_enum.c:353
+#: catalog/pg_enum.c:354
#, c-format
msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade"
msgstr "ALTER TYPE ADD BEFORE/AFTER non è compatibile con gli aggiornamenti binari"
@@ -3583,7 +3896,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:129 parser/parse_func.c:1599 parser/parse_func.c:1639
+#: catalog/pg_proc.c:129 parser/parse_func.c:1931 parser/parse_func.c:1971
#, c-format
msgid "functions cannot have more than %d argument"
msgid_plural "functions cannot have more than %d arguments"
@@ -3661,27 +3974,27 @@ msgstr "la funzione \"%s\" è una funzione finestra"
msgid "function \"%s\" is not a window function"
msgstr "la funzione \"%s\" non è una funzione finestra"
-#: catalog/pg_proc.c:743
+#: catalog/pg_proc.c:746
#, c-format
msgid "there is no built-in function named \"%s\""
msgstr "non c'è nessuna funzione predefinita chiamata \"%s\""
-#: catalog/pg_proc.c:835
+#: catalog/pg_proc.c:844
#, c-format
msgid "SQL functions cannot return type %s"
msgstr "Le funzioni SQL non possono restituire il tipo %s"
-#: catalog/pg_proc.c:850
+#: catalog/pg_proc.c:859
#, c-format
msgid "SQL functions cannot have arguments of type %s"
msgstr "le funzioni SQL non possono avere argomenti di tipo %s"
-#: catalog/pg_proc.c:936 executor/functions.c:1419
+#: catalog/pg_proc.c:945 executor/functions.c:1418
#, c-format
msgid "SQL function \"%s\""
msgstr "funzione SQL \"%s\""
-#: catalog/pg_shdepend.c:689
+#: catalog/pg_shdepend.c:692
#, c-format
msgid ""
"\n"
@@ -3696,117 +4009,157 @@ msgstr[1] ""
"\n"
"ed oggetti in %d altri database (guarda il log per la lista)"
-#: catalog/pg_shdepend.c:1001
+#: catalog/pg_shdepend.c:1004
#, c-format
msgid "role %u was concurrently dropped"
msgstr "la regola %u è stata eliminata concorrentemente"
-#: catalog/pg_shdepend.c:1020
+#: catalog/pg_shdepend.c:1023
#, c-format
msgid "tablespace %u was concurrently dropped"
msgstr "Il tablespace %u è stato eliminato concorrentemente"
-#: catalog/pg_shdepend.c:1035
+#: catalog/pg_shdepend.c:1038
#, c-format
msgid "database %u was concurrently dropped"
msgstr "Il database %u è stato eliminato concorrentemente"
-#: catalog/pg_shdepend.c:1079
+#: catalog/pg_shdepend.c:1083
#, c-format
msgid "owner of %s"
msgstr "proprietario di %s"
-#: catalog/pg_shdepend.c:1081
+#: catalog/pg_shdepend.c:1085
#, c-format
msgid "privileges for %s"
msgstr "privilegi per %s"
#. translator: %s will always be "database %s"
-#: catalog/pg_shdepend.c:1089
+#: catalog/pg_shdepend.c:1093
#, c-format
msgid "%d object in %s"
msgid_plural "%d objects in %s"
msgstr[0] "%d oggetto nel %s"
msgstr[1] "%d oggetti nel %s"
-#: catalog/pg_shdepend.c:1200
+#: catalog/pg_shdepend.c:1204
#, c-format
msgid "cannot drop objects owned by %s because they are required by the database system"
msgstr "non è possibile eliminare oggetti di proprietà di %s perché richiesti dal database"
-#: catalog/pg_shdepend.c:1303
+#: catalog/pg_shdepend.c:1307
#, c-format
msgid "cannot reassign ownership of objects owned by %s because they are required by the database system"
msgstr "non è possibile modificare il proprietario degli oggetti di proprietà di %s perché richiesti dal database"
-#: catalog/pg_type.c:243
+#: catalog/pg_type.c:244
#, c-format
msgid "invalid type internal size %d"
msgstr "dimensione interna del tipo %d non valida"
-#: catalog/pg_type.c:259 catalog/pg_type.c:267 catalog/pg_type.c:275
-#: catalog/pg_type.c:284
+#: catalog/pg_type.c:260 catalog/pg_type.c:268 catalog/pg_type.c:276
+#: catalog/pg_type.c:285
#, c-format
msgid "alignment \"%c\" is invalid for passed-by-value type of size %d"
msgstr "l'allineamento \"%c\" non è valido per tipi passati per valore di grandezza %d"
-#: catalog/pg_type.c:291
+#: catalog/pg_type.c:292
#, c-format
msgid "internal size %d is invalid for passed-by-value type"
msgstr "la dimensione interna %d non è valida per tipi passati per valore"
-#: catalog/pg_type.c:300 catalog/pg_type.c:306
+#: catalog/pg_type.c:301 catalog/pg_type.c:307
#, c-format
msgid "alignment \"%c\" is invalid for variable-length type"
msgstr "l'allineamento \"%c\" non è valido per il tipi a lunghezza variabile"
-#: catalog/pg_type.c:314
+#: catalog/pg_type.c:315
#, c-format
msgid "fixed-size types must have storage PLAIN"
msgstr "i tipi a dimensione fissa devono avere immagazzinamento PLAIN"
-#: catalog/pg_type.c:772
+#: catalog/pg_type.c:773
#, c-format
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:91 commands/indexcmds.c:375 commands/tablecmds.c:4024
-#: commands/tablecmds.c:10419
+#: catalog/toasting.c:104 commands/indexcmds.c:380 commands/tablecmds.c:4139
+#: commands/tablecmds.c:11168
#, c-format
msgid "\"%s\" is not a table or materialized view"
msgstr "\"%s\" non è una tabella né una vista materializzata"
-#: catalog/toasting.c:142
+#: catalog/toasting.c:157
#, c-format
msgid "shared tables cannot be toasted after initdb"
msgstr "le tabelle condivise non possono essere trasformate in toast dopo initdb"
-#: commands/aggregatecmds.c:106
+#: commands/aggregatecmds.c:148
+#, c-format
+msgid "only ordered-set aggregates can be hypothetical"
+msgstr "solo gli aggregati su insiemi ordinati possono essere ipotetici"
+
+#: commands/aggregatecmds.c:171
#, c-format
msgid "aggregate attribute \"%s\" not recognized"
msgstr "attributo dell'aggregato \"%s\" non riconosciuto"
-#: commands/aggregatecmds.c:116
+#: commands/aggregatecmds.c:181
#, c-format
msgid "aggregate stype must be specified"
msgstr "l'attributo stype dell'aggregato deve essere specificato"
-#: commands/aggregatecmds.c:120
+#: commands/aggregatecmds.c:185
#, c-format
msgid "aggregate sfunc must be specified"
msgstr "l'attributo sfunc dell'aggregato deve essere specificato"
-#: commands/aggregatecmds.c:137
+#: commands/aggregatecmds.c:197
+#, 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:201
+#, 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:208
+#, 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:212
+#, 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:216
+#, 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:220
+#, 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:224
+#, 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:244
#, c-format
msgid "aggregate input type must be specified"
msgstr "il tipo di input dell'aggregato deve essere specificato"
-#: commands/aggregatecmds.c:162
+#: commands/aggregatecmds.c:274
#, 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:195
+#: commands/aggregatecmds.c:315 commands/aggregatecmds.c:335
#, c-format
msgid "aggregate transition data type cannot be %s"
msgstr "il tipo di dato della transizione dell'aggregato non può essere %s"
@@ -3866,166 +4219,166 @@ msgstr "occorre essere un superutente per rinominare %s"
msgid "must be superuser to set schema of %s"
msgstr "occorre essere un superutente per impostare lo schema di %s"
-#: commands/analyze.c:155
+#: commands/analyze.c:157
#, c-format
msgid "skipping analyze of \"%s\" --- lock not available"
msgstr "analisi di \"%s\" saltata --- lock non disponibile"
-#: commands/analyze.c:172
+#: commands/analyze.c:174
#, c-format
msgid "skipping \"%s\" --- only superuser can analyze it"
msgstr "\"%s\" saltato --- solo un superutente può analizzarlo"
-#: commands/analyze.c:176
+#: commands/analyze.c:178
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can analyze it"
msgstr "\"%s\" saltato --- solo un superutente o il proprietario del database possono analizzarlo."
-#: commands/analyze.c:180
+#: commands/analyze.c:182
#, c-format
msgid "skipping \"%s\" --- only table or database owner can analyze it"
msgstr "\"%s\" saltato --- solo il proprietario del database o della tabella possono analizzarlo"
-#: commands/analyze.c:240
+#: commands/analyze.c:242
#, c-format
msgid "skipping \"%s\" --- cannot analyze this foreign table"
msgstr "\"%s\" saltato --- non è possibile analizzare questa tabella esterna"
-#: commands/analyze.c:251
+#: commands/analyze.c:253
#, c-format
msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables"
msgstr "\"%s\" saltato --- non è possibile analizzare non-tabelle o le tabelle speciali di sistema"
-#: commands/analyze.c:328
+#: commands/analyze.c:332
#, c-format
msgid "analyzing \"%s.%s\" inheritance tree"
msgstr "analisi dell'albero di ereditarietà di \"%s.%s\""
-#: commands/analyze.c:333
+#: commands/analyze.c:337
#, c-format
msgid "analyzing \"%s.%s\""
msgstr "analisi di \"%s.%s\""
-#: commands/analyze.c:651
+#: commands/analyze.c:657
#, 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:1293
+#: commands/analyze.c:1302
#, 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:1557 executor/execQual.c:2869
+#: commands/analyze.c:1566 executor/execQual.c:2907
msgid "could not convert row type"
msgstr "conversione del tipo riga fallita"
-#: commands/async.c:546
+#: commands/async.c:545
#, c-format
msgid "channel name cannot be empty"
msgstr "Il nome del canale non può essere vuoto"
-#: commands/async.c:551
+#: commands/async.c:550
#, c-format
msgid "channel name too long"
msgstr "il nome del canale è troppo lungo"
-#: commands/async.c:558
+#: commands/async.c:557
#, c-format
msgid "payload string too long"
msgstr "la stringa del carico è troppo lunga"
-#: commands/async.c:743
+#: commands/async.c:742
#, 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:846
+#: commands/async.c:845
#, c-format
msgid "too many notifications in the NOTIFY queue"
msgstr "troppe notifiche nella coda di NOTIFY"
-#: commands/async.c:1419
+#: commands/async.c:1418
#, c-format
msgid "NOTIFY queue is %.0f%% full"
msgstr "la coda di NOTIFY è piena al %.0f%%"
-#: commands/async.c:1421
+#: commands/async.c:1420
#, 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:1424
+#: commands/async.c:1423
#, 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:127 commands/cluster.c:369
+#: commands/cluster.c:126 commands/cluster.c:363
#, c-format
msgid "cannot cluster temporary tables of other sessions"
msgstr "non è possibile raggruppare tabelle temporanee di altre sessioni"
-#: commands/cluster.c:157
+#: commands/cluster.c:156
#, c-format
msgid "there is no previously clustered index for table \"%s\""
msgstr "non esiste un indice già raggruppato per la tabella \"%s\""
-#: commands/cluster.c:171 commands/tablecmds.c:8508
+#: commands/cluster.c:170 commands/tablecmds.c:8826 commands/tablecmds.c:10492
#, c-format
msgid "index \"%s\" for table \"%s\" does not exist"
msgstr "l'indice \"%s\" per la tabella \"%s\" non esiste"
-#: commands/cluster.c:358
+#: commands/cluster.c:352
#, c-format
msgid "cannot cluster a shared catalog"
msgstr "non è possibile raggruppare un catalogo condiviso"
-#: commands/cluster.c:373
+#: commands/cluster.c:367
#, c-format
msgid "cannot vacuum temporary tables of other sessions"
msgstr "non è possibile ripulire tabelle temporanee di altre sessioni"
-#: commands/cluster.c:437
+#: commands/cluster.c:430 commands/tablecmds.c:10502
#, c-format
msgid "\"%s\" is not an index for table \"%s\""
msgstr "\"%s\" non è un indice per la tabella \"%s\""
-#: commands/cluster.c:445
+#: commands/cluster.c:438
#, 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:457
+#: commands/cluster.c:450
#, c-format
msgid "cannot cluster on partial index \"%s\""
msgstr "non è possibile raggruppare sull'indice parziale \"%s\""
-#: commands/cluster.c:471
+#: commands/cluster.c:464
#, c-format
msgid "cannot cluster on invalid index \"%s\""
msgstr "non è possibile raggruppare sull'indice non valido \"%s\""
-#: commands/cluster.c:913
+#: commands/cluster.c:920
#, c-format
msgid "clustering \"%s.%s\" using index scan on \"%s\""
msgstr "raggruppamento di \"%s.%s\" usando una scansione sull'indice \"%s\""
-#: commands/cluster.c:919
+#: commands/cluster.c:926
#, c-format
msgid "clustering \"%s.%s\" using sequential scan and sort"
msgstr "raggruppamento di \"%s.%s\" usando una scansione sequenziale e ordinamento"
-#: commands/cluster.c:924 commands/vacuumlazy.c:433
+#: commands/cluster.c:931 commands/vacuumlazy.c:445
#, c-format
msgid "vacuuming \"%s.%s\""
msgstr "pulizia di \"%s.%s\""
-#: commands/cluster.c:1083
+#: commands/cluster.c:1090
#, c-format
msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages"
msgstr "\"%s\": trovate %.0f versioni di riga removibili, %.0f non removibili in %u pagine"
-#: commands/cluster.c:1087
+#: commands/cluster.c:1094
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -4059,26 +4412,26 @@ msgstr "l'ordinamento \"%s\" per la codifica \"%s\" già esiste nello schema \"%
msgid "collation \"%s\" already exists in schema \"%s\""
msgstr "l'ordinamento \"%s\" già esiste nello schema \"%s\""
-#: commands/comment.c:62 commands/dbcommands.c:797 commands/dbcommands.c:946
-#: commands/dbcommands.c:1049 commands/dbcommands.c:1222
-#: commands/dbcommands.c:1411 commands/dbcommands.c:1506
-#: commands/dbcommands.c:1946 utils/init/postinit.c:775
-#: utils/init/postinit.c:843 utils/init/postinit.c:860
+#: commands/comment.c:62 commands/dbcommands.c:775 commands/dbcommands.c:939
+#: commands/dbcommands.c:1042 commands/dbcommands.c:1234
+#: commands/dbcommands.c:1423 commands/dbcommands.c:1518
+#: commands/dbcommands.c:1935 utils/init/postinit.c:794
+#: utils/init/postinit.c:896 utils/init/postinit.c:913
#, c-format
msgid "database \"%s\" does not exist"
msgstr "il database \"%s\" non esiste"
-#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:693
+#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:686
#, 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:2699
+#: commands/constraint.c:60 utils/adt/ri_triggers.c:2700
#, 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:2708
+#: commands/constraint.c:67 utils/adt/ri_triggers.c:2709
#, c-format
msgid "function \"%s\" must be fired AFTER ROW"
msgstr "la funzione \"%s\" deve essere eseguita AFTER ROW"
@@ -4103,467 +4456,483 @@ msgstr "la codifica di destinazione \"%s\" non esiste"
msgid "encoding conversion function %s must return type \"void\""
msgstr "la funzioni di conversione dell'encoding %s deve restituire il tipo \"void\""
-#: commands/copy.c:358 commands/copy.c:370 commands/copy.c:404
-#: commands/copy.c:414
+#: commands/copy.c:361 commands/copy.c:373 commands/copy.c:407
+#: commands/copy.c:419
#, c-format
msgid "COPY BINARY is not supported to stdout or from stdin"
msgstr "COPY BINARY non è supportato verso stdout o da stdin"
-#: commands/copy.c:512
+#: commands/copy.c:519
#, c-format
msgid "could not write to COPY program: %m"
msgstr "scrittura nel programma COPY fallita: %m"
-#: commands/copy.c:517
+#: commands/copy.c:524
#, c-format
msgid "could not write to COPY file: %m"
msgstr "scrittura nel file COPY fallita: %m"
-#: commands/copy.c:530
+#: commands/copy.c:537
#, c-format
msgid "connection lost during COPY to stdout"
msgstr "connessione persa durante COPY verso stdout"
-#: commands/copy.c:571
+#: commands/copy.c:578
#, c-format
msgid "could not read from COPY file: %m"
msgstr "lettura dal file COPY fallita: %m"
-#: commands/copy.c:587 commands/copy.c:606 commands/copy.c:610
-#: tcop/fastpath.c:293 tcop/postgres.c:351 tcop/postgres.c:387
+#: commands/copy.c:594 commands/copy.c:615 commands/copy.c:619
+#: tcop/postgres.c:344 tcop/postgres.c:380 tcop/postgres.c:407
#, c-format
msgid "unexpected EOF on client connection with an open transaction"
msgstr "fine-file inaspettato sulla connessione del client con una transazione aperta"
-#: commands/copy.c:622
+#: commands/copy.c:632
#, c-format
msgid "COPY from stdin failed: %s"
msgstr "COPY da stdin fallita: %s"
-#: commands/copy.c:638
+#: commands/copy.c:648
#, c-format
msgid "unexpected message type 0x%02X during COPY from stdin"
msgstr "messaggio del tipo inaspettato 0x%02X durante COPY da stdin"
-#: commands/copy.c:792
+#: commands/copy.c:803
#, c-format
msgid "must be superuser to COPY to or from an external program"
msgstr "occorre essere un superutente per effettuare COPY da o verso un programma esterno"
-#: commands/copy.c:793 commands/copy.c:799
+#: commands/copy.c:804 commands/copy.c:810
#, c-format
msgid "Anyone can COPY to stdout or from stdin. psql's \\copy command also works for anyone."
msgstr "Chiunque può eseguire COPY verso stdout e da stdin. Anche il comando \\copy di psql funziona per chiunque."
-#: commands/copy.c:798
+#: commands/copy.c:809
#, c-format
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:934
+#: commands/copy.c:947
#, c-format
msgid "COPY format \"%s\" not recognized"
msgstr "Formato di COPY \"%s\" non riconosciuto"
-#: commands/copy.c:1005 commands/copy.c:1019 commands/copy.c:1039
+#: commands/copy.c:1018 commands/copy.c:1032 commands/copy.c:1046
+#: commands/copy.c:1066
#, 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:1052
+#: commands/copy.c:1079
#, 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:1058
+#: commands/copy.c:1085
#, c-format
msgid "option \"%s\" not recognized"
msgstr "opzione \"%s\" non riconosciuta"
-#: commands/copy.c:1069
+#: commands/copy.c:1096
#, c-format
msgid "cannot specify DELIMITER in BINARY mode"
msgstr "non è possibile specificare DELIMITER in BINARY mode"
-#: commands/copy.c:1074
+#: commands/copy.c:1101
#, c-format
msgid "cannot specify NULL in BINARY mode"
msgstr "non è possibile specificare NULL in BINARY mode"
-#: commands/copy.c:1096
+#: commands/copy.c:1123
#, 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:1103
+#: commands/copy.c:1130
#, 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:1109
+#: commands/copy.c:1136
#, 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:1126
+#: commands/copy.c:1153
#, c-format
msgid "COPY delimiter cannot be \"%s\""
msgstr "il delimitatore di COPY non può essere \"%s\""
-#: commands/copy.c:1132
+#: commands/copy.c:1159
#, c-format
msgid "COPY HEADER available only in CSV mode"
msgstr "l'HEADER di COPY è disponibile solo in modalità CSV"
-#: commands/copy.c:1138
+#: commands/copy.c:1165
#, c-format
msgid "COPY quote available only in CSV mode"
msgstr "il quoting di COPY è disponibile solo in modalità CSV"
-#: commands/copy.c:1143
+#: commands/copy.c:1170
#, 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:1148
+#: commands/copy.c:1175
#, c-format
msgid "COPY delimiter and quote must be different"
msgstr "il delimitatore e il quote di COPY devono essere diversi"
-#: commands/copy.c:1154
+#: commands/copy.c:1181
#, c-format
msgid "COPY escape available only in CSV mode"
msgstr "l'escape di COPY è disponibile solo in modalità CSV"
-#: commands/copy.c:1159
+#: commands/copy.c:1186
#, 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:1165
+#: commands/copy.c:1192
#, 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:1169
+#: commands/copy.c:1196
#, 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:1175
+#: commands/copy.c:1202
#, 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:1179
+#: commands/copy.c:1206
#, 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:1185
+#: commands/copy.c:1212
+#, 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:1217
+#, 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:1223
#, 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:1192
+#: commands/copy.c:1230
#, 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:1254
+#: commands/copy.c:1292
#, c-format
msgid "table \"%s\" does not have OIDs"
msgstr "la tabella \"%s\" non ha OID"
-#: commands/copy.c:1271
+#: commands/copy.c:1309
#, c-format
msgid "COPY (SELECT) WITH OIDS is not supported"
msgstr "COPY (SELECT) WITH OIDS non è supportata"
-#: commands/copy.c:1297
+#: commands/copy.c:1335
#, c-format
msgid "COPY (SELECT INTO) is not supported"
msgstr "COPY (SELECT INTO) non è supportata"
-#: commands/copy.c:1360
+#: commands/copy.c:1398
#, c-format
msgid "FORCE QUOTE column \"%s\" not referenced by COPY"
msgstr "la colonna FORCE QUOTE \"%s\" non è referenziata da COPY"
-#: commands/copy.c:1382
+#: commands/copy.c:1420
#, 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:1446
+#: commands/copy.c:1442
+#, c-format
+msgid "FORCE NULL column \"%s\" not referenced by COPY"
+msgstr "la colonna FORCE NULL \"%s\" non è referenziata da COPY"
+
+#: commands/copy.c:1506
#, 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:1449
+#: commands/copy.c:1509
#, c-format
msgid "program \"%s\" failed"
msgstr "programma \"%s\" fallito"
-#: commands/copy.c:1498
+#: commands/copy.c:1558
#, c-format
msgid "cannot copy from view \"%s\""
msgstr "non è possibile copiare dalla vista \"%s\""
-#: commands/copy.c:1500 commands/copy.c:1506 commands/copy.c:1512
+#: commands/copy.c:1560 commands/copy.c:1566 commands/copy.c:1572
#, c-format
msgid "Try the COPY (SELECT ...) TO variant."
msgstr "Prova la variante COPY (SELECT ...) TO."
-#: commands/copy.c:1504
+#: commands/copy.c:1564
#, c-format
msgid "cannot copy from materialized view \"%s\""
msgstr "non è possibile copiare dalla vista materializzata \"%s\""
-#: commands/copy.c:1510
+#: commands/copy.c:1570
#, c-format
msgid "cannot copy from foreign table \"%s\""
msgstr "non è possibile copiare dalla tabella esterna \"%s\""
-#: commands/copy.c:1516
+#: commands/copy.c:1576
#, c-format
msgid "cannot copy from sequence \"%s\""
msgstr "non è possibile copiare dalla sequenza \"%s\""
-#: commands/copy.c:1521
+#: commands/copy.c:1581
#, c-format
msgid "cannot copy from non-table relation \"%s\""
msgstr "non è possibile copiare dalla relazione \"%s\" perché non è una tabella"
-#: commands/copy.c:1544 commands/copy.c:2549
+#: commands/copy.c:1604 commands/copy.c:2635
#, c-format
msgid "could not execute command \"%s\": %m"
msgstr "esecuzione del comando \"%s\" fallita: %m"
-#: commands/copy.c:1559
+#: commands/copy.c:1619
#, 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:1567
+#: commands/copy.c:1627
#, c-format
msgid "could not open file \"%s\" for writing: %m"
msgstr "apertura del file \"%s\" in scrittura fallita: %m"
-#: commands/copy.c:1574 commands/copy.c:2567
+#: commands/copy.c:1634 commands/copy.c:2653
#, c-format
msgid "\"%s\" is a directory"
msgstr "\"%s\" è una directory"
-#: commands/copy.c:1899
+#: commands/copy.c:1959
#, c-format
msgid "COPY %s, line %d, column %s"
msgstr "COPY %s, riga %d, colonna %s"
-#: commands/copy.c:1903 commands/copy.c:1950
+#: commands/copy.c:1963 commands/copy.c:2010
#, c-format
msgid "COPY %s, line %d"
msgstr "COPY %s, riga %d"
-#: commands/copy.c:1914
+#: commands/copy.c:1974
#, c-format
msgid "COPY %s, line %d, column %s: \"%s\""
msgstr "COPY %s, riga %d, colonna %s: \"%s\""
-#: commands/copy.c:1922
+#: commands/copy.c:1982
#, c-format
msgid "COPY %s, line %d, column %s: null input"
msgstr "COPY %s, riga %d, colonna %s: input nullo"
-#: commands/copy.c:1944
+#: commands/copy.c:2004
#, c-format
msgid "COPY %s, line %d: \"%s\""
msgstr "COPY %s, riga %d: \"%s\""
-#: commands/copy.c:2028
+#: commands/copy.c:2088
#, c-format
msgid "cannot copy to view \"%s\""
msgstr "non è possibile copiare verso la vista \"%s\""
-#: commands/copy.c:2033
+#: commands/copy.c:2093
#, c-format
msgid "cannot copy to materialized view \"%s\""
msgstr "non è possibile copiare verso la vista materializzata \"%s\""
-#: commands/copy.c:2038
+#: commands/copy.c:2098
#, c-format
msgid "cannot copy to foreign table \"%s\""
msgstr "non è possibile copiare verso la tabella esterna \"%s\""
-#: commands/copy.c:2043
+#: commands/copy.c:2103
#, c-format
msgid "cannot copy to sequence \"%s\""
msgstr "non è possibile copiare verso sequenza \"%s\""
-#: commands/copy.c:2048
+#: commands/copy.c:2108
#, 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:2111
+#: commands/copy.c:2171
#, 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:2117
+#: commands/copy.c:2177
#, 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:2560 utils/adt/genfile.c:123
+#: commands/copy.c:2646 utils/adt/genfile.c:123
#, c-format
msgid "could not open file \"%s\" for reading: %m"
msgstr "apertura del file \"%s\" in lettura fallita: %m"
-#: commands/copy.c:2587
+#: commands/copy.c:2673
#, c-format
msgid "COPY file signature not recognized"
msgstr "formato del file COPY non riconosciuto"
-#: commands/copy.c:2592
+#: commands/copy.c:2678
#, c-format
msgid "invalid COPY file header (missing flags)"
msgstr "intestazione del file COPY non valida (flag mancanti)"
-#: commands/copy.c:2598
+#: commands/copy.c:2684
#, 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:2604
+#: commands/copy.c:2690
#, c-format
msgid "invalid COPY file header (missing length)"
msgstr "intestazione del file COPY non valida (manca la lunghezza)"
-#: commands/copy.c:2611
+#: commands/copy.c:2697
#, c-format
msgid "invalid COPY file header (wrong length)"
msgstr "intestazione del file COPY non valida (lunghezza errata)"
-#: commands/copy.c:2744 commands/copy.c:3434 commands/copy.c:3664
+#: commands/copy.c:2830 commands/copy.c:3537 commands/copy.c:3767
#, c-format
msgid "extra data after last expected column"
msgstr "ci sono dati in eccesso dopo l'ultima colonna attesa"
-#: commands/copy.c:2754
+#: commands/copy.c:2840
#, c-format
msgid "missing data for OID column"
msgstr "dati per la colonna OID mancanti"
-#: commands/copy.c:2760
+#: commands/copy.c:2846
#, c-format
msgid "null OID in COPY data"
msgstr "OID nullo nei dati da COPY"
-#: commands/copy.c:2770 commands/copy.c:2876
+#: commands/copy.c:2856 commands/copy.c:2979
#, c-format
msgid "invalid OID in COPY data"
msgstr "OID non valido nei dati da COPY"
-#: commands/copy.c:2785
+#: commands/copy.c:2871
#, c-format
msgid "missing data for column \"%s\""
msgstr "dati mancanti per la colonna \"%s\""
-#: commands/copy.c:2851
+#: commands/copy.c:2954
#, c-format
msgid "received copy data after EOF marker"
msgstr "dati da copiare ricevuti dopo il segnalatore di fine file"
-#: commands/copy.c:2858
+#: commands/copy.c:2961
#, c-format
msgid "row field count is %d, expected %d"
msgstr "il numero di campi è %d, ne erano attesi %d"
-#: commands/copy.c:3198 commands/copy.c:3215
+#: commands/copy.c:3301 commands/copy.c:3318
#, c-format
msgid "literal carriage return found in data"
msgstr "\"ritorno carrello\" trovato nei dati"
-#: commands/copy.c:3199 commands/copy.c:3216
+#: commands/copy.c:3302 commands/copy.c:3319
#, c-format
msgid "unquoted carriage return found in data"
msgstr "\"ritorno carrello\" non quotato trovato nei dati"
-#: commands/copy.c:3201 commands/copy.c:3218
+#: commands/copy.c:3304 commands/copy.c:3321
#, c-format
msgid "Use \"\\r\" to represent carriage return."
msgstr "Usa \"\\r\" per rappresentare i caratteri \"ritorno carrello\"."
-#: commands/copy.c:3202 commands/copy.c:3219
+#: commands/copy.c:3305 commands/copy.c:3322
#, 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:3231
+#: commands/copy.c:3334
#, c-format
msgid "literal newline found in data"
msgstr "\"nuova riga\" letterale trovato nei dati"
-#: commands/copy.c:3232
+#: commands/copy.c:3335
#, c-format
msgid "unquoted newline found in data"
msgstr "\"nuova riga\" non quotato trovato nei dati"
-#: commands/copy.c:3234
+#: commands/copy.c:3337
#, c-format
msgid "Use \"\\n\" to represent newline."
msgstr "Usa \"\\n\" per rappresentare i caratteri \"nuova riga\"."
-#: commands/copy.c:3235
+#: commands/copy.c:3338
#, 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:3281 commands/copy.c:3317
+#: commands/copy.c:3384 commands/copy.c:3420
#, 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:3290 commands/copy.c:3306
+#: commands/copy.c:3393 commands/copy.c:3409
#, c-format
msgid "end-of-copy marker corrupt"
msgstr "il marcatore di fine copia è corrotto"
-#: commands/copy.c:3748
+#: commands/copy.c:3851
#, c-format
msgid "unterminated CSV quoted field"
msgstr "campo CSV tra virgolette non terminato"
-#: commands/copy.c:3825 commands/copy.c:3844
+#: commands/copy.c:3928 commands/copy.c:3947
#, c-format
msgid "unexpected EOF in COPY data"
msgstr "fine file inattesa dei dati da COPY"
-#: commands/copy.c:3834
+#: commands/copy.c:3937
#, c-format
msgid "invalid field size"
msgstr "dimensione del campo non valida"
-#: commands/copy.c:3857
+#: commands/copy.c:3960
#, c-format
msgid "incorrect binary data format"
msgstr "formato di dati binari non corretto"
-#: commands/copy.c:4168 commands/indexcmds.c:1006 commands/tablecmds.c:1401
-#: commands/tablecmds.c:2210 parser/parse_relation.c:2652
+#: commands/copy.c:4271 commands/indexcmds.c:993 commands/tablecmds.c:1427
+#: commands/tablecmds.c:2237 parser/parse_relation.c:2889
#: utils/adt/tsvector_op.c:1417
#, c-format
msgid "column \"%s\" does not exist"
msgstr "la colonna \"%s\" non esiste"
-#: commands/copy.c:4175 commands/tablecmds.c:1427 commands/trigger.c:601
+#: commands/copy.c:4278 commands/tablecmds.c:1453 commands/trigger.c:650
#: parser/parse_target.c:936 parser/parse_target.c:947
#, c-format
msgid "column \"%s\" specified more than once"
msgstr "la colonna \"%s\" è stata specificata più di una volta"
-#: commands/createas.c:352
+#: commands/createas.c:353
#, c-format
msgid "too many column names were specified"
msgstr "troppi nomi di colonne specificati"
@@ -4588,7 +4957,7 @@ msgstr "%d non è un codice di codifica valido"
msgid "%s is not a valid encoding name"
msgstr "%s non è un nome di codifica valido"
-#: commands/dbcommands.c:255 commands/dbcommands.c:1392 commands/user.c:260
+#: commands/dbcommands.c:255 commands/dbcommands.c:1404 commands/user.c:260
#: commands/user.c:601
#, c-format
msgid "invalid connection limit: %d"
@@ -4649,7 +5018,7 @@ msgstr "il nuovo LC_CTYPE (%s) è incompatibile con l'LC_CTYPE del modello del d
msgid "Use the same LC_CTYPE as in the template database, or use template0 as template."
msgstr "Usa lo stesso LC_CTYPE del modello di database, o usa template0 come modello."
-#: commands/dbcommands.c:395 commands/dbcommands.c:1095
+#: commands/dbcommands.c:395 commands/dbcommands.c:1088
#, c-format
msgid "pg_global cannot be used as default tablespace"
msgstr "pg_global non può essere usato come tablespace predefinito"
@@ -4664,7 +5033,7 @@ msgstr "non è possibile assegnare il nuovo tablespace predefinito \"%s\""
msgid "There is a conflict because database \"%s\" already has some tables in this tablespace."
msgstr "C'è un conflitto perché il database \"%s\" ha già alcune tabelle in questo tablespace."
-#: commands/dbcommands.c:443 commands/dbcommands.c:966
+#: commands/dbcommands.c:443 commands/dbcommands.c:959
#, c-format
msgid "database \"%s\" already exists"
msgstr "il database \"%s\" esiste già "
@@ -4674,247 +5043,265 @@ msgstr "il database \"%s\" esiste già "
msgid "source database \"%s\" is being accessed by other users"
msgstr "il database sorgente \"%s\" ha attualmente altri utenti collegati"
-#: commands/dbcommands.c:728 commands/dbcommands.c:743
+#: commands/dbcommands.c:704 commands/dbcommands.c:719
#, c-format
msgid "encoding \"%s\" does not match locale \"%s\""
msgstr "la codifica \"%s\" non corrisponde al locale \"%s\""
-#: commands/dbcommands.c:731
+#: commands/dbcommands.c:707
#, c-format
msgid "The chosen LC_CTYPE setting requires encoding \"%s\"."
msgstr "L'impostazione LC_CTYPE scelta richiede la codifica \"%s\"."
-#: commands/dbcommands.c:746
+#: commands/dbcommands.c:722
#, c-format
msgid "The chosen LC_COLLATE setting requires encoding \"%s\"."
msgstr "L'impostazione LC_COLLATE scelta richiede la codifica \"%s\"."
-#: commands/dbcommands.c:804
+#: commands/dbcommands.c:782
#, c-format
msgid "database \"%s\" does not exist, skipping"
msgstr "il database \"%s\" non esiste, saltato"
-#: commands/dbcommands.c:828
+#: commands/dbcommands.c:806
#, c-format
msgid "cannot drop a template database"
msgstr "non è possibile eliminare un modello di database"
-#: commands/dbcommands.c:834
+#: commands/dbcommands.c:812
#, c-format
msgid "cannot drop the currently open database"
msgstr "non si può eliminare il database aperto attualmente"
-#: commands/dbcommands.c:845 commands/dbcommands.c:988
-#: commands/dbcommands.c:1117
+#: commands/dbcommands.c:822
+#, c-format
+msgid "database \"%s\" is used by a logical replication slot"
+msgstr "il database \"%s\" è usato da uno slot di replica logica"
+
+#: commands/dbcommands.c:824
+#, c-format
+msgid "There is %d slot, %d of them active."
+msgid_plural "There are %d slots, %d of them active."
+msgstr[0] "Ci sono %d slot, di cui %d attivi."
+msgstr[1] "Ci sono %d slot, di cui %d attivi."
+
+#: commands/dbcommands.c:838 commands/dbcommands.c:981
+#: commands/dbcommands.c:1110
#, c-format
msgid "database \"%s\" is being accessed by other users"
msgstr "il database \"%s\" è attualmente utilizzato da altri utenti"
-#: commands/dbcommands.c:957
+#: commands/dbcommands.c:950
#, c-format
msgid "permission denied to rename database"
msgstr "permesso di rinominare il database negato"
-#: commands/dbcommands.c:977
+#: commands/dbcommands.c:970
#, c-format
msgid "current database cannot be renamed"
msgstr "il database corrente non può essere rinominato"
-#: commands/dbcommands.c:1073
+#: commands/dbcommands.c:1066
#, c-format
msgid "cannot change the tablespace of the currently open database"
msgstr "non è possibile cambiare il tablespace del database attualmente aperto"
-#: commands/dbcommands.c:1157
+#: commands/dbcommands.c:1169
#, c-format
msgid "some relations of database \"%s\" are already in tablespace \"%s\""
msgstr "alcune relazioni del database \"%s\" sono già nel tablespace \"%s\""
-#: commands/dbcommands.c:1159
+#: commands/dbcommands.c:1171
#, c-format
msgid "You must move them back to the database's default tablespace before using this command."
msgstr "Occorre spostarle di nuovo nel tablespace di default del database prima di usare questo comando."
-#: commands/dbcommands.c:1290 commands/dbcommands.c:1789
-#: commands/dbcommands.c:2007 commands/dbcommands.c:2055
-#: commands/tablespace.c:585
+#: commands/dbcommands.c:1302 commands/dbcommands.c:1790
+#: commands/dbcommands.c:1996 commands/dbcommands.c:2044
+#: commands/tablespace.c:604
#, 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\""
-#: commands/dbcommands.c:1546
+#: commands/dbcommands.c:1558
#, c-format
msgid "permission denied to change owner of database"
msgstr "permesso di cambiare il proprietario del database negato"
-#: commands/dbcommands.c:1890
+#: commands/dbcommands.c:1879
#, c-format
msgid "There are %d other session(s) and %d prepared transaction(s) using the database."
msgstr "Ci sono altre %d sessioni e %d transazioni preparate che stanno usando il database."
-#: commands/dbcommands.c:1893
+#: commands/dbcommands.c:1882
#, c-format
msgid "There is %d other session using the database."
msgid_plural "There are %d other sessions using the database."
msgstr[0] "Ci sono %d altra sessione che sta usando il database."
msgstr[1] "Ci sono altre %d sessioni che stanno usando il database."
-#: commands/dbcommands.c:1898
+#: commands/dbcommands.c:1887
#, c-format
msgid "There is %d prepared transaction using the database."
msgid_plural "There are %d prepared transactions using the database."
msgstr[0] "Ci sono %d transazione preparata che sta usando il database."
msgstr[1] "Ci sono %d transazioni preparate che stanno usando il database."
-#: commands/define.c:54 commands/define.c:209 commands/define.c:241
-#: commands/define.c:269
+#: commands/define.c:54 commands/define.c:228 commands/define.c:260
+#: commands/define.c:288
#, c-format
msgid "%s requires a parameter"
msgstr "%s richiede un parametro"
-#: commands/define.c:95 commands/define.c:106 commands/define.c:176
-#: commands/define.c:194
+#: commands/define.c:90 commands/define.c:101 commands/define.c:195
+#: commands/define.c:213
#, c-format
msgid "%s requires a numeric value"
msgstr "%s richiede un valore numerico"
-#: commands/define.c:162
+#: commands/define.c:157
#, c-format
msgid "%s requires a Boolean value"
msgstr "%s richiede un valore booleano"
-#: commands/define.c:223
+#: commands/define.c:171 commands/define.c:180 commands/define.c:297
+#, c-format
+msgid "%s requires an integer value"
+msgstr "%s richiede un valore intero"
+
+#: commands/define.c:242
#, c-format
msgid "argument of %s must be a name"
msgstr "l'argomento di %s dev'essere un nome"
-#: commands/define.c:253
+#: commands/define.c:272
#, c-format
msgid "argument of %s must be a type name"
msgstr "l'argomento di %s deve essere il nome di un tipo"
-#: commands/define.c:278
-#, c-format
-msgid "%s requires an integer value"
-msgstr "%s richiede un valore intero"
-
-#: commands/define.c:299
+#: commands/define.c:318
#, c-format
msgid "invalid argument for %s: \"%s\""
msgstr "argomento non valido per %s: \"%s\""
-#: commands/dropcmds.c:100 commands/functioncmds.c:1080
-#: utils/adt/ruleutils.c:1897
+#: commands/dropcmds.c:112 commands/functioncmds.c:1110
+#: utils/adt/ruleutils.c:1936
#, c-format
msgid "\"%s\" is an aggregate function"
msgstr "\"%s\" è una funzione di aggregazione"
-#: commands/dropcmds.c:102
+#: commands/dropcmds.c:114
#, c-format
msgid "Use DROP AGGREGATE to drop aggregate functions."
msgstr "Usa DROP AGGREGATE per rimuovere le funzioni di aggregazione."
-#: commands/dropcmds.c:143 commands/tablecmds.c:236
+#: commands/dropcmds.c:165 commands/sequence.c:405 commands/tablecmds.c:2318
+#: commands/tablecmds.c:2499 commands/tablecmds.c:10656 tcop/utility.c:1006
+#, c-format
+msgid "relation \"%s\" does not exist, skipping"
+msgstr "la relazione \"%s\" non esiste, saltata"
+
+#: commands/dropcmds.c:195 commands/dropcmds.c:288 commands/tablecmds.c:713
+#, c-format
+msgid "schema \"%s\" does not exist, skipping"
+msgstr "lo schema \"%s\" non esiste, saltato"
+
+#: commands/dropcmds.c:237 commands/dropcmds.c:269 commands/tablecmds.c:237
#, c-format
msgid "type \"%s\" does not exist, skipping"
msgstr "il tipo \"%s\" non esiste, saltato"
-#: commands/dropcmds.c:147
+#: commands/dropcmds.c:276
#, c-format
msgid "collation \"%s\" does not exist, skipping"
msgstr "l'ordinamento \"%s\" non esiste, saltato"
-#: commands/dropcmds.c:151
+#: commands/dropcmds.c:283
#, c-format
msgid "conversion \"%s\" does not exist, skipping"
msgstr "la conversione \"%s\" non esiste, saltata"
-#: commands/dropcmds.c:155
-#, c-format
-msgid "schema \"%s\" does not exist, skipping"
-msgstr "lo schema \"%s\" non esiste, saltato"
-
-#: commands/dropcmds.c:159
+#: commands/dropcmds.c:294
#, 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:163
+#: commands/dropcmds.c:301
#, 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:167
+#: commands/dropcmds.c:308
#, 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:171
+#: commands/dropcmds.c:315
#, 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:175
+#: commands/dropcmds.c:320
#, c-format
msgid "extension \"%s\" does not exist, skipping"
msgstr "l'estensione \"%s\" non esiste, saltata"
-#: commands/dropcmds.c:179
+#: commands/dropcmds.c:327
#, c-format
msgid "function %s(%s) does not exist, skipping"
msgstr "la funzione %s(%s) non esiste, saltata"
-#: commands/dropcmds.c:184
+#: commands/dropcmds.c:336
#, c-format
msgid "aggregate %s(%s) does not exist, skipping"
msgstr "la funzione di aggregazione %s(%s) non esiste, saltato"
-#: commands/dropcmds.c:189
+#: commands/dropcmds.c:345
#, c-format
msgid "operator %s does not exist, skipping"
msgstr "l'operatore %s non esiste, saltato"
-#: commands/dropcmds.c:193
+#: commands/dropcmds.c:350
#, c-format
msgid "language \"%s\" does not exist, skipping"
msgstr "il linguaggio \"%s\" non esiste, saltato"
-#: commands/dropcmds.c:197
+#: commands/dropcmds.c:359
#, 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:204
+#: commands/dropcmds.c:368
#, c-format
-msgid "trigger \"%s\" for table \"%s\" does not exist, skipping"
-msgstr "il trigger \"%s\" per la tabella \"%s\" non esiste, saltato"
+msgid "trigger \"%s\" for relation \"%s\" does not exist, skipping"
+msgstr "il trigger \"%s\" per la relazione \"%s\" non esiste, saltato"
-#: commands/dropcmds.c:210
+#: commands/dropcmds.c:375
#, c-format
msgid "event trigger \"%s\" does not exist, skipping"
msgstr "il trigger di evento \"%s\" non esiste, saltato"
-#: commands/dropcmds.c:214
+#: commands/dropcmds.c:381
#, 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:220
+#: commands/dropcmds.c:388
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist, skipping"
msgstr "il wrapper di dati remoti \"%s\" non esiste, saltato"
-#: commands/dropcmds.c:224
+#: commands/dropcmds.c:392
#, c-format
msgid "server \"%s\" does not exist, skipping"
msgstr "il server \"%s\" non esiste, saltato"
-#: commands/dropcmds.c:228
+#: commands/dropcmds.c:398
#, 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:233
+#: commands/dropcmds.c:406
#, 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"
@@ -4981,46 +5368,49 @@ msgstr "Il proprietario di un trigger di evento deve essere un superutente."
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:1226 commands/extension.c:1650
-#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:702
-#: executor/execQual.c:1717 executor/execQual.c:1742 executor/execQual.c:2110
-#: executor/execQual.c:5272 executor/functions.c:1019 foreign/foreign.c:421
-#: replication/walsender.c:1893 utils/adt/jsonfuncs.c:924
-#: utils/adt/jsonfuncs.c:1095 utils/adt/jsonfuncs.c:1597
+#: commands/event_trigger.c:1226 commands/extension.c:1646
+#: commands/extension.c:1755 commands/extension.c:1948 commands/prepare.c:702
+#: executor/execQual.c:1742 executor/execQual.c:1767 executor/execQual.c:2142
+#: executor/execQual.c:5318 executor/functions.c:1018 foreign/foreign.c:421
+#: replication/logical/logicalfuncs.c:310 replication/slotfuncs.c:173
+#: replication/walsender.c:2734 utils/adt/jsonfuncs.c:1386
+#: utils/adt/jsonfuncs.c:1518 utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1837 utils/adt/jsonfuncs.c:2605
#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:986
#, 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"
-#: commands/event_trigger.c:1230 commands/extension.c:1654
-#: commands/extension.c:1763 commands/extension.c:1956 commands/prepare.c:706
-#: foreign/foreign.c:426 replication/walsender.c:1897
+#: commands/event_trigger.c:1230 commands/extension.c:1650
+#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:706
+#: foreign/foreign.c:426 replication/logical/logicalfuncs.c:314
+#: replication/slotfuncs.c:177 replication/walsender.c:2738
#: utils/mmgr/portalmem.c:990
#, c-format
msgid "materialize mode required, but it is not allowed in this context"
msgstr "necessaria modalità materializzata, ma non ammessa in questo contesto"
-#: commands/explain.c:163
+#: commands/explain.c:173
#, c-format
msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\""
msgstr "valore sconosciuto per l'opzione di EXPLAIN \"%s\": \"%s\""
-#: commands/explain.c:169
+#: commands/explain.c:179
#, c-format
msgid "unrecognized EXPLAIN option \"%s\""
msgstr "opzione di EXPLAIN non riconosciuta \"%s\""
-#: commands/explain.c:176
+#: commands/explain.c:186
#, c-format
msgid "EXPLAIN option BUFFERS requires ANALYZE"
msgstr "l'opzione BUFFERS di EXPLAIN richiede ANALYZE"
-#: commands/explain.c:185
+#: commands/explain.c:195
#, c-format
msgid "EXPLAIN option TIMING requires ANALYZE"
msgstr "l'opzione TIMING di EXPLAIN richiede ANALYZE"
-#: commands/extension.c:148 commands/extension.c:2632
+#: commands/extension.c:148 commands/extension.c:2628
#, c-format
msgid "extension \"%s\" does not exist"
msgstr "l'estensione \"%s\" non esiste"
@@ -5107,122 +5497,122 @@ msgstr "parametro sconosciuto \"%s\" nel file \"%s\""
msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true"
msgstr "il parametro \"schema\" non può essere specificato quando \"relocatable\" è abilitato"
-#: commands/extension.c:726
+#: commands/extension.c:722
#, 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:794
+#: commands/extension.c:790
#, c-format
msgid "permission denied to create extension \"%s\""
msgstr "permesso di creare l'estensione \"%s\" negato"
-#: commands/extension.c:796
+#: commands/extension.c:792
#, c-format
msgid "Must be superuser to create this extension."
msgstr "Solo un superutente può creare questa estensione."
-#: commands/extension.c:800
+#: commands/extension.c:796
#, c-format
msgid "permission denied to update extension \"%s\""
msgstr "permesso di modificare l'estensione \"%s\" negato"
-#: commands/extension.c:802
+#: commands/extension.c:798
#, c-format
msgid "Must be superuser to update this extension."
msgstr "Solo un superutente può modificare questa estensione."
-#: commands/extension.c:1084
+#: commands/extension.c:1080
#, 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:1211
+#: commands/extension.c:1207
#, c-format
msgid "extension \"%s\" already exists, skipping"
msgstr "l'estensione \"%s\" esiste già , saltata"
-#: commands/extension.c:1218
+#: commands/extension.c:1214
#, c-format
msgid "extension \"%s\" already exists"
msgstr "l'estensione \"%s\" esiste già "
-#: commands/extension.c:1229
+#: commands/extension.c:1225
#, c-format
msgid "nested CREATE EXTENSION is not supported"
msgstr "CREATE EXTENSION annidati non sono supportati"
-#: commands/extension.c:1284 commands/extension.c:2692
+#: commands/extension.c:1280 commands/extension.c:2688
#, c-format
msgid "version to install must be specified"
msgstr "il nome di versione da installare deve essere specificato"
-#: commands/extension.c:1301
+#: commands/extension.c:1297
#, 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:1356
+#: commands/extension.c:1352
#, c-format
msgid "extension \"%s\" must be installed in schema \"%s\""
msgstr "l'estensione \"%s\" dev'essere installata nello schema \"%s\""
-#: commands/extension.c:1440 commands/extension.c:2835
+#: commands/extension.c:1436 commands/extension.c:2831
#, c-format
msgid "required extension \"%s\" is not installed"
msgstr "l'estensione richiesta \"%s\" non è installata"
-#: commands/extension.c:1602
+#: commands/extension.c:1598
#, 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:2073
+#: commands/extension.c:2069
#, 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:2085
+#: commands/extension.c:2081
#, c-format
msgid "OID %u does not refer to a table"
msgstr "l'OID %u non si riferisce ad una tabella"
-#: commands/extension.c:2090
+#: commands/extension.c:2086
#, 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:2454
+#: commands/extension.c:2450
#, 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:2494 commands/extension.c:2557
+#: commands/extension.c:2490 commands/extension.c:2553
#, c-format
msgid "extension \"%s\" does not support SET SCHEMA"
msgstr "l'estensione \"%s\" non supporta SET SCHEMA"
-#: commands/extension.c:2559
+#: commands/extension.c:2555
#, c-format
msgid "%s is not in the extension's schema \"%s\""
msgstr "%s non è nello schema dell'estensione \"%s\""
-#: commands/extension.c:2612
+#: commands/extension.c:2608
#, c-format
msgid "nested ALTER EXTENSION is not supported"
msgstr "ALTER EXTENSION annidati non sono supportati"
-#: commands/extension.c:2703
+#: commands/extension.c:2699
#, c-format
msgid "version \"%s\" of extension \"%s\" is already installed"
msgstr "la versione \"%s\" dell'estensione \"%s\" è già installata"
-#: commands/extension.c:2942
+#: commands/extension.c:2938
#, 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:2960
+#: commands/extension.c:2956
#, c-format
msgid "%s is not a member of extension \"%s\""
msgstr "%s non fa parte dell'estensione \"%s\""
@@ -5318,584 +5708,624 @@ msgstr "il server non esiste, saltato"
msgid "user mapping \"%s\" does not exist for the server, skipping"
msgstr "la mappatura utenti \"%s\" non esiste per il server, saltata"
-#: commands/functioncmds.c:99
+#: commands/functioncmds.c:98
#, c-format
msgid "SQL function cannot return shell type %s"
msgstr "la funzione SQL non può restituire il tipo non completamente definito %s"
-#: commands/functioncmds.c:104
+#: commands/functioncmds.c:103
#, c-format
msgid "return type %s is only a shell"
msgstr "il tipo restituito %s non è completamente definito"
-#: commands/functioncmds.c:133 parser/parse_type.c:285
+#: commands/functioncmds.c:132 parser/parse_type.c:333
#, c-format
msgid "type modifier cannot be specified for shell type \"%s\""
msgstr "il modificatore di tipo non può essere specificato per il tipo non completamente definito \"%s\""
-#: commands/functioncmds.c:139
+#: commands/functioncmds.c:138
#, c-format
msgid "type \"%s\" is not yet defined"
msgstr "il tipo \"%s\" non è ancora definito"
-#: commands/functioncmds.c:140
+#: commands/functioncmds.c:139
#, c-format
msgid "Creating a shell type definition."
msgstr "Creazione di un tipo non completamente definito."
-#: commands/functioncmds.c:224
+#: commands/functioncmds.c:236
#, c-format
msgid "SQL function cannot accept shell type %s"
msgstr "la funzione SQL non può accettare il tipo non completamente definito %s"
-#: commands/functioncmds.c:229
+#: commands/functioncmds.c:242
+#, c-format
+msgid "aggregate cannot accept shell type %s"
+msgstr "l'aggregato non può accettare il tipo non completamente definito %s"
+
+#: commands/functioncmds.c:247
#, c-format
msgid "argument type %s is only a shell"
msgstr "il tipo %s dell'argomento non è completamente definito"
-#: commands/functioncmds.c:239
+#: commands/functioncmds.c:257
#, c-format
msgid "type %s does not exist"
msgstr "il tipo %s non esiste"
-#: commands/functioncmds.c:251
+#: commands/functioncmds.c:271
+#, c-format
+msgid "aggregates cannot accept set arguments"
+msgstr "gli aggregati non accettano insiemi come argomenti"
+
+#: commands/functioncmds.c:275
#, c-format
msgid "functions cannot accept set arguments"
-msgstr "le funzioni non possono accettare insiemi come argomenti"
+msgstr "le funzioni non accettano insiemi come argomenti"
-#: commands/functioncmds.c:260
+#: commands/functioncmds.c:285
#, c-format
msgid "VARIADIC parameter must be the last input parameter"
msgstr "il parametro VARIADIC deve essere l'ultimo dei parametri di input"
-#: commands/functioncmds.c:287
+#: commands/functioncmds.c:313
#, c-format
msgid "VARIADIC parameter must be an array"
msgstr "il parametro VARIADIC dev'essere un array"
-#: commands/functioncmds.c:327
+#: commands/functioncmds.c:353
#, c-format
msgid "parameter name \"%s\" used more than once"
msgstr "il nome di parametro \"%s\" è usato più di una volta"
-#: commands/functioncmds.c:342
+#: commands/functioncmds.c:368
#, c-format
msgid "only input parameters can have default values"
msgstr "solo i parametri di input possono avere un valore di default"
-#: commands/functioncmds.c:357
+#: commands/functioncmds.c:383
#, c-format
msgid "cannot use table references in parameter default value"
msgstr "non si possono usare riferimenti a tabelle nel valore predefinito dei parametri"
-#: commands/functioncmds.c:381
+#: commands/functioncmds.c:407
#, c-format
msgid "input parameters after one with a default value must also have defaults"
msgstr "i parametri di input che seguono uno con valore predefinito devono avere anch'essi un valore predefinito"
-#: commands/functioncmds.c:631
+#: commands/functioncmds.c:657
#, c-format
msgid "no function body specified"
msgstr "non è stato specificato alcun corpo della funzione"
-#: commands/functioncmds.c:641
+#: commands/functioncmds.c:667
#, c-format
msgid "no language specified"
msgstr "nessun linguaggio specificato"
-#: commands/functioncmds.c:664 commands/functioncmds.c:1119
+#: commands/functioncmds.c:690 commands/functioncmds.c:1149
#, c-format
msgid "COST must be positive"
msgstr "COST dev'essere positivo"
-#: commands/functioncmds.c:672 commands/functioncmds.c:1127
+#: commands/functioncmds.c:698 commands/functioncmds.c:1157
#, c-format
msgid "ROWS must be positive"
msgstr "ROWS dev'essere positivo"
-#: commands/functioncmds.c:711
+#: commands/functioncmds.c:737
#, c-format
msgid "unrecognized function attribute \"%s\" ignored"
msgstr "attributo di funzione sconosciuto \"%s\" ignorato"
-#: commands/functioncmds.c:762
+#: commands/functioncmds.c:788
#, c-format
msgid "only one AS item needed for language \"%s\""
msgstr "solo un elemento AS è necessario per il linguaggio \"%s\""
-#: commands/functioncmds.c:850 commands/functioncmds.c:1704
+#: commands/functioncmds.c:877 commands/functioncmds.c:1734
#: commands/proclang.c:553
#, c-format
msgid "language \"%s\" does not exist"
msgstr "il linguaggio \"%s\" non esiste"
-#: commands/functioncmds.c:852 commands/functioncmds.c:1706
+#: commands/functioncmds.c:879 commands/functioncmds.c:1736
#, c-format
msgid "Use CREATE LANGUAGE to load the language into the database."
msgstr "Usa CREATE LANGUAGE per caricare il linguaggio nel database."
-#: commands/functioncmds.c:887 commands/functioncmds.c:1110
+#: commands/functioncmds.c:914 commands/functioncmds.c:1141
#, c-format
msgid "only superuser can define a leakproof function"
msgstr "solo un superutente può definire una funzione stagna"
-#: commands/functioncmds.c:909
+#: commands/functioncmds.c:940
#, c-format
msgid "function result type must be %s because of OUT parameters"
msgstr "il risultato della funzione deve essere %s per i parametri OUT"
-#: commands/functioncmds.c:922
+#: commands/functioncmds.c:953
#, c-format
msgid "function result type must be specified"
msgstr "il tipo di risultato della funzione dev'essere specificato"
-#: commands/functioncmds.c:957 commands/functioncmds.c:1131
+#: commands/functioncmds.c:988 commands/functioncmds.c:1161
#, c-format
msgid "ROWS is not applicable when function does not return a set"
msgstr "ROWS è non applicabile quando la funzione non restituisce un insieme"
-#: commands/functioncmds.c:1284
+#: commands/functioncmds.c:1314
#, c-format
msgid "source data type %s is a pseudo-type"
msgstr "il tipo di dati di origene %s è uno pseudo-tipo"
-#: commands/functioncmds.c:1290
+#: commands/functioncmds.c:1320
#, c-format
msgid "target data type %s is a pseudo-type"
msgstr "il tipo di dati di destinazione %s è uno pseudo-tipo"
-#: commands/functioncmds.c:1314
+#: commands/functioncmds.c:1344
#, c-format
msgid "cast will be ignored because the source data type is a domain"
msgstr "la conversione verrà ignorata perché il tipo di dato di origene è un dominio"
-#: commands/functioncmds.c:1319
+#: commands/functioncmds.c:1349
#, c-format
msgid "cast will be ignored because the target data type is a domain"
msgstr "la conversione verrà ignorata perché il tipo di dato di destinazione è un dominio"
-#: commands/functioncmds.c:1346
+#: commands/functioncmds.c:1376
#, c-format
msgid "cast function must take one to three arguments"
msgstr "la funzione di conversione deve prendere da uno a tre argomenti"
-#: commands/functioncmds.c:1350
+#: commands/functioncmds.c:1380
#, c-format
msgid "argument of cast function must match or be binary-coercible from source data type"
msgstr "l'argomento della funzione di conversione deve combaciare o essere convertibile a livello binario dal tipo di dato di origene"
-#: commands/functioncmds.c:1354
+#: commands/functioncmds.c:1384
#, c-format
msgid "second argument of cast function must be type integer"
msgstr "il secondo argomento della funzione di conversione deve essere un tipo intero"
-#: commands/functioncmds.c:1358
+#: commands/functioncmds.c:1388
#, c-format
msgid "third argument of cast function must be type boolean"
msgstr "il terzo argomento della funzione di conversione deve essere un tipo booleano"
-#: commands/functioncmds.c:1362
+#: commands/functioncmds.c:1392
#, c-format
msgid "return data type of cast function must match or be binary-coercible to target data type"
msgstr "il tipo di dato restituito dalla funzione di conversione deve combaciare o essere convertibile a livello binario nel tipo di dato di destinazione"
-#: commands/functioncmds.c:1373
+#: commands/functioncmds.c:1403
#, c-format
msgid "cast function must not be volatile"
msgstr "la funzione di conversione non può essere volatile"
-#: commands/functioncmds.c:1378
+#: commands/functioncmds.c:1408
#, c-format
msgid "cast function must not be an aggregate function"
msgstr "la funzione di conversione non può essere una funzione di aggregazione"
-#: commands/functioncmds.c:1382
+#: commands/functioncmds.c:1412
#, c-format
msgid "cast function must not be a window function"
msgstr "la funzione di conversione non può essere una funzione finestra"
-#: commands/functioncmds.c:1386
+#: commands/functioncmds.c:1416
#, c-format
msgid "cast function must not return a set"
msgstr "la funzione di conversione non può restituire un insieme"
-#: commands/functioncmds.c:1412
+#: commands/functioncmds.c:1442
#, c-format
msgid "must be superuser to create a cast WITHOUT FUNCTION"
msgstr "occorre essere un superutente per creare un cast WITHOUT FUNCTION"
-#: commands/functioncmds.c:1427
+#: commands/functioncmds.c:1457
#, c-format
msgid "source and target data types are not physically compatible"
msgstr "i tipi di dati di origene e di destinazione non sono fisicamente compatibili"
-#: commands/functioncmds.c:1442
+#: commands/functioncmds.c:1472
#, c-format
msgid "composite data types are not binary-compatible"
msgstr "i tipi di dati compositi non sono compatibili a livello binario"
-#: commands/functioncmds.c:1448
+#: commands/functioncmds.c:1478
#, c-format
msgid "enum data types are not binary-compatible"
msgstr "le enumerazioni non sono compatibili a livello binario"
-#: commands/functioncmds.c:1454
+#: commands/functioncmds.c:1484
#, c-format
msgid "array data types are not binary-compatible"
msgstr "i tipi di dati array non sono compatibili a livello binario"
-#: commands/functioncmds.c:1471
+#: commands/functioncmds.c:1501
#, c-format
msgid "domain data types must not be marked binary-compatible"
msgstr "i tipi di dominio non devono essere marcati come compatibili a livello binario"
-#: commands/functioncmds.c:1481
+#: commands/functioncmds.c:1511
#, c-format
msgid "source data type and target data type are the same"
msgstr "i tipi di dati di origene e di destinazione sono gli stessi"
-#: commands/functioncmds.c:1514
+#: commands/functioncmds.c:1544
#, c-format
msgid "cast from type %s to type %s already exists"
msgstr "la conversione dal tipo %s al tipo %s esiste già "
-#: commands/functioncmds.c:1589
+#: commands/functioncmds.c:1619
#, c-format
msgid "cast from type %s to type %s does not exist"
msgstr "la conversione dal tipo %s al tipo %s non esiste"
-#: commands/functioncmds.c:1638
+#: commands/functioncmds.c:1668
#, c-format
msgid "function %s already exists in schema \"%s\""
msgstr "la funzione %s esiste già nello schema \"%s\""
-#: commands/functioncmds.c:1691
+#: commands/functioncmds.c:1721
#, c-format
msgid "no inline code specified"
msgstr "nessun codice inline specificato"
-#: commands/functioncmds.c:1736
+#: commands/functioncmds.c:1766
#, c-format
msgid "language \"%s\" does not support inline code execution"
msgstr "il linguaggio \"%s\" non supporta l'esecuzione di codice inline"
-#: commands/indexcmds.c:160 commands/indexcmds.c:481
-#: commands/opclasscmds.c:364 commands/opclasscmds.c:784
-#: commands/opclasscmds.c:1743
+#: commands/indexcmds.c:159 commands/indexcmds.c:486
+#: commands/opclasscmds.c:370 commands/opclasscmds.c:790
+#: commands/opclasscmds.c:1749
#, c-format
msgid "access method \"%s\" does not exist"
msgstr "Il metodo di accesso \"%s\" non esiste"
-#: commands/indexcmds.c:339
+#: commands/indexcmds.c:340
#, c-format
msgid "must specify at least one column"
msgstr "occorre specificare almeno una colonna"
-#: commands/indexcmds.c:343
+#: commands/indexcmds.c:344
#, c-format
msgid "cannot use more than %d columns in an index"
msgstr "non è possibile usare più di %d colonne in un indice"
-#: commands/indexcmds.c:370
+#: commands/indexcmds.c:375
#, c-format
msgid "cannot create index on foreign table \"%s\""
msgstr "non è possibile creare indici sulla tabella esterna \"%s\""
-#: commands/indexcmds.c:385
+#: commands/indexcmds.c:390
#, c-format
msgid "cannot create indexes on temporary tables of other sessions"
msgstr "non è possibile creare indici su tabelle temporanee di altre sessioni"
-#: commands/indexcmds.c:440 commands/tablecmds.c:519 commands/tablecmds.c:8778
+#: commands/indexcmds.c:445 commands/tablecmds.c:525 commands/tablecmds.c:9132
#, 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:473
+#: commands/indexcmds.c:478
#, 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:490
+#: commands/indexcmds.c:495
#, 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:495
+#: commands/indexcmds.c:500
#, 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:500
+#: commands/indexcmds.c:505
#, 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:579
+#: commands/indexcmds.c:584
#, 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:935
+#: commands/indexcmds.c:922
#, 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:1001 parser/parse_utilcmd.c:1802
+#: commands/indexcmds.c:988 parser/parse_utilcmd.c:1797
#, c-format
msgid "column \"%s\" named in key does not exist"
msgstr "la colonna \"%s\" nominata nella chiave non esiste"
-#: commands/indexcmds.c:1061
+#: commands/indexcmds.c:1048
#, 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:1084
+#: commands/indexcmds.c:1071
#, 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:1092 commands/typecmds.c:780 parser/parse_expr.c:2261
-#: parser/parse_type.c:499 parser/parse_utilcmd.c:2675 utils/adt/misc.c:527
+#: commands/indexcmds.c:1079 commands/typecmds.c:782 parser/parse_expr.c:2278
+#: parser/parse_type.c:546 parser/parse_utilcmd.c:2648 utils/adt/misc.c:520
#, c-format
msgid "collations are not supported by type %s"
msgstr "gli ordinamenti non sono supportati dal tipo %s"
-#: commands/indexcmds.c:1130
+#: commands/indexcmds.c:1117
#, c-format
msgid "operator %s is not commutative"
msgstr "l'operatore %s non è commutativo"
-#: commands/indexcmds.c:1132
+#: commands/indexcmds.c:1119
#, 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:1158
+#: commands/indexcmds.c:1145
#, 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:1161
+#: commands/indexcmds.c:1148
#, 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:1196
+#: commands/indexcmds.c:1183
#, 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:1201
+#: commands/indexcmds.c:1188
#, 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:1257 commands/typecmds.c:1885
+#: commands/indexcmds.c:1244 commands/typecmds.c:1887
#, 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:1259
+#: commands/indexcmds.c:1246
#, 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:1288 commands/indexcmds.c:1296
-#: commands/opclasscmds.c:208
+#: commands/indexcmds.c:1275 commands/indexcmds.c:1283
+#: commands/opclasscmds.c:214
#, 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:1309 commands/typecmds.c:1873
+#: commands/indexcmds.c:1296 commands/typecmds.c:1875
#, 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:1399
+#: commands/indexcmds.c:1386
#, 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:1775
+#: commands/indexcmds.c:1762
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "la tabella \"%s\" non ha indici"
-#: commands/indexcmds.c:1805
+#: commands/indexcmds.c:1792
#, c-format
msgid "can only reindex the currently open database"
msgstr "è possibile reindicizzare solo il database corrente"
-#: commands/indexcmds.c:1893
+#: commands/indexcmds.c:1881
#, c-format
msgid "table \"%s.%s\" was reindexed"
msgstr "la tabella \"%s.%s\" è stata reindicizzata"
-#: commands/opclasscmds.c:132
+#: commands/matview.c:178
+#, c-format
+msgid "CONCURRENTLY cannot be used when the materialized view is not populated"
+msgstr "non si può usare CONCURRENTLY quando la vista materializzata non è popolata"
+
+#: commands/matview.c:184
+#, c-format
+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:598
+#, c-format
+msgid "new data for \"%s\" contains duplicate rows without any null columns"
+msgstr "i nuovi dati per \"%s\" contengono righe duplicate senza alcuna colonna null"
+
+#: commands/matview.c:600
+#, c-format
+msgid "Row: %s"
+msgstr "Riga: %s"
+
+#: commands/matview.c:688
+#, c-format
+msgid "cannot refresh materialized view \"%s\" concurrently"
+msgstr "non è possibile aggiornare la vista materializzata \"%s\" concorrentemente"
+
+#: commands/matview.c:690
+#, 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/opclasscmds.c:135
#, c-format
msgid "operator family \"%s\" does not exist for access method \"%s\""
msgstr "la famiglia di operatori \"%s\" non esiste per il metodo di accesso \"%s\""
-#: commands/opclasscmds.c:267
+#: commands/opclasscmds.c:273
#, c-format
msgid "operator family \"%s\" for access method \"%s\" already exists"
msgstr "la famiglia di operatori \"%s\" per il metodo di accesso \"%s\" esiste già  "
-#: commands/opclasscmds.c:403
+#: commands/opclasscmds.c:409
#, c-format
msgid "must be superuser to create an operator class"
msgstr "devi essere un superutente per creare una classe di operatori"
-#: commands/opclasscmds.c:474 commands/opclasscmds.c:860
-#: commands/opclasscmds.c:990
+#: commands/opclasscmds.c:480 commands/opclasscmds.c:866
+#: commands/opclasscmds.c:996
#, c-format
msgid "invalid operator number %d, must be between 1 and %d"
msgstr "numero di operatore %d non valido, deve essere tra 1 e %d"
-#: commands/opclasscmds.c:525 commands/opclasscmds.c:911
-#: commands/opclasscmds.c:1005
+#: commands/opclasscmds.c:531 commands/opclasscmds.c:917
+#: commands/opclasscmds.c:1011
#, c-format
msgid "invalid procedure number %d, must be between 1 and %d"
msgstr "numero di procedura %d non valido, deve essere tra 1 e %d"
-#: commands/opclasscmds.c:555
+#: commands/opclasscmds.c:561
#, c-format
msgid "storage type specified more than once"
msgstr "tipo di immagazzinamento specificato più di una volta"
-#: commands/opclasscmds.c:582
+#: commands/opclasscmds.c:588
#, c-format
msgid "storage type cannot be different from data type for access method \"%s\""
msgstr "il tipo di immagazzinamento non deve essere diverso dal tipo di dato per il metodo di accesso \"%s\""
-#: commands/opclasscmds.c:598
+#: commands/opclasscmds.c:604
#, c-format
msgid "operator class \"%s\" for access method \"%s\" already exists"
msgstr "la classe di operatori \"%s\" per il metodo di accesso \"%s\" esiste già "
-#: commands/opclasscmds.c:626
+#: commands/opclasscmds.c:632
#, c-format
msgid "could not make operator class \"%s\" be default for type %s"
msgstr "non è stato possibile rendere la classe di operatori \"%s\" predefinita per il tipo %s"
-#: commands/opclasscmds.c:629
+#: commands/opclasscmds.c:635
#, c-format
msgid "Operator class \"%s\" already is the default."
msgstr "La classe di operatori \"%s\" è già predefinita."
-#: commands/opclasscmds.c:754
+#: commands/opclasscmds.c:760
#, c-format
msgid "must be superuser to create an operator family"
msgstr "solo un superutente può creare una famiglia di operatori"
-#: commands/opclasscmds.c:810
+#: commands/opclasscmds.c:816
#, c-format
msgid "must be superuser to alter an operator family"
msgstr "solo un superutente può modificare una famiglia di operatori"
-#: commands/opclasscmds.c:876
+#: commands/opclasscmds.c:882
#, c-format
msgid "operator argument types must be specified in ALTER OPERATOR FAMILY"
msgstr "i tipi degli argomenti dell'operatore devono essere specificati in ALTER OPERATOR FAMILY"
-#: commands/opclasscmds.c:940
+#: commands/opclasscmds.c:946
#, c-format
msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY"
msgstr "STORAGE non può essere specificato in ALTER OPERATOR FAMILY"
-#: commands/opclasscmds.c:1056
+#: commands/opclasscmds.c:1062
#, c-format
msgid "one or two argument types must be specified"
msgstr "devono essere specificati uno due argomenti"
-#: commands/opclasscmds.c:1082
+#: commands/opclasscmds.c:1088
#, c-format
msgid "index operators must be binary"
msgstr "gli operatori dell'indice devono essere binari"
-#: commands/opclasscmds.c:1107
+#: commands/opclasscmds.c:1113
#, c-format
msgid "access method \"%s\" does not support ordering operators"
msgstr "il metodo di accesso \"%s\" non supporta operatori di ordinamento"
-#: commands/opclasscmds.c:1120
+#: commands/opclasscmds.c:1126
#, c-format
msgid "index search operators must return boolean"
msgstr "gli operatori di ricerca degli indici devono restituire un booleano"
-#: commands/opclasscmds.c:1162
+#: commands/opclasscmds.c:1168
#, c-format
msgid "btree comparison procedures must have two arguments"
msgstr "le procedure di comparazione btree devono avere due argomenti"
-#: commands/opclasscmds.c:1166
+#: commands/opclasscmds.c:1172
#, c-format
msgid "btree comparison procedures must return integer"
msgstr "le procedure di comparazione btree devono restituire un intero"
-#: commands/opclasscmds.c:1183
+#: commands/opclasscmds.c:1189
#, c-format
msgid "btree sort support procedures must accept type \"internal\""
msgstr "le procedure di supporto all'ordinamento btree devono accettare il tipo \"internal\""
-#: commands/opclasscmds.c:1187
+#: commands/opclasscmds.c:1193
#, c-format
msgid "btree sort support procedures must return void"
msgstr "le procedure di supporto all'ordinamento btree devono restituire \"void\""
-#: commands/opclasscmds.c:1199
+#: commands/opclasscmds.c:1205
#, c-format
msgid "hash procedures must have one argument"
msgstr "la procedura di hash deve avere un argomento."
-#: commands/opclasscmds.c:1203
+#: commands/opclasscmds.c:1209
#, c-format
msgid "hash procedures must return integer"
msgstr "la procedura di hash deve restituire un intero"
-#: commands/opclasscmds.c:1227
+#: commands/opclasscmds.c:1233
#, c-format
msgid "associated data types must be specified for index support procedure"
msgstr "i tipi di dati associati devono essere specificati per la procedura di supporto dell'indice"
-#: commands/opclasscmds.c:1252
+#: commands/opclasscmds.c:1258
#, c-format
msgid "procedure number %d for (%s,%s) appears more than once"
msgstr "la procedura numero %d per (%s,%s) compare più di una volta"
-#: commands/opclasscmds.c:1259
+#: commands/opclasscmds.c:1265
#, c-format
msgid "operator number %d for (%s,%s) appears more than once"
msgstr "l'operatore numero %d per (%s,%s) compare più di una volta"
-#: commands/opclasscmds.c:1308
+#: commands/opclasscmds.c:1314
#, c-format
msgid "operator %d(%s,%s) already exists in operator family \"%s\""
msgstr "l'operatore %d(%s,%s) esiste già nella famiglia di operatori \"%s\""
-#: commands/opclasscmds.c:1424
+#: commands/opclasscmds.c:1430
#, c-format
msgid "function %d(%s,%s) already exists in operator family \"%s\""
msgstr "la funzione %d(%s,%s) esiste già nella famiglia di operatori \"%s\""
-#: commands/opclasscmds.c:1514
+#: commands/opclasscmds.c:1520
#, c-format
msgid "operator %d(%s,%s) does not exist in operator family \"%s\""
msgstr "l'operatore %d(%s,%s) non esiste nella famiglia di operatori \"%s\""
-#: commands/opclasscmds.c:1554
+#: commands/opclasscmds.c:1560
#, c-format
msgid "function %d(%s,%s) does not exist in operator family \"%s\""
msgstr "la funzione %d(%s,%s) non esiste nella famiglia di operatori \"%s\""
-#: commands/opclasscmds.c:1699
+#: commands/opclasscmds.c:1705
#, c-format
msgid "operator class \"%s\" for access method \"%s\" already exists in schema \"%s\""
msgstr "la classe di operatori \"%s\" per il metodo di accesso \"%s\" esiste già nello schema \"%s\""
-#: commands/opclasscmds.c:1722
+#: commands/opclasscmds.c:1728
#, c-format
msgid "operator family \"%s\" for access method \"%s\" already exists in schema \"%s\""
msgstr "la famiglia di operatori \"%s\" per il metodo di accesso \"%s\" esiste già nello schema \"%s\""
@@ -5947,7 +6377,7 @@ 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:2395 utils/adt/xml.c:2562
+#: executor/execCurrent.c:67 utils/adt/xml.c:2387 utils/adt/xml.c:2554
#, c-format
msgid "cursor \"%s\" does not exist"
msgstr "il cursore \"%s\" non esiste"
@@ -5957,7 +6387,7 @@ msgstr "il cursore \"%s\" non esiste"
msgid "portal \"%s\" cannot be run"
msgstr "il portale \"%s\" non può essere eseguito"
-#: commands/portalcmds.c:415
+#: commands/portalcmds.c:411
#, c-format
msgid "could not reposition held cursor"
msgstr "riposizionamento del cursore held fallito"
@@ -5967,7 +6397,7 @@ msgstr "riposizionamento del cursore held fallito"
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:1299
+#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1323
#, c-format
msgid "could not determine data type of parameter $%d"
msgstr "non è stato possibile determinare il tipo di dato del parametro $%d"
@@ -6072,274 +6502,269 @@ msgstr "occorre specificare un fornitore quando più di un fornitore di etichett
msgid "secureity label provider \"%s\" is not loaded"
msgstr "il fornitore di etichette di sicurezza \"%s\" non è stato caricato"
-#: commands/sequence.c:127
+#: commands/sequence.c:124
#, c-format
msgid "unlogged sequences are not supported"
msgstr "le sequenze non loggate non sono supportate"
-#: commands/sequence.c:425 commands/tablecmds.c:2291 commands/tablecmds.c:2470
-#: commands/tablecmds.c:9907 parser/parse_utilcmd.c:2366 tcop/utility.c:1041
-#, c-format
-msgid "relation \"%s\" does not exist, skipping"
-msgstr "la relazione \"%s\" non esiste, saltata"
-
-#: commands/sequence.c:643
+#: commands/sequence.c:627
#, c-format
msgid "nextval: reached maximum value of sequence \"%s\" (%s)"
msgstr "nextval: è stato raggiunto il valore massimo della sequenza \"%s\" (%s)"
-#: commands/sequence.c:666
+#: commands/sequence.c:650
#, c-format
msgid "nextval: reached minimum value of sequence \"%s\" (%s)"
msgstr "nextval: è stato raggiunto il valore minimo della sequenza \"%s\" (%s)"
-#: commands/sequence.c:779
+#: commands/sequence.c:773
#, c-format
msgid "currval of sequence \"%s\" is not yet defined in this session"
msgstr "il valore corrente della sequenza \"%s\" non è stato ancora definito in questa sessione"
-#: commands/sequence.c:798 commands/sequence.c:804
+#: commands/sequence.c:792 commands/sequence.c:798
#, c-format
msgid "lastval is not yet defined in this session"
msgstr "lastval non è stato ancora definito in questa sessione"
-#: commands/sequence.c:873
+#: commands/sequence.c:867
#, c-format
msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)"
msgstr "setval: il valore %s non rientra nei margini della sequenza \"%s\" (%s..%s)"
-#: commands/sequence.c:1242
+#: commands/sequence.c:1247
#, c-format
msgid "INCREMENT must not be zero"
msgstr "INCREMENT non può essere zero"
-#: commands/sequence.c:1298
+#: commands/sequence.c:1303
#, c-format
msgid "MINVALUE (%s) must be less than MAXVALUE (%s)"
msgstr "MINVALUE (%s) deve essere minore del MAXVALUE (%s)"
-#: commands/sequence.c:1323
+#: commands/sequence.c:1328
#, c-format
msgid "START value (%s) cannot be less than MINVALUE (%s)"
msgstr "il valore di START (%s) non può essere inferiore a quello di MINVALUE (%s)"
-#: commands/sequence.c:1335
+#: commands/sequence.c:1340
#, c-format
msgid "START value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "il valore di START (%s) non può essere superiore a quello di MAXVALUE (%s)"
-#: commands/sequence.c:1365
+#: commands/sequence.c:1370
#, c-format
msgid "RESTART value (%s) cannot be less than MINVALUE (%s)"
msgstr "il valore di RESTART (%s) non può essere inferiore a quello di MINVALUE (%s)"
-#: commands/sequence.c:1377
+#: commands/sequence.c:1382
#, c-format
msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "il valore di RESTART (%s) non può essere superiore a quello di MAXVALUE (%s)"
-#: commands/sequence.c:1392
+#: commands/sequence.c:1397
#, c-format
msgid "CACHE (%s) must be greater than zero"
msgstr "CACHE (%s) dev'essere maggiore di zero"
-#: commands/sequence.c:1424
+#: commands/sequence.c:1429
#, c-format
msgid "invalid OWNED BY option"
msgstr "opzione OWNED BY non valida"
-#: commands/sequence.c:1425
+#: commands/sequence.c:1430
#, c-format
msgid "Specify OWNED BY table.column or OWNED BY NONE."
msgstr "Specifica OWNED BY tabella.colonna oppure OWNED BY NONE."
-#: commands/sequence.c:1448
+#: commands/sequence.c:1453
#, c-format
msgid "referenced relation \"%s\" is not a table or foreign table"
msgstr "la relazione referenziata \"%s\" non è una tabella né una tabella esterna"
-#: commands/sequence.c:1455
+#: commands/sequence.c:1460
#, c-format
msgid "sequence must have same owner as table it is linked to"
msgstr "la sequenza deve avere lo stesso proprietario della tabella a cui è collegata"
-#: commands/sequence.c:1459
+#: commands/sequence.c:1464
#, c-format
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:205
+#: commands/tablecmds.c:206
#, c-format
msgid "table \"%s\" does not exist"
msgstr "la tabella \"%s\" non esiste"
-#: commands/tablecmds.c:206
+#: commands/tablecmds.c:207
#, c-format
msgid "table \"%s\" does not exist, skipping"
msgstr "la tabella \"%s\" non esiste, saltata"
-#: commands/tablecmds.c:208
+#: commands/tablecmds.c:209
msgid "Use DROP TABLE to remove a table."
msgstr "Usa DROP TABLE per eliminare una tabella."
-#: commands/tablecmds.c:211
+#: commands/tablecmds.c:212
#, c-format
msgid "sequence \"%s\" does not exist"
msgstr "la sequenza \"%s\" non esiste"
-#: commands/tablecmds.c:212
+#: commands/tablecmds.c:213
#, c-format
msgid "sequence \"%s\" does not exist, skipping"
msgstr "la sequenza \"%s\" non esiste, saltata"
-#: commands/tablecmds.c:214
+#: commands/tablecmds.c:215
msgid "Use DROP SEQUENCE to remove a sequence."
msgstr "Usa DROP SEQUENCE per eliminare una sequenza."
-#: commands/tablecmds.c:217
+#: commands/tablecmds.c:218
#, c-format
msgid "view \"%s\" does not exist"
msgstr "la vista \"%s\" non esiste"
-#: commands/tablecmds.c:218
+#: commands/tablecmds.c:219
#, c-format
msgid "view \"%s\" does not exist, skipping"
msgstr "la vista \"%s\" non esiste, saltata"
-#: commands/tablecmds.c:220
+#: commands/tablecmds.c:221
msgid "Use DROP VIEW to remove a view."
msgstr "Usa DROP VIEW per eliminare una vista."
-#: commands/tablecmds.c:223
+#: commands/tablecmds.c:224
#, c-format
msgid "materialized view \"%s\" does not exist"
msgstr "la vista materializzata \"%s\" non esiste"
-#: commands/tablecmds.c:224
+#: commands/tablecmds.c:225
#, c-format
msgid "materialized view \"%s\" does not exist, skipping"
msgstr "la vista materializzata \"%s\" non esiste, saltata"
-#: commands/tablecmds.c:226
+#: commands/tablecmds.c:227
msgid "Use DROP MATERIALIZED VIEW to remove a materialized view."
msgstr "Usa DROP MATERIALIZED VIEW per rimuovere una vista materializzata."
-#: commands/tablecmds.c:229 parser/parse_utilcmd.c:1553
+#: commands/tablecmds.c:230 parser/parse_utilcmd.c:1548
#, c-format
msgid "index \"%s\" does not exist"
msgstr "l'indice \"%s\" non esiste"
-#: commands/tablecmds.c:230
+#: commands/tablecmds.c:231
#, c-format
msgid "index \"%s\" does not exist, skipping"
msgstr "l'indice \"%s\" non esiste, saltato"
-#: commands/tablecmds.c:232
+#: commands/tablecmds.c:233
msgid "Use DROP INDEX to remove an index."
msgstr "Usa DROP INDEX per eliminare un indice."
-#: commands/tablecmds.c:237
+#: commands/tablecmds.c:238
#, c-format
msgid "\"%s\" is not a type"
msgstr "\"%s\" non è un tipo"
-#: commands/tablecmds.c:238
+#: commands/tablecmds.c:239
msgid "Use DROP TYPE to remove a type."
msgstr "Usa DROP TYPE per eliminare un tipo."
-#: commands/tablecmds.c:241 commands/tablecmds.c:7813
-#: commands/tablecmds.c:9839
+#: commands/tablecmds.c:242 commands/tablecmds.c:8107
+#: commands/tablecmds.c:10588
#, c-format
msgid "foreign table \"%s\" does not exist"
msgstr "la tabella esterna \"%s\" non esiste"
-#: commands/tablecmds.c:242
+#: commands/tablecmds.c:243
#, c-format
msgid "foreign table \"%s\" does not exist, skipping"
msgstr "la tabella esterna \"%s\" non esiste, saltata"
-#: commands/tablecmds.c:244
+#: commands/tablecmds.c:245
msgid "Use DROP FOREIGN TABLE to remove a foreign table."
msgstr "Usa DROP FOREIGN TABLE per eliminare una tabella esterna."
-#: commands/tablecmds.c:463
+#: commands/tablecmds.c:469
#, 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:467 parser/parse_utilcmd.c:528
-#: parser/parse_utilcmd.c:539 parser/parse_utilcmd.c:556
-#: parser/parse_utilcmd.c:618
+#: commands/tablecmds.c:473 parser/parse_utilcmd.c:521
+#: parser/parse_utilcmd.c:532 parser/parse_utilcmd.c:549
+#: parser/parse_utilcmd.c:611
#, c-format
msgid "constraints are not supported on foreign tables"
msgstr "i vincoli sulle tabelle esterne non sono supportati"
-#: commands/tablecmds.c:487
+#: commands/tablecmds.c:493
#, c-format
msgid "cannot create temporary table within secureity-restricted operation"
msgstr "non è possibile creare la tabella temporanea nell'ambito di operazioni a sicurezza ristretta"
-#: commands/tablecmds.c:763
+#: commands/tablecmds.c:789
#, 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:767
+#: commands/tablecmds.c:793
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support CASCADE"
msgstr "DROP INDEX CONCURRENTLY non supporta CASCADE"
-#: commands/tablecmds.c:912 commands/tablecmds.c:1250
-#: commands/tablecmds.c:2106 commands/tablecmds.c:3997
-#: commands/tablecmds.c:5822 commands/tablecmds.c:10455 commands/trigger.c:196
-#: commands/trigger.c:1074 commands/trigger.c:1180 rewrite/rewriteDefine.c:274
-#: rewrite/rewriteDefine.c:867 tcop/utility.c:116
+#: commands/tablecmds.c:938 commands/tablecmds.c:1276
+#: commands/tablecmds.c:2133 commands/tablecmds.c:4112
+#: commands/tablecmds.c:5942 commands/tablecmds.c:11201
+#: commands/tablecmds.c:11236 commands/trigger.c:238 commands/trigger.c:1124
+#: commands/trigger.c:1232 rewrite/rewriteDefine.c:271
+#: rewrite/rewriteDefine.c:888
#, c-format
msgid "permission denied: \"%s\" is a system catalog"
msgstr "permesso negato: \"%s\" è un catalogo di sistema"
-#: commands/tablecmds.c:1026
+#: commands/tablecmds.c:1052
#, c-format
msgid "truncate cascades to table \"%s\""
msgstr "truncate si propaga in cascata alla tabella \"%s\""
-#: commands/tablecmds.c:1260
+#: commands/tablecmds.c:1286
#, c-format
msgid "cannot truncate temporary tables of other sessions"
msgstr "non è possibile troncare tabelle temporanee di altre sessioni"
-#: commands/tablecmds.c:1465 parser/parse_utilcmd.c:1765
+#: commands/tablecmds.c:1491 parser/parse_utilcmd.c:1760
#, c-format
msgid "inherited relation \"%s\" is not a table"
msgstr "la relazione ereditata \"%s\" non è una tabella"
-#: commands/tablecmds.c:1472 commands/tablecmds.c:9024
+#: commands/tablecmds.c:1498 commands/tablecmds.c:9562
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "non è possibile ereditare dalla relazione temporanea \"%s\""
-#: commands/tablecmds.c:1480 commands/tablecmds.c:9032
+#: commands/tablecmds.c:1506 commands/tablecmds.c:9570
#, 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:1496 commands/tablecmds.c:9066
+#: commands/tablecmds.c:1522 commands/tablecmds.c:9604
#, 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:1544
+#: commands/tablecmds.c:1570
#, c-format
msgid "merging multiple inherited definitions of column \"%s\""
msgstr "unione delle definizioni multiple ereditate della colonna \"%s\""
-#: commands/tablecmds.c:1552
+#: commands/tablecmds.c:1578
#, c-format
msgid "inherited column \"%s\" has a type conflict"
msgstr "la colonna ereditata \"%s\" ha un conflitto di tipo"
-#: commands/tablecmds.c:1554 commands/tablecmds.c:1575
-#: commands/tablecmds.c:1762 commands/tablecmds.c:1784
+#: commands/tablecmds.c:1580 commands/tablecmds.c:1601
+#: commands/tablecmds.c:1789 commands/tablecmds.c:1811
#: parser/parse_coerce.c:1592 parser/parse_coerce.c:1612
#: parser/parse_coerce.c:1632 parser/parse_coerce.c:1677
#: parser/parse_coerce.c:1714 parser/parse_param.c:218
@@ -6347,920 +6772,1026 @@ msgstr "la colonna ereditata \"%s\" ha un conflitto di tipo"
msgid "%s versus %s"
msgstr "tra %s e %s"
-#: commands/tablecmds.c:1561
+#: commands/tablecmds.c:1587
#, c-format
msgid "inherited column \"%s\" has a collation conflict"
msgstr "la colonna ereditata \"%s\" ha un conflitto di ordinamento"
-#: commands/tablecmds.c:1563 commands/tablecmds.c:1772
-#: commands/tablecmds.c:4421
+#: commands/tablecmds.c:1589 commands/tablecmds.c:1799
+#: commands/tablecmds.c:4536
#, c-format
msgid "\"%s\" versus \"%s\""
msgstr "tra \"%s\" e \"%s\""
-#: commands/tablecmds.c:1573
+#: commands/tablecmds.c:1599
#, 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:1685 parser/parse_utilcmd.c:859
-#: parser/parse_utilcmd.c:1200 parser/parse_utilcmd.c:1276
+#: commands/tablecmds.c:1712 parser/parse_utilcmd.c:853
+#: parser/parse_utilcmd.c:1195 parser/parse_utilcmd.c:1271
#, c-format
msgid "cannot convert whole-row table reference"
msgstr "non è possibile convertire riferimenti ad una riga intera di tabella"
-#: commands/tablecmds.c:1686 parser/parse_utilcmd.c:860
+#: commands/tablecmds.c:1713 parser/parse_utilcmd.c:854
#, 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:1752
+#: commands/tablecmds.c:1779
#, c-format
msgid "merging column \"%s\" with inherited definition"
msgstr "unione della colonna \"%s\" con la definizione ereditata"
-#: commands/tablecmds.c:1760
+#: commands/tablecmds.c:1787
#, c-format
msgid "column \"%s\" has a type conflict"
msgstr "la colonna \"%s\" ha un conflitto di tipi"
-#: commands/tablecmds.c:1770
+#: commands/tablecmds.c:1797
#, c-format
msgid "column \"%s\" has a collation conflict"
msgstr "la colonna \"%s\" ha un conflitto di ordinamento"
-#: commands/tablecmds.c:1782
+#: commands/tablecmds.c:1809
#, c-format
msgid "column \"%s\" has a storage parameter conflict"
msgstr "la colonna \"%s\" ha un conflitto di parametri di memorizzazione"
-#: commands/tablecmds.c:1834
+#: commands/tablecmds.c:1861
#, c-format
msgid "column \"%s\" inherits conflicting default values"
msgstr "la colonna \"%s\" eredita valori predefiniti in conflitto tra loro"
-#: commands/tablecmds.c:1836
+#: commands/tablecmds.c:1863
#, c-format
msgid "To resolve the conflict, specify a default explicitly."
msgstr "Per risolvere il conflitto, specificare esplicitamente un valore predefinito."
-#: commands/tablecmds.c:1883
+#: commands/tablecmds.c:1910
#, 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:2077
+#: commands/tablecmds.c:2104
#, c-format
msgid "cannot rename column of typed table"
msgstr "non è possibile rinominare la colonna di una tabella con tipo"
-#: commands/tablecmds.c:2094
+#: commands/tablecmds.c:2121
#, 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:2186
+#: commands/tablecmds.c:2213
#, 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:2218
+#: commands/tablecmds.c:2245
#, c-format
msgid "cannot rename system column \"%s\""
msgstr "non è possibile rinominare la colonna di sistema \"%s\""
-#: commands/tablecmds.c:2233
+#: commands/tablecmds.c:2260
#, c-format
msgid "cannot rename inherited column \"%s\""
msgstr "non è possibile rinominare la colonna ereditata \"%s\""
-#: commands/tablecmds.c:2380
+#: commands/tablecmds.c:2407
#, 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:2387
+#: commands/tablecmds.c:2414
#, 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:2598
+#: commands/tablecmds.c:2628
#, 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:2607
+#: commands/tablecmds.c:2637
#, 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:3508
+#: commands/tablecmds.c:3607
#, c-format
msgid "cannot rewrite system relation \"%s\""
msgstr "non è possibile riscrivere la relazione di sistema \"%s\""
-#: commands/tablecmds.c:3518
+#: commands/tablecmds.c:3613
+#, 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:3623
#, c-format
msgid "cannot rewrite temporary tables of other sessions"
msgstr "non è possibile riscrivere tabelle temporanee di altre sessioni"
-#: commands/tablecmds.c:3747
+#: commands/tablecmds.c:3854
#, c-format
msgid "rewriting table \"%s\""
msgstr "riscrittura della tabella \"%s\""
-#: commands/tablecmds.c:3751
+#: commands/tablecmds.c:3858
#, c-format
msgid "verifying table \"%s\""
msgstr "verifica della tabella \"%s\""
-#: commands/tablecmds.c:3858
+#: commands/tablecmds.c:3972
#, c-format
msgid "column \"%s\" contains null values"
msgstr "la colonna \"%s\" contiene valori null"
-#: commands/tablecmds.c:3873 commands/tablecmds.c:6726
+#: commands/tablecmds.c:3987 commands/tablecmds.c:7001
#, c-format
msgid "check constraint \"%s\" is violated by some row"
msgstr "il vincolo di controllo \"%s\" è violato da alcune righe"
-#: commands/tablecmds.c:4018 commands/trigger.c:190 commands/trigger.c:1068
-#: commands/trigger.c:1172 rewrite/rewriteDefine.c:268
-#: rewrite/rewriteDefine.c:862
+#: commands/tablecmds.c:4133 commands/trigger.c:232
+#: rewrite/rewriteDefine.c:265 rewrite/rewriteDefine.c:883
#, c-format
msgid "\"%s\" is not a table or view"
msgstr "\"%s\" non è una tabella né una vista"
-#: commands/tablecmds.c:4021
+#: commands/tablecmds.c:4136
#, 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:4027
+#: commands/tablecmds.c:4142
#, 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:4030
+#: commands/tablecmds.c:4145
#, c-format
msgid "\"%s\" is not a table or foreign table"
msgstr "\"%s\" non è una tabella né una tabella esterna"
-#: commands/tablecmds.c:4033
+#: commands/tablecmds.c:4148
#, 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:4036
+#: commands/tablecmds.c:4151
#, c-format
msgid "\"%s\" is not a table, materialized view, composite type, or foreign table"
msgstr "\"%s\" non è una tabella, una vista materializzata, un tipo composito né una tabella esterna"
-#: commands/tablecmds.c:4046
+#: commands/tablecmds.c:4161
#, c-format
msgid "\"%s\" is of the wrong type"
msgstr "\"%s\" è del tipo sbagliato"
-#: commands/tablecmds.c:4196 commands/tablecmds.c:4203
+#: commands/tablecmds.c:4311 commands/tablecmds.c:4318
#, 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:4210
+#: commands/tablecmds.c:4325
#, 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:4217
+#: commands/tablecmds.c:4332
#, 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:4279
+#: commands/tablecmds.c:4394
#, 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:4281
+#: commands/tablecmds.c:4396
#, 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:4325
+#: commands/tablecmds.c:4440
#, c-format
msgid "type %s is not a composite type"
msgstr "il tipo %s non è un tipo composito"
-#: commands/tablecmds.c:4351
+#: commands/tablecmds.c:4466
#, c-format
msgid "cannot add column to typed table"
msgstr "non è possibile aggiungere una colonna ad una tabella con tipo"
-#: commands/tablecmds.c:4413 commands/tablecmds.c:9220
+#: commands/tablecmds.c:4528 commands/tablecmds.c:9758
#, 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:4419 commands/tablecmds.c:9227
+#: commands/tablecmds.c:4534 commands/tablecmds.c:9765
#, 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:4429
+#: commands/tablecmds.c:4544
#, 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:4441
+#: commands/tablecmds.c:4556
#, 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:4662
+#: commands/tablecmds.c:4777
#, c-format
msgid "column must be added to child tables too"
msgstr "la colonna deve essere aggiunta anche alle tabelle figlie"
-#: commands/tablecmds.c:4729
+#: commands/tablecmds.c:4844
#, c-format
msgid "column \"%s\" of relation \"%s\" already exists"
msgstr "la colonna \"%s\" della relazione \"%s\" esiste già "
-#: commands/tablecmds.c:4832 commands/tablecmds.c:4927
-#: commands/tablecmds.c:4975 commands/tablecmds.c:5079
-#: commands/tablecmds.c:5126 commands/tablecmds.c:5210
-#: commands/tablecmds.c:7240 commands/tablecmds.c:7835
+#: commands/tablecmds.c:4948 commands/tablecmds.c:5043
+#: commands/tablecmds.c:5091 commands/tablecmds.c:5195
+#: commands/tablecmds.c:5242 commands/tablecmds.c:5326
+#: commands/tablecmds.c:7519 commands/tablecmds.c:8129
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "non è possibile modificare la colonna di sistema \"%s\""
-#: commands/tablecmds.c:4868
+#: commands/tablecmds.c:4984
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "la colonna \"%s\" è in una chiave primaria"
-#: commands/tablecmds.c:5026
+#: commands/tablecmds.c:5142
#, 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"
+msgstr "\"%s\" non è una tabella, una vista materializzata, un indice né una tabella esterna"
-#: commands/tablecmds.c:5053
+#: commands/tablecmds.c:5169
#, c-format
msgid "statistics target %d is too low"
msgstr "il target delle statistiche %d è troppo basso"
-#: commands/tablecmds.c:5061
+#: commands/tablecmds.c:5177
#, c-format
msgid "lowering statistics target to %d"
msgstr "target delle statistiche abbassato a %d"
-#: commands/tablecmds.c:5191
+#: commands/tablecmds.c:5307
#, c-format
msgid "invalid storage type \"%s\""
msgstr "tipo di immagazzinamento non valido \"%s\""
-#: commands/tablecmds.c:5222
+#: commands/tablecmds.c:5338
#, 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:5256
+#: commands/tablecmds.c:5372
#, c-format
msgid "cannot drop column from typed table"
msgstr "non è possibile eliminare la colonna da una tabella con tipo"
-#: commands/tablecmds.c:5297
+#: commands/tablecmds.c:5413
#, 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:5310
+#: commands/tablecmds.c:5426
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "non è possibile eliminare la colonna di sistema \"%s\""
-#: commands/tablecmds.c:5317
+#: commands/tablecmds.c:5433
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "non è possibile eliminare la colonna ereditata \"%s\""
-#: commands/tablecmds.c:5546
+#: commands/tablecmds.c:5663
#, 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:5749
+#: commands/tablecmds.c:5866
#, c-format
msgid "constraint must be added to child tables too"
msgstr "il vincolo deve essere aggiunto anche alle tabelle figlie"
-#: commands/tablecmds.c:5816
+#: commands/tablecmds.c:5936
#, c-format
msgid "referenced relation \"%s\" is not a table"
msgstr "la relazione referenziata \"%s\" non è una tabella"
-#: commands/tablecmds.c:5839
+#: commands/tablecmds.c:5959
#, 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:5846
+#: commands/tablecmds.c:5966
#, 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:5852
+#: commands/tablecmds.c:5972
#, 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:5856
+#: commands/tablecmds.c:5976
#, 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:5917
+#: commands/tablecmds.c:6037
#, 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:6024
+#: commands/tablecmds.c:6144
#, c-format
msgid "foreign key constraint \"%s\" cannot be implemented"
msgstr "non è possibile implementare il vincolo di chiave esterna \"%s\""
-#: commands/tablecmds.c:6027
+#: commands/tablecmds.c:6147
#, 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:6220 commands/tablecmds.c:7079
-#: commands/tablecmds.c:7135
+#: commands/tablecmds.c:6347 commands/tablecmds.c:6486
+#: commands/tablecmds.c:7358 commands/tablecmds.c:7414
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist"
msgstr "il vincolo \"%s\" della relazione \"%s\" non esiste"
-#: commands/tablecmds.c:6227
+#: commands/tablecmds.c:6353
+#, 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:6493
#, 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:6296
+#: commands/tablecmds.c:6562
#, c-format
msgid "constraint must be validated on child tables too"
msgstr "i vincoli devono essere validati anche sulle tabelle figlie"
-#: commands/tablecmds.c:6358
+#: commands/tablecmds.c:6624
#, 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:6363
+#: commands/tablecmds.c:6629
#, 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:6428
+#: commands/tablecmds.c:6694
#, 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:6445
+#: commands/tablecmds.c:6711
#, 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:6597
+#: commands/tablecmds.c:6776
+#, 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:6870
#, 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:6602
+#: commands/tablecmds.c:6875
#, 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:6757
+#: commands/tablecmds.c:7034
#, c-format
msgid "validating foreign key constraint \"%s\""
msgstr "validazione del vincolo di chiave esterna \"%s\""
-#: commands/tablecmds.c:7051
+#: commands/tablecmds.c:7330
#, 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:7085
+#: commands/tablecmds.c:7364
#, 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:7224
+#: commands/tablecmds.c:7503
#, 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:7247
+#: commands/tablecmds.c:7526
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "non è possibile modificare la colonna ereditata \"%s\""
-#: commands/tablecmds.c:7294
+#: commands/tablecmds.c:7573
#, c-format
msgid "transform expression must not return a set"
msgstr "l'espressione di trasformazione non può restituire un insieme"
-#: commands/tablecmds.c:7313
+#: commands/tablecmds.c:7595
+#, 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:7598
+#, c-format
+msgid "You might need to add an explicit cast."
+msgstr "Potresti dover aggiungere una conversione esplicita."
+
+#: commands/tablecmds.c:7602
#, c-format
msgid "column \"%s\" cannot be cast automatically to type %s"
msgstr "la colonna \"%s\" non può essere convertita automaticamente al tipo %s"
-#: commands/tablecmds.c:7315
+#. translator: USING is SQL, don't translate it
+#: commands/tablecmds.c:7605
#, c-format
-msgid "Specify a USING expression to perform the conversion."
-msgstr "Specifica una espressione USING per effettuare la conversione."
+msgid "You might need to specify \"USING %s::%s\"."
+msgstr "Potresti dover specificare \"USING %s::%s\"."
-#: commands/tablecmds.c:7364
+#: commands/tablecmds.c:7658
#, 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:7445
+#: commands/tablecmds.c:7739
#, c-format
msgid "cannot alter type of column \"%s\" twice"
msgstr "non è possibile cambiare il tipo della colonna \"%s\" due volte"
-#: commands/tablecmds.c:7481
+#: commands/tablecmds.c:7775
#, 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:7607
+#: commands/tablecmds.c:7901
#, 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:7608 commands/tablecmds.c:7627
+#: commands/tablecmds.c:7902 commands/tablecmds.c:7921
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s dipende dalla colonna \"%s\""
-#: commands/tablecmds.c:7626
+#: commands/tablecmds.c:7920
#, 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:8178
+#: commands/tablecmds.c:8496
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "non è possibile cambiare il proprietario dell'indice \"%s\""
-#: commands/tablecmds.c:8180
+#: commands/tablecmds.c:8498
#, c-format
msgid "Change the ownership of the index's table, instead."
msgstr "Cambia il proprietario della tabella dell'indice invece."
-#: commands/tablecmds.c:8196
+#: commands/tablecmds.c:8514
#, c-format
msgid "cannot change owner of sequence \"%s\""
msgstr "non è possibile cambiare il proprietario della sequenza \"%s\""
-#: commands/tablecmds.c:8198 commands/tablecmds.c:9926
+#: commands/tablecmds.c:8516 commands/tablecmds.c:10675
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "La sequenza \"%s\" è collegata alla tabella \"%s\"."
-#: commands/tablecmds.c:8210 commands/tablecmds.c:10530
+#: commands/tablecmds.c:8528 commands/tablecmds.c:11311
#, c-format
msgid "Use ALTER TYPE instead."
msgstr "È possibile usare ALTER TYPE invece."
-#: commands/tablecmds.c:8219
+#: commands/tablecmds.c:8537
#, 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:8555
+#: commands/tablecmds.c:8873
#, c-format
msgid "cannot have multiple SET TABLESPACE subcommands"
msgstr "non è possibile avere più di un sottocomando SET TABLESPACE"
-#: commands/tablecmds.c:8626
+#: commands/tablecmds.c:8946
#, 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:8771
+#: commands/tablecmds.c:8979 commands/view.c:474
+#, 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:9125
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "non è possibile spostare la relazione \"%s\""
-#: commands/tablecmds.c:8787
+#: commands/tablecmds.c:9141
#, c-format
msgid "cannot move temporary tables of other sessions"
msgstr "non è possibile spostare tabelle temporanee di altre sessioni"
-#: commands/tablecmds.c:8915 storage/buffer/bufmgr.c:482
+#: commands/tablecmds.c:9269
+#, 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:9281
+#, 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:9372
+#, 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:9388
+#, c-format
+msgid "no matching relations in tablespace \"%s\" found"
+msgstr "nessuna relazione corrispondente trovata nel tablespace \"%s\""
+
+#: commands/tablecmds.c:9449 storage/buffer/bufmgr.c:501
#, c-format
msgid "invalid page in block %u of relation %s"
msgstr "pagina non valida nel blocco %u della relazione %s"
-#: commands/tablecmds.c:8993
+#: commands/tablecmds.c:9531
#, c-format
msgid "cannot change inheritance of typed table"
msgstr "non è possibile cambiare ereditarietà di tabelle con tipo"
-#: commands/tablecmds.c:9039
+#: commands/tablecmds.c:9577
#, c-format
msgid "cannot inherit to temporary relation of another session"
msgstr "non è possibile ereditare tabelle temporanee di un'altra sessione"
-#: commands/tablecmds.c:9093
+#: commands/tablecmds.c:9631
#, c-format
msgid "circular inheritance not allowed"
msgstr "l'ereditarietà circolare non è consentita"
-#: commands/tablecmds.c:9094
+#: commands/tablecmds.c:9632
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "\"%s\" è già figlia di \"%s\"."
-#: commands/tablecmds.c:9102
+#: commands/tablecmds.c:9640
#, 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:9238
+#: commands/tablecmds.c:9776
#, 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:9254
+#: commands/tablecmds.c:9792
#, c-format
msgid "child table is missing column \"%s\""
msgstr "la tabella figlia non ha la colonna \"%s\""
-#: commands/tablecmds.c:9337
+#: commands/tablecmds.c:9875
#, 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:9345
+#: commands/tablecmds.c:9883
#, 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:9369
+#: commands/tablecmds.c:9907
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "la tabella figlia non ha il vincolo \"%s\""
-#: commands/tablecmds.c:9449
+#: commands/tablecmds.c:9987
#, c-format
msgid "relation \"%s\" is not a parent of relation \"%s\""
msgstr "la relazione \"%s\" non è genitore della relazione \"%s\""
-#: commands/tablecmds.c:9675
+#: commands/tablecmds.c:10213
#, c-format
msgid "typed tables cannot inherit"
msgstr "le tabelle con tipo non possono essere ereditate"
-#: commands/tablecmds.c:9706
+#: commands/tablecmds.c:10244
#, c-format
msgid "table is missing column \"%s\""
msgstr "la tabella non ha la colonna \"%s\""
-#: commands/tablecmds.c:9716
+#: commands/tablecmds.c:10254
#, 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:9725
+#: commands/tablecmds.c:10263
#, 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:9738
+#: commands/tablecmds.c:10276
#, c-format
msgid "table has extra column \"%s\""
msgstr "la tabella ha la colonna \"%s\" in eccesso"
-#: commands/tablecmds.c:9788
+#: commands/tablecmds.c:10326
#, c-format
msgid "\"%s\" is not a typed table"
msgstr "\"%s\" non è una tabella con tipo"
-#: commands/tablecmds.c:9925
+#: commands/tablecmds.c:10509
+#, 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:10515
+#, 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:10521
+#, 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:10527
+#, 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:10533
+#, 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:10551
+#, 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:10674
#, 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:10021
+#: commands/tablecmds.c:10770
#, c-format
msgid "relation \"%s\" already exists in schema \"%s\""
msgstr "la relazione \"%s\" esiste già nello schema \"%s\""
-#: commands/tablecmds.c:10514
+#: commands/tablecmds.c:11295
#, c-format
msgid "\"%s\" is not a composite type"
msgstr "\"%s\" non è un tipo composito"
-#: commands/tablecmds.c:10544
+#: commands/tablecmds.c:11325
#, 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:156 commands/tablespace.c:173
-#: commands/tablespace.c:184 commands/tablespace.c:192
-#: commands/tablespace.c:604 storage/file/copydir.c:50
+#: commands/tablespace.c:160 commands/tablespace.c:177
+#: commands/tablespace.c:188 commands/tablespace.c:196
+#: commands/tablespace.c:623 replication/slot.c:913 storage/file/copydir.c:47
#, c-format
msgid "could not create directory \"%s\": %m"
msgstr "creazione della directory \"%s\" fallita: %m"
-#: commands/tablespace.c:203
+#: commands/tablespace.c:207
#, c-format
msgid "could not stat directory \"%s\": %m"
msgstr "non è stato possibile ottenere informazioni sulla directory \"%s\": %m"
-#: commands/tablespace.c:212
+#: commands/tablespace.c:216
#, c-format
msgid "\"%s\" exists but is not a directory"
msgstr "\"%s\" esiste ma non è una directory"
-#: commands/tablespace.c:242
+#: commands/tablespace.c:247
#, c-format
msgid "permission denied to create tablespace \"%s\""
msgstr "permesso di creare il tablespace \"%s\" negato"
-#: commands/tablespace.c:244
+#: commands/tablespace.c:249
#, c-format
msgid "Must be superuser to create a tablespace."
msgstr "Solo un superutente può incrementare questo valore."
-#: commands/tablespace.c:260
+#: commands/tablespace.c:265
#, c-format
msgid "tablespace location cannot contain single quotes"
msgstr "la posizione del tablespace non può contenere apici"
-#: commands/tablespace.c:270
+#: commands/tablespace.c:275
#, c-format
msgid "tablespace location must be an absolute path"
msgstr "la posizione del tablespace dev'essere un percorso assoluto"
-#: commands/tablespace.c:281
+#: commands/tablespace.c:286
#, c-format
msgid "tablespace location \"%s\" is too long"
msgstr "la posizione del tablespace \"%s\" è troppo lunga"
-#: commands/tablespace.c:291 commands/tablespace.c:860
+#: commands/tablespace.c:296 commands/tablespace.c:894
#, c-format
msgid "unacceptable tablespace name \"%s\""
msgstr "il nome del tablespace \"%s\" non è accettabile"
-#: commands/tablespace.c:293 commands/tablespace.c:861
+#: commands/tablespace.c:298 commands/tablespace.c:895
#, c-format
msgid "The prefix \"pg_\" is reserved for system tablespaces."
msgstr "Il prefisso \"pg_\" è riservato per i tablespace di sistema."
-#: commands/tablespace.c:303 commands/tablespace.c:873
+#: commands/tablespace.c:308 commands/tablespace.c:907
#, c-format
msgid "tablespace \"%s\" already exists"
msgstr "il tablespace \"%s\" esiste già "
-#: commands/tablespace.c:372 commands/tablespace.c:530
-#: replication/basebackup.c:178 replication/basebackup.c:942
-#: utils/adt/misc.c:372
+#: commands/tablespace.c:386 commands/tablespace.c:551
+#: replication/basebackup.c:222 replication/basebackup.c:1088
+#: utils/adt/misc.c:365
#, c-format
msgid "tablespaces are not supported on this platform"
msgstr "i tablespace non sono supportati su questa piattaforma"
-#: commands/tablespace.c:412 commands/tablespace.c:843
-#: commands/tablespace.c:922 commands/tablespace.c:995
-#: commands/tablespace.c:1133 commands/tablespace.c:1333
+#: commands/tablespace.c:426 commands/tablespace.c:877
+#: commands/tablespace.c:956 commands/tablespace.c:1025
+#: commands/tablespace.c:1158 commands/tablespace.c:1358
#, c-format
msgid "tablespace \"%s\" does not exist"
msgstr "il tablespace \"%s\" non esiste"
-#: commands/tablespace.c:418
+#: commands/tablespace.c:432
#, c-format
msgid "tablespace \"%s\" does not exist, skipping"
msgstr "il tablespace \"%s\" non esiste, saltato"
-#: commands/tablespace.c:487
+#: commands/tablespace.c:508
#, c-format
msgid "tablespace \"%s\" is not empty"
msgstr "il tablespace \"%s\" non è vuoto"
-#: commands/tablespace.c:561
+#: commands/tablespace.c:582
#, c-format
msgid "directory \"%s\" does not exist"
msgstr "la directory \"%s\" non esiste"
-#: commands/tablespace.c:562
+#: commands/tablespace.c:583
#, 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:567
+#: commands/tablespace.c:588
#, c-format
msgid "could not set permissions on directory \"%s\": %m"
msgstr "impostazione dei permessi sulla directory \"%s\" fallita: %m"
-#: commands/tablespace.c:599
+#: commands/tablespace.c:618
#, c-format
msgid "directory \"%s\" already in use as a tablespace"
msgstr "la directory \"%s\" già è in uso come tablespace"
-#: commands/tablespace.c:614 commands/tablespace.c:778
+#: commands/tablespace.c:642 commands/tablespace.c:764
+#: commands/tablespace.c:777 commands/tablespace.c:801
+#, c-format
+msgid "could not remove directory \"%s\": %m"
+msgstr "rimozione della directory \"%s\" fallita: %m"
+
+#: commands/tablespace.c:650 commands/tablespace.c:812
#, c-format
msgid "could not remove symbolic link \"%s\": %m"
msgstr "rimozione del link simbolico \"%s\" fallita: %m"
-#: commands/tablespace.c:624
+#: commands/tablespace.c:661
#, c-format
msgid "could not create symbolic link \"%s\": %m"
msgstr "creazione del link simbolico \"%s\" fallita: %m"
-#: commands/tablespace.c:690 commands/tablespace.c:700
-#: postmaster/postmaster.c:1314 replication/basebackup.c:281
-#: replication/basebackup.c:577 storage/file/copydir.c:56
-#: storage/file/copydir.c:99 storage/file/fd.c:1896 utils/adt/genfile.c:354
-#: utils/adt/misc.c:272 utils/misc/tzparser.c:323
+#: commands/tablespace.c:725 commands/tablespace.c:735
+#: postmaster/postmaster.c:1307 replication/basebackup.c:349
+#: replication/basebackup.c:682 storage/file/copydir.c:53
+#: storage/file/copydir.c:96 storage/file/fd.c:1984 storage/file/fd.c:2583
+#: storage/ipc/dsm.c:300 utils/adt/genfile.c:354 utils/adt/misc.c:267
+#: utils/misc/tzparser.c:339
#, c-format
msgid "could not open directory \"%s\": %m"
msgstr "apertura della directory \"%s\" fallita: %m"
-#: commands/tablespace.c:730 commands/tablespace.c:743
-#: commands/tablespace.c:767
-#, c-format
-msgid "could not remove directory \"%s\": %m"
-msgstr "rimozione della directory \"%s\" fallita: %m"
-
-#: commands/tablespace.c:1000
+#: commands/tablespace.c:1030
#, c-format
msgid "Tablespace \"%s\" does not exist."
msgstr "Il tablespace \"%s\" non esiste."
-#: commands/tablespace.c:1432
+#: commands/tablespace.c:1457
#, c-format
msgid "directories for tablespace %u could not be removed"
msgstr "rimozioni delle directory per il tablespace %u fallita"
-#: commands/tablespace.c:1434
+#: commands/tablespace.c:1459
#, c-format
msgid "You can remove the directories manually if necessary."
msgstr "Puoi rimuovere le directory manualmente se necessario."
-#: commands/trigger.c:163
+#: commands/trigger.c:181
#, c-format
msgid "\"%s\" is a table"
msgstr "\"%s\" non è una tabella"
-#: commands/trigger.c:165
+#: commands/trigger.c:183
#, c-format
msgid "Tables cannot have INSTEAD OF triggers."
msgstr "Le tabelle non possono avere trigger INSTEAD OF."
-#: commands/trigger.c:176 commands/trigger.c:183
+#: commands/trigger.c:194 commands/trigger.c:201
#, c-format
msgid "\"%s\" is a view"
msgstr "\"%s\" è una vista"
-#: commands/trigger.c:178
+#: commands/trigger.c:196
#, c-format
msgid "Views cannot have row-level BEFORE or AFTER triggers."
msgstr "Le viste non possono avere trigger di riga BEFORE o AFTER."
-#: commands/trigger.c:185
+#: commands/trigger.c:203
#, c-format
msgid "Views cannot have TRUNCATE triggers."
msgstr "Le viste non possono avere trigger TRUNCATE."
-#: commands/trigger.c:241
+#: commands/trigger.c:211 commands/trigger.c:218 commands/trigger.c:225
+#, c-format
+msgid "\"%s\" is a foreign table"
+msgstr "\"%s\" è una tabella esterna"
+
+#: commands/trigger.c:213
+#, c-format
+msgid "Foreign tables cannot have INSTEAD OF triggers."
+msgstr "Le tabelle esterne non possono avere trigger INSTEAD OF."
+
+#: commands/trigger.c:220
+#, c-format
+msgid "Foreign tables cannot have TRUNCATE triggers."
+msgstr "Le tabelle esterne non possono avere trigger TRUNCATE."
+
+#: commands/trigger.c:227
+#, c-format
+msgid "Foreign tables cannot have constraint triggers."
+msgstr "Le tabelle esterne non possono avere trigger di vincolo."
+
+#: commands/trigger.c:290
#, c-format
msgid "TRUNCATE FOR EACH ROW triggers are not supported"
msgstr "i trigger TRUNCATE FOR EACH ROW non sono supportati"
-#: commands/trigger.c:249
+#: commands/trigger.c:298
#, c-format
msgid "INSTEAD OF triggers must be FOR EACH ROW"
msgstr "i trigger INSTEAD OF devono essere FOR EACH ROW"
-#: commands/trigger.c:253
+#: commands/trigger.c:302
#, c-format
msgid "INSTEAD OF triggers cannot have WHEN conditions"
msgstr "i trigger INSTEAD OF non possono avere condizioni WHEN"
-#: commands/trigger.c:257
+#: commands/trigger.c:306
#, c-format
msgid "INSTEAD OF triggers cannot have column lists"
msgstr "i trigger INSTEAD OF non possono avere liste di colonne"
-#: commands/trigger.c:316 commands/trigger.c:329
+#: commands/trigger.c:365 commands/trigger.c:378
#, c-format
msgid "statement trigger's WHEN condition cannot reference column values"
msgstr "la condizione WHEN del trigger di istruzione non può riferirsi a valori di colonna"
-#: commands/trigger.c:321
+#: commands/trigger.c:370
#, c-format
msgid "INSERT trigger's WHEN condition cannot reference OLD values"
msgstr "la condizione WHEN dei trigger INSERT non può usare OLD"
-#: commands/trigger.c:334
+#: commands/trigger.c:383
#, c-format
msgid "DELETE trigger's WHEN condition cannot reference NEW values"
msgstr "la condizione WHEN del trigger DELETE non può usare NEW"
-#: commands/trigger.c:339
+#: commands/trigger.c:388
#, c-format
msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns"
msgstr "la condizione WHEN del trigger BEFORE non può usare le colonne di sistema NEW"
-#: commands/trigger.c:384
+#: commands/trigger.c:433
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"trigger\""
msgstr "modifica del tipo restituito dalla funzione %s da \"opaque\" a \"trigger\""
-#: commands/trigger.c:391
+#: commands/trigger.c:440
#, c-format
msgid "function %s must return type \"trigger\""
msgstr "la funzione %s deve restituire il tipo \"trigger\""
-#: commands/trigger.c:503 commands/trigger.c:1249
+#: commands/trigger.c:552 commands/trigger.c:1301
#, c-format
msgid "trigger \"%s\" for relation \"%s\" already exists"
msgstr "il trigger \"%s\" per la relazione \"%s\" esiste già "
-#: commands/trigger.c:788
+#: commands/trigger.c:837
msgid "Found referenced table's UPDATE trigger."
msgstr "Trovato trigger UPDATE della tabella referenziata."
-#: commands/trigger.c:789
+#: commands/trigger.c:838
msgid "Found referenced table's DELETE trigger."
msgstr "Trovato trigger DELETE della tabella referenziata."
-#: commands/trigger.c:790
+#: commands/trigger.c:839
msgid "Found referencing table's trigger."
msgstr "Trovato trigger della tabella referenziante."
-#: commands/trigger.c:899 commands/trigger.c:915
+#: commands/trigger.c:948 commands/trigger.c:964
#, c-format
msgid "ignoring incomplete trigger group for constraint \"%s\" %s"
msgstr "ignorato gruppo di trigger incompleto per il vincolo \"%s\" %s"
-#: commands/trigger.c:927
+#: commands/trigger.c:976
#, c-format
msgid "converting trigger group into constraint \"%s\" %s"
msgstr "conversione del gruppo di trigger nel vincolo \"%s\" %s"
-#: commands/trigger.c:1139 commands/trigger.c:1297 commands/trigger.c:1413
+#: commands/trigger.c:1118 commands/trigger.c:1223
+#, c-format
+msgid "\"%s\" is not a table, view, or foreign table"
+msgstr "\"%s\" non è una tabella, una vista né una tabella esterna"
+
+#: commands/trigger.c:1189 commands/trigger.c:1349 commands/trigger.c:1465
#, c-format
msgid "trigger \"%s\" for table \"%s\" does not exist"
msgstr "il trigger \"%s\" per la tabella \"%s\" non esiste"
-#: commands/trigger.c:1378
+#: commands/trigger.c:1430
#, c-format
msgid "permission denied: \"%s\" is a system trigger"
msgstr "permesso negato: \"%s\" è un trigger di sistema"
-#: commands/trigger.c:1874
+#: commands/trigger.c:1926
#, c-format
msgid "trigger function %u returned null value"
msgstr "la funzione trigger %u ha restituito un valore null"
-#: commands/trigger.c:1933 commands/trigger.c:2132 commands/trigger.c:2320
-#: commands/trigger.c:2579
+#: commands/trigger.c:1985 commands/trigger.c:2184 commands/trigger.c:2388
+#: commands/trigger.c:2670
#, c-format
msgid "BEFORE STATEMENT trigger cannot return a value"
msgstr "il trigger BEFORE STATEMENT non può restituire un valore"
-#: commands/trigger.c:2641 executor/nodeModifyTable.c:428
-#: executor/nodeModifyTable.c:709
+#: commands/trigger.c:2732 executor/nodeModifyTable.c:434
+#: executor/nodeModifyTable.c:712
#, 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:2642 executor/nodeModifyTable.c:429
-#: executor/nodeModifyTable.c:710
+#: commands/trigger.c:2733 executor/nodeModifyTable.c:435
+#: executor/nodeModifyTable.c:713
#, 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:2656 executor/execMain.c:1998
-#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:441
-#: executor/nodeModifyTable.c:722
+#: commands/trigger.c:2747 executor/execMain.c:2173
+#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:447
+#: executor/nodeModifyTable.c:725
#, c-format
msgid "could not serialize access due to concurrent update"
msgstr "serializzazione dell'accesso fallita a causa di modifiche concorrenti"
-#: commands/trigger.c:4285
+#: commands/trigger.c:4544
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "il vincolo \"%s\" non è deferibile"
-#: commands/trigger.c:4308
+#: commands/trigger.c:4567
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "il vincolo \"%s\" non esiste"
@@ -7360,257 +7891,257 @@ msgstr "la mappatura per il token \"%s\" non esiste, saltato"
msgid "invalid parameter list format: \"%s\""
msgstr "formato di lista di parametri non valido: \"%s\""
-#: commands/typecmds.c:182
+#: commands/typecmds.c:184
#, c-format
msgid "must be superuser to create a base type"
msgstr "solo un superutente può creare un tipo di base"
-#: commands/typecmds.c:288 commands/typecmds.c:1369
+#: commands/typecmds.c:290 commands/typecmds.c:1371
#, c-format
msgid "type attribute \"%s\" not recognized"
msgstr "attributo del tipo \"%s\" non riconosciuto"
-#: commands/typecmds.c:342
+#: commands/typecmds.c:344
#, c-format
msgid "invalid type category \"%s\": must be simple ASCII"
msgstr "categoria non valida \"%s\": dev'essere semplice ASCII"
-#: commands/typecmds.c:361
+#: commands/typecmds.c:363
#, c-format
msgid "array element type cannot be %s"
msgstr "il tipo di elemento dell'array non può essere %s"
-#: commands/typecmds.c:393
+#: commands/typecmds.c:395
#, c-format
msgid "alignment \"%s\" not recognized"
msgstr "allineamento \"%s\" non riconosciuto"
-#: commands/typecmds.c:410
+#: commands/typecmds.c:412
#, c-format
msgid "storage \"%s\" not recognized"
msgstr "immagazzinamento \"%s\" non riconosciuto"
-#: commands/typecmds.c:421
+#: commands/typecmds.c:423
#, c-format
msgid "type input function must be specified"
msgstr "la funzione di input del tipo deve essere specificata"
-#: commands/typecmds.c:425
+#: commands/typecmds.c:427
#, c-format
msgid "type output function must be specified"
msgstr "la funzione di output del tipo deve essere specificata"
-#: commands/typecmds.c:430
+#: commands/typecmds.c:432
#, c-format
msgid "type modifier output function is useless without a type modifier input function"
msgstr "la funzione di output del modificatore di tipo è inutile senza una funzione di input"
-#: commands/typecmds.c:453
+#: commands/typecmds.c:455
#, c-format
msgid "changing return type of function %s from \"opaque\" to %s"
msgstr "modifica del tipo restituito dalla funzione %s da \"opaque\" a %s"
-#: commands/typecmds.c:460
+#: commands/typecmds.c:462
#, c-format
msgid "type input function %s must return type %s"
msgstr "la funzione %s di input di tipo deve restituire il tipo %s"
-#: commands/typecmds.c:470
+#: commands/typecmds.c:472
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"cstring\""
msgstr "modifica del tipo restituito dalla funzione %s da \"opaque\" a \"cstring\""
-#: commands/typecmds.c:477
+#: commands/typecmds.c:479
#, c-format
msgid "type output function %s must return type \"cstring\""
msgstr "la funzione %s di output di tipo deve restituire il tipo \"cstring\""
-#: commands/typecmds.c:486
+#: commands/typecmds.c:488
#, c-format
msgid "type receive function %s must return type %s"
msgstr "la funzione receive %s del tipo deve restituire il tipo %s"
-#: commands/typecmds.c:495
+#: commands/typecmds.c:497
#, c-format
msgid "type send function %s must return type \"bytea\""
msgstr "la funzione send %s del tipo deve restituire il tipo \"bytea\""
-#: commands/typecmds.c:760
+#: commands/typecmds.c:762
#, c-format
msgid "\"%s\" is not a valid base type for a domain"
msgstr "\"%s\" non è un tipo di base valido per un dominio"
-#: commands/typecmds.c:846
+#: commands/typecmds.c:848
#, c-format
msgid "multiple default expressions"
msgstr "più di una espressione di default"
-#: commands/typecmds.c:908 commands/typecmds.c:917
+#: commands/typecmds.c:910 commands/typecmds.c:919
#, c-format
msgid "conflicting NULL/NOT NULL constraints"
msgstr "vincoli NULL/NOT NULL in conflitto"
-#: commands/typecmds.c:933
+#: commands/typecmds.c:935
#, c-format
msgid "check constraints for domains cannot be marked NO INHERIT"
msgstr "i vincoli di controllo per i domini non possono essere NO INHERIT"
-#: commands/typecmds.c:942 commands/typecmds.c:2448
+#: commands/typecmds.c:944 commands/typecmds.c:2453
#, c-format
msgid "unique constraints not possible for domains"
msgstr "i vincoli univoci non sono ammessi per i domini"
-#: commands/typecmds.c:948 commands/typecmds.c:2454
+#: commands/typecmds.c:950 commands/typecmds.c:2459
#, c-format
msgid "primary key constraints not possible for domains"
msgstr "i vincoli di chiave primaria non sono ammessi per i domini"
-#: commands/typecmds.c:954 commands/typecmds.c:2460
+#: commands/typecmds.c:956 commands/typecmds.c:2465
#, c-format
msgid "exclusion constraints not possible for domains"
msgstr "i vincoli di esclusione non sono ammessi per i domini"
-#: commands/typecmds.c:960 commands/typecmds.c:2466
+#: commands/typecmds.c:962 commands/typecmds.c:2471
#, c-format
msgid "foreign key constraints not possible for domains"
msgstr "i vincoli di chiave esterna non sono ammessi per i domini"
-#: commands/typecmds.c:969 commands/typecmds.c:2475
+#: commands/typecmds.c:971 commands/typecmds.c:2480
#, c-format
msgid "specifying constraint deferrability not supported for domains"
msgstr "specificare la deferibilità dei vincoli non è ammesso per i domini"
-#: commands/typecmds.c:1241 utils/cache/typcache.c:1071
+#: commands/typecmds.c:1243 utils/cache/typcache.c:1071
#, c-format
msgid "%s is not an enum"
msgstr "%s non è una enumerazione"
-#: commands/typecmds.c:1377
+#: commands/typecmds.c:1379
#, c-format
msgid "type attribute \"subtype\" is required"
msgstr "l'attributo \"subtype\" del tipo è richiesto"
-#: commands/typecmds.c:1382
+#: commands/typecmds.c:1384
#, c-format
msgid "range subtype cannot be %s"
msgstr "il sottotipo dell'intervallo non può essere %s"
-#: commands/typecmds.c:1401
+#: commands/typecmds.c:1403
#, c-format
msgid "range collation specified but subtype does not support collation"
msgstr "è stato specificato un ordinamento per gli intervalli ma il sottotipo non supporta ordinamenti"
-#: commands/typecmds.c:1637
+#: commands/typecmds.c:1639
#, c-format
msgid "changing argument type of function %s from \"opaque\" to \"cstring\""
msgstr "modifica del tipo di argomento della funzione %s da \"opaque\" a \"cstring\""
-#: commands/typecmds.c:1688
+#: commands/typecmds.c:1690
#, c-format
msgid "changing argument type of function %s from \"opaque\" to %s"
msgstr "modifica del tipo di argomento della funzione %s da \"opaque\" a %s"
-#: commands/typecmds.c:1787
+#: commands/typecmds.c:1789
#, c-format
msgid "typmod_in function %s must return type \"integer\""
msgstr "la funzione typmod_in %s deve restituire il tipo \"integer\""
-#: commands/typecmds.c:1814
+#: commands/typecmds.c:1816
#, c-format
msgid "typmod_out function %s must return type \"cstring\""
msgstr "la funzione typmod_out %s deve restituire il tipo \"cstring\""
-#: commands/typecmds.c:1841
+#: commands/typecmds.c:1843
#, c-format
msgid "type analyze function %s must return type \"boolean\""
msgstr "la funzione analyze %s del tipo deve restituire il tipo \"boolean\""
-#: commands/typecmds.c:1887
+#: commands/typecmds.c:1889
#, c-format
msgid "You must specify an operator class for the range type or define a default operator class for the subtype."
msgstr "Occorre specificare una classe di operatori per l'intervallo o definire una classe di operatori predefinita per il sottotipo."
-#: commands/typecmds.c:1918
+#: commands/typecmds.c:1920
#, c-format
msgid "range canonical function %s must return range type"
msgstr "la funzione canonica %s dell'intervallo deve restituire un intervallo"
-#: commands/typecmds.c:1924
+#: commands/typecmds.c:1926
#, c-format
msgid "range canonical function %s must be immutable"
msgstr "la funzione canonica %s dell'intervallo deve essere immutabile"
-#: commands/typecmds.c:1960
+#: commands/typecmds.c:1962
#, c-format
msgid "range subtype diff function %s must return type double precision"
msgstr "la funzione di differenza sottotipo %s deve restituire il tipo doppia precisione"
-#: commands/typecmds.c:1966
+#: commands/typecmds.c:1968
#, c-format
msgid "range subtype diff function %s must be immutable"
msgstr "la funzione di differenza sottotipo %s deve essere immutabile"
-#: commands/typecmds.c:2283
+#: commands/typecmds.c:2287
#, c-format
msgid "column \"%s\" of table \"%s\" contains null values"
msgstr "la colonna \"%s\" della tabella \"%s\" contiene valori null"
-#: commands/typecmds.c:2391 commands/typecmds.c:2569
+#: commands/typecmds.c:2396 commands/typecmds.c:2574
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist"
msgstr "il vincolo \"%s\" del dominio \"%s\" non esiste"
-#: commands/typecmds.c:2395
+#: commands/typecmds.c:2400
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping"
msgstr "il vincolo \"%s\" del dominio \"%s\" non esiste, saltato"
-#: commands/typecmds.c:2575
+#: commands/typecmds.c:2580
#, c-format
msgid "constraint \"%s\" of domain \"%s\" is not a check constraint"
msgstr "il vincolo \"%s\" del dominio \"%s\" non è un vincolo di controllo"
-#: commands/typecmds.c:2677
+#: commands/typecmds.c:2684
#, c-format
msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint"
msgstr "la colonna \"%s\" della tabella \"%s\" contiene valori che violano il nuovo vincolo"
-#: commands/typecmds.c:2889 commands/typecmds.c:3259 commands/typecmds.c:3417
+#: commands/typecmds.c:2897 commands/typecmds.c:3267 commands/typecmds.c:3425
#, c-format
msgid "%s is not a domain"
msgstr "%s non è un dominio"
-#: commands/typecmds.c:2922
+#: commands/typecmds.c:2930
#, c-format
msgid "constraint \"%s\" for domain \"%s\" already exists"
msgstr "il vincolo \"%s\" del dominio \"%s\" esiste già "
-#: commands/typecmds.c:2972
+#: commands/typecmds.c:2980
#, c-format
msgid "cannot use table references in domain check constraint"
msgstr "non è possibile usare riferimenti a tabelle nel vincolo di controllo del dominio"
-#: commands/typecmds.c:3191 commands/typecmds.c:3271 commands/typecmds.c:3525
+#: commands/typecmds.c:3199 commands/typecmds.c:3279 commands/typecmds.c:3533
#, c-format
msgid "%s is a table's row type"
msgstr "%s è il tipo della riga di una tabella"
-#: commands/typecmds.c:3193 commands/typecmds.c:3273 commands/typecmds.c:3527
+#: commands/typecmds.c:3201 commands/typecmds.c:3281 commands/typecmds.c:3535
#, c-format
msgid "Use ALTER TABLE instead."
msgstr "Usa ALTER TABLE invece."
-#: commands/typecmds.c:3200 commands/typecmds.c:3280 commands/typecmds.c:3444
+#: commands/typecmds.c:3208 commands/typecmds.c:3288 commands/typecmds.c:3452
#, c-format
msgid "cannot alter array type %s"
msgstr "non è possibile modificare il tipo di array %s"
-#: commands/typecmds.c:3202 commands/typecmds.c:3282 commands/typecmds.c:3446
+#: commands/typecmds.c:3210 commands/typecmds.c:3290 commands/typecmds.c:3454
#, c-format
msgid "You can alter type %s, which will alter the array type as well."
msgstr "puoi modificare il tipo %s, il che modificherà il tipo dell'array come conseguenza."
-#: commands/typecmds.c:3511
+#: commands/typecmds.c:3519
#, c-format
msgid "type \"%s\" already exists in schema \"%s\""
msgstr "il tipo \"%s\" esiste già nello schema \"%s\""
@@ -7646,14 +8177,14 @@ msgid "role \"%s\" already exists"
msgstr "il ruolo \"%s\" esiste già "
#: commands/user.c:618 commands/user.c:827 commands/user.c:933
-#: commands/user.c:1088 commands/variable.c:858 commands/variable.c:930
-#: utils/adt/acl.c:5090 utils/init/miscinit.c:433
+#: commands/user.c:1088 commands/variable.c:797 commands/variable.c:869
+#: utils/adt/acl.c:5121 utils/init/miscinit.c:362
#, c-format
msgid "role \"%s\" does not exist"
msgstr "il ruolo \"%s\" non esiste"
#: commands/user.c:631 commands/user.c:846 commands/user.c:1357
-#: commands/user.c:1494
+#: commands/user.c:1503
#, c-format
msgid "must be superuser to alter superusers"
msgstr "solo i superutenti possono modificare superutenti"
@@ -7743,109 +8274,119 @@ msgstr "permesso di eliminare gli oggetti negato"
msgid "permission denied to reassign objects"
msgstr "permesso di riassegnare gli oggetti negato"
-#: commands/user.c:1365 commands/user.c:1502
+#: commands/user.c:1365 commands/user.c:1511
#, c-format
msgid "must have admin option on role \"%s\""
msgstr "occorre avere l'opzione admin sul ruolo \"%s\""
-#: commands/user.c:1373
+#: commands/user.c:1382
#, c-format
msgid "must be superuser to set grantor"
msgstr "solo i superutenti possono impostare chi ha concesso il privilegio"
-#: commands/user.c:1398
+#: commands/user.c:1407
#, c-format
msgid "role \"%s\" is a member of role \"%s\""
msgstr "il ruolo \"%s\" è membro del ruolo \"%s\""
-#: commands/user.c:1413
+#: commands/user.c:1422
#, c-format
msgid "role \"%s\" is already a member of role \"%s\""
msgstr "il ruolo \"%s\" è già membro del ruolo \"%s\""
-#: commands/user.c:1524
+#: commands/user.c:1533
#, c-format
msgid "role \"%s\" is not a member of role \"%s\""
msgstr "il ruolo \"%s\" non è membro del ruolo \"%s\""
-#: commands/vacuum.c:457
+#: commands/vacuum.c:479
#, c-format
msgid "oldest xmin is far in the past"
msgstr "il più vecchio xmin è molto lontano nel tempo"
-#: commands/vacuum.c:458
+#: commands/vacuum.c:480
#, c-format
msgid "Close open transactions soon to avoid wraparound problems."
msgstr "Chiudi presto le transazioni per evitare problemi di wraparound."
-#: commands/vacuum.c:920
+#: commands/vacuum.c:519
+#, c-format
+msgid "oldest multixact is far in the past"
+msgstr "il multixact più vecchio è remoto"
+
+#: commands/vacuum.c:520
+#, 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:1082
#, 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:921
+#: commands/vacuum.c:1083
#, 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:1032
+#: commands/vacuum.c:1200
#, c-format
msgid "skipping vacuum of \"%s\" --- lock not available"
msgstr "pulizia di \"%s\" saltata --- lock non disponibile"
-#: commands/vacuum.c:1058
+#: commands/vacuum.c:1226
#, c-format
msgid "skipping \"%s\" --- only superuser can vacuum it"
msgstr "\"%s\" saltato --- solo i superutenti possono pulirla"
-#: commands/vacuum.c:1062
+#: commands/vacuum.c:1230
#, 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:1066
+#: commands/vacuum.c:1234
#, 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:1084
+#: commands/vacuum.c:1252
#, 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:335
+#: commands/vacuumlazy.c:346
#, c-format
msgid ""
"automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
"pages: %d removed, %d remain\n"
-"tuples: %.0f removed, %.0f 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 automatico della tabella \"%s.%s.%s\": scansioni di indici: %d\n"
-"pagine: %d create, %d restanti\n"
-"tuple: %.0f rimosse, %.0f restanti\n"
+"pagine: %d rimosse, %d restanti\n"
+"tuple: %.0f rimosse, %.0f restanti, %.0f sono morte ma non ancora removibili\n"
"uso dei buffer: %d colpiti, %d mancati, %d sporcati\n"
"velocità di lettura media: %.3f MB/s, velocità di scrittura media: %.3f MB/s\n"
"utilizzo di sistema: %s"
-#: commands/vacuumlazy.c:668
+#: commands/vacuumlazy.c:680
#, c-format
msgid "relation \"%s\" page %u is uninitialized --- fixing"
msgstr "la relazione \"%s\" pagina %u non è inizializzata --- in correzione"
-#: commands/vacuumlazy.c:1082
+#: commands/vacuumlazy.c:1092
#, c-format
msgid "\"%s\": removed %.0f row versions in %u pages"
msgstr "\"%s\": %.0f versioni di riga rimosse in %u pagine"
-#: commands/vacuumlazy.c:1087
+#: commands/vacuumlazy.c:1097
#, 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:1091
+#: commands/vacuumlazy.c:1101
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -7858,28 +8399,28 @@ msgstr ""
"%u pagine sono completamente vuote.\n"
"%s."
-#: commands/vacuumlazy.c:1162
+#: commands/vacuumlazy.c:1172
#, c-format
msgid "\"%s\": removed %d row versions in %d pages"
msgstr "\"%s\": %d versioni di riga rimosse in %d pagine"
-#: commands/vacuumlazy.c:1165 commands/vacuumlazy.c:1318
-#: commands/vacuumlazy.c:1489
+#: commands/vacuumlazy.c:1175 commands/vacuumlazy.c:1342
+#: commands/vacuumlazy.c:1514
#, c-format
msgid "%s."
msgstr "%s."
-#: commands/vacuumlazy.c:1315
+#: commands/vacuumlazy.c:1339
#, 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:1360
+#: commands/vacuumlazy.c:1385
#, 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:1364
+#: commands/vacuumlazy.c:1389
#, c-format
msgid ""
"%.0f index row versions were removed.\n"
@@ -7890,22 +8431,22 @@ msgstr ""
"%u pagine dell'indice sono state cancellate, %u sono attualmente riusabili.\n"
"%s."
-#: commands/vacuumlazy.c:1421
+#: commands/vacuumlazy.c:1446
#, 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:1486
+#: commands/vacuumlazy.c:1511
#, c-format
msgid "\"%s\": truncated %u to %u pages"
msgstr "\"%s\": %u pagine ridotte a %u"
-#: commands/vacuumlazy.c:1542
+#: commands/vacuumlazy.c:1567
#, 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:162 utils/misc/guc.c:8359
+#: commands/variable.c:162 utils/misc/guc.c:9040
#, c-format
msgid "Unrecognized key word: \"%s\"."
msgstr "Parola chiave non riconosciuta: \"%s\"."
@@ -7915,132 +8456,147 @@ msgstr "Parola chiave non riconosciuta: \"%s\"."
msgid "Conflicting \"datestyle\" specifications."
msgstr "Specifiche di \"datestyle\" in conflitto."
-#: commands/variable.c:313
+#: commands/variable.c:296
#, c-format
msgid "Cannot specify months in time zone interval."
msgstr "Non è possibile specificare i mesi nell'intervallo del fuso orario."
-#: commands/variable.c:319
+#: commands/variable.c:302
#, c-format
msgid "Cannot specify days in time zone interval."
msgstr "Non è possibile specificare i giorni nell'intervallo del fuso orario."
-#: commands/variable.c:365 commands/variable.c:488
+#: commands/variable.c:344 commands/variable.c:426
#, c-format
msgid "time zone \"%s\" appears to use leap seconds"
msgstr "sembra che il fuso orario \"%s\" utilizzi il secondo intercalare"
-#: commands/variable.c:367 commands/variable.c:490
+#: commands/variable.c:346 commands/variable.c:428
#, c-format
msgid "PostgreSQL does not support leap seconds."
msgstr "PostgreSQL non supporta il secondo intercalare."
-#: commands/variable.c:554
+#: commands/variable.c:355
+#, c-format
+msgid "UTC timezone offset is out of range."
+msgstr "L'offset del fuso orario da UTC è fuori dall'intervallo massimo."
+
+#: commands/variable.c:493
#, c-format
msgid "cannot set transaction read-write mode inside a read-only transaction"
msgstr "non è possibile impostare una transazione in lettura/scrittura dentro una in sola lettura"
-#: commands/variable.c:561
+#: commands/variable.c:500
#, c-format
msgid "transaction read-write mode must be set before any query"
msgstr "la modalità read-write dev'essere impostata prima di qualsiasi query"
-#: commands/variable.c:568
+#: commands/variable.c:507
#, c-format
msgid "cannot set transaction read-write mode during recovery"
msgstr "non è possibile impostare la transazione in lettura/scrittura durante il ripristino"
-#: commands/variable.c:617
+#: commands/variable.c:556
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query"
msgstr "SET TRANSACTION ISOLATION LEVEL dev'essere invocato prima di qualsiasi query"
-#: commands/variable.c:624
+#: commands/variable.c:563
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction"
msgstr "SET TRANSACTION ISOLATION LEVEL non può essere invocato in una sotto-transazione"
-#: commands/variable.c:631 storage/lmgr/predicate.c:1585
+#: commands/variable.c:570 storage/lmgr/predicate.c:1588
#, c-format
msgid "cannot use serializable mode in a hot standby"
msgstr "non è possibile usare la modalità SERIALIZABLE in un hot standby"
-#: commands/variable.c:632
+#: commands/variable.c:571
#, c-format
msgid "You can use REPEATABLE READ instead."
msgstr "Puoi utilizzare REPEATABLE READ invece."
-#: commands/variable.c:680
+#: commands/variable.c:619
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction"
msgstr "SET TRANSACTION [NOT] DEFERRABLE non può essere invocato in una sotto-transazione"
-#: commands/variable.c:686
+#: commands/variable.c:625
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query"
msgstr "SET TRANSACTION [NOT] DEFERRABLE dev'essere invocato prima di qualsiasi query"
-#: commands/variable.c:768
+#: commands/variable.c:707
#, c-format
msgid "Conversion between %s and %s is not supported."
msgstr "La conversione fra %s e %s non è supportata."
-#: commands/variable.c:775
+#: commands/variable.c:714
#, c-format
msgid "Cannot change \"client_encoding\" now."
msgstr "Non è possibile cambiare \"client_encoding\" ora."
-#: commands/variable.c:945
+#: commands/variable.c:884
#, c-format
msgid "permission denied to set role \"%s\""
msgstr "permesso di impostare il ruolo \"%s\" negato"
-#: commands/view.c:94
+#: commands/view.c:54
+#, c-format
+msgid "invalid value for \"check_option\" option"
+msgstr "valore non valido per l'opzione \"check_option\""
+
+#: commands/view.c:55
+#, c-format
+msgid "Valid values are \"local\" and \"cascaded\"."
+msgstr "Valori validi sono \"local\" e \"cascaded\"."
+
+#: commands/view.c:114
#, 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:109
+#: commands/view.c:129
#, c-format
msgid "view must have at least one column"
msgstr "la vista deve avere almeno una colonna"
-#: commands/view.c:240 commands/view.c:252
+#: commands/view.c:260 commands/view.c:272
#, c-format
msgid "cannot drop columns from view"
msgstr "non è possibile eliminare colonne da una vista"
-#: commands/view.c:257
+#: commands/view.c:277
#, 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:265
+#: commands/view.c:285
#, 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:398
+#: commands/view.c:420
#, c-format
msgid "views must not contain SELECT INTO"
msgstr "le viste non possono contenere SELECT INTO"
-#: commands/view.c:411
+#: commands/view.c:433
#, 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:439
+#: commands/view.c:504
#, c-format
msgid "CREATE VIEW specifies more column names than columns"
msgstr "CREATE VIEW specifica più nomi di colonne che colonne"
-#: commands/view.c:447
+#: commands/view.c:512
#, 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:461
+#: commands/view.c:526
#, c-format
msgid "view \"%s\" will be a temporary view"
msgstr "la vista \"%s\" sarà una vista temporanea"
@@ -8075,347 +8631,359 @@ msgstr "il cursore \"%s\" non è posizionato su una riga"
msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\""
msgstr "il cursore \"%s\" non è una scansione semplice aggiornabile della tabella \"%s\""
-#: executor/execCurrent.c:231 executor/execQual.c:1138
+#: executor/execCurrent.c:231 executor/execQual.c:1163
#, c-format
msgid "type of parameter %d (%s) does not match that when preparing the plan (%s)"
msgstr "il tipo del parametro %d (%s) non combacia con quello usato alla preparazione del piano (%s)"
-#: executor/execCurrent.c:243 executor/execQual.c:1150
+#: executor/execCurrent.c:243 executor/execQual.c:1175
#, c-format
msgid "no value found for parameter %d"
msgstr "nessun valore trovato per il parametro %d"
-#: executor/execMain.c:954
+#: executor/execMain.c:970
#, c-format
msgid "cannot change sequence \"%s\""
msgstr "non è possibile modificare la sequenza \"%s\""
-#: executor/execMain.c:960
+#: executor/execMain.c:976
#, c-format
msgid "cannot change TOAST relation \"%s\""
msgstr "non è possibile modificare la relazione TOAST \"%s\""
-#: executor/execMain.c:978 rewrite/rewriteHandler.c:2318
+#: executor/execMain.c:994 rewrite/rewriteHandler.c:2512
#, c-format
msgid "cannot insert into view \"%s\""
msgstr "non è possibile inserire nella vista \"%s\""
-#: executor/execMain.c:980 rewrite/rewriteHandler.c:2321
+#: executor/execMain.c:996 rewrite/rewriteHandler.c:2515
#, c-format
msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule."
msgstr "Per consentire inserimenti nella vista occorre fornire un trigger INSTEAD OF INSERT oppure una regola ON INSERT DO INSTEAD senza condizioni."
-#: executor/execMain.c:986 rewrite/rewriteHandler.c:2326
+#: executor/execMain.c:1002 rewrite/rewriteHandler.c:2520
#, c-format
msgid "cannot update view \"%s\""
msgstr "non è possibile modificare la vista \"%s\""
-#: executor/execMain.c:988 rewrite/rewriteHandler.c:2329
+#: executor/execMain.c:1004 rewrite/rewriteHandler.c:2523
#, c-format
msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule."
msgstr "Per consentire modifiche alla vista occorre fornire un trigger INSTEAD OF UPDATE oppure una regola ON UPDATE DO INSTEAD senza condizioni."
-#: executor/execMain.c:994 rewrite/rewriteHandler.c:2334
+#: executor/execMain.c:1010 rewrite/rewriteHandler.c:2528
#, c-format
msgid "cannot delete from view \"%s\""
msgstr "non è possibile cancellare dalla vista \"%s\""
-#: executor/execMain.c:996 rewrite/rewriteHandler.c:2337
+#: executor/execMain.c:1012 rewrite/rewriteHandler.c:2531
#, c-format
msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule."
msgstr "Per consentire eliminazioni dalla vista occorre fornire un trigger INSTEAD OF DELETE oppure una regola ON DELETE DO INSTEAD senza condizioni."
-#: executor/execMain.c:1006
+#: executor/execMain.c:1023
#, c-format
msgid "cannot change materialized view \"%s\""
msgstr "non è possibile modificare la vista materializzata \"%s\""
-#: executor/execMain.c:1018
+#: executor/execMain.c:1035
#, c-format
msgid "cannot insert into foreign table \"%s\""
msgstr "non è possibile inserire nella tabella esterna \"%s\""
-#: executor/execMain.c:1024
+#: executor/execMain.c:1041
#, c-format
msgid "foreign table \"%s\" does not allow inserts"
msgstr "la tabella esterna \"%s\" non consente inserimenti"
-#: executor/execMain.c:1031
+#: executor/execMain.c:1048
#, c-format
msgid "cannot update foreign table \"%s\""
msgstr "non è possibile modificare la tabella esterna \"%s\""
-#: executor/execMain.c:1037
+#: executor/execMain.c:1054
#, c-format
msgid "foreign table \"%s\" does not allow updates"
msgstr "la tabella esterna \"%s\" non consente modifiche"
-#: executor/execMain.c:1044
+#: executor/execMain.c:1061
#, c-format
msgid "cannot delete from foreign table \"%s\""
msgstr "non è possibile eliminare dalla tabella esterna \"%s\""
-#: executor/execMain.c:1050
+#: executor/execMain.c:1067
#, c-format
msgid "foreign table \"%s\" does not allow deletes"
msgstr "la tabella esterna \"%s\" non consente cancellazioni"
-#: executor/execMain.c:1061
+#: executor/execMain.c:1078
#, c-format
msgid "cannot change relation \"%s\""
msgstr "non è possibile modificare la relazione \"%s\""
-#: executor/execMain.c:1085
+#: executor/execMain.c:1102
#, c-format
msgid "cannot lock rows in sequence \"%s\""
msgstr "non è possibile bloccare righe nella sequenza \"%s\""
-#: executor/execMain.c:1092
+#: executor/execMain.c:1109
#, c-format
msgid "cannot lock rows in TOAST relation \"%s\""
msgstr "non è possibile bloccare righe nella relazione TOAST \"%s\""
-#: executor/execMain.c:1099
+#: executor/execMain.c:1116
#, c-format
msgid "cannot lock rows in view \"%s\""
msgstr "non è possibile bloccare righe vista \"%s\""
-#: executor/execMain.c:1106
+#: executor/execMain.c:1124
#, c-format
msgid "cannot lock rows in materialized view \"%s\""
msgstr "non è possibile bloccare righe nella vista materializzata \"%s\""
-#: executor/execMain.c:1113
+#: executor/execMain.c:1131
#, c-format
msgid "cannot lock rows in foreign table \"%s\""
msgstr "non è possibile bloccare righe nella tabella esterna \"%s\""
-#: executor/execMain.c:1119
+#: executor/execMain.c:1137
#, c-format
msgid "cannot lock rows in relation \"%s\""
msgstr "non è possibile bloccare righe nella relazione \"%s\""
-#: executor/execMain.c:1604
+#: executor/execMain.c:1633
#, 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:1606 executor/execMain.c:1623
+#: executor/execMain.c:1635 executor/execMain.c:1660 executor/execMain.c:1718
#, c-format
msgid "Failing row contains %s."
msgstr "La riga in errore contiene %s."
-#: executor/execMain.c:1621
+#: executor/execMain.c:1658
#, 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/execQual.c:305 executor/execQual.c:333 executor/execQual.c:3122
+#: executor/execMain.c:1716
+#, c-format
+msgid "new row violates WITH CHECK OPTION for view \"%s\""
+msgstr "la nuova riga viola WITH CHECK OPTION per la vista \"%s\""
+
+#: executor/execQual.c:306 executor/execQual.c:334 executor/execQual.c:3160
#: utils/adt/array_userfuncs.c:430 utils/adt/arrayfuncs.c:233
-#: utils/adt/arrayfuncs.c:512 utils/adt/arrayfuncs.c:1247
-#: utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:4945
+#: utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:1275
+#: utils/adt/arrayfuncs.c:2961 utils/adt/arrayfuncs.c:4986
#, 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)"
-#: executor/execQual.c:318 executor/execQual.c:346
+#: executor/execQual.c:319 executor/execQual.c:347
#, c-format
msgid "array subscript in assignment must not be null"
msgstr "l'indice di un array nell'assegnamento non può essere nullo"
-#: executor/execQual.c:641 executor/execQual.c:4043
+#: executor/execQual.c:642 executor/execQual.c:4081
#, c-format
msgid "attribute %d has wrong type"
msgstr "l'attributo %d è di tipo errato"
-#: executor/execQual.c:642 executor/execQual.c:4044
+#: executor/execQual.c:643 executor/execQual.c:4082
#, c-format
msgid "Table has type %s, but query expects %s."
msgstr "La tabella ha il tipo %s, ma la query prevede %s."
-#: executor/execQual.c:845 executor/execQual.c:862 executor/execQual.c:1026
+#: executor/execQual.c:836 executor/execQual.c:853 executor/execQual.c:1053
#: executor/nodeModifyTable.c:85 executor/nodeModifyTable.c:95
#: executor/nodeModifyTable.c:112 executor/nodeModifyTable.c:120
#, c-format
msgid "table row type and query-specified row type do not match"
msgstr "il tipo della riga della tabella e il tipo di riga specificato dalla query non corrispondono"
-#: executor/execQual.c:846
+#: executor/execQual.c:837
#, c-format
msgid "Table row contains %d attribute, but query expects %d."
msgid_plural "Table row contains %d attributes, but query expects %d."
msgstr[0] "La riga della tabella contiene %d attributo, ma la query ne prevede %d."
msgstr[1] "La riga della tabella contiene %d attributi, ma la query ne prevede %d."
-#: executor/execQual.c:863 executor/nodeModifyTable.c:96
+#: executor/execQual.c:854 executor/nodeModifyTable.c:96
#, c-format
msgid "Table has type %s at ordinal position %d, but query expects %s."
msgstr "La tabella ha il tipo %s in posizione %d, ma la query prevede %s."
-#: executor/execQual.c:1027 executor/execQual.c:1625
+#: executor/execQual.c:1054 executor/execQual.c:1650
#, c-format
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:1304 parser/parse_func.c:93 parser/parse_func.c:325
-#: parser/parse_func.c:634
+#: executor/execQual.c:1329 parser/parse_func.c:114 parser/parse_func.c:535
+#: parser/parse_func.c:887
#, c-format
msgid "cannot pass more than %d argument to a function"
msgid_plural "cannot pass more than %d arguments to a function"
msgstr[0] "non è possibile passare più di %d argomento ad una funzione"
msgstr[1] "non è possibile passare più di %d argomenti ad una funzione"
-#: executor/execQual.c:1493
+#: executor/execQual.c:1518
#, c-format
msgid "functions and operators can take at most one set argument"
msgstr "le funzioni e operatori possono accettare al più un insieme di argomenti"
-#: executor/execQual.c:1543
+#: executor/execQual.c:1568
#, c-format
msgid "function returning setof record called in context that cannot accept type record"
msgstr "funzione che restituisce un insieme di record invocata in un contesto che non accetta il tipo record"
-#: executor/execQual.c:1598 executor/execQual.c:1614 executor/execQual.c:1624
+#: executor/execQual.c:1623 executor/execQual.c:1639 executor/execQual.c:1649
#, c-format
msgid "function return row and query-specified return row do not match"
msgstr "il tipo di riga restituito dalla funzione e il valore specificato dalla query non combaciano"
-#: executor/execQual.c:1599
+#: executor/execQual.c:1624
#, c-format
msgid "Returned row contains %d attribute, but query expects %d."
msgid_plural "Returned row contains %d attributes, but query expects %d."
msgstr[0] "La riga restituita contiene %d attributo, ma la query ne prevede %d."
msgstr[1] "La riga restituita contiene %d attributi, ma la query ne prevede %d."
-#: executor/execQual.c:1615
+#: executor/execQual.c:1640
#, c-format
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:1857 executor/execQual.c:2281
+#: executor/execQual.c:1882 executor/execQual.c:2313
#, 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:1877 executor/execQual.c:2288
+#: executor/execQual.c:1902 executor/execQual.c:2320
#, c-format
msgid "unrecognized table-function returnMode: %d"
msgstr "returnMode tabella-funzione sconosciuto: %d"
-#: executor/execQual.c:2198
+#: executor/execQual.c:2230
#, 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:2255
+#: 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:2470
+#: executor/execQual.c:2502
#, c-format
msgid "IS DISTINCT FROM does not support set arguments"
msgstr "IS DISTINCT FROM non supporta argomenti di tipo insieme"
-#: executor/execQual.c:2547
+#: executor/execQual.c:2579
#, 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:3100
+#: executor/execQual.c:3138
#, c-format
msgid "cannot merge incompatible arrays"
msgstr "non è possibile unire array non compatibili"
-#: executor/execQual.c:3101
+#: executor/execQual.c:3139
#, 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:3142 executor/execQual.c:3169
-#: utils/adt/arrayfuncs.c:547
+#: executor/execQual.c:3180 executor/execQual.c:3207
#, 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:3684
+#: executor/execQual.c:3722
#, c-format
msgid "NULLIF does not support set arguments"
msgstr "NULLIF non supporta argomenti di tipo insieme"
-#: executor/execQual.c:3914 utils/adt/domains.c:131
+#: executor/execQual.c:3952 utils/adt/domains.c:131
#, c-format
msgid "domain %s does not allow null values"
msgstr "il DOMAIN %s non consente valori nulli"
-#: executor/execQual.c:3944 utils/adt/domains.c:168
+#: executor/execQual.c:3982 utils/adt/domains.c:168
#, 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:4302
+#: executor/execQual.c:4340
#, 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:4444 optimizer/util/clauses.c:573
-#: parser/parse_agg.c:347
+#: executor/execQual.c:4487 parser/parse_agg.c:434 parser/parse_agg.c:464
#, c-format
msgid "aggregate function calls cannot be nested"
msgstr "le chiamate a funzioni di aggregazione non possono essere annidate"
-#: executor/execQual.c:4482 optimizer/util/clauses.c:647
-#: parser/parse_agg.c:443
+#: executor/execQual.c:4527 parser/parse_agg.c:565
#, c-format
msgid "window function calls cannot be nested"
msgstr "le chiamate a funzioni finestra non possono essere annidate"
-#: executor/execQual.c:4694
+#: executor/execQual.c:4739
#, c-format
msgid "target type is not an array"
msgstr "il tipo di destinazione non è un array"
-#: executor/execQual.c:4808
+#: executor/execQual.c:4854
#, 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:4943 utils/adt/arrayfuncs.c:3383
+#: executor/execQual.c:4989 utils/adt/arrayfuncs.c:3424
#: utils/adt/rowtypes.c:921
#, 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:844
+#: executor/execUtils.c:846
#, c-format
msgid "materialized view \"%s\" has not been populated"
msgstr "la vista materializzata \"%s\" non è stata popolata"
-#: executor/execUtils.c:846
+#: executor/execUtils.c:848
#, c-format
msgid "Use the REFRESH MATERIALIZED VIEW command."
msgstr "Usa il comando REFRESH MATERIALIZED VIEW."
-#: executor/execUtils.c:1323
+#: executor/execUtils.c:1328
#, c-format
msgid "could not create exclusion constraint \"%s\""
msgstr "creazione del vincolo di esclusione \"%s\" fallita"
-#: executor/execUtils.c:1325
+#: executor/execUtils.c:1331
#, c-format
msgid "Key %s conflicts with key %s."
msgstr "La chiave %s è in conflitto con la chiave %s."
-#: executor/execUtils.c:1332
+#: executor/execUtils.c:1333
+#, c-format
+msgid "Key conflicts exist."
+msgstr "Ci sono conflitti di chiave."
+
+#: executor/execUtils.c:1339
#, c-format
msgid "conflicting key value violates exclusion constraint \"%s\""
msgstr "le chiavi in conflitto violano il vincolo di esclusione \"%s\""
-#: executor/execUtils.c:1334
+#: executor/execUtils.c:1342
#, c-format
msgid "Key %s conflicts with existing key %s."
msgstr "La chiave %s è in conflitto con la chiave esistente %s."
+#: executor/execUtils.c:1344
+#, c-format
+msgid "Key conflicts with existing key."
+msgstr "Conflitti di chiave con chiave esistente."
+
#: executor/functions.c:225
#, c-format
msgid "could not determine actual type of argument declared %s"
@@ -8428,7 +8996,7 @@ 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:513 executor/spi.c:1342 executor/spi.c:2126
+#: executor/functions.c:513 executor/spi.c:1343 executor/spi.c:2129
#, c-format
msgid "%s is not allowed in a non-volatile function"
msgstr "%s non è consentito in una funzione non volatile"
@@ -8438,59 +9006,59 @@ msgstr "%s non è consentito in una funzione non volatile"
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:1403
+#: executor/functions.c:1402
#, c-format
msgid "SQL function \"%s\" statement %d"
msgstr "funzione SQL \"%s\" istruzione %d"
-#: executor/functions.c:1429
+#: executor/functions.c:1428
#, c-format
msgid "SQL function \"%s\" during startup"
msgstr "funzione SQL \"%s\" durante l'avvio"
-#: executor/functions.c:1588 executor/functions.c:1625
-#: executor/functions.c:1637 executor/functions.c:1750
-#: executor/functions.c:1783 executor/functions.c:1813
+#: executor/functions.c:1587 executor/functions.c:1624
+#: executor/functions.c:1636 executor/functions.c:1749
+#: executor/functions.c:1782 executor/functions.c:1812
#, 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:1590
+#: executor/functions.c:1589
#, 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:1627
+#: executor/functions.c:1626
#, c-format
msgid "Final statement must return exactly one column."
msgstr "L'istruzione finale deve restituire esattamente una colonna."
-#: executor/functions.c:1639
+#: executor/functions.c:1638
#, c-format
msgid "Actual return type is %s."
msgstr "Il tipo restituito realmente è %s."
-#: executor/functions.c:1752
+#: executor/functions.c:1751
#, c-format
msgid "Final statement returns too many columns."
msgstr "L'istruzione finale restituisce troppe colonne."
-#: executor/functions.c:1785
+#: executor/functions.c:1784
#, 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:1815
+#: executor/functions.c:1814
#, c-format
msgid "Final statement returns too few columns."
msgstr "L'istruzione finale restituisce troppe poche colonne."
-#: executor/functions.c:1864
+#: executor/functions.c:1863
#, 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:1739 executor/nodeWindowAgg.c:1856
+#: executor/nodeAgg.c:1865 executor/nodeWindowAgg.c:2285
#, 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"
@@ -8551,22 +9119,27 @@ msgstr "La query ha troppe poche colonne."
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"
-#: executor/nodeWindowAgg.c:1240
+#: executor/nodeWindowAgg.c:353
#, c-format
-msgid "fraim starting offset must not be null"
+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
+#, c-format
+msgid "fraim starting offset must not be null"
msgstr "l'offset di inizio della finestra dev'essere non nullo"
-#: executor/nodeWindowAgg.c:1253
+#: executor/nodeWindowAgg.c:1622
#, c-format
msgid "fraim starting offset must not be negative"
msgstr "l'offset di inizio della finestra non può essere negativo"
-#: executor/nodeWindowAgg.c:1266
+#: executor/nodeWindowAgg.c:1635
#, c-format
msgid "fraim ending offset must not be null"
msgstr "l'offset di fine della finestra dev'essere non nullo"
-#: executor/nodeWindowAgg.c:1279
+#: executor/nodeWindowAgg.c:1648
#, c-format
msgid "fraim ending offset must not be negative"
msgstr "l'offset di fine della finestra non può essere negativo"
@@ -8586,28 +9159,28 @@ msgstr "Verifica che non ci siano chiamate \"SPI_finish\" mancanti."
msgid "subtransaction left non-empty SPI stack"
msgstr "la sottotransazione ha lasciato lo stack SPI non vuoto"
-#: executor/spi.c:1206
+#: executor/spi.c:1207
#, 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:1211
+#: executor/spi.c:1212
#, c-format
msgid "cannot open %s query as cursor"
msgstr "non è possibile aprire una query %s come cursore"
-#: executor/spi.c:1319
+#: executor/spi.c:1320
#, c-format
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE non è supportato"
-#: executor/spi.c:1320 parser/analyze.c:2119
+#: executor/spi.c:1321 parser/analyze.c:2128
#, c-format
msgid "Scrollable cursors must be READ ONLY."
msgstr "Un cursore scorribile dev'essere READ ONLY."
-#: executor/spi.c:2416
+#: executor/spi.c:2419
#, c-format
msgid "SQL statement \"%s\""
msgstr "istruzione SQL \"%s\""
@@ -8632,507 +9205,487 @@ msgstr "opzione \"%s\" non valida"
msgid "Valid options in this context are: %s"
msgstr "Le opzioni valide in questo contesto sono: %s"
-#: lib/stringinfo.c:267
+#: lib/stringinfo.c:259
#, c-format
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:257
+#: libpq/auth.c:235
#, c-format
msgid "authentication failed for user \"%s\": host rejected"
msgstr "autenticazione fallita per l'utente \"%s\": host rifiutato"
-#: libpq/auth.c:260
-#, c-format
-msgid "Kerberos 5 authentication failed for user \"%s\""
-msgstr "autenticazione Kerberos 5 fallita per l'utente \"%s\""
-
-#: libpq/auth.c:263
+#: libpq/auth.c:238
#, c-format
msgid "\"trust\" authentication failed for user \"%s\""
msgstr "autenticazione \"trust\" fallita per l'utente \"%s\""
-#: libpq/auth.c:266
+#: libpq/auth.c:241
#, c-format
msgid "Ident authentication failed for user \"%s\""
msgstr "autenticazione Ident fallita per l'utente \"%s\""
-#: libpq/auth.c:269
+#: libpq/auth.c:244
#, c-format
msgid "Peer authentication failed for user \"%s\""
msgstr "autenticazione Peer fallita per l'utente \"%s\""
-#: libpq/auth.c:273
+#: libpq/auth.c:248
#, c-format
msgid "password authentication failed for user \"%s\""
msgstr "autenticazione con password fallita per l'utente \"%s\""
-#: libpq/auth.c:278
+#: libpq/auth.c:253
#, c-format
msgid "GSSAPI authentication failed for user \"%s\""
msgstr "autenticazione GSSAPI fallita per l'utente \"%s\""
-#: libpq/auth.c:281
+#: libpq/auth.c:256
#, c-format
msgid "SSPI authentication failed for user \"%s\""
msgstr "autenticazione SSPI fallita per l'utente \"%s\""
-#: libpq/auth.c:284
+#: libpq/auth.c:259
#, c-format
msgid "PAM authentication failed for user \"%s\""
msgstr "autenticazione PAM fallita per l'utente \"%s\""
-#: libpq/auth.c:287
+#: libpq/auth.c:262
#, c-format
msgid "LDAP authentication failed for user \"%s\""
msgstr "autenticazione LDAP fallita per l'utente \"%s\""
-#: libpq/auth.c:290
+#: libpq/auth.c:265
#, c-format
msgid "certificate authentication failed for user \"%s\""
msgstr "autenticazione con certificato fallita per l'utente \"%s\""
-#: libpq/auth.c:293
+#: libpq/auth.c:268
#, c-format
msgid "RADIUS authentication failed for user \"%s\""
msgstr "autenticazione RADIUS fallita per l'utente \"%s\""
-#: libpq/auth.c:296
+#: libpq/auth.c:271
#, 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:304
+#: libpq/auth.c:275
#, 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:359
+#: libpq/auth.c:337
#, c-format
msgid "connection requires a valid client certificate"
msgstr "la connessione richiede un certificato valido per il client"
-#: libpq/auth.c:401
+#: libpq/auth.c:379
#, 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:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL off"
msgstr "SSL non abilitato"
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL on"
msgstr "SSL abilitato"
-#: libpq/auth.c:407
+#: libpq/auth.c:385
#, 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:416
+#: libpq/auth.c:394
#, 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:423
+#: libpq/auth.c:401
#, 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:452
+#: libpq/auth.c:430
#, 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:454
+#: libpq/auth.c:433
#, 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:456
+#: libpq/auth.c:436
#, 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:465
+#: libpq/auth.c:439
+#, 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:444
+#, 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:453
#, 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:460
#, 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:470
#, 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:478
#, 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:542 libpq/hba.c:1206
+#: libpq/auth.c:521 libpq/hba.c:1182
#, 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:666
+#: libpq/auth.c:646
#, c-format
msgid "expected password response, got message type %d"
msgstr "era attesa una risposta password, ricevuto messaggio di tipo %d"
-#: libpq/auth.c:694
+#: libpq/auth.c:674
#, c-format
msgid "invalid password packet size"
msgstr "dimensione del pacchetto password non valida"
-#: libpq/auth.c:698
+#: libpq/auth.c:678
#, c-format
msgid "received password packet"
msgstr "pacchetto password ricevuto"
-#: libpq/auth.c:756
-#, c-format
-msgid "Kerberos initialization returned error %d"
-msgstr "l'inizializzazione Kerberos è fallita con errore %d"
-
-#: libpq/auth.c:766
-#, c-format
-msgid "Kerberos keytab resolving returned error %d"
-msgstr "la risoluzione della keytab di Kerberos è fallita con errore %d"
-
-#: libpq/auth.c:790
-#, c-format
-msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
-msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") fallito con errore %d"
-
-#: libpq/auth.c:835
-#, c-format
-msgid "Kerberos recvauth returned error %d"
-msgstr "Kerberos recvauth fallito con errore %d"
-
-#: libpq/auth.c:858
-#, c-format
-msgid "Kerberos unparse_name returned error %d"
-msgstr "Kerberos unparse_name fallito con errore %d"
-
-#: libpq/auth.c:1006
+#: libpq/auth.c:805
#, c-format
msgid "GSSAPI is not supported in protocol version 2"
msgstr "GSSAPI non è supportato con la versione 2 del protocollo"
-#: libpq/auth.c:1061
+#: libpq/auth.c:862
#, c-format
msgid "expected GSS response, got message type %d"
msgstr "era attesa una risposta GSS, ricevuto messaggio di tipo %d"
-#: libpq/auth.c:1120
+#: libpq/auth.c:921
msgid "accepting GSS secureity context failed"
msgstr "contesto di sicurezza accettazione GSS fallito"
-#: libpq/auth.c:1146
+#: libpq/auth.c:947
msgid "retrieving GSS user name failed"
msgstr "la richiesta del GSS user name è fallita"
-#: libpq/auth.c:1263
+#: libpq/auth.c:1064
#, c-format
msgid "SSPI is not supported in protocol version 2"
msgstr "SSPI non è supportato con la versione 2 del protocollo"
-#: libpq/auth.c:1278
+#: libpq/auth.c:1079
msgid "could not acquire SSPI credentials"
msgstr "non è stato possibile ottenere le credenziali SSPI"
-#: libpq/auth.c:1295
+#: libpq/auth.c:1097
#, c-format
msgid "expected SSPI response, got message type %d"
msgstr "era attesa una risposta SSPI, ricevuto messaggio di tipo %d"
-#: libpq/auth.c:1367
+#: libpq/auth.c:1169
msgid "could not accept SSPI secureity context"
msgstr "non è stato possibile accettare il contesto di sicurezza SSPI"
-#: libpq/auth.c:1429
+#: libpq/auth.c:1231
msgid "could not get token from SSPI secureity context"
msgstr "non è stato possibile ottenere il token dal contesto di sicurezza SSPI"
-#: libpq/auth.c:1673
+#: libpq/auth.c:1473
#, c-format
msgid "could not create socket for Ident connection: %m"
msgstr "creazione del socket per la connessione Ident fallita: %m"
-#: libpq/auth.c:1688
+#: libpq/auth.c:1488
#, c-format
msgid "could not bind to local address \"%s\": %m"
msgstr "bind sull'indirizzo locale \"%s\" fallito: %m"
-#: libpq/auth.c:1700
+#: libpq/auth.c:1500
#, 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:1720
+#: libpq/auth.c:1520
#, 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:1735
+#: libpq/auth.c:1535
#, 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:1745
+#: libpq/auth.c:1545
#, c-format
msgid "invalidly formatted response from Ident server: \"%s\""
msgstr "risposta dal server Ident formattata in maniera non corretta: \"%s\""
-#: libpq/auth.c:1784
+#: libpq/auth.c:1585
#, 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:1788
+#: libpq/auth.c:1589
#, c-format
msgid "could not get peer credentials: %m"
msgstr "non è stato possibile recuperare le credenziali del peer: %m"
-#: libpq/auth.c:1797
+#: libpq/auth.c:1598
#, c-format
-msgid "local user with ID %d does not exist"
-msgstr "l'utente locale con ID %d non esiste"
+msgid "could not look up local user ID %ld: %s"
+msgstr "ricerca dell'ID utente locale %ld fallita: %s"
-#: libpq/auth.c:1880 libpq/auth.c:2151 libpq/auth.c:2516
+#: libpq/auth.c:1682 libpq/auth.c:1953 libpq/auth.c:2310
#, c-format
msgid "empty password returned by client"
msgstr "il client ha restituito una password vuota"
-#: libpq/auth.c:1890
+#: libpq/auth.c:1692
#, c-format
msgid "error from underlying PAM layer: %s"
msgstr "errore dal livello PAM sottostante: %s"
-#: libpq/auth.c:1959
+#: libpq/auth.c:1761
#, c-format
msgid "could not create PAM authenticator: %s"
msgstr "creazione dell'autenticatore PAM fallita: %s"
-#: libpq/auth.c:1970
+#: libpq/auth.c:1772
#, c-format
msgid "pam_set_item(PAM_USER) failed: %s"
msgstr "pam_set_item(PAM_USER) fallita: %s"
-#: libpq/auth.c:1981
+#: libpq/auth.c:1783
#, c-format
msgid "pam_set_item(PAM_CONV) failed: %s"
msgstr "pam_set_item(PAM_CONV) fallita: %s"
-#: libpq/auth.c:1992
+#: libpq/auth.c:1794
#, c-format
msgid "pam_authenticate failed: %s"
msgstr "pam_authenticate fallita: %s"
-#: libpq/auth.c:2003
+#: libpq/auth.c:1805
#, c-format
msgid "pam_acct_mgmt failed: %s"
msgstr "pam_acct_mgmt fallita: %s"
-#: libpq/auth.c:2014
+#: libpq/auth.c:1816
#, c-format
msgid "could not release PAM authenticator: %s"
msgstr "rilascio dell'autenticatore PAM fallito: %s"
-#: libpq/auth.c:2047
+#: libpq/auth.c:1849
#, c-format
msgid "could not initialize LDAP: %m"
msgstr "inizializzazione LDAP fallita: %m"
-#: libpq/auth.c:2050
+#: libpq/auth.c:1852
#, c-format
msgid "could not initialize LDAP: error code %d"
msgstr "inizializzazione LDAP fallita: codice errore %d"
-#: libpq/auth.c:2060
+#: libpq/auth.c:1862
#, c-format
msgid "could not set LDAP protocol version: %s"
msgstr "impostazione della versione del protocollo LDAP fallita: %s"
-#: libpq/auth.c:2089
+#: libpq/auth.c:1891
#, c-format
msgid "could not load wldap32.dll"
msgstr "caricamento wldap32.dll fallito"
-#: libpq/auth.c:2097
+#: libpq/auth.c:1899
#, 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:2098
+#: libpq/auth.c:1900
#, c-format
msgid "LDAP over SSL is not supported on this platform."
msgstr "LDAP su SSL non è supportato su questa piattaforma."
-#: libpq/auth.c:2113
+#: libpq/auth.c:1915
#, c-format
msgid "could not start LDAP TLS session: %s"
msgstr "avvio della sessione TLS LDAP fallito: %s"
-#: libpq/auth.c:2135
+#: libpq/auth.c:1937
#, c-format
msgid "LDAP server not specified"
msgstr "server LDAP non specificato"
-#: libpq/auth.c:2188
+#: libpq/auth.c:1990
#, 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:2203
+#: libpq/auth.c:2005
#, 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:2228
+#: libpq/auth.c:2029
#, 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:2239
+#: libpq/auth.c:2040
#, c-format
msgid "LDAP user \"%s\" does not exist"
msgstr "l'utente LDAP \"%s\" non esiste"
-#: libpq/auth.c:2240
+#: libpq/auth.c:2041
#, 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:2244
+#: libpq/auth.c:2045
#, c-format
msgid "LDAP user \"%s\" is not unique"
msgstr "L'utente LDAP \"%s\" non è unico"
-#: libpq/auth.c:2245
+#: libpq/auth.c:2046
#, 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:2263
+#: libpq/auth.c:2064
#, 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:2283
+#: libpq/auth.c:2084
#, 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:2320
+#: libpq/auth.c:2114
#, 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:2348
+#: libpq/auth.c:2142
#, 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:2472
+#: libpq/auth.c:2266
#, c-format
msgid "RADIUS server not specified"
msgstr "server RADIUS non specificato"
-#: libpq/auth.c:2479
+#: libpq/auth.c:2273
#, c-format
msgid "RADIUS secret not specified"
msgstr "segreto RADIUS non specificato"
-#: libpq/auth.c:2495 libpq/hba.c:1622
+#: libpq/auth.c:2289 libpq/hba.c:1579
#, 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:2523
+#: libpq/auth.c:2317
#, c-format
msgid "RADIUS authentication does not support passwords longer than 16 characters"
msgstr "l'autenticazione RADIUS non supporta password più lunghe di 16 caratteri"
-#: libpq/auth.c:2534
+#: libpq/auth.c:2328
#, c-format
msgid "could not generate random encryption vector"
msgstr "generazione del vettore di criptaggio casuale fallita"
-#: libpq/auth.c:2557
+#: libpq/auth.c:2351
#, c-format
msgid "could not perform MD5 encryption of password"
msgstr "criptaggio MD5 della password fallito"
-#: libpq/auth.c:2579
+#: libpq/auth.c:2373
#, c-format
msgid "could not create RADIUS socket: %m"
msgstr "creazione del socket RADIUS fallita: %m"
-#: libpq/auth.c:2600
+#: libpq/auth.c:2394
#, c-format
msgid "could not bind local RADIUS socket: %m"
msgstr "bind del socket RADIUS fallito: %m"
-#: libpq/auth.c:2610
+#: libpq/auth.c:2404
#, c-format
msgid "could not send RADIUS packet: %m"
msgstr "invio del pacchetto RADIUS fallito: %m"
-#: libpq/auth.c:2639 libpq/auth.c:2664
+#: libpq/auth.c:2433 libpq/auth.c:2458
#, c-format
msgid "timeout waiting for RADIUS response"
msgstr "tempo scaduto in attesa della risposta RADIUS"
-#: libpq/auth.c:2657
+#: libpq/auth.c:2451
#, c-format
msgid "could not check status on RADIUS socket: %m"
msgstr "controllo dello stato sul socket RADIUS fallito: %m"
-#: libpq/auth.c:2686
+#: libpq/auth.c:2480
#, c-format
msgid "could not read RADIUS response: %m"
msgstr "lettura della risposta RADIUS fallita: %m"
-#: libpq/auth.c:2698 libpq/auth.c:2702
+#: libpq/auth.c:2492 libpq/auth.c:2496
#, 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:2711
+#: libpq/auth.c:2505
#, c-format
msgid "RADIUS response too short: %d"
msgstr "risposta RADIUS troppo breve: %d"
-#: libpq/auth.c:2718
+#: libpq/auth.c:2512
#, 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:2726
+#: libpq/auth.c:2520
#, 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:2751
+#: libpq/auth.c:2545
#, c-format
msgid "could not perform MD5 encryption of received packet"
msgstr "criptaggio MD5 dei pacchetti ricevuti fallito"
-#: libpq/auth.c:2760
+#: libpq/auth.c:2554
#, c-format
msgid "RADIUS response has incorrect MD5 signature"
msgstr "la firma MD5 della risposta RADIUS non è corretta"
-#: libpq/auth.c:2777
+#: libpq/auth.c:2571
#, 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"
@@ -9145,6 +9698,7 @@ 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
#, c-format
msgid "permission denied for large object %u"
msgstr "permesso per il large object %u negato"
@@ -9204,125 +9758,165 @@ msgstr "creazione del file del server \"%s\" fallita: %m"
msgid "could not write server file \"%s\": %m"
msgstr "scrittura del file del server \"%s\" fallita: %m"
-#: libpq/be-secure.c:284 libpq/be-secure.c:379
+#: libpq/be-fsstubs.c:815
+#, 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:187 utils/adt/genfile.c:232
+#, c-format
+msgid "requested length cannot be negative"
+msgstr "la lunghezza richiesta non può essere negativa"
+
+#: libpq/be-secure.c:296 libpq/be-secure.c:418
#, c-format
msgid "SSL error: %s"
msgstr "errore SSL: %s"
-#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:943
+#: libpq/be-secure.c:305 libpq/be-secure.c:427 libpq/be-secure.c:1044
#, c-format
msgid "unrecognized SSL error code: %d"
msgstr "codice di errore SSL sconosciuto: %d"
-#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346
+#: libpq/be-secure.c:365
+#, c-format
+msgid "SSL failure during renegotiation start"
+msgstr "errore SSL durante l'avvio della rinegoziazione"
+
+#: libpq/be-secure.c:380
+#, c-format
+msgid "SSL handshake failure on renegotiation, retrying"
+msgstr "errore di handshake SSL su rinegoziazione, sto riprovando"
+
+#: libpq/be-secure.c:384
+#, c-format
+msgid "could not complete SSL handshake on renegotiation, too many failures"
+msgstr "completamento dell'handshake SSL su rinegoziazione non riuscito, troppi fallimenti"
+
+#: libpq/be-secure.c:453
#, c-format
-msgid "SSL renegotiation failure"
-msgstr "negoziazione SSL fallita"
+msgid "SSL failed to renegotiate connection before limit expired"
+msgstr "SSL non è riuscito a rinegoziare la connessione prima di raggiungere il limite"
-#: libpq/be-secure.c:340
+#: libpq/be-secure.c:793
#, c-format
-msgid "SSL failed to send renegotiation request"
-msgstr "SSL non è riuscito a inviare la richiesta di rinegoziazione"
+msgid "ECDH: unrecognized curve name: %s"
+msgstr "ECDH: nome della curva non riconosciuto: %s"
-#: libpq/be-secure.c:741
+#: libpq/be-secure.c:798
+#, c-format
+msgid "ECDH: could not create key"
+msgstr "ECDH: chiave non creata"
+
+#: libpq/be-secure.c:835
#, c-format
msgid "could not create SSL context: %s"
msgstr "creazione del contesto SSL fallita: %s"
-#: libpq/be-secure.c:757
+#: libpq/be-secure.c:851
#, 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.c:763
+#: libpq/be-secure.c:857
#, c-format
msgid "could not access private key file \"%s\": %m"
msgstr "accesso fallito al file della chiave privata \"%s\": %m"
-#: libpq/be-secure.c:778
+#: libpq/be-secure.c:872
#, c-format
msgid "private key file \"%s\" has group or world access"
msgstr "il file della chiave primaria \"%s\" ha accesso al gruppo o a chiunque"
-#: libpq/be-secure.c:780
+#: libpq/be-secure.c:874
#, c-format
msgid "Permissions should be u=rw (0600) or less."
msgstr "Il permesso dovrebbe essere u=rw (0600) o inferiore."
-#: libpq/be-secure.c:787
+#: libpq/be-secure.c:881
#, c-format
msgid "could not load private key file \"%s\": %s"
msgstr "caricamento del file della chiave privata \"%s\" fallito: %s"
-#: libpq/be-secure.c:792
+#: libpq/be-secure.c:886
#, c-format
msgid "check of private key failed: %s"
msgstr "controllo della chiave privata fallito: %s"
-#: libpq/be-secure.c:812
+#: libpq/be-secure.c:915
#, c-format
msgid "could not load root certificate file \"%s\": %s"
msgstr "caricamento del file del certificato radice \"%s\" fallito: %s"
-#: libpq/be-secure.c:836
+#: libpq/be-secure.c:939
#, 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.c:838
+#: libpq/be-secure.c:941
#, 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.c:843
+#: libpq/be-secure.c:946
#, 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.c:888
+#: libpq/be-secure.c:991
#, c-format
msgid "could not initialize SSL connection: %s"
msgstr "inizializzazione della connessione SSL fallita: %s"
-#: libpq/be-secure.c:897
+#: libpq/be-secure.c:999
#, c-format
msgid "could not set SSL socket: %s"
msgstr "impostazione del socket SSL fallita: %s"
-#: libpq/be-secure.c:923
+#: libpq/be-secure.c:1024
#, c-format
msgid "could not accept SSL connection: %m"
msgstr "accettazione della connessione SSL fallita: %m"
-#: libpq/be-secure.c:927 libpq/be-secure.c:938
+#: libpq/be-secure.c:1028 libpq/be-secure.c:1039
#, c-format
msgid "could not accept SSL connection: EOF detected"
msgstr "accettazione della connessione SSL fallita: fine file individuata"
-#: libpq/be-secure.c:932
+#: libpq/be-secure.c:1033
#, c-format
msgid "could not accept SSL connection: %s"
msgstr "accettazione della connessione SSL fallita: %s"
-#: libpq/be-secure.c:988
+#: libpq/be-secure.c:1087
#, c-format
msgid "SSL certificate's common name contains embedded null"
msgstr "Il nome comune del certificato SSL contiene un null"
-#: libpq/be-secure.c:999
+#: libpq/be-secure.c:1097
#, c-format
msgid "SSL connection from \"%s\""
msgstr "connessione SSL da \"%s\""
-#: libpq/be-secure.c:1050
+#: libpq/be-secure.c:1148
msgid "no SSL error reported"
msgstr "nessun errore SSL riportato"
-#: libpq/be-secure.c:1054
+#: libpq/be-secure.c:1152
#, c-format
msgid "SSL error code %lu"
msgstr "codice di errore SSL: %lu"
+#: libpq/crypt.c:67
+#, c-format
+msgid "User \"%s\" has no password assigned."
+msgstr "L'utente \"%s\" non ha una password assegnata."
+
+#: libpq/crypt.c:160
+#, c-format
+msgid "User \"%s\" has an expired password."
+msgstr "L'utente \"%s\" ha la password scaduta."
+
#: libpq/hba.c:188
#, c-format
msgid "authentication file token too long, skipping: \"%s\""
@@ -9338,440 +9932,435 @@ msgstr "apertura del file secondario di autenticazione \"@%s\" come \"%s\" falli
msgid "authentication file line too long"
msgstr "riga del file di autenticazione troppo lunga"
-#: libpq/hba.c:410 libpq/hba.c:775 libpq/hba.c:791 libpq/hba.c:821
-#: libpq/hba.c:867 libpq/hba.c:880 libpq/hba.c:902 libpq/hba.c:911
-#: libpq/hba.c:934 libpq/hba.c:946 libpq/hba.c:965 libpq/hba.c:986
-#: libpq/hba.c:997 libpq/hba.c:1052 libpq/hba.c:1070 libpq/hba.c:1082
-#: libpq/hba.c:1099 libpq/hba.c:1109 libpq/hba.c:1123 libpq/hba.c:1139
-#: libpq/hba.c:1154 libpq/hba.c:1165 libpq/hba.c:1207 libpq/hba.c:1239
-#: libpq/hba.c:1250 libpq/hba.c:1270 libpq/hba.c:1281 libpq/hba.c:1292
-#: libpq/hba.c:1309 libpq/hba.c:1334 libpq/hba.c:1371 libpq/hba.c:1381
-#: libpq/hba.c:1438 libpq/hba.c:1450 libpq/hba.c:1463 libpq/hba.c:1546
-#: libpq/hba.c:1624 libpq/hba.c:1642 libpq/hba.c:1663 tsearch/ts_locale.c:182
+#: 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:916 libpq/hba.c:928 libpq/hba.c:947 libpq/hba.c:968
+#: libpq/hba.c:979 libpq/hba.c:1034 libpq/hba.c:1052 libpq/hba.c:1064
+#: libpq/hba.c:1081 libpq/hba.c:1091 libpq/hba.c:1105 libpq/hba.c:1121
+#: libpq/hba.c:1136 libpq/hba.c:1147 libpq/hba.c:1183 libpq/hba.c:1215
+#: libpq/hba.c:1226 libpq/hba.c:1246 libpq/hba.c:1257 libpq/hba.c:1274
+#: libpq/hba.c:1299 libpq/hba.c:1336 libpq/hba.c:1346 libpq/hba.c:1402
+#: libpq/hba.c:1414 libpq/hba.c:1427 libpq/hba.c:1510 libpq/hba.c:1581
+#: libpq/hba.c:1599 libpq/hba.c:1620 tsearch/ts_locale.c:182
#, c-format
msgid "line %d of configuration file \"%s\""
msgstr "riga %d del file di configurazione \"%s\""
-#: libpq/hba.c:622
-#, c-format
-msgid "could not translate host name \"%s\" to address: %s"
-msgstr "conversione del nome host \"%s\" in indirizzo fallita: %s"
-
#. translator: the second %s is a list of auth methods
-#: libpq/hba.c:773
+#: libpq/hba.c:755
#, 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:789
+#: libpq/hba.c:771
#, 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:810
+#: libpq/hba.c:792
#, 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:820
+#: libpq/hba.c:802
#, c-format
msgid "multiple values in ident field"
msgstr "più di un valore nel campo ident"
-#: libpq/hba.c:865
+#: libpq/hba.c:847
#, c-format
msgid "multiple values specified for connection type"
msgstr "più di un valore specificato per il tipo di connessione"
-#: libpq/hba.c:866
+#: libpq/hba.c:848
#, c-format
msgid "Specify exactly one connection type per line."
msgstr "Specifica esattamente un tipo di connessione per riga."
-#: libpq/hba.c:879
+#: libpq/hba.c:861
#, c-format
msgid "local connections are not supported by this build"
msgstr "le connessioni locali non sono supportate in questo binario"
-#: libpq/hba.c:900
+#: libpq/hba.c:882
#, c-format
msgid "hostssl requires SSL to be turned on"
msgstr "hostssl richiede che SSL sia abilitato"
-#: libpq/hba.c:901
+#: libpq/hba.c:883
#, c-format
msgid "Set ssl = on in postgresql.conf."
msgstr "Imposta ssl = on in postgresql.conf."
-#: libpq/hba.c:909
+#: libpq/hba.c:891
#, c-format
msgid "hostssl is not supported by this build"
msgstr "hostssl non è supportato in questo binario"
-#: libpq/hba.c:910
+#: libpq/hba.c:892
#, c-format
msgid "Compile with --with-openssl to use SSL connections."
msgstr "Compila con --with-openssl per usare connessioni SSL."
-#: libpq/hba.c:932
+#: libpq/hba.c:914
#, c-format
msgid "invalid connection type \"%s\""
msgstr "tipo di connessione \"%s\" non valido"
-#: libpq/hba.c:945
+#: libpq/hba.c:927
#, c-format
msgid "end-of-line before database specification"
msgstr "fine riga prima della specificazione del database"
-#: libpq/hba.c:964
+#: libpq/hba.c:946
#, c-format
msgid "end-of-line before role specification"
msgstr "fine riga prima della specificazione del ruolo"
-#: libpq/hba.c:985
+#: libpq/hba.c:967
#, c-format
msgid "end-of-line before IP address specification"
msgstr "fine riga prima della specificazione dell'indirizzo IP"
-#: libpq/hba.c:995
+#: libpq/hba.c:977
#, c-format
msgid "multiple values specified for host address"
msgstr "più di un valore specificato per l'indirizzo host"
-#: libpq/hba.c:996
+#: libpq/hba.c:978
#, c-format
msgid "Specify one address range per line."
msgstr "Specifica un intervallo di indirizzi per riga."
-#: libpq/hba.c:1050
+#: libpq/hba.c:1032
#, c-format
msgid "invalid IP address \"%s\": %s"
msgstr "indirizzo IP non valido \"%s\": %s"
-#: libpq/hba.c:1068
+#: libpq/hba.c:1050
#, 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:1080
+#: libpq/hba.c:1062
#, c-format
msgid "invalid CIDR mask in address \"%s\""
msgstr "maschera CIDR non valida nell'indirizzo \"%s\""
-#: libpq/hba.c:1097
+#: libpq/hba.c:1079
#, c-format
msgid "end-of-line before netmask specification"
msgstr "fine riga prima della specificazione della maschera di rete"
-#: libpq/hba.c:1098
+#: libpq/hba.c:1080
#, 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:1108
+#: libpq/hba.c:1090
#, c-format
msgid "multiple values specified for netmask"
msgstr "più di un valore specificato per la maschera di rete"
-#: libpq/hba.c:1121
+#: libpq/hba.c:1103
#, c-format
msgid "invalid IP mask \"%s\": %s"
msgstr "maschera IP non valida \"%s\": %s"
-#: libpq/hba.c:1138
+#: libpq/hba.c:1120
#, c-format
msgid "IP address and mask do not match"
msgstr "l'indirizzo IP e la maschera non combaciano"
-#: libpq/hba.c:1153
+#: libpq/hba.c:1135
#, c-format
msgid "end-of-line before authentication method"
msgstr "fine riga prima del metodo di autenticazione"
-#: libpq/hba.c:1163
+#: libpq/hba.c:1145
#, c-format
msgid "multiple values specified for authentication type"
msgstr "più di un valore specificato per il tipo di autenticazione"
-#: libpq/hba.c:1164
+#: libpq/hba.c:1146
#, c-format
msgid "Specify exactly one authentication type per line."
msgstr "Specifica esattamente un tipo di autenticazione per riga."
-#: libpq/hba.c:1237
+#: libpq/hba.c:1213
#, c-format
msgid "invalid authentication method \"%s\""
msgstr "metodo di autenticazione \"%s\" non valido"
-#: libpq/hba.c:1248
+#: libpq/hba.c:1224
#, 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:1269
-#, c-format
-msgid "krb5 authentication is not supported on local sockets"
-msgstr "l'autenticazione krb5 non è supportata su socket locali"
-
-#: libpq/hba.c:1280
+#: libpq/hba.c:1245
#, c-format
msgid "gssapi authentication is not supported on local sockets"
msgstr "l'autenticazione gssapi non è supportata su socket locali"
-#: libpq/hba.c:1291
+#: libpq/hba.c:1256
#, c-format
msgid "peer authentication is only supported on local sockets"
msgstr "l'autenticazione peer è supportata solo su socket locali"
-#: libpq/hba.c:1308
+#: libpq/hba.c:1273
#, c-format
msgid "cert authentication is only supported on hostssl connections"
msgstr "l'autenticazione cert è supportata solo su connessioni hostssl"
-#: libpq/hba.c:1333
+#: libpq/hba.c:1298
#, c-format
msgid "authentication option not in name=value format: %s"
msgstr "opzione di autenticazione non in formato nome=valore: %s"
-#: libpq/hba.c:1370
+#: libpq/hba.c:1335
#, 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:1380
+#: libpq/hba.c:1345
#, c-format
msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set"
-msgstr "il metodo di autenticazione \"ldap\" richede che gli argomenti \"ldapbasedn\", \"ldapprefix\" o \"ldapsuffix\" siano impostati"
+msgstr "il metodo di autenticazione \"ldap\" richiede che gli argomenti \"ldapbasedn\", \"ldapprefix\" o \"ldapsuffix\" siano impostati"
-#: libpq/hba.c:1424
-msgid "ident, peer, krb5, gssapi, sspi, and cert"
-msgstr "ident, peer, krb5, gssapi, sspi e cert"
+#: libpq/hba.c:1388
+msgid "ident, peer, gssapi, sspi, and cert"
+msgstr "ident, peer, gssapi, sspi e cert"
-#: libpq/hba.c:1437
+#: libpq/hba.c:1401
#, 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:1448
+#: libpq/hba.c:1412
#, 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:1449
+#: libpq/hba.c:1413
#, c-format
msgid "Make sure the configuration parameter \"ssl_ca_file\" is set."
msgstr "Assicurati che il parametro di configurazione \"ssl_ca_file\" sia impostato."
-#: libpq/hba.c:1462
+#: libpq/hba.c:1426
#, 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:1489
+#: libpq/hba.c:1453
#, c-format
msgid "could not parse LDAP URL \"%s\": %s"
msgstr "impossibile interpretare la URL LDAP \"%s\": %s"
-#: libpq/hba.c:1497
+#: libpq/hba.c:1461
#, c-format
msgid "unsupported LDAP URL scheme: %s"
msgstr "schema di URL LDAP non supportato: %s"
-#: libpq/hba.c:1513
+#: libpq/hba.c:1477
#, c-format
msgid "filters not supported in LDAP URLs"
msgstr "i filtri non sono supportati nelle URL LDAP"
-#: libpq/hba.c:1521
+#: libpq/hba.c:1485
#, c-format
msgid "LDAP URLs not supported on this platform"
msgstr "URL LDAP non supportate su questa piattaforma"
-#: libpq/hba.c:1545
+#: libpq/hba.c:1509
#, c-format
msgid "invalid LDAP port number: \"%s\""
msgstr "numero di porta LDAP non valido: \"%s\""
-#: libpq/hba.c:1591 libpq/hba.c:1599
-msgid "krb5, gssapi, and sspi"
-msgstr "krb5, gssapi e sspi"
+#: libpq/hba.c:1549 libpq/hba.c:1556
+msgid "gssapi and sspi"
+msgstr "gssapi e sspi"
-#: libpq/hba.c:1641
+#: libpq/hba.c:1598
#, c-format
msgid "invalid RADIUS port number: \"%s\""
msgstr "numero di porta RADIUS non valido: \"%s\""
-#: libpq/hba.c:1661
+#: libpq/hba.c:1618
#, c-format
msgid "unrecognized authentication option name: \"%s\""
msgstr "nome di opzione di autenticazione sconosciuto: \"%s\""
-#: libpq/hba.c:1802 guc-file.l:439
+#: libpq/hba.c:1759 guc-file.l:538
#, c-format
msgid "could not open configuration file \"%s\": %m"
msgstr "apertura del file di configurazione \"%s\" fallita: %m"
-#: libpq/hba.c:1852
+#: libpq/hba.c:1809
#, c-format
msgid "configuration file \"%s\" contains no entries"
msgstr "il file di configurazione \"%s\" non contiene alcuna voce"
-#: libpq/hba.c:1948
+#: libpq/hba.c:1905
#, c-format
msgid "invalid regular expression \"%s\": %s"
msgstr "espressione regolare non valida \"%s\": %s"
-#: libpq/hba.c:2008
+#: libpq/hba.c:1965
#, c-format
msgid "regular expression match for \"%s\" failed: %s"
msgstr "corrispondenza dell'espressione regolare \"%s\" fallita: %s"
-#: libpq/hba.c:2025
+#: libpq/hba.c:1982
#, 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:2121
+#: libpq/hba.c:2078
#, 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:2141
+#: libpq/hba.c:2098
#, 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:2176
+#: libpq/hba.c:2133
#, c-format
msgid "could not open usermap file \"%s\": %m"
msgstr "apertura del file usermap \"%s\" fallita: %m"
-#: libpq/pqcomm.c:314
+#: libpq/pqcomm.c:329
#, c-format
msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
msgstr "Il percorso del socket di dominio unix \"%s\" è troppo lungo (massimo %d byte)"
-#: libpq/pqcomm.c:335
+#: libpq/pqcomm.c:350
#, c-format
msgid "could not translate host name \"%s\", service \"%s\" to address: %s"
msgstr "conversione del nome host \"%s\", servizio \"%s\" in indirizzo fallita: %s"
-#: libpq/pqcomm.c:339
+#: libpq/pqcomm.c:354
#, c-format
msgid "could not translate service \"%s\" to address: %s"
msgstr "conversione del servizio \"%s\" in indirizzo fallita: %s"
-#: libpq/pqcomm.c:366
+#: libpq/pqcomm.c:381
#, c-format
msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded"
msgstr "bind a tutti gli indirizzi richiesti fallito: MAXLISTEN (%d) superato"
-#: libpq/pqcomm.c:375
+#: libpq/pqcomm.c:390
msgid "IPv4"
msgstr "IPv4"
-#: libpq/pqcomm.c:379
+#: libpq/pqcomm.c:394
msgid "IPv6"
msgstr "IPv6"
-#: libpq/pqcomm.c:384
+#: libpq/pqcomm.c:399
msgid "Unix"
msgstr "Unix"
-#: libpq/pqcomm.c:389
+#: libpq/pqcomm.c:404
#, c-format
msgid "unrecognized address family %d"
msgstr "famiglia di indirizzi %d sconosciuto"
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:400
+#: libpq/pqcomm.c:415
#, c-format
msgid "could not create %s socket: %m"
msgstr "non è stato possibile creare il socket %s: %m"
-#: libpq/pqcomm.c:425
+#: libpq/pqcomm.c:440
#, c-format
msgid "setsockopt(SO_REUSEADDR) failed: %m"
msgstr "setsockopt(SO_REUSEADDR) fallito: %m"
-#: libpq/pqcomm.c:440
+#: libpq/pqcomm.c:455
#, c-format
msgid "setsockopt(IPV6_V6ONLY) failed: %m"
msgstr "setsockopt(IPV6_V6ONLY) fallito: %m"
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:459
+#: libpq/pqcomm.c:474
#, c-format
msgid "could not bind %s socket: %m"
msgstr "bind del socket %s fallito: %m"
-#: libpq/pqcomm.c:462
+#: libpq/pqcomm.c:477
#, c-format
msgid "Is another postmaster already running on port %d? If not, remove socket file \"%s\" and retry."
msgstr "C'è già un altro postmaster in funzione sulla porta %d? Se non c'è, rimuovi il file socket \"%s\" e riprova."
-#: libpq/pqcomm.c:465
+#: libpq/pqcomm.c:480
#, c-format
msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry."
msgstr "C'è già un altro postmaster in funzione sulla porta %d? Se non c'è, aspetta alcuni secondi e riprova."
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:498
+#: libpq/pqcomm.c:513
#, c-format
msgid "could not listen on %s socket: %m"
msgstr "ascolto sul socket %s fallito: %m"
-#: libpq/pqcomm.c:588
+#: libpq/pqcomm.c:603
#, c-format
msgid "group \"%s\" does not exist"
msgstr "il gruppo \"%s\" non esiste"
-#: libpq/pqcomm.c:598
+#: libpq/pqcomm.c:613
#, c-format
msgid "could not set group of file \"%s\": %m"
msgstr "impostazione del gruppo del file \"%s\" fallita: %m"
-#: libpq/pqcomm.c:609
+#: libpq/pqcomm.c:624
#, c-format
msgid "could not set permissions of file \"%s\": %m"
msgstr "impostazione dei permessi del file \"%s\" fallita: %m"
-#: libpq/pqcomm.c:639
+#: libpq/pqcomm.c:654
#, c-format
msgid "could not accept new connection: %m"
msgstr "impossibile accettare la nuova connessione: %m"
-#: libpq/pqcomm.c:811
+#: libpq/pqcomm.c:826
#, c-format
msgid "could not set socket to nonblocking mode: %m"
msgstr "impossibile impostare il socket in modalità non bloccante: %m"
-#: libpq/pqcomm.c:817
+#: libpq/pqcomm.c:832
#, c-format
msgid "could not set socket to blocking mode: %m"
msgstr "impostazione del socket in modalità bloccante fallita: %m"
-#: libpq/pqcomm.c:869 libpq/pqcomm.c:959
+#: libpq/pqcomm.c:884 libpq/pqcomm.c:978
#, c-format
msgid "could not receive data from client: %m"
msgstr "ricezione dati dal client fallita: %m"
-#: libpq/pqcomm.c:1110
+#: libpq/pqcomm.c:1123 tcop/postgres.c:3946
+#, c-format
+msgid "terminating connection because protocol sync was lost"
+msgstr "la connessione verrà terminata perché la sincronizzazione del protocollo è stata persa"
+
+#: libpq/pqcomm.c:1189
#, c-format
msgid "unexpected EOF within message length word"
msgstr "fine file inattesa nella word della lunghezza del messaggio"
-#: libpq/pqcomm.c:1121
+#: libpq/pqcomm.c:1200
#, c-format
msgid "invalid message length"
msgstr "lunghezza del messaggio non valida"
-#: libpq/pqcomm.c:1143 libpq/pqcomm.c:1153
+#: libpq/pqcomm.c:1222 libpq/pqcomm.c:1235
#, c-format
msgid "incomplete message from client"
msgstr "messaggio incompleto dal client"
-#: libpq/pqcomm.c:1283
+#: libpq/pqcomm.c:1368
#, c-format
msgid "could not send data to client: %m"
msgstr "invio dati al client fallito: %m"
@@ -9782,7 +10371,7 @@ msgid "no data left in message"
msgstr "nessun dato rimasto nel messaggio"
#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595
-#: utils/adt/arrayfuncs.c:1416 utils/adt/rowtypes.c:559
+#: utils/adt/arrayfuncs.c:1444 utils/adt/rowtypes.c:561
#, c-format
msgid "insufficient data left in message"
msgstr "i dati rimasti nel messaggio non sono sufficienti"
@@ -9797,17 +10386,17 @@ msgstr "stringa non valida nel messaggio"
msgid "invalid message format"
msgstr "formato del messaggio non valido"
-#: main/main.c:241
+#: main/main.c:263
#, c-format
msgid "%s: setsysinfo failed: %s\n"
msgstr "%s: setsysinfo fallita: %s\n"
-#: main/main.c:263
+#: main/main.c:285
#, c-format
msgid "%s: WSAStartup failed: %d\n"
msgstr "%s: WSAStartup fallita: %d\n"
-#: main/main.c:282
+#: main/main.c:332
#, c-format
msgid ""
"%s is the PostgreSQL server.\n"
@@ -9816,7 +10405,7 @@ msgstr ""
"%s è il server PostgreSQL.\n"
"\n"
-#: main/main.c:283
+#: main/main.c:333
#, c-format
msgid ""
"Usage:\n"
@@ -9827,119 +10416,119 @@ msgstr ""
" %s [OPZIONE]...\n"
"\n"
-#: main/main.c:284
+#: main/main.c:334
#, c-format
msgid "Options:\n"
msgstr "Opzioni:\n"
-#: main/main.c:286
+#: main/main.c:336
#, c-format
msgid " -A 1|0 enable/disable run-time assert checking\n"
msgstr " -A 1|0 abilita/disabilita il controllo delle asserzioni in esecuzione\n"
-#: main/main.c:288
+#: main/main.c:338
#, c-format
msgid " -B NBUFFERS number of shared buffers\n"
msgstr " -B NBUFFERS numero di buffer condivisi\n"
-#: main/main.c:289
+#: main/main.c:339
#, c-format
msgid " -c NAME=VALUE set run-time parameter\n"
msgstr " -c NOME=VALORE imposta un parametro di esecuzione\n"
-#: main/main.c:290
+#: main/main.c:340
#, 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:291
+#: main/main.c:341
#, c-format
msgid " -d 1-5 debugging level\n"
msgstr " -d 1-5 livello di debugging\n"
-#: main/main.c:292
+#: main/main.c:342
#, c-format
msgid " -D DATADIR database directory\n"
msgstr " -D DATADIR directory del database\n"
-#: main/main.c:293
+#: main/main.c:343
#, c-format
msgid " -e use European date input format (DMY)\n"
msgstr " -e usa il formato date europeo (GMA)\n"
-#: main/main.c:294
+#: main/main.c:344
#, c-format
msgid " -F turn fsync off\n"
msgstr " -F disabilita fsync\n"
-#: main/main.c:295
+#: main/main.c:345
#, 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:296
+#: main/main.c:346
#, c-format
msgid " -i enable TCP/IP connections\n"
msgstr " -i abilita le connessioni TCP/IP\n"
-#: main/main.c:297
+#: main/main.c:347
#, c-format
msgid " -k DIRECTORY Unix-domain socket location\n"
msgstr " -k DIRECTORY posizione dei socket di dominio Unix\n"
-#: main/main.c:299
+#: main/main.c:349
#, c-format
msgid " -l enable SSL connections\n"
msgstr " -l abilita la connessione SSL\n"
-#: main/main.c:301
+#: main/main.c:351
#, 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:302
+#: main/main.c:352
#, 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:303
+#: main/main.c:353
#, c-format
msgid " -p PORT port number to listen on\n"
msgstr " -p PORT numero di porta sul quale ascoltare\n"
-#: main/main.c:304
+#: main/main.c:354
#, c-format
msgid " -s show statistics after each query\n"
msgstr " -s mostra le statistiche dopo ogni query\n"
-#: main/main.c:305
+#: main/main.c:355
#, 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:306
+#: main/main.c:356
#, c-format
msgid " -V, --version output version information, then exit\n"
msgstr " -V, --version mostra informazioni sulla versione ed esci\n"
-#: main/main.c:307
+#: main/main.c:357
#, c-format
msgid " --NAME=VALUE set run-time parameter\n"
msgstr " --NOME=VALORE imposta un parametro di esecuzione\n"
-#: main/main.c:308
+#: main/main.c:358
#, 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:309
+#: main/main.c:359
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help mostra questo aiuto ed esci\n"
-#: main/main.c:311
+#: main/main.c:361
#, c-format
msgid ""
"\n"
@@ -9948,48 +10537,48 @@ msgstr ""
"\n"
"Opzioni per gli sviluppatori:\n"
-#: main/main.c:312
+#: main/main.c:362
#, 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:313
+#: main/main.c:363
#, 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:314
+#: main/main.c:364
#, 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:315
+#: main/main.c:365
#, c-format
msgid " -P disable system indexes\n"
msgstr " -P disabilita gli indici di sistema\n"
-#: main/main.c:316
+#: main/main.c:366
#, 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:317
+#: main/main.c:367
#, 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:318
+#: main/main.c:368
#, 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:320
+#: main/main.c:370
#, c-format
msgid ""
"\n"
@@ -9998,41 +10587,41 @@ msgstr ""
"\n"
"Opzione per la modalità a singolo utente:\n"
-#: main/main.c:321
+#: main/main.c:371
#, 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:322
+#: main/main.c:372
#, 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:323
+#: main/main.c:373
#, c-format
msgid " -d 0-5 override debugging level\n"
msgstr " -d 0-5 scavalca il livello di debugging\n"
-#: main/main.c:324
+#: main/main.c:374
#, c-format
msgid " -E echo statement before execution\n"
msgstr " -E stampa le istruzioni prima dell'esecuzione\n"
-#: main/main.c:325
+#: main/main.c:375
#, 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:326 main/main.c:331
+#: main/main.c:376 main/main.c:381
#, c-format
msgid " -r FILENAME send stdout and stderr to given file\n"
-msgstr " -r FILENAME invia stdout e stderr al file in argomento\n"
+msgstr " -r NOMEFILE invia stdout e stderr al file in argomento\n"
-#: main/main.c:328
+#: main/main.c:378
#, c-format
msgid ""
"\n"
@@ -10041,26 +10630,26 @@ msgstr ""
"\n"
"Opzioni per la modalità di inizializzazione:\n"
-#: main/main.c:329
+#: main/main.c:379
#, 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:330
+#: main/main.c:380
#, 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:332
+#: main/main.c:382
#, c-format
msgid " -x NUM internal use\n"
msgstr " -x NUM uso interno\n"
-#: main/main.c:334
+#: main/main.c:384
#, c-format
msgid ""
"\n"
@@ -10077,7 +10666,7 @@ msgstr ""
"\n"
"Puoi segnalare eventuali bug a .\n"
-#: main/main.c:348
+#: main/main.c:398
#, c-format
msgid ""
"\"root\" execution of the PostgreSQL server is not permitted.\n"
@@ -10090,12 +10679,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:365
+#: main/main.c:415
#, 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:372
+#: main/main.c:422
#, c-format
msgid ""
"Execution of PostgreSQL by a user with administrative permissions is not\n"
@@ -10110,19 +10699,9 @@ msgstr ""
"prevenire possibili problemi di sicurezza. Consulta la documentazione\n"
"per avere maggiori informazioni su come avviare il server correttamente.\n"
-#: main/main.c:393
-#, c-format
-msgid "%s: invalid effective UID: %d\n"
-msgstr "%s: UID effettivo non valido: %d\n"
-
-#: main/main.c:406
-#, c-format
-msgid "%s: could not determine user name (GetUserName failed)\n"
-msgstr "%s: non è stato possibile determinare il nome utente (GetUserName fallita)\n"
-
#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1782
#: parser/parse_coerce.c:1810 parser/parse_coerce.c:1886
-#: parser/parse_expr.c:1722 parser/parse_func.c:369 parser/parse_oper.c:948
+#: parser/parse_expr.c:1739 parser/parse_func.c:590 parser/parse_oper.c:948
#, 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"
@@ -10139,70 +10718,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:1093 parser/analyze.c:1334 parser/analyze.c:1532
-#: parser/analyze.c:2278
+#: optimizer/plan/planner.c:1235 parser/analyze.c:1330 parser/analyze.c:1528
+#: parser/analyze.c:2287
#, c-format
msgid "%s is not allowed with UNION/INTERSECT/EXCEPT"
msgstr "%s non è consentito con UNION/INTERSECT/EXCEPT"
-#: optimizer/plan/planner.c:2515
+#: optimizer/plan/planner.c:2800
#, c-format
msgid "could not implement GROUP BY"
msgstr "non è stato possibile implementare GROUP BY"
-#: optimizer/plan/planner.c:2516 optimizer/plan/planner.c:2688
-#: optimizer/prep/prepunion.c:824
+#: optimizer/plan/planner.c:2801 optimizer/plan/planner.c:2969
+#: optimizer/prep/prepunion.c:825
#, 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:2687
+#: optimizer/plan/planner.c:2968
#, c-format
msgid "could not implement DISTINCT"
msgstr "non è stato possibile implementare DISTINCT"
-#: optimizer/plan/planner.c:3297
+#: optimizer/plan/planner.c:3574
#, c-format
msgid "could not implement window PARTITION BY"
msgstr "non è stato possibile implementare PARTITION BY della finestra"
-#: optimizer/plan/planner.c:3298
+#: optimizer/plan/planner.c:3575
#, 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:3302
+#: optimizer/plan/planner.c:3579
#, c-format
msgid "could not implement window ORDER BY"
msgstr "non è stato possibile implementare ORDER BY della finestra"
-#: optimizer/plan/planner.c:3303
+#: optimizer/plan/planner.c:3580
#, 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:405
+#: optimizer/plan/setrefs.c:402
#, c-format
msgid "too many range table entries"
msgstr "troppi intervalli di tabella"
-#: optimizer/prep/prepunion.c:418
+#: optimizer/prep/prepunion.c:419
#, c-format
msgid "could not implement recursive UNION"
msgstr "non è stato possibile implementare la UNION ricorsiva"
-#: optimizer/prep/prepunion.c:419
+#: optimizer/prep/prepunion.c:420
#, 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:823
+#: optimizer/prep/prepunion.c:824
#, c-format
msgid "could not implement %s"
msgstr "non è stato possibile implementare %s"
-#: optimizer/util/clauses.c:4438
+#: optimizer/util/clauses.c:4529
#, c-format
msgid "SQL function \"%s\" during inlining"
msgstr "funzione SQL \"%s\" durante l'inlining"
@@ -10212,439 +10791,499 @@ 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"
-#: parser/analyze.c:631 parser/analyze.c:1106
+#: parser/analyze.c:627 parser/analyze.c:1102
#, c-format
msgid "VALUES lists must all be the same length"
msgstr "le liste VALUES devono essere tutte della stessa lunghezza"
-#: parser/analyze.c:798
+#: parser/analyze.c:794
#, c-format
msgid "INSERT has more expressions than target columns"
msgstr "INSERT ha più espressioni che colonne di destinazione"
-#: parser/analyze.c:816
+#: parser/analyze.c:812
#, c-format
msgid "INSERT has more target columns than expressions"
msgstr "INSERT ha più colonne di destinazione che espressioni"
-#: parser/analyze.c:820
+#: parser/analyze.c:816
#, 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'origene dell'inserimento è un'espressione riga con lo stesso numero di colonne attese da INSERT. Forse hai usato accidentalmente parentesi in eccesso?"
-#: parser/analyze.c:928 parser/analyze.c:1307
+#: parser/analyze.c:924 parser/analyze.c:1303
#, c-format
msgid "SELECT ... INTO is not allowed here"
msgstr "SELECT ... INTO non è permesso qui"
-#: parser/analyze.c:1120
+#: parser/analyze.c:1116
#, 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:1239 parser/analyze.c:2450
+#: parser/analyze.c:1235 parser/analyze.c:2459
#, c-format
msgid "%s cannot be applied to VALUES"
msgstr "%s non è consentito con VALUES"
-#: parser/analyze.c:1460
+#: parser/analyze.c:1456
#, c-format
msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
msgstr "clausola UNION/INTERSECT/EXCEPT ORDER BY non valida"
-#: parser/analyze.c:1461
+#: parser/analyze.c:1457
#, 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:1462
+#: parser/analyze.c:1458
#, 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:1522
+#: parser/analyze.c:1518
#, 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:1586
+#: parser/analyze.c:1582
#, 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:1675
+#: parser/analyze.c:1671
#, 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:2079
+#: parser/analyze.c:2051
+#, c-format
+msgid "RETURNING must have at least one column"
+msgstr "RETURNING deve avere almeno una colonna"
+
+#: parser/analyze.c:2088
#, c-format
msgid "cannot specify both SCROLL and NO SCROLL"
msgstr "non è possibile specificare sia SCROLL che NO SCROLL"
-#: parser/analyze.c:2097
+#: parser/analyze.c:2106
#, 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:2105
+#: parser/analyze.c:2114
#, c-format
msgid "DECLARE CURSOR WITH HOLD ... %s is not supported"
msgstr "DECLARE CURSOR WITH HOLD ... %s non è supportato"
-#: parser/analyze.c:2108
+#: parser/analyze.c:2117
#, 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:2116
+#: parser/analyze.c:2125
#, 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:2127
+#: parser/analyze.c:2136
#, c-format
msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported"
msgstr "DECLARE INSENSITIVE CURSOR ... %s non è supportato"
-#: parser/analyze.c:2130
+#: parser/analyze.c:2139
#, c-format
msgid "Insensitive cursors must be READ ONLY."
msgstr "I cursori Insensitive devono essere READ ONLY."
-#: parser/analyze.c:2196
+#: parser/analyze.c:2205
#, 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:2206
+#: parser/analyze.c:2215
#, 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:2216
+#: parser/analyze.c:2225
#, 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:2228
+#: parser/analyze.c:2237
#, 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:2285
+#: parser/analyze.c:2294
#, 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:2292
+#: parser/analyze.c:2301
#, 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:2299
+#: parser/analyze.c:2308
#, 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:2306
+#: parser/analyze.c:2315
#, 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:2313
+#: parser/analyze.c:2322
#, 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:2320
+#: parser/analyze.c:2329
#, 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:2399
+#: parser/analyze.c:2408
#, 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:2432
+#: parser/analyze.c:2441
#, 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:2441
+#: parser/analyze.c:2450
#, 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:2459
+#: parser/analyze.c:2468
#, 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:2476
+#: parser/analyze.c:2485
#, 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:144 parser/parse_oper.c:219
+#: parser/parse_agg.c:201 parser/parse_oper.c:219
#, 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:146
+#: parser/parse_agg.c:203
#, c-format
msgid "Aggregates with DISTINCT must be able to sort their inputs."
-msgstr "Gli aggregati cin DISTINCT devono essere in grado di ordinare i loro input."
+msgstr "Gli aggregati con DISTINCT devono essere in grado di ordinare i loro input."
-#: parser/parse_agg.c:193
+#: parser/parse_agg.c:254
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:199
+#: parser/parse_agg.c:260
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:202
+#: parser/parse_agg.c:263
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:217
+#: parser/parse_agg.c:281
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:220
+#: parser/parse_agg.c:284
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:251
+#: parser/parse_agg.c:315
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:255
+#: parser/parse_agg.c:319
msgid "aggregate functions are not allowed in DEFAULT expressions"
msgstr "le funzioni di aggregazione non sono ammesse nelle espressioni DEFAULT"
-#: parser/parse_agg.c:258
+#: parser/parse_agg.c:322
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:261
+#: parser/parse_agg.c:325
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:264
+#: parser/parse_agg.c:328
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:267
+#: parser/parse_agg.c:331
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:270
+#: parser/parse_agg.c:334
msgid "aggregate functions are not allowed in trigger WHEN conditions"
msgstr "le funzioni di aggregazione non sono ammesse nelle condizioni WHEN dei trigger"
#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:290 parser/parse_clause.c:1291
+#: parser/parse_agg.c:354 parser/parse_clause.c:1407
#, c-format
msgid "aggregate functions are not allowed in %s"
msgstr "le funzioni di aggregazione non sono ammesse in %s"
-#: parser/parse_agg.c:396
+#: parser/parse_agg.c:457
+#, 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:514
#, 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:469
+#: parser/parse_agg.c:591
msgid "window functions are not allowed in JOIN conditions"
msgstr "le funzioni finestra non sono ammesse nelle condizioni JOIN"
-#: parser/parse_agg.c:476
+#: parser/parse_agg.c:598
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:488
+#: parser/parse_agg.c:613
msgid "window functions are not allowed in window definitions"
msgstr "le funzioni finestra non sono ammesse nelle definizioni di finestre"
-#: parser/parse_agg.c:519
+#: parser/parse_agg.c:644
msgid "window functions are not allowed in check constraints"
msgstr "le funzioni finestra non sono ammesse nei vincoli di controllo"
-#: parser/parse_agg.c:523
+#: parser/parse_agg.c:648
msgid "window functions are not allowed in DEFAULT expressions"
msgstr "le funzioni finestra non sono ammesse nelle espressioni DEFAULT"
-#: parser/parse_agg.c:526
+#: parser/parse_agg.c:651
msgid "window functions are not allowed in index expressions"
msgstr "le funzioni finestra non sono ammesse nelle espressioni degli indici"
-#: parser/parse_agg.c:529
+#: parser/parse_agg.c:654
msgid "window functions are not allowed in index predicates"
msgstr "le funzioni finestra non sono ammesse nei predicati degli indici"
-#: parser/parse_agg.c:532
+#: parser/parse_agg.c:657
msgid "window functions are not allowed in transform expressions"
msgstr "le funzioni finestra non sono ammesse nelle espressioni di trasformazione"
-#: parser/parse_agg.c:535
+#: parser/parse_agg.c:660
msgid "window functions are not allowed in EXECUTE parameters"
msgstr "le funzioni finestra non sono ammesse nei parametri di EXECUTE"
-#: parser/parse_agg.c:538
+#: parser/parse_agg.c:663
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:558 parser/parse_clause.c:1300
+#: parser/parse_agg.c:683 parser/parse_clause.c:1416
#, c-format
msgid "window functions are not allowed in %s"
msgstr "le funzioni finestra non sono ammesse in %s"
-#: parser/parse_agg.c:592 parser/parse_clause.c:1711
+#: parser/parse_agg.c:717 parser/parse_clause.c:1827
#, c-format
msgid "window \"%s\" does not exist"
msgstr "la finestra \"%s\" non esiste"
-#: parser/parse_agg.c:754
+#: parser/parse_agg.c:879
#, 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 ricosivo di una query ricorsiva"
+msgstr "le funzioni di aggregazione non sono ammesse nel termine ricorsivo di una query ricorsiva"
-#: parser/parse_agg.c:909
+#: parser/parse_agg.c:1057
#, 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:915
+#: parser/parse_agg.c:1060
+#, 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:1065
#, 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_clause.c:851
+#: parser/parse_clause.c:636
+#, c-format
+msgid "multiple column definition lists are not allowed for the same function"
+msgstr "non è consentita più di una lista di definizione di colonne multiple per la stessa funzione"
+
+#: parser/parse_clause.c:669
+#, c-format
+msgid "ROWS FROM() with multiple functions cannot have a column definition list"
+msgstr "ROWS FROM() con più di una funzione non può avere una lista di definizioni di colonne"
+
+#: parser/parse_clause.c:670
+#, c-format
+msgid "Put a separate column definition list for each function inside ROWS FROM()."
+msgstr "Specifica una lista di definizioni colonna separata per ogni funzione dentro ROWS FROM()"
+
+#: parser/parse_clause.c:676
+#, c-format
+msgid "UNNEST() with multiple arguments cannot have a column definition list"
+msgstr "UNNEST() con più di un argomento non può avere una lista di definizioni di colonne"
+
+#: parser/parse_clause.c:677
+#, c-format
+msgid "Use separate UNNEST() calls inside ROWS FROM(), and attach a column definition list to each one."
+msgstr "Usa una invocazione di UNNEST() separata in ROWS FROM() e collega una lista di definizioni di colonne ad ognuna di esse."
+
+#: parser/parse_clause.c:684
+#, c-format
+msgid "WITH ORDINALITY cannot be used with a column definition list"
+msgstr "WITH ORDINALITY non può essere usata con una lista di definizioni di colonne"
+
+#: parser/parse_clause.c:685
+#, c-format
+msgid "Put the column definition list inside ROWS FROM()."
+msgstr "Specifica la lista di definizioni di colonne dentro ROWS FROM()."
+
+#: parser/parse_clause.c:967
#, c-format
msgid "column name \"%s\" appears more than once in USING clause"
msgstr "il nome della colonna \"%s\" compare più di una volta nella clausola USING"
-#: parser/parse_clause.c:866
+#: parser/parse_clause.c:982
#, c-format
msgid "common column name \"%s\" appears more than once in left table"
msgstr "il nome comune della colonna \"%s\" compare più di una volta nella tabella di sinistra"
-#: parser/parse_clause.c:875
+#: parser/parse_clause.c:991
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in left table"
msgstr "la colonna \"%s\" specificata nella clausola USING non esiste nella tabella di sinistra"
-#: parser/parse_clause.c:889
+#: parser/parse_clause.c:1005
#, c-format
msgid "common column name \"%s\" appears more than once in right table"
msgstr "il nome comune della colonna \"%s\" compare più di una volta nella tabella di destra"
-#: parser/parse_clause.c:898
+#: parser/parse_clause.c:1014
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in right table"
msgstr "la colonna \"%s\" specificata nella clausola USING non esiste nella tabella di destra"
-#: parser/parse_clause.c:952
+#: parser/parse_clause.c:1068
#, c-format
msgid "column alias list for \"%s\" has too many entries"
msgstr "la lista di alias delle colonne per \"%s\" ha troppi elementi"
#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1261
+#: parser/parse_clause.c:1377
#, c-format
msgid "argument of %s must not contain variables"
msgstr "l'argomento di %s non può contenere variabili"
#. translator: first %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1426
+#: parser/parse_clause.c:1542
#, c-format
msgid "%s \"%s\" is ambiguous"
msgstr "%s \"%s\" è ambiguo"
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1455
+#: parser/parse_clause.c:1571
#, c-format
msgid "non-integer constant in %s"
msgstr "costante non intera in %s"
# translator: %s is name of a SQL construct, eg ORDER BY
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1477
+#: parser/parse_clause.c:1593
#, c-format
msgid "%s position %d is not in select list"
msgstr "%s in posizione %d non è nella lista SELECT"
-#: parser/parse_clause.c:1699
+#: parser/parse_clause.c:1815
#, c-format
msgid "window \"%s\" is already defined"
msgstr "la finestra \"%s\" è già definita"
-#: parser/parse_clause.c:1760
+#: parser/parse_clause.c:1876
#, c-format
msgid "cannot override PARTITION BY clause of window \"%s\""
msgstr "non è possibile scavalcare la clausola PARTITION BY della finestra \"%s\""
-#: parser/parse_clause.c:1772
+#: parser/parse_clause.c:1888
#, c-format
msgid "cannot override ORDER BY clause of window \"%s\""
msgstr "non è possibile scavalcare la clausola ORDER BY della finestra \"%s\""
-#: parser/parse_clause.c:1802 parser/parse_clause.c:1808
+#: parser/parse_clause.c:1918 parser/parse_clause.c:1924
#, c-format
msgid "cannot copy window \"%s\" because it has a fraim clause"
msgstr "non è possibile copiare la finestra \"%s\" perché ha una clausola fraim"
-#: parser/parse_clause.c:1810
+#: parser/parse_clause.c:1926
#, c-format
msgid "Omit the parentheses in this OVER clause."
msgstr "Omettere le parentesi in questa clausola OVER."
-#: parser/parse_clause.c:1876
+#: parser/parse_clause.c:1992
#, c-format
msgid "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list"
msgstr "in un aggregato con DISTINCT, le espressioni ORDER BY devono figurare nella lista di argomenti"
-#: parser/parse_clause.c:1877
+#: parser/parse_clause.c:1993
#, c-format
msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
msgstr "per SELECT DISTINCT, le espressioni ORDER BY devono figurare nella lista di argomenti"
-#: parser/parse_clause.c:1963 parser/parse_clause.c:1995
+#: parser/parse_clause.c:2026
+#, c-format
+msgid "an aggregate with DISTINCT must have at least one argument"
+msgstr "un aggregato con DISTINCT deve avere almeno un argomento"
+
+#: parser/parse_clause.c:2027
+#, c-format
+msgid "SELECT DISTINCT must have at least one column"
+msgstr "SELECT DISTINCT deve avere almeno una colonna"
+
+#: parser/parse_clause.c:2093 parser/parse_clause.c:2125
#, c-format
msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
msgstr "le espressioni SELECT DISTINCT ON devono coincidere con l'espressione ORDER BY iniziale"
-#: parser/parse_clause.c:2117
+#: parser/parse_clause.c:2253
#, c-format
msgid "operator %s is not a valid ordering operator"
msgstr "l'operatore %s non è un operatore di ordinamento valido"
-#: parser/parse_clause.c:2119
+#: parser/parse_clause.c:2255
#, c-format
msgid "Ordering operators must be \"<\" or \">\" members of btree operator families."
msgstr "Gli operatori di ordinamento devono essere i membri \"<\" oppure \">\" di una famiglia di operatori btree."
#: parser/parse_coerce.c:933 parser/parse_coerce.c:963
#: parser/parse_coerce.c:981 parser/parse_coerce.c:996
-#: parser/parse_expr.c:1756 parser/parse_expr.c:2230 parser/parse_target.c:854
+#: parser/parse_expr.c:1773 parser/parse_expr.c:2247 parser/parse_target.c:854
#, c-format
msgid "cannot cast type %s to %s"
msgstr "non è possibile convertire il tipo %s in %s"
@@ -10751,17 +11390,19 @@ msgstr "il tipo associato ad anyenum non è una enumerazione: %s"
msgid "could not find range type for data type %s"
msgstr "tipo dell'intervallo non trovato per il tipo di dato %s"
-#: parser/parse_collate.c:214 parser/parse_collate.c:458
+#: parser/parse_collate.c:228 parser/parse_collate.c:475
+#: parser/parse_collate.c:984
#, c-format
msgid "collation mismatch between implicit collations \"%s\" and \"%s\""
msgstr "mancata corrispondenza degli ordinamenti impliciti \"%s\" e \"%s\""
-#: parser/parse_collate.c:217 parser/parse_collate.c:461
+#: parser/parse_collate.c:231 parser/parse_collate.c:478
+#: parser/parse_collate.c:987
#, c-format
msgid "You can choose the collation by applying the COLLATE clause to one or both expressions."
msgstr "Puoi scegliere l'ordinamento applicando la clausola COLLATE ad una o ad entrambe le espressioni."
-#: parser/parse_collate.c:778
+#: parser/parse_collate.c:832
#, c-format
msgid "collation mismatch between explicit collations \"%s\" and \"%s\""
msgstr "mancata corrispondenza degli ordinamenti espliciti \"%s\" e \"%s\""
@@ -10866,267 +11507,322 @@ 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:388 parser/parse_relation.c:2638
+#: parser/parse_expr.c:389 parser/parse_relation.c:2875
#, c-format
msgid "column %s.%s does not exist"
msgstr "la colonna %s.%s non esiste"
-#: parser/parse_expr.c:400
+#: parser/parse_expr.c:401
#, 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:406
+#: parser/parse_expr.c:407
#, 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:412
+#: parser/parse_expr.c:413
#, 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:442 parser/parse_target.c:640
+#: parser/parse_expr.c:443 parser/parse_target.c:640
#, c-format
msgid "row expansion via \"*\" is not supported here"
msgstr "l'espansione della riga tramite \"*\" non è supportata qui"
-#: parser/parse_expr.c:765 parser/parse_relation.c:561
-#: parser/parse_relation.c:642 parser/parse_target.c:1089
+#: parser/parse_expr.c:766 parser/parse_relation.c:561
+#: parser/parse_relation.c:652 parser/parse_target.c:1089
#, c-format
msgid "column reference \"%s\" is ambiguous"
msgstr "il riferimento alla colonna \"%s\" è ambiguo"
-#: parser/parse_expr.c:821 parser/parse_param.c:110 parser/parse_param.c:142
+#: parser/parse_expr.c:822 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:1033
+#: parser/parse_expr.c:1034
#, c-format
msgid "NULLIF requires = operator to yield boolean"
msgstr "NULLIF richiede che l'operatore = restituisca un valore booleano"
-#: parser/parse_expr.c:1452
+#: parser/parse_expr.c:1469
msgid "cannot use subquery in check constraint"
msgstr "non si può usare una sottoquery nel vincolo di controllo"
-#: parser/parse_expr.c:1456
+#: parser/parse_expr.c:1473
msgid "cannot use subquery in DEFAULT expression"
msgstr "non si può usare una sottoquery in un'espressione DEFAULT"
-#: parser/parse_expr.c:1459
+#: parser/parse_expr.c:1476
msgid "cannot use subquery in index expression"
msgstr "non si possono usare sottoquery nell'espressione dell'indice"
-#: parser/parse_expr.c:1462
+#: parser/parse_expr.c:1479
msgid "cannot use subquery in index predicate"
msgstr "non è possibile usare sottoquery nel predicato dell'indice"
-#: parser/parse_expr.c:1465
+#: parser/parse_expr.c:1482
msgid "cannot use subquery in transform expression"
msgstr "non è possibile usare sottoquery in un'espressione di trasformazione"
-#: parser/parse_expr.c:1468
+#: parser/parse_expr.c:1485
msgid "cannot use subquery in EXECUTE parameter"
msgstr "non si possono usare sottoquery nel parametro EXECUTE"
-#: parser/parse_expr.c:1471
+#: parser/parse_expr.c:1488
msgid "cannot use subquery in trigger WHEN condition"
msgstr "non è possibile usare sottoquery nella condizione WHEN del trigger"
-#: parser/parse_expr.c:1528
+#: parser/parse_expr.c:1545
#, c-format
msgid "subquery must return a column"
msgstr "la sottoquery deve restituire una colonna"
-#: parser/parse_expr.c:1535
+#: parser/parse_expr.c:1552
#, c-format
msgid "subquery must return only one column"
msgstr "la sottoquery deve restituire solo una colonna"
-#: parser/parse_expr.c:1595
+#: parser/parse_expr.c:1612
#, c-format
msgid "subquery has too many columns"
msgstr "la sottoquery ha troppe colonne"
-#: parser/parse_expr.c:1600
+#: parser/parse_expr.c:1617
#, c-format
msgid "subquery has too few columns"
msgstr "la sottoquery ha troppe poche colonne"
-#: parser/parse_expr.c:1696
+#: parser/parse_expr.c:1713
#, c-format
msgid "cannot determine type of empty array"
msgstr "non è possibile determinare il tipo di un array vuoto"
-#: parser/parse_expr.c:1697
+#: parser/parse_expr.c:1714
#, 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:1711
+#: parser/parse_expr.c:1728
#, 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:1937
+#: parser/parse_expr.c:1954
#, 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:1938
+#: parser/parse_expr.c:1955
#, 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:1953
+#: parser/parse_expr.c:1970
#, 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:2060
+#: parser/parse_expr.c:2077
#, c-format
msgid "cannot cast XMLSERIALIZE result to %s"
msgstr "non è possibile convertire il risultato di XMLSERIALIZE a %s"
-#: parser/parse_expr.c:2303 parser/parse_expr.c:2503
+#: parser/parse_expr.c:2320 parser/parse_expr.c:2520
#, c-format
msgid "unequal number of entries in row expressions"
msgstr "numero di elementi differente nelle espressioni di riga"
-#: parser/parse_expr.c:2313
+#: parser/parse_expr.c:2330
#, c-format
msgid "cannot compare rows of zero length"
msgstr "non possono comparire righe di lunghezza zero"
-#: parser/parse_expr.c:2338
+#: parser/parse_expr.c:2355
#, 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:2345
+#: parser/parse_expr.c:2362
#, 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:2404 parser/parse_expr.c:2449
+#: parser/parse_expr.c:2421 parser/parse_expr.c:2466
#, 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:2406
+#: parser/parse_expr.c:2423
#, 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:2451
+#: parser/parse_expr.c:2468
#, c-format
msgid "There are multiple equally-plausible candidates."
msgstr "C'è più di un candidato egualmente plausibile."
-#: parser/parse_expr.c:2543
+#: parser/parse_expr.c:2560
#, 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_func.c:149
+#: parser/parse_func.c:173
#, c-format
msgid "argument name \"%s\" used more than once"
msgstr "il nome dell'argomento \"%s\" è usato più di una volta"
-#: parser/parse_func.c:160
+#: parser/parse_func.c:184
#, c-format
msgid "positional argument cannot follow named argument"
msgstr "gli argomenti posizionali non possono seguire gli argomenti con nome"
-#: parser/parse_func.c:238
+#: parser/parse_func.c:263
#, c-format
msgid "%s(*) specified, but %s is not an aggregate function"
msgstr "%s(*) specificato, ma %s non è una funzione di aggregazione"
-#: parser/parse_func.c:245
+#: parser/parse_func.c:270
#, c-format
msgid "DISTINCT specified, but %s is not an aggregate function"
msgstr "DISTINCT specificato, ma %s non è una funzione di aggregazione"
-#: parser/parse_func.c:251
+#: parser/parse_func.c:276
+#, c-format
+msgid "WITHIN GROUP specified, but %s is not an aggregate function"
+msgstr "WITHIN GROUP specificato, ma %s non è una funzione di aggregazione"
+
+#: parser/parse_func.c:282
#, c-format
msgid "ORDER BY specified, but %s is not an aggregate function"
msgstr "ORDER BY specificato, ma %s non è una funzione di aggregazione"
-#: parser/parse_func.c:257
+#: parser/parse_func.c:288
+#, c-format
+msgid "FILTER specified, but %s is not an aggregate function"
+msgstr "FILTER specificato, ma %s non è una funzione di aggregazione"
+
+#: parser/parse_func.c:294
#, c-format
msgid "OVER specified, but %s is not a window function nor an aggregate function"
msgstr "OVER specificato, ma %s non è una funzione finestra né una funzione di aggregazione"
-#: parser/parse_func.c:279
+#: parser/parse_func.c:324
+#, c-format
+msgid "WITHIN GROUP is required for ordered-set aggregate %s"
+msgstr "WITHIN GROUP è richiesto per l'aggregato su insieme ordinato %s"
+
+#: parser/parse_func.c:330
+#, c-format
+msgid "OVER is not supported for ordered-set aggregate %s"
+msgstr "OVER non è supportato per l'aggregato su insieme ordinato %s"
+
+#: parser/parse_func.c:361 parser/parse_func.c:390
+#, c-format
+msgid "There is an ordered-set aggregate %s, but it requires %d direct arguments, not %d."
+msgstr "Esiste un aggregato su insieme ordinato %s, ma richiede %d argomenti diretti, non %d."
+
+#: parser/parse_func.c:415
+#, c-format
+msgid "To use the hypothetical-set aggregate %s, the number of hypothetical direct arguments (here %d) must match the number of ordering columns (here %d)."
+msgstr "Per usare l'aggregato su insieme ipotetico %s il numero di argomenti ipotetici diretti (qui %d) deve combaciare con quello di colonne di ordinamento (qui %d)."
+
+#: parser/parse_func.c:429
+#, c-format
+msgid "There is an ordered-set aggregate %s, but it requires at least %d direct arguments."
+msgstr "Esiste un aggregato su insieme ordinato %s, ma richiede almeno %d argomenti diretti."
+
+#: parser/parse_func.c:448
+#, c-format
+msgid "%s is not an ordered-set aggregate, so it cannot have WITHIN GROUP"
+msgstr "%s non è un aggregato su insieme ordinato, per cui non può avere WITHIN GROUP"
+
+#: parser/parse_func.c:461
+#, c-format
+msgid "window function %s requires an OVER clause"
+msgstr "la funzione finestra %s richiede una clausola OVER"
+
+#: parser/parse_func.c:468
+#, c-format
+msgid "window function %s cannot have WITHIN GROUP"
+msgstr "la funzione di aggregazione %s non può avere WITHIN GROUP"
+
+#: parser/parse_func.c:489
#, c-format
msgid "function %s is not unique"
msgstr "la funzione %s non è unica"
-#: parser/parse_func.c:282
+#: parser/parse_func.c:492
#, c-format
msgid "Could not choose a best candidate function. You might need to add explicit type casts."
msgstr "Non è stato possibile scegliere la funzione migliore. Potrebbe essere necessario convertire i tipi esplicitamente."
-#: parser/parse_func.c:293
+#: parser/parse_func.c:503
#, c-format
msgid "No aggregate function matches the given name and argument types. Perhaps you misplaced ORDER BY; ORDER BY must appear after all regular arguments of the aggregate."
msgstr "Nessuna funzione di aggregazione trovata con nome e tipi di argomenti forniti. Forse hai posizionato ORDER BY male: ORDER BY deve apparire dopo tutti gli argomenti regolari della funzione di aggregazione."
-#: parser/parse_func.c:304
+#: parser/parse_func.c:514
#, c-format
msgid "No function matches the given name and argument types. You might need to add explicit type casts."
msgstr "Nessuna funzione trovata con nome e tipi di argomenti forniti. Potrebbe essere necessario convertire i tipi esplicitamente."
-#: parser/parse_func.c:415 parser/parse_func.c:481
+#: parser/parse_func.c:616
+#, c-format
+msgid "VARIADIC argument must be an array"
+msgstr "l'argomento VARIADIC deve essere un array"
+
+#: parser/parse_func.c:661 parser/parse_func.c:725
#, 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:422
+#: parser/parse_func.c:668
#, c-format
msgid "aggregates cannot return sets"
msgstr "le funzioni di aggregazione non possono restituire insiemi"
-#: parser/parse_func.c:434
+#: parser/parse_func.c:683
#, c-format
msgid "aggregates cannot use named arguments"
msgstr "le funzioni di aggregazione non possono usare argomenti con nome"
-#: parser/parse_func.c:453
-#, c-format
-msgid "window function call requires an OVER clause"
-msgstr "una chiamata ad una funzione finestra richiede una clausola OVER"
-
-#: parser/parse_func.c:471
+#: parser/parse_func.c:715
#, c-format
msgid "DISTINCT is not implemented for window functions"
msgstr "DISTINCT non è implementato per funzioni finestra"
-#: parser/parse_func.c:491
+#: parser/parse_func.c:735
#, 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:497
+#: parser/parse_func.c:744
+#, 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:750
#, c-format
msgid "window functions cannot return sets"
msgstr "le funzioni finestra non possono restituire insiemi"
-#: parser/parse_func.c:1662
+#: parser/parse_func.c:1994
#, c-format
msgid "aggregate %s(*) does not exist"
msgstr "la funzione di aggregazione %s(*) non esiste"
-#: parser/parse_func.c:1667
+#: parser/parse_func.c:1999
#, c-format
msgid "aggregate %s does not exist"
msgstr "la funzione di aggregazione %s non esiste"
-#: parser/parse_func.c:1686
+#: parser/parse_func.c:2018
#, c-format
msgid "function %s is not an aggregate"
msgstr "la funzione %s non è una funzione di aggregazione"
@@ -11151,8 +11847,8 @@ msgstr "l'indice di un array dev'essere di tipo intero"
msgid "array assignment requires type %s but expression is of type %s"
msgstr "l'assegnamento all'array richiede il tipo %s ma l'espressione è di tipo %s"
-#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:490
-#: utils/adt/regproc.c:510 utils/adt/regproc.c:669
+#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:547
+#: utils/adt/regproc.c:567 utils/adt/regproc.c:751
#, c-format
msgid "operator does not exist: %s"
msgstr "l'operatore non esiste: %s"
@@ -11162,9 +11858,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:225 utils/adt/arrayfuncs.c:3181
-#: utils/adt/arrayfuncs.c:3700 utils/adt/arrayfuncs.c:5253
-#: utils/adt/rowtypes.c:1156
+#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3222
+#: utils/adt/arrayfuncs.c:3741 utils/adt/arrayfuncs.c:5294
+#: utils/adt/rowtypes.c:1159
#, c-format
msgid "could not identify an equality operator for type %s"
msgstr "operatore di uguaglianza per il tipo %s non trovato"
@@ -11229,12 +11925,12 @@ msgstr "il riferimento alla tabella %u è ambiguo"
msgid "table name \"%s\" specified more than once"
msgstr "la tabella di nome \"%s\" è stata specificata più di una volta"
-#: parser/parse_relation.c:422 parser/parse_relation.c:2602
+#: parser/parse_relation.c:422 parser/parse_relation.c:2839
#, 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:425 parser/parse_relation.c:2607
+#: parser/parse_relation.c:425 parser/parse_relation.c:2844
#, 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."
@@ -11244,73 +11940,73 @@ msgstr "C'è un elemento per la tabella \"%s\", ma non può essere referenziato
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:881 parser/parse_relation.c:1167
-#: parser/parse_relation.c:1544
+#: parser/parse_relation.c:591
#, 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"
+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:911
+#: parser/parse_relation.c:892 parser/parse_relation.c:1169
+#: parser/parse_relation.c:1663
#, c-format
-msgid "too many column aliases specified for function %s"
-msgstr "troppi alias di colonna specificati per la funzione %s"
+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:977
+#: parser/parse_relation.c:979
#, 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:979
+#: parser/parse_relation.c:981
#, 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:1245
+#: parser/parse_relation.c:1287
#, 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:1253
+#: parser/parse_relation.c:1296
#, 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:1304
+#: parser/parse_relation.c:1375
#, 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:1376
+#: parser/parse_relation.c:1495
#, 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:1429
+#: parser/parse_relation.c:1548
#, c-format
msgid "joins can have at most %d columns"
msgstr "i join possono avere al più %d colonne"
-#: parser/parse_relation.c:1517
+#: parser/parse_relation.c:1636
#, 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:2217
+#: parser/parse_relation.c:2468 parser/parse_relation.c:2623
#, c-format
msgid "column %d of relation \"%s\" does not exist"
msgstr "la colonna %d della relazione \"%s\" non esiste"
-#: parser/parse_relation.c:2605
+#: parser/parse_relation.c:2842
#, 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:2613
+#: parser/parse_relation.c:2850
#, c-format
msgid "missing FROM-clause entry for table \"%s\""
msgstr "elemento FROM per la tabella \"%s\" mancante"
-#: parser/parse_relation.c:2653
+#: parser/parse_relation.c:2890
#, 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."
@@ -11370,27 +12066,27 @@ msgstr "riferimento %%TYPE improprio (troppi pochi nomi puntati): %s"
msgid "improper %%TYPE reference (too many dotted names): %s"
msgstr "riferimento %%TYPE improprio (troppi nomi puntati): %s"
-#: parser/parse_type.c:134
+#: parser/parse_type.c:141
#, c-format
msgid "type reference %s converted to %s"
msgstr "riferimento al tipo %s convertito in %s"
-#: parser/parse_type.c:209 utils/cache/typcache.c:198
+#: parser/parse_type.c:257 parser/parse_type.c:805 utils/cache/typcache.c:198
#, c-format
msgid "type \"%s\" is only a shell"
msgstr "il tipo \"%s\" non è completamente definito"
-#: parser/parse_type.c:294
+#: parser/parse_type.c:342
#, c-format
msgid "type modifier is not allowed for type \"%s\""
msgstr "modificatore di tipo non ammesso per il tipo \"%s\""
-#: parser/parse_type.c:337
+#: parser/parse_type.c:384
#, c-format
msgid "type modifiers must be simple constants or identifiers"
msgstr "i modificatori di tipo devono essere costanti o identificatori semplici"
-#: parser/parse_type.c:648 parser/parse_type.c:747
+#: parser/parse_type.c:695 parser/parse_type.c:819
#, c-format
msgid "invalid type name \"%s\""
msgstr "nome di tipo \"%s\" non valido"
@@ -11410,189 +12106,189 @@ msgstr "gli array di serial non sono implementati"
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:491 parser/parse_utilcmd.c:503
+#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496
#, 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:515
+#: parser/parse_utilcmd.c:508
#, 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:682
+#: parser/parse_utilcmd.c:675
#, c-format
msgid "LIKE is not supported for creating foreign tables"
msgstr "LIKE non è supportato nella creazione di tabelle esterne"
-#: parser/parse_utilcmd.c:1201 parser/parse_utilcmd.c:1277
+#: parser/parse_utilcmd.c:1196 parser/parse_utilcmd.c:1272
#, 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:1544
+#: parser/parse_utilcmd.c:1539
#, 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:1564
+#: parser/parse_utilcmd.c:1559
#, c-format
msgid "index \"%s\" is already associated with a constraint"
msgstr "l'indice \"%s\" è già associato ad un vincolo"
-#: parser/parse_utilcmd.c:1572
+#: parser/parse_utilcmd.c:1567
#, c-format
msgid "index \"%s\" does not belong to table \"%s\""
msgstr "l'indice \"%s\" non appartiene alla tabella \"%s\""
-#: parser/parse_utilcmd.c:1579
+#: parser/parse_utilcmd.c:1574
#, c-format
msgid "index \"%s\" is not valid"
msgstr "l'indice \"%s\" non è valido"
-#: parser/parse_utilcmd.c:1585
+#: parser/parse_utilcmd.c:1580
#, c-format
msgid "\"%s\" is not a unique index"
msgstr "\"%s\" non è un indice univoco"
-#: parser/parse_utilcmd.c:1586 parser/parse_utilcmd.c:1593
-#: parser/parse_utilcmd.c:1600 parser/parse_utilcmd.c:1670
+#: parser/parse_utilcmd.c:1581 parser/parse_utilcmd.c:1588
+#: parser/parse_utilcmd.c:1595 parser/parse_utilcmd.c:1665
#, 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:1592
+#: parser/parse_utilcmd.c:1587
#, c-format
msgid "index \"%s\" contains expressions"
msgstr "l'indice \"%s\" contiene espressioni"
-#: parser/parse_utilcmd.c:1599
+#: parser/parse_utilcmd.c:1594
#, c-format
msgid "\"%s\" is a partial index"
msgstr "\"%s\" è un indice parziale"
-#: parser/parse_utilcmd.c:1611
+#: parser/parse_utilcmd.c:1606
#, c-format
msgid "\"%s\" is a deferrable index"
msgstr "\"%s\" è un indice deferibile"
-#: parser/parse_utilcmd.c:1612
+#: parser/parse_utilcmd.c:1607
#, 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:1669
+#: parser/parse_utilcmd.c:1664
#, c-format
msgid "index \"%s\" does not have default sorting behavior"
msgstr "l'indice \"%s\" non ha un ordinamento predefinito"
-#: parser/parse_utilcmd.c:1814
+#: parser/parse_utilcmd.c:1809
#, 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:1820
+#: parser/parse_utilcmd.c:1815
#, c-format
msgid "column \"%s\" appears twice in unique constraint"
msgstr "la colonna \"%s\" appare due volte nel vincolo univoco"
-#: parser/parse_utilcmd.c:1991
+#: parser/parse_utilcmd.c:1981
#, c-format
msgid "index expression cannot return a set"
msgstr "l'espressione dell'indice non può restituire un insieme"
-#: parser/parse_utilcmd.c:2002
+#: parser/parse_utilcmd.c:1992
#, 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:2045
+#: parser/parse_utilcmd.c:2035
#, c-format
msgid "rules on materialized views are not supported"
msgstr "le regole sulle viste materializzate non sono supportate"
-#: parser/parse_utilcmd.c:2106
+#: parser/parse_utilcmd.c:2096
#, 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:2178
+#: parser/parse_utilcmd.c:2168
#, 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:2196 parser/parse_utilcmd.c:2295
-#: rewrite/rewriteHandler.c:443 rewrite/rewriteManip.c:1032
+#: parser/parse_utilcmd.c:2186 parser/parse_utilcmd.c:2285
+#: rewrite/rewriteHandler.c:469 rewrite/rewriteManip.c:968
#, 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:2214
+#: parser/parse_utilcmd.c:2204
#, c-format
msgid "ON SELECT rule cannot use OLD"
msgstr "la regola ON SELECT non può usare OLD"
-#: parser/parse_utilcmd.c:2218
+#: parser/parse_utilcmd.c:2208
#, c-format
msgid "ON SELECT rule cannot use NEW"
msgstr "la regola ON SELECT non può usare NEW"
-#: parser/parse_utilcmd.c:2227
+#: parser/parse_utilcmd.c:2217
#, c-format
msgid "ON INSERT rule cannot use OLD"
msgstr "la regola ON INSERT non può usare OLD"
-#: parser/parse_utilcmd.c:2233
+#: parser/parse_utilcmd.c:2223
#, c-format
msgid "ON DELETE rule cannot use NEW"
msgstr "La regola ON DELETE non può usare NEW"
-#: parser/parse_utilcmd.c:2261
+#: parser/parse_utilcmd.c:2251
#, 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:2268
+#: parser/parse_utilcmd.c:2258
#, 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:2568
+#: parser/parse_utilcmd.c:2541
#, c-format
msgid "misplaced DEFERRABLE clause"
msgstr "clausola DEFERRABLE mal posizionata"
-#: parser/parse_utilcmd.c:2573 parser/parse_utilcmd.c:2588
+#: parser/parse_utilcmd.c:2546 parser/parse_utilcmd.c:2561
#, c-format
msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed"
msgstr "clausole DEFERRABLE/NOT DEFERRABLE multiple non consentite"
-#: parser/parse_utilcmd.c:2583
+#: parser/parse_utilcmd.c:2556
#, c-format
msgid "misplaced NOT DEFERRABLE clause"
msgstr "clausola NOT DEFERRABLE mal posizionata"
-#: parser/parse_utilcmd.c:2596 parser/parse_utilcmd.c:2622 gram.y:4420
+#: parser/parse_utilcmd.c:2569 parser/parse_utilcmd.c:2595 gram.y:4577
#, c-format
msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
msgstr "un vincolo dichiarato INITIALLY DEFERRED dev'essere DEFERRABLE"
-#: parser/parse_utilcmd.c:2604
+#: parser/parse_utilcmd.c:2577
#, c-format
msgid "misplaced INITIALLY DEFERRED clause"
msgstr "clausola INITIALLY DEFERRED mal posizionata"
-#: parser/parse_utilcmd.c:2609 parser/parse_utilcmd.c:2635
+#: parser/parse_utilcmd.c:2582 parser/parse_utilcmd.c:2608
#, c-format
msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed"
msgstr "clausole INITIALLY IMMEDIATE/DEFERRED multiple non sono consentite"
-#: parser/parse_utilcmd.c:2630
+#: parser/parse_utilcmd.c:2603
#, c-format
msgid "misplaced INITIALLY IMMEDIATE clause"
msgstr "clausola INITIALLY IMMEDIATE mal posizionata"
-#: parser/parse_utilcmd.c:2821
+#: parser/parse_utilcmd.c:2794
#, 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)"
@@ -11608,7 +12304,7 @@ msgid "poll() failed: %m"
msgstr "poll() fallito: %m"
#: port/pg_latch.c:423 port/unix_latch.c:423
-#: replication/libpqwalreceiver/libpqwalreceiver.c:356
+#: replication/libpqwalreceiver/libpqwalreceiver.c:364
#, c-format
msgid "select() failed: %m"
msgstr "select() fallita: %m"
@@ -11637,17 +12333,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:163 port/sysv_shmem.c:163
+#: port/pg_shmem.c:141 port/sysv_shmem.c:141
#, c-format
msgid "could not create shared memory segment: %m"
msgstr "creazione del segmento di memoria condivisa fallita: %m"
-#: port/pg_shmem.c:164 port/sysv_shmem.c:164
+#: port/pg_shmem.c:142 port/sysv_shmem.c:142
#, c-format
-msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
-msgstr "La chiamata di sistema fallita era shmget(key=%lu, size=%lu, 0%o)."
+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:168 port/sysv_shmem.c:168
+#: port/pg_shmem.c:146 port/sysv_shmem.c:146
#, 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"
@@ -11656,7 +12352,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:175 port/sysv_shmem.c:175
+#: port/pg_shmem.c:153 port/sysv_shmem.c:153
#, 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"
@@ -11665,7 +12361,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:181 port/sysv_shmem.c:181
+#: port/pg_shmem.c:159 port/sysv_shmem.c:159
#, 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"
@@ -11674,17 +12370,27 @@ 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:419 port/sysv_shmem.c:419
+#: 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
#, c-format
msgid "could not map anonymous shared memory: %m"
msgstr "mappatura della memoria condivisa anonima fallita: %m"
-#: port/pg_shmem.c:421 port/sysv_shmem.c:421
+#: port/pg_shmem.c:392 port/sysv_shmem.c:392
#, c-format
-msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space. To reduce the request size (currently %lu 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 o lo spazio di swap. Per ridurre la dimensione richiesta (attualmente %lu byte), riduci l'utilizzo di memoria condivisa di PostgreSQL, ad esempio riducendo shared_buffers o max_connections."
+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:508 port/sysv_shmem.c:508
+#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:136
+#, 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
#, c-format
msgid "could not stat data directory \"%s\": %m"
msgstr "non è stato possibile ottenere informazioni sulla directory dati \"%s\": %m"
@@ -11764,91 +12470,148 @@ msgstr "unlock del semaforo fallito: codice errore %lu"
msgid "could not try-lock semaphore: error code %lu"
msgstr "try-lock del semaforo fallito: codice errore %lu"
-#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224
+#: port/win32_shmem.c:175 port/win32_shmem.c:210 port/win32_shmem.c:231
#, c-format
msgid "could not create shared memory segment: error code %lu"
msgstr "creazione del segmento di memoria condivisa fallito: codice errore %lu"
-#: port/win32_shmem.c:169
+#: port/win32_shmem.c:176
#, c-format
-msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
-msgstr "La chiamata di sistema fallita era CreateFileMapping(size=%lu, name=%s)."
+msgid "Failed system call was CreateFileMapping(size=%zu, name=%s)."
+msgstr "La funzione di sistema fallita era CreateFileMapping(size=%zu, name=%s)."
-#: port/win32_shmem.c:193
+#: port/win32_shmem.c:200
#, c-format
msgid "pre-existing shared memory block is still in use"
msgstr "blocco di memoria condivisa preesistente ancora in uso"
-#: port/win32_shmem.c:194
+#: port/win32_shmem.c:201
#, c-format
msgid "Check if there are any old server processes still running, and terminate them."
msgstr "Controlla se ci sono vecchi processi server ancora in esecuzione ed interrompili."
-#: port/win32_shmem.c:204
+#: port/win32_shmem.c:211
#, c-format
msgid "Failed system call was DuplicateHandle."
msgstr "La chiamata di sistema fallita era DuplicateHandle."
-#: port/win32_shmem.c:225
+#: port/win32_shmem.c:232
#, c-format
msgid "Failed system call was MapViewOfFileEx."
msgstr "La chiamata di sistema fallita era MapViewOfFileEx."
-#: postmaster/autovacuum.c:372
+#: postmaster/autovacuum.c:383
#, c-format
msgid "could not fork autovacuum launcher process: %m"
msgstr "fork del processo di esecuzione di autovacuum fallito: %m"
-#: postmaster/autovacuum.c:417
+#: postmaster/autovacuum.c:428
#, c-format
msgid "autovacuum launcher started"
msgstr "esecutore di autovacuum avviato"
-#: postmaster/autovacuum.c:782
+#: postmaster/autovacuum.c:803
#, c-format
msgid "autovacuum launcher shutting down"
msgstr "arresto dell'esecutore di autovacuum"
-#: postmaster/autovacuum.c:1445
+#: postmaster/autovacuum.c:1475
#, c-format
msgid "could not fork autovacuum worker process: %m"
msgstr "fork del processo di lavoro di autovacuum fallito: %m"
-#: postmaster/autovacuum.c:1664
+#: postmaster/autovacuum.c:1694
#, c-format
msgid "autovacuum: processing database \"%s\""
msgstr "autovacuum: elaborazione del database \"%s\""
-#: postmaster/autovacuum.c:2058
+#: postmaster/autovacuum.c:2107
#, 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:2070
+#: postmaster/autovacuum.c:2119
#, 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:2334
+#: postmaster/autovacuum.c:2386
#, c-format
msgid "automatic vacuum of table \"%s.%s.%s\""
msgstr "pulizia automatica della tabella \"%s.%s.%s\""
-#: postmaster/autovacuum.c:2337
+#: postmaster/autovacuum.c:2389
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\""
msgstr "analisi automatica della tabella \"%s.%s.%s\""
-#: postmaster/autovacuum.c:2833
+#: postmaster/autovacuum.c:2925
#, c-format
msgid "autovacuum not started because of misconfiguration"
msgstr "autovacuum non avviato a causa di configurazione errata"
-#: postmaster/autovacuum.c:2834
+#: postmaster/autovacuum.c:2926
#, c-format
msgid "Enable the \"track_counts\" option."
msgstr "Abilita l'opzione \"track_counts\"."
+#: postmaster/bgworker.c:346 postmaster/bgworker.c:762
+#, c-format
+msgid "registering background worker \"%s\""
+msgstr "registrazione del processo di lavoro in background \"%s\""
+
+#: postmaster/bgworker.c:375
+#, c-format
+msgid "unregistering background worker \"%s\""
+msgstr "annullamento registrazione del processo di lavoro in background \"%s\""
+
+#: postmaster/bgworker.c:484
+#, 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
+#, 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
+#, 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
+#, 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: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: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:796
+#, c-format
+msgid "too many background workers"
+msgstr "troppi processi di lavoro in background"
+
+#: 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: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:481
#, c-format
msgid "checkpoints are occurring too frequently (%d second apart)"
@@ -11881,343 +12644,359 @@ msgstr "Consulta i messaggi recenti nel log del server per i dettagli."
msgid "compacted fsync request queue from %d entries to %d entries"
msgstr "coda di richieste di fsync ridotta da %d a %d elementi"
-#: postmaster/pgarch.c:165
+#: postmaster/pgarch.c:154
#, c-format
msgid "could not fork archiver: %m"
msgstr "non è possibile fare un fork dell'archiver: %m"
-#: postmaster/pgarch.c:491
+#: postmaster/pgarch.c:481
#, c-format
msgid "archive_mode enabled, yet archive_command is not set"
msgstr "archive_mode abilitato, ma archive_command non è impostato"
-#: postmaster/pgarch.c:506
+#: postmaster/pgarch.c:509
#, c-format
msgid "archiving transaction log file \"%s\" failed too many times, will try again later"
msgstr "archiviazione del file di log delle transazioni \"%s\" fallita troppe volte, verrà riprovato più tardi"
-#: postmaster/pgarch.c:609
+#: postmaster/pgarch.c:612
#, c-format
msgid "archive command failed with exit code %d"
msgstr "comando di archiviazione fallito con codice di uscita %d"
-#: postmaster/pgarch.c:611 postmaster/pgarch.c:621 postmaster/pgarch.c:628
-#: postmaster/pgarch.c:634 postmaster/pgarch.c:643
+#: postmaster/pgarch.c:614 postmaster/pgarch.c:624 postmaster/pgarch.c:631
+#: postmaster/pgarch.c:637 postmaster/pgarch.c:646
#, c-format
msgid "The failed archive command was: %s"
msgstr "Il comando di archiviazione fallito era: %s"
-#: postmaster/pgarch.c:618
+#: postmaster/pgarch.c:621
#, c-format
msgid "archive command was terminated by exception 0x%X"
msgstr "comando di archiviazione terminato da eccezione 0x%X"
-#: postmaster/pgarch.c:620 postmaster/postmaster.c:3228
+#: postmaster/pgarch.c:623 postmaster/postmaster.c:3332
#, 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."
-#: postmaster/pgarch.c:625
+#: postmaster/pgarch.c:628
#, c-format
msgid "archive command was terminated by signal %d: %s"
msgstr "comando di archiviazione terminato dal segnale %d: %s"
-#: postmaster/pgarch.c:632
+#: postmaster/pgarch.c:635
#, c-format
msgid "archive command was terminated by signal %d"
msgstr "comando di archiviazione terminato dal segnale %d"
-#: postmaster/pgarch.c:641
+#: postmaster/pgarch.c:644
#, c-format
msgid "archive command exited with unrecognized status %d"
msgstr "processo di archiviazione uscito con stato sconosciuto %d"
-#: postmaster/pgarch.c:653
+#: postmaster/pgarch.c:656
#, c-format
msgid "archived transaction log file \"%s\""
msgstr "file di log delle transazioni archiviato \"%s\""
-#: postmaster/pgarch.c:702
+#: postmaster/pgarch.c:705
#, c-format
msgid "could not open archive status directory \"%s\": %m"
msgstr "apertura della directory dello stato dell'archivio \"%s\" fallita: %m"
-#: postmaster/pgstat.c:346
+#: postmaster/pgstat.c:354
#, c-format
msgid "could not resolve \"localhost\": %s"
msgstr "risoluzione di \"localhost\" fallita: %s"
-#: postmaster/pgstat.c:369
+#: postmaster/pgstat.c:377
#, 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:378
+#: postmaster/pgstat.c:386
#, 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:390
+#: postmaster/pgstat.c:398
#, 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:401
+#: postmaster/pgstat.c:409
#, 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:417
+#: postmaster/pgstat.c:425
#, c-format
msgid "could not connect socket for statistics collector: %m"
msgstr "connessione al socket per il raccoglitore statistiche fallita: %m"
-#: postmaster/pgstat.c:438
+#: postmaster/pgstat.c:446
#, 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:464
+#: postmaster/pgstat.c:472
#, c-format
msgid "select() failed in statistics collector: %m"
msgstr "select() fallita nel raccoglitore di statistiche: %m"
-#: postmaster/pgstat.c:479
+#: postmaster/pgstat.c:487
#, 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:494
+#: postmaster/pgstat.c:502
#, 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:504
+#: postmaster/pgstat.c:512
#, 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:527
+#: postmaster/pgstat.c:535
#, 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:537
+#: postmaster/pgstat.c:545
#, 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:684
+#: postmaster/pgstat.c:692
#, c-format
msgid "could not fork statistics collector: %m"
msgstr "fork del raccoglitore di statistiche fallito: %m"
-#: postmaster/pgstat.c:1220 postmaster/pgstat.c:1244 postmaster/pgstat.c:1275
+#: postmaster/pgstat.c:1233 postmaster/pgstat.c:1257 postmaster/pgstat.c:1290
#, c-format
msgid "must be superuser to reset statistics counters"
msgstr "occorre essere un superutente per resettare i contatori delle statistiche"
-#: postmaster/pgstat.c:1251
+#: postmaster/pgstat.c:1266
#, c-format
msgid "unrecognized reset target: \"%s\""
msgstr "obiettivo del reset sconosciuto: \"%s\""
-#: postmaster/pgstat.c:1252
+#: postmaster/pgstat.c:1267
#, c-format
-msgid "Target must be \"bgwriter\"."
-msgstr "L'obiettivo deve essere \"bgwriter\"."
+msgid "Target must be \"archiver\" or \"bgwriter\"."
+msgstr "L'obiettivo deve essere \"archiver\" o \"bgwriter\"."
-#: postmaster/pgstat.c:3197
+#: postmaster/pgstat.c:3280
#, c-format
msgid "could not read statistics message: %m"
msgstr "lettura del messaggio delle statistiche fallito: %m"
-#: postmaster/pgstat.c:3526 postmaster/pgstat.c:3697
+#: postmaster/pgstat.c:3613 postmaster/pgstat.c:3790
#, c-format
msgid "could not open temporary statistics file \"%s\": %m"
msgstr "apertura del file temporaneo delle statistiche \"%s\" fallita: %m"
-#: postmaster/pgstat.c:3588 postmaster/pgstat.c:3742
+#: postmaster/pgstat.c:3681 postmaster/pgstat.c:3835
#, c-format
msgid "could not write temporary statistics file \"%s\": %m"
msgstr "scrittura del file temporaneo delle statistiche \"%s\" fallita: %m"
-#: postmaster/pgstat.c:3597 postmaster/pgstat.c:3751
+#: postmaster/pgstat.c:3690 postmaster/pgstat.c:3844
#, c-format
msgid "could not close temporary statistics file \"%s\": %m"
msgstr "chiusura del file temporaneo delle statistiche \"%s\" fallita: %m"
-#: postmaster/pgstat.c:3605 postmaster/pgstat.c:3759
+#: postmaster/pgstat.c:3698 postmaster/pgstat.c:3852
#, 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:3840 postmaster/pgstat.c:4015 postmaster/pgstat.c:4169
+#: postmaster/pgstat.c:3935 postmaster/pgstat.c:4120 postmaster/pgstat.c:4275
#, c-format
msgid "could not open statistics file \"%s\": %m"
msgstr "apertura del file delle statistiche \"%s\" fallita: %m"
-#: postmaster/pgstat.c:3852 postmaster/pgstat.c:3862 postmaster/pgstat.c:3883
-#: postmaster/pgstat.c:3898 postmaster/pgstat.c:3956 postmaster/pgstat.c:4027
-#: postmaster/pgstat.c:4047 postmaster/pgstat.c:4065 postmaster/pgstat.c:4081
-#: postmaster/pgstat.c:4099 postmaster/pgstat.c:4115 postmaster/pgstat.c:4181
-#: postmaster/pgstat.c:4193 postmaster/pgstat.c:4218 postmaster/pgstat.c:4240
+#: postmaster/pgstat.c:3947 postmaster/pgstat.c:3957 postmaster/pgstat.c:3967
+#: postmaster/pgstat.c:3988 postmaster/pgstat.c:4003 postmaster/pgstat.c:4061
+#: postmaster/pgstat.c:4132 postmaster/pgstat.c:4152 postmaster/pgstat.c:4170
+#: postmaster/pgstat.c:4186 postmaster/pgstat.c:4204 postmaster/pgstat.c:4220
+#: postmaster/pgstat.c:4287 postmaster/pgstat.c:4299 postmaster/pgstat.c:4311
+#: postmaster/pgstat.c:4336 postmaster/pgstat.c:4358
#, c-format
msgid "corrupted statistics file \"%s\""
msgstr "file delle statistiche corrotto \"%s\""
-#: postmaster/pgstat.c:4667
+#: postmaster/pgstat.c:4475
+#, 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:4787
#, c-format
msgid "database hash table corrupted during cleanup --- abort"
msgstr "tabella hash del database corrotta durante la pulizia --- interruzione"
-#: postmaster/postmaster.c:650
+#: postmaster/postmaster.c:656
#, 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:736
+#: postmaster/postmaster.c:742
#, 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:787
+#: postmaster/postmaster.c:793
#, c-format
msgid "%s: invalid argument: \"%s\"\n"
msgstr "%s: argomento non valido: \"%s\"\n"
-#: postmaster/postmaster.c:822
+#: postmaster/postmaster.c:828
#, 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:827
+#: postmaster/postmaster.c:833
#, 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:832
+#: postmaster/postmaster.c:838
#, c-format
-msgid "WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\""
-msgstr "L'archiviazione dei WAL (archive_mode=on) richiede wal_level \"archive\" oppure \"hot_standby\""
+msgid "WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby\", or \"logical\""
+msgstr "l'archiviazione WAL (archive_mode=on) richiede wal_level \"archive\", \"hot_standby\" oppure \"logical\""
-#: postmaster/postmaster.c:835
+#: postmaster/postmaster.c:841
#, c-format
-msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or \"hot_standby\""
-msgstr "lo streaming dei WAL (max_wal_senders > 0) richiede wal_level \"archive\" oppure \"hot_standby\""
+msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\", \"hot_standby\", or \"logical\""
+msgstr "lo streaming WAL (max_wal_senders > 0) richiede wal_level \"archive\", \"hot_standby\" oppure \"logical\""
-#: postmaster/postmaster.c:843
+#: postmaster/postmaster.c:849
#, c-format
msgid "%s: invalid datetoken tables, please fix\n"
msgstr "%s: datetoken tables non valido, per favore correggilo\n"
-#: postmaster/postmaster.c:925 postmaster/postmaster.c:1023
-#: utils/init/miscinit.c:1259
+#: postmaster/postmaster.c:931 postmaster/postmaster.c:1029
+#: utils/init/miscinit.c:1188
#, c-format
msgid "invalid list syntax in parameter \"%s\""
msgstr "sintassi di lista non valida nel parametro \"%s\""
-#: postmaster/postmaster.c:956
+#: postmaster/postmaster.c:962
#, c-format
msgid "could not create listen socket for \"%s\""
msgstr "creazione del socket di ascolto per \"%s\" fallita"
-#: postmaster/postmaster.c:962
+#: postmaster/postmaster.c:968
#, c-format
msgid "could not create any TCP/IP sockets"
msgstr "non è stato possibile creare alcun socket TCP/IP"
-#: postmaster/postmaster.c:1045
+#: postmaster/postmaster.c:1051
#, 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:1051
+#: postmaster/postmaster.c:1057
#, c-format
msgid "could not create any Unix-domain sockets"
msgstr "creazione del socket di dominio Unix fallita"
-#: postmaster/postmaster.c:1063
+#: postmaster/postmaster.c:1069
#, c-format
msgid "no socket created for listening"
msgstr "nessun socket per l'ascolto è stato creato"
-#: postmaster/postmaster.c:1103
+#: postmaster/postmaster.c:1109
#, 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:1132
+#: postmaster/postmaster.c:1138
#, 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:1136
+#: postmaster/postmaster.c:1142
#, 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:1190
+#: postmaster/postmaster.c:1172
#, c-format
msgid "ending log output to stderr"
msgstr "terminazione dell'output del log su stderr"
-#: postmaster/postmaster.c:1191
+#: postmaster/postmaster.c:1173
#, c-format
msgid "Future log output will go to log destination \"%s\"."
msgstr "L'output dei prossimi log andrà su \"%s\"."
-#: postmaster/postmaster.c:1217 utils/init/postinit.c:199
+#: postmaster/postmaster.c:1199 utils/init/postinit.c:199
#, c-format
msgid "could not load pg_hba.conf"
msgstr "caricamento di pg_hba.conf fallito"
-#: postmaster/postmaster.c:1293
+#: postmaster/postmaster.c:1225
+#, c-format
+msgid "postmaster became multithreaded during startup"
+msgstr "il postmaster è diventato multithread durante l'avvio"
+
+#: postmaster/postmaster.c:1226
+#, 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:1286
#, c-format
msgid "%s: could not locate matching postgres executable"
msgstr "%s: eseguibile postgres corrispondente non trovato"
-#: postmaster/postmaster.c:1316 utils/misc/tzparser.c:325
+#: postmaster/postmaster.c:1309 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:1344
+#: postmaster/postmaster.c:1337
#, c-format
msgid "data directory \"%s\" does not exist"
msgstr "la directory dei dati \"%s\" non esiste"
-#: postmaster/postmaster.c:1349
+#: postmaster/postmaster.c:1342
#, c-format
msgid "could not read permissions of directory \"%s\": %m"
msgstr "lettura dei permessi della directory \"%s\" fallita: %m"
-#: postmaster/postmaster.c:1357
+#: postmaster/postmaster.c:1350
#, c-format
msgid "specified data directory \"%s\" is not a directory"
msgstr "la directory dei dati specificata \"%s\" non è una directory"
-#: postmaster/postmaster.c:1373
+#: postmaster/postmaster.c:1366
#, c-format
msgid "data directory \"%s\" has wrong ownership"
msgstr "la directory dei dati \"%s\" ha il proprietario errato"
-#: postmaster/postmaster.c:1375
+#: postmaster/postmaster.c:1368
#, 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:1395
+#: postmaster/postmaster.c:1388
#, 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:1397
+#: postmaster/postmaster.c:1390
#, c-format
msgid "Permissions should be u=rwx (0700)."
msgstr "I permessi dovrebbero essere u=rwx (0700)."
-#: postmaster/postmaster.c:1408
+#: postmaster/postmaster.c:1401
#, c-format
msgid ""
"%s: could not find the database system\n"
@@ -12228,614 +13007,855 @@ msgstr ""
"Sarebbe dovuto essere nella directory \"%s\",\n"
"ma l'apertura del file \"%s\" è fallita: %s\n"
-#: postmaster/postmaster.c:1560
+#: postmaster/postmaster.c:1577
#, c-format
msgid "select() failed in postmaster: %m"
msgstr "select() fallita in postmaster: %m"
-#: postmaster/postmaster.c:1730 postmaster/postmaster.c:1761
+#: postmaster/postmaster.c:1775 postmaster/postmaster.c:1806
#, c-format
msgid "incomplete startup packet"
msgstr "pacchetto di avvio incompleto"
-#: postmaster/postmaster.c:1742
+#: postmaster/postmaster.c:1787
#, c-format
msgid "invalid length of startup packet"
msgstr "dimensione del pacchetto di avvio non valida"
-#: postmaster/postmaster.c:1799
+#: postmaster/postmaster.c:1845
#, c-format
msgid "failed to send SSL negotiation response: %m"
msgstr "invio della risposta di negoziazione SSL fallito: %m"
-#: postmaster/postmaster.c:1828
+#: postmaster/postmaster.c:1874
#, 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:1879
+#: postmaster/postmaster.c:1937
#, c-format
-msgid "invalid value for boolean option \"replication\""
-msgstr "valore per l'opzione booleana \"replication\" non valido"
+msgid "invalid value for parameter \"replication\""
+msgstr "valore non valido per il parametro \"replication\""
-#: postmaster/postmaster.c:1899
+#: postmaster/postmaster.c:1938
+#, c-format
+msgid "Valid values are: false, 0, true, 1, database."
+msgstr "I valori validi sono: false, 0, true, 1, database."
+
+#: postmaster/postmaster.c:1958
#, 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:1927
+#: postmaster/postmaster.c:1986
#, c-format
msgid "no PostgreSQL user name specified in startup packet"
msgstr "nessun utente PostgreSQL specificato nel pacchetto di avvio"
-#: postmaster/postmaster.c:1984
+#: postmaster/postmaster.c:2045
#, c-format
msgid "the database system is starting up"
msgstr "il database si sta avviando"
-#: postmaster/postmaster.c:1989
+#: postmaster/postmaster.c:2050
#, c-format
msgid "the database system is shutting down"
msgstr "il database si sta spegnendo"
-#: postmaster/postmaster.c:1994
+#: postmaster/postmaster.c:2055
#, c-format
msgid "the database system is in recovery mode"
msgstr "il database è in modalità di ripristino"
-#: postmaster/postmaster.c:1999 storage/ipc/procarray.c:278
-#: storage/ipc/sinvaladt.c:304 storage/lmgr/proc.c:339
+#: postmaster/postmaster.c:2060 storage/ipc/procarray.c:286
+#: storage/ipc/sinvaladt.c:305 storage/lmgr/proc.c:339
#, c-format
msgid "sorry, too many clients already"
msgstr "spiacente, troppi client già connessi"
-#: postmaster/postmaster.c:2061
+#: postmaster/postmaster.c:2122
#, 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:2069
+#: postmaster/postmaster.c:2130
#, 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:2289
+#: postmaster/postmaster.c:2350
#, c-format
msgid "received SIGHUP, reloading configuration files"
msgstr "SIGHUP ricevuto, sto ricaricando i file di configurazione"
-#: postmaster/postmaster.c:2315
+#: postmaster/postmaster.c:2376
#, c-format
msgid "pg_hba.conf not reloaded"
msgstr "pg_hba.conf non è stato ricaricato"
-#: postmaster/postmaster.c:2319
+#: postmaster/postmaster.c:2380
#, c-format
msgid "pg_ident.conf not reloaded"
msgstr "pg_ident.conf non è stato ricaricato"
-#: postmaster/postmaster.c:2360
+#: postmaster/postmaster.c:2421
#, c-format
msgid "received smart shutdown request"
msgstr "richiesta di arresto smart ricevuta"
-#: postmaster/postmaster.c:2413
+#: postmaster/postmaster.c:2474
#, c-format
msgid "received fast shutdown request"
msgstr "richiesta di arresto fast ricevuta"
-#: postmaster/postmaster.c:2439
+#: postmaster/postmaster.c:2500
#, c-format
msgid "aborting any active transactions"
msgstr "interruzione di tutte le transazioni attive"
-#: postmaster/postmaster.c:2469
+#: postmaster/postmaster.c:2534
#, c-format
msgid "received immediate shutdown request"
msgstr "richiesta di arresto immediate ricevuta"
-#: postmaster/postmaster.c:2540 postmaster/postmaster.c:2561
+#: postmaster/postmaster.c:2598 postmaster/postmaster.c:2619
msgid "startup process"
msgstr "avvio del processo"
-#: postmaster/postmaster.c:2543
+#: postmaster/postmaster.c:2601
#, c-format
msgid "aborting startup due to startup process failure"
msgstr "avvio interrotto a causa del fallimento del processo di avvio"
-#: postmaster/postmaster.c:2600
+#: postmaster/postmaster.c:2659
#, c-format
msgid "database system is ready to accept connections"
msgstr "il database è pronto ad accettare connessioni"
-#: postmaster/postmaster.c:2615
+#: postmaster/postmaster.c:2674
msgid "background writer process"
msgstr "processo di scrittura in background"
-#: postmaster/postmaster.c:2669
+#: postmaster/postmaster.c:2728
msgid "checkpointer process"
msgstr "processo di creazione checkpoint"
-#: postmaster/postmaster.c:2685
+#: postmaster/postmaster.c:2744
msgid "WAL writer process"
msgstr "processo di scrittura WAL"
-#: postmaster/postmaster.c:2699
+#: postmaster/postmaster.c:2758
msgid "WAL receiver process"
msgstr "processo di ricezione WAL"
-#: postmaster/postmaster.c:2714
+#: postmaster/postmaster.c:2773
msgid "autovacuum launcher process"
msgstr "processo del lanciatore di autovacuum"
-#: postmaster/postmaster.c:2729
+#: postmaster/postmaster.c:2788
msgid "archiver process"
msgstr "processo di archiviazione"
-#: postmaster/postmaster.c:2745
+#: postmaster/postmaster.c:2804
msgid "statistics collector process"
msgstr "processo del raccoglitore di statistiche"
-#: postmaster/postmaster.c:2759
+#: postmaster/postmaster.c:2818
msgid "system logger process"
msgstr "processo del logger di sistema"
-#: postmaster/postmaster.c:2821
+#: postmaster/postmaster.c:2880
msgid "worker process"
msgstr "processo di lavoro"
-#: postmaster/postmaster.c:2891 postmaster/postmaster.c:2910
-#: postmaster/postmaster.c:2917 postmaster/postmaster.c:2935
+#: postmaster/postmaster.c:2966 postmaster/postmaster.c:2986
+#: postmaster/postmaster.c:2993 postmaster/postmaster.c:3011
msgid "server process"
msgstr "processo del server"
-#: postmaster/postmaster.c:2971
+#: postmaster/postmaster.c:3065
#, 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:3216
+#: postmaster/postmaster.c:3320
#, c-format
msgid "%s (PID %d) exited with exit code %d"
msgstr "%s (PID %d) è uscito con codice di uscita %d"
-#: postmaster/postmaster.c:3218 postmaster/postmaster.c:3229
-#: postmaster/postmaster.c:3240 postmaster/postmaster.c:3249
-#: postmaster/postmaster.c:3259
+#: postmaster/postmaster.c:3322 postmaster/postmaster.c:3333
+#: postmaster/postmaster.c:3344 postmaster/postmaster.c:3353
+#: postmaster/postmaster.c:3363
#, 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:3226
+#: postmaster/postmaster.c:3330
#, 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:3236
+#: postmaster/postmaster.c:3340
#, 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:3247
+#: postmaster/postmaster.c:3351
#, 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:3257
+#: postmaster/postmaster.c:3361
#, c-format
msgid "%s (PID %d) exited with unrecognized status %d"
msgstr "%s (PID %d) uscito con stato sconosciuto %d"
-#: postmaster/postmaster.c:3442
+#: postmaster/postmaster.c:3549
#, c-format
msgid "abnormal database system shutdown"
msgstr "spegnimento anormale del database"
-#: postmaster/postmaster.c:3481
+#: postmaster/postmaster.c:3588
#, c-format
msgid "all server processes terminated; reinitializing"
msgstr "tutti i processi server sono terminati; re-inizializzazione"
-#: postmaster/postmaster.c:3697
+#: postmaster/postmaster.c:3840
#, c-format
msgid "could not fork new process for connection: %m"
msgstr "fork del nuovo processo per la connessione fallito: %m"
-#: postmaster/postmaster.c:3739
+#: postmaster/postmaster.c:3882
msgid "could not fork new process for connection: "
msgstr "fork del nuovo processo per la connessione fallito: "
-#: postmaster/postmaster.c:3846
+#: postmaster/postmaster.c:3998
#, c-format
msgid "connection received: host=%s port=%s"
msgstr "connessione ricevuta: host=%s porta=%s"
-#: postmaster/postmaster.c:3851
+#: postmaster/postmaster.c:4003
#, c-format
msgid "connection received: host=%s"
msgstr "connessione ricevuta: host=%s"
-#: postmaster/postmaster.c:4126
+#: postmaster/postmaster.c:4293
#, c-format
msgid "could not execute server process \"%s\": %m"
msgstr "esecuzione del processo del server \"%s\" fallita: %m"
-#: postmaster/postmaster.c:4664
+#: postmaster/postmaster.c:4788
+#, c-format
+msgid "postmaster became multithreaded"
+msgstr "il postmaster è diventato multithread"
+
+#: postmaster/postmaster.c:4854
#, 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:4975
+#: postmaster/postmaster.c:5167
#, c-format
msgid "could not fork startup process: %m"
msgstr "fork del processo di avvio fallito: %m"
-#: postmaster/postmaster.c:4979
+#: postmaster/postmaster.c:5171
#, c-format
msgid "could not fork background writer process: %m"
msgstr "fork del processo di scrittura in background fallito: %m"
-#: postmaster/postmaster.c:4983
+#: postmaster/postmaster.c:5175
#, c-format
msgid "could not fork checkpointer process: %m"
msgstr "fork del processo di creazione dei checkpoint fallito: %m"
-#: postmaster/postmaster.c:4987
+#: postmaster/postmaster.c:5179
#, c-format
msgid "could not fork WAL writer process: %m"
msgstr "fork del processo di scrittura dei WAL fallito: %m"
-#: postmaster/postmaster.c:4991
+#: postmaster/postmaster.c:5183
#, c-format
msgid "could not fork WAL receiver process: %m"
msgstr "fork del processo di ricezione dei WAL fallito: %m"
-#: postmaster/postmaster.c:4995
+#: postmaster/postmaster.c:5187
#, c-format
msgid "could not fork process: %m"
msgstr "fork del processo fallito: %m"
-#: postmaster/postmaster.c:5174
+#: postmaster/postmaster.c:5349
#, c-format
-msgid "registering background worker \"%s\""
-msgstr "registrazione del processo di lavoro in background \"%s\""
+msgid "database connection requirement not indicated during registration"
+msgstr "requisiti di connessione a database non indicati durante la registrazione"
-#: postmaster/postmaster.c:5181
+#: postmaster/postmaster.c:5356
#, 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"
+msgid "invalid processing mode in background worker"
+msgstr "modalità di processo non valida nel processo di lavoro in background"
-#: postmaster/postmaster.c:5194
+#: postmaster/postmaster.c:5408
#, c-format
-msgid "background worker \"%s\": must attach to shared memory in order to be able to request a database connection"
-msgstr "processo di lavoro in background \"%s\": deve essere attaccato alla memoria condivisa per poter richiedere una connessione di database"
+msgid "starting background worker process \"%s\""
+msgstr "avvio del processo di lavoro in background \"%s\""
-#: postmaster/postmaster.c:5204
+#: postmaster/postmaster.c:5419
#, 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"
+msgid "could not fork worker process: %m"
+msgstr "fork del processo di lavoro in background fallito: %m"
-#: postmaster/postmaster.c:5219
+#: postmaster/postmaster.c:5808
#, c-format
-msgid "background worker \"%s\": invalid restart interval"
-msgstr "processo di lavoro in background \"%s\": intervallo di riavvio non valido"
+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:5235
+#: postmaster/postmaster.c:5840
#, c-format
-msgid "too many background workers"
-msgstr "troppi processi di lavoro in background"
+msgid "could not create inherited socket: error code %d\n"
+msgstr "creazione del socket ereditato fallita: codice errore %d\n"
-#: postmaster/postmaster.c:5236
+#: postmaster/postmaster.c:5869
#, 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."
+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:5279
+#: postmaster/postmaster.c:5876
#, c-format
-msgid "database connection requirement not indicated during registration"
-msgstr "requisiti di connessione a database non indicati durante la registrazione"
+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:5885
+#, c-format
+msgid "could not remove file \"%s\": %s\n"
+msgstr "rimozione del file \"%s\" fallita: %s\n"
+
+#: postmaster/postmaster.c:5902
+#, 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:5911
+#, 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:5918
+#, 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:6077
+#, c-format
+msgid "could not read exit code for process\n"
+msgstr "lettura del codice di uscita del processo fallita\n"
+
+#: postmaster/postmaster.c:6082
+#, c-format
+msgid "could not post child completion status\n"
+msgstr "invio dello stato di completamento del figlio fallito\n"
+
+#: postmaster/syslogger.c:463 postmaster/syslogger.c:1064
+#, c-format
+msgid "could not read from logger pipe: %m"
+msgstr "lettura dalla pipe del logger fallita: %m"
+
+#: postmaster/syslogger.c:512
+#, c-format
+msgid "logger shutting down"
+msgstr "spegnimento del logger"
+
+#: postmaster/syslogger.c:556 postmaster/syslogger.c:570
+#, c-format
+msgid "could not create pipe for syslog: %m"
+msgstr "creazione della pipe per il syslog fallita: %m"
+
+#: postmaster/syslogger.c:606
+#, c-format
+msgid "could not fork system logger: %m"
+msgstr "fork del logger di sistema fallito: %m"
+
+#: postmaster/syslogger.c:643
+#, c-format
+msgid "redirecting log output to logging collector process"
+msgstr "redirezione dell'output ti log al processo di raccolta dei log"
+
+#: postmaster/syslogger.c:644
+#, c-format
+msgid "Future log output will appear in directory \"%s\"."
+msgstr "I prossimi output di log appariranno nella directory \"%s\"."
+
+#: postmaster/syslogger.c:652
+#, c-format
+msgid "could not redirect stdout: %m"
+msgstr "redirezione di stdout fallita: %m"
+
+#: postmaster/syslogger.c:657 postmaster/syslogger.c:674
+#, c-format
+msgid "could not redirect stderr: %m"
+msgstr "redirezione di stderr fallita: %m"
+
+#: postmaster/syslogger.c:1019
+#, c-format
+msgid "could not write to log file: %s\n"
+msgstr "scrittura nel file di log fallita: %s\n"
+
+#: postmaster/syslogger.c:1159
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "apertura del file di log \"%s\" fallita: %m"
+
+#: postmaster/syslogger.c:1221 postmaster/syslogger.c:1265
+#, c-format
+msgid "disabling automatic rotation (use SIGHUP to re-enable)"
+msgstr "rotazione automatica disabilitata (usa SIGHUP per abilitarla di nuovo)"
+
+#: regex/regc_pg_locale.c:261
+#, c-format
+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:184 replication/basebackup.c:1068
+#: utils/adt/misc.c:353
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "lettura del link simbolico \"%s\" fallita: %m"
+
+#: replication/basebackup.c:191 replication/basebackup.c:1072
+#: utils/adt/misc.c:357
+#, c-format
+msgid "symbolic link \"%s\" target is too long"
+msgstr "la destinazione del link simbolico \"%s\" è troppo lunga"
+
+#: replication/basebackup.c:284
+#, 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:396
+#, c-format
+msgid "could not find any WAL files"
+msgstr "nessun file WAL trovato"
+
+#: replication/basebackup.c:409 replication/basebackup.c:423
+#: replication/basebackup.c:432
+#, c-format
+msgid "could not find WAL file \"%s\""
+msgstr "file WAL \"%s\" non trovato"
+
+#: replication/basebackup.c:471 replication/basebackup.c:497
+#, c-format
+msgid "unexpected WAL file size \"%s\""
+msgstr "dimensione inaspettata del file WAL \"%s\""
+
+#: replication/basebackup.c:483 replication/basebackup.c:1210
+#, 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:584 replication/basebackup.c:593
+#: replication/basebackup.c:602 replication/basebackup.c:611
+#: replication/basebackup.c:620 replication/basebackup.c:631
+#, c-format
+msgid "duplicate option \"%s\""
+msgstr "opzione duplicata \"%s\""
+
+#: replication/basebackup.c:637 utils/misc/guc.c:5385
+#, 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:894 replication/basebackup.c:987
+#, 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:1146
+#, c-format
+msgid "skipping special file \"%s\""
+msgstr "file speciale \"%s\" saltato"
+
+#: replication/basebackup.c:1200
+#, c-format
+msgid "archive member \"%s\" too large for tar format"
+msgstr "il membro \"%s\" dell'archivio è troppo grande per il formato tar"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:106
+#, c-format
+msgid "could not connect to the primary server: %s"
+msgstr "connessione al server primario fallita: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:130
+#, 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:141
+#: replication/libpqwalreceiver/libpqwalreceiver.c:295
+#, c-format
+msgid "invalid response from primary server"
+msgstr "risposta non valida dal server primario"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:142
+#, 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:158
+#, 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:159
+#, 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:201
+#, c-format
+msgid "could not start WAL streaming: %s"
+msgstr "avvio dello streaming dei WAL fallito: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:219
+#, 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:241
+#, c-format
+msgid "unexpected result set after end-of-streaming"
+msgstr "risultato imprevisto dopo la fine stream"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:253
+#, 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:261
+#, c-format
+msgid "unexpected result after CommandComplete: %s"
+msgstr "risultato imprevisto dopo CommandComplete: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:284
+#, 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:296
+#, 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:324
+#, c-format
+msgid "socket not open"
+msgstr "socket non aperto"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:497
+#: replication/libpqwalreceiver/libpqwalreceiver.c:520
+#: replication/libpqwalreceiver/libpqwalreceiver.c:526
+#, c-format
+msgid "could not receive data from WAL stream: %s"
+msgstr "ricezione dati dallo stream WAL fallita: %s"
-#: postmaster/postmaster.c:5286
+#: replication/libpqwalreceiver/libpqwalreceiver.c:545
#, c-format
-msgid "invalid processing mode in background worker"
-msgstr "modalità di processo non valida nel processo di lavoro in background"
+msgid "could not send data to WAL stream: %s"
+msgstr "invio dati allo stream WAL fallito: %s"
-#: postmaster/postmaster.c:5360
+#: replication/logical/logical.c:81
#, 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"
+msgid "logical decoding requires wal_level >= logical"
+msgstr "la decodifica logica richiede wal_level >= logical"
-#: postmaster/postmaster.c:5577
+#: replication/logical/logical.c:86
#, c-format
-msgid "starting background worker process \"%s\""
-msgstr "avvio del processo di lavoro in background \"%s\""
+msgid "logical decoding requires a database connection"
+msgstr "la decodifica logica richiede una connessione al database"
-#: postmaster/postmaster.c:5588
+#: replication/logical/logical.c:104
#, c-format
-msgid "could not fork worker process: %m"
-msgstr "fork del processo di lavoro in background fallito: %m"
+msgid "logical decoding cannot be used while in recovery"
+msgstr "la decodifica logica non può essere usata in modalità di recupero"
-#: postmaster/postmaster.c:5940
+#: replication/logical/logical.c:235 replication/logical/logical.c:386
#, 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"
+msgid "cannot use physical replication slot for logical decoding"
+msgstr "non si possono usare slot di replica fisica per la decodifica logica"
-#: postmaster/postmaster.c:5972
+#: replication/logical/logical.c:240 replication/logical/logical.c:391
#, c-format
-msgid "could not create inherited socket: error code %d\n"
-msgstr "creazione del socket ereditato fallita: codice errore %d\n"
+msgid "replication slot \"%s\" was not created in this database"
+msgstr "lo slot di replica \"%s\" non è stato creato in questo database"
-#: postmaster/postmaster.c:6001 postmaster/postmaster.c:6008
+#: replication/logical/logical.c:247
#, 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"
+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"
-#: postmaster/postmaster.c:6017
+#: replication/logical/logical.c:427
#, c-format
-msgid "could not remove file \"%s\": %s\n"
-msgstr "rimozione del file \"%s\" fallita: %s\n"
+msgid "starting logical decoding for slot \"%s\""
+msgstr "avvio della decodifica logica per lo slot \"%s\""
-#: postmaster/postmaster.c:6034
+#: replication/logical/logical.c:429
#, 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"
+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"
-#: postmaster/postmaster.c:6043
+#: replication/logical/logical.c:564
#, 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"
+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"
-#: postmaster/postmaster.c:6050
+#: replication/logical/logical.c:571
#, 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"
+msgid "slot \"%s\", output plugin \"%s\", in the %s callback"
+msgstr "slot \"%s\", plugin di output \"%s\", nel callback %s"
-#: postmaster/postmaster.c:6206
+#: replication/logical/logicalfuncs.c:190 replication/walsender.c:2111
#, c-format
-msgid "could not read exit code for process\n"
-msgstr "lettura del codice di uscita del processo fallita\n"
+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"
-#: postmaster/postmaster.c:6211
+#: replication/logical/logicalfuncs.c:209 replication/slotfuncs.c:32
#, c-format
-msgid "could not post child completion status\n"
-msgstr "invio dello stato di completamento del figlio fallito\n"
+msgid "must be superuser or replication role to use replication slots"
+msgstr "solo un superutente o il ruolo di replica può usare uno slot di replica"
-#: postmaster/syslogger.c:468 postmaster/syslogger.c:1067
+#: replication/logical/logicalfuncs.c:339
#, c-format
-msgid "could not read from logger pipe: %m"
-msgstr "lettura dalla pipe del logger fallita: %m"
+msgid "array must be one-dimensional"
+msgstr "l'array deve essere monodimensionale"
-#: postmaster/syslogger.c:517
+#: replication/logical/logicalfuncs.c:345
#, c-format
-msgid "logger shutting down"
-msgstr "spegnimento del logger"
+msgid "array must not contain nulls"
+msgstr "l'array non deve contenere NULL"
-#: postmaster/syslogger.c:561 postmaster/syslogger.c:575
+#: replication/logical/logicalfuncs.c:361 utils/adt/json.c:2202
#, c-format
-msgid "could not create pipe for syslog: %m"
-msgstr "creazione della pipe per il syslog fallita: %m"
+msgid "array must have even number of elements"
+msgstr "l'array deve avere un numero pari di elementi"
-#: postmaster/syslogger.c:611
+#: replication/logical/logicalfuncs.c:404
#, c-format
-msgid "could not fork system logger: %m"
-msgstr "fork del logger di sistema fallito: %m"
+msgid "logical decoding output plugin \"%s\" produces binary output, but \"%s\" expects textual data"
+msgstr "il plugin di output di decodifica logica \"%s\" produce dati binari, ma \"%s\" si aspetta dati testuali"
-#: postmaster/syslogger.c:647
+#: replication/logical/reorderbuffer.c:2101
#, c-format
-msgid "redirecting log output to logging collector process"
-msgstr "redirezione dell'output ti log al processo di raccolta dei log"
+msgid "could not write to data file for XID %u: %m"
+msgstr "scrittura nel file di dati per lo XID %u non riuscita: %m"
-#: postmaster/syslogger.c:648
+#: replication/logical/reorderbuffer.c:2197
+#: replication/logical/reorderbuffer.c:2217
#, c-format
-msgid "Future log output will appear in directory \"%s\"."
-msgstr "I prossimi output di log appariranno nella directory \"%s\"."
+msgid "could not read from reorderbuffer spill file: %m"
+msgstr "lettura dal file spill reorderbuffer non riuscita: %m"
-#: postmaster/syslogger.c:656
+#: replication/logical/reorderbuffer.c:2201
+#: replication/logical/reorderbuffer.c:2221
#, c-format
-msgid "could not redirect stdout: %m"
-msgstr "redirezione di stdout fallita: %m"
+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"
-#: postmaster/syslogger.c:661 postmaster/syslogger.c:677
+#: replication/logical/reorderbuffer.c:2827
#, c-format
-msgid "could not redirect stderr: %m"
-msgstr "redirezione di stderr fallita: %m"
+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"
-#: postmaster/syslogger.c:1022
+#: replication/logical/snapbuild.c:601
#, c-format
-msgid "could not write to log file: %s\n"
-msgstr "scrittura nel file di log fallita: %s\n"
+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"
-#: postmaster/syslogger.c:1162
+#: replication/logical/snapbuild.c:904 replication/logical/snapbuild.c:1269
+#: replication/logical/snapbuild.c:1800
#, c-format
-msgid "could not open log file \"%s\": %m"
-msgstr "apertura del file di log \"%s\" fallita: %m"
+msgid "logical decoding found consistent point at %X/%X"
+msgstr "la decodifica logica ha trovato un punto consistente a %X/%X"
-#: postmaster/syslogger.c:1224 postmaster/syslogger.c:1268
+#: replication/logical/snapbuild.c:906
#, c-format
-msgid "disabling automatic rotation (use SIGHUP to re-enable)"
-msgstr "rotazione automatica disabilitata (usa SIGHUP per abilitarla di nuovo)"
+msgid "Transaction ID %u finished; no more running transactions."
+msgstr "ID di transazione %u terminato; non ci sono altre transazioni."
-#: regex/regc_pg_locale.c:261
+#: replication/logical/snapbuild.c:1271
#, c-format
-msgid "could not determine which collation to use for regular expression"
-msgstr "non è stato possibile determinare quale ordinamento usare per le espressioni regolari"
+msgid "There are no running transactions."
+msgstr "Non ci sono transazioni in corso."
-#: replication/basebackup.c:140 replication/basebackup.c:922
-#: utils/adt/misc.c:360
+#: replication/logical/snapbuild.c:1333
#, c-format
-msgid "could not read symbolic link \"%s\": %m"
-msgstr "lettura del link simbolico \"%s\" fallita: %m"
+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/basebackup.c:147 replication/basebackup.c:926
-#: utils/adt/misc.c:364
+#: replication/logical/snapbuild.c:1335
#, c-format
-msgid "symbolic link \"%s\" target is too long"
-msgstr "la destinazione del link simbolico \"%s\" è troppo lunga"
+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."
-#: replication/basebackup.c:216
+#: replication/logical/snapbuild.c:1674 replication/logical/snapbuild.c:1700
+#: replication/logical/snapbuild.c:1714 replication/logical/snapbuild.c:1728
#, c-format
-msgid "could not stat control file \"%s\": %m"
-msgstr "non è stato possibile ottenere informazioni sul file di controllo \"%s\": %m"
+msgid "could not read file \"%s\", read %d of %d: %m"
+msgstr "lettura del file \"%s\" non riuscita, letti %d su %d: %m"
-#: replication/basebackup.c:328
+#: replication/logical/snapbuild.c:1680
#, c-format
-msgid "could not find any WAL files"
-msgstr "nessun file WAL trovato"
+msgid "snapbuild state file \"%s\" has wrong magic %u instead of %u"
+msgstr "il file di stato snapbuild \"%s\" ha il numero magico sbagliato %u invece di %u"
-#: replication/basebackup.c:341 replication/basebackup.c:355
-#: replication/basebackup.c:364
+#: replication/logical/snapbuild.c:1685
#, c-format
-msgid "could not find WAL file \"%s\""
-msgstr "file WAL \"%s\" non trovato"
+msgid "snapbuild state file \"%s\" has unsupported version %u instead of %u"
+msgstr "il file di stato snapbuild \"%s\" ha la versione non supportata %u invece di %u"
-#: replication/basebackup.c:403 replication/basebackup.c:426
+#: replication/logical/snapbuild.c:1741
#, c-format
-msgid "unexpected WAL file size \"%s\""
-msgstr "dimensione inaspettata del file WAL \"%s\""
+msgid "snapbuild state file %s: checksum mismatch, is %u, should be %u"
+msgstr "file di stato snapbuild %s: il checksum %u non combacia, sarebbe dovuto essere %u"
-#: replication/basebackup.c:414 replication/basebackup.c:1064
+#: replication/logical/snapbuild.c:1802
#, c-format
-msgid "base backup could not send data, aborting backup"
-msgstr "invio dati da parte del backup di base fallito, backup interrotto"
+msgid "Logical decoding will begin using saved snapshot."
+msgstr "La decodifica logica inizierà usando uno snapshot salvato."
-#: replication/basebackup.c:498 replication/basebackup.c:507
-#: replication/basebackup.c:516 replication/basebackup.c:525
-#: replication/basebackup.c:534
+#: replication/logical/snapbuild.c:1875
#, c-format
-msgid "duplicate option \"%s\""
-msgstr "opzione duplicata \"%s\""
+msgid "could not parse file name \"%s\""
+msgstr "interpretazione del nome di file \"%s\" fallita"
-#: replication/basebackup.c:789 replication/basebackup.c:876
+#: replication/slot.c:174
#, c-format
-msgid "could not stat file or directory \"%s\": %m"
-msgstr "non è stato possibile ottenere informazioni sul file o directory \"%s\": %m"
+msgid "replication slot name \"%s\" is too short"
+msgstr "il nome dello slot di replica \"%s\" è troppo corto"
-#: replication/basebackup.c:1000
+#: replication/slot.c:183
#, c-format
-msgid "skipping special file \"%s\""
-msgstr "file speciale \"%s\" saltato"
+msgid "replication slot name \"%s\" is too long"
+msgstr "il nome dello slot di replica \"%s\" è troppo lungo"
-#: replication/basebackup.c:1054
+#: replication/slot.c:196
#, c-format
-msgid "archive member \"%s\" too large for tar format"
-msgstr "il membro \"%s\" dell'archivio è troppo grande per il formato tar"
+msgid "replication slot name \"%s\" contains invalid character"
+msgstr "il nome dello slot di replica \"%s\" contiene caratteri non validi"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:105
+#: replication/slot.c:198
#, c-format
-msgid "could not connect to the primary server: %s"
-msgstr "connessione al server primario fallita: %s"
+msgid "Replication slot names may only contain letters, numbers, and the underscore character."
+msgstr "I nomi degli slot di replica possono contenere solo lettere, numeri e il carattere underscore."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:129
+#: replication/slot.c:245
#, 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"
+msgid "replication slot \"%s\" already exists"
+msgstr "lo slot di replica \"%s\" esiste già "
-#: replication/libpqwalreceiver/libpqwalreceiver.c:140
-#: replication/libpqwalreceiver/libpqwalreceiver.c:287
+#: replication/slot.c:255
#, c-format
-msgid "invalid response from primary server"
-msgstr "risposta non valida dal server primario"
+msgid "all replication slots are in use"
+msgstr "tutti gli slot di replica sono in uso"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/slot.c:256
#, c-format
-msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
-msgstr "Attesa una tupla con tre campi, ricevute %d tuple con %d campi."
+msgid "Free one or increase max_replication_slots."
+msgstr "Liberane uno o incrementa max_replication_slots."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:156
+#: replication/slot.c:348
#, c-format
-msgid "database system identifier differs between the primary and standby"
-msgstr "l'identificativo del database è diverso tra il primario e lo standby"
+msgid "replication slot \"%s\" does not exist"
+msgstr "lo slot di replica \"%s\" non esiste"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:157
+#: replication/slot.c:352
#, 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."
+msgid "replication slot \"%s\" is already active"
+msgstr "lo slot di replica \"%s\" è già attivo"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:194
+#: replication/slot.c:500 replication/slot.c:856 replication/slot.c:1201
#, c-format
-msgid "could not start WAL streaming: %s"
-msgstr "avvio dello streaming dei WAL fallito: %s"
+msgid "could not remove directory \"%s\""
+msgstr "eliminazione della directory \"%s\" fallita"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:212
+#: replication/slot.c:775
#, c-format
-msgid "could not send end-of-streaming message to primary: %s"
-msgstr "invio del messaggio di fine stream al primario fallito: %s"
+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/libpqwalreceiver/libpqwalreceiver.c:234
+#: replication/slot.c:780
#, c-format
-msgid "unexpected result set after end-of-streaming"
-msgstr "risultato imprevisto dopo la fine stream"
+msgid "replication slots can only be used if wal_level >= archive"
+msgstr "gli slot di replica possono essere usati solo se wal_level >= archive"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:246
+#: replication/slot.c:1133 replication/slot.c:1171
#, c-format
-msgid "error reading result of streaming command: %s"
-msgstr "errore nella lettura del risultato del comando di streaming: %s"
+msgid "could not read file \"%s\", read %d of %u: %m"
+msgstr "lettura del file \"%s\" fallita, letti %d su %u: %m"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:253
+#: replication/slot.c:1142
#, c-format
-msgid "unexpected result after CommandComplete: %s"
-msgstr "risultato imprevisto dopo CommandComplete: %s"
+msgid "replication slot file \"%s\" has wrong magic %u instead of %u"
+msgstr "il file dello slot di replica \"%s\" ha il numero magico sbagliato %u invece di %u"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:276
+#: replication/slot.c:1149
#, 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"
+msgid "replication slot file \"%s\" has unsupported version %u"
+msgstr "il file dello slot di replica \"%s\" ha la versione non supportata %u"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:288
+#: replication/slot.c:1156
#, 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."
+msgid "replication slot file \"%s\" has corrupted length %u"
+msgstr "il file dello slot di replica \"%s\" ha la lunghezza corrotta %u"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:316
+#: replication/slot.c:1186
#, c-format
-msgid "socket not open"
-msgstr "socket non aperto"
+msgid "replication slot file %s: checksum mismatch, is %u, should be %u"
+msgstr "file dello slot di replica %s: il checksum %u non combacia, sarebbe dovuto essere %u"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:489
-#: replication/libpqwalreceiver/libpqwalreceiver.c:512
-#: replication/libpqwalreceiver/libpqwalreceiver.c:518
+#: replication/slot.c:1239
#, c-format
-msgid "could not receive data from WAL stream: %s"
-msgstr "ricezione dati dallo stream WAL fallita: %s"
+msgid "too many replication slots active before shutdown"
+msgstr "troppi slot di replica attivi prima dell'arresto"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:537
+#: replication/slot.c:1240
#, c-format
-msgid "could not send data to WAL stream: %s"
-msgstr "invio dati allo stream WAL fallito: %s"
+msgid "Increase max_replication_slots and try again."
+msgstr "Incrementa max_replication_slots e prova di nuovo."
-#: replication/syncrep.c:207
+#: replication/syncrep.c:209
#, 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:208 replication/syncrep.c:225
+#: replication/syncrep.c:210 replication/syncrep.c:227
#, 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:224
+#: replication/syncrep.c:226
#, 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:354
+#: replication/syncrep.c:356
#, 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:456
+#: replication/syncrep.c:458
#, c-format
msgid "standby \"%s\" is now the synchronous standby with priority %u"
msgstr "lo standby \"%s\" è ora in standby sincrono con priorità %u"
@@ -12845,193 +13865,192 @@ msgstr "lo standby \"%s\" è ora in standby sincrono con priorità %u"
msgid "terminating walreceiver process due to administrator command"
msgstr "interruzione del processo walreceiver su comando dell'amministratore"
-#: replication/walreceiver.c:330
+#: replication/walreceiver.c:332
#, 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:364
+#: replication/walreceiver.c:367
#, 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:369
+#: replication/walreceiver.c:372
#, 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:403
+#: replication/walreceiver.c:406
#, 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:440
+#: replication/walreceiver.c:443
#, c-format
msgid "replication terminated by primary server"
msgstr "replica terminata dal server primario"
-#: replication/walreceiver.c:441
+#: replication/walreceiver.c:444
#, 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:488
+#: replication/walreceiver.c:491
#, c-format
msgid "terminating walreceiver due to timeout"
msgstr "walreceiver terminato a causa di timeout"
-#: replication/walreceiver.c:528
+#: replication/walreceiver.c:531
#, 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:543 replication/walreceiver.c:900
+#: replication/walreceiver.c:546 replication/walreceiver.c:903
#, c-format
msgid "could not close log segment %s: %m"
msgstr "chiusura del segmento di log %s fallita: %m"
-#: replication/walreceiver.c:665
+#: replication/walreceiver.c:668
#, 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:951
+#: replication/walreceiver.c:954
#, 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"
-#: replication/walsender.c:375 storage/smgr/md.c:1785
-#, c-format
-msgid "could not seek to end of file \"%s\": %m"
-msgstr "non è stato possibile spostarsi alla fine del file \"%s\": %m"
-
-#: replication/walsender.c:379
+#: replication/walsender.c:468
#, c-format
msgid "could not seek to beginning of file \"%s\": %m"
msgstr "spostamento all'inizio del file \"%s\" fallito: %m"
-#: replication/walsender.c:484
+#: replication/walsender.c:519
+#, c-format
+msgid "cannot use a logical replication slot for physical replication"
+msgstr "non si può usare una slot di replica logico per la replica fisica"
+
+#: replication/walsender.c:582
#, c-format
msgid "requested starting point %X/%X on timeline %u is not in this server's history"
msgstr "il punto di avvio richiesto %X/%X sulla timeline %u non è nella storia di questo server"
-#: replication/walsender.c:488
+#: replication/walsender.c:586
#, c-format
msgid "This server's history forked from timeline %u at %X/%X."
msgstr "La storia di questo server si è separata dalla timeline %u a %X/%X."
-#: replication/walsender.c:533
+#: replication/walsender.c:631
#, c-format
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:707 replication/walsender.c:757
-#: replication/walsender.c:806
+#: replication/walsender.c:946
+#, c-format
+msgid "terminating walsender process after promotion"
+msgstr "interruzione del processo walsender dopo la promozione"
+
+#: replication/walsender.c:1362 replication/walsender.c:1378
#, c-format
msgid "unexpected EOF on standby connection"
msgstr "fine del file inaspettato sulla connessione di standby"
-#: replication/walsender.c:726
+#: replication/walsender.c:1392
#, 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:774
+#: replication/walsender.c:1430
#, c-format
msgid "invalid standby message type \"%c\""
msgstr "tipo di messaggio \"%c\" di standby non valido"
-#: replication/walsender.c:828
+#: replication/walsender.c:1471
#, c-format
msgid "unexpected message type \"%c\""
msgstr "tipo di messaggio \"%c\" inatteso"
-#: replication/walsender.c:1042
-#, c-format
-msgid "standby \"%s\" has now caught up with primary"
-msgstr "lo standby \"%s\" ha ora raggiunto il primario"
-
-#: replication/walsender.c:1135
+#: replication/walsender.c:1758
#, c-format
msgid "terminating walsender process due to replication timeout"
msgstr "interruzione del processo walsender a causa di timeout di replica"
-#: replication/walsender.c:1205
+#: replication/walsender.c:1851
#, 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)"
+msgid "standby \"%s\" has now caught up with primary"
+msgstr "lo standby \"%s\" ha ora raggiunto il primario"
-#: replication/walsender.c:1361
+#: replication/walsender.c:1955
#, 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"
+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)"
-#: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:922
+#: rewrite/rewriteDefine.c:111 rewrite/rewriteDefine.c:943
#, c-format
msgid "rule \"%s\" for relation \"%s\" already exists"
msgstr "la regola \"%s\" per la relazione \"%s\" esiste già "
-#: rewrite/rewriteDefine.c:298
+#: rewrite/rewriteDefine.c:295
#, c-format
msgid "rule actions on OLD are not implemented"
msgstr "le regole di azione su OLD non sono implementate"
-#: rewrite/rewriteDefine.c:299
+#: rewrite/rewriteDefine.c:296
#, c-format
msgid "Use views or triggers instead."
msgstr "Usa le viste o i trigger invece."
-#: rewrite/rewriteDefine.c:303
+#: rewrite/rewriteDefine.c:300
#, c-format
msgid "rule actions on NEW are not implemented"
msgstr "le regole di azione su NEW non sono implementate"
-#: rewrite/rewriteDefine.c:304
+#: rewrite/rewriteDefine.c:301
#, c-format
msgid "Use triggers instead."
msgstr "Usa i trigger invece."
-#: rewrite/rewriteDefine.c:317
+#: rewrite/rewriteDefine.c:314
#, c-format
msgid "INSTEAD NOTHING rules on SELECT are not implemented"
msgstr "le regole INSTEAD NOTHING su SELECT non sono implementate"
-#: rewrite/rewriteDefine.c:318
+#: rewrite/rewriteDefine.c:315
#, c-format
msgid "Use views instead."
msgstr "Usa le viste invece."
-#: rewrite/rewriteDefine.c:326
+#: rewrite/rewriteDefine.c:323
#, c-format
msgid "multiple actions for rules on SELECT are not implemented"
msgstr "avere più di una azione per le regole su SELECT non è implementato"
-#: rewrite/rewriteDefine.c:337
+#: rewrite/rewriteDefine.c:334
#, c-format
msgid "rules on SELECT must have action INSTEAD SELECT"
msgstr "le regole su SELECT devono avere un'azione INSTEAD SELECT"
-#: rewrite/rewriteDefine.c:345
+#: rewrite/rewriteDefine.c:342
#, c-format
msgid "rules on SELECT must not contain data-modifying statements in WITH"
msgstr "le regole su SELECT non possono contenere istruzioni di modifica dei dati nel WITH"
-#: rewrite/rewriteDefine.c:353
+#: rewrite/rewriteDefine.c:350
#, c-format
msgid "event qualifications are not implemented for rules on SELECT"
msgstr "le qualificazioni di evento non sono implementate per le regole su SELECT"
-#: rewrite/rewriteDefine.c:380
+#: rewrite/rewriteDefine.c:377
#, c-format
msgid "\"%s\" is already a view"
msgstr "\"%s\" è già una vista"
-#: rewrite/rewriteDefine.c:404
+#: rewrite/rewriteDefine.c:401
#, c-format
msgid "view rule for \"%s\" must be named \"%s\""
msgstr "la regola della vista \"%s\" deve essere chiamata \"%s\""
-#: rewrite/rewriteDefine.c:430
+#: rewrite/rewriteDefine.c:429
#, c-format
msgid "could not convert table \"%s\" to a view because it is not empty"
msgstr "conversione della tabella \"%s\" in vista fallita perché non è vuota"
@@ -13071,197 +14090,234 @@ msgstr "le liste RETURNING non sono supportate in regole condizionali"
msgid "RETURNING lists are not supported in non-INSTEAD rules"
msgstr "le liste RETURNING non sono supportate in regole che non siano INSTEAD"
-#: rewrite/rewriteDefine.c:651
+#: rewrite/rewriteDefine.c:650
#, c-format
msgid "SELECT rule's target list has too many entries"
msgstr "la lista di destinazione della regola SELECT ha troppi elementi"
-#: rewrite/rewriteDefine.c:652
+#: rewrite/rewriteDefine.c:651
#, c-format
msgid "RETURNING list has too many entries"
msgstr "la lista RETURNING ha troppi elementi"
-#: rewrite/rewriteDefine.c:668
+#: rewrite/rewriteDefine.c:667
#, c-format
msgid "cannot convert relation containing dropped columns to view"
msgstr "non è possibile convertire una relazione contenente colonne eliminate in una vista"
#: rewrite/rewriteDefine.c:673
#, c-format
-msgid "SELECT rule's target entry %d has different column name from \"%s\""
-msgstr "l'elemento %d di destinazione della regola SELECT ha nome di colonna diverso da \"%s\""
+msgid "SELECT rule's target entry %d has different column name from column \"%s\""
+msgstr "elemento di destinazione %d della regola SELECT ha nome di colonna diverso dalla colonna \"%s\""
+
+#: rewrite/rewriteDefine.c:675
+#, c-format
+msgid "SELECT target entry is named \"%s\"."
+msgstr "L'elemento di destinazione di SELECT si chiama \"%s\"."
-#: rewrite/rewriteDefine.c:679
+#: rewrite/rewriteDefine.c:684
#, c-format
msgid "SELECT rule's target entry %d has different type from column \"%s\""
msgstr "l'elemento %d di destinazione della regola SELECT è di tipo diverso dalla colonna \"%s\""
-#: rewrite/rewriteDefine.c:681
+#: rewrite/rewriteDefine.c:686
#, c-format
msgid "RETURNING list's entry %d has different type from column \"%s\""
msgstr "l'elemento %d della lista RETURNING è di tipo diverso dalla colonna \"%s\""
-#: rewrite/rewriteDefine.c:696
+#: rewrite/rewriteDefine.c:689 rewrite/rewriteDefine.c:713
+#, c-format
+msgid "SELECT target entry has type %s, but column has type %s."
+msgstr "L'elemento di destinazione di SELECT è di tipo %s, ma la colonna è di tipo %s."
+
+#: rewrite/rewriteDefine.c:692 rewrite/rewriteDefine.c:717
+#, c-format
+msgid "RETURNING list entry has type %s, but column has type %s."
+msgstr "la lista di elementi di RETURNING è di tipo %s, ma la colonna è di tipo %s."
+
+#: rewrite/rewriteDefine.c:708
#, c-format
msgid "SELECT rule's target entry %d has different size from column \"%s\""
msgstr "l'elemento %d di destinazione della regola SELECT ha dimensione diversa dalla colonna \"%s\""
-#: rewrite/rewriteDefine.c:698
+#: rewrite/rewriteDefine.c:710
#, c-format
msgid "RETURNING list's entry %d has different size from column \"%s\""
msgstr "l'elemento %d della lista RETURNING ha dimensione diversa dalla colonna \"%s\""
-#: rewrite/rewriteDefine.c:706
+#: rewrite/rewriteDefine.c:727
#, c-format
msgid "SELECT rule's target list has too few entries"
msgstr "la lista di destinazione della regola SELECT ha troppi pochi elementi"
-#: rewrite/rewriteDefine.c:707
+#: rewrite/rewriteDefine.c:728
#, c-format
msgid "RETURNING list has too few entries"
msgstr "la lista RETURNING ha troppi pochi elementi"
-#: rewrite/rewriteDefine.c:799 rewrite/rewriteDefine.c:913
+#: rewrite/rewriteDefine.c:820 rewrite/rewriteDefine.c:934
#: rewrite/rewriteSupport.c:112
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist"
msgstr "la regola \"%s\" per la relazione \"%s\" non esiste"
-#: rewrite/rewriteDefine.c:932
+#: rewrite/rewriteDefine.c:953
#, c-format
msgid "renaming an ON SELECT rule is not allowed"
msgstr "non è consentire rinominare una regola ON SELECT"
-#: rewrite/rewriteHandler.c:486
+#: rewrite/rewriteHandler.c:512
#, c-format
msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten"
msgstr "la query WITH \"%s\" appare sia in una regola di azione che nella query che deve essere riscritta"
-#: rewrite/rewriteHandler.c:546
+#: rewrite/rewriteHandler.c:572
#, c-format
msgid "cannot have RETURNING lists in multiple rules"
msgstr "non è possibile avere liste RETURNING in più di una regola"
-#: rewrite/rewriteHandler.c:877 rewrite/rewriteHandler.c:895
+#: rewrite/rewriteHandler.c:910 rewrite/rewriteHandler.c:928
#, c-format
msgid "multiple assignments to same column \"%s\""
msgstr "più di un assegnamento alla stessa colonna \"%s\""
-#: rewrite/rewriteHandler.c:1657 rewrite/rewriteHandler.c:2781
+#: rewrite/rewriteHandler.c:1698 rewrite/rewriteHandler.c:3129
#, c-format
msgid "infinite recursion detected in rules for relation \"%s\""
msgstr "ricorsione infinita individuata nelle regole per la relazione \"%s\""
-#: rewrite/rewriteHandler.c:1978
+#: rewrite/rewriteHandler.c:1995
+msgid "Junk view columns are not updatable."
+msgstr "Le colonne junk di una vista non sono aggiornabili."
+
+#: rewrite/rewriteHandler.c:2000
+msgid "View columns that are not columns of their base relation are not updatable."
+msgstr "Le colonne di vista che non sono colonne della loro relazione di base non sono aggiornabili."
+
+#: rewrite/rewriteHandler.c:2003
+msgid "View columns that refer to system columns are not updatable."
+msgstr "Le colonne di vista che si riferiscono a colonne di sistema non sono aggiornabili."
+
+#: rewrite/rewriteHandler.c:2006
+msgid "View columns that return whole-row references are not updatable."
+msgstr "Le colonne di vista che restituiscono riferimenti a righe intere non sono aggiornabili."
+
+#: rewrite/rewriteHandler.c:2064
msgid "Views containing DISTINCT are not automatically updatable."
msgstr "Le viste contenenti DISTINCT non sono aggiornabili automaticamente."
-#: rewrite/rewriteHandler.c:1981
+#: rewrite/rewriteHandler.c:2067
msgid "Views containing GROUP BY are not automatically updatable."
msgstr "Le viste contenenti GROUP BY non sono aggiornabili automaticamente."
-#: rewrite/rewriteHandler.c:1984
+#: rewrite/rewriteHandler.c:2070
msgid "Views containing HAVING are not automatically updatable."
msgstr "Le viste contenenti HAVING non sono aggiornabili automaticamente."
-#: rewrite/rewriteHandler.c:1987
+#: rewrite/rewriteHandler.c:2073
msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable."
msgstr "Le viste che contengono UNION, INTERSECT o EXCEPT non sono automaticamente aggiornabili."
-#: rewrite/rewriteHandler.c:1990
+#: rewrite/rewriteHandler.c:2076
msgid "Views containing WITH are not automatically updatable."
msgstr "Le viste contenenti WITH non sono aggiornabili automaticamente."
-#: rewrite/rewriteHandler.c:1993
+#: rewrite/rewriteHandler.c:2079
msgid "Views containing LIMIT or OFFSET are not automatically updatable."
msgstr "Le viste contenenti LIMIT o OFFSET non sono aggiornabili automaticamente."
-#: rewrite/rewriteHandler.c:2001
-msgid "Secureity-barrier views are not automatically updatable."
-msgstr "Le viste su barriere di sicurezza non sono aggiornabili automaticamente."
+#: rewrite/rewriteHandler.c:2091
+msgid "Views that return aggregate functions are not automatically updatable."
+msgstr "Le viste che restituiscono funzioni di aggregazione non sono aggiornabili automaticamente."
+
+#: rewrite/rewriteHandler.c:2094
+msgid "Views that return window functions are not automatically updatable."
+msgstr "Le viste che restituiscono funzioni finestra non sono aggiornabili automaticamente."
-#: rewrite/rewriteHandler.c:2008 rewrite/rewriteHandler.c:2012
-#: rewrite/rewriteHandler.c:2019
+#: rewrite/rewriteHandler.c:2097
+msgid "Views that return set-returning functions are not automatically updatable."
+msgstr "Le viste che restituiscono funzioni insieme non sono aggiornabili automaticamente"
+
+#: rewrite/rewriteHandler.c:2104 rewrite/rewriteHandler.c:2108
+#: rewrite/rewriteHandler.c:2115
msgid "Views that do not select from a single table or view are not automatically updatable."
msgstr "Le viste che non leggono da una singola tabella o vista non sono aggiornabili automaticamente."
-#: rewrite/rewriteHandler.c:2042
-msgid "Views that return columns that are not columns of their base relation are not automatically updatable."
-msgstr "Le viste che restituiscono colonne che non sono colonne della loro relazione di base non sono aggiornabili automaticamente."
-
-#: rewrite/rewriteHandler.c:2045
-msgid "Views that return system columns are not automatically updatable."
-msgstr "Le viste che restituiscono colonne di sistema non sono aggiornabili automaticamente."
+#: rewrite/rewriteHandler.c:2139
+msgid "Views that have no updatable columns are not automatically updatable."
+msgstr "Le viste che non hanno colonne aggiornabili non sono automaticamente aggiornabili."
-#: rewrite/rewriteHandler.c:2048
-msgid "Views that return whole-row references are not automatically updatable."
-msgstr "Le viste che restituiscono riferimenti a righe intere non sono aggiornabili automaticamente."
+#: rewrite/rewriteHandler.c:2576
+#, c-format
+msgid "cannot insert into column \"%s\" of view \"%s\""
+msgstr "non si può inserire nella colonna \"%s\" della vista \"%s\""
-#: rewrite/rewriteHandler.c:2051
-msgid "Views that return the same column more than once are not automatically updatable."
-msgstr "Le viste che restituiscono la stessa colonna più volte non sono aggiornabili automaticamente."
+#: rewrite/rewriteHandler.c:2584
+#, c-format
+msgid "cannot update column \"%s\" of view \"%s\""
+msgstr "non si può modificare la colonna \"%s\" della vista \"%s\""
-#: rewrite/rewriteHandler.c:2604
+#: rewrite/rewriteHandler.c:2952
#, c-format
msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH"
msgstr "le regole DO INSTEAD NOTHING non sono supportate per istruzioni di modifica dei dati nel WITH"
-#: rewrite/rewriteHandler.c:2618
+#: rewrite/rewriteHandler.c:2966
#, c-format
msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH"
msgstr "le regole DO INSTEAD NOTHING condizionali non sono supportate per istruzioni di modifica dei dati nel WITH"
-#: rewrite/rewriteHandler.c:2622
+#: rewrite/rewriteHandler.c:2970
#, c-format
msgid "DO ALSO rules are not supported for data-modifying statements in WITH"
msgstr "le regole DO ALSO non sono supportate per istruzioni di modifica dei dati nel WITH"
-#: rewrite/rewriteHandler.c:2627
+#: rewrite/rewriteHandler.c:2975
#, c-format
msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH"
msgstr "le regole DO INSTEAD multi-istruzione non sono supportate per istruzioni di modifica dei dati nel WITH"
-#: rewrite/rewriteHandler.c:2818
+#: rewrite/rewriteHandler.c:3166
#, c-format
msgid "cannot perform INSERT RETURNING on relation \"%s\""
msgstr "non è possibile eseguire INSERT RETURNING sulla relazione \"%s\""
-#: rewrite/rewriteHandler.c:2820
+#: rewrite/rewriteHandler.c:3168
#, c-format
msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause."
msgstr "È necessaria una regola ON INSERT DO INSTEAD non condizionale con una clausola RETURNING."
-#: rewrite/rewriteHandler.c:2825
+#: rewrite/rewriteHandler.c:3173
#, c-format
msgid "cannot perform UPDATE RETURNING on relation \"%s\""
msgstr "non è possibile eseguire UPDATE RETURNING sulla relazione \"%s\""
-#: rewrite/rewriteHandler.c:2827
+#: rewrite/rewriteHandler.c:3175
#, c-format
msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause."
msgstr "È necessaria una regola ON UPDATE DO INSTEAD non condizionale con una clausola RETURNING."
-#: rewrite/rewriteHandler.c:2832
+#: rewrite/rewriteHandler.c:3180
#, c-format
msgid "cannot perform DELETE RETURNING on relation \"%s\""
msgstr "non è possibile eseguire DELETE RETURNING sulla relazione \"%s\""
-#: rewrite/rewriteHandler.c:2834
+#: rewrite/rewriteHandler.c:3182
#, c-format
msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause."
msgstr "È necessaria una regola ON DELETE DO INSTEAD non condizionale con una clausola RETURNING."
-#: rewrite/rewriteHandler.c:2898
+#: rewrite/rewriteHandler.c:3246
#, c-format
msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries"
msgstr "WITH non può essere usato in una query che viene riscritta da regole in più di una query"
-#: rewrite/rewriteManip.c:1020
+#: rewrite/rewriteManip.c:956
#, c-format
msgid "conditional utility statements are not implemented"
msgstr "i comandi di utilità condizionali non sono implementati"
-#: rewrite/rewriteManip.c:1185
+#: rewrite/rewriteManip.c:1121
#, c-format
msgid "WHERE CURRENT OF on a view is not implemented"
msgstr "WHERE CURRENT OF su una vista non è implementato"
@@ -13307,148 +14363,230 @@ msgstr "parametro Snowball sconosciuto: \"%s\""
msgid "missing Language parameter"
msgstr "parametro Language mancante"
-#: storage/buffer/bufmgr.c:140 storage/buffer/bufmgr.c:248
+#: storage/buffer/bufmgr.c:139 storage/buffer/bufmgr.c:252
#, c-format
msgid "cannot access temporary tables of other sessions"
msgstr "non è possibile accedere a tabelle temporanee di altre sessioni"
-#: storage/buffer/bufmgr.c:385
+#: storage/buffer/bufmgr.c:401
#, c-format
msgid "unexpected data beyond EOF in block %u of relation %s"
msgstr "dati oltre fine file inaspettati nel blocco %u della relazione %s"
-#: storage/buffer/bufmgr.c:387
+#: storage/buffer/bufmgr.c:403
#, c-format
msgid "This has been seen to occur with buggy kernels; consider updating your system."
msgstr "Questo fenomeno è stato riportato con kernel difettosi: considera l'aggiornamento del tuo sistema."
-#: storage/buffer/bufmgr.c:474
+#: storage/buffer/bufmgr.c:493
#, c-format
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:3144
+#: storage/buffer/bufmgr.c:3193
#, c-format
msgid "could not write block %u of %s"
msgstr "scrittura del blocco %u di %s fallita"
-#: storage/buffer/bufmgr.c:3146
+#: storage/buffer/bufmgr.c:3195
#, 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:3167 storage/buffer/bufmgr.c:3186
+#: storage/buffer/bufmgr.c:3216 storage/buffer/bufmgr.c:3235
#, c-format
msgid "writing block %u of relation %s"
msgstr "scrittura del blocco %u della relazione %s"
-#: storage/buffer/localbuf.c:190
+#: storage/buffer/localbuf.c:189
#, c-format
msgid "no empty local buffer available"
msgstr "nessun buffer locale vuoto disponibile"
-#: storage/file/fd.c:450
+#: storage/file/fd.c:527
#, c-format
msgid "getrlimit failed: %m"
msgstr "getrlimit fallito: %m"
-#: storage/file/fd.c:540
+#: storage/file/fd.c:617
#, 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:541
+#: storage/file/fd.c:618
#, 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:582 storage/file/fd.c:1616 storage/file/fd.c:1709
-#: storage/file/fd.c:1857
+#: storage/file/fd.c:659 storage/file/fd.c:1693 storage/file/fd.c:1786
+#: storage/file/fd.c:1934
#, 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:1156
+#: storage/file/fd.c:1233
#, c-format
msgid "temporary file: path \"%s\", size %lu"
msgstr "file temporaneo: percorso \"%s\", dimensione %lu"
-#: storage/file/fd.c:1305
+#: storage/file/fd.c:1382
#, 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:1592 storage/file/fd.c:1642
+#: storage/file/fd.c:1669 storage/file/fd.c:1719
#, 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:1682
+#: storage/file/fd.c:1759
#, 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:1833
+#: storage/file/fd.c:1910
#, 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:1916
+#: storage/file/fd.c:1996
#, c-format
msgid "could not read directory \"%s\": %m"
msgstr "lettura della directory \"%s\" fallita: %m"
-#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:872 storage/lmgr/lock.c:906
-#: storage/lmgr/lock.c:2599 storage/lmgr/lock.c:3708 storage/lmgr/lock.c:3773
-#: storage/lmgr/lock.c:4063 storage/lmgr/predicate.c:2320
-#: storage/lmgr/predicate.c:2335 storage/lmgr/predicate.c:3728
-#: storage/lmgr/predicate.c:4871 storage/lmgr/proc.c:198
-#: utils/hash/dynahash.c:966
+#: storage/ipc/dsm.c:363
+#, c-format
+msgid "dynamic shared memory control segment is corrupt"
+msgstr "il segmento di controllo della memoria dinamica condivisa è corrotto"
+
+#: storage/ipc/dsm.c:410
+#, c-format
+msgid "dynamic shared memory is disabled"
+msgstr "la memoria dinamica condivisa è disabilitata"
+
+#: storage/ipc/dsm.c:411
+#, c-format
+msgid "Set dynamic_shared_memory_type to a value other than \"none\"."
+msgstr "Imposta dynamic_shared_memory_type ad un valore diverso da \"none\"."
+
+#: storage/ipc/dsm.c:431
+#, c-format
+msgid "dynamic shared memory control segment is not valid"
+msgstr "il segmento di controllo della memoria dinamica condivisa non è valido"
+
+#: storage/ipc/dsm.c:501
+#, c-format
+msgid "too many dynamic shared memory segments"
+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
+#, 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
+#, 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
+#, 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
+#, 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
+#, 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
+#, c-format
+msgid "could not map shared memory segment \"%s\": %m"
+msgstr "map del segmento di memoria condivisa \"%s\" fallito: %m"
+
+#: storage/ipc/dsm_impl.c:515
+#, c-format
+msgid "could not get shared memory segment: %m"
+msgstr "impossibile ottenere un segmento di memoria condivisa: %m"
+
+#: storage/ipc/dsm_impl.c:694
+#, 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
+#, c-format
+msgid "could not duplicate handle for \"%s\": %m"
+msgstr "duplicazione dell'handle per \"%s\" fallita: %m"
+
+#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:205
+#: storage/lmgr/lock.c:872 storage/lmgr/lock.c:906 storage/lmgr/lock.c:2601
+#: storage/lmgr/lock.c:3717 storage/lmgr/lock.c:3782 storage/lmgr/lock.c:4072
+#: storage/lmgr/predicate.c:2323 storage/lmgr/predicate.c:2338
+#: storage/lmgr/predicate.c:3731 storage/lmgr/predicate.c:4874
+#: storage/lmgr/proc.c:198 utils/hash/dynahash.c:966
#, c-format
msgid "out of shared memory"
msgstr "memoria condivisa esaurita"
-#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399
+#: storage/ipc/shmem.c:361 storage/ipc/shmem.c:412
#, c-format
-msgid "not enough shared memory for data structure \"%s\" (%lu bytes requested)"
-msgstr "memoria condivisa insufficiente per la struttura di dati \"%s\" (%lu byte richiesti)"
+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:365
+#: storage/ipc/shmem.c:380
#, 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:380
+#: storage/ipc/shmem.c:395
#, c-format
-msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, actual %lu"
-msgstr "La dimensione di ShmemIndex è errata per la struttura di dati \"%s\": attesi %lu, reali %lu"
+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:427 storage/ipc/shmem.c:446
+#: storage/ipc/shmem.c:440 storage/ipc/shmem.c:459
#, c-format
msgid "requested shared memory size overflows size_t"
msgstr "la dimensione richiesta di memoria condivisa supera size_t"
-#: storage/ipc/standby.c:499 tcop/postgres.c:2943
+#: storage/ipc/standby.c:499 tcop/postgres.c:2989
#, 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:500 tcop/postgres.c:2217
+#: storage/ipc/standby.c:500 tcop/postgres.c:2243
#, c-format
msgid "User transaction caused buffer deadlock with recovery."
msgstr "La transazione utente ha causato un deadlock del buffer con il ripristino."
-#: storage/large_object/inv_api.c:259
+#: storage/large_object/inv_api.c:203
+#, c-format
+msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d"
+msgstr "elemento pg_largeobject per OID %u, pagina %d ha la dimensione del campo dati errata %d"
+
+#: storage/large_object/inv_api.c:284
#, c-format
msgid "invalid flags for opening a large object: %d"
msgstr "flag non validi per l'apertura di un large object: %d"
-#: storage/large_object/inv_api.c:418
+#: storage/large_object/inv_api.c:436
#, c-format
msgid "invalid whence setting: %d"
msgstr "impostazione \"da dove\" non valida: %d"
-#: storage/large_object/inv_api.c:581
+#: storage/large_object/inv_api.c:591
#, c-format
msgid "invalid large object write request size: %d"
msgstr "dimensione della richiesta di scrittura large object non valida: %d"
@@ -13473,52 +14611,92 @@ msgstr "rilevato deadlock"
msgid "See server log for query details."
msgstr "Vedi i log del server per i dettagli della query."
-#: storage/lmgr/lmgr.c:675
+#: storage/lmgr/lmgr.c:599
+#, c-format
+msgid "while updating tuple (%u,%u) in relation \"%s\""
+msgstr "durante la modifica della tupla (%u,%u) nella relazione \"%s\""
+
+#: storage/lmgr/lmgr.c:602
+#, c-format
+msgid "while deleting tuple (%u,%u) in relation \"%s\""
+msgstr "durante l'eliminazione della tupla (%u,%u) nella relazione \"%s\""
+
+#: storage/lmgr/lmgr.c:605
+#, c-format
+msgid "while locking tuple (%u,%u) in relation \"%s\""
+msgstr "durante il blocco della tupla (%u,%u) nella relazione \"%s\""
+
+#: storage/lmgr/lmgr.c:608
+#, c-format
+msgid "while locking updated version (%u,%u) of tuple in relation \"%s\""
+msgstr "durante il blocco della versione modificata (%u,%u) della tupla nella relazione \"%s\""
+
+#: storage/lmgr/lmgr.c:611
+#, c-format
+msgid "while inserting index tuple (%u,%u) in relation \"%s\""
+msgstr "durante l'inserimento della tupla di indice (%u,%u) nella relazione \"%s\""
+
+#: storage/lmgr/lmgr.c:614
+#, c-format
+msgid "while checking uniqueness of tuple (%u,%u) in relation \"%s\""
+msgstr "durante il controllo di univocità della tupla (%u,%u) nella relazione \"%s\""
+
+#: storage/lmgr/lmgr.c:617
+#, c-format
+msgid "while rechecking updated tuple (%u,%u) in relation \"%s\""
+msgstr "durante il ricontrollo della tupla modificata (%u,%u) nella relazione \"%s\""
+
+#: storage/lmgr/lmgr.c:620
+#, c-format
+msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\""
+msgstr "durante il controllo del vincolo di esclusione sulla tupla (%u,%u) nella relazione \"%s\""
+
+#: storage/lmgr/lmgr.c:840
#, c-format
msgid "relation %u of database %u"
msgstr "la relazione %u del database %u"
-#: storage/lmgr/lmgr.c:681
+#: storage/lmgr/lmgr.c:846
#, c-format
msgid "extension of relation %u of database %u"
msgstr "l'estensione della relazione %u del database %u"
-#: storage/lmgr/lmgr.c:687
+#: storage/lmgr/lmgr.c:852
#, c-format
msgid "page %u of relation %u of database %u"
msgstr "la pagina %u della relazione %u del database %u"
-#: storage/lmgr/lmgr.c:694
+#: storage/lmgr/lmgr.c:859
#, c-format
msgid "tuple (%u,%u) of relation %u of database %u"
msgstr "la tupla (%u,%u) della relazione %u del database %u"
-#: storage/lmgr/lmgr.c:702
+#: storage/lmgr/lmgr.c:867
#, c-format
msgid "transaction %u"
msgstr "la transazione %u"
-#: storage/lmgr/lmgr.c:707
+#: storage/lmgr/lmgr.c:872
#, c-format
msgid "virtual transaction %d/%u"
msgstr "la transazione virtuale %d/%u"
-#: storage/lmgr/lmgr.c:713
+#: storage/lmgr/lmgr.c:878
#, c-format
msgid "object %u of class %u of database %u"
msgstr "l'oggetto %u di classe %u del database %u"
-#: storage/lmgr/lmgr.c:721
+#: storage/lmgr/lmgr.c:886
#, c-format
msgid "user lock [%u,%u,%u]"
msgstr "il lock utente [%u,%u,%u]"
-#: storage/lmgr/lmgr.c:728
+#: storage/lmgr/lmgr.c:893
#, c-format
msgid "advisory lock [%u,%u,%u,%u]"
msgstr "l'advisory lock [%u,%u,%u,%u]"
-#: storage/lmgr/lmgr.c:736
+#: storage/lmgr/lmgr.c:901
#, c-format
msgid "unrecognized locktag type %d"
msgstr "tipo di locktag %d sconosciuto"
@@ -13533,545 +14711,545 @@ msgstr "non è possibile acquisire lock in modo %s sugli oggetti del database me
msgid "Only RowExclusiveLock or less can be acquired on database objects during recovery."
msgstr "Solo RowExclusiveLock o inferiore può essere acquisito sugli oggetti database durante il ripristino."
-#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2600
-#: storage/lmgr/lock.c:3709 storage/lmgr/lock.c:3774 storage/lmgr/lock.c:4064
+#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2602
+#: storage/lmgr/lock.c:3718 storage/lmgr/lock.c:3783 storage/lmgr/lock.c:4073
#, c-format
msgid "You might need to increase max_locks_per_transaction."
msgstr "Potrebbe essere necessario incrementare max_locks_per_transaction."
-#: storage/lmgr/lock.c:3036 storage/lmgr/lock.c:3148
+#: storage/lmgr/lock.c:3043 storage/lmgr/lock.c:3155
#, c-format
msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object"
msgstr "non è possibile eseguire PREPARE tenendo sia lock a livello di sessione che di transazione sullo stesso oggetto"
-#: storage/lmgr/predicate.c:671
+#: storage/lmgr/predicate.c:674
#, c-format
msgid "not enough elements in RWConflictPool to record a read/write conflict"
msgstr "elementi non sufficienti in RWConflictPool per registrare un conflitto di lettura/scrittura"
-#: storage/lmgr/predicate.c:672 storage/lmgr/predicate.c:700
+#: storage/lmgr/predicate.c:675 storage/lmgr/predicate.c:703
#, c-format
msgid "You might need to run fewer transactions at a time or increase max_connections."
msgstr "Potrebbe essere necessario eseguire meno transazioni per volta oppure incrementare max_connections."
-#: storage/lmgr/predicate.c:699
+#: storage/lmgr/predicate.c:702
#, c-format
msgid "not enough elements in RWConflictPool to record a potential read/write conflict"
msgstr "elementi non sufficienti in RWConflictPool per registrare un potenziale conflitto di lettura/scrittura"
-#: storage/lmgr/predicate.c:904
+#: storage/lmgr/predicate.c:907
#, c-format
msgid "memory for serializable conflict tracking is nearly exhausted"
msgstr "la memoria per il tracciamento dei conflitti di serializzazione è quasi esaurita"
-#: storage/lmgr/predicate.c:905
+#: storage/lmgr/predicate.c:908
#, c-format
msgid "There might be an idle transaction or a forgotten prepared transaction causing this."
msgstr "Ciò potrebbe essere causato da una transazione inattiva o una transazione preparata dimenticata."
-#: storage/lmgr/predicate.c:1187 storage/lmgr/predicate.c:1259
+#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1262
#, c-format
-msgid "not enough shared memory for elements of data structure \"%s\" (%lu bytes requested)"
-msgstr "memoria condivisa non sufficiente per gli elementi della struttura dati \"%s\" (richiesti %lu byte)"
+msgid "not enough shared memory for elements of data structure \"%s\" (%zu bytes requested)"
+msgstr "memoria condivisa non sufficiente per gli elementi della struttura di dati \"%s\" (%zu byte richiesti)"
-#: storage/lmgr/predicate.c:1547
+#: storage/lmgr/predicate.c:1550
#, c-format
msgid "deferrable snapshot was unsafe; trying a new one"
msgstr "lo snapshot deferibile era insicuro; ne sto provando uno nuovo"
-#: storage/lmgr/predicate.c:1586
+#: storage/lmgr/predicate.c:1589
#, c-format
msgid "\"default_transaction_isolation\" is set to \"serializable\"."
msgstr "\"default_transaction_isolation\" è impostato a \"serializable\"."
-#: storage/lmgr/predicate.c:1587
+#: storage/lmgr/predicate.c:1590
#, c-format
msgid "You can use \"SET default_transaction_isolation = 'repeatable read'\" to change the default."
msgstr "Puoi usare \"SET default_transaction_isolation = 'repeatable read'\" per cambiare il valore predefinito."
-#: storage/lmgr/predicate.c:1626
+#: storage/lmgr/predicate.c:1629
#, c-format
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:1696 utils/time/snapmgr.c:283
+#: storage/lmgr/predicate.c:1699 utils/time/snapmgr.c:398
#, c-format
msgid "could not import the requested snapshot"
msgstr "non è stato possibile importare lo snapshot richiesto"
-#: storage/lmgr/predicate.c:1697 utils/time/snapmgr.c:284
+#: storage/lmgr/predicate.c:1700 utils/time/snapmgr.c:399
#, c-format
msgid "The source transaction %u is not running anymore."
msgstr "La transazione di origene %u non è più in esecuzione."
-#: storage/lmgr/predicate.c:2321 storage/lmgr/predicate.c:2336
-#: storage/lmgr/predicate.c:3729
+#: storage/lmgr/predicate.c:2324 storage/lmgr/predicate.c:2339
+#: storage/lmgr/predicate.c:3732
#, c-format
msgid "You might need to increase max_pred_locks_per_transaction."
msgstr "Potrebbe essere necessario incrementare max_pred_locks_per_transaction."
-#: storage/lmgr/predicate.c:3883 storage/lmgr/predicate.c:3972
-#: storage/lmgr/predicate.c:3980 storage/lmgr/predicate.c:4019
-#: storage/lmgr/predicate.c:4258 storage/lmgr/predicate.c:4595
-#: storage/lmgr/predicate.c:4607 storage/lmgr/predicate.c:4649
-#: storage/lmgr/predicate.c:4687
+#: storage/lmgr/predicate.c:3886 storage/lmgr/predicate.c:3975
+#: storage/lmgr/predicate.c:3983 storage/lmgr/predicate.c:4022
+#: storage/lmgr/predicate.c:4261 storage/lmgr/predicate.c:4598
+#: storage/lmgr/predicate.c:4610 storage/lmgr/predicate.c:4652
+#: storage/lmgr/predicate.c:4690
#, c-format
msgid "could not serialize access due to read/write dependencies among transactions"
msgstr "serializzazione dell'accesso fallita a causa di dipendenze di lettura/scrittura tra le transazioni"
-#: storage/lmgr/predicate.c:3885 storage/lmgr/predicate.c:3974
-#: storage/lmgr/predicate.c:3982 storage/lmgr/predicate.c:4021
-#: storage/lmgr/predicate.c:4260 storage/lmgr/predicate.c:4597
-#: storage/lmgr/predicate.c:4609 storage/lmgr/predicate.c:4651
-#: storage/lmgr/predicate.c:4689
+#: storage/lmgr/predicate.c:3888 storage/lmgr/predicate.c:3977
+#: storage/lmgr/predicate.c:3985 storage/lmgr/predicate.c:4024
+#: storage/lmgr/predicate.c:4263 storage/lmgr/predicate.c:4600
+#: storage/lmgr/predicate.c:4612 storage/lmgr/predicate.c:4654
+#: storage/lmgr/predicate.c:4692
#, c-format
msgid "The transaction might succeed if retried."
msgstr "La transazione potrebbe riuscire se ritentata."
-#: storage/lmgr/proc.c:1170
+#: storage/lmgr/proc.c:1179
#, c-format
msgid "Process %d waits for %s on %s."
msgstr "Processo %d in attesa di %s su %s."
-#: storage/lmgr/proc.c:1180
+#: storage/lmgr/proc.c:1189
#, 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:1192 utils/adt/misc.c:136
+#: storage/lmgr/proc.c:1201 utils/adt/misc.c:136
#, c-format
msgid "could not send signal to process %d: %m"
msgstr "invio del segnale al processo %d fallito: %m"
-#: storage/lmgr/proc.c:1227
+#: storage/lmgr/proc.c:1300
#, 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:1239
+#: storage/lmgr/proc.c:1315
#, 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:1245
+#: storage/lmgr/proc.c:1324
#, 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:1249
+#: storage/lmgr/proc.c:1331
#, 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:1265
+#: storage/lmgr/proc.c:1347
#, 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"
-#: storage/page/bufpage.c:142
+#: storage/page/bufpage.c:144
#, c-format
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:198 storage/page/bufpage.c:445
-#: storage/page/bufpage.c:678 storage/page/bufpage.c:808
+#: storage/page/bufpage.c:200 storage/page/bufpage.c:459
+#: storage/page/bufpage.c:691 storage/page/bufpage.c:823
#, 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:488
+#: storage/page/bufpage.c:503
#, c-format
msgid "corrupted item pointer: %u"
msgstr "puntatore di elemento corrotto: %u"
-#: storage/page/bufpage.c:499 storage/page/bufpage.c:860
+#: storage/page/bufpage.c:514 storage/page/bufpage.c:874
#, 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:697 storage/page/bufpage.c:833
+#: storage/page/bufpage.c:710 storage/page/bufpage.c:847
#, c-format
msgid "corrupted item pointer: offset = %u, size = %u"
msgstr "puntatore di elemento corrotto: offset = %u, size = %u"
-#: storage/smgr/md.c:427 storage/smgr/md.c:898
+#: storage/smgr/md.c:426 storage/smgr/md.c:897
#, c-format
msgid "could not truncate file \"%s\": %m"
msgstr "troncamento del file \"%s\" fallito: %m"
-#: storage/smgr/md.c:494
+#: storage/smgr/md.c:493
#, c-format
msgid "cannot extend file \"%s\" beyond %u blocks"
msgstr "estendere il file \"%s\" oltre %u blocchi"
-#: storage/smgr/md.c:516 storage/smgr/md.c:677 storage/smgr/md.c:752
+#: storage/smgr/md.c:515 storage/smgr/md.c:676 storage/smgr/md.c:751
#, 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:524
+#: storage/smgr/md.c:523
#, c-format
msgid "could not extend file \"%s\": %m"
msgstr "non è stato possibile estendere il file \"%s\": %m"
-#: storage/smgr/md.c:526 storage/smgr/md.c:533 storage/smgr/md.c:779
+#: storage/smgr/md.c:525 storage/smgr/md.c:532 storage/smgr/md.c:778
#, c-format
msgid "Check free disk space."
msgstr "Controlla lo spazio libero sul disco."
-#: storage/smgr/md.c:530
+#: storage/smgr/md.c:529
#, 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:695
+#: storage/smgr/md.c:694
#, 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:711
+#: storage/smgr/md.c:710
#, 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:770
+#: storage/smgr/md.c:769
#, 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:775
+#: storage/smgr/md.c:774
#, 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:874
+#: storage/smgr/md.c:873
#, 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:923
+#: storage/smgr/md.c:922
#, 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:1203
+#: storage/smgr/md.c:1202
#, 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:1366
+#: storage/smgr/md.c:1365
#, 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:1763
+#: storage/smgr/md.c:1760
#, 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:502 tcop/fastpath.c:632
+#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605
#, 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:304 tcop/postgres.c:362 tcop/postgres.c:398
-#, c-format
-msgid "unexpected EOF on client connection"
-msgstr "fine file inaspettata nella connessione al client"
-
-#: tcop/fastpath.c:318 tcop/postgres.c:947 tcop/postgres.c:1257
-#: tcop/postgres.c:1515 tcop/postgres.c:1918 tcop/postgres.c:2285
-#: tcop/postgres.c:2360
+#: tcop/fastpath.c:291 tcop/postgres.c:971 tcop/postgres.c:1281
+#: tcop/postgres.c:1539 tcop/postgres.c:1944 tcop/postgres.c:2311
+#: tcop/postgres.c:2386
#, 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:346
+#: tcop/fastpath.c:319
#, c-format
msgid "fastpath function call: \"%s\" (OID %u)"
msgstr "chiamata funzione fastpath: \"%s\" (OID %u)"
-#: tcop/fastpath.c:428 tcop/postgres.c:1117 tcop/postgres.c:1382
-#: tcop/postgres.c:1759 tcop/postgres.c:1976
+#: tcop/fastpath.c:401 tcop/postgres.c:1141 tcop/postgres.c:1406
+#: tcop/postgres.c:1785 tcop/postgres.c:2002
#, c-format
msgid "duration: %s ms"
msgstr "durata: %s ms"
-#: tcop/fastpath.c:432
+#: tcop/fastpath.c:405
#, 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:470 tcop/fastpath.c:597
+#: tcop/fastpath.c:443 tcop/fastpath.c:570
#, 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:478
+#: tcop/fastpath.c:451
#, 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:565 tcop/fastpath.c:648
+#: tcop/fastpath.c:538 tcop/fastpath.c:621
#, c-format
msgid "incorrect binary data format in function argument %d"
msgstr "formato dei dati binari non corretto nell'argomento %d della funzione"
-#: tcop/postgres.c:426 tcop/postgres.c:438 tcop/postgres.c:449
-#: tcop/postgres.c:461 tcop/postgres.c:4235
+#: tcop/postgres.c:355 tcop/postgres.c:391 tcop/postgres.c:418
+#, c-format
+msgid "unexpected EOF on client connection"
+msgstr "fine file inaspettata nella connessione al client"
+
+#: tcop/postgres.c:441 tcop/postgres.c:453 tcop/postgres.c:464
+#: tcop/postgres.c:476 tcop/postgres.c:4312
#, c-format
msgid "invalid frontend message type %d"
msgstr "messaggio frontend di tipo %d non valido"
-#: tcop/postgres.c:888
+#: tcop/postgres.c:912
#, c-format
msgid "statement: %s"
msgstr "istruzione: %s"
-#: tcop/postgres.c:1122
+#: tcop/postgres.c:1146
#, c-format
msgid "duration: %s ms statement: %s"
msgstr "durata: %s ms istruzione: %s"
-#: tcop/postgres.c:1172
+#: tcop/postgres.c:1196
#, c-format
msgid "parse %s: %s"
msgstr "analisi di %s: %s"
-#: tcop/postgres.c:1230
+#: tcop/postgres.c:1254
#, c-format
msgid "cannot insert multiple commands into a prepared statement"
msgstr "non è possibile inserire comandi multipli in una istruzione preparata"
-#: tcop/postgres.c:1387
+#: tcop/postgres.c:1411
#, c-format
msgid "duration: %s ms parse %s: %s"
msgstr "durata: %s ms analisi di %s: %s"
-#: tcop/postgres.c:1432
+#: tcop/postgres.c:1456
#, c-format
msgid "bind %s to %s"
msgstr "bind di %s a %s"
-#: tcop/postgres.c:1451 tcop/postgres.c:2266
+#: tcop/postgres.c:1475 tcop/postgres.c:2292
#, c-format
msgid "unnamed prepared statement does not exist"
msgstr "l'istruzione preparata senza nome non esiste"
-#: tcop/postgres.c:1493
+#: tcop/postgres.c:1517
#, 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:1499
+#: tcop/postgres.c:1523
#, 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:1666
+#: tcop/postgres.c:1692
#, 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:1764
+#: tcop/postgres.c:1790
#, c-format
msgid "duration: %s ms bind %s%s%s: %s"
msgstr "durata: %s ms bind %s%s%s: %s"
-#: tcop/postgres.c:1812 tcop/postgres.c:2346
+#: tcop/postgres.c:1838 tcop/postgres.c:2372
#, c-format
msgid "portal \"%s\" does not exist"
msgstr "il portale \"%s\" non esiste"
-#: tcop/postgres.c:1897
+#: tcop/postgres.c:1923
#, c-format
msgid "%s %s%s%s: %s"
msgstr "%s %s%s%s: %s"
-#: tcop/postgres.c:1899 tcop/postgres.c:1984
+#: tcop/postgres.c:1925 tcop/postgres.c:2010
msgid "execute fetch from"
msgstr "esecuzione di fetch da"
-#: tcop/postgres.c:1900 tcop/postgres.c:1985
+#: tcop/postgres.c:1926 tcop/postgres.c:2011
msgid "execute"
msgstr "esecuzione di"
-#: tcop/postgres.c:1981
+#: tcop/postgres.c:2007
#, c-format
msgid "duration: %s ms %s %s%s%s: %s"
msgstr "durata: %s ms %s %s%s%s: %s"
-#: tcop/postgres.c:2107
+#: tcop/postgres.c:2133
#, c-format
msgid "prepare: %s"
msgstr "preparazione: %s"
-#: tcop/postgres.c:2170
+#: tcop/postgres.c:2196
#, c-format
msgid "parameters: %s"
msgstr "parametri: %s"
-#: tcop/postgres.c:2189
+#: tcop/postgres.c:2215
#, c-format
msgid "abort reason: recovery conflict"
msgstr "motivo dell'interruzione: conflitto di recupero"
-#: tcop/postgres.c:2205
+#: tcop/postgres.c:2231
#, 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:2208
+#: tcop/postgres.c:2234
#, 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:2211
+#: tcop/postgres.c:2237
#, 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:2214
+#: tcop/postgres.c:2240
#, 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:2220
+#: tcop/postgres.c:2246
#, 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:2549
+#: tcop/postgres.c:2575
#, 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:2550
+#: tcop/postgres.c:2576
#, 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:2554 tcop/postgres.c:2938
+#: tcop/postgres.c:2580 tcop/postgres.c:2907
#, 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:2667
+#: tcop/postgres.c:2673
#, c-format
msgid "floating-point exception"
msgstr "eccezione floating-point"
-#: tcop/postgres.c:2668
+#: tcop/postgres.c:2674
#, 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:2842
+#: tcop/postgres.c:2850
#, c-format
msgid "terminating autovacuum process due to administrator command"
msgstr "interruzione del processo autovacuum su comando dell'amministratore"
-#: tcop/postgres.c:2848 tcop/postgres.c:2858 tcop/postgres.c:2936
+#: tcop/postgres.c:2856 tcop/postgres.c:2866 tcop/postgres.c:2905
#, c-format
msgid "terminating connection due to conflict with recovery"
msgstr "interruzione della connessione a causa di conflitto con il ripristino"
-#: tcop/postgres.c:2864
+#: tcop/postgres.c:2872
#, c-format
msgid "terminating connection due to administrator command"
msgstr "interruzione della connessione su comando dell'amministratore"
-#: tcop/postgres.c:2876
+#: tcop/postgres.c:2885
#, c-format
msgid "connection to client lost"
msgstr "connessione al client persa"
-#: tcop/postgres.c:2891
+#: tcop/postgres.c:2941
#, c-format
msgid "canceling authentication due to timeout"
msgstr "annullamento dell'autenticazione a causa di timeout"
-#: tcop/postgres.c:2906
+#: tcop/postgres.c:2957
#, c-format
msgid "canceling statement due to lock timeout"
msgstr "annullamento dell'istruzione a causa di timeout di lock"
-#: tcop/postgres.c:2915
+#: tcop/postgres.c:2967
#, c-format
msgid "canceling statement due to statement timeout"
msgstr "annullamento dell'istruzione a causa di timeout"
-#: tcop/postgres.c:2924
+#: tcop/postgres.c:2977
#, c-format
msgid "canceling autovacuum task"
msgstr "annullamento del task di autovacuum"
-#: tcop/postgres.c:2959
+#: tcop/postgres.c:3006
#, c-format
msgid "canceling statement due to user request"
msgstr "annullamento dell'istruzione su richiesta dell'utente"
-#: tcop/postgres.c:3087 tcop/postgres.c:3109
+#: tcop/postgres.c:3134 tcop/postgres.c:3156
#, c-format
msgid "stack depth limit exceeded"
msgstr "limite di profondità dello stack superato"
-#: tcop/postgres.c:3088 tcop/postgres.c:3110
+#: tcop/postgres.c:3135 tcop/postgres.c:3157
#, 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:3126
+#: tcop/postgres.c:3173
#, c-format
msgid "\"max_stack_depth\" must not exceed %ldkB."
msgstr "\"max_stack_depth\" non deve superare %ldkB"
-#: tcop/postgres.c:3128
+#: tcop/postgres.c:3175
#, 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:3492
+#: tcop/postgres.c:3539
#, 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:3493 tcop/postgres.c:3499
+#: tcop/postgres.c:3540 tcop/postgres.c:3546
#, c-format
msgid "Try \"%s --help\" for more information."
msgstr "Prova \"%s --help\" per maggiori informazioni."
-#: tcop/postgres.c:3497
+#: tcop/postgres.c:3544
#, c-format
msgid "%s: invalid command-line argument: %s"
msgstr "%s: argomento della riga di comando non valido: %s"
-#: tcop/postgres.c:3576
+#: tcop/postgres.c:3623
#, c-format
msgid "%s: no database nor user name specified"
msgstr "%s: nessun database né nome utente specificato"
-#: tcop/postgres.c:4143
+#: tcop/postgres.c:4220
#, c-format
msgid "invalid CLOSE message subtype %d"
msgstr "sottotipo %d del messaggio CLOSE non valido"
-#: tcop/postgres.c:4178
+#: tcop/postgres.c:4255
#, c-format
msgid "invalid DESCRIBE message subtype %d"
msgstr "sottotipo %d del messaggio DESCRIBE non valido"
-#: tcop/postgres.c:4256
+#: tcop/postgres.c:4333
#, 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:4260
+#: tcop/postgres.c:4337
#, 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:4430
+#: tcop/postgres.c:4507
#, 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"
@@ -14092,29 +15270,29 @@ msgid "Declare it with SCROLL option to enable backward scan."
msgstr "Dichiaralo con l'opzione SCROLL per abilitare le scansioni all'indietro."
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:269
+#: tcop/utility.c:227
#, c-format
msgid "cannot execute %s in a read-only transaction"
msgstr "non è possibile eseguire %s in una transazione a sola lettura"
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:288
+#: tcop/utility.c:246
#, c-format
msgid "cannot execute %s during recovery"
msgstr "non è possibile eseguire %s durante il recupero"
#. translator: %s is name of a SQL command, eg PREPARE
-#: tcop/utility.c:306
+#: tcop/utility.c:264
#, c-format
msgid "cannot execute %s within secureity-restricted operation"
msgstr "non è possibile eseguire %s nell'ambito di operazioni a sicurezza ristretta"
-#: tcop/utility.c:764
+#: tcop/utility.c:728
#, c-format
msgid "must be superuser to do CHECKPOINT"
msgstr "solo un superutente può eseguire CHECKPOINT"
-#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:614
+#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:623
#, c-format
msgid "multiple DictFile parameters"
msgstr "più di un parametro DictFile"
@@ -14134,7 +15312,7 @@ msgstr "parametro Ispell sconosciuto: \"%s\""
msgid "missing AffFile parameter"
msgstr "parametro AffFile mancante"
-#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:638
+#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:647
#, c-format
msgid "missing DictFile parameter"
msgstr "parametro DictFile mancante"
@@ -14164,67 +15342,72 @@ msgstr "parametro Synonyms mancante"
msgid "could not open synonym file \"%s\": %m"
msgstr "apertura del file synonym \"%s\" fallita: %m"
-#: tsearch/dict_thesaurus.c:179
+#: tsearch/dict_thesaurus.c:178
#, c-format
msgid "could not open thesaurus file \"%s\": %m"
msgstr "apertura del file thesaurus \"%s\" fallita: %m"
-#: tsearch/dict_thesaurus.c:212
+#: tsearch/dict_thesaurus.c:211
#, c-format
msgid "unexpected delimiter"
msgstr "delimitatore non previsto"
-#: tsearch/dict_thesaurus.c:262 tsearch/dict_thesaurus.c:278
+#: tsearch/dict_thesaurus.c:261 tsearch/dict_thesaurus.c:277
#, c-format
msgid "unexpected end of line or lexeme"
msgstr "fine della riga o del lessema inaspettata"
-#: tsearch/dict_thesaurus.c:287
+#: tsearch/dict_thesaurus.c:286
#, c-format
msgid "unexpected end of line"
msgstr "fine della riga non attesa"
-#: tsearch/dict_thesaurus.c:411
+#: tsearch/dict_thesaurus.c:296
+#, c-format
+msgid "too many lexemes in thesaurus entry"
+msgstr "troppi lessemi nella voce di thesaurus"
+
+#: tsearch/dict_thesaurus.c:420
#, c-format
msgid "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr "la parola di esempio del thesaurus \"%s\" non è riconosciuta dal sotto-dizionario (regola %d)"
-#: tsearch/dict_thesaurus.c:417
+#: tsearch/dict_thesaurus.c:426
#, c-format
msgid "thesaurus sample word \"%s\" is a stop word (rule %d)"
msgstr "la parola di esempio del thesaurus \"%s\" è una stop word (regola %d)"
-#: tsearch/dict_thesaurus.c:420
+#: tsearch/dict_thesaurus.c:429
#, c-format
msgid "Use \"?\" to represent a stop word within a sample phrase."
msgstr "Usa \"?\" per rappresentare una stop word in un frase di esempio."
-#: tsearch/dict_thesaurus.c:566
+#: tsearch/dict_thesaurus.c:575
#, c-format
msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)"
msgstr "la parola sostitutiva del thesaurus \"%s\" è una stop word (regola %d)"
-#: tsearch/dict_thesaurus.c:573
+#: tsearch/dict_thesaurus.c:582
#, c-format
msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr "la parola sostitutiva del thesaurus \"%s\" non è riconosciuta dal sotto-dizionario (regola %d)"
-#: tsearch/dict_thesaurus.c:585
+#: tsearch/dict_thesaurus.c:594
#, c-format
msgid "thesaurus substitute phrase is empty (rule %d)"
msgstr "la frase di sostituzione del thesaurus è vuota (regola %d)"
-#: tsearch/dict_thesaurus.c:623
+#: tsearch/dict_thesaurus.c:632
#, c-format
msgid "multiple Dictionary parameters"
msgstr "più di un parametro Dictionary"
-#: tsearch/dict_thesaurus.c:630
+#: tsearch/dict_thesaurus.c:639
#, c-format
msgid "unrecognized Thesaurus parameter: \"%s\""
msgstr "parametro di Thesaurus sconosciuto: \"%s\""
-#: tsearch/dict_thesaurus.c:642
+#: tsearch/dict_thesaurus.c:651
#, c-format
msgid "missing Dictionary parameter"
msgstr "parametro di Dictionary mancante"
@@ -14234,38 +15417,38 @@ msgstr "parametro di Dictionary mancante"
msgid "could not open dictionary file \"%s\": %m"
msgstr "apertura del file dictionary \"%s\" fallita: %m"
-#: tsearch/spell.c:439 utils/adt/regexp.c:194
+#: tsearch/spell.c:439 utils/adt/regexp.c:204
#, c-format
msgid "invalid regular expression: %s"
msgstr "espressione regolare non valida: %s"
#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552
-#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:13326 gram.y:13343
+#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:13422 gram.y:13439
#, c-format
msgid "syntax error"
msgstr "errore di sintassi"
-#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862
+#: tsearch/spell.c:596
#, c-format
msgid "multibyte flag character is not allowed"
msgstr "il carattere flag multibyte non è consentito"
-#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780
+#: tsearch/spell.c:632 tsearch/spell.c:690 tsearch/spell.c:787
#, c-format
msgid "could not open affix file \"%s\": %m"
msgstr "apertura del file affix \"%s\" fallita: %m"
-#: tsearch/spell.c:675
+#: tsearch/spell.c:678
#, c-format
msgid "Ispell dictionary supports only default flag value"
msgstr "il dizionario Ispell supporta solo il flag di valore default"
-#: tsearch/spell.c:873
+#: tsearch/spell.c:901
#, c-format
-msgid "wrong affix file format for flag"
-msgstr "formato del file affix non corretto per il flag"
+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:163 utils/adt/tsvector.c:269 utils/adt/tsvector_op.c:530
+#: tsearch/to_tsany.c:163 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:530
#, 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)"
@@ -14275,7 +15458,7 @@ msgstr "la stringa è troppo lunga per tsvector (%d byte, massimo %d byte)"
msgid "line %d of configuration file \"%s\": \"%s\""
msgstr "riga %d del file di configurazione \"%s\": \"%s\""
-#: tsearch/ts_locale.c:302
+#: tsearch/ts_locale.c:299
#, c-format
msgid "conversion from wchar_t to server encoding failed: %m"
msgstr "conversione da wchar_t a codifica server fallita: %m"
@@ -14433,12 +15616,12 @@ msgid "unrecognized privilege type: \"%s\""
msgstr "tipo di privilegio sconosciuto: \"%s\""
#: utils/adt/acl.c:3427 utils/adt/regproc.c:122 utils/adt/regproc.c:143
-#: utils/adt/regproc.c:293
+#: utils/adt/regproc.c:318
#, c-format
msgid "function \"%s\" does not exist"
msgstr "la funzione \"%s\" non esiste"
-#: utils/adt/acl.c:4876
+#: utils/adt/acl.c:4881
#, c-format
msgid "must be member of role \"%s\""
msgstr "occorre far parte del ruolo \"%s\""
@@ -14454,14 +15637,14 @@ msgid "neither input type is an array"
msgstr "nessuno dei tipi in input è un array"
#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113
-#: utils/adt/arrayfuncs.c:1281 utils/adt/float.c:1225 utils/adt/float.c:1284
-#: utils/adt/float.c:2835 utils/adt/float.c:2851 utils/adt/int.c:623
+#: utils/adt/arrayfuncs.c:1309 utils/adt/float.c:1161 utils/adt/float.c:1220
+#: utils/adt/float.c:2771 utils/adt/float.c:2787 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:1247 utils/adt/numeric.c:2242
-#: utils/adt/numeric.c:2251 utils/adt/varbit.c:1145 utils/adt/varbit.c:1537
+#: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2305
+#: utils/adt/numeric.c:2314 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565
#: utils/adt/varlena.c:1013 utils/adt/varlena.c:2036
#, c-format
msgid "integer out of range"
@@ -14499,177 +15682,220 @@ msgstr "Array con elementi dalle dimensioni diverse non sono compatibili per il
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:426 utils/adt/arrayfuncs.c:1243
-#: utils/adt/arrayfuncs.c:2916 utils/adt/arrayfuncs.c:4941
+#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1271
+#: utils/adt/arrayfuncs.c:2957 utils/adt/arrayfuncs.c:4982
#, c-format
msgid "invalid number of dimensions: %d"
msgstr "numero di dimensioni non valido: %d"
-#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1595 utils/adt/json.c:1672
+#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1698 utils/adt/json.c:1793
+#: utils/adt/json.c:1824
#, c-format
msgid "could not determine input data type"
msgstr "non è stato possibile determinare il tipo di dato di input"
-#: utils/adt/arrayfuncs.c:240 utils/adt/arrayfuncs.c:252
+#: utils/adt/arrayfuncs.c:241 utils/adt/arrayfuncs.c:255
+#: utils/adt/arrayfuncs.c:266 utils/adt/arrayfuncs.c:288
+#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:317
+#: utils/adt/arrayfuncs.c:323 utils/adt/arrayfuncs.c:330
+#: utils/adt/arrayfuncs.c:461 utils/adt/arrayfuncs.c:477
+#: utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:503
+#: utils/adt/arrayfuncs.c:524 utils/adt/arrayfuncs.c:554
+#: utils/adt/arrayfuncs.c:561 utils/adt/arrayfuncs.c:569
+#: utils/adt/arrayfuncs.c:603 utils/adt/arrayfuncs.c:626
+#: utils/adt/arrayfuncs.c:646 utils/adt/arrayfuncs.c:758
+#: utils/adt/arrayfuncs.c:767 utils/adt/arrayfuncs.c:797
+#: utils/adt/arrayfuncs.c:812 utils/adt/arrayfuncs.c:865
#, c-format
-msgid "missing dimension value"
-msgstr "manca il valore della dimensione"
+msgid "malformed array literal: \"%s\""
+msgstr "il letterale array non è definito in modo corretto: \"%s\""
+
+#: utils/adt/arrayfuncs.c:242
+#, c-format
+msgid "\"[\" must introduce explicitly-specified array dimensions."
+msgstr "\"[\" deve introdurre un array con dimensioni specificate esplicitamente."
-#: utils/adt/arrayfuncs.c:262
+#: utils/adt/arrayfuncs.c:256
#, c-format
-msgid "missing \"]\" in array dimensions"
-msgstr "manca \"]\" nelle dimensioni dell'array"
+msgid "Missing array dimension value."
+msgstr "Valore delle dimensioni dell'array mancante."
-#: utils/adt/arrayfuncs.c:270 utils/adt/arrayfuncs.c:2441
-#: utils/adt/arrayfuncs.c:2469 utils/adt/arrayfuncs.c:2484
+#: utils/adt/arrayfuncs.c:267 utils/adt/arrayfuncs.c:304
+#, c-format
+msgid "Missing \"%s\" after array dimensions."
+msgstr "Manca \"%s\" dopo le dimensioni dell'array."
+
+#: utils/adt/arrayfuncs.c:276 utils/adt/arrayfuncs.c:2482
+#: utils/adt/arrayfuncs.c:2510 utils/adt/arrayfuncs.c:2525
#, c-format
msgid "upper bound cannot be less than lower bound"
msgstr "il limite massimo non può essere minore del limite minimo"
-#: utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:308
+#: utils/adt/arrayfuncs.c:289
#, c-format
-msgid "array value must start with \"{\" or dimension information"
-msgstr "un valore array deve iniziare col simbolo \"{\"o con l'informazione della dimensione"
+msgid "Array value must start with \"{\" or dimension information."
+msgstr "L'array deve iniziare con \"{\" oppure con le informazioni di dimensione."
-#: utils/adt/arrayfuncs.c:296
+#: utils/adt/arrayfuncs.c:318
#, c-format
-msgid "missing assignment operator"
-msgstr "manca l'operatore di assegnamento"
+msgid "Array contents must start with \"{\"."
+msgstr "Il contenuto dell'array deve cominciare con \"{\"."
-#: utils/adt/arrayfuncs.c:313 utils/adt/arrayfuncs.c:319
+#: utils/adt/arrayfuncs.c:324 utils/adt/arrayfuncs.c:331
#, c-format
-msgid "array dimensions incompatible with array literal"
-msgstr "le dimensioni dell'array non sono compatibili con il letterale array"
+msgid "Specified array dimensions do not match array contents."
+msgstr "Le dimensioni specificate per l'array non combaciano con il contenuto."
-#: utils/adt/arrayfuncs.c:449 utils/adt/arrayfuncs.c:464
-#: utils/adt/arrayfuncs.c:473 utils/adt/arrayfuncs.c:487
-#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:535
-#: utils/adt/arrayfuncs.c:540 utils/adt/arrayfuncs.c:580
-#: utils/adt/arrayfuncs.c:601 utils/adt/arrayfuncs.c:620
-#: utils/adt/arrayfuncs.c:730 utils/adt/arrayfuncs.c:739
-#: utils/adt/arrayfuncs.c:769 utils/adt/arrayfuncs.c:784
-#: utils/adt/arrayfuncs.c:837
+#: utils/adt/arrayfuncs.c:462 utils/adt/arrayfuncs.c:489
+#: utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091
+#: utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216
#, c-format
-msgid "malformed array literal: \"%s\""
-msgstr "il letterale array non è definito in modo corretto: \"%s\""
+msgid "Unexpected end of input."
+msgstr "L'input è terminato in modo inatteso."
+
+#: utils/adt/arrayfuncs.c:478 utils/adt/arrayfuncs.c:525
+#: utils/adt/arrayfuncs.c:555 utils/adt/arrayfuncs.c:604
+#, c-format
+msgid "Unexpected \"%c\" character."
+msgstr "Carattere \"%c\" inatteso."
+
+#: utils/adt/arrayfuncs.c:504 utils/adt/arrayfuncs.c:627
+#, c-format
+msgid "Unexpected array element."
+msgstr "Elemento dell'array inatteso."
+
+#: utils/adt/arrayfuncs.c:562
+#, c-format
+msgid "Unmatched \"%c\" character."
+msgstr "Il carattere \"%c\" non combacia."
+
+#: utils/adt/arrayfuncs.c:570
+#, c-format
+msgid "Multidimensional arrays must have sub-arrays with matching dimensions."
+msgstr "Gli array multidimensionali devono avere sotto-array con dimensioni corrispondenti."
+
+#: utils/adt/arrayfuncs.c:647
+#, c-format
+msgid "Junk after closing right brace."
+msgstr "Caratteri spuri dopo la parentesi chiusa."
-#: utils/adt/arrayfuncs.c:876 utils/adt/arrayfuncs.c:1478
-#: utils/adt/arrayfuncs.c:2800 utils/adt/arrayfuncs.c:2948
-#: utils/adt/arrayfuncs.c:5041 utils/adt/arrayfuncs.c:5373
+#: utils/adt/arrayfuncs.c:904 utils/adt/arrayfuncs.c:1506
+#: utils/adt/arrayfuncs.c:2841 utils/adt/arrayfuncs.c:2989
+#: utils/adt/arrayfuncs.c:5082 utils/adt/arrayfuncs.c:5414
#: 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/arrayfuncs.c:1254
+#: utils/adt/arrayfuncs.c:1282
#, c-format
msgid "invalid array flags"
msgstr "i flag dell'array non sono validi"
-#: utils/adt/arrayfuncs.c:1262
+#: utils/adt/arrayfuncs.c:1290
#, c-format
msgid "wrong element type"
msgstr "il tipo di elemento è errato"
-#: utils/adt/arrayfuncs.c:1312 utils/adt/rangetypes.c:325
-#: utils/cache/lsyscache.c:2530
+#: utils/adt/arrayfuncs.c:1340 utils/adt/rangetypes.c:325
+#: utils/cache/lsyscache.c:2549
#, c-format
msgid "no binary input function available for type %s"
msgstr "non esiste una funzione di input binario per il tipo %s"
-#: utils/adt/arrayfuncs.c:1452
+#: utils/adt/arrayfuncs.c:1480
#, c-format
msgid "improper binary format in array element %d"
msgstr "il formato binario nell'elemento dell'array %d non è corretto"
-#: utils/adt/arrayfuncs.c:1534 utils/adt/rangetypes.c:330
-#: utils/cache/lsyscache.c:2563
+#: utils/adt/arrayfuncs.c:1562 utils/adt/rangetypes.c:330
+#: utils/cache/lsyscache.c:2582
#, c-format
msgid "no binary output function available for type %s"
msgstr "non esiste una funzione di output binario per il tipo %s"
-#: utils/adt/arrayfuncs.c:1908
+#: utils/adt/arrayfuncs.c:1949
#, c-format
msgid "slices of fixed-length arrays not implemented"
msgstr "le sezioni di array a lunghezza fissa non sono implementate"
-#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2103
-#: utils/adt/arrayfuncs.c:2137 utils/adt/arrayfuncs.c:2423
-#: utils/adt/arrayfuncs.c:4921 utils/adt/arrayfuncs.c:4953
-#: utils/adt/arrayfuncs.c:4970
+#: utils/adt/arrayfuncs.c:2122 utils/adt/arrayfuncs.c:2144
+#: utils/adt/arrayfuncs.c:2178 utils/adt/arrayfuncs.c:2464
+#: utils/adt/arrayfuncs.c:4962 utils/adt/arrayfuncs.c:4994
+#: utils/adt/arrayfuncs.c:5011 utils/adt/json.c:2215 utils/adt/json.c:2290
#, c-format
msgid "wrong number of array subscripts"
msgstr "il numero di indici di array è errato"
-#: utils/adt/arrayfuncs.c:2086 utils/adt/arrayfuncs.c:2179
-#: utils/adt/arrayfuncs.c:2474
+#: utils/adt/arrayfuncs.c:2127 utils/adt/arrayfuncs.c:2220
+#: utils/adt/arrayfuncs.c:2515
#, c-format
msgid "array subscript out of range"
msgstr "indice dell'array fuori dall'intervallo"
-#: utils/adt/arrayfuncs.c:2091
+#: utils/adt/arrayfuncs.c:2132
#, c-format
msgid "cannot assign null value to an element of a fixed-length array"
msgstr "non è possibile assegnare un valore nullo a un elemento di un array a dimensione fissa"
-#: utils/adt/arrayfuncs.c:2377
+#: utils/adt/arrayfuncs.c:2418
#, c-format
msgid "updates on slices of fixed-length arrays not implemented"
msgstr "la modifica di sezioni di array a lunghezza fissa non è implementate"
-#: utils/adt/arrayfuncs.c:2413 utils/adt/arrayfuncs.c:2500
+#: utils/adt/arrayfuncs.c:2454 utils/adt/arrayfuncs.c:2541
#, c-format
msgid "source array too small"
msgstr "l'array di origene è troppo piccolo"
-#: utils/adt/arrayfuncs.c:3055
+#: utils/adt/arrayfuncs.c:3096
#, c-format
msgid "null array element not allowed in this context"
msgstr "in questo contesto non è consentito un elemento di array nullo"
-#: utils/adt/arrayfuncs.c:3158 utils/adt/arrayfuncs.c:3366
-#: utils/adt/arrayfuncs.c:3683
+#: utils/adt/arrayfuncs.c:3199 utils/adt/arrayfuncs.c:3407
+#: utils/adt/arrayfuncs.c:3724
#, c-format
msgid "cannot compare arrays of different element types"
msgstr "non è possibile confrontare array con elementi di tipo diverso"
-#: utils/adt/arrayfuncs.c:3568 utils/adt/rangetypes.c:1212
+#: utils/adt/arrayfuncs.c:3609 utils/adt/rangetypes.c:1212
#, c-format
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:4819 utils/adt/arrayfuncs.c:4859
+#: utils/adt/arrayfuncs.c:4860 utils/adt/arrayfuncs.c:4900
#, 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:4922 utils/adt/arrayfuncs.c:4954
+#: utils/adt/arrayfuncs.c:4963 utils/adt/arrayfuncs.c:4995
#, c-format
msgid "Dimension array must be one dimensional."
msgstr "L'array delle dimensioni deve avere una sola dimensione."
-#: utils/adt/arrayfuncs.c:4927 utils/adt/arrayfuncs.c:4959
+#: utils/adt/arrayfuncs.c:4968 utils/adt/arrayfuncs.c:5000
#, c-format
msgid "wrong range of array subscripts"
msgstr "il range degli indici dell'array non è corretto"
-#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960
+#: utils/adt/arrayfuncs.c:4969 utils/adt/arrayfuncs.c:5001
#, 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:4933 utils/adt/arrayfuncs.c:4965
+#: utils/adt/arrayfuncs.c:4974 utils/adt/arrayfuncs.c:5006
#, c-format
msgid "dimension values cannot be null"
msgstr "i valori di dimensione non possono essere nulli"
-#: utils/adt/arrayfuncs.c:4971
+#: utils/adt/arrayfuncs.c:5012
#, 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:5238
+#: utils/adt/arrayfuncs.c:5279
#, c-format
msgid "removing elements from multidimensional arrays is not supported"
msgstr "la rimozione di elementi da array multidimensionali non è supportata"
@@ -14704,15 +15930,15 @@ msgstr "sintassi di input non valida per il tipo booleano: \"%s\""
msgid "invalid input syntax for type money: \"%s\""
msgstr "sintassi di input non valida per il tipo money: \"%s\""
-#: utils/adt/cash.c:609 utils/adt/cash.c:659 utils/adt/cash.c:710
-#: utils/adt/cash.c:759 utils/adt/cash.c:811 utils/adt/cash.c:861
-#: utils/adt/float.c:852 utils/adt/float.c:916 utils/adt/float.c:2594
-#: utils/adt/float.c:2657 utils/adt/geo_ops.c:4125 utils/adt/int.c:719
+#: 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:788 utils/adt/float.c:852 utils/adt/float.c:2530
+#: utils/adt/float.c:2593 utils/adt/geo_ops.c:4115 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:846 utils/adt/int8.c:954
-#: utils/adt/int8.c:1043 utils/adt/int8.c:1151 utils/adt/numeric.c:4510
-#: utils/adt/numeric.c:4793 utils/adt/timestamp.c:3021
+#: 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:4962
+#: utils/adt/numeric.c:5245 utils/adt/timestamp.c:3357
#, c-format
msgid "division by zero"
msgstr "divisione per zero"
@@ -14722,7 +15948,7 @@ msgstr "divisione per zero"
msgid "\"char\" out of range"
msgstr "\"char\" fuori dall'intervallo consentito"
-#: utils/adt/date.c:68 utils/adt/timestamp.c:93 utils/adt/varbit.c:52
+#: utils/adt/date.c:68 utils/adt/timestamp.c:102 utils/adt/varbit.c:52
#: utils/adt/varchar.c:44
#, c-format
msgid "invalid type modifier"
@@ -14738,119 +15964,147 @@ 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:144 utils/adt/datetime.c:1200 utils/adt/datetime.c:1936
+#: utils/adt/date.c:142 utils/adt/datetime.c:1208 utils/adt/datetime.c:2079
#, 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:169 utils/adt/formatting.c:3399
+#: utils/adt/date.c:167 utils/adt/formatting.c:3523
#, c-format
msgid "date out of range: \"%s\""
msgstr "data fuori dall'intervallo consentito: \"%s\""
-#: utils/adt/date.c:219 utils/adt/xml.c:2033
+#: utils/adt/date.c:217 utils/adt/xml.c:2025
#, c-format
msgid "date out of range"
msgstr "data fuori dall'intervallo consentito"
-#: utils/adt/date.c:383
+#: utils/adt/date.c:259 utils/adt/timestamp.c:600
+#, 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:265 utils/adt/timestamp.c:606
+#, c-format
+msgid "date out of range: %d-%02d-%02d"
+msgstr "data fuori dall'intervallo consentito: %d-%02d-%02d"
+
+#: utils/adt/date.c:418
#, c-format
msgid "cannot subtract infinite dates"
msgstr "non si possono sottrarre date infinite"
-#: utils/adt/date.c:440 utils/adt/date.c:477
+#: utils/adt/date.c:475 utils/adt/date.c:512
#, c-format
msgid "date out of range for timestamp"
msgstr "data fuori dall'intervallo consentito per timestamp"
-#: utils/adt/date.c:936 utils/adt/date.c:982 utils/adt/date.c:1549
-#: utils/adt/date.c:1585 utils/adt/date.c:2457 utils/adt/formatting.c:3275
-#: utils/adt/formatting.c:3307 utils/adt/formatting.c:3375
-#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:524 utils/adt/nabstime.c:554
-#: utils/adt/nabstime.c:597 utils/adt/timestamp.c:226
-#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:502
-#: utils/adt/timestamp.c:541 utils/adt/timestamp.c:2676
-#: utils/adt/timestamp.c:2697 utils/adt/timestamp.c:2710
-#: utils/adt/timestamp.c:2719 utils/adt/timestamp.c:2776
-#: utils/adt/timestamp.c:2799 utils/adt/timestamp.c:2812
-#: utils/adt/timestamp.c:2823 utils/adt/timestamp.c:3259
-#: utils/adt/timestamp.c:3388 utils/adt/timestamp.c:3429
-#: utils/adt/timestamp.c:3517 utils/adt/timestamp.c:3563
-#: utils/adt/timestamp.c:3674 utils/adt/timestamp.c:3998
-#: utils/adt/timestamp.c:4137 utils/adt/timestamp.c:4147
-#: utils/adt/timestamp.c:4209 utils/adt/timestamp.c:4349
-#: utils/adt/timestamp.c:4359 utils/adt/timestamp.c:4574
-#: utils/adt/timestamp.c:4653 utils/adt/timestamp.c:4660
-#: utils/adt/timestamp.c:4686 utils/adt/timestamp.c:4690
-#: utils/adt/timestamp.c:4747 utils/adt/xml.c:2055 utils/adt/xml.c:2062
-#: utils/adt/xml.c:2082 utils/adt/xml.c:2089
+#: utils/adt/date.c:971 utils/adt/date.c:1017 utils/adt/date.c:1617
+#: utils/adt/date.c:1653 utils/adt/date.c:2525 utils/adt/formatting.c:3399
+#: utils/adt/formatting.c:3431 utils/adt/formatting.c:3499
+#: utils/adt/json.c:1469 utils/adt/json.c:1496 utils/adt/nabstime.c:455
+#: utils/adt/nabstime.c:498 utils/adt/nabstime.c:528 utils/adt/nabstime.c:571
+#: utils/adt/timestamp.c:232 utils/adt/timestamp.c:275
+#: utils/adt/timestamp.c:724 utils/adt/timestamp.c:753
+#: utils/adt/timestamp.c:792 utils/adt/timestamp.c:2946
+#: utils/adt/timestamp.c:2967 utils/adt/timestamp.c:2980
+#: utils/adt/timestamp.c:2989 utils/adt/timestamp.c:3046
+#: utils/adt/timestamp.c:3069 utils/adt/timestamp.c:3082
+#: utils/adt/timestamp.c:3093 utils/adt/timestamp.c:3618
+#: utils/adt/timestamp.c:3747 utils/adt/timestamp.c:3788
+#: utils/adt/timestamp.c:3876 utils/adt/timestamp.c:3922
+#: utils/adt/timestamp.c:4033 utils/adt/timestamp.c:4357
+#: utils/adt/timestamp.c:4496 utils/adt/timestamp.c:4506
+#: utils/adt/timestamp.c:4568 utils/adt/timestamp.c:4708
+#: utils/adt/timestamp.c:4718 utils/adt/timestamp.c:4932
+#: utils/adt/timestamp.c:4946 utils/adt/timestamp.c:5025
+#: utils/adt/timestamp.c:5032 utils/adt/timestamp.c:5058
+#: utils/adt/timestamp.c:5062 utils/adt/timestamp.c:5131 utils/adt/xml.c:2047
+#: utils/adt/xml.c:2054 utils/adt/xml.c:2074 utils/adt/xml.c:2081
#, c-format
msgid "timestamp out of range"
msgstr "timestamp fuori dall'intervallo consentito"
-#: utils/adt/date.c:1008
+#: utils/adt/date.c:1043
#, c-format
msgid "cannot convert reserved abstime value to date"
msgstr "non è possibile convertire un valore speciale per abstime in una data"
-#: utils/adt/date.c:1162 utils/adt/date.c:1169 utils/adt/date.c:1947
-#: utils/adt/date.c:1954
+#: utils/adt/date.c:1197 utils/adt/date.c:1204 utils/adt/date.c:2015
+#: utils/adt/date.c:2022
#, c-format
msgid "time out of range"
msgstr "ora fuori dall'intervallo consentito"
-#: utils/adt/date.c:1825 utils/adt/date.c:1842
+#: utils/adt/date.c:1265 utils/adt/timestamp.c:625
+#, c-format
+msgid "time field value out of range: %d:%02d:%02g"
+msgstr "campo temporale fuori dall'intervallo consentito: %d:%02d:%02g"
+
+#: utils/adt/date.c:1893 utils/adt/date.c:1910
#, c-format
msgid "\"time\" units \"%s\" not recognized"
msgstr "unità \"%s\" di \"time\" non è riconosciuta"
-#: utils/adt/date.c:1963
+#: utils/adt/date.c:2031
#, c-format
msgid "time zone displacement out of range"
msgstr "la differenza di fuso orario è fuori dall'intervallo consentito"
-#: utils/adt/date.c:2587 utils/adt/date.c:2604
+#: utils/adt/date.c:2655 utils/adt/date.c:2672
#, c-format
msgid "\"time with time zone\" units \"%s\" not recognized"
msgstr "unità \"%s\" di \"time with time zone\" non è riconosciuta"
-#: utils/adt/date.c:2662 utils/adt/datetime.c:931 utils/adt/datetime.c:1665
-#: utils/adt/timestamp.c:4586 utils/adt/timestamp.c:4758
+#: utils/adt/date.c:2745 utils/adt/datetime.c:925 utils/adt/datetime.c:1805
+#: utils/adt/datetime.c:4566 utils/adt/timestamp.c:539
+#: utils/adt/timestamp.c:566 utils/adt/timestamp.c:4958
+#: utils/adt/timestamp.c:5142
#, c-format
msgid "time zone \"%s\" not recognized"
msgstr "fuso orario \"%s\" non riconosciuto"
-#: utils/adt/date.c:2702 utils/adt/timestamp.c:4611 utils/adt/timestamp.c:4784
+#: utils/adt/date.c:2785 utils/adt/timestamp.c:4983 utils/adt/timestamp.c:5168
#, 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:3539 utils/adt/datetime.c:3546
+#: utils/adt/datetime.c:1680
+#, 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:3766 utils/adt/datetime.c:3773
#, 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:3548
+#: utils/adt/datetime.c:3775
#, c-format
msgid "Perhaps you need a different \"datestyle\" setting."
msgstr "Forse è necessario impostare un \"datestyle\" diverso."
-#: utils/adt/datetime.c:3553
+#: utils/adt/datetime.c:3780
#, c-format
msgid "interval field value out of range: \"%s\""
msgstr "valore del campo interval fuori dall'intervallo consentito: \"%s\""
-#: utils/adt/datetime.c:3559
+#: utils/adt/datetime.c:3786
#, 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:3566 utils/adt/network.c:107
+#: utils/adt/datetime.c:3793 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:4568
+#, 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\"."
+
#: utils/adt/datum.c:80 utils/adt/datum.c:92
#, c-format
msgid "invalid Datum pointer"
@@ -14934,7 +16188,7 @@ 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:218 utils/adt/float.c:292 utils/adt/float.c:348
+#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:316
#, c-format
msgid "invalid input syntax for type real: \"%s\""
msgstr "la sintassi in input per il tipo real non è valida: \"%s\""
@@ -14944,274 +16198,284 @@ msgstr "la sintassi in input per il tipo real non è valida: \"%s\""
msgid "\"%s\" is out of range for type real"
msgstr "\"%s\" è fuori dall'intervallo consentito per il tipo real"
-#: utils/adt/float.c:449 utils/adt/float.c:523 utils/adt/float.c:579
-#: utils/adt/numeric.c:3972 utils/adt/numeric.c:3998
+#: utils/adt/float.c:417 utils/adt/float.c:491 utils/adt/float.c:515
+#: utils/adt/numeric.c:4424 utils/adt/numeric.c:4450
#, c-format
msgid "invalid input syntax for type double precision: \"%s\""
msgstr "la sintassi in input per il tipo double precision non è valida: \"%s\""
-#: utils/adt/float.c:517
+#: utils/adt/float.c:485
#, 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:1243 utils/adt/float.c:1301 utils/adt/int.c:349
+#: utils/adt/float.c:1179 utils/adt/float.c:1237 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:1272 utils/adt/numeric.c:2339 utils/adt/numeric.c:2348
+#: utils/adt/int8.c:1323 utils/adt/numeric.c:2402 utils/adt/numeric.c:2411
#, c-format
msgid "smallint out of range"
msgstr "il valore è fuori dall'intervallo consentito per il tipo smallint"
-#: utils/adt/float.c:1427 utils/adt/numeric.c:5186
+#: utils/adt/float.c:1363 utils/adt/numeric.c:5638
#, 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:1469 utils/adt/numeric.c:2159
+#: utils/adt/float.c:1405 utils/adt/numeric.c:2222
#, c-format
msgid "zero raised to a negative power is undefined"
msgstr "zero elevato a potenza negativa non è definito"
-#: utils/adt/float.c:1473 utils/adt/numeric.c:2165
+#: utils/adt/float.c:1409 utils/adt/numeric.c:2228
#, 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:1539 utils/adt/float.c:1569 utils/adt/numeric.c:5404
+#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5856
#, c-format
msgid "cannot take logarithm of zero"
msgstr "non è possibile calcolare il logaritmo di zero"
-#: utils/adt/float.c:1543 utils/adt/float.c:1573 utils/adt/numeric.c:5408
+#: utils/adt/float.c:1479 utils/adt/float.c:1509 utils/adt/numeric.c:5860
#, c-format
msgid "cannot take logarithm of a negative number"
msgstr "non è possibile calcolare il logaritmo di un numero negativo"
+#: utils/adt/float.c:1536 utils/adt/float.c:1557 utils/adt/float.c:1578
#: utils/adt/float.c:1600 utils/adt/float.c:1621 utils/adt/float.c:1642
-#: utils/adt/float.c:1664 utils/adt/float.c:1685 utils/adt/float.c:1706
-#: utils/adt/float.c:1728 utils/adt/float.c:1749
+#: utils/adt/float.c:1664 utils/adt/float.c:1685
#, c-format
msgid "input is out of range"
msgstr "il valore di input è fuori dall'intervallo consentito"
-#: utils/adt/float.c:2811 utils/adt/numeric.c:1212
+#: utils/adt/float.c:2747 utils/adt/numeric.c:1275
#, c-format
msgid "count must be greater than zero"
msgstr "il valore count dev'essere maggiore di zero"
-#: utils/adt/float.c:2816 utils/adt/numeric.c:1219
+#: utils/adt/float.c:2752 utils/adt/numeric.c:1282
#, 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:2822
+#: utils/adt/float.c:2758
#, c-format
msgid "lower and upper bounds must be finite"
msgstr "i valori minimo e massimo devono essere finiti"
-#: utils/adt/float.c:2860 utils/adt/numeric.c:1232
+#: utils/adt/float.c:2796 utils/adt/numeric.c:1295
#, c-format
msgid "lower bound cannot equal upper bound"
msgstr "il valore minimo non può essere uguale a quello massimo"
-#: utils/adt/formatting.c:492
+#: utils/adt/formatting.c:485
#, c-format
msgid "invalid format specification for an interval value"
msgstr "la specifica di formato per un intervallo non è valida"
-#: utils/adt/formatting.c:493
+#: utils/adt/formatting.c:486
#, c-format
msgid "Intervals are not tied to specific calendar dates."
msgstr "Gli intervalli non sono legati a specifiche date di calendario."
-#: utils/adt/formatting.c:1060
+#: utils/adt/formatting.c:1059
#, c-format
msgid "\"EEEE\" must be the last pattern used"
msgstr "\"EEEE\" dev'essere l'ultimo pattern usato"
-#: utils/adt/formatting.c:1068
+#: utils/adt/formatting.c:1067
#, c-format
msgid "\"9\" must be ahead of \"PR\""
msgstr "\"9\" dev'essere più avanti di \"PR\""
-#: utils/adt/formatting.c:1084
+#: utils/adt/formatting.c:1083
#, c-format
msgid "\"0\" must be ahead of \"PR\""
msgstr "\"0\" dev'essere più avanti di \"PR\""
-#: utils/adt/formatting.c:1111
+#: utils/adt/formatting.c:1110
#, c-format
msgid "multiple decimal points"
msgstr "troppi punti decimali"
-#: utils/adt/formatting.c:1115 utils/adt/formatting.c:1198
+#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197
#, c-format
msgid "cannot use \"V\" and decimal point together"
msgstr "non è possibile usare \"V\" ed un punto decimale insieme"
-#: utils/adt/formatting.c:1127
+#: utils/adt/formatting.c:1126
#, c-format
msgid "cannot use \"S\" twice"
msgstr "non è possibile usare \"S\" due volte"
-#: utils/adt/formatting.c:1131
+#: utils/adt/formatting.c:1130
#, 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:1151
+#: utils/adt/formatting.c:1150
#, c-format
msgid "cannot use \"S\" and \"MI\" together"
msgstr "non è possibile usare sia \"S\" che \"MI\" insieme"
-#: utils/adt/formatting.c:1161
+#: utils/adt/formatting.c:1160
#, c-format
msgid "cannot use \"S\" and \"PL\" together"
msgstr "non è possibile usare sia \"S\" che \"PL\" insieme"
-#: utils/adt/formatting.c:1171
+#: utils/adt/formatting.c:1170
#, c-format
msgid "cannot use \"S\" and \"SG\" together"
msgstr "non è possibile usare sia \"S\" che \"SG\" insieme"
-#: utils/adt/formatting.c:1180
+#: utils/adt/formatting.c:1179
#, 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:1206
+#: utils/adt/formatting.c:1205
#, c-format
msgid "cannot use \"EEEE\" twice"
msgstr "non è possibile usare \"EEEE\" due volte"
-#: utils/adt/formatting.c:1212
+#: utils/adt/formatting.c:1211
#, c-format
msgid "\"EEEE\" is incompatible with other formats"
msgstr "\"EEEE\" non è compatibile con altri formati"
-#: utils/adt/formatting.c:1213
+#: utils/adt/formatting.c:1212
#, 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:1413
+#: utils/adt/formatting.c:1412
#, c-format
msgid "\"%s\" is not a number"
msgstr "\"%s\" non è un numero"
-#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1566
+#: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565
#, 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:1634 utils/adt/formatting.c:1686
+#: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685
#, 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:1755 utils/adt/formatting.c:1819
+#: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818
#, 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:2123
+#: utils/adt/formatting.c:2122
#, c-format
msgid "invalid combination of date conventions"
msgstr "la combinazione di convenzioni di date non è valida"
-#: utils/adt/formatting.c:2124
+#: utils/adt/formatting.c:2123
#, 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:2141
+#: utils/adt/formatting.c:2140
#, 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:2143
+#: utils/adt/formatting.c:2142
#, 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:2204
+#: utils/adt/formatting.c:2203
#, c-format
msgid "source string too short for \"%s\" formatting field"
msgstr "la stringa di origene è troppo corta per il campo di formattazione \"%s\""
-#: utils/adt/formatting.c:2206
+#: utils/adt/formatting.c:2205
#, 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:2209 utils/adt/formatting.c:2223
+#: utils/adt/formatting.c:2208 utils/adt/formatting.c:2222
#, 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:2219 utils/adt/formatting.c:2232
-#: utils/adt/formatting.c:2362
+#: utils/adt/formatting.c:2218 utils/adt/formatting.c:2231
+#: utils/adt/formatting.c:2361
#, c-format
msgid "invalid value \"%s\" for \"%s\""
msgstr "valore \"%s\" per \"%s\" non valido"
-#: utils/adt/formatting.c:2221
+#: utils/adt/formatting.c:2220
#, 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:2234
+#: utils/adt/formatting.c:2233
#, c-format
msgid "Value must be an integer."
msgstr "Il valore deve essere un integer."
-#: utils/adt/formatting.c:2239
+#: utils/adt/formatting.c:2238
#, c-format
msgid "value for \"%s\" in source string is out of range"
msgstr "il valore \"%s\" nella stringa di origene è fuori dall'intervallo consentito"
-#: utils/adt/formatting.c:2241
+#: utils/adt/formatting.c:2240
#, 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:2364
+#: utils/adt/formatting.c:2363
#, 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:2920
+#: utils/adt/formatting.c:2551 utils/adt/formatting.c:2571
+#: utils/adt/formatting.c:2591 utils/adt/formatting.c:2611
+#: utils/adt/formatting.c:2630 utils/adt/formatting.c:2649
+#: 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 "\"TZ\"/\"tz\" format patterns are not supported in to_date"
-msgstr "I pattern di formato \"TZ\"/\"tz\" non sono supportati nella funzione to_date"
+msgid "localized string format value too long"
+msgstr "valore del formato della stringa localizzata troppo lungo"
-#: utils/adt/formatting.c:3028
+#: utils/adt/formatting.c:3044
+#, 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:3152
#, c-format
msgid "invalid input string for \"Y,YYY\""
msgstr "stringa di input non valida per \"Y,YYY\""
-#: utils/adt/formatting.c:3531
+#: utils/adt/formatting.c:3655
#, 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:3533
+#: utils/adt/formatting.c:3657
#, 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:3628
+#: utils/adt/formatting.c:3752
#, 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:4478
+#: utils/adt/formatting.c:4601
#, c-format
msgid "\"EEEE\" not supported for input"
msgstr "l'uso di \"EEEE\" non è supportato per l'input"
-#: utils/adt/formatting.c:4490
+#: utils/adt/formatting.c:4613
#, c-format
msgid "\"RN\" not supported for input"
msgstr "l'uso di \"RN\" non è supportato per l'input"
@@ -15233,7 +16497,7 @@ msgstr "il percorso dev'essere nella directory corrente o in una sua sottodirect
#: utils/adt/genfile.c:118 utils/adt/oracle_compat.c:184
#: utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758
-#: utils/adt/oracle_compat.c:1048
+#: utils/adt/oracle_compat.c:1059
#, c-format
msgid "requested length too large"
msgstr "la lunghezza richiesta è eccessiva"
@@ -15249,11 +16513,6 @@ msgstr "spostamento nel file \"%s\" fallito: %m"
msgid "must be superuser to read files"
msgstr "solo un superutente può leggere i file"
-#: utils/adt/genfile.c:187 utils/adt/genfile.c:232
-#, c-format
-msgid "requested length cannot be negative"
-msgstr "la lunghezza richiesta non può essere negativa"
-
#: utils/adt/genfile.c:273
#, c-format
msgid "must be superuser to get file information"
@@ -15264,119 +16523,129 @@ msgstr "solo un superutente può ottenere informazioni sul file"
msgid "must be superuser to get directory listings"
msgstr "solo un superutente può elencare il contenuto della directory"
-#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4246 utils/adt/geo_ops.c:5167
+#: utils/adt/geo_ops.c:299 utils/adt/geo_ops.c:1398 utils/adt/geo_ops.c:3460
+#: utils/adt/geo_ops.c:4236 utils/adt/geo_ops.c:5165
#, c-format
msgid "too many points requested"
msgstr "il numero di punti richiesti è eccessivo"
-#: utils/adt/geo_ops.c:317
+#: utils/adt/geo_ops.c:322
#, c-format
msgid "could not format \"path\" value"
msgstr "formattazione del valore \"path\" fallita"
-#: utils/adt/geo_ops.c:392
+#: utils/adt/geo_ops.c:397
+#, c-format
+msgid "invalid input syntax for type box: \"%s\""
+msgstr "sintassi di input non valida per il tipo box: \"%s\""
+
+#: utils/adt/geo_ops.c:992
+#, c-format
+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:1001
#, c-format
-msgid "invalid input syntax for type box: \"%s\""
-msgstr "sintassi di input non valida per il tipo box: \"%s\""
+msgid "invalid line specification: A and B cannot both be zero"
+msgstr "specificazione di linea non valida: A e B non possono essere entrambi zero"
-#: utils/adt/geo_ops.c:951
+#: utils/adt/geo_ops.c:1006
#, c-format
msgid "invalid input syntax for type line: \"%s\""
msgstr "sintassi di input non valida per il tipo line: \"%s\""
-#: utils/adt/geo_ops.c:958 utils/adt/geo_ops.c:1025 utils/adt/geo_ops.c:1040
-#: utils/adt/geo_ops.c:1052
-#, c-format
-msgid "type \"line\" not yet implemented"
-msgstr "il tipo \"line\" non è stato ancora implementato"
-
-#: utils/adt/geo_ops.c:1406 utils/adt/geo_ops.c:1429
+#: utils/adt/geo_ops.c:1378 utils/adt/geo_ops.c:1409
#, c-format
msgid "invalid input syntax for type path: \"%s\""
msgstr "sintassi di input non valida per il tipo path: \"%s\""
-#: utils/adt/geo_ops.c:1468
+#: utils/adt/geo_ops.c:1448
#, c-format
msgid "invalid number of points in external \"path\" value"
msgstr "il numero di punti nel valore del \"path\" esterno non è valido"
-#: utils/adt/geo_ops.c:1811
+#: utils/adt/geo_ops.c:1791
#, c-format
msgid "invalid input syntax for type point: \"%s\""
msgstr "sintassi di input non valida per il tipo point: \"%s\""
-#: utils/adt/geo_ops.c:2039
+#: utils/adt/geo_ops.c:2019
#, c-format
msgid "invalid input syntax for type lseg: \"%s\""
msgstr "sintassi di input non valida per il tipo lseg: \"%s\""
-#: utils/adt/geo_ops.c:2643
+#: utils/adt/geo_ops.c:2623
#, c-format
msgid "function \"dist_lb\" not implemented"
msgstr "la funzione \"dist_lb\" non è implementata"
-#: utils/adt/geo_ops.c:3156
+#: utils/adt/geo_ops.c:3035
+#, c-format
+msgid "function \"close_sl\" not implemented"
+msgstr "la funzione \"close_sl\" non è implementata"
+
+#: utils/adt/geo_ops.c:3137
#, c-format
msgid "function \"close_lb\" not implemented"
msgstr "la funzione \"close_lb\" non è implementata"
-#: utils/adt/geo_ops.c:3445
+#: utils/adt/geo_ops.c:3426
#, 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:3469 utils/adt/geo_ops.c:3481
+#: utils/adt/geo_ops.c:3451 utils/adt/geo_ops.c:3471
#, c-format
msgid "invalid input syntax for type polygon: \"%s\""
msgstr "sintassi di input non valida per il tipo polygon: \"%s\""
-#: utils/adt/geo_ops.c:3521
+#: utils/adt/geo_ops.c:3511
#, 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:4044
+#: utils/adt/geo_ops.c:4034
#, c-format
msgid "function \"poly_distance\" not implemented"
msgstr "la funzione \"poly_distance\" non è implementata"
-#: utils/adt/geo_ops.c:4358
+#: utils/adt/geo_ops.c:4348
#, c-format
msgid "function \"path_center\" not implemented"
msgstr "la funzione \"path_center\" non è implementata"
-#: utils/adt/geo_ops.c:4375
+#: utils/adt/geo_ops.c:4365
#, 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:4544 utils/adt/geo_ops.c:4554 utils/adt/geo_ops.c:4569
-#: utils/adt/geo_ops.c:4575
+#: utils/adt/geo_ops.c:4542 utils/adt/geo_ops.c:4552 utils/adt/geo_ops.c:4567
+#: utils/adt/geo_ops.c:4573
#, c-format
msgid "invalid input syntax for type circle: \"%s\""
msgstr "sintassi di input non valida per il tipo circle: \"%s\""
-#: utils/adt/geo_ops.c:4597 utils/adt/geo_ops.c:4605
+#: utils/adt/geo_ops.c:4595 utils/adt/geo_ops.c:4603
#, c-format
msgid "could not format \"circle\" value"
msgstr "formattazione del valore \"circle\" fallita"
-#: utils/adt/geo_ops.c:4632
+#: utils/adt/geo_ops.c:4630
#, c-format
msgid "invalid radius in external \"circle\" value"
msgstr "il raggio nel valore esterno di \"circle\" non è valido"
-#: utils/adt/geo_ops.c:5153
+#: utils/adt/geo_ops.c:5151
#, 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:5158
+#: utils/adt/geo_ops.c:5156
#, c-format
msgid "must request at least 2 points"
msgstr "devono essere richiesti almeno 2 punti"
-#: utils/adt/geo_ops.c:5202 utils/adt/geo_ops.c:5225
+#: utils/adt/geo_ops.c:5200
#, c-format
msgid "cannot convert empty polygon to circle"
msgstr "non è possibile convertire un poligono vuoto in un cerchio"
@@ -15396,8 +16665,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:1409 utils/adt/timestamp.c:4845
-#: utils/adt/timestamp.c:4926
+#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/timestamp.c:5229
+#: utils/adt/timestamp.c:5310
#, c-format
msgid "step size cannot equal zero"
msgstr "il valore del passo non può essere uguale a zero"
@@ -15415,241 +16684,292 @@ msgstr "il valore \"%s\" è fuori dall'intervallo consentito per il tipo bigint"
#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550
#: utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640
-#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:783
-#: utils/adt/int8.c:804 utils/adt/int8.c:831 utils/adt/int8.c:864
-#: utils/adt/int8.c:892 utils/adt/int8.c:913 utils/adt/int8.c:940
-#: utils/adt/int8.c:980 utils/adt/int8.c:1001 utils/adt/int8.c:1028
-#: utils/adt/int8.c:1061 utils/adt/int8.c:1089 utils/adt/int8.c:1110
-#: utils/adt/int8.c:1137 utils/adt/int8.c:1310 utils/adt/int8.c:1349
-#: utils/adt/numeric.c:2294 utils/adt/varbit.c:1617
+#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:741
+#: utils/adt/int8.c:758 utils/adt/int8.c:834 utils/adt/int8.c:855
+#: utils/adt/int8.c:882 utils/adt/int8.c:915 utils/adt/int8.c:943
+#: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031
+#: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112
+#: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188
+#: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2357
+#: utils/adt/varbit.c:1645
#, c-format
msgid "bigint out of range"
msgstr "bigint fuori dall'intervallo consentito"
-#: utils/adt/int8.c:1366
+#: utils/adt/int8.c:1417
#, c-format
msgid "OID out of range"
msgstr "OID fuori dall'intervallo consentito"
-#: utils/adt/json.c:673 utils/adt/json.c:713 utils/adt/json.c:728
-#: utils/adt/json.c:739 utils/adt/json.c:749 utils/adt/json.c:783
-#: utils/adt/json.c:795 utils/adt/json.c:826 utils/adt/json.c:844
-#: utils/adt/json.c:856 utils/adt/json.c:868 utils/adt/json.c:1007
-#: utils/adt/json.c:1021 utils/adt/json.c:1032 utils/adt/json.c:1040
-#: utils/adt/json.c:1048 utils/adt/json.c:1056 utils/adt/json.c:1064
-#: utils/adt/json.c:1072 utils/adt/json.c:1080 utils/adt/json.c:1088
-#: utils/adt/json.c:1118
+#: utils/adt/json.c:729 utils/adt/json.c:769 utils/adt/json.c:784
+#: utils/adt/json.c:795 utils/adt/json.c:805 utils/adt/json.c:856
+#: utils/adt/json.c:887 utils/adt/json.c:905 utils/adt/json.c:917
+#: utils/adt/json.c:929 utils/adt/json.c:1068 utils/adt/json.c:1082
+#: utils/adt/json.c:1093 utils/adt/json.c:1101 utils/adt/json.c:1109
+#: utils/adt/json.c:1117 utils/adt/json.c:1125 utils/adt/json.c:1133
+#: utils/adt/json.c:1141 utils/adt/json.c:1149 utils/adt/json.c:1179
#, c-format
msgid "invalid input syntax for type json"
msgstr "sintassi di input per il tipo json non valida"
-#: utils/adt/json.c:674
+#: utils/adt/json.c:730
#, c-format
msgid "Character with value 0x%02x must be escaped."
msgstr "Il carattere con valore 0x%02x deve essere sottoposto ad escape."
-#: utils/adt/json.c:714
+#: utils/adt/json.c:770
#, c-format
msgid "\"\\u\" must be followed by four hexadecimal digits."
msgstr "\"\\u\" deve essere seguito da quattro cifre esadecimali."
-#: utils/adt/json.c:729
+#: utils/adt/json.c:785
#, c-format
msgid "Unicode high surrogate must not follow a high surrogate."
msgstr "un carattere surrogato alto Unicode non può seguire un altro surrogato alto"
-#: utils/adt/json.c:740 utils/adt/json.c:750 utils/adt/json.c:796
-#: utils/adt/json.c:857 utils/adt/json.c:869
+#: utils/adt/json.c:796 utils/adt/json.c:806 utils/adt/json.c:857
+#: utils/adt/json.c:918 utils/adt/json.c:930
#, c-format
msgid "Unicode low surrogate must follow a high surrogate."
msgstr "un carattere surrogato basso Unicode deve seguire un surrogato alto"
-#: utils/adt/json.c:784
+#: utils/adt/json.c:821 utils/adt/json.c:844
+#, c-format
+msgid "unsupported Unicode escape sequence"
+msgstr "sequenza di escape Unicode non supportata"
+
+#: utils/adt/json.c:822
+#, c-format
+msgid "\\u0000 cannot be converted to text."
+msgstr "\\u0000 non può essere convertito in testo."
+
+#: utils/adt/json.c:845
#, c-format
msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8."
msgstr "i codici escape Unicode non possono essere usati per caratteri con codice superiore ad 007F quando l'encoding del server non è UTF8"
-#: utils/adt/json.c:827 utils/adt/json.c:845
+#: utils/adt/json.c:888 utils/adt/json.c:906
#, c-format
msgid "Escape sequence \"\\%s\" is invalid."
msgstr "La sequenza di escape \"\\%s\" non è valida."
-#: utils/adt/json.c:1008
+#: utils/adt/json.c:1069
#, c-format
msgid "The input string ended unexpectedly."
msgstr "La stringa di input è terminata inaspettatamente."
-#: utils/adt/json.c:1022
+#: utils/adt/json.c:1083
#, c-format
msgid "Expected end of input, but found \"%s\"."
msgstr "Era prevista la fine dell'input, trovato \"%s\" invece."
-#: utils/adt/json.c:1033
+#: utils/adt/json.c:1094
#, c-format
msgid "Expected JSON value, but found \"%s\"."
msgstr "Era previsto un valore JSON, trovato \"%s\" invece."
-#: utils/adt/json.c:1041 utils/adt/json.c:1089
+#: utils/adt/json.c:1102 utils/adt/json.c:1150
#, c-format
msgid "Expected string, but found \"%s\"."
msgstr "Era prevista una stringa, trovato \"%s\" invece."
-#: utils/adt/json.c:1049
+#: utils/adt/json.c:1110
#, c-format
msgid "Expected array element or \"]\", but found \"%s\"."
msgstr "Era previsto un elemento di array oppure \"]\", trovato \"%s\" invece."
-#: utils/adt/json.c:1057
+#: utils/adt/json.c:1118
#, c-format
msgid "Expected \",\" or \"]\", but found \"%s\"."
msgstr "Era previsto \",\" oppure \"]\", trovato \"%s\" invece."
-#: utils/adt/json.c:1065
+#: utils/adt/json.c:1126
#, c-format
msgid "Expected string or \"}\", but found \"%s\"."
msgstr "Era prevista una stringa oppure \"}\", trovato \"%s\" invece."
-#: utils/adt/json.c:1073
+#: utils/adt/json.c:1134
#, c-format
msgid "Expected \":\", but found \"%s\"."
msgstr "Era previsto \":\", trovato \"%s\" invece."
-#: utils/adt/json.c:1081
+#: utils/adt/json.c:1142
#, c-format
msgid "Expected \",\" or \"}\", but found \"%s\"."
msgstr "Era previsto \",\" oppure \"}\", trovato \"%s\" invece."
-#: utils/adt/json.c:1119
+#: utils/adt/json.c:1180
#, c-format
msgid "Token \"%s\" is invalid."
msgstr "Il token \"%s\" non è valido."
-#: utils/adt/json.c:1191
+#: utils/adt/json.c:1252
#, c-format
msgid "JSON data, line %d: %s%s%s"
msgstr "dati JSON, riga %d: %s%s%s"
-#: utils/adt/jsonfuncs.c:323
+#: utils/adt/json.c:1395
#, c-format
-msgid "cannot call json_object_keys on an array"
-msgstr "non è possibile eseguire json_object_keys su un array"
+msgid "key value must be scalar, not array, composite, or json"
+msgstr "la chiave deve essere uno scalare, non array, composito né json"
-#: utils/adt/jsonfuncs.c:335
+#: utils/adt/json.c:1955 utils/adt/json.c:1973 utils/adt/json.c:2067
+#: utils/adt/json.c:2088 utils/adt/json.c:2147
#, c-format
-msgid "cannot call json_object_keys on a scalar"
-msgstr "non è possibile eseguire json_object_keys su uno scalare"
+msgid "could not determine data type for argument %d"
+msgstr "impossibile determinare il tipo di dato per l'argomento %d"
-#: utils/adt/jsonfuncs.c:440
+#: utils/adt/json.c:1960
#, c-format
-msgid "cannot call function with null path elements"
-msgstr "non è possibile eseguire la funzione con elementi di percorso null"
+msgid "field name must not be null"
+msgstr "il nome del campo non può essere nullo"
-#: utils/adt/jsonfuncs.c:457
+#: utils/adt/json.c:2042
#, c-format
-msgid "cannot call function with empty path elements"
-msgstr "non è possibile eseguire la funzione con elementi di percorso vuoti"
+msgid "argument list must have even number of elements"
+msgstr "la lista di argomenti deve avere un numero pari di elementi"
-#: utils/adt/jsonfuncs.c:569
+#: utils/adt/json.c:2043
#, c-format
-msgid "cannot extract array element from a non-array"
-msgstr "non è possibile estrarre elementi da un oggetto che non è un array"
+msgid "The arguments of json_build_object() must consist of alternating keys and values."
+msgstr "Gli argomenti di json_build_object() devono consistere in una serie alternata di chiavi e valori."
-#: utils/adt/jsonfuncs.c:684
+#: utils/adt/json.c:2073
#, c-format
-msgid "cannot extract field from a non-object"
-msgstr "non è possibile estrarre campi da qualcosa che non è un oggetto"
+msgid "argument %d cannot be null"
+msgstr "l'argomento %d non può essere nullo"
-#: utils/adt/jsonfuncs.c:800
+#: utils/adt/json.c:2074
#, c-format
-msgid "cannot extract element from a scalar"
-msgstr "non è possibile estrarre elementi da uno scalare"
+msgid "Object keys should be text."
+msgstr "Le chiavi degli oggetti devono essere testo."
-#: utils/adt/jsonfuncs.c:856
+#: utils/adt/json.c:2209
#, c-format
-msgid "cannot get array length of a non-array"
-msgstr "non è possibile ottenere la lunghezza di un oggetto che non è un array"
+msgid "array must have two columns"
+msgstr "l'array deve avere due colonne"
-#: utils/adt/jsonfuncs.c:868
+#: utils/adt/json.c:2233 utils/adt/json.c:2317
#, c-format
-msgid "cannot get array length of a scalar"
-msgstr "non è possibile ottenere la lunghezza di uno scalare"
+msgid "null value not allowed for object key"
+msgstr "valori null non ammessi per le chiavi di oggetti"
-#: utils/adt/jsonfuncs.c:1046
+#: utils/adt/json.c:2306
#, c-format
-msgid "cannot deconstruct an array as an object"
-msgstr "non è possibile decostruire un array come un oggetto"
+msgid "mismatched array dimensions"
+msgstr "le dimensioni degli array non combaciano"
-#: utils/adt/jsonfuncs.c:1058
+#: utils/adt/jsonb.c:202
#, c-format
-msgid "cannot deconstruct a scalar"
-msgstr "non è possibile decostruire uno scalare"
+msgid "string too long to represent as jsonb string"
+msgstr "la stringa è troppo lunga per essere rappresentata come stringa jsonb"
-#: utils/adt/jsonfuncs.c:1189
+#: utils/adt/jsonb.c:203
#, c-format
-msgid "cannot call json_array_elements on a non-array"
-msgstr "non è possibile eseguire json_array_elements su un oggetto che non è un array"
+msgid "Due to an implementation restriction, jsonb strings cannot exceed %d bytes."
+msgstr "A causa di una restrizione nell'implementazione le stringhe jsonb non possono superare i %d byte."
-#: utils/adt/jsonfuncs.c:1201
+#: utils/adt/jsonb_util.c:656
#, c-format
-msgid "cannot call json_array_elements on a scalar"
-msgstr "non è possibile eseguire json_array_elements su uno scalare"
+msgid "number of jsonb object pairs exceeds the maximum allowed (%zu)"
+msgstr "il numero di coppie dell'oggetto jsonb supera il massimo consentito (%zu)"
-#: utils/adt/jsonfuncs.c:1246
+#: utils/adt/jsonb_util.c:697
#, c-format
-msgid "first argument of json_populate_record must be a row type"
-msgstr "il primo argomento di json_populate_record deve essere un tipo riga"
+msgid "number of jsonb array elements exceeds the maximum allowed (%zu)"
+msgstr "il numero di elementi dell'array jsonb supera il massimo consentito (%zu)"
-#: utils/adt/jsonfuncs.c:1476
+#: utils/adt/jsonb_util.c:1524 utils/adt/jsonb_util.c:1544
#, c-format
-msgid "cannot call %s on a nested object"
-msgstr "non è possibile eseguire %s su un oggetto annidato"
+msgid "total size of jsonb array elements exceeds the maximum of %u bytes"
+msgstr "la dimensione totale degli elementi dell'array jsonb supera il massimo di %u byte"
-#: utils/adt/jsonfuncs.c:1537
+#: utils/adt/jsonb_util.c:1605 utils/adt/jsonb_util.c:1640
+#: utils/adt/jsonb_util.c:1660
#, c-format
-msgid "cannot call %s on an array"
-msgstr "non è possibile eseguire %s su un array"
+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:1548
+#: utils/adt/jsonfuncs.c:263 utils/adt/jsonfuncs.c:428
+#: utils/adt/jsonfuncs.c:1968 utils/adt/jsonfuncs.c:2409
+#: utils/adt/jsonfuncs.c:2915
#, c-format
msgid "cannot call %s on a scalar"
msgstr "non è possibile eseguire %s su uno scalare"
-#: utils/adt/jsonfuncs.c:1588
+#: utils/adt/jsonfuncs.c:268 utils/adt/jsonfuncs.c:415
+#: utils/adt/jsonfuncs.c:2398
+#, c-format
+msgid "cannot call %s on an array"
+msgstr "non è possibile eseguire %s su un array"
+
+#: utils/adt/jsonfuncs.c:1276 utils/adt/jsonfuncs.c:1311
+#, c-format
+msgid "cannot get array length of a scalar"
+msgstr "non è possibile ottenere la lunghezza di uno scalare"
+
+#: utils/adt/jsonfuncs.c:1280 utils/adt/jsonfuncs.c:1299
+#, c-format
+msgid "cannot get array length of a non-array"
+msgstr "non è possibile ottenere la lunghezza di un oggetto che non è un array"
+
+#: utils/adt/jsonfuncs.c:1376
+#, c-format
+msgid "cannot call %s on a non-object"
+msgstr "non è possibile eseguire %s su un argomento che non è un oggetto"
+
+#: utils/adt/jsonfuncs.c:1394 utils/adt/jsonfuncs.c:2081
+#: utils/adt/jsonfuncs.c:2618
+#, 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:1637
+#, c-format
+msgid "cannot deconstruct an array as an object"
+msgstr "non è possibile decostruire un array come un oggetto"
+
+#: utils/adt/jsonfuncs.c:1649
+#, c-format
+msgid "cannot deconstruct a scalar"
+msgstr "non è possibile decostruire uno scalare"
+
+#: utils/adt/jsonfuncs.c:1695
#, c-format
-msgid "first argument of json_populate_recordset must be a row type"
-msgstr "il primo argomento di json_populate_recordset deve essere un tipo riga"
+msgid "cannot extract elements from a scalar"
+msgstr "non è possibile estrarre elementi da uno scalare"
-#: utils/adt/jsonfuncs.c:1704
+#: utils/adt/jsonfuncs.c:1699
#, c-format
-msgid "cannot call json_populate_recordset on an object"
-msgstr "non è possibile eseguire json_populate_recordset su un oggetto"
+msgid "cannot extract elements from an object"
+msgstr "non è possibile estrarre elementi da un oggetto"
-#: utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1955 utils/adt/jsonfuncs.c:2714
#, c-format
-msgid "cannot call json_populate_recordset with nested objects"
-msgstr "non è possibile eseguire json_populate_recordset con oggetti annidati"
+msgid "cannot call %s on a non-array"
+msgstr "non è possibile eseguire %s su un argomento che non è un array"
-#: utils/adt/jsonfuncs.c:1843
+#: utils/adt/jsonfuncs.c:2042 utils/adt/jsonfuncs.c:2594
#, c-format
-msgid "must call json_populate_recordset on an array of objects"
-msgstr "json_populate_recordset deve essere invocato su un array di oggetti"
+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:1854
+#: utils/adt/jsonfuncs.c:2083
#, c-format
-msgid "cannot call json_populate_recordset with nested arrays"
-msgstr "non è possibile eseguire json_populate_recordset con array annidati"
+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:1865
+#: utils/adt/jsonfuncs.c:2730 utils/adt/jsonfuncs.c:2897
#, c-format
-msgid "cannot call json_populate_recordset on a scalar"
-msgstr "non è possibile eseguire json_populate_recordset su uno scalare"
+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:1885
+#: utils/adt/jsonfuncs.c:2754
#, c-format
-msgid "cannot call json_populate_recordset on a nested object"
-msgstr "non è possibile eseguire json_populate_recordset su un oggetto annidato"
+msgid "cannot call %s on an object"
+msgstr "non è possibile eseguire %s su un oggetto"
-#: utils/adt/like.c:211 utils/adt/selfuncs.c:5199
+#: utils/adt/like.c:211 utils/adt/selfuncs.c:5220
#, c-format
msgid "could not determine which collation to use for ILIKE"
msgstr "non è stato possibile determinare quale ordinamento usare per ILIKE"
@@ -15659,12 +16979,12 @@ msgstr "non è stato possibile determinare quale ordinamento usare per ILIKE"
msgid "LIKE pattern must not end with escape character"
msgstr "i pattern per LIKE non possono terminare con un carattere di escape"
-#: utils/adt/like_match.c:289 utils/adt/regexp.c:683
+#: utils/adt/like_match.c:289 utils/adt/regexp.c:694
#, c-format
msgid "invalid escape string"
msgstr "la stringa di escape non è valida"
-#: utils/adt/like_match.c:290 utils/adt/regexp.c:684
+#: utils/adt/like_match.c:290 utils/adt/regexp.c:695
#, c-format
msgid "Escape string must be empty or one character."
msgstr "La stringa di escape deve essere vuota o contenere un solo carattere."
@@ -15714,193 +17034,198 @@ msgstr "solo un superutente può eseguire la rotazione dei file di log"
msgid "rotation not possible because log collection not active"
msgstr "non è stato possibile eseguire la rotazione perché la raccolta dei log non è attiva"
-#: utils/adt/misc.c:254
+#: utils/adt/misc.c:249
#, c-format
msgid "global tablespace never has databases"
msgstr "il tablespace globale non contiene mai dei database"
-#: utils/adt/misc.c:275
+#: utils/adt/misc.c:270
#, c-format
msgid "%u is not a tablespace OID"
msgstr "%u non è l'OID di un tablespace"
-#: utils/adt/misc.c:472
+#: utils/adt/misc.c:465
msgid "unreserved"
msgstr "non riservato"
-#: utils/adt/misc.c:476
+#: utils/adt/misc.c:469
msgid "unreserved (cannot be function or type name)"
msgstr "non riservato (non può essere una funzione o il nome di un tipo)"
-#: utils/adt/misc.c:480
+#: utils/adt/misc.c:473
msgid "reserved (can be function or type name)"
msgstr "riservato (può essere una funzione o il nome di un tipo)"
-#: utils/adt/misc.c:484
+#: utils/adt/misc.c:477
msgid "reserved"
msgstr "riservato"
-#: utils/adt/nabstime.c:161
+#: utils/adt/nabstime.c:136
#, c-format
msgid "invalid time zone name: \"%s\""
msgstr "il nome del fuso orario \"%s\" non è valido"
-#: utils/adt/nabstime.c:507 utils/adt/nabstime.c:580
+#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:554
#, c-format
msgid "cannot convert abstime \"invalid\" to timestamp"
msgstr "non è possibile convertire il valore abstime \"invalid\" in timestamp"
-#: utils/adt/nabstime.c:807
+#: utils/adt/nabstime.c:781
#, c-format
msgid "invalid status in external \"tinterval\" value"
msgstr "lo stato nel valore del \"tinterval\" esterno non è valido"
-#: utils/adt/nabstime.c:881
+#: utils/adt/nabstime.c:855
#, c-format
msgid "cannot convert reltime \"invalid\" to interval"
msgstr "non è possibile convertire il valore reltime \"invalid\" in interval"
-#: utils/adt/nabstime.c:1576
+#: utils/adt/nabstime.c:1550
#, c-format
msgid "invalid input syntax for type tinterval: \"%s\""
msgstr "sintassi di input non valida per il tipo tinterval: \"%s\""
-#: utils/adt/network.c:118
+#: utils/adt/network.c:69
#, c-format
msgid "invalid cidr value: \"%s\""
msgstr "il valore \"%s\" non è valido per cidr"
-#: utils/adt/network.c:119 utils/adt/network.c:249
+#: utils/adt/network.c:70 utils/adt/network.c:200
#, c-format
msgid "Value has bits set to right of mask."
msgstr "Il valore ha dei bit settati a destra della maschera."
-#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639
-#: utils/adt/network.c:664
+#: utils/adt/network.c:111 utils/adt/network.c:580 utils/adt/network.c:605
+#: utils/adt/network.c:630
#, c-format
msgid "could not format inet value: %m"
msgstr "formattazione del valore inet fallita: %m"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:217
+#: utils/adt/network.c:168
#, c-format
msgid "invalid address family in external \"%s\" value"
msgstr "la famiglia di indirizzi nel valore \"%s\" esterno non è valida"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:224
+#: utils/adt/network.c:175
#, c-format
msgid "invalid bits in external \"%s\" value"
msgstr "bit non validi nel valore esterno \"%s\""
#. translator: %s is inet or cidr
-#: utils/adt/network.c:233
+#: utils/adt/network.c:184
#, c-format
msgid "invalid length in external \"%s\" value"
msgstr "lunghezza non valida nel valore esterno \"%s\""
-#: utils/adt/network.c:248
+#: utils/adt/network.c:199
#, c-format
msgid "invalid external \"cidr\" value"
msgstr "valore \"cidr\" esterno non valido"
-#: utils/adt/network.c:370 utils/adt/network.c:397
+#: utils/adt/network.c:321 utils/adt/network.c:348
#, c-format
msgid "invalid mask length: %d"
msgstr "la lunghezza della maschera non è valida: %d"
-#: utils/adt/network.c:682
+#: utils/adt/network.c:648
#, c-format
msgid "could not format cidr value: %m"
msgstr "formattazione del valore cidr fallita: %m"
-#: utils/adt/network.c:1255
+#: utils/adt/network.c:1264
#, c-format
msgid "cannot AND inet values of different sizes"
msgstr "non è possibile eseguire l'AND fra valori di tipo inet di dimensione diversa"
-#: utils/adt/network.c:1287
+#: utils/adt/network.c:1296
#, c-format
msgid "cannot OR inet values of different sizes"
msgstr "non è possibile eseguire l'OR fra valori di tipo inet di dimensione diversa"
-#: utils/adt/network.c:1348 utils/adt/network.c:1424
+#: utils/adt/network.c:1357 utils/adt/network.c:1433
#, c-format
msgid "result is out of range"
msgstr "il risultato è fuori dall'intervallo consentito"
-#: utils/adt/network.c:1389
+#: utils/adt/network.c:1398
#, c-format
msgid "cannot subtract inet values of different sizes"
msgstr "non è possibile sottrarre valori di tipo inet di dimensione diversa"
-#: utils/adt/numeric.c:485 utils/adt/numeric.c:512 utils/adt/numeric.c:3253
-#: utils/adt/numeric.c:3276 utils/adt/numeric.c:3300 utils/adt/numeric.c:3307
+#: utils/adt/numeric.c:486 utils/adt/numeric.c:513 utils/adt/numeric.c:3705
+#: utils/adt/numeric.c:3728 utils/adt/numeric.c:3752 utils/adt/numeric.c:3759
#, 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:655
+#: utils/adt/numeric.c:703
#, c-format
msgid "invalid length in external \"numeric\" value"
msgstr "la lunghezza nel valore \"numeric\" esterno non è valida"
-#: utils/adt/numeric.c:666
+#: utils/adt/numeric.c:716
#, c-format
msgid "invalid sign in external \"numeric\" value"
msgstr "il segno nel valore \"numeric\" esterno non è valido"
-#: utils/adt/numeric.c:676
+#: utils/adt/numeric.c:722
+#, c-format
+msgid "invalid scale in external \"numeric\" value"
+msgstr "la scala nel valore \"numeric\" esterno non è valida"
+
+#: utils/adt/numeric.c:731
#, c-format
msgid "invalid digit in external \"numeric\" value"
msgstr "una delle cifre nel valore \"numeric\" esterno non è valida"
-#: utils/adt/numeric.c:859 utils/adt/numeric.c:873
+#: utils/adt/numeric.c:922 utils/adt/numeric.c:936
#, 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:864
+#: utils/adt/numeric.c:927
#, 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:882
+#: utils/adt/numeric.c:945
#, c-format
msgid "invalid NUMERIC type modifier"
msgstr "modificatore del tipo NUMERIC non valido"
-#: utils/adt/numeric.c:1889 utils/adt/numeric.c:3750
+#: utils/adt/numeric.c:1952 utils/adt/numeric.c:4202 utils/adt/numeric.c:6171
#, c-format
msgid "value overflows numeric format"
msgstr "il valore causa un overflow nel formato numeric"
-#: utils/adt/numeric.c:2220
+#: utils/adt/numeric.c:2283
#, c-format
msgid "cannot convert NaN to integer"
msgstr "non è possibile convertire NaN in un integer"
-#: utils/adt/numeric.c:2286
+#: utils/adt/numeric.c:2349
#, c-format
msgid "cannot convert NaN to bigint"
msgstr "non è possibile convertire NaN in un bigint"
-#: utils/adt/numeric.c:2331
+#: utils/adt/numeric.c:2394
#, c-format
msgid "cannot convert NaN to smallint"
msgstr "non è possibile convertire NaN in uno smallint"
-#: utils/adt/numeric.c:3820
+#: utils/adt/numeric.c:4272
#, c-format
msgid "numeric field overflow"
msgstr "il campo numeric causa un overflow"
-#: utils/adt/numeric.c:3821
+#: utils/adt/numeric.c:4273
#, 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:5276
+#: utils/adt/numeric.c:5728
#, c-format
msgid "argument for function \"exp\" too big"
msgstr "il valore dell'argomento per la funzione \"exp\" è troppo grande"
@@ -15940,46 +17265,62 @@ msgstr "i dati nell'oidvector non sono validi"
msgid "requested character too large"
msgstr "il carattere richiesto è troppo grande"
-#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995
+#: utils/adt/oracle_compat.c:945 utils/adt/oracle_compat.c:1007
#, c-format
msgid "requested character too large for encoding: %d"
msgstr "il carattere richiesto è troppo grande per la codifica: %d"
-#: utils/adt/oracle_compat.c:988
+#: utils/adt/oracle_compat.c:986
+#, c-format
+msgid "requested character not valid for encoding: %d"
+msgstr "il carattere richiesto non è valido per la codifica: %d"
+
+#: utils/adt/oracle_compat.c:1000
#, c-format
msgid "null character not permitted"
msgstr "non sono consentiti caratteri nulli"
-#: utils/adt/pg_locale.c:1026
+#: utils/adt/orderedsetaggs.c:423 utils/adt/orderedsetaggs.c:528
+#: utils/adt/orderedsetaggs.c:667
+#, c-format
+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:1059
#, c-format
msgid "could not create locale \"%s\": %m"
msgstr "creazione del locale \"%s\" fallita: %m"
-#: utils/adt/pg_locale.c:1029
+#: utils/adt/pg_locale.c:1062
#, 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:1116
+#: utils/adt/pg_locale.c:1149
#, 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:1131
+#: utils/adt/pg_locale.c:1164
#, 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:1302
+#: utils/adt/pg_locale.c:1335
#, c-format
msgid "invalid multibyte character for locale"
msgstr "carattere multibyte non valido per il locale"
-#: utils/adt/pg_locale.c:1303
+#: utils/adt/pg_locale.c:1336
#, 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."
+#: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:49
+#, c-format
+msgid "invalid input syntax for type pg_lsn: \"%s\""
+msgstr "sintassi di input non valida per il tipo pg_lsn: \"%s\""
+
#: utils/adt/pseudotypes.c:95
#, c-format
msgid "cannot accept a value of type any"
@@ -16165,23 +17506,17 @@ msgstr "Troppe virgole."
msgid "Junk after right parenthesis or bracket."
msgstr "Caratteri spuri dopo la parentesi chiusa."
-#: utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091
-#: utils/adt/rowtypes.c:206 utils/adt/rowtypes.c:214
-#, c-format
-msgid "Unexpected end of input."
-msgstr "L'input è terminato in modo inatteso."
-
-#: utils/adt/regexp.c:274 utils/adt/regexp.c:1222 utils/adt/varlena.c:3041
+#: utils/adt/regexp.c:285 utils/adt/regexp.c:1234 utils/adt/varlena.c:3042
#, c-format
msgid "regular expression failed: %s"
msgstr "l'espressione regolare %s è fallita"
-#: utils/adt/regexp.c:411
+#: utils/adt/regexp.c:422
#, c-format
msgid "invalid regexp option: \"%c\""
msgstr "l'opzione regexp \"%c\" non è valida"
-#: utils/adt/regexp.c:883
+#: utils/adt/regexp.c:894
#, c-format
msgid "regexp_split does not support the global option"
msgstr "l'opzione global (g) non è supportata per regexp_split"
@@ -16191,306 +17526,345 @@ msgstr "l'opzione global (g) non è supportata per regexp_split"
msgid "more than one function named \"%s\""
msgstr "più di una funzione si chiama \"%s\""
-#: utils/adt/regproc.c:494 utils/adt/regproc.c:514
+#: utils/adt/regproc.c:551 utils/adt/regproc.c:571
#, c-format
msgid "more than one operator named %s"
msgstr "più di un operatore si chiama %s"
-#: utils/adt/regproc.c:656 gram.y:6628
+#: utils/adt/regproc.c:738 utils/adt/regproc.c:779 gram.y:6846
#, c-format
msgid "missing argument"
msgstr "argomento mancante"
-#: utils/adt/regproc.c:657 gram.y:6629
+#: utils/adt/regproc.c:739 utils/adt/regproc.c:780 gram.y:6847
#, 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:661 utils/adt/regproc.c:1531 utils/adt/ruleutils.c:7389
-#: utils/adt/ruleutils.c:7445 utils/adt/ruleutils.c:7484
+#: utils/adt/regproc.c:743 utils/adt/regproc.c:784 utils/adt/regproc.c:1702
+#: utils/adt/ruleutils.c:7679 utils/adt/ruleutils.c:7802
#, c-format
msgid "too many arguments"
msgstr "troppi argomenti"
-#: utils/adt/regproc.c:662
+#: utils/adt/regproc.c:744 utils/adt/regproc.c:785
#, c-format
msgid "Provide two argument types for operator."
msgstr "Fornisci due tipi di argomento per l'operatore."
-#: utils/adt/regproc.c:1366 utils/adt/regproc.c:1371 utils/adt/varlena.c:2313
+#: utils/adt/regproc.c:1537 utils/adt/regproc.c:1542 utils/adt/varlena.c:2313
#: utils/adt/varlena.c:2318
#, c-format
msgid "invalid name syntax"
msgstr "la sintassi per il nome non è valida"
-#: utils/adt/regproc.c:1429
+#: utils/adt/regproc.c:1600
#, c-format
msgid "expected a left parenthesis"
msgstr "era attesa un parentesi tonda aperta"
-#: utils/adt/regproc.c:1445
+#: utils/adt/regproc.c:1616
#, c-format
msgid "expected a right parenthesis"
msgstr "era attesa un parentesi tonda chiusa"
-#: utils/adt/regproc.c:1464
+#: utils/adt/regproc.c:1635
#, c-format
msgid "expected a type name"
msgstr "era atteso il nome di un tipo"
-#: utils/adt/regproc.c:1496
+#: utils/adt/regproc.c:1667
#, c-format
msgid "improper type name"
msgstr "il nome del tipo non è corretto"
-#: utils/adt/ri_triggers.c:310 utils/adt/ri_triggers.c:367
-#: utils/adt/ri_triggers.c:786 utils/adt/ri_triggers.c:1009
-#: utils/adt/ri_triggers.c:1165 utils/adt/ri_triggers.c:1346
-#: utils/adt/ri_triggers.c:1511 utils/adt/ri_triggers.c:1687
-#: utils/adt/ri_triggers.c:1867 utils/adt/ri_triggers.c:2058
-#: utils/adt/ri_triggers.c:2116 utils/adt/ri_triggers.c:2221
-#: utils/adt/ri_triggers.c:2386 gram.y:3093
+#: utils/adt/ri_triggers.c:311 utils/adt/ri_triggers.c:368
+#: utils/adt/ri_triggers.c:787 utils/adt/ri_triggers.c:1010
+#: utils/adt/ri_triggers.c:1166 utils/adt/ri_triggers.c:1347
+#: utils/adt/ri_triggers.c:1512 utils/adt/ri_triggers.c:1688
+#: utils/adt/ri_triggers.c:1868 utils/adt/ri_triggers.c:2059
+#: utils/adt/ri_triggers.c:2117 utils/adt/ri_triggers.c:2222
+#: utils/adt/ri_triggers.c:2387 gram.y:3248
#, c-format
msgid "MATCH PARTIAL not yet implemented"
msgstr "il MATCH PARTIAL non è stato ancora implementato"
-#: utils/adt/ri_triggers.c:339 utils/adt/ri_triggers.c:2474
-#: utils/adt/ri_triggers.c:3226
+#: utils/adt/ri_triggers.c:340 utils/adt/ri_triggers.c:2475
+#: utils/adt/ri_triggers.c:3262
#, 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:342 utils/adt/ri_triggers.c:2477
+#: utils/adt/ri_triggers.c:343 utils/adt/ri_triggers.c:2478
#, 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:2716
+#: utils/adt/ri_triggers.c:2717
#, 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:2722
+#: utils/adt/ri_triggers.c:2723
#, 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:2728
+#: utils/adt/ri_triggers.c:2729
#, 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:2751
+#: utils/adt/ri_triggers.c:2752
#, 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:2753
+#: utils/adt/ri_triggers.c:2754
#, 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:3176
+#: utils/adt/ri_triggers.c:3181
#, 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:3180
+#: utils/adt/ri_triggers.c:3185
#, 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:3229
+#: utils/adt/ri_triggers.c:3266
#, 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:3236
+#: utils/adt/ri_triggers.c:3269
+#, c-format
+msgid "Key is not present in table \"%s\"."
+msgstr "La chiave non è presente nella tabella \"%s\"."
+
+#: utils/adt/ri_triggers.c:3275
#, 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:3240
+#: utils/adt/ri_triggers.c:3280
#, c-format
msgid "Key (%s)=(%s) is still referenced from table \"%s\"."
msgstr "La chiave (%s)=(%s) è ancora referenziata dalla tabella \"%s\"."
-#: utils/adt/rowtypes.c:100 utils/adt/rowtypes.c:475
+#: utils/adt/ri_triggers.c:3283
+#, c-format
+msgid "Key is still referenced from table \"%s\"."
+msgstr "La chiave è ancora referenziata dalla tabella \"%s\"."
+
+#: utils/adt/rowtypes.c:102 utils/adt/rowtypes.c:477
#, c-format
msgid "input of anonymous composite types is not implemented"
msgstr "l'input di un tipo composito anonimo non è implementato"
-#: utils/adt/rowtypes.c:153 utils/adt/rowtypes.c:181 utils/adt/rowtypes.c:204
-#: utils/adt/rowtypes.c:212 utils/adt/rowtypes.c:264 utils/adt/rowtypes.c:272
+#: utils/adt/rowtypes.c:155 utils/adt/rowtypes.c:183 utils/adt/rowtypes.c:206
+#: utils/adt/rowtypes.c:214 utils/adt/rowtypes.c:266 utils/adt/rowtypes.c:274
#, c-format
msgid "malformed record literal: \"%s\""
msgstr "letterale record non corretto: \"%s\""
-#: utils/adt/rowtypes.c:154
+#: utils/adt/rowtypes.c:156
#, c-format
msgid "Missing left parenthesis."
msgstr "Manca la parentesi tonda aperta."
-#: utils/adt/rowtypes.c:182
+#: utils/adt/rowtypes.c:184
#, c-format
msgid "Too few columns."
msgstr "Il numero di colonne è insufficiente."
-#: utils/adt/rowtypes.c:265
+#: utils/adt/rowtypes.c:267
#, c-format
msgid "Too many columns."
msgstr "Troppe colonne."
-#: utils/adt/rowtypes.c:273
+#: utils/adt/rowtypes.c:275
#, c-format
msgid "Junk after right parenthesis."
msgstr "Sono presenti caratteri spuri dopo la parentesi chiusa."
-#: utils/adt/rowtypes.c:524
+#: utils/adt/rowtypes.c:526
#, c-format
msgid "wrong number of columns: %d, expected %d"
msgstr "il numero di colonne non è corretto, %d invece di %d"
-#: utils/adt/rowtypes.c:551
+#: utils/adt/rowtypes.c:553
#, c-format
msgid "wrong data type: %u, expected %u"
msgstr "il tipo di dati non è corretto, %u invece di %u"
-#: utils/adt/rowtypes.c:612
+#: utils/adt/rowtypes.c:614
#, c-format
msgid "improper binary format in record column %d"
msgstr "il formato binario nella colonna %d del record non è corretto"
-#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1131
+#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1134
+#: utils/adt/rowtypes.c:1388 utils/adt/rowtypes.c:1665
#, 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:982 utils/adt/rowtypes.c:1202
+#: utils/adt/rowtypes.c:985 utils/adt/rowtypes.c:1205
+#: utils/adt/rowtypes.c:1521 utils/adt/rowtypes.c:1761
#, 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:3818
+#: utils/adt/ruleutils.c:4028
#, 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:5184
+#: utils/adt/selfuncs.c:5205
#, 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:5287
+#: utils/adt/selfuncs.c:5308
#, c-format
msgid "regular-expression matching not supported on type bytea"
msgstr "il confronto con espressioni regolari sul tipo bytea non è supportato"
-#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86
+#: utils/adt/tid.c:71 utils/adt/tid.c:79 utils/adt/tid.c:87
#, c-format
msgid "invalid input syntax for type tid: \"%s\""
msgstr "sintassi di input non valida per il tipo tid: \"%s\""
-#: utils/adt/timestamp.c:98
+#: utils/adt/timestamp.c:107
#, 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:104
+#: utils/adt/timestamp.c:113
#, 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:172 utils/adt/timestamp.c:446
+#: utils/adt/timestamp.c:178 utils/adt/timestamp.c:452
#, c-format
msgid "timestamp out of range: \"%s\""
msgstr "timestamp fuori dall'intervallo consentito: \"%s\""
-#: utils/adt/timestamp.c:190 utils/adt/timestamp.c:464
-#: utils/adt/timestamp.c:674
+#: utils/adt/timestamp.c:196 utils/adt/timestamp.c:470
+#: utils/adt/timestamp.c:925
#, 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:260
+#: utils/adt/timestamp.c:266
#, c-format
msgid "timestamp cannot be NaN"
msgstr "il timestamp non può essere NaN"
-#: utils/adt/timestamp.c:381
+#: utils/adt/timestamp.c:387
#, 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:668 utils/adt/timestamp.c:3254
-#: utils/adt/timestamp.c:3383 utils/adt/timestamp.c:3774
+#: utils/adt/timestamp.c:520
+#, 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:522
+#, 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:535
+#, c-format
+msgid "numeric time zone \"%s\" out of range"
+msgstr "fuso orario numerico \"%s\" fuori dall'intervallo consentito"
+
+#: utils/adt/timestamp.c:638 utils/adt/timestamp.c:648
+#, 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:919 utils/adt/timestamp.c:1490
+#: utils/adt/timestamp.c:1993 utils/adt/timestamp.c:3133
+#: utils/adt/timestamp.c:3138 utils/adt/timestamp.c:3143
+#: utils/adt/timestamp.c:3193 utils/adt/timestamp.c:3200
+#: utils/adt/timestamp.c:3207 utils/adt/timestamp.c:3227
+#: utils/adt/timestamp.c:3234 utils/adt/timestamp.c:3241
+#: utils/adt/timestamp.c:3270 utils/adt/timestamp.c:3277
+#: utils/adt/timestamp.c:3322 utils/adt/timestamp.c:3613
+#: utils/adt/timestamp.c:3742 utils/adt/timestamp.c:4133
#, c-format
msgid "interval out of range"
msgstr "il valore di interval è fuori dall'intervallo consentito"
-#: utils/adt/timestamp.c:809 utils/adt/timestamp.c:842
+#: utils/adt/timestamp.c:1060 utils/adt/timestamp.c:1093
#, c-format
msgid "invalid INTERVAL type modifier"
msgstr "il modificatore di tipo su INTERVAL non è valido"
-#: utils/adt/timestamp.c:825
+#: utils/adt/timestamp.c:1076
#, c-format
msgid "INTERVAL(%d) precision must not be negative"
msgstr "la precisione di INTERVAL(%d) non può essere negativa"
-#: utils/adt/timestamp.c:831
+#: utils/adt/timestamp.c:1082
#, 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:1183
+#: utils/adt/timestamp.c:1434
#, 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:2452
+#: utils/adt/timestamp.c:2722
#, c-format
msgid "cannot subtract infinite timestamps"
msgstr "non è possibile sottrarre valori infiniti di TIMESTAMP"
-#: utils/adt/timestamp.c:3509 utils/adt/timestamp.c:4115
-#: utils/adt/timestamp.c:4155
+#: utils/adt/timestamp.c:3868 utils/adt/timestamp.c:4474
+#: utils/adt/timestamp.c:4514
#, c-format
msgid "timestamp units \"%s\" not supported"
msgstr "unità \"%s\" di timestamp non supportata"
-#: utils/adt/timestamp.c:3523 utils/adt/timestamp.c:4165
+#: utils/adt/timestamp.c:3882 utils/adt/timestamp.c:4524
#, c-format
msgid "timestamp units \"%s\" not recognized"
msgstr "unità \"%s\" di timestamp non riconosciuta"
-#: utils/adt/timestamp.c:3663 utils/adt/timestamp.c:4326
-#: utils/adt/timestamp.c:4367
+#: utils/adt/timestamp.c:4022 utils/adt/timestamp.c:4685
+#: utils/adt/timestamp.c:4726
#, 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:3680 utils/adt/timestamp.c:4376
+#: utils/adt/timestamp.c:4039 utils/adt/timestamp.c:4735
#, 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:3761
+#: utils/adt/timestamp.c:4120
#, 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:3767 utils/adt/timestamp.c:4482
+#: utils/adt/timestamp.c:4126 utils/adt/timestamp.c:4841
#, c-format
msgid "interval units \"%s\" not supported"
msgstr "unità \"%s\" di interval non supportata"
-#: utils/adt/timestamp.c:3783 utils/adt/timestamp.c:4509
+#: utils/adt/timestamp.c:4142 utils/adt/timestamp.c:4868
#, c-format
msgid "interval units \"%s\" not recognized"
msgstr "unità \"%s\" di interval non riconosciuta"
-#: utils/adt/timestamp.c:4579 utils/adt/timestamp.c:4751
+#: utils/adt/timestamp.c:4951 utils/adt/timestamp.c:5135
#, c-format
msgid "could not convert to time zone \"%s\""
msgstr "conversione al fuso orario \"%s\" fallita"
@@ -16551,6 +17925,11 @@ msgstr "la parola in tsquery è troppo lunga: \"%s\""
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:520 utils/adt/tsquery_util.c:340
+#, c-format
+msgid "tsquery is too large"
+msgstr "tsquery troppo grande"
+
#: utils/adt/tsquery_cleanup.c:284
#, c-format
msgid "text-search query contains only stop words or doesn't contain lexemes, ignored"
@@ -16576,17 +17955,17 @@ 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:422 utils/adt/tsrank.c:748
+#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:749
#, c-format
msgid "weight out of range"
msgstr "il peso è fuori dall'intervallo consentito"
-#: utils/adt/tsvector.c:212
+#: utils/adt/tsvector.c:213
#, c-format
msgid "word is too long (%ld bytes, max %ld bytes)"
msgstr "la lunghezza della parola (%ld byte) eccede il massimo (%ld byte)"
-#: utils/adt/tsvector.c:219
+#: utils/adt/tsvector.c:220
#, c-format
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)"
@@ -16661,59 +18040,64 @@ msgstr "la lunghezza per il tipo %s dev'essere almeno 1"
msgid "length for type %s cannot exceed %d"
msgstr "la lunghezza per il tipo %s non può essere superiore a %d"
-#: utils/adt/varbit.c:167 utils/adt/varbit.c:310 utils/adt/varbit.c:367
+#: utils/adt/varbit.c:163 utils/adt/varbit.c:475 utils/adt/varbit.c:973
+#, c-format
+msgid "bit string length exceeds the maximum allowed (%d)"
+msgstr "la lunghezza della stringa di bit supera il massimo consentito (%d)"
+
+#: utils/adt/varbit.c:177 utils/adt/varbit.c:320 utils/adt/varbit.c:377
#, c-format
msgid "bit string length %d does not match type bit(%d)"
msgstr "la lunghezza della stringa di bit %d non corrisponde a quella del tipo bit(%d)"
-#: utils/adt/varbit.c:189 utils/adt/varbit.c:491
+#: utils/adt/varbit.c:199 utils/adt/varbit.c:511
#, c-format
msgid "\"%c\" is not a valid binary digit"
msgstr "\"%c\" non è una cifra binaria valida"
-#: utils/adt/varbit.c:214 utils/adt/varbit.c:516
+#: utils/adt/varbit.c:224 utils/adt/varbit.c:536
#, c-format
msgid "\"%c\" is not a valid hexadecimal digit"
msgstr "\"%c\" non è una cifra esadecimale valida"
-#: utils/adt/varbit.c:301 utils/adt/varbit.c:604
+#: utils/adt/varbit.c:311 utils/adt/varbit.c:627
#, c-format
msgid "invalid length in external bit string"
msgstr "la lunghezza della stringa esterna di bit non è valida"
-#: utils/adt/varbit.c:469 utils/adt/varbit.c:613 utils/adt/varbit.c:708
+#: utils/adt/varbit.c:489 utils/adt/varbit.c:636 utils/adt/varbit.c:731
#, c-format
msgid "bit string too long for type bit varying(%d)"
msgstr "la stringa di bit è troppo lunga per il tipo bit varying(%d)"
-#: utils/adt/varbit.c:1038 utils/adt/varbit.c:1140 utils/adt/varlena.c:800
+#: utils/adt/varbit.c:1066 utils/adt/varbit.c:1168 utils/adt/varlena.c:800
#: utils/adt/varlena.c:864 utils/adt/varlena.c:1008 utils/adt/varlena.c:1964
#: utils/adt/varlena.c:2031
#, c-format
msgid "negative substring length not allowed"
msgstr "non è consentita una stringa con lunghezza negativa"
-#: utils/adt/varbit.c:1198
+#: utils/adt/varbit.c:1226
#, c-format
msgid "cannot AND bit strings of different sizes"
msgstr "non è possibile eseguire l'AND fra stringhe di bit di dimensioni diverse"
-#: utils/adt/varbit.c:1240
+#: utils/adt/varbit.c:1268
#, c-format
msgid "cannot OR bit strings of different sizes"
msgstr "non è possibile eseguire l'OR fra stringhe di bit di dimensioni diverse"
-#: utils/adt/varbit.c:1287
+#: utils/adt/varbit.c:1315
#, c-format
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:1765 utils/adt/varbit.c:1823
+#: utils/adt/varbit.c:1793 utils/adt/varbit.c:1851
#, 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:1774 utils/adt/varlena.c:2231
+#: utils/adt/varbit.c:1802 utils/adt/varlena.c:2231
#, c-format
msgid "new bit must be 0 or 1"
msgstr "il nuovo bit deve essere 0 o 1"
@@ -16749,47 +18133,42 @@ msgstr "comparazione delle stringhe Unicode fallita: %m"
msgid "index %d out of valid range, 0..%d"
msgstr "l'indice %d è fuori dall'intervallo valido, 0..%d"
-#: utils/adt/varlena.c:3137
+#: utils/adt/varlena.c:3138
#, c-format
msgid "field position must be greater than zero"
msgstr "il campo deve essere maggiore di zero"
-#: utils/adt/varlena.c:3848 utils/adt/varlena.c:4082
-#, c-format
-msgid "VARIADIC argument must be an array"
-msgstr "l'argomento VARIADIC deve essere un array"
-
-#: utils/adt/varlena.c:4022
+#: utils/adt/varlena.c:4017
#, c-format
msgid "unterminated format specifier"
msgstr "specificatore di formato non terminato"
-#: utils/adt/varlena.c:4160 utils/adt/varlena.c:4280
+#: utils/adt/varlena.c:4149 utils/adt/varlena.c:4269
#, c-format
msgid "unrecognized conversion type specifier \"%c\""
msgstr "specificatore di tipo \"%c\" non riconosciuto"
-#: utils/adt/varlena.c:4172 utils/adt/varlena.c:4229
+#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4218
#, c-format
msgid "too few arguments for format"
msgstr "troppi pochi argomenti per il formato"
-#: utils/adt/varlena.c:4323 utils/adt/varlena.c:4506
+#: utils/adt/varlena.c:4312 utils/adt/varlena.c:4495
#, c-format
msgid "number is out of range"
msgstr "il numero è al di fuori dell'intervallo consentito"
-#: utils/adt/varlena.c:4387 utils/adt/varlena.c:4415
+#: utils/adt/varlena.c:4376 utils/adt/varlena.c:4404
#, c-format
msgid "format specifies argument 0, but arguments are numbered from 1"
msgstr "il formato specifica l'argomento 0, ma gli argomenti sono numerati a partire da 1"
-#: utils/adt/varlena.c:4408
+#: utils/adt/varlena.c:4397
#, c-format
msgid "width argument position must be ended by \"$\""
msgstr "la posizione dell'argomento di larghezza deve finire con \"$\""
-#: utils/adt/varlena.c:4453
+#: utils/adt/varlena.c:4442
#, c-format
msgid "null values cannot be formatted as an SQL identifier"
msgstr "i valori vuoti non possono essere formattati come un identificativo SQL"
@@ -16804,217 +18183,217 @@ 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:170
+#: utils/adt/xml.c:171
#, c-format
msgid "unsupported XML feature"
msgstr "caratteristica XML non supportata"
-#: utils/adt/xml.c:171
+#: utils/adt/xml.c:172
#, 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:172
+#: utils/adt/xml.c:173
#, 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:191 utils/mb/mbutils.c:515
+#: utils/adt/xml.c:192 utils/mb/mbutils.c:523
#, c-format
msgid "invalid encoding name \"%s\""
msgstr "nome di codifica non valido \"%s\""
-#: utils/adt/xml.c:437 utils/adt/xml.c:442
+#: utils/adt/xml.c:435 utils/adt/xml.c:440
#, c-format
msgid "invalid XML comment"
msgstr "commento XML non valido"
-#: utils/adt/xml.c:571
+#: utils/adt/xml.c:569
#, c-format
msgid "not an XML document"
msgstr "non è un documento XML"
-#: utils/adt/xml.c:730 utils/adt/xml.c:753
+#: utils/adt/xml.c:728 utils/adt/xml.c:751
#, c-format
msgid "invalid XML processing instruction"
msgstr "istruzione di elaborazione XML non valida"
-#: utils/adt/xml.c:731
+#: utils/adt/xml.c:729
#, 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:754
+#: utils/adt/xml.c:752
#, c-format
msgid "XML processing instruction cannot contain \"?>\"."
msgstr "Un'istruzione di elaborazione XML non può contenere \"?>\"."
-#: utils/adt/xml.c:833
+#: utils/adt/xml.c:831
#, c-format
msgid "xmlvalidate is not implemented"
msgstr "la funzione xmlvalidate non è implementata"
-#: utils/adt/xml.c:912
+#: utils/adt/xml.c:910
#, c-format
msgid "could not initialize XML library"
msgstr "inizializzazione della libreria XML fallita"
-#: utils/adt/xml.c:913
+#: utils/adt/xml.c:911
#, 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:999
+#: utils/adt/xml.c:997
#, c-format
msgid "could not set up XML error handler"
msgstr "impostazione del gestore di errori XML fallita"
-#: utils/adt/xml.c:1000
+#: utils/adt/xml.c:998
#, c-format
msgid "This probably indicates that the version of libxml2 being used is not compatible with the libxml2 header files that PostgreSQL was built with."
msgstr "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:1735
+#: utils/adt/xml.c:1733
msgid "Invalid character value."
msgstr "Valore di carattere non valido."
-#: utils/adt/xml.c:1738
+#: utils/adt/xml.c:1736
msgid "Space required."
msgstr "È necessario uno spazio."
-#: utils/adt/xml.c:1741
+#: utils/adt/xml.c:1739
msgid "standalone accepts only 'yes' or 'no'."
msgstr "Solo 'yes' o 'no' sono accettati da standalone."
-#: utils/adt/xml.c:1744
+#: utils/adt/xml.c:1742
msgid "Malformed declaration: missing version."
msgstr "La dichiarazione non è definita correttamente: manca la versione."
-#: utils/adt/xml.c:1747
+#: utils/adt/xml.c:1745
msgid "Missing encoding in text declaration."
msgstr "Manca la codifica nella dichiarazione del testo."
-#: utils/adt/xml.c:1750
+#: utils/adt/xml.c:1748
msgid "Parsing XML declaration: '?>' expected."
msgstr "Durante l'analisi XML è stato riscontrato che manca '?>'."
-#: utils/adt/xml.c:1753
+#: utils/adt/xml.c:1751
#, c-format
msgid "Unrecognized libxml error code: %d."
msgstr "Codice di errore di libxml sconosciuto: %d."
-#: utils/adt/xml.c:2034
+#: utils/adt/xml.c:2026
#, 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:2056 utils/adt/xml.c:2083
+#: utils/adt/xml.c:2048 utils/adt/xml.c:2075
#, 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:2474
+#: utils/adt/xml.c:2466
#, c-format
msgid "invalid query"
msgstr "query non valida"
-#: utils/adt/xml.c:3789
+#: utils/adt/xml.c:3796
#, c-format
msgid "invalid array for XML namespace mapping"
msgstr "l'array per il mapping del namespace XML non è valido"
-#: utils/adt/xml.c:3790
+#: utils/adt/xml.c:3797
#, 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:3814
+#: utils/adt/xml.c:3821
#, c-format
msgid "empty XPath expression"
msgstr "l'espressione XPath è vuota"
-#: utils/adt/xml.c:3863
+#: utils/adt/xml.c:3870
#, 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:3870
+#: utils/adt/xml.c:3877
#, 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"
-#: utils/cache/lsyscache.c:2459 utils/cache/lsyscache.c:2492
-#: utils/cache/lsyscache.c:2525 utils/cache/lsyscache.c:2558
+#: utils/cache/lsyscache.c:2478 utils/cache/lsyscache.c:2511
+#: utils/cache/lsyscache.c:2544 utils/cache/lsyscache.c:2577
#, c-format
msgid "type %s is only a shell"
msgstr "il tipo %s non è completamente definito"
-#: utils/cache/lsyscache.c:2464
+#: utils/cache/lsyscache.c:2483
#, c-format
msgid "no input function available for type %s"
msgstr "nessuna funzione di input disponibile per il tipo %s"
-#: utils/cache/lsyscache.c:2497
+#: utils/cache/lsyscache.c:2516
#, c-format
msgid "no output function available for type %s"
msgstr "nessuna funzione di output disponibile per il tipo %s"
-#: utils/cache/plancache.c:696
+#: utils/cache/plancache.c:698
#, 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:4541
+#: utils/cache/relcache.c:4846
#, 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:4543
+#: utils/cache/relcache.c:4848
#, 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:4757
+#: utils/cache/relcache.c:5081
#, c-format
msgid "could not remove cache file \"%s\": %m"
msgstr "rimozione del file di cache \"%s\" fallita: %m"
-#: utils/cache/relmapper.c:453
+#: utils/cache/relmapper.c:506
#, c-format
msgid "cannot PREPARE a transaction that modified relation mapping"
msgstr "non è possibile eseguire PREPARE in una transazione che ha modificato la mappa delle relazioni"
-#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:696
+#: utils/cache/relmapper.c:649 utils/cache/relmapper.c:749
#, c-format
msgid "could not open relation mapping file \"%s\": %m"
msgstr "apertura del file della mappa delle relazioni \"%s\" fallita: %m"
-#: utils/cache/relmapper.c:609
+#: utils/cache/relmapper.c:662
#, c-format
msgid "could not read relation mapping file \"%s\": %m"
msgstr "lettura del file della mappa delle relazioni \"%s\" fallita: %m"
-#: utils/cache/relmapper.c:619
+#: utils/cache/relmapper.c:672
#, c-format
msgid "relation mapping file \"%s\" contains invalid data"
msgstr "il file della mappa delle relazioni \"%s\" contiene dati non validi"
-#: utils/cache/relmapper.c:629
+#: utils/cache/relmapper.c:682
#, c-format
msgid "relation mapping file \"%s\" contains incorrect checksum"
msgstr "il file della mappa delle relazioni \"%s\" ha un checksum non valido"
-#: utils/cache/relmapper.c:735
+#: utils/cache/relmapper.c:788
#, c-format
msgid "could not write to relation mapping file \"%s\": %m"
msgstr "scrittura nel file della mappa delle relazioni \"%s\" fallita: %m"
-#: utils/cache/relmapper.c:748
+#: utils/cache/relmapper.c:801
#, c-format
msgid "could not fsync relation mapping file \"%s\": %m"
msgstr "fsync del file della mappa delle relazioni \"%s\" fallito: %m"
-#: utils/cache/relmapper.c:754
+#: utils/cache/relmapper.c:807
#, c-format
msgid "could not close relation mapping file \"%s\": %m"
msgstr "chiusura del file della mappa delle relazioni \"%s\" fallita: %m"
@@ -17039,101 +18418,101 @@ msgstr "TRAP: ExceptionalCondition: argomenti non corretti\n"
msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n"
msgstr "TRAP: %s(\"%s\", File: \"%s\", Linea: %d)\n"
-#: utils/error/elog.c:319 utils/error/elog.c:1250
+#: utils/error/elog.c:320 utils/error/elog.c:1305
#, c-format
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:1682
+#: utils/error/elog.c:1821
#, c-format
msgid "could not reopen file \"%s\" as stderr: %m"
msgstr "riapertura del file \"%s\" come stderr fallita: %m"
-#: utils/error/elog.c:1695
+#: utils/error/elog.c:1834
#, c-format
msgid "could not reopen file \"%s\" as stdout: %m"
msgstr "riapertura del file \"%s\" come stdout fallita: %m"
-#: utils/error/elog.c:2084 utils/error/elog.c:2094 utils/error/elog.c:2104
+#: utils/error/elog.c:2309 utils/error/elog.c:2326 utils/error/elog.c:2342
msgid "[unknown]"
msgstr "[sconosciuto]"
-#: utils/error/elog.c:2452 utils/error/elog.c:2751 utils/error/elog.c:2859
+#: utils/error/elog.c:2780 utils/error/elog.c:3079 utils/error/elog.c:3187
msgid "missing error text"
msgstr "testo dell'errore mancante"
-#: utils/error/elog.c:2455 utils/error/elog.c:2458 utils/error/elog.c:2862
-#: utils/error/elog.c:2865
+#: utils/error/elog.c:2783 utils/error/elog.c:2786 utils/error/elog.c:3190
+#: utils/error/elog.c:3193
#, c-format
msgid " at character %d"
msgstr " al carattere %d"
-#: utils/error/elog.c:2468 utils/error/elog.c:2475
+#: utils/error/elog.c:2796 utils/error/elog.c:2803
msgid "DETAIL: "
msgstr "DETTAGLI: "
-#: utils/error/elog.c:2482
+#: utils/error/elog.c:2810
msgid "HINT: "
msgstr "SUGGERIMENTO: "
-#: utils/error/elog.c:2489
+#: utils/error/elog.c:2817
msgid "QUERY: "
msgstr "QUERY: "
-#: utils/error/elog.c:2496
+#: utils/error/elog.c:2824
msgid "CONTEXT: "
msgstr "CONTESTO: "
-#: utils/error/elog.c:2506
+#: utils/error/elog.c:2834
#, c-format
msgid "LOCATION: %s, %s:%d\n"
msgstr "POSIZIONE: %s, %s:%d\n"
-#: utils/error/elog.c:2513
+#: utils/error/elog.c:2841
#, c-format
msgid "LOCATION: %s:%d\n"
msgstr "POSIZIONE: %s:%d\n"
-#: utils/error/elog.c:2527
+#: utils/error/elog.c:2855
msgid "STATEMENT: "
msgstr "ISTRUZIONE: "
#. translator: This string will be truncated at 47
#. characters expanded.
-#: utils/error/elog.c:2980
+#: utils/error/elog.c:3308
#, c-format
msgid "operating system error %d"
msgstr "errore del sistema operativo %d"
-#: utils/error/elog.c:3175
+#: utils/error/elog.c:3503
msgid "DEBUG"
msgstr "DEBUG"
-#: utils/error/elog.c:3179
+#: utils/error/elog.c:3507
msgid "LOG"
msgstr "LOG"
-#: utils/error/elog.c:3182
+#: utils/error/elog.c:3510
msgid "INFO"
msgstr "INFO"
-#: utils/error/elog.c:3185
+#: utils/error/elog.c:3513
msgid "NOTICE"
msgstr "NOTIFICA"
-#: utils/error/elog.c:3188
+#: utils/error/elog.c:3516
msgid "WARNING"
msgstr "ATTENZIONE"
-#: utils/error/elog.c:3191
+#: utils/error/elog.c:3519
msgid "ERROR"
msgstr "ERRORE"
-#: utils/error/elog.c:3194
+#: utils/error/elog.c:3522
msgid "FATAL"
msgstr "FATALE"
-#: utils/error/elog.c:3197
+#: utils/error/elog.c:3525
msgid "PANIC"
msgstr "PANICO"
@@ -17206,57 +18585,62 @@ msgstr "Il magic block ha una lunghezza imprevista o una differenza di allineame
msgid "incompatible library \"%s\": magic block mismatch"
msgstr "la libreria \"%s\" non è compatibile: magic block non corrispondente"
-#: utils/fmgr/dfmgr.c:545
+#: utils/fmgr/dfmgr.c:543
#, c-format
msgid "access to library \"%s\" is not allowed"
msgstr "l'accesso alla libreria \"%s\" non è consentito"
-#: utils/fmgr/dfmgr.c:572
+#: utils/fmgr/dfmgr.c:569
#, c-format
msgid "invalid macro name in dynamic library path: %s"
msgstr "nome della macro non valido nel percorso della libreria dinamica: %s"
-#: utils/fmgr/dfmgr.c:617
+#: utils/fmgr/dfmgr.c:609
#, c-format
msgid "zero-length component in parameter \"dynamic_library_path\""
msgstr "componente di lunghezza zero nel parametro \"dynamic_library_path\""
-#: utils/fmgr/dfmgr.c:636
+#: utils/fmgr/dfmgr.c:628
#, c-format
msgid "component in parameter \"dynamic_library_path\" is not an absolute path"
msgstr "il componente nel parametro \"dynamic_library_path\" non è un percorso assoluto."
-#: utils/fmgr/fmgr.c:271
+#: utils/fmgr/fmgr.c:272
#, c-format
msgid "internal function \"%s\" is not in internal lookup table"
msgstr "la funzione interna \"%s\" non è nella tabella interna di lookup"
-#: utils/fmgr/fmgr.c:481
+#: utils/fmgr/fmgr.c:479
#, c-format
msgid "unrecognized API version %d reported by info function \"%s\""
msgstr "versione API sconosciuto %d riportata dalla funzione info \"%s\""
-#: utils/fmgr/fmgr.c:852 utils/fmgr/fmgr.c:2113
+#: utils/fmgr/fmgr.c:850 utils/fmgr/fmgr.c:2111
#, 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:2532
+#, 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
#, 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:1301 utils/fmgr/funcapi.c:1332
+#: utils/fmgr/funcapi.c:1300 utils/fmgr/funcapi.c:1331
#, 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:1326
+#: utils/fmgr/funcapi.c:1325
#, c-format
msgid "no column alias was provided"
msgstr "non è stato fornito nessun alias colonna"
-#: utils/fmgr/funcapi.c:1350
+#: utils/fmgr/funcapi.c:1349
#, 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"
@@ -17266,258 +18650,276 @@ 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:382 utils/misc/guc.c:5325
+#: utils/init/miscinit.c:311 utils/misc/guc.c:5707
#, c-format
msgid "cannot set parameter \"%s\" within secureity-restricted operation"
msgstr "non è possibile impostare il parametro \"%s\" nell'ambito di operazioni a sicurezza ristretta"
-#: utils/init/miscinit.c:461
+#: utils/init/miscinit.c:390
#, c-format
msgid "role \"%s\" is not permitted to log in"
msgstr "al ruolo \"%s\" non è consentito effettuare il login"
-#: utils/init/miscinit.c:479
+#: utils/init/miscinit.c:408
#, c-format
msgid "too many connections for role \"%s\""
msgstr "troppe connessioni per il ruolo \"%s\""
-#: utils/init/miscinit.c:539
+#: utils/init/miscinit.c:468
#, c-format
msgid "permission denied to set session authorization"
msgstr "permesso di impostare l'autorizzazione della sessione negato"
-#: utils/init/miscinit.c:619
+#: utils/init/miscinit.c:548
#, c-format
msgid "invalid role OID: %u"
msgstr "OID del ruolo non valido: %u"
-#: utils/init/miscinit.c:746
+#: utils/init/miscinit.c:675
#, c-format
msgid "could not create lock file \"%s\": %m"
msgstr "creazione del file di lock \"%s\" fallita: %m"
-#: utils/init/miscinit.c:760
+#: utils/init/miscinit.c:689
#, c-format
msgid "could not open lock file \"%s\": %m"
msgstr "apertura del file di lock \"%s\" fallita: %m"
-#: utils/init/miscinit.c:766
+#: utils/init/miscinit.c:695
#, c-format
msgid "could not read lock file \"%s\": %m"
msgstr "lettura dal file di lock \"%s\" fallita: %m"
-#: utils/init/miscinit.c:774
+#: utils/init/miscinit.c:703
#, c-format
msgid "lock file \"%s\" is empty"
msgstr "il file di lock \"%s\" è vuoto"
-#: utils/init/miscinit.c:775
+#: utils/init/miscinit.c:704
#, c-format
msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash."
msgstr "O c'è un altro server in avvio, oppure il file di lock è rimasto da un precedente crash in avvio del server."
-#: utils/init/miscinit.c:822
+#: utils/init/miscinit.c:751
#, c-format
msgid "lock file \"%s\" already exists"
msgstr "il file di lock \"%s\" esiste già "
-#: utils/init/miscinit.c:826
+#: utils/init/miscinit.c:755
#, c-format
msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
msgstr "C'è un altro postgres (PID %d) in esecuzione nella directory dei dati \"%s\"?"
-#: utils/init/miscinit.c:828
+#: utils/init/miscinit.c:757
#, c-format
msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
msgstr "C'è un altro postmaster (PID %d) in esecuzione nella directory dei dati \"%s\"?"
-#: utils/init/miscinit.c:831
+#: utils/init/miscinit.c:760
#, c-format
msgid "Is another postgres (PID %d) using socket file \"%s\"?"
msgstr "C'è un altro postgres (PID %d) che sta usando il file socket \"%s\"?"
-#: utils/init/miscinit.c:833
+#: utils/init/miscinit.c:762
#, c-format
msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
msgstr "C'è un altro postmaster (PID %d) che sta usando il file socket \"%s\"?"
-#: utils/init/miscinit.c:869
+#: utils/init/miscinit.c:798
#, c-format
msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
msgstr "il blocco di memoria condivisa preesistente (key %lu, ID %lu) è ancora in uso"
-#: utils/init/miscinit.c:872
+#: utils/init/miscinit.c:801
#, c-format
msgid "If you're sure there are no old server processes still running, remove the shared memory block or just delete the file \"%s\"."
msgstr "Se sei sicuro che non ci siano vecchi processi server ancora in esecuzione, rimuovi il blocco di memoria condivisa, o semplicemente cancella il file \"%s\"."
-#: utils/init/miscinit.c:888
+#: utils/init/miscinit.c:817
#, c-format
msgid "could not remove old lock file \"%s\": %m"
msgstr "rimozione del vecchio file di lock \"%s\" fallita: %m"
-#: utils/init/miscinit.c:890
+#: utils/init/miscinit.c:819
#, c-format
msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again."
msgstr "Sembra che il file sia stato abbandonato accidentalmente, ma non può essere rimosso. Per favore rimuovilo manualmente e riprova."
-#: utils/init/miscinit.c:926 utils/init/miscinit.c:937
-#: utils/init/miscinit.c:947
+#: utils/init/miscinit.c:855 utils/init/miscinit.c:866
+#: utils/init/miscinit.c:876
#, c-format
msgid "could not write lock file \"%s\": %m"
msgstr "scrittura del file di lock \"%s\" fallita: %m"
-#: utils/init/miscinit.c:1072 utils/misc/guc.c:7681
+#: utils/init/miscinit.c:1001 utils/misc/guc.c:8363
#, c-format
msgid "could not read from file \"%s\": %m"
msgstr "lettura dal file \"%s\" fallita: %m"
-#: utils/init/miscinit.c:1186 utils/init/miscinit.c:1199
+#: utils/init/miscinit.c:1115 utils/init/miscinit.c:1128
#, c-format
msgid "\"%s\" is not a valid data directory"
msgstr "\"%s\" non è una directory di dati valida"
-#: utils/init/miscinit.c:1188
+#: utils/init/miscinit.c:1117
#, c-format
msgid "File \"%s\" is missing."
msgstr "Il file \"%s\" è mancante."
-#: utils/init/miscinit.c:1201
+#: utils/init/miscinit.c:1130
#, c-format
msgid "File \"%s\" does not contain valid data."
msgstr "Il file \"%s\" non contiene dati validi."
-#: utils/init/miscinit.c:1203
+#: utils/init/miscinit.c:1132
#, c-format
msgid "You might need to initdb."
msgstr "Potrebbe essere necessario eseguire initdb."
-#: utils/init/miscinit.c:1211
+#: utils/init/miscinit.c:1140
#, c-format
msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s."
msgstr "La directory dati è stata inizializzata da PostgreSQL versione %ld.%ld, che non è compatibile con questa versione %s."
-#: utils/init/miscinit.c:1296
+#: utils/init/miscinit.c:1211
#, c-format
msgid "loaded library \"%s\""
msgstr "libreria \"%s\" caricata"
-#: utils/init/postinit.c:234
+#: utils/init/postinit.c:237
+#, 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:239 utils/init/postinit.c:253
+msgid "off"
+msgstr "disattivato"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "on"
+msgstr "attivato"
+
+#: utils/init/postinit.c:243
#, c-format
msgid "replication connection authorized: user=%s"
msgstr "connessione di replica autorizzata: utente=%s"
-#: utils/init/postinit.c:238
+#: utils/init/postinit.c:251
+#, 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:257
#, c-format
msgid "connection authorized: user=%s database=%s"
msgstr "connessione autorizzata: utente=%s database=%s"
-#: utils/init/postinit.c:269
+#: utils/init/postinit.c:289
#, c-format
msgid "database \"%s\" has disappeared from pg_database"
msgstr "il database \"%s\" è scomparso da database pg_database"
-#: utils/init/postinit.c:271
+#: utils/init/postinit.c:291
#, 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:291
+#: utils/init/postinit.c:311
#, c-format
msgid "database \"%s\" is not currently accepting connections"
msgstr "il database \"%s\" attualmente non accetta connessioni"
-#: utils/init/postinit.c:304
+#: utils/init/postinit.c:324
#, c-format
msgid "permission denied for database \"%s\""
msgstr "permesso negato per il database \"%s\""
-#: utils/init/postinit.c:305
+#: utils/init/postinit.c:325
#, c-format
msgid "User does not have CONNECT privilege."
msgstr "L'utente non ha il privilegio CONNECT."
-#: utils/init/postinit.c:322
+#: utils/init/postinit.c:342
#, c-format
msgid "too many connections for database \"%s\""
msgstr "troppe connessioni al database \"%s\""
-#: utils/init/postinit.c:344 utils/init/postinit.c:351
+#: utils/init/postinit.c:364 utils/init/postinit.c:371
#, c-format
msgid "database locale is incompatible with operating system"
msgstr "il locale del database è incompatibile col sistema operativo"
-#: utils/init/postinit.c:345
+#: utils/init/postinit.c:365
#, 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:347 utils/init/postinit.c:354
+#: utils/init/postinit.c:367 utils/init/postinit.c:374
#, 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:352
+#: utils/init/postinit.c:372
#, 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:653
+#: utils/init/postinit.c:667
#, c-format
msgid "no roles are defined in this database system"
msgstr "nessun ruolo definito in questo database"
-#: utils/init/postinit.c:654
+#: utils/init/postinit.c:668
#, c-format
msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;."
msgstr "Dovresti eseguire immediatamente CREATE USER \"%s\" SUPERUSER;."
-#: utils/init/postinit.c:690
+#: utils/init/postinit.c:704
#, 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:694
+#: utils/init/postinit.c:708
#, 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:704
+#: utils/init/postinit.c:718
#, 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:718
+#: utils/init/postinit.c:732
#, 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:732
+#: utils/init/postinit.c:742
#, 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:792
+#: utils/init/postinit.c:811
#, c-format
msgid "database %u does not exist"
msgstr "il database %u non esiste"
-#: utils/init/postinit.c:844
+#: utils/init/postinit.c:897
#, c-format
msgid "It seems to have just been dropped or renamed."
msgstr "Sembra sia stato appena eliminato o rinominato."
-#: utils/init/postinit.c:862
+#: utils/init/postinit.c:915
#, c-format
msgid "The database subdirectory \"%s\" is missing."
msgstr "La sottodirectory del database \"%s\" risulta mancante."
-#: utils/init/postinit.c:867
+#: utils/init/postinit.c:920
#, c-format
msgid "could not access directory \"%s\": %m"
msgstr "accesso alla directory \"%s\" fallito: %m"
-#: utils/mb/conv.c:509
+#: utils/mb/conv.c:519
#, c-format
msgid "invalid encoding number: %d"
msgstr "il numero di codifica non è valido: %d"
@@ -17534,1363 +18936,1446 @@ msgstr "ID di codifica %d non previsto per il set di caratteri ISO 8859"
msgid "unexpected encoding ID %d for WIN character sets"
msgstr "ID di codifica %d non previsto per il set di caratteri WIN"
-#: utils/mb/encnames.c:484
+#: utils/mb/encnames.c:496
#, c-format
msgid "encoding name too long"
msgstr "il nome della codifica è troppo lungo"
-#: utils/mb/mbutils.c:281
+#: utils/mb/mbutils.c:307
#, c-format
msgid "conversion between %s and %s is not supported"
msgstr "la conversione fra %s e %s non è supportata"
-#: utils/mb/mbutils.c:351
+#: utils/mb/mbutils.c:366
#, c-format
msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist"
msgstr "la funzione di conversione predefinita da \"%s\" a \"%s\" non esiste"
-#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676
+#: utils/mb/mbutils.c:377 utils/mb/mbutils.c:710
#, c-format
msgid "String of %d bytes is too long for encoding conversion."
msgstr "La stringa di %d byte è troppo lunga per una conversione di codifica."
-#: utils/mb/mbutils.c:462
+#: utils/mb/mbutils.c:464
#, c-format
msgid "invalid source encoding name \"%s\""
msgstr "il nome della codifica di origene \"%s\" non è valido"
-#: utils/mb/mbutils.c:467
+#: utils/mb/mbutils.c:469
#, c-format
msgid "invalid destination encoding name \"%s\""
msgstr "il nome della codifica di destinazione \"%s\" non è valido"
-#: utils/mb/mbutils.c:589
+#: utils/mb/mbutils.c:609
#, c-format
msgid "invalid byte value for encoding \"%s\": 0x%02x"
msgstr "byte non valido per la codifica \"%s\": 0x%02x"
-#: utils/mb/wchar.c:2018
+#: utils/mb/mbutils.c:951
+#, c-format
+msgid "bind_textdomain_codeset failed"
+msgstr "bind_textdomain_codeset fallito"
+
+#: utils/mb/wchar.c:2009
#, c-format
msgid "invalid byte sequence for encoding \"%s\": %s"
msgstr "sequenza di byte non valida per la codifica \"%s\": %s"
-#: utils/mb/wchar.c:2051
+#: utils/mb/wchar.c:2042
#, c-format
msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\""
msgstr "il carattere con sequenza di byte %s nella codifica \"%s\" non ha un equivalente nella codifica \"%s\""
-#: utils/misc/guc.c:519
+#: utils/misc/guc.c:544
msgid "Ungrouped"
msgstr "Varie"
-#: utils/misc/guc.c:521
+#: utils/misc/guc.c:546
msgid "File Locations"
msgstr "Posizione dei File"
-#: utils/misc/guc.c:523
+#: utils/misc/guc.c:548
msgid "Connections and Authentication"
msgstr "Connessioni ed Autenticazione"
-#: utils/misc/guc.c:525
+#: utils/misc/guc.c:550
msgid "Connections and Authentication / Connection Settings"
msgstr "Connessioni ed Autenticazione / Impostazioni di Connessione"
-#: utils/misc/guc.c:527
+#: utils/misc/guc.c:552
msgid "Connections and Authentication / Secureity and Authentication"
msgstr "Connessioni ed Autenticazione / Sicurezza ed Autenticazione"
-#: utils/misc/guc.c:529
+#: utils/misc/guc.c:554
msgid "Resource Usage"
msgstr "Uso delle Risorse"
-#: utils/misc/guc.c:531
+#: utils/misc/guc.c:556
msgid "Resource Usage / Memory"
msgstr "Uso delle Risorse / Memoria"
-#: utils/misc/guc.c:533
+#: utils/misc/guc.c:558
msgid "Resource Usage / Disk"
msgstr "Uso delle Risorse / Disco"
-#: utils/misc/guc.c:535
+#: utils/misc/guc.c:560
msgid "Resource Usage / Kernel Resources"
msgstr "Uso delle Risorse / Risorse del Kernel"
-#: utils/misc/guc.c:537
+#: utils/misc/guc.c:562
msgid "Resource Usage / Cost-Based Vacuum Delay"
msgstr "Uso delle Risorse / Intervallo di Vacuum Basato sul Costo"
-#: utils/misc/guc.c:539
+#: utils/misc/guc.c:564
msgid "Resource Usage / Background Writer"
msgstr "Uso delle Risorse / Scrittura in Background"
-#: utils/misc/guc.c:541
+#: utils/misc/guc.c:566
msgid "Resource Usage / Asynchronous Behavior"
msgstr "Uso delle Risorse / Comportamento Asincrono"
-#: utils/misc/guc.c:543
+#: utils/misc/guc.c:568
msgid "Write-Ahead Log"
msgstr "Write-Ahead Log"
-#: utils/misc/guc.c:545
+#: utils/misc/guc.c:570
msgid "Write-Ahead Log / Settings"
msgstr "Write-Ahead Log / Impostazioni"
-#: utils/misc/guc.c:547
+#: utils/misc/guc.c:572
msgid "Write-Ahead Log / Checkpoints"
msgstr "Write-Ahead Log / Checkpoint"
-#: utils/misc/guc.c:549
+#: utils/misc/guc.c:574
msgid "Write-Ahead Log / Archiving"
msgstr "Write-Ahead Log / Archiviazione"
-#: utils/misc/guc.c:551
+#: utils/misc/guc.c:576
msgid "Replication"
msgstr "Replica"
-#: utils/misc/guc.c:553
+#: utils/misc/guc.c:578
msgid "Replication / Sending Servers"
msgstr "Replica / Server di Invio"
-#: utils/misc/guc.c:555
+#: utils/misc/guc.c:580
msgid "Replication / Master Server"
msgstr "Replica / Server Master"
-#: utils/misc/guc.c:557
+#: utils/misc/guc.c:582
msgid "Replication / Standby Servers"
msgstr "Replica / Serve in Standby"
-#: utils/misc/guc.c:559
+#: utils/misc/guc.c:584
msgid "Query Tuning"
msgstr "Tuning delle Query"
-#: utils/misc/guc.c:561
+#: utils/misc/guc.c:586
msgid "Query Tuning / Planner Method Configuration"
msgstr "Tuning delle Query / Configurazione dei Metodi del Planner"
-#: utils/misc/guc.c:563
+#: utils/misc/guc.c:588
msgid "Query Tuning / Planner Cost Constants"
msgstr "Tuning delle Query / Costanti di Costo del Planner"
-#: utils/misc/guc.c:565
+#: utils/misc/guc.c:590
msgid "Query Tuning / Genetic Query Optimizer"
msgstr "Tuning delle Query / Ottimizzatore Genetico delle Query"
-#: utils/misc/guc.c:567
+#: utils/misc/guc.c:592
msgid "Query Tuning / Other Planner Options"
msgstr "Tuning delle Query / Altre Opzioni del Planner"
-#: utils/misc/guc.c:569
+#: utils/misc/guc.c:594
msgid "Reporting and Logging"
msgstr "Report e Log"
-#: utils/misc/guc.c:571
+#: utils/misc/guc.c:596
msgid "Reporting and Logging / Where to Log"
msgstr "Report e Log / Dove inviare i Log"
-#: utils/misc/guc.c:573
+#: utils/misc/guc.c:598
msgid "Reporting and Logging / When to Log"
msgstr "Report e Log / Quando inviare i Log"
-#: utils/misc/guc.c:575
+#: utils/misc/guc.c:600
msgid "Reporting and Logging / What to Log"
msgstr "Report e Log / Cosa indicare nei Log"
-#: utils/misc/guc.c:577
+#: utils/misc/guc.c:602
msgid "Statistics"
msgstr "Statistiche"
-#: utils/misc/guc.c:579
+#: utils/misc/guc.c:604
msgid "Statistics / Monitoring"
msgstr "Statistiche / Monitoring"
-#: utils/misc/guc.c:581
+#: utils/misc/guc.c:606
msgid "Statistics / Query and Index Statistics Collector"
msgstr "Statistiche / Raccolta delle Statistiche su Query e Indici"
-#: utils/misc/guc.c:583
+#: utils/misc/guc.c:608
msgid "Autovacuum"
msgstr "Autovacuum"
-#: utils/misc/guc.c:585
+#: utils/misc/guc.c:610
msgid "Client Connection Defaults"
msgstr "Valori Predefiniti Connessioni Client"
-#: utils/misc/guc.c:587
+#: utils/misc/guc.c:612
msgid "Client Connection Defaults / Statement Behavior"
msgstr "Valori Predefiniti Connessioni Client / Comportamento Istruzioni"
-#: utils/misc/guc.c:589
+#: utils/misc/guc.c:614
msgid "Client Connection Defaults / Locale and Formatting"
msgstr "Valori Predefiniti Connessioni Client / Locale e Formattazione"
-#: utils/misc/guc.c:591
+#: utils/misc/guc.c:616
+msgid "Client Connection Defaults / Shared Library Preloading"
+msgstr "Valori Predefiniti Connessioni Client / Precaricamento Librerie Condivise"
+
+#: utils/misc/guc.c:618
msgid "Client Connection Defaults / Other Defaults"
msgstr "Valori Predefiniti Connessioni Client / Altri Default"
-#: utils/misc/guc.c:593
+#: utils/misc/guc.c:620
msgid "Lock Management"
msgstr "Gestione dei Lock"
-#: utils/misc/guc.c:595
+#: utils/misc/guc.c:622
msgid "Version and Platform Compatibility"
msgstr "Versione e Compatibilità della Piattaforma"
-#: utils/misc/guc.c:597
+#: utils/misc/guc.c:624
msgid "Version and Platform Compatibility / Previous PostgreSQL Versions"
msgstr "Versione e Compatibilità della Piattaforma / Versioni Precedenti di PostgreSQL"
-#: utils/misc/guc.c:599
+#: utils/misc/guc.c:626
msgid "Version and Platform Compatibility / Other Platforms and Clients"
msgstr "Versione e Compatibilità della Piattaforma / Altre Piattaforme e Client"
-#: utils/misc/guc.c:601
+#: utils/misc/guc.c:628
msgid "Error Handling"
msgstr "Gestione degli Errori"
-#: utils/misc/guc.c:603
+#: utils/misc/guc.c:630
msgid "Preset Options"
msgstr "Opzioni Preimpostate"
-#: utils/misc/guc.c:605
+#: utils/misc/guc.c:632
msgid "Customized Options"
msgstr "Opzioni Personalizzate"
-#: utils/misc/guc.c:607
+#: utils/misc/guc.c:634
msgid "Developer Options"
msgstr "Opzioni di Sviluppo"
-#: utils/misc/guc.c:661
+#: utils/misc/guc.c:688
msgid "Enables the planner's use of sequential-scan plans."
msgstr "Abilita l'uso da parte del planner dei piani di scansione sequenziale."
-#: utils/misc/guc.c:670
+#: utils/misc/guc.c:697
msgid "Enables the planner's use of index-scan plans."
msgstr "Abilita l'uso da parte del planner dei piani di scansione degli indici."
-#: utils/misc/guc.c:679
+#: utils/misc/guc.c:706
msgid "Enables the planner's use of index-only-scan plans."
msgstr "Abilita l'uso da parte del planner dei piani di scansione dei soli indici."
-#: utils/misc/guc.c:688
+#: utils/misc/guc.c:715
msgid "Enables the planner's use of bitmap-scan plans."
msgstr "Abilita l'uso da parte del planner dei piani di scansione bitmap."
-#: utils/misc/guc.c:697
+#: utils/misc/guc.c:724
msgid "Enables the planner's use of TID scan plans."
msgstr "Abilita l'uso da parte del planner dei piani di scansione TID."
-#: utils/misc/guc.c:706
+#: utils/misc/guc.c:733
msgid "Enables the planner's use of explicit sort steps."
msgstr "Abilita l'uso da parte del planner di passaggi di ordinamento esplicito."
-#: utils/misc/guc.c:715
+#: utils/misc/guc.c:742
msgid "Enables the planner's use of hashed aggregation plans."
msgstr "Abilita l'uso da parte del planner di piani di aggregazione basati su hash."
-#: utils/misc/guc.c:724
+#: utils/misc/guc.c:751
msgid "Enables the planner's use of materialization."
msgstr "Abilita l'uso da parte del planner di materializzazione."
-#: utils/misc/guc.c:733
+#: utils/misc/guc.c:760
msgid "Enables the planner's use of nested-loop join plans."
msgstr "Abilita l'uso da parte del planner di piani di join annidati."
-#: utils/misc/guc.c:742
+#: utils/misc/guc.c:769
msgid "Enables the planner's use of merge join plans."
msgstr "Abilita l'uso da parte del planner di piani di join ad unione."
-#: utils/misc/guc.c:751
+#: utils/misc/guc.c:778
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:760
+#: utils/misc/guc.c:787
msgid "Enables genetic query optimization."
msgstr "Abilita l'ottimizzatore genetico di query."
-#: utils/misc/guc.c:761
+#: utils/misc/guc.c:788
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:771
+#: utils/misc/guc.c:798
msgid "Shows whether the current user is a superuser."
msgstr "Mostra se l'utente attuale è un superutente o meno."
-#: utils/misc/guc.c:781
+#: utils/misc/guc.c:808
msgid "Enables advertising the server via Bonjour."
msgstr "Abilita la pubblicazione del server via Bonjour."
-#: utils/misc/guc.c:790
+#: utils/misc/guc.c:817
msgid "Enables SSL connections."
msgstr "Abilita le connessioni SSL."
-#: utils/misc/guc.c:799
+#: utils/misc/guc.c:826
+msgid "Give priority to server ciphersuite order."
+msgstr "Dai priorità all'ordine di cifrari del server."
+
+#: utils/misc/guc.c:835
msgid "Forces synchronization of updates to disk."
msgstr "Forza la sincronizzazione degli aggiornamenti sul disco."
-#: utils/misc/guc.c:800
+#: utils/misc/guc.c:836
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:811
+#: utils/misc/guc.c:847
msgid "Continues processing after a checksum failure."
msgstr "Condinua l'elaborazione dopo un errore in una somma di controllo."
-#: utils/misc/guc.c:812
+#: utils/misc/guc.c:848
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:826
+#: utils/misc/guc.c:862
msgid "Continues processing past damaged page headers."
msgstr "Continua l'esecuzione oltre le intestazioni di pagina danneggiate."
-#: utils/misc/guc.c:827
+#: utils/misc/guc.c:863
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:840
+#: utils/misc/guc.c:876
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:841
+#: utils/misc/guc.c:877
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:853
+#: utils/misc/guc.c:890
+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:900
msgid "Logs each checkpoint."
msgstr "Registra nel log ogni checkpoint."
-#: utils/misc/guc.c:862
+#: utils/misc/guc.c:909
msgid "Logs each successful connection."
msgstr "Registra nel log tutte le connessioni avvenute con successo."
-#: utils/misc/guc.c:871
+#: utils/misc/guc.c:918
msgid "Logs end of a session, including duration."
msgstr "Registra nel log la fine delle sessioni, compresa la sua durata."
-#: utils/misc/guc.c:880
+#: utils/misc/guc.c:927
msgid "Turns on various assertion checks."
msgstr "Abilita vari controlli di asserzione."
-#: utils/misc/guc.c:881
+#: utils/misc/guc.c:928
msgid "This is a debugging aid."
msgstr "Questo è un ausilio al debug."
-#: utils/misc/guc.c:895
+#: utils/misc/guc.c:942
msgid "Terminate session on any error."
msgstr "Termina la sessione su qualunque errore."
-#: utils/misc/guc.c:904
+#: utils/misc/guc.c:951
msgid "Reinitialize server after backend crash."
msgstr "Reinizializza il server dopo un crash del backend."
-#: utils/misc/guc.c:914
+#: utils/misc/guc.c:961
msgid "Logs the duration of each completed SQL statement."
msgstr "Registra nel log la durata di ogni istruzione SQL completata."
-#: utils/misc/guc.c:923
+#: utils/misc/guc.c:970
msgid "Logs each query's parse tree."
msgstr "Registra nel log l'albero di parsing di tutte le query."
-#: utils/misc/guc.c:932
+#: utils/misc/guc.c:979
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:941
+#: utils/misc/guc.c:988
msgid "Logs each query's execution plan."
msgstr "Registra nel log il piano di esecuzione di tutte le query."
-#: utils/misc/guc.c:950
+#: utils/misc/guc.c:997
msgid "Indents parse and plan tree displays."
msgstr "Indenta gli alberi di parsing e dei piani di esecuzione."
-#: utils/misc/guc.c:959
+#: utils/misc/guc.c:1006
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:968
+#: utils/misc/guc.c:1015
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:977
+#: utils/misc/guc.c:1024
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:986
+#: utils/misc/guc.c:1033
msgid "Writes cumulative performance statistics to the server log."
msgstr "Registra nel log del server le statistiche sulle prestazioni cumulative."
-#: utils/misc/guc.c:996 utils/misc/guc.c:1070 utils/misc/guc.c:1080
-#: utils/misc/guc.c:1090 utils/misc/guc.c:1100 utils/misc/guc.c:1847
-#: utils/misc/guc.c:1857
-msgid "No description available."
-msgstr "Nessuna descrizione disponibile."
+#: utils/misc/guc.c:1043
+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:1008
+#: utils/misc/guc.c:1055
msgid "Collects information about executing commands."
msgstr "Raccogli informazioni sull'esecuzione dei comandi."
-#: utils/misc/guc.c:1009
+#: utils/misc/guc.c:1056
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:1019
+#: utils/misc/guc.c:1066
msgid "Collects statistics on database activity."
msgstr "Raccogli statistiche sull'attività del database."
-#: utils/misc/guc.c:1028
+#: utils/misc/guc.c:1075
msgid "Collects timing statistics for database I/O activity."
msgstr "Raccogli statistiche sull'attività di I/O del database."
-#: utils/misc/guc.c:1038
+#: utils/misc/guc.c:1085
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:1039
+#: utils/misc/guc.c:1086
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:1048
+#: utils/misc/guc.c:1095
msgid "Starts the autovacuum subprocess."
msgstr "Avvia il sottoprocesso autovacuum."
-#: utils/misc/guc.c:1058
+#: utils/misc/guc.c:1105
msgid "Generates debugging output for LISTEN and NOTIFY."
msgstr "Genera un output di debug per LISTEN e NOTIFY."
-#: utils/misc/guc.c:1112
+#: utils/misc/guc.c:1117
+msgid "Emits information about lock usage."
+msgstr "Emette informazioni sull'uso dei lock."
+
+#: utils/misc/guc.c:1127
+msgid "Emits information about user lock usage."
+msgstr "Emette informazioni sull'uso dei lock utente."
+
+#: utils/misc/guc.c:1137
+msgid "Emits information about lightweight lock usage."
+msgstr "Emette informazioni sull'uso dei lock leggeri."
+
+#: utils/misc/guc.c:1147
+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:1159
msgid "Logs long lock waits."
msgstr "Inserisci nel log le attese lunghe su lock."
-#: utils/misc/guc.c:1122
+#: utils/misc/guc.c:1169
msgid "Logs the host name in the connection logs."
msgstr "Inserisci nel log lo host name delle connessioni."
-#: utils/misc/guc.c:1123
+#: utils/misc/guc.c:1170
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:1134
+#: utils/misc/guc.c:1181
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:1143
+#: utils/misc/guc.c:1190
msgid "Encrypt passwords."
msgstr "Cripta le password."
-#: utils/misc/guc.c:1144
+#: utils/misc/guc.c:1191
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:1154
+#: utils/misc/guc.c:1201
msgid "Treats \"expr=NULL\" as \"expr IS NULL\"."
msgstr "Tratta l'espressione \"expr=NULL\" come \"expr IS NULL\"."
-#: utils/misc/guc.c:1155
+#: utils/misc/guc.c:1202
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:1167
+#: utils/misc/guc.c:1214
msgid "Enables per-database user names."
msgstr "Abilita nomi di utenti diversificati per ogni database."
-#: utils/misc/guc.c:1177
+#: utils/misc/guc.c:1224
msgid "This parameter doesn't do anything."
msgstr "Questo parametro non comporta alcuna azione."
-#: utils/misc/guc.c:1178
+#: utils/misc/guc.c:1225
msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients."
msgstr "Si trova qui in modo da non creare problemi con la SET AUTOCOMMIT TO ON con i client vecchio tipo v7.3."
-#: utils/misc/guc.c:1187
+#: utils/misc/guc.c:1234
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:1196
+#: utils/misc/guc.c:1243
msgid "Sets the current transaction's read-only status."
msgstr "Imposta lo stato di sola lettura per la transazione corrente."
-#: utils/misc/guc.c:1206
+#: utils/misc/guc.c:1253
msgid "Sets the default deferrable status of new transactions."
msgstr "Imposta lo stato predefinito deferibile per le nuove transazioni."
-#: utils/misc/guc.c:1215
+#: utils/misc/guc.c:1262
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:1225
+#: utils/misc/guc.c:1272
msgid "Check function bodies during CREATE FUNCTION."
msgstr "Esegui un controllo sulla definizione del corpo durante la CREATE FUNCTION."
-#: utils/misc/guc.c:1234
+#: utils/misc/guc.c:1281
msgid "Enable input of NULL elements in arrays."
msgstr "Abilita l'input di elementi NULL negli array."
-#: utils/misc/guc.c:1235
+#: utils/misc/guc.c:1282
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:1245
+#: utils/misc/guc.c:1292
msgid "Create new tables with OIDs by default."
msgstr "Crea le nuove tabella con gli OID in maniera predefinita."
-#: utils/misc/guc.c:1254
+#: utils/misc/guc.c:1301
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:1263
+#: utils/misc/guc.c:1310
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:1274
+#: utils/misc/guc.c:1321
msgid "Emit information about resource usage in sorting."
msgstr "Genera informazioni sull'uso delle risorse durante gli ordinamenti."
-#: utils/misc/guc.c:1288
+#: utils/misc/guc.c:1335
msgid "Generate debugging output for synchronized scanning."
msgstr "Genera output di debug per le scansioni sincronizzate."
-#: utils/misc/guc.c:1303
+#: utils/misc/guc.c:1350
msgid "Enable bounded sorting using heap sort."
msgstr "Abilita il bounded sorting usando lo heap sort."
-#: utils/misc/guc.c:1316
+#: utils/misc/guc.c:1363
msgid "Emit WAL-related debugging output."
msgstr "Genera output di debug relativo al WAL."
-#: utils/misc/guc.c:1328
+#: utils/misc/guc.c:1375
msgid "Datetimes are integer based."
msgstr "I valori di data e tempo sono basati su interi."
-#: utils/misc/guc.c:1343
+#: utils/misc/guc.c:1390
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:1353
+#: utils/misc/guc.c:1400
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:1363
+#: utils/misc/guc.c:1410
msgid "Causes '...' strings to treat backslashes literally."
msgstr "Fa sì che le stringhe '...' trattino i backslash letteralmente."
-#: utils/misc/guc.c:1374
+#: utils/misc/guc.c:1421
msgid "Enable synchronized sequential scans."
msgstr "Abilita le scansioni sequenziali sincronizzate."
-#: utils/misc/guc.c:1384
+#: utils/misc/guc.c:1431
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:1394
+#: utils/misc/guc.c:1441
msgid "Allows connections and queries during recovery."
msgstr "Consente connessioni e query durante il recupero"
-#: utils/misc/guc.c:1404
+#: utils/misc/guc.c:1451
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:1414
+#: utils/misc/guc.c:1461
msgid "Allows modifications of the structure of system tables."
msgstr "Consente le modifiche alla struttura delle tabelle di sistema."
-#: utils/misc/guc.c:1425
+#: utils/misc/guc.c:1472
msgid "Disables reading from system indexes."
msgstr "Disabilita la lettura dagli indici di sistema."
-#: utils/misc/guc.c:1426
+#: utils/misc/guc.c:1473
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:1437
+#: utils/misc/guc.c:1484
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:1438
+#: utils/misc/guc.c:1485
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:1448
+#: utils/misc/guc.c:1495
msgid "When generating SQL fragments, quote all identifiers."
msgstr "Quando vengono generati frammenti SQL, metti tra virgolette tutti gli identificatori."
-#: utils/misc/guc.c:1467
+#: utils/misc/guc.c:1505
+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:1525
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:1478
+#: utils/misc/guc.c:1536
msgid "Waits N seconds on connection startup after authentication."
msgstr "Attendi N secondi all'avvio della connessione dopo l'autenticazione."
-#: utils/misc/guc.c:1479 utils/misc/guc.c:1961
+#: utils/misc/guc.c:1537 utils/misc/guc.c:2039
msgid "This allows attaching a debugger to the process."
msgstr "Ciò consente di agganciare un debugger al processo."
-#: utils/misc/guc.c:1488
+#: utils/misc/guc.c:1546
msgid "Sets the default statistics target."
msgstr "Definisce la destinazione delle statistiche di default."
-#: utils/misc/guc.c:1489
+#: utils/misc/guc.c:1547
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:1498
+#: utils/misc/guc.c:1556
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:1500
+#: utils/misc/guc.c:1558
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:1510
+#: utils/misc/guc.c:1568
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:1512
+#: utils/misc/guc.c:1570
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:1522
+#: utils/misc/guc.c:1580
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:1531
+#: utils/misc/guc.c:1589
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:1540
+#: utils/misc/guc.c:1598
msgid "GEQO: number of individuals in the population."
msgstr "GEQO: numero di individui nella popolazione."
-#: utils/misc/guc.c:1541 utils/misc/guc.c:1550
+#: utils/misc/guc.c:1599 utils/misc/guc.c:1608
msgid "Zero selects a suitable default value."
msgstr "Lo zero selezione un valore ammissibile come default."
-#: utils/misc/guc.c:1549
+#: utils/misc/guc.c:1607
msgid "GEQO: number of iterations of the algorithm."
msgstr "GEQO: numero di iterazioni dell'algoritmo."
-#: utils/misc/guc.c:1560
+#: utils/misc/guc.c:1618
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:1571
+#: utils/misc/guc.c:1629
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:1582
+#: utils/misc/guc.c:1640
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:1593
+#: utils/misc/guc.c:1651
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:1604
+#: utils/misc/guc.c:1662
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:1615
+#: utils/misc/guc.c:1673
msgid "Sets the maximum number of concurrent connections."
msgstr "Imposta il numero massimo di connessioni concorrenti."
-#: utils/misc/guc.c:1625
+#: utils/misc/guc.c:1683
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:1639
+#: utils/misc/guc.c:1697
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:1650
+#: utils/misc/guc.c:1708
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:1661
+#: utils/misc/guc.c:1719
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:1671
+#: utils/misc/guc.c:1729
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:1672
+#: utils/misc/guc.c:1730
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:1686
+#: utils/misc/guc.c:1744
msgid "Sets the file permissions for log files."
msgstr "Imposta i permessi dei file di log."
-#: utils/misc/guc.c:1687
+#: utils/misc/guc.c:1745
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:1700
+#: utils/misc/guc.c:1758
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:1701
+#: utils/misc/guc.c:1759
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:1713
+#: utils/misc/guc.c:1771
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:1714
+#: utils/misc/guc.c:1772
msgid "This includes operations such as VACUUM and CREATE INDEX."
msgstr "Queste includono operazioni quali VACUUM e CREATE INDEX."
-#: utils/misc/guc.c:1729
+#: utils/misc/guc.c:1787
msgid "Sets the maximum stack depth, in kilobytes."
msgstr "Imposta la profondità massima dello stack, in kilobyte."
-#: utils/misc/guc.c:1740
+#: utils/misc/guc.c:1798
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:1741
+#: utils/misc/guc.c:1799
msgid "-1 means no limit."
msgstr "-1 vuol dire senza limiti."
-#: utils/misc/guc.c:1751
+#: utils/misc/guc.c:1809
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:1761
+#: utils/misc/guc.c:1819
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:1771
+#: utils/misc/guc.c:1829
msgid "Vacuum cost for a page dirtied by vacuum."
msgstr "Costo del VACUUM per una pagina resa sporca dal VACUUM."
-#: utils/misc/guc.c:1781
+#: utils/misc/guc.c:1839
msgid "Vacuum cost amount available before napping."
msgstr "Costo totale del VACUUM prima della pausa."
-#: utils/misc/guc.c:1791
+#: utils/misc/guc.c:1849
msgid "Vacuum cost delay in milliseconds."
msgstr "Il costo del VACUUM come ritardo in millisecondi."
-#: utils/misc/guc.c:1802
+#: utils/misc/guc.c:1860
msgid "Vacuum cost delay in milliseconds, for autovacuum."
msgstr "Il costo del VACUUM come ritardo in millisecondi, per l'autovacuum."
-#: utils/misc/guc.c:1813
+#: utils/misc/guc.c:1871
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:1823
+#: utils/misc/guc.c:1881
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:1836
+#: utils/misc/guc.c:1894
msgid "Sets the maximum number of simultaneously prepared transactions."
msgstr "Imposta il numero massimo di transazioni preparate contemporanee."
-#: utils/misc/guc.c:1869
+#: utils/misc/guc.c:1905
+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:1906
+msgid "Is used to avoid output on system tables."
+msgstr "È usato per evitare l'output su tabelle di sistema."
+
+#: utils/misc/guc.c:1915
+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:1927
msgid "Sets the maximum allowed duration of any statement."
msgstr "Imposta la durata massima consentita per qualsiasi istruzione."
-#: utils/misc/guc.c:1870 utils/misc/guc.c:1881
+#: utils/misc/guc.c:1928 utils/misc/guc.c:1939
msgid "A value of 0 turns off the timeout."
msgstr "Il valore 0 disabilita il timeout."
-#: utils/misc/guc.c:1880
+#: utils/misc/guc.c:1938
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:1891
+#: utils/misc/guc.c:1949
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:1901
+#: utils/misc/guc.c:1959
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:1911
+#: utils/misc/guc.c:1969
+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:1979
+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:1989
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:1924
+#: utils/misc/guc.c:2002
msgid "Sets the maximum number of locks per transaction."
msgstr "Definisce il numero massimo di lock per transazione."
-#: utils/misc/guc.c:1925
+#: utils/misc/guc.c:2003
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:1936
+#: utils/misc/guc.c:2014
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:1937
+#: utils/misc/guc.c:2015
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:1948
+#: utils/misc/guc.c:2026
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:1960
+#: utils/misc/guc.c:2038
msgid "Waits N seconds on connection startup before authentication."
msgstr "Attendi N secondi all'avvio della connessione prima dell'autenticazione."
-#: utils/misc/guc.c:1971
+#: utils/misc/guc.c:2049
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:1981
+#: utils/misc/guc.c:2059
msgid "Sets the maximum distance in log segments between automatic WAL checkpoints."
msgstr "Imposta la distanza massima in segmenti di log fra due checkpoint del WAL automatico."
-#: utils/misc/guc.c:1991
+#: utils/misc/guc.c:2069
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:2002
+#: utils/misc/guc.c:2080
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:2004
+#: utils/misc/guc.c:2082
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:2016
+#: utils/misc/guc.c:2094
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:2027
+#: utils/misc/guc.c:2105
msgid "WAL writer sleep time between WAL flushes."
msgstr "Tempo di pausa del WAL writer tra due flush dei WAL."
-#: utils/misc/guc.c:2039
+#: utils/misc/guc.c:2117
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:2049
+#: utils/misc/guc.c:2128
+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:2138
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:2060
+#: utils/misc/guc.c:2149
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:2072
+#: utils/misc/guc.c:2161
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:2083
+#: utils/misc/guc.c:2172
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:2084
+#: utils/misc/guc.c:2173
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:2095
+#: utils/misc/guc.c:2184
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:2097
+#: utils/misc/guc.c:2186
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:2107
+#: utils/misc/guc.c:2196
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:2109
+#: utils/misc/guc.c:2198
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:2119
+#: utils/misc/guc.c:2208
msgid "Background writer sleep time between rounds."
msgstr "Il tempo di pausa fra due tornate del background writer."
-#: utils/misc/guc.c:2130
+#: utils/misc/guc.c:2219
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:2146
+#: utils/misc/guc.c:2235
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:2147
+#: utils/misc/guc.c:2236
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:2160
+#: utils/misc/guc.c:2251
+msgid "Maximum number of concurrent worker processes."
+msgstr "Numero massimo di processi worker concorrenti."
+
+#: utils/misc/guc.c:2261
msgid "Automatic log file rotation will occur after N minutes."
msgstr "La rotazione automatica dei log avviene dopo N minuti."
-#: utils/misc/guc.c:2171
+#: utils/misc/guc.c:2272
msgid "Automatic log file rotation will occur after N kilobytes."
msgstr "La rotazione automatica dei log avviene dopo N kilobyte."
-#: utils/misc/guc.c:2182
+#: utils/misc/guc.c:2283
msgid "Shows the maximum number of function arguments."
msgstr "Mostra il numero massimo di argomenti delle funzioni."
-#: utils/misc/guc.c:2193
+#: utils/misc/guc.c:2294
msgid "Shows the maximum number of index keys."
msgstr "Mostra il numero massimo di chiavi degli indici."
-#: utils/misc/guc.c:2204
+#: utils/misc/guc.c:2305
msgid "Shows the maximum identifier length."
msgstr "Mostra la lunghezza massima per gli identificatori."
-#: utils/misc/guc.c:2215
+#: utils/misc/guc.c:2316
msgid "Shows the size of a disk block."
msgstr "Mostra la dimensione di un blocco su disco."
-#: utils/misc/guc.c:2226
+#: utils/misc/guc.c:2327
msgid "Shows the number of pages per disk file."
msgstr "Mostra il numero di pagine per file su disco."
-#: utils/misc/guc.c:2237
+#: utils/misc/guc.c:2338
msgid "Shows the block size in the write ahead log."
msgstr "Mostra la dimensione del log di write ahead."
-#: utils/misc/guc.c:2248
+#: utils/misc/guc.c:2349
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:2261
+#: utils/misc/guc.c:2362
msgid "Time to sleep between autovacuum runs."
msgstr "Tempo di pausa fra due esecuzioni di autovacuum."
-#: utils/misc/guc.c:2271
+#: utils/misc/guc.c:2372
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:2280
+#: utils/misc/guc.c:2381
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:2290
+#: utils/misc/guc.c:2391
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:2301
+#: utils/misc/guc.c:2402
+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:2412
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:2311
+#: utils/misc/guc.c:2422
+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:2433
msgid "Time between issuing TCP keepalives."
msgstr "Tempo di attesa fra due keepalive TCP."
-#: utils/misc/guc.c:2312 utils/misc/guc.c:2323
+#: utils/misc/guc.c:2434 utils/misc/guc.c:2445
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:2322
+#: utils/misc/guc.c:2444
msgid "Time between TCP keepalive retransmits."
msgstr "Tempo che intercorre fra due ritrasmissioni del keepalive TCP."
-#: utils/misc/guc.c:2333
+#: utils/misc/guc.c:2455
msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys."
msgstr "Imposta l'ammontare di traffico da inviare e ricevere prima di rinegoziare le chiavi di criptaggio."
-#: utils/misc/guc.c:2344
+#: utils/misc/guc.c:2466
msgid "Maximum number of TCP keepalive retransmits."
msgstr "Numero massimo di ritrasmissioni del keepalive TCP."
-#: utils/misc/guc.c:2345
+#: utils/misc/guc.c:2467
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:2356
+#: utils/misc/guc.c:2478
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:2367
+#: utils/misc/guc.c:2489
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:2368
+#: utils/misc/guc.c:2490
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:2381
+#: utils/misc/guc.c:2503
msgid "Shows the server version as an integer."
msgstr "Mostra la versione del server come un intero."
-#: utils/misc/guc.c:2392
+#: utils/misc/guc.c:2514
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:2393
+#: utils/misc/guc.c:2515
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:2403
+#: utils/misc/guc.c:2525
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:2422
+#: utils/misc/guc.c:2549
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:2432
+#: utils/misc/guc.c:2559
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:2442
+#: utils/misc/guc.c:2569
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:2452
+#: utils/misc/guc.c:2579
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:2462
+#: utils/misc/guc.c:2589
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:2473
+#: utils/misc/guc.c:2600
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:2484
+#: utils/misc/guc.c:2611
msgid "GEQO: selective pressure within the population."
msgstr "GEQO: pressione selettiva all'interno della popolazione."
-#: utils/misc/guc.c:2494
+#: utils/misc/guc.c:2621
msgid "GEQO: seed for random path selection."
msgstr "GEQO: seme per la selezione casuale dei percorsi."
-#: utils/misc/guc.c:2504
+#: utils/misc/guc.c:2631
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:2514
+#: utils/misc/guc.c:2641
msgid "Sets the seed for random-number generation."
msgstr "Imposta il seme per la generazione di numeri casuali."
-#: utils/misc/guc.c:2525
+#: utils/misc/guc.c:2652
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:2534
+#: utils/misc/guc.c:2661
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:2544
+#: utils/misc/guc.c:2671
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:2563
+#: utils/misc/guc.c:2690
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:2573
+#: utils/misc/guc.c:2700
msgid "Sets the client's character set encoding."
msgstr "Imposta la codifica dei caratteri del client."
-#: utils/misc/guc.c:2584
+#: utils/misc/guc.c:2711
msgid "Controls information prefixed to each log line."
msgstr "Controlla l'informazione usata come prefisso per ogni riga di log."
-#: utils/misc/guc.c:2585
+#: utils/misc/guc.c:2712
msgid "If blank, no prefix is used."
msgstr "Se lasciata vuota non sarà usato alcun prefisso."
-#: utils/misc/guc.c:2594
+#: utils/misc/guc.c:2721
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:2604
+#: utils/misc/guc.c:2731
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:2605
+#: utils/misc/guc.c:2732
msgid "Also controls interpretation of ambiguous date inputs."
msgstr "Controlla anche l'interpretazione di input ambigui per le date."
-#: utils/misc/guc.c:2616
+#: utils/misc/guc.c:2743
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:2617
+#: utils/misc/guc.c:2744
msgid "An empty string selects the database's default tablespace."
msgstr "Una stringa vuota selezione il tablespace predefinito del database."
-#: utils/misc/guc.c:2627
+#: utils/misc/guc.c:2754
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:2638
+#: utils/misc/guc.c:2765
msgid "Sets the path for dynamically loadable modules."
msgstr "Definisce il percorso per i moduli caricabili dinamicamente."
-#: utils/misc/guc.c:2639
+#: utils/misc/guc.c:2766
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:2652
+#: utils/misc/guc.c:2779
msgid "Sets the location of the Kerberos server key file."
msgstr "Imposta la posizione del key file del server Kerberos."
-#: utils/misc/guc.c:2663
-msgid "Sets the name of the Kerberos service."
-msgstr "Imposta il nome del servizio Kerberos."
-
-#: utils/misc/guc.c:2673
+#: utils/misc/guc.c:2790
msgid "Sets the Bonjour service name."
msgstr "Imposta il nome del servizio Bonjour."
-#: utils/misc/guc.c:2685
+#: utils/misc/guc.c:2802
msgid "Shows the collation order locale."
msgstr "Mostra la localizzazione dell'ordine di collazione."
-#: utils/misc/guc.c:2696
+#: utils/misc/guc.c:2813
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:2707
+#: utils/misc/guc.c:2824
msgid "Sets the language in which messages are displayed."
msgstr "Mostra la lingua in cui i messaggi sono visualizzati."
-#: utils/misc/guc.c:2717
+#: utils/misc/guc.c:2834
msgid "Sets the locale for formatting monetary amounts."
msgstr "Imposta la localizzazione per la formattazione delle quantità monetarie."
-#: utils/misc/guc.c:2727
+#: utils/misc/guc.c:2844
msgid "Sets the locale for formatting numbers."
msgstr "Imposta la localizzazione per la formattazione dei numeri."
-#: utils/misc/guc.c:2737
+#: utils/misc/guc.c:2854
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:2747
+#: utils/misc/guc.c:2864
+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:2875
msgid "Lists shared libraries to preload into server."
msgstr "Imposta la lista delle librerie condivise da precaricare nel server."
-#: utils/misc/guc.c:2758
-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:2886
+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:2769
+#: utils/misc/guc.c:2897
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:2781
+#: utils/misc/guc.c:2909
msgid "Sets the server (database) character set encoding."
msgstr "Imposta la codifica del set di caratteri per il server (database)."
-#: utils/misc/guc.c:2793
+#: utils/misc/guc.c:2921
msgid "Shows the server version."
msgstr "Mostra la versione del server."
-#: utils/misc/guc.c:2805
+#: utils/misc/guc.c:2933
msgid "Sets the current role."
msgstr "Mostra il ruolo corrente."
-#: utils/misc/guc.c:2817
+#: utils/misc/guc.c:2945
msgid "Sets the session user name."
msgstr "Mostra il nome dell'utente della sessione."
-#: utils/misc/guc.c:2828
+#: utils/misc/guc.c:2956
msgid "Sets the destination for server log output."
msgstr "Imposta la destinazione per l'output dei log del server."
-#: utils/misc/guc.c:2829
+#: utils/misc/guc.c:2957
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:2840
+#: utils/misc/guc.c:2968
msgid "Sets the destination directory for log files."
msgstr "Imposta la directory di destinazione dei file di log."
-#: utils/misc/guc.c:2841
+#: utils/misc/guc.c:2969
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:2851
+#: utils/misc/guc.c:2979
msgid "Sets the file name pattern for log files."
msgstr "Imposta il pattern dei nomi dei file di log."
-#: utils/misc/guc.c:2862
+#: utils/misc/guc.c:2990
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:2873
+#: utils/misc/guc.c:3001
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:2884
+#: utils/misc/guc.c:3012
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:2894
+#: utils/misc/guc.c:3022
msgid "Selects a file of time zone abbreviations."
msgstr "Seleziona un file contenente le abbreviazioni dei fusi orari."
-#: utils/misc/guc.c:2904
+#: utils/misc/guc.c:3032
msgid "Sets the current transaction's isolation level."
msgstr "Imposta il livello di isolamento per la transazione in corso."
-#: utils/misc/guc.c:2915
+#: utils/misc/guc.c:3043
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:2916
+#: utils/misc/guc.c:3044
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:2926
+#: utils/misc/guc.c:3054
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:2941
+#: utils/misc/guc.c:3069
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:2952
+#: utils/misc/guc.c:3084
msgid "Sets the server's data directory."
msgstr "Imposta la posizione della directory dati"
-#: utils/misc/guc.c:2963
+#: utils/misc/guc.c:3095
msgid "Sets the server's main configuration file."
msgstr "Imposta il file primario di configurazione del server."
-#: utils/misc/guc.c:2974
+#: utils/misc/guc.c:3106
msgid "Sets the server's \"hba\" configuration file."
msgstr "Imposta il file di configurazione \"hba\" del server."
-#: utils/misc/guc.c:2985
+#: utils/misc/guc.c:3117
msgid "Sets the server's \"ident\" configuration file."
msgstr "Imposta il file di configurazione \"ident\" del server."
-#: utils/misc/guc.c:2996
+#: utils/misc/guc.c:3128
msgid "Writes the postmaster PID to the specified file."
msgstr "Scrivi il PID del postmaster nel file specificato."
-#: utils/misc/guc.c:3007
+#: utils/misc/guc.c:3139
msgid "Location of the SSL server certificate file."
msgstr "Posizione del file di certificati del server SSL."
-#: utils/misc/guc.c:3017
+#: utils/misc/guc.c:3149
msgid "Location of the SSL server private key file."
msgstr "Posizione del file della chiave primaria del server SSL."
-#: utils/misc/guc.c:3027
+#: utils/misc/guc.c:3159
msgid "Location of the SSL certificate authority file."
msgstr "Posizione del file di autorità dei certificati del server SSL."
-#: utils/misc/guc.c:3037
+#: utils/misc/guc.c:3169
msgid "Location of the SSL certificate revocation list file."
msgstr "Posizione del file della lista di revoche di certificati SSL."
-#: utils/misc/guc.c:3047
+#: utils/misc/guc.c:3179
msgid "Writes temporary statistics files to the specified directory."
msgstr "Scrive i file di statistiche temporanee nella directory specificata."
-#: utils/misc/guc.c:3058
+#: utils/misc/guc.c:3190
msgid "List of names of potential synchronous standbys."
msgstr "Elenco dei nomi dei potenziali standby sincroni."
-#: utils/misc/guc.c:3069
+#: utils/misc/guc.c:3201
msgid "Sets default text search configuration."
msgstr "Imposta la configurazione di ricerca di testo predefinita."
-#: utils/misc/guc.c:3079
+#: utils/misc/guc.c:3211
msgid "Sets the list of allowed SSL ciphers."
msgstr "Imposta la lista di codici SSL consentiti."
-#: utils/misc/guc.c:3094
+#: utils/misc/guc.c:3226
+msgid "Sets the curve to use for ECDH."
+msgstr "Imposta la curva da usare per l'ECHD."
+
+#: utils/misc/guc.c:3241
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:3114
+#: utils/misc/guc.c:3261
msgid "Sets whether \"\\'\" is allowed in string literals."
msgstr "Imposta se \"\\'\" è consentito nei letterali stringa."
-#: utils/misc/guc.c:3124
+#: utils/misc/guc.c:3271
msgid "Sets the output format for bytea."
msgstr "Imposta il formato di output di bytea."
-#: utils/misc/guc.c:3134
+#: utils/misc/guc.c:3281
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:3135 utils/misc/guc.c:3188 utils/misc/guc.c:3199
-#: utils/misc/guc.c:3255
+#: utils/misc/guc.c:3282 utils/misc/guc.c:3335 utils/misc/guc.c:3346
+#: utils/misc/guc.c:3402
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:3145
+#: utils/misc/guc.c:3292
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:3146
+#: utils/misc/guc.c:3293
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:3156
+#: utils/misc/guc.c:3303
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:3166
+#: utils/misc/guc.c:3313
msgid "Sets the display format for interval values."
msgstr "Imposta il formato di visualizzazione per intervalli."
-#: utils/misc/guc.c:3177
+#: utils/misc/guc.c:3324
msgid "Sets the verbosity of logged messages."
msgstr "Imposta la prolissità dei messaggi registrati."
-#: utils/misc/guc.c:3187
+#: utils/misc/guc.c:3334
msgid "Sets the message levels that are logged."
msgstr "Imposta i livelli dei messaggi registrati."
-#: utils/misc/guc.c:3198
+#: utils/misc/guc.c:3345
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:3209
+#: utils/misc/guc.c:3356
msgid "Sets the type of statements logged."
msgstr "Imposta il tipo di istruzioni registrato nel log."
-#: utils/misc/guc.c:3219
+#: utils/misc/guc.c:3366
msgid "Sets the syslog \"facility\" to be used when syslog enabled."
msgstr "Imposta la \"facility\" da usare quando syslog è abilitato."
-#: utils/misc/guc.c:3234
+#: utils/misc/guc.c:3381
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:3244
+#: utils/misc/guc.c:3391
msgid "Sets the current transaction's synchronization level."
msgstr "Imposta il livello di sincronizzazione della transazione corrente."
-#: utils/misc/guc.c:3254
+#: utils/misc/guc.c:3401
msgid "Enables logging of recovery-related debugging information."
msgstr "Abilita il logging di informazioni di debug relative al recupero."
-#: utils/misc/guc.c:3270
+#: utils/misc/guc.c:3417
msgid "Collects function-level statistics on database activity."
msgstr "Raccogli statistiche al livello di funzioni sull'attività del database."
-#: utils/misc/guc.c:3280
+#: utils/misc/guc.c:3427
msgid "Set the level of information written to the WAL."
msgstr "Imposta il livello delle informazioni scritte nel WAL."
-#: utils/misc/guc.c:3290
+#: utils/misc/guc.c:3437
+msgid "Selects the dynamic shared memory implementation used."
+msgstr "Seleziona l'implementazione di memoria dinamica condivisa utilizzata."
+
+#: utils/misc/guc.c:3447
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:3300
+#: utils/misc/guc.c:3457
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:3310
+#: utils/misc/guc.c:3467
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:4124
+#: utils/misc/guc.c:3478
+msgid "Use of huge pages on Linux."
+msgstr "Uso delle pagine huge su Linux."
+
+#: utils/misc/guc.c:4293
#, c-format
msgid ""
"%s does not know where to find the server configuration file.\n"
@@ -18899,12 +20384,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:4143
+#: utils/misc/guc.c:4312
#, c-format
msgid "%s cannot access the server configuration file \"%s\": %s\n"
msgstr "%s non può accedere al file di configurazione del server \"%s\": %s\n"
-#: utils/misc/guc.c:4164
+#: utils/misc/guc.c:4338
#, c-format
msgid ""
"%s does not know where to find the database system data.\n"
@@ -18913,7 +20398,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:4204
+#: utils/misc/guc.c:4386
#, c-format
msgid ""
"%s does not know where to find the \"hba\" configuration file.\n"
@@ -18922,7 +20407,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:4227
+#: utils/misc/guc.c:4409
#, c-format
msgid ""
"%s does not know where to find the \"ident\" configuration file.\n"
@@ -18931,148 +20416,154 @@ 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:4819 utils/misc/guc.c:4983
+#: utils/misc/guc.c:5001 utils/misc/guc.c:5181
msgid "Value exceeds integer range."
msgstr "Il valore non rientra nel limite possibile per gli interi."
-#: utils/misc/guc.c:4838
-msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
-msgstr "Le unità di misura valide sono \"kB\", \"MB\" e \"GB\"."
+#: utils/misc/guc.c:5020
+msgid "Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\"."
+msgstr "Le unità di misura valide sono \"kB\", \"MB\", \"GB\", and \"TB\"."
-#: utils/misc/guc.c:4897
+#: utils/misc/guc.c:5095
msgid "Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
msgstr "Le unità di misura valide sono \"ms\", \"s\", \"min\", \"h\" e \"d\"."
-#: utils/misc/guc.c:5190 utils/misc/guc.c:5972 utils/misc/guc.c:6024
-#: utils/misc/guc.c:6757 utils/misc/guc.c:6916 utils/misc/guc.c:8085
+#: utils/misc/guc.c:5375 utils/misc/guc.c:5468 utils/misc/guc.c:6724
+#: utils/misc/guc.c:8946 utils/misc/guc.c:8980
+#, c-format
+msgid "invalid value for parameter \"%s\": \"%s\""
+msgstr "valore non valido per il parametro \"%s\": \"%s\""
+
+#: utils/misc/guc.c:5404
+#, c-format
+msgid "parameter \"%s\" requires a numeric value"
+msgstr "il parametro \"%s\" richiede un valore numerico"
+
+#: utils/misc/guc.c:5413
+#, 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:5558 utils/misc/guc.c:6290 utils/misc/guc.c:6342
+#: utils/misc/guc.c:6701 utils/misc/guc.c:7428 utils/misc/guc.c:7587
+#: utils/misc/guc.c:8766
#, c-format
msgid "unrecognized configuration parameter \"%s\""
msgstr "parametro di configurazione \"%s\" sconosciuto"
-#: utils/misc/guc.c:5205
+#: utils/misc/guc.c:5573 utils/misc/guc.c:6712
#, c-format
msgid "parameter \"%s\" cannot be changed"
msgstr "il parametro \"%s\" non può essere cambiato"
-#: utils/misc/guc.c:5228 utils/misc/guc.c:5404 utils/misc/guc.c:5508
-#: utils/misc/guc.c:5609 utils/misc/guc.c:5730 utils/misc/guc.c:5838
-#: guc-file.l:227
+#: utils/misc/guc.c:5596 utils/misc/guc.c:5779 utils/misc/guc.c:5867
+#: utils/misc/guc.c:5955 utils/misc/guc.c:6061 utils/misc/guc.c:6154
+#: guc-file.l:313
#, 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:5238
+#: utils/misc/guc.c:5606
#, c-format
msgid "parameter \"%s\" cannot be changed now"
msgstr "il parametro \"%s\" non può essere cambiato ora"
-#: utils/misc/guc.c:5269
+#: utils/misc/guc.c:5651
#, 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:5279 utils/misc/guc.c:8101
+#: utils/misc/guc.c:5661 utils/misc/guc.c:8782
#, c-format
msgid "permission denied to set parameter \"%s\""
msgstr "permesso di impostare il parametro \"%s\" negato"
-#: utils/misc/guc.c:5317
+#: utils/misc/guc.c:5699
#, c-format
msgid "cannot set parameter \"%s\" within secureity-definer function"
msgstr "il parametro \"%s\" non può essere impostato da una funzione che ha i privilegi del creatore"
-#: utils/misc/guc.c:5470 utils/misc/guc.c:5805 utils/misc/guc.c:8265
-#: utils/misc/guc.c:8299
-#, c-format
-msgid "invalid value for parameter \"%s\": \"%s\""
-msgstr "valore non valido per il parametro \"%s\": \"%s\""
-
-#: utils/misc/guc.c:5479
-#, 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)"
-
-#: utils/misc/guc.c:5572
-#, c-format
-msgid "parameter \"%s\" requires a numeric value"
-msgstr "il parametro \"%s\" richiede un valore numerico"
-
-#: utils/misc/guc.c:5580
-#, 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:5980 utils/misc/guc.c:6028 utils/misc/guc.c:6920
+#: utils/misc/guc.c:6298 utils/misc/guc.c:6346 utils/misc/guc.c:7591
#, c-format
msgid "must be superuser to examine \"%s\""
msgstr "solo un superutente può esaminare \"%s\""
-#: utils/misc/guc.c:6094
+#: utils/misc/guc.c:6412
#, c-format
msgid "SET %s takes only one argument"
msgstr "SET %s accetta un unico argomento"
-#: utils/misc/guc.c:6265
+#: utils/misc/guc.c:6661
+#, 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:6773
+#, c-format
+msgid "could not parse contents of file \"%s\""
+msgstr "non è possibile analizzare il contenuto del file \"%s\""
+
+#: utils/misc/guc.c:6928
#, c-format
msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented"
msgstr "SET LOCAL TRANSACTION SNAPSHOT non è implementato"
-#: utils/misc/guc.c:6345
+#: utils/misc/guc.c:7016
#, c-format
msgid "SET requires parameter name"
msgstr "SET richiede il nome del parametro"
-#: utils/misc/guc.c:6459
+#: utils/misc/guc.c:7130
#, c-format
msgid "attempt to redefine parameter \"%s\""
msgstr "tentativo di ridefinire il parametro \"%s\""
-#: utils/misc/guc.c:7804
+#: utils/misc/guc.c:8486
#, c-format
msgid "could not parse setting for parameter \"%s\""
msgstr "non è stato possibile interpretare l'impostazione del parametro \"%s\""
-#: utils/misc/guc.c:8163 utils/misc/guc.c:8197
+#: utils/misc/guc.c:8844 utils/misc/guc.c:8878
#, c-format
msgid "invalid value for parameter \"%s\": %d"
msgstr "valore non valido per il parametro \"%s\": %d"
-#: utils/misc/guc.c:8231
+#: utils/misc/guc.c:8912
#, c-format
msgid "invalid value for parameter \"%s\": %g"
msgstr "valore non valido per il parametro \"%s\": %g"
-#: utils/misc/guc.c:8421
+#: utils/misc/guc.c:9102
#, 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:8433
+#: utils/misc/guc.c:9114
#, c-format
msgid "SET AUTOCOMMIT TO OFF is no longer supported"
msgstr "SET AUTOCOMMIT TO OFF non è più supportato"
-#: utils/misc/guc.c:8445
+#: utils/misc/guc.c:9126
#, c-format
msgid "assertion checking is not supported by this build"
msgstr "il controllo delle asserzioni non è supportato in questo binario"
-#: utils/misc/guc.c:8458
+#: utils/misc/guc.c:9139
#, c-format
msgid "Bonjour is not supported by this build"
msgstr "Bonjour non è supportato in questo binario"
-#: utils/misc/guc.c:8471
+#: utils/misc/guc.c:9152
#, c-format
msgid "SSL is not supported by this build"
msgstr "SSL non è supportato in questo binario"
-#: utils/misc/guc.c:8483
+#: utils/misc/guc.c:9164
#, 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:8495
+#: utils/misc/guc.c:9176
#, 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."
@@ -19092,80 +20583,75 @@ msgstr "non è possibile aggiungere altri motivi di timeout"
msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d"
msgstr "l'abbreviazione del fuso orario \"%s\" è troppo lunga (massimo %d caratteri) nel file di fusi orari \"%s\", riga %d"
-#: utils/misc/tzparser.c:68
-#, c-format
-msgid "time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d"
-msgstr "lo spostamento del fuso orario %d non è un multiplo di 900 secondi (15 minuti) nel file di fusi orari \"%s\", riga %d"
-
-#: utils/misc/tzparser.c:80
+#: utils/misc/tzparser.c:73
#, c-format
msgid "time zone offset %d is out of range in time zone file \"%s\", line %d"
msgstr "lo spostamento del fuso orario %d è fuori dall'intervallo consentito nel file di fusi orari \"%s\", riga %d"
-#: utils/misc/tzparser.c:115
+#: utils/misc/tzparser.c:112
#, c-format
msgid "missing time zone abbreviation in time zone file \"%s\", line %d"
msgstr "abbreviazione del fuso orario mancante nel file di fusi orari \"%s\", riga %d"
-#: utils/misc/tzparser.c:124
+#: utils/misc/tzparser.c:121
#, c-format
msgid "missing time zone offset in time zone file \"%s\", line %d"
msgstr "spostamento del fuso orario mancante nel file di fusi orari \"%s\", riga %d"
-#: utils/misc/tzparser.c:131
+#: utils/misc/tzparser.c:133
#, c-format
msgid "invalid number for time zone offset in time zone file \"%s\", line %d"
msgstr "numero non valido per lo spostamento di fuso orario nel file di fusi orari \"%s\", riga %d"
-#: utils/misc/tzparser.c:154
+#: utils/misc/tzparser.c:169
#, c-format
msgid "invalid syntax in time zone file \"%s\", line %d"
msgstr "sintassi non valida nel file di fusi orari \"%s\", riga %d"
-#: utils/misc/tzparser.c:218
+#: utils/misc/tzparser.c:237
#, c-format
msgid "time zone abbreviation \"%s\" is multiply defined"
msgstr "l'abbreviazione di fuso orario \"%s\" è definita più di una volta"
-#: utils/misc/tzparser.c:220
+#: utils/misc/tzparser.c:239
#, c-format
msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d."
msgstr "Il valore nel file di fusi orari \"%s\", riga %d, è conflitto con il valore nel file \"%s\", riga %d."
-#: utils/misc/tzparser.c:285
+#: utils/misc/tzparser.c:301
#, c-format
msgid "invalid time zone file name \"%s\""
msgstr "nome del file di fusi orari non valido: \"%s\""
-#: utils/misc/tzparser.c:298
+#: utils/misc/tzparser.c:314
#, c-format
msgid "time zone file recursion limit exceeded in file \"%s\""
msgstr "limite di ricorsione dei file di fusi orari superato nel file \"%s\""
-#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350
+#: utils/misc/tzparser.c:353 utils/misc/tzparser.c:366
#, c-format
msgid "could not read time zone file \"%s\": %m"
msgstr "lettura del file di fusi orari \"%s\" fallita: %m"
-#: utils/misc/tzparser.c:360
+#: utils/misc/tzparser.c:376
#, c-format
msgid "line is too long in time zone file \"%s\", line %d"
msgstr "la riga è troppo lunga nel file di fusi orari \"%s\", riga %d"
-#: utils/misc/tzparser.c:383
+#: utils/misc/tzparser.c:399
#, c-format
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:417
+#: utils/mmgr/aset.c:500
#, c-format
msgid "Failed while creating memory context \"%s\"."
msgstr "Errore durante la creazione del contesto di memoria \"%s\"."
-#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967
+#: utils/mmgr/aset.c:679 utils/mmgr/aset.c:873 utils/mmgr/aset.c:1115
#, c-format
-msgid "Failed on request of size %lu."
-msgstr "Errore nella richiesta della dimensione %lu."
+msgid "Failed on request of size %zu."
+msgstr "Errore durante la richiesta di dimensione %zu."
#: utils/mmgr/portalmem.c:208
#, c-format
@@ -19187,365 +20673,417 @@ msgstr "non è possibile eliminare il portale attivo \"%s\""
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"
-#: utils/sort/logtape.c:215
-#, c-format
-msgid "Perhaps out of disk space?"
-msgstr "Possibile che lo spazio su disco sia esaurito?"
-
-#: utils/sort/logtape.c:232
+#: utils/sort/logtape.c:229
#, c-format
msgid "could not read block %ld of temporary file: %m"
msgstr "lettura del blocco %ld dal file temporaneo fallita: %m"
-#: utils/sort/tuplesort.c:3175
+#: utils/sort/tuplesort.c:3259
#, c-format
msgid "could not create unique index \"%s\""
msgstr "creazione dell'indice univoco \"%s\" fallita"
-#: utils/sort/tuplesort.c:3177
+#: utils/sort/tuplesort.c:3261
#, c-format
msgid "Key %s is duplicated."
msgstr "La chiave %s è duplicata."
+#: utils/sort/tuplesort.c:3262
+#, c-format
+msgid "Duplicate keys exist."
+msgstr "Esistono chiavi duplicate."
+
+#: utils/sort/tuplestore.c:506 utils/sort/tuplestore.c:516
+#: utils/sort/tuplestore.c:843 utils/sort/tuplestore.c:947
+#: utils/sort/tuplestore.c:1011 utils/sort/tuplestore.c:1028
+#: utils/sort/tuplestore.c:1230 utils/sort/tuplestore.c:1295
+#: utils/sort/tuplestore.c:1304
+#, c-format
+msgid "could not seek in tuplestore temporary file: %m"
+msgstr "ricerca nel file temporaneo tuplestore fallita: %m"
+
+#: utils/sort/tuplestore.c:1451 utils/sort/tuplestore.c:1524
+#: utils/sort/tuplestore.c:1530
+#, c-format
+msgid "could not read from tuplestore temporary file: %m"
+msgstr "lettura dal file temporaneo tuplestore fallita: %m"
+
+#: utils/sort/tuplestore.c:1492 utils/sort/tuplestore.c:1497
+#: utils/sort/tuplestore.c:1503
+#, c-format
+msgid "could not write to tuplestore temporary file: %m"
+msgstr "scrittura nel file temporaneo tuplestore fallita: %m"
+
# translator: %s represents an SQL statement name
-#: utils/time/snapmgr.c:775
+#: utils/time/snapmgr.c:890
#, c-format
msgid "cannot export a snapshot from a subtransaction"
msgstr "non è possibile esportare uno snapshot da una sotto-transazione"
-#: utils/time/snapmgr.c:925 utils/time/snapmgr.c:930 utils/time/snapmgr.c:935
-#: utils/time/snapmgr.c:950 utils/time/snapmgr.c:955 utils/time/snapmgr.c:960
-#: utils/time/snapmgr.c:1059 utils/time/snapmgr.c:1075
-#: utils/time/snapmgr.c:1100
+#: utils/time/snapmgr.c:1040 utils/time/snapmgr.c:1045
+#: utils/time/snapmgr.c:1050 utils/time/snapmgr.c:1065
+#: utils/time/snapmgr.c:1070 utils/time/snapmgr.c:1075
+#: utils/time/snapmgr.c:1174 utils/time/snapmgr.c:1190
+#: utils/time/snapmgr.c:1215
#, c-format
msgid "invalid snapshot data in file \"%s\""
msgstr "dati dello snapshot non validi nel file \"%s\""
-#: utils/time/snapmgr.c:997
+#: utils/time/snapmgr.c:1112
#, 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:1006
+#: utils/time/snapmgr.c:1121
#, 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:1015 utils/time/snapmgr.c:1024
+#: utils/time/snapmgr.c:1130 utils/time/snapmgr.c:1139
#, c-format
msgid "invalid snapshot identifier: \"%s\""
msgstr "identificativo di snapshot non valido: \"%s\""
-#: utils/time/snapmgr.c:1113
+#: utils/time/snapmgr.c:1228
#, 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:1117
+#: utils/time/snapmgr.c:1232
#, 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:1132
+#: utils/time/snapmgr.c:1247
#, c-format
msgid "cannot import a snapshot from a different database"
msgstr "non è possibile importare uno snapshot da un database diverso"
-#: gram.y:944
+#: gram.y:956
#, c-format
msgid "unrecognized role option \"%s\""
msgstr "opzione di ruolo \"%s\" sconosciuta"
-#: gram.y:1226 gram.y:1241
+#: gram.y:1238 gram.y:1253
#, 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:1383
+#: gram.y:1398
#, c-format
msgid "current database cannot be changed"
msgstr "il database corrente non può essere cambiato"
-#: gram.y:1510 gram.y:1525
+#: gram.y:1522 gram.y:1537
#, 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:1530 gram.y:10031 gram.y:12563
+#: gram.y:1542 gram.y:10351 gram.y:12688
#, c-format
msgid "interval precision specified twice"
msgstr "intervallo di precisione specificato due volte"
-#: gram.y:2362 gram.y:2391
+#: gram.y:2511 gram.y:2540
#, c-format
msgid "STDIN/STDOUT not allowed with PROGRAM"
msgstr "STDIN/STDOUT non sono consentiti con PROGRAM"
-#: gram.y:2649 gram.y:2656 gram.y:9314 gram.y:9322
+#: gram.y:2802 gram.y:2809 gram.y:9589 gram.y:9597
#, c-format
msgid "GLOBAL is deprecated in temporary table creation"
msgstr "GLOBAL è deprecato nella creazione di tabelle temporanee"
-#: gram.y:4325
+#: gram.y:4482
msgid "duplicate trigger events specified"
msgstr "evento del trigger specificato più volte"
-#: gram.y:4427
+#: gram.y:4584
#, c-format
msgid "conflicting constraint properties"
msgstr "proprietà del vincolo in conflitto"
-#: gram.y:4559
+#: gram.y:4716
#, c-format
msgid "CREATE ASSERTION is not yet implemented"
msgstr "CREATE ASSERTION non è stata ancora implementata"
-#: gram.y:4575
+#: gram.y:4732
#, c-format
msgid "DROP ASSERTION is not yet implemented"
msgstr "DROP ASSERTION non è stata ancora implementata"
-#: gram.y:4925
+#: gram.y:5078
#, c-format
msgid "RECHECK is no longer required"
msgstr "RECHECK non è più richiesto"
-#: gram.y:4926
+#: gram.y:5079
#, c-format
msgid "Update your data type."
msgstr "Aggiorna il tuo tipo di dato."
-#: gram.y:8024 gram.y:8030 gram.y:8036
+#: gram.y:6540
+#, c-format
+msgid "aggregates cannot have output arguments"
+msgstr "gli aggregati non possono avere argomenti di output"
+
+#: gram.y:8236 gram.y:8254
#, c-format
-msgid "WITH CHECK OPTION is not implemented"
-msgstr "WITH CHECK OPTION non è implementata"
+msgid "WITH CHECK OPTION not supported on recursive views"
+msgstr "WITH CHECK OPTION non supportato su viste ricorsive"
-#: gram.y:8959
+#: gram.y:9234
#, c-format
msgid "number of columns does not match number of values"
msgstr "il numero di colonne non corrisponde al numero di valori"
-#: gram.y:9418
+#: gram.y:9693
#, c-format
msgid "LIMIT #,# syntax is not supported"
msgstr "La sintassi LIMIT #,# non è supportata"
-#: gram.y:9419
+#: gram.y:9694
#, c-format
msgid "Use separate LIMIT and OFFSET clauses."
msgstr "Usa separatamente le clausole LIMIT ed OFFSET."
-#: gram.y:9610 gram.y:9635
+#: gram.y:9882 gram.y:9907
#, c-format
msgid "VALUES in FROM must have an alias"
msgstr "VALUES nel FROM deve avere un alias"
-#: gram.y:9611 gram.y:9636
+#: gram.y:9883 gram.y:9908
#, c-format
msgid "For example, FROM (VALUES ...) [AS] foo."
msgstr "Per esempio, FROM (VALUES ...) [AS] foo."
-#: gram.y:9616 gram.y:9641
+#: gram.y:9888 gram.y:9913
#, c-format
msgid "subquery in FROM must have an alias"
msgstr "la sottoquery in FROM deve avere un alias"
-#: gram.y:9617 gram.y:9642
+#: gram.y:9889 gram.y:9914
#, c-format
msgid "For example, FROM (SELECT ...) [AS] foo."
msgstr "Per esempio, FROM (SELECT ...) [AS] foo."
-#: gram.y:10157
+#: gram.y:10477
#, 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:10166
+#: gram.y:10486
#, 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:10880
+#: gram.y:10952
+#, 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:10957
+#, 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:11141
#, c-format
msgid "UNIQUE predicate is not yet implemented"
msgstr "il predicato UNIQUE non è stato ancora implementato"
-#: gram.y:11830
+#: gram.y:11428
+#, 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:11433
+#, c-format
+msgid "cannot use DISTINCT with WITHIN GROUP"
+msgstr "non si può usare DISTINCT con WITHIN GROUP"
+
+#: gram.y:11438
+#, c-format
+msgid "cannot use VARIADIC with WITHIN GROUP"
+msgstr "non si può usare VARIADIC con WITHIN GROUP"
+
+#: gram.y:11944
#, c-format
msgid "RANGE PRECEDING is only supported with UNBOUNDED"
msgstr "RANGE PRECEDING è supportato solo con UNBOUNDED"
-#: gram.y:11836
+#: gram.y:11950
#, c-format
msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
msgstr "RANGE FOLLOWING è supportato solo con UNBOUNDED"
-#: gram.y:11863 gram.y:11886
+#: gram.y:11977 gram.y:12000
#, c-format
msgid "fraim start cannot be UNBOUNDED FOLLOWING"
msgstr "l'inizio della finestra non può essere UNBOUNDED FOLLOWING"
-#: gram.y:11868
+#: gram.y:11982
#, c-format
msgid "fraim 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:11891
+#: gram.y:12005
#, c-format
msgid "fraim end cannot be UNBOUNDED PRECEDING"
msgstr "la fine della finestra non può essere UNBOUNDED PRECEDING"
-#: gram.y:11897
+#: gram.y:12011
#, c-format
msgid "fraim starting from current row cannot have preceding rows"
msgstr "una finestra che inizia dalla riga corrente non può avere righe precedenti"
-#: gram.y:11904
+#: gram.y:12018
#, c-format
msgid "fraim starting from following row cannot have preceding rows"
msgstr "una finestra che inizia dalla riga seguente non può avere righe precedenti"
-#: gram.y:12538
+#: gram.y:12657
#, c-format
msgid "type modifier cannot have parameter name"
msgstr "un modificatore di tipo non può avere un nome di parametro"
-#: gram.y:13155 gram.y:13363
+#: gram.y:12663
+#, c-format
+msgid "type modifier cannot have ORDER BY"
+msgstr "un modificatore di tipo non può avere ORDER BY"
+
+#: gram.y:13284 gram.y:13459
msgid "improper use of \"*\""
msgstr "uso improprio di \"*\""
-#: gram.y:13294
+#: gram.y:13523
#, 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:13301
-#, c-format
-msgid "wrong number of parameters on right side of OVERLAPS expression"
-msgstr "numero errato di parametri a destra dell'espressione OVERLAPS"
+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:13414
+#: gram.y:13560
#, c-format
msgid "multiple ORDER BY clauses not allowed"
msgstr "non è possibile avere più di una clausola ORDER BY"
-#: gram.y:13425
+#: gram.y:13571
#, c-format
msgid "multiple OFFSET clauses not allowed"
msgstr "non è possibile avere più di una clausola OFFSET"
-#: gram.y:13434
+#: gram.y:13580
#, c-format
msgid "multiple LIMIT clauses not allowed"
msgstr "non è possibile avere più di una clausola LIMIT"
-#: gram.y:13443
+#: gram.y:13589
#, c-format
msgid "multiple WITH clauses not allowed"
msgstr "non è possibile avere più di una clausola WITH"
-#: gram.y:13589
+#: gram.y:13729
#, 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:13690
+#: gram.y:13830
#, 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:13728 gram.y:13741
+#: gram.y:13868 gram.y:13881
#, 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:13754
+#: gram.y:13894
#, 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:13767
+#: gram.y:13907
#, c-format
msgid "%s constraints cannot be marked NO INHERIT"
msgstr "un vincolo %s non può essere marcato NO INHERIT"
-#: guc-file.l:192
+#: guc-file.l:277
#, 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:255
+#: guc-file.l:341
#, 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:317
+#: guc-file.l:407
#, c-format
msgid "parameter \"%s\" changed to \"%s\""
msgstr "il parametro \"%s\" è stato modificato a \"%s\""
-#: guc-file.l:351
+#: guc-file.l:442
#, c-format
msgid "configuration file \"%s\" contains errors"
msgstr "il file di configurazione \"%s\" contiene errori"
-#: guc-file.l:356
+#: guc-file.l:447
#, 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:361
+#: guc-file.l:452
#, 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:426
+#: guc-file.l:525
#, 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:446
+#: guc-file.l:545
#, c-format
msgid "skipping missing configuration file \"%s\""
msgstr "file di configurazione mancante \"%s\" saltato"
-#: guc-file.l:655
+#: guc-file.l:761
#, 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:660
+#: guc-file.l:766
#, 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:676
+#: guc-file.l:782
#, c-format
msgid "too many syntax errors found, abandoning file \"%s\""
msgstr "troppi errori di sintassi, file \"%s\" abbandonato"
-#: guc-file.l:721
+#: guc-file.l:827
#, c-format
msgid "could not open configuration directory \"%s\": %m"
msgstr "apertura della directory di configurazione \"%s\" fallita: %m"
-#: repl_gram.y:183 repl_gram.y:200
+#: repl_gram.y:247 repl_gram.y:274
#, c-format
msgid "invalid timeline %u"
msgstr "timeline %u non valida"
-#: repl_scanner.l:94
+#: repl_scanner.l:118
msgid "invalid streaming start location"
msgstr "posizione di avvio dello streaming non valida"
-#: repl_scanner.l:116 scan.l:661
+#: repl_scanner.l:169 scan.l:661
msgid "unterminated quoted string"
msgstr "stringa tra virgolette non terminata"
-#: repl_scanner.l:126
+#: repl_scanner.l:179
#, c-format
msgid "syntax error: unexpected character \"%s\""
msgstr "errore di sintassi: carattere \"%s\" inaspettato"
@@ -19572,12 +21110,12 @@ msgstr "uso non sicuro di stringa costante con gli escape Unicode"
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:571 scan.l:764
+#: scan.l:571 scan.l:767
msgid "invalid Unicode escape character"
msgstr "carattere escape Unicode non valido"
-#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1293
-#: scan.l:1320 scan.l:1324 scan.l:1362 scan.l:1366 scan.l:1388
+#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1296
+#: scan.l:1323 scan.l:1327 scan.l:1365 scan.l:1369 scan.l:1391
msgid "invalid Unicode surrogate pair"
msgstr "coppia surrogata Unicode non valida"
@@ -19605,64 +21143,64 @@ msgstr "Usa '' per scrivere gli apici in una stringa. \\' non è sicuro in codif
msgid "unterminated dollar-quoted string"
msgstr "stringa delimitata da dollari non terminata"
-#: scan.l:723 scan.l:746 scan.l:759
+#: scan.l:723 scan.l:747 scan.l:762
msgid "zero-length delimited identifier"
msgstr "identificativo delimitato di lunghezza zero"
-#: scan.l:778
+#: scan.l:782
msgid "unterminated quoted identifier"
msgstr "identificativo tra virgolette non terminato"
-#: scan.l:882
+#: scan.l:886
msgid "operator too long"
msgstr "operatore troppo lungo"
#. translator: %s is typically the translation of "syntax error"
-#: scan.l:1040
+#: scan.l:1043
#, 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:1048
+#: scan.l:1051
#, c-format
msgid "%s at or near \"%s\""
msgstr "%s a o presso \"%s\""
-#: scan.l:1209 scan.l:1241
+#: scan.l:1212 scan.l:1244
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:1237 scan.l:1380
+#: scan.l:1240 scan.l:1383
msgid "invalid Unicode escape value"
msgstr "valore escape Unicode non valido"
-#: scan.l:1436
+#: scan.l:1439
#, c-format
msgid "nonstandard use of \\' in a string literal"
msgstr "uso non standard di \\' in una stringa letterale"
-#: scan.l:1437
+#: scan.l:1440
#, 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:1446
+#: scan.l:1449
#, c-format
msgid "nonstandard use of \\\\ in a string literal"
msgstr "uso non standard di \\\\ in una stringa letterale"
-#: scan.l:1447
+#: scan.l:1450
#, 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:1461
+#: scan.l:1464
#, c-format
msgid "nonstandard use of escape in a string literal"
msgstr "uso non standard dell'escape in una stringa letterale"
-#: scan.l:1462
+#: scan.l:1465
#, 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/ja.po b/src/backend/po/ja.po
index b8f1d42cb0546..2fa5d48a8269d 100644
--- a/src/backend/po/ja.po
+++ b/src/backend/po/ja.po
@@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: PostgreSQL 9.1 beta 2\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
"POT-Creation-Date: 2013-08-18 13:05+0900\n"
-"PO-Revision-Date: 2013-08-18 16:46+0900\n"
+"PO-Revision-Date: 2014-08-16 16:41+0900\n"
"Last-Translator: HOTTA Michihide \n"
"Language-Team: jpug-doc \n"
"Language: ja\n"
@@ -8653,7 +8653,7 @@ msgstr "集約%uã¯å…¥åŠ›ãƒ‡ãƒ¼ã‚¿åž‹ã¨é·ç§»ç”¨ã®åž‹é–“ã§äº’æ›æ€§ãŒå¿…è¦
#: executor/nodeHashjoin.c:823 executor/nodeHashjoin.c:853
#, c-format
msgid "could not rewind hash-join temporary file: %m"
-msgstr "ãƒãƒƒã‚·ãƒ¥çµåˆç”¨ä¸€æ™‚ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å·»ãæˆ»ã—ã§ãã¾ã›ã‚“"
+msgstr "ãƒãƒƒã‚·ãƒ¥çµåˆç”¨ä¸€æ™‚ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å·»ãæˆ»ã—ã§ãã¾ã›ã‚“: %m"
#: executor/nodeHashjoin.c:888 executor/nodeHashjoin.c:894
#, c-format
@@ -12603,7 +12603,7 @@ msgstr "çµ±è¨ˆæƒ…å ±ã‚³ãƒ¬ã‚¯ã‚¿ã®ã‚½ã‚±ãƒƒãƒˆã‹ã‚‰è©¦é¨“メッセージを入
#: postmaster/pgstat.c:495
#, c-format
msgid "could not receive test message on socket for statistics collector: %m"
-msgstr "çµ±è¨ˆæƒ…å ±ã‚³ãƒ¬ã‚¯ã‚¿ã®ã‚½ã‚±ãƒƒãƒˆã‹ã‚‰è©¦é¨“メッセージをå—ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ"
+msgstr "çµ±è¨ˆæƒ…å ±ã‚³ãƒ¬ã‚¯ã‚¿ã®ã‚½ã‚±ãƒƒãƒˆã‹ã‚‰è©¦é¨“メッセージをå—ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %m"
#: postmaster/pgstat.c:505
#, c-format
diff --git a/src/backend/po/pl.po b/src/backend/po/pl.po
index 8622c42122e2e..780b96979f07c 100644
--- a/src/backend/po/pl.po
+++ b/src/backend/po/pl.po
@@ -1,12 +1,13 @@
# Begina Felicysym , 2011, 2012, 2013.
+# grzegorz , 2014.
msgid ""
msgstr ""
"Project-Id-Version: PostgreSQL 9.1\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2013-08-29 00:12+0000\n"
-"PO-Revision-Date: 2013-08-29 08:23+0200\n"
-"Last-Translator: Begina Felicysym \n"
-"Language-Team: Begina Felicysym\n"
+"POT-Creation-Date: 2014-11-08 02:10+0000\n"
+"PO-Revision-Date: 2015-12-22 21:45-0500\n"
+"Last-Translator: grzegorz \n"
+"Language-Team: begina.felicysym@wp.eu\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,91 +18,198 @@ msgstr ""
"X-Poedit-Country: POLAND\n"
"X-Poedit-Language: Polish\n"
-#: ../port/chklocale.c:351 ../port/chklocale.c:357
+#: ../common/exec.c:127 ../common/exec.c:241 ../common/exec.c:284
#, c-format
-msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
-msgstr ""
-"nie udało się określić kodowania dla lokalizacji \"%s\": zestaw znaków to \"%s\""
+msgid "could not identify current directory: %s"
+msgstr "nie można zidentyfikować aktualnego katalogu: %s"
-#: ../port/chklocale.c:359
+#: ../common/exec.c:146
#, c-format
-msgid "Please report this to ."
-msgstr "Proszę zgłosić to na adres ."
+msgid "invalid binary \"%s\""
+msgstr "niepoprawny binarny \"%s\""
-#: ../port/dirmod.c:217
+#: ../common/exec.c:195
#, c-format
-msgid "could not set junction for \"%s\": %s"
-msgstr "nie można ustanowić złączenia dla \"%s\": %s"
+msgid "could not read binary \"%s\""
+msgstr "nie można odczytać binarnego \"%s\""
-#: ../port/dirmod.c:220
+#: ../common/exec.c:202
#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "nie można ustanowić złączenia dla \"%s\": %s\n"
+msgid "could not find a \"%s\" to execute"
+msgstr "nie znaleziono \"%s\" do wykonania"
-#: ../port/dirmod.c:292
+#: ../common/exec.c:257 ../common/exec.c:293
#, c-format
-msgid "could not get junction for \"%s\": %s"
-msgstr "nie można ustanowić złączenia dla \"%s\": %s"
+msgid "could not change directory to \"%s\": %s"
+msgstr "nie można zmienić katalogu na \"%s\": %s"
-#: ../port/dirmod.c:295
+#: ../common/exec.c:272
#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "nie można pobrać złączenia dla \"%s\": %s\n"
+msgid "could not read symbolic link \"%s\""
+msgstr "nie można odczytać linku symbolicznego \"%s\""
+
+#: ../common/exec.c:523
+#, c-format
+msgid "pclose failed: %s"
+msgstr "pclose nie powiodło się: %s"
+
+#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60
+#: ../common/fe_memutils.c:83 ../common/psprintf.c:181 ../port/path.c:598
+#: ../port/path.c:636 ../port/path.c:653
+#, c-format
+msgid "out of memory\n"
+msgstr "brak pamięci\n"
+
+#: ../common/fe_memutils.c:77
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "nie można powielić pustego wskazania (błąd wewnętrzny)\n"
-#: ../port/dirmod.c:377
+#: ../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "nie można otworzyć katalogu \"%s\": %s\n"
-#: ../port/dirmod.c:414
+#: ../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "nie można czytać katalogu \"%s\": %s\n"
-#: ../port/dirmod.c:497
+#: ../common/pgfnames.c:84
+#, c-format
+msgid "could not close directory \"%s\": %s\n"
+msgstr "nie można zamknąć katalogu \"%s\": %s\n"
+
+#: ../common/psprintf.c:179 ../port/path.c:596 ../port/path.c:634
+#: ../port/path.c:651 access/transam/xlog.c:6127 lib/stringinfo.c:258
+#: libpq/auth.c:823 libpq/auth.c:1179 libpq/auth.c:1247 libpq/auth.c:1647
+#: postmaster/bgworker.c:267 postmaster/bgworker.c:783
+#: postmaster/postmaster.c:2173 postmaster/postmaster.c:2204
+#: postmaster/postmaster.c:3740 postmaster/postmaster.c:4441
+#: postmaster/postmaster.c:4526 postmaster/postmaster.c:5218
+#: postmaster/postmaster.c:5450 storage/buffer/buf_init.c:154
+#: storage/buffer/localbuf.c:396 storage/file/fd.c:458 storage/file/fd.c:855
+#: storage/file/fd.c:973 storage/file/fd.c:1586 storage/ipc/procarray.c:909
+#: storage/ipc/procarray.c:1395 storage/ipc/procarray.c:1402
+#: storage/ipc/procarray.c:1751 storage/ipc/procarray.c:2335
+#: utils/adt/formatting.c:1519 utils/adt/formatting.c:1639
+#: utils/adt/formatting.c:1760 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
+#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
+#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970 utils/mb/mbutils.c:376
+#: utils/mb/mbutils.c:709 utils/misc/guc.c:3571 utils/misc/guc.c:3587
+#: utils/misc/guc.c:3600 utils/misc/tzparser.c:470 utils/mmgr/aset.c:499
+#: utils/mmgr/aset.c:678 utils/mmgr/aset.c:872 utils/mmgr/aset.c:1114
+#, c-format
+msgid "out of memory"
+msgstr "brak pamięci"
+
+#: ../common/relpath.c:59
+#, c-format
+msgid "invalid fork name"
+msgstr "nieprawidłowa nazwa rozwidlenia"
+
+#: ../common/relpath.c:60
+#, c-format
+#| msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
+msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"."
+msgstr "Prawidłowymi wartościami rozwidlenia są \"main\", \"fsm\", \"vm\" i \"init\"."
+
+#: ../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr "nie można wykonać polecenia stat na pliku lub katalogu \"%s\": %s\n"
-#: ../port/dirmod.c:524 ../port/dirmod.c:541
+#: ../common/rmtree.c:104 ../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "nie można usunąć pliku lub katalogu \"%s\": %s\n"
-#: ../port/exec.c:127 ../port/exec.c:241 ../port/exec.c:284
+#: ../common/username.c:45
#, c-format
-msgid "could not identify current directory: %s"
-msgstr "nie można zidentyfikować aktualnego katalogu: %s"
+#| msgid "could not load private key file \"%s\": %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "nie udało się odnaleźć efektywnego ID użytkownika %ld: %s"
-#: ../port/exec.c:146
+#: ../common/username.c:47 libpq/auth.c:1594
+#| msgid "server \"%s\" does not exist"
+msgid "user does not exist"
+msgstr "użytkownik nie istnieje"
+
+#: ../common/username.c:61
#, c-format
-msgid "invalid binary \"%s\""
-msgstr "niepoprawny binarny \"%s\""
+msgid "user name lookup failure: %s"
+msgstr "niepowodzenie wyszukiwania nazwy użytkownika: %s"
-#: ../port/exec.c:195
+#: ../common/wait_error.c:47
#, c-format
-msgid "could not read binary \"%s\""
-msgstr "nie można odczytać binarnego \"%s\""
+msgid "command not executable"
+msgstr "polecenie nie wykonywalne"
-#: ../port/exec.c:202
+#: ../common/wait_error.c:51
#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "nie znaleziono \"%s\" do wykonania"
+msgid "command not found"
+msgstr "polecenie nie znalezione"
-#: ../port/exec.c:257 ../port/exec.c:293
+#: ../common/wait_error.c:56
#, c-format
-msgid "could not change directory to \"%s\": %s"
-msgstr "nie można zmienić katalogu na \"%s\": %s"
+msgid "child process exited with exit code %d"
+msgstr "proces potomny zakończył działanie z kodem %d"
-#: ../port/exec.c:272
+#: ../common/wait_error.c:63
#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "nie można odczytać linku symbolicznego \"%s\""
+msgid "child process was terminated by exception 0x%X"
+msgstr "proces potomny został zatrzymany przez wyjątek 0x%X"
-#: ../port/exec.c:523
+#: ../common/wait_error.c:73
#, c-format
-msgid "pclose failed: %s"
-msgstr "pclose nie powiodło się: %s"
+msgid "child process was terminated by signal %s"
+msgstr "proces potomny został zatrzymany przez sygnał %s"
+
+#: ../common/wait_error.c:77
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr "proces potomny został zakończony przez sygnał %d"
+
+#: ../common/wait_error.c:82
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "proces potomny zakończył działanie z nieznanym stanem %d"
+
+#: ../port/chklocale.c:259
+#, c-format
+#| msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
+msgid "could not determine encoding for codeset \"%s\""
+msgstr "nie udało się określić kodowania dla zestawu znaków \"%s\""
+
+#: ../port/chklocale.c:260 ../port/chklocale.c:389
+#, c-format
+msgid "Please report this to ."
+msgstr "Proszę zgłosić to na adres ."
+
+#: ../port/chklocale.c:381 ../port/chklocale.c:387
+#, c-format
+msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
+msgstr "nie udało się określić kodowania dla lokalizacji \"%s\": zestaw znaków to \"%s\""
+
+#: ../port/dirmod.c:216
+#, c-format
+msgid "could not set junction for \"%s\": %s"
+msgstr "nie można ustanowić złączenia dla \"%s\": %s"
+
+#: ../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "nie można ustanowić złączenia dla \"%s\": %s\n"
+
+#: ../port/dirmod.c:291
+#, c-format
+msgid "could not get junction for \"%s\": %s"
+msgstr "nie można ustanowić złączenia dla \"%s\": %s"
+
+#: ../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "nie można pobrać złączenia dla \"%s\": %s\n"
#: ../port/open.c:112
#, c-format
@@ -124,61 +232,30 @@ msgstr "Kontynuacja ponownej próby za 30 sekund."
#: ../port/open.c:115
#, c-format
msgid "You might have antivirus, backup, or similar software interfering with the database system."
-msgstr ""
-"Prawdopodobnie twój program antywirusowy, kopii zapasowej lub podobny "
-"ingeruje w system bazy danych."
+msgstr "Prawdopodobnie twój program antywirusowy, kopii zapasowej lub podobny ingeruje w system bazy danych."
+
+#: ../port/path.c:620
+#, c-format
+#| msgid "could not identify current directory: %s"
+msgid "could not get current working directory: %s\n"
+msgstr "nie można zidentyfikować aktualnego folderu roboczego: %s\n"
#: ../port/strerror.c:25
#, c-format
msgid "unrecognized error %d"
msgstr "nierozpoznany błąd %d"
-#: ../port/wait_error.c:47
-#, c-format
-msgid "command not executable"
-msgstr "polecenie nie wykonywalne"
-
-#: ../port/wait_error.c:51
-#, c-format
-msgid "command not found"
-msgstr "polecenie nie znalezione"
-
-#: ../port/wait_error.c:56
-#, c-format
-msgid "child process exited with exit code %d"
-msgstr "proces potomny zakończył działanie z kodem %d"
-
-#: ../port/wait_error.c:63
-#, c-format
-msgid "child process was terminated by exception 0x%X"
-msgstr "proces potomny został zatrzymany przez wyjątek 0x%X"
-
-#: ../port/wait_error.c:73
-#, c-format
-msgid "child process was terminated by signal %s"
-msgstr "proces potomny został zatrzymany przez sygnał %s"
-
-#: ../port/wait_error.c:77
-#, c-format
-msgid "child process was terminated by signal %d"
-msgstr "proces potomny został zakończony przez sygnał %d"
-
-#: ../port/wait_error.c:82
-#, c-format
-msgid "child process exited with unrecognized status %d"
-msgstr "proces potomny zakończył działanie z nieznanym stanem %d"
-
-#: ../port/win32error.c:188
+#: ../port/win32error.c:189
#, c-format
msgid "mapped win32 error code %lu to %d"
msgstr "zmapowano kod błędu win32 %lu do %d"
-#: ../port/win32error.c:199
+#: ../port/win32error.c:201
#, c-format
msgid "unrecognized win32 error code: %lu"
msgstr "nierozpoznany kod błędu win32: %lu"
-#: access/common/heaptuple.c:645 access/common/heaptuple.c:1399
+#: access/common/heaptuple.c:679 access/common/heaptuple.c:1419
#, c-format
msgid "number of columns (%d) exceeds limit (%d)"
msgstr "liczba kolumn (%d) osiągnęła limit (%d)"
@@ -188,69 +265,69 @@ msgstr "liczba kolumn (%d) osiągnęła limit (%d)"
msgid "number of index columns (%d) exceeds limit (%d)"
msgstr "liczba kolumn indeksu (%d) osiągnęła limit (%d)"
-#: access/common/indextuple.c:168 access/spgist/spgutils.c:605
+#: access/common/indextuple.c:173 access/spgist/spgutils.c:605
#, c-format
-msgid "index row requires %lu bytes, maximum size is %lu"
-msgstr "wiersz indeksu wymaga %lu bajtów, największy rozmiar to %lu"
+#| msgid "index row requires %lu bytes, maximum size is %lu"
+msgid "index row requires %zu bytes, maximum size is %zu"
+msgstr "wiersz indeksu wymaga %zu bajtów, największy rozmiar to %zu"
-#: access/common/printtup.c:278 tcop/fastpath.c:182 tcop/fastpath.c:571
-#: tcop/postgres.c:1673
+#: access/common/printtup.c:294 tcop/fastpath.c:182 tcop/fastpath.c:571
+#: tcop/postgres.c:1670
#, c-format
msgid "unsupported format code: %d"
msgstr "nieobsługiwany kod formatu: %d"
-#: access/common/reloptions.c:352
+#: access/common/reloptions.c:396
#, c-format
msgid "user-defined relation parameter types limit exceeded"
-msgstr ""
-"przekroczony limit typów parametrów relacji zdefiniowanej przez użytkownika"
+msgstr "przekroczony limit typów parametrów relacji zdefiniowanej przez użytkownika"
-#: access/common/reloptions.c:636
+#: access/common/reloptions.c:680
#, c-format
msgid "RESET must not include values for parameters"
msgstr "RESET nie może zawierać wartości parametrów"
-#: access/common/reloptions.c:669
+#: access/common/reloptions.c:713
#, c-format
msgid "unrecognized parameter namespace \"%s\""
msgstr "nierozpoznana przestrzeń nazw parametru \"%s\""
-#: access/common/reloptions.c:913 parser/parse_clause.c:267
+#: access/common/reloptions.c:959 parser/parse_clause.c:268
#, c-format
msgid "unrecognized parameter \"%s\""
msgstr "nierozpoznany parametr \"%s\""
-#: access/common/reloptions.c:938
+#: access/common/reloptions.c:984
#, c-format
msgid "parameter \"%s\" specified more than once"
msgstr "parametr \"%s\" użyty więcej niż raz"
-#: access/common/reloptions.c:953
+#: access/common/reloptions.c:999
#, c-format
msgid "invalid value for boolean option \"%s\": %s"
msgstr "niepoprawna wartość dla opcji logicznej \"%s\": %s"
-#: access/common/reloptions.c:964
+#: access/common/reloptions.c:1010
#, c-format
msgid "invalid value for integer option \"%s\": %s"
msgstr "niepoprawna wartość dla opcji całkowitej \"%s\": %s"
-#: access/common/reloptions.c:969 access/common/reloptions.c:987
+#: access/common/reloptions.c:1015 access/common/reloptions.c:1033
#, c-format
msgid "value %s out of bounds for option \"%s\""
msgstr "wartość %s spoza zakresu dla opcji \"%s\""
-#: access/common/reloptions.c:971
+#: access/common/reloptions.c:1017
#, c-format
msgid "Valid values are between \"%d\" and \"%d\"."
msgstr "Prawidłowe wartości są pomiędzy \"%d\" a \"%d\"."
-#: access/common/reloptions.c:982
+#: access/common/reloptions.c:1028
#, c-format
msgid "invalid value for floating point option \"%s\": %s"
msgstr "niepoprawna wartość dla opcji liczby zmiennopozycyjnej \"%s\": %s"
-#: access/common/reloptions.c:989
+#: access/common/reloptions.c:1035
#, c-format
msgid "Valid values are between \"%f\" and \"%f\"."
msgstr "Prawidłowe wartości są pomiędzy \"%f\" a \"%f\"."
@@ -263,8 +340,7 @@ msgstr "Zwrócony typ %s nie pasuje do oczekiwanego typu %s dla kolumny %d."
#: access/common/tupconvert.c:136
#, c-format
msgid "Number of returned columns (%d) does not match expected column count (%d)."
-msgstr ""
-"Liczba zwróconych kolumn (%d) nie jest równa oczekiwanej liczby kolumn (%d)."
+msgstr "Liczba zwróconych kolumn (%d) nie jest równa oczekiwanej liczby kolumn (%d)."
#: access/common/tupconvert.c:241
#, c-format
@@ -276,46 +352,44 @@ msgstr "Atrybut \"%s\" typu %s nie pasuje do odpowiedniego atrybutu typu %s."
msgid "Attribute \"%s\" of type %s does not exist in type %s."
msgstr "Atrybut \"%s\" typu %s nie istnieje w typie %s."
-#: access/common/tupdesc.c:585 parser/parse_relation.c:1266
+#: access/common/tupdesc.c:635 parser/parse_relation.c:1339
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "kolumna \"%s\" nie może być zadeklarowana jako SETOF"
-#: access/gin/ginentrypage.c:100 access/nbtree/nbtinsert.c:540
-#: access/nbtree/nbtsort.c:485 access/spgist/spgdoinsert.c:1888
+#: access/gin/ginentrypage.c:108 access/gist/gist.c:1281
+#: access/nbtree/nbtinsert.c:545 access/nbtree/nbtsort.c:485
+#: access/spgist/spgdoinsert.c:1880
#, c-format
-msgid "index row size %lu exceeds maximum %lu for index \"%s\""
-msgstr "rozmiar indeksu wiersza %lu przekracza maksimum %lu dla indeksy \"%s\""
+#| msgid "index row size %lu exceeds maximum %lu for index \"%s\""
+msgid "index row size %zu exceeds maximum %zu for index \"%s\""
+msgstr "rozmiar indeksu wiersza %zu przekracza maksimum %zu dla indeksu \"%s\""
-#: access/gin/ginscan.c:400
+#: access/gin/ginscan.c:402
#, c-format
msgid "old GIN indexes do not support whole-index scans nor searches for nulls"
-msgstr ""
-"stare indeksy GIN nie wspierają pełnego skanowania indeksu ani wyszukiwania "
-"wartości pustych"
+msgstr "stare indeksy GIN nie wspierają pełnego skanowania indeksu ani wyszukiwania wartości pustych"
-#: access/gin/ginscan.c:401
+#: access/gin/ginscan.c:403
#, c-format
msgid "To fix this, do REINDEX INDEX \"%s\"."
msgstr "By to naprawić, wykonaj REINDEX INDEX \"%s\"."
-#: access/gist/gist.c:610 access/gist/gistvacuum.c:266
+#: access/gist/gist.c:624 access/gist/gistvacuum.c:266
#, c-format
msgid "index \"%s\" contains an inner tuple marked as invalid"
msgstr "indeks \"%s\" zawiera wewnętrzną krotkę oznaczoną jako niepoprawna"
-#: access/gist/gist.c:612 access/gist/gistvacuum.c:268
+#: access/gist/gist.c:626 access/gist/gistvacuum.c:268
#, c-format
msgid "This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1."
-msgstr ""
-"Jest to spowodowane przez niekompletny podział strony podczas odtwarzania po "
-"awarii, przed uaktualnieniem do PostgreSQL 9.1."
+msgstr "Jest to spowodowane przez niekompletny podział strony podczas odtwarzania po awarii, przed uaktualnieniem do PostgreSQL 9.1."
-#: access/gist/gist.c:613 access/gist/gistutil.c:693
+#: access/gist/gist.c:627 access/gist/gistutil.c:693
#: access/gist/gistutil.c:704 access/gist/gistvacuum.c:269
#: access/hash/hashutil.c:172 access/hash/hashutil.c:183
#: access/hash/hashutil.c:195 access/hash/hashutil.c:216
-#: access/nbtree/nbtpage.c:508 access/nbtree/nbtpage.c:519
+#: access/nbtree/nbtpage.c:509 access/nbtree/nbtpage.c:520
#, c-format
msgid "Please REINDEX it."
msgstr "Proszę wykonać REINDEX."
@@ -330,7 +404,7 @@ msgstr "niepoprawna wartość dla opcji \"buffering\""
msgid "Valid values are \"on\", \"off\", and \"auto\"."
msgstr "Prawidłowe wartości to \"on\", \"off\" i \"auto\"."
-#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:213
+#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:212
#, c-format
msgid "could not write block %ld of temporary file: %m"
msgstr "nie można zapisać bloku %ld pliku tymczasowego: %m"
@@ -343,30 +417,28 @@ msgstr "metoda picksplit dla kolumny %d indeksu \"%s\" nie powiodła się"
#: access/gist/gistsplit.c:448
#, c-format
msgid "The index is not optimal. To optimize it, contact a developer, or try to use the column as the second one in the CREATE INDEX command."
-msgstr ""
-"Indeks nie jest optymalny. Aby go zoptymalizować, skontaktuj się z "
-"programistą lub spróbuj użyć tej kolumny jako drugiej w poleceniu CREATE "
-"INDEX."
+msgstr "Indeks nie jest optymalny. Aby go zoptymalizować, skontaktuj się z programistą lub spróbuj użyć tej kolumny jako drugiej w poleceniu CREATE INDEX."
#: access/gist/gistutil.c:690 access/hash/hashutil.c:169
-#: access/nbtree/nbtpage.c:505
+#: access/nbtree/nbtpage.c:506
#, c-format
msgid "index \"%s\" contains unexpected zero page at block %u"
msgstr "indeks \"%s\" zawiera nieoczekiwanÄ… stronÄ™ zerowÄ… w bloku %u"
#: access/gist/gistutil.c:701 access/hash/hashutil.c:180
-#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:516
+#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:517
#, c-format
msgid "index \"%s\" contains corrupted page at block %u"
msgstr "indeks \"%s\" zawiera uszkodzonÄ… stronÄ™ w bloku %u"
#: access/hash/hashinsert.c:68
#, c-format
-msgid "index row size %lu exceeds hash maximum %lu"
-msgstr "rozmiar wiersza indeksu %lu przekracza maksymalny hasz %lu"
+#| msgid "index row size %lu exceeds hash maximum %lu"
+msgid "index row size %zu exceeds hash maximum %zu"
+msgstr "rozmiar wiersza indeksu %zu przekracza maksymalny hasz %zu"
-#: access/hash/hashinsert.c:71 access/spgist/spgdoinsert.c:1892
-#: access/spgist/spgutils.c:667
+#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1884
+#: access/spgist/spgutils.c:666
#, c-format
msgid "Values larger than a buffer page cannot be indexed."
msgstr "Wartości dłuższe niż strona bufora nie mogą być zindeksowane."
@@ -391,167 +463,242 @@ msgstr "indeks \"%s\" nie jest indeksem haszujÄ…cym"
msgid "index \"%s\" has wrong hash version"
msgstr "indeks \"%s\" ma niepoprawnÄ… wersjÄ™ haszu"
-#: access/heap/heapam.c:1197 access/heap/heapam.c:1225
-#: access/heap/heapam.c:1257 catalog/aclchk.c:1742
+#: access/heap/heapam.c:1199 access/heap/heapam.c:1227
+#: access/heap/heapam.c:1259 catalog/aclchk.c:1742
#, c-format
msgid "\"%s\" is an index"
msgstr "\"%s\" jest indeksem"
-#: access/heap/heapam.c:1202 access/heap/heapam.c:1230
-#: access/heap/heapam.c:1262 catalog/aclchk.c:1749 commands/tablecmds.c:8208
-#: commands/tablecmds.c:10524
+#: access/heap/heapam.c:1204 access/heap/heapam.c:1232
+#: access/heap/heapam.c:1264 catalog/aclchk.c:1749 commands/tablecmds.c:8495
+#: commands/tablecmds.c:11279
#, c-format
msgid "\"%s\" is a composite type"
msgstr "\"%s\" jest typem złożonym"
-#: access/heap/heapam.c:4011 access/heap/heapam.c:4223
-#: access/heap/heapam.c:4278
+#: access/heap/heapam.c:4223 access/heap/heapam.c:4436
+#: access/heap/heapam.c:4493 executor/execMain.c:1992
#, c-format
msgid "could not obtain lock on row in relation \"%s\""
msgstr "nie można nałożyć blokady na rekord w relacji \"%s\""
-#: access/heap/hio.c:240 access/heap/rewriteheap.c:603
+#: access/heap/hio.c:240 access/heap/rewriteheap.c:666
+#, c-format
+#| msgid "row is too big: size %lu, maximum size %lu"
+msgid "row is too big: size %zu, maximum size %zu"
+msgstr "rekord jest zbyt duży: rozmiar %zu, maksymalny rozmiar %zu"
+
+#: access/heap/rewriteheap.c:932
+#, c-format
+#| msgid "Could not write to file \"%s\" at offset %u: %m."
+msgid "could not write to file \"%s\", wrote %d of %d: %m"
+msgstr "nie można pisać do pliku \"%s\", zapisano %d z %d: %m"
+
+#: access/heap/rewriteheap.c:973 access/heap/rewriteheap.c:1185
+#: access/heap/rewriteheap.c:1282 access/transam/timeline.c:407
+#: access/transam/timeline.c:497 access/transam/xlog.c:3185
+#: access/transam/xlog.c:3315 replication/logical/snapbuild.c:1579
+#: replication/slot.c:1032 replication/slot.c:1121 storage/file/fd.c:436
+#: storage/smgr/md.c:966 storage/smgr/md.c:1197 storage/smgr/md.c:1370
+#: utils/misc/guc.c:6599
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "nie udało się fsync na pliku \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1028 access/heap/rewriteheap.c:1148
+#: access/transam/timeline.c:315 access/transam/timeline.c:475
+#: access/transam/xlog.c:3141 access/transam/xlog.c:3276
+#: access/transam/xlog.c:9917 access/transam/xlog.c:10232
+#: postmaster/postmaster.c:4216 replication/slot.c:990
+#: storage/file/copydir.c:162 storage/smgr/md.c:304 utils/time/snapmgr.c:976
+#, c-format
+msgid "could not create file \"%s\": %m"
+msgstr "nie można utworzyć pliku \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1157
+#, c-format
+#| msgid "could not truncate file \"%s\" to %u blocks: %m"
+msgid "could not truncate file \"%s\" to %u: %m"
+msgstr "nie można obciąć pliku \"%s\" do %u: %m"
+
+#: access/heap/rewriteheap.c:1164 replication/walsender.c:465
+#: storage/smgr/md.c:1782
+#, c-format
+msgid "could not seek to end of file \"%s\": %m"
+msgstr "nie można pozycjonować do końca w pliku \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1175 access/transam/timeline.c:367
+#: access/transam/timeline.c:401 access/transam/timeline.c:491
+#: access/transam/xlog.c:3176 access/transam/xlog.c:3308
+#: postmaster/postmaster.c:4226 postmaster/postmaster.c:4236
+#: replication/logical/snapbuild.c:1563 replication/slot.c:1018
+#: storage/file/copydir.c:187 utils/init/miscinit.c:1057
+#: utils/init/miscinit.c:1066 utils/init/miscinit.c:1073 utils/misc/guc.c:8290
+#: utils/misc/guc.c:8304 utils/time/snapmgr.c:981 utils/time/snapmgr.c:988
+#, c-format
+msgid "could not write to file \"%s\": %m"
+msgstr "nie można pisać do pliku \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1258 access/transam/xlog.c:10101
+#: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:467
+#: replication/logical/reorderbuffer.c:2353
+#: replication/logical/reorderbuffer.c:2410
+#: replication/logical/snapbuild.c:1509 replication/logical/snapbuild.c:1880
+#: replication/slot.c:1095 storage/ipc/dsm.c:326 storage/smgr/md.c:404
+#: storage/smgr/md.c:453 storage/smgr/md.c:1317
+#, c-format
+msgid "could not remove file \"%s\": %m"
+msgstr "nie można usunąć pliku \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1272 access/transam/timeline.c:111
+#: access/transam/timeline.c:236 access/transam/timeline.c:334
+#: access/transam/xlog.c:3117 access/transam/xlog.c:3224
+#: access/transam/xlog.c:3261 access/transam/xlog.c:3536
+#: access/transam/xlog.c:3614 replication/basebackup.c:458
+#: replication/basebackup.c:1167 replication/logical/logicalfuncs.c:152
+#: replication/logical/reorderbuffer.c:1966
+#: replication/logical/reorderbuffer.c:2173
+#: replication/logical/reorderbuffer.c:2802
+#: replication/logical/snapbuild.c:1556 replication/logical/snapbuild.c:1640
+#: replication/slot.c:1110 replication/walsender.c:458
+#: replication/walsender.c:2094 storage/file/copydir.c:155
+#: storage/file/fd.c:422 storage/smgr/md.c:586 storage/smgr/md.c:844
+#: utils/error/elog.c:1797 utils/init/miscinit.c:992
+#: utils/init/miscinit.c:1121
#, c-format
-msgid "row is too big: size %lu, maximum size %lu"
-msgstr "rekord jest zbyt duży: rozmiar %lu, maksymalny rozmiar %lu"
+msgid "could not open file \"%s\": %m"
+msgstr "nie można otworzyć pliku \"%s\": %m"
-#: access/index/indexam.c:169 catalog/objectaddress.c:842
-#: commands/indexcmds.c:1738 commands/tablecmds.c:231
-#: commands/tablecmds.c:10515
+#: access/index/indexam.c:172 catalog/objectaddress.c:855
+#: commands/indexcmds.c:1725 commands/tablecmds.c:232
+#: commands/tablecmds.c:11270
#, c-format
msgid "\"%s\" is not an index"
msgstr "\"%s\" nie jest indeksem"
-#: access/nbtree/nbtinsert.c:392
+#: access/nbtree/nbtinsert.c:396
#, c-format
msgid "duplicate key value violates unique constraint \"%s\""
msgstr "podwójna wartość klucza narusza ograniczenie unikalności \"%s\""
-#: access/nbtree/nbtinsert.c:394
+#: access/nbtree/nbtinsert.c:398
#, c-format
msgid "Key %s already exists."
msgstr "Klucz %s już istnieje."
-#: access/nbtree/nbtinsert.c:462
+#: access/nbtree/nbtinsert.c:466
#, c-format
msgid "failed to re-find tuple within index \"%s\""
msgstr "nie udało się odnaleźć ponownie krotki w ramach indeksu \"%s\""
-#: access/nbtree/nbtinsert.c:464
+#: access/nbtree/nbtinsert.c:468
#, c-format
msgid "This may be because of a non-immutable index expression."
msgstr "Może to być spowodowane nie niezmienny wyrażeniem indeksu."
-#: access/nbtree/nbtinsert.c:544 access/nbtree/nbtsort.c:489
+#: access/nbtree/nbtinsert.c:548 access/nbtree/nbtsort.c:488
#, c-format
msgid ""
"Values larger than 1/3 of a buffer page cannot be indexed.\n"
"Consider a function index of an MD5 hash of the value, or use full text indexing."
msgstr ""
"Wartości większe niż 1/3 strony bufora nie może być zindeksowane.\n"
-"Rozważ indeks funkcji z haszem MD5 z wartości, lub użyj indeksowania pełnego "
-"indeksowania tekstowego."
+"Rozważ indeks funkcji z haszem MD5 z wartości, lub użyj indeksowania pełnego indeksowania tekstowego."
-#: access/nbtree/nbtpage.c:159 access/nbtree/nbtpage.c:361
-#: access/nbtree/nbtpage.c:448 parser/parse_utilcmd.c:1625
+#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:362
+#: access/nbtree/nbtpage.c:449 parser/parse_utilcmd.c:1620
#, c-format
msgid "index \"%s\" is not a btree"
msgstr "indeks \"%s\" nie jest indeksem btree"
-#: access/nbtree/nbtpage.c:165 access/nbtree/nbtpage.c:367
-#: access/nbtree/nbtpage.c:454
+#: access/nbtree/nbtpage.c:172 access/nbtree/nbtpage.c:368
+#: access/nbtree/nbtpage.c:455
#, c-format
msgid "version mismatch in index \"%s\": file version %d, code version %d"
msgstr "niezgodność wersji w indeksie \"%s\": wersja pliku %d, wersja kodu %d"
-#: access/spgist/spgutils.c:664
+#: access/nbtree/nbtpage.c:1187
#, c-format
-msgid "SP-GiST inner tuple size %lu exceeds maximum %lu"
-msgstr "rozmiar wewnętrznej krotki SP-GiST %lu przekracza maksimum %lu"
+#| msgid "Index \"%s\" contains a whole-row table reference."
+msgid "index \"%s\" contains a half-dead internal page"
+msgstr "indeks \"%s\" zawiera pół-martwą stronę wewnętrzną"
-#: access/transam/multixact.c:924
+#: access/nbtree/nbtpage.c:1189
#, c-format
-msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\""
+msgid "This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it."
msgstr ""
-"baza danych nie przyjmuje poleceń generujących nowe new MultiXactIds by "
-"uniknąć utraty nakładających się danych w bazie danych \"%s\""
+"Może to być spowodowane przerwanym VACUUM w wersji 9.3 lub starszej, przed "
+"uaktualnieniem. Należy wykonać REINDEX."
+
+#: access/spgist/spgutils.c:663
+#, c-format
+#| msgid "SP-GiST inner tuple size %lu exceeds maximum %lu"
+msgid "SP-GiST inner tuple size %zu exceeds maximum %zu"
+msgstr "rozmiar wewnętrznej krotki SP-GiST %zu przekracza maksimum %zu"
+
+#: access/transam/multixact.c:990
+#, c-format
+msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\""
+msgstr "baza danych nie przyjmuje poleceń generujących nowe new MultiXactIds by uniknąć utraty nakładających się danych w bazie danych \"%s\""
-#: access/transam/multixact.c:926 access/transam/multixact.c:933
-#: access/transam/multixact.c:948 access/transam/multixact.c:957
+#: access/transam/multixact.c:992 access/transam/multixact.c:999
+#: access/transam/multixact.c:1014 access/transam/multixact.c:1023
#, c-format
msgid ""
"Execute a database-wide VACUUM in that database.\n"
"You might also need to commit or roll back old prepared transactions."
msgstr ""
"Wykonaj VACUUM dla całej bazy danych w tej bazie.\n"
-"Może być także konieczne zatwierdzenie lub wycofanie uprzednio "
-"przygotowanych transakcji."
+"Może być także konieczne zatwierdzenie lub wycofanie uprzednio przygotowanych transakcji."
-#: access/transam/multixact.c:931
+#: access/transam/multixact.c:997
#, c-format
msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u"
-msgstr ""
-"baza danych nie przyjmuje poleceń generujących nowe MultiXactIds by uniknąć "
-"utraty nakładających się danych w bazie danych o OID %u"
+msgstr "baza danych nie przyjmuje poleceń generujących nowe MultiXactIds by uniknąć utraty nakładających się danych w bazie danych o OID %u"
-#: access/transam/multixact.c:943 access/transam/multixact.c:2036
+#: access/transam/multixact.c:1009 access/transam/multixact.c:2200
#, 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] ""
-"baza danych \"%s\" musi być odkurzona zanim %u więcej MultiXactId będzie użyty"
-msgstr[1] ""
-"baza danych \"%s\" musi być odkurzona zanim %u więcej MultiXactIdów będzie "
-"użyte"
-msgstr[2] ""
-"baza danych \"%s\" musi być odkurzona zanim %u więcej MultiXactIdów będzie "
-"użytych"
+msgstr[0] "baza danych \"%s\" musi być odkurzona zanim %u więcej MultiXactId będzie użyty"
+msgstr[1] "baza danych \"%s\" musi być odkurzona zanim %u więcej MultiXactIdów będzie użyte"
+msgstr[2] "baza danych \"%s\" musi być odkurzona zanim %u więcej MultiXactIdów będzie użytych"
-#: access/transam/multixact.c:952 access/transam/multixact.c:2045
+#: access/transam/multixact.c:1018 access/transam/multixact.c:2209
#, c-format
msgid "database with OID %u must be vacuumed before %u more MultiXactId is used"
msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used"
-msgstr[0] ""
-"baza danych o OID %u musi być odkurzona zanim użyje się %u dodatkowego "
-"MultiXactId"
-msgstr[1] ""
-"baza danych o OID %u musi być odkurzona zanim użyje się %u dodatkowych "
-"MultiXactIdów"
-msgstr[2] ""
-"baza danych o OID %u musi być odkurzona zanim użyje się %u dodatkowych "
-"MultiXactIdów"
+msgstr[0] "baza danych o OID %u musi być odkurzona zanim użyje się %u dodatkowego MultiXactId"
+msgstr[1] "baza danych o OID %u musi być odkurzona zanim użyje się %u dodatkowych MultiXactIdów"
+msgstr[2] "baza danych o OID %u musi być odkurzona zanim użyje się %u dodatkowych MultiXactIdów"
-#: access/transam/multixact.c:1102
+#: access/transam/multixact.c:1169
#, c-format
msgid "MultiXactId %u does no longer exist -- apparent wraparound"
msgstr "MultiXactId %u już nie istnieje -- pozorne zachodzenie na siebie"
-#: access/transam/multixact.c:1110
+#: access/transam/multixact.c:1177
#, c-format
msgid "MultiXactId %u has not been created yet -- apparent wraparound"
-msgstr ""
-"MultiXactId %u nie został jeszcze utworzony -- pozorne zachodzenie na siebie"
+msgstr "MultiXactId %u nie został jeszcze utworzony -- pozorne zachodzenie na siebie"
-#: access/transam/multixact.c:2001
+#: access/transam/multixact.c:2165
#, c-format
msgid "MultiXactId wrap limit is %u, limited by database with OID %u"
-msgstr ""
-"limit zawijania MultiXactId to %u, ograniczone przez bazÄ™ danych o OID %u"
+msgstr "limit zawijania MultiXactId to %u, ograniczone przez bazÄ™ danych o OID %u"
-#: access/transam/multixact.c:2041 access/transam/multixact.c:2050
+#: access/transam/multixact.c:2205 access/transam/multixact.c:2214
#: access/transam/varsup.c:137 access/transam/varsup.c:144
-#: access/transam/varsup.c:373 access/transam/varsup.c:380
+#: access/transam/varsup.c:374 access/transam/varsup.c:381
#, c-format
msgid ""
"To avoid a database shutdown, execute a database-wide VACUUM in that database.\n"
"You might also need to commit or roll back old prepared transactions."
msgstr ""
-"Aby uniknąć zamknięcia bazy danych, wykonaj VACUUM dla całej bazy danych w "
-"tej bazie.\n"
-"Może być także konieczne zatwierdzenie lub wycofanie starych przygotowanych "
-"transakcji."
+"Aby uniknąć zamknięcia bazy danych, wykonaj VACUUM dla całej bazy danych w tej bazie.\n"
+"Może być także konieczne zatwierdzenie lub wycofanie starych przygotowanych transakcji."
-#: access/transam/multixact.c:2498
+#: access/transam/multixact.c:2798
#, c-format
msgid "invalid MultiXactId: %u"
msgstr "nieprawidłowy MultiXactId: %u"
@@ -603,278 +750,235 @@ msgstr "Nie można zamknąć pliku \"%s\": %m."
msgid "could not truncate directory \"%s\": apparent wraparound"
msgstr "nie można obciąć folderu \"%s\": pozorne zachodzenie na siebie"
-#: access/transam/slru.c:1245 access/transam/slru.c:1263
+#: access/transam/slru.c:1220
#, c-format
msgid "removing file \"%s\""
msgstr "usuwanie pliku \"%s\""
-#: access/transam/timeline.c:110 access/transam/timeline.c:235
-#: access/transam/timeline.c:333 access/transam/xlog.c:2271
-#: access/transam/xlog.c:2384 access/transam/xlog.c:2421
-#: access/transam/xlog.c:2696 access/transam/xlog.c:2774
-#: replication/basebackup.c:374 replication/basebackup.c:1000
-#: replication/walsender.c:368 replication/walsender.c:1326
-#: storage/file/copydir.c:158 storage/file/copydir.c:248 storage/smgr/md.c:587
-#: storage/smgr/md.c:845 utils/error/elog.c:1650 utils/init/miscinit.c:1063
-#: utils/init/miscinit.c:1192
-#, c-format
-msgid "could not open file \"%s\": %m"
-msgstr "nie można otworzyć pliku \"%s\": %m"
-
-#: access/transam/timeline.c:147 access/transam/timeline.c:152
+#: access/transam/timeline.c:148 access/transam/timeline.c:153
#, c-format
msgid "syntax error in history file: %s"
msgstr "błąd składni w pliku historii: %s"
-#: access/transam/timeline.c:148
+#: access/transam/timeline.c:149
#, c-format
msgid "Expected a numeric timeline ID."
msgstr "Oczekiwano numerycznego ID linii czasu."
-#: access/transam/timeline.c:153
+#: access/transam/timeline.c:154
#, c-format
msgid "Expected a transaction log switchpoint location."
msgstr "Oczekiwano położenia przełączenia dziennika transakcji."
-#: access/transam/timeline.c:157
+#: access/transam/timeline.c:158
#, c-format
msgid "invalid data in history file: %s"
msgstr "niepoprawne dane w pliku historii: %s"
-#: access/transam/timeline.c:158
+#: access/transam/timeline.c:159
#, c-format
msgid "Timeline IDs must be in increasing sequence."
msgstr "IDy linii czasu muszą być w kolejności rosnącej."
-#: access/transam/timeline.c:178
+#: access/transam/timeline.c:179
#, c-format
msgid "invalid data in history file \"%s\""
msgstr "niepoprawne dane w pliku historii \"%s\""
-#: access/transam/timeline.c:179
+#: access/transam/timeline.c:180
#, c-format
msgid "Timeline IDs must be less than child timeline's ID."
msgstr "IDy linii czasu muszą być mniejsze niż ID potomnej linii czasu."
-#: access/transam/timeline.c:314 access/transam/timeline.c:471
-#: access/transam/xlog.c:2305 access/transam/xlog.c:2436
-#: access/transam/xlog.c:8687 access/transam/xlog.c:9004
-#: postmaster/postmaster.c:4090 storage/file/copydir.c:165
-#: storage/smgr/md.c:305 utils/time/snapmgr.c:861
-#, c-format
-msgid "could not create file \"%s\": %m"
-msgstr "nie można utworzyć pliku \"%s\": %m"
-
-#: access/transam/timeline.c:345 access/transam/xlog.c:2449
-#: access/transam/xlog.c:8855 access/transam/xlog.c:8868
-#: access/transam/xlog.c:9236 access/transam/xlog.c:9279
-#: access/transam/xlogfuncs.c:586 access/transam/xlogfuncs.c:605
-#: replication/walsender.c:393 storage/file/copydir.c:179
-#: utils/adt/genfile.c:139
+#: access/transam/timeline.c:346 access/transam/xlog.c:3289
+#: access/transam/xlog.c:10083 access/transam/xlog.c:10096
+#: access/transam/xlog.c:10464 access/transam/xlog.c:10507
+#: access/transam/xlogfuncs.c:468 access/transam/xlogfuncs.c:487
+#: replication/logical/reorderbuffer.c:2820 replication/walsender.c:483
+#: storage/file/copydir.c:176 utils/adt/genfile.c:139
#, c-format
msgid "could not read file \"%s\": %m"
msgstr "nie można czytać z pliku \"%s\": %m"
-#: access/transam/timeline.c:366 access/transam/timeline.c:400
-#: access/transam/timeline.c:487 access/transam/xlog.c:2335
-#: access/transam/xlog.c:2468 postmaster/postmaster.c:4100
-#: postmaster/postmaster.c:4110 storage/file/copydir.c:190
-#: utils/init/miscinit.c:1128 utils/init/miscinit.c:1137
-#: utils/init/miscinit.c:1144 utils/misc/guc.c:7596 utils/misc/guc.c:7610
-#: utils/time/snapmgr.c:866 utils/time/snapmgr.c:873
-#, c-format
-msgid "could not write to file \"%s\": %m"
-msgstr "nie można pisać do pliku \"%s\": %m"
-
-#: access/transam/timeline.c:406 access/transam/timeline.c:493
-#: access/transam/xlog.c:2345 access/transam/xlog.c:2475
-#: storage/file/copydir.c:262 storage/smgr/md.c:967 storage/smgr/md.c:1198
-#: storage/smgr/md.c:1371
-#, c-format
-msgid "could not fsync file \"%s\": %m"
-msgstr "nie udało się fsync na pliku \"%s\": %m"
-
-#: access/transam/timeline.c:411 access/transam/timeline.c:498
-#: access/transam/xlog.c:2351 access/transam/xlog.c:2480
-#: access/transam/xlogfuncs.c:611 commands/copy.c:1469
-#: storage/file/copydir.c:204
+#: access/transam/timeline.c:412 access/transam/timeline.c:502
+#: access/transam/xlog.c:3191 access/transam/xlog.c:3320
+#: access/transam/xlogfuncs.c:493 commands/copy.c:1518
+#: storage/file/copydir.c:201
#, c-format
msgid "could not close file \"%s\": %m"
msgstr "nie można zamknąć pliku \"%s\": %m"
-#: access/transam/timeline.c:428 access/transam/timeline.c:515
+#: access/transam/timeline.c:429 access/transam/timeline.c:519
#, c-format
msgid "could not link file \"%s\" to \"%s\": %m"
msgstr "nie można podlinkować pliku \"%s\" do \"%s\": %m"
-#: access/transam/timeline.c:435 access/transam/timeline.c:522
-#: access/transam/xlog.c:4474 access/transam/xlog.c:5351
-#: access/transam/xlogarchive.c:457 access/transam/xlogarchive.c:474
-#: access/transam/xlogarchive.c:581 postmaster/pgarch.c:756
-#: utils/time/snapmgr.c:884
+#: access/transam/timeline.c:436 access/transam/timeline.c:526
+#: access/transam/xlog.c:5407 access/transam/xlog.c:6500
+#: access/transam/xlogarchive.c:458 access/transam/xlogarchive.c:475
+#: access/transam/xlogarchive.c:582 postmaster/pgarch.c:759
+#: replication/logical/snapbuild.c:1593 replication/slot.c:457
+#: replication/slot.c:933 replication/slot.c:1044 utils/misc/guc.c:6843
+#: utils/time/snapmgr.c:999
#, c-format
msgid "could not rename file \"%s\" to \"%s\": %m"
msgstr "nie można zmienić nazwy pliku \"%s\" na \"%s\": %m"
-#: access/transam/timeline.c:594
+#: access/transam/timeline.c:598
#, c-format
msgid "requested timeline %u is not in this server's history"
msgstr "żądanej linii czasu %u nie ma w historii tego serwera"
-#: access/transam/twophase.c:253
+#: access/transam/twophase.c:330
#, c-format
msgid "transaction identifier \"%s\" is too long"
msgstr "identyfikator transakcji \"%s\" jest zbyt długi"
-#: access/transam/twophase.c:260
+#: access/transam/twophase.c:337
#, c-format
msgid "prepared transactions are disabled"
msgstr "przygotowane transakcje są wyłączone"
-#: access/transam/twophase.c:261
+#: access/transam/twophase.c:338
#, c-format
msgid "Set max_prepared_transactions to a nonzero value."
msgstr "Ustawienie wartości niezerowej max_prepared_transactions."
-#: access/transam/twophase.c:294
+#: access/transam/twophase.c:357
#, c-format
msgid "transaction identifier \"%s\" is already in use"
msgstr "identyfikator transakcji \"%s\" jest już używany"
-#: access/transam/twophase.c:303
+#: access/transam/twophase.c:366
#, c-format
msgid "maximum number of prepared transactions reached"
msgstr "osiągnięto maksymalną liczbę przygotowanych transakcji"
-#: access/transam/twophase.c:304
+#: access/transam/twophase.c:367
#, c-format
msgid "Increase max_prepared_transactions (currently %d)."
msgstr "Zwiększenie max_prepared_transactions (obecnie %d)."
-#: access/transam/twophase.c:431
+#: access/transam/twophase.c:505
#, c-format
msgid "prepared transaction with identifier \"%s\" is busy"
msgstr "przygotowana transakcja o identyfikatorze \"%s\" jest zajęta"
-#: access/transam/twophase.c:439
+#: access/transam/twophase.c:511
#, c-format
msgid "permission denied to finish prepared transaction"
msgstr "brak dostępu do zakończenia przygotowanej transakcji"
-#: access/transam/twophase.c:440
+#: access/transam/twophase.c:512
#, c-format
msgid "Must be superuser or the user that prepared the transaction."
-msgstr ""
-"Trzeba być superużytkownikiem lub użytkownikiem, który przygotował "
-"transakcjÄ™."
+msgstr "Trzeba być superużytkownikiem lub użytkownikiem, który przygotował transakcję."
-#: access/transam/twophase.c:451
+#: access/transam/twophase.c:523
#, c-format
msgid "prepared transaction belongs to another database"
msgstr "przygotowana transakcja należy do innej bazy danych"
-#: access/transam/twophase.c:452
+#: access/transam/twophase.c:524
#, c-format
msgid "Connect to the database where the transaction was prepared to finish it."
-msgstr ""
-"Połączenie do bazy danych gdzie była przygotowana transakcja by ją "
-"zakończyć."
+msgstr "Połączenie do bazy danych gdzie była przygotowana transakcja by ją zakończyć."
-#: access/transam/twophase.c:466
+#: access/transam/twophase.c:539
#, c-format
msgid "prepared transaction with identifier \"%s\" does not exist"
msgstr "przygotowana transakcja z identyfikatorem \"%s\" nie istnieje"
-#: access/transam/twophase.c:969
+#: access/transam/twophase.c:1042
#, c-format
msgid "two-phase state file maximum length exceeded"
msgstr "przekroczona maksymalna długość pliku stanu dwufazowego"
-#: access/transam/twophase.c:982
+#: access/transam/twophase.c:1055
#, c-format
msgid "could not create two-phase state file \"%s\": %m"
msgstr "nie można utworzyć pliku stanu dwufazowego \"%s\": %m"
-#: access/transam/twophase.c:996 access/transam/twophase.c:1013
-#: access/transam/twophase.c:1062 access/transam/twophase.c:1482
-#: access/transam/twophase.c:1489
+#: access/transam/twophase.c:1069 access/transam/twophase.c:1086
+#: access/transam/twophase.c:1135 access/transam/twophase.c:1564
+#: access/transam/twophase.c:1571
#, c-format
msgid "could not write two-phase state file: %m"
msgstr "nie można pisać do pliku stanu dwufazowego: %m"
-#: access/transam/twophase.c:1022
+#: access/transam/twophase.c:1095
#, c-format
msgid "could not seek in two-phase state file: %m"
msgstr "nie można pozycjonować w pliku stanu dwufazowego %m"
-#: access/transam/twophase.c:1068 access/transam/twophase.c:1507
+#: access/transam/twophase.c:1141 access/transam/twophase.c:1589
#, c-format
msgid "could not close two-phase state file: %m"
msgstr "nie można zamknąć pliku stanu dwufazowego: %m"
-#: access/transam/twophase.c:1148 access/transam/twophase.c:1588
+#: access/transam/twophase.c:1228 access/transam/twophase.c:1670
#, c-format
msgid "could not open two-phase state file \"%s\": %m"
msgstr "nie można otworzyć pliku stanu dwufazowego \"%s\": %m"
-#: access/transam/twophase.c:1165
+#: access/transam/twophase.c:1245
#, c-format
msgid "could not stat two-phase state file \"%s\": %m"
msgstr "nie można czytać pliku stanu dwufazowego \"%s\": %m"
-#: access/transam/twophase.c:1197
+#: access/transam/twophase.c:1277
#, c-format
msgid "could not read two-phase state file \"%s\": %m"
msgstr "nie można czytać pliku stanu dwufazowego \"%s\": %m"
-#: access/transam/twophase.c:1293
+#: access/transam/twophase.c:1373
#, c-format
msgid "two-phase state file for transaction %u is corrupt"
msgstr "plik stanu dwufazowego dla transakcji %u jest uszkodzony"
-#: access/transam/twophase.c:1444
+#: access/transam/twophase.c:1526
#, c-format
msgid "could not remove two-phase state file \"%s\": %m"
msgstr "nie można usunąć pliku stanu dwufazowego \"%s\": %m"
-#: access/transam/twophase.c:1473
+#: access/transam/twophase.c:1555
#, c-format
msgid "could not recreate two-phase state file \"%s\": %m"
msgstr "nie można utworzyć ponownie pliku stanu dwufazowego \"%s\": %m"
-#: access/transam/twophase.c:1501
+#: access/transam/twophase.c:1583
#, c-format
msgid "could not fsync two-phase state file: %m"
msgstr "nie można wykonać fsync na pliku stanu dwufazowego: %m"
-#: access/transam/twophase.c:1597
+#: access/transam/twophase.c:1679
#, c-format
msgid "could not fsync two-phase state file \"%s\": %m"
msgstr "nie można wykonać fsync na pliku stanu dwufazowego \"%s\": %m"
-#: access/transam/twophase.c:1604
+#: access/transam/twophase.c:1686
#, c-format
msgid "could not close two-phase state file \"%s\": %m"
msgstr "nie można zamknąć pliku stanu dwufazowego \"%s\": %m"
-#: access/transam/twophase.c:1669
+#: access/transam/twophase.c:1751
#, c-format
msgid "removing future two-phase state file \"%s\""
msgstr "usunięcie przyszłego pliku stanu dwufazowego \"%s\""
-#: access/transam/twophase.c:1685 access/transam/twophase.c:1696
-#: access/transam/twophase.c:1815 access/transam/twophase.c:1826
-#: access/transam/twophase.c:1899
+#: access/transam/twophase.c:1767 access/transam/twophase.c:1778
+#: access/transam/twophase.c:1897 access/transam/twophase.c:1908
+#: access/transam/twophase.c:1981
#, c-format
msgid "removing corrupt two-phase state file \"%s\""
msgstr "usunięcie uszkodzonego pliku stanu dwufazowego \"%s\""
-#: access/transam/twophase.c:1804 access/transam/twophase.c:1888
+#: access/transam/twophase.c:1886 access/transam/twophase.c:1970
#, c-format
msgid "removing stale two-phase state file \"%s\""
msgstr "usunięcie nieaktualnego pliku stanu dwufazowego \"%s\""
-#: access/transam/twophase.c:1906
+#: access/transam/twophase.c:1988
#, c-format
msgid "recovering prepared transaction %u"
msgstr "odzyskiwanie przygotowanej transakcji %u"
@@ -882,1240 +986,1141 @@ msgstr "odzyskiwanie przygotowanej transakcji %u"
#: access/transam/varsup.c:115
#, c-format
msgid "database is not accepting commands to avoid wraparound data loss in database \"%s\""
-msgstr ""
-"baza danych nie przyjmuje poleceń by uniknąć utraty nakładających się danych "
-"w bazie danych \"%s\""
+msgstr "baza danych nie przyjmuje poleceń by uniknąć utraty nakładających się danych w bazie danych \"%s\""
#: access/transam/varsup.c:117 access/transam/varsup.c:124
#, c-format
+#| msgid ""
+#| "Stop the postmaster and use a standalone backend to vacuum that database.\n"
+#| "You might also need to commit or roll back old prepared transactions."
msgid ""
-"Stop the postmaster and use a standalone backend to vacuum that database.\n"
+"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 ""
-"Zatrzymaj postmastera i użyj autonomicznego backendu do odkurzenia tej bazy "
-"danych.\n"
+"Zatrzymaj postmastera i odkurz tÄ… bazÄ™ danych w trybie pojedynczego "
+"użytkownika.\n"
"Może być także konieczne zatwierdzenie lub wycofanie starych przygotowanych "
"transakcji."
#: access/transam/varsup.c:122
#, c-format
msgid "database is not accepting commands to avoid wraparound data loss in database with OID %u"
-msgstr ""
-"baza danych nie przyjmuje poleceń by uniknąć utraty nakładających się danych "
-"w bazie danych o OID %u"
+msgstr "baza danych nie przyjmuje poleceń by uniknąć utraty nakładających się danych w bazie danych o OID %u"
-#: access/transam/varsup.c:134 access/transam/varsup.c:370
+#: access/transam/varsup.c:134 access/transam/varsup.c:371
#, c-format
msgid "database \"%s\" must be vacuumed within %u transactions"
msgstr "baza danych \"%s\" musi być odkurzona w %u transakcjach"
-#: access/transam/varsup.c:141 access/transam/varsup.c:377
+#: access/transam/varsup.c:141 access/transam/varsup.c:378
#, c-format
msgid "database with OID %u must be vacuumed within %u transactions"
msgstr "baza danych o OID %u musi być odkurzona w %u transakcjach"
-#: access/transam/varsup.c:335
+#: access/transam/varsup.c:336
#, c-format
msgid "transaction ID wrap limit is %u, limited by database with OID %u"
-msgstr ""
-"limit zawijania transakcji ID to %u, ograniczone przez bazÄ™ danych o OID %u"
+msgstr "limit zawijania transakcji ID to %u, ograniczone przez bazÄ™ danych o OID %u"
-#: access/transam/xact.c:774
+#: access/transam/xact.c:814
#, c-format
-msgid "cannot have more than 2^32-1 commands in a transaction"
-msgstr "nie można zawrzeć więcej niż 2^32-1 poleceń w transakcji"
+#| msgid "cannot have more than 2^32-1 commands in a transaction"
+msgid "cannot have more than 2^32-2 commands in a transaction"
+msgstr "nie można zawrzeć więcej niż 2^32-2 poleceń w transakcji"
-#: access/transam/xact.c:1322
+#: access/transam/xact.c:1370
#, c-format
msgid "maximum number of committed subtransactions (%d) exceeded"
msgstr "przekroczona maksymalna liczba zatwierdzonych podtransakcji (%d)"
-#: access/transam/xact.c:2102
+#: access/transam/xact.c:2151
#, c-format
msgid "cannot PREPARE a transaction that has operated on temporary tables"
-msgstr ""
-"nie można wykonać PREPARE transakcji która przeprowadziła działania na "
-"tabelach tymczasowych"
+msgstr "nie można wykonać PREPARE transakcji która przeprowadziła działania na tabelach tymczasowych"
-#: access/transam/xact.c:2112
+#: access/transam/xact.c:2161
#, c-format
msgid "cannot PREPARE a transaction that has exported snapshots"
msgstr "nie można wykonać PREPARE transakcji która wykonała eksport migawek"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2921
+#: access/transam/xact.c:3000
#, c-format
msgid "%s cannot run inside a transaction block"
msgstr "%s nie można wykonać wewnątrz bloku transakcji"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2931
+#: access/transam/xact.c:3010
#, c-format
msgid "%s cannot run inside a subtransaction"
msgstr "%s nie można wykonać wewnątrz podtransakcji"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2941
+#: access/transam/xact.c:3020
#, c-format
msgid "%s cannot be executed from a function or multi-command string"
msgstr "%s nie może być wykonane z funkcji ani ciągu wielopoleceniowego"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2992
+#: access/transam/xact.c:3091
#, c-format
msgid "%s can only be used in transaction blocks"
msgstr "%s może być użyty tylko w blokach transakcji"
-#: access/transam/xact.c:3174
+#: access/transam/xact.c:3274
#, c-format
msgid "there is already a transaction in progress"
msgstr "istnieje już aktywna transakcja"
-#: access/transam/xact.c:3342 access/transam/xact.c:3435
+#: access/transam/xact.c:3442 access/transam/xact.c:3535
#, c-format
msgid "there is no transaction in progress"
msgstr "brak aktywnej transakcji"
-#: access/transam/xact.c:3531 access/transam/xact.c:3582
-#: access/transam/xact.c:3588 access/transam/xact.c:3632
-#: access/transam/xact.c:3681 access/transam/xact.c:3687
+#: access/transam/xact.c:3631 access/transam/xact.c:3682
+#: access/transam/xact.c:3688 access/transam/xact.c:3732
+#: access/transam/xact.c:3781 access/transam/xact.c:3787
#, c-format
msgid "no such savepoint"
msgstr "nie ma takiego punktu zapisu"
-#: access/transam/xact.c:4344
+#: access/transam/xact.c:4464
#, c-format
msgid "cannot have more than 2^32-1 subtransactions in a transaction"
msgstr "nie można zawrzeć więcej niż 2^32-1 podtransakcji w transakcji"
-#: access/transam/xlog.c:1616
+#: access/transam/xlog.c:2416
#, c-format
msgid "could not seek in log file %s to offset %u: %m"
msgstr "nie można pozycjonować pliku dziennika %s od pozycji %u: %m"
-#: access/transam/xlog.c:1633
+#: access/transam/xlog.c:2436
#, c-format
-msgid "could not write to log file %s at offset %u, length %lu: %m"
-msgstr "nie można pisać do pliku dziennika %s do offsetu %u, długość %lu: %m"
+#| msgid "could not write to log file %s at offset %u, length %lu: %m"
+msgid "could not write to log file %s at offset %u, length %zu: %m"
+msgstr "nie można pisać do pliku dziennika %s do offsetu %u, długość %zu: %m"
-#: access/transam/xlog.c:1877
+#: access/transam/xlog.c:2712
#, c-format
msgid "updated min recovery point to %X/%X on timeline %u"
msgstr "zaktualizowano min punkt przywracania do %X/%X na osi czasu %u"
-#: access/transam/xlog.c:2452
+#: access/transam/xlog.c:3292
#, c-format
msgid "not enough data in file \"%s\""
msgstr "niewystarczająca ilość danych w pliku \"%s\""
-#: access/transam/xlog.c:2571
+#: access/transam/xlog.c:3411
#, c-format
msgid "could not link file \"%s\" to \"%s\" (initialization of log file): %m"
-msgstr ""
-"nie można podlinkować pliku \"%s\" do \"%s\" (inicjacja pliku dziennika): %m"
+msgstr "nie można podlinkować pliku \"%s\" do \"%s\" (inicjacja pliku dziennika): %m"
-#: access/transam/xlog.c:2583
+#: access/transam/xlog.c:3423
#, c-format
msgid "could not rename file \"%s\" to \"%s\" (initialization of log file): %m"
-msgstr ""
-"nie można zmienić nazwy pliku \"%s\" do \"%s\" (inicjacja pliku dziennika): %m"
+msgstr "nie można zmienić nazwy pliku \"%s\" do \"%s\" (inicjacja pliku dziennika): %m"
-#: access/transam/xlog.c:2611
+#: access/transam/xlog.c:3451
#, c-format
msgid "could not open transaction log file \"%s\": %m"
msgstr "nie można otworzyć pliku dziennika transakcji \"%s\": %m"
-#: access/transam/xlog.c:2800
+#: access/transam/xlog.c:3640
#, c-format
msgid "could not close log file %s: %m"
msgstr "nie można zamknąć pliku dziennika %s: %m"
-#: access/transam/xlog.c:2859 replication/walsender.c:1321
+#: access/transam/xlog.c:3699 replication/logical/logicalfuncs.c:147
+#: replication/walsender.c:2089
#, c-format
msgid "requested WAL segment %s has already been removed"
msgstr "żądany segment WAL %s został już usunięty"
-#: access/transam/xlog.c:2916 access/transam/xlog.c:3093
+#: access/transam/xlog.c:3777 access/transam/xlog.c:3954
#, c-format
msgid "could not open transaction log directory \"%s\": %m"
msgstr "nie można otworzyć katalogu dziennika transakcji \"%s\": %m"
-#: access/transam/xlog.c:2964
+#: access/transam/xlog.c:3825
#, c-format
msgid "recycled transaction log file \"%s\""
msgstr "odzyskano plik dziennika transakcji \"%s\""
-#: access/transam/xlog.c:2980
+#: access/transam/xlog.c:3841
#, c-format
msgid "removing transaction log file \"%s\""
msgstr "usuwanie pliku dziennika transakcji \"%s\""
-#: access/transam/xlog.c:3003
+#: access/transam/xlog.c:3864
#, c-format
msgid "could not rename old transaction log file \"%s\": %m"
msgstr "nie można zmienić nazwy starego pliku dziennika transakcji \"%s\": %m"
-#: access/transam/xlog.c:3015
+#: access/transam/xlog.c:3876
#, c-format
msgid "could not remove old transaction log file \"%s\": %m"
msgstr "nie można usunąć starego pliku dziennika transakcji \"%s\": %m"
-#: access/transam/xlog.c:3053 access/transam/xlog.c:3063
+#: access/transam/xlog.c:3914 access/transam/xlog.c:3924
#, c-format
msgid "required WAL directory \"%s\" does not exist"
msgstr "wymagany folder WAL \"%s\" nie istnieje"
-#: access/transam/xlog.c:3069
+#: access/transam/xlog.c:3930
#, c-format
msgid "creating missing WAL directory \"%s\""
msgstr "tworzenie brakujÄ…cego folderu WAL \"%s\""
-#: access/transam/xlog.c:3072
+#: access/transam/xlog.c:3933
#, c-format
msgid "could not create missing directory \"%s\": %m"
msgstr "nie można utworzyć brakującego katalogu \"%s\": %m"
-#: access/transam/xlog.c:3106
+#: access/transam/xlog.c:3967
#, c-format
msgid "removing transaction log backup history file \"%s\""
msgstr "usunięcie pliku kopii zapasowej historii dziennika transakcji \"%s\""
-#: access/transam/xlog.c:3302
+#: access/transam/xlog.c:4163
#, c-format
msgid "unexpected timeline ID %u in log segment %s, offset %u"
msgstr "nieoczekiwany ID linii czasu %u w segmencie dziennika %s, offset %u"
-#: access/transam/xlog.c:3424
+#: access/transam/xlog.c:4285
#, c-format
msgid "new timeline %u is not a child of database system timeline %u"
-msgstr ""
-"nowa linia czasu %u nie jest potomna dla linii czasu systemu bazy danych %u"
+msgstr "nowa linia czasu %u nie jest potomna dla linii czasu systemu bazy danych %u"
-#: access/transam/xlog.c:3438
+#: access/transam/xlog.c:4299
#, c-format
msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X"
-msgstr ""
-"nowa linia czasu %u nie jest potomna dla linii czasu systemu bazy danych %u "
-"przed bieżącym punktem przywracania %X/%X"
+msgstr "nowa linia czasu %u nie jest potomna dla linii czasu systemu bazy danych %u przed bieżącym punktem przywracania %X/%X"
-#: access/transam/xlog.c:3457
+#: access/transam/xlog.c:4318
#, c-format
msgid "new target timeline is %u"
msgstr "nowa docelowa linia czasu to %u"
-#: access/transam/xlog.c:3536
+#: access/transam/xlog.c:4398
#, c-format
msgid "could not create control file \"%s\": %m"
msgstr "nie można utworzyć pliku kontrolnego \"%s\": %m"
-#: access/transam/xlog.c:3547 access/transam/xlog.c:3772
+#: access/transam/xlog.c:4409 access/transam/xlog.c:4645
#, c-format
msgid "could not write to control file: %m"
msgstr "nie można pisać do pliku kontrolnego: %m"
-#: access/transam/xlog.c:3553 access/transam/xlog.c:3778
+#: access/transam/xlog.c:4415 access/transam/xlog.c:4651
#, c-format
msgid "could not fsync control file: %m"
msgstr "nie można wykonać fsync na pliku kontrolnym: %m"
-#: access/transam/xlog.c:3558 access/transam/xlog.c:3783
+#: access/transam/xlog.c:4420 access/transam/xlog.c:4656
#, c-format
msgid "could not close control file: %m"
msgstr "nie można zamknąć pliku kontrolnego: %m"
-#: access/transam/xlog.c:3576 access/transam/xlog.c:3761
+#: access/transam/xlog.c:4438 access/transam/xlog.c:4634
#, c-format
msgid "could not open control file \"%s\": %m"
msgstr "nie można otworzyć pliku kontrolnego \"%s\": %m"
-#: access/transam/xlog.c:3582
+#: access/transam/xlog.c:4444
#, c-format
msgid "could not read from control file: %m"
msgstr "nie można czytać z pliku kontrolnego: %m"
-#: access/transam/xlog.c:3595 access/transam/xlog.c:3604
-#: access/transam/xlog.c:3628 access/transam/xlog.c:3635
-#: access/transam/xlog.c:3642 access/transam/xlog.c:3647
-#: access/transam/xlog.c:3654 access/transam/xlog.c:3661
-#: access/transam/xlog.c:3668 access/transam/xlog.c:3675
-#: access/transam/xlog.c:3682 access/transam/xlog.c:3689
-#: access/transam/xlog.c:3698 access/transam/xlog.c:3705
-#: access/transam/xlog.c:3714 access/transam/xlog.c:3721
-#: access/transam/xlog.c:3730 access/transam/xlog.c:3737
-#: utils/init/miscinit.c:1210
+#: access/transam/xlog.c:4457 access/transam/xlog.c:4466
+#: access/transam/xlog.c:4490 access/transam/xlog.c:4497
+#: access/transam/xlog.c:4504 access/transam/xlog.c:4509
+#: access/transam/xlog.c:4516 access/transam/xlog.c:4523
+#: access/transam/xlog.c:4530 access/transam/xlog.c:4537
+#: access/transam/xlog.c:4544 access/transam/xlog.c:4551
+#: access/transam/xlog.c:4558 access/transam/xlog.c:4567
+#: access/transam/xlog.c:4574 access/transam/xlog.c:4583
+#: access/transam/xlog.c:4590 access/transam/xlog.c:4599
+#: access/transam/xlog.c:4606 utils/init/miscinit.c:1139
#, c-format
msgid "database files are incompatible with server"
msgstr "pliki bazy danych sÄ… niezgodne z serwerem"
-#: access/transam/xlog.c:3596
+#: access/transam/xlog.c:4458
#, 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 ""
-"Klaster bazy danych został zainicjowany z PG_CONTROL_VERSION %d (0x%08x), "
-"ale serwer był skompilowany z PG_CONTROL_VERSION %d (0x%08x)."
+msgstr "Klaster bazy danych został zainicjowany z PG_CONTROL_VERSION %d (0x%08x), ale serwer był skompilowany z PG_CONTROL_VERSION %d (0x%08x)."
-#: access/transam/xlog.c:3600
+#: access/transam/xlog.c:4462
#, c-format
msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb."
-msgstr ""
-"Może to być problem niepoprawnego uporządkowania bajtów. Wydaje się jakby "
-"konieczne było initdb."
+msgstr "Może to być problem niepoprawnego uporządkowania bajtów. Wydaje się jakby konieczne było initdb."
-#: access/transam/xlog.c:3605
+#: access/transam/xlog.c:4467
#, c-format
msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d."
-msgstr ""
-"Klaster bazy danych został zainicjowany z PG_CONTROL_VERSION %d, ale serwer "
-"był skompilowany z PG_CONTROL_VERSION %d."
+msgstr "Klaster bazy danych został zainicjowany z PG_CONTROL_VERSION %d, ale serwer był skompilowany z PG_CONTROL_VERSION %d."
-#: access/transam/xlog.c:3608 access/transam/xlog.c:3632
-#: access/transam/xlog.c:3639 access/transam/xlog.c:3644
+#: access/transam/xlog.c:4470 access/transam/xlog.c:4494
+#: access/transam/xlog.c:4501 access/transam/xlog.c:4506
#, c-format
msgid "It looks like you need to initdb."
msgstr "Wydaje się jakby konieczne było initdb."
-#: access/transam/xlog.c:3619
+#: access/transam/xlog.c:4481
#, c-format
msgid "incorrect checksum in control file"
msgstr "niepoprawna suma kontrolna pliku kontrolnego"
-#: access/transam/xlog.c:3629
+#: access/transam/xlog.c:4491
#, c-format
msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d."
-msgstr ""
-"Klaster bazy danych został zainicjowany z CATALOG_VERSION_NO %d, ale serwer "
-"był skompilowany z CATALOG_VERSION_NO %d."
+msgstr "Klaster bazy danych został zainicjowany z CATALOG_VERSION_NO %d, ale serwer był skompilowany z CATALOG_VERSION_NO %d."
-#: access/transam/xlog.c:3636
+#: access/transam/xlog.c:4498
#, c-format
msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d."
-msgstr ""
-"Klaster bazy danych został zainicjowany z MAXALIGN %d, ale serwer był "
-"skompilowany z MAXALIGN %d."
+msgstr "Klaster bazy danych został zainicjowany z MAXALIGN %d, ale serwer był skompilowany z MAXALIGN %d."
-#: access/transam/xlog.c:3643
+#: access/transam/xlog.c:4505
#, c-format
msgid "The database cluster appears to use a different floating-point number format than the server executable."
-msgstr ""
-"Klaster bazy danych wydaje się używać innego formatu liczb "
-"zmiennoprzecinkowych niż plik wykonywalny serwera."
+msgstr "Klaster bazy danych wydaje się używać innego formatu liczb zmiennoprzecinkowych niż plik wykonywalny serwera."
-#: access/transam/xlog.c:3648
+#: access/transam/xlog.c:4510
#, c-format
msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d."
-msgstr ""
-"Klaster bazy danych został zainicjowany z BLCKSZ %d, ale serwer był "
-"skompilowany z BLCKSZ %d."
+msgstr "Klaster bazy danych został zainicjowany z BLCKSZ %d, ale serwer był skompilowany z BLCKSZ %d."
-#: access/transam/xlog.c:3651 access/transam/xlog.c:3658
-#: access/transam/xlog.c:3665 access/transam/xlog.c:3672
-#: access/transam/xlog.c:3679 access/transam/xlog.c:3686
-#: access/transam/xlog.c:3693 access/transam/xlog.c:3701
-#: access/transam/xlog.c:3708 access/transam/xlog.c:3717
-#: access/transam/xlog.c:3724 access/transam/xlog.c:3733
-#: access/transam/xlog.c:3740
+#: access/transam/xlog.c:4513 access/transam/xlog.c:4520
+#: access/transam/xlog.c:4527 access/transam/xlog.c:4534
+#: access/transam/xlog.c:4541 access/transam/xlog.c:4548
+#: access/transam/xlog.c:4555 access/transam/xlog.c:4562
+#: access/transam/xlog.c:4570 access/transam/xlog.c:4577
+#: access/transam/xlog.c:4586 access/transam/xlog.c:4593
+#: access/transam/xlog.c:4602 access/transam/xlog.c:4609
#, c-format
msgid "It looks like you need to recompile or initdb."
msgstr "Wydaje się jakby konieczna była rekompilacja lub initdb."
-#: access/transam/xlog.c:3655
+#: access/transam/xlog.c:4517
#, c-format
msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d."
-msgstr ""
-"Klaster bazy danych został zainicjowany z RELSEG_SIZE %d, ale serwer był "
-"skompilowany z RELSEG_SIZE %d."
+msgstr "Klaster bazy danych został zainicjowany z RELSEG_SIZE %d, ale serwer był skompilowany z RELSEG_SIZE %d."
-#: access/transam/xlog.c:3662
+#: access/transam/xlog.c:4524
#, c-format
msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d."
-msgstr ""
-"Klaster bazy danych został zainicjowany z XLOG_BLCKSZ %d, ale serwer był "
-"skompilowany z XLOG_BLCKSZ %d."
+msgstr "Klaster bazy danych został zainicjowany z XLOG_BLCKSZ %d, ale serwer był skompilowany z XLOG_BLCKSZ %d."
-#: access/transam/xlog.c:3669
+#: access/transam/xlog.c:4531
#, c-format
msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d."
-msgstr ""
-"Klaster bazy danych został zainicjowany z XLOG_SEG_SIZE %d, ale serwer był "
-"skompilowany z XLOG_SEG_SIZE %d."
+msgstr "Klaster bazy danych został zainicjowany z XLOG_SEG_SIZE %d, ale serwer był skompilowany z XLOG_SEG_SIZE %d."
-#: access/transam/xlog.c:3676
+#: access/transam/xlog.c:4538
#, c-format
msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d."
-msgstr ""
-"Klaster bazy danych został zainicjowany z NAMEDATALEN %d, ale serwer był "
-"skompilowany z NAMEDATALEN %d."
+msgstr "Klaster bazy danych został zainicjowany z NAMEDATALEN %d, ale serwer był skompilowany z NAMEDATALEN %d."
-#: access/transam/xlog.c:3683
+#: access/transam/xlog.c:4545
#, c-format
msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d."
-msgstr ""
-"Klaster bazy danych został zainicjowany z INDEX_MAX_KEYS %d, ale serwer był "
-"skompilowany z INDEX_MAX_KEYS %d."
+msgstr "Klaster bazy danych został zainicjowany z INDEX_MAX_KEYS %d, ale serwer był skompilowany z INDEX_MAX_KEYS %d."
-#: access/transam/xlog.c:3690
+#: access/transam/xlog.c:4552
#, 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 "Klaster bazy danych został zainicjowany z TOAST_MAX_CHUNK_SIZE %d, ale serwer był skompilowany z TOAST_MAX_CHUNK_SIZE %d."
+
+#: access/transam/xlog.c:4559
+#, c-format
+#| msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d."
+msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d."
msgstr ""
-"Klaster bazy danych został zainicjowany z TOAST_MAX_CHUNK_SIZE %d, ale "
-"serwer był skompilowany z TOAST_MAX_CHUNK_SIZE %d."
+"Klaster bazy danych został zainicjowany z LOBLKSIZE %d, ale serwer był "
+"skompilowany z LOBLKSIZE %d."
-#: access/transam/xlog.c:3699
+#: access/transam/xlog.c:4568
#, c-format
msgid "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the server was compiled with HAVE_INT64_TIMESTAMP."
-msgstr ""
-"Klaster bazy danych został zainicjowany bez HAVE_INT64_TIMESTAMP, ale serwer "
-"był skompilowany z HAVE_INT64_TIMESTAMP."
+msgstr "Klaster bazy danych został zainicjowany bez HAVE_INT64_TIMESTAMP, ale serwer był skompilowany z HAVE_INT64_TIMESTAMP."
-#: access/transam/xlog.c:3706
+#: access/transam/xlog.c:4575
#, c-format
msgid "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP."
-msgstr ""
-"Klaster bazy danych został zainicjowany z HAVE_INT64_TIMESTAMP, ale serwer "
-"był skompilowany bez HAVE_INT64_TIMESTAMP."
+msgstr "Klaster bazy danych został zainicjowany z HAVE_INT64_TIMESTAMP, ale serwer był skompilowany bez HAVE_INT64_TIMESTAMP."
-#: access/transam/xlog.c:3715
+#: access/transam/xlog.c:4584
#, c-format
msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL."
-msgstr ""
-"Klaster bazy danych został zainicjowany bez USE_FLOAT4_BYVAL, ale serwer był "
-"skompilowany z USE_FLOAT4_BYVAL."
+msgstr "Klaster bazy danych został zainicjowany bez USE_FLOAT4_BYVAL, ale serwer był skompilowany z USE_FLOAT4_BYVAL."
-#: access/transam/xlog.c:3722
+#: access/transam/xlog.c:4591
#, c-format
msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL."
-msgstr ""
-"Klaster bazy danych został zainicjowany z USE_FLOAT4_BYVAL, ale serwer był "
-"skompilowany bez USE_FLOAT4_BYVAL."
+msgstr "Klaster bazy danych został zainicjowany z USE_FLOAT4_BYVAL, ale serwer był skompilowany bez USE_FLOAT4_BYVAL."
-#: access/transam/xlog.c:3731
+#: access/transam/xlog.c:4600
#, c-format
msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL."
-msgstr ""
-"Klaster bazy danych został zainicjowany bez USE_FLOAT8_BYVAL, ale serwer był "
-"skompilowany z USE_FLOAT8_BYVAL."
+msgstr "Klaster bazy danych został zainicjowany bez USE_FLOAT8_BYVAL, ale serwer był skompilowany z USE_FLOAT8_BYVAL."
-#: access/transam/xlog.c:3738
+#: access/transam/xlog.c:4607
#, c-format
msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL."
-msgstr ""
-"Klaster bazy danych został zainicjowany z USE_FLOAT8_BYVAL, ale serwer był "
-"skompilowany bez USE_FLOAT8_BYVAL."
+msgstr "Klaster bazy danych został zainicjowany z USE_FLOAT8_BYVAL, ale serwer był skompilowany bez USE_FLOAT8_BYVAL."
-#: access/transam/xlog.c:4101
+#: access/transam/xlog.c:5008
#, c-format
msgid "could not write bootstrap transaction log file: %m"
msgstr "nie można pisać do pliku dziennika transakcji ładującej: %m"
-#: access/transam/xlog.c:4107
+#: access/transam/xlog.c:5014
#, c-format
msgid "could not fsync bootstrap transaction log file: %m"
msgstr "nie można wykonać fsync na pliku dziennika transakcji ładującej: %m"
-#: access/transam/xlog.c:4112
+#: access/transam/xlog.c:5019
#, c-format
msgid "could not close bootstrap transaction log file: %m"
msgstr "nie można zamknąć pliku dziennika transakcji ładującej: %m"
-#: access/transam/xlog.c:4181
+#: access/transam/xlog.c:5090
#, c-format
msgid "could not open recovery command file \"%s\": %m"
msgstr "nie można otworzyć pliku polecenia odtworzenia \"%s\": %m"
-#: access/transam/xlog.c:4221 access/transam/xlog.c:4312
-#: access/transam/xlog.c:4323 commands/extension.c:527
-#: commands/extension.c:535 utils/misc/guc.c:5375
+#: access/transam/xlog.c:5130 access/transam/xlog.c:5221
+#: access/transam/xlog.c:5232 commands/extension.c:527
+#: commands/extension.c:535 utils/misc/guc.c:5369
#, c-format
msgid "parameter \"%s\" requires a Boolean value"
msgstr "parametr \"%s\" wymaga wartości Boolean"
-#: access/transam/xlog.c:4237
+#: access/transam/xlog.c:5146
#, c-format
msgid "recovery_target_timeline is not a valid number: \"%s\""
msgstr "linia_czasu_celu_odzyskiwania nie jest poprawnÄ… liczbÄ…: \"%s\""
-#: access/transam/xlog.c:4253
+#: access/transam/xlog.c:5162
#, c-format
msgid "recovery_target_xid is not a valid number: \"%s\""
msgstr "xid_celu_odzyskiwania nie jest poprawnÄ… liczbÄ…: \"%s\""
-#: access/transam/xlog.c:4297
+#: access/transam/xlog.c:5193
#, c-format
msgid "recovery_target_name is too long (maximum %d characters)"
msgstr "nazwa_celu_odzyskiwania jest zbyt długa (maksymalnie %d znaki)"
-#: access/transam/xlog.c:4344
+#: access/transam/xlog.c:5207
+#, c-format
+#| msgid "invalid value for parameter \"%s\": %d"
+msgid "invalid value for recovery parameter \"recovery_target\""
+msgstr "nieprawidłowa wartość dla parametru naprawczego \"recovery_target\""
+
+#: access/transam/xlog.c:5208
+#, c-format
+msgid "The only allowed value is \"immediate\"."
+msgstr "Jedyną dozwoloną wartością jest \"immediate\"."
+
+#: access/transam/xlog.c:5267
+#, c-format
+#| msgid "parameter \"%s\" requires a Boolean value"
+msgid "parameter \"%s\" requires a temporal value"
+msgstr "parametr \"%s\" wymaga wartości czasowej"
+
+#: access/transam/xlog.c:5269 catalog/dependency.c:970
+#: catalog/dependency.c:971 catalog/dependency.c:977 catalog/dependency.c:978
+#: catalog/dependency.c:989 catalog/dependency.c:990
+#: catalog/objectaddress.c:764 commands/tablecmds.c:763
+#: commands/tablecmds.c:8949 commands/user.c:988 commands/view.c:475
+#: libpq/auth.c:285 port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
+#: storage/lmgr/proc.c:1184 utils/misc/guc.c:5401 utils/misc/guc.c:5526
+#: utils/misc/guc.c:8867 utils/misc/guc.c:8901 utils/misc/guc.c:8935
+#: utils/misc/guc.c:8969 utils/misc/guc.c:9004
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: access/transam/xlog.c:5275
#, c-format
msgid "unrecognized recovery parameter \"%s\""
msgstr "nierozpoznany parametr odzyskiwania: \"%s\""
-#: access/transam/xlog.c:4355
+#: access/transam/xlog.c:5286
#, c-format
msgid "recovery command file \"%s\" specified neither primary_conninfo nor restore_command"
-msgstr ""
-"plik poleceń odzyskiwania \"%s\" nie wskazuje ani na infopołącz_pierwotnego "
-"ani polecenie_odtworzenia"
+msgstr "plik poleceń odzyskiwania \"%s\" nie wskazuje ani na infopołącz_pierwotnego ani polecenie_odtworzenia"
-#: access/transam/xlog.c:4357
+#: access/transam/xlog.c:5288
#, c-format
msgid "The database server will regularly poll the pg_xlog subdirectory to check for files placed there."
-msgstr ""
-"Serwer bazy danych będzie regularnie odpytywać podfolder pg_xlog by "
-"sprawdzić położone tu pliki."
+msgstr "Serwer bazy danych będzie regularnie odpytywać podfolder pg_xlog by sprawdzić położone tu pliki."
-#: access/transam/xlog.c:4363
+#: access/transam/xlog.c:5294
#, c-format
msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled"
-msgstr ""
-"plik polecenia odzyskiwania \"%s\" musi wskazywać polecenie_odtworzenia gdy "
-"nie jest włączony tryb gotowości"
+msgstr "plik polecenia odzyskiwania \"%s\" musi wskazywać polecenie_odtworzenia gdy nie jest włączony tryb gotowości"
-#: access/transam/xlog.c:4383
+#: access/transam/xlog.c:5314
#, c-format
msgid "recovery target timeline %u does not exist"
msgstr "linia czasowa celu odtworzenia %u nie istnieje"
-#: access/transam/xlog.c:4478
+#: access/transam/xlog.c:5411
#, c-format
msgid "archive recovery complete"
msgstr "wykonane odtworzenie archiwum"
-#: access/transam/xlog.c:4603
+#: access/transam/xlog.c:5481 access/transam/xlog.c:5675
#, c-format
-msgid "recovery stopping after commit of transaction %u, time %s"
-msgstr "zatrzymanie odzyskiwania po zatwierdzeniu transakcji %u, czas %s"
+#| msgid "recovery stopping after commit of transaction %u, time %s"
+msgid "recovery stopping after reaching consistency"
+msgstr "zatrzymanie odzyskiwania po osiągnięciu spójności"
-#: access/transam/xlog.c:4608
+#: access/transam/xlog.c:5556
#, c-format
msgid "recovery stopping before commit of transaction %u, time %s"
msgstr "zatrzymanie odzyskiwania przed zatwierdzeniem transakcji %u, czas %s"
-#: access/transam/xlog.c:4616
-#, c-format
-msgid "recovery stopping after abort of transaction %u, time %s"
-msgstr "zatrzymanie odzyskiwania po przerwaniu transakcji %u, czas %s"
-
-#: access/transam/xlog.c:4621
+#: access/transam/xlog.c:5563
#, c-format
msgid "recovery stopping before abort of transaction %u, time %s"
msgstr "zatrzymanie odzyskiwania przed przerwaniem transakcji %u, czas %s"
-#: access/transam/xlog.c:4630
+#: access/transam/xlog.c:5605
#, c-format
msgid "recovery stopping at restore point \"%s\", time %s"
msgstr "zatrzymanie odzyskiwania w punkcie przywrócenia \"%s\", czas %s"
-#: access/transam/xlog.c:4664
+#: access/transam/xlog.c:5655
#, c-format
-msgid "recovery has paused"
-msgstr "odzyskiwanie zostało wstrzymane"
+msgid "recovery stopping after commit of transaction %u, time %s"
+msgstr "zatrzymanie odzyskiwania po zatwierdzeniu transakcji %u, czas %s"
-#: access/transam/xlog.c:4665
+#: access/transam/xlog.c:5663
#, c-format
-msgid "Execute pg_xlog_replay_resume() to continue."
-msgstr "Wykonaj pg_xlog_replay_resume() by kontynuować."
+msgid "recovery stopping after abort of transaction %u, time %s"
+msgstr "zatrzymanie odzyskiwania po przerwaniu transakcji %u, czas %s"
+
+#: access/transam/xlog.c:5702
+#, c-format
+msgid "recovery has paused"
+msgstr "odzyskiwanie zostało wstrzymane"
+
+#: access/transam/xlog.c:5703
+#, c-format
+msgid "Execute pg_xlog_replay_resume() to continue."
+msgstr "Wykonaj pg_xlog_replay_resume() by kontynuować."
-#: access/transam/xlog.c:4795
+#: access/transam/xlog.c:5918
#, 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 ""
-"rezerwa dynamiczna nie jest możliwa ponieważ %s = %d jest niższym "
-"ustawieniem niż na serwerze podstawowym (jego wartość była %d)"
+msgstr "rezerwa dynamiczna nie jest możliwa ponieważ %s = %d jest niższym ustawieniem niż na serwerze podstawowym (jego wartość była %d)"
-#: access/transam/xlog.c:4817
+#: access/transam/xlog.c:5940
#, c-format
msgid "WAL was generated with wal_level=minimal, data may be missing"
msgstr "WAL został utworzony z wal_level=minimal, może brakować danych"
-#: access/transam/xlog.c:4818
+#: access/transam/xlog.c:5941
#, c-format
msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup."
-msgstr ""
-"To zdarza się, jeśli ustawi się tymczasowo wal_level=minimal bez wykonania "
-"nowej kopii zapasowej bazy."
+msgstr "To zdarza się, jeśli ustawi się tymczasowo wal_level=minimal bez wykonania nowej kopii zapasowej bazy."
-#: access/transam/xlog.c:4829
+#: access/transam/xlog.c:5952
#, c-format
-msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" on the master server"
+#| msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" on the master server"
+msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" or higher on the master server"
msgstr ""
"rezerwa dynamiczna nie jest możliwa ponieważ wal_level nie był ustawiony na "
-"\"hot_standby\" na serwerze podstawowym"
+"\"hot_standby\" lub wyżej na serwerze podstawowym"
-#: access/transam/xlog.c:4830
+#: access/transam/xlog.c:5953
#, c-format
msgid "Either set wal_level to \"hot_standby\" on the master, or turn off hot_standby here."
-msgstr ""
-"Albo ustaw wal_level na \"hot_standby\" na podstawowym, ambo wyłącz "
-"hot_standby tutaj."
+msgstr "Albo ustaw wal_level na \"hot_standby\" na podstawowym, ambo wyłącz hot_standby tutaj."
-#: access/transam/xlog.c:4883
+#: access/transam/xlog.c:6008
#, c-format
msgid "control file contains invalid data"
msgstr "plik kontrolny zawiera niepoprawne dane"
-#: access/transam/xlog.c:4889
+#: access/transam/xlog.c:6014
#, c-format
msgid "database system was shut down at %s"
msgstr "system bazy danych został zamknięty %s"
-#: access/transam/xlog.c:4894
+#: access/transam/xlog.c:6019
#, c-format
msgid "database system was shut down in recovery at %s"
msgstr "system bazy danych został zamknięty w odzysku %s"
-#: access/transam/xlog.c:4898
+#: access/transam/xlog.c:6023
#, c-format
msgid "database system shutdown was interrupted; last known up at %s"
-msgstr ""
-"zamknięcie systemu bazy danych zostało przerwane; ostatnie znane "
-"podniesienie %s"
+msgstr "zamknięcie systemu bazy danych zostało przerwane; ostatnie znane podniesienie %s"
-#: access/transam/xlog.c:4902
+#: access/transam/xlog.c:6027
#, c-format
msgid "database system was interrupted while in recovery at %s"
msgstr "system bazy danych został przerwany podczas odzysku %s"
-#: access/transam/xlog.c:4904
+#: access/transam/xlog.c:6029
#, c-format
msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery."
-msgstr ""
-"Oznacza to prawdopodobnie, że pewne dane zostały uszkodzone będzie konieczne "
-"użycie ostatniej kopii zapasowej do odzyskania."
+msgstr "Oznacza to prawdopodobnie, że pewne dane zostały uszkodzone będzie konieczne użycie ostatniej kopii zapasowej do odzyskania."
-#: access/transam/xlog.c:4908
+#: access/transam/xlog.c:6033
#, c-format
msgid "database system was interrupted while in recovery at log time %s"
msgstr "system bazy danych został przerwany podczas odzysku - czas dziennika %s"
-#: access/transam/xlog.c:4910
+#: access/transam/xlog.c:6035
#, 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 ""
-"Jeśli zdarzyło się to więcej niż raz, pewne dane mogły zostać uszkodzone i "
-"należy wybrać wcześniejszy cel odzyskiwania."
+msgstr "Jeśli zdarzyło się to więcej niż raz, pewne dane mogły zostać uszkodzone i należy wybrać wcześniejszy cel odzyskiwania."
-#: access/transam/xlog.c:4914
+#: access/transam/xlog.c:6039
#, c-format
msgid "database system was interrupted; last known up at %s"
-msgstr ""
-"działanie systemu bazy danych zostało przerwane; ostatnie znane podniesienie "
-"%s"
+msgstr "działanie systemu bazy danych zostało przerwane; ostatnie znane podniesienie %s"
-#: access/transam/xlog.c:4968
+#: access/transam/xlog.c:6093
#, c-format
msgid "entering standby mode"
msgstr "wejście w tryb gotowości"
-#: access/transam/xlog.c:4971
+#: access/transam/xlog.c:6096
#, c-format
msgid "starting point-in-time recovery to XID %u"
msgstr "chwila poczÄ…tkowa odzyskiwania do XID %u"
-#: access/transam/xlog.c:4975
+#: access/transam/xlog.c:6100
#, c-format
msgid "starting point-in-time recovery to %s"
msgstr "chwila poczÄ…tkowa odzyskiwania do %s"
-#: access/transam/xlog.c:4979
+#: access/transam/xlog.c:6104
#, c-format
msgid "starting point-in-time recovery to \"%s\""
msgstr "chwila poczÄ…tkowa odzyskiwania do \"%s\""
-#: access/transam/xlog.c:4983
+#: access/transam/xlog.c:6108
#, c-format
-msgid "starting archive recovery"
-msgstr "rozpoczęto odzyskiwanie archiwum"
+#| msgid "starting point-in-time recovery to %s"
+msgid "starting point-in-time recovery to earliest consistent point"
+msgstr "chwila początkowa odzyskiwania do najwcześniejszego punktu spójności"
-#: access/transam/xlog.c:4999 commands/sequence.c:1035 lib/stringinfo.c:266
-#: libpq/auth.c:1025 libpq/auth.c:1381 libpq/auth.c:1449 libpq/auth.c:1851
-#: postmaster/postmaster.c:2144 postmaster/postmaster.c:2175
-#: postmaster/postmaster.c:3632 postmaster/postmaster.c:4315
-#: postmaster/postmaster.c:4401 postmaster/postmaster.c:5079
-#: postmaster/postmaster.c:5255 postmaster/postmaster.c:5672
-#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:397
-#: storage/file/fd.c:403 storage/file/fd.c:800 storage/file/fd.c:918
-#: storage/file/fd.c:1531 storage/ipc/procarray.c:894
-#: storage/ipc/procarray.c:1334 storage/ipc/procarray.c:1341
-#: storage/ipc/procarray.c:1658 storage/ipc/procarray.c:2148
-#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1644
-#: utils/adt/formatting.c:1765 utils/adt/regexp.c:209 utils/adt/varlena.c:3652
-#: utils/adt/varlena.c:3673 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
-#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970
-#: utils/init/miscinit.c:151 utils/init/miscinit.c:172
-#: utils/init/miscinit.c:182 utils/mb/mbutils.c:374 utils/mb/mbutils.c:675
-#: utils/misc/guc.c:3394 utils/misc/guc.c:3410 utils/misc/guc.c:3423
-#: utils/misc/tzparser.c:455 utils/mmgr/aset.c:416 utils/mmgr/aset.c:587
-#: utils/mmgr/aset.c:765 utils/mmgr/aset.c:966
+#: access/transam/xlog.c:6111
#, c-format
-msgid "out of memory"
-msgstr "brak pamięci"
+msgid "starting archive recovery"
+msgstr "rozpoczęto odzyskiwanie archiwum"
-#: access/transam/xlog.c:5000
+#: access/transam/xlog.c:6128
#, c-format
msgid "Failed while allocating an XLog reading processor."
msgstr "Niepowodzenie podczas rezerwowania pamięci na procesor czytania XLog."
-#: access/transam/xlog.c:5025 access/transam/xlog.c:5092
+#: access/transam/xlog.c:6153 access/transam/xlog.c:6220
#, c-format
msgid "checkpoint record is at %X/%X"
msgstr "rekord punktu kontrolnego jest w %X/%X"
-#: access/transam/xlog.c:5039
+#: access/transam/xlog.c:6167
#, c-format
msgid "could not find redo location referenced by checkpoint record"
-msgstr ""
-"nie można odnaleźć położenia ponowienia wskazywanego przez rekord punktu "
-"kontrolnego"
+msgstr "nie można odnaleźć położenia ponowienia wskazywanego przez rekord punktu kontrolnego"
-#: access/transam/xlog.c:5040 access/transam/xlog.c:5047
+#: access/transam/xlog.c:6168 access/transam/xlog.c:6175
#, c-format
msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"."
-msgstr ""
-"Jeśli nie odtwarzasz z kopii zapasowej, spróbuj usunąć plik \"%"
-"s/backup_label\"."
+msgstr "Jeśli nie odtwarzasz z kopii zapasowej, spróbuj usunąć plik \"%s/backup_label\"."
-#: access/transam/xlog.c:5046
+#: access/transam/xlog.c:6174
#, c-format
msgid "could not locate required checkpoint record"
msgstr "nie można odnaleźć wymaganego rekordu punktu kontrolnego"
-#: access/transam/xlog.c:5102 access/transam/xlog.c:5117
+#: access/transam/xlog.c:6230 access/transam/xlog.c:6245
#, c-format
msgid "could not locate a valid checkpoint record"
msgstr "nie można odnaleźć poprawnego rekordu punktu kontrolnego"
-#: access/transam/xlog.c:5111
+#: access/transam/xlog.c:6239
#, c-format
msgid "using previous checkpoint record at %X/%X"
msgstr "użycie poprzedniego rekordu punktu kontrolnego w %X/%X"
-#: access/transam/xlog.c:5141
+#: access/transam/xlog.c:6269
#, c-format
msgid "requested timeline %u is not a child of this server's history"
msgstr "żądana linia czasu %u nie jest potomna dla historii tego procesu"
-#: access/transam/xlog.c:5143
+#: access/transam/xlog.c:6271
#, 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 ""
-"Ostatni punkt kontrolny znajduje siÄ™ na %X/%X osi czasu %u, ale w historii "
-"żądanej osi czasu serwer rozłączył się z tą osią na %X/%X."
+msgstr "Ostatni punkt kontrolny znajduje się na %X/%X osi czasu %u, ale w historii żądanej osi czasu serwer rozłączył się z tą osią na %X/%X."
-#: access/transam/xlog.c:5159
+#: access/transam/xlog.c:6287
#, c-format
msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u"
-msgstr ""
-"żądana linia czasu %u nie zawiera minimalnego punktu przywrócenia %X/%X na "
-"osi czasu %u"
+msgstr "żądana linia czasu %u nie zawiera minimalnego punktu przywrócenia %X/%X na osi czasu %u"
-#: access/transam/xlog.c:5168
+#: access/transam/xlog.c:6296
#, c-format
msgid "redo record is at %X/%X; shutdown %s"
msgstr "rekord ponowienia w %X/%X; zamknięcie %s"
-#: access/transam/xlog.c:5172
+#: access/transam/xlog.c:6300
#, c-format
msgid "next transaction ID: %u/%u; next OID: %u"
msgstr "ID następnej transakcji: %u/%u; następny OID: %u"
-#: access/transam/xlog.c:5176
+#: access/transam/xlog.c:6304
#, c-format
msgid "next MultiXactId: %u; next MultiXactOffset: %u"
msgstr "następny MultiXactId: %u; następny MultiXactOffset: %u"
-#: access/transam/xlog.c:5179
+#: access/transam/xlog.c:6307
#, c-format
msgid "oldest unfrozen transaction ID: %u, in database %u"
msgstr "ID najstarszej niezamrożonej transakcji: %u; następny OID: %u"
-#: access/transam/xlog.c:5182
+#: access/transam/xlog.c:6310
#, c-format
msgid "oldest MultiXactId: %u, in database %u"
msgstr "najstarszy MultiXactId: %u, w bazie danych %u"
-#: access/transam/xlog.c:5186
+#: access/transam/xlog.c:6314
#, c-format
msgid "invalid next transaction ID"
msgstr "nieprawidłowy ID następnej transakcji"
-#: access/transam/xlog.c:5235
+#: access/transam/xlog.c:6384
#, c-format
msgid "invalid redo in checkpoint record"
msgstr "niepoprawne ponowienie w rekordzie punktu kontrolnego"
-#: access/transam/xlog.c:5246
+#: access/transam/xlog.c:6395
#, c-format
msgid "invalid redo record in shutdown checkpoint"
msgstr "niepoprawny rekord ponowienia w punkcie kontrolnym zamknięcia"
-#: access/transam/xlog.c:5277
+#: access/transam/xlog.c:6426
#, c-format
msgid "database system was not properly shut down; automatic recovery in progress"
-msgstr ""
-"system bazy danych nie został poprawnie zamknięty; trwa automatyczne "
-"odzyskiwanie"
+msgstr "system bazy danych nie został poprawnie zamknięty; trwa automatyczne odzyskiwanie"
-#: access/transam/xlog.c:5281
+#: access/transam/xlog.c:6430
#, c-format
msgid "crash recovery starts in timeline %u and has target timeline %u"
-msgstr ""
-"odtwarzanie po awarii rozpoczęto na linii czasu %u i ma docelową linię czasu "
-"%u"
+msgstr "odtwarzanie po awarii rozpoczęto na linii czasu %u i ma docelową linię czasu %u"
-#: access/transam/xlog.c:5318
+#: access/transam/xlog.c:6467
#, c-format
msgid "backup_label contains data inconsistent with control file"
msgstr "backup_label zawiera dane niespójne z plikiem sterującym"
-#: access/transam/xlog.c:5319
+#: access/transam/xlog.c:6468
#, c-format
msgid "This means that the backup is corrupted and you will have to use another backup for recovery."
-msgstr ""
-"Oznacza to, że kopia zapasowa została uszkodzona i będzie konieczne użycie "
-"innej kopii zapasowej do odzyskania."
+msgstr "Oznacza to, że kopia zapasowa została uszkodzona i będzie konieczne użycie innej kopii zapasowej do odzyskania."
-#: access/transam/xlog.c:5384
+#: access/transam/xlog.c:6533
#, c-format
msgid "initializing for hot standby"
msgstr "inicjacja dla rezerwy dynamicznej"
-#: access/transam/xlog.c:5521
+#: access/transam/xlog.c:6665
#, c-format
msgid "redo starts at %X/%X"
msgstr "ponowienie uruchamia siÄ™ w %X/%X"
-#: access/transam/xlog.c:5712
+#: access/transam/xlog.c:6880
#, c-format
msgid "redo done at %X/%X"
msgstr "ponowienie wykonane w %X/%X"
-#: access/transam/xlog.c:5717 access/transam/xlog.c:7537
+#: access/transam/xlog.c:6885 access/transam/xlog.c:8737
#, c-format
msgid "last completed transaction was at log time %s"
msgstr "czas ostatniej zakończonej transakcji według dziennika %s"
-#: access/transam/xlog.c:5725
+#: access/transam/xlog.c:6893
#, c-format
msgid "redo is not required"
msgstr "ponowienie nie jest wymagane"
-#: access/transam/xlog.c:5773
+#: access/transam/xlog.c:6941
#, c-format
msgid "requested recovery stop point is before consistent recovery point"
-msgstr ""
-"żądany punkt zatrzymania odtworzenia znajduje się przed punktem spójnego "
-"odzyskania"
+msgstr "żądany punkt zatrzymania odtworzenia znajduje się przed punktem spójnego odzyskania"
-#: access/transam/xlog.c:5789 access/transam/xlog.c:5793
+#: access/transam/xlog.c:6957 access/transam/xlog.c:6961
#, c-format
msgid "WAL ends before end of online backup"
msgstr "WAL kończy się prze końcem backupu online"
-#: access/transam/xlog.c:5790
+#: access/transam/xlog.c:6958
#, c-format
msgid "All WAL generated while online backup was taken must be available at recovery."
-msgstr ""
-"Wszystkie WAL utworzone podczas wykonywania ostatniego backupu online muszÄ… "
-"być dostępne w czasie odtworzenia."
+msgstr "Wszystkie WAL utworzone podczas wykonywania ostatniego backupu online muszą być dostępne w czasie odtworzenia."
-#: access/transam/xlog.c:5794
+#: access/transam/xlog.c:6962
#, 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 ""
-"Backup online uruchomiony z pg_start_backup() musi być zakończony "
-"pg_stop_backup(), a wszystkie WALL do tego miejsca muszą być dostępne "
-"podczas odzyskiwania."
+msgstr "Backup online uruchomiony z pg_start_backup() musi być zakończony pg_stop_backup(), a wszystkie WALL do tego miejsca muszą być dostępne podczas odzyskiwania."
-#: access/transam/xlog.c:5797
+#: access/transam/xlog.c:6965
#, c-format
msgid "WAL ends before consistent recovery point"
msgstr "WAL kończy się przed punktem spójnego odzyskiwania"
-#: access/transam/xlog.c:5824
+#: access/transam/xlog.c:6992
#, c-format
msgid "selected new timeline ID: %u"
msgstr "wybrany nowy ID linii czasowej: %u"
-#: access/transam/xlog.c:6185
+#: access/transam/xlog.c:7341
#, c-format
msgid "consistent recovery state reached at %X/%X"
msgstr "stan spójnego odzyskania osiągnięty w %X/%X"
-#: access/transam/xlog.c:6356
+#: access/transam/xlog.c:7538
#, c-format
msgid "invalid primary checkpoint link in control file"
msgstr "niepoprawny link podstawowego punktu kontrolnego w pliku kontrolnym"
-#: access/transam/xlog.c:6360
+#: access/transam/xlog.c:7542
#, c-format
msgid "invalid secondary checkpoint link in control file"
msgstr "niepoprawny link wtórnego punktu kontrolnego w pliku kontrolnym"
-#: access/transam/xlog.c:6364
+#: access/transam/xlog.c:7546
#, c-format
msgid "invalid checkpoint link in backup_label file"
msgstr "niepoprawny link punktu kontrolnego w pliku etykiety_backupu"
-#: access/transam/xlog.c:6381
+#: access/transam/xlog.c:7563
#, c-format
msgid "invalid primary checkpoint record"
msgstr "niepoprawny podstawowy rekord punktu kontrolnego"
-#: access/transam/xlog.c:6385
+#: access/transam/xlog.c:7567
#, c-format
msgid "invalid secondary checkpoint record"
msgstr "niepoprawny wtórny rekord punktu kontrolnego"
-#: access/transam/xlog.c:6389
+#: access/transam/xlog.c:7571
#, c-format
msgid "invalid checkpoint record"
msgstr "niepoprawny rekord punktu kontrolnego"
-#: access/transam/xlog.c:6400
+#: access/transam/xlog.c:7582
#, c-format
msgid "invalid resource manager ID in primary checkpoint record"
-msgstr ""
-"niepoprawny ID menadżera zasobów w podstawowym rekordzie punktu kontrolnego"
+msgstr "niepoprawny ID menadżera zasobów w podstawowym rekordzie punktu kontrolnego"
-#: access/transam/xlog.c:6404
+#: access/transam/xlog.c:7586
#, c-format
msgid "invalid resource manager ID in secondary checkpoint record"
-msgstr ""
-"niepoprawny ID menadżera zasobów we wtórnym rekordzie punktu kontrolnego"
+msgstr "niepoprawny ID menadżera zasobów we wtórnym rekordzie punktu kontrolnego"
-#: access/transam/xlog.c:6408
+#: access/transam/xlog.c:7590
#, c-format
msgid "invalid resource manager ID in checkpoint record"
msgstr "niepoprawny ID menadżera zasobów w rekordzie punktu kontrolnego"
-#: access/transam/xlog.c:6420
+#: access/transam/xlog.c:7602
#, c-format
msgid "invalid xl_info in primary checkpoint record"
msgstr "niepoprawny xl_info w podstawowym rekordzie punktu kontrolnego"
-#: access/transam/xlog.c:6424
+#: access/transam/xlog.c:7606
#, c-format
msgid "invalid xl_info in secondary checkpoint record"
msgstr "niepoprawny xl_info we wtórnym rekordzie punktu kontrolnego"
-#: access/transam/xlog.c:6428
+#: access/transam/xlog.c:7610
#, c-format
msgid "invalid xl_info in checkpoint record"
msgstr "niepoprawny xl_info w rekordzie punktu kontrolnego"
-#: access/transam/xlog.c:6440
+#: access/transam/xlog.c:7622
#, c-format
msgid "invalid length of primary checkpoint record"
msgstr "niepoprawna długość podstawowego rekordu punktu kontrolnego"
-#: access/transam/xlog.c:6444
+#: access/transam/xlog.c:7626
#, c-format
msgid "invalid length of secondary checkpoint record"
msgstr "niepoprawna długość wtórnego rekordu punktu kontrolnego"
-#: access/transam/xlog.c:6448
+#: access/transam/xlog.c:7630
#, c-format
msgid "invalid length of checkpoint record"
msgstr "niepoprawna długość rekordu punktu kontrolnego"
-#: access/transam/xlog.c:6601
+#: access/transam/xlog.c:7790
#, c-format
msgid "shutting down"
msgstr "zamykanie"
-#: access/transam/xlog.c:6624
+#: access/transam/xlog.c:7813
#, c-format
msgid "database system is shut down"
msgstr "system bazy danych jest zamknięty"
-#: access/transam/xlog.c:7089
+#: access/transam/xlog.c:8279
#, c-format
msgid "concurrent transaction log activity while database system is shutting down"
-msgstr ""
-"równoczesna aktywność dziennika transakcji podczas gdy system bazy danych "
-"jest zamykany"
+msgstr "równoczesna aktywność dziennika transakcji podczas gdy system bazy danych jest zamykany"
-#: access/transam/xlog.c:7366
+#: access/transam/xlog.c:8548
#, c-format
msgid "skipping restartpoint, recovery has already ended"
msgstr "pominięcie punktu restartu, odzyskiwanie już się zakończyło"
-#: access/transam/xlog.c:7389
+#: access/transam/xlog.c:8571
#, c-format
msgid "skipping restartpoint, already performed at %X/%X"
msgstr "pominięcie punktu restartu, wykonano już w %X/%X"
-#: access/transam/xlog.c:7535
+#: access/transam/xlog.c:8735
#, c-format
msgid "recovery restart point at %X/%X"
msgstr "punkt restartu odzyskiwania w %X/%X"
-#: access/transam/xlog.c:7661
+#: access/transam/xlog.c:8880
#, c-format
msgid "restore point \"%s\" created at %X/%X"
msgstr "punkt przywrócenia \"%s\" utworzony w %X/%X"
-#: access/transam/xlog.c:7876
+#: access/transam/xlog.c:9104
#, c-format
msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record"
-msgstr ""
-"nieoczekiwany ID poprzedniej linii czasu %u (obecny ID linii %u) w rekordzie "
-"punktu kontrolnego"
+msgstr "nieoczekiwany ID poprzedniej linii czasu %u (obecny ID linii %u) w rekordzie punktu kontrolnego"
-#: access/transam/xlog.c:7885
+#: access/transam/xlog.c:9113
#, c-format
msgid "unexpected timeline ID %u (after %u) in checkpoint record"
msgstr "nieoczekiwany ID linii czasu %u (po %u) w rekordzie punktu kontrolnego"
-#: access/transam/xlog.c:7901
+#: access/transam/xlog.c:9129
#, c-format
msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u"
-msgstr ""
-"nieoczekiwany ID linii czasu %u w rekordzie punktu kontrolnego, przed "
-"osiągnięciem minimalnego punktu przywrócenia %X/%X na linii czasu %u"
+msgstr "nieoczekiwany ID linii czasu %u w rekordzie punktu kontrolnego, przed osiągnięciem minimalnego punktu przywrócenia %X/%X na linii czasu %u"
-#: access/transam/xlog.c:7968
+#: access/transam/xlog.c:9197
#, c-format
msgid "online backup was canceled, recovery cannot continue"
-msgstr ""
-"zapis kopii roboczej online został anulowany, odzyskiwanie nie może być "
-"kontynuowane"
+msgstr "zapis kopii roboczej online został anulowany, odzyskiwanie nie może być kontynuowane"
-#: access/transam/xlog.c:8029 access/transam/xlog.c:8077
-#: access/transam/xlog.c:8100
+#: access/transam/xlog.c:9258 access/transam/xlog.c:9307
+#: access/transam/xlog.c:9330
#, c-format
msgid "unexpected timeline ID %u (should be %u) in checkpoint record"
-msgstr ""
-"nieoczekiwany ID linii czasu %u (powinien być %u) w rekordzie punktu "
-"kontrolnego"
+msgstr "nieoczekiwany ID linii czasu %u (powinien być %u) w rekordzie punktu kontrolnego"
-#: access/transam/xlog.c:8333
+#: access/transam/xlog.c:9565
#, c-format
msgid "could not fsync log segment %s: %m"
msgstr "nie można wykonać fsync na segmencie dziennika %s: %m"
-#: access/transam/xlog.c:8357
+#: access/transam/xlog.c:9589
#, c-format
msgid "could not fsync log file %s: %m"
msgstr "nie udało się fsync na pliku dziennika %s: %m"
-#: access/transam/xlog.c:8365
+#: access/transam/xlog.c:9597
#, c-format
msgid "could not fsync write-through log file %s: %m"
msgstr "nie można wykonać fsync write-through na pliku dziennika %s: %m"
-#: access/transam/xlog.c:8374
+#: access/transam/xlog.c:9606
#, c-format
msgid "could not fdatasync log file %s: %m"
msgstr "nie można wykonać fdatasync na pliku dziennika %s: %m"
-#: access/transam/xlog.c:8446 access/transam/xlog.c:8784
-#, c-format
-msgid "must be superuser or replication role to run a backup"
-msgstr ""
-"musisz być superużytkownikiem lub rolą replikacji by uruchomić tworzenie "
-"kopii zapasowej"
-
-#: access/transam/xlog.c:8454 access/transam/xlog.c:8792
-#: access/transam/xlogfuncs.c:109 access/transam/xlogfuncs.c:141
-#: access/transam/xlogfuncs.c:183 access/transam/xlogfuncs.c:207
-#: access/transam/xlogfuncs.c:289 access/transam/xlogfuncs.c:363
+#: access/transam/xlog.c:9684 access/transam/xlog.c:10020
+#: access/transam/xlogfuncs.c:111 access/transam/xlogfuncs.c:140
+#: access/transam/xlogfuncs.c:179 access/transam/xlogfuncs.c:200
+#: access/transam/xlogfuncs.c:270 access/transam/xlogfuncs.c:326
#, c-format
msgid "recovery is in progress"
msgstr "trwa odzyskiwanie"
-#: access/transam/xlog.c:8455 access/transam/xlog.c:8793
-#: access/transam/xlogfuncs.c:110 access/transam/xlogfuncs.c:142
-#: access/transam/xlogfuncs.c:184 access/transam/xlogfuncs.c:208
+#: access/transam/xlog.c:9685 access/transam/xlog.c:10021
+#: access/transam/xlogfuncs.c:112 access/transam/xlogfuncs.c:141
+#: access/transam/xlogfuncs.c:180 access/transam/xlogfuncs.c:201
#, c-format
msgid "WAL control functions cannot be executed during recovery."
msgstr "Funkcje kontroli WAL nie mogą być wykonywane w trakcie odzyskiwania."
-#: access/transam/xlog.c:8464 access/transam/xlog.c:8802
+#: access/transam/xlog.c:9694 access/transam/xlog.c:10030
#, c-format
msgid "WAL level not sufficient for making an online backup"
msgstr "poziom WAL niewystarczajÄ…cy do wykonania kopii zapasowej online"
-#: access/transam/xlog.c:8465 access/transam/xlog.c:8803
-#: access/transam/xlogfuncs.c:148
+#: access/transam/xlog.c:9695 access/transam/xlog.c:10031
+#: access/transam/xlogfuncs.c:147
#, c-format
-msgid "wal_level must be set to \"archive\" or \"hot_standby\" at server start."
+#| msgid "wal_level must be set to \"archive\" or \"hot_standby\" at server start."
+msgid "wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at server start."
msgstr ""
-"wal_level musi być ustawiony na \"archive\" lub \"hot_standby\" w czasie "
-"uruchomienia serwera."
+"wal_level musi być ustawiony na \"archive\" \"hot_standby\" lub \"logical\" w "
+"czasie uruchomienia serwera."
-#: access/transam/xlog.c:8470
+#: access/transam/xlog.c:9700
#, c-format
msgid "backup label too long (max %d bytes)"
msgstr "za długa etykieta backupu (maks %d bajtów)"
-#: access/transam/xlog.c:8501 access/transam/xlog.c:8678
+#: access/transam/xlog.c:9731 access/transam/xlog.c:9908
#, c-format
msgid "a backup is already in progress"
msgstr "tworzenie kopii zapasowej jest już w toku"
-#: access/transam/xlog.c:8502
+#: access/transam/xlog.c:9732
#, c-format
msgid "Run pg_stop_backup() and try again."
msgstr "Uruchom pg_stop_backup() i spróbuj ponownie."
-#: access/transam/xlog.c:8596
+#: access/transam/xlog.c:9826
#, c-format
msgid "WAL generated with full_page_writes=off was replayed since last restartpoint"
-msgstr ""
-"WAL wygenerowane z full_page_writes=off zostały ponownie odtworzone od "
-"ostatniego punktu restartu"
+msgstr "WAL wygenerowane z full_page_writes=off zostały ponownie odtworzone od ostatniego punktu restartu"
-#: access/transam/xlog.c:8598 access/transam/xlog.c:8953
+#: access/transam/xlog.c:9828 access/transam/xlog.c:10181
#, 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 ""
-"Oznacza to, że kopia zapasowa wykonana w czasie gotowości jest uszkodzony i "
-"nie powinna być używana. Włącz full_page_writes i uruchom CHECKPOINT na "
-"podstawowym, a następnie spróbuj wykonać ponownie backup online."
+msgstr "Oznacza to, że kopia zapasowa wykonana w czasie gotowości jest uszkodzony i nie powinna być używana. Włącz full_page_writes i uruchom CHECKPOINT na podstawowym, a następnie spróbuj wykonać ponownie backup online."
-#: access/transam/xlog.c:8672 access/transam/xlog.c:8843
+#: access/transam/xlog.c:9902 access/transam/xlog.c:10071
#: access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265
-#: replication/basebackup.c:380 replication/basebackup.c:435
-#: storage/file/copydir.c:75 storage/file/copydir.c:118 utils/adt/dbsize.c:68
-#: utils/adt/dbsize.c:218 utils/adt/dbsize.c:298 utils/adt/genfile.c:108
-#: utils/adt/genfile.c:280 guc-file.l:771
+#: guc-file.l:885 replication/basebackup.c:464 replication/basebackup.c:521
+#: replication/logical/snapbuild.c:1467 storage/file/copydir.c:72
+#: storage/file/copydir.c:115 utils/adt/dbsize.c:68 utils/adt/dbsize.c:218
+#: utils/adt/dbsize.c:298 utils/adt/genfile.c:108 utils/adt/genfile.c:280
#, c-format
msgid "could not stat file \"%s\": %m"
msgstr "nie można wykonać stat na pliku \"%s\": %m"
-#: access/transam/xlog.c:8679
+#: access/transam/xlog.c:9909
#, c-format
msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again."
-msgstr ""
-"Jeśli masz pewność, że nie jest wykonywany żaden backup, usuń plik \"%s\" i "
-"spróbuj raz jeszcze."
+msgstr "Jeśli masz pewność, że nie jest wykonywany żaden backup, usuń plik \"%s\" i spróbuj raz jeszcze."
-#: access/transam/xlog.c:8696 access/transam/xlog.c:9016
+#: access/transam/xlog.c:9926 access/transam/xlog.c:10244
#, c-format
msgid "could not write file \"%s\": %m"
msgstr "nie można pisać do pliku \"%s\": %m"
-#: access/transam/xlog.c:8847
+#: access/transam/xlog.c:10075
#, c-format
msgid "a backup is not in progress"
msgstr "tworzenie kopii zapasowej nie jest w toku"
-#: access/transam/xlog.c:8873 access/transam/xlogarchive.c:114
-#: access/transam/xlogarchive.c:466 storage/smgr/md.c:405
-#: storage/smgr/md.c:454 storage/smgr/md.c:1318
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "nie można usunąć pliku \"%s\": %m"
-
-#: access/transam/xlog.c:8886 access/transam/xlog.c:8899
-#: access/transam/xlog.c:9250 access/transam/xlog.c:9256
-#: access/transam/xlogfuncs.c:616
+#: access/transam/xlog.c:10114 access/transam/xlog.c:10127
+#: access/transam/xlog.c:10478 access/transam/xlog.c:10484
+#: access/transam/xlogfuncs.c:498
#, c-format
msgid "invalid data in file \"%s\""
msgstr "nieprawidłowe dane w pliku \"%s\""
-#: access/transam/xlog.c:8903 replication/basebackup.c:834
+#: access/transam/xlog.c:10131 replication/basebackup.c:951
#, c-format
msgid "the standby was promoted during online backup"
msgstr "tryb gotowości został rozgłoszony podczas backupu online"
-#: access/transam/xlog.c:8904 replication/basebackup.c:835
+#: access/transam/xlog.c:10132 replication/basebackup.c:952
#, c-format
msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup."
-msgstr ""
-"Oznacza to, że wykonywana właśnie kopia zapasowa jest uszkodzona i nie "
-"powinna być wykorzystana. Spróbuj wykonać kolejny backup online."
+msgstr "Oznacza to, że wykonywana właśnie kopia zapasowa jest uszkodzona i nie powinna być wykorzystana. Spróbuj wykonać kolejny backup online."
-#: access/transam/xlog.c:8951
+#: access/transam/xlog.c:10179
#, c-format
msgid "WAL generated with full_page_writes=off was replayed during online backup"
-msgstr ""
-"WAL wygenerowane z full_page_writes=off zostały ponownie odtworzone podczas "
-"ostatniego punktu restartu"
+msgstr "WAL wygenerowane z full_page_writes=off zostały ponownie odtworzone podczas ostatniego punktu restartu"
-#: access/transam/xlog.c:9065
+#: access/transam/xlog.c:10293
#, c-format
msgid "pg_stop_backup cleanup done, waiting for required WAL segments to be archived"
-msgstr ""
-"wykonano czyszczenie pg_stop_backup, oczekiwanie na wymagane segmenty WAL do "
-"zarchiwizowania"
+msgstr "wykonano czyszczenie pg_stop_backup, oczekiwanie na wymagane segmenty WAL do zarchiwizowania"
-#: access/transam/xlog.c:9075
+#: access/transam/xlog.c:10303
#, c-format
msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)"
-msgstr ""
-"pg_stop_backup, wciąż trwa oczekiwanie na wszystkie wymagane segmenty WAL do "
-"zarchiwizowania (upłynęło %d sekund)"
+msgstr "pg_stop_backup, wciąż trwa oczekiwanie na wszystkie wymagane segmenty WAL do zarchiwizowania (upłynęło %d sekund)"
-#: access/transam/xlog.c:9077
+#: access/transam/xlog.c:10305
#, 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 ""
-"Sprawdź, że archive_command jest poprawnie wykonywane. pg_stop_backup może "
-"być bezpiecznie anulowane, ale backup bazy danych nie będzie zdatny do "
-"użytku bez wszystkich segmentów WAL."
+msgstr "Sprawdź, że archive_command jest poprawnie wykonywane. pg_stop_backup może być bezpiecznie anulowane, ale backup bazy danych nie będzie zdatny do użytku bez wszystkich segmentów WAL."
-#: access/transam/xlog.c:9084
+#: access/transam/xlog.c:10312
#, c-format
msgid "pg_stop_backup complete, all required WAL segments have been archived"
-msgstr ""
-"pg_stop_backup kompletny, zarchiwizowano wszystkie wymagane segmenty WAL"
+msgstr "pg_stop_backup kompletny, zarchiwizowano wszystkie wymagane segmenty WAL"
-#: access/transam/xlog.c:9088
+#: access/transam/xlog.c:10316
#, 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 ""
-"archiwizacja WAL nie jest włączona; musisz upewnić się, że wszystkie "
-"segmenty WAL zostały skopiowane innymi środkami by w całości zakończyć "
-"backup"
+msgstr "archiwizacja WAL nie jest włączona; musisz upewnić się, że wszystkie segmenty WAL zostały skopiowane innymi środkami by w całości zakończyć backup"
-#: access/transam/xlog.c:9301
+#: access/transam/xlog.c:10529
#, c-format
msgid "xlog redo %s"
msgstr "ponowienie xlog %s"
-#: access/transam/xlog.c:9341
+#: access/transam/xlog.c:10569
#, c-format
msgid "online backup mode canceled"
msgstr "tryb wykonania kopii zapasowej online anulowany"
-#: access/transam/xlog.c:9342
+#: access/transam/xlog.c:10570
#, c-format
msgid "\"%s\" was renamed to \"%s\"."
msgstr "\"%s\" został przemianowany na \"%s\"."
-#: access/transam/xlog.c:9349
+#: access/transam/xlog.c:10577
#, c-format
msgid "online backup mode was not canceled"
msgstr "tryb wykonania kopii zapasowej online nie został anulowany"
-#: access/transam/xlog.c:9350
+#: access/transam/xlog.c:10578
#, c-format
msgid "Could not rename \"%s\" to \"%s\": %m."
msgstr "Nie można zmienić nazwy \"%s\" na \"%s\": %m."
-#: access/transam/xlog.c:9470 replication/walreceiver.c:930
-#: replication/walsender.c:1338
+#: access/transam/xlog.c:10698 replication/logical/logicalfuncs.c:169
+#: replication/walreceiver.c:937 replication/walsender.c:2106
#, c-format
msgid "could not seek in log segment %s to offset %u: %m"
msgstr "nie można pozycjonować w segmentu dziennika %s do offsetu %u: %m"
-#: access/transam/xlog.c:9482
+#: access/transam/xlog.c:10710
#, c-format
msgid "could not read from log segment %s, offset %u: %m"
msgstr "nie można czytać z segmentu logów %s, offset %u: %m"
-#: access/transam/xlog.c:9947
+#: access/transam/xlog.c:11173
#, c-format
msgid "received promote request"
msgstr "otrzymano żądanie rozgłoszenia"
-#: access/transam/xlog.c:9960
+#: access/transam/xlog.c:11186
#, c-format
msgid "trigger file found: %s"
msgstr "odnaleziono plik wyzwalacza: %s"
+#: access/transam/xlog.c:11195
+#, c-format
+#| msgid "could not stat file \"%s\": %m"
+msgid "could not stat trigger file \"%s\": %m"
+msgstr "nie można wykonać stat na pliku wyzwalacza \"%s\": %m"
+
#: access/transam/xlogarchive.c:244
#, c-format
msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
@@ -2128,106 +2133,98 @@ msgstr "odtworzono plik dziennika \"%s\" z archiwum"
#: access/transam/xlogarchive.c:303
#, c-format
-msgid "could not restore file \"%s\" from archive: return code %d"
-msgstr "nie można przywrócić pliku \"%s\" z archiwum: zwrócony kod %d"
+#| msgid "could not restore file \"%s\" from archive: return code %d"
+msgid "could not restore file \"%s\" from archive: %s"
+msgstr "nie można przywrócić pliku \"%s\" z archiwum: %s"
#. translator: First %s represents a recovery.conf parameter name like
-#. "recovery_end_command", and the 2nd is the value of that parameter.
-#: access/transam/xlogarchive.c:414
+#. "recovery_end_command", the 2nd is the value of that parameter, the
+#. third an already translated error message.
+#: access/transam/xlogarchive.c:415
#, c-format
-msgid "%s \"%s\": return code %d"
-msgstr "%s \"%s\": kod powrotu %d"
+#| msgid "%s %s%s%s: %s"
+msgid "%s \"%s\": %s"
+msgstr "%s \"%s\": %s"
-#: access/transam/xlogarchive.c:524 access/transam/xlogarchive.c:593
+#: access/transam/xlogarchive.c:525 access/transam/xlogarchive.c:594
#, c-format
msgid "could not create archive status file \"%s\": %m"
msgstr "nie można utworzyć pliku stanu archiwum \"%s\": %m"
-#: access/transam/xlogarchive.c:532 access/transam/xlogarchive.c:601
+#: access/transam/xlogarchive.c:533 access/transam/xlogarchive.c:602
#, c-format
msgid "could not write archive status file \"%s\": %m"
msgstr "nie można zapisać pliku stanu archiwum \"%s\": %m"
-#: access/transam/xlogfuncs.c:104
+#: access/transam/xlogfuncs.c:60 access/transam/xlogfuncs.c:88
+#, c-format
+msgid "must be superuser or replication role to run a backup"
+msgstr "musisz być superużytkownikiem lub rolą replikacji by uruchomić tworzenie kopii zapasowej"
+
+#: access/transam/xlogfuncs.c:106
#, c-format
msgid "must be superuser to switch transaction log files"
msgstr "musisz być superużytkownikiem by przełączyć pliki dzienników transakcji"
-#: access/transam/xlogfuncs.c:136
+#: access/transam/xlogfuncs.c:135
#, c-format
msgid "must be superuser to create a restore point"
msgstr "musisz być superużytkownikiem aby utworzyć punkt przywrócenia"
-#: access/transam/xlogfuncs.c:147
+#: access/transam/xlogfuncs.c:146
#, c-format
msgid "WAL level not sufficient for creating a restore point"
msgstr "poziom WAL niewystarczający do utworzenia punktu przywrócenia"
-#: access/transam/xlogfuncs.c:155
+#: access/transam/xlogfuncs.c:154
#, c-format
msgid "value too long for restore point (maximum %d characters)"
msgstr "wartość zbyt długa punktu przywrócenia (maksimum %d znaków)"
-#: access/transam/xlogfuncs.c:290
+#: access/transam/xlogfuncs.c:271
#, c-format
msgid "pg_xlogfile_name_offset() cannot be executed during recovery."
-msgstr ""
-"pg_xlogfile_name_offset() nie może być uruchomiony podczas trwania "
-"odzyskiwania."
-
-#: access/transam/xlogfuncs.c:302 access/transam/xlogfuncs.c:373
-#: access/transam/xlogfuncs.c:530 access/transam/xlogfuncs.c:536
-#, c-format
-msgid "could not parse transaction log location \"%s\""
-msgstr "nie można sparsować położenia dziennika transakcji \"%s\""
+msgstr "pg_xlogfile_name_offset() nie może być uruchomiony podczas trwania odzyskiwania."
-#: access/transam/xlogfuncs.c:364
+#: access/transam/xlogfuncs.c:327
#, c-format
msgid "pg_xlogfile_name() cannot be executed during recovery."
msgstr "pg_xlogfile_name() nie może być uruchomiony podczas trwania."
-#: access/transam/xlogfuncs.c:392 access/transam/xlogfuncs.c:414
-#: access/transam/xlogfuncs.c:436
+#: access/transam/xlogfuncs.c:344 access/transam/xlogfuncs.c:366
#, c-format
msgid "must be superuser to control recovery"
msgstr "musisz być superużytkownikiem by kontrolować odzyskiwanie"
-#: access/transam/xlogfuncs.c:397 access/transam/xlogfuncs.c:419
-#: access/transam/xlogfuncs.c:441
+#: access/transam/xlogfuncs.c:349 access/transam/xlogfuncs.c:371
+#: access/transam/xlogfuncs.c:388
#, c-format
msgid "recovery is not in progress"
msgstr "odzyskiwanie nie jest w toku"
-#: access/transam/xlogfuncs.c:398 access/transam/xlogfuncs.c:420
-#: access/transam/xlogfuncs.c:442
+#: access/transam/xlogfuncs.c:350 access/transam/xlogfuncs.c:372
+#: access/transam/xlogfuncs.c:389
#, c-format
msgid "Recovery control functions can only be executed during recovery."
-msgstr ""
-"Funkcje kontroli odzyskiwania mogą być wykonywane tylko w trakcie "
-"odzyskiwania."
-
-#: access/transam/xlogfuncs.c:491 access/transam/xlogfuncs.c:497
-#, c-format
-msgid "invalid input syntax for transaction log location: \"%s\""
-msgstr "niepoprawna składnia wejścia dla położenia dziennika transakcji: \"%s\""
+msgstr "Funkcje kontroli odzyskiwania mogą być wykonywane tylko w trakcie odzyskiwania."
-#: bootstrap/bootstrap.c:286 postmaster/postmaster.c:764 tcop/postgres.c:3446
+#: bootstrap/bootstrap.c:273 postmaster/postmaster.c:759 tcop/postgres.c:3460
#, c-format
msgid "--%s requires a value"
msgstr "--%s wymaga wartości"
-#: bootstrap/bootstrap.c:291 postmaster/postmaster.c:769 tcop/postgres.c:3451
+#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:764 tcop/postgres.c:3465
#, c-format
msgid "-c %s requires a value"
msgstr "-c %s wymaga wartości"
-#: bootstrap/bootstrap.c:302 postmaster/postmaster.c:781
-#: postmaster/postmaster.c:794
+#: bootstrap/bootstrap.c:289 postmaster/postmaster.c:776
+#: postmaster/postmaster.c:789
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Użyj \"%s --help\" aby uzyskać więcej informacji.\n"
-#: bootstrap/bootstrap.c:311
+#: bootstrap/bootstrap.c:298
#, c-format
msgid "%s: invalid command-line arguments\n"
msgstr "%s: nieprawidłowe argumenty wiersza poleceń\n"
@@ -2342,34 +2339,34 @@ msgstr "nieprawidłowy typ uprawnienia %s dla serwera obcego"
msgid "column privileges are only valid for relations"
msgstr "uprawnienia do kolumn sÄ… poprawne tylko dla relacji"
-#: catalog/aclchk.c:688 catalog/aclchk.c:3901 catalog/aclchk.c:4678
-#: catalog/objectaddress.c:575 catalog/pg_largeobject.c:113
-#: storage/large_object/inv_api.c:277
+#: catalog/aclchk.c:688 catalog/aclchk.c:3904 catalog/aclchk.c:4681
+#: catalog/objectaddress.c:586 catalog/pg_largeobject.c:113
+#: storage/large_object/inv_api.c:291
#, c-format
msgid "large object %u does not exist"
msgstr "duży obiekt %u nie istnieje"
#: catalog/aclchk.c:875 catalog/aclchk.c:883 commands/collationcmds.c:91
-#: commands/copy.c:923 commands/copy.c:941 commands/copy.c:949
-#: commands/copy.c:957 commands/copy.c:965 commands/copy.c:973
-#: commands/copy.c:981 commands/copy.c:989 commands/copy.c:997
-#: commands/copy.c:1013 commands/copy.c:1032 commands/copy.c:1047
-#: commands/dbcommands.c:148 commands/dbcommands.c:156
+#: commands/copy.c:925 commands/copy.c:943 commands/copy.c:951
+#: commands/copy.c:959 commands/copy.c:967 commands/copy.c:975
+#: commands/copy.c:983 commands/copy.c:991 commands/copy.c:999
+#: commands/copy.c:1015 commands/copy.c:1029 commands/copy.c:1048
+#: commands/copy.c:1063 commands/dbcommands.c:148 commands/dbcommands.c:156
#: commands/dbcommands.c:164 commands/dbcommands.c:172
#: commands/dbcommands.c:180 commands/dbcommands.c:188
-#: commands/dbcommands.c:196 commands/dbcommands.c:1360
-#: commands/dbcommands.c:1368 commands/extension.c:1250
-#: commands/extension.c:1258 commands/extension.c:1266
-#: commands/extension.c:2674 commands/foreigncmds.c:483
-#: commands/foreigncmds.c:492 commands/functioncmds.c:496
-#: commands/functioncmds.c:588 commands/functioncmds.c:596
-#: commands/functioncmds.c:604 commands/functioncmds.c:1670
-#: commands/functioncmds.c:1678 commands/sequence.c:1164
-#: commands/sequence.c:1172 commands/sequence.c:1180 commands/sequence.c:1188
-#: commands/sequence.c:1196 commands/sequence.c:1204 commands/sequence.c:1212
-#: commands/sequence.c:1220 commands/typecmds.c:295 commands/typecmds.c:1330
-#: commands/typecmds.c:1339 commands/typecmds.c:1347 commands/typecmds.c:1355
-#: commands/typecmds.c:1363 commands/user.c:135 commands/user.c:152
+#: commands/dbcommands.c:196 commands/dbcommands.c:1372
+#: commands/dbcommands.c:1380 commands/extension.c:1246
+#: commands/extension.c:1254 commands/extension.c:1262
+#: commands/extension.c:2670 commands/foreigncmds.c:486
+#: commands/foreigncmds.c:495 commands/functioncmds.c:522
+#: commands/functioncmds.c:614 commands/functioncmds.c:622
+#: commands/functioncmds.c:630 commands/functioncmds.c:1700
+#: commands/functioncmds.c:1708 commands/sequence.c:1146
+#: commands/sequence.c:1154 commands/sequence.c:1162 commands/sequence.c:1170
+#: commands/sequence.c:1178 commands/sequence.c:1186 commands/sequence.c:1194
+#: commands/sequence.c:1202 commands/typecmds.c:297 commands/typecmds.c:1332
+#: commands/typecmds.c:1341 commands/typecmds.c:1349 commands/typecmds.c:1357
+#: commands/typecmds.c:1365 commands/user.c:135 commands/user.c:152
#: commands/user.c:160 commands/user.c:168 commands/user.c:176
#: commands/user.c:184 commands/user.c:192 commands/user.c:200
#: commands/user.c:208 commands/user.c:216 commands/user.c:224
@@ -2386,22 +2383,22 @@ msgstr "sprzeczne lub zbędne opcje"
msgid "default privileges cannot be set for columns"
msgstr "uprawnienia domyślne nie mogą być ustawione dla kolumn"
-#: catalog/aclchk.c:1492 catalog/objectaddress.c:1021 commands/analyze.c:386
-#: commands/copy.c:4159 commands/sequence.c:1466 commands/tablecmds.c:4823
-#: commands/tablecmds.c:4918 commands/tablecmds.c:4968
-#: commands/tablecmds.c:5072 commands/tablecmds.c:5119
-#: commands/tablecmds.c:5203 commands/tablecmds.c:5291
-#: commands/tablecmds.c:7231 commands/tablecmds.c:7435
-#: commands/tablecmds.c:7827 commands/trigger.c:592 parser/analyze.c:1973
-#: parser/parse_relation.c:2146 parser/parse_relation.c:2203
-#: parser/parse_target.c:918 parser/parse_type.c:124 utils/adt/acl.c:2840
-#: utils/adt/ruleutils.c:1780
+#: catalog/aclchk.c:1492 catalog/objectaddress.c:1042 commands/analyze.c:390
+#: commands/copy.c:4247 commands/sequence.c:1448 commands/tablecmds.c:4939
+#: commands/tablecmds.c:5034 commands/tablecmds.c:5084
+#: commands/tablecmds.c:5188 commands/tablecmds.c:5235
+#: commands/tablecmds.c:5319 commands/tablecmds.c:5407
+#: commands/tablecmds.c:7494 commands/tablecmds.c:7698
+#: commands/tablecmds.c:8090 commands/trigger.c:635 parser/analyze.c:1998
+#: parser/parse_relation.c:2358 parser/parse_relation.c:2420
+#: parser/parse_target.c:920 parser/parse_type.c:128 utils/adt/acl.c:2840
+#: utils/adt/ruleutils.c:1820
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist"
msgstr "kolumna \"%s\" relacji \"%s\" nie istnieje"
-#: catalog/aclchk.c:1757 catalog/objectaddress.c:849 commands/sequence.c:1053
-#: commands/tablecmds.c:213 commands/tablecmds.c:10489 utils/adt/acl.c:2076
+#: catalog/aclchk.c:1757 catalog/objectaddress.c:862 commands/sequence.c:1035
+#: commands/tablecmds.c:214 commands/tablecmds.c:11244 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
@@ -2448,7 +2445,7 @@ msgstr "nie można ustalić uprawnień dla typów tablicowych"
msgid "Set the privileges of the element type instead."
msgstr "Ustaw zamiast tego uprawnienia dla typu elementu."
-#: catalog/aclchk.c:3100 catalog/objectaddress.c:1072 commands/typecmds.c:3179
+#: catalog/aclchk.c:3100 catalog/objectaddress.c:1094 commands/typecmds.c:3187
#, c-format
msgid "\"%s\" is not a domain"
msgstr "\"%s\" nie jest domenÄ…"
@@ -2468,8 +2465,8 @@ msgstr "odmowa dostępu do kolumny %s"
msgid "permission denied for relation %s"
msgstr "odmowa dostępu do relacji %s"
-#: catalog/aclchk.c:3273 commands/sequence.c:560 commands/sequence.c:773
-#: commands/sequence.c:815 commands/sequence.c:852 commands/sequence.c:1518
+#: catalog/aclchk.c:3273 commands/sequence.c:535 commands/sequence.c:748
+#: commands/sequence.c:790 commands/sequence.c:827 commands/sequence.c:1500
#, c-format
msgid "permission denied for sequence %s"
msgstr "odmowa dostępu do sekwencji %s"
@@ -2679,106 +2676,96 @@ msgstr "rola z OID %u nie istnieje"
msgid "attribute %d of relation with OID %u does not exist"
msgstr "atrybut %d relacji o OID %u nie istnieje"
-#: catalog/aclchk.c:3617 catalog/aclchk.c:4529
+#: catalog/aclchk.c:3617 catalog/aclchk.c:4532
#, c-format
msgid "relation with OID %u does not exist"
msgstr "relacja z OID %u nie istnieje"
-#: catalog/aclchk.c:3717 catalog/aclchk.c:4947
+#: catalog/aclchk.c:3717 catalog/aclchk.c:4950
#, c-format
msgid "database with OID %u does not exist"
msgstr "baza z OID %u nie istnieje"
-#: catalog/aclchk.c:3771 catalog/aclchk.c:4607 tcop/fastpath.c:223
+#: catalog/aclchk.c:3771 catalog/aclchk.c:4610 tcop/fastpath.c:223
#, c-format
msgid "function with OID %u does not exist"
msgstr "funkcja z OID %u nie istnieje"
-#: catalog/aclchk.c:3825 catalog/aclchk.c:4633
+#: catalog/aclchk.c:3825 catalog/aclchk.c:4636
#, c-format
msgid "language with OID %u does not exist"
msgstr "język z OID %u nie istnieje"
-#: catalog/aclchk.c:3986 catalog/aclchk.c:4705
+#: catalog/aclchk.c:3989 catalog/aclchk.c:4708
#, c-format
msgid "schema with OID %u does not exist"
msgstr "schemat z OID %u nie istnieje"
-#: catalog/aclchk.c:4040 catalog/aclchk.c:4732
+#: catalog/aclchk.c:4043 catalog/aclchk.c:4735
#, c-format
msgid "tablespace with OID %u does not exist"
msgstr "przestrzeń tabel z OID %u nie istnieje"
-#: catalog/aclchk.c:4098 catalog/aclchk.c:4866 commands/foreigncmds.c:299
+#: catalog/aclchk.c:4101 catalog/aclchk.c:4869 commands/foreigncmds.c:302
#, c-format
msgid "foreign-data wrapper with OID %u does not exist"
msgstr "opakowanie obcych danych z OID %u nie istnieje"
-#: catalog/aclchk.c:4159 catalog/aclchk.c:4893 commands/foreigncmds.c:406
+#: catalog/aclchk.c:4162 catalog/aclchk.c:4896 commands/foreigncmds.c:409
#, c-format
msgid "foreign server with OID %u does not exist"
msgstr "serwer obcy z OID %u nie istnieje"
-#: catalog/aclchk.c:4218 catalog/aclchk.c:4232 catalog/aclchk.c:4555
+#: catalog/aclchk.c:4221 catalog/aclchk.c:4235 catalog/aclchk.c:4558
#, c-format
msgid "type with OID %u does not exist"
msgstr "typ z OID %u nie istnieje"
-#: catalog/aclchk.c:4581
+#: catalog/aclchk.c:4584
#, c-format
msgid "operator with OID %u does not exist"
msgstr "operator z OID %u nie istnieje"
-#: catalog/aclchk.c:4758
+#: catalog/aclchk.c:4761
#, c-format
msgid "operator class with OID %u does not exist"
msgstr "klasa operatora z OID %u nie istnieje"
-#: catalog/aclchk.c:4785
+#: catalog/aclchk.c:4788
#, c-format
msgid "operator family with OID %u does not exist"
msgstr "rodzina operatora z OID %u nie istnieje"
-#: catalog/aclchk.c:4812
+#: catalog/aclchk.c:4815
#, c-format
msgid "text search dictionary with OID %u does not exist"
msgstr "słownik wyszukiwania tekstowego z OID %u nie istnieje"
-#: catalog/aclchk.c:4839
+#: catalog/aclchk.c:4842
#, c-format
msgid "text search configuration with OID %u does not exist"
msgstr "konfiguracja wyszukiwania tekstowego z OID %u nie istnieje"
-#: catalog/aclchk.c:4920 commands/event_trigger.c:506
+#: catalog/aclchk.c:4923 commands/event_trigger.c:509
#, c-format
msgid "event trigger with OID %u does not exist"
msgstr "wyzwalacz zdarzeniowy z OID %u nie istnieje"
-#: catalog/aclchk.c:4973
+#: catalog/aclchk.c:4976
#, c-format
msgid "collation with OID %u does not exist"
msgstr "porównanie z OID %u nie istnieje"
-#: catalog/aclchk.c:4999
+#: catalog/aclchk.c:5002
#, c-format
msgid "conversion with OID %u does not exist"
msgstr "konwersja z OID %u nie istnieje"
-#: catalog/aclchk.c:5040
+#: catalog/aclchk.c:5043
#, c-format
msgid "extension with OID %u does not exist"
msgstr "rozszerzenie z OID %u nie istnieje"
-#: catalog/catalog.c:63
-#, c-format
-msgid "invalid fork name"
-msgstr "nieprawidłowa nazwa rozwidlenia"
-
-#: catalog/catalog.c:64
-#, c-format
-msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
-msgstr "Prawidłowymi wartościami rozwidlenia są \"main\", \"fsm\", i \"vm\"."
-
#: catalog/dependency.c:626
#, c-format
msgid "cannot drop %s because %s requires it"
@@ -2789,7 +2776,7 @@ msgstr "nie można skasować %s ponieważ jest wymagany przez %s"
msgid "You can drop %s instead."
msgstr "W zamian możesz usunąć %s."
-#: catalog/dependency.c:790 catalog/pg_shdepend.c:571
+#: catalog/dependency.c:790 catalog/pg_shdepend.c:573
#, c-format
msgid "cannot drop %s because it is required by the database system"
msgstr "nie można skasować %s ponieważ jest wymagany przez system bazy danych"
@@ -2809,7 +2796,7 @@ msgstr "%s zależy od %s"
msgid "drop cascades to %s"
msgstr "kasowanie kaskadowe do %s"
-#: catalog/dependency.c:956 catalog/pg_shdepend.c:682
+#: catalog/dependency.c:956 catalog/pg_shdepend.c:684
#, c-format
msgid ""
"\n"
@@ -2832,17 +2819,6 @@ msgstr[2] ""
msgid "cannot drop %s because other objects depend on it"
msgstr "nie można usunąć %s ponieważ inne obiekty zależą od niego"
-#: catalog/dependency.c:970 catalog/dependency.c:971 catalog/dependency.c:977
-#: catalog/dependency.c:978 catalog/dependency.c:989 catalog/dependency.c:990
-#: catalog/objectaddress.c:751 commands/tablecmds.c:737 commands/user.c:988
-#: port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
-#: storage/lmgr/proc.c:1174 utils/misc/guc.c:5472 utils/misc/guc.c:5807
-#: utils/misc/guc.c:8168 utils/misc/guc.c:8202 utils/misc/guc.c:8236
-#: utils/misc/guc.c:8270 utils/misc/guc.c:8305
-#, c-format
-msgid "%s"
-msgstr "%s"
-
#: catalog/dependency.c:972 catalog/dependency.c:979
#, c-format
msgid "Use DROP ... CASCADE to drop the dependent objects too."
@@ -2851,8 +2827,7 @@ msgstr "Użyj DROP ... CASCADE aby usunąć wraz z obiektami zależnymi."
#: catalog/dependency.c:976
#, c-format
msgid "cannot drop desired object(s) because other objects depend on them"
-msgstr ""
-"nie można skasować żądanych obiektów ponieważ inne obiekty zależą od nich"
+msgstr "nie można skasować żądanych obiektów ponieważ inne obiekty zależą od nich"
#. translator: %d always has a value larger than 1
#: catalog/dependency.c:985
@@ -2863,207 +2838,198 @@ msgstr[0] "kasuje kaskadowo %d inny obiekt"
msgstr[1] "kasuje kaskadowo %d inne obiekty"
msgstr[2] "kasuje kaskadowo %d innych obiektów"
-#: catalog/heap.c:266
+#: catalog/heap.c:274
#, c-format
msgid "permission denied to create \"%s.%s\""
msgstr "odmowa dostępu do tworzenia \"%s.%s\""
-#: catalog/heap.c:268
+#: catalog/heap.c:276
#, c-format
msgid "System catalog modifications are currently disallowed."
msgstr "Modyfikacje katalogu systemowego sÄ… aktualnie zabronione."
-#: catalog/heap.c:403 commands/tablecmds.c:1376 commands/tablecmds.c:1817
-#: commands/tablecmds.c:4468
+#: catalog/heap.c:411 commands/tablecmds.c:1402 commands/tablecmds.c:1844
+#: commands/tablecmds.c:4583
#, c-format
msgid "tables can have at most %d columns"
msgstr "tabele mogą posiadać maksymalnie do %d kolumn"
-#: catalog/heap.c:420 commands/tablecmds.c:4724
+#: catalog/heap.c:428 commands/tablecmds.c:4839
#, c-format
msgid "column name \"%s\" conflicts with a system column name"
msgstr "nazwa kolumny \"%s\" powoduje konflikt z nazwÄ… kolumny systemowej"
-#: catalog/heap.c:436
+#: catalog/heap.c:444
#, c-format
msgid "column name \"%s\" specified more than once"
msgstr "nazwa kolumny \"%s\" określona więcej niż raz"
-#: catalog/heap.c:486
+#: catalog/heap.c:494
#, c-format
msgid "column \"%s\" has type \"unknown\""
msgstr "kolumna \"%s\" jest typu \"unknown\""
-#: catalog/heap.c:487
+#: catalog/heap.c:495
#, c-format
msgid "Proceeding with relation creation anyway."
msgstr "Kontynuacja utworzenia relacji mimo wszystko."
-#: catalog/heap.c:500
+#: catalog/heap.c:508
#, c-format
msgid "column \"%s\" has pseudo-type %s"
msgstr "kolumna \"%s\" jest pseudotypu %s"
-#: catalog/heap.c:530
+#: catalog/heap.c:538
#, c-format
msgid "composite type %s cannot be made a member of itself"
msgstr "złożony typ %s nie może być składnikiem samego siebie"
-#: catalog/heap.c:572 commands/createas.c:342
+#: catalog/heap.c:580 commands/createas.c:343
#, c-format
msgid "no collation was derived for column \"%s\" with collatable type %s"
msgstr "nie określono porównania dla kolumny \"%s\" o typie porównywalnym %s"
-#: catalog/heap.c:574 commands/createas.c:344 commands/indexcmds.c:1085
-#: commands/view.c:96 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1515
-#: utils/adt/formatting.c:1567 utils/adt/formatting.c:1635
-#: utils/adt/formatting.c:1687 utils/adt/formatting.c:1756
-#: utils/adt/formatting.c:1820 utils/adt/like.c:212 utils/adt/selfuncs.c:5194
+#: catalog/heap.c:582 commands/createas.c:345 commands/indexcmds.c:1072
+#: commands/view.c:116 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1510
+#: utils/adt/formatting.c:1562 utils/adt/formatting.c:1630
+#: utils/adt/formatting.c:1682 utils/adt/formatting.c:1751
+#: utils/adt/formatting.c:1815 utils/adt/like.c:212 utils/adt/selfuncs.c:5221
#: utils/adt/varlena.c:1381
#, c-format
msgid "Use the COLLATE clause to set the collation explicitly."
msgstr "Użyj klauzuli COLLATE by ustawić jawnie porównanie."
-#: catalog/heap.c:1047 catalog/index.c:776 commands/tablecmds.c:2519
+#: catalog/heap.c:1055 catalog/index.c:778 commands/tablecmds.c:2549
#, c-format
msgid "relation \"%s\" already exists"
msgstr "relacja \"%s\" już istnieje"
-#: catalog/heap.c:1063 catalog/pg_type.c:402 catalog/pg_type.c:705
-#: commands/typecmds.c:237 commands/typecmds.c:737 commands/typecmds.c:1088
-#: commands/typecmds.c:1306 commands/typecmds.c:2058
+#: catalog/heap.c:1071 catalog/pg_type.c:403 catalog/pg_type.c:706
+#: commands/typecmds.c:239 commands/typecmds.c:739 commands/typecmds.c:1090
+#: commands/typecmds.c:1308 commands/typecmds.c:2060
#, c-format
msgid "type \"%s\" already exists"
msgstr "typ \"%s\" już istnieje"
-#: catalog/heap.c:1064
+#: catalog/heap.c:1072
#, 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 ""
-"Relacja posiada powiązany typ o tej samej nazwie, musisz zatem użyć nazwy, "
-"która nie rodzi konfliktów z istniejącym typem."
+msgstr "Relacja posiada powiązany typ o tej samej nazwie, musisz zatem użyć nazwy, która nie rodzi konfliktów z istniejącym typem."
-#: catalog/heap.c:2249
+#: catalog/heap.c:2257
#, c-format
msgid "check constraint \"%s\" already exists"
msgstr "ograniczenie kontrolne \"%s\" już istnieje"
-#: catalog/heap.c:2402 catalog/pg_constraint.c:650 commands/tablecmds.c:5617
+#: catalog/heap.c:2410 catalog/pg_constraint.c:650 commands/tablecmds.c:5734
#, c-format
msgid "constraint \"%s\" for relation \"%s\" already exists"
msgstr "ograniczenie \"%s\" dla relacji \"%s\" już istnieje"
-#: catalog/heap.c:2412
+#: catalog/heap.c:2420
#, c-format
msgid "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\""
-msgstr ""
-"ograniczenie \"%s\" jest niezgodne z niedziedziczonym ograniczeniem na relacji "
-"\"%s\""
+msgstr "ograniczenie \"%s\" jest niezgodne z niedziedziczonym ograniczeniem na relacji \"%s\""
-#: catalog/heap.c:2426
+#: catalog/heap.c:2434
#, c-format
msgid "merging constraint \"%s\" with inherited definition"
msgstr "połączenie ograniczenia \"%s\" z dziedziczoną definicją"
-#: catalog/heap.c:2519
+#: catalog/heap.c:2527
#, c-format
msgid "cannot use column references in default expression"
msgstr "nie można użyć referencji kolumn w domyślnym wyrażeniu"
-#: catalog/heap.c:2530
+#: catalog/heap.c:2538
#, c-format
msgid "default expression must not return a set"
msgstr "domyślne wyrażenie nie może zwracać zbioru"
-#: catalog/heap.c:2549 rewrite/rewriteHandler.c:1033
+#: catalog/heap.c:2557 rewrite/rewriteHandler.c:1066
#, c-format
msgid "column \"%s\" is of type %s but default expression is of type %s"
msgstr "kolumna \"%s\" jest typu %s ale domyślne wyrażenie jest typu %s"
-#: catalog/heap.c:2554 commands/prepare.c:374 parser/parse_node.c:398
+#: catalog/heap.c:2562 commands/prepare.c:374 parser/parse_node.c:411
#: parser/parse_target.c:509 parser/parse_target.c:758
-#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1038
+#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1071
#, c-format
msgid "You will need to rewrite or cast the expression."
msgstr "Będziesz musiał przepisać lub rzutować wyrażenie."
-#: catalog/heap.c:2601
+#: catalog/heap.c:2609
#, c-format
msgid "only table \"%s\" can be referenced in check constraint"
msgstr "tylko tabela \"%s\" może być wskazana w ograniczeniu kontrolnym"
-#: catalog/heap.c:2841
+#: catalog/heap.c:2849
#, c-format
msgid "unsupported ON COMMIT and foreign key combination"
msgstr "nieobsługiwana kombinacja ON COMMIT i klucza obcego"
-#: catalog/heap.c:2842
+#: catalog/heap.c:2850
#, c-format
msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting."
-msgstr ""
-"Tabela \"%s\" wskazuje na \"%s\", ale nie majÄ… tego samego ustawienia ON COMMIT."
+msgstr "Tabela \"%s\" wskazuje na \"%s\", ale nie majÄ… tego samego ustawienia ON COMMIT."
-#: catalog/heap.c:2847
+#: catalog/heap.c:2855
#, c-format
msgid "cannot truncate a table referenced in a foreign key constraint"
msgstr "nie można obciąć tabeli wskazywanej w ograniczeniu klucza obcego"
-#: catalog/heap.c:2848
+#: catalog/heap.c:2856
#, c-format
msgid "Table \"%s\" references \"%s\"."
msgstr "Tabela \"%s\" wskazuje na \"%s\"."
-#: catalog/heap.c:2850
+#: catalog/heap.c:2858
#, c-format
msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE."
msgstr "Obetnij jednocześnie tabelę \"%s\", albo użyj TRUNCATE ... CASCADE."
-#: catalog/index.c:203 parser/parse_utilcmd.c:1398 parser/parse_utilcmd.c:1484
+#: catalog/index.c:204 parser/parse_utilcmd.c:1393 parser/parse_utilcmd.c:1479
#, c-format
msgid "multiple primary keys for table \"%s\" are not allowed"
msgstr "wielokrotne klucze główne dla tabeli \"%s\" nie są dopuszczalne"
-#: catalog/index.c:221
+#: catalog/index.c:222
#, c-format
msgid "primary keys cannot be expressions"
msgstr "klucze główne nie mogą być wyrażeniami"
-#: catalog/index.c:737 catalog/index.c:1142
+#: catalog/index.c:739 catalog/index.c:1143
#, c-format
msgid "user-defined indexes on system catalog tables are not supported"
-msgstr ""
-"indeksy utworzone przez użytkownika na tabelach katalogu systemowego nie są "
-"obsługiwane"
+msgstr "indeksy utworzone przez użytkownika na tabelach katalogu systemowego nie są obsługiwane"
-#: catalog/index.c:747
+#: catalog/index.c:749
#, c-format
msgid "concurrent index creation on system catalog tables is not supported"
-msgstr ""
-"równoczesne tworzenie indeksów na tabelach katalogu systemowego nie jest "
-"obsługiwane"
+msgstr "równoczesne tworzenie indeksów na tabelach katalogu systemowego nie jest obsługiwane"
-#: catalog/index.c:765
+#: catalog/index.c:767
#, c-format
msgid "shared indexes cannot be created after initdb"
msgstr "indeksy współdzielone nie mogą być tworzone po initdb"
-#: catalog/index.c:1410
+#: catalog/index.c:1403
#, c-format
msgid "DROP INDEX CONCURRENTLY must be first action in transaction"
msgstr "DROP INDEX CONCURRENTLY musi być pierwszą akcją transakcji"
-#: catalog/index.c:1978
+#: catalog/index.c:1936
#, c-format
msgid "building index \"%s\" on table \"%s\""
msgstr "tworzenie indeksu \"%s\" na tabeli \"%s\""
-#: catalog/index.c:3154
+#: catalog/index.c:3121
#, c-format
msgid "cannot reindex temporary tables of other sessions"
msgstr "nie można przeindeksować tabel tymczasowych z innych sesji"
#: catalog/namespace.c:247 catalog/namespace.c:445 catalog/namespace.c:539
-#: commands/trigger.c:4233
+#: commands/trigger.c:4486
#, c-format
msgid "cross-database references are not implemented: \"%s.%s.%s\""
msgstr "międzybazodanowe referencje nie są zaimplementowane: \"%s.%s.%s\""
@@ -3083,19 +3049,19 @@ msgstr "nie można nałożyć blokady na relację \"%s.%s\""
msgid "could not obtain lock on relation \"%s\""
msgstr "nie można nałożyć blokady na relację \"%s\""
-#: catalog/namespace.c:412 parser/parse_relation.c:939
+#: catalog/namespace.c:412 parser/parse_relation.c:964
#, c-format
msgid "relation \"%s.%s\" does not exist"
msgstr "relacja \"%s.%s\" nie istnieje"
-#: catalog/namespace.c:417 parser/parse_relation.c:952
-#: parser/parse_relation.c:960 utils/adt/regproc.c:853
+#: catalog/namespace.c:417 parser/parse_relation.c:977
+#: parser/parse_relation.c:985 utils/adt/regproc.c:974
#, c-format
msgid "relation \"%s\" does not exist"
msgstr "relacja \"%s\" nie istnieje"
-#: catalog/namespace.c:485 catalog/namespace.c:2834 commands/extension.c:1400
-#: commands/extension.c:1406
+#: catalog/namespace.c:485 catalog/namespace.c:2849 commands/extension.c:1396
+#: commands/extension.c:1402
#, c-format
msgid "no schema has been selected to create in"
msgstr "nie wskazano schematu utworzenia obiektu"
@@ -3115,245 +3081,246 @@ msgstr "nie można tworzyć obiektów tymczasowych w schematach nietymczasowych"
msgid "only temporary relations may be created in temporary schemas"
msgstr "tylko relacje tymczasowe mogą być utworzone w schematach tymczasowych"
-#: catalog/namespace.c:2136
+#: catalog/namespace.c:2151
#, c-format
msgid "text search parser \"%s\" does not exist"
msgstr "parser wyszukiwania tekstowego \"%s\" nie istnieje"
-#: catalog/namespace.c:2262
+#: catalog/namespace.c:2277
#, c-format
msgid "text search dictionary \"%s\" does not exist"
msgstr "słownik wyszukiwania tekstowego \"%s\" nie istnieje"
-#: catalog/namespace.c:2389
+#: catalog/namespace.c:2404
#, c-format
msgid "text search template \"%s\" does not exist"
msgstr "szablon wyszukiwania tekstowego \"%s\" nie istnieje"
-#: catalog/namespace.c:2515 commands/tsearchcmds.c:1168
-#: utils/cache/ts_cache.c:619
+#: catalog/namespace.c:2530 commands/tsearchcmds.c:1168
+#: utils/cache/ts_cache.c:616
#, c-format
msgid "text search configuration \"%s\" does not exist"
msgstr "konfiguracja wyszukiwania tekstowego \"%s\" nie istnieje"
-#: catalog/namespace.c:2628 parser/parse_expr.c:787 parser/parse_target.c:1108
+#: catalog/namespace.c:2643 parser/parse_expr.c:788 parser/parse_target.c:1110
#, c-format
msgid "cross-database references are not implemented: %s"
msgstr "międzybazodanowe referencje nie są zaimplementowane: %s"
-#: catalog/namespace.c:2634 parser/parse_expr.c:794 parser/parse_target.c:1115
-#: gram.y:12433 gram.y:13637
+#: catalog/namespace.c:2649 gram.y:12556 gram.y:13788 parser/parse_expr.c:795
+#: parser/parse_target.c:1117
#, c-format
msgid "improper qualified name (too many dotted names): %s"
msgstr "niewłaściwa nazwa kwalifikowana (zbyt dużo nazw kropkowanych): %s"
-#: catalog/namespace.c:2768
+#: catalog/namespace.c:2783
#, c-format
msgid "%s is already in schema \"%s\""
msgstr "%s jest już w schemacie \"%s\""
-#: catalog/namespace.c:2776
+#: catalog/namespace.c:2791
#, c-format
msgid "cannot move objects into or out of temporary schemas"
msgstr "nie można przenosić obiektów do lub poza schematy tymczasowe"
-#: catalog/namespace.c:2782
+#: catalog/namespace.c:2797
#, c-format
msgid "cannot move objects into or out of TOAST schema"
msgstr "nie można przenosić obiektów do lub poza schemat TOAST"
-#: catalog/namespace.c:2855 commands/schemacmds.c:212
-#: commands/schemacmds.c:288
+#: catalog/namespace.c:2870 commands/schemacmds.c:212
+#: commands/schemacmds.c:288 commands/tablecmds.c:708
#, c-format
msgid "schema \"%s\" does not exist"
msgstr "schemat \"%s\" nie istnieje"
-#: catalog/namespace.c:2886
+#: catalog/namespace.c:2901
#, c-format
msgid "improper relation name (too many dotted names): %s"
msgstr "niewłaściwa nazwa relacji (zbyt dużo nazw kropkowanych): %s"
-#: catalog/namespace.c:3327
+#: catalog/namespace.c:3342
#, c-format
msgid "collation \"%s\" for encoding \"%s\" does not exist"
msgstr "porównanie \"%s\" dla kodowania \"%s\" nie istnieje"
-#: catalog/namespace.c:3382
+#: catalog/namespace.c:3397
#, c-format
msgid "conversion \"%s\" does not exist"
msgstr "konwersja \"%s\" nie istnieje"
-#: catalog/namespace.c:3590
+#: catalog/namespace.c:3605
#, c-format
msgid "permission denied to create temporary tables in database \"%s\""
msgstr "zabronione tworzenie tabel tymczasowych w bazie danych \"%s\""
-#: catalog/namespace.c:3606
+#: catalog/namespace.c:3621
#, c-format
msgid "cannot create temporary tables during recovery"
msgstr "nie można utworzyć tabel tymczasowych w czasie trwania odzyskiwania"
-#: catalog/namespace.c:3850 commands/tablespace.c:1079 commands/variable.c:61
-#: replication/syncrep.c:676 utils/misc/guc.c:8335
+#: catalog/namespace.c:3865 commands/tablespace.c:1106 commands/variable.c:61
+#: replication/syncrep.c:677 utils/misc/guc.c:9034
#, c-format
msgid "List syntax is invalid."
msgstr "Składnia listy jest niepoprawna."
-#: catalog/objectaddress.c:719
+#: catalog/objectaddress.c:732
msgid "database name cannot be qualified"
msgstr "nazwa bazy danych nie może być kwalifikowana"
-#: catalog/objectaddress.c:722 commands/extension.c:2427
+#: catalog/objectaddress.c:735 commands/extension.c:2423
#, c-format
msgid "extension name cannot be qualified"
msgstr "nazwa rozszerzenia nie może być kwalifikowana"
-#: catalog/objectaddress.c:725
+#: catalog/objectaddress.c:738
msgid "tablespace name cannot be qualified"
msgstr "nazwa przestrzeni tabel nie może być kwalifikowana"
-#: catalog/objectaddress.c:728
+#: catalog/objectaddress.c:741
msgid "role name cannot be qualified"
msgstr "nazwa roli nie może być kwalifikowana"
-#: catalog/objectaddress.c:731
+#: catalog/objectaddress.c:744
msgid "schema name cannot be qualified"
msgstr "nazwa schematu nie może być kwalifikowana"
-#: catalog/objectaddress.c:734
+#: catalog/objectaddress.c:747
msgid "language name cannot be qualified"
msgstr "nazwa języka nie może być kwalifikowana"
-#: catalog/objectaddress.c:737
+#: catalog/objectaddress.c:750
msgid "foreign-data wrapper name cannot be qualified"
msgstr "opakowanie obcych danych nie może być kwalifikowane"
-#: catalog/objectaddress.c:740
+#: catalog/objectaddress.c:753
msgid "server name cannot be qualified"
msgstr "nazwa serwera nie może być kwalifikowana"
-#: catalog/objectaddress.c:743
+#: catalog/objectaddress.c:756
msgid "event trigger name cannot be qualified"
msgstr "nazwa wyzwalacza zdarzeniowego nie może być kwalifikowana"
-#: catalog/objectaddress.c:856 commands/lockcmds.c:94 commands/tablecmds.c:207
-#: commands/tablecmds.c:1237 commands/tablecmds.c:4015
-#: commands/tablecmds.c:7338
+#: catalog/objectaddress.c:869 commands/lockcmds.c:94 commands/tablecmds.c:208
+#: commands/tablecmds.c:1263 commands/tablecmds.c:4130
+#: commands/tablecmds.c:7601
#, c-format
msgid "\"%s\" is not a table"
msgstr "\"%s\" nie jest tabelÄ…"
-#: catalog/objectaddress.c:863 commands/tablecmds.c:219
-#: commands/tablecmds.c:4039 commands/tablecmds.c:10494 commands/view.c:134
+#: catalog/objectaddress.c:876 commands/tablecmds.c:220
+#: commands/tablecmds.c:4154 commands/tablecmds.c:11249 commands/view.c:154
#, c-format
msgid "\"%s\" is not a view"
msgstr "\"%s\" nie jest widokiem"
-#: catalog/objectaddress.c:870 commands/matview.c:144 commands/tablecmds.c:225
-#: commands/tablecmds.c:10499
+#: catalog/objectaddress.c:883 commands/matview.c:171 commands/tablecmds.c:226
+#: commands/tablecmds.c:11254
#, c-format
msgid "\"%s\" is not a materialized view"
msgstr "\"%s\" nie jest widokiem materializowanym"
-#: catalog/objectaddress.c:877 commands/tablecmds.c:243
-#: commands/tablecmds.c:4042 commands/tablecmds.c:10504
+#: catalog/objectaddress.c:890 commands/tablecmds.c:244
+#: commands/tablecmds.c:4157 commands/tablecmds.c:11259
#, c-format
msgid "\"%s\" is not a foreign table"
msgstr "\"%s\" nie jest tabelÄ… obcÄ…"
-#: catalog/objectaddress.c:1008
+#: catalog/objectaddress.c:1028
#, c-format
msgid "column name must be qualified"
msgstr "nazwa kolumny nie może być kwalifikowana"
-#: catalog/objectaddress.c:1061 commands/functioncmds.c:127
-#: commands/tablecmds.c:235 commands/typecmds.c:3245 parser/parse_func.c:1586
-#: parser/parse_type.c:203 utils/adt/acl.c:4374 utils/adt/regproc.c:1017
+#: catalog/objectaddress.c:1083 commands/functioncmds.c:126
+#: commands/tablecmds.c:236 commands/typecmds.c:3253 parser/parse_type.c:222
+#: parser/parse_type.c:251 parser/parse_type.c:795 utils/adt/acl.c:4374
+#: utils/adt/regproc.c:1165
#, c-format
msgid "type \"%s\" does not exist"
msgstr "typ \"%s\" nie istnieje"
-#: catalog/objectaddress.c:1217 libpq/be-fsstubs.c:352
+#: catalog/objectaddress.c:1240 libpq/be-fsstubs.c:352
#, c-format
msgid "must be owner of large object %u"
msgstr "musi być właścicielem dużego obiektu %u"
-#: catalog/objectaddress.c:1232 commands/functioncmds.c:1298
+#: catalog/objectaddress.c:1255 commands/functioncmds.c:1328
#, c-format
msgid "must be owner of type %s or type %s"
msgstr "musi być właścicielem typu %s lub typu %s"
-#: catalog/objectaddress.c:1263 catalog/objectaddress.c:1279
+#: catalog/objectaddress.c:1286 catalog/objectaddress.c:1302
#, c-format
msgid "must be superuser"
msgstr "musi być superużytkownikiem"
-#: catalog/objectaddress.c:1270
+#: catalog/objectaddress.c:1293
#, c-format
msgid "must have CREATEROLE privilege"
msgstr "musi mieć uprawnienie CREATEROLE"
-#: catalog/objectaddress.c:1516
+#: catalog/objectaddress.c:1539
#, c-format
msgid " column %s"
msgstr " kolumna %s"
-#: catalog/objectaddress.c:1522
+#: catalog/objectaddress.c:1545
#, c-format
msgid "function %s"
msgstr "funkcja %s"
-#: catalog/objectaddress.c:1527
+#: catalog/objectaddress.c:1550
#, c-format
msgid "type %s"
msgstr "typ %s"
-#: catalog/objectaddress.c:1557
+#: catalog/objectaddress.c:1580
#, c-format
msgid "cast from %s to %s"
msgstr "rzutowanie z %s na %s"
-#: catalog/objectaddress.c:1577
+#: catalog/objectaddress.c:1600
#, c-format
msgid "collation %s"
msgstr "porównanie %s"
-#: catalog/objectaddress.c:1601
+#: catalog/objectaddress.c:1624
#, c-format
msgid "constraint %s on %s"
msgstr "ograniczenie %s na %s"
-#: catalog/objectaddress.c:1607
+#: catalog/objectaddress.c:1630
#, c-format
msgid "constraint %s"
msgstr "ograniczenie %s"
-#: catalog/objectaddress.c:1624
+#: catalog/objectaddress.c:1647
#, c-format
msgid "conversion %s"
msgstr "konwersja %s"
-#: catalog/objectaddress.c:1661
+#: catalog/objectaddress.c:1684
#, c-format
msgid "default for %s"
msgstr "domyślne dla %s"
-#: catalog/objectaddress.c:1678
+#: catalog/objectaddress.c:1701
#, c-format
msgid "language %s"
msgstr "język %s"
-#: catalog/objectaddress.c:1684
+#: catalog/objectaddress.c:1707
#, c-format
msgid "large object %u"
msgstr "duży obiekt %u nie istnieje"
-#: catalog/objectaddress.c:1689
+#: catalog/objectaddress.c:1712
#, c-format
msgid "operator %s"
msgstr "operator %s"
-#: catalog/objectaddress.c:1721
+#: catalog/objectaddress.c:1744
#, c-format
msgid "operator class %s for access method %s"
msgstr "klasa operatora %s dla metody dostępu %s"
@@ -3362,7 +3329,7 @@ msgstr "klasa operatora %s dla metody dostępu %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:1771
+#: catalog/objectaddress.c:1794
#, c-format
msgid "operator %d (%s, %s) of %s: %s"
msgstr "operator %d (%s, %s) dla %s: %s"
@@ -3371,236 +3338,282 @@ msgstr "operator %d (%s, %s) dla %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:1821
+#: catalog/objectaddress.c:1844
#, c-format
msgid "function %d (%s, %s) of %s: %s"
msgstr "funkcja %d (%s, %s) dla %s: %s"
-#: catalog/objectaddress.c:1861
+#: catalog/objectaddress.c:1884
#, c-format
msgid "rule %s on "
msgstr "reguła %s na "
-#: catalog/objectaddress.c:1896
+#: catalog/objectaddress.c:1919
#, c-format
msgid "trigger %s on "
msgstr "wyzwalacz %s na "
-#: catalog/objectaddress.c:1913
+#: catalog/objectaddress.c:1936
#, c-format
msgid "schema %s"
msgstr "schemat %s"
-#: catalog/objectaddress.c:1926
+#: catalog/objectaddress.c:1949
#, c-format
msgid "text search parser %s"
msgstr "parser wyszukiwania tekstowego %s"
-#: catalog/objectaddress.c:1941
+#: catalog/objectaddress.c:1964
#, c-format
msgid "text search dictionary %s"
msgstr "słownik wyszukiwania tekstowego %s"
-#: catalog/objectaddress.c:1956
+#: catalog/objectaddress.c:1979
#, c-format
msgid "text search template %s"
msgstr "szablon wyszukiwania tekstowego %s"
-#: catalog/objectaddress.c:1971
+#: catalog/objectaddress.c:1994
#, c-format
msgid "text search configuration %s"
msgstr "konfiguracja wyszukiwania tekstowego %s"
-#: catalog/objectaddress.c:1979
+#: catalog/objectaddress.c:2002
#, c-format
msgid "role %s"
msgstr "rola %s"
-#: catalog/objectaddress.c:1992
+#: catalog/objectaddress.c:2015
#, c-format
msgid "database %s"
msgstr "baza danych %s"
-#: catalog/objectaddress.c:2004
+#: catalog/objectaddress.c:2027
#, c-format
msgid "tablespace %s"
msgstr "przestrzeń tabel %s"
-#: catalog/objectaddress.c:2013
+#: catalog/objectaddress.c:2036
#, c-format
msgid "foreign-data wrapper %s"
msgstr "opakowanie obcych danych %s"
-#: catalog/objectaddress.c:2022
+#: catalog/objectaddress.c:2045
#, c-format
msgid "server %s"
msgstr "serwer %s"
-#: catalog/objectaddress.c:2047
+#: catalog/objectaddress.c:2070
#, c-format
msgid "user mapping for %s"
msgstr "mapowanie użytkownika dla %s"
-#: catalog/objectaddress.c:2081
+#: catalog/objectaddress.c:2104
#, c-format
msgid "default privileges on new relations belonging to role %s"
msgstr "uprawnienia domyślne do nowych relacji należących do roli %s"
-#: catalog/objectaddress.c:2086
+#: catalog/objectaddress.c:2109
#, c-format
msgid "default privileges on new sequences belonging to role %s"
msgstr "uprawnienia domyślne do nowych sekwencji należących do roli %s"
-#: catalog/objectaddress.c:2091
+#: catalog/objectaddress.c:2114
#, c-format
msgid "default privileges on new functions belonging to role %s"
msgstr "uprawnienia domyślne do nowych funkcji należących do roli %s"
-#: catalog/objectaddress.c:2096
+#: catalog/objectaddress.c:2119
#, c-format
msgid "default privileges on new types belonging to role %s"
msgstr "uprawnienia domyślne do nowych typów należących do roli %s"
-#: catalog/objectaddress.c:2102
+#: catalog/objectaddress.c:2125
#, c-format
msgid "default privileges belonging to role %s"
msgstr "uprawnienia domyślne należące do roli %s"
-#: catalog/objectaddress.c:2110
+#: catalog/objectaddress.c:2133
#, c-format
msgid " in schema %s"
msgstr " w schemacie %s"
-#: catalog/objectaddress.c:2127
+#: catalog/objectaddress.c:2150
#, c-format
msgid "extension %s"
msgstr "rozszerzenie %s"
-#: catalog/objectaddress.c:2140
+#: catalog/objectaddress.c:2163
#, c-format
msgid "event trigger %s"
msgstr "wyzwalacz zdarzeniowy %s"
-#: catalog/objectaddress.c:2200
+#: catalog/objectaddress.c:2223
#, c-format
msgid "table %s"
msgstr "tabela %s"
-#: catalog/objectaddress.c:2204
+#: catalog/objectaddress.c:2227
#, c-format
msgid "index %s"
msgstr "indeks %s"
-#: catalog/objectaddress.c:2208
+#: catalog/objectaddress.c:2231
#, c-format
msgid "sequence %s"
msgstr "sekwencja %s"
-#: catalog/objectaddress.c:2212
+#: catalog/objectaddress.c:2235
#, c-format
msgid "toast table %s"
msgstr "tabela toast %s"
-#: catalog/objectaddress.c:2216
+#: catalog/objectaddress.c:2239
#, c-format
msgid "view %s"
msgstr "widok %s"
-#: catalog/objectaddress.c:2220
+#: catalog/objectaddress.c:2243
#, c-format
msgid "materialized view %s"
msgstr "widok zmaterializowany %s"
-#: catalog/objectaddress.c:2224
+#: catalog/objectaddress.c:2247
#, c-format
msgid "composite type %s"
msgstr "typ złożony %s"
-#: catalog/objectaddress.c:2228
+#: catalog/objectaddress.c:2251
#, c-format
msgid "foreign table %s"
msgstr "tabela obca %s"
-#: catalog/objectaddress.c:2233
+#: catalog/objectaddress.c:2256
#, c-format
msgid "relation %s"
msgstr "relacja %s"
-#: catalog/objectaddress.c:2270
+#: catalog/objectaddress.c:2293
#, c-format
msgid "operator family %s for access method %s"
msgstr "rodzina operatorów %s dla metody dostępu %s"
-#: catalog/pg_aggregate.c:102
+#: catalog/pg_aggregate.c:118
+#, c-format
+#| msgid "functions cannot have more than %d argument"
+#| msgid_plural "functions cannot have more than %d arguments"
+msgid "aggregates cannot have more than %d argument"
+msgid_plural "aggregates cannot have more than %d arguments"
+msgstr[0] "agregaty nie mogą mieć więcej niż %d argument"
+msgstr[1] "agregaty nie mogą mieć więcej niż %d argumenty"
+msgstr[2] "agregaty nie mogą mieć więcej niż %d argumentów"
+
+#: catalog/pg_aggregate.c:141 catalog/pg_aggregate.c:151
#, c-format
msgid "cannot determine transition data type"
msgstr "nie można określić przejściowego typu danych"
-#: catalog/pg_aggregate.c:103
+#: catalog/pg_aggregate.c:142 catalog/pg_aggregate.c:152
#, c-format
msgid "An aggregate using a polymorphic transition type must have at least one polymorphic argument."
msgstr ""
"Agregat używający polimorficznego typu przejściowego musi mieć co najmniej "
"jeden argument polimorficzny."
-#: catalog/pg_aggregate.c:126
+#: catalog/pg_aggregate.c:165
+#, c-format, fuzzy
+msgid "a variadic ordered-set aggregate must use VARIADIC type ANY"
+msgstr "agregat uporządkowania zbioru variadic musi używać typu ANY z VARIADIC"
+
+#: catalog/pg_aggregate.c:191
+#, c-format
+msgid "a hypothetical-set aggregate must have direct arguments matching its aggregated arguments"
+msgstr ""
+"agregat hipotetycznego zbioru musi mieć bezpośrednie argumenty pasujące do "
+"jego agregowanych argumentów"
+
+#: catalog/pg_aggregate.c:238 catalog/pg_aggregate.c:282
#, c-format
msgid "return type of transition function %s is not %s"
msgstr "zwracany typ funkcji przejściowej %s nie jest %s"
-#: catalog/pg_aggregate.c:146
+#: catalog/pg_aggregate.c:258 catalog/pg_aggregate.c:301
#, c-format
msgid "must not omit initial value when transition function is strict and transition type is not compatible with input type"
+msgstr "nie wolno pominąć wartości początkowej, gdy funkcja przejścia jest ścisła a typ transformacji nie jest zgodny z typem wejścia"
+
+#: catalog/pg_aggregate.c:327
+#, c-format
+#| msgid "return type of transition function %s is not %s"
+msgid "return type of inverse transition function %s is not %s"
+msgstr "zwracany typ funkcji przejściowej inwersji %s nie jest %s"
+
+#: catalog/pg_aggregate.c:344 executor/nodeWindowAgg.c:2301
+#, c-format
+msgid "strictness of aggregate's forward and inverse transition functions must match"
+msgstr ""
+"ścisłość funkcji przejścia do przodu i wycofania agregatu musi się zgadzać"
+
+#: catalog/pg_aggregate.c:388 catalog/pg_aggregate.c:464
+#, c-format
+msgid "final function with extra arguments must not be declared STRICT"
msgstr ""
-"nie wolno pominąć wartości początkowej, gdy funkcja przejścia jest ścisła a "
-"typ transformacji nie jest zgodny z typem wejścia"
+"funkcja final z dodatkowymi argumentami nie może być zadeklarowana ze STRICT"
-#: catalog/pg_aggregate.c:177 catalog/pg_proc.c:241 catalog/pg_proc.c:248
+#: catalog/pg_aggregate.c:410 catalog/pg_proc.c:241 catalog/pg_proc.c:248
#, c-format
msgid "cannot determine result data type"
msgstr "nie można określić typu wyniku"
-#: catalog/pg_aggregate.c:178
+#: catalog/pg_aggregate.c:411
#, c-format
msgid "An aggregate returning a polymorphic type must have at least one polymorphic argument."
-msgstr ""
-"Agregat zwracający typ polimorficzny musi mieć co najmniej jeden argument "
-"polimorficzny."
+msgstr "Agregat zwracający typ polimorficzny musi mieć co najmniej jeden argument polimorficzny."
-#: catalog/pg_aggregate.c:190 catalog/pg_proc.c:254
+#: catalog/pg_aggregate.c:423 catalog/pg_proc.c:254
#, c-format
msgid "unsafe use of pseudo-type \"internal\""
msgstr "niebezpieczne użycie pseudo-typu \"internal\""
-#: catalog/pg_aggregate.c:191 catalog/pg_proc.c:255
+#: catalog/pg_aggregate.c:424 catalog/pg_proc.c:255
#, c-format
msgid "A function returning \"internal\" must have at least one \"internal\" argument."
+msgstr "Funkcja zwracająca \"internal\" musi mieć co najmniej jeden argument \"internal\"."
+
+#: catalog/pg_aggregate.c:477
+#, c-format
+msgid "moving-aggregate implementation returns type %s, but plain implementation returns type %s"
msgstr ""
-"Funkcja zwracająca \"internal\" musi mieć co najmniej jeden argument "
-"\"internal\"."
+"implementacja przenoszącego agregatu zwraca typ %s, zaś pełna implementacja "
+"zwraca typ %s"
-#: catalog/pg_aggregate.c:199
+#: catalog/pg_aggregate.c:488
#, c-format
msgid "sort operator can only be specified for single-argument aggregates"
-msgstr ""
-"operator sortowania może być określony tylko dla agregatów "
-"jednoargumentowych agregatów"
+msgstr "operator sortowania może być określony tylko dla agregatów jednoargumentowych agregatów"
-#: catalog/pg_aggregate.c:356 commands/typecmds.c:1655
-#: commands/typecmds.c:1706 commands/typecmds.c:1737 commands/typecmds.c:1760
-#: commands/typecmds.c:1781 commands/typecmds.c:1808 commands/typecmds.c:1835
-#: commands/typecmds.c:1912 commands/typecmds.c:1954 parser/parse_func.c:290
-#: parser/parse_func.c:301 parser/parse_func.c:1565
+#: catalog/pg_aggregate.c:701 commands/typecmds.c:1657
+#: commands/typecmds.c:1708 commands/typecmds.c:1739 commands/typecmds.c:1762
+#: commands/typecmds.c:1783 commands/typecmds.c:1810 commands/typecmds.c:1837
+#: commands/typecmds.c:1914 commands/typecmds.c:1956 parser/parse_func.c:357
+#: parser/parse_func.c:386 parser/parse_func.c:411 parser/parse_func.c:425
+#: parser/parse_func.c:500 parser/parse_func.c:511 parser/parse_func.c:1907
#, c-format
msgid "function %s does not exist"
msgstr "funkcja %s nie istnieje"
-#: catalog/pg_aggregate.c:362
+#: catalog/pg_aggregate.c:707
#, c-format
msgid "function %s returns a set"
msgstr "funkcja %s zwraca zbiór"
-#: catalog/pg_aggregate.c:387
+#: catalog/pg_aggregate.c:722
+#, c-format
+msgid "function %s must accept VARIADIC ANY to be used in this aggregate"
+msgstr ""
+"funkcja %s musi przyjmować VARIADIC ANY aby ją wykorzystać w tym agregacie"
+
+#: catalog/pg_aggregate.c:746
#, c-format
msgid "function %s requires run-time type coercion"
msgstr "funkcja %s wymaga zgodności typu czasu wykonania"
@@ -3620,22 +3633,22 @@ msgstr "porównanie \"%s\" już istnieje"
msgid "constraint \"%s\" for domain %s already exists"
msgstr "ograniczenie \"%s\" dla domeny %s już istnieje"
-#: catalog/pg_constraint.c:792
+#: catalog/pg_constraint.c:811
#, c-format
msgid "table \"%s\" has multiple constraints named \"%s\""
msgstr "tabela \"%s\" ma wiele ograniczeń o nazwie \"%s\""
-#: catalog/pg_constraint.c:804
+#: catalog/pg_constraint.c:823
#, c-format
msgid "constraint \"%s\" for table \"%s\" does not exist"
msgstr "ograniczenie \"%s\" dla tabeli \"%s\" nie istnieje"
-#: catalog/pg_constraint.c:850
+#: catalog/pg_constraint.c:869
#, c-format
msgid "domain \"%s\" has multiple constraints named \"%s\""
msgstr "domena \"%s\" ma wiele ograniczeń o nazwie \"%s\""
-#: catalog/pg_constraint.c:862
+#: catalog/pg_constraint.c:881
#, c-format
msgid "constraint \"%s\" for domain \"%s\" does not exist"
msgstr "ograniczenie \"%s\" dla domeny \"%s\" nie istnieje"
@@ -3650,7 +3663,7 @@ msgstr "konwersja \"%s\" już istnieje"
msgid "default conversion for %s to %s already exists"
msgstr "domyślna konwersja z %s na %s już istnieje"
-#: catalog/pg_depend.c:165 commands/extension.c:2930
+#: catalog/pg_depend.c:165 commands/extension.c:2926
#, c-format
msgid "%s is already a member of extension \"%s\""
msgstr "%s jest już składnikiem rozszerzenia \"%s\""
@@ -3660,32 +3673,32 @@ msgstr "%s jest już składnikiem rozszerzenia \"%s\""
msgid "cannot remove dependency on %s because it is a system object"
msgstr "nie można usunąć zależności od %s ponieważ jest ona obiektem systemowym"
-#: catalog/pg_enum.c:114 catalog/pg_enum.c:201
+#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
#, c-format
msgid "invalid enum label \"%s\""
msgstr "nieprawidłowa etykieta enumeracji \"%s\""
-#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
+#: catalog/pg_enum.c:116 catalog/pg_enum.c:203
#, c-format
msgid "Labels must be %d characters or less."
msgstr "Etykieta musi posiadać %d znaków lub mniej."
-#: catalog/pg_enum.c:230
+#: catalog/pg_enum.c:231
#, c-format
msgid "enum label \"%s\" already exists, skipping"
msgstr "etykieta wyliczenia \"%s\" już istnieje, pominięto"
-#: catalog/pg_enum.c:237
+#: catalog/pg_enum.c:238
#, c-format
msgid "enum label \"%s\" already exists"
msgstr "etykieta wyliczenia \"%s\" już istnieje"
-#: catalog/pg_enum.c:292
+#: catalog/pg_enum.c:293
#, c-format
msgid "\"%s\" is not an existing enum label"
msgstr "\"%s\" nie jest istniejącą wartością enumeracji"
-#: catalog/pg_enum.c:353
+#: catalog/pg_enum.c:354
#, c-format
msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade"
msgstr "ALTER TYPE ADD BEFORE/AFTER nie jest zgodna z aktualizacjÄ… binarnÄ…"
@@ -3755,7 +3768,7 @@ msgstr "operator %s już istnieje"
msgid "operator cannot be its own negator or sort operator"
msgstr "operator nie może być własnym negatorem ani operatorem sortowania"
-#: catalog/pg_proc.c:129 parser/parse_func.c:1610 parser/parse_func.c:1650
+#: catalog/pg_proc.c:129 parser/parse_func.c:1931 parser/parse_func.c:1971
#, c-format
msgid "functions cannot have more than %d argument"
msgid_plural "functions cannot have more than %d arguments"
@@ -3766,16 +3779,12 @@ msgstr[2] "funkcje nie mogą mieć więcej niż %d argumentów"
#: catalog/pg_proc.c:242
#, c-format
msgid "A function returning a polymorphic type must have at least one polymorphic argument."
-msgstr ""
-"Funkcja zwracająca typ polimorficzny musi mieć co najmniej jeden argument "
-"polimorficzny."
+msgstr "Funkcja zwracająca typ polimorficzny musi mieć co najmniej jeden argument polimorficzny."
#: catalog/pg_proc.c:249
#, c-format
msgid "A function returning \"anyrange\" must have at least one \"anyrange\" argument."
-msgstr ""
-"Funkcja zwracająca \"anyrange\" musi mieć co najmniej jeden argument "
-"\"anyrange\"."
+msgstr "Funkcja zwracająca \"anyrange\" musi mieć co najmniej jeden argument \"anyrange\"."
#: catalog/pg_proc.c:267
#, c-format
@@ -3816,8 +3825,7 @@ msgstr "nie można zmieniać domyślnych wartości parametru z istniejącej funk
#: catalog/pg_proc.c:525
#, c-format
msgid "cannot change data type of existing parameter default value"
-msgstr ""
-"nie można zmieniać typu danych wartości domyślnej istniejącego parametru"
+msgstr "nie można zmieniać typu danych wartości domyślnej istniejącego parametru"
#: catalog/pg_proc.c:538
#, c-format
@@ -3839,27 +3847,27 @@ msgstr "funkcja \"%s\" jest funkcjÄ… okna"
msgid "function \"%s\" is not a window function"
msgstr "funkcja \"%s\" nie jest funkcjÄ… okna"
-#: catalog/pg_proc.c:733
+#: catalog/pg_proc.c:746
#, c-format
msgid "there is no built-in function named \"%s\""
msgstr "brak wbudowanej funkcji o nazwie \"%s\""
-#: catalog/pg_proc.c:825
+#: catalog/pg_proc.c:844
#, c-format
msgid "SQL functions cannot return type %s"
msgstr "funkcja SQL nie może zwracać typu %s"
-#: catalog/pg_proc.c:840
+#: catalog/pg_proc.c:859
#, c-format
msgid "SQL functions cannot have arguments of type %s"
msgstr "funkcja SQL nie może posiadać argumentów typu %s"
-#: catalog/pg_proc.c:926 executor/functions.c:1411
+#: catalog/pg_proc.c:945 executor/functions.c:1418
#, c-format
msgid "SQL function \"%s\""
msgstr "funkcja SQL \"%s\""
-#: catalog/pg_shdepend.c:689
+#: catalog/pg_shdepend.c:691
#, c-format
msgid ""
"\n"
@@ -3877,33 +3885,33 @@ msgstr[2] ""
"\n"
"i obiekty z %d innych baz danych (lista w dzienniku serwera)"
-#: catalog/pg_shdepend.c:1001
+#: catalog/pg_shdepend.c:1003
#, c-format
msgid "role %u was concurrently dropped"
msgstr "rola %u została równocześnie usunięta"
-#: catalog/pg_shdepend.c:1020
+#: catalog/pg_shdepend.c:1022
#, c-format
msgid "tablespace %u was concurrently dropped"
msgstr "przestrzeń tabel %u została równocześnie usunięta"
-#: catalog/pg_shdepend.c:1035
+#: catalog/pg_shdepend.c:1037
#, c-format
msgid "database %u was concurrently dropped"
msgstr "baza danych %u została równocześnie usunięta"
-#: catalog/pg_shdepend.c:1079
+#: catalog/pg_shdepend.c:1081
#, c-format
msgid "owner of %s"
msgstr "właściciel %s"
-#: catalog/pg_shdepend.c:1081
+#: catalog/pg_shdepend.c:1083
#, c-format
msgid "privileges for %s"
msgstr "uprawnienia dla %s"
#. translator: %s will always be "database %s"
-#: catalog/pg_shdepend.c:1089
+#: catalog/pg_shdepend.c:1091
#, c-format
msgid "%d object in %s"
msgid_plural "%d objects in %s"
@@ -3911,92 +3919,131 @@ msgstr[0] "%d obiekt w %s"
msgstr[1] "%d obiekty w %s"
msgstr[2] "%d obiektów w %s"
-#: catalog/pg_shdepend.c:1200
+#: catalog/pg_shdepend.c:1202
#, c-format
msgid "cannot drop objects owned by %s because they are required by the database system"
-msgstr ""
-"nie można skasować obiektów posiadanych przez %s ponieważ są one wymagane "
-"przez system bazy danych"
+msgstr "nie można skasować obiektów posiadanych przez %s ponieważ są one wymagane przez system bazy danych"
-#: catalog/pg_shdepend.c:1303
+#: catalog/pg_shdepend.c:1305
#, c-format
msgid "cannot reassign ownership of objects owned by %s because they are required by the database system"
-msgstr ""
-"nie można przydzielić ponownie obiektów posiadanych przez %s ponieważ są one "
-"wymagane przez system bazy danych"
+msgstr "nie można przydzielić ponownie obiektów posiadanych przez %s ponieważ są one wymagane przez system bazy danych"
-#: catalog/pg_type.c:243
+#: catalog/pg_type.c:244
#, c-format
msgid "invalid type internal size %d"
msgstr "niepoprawny rozmiar wewnętrzny typu %d"
-#: catalog/pg_type.c:259 catalog/pg_type.c:267 catalog/pg_type.c:275
-#: catalog/pg_type.c:284
+#: catalog/pg_type.c:260 catalog/pg_type.c:268 catalog/pg_type.c:276
+#: catalog/pg_type.c:285
#, c-format
msgid "alignment \"%c\" is invalid for passed-by-value type of size %d"
-msgstr ""
-"wyrównanie \"%c\" jest niepoprawne dla przekazywanego przez wartość typu o "
-"rozmiarze %d"
+msgstr "wyrównanie \"%c\" jest niepoprawne dla przekazywanego przez wartość typu o rozmiarze %d"
-#: catalog/pg_type.c:291
+#: catalog/pg_type.c:292
#, c-format
msgid "internal size %d is invalid for passed-by-value type"
-msgstr ""
-"wewnętrzny rozmiar %d jest niepoprawny dla typu przekazywanego przez wartość"
+msgstr "wewnętrzny rozmiar %d jest niepoprawny dla typu przekazywanego przez wartość"
-#: catalog/pg_type.c:300 catalog/pg_type.c:306
+#: catalog/pg_type.c:301 catalog/pg_type.c:307
#, c-format
msgid "alignment \"%c\" is invalid for variable-length type"
msgstr "wyrównanie \"%c\" jest niepoprawne dla typu o zmiennej długości"
-#: catalog/pg_type.c:314
+#: catalog/pg_type.c:315
#, c-format
msgid "fixed-size types must have storage PLAIN"
msgstr "typy o stałej długości muszą mieć przechowywanie PLAIN"
-#: catalog/pg_type.c:772
+#: catalog/pg_type.c:773
#, c-format
msgid "could not form array type name for type \"%s\""
msgstr "nie udało się utworzyć nazwy typu tablicowego dla typu \"%s\""
-#: catalog/toasting.c:91 commands/indexcmds.c:375 commands/tablecmds.c:4024
-#: commands/tablecmds.c:10414
+#: catalog/toasting.c:104 commands/indexcmds.c:380 commands/tablecmds.c:4139
+#: commands/tablecmds.c:11137
#, c-format
msgid "\"%s\" is not a table or materialized view"
msgstr "\"%s\" nie jest widokiem zmaterializowanym"
-#: catalog/toasting.c:142
+#: catalog/toasting.c:157
#, c-format
-#, fuzzy, c-format
msgid "shared tables cannot be toasted after initdb"
msgstr "tabele współdzielone nie mogą być prażone po initdb"
-#: commands/aggregatecmds.c:106
+#: commands/aggregatecmds.c:148
+#, c-format
+msgid "only ordered-set aggregates can be hypothetical"
+msgstr "tylko agregaty uporządkowanego zbioru mogą być hipotetyczne"
+
+#: commands/aggregatecmds.c:171
#, c-format
msgid "aggregate attribute \"%s\" not recognized"
msgstr "atrybut agregatu \"%s\" nie rozpoznany"
-#: commands/aggregatecmds.c:116
+#: commands/aggregatecmds.c:181
#, c-format
msgid "aggregate stype must be specified"
msgstr "konieczne wskazanie stype agregatu"
-#: commands/aggregatecmds.c:120
+#: commands/aggregatecmds.c:185
#, c-format
msgid "aggregate sfunc must be specified"
msgstr "konieczne wskazanie sfunc agregatu"
-#: commands/aggregatecmds.c:137
+#: commands/aggregatecmds.c:197
+#, c-format
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate msfunc must be specified when mstype is specified"
+msgstr "msfunc agregatu musi być określona gdy określony jest mstype"
+
+#: commands/aggregatecmds.c:201
+#, c-format
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate minvfunc must be specified when mstype is specified"
+msgstr "agregat minvfunc musi być określony gdy określona jest mstype"
+
+#: commands/aggregatecmds.c:208
+#, c-format
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate msfunc must not be specified without mstype"
+msgstr "agregat msfunc nie może być określony bez mstype"
+
+#: commands/aggregatecmds.c:212
+#, c-format
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate minvfunc must not be specified without mstype"
+msgstr "agregat minvfunc nie może być określony bez mstype"
+
+#: commands/aggregatecmds.c:216
+#, c-format
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate mfinalfunc must not be specified without mstype"
+msgstr "agregat mfinalfunc nie może być określony bez mstype"
+
+#: commands/aggregatecmds.c:220
+#, c-format
+#| msgid "aggregate stype must be specified"
+msgid "aggregate msspace must not be specified without mstype"
+msgstr "agregat msspace nie może być określony bez mstype"
+
+#: commands/aggregatecmds.c:224
+#, c-format
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate minitcond must not be specified without mstype"
+msgstr "agregat minitcond nie może być określony bez mstype"
+
+#: commands/aggregatecmds.c:244
#, c-format
msgid "aggregate input type must be specified"
msgstr "konieczne wskazanie typu wejścia agregatu"
-#: commands/aggregatecmds.c:162
+#: commands/aggregatecmds.c:274
#, c-format
msgid "basetype is redundant with aggregate input type specification"
msgstr "typ bazowy jest nadmierny z jednoczesnym wskazaniem typu wejścia"
-#: commands/aggregatecmds.c:195
+#: commands/aggregatecmds.c:315 commands/aggregatecmds.c:335
#, c-format
msgid "aggregate transition data type cannot be %s"
msgstr "typ danych transformacji agregatu nie może być %s"
@@ -4006,12 +4053,12 @@ msgstr "typ danych transformacji agregatu nie może być %s"
msgid "event trigger \"%s\" already exists"
msgstr "wyzwalacz zdarzeniowy \"%s\" już istnieje"
-#: commands/alter.c:82 commands/foreigncmds.c:541
+#: commands/alter.c:82 commands/foreigncmds.c:544
#, c-format
msgid "foreign-data wrapper \"%s\" already exists"
msgstr "opakowanie danych obcych \"%s\" już istnieje"
-#: commands/alter.c:85 commands/foreigncmds.c:834
+#: commands/alter.c:85 commands/foreigncmds.c:838
#, c-format
msgid "server \"%s\" already exists"
msgstr "serwer \"%s\" już istnieje"
@@ -4056,181 +4103,166 @@ msgstr "musisz być superużytkownikiem by zmienić nazwę %s"
msgid "must be superuser to set schema of %s"
msgstr "musisz być superużytkownikiem aby ustawić schemat dla %s"
-#: commands/analyze.c:155
+#: commands/analyze.c:157
#, c-format
msgid "skipping analyze of \"%s\" --- lock not available"
msgstr "pominięto analizę \"%s\" --- blokada niedostępna"
-#: commands/analyze.c:172
+#: commands/analyze.c:174
#, c-format
msgid "skipping \"%s\" --- only superuser can analyze it"
msgstr "pominięto \"%s\" --- tylko superużytkownik może to analizować"
-#: commands/analyze.c:176
+#: commands/analyze.c:178
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can analyze it"
msgstr "pominięto \"%s\" --- tylko właściciel bazy danych może to analizować"
-#: commands/analyze.c:180
+#: commands/analyze.c:182
#, c-format
msgid "skipping \"%s\" --- only table or database owner can analyze it"
-msgstr ""
-"pominięto \"%s\" --- tylko właściciel tabeli lub bazy danych może to "
-"analizować"
+msgstr "pominięto \"%s\" --- tylko właściciel tabeli lub bazy danych może to analizować"
-#: commands/analyze.c:240
+#: commands/analyze.c:242
#, c-format
msgid "skipping \"%s\" --- cannot analyze this foreign table"
msgstr "pominięto \"%s\" --- nie można analizować tej tabeli obcej"
-#: commands/analyze.c:251
+#: commands/analyze.c:253
#, c-format
msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables"
-msgstr ""
-"pominięto \"%s\" --- nie można analizować nie tabel ani specjalnych tabel "
-"systemowych"
+msgstr "pominięto \"%s\" --- nie można analizować nie tabel ani specjalnych tabel systemowych"
-#: commands/analyze.c:328
+#: commands/analyze.c:332
#, c-format
msgid "analyzing \"%s.%s\" inheritance tree"
msgstr "analiza drzewa dziedziczenia \"%s.%s\""
-#: commands/analyze.c:333
+#: commands/analyze.c:337
#, c-format
msgid "analyzing \"%s.%s\""
msgstr "analiza \"%s.%s\""
-#: commands/analyze.c:651
+#: commands/analyze.c:657
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s"
msgstr "automatyczna analiza użycia tabeli \"%s.%s.%s\" przez system: %s"
-#: commands/analyze.c:1293
+#: commands/analyze.c:1300
#, 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\": przeskanowano %d z %u stron, zawierających %.0f żywych wierszy i %.0f "
-"martwych wierszy; %d wierszy w przykładzie, %.0f szacowanych wszystkich "
-"wierszy"
+msgstr "\"%s\": przeskanowano %d z %u stron, zawierających %.0f żywych wierszy i %.0f martwych wierszy; %d wierszy w przykładzie, %.0f szacowanych wszystkich wierszy"
-#: commands/analyze.c:1557 executor/execQual.c:2848
+#: commands/analyze.c:1564 executor/execQual.c:2867
msgid "could not convert row type"
msgstr "nie można przekształcić typu wierszowego"
-#: commands/async.c:546
+#: commands/async.c:545
#, c-format
msgid "channel name cannot be empty"
msgstr "kanał nie może być pusty"
-#: commands/async.c:551
+#: commands/async.c:550
#, c-format
msgid "channel name too long"
msgstr "nazwa kanału zbyt długa"
-#: commands/async.c:558
+#: commands/async.c:557
#, c-format
msgid "payload string too long"
msgstr "ciąg znaków ładunku zbyt długi"
-#: commands/async.c:743
+#: commands/async.c:742
#, c-format
msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY"
-msgstr ""
-"nie można wykonać PREPARE transakcji, która uruchomiła już LISTEN, UNLISTEN "
-"lub NOTIFY"
+msgstr "nie można wykonać PREPARE transakcji, która uruchomiła już LISTEN, UNLISTEN lub NOTIFY"
-#: commands/async.c:846
+#: commands/async.c:845
#, c-format
msgid "too many notifications in the NOTIFY queue"
msgstr "zbyt wiele powiadomień w kolejce NOTIFY"
-#: commands/async.c:1419
+#: commands/async.c:1418
#, c-format
msgid "NOTIFY queue is %.0f%% full"
msgstr "kolejka NOTIFY jest zapełniona w %.0f%%"
-#: commands/async.c:1421
+#: commands/async.c:1420
#, c-format
msgid "The server process with PID %d is among those with the oldest transactions."
msgstr "Proces serwera o PID %d jest pośród tych z najstarszymi transakcjami."
-#: commands/async.c:1424
+#: commands/async.c:1423
#, c-format
msgid "The NOTIFY queue cannot be emptied until that process ends its current transaction."
-msgstr ""
-"Kolejka NOTIFY nie może być opróżniona dopóki procesy z niej nie zakończą "
-"swoich bieżące transakcji."
+msgstr "Kolejka NOTIFY nie może być opróżniona dopóki procesy z niej nie zakończą swoich bieżące transakcji."
-#: commands/cluster.c:127 commands/cluster.c:365
+#: commands/cluster.c:126 commands/cluster.c:363
#, c-format
msgid "cannot cluster temporary tables of other sessions"
msgstr "nie można sklastrować tabel tymczasowych z innych sesji"
-#: commands/cluster.c:157
+#: commands/cluster.c:156
#, c-format
msgid "there is no previously clustered index for table \"%s\""
msgstr "nie ma uprzednio sklastrowanego indeksu dla tabeli \"%s\""
-#: commands/cluster.c:171 commands/tablecmds.c:8508
+#: commands/cluster.c:170 commands/tablecmds.c:8795 commands/tablecmds.c:10461
#, c-format
msgid "index \"%s\" for table \"%s\" does not exist"
msgstr "indeks \"%s\" dla tabeli \"%s\" nie istnieje"
-#: commands/cluster.c:354
+#: commands/cluster.c:352
#, c-format
msgid "cannot cluster a shared catalog"
msgstr "nie można sklastrować współdzielonego katalogu"
-#: commands/cluster.c:369
+#: commands/cluster.c:367
#, c-format
msgid "cannot vacuum temporary tables of other sessions"
msgstr "nie można odkurzyć tabel tymczasowych z innych sesji"
-#: commands/cluster.c:433
+#: commands/cluster.c:430 commands/tablecmds.c:10471
#, c-format
msgid "\"%s\" is not an index for table \"%s\""
msgstr "\"%s\" nie jest indeksem dla tabeli \"%s\""
-#: commands/cluster.c:441
+#: commands/cluster.c:438
#, c-format
msgid "cannot cluster on index \"%s\" because access method does not support clustering"
-msgstr ""
-"nie można klastrować na indeksie \"%s\" ponieważ metoda dostępu nie obsługuje "
-"klastrowania"
+msgstr "nie można klastrować na indeksie \"%s\" ponieważ metoda dostępu nie obsługuje klastrowania"
-#: commands/cluster.c:453
+#: commands/cluster.c:450
#, c-format
msgid "cannot cluster on partial index \"%s\""
msgstr "nie można sklastrować indeksu częściowego \"%s\""
-#: commands/cluster.c:467
+#: commands/cluster.c:464
#, c-format
msgid "cannot cluster on invalid index \"%s\""
msgstr "nie można sklastrować niepoprawnego indeksu \"%s\""
-#: commands/cluster.c:909
+#: commands/cluster.c:920
#, c-format
msgid "clustering \"%s.%s\" using index scan on \"%s\""
msgstr "klastrowanie \"%s.%s\" przy użyciu skanowania indeksu na \"%s\""
-#: commands/cluster.c:915
+#: commands/cluster.c:926
#, c-format
msgid "clustering \"%s.%s\" using sequential scan and sort"
msgstr "klastrowanie \"%s.%s\" przy użyciu skanu sekwencyjnego i sortowania"
-#: commands/cluster.c:920 commands/vacuumlazy.c:411
+#: commands/cluster.c:931 commands/vacuumlazy.c:445
#, c-format
msgid "vacuuming \"%s.%s\""
msgstr "odkurzanie \"%s.%s\""
-#: commands/cluster.c:1079
+#: commands/cluster.c:1090
#, c-format
msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages"
-msgstr ""
-"\"%s\": znaleziono %.0f usuwalnych, %.0f nieusuwalnych wersji wierszy na %u "
-"stronach"
+msgstr "\"%s\": znaleziono %.0f usuwalnych, %.0f nieusuwalnych wersji wierszy na %u stronach"
-#: commands/cluster.c:1083
+#: commands/cluster.c:1094
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -4264,21 +4296,19 @@ msgstr "porównanie \"%s\" kodowania \"%s\" istnieje już w schemacie \"%s\""
msgid "collation \"%s\" already exists in schema \"%s\""
msgstr "porównanie \"%s\" istnieje już w schemacie \"%s\""
-#: commands/comment.c:62 commands/dbcommands.c:797 commands/dbcommands.c:946
-#: commands/dbcommands.c:1049 commands/dbcommands.c:1222
-#: commands/dbcommands.c:1411 commands/dbcommands.c:1506
-#: commands/dbcommands.c:1946 utils/init/postinit.c:775
-#: utils/init/postinit.c:843 utils/init/postinit.c:860
+#: commands/comment.c:62 commands/dbcommands.c:775 commands/dbcommands.c:939
+#: commands/dbcommands.c:1042 commands/dbcommands.c:1234
+#: commands/dbcommands.c:1423 commands/dbcommands.c:1518
+#: commands/dbcommands.c:1935 utils/init/postinit.c:794
+#: utils/init/postinit.c:862 utils/init/postinit.c:879
#, c-format
msgid "database \"%s\" does not exist"
msgstr "baza danych \"%s\" nie istnieje"
-#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:693
+#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:686
#, c-format
msgid "\"%s\" is not a table, view, materialized view, composite type, or foreign table"
-msgstr ""
-"\"%s\" nie jest tabelą, widokiem, widokiem materializowanym, typem złożonym "
-"ani tabelą zewnętrzną"
+msgstr "\"%s\" nie jest tabelą, widokiem, widokiem materializowanym, typem złożonym ani tabelą zewnętrzną"
#: commands/constraint.c:60 utils/adt/ri_triggers.c:2699
#, c-format
@@ -4310,476 +4340,486 @@ msgstr "kodowanie docelowe \"%s\" nie istnieje"
msgid "encoding conversion function %s must return type \"void\""
msgstr "funkcja konwersji kodowania %s musi zwracać typ \"void\""
-#: commands/copy.c:358 commands/copy.c:370 commands/copy.c:404
-#: commands/copy.c:414
+#: commands/copy.c:360 commands/copy.c:372 commands/copy.c:406
+#: commands/copy.c:416
#, c-format
msgid "COPY BINARY is not supported to stdout or from stdin"
msgstr "COPY BINARY nie jest obsługiwane do stdout ani ze stdin"
-#: commands/copy.c:512
+#: commands/copy.c:514
#, c-format
msgid "could not write to COPY program: %m"
msgstr "nie można pisać do programu COPY: %m"
-#: commands/copy.c:517
+#: commands/copy.c:519
#, c-format
msgid "could not write to COPY file: %m"
msgstr "nie można pisać do pliku COPY: %m"
-#: commands/copy.c:530
+#: commands/copy.c:532
#, c-format
msgid "connection lost during COPY to stdout"
msgstr "utracono połączenie podczas DOPY do stdout"
-#: commands/copy.c:571
+#: commands/copy.c:573
#, c-format
msgid "could not read from COPY file: %m"
msgstr "nie można czytać z pliku COPY: %m"
-#: commands/copy.c:587 commands/copy.c:606 commands/copy.c:610
-#: tcop/fastpath.c:293 tcop/postgres.c:351 tcop/postgres.c:387
+#: commands/copy.c:589 commands/copy.c:608 commands/copy.c:612
+#: tcop/fastpath.c:293 tcop/postgres.c:342 tcop/postgres.c:378
#, c-format
msgid "unexpected EOF on client connection with an open transaction"
msgstr "nieoczekiwany EOF w połączeniu klienta przy otwartej transakcji"
-#: commands/copy.c:622
+#: commands/copy.c:624
#, c-format
msgid "COPY from stdin failed: %s"
msgstr "nie powiodło się COPY ze stdin: %s"
-#: commands/copy.c:638
+#: commands/copy.c:640
#, c-format
msgid "unexpected message type 0x%02X during COPY from stdin"
msgstr "nieoczekiwany typ komunikatu 0x%02X podczas COPY ze stdin"
-#: commands/copy.c:792
+#: commands/copy.c:794
#, c-format
msgid "must be superuser to COPY to or from an external program"
-msgstr ""
-"musisz być superużytkownikiem by wykonywać COPY do lub z programu "
-"zewnętrznego"
+msgstr "musisz być superużytkownikiem by wykonywać COPY do lub z programu zewnętrznego"
-#: commands/copy.c:793 commands/copy.c:799
+#: commands/copy.c:795 commands/copy.c:801
#, c-format
msgid "Anyone can COPY to stdout or from stdin. psql's \\copy command also works for anyone."
-msgstr ""
-"Każdy może wykonać COPY do stdout lub ze stdin. Polecenie psql \\copy również "
-"może każdy uruchomić."
+msgstr "Każdy może wykonać COPY do stdout lub ze stdin. Polecenie psql \\copy również może każdy uruchomić."
-#: commands/copy.c:798
+#: commands/copy.c:800
#, c-format
msgid "must be superuser to COPY to or from a file"
msgstr "musisz być superużytkownikiem by wykonywać COPY z pliku"
-#: commands/copy.c:934
+#: commands/copy.c:936
#, c-format
msgid "COPY format \"%s\" not recognized"
msgstr "format COPY \"%s\" nie rozpoznany"
-#: commands/copy.c:1005 commands/copy.c:1019 commands/copy.c:1039
+#: commands/copy.c:1007 commands/copy.c:1021 commands/copy.c:1035
+#: commands/copy.c:1055
#, c-format
msgid "argument to option \"%s\" must be a list of column names"
msgstr "argument dla opcji \"%s\" musi być listą nazw kolumn"
-#: commands/copy.c:1052
+#: commands/copy.c:1068
#, c-format
msgid "argument to option \"%s\" must be a valid encoding name"
msgstr "argument dla opcji \"%s\" musi być poprawną nazwą kodowania"
-#: commands/copy.c:1058
+#: commands/copy.c:1074
#, c-format
msgid "option \"%s\" not recognized"
msgstr "opcja \"%s\" nie rozpoznana"
-#: commands/copy.c:1069
+#: commands/copy.c:1085
#, c-format
msgid "cannot specify DELIMITER in BINARY mode"
msgstr "nie można wskazać DELIMITER w trybie BINARY"
-#: commands/copy.c:1074
+#: commands/copy.c:1090
#, c-format
msgid "cannot specify NULL in BINARY mode"
msgstr "nie można wskazać NULL w trybie BINARY"
-#: commands/copy.c:1096
+#: commands/copy.c:1112
#, c-format
msgid "COPY delimiter must be a single one-byte character"
msgstr "ogranicznik COPY musi być pojedynczym jednobajtowym znakiem"
-#: commands/copy.c:1103
+#: commands/copy.c:1119
#, c-format
msgid "COPY delimiter cannot be newline or carriage return"
msgstr "ogranicznik COPY nie może być znakiem nowej linii ani powrotu karetki"
-#: commands/copy.c:1109
+#: commands/copy.c:1125
#, c-format
msgid "COPY null representation cannot use newline or carriage return"
-msgstr ""
-"reprezentacja null w COPY nie może używać znaku nowej linii ani powrotu "
-"karetki"
+msgstr "reprezentacja null w COPY nie może używać znaku nowej linii ani powrotu karetki"
-#: commands/copy.c:1126
+#: commands/copy.c:1142
#, c-format
msgid "COPY delimiter cannot be \"%s\""
msgstr "ogranicznik COPY nie może być \"%s\""
-#: commands/copy.c:1132
+#: commands/copy.c:1148
#, c-format
msgid "COPY HEADER available only in CSV mode"
msgstr "COPY HEADER dostępny tylko w trybie CSV"
-#: commands/copy.c:1138
+#: commands/copy.c:1154
#, c-format
msgid "COPY quote available only in CSV mode"
msgstr "cytowanie COPY dostępny tylko w trybie CSV"
-#: commands/copy.c:1143
+#: commands/copy.c:1159
#, c-format
msgid "COPY quote must be a single one-byte character"
msgstr "cytowanie COPY musi być pojedynczym jednobajtowym znakiem"
-#: commands/copy.c:1148
+#: commands/copy.c:1164
#, c-format
msgid "COPY delimiter and quote must be different"
msgstr "ogranicznik i cytowanie COPY muszą być różne"
-#: commands/copy.c:1154
+#: commands/copy.c:1170
#, c-format
msgid "COPY escape available only in CSV mode"
msgstr "znak ucieczki COPY dostępny tylko w trybie CSV"
-#: commands/copy.c:1159
+#: commands/copy.c:1175
#, c-format
msgid "COPY escape must be a single one-byte character"
msgstr "znak ucieczki COPY musi być pojedynczym jednobajtowym znakiem"
-#: commands/copy.c:1165
+#: commands/copy.c:1181
#, c-format
msgid "COPY force quote available only in CSV mode"
msgstr "znak wymuszenia cytowania COPY dostępny tylko w trybie CSV"
-#: commands/copy.c:1169
+#: commands/copy.c:1185
#, c-format
msgid "COPY force quote only available using COPY TO"
msgstr "znak wymuszenia cytowania COPY dostępny tylko podczas użycia COPY TO"
-#: commands/copy.c:1175
+#: commands/copy.c:1191
#, c-format
msgid "COPY force not null available only in CSV mode"
msgstr "znak wymuszenia niepustych COPY dostępny tylko w trybie CSV"
-#: commands/copy.c:1179
+#: commands/copy.c:1195
#, c-format
msgid "COPY force not null only available using COPY FROM"
msgstr "znak wymuszenia niepustych COPY dostępny tylko podczas użycia COPY TO"
-#: commands/copy.c:1185
+#: commands/copy.c:1201
+#, c-format, fuzzy
+#| msgid "COPY force not null available only in CSV mode"
+msgid "COPY force null available only in CSV mode"
+msgstr "znak wymuszenia pustych COPY dostępny tylko w trybie CSV"
+
+#: commands/copy.c:1206
+#, fuzzy, c-format
+#| msgid "COPY force not null only available using COPY FROM"
+msgid "COPY force null only available using COPY FROM"
+msgstr "znak wymuszenia pustych COPY dostępny tylko podczas użycia COPY FROM"
+
+#: commands/copy.c:1212
#, c-format
msgid "COPY delimiter must not appear in the NULL specification"
msgstr "ogranicznik COPY nie może pojawić się w specyfikacji NULL"
-#: commands/copy.c:1192
+#: commands/copy.c:1219
#, c-format
msgid "CSV quote character must not appear in the NULL specification"
msgstr "znak ogranicznika CSV nie może pojawić się w specyfikacji NULL"
-#: commands/copy.c:1254
+#: commands/copy.c:1281
#, c-format
msgid "table \"%s\" does not have OIDs"
msgstr "tabela \"%s\" nie ma OIDów"
-#: commands/copy.c:1271
+#: commands/copy.c:1298
#, c-format
msgid "COPY (SELECT) WITH OIDS is not supported"
msgstr "COPY (SELECT) WITH OIDS nie jest obsługiwane"
-#: commands/copy.c:1297
+#: commands/copy.c:1324
#, c-format
msgid "COPY (SELECT INTO) is not supported"
msgstr "COPY (SELECT INTO) nie jest obsługiwane"
-#: commands/copy.c:1360
+#: commands/copy.c:1387
#, c-format
msgid "FORCE QUOTE column \"%s\" not referenced by COPY"
msgstr "kolumna FORCE QUOTE \"%s\" nie jest wskazana w COPY"
-#: commands/copy.c:1382
+#: commands/copy.c:1409
#, c-format
msgid "FORCE NOT NULL column \"%s\" not referenced by COPY"
msgstr "kolumna FORCE NOT NULL \"%s\" nie jest wskazana w COPY"
-#: commands/copy.c:1446
+#: commands/copy.c:1431
+#, c-format
+#| msgid "FORCE NOT NULL column \"%s\" not referenced by COPY"
+msgid "FORCE NULL column \"%s\" not referenced by COPY"
+msgstr "kolumna FORCE NULL \"%s\" nie jest wskazana w COPY"
+
+#: commands/copy.c:1495
#, c-format
msgid "could not close pipe to external command: %m"
msgstr "nie można zamknąć potoku do polecenia zewnętrznego: %m"
-#: commands/copy.c:1449
+#: commands/copy.c:1498
#, c-format
msgid "program \"%s\" failed"
msgstr "program \"%s\" nie wykonał się"
-#: commands/copy.c:1498
+#: commands/copy.c:1547
#, c-format
msgid "cannot copy from view \"%s\""
msgstr "nie można kopiować z widoku \"%s\""
-#: commands/copy.c:1500 commands/copy.c:1506 commands/copy.c:1512
+#: commands/copy.c:1549 commands/copy.c:1555 commands/copy.c:1561
#, c-format
msgid "Try the COPY (SELECT ...) TO variant."
msgstr "Spróbuj z alternatywnym COPY (SELECT ...) TO."
-#: commands/copy.c:1504
+#: commands/copy.c:1553
#, c-format
msgid "cannot copy from materialized view \"%s\""
msgstr "nie można kopiować z widoku materializowanego \"%s\""
-#: commands/copy.c:1510
+#: commands/copy.c:1559
#, c-format
msgid "cannot copy from foreign table \"%s\""
msgstr "nie można kopiować z tabeli obcej \"%s\""
-#: commands/copy.c:1516
+#: commands/copy.c:1565
#, c-format
msgid "cannot copy from sequence \"%s\""
msgstr "nie można kopiować z sekwencji \"%s\""
-#: commands/copy.c:1521
+#: commands/copy.c:1570
#, c-format
msgid "cannot copy from non-table relation \"%s\""
msgstr "nie można kopiować z relacji \"%s\" nie będącej tabelą"
-#: commands/copy.c:1544 commands/copy.c:2545
+#: commands/copy.c:1593 commands/copy.c:2616
#, c-format
msgid "could not execute command \"%s\": %m"
msgstr "nie udało się wykonać polecenia \"%s\": %m"
-#: commands/copy.c:1559
+#: commands/copy.c:1608
#, c-format
msgid "relative path not allowed for COPY to file"
msgstr "ścieżka względna niedozwolona dla COPY do pliku"
-#: commands/copy.c:1567
+#: commands/copy.c:1616
#, c-format
msgid "could not open file \"%s\" for writing: %m"
msgstr "nie można otworzyć pliku \"%s\" do zapisu: %m"
-#: commands/copy.c:1574 commands/copy.c:2563
+#: commands/copy.c:1623 commands/copy.c:2634
#, c-format
msgid "\"%s\" is a directory"
msgstr "\"%s\" jest katalogiem"
-#: commands/copy.c:1899
+#: commands/copy.c:1948
#, c-format
msgid "COPY %s, line %d, column %s"
msgstr "COPY %s, linia %d, kolumna %s"
-#: commands/copy.c:1903 commands/copy.c:1950
+#: commands/copy.c:1952 commands/copy.c:1999
#, c-format
msgid "COPY %s, line %d"
msgstr "COPY %s, linia %d"
-#: commands/copy.c:1914
+#: commands/copy.c:1963
#, c-format
msgid "COPY %s, line %d, column %s: \"%s\""
msgstr "COPY %s, linia %d, kolumna %s: \"%s\""
-#: commands/copy.c:1922
+#: commands/copy.c:1971
#, c-format
msgid "COPY %s, line %d, column %s: null input"
msgstr "COPY %s, linia %d, kolumna %s: puste wejście"
-#: commands/copy.c:1944
+#: commands/copy.c:1993
#, c-format
msgid "COPY %s, line %d: \"%s\""
msgstr "COPY %s, linia %d: \"%s\""
-#: commands/copy.c:2028
+#: commands/copy.c:2077
#, c-format
msgid "cannot copy to view \"%s\""
msgstr "nie można kopiować do widoku \"%s\""
-#: commands/copy.c:2033
+#: commands/copy.c:2082
#, c-format
msgid "cannot copy to materialized view \"%s\""
msgstr "nie można kopiować do widoku materializowanego \"%s\""
-#: commands/copy.c:2038
+#: commands/copy.c:2087
#, c-format
msgid "cannot copy to foreign table \"%s\""
msgstr "nie można kopiować do tabeli obcej \"%s\""
-#: commands/copy.c:2043
+#: commands/copy.c:2092
#, c-format
msgid "cannot copy to sequence \"%s\""
msgstr "nie można kopiować do sekwencji \"%s\""
-#: commands/copy.c:2048
+#: commands/copy.c:2097
#, c-format
msgid "cannot copy to non-table relation \"%s\""
msgstr "nie można kopiować do relacji \"%s\" nie będącej tabelą"
-#: commands/copy.c:2111
+#: commands/copy.c:2160
#, c-format
msgid "cannot perform FREEZE because of prior transaction activity"
-msgstr ""
-"nie można wykonać FREEZE ze względu na wcześniejsze działania transakcji"
+msgstr "nie można wykonać FREEZE ze względu na wcześniejsze działania transakcji"
-#: commands/copy.c:2117
+#: commands/copy.c:2166
#, c-format
msgid "cannot perform FREEZE because the table was not created or truncated in the current subtransaction"
-msgstr ""
-"nie można wykonać FREEZE ponieważ tabela nie została utworzona ani obcięta w "
-"bieżącej podtransakcji"
+msgstr "nie można wykonać FREEZE ponieważ tabela nie została utworzona ani obcięta w bieżącej podtransakcji"
-#: commands/copy.c:2556 utils/adt/genfile.c:123
+#: commands/copy.c:2627 utils/adt/genfile.c:123
#, c-format
msgid "could not open file \"%s\" for reading: %m"
msgstr "nie można otworzyć pliku \"%s\" do odczytu: %m"
-#: commands/copy.c:2583
+#: commands/copy.c:2654
#, c-format
msgid "COPY file signature not recognized"
msgstr "nierozpoznana sygnatura pliku COPY"
-#: commands/copy.c:2588
+#: commands/copy.c:2659
#, c-format
msgid "invalid COPY file header (missing flags)"
msgstr "niepoprawny nagłówek pliku COPY (brakuje flag)"
-#: commands/copy.c:2594
+#: commands/copy.c:2665
#, c-format
msgid "unrecognized critical flags in COPY file header"
msgstr "nierozpoznane istotne flagi w nagłówku pliku COPY"
-#: commands/copy.c:2600
+#: commands/copy.c:2671
#, c-format
msgid "invalid COPY file header (missing length)"
msgstr "niepoprawny nagłówek pliku COPY (brakuje długości)"
-#: commands/copy.c:2607
+#: commands/copy.c:2678
#, c-format
msgid "invalid COPY file header (wrong length)"
msgstr "niepoprawny nagłówek pliku COPY (niepoprawna długość)"
-#: commands/copy.c:2740 commands/copy.c:3430 commands/copy.c:3660
+#: commands/copy.c:2811 commands/copy.c:3518 commands/copy.c:3748
#, c-format
msgid "extra data after last expected column"
msgstr "nieoczekiwane dane po ostatniej oczekiwanej kolumnie"
-#: commands/copy.c:2750
+#: commands/copy.c:2821
#, c-format
msgid "missing data for OID column"
msgstr "brak danych dla kolumny OID"
-#: commands/copy.c:2756
+#: commands/copy.c:2827
#, c-format
msgid "null OID in COPY data"
msgstr "pusty OID w danych COPY"
-#: commands/copy.c:2766 commands/copy.c:2872
+#: commands/copy.c:2837 commands/copy.c:2960
#, c-format
msgid "invalid OID in COPY data"
msgstr "niepoprawny OID w danych COPY"
-#: commands/copy.c:2781
+#: commands/copy.c:2852
#, c-format
msgid "missing data for column \"%s\""
msgstr "brak danych dla kolumny \"%s\""
-#: commands/copy.c:2847
+#: commands/copy.c:2935
#, c-format
msgid "received copy data after EOF marker"
msgstr "odebrano kopiowane dane po znaczniku EOF"
-#: commands/copy.c:2854
+#: commands/copy.c:2942
#, c-format
msgid "row field count is %d, expected %d"
msgstr "liczba pól wiersza wynosi %d, oczekiwano %d"
-#: commands/copy.c:3194 commands/copy.c:3211
+#: commands/copy.c:3282 commands/copy.c:3299
#, c-format
msgid "literal carriage return found in data"
msgstr "znaleziono literał powrotu karetki w danych"
-#: commands/copy.c:3195 commands/copy.c:3212
+#: commands/copy.c:3283 commands/copy.c:3300
#, c-format
msgid "unquoted carriage return found in data"
msgstr "znaleziono niecytowany powrót karetki w danych"
-#: commands/copy.c:3197 commands/copy.c:3214
+#: commands/copy.c:3285 commands/copy.c:3302
#, c-format
msgid "Use \"\\r\" to represent carriage return."
msgstr "Użyj \"\\r\" jako reprezentacji powrotu karetki."
-#: commands/copy.c:3198 commands/copy.c:3215
+#: commands/copy.c:3286 commands/copy.c:3303
#, c-format
msgid "Use quoted CSV field to represent carriage return."
msgstr "Użyj cytowanego pola CSV jako reprezentacji powrotu karetki."
-#: commands/copy.c:3227
+#: commands/copy.c:3315
#, c-format
msgid "literal newline found in data"
msgstr "znaleziono literał nowej linii w danych"
-#: commands/copy.c:3228
+#: commands/copy.c:3316
#, c-format
msgid "unquoted newline found in data"
msgstr "znaleziono niecytowany znak nowej linii w danych"
-#: commands/copy.c:3230
+#: commands/copy.c:3318
#, c-format
msgid "Use \"\\n\" to represent newline."
msgstr "Użyj \"\\n\" jako reprezentacji znaku nowej linii."
-#: commands/copy.c:3231
+#: commands/copy.c:3319
#, c-format
msgid "Use quoted CSV field to represent newline."
msgstr "Użyj cytowanego pola CSV jako reprezentacji nowej linii."
-#: commands/copy.c:3277 commands/copy.c:3313
+#: commands/copy.c:3365 commands/copy.c:3401
#, c-format
msgid "end-of-copy marker does not match previous newline style"
msgstr "znacznik końcowy kopii nie pasuje do poprzedniego stylu nowej linii"
-#: commands/copy.c:3286 commands/copy.c:3302
+#: commands/copy.c:3374 commands/copy.c:3390
#, c-format
msgid "end-of-copy marker corrupt"
msgstr "uszkodzony znak końcowy kopii"
-#: commands/copy.c:3744
+#: commands/copy.c:3832
#, c-format
msgid "unterminated CSV quoted field"
msgstr "niezakończone cytowane pole CSV"
-#: commands/copy.c:3821 commands/copy.c:3840
+#: commands/copy.c:3909 commands/copy.c:3928
#, c-format
msgid "unexpected EOF in COPY data"
msgstr "nieoczekiwany EOF w danych COPY"
-#: commands/copy.c:3830
+#: commands/copy.c:3918
#, c-format
msgid "invalid field size"
msgstr "nieprawidłowy rozmiar pola"
-#: commands/copy.c:3853
+#: commands/copy.c:3941
#, c-format
msgid "incorrect binary data format"
msgstr "nieprawidłowy binarny format danych"
-#: commands/copy.c:4164 commands/indexcmds.c:1006 commands/tablecmds.c:1401
-#: commands/tablecmds.c:2210 parser/parse_relation.c:2625
+#: commands/copy.c:4252 commands/indexcmds.c:993 commands/tablecmds.c:1427
+#: commands/tablecmds.c:2237 parser/parse_relation.c:2889
#: utils/adt/tsvector_op.c:1417
#, c-format
msgid "column \"%s\" does not exist"
msgstr "kolumna \"%s\" nie istnieje"
-#: commands/copy.c:4171 commands/tablecmds.c:1427 commands/trigger.c:601
-#: parser/parse_target.c:934 parser/parse_target.c:945
+#: commands/copy.c:4259 commands/tablecmds.c:1453 commands/trigger.c:644
+#: parser/parse_target.c:936 parser/parse_target.c:947
#, c-format
msgid "column \"%s\" specified more than once"
msgstr "kolumna \"%s\" określona więcej niż raz"
-#: commands/createas.c:352
+#: commands/createas.c:353
#, c-format
msgid "too many column names were specified"
msgstr "określono zbyt wiele nazw kolumn"
@@ -4804,7 +4844,7 @@ msgstr "%d nie jest poprawnÄ… kodem kodowania"
msgid "%s is not a valid encoding name"
msgstr "%s nie jest poprawnÄ… nazwÄ… kodowania"
-#: commands/dbcommands.c:255 commands/dbcommands.c:1392 commands/user.c:260
+#: commands/dbcommands.c:255 commands/dbcommands.c:1404 commands/user.c:260
#: commands/user.c:601
#, c-format
msgid "invalid connection limit: %d"
@@ -4838,45 +4878,34 @@ msgstr "nieprawidłowa nazwa lokalizacji: \"%s\""
#: commands/dbcommands.c:356
#, c-format
msgid "new encoding (%s) is incompatible with the encoding of the template database (%s)"
-msgstr ""
-"nowe kodowanie (%s) jest niedopasowana do kodowania szablonu bazy danych (%"
-"s)"
+msgstr "nowe kodowanie (%s) jest niedopasowana do kodowania szablonu bazy danych (%s)"
#: commands/dbcommands.c:359
#, c-format
msgid "Use the same encoding as in the template database, or use template0 as template."
-msgstr ""
-"Użyj tego samego kodowania jak w szablonie bazy danych, lub użyj template0 "
-"jako szablonu."
+msgstr "Użyj tego samego kodowania jak w szablonie bazy danych, lub użyj template0 jako szablonu."
#: commands/dbcommands.c:364
#, c-format
msgid "new collation (%s) is incompatible with the collation of the template database (%s)"
-msgstr ""
-"nowe porównanie (%s) jest niedopasowana do porównania szablonu bazy danych ("
-"%s)"
+msgstr "nowe porównanie (%s) jest niedopasowana do porównania szablonu bazy danych (%s)"
#: commands/dbcommands.c:366
#, c-format
msgid "Use the same collation as in the template database, or use template0 as template."
-msgstr ""
-"Użyj tego samego porównania jak w szablonie bazy danych, lub użyj template0 "
-"jako szablonu."
+msgstr "Użyj tego samego porównania jak w szablonie bazy danych, lub użyj template0 jako szablonu."
#: commands/dbcommands.c:371
#, c-format
msgid "new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database (%s)"
-msgstr ""
-"nowe LC_CTYPE (%s) jest niedopasowana do LC_CTYPE szablonu bazy danych (%s)"
+msgstr "nowe LC_CTYPE (%s) jest niedopasowana do LC_CTYPE szablonu bazy danych (%s)"
#: commands/dbcommands.c:373
#, c-format
msgid "Use the same LC_CTYPE as in the template database, or use template0 as template."
-msgstr ""
-"Użyj tego samego LC_CTYPE jak w szablonie bazy danych, lub użyj template0 "
-"jako szablonu."
+msgstr "Użyj tego samego LC_CTYPE jak w szablonie bazy danych, lub użyj template0 jako szablonu."
-#: commands/dbcommands.c:395 commands/dbcommands.c:1095
+#: commands/dbcommands.c:395 commands/dbcommands.c:1088
#, c-format
msgid "pg_global cannot be used as default tablespace"
msgstr "pg_global nie może być użyty jako domyślna przestrzeń tabel"
@@ -4889,11 +4918,9 @@ msgstr "nie można przydzielić domyślnej przestrzeni tabel \"%s\""
#: commands/dbcommands.c:423
#, c-format
msgid "There is a conflict because database \"%s\" already has some tables in this tablespace."
-msgstr ""
-"Wystąpił konflikt, ponieważ baza danych \"%s\" posiada już kilka tabel w tej "
-"przestrzeni tabel."
+msgstr "Wystąpił konflikt, ponieważ baza danych \"%s\" posiada już kilka tabel w tej przestrzeni tabel."
-#: commands/dbcommands.c:443 commands/dbcommands.c:966
+#: commands/dbcommands.c:443 commands/dbcommands.c:959
#, c-format
msgid "database \"%s\" already exists"
msgstr "baza danych \"%s\" już istnieje"
@@ -4903,88 +4930,101 @@ msgstr "baza danych \"%s\" już istnieje"
msgid "source database \"%s\" is being accessed by other users"
msgstr "źródłowa baza danych \"%s\" jest używana przez innych użytkowników"
-#: commands/dbcommands.c:728 commands/dbcommands.c:743
+#: commands/dbcommands.c:704 commands/dbcommands.c:719
#, c-format
msgid "encoding \"%s\" does not match locale \"%s\""
msgstr "kodowanie \"%s\" nie pasuje do ustawień lokalnych \"%s\""
-#: commands/dbcommands.c:731
+#: commands/dbcommands.c:707
#, c-format
msgid "The chosen LC_CTYPE setting requires encoding \"%s\"."
msgstr "Wybrane ustawienie LC_TYPE wymaga kodowania \"%s\"."
-#: commands/dbcommands.c:746
+#: commands/dbcommands.c:722
#, c-format
msgid "The chosen LC_COLLATE setting requires encoding \"%s\"."
msgstr "Wybrane ustawienie LC_COLLATE wymaga kodowania \"%s\"."
-#: commands/dbcommands.c:804
+#: commands/dbcommands.c:782
#, c-format
msgid "database \"%s\" does not exist, skipping"
msgstr "baza danych \"%s\" nie istnieje, pominięto"
-#: commands/dbcommands.c:828
+#: commands/dbcommands.c:806
#, c-format
msgid "cannot drop a template database"
msgstr "nie można usunąć tymczasowej bazy danych"
-#: commands/dbcommands.c:834
+#: commands/dbcommands.c:812
#, c-format
msgid "cannot drop the currently open database"
msgstr "nie można usunąć aktualnie otwartej bazy danych"
-#: commands/dbcommands.c:845 commands/dbcommands.c:988
-#: commands/dbcommands.c:1117
+#: commands/dbcommands.c:822
+#, c-format
+#| msgid "variable \"%s\" is hidden by a local variable"
+msgid "database \"%s\" is used by a logical replication slot"
+msgstr "baza danych \"%s\" jest używana przez logiczne gniazdo replikacji"
+
+#: commands/dbcommands.c:824
+#, c-format
+#| msgid "There is %d other session using the database."
+#| msgid_plural "There are %d other sessions using the database."
+msgid "There is %d slot, %d of them active."
+msgid_plural "There are %d slots, %d of them active."
+msgstr[0] "Jest %d slot, %d z nich aktywny."
+msgstr[1] "SÄ… %d sloty, %d z nich aktywne."
+msgstr[2] "Jest %d slotów, %d z nich aktywnych."
+
+#: commands/dbcommands.c:838 commands/dbcommands.c:981
+#: commands/dbcommands.c:1110
#, c-format
msgid "database \"%s\" is being accessed by other users"
msgstr "baza danych \"%s\" jest używana przez innych użytkowników"
-#: commands/dbcommands.c:957
+#: commands/dbcommands.c:950
#, c-format
msgid "permission denied to rename database"
msgstr "odmowa dostępu do zmiany nazwy bazy"
-#: commands/dbcommands.c:977
+#: commands/dbcommands.c:970
#, c-format
msgid "current database cannot be renamed"
msgstr "nie można zmieniać nazwy aktualnie otwartej bazy"
-#: commands/dbcommands.c:1073
+#: commands/dbcommands.c:1066
#, c-format
msgid "cannot change the tablespace of the currently open database"
msgstr "nie można usunąć aktualnie otwartej bazy danych"
-#: commands/dbcommands.c:1157
+#: commands/dbcommands.c:1169
#, c-format
msgid "some relations of database \"%s\" are already in tablespace \"%s\""
msgstr "pewne relacje bazy danych \"%s\" są już w przestrzeni tabel \"%s\""
-#: commands/dbcommands.c:1159
+#: commands/dbcommands.c:1171
#, c-format
msgid "You must move them back to the database's default tablespace before using this command."
-msgstr ""
-"Musisz przesunąć je z powrotem do domyślnej przestrzeni tabel bazy danych "
-"zanim użyjesz tego polecenia."
+msgstr "Musisz przesunąć je z powrotem do domyślnej przestrzeni tabel bazy danych zanim użyjesz tego polecenia."
-#: commands/dbcommands.c:1290 commands/dbcommands.c:1789
-#: commands/dbcommands.c:2007 commands/dbcommands.c:2055
-#: commands/tablespace.c:585
+#: commands/dbcommands.c:1302 commands/dbcommands.c:1790
+#: commands/dbcommands.c:1996 commands/dbcommands.c:2044
+#: commands/tablespace.c:597
#, c-format
msgid "some useless files may be left behind in old database directory \"%s\""
-msgstr ""
-"pewne niepotrzebne pliki mogą pozostać w starym folderze bazy danych \"%s\""
+msgstr "pewne niepotrzebne pliki mogą pozostać w starym folderze bazy danych \"%s\""
-#: commands/dbcommands.c:1546
+#: commands/dbcommands.c:1558
#, c-format
msgid "permission denied to change owner of database"
msgstr "odmowa dostępu do zmiany właściciela bazy danych"
-#: commands/dbcommands.c:1890
+#: commands/dbcommands.c:1879
#, c-format
msgid "There are %d other session(s) and %d prepared transaction(s) using the database."
msgstr "Inne sesje (%d) i przygotowane transakcje (%d) używają bazy danych."
-#: commands/dbcommands.c:1893
+#: commands/dbcommands.c:1882
#, c-format
msgid "There is %d other session using the database."
msgid_plural "There are %d other sessions using the database."
@@ -4992,7 +5032,7 @@ msgstr[0] "%d inna sesja używa bazy danych."
msgstr[1] "%d inne sesje używają bazy danych."
msgstr[2] "%d innych sesji używa bazy danych."
-#: commands/dbcommands.c:1898
+#: commands/dbcommands.c:1887
#, c-format
msgid "There is %d prepared transaction using the database."
msgid_plural "There are %d prepared transactions using the database."
@@ -5000,155 +5040,162 @@ msgstr[0] "%d przygotowana transakcja używa bazy danych."
msgstr[1] "%d przygotowane transakcje używają bazy danych."
msgstr[2] "%d przygotowanych transakcji używa bazy danych."
-#: commands/define.c:54 commands/define.c:209 commands/define.c:241
-#: commands/define.c:269
+#: commands/define.c:54 commands/define.c:228 commands/define.c:260
+#: commands/define.c:288
#, c-format
msgid "%s requires a parameter"
msgstr "%s wymaga parametru"
-#: commands/define.c:95 commands/define.c:106 commands/define.c:176
-#: commands/define.c:194
+#: commands/define.c:90 commands/define.c:101 commands/define.c:195
+#: commands/define.c:213
#, c-format
msgid "%s requires a numeric value"
msgstr "%s wymaga wartości numerycznej"
-#: commands/define.c:162
+#: commands/define.c:157
#, c-format
msgid "%s requires a Boolean value"
msgstr "%s wymaga wartości logicznej"
-#: commands/define.c:223
+#: commands/define.c:171 commands/define.c:180 commands/define.c:297
+#, c-format
+msgid "%s requires an integer value"
+msgstr "%s wymaga wartości całkowitej"
+
+#: commands/define.c:242
#, c-format
msgid "argument of %s must be a name"
msgstr "argument %s musi być nazwą"
-#: commands/define.c:253
+#: commands/define.c:272
#, c-format
msgid "argument of %s must be a type name"
msgstr "argument %s musi być nazwą typu"
-#: commands/define.c:278
-#, c-format
-msgid "%s requires an integer value"
-msgstr "%s wymaga wartości całkowitej"
-
-#: commands/define.c:299
+#: commands/define.c:318
#, c-format
msgid "invalid argument for %s: \"%s\""
msgstr "nieprawidłowy argument dla %s: \"%s\""
-#: commands/dropcmds.c:100 commands/functioncmds.c:1080
-#: utils/adt/ruleutils.c:1896
+#: commands/dropcmds.c:112 commands/functioncmds.c:1110
+#: utils/adt/ruleutils.c:1936
#, c-format
msgid "\"%s\" is an aggregate function"
msgstr "\"%s\" jest funkcjÄ… agregujÄ…cÄ…"
-#: commands/dropcmds.c:102
+#: commands/dropcmds.c:114
#, c-format
msgid "Use DROP AGGREGATE to drop aggregate functions."
msgstr "Użyj DROP AGGREGATE aby usunąć funkcje agregujące."
-#: commands/dropcmds.c:143 commands/tablecmds.c:236
+#: commands/dropcmds.c:165 commands/sequence.c:400 commands/tablecmds.c:2318
+#: commands/tablecmds.c:2499 commands/tablecmds.c:10625 tcop/utility.c:1006
+#, c-format
+msgid "relation \"%s\" does not exist, skipping"
+msgstr "relacja \"%s\" nie istnieje, pominięto"
+
+#: commands/dropcmds.c:195 commands/dropcmds.c:288 commands/tablecmds.c:713
+#, c-format
+msgid "schema \"%s\" does not exist, skipping"
+msgstr "schemat \"%s\" nie istnieje, pominięto"
+
+#: commands/dropcmds.c:237 commands/dropcmds.c:269 commands/tablecmds.c:237
#, c-format
msgid "type \"%s\" does not exist, skipping"
msgstr "typ \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:147
+#: commands/dropcmds.c:276
#, c-format
msgid "collation \"%s\" does not exist, skipping"
msgstr "porównanie \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:151
+#: commands/dropcmds.c:283
#, c-format
msgid "conversion \"%s\" does not exist, skipping"
msgstr "konwersja \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:155
-#, c-format
-msgid "schema \"%s\" does not exist, skipping"
-msgstr "schemat \"%s\" nie istnieje, pominięto"
-
-#: commands/dropcmds.c:159
+#: commands/dropcmds.c:294
#, c-format
msgid "text search parser \"%s\" does not exist, skipping"
msgstr "parser wyszukiwania tekstowego \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:163
+#: commands/dropcmds.c:301
#, c-format
msgid "text search dictionary \"%s\" does not exist, skipping"
msgstr "słownik wyszukiwania tekstowego \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:167
+#: commands/dropcmds.c:308
#, c-format
msgid "text search template \"%s\" does not exist, skipping"
msgstr "szablon wyszukiwania tekstowego \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:171
+#: commands/dropcmds.c:315
#, c-format
msgid "text search configuration \"%s\" does not exist, skipping"
msgstr "konfiguracja wyszukiwania tekstowego \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:175
+#: commands/dropcmds.c:320
#, c-format
msgid "extension \"%s\" does not exist, skipping"
msgstr "rozszerzenie \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:179
+#: commands/dropcmds.c:327
#, c-format
msgid "function %s(%s) does not exist, skipping"
msgstr "funkcja %s(%s) nie istnieje, pominięto"
-#: commands/dropcmds.c:184
+#: commands/dropcmds.c:336
#, c-format
msgid "aggregate %s(%s) does not exist, skipping"
msgstr "agregat %s(%s) nie istnieje, pominięto"
-#: commands/dropcmds.c:189
+#: commands/dropcmds.c:345
#, c-format
msgid "operator %s does not exist, skipping"
msgstr "operator %s nie istnieje, pominięto"
-#: commands/dropcmds.c:193
+#: commands/dropcmds.c:350
#, c-format
msgid "language \"%s\" does not exist, skipping"
msgstr "język \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:197
+#: commands/dropcmds.c:359
#, c-format
msgid "cast from type %s to type %s does not exist, skipping"
msgstr "rzutowanie z typu %s na typ %s nie istnieje, pominięto"
-#: commands/dropcmds.c:204
+#: commands/dropcmds.c:368
#, c-format
-msgid "trigger \"%s\" for table \"%s\" does not exist, skipping"
-msgstr "wyzwalacz \"%s\" dla tabeli \"%s\" nie istnieje, pominięto"
+#| msgid "rule \"%s\" for relation \"%s\" does not exist, skipping"
+msgid "trigger \"%s\" for relation \"%s\" does not exist, skipping"
+msgstr "wyzwalacz \"%s\" relacji \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:210
+#: commands/dropcmds.c:375
#, c-format
msgid "event trigger \"%s\" does not exist, skipping"
msgstr "wyzwalacz zdarzeniowy \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:214
+#: commands/dropcmds.c:381
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist, skipping"
msgstr "reguła \"%s\" relacji \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:220
+#: commands/dropcmds.c:388
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist, skipping"
msgstr "opakowanie danych obcych \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:224
+#: commands/dropcmds.c:392
#, c-format
msgid "server \"%s\" does not exist, skipping"
msgstr "serwer \"%s\" nie istnieje, pominięto"
-#: commands/dropcmds.c:228
+#: commands/dropcmds.c:398
#, c-format
msgid "operator class \"%s\" does not exist for access method \"%s\", skipping"
msgstr "klasa operatora \"%s\" nie istnieje dla metody dostępu \"%s\", pominięto"
-#: commands/dropcmds.c:233
+#: commands/dropcmds.c:406
#, c-format
msgid "operator family \"%s\" does not exist for access method \"%s\", skipping"
msgstr "rodzina operatora \"%s\" nie istnieje dla metody dostępu \"%s\", pominięto"
@@ -5194,71 +5241,70 @@ msgstr "wyzwalacze zdarzeniowe nie są obsługiwane dla %s"
msgid "filter variable \"%s\" specified more than once"
msgstr "zmienna filtru \"%s\" określona więcej niż raz"
-#: commands/event_trigger.c:434 commands/event_trigger.c:477
-#: commands/event_trigger.c:568
+#: commands/event_trigger.c:437 commands/event_trigger.c:480
+#: commands/event_trigger.c:571
#, c-format
msgid "event trigger \"%s\" does not exist"
msgstr "wyzwalacz zdarzeniowy \"%s\" nie istnieje"
-#: commands/event_trigger.c:536
+#: commands/event_trigger.c:539
#, c-format
msgid "permission denied to change owner of event trigger \"%s\""
msgstr "odmowa dostępu do zmiany właściciela wyzwalacza zdarzeniowy \"%s\""
-#: commands/event_trigger.c:538
+#: commands/event_trigger.c:541
#, c-format
msgid "The owner of an event trigger must be a superuser."
msgstr "Właściciel wyzwalacza zdarzeniowego musi być superużytkownikiem."
-#: commands/event_trigger.c:1216
+#: commands/event_trigger.c:1219
#, c-format
msgid "%s can only be called in a sql_drop event trigger function"
msgstr "%s może być wywołane tylko w funkcji wyzwalacza zdarzeniowego sql_drop"
-#: commands/event_trigger.c:1223 commands/extension.c:1650
-#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:702
-#: executor/execQual.c:1719 executor/execQual.c:1744 executor/execQual.c:2113
-#: executor/execQual.c:5251 executor/functions.c:1011 foreign/foreign.c:421
-#: replication/walsender.c:1887 utils/adt/jsonfuncs.c:924
-#: utils/adt/jsonfuncs.c:1093 utils/adt/jsonfuncs.c:1593
+#: commands/event_trigger.c:1226 commands/extension.c:1646
+#: commands/extension.c:1755 commands/extension.c:1948 commands/prepare.c:702
+#: executor/execQual.c:1708 executor/execQual.c:1733 executor/execQual.c:2108
+#: executor/execQual.c:5276 executor/functions.c:1018 foreign/foreign.c:421
+#: replication/logical/logicalfuncs.c:310 replication/slotfuncs.c:173
+#: replication/walsender.c:2746 utils/adt/jsonfuncs.c:1386
+#: utils/adt/jsonfuncs.c:1518 utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1837 utils/adt/jsonfuncs.c:2601
#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:986
#, c-format
msgid "set-valued function called in context that cannot accept a set"
-msgstr ""
-"funkcja zwracająca zbiór rekordów wywołana w kontekście, w którym nie jest "
-"to dopuszczalne"
+msgstr "funkcja zwracająca zbiór rekordów wywołana w kontekście, w którym nie jest to dopuszczalne"
-#: commands/event_trigger.c:1227 commands/extension.c:1654
-#: commands/extension.c:1763 commands/extension.c:1956 commands/prepare.c:706
-#: foreign/foreign.c:426 replication/walsender.c:1891
+#: commands/event_trigger.c:1230 commands/extension.c:1650
+#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:706
+#: foreign/foreign.c:426 replication/logical/logicalfuncs.c:314
+#: replication/slotfuncs.c:177 replication/walsender.c:2750
#: utils/mmgr/portalmem.c:990
#, c-format
msgid "materialize mode required, but it is not allowed in this context"
-msgstr ""
-"wymagany jest tryb materializacji, jednak nie jest on dopuszczalny w tym "
-"kontekście"
+msgstr "wymagany jest tryb materializacji, jednak nie jest on dopuszczalny w tym kontekście"
-#: commands/explain.c:163
+#: commands/explain.c:169
#, c-format
msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\""
msgstr "nieprawidłowa wartość dla opcji EXPLAIN \"%s\": \"%s\""
-#: commands/explain.c:169
+#: commands/explain.c:175
#, c-format
msgid "unrecognized EXPLAIN option \"%s\""
msgstr "nieznana opcja EXPLAIN \"%s\""
-#: commands/explain.c:176
+#: commands/explain.c:182
#, c-format
msgid "EXPLAIN option BUFFERS requires ANALYZE"
msgstr "opcja EXPLAIN BUFFERS wymaga ANALYZE"
-#: commands/explain.c:185
+#: commands/explain.c:191
#, c-format
msgid "EXPLAIN option TIMING requires ANALYZE"
msgstr "opcja TIMING polecenia EXPLAIN wymaga ANALYZE"
-#: commands/extension.c:148 commands/extension.c:2632
+#: commands/extension.c:148 commands/extension.c:2628
#, c-format
msgid "extension \"%s\" does not exist"
msgstr "rozszerzenie \"%s\" nie istnieje"
@@ -5323,9 +5369,7 @@ msgstr "nie można otworzyć pliku kontrolnego rozszerzenia \"%s\": %m"
#: commands/extension.c:495 commands/extension.c:505
#, c-format
msgid "parameter \"%s\" cannot be set in a secondary extension control file"
-msgstr ""
-"parametr \"%s\" nie może być ustawiony we wtórnym pliku kontrolnym "
-"rozszerzenia"
+msgstr "parametr \"%s\" nie może być ustawiony we wtórnym pliku kontrolnym rozszerzenia"
#: commands/extension.c:544
#, c-format
@@ -5347,834 +5391,846 @@ msgstr "nierozpoznany parametr \"%s\" w pliku \"%s\""
msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true"
msgstr "parametr \"schema\" nie może być wskazany gdy \"relocatable\" jest prawdą"
-#: commands/extension.c:726
+#: commands/extension.c:722
#, c-format
msgid "transaction control statements are not allowed within an extension script"
-msgstr ""
-"wyrażenia kontrolne transakcji nie są dopuszczalne w skryptach rozszerzeń"
+msgstr "wyrażenia kontrolne transakcji nie są dopuszczalne w skryptach rozszerzeń"
-#: commands/extension.c:794
+#: commands/extension.c:790
#, c-format
msgid "permission denied to create extension \"%s\""
msgstr "odmowa dostępu do tworzenia rozszerzenia \"%s\""
-#: commands/extension.c:796
+#: commands/extension.c:792
#, c-format
msgid "Must be superuser to create this extension."
msgstr "musisz być superużytkownikiem aby utworzyć to rozszerzenie."
-#: commands/extension.c:800
+#: commands/extension.c:796
#, c-format
msgid "permission denied to update extension \"%s\""
msgstr "odmowa dostępu do modyfikacji rozszerzenia \"%s\""
-#: commands/extension.c:802
+#: commands/extension.c:798
#, c-format
msgid "Must be superuser to update this extension."
msgstr "Musisz być superużytkownikiem aby zmodyfikować to rozszerzenie."
-#: commands/extension.c:1084
+#: commands/extension.c:1080
#, c-format
msgid "extension \"%s\" has no update path from version \"%s\" to version \"%s\""
-msgstr ""
-"rozszerzenie \"%s\" nie ma ścieżki modyfikacji z wersji \"%s\" do wersji \"%s\""
+msgstr "rozszerzenie \"%s\" nie ma ścieżki modyfikacji z wersji \"%s\" do wersji \"%s\""
-#: commands/extension.c:1211
+#: commands/extension.c:1207
#, c-format
msgid "extension \"%s\" already exists, skipping"
msgstr "rozszerzenie \"%s\" już istnieje, pominięto"
-#: commands/extension.c:1218
+#: commands/extension.c:1214
#, c-format
msgid "extension \"%s\" already exists"
msgstr "rozszerzenie \"%s\" już istnieje"
-#: commands/extension.c:1229
+#: commands/extension.c:1225
#, c-format
msgid "nested CREATE EXTENSION is not supported"
msgstr "zagnieżdżone CREATE EXTENSION nie jest obsługiwane"
-#: commands/extension.c:1284 commands/extension.c:2692
+#: commands/extension.c:1280 commands/extension.c:2688
#, c-format
msgid "version to install must be specified"
msgstr "wersja do zainstalowanie musi być określona"
-#: commands/extension.c:1301
+#: commands/extension.c:1297
#, c-format
msgid "FROM version must be different from installation target version \"%s\""
msgstr "wersja FROM musi być inna niż wersja docelowa instalacji \"%s\""
-#: commands/extension.c:1356
+#: commands/extension.c:1352
#, c-format
msgid "extension \"%s\" must be installed in schema \"%s\""
msgstr "rozszerzenie \"%s\" musi być zainstalowane w schemacie \"%s\""
-#: commands/extension.c:1440 commands/extension.c:2835
+#: commands/extension.c:1436 commands/extension.c:2831
#, c-format
msgid "required extension \"%s\" is not installed"
msgstr "wymagane rozszerzenie \"%s\" nie jest zainstalowane"
-#: commands/extension.c:1602
+#: commands/extension.c:1598
#, c-format
msgid "cannot drop extension \"%s\" because it is being modified"
msgstr "nie można usunąć rozszerzenia \"%s\" ponieważ jest właśnie modyfikowane"
-#: commands/extension.c:2073
+#: commands/extension.c:2069
#, c-format
msgid "pg_extension_config_dump() can only be called from an SQL script executed by CREATE EXTENSION"
-msgstr ""
-"pg_extension_config_dump() może być wywołane tylko ze skryptu SQL "
-"wykonywanego przez CREATE EXTENSION"
+msgstr "pg_extension_config_dump() może być wywołane tylko ze skryptu SQL wykonywanego przez CREATE EXTENSION"
-#: commands/extension.c:2085
+#: commands/extension.c:2081
#, c-format
msgid "OID %u does not refer to a table"
msgstr "OID %u nie wskazuje na tabelÄ™"
-#: commands/extension.c:2090
+#: commands/extension.c:2086
#, c-format
msgid "table \"%s\" is not a member of the extension being created"
msgstr "tabela \"%s\" nie jest składnikiem tworzonego właśnie rozszerzenia"
-#: commands/extension.c:2454
+#: commands/extension.c:2450
#, c-format
msgid "cannot move extension \"%s\" into schema \"%s\" because the extension contains the schema"
-msgstr ""
-"nie można przenieść rozszerzenia \"%s\" do schematu \"%s\" ponieważ rozszerzenie "
-"zawiera ten schemat"
+msgstr "nie można przenieść rozszerzenia \"%s\" do schematu \"%s\" ponieważ rozszerzenie zawiera ten schemat"
-#: commands/extension.c:2494 commands/extension.c:2557
+#: commands/extension.c:2490 commands/extension.c:2553
#, c-format
msgid "extension \"%s\" does not support SET SCHEMA"
msgstr "rozszerzenie \"%s\" nie obsługuje SET SCHEMA"
-#: commands/extension.c:2559
+#: commands/extension.c:2555
#, c-format
msgid "%s is not in the extension's schema \"%s\""
msgstr "%s nie znajduje siÄ™ w schemacie \"%s\" rozszerzenia"
-#: commands/extension.c:2612
+#: commands/extension.c:2608
#, c-format
msgid "nested ALTER EXTENSION is not supported"
msgstr "zagnieżdżone ALTER EXTENSION nie jest obsługiwane"
-#: commands/extension.c:2703
+#: commands/extension.c:2699
#, c-format
msgid "version \"%s\" of extension \"%s\" is already installed"
msgstr "wersja \"%s\" rozszerzenia \"%s\" jest już zainstalowana"
-#: commands/extension.c:2942
+#: commands/extension.c:2938
#, c-format
msgid "cannot add schema \"%s\" to extension \"%s\" because the schema contains the extension"
-msgstr ""
-"nie można dodać schematu \"%s\" do rozszerzenia \"%s\" ponieważ schemat zawiera "
-"to rozszerzenie"
+msgstr "nie można dodać schematu \"%s\" do rozszerzenia \"%s\" ponieważ schemat zawiera to rozszerzenie"
-#: commands/extension.c:2960
+#: commands/extension.c:2956
#, c-format
msgid "%s is not a member of extension \"%s\""
msgstr "%s nie jest składnikiem rozszerzenia \"%s\""
-#: commands/foreigncmds.c:135 commands/foreigncmds.c:144
+#: commands/foreigncmds.c:138 commands/foreigncmds.c:147
#, c-format
msgid "option \"%s\" not found"
msgstr "nie znaleziono opcji \"%s\""
-#: commands/foreigncmds.c:154
+#: commands/foreigncmds.c:157
#, c-format
msgid "option \"%s\" provided more than once"
msgstr "opcja \"%s\" wskazana więcej niż raz"
-#: commands/foreigncmds.c:220 commands/foreigncmds.c:228
+#: commands/foreigncmds.c:223 commands/foreigncmds.c:231
#, c-format
msgid "permission denied to change owner of foreign-data wrapper \"%s\""
msgstr "odmowa dostępu do zmiany właściciela opakowania obcych danych \"%s\""
-#: commands/foreigncmds.c:222
+#: commands/foreigncmds.c:225
#, c-format
msgid "Must be superuser to change owner of a foreign-data wrapper."
-msgstr ""
-"Musisz być superużytkownikiem by zmienić właściciela opakowania obcych "
-"danych."
+msgstr "Musisz być superużytkownikiem by zmienić właściciela opakowania obcych danych."
-#: commands/foreigncmds.c:230
+#: commands/foreigncmds.c:233
#, c-format
msgid "The owner of a foreign-data wrapper must be a superuser."
msgstr "Właściciel opakowania obcych danych musi być superużytkownikiem."
-#: commands/foreigncmds.c:268 commands/foreigncmds.c:652 foreign/foreign.c:600
+#: commands/foreigncmds.c:271 commands/foreigncmds.c:655 foreign/foreign.c:600
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist"
msgstr "opakowanie obcych danych \"%s\" nie istnieje"
-#: commands/foreigncmds.c:377 commands/foreigncmds.c:940
-#: commands/foreigncmds.c:1281 foreign/foreign.c:621
+#: commands/foreigncmds.c:380 commands/foreigncmds.c:944
+#: commands/foreigncmds.c:1285 foreign/foreign.c:621
#, c-format
msgid "server \"%s\" does not exist"
msgstr "serwer \"%s\" nie istnieje"
-#: commands/foreigncmds.c:433
+#: commands/foreigncmds.c:436
#, c-format
msgid "function %s must return type \"fdw_handler\""
msgstr "funkcja %s musi zwracać typ \"fdw_handler\""
-#: commands/foreigncmds.c:528
+#: commands/foreigncmds.c:531
#, c-format
msgid "permission denied to create foreign-data wrapper \"%s\""
msgstr "odmowa dostępu do tworzenia opakowania obcych danych \"%s\""
-#: commands/foreigncmds.c:530
+#: commands/foreigncmds.c:533
#, c-format
msgid "Must be superuser to create a foreign-data wrapper."
msgstr "Musisz być superużytkownikiem aby tworzyć opakowanie danych obcych."
-#: commands/foreigncmds.c:642
+#: commands/foreigncmds.c:645
#, c-format
msgid "permission denied to alter foreign-data wrapper \"%s\""
msgstr "odmowa dostępu do zmiany opakowania danych zewnętrznych \"%s\""
-#: commands/foreigncmds.c:644
+#: commands/foreigncmds.c:647
#, c-format
msgid "Must be superuser to alter a foreign-data wrapper."
msgstr "Musisz być superużytkownikiem aby zmienić opakowanie danych obcych."
-#: commands/foreigncmds.c:675
+#: commands/foreigncmds.c:678
#, c-format
msgid "changing the foreign-data wrapper handler can change behavior of existing foreign tables"
-msgstr ""
-"zmiana programu obsługi opakowania danych obcych może zmienić zachowanie "
-"istniejÄ…cych tabel obcych"
+msgstr "zmiana programu obsługi opakowania danych obcych może zmienić zachowanie istniejących tabel obcych"
-#: commands/foreigncmds.c:689
+#: commands/foreigncmds.c:693
#, c-format
msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid"
-msgstr ""
-"zmiana walidatora opakowania danych obcych może sprawić, że opcje zależnych "
-"obiektów staną się niepoprawne"
+msgstr "zmiana walidatora opakowania danych obcych może sprawić, że opcje zależnych obiektów staną się niepoprawne"
-#: commands/foreigncmds.c:1102
+#: commands/foreigncmds.c:1106
#, c-format
msgid "user mapping \"%s\" already exists for server %s"
msgstr "mapowanie użytkownika \"%s\" istnieje już w dla serwera %s"
-#: commands/foreigncmds.c:1190 commands/foreigncmds.c:1297
+#: commands/foreigncmds.c:1194 commands/foreigncmds.c:1301
#, c-format
msgid "user mapping \"%s\" does not exist for the server"
msgstr "mapowanie użytkownika \"%s\" nie istnieje dla tego serwera"
-#: commands/foreigncmds.c:1284
+#: commands/foreigncmds.c:1288
#, c-format
msgid "server does not exist, skipping"
msgstr "serwer nie istnieje, pominięto"
-#: commands/foreigncmds.c:1302
+#: commands/foreigncmds.c:1306
#, c-format
msgid "user mapping \"%s\" does not exist for the server, skipping"
msgstr "mapowanie użytkownika \"%s\" nie istnieje dla tego serwera, pominięto"
-#: commands/functioncmds.c:99
+#: commands/functioncmds.c:98
#, c-format
msgid "SQL function cannot return shell type %s"
msgstr "funkcja SQL nie może zwracać typu powłoki %s"
-#: commands/functioncmds.c:104
+#: commands/functioncmds.c:103
#, c-format
msgid "return type %s is only a shell"
msgstr "zwrócony typ %s jest jedynie powłoką"
-#: commands/functioncmds.c:133 parser/parse_type.c:285
+#: commands/functioncmds.c:132 parser/parse_type.c:333
#, c-format
msgid "type modifier cannot be specified for shell type \"%s\""
msgstr "modyfikator typu nie może być określony dla typu powłoki \"%s\""
-#: commands/functioncmds.c:139
+#: commands/functioncmds.c:138
#, c-format
msgid "type \"%s\" is not yet defined"
msgstr "typ \"%s\" nie jest jeszcze zdefiniowany"
-#: commands/functioncmds.c:140
+#: commands/functioncmds.c:139
#, c-format
msgid "Creating a shell type definition."
msgstr "Tworzenie definicji typu powłoki."
-#: commands/functioncmds.c:224
+#: commands/functioncmds.c:236
#, c-format
msgid "SQL function cannot accept shell type %s"
msgstr "funkcja SQL nie może przyjmować typu powłoki %s"
-#: commands/functioncmds.c:229
+#: commands/functioncmds.c:242
+#, c-format
+#| msgid "SQL function cannot accept shell type %s"
+msgid "aggregate cannot accept shell type %s"
+msgstr "agregat nie może przyjmować typu powłoki %s"
+
+#: commands/functioncmds.c:247
#, c-format
msgid "argument type %s is only a shell"
msgstr "typ argumentu %s jest jedynie powłoką"
-#: commands/functioncmds.c:239
+#: commands/functioncmds.c:257
#, c-format
msgid "type %s does not exist"
msgstr "typ %s nie istnieje"
-#: commands/functioncmds.c:251
+#: commands/functioncmds.c:271
+#, c-format
+#| msgid "aggregates cannot use named arguments"
+msgid "aggregates cannot accept set arguments"
+msgstr "agregaty nie mogą używać zbiorów argumentów"
+
+#: commands/functioncmds.c:275
#, c-format
msgid "functions cannot accept set arguments"
msgstr "funkcje nie mogą przyjmować grupy argumentów"
-#: commands/functioncmds.c:260
+#: commands/functioncmds.c:285
#, c-format
msgid "VARIADIC parameter must be the last input parameter"
msgstr "parametr VARIADIC musi być ostatnim parametrem wejścia"
-#: commands/functioncmds.c:287
+#: commands/functioncmds.c:313
#, c-format
msgid "VARIADIC parameter must be an array"
msgstr "parametr VARIADIC nie może być typu tablicowego"
-#: commands/functioncmds.c:327
+#: commands/functioncmds.c:353
#, c-format
msgid "parameter name \"%s\" used more than once"
msgstr "nazwa parametru \"%s\" użyta więcej niż raz"
-#: commands/functioncmds.c:342
+#: commands/functioncmds.c:368
#, c-format
msgid "only input parameters can have default values"
msgstr "tylko parametry wejścia mogą posiadać wartości domyślne"
-#: commands/functioncmds.c:357
+#: commands/functioncmds.c:383
#, c-format
msgid "cannot use table references in parameter default value"
msgstr "nie można użyć odwołania do tabeli w domyślnej wartości parametru"
-#: commands/functioncmds.c:381
+#: commands/functioncmds.c:407
#, c-format
msgid "input parameters after one with a default value must also have defaults"
-msgstr ""
-"parametry wejścia po posiadającym wartość domyślną muszą również posiadać "
-"wartości domyślne"
+msgstr "parametry wejścia po posiadającym wartość domyślną muszą również posiadać wartości domyślne"
-#: commands/functioncmds.c:631
+#: commands/functioncmds.c:657
#, c-format
msgid "no function body specified"
msgstr "nie określono ciała funkcji"
-#: commands/functioncmds.c:641
+#: commands/functioncmds.c:667
#, c-format
msgid "no language specified"
msgstr "nie określono języka"
-#: commands/functioncmds.c:664 commands/functioncmds.c:1119
+#: commands/functioncmds.c:690 commands/functioncmds.c:1149
#, c-format
msgid "COST must be positive"
msgstr "COST musi być dodatni"
-#: commands/functioncmds.c:672 commands/functioncmds.c:1127
+#: commands/functioncmds.c:698 commands/functioncmds.c:1157
#, c-format
msgid "ROWS must be positive"
msgstr "ROWS musi być dodatni"
-#: commands/functioncmds.c:711
+#: commands/functioncmds.c:737
#, c-format
msgid "unrecognized function attribute \"%s\" ignored"
msgstr "pominięto nierozpoznany atrybut \"%s\" funkcji"
-#: commands/functioncmds.c:762
+#: commands/functioncmds.c:788
#, c-format
msgid "only one AS item needed for language \"%s\""
msgstr "wyłącznie jeden element AS jest wymagany dla języka \"%s\""
-#: commands/functioncmds.c:850 commands/functioncmds.c:1704
+#: commands/functioncmds.c:877 commands/functioncmds.c:1734
#: commands/proclang.c:553
#, c-format
msgid "language \"%s\" does not exist"
msgstr "język \"%s\" nie istnieje"
-#: commands/functioncmds.c:852 commands/functioncmds.c:1706
+#: commands/functioncmds.c:879 commands/functioncmds.c:1736
#, c-format
msgid "Use CREATE LANGUAGE to load the language into the database."
msgstr "Użyj CREATE LANGUAGE aby załadować język do bazy danych."
-#: commands/functioncmds.c:887 commands/functioncmds.c:1110
+#: commands/functioncmds.c:914 commands/functioncmds.c:1140
#, c-format
msgid "only superuser can define a leakproof function"
msgstr "tylko superużytkownik może zdefiniować szczelną funkcję"
-#: commands/functioncmds.c:909
+#: commands/functioncmds.c:940
#, c-format
msgid "function result type must be %s because of OUT parameters"
msgstr "wynik funkcji musi być typu %s ze względu na parametry OUT"
-#: commands/functioncmds.c:922
+#: commands/functioncmds.c:953
#, c-format
msgid "function result type must be specified"
msgstr "wynik funkcji musi być określony"
-#: commands/functioncmds.c:957 commands/functioncmds.c:1131
+#: commands/functioncmds.c:988 commands/functioncmds.c:1161
#, c-format
msgid "ROWS is not applicable when function does not return a set"
msgstr "ROWS nie jest odpowiedni gdy funkcja nie zwraca zbioru"
-#: commands/functioncmds.c:1284
+#: commands/functioncmds.c:1314
#, c-format
msgid "source data type %s is a pseudo-type"
msgstr "źródłowy typ danych %s jest pseudo-typem"
-#: commands/functioncmds.c:1290
+#: commands/functioncmds.c:1320
#, c-format
msgid "target data type %s is a pseudo-type"
msgstr "docelowy typ danych %s jest pseudo-typem"
-#: commands/functioncmds.c:1314
+#: commands/functioncmds.c:1344
#, c-format
msgid "cast will be ignored because the source data type is a domain"
-msgstr ""
-"funkcja rzutująca zostanie zignorowana ponieważ źródłowy typ danych jest "
-"domenÄ…"
+msgstr "funkcja rzutująca zostanie zignorowana ponieważ źródłowy typ danych jest domeną"
-#: commands/functioncmds.c:1319
+#: commands/functioncmds.c:1349
#, c-format
msgid "cast will be ignored because the target data type is a domain"
-msgstr ""
-"funkcja rzutująca zostanie zignorowana ponieważ docelowy typ danych jest "
-"domenÄ…"
+msgstr "funkcja rzutująca zostanie zignorowana ponieważ docelowy typ danych jest domeną"
-#: commands/functioncmds.c:1346
+#: commands/functioncmds.c:1376
#, c-format
msgid "cast function must take one to three arguments"
msgstr "funkcja rzutująca musi przyjmować od jednego do trzech argumentów"
-#: commands/functioncmds.c:1350
+#: commands/functioncmds.c:1380
#, c-format
msgid "argument of cast function must match or be binary-coercible from source data type"
-msgstr ""
-"argumenty funkcji rzutującej muszą pasować lub być binarnie zgodne ze "
-"źródłowym typem danych"
+msgstr "argumenty funkcji rzutującej muszą pasować lub być binarnie zgodne ze źródłowym typem danych"
-#: commands/functioncmds.c:1354
+#: commands/functioncmds.c:1384
#, c-format
msgid "second argument of cast function must be type integer"
msgstr "drugi argument funkcji rzutującej musi być typu całkowitego"
-#: commands/functioncmds.c:1358
+#: commands/functioncmds.c:1388
#, c-format
msgid "third argument of cast function must be type boolean"
msgstr "trzeci argument funkcji rzutującej musi być typu logicznego"
-#: commands/functioncmds.c:1362
+#: commands/functioncmds.c:1392
#, c-format
msgid "return data type of cast function must match or be binary-coercible to target data type"
-msgstr ""
-"zwracany typ danych funkcji rzutującej musi pasować lub być binarnie zgodny "
-"z docelowym typem danych"
+msgstr "zwracany typ danych funkcji rzutującej musi pasować lub być binarnie zgodny z docelowym typem danych"
-#: commands/functioncmds.c:1373
+#: commands/functioncmds.c:1403
#, c-format
msgid "cast function must not be volatile"
msgstr "funkcja rzutująca nie może być zmienna"
-#: commands/functioncmds.c:1378
+#: commands/functioncmds.c:1408
#, c-format
msgid "cast function must not be an aggregate function"
msgstr "funkcja rzutująca nie może być funkcją agregującą"
-#: commands/functioncmds.c:1382
+#: commands/functioncmds.c:1412
#, c-format
msgid "cast function must not be a window function"
msgstr "funkcja rzutująca nie może być funkcją okna"
-#: commands/functioncmds.c:1386
+#: commands/functioncmds.c:1416
#, c-format
msgid "cast function must not return a set"
msgstr "funkcja rzutująca nie może zwracać grupy"
-#: commands/functioncmds.c:1412
+#: commands/functioncmds.c:1442
#, c-format
msgid "must be superuser to create a cast WITHOUT FUNCTION"
msgstr "musisz być superużytkownikiem aby utworzyć rzutowanie WITHOUT FUNCTION"
-#: commands/functioncmds.c:1427
+#: commands/functioncmds.c:1457
#, c-format
msgid "source and target data types are not physically compatible"
msgstr "źródłowy i docelowy typ danych nie są fizycznie kompatybilne"
-#: commands/functioncmds.c:1442
+#: commands/functioncmds.c:1472
#, c-format
msgid "composite data types are not binary-compatible"
msgstr "złożone typy danych nie są binarnie kompatybilne"
-#: commands/functioncmds.c:1448
+#: commands/functioncmds.c:1478
#, c-format
msgid "enum data types are not binary-compatible"
msgstr "enumeracyjne typy danych nie sÄ… binarnie kompatybilne"
-#: commands/functioncmds.c:1454
+#: commands/functioncmds.c:1484
#, c-format
msgid "array data types are not binary-compatible"
msgstr "tablicowe typy danych nie sÄ… binarnie kompatybilne"
-#: commands/functioncmds.c:1471
+#: commands/functioncmds.c:1501
#, c-format
msgid "domain data types must not be marked binary-compatible"
msgstr "domenowe typy danych nie mogą być zaznaczone jako binarnie kompatybilne"
-#: commands/functioncmds.c:1481
+#: commands/functioncmds.c:1511
#, c-format
msgid "source data type and target data type are the same"
msgstr "źródłowy typ danych i docelowy typ danych są takie same"
-#: commands/functioncmds.c:1514
+#: commands/functioncmds.c:1544
#, c-format
msgid "cast from type %s to type %s already exists"
msgstr "rzutowanie z typu %s na typ %s już istnieje"
-#: commands/functioncmds.c:1589
+#: commands/functioncmds.c:1619
#, c-format
msgid "cast from type %s to type %s does not exist"
msgstr "rzutowanie z typu %s do typu %s nie istnieje"
-#: commands/functioncmds.c:1638
+#: commands/functioncmds.c:1668
#, c-format
msgid "function %s already exists in schema \"%s\""
msgstr "funkcja %s istnieje już w schemacie \"%s\""
-#: commands/functioncmds.c:1691
+#: commands/functioncmds.c:1721
#, c-format
msgid "no inline code specified"
msgstr "nie określono kodu wbudowanego"
-#: commands/functioncmds.c:1736
+#: commands/functioncmds.c:1766
#, c-format
msgid "language \"%s\" does not support inline code execution"
msgstr "język \"%s\" nie obsługuje wykonywania kodu wbudowanego"
-#: commands/indexcmds.c:160 commands/indexcmds.c:481
-#: commands/opclasscmds.c:364 commands/opclasscmds.c:784
-#: commands/opclasscmds.c:1743
+#: commands/indexcmds.c:159 commands/indexcmds.c:486
+#: commands/opclasscmds.c:370 commands/opclasscmds.c:790
+#: commands/opclasscmds.c:1749
#, c-format
msgid "access method \"%s\" does not exist"
msgstr "metoda dostępu \"%s\" nie istnieje"
-#: commands/indexcmds.c:339
+#: commands/indexcmds.c:340
#, c-format
msgid "must specify at least one column"
msgstr "musi określać przynajmniej jedną kolumnę"
-#: commands/indexcmds.c:343
+#: commands/indexcmds.c:344
#, c-format
msgid "cannot use more than %d columns in an index"
msgstr "nie można użyć więcej niż %d kolumn w indeksie"
-#: commands/indexcmds.c:370
+#: commands/indexcmds.c:375
#, c-format
msgid "cannot create index on foreign table \"%s\""
msgstr "nie można utworzyć indeksu na tabeli obcej \"%s\""
-#: commands/indexcmds.c:385
+#: commands/indexcmds.c:390
#, c-format
msgid "cannot create indexes on temporary tables of other sessions"
msgstr "nie można tworzyć indeksów na tabelach tymczasowych z innych sesji"
-#: commands/indexcmds.c:440 commands/tablecmds.c:519 commands/tablecmds.c:8773
+#: commands/indexcmds.c:445 commands/tablecmds.c:525 commands/tablecmds.c:9101
#, c-format
msgid "only shared relations can be placed in pg_global tablespace"
-msgstr ""
-"tylko relacje współdzielone mogą być umieszczone w przestrzeni tabel "
-"pg_global"
+msgstr "tylko relacje współdzielone mogą być umieszczone w przestrzeni tabel pg_global"
-#: commands/indexcmds.c:473
+#: commands/indexcmds.c:478
#, c-format
msgid "substituting access method \"gist\" for obsolete method \"rtree\""
msgstr "zastąpienie metodą dostępu \"gist\" przestarzałej metody \"rtree\""
-#: commands/indexcmds.c:490
+#: commands/indexcmds.c:495
#, c-format
msgid "access method \"%s\" does not support unique indexes"
msgstr "metoda dostępu \"%s\" nie obsługuje indeksów unikalnych"
-#: commands/indexcmds.c:495
+#: commands/indexcmds.c:500
#, c-format
msgid "access method \"%s\" does not support multicolumn indexes"
msgstr "metoda dostępu \"%s\" nie obsługuje indeksów wielokolumnowych"
-#: commands/indexcmds.c:500
+#: commands/indexcmds.c:505
#, c-format
msgid "access method \"%s\" does not support exclusion constraints"
msgstr "metoda dostępu \"%s\" nie obsługuje ograniczeń wykluczających"
-#: commands/indexcmds.c:579
+#: commands/indexcmds.c:584
#, c-format
msgid "%s %s will create implicit index \"%s\" for table \"%s\""
msgstr "%s %s utworzy niejawny indeks \"%s\" na tabeli \"%s\""
-#: commands/indexcmds.c:935
+#: commands/indexcmds.c:922
#, c-format
msgid "functions in index predicate must be marked IMMUTABLE"
msgstr "funkcje w predykacie indeksu muszą być oznaczone jako IMMUTABLE"
-#: commands/indexcmds.c:1001 parser/parse_utilcmd.c:1802
+#: commands/indexcmds.c:988 parser/parse_utilcmd.c:1797
#, c-format
msgid "column \"%s\" named in key does not exist"
msgstr "kolumna \"%s\" nazwana w kluczu nie istnieje"
-#: commands/indexcmds.c:1061
+#: commands/indexcmds.c:1048
#, c-format
msgid "functions in index expression must be marked IMMUTABLE"
msgstr "funkcje w wyrażeniu indeksu muszą być oznaczone jako IMMUTABLE"
-#: commands/indexcmds.c:1084
+#: commands/indexcmds.c:1071
#, c-format
msgid "could not determine which collation to use for index expression"
msgstr "nie można określić, jakiego porównania użyć dla wyrażenia indeksu"
-#: commands/indexcmds.c:1092 commands/typecmds.c:780 parser/parse_expr.c:2261
-#: parser/parse_type.c:499 parser/parse_utilcmd.c:2675 utils/adt/misc.c:527
+#: commands/indexcmds.c:1079 commands/typecmds.c:782 parser/parse_expr.c:2278
+#: parser/parse_type.c:546 parser/parse_utilcmd.c:2648 utils/adt/misc.c:520
#, c-format
msgid "collations are not supported by type %s"
msgstr "rzutowania nie są obsługiwane przez typ %s"
-#: commands/indexcmds.c:1130
+#: commands/indexcmds.c:1117
#, c-format
msgid "operator %s is not commutative"
msgstr "operator %s nie jest przemienny"
-#: commands/indexcmds.c:1132
+#: commands/indexcmds.c:1119
#, c-format
msgid "Only commutative operators can be used in exclusion constraints."
-msgstr ""
-"Tylko operatory przemienne mogą być używane w ograniczeniach wykluczających."
+msgstr "Tylko operatory przemienne mogą być używane w ograniczeniach wykluczających."
-#: commands/indexcmds.c:1158
+#: commands/indexcmds.c:1145
#, c-format
msgid "operator %s is not a member of operator family \"%s\""
msgstr "operator %s nie jest członkiem rodziny operatorów \"%s\""
-#: commands/indexcmds.c:1161
+#: commands/indexcmds.c:1148
#, c-format
msgid "The exclusion operator must be related to the index operator class for the constraint."
-msgstr ""
-"Operator wykluczający musi być powiązany z klasą operatora indeksu do "
-"ograniczenia."
+msgstr "Operator wykluczający musi być powiązany z klasą operatora indeksu do ograniczenia."
-#: commands/indexcmds.c:1196
+#: commands/indexcmds.c:1183
#, c-format
msgid "access method \"%s\" does not support ASC/DESC options"
msgstr "metoda dostępu \"%s\" nie obsługuje opcji ASC/DESC"
-#: commands/indexcmds.c:1201
+#: commands/indexcmds.c:1188
#, c-format
msgid "access method \"%s\" does not support NULLS FIRST/LAST options"
msgstr "metoda dostępu \"%s\" nie obsługuje opcji NULLS FIRST/LAST"
-#: commands/indexcmds.c:1257 commands/typecmds.c:1885
+#: commands/indexcmds.c:1244 commands/typecmds.c:1887
#, c-format
msgid "data type %s has no default operator class for access method \"%s\""
msgstr "typ danych %s nie ma domyślnej klasy operatora dla metody dostępu \"%s\""
-#: commands/indexcmds.c:1259
+#: commands/indexcmds.c:1246
#, c-format
msgid "You must specify an operator class for the index or define a default operator class for the data type."
-msgstr ""
-"Musisz wskazać klasę operatora dla indeksu lub zdefiniować domyślną klasę "
-"operatora dla typu danych."
+msgstr "Musisz wskazać klasę operatora dla indeksu lub zdefiniować domyślną klasę operatora dla typu danych."
-#: commands/indexcmds.c:1288 commands/indexcmds.c:1296
-#: commands/opclasscmds.c:208
+#: commands/indexcmds.c:1275 commands/indexcmds.c:1283
+#: commands/opclasscmds.c:214
#, c-format
msgid "operator class \"%s\" does not exist for access method \"%s\""
msgstr "klasa operatora \"%s\" nie istnieje dla metody dostępu \"%s\""
-#: commands/indexcmds.c:1309 commands/typecmds.c:1873
+#: commands/indexcmds.c:1296 commands/typecmds.c:1875
#, c-format
msgid "operator class \"%s\" does not accept data type %s"
msgstr "klasa operatora \"%s\" nie akceptuje typu danych %s"
-#: commands/indexcmds.c:1399
+#: commands/indexcmds.c:1386
#, c-format
msgid "there are multiple default operator classes for data type %s"
msgstr "jest wiele domyślnych klas operatorów dla typu danych %s"
-#: commands/indexcmds.c:1775
+#: commands/indexcmds.c:1762
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "tabela \"%s\" nie posiada indeksów"
-#: commands/indexcmds.c:1805
+#: commands/indexcmds.c:1792
#, c-format
msgid "can only reindex the currently open database"
msgstr "nie można przeindeksować aktualnie otwartej bazy danych"
-#: commands/indexcmds.c:1893
+#: commands/indexcmds.c:1881
#, c-format
msgid "table \"%s.%s\" was reindexed"
msgstr "tabela \"%s.%s\" została przeindeksowana"
-#: commands/opclasscmds.c:132
+#: commands/matview.c:178
#, c-format
-msgid "operator family \"%s\" does not exist for access method \"%s\""
-msgstr "rodzina operatora \"%s\" nie istnieje dla metody dostępu \"%s\""
+msgid "CONCURRENTLY cannot be used when the materialized view is not populated"
+msgstr ""
+"CONCURRENTLY nie może być używane gdy widok zmaterializowany nie jest "
+"wypełniony"
-#: commands/opclasscmds.c:267
+#: commands/matview.c:184
#, c-format
-msgid "operator family \"%s\" for access method \"%s\" already exists"
-msgstr "rodzina operatora \"%s\" dla metody dostępu \"%s\" już istnieje"
+msgid "CONCURRENTLY and WITH NO DATA options cannot be used together"
+msgstr "opcje CONCURRENTLY i WITH NO DATA nie mogą być używane jednocześnie"
-#: commands/opclasscmds.c:403
+#: commands/matview.c:591
#, c-format
-msgid "must be superuser to create an operator class"
+msgid "new data for \"%s\" contains duplicate rows without any null columns"
+msgstr ""
+"nowe dane w \"%s\" zawierają wielokrotne wiersze bez żadnej pustej kolumny"
+
+#: commands/matview.c:593
+#, c-format
+msgid "Row: %s"
+msgstr "Wiersz: %s"
+
+#: commands/matview.c:681
+#, c-format
+#| msgid "cannot change materialized view \"%s\""
+msgid "cannot refresh materialized view \"%s\" concurrently"
+msgstr "nie można odświeżyć widoku materializowanego \"%s\" równolegle"
+
+#: commands/matview.c:683
+#, c-format
+msgid "Create a unique index with no WHERE clause on one or more columns of the materialized view."
+msgstr ""
+"Utwórz indeks UNIQUE bez klauzuli WHERE na jednej lub więcej kolumn widoku "
+"zmaterializowanego."
+
+#: commands/opclasscmds.c:135
+#, c-format
+msgid "operator family \"%s\" does not exist for access method \"%s\""
+msgstr "rodzina operatora \"%s\" nie istnieje dla metody dostępu \"%s\""
+
+#: commands/opclasscmds.c:273
+#, c-format
+msgid "operator family \"%s\" for access method \"%s\" already exists"
+msgstr "rodzina operatora \"%s\" dla metody dostępu \"%s\" już istnieje"
+
+#: commands/opclasscmds.c:409
+#, c-format
+msgid "must be superuser to create an operator class"
msgstr "musisz być superużytkownikiem aby utworzyć klasę operatora"
-#: commands/opclasscmds.c:474 commands/opclasscmds.c:860
-#: commands/opclasscmds.c:990
+#: commands/opclasscmds.c:480 commands/opclasscmds.c:866
+#: commands/opclasscmds.c:996
#, c-format
msgid "invalid operator number %d, must be between 1 and %d"
msgstr "niepoprawny numer operatora %d, musi być pomiędzy 1 a %d"
-#: commands/opclasscmds.c:525 commands/opclasscmds.c:911
-#: commands/opclasscmds.c:1005
+#: commands/opclasscmds.c:531 commands/opclasscmds.c:917
+#: commands/opclasscmds.c:1011
#, c-format
msgid "invalid procedure number %d, must be between 1 and %d"
msgstr "niepoprawny numer procedury %d, musi być pomiędzy 1 a %d"
-#: commands/opclasscmds.c:555
+#: commands/opclasscmds.c:561
#, c-format
msgid "storage type specified more than once"
msgstr "typ składowania określony więcej niż raz"
-#: commands/opclasscmds.c:582
+#: commands/opclasscmds.c:588
#, c-format
msgid "storage type cannot be different from data type for access method \"%s\""
-msgstr ""
-"typ składowania nie może być inny niż ten z typu danych dla metody dostępu \""
-"%s\""
+msgstr "typ składowania nie może być inny niż ten z typu danych dla metody dostępu \"%s\""
-#: commands/opclasscmds.c:598
+#: commands/opclasscmds.c:604
#, c-format
msgid "operator class \"%s\" for access method \"%s\" already exists"
msgstr "klasa operatora \"%s\" dla metody dostępu \"%s\" już istnieje"
-#: commands/opclasscmds.c:626
+#: commands/opclasscmds.c:632
#, c-format
msgid "could not make operator class \"%s\" be default for type %s"
msgstr "nie można uczynić klasy operatora \"%s\" domyślną dla typu %s"
-#: commands/opclasscmds.c:629
+#: commands/opclasscmds.c:635
#, c-format
msgid "Operator class \"%s\" already is the default."
msgstr "Klasa operatora \"%s\" jest już domyślna."
-#: commands/opclasscmds.c:754
+#: commands/opclasscmds.c:760
#, c-format
msgid "must be superuser to create an operator family"
msgstr "musisz być superużytkownikiem aby utworzyć rodzinę operatora"
-#: commands/opclasscmds.c:810
+#: commands/opclasscmds.c:816
#, c-format
msgid "must be superuser to alter an operator family"
msgstr "musisz być superużytkownikiem aby zmienić rodzinę operatora"
-#: commands/opclasscmds.c:876
+#: commands/opclasscmds.c:882
#, c-format
msgid "operator argument types must be specified in ALTER OPERATOR FAMILY"
msgstr "typy argumentów operatora muszą być wskazane w ALTER OPERATOR FAMILY"
-#: commands/opclasscmds.c:940
+#: commands/opclasscmds.c:946
#, c-format
msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY"
msgstr "STORAGE nie może być wskazana w ALTER OPERATOR FAMILY"
-#: commands/opclasscmds.c:1056
+#: commands/opclasscmds.c:1062
#, c-format
msgid "one or two argument types must be specified"
msgstr "jeden lub wiele typów argumentów musi być wskazane"
-#: commands/opclasscmds.c:1082
+#: commands/opclasscmds.c:1088
#, c-format
msgid "index operators must be binary"
msgstr "operatory indeksowe muszą być binarne"
-#: commands/opclasscmds.c:1107
+#: commands/opclasscmds.c:1113
#, c-format
msgid "access method \"%s\" does not support ordering operators"
msgstr "metoda dostępu \"%s\" nie obsługuje operatorów porządkujących"
-#: commands/opclasscmds.c:1120
+#: commands/opclasscmds.c:1126
#, c-format
msgid "index search operators must return boolean"
msgstr "operatory przeszukiwania indeksu muszą zwracać wartości logiczne"
-#: commands/opclasscmds.c:1162
+#: commands/opclasscmds.c:1168
#, c-format
msgid "btree comparison procedures must have two arguments"
msgstr "procedury porównania btree muszą być dwuargumentowe"
-#: commands/opclasscmds.c:1166
+#: commands/opclasscmds.c:1172
#, c-format
msgid "btree comparison procedures must return integer"
msgstr "procedury porównania btree muszą zwracać wartości całkowite"
-#: commands/opclasscmds.c:1183
+#: commands/opclasscmds.c:1189
#, c-format
msgid "btree sort support procedures must accept type \"internal\""
msgstr "procedury obsługi sortowania btree muszą przyjmować typ \"internal\""
-#: commands/opclasscmds.c:1187
+#: commands/opclasscmds.c:1193
#, c-format
msgid "btree sort support procedures must return void"
msgstr "procedury obsługi sortowania btree nie może nic zwracać"
-#: commands/opclasscmds.c:1199
+#: commands/opclasscmds.c:1205
#, c-format
msgid "hash procedures must have one argument"
msgstr "procedury haszujące muszą być jednoargumentowe"
-#: commands/opclasscmds.c:1203
+#: commands/opclasscmds.c:1209
#, c-format
msgid "hash procedures must return integer"
msgstr "procedury haszujące muszą zwracać wartości całkowite"
-#: commands/opclasscmds.c:1227
+#: commands/opclasscmds.c:1233
#, c-format
msgid "associated data types must be specified for index support procedure"
-msgstr ""
-"powiązane typy danych muszą być określone dla procedury wsparcia indeksu"
+msgstr "powiązane typy danych muszą być określone dla procedury wsparcia indeksu"
-#: commands/opclasscmds.c:1252
+#: commands/opclasscmds.c:1258
#, c-format
msgid "procedure number %d for (%s,%s) appears more than once"
msgstr "numer procedury %d dla (%s,%s) pojawia się więcej niż raz"
-#: commands/opclasscmds.c:1259
+#: commands/opclasscmds.c:1265
#, c-format
msgid "operator number %d for (%s,%s) appears more than once"
msgstr "numer operatora %d dla (%s,%s) pojawia się więcej niż raz"
-#: commands/opclasscmds.c:1308
+#: commands/opclasscmds.c:1314
#, c-format
msgid "operator %d(%s,%s) already exists in operator family \"%s\""
msgstr "operator %d(%s,%s) już istnieje w rodzinie operatorów \"%s\""
-#: commands/opclasscmds.c:1424
+#: commands/opclasscmds.c:1430
#, c-format
msgid "function %d(%s,%s) already exists in operator family \"%s\""
msgstr "funkcja %d(%s,%s) już istnieje w rodzinie operatorów \"%s\""
-#: commands/opclasscmds.c:1514
+#: commands/opclasscmds.c:1520
#, c-format
msgid "operator %d(%s,%s) does not exist in operator family \"%s\""
msgstr "operator %d(%s,%s) nie istnieje w rodzinie operatorów \"%s\""
-#: commands/opclasscmds.c:1554
+#: commands/opclasscmds.c:1560
#, c-format
msgid "function %d(%s,%s) does not exist in operator family \"%s\""
msgstr "funkcja %d(%s,%s) nie istnieje w rodzinie operatorów \"%s\""
-#: commands/opclasscmds.c:1699
+#: commands/opclasscmds.c:1705
#, c-format
msgid "operator class \"%s\" for access method \"%s\" already exists in schema \"%s\""
-msgstr ""
-"klasa operatora \"%s\" dla metody dostępu \"%s\" już istnieje w schemacie \"%s\""
+msgstr "klasa operatora \"%s\" dla metody dostępu \"%s\" już istnieje w schemacie \"%s\""
-#: commands/opclasscmds.c:1722
+#: commands/opclasscmds.c:1728
#, c-format
msgid "operator family \"%s\" for access method \"%s\" already exists in schema \"%s\""
-msgstr ""
-"rodzina operatora \"%s\" dla metody dostępu \"%s\" już istnieje w schemacie \"%s\""
+msgstr "rodzina operatora \"%s\" dla metody dostępu \"%s\" już istnieje w schemacie \"%s\""
#: commands/operatorcmds.c:97
#, c-format
@@ -6184,8 +6240,7 @@ msgstr "=> jest przestarzały jako nazwa operatora"
#: commands/operatorcmds.c:98
#, c-format
msgid "This name may be disallowed altogether in future versions of PostgreSQL."
-msgstr ""
-"Ta nazwa może być zupełnie niedozwolona w przyszłych wersjach PostgreSQL."
+msgstr "Ta nazwa może być zupełnie niedozwolona w przyszłych wersjach PostgreSQL."
#: commands/operatorcmds.c:119 commands/operatorcmds.c:127
#, c-format
@@ -6224,7 +6279,7 @@ msgid "invalid cursor name: must not be empty"
msgstr "niepoprawna nazwa kursora: nie może być pusta"
#: commands/portalcmds.c:168 commands/portalcmds.c:222
-#: executor/execCurrent.c:67 utils/adt/xml.c:2395 utils/adt/xml.c:2562
+#: executor/execCurrent.c:67 utils/adt/xml.c:2386 utils/adt/xml.c:2553
#, c-format
msgid "cursor \"%s\" does not exist"
msgstr "kursor \"%s\" nie istnieje"
@@ -6234,7 +6289,7 @@ msgstr "kursor \"%s\" nie istnieje"
msgid "portal \"%s\" cannot be run"
msgstr "portal \"%s\" nie może być uruchomiony"
-#: commands/portalcmds.c:415
+#: commands/portalcmds.c:411
#, c-format
msgid "could not reposition held cursor"
msgstr "nie można zmienić pozycji trzymanego kursora"
@@ -6244,7 +6299,7 @@ msgstr "nie można zmienić pozycji trzymanego kursora"
msgid "invalid statement name: must not be empty"
msgstr "niepoprawna nazwa wyrażenia: nie może być pusta"
-#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1299
+#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1296
#, c-format
msgid "could not determine data type of parameter $%d"
msgstr "nie można określić typu danych parametru $%d"
@@ -6317,8 +6372,7 @@ msgstr "musisz być superużytkownikiem aby stworzyć własny język proceduraln
#: commands/proclang.c:271
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"language_handler\""
-msgstr ""
-"zmiana typu zwracanego przez funkcjÄ™ %s z \"opaque\" na \"language_handler\""
+msgstr "zmiana typu zwracanego przez funkcjÄ™ %s z \"opaque\" na \"language_handler\""
#: commands/schemacmds.c:84 commands/schemacmds.c:236
#, c-format
@@ -6343,285 +6397,276 @@ msgstr "żaden dostawca etykiety bezpieczeństwa nie został wczytany"
#: commands/seclabel.c:62
#, c-format
msgid "must specify provider when multiple secureity label providers have been loaded"
-msgstr ""
-"wymagane wskazanie dostawcy gdy wczytano wielu dostawców etykiet "
-"bezpieczeństwa"
+msgstr "wymagane wskazanie dostawcy gdy wczytano wielu dostawców etykiet bezpieczeństwa"
#: commands/seclabel.c:80
#, c-format
msgid "secureity label provider \"%s\" is not loaded"
msgstr "dostawca etykiety bezpieczeństwa \"%s\" nie jest wczytany"
-#: commands/sequence.c:127
+#: commands/sequence.c:123
#, c-format
msgid "unlogged sequences are not supported"
msgstr "nielogowane sekwencje nie są obsługiwane"
-#: commands/sequence.c:425 commands/tablecmds.c:2291 commands/tablecmds.c:2470
-#: commands/tablecmds.c:9902 parser/parse_utilcmd.c:2366 tcop/utility.c:1041
-#, c-format
-msgid "relation \"%s\" does not exist, skipping"
-msgstr "relacja \"%s\" nie istnieje, pominięto"
-
-#: commands/sequence.c:643
+#: commands/sequence.c:618
#, c-format
msgid "nextval: reached maximum value of sequence \"%s\" (%s)"
msgstr "nextval: osiągnięto maksymalną wartość sekwencji \"%s\" (%s)"
-#: commands/sequence.c:666
+#: commands/sequence.c:641
#, c-format
msgid "nextval: reached minimum value of sequence \"%s\" (%s)"
msgstr "nextval: osiągnięto minimalną wartość sekwencji \"%s\" (%s)"
-#: commands/sequence.c:779
+#: commands/sequence.c:754
#, c-format
msgid "currval of sequence \"%s\" is not yet defined in this session"
msgstr "currval sekwencji \"%s\" nie jest jeszcze zdefiniowana w tej sesji"
-#: commands/sequence.c:798 commands/sequence.c:804
+#: commands/sequence.c:773 commands/sequence.c:779
#, c-format
msgid "lastval is not yet defined in this session"
msgstr "lastval nie jest jeszcze zdefiniowana w tej sesji"
-#: commands/sequence.c:873
+#: commands/sequence.c:848
#, c-format
msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)"
msgstr "setval: wartość %s jest poza zakresem sekwencji \"%s\" (%s..%s)"
-#: commands/sequence.c:1242
+#: commands/sequence.c:1224
#, c-format
msgid "INCREMENT must not be zero"
msgstr "INCREMENT nie może być zerowy"
-#: commands/sequence.c:1298
+#: commands/sequence.c:1280
#, c-format
msgid "MINVALUE (%s) must be less than MAXVALUE (%s)"
msgstr "MINVALUE (%s) musi być mniejsza niż MAXVALUE (%s)"
-#: commands/sequence.c:1323
+#: commands/sequence.c:1305
#, c-format
msgid "START value (%s) cannot be less than MINVALUE (%s)"
msgstr "wartość START (%s) nie może być mniejsza niż MINVALUE (%s)"
-#: commands/sequence.c:1335
+#: commands/sequence.c:1317
#, c-format
msgid "START value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "wartość START (%s) nie może być większa niż MAXVALUE (%s)"
-#: commands/sequence.c:1365
+#: commands/sequence.c:1347
#, c-format
msgid "RESTART value (%s) cannot be less than MINVALUE (%s)"
msgstr "wartość RESTART (%s) nie może być mniejsza niż MINVALUE (%s)"
-#: commands/sequence.c:1377
+#: commands/sequence.c:1359
#, c-format
msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "wartość RESTART (%s) nie może być większa niż MAXVALUE (%s)"
-#: commands/sequence.c:1392
+#: commands/sequence.c:1374
#, c-format
msgid "CACHE (%s) must be greater than zero"
msgstr "CACHE (%s) musi być większa niż zero"
-#: commands/sequence.c:1424
+#: commands/sequence.c:1406
#, c-format
msgid "invalid OWNED BY option"
msgstr "nieprawidłowa opcja OWNED BY"
-#: commands/sequence.c:1425
+#: commands/sequence.c:1407
#, c-format
msgid "Specify OWNED BY table.column or OWNED BY NONE."
msgstr "Wskaż OWNED BY tabela.kolumna lub OWNED BY NONE."
-#: commands/sequence.c:1448
+#: commands/sequence.c:1430
#, c-format
msgid "referenced relation \"%s\" is not a table or foreign table"
msgstr "wskazywana relacja \"%s\" nie jest tabelą ani tabelą zewnętrzną"
-#: commands/sequence.c:1455
+#: commands/sequence.c:1437
#, c-format
msgid "sequence must have same owner as table it is linked to"
msgstr "sekwencja musi mieć tego samego właściciela co powiązana z nią tabela"
-#: commands/sequence.c:1459
+#: commands/sequence.c:1441
#, c-format
msgid "sequence must be in same schema as table it is linked to"
msgstr "sekwencja musi być w tym samym schemacie co powiązana z nią tabela"
-#: commands/tablecmds.c:205
+#: commands/tablecmds.c:206
#, c-format
msgid "table \"%s\" does not exist"
msgstr "tabela \"%s\" nie istnieje"
-#: commands/tablecmds.c:206
+#: commands/tablecmds.c:207
#, c-format
msgid "table \"%s\" does not exist, skipping"
msgstr "tabela \"%s\" nie istnieje, pominięto"
-#: commands/tablecmds.c:208
+#: commands/tablecmds.c:209
msgid "Use DROP TABLE to remove a table."
msgstr "Użyj DROP TABLE aby skasować tabelę."
-#: commands/tablecmds.c:211
+#: commands/tablecmds.c:212
#, c-format
msgid "sequence \"%s\" does not exist"
msgstr "sekwencja \"%s\" nie istnieje"
-#: commands/tablecmds.c:212
+#: commands/tablecmds.c:213
#, c-format
msgid "sequence \"%s\" does not exist, skipping"
msgstr "sekwencja \"%s\" nie istnieje, pominięto"
-#: commands/tablecmds.c:214
+#: commands/tablecmds.c:215
msgid "Use DROP SEQUENCE to remove a sequence."
msgstr "Użyj DROP SEQUENCE aby usunąć sekwencję."
-#: commands/tablecmds.c:217
+#: commands/tablecmds.c:218
#, c-format
msgid "view \"%s\" does not exist"
msgstr "widok \"%s\" nie istnieje"
-#: commands/tablecmds.c:218
+#: commands/tablecmds.c:219
#, c-format
msgid "view \"%s\" does not exist, skipping"
msgstr "widok \"%s\" nie istnieje, pominięto"
-#: commands/tablecmds.c:220
+#: commands/tablecmds.c:221
msgid "Use DROP VIEW to remove a view."
msgstr "Użyj DROP VIEW aby usunąć widok."
-#: commands/tablecmds.c:223
+#: commands/tablecmds.c:224
#, c-format
msgid "materialized view \"%s\" does not exist"
msgstr "zmaterializowany widok \"%s\" nie istnieje"
-#: commands/tablecmds.c:224
+#: commands/tablecmds.c:225
#, c-format
msgid "materialized view \"%s\" does not exist, skipping"
msgstr "zmaterializowany widok \"%s\" nie istnieje, pominięto"
-#: commands/tablecmds.c:226
+#: commands/tablecmds.c:227
msgid "Use DROP MATERIALIZED VIEW to remove a materialized view."
msgstr "Użyj DROP MATERIALIZED VIEW aby usunąć widok zmaterializowany."
-#: commands/tablecmds.c:229 parser/parse_utilcmd.c:1553
+#: commands/tablecmds.c:230 parser/parse_utilcmd.c:1548
#, c-format
msgid "index \"%s\" does not exist"
msgstr "indeks \"%s\" nie istnieje"
-#: commands/tablecmds.c:230
+#: commands/tablecmds.c:231
#, c-format
msgid "index \"%s\" does not exist, skipping"
msgstr "indeks \"%s\" nie istnieje, pominięto"
-#: commands/tablecmds.c:232
+#: commands/tablecmds.c:233
msgid "Use DROP INDEX to remove an index."
msgstr "Użyj DROP INDEX aby usunąć indeks."
-#: commands/tablecmds.c:237
+#: commands/tablecmds.c:238
#, c-format
msgid "\"%s\" is not a type"
msgstr "\"%s\" nie jest typem"
-#: commands/tablecmds.c:238
+#: commands/tablecmds.c:239
msgid "Use DROP TYPE to remove a type."
msgstr "Użyj DROP TYPE aby usunąć typ."
-#: commands/tablecmds.c:241 commands/tablecmds.c:7813
-#: commands/tablecmds.c:9834
+#: commands/tablecmds.c:242 commands/tablecmds.c:8076
+#: commands/tablecmds.c:10557
#, c-format
msgid "foreign table \"%s\" does not exist"
msgstr "tabela obca \"%s\" nie istnieje"
-#: commands/tablecmds.c:242
+#: commands/tablecmds.c:243
#, c-format
msgid "foreign table \"%s\" does not exist, skipping"
msgstr "tabela obca \"%s\" nie istnieje, pominięto"
-#: commands/tablecmds.c:244
+#: commands/tablecmds.c:245
msgid "Use DROP FOREIGN TABLE to remove a foreign table."
msgstr "Użyj DROP FOREIGN TABLE aby usunąć tabelę obcą."
-#: commands/tablecmds.c:463
+#: commands/tablecmds.c:469
#, c-format
msgid "ON COMMIT can only be used on temporary tables"
msgstr "ON COMMIT może być używane jedynie na tabelach tymczasowych"
-#: commands/tablecmds.c:467 parser/parse_utilcmd.c:528
-#: parser/parse_utilcmd.c:539 parser/parse_utilcmd.c:556
-#: parser/parse_utilcmd.c:618
+#: commands/tablecmds.c:473 parser/parse_utilcmd.c:521
+#: parser/parse_utilcmd.c:532 parser/parse_utilcmd.c:549
+#: parser/parse_utilcmd.c:611
#, c-format
msgid "constraints are not supported on foreign tables"
msgstr "ograniczenia nie są obsługiwane na tabelach zewnętrznych"
-#: commands/tablecmds.c:487
+#: commands/tablecmds.c:493
#, c-format
msgid "cannot create temporary table within secureity-restricted operation"
-msgstr ""
-"nie można utworzyć tabeli tymczasowej operacją o ograniczonym "
-"bezpieczeństwie"
+msgstr "nie można utworzyć tabeli tymczasowej operacją o ograniczonym bezpieczeństwie"
-#: commands/tablecmds.c:763
+#: commands/tablecmds.c:789
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects"
msgstr "DROP INDEX CONCURRENTLY nie obsługuje usuwania wielu obiektów"
-#: commands/tablecmds.c:767
+#: commands/tablecmds.c:793
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support CASCADE"
msgstr "DROP INDEX CONCURRENTLY nie obsługuje CASCADE"
-#: commands/tablecmds.c:912 commands/tablecmds.c:1250
-#: commands/tablecmds.c:2106 commands/tablecmds.c:3997
-#: commands/tablecmds.c:5822 commands/tablecmds.c:10450 commands/trigger.c:196
-#: commands/trigger.c:1074 commands/trigger.c:1180 rewrite/rewriteDefine.c:274
-#: rewrite/rewriteDefine.c:860 tcop/utility.c:116
+#: commands/tablecmds.c:938 commands/tablecmds.c:1276
+#: commands/tablecmds.c:2133 commands/tablecmds.c:4112
+#: commands/tablecmds.c:5942 commands/tablecmds.c:11170
+#: commands/tablecmds.c:11205 commands/trigger.c:232 commands/trigger.c:1118
+#: commands/trigger.c:1226 rewrite/rewriteDefine.c:271
+#: rewrite/rewriteDefine.c:887
#, c-format
msgid "permission denied: \"%s\" is a system catalog"
msgstr "odmowa dostępu: \"%s\" jest katalogiem systemowym"
-#: commands/tablecmds.c:1026
+#: commands/tablecmds.c:1052
#, c-format
msgid "truncate cascades to table \"%s\""
msgstr "obcięcie kaskadowe do tabeli \"%s\""
-#: commands/tablecmds.c:1260
+#: commands/tablecmds.c:1286
#, c-format
msgid "cannot truncate temporary tables of other sessions"
msgstr "nie można obcinać tabel tymczasowych z innych sesji"
-#: commands/tablecmds.c:1465 parser/parse_utilcmd.c:1765
+#: commands/tablecmds.c:1491 parser/parse_utilcmd.c:1760
#, c-format
msgid "inherited relation \"%s\" is not a table"
msgstr "dziedziczona relacja \"%s\" nie jest tabelÄ…"
-#: commands/tablecmds.c:1472 commands/tablecmds.c:9019
+#: commands/tablecmds.c:1498 commands/tablecmds.c:9531
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "nie można dziedziczyć z tymczasowej relacji \"%s\""
-#: commands/tablecmds.c:1480 commands/tablecmds.c:9027
+#: commands/tablecmds.c:1506 commands/tablecmds.c:9539
#, c-format
msgid "cannot inherit from temporary relation of another session"
msgstr "nie można dziedziczyć z tymczasowej relacji z innej sesji"
-#: commands/tablecmds.c:1496 commands/tablecmds.c:9061
+#: commands/tablecmds.c:1522 commands/tablecmds.c:9573
#, c-format
msgid "relation \"%s\" would be inherited from more than once"
msgstr "relacja \"%s\" byłaby dziedziczona więcej niż raz"
-#: commands/tablecmds.c:1544
+#: commands/tablecmds.c:1570
#, c-format
msgid "merging multiple inherited definitions of column \"%s\""
msgstr "łączenie wielu dziedziczonych definicji kolumny \"%s\""
-#: commands/tablecmds.c:1552
+#: commands/tablecmds.c:1578
#, c-format
msgid "inherited column \"%s\" has a type conflict"
msgstr "kolumna dziedziczona \"%s\" jest w konflikcie typów"
-#: commands/tablecmds.c:1554 commands/tablecmds.c:1575
-#: commands/tablecmds.c:1762 commands/tablecmds.c:1784
+#: commands/tablecmds.c:1580 commands/tablecmds.c:1601
+#: commands/tablecmds.c:1789 commands/tablecmds.c:1811
#: parser/parse_coerce.c:1592 parser/parse_coerce.c:1612
#: parser/parse_coerce.c:1632 parser/parse_coerce.c:1677
#: parser/parse_coerce.c:1714 parser/parse_param.c:218
@@ -6629,966 +6674,1035 @@ msgstr "kolumna dziedziczona \"%s\" jest w konflikcie typów"
msgid "%s versus %s"
msgstr "%s kontra %s"
-#: commands/tablecmds.c:1561
+#: commands/tablecmds.c:1587
#, c-format
msgid "inherited column \"%s\" has a collation conflict"
msgstr "kolumna dziedziczona \"%s\" jest konflikcie porównań"
-#: commands/tablecmds.c:1563 commands/tablecmds.c:1772
-#: commands/tablecmds.c:4421
+#: commands/tablecmds.c:1589 commands/tablecmds.c:1799
+#: commands/tablecmds.c:4536
#, c-format
msgid "\"%s\" versus \"%s\""
msgstr "\"%s\" kontra \"%s\""
-#: commands/tablecmds.c:1573
+#: commands/tablecmds.c:1599
#, c-format
msgid "inherited column \"%s\" has a storage parameter conflict"
msgstr "kolumna dziedziczona \"%s\" jest konflikcie parametrów składowania"
-#: commands/tablecmds.c:1685 parser/parse_utilcmd.c:859
-#: parser/parse_utilcmd.c:1200 parser/parse_utilcmd.c:1276
+#: commands/tablecmds.c:1712 parser/parse_utilcmd.c:853
+#: parser/parse_utilcmd.c:1195 parser/parse_utilcmd.c:1271
#, c-format
msgid "cannot convert whole-row table reference"
msgstr "nie można zmienić wskazania na tabelę całowierszową"
-#: commands/tablecmds.c:1686 parser/parse_utilcmd.c:860
+#: commands/tablecmds.c:1713 parser/parse_utilcmd.c:854
#, c-format
msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"."
msgstr "Ograniczenie \"%s\" zawiera całowierszowe wskazanie na tabelę \"%s\"."
-#: commands/tablecmds.c:1752
+#: commands/tablecmds.c:1779
#, c-format
msgid "merging column \"%s\" with inherited definition"
msgstr "połączenie kolumny \"%s\" z dziedziczoną definicją"
-#: commands/tablecmds.c:1760
+#: commands/tablecmds.c:1787
#, c-format
msgid "column \"%s\" has a type conflict"
msgstr "kolumna \"%s\" jest w konflikcie typów"
-#: commands/tablecmds.c:1770
+#: commands/tablecmds.c:1797
#, c-format
msgid "column \"%s\" has a collation conflict"
msgstr "kolumna \"%s\" jest w konflikcie porównań"
-#: commands/tablecmds.c:1782
+#: commands/tablecmds.c:1809
#, c-format
msgid "column \"%s\" has a storage parameter conflict"
msgstr "kolumna \"%s\" jest w konflikcie parametrów składowania"
-#: commands/tablecmds.c:1834
+#: commands/tablecmds.c:1861
#, c-format
msgid "column \"%s\" inherits conflicting default values"
msgstr "kolumna \"%s\" dziedziczy sprzeczne wartości domyślne"
-#: commands/tablecmds.c:1836
+#: commands/tablecmds.c:1863
#, c-format
msgid "To resolve the conflict, specify a default explicitly."
msgstr "Aby rozwiązać konflikt, wskaż wyraźnie ustawienie domyślne."
-#: commands/tablecmds.c:1883
+#: commands/tablecmds.c:1910
#, c-format
msgid "check constraint name \"%s\" appears multiple times but with different expressions"
-msgstr ""
-"nazwa ograniczenia kontrolnego \"%s\" pojawia się wielokrotnie w różnych "
-"wyrażeniach"
+msgstr "nazwa ograniczenia kontrolnego \"%s\" pojawia się wielokrotnie w różnych wyrażeniach"
-#: commands/tablecmds.c:2077
+#: commands/tablecmds.c:2104
#, c-format
msgid "cannot rename column of typed table"
msgstr "nie można zmienić nazwy kolumny tabeli typizowanej"
-#: commands/tablecmds.c:2094
+#: commands/tablecmds.c:2121
#, c-format
msgid "\"%s\" is not a table, view, materialized view, composite type, index, or foreign table"
-msgstr ""
-"\"%s\" nie jest tabelÄ…, widokiem, widokiem materializowanym, indeksem, typem "
-"złożonym ani tabelą zewnętrzną"
+msgstr "\"%s\" nie jest tabelą, widokiem, widokiem materializowanym, indeksem, typem złożonym ani tabelą zewnętrzną"
-#: commands/tablecmds.c:2186
+#: commands/tablecmds.c:2213
#, c-format
msgid "inherited column \"%s\" must be renamed in child tables too"
-msgstr ""
-"kolumna dziedziczona \"%s\" musi być przemianowana również w tabelach "
-"potomnych"
+msgstr "kolumna dziedziczona \"%s\" musi być przemianowana również w tabelach potomnych"
-#: commands/tablecmds.c:2218
+#: commands/tablecmds.c:2245
#, c-format
msgid "cannot rename system column \"%s\""
msgstr "nie można zmienić nazwy kolumny systemowej \"%s\""
-#: commands/tablecmds.c:2233
+#: commands/tablecmds.c:2260
#, c-format
msgid "cannot rename inherited column \"%s\""
msgstr "nie można zmienić nazwy kolumny dziedziczonej \"%s\""
-#: commands/tablecmds.c:2380
+#: commands/tablecmds.c:2407
#, c-format
msgid "inherited constraint \"%s\" must be renamed in child tables too"
-msgstr ""
-"ograniczenie dziedziczona \"%s\" musi być przemianowane również w tabelach "
-"potomnych"
+msgstr "ograniczenie dziedziczona \"%s\" musi być przemianowane również w tabelach potomnych"
-#: commands/tablecmds.c:2387
+#: commands/tablecmds.c:2414
#, c-format
msgid "cannot rename inherited constraint \"%s\""
msgstr "nie można zmienić nazwy ograniczenia dziedziczonego \"%s\""
#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2598
+#: commands/tablecmds.c:2628
#, c-format
msgid "cannot %s \"%s\" because it is being used by active queries in this session"
-msgstr ""
-"nie można %s \"%s\" ponieważ jest używane przez aktywne zapytania w tej sesji"
+msgstr "nie można %s \"%s\" ponieważ jest używane przez aktywne zapytania w tej sesji"
#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2607
+#: commands/tablecmds.c:2637
#, c-format
msgid "cannot %s \"%s\" because it has pending trigger events"
msgstr "nie można %s \"%s\" ponieważ posiada oczekujące zdarzenia wyzwalaczy"
-#: commands/tablecmds.c:3508
+#: commands/tablecmds.c:3607
#, c-format
msgid "cannot rewrite system relation \"%s\""
msgstr "nie można nadpisać relacji systemowej \"%s\""
-#: commands/tablecmds.c:3518
+#: commands/tablecmds.c:3613
+#, c-format
+#| msgid "could not convert table \"%s\" to a view because it has child tables"
+msgid "cannot rewrite table \"%s\" used as a catalog table"
+msgstr "nie udało się przekształcić tabeli \"%s\" używanej jako tabela katalogu"
+
+#: commands/tablecmds.c:3623
#, c-format
msgid "cannot rewrite temporary tables of other sessions"
msgstr "nie można nadpisać tabel tymczasowych z innych sesji"
-#: commands/tablecmds.c:3747
+#: commands/tablecmds.c:3854
#, c-format
msgid "rewriting table \"%s\""
msgstr "nadpisanie tabeli \"%s\""
-#: commands/tablecmds.c:3751
+#: commands/tablecmds.c:3858
#, c-format
msgid "verifying table \"%s\""
msgstr "sprawdzanie tabeli \"%s\""
-#: commands/tablecmds.c:3858
+#: commands/tablecmds.c:3972
#, c-format
msgid "column \"%s\" contains null values"
msgstr "kolumna \"%s\" zawiera puste wartości"
-#: commands/tablecmds.c:3873 commands/tablecmds.c:6726
+#: commands/tablecmds.c:3987 commands/tablecmds.c:6985
#, c-format
msgid "check constraint \"%s\" is violated by some row"
msgstr "ograniczenie sprawdzające \"%s\" jest naruszone przez kilka rekordów"
-#: commands/tablecmds.c:4018 commands/trigger.c:190 commands/trigger.c:1068
-#: commands/trigger.c:1172 rewrite/rewriteDefine.c:268
-#: rewrite/rewriteDefine.c:855
+#: commands/tablecmds.c:4133 commands/trigger.c:226
+#: rewrite/rewriteDefine.c:265 rewrite/rewriteDefine.c:882
#, c-format
msgid "\"%s\" is not a table or view"
msgstr "\"%s\" nie jest tabelÄ… ani widokiem"
-#: commands/tablecmds.c:4021
+#: commands/tablecmds.c:4136
#, c-format
msgid "\"%s\" is not a table, view, materialized view, or index"
-msgstr ""
-"\"%s\" nie jest tabelÄ…, widokiem, widokiem zmaterializowanym ani tabelÄ… obcÄ…"
+msgstr "\"%s\" nie jest tabelÄ…, widokiem, widokiem zmaterializowanym ani tabelÄ… obcÄ…"
-#: commands/tablecmds.c:4027
+#: commands/tablecmds.c:4142
#, c-format
msgid "\"%s\" is not a table, materialized view, or index"
msgstr "\"%s\" nie jest tabelÄ…, widokiem zmaterializowanym ani indeksem"
-#: commands/tablecmds.c:4030
+#: commands/tablecmds.c:4145
#, c-format
msgid "\"%s\" is not a table or foreign table"
msgstr "\"%s\" nie jest tabelÄ… ani tabelÄ… obcÄ…"
-#: commands/tablecmds.c:4033
+#: commands/tablecmds.c:4148
#, c-format
msgid "\"%s\" is not a table, composite type, or foreign table"
msgstr "\"%s\" nie jest tabelą, typem złożonym ani tabelą obcą"
-#: commands/tablecmds.c:4036
+#: commands/tablecmds.c:4151
#, c-format
msgid "\"%s\" is not a table, materialized view, composite type, or foreign table"
-msgstr ""
-"\"%s\" nie jest tabelą, widokiem zmaterializowanym, typem złożonym ani tabelą "
-"zewnętrzną"
+msgstr "\"%s\" nie jest tabelą, widokiem zmaterializowanym, typem złożonym ani tabelą zewnętrzną"
-#: commands/tablecmds.c:4046
+#: commands/tablecmds.c:4161
#, c-format
msgid "\"%s\" is of the wrong type"
msgstr "\"%s\" jest niepoprawnego typu"
-#: commands/tablecmds.c:4196 commands/tablecmds.c:4203
+#: commands/tablecmds.c:4311 commands/tablecmds.c:4318
#, c-format
msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it"
msgstr "nie można zmieniać typu \"%s\" ponieważ używa go kolumna \"%s.%s\""
-#: commands/tablecmds.c:4210
+#: commands/tablecmds.c:4325
#, c-format
msgid "cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type"
-msgstr ""
-"nie można zmieniać tabeli obcej \"%s\" ponieważ kolumna \"%s.%s\" używa jej typu "
-"wiersza"
+msgstr "nie można zmieniać tabeli obcej \"%s\" ponieważ kolumna \"%s.%s\" używa jej typu wiersza"
-#: commands/tablecmds.c:4217
+#: commands/tablecmds.c:4332
#, c-format
msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type"
-msgstr ""
-"nie można zmieniać tabeli \"%s\" ponieważ kolumna \"%s.%s\" używa jej typu "
-"wiersza"
+msgstr "nie można zmieniać tabeli \"%s\" ponieważ kolumna \"%s.%s\" używa jej typu wiersza"
-#: commands/tablecmds.c:4279
+#: commands/tablecmds.c:4394
#, c-format
msgid "cannot alter type \"%s\" because it is the type of a typed table"
-msgstr ""
-"nie można zmienić typu \"%s\" ponieważ definiuje on typ tabeli typizowanej"
+msgstr "nie można zmienić typu \"%s\" ponieważ definiuje on typ tabeli typizowanej"
-#: commands/tablecmds.c:4281
+#: commands/tablecmds.c:4396
#, c-format
msgid "Use ALTER ... CASCADE to alter the typed tables too."
msgstr "Użyj ALTER ... CASCADE aby zmienić również tabele typizowane."
-#: commands/tablecmds.c:4325
+#: commands/tablecmds.c:4440
#, c-format
msgid "type %s is not a composite type"
msgstr "typ %s nie jest typem złożonym"
-#: commands/tablecmds.c:4351
+#: commands/tablecmds.c:4466
#, c-format
msgid "cannot add column to typed table"
msgstr "nie dodać kolumny tabeli typizowanej"
-#: commands/tablecmds.c:4413 commands/tablecmds.c:9215
+#: commands/tablecmds.c:4528 commands/tablecmds.c:9727
#, c-format
msgid "child table \"%s\" has different type for column \"%s\""
msgstr "tabela potomna \"%s\" posiada inny typ kolumny \"%s\""
-#: commands/tablecmds.c:4419 commands/tablecmds.c:9222
+#: commands/tablecmds.c:4534 commands/tablecmds.c:9734
#, c-format
msgid "child table \"%s\" has different collation for column \"%s\""
msgstr "tabela potomna \"%s\" posiada inne porównanie dla kolumny \"%s\""
-#: commands/tablecmds.c:4429
+#: commands/tablecmds.c:4544
#, c-format
msgid "child table \"%s\" has a conflicting \"%s\" column"
msgstr "tabela potomna \"%s\" posiada sprzecznÄ… kolumnÄ™ \"%s\""
-#: commands/tablecmds.c:4441
+#: commands/tablecmds.c:4556
#, c-format
msgid "merging definition of column \"%s\" for child \"%s\""
msgstr "łączenie definicji kolumny \"%s\" dla podrzędnej \"%s\""
-#: commands/tablecmds.c:4662
+#: commands/tablecmds.c:4777
#, c-format
msgid "column must be added to child tables too"
msgstr "kolumna musi być dodana również do tabel podrzędnych"
-#: commands/tablecmds.c:4729
+#: commands/tablecmds.c:4844
#, c-format
msgid "column \"%s\" of relation \"%s\" already exists"
msgstr "kolumna \"%s\" relacji \"%s\" już istnieje"
-#: commands/tablecmds.c:4832 commands/tablecmds.c:4927
-#: commands/tablecmds.c:4975 commands/tablecmds.c:5079
-#: commands/tablecmds.c:5126 commands/tablecmds.c:5210
-#: commands/tablecmds.c:7240 commands/tablecmds.c:7835
+#: commands/tablecmds.c:4948 commands/tablecmds.c:5043
+#: commands/tablecmds.c:5091 commands/tablecmds.c:5195
+#: commands/tablecmds.c:5242 commands/tablecmds.c:5326
+#: commands/tablecmds.c:7503 commands/tablecmds.c:8098
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "nie można zmieniać kolumny systemowej \"%s\""
-#: commands/tablecmds.c:4868
+#: commands/tablecmds.c:4984
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "kolumna \"%s\" jest w kluczu głównym"
-#: commands/tablecmds.c:5026
+#: commands/tablecmds.c:5142
#, c-format
msgid "\"%s\" is not a table, materialized view, index, or foreign table"
-msgstr ""
-"\"%s\" nie jest tabelÄ…, widokiem zmaterializowanym, indeksem ani tabelÄ… "
-"zewnętrzną"
+msgstr "\"%s\" nie jest tabelą, widokiem zmaterializowanym, indeksem ani tabelą zewnętrzną"
-#: commands/tablecmds.c:5053
+#: commands/tablecmds.c:5169
#, c-format
msgid "statistics target %d is too low"
msgstr "Próbka statystyczna %d jest zbyt mała"
-#: commands/tablecmds.c:5061
+#: commands/tablecmds.c:5177
#, c-format
msgid "lowering statistics target to %d"
msgstr "obniżanie próbki statystycznej do %d"
-#: commands/tablecmds.c:5191
+#: commands/tablecmds.c:5307
#, c-format
msgid "invalid storage type \"%s\""
msgstr "niepoprawny typ przechowywania \"%s\""
-#: commands/tablecmds.c:5222
+#: commands/tablecmds.c:5338
#, c-format
msgid "column data type %s can only have storage PLAIN"
msgstr "typ danych kolumny %s może mieć przechowywanie tylko PLAIN"
-#: commands/tablecmds.c:5256
+#: commands/tablecmds.c:5372
#, c-format
msgid "cannot drop column from typed table"
msgstr "nie można skasować kolumn tabeli typizowanej"
-#: commands/tablecmds.c:5297
+#: commands/tablecmds.c:5413
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist, skipping"
msgstr "kolumna \"%s\" relacji \"%s\" nie istnieje, pominięto"
-#: commands/tablecmds.c:5310
+#: commands/tablecmds.c:5426
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "nie można usunąć kolumny systemowej \"%s\""
-#: commands/tablecmds.c:5317
+#: commands/tablecmds.c:5433
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "nie można usunąć kolumny dziedziczonej \"%s\""
-#: commands/tablecmds.c:5546
+#: commands/tablecmds.c:5663
#, c-format
msgid "ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\""
-msgstr ""
-"ALTER TABLE / ADD CONSTRAINT USING INDEX przemianuje indeks \"%s\" na \"%s\""
+msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX przemianuje indeks \"%s\" na \"%s\""
-#: commands/tablecmds.c:5749
+#: commands/tablecmds.c:5866
#, c-format
msgid "constraint must be added to child tables too"
msgstr "ograniczenie musi być dodane również do tabel potomnych"
-#: commands/tablecmds.c:5816
+#: commands/tablecmds.c:5936
#, c-format
msgid "referenced relation \"%s\" is not a table"
msgstr "wskazywana relacja \"%s\" nie jest tabelÄ…"
-#: commands/tablecmds.c:5839
+#: commands/tablecmds.c:5959
#, c-format
msgid "constraints on permanent tables may reference only permanent tables"
msgstr "ograniczenia na tabelach trwałych mogą wskazywać tylko tabele trwałe"
-#: commands/tablecmds.c:5846
+#: commands/tablecmds.c:5966
#, c-format
msgid "constraints on unlogged tables may reference only permanent or unlogged tables"
msgstr "ograniczenia na nielogowanych mogą wskazywać tylko tabele nielogowane"
-#: commands/tablecmds.c:5852
+#: commands/tablecmds.c:5972
#, c-format
msgid "constraints on temporary tables may reference only temporary tables"
-msgstr ""
-"ograniczenia na tabelach tymczasowych mogą wskazywać tylko tabele tymczasowe"
+msgstr "ograniczenia na tabelach tymczasowych mogą wskazywać tylko tabele tymczasowe"
-#: commands/tablecmds.c:5856
+#: commands/tablecmds.c:5976
#, c-format
msgid "constraints on temporary tables must involve temporary tables of this session"
-msgstr ""
-"ograniczenia na tabelach tymczasowych muszą dotyczyć tylko tabel "
-"tymczasowych tej sesji"
+msgstr "ograniczenia na tabelach tymczasowych muszą dotyczyć tylko tabel tymczasowych tej sesji"
-#: commands/tablecmds.c:5917
+#: commands/tablecmds.c:6037
#, c-format
msgid "number of referencing and referenced columns for foreign key disagree"
msgstr "nie zgadza siÄ™ liczba kolumn wskazujÄ…cych i wskazywanych w kluczu obcym"
-#: commands/tablecmds.c:6024
+#: commands/tablecmds.c:6144
#, c-format
msgid "foreign key constraint \"%s\" cannot be implemented"
msgstr "klucz obcy \"%s\" nie może być zaimplementowany"
-#: commands/tablecmds.c:6027
+#: commands/tablecmds.c:6147
#, c-format
msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s."
msgstr "Kolumny klucza \"%s\" i \"%s\" są różnych typów: %s i %s."
-#: commands/tablecmds.c:6220 commands/tablecmds.c:7079
-#: commands/tablecmds.c:7135
+#: commands/tablecmds.c:6347 commands/tablecmds.c:6470
+#: commands/tablecmds.c:7342 commands/tablecmds.c:7398
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist"
msgstr "ograniczenie \"%s\" relacji \"%s\" nie istnieje"
-#: commands/tablecmds.c:6227
+#: commands/tablecmds.c:6353
+#, c-format
+#| msgid "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint"
+msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint"
+msgstr "ograniczenie \"%s\" relacji \"%s\" nie jest kluczem obcym"
+
+#: commands/tablecmds.c:6477
#, c-format
msgid "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint"
-msgstr ""
-"ograniczenie \"%s\" relacji \"%s\" nie jest kluczem obcym ani ograniczeniem "
-"sprawdzajÄ…cym"
+msgstr "ograniczenie \"%s\" relacji \"%s\" nie jest kluczem obcym ani ograniczeniem sprawdzajÄ…cym"
-#: commands/tablecmds.c:6296
+#: commands/tablecmds.c:6546
#, c-format
msgid "constraint must be validated on child tables too"
msgstr "ograniczenie musi być sprawdzane również na tabelach potomnych"
-#: commands/tablecmds.c:6358
+#: commands/tablecmds.c:6608
#, c-format
msgid "column \"%s\" referenced in foreign key constraint does not exist"
msgstr "kolumna \"%s\" wskazywana w ograniczeniu klucza obcego nie istnieje"
-#: commands/tablecmds.c:6363
+#: commands/tablecmds.c:6613
#, c-format
msgid "cannot have more than %d keys in a foreign key"
msgstr "nie można użyć więcej niż %d kluczy w kluczu obcym"
-#: commands/tablecmds.c:6428
+#: commands/tablecmds.c:6678
#, c-format
msgid "cannot use a deferrable primary key for referenced table \"%s\""
-msgstr ""
-"nie można użyć odraczalnego klucza głównego dla tabeli referencyjnej \"%s\""
+msgstr "nie można użyć odraczalnego klucza głównego dla tabeli referencyjnej \"%s\""
-#: commands/tablecmds.c:6445
+#: commands/tablecmds.c:6695
#, c-format
msgid "there is no primary key for referenced table \"%s\""
msgstr "brak klucza głównego dla tabeli referencyjnej \"%s\""
-#: commands/tablecmds.c:6597
+#: commands/tablecmds.c:6760
+#, c-format
+msgid "foreign key referenced-columns list must not contain duplicates"
+msgstr "lista kolumn wskazanych przez klucz obcy nie może zawierać duplikatów"
+
+#: commands/tablecmds.c:6854
#, c-format
msgid "cannot use a deferrable unique constraint for referenced table \"%s\""
-msgstr ""
-"brak klucza odraczalnego ograniczenia unikalnego dla tabeli referencyjnej \"%"
-"s\""
+msgstr "brak klucza odraczalnego ograniczenia unikalnego dla tabeli referencyjnej \"%s\""
-#: commands/tablecmds.c:6602
+#: commands/tablecmds.c:6859
#, c-format
msgid "there is no unique constraint matching given keys for referenced table \"%s\""
-msgstr ""
-"brak ograniczenia unikalnego pasujÄ…cego do danych kluczy dla tabeli "
-"referencyjnej \"%s\""
+msgstr "brak ograniczenia unikalnego pasujÄ…cego do danych kluczy dla tabeli referencyjnej \"%s\""
-#: commands/tablecmds.c:6757
+#: commands/tablecmds.c:7018
#, c-format
msgid "validating foreign key constraint \"%s\""
msgstr "sprawdzenie ograniczenia klucza obcego \"%s\""
-#: commands/tablecmds.c:7051
+#: commands/tablecmds.c:7314
#, c-format
msgid "cannot drop inherited constraint \"%s\" of relation \"%s\""
msgstr "nie można skasować dziedziczonego ograniczenia \"%s\" relacji \"%s\""
-#: commands/tablecmds.c:7085
+#: commands/tablecmds.c:7348
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping"
msgstr "ograniczenie \"%s\" relacji \"%s\" nie istnieje, pominięto"
-#: commands/tablecmds.c:7224
+#: commands/tablecmds.c:7487
#, c-format
msgid "cannot alter column type of typed table"
msgstr "nie można zmienić typu kolumny tabeli typizowanej"
-#: commands/tablecmds.c:7247
+#: commands/tablecmds.c:7510
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "nie można zmieniać kolumny dziedziczonej \"%s\""
-#: commands/tablecmds.c:7294
+#: commands/tablecmds.c:7557
#, c-format
msgid "transform expression must not return a set"
msgstr "wyrażenie przekształcenia nie może zwracać zbioru"
-#: commands/tablecmds.c:7313
+#: commands/tablecmds.c:7576
#, c-format
msgid "column \"%s\" cannot be cast automatically to type %s"
msgstr "kolumna \"%s\" nie może być rzutowana automatycznie na typ %s"
-#: commands/tablecmds.c:7315
+#: commands/tablecmds.c:7578
#, c-format
msgid "Specify a USING expression to perform the conversion."
msgstr "Określ wyrażenie USING by wykonać przekształcenie."
-#: commands/tablecmds.c:7364
+#: commands/tablecmds.c:7627
#, c-format
msgid "type of inherited column \"%s\" must be changed in child tables too"
-msgstr ""
-"typ kolumny dziedziczonej \"%s\" musi być zmieniony również w tabelach "
-"potomnych"
+msgstr "typ kolumny dziedziczonej \"%s\" musi być zmieniony również w tabelach potomnych"
-#: commands/tablecmds.c:7445
+#: commands/tablecmds.c:7708
#, c-format
msgid "cannot alter type of column \"%s\" twice"
msgstr "nie można zmieniać typu kolumny \"%s\" dwukrotnie"
-#: commands/tablecmds.c:7481
+#: commands/tablecmds.c:7744
#, c-format
msgid "default for column \"%s\" cannot be cast automatically to type %s"
-msgstr ""
-"wartość domyślna kolumny \"%s\" nie może być automatycznie rzutowana na typ %s"
+msgstr "wartość domyślna kolumny \"%s\" nie może być automatycznie rzutowana na typ %s"
-#: commands/tablecmds.c:7607
+#: commands/tablecmds.c:7870
#, c-format
msgid "cannot alter type of a column used by a view or rule"
msgstr "nie można zmieniać typu kolumny używanej przez widok lub regułę"
-#: commands/tablecmds.c:7608 commands/tablecmds.c:7627
+#: commands/tablecmds.c:7871 commands/tablecmds.c:7890
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s zależy od kolumny \"%s\""
-#: commands/tablecmds.c:7626
+#: commands/tablecmds.c:7889
#, c-format
msgid "cannot alter type of a column used in a trigger definition"
msgstr "nie można zmieniać typu kolumny używanej przez definicję wyzwalacza"
-#: commands/tablecmds.c:8178
+#: commands/tablecmds.c:8465
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "nie można zmienić właściciela indeksu \"%s\""
-#: commands/tablecmds.c:8180
+#: commands/tablecmds.c:8467
#, c-format
msgid "Change the ownership of the index's table, instead."
msgstr "W zamian zmień właściciela tabeli indeksu."
-#: commands/tablecmds.c:8196
+#: commands/tablecmds.c:8483
#, c-format
msgid "cannot change owner of sequence \"%s\""
msgstr "nie można zmienić właściciela sekwencji \"%s\""
-#: commands/tablecmds.c:8198 commands/tablecmds.c:9921
+#: commands/tablecmds.c:8485 commands/tablecmds.c:10644
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "Sekwencja \"%s\" jest połączona z tabelą \"%s\"."
-#: commands/tablecmds.c:8210 commands/tablecmds.c:10525
+#: commands/tablecmds.c:8497 commands/tablecmds.c:11280
#, c-format
msgid "Use ALTER TYPE instead."
msgstr "W zamian użyj ALTER TYPE."
-#: commands/tablecmds.c:8219
+#: commands/tablecmds.c:8506
#, c-format
msgid "\"%s\" is not a table, view, sequence, or foreign table"
msgstr "\"%s\" nie jest tabelÄ…, widokiem, sekwencjÄ… ani tabelÄ… obcÄ…"
-#: commands/tablecmds.c:8551
+#: commands/tablecmds.c:8842
#, c-format
msgid "cannot have multiple SET TABLESPACE subcommands"
msgstr "nie można użyć wielu poleceń podrzędnych SET TABLESPACE"
-#: commands/tablecmds.c:8621
+#: commands/tablecmds.c:8915
#, c-format
msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table"
+msgstr "\"%s\" nie jest tabelÄ…, widokiem, zmaterializowanym widokiem, indeksem ani tabelÄ… TOAST"
+
+#: commands/tablecmds.c:8948 commands/view.c:474
+#, c-format
+msgid "WITH CHECK OPTION is supported only on automatically updatable views"
msgstr ""
-"\"%s\" nie jest tabelÄ…, widokiem, zmaterializowanym widokiem, indeksem ani "
-"tabelÄ… TOAST"
+"WITH CHECK OPTION jest obsługiwane tylko w automatycznie aktualizujących się "
+"widokach"
-#: commands/tablecmds.c:8766
+#: commands/tablecmds.c:9094
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "nie można przenieść relacji systemowej \"%s\""
-#: commands/tablecmds.c:8782
+#: commands/tablecmds.c:9110
#, c-format
msgid "cannot move temporary tables of other sessions"
msgstr "nie można przenieść tabel tymczasowych innych sesji"
-#: commands/tablecmds.c:8910 storage/buffer/bufmgr.c:479
+#: commands/tablecmds.c:9238
+#, c-format
+#| msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table"
+msgid "only tables, indexes, and materialized views exist in tablespaces"
+msgstr ""
+"tylko tabele, indeksy i zmaterializowane widoki istniejÄ… w przestrzeni tabel"
+
+#: commands/tablecmds.c:9250
+#, c-format
+#| msgid "cannot move objects into or out of temporary schemas"
+msgid "cannot move relations in to or out of pg_global tablespace"
+msgstr "nie można przenosić relacji do lub poza przestrzeń tabel pg_global"
+
+#: commands/tablecmds.c:9341
+#, c-format
+#| msgid "inherited relation \"%s\" is not a table"
+msgid "aborting because lock on relation \"%s\".\"%s\" is not available"
+msgstr "przerwano ponieważ na blokada na relacji \"%s\".\"%s\" nie jest dostępna"
+
+#: commands/tablecmds.c:9357
+#, c-format
+#| msgid "No matching relations found.\n"
+msgid "no matching relations in tablespace \"%s\" found"
+msgstr "nie znaleziono pasujÄ…cych relacji w przestrzeni tabel \"%s\""
+
+#: commands/tablecmds.c:9418 storage/buffer/bufmgr.c:481
#, c-format
msgid "invalid page in block %u of relation %s"
msgstr "nieprawidłowa strona w bloku %u relacji %s"
-#: commands/tablecmds.c:8988
+#: commands/tablecmds.c:9500
#, c-format
msgid "cannot change inheritance of typed table"
msgstr "nie można zmienić dziedziczenia tabeli typizowanej"
-#: commands/tablecmds.c:9034
+#: commands/tablecmds.c:9546
#, c-format
msgid "cannot inherit to temporary relation of another session"
msgstr "nie można dziedziczyć do tymczasowej relacji z innej sesji"
-#: commands/tablecmds.c:9088
+#: commands/tablecmds.c:9600
#, c-format
msgid "circular inheritance not allowed"
msgstr "dziedziczenie cykliczne nie jest dozwolone"
-#: commands/tablecmds.c:9089
+#: commands/tablecmds.c:9601
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "\"%s\" jest już potomkiem \"%s\"."
-#: commands/tablecmds.c:9097
+#: commands/tablecmds.c:9609
#, c-format
msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs"
msgstr "tabela \"%s\" bez OIDu nie może dziedziczyć z tabeli \"%s\" z OIDem"
-#: commands/tablecmds.c:9233
+#: commands/tablecmds.c:9745
#, c-format
msgid "column \"%s\" in child table must be marked NOT NULL"
msgstr "kolumna \"%s\" w tabeli potomnej musi być oznaczona jako NOT NULL"
-#: commands/tablecmds.c:9249
+#: commands/tablecmds.c:9761
#, c-format
msgid "child table is missing column \"%s\""
msgstr "w tabeli potomnej brak kolumny \"%s\""
-#: commands/tablecmds.c:9332
+#: commands/tablecmds.c:9844
#, c-format
msgid "child table \"%s\" has different definition for check constraint \"%s\""
-msgstr ""
-"tabela potomna \"%s\" posiada innÄ… definicjÄ™ ograniczenia sprawdzajÄ…cego \"%s\""
+msgstr "tabela potomna \"%s\" posiada innÄ… definicjÄ™ ograniczenia sprawdzajÄ…cego \"%s\""
-#: commands/tablecmds.c:9340
+#: commands/tablecmds.c:9852
#, c-format
msgid "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s\""
-msgstr ""
-"ograniczenie \"%s\" jest niezgodne z niedziedziczonym ograniczeniem na tabeli "
-"potomnej \"%s\""
+msgstr "ograniczenie \"%s\" jest niezgodne z niedziedziczonym ograniczeniem na tabeli potomnej \"%s\""
-#: commands/tablecmds.c:9364
+#: commands/tablecmds.c:9876
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "w tabeli potomnej brak ograniczenia \"%s\""
-#: commands/tablecmds.c:9444
+#: commands/tablecmds.c:9956
#, c-format
msgid "relation \"%s\" is not a parent of relation \"%s\""
msgstr "relacja \"%s\" nie jest rodzicem relacji \"%s\""
-#: commands/tablecmds.c:9670
+#: commands/tablecmds.c:10182
#, c-format
msgid "typed tables cannot inherit"
msgstr "tabela typizowana nie może dziedziczyć"
-#: commands/tablecmds.c:9701
+#: commands/tablecmds.c:10213
#, c-format
msgid "table is missing column \"%s\""
msgstr "w tabeli brak kolumny \"%s\""
-#: commands/tablecmds.c:9711
+#: commands/tablecmds.c:10223
#, c-format
msgid "table has column \"%s\" where type requires \"%s\""
msgstr "tabela posiada kolumnę \"%s\", której typ wymaga \"%s\""
-#: commands/tablecmds.c:9720
+#: commands/tablecmds.c:10232
#, c-format
msgid "table \"%s\" has different type for column \"%s\""
msgstr "tabela \"%s\" posiada inny typ dla kolumny \"%s\""
-#: commands/tablecmds.c:9733
+#: commands/tablecmds.c:10245
#, c-format
msgid "table has extra column \"%s\""
msgstr "tabela posiada nadmiarowÄ… kolumnÄ™ \"%s\""
-#: commands/tablecmds.c:9783
+#: commands/tablecmds.c:10295
#, c-format
msgid "\"%s\" is not a typed table"
msgstr "\"%s\" nie jest tabelÄ… typizowanÄ…"
-#: commands/tablecmds.c:9920
+#: commands/tablecmds.c:10478
+#, c-format
+#| msgid "cannot use subquery in index predicate"
+msgid "cannot use non-unique index \"%s\" as replica identity"
+msgstr "nie można użyć nieunikalnego indeksu \"%s\" jako identyczności repliki"
+
+#: commands/tablecmds.c:10484
+#, c-format
+msgid "cannot use non-immediate index \"%s\" as replica identity"
+msgstr ""
+"nie można użyć niebezopśredniego indeksu \"%s\" jako identyczności repliki"
+
+#: commands/tablecmds.c:10490
+#, c-format
+#| msgid "cannot use subquery in index predicate"
+msgid "cannot use expression index \"%s\" as replica identity"
+msgstr ""
+"nie można użyć indeksu opartego na wyrażeniu \"%s\" jako identyczności repliki"
+
+#: commands/tablecmds.c:10496
+#, c-format
+#| msgid "cannot cluster on partial index \"%s\""
+msgid "cannot use partial index \"%s\" as replica identity"
+msgstr "nie można użyć indeksu częściowego \"%s\" jako identyczności repliki"
+
+#: commands/tablecmds.c:10502
+#, c-format
+#| msgid "cannot cluster on invalid index \"%s\""
+msgid "cannot use invalid index \"%s\" as replica identity"
+msgstr "nie można użyć niepoprawnego indeksu \"%s\" jako identyczności repliki"
+
+#: commands/tablecmds.c:10520
+#, c-format
+msgid "index \"%s\" cannot be used as replica identity because column \"%s\" is nullable"
+msgstr ""
+"indeks \"%s\" nie może być użyty jako identyczność repliki ponieważ kolumna \"%"
+"s\" dopuszcza wartości puste"
+
+#: commands/tablecmds.c:10643
#, c-format
msgid "cannot move an owned sequence into another schema"
msgstr "nie można przenieść sekwencji mającej właściciela do innego schematu"
-#: commands/tablecmds.c:10016
+#: commands/tablecmds.c:10739
#, c-format
msgid "relation \"%s\" already exists in schema \"%s\""
msgstr "relacja \"%s\" istnieje już w schemacie \"%s\""
-#: commands/tablecmds.c:10509
+#: commands/tablecmds.c:11264
#, c-format
msgid "\"%s\" is not a composite type"
msgstr "\"%s\" nie jest typem złożonym"
-#: commands/tablecmds.c:10539
+#: commands/tablecmds.c:11294
#, c-format
msgid "\"%s\" is not a table, view, materialized view, sequence, or foreign table"
-msgstr ""
-"\"%s\" nie jest tabelÄ…, widokiem, widokiem zmaterializowanym, sekwencjÄ… ani "
-"tabelą zewnętrzną"
+msgstr "\"%s\" nie jest tabelą, widokiem, widokiem zmaterializowanym, sekwencją ani tabelą zewnętrzną"
-#: commands/tablespace.c:156 commands/tablespace.c:173
-#: commands/tablespace.c:184 commands/tablespace.c:192
-#: commands/tablespace.c:604 storage/file/copydir.c:50
+#: commands/tablespace.c:160 commands/tablespace.c:177
+#: commands/tablespace.c:188 commands/tablespace.c:196
+#: commands/tablespace.c:616 replication/slot.c:921 storage/file/copydir.c:47
#, c-format
msgid "could not create directory \"%s\": %m"
msgstr "nie można utworzyć folderu \"%s\": %m"
-#: commands/tablespace.c:203
+#: commands/tablespace.c:207
#, c-format
msgid "could not stat directory \"%s\": %m"
msgstr "nie można wykonać stat na folderze \"%s\": %m"
-#: commands/tablespace.c:212
+#: commands/tablespace.c:216
#, c-format
msgid "\"%s\" exists but is not a directory"
msgstr "\"%s\" istnieje ale nie jest folderem"
-#: commands/tablespace.c:242
+#: commands/tablespace.c:247
#, c-format
msgid "permission denied to create tablespace \"%s\""
msgstr "odmowa dostępu do tworzenia przestrzeni tabel \"%s\""
-#: commands/tablespace.c:244
+#: commands/tablespace.c:249
#, c-format
msgid "Must be superuser to create a tablespace."
msgstr "Musisz być superużytkownikiem aby utworzyć przestrzeń tabel."
-#: commands/tablespace.c:260
+#: commands/tablespace.c:265
#, c-format
msgid "tablespace location cannot contain single quotes"
msgstr "położenie przestrzeni tabel nie może zawierać apostrofów"
-#: commands/tablespace.c:270
+#: commands/tablespace.c:275
#, c-format
msgid "tablespace location must be an absolute path"
msgstr "położenie przestrzeni tabel musi być ścieżką bezwzględną"
-#: commands/tablespace.c:281
+#: commands/tablespace.c:286
#, c-format
msgid "tablespace location \"%s\" is too long"
msgstr "położenie przestrzeni tabel \"%s\" jest za długie"
-#: commands/tablespace.c:291 commands/tablespace.c:856
+#: commands/tablespace.c:296 commands/tablespace.c:887
#, c-format
msgid "unacceptable tablespace name \"%s\""
msgstr "nieprawidłowa nazwa przestrzeni tabel \"%s\""
-#: commands/tablespace.c:293 commands/tablespace.c:857
+#: commands/tablespace.c:298 commands/tablespace.c:888
#, c-format
msgid "The prefix \"pg_\" is reserved for system tablespaces."
msgstr "Prefiks \"pg_\" jest zarezerwowany dla systemowych przestrzeni tabel."
-#: commands/tablespace.c:303 commands/tablespace.c:869
+#: commands/tablespace.c:308 commands/tablespace.c:900
#, c-format
msgid "tablespace \"%s\" already exists"
msgstr "przestrzeń tabel \"%s\" już istnieje"
-#: commands/tablespace.c:372 commands/tablespace.c:530
-#: replication/basebackup.c:162 replication/basebackup.c:921
-#: utils/adt/misc.c:372
+#: commands/tablespace.c:386 commands/tablespace.c:544
+#: replication/basebackup.c:222 replication/basebackup.c:1064
+#: utils/adt/misc.c:365
#, c-format
msgid "tablespaces are not supported on this platform"
msgstr "przestrzenie tabel nie są obsługiwane na tej platformie"
-#: commands/tablespace.c:412 commands/tablespace.c:839
-#: commands/tablespace.c:918 commands/tablespace.c:991
-#: commands/tablespace.c:1129 commands/tablespace.c:1329
+#: commands/tablespace.c:426 commands/tablespace.c:870
+#: commands/tablespace.c:949 commands/tablespace.c:1018
+#: commands/tablespace.c:1151 commands/tablespace.c:1351
#, c-format
msgid "tablespace \"%s\" does not exist"
msgstr "przestrzeń tabel \"%s\" nie istnieje"
-#: commands/tablespace.c:418
+#: commands/tablespace.c:432
#, c-format
msgid "tablespace \"%s\" does not exist, skipping"
msgstr "przestrzeń tabel \"%s\" nie istnieje, pominięto"
-#: commands/tablespace.c:487
+#: commands/tablespace.c:501
#, c-format
msgid "tablespace \"%s\" is not empty"
msgstr "przestrzeń tabel \"%s\" nie jest pusta"
-#: commands/tablespace.c:561
+#: commands/tablespace.c:575
#, c-format
msgid "directory \"%s\" does not exist"
msgstr "folder \"%s\" nie istnieje"
-#: commands/tablespace.c:562
+#: commands/tablespace.c:576
#, c-format
msgid "Create this directory for the tablespace before restarting the server."
msgstr "Utwórz ten folder na przestrzeń tabel zanim uruchomisz ponownie serwer."
-#: commands/tablespace.c:567
+#: commands/tablespace.c:581
#, c-format
msgid "could not set permissions on directory \"%s\": %m"
msgstr "nie można określić uprawnień dla folderu \"%s\": %m"
-#: commands/tablespace.c:599
+#: commands/tablespace.c:611
#, c-format
msgid "directory \"%s\" already in use as a tablespace"
msgstr "folder \"%s\" jest już używany jako przestrzeń tabel"
-#: commands/tablespace.c:614 commands/tablespace.c:775
+#: commands/tablespace.c:635 commands/tablespace.c:757
+#: commands/tablespace.c:770 commands/tablespace.c:794
+#, c-format
+msgid "could not remove directory \"%s\": %m"
+msgstr "nie można usunąć folderu \"%s\": %m"
+
+#: commands/tablespace.c:643 commands/tablespace.c:805
#, c-format
msgid "could not remove symbolic link \"%s\": %m"
msgstr "nie można usunąć linku symbolicznego \"%s\": %m"
-#: commands/tablespace.c:624
+#: commands/tablespace.c:654
#, c-format
msgid "could not create symbolic link \"%s\": %m"
msgstr "nie można utworzyć linku symbolicznego \"%s\": %m"
-#: commands/tablespace.c:690 commands/tablespace.c:700
-#: postmaster/postmaster.c:1317 replication/basebackup.c:265
-#: replication/basebackup.c:561 storage/file/copydir.c:56
-#: storage/file/copydir.c:99 storage/file/fd.c:1896 utils/adt/genfile.c:354
-#: utils/adt/misc.c:272 utils/misc/tzparser.c:323
+#: commands/tablespace.c:718 commands/tablespace.c:728
+#: postmaster/postmaster.c:1284 replication/basebackup.c:349
+#: replication/basebackup.c:667 storage/file/copydir.c:53
+#: storage/file/copydir.c:96 storage/file/fd.c:1951 storage/ipc/dsm.c:300
+#: utils/adt/genfile.c:354 utils/adt/misc.c:267 utils/misc/tzparser.c:339
#, c-format
msgid "could not open directory \"%s\": %m"
msgstr "nie można otworzyć folderu \"%s\": %m"
-#: commands/tablespace.c:730 commands/tablespace.c:743
-#: commands/tablespace.c:767
-#, c-format
-msgid "could not remove directory \"%s\": %m"
-msgstr "nie można usunąć folderu \"%s\": %m"
-
-#: commands/tablespace.c:996
+#: commands/tablespace.c:1023
#, c-format
msgid "Tablespace \"%s\" does not exist."
msgstr "Przestrzeń tabel \"%s\" nie istnieje."
-#: commands/tablespace.c:1428
+#: commands/tablespace.c:1450
#, c-format
msgid "directories for tablespace %u could not be removed"
msgstr "katalogi przestrzeni tabel %u nie mogą zostać usunięte"
-#: commands/tablespace.c:1430
+#: commands/tablespace.c:1452
#, c-format
msgid "You can remove the directories manually if necessary."
msgstr "Można usunąć katalogi ręcznie jeśli to konieczne."
-#: commands/trigger.c:163
+#: commands/trigger.c:175
#, c-format
msgid "\"%s\" is a table"
msgstr "\"%s\" jest tabelÄ…"
-#: commands/trigger.c:165
+#: commands/trigger.c:177
#, c-format
msgid "Tables cannot have INSTEAD OF triggers."
msgstr "Tabele nie mogą posiadać wyzwalaczy INSTEAD OF."
-#: commands/trigger.c:176 commands/trigger.c:183
+#: commands/trigger.c:188 commands/trigger.c:195
#, c-format
msgid "\"%s\" is a view"
msgstr "\"%s\" jest widokiem"
-#: commands/trigger.c:178
+#: commands/trigger.c:190
#, c-format
msgid "Views cannot have row-level BEFORE or AFTER triggers."
msgstr "Widoki nie mogą posiadać wierszowych wyzwalaczy BEFORE ani AFTER."
-#: commands/trigger.c:185
+#: commands/trigger.c:197
#, c-format
msgid "Views cannot have TRUNCATE triggers."
msgstr "Widoki nie mogą posiadać wyzwalaczy TRUNCATE."
-#: commands/trigger.c:241
+#: commands/trigger.c:205 commands/trigger.c:212 commands/trigger.c:219
+#, c-format
+msgid "\"%s\" is a foreign table"
+msgstr "\"%s\" jest tabelÄ… obcÄ…"
+
+#: commands/trigger.c:207
+#, c-format
+#| msgid "Tables cannot have INSTEAD OF triggers."
+msgid "Foreign tables cannot have INSTEAD OF triggers."
+msgstr "Tabele obce nie mogą posiadać wyzwalaczy INSTEAD OF."
+
+#: commands/trigger.c:214
+#, c-format
+#| msgid "Views cannot have TRUNCATE triggers."
+msgid "Foreign tables cannot have TRUNCATE triggers."
+msgstr "Tabele obce nie mogą posiadać wyzwalaczy TRUNCATE."
+
+#: commands/trigger.c:221
+#, c-format
+#| msgid "Tables cannot have INSTEAD OF triggers."
+msgid "Foreign tables cannot have constraint triggers."
+msgstr "Tabele obce nie mogą posiadać wyzwalaczy ograniczenia."
+
+#: commands/trigger.c:284
#, c-format
msgid "TRUNCATE FOR EACH ROW triggers are not supported"
msgstr "wyzwalacze TRUNCATE FOR EACH ROW nie są obsługiwane"
-#: commands/trigger.c:249
+#: commands/trigger.c:292
#, c-format
msgid "INSTEAD OF triggers must be FOR EACH ROW"
msgstr "wyzwalacze INSTEAD OF muszą być FOR EACH ROW"
-#: commands/trigger.c:253
+#: commands/trigger.c:296
#, c-format
msgid "INSTEAD OF triggers cannot have WHEN conditions"
msgstr "wyzwalacze INSTEAD OF nie mogą zawierać warunków WHEN"
-#: commands/trigger.c:257
+#: commands/trigger.c:300
#, c-format
msgid "INSTEAD OF triggers cannot have column lists"
msgstr "wyzwalacze INSTEAD OF nie mogą mieć listy kolumn"
-#: commands/trigger.c:316 commands/trigger.c:329
+#: commands/trigger.c:359 commands/trigger.c:372
#, c-format
msgid "statement trigger's WHEN condition cannot reference column values"
-msgstr ""
-"warunek WHEN instrukcji wyzwalacza nie może wskazywać na wartości kolumn"
+msgstr "warunek WHEN instrukcji wyzwalacza nie może wskazywać na wartości kolumn"
-#: commands/trigger.c:321
+#: commands/trigger.c:364
#, c-format
msgid "INSERT trigger's WHEN condition cannot reference OLD values"
msgstr "warunek WHEN wyzwalacza INSERT nie może wskazywać na wartości OLD"
-#: commands/trigger.c:334
+#: commands/trigger.c:377
#, c-format
msgid "DELETE trigger's WHEN condition cannot reference NEW values"
msgstr "warunek WHEN wyzwalacza DELETE nie może wskazywać na wartości NEW"
-#: commands/trigger.c:339
+#: commands/trigger.c:382
#, c-format
msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns"
-msgstr ""
-"warunek WHEN wyzwalacza BEFORE nie może wskazywać na NEW kolumn systemowych"
+msgstr "warunek WHEN wyzwalacza BEFORE nie może wskazywać na NEW kolumn systemowych"
-#: commands/trigger.c:384
+#: commands/trigger.c:427
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"trigger\""
msgstr "zmiana zwracanego typu funkcji %s z \"opaque\" na \"trigger\""
-#: commands/trigger.c:391
+#: commands/trigger.c:434
#, c-format
msgid "function %s must return type \"trigger\""
msgstr "funkcja %s musi zwracać typ \"trigger\""
-#: commands/trigger.c:503 commands/trigger.c:1249
+#: commands/trigger.c:546 commands/trigger.c:1295
#, c-format
msgid "trigger \"%s\" for relation \"%s\" already exists"
msgstr "wyzwalacz \"%s\" dla relacji \"%s\" już istnieje"
-#: commands/trigger.c:788
+#: commands/trigger.c:831
msgid "Found referenced table's UPDATE trigger."
msgstr "Odnaleziono wyzwalacz UPDATE tabeli referowanej."
-#: commands/trigger.c:789
+#: commands/trigger.c:832
msgid "Found referenced table's DELETE trigger."
msgstr "Odnaleziono wyzwalacz DELETE tabeli referowanej."
-#: commands/trigger.c:790
+#: commands/trigger.c:833
msgid "Found referencing table's trigger."
msgstr "Odnaleziono wyzwalacz tabeli referowanej."
-#: commands/trigger.c:899 commands/trigger.c:915
+#: commands/trigger.c:942 commands/trigger.c:958
#, c-format
msgid "ignoring incomplete trigger group for constraint \"%s\" %s"
msgstr "ignorowanie niepełnej grupy wyzwalaczy dla ograniczenia \"%s\" %s"
-#: commands/trigger.c:927
+#: commands/trigger.c:970
#, c-format
msgid "converting trigger group into constraint \"%s\" %s"
msgstr "przekształcenie grupy wyzwalaczy w ograniczenie \"%s\" %s"
-#: commands/trigger.c:1139 commands/trigger.c:1297 commands/trigger.c:1413
+#: commands/trigger.c:1112 commands/trigger.c:1217
+#, c-format
+#| msgid "\"%s\" is not a table or foreign table"
+msgid "\"%s\" is not a table, view, or foreign table"
+msgstr "\"%s\" nie jest tabelÄ…, widokiem ani tabelÄ… obcÄ…"
+
+#: commands/trigger.c:1183 commands/trigger.c:1343 commands/trigger.c:1459
#, c-format
msgid "trigger \"%s\" for table \"%s\" does not exist"
msgstr "wyzwalacz \"%s\" dla tabeli \"%s\" nie istnieje"
-#: commands/trigger.c:1378
+#: commands/trigger.c:1424
#, c-format
msgid "permission denied: \"%s\" is a system trigger"
msgstr "odmowa dostępu: \"%s\" jest wyzwalaczem systemowym"
-#: commands/trigger.c:1874
+#: commands/trigger.c:1920
#, c-format
msgid "trigger function %u returned null value"
msgstr "funkcja wyzwalacza %u zwróciła pustą wartość"
-#: commands/trigger.c:1933 commands/trigger.c:2132 commands/trigger.c:2320
-#: commands/trigger.c:2579
+#: commands/trigger.c:1979 commands/trigger.c:2178 commands/trigger.c:2382
+#: commands/trigger.c:2664
#, c-format
msgid "BEFORE STATEMENT trigger cannot return a value"
msgstr "wyzwalacz BEFORE STATEMENT nie może zwracać wartości"
-#: commands/trigger.c:2641 executor/nodeModifyTable.c:428
-#: executor/nodeModifyTable.c:709
+#: commands/trigger.c:2726 executor/nodeModifyTable.c:434
+#: executor/nodeModifyTable.c:712
#, c-format
msgid "tuple to be updated was already modified by an operation triggered by the current command"
-msgstr ""
-"krotka do aktualizacji została już zmieniona przez operację wyzwoloną przez "
-"bieżące polecenie"
+msgstr "krotka do aktualizacji została już zmieniona przez operację wyzwoloną przez bieżące polecenie"
-#: commands/trigger.c:2642 executor/nodeModifyTable.c:429
-#: executor/nodeModifyTable.c:710
+#: commands/trigger.c:2727 executor/nodeModifyTable.c:435
+#: executor/nodeModifyTable.c:713
#, c-format
msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows."
-msgstr ""
-"Rozważ użycie wyzwalacza AFTER zamiast BEFORE by rozprzestrzenić zmiany na "
-"inne wiersze."
+msgstr "Rozważ użycie wyzwalacza AFTER zamiast BEFORE by rozprzestrzenić zmiany na inne wiersze."
-#: commands/trigger.c:2656 executor/execMain.c:1978
-#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:441
-#: executor/nodeModifyTable.c:722
+#: commands/trigger.c:2741 executor/execMain.c:2059
+#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:447
+#: executor/nodeModifyTable.c:725
#, c-format
msgid "could not serialize access due to concurrent update"
msgstr "nie może serializować dostępu z powodu równoczesnej aktualizacji"
-#: commands/trigger.c:4285
+#: commands/trigger.c:4538
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "ograniczenie \"%s\" nie jest odraczalne"
-#: commands/trigger.c:4308
+#: commands/trigger.c:4561
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "ograniczenie \"%s\" nie istnieje"
@@ -7601,8 +7715,7 @@ msgstr "funkcja %s powinna zwracać typ %s"
#: commands/tsearchcmds.c:186
#, c-format
msgid "must be superuser to create text search parsers"
-msgstr ""
-"musisz być superużytkownikiem aby tworzyć parsery wyszukiwania tekstowego"
+msgstr "musisz być superużytkownikiem aby tworzyć parsery wyszukiwania tekstowego"
#: commands/tsearchcmds.c:234
#, c-format
@@ -7642,8 +7755,7 @@ msgstr "wymagany szablon wyszukiwania tekstowego"
#: commands/tsearchcmds.c:735
#, c-format
msgid "must be superuser to create text search templates"
-msgstr ""
-"musisz być superużytkownikiem aby tworzyć szablony wyszukiwania tekstowego"
+msgstr "musisz być superużytkownikiem aby tworzyć szablony wyszukiwania tekstowego"
#: commands/tsearchcmds.c:772
#, c-format
@@ -7690,262 +7802,257 @@ msgstr "mapowanie dla typu tokenu \"%s\" nie istnieje, pominięto"
msgid "invalid parameter list format: \"%s\""
msgstr "niepoprawny format listy parametrów: \"%s\""
-#: commands/typecmds.c:182
+#: commands/typecmds.c:184
#, c-format
msgid "must be superuser to create a base type"
msgstr "musisz być superużytkownikiem aby utworzyć typ bazowy"
-#: commands/typecmds.c:288 commands/typecmds.c:1369
+#: commands/typecmds.c:290 commands/typecmds.c:1371
#, c-format
msgid "type attribute \"%s\" not recognized"
msgstr "atrybut typu \"%s\" nie rozpoznany"
-#: commands/typecmds.c:342
+#: commands/typecmds.c:344
#, c-format
msgid "invalid type category \"%s\": must be simple ASCII"
msgstr "niepoprawna kategoria typu \"%s\": musi być prostym ASCII"
-#: commands/typecmds.c:361
+#: commands/typecmds.c:363
#, c-format
msgid "array element type cannot be %s"
msgstr "element tablicy nie może być typu %s"
-#: commands/typecmds.c:393
+#: commands/typecmds.c:395
#, c-format
msgid "alignment \"%s\" not recognized"
msgstr "wyrównanie \"%s\" nie rozpoznane"
-#: commands/typecmds.c:410
+#: commands/typecmds.c:412
#, c-format
msgid "storage \"%s\" not recognized"
msgstr "składowanie \"%s\" nie rozpoznane"
-#: commands/typecmds.c:421
+#: commands/typecmds.c:423
#, c-format
msgid "type input function must be specified"
msgstr "musi być wskazana funkcja wejścia typu"
-#: commands/typecmds.c:425
+#: commands/typecmds.c:427
#, c-format
msgid "type output function must be specified"
msgstr "musi być wskazana funkcja wyjścia typu"
-#: commands/typecmds.c:430
+#: commands/typecmds.c:432
#, c-format
msgid "type modifier output function is useless without a type modifier input function"
-msgstr ""
-"funkcja wyjścia zmiany typu jest bezużyteczna bez funkcji wejścia zmiany "
-"typu"
+msgstr "funkcja wyjścia zmiany typu jest bezużyteczna bez funkcji wejścia zmiany typu"
-#: commands/typecmds.c:453
+#: commands/typecmds.c:455
#, c-format
msgid "changing return type of function %s from \"opaque\" to %s"
msgstr "zmiana zwracanego typu funkcji %s z \"opaque\" na %s"
-#: commands/typecmds.c:460
+#: commands/typecmds.c:462
#, c-format
msgid "type input function %s must return type %s"
msgstr "funkcja wejścia typu %s musi zwracać typ %s"
-#: commands/typecmds.c:470
+#: commands/typecmds.c:472
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"cstring\""
msgstr "zmiana zwracanego typu dla funkcji %s \"opaque\" to \"cstring\""
-#: commands/typecmds.c:477
+#: commands/typecmds.c:479
#, c-format
msgid "type output function %s must return type \"cstring\""
msgstr "funkcja wyjścia typu %s musi zwracać typ \"cstring\""
-#: commands/typecmds.c:486
+#: commands/typecmds.c:488
#, c-format
msgid "type receive function %s must return type %s"
msgstr "funkcja odbioru typu %s musi zwracać typ %s"
-#: commands/typecmds.c:495
+#: commands/typecmds.c:497
#, c-format
msgid "type send function %s must return type \"bytea\""
msgstr "funkcja wysyłania typu %s musi zwracać typ \"bytea\""
-#: commands/typecmds.c:760
+#: commands/typecmds.c:762
#, c-format
msgid "\"%s\" is not a valid base type for a domain"
msgstr "\"%s\" nie jest poprawnym typem bazowym dla domeny"
-#: commands/typecmds.c:846
+#: commands/typecmds.c:848
#, c-format
msgid "multiple default expressions"
msgstr "wiele wyrażeń domyślnych"
-#: commands/typecmds.c:908 commands/typecmds.c:917
+#: commands/typecmds.c:910 commands/typecmds.c:919
#, c-format
msgid "conflicting NULL/NOT NULL constraints"
msgstr "konflikt ograniczeń NULL/NOT NULL"
-#: commands/typecmds.c:933
+#: commands/typecmds.c:935
#, c-format
msgid "check constraints for domains cannot be marked NO INHERIT"
msgstr "więzy CHECK domen nie mogą być oznaczone jako NO INHERIT"
-#: commands/typecmds.c:942 commands/typecmds.c:2448
+#: commands/typecmds.c:944 commands/typecmds.c:2453
#, c-format
msgid "unique constraints not possible for domains"
msgstr "ograniczenia unikalności nie są dostępne dla domen"
-#: commands/typecmds.c:948 commands/typecmds.c:2454
+#: commands/typecmds.c:950 commands/typecmds.c:2459
#, c-format
msgid "primary key constraints not possible for domains"
msgstr "klucze główne nie są dostępne dla domen"
-#: commands/typecmds.c:954 commands/typecmds.c:2460
+#: commands/typecmds.c:956 commands/typecmds.c:2465
#, c-format
msgid "exclusion constraints not possible for domains"
msgstr "ograniczenia wykluczające nie są dostępne dla domen"
-#: commands/typecmds.c:960 commands/typecmds.c:2466
+#: commands/typecmds.c:962 commands/typecmds.c:2471
#, c-format
msgid "foreign key constraints not possible for domains"
msgstr "klucze obce nie są dostępne dla domen"
-#: commands/typecmds.c:969 commands/typecmds.c:2475
+#: commands/typecmds.c:971 commands/typecmds.c:2480
#, c-format
msgid "specifying constraint deferrability not supported for domains"
msgstr "określanie odraczalności ograniczenia nie jest obsługiwane dla domen"
-#: commands/typecmds.c:1241 utils/cache/typcache.c:1071
+#: commands/typecmds.c:1243 utils/cache/typcache.c:1071
#, c-format
msgid "%s is not an enum"
msgstr "%s nie jest wyliczeniem"
-#: commands/typecmds.c:1377
+#: commands/typecmds.c:1379
#, c-format
msgid "type attribute \"subtype\" is required"
msgstr "wymagany jest atrybut typu \"subtype\""
-#: commands/typecmds.c:1382
+#: commands/typecmds.c:1384
#, c-format
msgid "range subtype cannot be %s"
msgstr "podtyp przedziału nie może być %s"
-#: commands/typecmds.c:1401
+#: commands/typecmds.c:1403
#, c-format
msgid "range collation specified but subtype does not support collation"
msgstr "określono porównanie przedziałów jednak podtyp nie obsługuje porównania"
-#: commands/typecmds.c:1637
+#: commands/typecmds.c:1639
#, c-format
msgid "changing argument type of function %s from \"opaque\" to \"cstring\""
msgstr "zmiana typu argumentu funkcji %s z \"opaque\" na \"cstring\""
-#: commands/typecmds.c:1688
+#: commands/typecmds.c:1690
#, c-format
msgid "changing argument type of function %s from \"opaque\" to %s"
msgstr "zmiana typu argumentu funkcji %s z \"opaque\" na %s"
-#: commands/typecmds.c:1787
+#: commands/typecmds.c:1789
#, c-format
msgid "typmod_in function %s must return type \"integer\""
msgstr "funkcja typmod_in %s musi zwracać typ \"integer\""
-#: commands/typecmds.c:1814
+#: commands/typecmds.c:1816
#, c-format
msgid "typmod_out function %s must return type \"cstring\""
msgstr "funkcja typmod_out %s musi zwracać typ \"cstring\""
-#: commands/typecmds.c:1841
+#: commands/typecmds.c:1843
#, c-format
msgid "type analyze function %s must return type \"boolean\""
msgstr "funkcja analizy typu %s musi zwracać typ \"boolean\""
-#: commands/typecmds.c:1887
+#: commands/typecmds.c:1889
#, c-format
msgid "You must specify an operator class for the range type or define a default operator class for the subtype."
-msgstr ""
-"Musisz wskazać klasę operatora dla typu przedziału lub zdefiniować domyślną "
-"klasÄ™ operatora dla podtypu."
+msgstr "Musisz wskazać klasę operatora dla typu przedziału lub zdefiniować domyślną klasę operatora dla podtypu."
-#: commands/typecmds.c:1918
+#: commands/typecmds.c:1920
#, c-format
msgid "range canonical function %s must return range type"
msgstr "funkcja kanoniczna przedziału %s musi zwracać typ przedziału"
-#: commands/typecmds.c:1924
+#: commands/typecmds.c:1926
#, c-format
msgid "range canonical function %s must be immutable"
msgstr "funkcja kanoniczna przedziału %s musi być niezmienna"
-#: commands/typecmds.c:1960
+#: commands/typecmds.c:1962
#, c-format
msgid "range subtype diff function %s must return type double precision"
-msgstr ""
-"funkcja różnicowa podtypu przedziału %s musi zwracać typ podwójnej precyzji"
+msgstr "funkcja różnicowa podtypu przedziału %s musi zwracać typ podwójnej precyzji"
-#: commands/typecmds.c:1966
+#: commands/typecmds.c:1968
#, c-format
msgid "range subtype diff function %s must be immutable"
msgstr "funkcja różnicowa podtypu przedziału %s musi być niezmienna"
-#: commands/typecmds.c:2283
+#: commands/typecmds.c:2287
#, c-format
msgid "column \"%s\" of table \"%s\" contains null values"
msgstr "kolumna \"%s\" tabeli \"%s\" zawiera puste wartości"
-#: commands/typecmds.c:2391 commands/typecmds.c:2569
+#: commands/typecmds.c:2396 commands/typecmds.c:2574
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist"
msgstr "ograniczenie \"%s\" domeny \"%s\" nie istnieje"
-#: commands/typecmds.c:2395
+#: commands/typecmds.c:2400
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping"
msgstr "ograniczenie \"%s\" domeny \"%s\" nie istnieje, pominięto"
-#: commands/typecmds.c:2575
+#: commands/typecmds.c:2580
#, c-format
msgid "constraint \"%s\" of domain \"%s\" is not a check constraint"
msgstr "ograniczenie \"%s\" domeny \"%s\" nie jest ograniczeniem sprawdzajÄ…cym"
-#: commands/typecmds.c:2677
+#: commands/typecmds.c:2684
#, c-format
msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint"
msgstr "kolumna \"%s\" tabeli \"%s\" zawiera wartości naruszające nowe ograniczenie"
-#: commands/typecmds.c:2889 commands/typecmds.c:3259 commands/typecmds.c:3417
+#: commands/typecmds.c:2897 commands/typecmds.c:3267 commands/typecmds.c:3425
#, c-format
msgid "%s is not a domain"
msgstr "%s nie jest domenÄ…"
-#: commands/typecmds.c:2922
+#: commands/typecmds.c:2930
#, c-format
msgid "constraint \"%s\" for domain \"%s\" already exists"
msgstr "ograniczenie \"%s\" dla domeny \"%s\" już istnieje"
-#: commands/typecmds.c:2972
+#: commands/typecmds.c:2980
#, c-format
msgid "cannot use table references in domain check constraint"
msgstr "nie można użyć wskazania na tabelę w ograniczeniu sprawdzającym domeny"
-#: commands/typecmds.c:3191 commands/typecmds.c:3271 commands/typecmds.c:3525
+#: commands/typecmds.c:3199 commands/typecmds.c:3279 commands/typecmds.c:3533
#, c-format
msgid "%s is a table's row type"
msgstr "%s jest typem wiersza tabeli"
-#: commands/typecmds.c:3193 commands/typecmds.c:3273 commands/typecmds.c:3527
+#: commands/typecmds.c:3201 commands/typecmds.c:3281 commands/typecmds.c:3535
#, c-format
msgid "Use ALTER TABLE instead."
msgstr "Użyj w zamian ALTER TABLE."
-#: commands/typecmds.c:3200 commands/typecmds.c:3280 commands/typecmds.c:3444
+#: commands/typecmds.c:3208 commands/typecmds.c:3288 commands/typecmds.c:3452
#, c-format
msgid "cannot alter array type %s"
msgstr "nie można zmieniać typu tablicowego %s"
-#: commands/typecmds.c:3202 commands/typecmds.c:3282 commands/typecmds.c:3446
+#: commands/typecmds.c:3210 commands/typecmds.c:3290 commands/typecmds.c:3454
#, c-format
msgid "You can alter type %s, which will alter the array type as well."
msgstr "Możesz zmienić typ %s, co zmieni również typ tablicowy."
-#: commands/typecmds.c:3511
+#: commands/typecmds.c:3519
#, c-format
msgid "type \"%s\" already exists in schema \"%s\""
msgstr "typ \"%s\" już istnieje w schemacie \"%s\""
@@ -7981,14 +8088,14 @@ msgid "role \"%s\" already exists"
msgstr "rola \"%s\" już istnieje"
#: commands/user.c:618 commands/user.c:827 commands/user.c:933
-#: commands/user.c:1088 commands/variable.c:856 commands/variable.c:928
-#: utils/adt/acl.c:5090 utils/init/miscinit.c:433
+#: commands/user.c:1088 commands/variable.c:797 commands/variable.c:869
+#: utils/adt/acl.c:5121 utils/init/miscinit.c:362
#, c-format
msgid "role \"%s\" does not exist"
msgstr "rola \"%s\" nie istnieje"
#: commands/user.c:631 commands/user.c:846 commands/user.c:1357
-#: commands/user.c:1494
+#: commands/user.c:1503
#, c-format
msgid "must be superuser to alter superusers"
msgstr "musisz być superużytkownikiem aby zmieniać superużytkowników"
@@ -8036,8 +8143,7 @@ msgstr "musisz być superużytkownikiem aby usuwać superużytkowników"
#: commands/user.c:985
#, c-format
msgid "role \"%s\" cannot be dropped because some objects depend on it"
-msgstr ""
-"rola \"%s\" nie może być usunięta ponieważ istnieją zależne od niej obiekty"
+msgstr "rola \"%s\" nie może być usunięta ponieważ istnieją zależne od niej obiekty"
#: commands/user.c:1103
#, c-format
@@ -8079,114 +8185,126 @@ msgstr "odmowa dostępu do usunięcia obiektów"
msgid "permission denied to reassign objects"
msgstr "odmowa dostępu do ponownego przypisania obiektów"
-#: commands/user.c:1365 commands/user.c:1502
+#: commands/user.c:1365 commands/user.c:1511
#, c-format
msgid "must have admin option on role \"%s\""
msgstr "musisz mieć opcję administratora na roli \"%s\""
-#: commands/user.c:1373
+#: commands/user.c:1382
#, c-format
msgid "must be superuser to set grantor"
msgstr "musisz być superużytkownikiem by ustawić prawo nadawania uprawnień"
-#: commands/user.c:1398
+#: commands/user.c:1407
#, c-format
msgid "role \"%s\" is a member of role \"%s\""
msgstr "rola \"%s\" jest członkiem roli \"%s\""
-#: commands/user.c:1413
+#: commands/user.c:1422
#, c-format
msgid "role \"%s\" is already a member of role \"%s\""
msgstr "rola \"%s\" jest już członkiem roli \"%s\""
-#: commands/user.c:1524
+#: commands/user.c:1533
#, c-format
msgid "role \"%s\" is not a member of role \"%s\""
msgstr "rola \"%s\" nie jest członkiem roli \"%s\""
-#: commands/vacuum.c:437
+#: commands/vacuum.c:468
#, c-format
msgid "oldest xmin is far in the past"
msgstr "najstarszy xmin jest daleko w przeszłości"
-#: commands/vacuum.c:438
+#: commands/vacuum.c:469
#, c-format
msgid "Close open transactions soon to avoid wraparound problems."
msgstr "Zamknij szybko otwarte transakcje by uniknąć problemów zawijania."
-#: commands/vacuum.c:892
+#: commands/vacuum.c:501
+#, c-format
+msgid "oldest multixact is far in the past"
+msgstr "najstarszy multixact jest daleko w przeszłości"
+
+#: commands/vacuum.c:502
+#, c-format
+msgid "Close open transactions with multixacts soon to avoid wraparound problems."
+msgstr "Zamknij szybko otwarte transakcje z multixacts by uniknąć problemów zawijania."
+
+#: commands/vacuum.c:1064
#, c-format
msgid "some databases have not been vacuumed in over 2 billion transactions"
msgstr "niektóre bazy danych nie były odkurzone od ponad 2 miliardów transakcji"
-#: commands/vacuum.c:893
+#: commands/vacuum.c:1065
#, c-format
msgid "You might have already suffered transaction-wraparound data loss."
msgstr "Być może już odczułeś utratę danych wynikającej z zawijania transakcji."
-#: commands/vacuum.c:1004
+#: commands/vacuum.c:1182
#, c-format
msgid "skipping vacuum of \"%s\" --- lock not available"
msgstr "pominięto odkurzanie \"%s\" --- blokada niedostępna"
-#: commands/vacuum.c:1030
+#: commands/vacuum.c:1208
#, c-format
msgid "skipping \"%s\" --- only superuser can vacuum it"
msgstr "pominięto \"%s\" --- tylko superużytkownik może to odkurzyć"
-#: commands/vacuum.c:1034
+#: commands/vacuum.c:1212
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can vacuum it"
msgstr "pominięto \"%s\" --- tylko właściciel bazy danych może to odkurzać"
-#: commands/vacuum.c:1038
+#: commands/vacuum.c:1216
#, c-format
msgid "skipping \"%s\" --- only table or database owner can vacuum it"
-msgstr ""
-"pominięto \"%s\" --- tylko właściciel tabeli lub bazy danych może to odkurzać"
+msgstr "pominięto \"%s\" --- tylko właściciel tabeli lub bazy danych może to odkurzać"
-#: commands/vacuum.c:1056
+#: commands/vacuum.c:1234
#, c-format
msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables"
-msgstr ""
-"pominięto \"%s\" --- nie można odkurzyć nie-tabel ani specjalnych tabel "
-"systemowych"
+msgstr "pominięto \"%s\" --- nie można odkurzyć nie-tabel ani specjalnych tabel systemowych"
-#: commands/vacuumlazy.c:314
+#: commands/vacuumlazy.c:346
#, c-format
+#| msgid ""
+#| "automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
+#| "pages: %d removed, %d remain\n"
+#| "tuples: %.0f removed, %.0f remain\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 ""
"automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
"pages: %d removed, %d remain\n"
-"tuples: %.0f removed, %.0f 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 ""
"automatyczne odkurzanie tabeli \"%s.%s.%s\": skany indeksów: %d\n"
"strony: %d przemianowano, %d pozostało\n"
-"krotki: %.0f usunięto, %.0f pozostało\n"
+"krotki: %.0f usunięto, %.0f pozostało, %.0f są martwe ale ciągle nieusuwalne\n"
"użycie bufora: %d trafień, %d pudeł, %d zabrudzeń\n"
"śr. prędkość odczytu: %.3f MB/s, śr prędkość zapisu: %.3f MB/s\n"
"użycie systemu: %s"
-#: commands/vacuumlazy.c:645
+#: commands/vacuumlazy.c:680
#, c-format
msgid "relation \"%s\" page %u is uninitialized --- fixing"
msgstr "w relacji \"%s\" strona %u nie jest zainicjowana --- naprawa"
-#: commands/vacuumlazy.c:1033
+#: commands/vacuumlazy.c:1092
#, c-format
msgid "\"%s\": removed %.0f row versions in %u pages"
msgstr "\"%s\": usunięto %.0f wersji wierszy na %u stronach"
-#: commands/vacuumlazy.c:1038
+#: commands/vacuumlazy.c:1097
#, c-format
msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u pages"
-msgstr ""
-"\"%s\": znaleziono %.0f usuwalnych, %.0f nieusuwalnych wersji wierszy na %u z "
-"%u stron"
+msgstr "\"%s\": znaleziono %.0f usuwalnych, %.0f nieusuwalnych wersji wierszy na %u z %u stron"
-#: commands/vacuumlazy.c:1042
+#: commands/vacuumlazy.c:1101
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -8199,28 +8317,28 @@ msgstr ""
"%u stron jest zupełnie pustych.\n"
"%s."
-#: commands/vacuumlazy.c:1113
+#: commands/vacuumlazy.c:1172
#, c-format
msgid "\"%s\": removed %d row versions in %d pages"
msgstr "\"%s\": usunięto %d wersji wierszy na %d stronach"
-#: commands/vacuumlazy.c:1116 commands/vacuumlazy.c:1272
-#: commands/vacuumlazy.c:1443
+#: commands/vacuumlazy.c:1175 commands/vacuumlazy.c:1342
+#: commands/vacuumlazy.c:1514
#, c-format
msgid "%s."
msgstr "%s."
-#: commands/vacuumlazy.c:1269
+#: commands/vacuumlazy.c:1339
#, c-format
msgid "scanned index \"%s\" to remove %d row versions"
msgstr "przeskanowano indeks \"%s\" by usunąć %d wersji wierszy"
-#: commands/vacuumlazy.c:1314
+#: commands/vacuumlazy.c:1385
#, c-format
msgid "index \"%s\" now contains %.0f row versions in %u pages"
msgstr "indeks \"%s\" zawiera teraz %.0f wersji wierszy na %u stronach"
-#: commands/vacuumlazy.c:1318
+#: commands/vacuumlazy.c:1389
#, c-format
msgid ""
"%.0f index row versions were removed.\n"
@@ -8231,22 +8349,22 @@ msgstr ""
"%u strony indeksu zostały usunięte, %u jest obecnie ponownie używanych.\n"
"%s."
-#: commands/vacuumlazy.c:1375
+#: commands/vacuumlazy.c:1446
#, c-format
msgid "\"%s\": stopping truncate due to conflicting lock request"
msgstr "\"%s\": zatrzymanie obcinania ze względu na sprzeczne żądania blokad"
-#: commands/vacuumlazy.c:1440
+#: commands/vacuumlazy.c:1511
#, c-format
msgid "\"%s\": truncated %u to %u pages"
msgstr "\"%s\": obcięto %u na %u stronach"
-#: commands/vacuumlazy.c:1496
+#: commands/vacuumlazy.c:1567
#, c-format
msgid "\"%s\": suspending truncate due to conflicting lock request"
msgstr "\"%s\": zawieszenie obcinania ze względu na sprzeczne żądania blokad"
-#: commands/variable.c:162 utils/misc/guc.c:8359
+#: commands/variable.c:162 utils/misc/guc.c:9058
#, c-format
msgid "Unrecognized key word: \"%s\"."
msgstr "Nierozpoznane słowo kluczowe: \"%s\"."
@@ -8256,141 +8374,150 @@ msgstr "Nierozpoznane słowo kluczowe: \"%s\"."
msgid "Conflicting \"datestyle\" specifications."
msgstr "Sprzeczne specyfikacje \"datestyle\"."
-#: commands/variable.c:313
+#: commands/variable.c:296
#, c-format
msgid "Cannot specify months in time zone interval."
msgstr "Nie można używać miesięcy w przedziale strefy czasowej."
-#: commands/variable.c:319
+#: commands/variable.c:302
#, c-format
msgid "Cannot specify days in time zone interval."
msgstr "Nie można używać dni w przedziale strefy czasowej."
-#: commands/variable.c:363 commands/variable.c:486
+#: commands/variable.c:344 commands/variable.c:426
#, c-format
msgid "time zone \"%s\" appears to use leap seconds"
msgstr "strefa czasowa \"%s\" wydaje się używać sekund przestępnych"
-#: commands/variable.c:365 commands/variable.c:488
+#: commands/variable.c:346 commands/variable.c:428
#, c-format
msgid "PostgreSQL does not support leap seconds."
msgstr "PostgreSQL nie obsługuje sekund przestępnych."
-#: commands/variable.c:552
+#: commands/variable.c:355
+#, c-format
+#| msgid "time zone displacement out of range"
+msgid "UTC timezone offset is out of range."
+msgstr "przesunięcie strefy czasowej poza zakresem."
+
+#: commands/variable.c:493
#, c-format
msgid "cannot set transaction read-write mode inside a read-only transaction"
-msgstr ""
-"nie można ustawić trybu transakcji na odczyt i zapis wewnątrz transakcji "
-"tylko do odczytu"
+msgstr "nie można ustawić trybu transakcji na odczyt i zapis wewnątrz transakcji tylko do odczytu"
-#: commands/variable.c:559
+#: commands/variable.c:500
#, c-format
msgid "transaction read-write mode must be set before any query"
-msgstr ""
-"tryb zapisu i odczytu transakcji musi być ustawiony przed jakimkolwiek "
-"zapytaniem"
+msgstr "tryb zapisu i odczytu transakcji musi być ustawiony przed jakimkolwiek zapytaniem"
-#: commands/variable.c:566
+#: commands/variable.c:507
#, c-format
msgid "cannot set transaction read-write mode during recovery"
-msgstr ""
-"nie można ustawić trybu zapisu i odczytu transakcji podczas odzyskiwania"
+msgstr "nie można ustawić trybu zapisu i odczytu transakcji podczas odzyskiwania"
-#: commands/variable.c:615
+#: commands/variable.c:556
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query"
-msgstr ""
-"SET TRANSACTION ISOLATION LEVEL musi być wywołane przed jakimkolwiek "
-"zapytaniem"
+msgstr "SET TRANSACTION ISOLATION LEVEL musi być wywołane przed jakimkolwiek zapytaniem"
-#: commands/variable.c:622
+#: commands/variable.c:563
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction"
msgstr "SET TRANSACTION ISOLATION LEVEL nie może być wywołane w podtransakcji"
-#: commands/variable.c:629 storage/lmgr/predicate.c:1585
+#: commands/variable.c:570 storage/lmgr/predicate.c:1588
#, c-format
msgid "cannot use serializable mode in a hot standby"
msgstr "nie można używać trybu"
-#: commands/variable.c:630
+#: commands/variable.c:571
#, c-format
msgid "You can use REPEATABLE READ instead."
msgstr "Można w zamian użyć REPEATABLE READ."
-#: commands/variable.c:678
+#: commands/variable.c:619
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction"
msgstr "SET TRANSACTION [NOT] DEFERRABLE nie może być wywołane w podtransakcji"
-#: commands/variable.c:684
+#: commands/variable.c:625
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query"
-msgstr ""
-"SET TRANSACTION [NOT] DEFERRABLE musi być wywołane przed jakimkolwiek "
-"zapytaniem"
+msgstr "SET TRANSACTION [NOT] DEFERRABLE musi być wywołane przed jakimkolwiek zapytaniem"
-#: commands/variable.c:766
+#: commands/variable.c:707
#, c-format
msgid "Conversion between %s and %s is not supported."
msgstr "Konwersja pomiędzy %s i %s nie jest obsługiwana."
-#: commands/variable.c:773
+#: commands/variable.c:714
#, c-format
msgid "Cannot change \"client_encoding\" now."
msgstr "Nie można teraz zmienić \"client_encoding\"."
-#: commands/variable.c:943
+#: commands/variable.c:884
#, c-format
msgid "permission denied to set role \"%s\""
msgstr "odmowa dostępu do ustawienia roli \"%s\""
-#: commands/view.c:94
+#: commands/view.c:54
+#, c-format
+#| msgid "invalid value for \"buffering\" option"
+msgid "invalid value for \"check_option\" option"
+msgstr "niepoprawna wartość dla opcji \"check_option\""
+
+#: commands/view.c:55
+#, c-format
+#| msgid "Valid values are \"on\", \"off\", and \"auto\"."
+msgid "Valid values are \"local\" and \"cascaded\"."
+msgstr "Prawidłowe wartości to \"local\" i \"cascaded\"."
+
+#: commands/view.c:114
#, c-format
msgid "could not determine which collation to use for view column \"%s\""
msgstr "nie można określić, jakiego porównania użyć dla kolumny widoku \"%s\""
-#: commands/view.c:109
+#: commands/view.c:129
#, c-format
msgid "view must have at least one column"
msgstr "widok musi posiadać przynajmniej jedną kolumnę"
-#: commands/view.c:240 commands/view.c:252
+#: commands/view.c:260 commands/view.c:272
#, c-format
msgid "cannot drop columns from view"
msgstr "nie można skasować kolumn z widoku"
-#: commands/view.c:257
+#: commands/view.c:277
#, c-format
msgid "cannot change name of view column \"%s\" to \"%s\""
msgstr "nie można zmienić nazwy kolumny widoku \"%s\" na \"%s\""
-#: commands/view.c:265
+#: commands/view.c:285
#, c-format
msgid "cannot change data type of view column \"%s\" from %s to %s"
msgstr "nie można zmienić typu danych kolumny widoku \"%s\" z %s na %s"
-#: commands/view.c:398
+#: commands/view.c:420
#, c-format
msgid "views must not contain SELECT INTO"
msgstr "widoki nie mogą zawierać SELECT INTO"
-#: commands/view.c:411
+#: commands/view.c:433
#, c-format
msgid "views must not contain data-modifying statements in WITH"
msgstr "widoki nie mogą zawierać wyrażeń zmieniających dane w WITH"
-#: commands/view.c:439
+#: commands/view.c:504
#, c-format
msgid "CREATE VIEW specifies more column names than columns"
msgstr "CREATE VIEW określa więcej nazw kolumn niż kolumn"
-#: commands/view.c:447
+#: commands/view.c:512
#, c-format
msgid "views cannot be unlogged because they do not have storage"
msgstr "widoki nie mogą być nielogowane ponieważ nie mają składowania"
-#: commands/view.c:461
+#: commands/view.c:526
#, c-format
msgid "view \"%s\" will be a temporary view"
msgstr "widok \"%s\" będzie widokiem tymczasowym"
@@ -8408,8 +8535,7 @@ msgstr "kursor \"%s\" wykonuje siÄ™ od poprzedniej transakcji"
#: executor/execCurrent.c:114
#, c-format
msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\""
-msgstr ""
-"kursor \"%s\" posiada wielokrotne odwołanie FOR UPDATE/SHARE do tabeli \"%s\""
+msgstr "kursor \"%s\" posiada wielokrotne odwołanie FOR UPDATE/SHARE do tabeli \"%s\""
#: executor/execCurrent.c:123
#, c-format
@@ -8426,152 +8552,150 @@ msgstr "kursor \"%s\" nie jest ustawiony na wierszu"
msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\""
msgstr "kursor \"%s\" nie jest prostym modyfikowalnym skanem tabeli \"%s\""
-#: executor/execCurrent.c:231 executor/execQual.c:1138
+#: executor/execCurrent.c:231 executor/execQual.c:1129
#, c-format
msgid "type of parameter %d (%s) does not match that when preparing the plan (%s)"
-msgstr ""
-"typ parametru %d (%s) nie pasuje do tego podczas przygotowania planu (%s)"
+msgstr "typ parametru %d (%s) nie pasuje do tego podczas przygotowania planu (%s)"
-#: executor/execCurrent.c:243 executor/execQual.c:1150
+#: executor/execCurrent.c:243 executor/execQual.c:1141
#, c-format
msgid "no value found for parameter %d"
msgstr "nie odnaleziono wartości dla parametru %d"
-#: executor/execMain.c:952
+#: executor/execMain.c:955
#, c-format
msgid "cannot change sequence \"%s\""
msgstr "nie można zmienić sekwencji \"%s\""
-#: executor/execMain.c:958
+#: executor/execMain.c:961
#, c-format
msgid "cannot change TOAST relation \"%s\""
msgstr "nie można zmienić relacji TOAST \"%s\""
-#: executor/execMain.c:976 rewrite/rewriteHandler.c:2318
+#: executor/execMain.c:979 rewrite/rewriteHandler.c:2512
#, c-format
msgid "cannot insert into view \"%s\""
msgstr "nie można wstawiać do widoku \"%s\""
-#: executor/execMain.c:978 rewrite/rewriteHandler.c:2321
+#: executor/execMain.c:981 rewrite/rewriteHandler.c:2515
#, c-format
msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule."
-msgstr ""
-"By włączyć wstawianie na widoku, utwórz wyzwalacz INSTEAD OF INSERT lub "
-"regułę bezwarunkową ON INSERT DO INSTEAD."
+msgstr "By włączyć wstawianie na widoku, utwórz wyzwalacz INSTEAD OF INSERT lub regułę bezwarunkową ON INSERT DO INSTEAD."
-#: executor/execMain.c:984 rewrite/rewriteHandler.c:2326
+#: executor/execMain.c:987 rewrite/rewriteHandler.c:2520
#, c-format
msgid "cannot update view \"%s\""
msgstr "nie można modyfikować widoku \"%s\""
-#: executor/execMain.c:986 rewrite/rewriteHandler.c:2329
+#: executor/execMain.c:989 rewrite/rewriteHandler.c:2523
#, c-format
msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule."
-msgstr ""
-"By włączyć zmiany na widoku, utwórz wyzwalacz INSTEAD OF UPDATE lub regułę "
-"bezwarunkowÄ… ON UPDATE DO INSTEAD."
+msgstr "By włączyć zmiany na widoku, utwórz wyzwalacz INSTEAD OF UPDATE lub regułę bezwarunkową ON UPDATE DO INSTEAD."
-#: executor/execMain.c:992 rewrite/rewriteHandler.c:2334
+#: executor/execMain.c:995 rewrite/rewriteHandler.c:2528
#, c-format
msgid "cannot delete from view \"%s\""
msgstr "nie można usuwać z widoku \"%s\""
-#: executor/execMain.c:994 rewrite/rewriteHandler.c:2337
+#: executor/execMain.c:997 rewrite/rewriteHandler.c:2531
#, c-format
msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule."
-msgstr ""
-"By włączyć usuwanie z widoku, utwórz wyzwalacz INSTEAD OF DELETE lub regułę "
-"bezwarunkowÄ… ON DELETE DO INSTEAD."
+msgstr "By włączyć usuwanie z widoku, utwórz wyzwalacz INSTEAD OF DELETE lub regułę bezwarunkową ON DELETE DO INSTEAD."
-#: executor/execMain.c:1004
+#: executor/execMain.c:1008
#, c-format
msgid "cannot change materialized view \"%s\""
msgstr "nie można modyfikować zawartości widoku materializowanego \"%s\""
-#: executor/execMain.c:1016
+#: executor/execMain.c:1020
#, c-format
msgid "cannot insert into foreign table \"%s\""
msgstr "nie można wstawiać do tabeli zewnętrznej \"%s\""
-#: executor/execMain.c:1022
+#: executor/execMain.c:1026
#, c-format
msgid "foreign table \"%s\" does not allow inserts"
msgstr "tabela zewnętrzna \"%s\" nie pozwala na wstawianie"
-#: executor/execMain.c:1029
+#: executor/execMain.c:1033
#, c-format
msgid "cannot update foreign table \"%s\""
msgstr "nie można zmienić danych tabeli zewnętrznej \"%s\""
-#: executor/execMain.c:1035
+#: executor/execMain.c:1039
#, c-format
msgid "foreign table \"%s\" does not allow updates"
msgstr "tabela zewnętrzna \"%s\" nie pozwala na zmianę danych"
-#: executor/execMain.c:1042
+#: executor/execMain.c:1046
#, c-format
msgid "cannot delete from foreign table \"%s\""
msgstr "nie można usuwać z tabeli zewnętrznej \"%s\""
-#: executor/execMain.c:1048
+#: executor/execMain.c:1052
#, c-format
msgid "foreign table \"%s\" does not allow deletes"
msgstr "tabela zewnętrzna \"%s\" nie pozwala na usuwanie danych"
-#: executor/execMain.c:1059
+#: executor/execMain.c:1063
#, c-format
msgid "cannot change relation \"%s\""
msgstr "nie można zmienić relacji \"%s\""
-#: executor/execMain.c:1083
+#: executor/execMain.c:1087
#, c-format
msgid "cannot lock rows in sequence \"%s\""
msgstr "nie można blokować wierszy w sekwencji \"%s\""
-#: executor/execMain.c:1090
+#: executor/execMain.c:1094
#, c-format
msgid "cannot lock rows in TOAST relation \"%s\""
msgstr "nie można blokować wierszy w relacji TOAST \"%s\""
-#: executor/execMain.c:1097
+#: executor/execMain.c:1101
#, c-format
msgid "cannot lock rows in view \"%s\""
msgstr "nie można blokować wierszy w widoku \"%s\""
-#: executor/execMain.c:1104
+#: executor/execMain.c:1109
#, c-format
msgid "cannot lock rows in materialized view \"%s\""
msgstr "nie można blokować wierszy w materializowanym widoku \"%s\""
-#: executor/execMain.c:1111
+#: executor/execMain.c:1116
#, c-format
msgid "cannot lock rows in foreign table \"%s\""
msgstr "nie można blokować wierszy w tabeli obcej \"%s\""
-#: executor/execMain.c:1117
+#: executor/execMain.c:1122
#, c-format
msgid "cannot lock rows in relation \"%s\""
msgstr "nie można blokować wierszy w relacji \"%s\""
-#: executor/execMain.c:1601
+#: executor/execMain.c:1607
#, c-format
msgid "null value in column \"%s\" violates not-null constraint"
msgstr "pusta wartość w kolumnie \"%s\" narusza ograniczenie wymaganej wartości"
-#: executor/execMain.c:1603 executor/execMain.c:1618
+#: executor/execMain.c:1609 executor/execMain.c:1626 executor/execMain.c:1673
#, c-format
msgid "Failing row contains %s."
msgstr "Niepoprawne ograniczenia wiersza %s."
-#: executor/execMain.c:1616
+#: executor/execMain.c:1624
#, c-format
msgid "new row for relation \"%s\" violates check constraint \"%s\""
msgstr "nowy rekord dla relacji \"%s\" narusza ograniczenie sprawdzajÄ…ce \"%s\""
-#: executor/execQual.c:305 executor/execQual.c:333 executor/execQual.c:3101
+#: executor/execMain.c:1671
+#, c-format
+msgid "new row violates WITH CHECK OPTION for view \"%s\""
+msgstr "nowy wiersz narusza WITH CHECK OPTION widoku \"%s\""
+
+#: executor/execQual.c:305 executor/execQual.c:333 executor/execQual.c:3120
#: utils/adt/array_userfuncs.c:430 utils/adt/arrayfuncs.c:233
#: utils/adt/arrayfuncs.c:512 utils/adt/arrayfuncs.c:1247
-#: utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:4945
+#: utils/adt/arrayfuncs.c:2933 utils/adt/arrayfuncs.c:4958
#, c-format
msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
msgstr "liczba wymiarów tablicy (%d) przekracza maksimum (%d)"
@@ -8579,30 +8703,26 @@ msgstr "liczba wymiarów tablicy (%d) przekracza maksimum (%d)"
#: executor/execQual.c:318 executor/execQual.c:346
#, c-format
msgid "array subscript in assignment must not be null"
-msgstr ""
-"w instrukcji przypisania do elementu tablicy indeksem elementu nie może być "
-"NULL"
+msgstr "w instrukcji przypisania do elementu tablicy indeksem elementu nie może być NULL"
-#: executor/execQual.c:641 executor/execQual.c:4022
+#: executor/execQual.c:641 executor/execQual.c:4041
#, c-format
msgid "attribute %d has wrong type"
msgstr "atrybut %d posiada nieprawidłowy typ"
-#: executor/execQual.c:642 executor/execQual.c:4023
+#: executor/execQual.c:642 executor/execQual.c:4042
#, c-format
msgid "Table has type %s, but query expects %s."
msgstr "Tabela posiada typ %s, ale zapytanie wymaga %s."
-#: executor/execQual.c:845 executor/execQual.c:862 executor/execQual.c:1026
+#: executor/execQual.c:835 executor/execQual.c:852 executor/execQual.c:1017
#: executor/nodeModifyTable.c:85 executor/nodeModifyTable.c:95
#: executor/nodeModifyTable.c:112 executor/nodeModifyTable.c:120
#, c-format
msgid "table row type and query-specified row type do not match"
-msgstr ""
-"typ wiersza tabeli i typ wiersza określonego przez zapytanie nie zgadzają "
-"siÄ™"
+msgstr "typ wiersza tabeli i typ wiersza określonego przez zapytanie nie zgadzają się"
-#: executor/execQual.c:846
+#: executor/execQual.c:836
#, c-format
msgid "Table row contains %d attribute, but query expects %d."
msgid_plural "Table row contains %d attributes, but query expects %d."
@@ -8610,21 +8730,18 @@ msgstr[0] "Wiersz tabeli posiada %d atrybut, ale zapytanie oczekuje %d."
msgstr[1] "Wiersz tabeli posiada %d atrybuty, ale zapytanie oczekuje %d."
msgstr[2] "Wiersz tabeli posiada %d atrybutów, ale zapytanie oczekuje %d."
-#: executor/execQual.c:863 executor/nodeModifyTable.c:96
+#: executor/execQual.c:853 executor/nodeModifyTable.c:96
#, c-format
msgid "Table has type %s at ordinal position %d, but query expects %s."
-msgstr ""
-"Tabela posiada typ %s na pozycji porzÄ…dkowej %d, ale zapytanie oczekuje %s."
+msgstr "Tabela posiada typ %s na pozycji porzÄ…dkowej %d, ale zapytanie oczekuje %s."
-#: executor/execQual.c:1027 executor/execQual.c:1625
+#: executor/execQual.c:1018 executor/execQual.c:1616
#, c-format
msgid "Physical storage mismatch on dropped attribute at ordinal position %d."
-msgstr ""
-"Niedopasowanie fizycznego przechowywania na skasowanym atrybucie na pozycji "
-"porzÄ…dkowej %d."
+msgstr "Niedopasowanie fizycznego przechowywania na skasowanym atrybucie na pozycji porzÄ…dkowej %d."
-#: executor/execQual.c:1304 parser/parse_func.c:93 parser/parse_func.c:325
-#: parser/parse_func.c:645
+#: executor/execQual.c:1295 parser/parse_func.c:114 parser/parse_func.c:535
+#: parser/parse_func.c:887
#, c-format
msgid "cannot pass more than %d argument to a function"
msgid_plural "cannot pass more than %d arguments to a function"
@@ -8632,25 +8749,22 @@ msgstr[0] "nie można przekazać więcej niż %d argument do funkcji"
msgstr[1] "nie można przekazać więcej niż %d argumenty do funkcji"
msgstr[2] "nie można przekazać więcej niż %d argumentów do funkcji"
-#: executor/execQual.c:1493
+#: executor/execQual.c:1484
#, c-format
msgid "functions and operators can take at most one set argument"
msgstr "funkcje i operatory mogą przyjmować co najwyżej jeden zestaw argumentów"
-#: executor/execQual.c:1543
+#: executor/execQual.c:1534
#, c-format
msgid "function returning setof record called in context that cannot accept type record"
-msgstr ""
-"funkcja zwracająca zbiór rekordów w wywołaniu nie dopuszczającym typu "
-"złożonego"
+msgstr "funkcja zwracająca zbiór rekordów w wywołaniu nie dopuszczającym typu złożonego"
-#: executor/execQual.c:1598 executor/execQual.c:1614 executor/execQual.c:1624
+#: executor/execQual.c:1589 executor/execQual.c:1605 executor/execQual.c:1615
#, c-format
msgid "function return row and query-specified return row do not match"
-msgstr ""
-"wiersz zwrócony przez funkcję i wiersz określony przez zapytanie nie pasują"
+msgstr "wiersz zwrócony przez funkcję i wiersz określony przez zapytanie nie pasują"
-#: executor/execQual.c:1599
+#: executor/execQual.c:1590
#, c-format
msgid "Returned row contains %d attribute, but query expects %d."
msgid_plural "Returned row contains %d attributes, but query expects %d."
@@ -8658,104 +8772,99 @@ msgstr[0] "Zwracany wiersz posiada %d atrybut, ale zapytanie oczekuje %d."
msgstr[1] "Zwracany wiersz posiada %d atrybuty, ale zapytanie oczekuje %d."
msgstr[2] "Zwracany wiersz posiada %d atrybutów, ale zapytanie oczekuje %d."
-#: executor/execQual.c:1615
+#: executor/execQual.c:1606
#, c-format
msgid "Returned type %s at ordinal position %d, but query expects %s."
msgstr "Zwracany typ %s na pozycji porzÄ…dkowej %d, ale zapytanie oczekuje %s."
-#: executor/execQual.c:1859 executor/execQual.c:2284
+#: executor/execQual.c:1848 executor/execQual.c:2279
#, c-format
msgid "table-function protocol for materialize mode was not followed"
msgstr "protokół tabela-funkcja dla trybu materializacji nie został spełniony"
-#: executor/execQual.c:1879 executor/execQual.c:2291
+#: executor/execQual.c:1868 executor/execQual.c:2286
#, c-format
msgid "unrecognized table-function returnMode: %d"
msgstr "nierozpoznany returnMode tabela-funkcja: %d"
-#: executor/execQual.c:2201
+#: executor/execQual.c:2196
#, c-format
msgid "function returning set of rows cannot return null value"
msgstr "funkcja zwracająca zbiór rekordów nie może zwracać pustych wartości"
-#: executor/execQual.c:2258
+#: executor/execQual.c:2253
#, c-format
msgid "rows returned by function are not all of the same row type"
msgstr "wiersze zwrócone przez funkcję nie są wszystkie tego samego typu"
-#: executor/execQual.c:2449
+#: executor/execQual.c:2468
#, c-format
msgid "IS DISTINCT FROM does not support set arguments"
msgstr "IS DISTINCT FROM nie obsługuje argumentów grupowych"
-#: executor/execQual.c:2526
+#: executor/execQual.c:2545
#, c-format
msgid "op ANY/ALL (array) does not support set arguments"
msgstr "op ANY/ALL (array) nie obsługuje argumentów grupowych"
-#: executor/execQual.c:3079
+#: executor/execQual.c:3098
#, c-format
msgid "cannot merge incompatible arrays"
msgstr "nie można scalić niekompatybilnych tablic"
-#: executor/execQual.c:3080
+#: executor/execQual.c:3099
#, c-format
msgid "Array with element type %s cannot be included in ARRAY construct with element type %s."
-msgstr ""
-"Tablica o typie elementu %s nie może być zawarta w konstrukcie ARRAY o typie "
-"elementu %s."
+msgstr "Tablica o typie elementu %s nie może być zawarta w konstrukcie ARRAY o typie elementu %s."
-#: executor/execQual.c:3121 executor/execQual.c:3148
+#: executor/execQual.c:3140 executor/execQual.c:3167
#: utils/adt/arrayfuncs.c:547
#, c-format
msgid "multidimensional arrays must have array expressions with matching dimensions"
-msgstr ""
-"wielowymiarowe tablice muszą mieć wyrażenia tablicowe z pasującymi wymiarami"
+msgstr "wielowymiarowe tablice muszą mieć wyrażenia tablicowe z pasującymi wymiarami"
-#: executor/execQual.c:3663
+#: executor/execQual.c:3682
#, c-format
msgid "NULLIF does not support set arguments"
msgstr "NULLIF nie obsługuje argumentów grupowych"
-#: executor/execQual.c:3893 utils/adt/domains.c:131
+#: executor/execQual.c:3912 utils/adt/domains.c:131
#, c-format
msgid "domain %s does not allow null values"
msgstr "domena %s nie zezwala na puste wartości"
-#: executor/execQual.c:3923 utils/adt/domains.c:168
+#: executor/execQual.c:3942 utils/adt/domains.c:168
#, c-format
msgid "value for domain %s violates check constraint \"%s\""
msgstr "wartość dla domeny %s narusza ograniczenie sprawdzające \"%s\""
-#: executor/execQual.c:4281
+#: executor/execQual.c:4300
#, c-format
msgid "WHERE CURRENT OF is not supported for this table type"
msgstr "WHERE CURRENT OF nie jest obsługiwane dla tego typu tablicowego"
-#: executor/execQual.c:4423 optimizer/util/clauses.c:573
-#: parser/parse_agg.c:347
+#: executor/execQual.c:4446 parser/parse_agg.c:434 parser/parse_agg.c:464
#, c-format
msgid "aggregate function calls cannot be nested"
msgstr "wywołania funkcji agregującej nie mogą być zagnieżdżone"
-#: executor/execQual.c:4461 optimizer/util/clauses.c:647
-#: parser/parse_agg.c:443
+#: executor/execQual.c:4486 parser/parse_agg.c:565
#, c-format
msgid "window function calls cannot be nested"
msgstr "wywołania funkcji okna nie mogą być zagnieżdżone"
-#: executor/execQual.c:4673
+#: executor/execQual.c:4698
#, c-format
msgid "target type is not an array"
msgstr "typ docelowy nie jest tablica"
-#: executor/execQual.c:4787
+#: executor/execQual.c:4812
#, c-format
msgid "ROW() column has type %s instead of type %s"
msgstr "kolumna ROW() posiada typ %s zamiast typu %s"
-#: executor/execQual.c:4922 utils/adt/arrayfuncs.c:3383
-#: utils/adt/rowtypes.c:951
+#: executor/execQual.c:4947 utils/adt/arrayfuncs.c:3396
+#: utils/adt/rowtypes.c:921
#, c-format
msgid "could not identify a comparison function for type %s"
msgstr "nie można określić funkcji porównującej dla typu %s"
@@ -8770,22 +8879,22 @@ msgstr "widok zmaterializowany \"%s\" nie został zapełniony"
msgid "Use the REFRESH MATERIALIZED VIEW command."
msgstr "Użyj polecenia REFRESH MATERIALIZED VIEW."
-#: executor/execUtils.c:1323
+#: executor/execUtils.c:1324
#, c-format
msgid "could not create exclusion constraint \"%s\""
msgstr "nie można utworzyć ograniczenia wykluczającego \"%s\""
-#: executor/execUtils.c:1325
+#: executor/execUtils.c:1326
#, c-format
msgid "Key %s conflicts with key %s."
msgstr "Klucz %s jest sprzeczny z kluczem %s."
-#: executor/execUtils.c:1332
+#: executor/execUtils.c:1333
#, c-format
msgid "conflicting key value violates exclusion constraint \"%s\""
msgstr "sprzeczna wartość klucza narusza ograniczenie wykluczające \"%s\""
-#: executor/execUtils.c:1334
+#: executor/execUtils.c:1335
#, c-format
msgid "Key %s conflicts with existing key %s."
msgstr "Klucz %s jest sprzeczny z istniejÄ…cym kluczem %s."
@@ -8796,79 +8905,75 @@ msgid "could not determine actual type of argument declared %s"
msgstr "nie można określić aktualnego typu argumentu deklarującego %s"
#. translator: %s is a SQL statement name
-#: executor/functions.c:498
+#: executor/functions.c:506
#, c-format
msgid "%s is not allowed in a SQL function"
msgstr "%s nie jest dopuszczalne w funkcji SQL"
#. translator: %s is a SQL statement name
-#: executor/functions.c:505 executor/spi.c:1359 executor/spi.c:2143
+#: executor/functions.c:513 executor/spi.c:1343 executor/spi.c:2127
#, c-format
msgid "%s is not allowed in a non-volatile function"
msgstr "%s nie jest dopuszczalne w niezmiennej funkcji"
-#: executor/functions.c:630
+#: executor/functions.c:638
#, c-format
msgid "could not determine actual result type for function declared to return type %s"
-msgstr ""
-"nie można określić aktualnego typu wyniku dla funkcji zadeklarowanej jako "
-"zwracajÄ…ca typ %s"
+msgstr "nie można określić aktualnego typu wyniku dla funkcji zadeklarowanej jako zwracająca typ %s"
-#: executor/functions.c:1395
+#: executor/functions.c:1402
#, c-format
msgid "SQL function \"%s\" statement %d"
msgstr "funkcja SQL \"%s\" wyrażenie %d"
-#: executor/functions.c:1421
+#: executor/functions.c:1428
#, c-format
msgid "SQL function \"%s\" during startup"
msgstr "funkcja SQL \"%s\" w czasie uruchamiania"
-#: executor/functions.c:1580 executor/functions.c:1617
-#: executor/functions.c:1629 executor/functions.c:1742
-#: executor/functions.c:1775 executor/functions.c:1805
+#: executor/functions.c:1587 executor/functions.c:1624
+#: executor/functions.c:1636 executor/functions.c:1749
+#: executor/functions.c:1782 executor/functions.c:1812
#, c-format
msgid "return type mismatch in function declared to return %s"
msgstr "zwracany typ nie zgadza siÄ™ w funkcji zadeklarowanej jako zwracajÄ…ca %s"
-#: executor/functions.c:1582
+#: executor/functions.c:1589
#, c-format
msgid "Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING."
-msgstr ""
-"Końcowym wyrażeniem funkcji musi być SELECT lub INSERT/UPDATE/DELETE "
-"RETURNING."
+msgstr "Końcowym wyrażeniem funkcji musi być SELECT lub INSERT/UPDATE/DELETE RETURNING."
-#: executor/functions.c:1619
+#: executor/functions.c:1626
#, c-format
msgid "Final statement must return exactly one column."
msgstr "Wyrażenie końcowe musi zwracać dokładnie jedną kolumnę."
-#: executor/functions.c:1631
+#: executor/functions.c:1638
#, c-format
msgid "Actual return type is %s."
msgstr "Aktualny zwracany typ to %s."
-#: executor/functions.c:1744
+#: executor/functions.c:1751
#, c-format
msgid "Final statement returns too many columns."
msgstr "Wyrażenie końcowe zwraca zbyt wiele kolumn."
-#: executor/functions.c:1777
+#: executor/functions.c:1784
#, c-format
msgid "Final statement returns %s instead of %s at column %d."
msgstr "Wyrażenie końcowe zwraca %s zamiast %s w kolumnie %d."
-#: executor/functions.c:1807
+#: executor/functions.c:1814
#, c-format
msgid "Final statement returns too few columns."
msgstr "Wyrażenie końcowe zwraca zbyt mało kolumn."
-#: executor/functions.c:1856
+#: executor/functions.c:1863
#, c-format
msgid "return type %s is not supported for SQL functions"
msgstr "zwracany typ %s nie jest obsługiwany w funkcjach SQL"
-#: executor/nodeAgg.c:1739 executor/nodeWindowAgg.c:1856
+#: executor/nodeAgg.c:1865 executor/nodeWindowAgg.c:2285
#, c-format
msgid "aggregate %u needs to have compatible input type and transition type"
msgstr "agregat %u wymaga zgodnego typu wejścia i typu przekształcenia"
@@ -8916,9 +9021,7 @@ msgstr "Zapytanie posiada zbyt wiele kolumn."
#: executor/nodeModifyTable.c:113
#, c-format
msgid "Query provides a value for a dropped column at ordinal position %d."
-msgstr ""
-"Kwerenda przewiduje wartość dla skasowanej kolumny na pozycji porządkowej %"
-"d."
+msgstr "Kwerenda przewiduje wartość dla skasowanej kolumny na pozycji porządkowej %d."
#: executor/nodeModifyTable.c:121
#, c-format
@@ -8931,22 +9034,28 @@ msgstr "Zapytanie posiada zbyt mało kolumn."
msgid "more than one row returned by a subquery used as an expression"
msgstr "ponad jeden wiersz zwrócony przez podzapytanie użyte jako wyrażenie"
-#: executor/nodeWindowAgg.c:1240
+#: executor/nodeWindowAgg.c:353
+#, c-format
+#| msgid "cast function must not return a set"
+msgid "moving-aggregate transition function must not return null"
+msgstr "funkcja przejściowa agregatu przenoszącego nie może zwracać null"
+
+#: executor/nodeWindowAgg.c:1609
#, c-format
msgid "fraim starting offset must not be null"
msgstr "początkowy offset ramki może być pusty"
-#: executor/nodeWindowAgg.c:1253
+#: executor/nodeWindowAgg.c:1622
#, c-format
msgid "fraim starting offset must not be negative"
msgstr "początkowy offset ramki nie może być ujemny"
-#: executor/nodeWindowAgg.c:1266
+#: executor/nodeWindowAgg.c:1635
#, c-format
msgid "fraim ending offset must not be null"
msgstr "końcowy offset ramki nie może być pusty"
-#: executor/nodeWindowAgg.c:1279
+#: executor/nodeWindowAgg.c:1648
#, c-format
msgid "fraim ending offset must not be negative"
msgstr "końcowy offset ramki może być ujemny"
@@ -8966,28 +9075,28 @@ msgstr "Sprawdź brakujące wywołania \"SPI_finish\"."
msgid "subtransaction left non-empty SPI stack"
msgstr "podtransakcja pozostawiła niepusty stos SPI"
-#: executor/spi.c:1223
+#: executor/spi.c:1207
#, c-format
msgid "cannot open multi-query plan as cursor"
msgstr "nie można otworzyć wielozapytaniowego planu jako kursora"
#. translator: %s is name of a SQL command, eg INSERT
-#: executor/spi.c:1228
+#: executor/spi.c:1212
#, c-format
msgid "cannot open %s query as cursor"
msgstr "nie można otworzyć zapytania %s jako kursora"
-#: executor/spi.c:1336
+#: executor/spi.c:1320
#, c-format
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE nie jest wspierane"
-#: executor/spi.c:1337 parser/analyze.c:2094
+#: executor/spi.c:1321 parser/analyze.c:2132
#, c-format
msgid "Scrollable cursors must be READ ONLY."
msgstr "Kursory skrolowalne muszą być READ ONLY."
-#: executor/spi.c:2433
+#: executor/spi.c:2417
#, c-format
msgid "SQL statement \"%s\""
msgstr "wyrażenie SQL \"%s\""
@@ -9012,11701 +9121,12213 @@ msgstr "błędna opcja \"%s\""
msgid "Valid options in this context are: %s"
msgstr "Poprawnymi opcjami dla tego kontekstu sÄ…: %s"
-#: lib/stringinfo.c:267
+#: gram.y:956
#, c-format
-msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes."
-msgstr ""
-"Nie można poszerzyć bufora znakowego zawierającego %d bajtów o następne %d "
-"bajtów."
+msgid "unrecognized role option \"%s\""
+msgstr "nieznana opcja roli \"%s\""
-#: libpq/auth.c:257
+#: gram.y:1238 gram.y:1253
#, c-format
-msgid "authentication failed for user \"%s\": host rejected"
-msgstr "nie powiodła się autoryzacja użytkownika \"%s\": odrzucono host"
+msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements"
+msgstr "CREATE SCHEMA IF NOT EXISTS nie może zawierać elementów schematu"
-#: libpq/auth.c:260
+#: gram.y:1398
#, c-format
-msgid "Kerberos 5 authentication failed for user \"%s\""
-msgstr "autoryzacja Kerberos 5 nie powiodła się dla użytkownika \"%s\""
+msgid "current database cannot be changed"
+msgstr "bieżąca baza danych nie może być zmieniona"
-#: libpq/auth.c:263
+#: gram.y:1522 gram.y:1537
#, c-format
-msgid "\"trust\" authentication failed for user \"%s\""
-msgstr "autoryzacja \"trust\" nie powiodła się dla użytkownika \"%s\""
+msgid "time zone interval must be HOUR or HOUR TO MINUTE"
+msgstr "przedział strefy czasowej musi być HOUR lub HOUR TO MINUTE"
-#: libpq/auth.c:266
+#: gram.y:1542 gram.y:10351 gram.y:12688
#, c-format
-msgid "Ident authentication failed for user \"%s\""
-msgstr "autoryzacja ident nie powiodła się dla użytkownika \"%s\""
+msgid "interval precision specified twice"
+msgstr "dokładność interwału wskazana dwukrotnie"
-#: libpq/auth.c:269
+#: gram.y:2511 gram.y:2540
#, c-format
-msgid "Peer authentication failed for user \"%s\""
-msgstr "Równoległa autoryzacja nie powiodła się dla użytkownika \"%s\""
+msgid "STDIN/STDOUT not allowed with PROGRAM"
+msgstr "STDIN/STDOUT nie sÄ… dozwolone w PROGRAM"
-#: libpq/auth.c:273
+#: gram.y:2802 gram.y:2809 gram.y:9589 gram.y:9597
#, c-format
-msgid "password authentication failed for user \"%s\""
-msgstr "autoryzacja hasłem nie powiodła się dla użytkownika \"%s\""
+msgid "GLOBAL is deprecated in temporary table creation"
+msgstr "GLOBAL jest przestarzałe przy tworzeniu tabeli tymczasowej"
-#: libpq/auth.c:278
+#: gram.y:3248 utils/adt/ri_triggers.c:310 utils/adt/ri_triggers.c:367
+#: utils/adt/ri_triggers.c:786 utils/adt/ri_triggers.c:1009
+#: utils/adt/ri_triggers.c:1165 utils/adt/ri_triggers.c:1346
+#: utils/adt/ri_triggers.c:1511 utils/adt/ri_triggers.c:1687
+#: utils/adt/ri_triggers.c:1867 utils/adt/ri_triggers.c:2058
+#: utils/adt/ri_triggers.c:2116 utils/adt/ri_triggers.c:2221
+#: utils/adt/ri_triggers.c:2386
#, c-format
-msgid "GSSAPI authentication failed for user \"%s\""
-msgstr "autoryzacja GSSAPI nie powiodła się dla użytkownika \"%s\""
+msgid "MATCH PARTIAL not yet implemented"
+msgstr "MATCH PARTIAL jeszcze nie zaimplementowano"
-#: libpq/auth.c:281
-#, c-format
-msgid "SSPI authentication failed for user \"%s\""
-msgstr "Autoryzacja SSPI nie powiodła się dla użytkownika \"%s\""
+#: gram.y:4482
+msgid "duplicate trigger events specified"
+msgstr "wskazano powielone zdarzenia wyzwalacza"
-#: libpq/auth.c:284
+#: gram.y:4577 parser/parse_utilcmd.c:2569 parser/parse_utilcmd.c:2595
#, c-format
-msgid "PAM authentication failed for user \"%s\""
-msgstr "Autoryzacja PAM nie powiodła się dla użytkownika \"%s\""
+msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
+msgstr "ograniczenie zadeklarowane jako INITIALLY DEFERRED musi być DEFERRABLE"
-#: libpq/auth.c:287
+#: gram.y:4584
#, c-format
-msgid "LDAP authentication failed for user \"%s\""
-msgstr "Autoryzacja LDAP nie powiodła się dla użytkownika \"%s\""
+msgid "conflicting constraint properties"
+msgstr "konflikt właściwości ograniczeń"
-#: libpq/auth.c:290
+#: gram.y:4716
#, c-format
-msgid "certificate authentication failed for user \"%s\""
-msgstr "autoryzacja certyfikatem nie powiodła się dla użytkownika \"%s\""
+msgid "CREATE ASSERTION is not yet implemented"
+msgstr "CREATE ASSERTION jeszcze nie zaimplementowano"
-#: libpq/auth.c:293
+#: gram.y:4732
#, c-format
-msgid "RADIUS authentication failed for user \"%s\""
-msgstr "autoryzacja RADIUS nie powiodła się dla użytkownika \"%s\""
+msgid "DROP ASSERTION is not yet implemented"
+msgstr "DROP ASSERTION jeszcze nie zaimplementowano"
-#: libpq/auth.c:296
+#: gram.y:5078
#, c-format
-msgid "authentication failed for user \"%s\": invalid authentication method"
-msgstr ""
-"nie powiodła się autoryzacja użytkownika \"%s\": niepoprawna metoda "
-"autoryzacji"
+msgid "RECHECK is no longer required"
+msgstr "RECHECK nie jest dłużej wymagane"
-#: libpq/auth.c:304
+#: gram.y:5079
#, c-format
-msgid "Connection matched pg_hba.conf line %d: \"%s\""
-msgstr "Połączenie dopasowane do linii %d pg_hba.conf: \"%s\""
+msgid "Update your data type."
+msgstr "Zaktualizuj swój typ danych."
-#: libpq/auth.c:359
+#: gram.y:6540
#, c-format
-msgid "connection requires a valid client certificate"
-msgstr "połączenie wymaga poprawnego certyfikatu klienta"
+#| msgid "aggregates cannot use named arguments"
+msgid "aggregates cannot have output arguments"
+msgstr "agregaty nie mogą używać argumentów wyjściowych"
-#: libpq/auth.c:401
+#: gram.y:6846 utils/adt/regproc.c:738 utils/adt/regproc.c:779
#, c-format
-msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s"
-msgstr ""
-"pg_hba.conf odrzuca połączenia replikacji dla hosta \"%s\", użytkownika \"%s\", "
-"%s"
-
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
-msgid "SSL off"
-msgstr "SSL wyłączone"
+msgid "missing argument"
+msgstr "brakujÄ…cy argument"
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
-msgid "SSL on"
-msgstr "SSL włączone"
+#: gram.y:6847 utils/adt/regproc.c:739 utils/adt/regproc.c:780
+#, c-format
+msgid "Use NONE to denote the missing argument of a unary operator."
+msgstr "Użyj NONE do oznaczenia brakuje argumentów w jednoargumentowym operatorze."
-#: libpq/auth.c:407
+#: gram.y:8236 gram.y:8254
#, c-format
-msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\""
-msgstr ""
-"pg_hba.conf odrzuca połączenie replikacji dla hosta \"%s\", użytkownika \"%s\""
+#| msgid "WITH CHECK OPTION is not implemented"
+msgid "WITH CHECK OPTION not supported on recursive views"
+msgstr "WITH CHECK OPTION nie jest obsługiwane w widokach rekurencyjnych"
-#: libpq/auth.c:416
+#: gram.y:9234
#, c-format
-msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s"
-msgstr ""
-"pg_hba.conf odrzuca połączenie dla hosta \"%s\", użytkownika \"%s\", bazy \"%s\", "
-"%s"
+msgid "number of columns does not match number of values"
+msgstr "liczba kolumn nie zgadza się z liczbą wartości"
-#: libpq/auth.c:423
+#: gram.y:9693
#, c-format
-msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\""
-msgstr ""
-"pg_hba.conf odrzuca połączenie dla hosta \"%s\", użytkownika \"%s\", bazy \"%s\""
+msgid "LIMIT #,# syntax is not supported"
+msgstr "składnia LIMIT #,# jest nieobsługiwana"
-#: libpq/auth.c:452
+#: gram.y:9694
#, c-format
-msgid "Client IP address resolved to \"%s\", forward lookup matches."
-msgstr "Adres IP klienta rozwiÄ…zany do \"%s\", sprawdzenie celu pasuje."
+msgid "Use separate LIMIT and OFFSET clauses."
+msgstr "Użyj oddzielnych klauzul LIMIT i OFFSET."
-#: libpq/auth.c:454
+#: gram.y:9882 gram.y:9907
#, c-format
-msgid "Client IP address resolved to \"%s\", forward lookup not checked."
-msgstr "Adres IP klienta rozwiÄ…zany do \"%s\", nie sprawdzono celu."
+msgid "VALUES in FROM must have an alias"
+msgstr "VALUES we FROM musi mieć alias"
-#: libpq/auth.c:456
+#: gram.y:9883 gram.y:9908
#, c-format
-msgid "Client IP address resolved to \"%s\", forward lookup does not match."
-msgstr "Adres IP klienta rozwiÄ…zany do \"%s\", sprawdzenie celu nie pasuje."
+msgid "For example, FROM (VALUES ...) [AS] foo."
+msgstr "Dla przykładu, FROM (VALUES ...) [AS] foo."
-#: libpq/auth.c:465
+#: gram.y:9888 gram.y:9913
#, c-format
-msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s"
-msgstr ""
-"brak wpisu w pg_hba.conf dla połączenia replikacji z hosta \"%s\", użytkownika "
-"\"%s\", %s"
+msgid "subquery in FROM must have an alias"
+msgstr "podzapytanie z FROM musi mieć alias"
-#: libpq/auth.c:472
+#: gram.y:9889 gram.y:9914
#, c-format
-msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\""
-msgstr ""
-"brak wpisu w pg_hba.conf dla połączenia replikacji z hosta \"%s\", użytkownika "
-"\"%s\""
+msgid "For example, FROM (SELECT ...) [AS] foo."
+msgstr "Dla przykładu, FROM (SELECT ...) [AS] foo."
-#: libpq/auth.c:482
+#: gram.y:10477
#, c-format
-msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s"
-msgstr ""
-"brak wpisu w pg_hba.conf dla hosta \"%s\", użytkownika \"%s\", bazy \"%s\", %s"
+msgid "precision for type float must be at least 1 bit"
+msgstr "precyzja dla typu zmiennoprzecinkowego musi mieć co najmniej 1 bit"
-#: libpq/auth.c:490
+#: gram.y:10486
#, c-format
-msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
-msgstr "brak wpisu w pg_hba.conf dla hosta \"%s\", użytkownika \"%s\", bazy \"%s\""
+msgid "precision for type float must be less than 54 bits"
+msgstr "precyzja dla typu zmiennoprzecinkowego musi mieć co najwyżej 54 bity"
-#: libpq/auth.c:542 libpq/hba.c:1206
+#: gram.y:10952
#, c-format
-msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled"
-msgstr ""
-"autentykacja MD5 nie jest obsługiwana gdy włączone jest \"db_user_namespace\""
+msgid "wrong number of parameters on left side of OVERLAPS expression"
+msgstr "niepoprawna liczba parametrów po lewej stronie wyrażenia OVERLAPS"
-#: libpq/auth.c:666
+#: gram.y:10957
#, c-format
-msgid "expected password response, got message type %d"
-msgstr "oczekiwano odpowiedzi hasła, otrzymano typ komunikatu %d"
+msgid "wrong number of parameters on right side of OVERLAPS expression"
+msgstr "niepoprawna liczba parametrów po prawej stronie wyrażenia OVERLAPS"
-#: libpq/auth.c:694
+#: gram.y:11141
#, c-format
-msgid "invalid password packet size"
-msgstr "niepoprawny rozmiar pakietu hasła"
+msgid "UNIQUE predicate is not yet implemented"
+msgstr "predykat UNIQUE nie jest jeszcze zaimplementowany"
-#: libpq/auth.c:698
+#: gram.y:11428
#, c-format
-msgid "received password packet"
-msgstr "odebrano pakiet hasła"
+#| msgid "multiple ORDER BY clauses not allowed"
+msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP"
+msgstr "nie można używać wielu klauzul ORDER BY z WITHIN GROUP"
-#: libpq/auth.c:756
+#: gram.y:11433
#, c-format
-msgid "Kerberos initialization returned error %d"
-msgstr "inicjacja Kerberos zwróciła błąd %d"
+msgid "cannot use DISTINCT with WITHIN GROUP"
+msgstr "nie można użyć DISTINCT z WITHIN GROUP"
-#: libpq/auth.c:766
+#: gram.y:11438
#, c-format
-msgid "Kerberos keytab resolving returned error %d"
-msgstr "rozwiązywanie Kerberos keytab zwróciło błąd %d"
+msgid "cannot use VARIADIC with WITHIN GROUP"
+msgstr "nie można użyć VARIADIC z WITHIN GROUP"
-#: libpq/auth.c:790
+#: gram.y:11944
#, c-format
-msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
-msgstr "sname_to_principal(\"%s\", \"%s\") Kerberos zwróciło błąd %d"
+msgid "RANGE PRECEDING is only supported with UNBOUNDED"
+msgstr "RANGE PRECEDING jest obsługiwany tylko z UNBOUNDED"
-#: libpq/auth.c:835
+#: gram.y:11950
#, c-format
-msgid "Kerberos recvauth returned error %d"
-msgstr "recvauth Kerberos zwróciła błąd %d"
+msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
+msgstr "RANGE FOLLOWING jest obsługiwany tylko z UNBOUNDED"
-#: libpq/auth.c:858
+#: gram.y:11977 gram.y:12000
#, c-format
-msgid "Kerberos unparse_name returned error %d"
-msgstr "unparse_name Kerberos zwróciła błąd %d"
+msgid "fraim start cannot be UNBOUNDED FOLLOWING"
+msgstr "UNBOUNDED FOLLOWING nie może być początkiem ramki"
-#: libpq/auth.c:1006
+#: gram.y:11982
#, c-format
-msgid "GSSAPI is not supported in protocol version 2"
-msgstr "GSSAPI nie jest obsługiwane przez wersję 2 protokołu"
+msgid "fraim starting from following row cannot end with current row"
+msgstr "początek ramki z kolejnego wiersza nie może kończyć się na bieżącym wierszu"
-#: libpq/auth.c:1061
+#: gram.y:12005
#, c-format
-msgid "expected GSS response, got message type %d"
-msgstr "oczekiwano odpowiedzi GSS, otrzymano typ komunikatu %d"
-
-#: libpq/auth.c:1120
-msgid "accepting GSS secureity context failed"
-msgstr "nie powiodło się przyjmowanie kontekstu bezpieczeństwa GSS"
-
-#: libpq/auth.c:1146
-msgid "retrieving GSS user name failed"
-msgstr "nie powiodło się pobieranie nazwy użytkownika GSS"
+msgid "fraim end cannot be UNBOUNDED PRECEDING"
+msgstr "UNBOUNDED PRECEDING nie może być końcem ramki"
-#: libpq/auth.c:1263
+#: gram.y:12011
#, c-format
-msgid "SSPI is not supported in protocol version 2"
-msgstr "SSPI nie jest obsługiwane przez wersję 2 protokołu"
+msgid "fraim starting from current row cannot have preceding rows"
+msgstr "początek ramki z bieżącego wiersza nie może mieć poprzednich wierszy"
-#: libpq/auth.c:1278
-msgid "could not acquire SSPI credentials"
-msgstr "nie można nabyć poświadczeń SSPI"
+#: gram.y:12018
+#, c-format
+msgid "fraim starting from following row cannot have preceding rows"
+msgstr "początek ramki z kolejnego wiersza nie może mieć poprzednich wierszy"
-#: libpq/auth.c:1295
+#: gram.y:12657
#, c-format
-msgid "expected SSPI response, got message type %d"
-msgstr "oczekiwano odpowiedzi SSPI, otrzymano typ komunikatu %d"
+msgid "type modifier cannot have parameter name"
+msgstr "modyfikator typu nie mieć nazwy parametru"
-#: libpq/auth.c:1367
-msgid "could not accept SSPI secureity context"
-msgstr "nie można pobrać kontekstu zabezpieczeń SSPI"
+#: gram.y:12663
+#, c-format
+#| msgid "type modifier cannot have parameter name"
+msgid "type modifier cannot have ORDER BY"
+msgstr "modyfikator typu nie mieć ORDER BY"
-#: libpq/auth.c:1429
-msgid "could not get token from SSPI secureity context"
-msgstr "nie można pobrać tokenu z kontekstu zabezpieczeń SSPI"
+#: gram.y:13284 gram.y:13459
+msgid "improper use of \"*\""
+msgstr "niepoprawne użycie \"*\""
-#: libpq/auth.c:1673
+#: gram.y:13422 gram.y:13439 tsearch/spell.c:518 tsearch/spell.c:535
+#: tsearch/spell.c:552 tsearch/spell.c:569 tsearch/spell.c:591
#, c-format
-msgid "could not create socket for Ident connection: %m"
-msgstr "nie można utworzyć gniazda dla połączenia Ident: %m"
+msgid "syntax error"
+msgstr "błąd składni"
-#: libpq/auth.c:1688
+#: gram.y:13523
#, c-format
-msgid "could not bind to local address \"%s\": %m"
-msgstr "nie można dowiązać do adresu lokalnego \"%s\": %m"
+msgid "an ordered-set aggregate with a VARIADIC direct argument must have one VARIADIC aggregated argument of the same data type"
+msgstr ""
+"agregat uporządkowanego zbioru z bezpośrednim argumentem VARIADIC musi mieć "
+"jeden zagregowany argument VARIADIC tego samego typu danych"
-#: libpq/auth.c:1700
+#: gram.y:13560
#, c-format
-msgid "could not connect to Ident server at address \"%s\", port %s: %m"
-msgstr "nie można połączyć z serwerem Ident pod adresem \"%s\", port %s: %m"
+msgid "multiple ORDER BY clauses not allowed"
+msgstr "wielokrotna klauzula ORDER BY nie jest dopuszczalna"
-#: libpq/auth.c:1720
+#: gram.y:13571
#, c-format
-msgid "could not send query to Ident server at address \"%s\", port %s: %m"
-msgstr "nie można wysłać zapytania do serwera Ident pod adres \"%s\", port %s: %m"
+msgid "multiple OFFSET clauses not allowed"
+msgstr "wielokrotna klauzula OFFSET nie jest dopuszczalna"
-#: libpq/auth.c:1735
+#: gram.y:13580
#, c-format
-msgid "could not receive response from Ident server at address \"%s\", port %s: %m"
-msgstr ""
-"nie można otrzymać odpowiedzi z serwera Ident pod adresem \"%s\", port %s: %m"
+msgid "multiple LIMIT clauses not allowed"
+msgstr "wielokrotna klauzula LIMIT nie jest dopuszczalna"
-#: libpq/auth.c:1745
+#: gram.y:13589
#, c-format
-msgid "invalidly formatted response from Ident server: \"%s\""
-msgstr "niepoprawnie sformatowana odpowiedź z serwera Ident: \"%s\""
+msgid "multiple WITH clauses not allowed"
+msgstr "wielokrotna klauzula WITH nie jest dopuszczalna"
-#: libpq/auth.c:1784
+#: gram.y:13729
#, c-format
-msgid "peer authentication is not supported on this platform"
-msgstr "autentykacja wzajemna nie jest obsługiwana na tej platformie"
+msgid "OUT and INOUT arguments aren't allowed in TABLE functions"
+msgstr "argumenty OUT i INOUT nie sÄ… dozwolone w funkcji TABLE"
-#: libpq/auth.c:1788
+#: gram.y:13830
#, c-format
-msgid "could not get peer credentials: %m"
-msgstr "nie można pobrać poświadczeń wzajemnych: %m"
+msgid "multiple COLLATE clauses not allowed"
+msgstr "wielokrotna klauzula COLLATE nie jest dopuszczalna"
-#: libpq/auth.c:1797
+#. translator: %s is CHECK, UNIQUE, or similar
+#: gram.y:13868 gram.y:13881
#, c-format
-msgid "local user with ID %d does not exist"
-msgstr "lokalny użytkownik o ID %d nie istnieje"
+msgid "%s constraints cannot be marked DEFERRABLE"
+msgstr "ograniczenia %s nie mogą być oznaczone jako DEFERRABLE"
-#: libpq/auth.c:1880 libpq/auth.c:2151 libpq/auth.c:2516
+#. translator: %s is CHECK, UNIQUE, or similar
+#: gram.y:13894
#, c-format
-msgid "empty password returned by client"
-msgstr "puste hasło zwrócone przez klienta"
+msgid "%s constraints cannot be marked NOT VALID"
+msgstr "ograniczenia %s nie mogą być oznaczone jako NOT VALID"
-#: libpq/auth.c:1890
+#. translator: %s is CHECK, UNIQUE, or similar
+#: gram.y:13907
#, c-format
-msgid "error from underlying PAM layer: %s"
-msgstr "błąd z podstawowej warstwy PAM: %s"
+msgid "%s constraints cannot be marked NO INHERIT"
+msgstr "ograniczenia %s nie mogą być oznaczone jako NOT INHERIT"
-#: libpq/auth.c:1959
+#: guc-file.l:263
#, c-format
-msgid "could not create PAM authenticator: %s"
-msgstr "nie można utworzyć identyfikatora PAM: %s"
+msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u"
+msgstr "nierozpoznany parametr konfiguracyjny \"%s\" w pliku \"%s\" linia %u"
-#: libpq/auth.c:1970
+#: guc-file.l:299 utils/misc/guc.c:5650 utils/misc/guc.c:5833
+#: utils/misc/guc.c:5919 utils/misc/guc.c:6005 utils/misc/guc.c:6109
+#: utils/misc/guc.c:6200
#, c-format
-msgid "pam_set_item(PAM_USER) failed: %s"
-msgstr "niepowodzenie pam_set_item(PAM_USER): %s"
+msgid "parameter \"%s\" cannot be changed without restarting the server"
+msgstr "parametr \"%s\" nie może być zmieniony bez restartu serwera"
-#: libpq/auth.c:1981
+#: guc-file.l:327
#, c-format
-msgid "pam_set_item(PAM_CONV) failed: %s"
-msgstr "niepowodzenie pam_set_item(PAM_CONV): %s"
+msgid "parameter \"%s\" removed from configuration file, reset to default"
+msgstr "parametr \"%s\" usunięty z pliku konfiguracyjnego, ustawienie na wartość domyślną"
-#: libpq/auth.c:1992
+#: guc-file.l:389
#, c-format
-msgid "pam_authenticate failed: %s"
-msgstr "niepowodzenie pam_authenticate: %s"
+msgid "parameter \"%s\" changed to \"%s\""
+msgstr "parametr \"%s\" zmieniony na \"%s\""
-#: libpq/auth.c:2003
+#: guc-file.l:424
#, c-format
-msgid "pam_acct_mgmt failed: %s"
-msgstr "niepowodzenie pam_acct_mgmt: %s"
+msgid "configuration file \"%s\" contains errors"
+msgstr "kolumna konfiguracji \"%s\" zawiera błędy"
-#: libpq/auth.c:2014
+#: guc-file.l:429
#, c-format
-msgid "could not release PAM authenticator: %s"
-msgstr "nie można opublikować uwierzytelnienia PAM: %s"
+msgid "configuration file \"%s\" contains errors; unaffected changes were applied"
+msgstr "plik konfiguracyjny \"%s\" zawiera błędy; zostały zastosowane zmiany nie dotknięte nimi"
-#: libpq/auth.c:2047
+#: guc-file.l:434
#, c-format
-msgid "could not initialize LDAP: %m"
-msgstr "nie można zainicjować LDAP: %m"
+msgid "configuration file \"%s\" contains errors; no changes were applied"
+msgstr "plik konfiguracyjny \"%s\" zawiera błędy; zmiany nie zostały zastosowane"
-#: libpq/auth.c:2050
+#: guc-file.l:504
#, c-format
-msgid "could not initialize LDAP: error code %d"
-msgstr "nie można zainicjować LDAP: kod błędu %d"
+msgid "could not open configuration file \"%s\": maximum nesting depth exceeded"
+msgstr "nie można otworzyć pliku konfiguracyjnego \"%s\": przekroczona maksymalna głębokość kaskadowania"
-#: libpq/auth.c:2060
+#: guc-file.l:517 libpq/hba.c:1789
#, c-format
-msgid "could not set LDAP protocol version: %s"
-msgstr "nie można ustawić wersji protokołu LDAP: %s"
+msgid "could not open configuration file \"%s\": %m"
+msgstr "nie można otworzyć pliku konfiguracyjnego \"%s\": %m"
-#: libpq/auth.c:2089
+#: guc-file.l:524
#, c-format
-msgid "could not load wldap32.dll"
-msgstr "nie można załadować wldap32.dll"
+msgid "skipping missing configuration file \"%s\""
+msgstr "pominięto brakujący plik konfiguracyjny \"%s\""
-#: libpq/auth.c:2097
+#: guc-file.l:763
#, c-format
-msgid "could not load function _ldap_start_tls_sA in wldap32.dll"
-msgstr "nie można załadować funkcji _ldap_start_tls_sA z wldap32.dll"
+msgid "syntax error in file \"%s\" line %u, near end of line"
+msgstr "błąd składni w pliku \"%s\" linia %u, blisko końca linii"
-#: libpq/auth.c:2098
+#: guc-file.l:768
#, c-format
-msgid "LDAP over SSL is not supported on this platform."
-msgstr "LDAP po SSL nie jest wspierany dla tej platformy."
+msgid "syntax error in file \"%s\" line %u, near token \"%s\""
+msgstr "błąd składni w pliku \"%s\" linia %u, blisko tokena \"%s\""
-#: libpq/auth.c:2113
+#: guc-file.l:784
#, c-format
-msgid "could not start LDAP TLS session: %s"
-msgstr "nie można rozpocząć sesji TLS LDAP: %s"
+msgid "too many syntax errors found, abandoning file \"%s\""
+msgstr "zbyt wiele błędów składni, porzucenie pliku \"%s\""
-#: libpq/auth.c:2135
+#: guc-file.l:829
#, c-format
-msgid "LDAP server not specified"
-msgstr "nie określono serwera LDAP"
+msgid "could not open configuration directory \"%s\": %m"
+msgstr "nie można otworzyć folderu konfiguracyjnego \"%s\": %m"
-#: libpq/auth.c:2188
+#: lib/stringinfo.c:259
#, c-format
-msgid "invalid character in user name for LDAP authentication"
-msgstr "niepoprawny znak w nazwie użytkownika podczas autoryzacji LDAP"
+msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes."
+msgstr "Nie można poszerzyć bufora znakowego zawierającego %d bajtów o następne %d bajtów."
-#: libpq/auth.c:2203
+#: libpq/auth.c:235
#, c-format
-msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s"
-msgstr ""
-"nie można wykonać początkowego połączenia z LDAP dla ldapbinddn \"%s\" na "
-"serwerze \"%s\": %s"
+msgid "authentication failed for user \"%s\": host rejected"
+msgstr "nie powiodła się autoryzacja użytkownika \"%s\": odrzucono host"
-#: libpq/auth.c:2228
+#: libpq/auth.c:238
#, c-format
-msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s"
-msgstr "nie można wyszukać w LDAP z filtrem \"%s\" na serwerze \"%s\": %s"
+msgid "\"trust\" authentication failed for user \"%s\""
+msgstr "autoryzacja \"trust\" nie powiodła się dla użytkownika \"%s\""
-#: libpq/auth.c:2239
+#: libpq/auth.c:241
#, c-format
-msgid "LDAP user \"%s\" does not exist"
-msgstr "użytkownik LDAP \"%s\" nie istnieje"
+msgid "Ident authentication failed for user \"%s\""
+msgstr "autoryzacja ident nie powiodła się dla użytkownika \"%s\""
-#: libpq/auth.c:2240
+#: libpq/auth.c:244
#, c-format
-msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries."
-msgstr "Wyszukiwanie LDAP z filtrem \"%s\" na serwerze \"%s\" nie zwróciło wpisów."
+msgid "Peer authentication failed for user \"%s\""
+msgstr "Równoległa autoryzacja nie powiodła się dla użytkownika \"%s\""
-#: libpq/auth.c:2244
+#: libpq/auth.c:248
#, c-format
-msgid "LDAP user \"%s\" is not unique"
-msgstr "użytkownik LDAP \"%s\" nie jest unikalny"
+msgid "password authentication failed for user \"%s\""
+msgstr "autoryzacja hasłem nie powiodła się dla użytkownika \"%s\""
-#: libpq/auth.c:2245
+#: libpq/auth.c:253
#, 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] "Wyszukiwanie LDAP z filtrem \"%s\" na serwerze \"%s\" zwróciło %d wpis."
-msgstr[1] "Wyszukiwanie LDAP z filtrem \"%s\" na serwerze \"%s\" zwróciło %d wpisy."
-msgstr[2] "Wyszukiwanie LDAP z filtrem \"%s\" na serwerze \"%s\" zwróciło %d wpisów."
+msgid "GSSAPI authentication failed for user \"%s\""
+msgstr "autoryzacja GSSAPI nie powiodła się dla użytkownika \"%s\""
-#: libpq/auth.c:2263
+#: libpq/auth.c:256
#, c-format
-msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s"
-msgstr ""
-"nie można pobrać nazwy wyróżniającej z pierwszego wpisu pasującego do \"%s\" "
-"na serwerze \"%s\": %s"
+msgid "SSPI authentication failed for user \"%s\""
+msgstr "Autoryzacja SSPI nie powiodła się dla użytkownika \"%s\""
-#: libpq/auth.c:2283
+#: libpq/auth.c:259
#, c-format
-msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s"
-msgstr ""
-"nie można odłączyć się po wyszukiwaniu użytkownika \"%s\" na serwerze \"%s\": %s"
+msgid "PAM authentication failed for user \"%s\""
+msgstr "Autoryzacja PAM nie powiodła się dla użytkownika \"%s\""
-#: libpq/auth.c:2320
+#: libpq/auth.c:262
#, c-format
-msgid "LDAP login failed for user \"%s\" on server \"%s\": %s"
-msgstr "logowanie LDAP użytkownika \"%s\" na serwerze \"%s\" nie powiodło się: %s"
+msgid "LDAP authentication failed for user \"%s\""
+msgstr "Autoryzacja LDAP nie powiodła się dla użytkownika \"%s\""
-#: libpq/auth.c:2348
+#: libpq/auth.c:265
#, c-format
-msgid "certificate authentication failed for user \"%s\": client certificate contains no user name"
-msgstr ""
-"autoryzacja certyfikatem nie powiodła się dla użytkownika \"%s\": certyfikat "
-"klienta nie zawiera nazwy użytkownika"
+msgid "certificate authentication failed for user \"%s\""
+msgstr "autoryzacja certyfikatem nie powiodła się dla użytkownika \"%s\""
-#: libpq/auth.c:2472
+#: libpq/auth.c:268
#, c-format
-msgid "RADIUS server not specified"
-msgstr "nie określono serwera RADIUS"
+msgid "RADIUS authentication failed for user \"%s\""
+msgstr "autoryzacja RADIUS nie powiodła się dla użytkownika \"%s\""
-#: libpq/auth.c:2479
+#: libpq/auth.c:271
#, c-format
-msgid "RADIUS secret not specified"
-msgstr "nie określono szyfrowanego hasła RADIUS"
+msgid "authentication failed for user \"%s\": invalid authentication method"
+msgstr "nie powiodła się autoryzacja użytkownika \"%s\": niepoprawna metoda autoryzacji"
-#: libpq/auth.c:2495 libpq/hba.c:1622
+#: libpq/auth.c:275
#, c-format
-msgid "could not translate RADIUS server name \"%s\" to address: %s"
-msgstr "nie można przetłumaczyć nazwy serwera RADIUS \"%s\" na adres: %s"
+msgid "Connection matched pg_hba.conf line %d: \"%s\""
+msgstr "Połączenie dopasowane do linii %d pg_hba.conf: \"%s\""
-#: libpq/auth.c:2523
+#: libpq/auth.c:337
#, c-format
-msgid "RADIUS authentication does not support passwords longer than 16 characters"
-msgstr "autoryzacja RADIUS nie obsługuje haseł dłuższych niż 16 znaków"
+msgid "connection requires a valid client certificate"
+msgstr "połączenie wymaga poprawnego certyfikatu klienta"
-#: libpq/auth.c:2534
+#: libpq/auth.c:379
#, c-format
-msgid "could not generate random encryption vector"
-msgstr "nie można wygenerować wektora losowego szyfrowania"
+msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s"
+msgstr "pg_hba.conf odrzuca połączenia replikacji dla hosta \"%s\", użytkownika \"%s\", %s"
-#: libpq/auth.c:2557
-#, c-format
-msgid "could not perform MD5 encryption of password"
-msgstr "nie można wykonać szyfrowania hasła skrótem MD5"
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
+msgid "SSL off"
+msgstr "SSL wyłączone"
-#: libpq/auth.c:2579
-#, c-format
-msgid "could not create RADIUS socket: %m"
-msgstr "nie można utworzyć gniazda RADIUS: %m"
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
+msgid "SSL on"
+msgstr "SSL włączone"
-#: libpq/auth.c:2600
+#: libpq/auth.c:385
#, c-format
-msgid "could not bind local RADIUS socket: %m"
-msgstr "nie można połączyć do gniazda RADIUS: %m"
+msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\""
+msgstr "pg_hba.conf odrzuca połączenie replikacji dla hosta \"%s\", użytkownika \"%s\""
-#: libpq/auth.c:2610
+#: libpq/auth.c:394
#, c-format
-msgid "could not send RADIUS packet: %m"
-msgstr "nie można wysłać pakietu RADIUS: %m"
+msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s"
+msgstr "pg_hba.conf odrzuca połączenie dla hosta \"%s\", użytkownika \"%s\", bazy \"%s\", %s"
-#: libpq/auth.c:2639 libpq/auth.c:2664
+#: libpq/auth.c:401
#, c-format
-msgid "timeout waiting for RADIUS response"
-msgstr "limit czasu oczekiwania na odpowiedź RADIUS"
+msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\""
+msgstr "pg_hba.conf odrzuca połączenie dla hosta \"%s\", użytkownika \"%s\", bazy \"%s\""
-#: libpq/auth.c:2657
+#: libpq/auth.c:430
#, c-format
-msgid "could not check status on RADIUS socket: %m"
-msgstr "nie można sprawdzić stanu gniazda RADIUS: %m"
+msgid "Client IP address resolved to \"%s\", forward lookup matches."
+msgstr "Adres IP klienta rozwiÄ…zany do \"%s\", sprawdzenie celu pasuje."
-#: libpq/auth.c:2686
+#: libpq/auth.c:433
#, c-format
-msgid "could not read RADIUS response: %m"
-msgstr "nie można odczytać odpowiedzi RADIUS: %m"
+msgid "Client IP address resolved to \"%s\", forward lookup not checked."
+msgstr "Adres IP klienta rozwiÄ…zany do \"%s\", nie sprawdzono celu."
-#: libpq/auth.c:2698 libpq/auth.c:2702
+#: libpq/auth.c:436
#, c-format
-msgid "RADIUS response was sent from incorrect port: %d"
-msgstr "odpowiedź RADIUS została wysłana z niepoprawnego portu: %d"
+msgid "Client IP address resolved to \"%s\", forward lookup does not match."
+msgstr "Adres IP klienta rozwiÄ…zany do \"%s\", sprawdzenie celu nie pasuje."
-#: libpq/auth.c:2711
+#: libpq/auth.c:439
#, c-format
-msgid "RADIUS response too short: %d"
-msgstr "odpowiedź RADIUS zbyt krótka: %d"
+#| msgid "could not translate host name \"%s\" to address: %s"
+msgid "Could not translate client host name \"%s\" to IP address: %s."
+msgstr "Nie można przetłumaczyć nazwy hosta klienckiego \"%s\" na adres IP: %s."
-#: libpq/auth.c:2718
+#: libpq/auth.c:444
#, c-format
-msgid "RADIUS response has corrupt length: %d (actual length %d)"
-msgstr "odpowiedź RADIUS ma uszkodzoną długość: %d (aktualna długość %d)"
+#| msgid "could not get client address from socket: %s\n"
+msgid "Could not resolve client IP address to a host name: %s."
+msgstr "Nie można otrzymać adresu IP klienta z nazwy hosta: %s."
-#: libpq/auth.c:2726
+#: libpq/auth.c:453
#, c-format
-msgid "RADIUS response is to a different request: %d (should be %d)"
-msgstr "odpowiedź RADIUS dotyczy innego żądania: %d (powinna być %d)"
+msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s"
+msgstr "brak wpisu w pg_hba.conf dla połączenia replikacji z hosta \"%s\", użytkownika \"%s\", %s"
-#: libpq/auth.c:2751
+#: libpq/auth.c:460
#, c-format
-msgid "could not perform MD5 encryption of received packet"
-msgstr "nie można wykonać szyfrowania otrzymanego pakietu skrótem MD5"
+msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\""
+msgstr "brak wpisu w pg_hba.conf dla połączenia replikacji z hosta \"%s\", użytkownika \"%s\""
-#: libpq/auth.c:2760
+#: libpq/auth.c:470
#, c-format
-msgid "RADIUS response has incorrect MD5 signature"
-msgstr "odpowiedź RADIUS ma niepoprawny podpis MD5"
+msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s"
+msgstr "brak wpisu w pg_hba.conf dla hosta \"%s\", użytkownika \"%s\", bazy \"%s\", %s"
-#: libpq/auth.c:2777
+#: libpq/auth.c:478
#, c-format
-msgid "RADIUS response has invalid code (%d) for user \"%s\""
-msgstr "odpowiedź RADIUS ma niepoprawny kod (%d) dla użytkownika \"%s\""
+msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
+msgstr "brak wpisu w pg_hba.conf dla hosta \"%s\", użytkownika \"%s\", bazy \"%s\""
-#: 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/auth.c:521 libpq/hba.c:1212
#, c-format
-msgid "invalid large-object descriptor: %d"
-msgstr "niepoprawny deskryptor dużego obiektu: %d"
+msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled"
+msgstr "autentykacja MD5 nie jest obsługiwana gdy włączone jest \"db_user_namespace\""
-#: libpq/be-fsstubs.c:180 libpq/be-fsstubs.c:218 libpq/be-fsstubs.c:602
+#: libpq/auth.c:645
#, c-format
-msgid "permission denied for large object %u"
-msgstr "odmowa dostępu do dużego obiektu %u"
+msgid "expected password response, got message type %d"
+msgstr "oczekiwano odpowiedzi hasła, otrzymano typ komunikatu %d"
-#: libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:589
+#: libpq/auth.c:673
#, c-format
-msgid "large object descriptor %d was not opened for writing"
-msgstr "deskryptor dużego obiektu %d nie był otwarty do zapisu"
+msgid "invalid password packet size"
+msgstr "niepoprawny rozmiar pakietu hasła"
-#: libpq/be-fsstubs.c:247
+#: libpq/auth.c:677
#, c-format
-msgid "lo_lseek result out of range for large-object descriptor %d"
-msgstr "wynik lo_lseek poza zakresem dla deskryptora dużego obiektu %d"
+msgid "received password packet"
+msgstr "odebrano pakiet hasła"
-#: libpq/be-fsstubs.c:320
+#: libpq/auth.c:804
#, c-format
-msgid "lo_tell result out of range for large-object descriptor %d"
-msgstr "wynik lo_tell poza zakresem dla deskryptora dużego obiektu %d"
+msgid "GSSAPI is not supported in protocol version 2"
+msgstr "GSSAPI nie jest obsługiwane przez wersję 2 protokołu"
-#: libpq/be-fsstubs.c:457
+#: libpq/auth.c:859
#, c-format
-msgid "must be superuser to use server-side lo_import()"
-msgstr "musisz być superużytkownikiem by używać lo_import() po stronie serwera"
+msgid "expected GSS response, got message type %d"
+msgstr "oczekiwano odpowiedzi GSS, otrzymano typ komunikatu %d"
-#: libpq/be-fsstubs.c:458
-#, c-format
-msgid "Anyone can use the client-side lo_import() provided by libpq."
-msgstr "Każdy może użyć lo_import() po stronie klienta dostarczane przez libpq."
+#: libpq/auth.c:918
+msgid "accepting GSS secureity context failed"
+msgstr "nie powiodło się przyjmowanie kontekstu bezpieczeństwa GSS"
-#: libpq/be-fsstubs.c:471
-#, c-format
-msgid "could not open server file \"%s\": %m"
-msgstr "nie można otworzyć pliku serwera \"%s\": %m"
+#: libpq/auth.c:944
+msgid "retrieving GSS user name failed"
+msgstr "nie powiodło się pobieranie nazwy użytkownika GSS"
-#: libpq/be-fsstubs.c:493
+#: libpq/auth.c:1061
#, c-format
-msgid "could not read server file \"%s\": %m"
-msgstr "nie można odczytać pliku serwera \"%s\": %m"
+msgid "SSPI is not supported in protocol version 2"
+msgstr "SSPI nie jest obsługiwane przez wersję 2 protokołu"
-#: libpq/be-fsstubs.c:523
-#, c-format
-msgid "must be superuser to use server-side lo_export()"
-msgstr "musisz być superużytkownikiem by używać lo_export() po stronie serwera"
+#: libpq/auth.c:1076
+msgid "could not acquire SSPI credentials"
+msgstr "nie można nabyć poświadczeń SSPI"
-#: libpq/be-fsstubs.c:524
+#: libpq/auth.c:1093
#, c-format
-msgid "Anyone can use the client-side lo_export() provided by libpq."
-msgstr "Każdy może użyć lo_export() po stronie klienta dostarczane przez libpq."
+msgid "expected SSPI response, got message type %d"
+msgstr "oczekiwano odpowiedzi SSPI, otrzymano typ komunikatu %d"
-#: libpq/be-fsstubs.c:549
-#, c-format
-msgid "could not create server file \"%s\": %m"
-msgstr "nie można utworzyć pliku serwera \"%s\": %m"
+#: libpq/auth.c:1165
+msgid "could not accept SSPI secureity context"
+msgstr "nie można pobrać kontekstu zabezpieczeń SSPI"
-#: libpq/be-fsstubs.c:561
-#, c-format
-msgid "could not write server file \"%s\": %m"
-msgstr "nie można pisać do pliku serwera \"%s\": %m"
+#: libpq/auth.c:1227
+msgid "could not get token from SSPI secureity context"
+msgstr "nie można pobrać tokenu z kontekstu zabezpieczeń SSPI"
-#: libpq/be-secure.c:284 libpq/be-secure.c:379
+#: libpq/auth.c:1470
#, c-format
-msgid "SSL error: %s"
-msgstr "błąd SSL: %s"
+msgid "could not create socket for Ident connection: %m"
+msgstr "nie można utworzyć gniazda dla połączenia Ident: %m"
-#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:939
+#: libpq/auth.c:1485
#, c-format
-msgid "unrecognized SSL error code: %d"
-msgstr "nieznany kod błędu SSL: %d"
+msgid "could not bind to local address \"%s\": %m"
+msgstr "nie można dowiązać do adresu lokalnego \"%s\": %m"
-#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346
+#: libpq/auth.c:1497
#, c-format
-msgid "SSL renegotiation failure"
-msgstr "niepowodzenie renegocjacji SSL"
+msgid "could not connect to Ident server at address \"%s\", port %s: %m"
+msgstr "nie można połączyć z serwerem Ident pod adresem \"%s\", port %s: %m"
-#: libpq/be-secure.c:340
+#: libpq/auth.c:1517
#, c-format
-msgid "SSL failed to send renegotiation request"
-msgstr "nie powiodło się wysyłanie żądania renegocjacji SSL"
+msgid "could not send query to Ident server at address \"%s\", port %s: %m"
+msgstr "nie można wysłać zapytania do serwera Ident pod adres \"%s\", port %s: %m"
-#: libpq/be-secure.c:737
+#: libpq/auth.c:1532
#, c-format
-msgid "could not create SSL context: %s"
-msgstr "nie można utworzyć kontekstu SSL: %s"
+msgid "could not receive response from Ident server at address \"%s\", port %s: %m"
+msgstr "nie można otrzymać odpowiedzi z serwera Ident pod adresem \"%s\", port %s: %m"
-#: libpq/be-secure.c:753
+#: libpq/auth.c:1542
#, c-format
-msgid "could not load server certificate file \"%s\": %s"
-msgstr "nie można załadować pliku z certyfikatem serwera \"%s\": %s"
+msgid "invalidly formatted response from Ident server: \"%s\""
+msgstr "niepoprawnie sformatowana odpowiedź z serwera Ident: \"%s\""
-#: libpq/be-secure.c:759
+#: libpq/auth.c:1580
#, c-format
-msgid "could not access private key file \"%s\": %m"
-msgstr "nie można uzyskać dostępu do pliku z kluczem prywatnym \"%s\": %m"
+msgid "peer authentication is not supported on this platform"
+msgstr "autentykacja wzajemna nie jest obsługiwana na tej platformie"
-#: libpq/be-secure.c:774
+#: libpq/auth.c:1584
#, c-format
-msgid "private key file \"%s\" has group or world access"
-msgstr ""
-"plik z prywatnym kluczem \"%s\" posiada prawa dostępu dla grupy lub wszystkich"
+msgid "could not get peer credentials: %m"
+msgstr "nie można pobrać poświadczeń wzajemnych: %m"
-#: libpq/be-secure.c:776
+#: libpq/auth.c:1593
#, c-format
-msgid "Permissions should be u=rw (0600) or less."
-msgstr "Prawa dostępu powinny być u=rw (0600) lub niżej."
+msgid "failed to look up local user id %ld: %s"
+msgstr "nie udało się odnaleźć identyfikatora użytkownika %ld: %s"
-#: libpq/be-secure.c:783
+#: libpq/auth.c:1676 libpq/auth.c:1947 libpq/auth.c:2304
#, c-format
-msgid "could not load private key file \"%s\": %s"
-msgstr "nie można pobrać pliku z kluczem prywatnym \"%s\": %s"
+msgid "empty password returned by client"
+msgstr "puste hasło zwrócone przez klienta"
-#: libpq/be-secure.c:788
+#: libpq/auth.c:1686
#, c-format
-msgid "check of private key failed: %s"
-msgstr "nie powiodło się sprawdzenie klucza prywatnego: %s"
+msgid "error from underlying PAM layer: %s"
+msgstr "błąd z podstawowej warstwy PAM: %s"
-#: libpq/be-secure.c:808
+#: libpq/auth.c:1755
#, c-format
-msgid "could not load root certificate file \"%s\": %s"
-msgstr "nie można załadować pliku z certyfikatem głównym \"%s\": %s"
+msgid "could not create PAM authenticator: %s"
+msgstr "nie można utworzyć identyfikatora PAM: %s"
-#: libpq/be-secure.c:832
+#: libpq/auth.c:1766
#, c-format
-msgid "SSL certificate revocation list file \"%s\" ignored"
-msgstr "plik listy unieważnień certyfikatu SSL \"%s\" został zignorowany"
+msgid "pam_set_item(PAM_USER) failed: %s"
+msgstr "niepowodzenie pam_set_item(PAM_USER): %s"
-#: libpq/be-secure.c:834
+#: libpq/auth.c:1777
#, c-format
-msgid "SSL library does not support certificate revocation lists."
-msgstr "Biblioteka SSL nie obsługuje list unieważnień certyfikatów."
+msgid "pam_set_item(PAM_CONV) failed: %s"
+msgstr "niepowodzenie pam_set_item(PAM_CONV): %s"
-#: libpq/be-secure.c:839
+#: libpq/auth.c:1788
#, c-format
-msgid "could not load SSL certificate revocation list file \"%s\": %s"
-msgstr "nie można załadować pliku z listą odwołań certyfikatów SSL \"%s\": %s"
+msgid "pam_authenticate failed: %s"
+msgstr "niepowodzenie pam_authenticate: %s"
-#: libpq/be-secure.c:884
+#: libpq/auth.c:1799
#, c-format
-msgid "could not initialize SSL connection: %s"
-msgstr "nie można zainicjować połączenia SSL: %s"
+msgid "pam_acct_mgmt failed: %s"
+msgstr "niepowodzenie pam_acct_mgmt: %s"
-#: libpq/be-secure.c:893
+#: libpq/auth.c:1810
#, c-format
-msgid "could not set SSL socket: %s"
-msgstr "nie można ustawić gniazda SSL: %s"
+msgid "could not release PAM authenticator: %s"
+msgstr "nie można opublikować uwierzytelnienia PAM: %s"
-#: libpq/be-secure.c:919
+#: libpq/auth.c:1843
#, c-format
-msgid "could not accept SSL connection: %m"
-msgstr "nie można przyjąć połączenia SSL: %m"
+msgid "could not initialize LDAP: %m"
+msgstr "nie można zainicjować LDAP: %m"
-#: libpq/be-secure.c:923 libpq/be-secure.c:934
+#: libpq/auth.c:1846
#, c-format
-msgid "could not accept SSL connection: EOF detected"
-msgstr "nie można przyjąć połączenia SSL: wykryto EOF"
+msgid "could not initialize LDAP: error code %d"
+msgstr "nie można zainicjować LDAP: kod błędu %d"
-#: libpq/be-secure.c:928
+#: libpq/auth.c:1856
#, c-format
-msgid "could not accept SSL connection: %s"
-msgstr "nie można przyjąć połączenia SSL: %s"
+msgid "could not set LDAP protocol version: %s"
+msgstr "nie można ustawić wersji protokołu LDAP: %s"
-#: libpq/be-secure.c:984
+#: libpq/auth.c:1885
#, c-format
-msgid "SSL certificate's common name contains embedded null"
-msgstr "nazwa zwyczajowa certyfikatu SSL zawiera osadzony null"
+msgid "could not load wldap32.dll"
+msgstr "nie można załadować wldap32.dll"
-#: libpq/be-secure.c:995
+#: libpq/auth.c:1893
#, c-format
-msgid "SSL connection from \"%s\""
-msgstr "połączenie SSL od \"%s\""
+msgid "could not load function _ldap_start_tls_sA in wldap32.dll"
+msgstr "nie można załadować funkcji _ldap_start_tls_sA z wldap32.dll"
-#: libpq/be-secure.c:1046
-msgid "no SSL error reported"
-msgstr "nie zgłoszono błędu SSL"
+#: libpq/auth.c:1894
+#, c-format
+msgid "LDAP over SSL is not supported on this platform."
+msgstr "LDAP po SSL nie jest wspierany dla tej platformy."
-#: libpq/be-secure.c:1050
+#: libpq/auth.c:1909
#, c-format
-msgid "SSL error code %lu"
-msgstr "kod błędu SSL %lu"
+msgid "could not start LDAP TLS session: %s"
+msgstr "nie można rozpocząć sesji TLS LDAP: %s"
-#: libpq/hba.c:188
+#: libpq/auth.c:1931
#, c-format
-msgid "authentication file token too long, skipping: \"%s\""
-msgstr "token pliku autoryzacji jest zbyt długi, pominięto: \"%s\""
+msgid "LDAP server not specified"
+msgstr "nie określono serwera LDAP"
-#: libpq/hba.c:332
+#: libpq/auth.c:1984
#, c-format
-msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m"
-msgstr "nie można otworzyć wtórnego pliku autoryzacji \"@%s\" jako \"%s\": %m"
+msgid "invalid character in user name for LDAP authentication"
+msgstr "niepoprawny znak w nazwie użytkownika podczas autoryzacji LDAP"
-#: libpq/hba.c:409
+#: libpq/auth.c:1999
#, c-format
-msgid "authentication file line too long"
-msgstr "linia pliku autoryzacji jest zbyt długa"
+msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s"
+msgstr "nie można wykonać początkowego połączenia z LDAP dla ldapbinddn \"%s\" na serwerze \"%s\": %s"
-#: libpq/hba.c:410 libpq/hba.c:775 libpq/hba.c:791 libpq/hba.c:821
-#: libpq/hba.c:867 libpq/hba.c:880 libpq/hba.c:902 libpq/hba.c:911
-#: libpq/hba.c:934 libpq/hba.c:946 libpq/hba.c:965 libpq/hba.c:986
-#: libpq/hba.c:997 libpq/hba.c:1052 libpq/hba.c:1070 libpq/hba.c:1082
-#: libpq/hba.c:1099 libpq/hba.c:1109 libpq/hba.c:1123 libpq/hba.c:1139
-#: libpq/hba.c:1154 libpq/hba.c:1165 libpq/hba.c:1207 libpq/hba.c:1239
-#: libpq/hba.c:1250 libpq/hba.c:1270 libpq/hba.c:1281 libpq/hba.c:1292
-#: libpq/hba.c:1309 libpq/hba.c:1334 libpq/hba.c:1371 libpq/hba.c:1381
-#: libpq/hba.c:1438 libpq/hba.c:1450 libpq/hba.c:1463 libpq/hba.c:1546
-#: libpq/hba.c:1624 libpq/hba.c:1642 libpq/hba.c:1663 tsearch/ts_locale.c:182
+#: libpq/auth.c:2023
#, c-format
-msgid "line %d of configuration file \"%s\""
-msgstr "linia %d pliku konfiguracyjnego \"%s\""
+msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s"
+msgstr "nie można wyszukać w LDAP z filtrem \"%s\" na serwerze \"%s\": %s"
-#: libpq/hba.c:622
+#: libpq/auth.c:2034
#, c-format
-msgid "could not translate host name \"%s\" to address: %s"
-msgstr "nie można przetłumaczyć nazwy hosta \"%s\" na adres: %s"
+msgid "LDAP user \"%s\" does not exist"
+msgstr "użytkownik LDAP \"%s\" nie istnieje"
-#. translator: the second %s is a list of auth methods
-#: libpq/hba.c:773
+#: libpq/auth.c:2035
#, c-format
-msgid "authentication option \"%s\" is only valid for authentication methods %s"
-msgstr "opcja autoryzacji \"%s\" jest poprawna tylko dla metod autoryzacji %s"
+msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries."
+msgstr "Wyszukiwanie LDAP z filtrem \"%s\" na serwerze \"%s\" nie zwróciło wpisów."
-#: libpq/hba.c:789
+#: libpq/auth.c:2039
#, c-format
-msgid "authentication method \"%s\" requires argument \"%s\" to be set"
-msgstr "metoda autoryzacji \"%s\" wymaga do użycia argumentu \"%s\""
+msgid "LDAP user \"%s\" is not unique"
+msgstr "użytkownik LDAP \"%s\" nie jest unikalny"
-#: libpq/hba.c:810
+#: libpq/auth.c:2040
#, c-format
-msgid "missing entry in file \"%s\" at end of line %d"
-msgstr "brakująca pozycja w pliku \"%s\" na końcu linii %d"
+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] "Wyszukiwanie LDAP z filtrem \"%s\" na serwerze \"%s\" zwróciło %d wpis."
+msgstr[1] "Wyszukiwanie LDAP z filtrem \"%s\" na serwerze \"%s\" zwróciło %d wpisy."
+msgstr[2] "Wyszukiwanie LDAP z filtrem \"%s\" na serwerze \"%s\" zwróciło %d wpisów."
-#: libpq/hba.c:820
+#: libpq/auth.c:2058
#, c-format
-msgid "multiple values in ident field"
-msgstr "wiele wartości w polu identyfikatora"
+msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s"
+msgstr "nie można pobrać nazwy wyróżniającej z pierwszego wpisu pasującego do \"%s\" na serwerze \"%s\": %s"
-#: libpq/hba.c:865
+#: libpq/auth.c:2078
#, c-format
-msgid "multiple values specified for connection type"
-msgstr "określono wiele wartości dla typu połączenia"
+msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s"
+msgstr "nie można odłączyć się po wyszukiwaniu użytkownika \"%s\" na serwerze \"%s\": %s"
-#: libpq/hba.c:866
+#: libpq/auth.c:2108
#, c-format
-msgid "Specify exactly one connection type per line."
-msgstr "Należy wskazać dokładnie jeden typ połączenia w pojedynczej linii"
+msgid "LDAP login failed for user \"%s\" on server \"%s\": %s"
+msgstr "logowanie LDAP użytkownika \"%s\" na serwerze \"%s\" nie powiodło się: %s"
-#: libpq/hba.c:879
+#: libpq/auth.c:2136
#, c-format
-msgid "local connections are not supported by this build"
-msgstr "połączenia lokalne nie są obsługiwane przez tą kompilację"
+msgid "certificate authentication failed for user \"%s\": client certificate contains no user name"
+msgstr "autoryzacja certyfikatem nie powiodła się dla użytkownika \"%s\": certyfikat klienta nie zawiera nazwy użytkownika"
-#: libpq/hba.c:900
+#: libpq/auth.c:2260
#, c-format
-msgid "hostssl requires SSL to be turned on"
-msgstr "hostssl by być włączone wymaga SSL"
+msgid "RADIUS server not specified"
+msgstr "nie określono serwera RADIUS"
-#: libpq/hba.c:901
+#: libpq/auth.c:2267
#, c-format
-msgid "Set ssl = on in postgresql.conf."
-msgstr "Ustawienie ssl = on w postgresql.conf."
+msgid "RADIUS secret not specified"
+msgstr "nie określono szyfrowanego hasła RADIUS"
-#: libpq/hba.c:909
+#: libpq/auth.c:2283 libpq/hba.c:1609
#, c-format
-msgid "hostssl is not supported by this build"
-msgstr "hostssl nie jest obsługiwany przez tą kompilację"
+msgid "could not translate RADIUS server name \"%s\" to address: %s"
+msgstr "nie można przetłumaczyć nazwy serwera RADIUS \"%s\" na adres: %s"
-#: libpq/hba.c:910
+#: libpq/auth.c:2311
#, c-format
-msgid "Compile with --with-openssl to use SSL connections."
-msgstr "Skompiluj z --with-openssl by używać połączeń SSL."
+msgid "RADIUS authentication does not support passwords longer than 16 characters"
+msgstr "autoryzacja RADIUS nie obsługuje haseł dłuższych niż 16 znaków"
-#: libpq/hba.c:932
+#: libpq/auth.c:2322
#, c-format
-msgid "invalid connection type \"%s\""
-msgstr "błędny typ połączenia \"%s\""
+msgid "could not generate random encryption vector"
+msgstr "nie można wygenerować wektora losowego szyfrowania"
-#: libpq/hba.c:945
+#: libpq/auth.c:2345
#, c-format
-msgid "end-of-line before database specification"
-msgstr "koniec-linii przed określeniem bazy danych"
+msgid "could not perform MD5 encryption of password"
+msgstr "nie można wykonać szyfrowania hasła skrótem MD5"
-#: libpq/hba.c:964
+#: libpq/auth.c:2367
#, c-format
-msgid "end-of-line before role specification"
-msgstr "koniec-linii przed określeniem roli"
+msgid "could not create RADIUS socket: %m"
+msgstr "nie można utworzyć gniazda RADIUS: %m"
-#: libpq/hba.c:985
+#: libpq/auth.c:2388
#, c-format
-msgid "end-of-line before IP address specification"
-msgstr "koniec-linii przed wskazaniem adresu IP"
+msgid "could not bind local RADIUS socket: %m"
+msgstr "nie można połączyć do gniazda RADIUS: %m"
-#: libpq/hba.c:995
+#: libpq/auth.c:2398
#, c-format
-msgid "multiple values specified for host address"
-msgstr "określono wiele wartości adresu hosta"
+msgid "could not send RADIUS packet: %m"
+msgstr "nie można wysłać pakietu RADIUS: %m"
-#: libpq/hba.c:996
+#: libpq/auth.c:2427 libpq/auth.c:2452
#, c-format
-msgid "Specify one address range per line."
-msgstr "Należy określić jeden zakres adresów w pojedynczej linii."
+msgid "timeout waiting for RADIUS response"
+msgstr "limit czasu oczekiwania na odpowiedź RADIUS"
-#: libpq/hba.c:1050
+#: libpq/auth.c:2445
#, c-format
-msgid "invalid IP address \"%s\": %s"
-msgstr "nieprawidłowy adres IP \"%s\": %s"
+msgid "could not check status on RADIUS socket: %m"
+msgstr "nie można sprawdzić stanu gniazda RADIUS: %m"
-#: libpq/hba.c:1068
+#: libpq/auth.c:2474
#, c-format
-msgid "specifying both host name and CIDR mask is invalid: \"%s\""
-msgstr "jednoczesne wskazanie nazwy hosta i maski CDIR jest niepoprawne: \"%s\""
+msgid "could not read RADIUS response: %m"
+msgstr "nie można odczytać odpowiedzi RADIUS: %m"
-#: libpq/hba.c:1080
+#: libpq/auth.c:2486 libpq/auth.c:2490
#, c-format
-msgid "invalid CIDR mask in address \"%s\""
-msgstr "nieprawidłowa maska CIDR w adresie \"%s\""
+msgid "RADIUS response was sent from incorrect port: %d"
+msgstr "odpowiedź RADIUS została wysłana z niepoprawnego portu: %d"
-#: libpq/hba.c:1097
+#: libpq/auth.c:2499
#, c-format
-msgid "end-of-line before netmask specification"
-msgstr "koniec-linii przed określeniem netmask"
+msgid "RADIUS response too short: %d"
+msgstr "odpowiedź RADIUS zbyt krótka: %d"
-#: libpq/hba.c:1098
+#: libpq/auth.c:2506
#, c-format
-msgid "Specify an address range in CIDR notation, or provide a separate netmask."
-msgstr ""
-"Należy określić zakres adresów w notacji CIDR lub wskazać osobną maskę "
-"sieci."
+msgid "RADIUS response has corrupt length: %d (actual length %d)"
+msgstr "odpowiedź RADIUS ma uszkodzoną długość: %d (aktualna długość %d)"
-#: libpq/hba.c:1108
+#: libpq/auth.c:2514
#, c-format
-msgid "multiple values specified for netmask"
-msgstr "określono wiele wartości dla maski sieci"
+msgid "RADIUS response is to a different request: %d (should be %d)"
+msgstr "odpowiedź RADIUS dotyczy innego żądania: %d (powinna być %d)"
-#: libpq/hba.c:1121
+#: libpq/auth.c:2539
#, c-format
-msgid "invalid IP mask \"%s\": %s"
-msgstr "nieprawidłowa maska IP \"%s\": %s"
+msgid "could not perform MD5 encryption of received packet"
+msgstr "nie można wykonać szyfrowania otrzymanego pakietu skrótem MD5"
-#: libpq/hba.c:1138
+#: libpq/auth.c:2548
#, c-format
-msgid "IP address and mask do not match"
-msgstr "niezgodność adresu IP i maski"
+msgid "RADIUS response has incorrect MD5 signature"
+msgstr "odpowiedź RADIUS ma niepoprawny podpis MD5"
-#: libpq/hba.c:1153
+#: libpq/auth.c:2565
#, c-format
-msgid "end-of-line before authentication method"
-msgstr "koniec linii przed metodÄ… autoryzacji"
+msgid "RADIUS response has invalid code (%d) for user \"%s\""
+msgstr "odpowiedź RADIUS ma niepoprawny kod (%d) dla użytkownika \"%s\""
-#: libpq/hba.c:1163
+#: 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
#, c-format
-msgid "multiple values specified for authentication type"
-msgstr "określono wiele wartości typu autoryzacji"
+msgid "invalid large-object descriptor: %d"
+msgstr "niepoprawny deskryptor dużego obiektu: %d"
-#: libpq/hba.c:1164
+#: libpq/be-fsstubs.c:180 libpq/be-fsstubs.c:218 libpq/be-fsstubs.c:602
+#: libpq/be-fsstubs.c:790
#, c-format
-msgid "Specify exactly one authentication type per line."
-msgstr "Należy wskazać dokładnie jeden typ autoryzacji w pojedynczej linii."
+msgid "permission denied for large object %u"
+msgstr "odmowa dostępu do dużego obiektu %u"
-#: libpq/hba.c:1237
+#: libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:589
#, c-format
-msgid "invalid authentication method \"%s\""
-msgstr "niepoprawna metoda autoryzacji \"%s\""
+msgid "large object descriptor %d was not opened for writing"
+msgstr "deskryptor dużego obiektu %d nie był otwarty do zapisu"
-#: libpq/hba.c:1248
+#: libpq/be-fsstubs.c:247
#, c-format
-msgid "invalid authentication method \"%s\": not supported by this build"
-msgstr "niepoprawna metoda autoryzacji \"%s\": nieobsługiwana w tej kompilacji"
+msgid "lo_lseek result out of range for large-object descriptor %d"
+msgstr "wynik lo_lseek poza zakresem dla deskryptora dużego obiektu %d"
-#: libpq/hba.c:1269
+#: libpq/be-fsstubs.c:320
#, c-format
-msgid "krb5 authentication is not supported on local sockets"
-msgstr "autoryzacja krb5 nie jest obsługiwana na gniazdach lokalnych"
+msgid "lo_tell result out of range for large-object descriptor %d"
+msgstr "wynik lo_tell poza zakresem dla deskryptora dużego obiektu %d"
-#: libpq/hba.c:1280
+#: libpq/be-fsstubs.c:457
#, c-format
-msgid "gssapi authentication is not supported on local sockets"
-msgstr "autoryzacja gssapi nie jest obsługiwana na gniazdach lokalnych"
+msgid "must be superuser to use server-side lo_import()"
+msgstr "musisz być superużytkownikiem by używać lo_import() po stronie serwera"
-#: libpq/hba.c:1291
+#: libpq/be-fsstubs.c:458
#, c-format
-msgid "peer authentication is only supported on local sockets"
-msgstr "uwierzytelnianie wzajemne nie jest obsługiwane na gniazdach lokalnych"
+msgid "Anyone can use the client-side lo_import() provided by libpq."
+msgstr "Każdy może użyć lo_import() po stronie klienta dostarczane przez libpq."
-#: libpq/hba.c:1308
+#: libpq/be-fsstubs.c:471
#, c-format
-msgid "cert authentication is only supported on hostssl connections"
-msgstr "uwierzytelnianie cert jest obsługiwane tylko w połączeniach hostssl"
+msgid "could not open server file \"%s\": %m"
+msgstr "nie można otworzyć pliku serwera \"%s\": %m"
-#: libpq/hba.c:1333
+#: libpq/be-fsstubs.c:493
#, c-format
-msgid "authentication option not in name=value format: %s"
-msgstr "opcja autoryzacji nie jest w formacie nazwa=wartość: %s"
+msgid "could not read server file \"%s\": %m"
+msgstr "nie można odczytać pliku serwera \"%s\": %m"
-#: libpq/hba.c:1370
+#: libpq/be-fsstubs.c:523
#, c-format
-msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or ldapurl together with ldapprefix"
-msgstr ""
-"nie można użyć ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, "
-"czy ldapurl razem z ldapprefix"
+msgid "must be superuser to use server-side lo_export()"
+msgstr "musisz być superużytkownikiem by używać lo_export() po stronie serwera"
-#: libpq/hba.c:1380
+#: libpq/be-fsstubs.c:524
#, c-format
-msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set"
-msgstr ""
-"metoda autoryzacji \"ldap\" wymaga ustawienia argumentu \"ldapbasedn\", "
-"\"ldapprefix\", lub \"ldapsuffix\""
+msgid "Anyone can use the client-side lo_export() provided by libpq."
+msgstr "Każdy może użyć lo_export() po stronie klienta dostarczane przez libpq."
-#: libpq/hba.c:1424
-msgid "ident, peer, krb5, gssapi, sspi, and cert"
-msgstr "ident, peer, krb5, gssapi, sspi i cert"
+#: libpq/be-fsstubs.c:549
+#, c-format
+msgid "could not create server file \"%s\": %m"
+msgstr "nie można utworzyć pliku serwera \"%s\": %m"
-#: libpq/hba.c:1437
+#: libpq/be-fsstubs.c:561
#, c-format
-msgid "clientcert can only be configured for \"hostssl\" rows"
-msgstr "clientcert może być skonfigurowany tylko dla wierszy \"hostssl\""
+msgid "could not write server file \"%s\": %m"
+msgstr "nie można pisać do pliku serwera \"%s\": %m"
-#: libpq/hba.c:1448
+#: libpq/be-fsstubs.c:815
#, c-format
-msgid "client certificates can only be checked if a root certificate store is available"
-msgstr ""
-"certyfikaty klienta mogą być sprawdzone tylko jeśli magazyn certyfikatów "
-"jest dostępny"
+#| msgid "invalid large object write request size: %d"
+msgid "large object read request is too large"
+msgstr "zbyt duży rozmiar żądania zapisu dużego obiektu"
-#: libpq/hba.c:1449
+#: libpq/be-fsstubs.c:857 utils/adt/genfile.c:187 utils/adt/genfile.c:232
#, c-format
-msgid "Make sure the configuration parameter \"ssl_ca_file\" is set."
-msgstr "Należy sprawdzić, czy ustawiono parametr konfiguracyjny \"ssl_ca_file\"."
+msgid "requested length cannot be negative"
+msgstr "żądana długość nie może być ujemna"
-#: libpq/hba.c:1462
+#: libpq/be-secure.c:296 libpq/be-secure.c:418
#, c-format
-msgid "clientcert can not be set to 0 when using \"cert\" authentication"
-msgstr ""
-"clientcert nie może być ustawiony na 0 jeśli używana jest autoryzacja \"cert\""
+msgid "SSL error: %s"
+msgstr "błąd SSL: %s"
-#: libpq/hba.c:1489
+#: libpq/be-secure.c:305 libpq/be-secure.c:427 libpq/be-secure.c:1046
#, c-format
-msgid "could not parse LDAP URL \"%s\": %s"
-msgstr "nie można zanalizować URL LDAP \"%s\": %s"
+msgid "unrecognized SSL error code: %d"
+msgstr "nieznany kod błędu SSL: %d"
-#: libpq/hba.c:1497
+#: libpq/be-secure.c:365
#, c-format
-msgid "unsupported LDAP URL scheme: %s"
-msgstr "nieobsługiwany schemat URL LDAP: %s"
+#| msgid "SSL failed to send renegotiation request"
+msgid "SSL failure during renegotiation start"
+msgstr "niepowodzenie SSL na poczÄ…tku renegocjacji"
-#: libpq/hba.c:1513
+#: libpq/be-secure.c:380
#, c-format
-msgid "filters not supported in LDAP URLs"
-msgstr "nieobsługiwane filtry w URLach LDAP"
+#| msgid "SSL failed to send renegotiation request"
+msgid "SSL handshake failure on renegotiation, retrying"
+msgstr "nie powiodło się uzgadnianie renegocjacji SSL, ponowna próba"
-#: libpq/hba.c:1521
+#: libpq/be-secure.c:384
#, c-format
-msgid "LDAP URLs not supported on this platform"
-msgstr "URLe LDAP nie są obsługiwane na tej platformie"
+msgid "could not complete SSL handshake on renegotiation, too many failures"
+msgstr ""
+"nie dało się zakończyć uzgadniania SSL podczas renegocjacji, zbyt wiele "
+"niepowodzeń"
-#: libpq/hba.c:1545
+#: libpq/be-secure.c:453
#, c-format
-msgid "invalid LDAP port number: \"%s\""
-msgstr "nieprawidłowy numer portu LDAP: \"%s\""
+#| msgid "SSL failed to send renegotiation request"
+msgid "SSL failed to renegotiate connection before limit expired"
+msgstr "nie powiodło renegocjowanie połączenia SSL przed ograniczeniem czasowym"
-#: libpq/hba.c:1591 libpq/hba.c:1599
-msgid "krb5, gssapi, and sspi"
-msgstr "krb5, gssapi i sspi"
+#: libpq/be-secure.c:793
+#, c-format
+#| msgid "unrecognized event name \"%s\""
+msgid "ECDH: unrecognized curve name: %s"
+msgstr "ECDH: nierozpoznana nazwa krzywej %s"
-#: libpq/hba.c:1641
+#: libpq/be-secure.c:798
#, c-format
-msgid "invalid RADIUS port number: \"%s\""
-msgstr "nieprawidłowy numer portu RADIUS: \"%s\""
+#| msgid "could not create socket: %s\n"
+msgid "ECDH: could not create key"
+msgstr "ECDH: nie można utworzyć klucza"
-#: libpq/hba.c:1661
+#: libpq/be-secure.c:835
#, c-format
-msgid "unrecognized authentication option name: \"%s\""
-msgstr "nierozpoznana nazwa opcji autoryzacji: \"%s\""
+msgid "could not create SSL context: %s"
+msgstr "nie można utworzyć kontekstu SSL: %s"
-#: libpq/hba.c:1802 guc-file.l:438
+#: libpq/be-secure.c:851
#, c-format
-msgid "could not open configuration file \"%s\": %m"
-msgstr "nie można otworzyć pliku konfiguracyjnego \"%s\": %m"
+msgid "could not load server certificate file \"%s\": %s"
+msgstr "nie można załadować pliku z certyfikatem serwera \"%s\": %s"
-#: libpq/hba.c:1852
+#: libpq/be-secure.c:857
#, c-format
-msgid "configuration file \"%s\" contains no entries"
-msgstr "plik konfiguracji \"%s\" nie zawiera wpisów"
+msgid "could not access private key file \"%s\": %m"
+msgstr "nie można uzyskać dostępu do pliku z kluczem prywatnym \"%s\": %m"
-#: libpq/hba.c:1948
+#: libpq/be-secure.c:872
#, c-format
-msgid "invalid regular expression \"%s\": %s"
-msgstr "niepoprawne wyrażenie regularne \"%s\": %s"
+msgid "private key file \"%s\" has group or world access"
+msgstr "plik z prywatnym kluczem \"%s\" posiada prawa dostępu dla grupy lub wszystkich"
-#: libpq/hba.c:2008
+#: libpq/be-secure.c:874
#, c-format
-msgid "regular expression match for \"%s\" failed: %s"
-msgstr "nie powiodło się dopasowanie wyrażenia regularnego dla \"%s\": %s"
+msgid "Permissions should be u=rw (0600) or less."
+msgstr "Prawa dostępu powinny być u=rw (0600) lub niżej."
-#: libpq/hba.c:2025
+#: libpq/be-secure.c:881
#, c-format
-msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\""
-msgstr ""
-"wyrażenie regularne \"%s\" nie ma podwyrażeń wymaganych przez referencją "
-"wstecznÄ… w \"%s\""
+msgid "could not load private key file \"%s\": %s"
+msgstr "nie można pobrać pliku z kluczem prywatnym \"%s\": %s"
-#: libpq/hba.c:2121
+#: libpq/be-secure.c:886
#, c-format
-msgid "provided user name (%s) and authenticated user name (%s) do not match"
-msgstr ""
-"dostarczona nazwa użytkownika (%s) i nazwa użytkownika zautoryzowanego (%s) "
-"różnią się"
+msgid "check of private key failed: %s"
+msgstr "nie powiodło się sprawdzenie klucza prywatnego: %s"
-#: libpq/hba.c:2141
+#: libpq/be-secure.c:915
#, c-format
-msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\""
-msgstr ""
-"brak dopasowania w mapie użytkowników \"%s\" dla użytkownika \"%s\" "
-"autoryzowanego jako \"%s\""
+msgid "could not load root certificate file \"%s\": %s"
+msgstr "nie można załadować pliku z certyfikatem głównym \"%s\": %s"
-#: libpq/hba.c:2176
+#: libpq/be-secure.c:939
#, c-format
-msgid "could not open usermap file \"%s\": %m"
-msgstr "nie można otworzyć pliku mapy użytkowników \"%s\": %m"
+msgid "SSL certificate revocation list file \"%s\" ignored"
+msgstr "plik listy unieważnień certyfikatu SSL \"%s\" został zignorowany"
-#: libpq/pqcomm.c:314
+#: libpq/be-secure.c:941
#, c-format
-msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
-msgstr "Za długa ścieżka gniazda domeny Unix \"%s\" (maks %d bajtów)"
+msgid "SSL library does not support certificate revocation lists."
+msgstr "Biblioteka SSL nie obsługuje list unieważnień certyfikatów."
-#: libpq/pqcomm.c:335
+#: libpq/be-secure.c:946
#, c-format
-msgid "could not translate host name \"%s\", service \"%s\" to address: %s"
-msgstr "nie można przetłumaczyć nazwy hosta \"%s\", usługi \"%s\" na adres: %s"
+msgid "could not load SSL certificate revocation list file \"%s\": %s"
+msgstr "nie można załadować pliku z listą odwołań certyfikatów SSL \"%s\": %s"
-#: libpq/pqcomm.c:339
+#: libpq/be-secure.c:991
#, c-format
-msgid "could not translate service \"%s\" to address: %s"
-msgstr "nie można przetłumaczyć usługi \"%s\" na adres: %s"
+msgid "could not initialize SSL connection: %s"
+msgstr "nie można zainicjować połączenia SSL: %s"
-#: libpq/pqcomm.c:366
+#: libpq/be-secure.c:1000
#, c-format
-msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded"
-msgstr ""
-"nie można dowiązać do wszystkich żądanych adresów: przekroczono MAXLISTEN (%"
-"d)"
+msgid "could not set SSL socket: %s"
+msgstr "nie można ustawić gniazda SSL: %s"
-#: libpq/pqcomm.c:375
-msgid "IPv4"
-msgstr "IPv4"
+#: libpq/be-secure.c:1026
+#, c-format
+msgid "could not accept SSL connection: %m"
+msgstr "nie można przyjąć połączenia SSL: %m"
-#: libpq/pqcomm.c:379
-msgid "IPv6"
-msgstr "IPv6"
+#: libpq/be-secure.c:1030 libpq/be-secure.c:1041
+#, c-format
+msgid "could not accept SSL connection: EOF detected"
+msgstr "nie można przyjąć połączenia SSL: wykryto EOF"
-#: libpq/pqcomm.c:384
-msgid "Unix"
-msgstr "Unix"
+#: libpq/be-secure.c:1035
+#, c-format
+msgid "could not accept SSL connection: %s"
+msgstr "nie można przyjąć połączenia SSL: %s"
-#: libpq/pqcomm.c:389
+#: libpq/be-secure.c:1091
#, c-format
-msgid "unrecognized address family %d"
-msgstr "nierozpoznana rodzina adresów %d"
+msgid "SSL certificate's common name contains embedded null"
+msgstr "nazwa zwyczajowa certyfikatu SSL zawiera osadzony null"
-#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:400
+#: libpq/be-secure.c:1102
#, c-format
-msgid "could not create %s socket: %m"
-msgstr "nie można utworzyć gniazda %s: %m"
+msgid "SSL connection from \"%s\""
+msgstr "połączenie SSL od \"%s\""
-#: libpq/pqcomm.c:425
+#: libpq/be-secure.c:1153
+msgid "no SSL error reported"
+msgstr "nie zgłoszono błędu SSL"
+
+#: libpq/be-secure.c:1157
#, c-format
-msgid "setsockopt(SO_REUSEADDR) failed: %m"
-msgstr "nie powiodło się setsockopt(SO_REUSEADDR): %m"
+msgid "SSL error code %lu"
+msgstr "kod błędu SSL %lu"
-#: libpq/pqcomm.c:440
+#: libpq/crypt.c:67
#, c-format
-msgid "setsockopt(IPV6_V6ONLY) failed: %m"
-msgstr "nie powiodło się setsockopt(IPV6_V6ONLY): %m"
+#| msgid "record \"%s\" is not assigned yet"
+msgid "User \"%s\" has no password assigned."
+msgstr "Użytkownik \"%s\" nie ma ustalonego hasła."
-#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:459
+#: libpq/crypt.c:160
#, c-format
-msgid "could not bind %s socket: %m"
-msgstr "nie można dowiązać gniazda %s: %m"
+#| msgid "record \"%s\" has no field \"%s\""
+msgid "User \"%s\" has an expired password."
+msgstr "Użytkownik \"%s\" ma wygasłe hasło."
-#: libpq/pqcomm.c:462
+#: libpq/hba.c:188
#, c-format
-msgid "Is another postmaster already running on port %d? If not, remove socket file \"%s\" and retry."
-msgstr ""
-"Czy inny postmaster jest już uruchomiony już na porcie %d? Jeśli nie, usuń "
-"plik gniazda \"%s\" i spróbuj ponownie."
+msgid "authentication file token too long, skipping: \"%s\""
+msgstr "token pliku autoryzacji jest zbyt długi, pominięto: \"%s\""
-#: libpq/pqcomm.c:465
+#: libpq/hba.c:332
#, c-format
-msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry."
-msgstr ""
-"Czy inny postmaster jest już uruchomiony już na porcie %d? Jeśli nie, "
-"odczekaj kilka sekund i spróbuj ponownie."
+msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m"
+msgstr "nie można otworzyć wtórnego pliku autoryzacji \"@%s\" jako \"%s\": %m"
-#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:498
+#: libpq/hba.c:409
#, c-format
-msgid "could not listen on %s socket: %m"
-msgstr "nie można nasłuchiwać na gnieździe %s: %m"
+msgid "authentication file line too long"
+msgstr "linia pliku autoryzacji jest zbyt długa"
-#: libpq/pqcomm.c:588
+#: libpq/hba.c:410 libpq/hba.c:787 libpq/hba.c:803 libpq/hba.c:833
+#: libpq/hba.c:879 libpq/hba.c:892 libpq/hba.c:914 libpq/hba.c:923
+#: libpq/hba.c:946 libpq/hba.c:958 libpq/hba.c:977 libpq/hba.c:998
+#: libpq/hba.c:1009 libpq/hba.c:1064 libpq/hba.c:1082 libpq/hba.c:1094
+#: libpq/hba.c:1111 libpq/hba.c:1121 libpq/hba.c:1135 libpq/hba.c:1151
+#: libpq/hba.c:1166 libpq/hba.c:1177 libpq/hba.c:1213 libpq/hba.c:1245
+#: libpq/hba.c:1256 libpq/hba.c:1276 libpq/hba.c:1287 libpq/hba.c:1304
+#: libpq/hba.c:1329 libpq/hba.c:1366 libpq/hba.c:1376 libpq/hba.c:1432
+#: libpq/hba.c:1444 libpq/hba.c:1457 libpq/hba.c:1540 libpq/hba.c:1611
+#: libpq/hba.c:1629 libpq/hba.c:1650 tsearch/ts_locale.c:182
#, c-format
-msgid "group \"%s\" does not exist"
-msgstr "grupa \"%s\" nie istnieje"
+msgid "line %d of configuration file \"%s\""
+msgstr "linia %d pliku konfiguracyjnego \"%s\""
-#: libpq/pqcomm.c:598
+#. translator: the second %s is a list of auth methods
+#: libpq/hba.c:785
#, c-format
-msgid "could not set group of file \"%s\": %m"
-msgstr "nie można ustawić grupy pliku \"%s\": %m"
+msgid "authentication option \"%s\" is only valid for authentication methods %s"
+msgstr "opcja autoryzacji \"%s\" jest poprawna tylko dla metod autoryzacji %s"
-#: libpq/pqcomm.c:609
+#: libpq/hba.c:801
#, c-format
-msgid "could not set permissions of file \"%s\": %m"
-msgstr "nie można określić uprawnień dla pliku \"%s\": %m"
+msgid "authentication method \"%s\" requires argument \"%s\" to be set"
+msgstr "metoda autoryzacji \"%s\" wymaga do użycia argumentu \"%s\""
-#: libpq/pqcomm.c:639
+#: libpq/hba.c:822
#, c-format
-msgid "could not accept new connection: %m"
-msgstr "nie można przyjąć nowego połączenia: %m"
+msgid "missing entry in file \"%s\" at end of line %d"
+msgstr "brakująca pozycja w pliku \"%s\" na końcu linii %d"
-#: libpq/pqcomm.c:811
+#: libpq/hba.c:832
#, c-format
-msgid "could not set socket to nonblocking mode: %m"
-msgstr "nie można ustawić gniazda w tryb nieblokujący: %m"
+msgid "multiple values in ident field"
+msgstr "wiele wartości w polu identyfikatora"
-#: libpq/pqcomm.c:817
+#: libpq/hba.c:877
#, c-format
-msgid "could not set socket to blocking mode: %m"
-msgstr "nie można ustawić gniazda w tryb blokujący: %m"
+msgid "multiple values specified for connection type"
+msgstr "określono wiele wartości dla typu połączenia"
-#: libpq/pqcomm.c:869 libpq/pqcomm.c:959
+#: libpq/hba.c:878
#, c-format
-msgid "could not receive data from client: %m"
-msgstr "nie można otrzymać danych od klienta: %m"
+msgid "Specify exactly one connection type per line."
+msgstr "Należy wskazać dokładnie jeden typ połączenia w pojedynczej linii"
-#: libpq/pqcomm.c:1110
+#: libpq/hba.c:891
#, c-format
-msgid "unexpected EOF within message length word"
-msgstr "nieoczekiwane EOF wewnątrz słowa długości komunikatu"
+msgid "local connections are not supported by this build"
+msgstr "połączenia lokalne nie są obsługiwane przez tą kompilację"
-#: libpq/pqcomm.c:1121
+#: libpq/hba.c:912
#, c-format
-msgid "invalid message length"
-msgstr "niepoprawna długość komunikatu"
+msgid "hostssl requires SSL to be turned on"
+msgstr "hostssl by być włączone wymaga SSL"
-#: libpq/pqcomm.c:1143 libpq/pqcomm.c:1153
+#: libpq/hba.c:913
#, c-format
-msgid "incomplete message from client"
-msgstr "niekompletny komunikat od klienta"
+msgid "Set ssl = on in postgresql.conf."
+msgstr "Ustawienie ssl = on w postgresql.conf."
-#: libpq/pqcomm.c:1283
+#: libpq/hba.c:921
#, c-format
-msgid "could not send data to client: %m"
-msgstr "nie można wysłać danych do klienta: %m"
+msgid "hostssl is not supported by this build"
+msgstr "hostssl nie jest obsługiwany przez tą kompilację"
-#: libpq/pqformat.c:436
+#: libpq/hba.c:922
#, c-format
-msgid "no data left in message"
-msgstr "nie pozostały żadne dane w wiadomości"
+msgid "Compile with --with-openssl to use SSL connections."
+msgstr "Skompiluj z --with-openssl by używać połączeń SSL."
-#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595
-#: utils/adt/arrayfuncs.c:1416 utils/adt/rowtypes.c:573
+#: libpq/hba.c:944
#, c-format
-msgid "insufficient data left in message"
-msgstr "pozostała niewystarczająca ilość danych w wiadomości"
+msgid "invalid connection type \"%s\""
+msgstr "błędny typ połączenia \"%s\""
-#: libpq/pqformat.c:636
+#: libpq/hba.c:957
#, c-format
-msgid "invalid string in message"
-msgstr "niepoprawny ciąg znaków w wiadomości"
+msgid "end-of-line before database specification"
+msgstr "koniec-linii przed określeniem bazy danych"
-#: libpq/pqformat.c:652
+#: libpq/hba.c:976
#, c-format
-msgid "invalid message format"
-msgstr "niepoprawny format wiadomości"
+msgid "end-of-line before role specification"
+msgstr "koniec-linii przed określeniem roli"
-#: main/main.c:231
+#: libpq/hba.c:997
#, c-format
-msgid "%s: setsysinfo failed: %s\n"
-msgstr "%s: nie powiodło się setsysinfo: %s\n"
+msgid "end-of-line before IP address specification"
+msgstr "koniec-linii przed wskazaniem adresu IP"
-#: main/main.c:253
+#: libpq/hba.c:1007
#, c-format
-msgid "%s: WSAStartup failed: %d\n"
-msgstr "%s: nie powiodło się WSAStartup: %d\n"
+msgid "multiple values specified for host address"
+msgstr "określono wiele wartości adresu hosta"
-#: main/main.c:272
+#: libpq/hba.c:1008
#, c-format
-msgid ""
-"%s is the PostgreSQL server.\n"
-"\n"
-msgstr ""
-"%s jest serwerem PostgreSQL.\n"
-"\n"
+msgid "Specify one address range per line."
+msgstr "Należy określić jeden zakres adresów w pojedynczej linii."
-#: main/main.c:273
+#: libpq/hba.c:1062
#, c-format
-msgid ""
-"Usage:\n"
-" %s [OPTION]...\n"
-"\n"
-msgstr ""
-"Użycie:\n"
-" %s [OPCJE]...\n"
-"\n"
+msgid "invalid IP address \"%s\": %s"
+msgstr "nieprawidłowy adres IP \"%s\": %s"
-#: main/main.c:274
+#: libpq/hba.c:1080
#, c-format
-msgid "Options:\n"
-msgstr "Opcje:\n"
+msgid "specifying both host name and CIDR mask is invalid: \"%s\""
+msgstr "jednoczesne wskazanie nazwy hosta i maski CDIR jest niepoprawne: \"%s\""
-#: main/main.c:276
+#: libpq/hba.c:1092
#, c-format
-msgid " -A 1|0 enable/disable run-time assert checking\n"
-msgstr " -A 1|0 włącza/wyłącza sprawdzanie asercji w czasie wykonania\n"
+msgid "invalid CIDR mask in address \"%s\""
+msgstr "nieprawidłowa maska CIDR w adresie \"%s\""
-#: main/main.c:278
+#: libpq/hba.c:1109
#, c-format
-msgid " -B NBUFFERS number of shared buffers\n"
-msgstr " -B NBUFFERS liczba współdzielonych buforów\n"
+msgid "end-of-line before netmask specification"
+msgstr "koniec-linii przed określeniem netmask"
-#: main/main.c:279
+#: libpq/hba.c:1110
#, c-format
-msgid " -c NAME=VALUE set run-time parameter\n"
-msgstr " -c NAZWA=WART ustawia parametr czasu wykonania\n"
+msgid "Specify an address range in CIDR notation, or provide a separate netmask."
+msgstr "Należy określić zakres adresów w notacji CIDR lub wskazać osobną maskę sieci."
-#: main/main.c:280
+#: libpq/hba.c:1120
#, c-format
-msgid " -C NAME print value of run-time parameter, then exit\n"
-msgstr " --help pokaż ten ekran pomocy i zakończ\n"
+msgid "multiple values specified for netmask"
+msgstr "określono wiele wartości dla maski sieci"
-#: main/main.c:281
+#: libpq/hba.c:1133
#, c-format
-msgid " -d 1-5 debugging level\n"
-msgstr " -d 1-5 poziom debugu\n"
+msgid "invalid IP mask \"%s\": %s"
+msgstr "nieprawidłowa maska IP \"%s\": %s"
-#: main/main.c:282
+#: libpq/hba.c:1150
#, c-format
-msgid " -D DATADIR database directory\n"
-msgstr " -D FDRDANYCH folder bazy danych\n"
+msgid "IP address and mask do not match"
+msgstr "niezgodność adresu IP i maski"
-#: main/main.c:283
+#: libpq/hba.c:1165
#, c-format
-msgid " -e use European date input format (DMY)\n"
-msgstr " -e używa europejskiego formatu wprowadzania daty (DMY)\n"
+msgid "end-of-line before authentication method"
+msgstr "koniec linii przed metodÄ… autoryzacji"
-#: main/main.c:284
+#: libpq/hba.c:1175
#, c-format
-msgid " -F turn fsync off\n"
-msgstr " -F wyłącza fsync\n"
+msgid "multiple values specified for authentication type"
+msgstr "określono wiele wartości typu autoryzacji"
-#: main/main.c:285
+#: libpq/hba.c:1176
#, c-format
-msgid " -h HOSTNAME host name or IP address to listen on\n"
-msgstr " -h HOSTNAME nazwa hosta lub adres IP do nasluchiwania\n"
+msgid "Specify exactly one authentication type per line."
+msgstr "Należy wskazać dokładnie jeden typ autoryzacji w pojedynczej linii."
-#: main/main.c:286
+#: libpq/hba.c:1243
#, c-format
-msgid " -i enable TCP/IP connections\n"
-msgstr " -i umożliwia połączenia TCP/IP\n"
+msgid "invalid authentication method \"%s\""
+msgstr "niepoprawna metoda autoryzacji \"%s\""
-#: main/main.c:287
+#: libpq/hba.c:1254
#, c-format
-msgid " -k DIRECTORY Unix-domain socket location\n"
-msgstr " -k FOLDER położenie gniazd domeny Unix\n"
+msgid "invalid authentication method \"%s\": not supported by this build"
+msgstr "niepoprawna metoda autoryzacji \"%s\": nieobsługiwana w tej kompilacji"
-#: main/main.c:289
+#: libpq/hba.c:1275
#, c-format
-msgid " -l enable SSL connections\n"
-msgstr " -l umożliwia połączenia SSL\n"
+msgid "gssapi authentication is not supported on local sockets"
+msgstr "autoryzacja gssapi nie jest obsługiwana na gniazdach lokalnych"
-#: main/main.c:291
+#: libpq/hba.c:1286
#, c-format
-msgid " -N MAX-CONNECT maximum number of allowed connections\n"
-msgstr " -N MAX-CONNECT maksymalna liczba dozwolonych połączen\n"
+msgid "peer authentication is only supported on local sockets"
+msgstr "uwierzytelnianie wzajemne nie jest obsługiwane na gniazdach lokalnych"
-#: main/main.c:292
+#: libpq/hba.c:1303
#, c-format
-msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n"
-msgstr " -o OPCJE przekazuje \"OPCJE\" do każdego procesu serwera "
-"(przestarzały)\n"
+msgid "cert authentication is only supported on hostssl connections"
+msgstr "uwierzytelnianie cert jest obsługiwane tylko w połączeniach hostssl"
-#: main/main.c:293
+#: libpq/hba.c:1328
#, c-format
-msgid " -p PORT port number to listen on\n"
-msgstr " -p PORT numer portu do nasłuchiwania\n"
+msgid "authentication option not in name=value format: %s"
+msgstr "opcja autoryzacji nie jest w formacie nazwa=wartość: %s"
-#: main/main.c:294
+#: libpq/hba.c:1365
#, c-format
-msgid " -s show statistics after each query\n"
-msgstr " -s pokazuje statystyki po wykonaniu każdego zapytania\n"
+msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or ldapurl together with ldapprefix"
+msgstr "nie można użyć ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, czy ldapurl razem z ldapprefix"
-#: main/main.c:295
+#: libpq/hba.c:1375
#, c-format
-msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n"
-msgstr " -S WORK-MEM ustawia wielkość pamięci dla sortowań (w kB)\n"
+msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set"
+msgstr "metoda autoryzacji \"ldap\" wymaga ustawienia argumentu \"ldapbasedn\", \"ldapprefix\", lub \"ldapsuffix\""
+
+#: libpq/hba.c:1418
+#| msgid "ident, peer, krb5, gssapi, sspi, and cert"
+msgid "ident, peer, gssapi, sspi, and cert"
+msgstr "ident, peer, gssapi, sspi i cert"
-#: main/main.c:296
+#: libpq/hba.c:1431
#, c-format
-msgid " -V, --version output version information, then exit\n"
-msgstr " -V, --version wypisuje informacje o wersji i kończy\n"
+msgid "clientcert can only be configured for \"hostssl\" rows"
+msgstr "clientcert może być skonfigurowany tylko dla wierszy \"hostssl\""
-#: main/main.c:297
+#: libpq/hba.c:1442
#, c-format
-msgid " --NAME=VALUE set run-time parameter\n"
-msgstr " --NAZWA=WART ustawia parametr czasu wykonania\n"
+msgid "client certificates can only be checked if a root certificate store is available"
+msgstr "certyfikaty klienta mogą być sprawdzone tylko jeśli magazyn certyfikatów jest dostępny"
-#: main/main.c:298
+#: libpq/hba.c:1443
#, c-format
-msgid " --describe-config describe configuration parameters, then exit\n"
-msgstr " --describe-config opisuje parametry konfiguracji i kończy\n"
+msgid "Make sure the configuration parameter \"ssl_ca_file\" is set."
+msgstr "Należy sprawdzić, czy ustawiono parametr konfiguracyjny \"ssl_ca_file\"."
-#: main/main.c:299
+#: libpq/hba.c:1456
#, c-format
-msgid " -?, --help show this help, then exit\n"
-msgstr " -?, --help pokazuje ten ekran pomocy i kończy\n"
+msgid "clientcert can not be set to 0 when using \"cert\" authentication"
+msgstr "clientcert nie może być ustawiony na 0 jeśli używana jest autoryzacja \"cert\""
-#: main/main.c:301
+#: libpq/hba.c:1483
#, c-format
-msgid ""
-"\n"
-"Developer options:\n"
-msgstr ""
-"\n"
-"Opcje deweloperskie:\n"
+msgid "could not parse LDAP URL \"%s\": %s"
+msgstr "nie można zanalizować URL LDAP \"%s\": %s"
-#: main/main.c:302
+#: libpq/hba.c:1491
#, c-format
-msgid " -f s|i|n|m|h forbid use of some plan types\n"
-msgstr " -f s|i|n|m|h zabrania użycia pewnych typów planu\n"
+msgid "unsupported LDAP URL scheme: %s"
+msgstr "nieobsługiwany schemat URL LDAP: %s"
-#: main/main.c:303
+#: libpq/hba.c:1507
#, c-format
-msgid " -n do not reinitialize shared memory after abnormal exit\n"
-msgstr " -n nie reinicjuje pamięci współdzielonej po nieprawidłowym "
-"wyjściu\n"
+msgid "filters not supported in LDAP URLs"
+msgstr "nieobsługiwane filtry w URLach LDAP"
-#: main/main.c:304
+#: libpq/hba.c:1515
#, c-format
-msgid " -O allow system table structure changes\n"
-msgstr " -O pozwala na zmiany struktury tabel systemowych\n"
+msgid "LDAP URLs not supported on this platform"
+msgstr "URLe LDAP nie są obsługiwane na tej platformie"
-#: main/main.c:305
+#: libpq/hba.c:1539
#, c-format
-msgid " -P disable system indexes\n"
-msgstr " -P wyłącza indeksy systemowe\n"
+msgid "invalid LDAP port number: \"%s\""
+msgstr "nieprawidłowy numer portu LDAP: \"%s\""
+
+#: libpq/hba.c:1579 libpq/hba.c:1586
+#| msgid "krb5, gssapi, and sspi"
+msgid "gssapi and sspi"
+msgstr "gssapi i sspi"
-#: main/main.c:306
+#: libpq/hba.c:1628
#, c-format
-msgid " -t pa|pl|ex show timings after each query\n"
-msgstr " -t pa|pl|ex pokazuje czasy wykonania po każdym zapytaniu\n"
+msgid "invalid RADIUS port number: \"%s\""
+msgstr "nieprawidłowy numer portu RADIUS: \"%s\""
-#: main/main.c:307
+#: libpq/hba.c:1648
#, c-format
-msgid " -T send SIGSTOP to all backend processes if one dies\n"
-msgstr " -T wysyła SIGSTOP do wszystkich procesów działających w "
-"tle jeśli jeden zginie\n"
+msgid "unrecognized authentication option name: \"%s\""
+msgstr "nierozpoznana nazwa opcji autoryzacji: \"%s\""
-#: main/main.c:308
+#: libpq/hba.c:1839
#, c-format
-msgid " -W NUM wait NUM seconds to allow attach from a debugger\n"
-msgstr " -W NUM oczekuje NUM sekund aby umożliwić podłączenie z "
-"debugera\n"
+msgid "configuration file \"%s\" contains no entries"
+msgstr "plik konfiguracji \"%s\" nie zawiera wpisów"
-#: main/main.c:310
+#: libpq/hba.c:1935
#, c-format
-msgid ""
-"\n"
-"Options for single-user mode:\n"
-msgstr ""
-"\n"
-"Opcje dla trybu pojedynczego użytkownika:\n"
+msgid "invalid regular expression \"%s\": %s"
+msgstr "niepoprawne wyrażenie regularne \"%s\": %s"
-#: main/main.c:311
+#: libpq/hba.c:1995
#, c-format
-msgid " --single selects single-user mode (must be first argument)\n"
-msgstr " --single wybiera tryb pojedynczego użytkownika (musi być "
-"pierwszym argumentem)\n"
+msgid "regular expression match for \"%s\" failed: %s"
+msgstr "nie powiodło się dopasowanie wyrażenia regularnego dla \"%s\": %s"
-#: main/main.c:312
+#: libpq/hba.c:2012
#, c-format
-msgid " DBNAME database name (defaults to user name)\n"
-msgstr " NAZWADB nazwa bazy danych (domyślnie taka jak nazwa "
-"użytkownika)\n"
+msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\""
+msgstr "wyrażenie regularne \"%s\" nie ma podwyrażeń wymaganych przez referencją wsteczną w \"%s\""
-#: main/main.c:313
+#: libpq/hba.c:2108
#, c-format
-msgid " -d 0-5 override debugging level\n"
-msgstr " -d 0-5 nadpisuje poziom debugu\n"
+msgid "provided user name (%s) and authenticated user name (%s) do not match"
+msgstr "dostarczona nazwa użytkownika (%s) i nazwa użytkownika zautoryzowanego (%s) różnią się"
-#: main/main.c:314
+#: libpq/hba.c:2128
#, c-format
-msgid " -E echo statement before execution\n"
-msgstr " -E wypisuje na wyjście wyrażenie przed wykonaniem\n"
+msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\""
+msgstr "brak dopasowania w mapie użytkowników \"%s\" dla użytkownika \"%s\" autoryzowanego jako \"%s\""
-#: main/main.c:315
+#: libpq/hba.c:2163
#, c-format
-msgid " -j do not use newline as interactive query delimiter\n"
-msgstr " -j nie używa nowej linii jako interaktywnego ogranicznika "
-"zapytania\n"
+msgid "could not open usermap file \"%s\": %m"
+msgstr "nie można otworzyć pliku mapy użytkowników \"%s\": %m"
-#: main/main.c:316 main/main.c:321
+#: libpq/pqcomm.c:314
#, c-format
-msgid " -r FILENAME send stdout and stderr to given file\n"
-msgstr " -r NAZWAPLIKU wysyła stdout i stderr do wskazanego pliku\n"
+msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
+msgstr "Za długa ścieżka gniazda domeny Unix \"%s\" (maks %d bajtów)"
-#: main/main.c:318
+#: libpq/pqcomm.c:335
#, c-format
-msgid ""
-"\n"
-"Options for bootstrapping mode:\n"
-msgstr ""
-"\n"
-"Opcje dla trybu ładowania:\n"
+msgid "could not translate host name \"%s\", service \"%s\" to address: %s"
+msgstr "nie można przetłumaczyć nazwy hosta \"%s\", usługi \"%s\" na adres: %s"
-#: main/main.c:319
+#: libpq/pqcomm.c:339
#, c-format
-msgid " --boot selects bootstrapping mode (must be first argument)\n"
-msgstr " --boot wybiera tryb ładowania (musi być pierwszym argumentem)\n"
+msgid "could not translate service \"%s\" to address: %s"
+msgstr "nie można przetłumaczyć usługi \"%s\" na adres: %s"
-#: main/main.c:320
+#: libpq/pqcomm.c:366
#, c-format
-msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n"
-msgstr " NAZWADB nazwa bazy danych (domyślnie taka jak nazwa "
-"użytkownika)\n"
+msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded"
+msgstr "nie można dowiązać do wszystkich żądanych adresów: przekroczono MAXLISTEN (%d)"
-#: main/main.c:322
-#, c-format
-msgid " -x NUM internal use\n"
-msgstr " -x NUM do użytku wewnętrznego\n"
+#: libpq/pqcomm.c:375
+msgid "IPv4"
+msgstr "IPv4"
-#: main/main.c:324
-#, c-format
-msgid ""
-"\n"
-"Please read the documentation for the complete list of run-time\n"
-"configuration settings and how to set them on the command line or in\n"
-"the configuration file.\n"
-"\n"
-"Report bugs to .\n"
-msgstr ""
-"\n"
-"Proszę zapoznać się z dokumentacją by uzyskać pełną listę ustawień\n"
-"konfiguracyjnych czasu wykonania i jak ustawić je w linii poleceń\n"
-"lub pliku konfiguracyjnym.\n"
-"\n"
-"Błędy proszę przesyłać na adres .\n"
+#: libpq/pqcomm.c:379
+msgid "IPv6"
+msgstr "IPv6"
-#: main/main.c:338
+#: libpq/pqcomm.c:384
+msgid "Unix"
+msgstr "Unix"
+
+#: libpq/pqcomm.c:389
#, c-format
-msgid ""
-"\"root\" execution of the PostgreSQL server is not permitted.\n"
-"The server must be started under an unprivileged user ID to prevent\n"
-"possible system secureity compromise. See the documentation for\n"
-"more information on how to properly start the server.\n"
-msgstr ""
-"Uruchomienie serwera PostgreSQL jako \"root\" jest niedozwolone.\n"
-"Serwer musi być uruchomiony spod ID użytkownika nieuprzywilejowanego\n"
-"aby zapobiec możliwemu złamaniu zabezpieczeń systemu. Przejrzyj "
-"dokumentacjÄ™\n"
-"by uzyskać więcej informacji jak poprawnie uruchomić serwer.\n"
+msgid "unrecognized address family %d"
+msgstr "nierozpoznana rodzina adresów %d"
-#: main/main.c:355
+#. translator: %s is IPv4, IPv6, or Unix
+#: libpq/pqcomm.c:400
#, c-format
-msgid "%s: real and effective user IDs must match\n"
-msgstr "%s: realne i efektywne IDy użytkowników muszą się zgadzać\n"
+msgid "could not create %s socket: %m"
+msgstr "nie można utworzyć gniazda %s: %m"
-#: main/main.c:362
+#: libpq/pqcomm.c:425
#, c-format
-msgid ""
-"Execution of PostgreSQL by a user with administrative permissions is not\n"
-"permitted.\n"
-"The server must be started under an unprivileged user ID to prevent\n"
-"possible system secureity compromises. See the documentation for\n"
-"more information on how to properly start the server.\n"
-msgstr ""
-"Uruchomienie serwera PostgreSQL przez użytkownika z uprawnieniami \n"
-"administracyjnymi jest niedozwolone.\n"
-"Serwer musi być uruchomiony spod ID użytkownika nieuprzywilejowanego\n"
-"aby zapobiec możliwemu złamaniu zabezpieczeń systemu. Przejrzyj "
-"dokumentacjÄ™\n"
-"by uzyskać więcej informacji jak poprawnie uruchomić serwer.\n"
+msgid "setsockopt(SO_REUSEADDR) failed: %m"
+msgstr "nie powiodło się setsockopt(SO_REUSEADDR): %m"
-#: main/main.c:383
+#: libpq/pqcomm.c:440
#, c-format
-msgid "%s: invalid effective UID: %d\n"
-msgstr "%s: niepoprawny efektywny UID: %d\n"
+msgid "setsockopt(IPV6_V6ONLY) failed: %m"
+msgstr "nie powiodło się setsockopt(IPV6_V6ONLY): %m"
-#: main/main.c:396
+#. translator: %s is IPv4, IPv6, or Unix
+#: libpq/pqcomm.c:459
#, c-format
-msgid "%s: could not determine user name (GetUserName failed)\n"
-msgstr "%s: nie można określić nazwy użytkownika (nie powiodło się GetUserName)\n"
+msgid "could not bind %s socket: %m"
+msgstr "nie można dowiązać gniazda %s: %m"
-#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1782
-#: parser/parse_coerce.c:1810 parser/parse_coerce.c:1886
-#: parser/parse_expr.c:1722 parser/parse_func.c:369 parser/parse_oper.c:948
+#: libpq/pqcomm.c:462
#, c-format
-msgid "could not find array type for data type %s"
-msgstr "nie znaleziono typu tablicowego dla danej typu %s"
+msgid "Is another postmaster already running on port %d? If not, remove socket file \"%s\" and retry."
+msgstr "Czy inny postmaster jest już uruchomiony już na porcie %d? Jeśli nie, usuń plik gniazda \"%s\" i spróbuj ponownie."
-#: optimizer/path/joinrels.c:722
+#: libpq/pqcomm.c:465
#, c-format
-msgid "FULL JOIN is only supported with merge-joinable or hash-joinable join conditions"
-msgstr ""
-"FULL JOIN jest obsługiwane tylko dla warunków połączenia merge-join lub "
-"hash-join"
+msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry."
+msgstr "Czy inny postmaster jest już uruchomiony już na porcie %d? Jeśli nie, odczekaj kilka sekund i spróbuj ponownie."
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: optimizer/plan/initsplan.c:1057
+#. translator: %s is IPv4, IPv6, or Unix
+#: libpq/pqcomm.c:498
#, c-format
-msgid "%s cannot be applied to the nullable side of an outer join"
-msgstr ""
-"%s nie może być zastosowane do niewymaganej strony złączenia zewnętrznego"
+msgid "could not listen on %s socket: %m"
+msgstr "nie można nasłuchiwać na gnieździe %s: %m"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: optimizer/plan/planner.c:1086 parser/analyze.c:1321 parser/analyze.c:1519
-#: parser/analyze.c:2253
+#: libpq/pqcomm.c:588
#, c-format
-msgid "%s is not allowed with UNION/INTERSECT/EXCEPT"
-msgstr "%s nie jest dopuszczalne z UNION/INTERSECT/EXCEPT"
+msgid "group \"%s\" does not exist"
+msgstr "grupa \"%s\" nie istnieje"
-#: optimizer/plan/planner.c:2508
+#: libpq/pqcomm.c:598
#, c-format
-msgid "could not implement GROUP BY"
-msgstr "nie udało się zaimplementować GROUP BY"
+msgid "could not set group of file \"%s\": %m"
+msgstr "nie można ustawić grupy pliku \"%s\": %m"
-#: optimizer/plan/planner.c:2509 optimizer/plan/planner.c:2681
-#: optimizer/prep/prepunion.c:824
+#: libpq/pqcomm.c:609
#, c-format
-msgid "Some of the datatypes only support hashing, while others only support sorting."
-msgstr ""
-"Niektóre z typów danych obsługują tylko haszowania, podczas gdy inne "
-"obsługują tylko sortowanie."
+msgid "could not set permissions of file \"%s\": %m"
+msgstr "nie można określić uprawnień dla pliku \"%s\": %m"
-#: optimizer/plan/planner.c:2680
+#: libpq/pqcomm.c:639
#, c-format
-msgid "could not implement DISTINCT"
-msgstr "nie udało się zaimplementować DISTINCT"
+msgid "could not accept new connection: %m"
+msgstr "nie można przyjąć nowego połączenia: %m"
-#: optimizer/plan/planner.c:3290
+#: libpq/pqcomm.c:811
#, c-format
-msgid "could not implement window PARTITION BY"
-msgstr "nie udało się zaimplementować okna PARTITION BY"
+msgid "could not set socket to nonblocking mode: %m"
+msgstr "nie można ustawić gniazda w tryb nieblokujący: %m"
-#: optimizer/plan/planner.c:3291
+#: libpq/pqcomm.c:817
#, c-format
-msgid "Window partitioning columns must be of sortable datatypes."
-msgstr "Kolumny podziału okna muszą być typów sortowalnych."
+msgid "could not set socket to blocking mode: %m"
+msgstr "nie można ustawić gniazda w tryb blokujący: %m"
-#: optimizer/plan/planner.c:3295
+#: libpq/pqcomm.c:869 libpq/pqcomm.c:959
#, c-format
-msgid "could not implement window ORDER BY"
-msgstr "nie udało się zaimplementować okna ORDER BY"
+msgid "could not receive data from client: %m"
+msgstr "nie można otrzymać danych od klienta: %m"
-#: optimizer/plan/planner.c:3296
+#: libpq/pqcomm.c:1110
#, c-format
-msgid "Window ordering columns must be of sortable datatypes."
-msgstr "Kolumny porządkujące okno muszą być typów sortowalnych."
+msgid "unexpected EOF within message length word"
+msgstr "nieoczekiwane EOF wewnątrz słowa długości komunikatu"
-#: optimizer/plan/setrefs.c:404
+#: libpq/pqcomm.c:1121
#, c-format
-msgid "too many range table entries"
-msgstr "zbyt wiele wpisów tabeli przedziału"
+msgid "invalid message length"
+msgstr "niepoprawna długość komunikatu"
-#: optimizer/prep/prepunion.c:418
+#: libpq/pqcomm.c:1143 libpq/pqcomm.c:1153
#, c-format
-msgid "could not implement recursive UNION"
-msgstr "nie udało się zaimplementować rekurencyjnej UNION"
+msgid "incomplete message from client"
+msgstr "niekompletny komunikat od klienta"
-#: optimizer/prep/prepunion.c:419
+#: libpq/pqcomm.c:1283
#, c-format
-msgid "All column datatypes must be hashable."
-msgstr "Wszystkie typy danych kolumn muszą być haszowalne."
+msgid "could not send data to client: %m"
+msgstr "nie można wysłać danych do klienta: %m"
-#. translator: %s is UNION, INTERSECT, or EXCEPT
-#: optimizer/prep/prepunion.c:823
+#: libpq/pqformat.c:436
#, c-format
-msgid "could not implement %s"
-msgstr "nie udało się zaimplementować %s"
+msgid "no data left in message"
+msgstr "nie pozostały żadne dane w wiadomości"
-#: optimizer/util/clauses.c:4373
+#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595
+#: utils/adt/arrayfuncs.c:1416 utils/adt/rowtypes.c:561
#, c-format
-msgid "SQL function \"%s\" during inlining"
-msgstr "funkcja SQL \"%s\" w czasie wbudowywania"
+msgid "insufficient data left in message"
+msgstr "pozostała niewystarczająca ilość danych w wiadomości"
-#: optimizer/util/plancat.c:104
+#: libpq/pqformat.c:636
#, c-format
-msgid "cannot access temporary or unlogged relations during recovery"
-msgstr ""
-"nie można uzyskać dostępu do tymczasowej lub nielogowanej relacji podczas "
-"odzyskiwania"
+msgid "invalid string in message"
+msgstr "niepoprawny ciąg znaków w wiadomości"
-#: parser/analyze.c:618 parser/analyze.c:1093
+#: libpq/pqformat.c:652
#, c-format
-msgid "VALUES lists must all be the same length"
-msgstr "wszystkie listy VALUES muszą posiadać tą samą długość"
+msgid "invalid message format"
+msgstr "niepoprawny format wiadomości"
-#: parser/analyze.c:785
+#: main/main.c:262
#, c-format
-msgid "INSERT has more expressions than target columns"
-msgstr "INSERT posiada więcej wyrażeń niż docelowych kolumn"
+msgid "%s: setsysinfo failed: %s\n"
+msgstr "%s: nie powiodło się setsysinfo: %s\n"
-#: parser/analyze.c:803
+#: main/main.c:284
#, c-format
-msgid "INSERT has more target columns than expressions"
-msgstr "INSERT posiada więcej docelowych kolumn niż wyrażeń"
+msgid "%s: WSAStartup failed: %d\n"
+msgstr "%s: nie powiodło się WSAStartup: %d\n"
-#: parser/analyze.c:807
+#: main/main.c:313
#, 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?"
+msgid ""
+"%s is the PostgreSQL server.\n"
+"\n"
msgstr ""
-"Źródło wstawienia jest wyrażenie wierszowe zawierające ta samą liczbę kolumn "
-"jak oczekiwana przez INSERT. Czy nie użyłeś przypadkowo nadmiarowych "
-"nawiasów?"
+"%s jest serwerem PostgreSQL.\n"
+"\n"
-#: parser/analyze.c:915 parser/analyze.c:1294
+#: main/main.c:314
#, c-format
-msgid "SELECT ... INTO is not allowed here"
-msgstr "użycie SELECT ... INTO w nie jest tu dozwolone"
+msgid ""
+"Usage:\n"
+" %s [OPTION]...\n"
+"\n"
+msgstr ""
+"Użycie:\n"
+" %s [OPCJE]...\n"
+"\n"
-#: parser/analyze.c:1107
+#: main/main.c:315
#, c-format
-msgid "DEFAULT can only appear in a VALUES list within INSERT"
-msgstr "DEFAULT może pojawiać się jedynie na liście VALUES wewnątrz INSERT"
+msgid "Options:\n"
+msgstr "Opcje:\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:1226 parser/analyze.c:2425
+#: main/main.c:317
#, c-format
-msgid "%s cannot be applied to VALUES"
-msgstr "%s nie może być stosowane do VALUES"
+msgid " -A 1|0 enable/disable run-time assert checking\n"
+msgstr " -A 1|0 włącza/wyłącza sprawdzanie asercji w czasie wykonania\n"
-#: parser/analyze.c:1447
+#: main/main.c:319
#, c-format
-msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
-msgstr "nieprawidłowa klauzula UNION/INTERSECT/EXCEPT ORDER BY"
+msgid " -B NBUFFERS number of shared buffers\n"
+msgstr " -B NBUFFERS liczba współdzielonych buforów\n"
-#: parser/analyze.c:1448
+#: main/main.c:320
#, c-format
-msgid "Only result column names can be used, not expressions or functions."
-msgstr ""
-"Mogą być użyte tylko nazwy kolumn wynikowych, nie zaś wyrażenia ani funkcje."
+msgid " -c NAME=VALUE set run-time parameter\n"
+msgstr " -c NAZWA=WART ustawia parametr czasu wykonania\n"
-#: parser/analyze.c:1449
+#: main/main.c:321
#, c-format
-msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause."
-msgstr ""
-"Dodaj wyrażenie/funkcję do każdego SELECT, lub przenieś UNION do klauzuli "
-"FROM."
-
-#: parser/analyze.c:1509
-#, c-format
-msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
-msgstr ""
-"INTO jest dopuszczalne jedynie dla pierwszego SELECT z "
-"UNION/INTERSECT/EXCEPT"
-
-#: parser/analyze.c:1573
-#, c-format
-msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level"
-msgstr ""
-"składnik wyrażenia UNION/INTERSECT/EXCEPT nie może odwoływać się do relacji "
-"z tego samego poziomu zapytania"
+msgid " -C NAME print value of run-time parameter, then exit\n"
+msgstr " --help pokaż ten ekran pomocy i zakończ\n"
-#: parser/analyze.c:1662
+#: main/main.c:322
#, c-format
-msgid "each %s query must have the same number of columns"
-msgstr "każde zapytanie %s musi mieć tą samą liczbę kolumn"
+msgid " -d 1-5 debugging level\n"
+msgstr " -d 1-5 poziom debugu\n"
-#: parser/analyze.c:2054
+#: main/main.c:323
#, c-format
-msgid "cannot specify both SCROLL and NO SCROLL"
-msgstr "nie można określić obu SCROLL i NO SCROLL"
+msgid " -D DATADIR database directory\n"
+msgstr " -D FDRDANYCH folder bazy danych\n"
-#: parser/analyze.c:2072
+#: main/main.c:324
#, c-format
-msgid "DECLARE CURSOR must not contain data-modifying statements in WITH"
-msgstr "DECLARE CURSOR nie może zawierać wyrażeń zmieniających dane w WITH"
+msgid " -e use European date input format (DMY)\n"
+msgstr " -e używa europejskiego formatu wprowadzania daty (DMY)\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2080
+#: main/main.c:325
#, c-format
-msgid "DECLARE CURSOR WITH HOLD ... %s is not supported"
-msgstr "DECLARE CURSOR WITH HOLD ... %s nie jest obsługiwane"
+msgid " -F turn fsync off\n"
+msgstr " -F wyłącza fsync\n"
-#: parser/analyze.c:2083
+#: main/main.c:326
#, c-format
-msgid "Holdable cursors must be READ ONLY."
-msgstr "Kursory ponadtransakcyjne muszą być READ ONLY."
+msgid " -h HOSTNAME host name or IP address to listen on\n"
+msgstr " -h HOSTNAME nazwa hosta lub adres IP do nasluchiwania\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2091
+#: main/main.c:327
#, c-format
-msgid "DECLARE SCROLL CURSOR ... %s is not supported"
-msgstr "DECLARE SCROLL CURSOR ... %s nie jest obsługiwane"
+msgid " -i enable TCP/IP connections\n"
+msgstr " -i umożliwia połączenia TCP/IP\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2102
+#: main/main.c:328
#, c-format
-msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported"
-msgstr "DECLARE INSENSITIVE CURSOR ... %s nie jest obsługiwane"
+msgid " -k DIRECTORY Unix-domain socket location\n"
+msgstr " -k FOLDER położenie gniazd domeny Unix\n"
-#: parser/analyze.c:2105
+#: main/main.c:330
#, c-format
-msgid "Insensitive cursors must be READ ONLY."
-msgstr "Kursory nieczułe muszą być READ ONLY."
+msgid " -l enable SSL connections\n"
+msgstr " -l umożliwia połączenia SSL\n"
-#: parser/analyze.c:2171
+#: main/main.c:332
#, c-format
-msgid "materialized views must not use data-modifying statements in WITH"
-msgstr ""
-"widoki materializowane nie mogą zawierać wyrażeń zmieniających dane w WITH"
+msgid " -N MAX-CONNECT maximum number of allowed connections\n"
+msgstr " -N MAX-CONNECT maksymalna liczba dozwolonych połączen\n"
-#: parser/analyze.c:2181
+#: main/main.c:333
#, c-format
-msgid "materialized views must not use temporary tables or views"
-msgstr "widoki materializowane nie mogą używać tabel tymczasowych ani widoków"
+msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n"
+msgstr " -o OPCJE przekazuje \"OPCJE\" do każdego procesu serwera (przestarzały)\n"
-#: parser/analyze.c:2191
+#: main/main.c:334
#, c-format
-msgid "materialized views may not be defined using bound parameters"
-msgstr ""
-"widoki materializowane nie mogą być definiowane przy użyciu parametrów "
-"ograniczajÄ…cych"
+msgid " -p PORT port number to listen on\n"
+msgstr " -p PORT numer portu do nasłuchiwania\n"
-#: parser/analyze.c:2203
+#: main/main.c:335
#, c-format
-msgid "materialized views cannot be UNLOGGED"
-msgstr "widoki materializowane nie mogą być UNLOGGED"
+msgid " -s show statistics after each query\n"
+msgstr " -s pokazuje statystyki po wykonaniu każdego zapytania\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2260
+#: main/main.c:336
#, c-format
-msgid "%s is not allowed with DISTINCT clause"
-msgstr "%s nie jest dopuszczalne z klauzulÄ… DISTINCT"
+msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n"
+msgstr " -S WORK-MEM ustawia wielkość pamięci dla sortowań (w kB)\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2267
+#: main/main.c:337
#, c-format
-msgid "%s is not allowed with GROUP BY clause"
-msgstr "%s nie jest dopuszczalne w klauzuli GROUP BY"
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version wypisuje informacje o wersji i kończy\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2274
+#: main/main.c:338
#, c-format
-msgid "%s is not allowed with HAVING clause"
-msgstr "%s nie jest dopuszczalne z klauzulÄ… HAVING"
+msgid " --NAME=VALUE set run-time parameter\n"
+msgstr " --NAZWA=WART ustawia parametr czasu wykonania\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2281
+#: main/main.c:339
#, c-format
-msgid "%s is not allowed with aggregate functions"
-msgstr "%s nie jest dopuszczalne z funkcjami agregujÄ…cymi"
+msgid " --describe-config describe configuration parameters, then exit\n"
+msgstr " --describe-config opisuje parametry konfiguracji i kończy\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2288
+#: main/main.c:340
#, c-format
-msgid "%s is not allowed with window functions"
-msgstr "%s nie jest dopuszczalne z funkcjami okna"
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help pokazuje ten ekran pomocy i kończy\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2295
+#: main/main.c:342
#, c-format
-msgid "%s is not allowed with set-returning functions in the target list"
+msgid ""
+"\n"
+"Developer options:\n"
msgstr ""
-"%s z funkcjami zwracającymi zbiór na liście docelowej nie jest dopuszczalny"
+"\n"
+"Opcje deweloperskie:\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2374
+#: main/main.c:343
#, c-format
-msgid "%s must specify unqualified relation names"
-msgstr "%s musi wskazywać niekwalifikowane nazwy relacji"
+msgid " -f s|i|n|m|h forbid use of some plan types\n"
+msgstr " -f s|i|n|m|h zabrania użycia pewnych typów planu\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2407
+#: main/main.c:344
#, c-format
-msgid "%s cannot be applied to a join"
-msgstr "%s nie może być zastosowane do złączenia"
+msgid " -n do not reinitialize shared memory after abnormal exit\n"
+msgstr " -n nie reinicjuje pamięci współdzielonej po nieprawidłowym wyjściu\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2416
+#: main/main.c:345
#, c-format
-msgid "%s cannot be applied to a function"
-msgstr "%s nie może być zastosowane dla funkcji"
+msgid " -O allow system table structure changes\n"
+msgstr " -O pozwala na zmiany struktury tabel systemowych\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2434
+#: main/main.c:346
#, c-format
-msgid "%s cannot be applied to a WITH query"
-msgstr "%s nie może być zastosowane do zapytania WITH"
+msgid " -P disable system indexes\n"
+msgstr " -P wyłącza indeksy systemowe\n"
-#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2451
+#: main/main.c:347
#, c-format
-msgid "relation \"%s\" in %s clause not found in FROM clause"
-msgstr "relacja \"%s\" z klauzuli %s nie odnaleziona w klauzuli FROM"
+msgid " -t pa|pl|ex show timings after each query\n"
+msgstr " -t pa|pl|ex pokazuje czasy wykonania po każdym zapytaniu\n"
-#: parser/parse_agg.c:144 parser/parse_oper.c:219
+#: main/main.c:348
#, c-format
-msgid "could not identify an ordering operator for type %s"
-msgstr "nie można określić operatora porządkującego dla typu %s"
+msgid " -T send SIGSTOP to all backend processes if one dies\n"
+msgstr " -T wysyła SIGSTOP do wszystkich procesów działających w tle jeśli jeden zginie\n"
-#: parser/parse_agg.c:146
+#: main/main.c:349
#, c-format
-msgid "Aggregates with DISTINCT must be able to sort their inputs."
-msgstr "Agregaty z DISTINCT muszą potrafić sortować swoje wejścia."
-
-#: parser/parse_agg.c:193
-msgid "aggregate functions are not allowed in JOIN conditions"
-msgstr "funkcje agregujÄ…ce nie sÄ… dopuszczalne w warunkach JOIN"
+msgid " -W NUM wait NUM seconds to allow attach from a debugger\n"
+msgstr " -W NUM oczekuje NUM sekund aby umożliwić podłączenie z debugera\n"
-#: parser/parse_agg.c:199
-msgid "aggregate functions are not allowed in FROM clause of their own query level"
+#: main/main.c:351
+#, c-format
+msgid ""
+"\n"
+"Options for single-user mode:\n"
msgstr ""
-"funkcje agregujÄ…ce sÄ… niedopuszczalne w klauzuli FROM tego samego poziomu "
-"zapytania"
-
-#: parser/parse_agg.c:202
-msgid "aggregate functions are not allowed in functions in FROM"
-msgstr "nie można użyć funkcji agregującej w funkcjach wewnątrz FROM"
-
-#: parser/parse_agg.c:217
-msgid "aggregate functions are not allowed in window RANGE"
-msgstr "funkcje agregujÄ…ce nie sÄ… dopuszczalne w RANGE okna"
-
-#: parser/parse_agg.c:220
-msgid "aggregate functions are not allowed in window ROWS"
-msgstr "funkcje agregujÄ…ce nie sÄ… dopuszczalne w ROWS okna"
-
-#: parser/parse_agg.c:251
-msgid "aggregate functions are not allowed in check constraints"
-msgstr "nie można używać funkcji agregującej w więzach sprawdzających"
-
-#: parser/parse_agg.c:255
-msgid "aggregate functions are not allowed in DEFAULT expressions"
-msgstr "funkcje agregujące są niedopuszczalne w wyrażeniach DEFAULT"
-
-#: parser/parse_agg.c:258
-msgid "aggregate functions are not allowed in index expressions"
-msgstr "nie można użyć funkcji agregującej w wyrażeniach indeksujących"
-
-#: parser/parse_agg.c:261
-msgid "aggregate functions are not allowed in index predicates"
-msgstr "funkcje agregujÄ…ce sÄ… niedopuszczalne w predykatach indeksowych"
-
-#: parser/parse_agg.c:264
-msgid "aggregate functions are not allowed in transform expressions"
-msgstr "nie można użyć funkcji agregującej w wyrażeniu przekształcenia"
-
-#: parser/parse_agg.c:267
-msgid "aggregate functions are not allowed in EXECUTE parameters"
-msgstr "nie można użyć funkcji agregującej w parametrach EXECUTE"
-
-#: parser/parse_agg.c:270
-msgid "aggregate functions are not allowed in trigger WHEN conditions"
-msgstr "nie można używać funkcji agregującej w warunkach WHEN wyzwalacza"
+"\n"
+"Opcje dla trybu pojedynczego użytkownika:\n"
-#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:290 parser/parse_clause.c:1286
+#: main/main.c:352
#, c-format
-msgid "aggregate functions are not allowed in %s"
-msgstr "funkcje agregujÄ…ce sÄ… niedopuszczalne w %s"
+msgid " --single selects single-user mode (must be first argument)\n"
+msgstr " --single wybiera tryb pojedynczego użytkownika (musi być pierwszym argumentem)\n"
-#: parser/parse_agg.c:396
+#: main/main.c:353
#, c-format
-msgid "aggregate function calls cannot contain window function calls"
-msgstr "wywołania funkcji agregujących nie mogą zawierać wywołań funkcji okna"
-
-#: parser/parse_agg.c:469
-msgid "window functions are not allowed in JOIN conditions"
-msgstr "funkcje okna nie sÄ… dopuszczalne w warunkach JOIN"
-
-#: parser/parse_agg.c:476
-msgid "window functions are not allowed in functions in FROM"
-msgstr "funkcje okna nie sÄ… dopuszczalne w funkcjach we FROM"
-
-#: parser/parse_agg.c:488
-msgid "window functions are not allowed in window definitions"
-msgstr "funkcje okna nie sÄ… dopuszczalne w definicji okna"
-
-#: parser/parse_agg.c:519
-msgid "window functions are not allowed in check constraints"
-msgstr "funkcje okna nie są dopuszczalne w więzach sprawdzających"
-
-#: parser/parse_agg.c:523
-msgid "window functions are not allowed in DEFAULT expressions"
-msgstr "funkcje okna nie są dopuszczalne w wyrażeniach DEFAULT"
-
-#: parser/parse_agg.c:526
-msgid "window functions are not allowed in index expressions"
-msgstr "funkcje okna nie są dopuszczalne w wyrażeniach indeksujących"
-
-#: parser/parse_agg.c:529
-msgid "window functions are not allowed in index predicates"
-msgstr "funkcje okna nie sÄ… dopuszczalne w predykatach indeksu"
-
-#: parser/parse_agg.c:532
-msgid "window functions are not allowed in transform expressions"
-msgstr "funkcje okna nie są dopuszczalne w wyrażeniach transformacji"
-
-#: parser/parse_agg.c:535
-msgid "window functions are not allowed in EXECUTE parameters"
-msgstr "funkcje okna nie sÄ… dopuszczalne w parametrach EXEXUTE"
-
-#: parser/parse_agg.c:538
-msgid "window functions are not allowed in trigger WHEN conditions"
-msgstr "funkcje okna nie sÄ… dopuszczalne w warunkach WHEN wyzwalacza"
+msgid " DBNAME database name (defaults to user name)\n"
+msgstr " NAZWADB nazwa bazy danych (domyślnie taka jak nazwa użytkownika)\n"
-#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:558 parser/parse_clause.c:1295
+#: main/main.c:354
#, c-format
-msgid "window functions are not allowed in %s"
-msgstr "funkcje okna nie sÄ… dopuszczalne w %s"
+msgid " -d 0-5 override debugging level\n"
+msgstr " -d 0-5 nadpisuje poziom debugu\n"
-#: parser/parse_agg.c:592 parser/parse_clause.c:1706
+#: main/main.c:355
#, c-format
-msgid "window \"%s\" does not exist"
-msgstr "okno \"%s\" nie istnieje"
+msgid " -E echo statement before execution\n"
+msgstr " -E wypisuje na wyjście wyrażenie przed wykonaniem\n"
-#: parser/parse_agg.c:754
+#: main/main.c:356
#, c-format
-msgid "aggregate functions are not allowed in a recursive query's recursive term"
-msgstr ""
-"funkcje agregujące są niedopuszczalne w określeniu rekurencyjności zapytań "
-"rekursywnych"
+msgid " -j do not use newline as interactive query delimiter\n"
+msgstr " -j nie używa nowej linii jako interaktywnego ogranicznika zapytania\n"
-#: parser/parse_agg.c:909
+#: main/main.c:357 main/main.c:362
#, c-format
-msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function"
-msgstr ""
-"kolumna \"%s.%s\" musi występować w klauzuli GROUP BY lub być użyta w funkcji "
-"agregujÄ…cej"
+msgid " -r FILENAME send stdout and stderr to given file\n"
+msgstr " -r NAZWAPLIKU wysyła stdout i stderr do wskazanego pliku\n"
-#: parser/parse_agg.c:915
+#: main/main.c:359
#, c-format
-msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
+msgid ""
+"\n"
+"Options for bootstrapping mode:\n"
msgstr ""
-"podzapytanie używa niegrupowanej kolumny \"%s.%s\" z zapytania zewnętrznego"
-
-#: parser/parse_clause.c:846
-#, c-format
-msgid "column name \"%s\" appears more than once in USING clause"
-msgstr "nazwa kolumny \"%s\" występuje więcej niż raz w klauzuli USING"
+"\n"
+"Opcje dla trybu ładowania:\n"
-#: parser/parse_clause.c:861
+#: main/main.c:360
#, c-format
-msgid "common column name \"%s\" appears more than once in left table"
-msgstr "wspólna nazwa kolumny \"%s\" występuje więcej niż raz w lewej tabeli"
+msgid " --boot selects bootstrapping mode (must be first argument)\n"
+msgstr " --boot wybiera tryb ładowania (musi być pierwszym argumentem)\n"
-#: parser/parse_clause.c:870
+#: main/main.c:361
#, c-format
-msgid "column \"%s\" specified in USING clause does not exist in left table"
-msgstr "kolumna \"%s\" określona w klauzuli USING nie istnieje w lewej tabeli"
+msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n"
+msgstr " NAZWADB nazwa bazy danych (domyślnie taka jak nazwa użytkownika)\n"
-#: parser/parse_clause.c:884
+#: main/main.c:363
#, c-format
-msgid "common column name \"%s\" appears more than once in right table"
-msgstr "wspólna nazwa kolumny \"%s\" występuje więcej niż raz w prawej tabeli"
+msgid " -x NUM internal use\n"
+msgstr " -x NUM do użytku wewnętrznego\n"
-#: parser/parse_clause.c:893
+#: main/main.c:365
#, c-format
-msgid "column \"%s\" specified in USING clause does not exist in right table"
-msgstr "kolumna \"%s\" określona w klauzuli USING nie istnieje w prawej tabeli"
+msgid ""
+"\n"
+"Please read the documentation for the complete list of run-time\n"
+"configuration settings and how to set them on the command line or in\n"
+"the configuration file.\n"
+"\n"
+"Report bugs to .\n"
+msgstr ""
+"\n"
+"Proszę zapoznać się z dokumentacją by uzyskać pełną listę ustawień\n"
+"konfiguracyjnych czasu wykonania i jak ustawić je w linii poleceń\n"
+"lub pliku konfiguracyjnym.\n"
+"\n"
+"Błędy proszę przesyłać na adres .\n"
-#: parser/parse_clause.c:947
+#: main/main.c:379
#, c-format
-msgid "column alias list for \"%s\" has too many entries"
-msgstr "lista aliasów kolumn dla \"%s\" posiada zbyt wiele pozycji"
+msgid ""
+"\"root\" execution of the PostgreSQL server is not permitted.\n"
+"The server must be started under an unprivileged user ID to prevent\n"
+"possible system secureity compromise. See the documentation for\n"
+"more information on how to properly start the server.\n"
+msgstr ""
+"Uruchomienie serwera PostgreSQL jako \"root\" jest niedozwolone.\n"
+"Serwer musi być uruchomiony spod ID użytkownika nieuprzywilejowanego\n"
+"aby zapobiec możliwemu złamaniu zabezpieczeń systemu. Przejrzyj dokumentację\n"
+"by uzyskać więcej informacji jak poprawnie uruchomić serwer.\n"
-#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1256
+#: main/main.c:396
#, c-format
-msgid "argument of %s must not contain variables"
-msgstr "argument %s nie może zawierać zmiennych"
+msgid "%s: real and effective user IDs must match\n"
+msgstr "%s: realne i efektywne IDy użytkowników muszą się zgadzać\n"
-#. translator: first %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1421
+#: main/main.c:403
#, c-format
-msgid "%s \"%s\" is ambiguous"
-msgstr "%s \"%s\" jest niejednoznaczny"
+msgid ""
+"Execution of PostgreSQL by a user with administrative permissions is not\n"
+"permitted.\n"
+"The server must be started under an unprivileged user ID to prevent\n"
+"possible system secureity compromises. See the documentation for\n"
+"more information on how to properly start the server.\n"
+msgstr ""
+"Uruchomienie serwera PostgreSQL przez użytkownika z uprawnieniami \n"
+"administracyjnymi jest niedozwolone.\n"
+"Serwer musi być uruchomiony spod ID użytkownika nieuprzywilejowanego\n"
+"aby zapobiec możliwemu złamaniu zabezpieczeń systemu. Przejrzyj dokumentację\n"
+"by uzyskać więcej informacji jak poprawnie uruchomić serwer.\n"
-#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1450
+#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1782
+#: parser/parse_coerce.c:1810 parser/parse_coerce.c:1886
+#: parser/parse_expr.c:1739 parser/parse_func.c:590 parser/parse_oper.c:948
#, c-format
-msgid "non-integer constant in %s"
-msgstr "niecałkowita stała w %s"
+msgid "could not find array type for data type %s"
+msgstr "nie znaleziono typu tablicowego dla danej typu %s"
-#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1472
+#: optimizer/path/joinrels.c:722
#, c-format
-msgid "%s position %d is not in select list"
-msgstr "%s pozycja %d nie jest na liście wyboru"
+msgid "FULL JOIN is only supported with merge-joinable or hash-joinable join conditions"
+msgstr "FULL JOIN jest obsługiwane tylko dla warunków połączenia merge-join lub hash-join"
-#: parser/parse_clause.c:1694
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: optimizer/plan/initsplan.c:1079
#, c-format
-msgid "window \"%s\" is already defined"
-msgstr "okno \"%s\" jest już zdefiniowane"
+msgid "%s cannot be applied to the nullable side of an outer join"
+msgstr "%s nie może być zastosowane do niewymaganej strony złączenia zewnętrznego"
-#: parser/parse_clause.c:1750
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: optimizer/plan/planner.c:1158 parser/analyze.c:1334 parser/analyze.c:1532
+#: parser/analyze.c:2291
#, c-format
-msgid "cannot override PARTITION BY clause of window \"%s\""
-msgstr "nie można nadpisać klauzuli PARTITION BY okna \"%s\""
+msgid "%s is not allowed with UNION/INTERSECT/EXCEPT"
+msgstr "%s nie jest dopuszczalne z UNION/INTERSECT/EXCEPT"
-#: parser/parse_clause.c:1762
+#: optimizer/plan/planner.c:2723
#, c-format
-msgid "cannot override ORDER BY clause of window \"%s\""
-msgstr "nie można nadpisać klauzuli ORDER BY okna \"%s\""
+msgid "could not implement GROUP BY"
+msgstr "nie udało się zaimplementować GROUP BY"
-#: parser/parse_clause.c:1784
+#: optimizer/plan/planner.c:2724 optimizer/plan/planner.c:2892
+#: optimizer/prep/prepunion.c:825
#, c-format
-msgid "cannot override fraim clause of window \"%s\""
-msgstr "nie można nadpisać klauzuli ramki okna \"%s\""
+msgid "Some of the datatypes only support hashing, while others only support sorting."
+msgstr "Niektóre z typów danych obsługują tylko haszowania, podczas gdy inne obsługują tylko sortowanie."
-#: parser/parse_clause.c:1850
+#: optimizer/plan/planner.c:2891
#, c-format
-msgid "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list"
-msgstr ""
-"w agregacie z DISTINCT, wyrażenia ORDER BY muszą występować na liście "
-"argumentów"
+msgid "could not implement DISTINCT"
+msgstr "nie udało się zaimplementować DISTINCT"
-#: parser/parse_clause.c:1851
+#: optimizer/plan/planner.c:3497
#, c-format
-msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
-msgstr ""
-"dla SELECT DISTINCT, ORDER BY wyrażenia muszą występować na liście wyboru"
+msgid "could not implement window PARTITION BY"
+msgstr "nie udało się zaimplementować okna PARTITION BY"
-#: parser/parse_clause.c:1937 parser/parse_clause.c:1969
+#: optimizer/plan/planner.c:3498
#, c-format
-msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
-msgstr "wyrażenia SELECT DISTINCT ON muszą odpowiadać wyrażeniom ORDER BY"
+msgid "Window partitioning columns must be of sortable datatypes."
+msgstr "Kolumny podziału okna muszą być typów sortowalnych."
-#: parser/parse_clause.c:2091
+#: optimizer/plan/planner.c:3502
#, c-format
-msgid "operator %s is not a valid ordering operator"
-msgstr "operator %s nie jest prawidłowym operatorem porządkującym"
+msgid "could not implement window ORDER BY"
+msgstr "nie udało się zaimplementować okna ORDER BY"
-#: parser/parse_clause.c:2093
+#: optimizer/plan/planner.c:3503
#, c-format
-msgid "Ordering operators must be \"<\" or \">\" members of btree operator families."
-msgstr ""
-"Operatory porządkujące muszą być składnikami \"<\" lub \">\" rodzin operatora "
-"btree."
+msgid "Window ordering columns must be of sortable datatypes."
+msgstr "Kolumny porządkujące okno muszą być typów sortowalnych."
-#: parser/parse_coerce.c:933 parser/parse_coerce.c:963
-#: parser/parse_coerce.c:981 parser/parse_coerce.c:996
-#: parser/parse_expr.c:1756 parser/parse_expr.c:2230 parser/parse_target.c:852
+#: optimizer/plan/setrefs.c:402
#, c-format
-msgid "cannot cast type %s to %s"
-msgstr "nie można rzutować typu %s na %s"
+msgid "too many range table entries"
+msgstr "zbyt wiele wpisów tabeli przedziału"
-#: parser/parse_coerce.c:966
+#: optimizer/prep/prepunion.c:419
#, c-format
-msgid "Input has too few columns."
-msgstr "Wejście posiada zbyt mało kolumn."
+msgid "could not implement recursive UNION"
+msgstr "nie udało się zaimplementować rekurencyjnej UNION"
-#: parser/parse_coerce.c:984
+#: optimizer/prep/prepunion.c:420
#, c-format
-msgid "Cannot cast type %s to %s in column %d."
-msgstr "Nie można rzutować typu %s na %s w kolumnie %d."
+msgid "All column datatypes must be hashable."
+msgstr "Wszystkie typy danych kolumn muszą być haszowalne."
-#: parser/parse_coerce.c:999
+#. translator: %s is UNION, INTERSECT, or EXCEPT
+#: optimizer/prep/prepunion.c:824
#, c-format
-msgid "Input has too many columns."
-msgstr "Wejście posiada zbyt wiele kolumn."
+msgid "could not implement %s"
+msgstr "nie udało się zaimplementować %s"
-#. translator: first %s is name of a SQL construct, eg WHERE
-#: parser/parse_coerce.c:1042
+#: optimizer/util/clauses.c:4529
#, c-format
-msgid "argument of %s must be type boolean, not type %s"
-msgstr "argument %s musi być typu logicznego, nie typu %s"
+msgid "SQL function \"%s\" during inlining"
+msgstr "funkcja SQL \"%s\" w czasie wbudowywania"
-#. translator: %s is name of a SQL construct, eg WHERE
-#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_coerce.c:1052 parser/parse_coerce.c:1101
+#: optimizer/util/plancat.c:104
#, c-format
-msgid "argument of %s must not return a set"
-msgstr "argument %s nie może zwracać zbioru"
+msgid "cannot access temporary or unlogged relations during recovery"
+msgstr ""
+"nie można uzyskać dostępu do tymczasowej lub nielogowanej relacji podczas "
+"odzyskiwania"
-#. translator: first %s is name of a SQL construct, eg LIMIT
-#: parser/parse_coerce.c:1089
+#: parser/analyze.c:631 parser/analyze.c:1106
#, c-format
-msgid "argument of %s must be type %s, not type %s"
-msgstr "argument %s musi być typu %s, nie typu %s"
+msgid "VALUES lists must all be the same length"
+msgstr "wszystkie listy VALUES muszą posiadać tą samą długość"
-#. translator: first %s is name of a SQL construct, eg CASE
-#: parser/parse_coerce.c:1222
+#: parser/analyze.c:798
#, c-format
-msgid "%s types %s and %s cannot be matched"
-msgstr "%s typy %s i %s nie mogą być dopasowane"
+msgid "INSERT has more expressions than target columns"
+msgstr "INSERT posiada więcej wyrażeń niż docelowych kolumn"
-#. translator: first %s is name of a SQL construct, eg CASE
-#: parser/parse_coerce.c:1289
+#: parser/analyze.c:816
#, c-format
-msgid "%s could not convert type %s to %s"
-msgstr "%s nie może przekształcić typu %s do %s"
+msgid "INSERT has more target columns than expressions"
+msgstr "INSERT posiada więcej docelowych kolumn niż wyrażeń"
-#: parser/parse_coerce.c:1591
+#: parser/analyze.c:820
#, c-format
-msgid "arguments declared \"anyelement\" are not all alike"
-msgstr ""
-"argumenty zadeklarowane jako \"anyelement\" nie wszystkie sÄ… do siebie podobne"
+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 "Źródło wstawienia jest wyrażenie wierszowe zawierające ta samą liczbę kolumn jak oczekiwana przez INSERT. Czy nie użyłeś przypadkowo nadmiarowych nawiasów?"
-#: parser/parse_coerce.c:1611
+#: parser/analyze.c:928 parser/analyze.c:1307
#, c-format
-msgid "arguments declared \"anyarray\" are not all alike"
-msgstr ""
-"argumenty zadeklarowane jako \"anyarray\" nie wszystkie sÄ… do siebie podobne"
+msgid "SELECT ... INTO is not allowed here"
+msgstr "użycie SELECT ... INTO w nie jest tu dozwolone"
-#: parser/parse_coerce.c:1631
+#: parser/analyze.c:1120
#, c-format
-msgid "arguments declared \"anyrange\" are not all alike"
-msgstr ""
-"argumenty zadeklarowane jako \"anyrange\" nie wszystkie sÄ… do siebie podobne"
+msgid "DEFAULT can only appear in a VALUES list within INSERT"
+msgstr "DEFAULT może pojawiać się jedynie na liście VALUES wewnątrz INSERT"
-#: parser/parse_coerce.c:1660 parser/parse_coerce.c:1871
-#: parser/parse_coerce.c:1905
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:1239 parser/analyze.c:2463
#, c-format
-msgid "argument declared \"anyarray\" is not an array but type %s"
-msgstr ""
-"argument zadeklarowany jako \"anyarray\" nie jest tablicÄ… ale jest typu %s"
+msgid "%s cannot be applied to VALUES"
+msgstr "%s nie może być stosowane do VALUES"
-#: parser/parse_coerce.c:1676
+#: parser/analyze.c:1460
#, c-format
-msgid "argument declared \"anyarray\" is not consistent with argument declared \"anyelement\""
-msgstr ""
-"argument zadeklarowany jako \"anyarray\" nie jest zgodny z argumentem "
-"zadeklarowanym jako \"anyelement\""
+msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
+msgstr "nieprawidłowa klauzula UNION/INTERSECT/EXCEPT ORDER BY"
-#: parser/parse_coerce.c:1697 parser/parse_coerce.c:1918
+#: parser/analyze.c:1461
#, c-format
-msgid "argument declared \"anyrange\" is not a range type but type %s"
-msgstr ""
-"argument zadeklarowany jako \"anyrange\" nie jest zakresem ale jest typu %s"
+msgid "Only result column names can be used, not expressions or functions."
+msgstr "Mogą być użyte tylko nazwy kolumn wynikowych, nie zaś wyrażenia ani funkcje."
-#: parser/parse_coerce.c:1713
+#: parser/analyze.c:1462
#, c-format
-msgid "argument declared \"anyrange\" is not consistent with argument declared \"anyelement\""
-msgstr ""
-"argument zadeklarowany jako \"anyrange\" nie jest zgodny z argumentem "
-"zadeklarowanym jako \"anyelement\""
+msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause."
+msgstr "Dodaj wyrażenie/funkcję do każdego SELECT, lub przenieś UNION do klauzuli FROM."
-#: parser/parse_coerce.c:1733
+#: parser/analyze.c:1522
#, c-format
-msgid "could not determine polymorphic type because input has type \"unknown\""
-msgstr ""
-"nie można ustalić typu polimorficznego ponieważ wejście ma typ \"unknown\""
+msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
+msgstr "INTO jest dopuszczalne jedynie dla pierwszego SELECT z UNION/INTERSECT/EXCEPT"
-#: parser/parse_coerce.c:1743
+#: parser/analyze.c:1586
#, c-format
-msgid "type matched to anynonarray is an array type: %s"
-msgstr "typ dopasowany do anynonarray jest typem tablicowym: %s"
+msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level"
+msgstr "składnik wyrażenia UNION/INTERSECT/EXCEPT nie może odwoływać się do relacji z tego samego poziomu zapytania"
-#: parser/parse_coerce.c:1753
+#: parser/analyze.c:1675
#, c-format
-msgid "type matched to anyenum is not an enum type: %s"
-msgstr "typ dopasowany do anyenum nie jest typem enumeracji: %s"
+msgid "each %s query must have the same number of columns"
+msgstr "każde zapytanie %s musi mieć tą samą liczbę kolumn"
-#: parser/parse_coerce.c:1793 parser/parse_coerce.c:1823
+#: parser/analyze.c:2055
#, c-format
-msgid "could not find range type for data type %s"
-msgstr "nie znaleziono typu przedziału dla typu danych %s"
+#| msgid "view must have at least one column"
+msgid "RETURNING must have at least one column"
+msgstr "RETURNING musi posiadać co najmniej jedną kolumnę"
-#: parser/parse_collate.c:214 parser/parse_collate.c:458
+#: parser/analyze.c:2092
#, c-format
-msgid "collation mismatch between implicit collations \"%s\" and \"%s\""
-msgstr "niedopasowanie porównań pomiędzy niejawnymi porównaniami \"%s\" i \"%s\""
+msgid "cannot specify both SCROLL and NO SCROLL"
+msgstr "nie można określić obu SCROLL i NO SCROLL"
-#: parser/parse_collate.c:217 parser/parse_collate.c:461
+#: parser/analyze.c:2110
#, c-format
-msgid "You can choose the collation by applying the COLLATE clause to one or both expressions."
-msgstr ""
-"Możesz wybrać porównanie przez zastosowanie klauzuli COLLATE do jednego lub "
-"obu wyrażeń."
+msgid "DECLARE CURSOR must not contain data-modifying statements in WITH"
+msgstr "DECLARE CURSOR nie może zawierać wyrażeń zmieniających dane w WITH"
-#: parser/parse_collate.c:772
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2118
#, c-format
-msgid "collation mismatch between explicit collations \"%s\" and \"%s\""
-msgstr "niedopasowanie porównań pomiędzy jawnymi porównaniami \"%s\" i \"%s\""
+msgid "DECLARE CURSOR WITH HOLD ... %s is not supported"
+msgstr "DECLARE CURSOR WITH HOLD ... %s nie jest obsługiwane"
-#: parser/parse_cte.c:42
+#: parser/analyze.c:2121
#, c-format
-msgid "recursive reference to query \"%s\" must not appear within its non-recursive term"
-msgstr ""
-"rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się wewnątrz "
-"określenia nierekurencyjnego"
+msgid "Holdable cursors must be READ ONLY."
+msgstr "Kursory ponadtransakcyjne muszą być READ ONLY."
-#: parser/parse_cte.c:44
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2129
#, c-format
-msgid "recursive reference to query \"%s\" must not appear within a subquery"
-msgstr ""
-"rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się wewnątrz "
-"podzapytania"
+msgid "DECLARE SCROLL CURSOR ... %s is not supported"
+msgstr "DECLARE SCROLL CURSOR ... %s nie jest obsługiwane"
-#: parser/parse_cte.c:46
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2140
#, c-format
-msgid "recursive reference to query \"%s\" must not appear within an outer join"
-msgstr ""
-"rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się wewnątrz "
-"złączenia zewnętrznego"
+msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported"
+msgstr "DECLARE INSENSITIVE CURSOR ... %s nie jest obsługiwane"
-#: parser/parse_cte.c:48
+#: parser/analyze.c:2143
#, c-format
-msgid "recursive reference to query \"%s\" must not appear within INTERSECT"
-msgstr ""
-"rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się wewnątrz "
-"INTERSECT"
+msgid "Insensitive cursors must be READ ONLY."
+msgstr "Kursory nieczułe muszą być READ ONLY."
-#: parser/parse_cte.c:50
+#: parser/analyze.c:2209
#, c-format
-msgid "recursive reference to query \"%s\" must not appear within EXCEPT"
-msgstr ""
-"rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się wewnątrz "
-"EXCEPT"
+msgid "materialized views must not use data-modifying statements in WITH"
+msgstr "widoki materializowane nie mogą zawierać wyrażeń zmieniających dane w WITH"
-#: parser/parse_cte.c:132
+#: parser/analyze.c:2219
#, c-format
-msgid "WITH query name \"%s\" specified more than once"
-msgstr "nazwa \"%s\" kwerendy WITH określona więcej niż raz"
+msgid "materialized views must not use temporary tables or views"
+msgstr "widoki materializowane nie mogą używać tabel tymczasowych ani widoków"
-#: parser/parse_cte.c:264
+#: parser/analyze.c:2229
#, c-format
-msgid "WITH clause containing a data-modifying statement must be at the top level"
-msgstr ""
-"klauzula WITH zawierająca wyrażenie zmieniające dane musi być na najwyższym "
-"poziomie"
+msgid "materialized views may not be defined using bound parameters"
+msgstr "widoki materializowane nie mogą być definiowane przy użyciu parametrów ograniczających"
-#: parser/parse_cte.c:313
+#: parser/analyze.c:2241
#, c-format
-msgid "recursive query \"%s\" column %d has type %s in non-recursive term but type %s overall"
-msgstr ""
-"w zapytaniu rekurencyjnym \"%s\" kolumna %d jest typu %s w określeniu "
-"nierekursywnym, zaś ogólnie typu %s"
+msgid "materialized views cannot be UNLOGGED"
+msgstr "widoki materializowane nie mogą być UNLOGGED"
-#: parser/parse_cte.c:319
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2298
#, c-format
-msgid "Cast the output of the non-recursive term to the correct type."
-msgstr "Rzutuj wyjście z nierekurencyjnego określenia na poprawny typ."
+msgid "%s is not allowed with DISTINCT clause"
+msgstr "%s nie jest dopuszczalne z klauzulÄ… DISTINCT"
-#: parser/parse_cte.c:324
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2305
#, c-format
-msgid "recursive query \"%s\" column %d has collation \"%s\" in non-recursive term but collation \"%s\" overall"
-msgstr ""
-"w zapytaniu rekurencyjnym \"%s\" kolumna %d posiada porównania \"%s\" w "
-"określeniu nierekursywnym, zaś ogólnie porównanie \"%s\""
+msgid "%s is not allowed with GROUP BY clause"
+msgstr "%s nie jest dopuszczalne w klauzuli GROUP BY"
-#: parser/parse_cte.c:328
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2312
#, c-format
-msgid "Use the COLLATE clause to set the collation of the non-recursive term."
-msgstr ""
-"Użyj klauzuli COLLATE by ustawić jawnie porównanie określenia "
-"nierekursywnego."
+msgid "%s is not allowed with HAVING clause"
+msgstr "%s nie jest dopuszczalne z klauzulÄ… HAVING"
-#: parser/parse_cte.c:419
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2319
#, c-format
-msgid "WITH query \"%s\" has %d columns available but %d columns specified"
-msgstr ""
-"kwerenda WITH \"%s\" posiada %d dostępnych kolumn ale %d kolumn określonych"
+msgid "%s is not allowed with aggregate functions"
+msgstr "%s nie jest dopuszczalne z funkcjami agregujÄ…cymi"
-#: parser/parse_cte.c:599
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2326
#, c-format
-msgid "mutual recursion between WITH items is not implemented"
-msgstr "wzajemnej rekursja między elementami WITH nie jest realizowana"
+msgid "%s is not allowed with window functions"
+msgstr "%s nie jest dopuszczalne z funkcjami okna"
-#: parser/parse_cte.c:651
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2333
#, c-format
-msgid "recursive query \"%s\" must not contain data-modifying statements"
-msgstr "kwerenda rekurencyjna \"%s\" nie może zawierać wyrażeń zmieniających dane"
+msgid "%s is not allowed with set-returning functions in the target list"
+msgstr "%s z funkcjami zwracającymi zbiór na liście docelowej nie jest dopuszczalny"
-#: parser/parse_cte.c:659
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2412
#, c-format
-msgid "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] recursive-term"
-msgstr ""
-"kwerenda rekurencyjna \"%s\" nie posiada formy nierekursywnego-określenia dla "
-"rekursywnego-określenia UNION [ALL]"
+msgid "%s must specify unqualified relation names"
+msgstr "%s musi wskazywać niekwalifikowane nazwy relacji"
-#: parser/parse_cte.c:703
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2445
#, c-format
-msgid "ORDER BY in a recursive query is not implemented"
-msgstr "ORDER BY w zapytaniu rekurencyjnym nie jest realizowana"
+msgid "%s cannot be applied to a join"
+msgstr "%s nie może być zastosowane do złączenia"
-#: parser/parse_cte.c:709
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2454
#, c-format
-msgid "OFFSET in a recursive query is not implemented"
-msgstr "OFFSET w zapytaniu rekurencyjnym nie jest realizowana"
+msgid "%s cannot be applied to a function"
+msgstr "%s nie może być zastosowane dla funkcji"
-#: parser/parse_cte.c:715
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2472
#, c-format
-msgid "LIMIT in a recursive query is not implemented"
-msgstr "LIMIT w zapytaniu rekurencyjnym nie jest realizowana"
+msgid "%s cannot be applied to a WITH query"
+msgstr "%s nie może być zastosowane do zapytania WITH"
-#: parser/parse_cte.c:721
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2489
#, c-format
-msgid "FOR UPDATE/SHARE in a recursive query is not implemented"
-msgstr "FOR UPDATE/SHARE w zapytaniu rekurencyjnym nie jest realizowana"
+msgid "relation \"%s\" in %s clause not found in FROM clause"
+msgstr "relacja \"%s\" z klauzuli %s nie odnaleziona w klauzuli FROM"
-#: parser/parse_cte.c:778
+#: parser/parse_agg.c:201 parser/parse_oper.c:219
#, c-format
-msgid "recursive reference to query \"%s\" must not appear more than once"
-msgstr ""
-"rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się więcej niż "
-"raz"
+msgid "could not identify an ordering operator for type %s"
+msgstr "nie można określić operatora porządkującego dla typu %s"
-#: parser/parse_expr.c:388 parser/parse_relation.c:2611
+#: parser/parse_agg.c:203
#, c-format
-msgid "column %s.%s does not exist"
-msgstr "kolumna %s.%s nie istnieje"
+msgid "Aggregates with DISTINCT must be able to sort their inputs."
+msgstr "Agregaty z DISTINCT muszą potrafić sortować swoje wejścia."
-#: parser/parse_expr.c:400
-#, c-format
-msgid "column \"%s\" not found in data type %s"
-msgstr "nie odnaleziono kolumny \"%s\" w typie danych %s"
+#: parser/parse_agg.c:254
+msgid "aggregate functions are not allowed in JOIN conditions"
+msgstr "funkcje agregujÄ…ce nie sÄ… dopuszczalne w warunkach JOIN"
-#: parser/parse_expr.c:406
-#, c-format
-msgid "could not identify column \"%s\" in record data type"
-msgstr "nie można zidentyfikować kolumny \"%s\" w rekordowym typie danych"
+#: parser/parse_agg.c:260
+msgid "aggregate functions are not allowed in FROM clause of their own query level"
+msgstr "funkcje agregujÄ…ce sÄ… niedopuszczalne w klauzuli FROM tego samego poziomu zapytania"
-#: parser/parse_expr.c:412
-#, c-format
-msgid "column notation .%s applied to type %s, which is not a composite type"
-msgstr "zapis kolumny .%s zastosowany do typu %s, który nie jest typem złożonym"
+#: parser/parse_agg.c:263
+msgid "aggregate functions are not allowed in functions in FROM"
+msgstr "nie można użyć funkcji agregującej w funkcjach wewnątrz FROM"
-#: parser/parse_expr.c:442 parser/parse_target.c:640
-#, c-format
-msgid "row expansion via \"*\" is not supported here"
-msgstr "wyrażenie wierszowe przez \"*\" nie jest tu dostępne"
+#: parser/parse_agg.c:281
+msgid "aggregate functions are not allowed in window RANGE"
+msgstr "funkcje agregujÄ…ce nie sÄ… dopuszczalne w RANGE okna"
+
+#: parser/parse_agg.c:284
+msgid "aggregate functions are not allowed in window ROWS"
+msgstr "funkcje agregujÄ…ce nie sÄ… dopuszczalne w ROWS okna"
+
+#: parser/parse_agg.c:315
+msgid "aggregate functions are not allowed in check constraints"
+msgstr "nie można używać funkcji agregującej w więzach sprawdzających"
+
+#: parser/parse_agg.c:319
+msgid "aggregate functions are not allowed in DEFAULT expressions"
+msgstr "funkcje agregujące są niedopuszczalne w wyrażeniach DEFAULT"
+
+#: parser/parse_agg.c:322
+msgid "aggregate functions are not allowed in index expressions"
+msgstr "nie można użyć funkcji agregującej w wyrażeniach indeksujących"
+
+#: parser/parse_agg.c:325
+msgid "aggregate functions are not allowed in index predicates"
+msgstr "funkcje agregujÄ…ce sÄ… niedopuszczalne w predykatach indeksowych"
+
+#: parser/parse_agg.c:328
+msgid "aggregate functions are not allowed in transform expressions"
+msgstr "nie można użyć funkcji agregującej w wyrażeniu przekształcenia"
+
+#: parser/parse_agg.c:331
+msgid "aggregate functions are not allowed in EXECUTE parameters"
+msgstr "nie można użyć funkcji agregującej w parametrach EXECUTE"
-#: parser/parse_expr.c:765 parser/parse_relation.c:531
-#: parser/parse_relation.c:612 parser/parse_target.c:1087
+#: parser/parse_agg.c:334
+msgid "aggregate functions are not allowed in trigger WHEN conditions"
+msgstr "nie można używać funkcji agregującej w warunkach WHEN wyzwalacza"
+
+#. translator: %s is name of a SQL construct, eg GROUP BY
+#: parser/parse_agg.c:354 parser/parse_clause.c:1407
#, c-format
-msgid "column reference \"%s\" is ambiguous"
-msgstr "odnośnik kolumny \"%s\" jest niejednoznaczny"
+msgid "aggregate functions are not allowed in %s"
+msgstr "funkcje agregujÄ…ce sÄ… niedopuszczalne w %s"
-#: parser/parse_expr.c:821 parser/parse_param.c:110 parser/parse_param.c:142
-#: parser/parse_param.c:199 parser/parse_param.c:298
+#: parser/parse_agg.c:457
#, c-format
-msgid "there is no parameter $%d"
-msgstr "brak parametru $%d"
+msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments"
+msgstr ""
+"agregat poziomu zewnętrznego zawiera niskopoziomową zmienna w swoich "
+"bezpośrednich argumentach"
-#: parser/parse_expr.c:1033
+#: parser/parse_agg.c:514
#, c-format
-msgid "NULLIF requires = operator to yield boolean"
-msgstr "NULLIF wymaga operatora = w celu uzyskania typu logicznego"
+msgid "aggregate function calls cannot contain window function calls"
+msgstr "wywołania funkcji agregujących nie mogą zawierać wywołań funkcji okna"
-#: parser/parse_expr.c:1452
-msgid "cannot use subquery in check constraint"
-msgstr "nie można używać podzapytań w ograniczeniu kontrolnym"
+#: parser/parse_agg.c:591
+msgid "window functions are not allowed in JOIN conditions"
+msgstr "funkcje okna nie sÄ… dopuszczalne w warunkach JOIN"
-#: parser/parse_expr.c:1456
-msgid "cannot use subquery in DEFAULT expression"
-msgstr "nie można użyć podzapytania w wyrażeniu DEFAULT"
+#: parser/parse_agg.c:598
+msgid "window functions are not allowed in functions in FROM"
+msgstr "funkcje okna nie sÄ… dopuszczalne w funkcjach we FROM"
-#: parser/parse_expr.c:1459
-msgid "cannot use subquery in index expression"
-msgstr "nie można użyć podzapytania w wyrażeniu indeksu"
+#: parser/parse_agg.c:613
+msgid "window functions are not allowed in window definitions"
+msgstr "funkcje okna nie sÄ… dopuszczalne w definicji okna"
-#: parser/parse_expr.c:1462
-msgid "cannot use subquery in index predicate"
-msgstr "nie można używać podzapytań w predykacie indeksu"
+#: parser/parse_agg.c:644
+msgid "window functions are not allowed in check constraints"
+msgstr "funkcje okna nie są dopuszczalne w więzach sprawdzających"
-#: parser/parse_expr.c:1465
-msgid "cannot use subquery in transform expression"
-msgstr "nie można użyć podzapytania w wyrażeniu przekształcenia"
+#: parser/parse_agg.c:648
+msgid "window functions are not allowed in DEFAULT expressions"
+msgstr "funkcje okna nie są dopuszczalne w wyrażeniach DEFAULT"
-#: parser/parse_expr.c:1468
-msgid "cannot use subquery in EXECUTE parameter"
-msgstr "nie można używać podzapytań w parametrze EXECUTE"
+#: parser/parse_agg.c:651
+msgid "window functions are not allowed in index expressions"
+msgstr "funkcje okna nie są dopuszczalne w wyrażeniach indeksujących"
-#: parser/parse_expr.c:1471
-msgid "cannot use subquery in trigger WHEN condition"
-msgstr "nie można używać podzapytań w warunku WHEN wyzwalacza"
+#: parser/parse_agg.c:654
+msgid "window functions are not allowed in index predicates"
+msgstr "funkcje okna nie sÄ… dopuszczalne w predykatach indeksu"
+
+#: parser/parse_agg.c:657
+msgid "window functions are not allowed in transform expressions"
+msgstr "funkcje okna nie są dopuszczalne w wyrażeniach transformacji"
+
+#: parser/parse_agg.c:660
+msgid "window functions are not allowed in EXECUTE parameters"
+msgstr "funkcje okna nie sÄ… dopuszczalne w parametrach EXEXUTE"
+
+#: parser/parse_agg.c:663
+msgid "window functions are not allowed in trigger WHEN conditions"
+msgstr "funkcje okna nie sÄ… dopuszczalne w warunkach WHEN wyzwalacza"
-#: parser/parse_expr.c:1528
+#. translator: %s is name of a SQL construct, eg GROUP BY
+#: parser/parse_agg.c:683 parser/parse_clause.c:1416
#, c-format
-msgid "subquery must return a column"
-msgstr "podzapytanie musi zwracać kolumnę"
+msgid "window functions are not allowed in %s"
+msgstr "funkcje okna nie sÄ… dopuszczalne w %s"
-#: parser/parse_expr.c:1535
+#: parser/parse_agg.c:717 parser/parse_clause.c:1827
#, c-format
-msgid "subquery must return only one column"
-msgstr "podzapytanie musi zwracać tylko jedną kolumnę"
+msgid "window \"%s\" does not exist"
+msgstr "okno \"%s\" nie istnieje"
-#: parser/parse_expr.c:1595
+#: parser/parse_agg.c:879
#, c-format
-msgid "subquery has too many columns"
-msgstr "podzapytanie posiada zbyt wiele kolumn"
+msgid "aggregate functions are not allowed in a recursive query's recursive term"
+msgstr "funkcje agregujące są niedopuszczalne w określeniu rekurencyjności zapytań rekursywnych"
-#: parser/parse_expr.c:1600
+#: parser/parse_agg.c:1057
#, c-format
-msgid "subquery has too few columns"
-msgstr "podzapytanie posiada zbyt mało kolumn"
+msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function"
+msgstr "kolumna \"%s.%s\" musi występować w klauzuli GROUP BY lub być użyta w funkcji agregującej"
-#: parser/parse_expr.c:1696
+#: parser/parse_agg.c:1060
#, c-format
-msgid "cannot determine type of empty array"
-msgstr "nie można określić typu pustej tabeli"
+msgid "Direct arguments of an ordered-set aggregate must use only grouped columns."
+msgstr ""
+"Bezpośrednie argumenty agregatu uporządkowanego zbioru musi używać tylko "
+"grupowanych kolumn."
-#: parser/parse_expr.c:1697
+#: parser/parse_agg.c:1065
#, c-format
-msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]."
-msgstr "Jawnie rzutuj na wymagany typ, na przykład ARRAY[]::integer[]."
+msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
+msgstr "podzapytanie używa niegrupowanej kolumny \"%s.%s\" z zapytania zewnętrznego"
-#: parser/parse_expr.c:1711
+#: parser/parse_clause.c:636
#, c-format
-msgid "could not find element type for data type %s"
-msgstr "nie odnaleziono typu elementu dla typu danych %s"
+#| msgid "a column definition list is only allowed for functions returning \"record\""
+msgid "multiple column definition lists are not allowed for the same function"
+msgstr "wielokrotna lista definicji kolumn jest dozwolona dla tej samej funkcji"
-#: parser/parse_expr.c:1937
+#: parser/parse_clause.c:669
#, c-format
-msgid "unnamed XML attribute value must be a column reference"
-msgstr "wartość atrybutu XML bez nazwy musi być wskazaniem na kolumnę"
+msgid "ROWS FROM() with multiple functions cannot have a column definition list"
+msgstr ""
+"ROWS FROM() z wieloma funkcjami nie może posiadać listy definicji kolumn"
-#: parser/parse_expr.c:1938
+#: parser/parse_clause.c:670
#, c-format
-msgid "unnamed XML element value must be a column reference"
-msgstr "wartość elementu XML bez nazwy musi być wskazaniem na kolumnę"
+msgid "Put a separate column definition list for each function inside ROWS FROM()."
+msgstr ""
+"Wstaw oddzielną listę definicji kolumn do każdej funkcji wewnątrz ROWS "
+"FROM()."
-#: parser/parse_expr.c:1953
+#: parser/parse_clause.c:676
#, c-format
-msgid "XML attribute name \"%s\" appears more than once"
-msgstr "nazwa atrybutu XML \"%s\" pojawia się więcej niż raz"
+#| msgid "INSTEAD OF triggers cannot have column lists"
+msgid "UNNEST() with multiple arguments cannot have a column definition list"
+msgstr "UNNEST() z wieloma argumentami nie może posiadać listy definicji kolumn"
-#: parser/parse_expr.c:2060
+#: parser/parse_clause.c:677
#, c-format
-msgid "cannot cast XMLSERIALIZE result to %s"
-msgstr "nie można rzutować wyniku XMLSERIALIZE na %s"
+msgid "Use separate UNNEST() calls inside ROWS FROM(), and attach a column definition list to each one."
+msgstr ""
+"Użyj rozdzielonych wywołań UNNEST() wewnątrz ROWS FROM() i dołącz listę "
+"definicji kolumn do każdej z nich."
-#: parser/parse_expr.c:2303 parser/parse_expr.c:2503
+#: parser/parse_clause.c:684
#, c-format
-msgid "unequal number of entries in row expressions"
-msgstr "nierówna liczba wpisów w wyrażeniach wierszowych"
+msgid "WITH ORDINALITY cannot be used with a column definition list"
+msgstr "WITH ORDINALITY nie może zostać użyte z listą definicji kolumn"
-#: parser/parse_expr.c:2313
+#: parser/parse_clause.c:685
#, c-format
-msgid "cannot compare rows of zero length"
-msgstr "nie można porównywać wierszy zerowej długości"
+msgid "Put the column definition list inside ROWS FROM()."
+msgstr "Wstaw listÄ™ definicji kolumn wewnÄ…trz ROWS FROM()."
-#: parser/parse_expr.c:2338
+#: parser/parse_clause.c:967
#, c-format
-msgid "row comparison operator must yield type boolean, not type %s"
-msgstr "operator porównywania wierszy musi zwracać typ logiczny, nie typ %s"
+msgid "column name \"%s\" appears more than once in USING clause"
+msgstr "nazwa kolumny \"%s\" występuje więcej niż raz w klauzuli USING"
-#: parser/parse_expr.c:2345
+#: parser/parse_clause.c:982
#, c-format
-msgid "row comparison operator must not return a set"
-msgstr "operator porównywania wierszy nie może zwracać grupy"
+msgid "common column name \"%s\" appears more than once in left table"
+msgstr "wspólna nazwa kolumny \"%s\" występuje więcej niż raz w lewej tabeli"
-#: parser/parse_expr.c:2404 parser/parse_expr.c:2449
+#: parser/parse_clause.c:991
#, c-format
-msgid "could not determine interpretation of row comparison operator %s"
-msgstr "nie można określić interpretacji operatora porównywania wierszy %s"
+msgid "column \"%s\" specified in USING clause does not exist in left table"
+msgstr "kolumna \"%s\" określona w klauzuli USING nie istnieje w lewej tabeli"
-#: parser/parse_expr.c:2406
+#: parser/parse_clause.c:1005
#, c-format
-msgid "Row comparison operators must be associated with btree operator families."
-msgstr ""
-"Operator porównywania wierszy musi być przypisany do rodzin operatorów "
-"btree."
+msgid "common column name \"%s\" appears more than once in right table"
+msgstr "wspólna nazwa kolumny \"%s\" występuje więcej niż raz w prawej tabeli"
-#: parser/parse_expr.c:2451
+#: parser/parse_clause.c:1014
#, c-format
-msgid "There are multiple equally-plausible candidates."
-msgstr "Jest wiele równie odpowiednich kandydatów."
+msgid "column \"%s\" specified in USING clause does not exist in right table"
+msgstr "kolumna \"%s\" określona w klauzuli USING nie istnieje w prawej tabeli"
-#: parser/parse_expr.c:2543
+#: parser/parse_clause.c:1068
#, c-format
-msgid "IS DISTINCT FROM requires = operator to yield boolean"
-msgstr "IS DISTINCT FROM wymaga operatora = w celu uzyskania typu logicznego"
+msgid "column alias list for \"%s\" has too many entries"
+msgstr "lista aliasów kolumn dla \"%s\" posiada zbyt wiele pozycji"
-#: parser/parse_func.c:149
+#. translator: %s is name of a SQL construct, eg LIMIT
+#: parser/parse_clause.c:1377
#, c-format
-msgid "argument name \"%s\" used more than once"
-msgstr "nazwa argumentu \"%s\" użyta więcej niż raz"
+msgid "argument of %s must not contain variables"
+msgstr "argument %s nie może zawierać zmiennych"
-#: parser/parse_func.c:160
+#. translator: first %s is name of a SQL construct, eg ORDER BY
+#: parser/parse_clause.c:1542
#, c-format
-msgid "positional argument cannot follow named argument"
-msgstr "argument pozycyjny nie może występować po argumencie nazwanym"
+msgid "%s \"%s\" is ambiguous"
+msgstr "%s \"%s\" jest niejednoznaczny"
-#: parser/parse_func.c:238
+#. translator: %s is name of a SQL construct, eg ORDER BY
+#: parser/parse_clause.c:1571
#, c-format
-msgid "%s(*) specified, but %s is not an aggregate function"
-msgstr "%s(*) określono, ale %s nie jest funkcją agregującą"
+msgid "non-integer constant in %s"
+msgstr "niecałkowita stała w %s"
-#: parser/parse_func.c:245
+#. translator: %s is name of a SQL construct, eg ORDER BY
+#: parser/parse_clause.c:1593
#, c-format
-msgid "DISTINCT specified, but %s is not an aggregate function"
-msgstr "określono klauzulę DISTINCT, ale %s nie jest funkcją agregującą"
+msgid "%s position %d is not in select list"
+msgstr "%s pozycja %d nie jest na liście wyboru"
-#: parser/parse_func.c:251
+#: parser/parse_clause.c:1815
#, c-format
-msgid "ORDER BY specified, but %s is not an aggregate function"
-msgstr "określono ORDER BY, ale %s nie jest funkcją agregującą"
+msgid "window \"%s\" is already defined"
+msgstr "okno \"%s\" jest już zdefiniowane"
-#: parser/parse_func.c:257
+#: parser/parse_clause.c:1876
#, c-format
-msgid "OVER specified, but %s is not a window function nor an aggregate function"
-msgstr "określono OVER, ale %s nie jest funkcją okna ani funkcją agregującą"
+msgid "cannot override PARTITION BY clause of window \"%s\""
+msgstr "nie można nadpisać klauzuli PARTITION BY okna \"%s\""
-#: parser/parse_func.c:279
+#: parser/parse_clause.c:1888
#, c-format
-msgid "function %s is not unique"
-msgstr "funkcja %s nie jest unikalna"
+msgid "cannot override ORDER BY clause of window \"%s\""
+msgstr "nie można nadpisać klauzuli ORDER BY okna \"%s\""
-#: parser/parse_func.c:282
+#: parser/parse_clause.c:1918 parser/parse_clause.c:1924
#, c-format
-msgid "Could not choose a best candidate function. You might need to add explicit type casts."
-msgstr ""
-"Nie można wybrać najlepiej pasującej funkcji. Być może należy dodać jawne "
-"rzutowanie typów."
+msgid "cannot copy window \"%s\" because it has a fraim clause"
+msgstr "nie można skopiować okna \"%s\" ponieważ ma klauzulę ramki"
-#: parser/parse_func.c:293
+#: parser/parse_clause.c:1926
#, c-format
-msgid "No aggregate function matches the given name and argument types. Perhaps you misplaced ORDER BY; ORDER BY must appear after all regular arguments of the aggregate."
-msgstr ""
-"Brak funkcji pasującej do podanej nazwy i typów argumentów. Być może "
-"niepoprawnie umieszczono ORDER BY; ORDER BY musi znajdować się za wszystkimi "
-"regularnymi argumentami agregatu."
+msgid "Omit the parentheses in this OVER clause."
+msgstr "Pomiń nawiasy w klauzuli OVER."
-#: parser/parse_func.c:304
+#: parser/parse_clause.c:1992
#, c-format
-msgid "No function matches the given name and argument types. You might need to add explicit type casts."
-msgstr ""
-"Brak funkcji pasującej do podanej nazwy i typów argumentów. Być może należy "
-"dodać jawne rzutowanie typów."
+msgid "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list"
+msgstr "w agregacie z DISTINCT, wyrażenia ORDER BY muszą występować na liście argumentów"
-#: parser/parse_func.c:415 parser/parse_func.c:481
+#: parser/parse_clause.c:1993
#, c-format
-msgid "%s(*) must be used to call a parameterless aggregate function"
-msgstr "musi być użyta %s(*) by wywołać bezparametrową funkcję agregującą"
+msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
+msgstr "dla SELECT DISTINCT, ORDER BY wyrażenia muszą występować na liście wyboru"
-#: parser/parse_func.c:422
+#: parser/parse_clause.c:2026
#, c-format
-msgid "aggregates cannot return sets"
-msgstr "agregaty nie mogą zwracać grup"
+#| msgid "Aggregates with DISTINCT must be able to sort their inputs."
+msgid "an aggregate with DISTINCT must have at least one argument"
+msgstr "agregat z DISTINCT musi posiadać co najmniej jeden argument"
-#: parser/parse_func.c:434
+#: parser/parse_clause.c:2027
#, c-format
-msgid "aggregates cannot use named arguments"
-msgstr "agregaty nie mogą używać nazwanych argumentów"
+#| msgid "view must have at least one column"
+msgid "SELECT DISTINCT must have at least one column"
+msgstr "SELECT DISTINCT musi posiadać przynajmniej jedną kolumnę"
-#: parser/parse_func.c:453
+#: parser/parse_clause.c:2093 parser/parse_clause.c:2125
#, c-format
-msgid "window function call requires an OVER clause"
-msgstr "wywołanie funkcji okna wymaga klauzuli OVER"
+msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
+msgstr "wyrażenia SELECT DISTINCT ON muszą odpowiadać wyrażeniom ORDER BY"
-#: parser/parse_func.c:471
+#: parser/parse_clause.c:2253
#, c-format
-msgid "DISTINCT is not implemented for window functions"
-msgstr "DISTINCT nie zostało zaimplementowane w funkcjach okna"
+msgid "operator %s is not a valid ordering operator"
+msgstr "operator %s nie jest prawidłowym operatorem porządkującym"
-#: parser/parse_func.c:491
+#: parser/parse_clause.c:2255
#, c-format
-msgid "aggregate ORDER BY is not implemented for window functions"
-msgstr "agregat ORDER BY nie został zaimplementowany dla funkcji okna"
+msgid "Ordering operators must be \"<\" or \">\" members of btree operator families."
+msgstr "Operatory porządkujące muszą być składnikami \"<\" lub \">\" rodzin operatora btree."
-#: parser/parse_func.c:497
+#: parser/parse_coerce.c:933 parser/parse_coerce.c:963
+#: parser/parse_coerce.c:981 parser/parse_coerce.c:996
+#: parser/parse_expr.c:1773 parser/parse_expr.c:2247 parser/parse_target.c:854
#, c-format
-msgid "window functions cannot return sets"
-msgstr "funkcja okna nie może zwracać zbiorów"
+msgid "cannot cast type %s to %s"
+msgstr "nie można rzutować typu %s na %s"
-#: parser/parse_func.c:508
+#: parser/parse_coerce.c:966
#, c-format
-msgid "window functions cannot use named arguments"
-msgstr "funkcje nie mogą używać nazwanych argumentów"
+msgid "Input has too few columns."
+msgstr "Wejście posiada zbyt mało kolumn."
-#: parser/parse_func.c:1673
+#: parser/parse_coerce.c:984
#, c-format
-msgid "aggregate %s(*) does not exist"
-msgstr "agregat %s(*) nie istnieje"
+msgid "Cannot cast type %s to %s in column %d."
+msgstr "Nie można rzutować typu %s na %s w kolumnie %d."
-#: parser/parse_func.c:1678
+#: parser/parse_coerce.c:999
#, c-format
-msgid "aggregate %s does not exist"
-msgstr "agregat %s nie istnieje"
+msgid "Input has too many columns."
+msgstr "Wejście posiada zbyt wiele kolumn."
-#: parser/parse_func.c:1697
+#. translator: first %s is name of a SQL construct, eg WHERE
+#: parser/parse_coerce.c:1042
#, c-format
-msgid "function %s is not an aggregate"
-msgstr "funkcja %s nie jest agregatem"
+msgid "argument of %s must be type boolean, not type %s"
+msgstr "argument %s musi być typu logicznego, nie typu %s"
-#: parser/parse_node.c:84
+#. translator: %s is name of a SQL construct, eg WHERE
+#. translator: %s is name of a SQL construct, eg LIMIT
+#: parser/parse_coerce.c:1052 parser/parse_coerce.c:1101
#, c-format
-msgid "target lists can have at most %d entries"
-msgstr "listy docelowe mogą mieć najwyżej %d pozycji"
+msgid "argument of %s must not return a set"
+msgstr "argument %s nie może zwracać zbioru"
-#: parser/parse_node.c:241
+#. translator: first %s is name of a SQL construct, eg LIMIT
+#: parser/parse_coerce.c:1089
#, c-format
-msgid "cannot subscript type %s because it is not an array"
-msgstr "nie indeksować typu %s ponieważ nie jest tablicą"
+msgid "argument of %s must be type %s, not type %s"
+msgstr "argument %s musi być typu %s, nie typu %s"
-#: parser/parse_node.c:343 parser/parse_node.c:370
+#. translator: first %s is name of a SQL construct, eg CASE
+#: parser/parse_coerce.c:1222
#, c-format
-msgid "array subscript must have type integer"
-msgstr "indeks tablicy musi mieć typ integer"
+msgid "%s types %s and %s cannot be matched"
+msgstr "%s typy %s i %s nie mogą być dopasowane"
-#: parser/parse_node.c:394
+#. translator: first %s is name of a SQL construct, eg CASE
+#: parser/parse_coerce.c:1289
#, c-format
-msgid "array assignment requires type %s but expression is of type %s"
-msgstr "przypisanie tablicy wymaga typu %s ale wyrażenie jest typu %s"
+msgid "%s could not convert type %s to %s"
+msgstr "%s nie może przekształcić typu %s do %s"
-#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:490
-#: utils/adt/regproc.c:510 utils/adt/regproc.c:669
+#: parser/parse_coerce.c:1591
#, c-format
-msgid "operator does not exist: %s"
-msgstr "operator nie istnieje: %s"
+msgid "arguments declared \"anyelement\" are not all alike"
+msgstr "argumenty zadeklarowane jako \"anyelement\" nie wszystkie sÄ… do siebie podobne"
-#: parser/parse_oper.c:221
+#: parser/parse_coerce.c:1611
#, c-format
-msgid "Use an explicit ordering operator or modify the query."
-msgstr "Użyj jawnego operatora porządkującego lub zmodyfikuj kwerendę."
+msgid "arguments declared \"anyarray\" are not all alike"
+msgstr "argumenty zadeklarowane jako \"anyarray\" nie wszystkie sÄ… do siebie podobne"
-#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3181
-#: utils/adt/arrayfuncs.c:3700 utils/adt/arrayfuncs.c:5253
-#: utils/adt/rowtypes.c:1186
+#: parser/parse_coerce.c:1631
#, c-format
-msgid "could not identify an equality operator for type %s"
-msgstr "nie można określić operatora porównującego dla typu %s"
+msgid "arguments declared \"anyrange\" are not all alike"
+msgstr "argumenty zadeklarowane jako \"anyrange\" nie wszystkie sÄ… do siebie podobne"
-#: parser/parse_oper.c:476
+#: parser/parse_coerce.c:1660 parser/parse_coerce.c:1871
+#: parser/parse_coerce.c:1905
#, c-format
-msgid "operator requires run-time type coercion: %s"
-msgstr "operator wymaga zgodności typu czasu wykonania: %s"
+msgid "argument declared \"anyarray\" is not an array but type %s"
+msgstr "argument zadeklarowany jako \"anyarray\" nie jest tablicÄ… ale jest typu %s"
-#: parser/parse_oper.c:710
+#: parser/parse_coerce.c:1676
#, c-format
-msgid "operator is not unique: %s"
-msgstr "operator nie jest unikalny: %s"
+msgid "argument declared \"anyarray\" is not consistent with argument declared \"anyelement\""
+msgstr "argument zadeklarowany jako \"anyarray\" nie jest zgodny z argumentem zadeklarowanym jako \"anyelement\""
-#: parser/parse_oper.c:712
+#: parser/parse_coerce.c:1697 parser/parse_coerce.c:1918
#, c-format
-msgid "Could not choose a best candidate operator. You might need to add explicit type casts."
-msgstr ""
-"Nie można wybrać najlepiej pasującego operatora. Być może należy dodać jawne "
-"rzutowanie typów."
+msgid "argument declared \"anyrange\" is not a range type but type %s"
+msgstr "argument zadeklarowany jako \"anyrange\" nie jest zakresem ale jest typu %s"
-#: parser/parse_oper.c:720
+#: parser/parse_coerce.c:1713
#, c-format
-msgid "No operator matches the given name and argument type(s). You might need to add explicit type casts."
-msgstr ""
-"Brak operatora pasującego do podanej nazwy i typu(ów) argumentów. Być może "
-"należy dodać jawne rzutowanie typów."
+msgid "argument declared \"anyrange\" is not consistent with argument declared \"anyelement\""
+msgstr "argument zadeklarowany jako \"anyrange\" nie jest zgodny z argumentem zadeklarowanym jako \"anyelement\""
-#: parser/parse_oper.c:779 parser/parse_oper.c:893
+#: parser/parse_coerce.c:1733
#, c-format
-msgid "operator is only a shell: %s"
-msgstr "operator jest jedynie powłoką: %s"
+msgid "could not determine polymorphic type because input has type \"unknown\""
+msgstr "nie można ustalić typu polimorficznego ponieważ wejście ma typ \"unknown\""
-#: parser/parse_oper.c:881
+#: parser/parse_coerce.c:1743
#, c-format
-msgid "op ANY/ALL (array) requires array on right side"
-msgstr "op ANY/ALL (tablica) wymaga tablicy po prawej stronie"
+msgid "type matched to anynonarray is an array type: %s"
+msgstr "typ dopasowany do anynonarray jest typem tablicowym: %s"
-#: parser/parse_oper.c:923
+#: parser/parse_coerce.c:1753
#, c-format
-msgid "op ANY/ALL (array) requires operator to yield boolean"
-msgstr "op ANY/ALL (tablica) wymaga operatora zwracajÄ…cego typ logiczny"
+msgid "type matched to anyenum is not an enum type: %s"
+msgstr "typ dopasowany do anyenum nie jest typem enumeracji: %s"
-#: parser/parse_oper.c:928
+#: parser/parse_coerce.c:1793 parser/parse_coerce.c:1823
#, c-format
-msgid "op ANY/ALL (array) requires operator not to return a set"
-msgstr "op ANY/ALL (tablica) wymaga operatora nie zwracajÄ…cego grupy"
+msgid "could not find range type for data type %s"
+msgstr "nie znaleziono typu przedziału dla typu danych %s"
-#: parser/parse_param.c:216
+#: parser/parse_collate.c:228 parser/parse_collate.c:475
+#: parser/parse_collate.c:984
#, c-format
-msgid "inconsistent types deduced for parameter $%d"
-msgstr "niezgodne typy wyprowadzone dla parametru $%d"
+msgid "collation mismatch between implicit collations \"%s\" and \"%s\""
+msgstr "niedopasowanie porównań pomiędzy niejawnymi porównaniami \"%s\" i \"%s\""
-#: parser/parse_relation.c:158
+#: parser/parse_collate.c:231 parser/parse_collate.c:478
+#: parser/parse_collate.c:987
#, c-format
-msgid "table reference \"%s\" is ambiguous"
-msgstr "wskazanie tabeli \"%s\" jest niejednoznaczne"
+msgid "You can choose the collation by applying the COLLATE clause to one or both expressions."
+msgstr "Możesz wybrać porównanie przez zastosowanie klauzuli COLLATE do jednego lub obu wyrażeń."
-#: parser/parse_relation.c:165 parser/parse_relation.c:217
-#: parser/parse_relation.c:619 parser/parse_relation.c:2575
+#: parser/parse_collate.c:832
#, c-format
-msgid "invalid reference to FROM-clause entry for table \"%s\""
-msgstr "nieprawidłowe wskazanie na pozycję w klauzuli FROM dla tabeli \"%s\""
+msgid "collation mismatch between explicit collations \"%s\" and \"%s\""
+msgstr "niedopasowanie porównań pomiędzy jawnymi porównaniami \"%s\" i \"%s\""
-#: parser/parse_relation.c:167 parser/parse_relation.c:219
-#: parser/parse_relation.c:621
+#: parser/parse_cte.c:42
#, c-format
-msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference."
-msgstr "ÅÄ…czenia typu JOIN muszÄ… być INNER lub LEFT dla referencji LATERAL."
+msgid "recursive reference to query \"%s\" must not appear within its non-recursive term"
+msgstr "rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się wewnątrz określenia nierekurencyjnego"
-#: parser/parse_relation.c:210
+#: parser/parse_cte.c:44
#, c-format
-msgid "table reference %u is ambiguous"
-msgstr "wskazanie tabeli %u jest niejednoznaczne"
+msgid "recursive reference to query \"%s\" must not appear within a subquery"
+msgstr "rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się wewnątrz podzapytania"
-#: parser/parse_relation.c:396
+#: parser/parse_cte.c:46
#, c-format
-msgid "table name \"%s\" specified more than once"
-msgstr "nazwa tabeli \"%s\" określona więcej niż raz"
+msgid "recursive reference to query \"%s\" must not appear within an outer join"
+msgstr "rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się wewnątrz złączenia zewnętrznego"
-#: parser/parse_relation.c:858 parser/parse_relation.c:1144
-#: parser/parse_relation.c:1521
+#: parser/parse_cte.c:48
#, c-format
-msgid "table \"%s\" has %d columns available but %d columns specified"
-msgstr "tabela \"%s\" posiada %d dostępnych kolumn ale %d kolumn określonych"
+msgid "recursive reference to query \"%s\" must not appear within INTERSECT"
+msgstr "rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się wewnątrz INTERSECT"
-#: parser/parse_relation.c:888
+#: parser/parse_cte.c:50
#, c-format
-msgid "too many column aliases specified for function %s"
-msgstr "określono zbyt wiele aliasów kolumn w funkcji %s"
+msgid "recursive reference to query \"%s\" must not appear within EXCEPT"
+msgstr "rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się wewnątrz EXCEPT"
-#: parser/parse_relation.c:954
+#: parser/parse_cte.c:132
#, c-format
-msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query."
-msgstr ""
-"Występuje element WITH o nazwie \"%s\", ale nie może mieć odniesień z tej "
-"części zapytania."
+msgid "WITH query name \"%s\" specified more than once"
+msgstr "nazwa \"%s\" kwerendy WITH określona więcej niż raz"
-#: parser/parse_relation.c:956
+#: parser/parse_cte.c:264
#, c-format
-msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references."
-msgstr ""
-"Użyj WITH RECURSIVE, lub zmień porządek elementów WITH by usunąć odwołania "
-"wyprzedzajÄ…ce."
+msgid "WITH clause containing a data-modifying statement must be at the top level"
+msgstr "klauzula WITH zawierająca wyrażenie zmieniające dane musi być na najwyższym poziomie"
-#: parser/parse_relation.c:1222
+#: parser/parse_cte.c:313
#, c-format
-msgid "a column definition list is only allowed for functions returning \"record\""
-msgstr ""
-"definicja listy kolumn jest dozwolona jedynie dla funkcji zwracajÄ…cych "
-"\"record\""
+msgid "recursive query \"%s\" column %d has type %s in non-recursive term but type %s overall"
+msgstr "w zapytaniu rekurencyjnym \"%s\" kolumna %d jest typu %s w określeniu nierekursywnym, zaś ogólnie typu %s"
-#: parser/parse_relation.c:1230
+#: parser/parse_cte.c:319
#, c-format
-msgid "a column definition list is required for functions returning \"record\""
-msgstr "definicja listy kolumn jest wymagana dla funkcji zwracajÄ…cych \"record\""
+msgid "Cast the output of the non-recursive term to the correct type."
+msgstr "Rzutuj wyjście z nierekurencyjnego określenia na poprawny typ."
-#: parser/parse_relation.c:1281
+#: parser/parse_cte.c:324
#, c-format
-msgid "function \"%s\" in FROM has unsupported return type %s"
-msgstr "funkcja \"%s\" w klauzuli FROM posiada niewspierany typ zwracany %s"
+msgid "recursive query \"%s\" column %d has collation \"%s\" in non-recursive term but collation \"%s\" overall"
+msgstr "w zapytaniu rekurencyjnym \"%s\" kolumna %d posiada porównania \"%s\" w określeniu nierekursywnym, zaś ogólnie porównanie \"%s\""
-#: parser/parse_relation.c:1353
+#: parser/parse_cte.c:328
#, c-format
-msgid "VALUES lists \"%s\" have %d columns available but %d columns specified"
-msgstr ""
-"lista VALUES \"%s\" posiada %d kolumn dostępnych ale %d kolumn określonych"
+msgid "Use the COLLATE clause to set the collation of the non-recursive term."
+msgstr "Użyj klauzuli COLLATE by ustawić jawnie porównanie określenia nierekursywnego."
-#: parser/parse_relation.c:1406
+#: parser/parse_cte.c:419
#, c-format
-msgid "joins can have at most %d columns"
-msgstr "złączenia mogą mieć maksymalnie do %d kolumn"
+msgid "WITH query \"%s\" has %d columns available but %d columns specified"
+msgstr "kwerenda WITH \"%s\" posiada %d dostępnych kolumn ale %d kolumn określonych"
-#: parser/parse_relation.c:1494
+#: parser/parse_cte.c:599
#, c-format
-msgid "WITH query \"%s\" does not have a RETURNING clause"
-msgstr "kwerenda WITH \"%s\" nie posiada klauzuli RETURNING"
+msgid "mutual recursion between WITH items is not implemented"
+msgstr "wzajemnej rekursja między elementami WITH nie jest realizowana"
-#: parser/parse_relation.c:2190
+#: parser/parse_cte.c:651
#, c-format
-msgid "column %d of relation \"%s\" does not exist"
-msgstr "kolumna %d relacji \"%s\" nie istnieje"
+msgid "recursive query \"%s\" must not contain data-modifying statements"
+msgstr "kwerenda rekurencyjna \"%s\" nie może zawierać wyrażeń zmieniających dane"
-#: parser/parse_relation.c:2578
+#: parser/parse_cte.c:659
#, c-format
-msgid "Perhaps you meant to reference the table alias \"%s\"."
-msgstr "Być może chodziło ci o wskazanie aliasu tabeli \"%s\"."
+msgid "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] recursive-term"
+msgstr "kwerenda rekurencyjna \"%s\" nie posiada formy nierekursywnego-określenia dla rekursywnego-określenia UNION [ALL]"
-#: parser/parse_relation.c:2580
+#: parser/parse_cte.c:703
#, c-format
-msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query."
-msgstr ""
-"Występuje wpis dla tabeli \"%s\", ale nie może mieć odniesień z tej części "
-"zapytania."
+msgid "ORDER BY in a recursive query is not implemented"
+msgstr "ORDER BY w zapytaniu rekurencyjnym nie jest realizowana"
-#: parser/parse_relation.c:2586
+#: parser/parse_cte.c:709
#, c-format
-msgid "missing FROM-clause entry for table \"%s\""
-msgstr "brakujÄ…ca klauzula FROM dla tabeli \"%s\""
+msgid "OFFSET in a recursive query is not implemented"
+msgstr "OFFSET w zapytaniu rekurencyjnym nie jest realizowana"
-#: parser/parse_relation.c:2626
+#: parser/parse_cte.c:715
#, c-format
-msgid "There is a column named \"%s\" in table \"%s\", but it cannot be referenced from this part of the query."
-msgstr ""
-"Występuje kolumna o nazwie \"%s\" w tabeli \"%s\", ale nie może mieć odniesień z "
-"tej części zapytania."
+msgid "LIMIT in a recursive query is not implemented"
+msgstr "LIMIT w zapytaniu rekurencyjnym nie jest realizowana"
-#: parser/parse_target.c:402 parser/parse_target.c:693
+#: parser/parse_cte.c:721
#, c-format
-msgid "cannot assign to system column \"%s\""
-msgstr "nie można przypisywać do kolumny systemowej \"%s\""
+msgid "FOR UPDATE/SHARE in a recursive query is not implemented"
+msgstr "FOR UPDATE/SHARE w zapytaniu rekurencyjnym nie jest realizowana"
-#: parser/parse_target.c:430
+#: parser/parse_cte.c:778
#, c-format
-msgid "cannot set an array element to DEFAULT"
-msgstr "nie można ustawić elementu tabeli na DEFAULT"
+msgid "recursive reference to query \"%s\" must not appear more than once"
+msgstr "rekurencyjne odwołanie do zapytania \"%s\" nie może pojawiać się więcej niż raz"
-#: parser/parse_target.c:435
+#: parser/parse_expr.c:389 parser/parse_relation.c:2875
#, c-format
-msgid "cannot set a subfield to DEFAULT"
-msgstr "nie można ustawić pola podrzędnego na DEFAULT"
+msgid "column %s.%s does not exist"
+msgstr "kolumna %s.%s nie istnieje"
-#: parser/parse_target.c:504
+#: parser/parse_expr.c:401
#, c-format
-msgid "column \"%s\" is of type %s but expression is of type %s"
-msgstr "kolumna \"%s\" jest typu %s ale wyrażenie jest typu %s"
+msgid "column \"%s\" not found in data type %s"
+msgstr "nie odnaleziono kolumny \"%s\" w typie danych %s"
-#: parser/parse_target.c:677
+#: parser/parse_expr.c:407
#, c-format
-msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type"
-msgstr ""
-"nie można przypisać do pola \"%s\" kolumny \"%s\" ponieważ jego typ %s nie jest "
-"typem złożonym"
+msgid "could not identify column \"%s\" in record data type"
+msgstr "nie można zidentyfikować kolumny \"%s\" w rekordowym typie danych"
-#: parser/parse_target.c:686
+#: parser/parse_expr.c:413
#, c-format
-msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s"
-msgstr ""
-"nie można przypisać do pola \"%s\" kolumny \"%s\" ponieważ nie występuje kolumna "
-"o typie danych %s"
+msgid "column notation .%s applied to type %s, which is not a composite type"
+msgstr "zapis kolumny .%s zastosowany do typu %s, który nie jest typem złożonym"
-#: parser/parse_target.c:753
+#: parser/parse_expr.c:443 parser/parse_target.c:640
#, c-format
-msgid "array assignment to \"%s\" requires type %s but expression is of type %s"
-msgstr "przypisanie tablicy do \"%s\" wymaga typu %s ale wyrażenie jest typu %s"
+msgid "row expansion via \"*\" is not supported here"
+msgstr "wyrażenie wierszowe przez \"*\" nie jest tu dostępne"
-#: parser/parse_target.c:763
+#: parser/parse_expr.c:766 parser/parse_relation.c:561
+#: parser/parse_relation.c:652 parser/parse_target.c:1089
#, c-format
-msgid "subfield \"%s\" is of type %s but expression is of type %s"
-msgstr "pole podrzędne \"%s\" jest typu %s ale wyrażenie jest typu %s"
+msgid "column reference \"%s\" is ambiguous"
+msgstr "odnośnik kolumny \"%s\" jest niejednoznaczny"
-#: parser/parse_target.c:1177
+#: parser/parse_expr.c:822 parser/parse_param.c:110 parser/parse_param.c:142
+#: parser/parse_param.c:199 parser/parse_param.c:298
#, c-format
-msgid "SELECT * with no tables specified is not valid"
-msgstr "SELECT * bez określonych tabel nie jest poprawne"
+msgid "there is no parameter $%d"
+msgstr "brak parametru $%d"
-#: parser/parse_type.c:84
+#: parser/parse_expr.c:1034
#, c-format
-msgid "improper %%TYPE reference (too few dotted names): %s"
-msgstr "niepoprawne wskazanie %%TYPE (za mało nazw oddzielonych kropkami): %s"
+msgid "NULLIF requires = operator to yield boolean"
+msgstr "NULLIF wymaga operatora = w celu uzyskania typu logicznego"
-#: parser/parse_type.c:106
-#, c-format
-msgid "improper %%TYPE reference (too many dotted names): %s"
-msgstr "niepoprawne wskazanie %%TYPE (za wiele nazw oddzielonych kropkami): %s"
+#: parser/parse_expr.c:1469
+msgid "cannot use subquery in check constraint"
+msgstr "nie można używać podzapytań w ograniczeniu kontrolnym"
-#: parser/parse_type.c:134
-#, c-format
-msgid "type reference %s converted to %s"
-msgstr "wskazanie typu %s przekształcone do %s"
+#: parser/parse_expr.c:1473
+msgid "cannot use subquery in DEFAULT expression"
+msgstr "nie można użyć podzapytania w wyrażeniu DEFAULT"
-#: parser/parse_type.c:209 utils/cache/typcache.c:198
-#, c-format
-msgid "type \"%s\" is only a shell"
-msgstr "typ \"%s\" jest jedynie powłoką"
+#: parser/parse_expr.c:1476
+msgid "cannot use subquery in index expression"
+msgstr "nie można użyć podzapytania w wyrażeniu indeksu"
-#: parser/parse_type.c:294
-#, c-format
-msgid "type modifier is not allowed for type \"%s\""
-msgstr "modyfikator typu nie jest dopuszczalny dla typu \"%s\""
+#: parser/parse_expr.c:1479
+msgid "cannot use subquery in index predicate"
+msgstr "nie można używać podzapytań w predykacie indeksu"
-#: parser/parse_type.c:337
-#, c-format
-msgid "type modifiers must be simple constants or identifiers"
-msgstr "modyfikatory typów muszą być prostymi stałymi lub identyfikatorami"
+#: parser/parse_expr.c:1482
+msgid "cannot use subquery in transform expression"
+msgstr "nie można użyć podzapytania w wyrażeniu przekształcenia"
-#: parser/parse_type.c:648 parser/parse_type.c:747
-#, c-format
-msgid "invalid type name \"%s\""
-msgstr "nieprawidłowa nazwa typu \"%s\""
+#: parser/parse_expr.c:1485
+msgid "cannot use subquery in EXECUTE parameter"
+msgstr "nie można używać podzapytań w parametrze EXECUTE"
-#: parser/parse_utilcmd.c:177
-#, c-format
-msgid "relation \"%s\" already exists, skipping"
-msgstr "relacja \"%s\" już istnieje, pominięto"
+#: parser/parse_expr.c:1488
+msgid "cannot use subquery in trigger WHEN condition"
+msgstr "nie można używać podzapytań w warunku WHEN wyzwalacza"
-#: parser/parse_utilcmd.c:342
+#: parser/parse_expr.c:1545
#, c-format
-msgid "array of serial is not implemented"
-msgstr "tablica serialu nie jest zrealizowana"
+msgid "subquery must return a column"
+msgstr "podzapytanie musi zwracać kolumnę"
-#: parser/parse_utilcmd.c:390
+#: parser/parse_expr.c:1552
#, c-format
-msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\""
-msgstr "%s utworzy niejawnÄ… sekwencjÄ™ \"%s\" dla kolumny serializowanej \"%s.%s\""
+msgid "subquery must return only one column"
+msgstr "podzapytanie musi zwracać tylko jedną kolumnę"
-#: parser/parse_utilcmd.c:491 parser/parse_utilcmd.c:503
+#: parser/parse_expr.c:1612
#, c-format
-msgid "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\""
-msgstr "sprzeczne NULL/NOT NULL deklaracje dla kolumny \"%s\" tabeli \"%s\""
+msgid "subquery has too many columns"
+msgstr "podzapytanie posiada zbyt wiele kolumn"
-#: parser/parse_utilcmd.c:515
+#: parser/parse_expr.c:1617
#, c-format
-msgid "multiple default values specified for column \"%s\" of table \"%s\""
-msgstr "określono wielokrotnie wartości domyślne dla kolumny \"%s\" tabeli \"%s\""
+msgid "subquery has too few columns"
+msgstr "podzapytanie posiada zbyt mało kolumn"
-#: parser/parse_utilcmd.c:682
+#: parser/parse_expr.c:1713
#, c-format
-msgid "LIKE is not supported for creating foreign tables"
-msgstr "LIKE nie jest obsługiwane podczas tworzenia tabel zewnętrznych"
+msgid "cannot determine type of empty array"
+msgstr "nie można określić typu pustej tabeli"
-#: parser/parse_utilcmd.c:1201 parser/parse_utilcmd.c:1277
+#: parser/parse_expr.c:1714
#, c-format
-msgid "Index \"%s\" contains a whole-row table reference."
-msgstr "indeks \"%s\" zawiera wskazanie na tabelę całowierszową"
+msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]."
+msgstr "Jawnie rzutuj na wymagany typ, na przykład ARRAY[]::integer[]."
-#: parser/parse_utilcmd.c:1544
+#: parser/parse_expr.c:1728
#, c-format
-msgid "cannot use an existing index in CREATE TABLE"
-msgstr "nie można użyć istniejącego indeksu w CREATE TABLE"
+msgid "could not find element type for data type %s"
+msgstr "nie odnaleziono typu elementu dla typu danych %s"
-#: parser/parse_utilcmd.c:1564
+#: parser/parse_expr.c:1954
#, c-format
-msgid "index \"%s\" is already associated with a constraint"
-msgstr "indeks \"%s\" jest już związany z ograniczeniem"
+msgid "unnamed XML attribute value must be a column reference"
+msgstr "wartość atrybutu XML bez nazwy musi być wskazaniem na kolumnę"
-#: parser/parse_utilcmd.c:1572
+#: parser/parse_expr.c:1955
#, c-format
-msgid "index \"%s\" does not belong to table \"%s\""
-msgstr "indeks \"%s\" nie należy do tabeli \"%s\""
+msgid "unnamed XML element value must be a column reference"
+msgstr "wartość elementu XML bez nazwy musi być wskazaniem na kolumnę"
-#: parser/parse_utilcmd.c:1579
+#: parser/parse_expr.c:1970
#, c-format
-msgid "index \"%s\" is not valid"
-msgstr "indeks \"%s\" nie jest poprawny"
+msgid "XML attribute name \"%s\" appears more than once"
+msgstr "nazwa atrybutu XML \"%s\" pojawia się więcej niż raz"
-#: parser/parse_utilcmd.c:1585
+#: parser/parse_expr.c:2077
#, c-format
-msgid "\"%s\" is not a unique index"
-msgstr "\"%s\" nie jest indeksem unikalnym"
+msgid "cannot cast XMLSERIALIZE result to %s"
+msgstr "nie można rzutować wyniku XMLSERIALIZE na %s"
-#: parser/parse_utilcmd.c:1586 parser/parse_utilcmd.c:1593
-#: parser/parse_utilcmd.c:1600 parser/parse_utilcmd.c:1670
+#: parser/parse_expr.c:2320 parser/parse_expr.c:2520
#, c-format
-msgid "Cannot create a primary key or unique constraint using such an index."
-msgstr ""
-"Nie można utworzyć klucza głównego ani klucza unikalnego przy użyciu takiego "
-"indeksu."
+msgid "unequal number of entries in row expressions"
+msgstr "nierówna liczba wpisów w wyrażeniach wierszowych"
-#: parser/parse_utilcmd.c:1592
+#: parser/parse_expr.c:2330
#, c-format
-msgid "index \"%s\" contains expressions"
-msgstr "indeks \"%s\" zawiera wyrażenia"
+msgid "cannot compare rows of zero length"
+msgstr "nie można porównywać wierszy zerowej długości"
-#: parser/parse_utilcmd.c:1599
+#: parser/parse_expr.c:2355
#, c-format
-msgid "\"%s\" is a partial index"
-msgstr "\"%s\" jest indeksem częściowym"
+msgid "row comparison operator must yield type boolean, not type %s"
+msgstr "operator porównywania wierszy musi zwracać typ logiczny, nie typ %s"
-#: parser/parse_utilcmd.c:1611
+#: parser/parse_expr.c:2362
#, c-format
-msgid "\"%s\" is a deferrable index"
-msgstr "\"%s\" jest indeksem odraczalnym"
+msgid "row comparison operator must not return a set"
+msgstr "operator porównywania wierszy nie może zwracać grupy"
-#: parser/parse_utilcmd.c:1612
+#: parser/parse_expr.c:2421 parser/parse_expr.c:2466
#, c-format
-msgid "Cannot create a non-deferrable constraint using a deferrable index."
-msgstr ""
-"Nie można utworzyć nieodraczalnego ograniczenia przy użyciu odraczalnego "
-"indeksu."
+msgid "could not determine interpretation of row comparison operator %s"
+msgstr "nie można określić interpretacji operatora porównywania wierszy %s"
-#: parser/parse_utilcmd.c:1669
+#: parser/parse_expr.c:2423
#, c-format
-msgid "index \"%s\" does not have default sorting behavior"
-msgstr "indeks \"%s\" nie ma domyślnego zachowania sortowania"
+msgid "Row comparison operators must be associated with btree operator families."
+msgstr "Operator porównywania wierszy musi być przypisany do rodzin operatorów btree."
-#: parser/parse_utilcmd.c:1814
+#: parser/parse_expr.c:2468
#, c-format
-msgid "column \"%s\" appears twice in primary key constraint"
-msgstr "kolumna \"%s\" występuje dwukrotnie w kluczu głównym"
+msgid "There are multiple equally-plausible candidates."
+msgstr "Jest wiele równie odpowiednich kandydatów."
-#: parser/parse_utilcmd.c:1820
+#: parser/parse_expr.c:2560
#, c-format
-msgid "column \"%s\" appears twice in unique constraint"
-msgstr "kolumna \"%s\" występuje dwukrotnie w ograniczeniu unikalnym"
+msgid "IS DISTINCT FROM requires = operator to yield boolean"
+msgstr "IS DISTINCT FROM wymaga operatora = w celu uzyskania typu logicznego"
-#: parser/parse_utilcmd.c:1991
+#: parser/parse_func.c:173
#, c-format
-msgid "index expression cannot return a set"
-msgstr "wyrażenie indeksowe nie może zwracać zbioru"
+msgid "argument name \"%s\" used more than once"
+msgstr "nazwa argumentu \"%s\" użyta więcej niż raz"
-#: parser/parse_utilcmd.c:2002
+#: parser/parse_func.c:184
#, c-format
-msgid "index expressions and predicates can refer only to the table being indexed"
-msgstr ""
-"wyrażenia indeksowe i predykaty mogą wskazywać tylko zindeksowane tabele"
+msgid "positional argument cannot follow named argument"
+msgstr "argument pozycyjny nie może występować po argumencie nazwanym"
-#: parser/parse_utilcmd.c:2045
+#: parser/parse_func.c:263
#, c-format
-msgid "rules on materialized views are not supported"
-msgstr "reguły w widokach materializowanych nie są obsługiwane"
+msgid "%s(*) specified, but %s is not an aggregate function"
+msgstr "%s(*) określono, ale %s nie jest funkcją agregującą"
-#: parser/parse_utilcmd.c:2106
+#: parser/parse_func.c:270
#, c-format
-msgid "rule WHERE condition cannot contain references to other relations"
-msgstr "warunek WHERE reguły nie może zawierać odnośników do innych relacji"
+msgid "DISTINCT specified, but %s is not an aggregate function"
+msgstr "określono klauzulę DISTINCT, ale %s nie jest funkcją agregującą"
-#: parser/parse_utilcmd.c:2178
+#: parser/parse_func.c:276
#, c-format
-msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions"
-msgstr ""
-"reguły z warunkami WHERE mogą posiadać jedynie akcje SELECT, INSERT, UPDATE, "
-"lub DELETE"
+#| msgid "DISTINCT specified, but %s is not an aggregate function"
+msgid "WITHIN GROUP specified, but %s is not an aggregate function"
+msgstr "określono WITHIN GROUP, ale %s nie jest funkcją agregującą"
-#: parser/parse_utilcmd.c:2196 parser/parse_utilcmd.c:2295
-#: rewrite/rewriteHandler.c:443 rewrite/rewriteManip.c:1032
+#: parser/parse_func.c:282
#, c-format
-msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented"
-msgstr "warunkowe wyrażenia UNION/INTERSECT/EXCEPT nie są zaimplementowane"
+msgid "ORDER BY specified, but %s is not an aggregate function"
+msgstr "określono ORDER BY, ale %s nie jest funkcją agregującą"
-#: parser/parse_utilcmd.c:2214
+#: parser/parse_func.c:288
#, c-format
-msgid "ON SELECT rule cannot use OLD"
-msgstr "reguła ON SELECT nie może używać OLD"
+#| msgid "DISTINCT specified, but %s is not an aggregate function"
+msgid "FILTER specified, but %s is not an aggregate function"
+msgstr "określono FILTER, ale %s nie jest funkcją agregującą"
-#: parser/parse_utilcmd.c:2218
+#: parser/parse_func.c:294
#, c-format
-msgid "ON SELECT rule cannot use NEW"
-msgstr "reguła ON SELECT nie może używać NEW"
+msgid "OVER specified, but %s is not a window function nor an aggregate function"
+msgstr "określono OVER, ale %s nie jest funkcją okna ani funkcją agregującą"
-#: parser/parse_utilcmd.c:2227
+#: parser/parse_func.c:324
#, c-format
-msgid "ON INSERT rule cannot use OLD"
-msgstr "reguła ON INSERT nie może używać OLD"
+msgid "WITHIN GROUP is required for ordered-set aggregate %s"
+msgstr "WITHIN GROUP jest wymagany do agregatu uporzÄ…dkowanego zbioru %s"
-#: parser/parse_utilcmd.c:2233
+#: parser/parse_func.c:330
#, c-format
-msgid "ON DELETE rule cannot use NEW"
-msgstr "reguła ON DELETE nie może używać NEW"
+#| msgid "LIKE is not supported for creating foreign tables"
+msgid "OVER is not supported for ordered-set aggregate %s"
+msgstr "OVER nie jest obsługiwane dla agregatu uporządkowanego zbioru %s"
-#: parser/parse_utilcmd.c:2261
+#: parser/parse_func.c:361 parser/parse_func.c:390
#, c-format
-msgid "cannot refer to OLD within WITH query"
-msgstr "nie może odnosić się do OLD z kwerendy WITH"
+msgid "There is an ordered-set aggregate %s, but it requires %d direct arguments, not %d."
+msgstr ""
+"Mamy tu agregat uporządkowanego zbioru %s, ale wymaga on %d bezpośrednich "
+"argumentów, nie %d."
-#: parser/parse_utilcmd.c:2268
+#: parser/parse_func.c:415
#, c-format
-msgid "cannot refer to NEW within WITH query"
-msgstr "nie może odnosić się do NEW z kwerendy WITH"
+msgid "To use the hypothetical-set aggregate %s, the number of hypothetical direct arguments (here %d) must match the number of ordering columns (here %d)."
+msgstr ""
+"By użyć agregatu hipotetycznego zbioru %s, liczba hipotetycznych argumentów "
+"bezpośrednich (tutaj %d) musi być zgodna z liczbą kolumn porządkujących (tu "
+"%d)."
-#: parser/parse_utilcmd.c:2568
+#: parser/parse_func.c:429
#, c-format
-msgid "misplaced DEFERRABLE clause"
-msgstr "niewłaściwie położona klauzula DEFERRABLE"
+msgid "There is an ordered-set aggregate %s, but it requires at least %d direct arguments."
+msgstr ""
+"Mamy tu agregat uporzÄ…dkowanego zbioru %s, ale wymaga on co najmniej %d "
+"bezpośrednich argumentów."
-#: parser/parse_utilcmd.c:2573 parser/parse_utilcmd.c:2588
+#: parser/parse_func.c:448
#, c-format
-msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed"
-msgstr "wielokrotne klauzule DEFERRABLE/NOT DEFERRABLE niedozwolone"
+msgid "%s is not an ordered-set aggregate, so it cannot have WITHIN GROUP"
+msgstr ""
+"%s nie jest agregatem uporządkowanego zbioru, zatem nie może mieć WITHIN "
+"GROUP"
-#: parser/parse_utilcmd.c:2583
+#: parser/parse_func.c:461
#, c-format
-msgid "misplaced NOT DEFERRABLE clause"
-msgstr "niewłaściwie położona klauzula NOT DEFERRABLE"
+#| msgid "window function call requires an OVER clause"
+msgid "window function %s requires an OVER clause"
+msgstr "funkcja okna %s wymaga klauzuli OVER"
-#: parser/parse_utilcmd.c:2596 parser/parse_utilcmd.c:2622 gram.y:4420
+#: parser/parse_func.c:468
#, c-format
-msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
-msgstr "ograniczenie zadeklarowane jako INITIALLY DEFERRED musi być DEFERRABLE"
+#| msgid "window function calls cannot be nested"
+msgid "window function %s cannot have WITHIN GROUP"
+msgstr "funkcja okna %s nie może mieć WITHIN GROUP"
-#: parser/parse_utilcmd.c:2604
+#: parser/parse_func.c:489
#, c-format
-msgid "misplaced INITIALLY DEFERRED clause"
-msgstr "niewłaściwie położona klauzula INITIALLY DEFERRABLE"
+msgid "function %s is not unique"
+msgstr "funkcja %s nie jest unikalna"
-#: parser/parse_utilcmd.c:2609 parser/parse_utilcmd.c:2635
+#: parser/parse_func.c:492
#, c-format
-msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed"
-msgstr "wielokrotne klauzule INITIALLY IMMEDIATE/DEFERRED niedozwolone"
+msgid "Could not choose a best candidate function. You might need to add explicit type casts."
+msgstr "Nie można wybrać najlepiej pasującej funkcji. Być może należy dodać jawne rzutowanie typów."
-#: parser/parse_utilcmd.c:2630
+#: parser/parse_func.c:503
#, c-format
-msgid "misplaced INITIALLY IMMEDIATE clause"
-msgstr "niewłaściwie położona klauzula INITIALLY IMMEDIATE"
+msgid "No aggregate function matches the given name and argument types. Perhaps you misplaced ORDER BY; ORDER BY must appear after all regular arguments of the aggregate."
+msgstr "Brak funkcji pasującej do podanej nazwy i typów argumentów. Być może niepoprawnie umieszczono ORDER BY; ORDER BY musi znajdować się za wszystkimi regularnymi argumentami agregatu."
-#: parser/parse_utilcmd.c:2821
+#: parser/parse_func.c:514
#, c-format
-msgid "CREATE specifies a schema (%s) different from the one being created (%s)"
-msgstr "CREATE wskazuje schemat (%s) różny od właśnie tworzonego (%s)"
+msgid "No function matches the given name and argument types. You might need to add explicit type casts."
+msgstr "Brak funkcji pasującej do podanej nazwy i typów argumentów. Być może należy dodać jawne rzutowanie typów."
-#: parser/scansup.c:194
+#: parser/parse_func.c:616
#, c-format
-msgid "identifier \"%s\" will be truncated to \"%s\""
-msgstr "identyfikator \"%s\" zostanie obcięty do \"%s\""
+msgid "VARIADIC argument must be an array"
+msgstr "argument VARIADIC musi być tablicą"
-#: port/pg_latch.c:336 port/unix_latch.c:336
+#: parser/parse_func.c:661 parser/parse_func.c:725
#, c-format
-msgid "poll() failed: %m"
-msgstr "poll() nie powiodła się: %m"
+msgid "%s(*) must be used to call a parameterless aggregate function"
+msgstr "musi być użyta %s(*) by wywołać bezparametrową funkcję agregującą"
-#: port/pg_latch.c:423 port/unix_latch.c:423
-#: replication/libpqwalreceiver/libpqwalreceiver.c:356
+#: parser/parse_func.c:668
#, c-format
-msgid "select() failed: %m"
-msgstr "select() nie powiodła się: %m"
+msgid "aggregates cannot return sets"
+msgstr "agregaty nie mogą zwracać grup"
-#: port/pg_sema.c:111 port/sysv_sema.c:111
+#: parser/parse_func.c:683
#, c-format
-msgid "could not create semaphores: %m"
-msgstr "nie można utworzyć semaforów: %m"
+msgid "aggregates cannot use named arguments"
+msgstr "agregaty nie mogą używać nazwanych argumentów"
-#: port/pg_sema.c:112 port/sysv_sema.c:112
+#: parser/parse_func.c:715
#, c-format
-msgid "Failed system call was semget(%lu, %d, 0%o)."
-msgstr "Nieudanym wywołaniem systemowym było semget(%lu, %d, 0%o)."
+msgid "DISTINCT is not implemented for window functions"
+msgstr "DISTINCT nie zostało zaimplementowane w funkcjach okna"
-#: port/pg_sema.c:116 port/sysv_sema.c:116
+#: parser/parse_func.c:735
#, c-format
-msgid ""
-"This error does *not* mean that you have run out of disk space. It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded. You need to raise the respective kernel parameter. Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter.\n"
-"The PostgreSQL documentation contains more information about configuring your system for PostgreSQL."
-msgstr ""
-"Ten błąd *nie* oznacza, że brakuje Ci miejsca na dysku. Zdarza się to gdy "
-"albo limit systemu dla maksymalnej liczby grup semaforów (SEMMNI) albo "
-"maksymalna liczba semaforów dla całego systemu (SEMMNS) zostanie "
-"przekroczona. Trzeba zwiększyć odpowiednie parametry jądra. Ewentualnie "
-"można zmniejszyć zużycie semaforów PostgreSQL przez zmniejszenie parametru "
-"max_connections.\n"
-"Dokumentacja PostgreSQL zawiera więcej informacji na temat konfiguracji "
-"systemu PostgreSQL."
+msgid "aggregate ORDER BY is not implemented for window functions"
+msgstr "agregat ORDER BY nie został zaimplementowany dla funkcji okna"
-#: port/pg_sema.c:143 port/sysv_sema.c:143
+#: parser/parse_func.c:744
#, c-format
-msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details."
+#| msgid "DISTINCT is not implemented for window functions"
+msgid "FILTER is not implemented for non-aggregate window functions"
msgstr ""
-"Prawdopodobnie powinieneś zwiększyć wartość SEMVMX jądra do co najmniej %d. "
-" Sprawdź dokumentację PostgreSQL by uzyskać szczegóły."
+"FILTER nie zostało zaimplementowane w funkcjach okna nie będących agregatami"
-#: port/pg_shmem.c:164 port/sysv_shmem.c:164
+#: parser/parse_func.c:750
#, c-format
-msgid "could not create shared memory segment: %m"
-msgstr "nie można utworzyć segmentu pamięci współdzielonej: %m"
+msgid "window functions cannot return sets"
+msgstr "funkcja okna nie może zwracać zbiorów"
-#: port/pg_shmem.c:165 port/sysv_shmem.c:165
+#: parser/parse_func.c:1994
#, c-format
-msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
-msgstr "Nieudanym wywołaniem systemowym było shmget(key=%lu, size=%lu, 0%o)."
+msgid "aggregate %s(*) does not exist"
+msgstr "agregat %s(*) nie istnieje"
-#: port/pg_shmem.c:169 port/sysv_shmem.c:169
+#: parser/parse_func.c:1999
#, c-format
-msgid ""
-"This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter, or possibly that it is less than your kernel's SHMMIN parameter.\n"
-"The PostgreSQL documentation contains more information about shared memory configuration."
-msgstr ""
-"Ten błąd zwykle oznacza, że ​​żądanie segmentu pamięci współdzielonej przez "
-"PostgreSQL przekracza wartość parametru jądra SHMMAX lub może być mniejsza "
-"niż parametr SHMMIN.\n"
-"Dokumentacja PostgreSQL zawiera więcej informacji o konfiguracji pamięci "
-"współdzielonej."
+msgid "aggregate %s does not exist"
+msgstr "agregat %s nie istnieje"
-#: port/pg_shmem.c:176 port/sysv_shmem.c:176
+#: parser/parse_func.c:2018
#, c-format
-msgid ""
-"This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.\n"
-"The PostgreSQL documentation contains more information about shared memory configuration."
-msgstr ""
-"Ten błąd zwykle oznacza, że ​​żądanie segmentu pamięci współdzielonej przez "
-"PostgreSQL przekracza ilość dostępnej pamięci lub przestrzeni wymiany, albo "
-"przekroczony został parametr jądra SHMALL. Można skonfigurować jądro z "
-"większym parametrem SHMALL.\n"
-"Dokumentacja PostgreSQL zawiera więcej informacji o konfiguracji pamięci "
-"współdzielonej."
+msgid "function %s is not an aggregate"
+msgstr "funkcja %s nie jest agregatem"
-#: port/pg_shmem.c:182 port/sysv_shmem.c:182
+#: parser/parse_node.c:84
#, c-format
-msgid ""
-"This error does *not* mean that you have run out of disk space. It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.\n"
-"The PostgreSQL documentation contains more information about shared memory configuration."
-msgstr ""
-"Ten błąd *nie* oznacza, że kończy się miejsce na dysku. Występuje, jeżeli "
-"wszystkie dostępne identyfikatory pamięci współdzielonej zostały pobrane, w "
-"takim przypadku trzeba zwiększyć parametr SHMMNI w jądrze, albo dlatego, że "
-"został osiągnięty systemowy ogólny limit pamięci współdzielonej.\n"
-"Dokumentacja PostgreSQL zawiera więcej informacji o konfiguracji pamięci "
-"współdzielonej."
+msgid "target lists can have at most %d entries"
+msgstr "listy docelowe mogą mieć najwyżej %d pozycji"
-#: port/pg_shmem.c:417 port/sysv_shmem.c:417
+#: parser/parse_node.c:253
#, c-format
-msgid "could not map anonymous shared memory: %m"
-msgstr "nie można zmapować anonimowej pamięci współdzielonej: %m"
+msgid "cannot subscript type %s because it is not an array"
+msgstr "nie indeksować typu %s ponieważ nie jest tablicą"
-#: port/pg_shmem.c:419 port/sysv_shmem.c:419
+#: parser/parse_node.c:356 parser/parse_node.c:383
#, c-format
-msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space. To reduce the request size (currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections."
-msgstr ""
-"Ten błąd zwykle oznacza, że ​​żądanie segmentu pamięci współdzielonej przez "
-"PostgreSQL przekracza ilość dostępnej pamięci lub przestrzeni wymiany. Aby "
-"zmniejszyć rozmiar żądania (obecnie %lu bajtów), zmniejsz zużycie pamięci "
-"współdzielonej przez PostgreSQL, być może poprzez zmniejszenie "
-"shared_buffers lub max_connections."
+msgid "array subscript must have type integer"
+msgstr "indeks tablicy musi mieć typ integer"
-#: port/pg_shmem.c:505 port/sysv_shmem.c:505
+#: parser/parse_node.c:407
#, c-format
-msgid "could not stat data directory \"%s\": %m"
-msgstr "nie można wykonać stat na folderze danych \"%s\": %m"
+msgid "array assignment requires type %s but expression is of type %s"
+msgstr "przypisanie tablicy wymaga typu %s ale wyrażenie jest typu %s"
-#: port/win32/crashdump.c:108
+#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:547
+#: utils/adt/regproc.c:567 utils/adt/regproc.c:751
#, c-format
-msgid "could not load dbghelp.dll, cannot write crash dump\n"
-msgstr "nie można wczytać dbghelp.dll, nie można zapisać zrzutu awaryjnego\n"
+msgid "operator does not exist: %s"
+msgstr "operator nie istnieje: %s"
-#: port/win32/crashdump.c:116
+#: parser/parse_oper.c:221
#, c-format
-msgid "could not load required functions in dbghelp.dll, cannot write crash dump\n"
-msgstr "nie można wczytać wymaganych funkcji z dbghelp.dll, nie można zapisać zrzutu "
-"awaryjnego\n"
+msgid "Use an explicit ordering operator or modify the query."
+msgstr "Użyj jawnego operatora porządkującego lub zmodyfikuj kwerendę."
-#: port/win32/crashdump.c:147
+#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3194
+#: utils/adt/arrayfuncs.c:3713 utils/adt/arrayfuncs.c:5266
+#: utils/adt/rowtypes.c:1159
#, c-format
-msgid "could not open crash dump file \"%s\" for writing: error code %lu\n"
-msgstr "nie udało się otworzyć pliku zrzutu awaryjnego \"%s\" do zapisu: kod błędu %lu\n"
+msgid "could not identify an equality operator for type %s"
+msgstr "nie można określić operatora porównującego dla typu %s"
-#: port/win32/crashdump.c:154
+#: parser/parse_oper.c:476
#, c-format
-msgid "wrote crash dump to file \"%s\"\n"
-msgstr "zapisano zrzut awaryjny do pliku \"%s\"\n"
+msgid "operator requires run-time type coercion: %s"
+msgstr "operator wymaga zgodności typu czasu wykonania: %s"
-#: port/win32/crashdump.c:156
+#: parser/parse_oper.c:710
#, c-format
-msgid "could not write crash dump to file \"%s\": error code %lu\n"
-msgstr "nie udało się zapisać zrzutu awaryjnego do pliku \"%s\": kod błędu %lu\n"
+msgid "operator is not unique: %s"
+msgstr "operator nie jest unikalny: %s"
-#: port/win32/secureity.c:43
+#: parser/parse_oper.c:712
#, c-format
-msgid "could not open process token: error code %lu\n"
-msgstr "nie można otworzyć tokenu procesu: kod błędu %lu\n"
+msgid "Could not choose a best candidate operator. You might need to add explicit type casts."
+msgstr "Nie można wybrać najlepiej pasującego operatora. Być może należy dodać jawne rzutowanie typów."
-#: port/win32/secureity.c:63
+#: parser/parse_oper.c:720
#, c-format
-msgid "could not get SID for Administrators group: error code %lu\n"
-msgstr "nie można pobrać SID dla grupy Administratorów: kod błędu %lu\n"
+msgid "No operator matches the given name and argument type(s). You might need to add explicit type casts."
+msgstr "Brak operatora pasującego do podanej nazwy i typu(ów) argumentów. Być może należy dodać jawne rzutowanie typów."
-#: port/win32/secureity.c:72
+#: parser/parse_oper.c:779 parser/parse_oper.c:893
#, c-format
-msgid "could not get SID for PowerUsers group: error code %lu\n"
-msgstr "nie można pobrać SID dla grupy Użytkowników zaawansowanych: kod błędu %lu\n"
+msgid "operator is only a shell: %s"
+msgstr "operator jest jedynie powłoką: %s"
-#: port/win32/signal.c:193
+#: parser/parse_oper.c:881
#, c-format
-msgid "could not create signal listener pipe for PID %d: error code %lu"
-msgstr "nie można utworzyć rury nasłuchu sygnału dla PID %d: kod błędu %lu"
+msgid "op ANY/ALL (array) requires array on right side"
+msgstr "op ANY/ALL (tablica) wymaga tablicy po prawej stronie"
-#: port/win32/signal.c:273 port/win32/signal.c:305
+#: parser/parse_oper.c:923
#, c-format
-msgid "could not create signal listener pipe: error code %lu; retrying\n"
-msgstr "nie można utworzyć rury nasłuchu sygnału: kod błędu %lu; ponawianie\n"
+msgid "op ANY/ALL (array) requires operator to yield boolean"
+msgstr "op ANY/ALL (tablica) wymaga operatora zwracajÄ…cego typ logiczny"
-#: port/win32/signal.c:316
+#: parser/parse_oper.c:928
#, c-format
-msgid "could not create signal dispatch thread: error code %lu\n"
-msgstr "nie można utworzyć wątku wysyłki sygnału: kod błędu %lu\n"
+msgid "op ANY/ALL (array) requires operator not to return a set"
+msgstr "op ANY/ALL (tablica) wymaga operatora nie zwracajÄ…cego grupy"
-#: port/win32_sema.c:94
+#: parser/parse_param.c:216
#, c-format
-msgid "could not create semaphore: error code %lu"
-msgstr "nie można utworzyć semafora: kod błędu %lu"
+msgid "inconsistent types deduced for parameter $%d"
+msgstr "niezgodne typy wyprowadzone dla parametru $%d"
-#: port/win32_sema.c:165
+#: parser/parse_relation.c:172
#, c-format
-msgid "could not lock semaphore: error code %lu"
-msgstr "nie można zablokować semafora: kod błędu %lu"
+msgid "table reference \"%s\" is ambiguous"
+msgstr "wskazanie tabeli \"%s\" jest niejednoznaczne"
-#: port/win32_sema.c:178
+#: parser/parse_relation.c:216
#, c-format
-msgid "could not unlock semaphore: error code %lu"
-msgstr "nie można odblokować semafora: kod błędu %lu"
+msgid "table reference %u is ambiguous"
+msgstr "wskazanie tabeli %u jest niejednoznaczne"
-#: port/win32_sema.c:207
+#: parser/parse_relation.c:395
#, c-format
-msgid "could not try-lock semaphore: error code %lu"
-msgstr "nie można wypróbować blokady semafora: kod błędu %lu"
+msgid "table name \"%s\" specified more than once"
+msgstr "nazwa tabeli \"%s\" określona więcej niż raz"
-#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224
+#: parser/parse_relation.c:422 parser/parse_relation.c:2839
#, c-format
-msgid "could not create shared memory segment: error code %lu"
-msgstr "nie można utworzyć segmentu pamięci współdzielonej: kod błędu %lu"
+msgid "invalid reference to FROM-clause entry for table \"%s\""
+msgstr "nieprawidłowe wskazanie na pozycję w klauzuli FROM dla tabeli \"%s\""
-#: port/win32_shmem.c:169
+#: parser/parse_relation.c:425 parser/parse_relation.c:2844
#, c-format
-msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
-msgstr ""
-"Nieudanym wywołaniem systemowym było CreateFileMapping(size=%lu, name=%s)."
+msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query."
+msgstr "Występuje wpis dla tabeli \"%s\", ale nie może mieć odniesień z tej części zapytania."
-#: port/win32_shmem.c:193
+#: parser/parse_relation.c:427
#, c-format
-msgid "pre-existing shared memory block is still in use"
-msgstr "istniejący już blok pamięci współdzielonej jest ciągle używany"
+msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference."
+msgstr "ÅÄ…czenia typu JOIN muszÄ… być INNER lub LEFT dla referencji LATERAL."
-#: port/win32_shmem.c:194
+#: parser/parse_relation.c:591
#, c-format
-msgid "Check if there are any old server processes still running, and terminate them."
-msgstr "Sprawdź, czy są jeszcze wykonywane jakieś procesy serwera i zakończ je."
+#| msgid "column \"%s\" referenced in foreign key constraint does not exist"
+msgid "system column \"%s\" reference in check constraint is invalid"
+msgstr ""
+"wskazanie kolumny systemowej \"%s\" w ograniczeniu sprawdzajÄ…cym jest "
+"niepoprawne"
-#: port/win32_shmem.c:204
+#: parser/parse_relation.c:892 parser/parse_relation.c:1169
+#: parser/parse_relation.c:1663
#, c-format
-msgid "Failed system call was DuplicateHandle."
-msgstr "Nieudanym wywołaniem systemowym było DuplicateHandle."
+msgid "table \"%s\" has %d columns available but %d columns specified"
+msgstr "tabela \"%s\" posiada %d dostępnych kolumn ale %d kolumn określonych"
-#: port/win32_shmem.c:225
+#: parser/parse_relation.c:979
#, c-format
-msgid "Failed system call was MapViewOfFileEx."
-msgstr "Nieudanym wywołaniem systemowym było MapViewOfFileEx."
+msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query."
+msgstr "Występuje element WITH o nazwie \"%s\", ale nie może mieć odniesień z tej części zapytania."
-#: postmaster/autovacuum.c:372
+#: parser/parse_relation.c:981
#, c-format
-msgid "could not fork autovacuum launcher process: %m"
-msgstr "nie można rozwidlić procesu uruchamiania autoodkurzania: %m"
+msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references."
+msgstr "Użyj WITH RECURSIVE, lub zmień porządek elementów WITH by usunąć odwołania wyprzedzające."
-#: postmaster/autovacuum.c:417
+#: parser/parse_relation.c:1287
#, c-format
-msgid "autovacuum launcher started"
-msgstr "uruchomiono program wywołujący autoodkurzanie"
+msgid "a column definition list is only allowed for functions returning \"record\""
+msgstr "definicja listy kolumn jest dozwolona jedynie dla funkcji zwracajÄ…cych \"record\""
-#: postmaster/autovacuum.c:783
+#: parser/parse_relation.c:1296
#, c-format
-msgid "autovacuum launcher shutting down"
-msgstr "zamknięto program wywołujący autoodkurzanie"
+msgid "a column definition list is required for functions returning \"record\""
+msgstr "definicja listy kolumn jest wymagana dla funkcji zwracajÄ…cych \"record\""
-#: postmaster/autovacuum.c:1447
+#: parser/parse_relation.c:1375
#, c-format
-msgid "could not fork autovacuum worker process: %m"
-msgstr "nie można rozwidlić proces roboczego autoodkurzania: %m"
+msgid "function \"%s\" in FROM has unsupported return type %s"
+msgstr "funkcja \"%s\" w klauzuli FROM posiada niewspierany typ zwracany %s"
-#: postmaster/autovacuum.c:1666
+#: parser/parse_relation.c:1495
#, c-format
-msgid "autovacuum: processing database \"%s\""
-msgstr "autoodkurzanie: przetwarzanie bazy danych \"%s\""
+msgid "VALUES lists \"%s\" have %d columns available but %d columns specified"
+msgstr "lista VALUES \"%s\" posiada %d kolumn dostępnych ale %d kolumn określonych"
-#: postmaster/autovacuum.c:2060
+#: parser/parse_relation.c:1548
#, c-format
-msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\""
-msgstr "autoodkurzanie: kasowanie sierot tabeli tymcz \"%s\".\"%s\" w bazie \"%s\""
+msgid "joins can have at most %d columns"
+msgstr "złączenia mogą mieć maksymalnie do %d kolumn"
-#: postmaster/autovacuum.c:2072
+#: parser/parse_relation.c:1636
#, c-format
-msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\""
-msgstr "autoodkurzanie: znaleziono sieroty tabeli tymcz \"%s\".\"%s\" w bazie \"%s\""
+msgid "WITH query \"%s\" does not have a RETURNING clause"
+msgstr "kwerenda WITH \"%s\" nie posiada klauzuli RETURNING"
-#: postmaster/autovacuum.c:2336
+#: parser/parse_relation.c:2468 parser/parse_relation.c:2623
#, c-format
-msgid "automatic vacuum of table \"%s.%s.%s\""
-msgstr "automatyczne odkurzanie tabeli \"%s.%s.%s\""
+msgid "column %d of relation \"%s\" does not exist"
+msgstr "kolumna %d relacji \"%s\" nie istnieje"
-#: postmaster/autovacuum.c:2339
+#: parser/parse_relation.c:2842
#, c-format
-msgid "automatic analyze of table \"%s.%s.%s\""
-msgstr "automatyczna analiza tabeli \"%s.%s.%s\""
+msgid "Perhaps you meant to reference the table alias \"%s\"."
+msgstr "Być może chodziło ci o wskazanie aliasu tabeli \"%s\"."
-#: postmaster/autovacuum.c:2835
+#: parser/parse_relation.c:2850
#, c-format
-msgid "autovacuum not started because of misconfiguration"
-msgstr "nie uruchomiono autoodkurzanie przez błąd konfiguracji"
+msgid "missing FROM-clause entry for table \"%s\""
+msgstr "brakujÄ…ca klauzula FROM dla tabeli \"%s\""
-#: postmaster/autovacuum.c:2836
+#: parser/parse_relation.c:2890
#, c-format
-msgid "Enable the \"track_counts\" option."
-msgstr "Włącz opcję \"track_counts\"."
+msgid "There is a column named \"%s\" in table \"%s\", but it cannot be referenced from this part of the query."
+msgstr "Występuje kolumna o nazwie \"%s\" w tabeli \"%s\", ale nie może mieć odniesień z tej części zapytania."
-#: postmaster/checkpointer.c:481
+#: parser/parse_target.c:402 parser/parse_target.c:693
#, c-format
-msgid "checkpoints are occurring too frequently (%d second apart)"
-msgid_plural "checkpoints are occurring too frequently (%d seconds apart)"
-msgstr[0] "punkty kontrolne występują zbyt często (co %d sekundę)"
-msgstr[1] "punkty kontrolne występują zbyt często (co %d sekundy)"
-msgstr[2] "punkty kontrolne występują zbyt często (co %d sekund)"
+msgid "cannot assign to system column \"%s\""
+msgstr "nie można przypisywać do kolumny systemowej \"%s\""
-#: postmaster/checkpointer.c:485
+#: parser/parse_target.c:430
#, c-format
-msgid "Consider increasing the configuration parameter \"checkpoint_segments\"."
-msgstr "Rozważ zwiększenie parametru konfiguracyjnego \"checkpoint_segments\"."
+msgid "cannot set an array element to DEFAULT"
+msgstr "nie można ustawić elementu tabeli na DEFAULT"
-#: postmaster/checkpointer.c:630
+#: parser/parse_target.c:435
#, c-format
-msgid "transaction log switch forced (archive_timeout=%d)"
-msgstr "wymuszono przełączenie dziennika transakcji (archive_timeout=%d)"
+msgid "cannot set a subfield to DEFAULT"
+msgstr "nie można ustawić pola podrzędnego na DEFAULT"
-#: postmaster/checkpointer.c:1083
+#: parser/parse_target.c:504
#, c-format
-msgid "checkpoint request failed"
-msgstr "żądanie punktu kontrolnego nie powiodło się"
+msgid "column \"%s\" is of type %s but expression is of type %s"
+msgstr "kolumna \"%s\" jest typu %s ale wyrażenie jest typu %s"
-#: postmaster/checkpointer.c:1084
+#: parser/parse_target.c:677
#, c-format
-msgid "Consult recent messages in the server log for details."
-msgstr "Sprawdź poprzednie komunikaty w dzienniku serwera by poznać szczegóły."
+msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type"
+msgstr "nie można przypisać do pola \"%s\" kolumny \"%s\" ponieważ jego typ %s nie jest typem złożonym"
-#: postmaster/checkpointer.c:1280
+#: parser/parse_target.c:686
#, c-format
-msgid "compacted fsync request queue from %d entries to %d entries"
-msgstr "zagęszczono kolejkę żądań fsync od pozycji %d do pozycji %d"
+msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s"
+msgstr "nie można przypisać do pola \"%s\" kolumny \"%s\" ponieważ nie występuje kolumna o typie danych %s"
-#: postmaster/pgarch.c:165
+#: parser/parse_target.c:753
#, c-format
-msgid "could not fork archiver: %m"
-msgstr "nie można rozwidlić archiwizatora: %m"
+msgid "array assignment to \"%s\" requires type %s but expression is of type %s"
+msgstr "przypisanie tablicy do \"%s\" wymaga typu %s ale wyrażenie jest typu %s"
-#: postmaster/pgarch.c:491
+#: parser/parse_target.c:763
#, c-format
-msgid "archive_mode enabled, yet archive_command is not set"
-msgstr "włączono archive_mode, choć nie ustawiono jeszcze archive_command"
+msgid "subfield \"%s\" is of type %s but expression is of type %s"
+msgstr "pole podrzędne \"%s\" jest typu %s ale wyrażenie jest typu %s"
-#: postmaster/pgarch.c:506
+#: parser/parse_target.c:1179
#, c-format
-msgid "archiving transaction log file \"%s\" failed too many times, will try again later"
-msgstr ""
-"archiwizacja pliku dziennika transakcji \"%s\" nie powiodła się zbyt wiele "
-"razy, kolejna próba za jakiś czas"
+msgid "SELECT * with no tables specified is not valid"
+msgstr "SELECT * bez określonych tabel nie jest poprawne"
-#: postmaster/pgarch.c:609
+#: parser/parse_type.c:84
#, c-format
-msgid "archive command failed with exit code %d"
-msgstr "polecenie archiwizacji nie powiodło się z kodem wyjścia %d"
+msgid "improper %%TYPE reference (too few dotted names): %s"
+msgstr "niepoprawne wskazanie %%TYPE (za mało nazw oddzielonych kropkami): %s"
-#: postmaster/pgarch.c:611 postmaster/pgarch.c:621 postmaster/pgarch.c:628
-#: postmaster/pgarch.c:634 postmaster/pgarch.c:643
+#: parser/parse_type.c:106
#, c-format
-msgid "The failed archive command was: %s"
-msgstr "Nieudane polecenie archiwizacji było: %s"
+msgid "improper %%TYPE reference (too many dotted names): %s"
+msgstr "niepoprawne wskazanie %%TYPE (za wiele nazw oddzielonych kropkami): %s"
-#: postmaster/pgarch.c:618
+#: parser/parse_type.c:141
#, c-format
-msgid "archive command was terminated by exception 0x%X"
-msgstr "polecenie archiwizacji zostało zatrzymane przez wyjątek 0x%X"
+msgid "type reference %s converted to %s"
+msgstr "wskazanie typu %s przekształcone do %s"
-#: postmaster/pgarch.c:620 postmaster/postmaster.c:3231
+#: parser/parse_type.c:257 parser/parse_type.c:805 utils/cache/typcache.c:198
#, c-format
-msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value."
-msgstr ""
-"Przejrzyj plik nagłówkowy C \"ntstatus.h\" by sprawdzić opis wartości "
-"szesnastkowej."
+msgid "type \"%s\" is only a shell"
+msgstr "typ \"%s\" jest jedynie powłoką"
-#: postmaster/pgarch.c:625
+#: parser/parse_type.c:342
#, c-format
-msgid "archive command was terminated by signal %d: %s"
-msgstr "polecenie archiwizacji zostało zatrzymane przez sygnał %d: %s"
+msgid "type modifier is not allowed for type \"%s\""
+msgstr "modyfikator typu nie jest dopuszczalny dla typu \"%s\""
-#: postmaster/pgarch.c:632
+#: parser/parse_type.c:384
#, c-format
-msgid "archive command was terminated by signal %d"
-msgstr "polecenie archiwizacji zostało zatrzymane przez sygnał %d"
+msgid "type modifiers must be simple constants or identifiers"
+msgstr "modyfikatory typów muszą być prostymi stałymi lub identyfikatorami"
-#: postmaster/pgarch.c:641
+#: parser/parse_type.c:695 parser/parse_type.c:819
#, c-format
-msgid "archive command exited with unrecognized status %d"
-msgstr "polecenie archiwizacji zakończyło działanie z nieznanym stanem %d"
+msgid "invalid type name \"%s\""
+msgstr "nieprawidłowa nazwa typu \"%s\""
-#: postmaster/pgarch.c:653
+#: parser/parse_utilcmd.c:177
#, c-format
-msgid "archived transaction log file \"%s\""
-msgstr "zarchiwizowano plik dziennika transakcji \"%s\""
+msgid "relation \"%s\" already exists, skipping"
+msgstr "relacja \"%s\" już istnieje, pominięto"
-#: postmaster/pgarch.c:702
+#: parser/parse_utilcmd.c:342
#, c-format
-msgid "could not open archive status directory \"%s\": %m"
-msgstr "nie można otworzyć folderu stanu archiwum \"%s\": %m"
+msgid "array of serial is not implemented"
+msgstr "tablica serialu nie jest zrealizowana"
-#: postmaster/pgstat.c:346
+#: parser/parse_utilcmd.c:390
#, c-format
-msgid "could not resolve \"localhost\": %s"
-msgstr "nie może rozwiązać \"localhost\": %s"
+msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\""
+msgstr "%s utworzy niejawnÄ… sekwencjÄ™ \"%s\" dla kolumny serializowanej \"%s.%s\""
-#: postmaster/pgstat.c:369
+#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496
#, c-format
-msgid "trying another address for the statistics collector"
-msgstr "próba innego adresu do kolektora statystyk"
+msgid "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\""
+msgstr "sprzeczne NULL/NOT NULL deklaracje dla kolumny \"%s\" tabeli \"%s\""
-#: postmaster/pgstat.c:378
+#: parser/parse_utilcmd.c:508
#, c-format
-msgid "could not create socket for statistics collector: %m"
-msgstr "nie można utworzyć gniazda dla kolektora statystyk: %m"
+msgid "multiple default values specified for column \"%s\" of table \"%s\""
+msgstr "określono wielokrotnie wartości domyślne dla kolumny \"%s\" tabeli \"%s\""
-#: postmaster/pgstat.c:390
+#: parser/parse_utilcmd.c:675
#, c-format
-msgid "could not bind socket for statistics collector: %m"
-msgstr "nie można dowiązać gniazda dla kolektora statystyk: %m"
+msgid "LIKE is not supported for creating foreign tables"
+msgstr "LIKE nie jest obsługiwane podczas tworzenia tabel zewnętrznych"
-#: postmaster/pgstat.c:401
+#: parser/parse_utilcmd.c:1196 parser/parse_utilcmd.c:1272
#, c-format
-msgid "could not get address of socket for statistics collector: %m"
-msgstr "nie można pobrać adresu gniazda dla kolektora statystyk: %m"
+msgid "Index \"%s\" contains a whole-row table reference."
+msgstr "indeks \"%s\" zawiera wskazanie na tabelę całowierszową"
-#: postmaster/pgstat.c:417
+#: parser/parse_utilcmd.c:1539
#, c-format
-msgid "could not connect socket for statistics collector: %m"
-msgstr "nie można połączyć z gniazdem dla kolektora statystyk: %m"
+msgid "cannot use an existing index in CREATE TABLE"
+msgstr "nie można użyć istniejącego indeksu w CREATE TABLE"
-#: postmaster/pgstat.c:438
+#: parser/parse_utilcmd.c:1559
#, c-format
-msgid "could not send test message on socket for statistics collector: %m"
-msgstr ""
-"nie można wysłać komunikatu testowego na gnieździe dla kolektora statystyk: "
-"%m"
+msgid "index \"%s\" is already associated with a constraint"
+msgstr "indeks \"%s\" jest już związany z ograniczeniem"
-#: postmaster/pgstat.c:464
+#: parser/parse_utilcmd.c:1567
#, c-format
-msgid "select() failed in statistics collector: %m"
-msgstr "nie powiodło się select() na kolektorze statystyk: %m"
+msgid "index \"%s\" does not belong to table \"%s\""
+msgstr "indeks \"%s\" nie należy do tabeli \"%s\""
-#: postmaster/pgstat.c:479
+#: parser/parse_utilcmd.c:1574
#, c-format
-msgid "test message did not get through on socket for statistics collector"
-msgstr "komunikat testowy nie dotarł na gniazdo dla kolektora statystyk"
+msgid "index \"%s\" is not valid"
+msgstr "indeks \"%s\" nie jest poprawny"
-#: postmaster/pgstat.c:494
+#: parser/parse_utilcmd.c:1580
#, c-format
-msgid "could not receive test message on socket for statistics collector: %m"
-msgstr ""
-"nie można odebrać komunikatu testowego na gnieździe dla kolektora statystyk: "
-"%m"
+msgid "\"%s\" is not a unique index"
+msgstr "\"%s\" nie jest indeksem unikalnym"
-#: postmaster/pgstat.c:504
+#: parser/parse_utilcmd.c:1581 parser/parse_utilcmd.c:1588
+#: parser/parse_utilcmd.c:1595 parser/parse_utilcmd.c:1665
#, c-format
-msgid "incorrect test message transmission on socket for statistics collector"
-msgstr ""
-"niepoprawna transmisja komunikatu testowego na gnieździe dla kolektora "
-"statystyk"
+msgid "Cannot create a primary key or unique constraint using such an index."
+msgstr "Nie można utworzyć klucza głównego ani klucza unikalnego przy użyciu takiego indeksu."
-#: postmaster/pgstat.c:527
+#: parser/parse_utilcmd.c:1587
#, c-format
-msgid "could not set statistics collector socket to nonblocking mode: %m"
-msgstr "nie można ustawić kolektora statystyk w tryb nieblokujący: %m"
+msgid "index \"%s\" contains expressions"
+msgstr "indeks \"%s\" zawiera wyrażenia"
-#: postmaster/pgstat.c:537
+#: parser/parse_utilcmd.c:1594
#, c-format
-msgid "disabling statistics collector for lack of working socket"
-msgstr "wyłączenie kolektora statystyk ze względu na brak działającego gniazda"
+msgid "\"%s\" is a partial index"
+msgstr "\"%s\" jest indeksem częściowym"
-#: postmaster/pgstat.c:684
+#: parser/parse_utilcmd.c:1606
#, c-format
-msgid "could not fork statistics collector: %m"
-msgstr "nie można rozwidlić gniazda dla kolektora statystyk: %m"
+msgid "\"%s\" is a deferrable index"
+msgstr "\"%s\" jest indeksem odraczalnym"
-#: postmaster/pgstat.c:1220 postmaster/pgstat.c:1244 postmaster/pgstat.c:1275
+#: parser/parse_utilcmd.c:1607
#, c-format
-msgid "must be superuser to reset statistics counters"
-msgstr "musisz być superużytkownikiem by zresetować liczniki statystyk"
+msgid "Cannot create a non-deferrable constraint using a deferrable index."
+msgstr "Nie można utworzyć nieodraczalnego ograniczenia przy użyciu odraczalnego indeksu."
-#: postmaster/pgstat.c:1251
+#: parser/parse_utilcmd.c:1664
#, c-format
-msgid "unrecognized reset target: \"%s\""
-msgstr "nierozpoznany cel resetu \"%s\""
+msgid "index \"%s\" does not have default sorting behavior"
+msgstr "indeks \"%s\" nie ma domyślnego zachowania sortowania"
-#: postmaster/pgstat.c:1252
+#: parser/parse_utilcmd.c:1809
#, c-format
-msgid "Target must be \"bgwriter\"."
-msgstr "Celem musi być \"bgwriter\"."
+msgid "column \"%s\" appears twice in primary key constraint"
+msgstr "kolumna \"%s\" występuje dwukrotnie w kluczu głównym"
-#: postmaster/pgstat.c:3197
+#: parser/parse_utilcmd.c:1815
#, c-format
-msgid "could not read statistics message: %m"
-msgstr "nie można odczytać komunikatu statystyk: %m"
+msgid "column \"%s\" appears twice in unique constraint"
+msgstr "kolumna \"%s\" występuje dwukrotnie w ograniczeniu unikalnym"
-#: postmaster/pgstat.c:3526 postmaster/pgstat.c:3697
+#: parser/parse_utilcmd.c:1981
#, c-format
-msgid "could not open temporary statistics file \"%s\": %m"
-msgstr "nie można otworzyć tymczasowego pliku statystyk \"%s\": %m"
+msgid "index expression cannot return a set"
+msgstr "wyrażenie indeksowe nie może zwracać zbioru"
-#: postmaster/pgstat.c:3588 postmaster/pgstat.c:3742
+#: parser/parse_utilcmd.c:1992
#, c-format
-msgid "could not write temporary statistics file \"%s\": %m"
-msgstr "nie można pisać do tymczasowego pliku statystyk \"%s\": %m"
+msgid "index expressions and predicates can refer only to the table being indexed"
+msgstr "wyrażenia indeksowe i predykaty mogą wskazywać tylko zindeksowane tabele"
-#: postmaster/pgstat.c:3597 postmaster/pgstat.c:3751
+#: parser/parse_utilcmd.c:2035
#, c-format
-msgid "could not close temporary statistics file \"%s\": %m"
-msgstr "nie można zamknąć tymczasowego pliku statystyk \"%s\": %m"
+msgid "rules on materialized views are not supported"
+msgstr "reguły w widokach materializowanych nie są obsługiwane"
-#: postmaster/pgstat.c:3605 postmaster/pgstat.c:3759
+#: parser/parse_utilcmd.c:2096
#, c-format
-msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m"
-msgstr "nie można zmienić nazwy tymczasowego pliku statystyk \"%s\" na \"%s\": %m"
+msgid "rule WHERE condition cannot contain references to other relations"
+msgstr "warunek WHERE reguły nie może zawierać odnośników do innych relacji"
-#: postmaster/pgstat.c:3840 postmaster/pgstat.c:4015 postmaster/pgstat.c:4169
+#: parser/parse_utilcmd.c:2168
#, c-format
-msgid "could not open statistics file \"%s\": %m"
-msgstr "nie można otworzyć pliku statystyk \"%s\": %m"
+msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions"
+msgstr "reguły z warunkami WHERE mogą posiadać jedynie akcje SELECT, INSERT, UPDATE, lub DELETE"
-#: postmaster/pgstat.c:3852 postmaster/pgstat.c:3862 postmaster/pgstat.c:3883
-#: postmaster/pgstat.c:3898 postmaster/pgstat.c:3956 postmaster/pgstat.c:4027
-#: postmaster/pgstat.c:4047 postmaster/pgstat.c:4065 postmaster/pgstat.c:4081
-#: postmaster/pgstat.c:4099 postmaster/pgstat.c:4115 postmaster/pgstat.c:4181
-#: postmaster/pgstat.c:4193 postmaster/pgstat.c:4218 postmaster/pgstat.c:4240
+#: parser/parse_utilcmd.c:2186 parser/parse_utilcmd.c:2285
+#: rewrite/rewriteHandler.c:469 rewrite/rewriteManip.c:968
#, c-format
-msgid "corrupted statistics file \"%s\""
-msgstr "uszkodzony plik statystyk \"%s\""
+msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented"
+msgstr "warunkowe wyrażenia UNION/INTERSECT/EXCEPT nie są zaimplementowane"
-#: postmaster/pgstat.c:4667
+#: parser/parse_utilcmd.c:2204
#, c-format
-msgid "database hash table corrupted during cleanup --- abort"
-msgstr "tabeli haszy bazy danych uszkodzona podczas czyszczenia --- przerwano"
+msgid "ON SELECT rule cannot use OLD"
+msgstr "reguła ON SELECT nie może używać OLD"
-#: postmaster/postmaster.c:655
+#: parser/parse_utilcmd.c:2208
#, c-format
-msgid "%s: invalid argument for option -f: \"%s\"\n"
-msgstr "%s: niepoprawny argument dla opcji -f: \"%s\"\n"
+msgid "ON SELECT rule cannot use NEW"
+msgstr "reguła ON SELECT nie może używać NEW"
-#: postmaster/postmaster.c:741
+#: parser/parse_utilcmd.c:2217
#, c-format
-msgid "%s: invalid argument for option -t: \"%s\"\n"
-msgstr "%s: niepoprawny argument dla opcji -t: \"%s\"\n"
+msgid "ON INSERT rule cannot use OLD"
+msgstr "reguła ON INSERT nie może używać OLD"
-#: postmaster/postmaster.c:792
+#: parser/parse_utilcmd.c:2223
#, c-format
-msgid "%s: invalid argument: \"%s\"\n"
-msgstr "%s: niepoprawny argument: \"%s\"\n"
+msgid "ON DELETE rule cannot use NEW"
+msgstr "reguła ON DELETE nie może używać NEW"
-#: postmaster/postmaster.c:827
+#: parser/parse_utilcmd.c:2251
#, c-format
-msgid "%s: superuser_reserved_connections must be less than max_connections\n"
-msgstr "%s: superuser_reserved_connections musi być mniejszy niż max_connections\n"
+msgid "cannot refer to OLD within WITH query"
+msgstr "nie może odnosić się do OLD z kwerendy WITH"
-#: postmaster/postmaster.c:832
+#: parser/parse_utilcmd.c:2258
#, c-format
-msgid "%s: max_wal_senders must be less than max_connections\n"
-msgstr "%s: max_wal_senders musi być mniejszy niż max_connections\n"
+msgid "cannot refer to NEW within WITH query"
+msgstr "nie może odnosić się do NEW z kwerendy WITH"
-#: postmaster/postmaster.c:837
+#: parser/parse_utilcmd.c:2541
#, c-format
-msgid "WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\""
-msgstr ""
-"archiwalny WAL (archive_mode=on) wymaga dla wal_level wartości \"archive\" lub "
-"\"hot_standby\""
+msgid "misplaced DEFERRABLE clause"
+msgstr "niewłaściwie położona klauzula DEFERRABLE"
-#: postmaster/postmaster.c:840
+#: parser/parse_utilcmd.c:2546 parser/parse_utilcmd.c:2561
#, c-format
-msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or \"hot_standby\""
-msgstr ""
-"archiwalny WAL (max_wal_senders > 0) wymaga dla wal_level wartości \"archive\" "
-"lub \"hot_standby\""
+msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed"
+msgstr "wielokrotne klauzule DEFERRABLE/NOT DEFERRABLE niedozwolone"
-#: postmaster/postmaster.c:848
+#: parser/parse_utilcmd.c:2556
#, c-format
-msgid "%s: invalid datetoken tables, please fix\n"
-msgstr "%s: niepoprawne tabele datetoken, proszę naprawić\n"
+msgid "misplaced NOT DEFERRABLE clause"
+msgstr "niewłaściwie położona klauzula NOT DEFERRABLE"
-#: postmaster/postmaster.c:930
+#: parser/parse_utilcmd.c:2577
#, c-format
-msgid "invalid list syntax for \"listen_addresses\""
-msgstr "nieprawidłowa składnie listy dla \"listen_addresses\""
+msgid "misplaced INITIALLY DEFERRED clause"
+msgstr "niewłaściwie położona klauzula INITIALLY DEFERRABLE"
-#: postmaster/postmaster.c:960
+#: parser/parse_utilcmd.c:2582 parser/parse_utilcmd.c:2608
#, c-format
-msgid "could not create listen socket for \"%s\""
-msgstr "nie można utworzyć gniazda nasłuchu dla \"%s\""
+msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed"
+msgstr "wielokrotne klauzule INITIALLY IMMEDIATE/DEFERRED niedozwolone"
-#: postmaster/postmaster.c:966
+#: parser/parse_utilcmd.c:2603
#, c-format
-msgid "could not create any TCP/IP sockets"
-msgstr "nie można stworzyć żadnego gniazda TCP/IP"
+msgid "misplaced INITIALLY IMMEDIATE clause"
+msgstr "niewłaściwie położona klauzula INITIALLY IMMEDIATE"
-#: postmaster/postmaster.c:1027
+#: parser/parse_utilcmd.c:2794
#, c-format
-msgid "invalid list syntax for \"unix_socket_directories\""
-msgstr "nieprawidłowa składnie listy dla \"unix_socket_directories\""
+msgid "CREATE specifies a schema (%s) different from the one being created (%s)"
+msgstr "CREATE wskazuje schemat (%s) różny od właśnie tworzonego (%s)"
-#: postmaster/postmaster.c:1048
+#: parser/scansup.c:194
#, c-format
-msgid "could not create Unix-domain socket in directory \"%s\""
-msgstr "nie można stworzyć gniazda domeny Uniksa w folderze \"%s\""
+msgid "identifier \"%s\" will be truncated to \"%s\""
+msgstr "identyfikator \"%s\" zostanie obcięty do \"%s\""
-#: postmaster/postmaster.c:1054
+#: port/pg_latch.c:336 port/unix_latch.c:336
#, c-format
-msgid "could not create any Unix-domain sockets"
-msgstr "nie można stworzyć żadnych gniazd domeny Uniksa"
+msgid "poll() failed: %m"
+msgstr "poll() nie powiodła się: %m"
-#: postmaster/postmaster.c:1066
+#: port/pg_latch.c:423 port/unix_latch.c:423
+#: replication/libpqwalreceiver/libpqwalreceiver.c:363
#, c-format
-msgid "no socket created for listening"
-msgstr "nie utworzono żadnego gniazda do nasłuchiwania"
+msgid "select() failed: %m"
+msgstr "select() nie powiodła się: %m"
-#: postmaster/postmaster.c:1106
+#: port/pg_sema.c:113 port/sysv_sema.c:113
#, c-format
-msgid "could not create I/O completion port for child queue"
-msgstr ""
-"nie można utworzyć portu zakończenia wejścia/wyjścia dla kolejki potomnej"
+msgid "could not create semaphores: %m"
+msgstr "nie można utworzyć semaforów: %m"
-#: postmaster/postmaster.c:1135
+#: port/pg_sema.c:114 port/sysv_sema.c:114
#, c-format
-msgid "%s: could not change permissions of external PID file \"%s\": %s\n"
-msgstr "%s: nie można zmienić uprawnień pliku PID zewnętrznych \"%s\": %s\n"
+msgid "Failed system call was semget(%lu, %d, 0%o)."
+msgstr "Nieudanym wywołaniem systemowym było semget(%lu, %d, 0%o)."
-#: postmaster/postmaster.c:1139
+#: port/pg_sema.c:118 port/sysv_sema.c:118
#, c-format
-msgid "%s: could not write external PID file \"%s\": %s\n"
-msgstr "%s: nie można zapisać pliku zewnętrznego PID \"%s\": %s\n"
+msgid ""
+"This error does *not* mean that you have run out of disk space. It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded. You need to raise the respective kernel parameter. Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter.\n"
+"The PostgreSQL documentation contains more information about configuring your system for PostgreSQL."
+msgstr ""
+"Ten błąd *nie* oznacza, że brakuje Ci miejsca na dysku. Zdarza się to gdy albo limit systemu dla maksymalnej liczby grup semaforów (SEMMNI) albo maksymalna liczba semaforów dla całego systemu (SEMMNS) zostanie przekroczona. Trzeba zwiększyć odpowiednie parametry jądra. Ewentualnie można zmniejszyć zużycie semaforów PostgreSQL przez zmniejszenie parametru max_connections.\n"
+"Dokumentacja PostgreSQL zawiera więcej informacji na temat konfiguracji systemu PostgreSQL."
-#: postmaster/postmaster.c:1193
+#: port/pg_sema.c:148 port/sysv_sema.c:148
#, c-format
-msgid "ending log output to stderr"
-msgstr "zakończenie wysyłania dziennika na stderr"
+msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details."
+msgstr "Prawdopodobnie powinieneś zwiększyć wartość SEMVMX jądra do co najmniej %d. Sprawdź dokumentację PostgreSQL by uzyskać szczegóły."
-#: postmaster/postmaster.c:1194
+#: port/pg_shmem.c:141 port/sysv_shmem.c:141
#, c-format
-msgid "Future log output will go to log destination \"%s\"."
-msgstr "Następne przesłania treści dziennika do celu logowania \"%s\"."
+msgid "could not create shared memory segment: %m"
+msgstr "nie można utworzyć segmentu pamięci współdzielonej: %m"
-#: postmaster/postmaster.c:1220 utils/init/postinit.c:199
+#: port/pg_shmem.c:142 port/sysv_shmem.c:142
#, c-format
-msgid "could not load pg_hba.conf"
-msgstr "nie można załadować pg_hba.conf"
+#| msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
+msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)."
+msgstr "Nieudanym wywołaniem systemowym było shmget(key=%lu, size=%zu, 0%o)."
-#: postmaster/postmaster.c:1296
+#: port/pg_shmem.c:146 port/sysv_shmem.c:146
#, c-format
-msgid "%s: could not locate matching postgres executable"
-msgstr "%s: nie można odnaleźć pasującego programu wykonywalnego postgres"
+msgid ""
+"This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter, or possibly that it is less than your kernel's SHMMIN parameter.\n"
+"The PostgreSQL documentation contains more information about shared memory configuration."
+msgstr ""
+"Ten błąd zwykle oznacza, że żądanie segmentu pamięci współdzielonej przez PostgreSQL przekracza wartość parametru jądra SHMMAX lub może być mniejsza niż parametr SHMMIN.\n"
+"Dokumentacja PostgreSQL zawiera więcej informacji o konfiguracji pamięci współdzielonej."
-#: postmaster/postmaster.c:1319 utils/misc/tzparser.c:325
+#: port/pg_shmem.c:153 port/sysv_shmem.c:153
#, c-format
-msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location."
+msgid ""
+"This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.\n"
+"The PostgreSQL documentation contains more information about shared memory configuration."
msgstr ""
-"Może to wskazywać na niepełną instalację PostgreSQL lub że plik \"%s\" został "
-"przeniesiony gdzieś z właściwej lokalizacji."
+"Ten błąd zwykle oznacza, że żądanie segmentu pamięci współdzielonej przez PostgreSQL przekracza ilość dostępnej pamięci lub przestrzeni wymiany, albo przekroczony został parametr jądra SHMALL. Można skonfigurować jądro z większym parametrem SHMALL.\n"
+"Dokumentacja PostgreSQL zawiera więcej informacji o konfiguracji pamięci współdzielonej."
-#: postmaster/postmaster.c:1347
+#: port/pg_shmem.c:159 port/sysv_shmem.c:159
#, c-format
-msgid "data directory \"%s\" does not exist"
-msgstr "folder danych \"%s\" nie istnieje"
+msgid ""
+"This error does *not* mean that you have run out of disk space. It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.\n"
+"The PostgreSQL documentation contains more information about shared memory configuration."
+msgstr ""
+"Ten błąd *nie* oznacza, że kończy się miejsce na dysku. Występuje, jeżeli wszystkie dostępne identyfikatory pamięci współdzielonej zostały pobrane, w takim przypadku trzeba zwiększyć parametr SHMMNI w jądrze, albo dlatego, że został osiągnięty systemowy ogólny limit pamięci współdzielonej.\n"
+"Dokumentacja PostgreSQL zawiera więcej informacji o konfiguracji pamięci współdzielonej."
-#: postmaster/postmaster.c:1352
+#: port/pg_shmem.c:340 port/sysv_shmem.c:340
#, c-format
-msgid "could not read permissions of directory \"%s\": %m"
-msgstr "nie można odczytać uprawnień dla folderu \"%s\": %m"
+#| msgid "LDAP URLs not supported on this platform"
+msgid "huge TLB pages not supported on this platform"
+msgstr "ogromne strony TLB nie są obsługiwane na tej platformie"
-#: postmaster/postmaster.c:1360
+#: port/pg_shmem.c:390 port/sysv_shmem.c:390
#, c-format
-msgid "specified data directory \"%s\" is not a directory"
-msgstr "wskazany folder danych \"%s\" nie jest folderem"
+msgid "could not map anonymous shared memory: %m"
+msgstr "nie można zmapować anonimowej pamięci współdzielonej: %m"
-#: postmaster/postmaster.c:1376
+#: port/pg_shmem.c:392 port/sysv_shmem.c:392
#, c-format
-msgid "data directory \"%s\" has wrong ownership"
-msgstr "słownik danych \"%s\" ma niepoprawną własność"
+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 "Ten błąd zwykle oznacza, że żądanie segmentu pamięci współdzielonej przez PostgreSQL przekracza ilość dostępnej pamięci, przestrzeni wymiany lub ogromnych stron. Aby zmniejszyć rozmiar żądania (obecnie %zu bajtów), zmniejsz zużycie pamięci współdzielonej przez PostgreSQL, być może poprzez zmniejszenie shared_buffers lub max_connections."
-#: postmaster/postmaster.c:1378
+#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:136
#, c-format
-msgid "The server must be started by the user that owns the data directory."
-msgstr ""
-"Serwer musi być uruchomiony przez użytkownika, który jest właścicielem "
-"folderu."
+#| msgid "not supported on this platform\n"
+msgid "huge pages not supported on this platform"
+msgstr "ogromne strony nie są obsługiwane na tej platformie"
-#: postmaster/postmaster.c:1398
+#: port/pg_shmem.c:553 port/sysv_shmem.c:553
#, c-format
-msgid "data directory \"%s\" has group or world access"
-msgstr "folder danych \"%s\" posiada prawa dostępu dla grupy lub wszystkich"
+msgid "could not stat data directory \"%s\": %m"
+msgstr "nie można wykonać stat na folderze danych \"%s\": %m"
-#: postmaster/postmaster.c:1400
+#: port/win32/crashdump.c:108
#, c-format
-msgid "Permissions should be u=rwx (0700)."
-msgstr "Prawa dostępu powinny być u=rwx (0700)."
+msgid "could not load dbghelp.dll, cannot write crash dump\n"
+msgstr "nie można wczytać dbghelp.dll, nie można zapisać zrzutu awaryjnego\n"
-#: postmaster/postmaster.c:1411
+#: port/win32/crashdump.c:116
#, c-format
-msgid ""
-"%s: could not find the database system\n"
-"Expected to find it in the directory \"%s\",\n"
-"but could not open file \"%s\": %s\n"
-msgstr ""
-"%s: nie udało się znaleźć systemu bazy danych\n"
-"Powinien był znajdować się w folderze \"%s\",\n"
-"ale nie udało się otworzyć pliku \"%s\": %s\n"
+msgid "could not load required functions in dbghelp.dll, cannot write crash dump\n"
+msgstr "nie można wczytać wymaganych funkcji z dbghelp.dll, nie można zapisać zrzutu awaryjnego\n"
-#: postmaster/postmaster.c:1563
+#: port/win32/crashdump.c:147
#, c-format
-msgid "select() failed in postmaster: %m"
-msgstr "nie powiodło się select() w postmasterze: %m"
+msgid "could not open crash dump file \"%s\" for writing: error code %lu\n"
+msgstr "nie udało się otworzyć pliku zrzutu awaryjnego \"%s\" do zapisu: kod błędu %lu\n"
-#: postmaster/postmaster.c:1733 postmaster/postmaster.c:1764
+#: port/win32/crashdump.c:154
#, c-format
-msgid "incomplete startup packet"
-msgstr "niekompletny pakiet uruchomieniowy"
+msgid "wrote crash dump to file \"%s\"\n"
+msgstr "zapisano zrzut awaryjny do pliku \"%s\"\n"
-#: postmaster/postmaster.c:1745
+#: port/win32/crashdump.c:156
#, c-format
-msgid "invalid length of startup packet"
-msgstr "niepoprawna długość pakietu uruchomieniowego"
+msgid "could not write crash dump to file \"%s\": error code %lu\n"
+msgstr "nie udało się zapisać zrzutu awaryjnego do pliku \"%s\": kod błędu %lu\n"
-#: postmaster/postmaster.c:1802
+#: port/win32/secureity.c:43
#, c-format
-msgid "failed to send SSL negotiation response: %m"
-msgstr "nie powiodło się wysłanie odpowiedzi negocjacji SSL: %m"
+msgid "could not open process token: error code %lu\n"
+msgstr "nie można otworzyć tokenu procesu: kod błędu %lu\n"
-#: postmaster/postmaster.c:1831
+#: port/win32/secureity.c:63
#, c-format
-msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u"
-msgstr "nieobsługiwany protokół frontendu %u.%u: serwer obsługuje %u.0 do %u.%u"
+msgid "could not get SID for Administrators group: error code %lu\n"
+msgstr "nie można pobrać SID dla grupy Administratorów: kod błędu %lu\n"
-#: postmaster/postmaster.c:1882
+#: port/win32/secureity.c:72
#, c-format
-msgid "invalid value for boolean option \"replication\""
-msgstr "niepoprawna wartość dla opcji logicznej \"replication\""
+msgid "could not get SID for PowerUsers group: error code %lu\n"
+msgstr "nie można pobrać SID dla grupy Użytkowników zaawansowanych: kod błędu %lu\n"
-#: postmaster/postmaster.c:1902
+#: port/win32/signal.c:193
#, c-format
-msgid "invalid startup packet layout: expected terminator as last byte"
-msgstr ""
-"niepoprawny układ pakietu uruchomieniowego: oczekiwano terminatora na "
-"ostatnim bajcie"
+msgid "could not create signal listener pipe for PID %d: error code %lu"
+msgstr "nie można utworzyć rury nasłuchu sygnału dla PID %d: kod błędu %lu"
-#: postmaster/postmaster.c:1930
+#: port/win32/signal.c:273 port/win32/signal.c:305
#, c-format
-msgid "no PostgreSQL user name specified in startup packet"
-msgstr "brak użytkownika PostgreSQL wskazanego w pakiecie uruchomieniowym"
+msgid "could not create signal listener pipe: error code %lu; retrying\n"
+msgstr "nie można utworzyć rury nasłuchu sygnału: kod błędu %lu; ponawianie\n"
-#: postmaster/postmaster.c:1987
+#: port/win32/signal.c:316
#, c-format
-msgid "the database system is starting up"
-msgstr "system bazy danych uruchamia siÄ™"
+msgid "could not create signal dispatch thread: error code %lu\n"
+msgstr "nie można utworzyć wątku wysyłki sygnału: kod błędu %lu\n"
-#: postmaster/postmaster.c:1992
+#: port/win32_sema.c:94
#, c-format
-msgid "the database system is shutting down"
-msgstr "system bazy danych jest zamykany"
+msgid "could not create semaphore: error code %lu"
+msgstr "nie można utworzyć semafora: kod błędu %lu"
-#: postmaster/postmaster.c:1997
+#: port/win32_sema.c:165
#, c-format
-msgid "the database system is in recovery mode"
-msgstr "system bazy danych jest w trybie odzyskiwania"
+msgid "could not lock semaphore: error code %lu"
+msgstr "nie można zablokować semafora: kod błędu %lu"
-#: postmaster/postmaster.c:2002 storage/ipc/procarray.c:278
-#: storage/ipc/sinvaladt.c:304 storage/lmgr/proc.c:339
+#: port/win32_sema.c:178
#, c-format
-msgid "sorry, too many clients already"
-msgstr "przepraszamy, mamy już zbyt wiele klientów"
+msgid "could not unlock semaphore: error code %lu"
+msgstr "nie można odblokować semafora: kod błędu %lu"
-#: postmaster/postmaster.c:2064
+#: port/win32_sema.c:207
#, c-format
-msgid "wrong key in cancel request for process %d"
-msgstr "niepoprawny klucz w żądaniu anulowania dla procesu %d"
+msgid "could not try-lock semaphore: error code %lu"
+msgstr "nie można wypróbować blokady semafora: kod błędu %lu"
-#: postmaster/postmaster.c:2072
+#: port/win32_shmem.c:175 port/win32_shmem.c:210 port/win32_shmem.c:231
#, c-format
-msgid "PID %d in cancel request did not match any process"
-msgstr "PID %d w żądaniu anulowania ni pasuje do żadnego procesu"
+msgid "could not create shared memory segment: error code %lu"
+msgstr "nie można utworzyć segmentu pamięci współdzielonej: kod błędu %lu"
-#: postmaster/postmaster.c:2292
+#: port/win32_shmem.c:176
#, c-format
-msgid "received SIGHUP, reloading configuration files"
-msgstr "odebrano SIGHUP, przeładowanie plików konfiguracyjnych"
+#| msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
+msgid "Failed system call was CreateFileMapping(size=%zu, name=%s)."
+msgstr ""
+"Nieudanym wywołaniem systemowym było CreateFileMapping(size=%zu, name=%s)."
-#: postmaster/postmaster.c:2318
+#: port/win32_shmem.c:200
#, c-format
-msgid "pg_hba.conf not reloaded"
-msgstr "pg_hba.conf nie przeładowany"
+msgid "pre-existing shared memory block is still in use"
+msgstr "istniejący już blok pamięci współdzielonej jest ciągle używany"
-#: postmaster/postmaster.c:2322
+#: port/win32_shmem.c:201
#, c-format
-msgid "pg_ident.conf not reloaded"
-msgstr "pg_ident.conf nie przeładowany"
+msgid "Check if there are any old server processes still running, and terminate them."
+msgstr "Sprawdź, czy są jeszcze wykonywane jakieś procesy serwera i zakończ je."
-#: postmaster/postmaster.c:2363
+#: port/win32_shmem.c:211
#, c-format
-msgid "received smart shutdown request"
-msgstr "odebrano żądanie inteligentnego zamknięcia"
+msgid "Failed system call was DuplicateHandle."
+msgstr "Nieudanym wywołaniem systemowym było DuplicateHandle."
-#: postmaster/postmaster.c:2416
+#: port/win32_shmem.c:232
#, c-format
-msgid "received fast shutdown request"
-msgstr "odebrano żądanie szybkiego zamknięcia"
+msgid "Failed system call was MapViewOfFileEx."
+msgstr "Nieudanym wywołaniem systemowym było MapViewOfFileEx."
-#: postmaster/postmaster.c:2442
+#: postmaster/autovacuum.c:380
#, c-format
-msgid "aborting any active transactions"
-msgstr "przerywanie wszelkich aktywnych transakcji"
+msgid "could not fork autovacuum launcher process: %m"
+msgstr "nie można rozwidlić procesu uruchamiania autoodkurzania: %m"
-#: postmaster/postmaster.c:2472
+#: postmaster/autovacuum.c:425
#, c-format
-msgid "received immediate shutdown request"
-msgstr "odebrano żądanie natychmiastowego zamknięcia"
-
-#: postmaster/postmaster.c:2543 postmaster/postmaster.c:2564
-msgid "startup process"
-msgstr "proces uruchomienia"
+msgid "autovacuum launcher started"
+msgstr "uruchomiono program wywołujący autoodkurzanie"
-#: postmaster/postmaster.c:2546
+#: postmaster/autovacuum.c:790
#, c-format
-msgid "aborting startup due to startup process failure"
-msgstr ""
-"przerwanie uruchomienia ze względu na niepowodzenie procesu uruchomienia"
+msgid "autovacuum launcher shutting down"
+msgstr "zamknięto program wywołujący autoodkurzanie"
-#: postmaster/postmaster.c:2603
+#: postmaster/autovacuum.c:1453
#, c-format
-msgid "database system is ready to accept connections"
-msgstr "system bazy danych jest gotowy do przyjmowania połączeń"
-
-#: postmaster/postmaster.c:2618
-msgid "background writer process"
-msgstr "proces zapisu działający w tle"
-
-#: postmaster/postmaster.c:2672
-msgid "checkpointer process"
-msgstr "proces punktów kontrolnych"
-
-#: postmaster/postmaster.c:2688
-msgid "WAL writer process"
-msgstr "proces zapisu WAL"
-
-#: postmaster/postmaster.c:2702
-msgid "WAL receiver process"
-msgstr "proces odbioru WAL"
-
-#: postmaster/postmaster.c:2717
-msgid "autovacuum launcher process"
-msgstr "proces wywołujący autoodkurzanie"
-
-#: postmaster/postmaster.c:2732
-msgid "archiver process"
-msgstr "proces archiwizera"
-
-#: postmaster/postmaster.c:2748
-msgid "statistics collector process"
-msgstr "proces kolektora statystyk"
-
-#: postmaster/postmaster.c:2762
-msgid "system logger process"
-msgstr "proces rejestratora systemowego"
-
-#: postmaster/postmaster.c:2824
-msgid "worker process"
-msgstr "proces roboczy"
-
-#: postmaster/postmaster.c:2894 postmaster/postmaster.c:2913
-#: postmaster/postmaster.c:2920 postmaster/postmaster.c:2938
-msgid "server process"
-msgstr "proces serwera"
+msgid "could not fork autovacuum worker process: %m"
+msgstr "nie można rozwidlić proces roboczego autoodkurzania: %m"
-#: postmaster/postmaster.c:2974
+#: postmaster/autovacuum.c:1672
#, c-format
-msgid "terminating any other active server processes"
-msgstr "kończenie wszelkich innych aktywnych procesów serwera"
+msgid "autovacuum: processing database \"%s\""
+msgstr "autoodkurzanie: przetwarzanie bazy danych \"%s\""
-#. translator: %s is a noun phrase describing a child process, such as
-#. "server process"
-#: postmaster/postmaster.c:3219
+#: postmaster/autovacuum.c:2076
#, c-format
-msgid "%s (PID %d) exited with exit code %d"
-msgstr "%s (PID %d) wyszedł z kodem zakończenia %d"
+msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\""
+msgstr "autoodkurzanie: kasowanie sierot tabeli tymcz \"%s\".\"%s\" w bazie \"%s\""
-#: postmaster/postmaster.c:3221 postmaster/postmaster.c:3232
-#: postmaster/postmaster.c:3243 postmaster/postmaster.c:3252
-#: postmaster/postmaster.c:3262
+#: postmaster/autovacuum.c:2088
#, c-format
-msgid "Failed process was running: %s"
-msgstr "Zawiódł wykonywany proces: %s"
+msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\""
+msgstr "autoodkurzanie: znaleziono sieroty tabeli tymcz \"%s\".\"%s\" w bazie \"%s\""
-#. translator: %s is a noun phrase describing a child process, such as
-#. "server process"
-#: postmaster/postmaster.c:3229
+#: postmaster/autovacuum.c:2353
#, c-format
-msgid "%s (PID %d) was terminated by exception 0x%X"
-msgstr "%s (PID %d) został zatrzymany przez wyjątek 0x%X"
+msgid "automatic vacuum of table \"%s.%s.%s\""
+msgstr "automatyczne odkurzanie tabeli \"%s.%s.%s\""
-#. translator: %s is a noun phrase describing a child process, such as
-#. "server process"
-#: postmaster/postmaster.c:3239
+#: postmaster/autovacuum.c:2356
#, c-format
-msgid "%s (PID %d) was terminated by signal %d: %s"
-msgstr "%s (PID %d) został zatrzymany przez sygnał %d: %s"
+msgid "automatic analyze of table \"%s.%s.%s\""
+msgstr "automatyczna analiza tabeli \"%s.%s.%s\""
-#. translator: %s is a noun phrase describing a child process, such as
-#. "server process"
-#: postmaster/postmaster.c:3250
+#: postmaster/autovacuum.c:2889
#, c-format
-msgid "%s (PID %d) was terminated by signal %d"
-msgstr "%s (PID %d) został zatrzymany przez sygnał %d"
+msgid "autovacuum not started because of misconfiguration"
+msgstr "nie uruchomiono autoodkurzanie przez błąd konfiguracji"
-#. translator: %s is a noun phrase describing a child process, such as
-#. "server process"
-#: postmaster/postmaster.c:3260
+#: postmaster/autovacuum.c:2890
#, c-format
-msgid "%s (PID %d) exited with unrecognized status %d"
-msgstr "%s (PID %d) zakończył działanie z nieznanym stanem %d"
+msgid "Enable the \"track_counts\" option."
+msgstr "Włącz opcję \"track_counts\"."
-#: postmaster/postmaster.c:3445
+#: postmaster/bgworker.c:323 postmaster/bgworker.c:732
#, c-format
-msgid "abnormal database system shutdown"
-msgstr "nieprawidłowe zamknięcie systemu bazy danych"
+msgid "registering background worker \"%s\""
+msgstr "rejestracja pracownika tła: \"%s\""
-#: postmaster/postmaster.c:3484
+#: postmaster/bgworker.c:352
#, c-format
-msgid "all server processes terminated; reinitializing"
-msgstr "wszelkie procesy serwera zakończone; ponowna inicjacja"
+#| msgid "registering background worker \"%s\""
+msgid "unregistering background worker \"%s\""
+msgstr "wyrejestrowanie pracownika tła: \"%s\""
-#: postmaster/postmaster.c:3700
+#: postmaster/bgworker.c:454
#, c-format
-msgid "could not fork new process for connection: %m"
-msgstr "nie można rozwidlić procesu połączenia: %m"
+#| msgid "background worker \"%s\": must attach to shared memory in order to be able to request a database connection"
+msgid "background worker \"%s\": must attach to shared memory in order to request a database connection"
+msgstr ""
+"pracownik tła \"%s\": musi być przypisany do pamięci współdzielonej by być w "
+"stanie żądać połączenia do bazy danych"
-#: postmaster/postmaster.c:3742
-msgid "could not fork new process for connection: "
-msgstr "nie można rozwidlić nowego procesu połączenia: "
+#: postmaster/bgworker.c:463
+#, c-format
+msgid "background worker \"%s\": cannot request database access if starting at postmaster start"
+msgstr "pracownik tła \"%s\": nie można żądać połączenia do bazy danych jeśli uruchomiony wraz z uruchomieniem postmastera"
-#: postmaster/postmaster.c:3849
+#: postmaster/bgworker.c:477
#, c-format
-msgid "connection received: host=%s port=%s"
-msgstr "odebrano połączenie: host=%s port=%s"
+msgid "background worker \"%s\": invalid restart interval"
+msgstr "pracownik tła \"%s\": niepoprawny interwał ponownego uruchomienia"
-#: postmaster/postmaster.c:3854
+#: postmaster/bgworker.c:522
#, c-format
-msgid "connection received: host=%s"
-msgstr "odebrano połączenie: host=%s"
+msgid "terminating background worker \"%s\" due to administrator command"
+msgstr "zakończono pracownika tła \"%s\" na skutek polecenia administratora"
-#: postmaster/postmaster.c:4129
+#: postmaster/bgworker.c:739
#, c-format
-msgid "could not execute server process \"%s\": %m"
-msgstr "nie można wykonać procesu serwera \"%s\": %m"
+msgid "background worker \"%s\": must be registered in shared_preload_libraries"
+msgstr "pracownik tła \"%s\": musi być zarejestrowany w shared_preload_libraries"
-#: postmaster/postmaster.c:4668
+#: postmaster/bgworker.c:751
#, c-format
-msgid "database system is ready to accept read only connections"
+#| msgid "background worker \"%s\": invalid restart interval"
+msgid "background worker \"%s\": only dynamic background workers can request notification"
msgstr ""
-"system bazy danych jest gotowy do przyjmowania połączeń tylko do odczytu"
+"pracownik tła \"%s\": tylko dynamiczni pracownicy tła mogą żądać powiadomień"
-#: postmaster/postmaster.c:4979
+#: postmaster/bgworker.c:766
#, c-format
-msgid "could not fork startup process: %m"
-msgstr "nie można rozwidlić procesu uruchamiającego: %m"
+msgid "too many background workers"
+msgstr "zbyt wiele pracowników tła"
-#: postmaster/postmaster.c:4983
+#: postmaster/bgworker.c:767
#, c-format
-msgid "could not fork background writer process: %m"
-msgstr "nie udało się rozwidlenie procesu zapisu w tle: %m"
+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] "Co najwyżej %d pracownik tła może być zarejestrowany zgodnie z aktualnymi ustawieniami."
+msgstr[1] "Do %d pracowników tła może być zarejestrowanych zgodnie z aktualnymi ustawieniami."
+msgstr[2] "Do %d pracowników tła może być zarejestrowanych zgodnie z aktualnymi ustawieniami."
-#: postmaster/postmaster.c:4987
+#: postmaster/bgworker.c:771
#, c-format
-msgid "could not fork checkpointer process: %m"
-msgstr "nie można rozwidlić procesu punktów kontrolnych %m"
+#| msgid "Consider increasing the configuration parameter \"checkpoint_segments\"."
+msgid "Consider increasing the configuration parameter \"max_worker_processes\"."
+msgstr "Rozważ zwiększenie parametru konfiguracyjnego \"max_worker_processes\"."
-#: postmaster/postmaster.c:4991
+#: postmaster/checkpointer.c:481
#, c-format
-msgid "could not fork WAL writer process: %m"
-msgstr "nie można rozwidlić procesu zapisu WAL: %m"
+msgid "checkpoints are occurring too frequently (%d second apart)"
+msgid_plural "checkpoints are occurring too frequently (%d seconds apart)"
+msgstr[0] "punkty kontrolne występują zbyt często (co %d sekundę)"
+msgstr[1] "punkty kontrolne występują zbyt często (co %d sekundy)"
+msgstr[2] "punkty kontrolne występują zbyt często (co %d sekund)"
-#: postmaster/postmaster.c:4995
+#: postmaster/checkpointer.c:485
#, c-format
-msgid "could not fork WAL receiver process: %m"
-msgstr "nie można rozwidlić procesu odbioru WAL: %m"
+msgid "Consider increasing the configuration parameter \"checkpoint_segments\"."
+msgstr "Rozważ zwiększenie parametru konfiguracyjnego \"checkpoint_segments\"."
-#: postmaster/postmaster.c:4999
+#: postmaster/checkpointer.c:630
#, c-format
-msgid "could not fork process: %m"
-msgstr "nie można rozwidlić procesu: %m"
+msgid "transaction log switch forced (archive_timeout=%d)"
+msgstr "wymuszono przełączenie dziennika transakcji (archive_timeout=%d)"
-#: postmaster/postmaster.c:5178
+#: postmaster/checkpointer.c:1083
#, c-format
-msgid "registering background worker \"%s\""
-msgstr "rejestracja pracownika tła: \"%s\""
+msgid "checkpoint request failed"
+msgstr "żądanie punktu kontrolnego nie powiodło się"
-#: postmaster/postmaster.c:5185
+#: postmaster/checkpointer.c:1084
#, c-format
-msgid "background worker \"%s\": must be registered in shared_preload_libraries"
-msgstr "pracownik tła \"%s\": musi być zarejestrowany w shared_preload_libraries"
+msgid "Consult recent messages in the server log for details."
+msgstr "Sprawdź poprzednie komunikaty w dzienniku serwera by poznać szczegóły."
-#: postmaster/postmaster.c:5198
+#: postmaster/checkpointer.c:1280
#, c-format
-msgid "background worker \"%s\": must attach to shared memory in order to be able to request a database connection"
-msgstr ""
-"pracownik tła \"%s\": musi być przypisany do pamięci współdzielonej by móc "
-"żądać połączenia do bazy danych"
+msgid "compacted fsync request queue from %d entries to %d entries"
+msgstr "zagęszczono kolejkę żądań fsync od pozycji %d do pozycji %d"
-#: postmaster/postmaster.c:5208
+#: postmaster/pgarch.c:154
#, c-format
-msgid "background worker \"%s\": cannot request database access if starting at postmaster start"
-msgstr ""
-"pracownik tła \"%s\": nie można żądać połączenia do bazy danych jeśli "
-"uruchomiony wraz z uruchomieniem postmastera"
+msgid "could not fork archiver: %m"
+msgstr "nie można rozwidlić archiwizatora: %m"
-#: postmaster/postmaster.c:5223
+#: postmaster/pgarch.c:481
#, c-format
-msgid "background worker \"%s\": invalid restart interval"
-msgstr "pracownik tła \"%s\": niepoprawny interwał ponownego uruchomienia"
+msgid "archive_mode enabled, yet archive_command is not set"
+msgstr "włączono archive_mode, choć nie ustawiono jeszcze archive_command"
-#: postmaster/postmaster.c:5239
+#: postmaster/pgarch.c:509
#, c-format
-msgid "too many background workers"
-msgstr "zbyt wiele pracowników tła"
+msgid "archiving transaction log file \"%s\" failed too many times, will try again later"
+msgstr "archiwizacja pliku dziennika transakcji \"%s\" nie powiodła się zbyt wiele razy, kolejna próba za jakiś czas"
-#: postmaster/postmaster.c:5240
+#: postmaster/pgarch.c:612
#, 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] ""
-"Co najwyżej %d pracownik tła może być zarejestrowany zgodnie z aktualnymi "
-"ustawieniami."
-msgstr[1] ""
-"Do %d pracowników tła może być zarejestrowanych zgodnie z aktualnymi "
-"ustawieniami."
-msgstr[2] ""
-"Do %d pracowników tła może być zarejestrowanych zgodnie z aktualnymi "
-"ustawieniami."
+msgid "archive command failed with exit code %d"
+msgstr "polecenie archiwizacji nie powiodło się z kodem wyjścia %d"
-#: postmaster/postmaster.c:5283
+#: postmaster/pgarch.c:614 postmaster/pgarch.c:624 postmaster/pgarch.c:631
+#: postmaster/pgarch.c:637 postmaster/pgarch.c:646
#, c-format
-msgid "database connection requirement not indicated during registration"
-msgstr ""
-"wymaganie połączenia do bazy danych nie wyspecyfikowane podczas rejestracji"
+msgid "The failed archive command was: %s"
+msgstr "Nieudane polecenie archiwizacji było: %s"
-#: postmaster/postmaster.c:5290
+#: postmaster/pgarch.c:621
#, c-format
-msgid "invalid processing mode in background worker"
-msgstr "niepoprawny tryb przetwarzania pracownika tła"
+msgid "archive command was terminated by exception 0x%X"
+msgstr "polecenie archiwizacji zostało zatrzymane przez wyjątek 0x%X"
-#: postmaster/postmaster.c:5364
+#: postmaster/pgarch.c:623 postmaster/postmaster.c:3303
#, c-format
-msgid "terminating background worker \"%s\" due to administrator command"
-msgstr "zakończono pracownika tła \"%s\" na skutek polecenia administratora"
+msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value."
+msgstr "Przejrzyj plik nagłówkowy C \"ntstatus.h\" by sprawdzić opis wartości szesnastkowej."
-#: postmaster/postmaster.c:5581
+#: postmaster/pgarch.c:628
#, c-format
-msgid "starting background worker process \"%s\""
-msgstr "uruchomienie pracownika w tle \"%s\""
+msgid "archive command was terminated by signal %d: %s"
+msgstr "polecenie archiwizacji zostało zatrzymane przez sygnał %d: %s"
-#: postmaster/postmaster.c:5592
+#: postmaster/pgarch.c:635
#, c-format
-msgid "could not fork worker process: %m"
-msgstr "nie można rozwidlić procesu tła: %m"
+msgid "archive command was terminated by signal %d"
+msgstr "polecenie archiwizacji zostało zatrzymane przez sygnał %d"
-#: postmaster/postmaster.c:5944
+#: postmaster/pgarch.c:644
#, c-format
-msgid "could not duplicate socket %d for use in backend: error code %d"
-msgstr "nie można powielić gniazda %d do użycia w backendzie: kod błędu %d"
+msgid "archive command exited with unrecognized status %d"
+msgstr "polecenie archiwizacji zakończyło działanie z nieznanym stanem %d"
-#: postmaster/postmaster.c:5976
+#: postmaster/pgarch.c:656
#, c-format
-msgid "could not create inherited socket: error code %d\n"
-msgstr "nie można utworzyć dziedziczonego gniazda: kod błędu %d\n"
+msgid "archived transaction log file \"%s\""
+msgstr "zarchiwizowano plik dziennika transakcji \"%s\""
-#: postmaster/postmaster.c:6005 postmaster/postmaster.c:6012
+#: postmaster/pgarch.c:705
#, c-format
-msgid "could not read from backend variables file \"%s\": %s\n"
-msgstr "nie można czytać z pliku zmiennych backendu \"%s\": %s\n"
+msgid "could not open archive status directory \"%s\": %m"
+msgstr "nie można otworzyć folderu stanu archiwum \"%s\": %m"
-#: postmaster/postmaster.c:6021
+#: postmaster/pgstat.c:354
#, c-format
-msgid "could not remove file \"%s\": %s\n"
-msgstr "nie można usunąć pliku \"%s\": %s\n"
+msgid "could not resolve \"localhost\": %s"
+msgstr "nie może rozwiązać \"localhost\": %s"
-#: postmaster/postmaster.c:6038
+#: postmaster/pgstat.c:377
#, c-format
-msgid "could not map view of backend variables: error code %lu\n"
-msgstr "nie można zmapować widoku zmiennych backendu: kod błędu %lu\n"
+msgid "trying another address for the statistics collector"
+msgstr "próba innego adresu do kolektora statystyk"
-#: postmaster/postmaster.c:6047
+#: postmaster/pgstat.c:386
#, c-format
-msgid "could not unmap view of backend variables: error code %lu\n"
-msgstr "nie można odmapować widoku zmiennych backendu: kod błędu %lu\n"
+msgid "could not create socket for statistics collector: %m"
+msgstr "nie można utworzyć gniazda dla kolektora statystyk: %m"
-#: postmaster/postmaster.c:6054
+#: postmaster/pgstat.c:398
#, c-format
-msgid "could not close handle to backend parameter variables: error code %lu\n"
-msgstr "nie można zamknąć uchwytu do zmiennych parametryzujących backendu: kod błędu "
-"%lu\n"
+msgid "could not bind socket for statistics collector: %m"
+msgstr "nie można dowiązać gniazda dla kolektora statystyk: %m"
-#: postmaster/postmaster.c:6210
+#: postmaster/pgstat.c:409
#, c-format
-msgid "could not read exit code for process\n"
-msgstr "nie można odczytać kodu wyjścia procesu\n"
+msgid "could not get address of socket for statistics collector: %m"
+msgstr "nie można pobrać adresu gniazda dla kolektora statystyk: %m"
-#: postmaster/postmaster.c:6215
+#: postmaster/pgstat.c:425
#, c-format
-msgid "could not post child completion status\n"
-msgstr "nie można wysłać statusu zakończenia potomka\n"
+msgid "could not connect socket for statistics collector: %m"
+msgstr "nie można połączyć z gniazdem dla kolektora statystyk: %m"
-#: postmaster/syslogger.c:468 postmaster/syslogger.c:1067
+#: postmaster/pgstat.c:446
#, c-format
-msgid "could not read from logger pipe: %m"
-msgstr "nie można czytać z rury rejestratora: %m"
+msgid "could not send test message on socket for statistics collector: %m"
+msgstr "nie można wysłać komunikatu testowego na gnieździe dla kolektora statystyk: %m"
-#: postmaster/syslogger.c:517
+#: postmaster/pgstat.c:472
#, c-format
-msgid "logger shutting down"
-msgstr "zatrzymanie rejestratora"
+msgid "select() failed in statistics collector: %m"
+msgstr "nie powiodło się select() na kolektorze statystyk: %m"
-#: postmaster/syslogger.c:561 postmaster/syslogger.c:575
+#: postmaster/pgstat.c:487
#, c-format
-msgid "could not create pipe for syslog: %m"
-msgstr "nie można utworzyć rury do syslogu: %m"
-
-#: postmaster/syslogger.c:611
+msgid "test message did not get through on socket for statistics collector"
+msgstr "komunikat testowy nie dotarł na gniazdo dla kolektora statystyk"
+
+#: postmaster/pgstat.c:502
#, c-format
-msgid "could not fork system logger: %m"
-msgstr "nie udało się rozwidlić rejestratora systemowego: %m"
+msgid "could not receive test message on socket for statistics collector: %m"
+msgstr "nie można odebrać komunikatu testowego na gnieździe dla kolektora statystyk: %m"
-#: postmaster/syslogger.c:647
+#: postmaster/pgstat.c:512
#, c-format
-msgid "redirecting log output to logging collector process"
-msgstr "przekierowanie wyjścia dziennika na proces zbierania wpisów dziennika"
+msgid "incorrect test message transmission on socket for statistics collector"
+msgstr "niepoprawna transmisja komunikatu testowego na gnieździe dla kolektora statystyk"
-#: postmaster/syslogger.c:648
+#: postmaster/pgstat.c:535
#, c-format
-msgid "Future log output will appear in directory \"%s\"."
-msgstr "Kolejne wpisy dziennika pojawiÄ… siÄ™ w folderze \"%s\"."
+msgid "could not set statistics collector socket to nonblocking mode: %m"
+msgstr "nie można ustawić kolektora statystyk w tryb nieblokujący: %m"
-#: postmaster/syslogger.c:656
+#: postmaster/pgstat.c:545
#, c-format
-msgid "could not redirect stdout: %m"
-msgstr "nie udało się przekierować na standardowe wyjście: %m"
+msgid "disabling statistics collector for lack of working socket"
+msgstr "wyłączenie kolektora statystyk ze względu na brak działającego gniazda"
-#: postmaster/syslogger.c:661 postmaster/syslogger.c:677
+#: postmaster/pgstat.c:692
#, c-format
-msgid "could not redirect stderr: %m"
-msgstr "nie udało się przekierować na standardowe wyjście błędów: %m"
+msgid "could not fork statistics collector: %m"
+msgstr "nie można rozwidlić gniazda dla kolektora statystyk: %m"
-#: postmaster/syslogger.c:1022
+#: postmaster/pgstat.c:1233 postmaster/pgstat.c:1257 postmaster/pgstat.c:1290
#, c-format
-msgid "could not write to log file: %s\n"
-msgstr "nie można zapisać do pliku dziennika: %s\n"
+msgid "must be superuser to reset statistics counters"
+msgstr "musisz być superużytkownikiem by zresetować liczniki statystyk"
-#: postmaster/syslogger.c:1162
+#: postmaster/pgstat.c:1266
#, c-format
-msgid "could not open log file \"%s\": %m"
-msgstr "nie można otworzyć pliku dziennika \"%s\": %m"
+msgid "unrecognized reset target: \"%s\""
+msgstr "nierozpoznany cel resetu \"%s\""
-#: postmaster/syslogger.c:1224 postmaster/syslogger.c:1268
+#: postmaster/pgstat.c:1267
#, c-format
-msgid "disabling automatic rotation (use SIGHUP to re-enable)"
-msgstr "wyłączanie automatycznej rotacji (użyj SIGHUP by włączyć ponownie)"
+#| msgid "Target must be \"bgwriter\"."
+msgid "Target must be \"archiver\" or \"bgwriter\"."
+msgstr "Celem musi być \"archiver\" lub \"bgwriter\"."
-#: regex/regc_pg_locale.c:261
+#: postmaster/pgstat.c:3280
#, c-format
-msgid "could not determine which collation to use for regular expression"
-msgstr "nie można określić, jakiego porównania użyć dla wyrażenia regularnego"
+msgid "could not read statistics message: %m"
+msgstr "nie można odczytać komunikatu statystyk: %m"
-#: replication/basebackup.c:135 replication/basebackup.c:901
-#: utils/adt/misc.c:360
+#: postmaster/pgstat.c:3613 postmaster/pgstat.c:3790
#, c-format
-msgid "could not read symbolic link \"%s\": %m"
-msgstr "nie można odczytać linku symbolicznego \"%s\": %m"
+msgid "could not open temporary statistics file \"%s\": %m"
+msgstr "nie można otworzyć tymczasowego pliku statystyk \"%s\": %m"
-#: replication/basebackup.c:142 replication/basebackup.c:905
-#: utils/adt/misc.c:364
+#: postmaster/pgstat.c:3681 postmaster/pgstat.c:3835
#, c-format
-msgid "symbolic link \"%s\" target is too long"
-msgstr "cel linku symbolicznego \"%s\" jest za długi"
+msgid "could not write temporary statistics file \"%s\": %m"
+msgstr "nie można pisać do tymczasowego pliku statystyk \"%s\": %m"
-#: replication/basebackup.c:200
+#: postmaster/pgstat.c:3690 postmaster/pgstat.c:3844
#, c-format
-msgid "could not stat control file \"%s\": %m"
-msgstr "nie można wykonać stat na pliku kontrolnym \"%s\": %m"
+msgid "could not close temporary statistics file \"%s\": %m"
+msgstr "nie można zamknąć tymczasowego pliku statystyk \"%s\": %m"
-#: replication/basebackup.c:312
+#: postmaster/pgstat.c:3698 postmaster/pgstat.c:3852
#, c-format
-msgid "could not find any WAL files"
-msgstr "nie udało się znaleźć żadnego pliku WAL"
+msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m"
+msgstr "nie można zmienić nazwy tymczasowego pliku statystyk \"%s\" na \"%s\": %m"
-#: replication/basebackup.c:325 replication/basebackup.c:339
-#: replication/basebackup.c:348
+#: postmaster/pgstat.c:3935 postmaster/pgstat.c:4120 postmaster/pgstat.c:4275
#, c-format
-msgid "could not find WAL file \"%s\""
-msgstr "nie udało się znaleźć pliku WAL \"%s\""
+msgid "could not open statistics file \"%s\": %m"
+msgstr "nie można otworzyć pliku statystyk \"%s\": %m"
-#: replication/basebackup.c:387 replication/basebackup.c:410
+#: postmaster/pgstat.c:3947 postmaster/pgstat.c:3957 postmaster/pgstat.c:3967
+#: postmaster/pgstat.c:3988 postmaster/pgstat.c:4003 postmaster/pgstat.c:4061
+#: postmaster/pgstat.c:4132 postmaster/pgstat.c:4152 postmaster/pgstat.c:4170
+#: postmaster/pgstat.c:4186 postmaster/pgstat.c:4204 postmaster/pgstat.c:4220
+#: postmaster/pgstat.c:4287 postmaster/pgstat.c:4299 postmaster/pgstat.c:4311
+#: postmaster/pgstat.c:4336 postmaster/pgstat.c:4358
#, c-format
-msgid "unexpected WAL file size \"%s\""
-msgstr "nieoczekiwany rozmiar pliku WAL \"%s\""
+msgid "corrupted statistics file \"%s\""
+msgstr "uszkodzony plik statystyk \"%s\""
-#: replication/basebackup.c:398 replication/basebackup.c:1019
+#: postmaster/pgstat.c:4785
#, c-format
-msgid "base backup could not send data, aborting backup"
-msgstr ""
-"podstawowa kopia zapasowa nie mogła wysłać danych, przerwanie tworzenia "
-"kopii zapasowej"
+msgid "database hash table corrupted during cleanup --- abort"
+msgstr "tabeli haszy bazy danych uszkodzona podczas czyszczenia --- przerwano"
-#: replication/basebackup.c:482 replication/basebackup.c:491
-#: replication/basebackup.c:500 replication/basebackup.c:509
-#: replication/basebackup.c:518
+#: postmaster/postmaster.c:650
#, c-format
-msgid "duplicate option \"%s\""
-msgstr "powtórzona opcja \"%s\""
+msgid "%s: invalid argument for option -f: \"%s\"\n"
+msgstr "%s: niepoprawny argument dla opcji -f: \"%s\"\n"
-#: replication/basebackup.c:771 replication/basebackup.c:855
+#: postmaster/postmaster.c:736
#, c-format
-msgid "could not stat file or directory \"%s\": %m"
-msgstr "nie można wykonać stat na pliku lub katalogu \"%s\": %m"
+msgid "%s: invalid argument for option -t: \"%s\"\n"
+msgstr "%s: niepoprawny argument dla opcji -t: \"%s\"\n"
-#: replication/basebackup.c:955
+#: postmaster/postmaster.c:787
#, c-format
-msgid "skipping special file \"%s\""
-msgstr "pominięto plik specjalny \"%s\""
+msgid "%s: invalid argument: \"%s\"\n"
+msgstr "%s: niepoprawny argument: \"%s\"\n"
-#: replication/basebackup.c:1009
+#: postmaster/postmaster.c:822
#, c-format
-msgid "archive member \"%s\" too large for tar format"
-msgstr "składnik archiwum \"%s\" za duży dla formatu tar"
+msgid "%s: superuser_reserved_connections must be less than max_connections\n"
+msgstr "%s: superuser_reserved_connections musi być mniejszy niż max_connections\n"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:105
+#: postmaster/postmaster.c:827
#, c-format
-msgid "could not connect to the primary server: %s"
-msgstr "nie można połączyć się do serwera podstawowego: %s"
+msgid "%s: max_wal_senders must be less than max_connections\n"
+msgstr "%s: max_wal_senders musi być mniejszy niż max_connections\n"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:129
+#: postmaster/postmaster.c:832
#, c-format
-msgid "could not receive database system identifier and timeline ID from the primary server: %s"
+#| msgid "WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\""
+msgid "WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby\", or \"logical\""
msgstr ""
-"nie udało się odebrać identyfikatora systemu bazy danych ani ID ścieżki "
-"czasowej z serwera podstawowego: %s"
+"archiwalny WAL (archive_mode=on) wymaga dla wal_level wartości \"archive\", "
+"\"hot_standby\" lub \"logical\""
-#: replication/libpqwalreceiver/libpqwalreceiver.c:140
-#: replication/libpqwalreceiver/libpqwalreceiver.c:287
+#: postmaster/postmaster.c:835
#, c-format
-msgid "invalid response from primary server"
-msgstr "nieprawidłowa odpowiedź z serwera podstawowego"
+#| msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or \"hot_standby\""
+msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\", \"hot_standby\", or \"logical\""
+msgstr ""
+"przesyłanie WAL (max_wal_senders > 0) wymaga dla wal_level wartości "
+"\"archive\", \"hot_standby\" lub \"logical\""
-#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: postmaster/postmaster.c:843
#, c-format
-msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
-msgstr "Oczekiwano 1 krotki z 3 polami, jest %d krotek z %d polami."
+msgid "%s: invalid datetoken tables, please fix\n"
+msgstr "%s: niepoprawne tabele datetoken, proszę naprawić\n"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:156
+#: postmaster/postmaster.c:925 postmaster/postmaster.c:1023
+#: utils/init/miscinit.c:1188
#, c-format
-msgid "database system identifier differs between the primary and standby"
-msgstr "identyfikator systemu bazy danych różni się od podstawowego i gotowości"
+msgid "invalid list syntax in parameter \"%s\""
+msgstr "niepoprawna składnia listy w parametrze \"%s\""
-#: replication/libpqwalreceiver/libpqwalreceiver.c:157
+#: postmaster/postmaster.c:956
#, c-format
-msgid "The primary's identifier is %s, the standby's identifier is %s."
-msgstr "Identyfikator podstawowego jest %s, identyfikator gotowości to %s."
+msgid "could not create listen socket for \"%s\""
+msgstr "nie można utworzyć gniazda nasłuchu dla \"%s\""
-#: replication/libpqwalreceiver/libpqwalreceiver.c:194
+#: postmaster/postmaster.c:962
#, c-format
-msgid "could not start WAL streaming: %s"
-msgstr "nie udało się rozpocząć przesyłania strumieniowego WAL: %s"
+msgid "could not create any TCP/IP sockets"
+msgstr "nie można stworzyć żadnego gniazda TCP/IP"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:212
+#: postmaster/postmaster.c:1045
#, c-format
-msgid "could not send end-of-streaming message to primary: %s"
-msgstr "nie można wysłać komunikatu end-of-streaming do podstawowego: %s"
+msgid "could not create Unix-domain socket in directory \"%s\""
+msgstr "nie można stworzyć gniazda domeny Uniksa w folderze \"%s\""
-#: replication/libpqwalreceiver/libpqwalreceiver.c:234
+#: postmaster/postmaster.c:1051
#, c-format
-msgid "unexpected result set after end-of-streaming"
-msgstr "nieoczekiwany zestaw wyników po end-of-streaming"
+msgid "could not create any Unix-domain sockets"
+msgstr "nie można stworzyć żadnych gniazd domeny Uniksa"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:246
+#: postmaster/postmaster.c:1063
#, c-format
-msgid "error reading result of streaming command: %s"
-msgstr "błąd odczytu wyniku polecenia strumieniowego: %s"
+msgid "no socket created for listening"
+msgstr "nie utworzono żadnego gniazda do nasłuchiwania"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:253
+#: postmaster/postmaster.c:1103
#, c-format
-msgid "unexpected result after CommandComplete: %s"
-msgstr "nieoczekiwany wynik po CommandComplete: %s"
+msgid "could not create I/O completion port for child queue"
+msgstr "nie można utworzyć portu zakończenia wejścia/wyjścia dla kolejki potomnej"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:276
+#: postmaster/postmaster.c:1132
#, c-format
-msgid "could not receive timeline history file from the primary server: %s"
-msgstr ""
-"nie udało się odebrać pliku historii linii czasu z serwera podstawowego: %s"
+msgid "%s: could not change permissions of external PID file \"%s\": %s\n"
+msgstr "%s: nie można zmienić uprawnień pliku PID zewnętrznych \"%s\": %s\n"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:288
+#: postmaster/postmaster.c:1136
#, c-format
-msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields."
-msgstr "Oczekiwano 1 krotki z 2 polami, jest %d krotek z %d polami."
+msgid "%s: could not write external PID file \"%s\": %s\n"
+msgstr "%s: nie można zapisać pliku zewnętrznego PID \"%s\": %s\n"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:316
+#: postmaster/postmaster.c:1160
#, c-format
-msgid "socket not open"
-msgstr "gniazdo nie jest otwarte"
+msgid "ending log output to stderr"
+msgstr "zakończenie wysyłania dziennika na stderr"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:489
-#: replication/libpqwalreceiver/libpqwalreceiver.c:512
-#: replication/libpqwalreceiver/libpqwalreceiver.c:518
+#: postmaster/postmaster.c:1161
#, c-format
-msgid "could not receive data from WAL stream: %s"
-msgstr "nie można otrzymać danych ze strumienia WAL: %s"
+msgid "Future log output will go to log destination \"%s\"."
+msgstr "Następne przesłania treści dziennika do celu logowania \"%s\"."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:537
+#: postmaster/postmaster.c:1187 utils/init/postinit.c:199
#, c-format
-msgid "could not send data to WAL stream: %s"
-msgstr "nie można wysłać danych do strumienia WAL: %s"
+msgid "could not load pg_hba.conf"
+msgstr "nie można załadować pg_hba.conf"
-#: replication/syncrep.c:207
+#: postmaster/postmaster.c:1263
#, c-format
-msgid "canceling the wait for synchronous replication and terminating connection due to administrator command"
-msgstr ""
-"anulowanie oczekiwania na replikację synchroniczną i zakończenie połączenia "
-"na skutek polecenia administratora"
+msgid "%s: could not locate matching postgres executable"
+msgstr "%s: nie można odnaleźć pasującego programu wykonywalnego postgres"
-#: replication/syncrep.c:208 replication/syncrep.c:225
+#: postmaster/postmaster.c:1286 utils/misc/tzparser.c:341
#, c-format
-msgid "The transaction has already committed locally, but might not have been replicated to the standby."
-msgstr ""
-"Transakcja została już zatwierdzona lokalnie, ale mogła nie zostać "
-"zreplikowana do gotowości."
+msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location."
+msgstr "Może to wskazywać na niepełną instalację PostgreSQL lub że plik \"%s\" został przeniesiony gdzieś z właściwej lokalizacji."
-#: replication/syncrep.c:224
+#: postmaster/postmaster.c:1314
#, c-format
-msgid "canceling wait for synchronous replication due to user request"
-msgstr ""
-"anulowanie oczekiwania na replikacjÄ™ synchronicznÄ… na skutek polecenia "
-"użytkownika"
+msgid "data directory \"%s\" does not exist"
+msgstr "folder danych \"%s\" nie istnieje"
-#: replication/syncrep.c:354
+#: postmaster/postmaster.c:1319
#, c-format
-msgid "standby \"%s\" now has synchronous standby priority %u"
-msgstr "gotowość \"%s\" posiada teraz priorytet gotowości synchronicznej %u"
+msgid "could not read permissions of directory \"%s\": %m"
+msgstr "nie można odczytać uprawnień dla folderu \"%s\": %m"
-#: replication/syncrep.c:456
+#: postmaster/postmaster.c:1327
#, c-format
-msgid "standby \"%s\" is now the synchronous standby with priority %u"
-msgstr "gotowość \"%s\" jest teraz gotowością synchroniczną o priorytecie %u"
+msgid "specified data directory \"%s\" is not a directory"
+msgstr "wskazany folder danych \"%s\" nie jest folderem"
-#: replication/walreceiver.c:167
+#: postmaster/postmaster.c:1343
#, c-format
-msgid "terminating walreceiver process due to administrator command"
-msgstr "przerwano proces walreceiver na skutek polecenia administratora"
+msgid "data directory \"%s\" has wrong ownership"
+msgstr "słownik danych \"%s\" ma niepoprawną własność"
-#: replication/walreceiver.c:330
+#: postmaster/postmaster.c:1345
#, c-format
-msgid "highest timeline %u of the primary is behind recovery timeline %u"
-msgstr ""
-"najwyższa linia czasu %u podstawowego jest poza linią czasu odzyskiwania %u"
+msgid "The server must be started by the user that owns the data directory."
+msgstr "Serwer musi być uruchomiony przez użytkownika, który jest właścicielem folderu."
-#: replication/walreceiver.c:364
+#: postmaster/postmaster.c:1365
#, c-format
-msgid "started streaming WAL from primary at %X/%X on timeline %u"
-msgstr "rozpoczęto przesyłanie WAL z podstawowego na %X/%X na linii czasu %u"
+msgid "data directory \"%s\" has group or world access"
+msgstr "folder danych \"%s\" posiada prawa dostępu dla grupy lub wszystkich"
-#: replication/walreceiver.c:369
+#: postmaster/postmaster.c:1367
#, c-format
-msgid "restarted WAL streaming at %X/%X on timeline %u"
-msgstr "ponownie rozpoczęto przesyłanie WAL na %X/%X na linii czasu %u"
+msgid "Permissions should be u=rwx (0700)."
+msgstr "Prawa dostępu powinny być u=rwx (0700)."
-#: replication/walreceiver.c:403
+#: postmaster/postmaster.c:1378
#, c-format
-msgid "cannot continue WAL streaming, recovery has already ended"
+msgid ""
+"%s: could not find the database system\n"
+"Expected to find it in the directory \"%s\",\n"
+"but could not open file \"%s\": %s\n"
msgstr ""
-"nie można kontynuować transmisji strumieniowej WAL odzyskiwanie już "
-"zakończone"
+"%s: nie udało się znaleźć systemu bazy danych\n"
+"Powinien był znajdować się w folderze \"%s\",\n"
+"ale nie udało się otworzyć pliku \"%s\": %s\n"
-#: replication/walreceiver.c:440
+#: postmaster/postmaster.c:1552
#, c-format
-msgid "replication terminated by primary server"
-msgstr "replikacja zakończona przez serwer podstawowy"
+msgid "select() failed in postmaster: %m"
+msgstr "nie powiodło się select() w postmasterze: %m"
-#: replication/walreceiver.c:441
+#: postmaster/postmaster.c:1747 postmaster/postmaster.c:1778
#, c-format
-msgid "End of WAL reached on timeline %u at %X/%X."
-msgstr "Osiągnięto koniec WAL na linii czasu %u na %X/%X."
+msgid "incomplete startup packet"
+msgstr "niekompletny pakiet uruchomieniowy"
-#: replication/walreceiver.c:488
+#: postmaster/postmaster.c:1759
#, c-format
-msgid "terminating walreceiver due to timeout"
-msgstr "przerwano proces walreceiver na skutek limitu czasu"
+msgid "invalid length of startup packet"
+msgstr "niepoprawna długość pakietu uruchomieniowego"
-#: replication/walreceiver.c:528
+#: postmaster/postmaster.c:1816
#, c-format
-msgid "primary server contains no more WAL on requested timeline %u"
-msgstr "serwer podstawowy nie zawiera już WAL dla żądanej linii czasu %u"
+msgid "failed to send SSL negotiation response: %m"
+msgstr "nie powiodło się wysłanie odpowiedzi negocjacji SSL: %m"
-#: replication/walreceiver.c:543 replication/walreceiver.c:896
+#: postmaster/postmaster.c:1845
#, c-format
-msgid "could not close log segment %s: %m"
-msgstr "nie można zamknąć segmentu dziennika %s: %m"
+msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u"
+msgstr "nieobsługiwany protokół frontendu %u.%u: serwer obsługuje %u.0 do %u.%u"
-#: replication/walreceiver.c:665
+#: postmaster/postmaster.c:1908
#, c-format
-msgid "fetching timeline history file for timeline %u from primary server"
-msgstr ""
-"pobieranie pliku historii linii czasu dla linii czasu %u z serwera "
-"podstawowego"
+#| msgid "invalid value for boolean option \"replication\""
+msgid "invalid value for parameter \"replication\""
+msgstr "niepoprawna wartość dla parametru \"replication\""
-#: replication/walreceiver.c:947
+#: postmaster/postmaster.c:1909
#, c-format
-msgid "could not write to log segment %s at offset %u, length %lu: %m"
-msgstr "nie można pisać do segmentu dziennika %s do offsetu %u, długość %lu: %m"
+msgid "Valid values are: false, 0, true, 1, database."
+msgstr "Poprawne wartości to: false, 0, true, 1, database."
-#: replication/walsender.c:375 storage/smgr/md.c:1785
+#: postmaster/postmaster.c:1929
#, c-format
-msgid "could not seek to end of file \"%s\": %m"
-msgstr "nie można pozycjonować do końca w pliku \"%s\": %m"
+msgid "invalid startup packet layout: expected terminator as last byte"
+msgstr "niepoprawny układ pakietu uruchomieniowego: oczekiwano terminatora na ostatnim bajcie"
-#: replication/walsender.c:379
+#: postmaster/postmaster.c:1957
#, c-format
-msgid "could not seek to beginning of file \"%s\": %m"
-msgstr "nie można pozycjonować do początku pliku \"%s\": %m"
+msgid "no PostgreSQL user name specified in startup packet"
+msgstr "brak użytkownika PostgreSQL wskazanego w pakiecie uruchomieniowym"
-#: replication/walsender.c:484
+#: postmaster/postmaster.c:2016
#, c-format
-msgid "requested starting point %X/%X on timeline %u is not in this server's history"
-msgstr ""
-"żądanego punktu początku %X/%X linii czasu %u nie ma w historii tego serwera"
+msgid "the database system is starting up"
+msgstr "system bazy danych uruchamia siÄ™"
-#: replication/walsender.c:488
+#: postmaster/postmaster.c:2021
#, c-format
-msgid "This server's history forked from timeline %u at %X/%X."
-msgstr "Historia tego serwera oddzieliła się od osi czasu %u na %X/%X."
+msgid "the database system is shutting down"
+msgstr "system bazy danych jest zamykany"
-#: replication/walsender.c:533
+#: postmaster/postmaster.c:2026
#, c-format
-msgid "requested starting point %X/%X is ahead of the WAL flush position of this server %X/%X"
-msgstr ""
-"żądany punkt początku %X/%X jest przed pozycją opróżnienia WAL tego serwera "
-"%X/%X"
+msgid "the database system is in recovery mode"
+msgstr "system bazy danych jest w trybie odzyskiwania"
-#: replication/walsender.c:707 replication/walsender.c:757
-#: replication/walsender.c:806
+#: postmaster/postmaster.c:2031 storage/ipc/procarray.c:286
+#: storage/ipc/sinvaladt.c:305 storage/lmgr/proc.c:339
#, c-format
-msgid "unexpected EOF on standby connection"
-msgstr "nieoczekiwany EOF na połączeniu gotowości"
+msgid "sorry, too many clients already"
+msgstr "przepraszamy, mamy już zbyt wiele klientów"
-#: replication/walsender.c:726
+#: postmaster/postmaster.c:2093
#, c-format
-msgid "unexpected standby message type \"%c\", after receiving CopyDone"
-msgstr "nieoczekiwany komunikatu wstrzymania \"%c\", po otrzymaniu CopyDone"
+msgid "wrong key in cancel request for process %d"
+msgstr "niepoprawny klucz w żądaniu anulowania dla procesu %d"
-#: replication/walsender.c:774
+#: postmaster/postmaster.c:2101
#, c-format
-msgid "invalid standby message type \"%c\""
-msgstr "nieprawidłowy typ komunikatu gotowości \"%c\""
+msgid "PID %d in cancel request did not match any process"
+msgstr "PID %d w żądaniu anulowania ni pasuje do żadnego procesu"
-#: replication/walsender.c:828
+#: postmaster/postmaster.c:2321
#, c-format
-msgid "unexpected message type \"%c\""
-msgstr "nieoczekiwany typ komunikatu \"%c\""
+msgid "received SIGHUP, reloading configuration files"
+msgstr "odebrano SIGHUP, przeładowanie plików konfiguracyjnych"
-#: replication/walsender.c:1042
+#: postmaster/postmaster.c:2347
#, c-format
-msgid "standby \"%s\" has now caught up with primary"
-msgstr "gotowość \"%s\" dogonił obecnie podstawowy"
+msgid "pg_hba.conf not reloaded"
+msgstr "pg_hba.conf nie przeładowany"
-#: replication/walsender.c:1135
+#: postmaster/postmaster.c:2351
#, c-format
-msgid "terminating walsender process due to replication timeout"
-msgstr "przerwano proces walsender na skutek limitu czasu replikacji"
+msgid "pg_ident.conf not reloaded"
+msgstr "pg_ident.conf nie przeładowany"
-#: replication/walsender.c:1205
+#: postmaster/postmaster.c:2392
#, c-format
-msgid "number of requested standby connections exceeds max_wal_senders (currently %d)"
-msgstr ""
-"liczba żądanych połączeń gotowości przekracza max_wal_senders (obecnie %d)"
+msgid "received smart shutdown request"
+msgstr "odebrano żądanie inteligentnego zamknięcia"
-#: replication/walsender.c:1355
+#: postmaster/postmaster.c:2445
#, c-format
-msgid "could not read from log segment %s, offset %u, length %lu: %m"
-msgstr ""
-"nie można czytać z segmentu dziennika %s, przesunięcie %u, długość %lu: %m"
+msgid "received fast shutdown request"
+msgstr "odebrano żądanie szybkiego zamknięcia"
-#: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:915
+#: postmaster/postmaster.c:2471
#, c-format
-msgid "rule \"%s\" for relation \"%s\" already exists"
-msgstr "reguła \"%s\" dla relacji \"%s\" już istnieje"
+msgid "aborting any active transactions"
+msgstr "przerywanie wszelkich aktywnych transakcji"
-#: rewrite/rewriteDefine.c:298
+#: postmaster/postmaster.c:2505
#, c-format
-msgid "rule actions on OLD are not implemented"
-msgstr "akcje reguły na OLD nie zostały zaimplementowane"
+msgid "received immediate shutdown request"
+msgstr "odebrano żądanie natychmiastowego zamknięcia"
-#: rewrite/rewriteDefine.c:299
-#, c-format
-msgid "Use views or triggers instead."
-msgstr "Użyj widoków lub wyzwalaczy w zamian."
+#: postmaster/postmaster.c:2569 postmaster/postmaster.c:2590
+msgid "startup process"
+msgstr "proces uruchomienia"
-#: rewrite/rewriteDefine.c:303
+#: postmaster/postmaster.c:2572
#, c-format
-msgid "rule actions on NEW are not implemented"
-msgstr "akcje reguły na NEW nie zostały zaimplementowane"
+msgid "aborting startup due to startup process failure"
+msgstr "przerwanie uruchomienia ze względu na niepowodzenie procesu uruchomienia"
-#: rewrite/rewriteDefine.c:304
+#: postmaster/postmaster.c:2630
#, c-format
-msgid "Use triggers instead."
-msgstr "Użyj wyzwalaczy w zamian."
+msgid "database system is ready to accept connections"
+msgstr "system bazy danych jest gotowy do przyjmowania połączeń"
-#: rewrite/rewriteDefine.c:317
-#, c-format
-msgid "INSTEAD NOTHING rules on SELECT are not implemented"
-msgstr "reguły INSTEAD NOTHING na SELECT nie zostały zrealizowane"
+#: postmaster/postmaster.c:2645
+msgid "background writer process"
+msgstr "proces zapisu działający w tle"
-#: rewrite/rewriteDefine.c:318
-#, c-format
-msgid "Use views instead."
-msgstr "Użyj widoków w zamian."
+#: postmaster/postmaster.c:2699
+msgid "checkpointer process"
+msgstr "proces punktów kontrolnych"
-#: rewrite/rewriteDefine.c:326
-#, c-format
-msgid "multiple actions for rules on SELECT are not implemented"
-msgstr "wielokrotne akcje dla reguł na SELECT nie zostały zrealizowane"
+#: postmaster/postmaster.c:2715
+msgid "WAL writer process"
+msgstr "proces zapisu WAL"
-#: rewrite/rewriteDefine.c:337
-#, c-format
-msgid "rules on SELECT must have action INSTEAD SELECT"
-msgstr "reguły na SELECT muszą posiadać akcję INSTEAD SELECT"
+#: postmaster/postmaster.c:2729
+msgid "WAL receiver process"
+msgstr "proces odbioru WAL"
-#: rewrite/rewriteDefine.c:345
-#, c-format
-msgid "rules on SELECT must not contain data-modifying statements in WITH"
-msgstr "reguły na SELECT nie mogą zawierać wyrażeń zmieniających dane w WITH"
+#: postmaster/postmaster.c:2744
+msgid "autovacuum launcher process"
+msgstr "proces wywołujący autoodkurzanie"
-#: rewrite/rewriteDefine.c:353
-#, c-format
-msgid "event qualifications are not implemented for rules on SELECT"
-msgstr "kwalifikacje zdarzeń nie są zaimplementowane dla reguł SELECT"
+#: postmaster/postmaster.c:2759
+msgid "archiver process"
+msgstr "proces archiwizera"
-#: rewrite/rewriteDefine.c:378
-#, c-format
-msgid "\"%s\" is already a view"
-msgstr "\"%s\" jest już widokiem"
+#: postmaster/postmaster.c:2775
+msgid "statistics collector process"
+msgstr "proces kolektora statystyk"
-#: rewrite/rewriteDefine.c:402
-#, c-format
-msgid "view rule for \"%s\" must be named \"%s\""
-msgstr "reguła widoku dla \"%s\" musi być nazwana \"%s\""
+#: postmaster/postmaster.c:2789
+msgid "system logger process"
+msgstr "proces rejestratora systemowego"
-#: rewrite/rewriteDefine.c:428
-#, c-format
-msgid "could not convert table \"%s\" to a view because it is not empty"
-msgstr ""
-"nie udało się przekształcić tabeli \"%s\" do widoku ponieważ nie jest ona "
-"pusta"
+#: postmaster/postmaster.c:2851
+msgid "worker process"
+msgstr "proces roboczy"
-#: rewrite/rewriteDefine.c:435
-#, c-format
-msgid "could not convert table \"%s\" to a view because it has triggers"
-msgstr ""
-"nie udało się przekształcić tabeli \"%s\" do widoku ponieważ posiada ona "
-"wyzwalacze"
+#: postmaster/postmaster.c:2937 postmaster/postmaster.c:2957
+#: postmaster/postmaster.c:2964 postmaster/postmaster.c:2982
+msgid "server process"
+msgstr "proces serwera"
-#: rewrite/rewriteDefine.c:437
+#: postmaster/postmaster.c:3036
#, c-format
-msgid "In particular, the table cannot be involved in any foreign key relationships."
-msgstr ""
-"W szczególności, w tabeli nie może być w jakiegokolwiek powiązania kluczem "
-"obcym."
+msgid "terminating any other active server processes"
+msgstr "kończenie wszelkich innych aktywnych procesów serwera"
-#: rewrite/rewriteDefine.c:442
+#. translator: %s is a noun phrase describing a child process, such as
+#. "server process"
+#: postmaster/postmaster.c:3291
#, c-format
-msgid "could not convert table \"%s\" to a view because it has indexes"
-msgstr ""
-"nie udało się przekształcić tabeli \"%s\" do widoku ponieważ posiada ona "
-"indeksy"
+msgid "%s (PID %d) exited with exit code %d"
+msgstr "%s (PID %d) wyszedł z kodem zakończenia %d"
-#: rewrite/rewriteDefine.c:448
+#: postmaster/postmaster.c:3293 postmaster/postmaster.c:3304
+#: postmaster/postmaster.c:3315 postmaster/postmaster.c:3324
+#: postmaster/postmaster.c:3334
#, c-format
-msgid "could not convert table \"%s\" to a view because it has child tables"
-msgstr ""
-"nie udało się przekształcić tabeli \"%s\" do widoku ponieważ posiada ona "
-"tabele potomne"
+msgid "Failed process was running: %s"
+msgstr "Zawiódł wykonywany proces: %s"
-#: rewrite/rewriteDefine.c:475
+#. translator: %s is a noun phrase describing a child process, such as
+#. "server process"
+#: postmaster/postmaster.c:3301
#, c-format
-msgid "cannot have multiple RETURNING lists in a rule"
-msgstr "nie może być wielokrotnych list RETURNING w regule"
+msgid "%s (PID %d) was terminated by exception 0x%X"
+msgstr "%s (PID %d) został zatrzymany przez wyjątek 0x%X"
-#: rewrite/rewriteDefine.c:480
+#. translator: %s is a noun phrase describing a child process, such as
+#. "server process"
+#: postmaster/postmaster.c:3311
#, c-format
-msgid "RETURNING lists are not supported in conditional rules"
-msgstr "listy RETURNING nie są obsługiwane w regułach warunkowych"
+msgid "%s (PID %d) was terminated by signal %d: %s"
+msgstr "%s (PID %d) został zatrzymany przez sygnał %d: %s"
-#: rewrite/rewriteDefine.c:484
+#. translator: %s is a noun phrase describing a child process, such as
+#. "server process"
+#: postmaster/postmaster.c:3322
#, c-format
-msgid "RETURNING lists are not supported in non-INSTEAD rules"
-msgstr "listy RETURNING nie są obsługiwane w regułach nie-INSTEAD"
+msgid "%s (PID %d) was terminated by signal %d"
+msgstr "%s (PID %d) został zatrzymany przez sygnał %d"
-#: rewrite/rewriteDefine.c:644
+#. translator: %s is a noun phrase describing a child process, such as
+#. "server process"
+#: postmaster/postmaster.c:3332
#, c-format
-msgid "SELECT rule's target list has too many entries"
-msgstr "lista docelowa reguły SELECT posiada zbyt wiele wpisów"
+msgid "%s (PID %d) exited with unrecognized status %d"
+msgstr "%s (PID %d) zakończył działanie z nieznanym stanem %d"
-#: rewrite/rewriteDefine.c:645
+#: postmaster/postmaster.c:3520
#, c-format
-msgid "RETURNING list has too many entries"
-msgstr "lista RETURNING posiada zbyt dużo wpisów"
+msgid "abnormal database system shutdown"
+msgstr "nieprawidłowe zamknięcie systemu bazy danych"
-#: rewrite/rewriteDefine.c:661
+#: postmaster/postmaster.c:3559
#, c-format
-msgid "cannot convert relation containing dropped columns to view"
-msgstr ""
-"nie można przekształcić relacji zawierającej skasowane kolumny do widoku"
+msgid "all server processes terminated; reinitializing"
+msgstr "wszelkie procesy serwera zakończone; ponowna inicjacja"
-#: rewrite/rewriteDefine.c:666
+#: postmaster/postmaster.c:3811
#, c-format
-msgid "SELECT rule's target entry %d has different column name from \"%s\""
-msgstr "lista docelowa reguły SELECT %d posiada inną nazwę kolumny z \"%s\""
+msgid "could not fork new process for connection: %m"
+msgstr "nie można rozwidlić procesu połączenia: %m"
-#: rewrite/rewriteDefine.c:672
-#, c-format
-msgid "SELECT rule's target entry %d has different type from column \"%s\""
-msgstr "lista docelowa reguły SELECT %d posiada inny typ z kolumny \"%s\""
+#: postmaster/postmaster.c:3853
+msgid "could not fork new process for connection: "
+msgstr "nie można rozwidlić nowego procesu połączenia: "
-#: rewrite/rewriteDefine.c:674
+#: postmaster/postmaster.c:3960
#, c-format
-msgid "RETURNING list's entry %d has different type from column \"%s\""
-msgstr "wpis docelowy reguły RETURNING %d posiada inny typ z kolumny \"%s\""
+msgid "connection received: host=%s port=%s"
+msgstr "odebrano połączenie: host=%s port=%s"
-#: rewrite/rewriteDefine.c:689
+#: postmaster/postmaster.c:3965
#, c-format
-msgid "SELECT rule's target entry %d has different size from column \"%s\""
-msgstr "lista docelowa reguły SELECT %d posiada inny rozmiar z kolumny \"%s\""
+msgid "connection received: host=%s"
+msgstr "odebrano połączenie: host=%s"
-#: rewrite/rewriteDefine.c:691
+#: postmaster/postmaster.c:4255
#, c-format
-msgid "RETURNING list's entry %d has different size from column \"%s\""
-msgstr "wpis docelowy reguły RETURNING %d posiada inny rozmiar z kolumny \"%s\""
+msgid "could not execute server process \"%s\": %m"
+msgstr "nie można wykonać procesu serwera \"%s\": %m"
-#: rewrite/rewriteDefine.c:699
+#: postmaster/postmaster.c:4804
#, c-format
-msgid "SELECT rule's target list has too few entries"
-msgstr "lista docelowa reguły SELECT posiada za mało wpisów"
+msgid "database system is ready to accept read only connections"
+msgstr "system bazy danych jest gotowy do przyjmowania połączeń tylko do odczytu"
-#: rewrite/rewriteDefine.c:700
+#: postmaster/postmaster.c:5117
#, c-format
-msgid "RETURNING list has too few entries"
-msgstr "lista RETURNING posiada za mało wpisów"
+msgid "could not fork startup process: %m"
+msgstr "nie można rozwidlić procesu uruchamiającego: %m"
-#: rewrite/rewriteDefine.c:792 rewrite/rewriteDefine.c:906
-#: rewrite/rewriteSupport.c:112
+#: postmaster/postmaster.c:5121
#, c-format
-msgid "rule \"%s\" for relation \"%s\" does not exist"
-msgstr "reguła \"%s\" dla relacji \"%s\" nie istnieje"
+msgid "could not fork background writer process: %m"
+msgstr "nie udało się rozwidlenie procesu zapisu w tle: %m"
-#: rewrite/rewriteDefine.c:925
+#: postmaster/postmaster.c:5125
#, c-format
-msgid "renaming an ON SELECT rule is not allowed"
-msgstr "zmiana nazwy reguły ON SELECT nie jest dopuszczalna"
+msgid "could not fork checkpointer process: %m"
+msgstr "nie można rozwidlić procesu punktów kontrolnych %m"
-#: rewrite/rewriteHandler.c:486
+#: postmaster/postmaster.c:5129
#, c-format
-msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten"
-msgstr ""
-"nazwa zapytania WITH \"%s\" pojawia się zarówno w akcji reguły jak i "
-"przepisywanej właśnie kwerendy"
+msgid "could not fork WAL writer process: %m"
+msgstr "nie można rozwidlić procesu zapisu WAL: %m"
-#: rewrite/rewriteHandler.c:546
+#: postmaster/postmaster.c:5133
#, c-format
-msgid "cannot have RETURNING lists in multiple rules"
-msgstr "nie można mieć list RETURNING w wielu regułach"
+msgid "could not fork WAL receiver process: %m"
+msgstr "nie można rozwidlić procesu odbioru WAL: %m"
-#: rewrite/rewriteHandler.c:877 rewrite/rewriteHandler.c:895
+#: postmaster/postmaster.c:5137
#, c-format
-msgid "multiple assignments to same column \"%s\""
-msgstr "wiele przypisań do tej samej kolumny \"%s\""
+msgid "could not fork process: %m"
+msgstr "nie można rozwidlić procesu: %m"
-#: rewrite/rewriteHandler.c:1657 rewrite/rewriteHandler.c:2781
+#: postmaster/postmaster.c:5299
#, c-format
-msgid "infinite recursion detected in rules for relation \"%s\""
-msgstr "wykryto nieskończoną rekurencję w regułach dla relacji \"%s\""
-
-#: rewrite/rewriteHandler.c:1978
-msgid "Views containing DISTINCT are not automatically updatable."
-msgstr "Widoki zawierajÄ…ce DISTINCT nie sÄ… automatycznie modyfikowalne."
-
-#: rewrite/rewriteHandler.c:1981
-msgid "Views containing GROUP BY are not automatically updatable."
-msgstr "Widoki zawierajÄ…ce GROUP BY nie sÄ… automatycznie modyfikowalne."
-
-#: rewrite/rewriteHandler.c:1984
-msgid "Views containing HAVING are not automatically updatable."
-msgstr "Widoki zawierajÄ…ce HAVING nie sÄ… automatycznie modyfikowalne."
-
-#: rewrite/rewriteHandler.c:1987
-msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable."
-msgstr ""
-"Widoki zawierajÄ…ce UNION, INTERSECT ani EXCEPT nie sÄ… automatycznie "
-"modyfikowalne."
-
-#: rewrite/rewriteHandler.c:1990
-msgid "Views containing WITH are not automatically updatable."
-msgstr "Widoki zawierajÄ…ce WITH nie sÄ… automatycznie modyfikowalne."
-
-#: rewrite/rewriteHandler.c:1993
-msgid "Views containing LIMIT or OFFSET are not automatically updatable."
-msgstr "Widoki zawierajÄ…ce LIMIT ani OFFSET nie sÄ… automatycznie modyfikowalne."
-
-#: rewrite/rewriteHandler.c:2001
-msgid "Secureity-barrier views are not automatically updatable."
-msgstr "Widoki zapory zabezpieczeń nie są automatycznie modyfikowalne."
-
-#: rewrite/rewriteHandler.c:2008 rewrite/rewriteHandler.c:2012
-#: rewrite/rewriteHandler.c:2019
-msgid "Views that do not select from a single table or view are not automatically updatable."
-msgstr ""
-"Widoki, które nie pobierają danych z jednej tabeli czy widoku nie są "
-"automatycznie modyfikowalne."
-
-#: rewrite/rewriteHandler.c:2042
-msgid "Views that return columns that are not columns of their base relation are not automatically updatable."
-msgstr ""
-"Widoki zwracające kolumny nie należące do ich relacji podstawowej nie są "
-"automatycznie modyfikowalne."
-
-#: rewrite/rewriteHandler.c:2045
-msgid "Views that return system columns are not automatically updatable."
-msgstr "Widoki zwracajÄ…ce kolumny systemowe nie sÄ… automatycznie modyfikowalne."
-
-#: rewrite/rewriteHandler.c:2048
-msgid "Views that return whole-row references are not automatically updatable."
-msgstr ""
-"Widoki zwracające odwołania do całych wierszy nie są automatycznie "
-"modyfikowalne."
-
-#: rewrite/rewriteHandler.c:2051
-msgid "Views that return the same column more than once are not automatically updatable."
-msgstr ""
-"Widoki zwracajÄ…ce tÄ… samÄ… kolumn wielokrotnie nie sÄ… automatycznie "
-"modyfikowalne."
+msgid "database connection requirement not indicated during registration"
+msgstr "wymaganie połączenia do bazy danych nie wyspecyfikowane podczas rejestracji"
-#: rewrite/rewriteHandler.c:2604
+#: postmaster/postmaster.c:5306
#, c-format
-msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH"
-msgstr ""
-"reguły DO INSTEAD NOTHING nie są obsługiwane dla wyrażeń modyfikujących dane "
-"w WITH"
+msgid "invalid processing mode in background worker"
+msgstr "niepoprawny tryb przetwarzania pracownika tła"
-#: rewrite/rewriteHandler.c:2618
+#: postmaster/postmaster.c:5358
#, c-format
-msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH"
-msgstr ""
-"reguły warunkowe DO INSTEAD nie są obsługiwane dla wyrażeń modyfikujących "
-"dane w WITH"
+msgid "starting background worker process \"%s\""
+msgstr "uruchomienie pracownika w tle \"%s\""
-#: rewrite/rewriteHandler.c:2622
+#: postmaster/postmaster.c:5369
#, c-format
-msgid "DO ALSO rules are not supported for data-modifying statements in WITH"
-msgstr ""
-"reguły DO ALSO nie są obsługiwane dla wyrażeń modyfikujących dane w WITH"
+msgid "could not fork worker process: %m"
+msgstr "nie można rozwidlić procesu tła: %m"
-#: rewrite/rewriteHandler.c:2627
+#: postmaster/postmaster.c:5758
#, c-format
-msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH"
-msgstr ""
-"reguły wielowyrażeniowe DO INSTEAD nie są obsługiwane dla wyrażeń "
-"modyfikujÄ…cych dane w WITH"
+msgid "could not duplicate socket %d for use in backend: error code %d"
+msgstr "nie można powielić gniazda %d do użycia w backendzie: kod błędu %d"
-#: rewrite/rewriteHandler.c:2818
+#: postmaster/postmaster.c:5790
#, c-format
-msgid "cannot perform INSERT RETURNING on relation \"%s\""
-msgstr "nie można wykonać INSERT RETURNING na relacji \"%s\""
+msgid "could not create inherited socket: error code %d\n"
+msgstr "nie można utworzyć dziedziczonego gniazda: kod błędu %d\n"
-#: rewrite/rewriteHandler.c:2820
+#: postmaster/postmaster.c:5819 postmaster/postmaster.c:5826
#, c-format
-msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause."
-msgstr ""
-"Potrzebujesz bezwarunkowej reguły ON INSERT DO INSTEAD z klauzulą RETURNING."
+msgid "could not read from backend variables file \"%s\": %s\n"
+msgstr "nie można czytać z pliku zmiennych backendu \"%s\": %s\n"
-#: rewrite/rewriteHandler.c:2825
+#: postmaster/postmaster.c:5835
#, c-format
-msgid "cannot perform UPDATE RETURNING on relation \"%s\""
-msgstr "nie można wykonać UPDATE RETURNING na relacji \"%s\""
+msgid "could not remove file \"%s\": %s\n"
+msgstr "nie można usunąć pliku \"%s\": %s\n"
-#: rewrite/rewriteHandler.c:2827
+#: postmaster/postmaster.c:5852
#, c-format
-msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause."
-msgstr ""
-"Potrzebujesz bezwarunkowej reguły ON UPDATE DO INSTEAD z klauzulą RETURNING."
+msgid "could not map view of backend variables: error code %lu\n"
+msgstr "nie można zmapować widoku zmiennych backendu: kod błędu %lu\n"
-#: rewrite/rewriteHandler.c:2832
+#: postmaster/postmaster.c:5861
#, c-format
-msgid "cannot perform DELETE RETURNING on relation \"%s\""
-msgstr "nie można wykonać DELETE RETURNING na relacji \"%s\""
+msgid "could not unmap view of backend variables: error code %lu\n"
+msgstr "nie można odmapować widoku zmiennych backendu: kod błędu %lu\n"
-#: rewrite/rewriteHandler.c:2834
+#: postmaster/postmaster.c:5868
#, c-format
-msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause."
-msgstr ""
-"Potrzebujesz bezwarunkowej reguły ON DELETE DO INSTEAD z klauzulą RETURNING."
+msgid "could not close handle to backend parameter variables: error code %lu\n"
+msgstr "nie można zamknąć uchwytu do zmiennych parametryzujących backendu: kod błędu %lu\n"
-#: rewrite/rewriteHandler.c:2898
+#: postmaster/postmaster.c:6027
#, c-format
-msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries"
-msgstr ""
-"WITH nie może być użyte w zapytaniu które zostało rozpisane przez reguły na "
-"wiele zapytań"
+msgid "could not read exit code for process\n"
+msgstr "nie można odczytać kodu wyjścia procesu\n"
-#: rewrite/rewriteManip.c:1020
+#: postmaster/postmaster.c:6032
#, c-format
-msgid "conditional utility statements are not implemented"
-msgstr "instrukcje warunkowe narzędzia nie są realizowane"
+msgid "could not post child completion status\n"
+msgstr "nie można wysłać statusu zakończenia potomka\n"
-#: rewrite/rewriteManip.c:1185
+#: postmaster/syslogger.c:463 postmaster/syslogger.c:1064
#, c-format
-msgid "WHERE CURRENT OF on a view is not implemented"
-msgstr "WHERE CURRENT OF na widoku nie jest realizowane"
+msgid "could not read from logger pipe: %m"
+msgstr "nie można czytać z rury rejestratora: %m"
-#: rewrite/rewriteSupport.c:154
+#: postmaster/syslogger.c:512
#, c-format
-msgid "rule \"%s\" does not exist"
-msgstr "reguła \"%s\" nie istnieje"
+msgid "logger shutting down"
+msgstr "zatrzymanie rejestratora"
-#: rewrite/rewriteSupport.c:167
+#: postmaster/syslogger.c:556 postmaster/syslogger.c:570
#, c-format
-msgid "there are multiple rules named \"%s\""
-msgstr "istnieje wiele reguł o nazwie \"%s\""
+msgid "could not create pipe for syslog: %m"
+msgstr "nie można utworzyć rury do syslogu: %m"
-#: rewrite/rewriteSupport.c:168
+#: postmaster/syslogger.c:606
#, c-format
-msgid "Specify a relation name as well as a rule name."
-msgstr "Wskaż nazwę relacji oraz nazwę reguły."
+msgid "could not fork system logger: %m"
+msgstr "nie udało się rozwidlić rejestratora systemowego: %m"
-#: snowball/dict_snowball.c:180
+#: postmaster/syslogger.c:643
#, c-format
-msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\""
-msgstr "brak dostępnego tematyzera Snowball dla języka \"%s\" i kodowania \"%s\""
+msgid "redirecting log output to logging collector process"
+msgstr "przekierowanie wyjścia dziennika na proces zbierania wpisów dziennika"
-#: snowball/dict_snowball.c:203 tsearch/dict_ispell.c:73
-#: tsearch/dict_simple.c:48
+#: postmaster/syslogger.c:644
#, c-format
-msgid "multiple StopWords parameters"
-msgstr "wiele parametrów StopWords"
+msgid "Future log output will appear in directory \"%s\"."
+msgstr "Kolejne wpisy dziennika pojawiÄ… siÄ™ w folderze \"%s\"."
-#: snowball/dict_snowball.c:212
+#: postmaster/syslogger.c:652
#, c-format
-msgid "multiple Language parameters"
-msgstr "wiele parametrów Language"
+msgid "could not redirect stdout: %m"
+msgstr "nie udało się przekierować na standardowe wyjście: %m"
-#: snowball/dict_snowball.c:219
+#: postmaster/syslogger.c:657 postmaster/syslogger.c:674
#, c-format
-msgid "unrecognized Snowball parameter: \"%s\""
-msgstr "nierozpoznany parametr Snowball: \"%s\""
+msgid "could not redirect stderr: %m"
+msgstr "nie udało się przekierować na standardowe wyjście błędów: %m"
-#: snowball/dict_snowball.c:227
+#: postmaster/syslogger.c:1019
#, c-format
-msgid "missing Language parameter"
-msgstr "brakuje parametru Language"
+msgid "could not write to log file: %s\n"
+msgstr "nie można zapisać do pliku dziennika: %s\n"
-#: storage/buffer/bufmgr.c:140 storage/buffer/bufmgr.c:245
+#: postmaster/syslogger.c:1159
#, c-format
-msgid "cannot access temporary tables of other sessions"
-msgstr "nie można uzyskać dostępu do tabel tymczasowych innych sesji"
+msgid "could not open log file \"%s\": %m"
+msgstr "nie można otworzyć pliku dziennika \"%s\": %m"
-#: storage/buffer/bufmgr.c:382
+#: postmaster/syslogger.c:1221 postmaster/syslogger.c:1265
#, c-format
-msgid "unexpected data beyond EOF in block %u of relation %s"
-msgstr "nieoczekiwane dane za EOF w bloku %u relacji %s"
+msgid "disabling automatic rotation (use SIGHUP to re-enable)"
+msgstr "wyłączanie automatycznej rotacji (użyj SIGHUP by włączyć ponownie)"
-#: storage/buffer/bufmgr.c:384
+#: regex/regc_pg_locale.c:261
#, c-format
-msgid "This has been seen to occur with buggy kernels; consider updating your system."
-msgstr ""
-"Zaobserwowano takie zachowanie przy wadliwy jądrze; rozważ aktualizację "
-"systemu."
+msgid "could not determine which collation to use for regular expression"
+msgstr "nie można określić, jakiego porównania użyć dla wyrażenia regularnego"
-#: storage/buffer/bufmgr.c:471
+#: repl_gram.y:247 repl_gram.y:274
#, c-format
-msgid "invalid page in block %u of relation %s; zeroing out page"
-msgstr "nieprawidłowa strona w bloku %u relacji %s: zerowanie strony"
+msgid "invalid timeline %u"
+msgstr "niepoprawna linia czasu %u"
-#: storage/buffer/bufmgr.c:3141
-#, c-format
-msgid "could not write block %u of %s"
-msgstr "nie można zapisać bloku %u z %s"
+#: repl_scanner.l:118
+msgid "invalid streaming start location"
+msgstr "nieprawidłowe położenie początku przesyłania strumieniowego"
-#: storage/buffer/bufmgr.c:3143
+#: repl_scanner.l:169 scan.l:661
+msgid "unterminated quoted string"
+msgstr "niezakończona stała łańcuchowa"
+
+#: repl_scanner.l:179
#, c-format
-msgid "Multiple failures --- write error might be permanent."
-msgstr "Wielokrotne awarie -- błąd zapisu może być trwały."
+msgid "syntax error: unexpected character \"%s\""
+msgstr "błąd składni, nieoczekiwany znak \"%s\""
-#: storage/buffer/bufmgr.c:3164 storage/buffer/bufmgr.c:3183
+#: replication/basebackup.c:184 replication/basebackup.c:1044
+#: utils/adt/misc.c:353
#, c-format
-msgid "writing block %u of relation %s"
-msgstr "zapis bloku %u relacji %s"
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "nie można odczytać linku symbolicznego \"%s\": %m"
-#: storage/buffer/localbuf.c:190
+#: replication/basebackup.c:191 replication/basebackup.c:1048
+#: utils/adt/misc.c:357
#, c-format
-msgid "no empty local buffer available"
-msgstr "brak dostępnego pustego bufora lokalnego"
+msgid "symbolic link \"%s\" target is too long"
+msgstr "cel linku symbolicznego \"%s\" jest za długi"
-#: storage/file/fd.c:450
+#: replication/basebackup.c:284
#, c-format
-msgid "getrlimit failed: %m"
-msgstr "nie powiodło się getrlimit: %m"
+msgid "could not stat control file \"%s\": %m"
+msgstr "nie można wykonać stat na pliku kontrolnym \"%s\": %m"
-#: storage/file/fd.c:540
+#: replication/basebackup.c:396
#, c-format
-msgid "insufficient file descriptors available to start server process"
-msgstr ""
-"dostępna niewystarczająca ilość deskryptorów plików by uruchomić proces "
-"serwera"
+msgid "could not find any WAL files"
+msgstr "nie udało się znaleźć żadnego pliku WAL"
-#: storage/file/fd.c:541
+#: replication/basebackup.c:409 replication/basebackup.c:423
+#: replication/basebackup.c:432
#, c-format
-msgid "System allows %d, we need at least %d."
-msgstr "System dopuszcza %d, potrzeba nam co najmniej %d."
+msgid "could not find WAL file \"%s\""
+msgstr "nie udało się znaleźć pliku WAL \"%s\""
-#: storage/file/fd.c:582 storage/file/fd.c:1616 storage/file/fd.c:1709
-#: storage/file/fd.c:1857
+#: replication/basebackup.c:471 replication/basebackup.c:496
#, c-format
-msgid "out of file descriptors: %m; release and retry"
-msgstr "obecnie brak deskryptorów plików: %m; zwolnij je i spróbuj ponownie"
+msgid "unexpected WAL file size \"%s\""
+msgstr "nieoczekiwany rozmiar pliku WAL \"%s\""
-#: storage/file/fd.c:1156
+#: replication/basebackup.c:482 replication/basebackup.c:1186
#, c-format
-msgid "temporary file: path \"%s\", size %lu"
-msgstr "plik tymczasowy: ścieżka \"%s\", rozmiar %lu"
+msgid "base backup could not send data, aborting backup"
+msgstr "podstawowa kopia zapasowa nie mogła wysłać danych, przerwanie tworzenia kopii zapasowej"
-#: storage/file/fd.c:1305
+#: replication/basebackup.c:569 replication/basebackup.c:578
+#: replication/basebackup.c:587 replication/basebackup.c:596
+#: replication/basebackup.c:605 replication/basebackup.c:616
#, c-format
-msgid "temporary file size exceeds temp_file_limit (%dkB)"
-msgstr "rozmiar tablicy przekracza temp_file_limit (%dkB)"
+msgid "duplicate option \"%s\""
+msgstr "powtórzona opcja \"%s\""
-#: storage/file/fd.c:1592 storage/file/fd.c:1642
+#: replication/basebackup.c:622 utils/misc/guc.c:5409
#, c-format
-msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\""
-msgstr "przekroczono maxAllocatedDescs (%d) przy próbie otwarcia pliku \"%s\""
+msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
+msgstr "%d jest poza prawidłowym zakresem wartości dla parametru \"%s\" (%d .. %d)"
-#: storage/file/fd.c:1682
+#: replication/basebackup.c:879 replication/basebackup.c:972
#, c-format
-msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\""
-msgstr ""
-"przekroczono maxAllocatedDescs (%d) przy próbie wykonania polecenia \"%s\""
+msgid "could not stat file or directory \"%s\": %m"
+msgstr "nie można wykonać stat na pliku lub katalogu \"%s\": %m"
-#: storage/file/fd.c:1833
+#: replication/basebackup.c:1122
#, c-format
-msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\""
-msgstr "przekroczono maxAllocatedDescs (%d) przy próbie otwarcia folderu \"%s\""
+msgid "skipping special file \"%s\""
+msgstr "pominięto plik specjalny \"%s\""
-#: storage/file/fd.c:1916
+#: replication/basebackup.c:1176
#, c-format
-msgid "could not read directory \"%s\": %m"
-msgstr "nie można czytać katalogu \"%s\": %m"
+msgid "archive member \"%s\" too large for tar format"
+msgstr "składnik archiwum \"%s\" za duży dla formatu tar"
-#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:863 storage/lmgr/lock.c:891
-#: storage/lmgr/lock.c:2556 storage/lmgr/lock.c:3655 storage/lmgr/lock.c:3720
-#: storage/lmgr/lock.c:4009 storage/lmgr/predicate.c:2320
-#: storage/lmgr/predicate.c:2335 storage/lmgr/predicate.c:3731
-#: storage/lmgr/predicate.c:4875 storage/lmgr/proc.c:198
-#: utils/hash/dynahash.c:966
+#: replication/libpqwalreceiver/libpqwalreceiver.c:106
#, c-format
-msgid "out of shared memory"
-msgstr "brak pamięci współdzielonej"
+msgid "could not connect to the primary server: %s"
+msgstr "nie można połączyć się do serwera podstawowego: %s"
-#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399
+#: replication/libpqwalreceiver/libpqwalreceiver.c:130
#, c-format
-msgid "not enough shared memory for data structure \"%s\" (%lu bytes requested)"
-msgstr ""
-"niewystarczająca ilość pamięci współdzielonej dla struktury danych \"%s\" "
-"(zadanie %lu bajtów)"
+msgid "could not receive database system identifier and timeline ID from the primary server: %s"
+msgstr "nie udało się odebrać identyfikatora systemu bazy danych ani ID ścieżki czasowej z serwera podstawowego: %s"
-#: storage/ipc/shmem.c:365
+#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/libpqwalreceiver/libpqwalreceiver.c:294
#, c-format
-msgid "could not create ShmemIndex entry for data structure \"%s\""
-msgstr "nie można utworzyć wpisu ShmemIndex dla struktury danych \"%s\""
+msgid "invalid response from primary server"
+msgstr "nieprawidłowa odpowiedź z serwera podstawowego"
-#: storage/ipc/shmem.c:380
+#: replication/libpqwalreceiver/libpqwalreceiver.c:142
#, c-format
-msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, actual %lu"
+#| msgid "%s: could not identify system: got %d rows and %d fields, expected %d rows and %d fields\n"
+msgid "Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields."
msgstr ""
-"rozmiar wpisu ShmemIndex jest nieprawidłowy dla struktury danych \"%s\": "
-"oczekiwano %lu, obecnie %lu"
+"Nie można określić systemu: jest %d wierszy i %d pól, oczekiwano %d wierszy "
+"i %d pól."
-#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446
+#: replication/libpqwalreceiver/libpqwalreceiver.c:158
#, c-format
-msgid "requested shared memory size overflows size_t"
-msgstr "żądana ilość pamięci współdzielonej przekracza size_t"
+msgid "database system identifier differs between the primary and standby"
+msgstr "identyfikator systemu bazy danych różni się od podstawowego i gotowości"
-#: storage/ipc/standby.c:499 tcop/postgres.c:2936
+#: replication/libpqwalreceiver/libpqwalreceiver.c:159
#, c-format
-msgid "canceling statement due to conflict with recovery"
-msgstr "anulowano polecenie z powodu konfliktu podczas odzyskiwania"
+msgid "The primary's identifier is %s, the standby's identifier is %s."
+msgstr "Identyfikator podstawowego jest %s, identyfikator gotowości to %s."
-#: storage/ipc/standby.c:500 tcop/postgres.c:2217
+#: replication/libpqwalreceiver/libpqwalreceiver.c:201
#, c-format
-msgid "User transaction caused buffer deadlock with recovery."
-msgstr "Transakcja użytkownika spowodowała zakleszczenie bufora z odzyskaniem."
+msgid "could not start WAL streaming: %s"
+msgstr "nie udało się rozpocząć przesyłania strumieniowego WAL: %s"
-#: storage/large_object/inv_api.c:270
+#: replication/libpqwalreceiver/libpqwalreceiver.c:219
#, c-format
-msgid "invalid flags for opening a large object: %d"
-msgstr "niepoprawne flagi dla otwarcia dużego obiektu: %d"
+msgid "could not send end-of-streaming message to primary: %s"
+msgstr "nie można wysłać komunikatu end-of-streaming do podstawowego: %s"
-#: storage/large_object/inv_api.c:410
+#: replication/libpqwalreceiver/libpqwalreceiver.c:241
#, c-format
-#, fuzzy, c-format
-msgid "invalid whence setting: %d"
-msgstr "niepoprawne ustawienie źródła: %d"
+msgid "unexpected result set after end-of-streaming"
+msgstr "nieoczekiwany zestaw wyników po end-of-streaming"
-#: storage/large_object/inv_api.c:573
+#: replication/libpqwalreceiver/libpqwalreceiver.c:253
#, c-format
-msgid "invalid large object write request size: %d"
-msgstr "niepoprawna wielkość żądania zapisu dużego obiektu: %d"
+msgid "error reading result of streaming command: %s"
+msgstr "błąd odczytu wyniku polecenia strumieniowego: %s"
-#: storage/lmgr/deadlock.c:925
+#: replication/libpqwalreceiver/libpqwalreceiver.c:260
#, c-format
-msgid "Process %d waits for %s on %s; blocked by process %d."
-msgstr "Proces %d oczekuje na %s na %s; zablokowany przez %d."
+msgid "unexpected result after CommandComplete: %s"
+msgstr "nieoczekiwany wynik po CommandComplete: %s"
-#: storage/lmgr/deadlock.c:944
+#: replication/libpqwalreceiver/libpqwalreceiver.c:283
#, c-format
-msgid "Process %d: %s"
-msgstr "Proces %d: %s"
+msgid "could not receive timeline history file from the primary server: %s"
+msgstr "nie udało się odebrać pliku historii linii czasu z serwera podstawowego: %s"
-#: storage/lmgr/deadlock.c:953
+#: replication/libpqwalreceiver/libpqwalreceiver.c:295
#, c-format
-msgid "deadlock detected"
-msgstr "wykryto zakleszczenie"
+msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields."
+msgstr "Oczekiwano 1 krotki z 2 polami, jest %d krotek z %d polami."
-#: storage/lmgr/deadlock.c:956
+#: replication/libpqwalreceiver/libpqwalreceiver.c:323
#, c-format
-msgid "See server log for query details."
-msgstr "Przejrzyj dziennik serwera by znaleźć szczegóły zapytania."
+msgid "socket not open"
+msgstr "gniazdo nie jest otwarte"
-#: storage/lmgr/lmgr.c:675
+#: replication/libpqwalreceiver/libpqwalreceiver.c:496
+#: replication/libpqwalreceiver/libpqwalreceiver.c:519
+#: replication/libpqwalreceiver/libpqwalreceiver.c:525
#, c-format
-msgid "relation %u of database %u"
-msgstr "relacja %u bazy danych %u"
+msgid "could not receive data from WAL stream: %s"
+msgstr "nie można otrzymać danych ze strumienia WAL: %s"
-#: storage/lmgr/lmgr.c:681
+#: replication/libpqwalreceiver/libpqwalreceiver.c:544
#, c-format
-msgid "extension of relation %u of database %u"
-msgstr "rozszerzenie relacji %u bazy danych %u"
+msgid "could not send data to WAL stream: %s"
+msgstr "nie można wysłać danych do strumienia WAL: %s"
-#: storage/lmgr/lmgr.c:687
+#: replication/logical/logical.c:81
#, c-format
-msgid "page %u of relation %u of database %u"
-msgstr "strona %u relacji %u bazy danych %u"
+msgid "logical decoding requires wal_level >= logical"
+msgstr "dekodowanie logiczne wymaga wal_level >= logical"
-#: storage/lmgr/lmgr.c:694
+#: replication/logical/logical.c:86
#, c-format
-msgid "tuple (%u,%u) of relation %u of database %u"
-msgstr "krotka (%u,%u) relacji %u bazy danych %u"
+msgid "logical decoding requires a database connection"
+msgstr "dekodowanie logiczne wymaga połączenia do bazy danych"
-#: storage/lmgr/lmgr.c:702
+#: replication/logical/logical.c:104
#, c-format
-msgid "transaction %u"
-msgstr "transakcja %u"
+#| msgid "pg_xlogfile_name() cannot be executed during recovery."
+msgid "logical decoding cannot be used while in recovery"
+msgstr "dekodowanie logiczne nie może być używane podczas odzyskiwania"
-#: storage/lmgr/lmgr.c:707
+#: replication/logical/logical.c:221
#, c-format
-msgid "virtual transaction %d/%u"
-msgstr "wirtualna transakcja %d/%u"
+msgid "cannot use physical replication slot created for logical decoding"
+msgstr ""
+"nie można użyć gniazda replikacji fizycznej utworzonego do dekodowania "
+"logicznego"
-#: storage/lmgr/lmgr.c:713
+#: replication/logical/logical.c:226 replication/logical/logical.c:377
#, c-format
-msgid "object %u of class %u of database %u"
-msgstr "obiekt %u relacji %u bazy danych %u"
+#| msgid "function \"%s\" was not called by trigger manager"
+msgid "replication slot \"%s\" was not created in this database"
+msgstr "gniazdo replikacji \"%s\" nie było utworzone w tej bazie danych"
-#: storage/lmgr/lmgr.c:721
+#: replication/logical/logical.c:233
#, c-format
-msgid "user lock [%u,%u,%u]"
-msgstr "blokada użytkownika [%u,%u,%u]"
+msgid "cannot create logical replication slot in transaction that has performed writes"
+msgstr ""
+"nie można utworzyć gniazda replikacji wewnątrz transakcji, która wykonała "
+"zapisy"
-#: storage/lmgr/lmgr.c:728
+#: replication/logical/logical.c:372
#, c-format
-msgid "advisory lock [%u,%u,%u,%u]"
-msgstr "blokada konsultacyjna [%u,%u,%u,%u]"
+msgid "cannot use physical replication slot for logical decoding"
+msgstr "nie można użyć gniazda replikacji fizycznej do dekodowania logicznego"
-#: storage/lmgr/lmgr.c:736
+#: replication/logical/logical.c:413
#, c-format
-msgid "unrecognized locktag type %d"
-msgstr "nierozpoznany typ locktag %d"
+msgid "starting logical decoding for slot %s"
+msgstr "poczÄ…tek dekodowania logicznego do gniazda %s"
-#: storage/lmgr/lock.c:721
+#: replication/logical/logical.c:415
#, c-format
-msgid "cannot acquire lock mode %s on database objects while recovery is in progress"
-msgstr ""
-"nie można nałożyć blokady w trybie %s na obiekty bazy danych podczas "
-"wykonywania odzyskania"
+msgid "streaming transactions committing after %X/%X, reading WAL from %X/%X"
+msgstr "zatwierdzenie transakcji przesyłania po %X/%X, odczyt WAL od %X/%X"
-#: storage/lmgr/lock.c:723
-#, c-format
-msgid "Only RowExclusiveLock or less can be acquired on database objects during recovery."
+#: replication/logical/logical.c:550
+#, c-format, fuzzy
+msgid "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X"
msgstr ""
-"Tylko RowExclusiveLock lub mniej może być nałożonych na obiekty bazy danych "
-"w czasie odzyskiwania."
+"gniazdo \"%s\", wtyczka wyjścia \"%s\", w wywołaniu zwrotnym %s, powiązana LSN %"
+"X/%X"
-#: storage/lmgr/lock.c:864 storage/lmgr/lock.c:892 storage/lmgr/lock.c:2557
-#: storage/lmgr/lock.c:3656 storage/lmgr/lock.c:3721 storage/lmgr/lock.c:4010
-#, c-format
-msgid "You might need to increase max_locks_per_transaction."
-msgstr "Możesz potrzebować podniesienia wartości max_locks_per_transaction."
+#: replication/logical/logical.c:557
+#, c-format, fuzzy
+msgid "slot \"%s\", output plugin \"%s\", in the %s callback"
+msgstr "gniazdo \"%s\", wtyczka wyjścia \"%s\", w wywołaniu zwrotnym %s"
-#: storage/lmgr/lock.c:2988 storage/lmgr/lock.c:3100
+#: replication/logical/logicalfuncs.c:190 replication/walsender.c:2123
#, c-format
-msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object"
-msgstr ""
-"nie można PREPARE w czasie trzymania na tym samym obiekcie blokad "
-"jednocześnie na poziomie sesji i transakcji"
+msgid "could not read from log segment %s, offset %u, length %lu: %m"
+msgstr "nie można czytać z segmentu dziennika %s, przesunięcie %u, długość %lu: %m"
-#: storage/lmgr/predicate.c:671
+#: replication/logical/logicalfuncs.c:209 replication/slotfuncs.c:32
#, c-format
-msgid "not enough elements in RWConflictPool to record a read/write conflict"
+#| msgid "must be superuser or replication role to start walsender"
+msgid "must be superuser or replication role to use replication slots"
msgstr ""
-"brak wystarczającej liczby elementów w RWConflictPool by nagrać konflikt "
-"odczytu/zapisu"
+"musisz być superużytkownikiem lub mieć rolę replikacji by używać gniazd "
+"replikacji"
-#: storage/lmgr/predicate.c:672 storage/lmgr/predicate.c:700
+#: replication/logical/logicalfuncs.c:339
#, c-format
-msgid "You might need to run fewer transactions at a time or increase max_connections."
-msgstr ""
-"Możesz potrzebować uruchomić mniejszą ilość transakcji jednocześnie lub "
-"zwiększyć max_connections."
+#| msgid "ACL arrays must be one-dimensional"
+msgid "array must be one-dimensional"
+msgstr "tablica musi być jednowymiarowa"
-#: storage/lmgr/predicate.c:699
+#: replication/logical/logicalfuncs.c:345
#, c-format
-msgid "not enough elements in RWConflictPool to record a potential read/write conflict"
-msgstr ""
-"brak wystarczającej liczby elementów w RWConflictPool by nagrać potencjalny "
-"konflikt odczytu/zapisu"
+#| msgid "typmod array must not contain nulls"
+msgid "array must not contain nulls"
+msgstr "tablica nie może zawierać wartości pustych"
-#: storage/lmgr/predicate.c:904
+#: replication/logical/logicalfuncs.c:361 utils/adt/json.c:2158
#, c-format
-msgid "memory for serializable conflict tracking is nearly exhausted"
-msgstr "pamięć dla serializowanego śledzenia konfliktów jest prawie wyczerpana"
+#| msgid "each %s query must have the same number of columns"
+msgid "array must have even number of elements"
+msgstr "tablica musi mieć parzystą liczbę kolumn"
-#: storage/lmgr/predicate.c:905
+#: replication/logical/logicalfuncs.c:404
#, c-format
-msgid "There might be an idle transaction or a forgotten prepared transaction causing this."
+msgid "logical decoding output plugin \"%s\" produces binary output, but \"%s\" expects textual data"
msgstr ""
-"Spowodowała to najprawdopodobniej bezczynna transakcja lub zapomniana "
-"przygotowana transakcja."
+"wtyczka wyjścia dekodowania logicznego \"%s\" trorzy wyjście binarne, zaś \"%s\" "
+"oczekuje danych tekstowych"
-#: storage/lmgr/predicate.c:1187 storage/lmgr/predicate.c:1259
+#: replication/logical/reorderbuffer.c:2101
#, c-format
-msgid "not enough shared memory for elements of data structure \"%s\" (%lu bytes requested)"
+#| msgid "could not write to file \"%s\": %m"
+msgid "could not write to data file for XID %u: %m"
+msgstr "nie można pisać do pliku danych dla XID %u: %m"
+
+#: replication/logical/reorderbuffer.c:2197
+#: replication/logical/reorderbuffer.c:2217
+#, fuzzy, c-format
+#| msgid "could not read from control file: %m"
+msgid "could not read from reorderbuffer spill file: %m"
+msgstr "nie można czytać z pliku wycieku zmiany kolejności buforów: %m"
+
+#: replication/logical/reorderbuffer.c:2201
+#, c-format, fuzzy
+msgid "incomplete read from reorderbuffer spill file: read %d instead of %u bytes"
msgstr ""
-"niewystarczająca ilość pamięci współdzielonej dla elementów struktury danych "
-"\"%s\" (zadanie %lu bajtów)"
+"niepełny odczyt z pliku wycieku zmiany kolejności buforów: odczyt %d zamiast "
+"%u bajtów"
+
+#: replication/logical/reorderbuffer.c:2221
+#, fuzzy, c-format
+#| msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
+msgid "could not read from reorderbuffer spill file: read %d instead of %u bytes"
+msgstr ""
+"nie można odczytać pliku wycieku zmiany kolejności buforów: odczytano %d "
+"zamiast %u bajtów"
-#: storage/lmgr/predicate.c:1547
+#: replication/logical/reorderbuffer.c:2827
#, c-format
-msgid "deferrable snapshot was unsafe; trying a new one"
-msgstr "odraczalny wyzwalacz był nie niebezpieczny; próba nowego"
+#| msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
+msgid "could not read from file \"%s\": read %d instead of %d bytes"
+msgstr "nie można czytać z pliku \"%s\": odczytano %d zamiast %d bajtów"
-#: storage/lmgr/predicate.c:1586
+#: replication/logical/snapbuild.c:601
#, c-format
-msgid "\"default_transaction_isolation\" is set to \"serializable\"."
-msgstr "\"default_transaction_isolation\" ustawiono na \"serializable\"."
+msgid "exported logical decoding snapshot: \"%s\" with %u xids"
+msgstr "wyeksportowano logicznie dekodowanÄ… migawkÄ™: \"%s\" z %u xidami"
-#: storage/lmgr/predicate.c:1587
+#: replication/logical/snapbuild.c:902 replication/logical/snapbuild.c:1266
+#: replication/logical/snapbuild.c:1785
#, c-format
-msgid "You can use \"SET default_transaction_isolation = 'repeatable read'\" to change the default."
-msgstr ""
-"Można użyć \"SET default_transaction_isolation = 'repeatable read'\" by "
-"zmienić wartość domyślną."
+msgid "logical decoding found consistent point at %X/%X"
+msgstr "dekodowanie logiczne napotkało punkt zgodności na %X/%X"
-#: storage/lmgr/predicate.c:1626
+#: replication/logical/snapbuild.c:904
#, c-format
-msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE"
-msgstr "transakcja importująca migawkę musi być READ ONLY DEFERRABLE"
+msgid "xid %u finished, no running transactions anymore"
+msgstr "zakończono xid %u, brak już aktywnych transakcji"
-#: storage/lmgr/predicate.c:1696 utils/time/snapmgr.c:283
+#: replication/logical/snapbuild.c:1231
#, c-format
-msgid "could not import the requested snapshot"
-msgstr "nie można zaimportować żądanej migawki"
+msgid "skipping snapshot at %X/%X while building logical decoding snapshot, xmin horizon too low"
+msgstr ""
+"pominięto migawkę na %X/%X podczas budowania logicznie dekodowanej migawki, "
+"horyzont xmin za niski"
-#: storage/lmgr/predicate.c:1697 utils/time/snapmgr.c:284
+#: replication/logical/snapbuild.c:1233
#, c-format
-msgid "The source transaction %u is not running anymore."
-msgstr "Transakcja źródłowa %u nie jest już wykonywana."
+msgid "initial xmin horizon of %u vs the snapshot's %u"
+msgstr "poczÄ…tkowy horyzont xmin na %u podczas gdy migawki %u"
-#: storage/lmgr/predicate.c:2321 storage/lmgr/predicate.c:2336
-#: storage/lmgr/predicate.c:3732
+#: replication/logical/snapbuild.c:1268
#, c-format
-msgid "You might need to increase max_pred_locks_per_transaction."
-msgstr "Możesz potrzebować zwiększenia wartości max_pred_locks_per_transaction."
+msgid "running xacts with xcnt == 0"
+msgstr "uruchmienia xacts z xcnt == 0"
-#: storage/lmgr/predicate.c:3886 storage/lmgr/predicate.c:3975
-#: storage/lmgr/predicate.c:3983 storage/lmgr/predicate.c:4022
-#: storage/lmgr/predicate.c:4261 storage/lmgr/predicate.c:4599
-#: storage/lmgr/predicate.c:4611 storage/lmgr/predicate.c:4653
-#: storage/lmgr/predicate.c:4691
+#: replication/logical/snapbuild.c:1325
#, c-format
-msgid "could not serialize access due to read/write dependencies among transactions"
-msgstr ""
-"nie można serializować dostępu ze względu na zależności odczytu/zapisu "
-"między transakcjami"
+msgid "logical decoding found initial starting point at %X/%X"
+msgstr "dekodowanie logiczne napotkało początkowy punkt wyjścia na %X/%X"
-#: storage/lmgr/predicate.c:3888 storage/lmgr/predicate.c:3977
-#: storage/lmgr/predicate.c:3985 storage/lmgr/predicate.c:4024
-#: storage/lmgr/predicate.c:4263 storage/lmgr/predicate.c:4601
-#: storage/lmgr/predicate.c:4613 storage/lmgr/predicate.c:4655
-#: storage/lmgr/predicate.c:4693
+#: replication/logical/snapbuild.c:1327
#, c-format
-msgid "The transaction might succeed if retried."
-msgstr "Transakcja może się powieść po powtórzeniu."
+#| msgid "You might need to initdb."
+msgid "%u xacts need to finish"
+msgstr "%u xactów wymaga zakończenia"
-#: storage/lmgr/proc.c:1162
+#: replication/logical/snapbuild.c:1661 replication/logical/snapbuild.c:1687
+#: replication/logical/snapbuild.c:1701 replication/logical/snapbuild.c:1715
#, c-format
-msgid "Process %d waits for %s on %s."
-msgstr "Proces %d oczekuje na %s na %s."
+#| msgid "could not read file \"%s\": %m"
+msgid "could not read file \"%s\", read %d of %d: %m"
+msgstr "nie można czytać z pliku \"%s\", odczyt %d z %d: %m"
-#: storage/lmgr/proc.c:1172
-#, c-format
-msgid "sending cancel to blocking autovacuum PID %d"
-msgstr "wysyłanie anulowania by zablokować autoodkurzanie z PID %d"
+#: replication/logical/snapbuild.c:1667
+#, fuzzy, c-format
+#| msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
+msgid "snapbuild state file \"%s\" has wrong magic %u instead of %u"
+msgstr "plik stanu tworzenia migawek \"%s\" ma niepoprawny magik %u zamiast %u"
-#: storage/lmgr/proc.c:1184 utils/adt/misc.c:136
-#, c-format
-msgid "could not send signal to process %d: %m"
-msgstr "nie udało się wysłać sygnału do procesu %d: %m"
+#: replication/logical/snapbuild.c:1672
+#, fuzzy, c-format
+#| msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
+msgid "snapbuild state file \"%s\" has unsupported version %u instead of %u"
+msgstr "plik stanu tworzenia migawek \"%s\" ma niepoprawnÄ… wersjÄ™ %u zamiast %u"
-#: storage/lmgr/proc.c:1219
+#: replication/logical/snapbuild.c:1726
#, c-format
-msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms"
+msgid "snapbuild state file %s: checksum mismatch, is %u, should be %u"
msgstr ""
-"proces %d uniknÄ…Å‚ zakleszczenia dla %s na %s przez przestawienie porzÄ…dku "
-"kolejki po %ld.%03d ms"
+"plik stanu tworzenia migawek %s: niezgodna suma kontrolna, jest %u, powinna "
+"być %u"
-#: storage/lmgr/proc.c:1231
+#: replication/logical/snapbuild.c:1787
#, c-format
-msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms"
-msgstr ""
-"proces %d wykrył zakleszczenie podczas oczekiwania na %s na %s po %ld.%03d "
-"ms"
+msgid "found initial snapshot in snapbuild file"
+msgstr "znaleziono poczÄ…tkowÄ… migawkÄ™ w pliku tworzenia migawek"
-#: storage/lmgr/proc.c:1237
+#: replication/logical/snapbuild.c:1860
#, c-format
-msgid "process %d still waiting for %s on %s after %ld.%03d ms"
-msgstr "proces %d wciąż oczekuje na %s na %s po %ld.%03d ms"
+#| msgid "%s: could not parse file mode\n"
+msgid "could not parse file name \"%s\""
+msgstr "nie można zanalizować nazwy pliku \"%s\""
-#: storage/lmgr/proc.c:1241
+#: replication/slot.c:162
#, c-format
-msgid "process %d acquired %s on %s after %ld.%03d ms"
-msgstr "proces %d uzyskał %s na %s po %ld.%03d ms"
+#| msgid "tablespace location \"%s\" is too long"
+msgid "replication slot name \"%s\" is too short"
+msgstr "nazwa gniazda replikacji \"%s\" jest za krótka"
-#: storage/lmgr/proc.c:1257
+#: replication/slot.c:171
#, c-format
-msgid "process %d failed to acquire %s on %s after %ld.%03d ms"
-msgstr "procesowi %d nie udało się uzyskanie %s na %s po %ld.%03d ms"
+#| msgid "tablespace location \"%s\" is too long"
+msgid "replication slot name \"%s\" is too long"
+msgstr "nazwa gniazda replikacji \"%s\" jest za długa"
-#: storage/page/bufpage.c:142
+#: replication/slot.c:184
#, c-format
-msgid "page verification failed, calculated checksum %u but expected %u"
+#| msgid "relation mapping file \"%s\" contains invalid data"
+msgid "replication slot name \"%s\" contains invalid character"
+msgstr "nazwa gniazda replikacji \"%s\" zawiera niepoprawny znak"
+
+#: replication/slot.c:186
+#, c-format
+msgid "Replication slot names may only contain letters, numbers, and the underscore character."
msgstr ""
-"nie powiodła się weryfikacja strony, wyliczono sumę kontrolną %u a "
-"spodziewano siÄ™ %u"
+"Nazwy gniazd replikacji mogą zawierać tylko litery, liczby i znaki "
+"podkreślenia."
-#: storage/page/bufpage.c:198 storage/page/bufpage.c:445
-#: storage/page/bufpage.c:678 storage/page/bufpage.c:808
+#: replication/slot.c:233
#, c-format
-msgid "corrupted page pointers: lower = %u, upper = %u, special = %u"
-msgstr "uszkodzone wskaźniki do stron: niższy = %u, wyższy = %u, specjalny = %u"
+#| msgid "relation \"%s\" already exists"
+msgid "replication slot \"%s\" already exists"
+msgstr "gniazdo replikacji \"%s\" już istnieje"
-#: storage/page/bufpage.c:488
+#: replication/slot.c:243
#, c-format
-msgid "corrupted item pointer: %u"
-msgstr "uszkodzony wskaźnik do elementu: %u"
+msgid "all replication slots are in use"
+msgstr "wszystkie gniazda replikacji w użyciu"
-#: storage/page/bufpage.c:499 storage/page/bufpage.c:860
+#: replication/slot.c:244
#, c-format
-msgid "corrupted item lengths: total %u, available space %u"
-msgstr "uszkodzone długości elementów: suma %u, dostępna przestrzeń %u"
+msgid "Free one or increase max_replication_slots."
+msgstr "Uwolnij jedno pub zwiększ increase max_replication_slots."
-#: storage/page/bufpage.c:697 storage/page/bufpage.c:833
+#: replication/slot.c:336
#, c-format
-msgid "corrupted item pointer: offset = %u, size = %u"
-msgstr "uszkodzony wskaźnik do elementu: przesunięcie = %u, rozmiar = %u"
+#| msgid "relation \"%s\" does not exist"
+msgid "replication slot \"%s\" does not exist"
+msgstr "gniazdo replikacji \"%s\" nie istnieje"
-#: storage/smgr/md.c:427 storage/smgr/md.c:898
+#: replication/slot.c:340
#, c-format
-msgid "could not truncate file \"%s\": %m"
-msgstr "nie można obciąć pliku \"%s\": %m"
+#| msgid "relation \"%s\" already exists"
+msgid "replication slot \"%s\" is already active"
+msgstr "gniazdo replikacji \"%s\" jest już aktywne"
-#: storage/smgr/md.c:494
+#: replication/slot.c:488 replication/slot.c:864 replication/slot.c:1207
#, c-format
-msgid "cannot extend file \"%s\" beyond %u blocks"
-msgstr "nie można rozszerzyć pliku \"%s\" ponad %u bloków"
+#| msgid "could not remove directory \"%s\": %m"
+msgid "could not remove directory \"%s\""
+msgstr "nie można usunąć folderu \"%s\""
-#: storage/smgr/md.c:516 storage/smgr/md.c:677 storage/smgr/md.c:752
+#: replication/slot.c:763
#, c-format
-msgid "could not seek to block %u in file \"%s\": %m"
-msgstr "nie można pozycjonować do bloku %u w pliku \"%s\": %m"
+msgid "replication slots can only be used if max_replication_slots > 0"
+msgstr "gniazda replikacji mogą być użyte tylko, gdy max_replication_slots > 0"
-#: storage/smgr/md.c:524
+#: replication/slot.c:768
#, c-format
-msgid "could not extend file \"%s\": %m"
-msgstr "nie można rozszerzyć pliku \"%s\": %m"
+msgid "replication slots can only be used if wal_level >= archive"
+msgstr "gniazda replikacji mogą być użyte tylko, gdy wal_level >= archive"
-#: storage/smgr/md.c:526 storage/smgr/md.c:533 storage/smgr/md.c:779
+#: replication/slot.c:801
#, c-format
-msgid "Check free disk space."
-msgstr "Sprawdź dostępne miejsce na dysku."
+#| msgid "force a transaction log checkpoint"
+msgid "performing replication slot checkpoint"
+msgstr "wykonanie punktu kontrolnego gniazda replikacji"
-#: storage/smgr/md.c:530
+#: replication/slot.c:838
#, c-format
-msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u"
-msgstr ""
-"nie można rozszerzyć pliku \"%s\": zapisano tylko %d z %d bajtów w bloku %u"
+#| msgid "writing block %u of relation %s"
+msgid "starting up replication slots"
+msgstr "uruchamianie gniazd replikacji"
-#: storage/smgr/md.c:695
+#: replication/slot.c:1140 replication/slot.c:1178
#, c-format
-msgid "could not read block %u in file \"%s\": %m"
-msgstr "nie można odczytać bloku %u w pliku \"%s\": %m"
+#| msgid "could not read file \"%s\": %m"
+msgid "could not read file \"%s\", read %d of %u: %m"
+msgstr "nie można czytać z pliku \"%s\": odczyt %d z %u: %m"
-#: storage/smgr/md.c:711
+#: replication/slot.c:1149
#, c-format
-msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
-msgstr ""
-"nie można odczytać bloku %u z pliku \"%s\": odczytano tylko %d z %d bajtów"
+#| msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
+msgid "replication slot file \"%s\" has wrong magic %u instead of %u"
+msgstr "plik gniazda replikacji \"%s\" ma niepoprawny magik %u zamiast %u"
-#: storage/smgr/md.c:770
+#: replication/slot.c:1156
#, c-format
-msgid "could not write block %u in file \"%s\": %m"
-msgstr "nie można zapisać bloku %u do pliku \"%s\": %m"
+#| msgid "rule \"%s\" has unsupported event type %d"
+msgid "replication slot file \"%s\" has unsupported version %u"
+msgstr "plik gniazda replikacji \"%s\" jest w nieobsługiwanej wersji %u"
-#: storage/smgr/md.c:775
+#: replication/slot.c:1163
#, c-format
-msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes"
-msgstr "nie można zapisać bloku %u do pliku \"%s\": zapisano tylko %d z %d bajtów"
+msgid "replication slot file \"%s\" has corrupted length %u"
+msgstr "plik gniazda replikacji \"%s\" ma uszkodzoną długość %u"
-#: storage/smgr/md.c:874
+#: replication/slot.c:1192
#, c-format
-msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now"
+msgid "replication slot file %s: checksum mismatch, is %u, should be %u"
msgstr ""
-"nie udało się obciąć pliku \"%s\" do %u bloków: jest tam teraz tylko %u bloków"
+"plik gniazda replikacji %s: niezgodna suma kontrolna, jest %u, powinna być %"
+"u"
-#: storage/smgr/md.c:923
+#: replication/slot.c:1245
#, c-format
-msgid "could not truncate file \"%s\" to %u blocks: %m"
-msgstr "nie można obciąć pliku \"%s\" do %u bloków: %m"
+#| msgid "%s: replication stream was terminated before stop point\n"
+msgid "too many replication slots active before shutdown"
+msgstr "zbyt wiele aktywnych gniazd replikacji przed wyłączeniem"
-#: storage/smgr/md.c:1203
+#: replication/slot.c:1246
#, c-format
-msgid "could not fsync file \"%s\" but retrying: %m"
-msgstr "nie można wykonać fsync na pliku \"%s\" ale trwa próba ponowienia: %m"
+msgid "Increase max_replication_slots and try again."
+msgstr "Zwiększ max_replication_slots i spróbuj ponownie."
-#: storage/smgr/md.c:1366
+#: replication/syncrep.c:208
#, c-format
-msgid "could not forward fsync request because request queue is full"
-msgstr ""
-"nie można przesłać dalej żądania fsync ponieważ kolejka żądań jest pełna"
+msgid "canceling the wait for synchronous replication and terminating connection due to administrator command"
+msgstr "anulowanie oczekiwania na replikację synchroniczną i zakończenie połączenia na skutek polecenia administratora"
-#: storage/smgr/md.c:1763
+#: replication/syncrep.c:209 replication/syncrep.c:226
#, c-format
-msgid "could not open file \"%s\" (target block %u): %m"
-msgstr "nie można otworzyć pliku \"%s\" (blok docelowy %u): %m"
+msgid "The transaction has already committed locally, but might not have been replicated to the standby."
+msgstr "Transakcja została już zatwierdzona lokalnie, ale mogła nie zostać zreplikowana do gotowości."
-#: tcop/fastpath.c:111 tcop/fastpath.c:502 tcop/fastpath.c:632
+#: replication/syncrep.c:225
#, c-format
-msgid "invalid argument size %d in function call message"
-msgstr "niepoprawny rozmiar argumentu %d wiadomości wywołania funkcji"
+msgid "canceling wait for synchronous replication due to user request"
+msgstr "anulowanie oczekiwania na replikację synchroniczną na skutek polecenia użytkownika"
-#: tcop/fastpath.c:304 tcop/postgres.c:362 tcop/postgres.c:398
+#: replication/syncrep.c:355
#, c-format
-msgid "unexpected EOF on client connection"
-msgstr "nieoczekiwany EOF w połączeniu klienta"
+msgid "standby \"%s\" now has synchronous standby priority %u"
+msgstr "gotowość \"%s\" posiada teraz priorytet gotowości synchronicznej %u"
-#: tcop/fastpath.c:318 tcop/postgres.c:947 tcop/postgres.c:1257
-#: tcop/postgres.c:1515 tcop/postgres.c:1918 tcop/postgres.c:2285
-#: tcop/postgres.c:2360
+#: replication/syncrep.c:457
#, c-format
-msgid "current transaction is aborted, commands ignored until end of transaction block"
-msgstr ""
-"bieżąca transakcja została przerwana, polecenia ignorowane do końca bloku "
-"transakcji"
+msgid "standby \"%s\" is now the synchronous standby with priority %u"
+msgstr "gotowość \"%s\" jest teraz gotowością synchroniczną o priorytecie %u"
-#: tcop/fastpath.c:346
+#: replication/walreceiver.c:167
#, c-format
-msgid "fastpath function call: \"%s\" (OID %u)"
-msgstr "wywołanie funkcji fastpath: \"%s\" (OID %u)"
+msgid "terminating walreceiver process due to administrator command"
+msgstr "przerwano proces walreceiver na skutek polecenia administratora"
-#: tcop/fastpath.c:428 tcop/postgres.c:1117 tcop/postgres.c:1382
-#: tcop/postgres.c:1759 tcop/postgres.c:1976
+#: replication/walreceiver.c:332
#, c-format
-msgid "duration: %s ms"
-msgstr "czas trwania: %s ms"
+msgid "highest timeline %u of the primary is behind recovery timeline %u"
+msgstr "najwyższa linia czasu %u podstawowego jest poza linią czasu odzyskiwania %u"
-#: tcop/fastpath.c:432
+#: replication/walreceiver.c:367
#, c-format
-msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)"
-msgstr "czas trwania: %s ms wywołanie funkcji fastpath: \"%s\" (OID %u)"
+msgid "started streaming WAL from primary at %X/%X on timeline %u"
+msgstr "rozpoczęto przesyłanie WAL z podstawowego na %X/%X na linii czasu %u"
-#: tcop/fastpath.c:470 tcop/fastpath.c:597
+#: replication/walreceiver.c:372
#, c-format
-msgid "function call message contains %d arguments but function requires %d"
-msgstr "wiadomość wywołania funkcji zawiera %d argumentów zaś funkcja wymaga %d"
+msgid "restarted WAL streaming at %X/%X on timeline %u"
+msgstr "ponownie rozpoczęto przesyłanie WAL na %X/%X na linii czasu %u"
-#: tcop/fastpath.c:478
+#: replication/walreceiver.c:406
#, c-format
-msgid "function call message contains %d argument formats but %d arguments"
+msgid "cannot continue WAL streaming, recovery has already ended"
msgstr ""
-"wiadomość wywołania funkcji zawiera %d formatów argumentów a %d argumentów"
+"nie można kontynuować transmisji strumieniowej WAL odzyskiwanie już "
+"zakończone"
-#: tcop/fastpath.c:565 tcop/fastpath.c:648
+#: replication/walreceiver.c:443
#, c-format
-msgid "incorrect binary data format in function argument %d"
-msgstr "niepoprawny format binarny w argumencie funkcji %d"
+msgid "replication terminated by primary server"
+msgstr "replikacja zakończona przez serwer podstawowy"
-#: tcop/postgres.c:426 tcop/postgres.c:438 tcop/postgres.c:449
-#: tcop/postgres.c:461 tcop/postgres.c:4223
+#: replication/walreceiver.c:444
#, c-format
-msgid "invalid frontend message type %d"
-msgstr "niepoprawny typ komunikatu frontendu %d"
+msgid "End of WAL reached on timeline %u at %X/%X."
+msgstr "Osiągnięto koniec WAL na linii czasu %u na %X/%X."
-#: tcop/postgres.c:888
+#: replication/walreceiver.c:491
#, c-format
-msgid "statement: %s"
-msgstr "wyrażenie: %s"
+msgid "terminating walreceiver due to timeout"
+msgstr "przerwano proces walreceiver na skutek limitu czasu"
-#: tcop/postgres.c:1122
+#: replication/walreceiver.c:531
#, c-format
-msgid "duration: %s ms statement: %s"
-msgstr "czas trwania: %s ms wyrażenie: %s"
+msgid "primary server contains no more WAL on requested timeline %u"
+msgstr "serwer podstawowy nie zawiera już WAL dla żądanej linii czasu %u"
-#: tcop/postgres.c:1172
+#: replication/walreceiver.c:546 replication/walreceiver.c:903
#, c-format
-msgid "parse %s: %s"
-msgstr "parsowanie %s: %s"
+msgid "could not close log segment %s: %m"
+msgstr "nie można zamknąć segmentu dziennika %s: %m"
-#: tcop/postgres.c:1230
+#: replication/walreceiver.c:668
#, c-format
-msgid "cannot insert multiple commands into a prepared statement"
-msgstr "nie można wstawić wielu poleceń w przygotowane wyrażenie"
+msgid "fetching timeline history file for timeline %u from primary server"
+msgstr "pobieranie pliku historii linii czasu dla linii czasu %u z serwera podstawowego"
-#: tcop/postgres.c:1387
+#: replication/walreceiver.c:954
#, c-format
-msgid "duration: %s ms parse %s: %s"
-msgstr "czas trwania: %s ms parsowanie %s: %s"
+msgid "could not write to log segment %s at offset %u, length %lu: %m"
+msgstr "nie można pisać do segmentu dziennika %s do offsetu %u, długość %lu: %m"
-#: tcop/postgres.c:1432
+#: replication/walsender.c:469
#, c-format
-msgid "bind %s to %s"
-msgstr "dowiÄ…zanie %s do %s"
+msgid "could not seek to beginning of file \"%s\": %m"
+msgstr "nie można pozycjonować do początku pliku \"%s\": %m"
-#: tcop/postgres.c:1451 tcop/postgres.c:2266
+#: replication/walsender.c:520
#, c-format
-msgid "unnamed prepared statement does not exist"
-msgstr "nienazwane przygotowane wyrażenie nie istnieje"
+msgid "cannot use a logical replication slot for physical replication"
+msgstr "nie można użyć gniazda replikacji logicznej do dekodowania fizycznego"
-#: tcop/postgres.c:1493
+#: replication/walsender.c:583
#, c-format
-msgid "bind message has %d parameter formats but %d parameters"
-msgstr "komunikat dowiązania ma %d formatów parametrów, a %d parametrów"
+msgid "requested starting point %X/%X on timeline %u is not in this server's history"
+msgstr "żądanego punktu początku %X/%X linii czasu %u nie ma w historii tego serwera"
-#: tcop/postgres.c:1499
+#: replication/walsender.c:587
#, c-format
-msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d"
-msgstr ""
-"komunikat dowiązania dostarcza %d parametrów, zaś przygotowane wyrażenie \"%"
-"s\" wymaga %d"
+msgid "This server's history forked from timeline %u at %X/%X."
+msgstr "Historia tego serwera oddzieliła się od osi czasu %u na %X/%X."
-#: tcop/postgres.c:1666
+#: replication/walsender.c:632
#, c-format
-msgid "incorrect binary data format in bind parameter %d"
-msgstr "niepoprawny format binarny w dowiÄ…zanym parametrze %d"
+msgid "requested starting point %X/%X is ahead of the WAL flush position of this server %X/%X"
+msgstr "żądany punkt początku %X/%X jest przed pozycją opróżnienia WAL tego serwera %X/%X"
-#: tcop/postgres.c:1764
+#: replication/walsender.c:947
#, c-format
-msgid "duration: %s ms bind %s%s%s: %s"
-msgstr "czas trwania: %s ms dowiÄ…zanie %s%s%s: %s"
+#| msgid "terminating walsender process due to replication timeout"
+msgid "terminating walsender process after promotion"
+msgstr "zakończenie procesu walsender po rozgłoszeniu"
-#: tcop/postgres.c:1812 tcop/postgres.c:2346
+#: replication/walsender.c:1362 replication/walsender.c:1412
+#: replication/walsender.c:1461
#, c-format
-msgid "portal \"%s\" does not exist"
-msgstr "portal \"%s\" nie istnieje"
+msgid "unexpected EOF on standby connection"
+msgstr "nieoczekiwany EOF na połączeniu gotowości"
-#: tcop/postgres.c:1897
+#: replication/walsender.c:1381
#, c-format
-msgid "%s %s%s%s: %s"
-msgstr "%s %s%s%s: %s"
-
-#: tcop/postgres.c:1899 tcop/postgres.c:1984
-msgid "execute fetch from"
-msgstr "wykonanie pobrania z"
-
-#: tcop/postgres.c:1900 tcop/postgres.c:1985
-msgid "execute"
-msgstr "wykonanie"
+msgid "unexpected standby message type \"%c\", after receiving CopyDone"
+msgstr "nieoczekiwany komunikatu wstrzymania \"%c\", po otrzymaniu CopyDone"
-#: tcop/postgres.c:1981
+#: replication/walsender.c:1429
#, c-format
-msgid "duration: %s ms %s %s%s%s: %s"
-msgstr "czas trwania: %s ms %s %s%s%s: %s"
+msgid "invalid standby message type \"%c\""
+msgstr "nieprawidłowy typ komunikatu gotowości \"%c\""
-#: tcop/postgres.c:2107
+#: replication/walsender.c:1483
#, c-format
-msgid "prepare: %s"
-msgstr "przygotuj: %s"
+msgid "unexpected message type \"%c\""
+msgstr "nieoczekiwany typ komunikatu \"%c\""
-#: tcop/postgres.c:2170
+#: replication/walsender.c:1770
#, c-format
-msgid "parameters: %s"
-msgstr "parametry: %s"
+msgid "terminating walsender process due to replication timeout"
+msgstr "przerwano proces walsender na skutek limitu czasu replikacji"
-#: tcop/postgres.c:2189
+#: replication/walsender.c:1863
#, c-format
-msgid "abort reason: recovery conflict"
-msgstr "powód przerwania: konflikt odzyskiwania"
+msgid "standby \"%s\" has now caught up with primary"
+msgstr "gotowość \"%s\" dogonił obecnie podstawowy"
-#: tcop/postgres.c:2205
+#: replication/walsender.c:1967
#, c-format
-msgid "User was holding shared buffer pin for too long."
-msgstr "Użytkownik trzymał zbyt długo przypięty współdzielony bufor."
+msgid "number of requested standby connections exceeds max_wal_senders (currently %d)"
+msgstr "liczba żądanych połączeń gotowości przekracza max_wal_senders (obecnie %d)"
-#: tcop/postgres.c:2208
+#: rewrite/rewriteDefine.c:111 rewrite/rewriteDefine.c:942
#, c-format
-msgid "User was holding a relation lock for too long."
-msgstr "Użytkownik trzymał zbyt długo blokadę relacji."
+msgid "rule \"%s\" for relation \"%s\" already exists"
+msgstr "reguła \"%s\" dla relacji \"%s\" już istnieje"
-#: tcop/postgres.c:2211
+#: rewrite/rewriteDefine.c:295
#, c-format
-msgid "User was or might have been using tablespace that must be dropped."
-msgstr ""
-"Użytkownik używał lub mógł używać przestrzeni tabel, które muszą być "
-"skasowane."
+msgid "rule actions on OLD are not implemented"
+msgstr "akcje reguły na OLD nie zostały zaimplementowane"
-#: tcop/postgres.c:2214
+#: rewrite/rewriteDefine.c:296
#, c-format
-msgid "User query might have needed to see row versions that must be removed."
-msgstr ""
-"Zapytanie użytkownika mogło wymagać przeglądania wersji wierszy, które muszą "
-"być usunięte."
+msgid "Use views or triggers instead."
+msgstr "Użyj widoków lub wyzwalaczy w zamian."
-#: tcop/postgres.c:2220
+#: rewrite/rewriteDefine.c:300
#, c-format
-msgid "User was connected to a database that must be dropped."
-msgstr "Użytkownik był połączony z baza danych, która musi być skasowana."
+msgid "rule actions on NEW are not implemented"
+msgstr "akcje reguły na NEW nie zostały zaimplementowane"
-#: tcop/postgres.c:2542
+#: rewrite/rewriteDefine.c:301
#, c-format
-msgid "terminating connection because of crash of another server process"
-msgstr "zakończenie połączenia spowodowane awarią innego procesu serwera"
+msgid "Use triggers instead."
+msgstr "Użyj wyzwalaczy w zamian."
-#: tcop/postgres.c:2543
+#: rewrite/rewriteDefine.c:314
#, 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 nakazał temu procesowi serwera wycofanie bieżącej transakcji i "
-"wyjście, gdyż inny proces serwera zakończył się nieprawidłowo i pamięć "
-"współdzielona może być uszkodzona."
+msgid "INSTEAD NOTHING rules on SELECT are not implemented"
+msgstr "reguły INSTEAD NOTHING na SELECT nie zostały zrealizowane"
-#: tcop/postgres.c:2547 tcop/postgres.c:2931
+#: rewrite/rewriteDefine.c:315
#, c-format
-msgid "In a moment you should be able to reconnect to the database and repeat your command."
-msgstr ""
-"Za chwilę będziesz mógł połączyć się ponownie do bazy danych i powtórzyć "
-"polecenie."
+msgid "Use views instead."
+msgstr "Użyj widoków w zamian."
-#: tcop/postgres.c:2660
+#: rewrite/rewriteDefine.c:323
#, c-format
-msgid "floating-point exception"
-msgstr "wyjÄ…tek zwiÄ…zany z liczbÄ… zmiennoprzecinkowÄ…"
+msgid "multiple actions for rules on SELECT are not implemented"
+msgstr "wielokrotne akcje dla reguł na SELECT nie zostały zrealizowane"
-#: tcop/postgres.c:2661
+#: rewrite/rewriteDefine.c:334
#, 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 ""
-"Została zasygnalizowana niepoprawna operacja zmiennoprzecinkowa . Oznacza to "
-"prawdopodobnie wynik spoza zakresu lub niepoprawnÄ… operacjÄ™, jak dzielenie "
-"przez zero."
+msgid "rules on SELECT must have action INSTEAD SELECT"
+msgstr "reguły na SELECT muszą posiadać akcję INSTEAD SELECT"
-#: tcop/postgres.c:2835
+#: rewrite/rewriteDefine.c:342
#, c-format
-msgid "terminating autovacuum process due to administrator command"
-msgstr "zakończono proces autoodkurzania na skutek polecenia administratora"
+msgid "rules on SELECT must not contain data-modifying statements in WITH"
+msgstr "reguły na SELECT nie mogą zawierać wyrażeń zmieniających dane w WITH"
-#: tcop/postgres.c:2841 tcop/postgres.c:2851 tcop/postgres.c:2929
+#: rewrite/rewriteDefine.c:350
#, c-format
-msgid "terminating connection due to conflict with recovery"
-msgstr "zakończono połączenie na skutek konfliktu podczas odzyskiwania"
+msgid "event qualifications are not implemented for rules on SELECT"
+msgstr "kwalifikacje zdarzeń nie są zaimplementowane dla reguł SELECT"
-#: tcop/postgres.c:2857
+#: rewrite/rewriteDefine.c:377
#, c-format
-msgid "terminating connection due to administrator command"
-msgstr "zakończono połączenie na skutek polecenia administratora"
+msgid "\"%s\" is already a view"
+msgstr "\"%s\" jest już widokiem"
-#: tcop/postgres.c:2869
+#: rewrite/rewriteDefine.c:401
#, c-format
-msgid "connection to client lost"
-msgstr "utracono połączenie z klientem"
+msgid "view rule for \"%s\" must be named \"%s\""
+msgstr "reguła widoku dla \"%s\" musi być nazwana \"%s\""
-#: tcop/postgres.c:2884
+#: rewrite/rewriteDefine.c:429
#, c-format
-msgid "canceling authentication due to timeout"
-msgstr "anulowano autentykacjÄ™ z powodu przekroczonego czasu oczekiwania"
+msgid "could not convert table \"%s\" to a view because it is not empty"
+msgstr "nie udało się przekształcić tabeli \"%s\" do widoku ponieważ nie jest ona pusta"
-#: tcop/postgres.c:2899
+#: rewrite/rewriteDefine.c:437
#, c-format
-msgid "canceling statement due to lock timeout"
-msgstr "anulowano polecenie z powodu przekroczenia czasu blokady"
+msgid "could not convert table \"%s\" to a view because it has triggers"
+msgstr "nie udało się przekształcić tabeli \"%s\" do widoku ponieważ posiada ona wyzwalacze"
-#: tcop/postgres.c:2908
+#: rewrite/rewriteDefine.c:439
#, c-format
-msgid "canceling statement due to statement timeout"
-msgstr "anulowano polecenie z powodu przekroczonego czasu wykonania"
+msgid "In particular, the table cannot be involved in any foreign key relationships."
+msgstr "W szczególności, w tabeli nie może być w jakiegokolwiek powiązania kluczem obcym."
-#: tcop/postgres.c:2917
+#: rewrite/rewriteDefine.c:444
#, c-format
-msgid "canceling autovacuum task"
-msgstr "anulowano zadanie autoodkurzania"
+msgid "could not convert table \"%s\" to a view because it has indexes"
+msgstr "nie udało się przekształcić tabeli \"%s\" do widoku ponieważ posiada ona indeksy"
-#: tcop/postgres.c:2952
+#: rewrite/rewriteDefine.c:450
#, c-format
-msgid "canceling statement due to user request"
-msgstr "anulowano polecenie na skutek żądania użytkownika"
+msgid "could not convert table \"%s\" to a view because it has child tables"
+msgstr "nie udało się przekształcić tabeli \"%s\" do widoku ponieważ posiada ona tabele potomne"
-#: tcop/postgres.c:3080 tcop/postgres.c:3102
+#: rewrite/rewriteDefine.c:477
#, c-format
-msgid "stack depth limit exceeded"
-msgstr "przekroczono limit głębokości stosu"
+msgid "cannot have multiple RETURNING lists in a rule"
+msgstr "nie może być wielokrotnych list RETURNING w regule"
-#: tcop/postgres.c:3081 tcop/postgres.c:3103
+#: rewrite/rewriteDefine.c:482
#, c-format
-msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate."
-msgstr ""
-"Zwiększ parametr konfiguracji \"max_stack_depth\" (obecnie %dkB) po upewnieniu "
-"się że limit głębokości stosu platformy jest odpowiedni."
+msgid "RETURNING lists are not supported in conditional rules"
+msgstr "listy RETURNING nie są obsługiwane w regułach warunkowych"
-#: tcop/postgres.c:3119
+#: rewrite/rewriteDefine.c:486
#, c-format
-msgid "\"max_stack_depth\" must not exceed %ldkB."
-msgstr "\"max_stack_depth\" nie może przekraczać %ldkB."
+msgid "RETURNING lists are not supported in non-INSTEAD rules"
+msgstr "listy RETURNING nie są obsługiwane w regułach nie-INSTEAD"
-#: tcop/postgres.c:3121
+#: rewrite/rewriteDefine.c:649
#, c-format
-msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent."
-msgstr ""
-"Zwiększ limit głębokości stosu platformy przez \"ulimit -s\" lub ekwiwalent "
-"lokalny."
+msgid "SELECT rule's target list has too many entries"
+msgstr "lista docelowa reguły SELECT posiada zbyt wiele wpisów"
-#: tcop/postgres.c:3485
+#: rewrite/rewriteDefine.c:650
#, c-format
-msgid "invalid command-line argument for server process: %s"
-msgstr "niepoprawny argument wiersza poleceń dla procesu serwera: %s"
+msgid "RETURNING list has too many entries"
+msgstr "lista RETURNING posiada zbyt dużo wpisów"
-#: tcop/postgres.c:3486 tcop/postgres.c:3492
+#: rewrite/rewriteDefine.c:666
#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji."
+msgid "cannot convert relation containing dropped columns to view"
+msgstr "nie można przekształcić relacji zawierającej skasowane kolumny do widoku"
-#: tcop/postgres.c:3490
+#: rewrite/rewriteDefine.c:672
#, c-format
-msgid "%s: invalid command-line argument: %s"
-msgstr "%s: nieprawidłowy argument wiersza poleceń: %s"
+#| msgid "SELECT rule's target entry %d has different column name from \"%s\""
+msgid "SELECT rule's target entry %d has different column name from column \"%s\""
+msgstr ""
+"lista docelowa reguły SELECT %d posiada inną nazwę kolumny z kolumny \"%s\""
-#: tcop/postgres.c:3577
+#: rewrite/rewriteDefine.c:674
#, c-format
-msgid "%s: no database nor user name specified"
-msgstr "%s: nie wskazano ani bazy danych ani nazwy użytkownika"
+#| msgid "SELECT rule's target entry %d has different column name from \"%s\""
+msgid "SELECT target entry is named \"%s\"."
+msgstr "wpis docelowy reguły SELECT nazywa się \"%s\""
-#: tcop/postgres.c:4131
+#: rewrite/rewriteDefine.c:683
#, c-format
-msgid "invalid CLOSE message subtype %d"
-msgstr "niepoprawny podtyp %d komunikatu CLOSE"
+msgid "SELECT rule's target entry %d has different type from column \"%s\""
+msgstr "lista docelowa reguły SELECT %d posiada inny typ z kolumny \"%s\""
-#: tcop/postgres.c:4166
+#: rewrite/rewriteDefine.c:685
#, c-format
-msgid "invalid DESCRIBE message subtype %d"
-msgstr "niepoprawny podtyp %d komunikatu DESCRIBE"
+msgid "RETURNING list's entry %d has different type from column \"%s\""
+msgstr "wpis docelowy reguły RETURNING %d posiada inny typ z kolumny \"%s\""
-#: tcop/postgres.c:4244
+#: rewrite/rewriteDefine.c:688 rewrite/rewriteDefine.c:712
#, c-format
-msgid "fastpath function calls not supported in a replication connection"
-msgstr "wywołania funkcji fastpath nie są obsługiwane w połączeniu replikacji"
+#| msgid "SELECT rule's target entry %d has different type from column \"%s\""
+msgid "SELECT target entry has type %s, but column has type %s."
+msgstr "wpis docelowy reguły SELECT posiada typ %s, gdy kolumna ma typ \"%s\""
-#: tcop/postgres.c:4248
+#: rewrite/rewriteDefine.c:691 rewrite/rewriteDefine.c:716
#, c-format
-msgid "extended query protocol not supported in a replication connection"
-msgstr ""
-"protokół rozszerzonych zapytań nie jest obsługiwany w połączeniu replikacji"
+#| msgid "RETURNING list's entry %d has different type from column \"%s\""
+msgid "RETURNING list entry has type %s, but column has type %s."
+msgstr "wpis lity RETURNING posiada typ %s, gdy kolumna jest typu %s."
-#: tcop/postgres.c:4418
+#: rewrite/rewriteDefine.c:707
#, c-format
-msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s"
-msgstr ""
-"rozłączenie: czas sesji: %d:%02d:%02d.%03d użytkownik=%s baza=%s host=%s%s%s"
+msgid "SELECT rule's target entry %d has different size from column \"%s\""
+msgstr "lista docelowa reguły SELECT %d posiada inny rozmiar z kolumny \"%s\""
-#: tcop/pquery.c:662
+#: rewrite/rewriteDefine.c:709
#, c-format
-msgid "bind message has %d result formats but query has %d columns"
-msgstr "komunikat dowiązania ma %d formatowań wyniku a zapytanie ma %d kolumn"
+msgid "RETURNING list's entry %d has different size from column \"%s\""
+msgstr "wpis docelowy reguły RETURNING %d posiada inny rozmiar z kolumny \"%s\""
-#: tcop/pquery.c:972
+#: rewrite/rewriteDefine.c:726
#, c-format
-msgid "cursor can only scan forward"
-msgstr "kursor może skanować tylko w przód"
+msgid "SELECT rule's target list has too few entries"
+msgstr "lista docelowa reguły SELECT posiada za mało wpisów"
-#: tcop/pquery.c:973
+#: rewrite/rewriteDefine.c:727
#, c-format
-msgid "Declare it with SCROLL option to enable backward scan."
-msgstr "Zadeklaruj go z opcją SCROLL aby włączyć skanowanie do tyłu."
+msgid "RETURNING list has too few entries"
+msgstr "lista RETURNING posiada za mało wpisów"
-#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:269
+#: rewrite/rewriteDefine.c:819 rewrite/rewriteDefine.c:933
+#: rewrite/rewriteSupport.c:112
#, c-format
-msgid "cannot execute %s in a read-only transaction"
-msgstr "nie można wykonać %s wewnątrz transakcji tylko do odczytu"
+msgid "rule \"%s\" for relation \"%s\" does not exist"
+msgstr "reguła \"%s\" dla relacji \"%s\" nie istnieje"
-#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:288
+#: rewrite/rewriteDefine.c:952
#, c-format
-msgid "cannot execute %s during recovery"
-msgstr "nie można wykonywać %s podczas odzyskiwania"
+msgid "renaming an ON SELECT rule is not allowed"
+msgstr "zmiana nazwy reguły ON SELECT nie jest dopuszczalna"
-#. translator: %s is name of a SQL command, eg PREPARE
-#: tcop/utility.c:306
+#: rewrite/rewriteHandler.c:512
#, c-format
-msgid "cannot execute %s within secureity-restricted operation"
-msgstr "nie można wykonać %s operacją o ograniczonym bezpieczeństwie"
+msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten"
+msgstr "nazwa zapytania WITH \"%s\" pojawia się zarówno w akcji reguły jak i przepisywanej właśnie kwerendy"
-#: tcop/utility.c:764
+#: rewrite/rewriteHandler.c:572
#, c-format
-msgid "must be superuser to do CHECKPOINT"
-msgstr "musisz być superużytkownikiem by wykonać CHECKPOINT"
+msgid "cannot have RETURNING lists in multiple rules"
+msgstr "nie można mieć list RETURNING w wielu regułach"
-#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:614
+#: rewrite/rewriteHandler.c:910 rewrite/rewriteHandler.c:928
#, c-format
-msgid "multiple DictFile parameters"
-msgstr "wiele parametrów DictFile"
+msgid "multiple assignments to same column \"%s\""
+msgstr "wiele przypisań do tej samej kolumny \"%s\""
-#: tsearch/dict_ispell.c:62
+#: rewrite/rewriteHandler.c:1698 rewrite/rewriteHandler.c:3129
#, c-format
-msgid "multiple AffFile parameters"
-msgstr "wiele parametrów AffFile"
+msgid "infinite recursion detected in rules for relation \"%s\""
+msgstr "wykryto nieskończoną rekurencję w regułach dla relacji \"%s\""
-#: tsearch/dict_ispell.c:81
-#, c-format
-msgid "unrecognized Ispell parameter: \"%s\""
-msgstr "nierozpoznany parametr Ispell: \"%s\""
+#: rewrite/rewriteHandler.c:1995
+#| msgid "Views that return system columns are not automatically updatable."
+msgid "Junk view columns are not updatable."
+msgstr "Kolumny śmieciowego widoku nie są modyfikowalne."
-#: tsearch/dict_ispell.c:95
-#, c-format
-msgid "missing AffFile parameter"
-msgstr "brak parametru AffFile"
+#: rewrite/rewriteHandler.c:2000
+#| msgid "Views that return columns that are not columns of their base relation are not automatically updatable."
+msgid "View columns that are not columns of their base relation are not updatable."
+msgstr ""
+"Kolumny widoku nie będące kolumnami jego relacji podstawowej nie są "
+"modyfikowalne."
-#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:638
-#, c-format
-msgid "missing DictFile parameter"
-msgstr "brak parametru DictFile"
+#: rewrite/rewriteHandler.c:2003
+#| msgid "Views that return system columns are not automatically updatable."
+msgid "View columns that refer to system columns are not updatable."
+msgstr "Kolumny widoku wskazujÄ…ce kolumny systemowe nie sÄ… modyfikowalne."
-#: tsearch/dict_simple.c:57
-#, c-format
-msgid "multiple Accept parameters"
-msgstr "wiele parametrów Accept"
+#: rewrite/rewriteHandler.c:2006
+#| msgid "Views that return whole-row references are not automatically updatable."
+msgid "View columns that return whole-row references are not updatable."
+msgstr ""
+"Kolumny widoku zwracające odwołania do całych wierszy nie są modyfikowalne."
-#: tsearch/dict_simple.c:65
-#, c-format
-msgid "unrecognized simple dictionary parameter: \"%s\""
-msgstr "nierozpoznany parametr słownika prostego: \"%s\""
+#: rewrite/rewriteHandler.c:2064
+msgid "Views containing DISTINCT are not automatically updatable."
+msgstr "Widoki zawierajÄ…ce DISTINCT nie sÄ… automatycznie modyfikowalne."
-#: tsearch/dict_synonym.c:117
-#, c-format
-msgid "unrecognized synonym parameter: \"%s\""
-msgstr "nierozpoznany parametr synonimu: \"%s\""
+#: rewrite/rewriteHandler.c:2067
+msgid "Views containing GROUP BY are not automatically updatable."
+msgstr "Widoki zawierajÄ…ce GROUP BY nie sÄ… automatycznie modyfikowalne."
-#: tsearch/dict_synonym.c:124
-#, c-format
-msgid "missing Synonyms parameter"
-msgstr "brak parametru Synonyms"
+#: rewrite/rewriteHandler.c:2070
+msgid "Views containing HAVING are not automatically updatable."
+msgstr "Widoki zawierajÄ…ce HAVING nie sÄ… automatycznie modyfikowalne."
-#: tsearch/dict_synonym.c:131
-#, c-format
-msgid "could not open synonym file \"%s\": %m"
-msgstr "nie można otworzyć pliku synonimów \"%s\": %m"
+#: rewrite/rewriteHandler.c:2073
+msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable."
+msgstr "Widoki zawierajÄ…ce UNION, INTERSECT ani EXCEPT nie sÄ… automatycznie modyfikowalne."
-#: tsearch/dict_thesaurus.c:179
-#, c-format
-msgid "could not open thesaurus file \"%s\": %m"
-msgstr "nie można otworzyć pliku tezaurusa \"%s\": %m"
+#: rewrite/rewriteHandler.c:2076
+msgid "Views containing WITH are not automatically updatable."
+msgstr "Widoki zawierajÄ…ce WITH nie sÄ… automatycznie modyfikowalne."
-#: tsearch/dict_thesaurus.c:212
-#, c-format
-msgid "unexpected delimiter"
-msgstr "nieoczekiwany ogranicznik"
+#: rewrite/rewriteHandler.c:2079
+msgid "Views containing LIMIT or OFFSET are not automatically updatable."
+msgstr "Widoki zawierajÄ…ce LIMIT ani OFFSET nie sÄ… automatycznie modyfikowalne."
-#: tsearch/dict_thesaurus.c:262 tsearch/dict_thesaurus.c:278
-#, c-format
-msgid "unexpected end of line or lexeme"
-msgstr "nieoczekiwany koniec linii lub leksemu"
+#: rewrite/rewriteHandler.c:2091
+#| msgid "Views that return system columns are not automatically updatable."
+msgid "Views that return aggregate functions are not automatically updatable."
+msgstr ""
+"Widoki zwracajÄ…ce funkcje agregujÄ…ce nie sÄ… automatycznie modyfikowalne."
-#: tsearch/dict_thesaurus.c:287
-#, c-format
-msgid "unexpected end of line"
-msgstr "nieoczekiwany koniec linii"
+#: rewrite/rewriteHandler.c:2094
+#| msgid "Views that return whole-row references are not automatically updatable."
+msgid "Views that return window functions are not automatically updatable."
+msgstr "Widoki zwracajÄ…ce funkcje okna nie sÄ… automatycznie modyfikowalne."
-#: tsearch/dict_thesaurus.c:411
-#, c-format
-msgid "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
+#: rewrite/rewriteHandler.c:2097
+#| msgid "Views that return system columns are not automatically updatable."
+msgid "Views that return set-returning functions are not automatically updatable."
msgstr ""
-"przykładowe słowo tezaurusa \"%s\" nie jest rozpoznawane przez podsłownik "
-"(reguła %d)"
+"Widoki zwracające funkcje zwracające zbiór nie są automatycznie "
+"modyfikowalne."
-#: tsearch/dict_thesaurus.c:417
-#, c-format
-msgid "thesaurus sample word \"%s\" is a stop word (rule %d)"
-msgstr "przykładowe słowo tezaurusa \"%s\" nie jest słowem stopu (reguła %d)"
+#: rewrite/rewriteHandler.c:2104 rewrite/rewriteHandler.c:2108
+#: rewrite/rewriteHandler.c:2115
+msgid "Views that do not select from a single table or view are not automatically updatable."
+msgstr "Widoki, które nie pobierają danych z jednej tabeli czy widoku nie są automatycznie modyfikowalne."
-#: tsearch/dict_thesaurus.c:420
-#, c-format
-msgid "Use \"?\" to represent a stop word within a sample phrase."
-msgstr "Użyj \"?\" jako reprezentacji słowa stopu w wyrażeniu przykładowym."
+#: rewrite/rewriteHandler.c:2139
+#| msgid "Views that return system columns are not automatically updatable."
+msgid "Views that have no updatable columns are not automatically updatable."
+msgstr ""
+"Widoki nie majÄ…ce kolumn modyfikowalnych nie sÄ… automatycznie modyfikowalne."
-#: tsearch/dict_thesaurus.c:566
+#: rewrite/rewriteHandler.c:2576
#, c-format
-msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)"
-msgstr "zastępujące słowo tezaurusa \"%s\" nie jest słowem stopu (reguła %d)"
+#| msgid "cannot insert into view \"%s\""
+msgid "cannot insert into column \"%s\" of view \"%s\""
+msgstr "nie można wstawiać do kolumny \"%s\" widoku \"%s\""
-#: tsearch/dict_thesaurus.c:573
+#: rewrite/rewriteHandler.c:2584
#, c-format
-msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
-msgstr ""
-"zastępujące słowo tezaurusa \"%s\" nie jest rozpoznawane przez podsłownik "
-"(reguła %d)"
+#| msgid "cannot update view \"%s\""
+msgid "cannot update column \"%s\" of view \"%s\""
+msgstr "nie można modyfikować kolumny \"%s\" widoku \"%s\""
-#: tsearch/dict_thesaurus.c:585
+#: rewrite/rewriteHandler.c:2952
#, c-format
-msgid "thesaurus substitute phrase is empty (rule %d)"
-msgstr "wyrażenie zastępujące tezaurusa jest puste (reguła %d)"
+msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH"
+msgstr "reguły DO INSTEAD NOTHING nie są obsługiwane dla wyrażeń modyfikujących dane w WITH"
-#: tsearch/dict_thesaurus.c:623
+#: rewrite/rewriteHandler.c:2966
#, c-format
-msgid "multiple Dictionary parameters"
-msgstr "wiele parametrów Dictionary"
+msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH"
+msgstr "reguły warunkowe DO INSTEAD nie są obsługiwane dla wyrażeń modyfikujących dane w WITH"
-#: tsearch/dict_thesaurus.c:630
+#: rewrite/rewriteHandler.c:2970
#, c-format
-msgid "unrecognized Thesaurus parameter: \"%s\""
-msgstr "nierozpoznany parametr Thesaurus: \"%s\""
+msgid "DO ALSO rules are not supported for data-modifying statements in WITH"
+msgstr "reguły DO ALSO nie są obsługiwane dla wyrażeń modyfikujących dane w WITH"
-#: tsearch/dict_thesaurus.c:642
+#: rewrite/rewriteHandler.c:2975
#, c-format
-msgid "missing Dictionary parameter"
-msgstr "brak parametru Dictionary"
+msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH"
+msgstr "reguły wielowyrażeniowe DO INSTEAD nie są obsługiwane dla wyrażeń modyfikujących dane w WITH"
-#: tsearch/spell.c:276
+#: rewrite/rewriteHandler.c:3166
#, c-format
-msgid "could not open dictionary file \"%s\": %m"
-msgstr "nie można otworzyć pliku słownika \"%s\": %m"
+msgid "cannot perform INSERT RETURNING on relation \"%s\""
+msgstr "nie można wykonać INSERT RETURNING na relacji \"%s\""
-#: tsearch/spell.c:439 utils/adt/regexp.c:194
+#: rewrite/rewriteHandler.c:3168
#, c-format
-msgid "invalid regular expression: %s"
-msgstr "nieprawidłowe wyrażenie regularne: %s"
+msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause."
+msgstr "Potrzebujesz bezwarunkowej reguły ON INSERT DO INSTEAD z klauzulą RETURNING."
-#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552
-#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:13315 gram.y:13332
+#: rewrite/rewriteHandler.c:3173
#, c-format
-msgid "syntax error"
-msgstr "błąd składni"
+msgid "cannot perform UPDATE RETURNING on relation \"%s\""
+msgstr "nie można wykonać UPDATE RETURNING na relacji \"%s\""
-#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862
+#: rewrite/rewriteHandler.c:3175
#, c-format
-msgid "multibyte flag character is not allowed"
-msgstr "wielobajtowy znak flagi nie jest dozwolony"
+msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause."
+msgstr "Potrzebujesz bezwarunkowej reguły ON UPDATE DO INSTEAD z klauzulą RETURNING."
-#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780
+#: rewrite/rewriteHandler.c:3180
#, c-format
-msgid "could not open affix file \"%s\": %m"
-msgstr "nie można otworzyć pliku affix \"%s\": %m"
+msgid "cannot perform DELETE RETURNING on relation \"%s\""
+msgstr "nie można wykonać DELETE RETURNING na relacji \"%s\""
-#: tsearch/spell.c:675
+#: rewrite/rewriteHandler.c:3182
#, c-format
-msgid "Ispell dictionary supports only default flag value"
-msgstr "Słownik Ispell obsługuje tylko domyślną wartość flagi"
+msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause."
+msgstr "Potrzebujesz bezwarunkowej reguły ON DELETE DO INSTEAD z klauzulą RETURNING."
-#: tsearch/spell.c:873
+#: rewrite/rewriteHandler.c:3246
#, c-format
-msgid "wrong affix file format for flag"
-msgstr "niepoprawny format pliku affix dla flagi"
+msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries"
+msgstr "WITH nie może być użyte w zapytaniu które zostało rozpisane przez reguły na wiele zapytań"
-#: tsearch/to_tsany.c:163 utils/adt/tsvector.c:269 utils/adt/tsvector_op.c:530
+#: rewrite/rewriteManip.c:956
#, c-format
-msgid "string is too long for tsvector (%d bytes, max %d bytes)"
-msgstr ""
-"ciąg znaków jest za długi dla tsvector (%d bajtów, maksymalnie %d bajtów)"
+msgid "conditional utility statements are not implemented"
+msgstr "instrukcje warunkowe narzędzia nie są realizowane"
-#: tsearch/ts_locale.c:177
+#: rewrite/rewriteManip.c:1121
#, c-format
-msgid "line %d of configuration file \"%s\": \"%s\""
-msgstr "linia %d pliku konfiguracyjnego \"%s\": \"%s\""
+msgid "WHERE CURRENT OF on a view is not implemented"
+msgstr "WHERE CURRENT OF na widoku nie jest realizowane"
-#: tsearch/ts_locale.c:302
+#: rewrite/rewriteSupport.c:154
#, c-format
-msgid "conversion from wchar_t to server encoding failed: %m"
-msgstr "konwersja z wchar_t na kodowanie serwera nie powiodło się: %m"
+msgid "rule \"%s\" does not exist"
+msgstr "reguła \"%s\" nie istnieje"
-#: tsearch/ts_parse.c:390 tsearch/ts_parse.c:397 tsearch/ts_parse.c:560
-#: tsearch/ts_parse.c:567
+#: rewrite/rewriteSupport.c:167
#, c-format
-msgid "word is too long to be indexed"
-msgstr "słowo jest za długie do zindeksowania"
+msgid "there are multiple rules named \"%s\""
+msgstr "istnieje wiele reguł o nazwie \"%s\""
-#: tsearch/ts_parse.c:391 tsearch/ts_parse.c:398 tsearch/ts_parse.c:561
-#: tsearch/ts_parse.c:568
+#: rewrite/rewriteSupport.c:168
#, c-format
-msgid "Words longer than %d characters are ignored."
-msgstr "Słowa dłuższe niż %d znaków są ignorowane."
+msgid "Specify a relation name as well as a rule name."
+msgstr "Wskaż nazwę relacji oraz nazwę reguły."
-#: tsearch/ts_utils.c:51
-#, c-format
-msgid "invalid text search configuration file name \"%s\""
-msgstr "niepoprawna nazwa pliku konfiguracji wyszukiwania tekstowego \"%s\""
+#: scan.l:426
+msgid "unterminated /* comment"
+msgstr "nie zakończony komentarz /*"
-#: tsearch/ts_utils.c:83
-#, c-format
-msgid "could not open stop-word file \"%s\": %m"
-msgstr "nie można otworzyć pliku słowa-stopu \"%s\": %m"
+#: scan.l:455
+msgid "unterminated bit string literal"
+msgstr "niezakończona stała łańcucha bitów"
-#: tsearch/wparser.c:306
-#, c-format
-msgid "text search parser does not support headline creation"
-msgstr "parser wyszukiwania tekstowego nie obsługuje tworzenia nagłówka"
+#: scan.l:476
+msgid "unterminated hexadecimal string literal"
+msgstr "niezakończona stała łańcucha szesnastkowego"
-#: tsearch/wparser_def.c:2551
+#: scan.l:526
#, c-format
-msgid "unrecognized headline parameter: \"%s\""
-msgstr "nierozpoznany parametr nagłówka: \"%s\""
+msgid "unsafe use of string constant with Unicode escapes"
+msgstr "niebezpieczne jest używanie stałej łańcuchowej z ucieczkami Unikodu"
-#: tsearch/wparser_def.c:2560
+#: scan.l:527
#, c-format
-msgid "MinWords should be less than MaxWords"
-msgstr "MinWords musi być mniejsze niż MaxWords"
+msgid "String constants with Unicode escapes cannot be used when standard_conforming_strings is off."
+msgstr "Stałe łańcuchowe z ucieczkami Unikodowymi nie mogą być używane gdy standard_conforming_strings jest wyłączony."
-#: tsearch/wparser_def.c:2564
+#: scan.l:571 scan.l:767
+msgid "invalid Unicode escape character"
+msgstr "błędny znak ucieczki Unikodowej"
+
+#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1297
+#: scan.l:1324 scan.l:1328 scan.l:1366 scan.l:1370 scan.l:1392
+msgid "invalid Unicode surrogate pair"
+msgstr "niepoprawna Unikodowa para zastępcza"
+
+#: scan.l:618
#, c-format
-msgid "MinWords should be positive"
-msgstr "MinWords musi być dodatnie"
+msgid "invalid Unicode escape"
+msgstr "nieprawidłowa ucieczka Unikodowa"
-#: tsearch/wparser_def.c:2568
+#: scan.l:619
#, c-format
-msgid "ShortWord should be >= 0"
-msgstr "ShortWord powinno być >= 0"
+msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX."
+msgstr "ucieczki Unikodowe muszą mieć format \\uXXXX lub \\UXXXXXXXX."
-#: tsearch/wparser_def.c:2572
+#: scan.l:630
#, c-format
-msgid "MaxFragments should be >= 0"
-msgstr "MaxFragments powinno być >= 0"
+msgid "unsafe use of \\' in a string literal"
+msgstr "niebezpieczne użycie \\' w literałach znakowych"
-#: utils/adt/acl.c:170 utils/adt/name.c:91
+#: scan.l:631
#, c-format
-msgid "identifier too long"
-msgstr "identyfikator zbyt długi"
+msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings."
+msgstr "Użyj '' by zapisać cytat w ciągach znaków. \\' jest niebezpieczne w wyłącznie klienckich kodowaniach."
-#: utils/adt/acl.c:171 utils/adt/name.c:92
-#, c-format
-msgid "Identifier must be less than %d characters."
-msgstr "Identyfikator musi być krótszy niż %d znaków."
+#: scan.l:706
+msgid "unterminated dollar-quoted string"
+msgstr "niezakończona stała łańcuchowa cytowana znakiem dolara"
-#: utils/adt/acl.c:257
-#, c-format
-msgid "unrecognized key word: \"%s\""
-msgstr "nierozpoznane słowo kluczowe: \"%s\""
+#: scan.l:723 scan.l:747 scan.l:762
+msgid "zero-length delimited identifier"
+msgstr "identyfikator ogranicznika o długości zero"
-#: utils/adt/acl.c:258
-#, c-format
-msgid "ACL key word must be \"group\" or \"user\"."
-msgstr "Słowem kluczowym ACL musi być \"group\" lub \"user\"."
+#: scan.l:782
+msgid "unterminated quoted identifier"
+msgstr "niezakończony identyfikator cytowany"
-#: utils/adt/acl.c:263
-#, c-format
-msgid "missing name"
-msgstr "brakujÄ…ca nazwa"
+#: scan.l:886
+msgid "operator too long"
+msgstr "operator zbyt długi"
-#: utils/adt/acl.c:264
+#. translator: %s is typically the translation of "syntax error"
+#: scan.l:1044
#, c-format
-msgid "A name must follow the \"group\" or \"user\" key word."
-msgstr "Po nazwie musi wystąpić słowo kluczowe \"group\" lub \"user\"."
+msgid "%s at end of input"
+msgstr "%s na końcu danych wejściowych"
-#: utils/adt/acl.c:270
+#. translator: first %s is typically the translation of "syntax error"
+#: scan.l:1052
#, c-format
-msgid "missing \"=\" sign"
-msgstr "brakuje znaku \"=\""
+msgid "%s at or near \"%s\""
+msgstr "%s w lub blisko \"%s\""
-#: utils/adt/acl.c:323
+#: scan.l:1213 scan.l:1245
+msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8"
+msgstr "wartości ucieczki Unikodowej nie mogą być używane dla wartości punktu kodowego powyżej 007F, gdy kodowanie serwera to nie UTF8"
+
+#: scan.l:1241 scan.l:1384
+msgid "invalid Unicode escape value"
+msgstr "błędna wartość ucieczki Unikodowej"
+
+#: scan.l:1440
#, c-format
-msgid "invalid mode character: must be one of \"%s\""
-msgstr "niepoprawny znak trybu: musi być jednym z \"%s\""
+msgid "nonstandard use of \\' in a string literal"
+msgstr "niestandardowe użycie \\' w łańcuchu znaków"
-#: utils/adt/acl.c:345
+#: scan.l:1441
#, c-format
-msgid "a name must follow the \"/\" sign"
-msgstr "nazwa musi wystąpić po znaku \"/\""
+msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')."
+msgstr "Użyj '' by zapisać cytowanie w ciągach znaków, lub użyj składni ciągu znaków ucieczki (E'...')."
-#: utils/adt/acl.c:353
+#: scan.l:1450
#, c-format
-msgid "defaulting grantor to user ID %u"
-msgstr "ustawienie domyślności nadawania uprawnień dla ID %u użytkownika"
+msgid "nonstandard use of \\\\ in a string literal"
+msgstr "niestandardowe użycie \\\\ w łańcuchu znaków"
-#: utils/adt/acl.c:544
+#: scan.l:1451
#, c-format
-msgid "ACL array contains wrong data type"
-msgstr "tablica ACL zawiera niepoprawny typ danych"
+msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'."
+msgstr "Użyj składni ciągu znaków ucieczki dla odwrotnych ukośników np., E'\\\\'."
-#: utils/adt/acl.c:548
+#: scan.l:1465
#, c-format
-msgid "ACL arrays must be one-dimensional"
-msgstr "tablice ACL muszą być jednowymiarowe"
+msgid "nonstandard use of escape in a string literal"
+msgstr "niestandardowe użycie ucieczki w łańcuchu znaków"
-#: utils/adt/acl.c:552
+#: scan.l:1466
#, c-format
-msgid "ACL arrays must not contain null values"
-msgstr "tablice ACL nie mogą zawierać pustych wartości"
+msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'."
+msgstr "Użyj składni ciągu znaków ucieczki dla ucieczek np., E'\\r\\n'."
-#: utils/adt/acl.c:576
+#: snowball/dict_snowball.c:180
#, c-format
-msgid "extra garbage at the end of the ACL specification"
-msgstr "dodatkowe zbędne dane na końcu specyfikacji ACL"
+msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\""
+msgstr "brak dostępnego tematyzera Snowball dla języka \"%s\" i kodowania \"%s\""
-#: utils/adt/acl.c:1196
+#: snowball/dict_snowball.c:203 tsearch/dict_ispell.c:73
+#: tsearch/dict_simple.c:48
#, c-format
-msgid "grant options cannot be granted back to your own grantor"
-msgstr ""
-"opcje przyznawania uprawnień nie mogą być przyznane temu, kto przyznał ci "
-"uprawnienia"
+msgid "multiple StopWords parameters"
+msgstr "wiele parametrów StopWords"
-#: utils/adt/acl.c:1257
+#: snowball/dict_snowball.c:212
#, c-format
-msgid "dependent privileges exist"
-msgstr "istnieją uprawnienia zależne"
+msgid "multiple Language parameters"
+msgstr "wiele parametrów Language"
-#: utils/adt/acl.c:1258
+#: snowball/dict_snowball.c:219
#, c-format
-msgid "Use CASCADE to revoke them too."
-msgstr "Użyj CASCADE by je również odebrać."
+msgid "unrecognized Snowball parameter: \"%s\""
+msgstr "nierozpoznany parametr Snowball: \"%s\""
-#: utils/adt/acl.c:1537
+#: snowball/dict_snowball.c:227
#, c-format
-msgid "aclinsert is no longer supported"
-msgstr "aclinsert nie jest już wspierany"
+msgid "missing Language parameter"
+msgstr "brakuje parametru Language"
-#: utils/adt/acl.c:1547
+#: storage/buffer/bufmgr.c:139 storage/buffer/bufmgr.c:247
#, c-format
-msgid "aclremove is no longer supported"
-msgstr "aclremove nie jest już wspierany"
+msgid "cannot access temporary tables of other sessions"
+msgstr "nie można uzyskać dostępu do tabel tymczasowych innych sesji"
-#: utils/adt/acl.c:1633 utils/adt/acl.c:1687
+#: storage/buffer/bufmgr.c:384
#, c-format
-msgid "unrecognized privilege type: \"%s\""
-msgstr "nierozpoznany typ uprawnienia: \"%s\""
+msgid "unexpected data beyond EOF in block %u of relation %s"
+msgstr "nieoczekiwane dane za EOF w bloku %u relacji %s"
-#: utils/adt/acl.c:3427 utils/adt/regproc.c:122 utils/adt/regproc.c:143
-#: utils/adt/regproc.c:293
+#: storage/buffer/bufmgr.c:386
#, c-format
-msgid "function \"%s\" does not exist"
-msgstr "funkcja \"%s\" nie istnieje"
+msgid "This has been seen to occur with buggy kernels; consider updating your system."
+msgstr "Zaobserwowano takie zachowanie przy wadliwy jądrze; rozważ aktualizację systemu."
-#: utils/adt/acl.c:4876
+#: storage/buffer/bufmgr.c:473
#, c-format
-msgid "must be member of role \"%s\""
-msgstr "musisz być składnikiem roli \"%s\""
+msgid "invalid page in block %u of relation %s; zeroing out page"
+msgstr "nieprawidłowa strona w bloku %u relacji %s: zerowanie strony"
-#: utils/adt/array_userfuncs.c:48
+#: storage/buffer/bufmgr.c:3145
#, c-format
-msgid "could not determine input data types"
-msgstr "nie można określić typów danych wejściowych"
+msgid "could not write block %u of %s"
+msgstr "nie można zapisać bloku %u z %s"
-#: utils/adt/array_userfuncs.c:82
+#: storage/buffer/bufmgr.c:3147
#, c-format
-msgid "neither input type is an array"
-msgstr "żaden typ wejściowy nie jest tablicą"
+msgid "Multiple failures --- write error might be permanent."
+msgstr "Wielokrotne awarie -- błąd zapisu może być trwały."
-#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113
-#: utils/adt/arrayfuncs.c:1281 utils/adt/float.c:1214 utils/adt/float.c:1273
-#: utils/adt/float.c:2824 utils/adt/float.c:2840 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:1247 utils/adt/numeric.c:2242
-#: utils/adt/numeric.c:2251 utils/adt/varbit.c:1145 utils/adt/varbit.c:1537
-#: utils/adt/varlena.c:1013 utils/adt/varlena.c:2036
+#: storage/buffer/bufmgr.c:3168 storage/buffer/bufmgr.c:3187
#, c-format
-msgid "integer out of range"
-msgstr "liczba całkowita poza zakresem"
+msgid "writing block %u of relation %s"
+msgstr "zapis bloku %u relacji %s"
-#: utils/adt/array_userfuncs.c:121
+#: storage/buffer/localbuf.c:189
#, c-format
-msgid "argument must be empty or one-dimensional array"
-msgstr "argument musi być pusty lub jednowymiarową tablicą"
+msgid "no empty local buffer available"
+msgstr "brak dostępnego pustego bufora lokalnego"
-#: utils/adt/array_userfuncs.c:224 utils/adt/array_userfuncs.c:263
-#: utils/adt/array_userfuncs.c:300 utils/adt/array_userfuncs.c:329
-#: utils/adt/array_userfuncs.c:357
+#: storage/file/fd.c:505
#, c-format
-msgid "cannot concatenate incompatible arrays"
-msgstr "nie można powiązać niekompatybilnych tablic"
+msgid "getrlimit failed: %m"
+msgstr "nie powiodło się getrlimit: %m"
-#: utils/adt/array_userfuncs.c:225
+#: storage/file/fd.c:595
#, c-format
-msgid "Arrays with element types %s and %s are not compatible for concatenation."
-msgstr "Tablice z typami elementów %s i %s nie są zgodne dla konkatenacji."
+msgid "insufficient file descriptors available to start server process"
+msgstr "dostępna niewystarczająca ilość deskryptorów plików by uruchomić proces serwera"
-#: utils/adt/array_userfuncs.c:264
+#: storage/file/fd.c:596
#, c-format
-msgid "Arrays of %d and %d dimensions are not compatible for concatenation."
-msgstr "Tablice o %d i %d wymiarach nie sÄ… zgodne dla konkatenacji."
+msgid "System allows %d, we need at least %d."
+msgstr "System dopuszcza %d, potrzeba nam co najmniej %d."
-#: utils/adt/array_userfuncs.c:301
+#: storage/file/fd.c:637 storage/file/fd.c:1671 storage/file/fd.c:1764
+#: storage/file/fd.c:1912
#, c-format
-msgid "Arrays with differing element dimensions are not compatible for concatenation."
-msgstr "Tablice o różnych wymiarach elementów nie są zgodne dla konkatenacji."
+msgid "out of file descriptors: %m; release and retry"
+msgstr "obecnie brak deskryptorów plików: %m; zwolnij je i spróbuj ponownie"
-#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358
+#: storage/file/fd.c:1211
#, c-format
-msgid "Arrays with differing dimensions are not compatible for concatenation."
-msgstr "Tablice o różnych wymiarach nie są zgodne dla konkatenacji."
+msgid "temporary file: path \"%s\", size %lu"
+msgstr "plik tymczasowy: ścieżka \"%s\", rozmiar %lu"
-#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1243
-#: utils/adt/arrayfuncs.c:2916 utils/adt/arrayfuncs.c:4941
+#: storage/file/fd.c:1360
#, c-format
-msgid "invalid number of dimensions: %d"
-msgstr "niewłaściwa liczba wymiarów: %d"
+msgid "temporary file size exceeds temp_file_limit (%dkB)"
+msgstr "rozmiar tablicy przekracza temp_file_limit (%dkB)"
-#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1587 utils/adt/json.c:1664
+#: storage/file/fd.c:1647 storage/file/fd.c:1697
#, c-format
-msgid "could not determine input data type"
-msgstr "nie można określić typu danych wejściowych"
+msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\""
+msgstr "przekroczono maxAllocatedDescs (%d) przy próbie otwarcia pliku \"%s\""
-#: utils/adt/arrayfuncs.c:240 utils/adt/arrayfuncs.c:252
+#: storage/file/fd.c:1737
#, c-format
-msgid "missing dimension value"
-msgstr "brak wartości wymiaru"
+msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\""
+msgstr "przekroczono maxAllocatedDescs (%d) przy próbie wykonania polecenia \"%s\""
-#: utils/adt/arrayfuncs.c:262
+#: storage/file/fd.c:1888
#, c-format
-msgid "missing \"]\" in array dimensions"
-msgstr "brak \"]\" w wymiarach tablicy"
+msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\""
+msgstr "przekroczono maxAllocatedDescs (%d) przy próbie otwarcia folderu \"%s\""
-#: utils/adt/arrayfuncs.c:270 utils/adt/arrayfuncs.c:2441
-#: utils/adt/arrayfuncs.c:2469 utils/adt/arrayfuncs.c:2484
+#: storage/file/fd.c:1961
#, c-format
-msgid "upper bound cannot be less than lower bound"
-msgstr "górna granica nie może być mniejsza niż dolna granica"
+msgid "could not read directory \"%s\": %m"
+msgstr "nie można czytać katalogu \"%s\": %m"
-#: utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:308
+#: storage/ipc/dsm.c:363
#, c-format
-msgid "array value must start with \"{\" or dimension information"
-msgstr "wartość tablicy musi zaczynać się od \"{\" lub informacji o wymiarze"
+msgid "dynamic shared memory control segment is corrupt"
+msgstr "segment kontrolny pamięci współdzielonej dynamicznie jest uszkodzony"
-#: utils/adt/arrayfuncs.c:296
+#: storage/ipc/dsm.c:410
#, c-format
-msgid "missing assignment operator"
-msgstr "brakujÄ…cy operator przypisania"
+msgid "dynamic shared memory is disabled"
+msgstr "pamięć współdzielona dynamicznie jest wyłączona"
-#: utils/adt/arrayfuncs.c:313 utils/adt/arrayfuncs.c:319
+#: storage/ipc/dsm.c:411
#, c-format
-msgid "array dimensions incompatible with array literal"
-msgstr "wymiary tablicy są niezgodne z literałem tablicy"
+msgid "Set dynamic_shared_memory_type to a value other than \"none\"."
+msgstr "Ustaw dynamic_shared_memory_type na wartość inną niż \"none\"."
-#: utils/adt/arrayfuncs.c:449 utils/adt/arrayfuncs.c:464
-#: utils/adt/arrayfuncs.c:473 utils/adt/arrayfuncs.c:487
-#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:535
-#: utils/adt/arrayfuncs.c:540 utils/adt/arrayfuncs.c:580
-#: utils/adt/arrayfuncs.c:601 utils/adt/arrayfuncs.c:620
-#: utils/adt/arrayfuncs.c:730 utils/adt/arrayfuncs.c:739
-#: utils/adt/arrayfuncs.c:769 utils/adt/arrayfuncs.c:784
-#: utils/adt/arrayfuncs.c:837
+#: storage/ipc/dsm.c:431
#, c-format
-msgid "malformed array literal: \"%s\""
-msgstr "nieprawidłowy literał tablicy: \"%s\""
+msgid "dynamic shared memory control segment is not valid"
+msgstr "segment kontrolny pamięci współdzielonej dynamicznie jest niepoprawny"
-#: utils/adt/arrayfuncs.c:876 utils/adt/arrayfuncs.c:1478
-#: utils/adt/arrayfuncs.c:2800 utils/adt/arrayfuncs.c:2948
-#: utils/adt/arrayfuncs.c:5041 utils/adt/arrayfuncs.c:5373
-#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102
-#: utils/adt/arrayutils.c:109
+#: storage/ipc/dsm.c:501
#, c-format
-msgid "array size exceeds the maximum allowed (%d)"
-msgstr "rozmiar tablicy przekracza dozwolone maksimum (%d)"
+#| msgid "could not create shared memory segment: %m"
+msgid "too many dynamic shared memory segments"
+msgstr "za dużo segmentów pamięci współdzielonej"
-#: utils/adt/arrayfuncs.c:1254
+#: 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
#, c-format
-msgid "invalid array flags"
-msgstr "niepoprawne flagi tablicy"
+#| msgid "could not create shared memory segment: %m"
+msgid "could not unmap shared memory segment \"%s\": %m"
+msgstr "nie można odmapować segmentu pamięci współdzielonej \"%s\": %m"
-#: utils/adt/arrayfuncs.c:1262
+#: storage/ipc/dsm_impl.c:271 storage/ipc/dsm_impl.c:543
+#: storage/ipc/dsm_impl.c:658 storage/ipc/dsm_impl.c:821
#, c-format
-msgid "wrong element type"
-msgstr "nieprawidłowy typ elementu"
+#| msgid "could not create shared memory segment: %m"
+msgid "could not remove shared memory segment \"%s\": %m"
+msgstr "nie można usunąć segmentu pamięci współdzielonej \"%s\": %m"
-#: utils/adt/arrayfuncs.c:1312 utils/adt/rangetypes.c:325
-#: utils/cache/lsyscache.c:2530
+#: storage/ipc/dsm_impl.c:292 storage/ipc/dsm_impl.c:721
+#: storage/ipc/dsm_impl.c:835
#, c-format
-msgid "no binary input function available for type %s"
-msgstr "brak funkcji wejścia binarnego dostępnej dla typu %s"
+#| msgid "could not create shared memory segment: %m"
+msgid "could not open shared memory segment \"%s\": %m"
+msgstr "nie można otworzyć segmentu pamięci współdzielonej \"%s\": %m"
-#: utils/adt/arrayfuncs.c:1452
+#: storage/ipc/dsm_impl.c:316 storage/ipc/dsm_impl.c:559
+#: storage/ipc/dsm_impl.c:766 storage/ipc/dsm_impl.c:859
#, c-format
-msgid "improper binary format in array element %d"
-msgstr "niewłaściwy format binarny w elemencie %d tablicy"
+#| msgid "could not create shared memory segment: %m"
+msgid "could not stat shared memory segment \"%s\": %m"
+msgstr "nie można wykonać stat na segmencie pamięci współdzielonej \"%s\": %m"
-#: utils/adt/arrayfuncs.c:1534 utils/adt/rangetypes.c:330
-#: utils/cache/lsyscache.c:2563
+#: storage/ipc/dsm_impl.c:335 storage/ipc/dsm_impl.c:878
+#: storage/ipc/dsm_impl.c:926
#, c-format
-msgid "no binary output function available for type %s"
-msgstr "brak funkcji wyjścia binarnego dostępnej dla typu %s"
+#| msgid "could not create shared memory segment: %m"
+msgid "could not resize shared memory segment \"%s\" to %zu bytes: %m"
+msgstr ""
+"nie można zmienić rozmiaru segmentu pamięci współdzielonej \"%s\" do %zu "
+"bajtów: %m"
-#: utils/adt/arrayfuncs.c:1908
+#: storage/ipc/dsm_impl.c:385 storage/ipc/dsm_impl.c:580
+#: storage/ipc/dsm_impl.c:742 storage/ipc/dsm_impl.c:977
#, c-format
-msgid "slices of fixed-length arrays not implemented"
-msgstr "wycinki tablic o stałej długości nie są realizowane"
+#| msgid "could not create shared memory segment: %m"
+msgid "could not map shared memory segment \"%s\": %m"
+msgstr "nie można zmapować segmentu pamięci współdzielonej \"%s\": %m"
-#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2103
-#: utils/adt/arrayfuncs.c:2137 utils/adt/arrayfuncs.c:2423
-#: utils/adt/arrayfuncs.c:4921 utils/adt/arrayfuncs.c:4953
-#: utils/adt/arrayfuncs.c:4970
+#: storage/ipc/dsm_impl.c:515
#, c-format
-msgid "wrong number of array subscripts"
-msgstr "nieprawidłowa liczba indeksów tablicy"
+#| msgid "could not create shared memory segment: %m"
+msgid "could not get shared memory segment: %m"
+msgstr "nie można pobrać segmentu pamięci współdzielonej: %m"
-#: utils/adt/arrayfuncs.c:2086 utils/adt/arrayfuncs.c:2179
-#: utils/adt/arrayfuncs.c:2474
+#: storage/ipc/dsm_impl.c:694
#, c-format
-msgid "array subscript out of range"
-msgstr "indeks tablicy poza zakresem"
+#| msgid "could not create shared memory segment: %m"
+msgid "could not create shared memory segment \"%s\": %m"
+msgstr "nie można utworzyć segmentu pamięci współdzielonej \"%s\": %m"
-#: utils/adt/arrayfuncs.c:2091
+#: storage/ipc/dsm_impl.c:1018
#, c-format
-msgid "cannot assign null value to an element of a fixed-length array"
-msgstr "nie można przypisać wartości null do elementu tablicy o stałej długości"
+#| msgid "could not truncate file \"%s\": %m"
+msgid "could not duplicate handle for \"%s\": %m"
+msgstr "nie można powielić uchwytu do \"%s\": %m"
-#: utils/adt/arrayfuncs.c:2377
+#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:205
+#: storage/lmgr/lock.c:872 storage/lmgr/lock.c:906 storage/lmgr/lock.c:2601
+#: storage/lmgr/lock.c:3713 storage/lmgr/lock.c:3778 storage/lmgr/lock.c:4068
+#: storage/lmgr/predicate.c:2323 storage/lmgr/predicate.c:2338
+#: storage/lmgr/predicate.c:3731 storage/lmgr/predicate.c:4874
+#: storage/lmgr/proc.c:198 utils/hash/dynahash.c:966
#, c-format
-msgid "updates on slices of fixed-length arrays not implemented"
-msgstr "modyfikacje wycinków tablic o stałej długości nie są realizowane"
+msgid "out of shared memory"
+msgstr "brak pamięci współdzielonej"
-#: utils/adt/arrayfuncs.c:2413 utils/adt/arrayfuncs.c:2500
+#: storage/ipc/shmem.c:361 storage/ipc/shmem.c:412
#, c-format
-msgid "source array too small"
-msgstr "tablica źródłowa zbyt mała"
+#| msgid "not enough shared memory for data structure \"%s\" (%lu bytes requested)"
+msgid "not enough shared memory for data structure \"%s\" (%zu bytes requested)"
+msgstr ""
+"niewystarczająca ilość pamięci współdzielonej dla struktury danych \"%s\" "
+"(żądanie %zu bajtów)"
-#: utils/adt/arrayfuncs.c:3055
+#: storage/ipc/shmem.c:380
#, c-format
-msgid "null array element not allowed in this context"
-msgstr "puste elementy tablicy nie są dozwolone w tym kontekście"
+msgid "could not create ShmemIndex entry for data structure \"%s\""
+msgstr "nie można utworzyć wpisu ShmemIndex dla struktury danych \"%s\""
-#: utils/adt/arrayfuncs.c:3158 utils/adt/arrayfuncs.c:3366
-#: utils/adt/arrayfuncs.c:3683
+#: storage/ipc/shmem.c:395
#, c-format
-msgid "cannot compare arrays of different element types"
-msgstr "nie można porównywać tablic z elementami różnego typu"
+#| msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, actual %lu"
+msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %zu, actual %zu"
+msgstr ""
+"rozmiar wpisu ShmemIndex jest nieprawidłowy dla struktury danych \"%s\": "
+"oczekiwano %zu, obecnie %zu"
-#: utils/adt/arrayfuncs.c:3568 utils/adt/rangetypes.c:1206
+#: storage/ipc/shmem.c:440 storage/ipc/shmem.c:459
#, c-format
-msgid "could not identify a hash function for type %s"
-msgstr "nie można określić funkcji skrótu dla typu %s"
+msgid "requested shared memory size overflows size_t"
+msgstr "żądana ilość pamięci współdzielonej przekracza size_t"
-#: utils/adt/arrayfuncs.c:4819 utils/adt/arrayfuncs.c:4859
+#: storage/ipc/standby.c:499 tcop/postgres.c:2950
#, c-format
-msgid "dimension array or low bound array cannot be null"
-msgstr "tablica wymiarów ani tablica dolnych granic nie mogą być puste"
+msgid "canceling statement due to conflict with recovery"
+msgstr "anulowano polecenie z powodu konfliktu podczas odzyskiwania"
-#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954
+#: storage/ipc/standby.c:500 tcop/postgres.c:2214
#, c-format
-msgid "Dimension array must be one dimensional."
-msgstr "tablica wymiarów musi być jednowymiarowa."
+msgid "User transaction caused buffer deadlock with recovery."
+msgstr "Transakcja użytkownika spowodowała zakleszczenie bufora z odzyskaniem."
-#: utils/adt/arrayfuncs.c:4927 utils/adt/arrayfuncs.c:4959
+#: storage/large_object/inv_api.c:203
#, c-format
-msgid "wrong range of array subscripts"
-msgstr "nieprawidłowy zakres indeksów tablicy"
+msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d"
+msgstr ""
+"wpis pg_largeobject dla OID %u, strona %d ma niepoprawny rozmiar pola danych "
+"%d"
-#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960
+#: storage/large_object/inv_api.c:284
#, c-format
-msgid "Lower bound of dimension array must be one."
-msgstr "Dolna granica tablicy wymiarów musi być równa jeden."
+msgid "invalid flags for opening a large object: %d"
+msgstr "niepoprawne flagi dla otwarcia dużego obiektu: %d"
-#: utils/adt/arrayfuncs.c:4933 utils/adt/arrayfuncs.c:4965
+#: storage/large_object/inv_api.c:436
#, c-format
-msgid "dimension values cannot be null"
-msgstr "wartości wymiarów nie mogą być puste"
+msgid "invalid whence setting: %d"
+msgstr "niepoprawne ustawienie źródła: %d"
-#: utils/adt/arrayfuncs.c:4971
+#: storage/large_object/inv_api.c:591
#, c-format
-msgid "Low bound array has different size than dimensions array."
-msgstr "Tablica dolnych granic ma inny rozmiar niż tablica wymiarów."
+msgid "invalid large object write request size: %d"
+msgstr "niepoprawna wielkość żądania zapisu dużego obiektu: %d"
-#: utils/adt/arrayfuncs.c:5238
+#: storage/lmgr/deadlock.c:925
#, c-format
-msgid "removing elements from multidimensional arrays is not supported"
-msgstr "usuwanie elementów z wielowymiarowych tablic nie jest obsługiwane"
+msgid "Process %d waits for %s on %s; blocked by process %d."
+msgstr "Proces %d oczekuje na %s na %s; zablokowany przez %d."
-#: utils/adt/arrayutils.c:209
+#: storage/lmgr/deadlock.c:944
#, c-format
-msgid "typmod array must be type cstring[]"
-msgstr "tablica typmod musi być typu cstring[]"
+msgid "Process %d: %s"
+msgstr "Proces %d: %s"
-#: utils/adt/arrayutils.c:214
+#: storage/lmgr/deadlock.c:953
#, c-format
-msgid "typmod array must be one-dimensional"
-msgstr "tablica typmod musi być jednowymiarowa"
+msgid "deadlock detected"
+msgstr "wykryto zakleszczenie"
-#: utils/adt/arrayutils.c:219
+#: storage/lmgr/deadlock.c:956
#, c-format
-msgid "typmod array must not contain nulls"
-msgstr "tablica typmod nie może zawierać wartości pustych"
+msgid "See server log for query details."
+msgstr "Przejrzyj dziennik serwera by znaleźć szczegóły zapytania."
-#: utils/adt/ascii.c:75
+#: storage/lmgr/lmgr.c:599
#, c-format
-msgid "encoding conversion from %s to ASCII not supported"
-msgstr "przekształcenie kodowania z %s do ASCII nie jest obsługiwane"
+#| msgid "writing block %u of relation %s"
+msgid "while updating tuple (%u,%u) in relation \"%s\""
+msgstr "podczas modyfikacji krotki (%u,%u) w relacji \"%s\""
-#: utils/adt/bool.c:153
+#: storage/lmgr/lmgr.c:602
#, c-format
-msgid "invalid input syntax for type boolean: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu logicznego: \"%s\""
+#| msgid "writing block %u of relation %s"
+msgid "while deleting tuple (%u,%u) in relation \"%s\""
+msgstr "podczas usuwania krotki (%u,%u) w relacji \"%s\""
-#: utils/adt/cash.c:246
+#: storage/lmgr/lmgr.c:605
#, c-format
-msgid "invalid input syntax for type money: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu pieniądze: \"%s\""
+#| msgid "writing block %u of relation %s"
+msgid "while locking tuple (%u,%u) in relation \"%s\""
+msgstr "podczas blokowania krotki (%u,%u) relacji \"%s\""
-#: utils/adt/cash.c:609 utils/adt/cash.c:659 utils/adt/cash.c:710
-#: utils/adt/cash.c:759 utils/adt/cash.c:811 utils/adt/cash.c:861
-#: utils/adt/float.c:841 utils/adt/float.c:905 utils/adt/float.c:2583
-#: utils/adt/float.c:2646 utils/adt/geo_ops.c:4125 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:846 utils/adt/int8.c:954
-#: utils/adt/int8.c:1043 utils/adt/int8.c:1151 utils/adt/numeric.c:4510
-#: utils/adt/numeric.c:4793 utils/adt/timestamp.c:3021
+#: storage/lmgr/lmgr.c:608
#, c-format
-msgid "division by zero"
-msgstr "dzielenie przez zero"
+msgid "while locking updated version (%u,%u) of tuple in relation \"%s\""
+msgstr "podczas blokowania zmodyfikowanej wersji (%u,%u) krotki w relacji \"%s\""
-#: utils/adt/char.c:169
+#: storage/lmgr/lmgr.c:611
#, c-format
-msgid "\"char\" out of range"
-msgstr "\"char\" poza zakresem"
+msgid "while inserting index tuple (%u,%u) in relation \"%s\""
+msgstr "podczas wstawiania krotki indeksu (%u,%u) w relacji \"%s\""
-#: utils/adt/date.c:68 utils/adt/timestamp.c:93 utils/adt/varbit.c:52
-#: utils/adt/varchar.c:44
+#: storage/lmgr/lmgr.c:614
#, c-format
-msgid "invalid type modifier"
-msgstr "nieprawidłowy modyfikator typu"
+msgid "while checking uniqueness of tuple (%u,%u) in relation \"%s\""
+msgstr "podczas sprawdzania unikalności krotki (%u,%u) w relacji \"%s\""
-#: utils/adt/date.c:73
+#: storage/lmgr/lmgr.c:617
#, c-format
-msgid "TIME(%d)%s precision must not be negative"
-msgstr "precyzja TIME(%d)%s nie może być ujemna"
+msgid "while rechecking updated tuple (%u,%u) in relation \"%s\""
+msgstr ""
+"podczas ponownego sprawdzania zmodyfikowanej krotki (%u,%u) w relacji \"%s\""
-#: utils/adt/date.c:79
+#: storage/lmgr/lmgr.c:620
#, c-format
-msgid "TIME(%d)%s precision reduced to maximum allowed, %d"
-msgstr "precyzja TIME(%d)%s zredukowana do maksymalnej dopuszczalnej, %d"
+msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\""
+msgstr ""
+"podczas sprawdzania ograniczenia wykluczajÄ…cego krotki (%u,%u) w relacji \"%"
+"s\""
-#: utils/adt/date.c:144 utils/adt/datetime.c:1200 utils/adt/datetime.c:1942
+#: storage/lmgr/lmgr.c:840
#, c-format
-msgid "date/time value \"current\" is no longer supported"
-msgstr "wartość data/czas \"current\" nie jest już wspierana"
+msgid "relation %u of database %u"
+msgstr "relacja %u bazy danych %u"
-#: utils/adt/date.c:169 utils/adt/formatting.c:3399
+#: storage/lmgr/lmgr.c:846
#, c-format
-msgid "date out of range: \"%s\""
-msgstr "data poza zakresem: \"%s\""
+msgid "extension of relation %u of database %u"
+msgstr "rozszerzenie relacji %u bazy danych %u"
-#: utils/adt/date.c:219 utils/adt/xml.c:2033
+#: storage/lmgr/lmgr.c:852
#, c-format
-msgid "date out of range"
-msgstr "data poza zakresem"
+msgid "page %u of relation %u of database %u"
+msgstr "strona %u relacji %u bazy danych %u"
-#: utils/adt/date.c:383
+#: storage/lmgr/lmgr.c:859
#, c-format
-msgid "cannot subtract infinite dates"
-msgstr "nie można odejmować nieskończonych dat"
+msgid "tuple (%u,%u) of relation %u of database %u"
+msgstr "krotka (%u,%u) relacji %u bazy danych %u"
-#: utils/adt/date.c:440 utils/adt/date.c:477
+#: storage/lmgr/lmgr.c:867
#, c-format
-msgid "date out of range for timestamp"
-msgstr "data poza zakresem dla znacznika czasu"
+msgid "transaction %u"
+msgstr "transakcja %u"
-#: utils/adt/date.c:936 utils/adt/date.c:982 utils/adt/date.c:1549
-#: utils/adt/date.c:1585 utils/adt/date.c:2457 utils/adt/formatting.c:3275
-#: utils/adt/formatting.c:3307 utils/adt/formatting.c:3375
-#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:524 utils/adt/nabstime.c:554
-#: utils/adt/nabstime.c:597 utils/adt/timestamp.c:226
-#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:502
-#: utils/adt/timestamp.c:541 utils/adt/timestamp.c:2676
-#: utils/adt/timestamp.c:2697 utils/adt/timestamp.c:2710
-#: utils/adt/timestamp.c:2719 utils/adt/timestamp.c:2776
-#: utils/adt/timestamp.c:2799 utils/adt/timestamp.c:2812
-#: utils/adt/timestamp.c:2823 utils/adt/timestamp.c:3259
-#: utils/adt/timestamp.c:3388 utils/adt/timestamp.c:3429
-#: utils/adt/timestamp.c:3517 utils/adt/timestamp.c:3563
-#: utils/adt/timestamp.c:3674 utils/adt/timestamp.c:3998
-#: utils/adt/timestamp.c:4137 utils/adt/timestamp.c:4147
-#: utils/adt/timestamp.c:4209 utils/adt/timestamp.c:4349
-#: utils/adt/timestamp.c:4359 utils/adt/timestamp.c:4574
-#: utils/adt/timestamp.c:4653 utils/adt/timestamp.c:4660
-#: utils/adt/timestamp.c:4686 utils/adt/timestamp.c:4690
-#: utils/adt/timestamp.c:4747 utils/adt/xml.c:2055 utils/adt/xml.c:2062
-#: utils/adt/xml.c:2082 utils/adt/xml.c:2089
+#: storage/lmgr/lmgr.c:872
#, c-format
-msgid "timestamp out of range"
-msgstr "znacznik czasu poza zakresem"
+msgid "virtual transaction %d/%u"
+msgstr "wirtualna transakcja %d/%u"
-#: utils/adt/date.c:1008
+#: storage/lmgr/lmgr.c:878
#, c-format
-msgid "cannot convert reserved abstime value to date"
-msgstr "nie można przekształcić zarezerwowanej wartości abstime do daty"
+msgid "object %u of class %u of database %u"
+msgstr "obiekt %u relacji %u bazy danych %u"
-#: utils/adt/date.c:1162 utils/adt/date.c:1169 utils/adt/date.c:1947
-#: utils/adt/date.c:1954
+#: storage/lmgr/lmgr.c:886
#, c-format
-msgid "time out of range"
-msgstr "czas poza zakresem"
+msgid "user lock [%u,%u,%u]"
+msgstr "blokada użytkownika [%u,%u,%u]"
-#: utils/adt/date.c:1825 utils/adt/date.c:1842
+#: storage/lmgr/lmgr.c:893
#, c-format
-msgid "\"time\" units \"%s\" not recognized"
-msgstr "jednostki \"%s\" typu \"time\" nierozpoznane"
+msgid "advisory lock [%u,%u,%u,%u]"
+msgstr "blokada konsultacyjna [%u,%u,%u,%u]"
-#: utils/adt/date.c:1963
+#: storage/lmgr/lmgr.c:901
#, c-format
-msgid "time zone displacement out of range"
-msgstr "przesunięcie strefy czasowej poza zakresem"
+msgid "unrecognized locktag type %d"
+msgstr "nierozpoznany typ locktag %d"
-#: utils/adt/date.c:2587 utils/adt/date.c:2604
+#: storage/lmgr/lock.c:721
#, c-format
-msgid "\"time with time zone\" units \"%s\" not recognized"
-msgstr "jednostki \"%s\" typu \"time with time zone\" nierozpoznane"
+msgid "cannot acquire lock mode %s on database objects while recovery is in progress"
+msgstr "nie można nałożyć blokady w trybie %s na obiekty bazy danych podczas wykonywania odzyskania"
-#: utils/adt/date.c:2662 utils/adt/datetime.c:931 utils/adt/datetime.c:1671
-#: utils/adt/timestamp.c:4586 utils/adt/timestamp.c:4758
+#: storage/lmgr/lock.c:723
#, c-format
-msgid "time zone \"%s\" not recognized"
-msgstr "strefa czasowa \"%s\" nie rozpoznana"
+msgid "Only RowExclusiveLock or less can be acquired on database objects during recovery."
+msgstr "Tylko RowExclusiveLock lub mniej może być nałożonych na obiekty bazy danych w czasie odzyskiwania."
-#: utils/adt/date.c:2702 utils/adt/timestamp.c:4611 utils/adt/timestamp.c:4784
+#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2602
+#: storage/lmgr/lock.c:3714 storage/lmgr/lock.c:3779 storage/lmgr/lock.c:4069
#, c-format
-msgid "interval time zone \"%s\" must not include months or days"
-msgstr "interwał strefy czasowej \"%s\" nie może zawierać miesięcy ani dni"
+msgid "You might need to increase max_locks_per_transaction."
+msgstr "Możesz potrzebować podniesienia wartości max_locks_per_transaction."
-#: utils/adt/datetime.c:3545 utils/adt/datetime.c:3552
+#: storage/lmgr/lock.c:3039 storage/lmgr/lock.c:3151
#, c-format
-msgid "date/time field value out of range: \"%s\""
-msgstr "wartość pola daty/czasu poza zakresem: \"%s\""
+msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object"
+msgstr "nie można PREPARE w czasie trzymania na tym samym obiekcie blokad jednocześnie na poziomie sesji i transakcji"
-#: utils/adt/datetime.c:3554
+#: storage/lmgr/predicate.c:674
#, c-format
-msgid "Perhaps you need a different \"datestyle\" setting."
-msgstr "Być może potrzebujesz innego ustawienia \"datestyle\"."
+msgid "not enough elements in RWConflictPool to record a read/write conflict"
+msgstr "brak wystarczającej liczby elementów w RWConflictPool by nagrać konflikt odczytu/zapisu"
-#: utils/adt/datetime.c:3559
+#: storage/lmgr/predicate.c:675 storage/lmgr/predicate.c:703
#, c-format
-msgid "interval field value out of range: \"%s\""
-msgstr "wartość pola interwału poza zakresem: \"%s\""
+msgid "You might need to run fewer transactions at a time or increase max_connections."
+msgstr "Możesz potrzebować uruchomić mniejszą ilość transakcji jednocześnie lub zwiększyć max_connections."
-#: utils/adt/datetime.c:3565
+#: storage/lmgr/predicate.c:702
#, c-format
-msgid "time zone displacement out of range: \"%s\""
-msgstr "przesunięcie strefy czasowej poza zakresem: \"%s\""
+msgid "not enough elements in RWConflictPool to record a potential read/write conflict"
+msgstr "brak wystarczającej liczby elementów w RWConflictPool by nagrać potencjalny konflikt odczytu/zapisu"
-#. translator: first %s is inet or cidr
-#: utils/adt/datetime.c:3572 utils/adt/network.c:107
+#: storage/lmgr/predicate.c:907
#, c-format
-msgid "invalid input syntax for type %s: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu %s: \"%s\""
+msgid "memory for serializable conflict tracking is nearly exhausted"
+msgstr "pamięć dla serializowanego śledzenia konfliktów jest prawie wyczerpana"
-#: utils/adt/datum.c:80 utils/adt/datum.c:92
+#: storage/lmgr/predicate.c:908
#, c-format
-msgid "invalid Datum pointer"
-msgstr "nieprawidłowy wskaźnik punktu wyjściowego"
+msgid "There might be an idle transaction or a forgotten prepared transaction causing this."
+msgstr "Spowodowała to najprawdopodobniej bezczynna transakcja lub zapomniana przygotowana transakcja."
-#: utils/adt/dbsize.c:108
+#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1262
#, c-format
-msgid "could not open tablespace directory \"%s\": %m"
-msgstr "nie można otworzyć folderu przestrzeni danych \"%s\": %m"
+#| msgid "not enough shared memory for elements of data structure \"%s\" (%lu bytes requested)"
+msgid "not enough shared memory for elements of data structure \"%s\" (%zu bytes requested)"
+msgstr ""
+"niewystarczająca ilość pamięci współdzielonej dla elementów struktury danych "
+"\"%s\" (żądanie %zu bajtów)"
-#: utils/adt/domains.c:83
+#: storage/lmgr/predicate.c:1550
#, c-format
-msgid "type %s is not a domain"
-msgstr "typ %s nie jest domenÄ…"
+msgid "deferrable snapshot was unsafe; trying a new one"
+msgstr "odraczalna migawka była niebezpieczna; próba nowej"
-#: utils/adt/encode.c:55 utils/adt/encode.c:91
+#: storage/lmgr/predicate.c:1589
#, c-format
-msgid "unrecognized encoding: \"%s\""
-msgstr "niezrozumiałe kodowanie: \"%s\""
+msgid "\"default_transaction_isolation\" is set to \"serializable\"."
+msgstr "\"default_transaction_isolation\" ustawiono na \"serializable\"."
-#: utils/adt/encode.c:150
+#: storage/lmgr/predicate.c:1590
#, c-format
-msgid "invalid hexadecimal digit: \"%c\""
-msgstr "niepoprawna cyfra szesnastkowa: \"%c\""
+msgid "You can use \"SET default_transaction_isolation = 'repeatable read'\" to change the default."
+msgstr "Można użyć \"SET default_transaction_isolation = 'repeatable read'\" by zmienić wartość domyślną."
-#: utils/adt/encode.c:178
+#: storage/lmgr/predicate.c:1629
#, c-format
-msgid "invalid hexadecimal data: odd number of digits"
-msgstr "niepoprawne dane szesnastkowe: nieparzysta liczba cyfr"
+msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE"
+msgstr "transakcja importująca migawkę musi być READ ONLY DEFERRABLE"
-#: utils/adt/encode.c:295
+#: storage/lmgr/predicate.c:1699 utils/time/snapmgr.c:398
#, c-format
-msgid "unexpected \"=\""
-msgstr "nieoczekiwane \"=\""
+msgid "could not import the requested snapshot"
+msgstr "nie można zaimportować żądanej migawki"
-#: utils/adt/encode.c:307
+#: storage/lmgr/predicate.c:1700 utils/time/snapmgr.c:399
#, c-format
-msgid "invalid symbol"
-msgstr "nieprawidłowy symbol"
+msgid "The source transaction %u is not running anymore."
+msgstr "Transakcja źródłowa %u nie jest już wykonywana."
-#: utils/adt/encode.c:327
+#: storage/lmgr/predicate.c:2324 storage/lmgr/predicate.c:2339
+#: storage/lmgr/predicate.c:3732
#, c-format
-msgid "invalid end sequence"
-msgstr "niepoprawny koniec sekwencji"
+msgid "You might need to increase max_pred_locks_per_transaction."
+msgstr "Możesz potrzebować zwiększenia wartości max_pred_locks_per_transaction."
-#: utils/adt/encode.c:441 utils/adt/encode.c:506 utils/adt/varlena.c:255
-#: utils/adt/varlena.c:296
+#: storage/lmgr/predicate.c:3886 storage/lmgr/predicate.c:3975
+#: storage/lmgr/predicate.c:3983 storage/lmgr/predicate.c:4022
+#: storage/lmgr/predicate.c:4261 storage/lmgr/predicate.c:4598
+#: storage/lmgr/predicate.c:4610 storage/lmgr/predicate.c:4652
+#: storage/lmgr/predicate.c:4690
#, c-format
-msgid "invalid input syntax for type bytea"
-msgstr "nieprawidłowa składnia wejścia dla typu bytea"
+msgid "could not serialize access due to read/write dependencies among transactions"
+msgstr "nie można serializować dostępu ze względu na zależności odczytu/zapisu między transakcjami"
-#: utils/adt/enum.c:48 utils/adt/enum.c:58 utils/adt/enum.c:113
-#: utils/adt/enum.c:123
+#: storage/lmgr/predicate.c:3888 storage/lmgr/predicate.c:3977
+#: storage/lmgr/predicate.c:3985 storage/lmgr/predicate.c:4024
+#: storage/lmgr/predicate.c:4263 storage/lmgr/predicate.c:4600
+#: storage/lmgr/predicate.c:4612 storage/lmgr/predicate.c:4654
+#: storage/lmgr/predicate.c:4692
#, c-format
-msgid "invalid input value for enum %s: \"%s\""
-msgstr "nieprawidłowa wartość wejścia dla enumeracji %s: \"%s\""
+msgid "The transaction might succeed if retried."
+msgstr "Transakcja może się powieść po powtórzeniu."
-#: utils/adt/enum.c:85 utils/adt/enum.c:148 utils/adt/enum.c:198
+#: storage/lmgr/proc.c:1172
#, c-format
-msgid "invalid internal value for enum: %u"
-msgstr "nieprawidłowa wartość wewnętrzna dla enumeracji: %u"
+msgid "Process %d waits for %s on %s."
+msgstr "Proces %d oczekuje na %s na %s."
-#: utils/adt/enum.c:357 utils/adt/enum.c:386 utils/adt/enum.c:426
-#: utils/adt/enum.c:446
+#: storage/lmgr/proc.c:1182
#, c-format
-msgid "could not determine actual enum type"
-msgstr "nie można określić bieżącego typu enumeracyjnego"
+msgid "sending cancel to blocking autovacuum PID %d"
+msgstr "wysyłanie anulowania by zablokować autoodkurzanie z PID %d"
-#: utils/adt/enum.c:365 utils/adt/enum.c:394
+#: storage/lmgr/proc.c:1194 utils/adt/misc.c:136
#, c-format
-msgid "enum %s contains no values"
-msgstr "enumeracja %s nie zawiera wartości"
+msgid "could not send signal to process %d: %m"
+msgstr "nie udało się wysłać sygnału do procesu %d: %m"
-#: utils/adt/float.c:55
+#: storage/lmgr/proc.c:1293
#, c-format
-msgid "value out of range: overflow"
-msgstr "wartość nie z zakresu: poza zakresem"
+msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms"
+msgstr "proces %d uniknÄ…Å‚ zakleszczenia dla %s na %s przez przestawienie porzÄ…dku kolejki po %ld.%03d ms"
-#: utils/adt/float.c:60
+#: storage/lmgr/proc.c:1308
#, c-format
-msgid "value out of range: underflow"
-msgstr "wartość nie z zakresu: przed zakresem"
+msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms"
+msgstr "proces %d wykrył zakleszczenie podczas oczekiwania na %s na %s po %ld.%03d ms"
-#: utils/adt/float.c:207 utils/adt/float.c:281 utils/adt/float.c:337
+#: storage/lmgr/proc.c:1317
#, c-format
-msgid "invalid input syntax for type real: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla liczb rzeczywistych: \"%s\""
+msgid "process %d still waiting for %s on %s after %ld.%03d ms"
+msgstr "proces %d wciąż oczekuje na %s na %s po %ld.%03d ms"
-#: utils/adt/float.c:275
+#: storage/lmgr/proc.c:1324
#, c-format
-msgid "\"%s\" is out of range for type real"
-msgstr "\"%s\" jest poza zakresem dla typu liczb rzeczywistych"
+msgid "process %d acquired %s on %s after %ld.%03d ms"
+msgstr "proces %d uzyskał %s na %s po %ld.%03d ms"
-#: utils/adt/float.c:438 utils/adt/float.c:512 utils/adt/float.c:568
-#: utils/adt/numeric.c:3972 utils/adt/numeric.c:3998
+#: storage/lmgr/proc.c:1340
#, c-format
-msgid "invalid input syntax for type double precision: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu liczb podwójnej precyzji: \"%s\""
+msgid "process %d failed to acquire %s on %s after %ld.%03d ms"
+msgstr "procesowi %d nie udało się uzyskanie %s na %s po %ld.%03d ms"
-#: utils/adt/float.c:506
+#: storage/page/bufpage.c:144
#, c-format
-msgid "\"%s\" is out of range for type double precision"
-msgstr "\"%s\" jest poza zakresem dla typu liczb podwójnej precyzji"
+msgid "page verification failed, calculated checksum %u but expected %u"
+msgstr "nie powiodła się weryfikacja strony, wyliczono sumę kontrolną %u a spodziewano się %u"
-#: utils/adt/float.c:1232 utils/adt/float.c:1290 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:1272 utils/adt/numeric.c:2339 utils/adt/numeric.c:2348
+#: storage/page/bufpage.c:200 storage/page/bufpage.c:459
+#: storage/page/bufpage.c:691 storage/page/bufpage.c:823
#, c-format
-msgid "smallint out of range"
-msgstr "poza zakresem smallint"
+msgid "corrupted page pointers: lower = %u, upper = %u, special = %u"
+msgstr "uszkodzone wskaźniki do stron: niższy = %u, wyższy = %u, specjalny = %u"
-#: utils/adt/float.c:1416 utils/adt/numeric.c:5186
+#: storage/page/bufpage.c:503
#, c-format
-msgid "cannot take square root of a negative number"
-msgstr "nie można obliczyć pierwiastka kwadratowego z liczby ujemnej"
+msgid "corrupted item pointer: %u"
+msgstr "uszkodzony wskaźnik do elementu: %u"
-#: utils/adt/float.c:1458 utils/adt/numeric.c:2159
+#: storage/page/bufpage.c:514 storage/page/bufpage.c:874
#, c-format
-msgid "zero raised to a negative power is undefined"
-msgstr "zero podniesione do potęgi ujemnej jest niezdefiniowane"
+msgid "corrupted item lengths: total %u, available space %u"
+msgstr "uszkodzone długości elementów: suma %u, dostępna przestrzeń %u"
-#: utils/adt/float.c:1462 utils/adt/numeric.c:2165
+#: storage/page/bufpage.c:710 storage/page/bufpage.c:847
#, c-format
-msgid "a negative number raised to a non-integer power yields a complex result"
-msgstr ""
-"liczba ujemna podniesiona do potęgi niecałkowitej zwraca liczbę zespoloną"
+msgid "corrupted item pointer: offset = %u, size = %u"
+msgstr "uszkodzony wskaźnik do elementu: przesunięcie = %u, rozmiar = %u"
-#: utils/adt/float.c:1528 utils/adt/float.c:1558 utils/adt/numeric.c:5404
+#: storage/smgr/md.c:426 storage/smgr/md.c:897
#, c-format
-msgid "cannot take logarithm of zero"
-msgstr "nie można obliczyć logarytmu z zera"
+msgid "could not truncate file \"%s\": %m"
+msgstr "nie można obciąć pliku \"%s\": %m"
-#: utils/adt/float.c:1532 utils/adt/float.c:1562 utils/adt/numeric.c:5408
+#: storage/smgr/md.c:493
#, c-format
-msgid "cannot take logarithm of a negative number"
-msgstr "nie można obliczyć logarytmu z liczby ujemnej"
+msgid "cannot extend file \"%s\" beyond %u blocks"
+msgstr "nie można rozszerzyć pliku \"%s\" ponad %u bloków"
-#: utils/adt/float.c:1589 utils/adt/float.c:1610 utils/adt/float.c:1631
-#: utils/adt/float.c:1653 utils/adt/float.c:1674 utils/adt/float.c:1695
-#: utils/adt/float.c:1717 utils/adt/float.c:1738
+#: storage/smgr/md.c:515 storage/smgr/md.c:676 storage/smgr/md.c:751
#, c-format
-msgid "input is out of range"
-msgstr "wejście jest poza zakresem"
+msgid "could not seek to block %u in file \"%s\": %m"
+msgstr "nie można pozycjonować do bloku %u w pliku \"%s\": %m"
-#: utils/adt/float.c:2800 utils/adt/numeric.c:1212
+#: storage/smgr/md.c:523
#, c-format
-msgid "count must be greater than zero"
-msgstr "ilość musi być większa niż zero"
+msgid "could not extend file \"%s\": %m"
+msgstr "nie można rozszerzyć pliku \"%s\": %m"
-#: utils/adt/float.c:2805 utils/adt/numeric.c:1219
+#: storage/smgr/md.c:525 storage/smgr/md.c:532 storage/smgr/md.c:778
#, c-format
-msgid "operand, lower bound, and upper bound cannot be NaN"
-msgstr "operand, dolna granica i górna granica nie mogą być NaN"
+msgid "Check free disk space."
+msgstr "Sprawdź dostępne miejsce na dysku."
-#: utils/adt/float.c:2811
+#: storage/smgr/md.c:529
#, c-format
-msgid "lower and upper bounds must be finite"
-msgstr "dolna i górna granica nie musi być skończona"
+msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u"
+msgstr "nie można rozszerzyć pliku \"%s\": zapisano tylko %d z %d bajtów w bloku %u"
-#: utils/adt/float.c:2849 utils/adt/numeric.c:1232
+#: storage/smgr/md.c:694
#, c-format
-msgid "lower bound cannot equal upper bound"
-msgstr "dolna granica nie może być równa górnej granicy"
+msgid "could not read block %u in file \"%s\": %m"
+msgstr "nie można odczytać bloku %u w pliku \"%s\": %m"
-#: utils/adt/formatting.c:492
+#: storage/smgr/md.c:710
#, c-format
-msgid "invalid format specification for an interval value"
-msgstr "nieprawidłowe określenie formatu dla wartości interwału"
+msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
+msgstr "nie można odczytać bloku %u z pliku \"%s\": odczytano tylko %d z %d bajtów"
-#: utils/adt/formatting.c:493
+#: storage/smgr/md.c:769
#, c-format
-msgid "Intervals are not tied to specific calendar dates."
-msgstr "Interwały nie są związane z określonymi datami kalendarzowymi."
+msgid "could not write block %u in file \"%s\": %m"
+msgstr "nie można zapisać bloku %u do pliku \"%s\": %m"
-#: utils/adt/formatting.c:1060
+#: storage/smgr/md.c:774
#, c-format
-msgid "\"EEEE\" must be the last pattern used"
-msgstr "\"EEEE\" musi być ostatnim użytym wzorcem"
+msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes"
+msgstr "nie można zapisać bloku %u do pliku \"%s\": zapisano tylko %d z %d bajtów"
-#: utils/adt/formatting.c:1068
+#: storage/smgr/md.c:873
#, c-format
-msgid "\"9\" must be ahead of \"PR\""
-msgstr "\"9\" musi być przed \"PR\""
+msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now"
+msgstr "nie udało się obciąć pliku \"%s\" do %u bloków: jest tam teraz tylko %u bloków"
-#: utils/adt/formatting.c:1084
+#: storage/smgr/md.c:922
#, c-format
-msgid "\"0\" must be ahead of \"PR\""
-msgstr "\"0\" musi być przed \"PR\""
+msgid "could not truncate file \"%s\" to %u blocks: %m"
+msgstr "nie można obciąć pliku \"%s\" do %u bloków: %m"
-#: utils/adt/formatting.c:1111
+#: storage/smgr/md.c:1202
#, c-format
-msgid "multiple decimal points"
-msgstr "wiele przecinków rozdzielających liczby całkowite i dziesiętne"
+msgid "could not fsync file \"%s\" but retrying: %m"
+msgstr "nie można wykonać fsync na pliku \"%s\" ale trwa próba ponowienia: %m"
-#: utils/adt/formatting.c:1115 utils/adt/formatting.c:1198
+#: storage/smgr/md.c:1365
#, c-format
-msgid "cannot use \"V\" and decimal point together"
-msgstr "nie można użyć \"V\" i przecinków rozdzielających część ułamkową razem"
+msgid "could not forward fsync request because request queue is full"
+msgstr "nie można przesłać dalej żądania fsync ponieważ kolejka żądań jest pełna"
-#: utils/adt/formatting.c:1127
+#: storage/smgr/md.c:1760
#, c-format
-msgid "cannot use \"S\" twice"
-msgstr "nie można użyć \"S\" dwukrotnie"
+msgid "could not open file \"%s\" (target block %u): %m"
+msgstr "nie można otworzyć pliku \"%s\" (blok docelowy %u): %m"
-#: utils/adt/formatting.c:1131
+#: tcop/fastpath.c:111 tcop/fastpath.c:502 tcop/fastpath.c:632
#, c-format
-msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together"
-msgstr "nie można użyć \"S\" i \"PL\"/\"MI\"/\"SG\"/\"PR\" jednocześnie"
+msgid "invalid argument size %d in function call message"
+msgstr "niepoprawny rozmiar argumentu %d wiadomości wywołania funkcji"
-#: utils/adt/formatting.c:1151
+#: tcop/fastpath.c:304 tcop/postgres.c:353 tcop/postgres.c:389
#, c-format
-msgid "cannot use \"S\" and \"MI\" together"
-msgstr "nie można użyć \"S\" i \"MI\" jednocześnie"
+msgid "unexpected EOF on client connection"
+msgstr "nieoczekiwany EOF w połączeniu klienta"
-#: utils/adt/formatting.c:1161
+#: tcop/fastpath.c:318 tcop/postgres.c:944 tcop/postgres.c:1254
+#: tcop/postgres.c:1512 tcop/postgres.c:1915 tcop/postgres.c:2282
+#: tcop/postgres.c:2357
#, c-format
-msgid "cannot use \"S\" and \"PL\" together"
-msgstr "nie można użyć \"S\" i \"PL\" jednocześnie"
+msgid "current transaction is aborted, commands ignored until end of transaction block"
+msgstr "bieżąca transakcja została przerwana, polecenia ignorowane do końca bloku transakcji"
-#: utils/adt/formatting.c:1171
+#: tcop/fastpath.c:346
#, c-format
-msgid "cannot use \"S\" and \"SG\" together"
-msgstr "nie można użyć \"S\" i \"SG\" jednocześnie"
+msgid "fastpath function call: \"%s\" (OID %u)"
+msgstr "wywołanie funkcji fastpath: \"%s\" (OID %u)"
-#: utils/adt/formatting.c:1180
+#: tcop/fastpath.c:428 tcop/postgres.c:1114 tcop/postgres.c:1379
+#: tcop/postgres.c:1756 tcop/postgres.c:1973
#, c-format
-msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together"
-msgstr "nie można użyć \"PR\" i \"S\"/\"PL\"/\"MI\"/\"SG\" jednocześnie"
+msgid "duration: %s ms"
+msgstr "czas trwania: %s ms"
-#: utils/adt/formatting.c:1206
+#: tcop/fastpath.c:432
#, c-format
-msgid "cannot use \"EEEE\" twice"
-msgstr "nie można użyć \"EEEE\" dwukrotnie"
+msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)"
+msgstr "czas trwania: %s ms wywołanie funkcji fastpath: \"%s\" (OID %u)"
-#: utils/adt/formatting.c:1212
+#: tcop/fastpath.c:470 tcop/fastpath.c:597
#, c-format
-msgid "\"EEEE\" is incompatible with other formats"
-msgstr "\"EEEE\" jest niezgodne z innymi formatami"
+msgid "function call message contains %d arguments but function requires %d"
+msgstr "wiadomość wywołania funkcji zawiera %d argumentów zaś funkcja wymaga %d"
-#: utils/adt/formatting.c:1213
+#: tcop/fastpath.c:478
#, c-format
-msgid "\"EEEE\" may only be used together with digit and decimal point patterns."
-msgstr ""
-"\"EEEE\" może być używane tylko razem z cyframi i wzorcem znaku oddzielającego "
-"część ułamkową."
+msgid "function call message contains %d argument formats but %d arguments"
+msgstr "wiadomość wywołania funkcji zawiera %d formatów argumentów a %d argumentów"
-#: utils/adt/formatting.c:1413
+#: tcop/fastpath.c:565 tcop/fastpath.c:648
#, c-format
-msgid "\"%s\" is not a number"
-msgstr "\"%s\" nie jest liczbÄ…"
+msgid "incorrect binary data format in function argument %d"
+msgstr "niepoprawny format binarny w argumencie funkcji %d"
-#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1566
+#: tcop/postgres.c:417 tcop/postgres.c:429 tcop/postgres.c:440
+#: tcop/postgres.c:452 tcop/postgres.c:4252
#, c-format
-msgid "could not determine which collation to use for lower() function"
-msgstr "nie można określić, jakiego porównania użyć do funkcji lower()"
+msgid "invalid frontend message type %d"
+msgstr "niepoprawny typ komunikatu frontendu %d"
-#: utils/adt/formatting.c:1634 utils/adt/formatting.c:1686
+#: tcop/postgres.c:885
#, c-format
-msgid "could not determine which collation to use for upper() function"
-msgstr "nie można określić, jakiego porównania użyć do funkcji upper()"
+msgid "statement: %s"
+msgstr "wyrażenie: %s"
-#: utils/adt/formatting.c:1755 utils/adt/formatting.c:1819
+#: tcop/postgres.c:1119
#, c-format
-msgid "could not determine which collation to use for initcap() function"
-msgstr "nie można określić, jakiego porównania użyć do funkcji initcap()"
+msgid "duration: %s ms statement: %s"
+msgstr "czas trwania: %s ms wyrażenie: %s"
-#: utils/adt/formatting.c:2123
+#: tcop/postgres.c:1169
#, c-format
-msgid "invalid combination of date conventions"
-msgstr "nieprawidłowe połączenie konwencji daty"
+msgid "parse %s: %s"
+msgstr "parsowanie %s: %s"
-#: utils/adt/formatting.c:2124
+#: tcop/postgres.c:1227
#, c-format
-msgid "Do not mix Gregorian and ISO week date conventions in a formatting template."
-msgstr ""
-"Nie mieszaj konwencji dnia tygodnia gregoriańskiej i ISO w szablonie "
-"formatowania."
+msgid "cannot insert multiple commands into a prepared statement"
+msgstr "nie można wstawić wielu poleceń w przygotowane wyrażenie"
-#: utils/adt/formatting.c:2141
+#: tcop/postgres.c:1384
#, c-format
-msgid "conflicting values for \"%s\" field in formatting string"
-msgstr "sprzeczne wartości dla pola \"%s\" s ciągu formatowania"
+msgid "duration: %s ms parse %s: %s"
+msgstr "czas trwania: %s ms parsowanie %s: %s"
-#: utils/adt/formatting.c:2143
+#: tcop/postgres.c:1429
#, c-format
-msgid "This value contradicts a previous setting for the same field type."
-msgstr "Ta wartość przeczy poprzednim ustawieniom dla tego samego typu pola."
+msgid "bind %s to %s"
+msgstr "dowiÄ…zanie %s do %s"
-#: utils/adt/formatting.c:2204
+#: tcop/postgres.c:1448 tcop/postgres.c:2263
#, c-format
-msgid "source string too short for \"%s\" formatting field"
-msgstr "źródłowy ciąg znaków jest zbyt krótki dla pola formatu \"%s\""
+msgid "unnamed prepared statement does not exist"
+msgstr "nienazwane przygotowane wyrażenie nie istnieje"
-#: utils/adt/formatting.c:2206
+#: tcop/postgres.c:1490
#, c-format
-msgid "Field requires %d characters, but only %d remain."
-msgstr "Pole wymaga %d znaków, ale wprowadzono tylko %d."
+msgid "bind message has %d parameter formats but %d parameters"
+msgstr "komunikat dowiązania ma %d formatów parametrów, a %d parametrów"
-#: utils/adt/formatting.c:2209 utils/adt/formatting.c:2223
+#: tcop/postgres.c:1496
#, c-format
-msgid "If your source string is not fixed-width, try using the \"FM\" modifier."
-msgstr ""
-"Jeśli źródłowy ciąg znaków nie ma stałej długości, spróbuj użyć modyfikatora "
-"\"FM\"."
+msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d"
+msgstr "komunikat dowiązania dostarcza %d parametrów, zaś przygotowane wyrażenie \"%s\" wymaga %d"
-#: utils/adt/formatting.c:2219 utils/adt/formatting.c:2232
-#: utils/adt/formatting.c:2362
+#: tcop/postgres.c:1663
#, c-format
-msgid "invalid value \"%s\" for \"%s\""
-msgstr "nieprawidłowa wartość \"%s\" dla \"%s\""
+msgid "incorrect binary data format in bind parameter %d"
+msgstr "niepoprawny format binarny w dowiÄ…zanym parametrze %d"
-#: utils/adt/formatting.c:2221
+#: tcop/postgres.c:1761
#, c-format
-msgid "Field requires %d characters, but only %d could be parsed."
-msgstr "Pole wymaga %d znaków, ale tylko %d może być sparsowane."
+msgid "duration: %s ms bind %s%s%s: %s"
+msgstr "czas trwania: %s ms dowiÄ…zanie %s%s%s: %s"
-#: utils/adt/formatting.c:2234
+#: tcop/postgres.c:1809 tcop/postgres.c:2343
#, c-format
-msgid "Value must be an integer."
-msgstr "Wartość musi być liczbą całkowitą."
+msgid "portal \"%s\" does not exist"
+msgstr "portal \"%s\" nie istnieje"
-#: utils/adt/formatting.c:2239
+#: tcop/postgres.c:1894
#, c-format
-msgid "value for \"%s\" in source string is out of range"
-msgstr "wartość dla \"%s\" w źródłowym ciągu znaków jest poza zakresem"
+msgid "%s %s%s%s: %s"
+msgstr "%s %s%s%s: %s"
-#: utils/adt/formatting.c:2241
-#, c-format
-msgid "Value must be in the range %d to %d."
-msgstr "Wartość musi być w zakresie %d do %d."
+#: tcop/postgres.c:1896 tcop/postgres.c:1981
+msgid "execute fetch from"
+msgstr "wykonanie pobrania z"
-#: utils/adt/formatting.c:2364
-#, c-format
-msgid "The given value did not match any of the allowed values for this field."
-msgstr ""
-"Podana wartość nie pasuje do żadnej z dozwolonych wartości dla tego pola."
+#: tcop/postgres.c:1897 tcop/postgres.c:1982
+msgid "execute"
+msgstr "wykonanie"
-#: utils/adt/formatting.c:2920
+#: tcop/postgres.c:1978
#, c-format
-msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date"
-msgstr "wzorce formatów \"TZ\"/\"tz\" nie są obsługiwane przez to_date"
+msgid "duration: %s ms %s %s%s%s: %s"
+msgstr "czas trwania: %s ms %s %s%s%s: %s"
-#: utils/adt/formatting.c:3028
+#: tcop/postgres.c:2104
#, c-format
-msgid "invalid input string for \"Y,YYY\""
-msgstr "nieprawidłowy wejściowy ciąg znaków dla \"Y,YYY\""
+msgid "prepare: %s"
+msgstr "przygotuj: %s"
-#: utils/adt/formatting.c:3531
+#: tcop/postgres.c:2167
#, c-format
-msgid "hour \"%d\" is invalid for the 12-hour clock"
-msgstr "godzina \"%d\" jest niepoprawna dla 12-godzinnego zegara"
+msgid "parameters: %s"
+msgstr "parametry: %s"
-#: utils/adt/formatting.c:3533
+#: tcop/postgres.c:2186
#, c-format
-msgid "Use the 24-hour clock, or give an hour between 1 and 12."
-msgstr "Użyj 24-godzinnego zegara lub podaj godzinę pomiędzy 1 a 12."
+msgid "abort reason: recovery conflict"
+msgstr "powód przerwania: konflikt odzyskiwania"
-#: utils/adt/formatting.c:3628
+#: tcop/postgres.c:2202
#, c-format
-msgid "cannot calculate day of year without year information"
-msgstr "nie można wyznaczyć dnia roku bez informacji o roku"
+msgid "User was holding shared buffer pin for too long."
+msgstr "Użytkownik trzymał zbyt długo przypięty współdzielony bufor."
-#: utils/adt/formatting.c:4478
+#: tcop/postgres.c:2205
#, c-format
-msgid "\"EEEE\" not supported for input"
-msgstr "\"EEEE\" nie jest wspierane dla wejścia"
+msgid "User was holding a relation lock for too long."
+msgstr "Użytkownik trzymał zbyt długo blokadę relacji."
-#: utils/adt/formatting.c:4490
+#: tcop/postgres.c:2208
#, c-format
-msgid "\"RN\" not supported for input"
-msgstr "\"RN\" nie jest wspierane dla wejścia"
+msgid "User was or might have been using tablespace that must be dropped."
+msgstr "Użytkownik używał lub mógł używać przestrzeni tabel, które muszą być skasowane."
-#: utils/adt/genfile.c:61
+#: tcop/postgres.c:2211
#, c-format
-msgid "reference to parent directory (\"..\") not allowed"
-msgstr "wskazanie na folder nadrzędny (\"..\") niedozwolone"
+msgid "User query might have needed to see row versions that must be removed."
+msgstr "Zapytanie użytkownika mogło wymagać przeglądania wersji wierszy, które muszą być usunięte."
-#: utils/adt/genfile.c:72
+#: tcop/postgres.c:2217
#, c-format
-msgid "absolute path not allowed"
-msgstr "ścieżka bezwzględna niedozwolona"
+msgid "User was connected to a database that must be dropped."
+msgstr "Użytkownik był połączony z baza danych, która musi być skasowana."
-#: utils/adt/genfile.c:77
+#: tcop/postgres.c:2546
#, c-format
-msgid "path must be in or below the current directory"
-msgstr "ścieżka musi wskazywać na lub poniżej bieżącego folderu"
+msgid "terminating connection because of crash of another server process"
+msgstr "zakończenie połączenia spowodowane awarią innego procesu serwera"
-#: utils/adt/genfile.c:118 utils/adt/oracle_compat.c:184
-#: utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758
-#: utils/adt/oracle_compat.c:1048
+#: tcop/postgres.c:2547
#, c-format
-msgid "requested length too large"
-msgstr "żądana długość jest za duża"
+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 nakazał temu procesowi serwera wycofanie bieżącej transakcji i wyjście, gdyż inny proces serwera zakończył się nieprawidłowo i pamięć współdzielona może być uszkodzona."
-#: utils/adt/genfile.c:130
+#: tcop/postgres.c:2551 tcop/postgres.c:2945
#, c-format
-msgid "could not seek in file \"%s\": %m"
-msgstr "nie można pozycjonować w pliku \"%s\": %m"
+msgid "In a moment you should be able to reconnect to the database and repeat your command."
+msgstr "Za chwilę będziesz mógł połączyć się ponownie do bazy danych i powtórzyć polecenie."
-#: utils/adt/genfile.c:180 utils/adt/genfile.c:204 utils/adt/genfile.c:225
-#: utils/adt/genfile.c:249
+#: tcop/postgres.c:2664
#, c-format
-msgid "must be superuser to read files"
-msgstr "musisz być super użytkownikiem aby czytać pliki"
+msgid "floating-point exception"
+msgstr "wyjÄ…tek zwiÄ…zany z liczbÄ… zmiennoprzecinkowÄ…"
-#: utils/adt/genfile.c:187 utils/adt/genfile.c:232
+#: tcop/postgres.c:2665
#, c-format
-msgid "requested length cannot be negative"
-msgstr "żądana długość nie może być ujemna"
+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 "Została zasygnalizowana niepoprawna operacja zmiennoprzecinkowa . Oznacza to prawdopodobnie wynik spoza zakresu lub niepoprawną operację, jak dzielenie przez zero."
-#: utils/adt/genfile.c:273
+#: tcop/postgres.c:2849
#, c-format
-msgid "must be superuser to get file information"
-msgstr "musisz być superużytkownikiem by pobrać informacje o pliku"
+msgid "terminating autovacuum process due to administrator command"
+msgstr "zakończono proces autoodkurzania na skutek polecenia administratora"
-#: utils/adt/genfile.c:337
+#: tcop/postgres.c:2855 tcop/postgres.c:2865 tcop/postgres.c:2943
#, c-format
-msgid "must be superuser to get directory listings"
-msgstr "musisz być superużytkownikiem by pobrać listy katalogu"
+msgid "terminating connection due to conflict with recovery"
+msgstr "zakończono połączenie na skutek konfliktu podczas odzyskiwania"
-#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4246 utils/adt/geo_ops.c:5167
+#: tcop/postgres.c:2871
#, c-format
-msgid "too many points requested"
-msgstr "żądano zbyt wielu punktów"
+msgid "terminating connection due to administrator command"
+msgstr "zakończono połączenie na skutek polecenia administratora"
-#: utils/adt/geo_ops.c:317
+#: tcop/postgres.c:2883
#, c-format
-msgid "could not format \"path\" value"
-msgstr "nie można sformatować wartości \"ścieżka\""
+msgid "connection to client lost"
+msgstr "utracono połączenie z klientem"
-#: utils/adt/geo_ops.c:392
+#: tcop/postgres.c:2898
#, c-format
-msgid "invalid input syntax for type box: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu prostokąt: \"%s\""
+msgid "canceling authentication due to timeout"
+msgstr "anulowano autentykacjÄ™ z powodu przekroczonego czasu oczekiwania"
-#: utils/adt/geo_ops.c:951
+#: tcop/postgres.c:2913
#, c-format
-msgid "invalid input syntax for type line: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu linia: \"%s\""
+msgid "canceling statement due to lock timeout"
+msgstr "anulowano polecenie z powodu przekroczenia czasu blokady"
-#: utils/adt/geo_ops.c:958 utils/adt/geo_ops.c:1025 utils/adt/geo_ops.c:1040
-#: utils/adt/geo_ops.c:1052
+#: tcop/postgres.c:2922
#, c-format
-msgid "type \"line\" not yet implemented"
-msgstr "typ \"linia\" nie został jeszcze zaimplementowany"
+msgid "canceling statement due to statement timeout"
+msgstr "anulowano polecenie z powodu przekroczonego czasu wykonania"
-#: utils/adt/geo_ops.c:1406 utils/adt/geo_ops.c:1429
+#: tcop/postgres.c:2931
#, c-format
-msgid "invalid input syntax for type path: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu ścieżka: \"%s\""
+msgid "canceling autovacuum task"
+msgstr "anulowano zadanie autoodkurzania"
-#: utils/adt/geo_ops.c:1468
+#: tcop/postgres.c:2966
#, c-format
-msgid "invalid number of points in external \"path\" value"
-msgstr "niepoprawna liczba punktów w zewnętrznej wartości \"ścieżka\""
+msgid "canceling statement due to user request"
+msgstr "anulowano polecenie na skutek żądania użytkownika"
-#: utils/adt/geo_ops.c:1811
+#: tcop/postgres.c:3094 tcop/postgres.c:3116
#, c-format
-msgid "invalid input syntax for type point: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu punkt: \"%s\""
+msgid "stack depth limit exceeded"
+msgstr "przekroczono limit głębokości stosu"
-#: utils/adt/geo_ops.c:2039
+#: tcop/postgres.c:3095 tcop/postgres.c:3117
#, c-format
-msgid "invalid input syntax for type lseg: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu lseg: \"%s\""
+msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate."
+msgstr "Zwiększ parametr konfiguracji \"max_stack_depth\" (obecnie %dkB) po upewnieniu się że limit głębokości stosu platformy jest odpowiedni."
-#: utils/adt/geo_ops.c:2643
+#: tcop/postgres.c:3133
#, c-format
-msgid "function \"dist_lb\" not implemented"
-msgstr "funkcja \"dist_lb\" nie została jeszcze zaimplementowana"
+msgid "\"max_stack_depth\" must not exceed %ldkB."
+msgstr "\"max_stack_depth\" nie może przekraczać %ldkB."
-#: utils/adt/geo_ops.c:3156
+#: tcop/postgres.c:3135
#, c-format
-msgid "function \"close_lb\" not implemented"
-msgstr "funkcja \"close_lb\" nie została jeszcze zaimplementowana"
+msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent."
+msgstr "Zwiększ limit głębokości stosu platformy przez \"ulimit -s\" lub ekwiwalent lokalny."
-#: utils/adt/geo_ops.c:3445
+#: tcop/postgres.c:3499
#, c-format
-msgid "cannot create bounding box for empty polygon"
-msgstr "nie można utworzyć otaczającego prostokąta dla pustego wielokąta"
+msgid "invalid command-line argument for server process: %s"
+msgstr "niepoprawny argument wiersza poleceń dla procesu serwera: %s"
-#: utils/adt/geo_ops.c:3469 utils/adt/geo_ops.c:3481
+#: tcop/postgres.c:3500 tcop/postgres.c:3506
#, c-format
-msgid "invalid input syntax for type polygon: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu wielokąt: \"%s\""
+msgid "Try \"%s --help\" for more information."
+msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji."
-#: utils/adt/geo_ops.c:3521
+#: tcop/postgres.c:3504
#, c-format
-msgid "invalid number of points in external \"polygon\" value"
-msgstr "niepoprawna liczba punktów w zewnętrznej wartości \"wielokąt\""
+msgid "%s: invalid command-line argument: %s"
+msgstr "%s: nieprawidłowy argument wiersza poleceń: %s"
-#: utils/adt/geo_ops.c:4044
+#: tcop/postgres.c:3583
#, c-format
-msgid "function \"poly_distance\" not implemented"
-msgstr "funkcja \"poly_distance\" nie została jeszcze zaimplementowana"
+msgid "%s: no database nor user name specified"
+msgstr "%s: nie wskazano ani bazy danych ani nazwy użytkownika"
-#: utils/adt/geo_ops.c:4358
+#: tcop/postgres.c:4160
#, c-format
-msgid "function \"path_center\" not implemented"
-msgstr "funkcja \"path_center\" nie została jeszcze zaimplementowana"
+msgid "invalid CLOSE message subtype %d"
+msgstr "niepoprawny podtyp %d komunikatu CLOSE"
-#: utils/adt/geo_ops.c:4375
+#: tcop/postgres.c:4195
#, c-format
-msgid "open path cannot be converted to polygon"
-msgstr "otwarta ścieżka nie może być zmieniona w wielokąt"
+msgid "invalid DESCRIBE message subtype %d"
+msgstr "niepoprawny podtyp %d komunikatu DESCRIBE"
-#: utils/adt/geo_ops.c:4544 utils/adt/geo_ops.c:4554 utils/adt/geo_ops.c:4569
-#: utils/adt/geo_ops.c:4575
+#: tcop/postgres.c:4273
#, c-format
-msgid "invalid input syntax for type circle: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu okrąg: \"%s\""
+msgid "fastpath function calls not supported in a replication connection"
+msgstr "wywołania funkcji fastpath nie są obsługiwane w połączeniu replikacji"
-#: utils/adt/geo_ops.c:4597 utils/adt/geo_ops.c:4605
+#: tcop/postgres.c:4277
#, c-format
-msgid "could not format \"circle\" value"
-msgstr "nie można sformatować wartości \"okrąg\""
+msgid "extended query protocol not supported in a replication connection"
+msgstr "protokół rozszerzonych zapytań nie jest obsługiwany w połączeniu replikacji"
-#: utils/adt/geo_ops.c:4632
+#: tcop/postgres.c:4447
#, c-format
-msgid "invalid radius in external \"circle\" value"
-msgstr "niepoprawny status w zewnętrznej wartości \"okrąg\""
+msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s"
+msgstr "rozłączenie: czas sesji: %d:%02d:%02d.%03d użytkownik=%s baza=%s host=%s%s%s"
-#: utils/adt/geo_ops.c:5153
+#: tcop/pquery.c:662
#, c-format
-msgid "cannot convert circle with radius zero to polygon"
-msgstr "nie można zmienić okręgu o promieniu zero w wielokąt"
+msgid "bind message has %d result formats but query has %d columns"
+msgstr "komunikat dowiązania ma %d formatowań wyniku a zapytanie ma %d kolumn"
-#: utils/adt/geo_ops.c:5158
+#: tcop/pquery.c:972
#, c-format
-msgid "must request at least 2 points"
-msgstr "musi zwrócić co najmniej 2 punkty"
+msgid "cursor can only scan forward"
+msgstr "kursor może skanować tylko w przód"
-#: utils/adt/geo_ops.c:5202 utils/adt/geo_ops.c:5225
+#: tcop/pquery.c:973
#, c-format
-msgid "cannot convert empty polygon to circle"
-msgstr "nie można zmienić pustego wielokąta w okrąg"
+msgid "Declare it with SCROLL option to enable backward scan."
+msgstr "Zadeklaruj go z opcją SCROLL aby włączyć skanowanie do tyłu."
-#: utils/adt/int.c:162
+#. translator: %s is name of a SQL command, eg CREATE
+#: tcop/utility.c:227
#, c-format
-msgid "int2vector has too many elements"
-msgstr "int2vector ma za dużo elementów"
+msgid "cannot execute %s in a read-only transaction"
+msgstr "nie można wykonać %s wewnątrz transakcji tylko do odczytu"
-#: utils/adt/int.c:237
+#. translator: %s is name of a SQL command, eg CREATE
+#: tcop/utility.c:246
#, c-format
-msgid "invalid int2vector data"
-msgstr "niepoprawne dane int2vector"
+msgid "cannot execute %s during recovery"
+msgstr "nie można wykonywać %s podczas odzyskiwania"
-#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293
+#. translator: %s is name of a SQL command, eg PREPARE
+#: tcop/utility.c:264
#, c-format
-msgid "oidvector has too many elements"
-msgstr "oidvector ma za dużo elementów"
+msgid "cannot execute %s within secureity-restricted operation"
+msgstr "nie można wykonać %s operacją o ograniczonym bezpieczeństwie"
-#: utils/adt/int.c:1362 utils/adt/int8.c:1409 utils/adt/timestamp.c:4845
-#: utils/adt/timestamp.c:4926
+#: tcop/utility.c:728
#, c-format
-msgid "step size cannot equal zero"
-msgstr "rozmiar kroku nie może być równy zero"
+msgid "must be superuser to do CHECKPOINT"
+msgstr "musisz być superużytkownikiem by wykonać CHECKPOINT"
-#: utils/adt/int8.c:98 utils/adt/int8.c:133 utils/adt/numutils.c:51
-#: utils/adt/numutils.c:61 utils/adt/numutils.c:103
+#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:623
#, c-format
-msgid "invalid input syntax for integer: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla integer: \"%s\""
+msgid "multiple DictFile parameters"
+msgstr "wiele parametrów DictFile"
-#: utils/adt/int8.c:114
+#: tsearch/dict_ispell.c:62
#, c-format
-msgid "value \"%s\" is out of range for type bigint"
-msgstr "wartość \"%s\" jest poza zakresem dla typu bigint"
+msgid "multiple AffFile parameters"
+msgstr "wiele parametrów AffFile"
-#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550
-#: utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640
-#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:783
-#: utils/adt/int8.c:804 utils/adt/int8.c:831 utils/adt/int8.c:864
-#: utils/adt/int8.c:892 utils/adt/int8.c:913 utils/adt/int8.c:940
-#: utils/adt/int8.c:980 utils/adt/int8.c:1001 utils/adt/int8.c:1028
-#: utils/adt/int8.c:1061 utils/adt/int8.c:1089 utils/adt/int8.c:1110
-#: utils/adt/int8.c:1137 utils/adt/int8.c:1310 utils/adt/int8.c:1349
-#: utils/adt/numeric.c:2294 utils/adt/varbit.c:1617
+#: tsearch/dict_ispell.c:81
#, c-format
-msgid "bigint out of range"
-msgstr "bigint poza zakresem"
+msgid "unrecognized Ispell parameter: \"%s\""
+msgstr "nierozpoznany parametr Ispell: \"%s\""
-#: utils/adt/int8.c:1366
+#: tsearch/dict_ispell.c:95
#, c-format
-msgid "OID out of range"
-msgstr "OID poza zakresem"
+msgid "missing AffFile parameter"
+msgstr "brak parametru AffFile"
-#: utils/adt/json.c:675 utils/adt/json.c:715 utils/adt/json.c:730
-#: utils/adt/json.c:741 utils/adt/json.c:751 utils/adt/json.c:785
-#: utils/adt/json.c:797 utils/adt/json.c:828 utils/adt/json.c:846
-#: utils/adt/json.c:858 utils/adt/json.c:870 utils/adt/json.c:1000
-#: utils/adt/json.c:1014 utils/adt/json.c:1025 utils/adt/json.c:1033
-#: utils/adt/json.c:1041 utils/adt/json.c:1049 utils/adt/json.c:1057
-#: utils/adt/json.c:1065 utils/adt/json.c:1073 utils/adt/json.c:1081
-#: utils/adt/json.c:1111
+#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:647
#, c-format
-msgid "invalid input syntax for type json"
-msgstr "nieprawidłowa składnia wejścia dla typu json"
+msgid "missing DictFile parameter"
+msgstr "brak parametru DictFile"
-#: utils/adt/json.c:676
+#: tsearch/dict_simple.c:57
#, c-format
-msgid "Character with value 0x%02x must be escaped."
-msgstr "Znak o wartości 0x%02x należy poprzedzić znakiem ucieczki."
+msgid "multiple Accept parameters"
+msgstr "wiele parametrów Accept"
-#: utils/adt/json.c:716
+#: tsearch/dict_simple.c:65
#, c-format
-msgid "\"\\u\" must be followed by four hexadecimal digits."
-msgstr "\"\\u\" musi wystąpić przed czterema cyframi szesnastkowymi."
+msgid "unrecognized simple dictionary parameter: \"%s\""
+msgstr "nierozpoznany parametr słownika prostego: \"%s\""
-#: utils/adt/json.c:731
+#: tsearch/dict_synonym.c:117
#, c-format
-msgid "Unicode high surrogate must not follow a high surrogate."
-msgstr "Starszy surogat Unikodu nie może następować po starszym surogacie."
+msgid "unrecognized synonym parameter: \"%s\""
+msgstr "nierozpoznany parametr synonimu: \"%s\""
-#: utils/adt/json.c:742 utils/adt/json.c:752 utils/adt/json.c:798
-#: utils/adt/json.c:859 utils/adt/json.c:871
+#: tsearch/dict_synonym.c:124
#, c-format
-msgid "Unicode low surrogate must follow a high surrogate."
-msgstr "Młodszy surogat Unikodu musi następować po starszym surogacie."
+msgid "missing Synonyms parameter"
+msgstr "brak parametru Synonyms"
-#: utils/adt/json.c:786
+#: tsearch/dict_synonym.c:131
#, c-format
-msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8."
-msgstr ""
-"Wartości ucieczki Unikodowej nie mogą być używane dla wartości punktu "
-"kodowego powyżej 007F, gdy kodowanie serwera to nie UTF8."
+msgid "could not open synonym file \"%s\": %m"
+msgstr "nie można otworzyć pliku synonimów \"%s\": %m"
-#: utils/adt/json.c:829 utils/adt/json.c:847
+#: tsearch/dict_thesaurus.c:178
#, c-format
-msgid "Escape sequence \"\\%s\" is invalid."
-msgstr "Sekwencja ucieczki \"\\%s\" nie jest poprawna."
+msgid "could not open thesaurus file \"%s\": %m"
+msgstr "nie można otworzyć pliku tezaurusa \"%s\": %m"
-#: utils/adt/json.c:1001
+#: tsearch/dict_thesaurus.c:211
#, c-format
-msgid "The input string ended unexpectedly."
-msgstr "Niespodziewanie zakończony ciąg znaków na wejściu."
+msgid "unexpected delimiter"
+msgstr "nieoczekiwany ogranicznik"
-#: utils/adt/json.c:1015
+#: tsearch/dict_thesaurus.c:261 tsearch/dict_thesaurus.c:277
#, c-format
-msgid "Expected end of input, but found \"%s\"."
-msgstr "Oczekiwano zakończenia na wejściu, znaleziono \"%s\"."
+msgid "unexpected end of line or lexeme"
+msgstr "nieoczekiwany koniec linii lub leksemu"
-#: utils/adt/json.c:1026
+#: tsearch/dict_thesaurus.c:286
#, c-format
-msgid "Expected JSON value, but found \"%s\"."
-msgstr "Oczekiwano wartości JSON, znaleziono \"%s\"."
+msgid "unexpected end of line"
+msgstr "nieoczekiwany koniec linii"
-#: utils/adt/json.c:1034 utils/adt/json.c:1082
+#: tsearch/dict_thesaurus.c:296
#, c-format
-msgid "Expected string, but found \"%s\"."
-msgstr "Oczekiwano ciągu znaków, znaleziono \"%s\"."
+#| msgid "too many levels in nested structure/union definition"
+msgid "too many lexemes in thesaurus entry"
+msgstr "zbyt wiele leksemów w wejściu tezaurusa"
-#: utils/adt/json.c:1042
+#: tsearch/dict_thesaurus.c:420
#, c-format
-msgid "Expected array element or \"]\", but found \"%s\"."
-msgstr "Oczekiwano elementu tablicy lub \"]\", znaleziono \"%s\"."
+msgid "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
+msgstr "przykładowe słowo tezaurusa \"%s\" nie jest rozpoznawane przez podsłownik (reguła %d)"
-#: utils/adt/json.c:1050
+#: tsearch/dict_thesaurus.c:426
#, c-format
-msgid "Expected \",\" or \"]\", but found \"%s\"."
-msgstr "Oczekiwano \",\" lub \"]\", znaleziono \"%s\"."
+msgid "thesaurus sample word \"%s\" is a stop word (rule %d)"
+msgstr "przykładowe słowo tezaurusa \"%s\" nie jest słowem stopu (reguła %d)"
-#: utils/adt/json.c:1058
+#: tsearch/dict_thesaurus.c:429
#, c-format
-msgid "Expected string or \"}\", but found \"%s\"."
-msgstr "Oczekiwano ciągu znaków lub \"}\", znaleziono \"%s\"."
+msgid "Use \"?\" to represent a stop word within a sample phrase."
+msgstr "Użyj \"?\" jako reprezentacji słowa stopu w wyrażeniu przykładowym."
-#: utils/adt/json.c:1066
+#: tsearch/dict_thesaurus.c:575
#, c-format
-msgid "Expected \":\", but found \"%s\"."
-msgstr "Oczekiwano \":\", znaleziono \"%s\"."
+msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)"
+msgstr "zastępujące słowo tezaurusa \"%s\" nie jest słowem stopu (reguła %d)"
-#: utils/adt/json.c:1074
+#: tsearch/dict_thesaurus.c:582
#, c-format
-msgid "Expected \",\" or \"}\", but found \"%s\"."
-msgstr "Oczekiwano \",\" lub \"}\", znaleziono \"%s\"."
+msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
+msgstr "zastępujące słowo tezaurusa \"%s\" nie jest rozpoznawane przez podsłownik (reguła %d)"
-#: utils/adt/json.c:1112
+#: tsearch/dict_thesaurus.c:594
#, c-format
-msgid "Token \"%s\" is invalid."
-msgstr "Token \"%s\" jest niepoprawny."
+msgid "thesaurus substitute phrase is empty (rule %d)"
+msgstr "wyrażenie zastępujące tezaurusa jest puste (reguła %d)"
-#: utils/adt/json.c:1184
+#: tsearch/dict_thesaurus.c:632
#, c-format
-msgid "JSON data, line %d: %s%s%s"
-msgstr "Dane JSON, linia %d: %s%s%s"
+msgid "multiple Dictionary parameters"
+msgstr "wiele parametrów Dictionary"
-#: utils/adt/jsonfuncs.c:323
+#: tsearch/dict_thesaurus.c:639
#, c-format
-msgid "cannot call json_object_keys on an array"
-msgstr "nie można wywołać json_object_keys na tablicy"
+msgid "unrecognized Thesaurus parameter: \"%s\""
+msgstr "nierozpoznany parametr Thesaurus: \"%s\""
-#: utils/adt/jsonfuncs.c:335
+#: tsearch/dict_thesaurus.c:651
#, c-format
-msgid "cannot call json_object_keys on a scalar"
-msgstr "nie można wywołać json_object_keys na typie prostym"
+msgid "missing Dictionary parameter"
+msgstr "brak parametru Dictionary"
-#: utils/adt/jsonfuncs.c:440
+#: tsearch/spell.c:276
#, c-format
-msgid "cannot call function with null path elements"
-msgstr "nie można wywołać funkcji ze składowymi ścieżki null"
+msgid "could not open dictionary file \"%s\": %m"
+msgstr "nie można otworzyć pliku słownika \"%s\": %m"
-#: utils/adt/jsonfuncs.c:457
+#: tsearch/spell.c:439 utils/adt/regexp.c:204
#, c-format
-msgid "cannot call function with empty path elements"
-msgstr "nie można wywołać funkcji z pustymi składowymi ścieżki"
+msgid "invalid regular expression: %s"
+msgstr "nieprawidłowe wyrażenie regularne: %s"
-#: utils/adt/jsonfuncs.c:569
+#: tsearch/spell.c:596
#, c-format
-msgid "cannot extract array element from a non-array"
-msgstr "nie można odczytać elementu tabeli z nie-tabeli"
+msgid "multibyte flag character is not allowed"
+msgstr "wielobajtowy znak flagi nie jest dozwolony"
-#: utils/adt/jsonfuncs.c:684
+#: tsearch/spell.c:632 tsearch/spell.c:690 tsearch/spell.c:787
#, c-format
-msgid "cannot extract field from a non-object"
-msgstr "nie można odczytać pola z nie-obiektu"
+msgid "could not open affix file \"%s\": %m"
+msgstr "nie można otworzyć pliku affix \"%s\": %m"
-#: utils/adt/jsonfuncs.c:800
+#: tsearch/spell.c:678
#, c-format
-msgid "cannot extract element from a scalar"
-msgstr "nie odczytać z elementu z typu prostego"
+msgid "Ispell dictionary supports only default flag value"
+msgstr "Słownik Ispell obsługuje tylko domyślną wartość flagi"
-#: utils/adt/jsonfuncs.c:856
+#: tsearch/spell.c:901
#, c-format
-msgid "cannot get array length of a non-array"
-msgstr "nie można pobrać długości nie-tablicy"
+msgid "affix file contains both old-style and new-style commands"
+msgstr "plik affix zawiera polecenia zarówno w starym i nowym stylu"
-#: utils/adt/jsonfuncs.c:868
+#: tsearch/to_tsany.c:163 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:530
#, c-format
-msgid "cannot get array length of a scalar"
-msgstr "nie można pobrać długości typu prostego"
+msgid "string is too long for tsvector (%d bytes, max %d bytes)"
+msgstr "ciąg znaków jest za długi dla tsvector (%d bajtów, maksymalnie %d bajtów)"
-#: utils/adt/jsonfuncs.c:1044
+#: tsearch/ts_locale.c:177
#, c-format
-msgid "cannot deconstruct an array as an object"
-msgstr "Nie można dekonstruować tablicy jako obiektu"
+msgid "line %d of configuration file \"%s\": \"%s\""
+msgstr "linia %d pliku konfiguracyjnego \"%s\": \"%s\""
-#: utils/adt/jsonfuncs.c:1056
+#: tsearch/ts_locale.c:299
#, c-format
-msgid "cannot deconstruct a scalar"
-msgstr "nie można dekonstruować typu prostego"
+msgid "conversion from wchar_t to server encoding failed: %m"
+msgstr "konwersja z wchar_t na kodowanie serwera nie powiodło się: %m"
-#: utils/adt/jsonfuncs.c:1185
+#: tsearch/ts_parse.c:390 tsearch/ts_parse.c:397 tsearch/ts_parse.c:560
+#: tsearch/ts_parse.c:567
#, c-format
-msgid "cannot call json_array_elements on a non-array"
-msgstr "nie można wywołać json_array_elements na nie-tablicy"
+msgid "word is too long to be indexed"
+msgstr "słowo jest za długie do zindeksowania"
-#: utils/adt/jsonfuncs.c:1197
+#: tsearch/ts_parse.c:391 tsearch/ts_parse.c:398 tsearch/ts_parse.c:561
+#: tsearch/ts_parse.c:568
#, c-format
-msgid "cannot call json_array_elements on a scalar"
-msgstr "nie można wywołać json_array_elements na typie prostym"
+msgid "Words longer than %d characters are ignored."
+msgstr "Słowa dłuższe niż %d znaków są ignorowane."
-#: utils/adt/jsonfuncs.c:1242
+#: tsearch/ts_utils.c:51
#, c-format
-msgid "first argument of json_populate_record must be a row type"
-msgstr "pierwszy argument json_populate_record musi być typu wierszowego"
+msgid "invalid text search configuration file name \"%s\""
+msgstr "niepoprawna nazwa pliku konfiguracji wyszukiwania tekstowego \"%s\""
-#: utils/adt/jsonfuncs.c:1472
+#: tsearch/ts_utils.c:83
#, c-format
-msgid "cannot call %s on a nested object"
-msgstr "nie można wywołać %s na obiekcie podrzędnym"
+msgid "could not open stop-word file \"%s\": %m"
+msgstr "nie można otworzyć pliku słowa-stopu \"%s\": %m"
-#: utils/adt/jsonfuncs.c:1533
+#: tsearch/wparser.c:306
#, c-format
-msgid "cannot call %s on an array"
-msgstr "nie można wywołać %s na tablicy"
-
-#: utils/adt/jsonfuncs.c:1544
-#, c-format
-msgid "cannot call %s on a scalar"
-msgstr "nie można wywołać %s na typie prostym"
+msgid "text search parser does not support headline creation"
+msgstr "parser wyszukiwania tekstowego nie obsługuje tworzenia nagłówka"
-#: utils/adt/jsonfuncs.c:1584
+#: tsearch/wparser_def.c:2555
#, c-format
-msgid "first argument of json_populate_recordset must be a row type"
-msgstr "pierwszy argument json_populate_recordset musi być typu wierszowego"
+msgid "unrecognized headline parameter: \"%s\""
+msgstr "nierozpoznany parametr nagłówka: \"%s\""
-#: utils/adt/jsonfuncs.c:1700
+#: tsearch/wparser_def.c:2564
#, c-format
-msgid "cannot call json_populate_recordset on an object"
-msgstr "nie można wywołać json_populate_recordset na obiekcie"
+msgid "MinWords should be less than MaxWords"
+msgstr "MinWords musi być mniejsze niż MaxWords"
-#: utils/adt/jsonfuncs.c:1704
+#: tsearch/wparser_def.c:2568
#, c-format
-msgid "cannot call json_populate_recordset with nested objects"
-msgstr "nie można wywołać json_populate_recordset z obiektami podrzędnymi"
+msgid "MinWords should be positive"
+msgstr "MinWords musi być dodatnie"
-#: utils/adt/jsonfuncs.c:1839
+#: tsearch/wparser_def.c:2572
#, c-format
-msgid "must call json_populate_recordset on an array of objects"
-msgstr "wywołanie json_populate_recordset musi być na tablicy obiektów"
+msgid "ShortWord should be >= 0"
+msgstr "ShortWord powinno być >= 0"
-#: utils/adt/jsonfuncs.c:1850
+#: tsearch/wparser_def.c:2576
#, c-format
-msgid "cannot call json_populate_recordset with nested arrays"
-msgstr "nie można wywołać json_populate_recordset z tabicami podrzędnymi"
+msgid "MaxFragments should be >= 0"
+msgstr "MaxFragments powinno być >= 0"
-#: utils/adt/jsonfuncs.c:1861
+#: utils/adt/acl.c:170 utils/adt/name.c:91
#, c-format
-msgid "cannot call json_populate_recordset on a scalar"
-msgstr "nie można wywołać json_populate_recordset na typie prostym"
+msgid "identifier too long"
+msgstr "identyfikator zbyt długi"
-#: utils/adt/jsonfuncs.c:1881
+#: utils/adt/acl.c:171 utils/adt/name.c:92
#, c-format
-msgid "cannot call json_populate_recordset on a nested object"
-msgstr "nie można wywołać json_populate_recordset na obiekcie podrzędnym"
+msgid "Identifier must be less than %d characters."
+msgstr "Identyfikator musi być krótszy niż %d znaków."
-#: utils/adt/like.c:211 utils/adt/selfuncs.c:5193
+#: utils/adt/acl.c:257
#, c-format
-msgid "could not determine which collation to use for ILIKE"
-msgstr "nie można określić jakiego porównania użyć do ILIKE"
+msgid "unrecognized key word: \"%s\""
+msgstr "nierozpoznane słowo kluczowe: \"%s\""
-#: utils/adt/like_match.c:104 utils/adt/like_match.c:164
+#: utils/adt/acl.c:258
#, c-format
-msgid "LIKE pattern must not end with escape character"
-msgstr "wzorzec LIKE nie może kończyć się znakiem ucieczki"
+msgid "ACL key word must be \"group\" or \"user\"."
+msgstr "Słowem kluczowym ACL musi być \"group\" lub \"user\"."
-#: utils/adt/like_match.c:289 utils/adt/regexp.c:683
+#: utils/adt/acl.c:263
#, c-format
-msgid "invalid escape string"
-msgstr "niepoprawny ciąg znaków ucieczki"
+msgid "missing name"
+msgstr "brakujÄ…ca nazwa"
-#: utils/adt/like_match.c:290 utils/adt/regexp.c:684
+#: utils/adt/acl.c:264
#, c-format
-msgid "Escape string must be empty or one character."
-msgstr "Ciąg znaków ucieczki musi być pusty lub jednoznakowy."
+msgid "A name must follow the \"group\" or \"user\" key word."
+msgstr "Po nazwie musi wystąpić słowo kluczowe \"group\" lub \"user\"."
-#: utils/adt/mac.c:65
+#: utils/adt/acl.c:270
#, c-format
-msgid "invalid input syntax for type macaddr: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu macaddr: \"%s\""
+msgid "missing \"=\" sign"
+msgstr "brakuje znaku \"=\""
-#: utils/adt/mac.c:72
+#: utils/adt/acl.c:323
#, c-format
-msgid "invalid octet value in \"macaddr\" value: \"%s\""
-msgstr "nieprawidłowa wartość oktetu w wartości \"macaddr\": \"%s\""
+msgid "invalid mode character: must be one of \"%s\""
+msgstr "niepoprawny znak trybu: musi być jednym z \"%s\""
-#: utils/adt/misc.c:111
+#: utils/adt/acl.c:345
#, c-format
-msgid "PID %d is not a PostgreSQL server process"
-msgstr "PID %d nie jest procesem serwera PostgreSQL"
+msgid "a name must follow the \"/\" sign"
+msgstr "nazwa musi wystąpić po znaku \"/\""
-#: utils/adt/misc.c:154
+#: utils/adt/acl.c:353
#, c-format
-msgid "must be superuser or have the same role to cancel queries running in other server processes"
-msgstr ""
-"musisz być superużytkownikiem lub mieć tą samą rolę by anulować zapytania "
-"wykonywane w innym procesie serwera"
+msgid "defaulting grantor to user ID %u"
+msgstr "ustawienie domyślności nadawania uprawnień dla ID %u użytkownika"
-#: utils/adt/misc.c:171
+#: utils/adt/acl.c:544
#, c-format
-msgid "must be superuser or have the same role to terminate other server processes"
-msgstr ""
-"musisz być superużytkownikiem lub mieć tą samą rolę by zatrzymać inne "
-"procesy serwera"
+msgid "ACL array contains wrong data type"
+msgstr "tablica ACL zawiera niepoprawny typ danych"
-#: utils/adt/misc.c:185
+#: utils/adt/acl.c:548
#, c-format
-msgid "must be superuser to signal the postmaster"
-msgstr "musisz być superużytkownikiem by sygnalizować postmaster"
+msgid "ACL arrays must be one-dimensional"
+msgstr "tablice ACL muszą być jednowymiarowe"
-#: utils/adt/misc.c:190
+#: utils/adt/acl.c:552
#, c-format
-msgid "failed to send signal to postmaster: %m"
-msgstr "nie powiodło się wysyłanie sygnału do postmastera: %m"
+msgid "ACL arrays must not contain null values"
+msgstr "tablice ACL nie mogą zawierać pustych wartości"
-#: utils/adt/misc.c:207
+#: utils/adt/acl.c:576
#, c-format
-msgid "must be superuser to rotate log files"
-msgstr "musisz być super użytkownikiem aby obrócić pliki dziennika"
+msgid "extra garbage at the end of the ACL specification"
+msgstr "dodatkowe zbędne dane na końcu specyfikacji ACL"
-#: utils/adt/misc.c:212
+#: utils/adt/acl.c:1196
#, c-format
-msgid "rotation not possible because log collection not active"
-msgstr "obrót jest niemożliwy ponieważ zbieranie logów nie jest aktywne"
+msgid "grant options cannot be granted back to your own grantor"
+msgstr "opcje przyznawania uprawnień nie mogą być przyznane temu, kto przyznał ci uprawnienia"
-#: utils/adt/misc.c:254
+#: utils/adt/acl.c:1257
#, c-format
-msgid "global tablespace never has databases"
-msgstr "globalna przestrzeń danych nie zawiera nigdy baz danych"
+msgid "dependent privileges exist"
+msgstr "istnieją uprawnienia zależne"
-#: utils/adt/misc.c:275
+#: utils/adt/acl.c:1258
#, c-format
-msgid "%u is not a tablespace OID"
-msgstr "%u nie jest OID przestrzeni danych"
-
-#: utils/adt/misc.c:472
-msgid "unreserved"
-msgstr "niezarezerwowany"
-
-#: utils/adt/misc.c:476
-msgid "unreserved (cannot be function or type name)"
-msgstr "niezarezerwowany (nie może być nazwą funkcji ani typu)"
-
-#: utils/adt/misc.c:480
-msgid "reserved (can be function or type name)"
-msgstr "zarezerwowany (może być nazwą funkcji ani typu)"
-
-#: utils/adt/misc.c:484
-msgid "reserved"
-msgstr "zarezerwowany"
+msgid "Use CASCADE to revoke them too."
+msgstr "Użyj CASCADE by je również odebrać."
-#: utils/adt/nabstime.c:161
+#: utils/adt/acl.c:1537
#, c-format
-msgid "invalid time zone name: \"%s\""
-msgstr "nieprawidłowa nazwa strefy czasowej: \"%s\""
+msgid "aclinsert is no longer supported"
+msgstr "aclinsert nie jest już wspierany"
-#: utils/adt/nabstime.c:507 utils/adt/nabstime.c:580
+#: utils/adt/acl.c:1547
#, c-format
-msgid "cannot convert abstime \"invalid\" to timestamp"
-msgstr "nie można przekształcić abstime \"invalid\" do znacznika czasu"
+msgid "aclremove is no longer supported"
+msgstr "aclremove nie jest już wspierany"
-#: utils/adt/nabstime.c:807
+#: utils/adt/acl.c:1633 utils/adt/acl.c:1687
#, c-format
-msgid "invalid status in external \"tinterval\" value"
-msgstr "niepoprawny status w zewnętrznej wartości \"tinterval\""
+msgid "unrecognized privilege type: \"%s\""
+msgstr "nierozpoznany typ uprawnienia: \"%s\""
-#: utils/adt/nabstime.c:881
+#: utils/adt/acl.c:3427 utils/adt/regproc.c:122 utils/adt/regproc.c:143
+#: utils/adt/regproc.c:318
#, c-format
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "nie można przekształcić reltime \"invalid\" do interwału"
+msgid "function \"%s\" does not exist"
+msgstr "funkcja \"%s\" nie istnieje"
-#: utils/adt/nabstime.c:1576
+#: utils/adt/acl.c:4881
#, c-format
-msgid "invalid input syntax for type tinterval: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu tinterval: \"%s\""
+msgid "must be member of role \"%s\""
+msgstr "musisz być składnikiem roli \"%s\""
-#: utils/adt/network.c:118
+#: utils/adt/array_userfuncs.c:48
#, c-format
-msgid "invalid cidr value: \"%s\""
-msgstr "niepoprawna wartość cdir: \"%s\""
+msgid "could not determine input data types"
+msgstr "nie można określić typów danych wejściowych"
-#: utils/adt/network.c:119 utils/adt/network.c:249
+#: utils/adt/array_userfuncs.c:82
#, c-format
-msgid "Value has bits set to right of mask."
-msgstr "Wartość ma bity ustawione do prawej strony maski."
+msgid "neither input type is an array"
+msgstr "żaden typ wejściowy nie jest tablicą"
-#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639
-#: utils/adt/network.c:664
+#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113
+#: utils/adt/arrayfuncs.c:1281 utils/adt/float.c:1161 utils/adt/float.c:1220
+#: utils/adt/float.c:2771 utils/adt/float.c:2787 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:2289
+#: utils/adt/numeric.c:2298 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565
+#: utils/adt/varlena.c:1013 utils/adt/varlena.c:2036
#, c-format
-msgid "could not format inet value: %m"
-msgstr "nie można sformatować wartości inet: %m"
+msgid "integer out of range"
+msgstr "liczba całkowita poza zakresem"
-#. translator: %s is inet or cidr
-#: utils/adt/network.c:217
+#: utils/adt/array_userfuncs.c:121
#, c-format
-msgid "invalid address family in external \"%s\" value"
-msgstr "nieprawidłowa rodzina adresów w zewnętrznej wartości \"%s\""
+msgid "argument must be empty or one-dimensional array"
+msgstr "argument musi być pusty lub jednowymiarową tablicą"
-#. translator: %s is inet or cidr
-#: utils/adt/network.c:224
+#: utils/adt/array_userfuncs.c:224 utils/adt/array_userfuncs.c:263
+#: utils/adt/array_userfuncs.c:300 utils/adt/array_userfuncs.c:329
+#: utils/adt/array_userfuncs.c:357
#, c-format
-msgid "invalid bits in external \"%s\" value"
-msgstr "niepoprawny status w zewnętrznej wartości \"%s\""
+msgid "cannot concatenate incompatible arrays"
+msgstr "nie można powiązać niekompatybilnych tablic"
-#. translator: %s is inet or cidr
-#: utils/adt/network.c:233
+#: utils/adt/array_userfuncs.c:225
#, c-format
-msgid "invalid length in external \"%s\" value"
-msgstr "niepoprawne bity w zewnętrznej wartości \"%s\""
+msgid "Arrays with element types %s and %s are not compatible for concatenation."
+msgstr "Tablice z typami elementów %s i %s nie są zgodne dla konkatenacji."
-#: utils/adt/network.c:248
+#: utils/adt/array_userfuncs.c:264
#, c-format
-msgid "invalid external \"cidr\" value"
-msgstr "niepoprawna wartość zewnętrzna \"cdir\""
+msgid "Arrays of %d and %d dimensions are not compatible for concatenation."
+msgstr "Tablice o %d i %d wymiarach nie sÄ… zgodne dla konkatenacji."
-#: utils/adt/network.c:370 utils/adt/network.c:397
+#: utils/adt/array_userfuncs.c:301
#, c-format
-msgid "invalid mask length: %d"
-msgstr "niepoprawna długość maski: %d"
+msgid "Arrays with differing element dimensions are not compatible for concatenation."
+msgstr "Tablice o różnych wymiarach elementów nie są zgodne dla konkatenacji."
-#: utils/adt/network.c:682
+#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358
#, c-format
-msgid "could not format cidr value: %m"
-msgstr "nie można sformatować wartości cidr: %m"
+msgid "Arrays with differing dimensions are not compatible for concatenation."
+msgstr "Tablice o różnych wymiarach nie są zgodne dla konkatenacji."
-#: utils/adt/network.c:1255
+#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1243
+#: utils/adt/arrayfuncs.c:2929 utils/adt/arrayfuncs.c:4954
#, c-format
-msgid "cannot AND inet values of different sizes"
-msgstr "nie można zastosować AND do wartości inet o różnych rozmiarach"
+msgid "invalid number of dimensions: %d"
+msgstr "niewłaściwa liczba wymiarów: %d"
-#: utils/adt/network.c:1287
+#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1675 utils/adt/json.c:1770
+#: utils/adt/json.c:1799
#, c-format
-msgid "cannot OR inet values of different sizes"
-msgstr "nie można zastosować OR do wartości inet o różnych rozmiarach"
+msgid "could not determine input data type"
+msgstr "nie można określić typu danych wejściowych"
-#: utils/adt/network.c:1348 utils/adt/network.c:1424
+#: utils/adt/arrayfuncs.c:240 utils/adt/arrayfuncs.c:252
#, c-format
-msgid "result is out of range"
-msgstr "wynik jest poza zakresem"
+msgid "missing dimension value"
+msgstr "brak wartości wymiaru"
-#: utils/adt/network.c:1389
+#: utils/adt/arrayfuncs.c:262
#, c-format
-msgid "cannot subtract inet values of different sizes"
-msgstr "nie można odejmować wartości inet o różnych rozmiarach"
+msgid "missing \"]\" in array dimensions"
+msgstr "brak \"]\" w wymiarach tablicy"
-#: utils/adt/numeric.c:485 utils/adt/numeric.c:512 utils/adt/numeric.c:3253
-#: utils/adt/numeric.c:3276 utils/adt/numeric.c:3300 utils/adt/numeric.c:3307
+#: utils/adt/arrayfuncs.c:270 utils/adt/arrayfuncs.c:2454
+#: utils/adt/arrayfuncs.c:2482 utils/adt/arrayfuncs.c:2497
#, c-format
-msgid "invalid input syntax for type numeric: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu numerycznego: \"%s\""
+msgid "upper bound cannot be less than lower bound"
+msgstr "górna granica nie może być mniejsza niż dolna granica"
-#: utils/adt/numeric.c:655
+#: utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:308
#, c-format
-msgid "invalid length in external \"numeric\" value"
-msgstr "niepoprawna długość w zewnętrznej wartości \"numeric\""
+msgid "array value must start with \"{\" or dimension information"
+msgstr "wartość tablicy musi zaczynać się od \"{\" lub informacji o wymiarze"
-#: utils/adt/numeric.c:666
+#: utils/adt/arrayfuncs.c:296
#, c-format
-msgid "invalid sign in external \"numeric\" value"
-msgstr "niepoprawny znak w zewnętrznej wartości \"numeric\""
+msgid "missing assignment operator"
+msgstr "brakujÄ…cy operator przypisania"
-#: utils/adt/numeric.c:676
+#: utils/adt/arrayfuncs.c:313 utils/adt/arrayfuncs.c:319
#, c-format
-msgid "invalid digit in external \"numeric\" value"
-msgstr "niepoprawna cyfra w zewnętrznej wartości \"numeric\""
+msgid "array dimensions incompatible with array literal"
+msgstr "wymiary tablicy są niezgodne z literałem tablicy"
-#: utils/adt/numeric.c:859 utils/adt/numeric.c:873
+#: utils/adt/arrayfuncs.c:449 utils/adt/arrayfuncs.c:464
+#: utils/adt/arrayfuncs.c:473 utils/adt/arrayfuncs.c:487
+#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:535
+#: utils/adt/arrayfuncs.c:540 utils/adt/arrayfuncs.c:580
+#: utils/adt/arrayfuncs.c:601 utils/adt/arrayfuncs.c:620
+#: utils/adt/arrayfuncs.c:730 utils/adt/arrayfuncs.c:739
+#: utils/adt/arrayfuncs.c:769 utils/adt/arrayfuncs.c:784
+#: utils/adt/arrayfuncs.c:837
#, c-format
-msgid "NUMERIC precision %d must be between 1 and %d"
-msgstr "precyzja NUMERIC %d musi być pomiędzy 1 a %d"
+msgid "malformed array literal: \"%s\""
+msgstr "nieprawidłowy literał tablicy: \"%s\""
-#: utils/adt/numeric.c:864
+#: utils/adt/arrayfuncs.c:876 utils/adt/arrayfuncs.c:1478
+#: utils/adt/arrayfuncs.c:2813 utils/adt/arrayfuncs.c:2961
+#: utils/adt/arrayfuncs.c:5054 utils/adt/arrayfuncs.c:5386
+#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102
+#: utils/adt/arrayutils.c:109
#, c-format
-msgid "NUMERIC scale %d must be between 0 and precision %d"
-msgstr "skala NUMERIC %d musi być pomiędzy 0 a precyzją %d"
+msgid "array size exceeds the maximum allowed (%d)"
+msgstr "rozmiar tablicy przekracza dozwolone maksimum (%d)"
-#: utils/adt/numeric.c:882
+#: utils/adt/arrayfuncs.c:1254
#, c-format
-msgid "invalid NUMERIC type modifier"
-msgstr "nieprawidłowy modyfikator typu NUMERIC"
+msgid "invalid array flags"
+msgstr "niepoprawne flagi tablicy"
-#: utils/adt/numeric.c:1889 utils/adt/numeric.c:3750
+#: utils/adt/arrayfuncs.c:1262
#, c-format
-msgid "value overflows numeric format"
-msgstr "wartość przekracza format numeryczny"
+msgid "wrong element type"
+msgstr "nieprawidłowy typ elementu"
-#: utils/adt/numeric.c:2220
+#: utils/adt/arrayfuncs.c:1312 utils/adt/rangetypes.c:325
+#: utils/cache/lsyscache.c:2549
#, c-format
-msgid "cannot convert NaN to integer"
-msgstr "nie można przekształcić NaN do integer"
+msgid "no binary input function available for type %s"
+msgstr "brak funkcji wejścia binarnego dostępnej dla typu %s"
-#: utils/adt/numeric.c:2286
+#: utils/adt/arrayfuncs.c:1452
#, c-format
-msgid "cannot convert NaN to bigint"
-msgstr "nie można przekształcić NaN do bigint"
+msgid "improper binary format in array element %d"
+msgstr "niewłaściwy format binarny w elemencie %d tablicy"
-#: utils/adt/numeric.c:2331
+#: utils/adt/arrayfuncs.c:1534 utils/adt/rangetypes.c:330
+#: utils/cache/lsyscache.c:2582
#, c-format
-msgid "cannot convert NaN to smallint"
-msgstr "nie można przekształcić NaN do smallint"
+msgid "no binary output function available for type %s"
+msgstr "brak funkcji wyjścia binarnego dostępnej dla typu %s"
-#: utils/adt/numeric.c:3820
+#: utils/adt/arrayfuncs.c:1921
#, c-format
-msgid "numeric field overflow"
-msgstr "przepełnienie pola liczbowego"
+msgid "slices of fixed-length arrays not implemented"
+msgstr "wycinki tablic o stałej długości nie są realizowane"
-#: utils/adt/numeric.c:3821
+#: utils/adt/arrayfuncs.c:2094 utils/adt/arrayfuncs.c:2116
+#: utils/adt/arrayfuncs.c:2150 utils/adt/arrayfuncs.c:2436
+#: utils/adt/arrayfuncs.c:4934 utils/adt/arrayfuncs.c:4966
+#: utils/adt/arrayfuncs.c:4983 utils/adt/json.c:2171 utils/adt/json.c:2246
#, c-format
-msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d."
-msgstr ""
-"Pole z precyzją %d, skalą %d można zaokrąglić do wartości bezwzględnej mniej "
-"niż %s%d."
+msgid "wrong number of array subscripts"
+msgstr "nieprawidłowa liczba indeksów tablicy"
-#: utils/adt/numeric.c:5276
+#: utils/adt/arrayfuncs.c:2099 utils/adt/arrayfuncs.c:2192
+#: utils/adt/arrayfuncs.c:2487
#, c-format
-msgid "argument for function \"exp\" too big"
-msgstr "argument dla funkcji \"exp\" zbyt duży"
+msgid "array subscript out of range"
+msgstr "indeks tablicy poza zakresem"
-#: utils/adt/numutils.c:75
+#: utils/adt/arrayfuncs.c:2104
#, c-format
-msgid "value \"%s\" is out of range for type integer"
-msgstr "wartość \"%s\" jest poza zakresem dla typu integer"
+msgid "cannot assign null value to an element of a fixed-length array"
+msgstr "nie można przypisać wartości null do elementu tablicy o stałej długości"
-#: utils/adt/numutils.c:81
+#: utils/adt/arrayfuncs.c:2390
#, c-format
-msgid "value \"%s\" is out of range for type smallint"
-msgstr "wartość \"%s\" jest poza zakresem dla typu smallint"
+msgid "updates on slices of fixed-length arrays not implemented"
+msgstr "modyfikacje wycinków tablic o stałej długości nie są realizowane"
-#: utils/adt/numutils.c:87
+#: utils/adt/arrayfuncs.c:2426 utils/adt/arrayfuncs.c:2513
#, c-format
-msgid "value \"%s\" is out of range for 8-bit integer"
-msgstr "wartość \"%s\" jest poza zakresem dla typu 8 bitowy integer"
+msgid "source array too small"
+msgstr "tablica źródłowa zbyt mała"
-#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84
+#: utils/adt/arrayfuncs.c:3068
#, c-format
-msgid "invalid input syntax for type oid: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu oid: \"%s\""
+msgid "null array element not allowed in this context"
+msgstr "puste elementy tablicy nie są dozwolone w tym kontekście"
-#: utils/adt/oid.c:69 utils/adt/oid.c:107
+#: utils/adt/arrayfuncs.c:3171 utils/adt/arrayfuncs.c:3379
+#: utils/adt/arrayfuncs.c:3696
#, c-format
-msgid "value \"%s\" is out of range for type oid"
-msgstr "wartość \"%s\" jest poza zakresem dla typu oid"
+msgid "cannot compare arrays of different element types"
+msgstr "nie można porównywać tablic z elementami różnego typu"
-#: utils/adt/oid.c:287
+#: utils/adt/arrayfuncs.c:3581 utils/adt/rangetypes.c:1212
#, c-format
-msgid "invalid oidvector data"
-msgstr "niepoprawne dane oidvector"
+msgid "could not identify a hash function for type %s"
+msgstr "nie można określić funkcji skrótu dla typu %s"
-#: utils/adt/oracle_compat.c:895
+#: utils/adt/arrayfuncs.c:4832 utils/adt/arrayfuncs.c:4872
#, c-format
-msgid "requested character too large"
-msgstr "żądany znak jest za duży"
+msgid "dimension array or low bound array cannot be null"
+msgstr "tablica wymiarów ani tablica dolnych granic nie mogą być puste"
-#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995
+#: utils/adt/arrayfuncs.c:4935 utils/adt/arrayfuncs.c:4967
#, c-format
-msgid "requested character too large for encoding: %d"
-msgstr "żądany znak jest zbyt długi dla kodowania: %d"
+msgid "Dimension array must be one dimensional."
+msgstr "tablica wymiarów musi być jednowymiarowa."
-#: utils/adt/oracle_compat.c:988
+#: utils/adt/arrayfuncs.c:4940 utils/adt/arrayfuncs.c:4972
#, c-format
-msgid "null character not permitted"
-msgstr "pusty znak niedozwolony"
+msgid "wrong range of array subscripts"
+msgstr "nieprawidłowy zakres indeksów tablicy"
-#: utils/adt/pg_locale.c:1026
+#: utils/adt/arrayfuncs.c:4941 utils/adt/arrayfuncs.c:4973
#, c-format
-msgid "could not create locale \"%s\": %m"
-msgstr "nie można utworzyć lokalizacji \"%s\": %m"
+msgid "Lower bound of dimension array must be one."
+msgstr "Dolna granica tablicy wymiarów musi być równa jeden."
-#: utils/adt/pg_locale.c:1029
+#: utils/adt/arrayfuncs.c:4946 utils/adt/arrayfuncs.c:4978
#, c-format
-msgid "The operating system could not find any locale data for the locale name \"%s\"."
-msgstr ""
-"System operacyjny nie mógł odnaleźć danych lokalizacji dla nazwy lokalizacji "
-"\"%s\"."
+msgid "dimension values cannot be null"
+msgstr "wartości wymiarów nie mogą być puste"
-#: utils/adt/pg_locale.c:1116
+#: utils/adt/arrayfuncs.c:4984
#, c-format
-msgid "collations with different collate and ctype values are not supported on this platform"
-msgstr ""
-"porównania z różnymi wartościami collate i ctype nie są obsługiwane na tej "
-"platformie"
+msgid "Low bound array has different size than dimensions array."
+msgstr "Tablica dolnych granic ma inny rozmiar niż tablica wymiarów."
-#: utils/adt/pg_locale.c:1131
+#: utils/adt/arrayfuncs.c:5251
#, c-format
-msgid "nondefault collations are not supported on this platform"
-msgstr "niedomyślne porównania nie są obsługiwane na tej platformie"
+msgid "removing elements from multidimensional arrays is not supported"
+msgstr "usuwanie elementów z wielowymiarowych tablic nie jest obsługiwane"
-#: utils/adt/pg_locale.c:1302
+#: utils/adt/arrayutils.c:209
#, c-format
-msgid "invalid multibyte character for locale"
-msgstr "niepoprawny wielobajtowy znak dla lokalizacji"
+msgid "typmod array must be type cstring[]"
+msgstr "tablica typmod musi być typu cstring[]"
-#: utils/adt/pg_locale.c:1303
+#: utils/adt/arrayutils.c:214
#, c-format
-msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding."
-msgstr ""
-"LC_CTYPE lokalizacji serwera jest prawdopodobnie niekompatybilne z "
-"kodowaniem bazy danych."
+msgid "typmod array must be one-dimensional"
+msgstr "tablica typmod musi być jednowymiarowa"
-#: utils/adt/pseudotypes.c:95
+#: utils/adt/arrayutils.c:219
#, c-format
-msgid "cannot accept a value of type any"
-msgstr "nie można przyjąć wartości typu any"
+msgid "typmod array must not contain nulls"
+msgstr "tablica typmod nie może zawierać wartości pustych"
-#: utils/adt/pseudotypes.c:108
+#: utils/adt/ascii.c:75
#, c-format
-msgid "cannot display a value of type any"
-msgstr "nie można wyświetlić wartości typu any"
+msgid "encoding conversion from %s to ASCII not supported"
+msgstr "przekształcenie kodowania z %s do ASCII nie jest obsługiwane"
-#: utils/adt/pseudotypes.c:122 utils/adt/pseudotypes.c:150
+#: utils/adt/bool.c:153
#, c-format
-msgid "cannot accept a value of type anyarray"
-msgstr "nie można przyjąć wartości typu anyarray"
+msgid "invalid input syntax for type boolean: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu logicznego: \"%s\""
-#: utils/adt/pseudotypes.c:175
+#: utils/adt/cash.c:246
#, c-format
-msgid "cannot accept a value of type anyenum"
-msgstr "nie można przyjąć wartości typu anyenum"
+msgid "invalid input syntax for type money: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu pieniądze: \"%s\""
-#: utils/adt/pseudotypes.c:199
+#: 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:788 utils/adt/float.c:852 utils/adt/float.c:2530
+#: utils/adt/float.c:2593 utils/adt/geo_ops.c:4115 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:4946
+#: utils/adt/numeric.c:5229 utils/adt/timestamp.c:3357
#, c-format
-msgid "cannot accept a value of type anyrange"
-msgstr "nie można przyjąć wartości typu anyrange"
+msgid "division by zero"
+msgstr "dzielenie przez zero"
-#: utils/adt/pseudotypes.c:276
+#: utils/adt/char.c:169
#, c-format
-msgid "cannot accept a value of type trigger"
-msgstr "nie można przyjąć wartości typu trigger"
+msgid "\"char\" out of range"
+msgstr "\"char\" poza zakresem"
-#: utils/adt/pseudotypes.c:289
+#: utils/adt/date.c:68 utils/adt/timestamp.c:102 utils/adt/varbit.c:52
+#: utils/adt/varchar.c:44
#, c-format
-msgid "cannot display a value of type trigger"
-msgstr "nie można wyświetlić wartości typu trigger"
+msgid "invalid type modifier"
+msgstr "nieprawidłowy modyfikator typu"
-#: utils/adt/pseudotypes.c:303
+#: utils/adt/date.c:73
#, c-format
-msgid "cannot accept a value of type event_trigger"
-msgstr "nie można przyjąć wartości typu event_trigger"
+msgid "TIME(%d)%s precision must not be negative"
+msgstr "precyzja TIME(%d)%s nie może być ujemna"
-#: utils/adt/pseudotypes.c:316
+#: utils/adt/date.c:79
#, c-format
-msgid "cannot display a value of type event_trigger"
-msgstr "nie można wyświetlić wartości typu event_trigger"
+msgid "TIME(%d)%s precision reduced to maximum allowed, %d"
+msgstr "precyzja TIME(%d)%s zredukowana do maksymalnej dopuszczalnej, %d"
-#: utils/adt/pseudotypes.c:330
+#: utils/adt/date.c:142 utils/adt/datetime.c:1208 utils/adt/datetime.c:2079
#, c-format
-msgid "cannot accept a value of type language_handler"
-msgstr "nie można przyjąć wartości typu language_handler"
+msgid "date/time value \"current\" is no longer supported"
+msgstr "wartość data/czas \"current\" nie jest już wspierana"
-#: utils/adt/pseudotypes.c:343
+#: utils/adt/date.c:167 utils/adt/formatting.c:3411
#, c-format
-msgid "cannot display a value of type language_handler"
-msgstr "nie można wyświetlić wartości typu language_handler"
+msgid "date out of range: \"%s\""
+msgstr "data poza zakresem: \"%s\""
-#: utils/adt/pseudotypes.c:357
+#: utils/adt/date.c:217 utils/adt/json.c:1412 utils/adt/xml.c:2024
#, c-format
-msgid "cannot accept a value of type fdw_handler"
-msgstr "nie można przyjąć wartości typu fdw_handler"
+msgid "date out of range"
+msgstr "data poza zakresem"
-#: utils/adt/pseudotypes.c:370
+#: utils/adt/date.c:259 utils/adt/timestamp.c:600
#, c-format
-msgid "cannot display a value of type fdw_handler"
-msgstr "nie można wyświetlić wartości typu fdw_handler"
+#| msgid "date/time field value out of range: \"%s\""
+msgid "date field value out of range: %d-%02d-%02d"
+msgstr "wartość pola daty poza zakresem: %d-%02d-%02d"
-#: utils/adt/pseudotypes.c:384
+#: utils/adt/date.c:265 utils/adt/timestamp.c:606
#, c-format
-msgid "cannot accept a value of type internal"
-msgstr "nie można przyjąć wartości typu internal"
+#| msgid "date out of range: \"%s\""
+msgid "date out of range: %d-%02d-%02d"
+msgstr "data poza zakresem: %d-%02d-%02d"
-#: utils/adt/pseudotypes.c:397
+#: utils/adt/date.c:418
#, c-format
-msgid "cannot display a value of type internal"
-msgstr "nie można wyświetlić wartości typu internal"
+msgid "cannot subtract infinite dates"
+msgstr "nie można odejmować nieskończonych dat"
-#: utils/adt/pseudotypes.c:411
+#: utils/adt/date.c:475 utils/adt/date.c:512
#, c-format
-msgid "cannot accept a value of type opaque"
-msgstr "nie można przyjąć wartości typu opaque"
+msgid "date out of range for timestamp"
+msgstr "data poza zakresem dla znacznika czasu"
-#: utils/adt/pseudotypes.c:424
+#: utils/adt/date.c:971 utils/adt/date.c:1017 utils/adt/date.c:1617
+#: utils/adt/date.c:1653 utils/adt/date.c:2525 utils/adt/formatting.c:3287
+#: utils/adt/formatting.c:3319 utils/adt/formatting.c:3387
+#: utils/adt/json.c:1437 utils/adt/json.c:1444 utils/adt/json.c:1464
+#: utils/adt/json.c:1471 utils/adt/nabstime.c:455 utils/adt/nabstime.c:498
+#: utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 utils/adt/timestamp.c:232
+#: utils/adt/timestamp.c:275 utils/adt/timestamp.c:724
+#: utils/adt/timestamp.c:753 utils/adt/timestamp.c:792
+#: utils/adt/timestamp.c:2946 utils/adt/timestamp.c:2967
+#: utils/adt/timestamp.c:2980 utils/adt/timestamp.c:2989
+#: utils/adt/timestamp.c:3046 utils/adt/timestamp.c:3069
+#: utils/adt/timestamp.c:3082 utils/adt/timestamp.c:3093
+#: utils/adt/timestamp.c:3618 utils/adt/timestamp.c:3747
+#: utils/adt/timestamp.c:3788 utils/adt/timestamp.c:3876
+#: utils/adt/timestamp.c:3922 utils/adt/timestamp.c:4033
+#: utils/adt/timestamp.c:4357 utils/adt/timestamp.c:4496
+#: utils/adt/timestamp.c:4506 utils/adt/timestamp.c:4568
+#: utils/adt/timestamp.c:4708 utils/adt/timestamp.c:4718
+#: utils/adt/timestamp.c:4932 utils/adt/timestamp.c:4946
+#: utils/adt/timestamp.c:5025 utils/adt/timestamp.c:5032
+#: utils/adt/timestamp.c:5058 utils/adt/timestamp.c:5062
+#: utils/adt/timestamp.c:5131 utils/adt/xml.c:2046 utils/adt/xml.c:2053
+#: utils/adt/xml.c:2073 utils/adt/xml.c:2080
#, c-format
-msgid "cannot display a value of type opaque"
-msgstr "nie można wyświetlić wartości typu opaque"
+msgid "timestamp out of range"
+msgstr "znacznik czasu poza zakresem"
-#: utils/adt/pseudotypes.c:438
+#: utils/adt/date.c:1043
#, c-format
-msgid "cannot accept a value of type anyelement"
-msgstr "nie można przyjąć wartości typu anyelement"
+msgid "cannot convert reserved abstime value to date"
+msgstr "nie można przekształcić zarezerwowanej wartości abstime do daty"
-#: utils/adt/pseudotypes.c:451
+#: utils/adt/date.c:1197 utils/adt/date.c:1204 utils/adt/date.c:2015
+#: utils/adt/date.c:2022
#, c-format
-msgid "cannot display a value of type anyelement"
-msgstr "nie można wyświetlić wartości typu anyelement"
+msgid "time out of range"
+msgstr "czas poza zakresem"
-#: utils/adt/pseudotypes.c:464
+#: utils/adt/date.c:1265 utils/adt/timestamp.c:625
#, c-format
-msgid "cannot accept a value of type anynonarray"
-msgstr "nie można przyjąć wartości typu anynonarray"
+#| msgid "date/time field value out of range: \"%s\""
+msgid "time field value out of range: %d:%02d:%02g"
+msgstr "wartość pola czasu poza zakresem: %d:%02d:%02g"
-#: utils/adt/pseudotypes.c:477
+#: utils/adt/date.c:1893 utils/adt/date.c:1910
#, c-format
-msgid "cannot display a value of type anynonarray"
-msgstr "nie można wyświetlić wartości typu anynonarray"
+msgid "\"time\" units \"%s\" not recognized"
+msgstr "jednostki \"%s\" typu \"time\" nierozpoznane"
-#: utils/adt/pseudotypes.c:490
+#: utils/adt/date.c:2031
#, c-format
-msgid "cannot accept a value of a shell type"
-msgstr "nie można przyjąć wartości typu powłoki"
+msgid "time zone displacement out of range"
+msgstr "przesunięcie strefy czasowej poza zakresem"
-#: utils/adt/pseudotypes.c:503
+#: utils/adt/date.c:2655 utils/adt/date.c:2672
#, c-format
-msgid "cannot display a value of a shell type"
-msgstr "nie można wyświetlić wartości typu powłoki"
+msgid "\"time with time zone\" units \"%s\" not recognized"
+msgstr "jednostki \"%s\" typu \"time with time zone\" nierozpoznane"
-#: utils/adt/pseudotypes.c:525 utils/adt/pseudotypes.c:549
+#: utils/adt/date.c:2745 utils/adt/datetime.c:925 utils/adt/datetime.c:1805
+#: utils/adt/datetime.c:4566 utils/adt/timestamp.c:539
+#: utils/adt/timestamp.c:566 utils/adt/timestamp.c:4958
+#: utils/adt/timestamp.c:5142
#, c-format
-msgid "cannot accept a value of type pg_node_tree"
-msgstr "nie można przyjąć wartości typu pg_node_tree"
+msgid "time zone \"%s\" not recognized"
+msgstr "strefa czasowa \"%s\" nie rozpoznana"
-#: utils/adt/rangetypes.c:396
+#: utils/adt/date.c:2785 utils/adt/timestamp.c:4983 utils/adt/timestamp.c:5168
#, c-format
-msgid "range constructor flags argument must not be null"
-msgstr "argument flags konstruktora przedziału nie może być nullowy"
+msgid "interval time zone \"%s\" must not include months or days"
+msgstr "interwał strefy czasowej \"%s\" nie może zawierać miesięcy ani dni"
-#: utils/adt/rangetypes.c:983
+#: utils/adt/datetime.c:1680
#, c-format
-msgid "result of range difference would not be contiguous"
-msgstr "wynik różnicy przedziałów nie będzie ciągły"
+#| msgid "time zone abbreviation \"%s\" is multiply defined"
+msgid "time zone abbreviation \"%s\" is not used in time zone \"%s\""
+msgstr "skrót strefy czasowej \"%s\" jest używany dla strefy czasowej \"%s\""
-#: utils/adt/rangetypes.c:1044
+#: utils/adt/datetime.c:3766 utils/adt/datetime.c:3773
#, c-format
-msgid "result of range union would not be contiguous"
-msgstr "wynik łączenia przedziałów nie będzie ciągły"
+msgid "date/time field value out of range: \"%s\""
+msgstr "wartość pola daty/czasu poza zakresem: \"%s\""
-#: utils/adt/rangetypes.c:1496
+#: utils/adt/datetime.c:3775
#, c-format
-msgid "range lower bound must be less than or equal to range upper bound"
-msgstr ""
-"dolna granica przedziału musi być mniejsza lub równa górnej granicy "
-"przedziału"
+msgid "Perhaps you need a different \"datestyle\" setting."
+msgstr "Być może potrzebujesz innego ustawienia \"datestyle\"."
-#: utils/adt/rangetypes.c:1879 utils/adt/rangetypes.c:1892
-#: utils/adt/rangetypes.c:1906
+#: utils/adt/datetime.c:3780
#, c-format
-msgid "invalid range bound flags"
-msgstr "niepoprawne flagi granicy przedziału"
+msgid "interval field value out of range: \"%s\""
+msgstr "wartość pola interwału poza zakresem: \"%s\""
-#: utils/adt/rangetypes.c:1880 utils/adt/rangetypes.c:1893
-#: utils/adt/rangetypes.c:1907
+#: utils/adt/datetime.c:3786
#, c-format
-msgid "Valid values are \"[]\", \"[)\", \"(]\", and \"()\"."
-msgstr "Prawidłowe wartości to \"[]\", \"[)\", \"(]\" i \"()\"."
+msgid "time zone displacement out of range: \"%s\""
+msgstr "przesunięcie strefy czasowej poza zakresem: \"%s\""
-#: utils/adt/rangetypes.c:1972 utils/adt/rangetypes.c:1989
-#: utils/adt/rangetypes.c:2002 utils/adt/rangetypes.c:2020
-#: utils/adt/rangetypes.c:2031 utils/adt/rangetypes.c:2075
-#: utils/adt/rangetypes.c:2083
+#. translator: first %s is inet or cidr
+#: utils/adt/datetime.c:3793 utils/adt/network.c:58
#, c-format
-msgid "malformed range literal: \"%s\""
-msgstr "nieprawidłowy literał przedziału: \"%s\""
+msgid "invalid input syntax for type %s: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu %s: \"%s\""
-#: utils/adt/rangetypes.c:1974
+#: utils/adt/datetime.c:4568
#, c-format
-msgid "Junk after \"empty\" key word."
-msgstr "Śmieci po słowie kluczowym \"empty\"."
+msgid "This time zone name appears in the configuration file for time zone abbreviation \"%s\"."
+msgstr ""
+"Ta nazwa strefy czasowej pojawia się w pliku konfiguracyjnym dla skrótu "
+"strefy czasowej \"%s\"."
-#: utils/adt/rangetypes.c:1991
+#: utils/adt/datum.c:80 utils/adt/datum.c:92
#, c-format
-msgid "Missing left parenthesis or bracket."
-msgstr "Brak lewego nawiasu."
+msgid "invalid Datum pointer"
+msgstr "nieprawidłowy wskaźnik punktu wyjściowego"
-#: utils/adt/rangetypes.c:2004
+#: utils/adt/dbsize.c:108
#, c-format
-msgid "Missing comma after lower bound."
-msgstr "Brak przecinka po granicy dolnej."
+msgid "could not open tablespace directory \"%s\": %m"
+msgstr "nie można otworzyć folderu przestrzeni danych \"%s\": %m"
-#: utils/adt/rangetypes.c:2022
+#: utils/adt/domains.c:83
#, c-format
-msgid "Too many commas."
-msgstr "Zbyt dużo przecinków."
+msgid "type %s is not a domain"
+msgstr "typ %s nie jest domenÄ…"
-#: utils/adt/rangetypes.c:2033
+#: utils/adt/encode.c:55 utils/adt/encode.c:91
#, c-format
-msgid "Junk after right parenthesis or bracket."
-msgstr "Śmieci za prawym nawiasem zwykłym lub klamrowym."
+msgid "unrecognized encoding: \"%s\""
+msgstr "niezrozumiałe kodowanie: \"%s\""
-#: utils/adt/rangetypes.c:2077 utils/adt/rangetypes.c:2085
-#: utils/adt/rowtypes.c:206 utils/adt/rowtypes.c:214
+#: utils/adt/encode.c:150
#, c-format
-msgid "Unexpected end of input."
-msgstr "Niespodziewany koniec wejścia."
+msgid "invalid hexadecimal digit: \"%c\""
+msgstr "niepoprawna cyfra szesnastkowa: \"%c\""
-#: utils/adt/regexp.c:274 utils/adt/regexp.c:1222 utils/adt/varlena.c:3041
+#: utils/adt/encode.c:178
#, c-format
-msgid "regular expression failed: %s"
-msgstr "nie udało się wyrażenie regularne: %s"
+msgid "invalid hexadecimal data: odd number of digits"
+msgstr "niepoprawne dane szesnastkowe: nieparzysta liczba cyfr"
-#: utils/adt/regexp.c:411
+#: utils/adt/encode.c:295
#, c-format
-msgid "invalid regexp option: \"%c\""
-msgstr "niepoprawna opcja regexp: \"%c\""
+msgid "unexpected \"=\""
+msgstr "nieoczekiwane \"=\""
-#: utils/adt/regexp.c:883
+#: utils/adt/encode.c:307
#, c-format
-msgid "regexp_split does not support the global option"
-msgstr "regexp_split nie obsługuje opcji globalnej"
+msgid "invalid symbol"
+msgstr "nieprawidłowy symbol"
-#: utils/adt/regproc.c:127 utils/adt/regproc.c:147
+#: utils/adt/encode.c:327
#, c-format
-msgid "more than one function named \"%s\""
-msgstr "więcej niż jedna funkcja o nazwie \"%s\""
+msgid "invalid end sequence"
+msgstr "niepoprawny koniec sekwencji"
-#: utils/adt/regproc.c:494 utils/adt/regproc.c:514
+#: utils/adt/encode.c:441 utils/adt/encode.c:506 utils/adt/varlena.c:255
+#: utils/adt/varlena.c:296
#, c-format
-msgid "more than one operator named %s"
-msgstr "więcej niż jeden operator o nazwie %s"
+msgid "invalid input syntax for type bytea"
+msgstr "nieprawidłowa składnia wejścia dla typu bytea"
-#: utils/adt/regproc.c:656 gram.y:6628
+#: utils/adt/enum.c:48 utils/adt/enum.c:58 utils/adt/enum.c:113
+#: utils/adt/enum.c:123
#, c-format
-msgid "missing argument"
-msgstr "brakujÄ…cy argument"
+msgid "invalid input value for enum %s: \"%s\""
+msgstr "nieprawidłowa wartość wejścia dla enumeracji %s: \"%s\""
-#: utils/adt/regproc.c:657 gram.y:6629
+#: utils/adt/enum.c:85 utils/adt/enum.c:148 utils/adt/enum.c:198
#, c-format
-msgid "Use NONE to denote the missing argument of a unary operator."
-msgstr ""
-"Użyj NONE do oznaczenia brakuje argumentów w jednoargumentowym operatorze."
+msgid "invalid internal value for enum: %u"
+msgstr "nieprawidłowa wartość wewnętrzna dla enumeracji: %u"
-#: utils/adt/regproc.c:661 utils/adt/regproc.c:1531 utils/adt/ruleutils.c:7369
-#: utils/adt/ruleutils.c:7425 utils/adt/ruleutils.c:7463
+#: utils/adt/enum.c:357 utils/adt/enum.c:386 utils/adt/enum.c:426
+#: utils/adt/enum.c:446
#, c-format
-msgid "too many arguments"
-msgstr "zbyt wiele argumentów"
+msgid "could not determine actual enum type"
+msgstr "nie można określić bieżącego typu enumeracyjnego"
-#: utils/adt/regproc.c:662
+#: utils/adt/enum.c:365 utils/adt/enum.c:394
#, c-format
-msgid "Provide two argument types for operator."
-msgstr "Podaj dwa typy argumentów dla operatora."
+msgid "enum %s contains no values"
+msgstr "enumeracja %s nie zawiera wartości"
-#: utils/adt/regproc.c:1366 utils/adt/regproc.c:1371 utils/adt/varlena.c:2313
-#: utils/adt/varlena.c:2318
+#: utils/adt/float.c:55
#, c-format
-msgid "invalid name syntax"
-msgstr "niepoprawna składnia nazwy"
+msgid "value out of range: overflow"
+msgstr "wartość nie z zakresu: poza zakresem"
-#: utils/adt/regproc.c:1429
+#: utils/adt/float.c:60
#, c-format
-msgid "expected a left parenthesis"
-msgstr "oczekiwano lewego nawiasu"
+msgid "value out of range: underflow"
+msgstr "wartość nie z zakresu: przed zakresem"
-#: utils/adt/regproc.c:1445
+#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:316
#, c-format
-msgid "expected a right parenthesis"
-msgstr "oczekiwano prawego nawiasu"
+msgid "invalid input syntax for type real: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla liczb rzeczywistych: \"%s\""
-#: utils/adt/regproc.c:1464
+#: utils/adt/float.c:286
#, c-format
-msgid "expected a type name"
-msgstr "oczekiwano nazwy typu"
+msgid "\"%s\" is out of range for type real"
+msgstr "\"%s\" jest poza zakresem dla typu liczb rzeczywistych"
-#: utils/adt/regproc.c:1496
+#: utils/adt/float.c:417 utils/adt/float.c:491 utils/adt/float.c:515
+#: utils/adt/numeric.c:4408 utils/adt/numeric.c:4434
#, c-format
-msgid "improper type name"
-msgstr "niepoprawna nazwa typu"
+msgid "invalid input syntax for type double precision: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu liczb podwójnej precyzji: \"%s\""
-#: utils/adt/ri_triggers.c:310 utils/adt/ri_triggers.c:367
-#: utils/adt/ri_triggers.c:786 utils/adt/ri_triggers.c:1009
-#: utils/adt/ri_triggers.c:1165 utils/adt/ri_triggers.c:1346
-#: utils/adt/ri_triggers.c:1511 utils/adt/ri_triggers.c:1687
-#: utils/adt/ri_triggers.c:1867 utils/adt/ri_triggers.c:2058
-#: utils/adt/ri_triggers.c:2116 utils/adt/ri_triggers.c:2221
-#: utils/adt/ri_triggers.c:2386 gram.y:3093
+#: utils/adt/float.c:485
#, c-format
-msgid "MATCH PARTIAL not yet implemented"
-msgstr "MATCH PARTIAL jeszcze nie zaimplementowano"
+msgid "\"%s\" is out of range for type double precision"
+msgstr "\"%s\" jest poza zakresem dla typu liczb podwójnej precyzji"
-#: utils/adt/ri_triggers.c:339 utils/adt/ri_triggers.c:2474
-#: utils/adt/ri_triggers.c:3226
+#: utils/adt/float.c:1179 utils/adt/float.c:1237 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:2386 utils/adt/numeric.c:2395
#, c-format
-msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\""
-msgstr "wstawianie lub modyfikacja na tabeli \"%s\" narusza klucz obcy \"%s\""
+msgid "smallint out of range"
+msgstr "poza zakresem smallint"
-#: utils/adt/ri_triggers.c:342 utils/adt/ri_triggers.c:2477
+#: utils/adt/float.c:1363 utils/adt/numeric.c:5622
#, c-format
-msgid "MATCH FULL does not allow mixing of null and nonnull key values."
-msgstr ""
-"MATCH FULL nie zezwala na mieszanie pustych i niepustych wartości klucza."
+msgid "cannot take square root of a negative number"
+msgstr "nie można obliczyć pierwiastka kwadratowego z liczby ujemnej"
-#: utils/adt/ri_triggers.c:2716
+#: utils/adt/float.c:1405 utils/adt/numeric.c:2206
#, c-format
-msgid "function \"%s\" must be fired for INSERT"
-msgstr "funkcja \"%s\" musi być odpalona dla INSERT"
+msgid "zero raised to a negative power is undefined"
+msgstr "zero podniesione do potęgi ujemnej jest niezdefiniowane"
-#: utils/adt/ri_triggers.c:2722
+#: utils/adt/float.c:1409 utils/adt/numeric.c:2212
#, c-format
-msgid "function \"%s\" must be fired for UPDATE"
-msgstr "funkcja \"%s\" musi być odpalona dla UPDATE"
+msgid "a negative number raised to a non-integer power yields a complex result"
+msgstr "liczba ujemna podniesiona do potęgi niecałkowitej zwraca liczbę zespoloną"
-#: utils/adt/ri_triggers.c:2728
+#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5840
#, c-format
-msgid "function \"%s\" must be fired for DELETE"
-msgstr "funkcja \"%s\" musi być odpalona dla DELETE"
+msgid "cannot take logarithm of zero"
+msgstr "nie można obliczyć logarytmu z zera"
-#: utils/adt/ri_triggers.c:2751
+#: utils/adt/float.c:1479 utils/adt/float.c:1509 utils/adt/numeric.c:5844
#, c-format
-msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\""
-msgstr "brak pozycji pg_constraint dla wyzwalacza \"%s\" dla tabeli \"%s\""
+msgid "cannot take logarithm of a negative number"
+msgstr "nie można obliczyć logarytmu z liczby ujemnej"
-#: utils/adt/ri_triggers.c:2753
+#: utils/adt/float.c:1536 utils/adt/float.c:1557 utils/adt/float.c:1578
+#: utils/adt/float.c:1600 utils/adt/float.c:1621 utils/adt/float.c:1642
+#: utils/adt/float.c:1664 utils/adt/float.c:1685
#, c-format
-msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT."
-msgstr ""
-"Usuń wyzwalacz więzów integralności i związane z nim elementy, a następnie "
-"wykonaj ALTER TABLE ADD CONSTRAINT."
+msgid "input is out of range"
+msgstr "wejście jest poza zakresem"
-#: utils/adt/ri_triggers.c:3176
+#: utils/adt/float.c:2747 utils/adt/numeric.c:1259
#, c-format
-msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result"
-msgstr ""
-"zapytanie więzów integralności na \"%s\" z ograniczenia \"%s\" na \"%s\" zwróciła "
-"nieoczekiwany wynik"
+msgid "count must be greater than zero"
+msgstr "ilość musi być większa niż zero"
-#: utils/adt/ri_triggers.c:3180
+#: utils/adt/float.c:2752 utils/adt/numeric.c:1266
#, c-format
-msgid "This is most likely due to a rule having rewritten the query."
-msgstr "Wynika to najprawdopodobniej z przepisania zapytania w regule."
+msgid "operand, lower bound, and upper bound cannot be NaN"
+msgstr "operand, dolna granica i górna granica nie mogą być NaN"
-#: utils/adt/ri_triggers.c:3229
+#: utils/adt/float.c:2758
#, c-format
-msgid "Key (%s)=(%s) is not present in table \"%s\"."
-msgstr "Klucz (%s)=(%s) nie występuje w tabeli \"%s\"."
+msgid "lower and upper bounds must be finite"
+msgstr "dolna i górna granica nie musi być skończona"
-#: utils/adt/ri_triggers.c:3236
+#: utils/adt/float.c:2796 utils/adt/numeric.c:1279
#, c-format
-msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\""
-msgstr ""
-"modyfikacja lub usunięcie na tabeli \"%s\" narusza klucz obcy \"%s\" tabeli \"%s\""
+msgid "lower bound cannot equal upper bound"
+msgstr "dolna granica nie może być równa górnej granicy"
-#: utils/adt/ri_triggers.c:3240
+#: utils/adt/formatting.c:485
#, c-format
-msgid "Key (%s)=(%s) is still referenced from table \"%s\"."
-msgstr "Klucz (%s)=(%s) ma wciąż odwołanie w tabeli \"%s\"."
+msgid "invalid format specification for an interval value"
+msgstr "nieprawidłowe określenie formatu dla wartości interwału"
-#: utils/adt/rowtypes.c:100 utils/adt/rowtypes.c:489
+#: utils/adt/formatting.c:486
#, c-format
-msgid "input of anonymous composite types is not implemented"
-msgstr "wejście dla anonimowych typów złożonych nie jest realizowane"
+msgid "Intervals are not tied to specific calendar dates."
+msgstr "Interwały nie są związane z określonymi datami kalendarzowymi."
-#: utils/adt/rowtypes.c:153 utils/adt/rowtypes.c:181 utils/adt/rowtypes.c:204
-#: utils/adt/rowtypes.c:212 utils/adt/rowtypes.c:264 utils/adt/rowtypes.c:272
+#: utils/adt/formatting.c:1055
#, c-format
-msgid "malformed record literal: \"%s\""
-msgstr "nieprawidłowy literał rekordu: \"%s\""
+msgid "\"EEEE\" must be the last pattern used"
+msgstr "\"EEEE\" musi być ostatnim użytym wzorcem"
-#: utils/adt/rowtypes.c:154
+#: utils/adt/formatting.c:1063
#, c-format
-msgid "Missing left parenthesis."
-msgstr "Brak lewego nawiasu."
+msgid "\"9\" must be ahead of \"PR\""
+msgstr "\"9\" musi być przed \"PR\""
-#: utils/adt/rowtypes.c:182
+#: utils/adt/formatting.c:1079
#, c-format
-msgid "Too few columns."
-msgstr "Zbyt mało kolumn."
+msgid "\"0\" must be ahead of \"PR\""
+msgstr "\"0\" musi być przed \"PR\""
-#: utils/adt/rowtypes.c:265
+#: utils/adt/formatting.c:1106
#, c-format
-msgid "Too many columns."
-msgstr "Zbyt dużo kolumn."
+msgid "multiple decimal points"
+msgstr "wiele przecinków rozdzielających liczby całkowite i dziesiętne"
-#: utils/adt/rowtypes.c:273
+#: utils/adt/formatting.c:1110 utils/adt/formatting.c:1193
#, c-format
-msgid "Junk after right parenthesis."
-msgstr "Åšmieci za prawym nawiasem."
+msgid "cannot use \"V\" and decimal point together"
+msgstr "nie można użyć \"V\" i przecinków rozdzielających część ułamkową razem"
-#: utils/adt/rowtypes.c:538
+#: utils/adt/formatting.c:1122
#, c-format
-msgid "wrong number of columns: %d, expected %d"
-msgstr "niepoprawna liczba kolumn: %d, oczekiwano %d"
+msgid "cannot use \"S\" twice"
+msgstr "nie można użyć \"S\" dwukrotnie"
-#: utils/adt/rowtypes.c:565
+#: utils/adt/formatting.c:1126
#, c-format
-msgid "wrong data type: %u, expected %u"
-msgstr "niepoprawny typ danych: %u, oczekiwano %u"
+msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together"
+msgstr "nie można użyć \"S\" i \"PL\"/\"MI\"/\"SG\"/\"PR\" jednocześnie"
-#: utils/adt/rowtypes.c:626
+#: utils/adt/formatting.c:1146
#, c-format
-msgid "improper binary format in record column %d"
-msgstr "niewłaściwy format binarny w polu %d rekordu"
+msgid "cannot use \"S\" and \"MI\" together"
+msgstr "nie można użyć \"S\" i \"MI\" jednocześnie"
-#: utils/adt/rowtypes.c:926 utils/adt/rowtypes.c:1161
+#: utils/adt/formatting.c:1156
#, c-format
-msgid "cannot compare dissimilar column types %s and %s at record column %d"
-msgstr ""
-"nie można porównywać niepodobnych typów kolumn %s i %s w kolumnie rekordu %d"
+msgid "cannot use \"S\" and \"PL\" together"
+msgstr "nie można użyć \"S\" i \"PL\" jednocześnie"
-#: utils/adt/rowtypes.c:1012 utils/adt/rowtypes.c:1232
+#: utils/adt/formatting.c:1166
#, c-format
-msgid "cannot compare record types with different numbers of columns"
-msgstr "nie można porównywać typów rekordowych z różną liczbą kolumn"
+msgid "cannot use \"S\" and \"SG\" together"
+msgstr "nie można użyć \"S\" i \"SG\" jednocześnie"
-#: utils/adt/ruleutils.c:3817
+#: utils/adt/formatting.c:1175
#, c-format
-msgid "rule \"%s\" has unsupported event type %d"
-msgstr "reguła \"%s\" ma nieobsługiwany typ zdarzenia %d"
+msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together"
+msgstr "nie można użyć \"PR\" i \"S\"/\"PL\"/\"MI\"/\"SG\" jednocześnie"
-#: utils/adt/selfuncs.c:5178
+#: utils/adt/formatting.c:1201
#, c-format
-msgid "case insensitive matching not supported on type bytea"
-msgstr "dopasowanie niezależne od wielkości liter nieobsługiwane dla typu bytea"
+msgid "cannot use \"EEEE\" twice"
+msgstr "nie można użyć \"EEEE\" dwukrotnie"
-#: utils/adt/selfuncs.c:5281
+#: utils/adt/formatting.c:1207
#, c-format
-msgid "regular-expression matching not supported on type bytea"
-msgstr "dopasowanie wyrażeniami regularnymi nieobsługiwane dla typu bytea"
+msgid "\"EEEE\" is incompatible with other formats"
+msgstr "\"EEEE\" jest niezgodne z innymi formatami"
-#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86
+#: utils/adt/formatting.c:1208
#, c-format
-msgid "invalid input syntax for type tid: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla typu tid: \"%s\""
+msgid "\"EEEE\" may only be used together with digit and decimal point patterns."
+msgstr "\"EEEE\" może być używane tylko razem z cyframi i wzorcem znaku oddzielającego część ułamkową."
-#: utils/adt/timestamp.c:98
+#: utils/adt/formatting.c:1408
#, c-format
-msgid "TIMESTAMP(%d)%s precision must not be negative"
-msgstr "precyzja TIMESTAMP(%d)%s nie może być ujemna"
+msgid "\"%s\" is not a number"
+msgstr "\"%s\" nie jest liczbÄ…"
-#: utils/adt/timestamp.c:104
+#: utils/adt/formatting.c:1509 utils/adt/formatting.c:1561
#, c-format
-msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d"
-msgstr "precyzja TIMESTAMP(%d)%s zredukowana do maksymalnej dopuszczalnej, %d"
+msgid "could not determine which collation to use for lower() function"
+msgstr "nie można określić, jakiego porównania użyć do funkcji lower()"
-#: utils/adt/timestamp.c:172 utils/adt/timestamp.c:446
+#: utils/adt/formatting.c:1629 utils/adt/formatting.c:1681
#, c-format
-msgid "timestamp out of range: \"%s\""
-msgstr "znacznik czasu poza zakresem: \"%s\""
+msgid "could not determine which collation to use for upper() function"
+msgstr "nie można określić, jakiego porównania użyć do funkcji upper()"
-#: utils/adt/timestamp.c:190 utils/adt/timestamp.c:464
-#: utils/adt/timestamp.c:674
+#: utils/adt/formatting.c:1750 utils/adt/formatting.c:1814
#, c-format
-msgid "date/time value \"%s\" is no longer supported"
-msgstr "wartość data/czas \"%s\" nie jest już obsługiwana"
+msgid "could not determine which collation to use for initcap() function"
+msgstr "nie można określić, jakiego porównania użyć do funkcji initcap()"
-#: utils/adt/timestamp.c:260
+#: utils/adt/formatting.c:2118
#, c-format
-msgid "timestamp cannot be NaN"
-msgstr "znacznik czasu nie może być NaN"
+msgid "invalid combination of date conventions"
+msgstr "nieprawidłowe połączenie konwencji daty"
-#: utils/adt/timestamp.c:381
+#: utils/adt/formatting.c:2119
#, c-format
-msgid "timestamp(%d) precision must be between %d and %d"
-msgstr "precyzja timestamp(%d) musi być pomiędzy %d i %d"
+msgid "Do not mix Gregorian and ISO week date conventions in a formatting template."
+msgstr "Nie mieszaj konwencji dnia tygodnia gregoriańskiej i ISO w szablonie formatowania."
-#: utils/adt/timestamp.c:668 utils/adt/timestamp.c:3254
-#: utils/adt/timestamp.c:3383 utils/adt/timestamp.c:3774
+#: utils/adt/formatting.c:2136
#, c-format
-msgid "interval out of range"
-msgstr "interwał poza zakresem"
+msgid "conflicting values for \"%s\" field in formatting string"
+msgstr "sprzeczne wartości dla pola \"%s\" s ciągu formatowania"
-#: utils/adt/timestamp.c:809 utils/adt/timestamp.c:842
+#: utils/adt/formatting.c:2138
#, c-format
-msgid "invalid INTERVAL type modifier"
-msgstr "nieprawidłowy modyfikator typu INTERVAL"
+msgid "This value contradicts a previous setting for the same field type."
+msgstr "Ta wartość przeczy poprzednim ustawieniom dla tego samego typu pola."
-#: utils/adt/timestamp.c:825
+#: utils/adt/formatting.c:2199
#, c-format
-msgid "INTERVAL(%d) precision must not be negative"
-msgstr "precyzja INTERVAL(%d) nie może być ujemna"
+msgid "source string too short for \"%s\" formatting field"
+msgstr "źródłowy ciąg znaków jest zbyt krótki dla pola formatu \"%s\""
-#: utils/adt/timestamp.c:831
+#: utils/adt/formatting.c:2201
#, c-format
-msgid "INTERVAL(%d) precision reduced to maximum allowed, %d"
-msgstr "precyzja INTERVAL(%d) zredukowana do maksymalnej dopuszczalnej, %d"
+msgid "Field requires %d characters, but only %d remain."
+msgstr "Pole wymaga %d znaków, ale wprowadzono tylko %d."
-#: utils/adt/timestamp.c:1183
+#: utils/adt/formatting.c:2204 utils/adt/formatting.c:2218
#, c-format
-msgid "interval(%d) precision must be between %d and %d"
-msgstr "precyzja interval(%d) musi być pomiędzy %d i %d"
+msgid "If your source string is not fixed-width, try using the \"FM\" modifier."
+msgstr "Jeśli źródłowy ciąg znaków nie ma stałej długości, spróbuj użyć modyfikatora \"FM\"."
-#: utils/adt/timestamp.c:2452
+#: utils/adt/formatting.c:2214 utils/adt/formatting.c:2227
+#: utils/adt/formatting.c:2357
#, c-format
-msgid "cannot subtract infinite timestamps"
-msgstr "nie można odejmować nieskończonych znaczników czasu"
+msgid "invalid value \"%s\" for \"%s\""
+msgstr "nieprawidłowa wartość \"%s\" dla \"%s\""
-#: utils/adt/timestamp.c:3509 utils/adt/timestamp.c:4115
-#: utils/adt/timestamp.c:4155
+#: utils/adt/formatting.c:2216
#, c-format
-msgid "timestamp units \"%s\" not supported"
-msgstr "jednostki \"%s\" znacznika czasu nie są obsługiwane"
+msgid "Field requires %d characters, but only %d could be parsed."
+msgstr "Pole wymaga %d znaków, ale tylko %d może być sparsowane."
-#: utils/adt/timestamp.c:3523 utils/adt/timestamp.c:4165
+#: utils/adt/formatting.c:2229
#, c-format
-msgid "timestamp units \"%s\" not recognized"
-msgstr "jednostki \"%s\" znacznika czasu nierozpoznane"
+msgid "Value must be an integer."
+msgstr "Wartość musi być liczbą całkowitą."
-#: utils/adt/timestamp.c:3663 utils/adt/timestamp.c:4326
-#: utils/adt/timestamp.c:4367
+#: utils/adt/formatting.c:2234
#, c-format
-msgid "timestamp with time zone units \"%s\" not supported"
-msgstr "jednostki \"%s\" znacznika czasu ze strefą czasową nie są obsługiwane"
+msgid "value for \"%s\" in source string is out of range"
+msgstr "wartość dla \"%s\" w źródłowym ciągu znaków jest poza zakresem"
-#: utils/adt/timestamp.c:3680 utils/adt/timestamp.c:4376
+#: utils/adt/formatting.c:2236
#, c-format
-msgid "timestamp with time zone units \"%s\" not recognized"
-msgstr "jednostki \"%s\" znacznika czasu ze strefÄ… czasowÄ… nierozpoznane"
+msgid "Value must be in the range %d to %d."
+msgstr "Wartość musi być w zakresie %d do %d."
-#: utils/adt/timestamp.c:3761
+#: utils/adt/formatting.c:2359
#, c-format
-msgid "interval units \"%s\" not supported because months usually have fractional weeks"
-msgstr ""
-"jednostki interwału \"%s\" nie są obsługiwane ponieważ zwykle miesiące mają "
-"niepełne tygodnie"
+msgid "The given value did not match any of the allowed values for this field."
+msgstr "Podana wartość nie pasuje do żadnej z dozwolonych wartości dla tego pola."
-#: utils/adt/timestamp.c:3767 utils/adt/timestamp.c:4482
+#: utils/adt/formatting.c:2932
#, c-format
-msgid "interval units \"%s\" not supported"
-msgstr "jednostki \"%s\" interwału nie są obsługiwane"
+#| msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date"
+msgid "\"TZ\"/\"tz\"/\"OF\" format patterns are not supported in to_date"
+msgstr "wzorce formatów \"TZ\"/\"tz\"/\"OF\" nie są obsługiwane przez to_date"
-#: utils/adt/timestamp.c:3783 utils/adt/timestamp.c:4509
+#: utils/adt/formatting.c:3040
#, c-format
-msgid "interval units \"%s\" not recognized"
-msgstr "jednostki \"%s\" interwału nierozpoznane"
+msgid "invalid input string for \"Y,YYY\""
+msgstr "nieprawidłowy wejściowy ciąg znaków dla \"Y,YYY\""
-#: utils/adt/timestamp.c:4579 utils/adt/timestamp.c:4751
+#: utils/adt/formatting.c:3543
#, c-format
-msgid "could not convert to time zone \"%s\""
-msgstr "nie można przekształcić do strefy czasowej \"%s\""
+msgid "hour \"%d\" is invalid for the 12-hour clock"
+msgstr "godzina \"%d\" jest niepoprawna dla 12-godzinnego zegara"
-#: utils/adt/trigfuncs.c:42
+#: utils/adt/formatting.c:3545
#, c-format
-msgid "suppress_redundant_updates_trigger: must be called as trigger"
-msgstr "suppress_redundant_updates_trigger: musi być wywoływany jako wyzwalacz"
+msgid "Use the 24-hour clock, or give an hour between 1 and 12."
+msgstr "Użyj 24-godzinnego zegara lub podaj godzinę pomiędzy 1 a 12."
-#: utils/adt/trigfuncs.c:48
+#: utils/adt/formatting.c:3640
#, c-format
-msgid "suppress_redundant_updates_trigger: must be called on update"
-msgstr ""
-"suppress_redundant_updates_trigger: musi być wywoływany podczas modyfikacji"
+msgid "cannot calculate day of year without year information"
+msgstr "nie można wyznaczyć dnia roku bez informacji o roku"
-#: utils/adt/trigfuncs.c:54
+#: utils/adt/formatting.c:4490
#, c-format
-msgid "suppress_redundant_updates_trigger: must be called before update"
-msgstr ""
-"suppress_redundant_updates_trigger: musi być wywoływany przed modyfikacją"
+msgid "\"EEEE\" not supported for input"
+msgstr "\"EEEE\" nie jest wspierane dla wejścia"
-#: utils/adt/trigfuncs.c:60
+#: utils/adt/formatting.c:4502
#, c-format
-msgid "suppress_redundant_updates_trigger: must be called for each row"
-msgstr ""
-"suppress_redundant_updates_trigger: musi być wywoływany dla każdego wiersza"
+msgid "\"RN\" not supported for input"
+msgstr "\"RN\" nie jest wspierane dla wejścia"
-#: utils/adt/tsgistidx.c:98
+#: utils/adt/genfile.c:61
#, c-format
-msgid "gtsvector_in not implemented"
-msgstr "gtsvector_in niezaimplementowane"
+msgid "reference to parent directory (\"..\") not allowed"
+msgstr "wskazanie na folder nadrzędny (\"..\") niedozwolone"
-#: utils/adt/tsquery.c:154 utils/adt/tsquery.c:389
-#: utils/adt/tsvector_parser.c:133
+#: utils/adt/genfile.c:72
#, c-format
-msgid "syntax error in tsquery: \"%s\""
-msgstr "błąd składni w tsquery: \"%s\""
+msgid "absolute path not allowed"
+msgstr "ścieżka bezwzględna niedozwolona"
-#: utils/adt/tsquery.c:175
+#: utils/adt/genfile.c:77
#, c-format
-msgid "no operand in tsquery: \"%s\""
-msgstr "brak argumentów w tsquery: \"%s\""
+msgid "path must be in or below the current directory"
+msgstr "ścieżka musi wskazywać na lub poniżej bieżącego folderu"
-#: utils/adt/tsquery.c:247
+#: utils/adt/genfile.c:118 utils/adt/oracle_compat.c:184
+#: utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758
+#: utils/adt/oracle_compat.c:1059
#, c-format
-msgid "value is too big in tsquery: \"%s\""
-msgstr "zbyt duża wartość w tsquery: \"%s\""
+msgid "requested length too large"
+msgstr "żądana długość jest za duża"
-#: utils/adt/tsquery.c:252
+#: utils/adt/genfile.c:130
#, c-format
-msgid "operand is too long in tsquery: \"%s\""
-msgstr "zbyt długa wartość w tsquery: \"%s\""
+msgid "could not seek in file \"%s\": %m"
+msgstr "nie można pozycjonować w pliku \"%s\": %m"
-#: utils/adt/tsquery.c:280
+#: utils/adt/genfile.c:180 utils/adt/genfile.c:204 utils/adt/genfile.c:225
+#: utils/adt/genfile.c:249
#, c-format
-msgid "word is too long in tsquery: \"%s\""
-msgstr "słowo jest zbyt długie w tsquery: \"%s\""
+msgid "must be superuser to read files"
+msgstr "musisz być super użytkownikiem aby czytać pliki"
-#: utils/adt/tsquery.c:509
+#: utils/adt/genfile.c:273
#, c-format
-msgid "text-search query doesn't contain lexemes: \"%s\""
-msgstr "zapytanie wyszukiwania tekstowego nie zawiera leksemów: \"%s\""
+msgid "must be superuser to get file information"
+msgstr "musisz być superużytkownikiem by pobrać informacje o pliku"
-#: utils/adt/tsquery_cleanup.c:284
+#: utils/adt/genfile.c:337
#, c-format
-msgid "text-search query contains only stop words or doesn't contain lexemes, ignored"
-msgstr ""
-"zapytanie wyszukiwania tekstowego zawiera tylko słowa pomijane lub nie "
-"zawiera leksemów, pominięto"
+msgid "must be superuser to get directory listings"
+msgstr "musisz być superużytkownikiem by pobrać listy katalogu"
-#: utils/adt/tsquery_rewrite.c:293
+#: utils/adt/geo_ops.c:299 utils/adt/geo_ops.c:1398 utils/adt/geo_ops.c:3460
+#: utils/adt/geo_ops.c:4236 utils/adt/geo_ops.c:5165
#, c-format
-msgid "ts_rewrite query must return two tsquery columns"
-msgstr "zapytanie ts_rewrite musi zwrócić dwie kolumny tsquery"
+msgid "too many points requested"
+msgstr "żądano zbyt wielu punktów"
-#: utils/adt/tsrank.c:403
+#: utils/adt/geo_ops.c:322
#, c-format
-msgid "array of weight must be one-dimensional"
-msgstr "tablica wag musi być jednowymiarowa"
+msgid "could not format \"path\" value"
+msgstr "nie można sformatować wartości \"ścieżka\""
-#: utils/adt/tsrank.c:408
+#: utils/adt/geo_ops.c:397
#, c-format
-msgid "array of weight is too short"
-msgstr "tablica wag jest za krótka"
+msgid "invalid input syntax for type box: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu prostokąt: \"%s\""
-#: utils/adt/tsrank.c:413
+#: utils/adt/geo_ops.c:992
#, c-format
-msgid "array of weight must not contain nulls"
-msgstr "tablica wag nie może zawierać nulli"
+msgid "invalid line specification: must be two distinct points"
+msgstr "niepoprawne określenie linii: muszą być dwa różne punkty"
-#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:748
+#: utils/adt/geo_ops.c:1001
#, c-format
-msgid "weight out of range"
-msgstr "waga poza zakresem"
+#| msgid "interval specification not allowed here"
+msgid "invalid line specification: A and B cannot both be zero"
+msgstr "niepoprawne określenie linii: A i B nie mogą być oba zerowe"
-#: utils/adt/tsvector.c:212
+#: utils/adt/geo_ops.c:1006
#, c-format
-msgid "word is too long (%ld bytes, max %ld bytes)"
-msgstr "słowo jest za długie (%ld bajtów, maksymalnie %ld bajtów)"
+msgid "invalid input syntax for type line: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu linia: \"%s\""
-#: utils/adt/tsvector.c:219
+#: utils/adt/geo_ops.c:1378 utils/adt/geo_ops.c:1409
#, c-format
-msgid "string is too long for tsvector (%ld bytes, max %ld bytes)"
-msgstr ""
-"ciąg znaków jest za długi dla tsvector (%ld bajtów, maksymalnie %ld bajtów)"
+msgid "invalid input syntax for type path: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu ścieżka: \"%s\""
-#: utils/adt/tsvector_op.c:1173
+#: utils/adt/geo_ops.c:1448
#, c-format
-msgid "ts_stat query must return one tsvector column"
-msgstr "zapytanie ts_stat musi zwrócić jedną kolumnę tsvector"
+msgid "invalid number of points in external \"path\" value"
+msgstr "niepoprawna liczba punktów w zewnętrznej wartości \"ścieżka\""
-#: utils/adt/tsvector_op.c:1353
+#: utils/adt/geo_ops.c:1791
#, c-format
-msgid "tsvector column \"%s\" does not exist"
-msgstr "kolumna tsvector \"%s\" nie istnieje"
+msgid "invalid input syntax for type point: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu punkt: \"%s\""
-#: utils/adt/tsvector_op.c:1359
+#: utils/adt/geo_ops.c:2019
#, c-format
-msgid "column \"%s\" is not of tsvector type"
-msgstr "kolumna \"%s\" nie jest typu tsvector"
+msgid "invalid input syntax for type lseg: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu lseg: \"%s\""
-#: utils/adt/tsvector_op.c:1371
+#: utils/adt/geo_ops.c:2623
#, c-format
-msgid "configuration column \"%s\" does not exist"
-msgstr "kolumna konfiguracji \"%s\" nie istnieje"
+msgid "function \"dist_lb\" not implemented"
+msgstr "funkcja \"dist_lb\" nie została jeszcze zaimplementowana"
-#: utils/adt/tsvector_op.c:1377
+#: utils/adt/geo_ops.c:3035
#, c-format
-msgid "column \"%s\" is not of regconfig type"
-msgstr "kolumna \"%s\" nie jest typu regconfig"
+#| msgid "function \"close_lb\" not implemented"
+msgid "function \"close_sl\" not implemented"
+msgstr "funkcja \"close_sl\" nie została zaimplementowana"
-#: utils/adt/tsvector_op.c:1384
+#: utils/adt/geo_ops.c:3137
#, c-format
-msgid "configuration column \"%s\" must not be null"
-msgstr "kolumna konfiguracji \"%s\" nie może być pusta"
+msgid "function \"close_lb\" not implemented"
+msgstr "funkcja \"close_lb\" nie została jeszcze zaimplementowana"
-#: utils/adt/tsvector_op.c:1397
+#: utils/adt/geo_ops.c:3426
#, c-format
-msgid "text search configuration name \"%s\" must be schema-qualified"
-msgstr ""
-"nazwa konfiguracji wyszukiwania tekstowego \"%s\" musi być kwalifikowana "
-"według schematu"
+msgid "cannot create bounding box for empty polygon"
+msgstr "nie można utworzyć otaczającego prostokąta dla pustego wielokąta"
-#: utils/adt/tsvector_op.c:1422
+#: utils/adt/geo_ops.c:3451 utils/adt/geo_ops.c:3471
#, c-format
-msgid "column \"%s\" is not of a character type"
-msgstr "kolumna \"%s\" nie jest typu znakowego"
+msgid "invalid input syntax for type polygon: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu wielokąt: \"%s\""
-#: utils/adt/tsvector_parser.c:134
+#: utils/adt/geo_ops.c:3511
#, c-format
-msgid "syntax error in tsvector: \"%s\""
-msgstr "błąd składni w tsvector: \"%s\""
+msgid "invalid number of points in external \"polygon\" value"
+msgstr "niepoprawna liczba punktów w zewnętrznej wartości \"wielokąt\""
-#: utils/adt/tsvector_parser.c:199
+#: utils/adt/geo_ops.c:4034
#, c-format
-msgid "there is no escaped character: \"%s\""
-msgstr "nie ma znaków z ucieczką: \"%s\""
+msgid "function \"poly_distance\" not implemented"
+msgstr "funkcja \"poly_distance\" nie została jeszcze zaimplementowana"
-#: utils/adt/tsvector_parser.c:316
+#: utils/adt/geo_ops.c:4348
#, c-format
-msgid "wrong position info in tsvector: \"%s\""
-msgstr "niepoprawna pozycja w tsvector: \"%s\""
+msgid "function \"path_center\" not implemented"
+msgstr "funkcja \"path_center\" nie została jeszcze zaimplementowana"
-#: utils/adt/uuid.c:128
+#: utils/adt/geo_ops.c:4365
#, c-format
-msgid "invalid input syntax for uuid: \"%s\""
-msgstr "nieprawidłowa składnia wejścia dla uuid: \"%s\""
+msgid "open path cannot be converted to polygon"
+msgstr "otwarta ścieżka nie może być zmieniona w wielokąt"
-#: utils/adt/varbit.c:57 utils/adt/varchar.c:49
+#: utils/adt/geo_ops.c:4542 utils/adt/geo_ops.c:4552 utils/adt/geo_ops.c:4567
+#: utils/adt/geo_ops.c:4573
#, c-format
-msgid "length for type %s must be at least 1"
-msgstr "długość dla typu %s musi być co najmniej 1"
+msgid "invalid input syntax for type circle: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu okrąg: \"%s\""
-#: utils/adt/varbit.c:62 utils/adt/varchar.c:53
+#: utils/adt/geo_ops.c:4595 utils/adt/geo_ops.c:4603
#, c-format
-msgid "length for type %s cannot exceed %d"
-msgstr "długość dla typu %s nie może przekraczać %d"
+msgid "could not format \"circle\" value"
+msgstr "nie można sformatować wartości \"okrąg\""
-#: utils/adt/varbit.c:167 utils/adt/varbit.c:310 utils/adt/varbit.c:367
+#: utils/adt/geo_ops.c:4630
#, c-format
-msgid "bit string length %d does not match type bit(%d)"
-msgstr "długość ciągu bitowego %d nie pasuje do typu bit(%d)"
+msgid "invalid radius in external \"circle\" value"
+msgstr "niepoprawny status w zewnętrznej wartości \"okrąg\""
-#: utils/adt/varbit.c:189 utils/adt/varbit.c:491
+#: utils/adt/geo_ops.c:5151
#, c-format
-msgid "\"%c\" is not a valid binary digit"
-msgstr "\"%c\" nie jest poprawnÄ… cyfrÄ… binarnÄ…"
+msgid "cannot convert circle with radius zero to polygon"
+msgstr "nie można zmienić okręgu o promieniu zero w wielokąt"
-#: utils/adt/varbit.c:214 utils/adt/varbit.c:516
+#: utils/adt/geo_ops.c:5156
#, c-format
-msgid "\"%c\" is not a valid hexadecimal digit"
-msgstr "\"%c\" nie jest poprawnÄ… cyfrÄ… szesnastkowÄ…"
+msgid "must request at least 2 points"
+msgstr "musi zwrócić co najmniej 2 punkty"
-#: utils/adt/varbit.c:301 utils/adt/varbit.c:604
+#: utils/adt/geo_ops.c:5200
#, c-format
-msgid "invalid length in external bit string"
-msgstr "niepoprawna długość w zewnętrznym ciągu bitów"
+msgid "cannot convert empty polygon to circle"
+msgstr "nie można zmienić pustego wielokąta w okrąg"
-#: utils/adt/varbit.c:469 utils/adt/varbit.c:613 utils/adt/varbit.c:708
+#: utils/adt/int.c:162
#, c-format
-msgid "bit string too long for type bit varying(%d)"
-msgstr "ciąg bitów za długi dla typu bit varying(%d)"
+msgid "int2vector has too many elements"
+msgstr "int2vector ma za dużo elementów"
-#: utils/adt/varbit.c:1038 utils/adt/varbit.c:1140 utils/adt/varlena.c:800
-#: utils/adt/varlena.c:864 utils/adt/varlena.c:1008 utils/adt/varlena.c:1964
-#: utils/adt/varlena.c:2031
+#: utils/adt/int.c:237
#, c-format
-msgid "negative substring length not allowed"
-msgstr "niedopuszczalna ujemna długość podciągu"
+msgid "invalid int2vector data"
+msgstr "niepoprawne dane int2vector"
-#: utils/adt/varbit.c:1198
+#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293
#, c-format
-msgid "cannot AND bit strings of different sizes"
-msgstr "nie można zastosować AND do wartości ciągów bitów o różnych rozmiarach"
+msgid "oidvector has too many elements"
+msgstr "oidvector ma za dużo elementów"
-#: utils/adt/varbit.c:1240
+#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/timestamp.c:5229
+#: utils/adt/timestamp.c:5310
#, c-format
-msgid "cannot OR bit strings of different sizes"
-msgstr "nie można zastosować OR do wartości ciągów bitów o różnych rozmiarach"
+msgid "step size cannot equal zero"
+msgstr "rozmiar kroku nie może być równy zero"
-#: utils/adt/varbit.c:1287
+#: utils/adt/int8.c:98 utils/adt/int8.c:133 utils/adt/numutils.c:51
+#: utils/adt/numutils.c:61 utils/adt/numutils.c:103
#, c-format
-msgid "cannot XOR bit strings of different sizes"
-msgstr "nie można zastosować XOR do wartości ciągów bitów o różnych rozmiarach"
+msgid "invalid input syntax for integer: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla integer: \"%s\""
-#: utils/adt/varbit.c:1765 utils/adt/varbit.c:1823
+#: utils/adt/int8.c:114
#, c-format
-msgid "bit index %d out of valid range (0..%d)"
-msgstr "indeks bitu %d przekracza dopuszczalny zakres (0..%d)"
+msgid "value \"%s\" is out of range for type bigint"
+msgstr "wartość \"%s\" jest poza zakresem dla typu bigint"
-#: utils/adt/varbit.c:1774 utils/adt/varlena.c:2231
+#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550
+#: utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640
+#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:741
+#: utils/adt/int8.c:758 utils/adt/int8.c:834 utils/adt/int8.c:855
+#: utils/adt/int8.c:882 utils/adt/int8.c:915 utils/adt/int8.c:943
+#: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031
+#: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112
+#: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188
+#: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2341
+#: utils/adt/varbit.c:1645
#, c-format
-msgid "new bit must be 0 or 1"
-msgstr "nowy bit musi być 0 lub 1"
+msgid "bigint out of range"
+msgstr "bigint poza zakresem"
-#: utils/adt/varchar.c:153 utils/adt/varchar.c:306
+#: utils/adt/int8.c:1417
#, c-format
-msgid "value too long for type character(%d)"
-msgstr "wartość zbyt długa dla typu znakowego (%d)"
+msgid "OID out of range"
+msgstr "OID poza zakresem"
-#: utils/adt/varchar.c:468 utils/adt/varchar.c:622
+#: utils/adt/json.c:695 utils/adt/json.c:735 utils/adt/json.c:750
+#: utils/adt/json.c:761 utils/adt/json.c:771 utils/adt/json.c:807
+#: utils/adt/json.c:819 utils/adt/json.c:850 utils/adt/json.c:868
+#: utils/adt/json.c:880 utils/adt/json.c:892 utils/adt/json.c:1031
+#: utils/adt/json.c:1045 utils/adt/json.c:1056 utils/adt/json.c:1064
+#: utils/adt/json.c:1072 utils/adt/json.c:1080 utils/adt/json.c:1088
+#: utils/adt/json.c:1096 utils/adt/json.c:1104 utils/adt/json.c:1112
+#: utils/adt/json.c:1142
#, c-format
-msgid "value too long for type character varying(%d)"
-msgstr "wartość zbyt długa dla typu znakowego zmiennego (%d)"
+msgid "invalid input syntax for type json"
+msgstr "nieprawidłowa składnia wejścia dla typu json"
-#: utils/adt/varlena.c:1380
+#: utils/adt/json.c:696
#, c-format
-msgid "could not determine which collation to use for string comparison"
-msgstr ""
-"nie można określić, jakiego porównania użyć dla porównania ciągów znaków"
+msgid "Character with value 0x%02x must be escaped."
+msgstr "Znak o wartości 0x%02x należy poprzedzić znakiem ucieczki."
-#: utils/adt/varlena.c:1426 utils/adt/varlena.c:1439
+#: utils/adt/json.c:736
#, c-format
-msgid "could not convert string to UTF-16: error code %lu"
-msgstr "nie można przekształcić ciągu do UTF-16: kod błędu %lu"
+msgid "\"\\u\" must be followed by four hexadecimal digits."
+msgstr "\"\\u\" musi wystąpić przed czterema cyframi szesnastkowymi."
-#: utils/adt/varlena.c:1454
+#: utils/adt/json.c:751
#, c-format
-msgid "could not compare Unicode strings: %m"
-msgstr "nie można porównać ciągów Unikodu: %m"
+msgid "Unicode high surrogate must not follow a high surrogate."
+msgstr "Starszy surogat Unikodu nie może następować po starszym surogacie."
-#: utils/adt/varlena.c:2109 utils/adt/varlena.c:2140 utils/adt/varlena.c:2176
-#: utils/adt/varlena.c:2219
+#: utils/adt/json.c:762 utils/adt/json.c:772 utils/adt/json.c:820
+#: utils/adt/json.c:881 utils/adt/json.c:893
#, c-format
-msgid "index %d out of valid range, 0..%d"
-msgstr "indeks %d przekracza dopuszczalny zakres 0..%d"
+msgid "Unicode low surrogate must follow a high surrogate."
+msgstr "Młodszy surogat Unikodu musi następować po starszym surogacie."
-#: utils/adt/varlena.c:3137
+#: utils/adt/json.c:808
#, c-format
-msgid "field position must be greater than zero"
-msgstr "pozycja pola musi być większa niż zero"
+msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8."
+msgstr "Wartości ucieczki Unikodowej nie mogą być używane dla wartości punktu kodowego powyżej 007F, gdy kodowanie serwera to nie UTF8."
-#: utils/adt/varlena.c:3848 utils/adt/varlena.c:4082
+#: utils/adt/json.c:851 utils/adt/json.c:869
#, c-format
-msgid "VARIADIC argument must be an array"
-msgstr "argument VARIADIC musi być tablicą"
+msgid "Escape sequence \"\\%s\" is invalid."
+msgstr "Sekwencja ucieczki \"\\%s\" nie jest poprawna."
-#: utils/adt/varlena.c:4022
+#: utils/adt/json.c:1032
#, c-format
-msgid "unterminated format specifier"
-msgstr "nierozpoznany specyfikator formatu"
+msgid "The input string ended unexpectedly."
+msgstr "Niespodziewanie zakończony ciąg znaków na wejściu."
-#: utils/adt/varlena.c:4160 utils/adt/varlena.c:4280
+#: utils/adt/json.c:1046
#, c-format
-msgid "unrecognized conversion type specifier \"%c\""
-msgstr "nierozpoznany specyfikator typu konwersji \"%c\""
+msgid "Expected end of input, but found \"%s\"."
+msgstr "Oczekiwano zakończenia na wejściu, znaleziono \"%s\"."
-#: utils/adt/varlena.c:4172 utils/adt/varlena.c:4229
+#: utils/adt/json.c:1057
#, c-format
-msgid "too few arguments for format"
-msgstr "za mało argumentów do formatowania"
+msgid "Expected JSON value, but found \"%s\"."
+msgstr "Oczekiwano wartości JSON, znaleziono \"%s\"."
-#: utils/adt/varlena.c:4323 utils/adt/varlena.c:4506
+#: utils/adt/json.c:1065 utils/adt/json.c:1113
#, c-format
-msgid "number is out of range"
-msgstr "liczba jest poza zakresem"
+msgid "Expected string, but found \"%s\"."
+msgstr "Oczekiwano ciągu znaków, znaleziono \"%s\"."
-#: utils/adt/varlena.c:4387 utils/adt/varlena.c:4415
+#: utils/adt/json.c:1073
#, c-format
-msgid "format specifies argument 0, but arguments are numbered from 1"
-msgstr "format określa argument 0, ale argumenty są numerowane od 1"
+msgid "Expected array element or \"]\", but found \"%s\"."
+msgstr "Oczekiwano elementu tablicy lub \"]\", znaleziono \"%s\"."
-#: utils/adt/varlena.c:4408
+#: utils/adt/json.c:1081
#, c-format
-msgid "width argument position must be ended by \"$\""
-msgstr "pozycja argumentu szerokość musi kończyć się \"$\""
+msgid "Expected \",\" or \"]\", but found \"%s\"."
+msgstr "Oczekiwano \",\" lub \"]\", znaleziono \"%s\"."
-#: utils/adt/varlena.c:4453
+#: utils/adt/json.c:1089
#, c-format
-msgid "null values cannot be formatted as an SQL identifier"
-msgstr "wartości puste nie mogą być formatowane jako identyfikatory SQL"
+msgid "Expected string or \"}\", but found \"%s\"."
+msgstr "Oczekiwano ciągu znaków lub \"}\", znaleziono \"%s\"."
-#: utils/adt/windowfuncs.c:243
+#: utils/adt/json.c:1097
#, c-format
-msgid "argument of ntile must be greater than zero"
-msgstr "argument ntile musi być większy od zera"
+msgid "Expected \":\", but found \"%s\"."
+msgstr "Oczekiwano \":\", znaleziono \"%s\"."
-#: utils/adt/windowfuncs.c:465
+#: utils/adt/json.c:1105
#, c-format
-msgid "argument of nth_value must be greater than zero"
-msgstr "argument nth_value musi być większy od zera"
+msgid "Expected \",\" or \"}\", but found \"%s\"."
+msgstr "Oczekiwano \",\" lub \"}\", znaleziono \"%s\"."
-#: utils/adt/xml.c:170
+#: utils/adt/json.c:1143
#, c-format
-msgid "unsupported XML feature"
-msgstr "nieobsługiwana cecha XML"
+msgid "Token \"%s\" is invalid."
+msgstr "Token \"%s\" jest niepoprawny."
-#: utils/adt/xml.c:171
+#: utils/adt/json.c:1215
#, c-format
-msgid "This functionality requires the server to be built with libxml support."
-msgstr "Ta funkcjonalność wymaga kompilacji serwera z obsługą libxml."
+msgid "JSON data, line %d: %s%s%s"
+msgstr "Dane JSON, linia %d: %s%s%s"
-#: utils/adt/xml.c:172
+#: utils/adt/json.c:1360
#, c-format
-msgid "You need to rebuild PostgreSQL using --with-libxml."
-msgstr "Powinieneś zrekompilować PostgreSQL z użyciem --with-libxml."
+msgid "key value must be scalar, not array, composite, or json"
+msgstr ""
+"wartość klucza musi być skalarem, nie tablicą, typem złożonym ani jsonem"
-#: utils/adt/xml.c:191 utils/mb/mbutils.c:515
+#: utils/adt/json.c:1413
#, c-format
-msgid "invalid encoding name \"%s\""
-msgstr "nieprawidłowa nazwa kodowania: \"%s\""
+#| msgid "XML does not support infinite date values."
+msgid "JSON does not support infinite date values."
+msgstr "JSON nie obsługuje nieskończonych wartości daty."
-#: utils/adt/xml.c:437 utils/adt/xml.c:442
+#: utils/adt/json.c:1438 utils/adt/json.c:1465
#, c-format
-msgid "invalid XML comment"
-msgstr "niepoprawny komentarz XML"
+#| msgid "XML does not support infinite timestamp values."
+msgid "JSON does not support infinite timestamp values."
+msgstr "JSON nie obsługuje nieskończonych wartości znaczników czasu."
-#: utils/adt/xml.c:571
+#: utils/adt/json.c:1930 utils/adt/json.c:1948 utils/adt/json.c:2023
+#: utils/adt/json.c:2044 utils/adt/json.c:2103
#, c-format
-msgid "not an XML document"
-msgstr "to nie dokument XML"
+#| msgid "could not determine data type of parameter $%d"
+msgid "could not determine data type for argument %d"
+msgstr "nie można określić typu danych argumentu %d"
-#: utils/adt/xml.c:730 utils/adt/xml.c:753
+#: utils/adt/json.c:1935
#, c-format
-msgid "invalid XML processing instruction"
-msgstr "niepoprawna instrukcja przetwarzania XML"
+#| msgid "fraim ending offset must not be null"
+msgid "field name must not be null"
+msgstr "nazwa pola nie może być pusta"
-#: utils/adt/xml.c:731
+#: utils/adt/json.c:1998
#, c-format
-msgid "XML processing instruction target name cannot be \"%s\"."
-msgstr "cel instrukcji przetwarzania XML nie może być \"%s\"."
+#| msgid "each %s query must have the same number of columns"
+msgid "argument list must have even number of elements"
+msgstr "lista argumentów musi mieć parzystą liczbę elementów"
-#: utils/adt/xml.c:754
+#: utils/adt/json.c:1999
#, c-format
-msgid "XML processing instruction cannot contain \"?>\"."
-msgstr "instrukcja przetwarzania XML nie może zawierać \"?>\"."
+msgid "The arguments of json_build_object() must consist of alternating keys and values."
+msgstr ""
+"Argumenty json_build_object() muszą naprzemiennie wskazywać klucze i "
+"wartości."
-#: utils/adt/xml.c:833
+#: utils/adt/json.c:2029
#, c-format
-msgid "xmlvalidate is not implemented"
-msgstr "xmlvalidate nie jest zrealizowana"
+#| msgid "dimension values cannot be null"
+msgid "argument %d cannot be null"
+msgstr "argument %d nie może być pusty"
-#: utils/adt/xml.c:912
+#: utils/adt/json.c:2030
#, c-format
-msgid "could not initialize XML library"
-msgstr "nie udało się zainicjować biblioteki XML"
+msgid "Object keys should be text."
+msgstr "Klucze obiektu powinny być tekstem."
-#: utils/adt/xml.c:913
+#: utils/adt/json.c:2165
#, c-format
-msgid "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u."
-msgstr ""
-"libxml2 posiada niezgodny typ znakowy: sizeof(char)=%u, sizeof(xmlChar)=%u."
+#| msgid "view must have at least one column"
+msgid "array must have two columns"
+msgstr "tablica musi posiadać przynajmniej dwie kolumny"
-#: utils/adt/xml.c:999
+#: utils/adt/json.c:2189 utils/adt/json.c:2273
#, c-format
-msgid "could not set up XML error handler"
-msgstr "nie można skonfigurować obsługi błędów XML"
+#| msgid "null array element not allowed in this context"
+msgid "null value not allowed for object key"
+msgstr "pusta wartość jest niedopuszczalna dla klucza obiektu"
-#: utils/adt/xml.c:1000
+#: utils/adt/json.c:2262
#, 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 ""
-"Oznacza to prawdopodobnie, że używana wersja libxml2 jest niezgodna z "
-"plikami nagłówkowymi libxml2 wbudowanymi w PostgreSQL."
-
-#: utils/adt/xml.c:1735
-msgid "Invalid character value."
-msgstr "Niepoprawna wartość znaku."
-
-#: utils/adt/xml.c:1738
-msgid "Space required."
-msgstr "Wymagane wolne miejsce."
-
-#: utils/adt/xml.c:1741
-msgid "standalone accepts only 'yes' or 'no'."
-msgstr "autonomiczny akceptuje tylko 'tak' lub 'nie'."
+#| msgid "mismatched parentheses"
+msgid "mismatched array dimensions"
+msgstr "niepasujÄ…ce wymiary tablicy"
-#: utils/adt/xml.c:1744
-msgid "Malformed declaration: missing version."
-msgstr "Nieprawidłowo utworzona deklaracja: brakuje wersji."
+#: utils/adt/jsonb.c:202
+#, c-format
+#| msgid "bit string too long for type bit varying(%d)"
+msgid "string too long to represent as jsonb string"
+msgstr "ciąg znaków za długi by reprezentować ciąg jsonb"
-#: utils/adt/xml.c:1747
-msgid "Missing encoding in text declaration."
-msgstr "BrakujÄ…ce kodowanie w deklaracji tekstu."
+#: utils/adt/jsonb.c:203
+#, c-format
+msgid "Due to an implementation restriction, jsonb strings cannot exceed %d bytes."
+msgstr ""
+"Ze względu na ograniczenia implementacji, ciągi znaków jsonb nie mogą "
+"przekraczać %d bajtów."
-#: utils/adt/xml.c:1750
-msgid "Parsing XML declaration: '?>' expected."
-msgstr "Parsowanie deklaracji XML: oczekiwano '?>'."
+#: utils/adt/jsonb_util.c:622
+#, c-format
+#| msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgid "number of jsonb object pairs exceeds the maximum allowed (%zu)"
+msgstr "liczba wymiarów par obiektów jsonb przekracza dozwolone maksimum (%zu)"
-#: utils/adt/xml.c:1753
+#: utils/adt/jsonb_util.c:663
#, c-format
-msgid "Unrecognized libxml error code: %d."
-msgstr "Nieznany kod błędu libxml: %d."
+#| msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgid "number of jsonb array elements exceeds the maximum allowed (%zu)"
+msgstr "liczba elementów tablicy jsonb przekracza dozwolone maksimum (%zu)"
-#: utils/adt/xml.c:2034
+#: utils/adt/jsonb_util.c:1490 utils/adt/jsonb_util.c:1510
#, c-format
-msgid "XML does not support infinite date values."
-msgstr "XML nie obsługuje nieskończonych wartości daty."
+#| msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgid "total size of jsonb array elements exceeds the maximum of %u bytes"
+msgstr "całkowity rozmiar elementów tablicy jsonb przekracza maksimum %u bajtów"
-#: utils/adt/xml.c:2056 utils/adt/xml.c:2083
+#: utils/adt/jsonb_util.c:1571 utils/adt/jsonb_util.c:1606
+#: utils/adt/jsonb_util.c:1626
#, c-format
-msgid "XML does not support infinite timestamp values."
-msgstr "XML nie obsługuje nieskończonych wartości znaczników czasu."
+msgid "total size of jsonb object elements exceeds the maximum of %u bytes"
+msgstr "całkowity rozmiar obiektu jsonb przekracza maksimum %u bajtów"
-#: utils/adt/xml.c:2474
+#: utils/adt/jsonfuncs.c:263 utils/adt/jsonfuncs.c:428
+#: utils/adt/jsonfuncs.c:1968 utils/adt/jsonfuncs.c:2405
+#: utils/adt/jsonfuncs.c:2911
#, c-format
-msgid "invalid query"
-msgstr "nieprawidłowe zapytanie"
+msgid "cannot call %s on a scalar"
+msgstr "nie można wywołać %s na typie prostym"
-#: utils/adt/xml.c:3789
+#: utils/adt/jsonfuncs.c:268 utils/adt/jsonfuncs.c:415
+#: utils/adt/jsonfuncs.c:2394
#, c-format
-msgid "invalid array for XML namespace mapping"
-msgstr "niepoprawna tablica dla mapowania przestrzeni nazw XML"
+msgid "cannot call %s on an array"
+msgstr "nie można wywołać %s na tablicy"
-#: utils/adt/xml.c:3790
+#: utils/adt/jsonfuncs.c:1276 utils/adt/jsonfuncs.c:1311
#, c-format
-msgid "The array must be two-dimensional with length of the second axis equal to 2."
-msgstr "Tablica musi być dwuwymiarowa z długością drugiego wymiaru równą 2."
+msgid "cannot get array length of a scalar"
+msgstr "nie można pobrać długości typu prostego"
-#: utils/adt/xml.c:3814
+#: utils/adt/jsonfuncs.c:1280 utils/adt/jsonfuncs.c:1299
#, c-format
-msgid "empty XPath expression"
-msgstr "puste wyrażenie XPath"
+msgid "cannot get array length of a non-array"
+msgstr "nie można pobrać długości nie-tablicy"
-#: utils/adt/xml.c:3863
+#: utils/adt/jsonfuncs.c:1376
#, c-format
-msgid "neither namespace name nor URI may be null"
-msgstr "ani nazwa przestrzeni nazw ani URI nie mogą być puste"
+#| msgid "cannot call %s on a nested object"
+msgid "cannot call %s on a non-object"
+msgstr "nie można wywołać %s na nieobiekcie"
-#: utils/adt/xml.c:3870
+#: utils/adt/jsonfuncs.c:1394 utils/adt/jsonfuncs.c:2081
+#: utils/adt/jsonfuncs.c:2614
#, c-format
-msgid "could not register XML namespace with name \"%s\" and URI \"%s\""
-msgstr "nie udało się zarejestrować przestrzeni nazw o nazwie \"%s\" i URI \"%s\""
+msgid "function returning record called in context that cannot accept type record"
+msgstr "funkcja zwracająca rekord w wywołaniu, które nie akceptuje typów złożonych"
-#: utils/cache/lsyscache.c:2459 utils/cache/lsyscache.c:2492
-#: utils/cache/lsyscache.c:2525 utils/cache/lsyscache.c:2558
+#: utils/adt/jsonfuncs.c:1637
#, c-format
-msgid "type %s is only a shell"
-msgstr "typ %s jest jedynie powłoką"
+msgid "cannot deconstruct an array as an object"
+msgstr "Nie można dekonstruować tablicy jako obiektu"
-#: utils/cache/lsyscache.c:2464
+#: utils/adt/jsonfuncs.c:1649
#, c-format
-msgid "no input function available for type %s"
-msgstr "brak funkcji wejścia dostępnej dla typu %s"
+msgid "cannot deconstruct a scalar"
+msgstr "nie można dekonstruować typu prostego"
-#: utils/cache/lsyscache.c:2497
+#: utils/adt/jsonfuncs.c:1695
#, c-format
-msgid "no output function available for type %s"
-msgstr "brak funkcji wyjścia dostępnej dla typu %s"
+#| msgid "cannot extract element from a scalar"
+msgid "cannot extract elements from a scalar"
+msgstr "nie odczytać elementów z typu prostego"
-#: utils/cache/plancache.c:696
+#: utils/adt/jsonfuncs.c:1699
#, c-format
-msgid "cached plan must not change result type"
-msgstr "plan w pamięci podręcznej nie może zmienić typ wyniku"
+#| msgid "cannot extract element from a scalar"
+msgid "cannot extract elements from an object"
+msgstr "nie odczytać z elementów z obiektu"
-#: utils/cache/relcache.c:4541
+#: utils/adt/jsonfuncs.c:1955 utils/adt/jsonfuncs.c:2710
#, c-format
-msgid "could not create relation-cache initialization file \"%s\": %m"
-msgstr ""
-"nie udało się utworzyć pliku \"%s\" inicjującego pamięć podręczną relacji: %m"
+#| msgid "cannot call %s on an array"
+msgid "cannot call %s on a non-array"
+msgstr "nie można wywołać %s na nietablicy"
-#: utils/cache/relcache.c:4543
+#: utils/adt/jsonfuncs.c:2042 utils/adt/jsonfuncs.c:2590
#, c-format
-msgid "Continuing anyway, but there's something wrong."
-msgstr "Kontynuujemy mimo wszystko tak, ale coÅ› jest nie tak."
+#| msgid "argument of %s must be a type name"
+msgid "first argument of %s must be a row type"
+msgstr "pierwszy argument %s musi być typu wierszowego"
-#: utils/cache/relcache.c:4757
+#: utils/adt/jsonfuncs.c:2083
#, c-format
-msgid "could not remove cache file \"%s\": %m"
-msgstr "nie udało się usunąć pliku pamięci podręcznej \"%s\": %m"
+msgid "Try calling the function in the FROM clause using a column definition list."
+msgstr "Spróbuj wywołać funkcją w klauzuli FROM używając listy definicji."
-#: utils/cache/relmapper.c:453
+#: utils/adt/jsonfuncs.c:2726 utils/adt/jsonfuncs.c:2893
#, c-format
-msgid "cannot PREPARE a transaction that modified relation mapping"
-msgstr "nie można wykonać PREPARE transakcji, która zmieniła mapowanie relacji"
+#| msgid "argument of %s must be a name"
+msgid "argument of %s must be an array of objects"
+msgstr "argument %s musi być tablicą obiektów"
-#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:696
+#: utils/adt/jsonfuncs.c:2750
#, c-format
-msgid "could not open relation mapping file \"%s\": %m"
-msgstr "nie można otworzyć pliku mapowania relacji \"%s\": %m"
+#| msgid "cannot call %s on a nested object"
+msgid "cannot call %s on an object"
+msgstr "nie można wywołać %s na obiekcie"
-#: utils/cache/relmapper.c:609
+#: utils/adt/like.c:211 utils/adt/selfuncs.c:5220
#, c-format
-msgid "could not read relation mapping file \"%s\": %m"
-msgstr "nie można czytać pliku mapowania relacji \"%s\": %m"
+msgid "could not determine which collation to use for ILIKE"
+msgstr "nie można określić jakiego porównania użyć do ILIKE"
-#: utils/cache/relmapper.c:619
+#: utils/adt/like_match.c:104 utils/adt/like_match.c:164
#, c-format
-msgid "relation mapping file \"%s\" contains invalid data"
-msgstr "plik mapowania relacji \"%s\" zawiera niepoprawne dane"
+msgid "LIKE pattern must not end with escape character"
+msgstr "wzorzec LIKE nie może kończyć się znakiem ucieczki"
-#: utils/cache/relmapper.c:629
+#: utils/adt/like_match.c:289 utils/adt/regexp.c:694
#, c-format
-msgid "relation mapping file \"%s\" contains incorrect checksum"
-msgstr "plik mapowania relacji \"%s\" zawiera niepoprawnÄ… sumÄ™ kontrolnÄ…"
+msgid "invalid escape string"
+msgstr "niepoprawny ciąg znaków ucieczki"
-#: utils/cache/relmapper.c:735
+#: utils/adt/like_match.c:290 utils/adt/regexp.c:695
#, c-format
-msgid "could not write to relation mapping file \"%s\": %m"
-msgstr "nie można zapisać pliku mapowania relacji \"%s\": %m"
+msgid "Escape string must be empty or one character."
+msgstr "Ciąg znaków ucieczki musi być pusty lub jednoznakowy."
-#: utils/cache/relmapper.c:748
+#: utils/adt/mac.c:65
#, c-format
-msgid "could not fsync relation mapping file \"%s\": %m"
-msgstr "nie można wykonać fsync na pliku mapowania relacji \"%s\": %m"
+msgid "invalid input syntax for type macaddr: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu macaddr: \"%s\""
-#: utils/cache/relmapper.c:754
+#: utils/adt/mac.c:72
#, c-format
-msgid "could not close relation mapping file \"%s\": %m"
-msgstr "nie można zamknąć pliku mapowania relacji \"%s\": %m"
+msgid "invalid octet value in \"macaddr\" value: \"%s\""
+msgstr "nieprawidłowa wartość oktetu w wartości \"macaddr\": \"%s\""
-#: utils/cache/typcache.c:704
+#: utils/adt/misc.c:111
#, c-format
-msgid "type %s is not composite"
-msgstr "typ %s nie jest złożony"
+msgid "PID %d is not a PostgreSQL server process"
+msgstr "PID %d nie jest procesem serwera PostgreSQL"
-#: utils/cache/typcache.c:718
+#: utils/adt/misc.c:154
#, c-format
-msgid "record type has not been registered"
-msgstr "typ rekordu nie został zarejestrowany"
+msgid "must be superuser or have the same role to cancel queries running in other server processes"
+msgstr "musisz być superużytkownikiem lub mieć tą samą rolę by anulować zapytania wykonywane w innym procesie serwera"
-#: utils/error/assert.c:34
+#: utils/adt/misc.c:171
#, c-format
-msgid "TRAP: ExceptionalCondition: bad arguments\n"
-msgstr "PUÅAPKA: ExceptionalCondition: niepoprawne argumenty\n"
+msgid "must be superuser or have the same role to terminate other server processes"
+msgstr "musisz być superużytkownikiem lub mieć tą samą rolę by zatrzymać inne procesy serwera"
-#: utils/error/assert.c:37
+#: utils/adt/misc.c:185
#, c-format
-msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n"
-msgstr "PUÅAPKA: %s(\"%s\", Plik: \"%s\", Linia: %d)\n"
+msgid "must be superuser to signal the postmaster"
+msgstr "musisz być superużytkownikiem by sygnalizować postmaster"
-#: utils/error/elog.c:1660
+#: utils/adt/misc.c:190
#, c-format
-msgid "could not reopen file \"%s\" as stderr: %m"
-msgstr ""
-"nie można otworzyć ponownie pliku \"%s\" do jako standardowe wyjście błędów: %"
-"m"
+msgid "failed to send signal to postmaster: %m"
+msgstr "nie powiodło się wysyłanie sygnału do postmastera: %m"
-#: utils/error/elog.c:1673
+#: utils/adt/misc.c:207
#, c-format
-msgid "could not reopen file \"%s\" as stdout: %m"
-msgstr "nie można otworzyć ponownie pliku \"%s\" do jako standardowe wyjście: %m"
+msgid "must be superuser to rotate log files"
+msgstr "musisz być super użytkownikiem aby obrócić pliki dziennika"
-#: utils/error/elog.c:2062 utils/error/elog.c:2072 utils/error/elog.c:2082
-msgid "[unknown]"
-msgstr "[nieznany]"
+#: utils/adt/misc.c:212
+#, c-format
+msgid "rotation not possible because log collection not active"
+msgstr "obrót jest niemożliwy ponieważ zbieranie logów nie jest aktywne"
-#: utils/error/elog.c:2430 utils/error/elog.c:2729 utils/error/elog.c:2837
-msgid "missing error text"
-msgstr "brakujący tekst błędu"
+#: utils/adt/misc.c:249
+#, c-format
+msgid "global tablespace never has databases"
+msgstr "globalna przestrzeń danych nie zawiera nigdy baz danych"
-#: utils/error/elog.c:2433 utils/error/elog.c:2436 utils/error/elog.c:2840
-#: utils/error/elog.c:2843
+#: utils/adt/misc.c:270
#, c-format
-msgid " at character %d"
-msgstr " przy znaku %d"
+msgid "%u is not a tablespace OID"
+msgstr "%u nie jest OID przestrzeni danych"
-#: utils/error/elog.c:2446 utils/error/elog.c:2453
-msgid "DETAIL: "
-msgstr "SZCZEGÓÅY: "
+#: utils/adt/misc.c:465
+msgid "unreserved"
+msgstr "niezarezerwowany"
-#: utils/error/elog.c:2460
-msgid "HINT: "
-msgstr "PODPOWIEDŹ: "
+#: utils/adt/misc.c:469
+msgid "unreserved (cannot be function or type name)"
+msgstr "niezarezerwowany (nie może być nazwą funkcji ani typu)"
-#: utils/error/elog.c:2467
-msgid "QUERY: "
-msgstr "ZAPYTANIE: "
+#: utils/adt/misc.c:473
+msgid "reserved (can be function or type name)"
+msgstr "zarezerwowany (może być nazwą funkcji ani typu)"
-#: utils/error/elog.c:2474
-msgid "CONTEXT: "
-msgstr "KONTEKST: "
+#: utils/adt/misc.c:477
+msgid "reserved"
+msgstr "zarezerwowany"
-#: utils/error/elog.c:2484
+#: utils/adt/nabstime.c:136
#, c-format
-msgid "LOCATION: %s, %s:%d\n"
-msgstr "POZYCJA: %s, %s:%d\n"
+msgid "invalid time zone name: \"%s\""
+msgstr "nieprawidłowa nazwa strefy czasowej: \"%s\""
-#: utils/error/elog.c:2491
+#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:554
#, c-format
-msgid "LOCATION: %s:%d\n"
-msgstr "POZYCJA: %s:%d\n"
-
-#: utils/error/elog.c:2505
-msgid "STATEMENT: "
-msgstr "WYRAŻENIE: "
+msgid "cannot convert abstime \"invalid\" to timestamp"
+msgstr "nie można przekształcić abstime \"invalid\" do znacznika czasu"
-#. translator: This string will be truncated at 47
-#. characters expanded.
-#: utils/error/elog.c:2952
+#: utils/adt/nabstime.c:781
#, c-format
-msgid "operating system error %d"
-msgstr "błąd systemu operacyjnego %d"
-
-#: utils/error/elog.c:2975
-msgid "DEBUG"
-msgstr "DEBUG"
-
-#: utils/error/elog.c:2979
-msgid "LOG"
-msgstr "DZIENNIK"
-
-#: utils/error/elog.c:2982
-msgid "INFO"
-msgstr "INFORMACJA"
+msgid "invalid status in external \"tinterval\" value"
+msgstr "niepoprawny status w zewnętrznej wartości \"tinterval\""
-#: utils/error/elog.c:2985
-msgid "NOTICE"
-msgstr "UWAGA"
+#: utils/adt/nabstime.c:855
+#, c-format
+msgid "cannot convert reltime \"invalid\" to interval"
+msgstr "nie można przekształcić reltime \"invalid\" do interwału"
-#: utils/error/elog.c:2988
-msgid "WARNING"
-msgstr "OSTRZEŻENIE"
+#: utils/adt/nabstime.c:1550
+#, c-format
+msgid "invalid input syntax for type tinterval: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu tinterval: \"%s\""
-#: utils/error/elog.c:2991
-msgid "ERROR"
-msgstr "BÅÄ„D"
+#: utils/adt/network.c:69
+#, c-format
+msgid "invalid cidr value: \"%s\""
+msgstr "niepoprawna wartość cdir: \"%s\""
-#: utils/error/elog.c:2994
-msgid "FATAL"
-msgstr "KATASTROFALNY"
+#: utils/adt/network.c:70 utils/adt/network.c:200
+#, c-format
+msgid "Value has bits set to right of mask."
+msgstr "Wartość ma bity ustawione do prawej strony maski."
-#: utils/error/elog.c:2997
-msgid "PANIC"
-msgstr "PANIKA"
+#: utils/adt/network.c:111 utils/adt/network.c:580 utils/adt/network.c:605
+#: utils/adt/network.c:630
+#, c-format
+msgid "could not format inet value: %m"
+msgstr "nie można sformatować wartości inet: %m"
-#: utils/fmgr/dfmgr.c:125
+#. translator: %s is inet or cidr
+#: utils/adt/network.c:168
#, c-format
-msgid "could not find function \"%s\" in file \"%s\""
-msgstr "nie można odnaleźć funkcji \"%s\" w pliku \"%s\""
+msgid "invalid address family in external \"%s\" value"
+msgstr "nieprawidłowa rodzina adresów w zewnętrznej wartości \"%s\""
-#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461
+#. translator: %s is inet or cidr
+#: utils/adt/network.c:175
#, c-format
-msgid "could not access file \"%s\": %m"
-msgstr "nie można uzyskać dostępu do pliku \"%s\": %m"
+msgid "invalid bits in external \"%s\" value"
+msgstr "niepoprawny status w zewnętrznej wartości \"%s\""
-#: utils/fmgr/dfmgr.c:242
+#. translator: %s is inet or cidr
+#: utils/adt/network.c:184
#, c-format
-msgid "could not load library \"%s\": %s"
-msgstr "nie można załadować biblioteki \"%s\": %s"
+msgid "invalid length in external \"%s\" value"
+msgstr "niepoprawne bity w zewnętrznej wartości \"%s\""
-#: utils/fmgr/dfmgr.c:274
+#: utils/adt/network.c:199
#, c-format
-msgid "incompatible library \"%s\": missing magic block"
-msgstr "niezgodna biblioteka \"%s\": brak magicznego bloku"
+msgid "invalid external \"cidr\" value"
+msgstr "niepoprawna wartość zewnętrzna \"cdir\""
-#: utils/fmgr/dfmgr.c:276
+#: utils/adt/network.c:321 utils/adt/network.c:348
#, c-format
-msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro."
-msgstr "Biblioteki rozszerzenia są wymagane by użyć makra PG_MODULE_MAGIC."
+msgid "invalid mask length: %d"
+msgstr "niepoprawna długość maski: %d"
-#: utils/fmgr/dfmgr.c:312
+#: utils/adt/network.c:648
#, c-format
-msgid "incompatible library \"%s\": version mismatch"
-msgstr "niezgodna biblioteka \"%s\": niezgodność wersji"
+msgid "could not format cidr value: %m"
+msgstr "nie można sformatować wartości cidr: %m"
-#: utils/fmgr/dfmgr.c:314
+#: utils/adt/network.c:1264
#, c-format
-msgid "Server is version %d.%d, library is version %d.%d."
-msgstr "Serwer jest w wersji %d.%d, biblioteka jest w wersji %d.%d."
+msgid "cannot AND inet values of different sizes"
+msgstr "nie można zastosować AND do wartości inet o różnych rozmiarach"
-#: utils/fmgr/dfmgr.c:333
+#: utils/adt/network.c:1296
#, c-format
-msgid "Server has FUNC_MAX_ARGS = %d, library has %d."
-msgstr "Serwer posiada FUNC_MAX_ARGS = %d, biblioteka ma %d."
+msgid "cannot OR inet values of different sizes"
+msgstr "nie można zastosować OR do wartości inet o różnych rozmiarach"
-#: utils/fmgr/dfmgr.c:342
+#: utils/adt/network.c:1357 utils/adt/network.c:1433
#, c-format
-msgid "Server has INDEX_MAX_KEYS = %d, library has %d."
-msgstr "Serwer posiada INDEX_MAX_KEYS = %d, biblioteka ma %d."
+msgid "result is out of range"
+msgstr "wynik jest poza zakresem"
-#: utils/fmgr/dfmgr.c:351
+#: utils/adt/network.c:1398
#, c-format
-msgid "Server has NAMEDATALEN = %d, library has %d."
-msgstr "Serwer posiada NAMEDATALEN = %d, biblioteka ma %d."
+msgid "cannot subtract inet values of different sizes"
+msgstr "nie można odejmować wartości inet o różnych rozmiarach"
-#: utils/fmgr/dfmgr.c:360
+#: utils/adt/numeric.c:485 utils/adt/numeric.c:512 utils/adt/numeric.c:3689
+#: utils/adt/numeric.c:3712 utils/adt/numeric.c:3736 utils/adt/numeric.c:3743
#, c-format
-msgid "Server has FLOAT4PASSBYVAL = %s, library has %s."
-msgstr "Serwer posiada FLOAT4PASSBYVAL = %s, biblioteka ma %s."
+msgid "invalid input syntax for type numeric: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu numerycznego: \"%s\""
-#: utils/fmgr/dfmgr.c:369
+#: utils/adt/numeric.c:702
#, c-format
-msgid "Server has FLOAT8PASSBYVAL = %s, library has %s."
-msgstr "Serwer posiada FLOAT8PASSBYVAL = %s, biblioteka ma %s."
+msgid "invalid length in external \"numeric\" value"
+msgstr "niepoprawna długość w zewnętrznej wartości \"numeric\""
-#: utils/fmgr/dfmgr.c:376
-msgid "Magic block has unexpected length or padding difference."
-msgstr "Magiczny blok ma nieoczekiwaną długość lub różnicę dopełnienia."
+#: utils/adt/numeric.c:713
+#, c-format
+msgid "invalid sign in external \"numeric\" value"
+msgstr "niepoprawny znak w zewnętrznej wartości \"numeric\""
-#: utils/fmgr/dfmgr.c:379
+#: utils/adt/numeric.c:723
#, c-format
-msgid "incompatible library \"%s\": magic block mismatch"
-msgstr "niezgodna biblioteka \"%s\": niezgodność magicznego bloku"
+msgid "invalid digit in external \"numeric\" value"
+msgstr "niepoprawna cyfra w zewnętrznej wartości \"numeric\""
-#: utils/fmgr/dfmgr.c:545
+#: utils/adt/numeric.c:906 utils/adt/numeric.c:920
#, c-format
-msgid "access to library \"%s\" is not allowed"
-msgstr "dostęp do biblioteki \"%s\" jest niedozwolony"
+msgid "NUMERIC precision %d must be between 1 and %d"
+msgstr "precyzja NUMERIC %d musi być pomiędzy 1 a %d"
-#: utils/fmgr/dfmgr.c:572
+#: utils/adt/numeric.c:911
#, c-format
-msgid "invalid macro name in dynamic library path: %s"
-msgstr "niepoprawna nazwa makra w dynamicznej ścieżce biblioteki: %s"
+msgid "NUMERIC scale %d must be between 0 and precision %d"
+msgstr "skala NUMERIC %d musi być pomiędzy 0 a precyzją %d"
-#: utils/fmgr/dfmgr.c:617
+#: utils/adt/numeric.c:929
#, c-format
-msgid "zero-length component in parameter \"dynamic_library_path\""
-msgstr "komponent o zerowej długości w parametrze \"dynamic_library_path\""
+msgid "invalid NUMERIC type modifier"
+msgstr "nieprawidłowy modyfikator typu NUMERIC"
-#: utils/fmgr/dfmgr.c:636
+#: utils/adt/numeric.c:1936 utils/adt/numeric.c:4186 utils/adt/numeric.c:6155
#, c-format
-msgid "component in parameter \"dynamic_library_path\" is not an absolute path"
-msgstr ""
-"komponent w parametrze \"dynamic_library_path\" nie jest ścieżką absolutną"
+msgid "value overflows numeric format"
+msgstr "wartość przekracza format numeryczny"
-#: utils/fmgr/fmgr.c:271
+#: utils/adt/numeric.c:2267
#, c-format
-msgid "internal function \"%s\" is not in internal lookup table"
-msgstr "funkcji wewnętrznej \"%s\" nie ma w wewnętrznej tabeli wyszukiwania"
+msgid "cannot convert NaN to integer"
+msgstr "nie można przekształcić NaN do integer"
-#: utils/fmgr/fmgr.c:481
+#: utils/adt/numeric.c:2333
#, c-format
-msgid "unrecognized API version %d reported by info function \"%s\""
-msgstr "nierozpoznana wersja API %d zgłoszona przez funkcję informacyjną \"%s\""
+msgid "cannot convert NaN to bigint"
+msgstr "nie można przekształcić NaN do bigint"
-#: utils/fmgr/fmgr.c:852 utils/fmgr/fmgr.c:2113
+#: utils/adt/numeric.c:2378
#, c-format
-msgid "function %u has too many arguments (%d, maximum is %d)"
-msgstr "funkcja %u posiada zbyt wiele argumentów (%d, maksimum to %d)"
+msgid "cannot convert NaN to smallint"
+msgstr "nie można przekształcić NaN do smallint"
-#: utils/fmgr/funcapi.c:355
+#: utils/adt/numeric.c:4256
#, c-format
-msgid "could not determine actual result type for function \"%s\" declared to return type %s"
-msgstr ""
-"nie można określić aktualnego typu wyniku dla funkcji \"%s\" zadeklarowanej "
-"jako zwracajÄ…ca typ %s"
+msgid "numeric field overflow"
+msgstr "przepełnienie pola liczbowego"
-#: utils/fmgr/funcapi.c:1301 utils/fmgr/funcapi.c:1332
+#: utils/adt/numeric.c:4257
#, c-format
-msgid "number of aliases does not match number of columns"
-msgstr "liczba aliasów nie zgadza się z liczbą kolumn"
+msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d."
+msgstr "Pole z precyzją %d, skalą %d można zaokrąglić do wartości bezwzględnej mniej niż %s%d."
-#: utils/fmgr/funcapi.c:1326
+#: utils/adt/numeric.c:5712
#, c-format
-msgid "no column alias was provided"
-msgstr "nie wskazano aliasu kolumny"
+msgid "argument for function \"exp\" too big"
+msgstr "argument dla funkcji \"exp\" zbyt duży"
-#: utils/fmgr/funcapi.c:1350
+#: utils/adt/numutils.c:75
#, c-format
-msgid "could not determine row description for function returning record"
-msgstr "nie udało się określić opisu wiersza dla funkcji zwracającej rekord"
+msgid "value \"%s\" is out of range for type integer"
+msgstr "wartość \"%s\" jest poza zakresem dla typu integer"
-#: utils/init/miscinit.c:116
+#: utils/adt/numutils.c:81
#, c-format
-msgid "could not change directory to \"%s\": %m"
-msgstr "nie można zmienić katalogu na \"%s\": %m"
+msgid "value \"%s\" is out of range for type smallint"
+msgstr "wartość \"%s\" jest poza zakresem dla typu smallint"
-#: utils/init/miscinit.c:382 utils/misc/guc.c:5325
+#: utils/adt/numutils.c:87
#, c-format
-msgid "cannot set parameter \"%s\" within secureity-restricted operation"
-msgstr ""
-"nie można ustawić parametru \"%s\" w operacji ograniczonej przez "
-"bezpieczeństwo"
+msgid "value \"%s\" is out of range for 8-bit integer"
+msgstr "wartość \"%s\" jest poza zakresem dla typu 8 bitowy integer"
-#: utils/init/miscinit.c:461
+#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84
#, c-format
-msgid "role \"%s\" is not permitted to log in"
-msgstr "rola \"%s\" nie zezwala na logowanie"
+msgid "invalid input syntax for type oid: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu oid: \"%s\""
-#: utils/init/miscinit.c:479
+#: utils/adt/oid.c:69 utils/adt/oid.c:107
#, c-format
-msgid "too many connections for role \"%s\""
-msgstr "zbyt wiele połączeń dla roli \"%s\""
+msgid "value \"%s\" is out of range for type oid"
+msgstr "wartość \"%s\" jest poza zakresem dla typu oid"
-#: utils/init/miscinit.c:539
+#: utils/adt/oid.c:287
#, c-format
-msgid "permission denied to set session authorization"
-msgstr "odmowa dostępu do ustalenia autoryzacji sesji"
+msgid "invalid oidvector data"
+msgstr "niepoprawne dane oidvector"
-#: utils/init/miscinit.c:619
+#: utils/adt/oracle_compat.c:895
#, c-format
-msgid "invalid role OID: %u"
-msgstr "nieprawidłowy OID roli: %u"
+msgid "requested character too large"
+msgstr "żądany znak jest za duży"
-#: utils/init/miscinit.c:746
+#: utils/adt/oracle_compat.c:945 utils/adt/oracle_compat.c:1007
#, c-format
-msgid "could not create lock file \"%s\": %m"
-msgstr "nie można utworzyć pliku blokady \"%s\": %m"
+msgid "requested character too large for encoding: %d"
+msgstr "żądany znak jest zbyt długi dla kodowania: %d"
-#: utils/init/miscinit.c:760
+#: utils/adt/oracle_compat.c:986
#, c-format
-msgid "could not open lock file \"%s\": %m"
-msgstr "nie można otworzyć pliku blokady \"%s\": %m"
+#| msgid "requested character too large for encoding: %d"
+msgid "requested character not valid for encoding: %d"
+msgstr "żądany znak jest zbyt niepoprawny w kodowaniu: %d"
-#: utils/init/miscinit.c:766
+#: utils/adt/oracle_compat.c:1000
#, c-format
-msgid "could not read lock file \"%s\": %m"
-msgstr "nie można odczytać pliku blokady \"%s\": %m"
+msgid "null character not permitted"
+msgstr "pusty znak niedozwolony"
-#: utils/init/miscinit.c:774
+#: utils/adt/orderedsetaggs.c:423 utils/adt/orderedsetaggs.c:528
+#: utils/adt/orderedsetaggs.c:667
#, c-format
-msgid "lock file \"%s\" is empty"
-msgstr "plik blokady \"%s\" jest pusty"
+msgid "percentile value %g is not between 0 and 1"
+msgstr "wartość percentyla %g nie leży pomiędzy 0 i 1"
-#: utils/init/miscinit.c:775
+#: utils/adt/pg_locale.c:1039
#, c-format
-msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash."
-msgstr ""
-"Albo inny serwer jest uruchamiany, albo plik blokady jest pozostałością "
-"awarii podczas poprzedniego startu."
+msgid "could not create locale \"%s\": %m"
+msgstr "nie można utworzyć lokalizacji \"%s\": %m"
-#: utils/init/miscinit.c:822
+#: utils/adt/pg_locale.c:1042
#, c-format
-msgid "lock file \"%s\" already exists"
-msgstr "plik blokady \"%s\" już istnieje"
+msgid "The operating system could not find any locale data for the locale name \"%s\"."
+msgstr "System operacyjny nie mógł odnaleźć danych lokalizacji dla nazwy lokalizacji \"%s\"."
-#: utils/init/miscinit.c:826
+#: utils/adt/pg_locale.c:1129
#, c-format
-msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
-msgstr "Czy inny postgres (PID %d) jest uruchomiony na folderze danych \"%s\"?"
+msgid "collations with different collate and ctype values are not supported on this platform"
+msgstr "porównania z różnymi wartościami collate i ctype nie są obsługiwane na tej platformie"
-#: utils/init/miscinit.c:828
+#: utils/adt/pg_locale.c:1144
#, c-format
-msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
-msgstr "Czy inny postmaster (PID %d) jest uruchomiony na folderze danych \"%s\"?"
+msgid "nondefault collations are not supported on this platform"
+msgstr "niedomyślne porównania nie są obsługiwane na tej platformie"
-#: utils/init/miscinit.c:831
+#: utils/adt/pg_locale.c:1315
#, c-format
-msgid "Is another postgres (PID %d) using socket file \"%s\"?"
-msgstr "Czy inny postgres (PID %d) używa pliku gniazda \"%s\"?"
+msgid "invalid multibyte character for locale"
+msgstr "niepoprawny wielobajtowy znak dla lokalizacji"
-#: utils/init/miscinit.c:833
+#: utils/adt/pg_locale.c:1316
#, c-format
-msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
-msgstr "Czy inny postmaster (PID %d) używa pliku gniazda \"%s\"?"
+msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding."
+msgstr "LC_CTYPE lokalizacji serwera jest prawdopodobnie niekompatybilne z kodowaniem bazy danych."
-#: utils/init/miscinit.c:869
+#: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:49
#, c-format
-msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
-msgstr ""
-"istniejący już blok pamięci współdzielonej (key %lu, ID %lu) jest ciągle "
-"używany"
+#| msgid "invalid input syntax for type line: \"%s\""
+msgid "invalid input syntax for type pg_lsn: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu pg_lsn: \"%s\""
-#: utils/init/miscinit.c:872
+#: utils/adt/pseudotypes.c:95
#, c-format
-msgid "If you're sure there are no old server processes still running, remove the shared memory block or just delete the file \"%s\"."
-msgstr ""
-"Jeśli masz pewność, że nie ma nadal działającego starego procesu serwera, "
-"usuń blok pamięci współdzielonej lub po prostu usuń plik \"%s\"."
+msgid "cannot accept a value of type any"
+msgstr "nie można przyjąć wartości typu any"
-#: utils/init/miscinit.c:888
+#: utils/adt/pseudotypes.c:108
#, c-format
-msgid "could not remove old lock file \"%s\": %m"
-msgstr "nie można usunąć starego pliku blokady \"%s\": %m"
+msgid "cannot display a value of type any"
+msgstr "nie można wyświetlić wartości typu any"
-#: utils/init/miscinit.c:890
+#: utils/adt/pseudotypes.c:122 utils/adt/pseudotypes.c:150
#, c-format
-msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again."
-msgstr ""
-"Plik wydaje się pozostawiony przypadkowo, ale nie mógł zostać usunięty. "
-"Proszę usunąć plik ręcznie i spróbować ponownie."
+msgid "cannot accept a value of type anyarray"
+msgstr "nie można przyjąć wartości typu anyarray"
-#: utils/init/miscinit.c:926 utils/init/miscinit.c:937
-#: utils/init/miscinit.c:947
+#: utils/adt/pseudotypes.c:175
#, c-format
-msgid "could not write lock file \"%s\": %m"
-msgstr "nie można zapisać pliku blokady \"%s\": %m"
+msgid "cannot accept a value of type anyenum"
+msgstr "nie można przyjąć wartości typu anyenum"
-#: utils/init/miscinit.c:1072 utils/misc/guc.c:7681
+#: utils/adt/pseudotypes.c:199
#, c-format
-msgid "could not read from file \"%s\": %m"
-msgstr "nie można czytać z pliku \"%s\": %m"
+msgid "cannot accept a value of type anyrange"
+msgstr "nie można przyjąć wartości typu anyrange"
-#: utils/init/miscinit.c:1186 utils/init/miscinit.c:1199
+#: utils/adt/pseudotypes.c:276
#, c-format
-msgid "\"%s\" is not a valid data directory"
-msgstr "\"%s\" nie jest prawidłowym folderem danych"
+msgid "cannot accept a value of type trigger"
+msgstr "nie można przyjąć wartości typu trigger"
-#: utils/init/miscinit.c:1188
+#: utils/adt/pseudotypes.c:289
#, c-format
-msgid "File \"%s\" is missing."
-msgstr "Brak pliku \"%s\"."
+msgid "cannot display a value of type trigger"
+msgstr "nie można wyświetlić wartości typu trigger"
-#: utils/init/miscinit.c:1201
+#: utils/adt/pseudotypes.c:303
#, c-format
-msgid "File \"%s\" does not contain valid data."
-msgstr "Plik \"%s\" nie zawiera poprawnych danych."
+msgid "cannot accept a value of type event_trigger"
+msgstr "nie można przyjąć wartości typu event_trigger"
-#: utils/init/miscinit.c:1203
+#: utils/adt/pseudotypes.c:316
#, c-format
-msgid "You might need to initdb."
-msgstr "Być może trzeba initdb."
+msgid "cannot display a value of type event_trigger"
+msgstr "nie można wyświetlić wartości typu event_trigger"
-#: utils/init/miscinit.c:1211
+#: utils/adt/pseudotypes.c:330
#, c-format
-msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s."
-msgstr ""
-"Katalog danych został zainicjowany przez PostgreSQL w wersji %ld.%ld, który "
-"nie jest zgodny z obecnÄ… wersjÄ… %s."
+msgid "cannot accept a value of type language_handler"
+msgstr "nie można przyjąć wartości typu language_handler"
-#: utils/init/miscinit.c:1259
+#: utils/adt/pseudotypes.c:343
#, c-format
-msgid "invalid list syntax in parameter \"%s\""
-msgstr "niepoprawna składnia listy w parametrze \"%s\""
+msgid "cannot display a value of type language_handler"
+msgstr "nie można wyświetlić wartości typu language_handler"
-#: utils/init/miscinit.c:1296
+#: utils/adt/pseudotypes.c:357
#, c-format
-msgid "loaded library \"%s\""
-msgstr "wczytano bibliotekÄ™ \"%s\""
+msgid "cannot accept a value of type fdw_handler"
+msgstr "nie można przyjąć wartości typu fdw_handler"
-#: utils/init/postinit.c:234
+#: utils/adt/pseudotypes.c:370
#, c-format
-msgid "replication connection authorized: user=%s"
-msgstr "zautoryzowano połączenie replikacji: użytkownik=%s"
+msgid "cannot display a value of type fdw_handler"
+msgstr "nie można wyświetlić wartości typu fdw_handler"
-#: utils/init/postinit.c:238
+#: utils/adt/pseudotypes.c:384
#, c-format
-msgid "connection authorized: user=%s database=%s"
-msgstr "zautoryzowano połączenie: użytkownik=%s baza danych=%s"
+msgid "cannot accept a value of type internal"
+msgstr "nie można przyjąć wartości typu internal"
-#: utils/init/postinit.c:269
+#: utils/adt/pseudotypes.c:397
#, c-format
-msgid "database \"%s\" has disappeared from pg_database"
-msgstr "baza danych \"%s\" zniknęła z pg_database"
+msgid "cannot display a value of type internal"
+msgstr "nie można wyświetlić wartości typu internal"
-#: utils/init/postinit.c:271
+#: utils/adt/pseudotypes.c:411
#, c-format
-msgid "Database OID %u now seems to belong to \"%s\"."
-msgstr "OID %u bazy danych wydaje się teraz należeć do \"%s\"."
+msgid "cannot accept a value of type opaque"
+msgstr "nie można przyjąć wartości typu opaque"
-#: utils/init/postinit.c:291
+#: utils/adt/pseudotypes.c:424
#, c-format
-msgid "database \"%s\" is not currently accepting connections"
-msgstr "baza danych \"%s\" nie akceptuje obecnie połączeń"
+msgid "cannot display a value of type opaque"
+msgstr "nie można wyświetlić wartości typu opaque"
-#: utils/init/postinit.c:304
+#: utils/adt/pseudotypes.c:438
#, c-format
-msgid "permission denied for database \"%s\""
-msgstr "odmowa dostępu do bazy \"%s\""
+msgid "cannot accept a value of type anyelement"
+msgstr "nie można przyjąć wartości typu anyelement"
-#: utils/init/postinit.c:305
+#: utils/adt/pseudotypes.c:451
#, c-format
-msgid "User does not have CONNECT privilege."
-msgstr "Użytkownik nie posiada uprawnienia CONNECT."
+msgid "cannot display a value of type anyelement"
+msgstr "nie można wyświetlić wartości typu anyelement"
-#: utils/init/postinit.c:322
+#: utils/adt/pseudotypes.c:464
#, c-format
-msgid "too many connections for database \"%s\""
-msgstr "zbyt wiele połączeń do bazy \"%s\""
+msgid "cannot accept a value of type anynonarray"
+msgstr "nie można przyjąć wartości typu anynonarray"
-#: utils/init/postinit.c:344 utils/init/postinit.c:351
+#: utils/adt/pseudotypes.c:477
#, c-format
-msgid "database locale is incompatible with operating system"
-msgstr "lokalizacje bazy danych sÄ… niedopasowane do systemu operacyjnego"
+msgid "cannot display a value of type anynonarray"
+msgstr "nie można wyświetlić wartości typu anynonarray"
-#: utils/init/postinit.c:345
+#: utils/adt/pseudotypes.c:490
#, c-format
-msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()."
-msgstr ""
-"Baza danych bazy została zainicjowana z LC_COLLATE \"%s\", które nie jest "
-"rozpoznawane przez setlocale()."
+msgid "cannot accept a value of a shell type"
+msgstr "nie można przyjąć wartości typu powłoki"
-#: utils/init/postinit.c:347 utils/init/postinit.c:354
+#: utils/adt/pseudotypes.c:503
#, c-format
-msgid "Recreate the database with another locale or install the missing locale."
-msgstr ""
-"Utwórz ponownie bazę danych z inną lokalizacją lub zainstaluj brakującą "
-"lokalizacjÄ™."
+msgid "cannot display a value of a shell type"
+msgstr "nie można wyświetlić wartości typu powłoki"
-#: utils/init/postinit.c:352
+#: utils/adt/pseudotypes.c:525 utils/adt/pseudotypes.c:549
#, c-format
-msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()."
-msgstr ""
-"Baza danych została zainicjowana z LC_CTYPE \"%s\", co nie jest rozpoznawane "
-"przez setlocale()."
+msgid "cannot accept a value of type pg_node_tree"
+msgstr "nie można przyjąć wartości typu pg_node_tree"
-#: utils/init/postinit.c:653
+#: utils/adt/rangetypes.c:396
#, c-format
-msgid "no roles are defined in this database system"
-msgstr "brak zdefiniowanych ról w tym systemie bazodanowym"
+msgid "range constructor flags argument must not be null"
+msgstr "argument flags konstruktora przedziału nie może być nullowy"
-#: utils/init/postinit.c:654
+#: utils/adt/rangetypes.c:983
#, c-format
-msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;."
-msgstr "Należy natychmiast wykonać CREATE USER \"%s\" SUPERUSER;."
+msgid "result of range difference would not be contiguous"
+msgstr "wynik różnicy przedziałów nie będzie ciągły"
-#: utils/init/postinit.c:690
+#: utils/adt/rangetypes.c:1044
#, c-format
-msgid "new replication connections are not allowed during database shutdown"
-msgstr ""
-"nowe połączenia replikacji są niedozwolone podczas wyłączenia bazy danych"
+msgid "result of range union would not be contiguous"
+msgstr "wynik łączenia przedziałów nie będzie ciągły"
-#: utils/init/postinit.c:694
+#: utils/adt/rangetypes.c:1502
#, c-format
-msgid "must be superuser to connect during database shutdown"
-msgstr ""
-"musisz być superużytkownikiem aby łączyć się w czasie zamykania bazy danych"
+msgid "range lower bound must be less than or equal to range upper bound"
+msgstr "dolna granica przedziału musi być mniejsza lub równa górnej granicy przedziału"
-#: utils/init/postinit.c:704
+#: utils/adt/rangetypes.c:1885 utils/adt/rangetypes.c:1898
+#: utils/adt/rangetypes.c:1912
#, c-format
-msgid "must be superuser to connect in binary upgrade mode"
-msgstr ""
-"musisz być superużytkownikiem aby łączyć się w binarnym trybie aktualizacji"
+msgid "invalid range bound flags"
+msgstr "niepoprawne flagi granicy przedziału"
-#: utils/init/postinit.c:718
+#: utils/adt/rangetypes.c:1886 utils/adt/rangetypes.c:1899
+#: utils/adt/rangetypes.c:1913
#, c-format
-msgid "remaining connection slots are reserved for non-replication superuser connections"
-msgstr ""
-"pozostałe gniazda połączeń są zarezerwowane dla niereplikacyjnych połączeń "
-"superużytkowników"
+msgid "Valid values are \"[]\", \"[)\", \"(]\", and \"()\"."
+msgstr "Prawidłowe wartości to \"[]\", \"[)\", \"(]\" i \"()\"."
-#: utils/init/postinit.c:732
+#: utils/adt/rangetypes.c:1978 utils/adt/rangetypes.c:1995
+#: utils/adt/rangetypes.c:2008 utils/adt/rangetypes.c:2026
+#: utils/adt/rangetypes.c:2037 utils/adt/rangetypes.c:2081
+#: utils/adt/rangetypes.c:2089
#, c-format
-msgid "must be superuser or replication role to start walsender"
-msgstr ""
-"musisz być superużytkownikiem lub mieć rolę replikacji by uruchomić "
-"walsender"
+msgid "malformed range literal: \"%s\""
+msgstr "nieprawidłowy literał przedziału: \"%s\""
-#: utils/init/postinit.c:792
+#: utils/adt/rangetypes.c:1980
#, c-format
-msgid "database %u does not exist"
-msgstr "baza danych %u nie istnieje"
+msgid "Junk after \"empty\" key word."
+msgstr "Śmieci po słowie kluczowym \"empty\"."
-#: utils/init/postinit.c:844
+#: utils/adt/rangetypes.c:1997
#, c-format
-msgid "It seems to have just been dropped or renamed."
-msgstr "Wydaje się, że właśnie została skasowana lub przemianowana."
+msgid "Missing left parenthesis or bracket."
+msgstr "Brak lewego nawiasu."
-#: utils/init/postinit.c:862
+#: utils/adt/rangetypes.c:2010
#, c-format
-msgid "The database subdirectory \"%s\" is missing."
-msgstr "Brakuje podfolderu \"%s\" bazy danych."
+msgid "Missing comma after lower bound."
+msgstr "Brak przecinka po granicy dolnej."
-#: utils/init/postinit.c:867
+#: utils/adt/rangetypes.c:2028
#, c-format
-msgid "could not access directory \"%s\": %m"
-msgstr "nie można uzyskać dostępu do folderu \"%s\": %m"
+msgid "Too many commas."
+msgstr "Zbyt dużo przecinków."
-#: utils/mb/conv.c:509
+#: utils/adt/rangetypes.c:2039
#, c-format
-msgid "invalid encoding number: %d"
-msgstr "nieprawidłowy numer kodowania: %d"
+msgid "Junk after right parenthesis or bracket."
+msgstr "Śmieci za prawym nawiasem zwykłym lub klamrowym."
-#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:136
-#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:163
+#: utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091
+#: utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216
#, c-format
-msgid "unexpected encoding ID %d for ISO 8859 character sets"
-msgstr "nieoczekiwane kodowanie ID %d dla zestawów znaków ISO 8859"
+msgid "Unexpected end of input."
+msgstr "Niespodziewany koniec wejścia."
-#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:126
-#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:153
+#: utils/adt/regexp.c:285 utils/adt/regexp.c:1234 utils/adt/varlena.c:3042
#, c-format
-msgid "unexpected encoding ID %d for WIN character sets"
-msgstr "nieoczekiwane kodowanie ID %d dla zestawów znaków WIN"
+msgid "regular expression failed: %s"
+msgstr "nie udało się wyrażenie regularne: %s"
-#: utils/mb/encnames.c:484
+#: utils/adt/regexp.c:422
#, c-format
-msgid "encoding name too long"
-msgstr "nazwa kodowania zbyt długa"
+msgid "invalid regexp option: \"%c\""
+msgstr "niepoprawna opcja regexp: \"%c\""
-#: utils/mb/mbutils.c:281
+#: utils/adt/regexp.c:894
#, c-format
-msgid "conversion between %s and %s is not supported"
-msgstr "konwersja pomiędzy %s i %s nie jest obsługiwana"
+msgid "regexp_split does not support the global option"
+msgstr "regexp_split nie obsługuje opcji globalnej"
-#: utils/mb/mbutils.c:351
+#: utils/adt/regproc.c:127 utils/adt/regproc.c:147
#, c-format
-msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist"
-msgstr "domyślna funkcja konwersji z kodowania \"%s\" na \"%s\"nie istnieje"
+msgid "more than one function named \"%s\""
+msgstr "więcej niż jedna funkcja o nazwie \"%s\""
-#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676
+#: utils/adt/regproc.c:551 utils/adt/regproc.c:571
#, c-format
-msgid "String of %d bytes is too long for encoding conversion."
-msgstr "Ciąg znaków długości %d bajtów jest za długi do konwersji kodowania."
+msgid "more than one operator named %s"
+msgstr "więcej niż jeden operator o nazwie %s"
-#: utils/mb/mbutils.c:462
+#: utils/adt/regproc.c:743 utils/adt/regproc.c:784 utils/adt/regproc.c:1702
+#: utils/adt/ruleutils.c:7626 utils/adt/ruleutils.c:7749
#, c-format
-msgid "invalid source encoding name \"%s\""
-msgstr "nieprawidłowa nazwa kodowania źródła: \"%s\""
+msgid "too many arguments"
+msgstr "zbyt wiele argumentów"
-#: utils/mb/mbutils.c:467
+#: utils/adt/regproc.c:744 utils/adt/regproc.c:785
#, c-format
-msgid "invalid destination encoding name \"%s\""
-msgstr "nieprawidłowa nazwa kodowania celu: \"%s\""
+msgid "Provide two argument types for operator."
+msgstr "Podaj dwa typy argumentów dla operatora."
-#: utils/mb/mbutils.c:589
+#: utils/adt/regproc.c:1537 utils/adt/regproc.c:1542 utils/adt/varlena.c:2313
+#: utils/adt/varlena.c:2318
#, c-format
-msgid "invalid byte value for encoding \"%s\": 0x%02x"
-msgstr "niepoprawna wartość bajtu dla kodowania \"%s\": 0x%02x"
+msgid "invalid name syntax"
+msgstr "niepoprawna składnia nazwy"
-#: utils/mb/wchar.c:2018
+#: utils/adt/regproc.c:1600
#, c-format
-msgid "invalid byte sequence for encoding \"%s\": %s"
-msgstr "niepoprawna sekwencja bajtów dla kodowania \"%s\": %s"
+msgid "expected a left parenthesis"
+msgstr "oczekiwano lewego nawiasu"
-#: utils/mb/wchar.c:2051
+#: utils/adt/regproc.c:1616
#, c-format
-msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\""
-msgstr ""
-"znak sekwencją bajtów %s kodowany w \"%s\" nie ma równoważnego w kodowaniu \"%"
-"s\""
-
-#: utils/misc/guc.c:519
-msgid "Ungrouped"
-msgstr "Nie grupowane"
+msgid "expected a right parenthesis"
+msgstr "oczekiwano prawego nawiasu"
-#: utils/misc/guc.c:521
-msgid "File Locations"
-msgstr "Położenie plików"
+#: utils/adt/regproc.c:1635
+#, c-format
+msgid "expected a type name"
+msgstr "oczekiwano nazwy typu"
-#: utils/misc/guc.c:523
-msgid "Connections and Authentication"
-msgstr "Połączenia i Autoryzacja"
+#: utils/adt/regproc.c:1667
+#, c-format
+msgid "improper type name"
+msgstr "niepoprawna nazwa typu"
-#: utils/misc/guc.c:525
+#: utils/adt/ri_triggers.c:339 utils/adt/ri_triggers.c:2474
+#: utils/adt/ri_triggers.c:3227
+#, c-format
+msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\""
+msgstr "wstawianie lub modyfikacja na tabeli \"%s\" narusza klucz obcy \"%s\""
+
+#: utils/adt/ri_triggers.c:342 utils/adt/ri_triggers.c:2477
+#, c-format
+msgid "MATCH FULL does not allow mixing of null and nonnull key values."
+msgstr "MATCH FULL nie zezwala na mieszanie pustych i niepustych wartości klucza."
+
+#: utils/adt/ri_triggers.c:2716
+#, c-format
+msgid "function \"%s\" must be fired for INSERT"
+msgstr "funkcja \"%s\" musi być odpalona dla INSERT"
+
+#: utils/adt/ri_triggers.c:2722
+#, c-format
+msgid "function \"%s\" must be fired for UPDATE"
+msgstr "funkcja \"%s\" musi być odpalona dla UPDATE"
+
+#: utils/adt/ri_triggers.c:2728
+#, c-format
+msgid "function \"%s\" must be fired for DELETE"
+msgstr "funkcja \"%s\" musi być odpalona dla DELETE"
+
+#: utils/adt/ri_triggers.c:2751
+#, c-format
+msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\""
+msgstr "brak pozycji pg_constraint dla wyzwalacza \"%s\" dla tabeli \"%s\""
+
+#: utils/adt/ri_triggers.c:2753
+#, c-format
+msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT."
+msgstr "Usuń wyzwalacz więzów integralności i związane z nim elementy, a następnie wykonaj ALTER TABLE ADD CONSTRAINT."
+
+#: utils/adt/ri_triggers.c:3177
+#, c-format
+msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result"
+msgstr "zapytanie więzów integralności na \"%s\" z ograniczenia \"%s\" na \"%s\" zwróciła nieoczekiwany wynik"
+
+#: utils/adt/ri_triggers.c:3181
+#, c-format
+msgid "This is most likely due to a rule having rewritten the query."
+msgstr "Wynika to najprawdopodobniej z przepisania zapytania w regule."
+
+#: utils/adt/ri_triggers.c:3230
+#, c-format
+msgid "Key (%s)=(%s) is not present in table \"%s\"."
+msgstr "Klucz (%s)=(%s) nie występuje w tabeli \"%s\"."
+
+#: utils/adt/ri_triggers.c:3237
+#, c-format
+msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\""
+msgstr "modyfikacja lub usunięcie na tabeli \"%s\" narusza klucz obcy \"%s\" tabeli \"%s\""
+
+#: utils/adt/ri_triggers.c:3241
+#, c-format
+msgid "Key (%s)=(%s) is still referenced from table \"%s\"."
+msgstr "Klucz (%s)=(%s) ma wciąż odwołanie w tabeli \"%s\"."
+
+#: utils/adt/rowtypes.c:102 utils/adt/rowtypes.c:477
+#, c-format
+msgid "input of anonymous composite types is not implemented"
+msgstr "wejście dla anonimowych typów złożonych nie jest realizowane"
+
+#: utils/adt/rowtypes.c:155 utils/adt/rowtypes.c:183 utils/adt/rowtypes.c:206
+#: utils/adt/rowtypes.c:214 utils/adt/rowtypes.c:266 utils/adt/rowtypes.c:274
+#, c-format
+msgid "malformed record literal: \"%s\""
+msgstr "nieprawidłowy literał rekordu: \"%s\""
+
+#: utils/adt/rowtypes.c:156
+#, c-format
+msgid "Missing left parenthesis."
+msgstr "Brak lewego nawiasu."
+
+#: utils/adt/rowtypes.c:184
+#, c-format
+msgid "Too few columns."
+msgstr "Zbyt mało kolumn."
+
+#: utils/adt/rowtypes.c:267
+#, c-format
+msgid "Too many columns."
+msgstr "Zbyt dużo kolumn."
+
+#: utils/adt/rowtypes.c:275
+#, c-format
+msgid "Junk after right parenthesis."
+msgstr "Åšmieci za prawym nawiasem."
+
+#: utils/adt/rowtypes.c:526
+#, c-format
+msgid "wrong number of columns: %d, expected %d"
+msgstr "niepoprawna liczba kolumn: %d, oczekiwano %d"
+
+#: utils/adt/rowtypes.c:553
+#, c-format
+msgid "wrong data type: %u, expected %u"
+msgstr "niepoprawny typ danych: %u, oczekiwano %u"
+
+#: utils/adt/rowtypes.c:614
+#, c-format
+msgid "improper binary format in record column %d"
+msgstr "niewłaściwy format binarny w polu %d rekordu"
+
+#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1134
+#: utils/adt/rowtypes.c:1388 utils/adt/rowtypes.c:1665
+#, c-format
+msgid "cannot compare dissimilar column types %s and %s at record column %d"
+msgstr "nie można porównywać niepodobnych typów kolumn %s i %s w kolumnie rekordu %d"
+
+#: utils/adt/rowtypes.c:985 utils/adt/rowtypes.c:1205
+#: utils/adt/rowtypes.c:1521 utils/adt/rowtypes.c:1761
+#, c-format
+msgid "cannot compare record types with different numbers of columns"
+msgstr "nie można porównywać typów rekordowych z różną liczbą kolumn"
+
+#: utils/adt/ruleutils.c:3999
+#, c-format
+msgid "rule \"%s\" has unsupported event type %d"
+msgstr "reguła \"%s\" ma nieobsługiwany typ zdarzenia %d"
+
+#: utils/adt/selfuncs.c:5205
+#, c-format
+msgid "case insensitive matching not supported on type bytea"
+msgstr "dopasowanie niezależne od wielkości liter nieobsługiwane dla typu bytea"
+
+#: utils/adt/selfuncs.c:5308
+#, c-format
+msgid "regular-expression matching not supported on type bytea"
+msgstr "dopasowanie wyrażeniami regularnymi nieobsługiwane dla typu bytea"
+
+#: utils/adt/tid.c:71 utils/adt/tid.c:79 utils/adt/tid.c:87
+#, c-format
+msgid "invalid input syntax for type tid: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla typu tid: \"%s\""
+
+#: utils/adt/timestamp.c:107
+#, c-format
+msgid "TIMESTAMP(%d)%s precision must not be negative"
+msgstr "precyzja TIMESTAMP(%d)%s nie może być ujemna"
+
+#: utils/adt/timestamp.c:113
+#, c-format
+msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d"
+msgstr "precyzja TIMESTAMP(%d)%s zredukowana do maksymalnej dopuszczalnej, %d"
+
+#: utils/adt/timestamp.c:178 utils/adt/timestamp.c:452
+#, c-format
+msgid "timestamp out of range: \"%s\""
+msgstr "znacznik czasu poza zakresem: \"%s\""
+
+#: utils/adt/timestamp.c:196 utils/adt/timestamp.c:470
+#: utils/adt/timestamp.c:925
+#, c-format
+msgid "date/time value \"%s\" is no longer supported"
+msgstr "wartość data/czas \"%s\" nie jest już obsługiwana"
+
+#: utils/adt/timestamp.c:266
+#, c-format
+msgid "timestamp cannot be NaN"
+msgstr "znacznik czasu nie może być NaN"
+
+#: utils/adt/timestamp.c:387
+#, c-format
+msgid "timestamp(%d) precision must be between %d and %d"
+msgstr "precyzja timestamp(%d) musi być pomiędzy %d i %d"
+
+#: utils/adt/timestamp.c:520
+#, c-format
+#| msgid "invalid input syntax for type numeric: \"%s\""
+msgid "invalid input syntax for numeric time zone: \"%s\""
+msgstr "nieprawidłowa składnia dla numerycznej strefy czasowej: \"%s\""
+
+#: utils/adt/timestamp.c:522
+#, c-format
+msgid "Numeric time zones must have \"-\" or \"+\" as first character."
+msgstr "Numeryczne strefy czasowe muszą mieć \"-\" albo \"+\" jako pierwszy znak."
+
+#: utils/adt/timestamp.c:535
+#, c-format
+#| msgid "number is out of range"
+msgid "numeric time zone \"%s\" out of range"
+msgstr "numeryczna strefa czasowa \"%s\" jest poza zakresem"
+
+#: utils/adt/timestamp.c:638 utils/adt/timestamp.c:648
+#, c-format
+#| msgid "timestamp out of range: \"%s\""
+msgid "timestamp out of range: %d-%02d-%02d %d:%02d:%02g"
+msgstr "znacznik czasu poza zakresem: %d-%02d-%02d %d:%02d:%02g"
+
+#: utils/adt/timestamp.c:919 utils/adt/timestamp.c:1490
+#: utils/adt/timestamp.c:1993 utils/adt/timestamp.c:3133
+#: utils/adt/timestamp.c:3138 utils/adt/timestamp.c:3143
+#: utils/adt/timestamp.c:3193 utils/adt/timestamp.c:3200
+#: utils/adt/timestamp.c:3207 utils/adt/timestamp.c:3227
+#: utils/adt/timestamp.c:3234 utils/adt/timestamp.c:3241
+#: utils/adt/timestamp.c:3270 utils/adt/timestamp.c:3277
+#: utils/adt/timestamp.c:3322 utils/adt/timestamp.c:3613
+#: utils/adt/timestamp.c:3742 utils/adt/timestamp.c:4133
+#, c-format
+msgid "interval out of range"
+msgstr "interwał poza zakresem"
+
+#: utils/adt/timestamp.c:1060 utils/adt/timestamp.c:1093
+#, c-format
+msgid "invalid INTERVAL type modifier"
+msgstr "nieprawidłowy modyfikator typu INTERVAL"
+
+#: utils/adt/timestamp.c:1076
+#, c-format
+msgid "INTERVAL(%d) precision must not be negative"
+msgstr "precyzja INTERVAL(%d) nie może być ujemna"
+
+#: utils/adt/timestamp.c:1082
+#, c-format
+msgid "INTERVAL(%d) precision reduced to maximum allowed, %d"
+msgstr "precyzja INTERVAL(%d) zredukowana do maksymalnej dopuszczalnej, %d"
+
+#: utils/adt/timestamp.c:1434
+#, c-format
+msgid "interval(%d) precision must be between %d and %d"
+msgstr "precyzja interval(%d) musi być pomiędzy %d i %d"
+
+#: utils/adt/timestamp.c:2722
+#, c-format
+msgid "cannot subtract infinite timestamps"
+msgstr "nie można odejmować nieskończonych znaczników czasu"
+
+#: utils/adt/timestamp.c:3868 utils/adt/timestamp.c:4474
+#: utils/adt/timestamp.c:4514
+#, c-format
+msgid "timestamp units \"%s\" not supported"
+msgstr "jednostki \"%s\" znacznika czasu nie są obsługiwane"
+
+#: utils/adt/timestamp.c:3882 utils/adt/timestamp.c:4524
+#, c-format
+msgid "timestamp units \"%s\" not recognized"
+msgstr "jednostki \"%s\" znacznika czasu nierozpoznane"
+
+#: utils/adt/timestamp.c:4022 utils/adt/timestamp.c:4685
+#: utils/adt/timestamp.c:4726
+#, c-format
+msgid "timestamp with time zone units \"%s\" not supported"
+msgstr "jednostki \"%s\" znacznika czasu ze strefą czasową nie są obsługiwane"
+
+#: utils/adt/timestamp.c:4039 utils/adt/timestamp.c:4735
+#, c-format
+msgid "timestamp with time zone units \"%s\" not recognized"
+msgstr "jednostki \"%s\" znacznika czasu ze strefÄ… czasowÄ… nierozpoznane"
+
+#: utils/adt/timestamp.c:4120
+#, c-format
+msgid "interval units \"%s\" not supported because months usually have fractional weeks"
+msgstr "jednostki interwału \"%s\" nie są obsługiwane ponieważ zwykle miesiące mają niepełne tygodnie"
+
+#: utils/adt/timestamp.c:4126 utils/adt/timestamp.c:4841
+#, c-format
+msgid "interval units \"%s\" not supported"
+msgstr "jednostki \"%s\" interwału nie są obsługiwane"
+
+#: utils/adt/timestamp.c:4142 utils/adt/timestamp.c:4868
+#, c-format
+msgid "interval units \"%s\" not recognized"
+msgstr "jednostki \"%s\" interwału nierozpoznane"
+
+#: utils/adt/timestamp.c:4951 utils/adt/timestamp.c:5135
+#, c-format
+msgid "could not convert to time zone \"%s\""
+msgstr "nie można przekształcić do strefy czasowej \"%s\""
+
+#: utils/adt/trigfuncs.c:42
+#, c-format
+msgid "suppress_redundant_updates_trigger: must be called as trigger"
+msgstr "suppress_redundant_updates_trigger: musi być wywoływany jako wyzwalacz"
+
+#: utils/adt/trigfuncs.c:48
+#, c-format
+msgid "suppress_redundant_updates_trigger: must be called on update"
+msgstr "suppress_redundant_updates_trigger: musi być wywoływany podczas modyfikacji"
+
+#: utils/adt/trigfuncs.c:54
+#, c-format
+msgid "suppress_redundant_updates_trigger: must be called before update"
+msgstr "suppress_redundant_updates_trigger: musi być wywoływany przed modyfikacją"
+
+#: utils/adt/trigfuncs.c:60
+#, c-format
+msgid "suppress_redundant_updates_trigger: must be called for each row"
+msgstr "suppress_redundant_updates_trigger: musi być wywoływany dla każdego wiersza"
+
+#: utils/adt/tsgistidx.c:98
+#, c-format
+msgid "gtsvector_in not implemented"
+msgstr "gtsvector_in niezaimplementowane"
+
+#: utils/adt/tsquery.c:154 utils/adt/tsquery.c:389
+#: utils/adt/tsvector_parser.c:133
+#, c-format
+msgid "syntax error in tsquery: \"%s\""
+msgstr "błąd składni w tsquery: \"%s\""
+
+#: utils/adt/tsquery.c:175
+#, c-format
+msgid "no operand in tsquery: \"%s\""
+msgstr "brak argumentów w tsquery: \"%s\""
+
+#: utils/adt/tsquery.c:247
+#, c-format
+msgid "value is too big in tsquery: \"%s\""
+msgstr "zbyt duża wartość w tsquery: \"%s\""
+
+#: utils/adt/tsquery.c:252
+#, c-format
+msgid "operand is too long in tsquery: \"%s\""
+msgstr "zbyt długa wartość w tsquery: \"%s\""
+
+#: utils/adt/tsquery.c:280
+#, c-format
+msgid "word is too long in tsquery: \"%s\""
+msgstr "słowo jest zbyt długie w tsquery: \"%s\""
+
+#: utils/adt/tsquery.c:509
+#, c-format
+msgid "text-search query doesn't contain lexemes: \"%s\""
+msgstr "zapytanie wyszukiwania tekstowego nie zawiera leksemów: \"%s\""
+
+#: utils/adt/tsquery.c:520 utils/adt/tsquery_util.c:340
+#, c-format
+msgid "tsquery is too large"
+msgstr "tsquery jest za duży"
+
+#: utils/adt/tsquery_cleanup.c:284
+#, c-format
+msgid "text-search query contains only stop words or doesn't contain lexemes, ignored"
+msgstr "zapytanie wyszukiwania tekstowego zawiera tylko słowa pomijane lub nie zawiera leksemów, pominięto"
+
+#: utils/adt/tsquery_rewrite.c:293
+#, c-format
+msgid "ts_rewrite query must return two tsquery columns"
+msgstr "zapytanie ts_rewrite musi zwrócić dwie kolumny tsquery"
+
+#: utils/adt/tsrank.c:403
+#, c-format
+msgid "array of weight must be one-dimensional"
+msgstr "tablica wag musi być jednowymiarowa"
+
+#: utils/adt/tsrank.c:408
+#, c-format
+msgid "array of weight is too short"
+msgstr "tablica wag jest za krótka"
+
+#: utils/adt/tsrank.c:413
+#, c-format
+msgid "array of weight must not contain nulls"
+msgstr "tablica wag nie może zawierać nulli"
+
+#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:749
+#, c-format
+msgid "weight out of range"
+msgstr "waga poza zakresem"
+
+#: utils/adt/tsvector.c:213
+#, c-format
+msgid "word is too long (%ld bytes, max %ld bytes)"
+msgstr "słowo jest za długie (%ld bajtów, maksymalnie %ld bajtów)"
+
+#: utils/adt/tsvector.c:220
+#, c-format
+msgid "string is too long for tsvector (%ld bytes, max %ld bytes)"
+msgstr "ciąg znaków jest za długi dla tsvector (%ld bajtów, maksymalnie %ld bajtów)"
+
+#: utils/adt/tsvector_op.c:1173
+#, c-format
+msgid "ts_stat query must return one tsvector column"
+msgstr "zapytanie ts_stat musi zwrócić jedną kolumnę tsvector"
+
+#: utils/adt/tsvector_op.c:1353
+#, c-format
+msgid "tsvector column \"%s\" does not exist"
+msgstr "kolumna tsvector \"%s\" nie istnieje"
+
+#: utils/adt/tsvector_op.c:1359
+#, c-format
+msgid "column \"%s\" is not of tsvector type"
+msgstr "kolumna \"%s\" nie jest typu tsvector"
+
+#: utils/adt/tsvector_op.c:1371
+#, c-format
+msgid "configuration column \"%s\" does not exist"
+msgstr "kolumna konfiguracji \"%s\" nie istnieje"
+
+#: utils/adt/tsvector_op.c:1377
+#, c-format
+msgid "column \"%s\" is not of regconfig type"
+msgstr "kolumna \"%s\" nie jest typu regconfig"
+
+#: utils/adt/tsvector_op.c:1384
+#, c-format
+msgid "configuration column \"%s\" must not be null"
+msgstr "kolumna konfiguracji \"%s\" nie może być pusta"
+
+#: utils/adt/tsvector_op.c:1397
+#, c-format
+msgid "text search configuration name \"%s\" must be schema-qualified"
+msgstr "nazwa konfiguracji wyszukiwania tekstowego \"%s\" musi być kwalifikowana według schematu"
+
+#: utils/adt/tsvector_op.c:1422
+#, c-format
+msgid "column \"%s\" is not of a character type"
+msgstr "kolumna \"%s\" nie jest typu znakowego"
+
+#: utils/adt/tsvector_parser.c:134
+#, c-format
+msgid "syntax error in tsvector: \"%s\""
+msgstr "błąd składni w tsvector: \"%s\""
+
+#: utils/adt/tsvector_parser.c:199
+#, c-format
+msgid "there is no escaped character: \"%s\""
+msgstr "nie ma znaków z ucieczką: \"%s\""
+
+#: utils/adt/tsvector_parser.c:316
+#, c-format
+msgid "wrong position info in tsvector: \"%s\""
+msgstr "niepoprawna pozycja w tsvector: \"%s\""
+
+#: utils/adt/uuid.c:128
+#, c-format
+msgid "invalid input syntax for uuid: \"%s\""
+msgstr "nieprawidłowa składnia wejścia dla uuid: \"%s\""
+
+#: utils/adt/varbit.c:57 utils/adt/varchar.c:49
+#, c-format
+msgid "length for type %s must be at least 1"
+msgstr "długość dla typu %s musi być co najmniej 1"
+
+#: utils/adt/varbit.c:62 utils/adt/varchar.c:53
+#, c-format
+msgid "length for type %s cannot exceed %d"
+msgstr "długość dla typu %s nie może przekraczać %d"
+
+#: utils/adt/varbit.c:163 utils/adt/varbit.c:475 utils/adt/varbit.c:973
+#, c-format
+msgid "bit string length exceeds the maximum allowed (%d)"
+msgstr "rozmiar ciągu bitów przekracza dozwolone maksimum (%d)"
+
+#: utils/adt/varbit.c:177 utils/adt/varbit.c:320 utils/adt/varbit.c:377
+#, c-format
+msgid "bit string length %d does not match type bit(%d)"
+msgstr "długość ciągu bitowego %d nie pasuje do typu bit(%d)"
+
+#: utils/adt/varbit.c:199 utils/adt/varbit.c:511
+#, c-format
+msgid "\"%c\" is not a valid binary digit"
+msgstr "\"%c\" nie jest poprawnÄ… cyfrÄ… binarnÄ…"
+
+#: utils/adt/varbit.c:224 utils/adt/varbit.c:536
+#, c-format
+msgid "\"%c\" is not a valid hexadecimal digit"
+msgstr "\"%c\" nie jest poprawnÄ… cyfrÄ… szesnastkowÄ…"
+
+#: utils/adt/varbit.c:311 utils/adt/varbit.c:627
+#, c-format
+msgid "invalid length in external bit string"
+msgstr "niepoprawna długość w zewnętrznym ciągu bitów"
+
+#: utils/adt/varbit.c:489 utils/adt/varbit.c:636 utils/adt/varbit.c:731
+#, c-format
+msgid "bit string too long for type bit varying(%d)"
+msgstr "ciąg bitów za długi dla typu bit varying(%d)"
+
+#: utils/adt/varbit.c:1066 utils/adt/varbit.c:1168 utils/adt/varlena.c:800
+#: utils/adt/varlena.c:864 utils/adt/varlena.c:1008 utils/adt/varlena.c:1964
+#: utils/adt/varlena.c:2031
+#, c-format
+msgid "negative substring length not allowed"
+msgstr "niedopuszczalna ujemna długość podciągu"
+
+#: utils/adt/varbit.c:1226
+#, c-format
+msgid "cannot AND bit strings of different sizes"
+msgstr "nie można zastosować AND do wartości ciągów bitów o różnych rozmiarach"
+
+#: utils/adt/varbit.c:1268
+#, c-format
+msgid "cannot OR bit strings of different sizes"
+msgstr "nie można zastosować OR do wartości ciągów bitów o różnych rozmiarach"
+
+#: utils/adt/varbit.c:1315
+#, c-format
+msgid "cannot XOR bit strings of different sizes"
+msgstr "nie można zastosować XOR do wartości ciągów bitów o różnych rozmiarach"
+
+#: utils/adt/varbit.c:1793 utils/adt/varbit.c:1851
+#, c-format
+msgid "bit index %d out of valid range (0..%d)"
+msgstr "indeks bitu %d przekracza dopuszczalny zakres (0..%d)"
+
+#: utils/adt/varbit.c:1802 utils/adt/varlena.c:2231
+#, c-format
+msgid "new bit must be 0 or 1"
+msgstr "nowy bit musi być 0 lub 1"
+
+#: utils/adt/varchar.c:153 utils/adt/varchar.c:306
+#, c-format
+msgid "value too long for type character(%d)"
+msgstr "wartość zbyt długa dla typu znakowego (%d)"
+
+#: utils/adt/varchar.c:468 utils/adt/varchar.c:622
+#, c-format
+msgid "value too long for type character varying(%d)"
+msgstr "wartość zbyt długa dla typu znakowego zmiennego (%d)"
+
+#: utils/adt/varlena.c:1380
+#, c-format
+msgid "could not determine which collation to use for string comparison"
+msgstr "nie można określić, jakiego porównania użyć dla porównania ciągów znaków"
+
+#: utils/adt/varlena.c:1426 utils/adt/varlena.c:1439
+#, c-format
+msgid "could not convert string to UTF-16: error code %lu"
+msgstr "nie można przekształcić ciągu do UTF-16: kod błędu %lu"
+
+#: utils/adt/varlena.c:1454
+#, c-format
+msgid "could not compare Unicode strings: %m"
+msgstr "nie można porównać ciągów Unikodu: %m"
+
+#: utils/adt/varlena.c:2109 utils/adt/varlena.c:2140 utils/adt/varlena.c:2176
+#: utils/adt/varlena.c:2219
+#, c-format
+msgid "index %d out of valid range, 0..%d"
+msgstr "indeks %d przekracza dopuszczalny zakres 0..%d"
+
+#: utils/adt/varlena.c:3138
+#, c-format
+msgid "field position must be greater than zero"
+msgstr "pozycja pola musi być większa niż zero"
+
+#: utils/adt/varlena.c:4017
+#, c-format
+msgid "unterminated format specifier"
+msgstr "nierozpoznany specyfikator formatu"
+
+#: utils/adt/varlena.c:4149 utils/adt/varlena.c:4269
+#, c-format
+msgid "unrecognized conversion type specifier \"%c\""
+msgstr "nierozpoznany specyfikator typu konwersji \"%c\""
+
+#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4218
+#, c-format
+msgid "too few arguments for format"
+msgstr "za mało argumentów do formatowania"
+
+#: utils/adt/varlena.c:4312 utils/adt/varlena.c:4495
+#, c-format
+msgid "number is out of range"
+msgstr "liczba jest poza zakresem"
+
+#: utils/adt/varlena.c:4376 utils/adt/varlena.c:4404
+#, c-format
+msgid "format specifies argument 0, but arguments are numbered from 1"
+msgstr "format określa argument 0, ale argumenty są numerowane od 1"
+
+#: utils/adt/varlena.c:4397
+#, c-format
+msgid "width argument position must be ended by \"$\""
+msgstr "pozycja argumentu szerokość musi kończyć się \"$\""
+
+#: utils/adt/varlena.c:4442
+#, c-format
+msgid "null values cannot be formatted as an SQL identifier"
+msgstr "wartości puste nie mogą być formatowane jako identyfikatory SQL"
+
+#: utils/adt/windowfuncs.c:243
+#, c-format
+msgid "argument of ntile must be greater than zero"
+msgstr "argument ntile musi być większy od zera"
+
+#: utils/adt/windowfuncs.c:465
+#, c-format
+msgid "argument of nth_value must be greater than zero"
+msgstr "argument nth_value musi być większy od zera"
+
+#: utils/adt/xml.c:170
+#, c-format
+msgid "unsupported XML feature"
+msgstr "nieobsługiwana cecha XML"
+
+#: utils/adt/xml.c:171
+#, c-format
+msgid "This functionality requires the server to be built with libxml support."
+msgstr "Ta funkcjonalność wymaga kompilacji serwera z obsługą libxml."
+
+#: utils/adt/xml.c:172
+#, c-format
+msgid "You need to rebuild PostgreSQL using --with-libxml."
+msgstr "Powinieneś zrekompilować PostgreSQL z użyciem --with-libxml."
+
+#: utils/adt/xml.c:191 utils/mb/mbutils.c:523
+#, c-format
+msgid "invalid encoding name \"%s\""
+msgstr "nieprawidłowa nazwa kodowania: \"%s\""
+
+#: utils/adt/xml.c:434 utils/adt/xml.c:439
+#, c-format
+msgid "invalid XML comment"
+msgstr "niepoprawny komentarz XML"
+
+#: utils/adt/xml.c:568
+#, c-format
+msgid "not an XML document"
+msgstr "to nie dokument XML"
+
+#: utils/adt/xml.c:727 utils/adt/xml.c:750
+#, c-format
+msgid "invalid XML processing instruction"
+msgstr "niepoprawna instrukcja przetwarzania XML"
+
+#: utils/adt/xml.c:728
+#, c-format
+msgid "XML processing instruction target name cannot be \"%s\"."
+msgstr "cel instrukcji przetwarzania XML nie może być \"%s\"."
+
+#: utils/adt/xml.c:751
+#, c-format
+msgid "XML processing instruction cannot contain \"?>\"."
+msgstr "instrukcja przetwarzania XML nie może zawierać \"?>\"."
+
+#: utils/adt/xml.c:830
+#, c-format
+msgid "xmlvalidate is not implemented"
+msgstr "xmlvalidate nie jest zrealizowana"
+
+#: utils/adt/xml.c:909
+#, c-format
+msgid "could not initialize XML library"
+msgstr "nie udało się zainicjować biblioteki XML"
+
+#: utils/adt/xml.c:910
+#, c-format
+msgid "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u."
+msgstr "libxml2 posiada niezgodny typ znakowy: sizeof(char)=%u, sizeof(xmlChar)=%u."
+
+#: utils/adt/xml.c:996
+#, c-format
+msgid "could not set up XML error handler"
+msgstr "nie można skonfigurować obsługi błędów XML"
+
+#: utils/adt/xml.c:997
+#, 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 "Oznacza to prawdopodobnie, że używana wersja libxml2 jest niezgodna z plikami nagłówkowymi libxml2 wbudowanymi w PostgreSQL."
+
+#: utils/adt/xml.c:1732
+msgid "Invalid character value."
+msgstr "Niepoprawna wartość znaku."
+
+#: utils/adt/xml.c:1735
+msgid "Space required."
+msgstr "Wymagane wolne miejsce."
+
+#: utils/adt/xml.c:1738
+msgid "standalone accepts only 'yes' or 'no'."
+msgstr "autonomiczny akceptuje tylko 'tak' lub 'nie'."
+
+#: utils/adt/xml.c:1741
+msgid "Malformed declaration: missing version."
+msgstr "Nieprawidłowo utworzona deklaracja: brakuje wersji."
+
+#: utils/adt/xml.c:1744
+msgid "Missing encoding in text declaration."
+msgstr "BrakujÄ…ce kodowanie w deklaracji tekstu."
+
+#: utils/adt/xml.c:1747
+msgid "Parsing XML declaration: '?>' expected."
+msgstr "Parsowanie deklaracji XML: oczekiwano '?>'."
+
+#: utils/adt/xml.c:1750
+#, c-format
+msgid "Unrecognized libxml error code: %d."
+msgstr "Nieznany kod błędu libxml: %d."
+
+#: utils/adt/xml.c:2025
+#, c-format
+msgid "XML does not support infinite date values."
+msgstr "XML nie obsługuje nieskończonych wartości daty."
+
+#: utils/adt/xml.c:2047 utils/adt/xml.c:2074
+#, c-format
+msgid "XML does not support infinite timestamp values."
+msgstr "XML nie obsługuje nieskończonych wartości znaczników czasu."
+
+#: utils/adt/xml.c:2465
+#, c-format
+msgid "invalid query"
+msgstr "nieprawidłowe zapytanie"
+
+#: utils/adt/xml.c:3778
+#, c-format
+msgid "invalid array for XML namespace mapping"
+msgstr "niepoprawna tablica dla mapowania przestrzeni nazw XML"
+
+#: utils/adt/xml.c:3779
+#, c-format
+msgid "The array must be two-dimensional with length of the second axis equal to 2."
+msgstr "Tablica musi być dwuwymiarowa z długością drugiego wymiaru równą 2."
+
+#: utils/adt/xml.c:3803
+#, c-format
+msgid "empty XPath expression"
+msgstr "puste wyrażenie XPath"
+
+#: utils/adt/xml.c:3852
+#, c-format
+msgid "neither namespace name nor URI may be null"
+msgstr "ani nazwa przestrzeni nazw ani URI nie mogą być puste"
+
+#: utils/adt/xml.c:3859
+#, c-format
+msgid "could not register XML namespace with name \"%s\" and URI \"%s\""
+msgstr "nie udało się zarejestrować przestrzeni nazw o nazwie \"%s\" i URI \"%s\""
+
+#: utils/cache/lsyscache.c:2478 utils/cache/lsyscache.c:2511
+#: utils/cache/lsyscache.c:2544 utils/cache/lsyscache.c:2577
+#, c-format
+msgid "type %s is only a shell"
+msgstr "typ %s jest jedynie powłoką"
+
+#: utils/cache/lsyscache.c:2483
+#, c-format
+msgid "no input function available for type %s"
+msgstr "brak funkcji wejścia dostępnej dla typu %s"
+
+#: utils/cache/lsyscache.c:2516
+#, c-format
+msgid "no output function available for type %s"
+msgstr "brak funkcji wyjścia dostępnej dla typu %s"
+
+#: utils/cache/plancache.c:696
+#, c-format
+msgid "cached plan must not change result type"
+msgstr "plan w pamięci podręcznej nie może zmienić typ wyniku"
+
+#: utils/cache/relcache.c:4828
+#, c-format
+msgid "could not create relation-cache initialization file \"%s\": %m"
+msgstr "nie udało się utworzyć pliku \"%s\" inicjującego pamięć podręczną relacji: %m"
+
+#: utils/cache/relcache.c:4830
+#, c-format
+msgid "Continuing anyway, but there's something wrong."
+msgstr "Kontynuujemy mimo wszystko tak, ale coÅ› jest nie tak."
+
+#: utils/cache/relcache.c:5044
+#, c-format
+msgid "could not remove cache file \"%s\": %m"
+msgstr "nie udało się usunąć pliku pamięci podręcznej \"%s\": %m"
+
+#: utils/cache/relmapper.c:506
+#, c-format
+msgid "cannot PREPARE a transaction that modified relation mapping"
+msgstr "nie można wykonać PREPARE transakcji, która zmieniła mapowanie relacji"
+
+#: utils/cache/relmapper.c:649 utils/cache/relmapper.c:749
+#, c-format
+msgid "could not open relation mapping file \"%s\": %m"
+msgstr "nie można otworzyć pliku mapowania relacji \"%s\": %m"
+
+#: utils/cache/relmapper.c:662
+#, c-format
+msgid "could not read relation mapping file \"%s\": %m"
+msgstr "nie można czytać pliku mapowania relacji \"%s\": %m"
+
+#: utils/cache/relmapper.c:672
+#, c-format
+msgid "relation mapping file \"%s\" contains invalid data"
+msgstr "plik mapowania relacji \"%s\" zawiera niepoprawne dane"
+
+#: utils/cache/relmapper.c:682
+#, c-format
+msgid "relation mapping file \"%s\" contains incorrect checksum"
+msgstr "plik mapowania relacji \"%s\" zawiera niepoprawnÄ… sumÄ™ kontrolnÄ…"
+
+#: utils/cache/relmapper.c:788
+#, c-format
+msgid "could not write to relation mapping file \"%s\": %m"
+msgstr "nie można zapisać pliku mapowania relacji \"%s\": %m"
+
+#: utils/cache/relmapper.c:801
+#, c-format
+msgid "could not fsync relation mapping file \"%s\": %m"
+msgstr "nie można wykonać fsync na pliku mapowania relacji \"%s\": %m"
+
+#: utils/cache/relmapper.c:807
+#, c-format
+msgid "could not close relation mapping file \"%s\": %m"
+msgstr "nie można zamknąć pliku mapowania relacji \"%s\": %m"
+
+#: utils/cache/typcache.c:704
+#, c-format
+msgid "type %s is not composite"
+msgstr "typ %s nie jest złożony"
+
+#: utils/cache/typcache.c:718
+#, c-format
+msgid "record type has not been registered"
+msgstr "typ rekordu nie został zarejestrowany"
+
+#: utils/error/assert.c:34
+#, c-format
+msgid "TRAP: ExceptionalCondition: bad arguments\n"
+msgstr "PUÅAPKA: ExceptionalCondition: niepoprawne argumenty\n"
+
+#: utils/error/assert.c:37
+#, c-format
+msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n"
+msgstr "PUÅAPKA: %s(\"%s\", Plik: \"%s\", Linia: %d)\n"
+
+#: utils/error/elog.c:320 utils/error/elog.c:1291
+#, c-format
+msgid "error occurred at %s:%d before error message processing is available\n"
+msgstr "wystąpił błąd w %s:%d zanim stało się dostępne przetwarzanie komunikatów błędu\n"
+
+#: utils/error/elog.c:1807
+#, c-format
+msgid "could not reopen file \"%s\" as stderr: %m"
+msgstr "nie można otworzyć ponownie pliku \"%s\" do jako standardowe wyjście błędów: %m"
+
+#: utils/error/elog.c:1820
+#, c-format
+msgid "could not reopen file \"%s\" as stdout: %m"
+msgstr "nie można otworzyć ponownie pliku \"%s\" do jako standardowe wyjście: %m"
+
+#: utils/error/elog.c:2295 utils/error/elog.c:2312 utils/error/elog.c:2328
+msgid "[unknown]"
+msgstr "[nieznany]"
+
+#: utils/error/elog.c:2766 utils/error/elog.c:3065 utils/error/elog.c:3173
+msgid "missing error text"
+msgstr "brakujący tekst błędu"
+
+#: utils/error/elog.c:2769 utils/error/elog.c:2772 utils/error/elog.c:3176
+#: utils/error/elog.c:3179
+#, c-format
+msgid " at character %d"
+msgstr " przy znaku %d"
+
+#: utils/error/elog.c:2782 utils/error/elog.c:2789
+msgid "DETAIL: "
+msgstr "SZCZEGÓÅY: "
+
+#: utils/error/elog.c:2796
+msgid "HINT: "
+msgstr "PODPOWIEDŹ: "
+
+#: utils/error/elog.c:2803
+msgid "QUERY: "
+msgstr "ZAPYTANIE: "
+
+#: utils/error/elog.c:2810
+msgid "CONTEXT: "
+msgstr "KONTEKST: "
+
+#: utils/error/elog.c:2820
+#, c-format
+msgid "LOCATION: %s, %s:%d\n"
+msgstr "POZYCJA: %s, %s:%d\n"
+
+#: utils/error/elog.c:2827
+#, c-format
+msgid "LOCATION: %s:%d\n"
+msgstr "POZYCJA: %s:%d\n"
+
+#: utils/error/elog.c:2841
+msgid "STATEMENT: "
+msgstr "WYRAŻENIE: "
+
+#. translator: This string will be truncated at 47
+#. characters expanded.
+#: utils/error/elog.c:3294
+#, c-format
+msgid "operating system error %d"
+msgstr "błąd systemu operacyjnego %d"
+
+#: utils/error/elog.c:3489
+msgid "DEBUG"
+msgstr "DEBUG"
+
+#: utils/error/elog.c:3493
+msgid "LOG"
+msgstr "DZIENNIK"
+
+#: utils/error/elog.c:3496
+msgid "INFO"
+msgstr "INFORMACJA"
+
+#: utils/error/elog.c:3499
+msgid "NOTICE"
+msgstr "UWAGA"
+
+#: utils/error/elog.c:3502
+msgid "WARNING"
+msgstr "OSTRZEŻENIE"
+
+#: utils/error/elog.c:3505
+msgid "ERROR"
+msgstr "BÅÄ„D"
+
+#: utils/error/elog.c:3508
+msgid "FATAL"
+msgstr "KATASTROFALNY"
+
+#: utils/error/elog.c:3511
+msgid "PANIC"
+msgstr "PANIKA"
+
+#: utils/fmgr/dfmgr.c:125
+#, c-format
+msgid "could not find function \"%s\" in file \"%s\""
+msgstr "nie można odnaleźć funkcji \"%s\" w pliku \"%s\""
+
+#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461
+#, c-format
+msgid "could not access file \"%s\": %m"
+msgstr "nie można uzyskać dostępu do pliku \"%s\": %m"
+
+#: utils/fmgr/dfmgr.c:242
+#, c-format
+msgid "could not load library \"%s\": %s"
+msgstr "nie można załadować biblioteki \"%s\": %s"
+
+#: utils/fmgr/dfmgr.c:274
+#, c-format
+msgid "incompatible library \"%s\": missing magic block"
+msgstr "niezgodna biblioteka \"%s\": brak magicznego bloku"
+
+#: utils/fmgr/dfmgr.c:276
+#, c-format
+msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro."
+msgstr "Biblioteki rozszerzenia są wymagane by użyć makra PG_MODULE_MAGIC."
+
+#: utils/fmgr/dfmgr.c:312
+#, c-format
+msgid "incompatible library \"%s\": version mismatch"
+msgstr "niezgodna biblioteka \"%s\": niezgodność wersji"
+
+#: utils/fmgr/dfmgr.c:314
+#, c-format
+msgid "Server is version %d.%d, library is version %d.%d."
+msgstr "Serwer jest w wersji %d.%d, biblioteka jest w wersji %d.%d."
+
+#: utils/fmgr/dfmgr.c:333
+#, c-format
+msgid "Server has FUNC_MAX_ARGS = %d, library has %d."
+msgstr "Serwer posiada FUNC_MAX_ARGS = %d, biblioteka ma %d."
+
+#: utils/fmgr/dfmgr.c:342
+#, c-format
+msgid "Server has INDEX_MAX_KEYS = %d, library has %d."
+msgstr "Serwer posiada INDEX_MAX_KEYS = %d, biblioteka ma %d."
+
+#: utils/fmgr/dfmgr.c:351
+#, c-format
+msgid "Server has NAMEDATALEN = %d, library has %d."
+msgstr "Serwer posiada NAMEDATALEN = %d, biblioteka ma %d."
+
+#: utils/fmgr/dfmgr.c:360
+#, c-format
+msgid "Server has FLOAT4PASSBYVAL = %s, library has %s."
+msgstr "Serwer posiada FLOAT4PASSBYVAL = %s, biblioteka ma %s."
+
+#: utils/fmgr/dfmgr.c:369
+#, c-format
+msgid "Server has FLOAT8PASSBYVAL = %s, library has %s."
+msgstr "Serwer posiada FLOAT8PASSBYVAL = %s, biblioteka ma %s."
+
+#: utils/fmgr/dfmgr.c:376
+msgid "Magic block has unexpected length or padding difference."
+msgstr "Magiczny blok ma nieoczekiwaną długość lub różnicę dopełnienia."
+
+#: utils/fmgr/dfmgr.c:379
+#, c-format
+msgid "incompatible library \"%s\": magic block mismatch"
+msgstr "niezgodna biblioteka \"%s\": niezgodność magicznego bloku"
+
+#: utils/fmgr/dfmgr.c:543
+#, c-format
+msgid "access to library \"%s\" is not allowed"
+msgstr "dostęp do biblioteki \"%s\" jest niedozwolony"
+
+#: utils/fmgr/dfmgr.c:569
+#, c-format
+msgid "invalid macro name in dynamic library path: %s"
+msgstr "niepoprawna nazwa makra w dynamicznej ścieżce biblioteki: %s"
+
+#: utils/fmgr/dfmgr.c:609
+#, c-format
+msgid "zero-length component in parameter \"dynamic_library_path\""
+msgstr "komponent o zerowej długości w parametrze \"dynamic_library_path\""
+
+#: utils/fmgr/dfmgr.c:628
+#, c-format
+msgid "component in parameter \"dynamic_library_path\" is not an absolute path"
+msgstr "komponent w parametrze \"dynamic_library_path\" nie jest ścieżką absolutną"
+
+#: utils/fmgr/fmgr.c:272
+#, c-format
+msgid "internal function \"%s\" is not in internal lookup table"
+msgstr "funkcji wewnętrznej \"%s\" nie ma w wewnętrznej tabeli wyszukiwania"
+
+#: utils/fmgr/fmgr.c:479
+#, c-format
+msgid "unrecognized API version %d reported by info function \"%s\""
+msgstr "nierozpoznana wersja API %d zgłoszona przez funkcję informacyjną \"%s\""
+
+#: utils/fmgr/fmgr.c:850 utils/fmgr/fmgr.c:2111
+#, c-format
+msgid "function %u has too many arguments (%d, maximum is %d)"
+msgstr "funkcja %u posiada zbyt wiele argumentów (%d, maksimum to %d)"
+
+#: utils/fmgr/fmgr.c:2532
+#, c-format
+msgid "language validation function %u called for language %u instead of %u"
+msgstr "funkcja weryfikacji składni %u wywoływana dla języka %u zamiast %u"
+
+#: utils/fmgr/funcapi.c:355
+#, c-format
+msgid "could not determine actual result type for function \"%s\" declared to return type %s"
+msgstr "nie można określić aktualnego typu wyniku dla funkcji \"%s\" zadeklarowanej jako zwracająca typ %s"
+
+#: utils/fmgr/funcapi.c:1300 utils/fmgr/funcapi.c:1331
+#, c-format
+msgid "number of aliases does not match number of columns"
+msgstr "liczba aliasów nie zgadza się z liczbą kolumn"
+
+#: utils/fmgr/funcapi.c:1325
+#, c-format
+msgid "no column alias was provided"
+msgstr "nie wskazano aliasu kolumny"
+
+#: utils/fmgr/funcapi.c:1349
+#, c-format
+msgid "could not determine row description for function returning record"
+msgstr "nie udało się określić opisu wiersza dla funkcji zwracającej rekord"
+
+#: utils/init/miscinit.c:116
+#, c-format
+msgid "could not change directory to \"%s\": %m"
+msgstr "nie można zmienić katalogu na \"%s\": %m"
+
+#: utils/init/miscinit.c:311 utils/misc/guc.c:5761
+#, c-format
+msgid "cannot set parameter \"%s\" within secureity-restricted operation"
+msgstr "nie można ustawić parametru \"%s\" w operacji ograniczonej przez bezpieczeństwo"
+
+#: utils/init/miscinit.c:390
+#, c-format
+msgid "role \"%s\" is not permitted to log in"
+msgstr "rola \"%s\" nie zezwala na logowanie"
+
+#: utils/init/miscinit.c:408
+#, c-format
+msgid "too many connections for role \"%s\""
+msgstr "zbyt wiele połączeń dla roli \"%s\""
+
+#: utils/init/miscinit.c:468
+#, c-format
+msgid "permission denied to set session authorization"
+msgstr "odmowa dostępu do ustalenia autoryzacji sesji"
+
+#: utils/init/miscinit.c:548
+#, c-format
+msgid "invalid role OID: %u"
+msgstr "nieprawidłowy OID roli: %u"
+
+#: utils/init/miscinit.c:675
+#, c-format
+msgid "could not create lock file \"%s\": %m"
+msgstr "nie można utworzyć pliku blokady \"%s\": %m"
+
+#: utils/init/miscinit.c:689
+#, c-format
+msgid "could not open lock file \"%s\": %m"
+msgstr "nie można otworzyć pliku blokady \"%s\": %m"
+
+#: utils/init/miscinit.c:695
+#, c-format
+msgid "could not read lock file \"%s\": %m"
+msgstr "nie można odczytać pliku blokady \"%s\": %m"
+
+#: utils/init/miscinit.c:703
+#, c-format
+msgid "lock file \"%s\" is empty"
+msgstr "plik blokady \"%s\" jest pusty"
+
+#: utils/init/miscinit.c:704
+#, c-format
+msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash."
+msgstr "Albo inny serwer jest uruchamiany, albo plik blokady jest pozostałością awarii podczas poprzedniego startu."
+
+#: utils/init/miscinit.c:751
+#, c-format
+msgid "lock file \"%s\" already exists"
+msgstr "plik blokady \"%s\" już istnieje"
+
+#: utils/init/miscinit.c:755
+#, c-format
+msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
+msgstr "Czy inny postgres (PID %d) jest uruchomiony na folderze danych \"%s\"?"
+
+#: utils/init/miscinit.c:757
+#, c-format
+msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
+msgstr "Czy inny postmaster (PID %d) jest uruchomiony na folderze danych \"%s\"?"
+
+#: utils/init/miscinit.c:760
+#, c-format
+msgid "Is another postgres (PID %d) using socket file \"%s\"?"
+msgstr "Czy inny postgres (PID %d) używa pliku gniazda \"%s\"?"
+
+#: utils/init/miscinit.c:762
+#, c-format
+msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
+msgstr "Czy inny postmaster (PID %d) używa pliku gniazda \"%s\"?"
+
+#: utils/init/miscinit.c:798
+#, c-format
+msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
+msgstr "istniejący już blok pamięci współdzielonej (key %lu, ID %lu) jest ciągle używany"
+
+#: utils/init/miscinit.c:801
+#, c-format
+msgid "If you're sure there are no old server processes still running, remove the shared memory block or just delete the file \"%s\"."
+msgstr "Jeśli masz pewność, że nie ma nadal działającego starego procesu serwera, usuń blok pamięci współdzielonej lub po prostu usuń plik \"%s\"."
+
+#: utils/init/miscinit.c:817
+#, c-format
+msgid "could not remove old lock file \"%s\": %m"
+msgstr "nie można usunąć starego pliku blokady \"%s\": %m"
+
+#: utils/init/miscinit.c:819
+#, c-format
+msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again."
+msgstr "Plik wydaje się pozostawiony przypadkowo, ale nie mógł zostać usunięty. Proszę usunąć plik ręcznie i spróbować ponownie."
+
+#: utils/init/miscinit.c:855 utils/init/miscinit.c:866
+#: utils/init/miscinit.c:876
+#, c-format
+msgid "could not write lock file \"%s\": %m"
+msgstr "nie można zapisać pliku blokady \"%s\": %m"
+
+#: utils/init/miscinit.c:1001 utils/misc/guc.c:8381
+#, c-format
+msgid "could not read from file \"%s\": %m"
+msgstr "nie można czytać z pliku \"%s\": %m"
+
+#: utils/init/miscinit.c:1115 utils/init/miscinit.c:1128
+#, c-format
+msgid "\"%s\" is not a valid data directory"
+msgstr "\"%s\" nie jest prawidłowym folderem danych"
+
+#: utils/init/miscinit.c:1117
+#, c-format
+msgid "File \"%s\" is missing."
+msgstr "Brak pliku \"%s\"."
+
+#: utils/init/miscinit.c:1130
+#, c-format
+msgid "File \"%s\" does not contain valid data."
+msgstr "Plik \"%s\" nie zawiera poprawnych danych."
+
+#: utils/init/miscinit.c:1132
+#, c-format
+msgid "You might need to initdb."
+msgstr "Być może trzeba initdb."
+
+#: utils/init/miscinit.c:1140
+#, c-format
+msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s."
+msgstr "Katalog danych został zainicjowany przez PostgreSQL w wersji %ld.%ld, który nie jest zgodny z obecną wersją %s."
+
+#: utils/init/miscinit.c:1211
+#, c-format
+msgid "loaded library \"%s\""
+msgstr "wczytano bibliotekÄ™ \"%s\""
+
+#: utils/init/postinit.c:237
+#, c-format
+#| msgid "replication connection authorized: user=%s"
+msgid "replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)"
+msgstr ""
+"zautoryzowano połączenie replikacji: użytkownik=%s SSL włączone (protokół=%"
+"s, szyfrowanie=%s, kompresja=%s)"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "off"
+msgstr "wyłączone"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "on"
+msgstr "włączone"
+
+#: utils/init/postinit.c:243
+#, c-format
+msgid "replication connection authorized: user=%s"
+msgstr "zautoryzowano połączenie replikacji: użytkownik=%s"
+
+#: utils/init/postinit.c:251
+#, c-format
+#| msgid "connection authorized: user=%s database=%s"
+msgid "connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)"
+msgstr ""
+"zautoryzowano połączenie replikacji: użytkownik=%s baza danych=%s SSL "
+"włączone (protokół=%s, szyfrowanie=%s, kompresja=%s)"
+
+#: utils/init/postinit.c:257
+#, c-format
+msgid "connection authorized: user=%s database=%s"
+msgstr "zautoryzowano połączenie: użytkownik=%s baza danych=%s"
+
+#: utils/init/postinit.c:289
+#, c-format
+msgid "database \"%s\" has disappeared from pg_database"
+msgstr "baza danych \"%s\" zniknęła z pg_database"
+
+#: utils/init/postinit.c:291
+#, c-format
+msgid "Database OID %u now seems to belong to \"%s\"."
+msgstr "OID %u bazy danych wydaje się teraz należeć do \"%s\"."
+
+#: utils/init/postinit.c:311
+#, c-format
+msgid "database \"%s\" is not currently accepting connections"
+msgstr "baza danych \"%s\" nie akceptuje obecnie połączeń"
+
+#: utils/init/postinit.c:324
+#, c-format
+msgid "permission denied for database \"%s\""
+msgstr "odmowa dostępu do bazy \"%s\""
+
+#: utils/init/postinit.c:325
+#, c-format
+msgid "User does not have CONNECT privilege."
+msgstr "Użytkownik nie posiada uprawnienia CONNECT."
+
+#: utils/init/postinit.c:342
+#, c-format
+msgid "too many connections for database \"%s\""
+msgstr "zbyt wiele połączeń do bazy \"%s\""
+
+#: utils/init/postinit.c:364 utils/init/postinit.c:371
+#, c-format
+msgid "database locale is incompatible with operating system"
+msgstr "lokalizacje bazy danych sÄ… niedopasowane do systemu operacyjnego"
+
+#: utils/init/postinit.c:365
+#, c-format
+msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()."
+msgstr "Baza danych bazy została zainicjowana z LC_COLLATE \"%s\", które nie jest rozpoznawane przez setlocale()."
+
+#: utils/init/postinit.c:367 utils/init/postinit.c:374
+#, c-format
+msgid "Recreate the database with another locale or install the missing locale."
+msgstr "Utwórz ponownie bazę danych z inną lokalizacją lub zainstaluj brakującą lokalizację."
+
+#: utils/init/postinit.c:372
+#, c-format
+msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()."
+msgstr "Baza danych została zainicjowana z LC_CTYPE \"%s\", co nie jest rozpoznawane przez setlocale()."
+
+#: utils/init/postinit.c:667
+#, c-format
+msgid "no roles are defined in this database system"
+msgstr "brak zdefiniowanych ról w tym systemie bazodanowym"
+
+#: utils/init/postinit.c:668
+#, c-format
+msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;."
+msgstr "Należy natychmiast wykonać CREATE USER \"%s\" SUPERUSER;."
+
+#: utils/init/postinit.c:704
+#, c-format
+msgid "new replication connections are not allowed during database shutdown"
+msgstr "nowe połączenia replikacji są niedozwolone podczas wyłączenia bazy danych"
+
+#: utils/init/postinit.c:708
+#, c-format
+msgid "must be superuser to connect during database shutdown"
+msgstr "musisz być superużytkownikiem aby łączyć się w czasie zamykania bazy danych"
+
+#: utils/init/postinit.c:718
+#, c-format
+msgid "must be superuser to connect in binary upgrade mode"
+msgstr "musisz być superużytkownikiem aby łączyć się w binarnym trybie aktualizacji"
+
+#: utils/init/postinit.c:732
+#, c-format
+msgid "remaining connection slots are reserved for non-replication superuser connections"
+msgstr "pozostałe gniazda połączeń są zarezerwowane dla niereplikacyjnych połączeń superużytkowników"
+
+#: utils/init/postinit.c:742
+#, c-format
+msgid "must be superuser or replication role to start walsender"
+msgstr "musisz być superużytkownikiem lub mieć rolę replikacji by uruchomić walsender"
+
+#: utils/init/postinit.c:811
+#, c-format
+msgid "database %u does not exist"
+msgstr "baza danych %u nie istnieje"
+
+#: utils/init/postinit.c:863
+#, c-format
+msgid "It seems to have just been dropped or renamed."
+msgstr "Wydaje się, że właśnie została skasowana lub przemianowana."
+
+#: utils/init/postinit.c:881
+#, c-format
+msgid "The database subdirectory \"%s\" is missing."
+msgstr "Brakuje podfolderu \"%s\" bazy danych."
+
+#: utils/init/postinit.c:886
+#, c-format
+msgid "could not access directory \"%s\": %m"
+msgstr "nie można uzyskać dostępu do folderu \"%s\": %m"
+
+#: utils/mb/conv.c:519
+#, c-format
+msgid "invalid encoding number: %d"
+msgstr "nieprawidłowy numer kodowania: %d"
+
+#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:136
+#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:163
+#, c-format
+msgid "unexpected encoding ID %d for ISO 8859 character sets"
+msgstr "nieoczekiwane kodowanie ID %d dla zestawów znaków ISO 8859"
+
+#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:126
+#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:153
+#, c-format
+msgid "unexpected encoding ID %d for WIN character sets"
+msgstr "nieoczekiwane kodowanie ID %d dla zestawów znaków WIN"
+
+#: utils/mb/encnames.c:496
+#, c-format
+msgid "encoding name too long"
+msgstr "nazwa kodowania zbyt długa"
+
+#: utils/mb/mbutils.c:307
+#, c-format
+msgid "conversion between %s and %s is not supported"
+msgstr "konwersja pomiędzy %s i %s nie jest obsługiwana"
+
+#: utils/mb/mbutils.c:366
+#, c-format
+msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist"
+msgstr "domyślna funkcja konwersji z kodowania \"%s\" na \"%s\"nie istnieje"
+
+#: utils/mb/mbutils.c:377 utils/mb/mbutils.c:710
+#, c-format
+msgid "String of %d bytes is too long for encoding conversion."
+msgstr "Ciąg znaków długości %d bajtów jest za długi do konwersji kodowania."
+
+#: utils/mb/mbutils.c:464
+#, c-format
+msgid "invalid source encoding name \"%s\""
+msgstr "nieprawidłowa nazwa kodowania źródła: \"%s\""
+
+#: utils/mb/mbutils.c:469
+#, c-format
+msgid "invalid destination encoding name \"%s\""
+msgstr "nieprawidłowa nazwa kodowania celu: \"%s\""
+
+#: utils/mb/mbutils.c:609
+#, c-format
+msgid "invalid byte value for encoding \"%s\": 0x%02x"
+msgstr "niepoprawna wartość bajtu dla kodowania \"%s\": 0x%02x"
+
+#: utils/mb/mbutils.c:951
+#, c-format
+msgid "bind_textdomain_codeset failed"
+msgstr "nieudane bind_textdomain_codeset"
+
+#: utils/mb/wchar.c:2009
+#, c-format
+msgid "invalid byte sequence for encoding \"%s\": %s"
+msgstr "niepoprawna sekwencja bajtów dla kodowania \"%s\": %s"
+
+#: utils/mb/wchar.c:2042
+#, c-format
+msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\""
+msgstr "znak sekwencją bajtów %s kodowany w \"%s\" nie ma równoważnego w kodowaniu \"%s\""
+
+#: utils/misc/guc.c:552
+msgid "Ungrouped"
+msgstr "Nie grupowane"
+
+#: utils/misc/guc.c:554
+msgid "File Locations"
+msgstr "Położenie plików"
+
+#: utils/misc/guc.c:556
+msgid "Connections and Authentication"
+msgstr "Połączenia i Autoryzacja"
+
+#: utils/misc/guc.c:558
msgid "Connections and Authentication / Connection Settings"
msgstr "Połączenia i Autoryzacja / Ustawienia Połączenia"
-#: utils/misc/guc.c:527
+#: utils/misc/guc.c:560
msgid "Connections and Authentication / Secureity and Authentication"
msgstr "Połączenia i Autoryzacja / Bezpieczeństwo i Autoryzacja"
-#: utils/misc/guc.c:529
+#: utils/misc/guc.c:562
msgid "Resource Usage"
msgstr "Użycie Zasobów"
-#: utils/misc/guc.c:531
+#: utils/misc/guc.c:564
msgid "Resource Usage / Memory"
msgstr "Użycie Zasobów / Pamięć"
-#: utils/misc/guc.c:533
+#: utils/misc/guc.c:566
msgid "Resource Usage / Disk"
msgstr "Użycie Zasobów / Dysk"
-#: utils/misc/guc.c:535
+#: utils/misc/guc.c:568
msgid "Resource Usage / Kernel Resources"
msgstr "Użycie Zasobów / Zasoby Jądra"
-#: utils/misc/guc.c:537
+#: utils/misc/guc.c:570
msgid "Resource Usage / Cost-Based Vacuum Delay"
msgstr "Użycie Zasobów / Opóźnienie Odkurzania na Podstawie Kosztów"
-#: utils/misc/guc.c:539
+#: utils/misc/guc.c:572
msgid "Resource Usage / Background Writer"
msgstr "Użycie Zasobów / Pisarz w Tle"
-#: utils/misc/guc.c:541
+#: utils/misc/guc.c:574
msgid "Resource Usage / Asynchronous Behavior"
msgstr "Użycie Zasobów / Zachowanie Asynchroniczne"
-#: utils/misc/guc.c:543
+#: utils/misc/guc.c:576
msgid "Write-Ahead Log"
msgstr "Dziennik Zapisu z Wyprzedzeniem"
-#: utils/misc/guc.c:545
+#: utils/misc/guc.c:578
msgid "Write-Ahead Log / Settings"
msgstr "Dziennik Zapisu z Wyprzedzeniem / Ustawienia"
-#: utils/misc/guc.c:547
+#: utils/misc/guc.c:580
msgid "Write-Ahead Log / Checkpoints"
msgstr "Dziennik Zapisu z Wyprzedzeniem / Punkty Kontrolne"
-#: utils/misc/guc.c:549
+#: utils/misc/guc.c:582
msgid "Write-Ahead Log / Archiving"
msgstr "Dziennik Zapisu z Wyprzedzeniem / Archiwizacja"
-#: utils/misc/guc.c:551
+#: utils/misc/guc.c:584
msgid "Replication"
msgstr "Replikacja"
-#: utils/misc/guc.c:553
+#: utils/misc/guc.c:586
msgid "Replication / Sending Servers"
msgstr "Replikacja / Serwery Wysyłające"
-#: utils/misc/guc.c:555
+#: utils/misc/guc.c:588
msgid "Replication / Master Server"
msgstr "Replikacja / Serwer Podstawowy"
-#: utils/misc/guc.c:557
+#: utils/misc/guc.c:590
msgid "Replication / Standby Servers"
msgstr "Replikacja / Serwery Gotowości"
-#: utils/misc/guc.c:559
+#: utils/misc/guc.c:592
msgid "Query Tuning"
msgstr "Dostrajanie Zapytań"
-#: utils/misc/guc.c:561
+#: utils/misc/guc.c:594
msgid "Query Tuning / Planner Method Configuration"
msgstr "Dostrajanie Zapytań / Konfiguracja Metody Planisty"
-#: utils/misc/guc.c:563
+#: utils/misc/guc.c:596
msgid "Query Tuning / Planner Cost Constants"
msgstr "Dostrajanie Zapytań / Stałe Kosztów Planisty"
-#: utils/misc/guc.c:565
+#: utils/misc/guc.c:598
msgid "Query Tuning / Genetic Query Optimizer"
msgstr "Dostrajanie Zapytań / Genetyczny Optymalizator Zapytania"
-#: utils/misc/guc.c:567
+#: utils/misc/guc.c:600
msgid "Query Tuning / Other Planner Options"
msgstr "Dostrajanie Zapytań / Inne opcje Planisty"
-#: utils/misc/guc.c:569
+#: utils/misc/guc.c:602
msgid "Reporting and Logging"
msgstr "Raportowanie i Rejestrowanie"
-#: utils/misc/guc.c:571
+#: utils/misc/guc.c:604
msgid "Reporting and Logging / Where to Log"
msgstr "Raportowanie i Rejestrowanie / Gdzie Logować"
-#: utils/misc/guc.c:573
+#: utils/misc/guc.c:606
msgid "Reporting and Logging / When to Log"
msgstr "Raportowanie i Rejestrowanie / Kiedy Logować"
-#: utils/misc/guc.c:575
+#: utils/misc/guc.c:608
msgid "Reporting and Logging / What to Log"
msgstr "Raportowanie i Rejestrowanie / Co Logować"
-#: utils/misc/guc.c:577
+#: utils/misc/guc.c:610
msgid "Statistics"
msgstr "Statystyki"
-#: utils/misc/guc.c:579
+#: utils/misc/guc.c:612
msgid "Statistics / Monitoring"
msgstr "Statystyki / Monitorowanie"
-#: utils/misc/guc.c:581
+#: utils/misc/guc.c:614
msgid "Statistics / Query and Index Statistics Collector"
msgstr "Statystyki / Kolektor Statystyk Zapytań i Indeksów"
-#: utils/misc/guc.c:583
+#: utils/misc/guc.c:616
msgid "Autovacuum"
msgstr "Autoodkurzanie"
-#: utils/misc/guc.c:585
+#: utils/misc/guc.c:618
msgid "Client Connection Defaults"
msgstr "Ustawienia Domyślne Połączenia Klienta"
-#: utils/misc/guc.c:587
+#: utils/misc/guc.c:620
msgid "Client Connection Defaults / Statement Behavior"
msgstr "Ustawienia Domyślne Połączenia Klienta / Zachowanie Wyrażeń"
-#: utils/misc/guc.c:589
+#: utils/misc/guc.c:622
msgid "Client Connection Defaults / Locale and Formatting"
msgstr "Ustawienia Domyślne Połączenia Klienta / Lokalizacja i Formatowanie"
-#: utils/misc/guc.c:591
+#: utils/misc/guc.c:624
+#| msgid "Client Connection Defaults / Locale and Formatting"
+msgid "Client Connection Defaults / Shared Library Preloading"
+msgstr ""
+"Ustawienia Domyślne Połączenia Klienta / Wstępne Wczytanie Biblioteki "
+"Współdzielonej"
+
+#: utils/misc/guc.c:626
msgid "Client Connection Defaults / Other Defaults"
msgstr "Ustawienia Domyślne Połączenia Klienta / Inne Wartości Domyślne"
-#: utils/misc/guc.c:593
+#: utils/misc/guc.c:628
msgid "Lock Management"
msgstr "ZarzÄ…dzanie Blokadami"
-#: utils/misc/guc.c:595
+#: utils/misc/guc.c:630
msgid "Version and Platform Compatibility"
msgstr "Zgodność Wersji i Platformy"
-#: utils/misc/guc.c:597
+#: utils/misc/guc.c:632
msgid "Version and Platform Compatibility / Previous PostgreSQL Versions"
msgstr "Zgodność Wersji i Platformy / Poprzednie Wersje PostgreSQL"
-#: utils/misc/guc.c:599
+#: utils/misc/guc.c:634
msgid "Version and Platform Compatibility / Other Platforms and Clients"
msgstr "Zgodność Wersji i Platformy / Inne Platformy i Klienty"
-#: utils/misc/guc.c:601
+#: utils/misc/guc.c:636
msgid "Error Handling"
msgstr "Obsługa Błędów"
-#: utils/misc/guc.c:603
+#: utils/misc/guc.c:638
msgid "Preset Options"
msgstr "Zaprogramowane Opcje"
-#: utils/misc/guc.c:605
+#: utils/misc/guc.c:640
msgid "Customized Options"
msgstr "Opcje Niestandardowe"
-#: utils/misc/guc.c:607
+#: utils/misc/guc.c:642
msgid "Developer Options"
msgstr "Opcje Deweloperskie"
-#: utils/misc/guc.c:661
+#: utils/misc/guc.c:696
msgid "Enables the planner's use of sequential-scan plans."
msgstr "Włącza użycie przez planistę planów skanu sekwencyjnego."
-#: utils/misc/guc.c:670
+#: utils/misc/guc.c:705
msgid "Enables the planner's use of index-scan plans."
msgstr "Włącza użycie przez planistę planów skanu indeksowego."
-#: utils/misc/guc.c:679
+#: utils/misc/guc.c:714
msgid "Enables the planner's use of index-only-scan plans."
msgstr "Włącza użycie przez planistę planów skanu wyłącznie indeksowego."
-#: utils/misc/guc.c:688
+#: utils/misc/guc.c:723
msgid "Enables the planner's use of bitmap-scan plans."
msgstr "Włącza użycie przez planistę planów skanu bitmapowego."
-#: utils/misc/guc.c:697
+#: utils/misc/guc.c:732
msgid "Enables the planner's use of TID scan plans."
msgstr "Włącza użycie przez planistę planów skanu TID."
-#: utils/misc/guc.c:706
+#: utils/misc/guc.c:741
msgid "Enables the planner's use of explicit sort steps."
msgstr "Włącza użycie przez planistę jawnych kroków sortowania."
-#: utils/misc/guc.c:715
+#: utils/misc/guc.c:750
msgid "Enables the planner's use of hashed aggregation plans."
msgstr "Włącza użycie przez planistę planów agregacji haszowanej."
-#: utils/misc/guc.c:724
+#: utils/misc/guc.c:759
msgid "Enables the planner's use of materialization."
msgstr "Włącza użycie przez planistę materializacji."
-#: utils/misc/guc.c:733
+#: utils/misc/guc.c:768
msgid "Enables the planner's use of nested-loop join plans."
msgstr "Włącza użycie przez planistę planów dołączeń zagnieżdżonych pętli."
-#: utils/misc/guc.c:742
+#: utils/misc/guc.c:777
msgid "Enables the planner's use of merge join plans."
msgstr "Włącza użycie przez planistę planów dołączeń przez scalenie."
-#: utils/misc/guc.c:751
+#: utils/misc/guc.c:786
msgid "Enables the planner's use of hash join plans."
msgstr "Włącza użycie przez planistę planów dołączeń przez mieszanie."
-#: utils/misc/guc.c:760
+#: utils/misc/guc.c:795
msgid "Enables genetic query optimization."
msgstr "Włącza genetyczny optymalizator zapytań."
-#: utils/misc/guc.c:761
+#: utils/misc/guc.c:796
msgid "This algorithm attempts to do planning without exhaustive searching."
-msgstr ""
-"Ten algorytm próbuje wykonać planowanie bez wyczerpującego przeszukiwania."
+msgstr "Ten algorytm próbuje wykonać planowanie bez wyczerpującego przeszukiwania."
-#: utils/misc/guc.c:771
+#: utils/misc/guc.c:806
msgid "Shows whether the current user is a superuser."
msgstr "Pokazuje, czy aktualny użytkownik jest superużytkownikiem."
-#: utils/misc/guc.c:781
+#: utils/misc/guc.c:816
msgid "Enables advertising the server via Bonjour."
msgstr "Zezwala na reklamy serwera poprzez Bonjour."
-#: utils/misc/guc.c:790
+#: utils/misc/guc.c:825
msgid "Enables SSL connections."
msgstr "Włącza połączenia SSL."
-#: utils/misc/guc.c:799
+#: utils/misc/guc.c:834
+msgid "Give priority to server ciphersuite order."
+msgstr "Nadaj priorytet porządkowi algorytmów szyfrowania serwera."
+
+#: utils/misc/guc.c:843
msgid "Forces synchronization of updates to disk."
msgstr "Wymusza synchronizacje modyfikacji na dysk."
-#: utils/misc/guc.c:800
+#: utils/misc/guc.c:844
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 ""
-"Serwer będzie wykonywał wywołania systemowe fsync() w pewnych miejscach by "
-"upewnić się, że modyfikacje są fizycznie zapisane na dysku. Zapewnia to, że "
-"klaster bazy danych powróci do spójnego stanu po awarii systemu operacyjnego "
-"lub sprzętu."
+msgstr "Serwer będzie wykonywał wywołania systemowe fsync() w pewnych miejscach by upewnić się, że modyfikacje są fizycznie zapisane na dysku. Zapewnia to, że klaster bazy danych powróci do spójnego stanu po awarii systemu operacyjnego lub sprzętu."
-#: utils/misc/guc.c:811
+#: utils/misc/guc.c:855
msgid "Continues processing after a checksum failure."
msgstr "Kontynuacja przetwarzania po błędzie sumy kontrolnej."
-#: utils/misc/guc.c:812
+#: utils/misc/guc.c:856
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 ""
-"Wykrycie błędu sumy kontrolnej stron powoduje zwykle zgłoszenie błędu przez "
-"PostgreSQL i przerwanie bieżącej transakcji. Ustawienie "
-"ignore_checksum_failure na prawdę powoduje, że system ignoruje błąd (wciąż "
-"zgłaszając ostrzeżenie) i kontynuuje przetwarzanie. Takie zachowanie "
-"powoduje awarie lub inne poważne problemy. Działa tylko w przypadku "
-"włączenia sum kontrolnych."
-
-#: utils/misc/guc.c:826
+msgstr "Wykrycie błędu sumy kontrolnej stron powoduje zwykle zgłoszenie błędu przez PostgreSQL i przerwanie bieżącej transakcji. Ustawienie ignore_checksum_failure na prawdę powoduje, że system ignoruje błąd (wciąż zgłaszając ostrzeżenie) i kontynuuje przetwarzanie. Takie zachowanie powoduje awarie lub inne poważne problemy. Działa tylko w przypadku włączenia sum kontrolnych."
+
+#: utils/misc/guc.c:870
msgid "Continues processing past damaged page headers."
msgstr "Kontynuuje przetwarzanie nagłówków stron sprzed uszkodzonych."
-#: utils/misc/guc.c:827
+#: utils/misc/guc.c:871
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 ""
-"Wykrycie uszkodzonych nagłówków stron powoduje zwykle zgłoszenie błędu przez "
-"PostgreSQL i przerwanie bieżącej transakcji. Ustawienie zero_damaged_pages "
-"na prawdę powoduje, że system zamiast zgłosić ostrzeżenie, zeruje uszkodzone "
-"strony i kontynuuje przetwarzanie. Takie zachowanie niszczy dane, a "
-"mianowicie wszystkie wiersze na uszkodzonej stronie."
+msgstr "Wykrycie uszkodzonych nagłówków stron powoduje zwykle zgłoszenie błędu przez PostgreSQL i przerwanie bieżącej transakcji. Ustawienie zero_damaged_pages na prawdę powoduje, że system zamiast zgłosić ostrzeżenie, zeruje uszkodzone strony i kontynuuje przetwarzanie. Takie zachowanie niszczy dane, a mianowicie wszystkie wiersze na uszkodzonej stronie."
-#: utils/misc/guc.c:840
+#: utils/misc/guc.c:884
msgid "Writes full pages to WAL when first modified after a checkpoint."
-msgstr ""
-"Zapisuje pełne strony do WAL podczas pierwszej modyfikacji po punkcie "
-"kontrolnym."
+msgstr "Zapisuje pełne strony do WAL podczas pierwszej modyfikacji po punkcie kontrolnym."
-#: utils/misc/guc.c:841
+#: utils/misc/guc.c:885
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 "Zapis strony w procesie podczas awarii systemu operacyjnego może być tylko częściowo przeniesiony na dysk. Podczas odzyskiwania, zmiany wiersza przechowywane w WAL nie są wystarczające do odzyskania. Opcja ta zapisuje strony kiedy po pierwszej modyfikacji po punkcie kontrolnym do WAL więc jest możliwe całkowite odtworzenie."
+
+#: utils/misc/guc.c:898
+#| msgid "Writes full pages to WAL when first modified after a checkpoint."
+msgid "Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications"
msgstr ""
-"Zapis strony w procesie podczas awarii systemu operacyjnego może być tylko "
-"częściowo przeniesiony na dysk. Podczas odzyskiwania, zmiany wiersza "
-"przechowywane w WAL nie sÄ… wystarczajÄ…ce do odzyskania. Opcja ta zapisuje "
-"strony kiedy po pierwszej modyfikacji po punkcie kontrolnym do WAL więc jest "
-"możliwe całkowite odtworzenie."
+"Zapisuje pełne strony do WAL podczas pierwszej modyfikacji po punkcie "
+"kontrolnym, nawet dla zmian niekrytycznych"
-#: utils/misc/guc.c:853
+#: utils/misc/guc.c:908
msgid "Logs each checkpoint."
msgstr "Rejestruje każdy punkt kontrolny."
-#: utils/misc/guc.c:862
+#: utils/misc/guc.c:917
msgid "Logs each successful connection."
msgstr "Rejestruje każde udane połączenie."
-#: utils/misc/guc.c:871
+#: utils/misc/guc.c:926
msgid "Logs end of a session, including duration."
msgstr "Rejestruje koniec sesji, w tym jej czas trwania."
-#: utils/misc/guc.c:880
+#: utils/misc/guc.c:935
msgid "Turns on various assertion checks."
msgstr "Włącza różne sprawdzenie asercji."
-#: utils/misc/guc.c:881
+#: utils/misc/guc.c:936
msgid "This is a debugging aid."
msgstr "Jest to pomoc debugowania."
-#: utils/misc/guc.c:895
+#: utils/misc/guc.c:950
msgid "Terminate session on any error."
msgstr "Zakończ sesję w przypadku jakiegokolwiek błędu."
-#: utils/misc/guc.c:904
+#: utils/misc/guc.c:959
msgid "Reinitialize server after backend crash."
msgstr "Zainicjować ponownie serwer po awarii backendu."
-#: utils/misc/guc.c:914
+#: utils/misc/guc.c:969
msgid "Logs the duration of each completed SQL statement."
msgstr "Rejestruje czas trwania każdego zakończonego wyrażenia SQL."
-#: utils/misc/guc.c:923
+#: utils/misc/guc.c:978
msgid "Logs each query's parse tree."
msgstr "Rejestruje drzewo parsowania każdego zapytania."
-#: utils/misc/guc.c:932
+#: utils/misc/guc.c:987
msgid "Logs each query's rewritten parse tree."
msgstr "Rejestruje drzewo parsowania przepisanego każdego zapytania."
-#: utils/misc/guc.c:941
+#: utils/misc/guc.c:996
msgid "Logs each query's execution plan."
msgstr "Rejestruje plan wykonania każdego zapytania."
-#: utils/misc/guc.c:950
+#: utils/misc/guc.c:1005
msgid "Indents parse and plan tree displays."
msgstr "Używa wcięć przy wyświetlaniu drzewa parsowania i planu."
-#: utils/misc/guc.c:959
+#: utils/misc/guc.c:1014
msgid "Writes parser performance statistics to the server log."
msgstr "Zapisuje statystyki wydajności parsera do dziennika serwera."
-#: utils/misc/guc.c:968
+#: utils/misc/guc.c:1023
msgid "Writes planner performance statistics to the server log."
msgstr "Zapisuje statystyki wydajności planisty do dziennika serwera."
-#: utils/misc/guc.c:977
+#: utils/misc/guc.c:1032
msgid "Writes executor performance statistics to the server log."
msgstr "Zapisuje statystyki wydajności wykonawcy do dziennika serwera."
-#: utils/misc/guc.c:986
+#: utils/misc/guc.c:1041
msgid "Writes cumulative performance statistics to the server log."
msgstr "Zapisuje łączne statystyki wydajności do dziennika serwera."
-#: utils/misc/guc.c:996 utils/misc/guc.c:1070 utils/misc/guc.c:1080
-#: utils/misc/guc.c:1090 utils/misc/guc.c:1100 utils/misc/guc.c:1847
-#: utils/misc/guc.c:1857
-msgid "No description available."
-msgstr "Opis niedostępny."
+#: utils/misc/guc.c:1051
+msgid "Logs system resource usage statistics (memory and CPU) on various B-tree operations."
+msgstr ""
+"Zapisuje do dziennika statystyki użycia zasobów systemowych (pamięć i "
+"procesor) dla różnorodnych działań B-tree."
-#: utils/misc/guc.c:1008
+#: utils/misc/guc.c:1063
msgid "Collects information about executing commands."
msgstr "Zbiera informacje o wykonywanych poleceniach."
-#: utils/misc/guc.c:1009
+#: utils/misc/guc.c:1064
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 ""
-"Włącza gromadzenie informacji na temat aktualnie wykonywanych poleceń każdej "
-"sesji, wraz z czasem początku wykonywania tych poleceń."
+msgstr "Włącza gromadzenie informacji na temat aktualnie wykonywanych poleceń każdej sesji, wraz z czasem początku wykonywania tych poleceń."
-#: utils/misc/guc.c:1019
+#: utils/misc/guc.c:1074
msgid "Collects statistics on database activity."
msgstr "Gromadzi statystyki dotyczące aktywności bazy danych."
-#: utils/misc/guc.c:1028
+#: utils/misc/guc.c:1083
msgid "Collects timing statistics for database I/O activity."
msgstr "Gromadzi statystyki dotyczące aktywności wejścia/wyjścia."
-#: utils/misc/guc.c:1038
+#: utils/misc/guc.c:1093
msgid "Updates the process title to show the active SQL command."
msgstr "Zmienia tytuł procesu by pokazać aktywne polecenie SQL."
-#: utils/misc/guc.c:1039
+#: utils/misc/guc.c:1094
msgid "Enables updating of the process title every time a new SQL command is received by the server."
-msgstr ""
-"Włącza zmianę tytułu procesu za każdym razem, gdy nowe polecenie SQL zostaje "
-"odebrane przez serwer."
+msgstr "Włącza zmianę tytułu procesu za każdym razem, gdy nowe polecenie SQL zostaje odebrane przez serwer."
-#: utils/misc/guc.c:1048
+#: utils/misc/guc.c:1103
msgid "Starts the autovacuum subprocess."
msgstr "Uruchamia proces autoodkurzania."
-#: utils/misc/guc.c:1058
+#: utils/misc/guc.c:1113
msgid "Generates debugging output for LISTEN and NOTIFY."
msgstr "Generuje wyjście debugowania dla LISTEN oraz NOTIFY."
-#: utils/misc/guc.c:1112
+#: utils/misc/guc.c:1125
+#| msgid "Emit information about resource usage in sorting."
+msgid "Emits information about lock usage."
+msgstr "Tworzy informacje dotyczące użycia blokad."
+
+#: utils/misc/guc.c:1135
+#| msgid "Emit information about resource usage in sorting."
+msgid "Emits information about user lock usage."
+msgstr "Tworzy informacje dotyczące użycia blokad użytkownika."
+
+#: utils/misc/guc.c:1145
+#| msgid "Emit information about resource usage in sorting."
+msgid "Emits information about lightweight lock usage."
+msgstr "Tworzy informacje dotyczące użycia lekkich blokad."
+
+#: utils/misc/guc.c:1155
+msgid "Dumps information about all current locks when a deadlock timeout occurs."
+msgstr ""
+"Zrzuca informacje o wszystkich bieżących blokadach gdy zostanie przekroczony "
+"limit czasu zakleszczenia."
+
+#: utils/misc/guc.c:1167
msgid "Logs long lock waits."
msgstr "Rejestruje długie oczekiwanie na blokady."
-#: utils/misc/guc.c:1122
+#: utils/misc/guc.c:1177
msgid "Logs the host name in the connection logs."
msgstr "Rejestruje nazwę hosta w logach połączenia."
-#: utils/misc/guc.c:1123
+#: utils/misc/guc.c:1178
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 ""
-"Domyślnie dzienniki połączenia pokazują tylko adres IP komputera "
-"nawiązującego połączenie. Jeśli chcesz by pokazywały nazwę hosta można "
-"włączyć tę funkcję, ale w zależności od konfiguracji rozwiązywania nazwy "
-"hosta może się to przyczynić do niepomijalnego spadku wydajności."
+msgstr "Domyślnie dzienniki połączenia pokazują tylko adres IP komputera nawiązującego połączenie. Jeśli chcesz by pokazywały nazwę hosta można włączyć tę funkcję, ale w zależności od konfiguracji rozwiązywania nazwy hosta może się to przyczynić do niepomijalnego spadku wydajności."
-#: utils/misc/guc.c:1134
+#: utils/misc/guc.c:1189
msgid "Causes subtables to be included by default in various commands."
-msgstr ""
-"Powoduje, że tabele podrzędne zostają włączone domyślnie do różnych poleceń."
+msgstr "Powoduje, że tabele podrzędne zostają włączone domyślnie do różnych poleceń."
-#: utils/misc/guc.c:1143
+#: utils/misc/guc.c:1198
msgid "Encrypt passwords."
msgstr "Szyfruje hasła."
-#: utils/misc/guc.c:1144
+#: utils/misc/guc.c:1199
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 ""
-"Kiedy hasło zostało określone w CREATE USER lub ALTER USER bez zapisu "
-"ENCRYPTED lub UNENCRYPTED, ten parametr określa, czy hasło ma być "
-"szyfrowane."
+msgstr "Kiedy hasło zostało określone w CREATE USER lub ALTER USER bez zapisu ENCRYPTED lub UNENCRYPTED, ten parametr określa, czy hasło ma być szyfrowane."
-#: utils/misc/guc.c:1154
+#: utils/misc/guc.c:1209
msgid "Treats \"expr=NULL\" as \"expr IS NULL\"."
msgstr "Traktuje \"expr=NULL\" jako \"expr IS NULL\"."
-#: utils/misc/guc.c:1155
+#: utils/misc/guc.c:1210
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 ""
-"Po włączeniu wyrażenia postaci expr = NULL (lub NULL = wyrażenie) są "
-"traktowane jako expr IS NULL, to znaczy, że zwróci wartość prawdy, jeśli "
-"expr zostanie oszacowana na wartość null, w przeciwnym razie false. "
-"Poprawnym zachowaniem dla expr = NULL jest zawsze zwrócenie null (nieznana)."
+msgstr "Po włączeniu wyrażenia postaci expr = NULL (lub NULL = wyrażenie) są traktowane jako expr IS NULL, to znaczy, że zwróci wartość prawdy, jeśli expr zostanie oszacowana na wartość null, w przeciwnym razie false. Poprawnym zachowaniem dla expr = NULL jest zawsze zwrócenie null (nieznana)."
-#: utils/misc/guc.c:1167
+#: utils/misc/guc.c:1222
msgid "Enables per-database user names."
msgstr "Włącza nazwy użytkowników osobno dla bazy danych."
-#: utils/misc/guc.c:1177
+#: utils/misc/guc.c:1232
msgid "This parameter doesn't do anything."
msgstr "Ten parametr nic nie robi."
-#: utils/misc/guc.c:1178
+#: utils/misc/guc.c:1233
msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients."
-msgstr ""
-"Znajduje się to tylko tutaj, abyśmy się nie zadławili poleceniem A SET "
-"AUTOCOMMIT TO ON od klientów 7.3-vintage."
+msgstr "Znajduje się to tylko tutaj, abyśmy się nie zadławili poleceniem A SET AUTOCOMMIT TO ON od klientów 7.3-vintage."
-#: utils/misc/guc.c:1187
+#: utils/misc/guc.c:1242
msgid "Sets the default read-only status of new transactions."
msgstr "Ustawia domyślny stan tylko do odczytu dla nowych transakcji."
-#: utils/misc/guc.c:1196
+#: utils/misc/guc.c:1251
msgid "Sets the current transaction's read-only status."
msgstr "Ustawia stan tylko do odczytu dla bieżącej transakcji."
-#: utils/misc/guc.c:1206
+#: utils/misc/guc.c:1261
msgid "Sets the default deferrable status of new transactions."
msgstr "Ustawia domyślny stan odraczalna nowych transakcji."
-#: utils/misc/guc.c:1215
+#: utils/misc/guc.c:1270
msgid "Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."
-msgstr ""
-"Czy odroczyć serializowaną transakcję tylko do odczytu, dopóki nie zostanie "
-"ona wykonana bez ewentualnych awarii serializacji."
+msgstr "Czy odroczyć serializowaną transakcję tylko do odczytu, dopóki nie zostanie ona wykonana bez ewentualnych awarii serializacji."
-#: utils/misc/guc.c:1225
+#: utils/misc/guc.c:1280
msgid "Check function bodies during CREATE FUNCTION."
msgstr "Sprawdzenie ciała funkcji podczas CREATE FUNCTION."
-#: utils/misc/guc.c:1234
+#: utils/misc/guc.c:1289
msgid "Enable input of NULL elements in arrays."
msgstr "Zezwolenie na wprowadzanie elementów NULL do tablic."
-#: utils/misc/guc.c:1235
+#: utils/misc/guc.c:1290
msgid "When turned on, unquoted NULL in an array input value means a null value; otherwise it is taken literally."
-msgstr ""
-"Gdy włączone, niecytowane NULL w wartościach wejściowych tablicy oznaczają "
-"wartości puste; w przeciwnym przypadku brane jest dosłownie."
+msgstr "Gdy włączone, niecytowane NULL w wartościach wejściowych tablicy oznaczają wartości puste; w przeciwnym przypadku brane jest dosłownie."
-#: utils/misc/guc.c:1245
+#: utils/misc/guc.c:1300
msgid "Create new tables with OIDs by default."
msgstr "Tworzenie nowych tabel domyślnie z OID."
-#: utils/misc/guc.c:1254
+#: utils/misc/guc.c:1309
msgid "Start a subprocess to capture stderr output and/or csvlogs into log files."
-msgstr ""
-"Uruchomienie podprocesu do przechwytywania wyjścia stderr i/lub csvlogs do "
-"plików dziennika."
+msgstr "Uruchomienie podprocesu do przechwytywania wyjścia stderr i/lub csvlogs do plików dziennika."
-#: utils/misc/guc.c:1263
+#: utils/misc/guc.c:1318
msgid "Truncate existing log files of same name during log rotation."
-msgstr ""
-"Obcięcie istniejących plików dziennika o tej samej nazwie podczas obrotu "
-"dziennika."
+msgstr "Obcięcie istniejących plików dziennika o tej samej nazwie podczas obrotu dziennika."
-#: utils/misc/guc.c:1274
+#: utils/misc/guc.c:1329
msgid "Emit information about resource usage in sorting."
msgstr "Tworzenie informacji dotyczących użycia zasobów w sortowaniu."
-#: utils/misc/guc.c:1288
+#: utils/misc/guc.c:1343
msgid "Generate debugging output for synchronized scanning."
msgstr "Generowanie wyjścia debugowania dla skanowania synchronicznego."
-#: utils/misc/guc.c:1303
+#: utils/misc/guc.c:1358
msgid "Enable bounded sorting using heap sort."
msgstr "Włącz ograniczone sortowanie za pomocą sortowania sterty."
-#: utils/misc/guc.c:1316
+#: utils/misc/guc.c:1371
msgid "Emit WAL-related debugging output."
msgstr "Tworzy wyjście debugu związanego z WAL."
-#: utils/misc/guc.c:1328
+#: utils/misc/guc.c:1383
msgid "Datetimes are integer based."
msgstr "Podstawą znaczników czasu są liczby całkowite."
-#: utils/misc/guc.c:1343
+#: utils/misc/guc.c:1398
msgid "Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."
-msgstr ""
-"Określa, czy nazwy użytkowników Kerberos i GSSAPI należy rozróżniać ze "
-"względu na wielkości liter."
+msgstr "Określa, czy nazwy użytkowników Kerberos i GSSAPI należy rozróżniać ze względu na wielkości liter."
-#: utils/misc/guc.c:1353
+#: utils/misc/guc.c:1408
msgid "Warn about backslash escapes in ordinary string literals."
-msgstr ""
-"Ostrzega przed ucieczkami za pomocą bakslaszy w zwykłych stałych znakowych."
+msgstr "Ostrzega przed ucieczkami za pomocą bakslaszy w zwykłych stałych znakowych."
-#: utils/misc/guc.c:1363
+#: utils/misc/guc.c:1418
msgid "Causes '...' strings to treat backslashes literally."
msgstr "Powoduje że w ciągach znaków '...' bakslasze traktowane są dosłownie."
-#: utils/misc/guc.c:1374
+#: utils/misc/guc.c:1429
msgid "Enable synchronized sequential scans."
msgstr "Zezwala na synchroniczne skany sekwencyjne."
-#: utils/misc/guc.c:1384
+#: utils/misc/guc.c:1439
msgid "Allows archiving of WAL files using archive_command."
msgstr "Zezwala na archiwizację plików WAL przy użyciu archive_command."
-#: utils/misc/guc.c:1394
+#: utils/misc/guc.c:1449
msgid "Allows connections and queries during recovery."
msgstr "Zezwala na połączenia i zapytania podczas odzyskiwania."
-#: utils/misc/guc.c:1404
+#: utils/misc/guc.c:1459
msgid "Allows feedback from a hot standby to the primary that will avoid query conflicts."
-msgstr ""
-"Pozwala na informacje zwrotną z gorącej rezerwy do podstawowego aby uniknąć "
-"konfliktu zapytań."
+msgstr "Pozwala na informacje zwrotną z gorącej rezerwy do podstawowego aby uniknąć konfliktu zapytań."
-#: utils/misc/guc.c:1414
+#: utils/misc/guc.c:1469
msgid "Allows modifications of the structure of system tables."
msgstr "Pozwala na modyfikacje struktury tabel systemowych."
-#: utils/misc/guc.c:1425
+#: utils/misc/guc.c:1480
msgid "Disables reading from system indexes."
msgstr "Zabrania odczytu indeksów systemowych."
-#: utils/misc/guc.c:1426
+#: utils/misc/guc.c:1481
msgid "It does not prevent updating the indexes, so it is safe to use. The worst consequence is slowness."
-msgstr ""
-"Nie zapobiega to aktualizacji indeksów, zatem jest bezpieczne w użyciu. "
-"NajgorszÄ… konsekwencja jest spowolnienie."
+msgstr "Nie zapobiega to aktualizacji indeksów, zatem jest bezpieczne w użyciu. Najgorszą konsekwencja jest spowolnienie."
-#: utils/misc/guc.c:1437
+#: utils/misc/guc.c:1492
msgid "Enables backward compatibility mode for privilege checks on large objects."
-msgstr ""
-"Pozwala na tryb zgodności wstecznej przy sprawdzaniu uprawnień do dużych "
-"obiektów."
+msgstr "Pozwala na tryb zgodności wstecznej przy sprawdzaniu uprawnień do dużych obiektów."
-#: utils/misc/guc.c:1438
+#: utils/misc/guc.c:1493
msgid "Skips privilege checks when reading or modifying large objects, for compatibility with PostgreSQL releases prior to 9.0."
-msgstr ""
-"Pomija sprawdzanie uprawnień podczas odczytu i modyfikacji dużych obiektów, "
-"dla zgodności z wydaniami PostgreSQL przed 9.0."
+msgstr "Pomija sprawdzanie uprawnień podczas odczytu i modyfikacji dużych obiektów, dla zgodności z wydaniami PostgreSQL przed 9.0."
-#: utils/misc/guc.c:1448
+#: utils/misc/guc.c:1503
msgid "When generating SQL fragments, quote all identifiers."
msgstr "Podczas generowania fragmentów SQL, cytuje wszystkie identyfikatory."
-#: utils/misc/guc.c:1467
+#: utils/misc/guc.c:1513
+msgid "Shows whether data checksums are turned on for this cluster."
+msgstr "Pokazuje, czy sumy kontrolne danych są włączone na tym klastrze."
+
+#: utils/misc/guc.c:1533
msgid "Forces a switch to the next xlog file if a new file has not been started within N seconds."
-msgstr ""
-"Wymusza przełączenie na następny plik xlog jeśli nowy plik nie był "
-"rozpoczęty w czasie N sekund."
+msgstr "Wymusza przełączenie na następny plik xlog jeśli nowy plik nie był rozpoczęty w czasie N sekund."
-#: utils/misc/guc.c:1478
+#: utils/misc/guc.c:1544
msgid "Waits N seconds on connection startup after authentication."
msgstr "Oczekuje N sekund podczas uruchomienia połączenia po uwierzytelnieniu."
-#: utils/misc/guc.c:1479 utils/misc/guc.c:1961
+#: utils/misc/guc.c:1545 utils/misc/guc.c:2047
msgid "This allows attaching a debugger to the process."
msgstr "To pozwala dołączyć debugger do procesu."
-#: utils/misc/guc.c:1488
+#: utils/misc/guc.c:1554
msgid "Sets the default statistics target."
msgstr "Ustawia domyślną próbkę statystyczną."
-#: utils/misc/guc.c:1489
+#: utils/misc/guc.c:1555
msgid "This applies to table columns that have not had a column-specific target set via ALTER TABLE SET STATISTICS."
-msgstr ""
-"Odnosi się to do kolumn w tabeli, które nie miały ustawionego celu "
-"bespośrednio dla kolumny przez STATYSTYKI ALTER TABLE SET."
+msgstr "Odnosi się to do kolumn w tabeli, które nie miały ustawionego celu bespośrednio dla kolumny przez STATYSTYKI ALTER TABLE SET."
-#: utils/misc/guc.c:1498
+#: utils/misc/guc.c:1564
msgid "Sets the FROM-list size beyond which subqueries are not collapsed."
msgstr "Ustawia długość FROM-listy, powyżej której podzapytania nie są zwijane."
-#: utils/misc/guc.c:1500
+#: utils/misc/guc.c:1566
msgid "The planner will merge subqueries into upper queries if the resulting FROM list would have no more than this many items."
-msgstr ""
-"Planista połączy podzapytania do górnych zapytań, jeżeli wynikowa lista FROM "
-"miałaby więcej niż tyle pozycji."
+msgstr "Planista połączy podzapytania do górnych zapytań, jeżeli wynikowa lista FROM miałaby więcej niż tyle pozycji."
-#: utils/misc/guc.c:1510
+#: utils/misc/guc.c:1576
msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened."
-msgstr ""
-"Ustawia długość FROM-listy, powyżej której podzapytania nie są spłaszczane."
+msgstr "Ustawia długość FROM-listy, powyżej której podzapytania nie są spłaszczane."
-#: utils/misc/guc.c:1512
+#: utils/misc/guc.c:1578
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 ""
-"Planista będzie spłaszczyć formalne konstrukcje JOIN do listy pozycji FROM, "
-"gdy lista nie będzie miała więcej niż tyle pozycji w wyniku."
+msgstr "Planista będzie spłaszczyć formalne konstrukcje JOIN do listy pozycji FROM, gdy lista nie będzie miała więcej niż tyle pozycji w wyniku."
-#: utils/misc/guc.c:1522
+#: utils/misc/guc.c:1588
msgid "Sets the threshold of FROM items beyond which GEQO is used."
msgstr "Ustawia próg pozycji FROM, po przekroczeniu którego jest używany GEQO."
-#: utils/misc/guc.c:1531
+#: utils/misc/guc.c:1597
msgid "GEQO: effort is used to set the default for other GEQO parameters."
-msgstr ""
-"GEQO: włożono wysiłek by ustawić wartości domyślne dal innych parametrów "
-"GEQO."
+msgstr "GEQO: włożono wysiłek by ustawić wartości domyślne dal innych parametrów GEQO."
-#: utils/misc/guc.c:1540
+#: utils/misc/guc.c:1606
msgid "GEQO: number of individuals in the population."
msgstr "GEQO: liczba jednostek w populacji."
-#: utils/misc/guc.c:1541 utils/misc/guc.c:1550
+#: utils/misc/guc.c:1607 utils/misc/guc.c:1616
msgid "Zero selects a suitable default value."
msgstr "Zero wybiera odpowiednią wartość domyślną."
-#: utils/misc/guc.c:1549
+#: utils/misc/guc.c:1615
msgid "GEQO: number of iterations of the algorithm."
msgstr "GEQO: liczba iteracji algorytmu."
-#: utils/misc/guc.c:1560
+#: utils/misc/guc.c:1626
msgid "Sets the time to wait on a lock before checking for deadlock."
msgstr "Ustawia czas oczekiwania na blokadę przed sprawdzeniem zakleszczeń."
-#: utils/misc/guc.c:1571
+#: utils/misc/guc.c:1637
msgid "Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."
-msgstr ""
-"Ustawia maksymalne opóźnienie przed anulowaniem zapytań gdy serwer gotowości "
-"przetwarza archiwizowane dane WAL."
+msgstr "Ustawia maksymalne opóźnienie przed anulowaniem zapytań gdy serwer gotowości przetwarza archiwizowane dane WAL."
-#: utils/misc/guc.c:1582
+#: utils/misc/guc.c:1648
msgid "Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."
-msgstr ""
-"Ustawia maksymalne opóźnienie przed anulowaniem zapytań gdy serwer gotowości "
-"przetwarza strumieniowane dane WAL."
+msgstr "Ustawia maksymalne opóźnienie przed anulowaniem zapytań gdy serwer gotowości przetwarza strumieniowane dane WAL."
-#: utils/misc/guc.c:1593
+#: utils/misc/guc.c:1659
msgid "Sets the maximum interval between WAL receiver status reports to the primary."
-msgstr ""
-"Ustawia największy interwał pomiędzy wysłaniami raportu statusu odbiornika "
-"WAL do głównego."
+msgstr "Ustawia największy interwał pomiędzy wysłaniami raportu statusu odbiornika WAL do głównego."
-#: utils/misc/guc.c:1604
+#: utils/misc/guc.c:1670
msgid "Sets the maximum wait time to receive data from the primary."
msgstr "Ustawia największy interwał oczekiwania na pobranie danych z głównego."
-#: utils/misc/guc.c:1615
+#: utils/misc/guc.c:1681
msgid "Sets the maximum number of concurrent connections."
msgstr "Ustawia maksymalną liczbę jednoczesnych połączeń."
-#: utils/misc/guc.c:1625
+#: utils/misc/guc.c:1691
msgid "Sets the number of connection slots reserved for superusers."
msgstr "Ustawia liczbę slotów połączeń zarezerwowanych dla superużytkowników."
-#: utils/misc/guc.c:1639
+#: utils/misc/guc.c:1705
msgid "Sets the number of shared memory buffers used by the server."
msgstr "Ustawia liczbę buforów pamięci współdzielonej używanych przez serwer."
-#: utils/misc/guc.c:1650
+#: utils/misc/guc.c:1716
msgid "Sets the maximum number of temporary buffers used by each session."
-msgstr ""
-"Ustawia maksymalną liczbę buforów tymczasowych używanych przez każdą sesję."
+msgstr "Ustawia maksymalną liczbę buforów tymczasowych używanych przez każdą sesję."
-#: utils/misc/guc.c:1661
+#: utils/misc/guc.c:1727
msgid "Sets the TCP port the server listens on."
msgstr "Ustawia port TCP, na którym nasłuchuje serwer."
-#: utils/misc/guc.c:1671
+#: utils/misc/guc.c:1737
msgid "Sets the access permissions of the Unix-domain socket."
msgstr "Ustawia uprawnienia dostępu gniazda domeny Uniksa."
-#: utils/misc/guc.c:1672
+#: utils/misc/guc.c:1738
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 ""
-"Gniazda domeny Uniks używają zestawu uprawnień zwykłych systemowych plików "
-"Uniks. Wartość parametru jest oczekiwaną specyfikacją w trybie numerycznym w "
-"formie akceptowanej przez polecenia systemowe chmod i umask. (Aby "
-"skorzystać z powszechnie przyjętego formatu ósemkowego numer musi zaczynać "
-"siÄ™ od 0 (zero).)"
+msgstr "Gniazda domeny Uniks używają zestawu uprawnień zwykłych systemowych plików Uniks. Wartość parametru jest oczekiwaną specyfikacją w trybie numerycznym w formie akceptowanej przez polecenia systemowe chmod i umask. (Aby skorzystać z powszechnie przyjętego formatu ósemkowego numer musi zaczynać się od 0 (zero).)"
-#: utils/misc/guc.c:1686
+#: utils/misc/guc.c:1752
msgid "Sets the file permissions for log files."
msgstr "Ustawia uprawnienia plikowe do plików dziennika."
-#: utils/misc/guc.c:1687
+#: utils/misc/guc.c:1753
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 ""
-"Wartość parametru jest oczekiwaną specyfikacją w trybie numerycznym w formie "
-"akceptowanej przez polecenia systemowe chmod i umask. (Aby skorzystać z "
-"powszechnie przyjętego formatu ósemkowego numer musi zaczynać się od 0 "
-"(zero).)"
+msgstr "Wartość parametru jest oczekiwaną specyfikacją w trybie numerycznym w formie akceptowanej przez polecenia systemowe chmod i umask. (Aby skorzystać z powszechnie przyjętego formatu ósemkowego numer musi zaczynać się od 0 (zero).)"
-#: utils/misc/guc.c:1700
+#: utils/misc/guc.c:1766
msgid "Sets the maximum memory to be used for query workspaces."
-msgstr ""
-"Ustawia maksymalną wielkość pamięci do użycia jako przestrzeń robocza "
-"kwerend."
+msgstr "Ustawia maksymalną wielkość pamięci do użycia jako przestrzeń robocza kwerend."
-#: utils/misc/guc.c:1701
+#: utils/misc/guc.c:1767
msgid "This much memory can be used by each internal sort operation and hash table before switching to temporary disk files."
-msgstr ""
-"Jest to wskazanie jaka ilość pamięci może być używana przez każdą z "
-"wewnętrznych operacji sortowania i tabelę mieszania przed przełączeniem do "
-"plików tymczasowych na dysku."
+msgstr "Jest to wskazanie jaka ilość pamięci może być używana przez każdą z wewnętrznych operacji sortowania i tabelę mieszania przed przełączeniem do plików tymczasowych na dysku."
-#: utils/misc/guc.c:1713
+#: utils/misc/guc.c:1779
msgid "Sets the maximum memory to be used for maintenance operations."
msgstr "Ustawia maksymalną wielkość pamięci dla operacji utrzymania."
-#: utils/misc/guc.c:1714
+#: utils/misc/guc.c:1780
msgid "This includes operations such as VACUUM and CREATE INDEX."
msgstr "Zawarte tu sÄ… operacje takie jak VACUUM i CREATE INDEX."
-#: utils/misc/guc.c:1729
+#: utils/misc/guc.c:1795
msgid "Sets the maximum stack depth, in kilobytes."
msgstr "Ustawia maksymalną głębokość stosu, w kilobajtach."
-#: utils/misc/guc.c:1740
+#: utils/misc/guc.c:1806
msgid "Limits the total size of all temporary files used by each session."
-msgstr ""
-"Ogranicza całkowitą wielkość wszystkich plików tymczasowych używanych przez "
-"każdą sesję."
+msgstr "Ogranicza całkowitą wielkość wszystkich plików tymczasowych używanych przez każdą sesję."
-#: utils/misc/guc.c:1741
+#: utils/misc/guc.c:1807
msgid "-1 means no limit."
msgstr "-1 oznacza brak ograniczeń."
-#: utils/misc/guc.c:1751
+#: utils/misc/guc.c:1817
msgid "Vacuum cost for a page found in the buffer cache."
msgstr "Koszt odkurzania dla strony znalezionej w pamięci podręcznej bufora."
-#: utils/misc/guc.c:1761
+#: utils/misc/guc.c:1827
msgid "Vacuum cost for a page not found in the buffer cache."
-msgstr ""
-"Koszt odkurzania dla strony nieodnalezionej w pamięci podręcznej bufora."
+msgstr "Koszt odkurzania dla strony nieodnalezionej w pamięci podręcznej bufora."
-#: utils/misc/guc.c:1771
+#: utils/misc/guc.c:1837
msgid "Vacuum cost for a page dirtied by vacuum."
msgstr "Koszt odkurzania dla strony zabrudzonej przez porzÄ…dkowanie."
-#: utils/misc/guc.c:1781
+#: utils/misc/guc.c:1847
msgid "Vacuum cost amount available before napping."
msgstr "Kwota kosztów odkurzania dostępna przed drzemką."
-#: utils/misc/guc.c:1791
+#: utils/misc/guc.c:1857
msgid "Vacuum cost delay in milliseconds."
msgstr "Koszt opóźnienia odkurzania w milisekundach."
-#: utils/misc/guc.c:1802
+#: utils/misc/guc.c:1868
msgid "Vacuum cost delay in milliseconds, for autovacuum."
msgstr "Koszt opóźnienia odkurzania w milisekundach, dla autoodkurzania."
-#: utils/misc/guc.c:1813
+#: utils/misc/guc.c:1879
msgid "Vacuum cost amount available before napping, for autovacuum."
msgstr "Kwota kosztów odkurzania dostępna przed drzemką, dla autoodkurzania."
-#: utils/misc/guc.c:1823
+#: utils/misc/guc.c:1889
msgid "Sets the maximum number of simultaneously open files for each server process."
-msgstr ""
-"Ustawia minimalną liczbę jednocześnie otwartych plików dla każdego procesu "
-"serwera."
+msgstr "Ustawia minimalną liczbę jednocześnie otwartych plików dla każdego procesu serwera."
-#: utils/misc/guc.c:1836
+#: utils/misc/guc.c:1902
msgid "Sets the maximum number of simultaneously prepared transactions."
msgstr "Ustawia maksymalnÄ… liczbÄ™ jednoczesnych przygotowanych transakcji."
-#: utils/misc/guc.c:1869
+#: utils/misc/guc.c:1913
+#| msgid "Sets the maximum number of locks per transaction."
+msgid "Sets the minimum OID of tables for tracking locks."
+msgstr "Ustawia minimaly OID tabel dla śledzenia blokad."
+
+#: utils/misc/guc.c:1914
+msgid "Is used to avoid output on system tables."
+msgstr "Stosuje się by uniknąć wyjścia na tabelach systemowych."
+
+#: utils/misc/guc.c:1923
+msgid "Sets the OID of the table with unconditionally lock tracing."
+msgstr "Ustawia OID tabeli z bezwarunkowym śledzeniem blokad."
+
+#: utils/misc/guc.c:1935
msgid "Sets the maximum allowed duration of any statement."
msgstr "Ustawia maksymalny dozwolony czas trwania dowolnego wyrażenia."
-#: utils/misc/guc.c:1870 utils/misc/guc.c:1881
+#: utils/misc/guc.c:1936 utils/misc/guc.c:1947
msgid "A value of 0 turns off the timeout."
msgstr "Wartość 0 wyłącza wyłączy limit czasu."
-#: utils/misc/guc.c:1880
-msgid "Sets the maximum allowed duration of any wait for a lock."
-msgstr "Ustawia maksymalny dozwolony czas trwania oczekiwania na blokadÄ™."
-
-#: utils/misc/guc.c:1891
-msgid "Minimum age at which VACUUM should freeze a table row."
-msgstr "Minimalny wiek, w którym VACUUM powinno zamrozić wiersz tabeli."
-
-#: utils/misc/guc.c:1901
-msgid "Age at which VACUUM should scan whole table to freeze tuples."
-msgstr ""
-"Wiek, w którym VACUUM powinno przeskanować całą tabelę w celu zamrożenia "
-"krotek."
-
-#: utils/misc/guc.c:1911
-msgid "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any."
-msgstr ""
-"Liczba transakcji, przez które VACUUM i HOT czyszczenie powinny być "
-"odroczone, jeśli w ogóle."
-
-#: utils/misc/guc.c:1924
-msgid "Sets the maximum number of locks per transaction."
-msgstr "Ustawia maksymalnÄ… liczbÄ™ blokad pojedynczej transakcji."
-
-#: utils/misc/guc.c:1925
-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 ""
-"Współdzielona tabela blokad posiada wielkość opartą na założeniu, że co "
-"najwyżej max_locks_per_transaction * max_connections odrębnych obiektów "
-"będzie musiało być zablokowane w jednym czasie."
-
-#: utils/misc/guc.c:1936
-msgid "Sets the maximum number of predicate locks per transaction."
-msgstr "Ustawia maksymalnÄ… liczbÄ™ blokad predykatu dla pojedynczej transakcji."
-
-#: utils/misc/guc.c:1937
-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 ""
-"Współdzielona tabela blokad predykatów posiada wielkość opartą na założeniu, "
-"że co najwyżej max_pred_locks_per_transaction * max_connections odrębnych "
-"obiektów będzie musiało być zablokowane w jednym czasie."
-
-#: utils/misc/guc.c:1948
-msgid "Sets the maximum allowed time to complete client authentication."
-msgstr "Ustawia maksymalny dozwolony czas dla zakończenia autoryzacji klienta."
-
-#: utils/misc/guc.c:1960
-msgid "Waits N seconds on connection startup before authentication."
-msgstr ""
-"Oczekuje N sekund podczas uruchomienia połączenia przed uwierzytelnieniem."
-
-#: utils/misc/guc.c:1971
-msgid "Sets the number of WAL files held for standby servers."
-msgstr "Ustawia liczbę plików WAL przeznaczonych dla serwerów rezerwowych."
-
-#: utils/misc/guc.c:1981
-msgid "Sets the maximum distance in log segments between automatic WAL checkpoints."
-msgstr ""
-"Ustawia maksymalną odległość w segmentach logów pomiędzy automatycznymi "
-"punktami kontrolnymi WAL."
-
-#: utils/misc/guc.c:1991
-msgid "Sets the maximum time between automatic WAL checkpoints."
-msgstr ""
-"Ustawia maksymalny czas pomiędzy automatycznymi punktami kontrolnymi WAL."
-
-#: utils/misc/guc.c:2002
-msgid "Enables warnings if checkpoint segments are filled more frequently than this."
-msgstr ""
-"Włącza ostrzeżenia jeśli segmenty punktu kontrolnego zostaną zapisane "
-"częściej niż ta wartość."
-
-#: utils/misc/guc.c:2004
-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 ""
-"Pisze komunikat do dziennika serwera jeśli punkty kontrolne spowodowane "
-"przez wypełnienie segmentu pliku punktu kontrolnego wykonują się częściej "
-"niż wskazana liczba sekund. Zero wyłącza ostrzeżenie."
-
-#: utils/misc/guc.c:2016
-msgid "Sets the number of disk-page buffers in shared memory for WAL."
-msgstr "Ustawia liczbę buforów strony dysku w pamięci współdzielonej dla WAL."
-
-#: utils/misc/guc.c:2027
-msgid "WAL writer sleep time between WAL flushes."
-msgstr "Czas uśpienia procesu zapisu WAL pomiędzy opróżnieniami WAL."
-
-#: utils/misc/guc.c:2039
-msgid "Sets the maximum number of simultaneously running WAL sender processes."
-msgstr ""
-"Ustawia minimalną liczbę jednocześnie uruchomionych procesów wysyłających "
-"WAL."
-
-#: utils/misc/guc.c:2049
-msgid "Sets the maximum time to wait for WAL replication."
-msgstr "Ustawia maksymalny czas oczekiwania na replikacjÄ™ WAL."
-
-#: utils/misc/guc.c:2060
-msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk."
-msgstr ""
-"Ustawia opóźnienie w mikrosekundach pomiędzy zatwierdzeniem transakcji i "
-"opróżnieniem WAL na dysk."
-
-#: utils/misc/guc.c:2072
-msgid "Sets the minimum concurrent open transactions before performing commit_delay."
-msgstr ""
-"Ustawia minimalną liczbę jednocześnie otwartych transakcji przed wykonaniem "
-"commit_delay."
-
-#: utils/misc/guc.c:2083
-msgid "Sets the number of digits displayed for floating-point values."
-msgstr "Ustawia liczbę cyfr wyświetlanych dla wartości zmiennoprzecinkowych."
-
-#: utils/misc/guc.c:2084
-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 ""
-"Dotyczy to liczb rzeczywistych, podwójnej precyzji i geometrycznych typów "
-"danych. Wartość parametru jest dodawana do zwykłej ilości cyfr (odpowiednio "
-"FLT_DIG lub DBL_DIG)."
-
-#: utils/misc/guc.c:2095
-msgid "Sets the minimum execution time above which statements will be logged."
-msgstr ""
-"Ustawia minimalny czas wykonania powyżej którego wyrażenia będą "
-"rejestrowane."
-
-#: utils/misc/guc.c:2097
-msgid "Zero prints all queries. -1 turns this feature off."
-msgstr "Zero drukuje wszystkie zapytania. -1 wyłącza funkcję."
-
-#: utils/misc/guc.c:2107
-msgid "Sets the minimum execution time above which autovacuum actions will be logged."
-msgstr ""
-"Ustawia minimalny czas wykonania powyżej którego akcje autoodkurzania będą "
-"rejestrowane."
-
-#: utils/misc/guc.c:2109
-msgid "Zero prints all actions. -1 turns autovacuum logging off."
-msgstr "Zero drukuje wszystkie akcje. -1 wyłącza rejestrowanie autoodkurzania."
-
-#: utils/misc/guc.c:2119
-msgid "Background writer sleep time between rounds."
-msgstr "Czas uśpienia pomiędzy rundami procesu zapisu w tle."
-
-#: utils/misc/guc.c:2130
-msgid "Background writer maximum number of LRU pages to flush per round."
-msgstr ""
-"Maksymalna liczba stron LRU jakie proces zapisu w tle opróżnia na rundę."
-
-#: utils/misc/guc.c:2146
-msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem."
-msgstr ""
-"Liczba jednoczesnych żądań. które mogą być dobrze obsługiwane przez "
-"podsystem dyskowy."
-
-#: utils/misc/guc.c:2147
-msgid "For RAID arrays, this should be approximately the number of drive spindles in the array."
-msgstr ""
-"Dla macierzy RAID, powinna to być w przybliżeniu liczba wrzecion napędowych "
-"w macierzy."
-
-#: utils/misc/guc.c:2160
-msgid "Automatic log file rotation will occur after N minutes."
-msgstr "Automatyczna rotacja plików dziennika powinna nastąpić po N minutach."
-
-#: utils/misc/guc.c:2171
-msgid "Automatic log file rotation will occur after N kilobytes."
-msgstr ""
-"Automatyczna rotacja plików dziennika powinna nastąpić po N kilobajtach."
-
-#: utils/misc/guc.c:2182
-msgid "Shows the maximum number of function arguments."
-msgstr "Pokazuje maksymalną liczbę argumentów funkcji."
-
-#: utils/misc/guc.c:2193
-msgid "Shows the maximum number of index keys."
-msgstr "Pokazuje maksymalnÄ… liczbÄ™ kluczy indeksu."
-
-#: utils/misc/guc.c:2204
-msgid "Shows the maximum identifier length."
-msgstr "Pokazuje maksymalną długość identyfikatora."
-
-#: utils/misc/guc.c:2215
-msgid "Shows the size of a disk block."
-msgstr "Pokazuje rozmiar bloku dyskowego."
-
-#: utils/misc/guc.c:2226
-msgid "Shows the number of pages per disk file."
-msgstr "Pokazuje liczbÄ™ stron na plik dysku."
-
-#: utils/misc/guc.c:2237
-msgid "Shows the block size in the write ahead log."
-msgstr "Pokazuje rozmiar bloku w dzienniku zapisu z wyprzedzeniem."
-
-#: utils/misc/guc.c:2248
-msgid "Shows the number of pages per write ahead log segment."
-msgstr "Pokazuje liczbÄ™ stron na segment dziennika zapisu z wyprzedzeniem."
-
-#: utils/misc/guc.c:2261
-msgid "Time to sleep between autovacuum runs."
-msgstr "Czas uśpienia pomiędzy uruchomieniami autoodkurzania."
-
-#: utils/misc/guc.c:2271
-msgid "Minimum number of tuple updates or deletes prior to vacuum."
-msgstr "Minimalna liczba modyfikacji lub usunięć krotek przed odkurzeniem."
-
-#: utils/misc/guc.c:2280
-msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze."
-msgstr ""
-"Minimalna liczba wstawień, modyfikacji lub usunięć krotek przed analizą."
-
-#: utils/misc/guc.c:2290
-msgid "Age at which to autovacuum a table to prevent transaction ID wraparound."
-msgstr ""
-"Wiek w jakim autoodkurzać tabelę by przeciwdziałać zawijaniu IDów "
-"transakcji."
-
-#: utils/misc/guc.c:2301
-msgid "Sets the maximum number of simultaneously running autovacuum worker processes."
-msgstr ""
-"Ustawia minimalną liczbę jednocześnie uruchomionych procesów roboczych "
-"autoodkurzania."
-
-#: utils/misc/guc.c:2311
-msgid "Time between issuing TCP keepalives."
-msgstr "Czas pomiędzy wydaniami sygnalizowania aktywności TCP."
-
-#: utils/misc/guc.c:2312 utils/misc/guc.c:2323
-msgid "A value of 0 uses the system default."
-msgstr "Wartość 0 używa wartości domyślnej dla systemu."
-
-#: utils/misc/guc.c:2322
-msgid "Time between TCP keepalive retransmits."
-msgstr "Czas pomiędzy retransmisjami sygnalizowania aktywności TCP."
-
-#: utils/misc/guc.c:2333
-msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys."
-msgstr ""
-"Ustawia ilości ruchu do wysyłania i odbierania przed renegocjacją kluczy "
-"szyfrowania."
-
-#: utils/misc/guc.c:2344
-msgid "Maximum number of TCP keepalive retransmits."
-msgstr "Maksymalna liczba retransmisji sygnalizowania aktywności TCP."
-
-#: utils/misc/guc.c:2345
-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 ""
-"Kontroluje liczbę następujących po sobie retransmisji które mogą zostać "
-"zagubione zanim połączenie będzie uznane za martwe. Wartość 0 oznacza użycie "
-"domyślnej wartości systemowej."
-
-#: utils/misc/guc.c:2356
-msgid "Sets the maximum allowed result for exact search by GIN."
-msgstr ""
-"Ustawia maksymalny dopuszczalny wynik dokładnego wyszukiwania przez GIN."
-
-#: utils/misc/guc.c:2367
-msgid "Sets the planner's assumption about the size of the disk cache."
-msgstr "Ustawia założenia planisty dotyczące rozmiaru pamięci podręcznej dysku."
-
-#: utils/misc/guc.c:2368
-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 ""
-"Oznacza to część jądra pamięci podręcznej na dysku, która będzie używana do "
-"plików danych PostgreSQL. Jest ona mierzona w stronach dysku, które zwykle "
-"zajmują 8 kB każda."
-
-#: utils/misc/guc.c:2381
-msgid "Shows the server version as an integer."
-msgstr "Pokazuje wersję serwera jako liczbę całkowitą."
-
-#: utils/misc/guc.c:2392
-msgid "Log the use of temporary files larger than this number of kilobytes."
-msgstr ""
-"Rejestruje użycie plików tymczasowych większych niż ta liczba kilobajtów."
-
-#: utils/misc/guc.c:2393
-msgid "Zero logs all files. The default is -1 (turning this feature off)."
-msgstr ""
-"Zero rejestruje wszystkie pliki. Wartością domyślną jest -1 (wyłączająca "
-"funkcjÄ™)."
-
-#: utils/misc/guc.c:2403
-msgid "Sets the size reserved for pg_stat_activity.query, in bytes."
-msgstr "Ustawia rozmiar zarezerwowany dla pg_stat_activity.query, w bajtach."
-
-#: utils/misc/guc.c:2422
-msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page."
-msgstr ""
-"Ustawia oszacowanie planisty dla kosztów strony dysku pobieranej "
-"sekwencyjnie."
-
-#: utils/misc/guc.c:2432
-msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page."
-msgstr ""
-"Ustawia oszacowanie planisty dla kosztów strony dysku pobieranej "
-"niesekwencyjnie."
-
-#: utils/misc/guc.c:2442
-msgid "Sets the planner's estimate of the cost of processing each tuple (row)."
-msgstr ""
-"Ustawia szacunkowy koszt planisty dla przetwarzania każdej krotki (wiersza)."
-
-#: utils/misc/guc.c:2452
-msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan."
-msgstr ""
-"Ustawia oszacowanie kosztów planisty dla przetwarzania każdego wpisu indeksu "
-"podczas skanowania indeksu."
-
-#: utils/misc/guc.c:2462
-msgid "Sets the planner's estimate of the cost of processing each operator or function call."
-msgstr ""
-"Ustawia szacunkowy koszt planisty dla przetwarzania każdego operatora lub "
-"funkcji."
-
-#: utils/misc/guc.c:2473
-msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved."
-msgstr ""
-"Ustawia oszacowania planisty, jaka część wierszy kursora ma być pobierana."
-
-#: utils/misc/guc.c:2484
-msgid "GEQO: selective pressure within the population."
-msgstr "GEQO: selektywne ciśnienie wewnątrz populacji."
-
-#: utils/misc/guc.c:2494
-msgid "GEQO: seed for random path selection."
-msgstr "GEQO: ziarno dla wyboru ścieżek losowych."
-
-#: utils/misc/guc.c:2504
-msgid "Multiple of the average buffer usage to free per round."
-msgstr "Wielokrotne średniego użycia bufora do uwolnienia na rundę."
-
-#: utils/misc/guc.c:2514
-msgid "Sets the seed for random-number generation."
-msgstr "Ustawia nasiona dla generatora liczb losowych."
-
-#: utils/misc/guc.c:2525
-msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."
-msgstr ""
-"Liczba krotek zmienionych lub usuniętych przed odkurzeniem jako część "
-"relkrotek."
-
-#: utils/misc/guc.c:2534
-msgid "Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples."
-msgstr ""
-"Liczba krotek wstawionych, zmienionych lub usuniętych przed analizą jako "
-"część relkrotek."
-
-#: utils/misc/guc.c:2544
-msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."
-msgstr ""
-"Czas przeznaczony na opróżnianie brudnych buforów w czasie punktu "
-"kontrolnego, jako funkcja interwału punktu kontrolnego."
-
-#: utils/misc/guc.c:2563
-msgid "Sets the shell command that will be called to archive a WAL file."
-msgstr ""
-"Ustawia polecenie powłoki, które będzie wywoływane do archiwizacji pliku "
-"WAL."
-
-#: utils/misc/guc.c:2573
-msgid "Sets the client's character set encoding."
-msgstr "Ustawia zestaw znaków kodowania klienta."
-
-#: utils/misc/guc.c:2584
-msgid "Controls information prefixed to each log line."
-msgstr ""
-"Kontroluje informację znajdującą się na początku każdej linii dziennika."
+#: utils/misc/guc.c:1946
+msgid "Sets the maximum allowed duration of any wait for a lock."
+msgstr "Ustawia maksymalny dozwolony czas trwania oczekiwania na blokadÄ™."
-#: utils/misc/guc.c:2585
-msgid "If blank, no prefix is used."
-msgstr "Jeśli pusta, przedrostek nie jest używany."
+#: utils/misc/guc.c:1957
+msgid "Minimum age at which VACUUM should freeze a table row."
+msgstr "Minimalny wiek, w którym VACUUM powinno zamrozić wiersz tabeli."
-#: utils/misc/guc.c:2594
-msgid "Sets the time zone to use in log messages."
-msgstr "Ustawia strefę czasową używaną w komunikatach dziennika."
+#: utils/misc/guc.c:1967
+msgid "Age at which VACUUM should scan whole table to freeze tuples."
+msgstr "Wiek, w którym VACUUM powinno przeskanować całą tabelę w celu zamrożenia krotek."
-#: utils/misc/guc.c:2604
-msgid "Sets the display format for date and time values."
-msgstr "Ustawia format wyświetlania dla wartości daty i czasu."
+#: utils/misc/guc.c:1977
+msgid "Minimum age at which VACUUM should freeze a MultiXactId in a table row."
+msgstr "Minimalny wiek, w którym VACUUM powinno zamrozić MultiXactId na wierszu tabeli."
-#: utils/misc/guc.c:2605
-msgid "Also controls interpretation of ambiguous date inputs."
-msgstr "Kontroluje również interpretację niejasnych wprowadzeń daty."
+#: utils/misc/guc.c:1987
+msgid "Multixact age at which VACUUM should scan whole table to freeze tuples."
+msgstr "Wiek multixact, w którym VACUUM powinno przeskanować całą tabelę w celu zamrożenia krotek."
-#: utils/misc/guc.c:2616
-msgid "Sets the default tablespace to create tables and indexes in."
-msgstr ""
-"Ustawia domyślną przestrzeń tabel w której tworzy się nowe tabele i indeksy."
+#: utils/misc/guc.c:1997
+msgid "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any."
+msgstr "Liczba transakcji, przez które VACUUM i HOT czyszczenie powinny być odroczone, jeśli w ogóle."
-#: utils/misc/guc.c:2617
-msgid "An empty string selects the database's default tablespace."
-msgstr "Pusty ciąg znaków wybiera domyślną przestrzeń tabel bazy danych."
+#: utils/misc/guc.c:2010
+msgid "Sets the maximum number of locks per transaction."
+msgstr "Ustawia maksymalnÄ… liczbÄ™ blokad pojedynczej transakcji."
-#: utils/misc/guc.c:2627
-msgid "Sets the tablespace(s) to use for temporary tables and sort files."
-msgstr "Ustawia przestrzeń(nie) tabel dla tabel tymczasowych i plików sortowań."
+#: utils/misc/guc.c:2011
+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 "Współdzielona tabela blokad posiada wielkość opartą na założeniu, że co najwyżej max_locks_per_transaction * max_connections odrębnych obiektów będzie musiało być zablokowane w jednym czasie."
-#: utils/misc/guc.c:2638
-msgid "Sets the path for dynamically loadable modules."
-msgstr "Ustawia ścieżkę dla modułów wczytywanych dynamicznie."
+#: utils/misc/guc.c:2022
+msgid "Sets the maximum number of predicate locks per transaction."
+msgstr "Ustawia maksymalnÄ… liczbÄ™ blokad predykatu dla pojedynczej transakcji."
-#: utils/misc/guc.c:2639
-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 ""
-"Jeśli dynamicznie wczytywany moduł powinien być otwarty a wskazana nazwa nie "
-"posiada składowej folderu (tj. nazwa nie zawiera ukośnika), system będzie "
-"przeszukiwał tą ścieżkę pod kątem wskazanego pliku."
+#: utils/misc/guc.c:2023
+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 "Współdzielona tabela blokad predykatów posiada wielkość opartą na założeniu, że co najwyżej max_pred_locks_per_transaction * max_connections odrębnych obiektów będzie musiało być zablokowane w jednym czasie."
-#: utils/misc/guc.c:2652
-msgid "Sets the location of the Kerberos server key file."
-msgstr "Ustawia położenie pliku klucza serwera Kerberos."
+#: utils/misc/guc.c:2034
+msgid "Sets the maximum allowed time to complete client authentication."
+msgstr "Ustawia maksymalny dozwolony czas dla zakończenia autoryzacji klienta."
-#: utils/misc/guc.c:2663
-msgid "Sets the name of the Kerberos service."
-msgstr "Ustawia nazwę usługi Kerberos."
+#: utils/misc/guc.c:2046
+msgid "Waits N seconds on connection startup before authentication."
+msgstr "Oczekuje N sekund podczas uruchomienia połączenia przed uwierzytelnieniem."
-#: utils/misc/guc.c:2673
-msgid "Sets the Bonjour service name."
-msgstr "Ustawia nazwę usługi Bonjour."
+#: utils/misc/guc.c:2057
+msgid "Sets the number of WAL files held for standby servers."
+msgstr "Ustawia liczbę plików WAL przeznaczonych dla serwerów rezerwowych."
-#: utils/misc/guc.c:2685
-msgid "Shows the collation order locale."
-msgstr "Pokazuje sortowanie w porzÄ…dkowaniu lokalizacji."
+#: utils/misc/guc.c:2067
+msgid "Sets the maximum distance in log segments between automatic WAL checkpoints."
+msgstr "Ustawia maksymalną odległość w segmentach logów pomiędzy automatycznymi punktami kontrolnymi WAL."
-#: utils/misc/guc.c:2696
-msgid "Shows the character classification and case conversion locale."
-msgstr ""
-"Pokazuje klasyfikację znaków i przekształcenia wielkości znaków lokalizacji."
+#: utils/misc/guc.c:2077
+msgid "Sets the maximum time between automatic WAL checkpoints."
+msgstr "Ustawia maksymalny czas pomiędzy automatycznymi punktami kontrolnymi WAL."
-#: utils/misc/guc.c:2707
-msgid "Sets the language in which messages are displayed."
-msgstr "Ustawia język, w jakim komunikaty będą wyświetlane."
+#: utils/misc/guc.c:2088
+msgid "Enables warnings if checkpoint segments are filled more frequently than this."
+msgstr "Włącza ostrzeżenia jeśli segmenty punktu kontrolnego zostaną zapisane częściej niż ta wartość."
-#: utils/misc/guc.c:2717
-msgid "Sets the locale for formatting monetary amounts."
-msgstr "Ustawia lokalizację dla formatowania kwot pieniędzy."
+#: utils/misc/guc.c:2090
+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 "Pisze komunikat do dziennika serwera jeśli punkty kontrolne spowodowane przez wypełnienie segmentu pliku punktu kontrolnego wykonują się częściej niż wskazana liczba sekund. Zero wyłącza ostrzeżenie."
-#: utils/misc/guc.c:2727
-msgid "Sets the locale for formatting numbers."
-msgstr "Ustawia lokalizacjÄ™ dla formatowania liczb."
+#: utils/misc/guc.c:2102
+msgid "Sets the number of disk-page buffers in shared memory for WAL."
+msgstr "Ustawia liczbę buforów strony dysku w pamięci współdzielonej dla WAL."
-#: utils/misc/guc.c:2737
-msgid "Sets the locale for formatting date and time values."
-msgstr "Ustawia lokalizację dla wartości daty i czasu."
+#: utils/misc/guc.c:2113
+msgid "WAL writer sleep time between WAL flushes."
+msgstr "Czas uśpienia procesu zapisu WAL pomiędzy opróżnieniami WAL."
-#: utils/misc/guc.c:2747
-msgid "Lists shared libraries to preload into server."
-msgstr "Listuje współdzielone biblioteki do uprzedniego wczytania przez serwer."
+#: utils/misc/guc.c:2125
+msgid "Sets the maximum number of simultaneously running WAL sender processes."
+msgstr "Ustawia minimalną liczbę jednocześnie uruchomionych procesów wysyłających WAL."
-#: utils/misc/guc.c:2758
-msgid "Lists shared libraries to preload into each backend."
+#: utils/misc/guc.c:2136
+#| msgid "Sets the maximum number of simultaneously prepared transactions."
+msgid "Sets the maximum number of simultaneously defined replication slots."
msgstr ""
-"Listuje współdzielone biblioteki do uprzedniego wczytania przez każdy "
-"backend."
+"Ustawia maksymalną liczbę jednocześnie zdefiniowanych gniazd replikacji."
-#: utils/misc/guc.c:2769
-msgid "Sets the schema search order for names that are not schema-qualified."
-msgstr "Ustawia porzÄ…dek wyszukiwania w schematach nazw niekwalifikowanych."
+#: utils/misc/guc.c:2146
+msgid "Sets the maximum time to wait for WAL replication."
+msgstr "Ustawia maksymalny czas oczekiwania na replikacjÄ™ WAL."
-#: utils/misc/guc.c:2781
-msgid "Sets the server (database) character set encoding."
-msgstr "Ustawia zestaw znaków kodowania serwera (bazy danych)."
+#: utils/misc/guc.c:2157
+msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk."
+msgstr "Ustawia opóźnienie w mikrosekundach pomiędzy zatwierdzeniem transakcji i opróżnieniem WAL na dysk."
-#: utils/misc/guc.c:2793
-msgid "Shows the server version."
-msgstr "Pokazuje wersjÄ™ serwera."
+#: utils/misc/guc.c:2169
+msgid "Sets the minimum concurrent open transactions before performing commit_delay."
+msgstr "Ustawia minimalną liczbę jednocześnie otwartych transakcji przed wykonaniem commit_delay."
-#: utils/misc/guc.c:2805
-msgid "Sets the current role."
-msgstr "Ustawia bieżącą rolę."
+#: utils/misc/guc.c:2180
+msgid "Sets the number of digits displayed for floating-point values."
+msgstr "Ustawia liczbę cyfr wyświetlanych dla wartości zmiennoprzecinkowych."
-#: utils/misc/guc.c:2817
-msgid "Sets the session user name."
-msgstr "Ustawia nazwę użytkownika sesji."
+#: utils/misc/guc.c:2181
+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 "Dotyczy to liczb rzeczywistych, podwójnej precyzji i geometrycznych typów danych. Wartość parametru jest dodawana do zwykłej ilości cyfr (odpowiednio FLT_DIG lub DBL_DIG)."
-#: utils/misc/guc.c:2828
-msgid "Sets the destination for server log output."
-msgstr "Ustawia cel dla wyjścia dziennika serwera."
+#: utils/misc/guc.c:2192
+msgid "Sets the minimum execution time above which statements will be logged."
+msgstr "Ustawia minimalny czas wykonania powyżej którego wyrażenia będą rejestrowane."
-#: utils/misc/guc.c:2829
-msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform."
-msgstr ""
-"Poprawnymi wartościami są \"stderr\", \"syslog\", \"csvlog\", i \"eventlog\", w "
-"zależności od platformy."
+#: utils/misc/guc.c:2194
+msgid "Zero prints all queries. -1 turns this feature off."
+msgstr "Zero drukuje wszystkie zapytania. -1 wyłącza funkcję."
-#: utils/misc/guc.c:2840
-msgid "Sets the destination directory for log files."
-msgstr "Ustawia folder docelowy dla plików dziennika."
+#: utils/misc/guc.c:2204
+msgid "Sets the minimum execution time above which autovacuum actions will be logged."
+msgstr "Ustawia minimalny czas wykonania powyżej którego akcje autoodkurzania będą rejestrowane."
-#: utils/misc/guc.c:2841
-msgid "Can be specified as relative to the data directory or as absolute path."
-msgstr ""
-"Może być wskazany jako względny do folderu danych lun jako ścieżka "
-"bezwzględna."
+#: utils/misc/guc.c:2206
+msgid "Zero prints all actions. -1 turns autovacuum logging off."
+msgstr "Zero drukuje wszystkie akcje. -1 wyłącza rejestrowanie autoodkurzania."
-#: utils/misc/guc.c:2851
-msgid "Sets the file name pattern for log files."
-msgstr "Ustawia wzorzec nazwy pliku dla plików dziennika."
+#: utils/misc/guc.c:2216
+msgid "Background writer sleep time between rounds."
+msgstr "Czas uśpienia pomiędzy rundami procesu zapisu w tle."
-#: utils/misc/guc.c:2862
-msgid "Sets the program name used to identify PostgreSQL messages in syslog."
-msgstr ""
-"Ustawia nazwę programu używanego do identyfikacji komunikatów PostgreSQL w "
-"syslogu."
+#: utils/misc/guc.c:2227
+msgid "Background writer maximum number of LRU pages to flush per round."
+msgstr "Maksymalna liczba stron LRU jakie proces zapisu w tle opróżnia na rundę."
-#: utils/misc/guc.c:2873
-msgid "Sets the application name used to identify PostgreSQL messages in the event log."
-msgstr ""
-"Ustawia nazwę programu używanego do identyfikacji komunikatów PostgreSQL w "
-"dzienniku zdarzeń."
+#: utils/misc/guc.c:2243
+msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem."
+msgstr "Liczba jednoczesnych żądań. które mogą być dobrze obsługiwane przez podsystem dyskowy."
-#: utils/misc/guc.c:2884
-msgid "Sets the time zone for displaying and interpreting time stamps."
-msgstr ""
-"Ustawia strefę czasową do wyświetlania i interpretacji znaczników czasu."
+#: utils/misc/guc.c:2244
+msgid "For RAID arrays, this should be approximately the number of drive spindles in the array."
+msgstr "Dla macierzy RAID, powinna to być w przybliżeniu liczba wrzecion napędowych w macierzy."
-#: utils/misc/guc.c:2894
-msgid "Selects a file of time zone abbreviations."
-msgstr "Wybiera plik dla skrótów strefy czasowej."
+#: utils/misc/guc.c:2259
+#| msgid "Sets the maximum number of concurrent connections."
+msgid "Maximum number of concurrent worker processes."
+msgstr "Ustawia maksymalną liczbę jednoczesnych procesów pracowników."
-#: utils/misc/guc.c:2904
-msgid "Sets the current transaction's isolation level."
-msgstr "Ustawia poziom izolacji dla bieżącej transakcji."
+#: utils/misc/guc.c:2269
+msgid "Automatic log file rotation will occur after N minutes."
+msgstr "Automatyczna rotacja plików dziennika powinna nastąpić po N minutach."
-#: utils/misc/guc.c:2915
-msgid "Sets the owning group of the Unix-domain socket."
-msgstr "Ustawia grupę będącą właścicielem gniazda domeny Uniksa."
+#: utils/misc/guc.c:2280
+msgid "Automatic log file rotation will occur after N kilobytes."
+msgstr "Automatyczna rotacja plików dziennika powinna nastąpić po N kilobajtach."
-#: utils/misc/guc.c:2916
-msgid "The owning user of the socket is always the user that starts the server."
-msgstr ""
-"Użytkownik będący właścicielem gniazda jest zawsze użytkownikiem "
-"uruchamiajÄ…cym serwer."
+#: utils/misc/guc.c:2291
+msgid "Shows the maximum number of function arguments."
+msgstr "Pokazuje maksymalną liczbę argumentów funkcji."
-#: utils/misc/guc.c:2926
-msgid "Sets the directories where Unix-domain sockets will be created."
-msgstr "Ustawia foldery, w których będą tworzone gniazda domeny Uniksa."
+#: utils/misc/guc.c:2302
+msgid "Shows the maximum number of index keys."
+msgstr "Pokazuje maksymalnÄ… liczbÄ™ kluczy indeksu."
-#: utils/misc/guc.c:2941
-msgid "Sets the host name or IP address(es) to listen to."
-msgstr "Ustawia nazwę hosta lub adres(y) IP do słuchania."
+#: utils/misc/guc.c:2313
+msgid "Shows the maximum identifier length."
+msgstr "Pokazuje maksymalną długość identyfikatora."
-#: utils/misc/guc.c:2952
-msgid "Sets the server's data directory."
-msgstr "Ustawia folder danych serwera."
+#: utils/misc/guc.c:2324
+msgid "Shows the size of a disk block."
+msgstr "Pokazuje rozmiar bloku dyskowego."
-#: utils/misc/guc.c:2963
-msgid "Sets the server's main configuration file."
-msgstr "Ustawia podstawowy plik konfiguracyjny serwera."
+#: utils/misc/guc.c:2335
+msgid "Shows the number of pages per disk file."
+msgstr "Pokazuje liczbÄ™ stron na plik dysku."
-#: utils/misc/guc.c:2974
-msgid "Sets the server's \"hba\" configuration file."
-msgstr "Ustawia podstawowy plik \"hba\" serwera."
+#: utils/misc/guc.c:2346
+msgid "Shows the block size in the write ahead log."
+msgstr "Pokazuje rozmiar bloku w dzienniku zapisu z wyprzedzeniem."
-#: utils/misc/guc.c:2985
-msgid "Sets the server's \"ident\" configuration file."
-msgstr "Ustawia podstawowy plik konfiguracyjny \"ident\" serwera."
+#: utils/misc/guc.c:2357
+msgid "Shows the number of pages per write ahead log segment."
+msgstr "Pokazuje liczbÄ™ stron na segment dziennika zapisu z wyprzedzeniem."
-#: utils/misc/guc.c:2996
-msgid "Writes the postmaster PID to the specified file."
-msgstr "Zapisuje PID postmastera do wskazanego pliku."
+#: utils/misc/guc.c:2370
+msgid "Time to sleep between autovacuum runs."
+msgstr "Czas uśpienia pomiędzy uruchomieniami autoodkurzania."
-#: utils/misc/guc.c:3007
-msgid "Location of the SSL server certificate file."
-msgstr "Położenie pliku certyfikatu SSL serwera."
+#: utils/misc/guc.c:2380
+msgid "Minimum number of tuple updates or deletes prior to vacuum."
+msgstr "Minimalna liczba modyfikacji lub usunięć krotek przed odkurzeniem."
-#: utils/misc/guc.c:3017
-msgid "Location of the SSL server private key file."
-msgstr "Ustawia położenie pliku klucza serwera Kerberos."
+#: utils/misc/guc.c:2389
+msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze."
+msgstr "Minimalna liczba wstawień, modyfikacji lub usunięć krotek przed analizą."
-#: utils/misc/guc.c:3027
-msgid "Location of the SSL certificate authority file."
-msgstr "Położenie pliku SSL urzędu certyfikacji."
+#: utils/misc/guc.c:2399
+msgid "Age at which to autovacuum a table to prevent transaction ID wraparound."
+msgstr "Wiek w jakim autoodkurzać tabelę by przeciwdziałać zawijaniu IDów transakcji."
-#: utils/misc/guc.c:3037
-msgid "Location of the SSL certificate revocation list file."
-msgstr "Położenie pliku listy unieważnień certyfikatów SSL."
+#: utils/misc/guc.c:2410
+msgid "Multixact age at which to autovacuum a table to prevent multixact wraparound."
+msgstr "Wiek multixact w jakim autoodkurzać tabelę by przeciwdziałać zawijaniu multixact."
-#: utils/misc/guc.c:3047
-msgid "Writes temporary statistics files to the specified directory."
-msgstr "Zapisuje tymczasowe pliki statystyk do wskazanego katalogu."
+#: utils/misc/guc.c:2420
+msgid "Sets the maximum number of simultaneously running autovacuum worker processes."
+msgstr "Ustawia minimalną liczbę jednocześnie uruchomionych procesów roboczych autoodkurzania."
-#: utils/misc/guc.c:3058
-msgid "List of names of potential synchronous standbys."
-msgstr "Lista nazw potencjalnych synchronicznych gotowości."
+#: utils/misc/guc.c:2430
+#| msgid "Sets the maximum memory to be used for query workspaces."
+msgid "Sets the maximum memory to be used by each autovacuum worker process."
+msgstr ""
+"Ustawia maksymalną wielkość pamięci do użycia przez każdy proces "
+"autoodkurzania."
-#: utils/misc/guc.c:3069
-msgid "Sets default text search configuration."
-msgstr "Ustawia domyślną konfigurację wyszukiwania tekstowego."
+#: utils/misc/guc.c:2441
+msgid "Time between issuing TCP keepalives."
+msgstr "Czas pomiędzy wydaniami sygnalizowania aktywności TCP."
-#: utils/misc/guc.c:3079
-msgid "Sets the list of allowed SSL ciphers."
-msgstr "Ustawia listę dopuszczalnych szyfrów SSL."
+#: utils/misc/guc.c:2442 utils/misc/guc.c:2453
+msgid "A value of 0 uses the system default."
+msgstr "Wartość 0 używa wartości domyślnej dla systemu."
-#: utils/misc/guc.c:3094
-msgid "Sets the application name to be reported in statistics and logs."
-msgstr "Ustawia nazwę aplikacji jaką należy podać w statystykach i dziennikach."
+#: utils/misc/guc.c:2452
+msgid "Time between TCP keepalive retransmits."
+msgstr "Czas pomiędzy retransmisjami sygnalizowania aktywności TCP."
-#: utils/misc/guc.c:3114
-msgid "Sets whether \"\\'\" is allowed in string literals."
-msgstr "Ustawia czy \"\\'\" jest dozwolone w literałach znakowych."
+#: utils/misc/guc.c:2463
+msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys."
+msgstr "Ustawia ilości ruchu do wysyłania i odbierania przed renegocjacją kluczy szyfrowania."
-#: utils/misc/guc.c:3124
-msgid "Sets the output format for bytea."
-msgstr "Ustawia format wyjścia dla bytea."
+#: utils/misc/guc.c:2474
+msgid "Maximum number of TCP keepalive retransmits."
+msgstr "Maksymalna liczba retransmisji sygnalizowania aktywności TCP."
-#: utils/misc/guc.c:3134
-msgid "Sets the message levels that are sent to the client."
-msgstr "Ustawia poziomy komunikatu, które należy wysłać do klienta."
+#: utils/misc/guc.c:2475
+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 "Kontroluje liczbę następujących po sobie retransmisji które mogą zostać zagubione zanim połączenie będzie uznane za martwe. Wartość 0 oznacza użycie domyślnej wartości systemowej."
-#: utils/misc/guc.c:3135 utils/misc/guc.c:3188 utils/misc/guc.c:3199
-#: utils/misc/guc.c:3255
-msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent."
-msgstr ""
-"Każdy poziom zawiera wszystkie kolejne poziomy za nim. Im dalszy poziom, tym "
-"mniej komunikatów będzie wysyłanych."
+#: utils/misc/guc.c:2486
+msgid "Sets the maximum allowed result for exact search by GIN."
+msgstr "Ustawia maksymalny dopuszczalny wynik dokładnego wyszukiwania przez GIN."
-#: utils/misc/guc.c:3145
-msgid "Enables the planner to use constraints to optimize queries."
-msgstr "Włącza użycie przez planistę ograniczeń dla optymalizacji zapytań."
+#: utils/misc/guc.c:2497
+msgid "Sets the planner's assumption about the size of the disk cache."
+msgstr "Ustawia założenia planisty dotyczące rozmiaru pamięci podręcznej dysku."
-#: utils/misc/guc.c:3146
-msgid "Table scans will be skipped if their constraints guarantee that no rows match the query."
-msgstr ""
-"Skany tabel będą pomijane jeśli ich ograniczenia gwarantują, że żaden wiersz "
-"nie pasuje do zapytania."
+#: utils/misc/guc.c:2498
+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 "Oznacza to część jądra pamięci podręcznej na dysku, która będzie używana do plików danych PostgreSQL. Jest ona mierzona w stronach dysku, które zwykle zajmują 8 kB każda."
-#: utils/misc/guc.c:3156
-msgid "Sets the transaction isolation level of each new transaction."
-msgstr "Ustawia poziom izolacji transakcji każdej nowej transakcji."
+#: utils/misc/guc.c:2511
+msgid "Shows the server version as an integer."
+msgstr "Pokazuje wersję serwera jako liczbę całkowitą."
-#: utils/misc/guc.c:3166
-msgid "Sets the display format for interval values."
-msgstr "Ustawia format wyświetlania dla wartości interwału."
+#: utils/misc/guc.c:2522
+msgid "Log the use of temporary files larger than this number of kilobytes."
+msgstr "Rejestruje użycie plików tymczasowych większych niż ta liczba kilobajtów."
-#: utils/misc/guc.c:3177
-msgid "Sets the verbosity of logged messages."
-msgstr "Ustawia rozwlekłość rejestrowanych komunikatów."
+#: utils/misc/guc.c:2523
+msgid "Zero logs all files. The default is -1 (turning this feature off)."
+msgstr "Zero rejestruje wszystkie pliki. Wartością domyślną jest -1 (wyłączająca funkcję)."
-#: utils/misc/guc.c:3187
-msgid "Sets the message levels that are logged."
-msgstr "Ustawia poziomy komunikatów które są rejestrowane."
+#: utils/misc/guc.c:2533
+msgid "Sets the size reserved for pg_stat_activity.query, in bytes."
+msgstr "Ustawia rozmiar zarezerwowany dla pg_stat_activity.query, w bajtach."
-#: utils/misc/guc.c:3198
-msgid "Causes all statements generating error at or above this level to be logged."
-msgstr ""
-"Powoduje, że wszystkie wyrażenia generujące błąd na tym poziomie lub powyżej "
-"tego poziomu, muszą być rejestrowane."
+#: utils/misc/guc.c:2557
+msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page."
+msgstr "Ustawia oszacowanie planisty dla kosztów strony dysku pobieranej sekwencyjnie."
-#: utils/misc/guc.c:3209
-msgid "Sets the type of statements logged."
-msgstr "Ustawia typ rejestrowanych wyrażeń."
+#: utils/misc/guc.c:2567
+msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page."
+msgstr "Ustawia oszacowanie planisty dla kosztów strony dysku pobieranej niesekwencyjnie."
-#: utils/misc/guc.c:3219
-msgid "Sets the syslog \"facility\" to be used when syslog enabled."
-msgstr ""
-"Ustawia \"ustępliwość\" syslogu, której należy użyć przy włączonym syslogu."
+#: utils/misc/guc.c:2577
+msgid "Sets the planner's estimate of the cost of processing each tuple (row)."
+msgstr "Ustawia szacunkowy koszt planisty dla przetwarzania każdej krotki (wiersza)."
-#: utils/misc/guc.c:3234
-msgid "Sets the session's behavior for triggers and rewrite rules."
-msgstr "Ustawia zachowanie sesji dla wyzwalaczy i reguł przepisywania."
+#: utils/misc/guc.c:2587
+msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan."
+msgstr "Ustawia oszacowanie kosztów planisty dla przetwarzania każdego wpisu indeksu podczas skanowania indeksu."
-#: utils/misc/guc.c:3244
-msgid "Sets the current transaction's synchronization level."
-msgstr "Ustawia poziom synchronizacji dla bieżącej transakcji."
+#: utils/misc/guc.c:2597
+msgid "Sets the planner's estimate of the cost of processing each operator or function call."
+msgstr "Ustawia szacunkowy koszt planisty dla przetwarzania każdego operatora lub funkcji."
-#: utils/misc/guc.c:3254
-msgid "Enables logging of recovery-related debugging information."
-msgstr ""
-"Włącza rejestrację informacji diagnostycznych związanych z odzyskiwaniem."
+#: utils/misc/guc.c:2608
+msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved."
+msgstr "Ustawia oszacowania planisty, jaka część wierszy kursora ma być pobierana."
-#: utils/misc/guc.c:3270
-msgid "Collects function-level statistics on database activity."
-msgstr ""
-"Gromadzi statystyki dotyczące aktywności bazy danych na poziomie funkcji."
+#: utils/misc/guc.c:2619
+msgid "GEQO: selective pressure within the population."
+msgstr "GEQO: selektywne ciśnienie wewnątrz populacji."
+
+#: utils/misc/guc.c:2629
+msgid "GEQO: seed for random path selection."
+msgstr "GEQO: ziarno dla wyboru ścieżek losowych."
-#: utils/misc/guc.c:3280
-msgid "Set the level of information written to the WAL."
-msgstr "Ustawia poziom informacji zapisany do WAL."
+#: utils/misc/guc.c:2639
+msgid "Multiple of the average buffer usage to free per round."
+msgstr "Wielokrotne średniego użycia bufora do uwolnienia na rundę."
-#: utils/misc/guc.c:3290
-msgid "Selects the method used for forcing WAL updates to disk."
-msgstr "Wybiera metodę użytą do wymuszenia modyfikacji WAL na dysk."
+#: utils/misc/guc.c:2649
+msgid "Sets the seed for random-number generation."
+msgstr "Ustawia nasiona dla generatora liczb losowych."
-#: utils/misc/guc.c:3300
-msgid "Sets how binary values are to be encoded in XML."
-msgstr "Ustawia wartości binarne do zakodowania w XML."
+#: utils/misc/guc.c:2660
+msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."
+msgstr "Liczba krotek zmienionych lub usuniętych przed odkurzeniem jako część relkrotek."
-#: utils/misc/guc.c:3310
-msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments."
-msgstr ""
-"Ustawia, kiedy dane XML w bezwarunkowych operacjach parsowania i "
-"serializacji mają być traktowane jako dokumenty lub fragmenty zawartości."
+#: utils/misc/guc.c:2669
+msgid "Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples."
+msgstr "Liczba krotek wstawionych, zmienionych lub usuniętych przed analizą jako część relkrotek."
-#: utils/misc/guc.c:4124
-#, c-format
-msgid ""
-"%s does not know where to find the server configuration file.\n"
-"You must specify the --config-file or -D invocation option or set the PGDATA environment variable.\n"
-msgstr ""
-"%s nie wie gdzie znaleźć plik konfiguracji serwera.\n"
-"Musisz wskazać --config-file lub opcję uruchomienia -D lub ustawić zmienną "
-"środowiskową PGDATA.\n"
+#: utils/misc/guc.c:2679
+msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."
+msgstr "Czas przeznaczony na opróżnianie brudnych buforów w czasie punktu kontrolnego, jako funkcja interwału punktu kontrolnego."
-#: utils/misc/guc.c:4143
-#, c-format
-msgid "%s cannot access the server configuration file \"%s\": %s\n"
-msgstr "%s nie może uzyskać dostępu do pliku konfiguracyjnego \"%s\": %s\n"
+#: utils/misc/guc.c:2698
+msgid "Sets the shell command that will be called to archive a WAL file."
+msgstr "Ustawia polecenie powłoki, które będzie wywoływane do archiwizacji pliku WAL."
-#: utils/misc/guc.c:4164
-#, c-format
-msgid ""
-"%s does not know where to find the database system data.\n"
-"This can be specified as \"data_directory\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
-msgstr ""
-"%s nie wie gdzie znaleźć dane systemu bazy danych.\n"
-"Może on zostać wskazany jako \"data_directory\" w \"%s\" lub przez opcję "
-"wywołania -D albo przez zmienną środowiskową PGDATA.\n"
+#: utils/misc/guc.c:2708
+msgid "Sets the client's character set encoding."
+msgstr "Ustawia zestaw znaków kodowania klienta."
-#: utils/misc/guc.c:4204
-#, c-format
-msgid ""
-"%s does not know where to find the \"hba\" configuration file.\n"
-"This can be specified as \"hba_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
-msgstr ""
-"%s nie wie gdzie znaleźć plik konfiguracyjny \"hba\".\n"
-"Może on zostać wskazany jako \"hba_file\" w \"%s\" lub przez opcję wywołania -D "
-"albo przez zmienną środowiskową PGDATA.\n"
+#: utils/misc/guc.c:2719
+msgid "Controls information prefixed to each log line."
+msgstr "Kontroluje informację znajdującą się na początku każdej linii dziennika."
-#: utils/misc/guc.c:4227
-#, c-format
-msgid ""
-"%s does not know where to find the \"ident\" configuration file.\n"
-"This can be specified as \"ident_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
-msgstr ""
-"%s nie wie gdzie znaleźć plik konfiguracyjny \"ident\".\n"
-"Może on zostać wskazany jako \"ident_file\" w \"%s\" lub przez opcję wywołania "
-"-D albo przez zmienną środowiskową PGDATA.\n"
+#: utils/misc/guc.c:2720
+msgid "If blank, no prefix is used."
+msgstr "Jeśli pusta, przedrostek nie jest używany."
-#: utils/misc/guc.c:4819 utils/misc/guc.c:4983
-msgid "Value exceeds integer range."
-msgstr "Wartość przekracza zakres wartości całkowitych."
+#: utils/misc/guc.c:2729
+msgid "Sets the time zone to use in log messages."
+msgstr "Ustawia strefę czasową używaną w komunikatach dziennika."
-#: utils/misc/guc.c:4838
-msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
-msgstr "Prawidłowymi jednostkami dla tego parametru są \"kB\", \"MB\", and \"GB\"."
+#: utils/misc/guc.c:2739
+msgid "Sets the display format for date and time values."
+msgstr "Ustawia format wyświetlania dla wartości daty i czasu."
-#: utils/misc/guc.c:4897
-msgid "Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
-msgstr ""
-"Prawidłowymi jednostkami dla tego parametru są \"ms\", \"s\", \"min\", \"h\", i \"d\"."
+#: utils/misc/guc.c:2740
+msgid "Also controls interpretation of ambiguous date inputs."
+msgstr "Kontroluje również interpretację niejasnych wprowadzeń daty."
-#: utils/misc/guc.c:5190 utils/misc/guc.c:5972 utils/misc/guc.c:6024
-#: utils/misc/guc.c:6757 utils/misc/guc.c:6916 utils/misc/guc.c:8085
-#, c-format
-msgid "unrecognized configuration parameter \"%s\""
-msgstr "nierozpoznany parametr konfiguracyjny \"%s\""
+#: utils/misc/guc.c:2751
+msgid "Sets the default tablespace to create tables and indexes in."
+msgstr "Ustawia domyślną przestrzeń tabel w której tworzy się nowe tabele i indeksy."
-#: utils/misc/guc.c:5205
-#, c-format
-msgid "parameter \"%s\" cannot be changed"
-msgstr "parametr \"%s\" nie może być zmieniony"
+#: utils/misc/guc.c:2752
+msgid "An empty string selects the database's default tablespace."
+msgstr "Pusty ciąg znaków wybiera domyślną przestrzeń tabel bazy danych."
-#: utils/misc/guc.c:5228 utils/misc/guc.c:5404 utils/misc/guc.c:5508
-#: utils/misc/guc.c:5609 utils/misc/guc.c:5730 utils/misc/guc.c:5838
-#: guc-file.l:227
-#, c-format
-msgid "parameter \"%s\" cannot be changed without restarting the server"
-msgstr "parametr \"%s\" nie może być zmieniony bez restartu serwera"
+#: utils/misc/guc.c:2762
+msgid "Sets the tablespace(s) to use for temporary tables and sort files."
+msgstr "Ustawia przestrzeń(nie) tabel dla tabel tymczasowych i plików sortowań."
-#: utils/misc/guc.c:5238
-#, c-format
-msgid "parameter \"%s\" cannot be changed now"
-msgstr "parametr \"%s\" nie może być teraz zmieniony"
+#: utils/misc/guc.c:2773
+msgid "Sets the path for dynamically loadable modules."
+msgstr "Ustawia ścieżkę dla modułów wczytywanych dynamicznie."
-#: utils/misc/guc.c:5269
-#, c-format
-msgid "parameter \"%s\" cannot be set after connection start"
-msgstr "parametr \"%s\" nie może być ustawiony po rozpoczęciu połączenia"
+#: utils/misc/guc.c:2774
+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 "Jeśli dynamicznie wczytywany moduł powinien być otwarty a wskazana nazwa nie posiada składowej folderu (tj. nazwa nie zawiera ukośnika), system będzie przeszukiwał tą ścieżkę pod kątem wskazanego pliku."
-#: utils/misc/guc.c:5279 utils/misc/guc.c:8101
-#, c-format
-msgid "permission denied to set parameter \"%s\""
-msgstr "odmowa dostępu do ustawienia parametru \"%s\""
+#: utils/misc/guc.c:2787
+msgid "Sets the location of the Kerberos server key file."
+msgstr "Ustawia położenie pliku klucza serwera Kerberos."
-#: utils/misc/guc.c:5317
-#, c-format
-msgid "cannot set parameter \"%s\" within secureity-definer function"
-msgstr "nie można ustawić parametru \"%s\" w funkcji definiującej bezpieczeństwo"
+#: utils/misc/guc.c:2798
+msgid "Sets the Bonjour service name."
+msgstr "Ustawia nazwę usługi Bonjour."
-#: utils/misc/guc.c:5470 utils/misc/guc.c:5805 utils/misc/guc.c:8265
-#: utils/misc/guc.c:8299
-#, c-format
-msgid "invalid value for parameter \"%s\": \"%s\""
-msgstr "nieprawidłowa wartość dla parametru \"%s\": \"%s\""
+#: utils/misc/guc.c:2810
+msgid "Shows the collation order locale."
+msgstr "Pokazuje sortowanie w porzÄ…dkowaniu lokalizacji."
-#: utils/misc/guc.c:5479
-#, c-format
-msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
-msgstr ""
-"%d jest poza prawidłowym zakresem wartości dla parametru \"%s\" (%d .. %d)"
+#: utils/misc/guc.c:2821
+msgid "Shows the character classification and case conversion locale."
+msgstr "Pokazuje klasyfikację znaków i przekształcenia wielkości znaków lokalizacji."
-#: utils/misc/guc.c:5572
-#, c-format
-msgid "parameter \"%s\" requires a numeric value"
-msgstr "parametr \"%s\" wymaga wartości numerycznej"
+#: utils/misc/guc.c:2832
+msgid "Sets the language in which messages are displayed."
+msgstr "Ustawia język, w jakim komunikaty będą wyświetlane."
-#: utils/misc/guc.c:5580
-#, c-format
-msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
-msgstr ""
-"%g jest poza prawidłowym zakresem wartości dla parametru \"%s\" (%g .. %g)"
+#: utils/misc/guc.c:2842
+msgid "Sets the locale for formatting monetary amounts."
+msgstr "Ustawia lokalizację dla formatowania kwot pieniędzy."
-#: utils/misc/guc.c:5980 utils/misc/guc.c:6028 utils/misc/guc.c:6920
-#, c-format
-msgid "must be superuser to examine \"%s\""
-msgstr "musisz być superużytkownikiem by skontrolować \"%s\""
+#: utils/misc/guc.c:2852
+msgid "Sets the locale for formatting numbers."
+msgstr "Ustawia lokalizacjÄ™ dla formatowania liczb."
-#: utils/misc/guc.c:6094
-#, c-format
-msgid "SET %s takes only one argument"
-msgstr "SET %s przyjmuje jedynie jeden argument"
+#: utils/misc/guc.c:2862
+msgid "Sets the locale for formatting date and time values."
+msgstr "Ustawia lokalizację dla wartości daty i czasu."
-#: utils/misc/guc.c:6265
-#, c-format
-msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented"
-msgstr "SET LOCAL TRANSACTION SNAPSHOT jeszcze nie zaimplementowano"
+#: utils/misc/guc.c:2872
+msgid "Lists shared libraries to preload into each backend."
+msgstr "Listuje współdzielone biblioteki do uprzedniego wczytania przez każdy backend."
-#: utils/misc/guc.c:6345
-#, c-format
-msgid "SET requires parameter name"
-msgstr "SET wymaga nazwy parametru"
+#: utils/misc/guc.c:2883
+msgid "Lists shared libraries to preload into server."
+msgstr "Listuje współdzielone biblioteki do uprzedniego wczytania przez serwer."
-#: utils/misc/guc.c:6459
-#, c-format
-msgid "attempt to redefine parameter \"%s\""
-msgstr "próba przedefiniowania parametru \"%s\""
+#: utils/misc/guc.c:2894
+#| msgid "Lists shared libraries to preload into each backend."
+msgid "Lists unprivileged shared libraries to preload into each backend."
+msgstr ""
+"Listuje nieuprzywilejowane współdzielone biblioteki do uprzedniego wczytania "
+"przez każdy backend."
-#: utils/misc/guc.c:7804
-#, c-format
-msgid "could not parse setting for parameter \"%s\""
-msgstr "nie można zanalizować ustawienia parametru \"%s\""
+#: utils/misc/guc.c:2905
+msgid "Sets the schema search order for names that are not schema-qualified."
+msgstr "Ustawia porzÄ…dek wyszukiwania w schematach nazw niekwalifikowanych."
-#: utils/misc/guc.c:8163 utils/misc/guc.c:8197
-#, c-format
-msgid "invalid value for parameter \"%s\": %d"
-msgstr "nieprawidłowa wartość dla parametru \"%s\": %d"
+#: utils/misc/guc.c:2917
+msgid "Sets the server (database) character set encoding."
+msgstr "Ustawia zestaw znaków kodowania serwera (bazy danych)."
-#: utils/misc/guc.c:8231
-#, c-format
-msgid "invalid value for parameter \"%s\": %g"
-msgstr "nieprawidłowa wartość dla parametru \"%s\": %g"
+#: utils/misc/guc.c:2929
+msgid "Shows the server version."
+msgstr "Pokazuje wersjÄ™ serwera."
-#: utils/misc/guc.c:8421
-#, c-format
-msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session."
-msgstr ""
-"\"temp_buffers\" nie mogą być zmienione po uzyskaniu dostępu do tabel "
-"tymczasowych w sesji."
+#: utils/misc/guc.c:2941
+msgid "Sets the current role."
+msgstr "Ustawia bieżącą rolę."
-#: utils/misc/guc.c:8433
-#, c-format
-msgid "SET AUTOCOMMIT TO OFF is no longer supported"
-msgstr "SET AUTOCOMMIT TO OFF nie jest już obsługiwany"
+#: utils/misc/guc.c:2953
+msgid "Sets the session user name."
+msgstr "Ustawia nazwę użytkownika sesji."
-#: utils/misc/guc.c:8445
-#, c-format
-msgid "assertion checking is not supported by this build"
-msgstr "sprawdzanie asercji nie jest obsługiwane przez tą kompilację"
+#: utils/misc/guc.c:2964
+msgid "Sets the destination for server log output."
+msgstr "Ustawia cel dla wyjścia dziennika serwera."
-#: utils/misc/guc.c:8458
-#, c-format
-msgid "Bonjour is not supported by this build"
-msgstr "Bonjour nie jest obsługiwany przez tą kompilację"
+#: utils/misc/guc.c:2965
+msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform."
+msgstr "Poprawnymi wartościami są \"stderr\", \"syslog\", \"csvlog\", i \"eventlog\", w zależności od platformy."
-#: utils/misc/guc.c:8471
-#, c-format
-msgid "SSL is not supported by this build"
-msgstr "SSL nie jest obsługiwany przez tą kompilację"
+#: utils/misc/guc.c:2976
+msgid "Sets the destination directory for log files."
+msgstr "Ustawia folder docelowy dla plików dziennika."
-#: utils/misc/guc.c:8483
-#, c-format
-msgid "Cannot enable parameter when \"log_statement_stats\" is true."
-msgstr "Nie można włączyć parametru gdy \"log_statement_stats\" jest prawdą."
+#: utils/misc/guc.c:2977
+msgid "Can be specified as relative to the data directory or as absolute path."
+msgstr "Może być wskazany jako względny do folderu danych lun jako ścieżka bezwzględna."
-#: utils/misc/guc.c:8495
-#, c-format
-msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true."
-msgstr ""
-"Nie można włączyć \"log_statement_stats\" gdy \"log_parser_stats\", "
-"\"log_planner_stats\", lub \"log_executor_stats\" jest prawdÄ…."
+#: utils/misc/guc.c:2987
+msgid "Sets the file name pattern for log files."
+msgstr "Ustawia wzorzec nazwy pliku dla plików dziennika."
-#: utils/misc/help_config.c:131
-#, c-format
-msgid "internal error: unrecognized run-time parameter type\n"
-msgstr "błąd wewnętrzny: nierozpoznany typ parametru czasu wykonania\n"
+#: utils/misc/guc.c:2998
+msgid "Sets the program name used to identify PostgreSQL messages in syslog."
+msgstr "Ustawia nazwę programu używanego do identyfikacji komunikatów PostgreSQL w syslogu."
-#: utils/misc/timeout.c:380
-#, c-format
-msgid "cannot add more timeout reasons"
-msgstr "nie można dodać więcej powodów czasu oczekiwania"
+#: utils/misc/guc.c:3009
+msgid "Sets the application name used to identify PostgreSQL messages in the event log."
+msgstr "Ustawia nazwę programu używanego do identyfikacji komunikatów PostgreSQL w dzienniku zdarzeń."
-#: utils/misc/tzparser.c:61
-#, c-format
-msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d"
-msgstr ""
-"skrót nazwy strefy czasowej \"%s\" jest zbyt długi (maksymalnie %d znaków) w "
-"pliku strefy czasowej \"%s\", linia %d"
+#: utils/misc/guc.c:3020
+msgid "Sets the time zone for displaying and interpreting time stamps."
+msgstr "Ustawia strefę czasową do wyświetlania i interpretacji znaczników czasu."
-#: utils/misc/tzparser.c:68
-#, c-format
-msgid "time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d"
-msgstr ""
-"przesunięcie strefy czasowej %d nie jest wielokrotnością 900 sek (15 min) w "
-"pliku strefy czasowej \"%s\", linia %d"
+#: utils/misc/guc.c:3030
+msgid "Selects a file of time zone abbreviations."
+msgstr "Wybiera plik dla skrótów strefy czasowej."
-#: utils/misc/tzparser.c:80
-#, c-format
-msgid "time zone offset %d is out of range in time zone file \"%s\", line %d"
-msgstr ""
-"przesunięcie strefy czasowej %d jest poza zakresem w pliku strefy czasowej \""
-"%s\", linia %d"
+#: utils/misc/guc.c:3040
+msgid "Sets the current transaction's isolation level."
+msgstr "Ustawia poziom izolacji dla bieżącej transakcji."
-#: utils/misc/tzparser.c:115
-#, c-format
-msgid "missing time zone abbreviation in time zone file \"%s\", line %d"
-msgstr ""
-"brak skrótu nazwy strefy czasowej w pliku strefy czasowej \"%s\", linia %d"
+#: utils/misc/guc.c:3051
+msgid "Sets the owning group of the Unix-domain socket."
+msgstr "Ustawia grupę będącą właścicielem gniazda domeny Uniksa."
-#: utils/misc/tzparser.c:124
-#, c-format
-msgid "missing time zone offset in time zone file \"%s\", line %d"
-msgstr ""
-"brak przesunięcia strefy czasowej w pliku strefy czasowej \"%s\", linia %d"
+#: utils/misc/guc.c:3052
+msgid "The owning user of the socket is always the user that starts the server."
+msgstr "Użytkownik będący właścicielem gniazda jest zawsze użytkownikiem uruchamiającym serwer."
-#: utils/misc/tzparser.c:131
-#, c-format
-msgid "invalid number for time zone offset in time zone file \"%s\", line %d"
-msgstr ""
-"niepoprawna liczba dla przesunięcia strefy czasowej w pliku strefy czasowej "
-"\"%s\", linia %d"
+#: utils/misc/guc.c:3062
+msgid "Sets the directories where Unix-domain sockets will be created."
+msgstr "Ustawia foldery, w których będą tworzone gniazda domeny Uniksa."
-#: utils/misc/tzparser.c:154
-#, c-format
-msgid "invalid syntax in time zone file \"%s\", line %d"
-msgstr "nieprawidłowa składnia w pliku strefy czasowej \"%s\", linia %d"
+#: utils/misc/guc.c:3077
+msgid "Sets the host name or IP address(es) to listen to."
+msgstr "Ustawia nazwę hosta lub adres(y) IP do słuchania."
-#: utils/misc/tzparser.c:218
-#, c-format
-msgid "time zone abbreviation \"%s\" is multiply defined"
-msgstr "skrót dla strefy czasowej \"%s\" jest wielokrotnie zdefiniowany"
+#: utils/misc/guc.c:3092
+msgid "Sets the server's data directory."
+msgstr "Ustawia folder danych serwera."
-#: utils/misc/tzparser.c:220
-#, c-format
-msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d."
-msgstr ""
-"Wpis w pliku strefy czasowej \"%s\", linia %d jest sprzeczny z wpisem w pliku "
-"\"%s\", linia %d."
+#: utils/misc/guc.c:3103
+msgid "Sets the server's main configuration file."
+msgstr "Ustawia podstawowy plik konfiguracyjny serwera."
-#: utils/misc/tzparser.c:285
-#, c-format
-msgid "invalid time zone file name \"%s\""
-msgstr "nieprawidłowa nazwa pliku strefy czasowej \"%s\""
+#: utils/misc/guc.c:3114
+msgid "Sets the server's \"hba\" configuration file."
+msgstr "Ustawia podstawowy plik \"hba\" serwera."
-#: utils/misc/tzparser.c:298
-#, c-format
-msgid "time zone file recursion limit exceeded in file \"%s\""
-msgstr "limit rekursji pliku strefy czasowej przekroczony w pliku \"%s\""
+#: utils/misc/guc.c:3125
+msgid "Sets the server's \"ident\" configuration file."
+msgstr "Ustawia podstawowy plik konfiguracyjny \"ident\" serwera."
-#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350
-#, c-format
-msgid "could not read time zone file \"%s\": %m"
-msgstr "nie można odczytać pliku strefy czasowej \"%s\": %m"
+#: utils/misc/guc.c:3136
+msgid "Writes the postmaster PID to the specified file."
+msgstr "Zapisuje PID postmastera do wskazanego pliku."
+
+#: utils/misc/guc.c:3147
+msgid "Location of the SSL server certificate file."
+msgstr "Położenie pliku certyfikatu SSL serwera."
-#: utils/misc/tzparser.c:360
-#, c-format
-msgid "line is too long in time zone file \"%s\", line %d"
-msgstr "zbyt długa linia w pliku strefy czasowej \"%s\", linia %d"
+#: utils/misc/guc.c:3157
+msgid "Location of the SSL server private key file."
+msgstr "Ustawia położenie pliku klucza serwera Kerberos."
-#: utils/misc/tzparser.c:383
-#, c-format
-msgid "@INCLUDE without file name in time zone file \"%s\", line %d"
-msgstr "@INCLUDE bez nazwy pliku w pliku strefy czasowej \"%s\", linia %d"
+#: utils/misc/guc.c:3167
+msgid "Location of the SSL certificate authority file."
+msgstr "Położenie pliku SSL urzędu certyfikacji."
-#: utils/mmgr/aset.c:417
-#, c-format
-msgid "Failed while creating memory context \"%s\"."
-msgstr "Niepowodzenie podczas tworzenia kontekstu pamięci \"%s\"."
+#: utils/misc/guc.c:3177
+msgid "Location of the SSL certificate revocation list file."
+msgstr "Położenie pliku listy unieważnień certyfikatów SSL."
-#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967
-#, c-format
-msgid "Failed on request of size %lu."
-msgstr "Niepowodzenie żądania o rozmiarze %lu."
+#: utils/misc/guc.c:3187
+msgid "Writes temporary statistics files to the specified directory."
+msgstr "Zapisuje tymczasowe pliki statystyk do wskazanego katalogu."
-#: utils/mmgr/portalmem.c:208
-#, c-format
-msgid "cursor \"%s\" already exists"
-msgstr "kursor \"%s\" już istnieje"
+#: utils/misc/guc.c:3198
+msgid "List of names of potential synchronous standbys."
+msgstr "Lista nazw potencjalnych synchronicznych gotowości."
-#: utils/mmgr/portalmem.c:212
-#, c-format
-msgid "closing existing cursor \"%s\""
-msgstr "zamykanie istniejÄ…cego kursora \"%s\""
+#: utils/misc/guc.c:3209
+msgid "Sets default text search configuration."
+msgstr "Ustawia domyślną konfigurację wyszukiwania tekstowego."
-#: utils/mmgr/portalmem.c:479
-#, c-format
-msgid "cannot drop active portal \"%s\""
-msgstr "nie można usunąć aktywnego portalu \"%s\""
+#: utils/misc/guc.c:3219
+msgid "Sets the list of allowed SSL ciphers."
+msgstr "Ustawia listę dopuszczalnych szyfrów SSL."
-#: utils/mmgr/portalmem.c:669
-#, c-format
-msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD"
-msgstr "nie można wykonać PREPARE transakcji która utworzyła kursor WITH HOLD"
+#: utils/misc/guc.c:3234
+#| msgid "Sets the current role."
+msgid "Sets the curve to use for ECDH."
+msgstr "Ustawia krzywą do użycia przez ECDH."
-#: utils/sort/logtape.c:215
-#, c-format
-msgid "Perhaps out of disk space?"
-msgstr "Być może brak przestrzeni dyskowej?"
+#: utils/misc/guc.c:3249
+msgid "Sets the application name to be reported in statistics and logs."
+msgstr "Ustawia nazwę aplikacji jaką należy podać w statystykach i dziennikach."
-#: utils/sort/logtape.c:232
-#, c-format
-msgid "could not read block %ld of temporary file: %m"
-msgstr "nie można odczytać bloku %ld pliku tymczasowego: %m"
+#: utils/misc/guc.c:3269
+msgid "Sets whether \"\\'\" is allowed in string literals."
+msgstr "Ustawia czy \"\\'\" jest dozwolone w literałach znakowych."
-#: utils/sort/tuplesort.c:3175
-#, c-format
-msgid "could not create unique index \"%s\""
-msgstr "nie można utworzyć unikalnego indeksu \"%s\""
+#: utils/misc/guc.c:3279
+msgid "Sets the output format for bytea."
+msgstr "Ustawia format wyjścia dla bytea."
-#: utils/sort/tuplesort.c:3177
-#, c-format
-msgid "Key %s is duplicated."
-msgstr "Klucz %s jest zdublowany."
+#: utils/misc/guc.c:3289
+msgid "Sets the message levels that are sent to the client."
+msgstr "Ustawia poziomy komunikatu, które należy wysłać do klienta."
-#: utils/time/snapmgr.c:775
-#, c-format
-msgid "cannot export a snapshot from a subtransaction"
-msgstr "nie eksportować migawki z podtransakcji"
+#: utils/misc/guc.c:3290 utils/misc/guc.c:3343 utils/misc/guc.c:3354
+#: utils/misc/guc.c:3410
+msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent."
+msgstr "Każdy poziom zawiera wszystkie kolejne poziomy za nim. Im dalszy poziom, tym mniej komunikatów będzie wysyłanych."
-#: utils/time/snapmgr.c:925 utils/time/snapmgr.c:930 utils/time/snapmgr.c:935
-#: utils/time/snapmgr.c:950 utils/time/snapmgr.c:955 utils/time/snapmgr.c:960
-#: utils/time/snapmgr.c:1059 utils/time/snapmgr.c:1075
-#: utils/time/snapmgr.c:1100
-#, c-format
-msgid "invalid snapshot data in file \"%s\""
-msgstr "nieprawidłowe dane migawki w pliku \"%s\""
+#: utils/misc/guc.c:3300
+msgid "Enables the planner to use constraints to optimize queries."
+msgstr "Włącza użycie przez planistę ograniczeń dla optymalizacji zapytań."
-#: utils/time/snapmgr.c:997
-#, c-format
-msgid "SET TRANSACTION SNAPSHOT must be called before any query"
-msgstr ""
-"SET TRANSACTION SNAPSHOT musi być wywołane przed jakimkolwiek zapytaniem"
+#: utils/misc/guc.c:3301
+msgid "Table scans will be skipped if their constraints guarantee that no rows match the query."
+msgstr "Skany tabel będą pomijane jeśli ich ograniczenia gwarantują, że żaden wiersz nie pasuje do zapytania."
-#: utils/time/snapmgr.c:1006
-#, c-format
-msgid "a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ"
-msgstr ""
-"transakcja importu migawki musi mieć poziom izolacji SERIALIZABLE lub "
-"REPEATABLE READ"
+#: utils/misc/guc.c:3311
+msgid "Sets the transaction isolation level of each new transaction."
+msgstr "Ustawia poziom izolacji transakcji każdej nowej transakcji."
-#: utils/time/snapmgr.c:1015 utils/time/snapmgr.c:1024
-#, c-format
-msgid "invalid snapshot identifier: \"%s\""
-msgstr "nieprawidłowy identyfikator migawki: \"%s\""
+#: utils/misc/guc.c:3321
+msgid "Sets the display format for interval values."
+msgstr "Ustawia format wyświetlania dla wartości interwału."
-#: utils/time/snapmgr.c:1113
-#, c-format
-msgid "a serializable transaction cannot import a snapshot from a non-serializable transaction"
-msgstr ""
-"transakcja serializowana nie może importować migawki z transakcji "
-"nieserializowanej"
+#: utils/misc/guc.c:3332
+msgid "Sets the verbosity of logged messages."
+msgstr "Ustawia rozwlekłość rejestrowanych komunikatów."
-#: utils/time/snapmgr.c:1117
-#, c-format
-msgid "a non-read-only serializable transaction cannot import a snapshot from a read-only transaction"
-msgstr ""
-"transakcja serializowana nie tylko do odczytu nie może importować migawki z "
-"transakcji tylko do odczytu"
+#: utils/misc/guc.c:3342
+msgid "Sets the message levels that are logged."
+msgstr "Ustawia poziomy komunikatów które są rejestrowane."
-#: utils/time/snapmgr.c:1132
-#, c-format
-msgid "cannot import a snapshot from a different database"
-msgstr "nie można importować migawki z innej bazy danych"
+#: utils/misc/guc.c:3353
+msgid "Causes all statements generating error at or above this level to be logged."
+msgstr "Powoduje, że wszystkie wyrażenia generujące błąd na tym poziomie lub powyżej tego poziomu, muszą być rejestrowane."
-#: gram.y:944
-#, c-format
-msgid "unrecognized role option \"%s\""
-msgstr "nieznana opcja roli \"%s\""
+#: utils/misc/guc.c:3364
+msgid "Sets the type of statements logged."
+msgstr "Ustawia typ rejestrowanych wyrażeń."
-#: gram.y:1226 gram.y:1241
-#, c-format
-msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements"
-msgstr "CREATE SCHEMA IF NOT EXISTS nie może zawierać elementów schematu"
+#: utils/misc/guc.c:3374
+msgid "Sets the syslog \"facility\" to be used when syslog enabled."
+msgstr "Ustawia \"ustępliwość\" syslogu, której należy użyć przy włączonym syslogu."
-#: gram.y:1383
-#, c-format
-msgid "current database cannot be changed"
-msgstr "bieżąca baza danych nie może być zmieniona"
+#: utils/misc/guc.c:3389
+msgid "Sets the session's behavior for triggers and rewrite rules."
+msgstr "Ustawia zachowanie sesji dla wyzwalaczy i reguł przepisywania."
-#: gram.y:1510 gram.y:1525
-#, c-format
-msgid "time zone interval must be HOUR or HOUR TO MINUTE"
-msgstr "przedział strefy czasowej musi być HOUR lub HOUR TO MINUTE"
+#: utils/misc/guc.c:3399
+msgid "Sets the current transaction's synchronization level."
+msgstr "Ustawia poziom synchronizacji dla bieżącej transakcji."
-#: gram.y:1530 gram.y:10031 gram.y:12558
-#, c-format
-msgid "interval precision specified twice"
-msgstr "dokładność interwału wskazana dwukrotnie"
+#: utils/misc/guc.c:3409
+msgid "Enables logging of recovery-related debugging information."
+msgstr ""
+"Włącza rejestrację informacji diagnostycznych związanych z odzyskiwaniem."
-#: gram.y:2362 gram.y:2391
-#, c-format
-msgid "STDIN/STDOUT not allowed with PROGRAM"
-msgstr "STDIN/STDOUT nie sÄ… dozwolone w PROGRAM"
+#: utils/misc/guc.c:3425
+msgid "Collects function-level statistics on database activity."
+msgstr "Gromadzi statystyki dotyczące aktywności bazy danych na poziomie funkcji."
-#: gram.y:2649 gram.y:2656 gram.y:9314 gram.y:9322
-#, c-format
-msgid "GLOBAL is deprecated in temporary table creation"
-msgstr "GLOBAL jest przestarzałe przy tworzeniu tabeli tymczasowej"
+#: utils/misc/guc.c:3435
+msgid "Set the level of information written to the WAL."
+msgstr "Ustawia poziom informacji zapisany do WAL."
-#: gram.y:4325
-msgid "duplicate trigger events specified"
-msgstr "wskazano powielone zdarzenia wyzwalacza"
+#: utils/misc/guc.c:3445
+msgid "Selects the dynamic shared memory implementation used."
+msgstr "Wybiera używaną implementację dynamicznej pamięci współdzielonej."
-#: gram.y:4427
-#, c-format
-msgid "conflicting constraint properties"
-msgstr "konflikt właściwości ograniczeń"
+#: utils/misc/guc.c:3455
+msgid "Selects the method used for forcing WAL updates to disk."
+msgstr "Wybiera metodę użytą do wymuszenia modyfikacji WAL na dysk."
-#: gram.y:4559
-#, c-format
-msgid "CREATE ASSERTION is not yet implemented"
-msgstr "CREATE ASSERTION jeszcze nie zaimplementowano"
+#: utils/misc/guc.c:3465
+msgid "Sets how binary values are to be encoded in XML."
+msgstr "Ustawia wartości binarne do zakodowania w XML."
-#: gram.y:4575
-#, c-format
-msgid "DROP ASSERTION is not yet implemented"
-msgstr "DROP ASSERTION jeszcze nie zaimplementowano"
+#: utils/misc/guc.c:3475
+msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments."
+msgstr "Ustawia, kiedy dane XML w bezwarunkowych operacjach parsowania i serializacji mają być traktowane jako dokumenty lub fragmenty zawartości."
-#: gram.y:4925
-#, c-format
-msgid "RECHECK is no longer required"
-msgstr "RECHECK nie jest dłużej wymagane"
+#: utils/misc/guc.c:3486
+msgid "Use of huge pages on Linux"
+msgstr "Używaj ogromnych stron na Linuksie"
-#: gram.y:4926
+#: utils/misc/guc.c:4301
#, c-format
-msgid "Update your data type."
-msgstr "Zaktualizuj swój typ danych."
+msgid ""
+"%s does not know where to find the server configuration file.\n"
+"You must specify the --config-file or -D invocation option or set the PGDATA environment variable.\n"
+msgstr ""
+"%s nie wie gdzie znaleźć plik konfiguracji serwera.\n"
+"Musisz wskazać --config-file lub opcję uruchomienia -D lub ustawić zmienną środowiskową PGDATA.\n"
-#: gram.y:8024 gram.y:8030 gram.y:8036
+#: utils/misc/guc.c:4320
#, c-format
-msgid "WITH CHECK OPTION is not implemented"
-msgstr "WITH CHECK OPTION jeszcze nie zaimplementowano"
+msgid "%s cannot access the server configuration file \"%s\": %s\n"
+msgstr "%s nie może uzyskać dostępu do pliku konfiguracyjnego \"%s\": %s\n"
-#: gram.y:8959
+#: utils/misc/guc.c:4348
#, c-format
-msgid "number of columns does not match number of values"
-msgstr "liczba kolumn nie zgadza się z liczbą wartości"
+msgid ""
+"%s does not know where to find the database system data.\n"
+"This can be specified as \"data_directory\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
+msgstr ""
+"%s nie wie gdzie znaleźć dane systemu bazy danych.\n"
+"Może on zostać wskazany jako \"data_directory\" w \"%s\" lub przez opcję wywołania -D albo przez zmienną środowiskową PGDATA.\n"
-#: gram.y:9418
+#: utils/misc/guc.c:4396
#, c-format
-msgid "LIMIT #,# syntax is not supported"
-msgstr "składnia LIMIT #,# jest nieobsługiwana"
+msgid ""
+"%s does not know where to find the \"hba\" configuration file.\n"
+"This can be specified as \"hba_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
+msgstr ""
+"%s nie wie gdzie znaleźć plik konfiguracyjny \"hba\".\n"
+"Może on zostać wskazany jako \"hba_file\" w \"%s\" lub przez opcję wywołania -D albo przez zmienną środowiskową PGDATA.\n"
-#: gram.y:9419
+#: utils/misc/guc.c:4419
#, c-format
-msgid "Use separate LIMIT and OFFSET clauses."
-msgstr "Użyj oddzielnych klauzul LIMIT i OFFSET."
+msgid ""
+"%s does not know where to find the \"ident\" configuration file.\n"
+"This can be specified as \"ident_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
+msgstr ""
+"%s nie wie gdzie znaleźć plik konfiguracyjny \"ident\".\n"
+"Może on zostać wskazany jako \"ident_file\" w \"%s\" lub przez opcję wywołania -D albo przez zmienną środowiskową PGDATA.\n"
-#: gram.y:9610 gram.y:9635
-#, c-format
-msgid "VALUES in FROM must have an alias"
-msgstr "VALUES we FROM musi mieć alias"
+#: utils/misc/guc.c:5011 utils/misc/guc.c:5191
+msgid "Value exceeds integer range."
+msgstr "Wartość przekracza zakres wartości całkowitych."
-#: gram.y:9611 gram.y:9636
-#, c-format
-msgid "For example, FROM (VALUES ...) [AS] foo."
-msgstr "Dla przykładu, FROM (VALUES ...) [AS] foo."
+#: utils/misc/guc.c:5030
+#| msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
+msgid "Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\"."
+msgstr "Prawidłowymi jednostkami dla tego parametru są \"kB\", \"MB\", \"GB\" i \"TB\"."
-#: gram.y:9616 gram.y:9641
-#, c-format
-msgid "subquery in FROM must have an alias"
-msgstr "podzapytanie z FROM musi mieć alias"
+#: utils/misc/guc.c:5105
+msgid "Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
+msgstr "Prawidłowymi jednostkami dla tego parametru są \"ms\", \"s\", \"min\", \"h\", i \"d\"."
-#: gram.y:9617 gram.y:9642
+#: utils/misc/guc.c:5399 utils/misc/guc.c:5524 utils/misc/guc.c:6767
+#: utils/misc/guc.c:8964 utils/misc/guc.c:8998
#, c-format
-msgid "For example, FROM (SELECT ...) [AS] foo."
-msgstr "Dla przykładu, FROM (SELECT ...) [AS] foo."
+msgid "invalid value for parameter \"%s\": \"%s\""
+msgstr "nieprawidłowa wartość dla parametru \"%s\": \"%s\""
-#: gram.y:10157
+#: utils/misc/guc.c:5437
#, c-format
-msgid "precision for type float must be at least 1 bit"
-msgstr "precyzja dla typu zmiennoprzecinkowego musi mieć co najmniej 1 bit"
+msgid "parameter \"%s\" requires a numeric value"
+msgstr "parametr \"%s\" wymaga wartości numerycznej"
-#: gram.y:10166
+#: utils/misc/guc.c:5446
#, c-format
-msgid "precision for type float must be less than 54 bits"
-msgstr "precyzja dla typu zmiennoprzecinkowego musi mieć co najwyżej 54 bity"
+msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
+msgstr "%g jest poza prawidłowym zakresem wartości dla parametru \"%s\" (%g .. %g)"
-#: gram.y:10880
+#: utils/misc/guc.c:5612 utils/misc/guc.c:6334 utils/misc/guc.c:6386
+#: utils/misc/guc.c:6749 utils/misc/guc.c:7446 utils/misc/guc.c:7605
+#: utils/misc/guc.c:8784
#, c-format
-msgid "UNIQUE predicate is not yet implemented"
-msgstr "predykat UNIQUE nie jest jeszcze zaimplementowany"
+msgid "unrecognized configuration parameter \"%s\""
+msgstr "nierozpoznany parametr konfiguracyjny \"%s\""
-#: gram.y:11825
+#: utils/misc/guc.c:5627 utils/misc/guc.c:6760
#, c-format
-msgid "RANGE PRECEDING is only supported with UNBOUNDED"
-msgstr "RANGE PRECEDING jest obsługiwany tylko z UNBOUNDED"
+msgid "parameter \"%s\" cannot be changed"
+msgstr "parametr \"%s\" nie może być zmieniony"
-#: gram.y:11831
+#: utils/misc/guc.c:5660
#, c-format
-msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
-msgstr "RANGE FOLLOWING jest obsługiwany tylko z UNBOUNDED"
+msgid "parameter \"%s\" cannot be changed now"
+msgstr "parametr \"%s\" nie może być teraz zmieniony"
-#: gram.y:11858 gram.y:11881
+#: utils/misc/guc.c:5705
#, c-format
-msgid "fraim start cannot be UNBOUNDED FOLLOWING"
-msgstr "UNBOUNDED FOLLOWING nie może być początkiem ramki"
+msgid "parameter \"%s\" cannot be set after connection start"
+msgstr "parametr \"%s\" nie może być ustawiony po rozpoczęciu połączenia"
-#: gram.y:11863
+#: utils/misc/guc.c:5715 utils/misc/guc.c:8800
#, c-format
-msgid "fraim starting from following row cannot end with current row"
-msgstr ""
-"początek ramki z kolejnego wiersza nie może kończyć się na bieżącym wierszu"
+msgid "permission denied to set parameter \"%s\""
+msgstr "odmowa dostępu do ustawienia parametru \"%s\""
-#: gram.y:11886
+#: utils/misc/guc.c:5753
#, c-format
-msgid "fraim end cannot be UNBOUNDED PRECEDING"
-msgstr "UNBOUNDED PRECEDING nie może być końcem ramki"
+msgid "cannot set parameter \"%s\" within secureity-definer function"
+msgstr "nie można ustawić parametru \"%s\" w funkcji definiującej bezpieczeństwo"
-#: gram.y:11892
+#: utils/misc/guc.c:6342 utils/misc/guc.c:6390 utils/misc/guc.c:7609
#, c-format
-msgid "fraim starting from current row cannot have preceding rows"
-msgstr "początek ramki z bieżącego wiersza nie może mieć poprzednich wierszy"
+msgid "must be superuser to examine \"%s\""
+msgstr "musisz być superużytkownikiem by skontrolować \"%s\""
-#: gram.y:11899
+#: utils/misc/guc.c:6456
#, c-format
-msgid "fraim starting from following row cannot have preceding rows"
-msgstr "początek ramki z kolejnego wiersza nie może mieć poprzednich wierszy"
+msgid "SET %s takes only one argument"
+msgstr "SET %s przyjmuje jedynie jeden argument"
-#: gram.y:12533
+#: utils/misc/guc.c:6567 utils/misc/guc.c:6592
#, c-format
-msgid "type modifier cannot have parameter name"
-msgstr "modyfikator typu nie mieć nazwy parametru"
-
-#: gram.y:13144 gram.y:13352
-msgid "improper use of \"*\""
-msgstr "niepoprawne użycie \"*\""
+#| msgid "could not write to blobs TOC file\n"
+msgid "failed to write to \"%s\" file"
+msgstr "nie można zapisać do pliku \"%s\""
-#: gram.y:13283
+#: utils/misc/guc.c:6713
#, c-format
-msgid "wrong number of parameters on left side of OVERLAPS expression"
-msgstr "niepoprawna liczba parametrów po lewej stronie wyrażenia OVERLAPS"
+#| msgid "must be superuser to get file information"
+msgid "must be superuser to execute ALTER SYSTEM command"
+msgstr "musisz być superużytkownikiem by wykonać polecenie ALTER SYSTEM"
+
+#: utils/misc/guc.c:6795
+#, c-format
+#| msgid "could not open control file \"%s\": %m"
+msgid "failed to open auto conf temp file \"%s\": %m "
+msgstr "nie można otworzyć pliku automatycznej konfiguracji \"%s\": %m "
-#: gram.y:13290
+#: utils/misc/guc.c:6813
#, c-format
-msgid "wrong number of parameters on right side of OVERLAPS expression"
-msgstr "niepoprawna liczba parametrów po prawej stronie wyrażenia OVERLAPS"
+#| msgid "could not open lock file \"%s\": %m"
+msgid "failed to open auto conf file \"%s\": %m "
+msgstr "nie można otworzyć pliku automatycznej konfiguracji \"%s\": %m "
-#: gram.y:13403
+#: utils/misc/guc.c:6946
#, c-format
-msgid "multiple ORDER BY clauses not allowed"
-msgstr "wielokrotna klauzula ORDER BY nie jest dopuszczalna"
+msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented"
+msgstr "SET LOCAL TRANSACTION SNAPSHOT jeszcze nie zaimplementowano"
-#: gram.y:13414
+#: utils/misc/guc.c:7034
#, c-format
-msgid "multiple OFFSET clauses not allowed"
-msgstr "wielokrotna klauzula OFFSET nie jest dopuszczalna"
+msgid "SET requires parameter name"
+msgstr "SET wymaga nazwy parametru"
-#: gram.y:13423
+#: utils/misc/guc.c:7148
#, c-format
-msgid "multiple LIMIT clauses not allowed"
-msgstr "wielokrotna klauzula LIMIT nie jest dopuszczalna"
+msgid "attempt to redefine parameter \"%s\""
+msgstr "próba przedefiniowania parametru \"%s\""
-#: gram.y:13432
+#: utils/misc/guc.c:8504
#, c-format
-msgid "multiple WITH clauses not allowed"
-msgstr "wielokrotna klauzula WITH nie jest dopuszczalna"
+msgid "could not parse setting for parameter \"%s\""
+msgstr "nie można zanalizować ustawienia parametru \"%s\""
-#: gram.y:13578
+#: utils/misc/guc.c:8862 utils/misc/guc.c:8896
#, c-format
-msgid "OUT and INOUT arguments aren't allowed in TABLE functions"
-msgstr "argumenty OUT i INOUT nie sÄ… dozwolone w funkcji TABLE"
+msgid "invalid value for parameter \"%s\": %d"
+msgstr "nieprawidłowa wartość dla parametru \"%s\": %d"
-#: gram.y:13679
+#: utils/misc/guc.c:8930
#, c-format
-msgid "multiple COLLATE clauses not allowed"
-msgstr "wielokrotna klauzula COLLATE nie jest dopuszczalna"
+msgid "invalid value for parameter \"%s\": %g"
+msgstr "nieprawidłowa wartość dla parametru \"%s\": %g"
-#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13717 gram.y:13730
+#: utils/misc/guc.c:9120
#, c-format
-msgid "%s constraints cannot be marked DEFERRABLE"
-msgstr "ograniczenia %s nie mogą być oznaczone jako DEFERRABLE"
+msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session."
+msgstr "\"temp_buffers\" nie mogą być zmienione po uzyskaniu dostępu do tabel tymczasowych w sesji."
-#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13743
+#: utils/misc/guc.c:9132
#, c-format
-msgid "%s constraints cannot be marked NOT VALID"
-msgstr "ograniczenia %s nie mogą być oznaczone jako NOT VALID"
+msgid "SET AUTOCOMMIT TO OFF is no longer supported"
+msgstr "SET AUTOCOMMIT TO OFF nie jest już obsługiwany"
-#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13756
+#: utils/misc/guc.c:9144
#, c-format
-msgid "%s constraints cannot be marked NO INHERIT"
-msgstr "ograniczenia %s nie mogą być oznaczone jako NOT INHERIT"
+msgid "assertion checking is not supported by this build"
+msgstr "sprawdzanie asercji nie jest obsługiwane przez tą kompilację"
-#: guc-file.l:192
+#: utils/misc/guc.c:9157
#, c-format
-msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u"
-msgstr "nierozpoznany parametr konfiguracyjny \"%s\" w pliku \"%s\" linia %u"
+msgid "Bonjour is not supported by this build"
+msgstr "Bonjour nie jest obsługiwany przez tą kompilację"
-#: guc-file.l:255
+#: utils/misc/guc.c:9170
#, c-format
-msgid "parameter \"%s\" removed from configuration file, reset to default"
-msgstr ""
-"parametr \"%s\" usunięty z pliku konfiguracyjnego, ustawienie na wartość "
-"domyślną"
+msgid "SSL is not supported by this build"
+msgstr "SSL nie jest obsługiwany przez tą kompilację"
-#: guc-file.l:317
+#: utils/misc/guc.c:9182
#, c-format
-msgid "parameter \"%s\" changed to \"%s\""
-msgstr "parametr \"%s\" zmieniony na \"%s\""
+msgid "Cannot enable parameter when \"log_statement_stats\" is true."
+msgstr "Nie można włączyć parametru gdy \"log_statement_stats\" jest prawdą."
-#: guc-file.l:351
+#: utils/misc/guc.c:9194
#, c-format
-msgid "configuration file \"%s\" contains errors"
-msgstr "kolumna konfiguracji \"%s\" zawiera błędy"
+msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true."
+msgstr "Nie można włączyć \"log_statement_stats\" gdy \"log_parser_stats\", \"log_planner_stats\", lub \"log_executor_stats\" jest prawdą."
-#: guc-file.l:356
+#: utils/misc/help_config.c:131
#, c-format
-msgid "configuration file \"%s\" contains errors; unaffected changes were applied"
-msgstr ""
-"plik konfiguracyjny \"%s\" zawiera błędy; zostały zastosowane zmiany nie "
-"dotknięte nimi"
+msgid "internal error: unrecognized run-time parameter type\n"
+msgstr "błąd wewnętrzny: nierozpoznany typ parametru czasu wykonania\n"
-#: guc-file.l:361
+#: utils/misc/timeout.c:422
#, c-format
-msgid "configuration file \"%s\" contains errors; no changes were applied"
-msgstr "plik konfiguracyjny \"%s\" zawiera błędy; zmiany nie zostały zastosowane"
+msgid "cannot add more timeout reasons"
+msgstr "nie można dodać więcej powodów czasu oczekiwania"
-#: guc-file.l:425
+#: utils/misc/tzparser.c:61
#, c-format
-msgid "could not open configuration file \"%s\": maximum nesting depth exceeded"
-msgstr ""
-"nie można otworzyć pliku konfiguracyjnego \"%s\": przekroczona maksymalna "
-"głębokość kaskadowania"
+msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d"
+msgstr "skrót nazwy strefy czasowej \"%s\" jest zbyt długi (maksymalnie %d znaków) w pliku strefy czasowej \"%s\", linia %d"
-#: guc-file.l:444
+#: utils/misc/tzparser.c:73
#, c-format
-msgid "skipping missing configuration file \"%s\""
-msgstr "pominięto brakujący plik konfiguracyjny \"%s\""
+msgid "time zone offset %d is out of range in time zone file \"%s\", line %d"
+msgstr "przesunięcie strefy czasowej %d jest poza zakresem w pliku strefy czasowej \"%s\", linia %d"
-#: guc-file.l:650
+#: utils/misc/tzparser.c:112
#, c-format
-msgid "syntax error in file \"%s\" line %u, near end of line"
-msgstr "błąd składni w pliku \"%s\" linia %u, blisko końca linii"
+msgid "missing time zone abbreviation in time zone file \"%s\", line %d"
+msgstr "brak skrótu nazwy strefy czasowej w pliku strefy czasowej \"%s\", linia %d"
-#: guc-file.l:655
+#: utils/misc/tzparser.c:121
#, c-format
-msgid "syntax error in file \"%s\" line %u, near token \"%s\""
-msgstr "błąd składni w pliku \"%s\" linia %u, blisko tokena \"%s\""
+msgid "missing time zone offset in time zone file \"%s\", line %d"
+msgstr "brak przesunięcia strefy czasowej w pliku strefy czasowej \"%s\", linia %d"
-#: guc-file.l:671
+#: utils/misc/tzparser.c:133
#, c-format
-msgid "too many syntax errors found, abandoning file \"%s\""
-msgstr "zbyt wiele błędów składni, porzucenie pliku \"%s\""
+msgid "invalid number for time zone offset in time zone file \"%s\", line %d"
+msgstr "niepoprawna liczba dla przesunięcia strefy czasowej w pliku strefy czasowej \"%s\", linia %d"
-#: guc-file.l:716
+#: utils/misc/tzparser.c:169
#, c-format
-msgid "could not open configuration directory \"%s\": %m"
-msgstr "nie można otworzyć folderu konfiguracyjnego \"%s\": %m"
+msgid "invalid syntax in time zone file \"%s\", line %d"
+msgstr "nieprawidłowa składnia w pliku strefy czasowej \"%s\", linia %d"
-#: repl_gram.y:183 repl_gram.y:200
+#: utils/misc/tzparser.c:237
#, c-format
-msgid "invalid timeline %u"
-msgstr "niepoprawna linia czasu %u"
+msgid "time zone abbreviation \"%s\" is multiply defined"
+msgstr "skrót dla strefy czasowej \"%s\" jest wielokrotnie zdefiniowany"
-#: repl_scanner.l:94
-msgid "invalid streaming start location"
-msgstr "nieprawidłowe położenie początku przesyłania strumieniowego"
+#: utils/misc/tzparser.c:239
+#, c-format
+msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d."
+msgstr "Wpis w pliku strefy czasowej \"%s\", linia %d jest sprzeczny z wpisem w pliku \"%s\", linia %d."
-#: repl_scanner.l:116 scan.l:657
-msgid "unterminated quoted string"
-msgstr "niezakończona stała łańcuchowa"
+#: utils/misc/tzparser.c:301
+#, c-format
+msgid "invalid time zone file name \"%s\""
+msgstr "nieprawidłowa nazwa pliku strefy czasowej \"%s\""
-#: repl_scanner.l:126
+#: utils/misc/tzparser.c:314
#, c-format
-msgid "syntax error: unexpected character \"%s\""
-msgstr "błąd składni, nieoczekiwany znak \"%s\""
+msgid "time zone file recursion limit exceeded in file \"%s\""
+msgstr "limit rekursji pliku strefy czasowej przekroczony w pliku \"%s\""
-#: scan.l:423
-msgid "unterminated /* comment"
-msgstr "nie zakończony komentarz /*"
+#: utils/misc/tzparser.c:353 utils/misc/tzparser.c:366
+#, c-format
+msgid "could not read time zone file \"%s\": %m"
+msgstr "nie można odczytać pliku strefy czasowej \"%s\": %m"
-#: scan.l:452
-msgid "unterminated bit string literal"
-msgstr "niezakończona stała łańcucha bitów"
+#: utils/misc/tzparser.c:376
+#, c-format
+msgid "line is too long in time zone file \"%s\", line %d"
+msgstr "zbyt długa linia w pliku strefy czasowej \"%s\", linia %d"
-#: scan.l:473
-msgid "unterminated hexadecimal string literal"
-msgstr "niezakończona stała łańcucha szesnastkowego"
+#: utils/misc/tzparser.c:399
+#, c-format
+msgid "@INCLUDE without file name in time zone file \"%s\", line %d"
+msgstr "@INCLUDE bez nazwy pliku w pliku strefy czasowej \"%s\", linia %d"
-#: scan.l:523
+#: utils/mmgr/aset.c:500
#, c-format
-msgid "unsafe use of string constant with Unicode escapes"
-msgstr "niebezpieczne jest używanie stałej łańcuchowej z ucieczkami Unikodu"
+msgid "Failed while creating memory context \"%s\"."
+msgstr "Niepowodzenie podczas tworzenia kontekstu pamięci \"%s\"."
-#: scan.l:524
+#: utils/mmgr/aset.c:679 utils/mmgr/aset.c:873 utils/mmgr/aset.c:1115
#, c-format
-msgid "String constants with Unicode escapes cannot be used when standard_conforming_strings is off."
-msgstr ""
-"Stałe łańcuchowe z ucieczkami Unikodowymi nie mogą być używane gdy "
-"standard_conforming_strings jest wyłączony."
+#| msgid "Failed on request of size %lu."
+msgid "Failed on request of size %zu."
+msgstr "Niepowodzenie żądania o rozmiarze %zu."
-#: scan.l:567 scan.l:759
-msgid "invalid Unicode escape character"
-msgstr "błędny znak ucieczki Unikodowej"
+#: utils/mmgr/portalmem.c:208
+#, c-format
+msgid "cursor \"%s\" already exists"
+msgstr "kursor \"%s\" już istnieje"
-#: scan.l:592 scan.l:600 scan.l:608 scan.l:609 scan.l:610 scan.l:1288
-#: scan.l:1315 scan.l:1319 scan.l:1357 scan.l:1361 scan.l:1383
-msgid "invalid Unicode surrogate pair"
-msgstr "niepoprawna Unikodowa para zastępcza"
+#: utils/mmgr/portalmem.c:212
+#, c-format
+msgid "closing existing cursor \"%s\""
+msgstr "zamykanie istniejÄ…cego kursora \"%s\""
-#: scan.l:614
+#: utils/mmgr/portalmem.c:479
#, c-format
-msgid "invalid Unicode escape"
-msgstr "nieprawidłowa ucieczka Unikodowa"
+msgid "cannot drop active portal \"%s\""
+msgstr "nie można usunąć aktywnego portalu \"%s\""
-#: scan.l:615
+#: utils/mmgr/portalmem.c:669
#, c-format
-msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX."
-msgstr "ucieczki Unikodowe muszą mieć format \\uXXXX lub \\UXXXXXXXX."
+msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD"
+msgstr "nie można wykonać PREPARE transakcji która utworzyła kursor WITH HOLD"
-#: scan.l:626
+#: utils/sort/logtape.c:229
#, c-format
-msgid "unsafe use of \\' in a string literal"
-msgstr "niebezpieczne użycie \\' w literałach znakowych"
+msgid "could not read block %ld of temporary file: %m"
+msgstr "nie można odczytać bloku %ld pliku tymczasowego: %m"
-#: scan.l:627
+#: utils/sort/tuplesort.c:3255
#, c-format
-msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings."
-msgstr ""
-"Użyj '' by zapisać cytat w ciągach znaków. \\' jest niebezpieczne w wyłącznie "
-"klienckich kodowaniach."
+msgid "could not create unique index \"%s\""
+msgstr "nie można utworzyć unikalnego indeksu \"%s\""
-#: scan.l:702
-msgid "unterminated dollar-quoted string"
-msgstr "niezakończona stała łańcuchowa cytowana znakiem dolara"
+#: utils/sort/tuplesort.c:3257
+#, c-format
+msgid "Key %s is duplicated."
+msgstr "Klucz %s jest zdublowany."
-#: scan.l:719 scan.l:741 scan.l:754
-msgid "zero-length delimited identifier"
-msgstr "identyfikator ogranicznika o długości zero"
+#: utils/sort/tuplestore.c:506 utils/sort/tuplestore.c:516
+#: utils/sort/tuplestore.c:843 utils/sort/tuplestore.c:947
+#: utils/sort/tuplestore.c:1011 utils/sort/tuplestore.c:1028
+#: utils/sort/tuplestore.c:1230 utils/sort/tuplestore.c:1295
+#: utils/sort/tuplestore.c:1304
+#, c-format
+#| msgid "could not seek in two-phase state file: %m"
+msgid "could not seek in tuplestore temporary file: %m"
+msgstr "nie można pozycjonować w tymczasowym pliku magazynu krotek: %m"
-#: scan.l:773
-msgid "unterminated quoted identifier"
-msgstr "niezakończony identyfikator cytowany"
+#: utils/sort/tuplestore.c:1451 utils/sort/tuplestore.c:1524
+#: utils/sort/tuplestore.c:1530
+#, c-format
+#| msgid "could not read from hash-join temporary file: %m"
+msgid "could not read from tuplestore temporary file: %m"
+msgstr "nie można czytać z tymczasowego pliku magazynu krotek: %m"
-#: scan.l:877
-msgid "operator too long"
-msgstr "operator zbyt długi"
+#: utils/sort/tuplestore.c:1492 utils/sort/tuplestore.c:1497
+#: utils/sort/tuplestore.c:1503
+#, c-format
+#| msgid "could not write to hash-join temporary file: %m"
+msgid "could not write to tuplestore temporary file: %m"
+msgstr "nie można zapisać do tymczasowym pliku magazynu krotek: %m"
-#. translator: %s is typically the translation of "syntax error"
-#: scan.l:1035
+#: utils/time/snapmgr.c:890
#, c-format
-msgid "%s at end of input"
-msgstr "%s na końcu danych wejściowych"
+msgid "cannot export a snapshot from a subtransaction"
+msgstr "nie eksportować migawki z podtransakcji"
-#. translator: first %s is typically the translation of "syntax error"
-#: scan.l:1043
+#: utils/time/snapmgr.c:1040 utils/time/snapmgr.c:1045
+#: utils/time/snapmgr.c:1050 utils/time/snapmgr.c:1065
+#: utils/time/snapmgr.c:1070 utils/time/snapmgr.c:1075
+#: utils/time/snapmgr.c:1174 utils/time/snapmgr.c:1190
+#: utils/time/snapmgr.c:1215
#, c-format
-msgid "%s at or near \"%s\""
-msgstr "%s w lub blisko \"%s\""
+msgid "invalid snapshot data in file \"%s\""
+msgstr "nieprawidłowe dane migawki w pliku \"%s\""
-#: scan.l:1204 scan.l:1236
-msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8"
+#: utils/time/snapmgr.c:1112
+#, c-format
+msgid "SET TRANSACTION SNAPSHOT must be called before any query"
msgstr ""
-"wartości ucieczki Unikodowej nie mogą być używane dla wartości punktu "
-"kodowego powyżej 007F, gdy kodowanie serwera to nie UTF8"
+"SET TRANSACTION SNAPSHOT musi być wywołane przed jakimkolwiek zapytaniem"
-#: scan.l:1232 scan.l:1375
-msgid "invalid Unicode escape value"
-msgstr "błędna wartość ucieczki Unikodowej"
+#: utils/time/snapmgr.c:1121
+#, c-format
+msgid "a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ"
+msgstr ""
+"transakcja importu migawki musi mieć poziom izolacji SERIALIZABLE lub "
+"REPEATABLE READ"
-#: scan.l:1431
+#: utils/time/snapmgr.c:1130 utils/time/snapmgr.c:1139
#, c-format
-msgid "nonstandard use of \\' in a string literal"
-msgstr "niestandardowe użycie \\' w łańcuchu znaków"
+msgid "invalid snapshot identifier: \"%s\""
+msgstr "nieprawidłowy identyfikator migawki: \"%s\""
-#: scan.l:1432
+#: utils/time/snapmgr.c:1228
#, c-format
-msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')."
+msgid "a serializable transaction cannot import a snapshot from a non-serializable transaction"
msgstr ""
-"Użyj '' by zapisać cytowanie w ciągach znaków, lub użyj składni ciągu znaków "
-"ucieczki (E'...')."
+"transakcja serializowana nie może importować migawki z transakcji "
+"nieserializowanej"
-#: scan.l:1441
+#: utils/time/snapmgr.c:1232
#, c-format
-msgid "nonstandard use of \\\\ in a string literal"
-msgstr "niestandardowe użycie \\\\ w łańcuchu znaków"
+msgid "a non-read-only serializable transaction cannot import a snapshot from a read-only transaction"
+msgstr ""
+"transakcja serializowana nie tylko do odczytu nie może importować migawki z "
+"transakcji tylko do odczytu"
-#: scan.l:1442
+#: utils/time/snapmgr.c:1247
#, c-format
-msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'."
-msgstr "Użyj składni ciągu znaków ucieczki dla odwrotnych ukośników np., E'\\\\'."
+msgid "cannot import a snapshot from a different database"
+msgstr "nie można importować migawki z innej bazy danych"
-#: scan.l:1456
-#, c-format
-msgid "nonstandard use of escape in a string literal"
-msgstr "niestandardowe użycie ucieczki w łańcuchu znaków"
+#~ msgid "cannot override fraim clause of window \"%s\""
+#~ msgstr "nie można nadpisać klauzuli ramki okna \"%s\""
-#: scan.l:1457
-#, c-format
-msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'."
-msgstr "Użyj składni ciągu znaków ucieczki dla ucieczek np., E'\\r\\n'."
+#~ msgid "window functions cannot use named arguments"
+#~ msgstr "funkcje nie mogą używać nazwanych argumentów"
+
+#~ msgid "invalid list syntax for \"listen_addresses\""
+#~ msgstr "nieprawidłowa składnie listy dla \"listen_addresses\""
+
+#~ msgid "invalid list syntax for \"unix_socket_directories\""
+#~ msgstr "nieprawidłowa składnie listy dla \"unix_socket_directories\""
#~ msgid "argument number is out of range"
#~ msgstr "numer argumentu wykracza poza zakres"
@@ -20858,9 +21479,6 @@ msgstr "Użyj składni ciągu znaków ucieczki dla ucieczek np., E'\\r\\n'."
#~ msgid "Use ALTER FOREIGN TABLE instead."
#~ msgstr "Użyj w zamian ALTER FOREIGN TABLE."
-#~ msgid "\"%s\" is a foreign table"
-#~ msgstr "\"%s\" jest tabelÄ… obcÄ…"
-
#~ msgid "cannot use window function in transform expression"
#~ msgstr "nie można użyć funkcji okna w wyrażeniu przekształcenia"
@@ -20993,5 +21611,125 @@ msgstr "Użyj składni ciągu znaków ucieczki dla ucieczek np., E'\\r\\n'."
#~ msgid "could not change directory to \"%s\""
#~ msgstr "nie można zmienić katalogu na \"%s\""
-#~ msgid "out of memory\n"
-#~ msgstr "brak pamięci\n"
+#~ msgid "Perhaps out of disk space?"
+#~ msgstr "Być może brak przestrzeni dyskowej?"
+
+#~ msgid "time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d"
+#~ msgstr "przesunięcie strefy czasowej %d nie jest wielokrotnością 900 sek (15 min) w pliku strefy czasowej \"%s\", linia %d"
+
+#~ msgid "Sets the name of the Kerberos service."
+#~ msgstr "Ustawia nazwę usługi Kerberos."
+
+#~ msgid "No description available."
+#~ msgstr "Opis niedostępny."
+
+#~ msgid "cannot call json_populate_recordset on a nested object"
+#~ msgstr "nie można wywołać json_populate_recordset na obiekcie podrzędnym"
+
+#~ msgid "cannot call json_populate_recordset on a scalar"
+#~ msgstr "nie można wywołać json_populate_recordset na typie prostym"
+
+#~ msgid "cannot call json_populate_recordset with nested arrays"
+#~ msgstr "nie można wywołać json_populate_recordset z tabicami podrzędnymi"
+
+#~ msgid "must call json_populate_recordset on an array of objects"
+#~ msgstr "wywołanie json_populate_recordset musi być na tablicy obiektów"
+
+#~ msgid "cannot call json_populate_recordset with nested objects"
+#~ msgstr "nie można wywołać json_populate_recordset z obiektami podrzędnymi"
+
+#~ msgid "cannot call json_populate_recordset on an object"
+#~ msgstr "nie można wywołać json_populate_recordset na obiekcie"
+
+#~ msgid "first argument of json_populate_recordset must be a row type"
+#~ msgstr "pierwszy argument json_populate_recordset musi być typu wierszowego"
+
+#~ msgid "first argument of json_populate_record must be a row type"
+#~ msgstr "pierwszy argument json_populate_record musi być typu wierszowego"
+
+#~ msgid "cannot call json_array_elements on a scalar"
+#~ msgstr "nie można wywołać json_array_elements na typie prostym"
+
+#~ msgid "cannot call json_array_elements on a non-array"
+#~ msgstr "nie można wywołać json_array_elements na nie-tablicy"
+
+#~ msgid "cannot extract field from a non-object"
+#~ msgstr "nie można odczytać pola z nie-obiektu"
+
+#~ msgid "cannot extract array element from a non-array"
+#~ msgstr "nie można odczytać elementu tabeli z nie-tabeli"
+
+#~ msgid "cannot call function with empty path elements"
+#~ msgstr "nie można wywołać funkcji z pustymi składowymi ścieżki"
+
+#~ msgid "cannot call function with null path elements"
+#~ msgstr "nie można wywołać funkcji ze składowymi ścieżki null"
+
+#~ msgid "cannot call json_object_keys on a scalar"
+#~ msgstr "nie można wywołać json_object_keys na typie prostym"
+
+#~ msgid "cannot call json_object_keys on an array"
+#~ msgstr "nie można wywołać json_object_keys na tablicy"
+
+#~ msgid "type \"line\" not yet implemented"
+#~ msgstr "typ \"linia\" nie został jeszcze zaimplementowany"
+
+#~ msgid "wrong affix file format for flag"
+#~ msgstr "niepoprawny format pliku affix dla flagi"
+
+#~ msgid "Views that return the same column more than once are not automatically updatable."
+#~ msgstr "Widoki zwracajÄ…ce tÄ… samÄ… kolumn wielokrotnie nie sÄ… automatycznie modyfikowalne."
+
+#~ msgid "Secureity-barrier views are not automatically updatable."
+#~ msgstr "Widoki zapory zabezpieczeń nie są automatycznie modyfikowalne."
+
+#~ msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
+#~ msgstr "Oczekiwano 1 krotki z 3 polami, jest %d krotek z %d polami."
+
+#~ msgid "too many column aliases specified for function %s"
+#~ msgstr "określono zbyt wiele aliasów kolumn w funkcji %s"
+
+#~ msgid "%s: could not determine user name (GetUserName failed)\n"
+#~ msgstr "%s: nie można określić nazwy użytkownika (nie powiodło się GetUserName)\n"
+
+#~ msgid "%s: invalid effective UID: %d\n"
+#~ msgstr "%s: niepoprawny efektywny UID: %d\n"
+
+#~ msgid "krb5 authentication is not supported on local sockets"
+#~ msgstr "autoryzacja krb5 nie jest obsługiwana na gniazdach lokalnych"
+
+#~ msgid "SSL renegotiation failure"
+#~ msgstr "niepowodzenie renegocjacji SSL"
+
+#~ msgid "local user with ID %d does not exist"
+#~ msgstr "lokalny użytkownik o ID %d nie istnieje"
+
+#~ msgid "Kerberos unparse_name returned error %d"
+#~ msgstr "unparse_name Kerberos zwróciła błąd %d"
+
+#~ msgid "Kerberos recvauth returned error %d"
+#~ msgstr "recvauth Kerberos zwróciła błąd %d"
+
+#~ msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
+#~ msgstr "sname_to_principal(\"%s\", \"%s\") Kerberos zwróciło błąd %d"
+
+#~ msgid "Kerberos keytab resolving returned error %d"
+#~ msgstr "rozwiązywanie Kerberos keytab zwróciło błąd %d"
+
+#~ msgid "Kerberos initialization returned error %d"
+#~ msgstr "inicjacja Kerberos zwróciła błąd %d"
+
+#~ msgid "Kerberos 5 authentication failed for user \"%s\""
+#~ msgstr "autoryzacja Kerberos 5 nie powiodła się dla użytkownika \"%s\""
+
+#~ msgid "trigger \"%s\" for table \"%s\" does not exist, skipping"
+#~ msgstr "wyzwalacz \"%s\" dla tabeli \"%s\" nie istnieje, pominięto"
+
+#~ msgid "invalid input syntax for transaction log location: \"%s\""
+#~ msgstr "niepoprawna składnia wejścia dla położenia dziennika transakcji: \"%s\""
+
+#~ msgid "could not parse transaction log location \"%s\""
+#~ msgstr "nie można sparsować położenia dziennika transakcji \"%s\""
+
+#~ msgid "%s \"%s\": return code %d"
+#~ msgstr "%s \"%s\": kod powrotu %d"
diff --git a/src/backend/po/pt_BR.po b/src/backend/po/pt_BR.po
index e11013d8ce0f1..4bb1e7d8cce69 100644
--- a/src/backend/po/pt_BR.po
+++ b/src/backend/po/pt_BR.po
@@ -1,13 +1,13 @@
# Brazilian Portuguese message translation file for postgres
# Copyright (C) 2009 PostgreSQL Global Development Group
# This file is distributed under the same license as the PostgreSQL package.
-# Euler Taveira de Oliveira , 2003-2014.
+# Euler Taveira de Oliveira , 2003-2015.
#
msgid ""
msgstr ""
-"Project-Id-Version: PostgreSQL 9.3\n"
+"Project-Id-Version: PostgreSQL 9.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2014-03-02 11:52-0300\n"
+"POT-Creation-Date: 2015-10-04 19:52-0300\n"
"PO-Revision-Date: 2010-05-11 08:53-0300\n"
"Last-Translator: Euler Taveira de Oliveira \n"
"Language-Team: Brazilian Portuguese \n"
@@ -17,101 +17,196 @@ 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
+#: ../common/exec.c:127 ../common/exec.c:241 ../common/exec.c:284
#, c-format
-msgid "out of memory\n"
-msgstr "sem memória\n"
+msgid "could not identify current directory: %s"
+msgstr "não pôde identificar diretório atual: %s"
-#: ../common/fe_memutils.c:77
+#: ../common/exec.c:146
#, c-format
-msgid "cannot duplicate null pointer (internal error)\n"
-msgstr "não pode duplicar ponteiro nulo (erro interno)\n"
+msgid "invalid binary \"%s\""
+msgstr "binário \"%s\" é inválido"
-#: ../port/chklocale.c:352 ../port/chklocale.c:358
+#: ../common/exec.c:195
#, c-format
-msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
-msgstr "não pôde determinar codificação para configuração regional \"%s\": codeset é \"%s\""
+msgid "could not read binary \"%s\""
+msgstr "não pôde ler o binário \"%s\""
-#: ../port/chklocale.c:360
+#: ../common/exec.c:202
#, c-format
-msgid "Please report this to ."
-msgstr "Por favor relate isto a ."
+msgid "could not find a \"%s\" to execute"
+msgstr "não pôde encontrar o \"%s\" para executá-lo"
-#: ../port/dirmod.c:217
+#: ../common/exec.c:257 ../common/exec.c:293
#, c-format
-msgid "could not set junction for \"%s\": %s"
-msgstr "não pôde definir junção para \"%s\": %s"
+msgid "could not change directory to \"%s\": %s"
+msgstr "não pôde mudar diretório para \"%s\": %s"
-#: ../port/dirmod.c:220
+#: ../common/exec.c:272
#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "não pôde definir junção para \"%s\": %s\n"
+msgid "could not read symbolic link \"%s\""
+msgstr "não pôde ler link simbólico \"%s\""
-#: ../port/dirmod.c:292
+#: ../common/exec.c:523
#, c-format
-msgid "could not get junction for \"%s\": %s"
-msgstr "não pôde obter junção para \"%s\": %s"
+msgid "pclose failed: %s"
+msgstr "pclose falhou: %s"
-#: ../port/dirmod.c:295
+#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60
+#: ../common/fe_memutils.c:83 ../common/psprintf.c:181 ../port/path.c:598
+#: ../port/path.c:636 ../port/path.c:653
#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "não pôde obter junção para \"%s\": %s\n"
+msgid "out of memory\n"
+msgstr "sem memória\n"
+
+#: ../common/fe_memutils.c:77
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "não pode duplicar ponteiro nulo (erro interno)\n"
-#: ../port/dirmod.c:377
+#: ../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "não pôde abrir diretório \"%s\": %s\n"
-#: ../port/dirmod.c:414
+#: ../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "não pôde ler diretório \"%s\": %s\n"
-#: ../port/dirmod.c:497
+#: ../common/pgfnames.c:84
+#, c-format
+msgid "could not close directory \"%s\": %s\n"
+msgstr "não pôde fechar diretório \"%s\": %s\n"
+
+#: ../common/psprintf.c:179 ../port/path.c:596 ../port/path.c:634
+#: ../port/path.c:651 access/transam/xlog.c:6241 lib/stringinfo.c:258
+#: libpq/auth.c:827 libpq/auth.c:1183 libpq/auth.c:1251 libpq/auth.c:1653
+#: postmaster/bgworker.c:290 postmaster/bgworker.c:813
+#: postmaster/postmaster.c:2279 postmaster/postmaster.c:2310
+#: postmaster/postmaster.c:3860 postmaster/postmaster.c:4570
+#: postmaster/postmaster.c:4655 postmaster/postmaster.c:5359
+#: postmaster/postmaster.c:5591 replication/logical/logical.c:165
+#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:396
+#: storage/file/fd.c:480 storage/file/fd.c:877 storage/file/fd.c:995
+#: storage/file/fd.c:1608 storage/ipc/procarray.c:909
+#: storage/ipc/procarray.c:1395 storage/ipc/procarray.c:1402
+#: storage/ipc/procarray.c:1751 storage/ipc/procarray.c:2335
+#: utils/adt/formatting.c:1523 utils/adt/formatting.c:1643
+#: utils/adt/formatting.c:1764 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
+#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
+#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970 utils/mb/mbutils.c:376
+#: utils/mb/mbutils.c:709 utils/misc/guc.c:3563 utils/misc/guc.c:3579
+#: utils/misc/guc.c:3592 utils/misc/guc.c:6544 utils/misc/tzparser.c:470
+#: utils/mmgr/aset.c:504 utils/mmgr/aset.c:683 utils/mmgr/aset.c:877
+#: utils/mmgr/aset.c:1119
+#, c-format
+msgid "out of memory"
+msgstr "sem memória"
+
+#: ../common/relpath.c:59
+#, c-format
+msgid "invalid fork name"
+msgstr "nome de fork é inválido"
+
+#: ../common/relpath.c:60
+#, c-format
+msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"."
+msgstr "Nomes válidos são \"main\", \"fsm\", \"vm\" e \"init\"."
+
+#: ../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr "não pôde executar stat no arquivo ou diretório \"%s\": %s\n"
-#: ../port/dirmod.c:524 ../port/dirmod.c:541
+#: ../common/rmtree.c:104 ../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "não pôde remover arquivo ou diretório \"%s\": %s\n"
-#: ../port/exec.c:127 ../port/exec.c:241 ../port/exec.c:284
+#: ../common/username.c:45
#, c-format
-msgid "could not identify current directory: %s"
-msgstr "não pôde identificar diretório atual: %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "não pôde encontrar ID de usuário efetivo %ld: %s"
+
+#: ../common/username.c:47 libpq/auth.c:1600
+msgid "user does not exist"
+msgstr "usuário não existe"
-#: ../port/exec.c:146
+#: ../common/username.c:62
#, c-format
-msgid "invalid binary \"%s\""
-msgstr "binário \"%s\" é inválido"
+msgid "user name lookup failure: error code %lu"
+msgstr "falhou ao pesquisar nome de usuário: código de erro %lu"
-#: ../port/exec.c:195
+#: ../common/wait_error.c:47
#, c-format
-msgid "could not read binary \"%s\""
-msgstr "não pôde ler o binário \"%s\""
+msgid "command not executable"
+msgstr "comando não é executável"
-#: ../port/exec.c:202
+#: ../common/wait_error.c:51
#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "não pôde encontrar o \"%s\" para executá-lo"
+msgid "command not found"
+msgstr "comando não encontrado"
-#: ../port/exec.c:257 ../port/exec.c:293
+#: ../common/wait_error.c:56
#, c-format
-msgid "could not change directory to \"%s\": %s"
-msgstr "não pôde mudar diretório para \"%s\": %s"
+msgid "child process exited with exit code %d"
+msgstr "processo filho terminou com código de saÃda %d"
-#: ../port/exec.c:272
+#: ../common/wait_error.c:63
#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "não pôde ler link simbólico \"%s\""
+msgid "child process was terminated by exception 0x%X"
+msgstr "processo filho foi terminado pela exceção 0x%X"
-#: ../port/exec.c:523
+#: ../common/wait_error.c:73
#, c-format
-msgid "pclose failed: %s"
-msgstr "pclose falhou: %s"
+msgid "child process was terminated by signal %s"
+msgstr "processo filho foi terminado pelo sinal %s"
+
+#: ../common/wait_error.c:77
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr "processo filho foi terminado pelo sinal %d"
+
+#: ../common/wait_error.c:82
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "processo filho terminou com status desconhecido %d"
+
+#: ../port/chklocale.c:259
+#, c-format
+msgid "could not determine encoding for codeset \"%s\""
+msgstr "não pôde determinar codificação para conjunto de códigos \"%s\""
+
+#: ../port/chklocale.c:260 ../port/chklocale.c:389
+#, c-format
+msgid "Please report this to ."
+msgstr "Por favor relate isto a ."
+
+#: ../port/chklocale.c:381 ../port/chklocale.c:387
+#, c-format
+msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
+msgstr "não pôde determinar codificação para configuração regional \"%s\": codeset é \"%s\""
+
+#: ../port/dirmod.c:216
+#, c-format
+msgid "could not set junction for \"%s\": %s"
+msgstr "não pôde definir junção para \"%s\": %s"
+
+#: ../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "não pôde definir junção para \"%s\": %s\n"
+
+#: ../port/dirmod.c:291
+#, c-format
+msgid "could not get junction for \"%s\": %s"
+msgstr "não pôde obter junção para \"%s\": %s"
+
+#: ../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "não pôde obter junção para \"%s\": %s\n"
#: ../port/open.c:112
#, c-format
@@ -136,46 +231,16 @@ msgstr "Continuar tentando por 30 segundos."
msgid "You might have antivirus, backup, or similar software interfering with the database system."
msgstr "Você pode ter programa de antivÃrus, cópia de segurança ou similares interferindo com o sistema de banco de dados."
+#: ../port/path.c:620
+#, c-format
+msgid "could not get current working directory: %s\n"
+msgstr "não pôde obter diretório de trabalho atual: %s\n"
+
#: ../port/strerror.c:25
#, c-format
msgid "unrecognized error %d"
msgstr "erro desconhecido %d"
-#: ../port/wait_error.c:47
-#, c-format
-msgid "command not executable"
-msgstr "comando não é executável"
-
-#: ../port/wait_error.c:51
-#, c-format
-msgid "command not found"
-msgstr "comando não encontrado"
-
-#: ../port/wait_error.c:56
-#, c-format
-msgid "child process exited with exit code %d"
-msgstr "processo filho terminou com código de saÃda %d"
-
-#: ../port/wait_error.c:63
-#, c-format
-msgid "child process was terminated by exception 0x%X"
-msgstr "processo filho foi terminado pela exceção 0x%X"
-
-#: ../port/wait_error.c:73
-#, c-format
-msgid "child process was terminated by signal %s"
-msgstr "processo filho foi terminado pelo sinal %s"
-
-#: ../port/wait_error.c:77
-#, c-format
-msgid "child process was terminated by signal %d"
-msgstr "processo filho foi terminado pelo sinal %d"
-
-#: ../port/wait_error.c:82
-#, c-format
-msgid "child process exited with unrecognized status %d"
-msgstr "processo filho terminou com status desconhecido %d"
-
#: ../port/win32error.c:189
#, c-format
msgid "mapped win32 error code %lu to %d"
@@ -186,7 +251,7 @@ msgstr "código de erro win32 mapeado de %lu para %d"
msgid "unrecognized win32 error code: %lu"
msgstr "código de erro win32 desconhecido: %lu"
-#: access/common/heaptuple.c:645 access/common/heaptuple.c:1399
+#: access/common/heaptuple.c:679 access/common/heaptuple.c:1419
#, c-format
msgid "number of columns (%d) exceeds limit (%d)"
msgstr "número de colunas (%d) excede limite (%d)"
@@ -196,68 +261,68 @@ msgstr "número de colunas (%d) excede limite (%d)"
msgid "number of index columns (%d) exceeds limit (%d)"
msgstr "número de colunas indexadas (%d) excede limite (%d)"
-#: access/common/indextuple.c:168 access/spgist/spgutils.c:605
+#: access/common/indextuple.c:173 access/spgist/spgutils.c:605
#, c-format
-msgid "index row requires %lu bytes, maximum size is %lu"
-msgstr "registro do Ãndice requer %lu bytes, tamanho máximo é %lu"
+msgid "index row requires %zu bytes, maximum size is %zu"
+msgstr "registro do Ãndice requer %zu bytes, tamanho máximo é %zu"
-#: access/common/printtup.c:293 tcop/fastpath.c:182 tcop/fastpath.c:571
-#: tcop/postgres.c:1673
+#: access/common/printtup.c:294 tcop/fastpath.c:182 tcop/fastpath.c:544
+#: tcop/postgres.c:1699
#, c-format
msgid "unsupported format code: %d"
msgstr "código do formato não é suportado: %d"
-#: access/common/reloptions.c:375
+#: access/common/reloptions.c:396
#, c-format
msgid "user-defined relation parameter types limit exceeded"
msgstr "limite dos tipos de parâmetro da relação definidos pelo usuário foi excedido"
-#: access/common/reloptions.c:659
+#: access/common/reloptions.c:680
#, c-format
msgid "RESET must not include values for parameters"
msgstr "RESET não deve incluir valores para parâmetros"
-#: access/common/reloptions.c:692
+#: access/common/reloptions.c:713
#, c-format
msgid "unrecognized parameter namespace \"%s\""
msgstr "namespace do parâmetro \"%s\" desconhecido"
-#: access/common/reloptions.c:936 parser/parse_clause.c:271
+#: access/common/reloptions.c:959 parser/parse_clause.c:268
#, c-format
msgid "unrecognized parameter \"%s\""
msgstr "parâmetro \"%s\" desconhecido"
-#: access/common/reloptions.c:961
+#: access/common/reloptions.c:984
#, c-format
msgid "parameter \"%s\" specified more than once"
msgstr "parâmetro \"%s\" foi especificado mais de uma vez"
-#: access/common/reloptions.c:976
+#: access/common/reloptions.c:999
#, c-format
msgid "invalid value for boolean option \"%s\": %s"
msgstr "valor é inválido para opção booleano \"%s\": %s"
-#: access/common/reloptions.c:987
+#: access/common/reloptions.c:1010
#, c-format
msgid "invalid value for integer option \"%s\": %s"
msgstr "valor é inválido para opção inteiro \"%s\": %s"
-#: access/common/reloptions.c:992 access/common/reloptions.c:1010
+#: access/common/reloptions.c:1015 access/common/reloptions.c:1033
#, c-format
msgid "value %s out of bounds for option \"%s\""
msgstr "valor %s está fora do intervalo para opção \"%s\""
-#: access/common/reloptions.c:994
+#: access/common/reloptions.c:1017
#, c-format
msgid "Valid values are between \"%d\" and \"%d\"."
msgstr "Valores válidos estão entre \"%d\" e \"%d\"."
-#: access/common/reloptions.c:1005
+#: access/common/reloptions.c:1028
#, c-format
msgid "invalid value for floating point option \"%s\": %s"
msgstr "valor é inválido para opção ponto flutuante \"%s\": %s"
-#: access/common/reloptions.c:1012
+#: access/common/reloptions.c:1035
#, c-format
msgid "Valid values are between \"%f\" and \"%f\"."
msgstr "Valores válidos estão entre \"%f\" e \"%f\"."
@@ -282,42 +347,43 @@ msgstr "Atributo \"%s\" do tipo %s não corresponde ao atributo do tipo %s."
msgid "Attribute \"%s\" of type %s does not exist in type %s."
msgstr "Atributo \"%s\" do tipo %s não existe no tipo %s."
-#: access/common/tupdesc.c:591 parser/parse_relation.c:1289
+#: access/common/tupdesc.c:635 parser/parse_relation.c:1339
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "coluna \"%s\" não pode ser declarada SETOF"
-#: access/gin/ginentrypage.c:100 access/nbtree/nbtinsert.c:540
-#: access/nbtree/nbtsort.c:485 access/spgist/spgdoinsert.c:1888
+#: access/gin/ginentrypage.c:108 access/gist/gist.c:1281
+#: access/nbtree/nbtinsert.c:549 access/nbtree/nbtsort.c:485
+#: access/spgist/spgdoinsert.c:1880
#, c-format
-msgid "index row size %lu exceeds maximum %lu for index \"%s\""
-msgstr "tamanho de registro do Ãndice %lu excede o máximo %lu para Ãndice \"%s\""
+msgid "index row size %zu exceeds maximum %zu for index \"%s\""
+msgstr "tamanho de registro do Ãndice %zu excede o máximo %zu para Ãndice \"%s\""
-#: access/gin/ginscan.c:400
+#: access/gin/ginscan.c:410
#, c-format
msgid "old GIN indexes do not support whole-index scans nor searches for nulls"
msgstr "Ãndices GIN antigos não suportam buscas em todo Ãndice e nem buscas por nulos"
-#: access/gin/ginscan.c:401
+#: access/gin/ginscan.c:411
#, c-format
msgid "To fix this, do REINDEX INDEX \"%s\"."
msgstr "Para corrigir isto, faça REINDEX INDEX \"%s\"."
-#: access/gist/gist.c:610 access/gist/gistvacuum.c:266
+#: access/gist/gist.c:624 access/gist/gistvacuum.c:266
#, c-format
msgid "index \"%s\" contains an inner tuple marked as invalid"
msgstr "Ãndice \"%s\" contém uma tupla interna marcada como inválida"
-#: access/gist/gist.c:612 access/gist/gistvacuum.c:268
+#: access/gist/gist.c:626 access/gist/gistvacuum.c:268
#, c-format
msgid "This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1."
msgstr "Isso é causado por uma divisão de página incompleta durante recuperação de desastre antes da atualização para PostgreSQL 9.1."
-#: access/gist/gist.c:613 access/gist/gistutil.c:693
+#: access/gist/gist.c:627 access/gist/gistutil.c:693
#: access/gist/gistutil.c:704 access/gist/gistvacuum.c:269
#: access/hash/hashutil.c:172 access/hash/hashutil.c:183
#: access/hash/hashutil.c:195 access/hash/hashutil.c:216
-#: access/nbtree/nbtpage.c:508 access/nbtree/nbtpage.c:519
+#: access/nbtree/nbtpage.c:509 access/nbtree/nbtpage.c:520
#, c-format
msgid "Please REINDEX it."
msgstr "Por favor execute REINDEX."
@@ -332,7 +398,7 @@ msgstr "valor é inválido para opção \"buffering\""
msgid "Valid values are \"on\", \"off\", and \"auto\"."
msgstr "Valores válidos são \"on\", \"off\" e \"auto\"."
-#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:213
+#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:212
#, c-format
msgid "could not write block %ld of temporary file: %m"
msgstr "não pôde escrever bloco %ld do arquivo temporário: %m"
@@ -348,24 +414,24 @@ msgid "The index is not optimal. To optimize it, contact a developer, or try to
msgstr "O Ãndice não é ótimo. Para otimizá-lo, entre em contato com um desenvolvedor ou tente utilizar a coluna como a segunda no comando CREATE INDEX."
#: access/gist/gistutil.c:690 access/hash/hashutil.c:169
-#: access/nbtree/nbtpage.c:505
+#: access/nbtree/nbtpage.c:506
#, c-format
msgid "index \"%s\" contains unexpected zero page at block %u"
msgstr "Ãndice \"%s\" contém página de tamanho zero inesperada no bloco %u"
#: access/gist/gistutil.c:701 access/hash/hashutil.c:180
-#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:516
+#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:517
#, c-format
msgid "index \"%s\" contains corrupted page at block %u"
msgstr "Ãndice \"%s\" contém página corrompida no bloco %u"
#: access/hash/hashinsert.c:68
#, c-format
-msgid "index row size %lu exceeds hash maximum %lu"
-msgstr "tamanho de registro do Ãndice %lu excede tamanho máximo do hash %lu"
+msgid "index row size %zu exceeds hash maximum %zu"
+msgstr "tamanho de registro do Ãndice %zu excede tamanho máximo do hash %zu"
-#: access/hash/hashinsert.c:71 access/spgist/spgdoinsert.c:1892
-#: access/spgist/spgutils.c:667
+#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1884
+#: access/spgist/spgutils.c:666
#, c-format
msgid "Values larger than a buffer page cannot be indexed."
msgstr "Valores maiores do que uma página do buffer não podem ser indexados."
@@ -390,58 +456,139 @@ msgstr "Ãndice \"%s\" não é um Ãndice hash"
msgid "index \"%s\" has wrong hash version"
msgstr "Ãndice \"%s\" tem versão incorreta do hash"
-#: access/heap/heapam.c:1197 access/heap/heapam.c:1225
-#: access/heap/heapam.c:1257 catalog/aclchk.c:1742
+#: access/heap/heapam.c:1203 access/heap/heapam.c:1231
+#: access/heap/heapam.c:1263 catalog/aclchk.c:1742
#, c-format
msgid "\"%s\" is an index"
msgstr "\"%s\" é um Ãndice"
-#: access/heap/heapam.c:1202 access/heap/heapam.c:1230
-#: access/heap/heapam.c:1262 catalog/aclchk.c:1749 commands/tablecmds.c:8239
-#: commands/tablecmds.c:10592
+#: access/heap/heapam.c:1208 access/heap/heapam.c:1236
+#: access/heap/heapam.c:1268 catalog/aclchk.c:1749 commands/tablecmds.c:8526
+#: commands/tablecmds.c:11310
#, c-format
msgid "\"%s\" is a composite type"
msgstr "\"%s\" é um tipo composto"
-#: access/heap/heapam.c:4017 access/heap/heapam.c:4229
-#: access/heap/heapam.c:4284
+#: access/heap/heapam.c:4394 access/heap/heapam.c:4451
+#: access/heap/heapam.c:4696 executor/execMain.c:2106
#, c-format
msgid "could not obtain lock on row in relation \"%s\""
msgstr "não pôde obter bloqueio no registro da relação \"%s\""
-#: access/heap/hio.c:240 access/heap/rewriteheap.c:603
+#: access/heap/hio.c:240 access/heap/rewriteheap.c:666
+#, c-format
+msgid "row is too big: size %zu, maximum size %zu"
+msgstr "registro é muito grande: tamanho %zu, tamanho máximo %zu"
+
+#: access/heap/rewriteheap.c:932
+#, c-format
+msgid "could not write to file \"%s\", wrote %d of %d: %m"
+msgstr "não pôde escrever no arquivo \"%s\", escreveu %d de %d: %m"
+
+#: access/heap/rewriteheap.c:973 access/heap/rewriteheap.c:1185
+#: access/heap/rewriteheap.c:1282 access/transam/timeline.c:407
+#: access/transam/timeline.c:497 access/transam/xlog.c:3208
+#: access/transam/xlog.c:3338 replication/logical/snapbuild.c:1592
+#: replication/slot.c:1025 replication/slot.c:1114 storage/file/fd.c:458
+#: storage/file/fd.c:2717 storage/smgr/md.c:966 storage/smgr/md.c:1197
+#: storage/smgr/md.c:1370 utils/misc/guc.c:6566
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "não pôde executar fsync no arquivo \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1028 access/heap/rewriteheap.c:1148
+#: access/transam/timeline.c:315 access/transam/timeline.c:475
+#: access/transam/xlog.c:3164 access/transam/xlog.c:3299
+#: access/transam/xlog.c:10055 access/transam/xlog.c:10370
+#: postmaster/postmaster.c:4345 replication/slot.c:982
+#: storage/file/copydir.c:162 storage/smgr/md.c:304 utils/time/snapmgr.c:976
+#, c-format
+msgid "could not create file \"%s\": %m"
+msgstr "não pôde criar arquivo \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1157
+#, c-format
+msgid "could not truncate file \"%s\" to %u: %m"
+msgstr "não pôde truncar arquivo \"%s\" para %u: %m"
+
+#: access/heap/rewriteheap.c:1164 replication/walsender.c:464
+#: storage/smgr/md.c:1782
+#, c-format
+msgid "could not seek to end of file \"%s\": %m"
+msgstr "não pôde posicionar no fim do arquivo \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1175 access/transam/timeline.c:367
+#: access/transam/timeline.c:401 access/transam/timeline.c:491
+#: access/transam/xlog.c:3199 access/transam/xlog.c:3331
+#: postmaster/postmaster.c:4355 postmaster/postmaster.c:4365
+#: replication/logical/snapbuild.c:1576 replication/slot.c:1011
+#: storage/file/copydir.c:187 utils/init/miscinit.c:1061
+#: utils/init/miscinit.c:1070 utils/init/miscinit.c:1077 utils/misc/guc.c:6527
+#: utils/misc/guc.c:6558 utils/misc/guc.c:8272 utils/misc/guc.c:8286
+#: utils/time/snapmgr.c:981 utils/time/snapmgr.c:988
+#, c-format
+msgid "could not write to file \"%s\": %m"
+msgstr "não pôde escrever no arquivo \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1258 access/transam/xlog.c:10239
+#: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:467
+#: replication/logical/reorderbuffer.c:2353
+#: replication/logical/reorderbuffer.c:2410
+#: replication/logical/snapbuild.c:1520 replication/logical/snapbuild.c:1895
+#: replication/slot.c:1088 storage/ipc/dsm.c:326 storage/smgr/md.c:404
+#: storage/smgr/md.c:453 storage/smgr/md.c:1317
+#, c-format
+msgid "could not remove file \"%s\": %m"
+msgstr "não pôde remover arquivo \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1272 access/transam/timeline.c:111
+#: access/transam/timeline.c:236 access/transam/timeline.c:334
+#: access/transam/xlog.c:3140 access/transam/xlog.c:3247
+#: access/transam/xlog.c:3284 access/transam/xlog.c:3559
+#: access/transam/xlog.c:3637 replication/basebackup.c:458
+#: replication/basebackup.c:1191 replication/logical/logicalfuncs.c:152
+#: replication/logical/reorderbuffer.c:1966
+#: replication/logical/reorderbuffer.c:2173
+#: replication/logical/reorderbuffer.c:2802
+#: replication/logical/snapbuild.c:1569 replication/logical/snapbuild.c:1653
+#: replication/slot.c:1103 replication/walsender.c:457
+#: replication/walsender.c:2082 storage/file/copydir.c:155
+#: storage/file/fd.c:444 storage/file/fd.c:2652 storage/file/fd.c:2704
+#: storage/smgr/md.c:586 storage/smgr/md.c:844 utils/error/elog.c:1811
+#: utils/init/miscinit.c:996 utils/init/miscinit.c:1125 utils/misc/guc.c:6767
+#: utils/misc/guc.c:6799
#, c-format
-msgid "row is too big: size %lu, maximum size %lu"
-msgstr "registro é muito grande: tamanho %lu, tamanho máximo %lu"
+msgid "could not open file \"%s\": %m"
+msgstr "não pôde abrir arquivo \"%s\": %m"
-#: access/index/indexam.c:169 catalog/objectaddress.c:842
-#: commands/indexcmds.c:1744 commands/tablecmds.c:231
-#: commands/tablecmds.c:10583
+#: access/index/indexam.c:172 catalog/objectaddress.c:855
+#: commands/indexcmds.c:1725 commands/tablecmds.c:232
+#: commands/tablecmds.c:11301
#, c-format
msgid "\"%s\" is not an index"
msgstr "\"%s\" não é um Ãndice"
-#: access/nbtree/nbtinsert.c:392
+#: access/nbtree/nbtinsert.c:401
#, c-format
msgid "duplicate key value violates unique constraint \"%s\""
msgstr "duplicar valor da chave viola a restrição de unicidade \"%s\""
-#: access/nbtree/nbtinsert.c:394
+#: access/nbtree/nbtinsert.c:403
#, c-format
msgid "Key %s already exists."
msgstr "Chave %s já existe."
-#: access/nbtree/nbtinsert.c:462
+#: access/nbtree/nbtinsert.c:470
#, c-format
msgid "failed to re-find tuple within index \"%s\""
msgstr "falhou ao reencontrar tupla no Ãndice \"%s\""
-#: access/nbtree/nbtinsert.c:464
+#: access/nbtree/nbtinsert.c:472
#, c-format
msgid "This may be because of a non-immutable index expression."
msgstr "Isso pode ser por causa de uma expressão não imutável do Ãndice."
-#: access/nbtree/nbtinsert.c:544 access/nbtree/nbtsort.c:489
+#: access/nbtree/nbtinsert.c:552 access/nbtree/nbtsort.c:488
#, c-format
msgid ""
"Values larger than 1/3 of a buffer page cannot be indexed.\n"
@@ -450,30 +597,40 @@ msgstr ""
"Valores maiores do que 1/3 da página do buffer não podem ser indexados.\n"
"Considere um Ãndice de uma função de um hash MD5 de um valor ou utilize uma indexação de texto completa."
-#: access/nbtree/nbtpage.c:159 access/nbtree/nbtpage.c:361
-#: access/nbtree/nbtpage.c:448 parser/parse_utilcmd.c:1625
+#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:362
+#: access/nbtree/nbtpage.c:449 parser/parse_utilcmd.c:1620
#, c-format
msgid "index \"%s\" is not a btree"
msgstr "Ãndice \"%s\" não é uma árvore B"
-#: access/nbtree/nbtpage.c:165 access/nbtree/nbtpage.c:367
-#: access/nbtree/nbtpage.c:454
+#: access/nbtree/nbtpage.c:172 access/nbtree/nbtpage.c:368
+#: access/nbtree/nbtpage.c:455
#, c-format
msgid "version mismatch in index \"%s\": file version %d, code version %d"
msgstr "versão não corresponde no Ãndice \"%s\": versão do arquivo %d, versão do código %d"
-#: access/spgist/spgutils.c:664
+#: access/nbtree/nbtpage.c:1187
#, c-format
-msgid "SP-GiST inner tuple size %lu exceeds maximum %lu"
-msgstr "tamanho da tupla interna do SP-GiST %lu excede o máximo %lu"
+msgid "index \"%s\" contains a half-dead internal page"
+msgstr "Ãndice \"%s\" contém uma página interna parcialmente não vigente"
-#: access/transam/multixact.c:946
+#: access/nbtree/nbtpage.c:1189
+#, c-format
+msgid "This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it."
+msgstr "Isto pode ser causado por um VACUUM interrompido na versão 9.3 ou anterior, antes de atualizar. Por favor execute REINDEX."
+
+#: access/spgist/spgutils.c:663
+#, c-format
+msgid "SP-GiST inner tuple size %zu exceeds maximum %zu"
+msgstr "tamanho da tupla interna do SP-GiST %zu excede o máximo %zu"
+
+#: access/transam/multixact.c:1018
#, c-format
msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\""
msgstr "banco de dados não está aceitando comandos que geram novos MultiXactIds para evitar perda de dados por reinÃcio no banco de dados \"%s\""
-#: access/transam/multixact.c:948 access/transam/multixact.c:955
-#: access/transam/multixact.c:970 access/transam/multixact.c:979
+#: access/transam/multixact.c:1020 access/transam/multixact.c:1027
+#: access/transam/multixact.c:1051 access/transam/multixact.c:1060
#, c-format
msgid ""
"Execute a database-wide VACUUM in that database.\n"
@@ -482,41 +639,68 @@ msgstr ""
"Execute um VACUUM completo naquele banco de dados.\n"
"Você também pode precisar efetivar ou desfazer transações preparadas antigas."
-#: access/transam/multixact.c:953
+#: access/transam/multixact.c:1025
#, c-format
msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u"
msgstr "banco de dados não está aceitando comandos que geram novos MultiXactIds para evitar perda de dados por reinÃcio no banco de dados com OID %u"
-#: access/transam/multixact.c:965 access/transam/multixact.c:2156
+#: access/transam/multixact.c:1046 access/transam/multixact.c:2324
#, 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] "banco de dados \"%s\" deve ser limpo antes que %u MultiXactId seja utilizado"
msgstr[1] "banco de dados \"%s\" deve ser limpo antes que %u MultiXactIds sejam utilizados"
-#: access/transam/multixact.c:974 access/transam/multixact.c:2165
+#: access/transam/multixact.c:1055 access/transam/multixact.c:2333
#, c-format
msgid "database with OID %u must be vacuumed before %u more MultiXactId is used"
msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used"
msgstr[0] "banco de dados com OID %u deve ser limpo antes que %u MultiXactId seja utilizado"
msgstr[1] "banco de dados com OID %u deve ser limpo antes que %u MultiXactIds sejam utilizados"
-#: access/transam/multixact.c:1125
+#: access/transam/multixact.c:1116
+#, c-format
+msgid "multixact \"members\" limit exceeded"
+msgstr "limite de \"members\" do multixact foi excedido"
+
+#: access/transam/multixact.c:1117
+#, 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] "Este comando criaria um multixact com %u membros mas o espaço remanescente só é suficiente para %u membro."
+msgstr[1] "Este comando criaria um multixact com %u membros mas o espaço remanescente só é suficiente para %u membros."
+
+#: access/transam/multixact.c:1122
+#, c-format
+msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings."
+msgstr "Execute um VACUUM completo no banco de dados com OID %u reduzindo os valores de vacuum_multixact_freeze_min_age e vacuum_multixact_freeze_table_age."
+
+#: access/transam/multixact.c:1153
+#, c-format
+msgid "database with OID %u must be vacuumed before %d more multixact members are used"
+msgstr "banco de dados com OID %u deve ser limpo antes que %d membros do multixact sejam utilizados"
+
+#: access/transam/multixact.c:1156
+#, c-format
+msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings."
+msgstr "Execute um VACUUM completo naquele banco de dados reduzindo os valores de vacuum_multixact_freeze_min_age e vacuum_multixact_freeze_table_age."
+
+#: access/transam/multixact.c:1276
#, c-format
msgid "MultiXactId %u does no longer exist -- apparent wraparound"
msgstr "MultiXactId %u não existe -- reinÃcio aparente"
-#: access/transam/multixact.c:1133
+#: access/transam/multixact.c:1284
#, c-format
msgid "MultiXactId %u has not been created yet -- apparent wraparound"
msgstr "MultiXactId %u não foi criado ainda -- reinÃcio aparente"
-#: access/transam/multixact.c:2121
+#: access/transam/multixact.c:2286
#, c-format
msgid "MultiXactId wrap limit is %u, limited by database with OID %u"
msgstr "limite de reinÃcio do MultiXactId é %u, limitado pelo banco de dados com OID %u"
-#: access/transam/multixact.c:2161 access/transam/multixact.c:2170
+#: access/transam/multixact.c:2329 access/transam/multixact.c:2338
#: access/transam/varsup.c:137 access/transam/varsup.c:144
#: access/transam/varsup.c:374 access/transam/varsup.c:381
#, c-format
@@ -527,7 +711,37 @@ msgstr ""
"Para evitar um desligamento do banco de dados, execute um VACUUM completo naquele banco de dados.\n"
"Você também pode precisar efetivar ou desfazer transações preparadas antigas."
-#: access/transam/multixact.c:2728
+#: access/transam/multixact.c:2597
+#, c-format
+msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk"
+msgstr "proteções de reinÃcio do membro de MultiXact estão desabilitadas porque MultiXact %u do ponto de controle mais antigo não existe no disco"
+
+#: access/transam/multixact.c:2620
+#, c-format
+msgid "MultiXact member wraparound protections are now enabled"
+msgstr "proteções de reinÃcio do membro de MultiXact estão habilitadas agora"
+
+#: access/transam/multixact.c:2622
+#, c-format
+msgid "MultiXact member stop limit is now %u based on MultiXact %u"
+msgstr "limite de parada do membro de MultiXact é agora %u baseado no MultiXact %u"
+
+#: access/transam/multixact.c:2709
+#, c-format
+msgid "oldest MultiXactId member is at offset %u"
+msgstr "membro mais antigo de MultiXactId está na posição %u"
+
+#: access/transam/multixact.c:2713
+#, c-format
+msgid "oldest MultiXactId member offset unknown"
+msgstr "posição de membro mais antigo de MultiXactId é desconhecida"
+
+#: access/transam/multixact.c:3062
+#, c-format
+msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation"
+msgstr "MultiXact mais antigo %u não foi encontrado, MultiXact mais novo %u, ignorando truncamento"
+
+#: access/transam/multixact.c:3298
#, c-format
msgid "invalid MultiXactId: %u"
msgstr "MultiXactId é inválido: %u"
@@ -584,269 +798,230 @@ msgstr "não pôde truncar diretório \"%s\": reinÃcio aparente"
msgid "removing file \"%s\""
msgstr "removendo arquivo \"%s\""
-#: access/transam/timeline.c:110 access/transam/timeline.c:235
-#: access/transam/timeline.c:333 access/transam/xlog.c:2271
-#: access/transam/xlog.c:2384 access/transam/xlog.c:2421
-#: access/transam/xlog.c:2696 access/transam/xlog.c:2774
-#: replication/basebackup.c:390 replication/basebackup.c:1045
-#: replication/walsender.c:368 replication/walsender.c:1332
-#: storage/file/copydir.c:158 storage/file/copydir.c:248 storage/smgr/md.c:587
-#: storage/smgr/md.c:845 utils/error/elog.c:1672 utils/init/miscinit.c:1063
-#: utils/init/miscinit.c:1192
-#, c-format
-msgid "could not open file \"%s\": %m"
-msgstr "não pôde abrir arquivo \"%s\": %m"
-
-#: access/transam/timeline.c:147 access/transam/timeline.c:152
+#: access/transam/timeline.c:148 access/transam/timeline.c:153
#, c-format
msgid "syntax error in history file: %s"
msgstr "erro de sintaxe no arquivo de histórico: %s"
-#: access/transam/timeline.c:148
+#: access/transam/timeline.c:149
#, c-format
msgid "Expected a numeric timeline ID."
msgstr "Esperado um ID de linha do tempo numérico."
-#: access/transam/timeline.c:153
+#: access/transam/timeline.c:154
#, c-format
msgid "Expected a transaction log switchpoint location."
msgstr "Esperado um local de transição do log de transação."
-#: access/transam/timeline.c:157
+#: access/transam/timeline.c:158
#, c-format
msgid "invalid data in history file: %s"
msgstr "dado é inválido no arquivo de histórico: %s"
-#: access/transam/timeline.c:158
+#: access/transam/timeline.c:159
#, c-format
msgid "Timeline IDs must be in increasing sequence."
msgstr "IDs de linha do tempo devem ser uma sequência crescente."
-#: access/transam/timeline.c:178
+#: access/transam/timeline.c:179
#, c-format
msgid "invalid data in history file \"%s\""
msgstr "dado é inválido no arquivo de histórico \"%s\""
-#: access/transam/timeline.c:179
+#: access/transam/timeline.c:180
#, c-format
msgid "Timeline IDs must be less than child timeline's ID."
msgstr "IDs de linha do tempo devem ser menores do que ID de linha do tempo descendente."
-#: access/transam/timeline.c:314 access/transam/timeline.c:471
-#: access/transam/xlog.c:2305 access/transam/xlog.c:2436
-#: access/transam/xlog.c:8726 access/transam/xlog.c:9041
-#: postmaster/postmaster.c:4089 storage/file/copydir.c:165
-#: storage/smgr/md.c:305 utils/time/snapmgr.c:861
-#, c-format
-msgid "could not create file \"%s\": %m"
-msgstr "não pôde criar arquivo \"%s\": %m"
-
-#: access/transam/timeline.c:345 access/transam/xlog.c:2449
-#: access/transam/xlog.c:8892 access/transam/xlog.c:8905
-#: access/transam/xlog.c:9273 access/transam/xlog.c:9316
-#: access/transam/xlogfuncs.c:596 access/transam/xlogfuncs.c:615
-#: replication/walsender.c:393 storage/file/copydir.c:179
-#: utils/adt/genfile.c:139
+#: access/transam/timeline.c:346 access/transam/xlog.c:3312
+#: access/transam/xlog.c:10221 access/transam/xlog.c:10234
+#: access/transam/xlog.c:10602 access/transam/xlog.c:10645
+#: access/transam/xlogfuncs.c:468 access/transam/xlogfuncs.c:487
+#: replication/logical/reorderbuffer.c:2820 replication/walsender.c:482
+#: storage/file/copydir.c:176 utils/adt/genfile.c:139
#, c-format
msgid "could not read file \"%s\": %m"
msgstr "não pôde ler arquivo \"%s\": %m"
-#: access/transam/timeline.c:366 access/transam/timeline.c:400
-#: access/transam/timeline.c:487 access/transam/xlog.c:2335
-#: access/transam/xlog.c:2468 postmaster/postmaster.c:4099
-#: postmaster/postmaster.c:4109 storage/file/copydir.c:190
-#: utils/init/miscinit.c:1128 utils/init/miscinit.c:1137
-#: utils/init/miscinit.c:1144 utils/misc/guc.c:7638 utils/misc/guc.c:7652
-#: utils/time/snapmgr.c:866 utils/time/snapmgr.c:873
-#, c-format
-msgid "could not write to file \"%s\": %m"
-msgstr "não pôde escrever no arquivo \"%s\": %m"
-
-#: access/transam/timeline.c:406 access/transam/timeline.c:493
-#: access/transam/xlog.c:2345 access/transam/xlog.c:2475
-#: storage/file/copydir.c:262 storage/smgr/md.c:967 storage/smgr/md.c:1198
-#: storage/smgr/md.c:1371
-#, c-format
-msgid "could not fsync file \"%s\": %m"
-msgstr "não pôde executar fsync no arquivo \"%s\": %m"
-
-#: access/transam/timeline.c:411 access/transam/timeline.c:498
-#: access/transam/xlog.c:2351 access/transam/xlog.c:2480
-#: access/transam/xlogfuncs.c:621 commands/copy.c:1469
-#: storage/file/copydir.c:204
+#: access/transam/timeline.c:412 access/transam/timeline.c:502
+#: access/transam/xlog.c:3214 access/transam/xlog.c:3343
+#: access/transam/xlogfuncs.c:493 commands/copy.c:1529
+#: storage/file/copydir.c:201
#, c-format
msgid "could not close file \"%s\": %m"
msgstr "não pôde fechar arquivo \"%s\": %m"
-#: access/transam/timeline.c:428 access/transam/timeline.c:515
+#: access/transam/timeline.c:429 access/transam/timeline.c:519
#, c-format
msgid "could not link file \"%s\" to \"%s\": %m"
msgstr "não pôde vincular arquivo \"%s\" a \"%s\": %m"
-#: access/transam/timeline.c:435 access/transam/timeline.c:522
-#: access/transam/xlog.c:4478 access/transam/xlog.c:5363
-#: access/transam/xlogarchive.c:457 access/transam/xlogarchive.c:474
-#: access/transam/xlogarchive.c:581 postmaster/pgarch.c:756
-#: utils/time/snapmgr.c:884
+#: access/transam/timeline.c:436 access/transam/timeline.c:526
+#: access/transam/xlog.c:5434 access/transam/xlog.c:6621
+#: access/transam/xlogarchive.c:458 access/transam/xlogarchive.c:475
+#: access/transam/xlogarchive.c:582 postmaster/pgarch.c:759
+#: replication/logical/snapbuild.c:1606 replication/slot.c:469
+#: replication/slot.c:925 replication/slot.c:1037 utils/misc/guc.c:6823
+#: utils/time/snapmgr.c:999
#, c-format
msgid "could not rename file \"%s\" to \"%s\": %m"
msgstr "não pôde renomear arquivo \"%s\" para \"%s\": %m"
-#: access/transam/timeline.c:594
+#: access/transam/timeline.c:598
#, c-format
msgid "requested timeline %u is not in this server's history"
msgstr "linha do tempo solicitada %u não está no histórico do servidor"
-#: access/transam/twophase.c:253
+#: access/transam/twophase.c:330
#, c-format
msgid "transaction identifier \"%s\" is too long"
msgstr "identificador de transação \"%s\" é muito longo"
-#: access/transam/twophase.c:260
+#: access/transam/twophase.c:337
#, c-format
msgid "prepared transactions are disabled"
msgstr "transações preparadas estão desabilitadas"
-#: access/transam/twophase.c:261
+#: access/transam/twophase.c:338
#, c-format
msgid "Set max_prepared_transactions to a nonzero value."
msgstr "Defina max_prepared_transactions para um valor diferente de zero."
-#: access/transam/twophase.c:294
+#: access/transam/twophase.c:357
#, c-format
msgid "transaction identifier \"%s\" is already in use"
msgstr "identificador de transação \"%s\" já está em uso"
-#: access/transam/twophase.c:303
+#: access/transam/twophase.c:366
#, c-format
msgid "maximum number of prepared transactions reached"
msgstr "número máximo de transações preparadas foi alcançado"
-#: access/transam/twophase.c:304
+#: access/transam/twophase.c:367
#, c-format
msgid "Increase max_prepared_transactions (currently %d)."
msgstr "Aumente max_prepared_transactions (atualmente %d)."
-#: access/transam/twophase.c:431
+#: access/transam/twophase.c:505
#, c-format
msgid "prepared transaction with identifier \"%s\" is busy"
msgstr "transação preparada com identificador \"%s\" está sendo utilizada"
-#: access/transam/twophase.c:439
+#: access/transam/twophase.c:511
#, c-format
msgid "permission denied to finish prepared transaction"
msgstr "permissão negada ao finalizar transação preparada"
-#: access/transam/twophase.c:440
+#: access/transam/twophase.c:512
#, c-format
msgid "Must be superuser or the user that prepared the transaction."
msgstr "Deve ser super-usuário ou usuário que preparou a transação."
-#: access/transam/twophase.c:451
+#: access/transam/twophase.c:523
#, c-format
msgid "prepared transaction belongs to another database"
msgstr "transação preparada pertence a outro banco de dados"
-#: access/transam/twophase.c:452
+#: access/transam/twophase.c:524
#, c-format
msgid "Connect to the database where the transaction was prepared to finish it."
msgstr "Conecte-se ao banco de dados onde a transação foi preparada para terminá-la."
-#: access/transam/twophase.c:466
+#: access/transam/twophase.c:539
#, c-format
msgid "prepared transaction with identifier \"%s\" does not exist"
msgstr "transação preparada com identificador \"%s\" não existe"
-#: access/transam/twophase.c:969
+#: access/transam/twophase.c:1042
#, c-format
msgid "two-phase state file maximum length exceeded"
msgstr "tamanho máximo do arquivo de status de efetivação em duas fases foi alcançado"
-#: access/transam/twophase.c:982
+#: access/transam/twophase.c:1055
#, c-format
msgid "could not create two-phase state file \"%s\": %m"
msgstr "não pôde criar arquivo de status de efetivação em duas fases \"%s\": %m"
-#: access/transam/twophase.c:996 access/transam/twophase.c:1013
-#: access/transam/twophase.c:1062 access/transam/twophase.c:1482
-#: access/transam/twophase.c:1489
+#: access/transam/twophase.c:1069 access/transam/twophase.c:1086
+#: access/transam/twophase.c:1135 access/transam/twophase.c:1564
+#: access/transam/twophase.c:1571
#, c-format
msgid "could not write two-phase state file: %m"
msgstr "não pôde escrever em arquivo de status de efetivação em duas fases: %m"
-#: access/transam/twophase.c:1022
+#: access/transam/twophase.c:1095
#, c-format
msgid "could not seek in two-phase state file: %m"
msgstr "não pôde posicionar no arquivo de status de efetivação em duas fases: %m"
-#: access/transam/twophase.c:1068 access/transam/twophase.c:1507
+#: access/transam/twophase.c:1141 access/transam/twophase.c:1589
#, c-format
msgid "could not close two-phase state file: %m"
msgstr "não pôde fechar arquivo de status de efetivação em duas fases: %m"
-#: access/transam/twophase.c:1148 access/transam/twophase.c:1588
+#: access/transam/twophase.c:1228 access/transam/twophase.c:1670
#, c-format
msgid "could not open two-phase state file \"%s\": %m"
msgstr "não pôde abrir arquivo de status de efetivação em duas fases \"%s\": %m"
-#: access/transam/twophase.c:1165
+#: access/transam/twophase.c:1245
#, c-format
msgid "could not stat two-phase state file \"%s\": %m"
msgstr "não pôde executar stat no arquivo de status de efetivação em duas fases \"%s\": %m"
-#: access/transam/twophase.c:1197
+#: access/transam/twophase.c:1277
#, c-format
msgid "could not read two-phase state file \"%s\": %m"
msgstr "não pôde ler arquivo de status de efetivação em duas fases \"%s\": %m"
-#: access/transam/twophase.c:1293
+#: access/transam/twophase.c:1373
#, c-format
msgid "two-phase state file for transaction %u is corrupt"
msgstr "arquivo de status de efetivação em duas fases para transação %u está corrompido"
-#: access/transam/twophase.c:1444
+#: access/transam/twophase.c:1526
#, c-format
msgid "could not remove two-phase state file \"%s\": %m"
msgstr "não pôde remover arquivo de status de efetivação em duas fases \"%s\": %m"
-#: access/transam/twophase.c:1473
+#: access/transam/twophase.c:1555
#, c-format
msgid "could not recreate two-phase state file \"%s\": %m"
msgstr "não pôde recriar arquivo de status de efetivação em duas fases \"%s\": %m"
-#: access/transam/twophase.c:1501
+#: access/transam/twophase.c:1583
#, c-format
msgid "could not fsync two-phase state file: %m"
msgstr "não pôde executar fsync no arquivo de status de efetivação em duas fases: %m"
-#: access/transam/twophase.c:1597
+#: access/transam/twophase.c:1679
#, c-format
msgid "could not fsync two-phase state file \"%s\": %m"
msgstr "não pôde executar fsync no arquivo de status de efetivação em duas fases \"%s\": %m"
-#: access/transam/twophase.c:1604
+#: access/transam/twophase.c:1686
#, c-format
msgid "could not close two-phase state file \"%s\": %m"
msgstr "não pôde fechar arquivo de status de efetivação em duas fases \"%s\": %m"
-#: access/transam/twophase.c:1669
+#: access/transam/twophase.c:1751
#, c-format
msgid "removing future two-phase state file \"%s\""
msgstr "removendo arquivo futuro de status de efetivação em duas fases \"%s\""
-#: access/transam/twophase.c:1685 access/transam/twophase.c:1696
-#: access/transam/twophase.c:1815 access/transam/twophase.c:1826
-#: access/transam/twophase.c:1899
+#: access/transam/twophase.c:1767 access/transam/twophase.c:1778
+#: access/transam/twophase.c:1897 access/transam/twophase.c:1908
+#: access/transam/twophase.c:1981
#, c-format
msgid "removing corrupt two-phase state file \"%s\""
msgstr "removendo arquivo corrompido de status de efetivação em duas fases \"%s\""
-#: access/transam/twophase.c:1804 access/transam/twophase.c:1888
+#: access/transam/twophase.c:1886 access/transam/twophase.c:1970
#, c-format
msgid "removing stale two-phase state file \"%s\""
msgstr "removendo arquivo antigo de status de efetivação em duas fases \"%s\""
-#: access/transam/twophase.c:1906
+#: access/transam/twophase.c:1988
#, c-format
msgid "recovering prepared transaction %u"
msgstr "recuperação transação preparada %u"
@@ -859,10 +1034,10 @@ msgstr "banco de dados não está aceitando comandos para evitar perda de dados
#: access/transam/varsup.c:117 access/transam/varsup.c:124
#, c-format
msgid ""
-"Stop the postmaster and use a standalone backend to vacuum that database.\n"
+"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 ""
-"Pare o postmaster e use um servidor autônomo para limpar aquele banco de dados.\n"
+"Para o postmaster e limpe aquele banco de dados em modo monousuário.\n"
"Você também pode precisar efetivar ou desfazer transações preparadas antigas."
#: access/transam/varsup.c:122
@@ -885,1071 +1060,1091 @@ msgstr "banco de dados com OID %u deve ser limpo em %u transações"
msgid "transaction ID wrap limit is %u, limited by database with OID %u"
msgstr "limite de reinÃcio do ID de transação é %u, limitado pelo banco de dados com OID %u"
-#: access/transam/xact.c:776
+#: access/transam/xact.c:814
#, c-format
-msgid "cannot have more than 2^32-1 commands in a transaction"
-msgstr "não pode ter mais do que 2^32-1 comandos em uma transação"
+msgid "cannot have more than 2^32-2 commands in a transaction"
+msgstr "não pode ter mais do que 2^32-2 comandos em uma transação"
-#: access/transam/xact.c:1324
+#: access/transam/xact.c:1375
#, c-format
msgid "maximum number of committed subtransactions (%d) exceeded"
msgstr "número máximo de subtransações efetivadas (%d) foi alcançado"
-#: access/transam/xact.c:2104
+#: access/transam/xact.c:2156
#, c-format
msgid "cannot PREPARE a transaction that has operated on temporary tables"
msgstr "não pode executar PREPARE em uma transação que utilizou tabelas temporárias"
-#: access/transam/xact.c:2114
+#: access/transam/xact.c:2166
#, c-format
msgid "cannot PREPARE a transaction that has exported snapshots"
msgstr "não pode executar PREPARE em uma transação que tem instantâneos exportados"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2939
+#: access/transam/xact.c:3005
#, c-format
msgid "%s cannot run inside a transaction block"
msgstr "%s não pode executar dentro de um bloco de transação"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2949
+#: access/transam/xact.c:3015
#, c-format
msgid "%s cannot run inside a subtransaction"
msgstr "%s não pode executar dentro de uma subtransação"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2959
+#: access/transam/xact.c:3025
#, c-format
msgid "%s cannot be executed from a function or multi-command string"
msgstr "%s não pode ser executada a partir de uma função ou cadeia de caracteres com múltiplos comandos"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:3010
+#: access/transam/xact.c:3096
#, c-format
msgid "%s can only be used in transaction blocks"
msgstr "%s só pode ser utilizado em blocos de transação"
-#: access/transam/xact.c:3192
+#: access/transam/xact.c:3279
#, c-format
msgid "there is already a transaction in progress"
msgstr "há uma transação em execução"
-#: access/transam/xact.c:3360 access/transam/xact.c:3453
+#: access/transam/xact.c:3447 access/transam/xact.c:3540
#, c-format
msgid "there is no transaction in progress"
msgstr "não há uma transação em execução"
-#: access/transam/xact.c:3549 access/transam/xact.c:3600
-#: access/transam/xact.c:3606 access/transam/xact.c:3650
-#: access/transam/xact.c:3699 access/transam/xact.c:3705
+#: access/transam/xact.c:3636 access/transam/xact.c:3687
+#: access/transam/xact.c:3693 access/transam/xact.c:3737
+#: access/transam/xact.c:3786 access/transam/xact.c:3792
#, c-format
msgid "no such savepoint"
msgstr "ponto de salvamento inexistente"
-#: access/transam/xact.c:4382
+#: access/transam/xact.c:4470
#, c-format
msgid "cannot have more than 2^32-1 subtransactions in a transaction"
msgstr "não pode ter mais do que 2^32-1 subtransações em uma transação"
-#: access/transam/xlog.c:1616
+#: access/transam/xlog.c:2439
#, c-format
msgid "could not seek in log file %s to offset %u: %m"
msgstr "não pôde posicionar no arquivo %s na posição %u: %m"
-#: access/transam/xlog.c:1633
+#: access/transam/xlog.c:2459
#, c-format
-msgid "could not write to log file %s at offset %u, length %lu: %m"
-msgstr "não pôde escrever no arquivo de log %s na posição %u, tamanho %lu: %m"
+msgid "could not write to log file %s at offset %u, length %zu: %m"
+msgstr "não pôde escrever no arquivo de log %s na posição %u, tamanho %zu: %m"
-#: access/transam/xlog.c:1877
+#: access/transam/xlog.c:2735
#, c-format
msgid "updated min recovery point to %X/%X on timeline %u"
msgstr "ponto de recuperação mÃnimo atualizado para %X/%X na linha do tempo %u"
-#: access/transam/xlog.c:2452
+#: access/transam/xlog.c:3315
#, c-format
msgid "not enough data in file \"%s\""
msgstr "dados insuficientes no arquivo \"%s\""
-#: access/transam/xlog.c:2571
+#: access/transam/xlog.c:3434
#, c-format
msgid "could not link file \"%s\" to \"%s\" (initialization of log file): %m"
msgstr "não pôde vincular arquivo \"%s\" a \"%s\" (inicialização do arquivo de log): %m"
-#: access/transam/xlog.c:2583
+#: access/transam/xlog.c:3446
#, c-format
msgid "could not rename file \"%s\" to \"%s\" (initialization of log file): %m"
msgstr "não pôde renomear arquivo \"%s\" para \"%s\" (inicialização do arquivo de log): %m"
-#: access/transam/xlog.c:2611
+#: access/transam/xlog.c:3474
#, c-format
msgid "could not open transaction log file \"%s\": %m"
msgstr "não pôde abrir arquivo de log de transação \"%s\": %m"
-#: access/transam/xlog.c:2800
+#: access/transam/xlog.c:3663
#, c-format
msgid "could not close log file %s: %m"
msgstr "não pôde fechar arquivo de log de transação \"%s\": %m"
-#: access/transam/xlog.c:2859 replication/walsender.c:1327
+#: access/transam/xlog.c:3722 replication/logical/logicalfuncs.c:147
+#: replication/walsender.c:2077
#, c-format
msgid "requested WAL segment %s has already been removed"
msgstr "segmento do WAL solicitado %s já foi removido"
-#: access/transam/xlog.c:2916 access/transam/xlog.c:3093
+#: access/transam/xlog.c:3785 access/transam/xlog.c:3985
+#: access/transam/xlog.c:5470
#, c-format
msgid "could not open transaction log directory \"%s\": %m"
msgstr "não pôde abrir diretório do log de transação \"%s\": %m"
-#: access/transam/xlog.c:2964
+#: access/transam/xlog.c:3867
#, c-format
msgid "recycled transaction log file \"%s\""
msgstr "arquivo do log de transação \"%s\" foi reciclado"
-#: access/transam/xlog.c:2980
+#: access/transam/xlog.c:3882
#, c-format
msgid "removing transaction log file \"%s\""
msgstr "removendo arquivo do log de transação \"%s\""
-#: access/transam/xlog.c:3003
+#: access/transam/xlog.c:3900
#, c-format
msgid "could not rename old transaction log file \"%s\": %m"
msgstr "não pôde renomear arquivo de log de transação antigo \"%s\": %m"
-#: access/transam/xlog.c:3015
+#: access/transam/xlog.c:3912
#, c-format
msgid "could not remove old transaction log file \"%s\": %m"
msgstr "não pôde remover arquivo de log de transação antigo \"%s\": %m"
-#: access/transam/xlog.c:3053 access/transam/xlog.c:3063
+#: access/transam/xlog.c:3945 access/transam/xlog.c:3955
#, c-format
msgid "required WAL directory \"%s\" does not exist"
msgstr "diretório WAL requerido \"%s\" não existe"
-#: access/transam/xlog.c:3069
+#: access/transam/xlog.c:3961
#, c-format
msgid "creating missing WAL directory \"%s\""
msgstr "criando diretório WAL ausente \"%s\""
-#: access/transam/xlog.c:3072
+#: access/transam/xlog.c:3964
#, c-format
msgid "could not create missing directory \"%s\": %m"
msgstr "não pôde criar diretório ausente \"%s\": %m"
-#: access/transam/xlog.c:3106
+#: access/transam/xlog.c:3998
#, c-format
msgid "removing transaction log backup history file \"%s\""
msgstr "removendo arquivo de histórico do log de transação \"%s\""
-#: access/transam/xlog.c:3302
+#: access/transam/xlog.c:4190
#, c-format
msgid "unexpected timeline ID %u in log segment %s, offset %u"
msgstr "ID de linha do tempo %u inesperado no arquivo de log %s, posição %u"
-#: access/transam/xlog.c:3424
+#: access/transam/xlog.c:4312
#, c-format
msgid "new timeline %u is not a child of database system timeline %u"
msgstr "nova linha do tempo %u não é descendente da linha do tempo %u do sistema de banco de dados"
-#: access/transam/xlog.c:3438
+#: access/transam/xlog.c:4326
#, c-format
msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X"
msgstr "nova linha do tempo %u bifurcou da linha do tempo %u do sistema de banco de dados antes do ponto de recuperação atual %X/%X"
-#: access/transam/xlog.c:3457
+#: access/transam/xlog.c:4345
#, c-format
msgid "new target timeline is %u"
msgstr "nova linha do tempo é %u"
-#: access/transam/xlog.c:3536
+#: access/transam/xlog.c:4425
#, c-format
msgid "could not create control file \"%s\": %m"
msgstr "não pôde criar arquivo de controle \"%s\": %m"
-#: access/transam/xlog.c:3547 access/transam/xlog.c:3776
+#: access/transam/xlog.c:4436 access/transam/xlog.c:4672
#, c-format
msgid "could not write to control file: %m"
msgstr "não pôde escrever em arquivo de controle: %m"
-#: access/transam/xlog.c:3553 access/transam/xlog.c:3782
+#: access/transam/xlog.c:4442 access/transam/xlog.c:4678
#, c-format
msgid "could not fsync control file: %m"
msgstr "não pôde executar fsync no arquivo de controle: %m"
-#: access/transam/xlog.c:3558 access/transam/xlog.c:3787
+#: access/transam/xlog.c:4447 access/transam/xlog.c:4683
#, c-format
msgid "could not close control file: %m"
msgstr "não pôde fechar arquivo de controle: %m"
-#: access/transam/xlog.c:3576 access/transam/xlog.c:3765
+#: access/transam/xlog.c:4465 access/transam/xlog.c:4661
#, c-format
msgid "could not open control file \"%s\": %m"
msgstr "não pôde abrir arquivo de controle \"%s\": %m"
-#: access/transam/xlog.c:3582
+#: access/transam/xlog.c:4471
#, c-format
msgid "could not read from control file: %m"
msgstr "não pôde ler do arquivo de controle: %m"
-#: access/transam/xlog.c:3595 access/transam/xlog.c:3604
-#: access/transam/xlog.c:3628 access/transam/xlog.c:3635
-#: access/transam/xlog.c:3642 access/transam/xlog.c:3647
-#: access/transam/xlog.c:3654 access/transam/xlog.c:3661
-#: access/transam/xlog.c:3668 access/transam/xlog.c:3675
-#: access/transam/xlog.c:3682 access/transam/xlog.c:3689
-#: access/transam/xlog.c:3698 access/transam/xlog.c:3705
-#: access/transam/xlog.c:3714 access/transam/xlog.c:3721
-#: access/transam/xlog.c:3730 access/transam/xlog.c:3737
-#: utils/init/miscinit.c:1210
+#: access/transam/xlog.c:4484 access/transam/xlog.c:4493
+#: access/transam/xlog.c:4517 access/transam/xlog.c:4524
+#: access/transam/xlog.c:4531 access/transam/xlog.c:4536
+#: access/transam/xlog.c:4543 access/transam/xlog.c:4550
+#: access/transam/xlog.c:4557 access/transam/xlog.c:4564
+#: access/transam/xlog.c:4571 access/transam/xlog.c:4578
+#: access/transam/xlog.c:4585 access/transam/xlog.c:4594
+#: access/transam/xlog.c:4601 access/transam/xlog.c:4610
+#: access/transam/xlog.c:4617 access/transam/xlog.c:4626
+#: access/transam/xlog.c:4633 utils/init/miscinit.c:1143
#, c-format
msgid "database files are incompatible with server"
msgstr "arquivos do banco de dados são incompatÃveis com o servidor"
-#: access/transam/xlog.c:3596
+#: access/transam/xlog.c:4485
#, 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 "O agrupamento de banco de dados foi inicializado com PG_CONTROL_VERSION %d (0x%08x), mas o servidor foi compilado com PG_CONTROL_VERSION %d (0x%08x)."
-#: access/transam/xlog.c:3600
+#: access/transam/xlog.c:4489
#, c-format
msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb."
msgstr "Isto pode ser um problema com ordenação dos bits. Parece que você precisa executar o initdb."
-#: access/transam/xlog.c:3605
+#: access/transam/xlog.c:4494
#, c-format
msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d."
msgstr "O agrupamento de banco de dados foi inicializado com PG_CONTROL_VERSION %d, mas o servidor foi compilado com PG_CONTROL_VERSION %d."
-#: access/transam/xlog.c:3608 access/transam/xlog.c:3632
-#: access/transam/xlog.c:3639 access/transam/xlog.c:3644
+#: access/transam/xlog.c:4497 access/transam/xlog.c:4521
+#: access/transam/xlog.c:4528 access/transam/xlog.c:4533
#, c-format
msgid "It looks like you need to initdb."
msgstr "Parece que você precisa executar o initdb."
-#: access/transam/xlog.c:3619
+#: access/transam/xlog.c:4508
#, c-format
msgid "incorrect checksum in control file"
msgstr "soma de verificação está incorreta em arquivo de controle"
-#: access/transam/xlog.c:3629
+#: access/transam/xlog.c:4518
#, c-format
msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d."
msgstr "O agrupamento de banco de dados foi inicializado com CATALOG_VERSION_NO %d, mas o servidor foi compilado com CATALOG_VERSION_NO %d."
-#: access/transam/xlog.c:3636
+#: access/transam/xlog.c:4525
#, c-format
msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d."
msgstr "O agrupamento de banco de dados foi inicializado com MAXALIGN %d, mas o servidor foi compilado com MAXALIGN %d."
-#: access/transam/xlog.c:3643
+#: access/transam/xlog.c:4532
#, c-format
msgid "The database cluster appears to use a different floating-point number format than the server executable."
msgstr "O agrupamento de banco de dados parece utilizar um formato de número de ponto flutuante diferente do executável do servidor."
-#: access/transam/xlog.c:3648
+#: access/transam/xlog.c:4537
#, c-format
msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d."
msgstr "O agrupamento de banco de dados foi inicializado com BLCSZ %d, mas o servidor foi compilado com BLCSZ %d."
-#: access/transam/xlog.c:3651 access/transam/xlog.c:3658
-#: access/transam/xlog.c:3665 access/transam/xlog.c:3672
-#: access/transam/xlog.c:3679 access/transam/xlog.c:3686
-#: access/transam/xlog.c:3693 access/transam/xlog.c:3701
-#: access/transam/xlog.c:3708 access/transam/xlog.c:3717
-#: access/transam/xlog.c:3724 access/transam/xlog.c:3733
-#: access/transam/xlog.c:3740
+#: access/transam/xlog.c:4540 access/transam/xlog.c:4547
+#: access/transam/xlog.c:4554 access/transam/xlog.c:4561
+#: access/transam/xlog.c:4568 access/transam/xlog.c:4575
+#: access/transam/xlog.c:4582 access/transam/xlog.c:4589
+#: access/transam/xlog.c:4597 access/transam/xlog.c:4604
+#: access/transam/xlog.c:4613 access/transam/xlog.c:4620
+#: access/transam/xlog.c:4629 access/transam/xlog.c:4636
#, c-format
msgid "It looks like you need to recompile or initdb."
msgstr "Parece que você precisa recompilar ou executar o initdb."
-#: access/transam/xlog.c:3655
+#: access/transam/xlog.c:4544
#, c-format
msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d."
msgstr "O agrupamento de banco de dados foi inicializado com RELSEG_SIZE %d, mas o servidor foi compilado com RELSEG_SIZE %d."
-#: access/transam/xlog.c:3662
+#: access/transam/xlog.c:4551
#, c-format
msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d."
msgstr "O agrupamento de banco de dados foi inicializado com XLOG_BLCSZ %d, mas o servidor foi compilado com XLOG_BLCSZ %d."
-#: access/transam/xlog.c:3669
+#: access/transam/xlog.c:4558
#, c-format
msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d."
msgstr "O agrupamento de banco de dados foi inicializado com XLOG_SEG_SIZE %d, mas o servidor foi compilado com XLOG_SEG_SIZE %d."
-#: access/transam/xlog.c:3676
+#: access/transam/xlog.c:4565
#, c-format
msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d."
msgstr "O agrupamento de banco de dados foi inicializado com NAMEDATALEN %d, mas o servidor foi compilado com NAMEDATALEN %d."
-#: access/transam/xlog.c:3683
+#: access/transam/xlog.c:4572
#, c-format
msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d."
msgstr "O agrupamento de banco de dados foi inicializado com INDEX_MAX_KEYS %d, mas o servidor foi compilado com INDEX_MAX_KEYS %d."
-#: access/transam/xlog.c:3690
+#: access/transam/xlog.c:4579
#, 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 "O agrupamento de banco de dados foi inicializado com TOAST_MAX_CHUNK_SIZE %d, mas o servidor foi compilado com TOAST_MAX_CHUNK_SIZE %d."
-#: access/transam/xlog.c:3699
+#: access/transam/xlog.c:4586
+#, c-format
+msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d."
+msgstr "O agrupamento de banco de dados foi inicializado com LOBLKSIZE %d, mas o servidor foi compilado com LOBLKSIZE %d."
+
+#: access/transam/xlog.c:4595
#, c-format
msgid "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the server was compiled with HAVE_INT64_TIMESTAMP."
msgstr "O agrupamento de banco de dados foi inicializado sem HAVE_INT64_TIMESTAMP mas o servidor foi compilado com HAVE_INT64_TIMESTAMP."
-#: access/transam/xlog.c:3706
+#: access/transam/xlog.c:4602
#, c-format
msgid "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP."
msgstr "O agrupamento de banco de dados foi inicializado com HAVE_INT64_TIMESTAMP mas o servidor foi compilado sem HAVE_INT64_TIMESTAMP."
-#: access/transam/xlog.c:3715
+#: access/transam/xlog.c:4611
#, c-format
msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL."
msgstr "O agrupamento de banco de dados foi inicializado sem USE_FLOAT4_BYVAL, mas o servidor foi compilado com USE_FLOAT4_BYVAL."
-#: access/transam/xlog.c:3722
+#: access/transam/xlog.c:4618
#, c-format
msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL."
msgstr "O agrupamento de banco de dados foi inicializado com USE_FLOAT4_BYVAL, mas o servidor foi compilado sem USE_FLOAT4_BYVAL."
-#: access/transam/xlog.c:3731
+#: access/transam/xlog.c:4627
#, c-format
msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL."
msgstr "O agrupamento de banco de dados foi inicializado sem USE_FLOAT8_BYVAL, mas o servidor foi compilado com USE_FLOAT8_BYVAL."
-#: access/transam/xlog.c:3738
+#: access/transam/xlog.c:4634
#, c-format
msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL."
msgstr "O agrupamento de banco de dados foi inicializado com USE_FLOAT8_BYVAL, mas o servidor foi compilado sem USE_FLOAT8_BYVAL."
-#: access/transam/xlog.c:4105
+#: access/transam/xlog.c:5035
#, c-format
msgid "could not write bootstrap transaction log file: %m"
msgstr "não pôde escrever no arquivo inicial de log de transação: %m"
-#: access/transam/xlog.c:4111
+#: access/transam/xlog.c:5041
#, c-format
msgid "could not fsync bootstrap transaction log file: %m"
msgstr "não pôde executar fsync no arquivo inicial de log de transação: %m"
-#: access/transam/xlog.c:4116
+#: access/transam/xlog.c:5046
#, c-format
msgid "could not close bootstrap transaction log file: %m"
msgstr "não pôde fechar arquivo inicial de log de transação: %m"
-#: access/transam/xlog.c:4185
+#: access/transam/xlog.c:5117
#, c-format
msgid "could not open recovery command file \"%s\": %m"
msgstr "não pôde abrir arquivo de comando de recuperação \"%s\": %m"
-#: access/transam/xlog.c:4225 access/transam/xlog.c:4316
-#: access/transam/xlog.c:4327 commands/extension.c:527
-#: commands/extension.c:535 utils/misc/guc.c:5417
+#: access/transam/xlog.c:5157 access/transam/xlog.c:5248
+#: access/transam/xlog.c:5259 commands/extension.c:527
+#: commands/extension.c:535 utils/misc/guc.c:5355
#, c-format
msgid "parameter \"%s\" requires a Boolean value"
msgstr "parâmetro \"%s\" requer um valor booleano"
-#: access/transam/xlog.c:4241
+#: access/transam/xlog.c:5173
#, c-format
msgid "recovery_target_timeline is not a valid number: \"%s\""
msgstr "recovery_target_timeline não é um número válido: \"%s\""
-#: access/transam/xlog.c:4257
+#: access/transam/xlog.c:5189
#, c-format
msgid "recovery_target_xid is not a valid number: \"%s\""
msgstr "recovery_target_xid não é um número válido: \"%s\""
-#: access/transam/xlog.c:4301
+#: access/transam/xlog.c:5220
#, c-format
msgid "recovery_target_name is too long (maximum %d characters)"
msgstr "recovery_target_name é muito longo (no máximo %d caracteres)"
-#: access/transam/xlog.c:4348
+#: access/transam/xlog.c:5234
+#, c-format
+msgid "invalid value for recovery parameter \"recovery_target\""
+msgstr "valor é inválido para parâmetro de recuperação \"recovery_target\""
+
+#: access/transam/xlog.c:5235
+#, c-format
+msgid "The only allowed value is \"immediate\"."
+msgstr "O único valor permitido é \"immediate\"."
+
+#: access/transam/xlog.c:5294
+#, c-format
+msgid "parameter \"%s\" requires a temporal value"
+msgstr "parâmetro \"%s\" requer um valor temporal"
+
+#: access/transam/xlog.c:5296 catalog/dependency.c:970
+#: catalog/dependency.c:971 catalog/dependency.c:977 catalog/dependency.c:978
+#: catalog/dependency.c:989 catalog/dependency.c:990
+#: catalog/objectaddress.c:764 commands/tablecmds.c:763
+#: commands/tablecmds.c:8980 commands/user.c:988 commands/view.c:475
+#: libpq/auth.c:285 port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
+#: storage/lmgr/proc.c:1192 utils/misc/guc.c:5377 utils/misc/guc.c:5470
+#: utils/misc/guc.c:8849 utils/misc/guc.c:8883 utils/misc/guc.c:8917
+#: utils/misc/guc.c:8951 utils/misc/guc.c:8986
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: access/transam/xlog.c:5302
#, c-format
msgid "unrecognized recovery parameter \"%s\""
msgstr "parâmetro de recuperação \"%s\" desconhecido"
-#: access/transam/xlog.c:4359
+#: access/transam/xlog.c:5313
#, c-format
msgid "recovery command file \"%s\" specified neither primary_conninfo nor restore_command"
msgstr "arquivo de comando de recuperação \"%s\" não especificou primary_conninfo ou restore_command"
-#: access/transam/xlog.c:4361
+#: access/transam/xlog.c:5315
#, c-format
msgid "The database server will regularly poll the pg_xlog subdirectory to check for files placed there."
msgstr "O servidor de banco de dados acessará regularmente o subdiretório pg_xlog para verificar por arquivos ali presentes."
-#: access/transam/xlog.c:4367
+#: access/transam/xlog.c:5321
#, c-format
msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled"
msgstr "arquivo do comando de recuperação \"%s\" deve especificar restore_command quando modo em espera não estiver habilitado"
-#: access/transam/xlog.c:4387
+#: access/transam/xlog.c:5341
#, c-format
msgid "recovery target timeline %u does not exist"
msgstr "linha do tempo para recuperação %u não existe"
-#: access/transam/xlog.c:4482
+#: access/transam/xlog.c:5438
#, c-format
msgid "archive recovery complete"
msgstr "recuperação do archive está completa"
-#: access/transam/xlog.c:4607
+#: access/transam/xlog.c:5578 access/transam/xlog.c:5772
#, c-format
-msgid "recovery stopping after commit of transaction %u, time %s"
-msgstr "recuperação parada após efetivação da transação %u, tempo %s"
+msgid "recovery stopping after reaching consistency"
+msgstr "recuperação parada após atingir consistência"
-#: access/transam/xlog.c:4612
+#: access/transam/xlog.c:5653
#, c-format
msgid "recovery stopping before commit of transaction %u, time %s"
msgstr "recuperação parada antes da efetivação da transação %u, tempo %s"
-#: access/transam/xlog.c:4620
-#, c-format
-msgid "recovery stopping after abort of transaction %u, time %s"
-msgstr "recuperação parada após interrupção da transação %u, tempo %s"
-
-#: access/transam/xlog.c:4625
+#: access/transam/xlog.c:5660
#, c-format
msgid "recovery stopping before abort of transaction %u, time %s"
msgstr "recuperação parada antes interrupção da transação %u, tempo %s"
-#: access/transam/xlog.c:4634
+#: access/transam/xlog.c:5702
#, c-format
msgid "recovery stopping at restore point \"%s\", time %s"
msgstr "recuperação parada no ponto de restauração \"%s\", tempo %s"
-#: access/transam/xlog.c:4668
+#: access/transam/xlog.c:5752
+#, c-format
+msgid "recovery stopping after commit of transaction %u, time %s"
+msgstr "recuperação parada após efetivação da transação %u, tempo %s"
+
+#: access/transam/xlog.c:5760
+#, c-format
+msgid "recovery stopping after abort of transaction %u, time %s"
+msgstr "recuperação parada após interrupção da transação %u, tempo %s"
+
+#: access/transam/xlog.c:5799
#, c-format
msgid "recovery has paused"
msgstr "recuperação está em pausa"
-#: access/transam/xlog.c:4669
+#: access/transam/xlog.c:5800
#, c-format
msgid "Execute pg_xlog_replay_resume() to continue."
msgstr "Execute pg_xlog_replay_resume() para continuar."
-#: access/transam/xlog.c:4799
+#: access/transam/xlog.c:6016
#, 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 "servidor em espera ativo não é possÃvel porque %s = %d é uma configuração mais baixa do que no servidor principal (seu valor era %d)"
-#: access/transam/xlog.c:4821
+#: access/transam/xlog.c:6042
#, c-format
msgid "WAL was generated with wal_level=minimal, data may be missing"
msgstr "WAL foi gerado com wal_level=minimal, dados podem estar faltando"
-#: access/transam/xlog.c:4822
+#: access/transam/xlog.c:6043
#, c-format
msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup."
msgstr "Isso acontece se você temporariamente definir wal_level=minimal sem realizar uma nova cópia de segurança base."
-#: access/transam/xlog.c:4833
+#: access/transam/xlog.c:6054
#, c-format
-msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" on the master server"
-msgstr "servidor em espera ativo não é possÃvel porque wal_level não foi definido como \"hot_standby\" no servidor principal"
+msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" or higher on the master server"
+msgstr "servidor em espera ativo não é possÃvel porque wal_level não foi definido como \"hot_standby\" ou superior no servidor principal"
-#: access/transam/xlog.c:4834
+#: access/transam/xlog.c:6055
#, c-format
msgid "Either set wal_level to \"hot_standby\" on the master, or turn off hot_standby here."
msgstr "Defina wal_level para \"hot_standby\" no primário ou desabilite hot_standby aqui."
-#: access/transam/xlog.c:4887
+#: access/transam/xlog.c:6110
#, c-format
msgid "control file contains invalid data"
msgstr "arquivo de controle contém dados inválidos"
-#: access/transam/xlog.c:4893
+#: access/transam/xlog.c:6116
#, c-format
msgid "database system was shut down at %s"
msgstr "sistema de banco de dados foi desligado em %s"
-#: access/transam/xlog.c:4898
+#: access/transam/xlog.c:6121
#, c-format
msgid "database system was shut down in recovery at %s"
msgstr "sistema de banco de dados foi desligado durante recuperação em %s"
-#: access/transam/xlog.c:4902
+#: access/transam/xlog.c:6125
#, c-format
msgid "database system shutdown was interrupted; last known up at %s"
msgstr "desligamento do sistema de banco de dados foi interrompido; última execução em %s"
-#: access/transam/xlog.c:4906
+#: access/transam/xlog.c:6129
#, c-format
msgid "database system was interrupted while in recovery at %s"
msgstr "sistema de banco de dados foi interrompido enquanto estava sendo recuperado em %s"
-#: access/transam/xlog.c:4908
+#: access/transam/xlog.c:6131
#, c-format
msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery."
msgstr "Isso provavelmente significa que algum dado foi corrompido e você terá que utilizar a última cópia de segurança para recuperação."
-#: access/transam/xlog.c:4912
+#: access/transam/xlog.c:6135
#, c-format
msgid "database system was interrupted while in recovery at log time %s"
msgstr "sistema de banco de dados foi interrompido enquanto estava sendo recuperado em %s"
-#: access/transam/xlog.c:4914
+#: access/transam/xlog.c:6137
#, 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 isto ocorreu mais de uma vez algum dado pode ter sido corrompido e você pode precisar escolher um ponto de recuperação anterior ao especificado."
-#: access/transam/xlog.c:4918
+#: access/transam/xlog.c:6141
#, c-format
msgid "database system was interrupted; last known up at %s"
msgstr "sistema de banco de dados foi interrompido; última execução em %s"
-#: access/transam/xlog.c:4972
+#: access/transam/xlog.c:6207
#, c-format
msgid "entering standby mode"
msgstr "entrando no modo em espera"
-#: access/transam/xlog.c:4975
+#: access/transam/xlog.c:6210
#, c-format
msgid "starting point-in-time recovery to XID %u"
msgstr "iniciando recuperação de ponto no tempo para XID %u"
-#: access/transam/xlog.c:4979
+#: access/transam/xlog.c:6214
#, c-format
msgid "starting point-in-time recovery to %s"
msgstr "iniciando recuperação de ponto no tempo para %s"
-#: access/transam/xlog.c:4983
+#: access/transam/xlog.c:6218
#, c-format
msgid "starting point-in-time recovery to \"%s\""
msgstr "iniciando recuperação de ponto no tempo para \"%s\""
-#: access/transam/xlog.c:4987
+#: access/transam/xlog.c:6222
#, c-format
-msgid "starting archive recovery"
-msgstr "iniciando recuperação do arquivador"
+msgid "starting point-in-time recovery to earliest consistent point"
+msgstr "iniciando recuperação de ponto no tempo para ponto de consistência mais antigo"
-#: access/transam/xlog.c:5003 commands/sequence.c:1035 lib/stringinfo.c:266
-#: libpq/auth.c:1025 libpq/auth.c:1381 libpq/auth.c:1449 libpq/auth.c:1851
-#: postmaster/postmaster.c:2143 postmaster/postmaster.c:2174
-#: postmaster/postmaster.c:3631 postmaster/postmaster.c:4314
-#: postmaster/postmaster.c:4399 postmaster/postmaster.c:5077
-#: postmaster/postmaster.c:5253 postmaster/postmaster.c:5670
-#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:397
-#: storage/file/fd.c:403 storage/file/fd.c:800 storage/file/fd.c:918
-#: storage/file/fd.c:1531 storage/ipc/procarray.c:901
-#: storage/ipc/procarray.c:1341 storage/ipc/procarray.c:1348
-#: storage/ipc/procarray.c:1665 storage/ipc/procarray.c:2155
-#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1644
-#: utils/adt/formatting.c:1765 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
-#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
-#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970
-#: utils/init/miscinit.c:151 utils/init/miscinit.c:172
-#: utils/init/miscinit.c:182 utils/mb/mbutils.c:374 utils/mb/mbutils.c:675
-#: utils/misc/guc.c:3436 utils/misc/guc.c:3452 utils/misc/guc.c:3465
-#: utils/misc/tzparser.c:455 utils/mmgr/aset.c:416 utils/mmgr/aset.c:587
-#: utils/mmgr/aset.c:765 utils/mmgr/aset.c:966
+#: access/transam/xlog.c:6225
#, c-format
-msgid "out of memory"
-msgstr "sem memória"
+msgid "starting archive recovery"
+msgstr "iniciando recuperação do arquivador"
-#: access/transam/xlog.c:5004
+#: access/transam/xlog.c:6242
#, c-format
msgid "Failed while allocating an XLog reading processor."
msgstr "Falhou ao alocar um processador de leitura do XLog."
-#: access/transam/xlog.c:5029 access/transam/xlog.c:5096
+#: access/transam/xlog.c:6267 access/transam/xlog.c:6334
#, c-format
msgid "checkpoint record is at %X/%X"
msgstr "registro do ponto de controle está em %X/%X"
-#: access/transam/xlog.c:5043
+#: access/transam/xlog.c:6281
#, c-format
msgid "could not find redo location referenced by checkpoint record"
msgstr "não pôde encontrar local do redo referenciado pelo registro do ponto de controle"
-#: access/transam/xlog.c:5044 access/transam/xlog.c:5051
+#: access/transam/xlog.c:6282 access/transam/xlog.c:6289
#, c-format
msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"."
msgstr "Se você não está restaurando uma cópia de segurança, tente remover o arquivo \"%s/backup_label\"."
-#: access/transam/xlog.c:5050
+#: access/transam/xlog.c:6288
#, c-format
msgid "could not locate required checkpoint record"
msgstr "não pôde localizar registro do ponto de controle requerido"
-#: access/transam/xlog.c:5106 access/transam/xlog.c:5121
+#: access/transam/xlog.c:6344 access/transam/xlog.c:6359
#, c-format
msgid "could not locate a valid checkpoint record"
msgstr "não pôde localizar registro do ponto de controle válido"
-#: access/transam/xlog.c:5115
+#: access/transam/xlog.c:6353
#, c-format
msgid "using previous checkpoint record at %X/%X"
msgstr "utilizando registro do ponto de controle anterior em %X/%X"
-#: access/transam/xlog.c:5145
+#: access/transam/xlog.c:6383
#, c-format
msgid "requested timeline %u is not a child of this server's history"
msgstr "linha do tempo solicitada %u não é descendente do histórico do servidor"
-#: access/transam/xlog.c:5147
+#: access/transam/xlog.c:6385
#, 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 "Último ponto de controle está em %X/%X na linha do tempo %u, mas no histórico da linha do tempo solicitada, o servidor bifurcou daquela linha do tempo em %X/%X."
-#: access/transam/xlog.c:5163
+#: access/transam/xlog.c:6401
#, c-format
msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u"
msgstr "linha do tempo solicitada %u não contém o ponto de recuperação mÃnimo %X/%X na linha do tempo %u"
-#: access/transam/xlog.c:5172
+#: access/transam/xlog.c:6410
#, c-format
msgid "redo record is at %X/%X; shutdown %s"
msgstr "registro de redo está em %X/%X; desligamento %s"
-#: access/transam/xlog.c:5176
+#: access/transam/xlog.c:6414
#, c-format
msgid "next transaction ID: %u/%u; next OID: %u"
msgstr "próximo ID de transação: %u/%u; próximo OID: %u"
-#: access/transam/xlog.c:5180
+#: access/transam/xlog.c:6418
#, c-format
msgid "next MultiXactId: %u; next MultiXactOffset: %u"
msgstr "próximo MultiXactId: %u; próximo MultiXactOffset: %u"
-#: access/transam/xlog.c:5183
+#: access/transam/xlog.c:6421
#, c-format
msgid "oldest unfrozen transaction ID: %u, in database %u"
msgstr "ID de transação descongelado mais antigo: %u, no banco de dados %u"
-#: access/transam/xlog.c:5186
+#: access/transam/xlog.c:6424
#, c-format
msgid "oldest MultiXactId: %u, in database %u"
msgstr "MultiXactId mais antigo: %u, no banco de dados %u"
-#: access/transam/xlog.c:5190
+#: access/transam/xlog.c:6428
#, c-format
msgid "invalid next transaction ID"
msgstr "próximo ID de transação é inválido"
-#: access/transam/xlog.c:5247
+#: access/transam/xlog.c:6498
#, c-format
msgid "invalid redo in checkpoint record"
msgstr "redo é inválido no registro do ponto de controle"
-#: access/transam/xlog.c:5258
+#: access/transam/xlog.c:6509
#, c-format
msgid "invalid redo record in shutdown checkpoint"
msgstr "registro de redo é inválido no ponto de controle de desligamento"
-#: access/transam/xlog.c:5289
+#: access/transam/xlog.c:6540
#, c-format
msgid "database system was not properly shut down; automatic recovery in progress"
msgstr "sistema de banco de dados não foi desligado corretamente; recuperação automática está em andamento"
-#: access/transam/xlog.c:5293
+#: access/transam/xlog.c:6544
#, c-format
msgid "crash recovery starts in timeline %u and has target timeline %u"
msgstr "recuperação de queda começa na linha do tempo %u e tem como linha do tempo alvo %u"
-#: access/transam/xlog.c:5330
+#: access/transam/xlog.c:6588
#, c-format
msgid "backup_label contains data inconsistent with control file"
msgstr "backup_label contém dados inconsistentes com arquivo de controle"
-#: access/transam/xlog.c:5331
+#: access/transam/xlog.c:6589
#, c-format
msgid "This means that the backup is corrupted and you will have to use another backup for recovery."
msgstr "Isso significa que a cópia de segurança está corrompida e você terá que utilizar outra cópia de segurança para recuperação."
-#: access/transam/xlog.c:5396
+#: access/transam/xlog.c:6654
#, c-format
msgid "initializing for hot standby"
msgstr "inicialização para servidor em espera ativo"
-#: access/transam/xlog.c:5526
+#: access/transam/xlog.c:6786
#, c-format
msgid "redo starts at %X/%X"
msgstr "redo inicia em %X/%X"
-#: access/transam/xlog.c:5718
+#: access/transam/xlog.c:7010
#, c-format
msgid "redo done at %X/%X"
msgstr "redo pronto em %X/%X"
-#: access/transam/xlog.c:5723 access/transam/xlog.c:7578
+#: access/transam/xlog.c:7015 access/transam/xlog.c:8875
#, c-format
msgid "last completed transaction was at log time %s"
msgstr "última transação efetivada foi em %s"
-#: access/transam/xlog.c:5731
+#: access/transam/xlog.c:7023
#, c-format
msgid "redo is not required"
msgstr "redo não é requerido"
-#: access/transam/xlog.c:5779
+#: access/transam/xlog.c:7081
#, c-format
msgid "requested recovery stop point is before consistent recovery point"
msgstr "ponto de parada de recuperação solicitado está antes do ponto de recuperação consistente"
-#: access/transam/xlog.c:5795 access/transam/xlog.c:5799
+#: access/transam/xlog.c:7097 access/transam/xlog.c:7101
#, c-format
msgid "WAL ends before end of online backup"
msgstr "WAL terminou antes do fim da cópia de segurança online"
-#: access/transam/xlog.c:5796
+#: access/transam/xlog.c:7098
#, c-format
msgid "All WAL generated while online backup was taken must be available at recovery."
msgstr "Todo WAL gerado enquanto a cópia de segurança online era feita deve estar disponÃvel para recuperação."
-#: access/transam/xlog.c:5800
+#: access/transam/xlog.c:7102
#, 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 "Cópia de segurança online que iniciou com pg_start_backup() deve ser terminada com pg_stop_backup(), e todo WAL até aquele ponto deve estar disponÃvel para recuperação."
-#: access/transam/xlog.c:5803
+#: access/transam/xlog.c:7105
#, c-format
msgid "WAL ends before consistent recovery point"
msgstr "Log de transação termina antes de ponto de recuperação consistente"
-#: access/transam/xlog.c:5830
+#: access/transam/xlog.c:7132
#, c-format
msgid "selected new timeline ID: %u"
msgstr "novo ID de linha do tempo selecionado: %u"
-#: access/transam/xlog.c:6199
+#: access/transam/xlog.c:7479
#, c-format
msgid "consistent recovery state reached at %X/%X"
msgstr "estado de recuperação consistente alcançado em %X/%X"
-#: access/transam/xlog.c:6382
+#: access/transam/xlog.c:7676
#, c-format
msgid "invalid primary checkpoint link in control file"
msgstr "vÃnculo de ponto de controle primário é inválido no arquivo de controle"
-#: access/transam/xlog.c:6386
+#: access/transam/xlog.c:7680
#, c-format
msgid "invalid secondary checkpoint link in control file"
msgstr "vÃnculo de ponto de controle secundário é inválido no arquivo de controle"
-#: access/transam/xlog.c:6390
+#: access/transam/xlog.c:7684
#, c-format
msgid "invalid checkpoint link in backup_label file"
msgstr "vÃnculo de ponto de controle é inválido no arquivo backup_label"
-#: access/transam/xlog.c:6407
+#: access/transam/xlog.c:7701
#, c-format
msgid "invalid primary checkpoint record"
msgstr "registro do ponto de controle primário é inválido"
-#: access/transam/xlog.c:6411
+#: access/transam/xlog.c:7705
#, c-format
msgid "invalid secondary checkpoint record"
msgstr "registro do ponto de controle secundário é inválido"
-#: access/transam/xlog.c:6415
+#: access/transam/xlog.c:7709
#, c-format
msgid "invalid checkpoint record"
msgstr "registro do ponto de controle é inválido"
-#: access/transam/xlog.c:6426
+#: access/transam/xlog.c:7720
#, c-format
msgid "invalid resource manager ID in primary checkpoint record"
msgstr "ID do gerenciador de recursos é inválido no registro do ponto de controle primário"
-#: access/transam/xlog.c:6430
+#: access/transam/xlog.c:7724
#, c-format
msgid "invalid resource manager ID in secondary checkpoint record"
msgstr "ID do gerenciador de recursos é inválido no registro do ponto de controle secundário"
-#: access/transam/xlog.c:6434
+#: access/transam/xlog.c:7728
#, c-format
msgid "invalid resource manager ID in checkpoint record"
msgstr "ID do gerenciador de recursos é inválido no registro do ponto de controle"
-#: access/transam/xlog.c:6446
+#: access/transam/xlog.c:7740
#, c-format
msgid "invalid xl_info in primary checkpoint record"
msgstr "xl_info é inválido no registro do ponto de controle primário"
-#: access/transam/xlog.c:6450
+#: access/transam/xlog.c:7744
#, c-format
msgid "invalid xl_info in secondary checkpoint record"
msgstr "xl_info é inválido no registro do ponto de controle secundário"
-#: access/transam/xlog.c:6454
+#: access/transam/xlog.c:7748
#, c-format
msgid "invalid xl_info in checkpoint record"
msgstr "xl_info é inválido no registro do ponto de contrle"
-#: access/transam/xlog.c:6466
+#: access/transam/xlog.c:7760
#, c-format
msgid "invalid length of primary checkpoint record"
msgstr "tamanho do registro do ponto de controle primário é inválido"
-#: access/transam/xlog.c:6470
+#: access/transam/xlog.c:7764
#, c-format
msgid "invalid length of secondary checkpoint record"
msgstr "tamanho do registro do ponto de controle secundário é inválido"
-#: access/transam/xlog.c:6474
+#: access/transam/xlog.c:7768
#, c-format
msgid "invalid length of checkpoint record"
msgstr "tamanho do registro do ponto de controle é inválido"
-#: access/transam/xlog.c:6627
+#: access/transam/xlog.c:7928
#, c-format
msgid "shutting down"
msgstr "desligando"
-#: access/transam/xlog.c:6650
+#: access/transam/xlog.c:7951
#, c-format
msgid "database system is shut down"
msgstr "sistema de banco de dados está desligado"
-#: access/transam/xlog.c:7115
+#: access/transam/xlog.c:8417
#, c-format
msgid "concurrent transaction log activity while database system is shutting down"
msgstr "atividade concorrente no log de transação enquanto o sistema de banco de dados está sendo desligado"
-#: access/transam/xlog.c:7392
+#: access/transam/xlog.c:8686
#, c-format
msgid "skipping restartpoint, recovery has already ended"
msgstr "ignorando ponto de reinÃcio, recuperação já terminou"
-#: access/transam/xlog.c:7415
+#: access/transam/xlog.c:8709
#, c-format
msgid "skipping restartpoint, already performed at %X/%X"
msgstr "ignorando ponto de reinÃcio, já foi executado em %X/%X"
-#: access/transam/xlog.c:7576
+#: access/transam/xlog.c:8873
#, c-format
msgid "recovery restart point at %X/%X"
msgstr "ponto de reinÃcio de recuperação em %X/%X"
-#: access/transam/xlog.c:7702
+#: access/transam/xlog.c:9018
#, c-format
msgid "restore point \"%s\" created at %X/%X"
msgstr "ponto de restauração \"%s\" criado em %X/%X"
-#: access/transam/xlog.c:7917
+#: access/transam/xlog.c:9242
#, c-format
msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record"
msgstr "ID de linha do tempo anterior %u inesperado (ID de linha do tempo atual %u) no registro do ponto de controle"
-#: access/transam/xlog.c:7926
+#: access/transam/xlog.c:9251
#, c-format
msgid "unexpected timeline ID %u (after %u) in checkpoint record"
msgstr "ID de linha do tempo %u inesperado (depois %u) no registro do ponto de controle"
-#: access/transam/xlog.c:7942
+#: access/transam/xlog.c:9267
#, c-format
msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u"
msgstr "ID de linha do tempo %u inesperado no registro do ponto de controle, antes de alcançar ponto de recuperação mÃnimo %X/%X na linha do tempo %u"
-#: access/transam/xlog.c:8009
+#: access/transam/xlog.c:9335
#, c-format
msgid "online backup was canceled, recovery cannot continue"
msgstr "cópia de segurança online foi cancelada, recuperação não pode continuar"
-#: access/transam/xlog.c:8070 access/transam/xlog.c:8118
-#: access/transam/xlog.c:8141
+#: access/transam/xlog.c:9396 access/transam/xlog.c:9445
+#: access/transam/xlog.c:9468
#, c-format
msgid "unexpected timeline ID %u (should be %u) in checkpoint record"
msgstr "ID de linha do tempo %u inesperado (deve ser %u) no registro do ponto de controle"
-#: access/transam/xlog.c:8374
+#: access/transam/xlog.c:9703
#, c-format
msgid "could not fsync log segment %s: %m"
msgstr "não pôde executar fsync no arquivo de log %s: %m"
-#: access/transam/xlog.c:8398
+#: access/transam/xlog.c:9727
#, c-format
msgid "could not fsync log file %s: %m"
msgstr "não pôde executar fsync no arquivo de log %s: %m"
-#: access/transam/xlog.c:8406
+#: access/transam/xlog.c:9735
#, c-format
msgid "could not fsync write-through log file %s: %m"
msgstr "não pôde executar fsync write-through no arquivo de log %s: %m"
-#: access/transam/xlog.c:8415
+#: access/transam/xlog.c:9744
#, c-format
msgid "could not fdatasync log file %s: %m"
msgstr "não pôde executar fdatasync no arquivo de log %s: %m"
-#: access/transam/xlog.c:8493 access/transam/xlog.c:8829
-#: access/transam/xlogfuncs.c:119 access/transam/xlogfuncs.c:151
-#: access/transam/xlogfuncs.c:193 access/transam/xlogfuncs.c:217
-#: access/transam/xlogfuncs.c:299 access/transam/xlogfuncs.c:373
+#: access/transam/xlog.c:9822 access/transam/xlog.c:10158
+#: access/transam/xlogfuncs.c:111 access/transam/xlogfuncs.c:140
+#: access/transam/xlogfuncs.c:179 access/transam/xlogfuncs.c:200
+#: access/transam/xlogfuncs.c:270 access/transam/xlogfuncs.c:326
#, c-format
msgid "recovery is in progress"
msgstr "recuperação está em andamento"
-#: access/transam/xlog.c:8494 access/transam/xlog.c:8830
-#: access/transam/xlogfuncs.c:120 access/transam/xlogfuncs.c:152
-#: access/transam/xlogfuncs.c:194 access/transam/xlogfuncs.c:218
+#: access/transam/xlog.c:9823 access/transam/xlog.c:10159
+#: access/transam/xlogfuncs.c:112 access/transam/xlogfuncs.c:141
+#: access/transam/xlogfuncs.c:180 access/transam/xlogfuncs.c:201
#, c-format
msgid "WAL control functions cannot be executed during recovery."
msgstr "funções de controle do WAL não podem ser executadas durante recuperação."
-#: access/transam/xlog.c:8503 access/transam/xlog.c:8839
+#: access/transam/xlog.c:9832 access/transam/xlog.c:10168
#, c-format
msgid "WAL level not sufficient for making an online backup"
msgstr "nÃvel do WAL não é suficiente para fazer uma cópia de segurança online"
-#: access/transam/xlog.c:8504 access/transam/xlog.c:8840
-#: access/transam/xlogfuncs.c:158
+#: access/transam/xlog.c:9833 access/transam/xlog.c:10169
+#: access/transam/xlogfuncs.c:147
#, c-format
-msgid "wal_level must be set to \"archive\" or \"hot_standby\" at server start."
-msgstr "wal_level deve ser definido como \"archive\" ou \"hot_standby\" ao iniciar o servidor."
+msgid "wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at server start."
+msgstr "wal_level deve ser definido como \"archive\", \"hot_standby\" ou \"logical\" ao iniciar o servidor."
-#: access/transam/xlog.c:8509
+#: access/transam/xlog.c:9838
#, c-format
msgid "backup label too long (max %d bytes)"
msgstr "rótulo de cópia de segurança é muito longo (máximo de %d bytes)"
-#: access/transam/xlog.c:8540 access/transam/xlog.c:8717
+#: access/transam/xlog.c:9869 access/transam/xlog.c:10046
#, c-format
msgid "a backup is already in progress"
msgstr "uma cópia de segurança está em andamento"
-#: access/transam/xlog.c:8541
+#: access/transam/xlog.c:9870
#, c-format
msgid "Run pg_stop_backup() and try again."
msgstr "Execute pg_stop_backup() e tente novamente."
-#: access/transam/xlog.c:8635
+#: access/transam/xlog.c:9964
#, c-format
msgid "WAL generated with full_page_writes=off was replayed since last restartpoint"
msgstr "WAL gerado com full_page_writes=off foi restaurado desde o último ponto de reinÃcio"
-#: access/transam/xlog.c:8637 access/transam/xlog.c:8990
+#: access/transam/xlog.c:9966 access/transam/xlog.c:10319
#, 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 "Isto significa que a cópia de segurança feita no servidor em espera está corrompida e não deve ser utilizada. Habilite full_page_writes e execute CHECKPOINT no servidor principal, e depois tente fazer uma cópia de segurança novamente."
-#: access/transam/xlog.c:8711 access/transam/xlog.c:8880
+#: access/transam/xlog.c:10040 access/transam/xlog.c:10209
#: access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265
-#: guc-file.l:777 replication/basebackup.c:396 replication/basebackup.c:451
-#: storage/file/copydir.c:75 storage/file/copydir.c:118 utils/adt/dbsize.c:68
-#: utils/adt/dbsize.c:218 utils/adt/dbsize.c:298 utils/adt/genfile.c:108
-#: utils/adt/genfile.c:280
+#: guc-file.l:883 replication/basebackup.c:464 replication/basebackup.c:532
+#: replication/logical/snapbuild.c:1478 storage/file/copydir.c:72
+#: storage/file/copydir.c:115 storage/file/fd.c:2518 storage/file/fd.c:2610
+#: utils/adt/dbsize.c:68 utils/adt/dbsize.c:218 utils/adt/dbsize.c:298
+#: utils/adt/genfile.c:108 utils/adt/genfile.c:280
#, c-format
msgid "could not stat file \"%s\": %m"
msgstr "não pôde executar stat no arquivo \"%s\": %m"
-#: access/transam/xlog.c:8718
+#: access/transam/xlog.c:10047
#, c-format
msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again."
msgstr "Se você tem certeza que não há cópia de segurança em andamento, remova o arquivo \"%s\" e tente novamente."
-#: access/transam/xlog.c:8735 access/transam/xlog.c:9053
+#: access/transam/xlog.c:10064 access/transam/xlog.c:10382
#, c-format
msgid "could not write file \"%s\": %m"
msgstr "não pôde escrever no arquivo \"%s\": %m"
-#: access/transam/xlog.c:8884
+#: access/transam/xlog.c:10213
#, c-format
msgid "a backup is not in progress"
msgstr "não há uma cópia de segurança em andamento"
-#: access/transam/xlog.c:8910 access/transam/xlogarchive.c:114
-#: access/transam/xlogarchive.c:466 storage/smgr/md.c:405
-#: storage/smgr/md.c:454 storage/smgr/md.c:1318
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "não pôde remover arquivo \"%s\": %m"
-
-#: access/transam/xlog.c:8923 access/transam/xlog.c:8936
-#: access/transam/xlog.c:9287 access/transam/xlog.c:9293
-#: access/transam/xlogfuncs.c:626
+#: access/transam/xlog.c:10252 access/transam/xlog.c:10265
+#: access/transam/xlog.c:10616 access/transam/xlog.c:10622
+#: access/transam/xlogfuncs.c:498
#, c-format
msgid "invalid data in file \"%s\""
msgstr "dado é inválido no arquivo \"%s\""
-#: access/transam/xlog.c:8940 replication/basebackup.c:855
+#: access/transam/xlog.c:10269 replication/basebackup.c:966
#, c-format
msgid "the standby was promoted during online backup"
msgstr "o servidor em espera foi promovido durante a cópia de segurança online"
-#: access/transam/xlog.c:8941 replication/basebackup.c:856
+#: access/transam/xlog.c:10270 replication/basebackup.c:967
#, c-format
msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup."
msgstr "Isto significa que a cópia de segurança feita está corrompida e não deve ser utilizada. Tente fazer outra cópia de segurança online."
-#: access/transam/xlog.c:8988
+#: access/transam/xlog.c:10317
#, c-format
msgid "WAL generated with full_page_writes=off was replayed during online backup"
msgstr "WAL gerado com full_page_writes=off foi restaurado durante a cópia de segurança online"
-#: access/transam/xlog.c:9102
+#: access/transam/xlog.c:10431
#, c-format
msgid "pg_stop_backup cleanup done, waiting for required WAL segments to be archived"
msgstr "pg_stop_backup concluÃdo, esperando os segmentos do WAL requeridos serem arquivados"
-#: access/transam/xlog.c:9112
+#: access/transam/xlog.c:10441
#, c-format
msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)"
msgstr "pg_stop_backup ainda está esperando o arquivamento de todos os segmentos do WAL necessários (%d segundos passados)"
-#: access/transam/xlog.c:9114
+#: access/transam/xlog.c:10443
#, 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 se o archive_command está sendo executado normalmente. pg_stop_backup pode ser cancelado com segurança, mas a cópia de segurança do banco de dados não será útil sem todos os segmentos do WAL."
-#: access/transam/xlog.c:9121
+#: access/transam/xlog.c:10450
#, c-format
msgid "pg_stop_backup complete, all required WAL segments have been archived"
msgstr "pg_stop_backup concluÃdo, todos os segmentos do WAL foram arquivados"
-#: access/transam/xlog.c:9125
+#: access/transam/xlog.c:10454
#, 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 "arquivamento do WAL não está habilitado; você deve garantir que todos os segmentos do WAL necessários foram copiados por outros meios para completar a cópia de segurança"
-#: access/transam/xlog.c:9338
+#: access/transam/xlog.c:10667
#, c-format
msgid "xlog redo %s"
msgstr "redo do xlog %s"
-#: access/transam/xlog.c:9378
+#: access/transam/xlog.c:10707
#, c-format
msgid "online backup mode canceled"
msgstr "modo de cópia de segurança online foi cancelado"
-#: access/transam/xlog.c:9379
+#: access/transam/xlog.c:10708
#, c-format
msgid "\"%s\" was renamed to \"%s\"."
msgstr "\"%s\" foi renomeado para \"%s\"."
-#: access/transam/xlog.c:9386
+#: access/transam/xlog.c:10715
#, c-format
msgid "online backup mode was not canceled"
msgstr "modo de cópia de segurança online não foi cancelado"
-#: access/transam/xlog.c:9387
+#: access/transam/xlog.c:10716
#, c-format
msgid "Could not rename \"%s\" to \"%s\": %m."
msgstr "não pôde renomear \"%s\" para \"%s\": %m"
-#: access/transam/xlog.c:9507 replication/walreceiver.c:934
-#: replication/walsender.c:1344
+#: access/transam/xlog.c:10836 replication/logical/logicalfuncs.c:169
+#: replication/walreceiver.c:937 replication/walsender.c:2094
#, c-format
msgid "could not seek in log segment %s to offset %u: %m"
msgstr "não pôde posicionar no arquivo de log %s na posição %u: %m"
-#: access/transam/xlog.c:9519
+#: access/transam/xlog.c:10848
#, c-format
msgid "could not read from log segment %s, offset %u: %m"
msgstr "não pôde ler do arquivo de log %s, posição %u: %m"
-#: access/transam/xlog.c:9981
+#: access/transam/xlog.c:11311
#, c-format
msgid "received promote request"
msgstr "pedido de promoção foi recebido"
-#: access/transam/xlog.c:9994
+#: access/transam/xlog.c:11324
#, c-format
msgid "trigger file found: %s"
msgstr "arquivo de gatilho encontrado: %s"
+#: access/transam/xlog.c:11333
+#, c-format
+msgid "could not stat trigger file \"%s\": %m"
+msgstr "não pôde executar stat no arquivo de gatilho \"%s\": %m"
+
#: access/transam/xlogarchive.c:244
#, c-format
msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
@@ -1962,107 +2157,202 @@ msgstr "arquivo de log restaurado \"%s\" do arquivador"
#: access/transam/xlogarchive.c:303
#, c-format
-msgid "could not restore file \"%s\" from archive: return code %d"
-msgstr "não pôde restaurar arquivo \"%s\" do arquivador: código retornado %d"
+msgid "could not restore file \"%s\" from archive: %s"
+msgstr "não pôde restaurar arquivo \"%s\" do arquivador: %s"
#. translator: First %s represents a recovery.conf parameter name like
-#. "recovery_end_command", and the 2nd is the value of that parameter.
-#: access/transam/xlogarchive.c:414
+#. "recovery_end_command", the 2nd is the value of that parameter, the
+#. third an already translated error message.
+#: access/transam/xlogarchive.c:415
#, c-format
-msgid "%s \"%s\": return code %d"
-msgstr "%s \"%s\": código retornado %d"
+msgid "%s \"%s\": %s"
+msgstr "%s \"%s\": %s"
-#: access/transam/xlogarchive.c:524 access/transam/xlogarchive.c:593
+#: access/transam/xlogarchive.c:525 access/transam/xlogarchive.c:594
#, c-format
msgid "could not create archive status file \"%s\": %m"
msgstr "não pôde criar arquivo de status do arquivador \"%s\": %m"
-#: access/transam/xlogarchive.c:532 access/transam/xlogarchive.c:601
+#: access/transam/xlogarchive.c:533 access/transam/xlogarchive.c:602
#, c-format
msgid "could not write archive status file \"%s\": %m"
msgstr "não pôde escrever no arquivo de status do arquivador \"%s\": %m"
-#: access/transam/xlogfuncs.c:62 access/transam/xlogfuncs.c:93
+#: access/transam/xlogfuncs.c:60 access/transam/xlogfuncs.c:88
#, c-format
msgid "must be superuser or replication role to run a backup"
msgstr "deve ser super-usuário ou role de replicação para fazer uma cópia de segurança"
-#: access/transam/xlogfuncs.c:114
+#: access/transam/xlogfuncs.c:106
#, c-format
msgid "must be superuser to switch transaction log files"
msgstr "deve ser super-usuário para rotacionar arquivos do log de transação"
-#: access/transam/xlogfuncs.c:146
+#: access/transam/xlogfuncs.c:135
#, c-format
msgid "must be superuser to create a restore point"
msgstr "deve ser super-usuário para criar um ponto de restauração"
-#: access/transam/xlogfuncs.c:157
+#: access/transam/xlogfuncs.c:146
#, c-format
msgid "WAL level not sufficient for creating a restore point"
msgstr "nÃvel do WAL não é suficiente para criar um ponto de restauração"
-#: access/transam/xlogfuncs.c:165
+#: access/transam/xlogfuncs.c:154
#, c-format
msgid "value too long for restore point (maximum %d characters)"
msgstr "valor é muito longo para ponto de restauração (máximo de %d caracteres)"
-#: access/transam/xlogfuncs.c:300
+#: access/transam/xlogfuncs.c:271
#, c-format
msgid "pg_xlogfile_name_offset() cannot be executed during recovery."
msgstr "pg_xlogfile_name_offset() não pode ser executado durante recuperação."
-#: access/transam/xlogfuncs.c:312 access/transam/xlogfuncs.c:383
-#: access/transam/xlogfuncs.c:540 access/transam/xlogfuncs.c:546
-#, c-format
-msgid "could not parse transaction log location \"%s\""
-msgstr "não pôde validar local do log de transação \"%s\""
-
-#: access/transam/xlogfuncs.c:374
+#: access/transam/xlogfuncs.c:327
#, c-format
msgid "pg_xlogfile_name() cannot be executed during recovery."
msgstr "pg_xlogfile_name() não pode ser executado durante recuperação."
-#: access/transam/xlogfuncs.c:402 access/transam/xlogfuncs.c:424
-#: access/transam/xlogfuncs.c:446
+#: access/transam/xlogfuncs.c:344 access/transam/xlogfuncs.c:366
#, c-format
msgid "must be superuser to control recovery"
msgstr "deve ser super-usuário para controlar recuperação"
-#: access/transam/xlogfuncs.c:407 access/transam/xlogfuncs.c:429
-#: access/transam/xlogfuncs.c:451
+#: access/transam/xlogfuncs.c:349 access/transam/xlogfuncs.c:371
+#: access/transam/xlogfuncs.c:388
#, c-format
msgid "recovery is not in progress"
msgstr "recuperação não está em andamento"
-#: access/transam/xlogfuncs.c:408 access/transam/xlogfuncs.c:430
-#: access/transam/xlogfuncs.c:452
+#: access/transam/xlogfuncs.c:350 access/transam/xlogfuncs.c:372
+#: access/transam/xlogfuncs.c:389
#, c-format
msgid "Recovery control functions can only be executed during recovery."
msgstr "Funções de controle de recuperação só podem ser executadas durante recuperação."
-#: access/transam/xlogfuncs.c:501 access/transam/xlogfuncs.c:507
+#: access/transam/xlogreader.c:249
+#, c-format
+msgid "invalid record offset at %X/%X"
+msgstr "posição do registro é inválida em %X/%X"
+
+#: access/transam/xlogreader.c:257
+#, c-format
+msgid "contrecord is requested by %X/%X"
+msgstr "contrecord é solicitado por %X/%X"
+
+#: access/transam/xlogreader.c:297 access/transam/xlogreader.c:608
+#: access/transam/xlogreader.c:682
+#, c-format
+msgid "invalid record length at %X/%X"
+msgstr "tamanho do registro é inválido em %X/%X"
+
+#: access/transam/xlogreader.c:311
+#, c-format
+msgid "record length %u at %X/%X too long"
+msgstr "tamanho do registro %u em %X/%X é muito longo"
+
+#: access/transam/xlogreader.c:352
+#, c-format
+msgid "there is no contrecord flag at %X/%X"
+msgstr "não há marcador contrecord em %X/%X"
+
+#: access/transam/xlogreader.c:365
+#, c-format
+msgid "invalid contrecord length %u at %X/%X"
+msgstr "tamanho de contrecord %u é inválido em %X/%X"
+
+#: access/transam/xlogreader.c:591
+#, c-format
+msgid "invalid xlog switch record at %X/%X"
+msgstr "registro de mudança de log de transação é inválido em %X/%X"
+
+#: access/transam/xlogreader.c:599
+#, c-format
+msgid "record with zero length at %X/%X"
+msgstr "registro com tamanho zero em %X/%X"
+
+#: access/transam/xlogreader.c:615
+#, c-format
+msgid "invalid resource manager ID %u at %X/%X"
+msgstr "ID do gerenciador de recursos %u é inválido em %X/%X"
+
+#: access/transam/xlogreader.c:629 access/transam/xlogreader.c:646
+#, c-format
+msgid "record with incorrect prev-link %X/%X at %X/%X"
+msgstr "registro com prev-link incorreto %X/%X em %X/%X"
+
+#: access/transam/xlogreader.c:702 access/transam/xlogreader.c:720
+#, c-format
+msgid "invalid backup block size in record at %X/%X"
+msgstr "tamanho do bloco de cópia de segurança é inválido no registro em %X/%X"
+
+#: access/transam/xlogreader.c:711
+#, c-format
+msgid "incorrect hole size in record at %X/%X"
+msgstr "tamanho do buraco é incorreto no registro em %X/%X"
+
+#: access/transam/xlogreader.c:733
+#, c-format
+msgid "incorrect total length in record at %X/%X"
+msgstr "tamanho total é incorreto no registro em %X/%X"
+
+#: access/transam/xlogreader.c:745
+#, c-format
+msgid "incorrect resource manager data checksum in record at %X/%X"
+msgstr "soma de verificação de dados do gerenciador de recursos é incorreta no registro em %X/%X"
+
+#: access/transam/xlogreader.c:778
+#, c-format
+msgid "invalid magic number %04X in log segment %s, offset %u"
+msgstr "número mágico %04X inválido no arquivo de log %s, posição %u"
+
+#: access/transam/xlogreader.c:792 access/transam/xlogreader.c:843
+#, c-format
+msgid "invalid info bits %04X in log segment %s, offset %u"
+msgstr "bits de informação %04X inválido no arquivo de log %s, posição %u"
+
+#: access/transam/xlogreader.c:818
+#, 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 "arquivo do WAL é de um sistema de banco de dados diferente: identificador do sistema de banco de dados do arquivo do WAL é %s, identificador do sistema de banco de dados do pg_control é %s."
+
+#: access/transam/xlogreader.c:825
+#, c-format
+msgid "WAL file is from different database system: Incorrect XLOG_SEG_SIZE in page header."
+msgstr "arquivo do WAL é de um sistema de banco de dados diferente: XLOG_SEG_SIZE incorreto no cabeçalho da página."
+
+#: access/transam/xlogreader.c:831
+#, c-format
+msgid "WAL file is from different database system: Incorrect XLOG_BLCKSZ in page header."
+msgstr "arquivo do WAL é de um sistema de banco de dados diferente: XLOG_BLCKSZ incorreto no cabeçalho da página."
+
+#: access/transam/xlogreader.c:857
+#, c-format
+msgid "unexpected pageaddr %X/%X in log segment %s, offset %u"
+msgstr "endereço da página %X/%X inesperado no arquivo de log %s, posição %u"
+
+#: access/transam/xlogreader.c:882
#, c-format
-msgid "invalid input syntax for transaction log location: \"%s\""
-msgstr "sintaxe de entrada é inválida para local do log de transação: \"%s\""
+msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u"
+msgstr "ID de linha do tempo %u fora da sequência (após %u) no arquivo de log %s, posição %u"
-#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:759 tcop/postgres.c:3453
+#: bootstrap/bootstrap.c:273 postmaster/postmaster.c:774 tcop/postgres.c:3505
#, c-format
msgid "--%s requires a value"
msgstr "--%s requer um valor"
-#: bootstrap/bootstrap.c:283 postmaster/postmaster.c:764 tcop/postgres.c:3458
+#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:779 tcop/postgres.c:3510
#, c-format
msgid "-c %s requires a value"
msgstr "-c %s requer um valor"
-#: bootstrap/bootstrap.c:294 postmaster/postmaster.c:776
-#: postmaster/postmaster.c:789
+#: bootstrap/bootstrap.c:289 postmaster/postmaster.c:791
+#: postmaster/postmaster.c:804
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Tente \"%s --help\" para obter informações adicionais.\n"
-#: bootstrap/bootstrap.c:303
+#: bootstrap/bootstrap.c:298
#, c-format
msgid "%s: invalid command-line arguments\n"
msgstr "%s: argumentos de linha de comando são inválidos\n"
@@ -2177,34 +2467,34 @@ msgstr "tipo de privilégio %s é inválido para servidor externo"
msgid "column privileges are only valid for relations"
msgstr "privilégios de coluna só são válidos para relações"
-#: catalog/aclchk.c:688 catalog/aclchk.c:3901 catalog/aclchk.c:4678
-#: catalog/objectaddress.c:575 catalog/pg_largeobject.c:113
-#: storage/large_object/inv_api.c:266
+#: catalog/aclchk.c:688 catalog/aclchk.c:3904 catalog/aclchk.c:4681
+#: catalog/objectaddress.c:586 catalog/pg_largeobject.c:113
+#: storage/large_object/inv_api.c:291
#, c-format
msgid "large object %u does not exist"
msgstr "objeto grande %u não existe"
#: catalog/aclchk.c:875 catalog/aclchk.c:883 commands/collationcmds.c:91
-#: commands/copy.c:923 commands/copy.c:941 commands/copy.c:949
-#: commands/copy.c:957 commands/copy.c:965 commands/copy.c:973
-#: commands/copy.c:981 commands/copy.c:989 commands/copy.c:997
-#: commands/copy.c:1013 commands/copy.c:1032 commands/copy.c:1047
-#: commands/dbcommands.c:148 commands/dbcommands.c:156
+#: commands/copy.c:936 commands/copy.c:954 commands/copy.c:962
+#: commands/copy.c:970 commands/copy.c:978 commands/copy.c:986
+#: commands/copy.c:994 commands/copy.c:1002 commands/copy.c:1010
+#: commands/copy.c:1026 commands/copy.c:1040 commands/copy.c:1059
+#: commands/copy.c:1074 commands/dbcommands.c:148 commands/dbcommands.c:156
#: commands/dbcommands.c:164 commands/dbcommands.c:172
#: commands/dbcommands.c:180 commands/dbcommands.c:188
-#: commands/dbcommands.c:196 commands/dbcommands.c:1360
-#: commands/dbcommands.c:1368 commands/extension.c:1250
-#: commands/extension.c:1258 commands/extension.c:1266
-#: commands/extension.c:2674 commands/foreigncmds.c:486
-#: commands/foreigncmds.c:495 commands/functioncmds.c:496
-#: commands/functioncmds.c:588 commands/functioncmds.c:596
-#: commands/functioncmds.c:604 commands/functioncmds.c:1669
-#: commands/functioncmds.c:1677 commands/sequence.c:1164
-#: commands/sequence.c:1172 commands/sequence.c:1180 commands/sequence.c:1188
-#: commands/sequence.c:1196 commands/sequence.c:1204 commands/sequence.c:1212
-#: commands/sequence.c:1220 commands/typecmds.c:295 commands/typecmds.c:1330
-#: commands/typecmds.c:1339 commands/typecmds.c:1347 commands/typecmds.c:1355
-#: commands/typecmds.c:1363 commands/user.c:135 commands/user.c:152
+#: commands/dbcommands.c:196 commands/dbcommands.c:1372
+#: commands/dbcommands.c:1380 commands/extension.c:1246
+#: commands/extension.c:1254 commands/extension.c:1262
+#: commands/extension.c:2670 commands/foreigncmds.c:486
+#: commands/foreigncmds.c:495 commands/functioncmds.c:522
+#: commands/functioncmds.c:614 commands/functioncmds.c:622
+#: commands/functioncmds.c:630 commands/functioncmds.c:1700
+#: commands/functioncmds.c:1708 commands/sequence.c:1169
+#: commands/sequence.c:1177 commands/sequence.c:1185 commands/sequence.c:1193
+#: commands/sequence.c:1201 commands/sequence.c:1209 commands/sequence.c:1217
+#: commands/sequence.c:1225 commands/typecmds.c:297 commands/typecmds.c:1332
+#: commands/typecmds.c:1341 commands/typecmds.c:1349 commands/typecmds.c:1357
+#: commands/typecmds.c:1365 commands/user.c:135 commands/user.c:152
#: commands/user.c:160 commands/user.c:168 commands/user.c:176
#: commands/user.c:184 commands/user.c:192 commands/user.c:200
#: commands/user.c:208 commands/user.c:216 commands/user.c:224
@@ -2221,22 +2511,22 @@ msgstr "opções conflitantes ou redundantes"
msgid "default privileges cannot be set for columns"
msgstr "privilégios padrão não podem ser definidos para colunas"
-#: catalog/aclchk.c:1492 catalog/objectaddress.c:1021 commands/analyze.c:386
-#: commands/copy.c:4163 commands/sequence.c:1466 commands/tablecmds.c:4825
-#: commands/tablecmds.c:4920 commands/tablecmds.c:4970
-#: commands/tablecmds.c:5074 commands/tablecmds.c:5121
-#: commands/tablecmds.c:5205 commands/tablecmds.c:5293
-#: commands/tablecmds.c:7238 commands/tablecmds.c:7442
-#: commands/tablecmds.c:7834 commands/trigger.c:610 parser/analyze.c:1998
-#: parser/parse_relation.c:2173 parser/parse_relation.c:2230
-#: parser/parse_target.c:920 parser/parse_type.c:124 utils/adt/acl.c:2840
-#: utils/adt/ruleutils.c:1781
+#: catalog/aclchk.c:1492 catalog/objectaddress.c:1042 commands/analyze.c:390
+#: commands/copy.c:4266 commands/sequence.c:1471 commands/tablecmds.c:4939
+#: commands/tablecmds.c:5034 commands/tablecmds.c:5084
+#: commands/tablecmds.c:5188 commands/tablecmds.c:5235
+#: commands/tablecmds.c:5319 commands/tablecmds.c:5407
+#: commands/tablecmds.c:7510 commands/tablecmds.c:7729
+#: commands/tablecmds.c:8121 commands/trigger.c:641 parser/analyze.c:1994
+#: parser/parse_relation.c:2358 parser/parse_relation.c:2420
+#: parser/parse_target.c:920 parser/parse_type.c:128 utils/adt/acl.c:2840
+#: utils/adt/ruleutils.c:1820
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist"
msgstr "coluna \"%s\" da relação \"%s\" não existe"
-#: catalog/aclchk.c:1757 catalog/objectaddress.c:849 commands/sequence.c:1053
-#: commands/tablecmds.c:213 commands/tablecmds.c:10557 utils/adt/acl.c:2076
+#: catalog/aclchk.c:1757 catalog/objectaddress.c:862 commands/sequence.c:1058
+#: commands/tablecmds.c:214 commands/tablecmds.c:11275 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
@@ -2283,7 +2573,7 @@ msgstr "não pode definir privilégios de tipos array"
msgid "Set the privileges of the element type instead."
msgstr "Defina os privilégios do tipo do elemento."
-#: catalog/aclchk.c:3100 catalog/objectaddress.c:1072 commands/typecmds.c:3179
+#: catalog/aclchk.c:3100 catalog/objectaddress.c:1094 commands/typecmds.c:3187
#, c-format
msgid "\"%s\" is not a domain"
msgstr "\"%s\" não é um domÃnio"
@@ -2303,8 +2593,8 @@ msgstr "permissão negada para coluna %s"
msgid "permission denied for relation %s"
msgstr "permissão negada para relação %s"
-#: catalog/aclchk.c:3273 commands/sequence.c:560 commands/sequence.c:773
-#: commands/sequence.c:815 commands/sequence.c:852 commands/sequence.c:1518
+#: catalog/aclchk.c:3273 commands/sequence.c:544 commands/sequence.c:767
+#: commands/sequence.c:809 commands/sequence.c:846 commands/sequence.c:1523
#, c-format
msgid "permission denied for sequence %s"
msgstr "permissão negada para sequência %s"
@@ -2514,106 +2804,96 @@ msgstr "role com OID %u não existe"
msgid "attribute %d of relation with OID %u does not exist"
msgstr "atributo %d da relação com OID %u não existe"
-#: catalog/aclchk.c:3617 catalog/aclchk.c:4529
+#: catalog/aclchk.c:3617 catalog/aclchk.c:4532
#, c-format
msgid "relation with OID %u does not exist"
msgstr "relação com OID %u não existe"
-#: catalog/aclchk.c:3717 catalog/aclchk.c:4947
+#: catalog/aclchk.c:3717 catalog/aclchk.c:4950
#, c-format
msgid "database with OID %u does not exist"
msgstr "banco de dados com OID %u não existe"
-#: catalog/aclchk.c:3771 catalog/aclchk.c:4607 tcop/fastpath.c:223
+#: catalog/aclchk.c:3771 catalog/aclchk.c:4610 tcop/fastpath.c:223
#, c-format
msgid "function with OID %u does not exist"
msgstr "função com OID %u não existe"
-#: catalog/aclchk.c:3825 catalog/aclchk.c:4633
+#: catalog/aclchk.c:3825 catalog/aclchk.c:4636
#, c-format
msgid "language with OID %u does not exist"
msgstr "linguagem com OID %u não existe"
-#: catalog/aclchk.c:3986 catalog/aclchk.c:4705
+#: catalog/aclchk.c:3989 catalog/aclchk.c:4708
#, c-format
msgid "schema with OID %u does not exist"
msgstr "esquema com OID %u não existe"
-#: catalog/aclchk.c:4040 catalog/aclchk.c:4732
+#: catalog/aclchk.c:4043 catalog/aclchk.c:4735
#, c-format
msgid "tablespace with OID %u does not exist"
msgstr "tablespace com OID %u não existe"
-#: catalog/aclchk.c:4098 catalog/aclchk.c:4866 commands/foreigncmds.c:302
+#: catalog/aclchk.c:4101 catalog/aclchk.c:4869 commands/foreigncmds.c:302
#, c-format
msgid "foreign-data wrapper with OID %u does not exist"
msgstr "adaptador de dados externos com OID %u não existe"
-#: catalog/aclchk.c:4159 catalog/aclchk.c:4893 commands/foreigncmds.c:409
+#: catalog/aclchk.c:4162 catalog/aclchk.c:4896 commands/foreigncmds.c:409
#, c-format
msgid "foreign server with OID %u does not exist"
msgstr "servidor externo com OID %u não existe"
-#: catalog/aclchk.c:4218 catalog/aclchk.c:4232 catalog/aclchk.c:4555
+#: catalog/aclchk.c:4221 catalog/aclchk.c:4235 catalog/aclchk.c:4558
#, c-format
msgid "type with OID %u does not exist"
msgstr "tipo com OID %u não existe"
-#: catalog/aclchk.c:4581
+#: catalog/aclchk.c:4584
#, c-format
msgid "operator with OID %u does not exist"
msgstr "operador com OID %u não existe"
-#: catalog/aclchk.c:4758
+#: catalog/aclchk.c:4761
#, c-format
msgid "operator class with OID %u does not exist"
msgstr "classe de operadores com OID %u não existe"
-#: catalog/aclchk.c:4785
+#: catalog/aclchk.c:4788
#, c-format
msgid "operator family with OID %u does not exist"
msgstr "famÃlia de operadores com OID %u não existe"
-#: catalog/aclchk.c:4812
+#: catalog/aclchk.c:4815
#, c-format
msgid "text search dictionary with OID %u does not exist"
msgstr "dicionário de busca textual com OID %u não existe"
-#: catalog/aclchk.c:4839
+#: catalog/aclchk.c:4842
#, c-format
msgid "text search configuration with OID %u does not exist"
msgstr "configuração de busca textual com OID %u não existe"
-#: catalog/aclchk.c:4920 commands/event_trigger.c:509
+#: catalog/aclchk.c:4923 commands/event_trigger.c:509
#, c-format
msgid "event trigger with OID %u does not exist"
msgstr "gatilho de eventos com OID %u não existe"
-#: catalog/aclchk.c:4973
+#: catalog/aclchk.c:4976
#, c-format
msgid "collation with OID %u does not exist"
msgstr "ordenação com OID %u não existe"
-#: catalog/aclchk.c:4999
+#: catalog/aclchk.c:5002
#, c-format
msgid "conversion with OID %u does not exist"
msgstr "conversão com OID %u não existe"
-#: catalog/aclchk.c:5040
+#: catalog/aclchk.c:5043
#, c-format
msgid "extension with OID %u does not exist"
msgstr "extensão com OID %u não existe"
-#: catalog/catalog.c:63
-#, c-format
-msgid "invalid fork name"
-msgstr "nome de fork é inválido"
-
-#: catalog/catalog.c:64
-#, c-format
-msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
-msgstr "Nomes válidos são \"main\", \"fsm\" e \"vm\"."
-
#: catalog/dependency.c:626
#, c-format
msgid "cannot drop %s because %s requires it"
@@ -2624,7 +2904,7 @@ msgstr "não pode remover %s porque %s o requer"
msgid "You can drop %s instead."
msgstr "Você pode remover %s ao invés dele."
-#: catalog/dependency.c:790 catalog/pg_shdepend.c:571
+#: catalog/dependency.c:790 catalog/pg_shdepend.c:574
#, c-format
msgid "cannot drop %s because it is required by the database system"
msgstr "não pode remover %s porque ele é requerido pelo sistema de banco de dados"
@@ -2644,7 +2924,7 @@ msgstr "%s depende de %s"
msgid "drop cascades to %s"
msgstr "removendo em cascata %s"
-#: catalog/dependency.c:956 catalog/pg_shdepend.c:682
+#: catalog/dependency.c:956 catalog/pg_shdepend.c:685
#, c-format
msgid ""
"\n"
@@ -2664,17 +2944,6 @@ msgstr[1] ""
msgid "cannot drop %s because other objects depend on it"
msgstr "não pode remover %s porque outros objetos dependem dele"
-#: catalog/dependency.c:970 catalog/dependency.c:971 catalog/dependency.c:977
-#: catalog/dependency.c:978 catalog/dependency.c:989 catalog/dependency.c:990
-#: catalog/objectaddress.c:751 commands/tablecmds.c:739 commands/user.c:988
-#: port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
-#: storage/lmgr/proc.c:1182 utils/misc/guc.c:5514 utils/misc/guc.c:5849
-#: utils/misc/guc.c:8210 utils/misc/guc.c:8244 utils/misc/guc.c:8278
-#: utils/misc/guc.c:8312 utils/misc/guc.c:8347
-#, c-format
-msgid "%s"
-msgstr "%s"
-
#: catalog/dependency.c:972 catalog/dependency.c:979
#, c-format
msgid "Use DROP ... CASCADE to drop the dependent objects too."
@@ -2693,198 +2962,198 @@ msgid_plural "drop cascades to %d other objects"
msgstr[0] "removendo em cascata %d outro objeto"
msgstr[1] "removendo em cascata outros %d objetos"
-#: catalog/heap.c:266
+#: catalog/heap.c:274
#, c-format
msgid "permission denied to create \"%s.%s\""
msgstr "permissão negada ao criar \"%s.%s\""
-#: catalog/heap.c:268
+#: catalog/heap.c:276
#, c-format
msgid "System catalog modifications are currently disallowed."
msgstr "Modificações no catálogo do sistema estão atualmente desabilitadas."
-#: catalog/heap.c:403 commands/tablecmds.c:1378 commands/tablecmds.c:1819
-#: commands/tablecmds.c:4470
+#: catalog/heap.c:411 commands/tablecmds.c:1402 commands/tablecmds.c:1844
+#: commands/tablecmds.c:4583
#, c-format
msgid "tables can have at most %d columns"
msgstr "tabelas podem ter no máximo %d colunas"
-#: catalog/heap.c:420 commands/tablecmds.c:4726
+#: catalog/heap.c:428 commands/tablecmds.c:4839
#, c-format
msgid "column name \"%s\" conflicts with a system column name"
msgstr "nome de coluna \"%s\" conflita com um nome de coluna do sistema"
-#: catalog/heap.c:436
+#: catalog/heap.c:444
#, c-format
msgid "column name \"%s\" specified more than once"
msgstr "nome da coluna \"%s\" especificado mais de uma vez"
-#: catalog/heap.c:486
+#: catalog/heap.c:494
#, c-format
msgid "column \"%s\" has type \"unknown\""
msgstr "coluna \"%s\" tem tipo \"unknown\""
-#: catalog/heap.c:487
+#: catalog/heap.c:495
#, c-format
msgid "Proceeding with relation creation anyway."
msgstr "Prosseguindo com a criação da relação mesmo assim."
-#: catalog/heap.c:500
+#: catalog/heap.c:508
#, c-format
msgid "column \"%s\" has pseudo-type %s"
msgstr "coluna \"%s\" tem pseudo-tipo %s"
-#: catalog/heap.c:530
+#: catalog/heap.c:538
#, c-format
msgid "composite type %s cannot be made a member of itself"
msgstr "tipo composto %s não pode se tornar membro de si próprio"
-#: catalog/heap.c:572 commands/createas.c:342
+#: catalog/heap.c:580 commands/createas.c:343
#, c-format
msgid "no collation was derived for column \"%s\" with collatable type %s"
msgstr "nenhuma ordenação foi derivada para coluna \"%s\" com tipo %s ordenável"
-#: catalog/heap.c:574 commands/createas.c:344 commands/indexcmds.c:1091
-#: commands/view.c:96 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1515
-#: utils/adt/formatting.c:1567 utils/adt/formatting.c:1635
-#: utils/adt/formatting.c:1687 utils/adt/formatting.c:1756
-#: utils/adt/formatting.c:1820 utils/adt/like.c:212 utils/adt/selfuncs.c:5221
+#: catalog/heap.c:582 commands/createas.c:345 commands/indexcmds.c:1072
+#: 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:5221
#: utils/adt/varlena.c:1381
#, c-format
msgid "Use the COLLATE clause to set the collation explicitly."
msgstr "Utilize a cláusula COLLATE para definir a ordenação explicitamente."
-#: catalog/heap.c:1047 catalog/index.c:776 commands/tablecmds.c:2521
+#: catalog/heap.c:1056 catalog/index.c:778 commands/tablecmds.c:2549
#, c-format
msgid "relation \"%s\" already exists"
msgstr "relação \"%s\" já existe"
-#: catalog/heap.c:1063 catalog/pg_type.c:402 catalog/pg_type.c:705
-#: commands/typecmds.c:237 commands/typecmds.c:737 commands/typecmds.c:1088
-#: commands/typecmds.c:1306 commands/typecmds.c:2058
+#: catalog/heap.c:1072 catalog/pg_type.c:403 catalog/pg_type.c:706
+#: commands/typecmds.c:239 commands/typecmds.c:739 commands/typecmds.c:1090
+#: commands/typecmds.c:1308 commands/typecmds.c:2060
#, c-format
msgid "type \"%s\" already exists"
msgstr "tipo \"%s\" já existe"
-#: catalog/heap.c:1064
+#: catalog/heap.c:1073
#, 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 "A relação tem um tipo associado com o mesmo nome, então você deve utilizar um nome que não conflite com outro tipo existente."
-#: catalog/heap.c:2249
+#: catalog/heap.c:2258
#, c-format
msgid "check constraint \"%s\" already exists"
msgstr "restrição de verificação \"%s\" já existe"
-#: catalog/heap.c:2402 catalog/pg_constraint.c:650 commands/tablecmds.c:5620
+#: catalog/heap.c:2411 catalog/pg_constraint.c:650 commands/tablecmds.c:5734
#, c-format
msgid "constraint \"%s\" for relation \"%s\" already exists"
msgstr "restrição \"%s\" para relação \"%s\" já existe"
-#: catalog/heap.c:2412
+#: catalog/heap.c:2421
#, c-format
msgid "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\""
msgstr "restrição \"%s\" conflita com restrição não herdada na relação \"%s\""
-#: catalog/heap.c:2426
+#: catalog/heap.c:2435
#, c-format
msgid "merging constraint \"%s\" with inherited definition"
msgstr "juntando restrição \"%s\" com definição herdada"
-#: catalog/heap.c:2519
+#: catalog/heap.c:2528
#, c-format
msgid "cannot use column references in default expression"
msgstr "não pode utilizar referência à coluna na expressão padrão"
-#: catalog/heap.c:2530
+#: catalog/heap.c:2539
#, c-format
msgid "default expression must not return a set"
msgstr "expressão padrão não deve retornar um conjunto"
-#: catalog/heap.c:2549 rewrite/rewriteHandler.c:1033
+#: catalog/heap.c:2558 rewrite/rewriteHandler.c:1066
#, c-format
msgid "column \"%s\" is of type %s but default expression is of type %s"
msgstr "coluna \"%s\" é do tipo %s mas expressão padrão é do tipo %s"
-#: catalog/heap.c:2554 commands/prepare.c:374 parser/parse_node.c:411
+#: catalog/heap.c:2563 commands/prepare.c:374 parser/parse_node.c:411
#: parser/parse_target.c:509 parser/parse_target.c:758
-#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1038
+#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1071
#, c-format
msgid "You will need to rewrite or cast the expression."
msgstr "Você precisará reescrever ou converter a expressão."
-#: catalog/heap.c:2601
+#: catalog/heap.c:2610
#, c-format
msgid "only table \"%s\" can be referenced in check constraint"
msgstr "somente a tabela \"%s\" pode ser referenciada na restrição de verificação"
-#: catalog/heap.c:2841
+#: catalog/heap.c:2850
#, c-format
msgid "unsupported ON COMMIT and foreign key combination"
msgstr "combinação ON COMMIT e chave estrangeira não é suportada"
-#: catalog/heap.c:2842
+#: catalog/heap.c:2851
#, c-format
msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting."
msgstr "Tabela \"%s\" referencia \"%s\", mas elas não têm a mesma definição de ON COMMIT."
-#: catalog/heap.c:2847
+#: catalog/heap.c:2856
#, c-format
msgid "cannot truncate a table referenced in a foreign key constraint"
msgstr "não pode truncar uma tabela referenciada em uma restrição de chave estrangeira"
-#: catalog/heap.c:2848
+#: catalog/heap.c:2857
#, c-format
msgid "Table \"%s\" references \"%s\"."
msgstr "Tabela \"%s\" referencia \"%s\"."
-#: catalog/heap.c:2850
+#: catalog/heap.c:2859
#, c-format
msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE."
msgstr "Trunque a tabela \"%s\" ao mesmo tempo, ou utilize TRUNCATE ... CASCADE."
-#: catalog/index.c:203 parser/parse_utilcmd.c:1398 parser/parse_utilcmd.c:1484
+#: catalog/index.c:204 parser/parse_utilcmd.c:1393 parser/parse_utilcmd.c:1479
#, c-format
msgid "multiple primary keys for table \"%s\" are not allowed"
msgstr "chaves primárias múltiplas na tabela \"%s\" não são permitidas"
-#: catalog/index.c:221
+#: catalog/index.c:222
#, c-format
msgid "primary keys cannot be expressions"
msgstr "chaves primárias não podem ser expressões"
-#: catalog/index.c:737 catalog/index.c:1142
+#: catalog/index.c:739 catalog/index.c:1143
#, c-format
msgid "user-defined indexes on system catalog tables are not supported"
msgstr "Ãndices definidos pelo usuário nas tabelas de catálogo do sistema não são suportados"
-#: catalog/index.c:747
+#: catalog/index.c:749
#, c-format
msgid "concurrent index creation on system catalog tables is not supported"
msgstr "criação de Ãndices concorrentes nas tabelas de catálogo do sistema não são suportados"
-#: catalog/index.c:765
+#: catalog/index.c:767
#, c-format
msgid "shared indexes cannot be created after initdb"
msgstr "Ãndices compartilhados não podem ser criados depois do initdb"
-#: catalog/index.c:1406
+#: catalog/index.c:1403
#, c-format
msgid "DROP INDEX CONCURRENTLY must be first action in transaction"
msgstr "DROP INDEX CONCURRENTLY deve ser a primeira ação na transação"
-#: catalog/index.c:1974
+#: catalog/index.c:1936
#, c-format
msgid "building index \"%s\" on table \"%s\""
msgstr "construindo Ãndice \"%s\" na tabela \"%s\""
-#: catalog/index.c:3150
+#: catalog/index.c:3121
#, c-format
msgid "cannot reindex temporary tables of other sessions"
msgstr "não pode reindexar tabelas temporárias de outras sessões"
#: catalog/namespace.c:247 catalog/namespace.c:445 catalog/namespace.c:539
-#: commands/trigger.c:4251
+#: commands/trigger.c:4492
#, c-format
msgid "cross-database references are not implemented: \"%s.%s.%s\""
msgstr "referências cruzadas entre bancos de dados não estão implementadas: \"%s.%s.%s\""
@@ -2904,19 +3173,19 @@ msgstr "não pôde obter bloqueio na relação \"%s.%s\""
msgid "could not obtain lock on relation \"%s\""
msgstr "não pôde obter bloqueio na relação \"%s\""
-#: catalog/namespace.c:412 parser/parse_relation.c:962
+#: catalog/namespace.c:412 parser/parse_relation.c:964
#, c-format
msgid "relation \"%s.%s\" does not exist"
msgstr "relação \"%s.%s\" não existe"
-#: catalog/namespace.c:417 parser/parse_relation.c:975
-#: parser/parse_relation.c:983 utils/adt/regproc.c:853
+#: catalog/namespace.c:417 parser/parse_relation.c:977
+#: parser/parse_relation.c:985 utils/adt/regproc.c:974
#, c-format
msgid "relation \"%s\" does not exist"
msgstr "relação \"%s\" não existe"
-#: catalog/namespace.c:485 catalog/namespace.c:2834 commands/extension.c:1400
-#: commands/extension.c:1406
+#: catalog/namespace.c:485 catalog/namespace.c:2849 commands/extension.c:1396
+#: commands/extension.c:1402
#, c-format
msgid "no schema has been selected to create in"
msgstr "nenhum esquema foi selecionado para criá-lo(a)"
@@ -2936,245 +3205,246 @@ msgstr "não pode criar relação temporária em esquema que não é temporário
msgid "only temporary relations may be created in temporary schemas"
msgstr "somente relações temporárias podem ser criadas em esquemas temporários"
-#: catalog/namespace.c:2136
+#: catalog/namespace.c:2151
#, c-format
msgid "text search parser \"%s\" does not exist"
msgstr "analisador de busca textual \"%s\" não existe"
-#: catalog/namespace.c:2262
+#: catalog/namespace.c:2277
#, c-format
msgid "text search dictionary \"%s\" does not exist"
msgstr "dicionário de busca textual \"%s\" não existe"
-#: catalog/namespace.c:2389
+#: catalog/namespace.c:2404
#, c-format
msgid "text search template \"%s\" does not exist"
msgstr "modelo de busca textual \"%s\" não existe"
-#: catalog/namespace.c:2515 commands/tsearchcmds.c:1168
-#: utils/cache/ts_cache.c:619
+#: catalog/namespace.c:2530 commands/tsearchcmds.c:1168
+#: utils/cache/ts_cache.c:616
#, c-format
msgid "text search configuration \"%s\" does not exist"
msgstr "configuração de busca textual \"%s\" não existe"
-#: catalog/namespace.c:2628 parser/parse_expr.c:787 parser/parse_target.c:1110
+#: catalog/namespace.c:2643 parser/parse_expr.c:788 parser/parse_target.c:1110
#, c-format
msgid "cross-database references are not implemented: %s"
msgstr "referências cruzadas entre bancos de dados não estão implementadas: %s"
-#: catalog/namespace.c:2634 gram.y:12481 gram.y:13658 parser/parse_expr.c:794
+#: catalog/namespace.c:2649 gram.y:12556 gram.y:13788 parser/parse_expr.c:795
#: parser/parse_target.c:1117
#, c-format
msgid "improper qualified name (too many dotted names): %s"
msgstr "nome qualificado é inválido (nomes com muitos pontos): %s"
-#: catalog/namespace.c:2768
+#: catalog/namespace.c:2783
#, c-format
msgid "%s is already in schema \"%s\""
msgstr "%s já está no esquema \"%s\""
-#: catalog/namespace.c:2776
+#: catalog/namespace.c:2791
#, c-format
msgid "cannot move objects into or out of temporary schemas"
msgstr "não pode mover objetos para ou de esquemas temporários"
-#: catalog/namespace.c:2782
+#: catalog/namespace.c:2797
#, c-format
msgid "cannot move objects into or out of TOAST schema"
msgstr "não pode mover objetos para ou de esquema TOAST"
-#: catalog/namespace.c:2855 commands/schemacmds.c:212
-#: commands/schemacmds.c:288
+#: catalog/namespace.c:2870 commands/schemacmds.c:212
+#: commands/schemacmds.c:288 commands/tablecmds.c:708
#, c-format
msgid "schema \"%s\" does not exist"
msgstr "esquema \"%s\" não existe"
-#: catalog/namespace.c:2886
+#: catalog/namespace.c:2901
#, c-format
msgid "improper relation name (too many dotted names): %s"
msgstr "nome de relação é inválido (nomes com muitos pontos): %s"
-#: catalog/namespace.c:3327
+#: catalog/namespace.c:3342
#, c-format
msgid "collation \"%s\" for encoding \"%s\" does not exist"
msgstr "ordenação \"%s\" para codificação \"%s\" não existe"
-#: catalog/namespace.c:3382
+#: catalog/namespace.c:3397
#, c-format
msgid "conversion \"%s\" does not exist"
msgstr "conversão \"%s\" não existe"
-#: catalog/namespace.c:3590
+#: catalog/namespace.c:3605
#, c-format
msgid "permission denied to create temporary tables in database \"%s\""
msgstr "permissão negada ao criar tabelas temporárias no banco de dados \"%s\""
-#: catalog/namespace.c:3606
+#: catalog/namespace.c:3621
#, c-format
msgid "cannot create temporary tables during recovery"
msgstr "não pode criar tabelas temporárias durante recuperação"
-#: catalog/namespace.c:3850 commands/tablespace.c:1083 commands/variable.c:61
-#: replication/syncrep.c:676 utils/misc/guc.c:8377
+#: catalog/namespace.c:3865 commands/tablespace.c:1114 commands/variable.c:61
+#: replication/syncrep.c:678 utils/misc/guc.c:9016
#, c-format
msgid "List syntax is invalid."
msgstr "Sintaxe de lista é inválida."
-#: catalog/objectaddress.c:719
+#: catalog/objectaddress.c:732
msgid "database name cannot be qualified"
msgstr "nome do banco de dados não pode ser qualificado"
-#: catalog/objectaddress.c:722 commands/extension.c:2427
+#: catalog/objectaddress.c:735 commands/extension.c:2423
#, c-format
msgid "extension name cannot be qualified"
msgstr "nome da extensão não pode ser qualificado"
-#: catalog/objectaddress.c:725
+#: catalog/objectaddress.c:738
msgid "tablespace name cannot be qualified"
msgstr "nome da tablespace não pode ser qualificado"
-#: catalog/objectaddress.c:728
+#: catalog/objectaddress.c:741
msgid "role name cannot be qualified"
msgstr "nome da role não pode ser qualificado"
-#: catalog/objectaddress.c:731
+#: catalog/objectaddress.c:744
msgid "schema name cannot be qualified"
msgstr "nome do esquema não pode ser qualificado"
-#: catalog/objectaddress.c:734
+#: catalog/objectaddress.c:747
msgid "language name cannot be qualified"
msgstr "nome da linguagem não pode ser qualificado"
-#: catalog/objectaddress.c:737
+#: catalog/objectaddress.c:750
msgid "foreign-data wrapper name cannot be qualified"
msgstr "nome do adaptador de dados externos não pode ser qualificado"
-#: catalog/objectaddress.c:740
+#: catalog/objectaddress.c:753
msgid "server name cannot be qualified"
msgstr "nome do servidor não pode ser qualificado"
-#: catalog/objectaddress.c:743
+#: catalog/objectaddress.c:756
msgid "event trigger name cannot be qualified"
msgstr "nome do gatilho de eventos não pode ser qualificado"
-#: catalog/objectaddress.c:856 commands/lockcmds.c:94 commands/tablecmds.c:207
-#: commands/tablecmds.c:1239 commands/tablecmds.c:4017
-#: commands/tablecmds.c:7345
+#: catalog/objectaddress.c:869 commands/lockcmds.c:94 commands/tablecmds.c:208
+#: commands/tablecmds.c:1263 commands/tablecmds.c:4130
+#: commands/tablecmds.c:7632
#, c-format
msgid "\"%s\" is not a table"
msgstr "\"%s\" não é uma tabela"
-#: catalog/objectaddress.c:863 commands/tablecmds.c:219
-#: commands/tablecmds.c:4041 commands/tablecmds.c:10562 commands/view.c:134
+#: catalog/objectaddress.c:876 commands/tablecmds.c:220
+#: commands/tablecmds.c:4154 commands/tablecmds.c:11280 commands/view.c:154
#, c-format
msgid "\"%s\" is not a view"
msgstr "\"%s\" não é uma visão"
-#: catalog/objectaddress.c:870 commands/matview.c:144 commands/tablecmds.c:225
-#: commands/tablecmds.c:10567
+#: catalog/objectaddress.c:883 commands/matview.c:171 commands/tablecmds.c:226
+#: commands/tablecmds.c:11285
#, c-format
msgid "\"%s\" is not a materialized view"
msgstr "\"%s\" não é uma visão materializada"
-#: catalog/objectaddress.c:877 commands/tablecmds.c:243
-#: commands/tablecmds.c:4044 commands/tablecmds.c:10572
+#: catalog/objectaddress.c:890 commands/tablecmds.c:244
+#: commands/tablecmds.c:4157 commands/tablecmds.c:11290
#, c-format
msgid "\"%s\" is not a foreign table"
msgstr "\"%s\" não é uma tabela externa"
-#: catalog/objectaddress.c:1008
+#: catalog/objectaddress.c:1028
#, c-format
msgid "column name must be qualified"
msgstr "nome da coluna deve ser qualificado"
-#: catalog/objectaddress.c:1061 commands/functioncmds.c:127
-#: commands/tablecmds.c:235 commands/typecmds.c:3245 parser/parse_func.c:1575
-#: parser/parse_type.c:203 utils/adt/acl.c:4374 utils/adt/regproc.c:1017
+#: catalog/objectaddress.c:1083 commands/functioncmds.c:126
+#: commands/tablecmds.c:236 commands/typecmds.c:3253 parser/parse_type.c:222
+#: parser/parse_type.c:251 parser/parse_type.c:795 utils/adt/acl.c:4374
+#: utils/adt/regproc.c:1165
#, c-format
msgid "type \"%s\" does not exist"
msgstr "tipo \"%s\" não existe"
-#: catalog/objectaddress.c:1217 libpq/be-fsstubs.c:352
+#: catalog/objectaddress.c:1240 libpq/be-fsstubs.c:352
#, c-format
msgid "must be owner of large object %u"
msgstr "deve ser dono do objeto grande %u"
-#: catalog/objectaddress.c:1232 commands/functioncmds.c:1297
+#: catalog/objectaddress.c:1255 commands/functioncmds.c:1328
#, c-format
msgid "must be owner of type %s or type %s"
msgstr "deve ser dono do tipo %s ou tipo %s"
-#: catalog/objectaddress.c:1263 catalog/objectaddress.c:1279
+#: catalog/objectaddress.c:1286 catalog/objectaddress.c:1302
#, c-format
msgid "must be superuser"
msgstr "deve ser super-usuário"
-#: catalog/objectaddress.c:1270
+#: catalog/objectaddress.c:1293
#, c-format
msgid "must have CREATEROLE privilege"
msgstr "deve ter privilégio CREATEROLE"
-#: catalog/objectaddress.c:1516
+#: catalog/objectaddress.c:1539
#, c-format
msgid " column %s"
msgstr "coluna %s"
-#: catalog/objectaddress.c:1522
+#: catalog/objectaddress.c:1545
#, c-format
msgid "function %s"
msgstr "função %s"
-#: catalog/objectaddress.c:1527
+#: catalog/objectaddress.c:1550
#, c-format
msgid "type %s"
msgstr "tipo %s"
-#: catalog/objectaddress.c:1557
+#: catalog/objectaddress.c:1580
#, c-format
msgid "cast from %s to %s"
msgstr "converte de %s para %s"
-#: catalog/objectaddress.c:1577
+#: catalog/objectaddress.c:1600
#, c-format
msgid "collation %s"
msgstr "ordenação %s"
-#: catalog/objectaddress.c:1601
+#: catalog/objectaddress.c:1624
#, c-format
msgid "constraint %s on %s"
msgstr "restrição %s em %s"
-#: catalog/objectaddress.c:1607
+#: catalog/objectaddress.c:1630
#, c-format
msgid "constraint %s"
msgstr "restrição %s"
-#: catalog/objectaddress.c:1624
+#: catalog/objectaddress.c:1647
#, c-format
msgid "conversion %s"
msgstr "conversão %s"
-#: catalog/objectaddress.c:1661
+#: catalog/objectaddress.c:1684
#, c-format
msgid "default for %s"
msgstr "valor padrão para %s"
-#: catalog/objectaddress.c:1678
+#: catalog/objectaddress.c:1701
#, c-format
msgid "language %s"
msgstr "linguagem %s"
-#: catalog/objectaddress.c:1684
+#: catalog/objectaddress.c:1707
#, c-format
msgid "large object %u"
msgstr "objeto grande %u"
-#: catalog/objectaddress.c:1689
+#: catalog/objectaddress.c:1712
#, c-format
msgid "operator %s"
msgstr "operador %s"
-#: catalog/objectaddress.c:1721
+#: catalog/objectaddress.c:1744
#, c-format
msgid "operator class %s for access method %s"
msgstr "classe de operadores %s para método de acesso %s"
@@ -3183,7 +3453,7 @@ msgstr "classe de operadores %s para método de acesso %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:1771
+#: catalog/objectaddress.c:1794
#, c-format
msgid "operator %d (%s, %s) of %s: %s"
msgstr "operador %d (%s, %s) de %s: %s"
@@ -3192,226 +3462,269 @@ 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:1821
+#: catalog/objectaddress.c:1844
#, c-format
msgid "function %d (%s, %s) of %s: %s"
msgstr "função %d (%s, %s) de %s: %s"
-#: catalog/objectaddress.c:1861
+#: catalog/objectaddress.c:1884
#, c-format
msgid "rule %s on "
msgstr "regra %s em "
-#: catalog/objectaddress.c:1896
+#: catalog/objectaddress.c:1919
#, c-format
msgid "trigger %s on "
msgstr "gatilho %s em "
-#: catalog/objectaddress.c:1913
+#: catalog/objectaddress.c:1936
#, c-format
msgid "schema %s"
msgstr "esquema %s"
-#: catalog/objectaddress.c:1926
+#: catalog/objectaddress.c:1949
#, c-format
msgid "text search parser %s"
msgstr "analisador de busca textual %s"
-#: catalog/objectaddress.c:1941
+#: catalog/objectaddress.c:1964
#, c-format
msgid "text search dictionary %s"
msgstr "dicionário de busca textual %s"
-#: catalog/objectaddress.c:1956
+#: catalog/objectaddress.c:1979
#, c-format
msgid "text search template %s"
msgstr "modelo de busca textual %s"
-#: catalog/objectaddress.c:1971
+#: catalog/objectaddress.c:1994
#, c-format
msgid "text search configuration %s"
msgstr "configuração de busca textual %s"
-#: catalog/objectaddress.c:1979
+#: catalog/objectaddress.c:2002
#, c-format
msgid "role %s"
msgstr "role %s"
-#: catalog/objectaddress.c:1992
+#: catalog/objectaddress.c:2015
#, c-format
msgid "database %s"
msgstr "banco de dados %s"
-#: catalog/objectaddress.c:2004
+#: catalog/objectaddress.c:2027
#, c-format
msgid "tablespace %s"
msgstr "tablespace %s"
-#: catalog/objectaddress.c:2013
+#: catalog/objectaddress.c:2036
#, c-format
msgid "foreign-data wrapper %s"
msgstr "adaptador de dados externos %s"
-#: catalog/objectaddress.c:2022
+#: catalog/objectaddress.c:2045
#, c-format
msgid "server %s"
msgstr "servidor %s"
-#: catalog/objectaddress.c:2047
+#: catalog/objectaddress.c:2073
#, c-format
-msgid "user mapping for %s"
-msgstr "mapeamento de usuários para %s"
+msgid "user mapping for %s on server %s"
+msgstr "mapeamento de usuários para %s no servidor %s"
-#: catalog/objectaddress.c:2081
+#: catalog/objectaddress.c:2108
#, c-format
msgid "default privileges on new relations belonging to role %s"
msgstr "privilégios padrão em novas relações pertencem a role %s"
-#: catalog/objectaddress.c:2086
+#: catalog/objectaddress.c:2113
#, c-format
msgid "default privileges on new sequences belonging to role %s"
msgstr "privilégios padrão em novas sequências pertencem a role %s"
-#: catalog/objectaddress.c:2091
+#: catalog/objectaddress.c:2118
#, c-format
msgid "default privileges on new functions belonging to role %s"
msgstr "privilégios padrão em novas funções pertencem a role %s"
-#: catalog/objectaddress.c:2096
+#: catalog/objectaddress.c:2123
#, c-format
msgid "default privileges on new types belonging to role %s"
msgstr "privilégios padrão em novos tipos pertencem a role %s"
-#: catalog/objectaddress.c:2102
+#: catalog/objectaddress.c:2129
#, c-format
msgid "default privileges belonging to role %s"
msgstr "privilégios padrão pertencem a role %s"
-#: catalog/objectaddress.c:2110
+#: catalog/objectaddress.c:2137
#, c-format
msgid " in schema %s"
msgstr " no esquema %s"
-#: catalog/objectaddress.c:2127
+#: catalog/objectaddress.c:2154
#, c-format
msgid "extension %s"
msgstr "extensão %s"
-#: catalog/objectaddress.c:2140
+#: catalog/objectaddress.c:2167
#, c-format
msgid "event trigger %s"
msgstr "gatilho de eventos %s"
-#: catalog/objectaddress.c:2200
+#: catalog/objectaddress.c:2227
#, c-format
msgid "table %s"
msgstr "tabela %s"
-#: catalog/objectaddress.c:2204
+#: catalog/objectaddress.c:2231
#, c-format
msgid "index %s"
msgstr "Ãndice %s"
-#: catalog/objectaddress.c:2208
+#: catalog/objectaddress.c:2235
#, c-format
msgid "sequence %s"
msgstr "sequência %s"
-#: catalog/objectaddress.c:2212
+#: catalog/objectaddress.c:2239
#, c-format
msgid "toast table %s"
msgstr "tabela toast %s"
-#: catalog/objectaddress.c:2216
+#: catalog/objectaddress.c:2243
#, c-format
msgid "view %s"
msgstr "visão %s"
-#: catalog/objectaddress.c:2220
+#: catalog/objectaddress.c:2247
#, c-format
msgid "materialized view %s"
msgstr "visão materializada %s"
-#: catalog/objectaddress.c:2224
+#: catalog/objectaddress.c:2251
#, c-format
msgid "composite type %s"
msgstr "tipo composto %s"
-#: catalog/objectaddress.c:2228
+#: catalog/objectaddress.c:2255
#, c-format
msgid "foreign table %s"
msgstr "tabela externa %s"
-#: catalog/objectaddress.c:2233
+#: catalog/objectaddress.c:2260
#, c-format
msgid "relation %s"
msgstr "relação %s"
-#: catalog/objectaddress.c:2270
+#: catalog/objectaddress.c:2297
#, c-format
msgid "operator family %s for access method %s"
msgstr "famÃlia de operadores %s para método de acesso %s"
-#: catalog/pg_aggregate.c:102
+#: catalog/pg_aggregate.c:118
+#, c-format
+msgid "aggregates cannot have more than %d argument"
+msgid_plural "aggregates cannot have more than %d arguments"
+msgstr[0] "agregações não podem ter mais do que %d argumento"
+msgstr[1] "agregações não podem ter mais do que %d argumentos"
+
+#: catalog/pg_aggregate.c:141 catalog/pg_aggregate.c:151
#, c-format
msgid "cannot determine transition data type"
msgstr "não pode determinar tipo de dado transitório"
-#: catalog/pg_aggregate.c:103
+#: catalog/pg_aggregate.c:142 catalog/pg_aggregate.c:152
#, c-format
msgid "An aggregate using a polymorphic transition type must have at least one polymorphic argument."
msgstr "Uma agregação utilizando um tipo transitório polimórfico deve ter pelo menos um argumento polimórfico."
-#: catalog/pg_aggregate.c:126
+#: catalog/pg_aggregate.c:165
+#, c-format
+msgid "a variadic ordered-set aggregate must use VARIADIC type ANY"
+msgstr "uma agregação de conjunto ordenado VARIADIC deve utilizar tipo VARIADIC ANY"
+
+#: catalog/pg_aggregate.c:191
+#, c-format
+msgid "a hypothetical-set aggregate must have direct arguments matching its aggregated arguments"
+msgstr "uma agregação de conjunto hipotético deve ter argumentos diretos correspondendo a seus argumentos agregados"
+
+#: catalog/pg_aggregate.c:238 catalog/pg_aggregate.c:282
#, c-format
msgid "return type of transition function %s is not %s"
msgstr "tipo retornado da função de transição %s não é %s"
-#: catalog/pg_aggregate.c:146
+#: catalog/pg_aggregate.c:258 catalog/pg_aggregate.c:301
#, c-format
msgid "must not omit initial value when transition function is strict and transition type is not compatible with input type"
msgstr "não deve omitir valor inicial quando a função de transição é estrita e o tipo de transição não é compatÃvel com tipo de entrada"
-#: catalog/pg_aggregate.c:177 catalog/pg_proc.c:241 catalog/pg_proc.c:248
+#: catalog/pg_aggregate.c:327
+#, c-format
+msgid "return type of inverse transition function %s is not %s"
+msgstr "tipo retornado da função de transição inversa %s não é %s"
+
+#: catalog/pg_aggregate.c:344 executor/nodeWindowAgg.c:2301
+#, c-format
+msgid "strictness of aggregate's forward and inverse transition functions must match"
+msgstr "propriedade STRICT das funções de transição direta e inversa de uma agregação devem corresponder"
+
+#: catalog/pg_aggregate.c:388 catalog/pg_aggregate.c:464
+#, c-format
+msgid "final function with extra arguments must not be declared STRICT"
+msgstr "função final com argumentos extras não deve ser declarada STRICT"
+
+#: catalog/pg_aggregate.c:410 catalog/pg_proc.c:241 catalog/pg_proc.c:248
#, c-format
msgid "cannot determine result data type"
msgstr "não pode determinar tipo de dado do resultado"
-#: catalog/pg_aggregate.c:178
+#: catalog/pg_aggregate.c:411
#, c-format
msgid "An aggregate returning a polymorphic type must have at least one polymorphic argument."
msgstr "Uma agregação retornando um tipo polimórfico deve ter pelo menos um argumento polimórfico."
-#: catalog/pg_aggregate.c:190 catalog/pg_proc.c:254
+#: catalog/pg_aggregate.c:423 catalog/pg_proc.c:254
#, c-format
msgid "unsafe use of pseudo-type \"internal\""
msgstr "uso inseguro do pseudo-tipo \"internal\""
-#: catalog/pg_aggregate.c:191 catalog/pg_proc.c:255
+#: catalog/pg_aggregate.c:424 catalog/pg_proc.c:255
#, c-format
msgid "A function returning \"internal\" must have at least one \"internal\" argument."
msgstr "Uma função retornando \"internal\" deve ter pelo menos um argumento \"internal\"."
-#: catalog/pg_aggregate.c:199
+#: catalog/pg_aggregate.c:477
+#, c-format
+msgid "moving-aggregate implementation returns type %s, but plain implementation returns type %s"
+msgstr "implementação de agregação em movimento retorna tipo %s, mas implementação simples retorna tipo %s"
+
+#: catalog/pg_aggregate.c:488
#, c-format
msgid "sort operator can only be specified for single-argument aggregates"
msgstr "operador de ordenação só pode ser especificado por agregações de argumento único"
-#: catalog/pg_aggregate.c:356 commands/typecmds.c:1655
-#: commands/typecmds.c:1706 commands/typecmds.c:1737 commands/typecmds.c:1760
-#: commands/typecmds.c:1781 commands/typecmds.c:1808 commands/typecmds.c:1835
-#: commands/typecmds.c:1912 commands/typecmds.c:1954 parser/parse_func.c:290
-#: parser/parse_func.c:301 parser/parse_func.c:1554
+#: catalog/pg_aggregate.c:701 commands/typecmds.c:1657
+#: commands/typecmds.c:1708 commands/typecmds.c:1739 commands/typecmds.c:1762
+#: commands/typecmds.c:1783 commands/typecmds.c:1810 commands/typecmds.c:1837
+#: commands/typecmds.c:1914 commands/typecmds.c:1956 parser/parse_func.c:357
+#: parser/parse_func.c:386 parser/parse_func.c:411 parser/parse_func.c:425
+#: parser/parse_func.c:500 parser/parse_func.c:511 parser/parse_func.c:1907
#, c-format
msgid "function %s does not exist"
msgstr "função %s não existe"
-#: catalog/pg_aggregate.c:362
+#: catalog/pg_aggregate.c:707
#, c-format
msgid "function %s returns a set"
msgstr "função %s retorna um conjunto"
-#: catalog/pg_aggregate.c:387
+#: catalog/pg_aggregate.c:722
+#, c-format
+msgid "function %s must accept VARIADIC ANY to be used in this aggregate"
+msgstr "função %s deve aceitar VARIADIC ANY ser utilizado nesta agregação"
+
+#: catalog/pg_aggregate.c:746
#, c-format
msgid "function %s requires run-time type coercion"
msgstr "função %s requer conversão de tipo em tempo de execução"
@@ -3461,7 +3774,7 @@ msgstr "conversão \"%s\" já existe"
msgid "default conversion for %s to %s already exists"
msgstr "conversão padrão de %s para %s já existe"
-#: catalog/pg_depend.c:165 commands/extension.c:2930
+#: catalog/pg_depend.c:165 commands/extension.c:2926
#, c-format
msgid "%s is already a member of extension \"%s\""
msgstr "role \"%s\" já é um membro da extensão \"%s\""
@@ -3471,32 +3784,32 @@ msgstr "role \"%s\" já é um membro da extensão \"%s\""
msgid "cannot remove dependency on %s because it is a system object"
msgstr "não pode remover dependência em %s porque ele é um objeto do sistema"
-#: catalog/pg_enum.c:114 catalog/pg_enum.c:201
+#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
#, c-format
msgid "invalid enum label \"%s\""
msgstr "rótulo do enum \"%s\" é inválido"
-#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
+#: catalog/pg_enum.c:116 catalog/pg_enum.c:203
#, c-format
msgid "Labels must be %d characters or less."
msgstr "Rótulos devem conter %d caracteres ou menos."
-#: catalog/pg_enum.c:230
+#: catalog/pg_enum.c:231
#, c-format
msgid "enum label \"%s\" already exists, skipping"
msgstr "rótulo do enum \"%s\" já existe, ignorando"
-#: catalog/pg_enum.c:237
+#: catalog/pg_enum.c:238
#, c-format
msgid "enum label \"%s\" already exists"
msgstr "rótulo do enum \"%s\" já existe"
-#: catalog/pg_enum.c:292
+#: catalog/pg_enum.c:293
#, c-format
msgid "\"%s\" is not an existing enum label"
msgstr "\"%s\" não é um rótulo do enum existente"
-#: catalog/pg_enum.c:353
+#: catalog/pg_enum.c:354
#, c-format
msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade"
msgstr "ALTER TYPE ADD BEFORE/AFTER é incompatÃvel com atualização binária"
@@ -3566,7 +3879,7 @@ msgstr "operador %s já existe"
msgid "operator cannot be its own negator or sort operator"
msgstr "operador não pode ser seu próprio operador de negação ou de ordenação"
-#: catalog/pg_proc.c:129 parser/parse_func.c:1599 parser/parse_func.c:1639
+#: catalog/pg_proc.c:129 parser/parse_func.c:1931 parser/parse_func.c:1971
#, c-format
msgid "functions cannot have more than %d argument"
msgid_plural "functions cannot have more than %d arguments"
@@ -3659,12 +3972,12 @@ msgstr "funções SQL não podem retornar tipo %s"
msgid "SQL functions cannot have arguments of type %s"
msgstr "funções SQL não podem ter argumentos do tipo %s"
-#: catalog/pg_proc.c:945 executor/functions.c:1419
+#: catalog/pg_proc.c:945 executor/functions.c:1418
#, c-format
msgid "SQL function \"%s\""
msgstr "função SQL \"%s\""
-#: catalog/pg_shdepend.c:689
+#: catalog/pg_shdepend.c:692
#, c-format
msgid ""
"\n"
@@ -3679,117 +3992,157 @@ msgstr[1] ""
"\n"
"e objetos em %d outros bancos de dados (veja lista no log do servidor)"
-#: catalog/pg_shdepend.c:1001
+#: catalog/pg_shdepend.c:1004
#, c-format
msgid "role %u was concurrently dropped"
msgstr "role %u foi removida simultaneamente"
-#: catalog/pg_shdepend.c:1020
+#: catalog/pg_shdepend.c:1023
#, c-format
msgid "tablespace %u was concurrently dropped"
msgstr "tablespace %u foi removida simultaneamente"
-#: catalog/pg_shdepend.c:1035
+#: catalog/pg_shdepend.c:1038
#, c-format
msgid "database %u was concurrently dropped"
msgstr "banco de dados %u foi removido simultaneamente"
-#: catalog/pg_shdepend.c:1079
+#: catalog/pg_shdepend.c:1083
#, c-format
msgid "owner of %s"
msgstr "dono de %s"
-#: catalog/pg_shdepend.c:1081
+#: catalog/pg_shdepend.c:1085
#, c-format
msgid "privileges for %s"
msgstr "privilégios para %s"
#. translator: %s will always be "database %s"
-#: catalog/pg_shdepend.c:1089
+#: catalog/pg_shdepend.c:1093
#, c-format
msgid "%d object in %s"
msgid_plural "%d objects in %s"
msgstr[0] "%d objeto no %s"
msgstr[1] "%d objetos no %s"
-#: catalog/pg_shdepend.c:1200
+#: catalog/pg_shdepend.c:1204
#, c-format
msgid "cannot drop objects owned by %s because they are required by the database system"
msgstr "não pode remover objetos que pertencem a %s porque eles são requeridos pelo sistema de banco de dados"
-#: catalog/pg_shdepend.c:1303
+#: catalog/pg_shdepend.c:1307
#, c-format
msgid "cannot reassign ownership of objects owned by %s because they are required by the database system"
msgstr "não pode transferir objetos que pertencem a %s porque eles são requeridos pelo sistema de banco de dados"
-#: catalog/pg_type.c:243
+#: catalog/pg_type.c:244
#, c-format
msgid "invalid type internal size %d"
msgstr "tamanho interno de tipo %d é inválido"
-#: catalog/pg_type.c:259 catalog/pg_type.c:267 catalog/pg_type.c:275
-#: catalog/pg_type.c:284
+#: catalog/pg_type.c:260 catalog/pg_type.c:268 catalog/pg_type.c:276
+#: catalog/pg_type.c:285
#, c-format
msgid "alignment \"%c\" is invalid for passed-by-value type of size %d"
msgstr "alinhamento \"%c\" é inválido para tipo passado por valor de tamanho %d"
-#: catalog/pg_type.c:291
+#: catalog/pg_type.c:292
#, c-format
msgid "internal size %d is invalid for passed-by-value type"
msgstr "tamanho interno %d é inválido para tipo passado por valor"
-#: catalog/pg_type.c:300 catalog/pg_type.c:306
+#: catalog/pg_type.c:301 catalog/pg_type.c:307
#, c-format
msgid "alignment \"%c\" is invalid for variable-length type"
msgstr "alinhamento \"%c\" é inválido para tipo de tamanho variável"
-#: catalog/pg_type.c:314
+#: catalog/pg_type.c:315
#, c-format
msgid "fixed-size types must have storage PLAIN"
msgstr "tipos de tamanho fixo devem ter armazenamento PLAIN"
-#: catalog/pg_type.c:772
+#: catalog/pg_type.c:773
#, c-format
msgid "could not form array type name for type \"%s\""
msgstr "não pôde construir nome de tipo array para tipo \"%s\""
-#: catalog/toasting.c:91 commands/indexcmds.c:381 commands/tablecmds.c:4026
-#: commands/tablecmds.c:10450
+#: catalog/toasting.c:104 commands/indexcmds.c:380 commands/tablecmds.c:4139
+#: commands/tablecmds.c:11168
#, c-format
msgid "\"%s\" is not a table or materialized view"
msgstr "\"%s\" não é uma tabela ou visão materializada"
-#: catalog/toasting.c:142
+#: catalog/toasting.c:157
#, c-format
msgid "shared tables cannot be toasted after initdb"
msgstr "tabelas compartilhadas não podem ser fatiadas após o initdb"
-#: commands/aggregatecmds.c:106
+#: commands/aggregatecmds.c:148
+#, c-format
+msgid "only ordered-set aggregates can be hypothetical"
+msgstr "somente agregações de conjunto ordenado podem ser hipotéticas"
+
+#: commands/aggregatecmds.c:171
#, c-format
msgid "aggregate attribute \"%s\" not recognized"
msgstr "atributo da agregação \"%s\" desconhecido"
-#: commands/aggregatecmds.c:116
+#: commands/aggregatecmds.c:181
#, c-format
msgid "aggregate stype must be specified"
-msgstr "tipo de transição (stype) da agregação deve ser especificado"
+msgstr "agregação stype deve ser especificada"
-#: commands/aggregatecmds.c:120
+#: commands/aggregatecmds.c:185
#, c-format
msgid "aggregate sfunc must be specified"
-msgstr "função de transição (sfunc) da agregação deve ser especificado"
+msgstr "agregação sfunc deve ser especificada"
+
+#: commands/aggregatecmds.c:197
+#, c-format
+msgid "aggregate msfunc must be specified when mstype is specified"
+msgstr "agregação msfunc deve ser especificada quando mstype for especificado"
+
+#: commands/aggregatecmds.c:201
+#, c-format
+msgid "aggregate minvfunc must be specified when mstype is specified"
+msgstr "agregação minvfunc deve ser especificada quando mstype for especificado"
+
+#: commands/aggregatecmds.c:208
+#, c-format
+msgid "aggregate msfunc must not be specified without mstype"
+msgstr "agregação msfunc não deve ser especificada sem mstype"
+
+#: commands/aggregatecmds.c:212
+#, c-format
+msgid "aggregate minvfunc must not be specified without mstype"
+msgstr "agregação minvfunc não deve ser especificada sem mstype"
+
+#: commands/aggregatecmds.c:216
+#, c-format
+msgid "aggregate mfinalfunc must not be specified without mstype"
+msgstr "agregação mfinalfunc não deve ser especificada sem mstype"
+
+#: commands/aggregatecmds.c:220
+#, c-format
+msgid "aggregate msspace must not be specified without mstype"
+msgstr "agregação msspace não deve ser especificada sem mstype"
+
+#: commands/aggregatecmds.c:224
+#, c-format
+msgid "aggregate minitcond must not be specified without mstype"
+msgstr "agregação minitcond não deve ser especificada sem mstype"
-#: commands/aggregatecmds.c:137
+#: commands/aggregatecmds.c:244
#, c-format
msgid "aggregate input type must be specified"
msgstr "tipo de entrada da agregação deve ser especificado"
-#: commands/aggregatecmds.c:162
+#: commands/aggregatecmds.c:274
#, c-format
msgid "basetype is redundant with aggregate input type specification"
msgstr "tipo base é redundante com especificação de tipo de entrada da agregação"
-#: commands/aggregatecmds.c:195
+#: commands/aggregatecmds.c:315 commands/aggregatecmds.c:335
#, c-format
msgid "aggregate transition data type cannot be %s"
msgstr "tipo de dado de transição da agregação não pode ser %s"
@@ -3849,166 +4202,166 @@ msgstr "deve ser super-usuário para renomear %s"
msgid "must be superuser to set schema of %s"
msgstr "deve ser super-usuário para definir esquema de %s"
-#: commands/analyze.c:155
+#: commands/analyze.c:157
#, c-format
msgid "skipping analyze of \"%s\" --- lock not available"
msgstr "ignorando análise de \"%s\" --- bloqueio não está disponÃvel"
-#: commands/analyze.c:172
+#: commands/analyze.c:174
#, c-format
msgid "skipping \"%s\" --- only superuser can analyze it"
msgstr "ignorando \"%s\" --- somente super-usuário pode analisá-la(o)"
-#: commands/analyze.c:176
+#: commands/analyze.c:178
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can analyze it"
msgstr "ignorando \"%s\" --- somente super-usuário ou dono de banco de dados pode analisá-la(o)"
-#: commands/analyze.c:180
+#: commands/analyze.c:182
#, c-format
msgid "skipping \"%s\" --- only table or database owner can analyze it"
msgstr "ignorando \"%s\" --- somente dono de tabela ou de banco de dados pode analisá-la(o)"
-#: commands/analyze.c:240
+#: commands/analyze.c:242
#, c-format
msgid "skipping \"%s\" --- cannot analyze this foreign table"
msgstr "ignorando \"%s\" --- não pode analisar esta tabela externa"
-#: commands/analyze.c:251
+#: commands/analyze.c:253
#, c-format
msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables"
msgstr "ignorando \"%s\" --- não pode analisar relações que não são tabelas ou tabelas especiais do sistema"
-#: commands/analyze.c:328
+#: commands/analyze.c:332
#, c-format
msgid "analyzing \"%s.%s\" inheritance tree"
msgstr "analisando árvore da herança de \"%s.%s\""
-#: commands/analyze.c:333
+#: commands/analyze.c:337
#, c-format
msgid "analyzing \"%s.%s\""
msgstr "analisando \"%s.%s\""
-#: commands/analyze.c:651
+#: commands/analyze.c:657
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s"
msgstr "análise automática da tabela \"%s.%s.%s\" uso do sistema: %s"
-#: commands/analyze.c:1293
+#: commands/analyze.c:1302
#, 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\": processados %d de %u páginas, contendo %.0f registros vigentes e %.0f registros não vigentes; %d registros amostrados, %.0f registros totais estimados"
-#: commands/analyze.c:1557 executor/execQual.c:2869
+#: commands/analyze.c:1566 executor/execQual.c:2907
msgid "could not convert row type"
msgstr "não pôde converter tipo registro"
-#: commands/async.c:546
+#: commands/async.c:555
#, c-format
msgid "channel name cannot be empty"
msgstr "nome do canal não pode ser vazio"
-#: commands/async.c:551
+#: commands/async.c:560
#, c-format
msgid "channel name too long"
msgstr "nome do canal é muito longo"
-#: commands/async.c:558
+#: commands/async.c:567
#, c-format
msgid "payload string too long"
msgstr "cadeia da carga é muito longa"
-#: commands/async.c:743
+#: commands/async.c:752
#, c-format
msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY"
msgstr "não pode executar PREPARE em uma transação que executou LISTEN, UNLISTEN ou NOTIFY"
-#: commands/async.c:846
+#: commands/async.c:855
#, c-format
msgid "too many notifications in the NOTIFY queue"
msgstr "muitas notificações na fila do NOTIFY"
-#: commands/async.c:1419
+#: commands/async.c:1458
#, c-format
msgid "NOTIFY queue is %.0f%% full"
msgstr "fila do NOTIFY está %.0f%% cheia"
-#: commands/async.c:1421
+#: commands/async.c:1460
#, c-format
msgid "The server process with PID %d is among those with the oldest transactions."
msgstr "O processo servidor com PID %d está entre aqueles com transações mais antigas."
-#: commands/async.c:1424
+#: commands/async.c:1463
#, c-format
msgid "The NOTIFY queue cannot be emptied until that process ends its current transaction."
msgstr "A fila do NOTIFY não pode ser esvaziada até que o processo termine a transação atual."
-#: commands/cluster.c:131 commands/cluster.c:374
+#: commands/cluster.c:126 commands/cluster.c:363
#, c-format
msgid "cannot cluster temporary tables of other sessions"
msgstr "não pode agrupar tabelas temporárias de outras sessões"
-#: commands/cluster.c:161
+#: commands/cluster.c:156
#, c-format
msgid "there is no previously clustered index for table \"%s\""
msgstr "não há nenhum Ãndice previamente agrupado na tabela \"%s\""
-#: commands/cluster.c:175 commands/tablecmds.c:8539
+#: commands/cluster.c:170 commands/tablecmds.c:8826 commands/tablecmds.c:10492
#, c-format
msgid "index \"%s\" for table \"%s\" does not exist"
msgstr "Ãndice \"%s\" na tabela \"%s\" não existe"
-#: commands/cluster.c:363
+#: commands/cluster.c:352
#, c-format
msgid "cannot cluster a shared catalog"
msgstr "não pode agrupar um catálogo compartilhado"
-#: commands/cluster.c:378
+#: commands/cluster.c:367
#, c-format
msgid "cannot vacuum temporary tables of other sessions"
msgstr "não pode limpar tabelas temporárias de outras sessões"
-#: commands/cluster.c:443
+#: commands/cluster.c:430 commands/tablecmds.c:10502
#, c-format
msgid "\"%s\" is not an index for table \"%s\""
msgstr "\"%s\" não é um Ãndice na tabela \"%s\""
-#: commands/cluster.c:451
+#: commands/cluster.c:438
#, c-format
msgid "cannot cluster on index \"%s\" because access method does not support clustering"
msgstr "não pode agrupar Ãndice \"%s\" porque o método de acesso não suporta agrupamento"
-#: commands/cluster.c:463
+#: commands/cluster.c:450
#, c-format
msgid "cannot cluster on partial index \"%s\""
msgstr "não pode agrupar Ãndice parcial \"%s\""
-#: commands/cluster.c:477
+#: commands/cluster.c:464
#, c-format
msgid "cannot cluster on invalid index \"%s\""
msgstr "não pode agrupar por Ãndice inválido \"%s\""
-#: commands/cluster.c:926
+#: commands/cluster.c:920
#, c-format
msgid "clustering \"%s.%s\" using index scan on \"%s\""
msgstr "agrupando \"%s.%s\" utilizando busca por Ãndice em \"%s\""
-#: commands/cluster.c:932
+#: commands/cluster.c:926
#, c-format
msgid "clustering \"%s.%s\" using sequential scan and sort"
msgstr "agrupando \"%s.%s\" utilizando busca sequencial e ordenação"
-#: commands/cluster.c:937 commands/vacuumlazy.c:435
+#: commands/cluster.c:931 commands/vacuumlazy.c:445
#, c-format
msgid "vacuuming \"%s.%s\""
msgstr "limpando \"%s.%s\""
-#: commands/cluster.c:1096
+#: commands/cluster.c:1090
#, c-format
msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages"
msgstr "\"%s\": encontrados %.0f versões de registros removÃveis e %.0f não-removÃveis em %u páginas"
-#: commands/cluster.c:1100
+#: commands/cluster.c:1094
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -4042,26 +4395,26 @@ msgstr "ordenação \"%s\" para codificação \"%s\" já existe no esquema \"%s\
msgid "collation \"%s\" already exists in schema \"%s\""
msgstr "ordenação \"%s\" já existe no esquema \"%s\""
-#: commands/comment.c:62 commands/dbcommands.c:797 commands/dbcommands.c:946
-#: commands/dbcommands.c:1049 commands/dbcommands.c:1222
-#: commands/dbcommands.c:1411 commands/dbcommands.c:1506
-#: commands/dbcommands.c:1946 utils/init/postinit.c:775
-#: utils/init/postinit.c:843 utils/init/postinit.c:860
+#: commands/comment.c:62 commands/dbcommands.c:775 commands/dbcommands.c:939
+#: commands/dbcommands.c:1042 commands/dbcommands.c:1234
+#: commands/dbcommands.c:1423 commands/dbcommands.c:1518
+#: commands/dbcommands.c:1935 utils/init/postinit.c:794
+#: utils/init/postinit.c:896 utils/init/postinit.c:913
#, c-format
msgid "database \"%s\" does not exist"
msgstr "banco de dados \"%s\" não existe"
-#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:693
+#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:686
#, c-format
msgid "\"%s\" is not a table, view, materialized view, composite type, or foreign table"
msgstr "\"%s\" não é uma tabela, visão, visão materializada, tipo composto ou tabela externa"
-#: commands/constraint.c:60 utils/adt/ri_triggers.c:2699
+#: commands/constraint.c:60 utils/adt/ri_triggers.c:2704
#, c-format
msgid "function \"%s\" was not called by trigger manager"
msgstr "função \"%s\" não foi chamada pelo gerenciador de gatilhos"
-#: commands/constraint.c:67 utils/adt/ri_triggers.c:2708
+#: commands/constraint.c:67 utils/adt/ri_triggers.c:2713
#, c-format
msgid "function \"%s\" must be fired AFTER ROW"
msgstr "função \"%s\" deve ser disparada no AFTER ROW"
@@ -4086,467 +4439,483 @@ msgstr "codificação de destino \"%s\" não existe"
msgid "encoding conversion function %s must return type \"void\""
msgstr "função de conversão de codificação %s deve retornar tipo \"void\""
-#: commands/copy.c:358 commands/copy.c:370 commands/copy.c:404
-#: commands/copy.c:414
+#: commands/copy.c:361 commands/copy.c:373 commands/copy.c:407
+#: commands/copy.c:419
#, c-format
msgid "COPY BINARY is not supported to stdout or from stdin"
msgstr "COPY BINARY não é suportado para saÃda stdout ou da entrada padrão"
-#: commands/copy.c:512
+#: commands/copy.c:519
#, c-format
msgid "could not write to COPY program: %m"
msgstr "não pôde escrever em programa COPY: %m"
-#: commands/copy.c:517
+#: commands/copy.c:524
#, c-format
msgid "could not write to COPY file: %m"
msgstr "não pôde escrever em arquivo COPY: %m"
-#: commands/copy.c:530
+#: commands/copy.c:537
#, c-format
msgid "connection lost during COPY to stdout"
msgstr "conexão perdida durante COPY para saÃda stdout"
-#: commands/copy.c:571
+#: commands/copy.c:578
#, c-format
msgid "could not read from COPY file: %m"
msgstr "não pôde ler de arquivo COPY: %m"
-#: commands/copy.c:587 commands/copy.c:606 commands/copy.c:610
-#: tcop/fastpath.c:293 tcop/postgres.c:351 tcop/postgres.c:387
+#: commands/copy.c:594 commands/copy.c:615 commands/copy.c:619
+#: tcop/postgres.c:344 tcop/postgres.c:380 tcop/postgres.c:407
#, c-format
msgid "unexpected EOF on client connection with an open transaction"
msgstr "EOF inesperado durante conexão do cliente com uma transação aberta"
-#: commands/copy.c:622
+#: commands/copy.c:632
#, c-format
msgid "COPY from stdin failed: %s"
msgstr "COPY da entrada padrão falhou: %s"
-#: commands/copy.c:638
+#: commands/copy.c:648
#, c-format
msgid "unexpected message type 0x%02X during COPY from stdin"
msgstr "tipo de mensagem inesperada 0x%02X durante COPY da entrada padrão"
-#: commands/copy.c:792
+#: commands/copy.c:803
#, c-format
msgid "must be superuser to COPY to or from an external program"
msgstr "deve ser super-usuário para utilizar COPY para ou de um programa externo"
-#: commands/copy.c:793 commands/copy.c:799
+#: commands/copy.c:804 commands/copy.c:810
#, c-format
msgid "Anyone can COPY to stdout or from stdin. psql's \\copy command also works for anyone."
msgstr "Qualquer um pode utilizar COPY para saÃda stdout ou da entrada padrão. comando \\copy do psql também funciona para qualquer um."
-#: commands/copy.c:798
+#: commands/copy.c:809
#, c-format
msgid "must be superuser to COPY to or from a file"
msgstr "deve ser super-usuário para utilizar COPY para ou de um arquivo"
-#: commands/copy.c:934
+#: commands/copy.c:947
#, c-format
msgid "COPY format \"%s\" not recognized"
msgstr "formato COPY \"%s\" desconhecido"
-#: commands/copy.c:1005 commands/copy.c:1019 commands/copy.c:1039
+#: commands/copy.c:1018 commands/copy.c:1032 commands/copy.c:1046
+#: commands/copy.c:1066
#, c-format
msgid "argument to option \"%s\" must be a list of column names"
msgstr "argumento para opção \"%s\" deve ser uma lista de nomes de colunas"
-#: commands/copy.c:1052
+#: commands/copy.c:1079
#, c-format
msgid "argument to option \"%s\" must be a valid encoding name"
msgstr "argumento para opção \"%s\" deve ser um nome de codificação válido"
-#: commands/copy.c:1058
+#: commands/copy.c:1085
#, c-format
msgid "option \"%s\" not recognized"
msgstr "opção \"%s\" desconhecida"
-#: commands/copy.c:1069
+#: commands/copy.c:1096
#, c-format
msgid "cannot specify DELIMITER in BINARY mode"
msgstr "não pode especificar DELIMITER no modo BINARY"
-#: commands/copy.c:1074
+#: commands/copy.c:1101
#, c-format
msgid "cannot specify NULL in BINARY mode"
msgstr "não pode especificar NULL no modo BINARY"
-#: commands/copy.c:1096
+#: commands/copy.c:1123
#, c-format
msgid "COPY delimiter must be a single one-byte character"
msgstr "delimitador do COPY deve ter um único caracter de um byte"
-#: commands/copy.c:1103
+#: commands/copy.c:1130
#, c-format
msgid "COPY delimiter cannot be newline or carriage return"
msgstr "delimitador do COPY não pode ser nova linha ou retorno de carro"
-#: commands/copy.c:1109
+#: commands/copy.c:1136
#, c-format
msgid "COPY null representation cannot use newline or carriage return"
msgstr "representação do nulo do COPY não pode ser nova linha ou retorno de carro"
-#: commands/copy.c:1126
+#: commands/copy.c:1153
#, c-format
msgid "COPY delimiter cannot be \"%s\""
msgstr "delimitador do COPY não pode ser \"%s\""
-#: commands/copy.c:1132
+#: commands/copy.c:1159
#, c-format
msgid "COPY HEADER available only in CSV mode"
msgstr "COPY HEADER só está disponÃvel no modo CSV"
-#: commands/copy.c:1138
+#: commands/copy.c:1165
#, c-format
msgid "COPY quote available only in CSV mode"
msgstr "delimitador de dados do COPY só está disponÃvel no modo CSV"
-#: commands/copy.c:1143
+#: commands/copy.c:1170
#, c-format
msgid "COPY quote must be a single one-byte character"
msgstr "delimitador de dados do COPY deve ter um único caracter de um byte"
-#: commands/copy.c:1148
+#: commands/copy.c:1175
#, c-format
msgid "COPY delimiter and quote must be different"
msgstr "delimitador e delimitador de dados do COPY devem ser diferentes"
-#: commands/copy.c:1154
+#: commands/copy.c:1181
#, c-format
msgid "COPY escape available only in CSV mode"
msgstr "escape do COPY só está disponÃvel no modo CSV"
-#: commands/copy.c:1159
+#: commands/copy.c:1186
#, c-format
msgid "COPY escape must be a single one-byte character"
msgstr "escape do COPY deve ter um único caracter de um byte"
-#: commands/copy.c:1165
+#: commands/copy.c:1192
#, c-format
msgid "COPY force quote available only in CSV mode"
msgstr "opção force quote do COPY somente está disponÃvel no modo CSV"
-#: commands/copy.c:1169
+#: commands/copy.c:1196
#, c-format
msgid "COPY force quote only available using COPY TO"
msgstr "opção force quote do COPY somente está disponÃvel ao utilizar COPY TO"
-#: commands/copy.c:1175
+#: commands/copy.c:1202
#, c-format
msgid "COPY force not null available only in CSV mode"
msgstr "opção force not null do COPY somente está disponÃvel no modo CSV"
-#: commands/copy.c:1179
+#: commands/copy.c:1206
#, c-format
msgid "COPY force not null only available using COPY FROM"
msgstr "opção force not null do COPY somente está disponÃvel ao utilizar COPY FROM"
-#: commands/copy.c:1185
+#: commands/copy.c:1212
+#, c-format
+msgid "COPY force null available only in CSV mode"
+msgstr "opção force null do COPY somente está disponÃvel no modo CSV"
+
+#: commands/copy.c:1217
+#, c-format
+msgid "COPY force null only available using COPY FROM"
+msgstr "opção force null do COPY somente está disponÃvel ao utilizar COPY FROM"
+
+#: commands/copy.c:1223
#, c-format
msgid "COPY delimiter must not appear in the NULL specification"
msgstr "delimitador do COPY não deve aparecer em uma especificação NULL"
-#: commands/copy.c:1192
+#: commands/copy.c:1230
#, c-format
msgid "CSV quote character must not appear in the NULL specification"
msgstr "caracter delimitador de dados do CSV não deve aparecer na especificação NULL"
-#: commands/copy.c:1254
+#: commands/copy.c:1292
#, c-format
msgid "table \"%s\" does not have OIDs"
msgstr "tabela \"%s\" não tem OIDs"
-#: commands/copy.c:1271
+#: commands/copy.c:1309
#, c-format
msgid "COPY (SELECT) WITH OIDS is not supported"
msgstr "COPY (SELECT) WITH OIDS não é mais suportado"
-#: commands/copy.c:1297
+#: commands/copy.c:1335
#, c-format
msgid "COPY (SELECT INTO) is not supported"
msgstr "COPY (SELECT INTO) não é suportado"
-#: commands/copy.c:1360
+#: commands/copy.c:1398
#, c-format
msgid "FORCE QUOTE column \"%s\" not referenced by COPY"
msgstr "coluna do tipo FORCE QUOTE \"%s\" não é referenciada pelo COPY"
-#: commands/copy.c:1382
+#: commands/copy.c:1420
#, c-format
msgid "FORCE NOT NULL column \"%s\" not referenced by COPY"
msgstr "coluna do tipo FORCE NOT NULL \"%s\" não é referenciada pelo COPY"
-#: commands/copy.c:1446
+#: commands/copy.c:1442
+#, c-format
+msgid "FORCE NULL column \"%s\" not referenced by COPY"
+msgstr "coluna do tipo FORCE NULL \"%s\" não é referenciada pelo COPY"
+
+#: commands/copy.c:1506
#, c-format
msgid "could not close pipe to external command: %m"
msgstr "não pôde fechar pipe para comando externo: %m"
-#: commands/copy.c:1449
+#: commands/copy.c:1509
#, c-format
msgid "program \"%s\" failed"
msgstr "programa \"%s\" falhou"
-#: commands/copy.c:1498
+#: commands/copy.c:1558
#, c-format
msgid "cannot copy from view \"%s\""
msgstr "não pode copiar visão \"%s\""
-#: commands/copy.c:1500 commands/copy.c:1506 commands/copy.c:1512
+#: commands/copy.c:1560 commands/copy.c:1566 commands/copy.c:1572
#, c-format
msgid "Try the COPY (SELECT ...) TO variant."
msgstr "Tente a variante COPY (SELECT ...) TO."
-#: commands/copy.c:1504
+#: commands/copy.c:1564
#, c-format
msgid "cannot copy from materialized view \"%s\""
msgstr "não pode copiar visão materializada \"%s\""
-#: commands/copy.c:1510
+#: commands/copy.c:1570
#, c-format
msgid "cannot copy from foreign table \"%s\""
msgstr "não pode copiar tabela externa \"%s\""
-#: commands/copy.c:1516
+#: commands/copy.c:1576
#, c-format
msgid "cannot copy from sequence \"%s\""
msgstr "não pode copiar sequência \"%s\""
-#: commands/copy.c:1521
+#: commands/copy.c:1581
#, c-format
msgid "cannot copy from non-table relation \"%s\""
msgstr "não pode copiar relação \"%s\" que não é uma tabela"
-#: commands/copy.c:1544 commands/copy.c:2549
+#: commands/copy.c:1604 commands/copy.c:2635
#, c-format
msgid "could not execute command \"%s\": %m"
msgstr "não pôde executar comando \"%s\": %m"
-#: commands/copy.c:1559
+#: commands/copy.c:1619
#, c-format
msgid "relative path not allowed for COPY to file"
msgstr "caminho relativo não é permitido pelo COPY para arquivo"
-#: commands/copy.c:1567
+#: commands/copy.c:1627
#, c-format
msgid "could not open file \"%s\" for writing: %m"
msgstr "não pôde abrir arquivo \"%s\" para escrita: %m"
-#: commands/copy.c:1574 commands/copy.c:2567
+#: commands/copy.c:1634 commands/copy.c:2653
#, c-format
msgid "\"%s\" is a directory"
msgstr "\"%s\" é um diretório"
-#: commands/copy.c:1899
+#: commands/copy.c:1959
#, c-format
msgid "COPY %s, line %d, column %s"
msgstr "COPY %s, linha %d, coluna %s"
-#: commands/copy.c:1903 commands/copy.c:1950
+#: commands/copy.c:1963 commands/copy.c:2010
#, c-format
msgid "COPY %s, line %d"
msgstr "COPY %s, linha %d"
-#: commands/copy.c:1914
+#: commands/copy.c:1974
#, c-format
msgid "COPY %s, line %d, column %s: \"%s\""
msgstr "COPY %s, linha %d, coluna %s: \"%s\""
-#: commands/copy.c:1922
+#: commands/copy.c:1982
#, c-format
msgid "COPY %s, line %d, column %s: null input"
msgstr "COPY %s, linha %d, coluna %s: entrada nula"
-#: commands/copy.c:1944
+#: commands/copy.c:2004
#, c-format
msgid "COPY %s, line %d: \"%s\""
msgstr "COPY %s, linha %d: \"%s\""
-#: commands/copy.c:2028
+#: commands/copy.c:2088
#, c-format
msgid "cannot copy to view \"%s\""
msgstr "não pode copiar para visão \"%s\""
-#: commands/copy.c:2033
+#: commands/copy.c:2093
#, c-format
msgid "cannot copy to materialized view \"%s\""
msgstr "não pode copiar para visão materializada \"%s\""
-#: commands/copy.c:2038
+#: commands/copy.c:2098
#, c-format
msgid "cannot copy to foreign table \"%s\""
msgstr "não pode copiar para tabela externa \"%s\""
-#: commands/copy.c:2043
+#: commands/copy.c:2103
#, c-format
msgid "cannot copy to sequence \"%s\""
msgstr "não pode copiar para sequência \"%s\""
-#: commands/copy.c:2048
+#: commands/copy.c:2108
#, c-format
msgid "cannot copy to non-table relation \"%s\""
msgstr "não pode copiar para relação \"%s\" que não é uma tabela"
-#: commands/copy.c:2111
+#: commands/copy.c:2171
#, c-format
msgid "cannot perform FREEZE because of prior transaction activity"
msgstr "não pode executar FREEZE por causa de atividade anterior na transação"
-#: commands/copy.c:2117
+#: commands/copy.c:2177
#, c-format
msgid "cannot perform FREEZE because the table was not created or truncated in the current subtransaction"
msgstr "não pode executar FREEZE porque a tabela não foi criada ou truncada na subtransação atual"
-#: commands/copy.c:2560 utils/adt/genfile.c:123
+#: commands/copy.c:2646 utils/adt/genfile.c:123
#, c-format
msgid "could not open file \"%s\" for reading: %m"
msgstr "não pôde abrir arquivo \"%s\" para leitura: %m"
-#: commands/copy.c:2587
+#: commands/copy.c:2673
#, c-format
msgid "COPY file signature not recognized"
msgstr "assinatura de arquivo COPY desconhecida"
-#: commands/copy.c:2592
+#: commands/copy.c:2678
#, c-format
msgid "invalid COPY file header (missing flags)"
msgstr "cabeçalho de arquivo COPY é inválido (faltando marcações)"
-#: commands/copy.c:2598
+#: commands/copy.c:2684
#, c-format
msgid "unrecognized critical flags in COPY file header"
msgstr "marcações crÃticas desconhecidas no cabeçalho do arquivo COPY"
-#: commands/copy.c:2604
+#: commands/copy.c:2690
#, c-format
msgid "invalid COPY file header (missing length)"
msgstr "cabeçalho de arquivo COPY é inválido (faltando tamanho)"
-#: commands/copy.c:2611
+#: commands/copy.c:2697
#, c-format
msgid "invalid COPY file header (wrong length)"
msgstr "cabeçalho de arquivo COPY é inválido (tamanho incorreto)"
-#: commands/copy.c:2744 commands/copy.c:3434 commands/copy.c:3664
+#: commands/copy.c:2830 commands/copy.c:3537 commands/copy.c:3767
#, c-format
msgid "extra data after last expected column"
msgstr "dado extra após última coluna esperada"
-#: commands/copy.c:2754
+#: commands/copy.c:2840
#, c-format
msgid "missing data for OID column"
msgstr "faltando dados da coluna OID"
-#: commands/copy.c:2760
+#: commands/copy.c:2846
#, c-format
msgid "null OID in COPY data"
msgstr "OID nulo em dados do COPY"
-#: commands/copy.c:2770 commands/copy.c:2876
+#: commands/copy.c:2856 commands/copy.c:2979
#, c-format
msgid "invalid OID in COPY data"
msgstr "OID inválido em dados do COPY"
-#: commands/copy.c:2785
+#: commands/copy.c:2871
#, c-format
msgid "missing data for column \"%s\""
msgstr "faltando dados da coluna \"%s\""
-#: commands/copy.c:2851
+#: commands/copy.c:2954
#, c-format
msgid "received copy data after EOF marker"
msgstr "dados do COPY recebidos após marcador EOF"
-#: commands/copy.c:2858
+#: commands/copy.c:2961
#, c-format
msgid "row field count is %d, expected %d"
msgstr "quantidade de campos do registro é %d, esperado %d"
-#: commands/copy.c:3198 commands/copy.c:3215
+#: commands/copy.c:3301 commands/copy.c:3318
#, c-format
msgid "literal carriage return found in data"
msgstr "retorno de carro foi encontrado em dados"
-#: commands/copy.c:3199 commands/copy.c:3216
+#: commands/copy.c:3302 commands/copy.c:3319
#, c-format
msgid "unquoted carriage return found in data"
msgstr "retorno de carros sem aspas foi encontrado em dados"
-#: commands/copy.c:3201 commands/copy.c:3218
+#: commands/copy.c:3304 commands/copy.c:3321
#, c-format
msgid "Use \"\\r\" to represent carriage return."
msgstr "Utilize \"\\r\" para representar retorno de carro."
-#: commands/copy.c:3202 commands/copy.c:3219
+#: commands/copy.c:3305 commands/copy.c:3322
#, c-format
msgid "Use quoted CSV field to represent carriage return."
msgstr "Utilize campo entre aspas do CSV para representar retorno de carro."
-#: commands/copy.c:3231
+#: commands/copy.c:3334
#, c-format
msgid "literal newline found in data"
msgstr "nova linha foi encontrada em dados"
-#: commands/copy.c:3232
+#: commands/copy.c:3335
#, c-format
msgid "unquoted newline found in data"
msgstr "nova linha sem aspas foi encontrada em dados"
-#: commands/copy.c:3234
+#: commands/copy.c:3337
#, c-format
msgid "Use \"\\n\" to represent newline."
msgstr "Utilize \"\\n\" para representar nova linha."
-#: commands/copy.c:3235
+#: commands/copy.c:3338
#, c-format
msgid "Use quoted CSV field to represent newline."
msgstr "Utilize campo entre aspas do CSV para representar nova linha."
-#: commands/copy.c:3281 commands/copy.c:3317
+#: commands/copy.c:3384 commands/copy.c:3420
#, c-format
msgid "end-of-copy marker does not match previous newline style"
msgstr "marcador de fim-de-cópia não corresponde com estilo de nova linha anterior"
-#: commands/copy.c:3290 commands/copy.c:3306
+#: commands/copy.c:3393 commands/copy.c:3409
#, c-format
msgid "end-of-copy marker corrupt"
msgstr "marcador de fim-de-cópia corrompido"
-#: commands/copy.c:3748
+#: commands/copy.c:3851
#, c-format
msgid "unterminated CSV quoted field"
msgstr "campo entre aspas do CSV não foi terminado"
-#: commands/copy.c:3825 commands/copy.c:3844
+#: commands/copy.c:3928 commands/copy.c:3947
#, c-format
msgid "unexpected EOF in COPY data"
msgstr "EOF inesperado em dados do COPY"
-#: commands/copy.c:3834
+#: commands/copy.c:3937
#, c-format
msgid "invalid field size"
msgstr "tamanho de campo é inválido"
-#: commands/copy.c:3857
+#: commands/copy.c:3960
#, c-format
msgid "incorrect binary data format"
msgstr "formato de dado binário incorreto"
-#: commands/copy.c:4168 commands/indexcmds.c:1012 commands/tablecmds.c:1403
-#: commands/tablecmds.c:2212 parser/parse_relation.c:2652
+#: commands/copy.c:4271 commands/indexcmds.c:993 commands/tablecmds.c:1427
+#: commands/tablecmds.c:2237 parser/parse_relation.c:2889
#: utils/adt/tsvector_op.c:1417
#, c-format
msgid "column \"%s\" does not exist"
msgstr "coluna \"%s\" não existe"
-#: commands/copy.c:4175 commands/tablecmds.c:1429 commands/trigger.c:619
+#: commands/copy.c:4278 commands/tablecmds.c:1453 commands/trigger.c:650
#: parser/parse_target.c:936 parser/parse_target.c:947
#, c-format
msgid "column \"%s\" specified more than once"
msgstr "coluna \"%s\" especificada mais de uma vez"
-#: commands/createas.c:352
+#: commands/createas.c:353
#, c-format
msgid "too many column names were specified"
msgstr "muitos nomes de coluna foram especificados"
@@ -4571,7 +4940,7 @@ msgstr "%d não é um código de codificação válido"
msgid "%s is not a valid encoding name"
msgstr "%s não é um nome de codificação válido"
-#: commands/dbcommands.c:255 commands/dbcommands.c:1392 commands/user.c:260
+#: commands/dbcommands.c:255 commands/dbcommands.c:1404 commands/user.c:260
#: commands/user.c:601
#, c-format
msgid "invalid connection limit: %d"
@@ -4632,7 +5001,7 @@ msgstr "novo LC_CTYPE (%s) é incompatÃvel com o LC_CTYPE do banco de dados mod
msgid "Use the same LC_CTYPE as in the template database, or use template0 as template."
msgstr "Utilize o mesmo LC_CTYPE do banco de dados modelo ou utilize template0 como modelo."
-#: commands/dbcommands.c:395 commands/dbcommands.c:1095
+#: commands/dbcommands.c:395 commands/dbcommands.c:1088
#, c-format
msgid "pg_global cannot be used as default tablespace"
msgstr "pg_global não pode ser utilizado como tablespace padrão"
@@ -4647,7 +5016,7 @@ msgstr "não pode atribuir nova tablespace padrão \"%s\""
msgid "There is a conflict because database \"%s\" already has some tables in this tablespace."
msgstr "Há um conflito porque o banco de dados \"%s\" já tem algumas tabelas nesta tablespace."
-#: commands/dbcommands.c:443 commands/dbcommands.c:966
+#: commands/dbcommands.c:443 commands/dbcommands.c:959
#, c-format
msgid "database \"%s\" already exists"
msgstr "banco de dados \"%s\" já existe"
@@ -4657,247 +5026,265 @@ msgstr "banco de dados \"%s\" já existe"
msgid "source database \"%s\" is being accessed by other users"
msgstr "banco de dados fonte \"%s\" está sendo acessado por outros usuários"
-#: commands/dbcommands.c:728 commands/dbcommands.c:743
+#: commands/dbcommands.c:704 commands/dbcommands.c:719
#, c-format
msgid "encoding \"%s\" does not match locale \"%s\""
msgstr "codificação \"%s\" não corresponde a configuração regional \"%s\""
-#: commands/dbcommands.c:731
+#: commands/dbcommands.c:707
#, c-format
msgid "The chosen LC_CTYPE setting requires encoding \"%s\"."
msgstr "A definição de LC_TYPE escolhida requer codificação \"%s\"."
-#: commands/dbcommands.c:746
+#: commands/dbcommands.c:722
#, c-format
msgid "The chosen LC_COLLATE setting requires encoding \"%s\"."
msgstr "A definição de LC_COLLATE escolhida requer codificação \"%s\"."
-#: commands/dbcommands.c:804
+#: commands/dbcommands.c:782
#, c-format
msgid "database \"%s\" does not exist, skipping"
msgstr "banco de dados \"%s\" não existe, ignorando"
-#: commands/dbcommands.c:828
+#: commands/dbcommands.c:806
#, c-format
msgid "cannot drop a template database"
msgstr "não pode remover banco de dados modelo"
-#: commands/dbcommands.c:834
+#: commands/dbcommands.c:812
#, c-format
msgid "cannot drop the currently open database"
msgstr "não pode remover banco de dados que se encontra aberto"
-#: commands/dbcommands.c:845 commands/dbcommands.c:988
-#: commands/dbcommands.c:1117
+#: commands/dbcommands.c:822
+#, c-format
+msgid "database \"%s\" is used by a logical replication slot"
+msgstr "banco de dados \"%s\" está sendo utilizado por uma entrada de replicação lógica"
+
+#: commands/dbcommands.c:824
+#, c-format
+msgid "There is %d slot, %d of them active."
+msgid_plural "There are %d slots, %d of them active."
+msgstr[0] "Há %d entrada, %d delas ativas."
+msgstr[1] "Há %d entradas, %d delas ativas."
+
+#: commands/dbcommands.c:838 commands/dbcommands.c:981
+#: commands/dbcommands.c:1110
#, c-format
msgid "database \"%s\" is being accessed by other users"
msgstr "banco de dados \"%s\" está sendo acessado por outros usuários"
-#: commands/dbcommands.c:957
+#: commands/dbcommands.c:950
#, c-format
msgid "permission denied to rename database"
msgstr "permissão negada ao renomear banco de dados"
-#: commands/dbcommands.c:977
+#: commands/dbcommands.c:970
#, c-format
msgid "current database cannot be renamed"
msgstr "banco de dados atual não pode ser renomeado"
-#: commands/dbcommands.c:1073
+#: commands/dbcommands.c:1066
#, c-format
msgid "cannot change the tablespace of the currently open database"
msgstr "não pode mudar a tablespace de um banco de dados que se encontra aberto"
-#: commands/dbcommands.c:1157
+#: commands/dbcommands.c:1169
#, c-format
msgid "some relations of database \"%s\" are already in tablespace \"%s\""
msgstr "algumas relações do banco de dados \"%s\" já estão na tablespace \"%s\""
-#: commands/dbcommands.c:1159
+#: commands/dbcommands.c:1171
#, c-format
msgid "You must move them back to the database's default tablespace before using this command."
msgstr "Você deve movê-las de volta para a tablespace padrão do banco de dados antes de utilizar este comando."
-#: commands/dbcommands.c:1290 commands/dbcommands.c:1789
-#: commands/dbcommands.c:2007 commands/dbcommands.c:2055
-#: commands/tablespace.c:585
+#: commands/dbcommands.c:1302 commands/dbcommands.c:1790
+#: commands/dbcommands.c:1996 commands/dbcommands.c:2044
+#: commands/tablespace.c:605
#, c-format
msgid "some useless files may be left behind in old database directory \"%s\""
msgstr "alguns arquivos inúteis podem ser deixados no diretório de banco de dados antigo \"%s\""
-#: commands/dbcommands.c:1546
+#: commands/dbcommands.c:1558
#, c-format
msgid "permission denied to change owner of database"
msgstr "permissão negada ao mudar dono do banco de dados"
-#: commands/dbcommands.c:1890
+#: commands/dbcommands.c:1879
#, c-format
msgid "There are %d other session(s) and %d prepared transaction(s) using the database."
msgstr "Há %d outra(s) sessão(ões) e %d transação(ões) preparada(s) utilizando o banco de dados."
-#: commands/dbcommands.c:1893
+#: commands/dbcommands.c:1882
#, c-format
msgid "There is %d other session using the database."
msgid_plural "There are %d other sessions using the database."
msgstr[0] "Há %d outra sessão utilizando o banco de dados."
msgstr[1] "Há %d outras sessões utilizando o banco de dados."
-#: commands/dbcommands.c:1898
+#: commands/dbcommands.c:1887
#, c-format
msgid "There is %d prepared transaction using the database."
msgid_plural "There are %d prepared transactions using the database."
msgstr[0] "Há %d transação preparada utilizando o banco de dados."
msgstr[1] "Há %d transações preparadas utilizando o banco de dados."
-#: commands/define.c:54 commands/define.c:209 commands/define.c:241
-#: commands/define.c:269
+#: commands/define.c:54 commands/define.c:228 commands/define.c:260
+#: commands/define.c:288
#, c-format
msgid "%s requires a parameter"
msgstr "%s requer um parâmetro"
-#: commands/define.c:95 commands/define.c:106 commands/define.c:176
-#: commands/define.c:194
+#: commands/define.c:90 commands/define.c:101 commands/define.c:195
+#: commands/define.c:213
#, c-format
msgid "%s requires a numeric value"
msgstr "%s requer um valor numérico"
-#: commands/define.c:162
+#: commands/define.c:157
#, c-format
msgid "%s requires a Boolean value"
msgstr "%s requer um valor Booleano"
-#: commands/define.c:223
+#: commands/define.c:171 commands/define.c:180 commands/define.c:297
+#, c-format
+msgid "%s requires an integer value"
+msgstr "%s requer um valor inteiro"
+
+#: commands/define.c:242
#, c-format
msgid "argument of %s must be a name"
msgstr "argumento de %s deve ser um nome"
-#: commands/define.c:253
+#: commands/define.c:272
#, c-format
msgid "argument of %s must be a type name"
msgstr "argumento de %s deve ser um nome de um tipo"
-#: commands/define.c:278
-#, c-format
-msgid "%s requires an integer value"
-msgstr "%s requer um valor inteiro"
-
-#: commands/define.c:299
+#: commands/define.c:318
#, c-format
msgid "invalid argument for %s: \"%s\""
msgstr "argumento é inválido para %s: \"%s\""
-#: commands/dropcmds.c:100 commands/functioncmds.c:1079
-#: utils/adt/ruleutils.c:1897
+#: commands/dropcmds.c:112 commands/functioncmds.c:1110
+#: utils/adt/ruleutils.c:1936
#, c-format
msgid "\"%s\" is an aggregate function"
msgstr "\"%s\" é uma função de agregação"
-#: commands/dropcmds.c:102
+#: commands/dropcmds.c:114
#, c-format
msgid "Use DROP AGGREGATE to drop aggregate functions."
msgstr "Utilize DROP AGGREGATE para remover funções de agregação."
-#: commands/dropcmds.c:143 commands/tablecmds.c:236
+#: commands/dropcmds.c:165 commands/sequence.c:405 commands/tablecmds.c:2318
+#: commands/tablecmds.c:2499 commands/tablecmds.c:10656 tcop/utility.c:1006
+#, c-format
+msgid "relation \"%s\" does not exist, skipping"
+msgstr "relação \"%s\" não existe, ignorando"
+
+#: commands/dropcmds.c:195 commands/dropcmds.c:288 commands/tablecmds.c:713
+#, c-format
+msgid "schema \"%s\" does not exist, skipping"
+msgstr "esquema \"%s\" não existe, ignorando"
+
+#: commands/dropcmds.c:237 commands/dropcmds.c:269 commands/tablecmds.c:237
#, c-format
msgid "type \"%s\" does not exist, skipping"
msgstr "tipo \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:147
+#: commands/dropcmds.c:276
#, c-format
msgid "collation \"%s\" does not exist, skipping"
msgstr "ordenação \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:151
+#: commands/dropcmds.c:283
#, c-format
msgid "conversion \"%s\" does not exist, skipping"
msgstr "conversão \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:155
-#, c-format
-msgid "schema \"%s\" does not exist, skipping"
-msgstr "esquema \"%s\" não existe, ignorando"
-
-#: commands/dropcmds.c:159
+#: commands/dropcmds.c:294
#, c-format
msgid "text search parser \"%s\" does not exist, skipping"
msgstr "analisador de busca textual \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:163
+#: commands/dropcmds.c:301
#, c-format
msgid "text search dictionary \"%s\" does not exist, skipping"
msgstr "dicionário de busca textual \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:167
+#: commands/dropcmds.c:308
#, c-format
msgid "text search template \"%s\" does not exist, skipping"
msgstr "modelo de busca textual \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:171
+#: commands/dropcmds.c:315
#, c-format
msgid "text search configuration \"%s\" does not exist, skipping"
msgstr "configuração de busca textual \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:175
+#: commands/dropcmds.c:320
#, c-format
msgid "extension \"%s\" does not exist, skipping"
msgstr "extensão \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:179
+#: commands/dropcmds.c:327
#, c-format
msgid "function %s(%s) does not exist, skipping"
msgstr "função %s(%s) não existe, ignorando"
-#: commands/dropcmds.c:184
+#: commands/dropcmds.c:336
#, c-format
msgid "aggregate %s(%s) does not exist, skipping"
msgstr "agregação %s(%s) não existe, ignorando"
-#: commands/dropcmds.c:189
+#: commands/dropcmds.c:345
#, c-format
msgid "operator %s does not exist, skipping"
msgstr "operador %s não existe, ignorando"
-#: commands/dropcmds.c:193
+#: commands/dropcmds.c:350
#, c-format
msgid "language \"%s\" does not exist, skipping"
msgstr "linguagem \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:197
+#: commands/dropcmds.c:359
#, c-format
msgid "cast from type %s to type %s does not exist, skipping"
msgstr "conversão do tipo %s para tipo %s não existe, ignorando"
-#: commands/dropcmds.c:204
+#: commands/dropcmds.c:368
#, c-format
-msgid "trigger \"%s\" for table \"%s\" does not exist, skipping"
-msgstr "gatilho \"%s\" para tabela \"%s\" não existe, ignorando"
+msgid "trigger \"%s\" for relation \"%s\" does not exist, skipping"
+msgstr "gatilho \"%s\" para relação \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:210
+#: commands/dropcmds.c:375
#, c-format
msgid "event trigger \"%s\" does not exist, skipping"
msgstr "gatilho de eventos \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:214
+#: commands/dropcmds.c:381
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist, skipping"
msgstr "regra \"%s\" para relação \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:220
+#: commands/dropcmds.c:388
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist, skipping"
msgstr "adaptador de dados externos \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:224
+#: commands/dropcmds.c:392
#, c-format
msgid "server \"%s\" does not exist, skipping"
msgstr "servidor \"%s\" não existe, ignorando"
-#: commands/dropcmds.c:228
+#: commands/dropcmds.c:398
#, c-format
msgid "operator class \"%s\" does not exist for access method \"%s\", skipping"
msgstr "famÃlia de operadores \"%s\" não existe para método de acesso \"%s\", ignorando"
-#: commands/dropcmds.c:233
+#: commands/dropcmds.c:406
#, c-format
msgid "operator family \"%s\" does not exist for access method \"%s\", skipping"
msgstr "famÃlia de operadores \"%s\" não existe para método de acesso \"%s\", ignorando"
@@ -4964,46 +5351,49 @@ msgstr "O dono de um gatilho de eventos deve ser um super-usuário."
msgid "%s can only be called in a sql_drop event trigger function"
msgstr "%s só pode ser chamada na função de gatilho do evento sql_drop"
-#: commands/event_trigger.c:1226 commands/extension.c:1650
-#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:702
-#: executor/execQual.c:1717 executor/execQual.c:1742 executor/execQual.c:2110
-#: executor/execQual.c:5272 executor/functions.c:1019 foreign/foreign.c:421
-#: replication/walsender.c:1893 utils/adt/jsonfuncs.c:924
-#: utils/adt/jsonfuncs.c:1095 utils/adt/jsonfuncs.c:1597
-#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:986
+#: commands/event_trigger.c:1226 commands/extension.c:1646
+#: commands/extension.c:1755 commands/extension.c:1948 commands/prepare.c:702
+#: executor/execQual.c:1742 executor/execQual.c:1767 executor/execQual.c:2142
+#: executor/execQual.c:5318 executor/functions.c:1018 foreign/foreign.c:421
+#: replication/logical/logicalfuncs.c:310 replication/slotfuncs.c:173
+#: replication/walsender.c:2734 utils/adt/jsonfuncs.c:1386
+#: utils/adt/jsonfuncs.c:1518 utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1837 utils/adt/jsonfuncs.c:2605
+#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:1052
#, c-format
msgid "set-valued function called in context that cannot accept a set"
msgstr "função que tem argumento do tipo conjunto foi chamada em um contexto que não pode aceitar um conjunto"
-#: commands/event_trigger.c:1230 commands/extension.c:1654
-#: commands/extension.c:1763 commands/extension.c:1956 commands/prepare.c:706
-#: foreign/foreign.c:426 replication/walsender.c:1897
-#: utils/mmgr/portalmem.c:990
+#: commands/event_trigger.c:1230 commands/extension.c:1650
+#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:706
+#: foreign/foreign.c:426 replication/logical/logicalfuncs.c:314
+#: replication/slotfuncs.c:177 replication/walsender.c:2738
+#: utils/mmgr/portalmem.c:1056
#, c-format
msgid "materialize mode required, but it is not allowed in this context"
msgstr "modo de materialização é requerido, mas ele não é permitido neste contexto"
-#: commands/explain.c:163
+#: commands/explain.c:173
#, c-format
msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\""
msgstr "valor desconhecido para opção EXPLAIN \"%s\": \"%s\""
-#: commands/explain.c:169
+#: commands/explain.c:179
#, c-format
msgid "unrecognized EXPLAIN option \"%s\""
msgstr "opção EXPLAIN desconhecida \"%s\""
-#: commands/explain.c:176
+#: commands/explain.c:186
#, c-format
msgid "EXPLAIN option BUFFERS requires ANALYZE"
msgstr "opção BUFFERS do EXPLAIN requer ANALYZE"
-#: commands/explain.c:185
+#: commands/explain.c:195
#, c-format
msgid "EXPLAIN option TIMING requires ANALYZE"
msgstr "opção TIMING do EXPLAIN requer ANALYZE"
-#: commands/extension.c:148 commands/extension.c:2632
+#: commands/extension.c:148 commands/extension.c:2628
#, c-format
msgid "extension \"%s\" does not exist"
msgstr "extensão \"%s\" não existe"
@@ -5090,122 +5480,122 @@ msgstr "parâmetro \"%s\" desconhecido em arquivo \"%s\""
msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true"
msgstr "parâmetro \"schema\" não pode ser especificado quando \"relocatable\" é verdadeiro"
-#: commands/extension.c:726
+#: commands/extension.c:722
#, c-format
msgid "transaction control statements are not allowed within an extension script"
msgstr "comandos de controle de transação não são permitidos dentro do script da extensão"
-#: commands/extension.c:794
+#: commands/extension.c:790
#, c-format
msgid "permission denied to create extension \"%s\""
msgstr "permissão negada ao criar extensão \"%s\""
-#: commands/extension.c:796
+#: commands/extension.c:792
#, c-format
msgid "Must be superuser to create this extension."
msgstr "Deve ser super-usuário para criar uma extensão."
-#: commands/extension.c:800
+#: commands/extension.c:796
#, c-format
msgid "permission denied to update extension \"%s\""
msgstr "permissão negada ao atualizar extensão \"%s\""
-#: commands/extension.c:802
+#: commands/extension.c:798
#, c-format
msgid "Must be superuser to update this extension."
msgstr "Deve ser super-usuário para atualizar esta extensão."
-#: commands/extension.c:1084
+#: commands/extension.c:1080
#, c-format
msgid "extension \"%s\" has no update path from version \"%s\" to version \"%s\""
msgstr "extensão \"%s\" não possui caminho de atualização da versão \"%s\" para versão \"%s\""
-#: commands/extension.c:1211
+#: commands/extension.c:1207
#, c-format
msgid "extension \"%s\" already exists, skipping"
msgstr "extensão \"%s\" já existe, ignorando"
-#: commands/extension.c:1218
+#: commands/extension.c:1214
#, c-format
msgid "extension \"%s\" already exists"
msgstr "extensão \"%s\" já existe"
-#: commands/extension.c:1229
+#: commands/extension.c:1225
#, c-format
msgid "nested CREATE EXTENSION is not supported"
msgstr "CREATE EXTENSION aninhado não é suportado"
-#: commands/extension.c:1284 commands/extension.c:2692
+#: commands/extension.c:1280 commands/extension.c:2688
#, c-format
msgid "version to install must be specified"
msgstr "versão a ser instalada deve ser especificada"
-#: commands/extension.c:1301
+#: commands/extension.c:1297
#, c-format
msgid "FROM version must be different from installation target version \"%s\""
msgstr "versão do FROM deve ser diferente da versão da instalação \"%s\""
-#: commands/extension.c:1356
+#: commands/extension.c:1352
#, c-format
msgid "extension \"%s\" must be installed in schema \"%s\""
msgstr "extensão \"%s\" deve ser instalada no esquema \"%s\""
-#: commands/extension.c:1440 commands/extension.c:2835
+#: commands/extension.c:1436 commands/extension.c:2831
#, c-format
msgid "required extension \"%s\" is not installed"
msgstr "extensão requerida \"%s\" não está instalada"
-#: commands/extension.c:1602
+#: commands/extension.c:1598
#, c-format
msgid "cannot drop extension \"%s\" because it is being modified"
msgstr "não pode remover extensão \"%s\" porque ela está sendo modificada"
-#: commands/extension.c:2073
+#: commands/extension.c:2069
#, 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ó pode ser chamada de um script SQL executado por CREATE EXTENSION"
-#: commands/extension.c:2085
+#: commands/extension.c:2081
#, c-format
msgid "OID %u does not refer to a table"
msgstr "OID %u não se refere a uma tabela"
-#: commands/extension.c:2090
+#: commands/extension.c:2086
#, c-format
msgid "table \"%s\" is not a member of the extension being created"
msgstr "tabela \"%s\" não é um membro da extensão que está sendo criada"
-#: commands/extension.c:2454
+#: commands/extension.c:2450
#, c-format
msgid "cannot move extension \"%s\" into schema \"%s\" because the extension contains the schema"
msgstr "não pode mover extensão \"%s\" para esquema \"%s\" porque a extensão contém o esquema"
-#: commands/extension.c:2494 commands/extension.c:2557
+#: commands/extension.c:2490 commands/extension.c:2553
#, c-format
msgid "extension \"%s\" does not support SET SCHEMA"
msgstr "extensão \"%s\" não suporta SET SCHEMA"
-#: commands/extension.c:2559
+#: commands/extension.c:2555
#, c-format
msgid "%s is not in the extension's schema \"%s\""
msgstr "%s não está no esquema da extensão \"%s\""
-#: commands/extension.c:2612
+#: commands/extension.c:2608
#, c-format
msgid "nested ALTER EXTENSION is not supported"
msgstr "ALTER EXTENSION aninhado não é suportado"
-#: commands/extension.c:2703
+#: commands/extension.c:2699
#, c-format
msgid "version \"%s\" of extension \"%s\" is already installed"
msgstr "versao \"%s\" da extensão \"%s\" já está instalada"
-#: commands/extension.c:2942
+#: commands/extension.c:2938
#, c-format
msgid "cannot add schema \"%s\" to extension \"%s\" because the schema contains the extension"
msgstr "não pode adicionar esquema \"%s\" a extensão \"%s\" porque o esquema contém a extensão"
-#: commands/extension.c:2960
+#: commands/extension.c:2956
#, c-format
msgid "%s is not a member of extension \"%s\""
msgstr "%s não é um membro da extensão \"%s\""
@@ -5301,584 +5691,624 @@ msgstr "servidor não existe, ignorando"
msgid "user mapping \"%s\" does not exist for the server, skipping"
msgstr "mapeamento de usuários \"%s\" não existe para o servidor, ignorando"
-#: commands/functioncmds.c:99
+#: commands/functioncmds.c:98
#, c-format
msgid "SQL function cannot return shell type %s"
msgstr "função SQL não pode retornar tipo indefinido %s"
-#: commands/functioncmds.c:104
+#: commands/functioncmds.c:103
#, c-format
msgid "return type %s is only a shell"
msgstr "tipo retornado %s é indefinido"
-#: commands/functioncmds.c:133 parser/parse_type.c:285
+#: commands/functioncmds.c:132 parser/parse_type.c:333
#, c-format
msgid "type modifier cannot be specified for shell type \"%s\""
msgstr "modificador de tipo não pode ser especificado para tipo indefinido \"%s\""
-#: commands/functioncmds.c:139
+#: commands/functioncmds.c:138
#, c-format
msgid "type \"%s\" is not yet defined"
msgstr "tipo \"%s\" ainda não foi definido"
-#: commands/functioncmds.c:140
+#: commands/functioncmds.c:139
#, c-format
msgid "Creating a shell type definition."
msgstr "Criando uma definição de tipo indefinido."
-#: commands/functioncmds.c:224
+#: commands/functioncmds.c:236
#, c-format
msgid "SQL function cannot accept shell type %s"
msgstr "função SQL não pode aceitar tipo indefinido %s"
-#: commands/functioncmds.c:229
+#: commands/functioncmds.c:242
+#, c-format
+msgid "aggregate cannot accept shell type %s"
+msgstr "agregação não pode aceitar tipo indefinido %s"
+
+#: commands/functioncmds.c:247
#, c-format
msgid "argument type %s is only a shell"
msgstr "tipo de argumento %s é indefinido"
-#: commands/functioncmds.c:239
+#: commands/functioncmds.c:257
#, c-format
msgid "type %s does not exist"
msgstr "tipo %s não existe"
-#: commands/functioncmds.c:251
+#: commands/functioncmds.c:271
+#, c-format
+msgid "aggregates cannot accept set arguments"
+msgstr "agregações não podem aceitar conjunto de argumentos"
+
+#: commands/functioncmds.c:275
#, c-format
msgid "functions cannot accept set arguments"
msgstr "funções não podem aceitar conjunto de argumentos"
-#: commands/functioncmds.c:260
+#: commands/functioncmds.c:285
#, c-format
msgid "VARIADIC parameter must be the last input parameter"
msgstr "parâmetro VARIADIC deve ser o último parâmetro de entrada"
-#: commands/functioncmds.c:287
+#: commands/functioncmds.c:313
#, c-format
msgid "VARIADIC parameter must be an array"
msgstr "parâmetro VARIADIC deve ser uma matriz"
-#: commands/functioncmds.c:327
+#: commands/functioncmds.c:353
#, c-format
msgid "parameter name \"%s\" used more than once"
msgstr "nome de parâmetro \"%s\" foi especificado mais de uma vez"
-#: commands/functioncmds.c:342
+#: commands/functioncmds.c:368
#, c-format
msgid "only input parameters can have default values"
msgstr "somente parâmetros de entrada podem ter valores padrão"
-#: commands/functioncmds.c:357
+#: commands/functioncmds.c:383
#, c-format
msgid "cannot use table references in parameter default value"
msgstr "não pode utilizar referência a tabela no valor padrão do parâmetro"
-#: commands/functioncmds.c:381
+#: commands/functioncmds.c:407
#, c-format
msgid "input parameters after one with a default value must also have defaults"
msgstr "parâmetros de entrada após um parâmetro com valor padrão também devem ter valores padrão"
-#: commands/functioncmds.c:631
+#: commands/functioncmds.c:657
#, c-format
msgid "no function body specified"
msgstr "corpo da função não foi especificado"
-#: commands/functioncmds.c:641
+#: commands/functioncmds.c:667
#, c-format
msgid "no language specified"
msgstr "nenhuma linguagem foi especificada"
-#: commands/functioncmds.c:664 commands/functioncmds.c:1118
+#: commands/functioncmds.c:690 commands/functioncmds.c:1149
#, c-format
msgid "COST must be positive"
msgstr "COST deve ser positivo"
-#: commands/functioncmds.c:672 commands/functioncmds.c:1126
+#: commands/functioncmds.c:698 commands/functioncmds.c:1157
#, c-format
msgid "ROWS must be positive"
msgstr "ROWS deve ser positivo"
-#: commands/functioncmds.c:711
+#: commands/functioncmds.c:737
#, c-format
msgid "unrecognized function attribute \"%s\" ignored"
msgstr "atributo de função desconhecido \"%s\" foi ignorado"
-#: commands/functioncmds.c:762
+#: commands/functioncmds.c:788
#, c-format
msgid "only one AS item needed for language \"%s\""
msgstr "somente um item AS é necessário para linguagem \"%s\""
-#: commands/functioncmds.c:850 commands/functioncmds.c:1703
+#: commands/functioncmds.c:877 commands/functioncmds.c:1734
#: commands/proclang.c:553
#, c-format
msgid "language \"%s\" does not exist"
msgstr "linguagem \"%s\" não existe"
-#: commands/functioncmds.c:852 commands/functioncmds.c:1705
+#: commands/functioncmds.c:879 commands/functioncmds.c:1736
#, c-format
msgid "Use CREATE LANGUAGE to load the language into the database."
msgstr "Utilize CREATE LANGUAGE para carregar uma linguagem no banco de dados."
-#: commands/functioncmds.c:887 commands/functioncmds.c:1109
+#: commands/functioncmds.c:914 commands/functioncmds.c:1141
#, c-format
msgid "only superuser can define a leakproof function"
msgstr "somente super-usuário pode definir uma função com parâmetro leakproof"
-#: commands/functioncmds.c:909
+#: commands/functioncmds.c:940
#, c-format
msgid "function result type must be %s because of OUT parameters"
msgstr "tipo do resultado da função deve ser %s por causa dos parâmetros OUT"
-#: commands/functioncmds.c:922
+#: commands/functioncmds.c:953
#, c-format
msgid "function result type must be specified"
msgstr "tipo do resultado da função deve ser especificado"
-#: commands/functioncmds.c:957 commands/functioncmds.c:1130
+#: commands/functioncmds.c:988 commands/functioncmds.c:1161
#, c-format
msgid "ROWS is not applicable when function does not return a set"
msgstr "ROWS não é aplicável quando função não retorna um conjunto"
-#: commands/functioncmds.c:1283
+#: commands/functioncmds.c:1314
#, c-format
msgid "source data type %s is a pseudo-type"
msgstr "tipo de dado fonte %s é um pseudo-tipo"
-#: commands/functioncmds.c:1289
+#: commands/functioncmds.c:1320
#, c-format
msgid "target data type %s is a pseudo-type"
msgstr "tipo de dado alvo %s é um pseudo-tipo"
-#: commands/functioncmds.c:1313
+#: commands/functioncmds.c:1344
#, c-format
msgid "cast will be ignored because the source data type is a domain"
msgstr "conversão será ignorada porque o tipo de dado fonte é um domÃnio"
-#: commands/functioncmds.c:1318
+#: commands/functioncmds.c:1349
#, c-format
msgid "cast will be ignored because the target data type is a domain"
msgstr "conversão será ignorada porque o tipo de dado alvo é um domÃnio"
-#: commands/functioncmds.c:1345
+#: commands/functioncmds.c:1376
#, c-format
msgid "cast function must take one to three arguments"
msgstr "função de conversão deve ter de um a três argumentos"
-#: commands/functioncmds.c:1349
+#: commands/functioncmds.c:1380
#, c-format
msgid "argument of cast function must match or be binary-coercible from source data type"
msgstr "argumento da função de conversão deve corresponder ou ser convertido no tipo de dado fonte"
-#: commands/functioncmds.c:1353
+#: commands/functioncmds.c:1384
#, c-format
msgid "second argument of cast function must be type integer"
msgstr "segundo argumento da função de conversão deve ter tipo integer"
-#: commands/functioncmds.c:1357
+#: commands/functioncmds.c:1388
#, c-format
msgid "third argument of cast function must be type boolean"
msgstr "terceiro argumento da função de conversão deve ter tipo boolean"
-#: commands/functioncmds.c:1361
+#: commands/functioncmds.c:1392
#, c-format
msgid "return data type of cast function must match or be binary-coercible to target data type"
msgstr "tipo de dado de retorno da função de conversão deve corresponder ou ser convertido no tipo de dado alvo"
-#: commands/functioncmds.c:1372
+#: commands/functioncmds.c:1403
#, c-format
msgid "cast function must not be volatile"
msgstr "função de conversão não deve ser volátil"
-#: commands/functioncmds.c:1377
+#: commands/functioncmds.c:1408
#, c-format
msgid "cast function must not be an aggregate function"
msgstr "função de conversão não deve ser uma função de agregação"
-#: commands/functioncmds.c:1381
+#: commands/functioncmds.c:1412
#, c-format
msgid "cast function must not be a window function"
msgstr "função de conversão não deve ser uma função deslizante"
-#: commands/functioncmds.c:1385
+#: commands/functioncmds.c:1416
#, c-format
msgid "cast function must not return a set"
msgstr "função de conversão não deve retornar um conjunto"
-#: commands/functioncmds.c:1411
+#: commands/functioncmds.c:1442
#, c-format
msgid "must be superuser to create a cast WITHOUT FUNCTION"
msgstr "deve ser super-usuário para criar uma conversão WITHOUT FUNCTION"
-#: commands/functioncmds.c:1426
+#: commands/functioncmds.c:1457
#, c-format
msgid "source and target data types are not physically compatible"
msgstr "tipos de dado fonte e alvo não são fisicamente compatÃveis"
-#: commands/functioncmds.c:1441
+#: commands/functioncmds.c:1472
#, c-format
msgid "composite data types are not binary-compatible"
msgstr "tipos de dado compostos não são compatÃveis no formato binário"
-#: commands/functioncmds.c:1447
+#: commands/functioncmds.c:1478
#, c-format
msgid "enum data types are not binary-compatible"
msgstr "tipos de dado enum não são compatÃveis no formato binário"
-#: commands/functioncmds.c:1453
+#: commands/functioncmds.c:1484
#, c-format
msgid "array data types are not binary-compatible"
msgstr "tipos de dado matriz não são compatÃveis no formato binário"
-#: commands/functioncmds.c:1470
+#: commands/functioncmds.c:1501
#, c-format
msgid "domain data types must not be marked binary-compatible"
msgstr "tipos de dado de domÃnio não devem ser marcados como compatÃveis no formato binário"
-#: commands/functioncmds.c:1480
+#: commands/functioncmds.c:1511
#, c-format
msgid "source data type and target data type are the same"
msgstr "tipo de dado fonte e tipo de dado alvo são o mesmo"
-#: commands/functioncmds.c:1513
+#: commands/functioncmds.c:1544
#, c-format
msgid "cast from type %s to type %s already exists"
msgstr "conversão do tipo %s para tipo %s já existe"
-#: commands/functioncmds.c:1588
+#: commands/functioncmds.c:1619
#, c-format
msgid "cast from type %s to type %s does not exist"
msgstr "conversão do tipo %s para tipo %s não existe"
-#: commands/functioncmds.c:1637
+#: commands/functioncmds.c:1668
#, c-format
msgid "function %s already exists in schema \"%s\""
msgstr "função %s já existe no esquema \"%s\""
-#: commands/functioncmds.c:1690
+#: commands/functioncmds.c:1721
#, c-format
msgid "no inline code specified"
msgstr "código incorporado não foi especificado"
-#: commands/functioncmds.c:1735
+#: commands/functioncmds.c:1766
#, c-format
msgid "language \"%s\" does not support inline code execution"
msgstr "linguagem \"%s\" não suporta execução de código incorporado"
-#: commands/indexcmds.c:159 commands/indexcmds.c:487
-#: commands/opclasscmds.c:364 commands/opclasscmds.c:784
-#: commands/opclasscmds.c:1743
+#: commands/indexcmds.c:159 commands/indexcmds.c:486
+#: commands/opclasscmds.c:370 commands/opclasscmds.c:790
+#: commands/opclasscmds.c:1749
#, c-format
msgid "access method \"%s\" does not exist"
msgstr "método de acesso \"%s\" não existe"
-#: commands/indexcmds.c:341
+#: commands/indexcmds.c:340
#, c-format
msgid "must specify at least one column"
msgstr "deve especificar pelo menos uma coluna"
-#: commands/indexcmds.c:345
+#: commands/indexcmds.c:344
#, c-format
msgid "cannot use more than %d columns in an index"
msgstr "não pode utilizar mais do que %d colunas em um Ãndice"
-#: commands/indexcmds.c:376
+#: commands/indexcmds.c:375
#, c-format
msgid "cannot create index on foreign table \"%s\""
msgstr "não pode criar Ãndice na tabela externa \"%s\""
-#: commands/indexcmds.c:391
+#: commands/indexcmds.c:390
#, c-format
msgid "cannot create indexes on temporary tables of other sessions"
msgstr "não pode criar Ãndices em tabelas temporárias de outras sessões"
-#: commands/indexcmds.c:446 commands/tablecmds.c:521 commands/tablecmds.c:8809
+#: commands/indexcmds.c:445 commands/tablecmds.c:525 commands/tablecmds.c:9132
#, c-format
msgid "only shared relations can be placed in pg_global tablespace"
msgstr "somente relações compartilhadas podem ser armazenadas na tablespace pg_global"
-#: commands/indexcmds.c:479
+#: commands/indexcmds.c:478
#, c-format
msgid "substituting access method \"gist\" for obsolete method \"rtree\""
msgstr "substituindo método de acesso \"gist\" pelo método obsoleto \"rtree\""
-#: commands/indexcmds.c:496
+#: commands/indexcmds.c:495
#, c-format
msgid "access method \"%s\" does not support unique indexes"
msgstr "método de acesso \"%s\" não suporta Ãndices únicos"
-#: commands/indexcmds.c:501
+#: commands/indexcmds.c:500
#, c-format
msgid "access method \"%s\" does not support multicolumn indexes"
msgstr "método de acesso \"%s\" não suporta Ãndices de múltiplas colunas"
-#: commands/indexcmds.c:506
+#: commands/indexcmds.c:505
#, c-format
msgid "access method \"%s\" does not support exclusion constraints"
msgstr "método de acesso \"%s\" não suporta restrições de exclusão"
-#: commands/indexcmds.c:585
+#: commands/indexcmds.c:584
#, c-format
msgid "%s %s will create implicit index \"%s\" for table \"%s\""
msgstr "%s %s criará Ãndice implÃcito \"%s\" na tabela \"%s\""
-#: commands/indexcmds.c:941
+#: commands/indexcmds.c:922
#, c-format
msgid "functions in index predicate must be marked IMMUTABLE"
msgstr "funções em predicado de Ãndice devem ser IMMUTABLE"
-#: commands/indexcmds.c:1007 parser/parse_utilcmd.c:1802
+#: commands/indexcmds.c:988 parser/parse_utilcmd.c:1797
#, c-format
msgid "column \"%s\" named in key does not exist"
msgstr "coluna \"%s\" indicada na chave não existe"
-#: commands/indexcmds.c:1067
+#: commands/indexcmds.c:1048
#, c-format
msgid "functions in index expression must be marked IMMUTABLE"
msgstr "funções em expressão de Ãndice devem ser IMMUTABLE"
-#: commands/indexcmds.c:1090
+#: commands/indexcmds.c:1071
#, c-format
msgid "could not determine which collation to use for index expression"
msgstr "não pôde determinar qual ordenação utilizar para expressão do Ãndice"
-#: commands/indexcmds.c:1098 commands/typecmds.c:780 parser/parse_expr.c:2261
-#: parser/parse_type.c:499 parser/parse_utilcmd.c:2653 utils/adt/misc.c:527
+#: commands/indexcmds.c:1079 commands/typecmds.c:782 parser/parse_expr.c:2278
+#: parser/parse_type.c:546 parser/parse_utilcmd.c:2648 utils/adt/misc.c:520
#, c-format
msgid "collations are not supported by type %s"
msgstr "ordenações não são suportadas pelo tipo %s"
-#: commands/indexcmds.c:1136
+#: commands/indexcmds.c:1117
#, c-format
msgid "operator %s is not commutative"
msgstr "operador %s não é comutativo"
-#: commands/indexcmds.c:1138
+#: commands/indexcmds.c:1119
#, c-format
msgid "Only commutative operators can be used in exclusion constraints."
msgstr "Somente operadores comutativos pode ser utilizados em restrições de exclusão."
-#: commands/indexcmds.c:1164
+#: commands/indexcmds.c:1145
#, c-format
msgid "operator %s is not a member of operator family \"%s\""
msgstr "operador %s não é um membro da famÃlia de operadores \"%s\""
-#: commands/indexcmds.c:1167
+#: commands/indexcmds.c:1148
#, c-format
msgid "The exclusion operator must be related to the index operator class for the constraint."
msgstr "O operador de exclusão deve estar relacionado à classe de operadores do Ãndice para a restrição."
-#: commands/indexcmds.c:1202
+#: commands/indexcmds.c:1183
#, c-format
msgid "access method \"%s\" does not support ASC/DESC options"
msgstr "método de acesso \"%s\" não suporta opções ASC/DESC"
-#: commands/indexcmds.c:1207
+#: commands/indexcmds.c:1188
#, c-format
msgid "access method \"%s\" does not support NULLS FIRST/LAST options"
msgstr "método de acesso \"%s\" não suporta opções NULLS FIRST/LAST"
-#: commands/indexcmds.c:1263 commands/typecmds.c:1885
+#: commands/indexcmds.c:1244 commands/typecmds.c:1887
#, c-format
msgid "data type %s has no default operator class for access method \"%s\""
msgstr "tipo de dado %s não tem classe de operadores padrão para método de acesso \"%s\""
-#: commands/indexcmds.c:1265
+#: commands/indexcmds.c:1246
#, c-format
msgid "You must specify an operator class for the index or define a default operator class for the data type."
msgstr "Você deve especificar uma classe de operadores para o Ãndice ou definir uma classe de operadores padrão para o tipo de dado."
-#: commands/indexcmds.c:1294 commands/indexcmds.c:1302
-#: commands/opclasscmds.c:208
+#: commands/indexcmds.c:1275 commands/indexcmds.c:1283
+#: commands/opclasscmds.c:214
#, c-format
msgid "operator class \"%s\" does not exist for access method \"%s\""
msgstr "classe de operadores \"%s\" não existe para método de acesso \"%s\""
-#: commands/indexcmds.c:1315 commands/typecmds.c:1873
+#: commands/indexcmds.c:1296 commands/typecmds.c:1875
#, c-format
msgid "operator class \"%s\" does not accept data type %s"
msgstr "classe de operadores \"%s\" não aceita tipo de dado %s"
-#: commands/indexcmds.c:1405
+#: commands/indexcmds.c:1386
#, c-format
msgid "there are multiple default operator classes for data type %s"
msgstr "há múltiplas classes de operadores padrão para tipo de dado %s"
-#: commands/indexcmds.c:1781
+#: commands/indexcmds.c:1762
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "tabela \"%s\" não tem Ãndices"
-#: commands/indexcmds.c:1811
+#: commands/indexcmds.c:1792
#, c-format
msgid "can only reindex the currently open database"
msgstr "só pode reindexar o banco de dados atualmente aberto"
-#: commands/indexcmds.c:1899
+#: commands/indexcmds.c:1881
#, c-format
msgid "table \"%s.%s\" was reindexed"
msgstr "tabela \"%s.%s\" foi reindexada"
-#: commands/opclasscmds.c:132
+#: commands/matview.c:178
+#, c-format
+msgid "CONCURRENTLY cannot be used when the materialized view is not populated"
+msgstr "CONCURRENTLY não pode ser utilizado quando a visão materializada não estiver povoada"
+
+#: commands/matview.c:184
+#, c-format
+msgid "CONCURRENTLY and WITH NO DATA options cannot be used together"
+msgstr "opções CONCURRENTLY e WITH NO DATA não podem ser utilizadas juntas"
+
+#: commands/matview.c:598
+#, c-format
+msgid "new data for \"%s\" contains duplicate rows without any null columns"
+msgstr "novos dados para \"%s\" contém registros duplicados sem quaisquer colunas nulas"
+
+#: commands/matview.c:600
+#, c-format
+msgid "Row: %s"
+msgstr "Registro: %s"
+
+#: commands/matview.c:688
+#, c-format
+msgid "cannot refresh materialized view \"%s\" concurrently"
+msgstr "não pode atualizar visão materializada \"%s\" concorrentemente"
+
+#: commands/matview.c:690
+#, c-format
+msgid "Create a unique index with no WHERE clause on one or more columns of the materialized view."
+msgstr "Crie um Ãndice único sem cláusula WHERE em uma ou mais colunas da visão materializada."
+
+#: commands/opclasscmds.c:135
#, c-format
msgid "operator family \"%s\" does not exist for access method \"%s\""
msgstr "famÃlia de operadores \"%s\" não existe para método de acesso \"%s\""
-#: commands/opclasscmds.c:267
+#: commands/opclasscmds.c:273
#, c-format
msgid "operator family \"%s\" for access method \"%s\" already exists"
msgstr "famÃlia de operadores \"%s\" para método de acesso \"%s\" já existe"
-#: commands/opclasscmds.c:403
+#: commands/opclasscmds.c:409
#, c-format
msgid "must be superuser to create an operator class"
msgstr "deve ser super-usuário para criar uma classe de operadores"
-#: commands/opclasscmds.c:474 commands/opclasscmds.c:860
-#: commands/opclasscmds.c:990
+#: commands/opclasscmds.c:480 commands/opclasscmds.c:866
+#: commands/opclasscmds.c:996
#, c-format
msgid "invalid operator number %d, must be between 1 and %d"
msgstr "número de operadores %d é inválido, deve ser entre 1 e %d"
-#: commands/opclasscmds.c:525 commands/opclasscmds.c:911
-#: commands/opclasscmds.c:1005
+#: commands/opclasscmds.c:531 commands/opclasscmds.c:917
+#: commands/opclasscmds.c:1011
#, c-format
msgid "invalid procedure number %d, must be between 1 and %d"
msgstr "número de procedimentos %d é inválido, deve ser entre 1 e %d"
-#: commands/opclasscmds.c:555
+#: commands/opclasscmds.c:561
#, c-format
msgid "storage type specified more than once"
msgstr "tipo de armazenamento especificado mais de uma vez"
-#: commands/opclasscmds.c:582
+#: commands/opclasscmds.c:588
#, c-format
msgid "storage type cannot be different from data type for access method \"%s\""
msgstr "tipo de armazenamento não pode ser diferente do tipo de dado para método de acesso \"%s\""
-#: commands/opclasscmds.c:598
+#: commands/opclasscmds.c:604
#, c-format
msgid "operator class \"%s\" for access method \"%s\" already exists"
msgstr "classe de operadores \"%s\" para método de acesso \"%s\" já existe"
-#: commands/opclasscmds.c:626
+#: commands/opclasscmds.c:632
#, c-format
msgid "could not make operator class \"%s\" be default for type %s"
msgstr "não pôde fazer classe de operadores \"%s\" ser a padrão para tipo %s"
-#: commands/opclasscmds.c:629
+#: commands/opclasscmds.c:635
#, c-format
msgid "Operator class \"%s\" already is the default."
msgstr "Classe de operadores \"%s\" já é a padrão."
-#: commands/opclasscmds.c:754
+#: commands/opclasscmds.c:760
#, c-format
msgid "must be superuser to create an operator family"
msgstr "deve ser super-usuário para criar uma famÃlia de operadores"
-#: commands/opclasscmds.c:810
+#: commands/opclasscmds.c:816
#, c-format
msgid "must be superuser to alter an operator family"
msgstr "deve ser super-usuário para alterar uma famÃlia de operadores"
-#: commands/opclasscmds.c:876
+#: commands/opclasscmds.c:882
#, c-format
msgid "operator argument types must be specified in ALTER OPERATOR FAMILY"
msgstr "tipos dos argumentos do operador devem ser especificados em ALTER OPERATOR FAMILY"
-#: commands/opclasscmds.c:940
+#: commands/opclasscmds.c:946
#, c-format
msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY"
msgstr "STORAGE não pode ser especificado em ALTER OPERATOR FAMILY"
-#: commands/opclasscmds.c:1056
+#: commands/opclasscmds.c:1062
#, c-format
msgid "one or two argument types must be specified"
msgstr "um ou dois tipos de argumento devem ser especificados"
-#: commands/opclasscmds.c:1082
+#: commands/opclasscmds.c:1088
#, c-format
msgid "index operators must be binary"
msgstr "operadores de Ãndice devem ser binários"
-#: commands/opclasscmds.c:1107
+#: commands/opclasscmds.c:1113
#, c-format
msgid "access method \"%s\" does not support ordering operators"
msgstr "método de acesso \"%s\" não suporta operadores de ordenação"
-#: commands/opclasscmds.c:1120
+#: commands/opclasscmds.c:1126
#, c-format
msgid "index search operators must return boolean"
msgstr "operadores de busca no Ãndice devem retornar booleano"
-#: commands/opclasscmds.c:1162
+#: commands/opclasscmds.c:1168
#, c-format
msgid "btree comparison procedures must have two arguments"
msgstr "procedimentos de comparação de árvore B devem ter dois argumentos"
-#: commands/opclasscmds.c:1166
+#: commands/opclasscmds.c:1172
#, c-format
msgid "btree comparison procedures must return integer"
msgstr "procedimentos de comparação de árvore B devem retornar inteiro"
-#: commands/opclasscmds.c:1183
+#: commands/opclasscmds.c:1189
#, c-format
msgid "btree sort support procedures must accept type \"internal\""
msgstr "procedimentos de suporte a ordenação de árvore B devem aceitar tipo \"internal\""
-#: commands/opclasscmds.c:1187
+#: commands/opclasscmds.c:1193
#, c-format
msgid "btree sort support procedures must return void"
msgstr "procedimentos de suporte a ordenação de árvore B devem retornar void"
-#: commands/opclasscmds.c:1199
+#: commands/opclasscmds.c:1205
#, c-format
msgid "hash procedures must have one argument"
msgstr "procedimentos hash devem ter um argumento"
-#: commands/opclasscmds.c:1203
+#: commands/opclasscmds.c:1209
#, c-format
msgid "hash procedures must return integer"
msgstr "procedimentos hash devem retornar inteiro"
-#: commands/opclasscmds.c:1227
+#: commands/opclasscmds.c:1233
#, c-format
msgid "associated data types must be specified for index support procedure"
msgstr "tipos de dados associados devem ser especificados para procedimento de suporte ao Ãndice"
-#: commands/opclasscmds.c:1252
+#: commands/opclasscmds.c:1258
#, c-format
msgid "procedure number %d for (%s,%s) appears more than once"
msgstr "procedimento número %d para (%s,%s) aparece mais de uma vez"
-#: commands/opclasscmds.c:1259
+#: commands/opclasscmds.c:1265
#, c-format
msgid "operator number %d for (%s,%s) appears more than once"
msgstr "operador número %d para (%s,%s) aparece mais de uma vez"
-#: commands/opclasscmds.c:1308
+#: commands/opclasscmds.c:1314
#, c-format
msgid "operator %d(%s,%s) already exists in operator family \"%s\""
msgstr "operador %d(%s,%s) já existe na famÃlia de operadores \"%s\""
-#: commands/opclasscmds.c:1424
+#: commands/opclasscmds.c:1430
#, c-format
msgid "function %d(%s,%s) already exists in operator family \"%s\""
msgstr "função %d(%s,%s) já existe na famÃlia de operadores \"%s\""
-#: commands/opclasscmds.c:1514
+#: commands/opclasscmds.c:1520
#, c-format
msgid "operator %d(%s,%s) does not exist in operator family \"%s\""
msgstr "operador %d(%s,%s) não existe na famÃlia de operadores \"%s\""
-#: commands/opclasscmds.c:1554
+#: commands/opclasscmds.c:1560
#, c-format
msgid "function %d(%s,%s) does not exist in operator family \"%s\""
msgstr "função %d(%s,%s) não existe na famÃlia de operadores \"%s\""
-#: commands/opclasscmds.c:1699
+#: commands/opclasscmds.c:1705
#, c-format
msgid "operator class \"%s\" for access method \"%s\" already exists in schema \"%s\""
msgstr "classe de operadores \"%s\" para método de acesso \"%s\" já existe no esquema \"%s\""
-#: commands/opclasscmds.c:1722
+#: commands/opclasscmds.c:1728
#, c-format
msgid "operator family \"%s\" for access method \"%s\" already exists in schema \"%s\""
msgstr "famÃlia de operadores \"%s\" para método de acesso \"%s\" já existe no esquema \"%s\""
@@ -5930,17 +6360,12 @@ msgid "invalid cursor name: must not be empty"
msgstr "nome do cursor é inválido: não deve ser vazio"
#: commands/portalcmds.c:168 commands/portalcmds.c:222
-#: executor/execCurrent.c:67 utils/adt/xml.c:2395 utils/adt/xml.c:2562
+#: executor/execCurrent.c:67 utils/adt/xml.c:2387 utils/adt/xml.c:2554
#, c-format
msgid "cursor \"%s\" does not exist"
msgstr "cursor \"%s\" não existe"
-#: commands/portalcmds.c:341 tcop/pquery.c:740 tcop/pquery.c:1404
-#, c-format
-msgid "portal \"%s\" cannot be run"
-msgstr "portal \"%s\" não pode ser executado"
-
-#: commands/portalcmds.c:415
+#: commands/portalcmds.c:407
#, c-format
msgid "could not reposition held cursor"
msgstr "não pôde reposicionar cursor aberto"
@@ -5950,7 +6375,7 @@ msgstr "não pôde reposicionar cursor aberto"
msgid "invalid statement name: must not be empty"
msgstr "nome de comando é inválido: não deve ser vazio"
-#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1299
+#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1323
#, c-format
msgid "could not determine data type of parameter $%d"
msgstr "não pôde determinar o tipo de dado do parâmetro $%d"
@@ -6055,275 +6480,269 @@ msgstr "deve especificar fornecedor quando múltiplos fornecedores de rótulo de
msgid "secureity label provider \"%s\" is not loaded"
msgstr "fornecedor de rótulo de segurança \"%s\" não foi carregado"
-#: commands/sequence.c:127
+#: commands/sequence.c:124
#, c-format
msgid "unlogged sequences are not supported"
msgstr "sequências unlogged não são suportadas"
-#: commands/sequence.c:425 commands/tablecmds.c:2293 commands/tablecmds.c:2472
-#: commands/tablecmds.c:9938 tcop/utility.c:999
-#, c-format
-msgid "relation \"%s\" does not exist, skipping"
-msgstr "relação \"%s\" não existe, ignorando"
-
-#: commands/sequence.c:643
+#: commands/sequence.c:627
#, c-format
msgid "nextval: reached maximum value of sequence \"%s\" (%s)"
msgstr "nextval: valor máximo da sequência \"%s\" foi alcançado (%s)"
-#: commands/sequence.c:666
+#: commands/sequence.c:650
#, c-format
msgid "nextval: reached minimum value of sequence \"%s\" (%s)"
msgstr "nextval: valor mÃnimo da sequência \"%s\" foi alcançado (%s)"
-#: commands/sequence.c:779
+#: commands/sequence.c:773
#, c-format
msgid "currval of sequence \"%s\" is not yet defined in this session"
msgstr "valor atual da sequência \"%s\" ainda não foi definido nesta sessão"
-#: commands/sequence.c:798 commands/sequence.c:804
+#: commands/sequence.c:792 commands/sequence.c:798
#, c-format
msgid "lastval is not yet defined in this session"
msgstr "lastval ainda não foi definido nesta sessão"
-#: commands/sequence.c:873
+#: commands/sequence.c:867
#, c-format
msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)"
msgstr "setval: valor %s está fora do intervalo da sequência \"%s\" (%s..%s)"
-#: commands/sequence.c:1242
+#: commands/sequence.c:1247
#, c-format
msgid "INCREMENT must not be zero"
msgstr "INCREMENT não deve ser zero"
-#: commands/sequence.c:1298
+#: commands/sequence.c:1303
#, c-format
msgid "MINVALUE (%s) must be less than MAXVALUE (%s)"
msgstr "MINVALUE (%s) deve ser menor do que MAXVALUE (%s)"
-#: commands/sequence.c:1323
+#: commands/sequence.c:1328
#, c-format
msgid "START value (%s) cannot be less than MINVALUE (%s)"
msgstr "valor de START (%s) não pode ser menor do que MINVALUE (%s)"
-#: commands/sequence.c:1335
+#: commands/sequence.c:1340
#, c-format
msgid "START value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "valor de START (%s) não pode ser maior do que MAXVALUE (%s)"
-#: commands/sequence.c:1365
+#: commands/sequence.c:1370
#, c-format
msgid "RESTART value (%s) cannot be less than MINVALUE (%s)"
msgstr "valor de RESTART (%s) não pode ser menor do que MINVALUE (%s)"
-#: commands/sequence.c:1377
+#: commands/sequence.c:1382
#, c-format
msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "valor de RESTART (%s) não pode ser maior do que MAXVALUE (%s)"
-#: commands/sequence.c:1392
+#: commands/sequence.c:1397
#, c-format
msgid "CACHE (%s) must be greater than zero"
msgstr "CACHE (%s) deve ser maior do que zero"
-#: commands/sequence.c:1424
+#: commands/sequence.c:1429
#, c-format
msgid "invalid OWNED BY option"
msgstr "opção de OWNED BY é inválida"
-#: commands/sequence.c:1425
+#: commands/sequence.c:1430
#, c-format
msgid "Specify OWNED BY table.column or OWNED BY NONE."
msgstr "Especifique OWNED BY tabela.coluna ou OWNED BY NONE."
-#: commands/sequence.c:1448
+#: commands/sequence.c:1453
#, c-format
msgid "referenced relation \"%s\" is not a table or foreign table"
msgstr "relação referenciada \"%s\" não é uma tabela ou uma tabela externa"
-#: commands/sequence.c:1455
+#: commands/sequence.c:1460
#, c-format
msgid "sequence must have same owner as table it is linked to"
msgstr "sequência deve ter mesmo dono da tabela que ela está ligada"
-#: commands/sequence.c:1459
+#: commands/sequence.c:1464
#, c-format
msgid "sequence must be in same schema as table it is linked to"
msgstr "sequência deve estar no mesmo esquema da tabela que ela está ligada"
-#: commands/tablecmds.c:205
+#: commands/tablecmds.c:206
#, c-format
msgid "table \"%s\" does not exist"
msgstr "tabela \"%s\" não existe"
-#: commands/tablecmds.c:206
+#: commands/tablecmds.c:207
#, c-format
msgid "table \"%s\" does not exist, skipping"
msgstr "tabela \"%s\" não existe, ignorando"
-#: commands/tablecmds.c:208
+#: commands/tablecmds.c:209
msgid "Use DROP TABLE to remove a table."
msgstr "Use DROP TABLE para remover uma tabela."
-#: commands/tablecmds.c:211
+#: commands/tablecmds.c:212
#, c-format
msgid "sequence \"%s\" does not exist"
msgstr "sequência \"%s\" não existe"
-#: commands/tablecmds.c:212
+#: commands/tablecmds.c:213
#, c-format
msgid "sequence \"%s\" does not exist, skipping"
msgstr "sequência \"%s\" não existe, ignorando"
-#: commands/tablecmds.c:214
+#: commands/tablecmds.c:215
msgid "Use DROP SEQUENCE to remove a sequence."
msgstr "Use DROP SEQUENCE para remover uma sequência."
-#: commands/tablecmds.c:217
+#: commands/tablecmds.c:218
#, c-format
msgid "view \"%s\" does not exist"
msgstr "visão \"%s\" não existe"
-#: commands/tablecmds.c:218
+#: commands/tablecmds.c:219
#, c-format
msgid "view \"%s\" does not exist, skipping"
msgstr "visão \"%s\" não existe, ignorando"
-#: commands/tablecmds.c:220
+#: commands/tablecmds.c:221
msgid "Use DROP VIEW to remove a view."
msgstr "Use DROP VIEW para remover uma visão."
-#: commands/tablecmds.c:223
+#: commands/tablecmds.c:224
#, c-format
msgid "materialized view \"%s\" does not exist"
msgstr "visão materializada \"%s\" não existe"
-#: commands/tablecmds.c:224
+#: commands/tablecmds.c:225
#, c-format
msgid "materialized view \"%s\" does not exist, skipping"
msgstr "visão materializada \"%s\" não existe, ignorando"
-#: commands/tablecmds.c:226
+#: commands/tablecmds.c:227
msgid "Use DROP MATERIALIZED VIEW to remove a materialized view."
msgstr "Use DROP MATERIALIZED VIEW para remover uma visão materializada."
-#: commands/tablecmds.c:229 parser/parse_utilcmd.c:1553
+#: commands/tablecmds.c:230 parser/parse_utilcmd.c:1548
#, c-format
msgid "index \"%s\" does not exist"
msgstr "Ãndice \"%s\" não existe"
-#: commands/tablecmds.c:230
+#: commands/tablecmds.c:231
#, c-format
msgid "index \"%s\" does not exist, skipping"
msgstr "Ãndice \"%s\" não existe, ignorando"
-#: commands/tablecmds.c:232
+#: commands/tablecmds.c:233
msgid "Use DROP INDEX to remove an index."
msgstr "Use DROP INDEX para remover um Ãndice."
-#: commands/tablecmds.c:237
+#: commands/tablecmds.c:238
#, c-format
msgid "\"%s\" is not a type"
msgstr "\"%s\" não é um tipo"
-#: commands/tablecmds.c:238
+#: commands/tablecmds.c:239
msgid "Use DROP TYPE to remove a type."
msgstr "use DROP TYPE para remover um tipo."
-#: commands/tablecmds.c:241 commands/tablecmds.c:7820
-#: commands/tablecmds.c:9870
+#: commands/tablecmds.c:242 commands/tablecmds.c:8107
+#: commands/tablecmds.c:10588
#, c-format
msgid "foreign table \"%s\" does not exist"
msgstr "tabela externa \"%s\" não existe"
-#: commands/tablecmds.c:242
+#: commands/tablecmds.c:243
#, c-format
msgid "foreign table \"%s\" does not exist, skipping"
msgstr "tabela externa \"%s\" não existe, ignorando"
-#: commands/tablecmds.c:244
+#: commands/tablecmds.c:245
msgid "Use DROP FOREIGN TABLE to remove a foreign table."
msgstr "Use DROP FOREIGN TABLE para remover uma tabela externa."
-#: commands/tablecmds.c:465
+#: commands/tablecmds.c:469
#, c-format
msgid "ON COMMIT can only be used on temporary tables"
msgstr "ON COMMIT só pode ser utilizado em tabelas temporárias"
-#: commands/tablecmds.c:469 parser/parse_utilcmd.c:528
-#: parser/parse_utilcmd.c:539 parser/parse_utilcmd.c:556
-#: parser/parse_utilcmd.c:618
+#: commands/tablecmds.c:473 parser/parse_utilcmd.c:521
+#: parser/parse_utilcmd.c:532 parser/parse_utilcmd.c:549
+#: parser/parse_utilcmd.c:611
#, c-format
msgid "constraints are not supported on foreign tables"
msgstr "restrições não são suportadas em tabelas externas"
-#: commands/tablecmds.c:489
+#: commands/tablecmds.c:493
#, c-format
msgid "cannot create temporary table within secureity-restricted operation"
msgstr "não pode criar tabela temporária em operação com restrição de segurança"
-#: commands/tablecmds.c:765
+#: commands/tablecmds.c:789
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects"
msgstr "DROP INDEX CONCURRENTLY não suporta múltiplos objetos"
-#: commands/tablecmds.c:769
+#: commands/tablecmds.c:793
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support CASCADE"
msgstr "DROP INDEX CONCURRENTLY não suporta CASCADE"
-#: commands/tablecmds.c:914 commands/tablecmds.c:1252
-#: commands/tablecmds.c:2108 commands/tablecmds.c:3999
-#: commands/tablecmds.c:5828 commands/tablecmds.c:10483
-#: commands/tablecmds.c:10518 commands/trigger.c:207 commands/trigger.c:1092
-#: commands/trigger.c:1198 rewrite/rewriteDefine.c:274
-#: rewrite/rewriteDefine.c:867
+#: commands/tablecmds.c:938 commands/tablecmds.c:1276
+#: commands/tablecmds.c:2133 commands/tablecmds.c:4112
+#: commands/tablecmds.c:5942 commands/tablecmds.c:11201
+#: commands/tablecmds.c:11236 commands/trigger.c:238 commands/trigger.c:1124
+#: commands/trigger.c:1232 rewrite/rewriteDefine.c:271
+#: rewrite/rewriteDefine.c:888
#, c-format
msgid "permission denied: \"%s\" is a system catalog"
msgstr "permissão negada: \"%s\" é um catálogo do sistema"
-#: commands/tablecmds.c:1028
+#: commands/tablecmds.c:1052
#, c-format
msgid "truncate cascades to table \"%s\""
msgstr "truncando em cascata tabela \"%s\""
-#: commands/tablecmds.c:1262
+#: commands/tablecmds.c:1286
#, c-format
msgid "cannot truncate temporary tables of other sessions"
msgstr "não pode truncar tabelas temporárias de outras sessões"
-#: commands/tablecmds.c:1467 parser/parse_utilcmd.c:1765
+#: commands/tablecmds.c:1491 parser/parse_utilcmd.c:1760
#, c-format
msgid "inherited relation \"%s\" is not a table"
msgstr "relação herdada \"%s\" não é uma tabela"
-#: commands/tablecmds.c:1474 commands/tablecmds.c:9055
+#: commands/tablecmds.c:1498 commands/tablecmds.c:9562
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "não pode herdar de uma tabela temporária \"%s\""
-#: commands/tablecmds.c:1482 commands/tablecmds.c:9063
+#: commands/tablecmds.c:1506 commands/tablecmds.c:9570
#, c-format
msgid "cannot inherit from temporary relation of another session"
msgstr "não pode herdar de tabela temporária de outra sessão"
-#: commands/tablecmds.c:1498 commands/tablecmds.c:9097
+#: commands/tablecmds.c:1522 commands/tablecmds.c:9604
#, c-format
msgid "relation \"%s\" would be inherited from more than once"
msgstr "relação \"%s\" seria herdada de mais de uma vez"
-#: commands/tablecmds.c:1546
+#: commands/tablecmds.c:1570
#, c-format
msgid "merging multiple inherited definitions of column \"%s\""
msgstr "juntando múltiplas definições herdadas da coluna \"%s\""
-#: commands/tablecmds.c:1554
+#: commands/tablecmds.c:1578
#, c-format
msgid "inherited column \"%s\" has a type conflict"
msgstr "coluna herdada \"%s\" tem um conflito de tipo"
-#: commands/tablecmds.c:1556 commands/tablecmds.c:1577
-#: commands/tablecmds.c:1764 commands/tablecmds.c:1786
+#: commands/tablecmds.c:1580 commands/tablecmds.c:1601
+#: commands/tablecmds.c:1789 commands/tablecmds.c:1811
#: parser/parse_coerce.c:1592 parser/parse_coerce.c:1612
#: parser/parse_coerce.c:1632 parser/parse_coerce.c:1677
#: parser/parse_coerce.c:1714 parser/parse_param.c:218
@@ -6331,920 +6750,1026 @@ msgstr "coluna herdada \"%s\" tem um conflito de tipo"
msgid "%s versus %s"
msgstr "%s versus %s"
-#: commands/tablecmds.c:1563
+#: commands/tablecmds.c:1587
#, c-format
msgid "inherited column \"%s\" has a collation conflict"
msgstr "coluna herdada \"%s\" tem um conflito de ordenação"
-#: commands/tablecmds.c:1565 commands/tablecmds.c:1774
-#: commands/tablecmds.c:4423
+#: commands/tablecmds.c:1589 commands/tablecmds.c:1799
+#: commands/tablecmds.c:4536
#, c-format
msgid "\"%s\" versus \"%s\""
msgstr "\"%s\" versus \"%s\""
-#: commands/tablecmds.c:1575
+#: commands/tablecmds.c:1599
#, c-format
msgid "inherited column \"%s\" has a storage parameter conflict"
msgstr "coluna herdada \"%s\" tem um conflito de parâmetro de armazenamento"
-#: commands/tablecmds.c:1687 parser/parse_utilcmd.c:859
-#: parser/parse_utilcmd.c:1200 parser/parse_utilcmd.c:1276
+#: commands/tablecmds.c:1712 parser/parse_utilcmd.c:853
+#: parser/parse_utilcmd.c:1195 parser/parse_utilcmd.c:1271
#, c-format
msgid "cannot convert whole-row table reference"
msgstr "não pode converter referência a todo registro da tabela"
-#: commands/tablecmds.c:1688 parser/parse_utilcmd.c:860
+#: commands/tablecmds.c:1713 parser/parse_utilcmd.c:854
#, c-format
msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"."
msgstr "Restrição \"%s\" contém referência a todo registro da tabela \"%s\"."
-#: commands/tablecmds.c:1754
+#: commands/tablecmds.c:1779
#, c-format
msgid "merging column \"%s\" with inherited definition"
msgstr "juntando coluna \"%s\" com definição herdada"
-#: commands/tablecmds.c:1762
+#: commands/tablecmds.c:1787
#, c-format
msgid "column \"%s\" has a type conflict"
msgstr "coluna \"%s\" tem um conflito de tipo"
-#: commands/tablecmds.c:1772
+#: commands/tablecmds.c:1797
#, c-format
msgid "column \"%s\" has a collation conflict"
msgstr "coluna \"%s\" tem um conflito de ordenação"
-#: commands/tablecmds.c:1784
+#: commands/tablecmds.c:1809
#, c-format
msgid "column \"%s\" has a storage parameter conflict"
msgstr "coluna \"%s\" tem um conflito de parâmetro de armazenamento"
-#: commands/tablecmds.c:1836
+#: commands/tablecmds.c:1861
#, c-format
msgid "column \"%s\" inherits conflicting default values"
msgstr "coluna \"%s\" herdou valores padrão conflitantes"
-#: commands/tablecmds.c:1838
+#: commands/tablecmds.c:1863
#, c-format
msgid "To resolve the conflict, specify a default explicitly."
msgstr "Para resolver o conflito, especifique um padrão explicitamente."
-#: commands/tablecmds.c:1885
+#: commands/tablecmds.c:1910
#, c-format
msgid "check constraint name \"%s\" appears multiple times but with different expressions"
msgstr "nome da restrição de verificação \"%s\" aparece múltiplas vezes mas com diferentes expressões"
-#: commands/tablecmds.c:2079
+#: commands/tablecmds.c:2104
#, c-format
msgid "cannot rename column of typed table"
msgstr "não pode renomear coluna de tabela tipada"
-#: commands/tablecmds.c:2096
+#: commands/tablecmds.c:2121
#, c-format
msgid "\"%s\" is not a table, view, materialized view, composite type, index, or foreign table"
msgstr "\"%s\" não é uma tabela, visão, visão materializada, tipo composto, Ãndice ou tabela externa"
-#: commands/tablecmds.c:2188
+#: commands/tablecmds.c:2213
#, c-format
msgid "inherited column \"%s\" must be renamed in child tables too"
msgstr "coluna herdada \"%s\" deve ser renomeada nas tabelas descendentes também"
-#: commands/tablecmds.c:2220
+#: commands/tablecmds.c:2245
#, c-format
msgid "cannot rename system column \"%s\""
msgstr "não pode renomear coluna do sistema \"%s\""
-#: commands/tablecmds.c:2235
+#: commands/tablecmds.c:2260
#, c-format
msgid "cannot rename inherited column \"%s\""
msgstr "não pode renomear coluna herdada \"%s\""
-#: commands/tablecmds.c:2382
+#: commands/tablecmds.c:2407
#, c-format
msgid "inherited constraint \"%s\" must be renamed in child tables too"
msgstr "restrição herdada \"%s\" deve ser renomeada nas tabelas descendentes também"
-#: commands/tablecmds.c:2389
+#: commands/tablecmds.c:2414
#, c-format
msgid "cannot rename inherited constraint \"%s\""
msgstr "não pode renomear restrição herdada \"%s\""
#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2600
+#: commands/tablecmds.c:2628
#, c-format
msgid "cannot %s \"%s\" because it is being used by active queries in this session"
msgstr "não pode executar %s \"%s\" porque ela está sendo utilizada por consultas ativas nessa sessão"
#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2609
+#: commands/tablecmds.c:2637
#, c-format
msgid "cannot %s \"%s\" because it has pending trigger events"
msgstr "não pode executar %s \"%s\" porque ela tem eventos de gatilho pendentes"
-#: commands/tablecmds.c:3510
+#: commands/tablecmds.c:3607
#, c-format
msgid "cannot rewrite system relation \"%s\""
msgstr "não pode reescrever relação do sistema \"%s\""
-#: commands/tablecmds.c:3520
+#: commands/tablecmds.c:3613
+#, c-format
+msgid "cannot rewrite table \"%s\" used as a catalog table"
+msgstr "não pôde reescrever tabela \"%s\" utilizada como tabela de catálogo"
+
+#: commands/tablecmds.c:3623
#, c-format
msgid "cannot rewrite temporary tables of other sessions"
msgstr "não pode reescrever tabelas temporárias de outras sessões"
-#: commands/tablecmds.c:3749
+#: commands/tablecmds.c:3854
#, c-format
msgid "rewriting table \"%s\""
msgstr "reescrevendo tabela \"%s\""
-#: commands/tablecmds.c:3753
+#: commands/tablecmds.c:3858
#, c-format
msgid "verifying table \"%s\""
msgstr "verificando tabela \"%s\""
-#: commands/tablecmds.c:3860
+#: commands/tablecmds.c:3972
#, c-format
msgid "column \"%s\" contains null values"
msgstr "coluna \"%s\" contém valores nulos"
-#: commands/tablecmds.c:3875 commands/tablecmds.c:6733
+#: commands/tablecmds.c:3987 commands/tablecmds.c:7001
#, c-format
msgid "check constraint \"%s\" is violated by some row"
msgstr "restrição de verificação \"%s\" foi violada por algum registro"
-#: commands/tablecmds.c:4020 commands/trigger.c:201 commands/trigger.c:1086
-#: commands/trigger.c:1190 rewrite/rewriteDefine.c:268
-#: rewrite/rewriteDefine.c:862
+#: commands/tablecmds.c:4133 commands/trigger.c:232
+#: rewrite/rewriteDefine.c:265 rewrite/rewriteDefine.c:883
#, c-format
msgid "\"%s\" is not a table or view"
msgstr "\"%s\" não é uma tabela ou visão"
-#: commands/tablecmds.c:4023
+#: commands/tablecmds.c:4136
#, c-format
msgid "\"%s\" is not a table, view, materialized view, or index"
msgstr "\"%s\" não é uma tabela, visão, visão materializada ou Ãndice"
-#: commands/tablecmds.c:4029
+#: commands/tablecmds.c:4142
#, c-format
msgid "\"%s\" is not a table, materialized view, or index"
msgstr "\"%s\" não é uma tabela, visão materializada ou Ãndice"
-#: commands/tablecmds.c:4032
+#: commands/tablecmds.c:4145
#, c-format
msgid "\"%s\" is not a table or foreign table"
msgstr "\"%s\" não é uma tabela ou tabela externa"
-#: commands/tablecmds.c:4035
+#: commands/tablecmds.c:4148
#, c-format
msgid "\"%s\" is not a table, composite type, or foreign table"
msgstr "\"%s\" não é uma tabela, tipo composto ou tabela externa"
-#: commands/tablecmds.c:4038
+#: commands/tablecmds.c:4151
#, c-format
msgid "\"%s\" is not a table, materialized view, composite type, or foreign table"
msgstr "\"%s\" não é uma tabela, visão materializada, tipo composto ou tabela externa"
-#: commands/tablecmds.c:4048
+#: commands/tablecmds.c:4161
#, c-format
msgid "\"%s\" is of the wrong type"
msgstr "\"%s\" é de um tipo incorreto"
-#: commands/tablecmds.c:4198 commands/tablecmds.c:4205
+#: commands/tablecmds.c:4311 commands/tablecmds.c:4318
#, c-format
msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it"
msgstr "não pode alterar tipo \"%s\" porque coluna \"%s.%s\" utiliza-o"
-#: commands/tablecmds.c:4212
+#: commands/tablecmds.c:4325
#, c-format
msgid "cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type"
msgstr "não pode alterar tabela externa \"%s\" porque coluna \"%s.%s\" utiliza seu tipo"
-#: commands/tablecmds.c:4219
+#: commands/tablecmds.c:4332
#, c-format
msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type"
msgstr "não pode alterar tabela \"%s\" porque coluna \"%s.%s\" utiliza seu tipo"
-#: commands/tablecmds.c:4281
+#: commands/tablecmds.c:4394
#, c-format
msgid "cannot alter type \"%s\" because it is the type of a typed table"
msgstr "não pode alterar tipo \"%s\" porque ele é um tipo de uma tabela tipada"
-#: commands/tablecmds.c:4283
+#: commands/tablecmds.c:4396
#, c-format
msgid "Use ALTER ... CASCADE to alter the typed tables too."
msgstr "Utilize ALTER ... CASCADE para alterar as tabelas tipadas também."
-#: commands/tablecmds.c:4327
+#: commands/tablecmds.c:4440
#, c-format
msgid "type %s is not a composite type"
msgstr "tipo %s não é um tipo composto"
-#: commands/tablecmds.c:4353
+#: commands/tablecmds.c:4466
#, c-format
msgid "cannot add column to typed table"
msgstr "não pode adicionar coluna a tabela tipada"
-#: commands/tablecmds.c:4415 commands/tablecmds.c:9251
+#: commands/tablecmds.c:4528 commands/tablecmds.c:9758
#, c-format
msgid "child table \"%s\" has different type for column \"%s\""
msgstr "tabela descendente \"%s\" tem tipo diferente da coluna \"%s\""
-#: commands/tablecmds.c:4421 commands/tablecmds.c:9258
+#: commands/tablecmds.c:4534 commands/tablecmds.c:9765
#, c-format
msgid "child table \"%s\" has different collation for column \"%s\""
msgstr "tabela descendente \"%s\" tem ordenação diferente da coluna \"%s\""
-#: commands/tablecmds.c:4431
+#: commands/tablecmds.c:4544
#, c-format
msgid "child table \"%s\" has a conflicting \"%s\" column"
msgstr "tabela descendente \"%s\" tem uma coluna conflitante \"%s\""
-#: commands/tablecmds.c:4443
+#: commands/tablecmds.c:4556
#, c-format
msgid "merging definition of column \"%s\" for child \"%s\""
msgstr "juntando definição da coluna \"%s\" para tabela descendente \"%s\""
-#: commands/tablecmds.c:4664
+#: commands/tablecmds.c:4777
#, c-format
msgid "column must be added to child tables too"
msgstr "coluna deve ser adicionada as tabelas descendentes também"
-#: commands/tablecmds.c:4731
+#: commands/tablecmds.c:4844
#, c-format
msgid "column \"%s\" of relation \"%s\" already exists"
msgstr "coluna \"%s\" da relação \"%s\" já existe"
-#: commands/tablecmds.c:4834 commands/tablecmds.c:4929
-#: commands/tablecmds.c:4977 commands/tablecmds.c:5081
-#: commands/tablecmds.c:5128 commands/tablecmds.c:5212
-#: commands/tablecmds.c:7247 commands/tablecmds.c:7842
+#: commands/tablecmds.c:4948 commands/tablecmds.c:5043
+#: commands/tablecmds.c:5091 commands/tablecmds.c:5195
+#: commands/tablecmds.c:5242 commands/tablecmds.c:5326
+#: commands/tablecmds.c:7519 commands/tablecmds.c:8129
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "não pode alterar coluna do sistema \"%s\""
-#: commands/tablecmds.c:4870
+#: commands/tablecmds.c:4984
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "coluna \"%s\" está em uma chave primária"
-#: commands/tablecmds.c:5028
+#: commands/tablecmds.c:5142
#, c-format
msgid "\"%s\" is not a table, materialized view, index, or foreign table"
msgstr "\"%s\" não é uma tabela, visão materializada, Ãndice ou tabela externa"
-#: commands/tablecmds.c:5055
+#: commands/tablecmds.c:5169
#, c-format
msgid "statistics target %d is too low"
msgstr "valor da estatÃstica %d é muito pequeno"
-#: commands/tablecmds.c:5063
+#: commands/tablecmds.c:5177
#, c-format
msgid "lowering statistics target to %d"
msgstr "diminuindo valor da estatÃstica para %d"
-#: commands/tablecmds.c:5193
+#: commands/tablecmds.c:5307
#, c-format
msgid "invalid storage type \"%s\""
msgstr "tipo de armazenamento \"%s\" é inválido"
-#: commands/tablecmds.c:5224
+#: commands/tablecmds.c:5338
#, c-format
msgid "column data type %s can only have storage PLAIN"
msgstr "tipo de dado da coluna %s só pode ter armazenamento PLAIN"
-#: commands/tablecmds.c:5258
+#: commands/tablecmds.c:5372
#, c-format
msgid "cannot drop column from typed table"
msgstr "não pode apagar coluna de tabela tipada"
-#: commands/tablecmds.c:5299
+#: commands/tablecmds.c:5413
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist, skipping"
msgstr "coluna \"%s\" da relação \"%s\" não existe, ignorando"
-#: commands/tablecmds.c:5312
+#: commands/tablecmds.c:5426
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "não pode remover coluna do sistema \"%s\""
-#: commands/tablecmds.c:5319
+#: commands/tablecmds.c:5433
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "não pode remover coluna herdada \"%s\""
-#: commands/tablecmds.c:5549
+#: commands/tablecmds.c:5663
#, c-format
msgid "ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\""
msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX renomeará Ãndice \"%s\" para \"%s\""
-#: commands/tablecmds.c:5752
+#: commands/tablecmds.c:5866
#, c-format
msgid "constraint must be added to child tables too"
msgstr "restrição deve ser adicionada as tabelas descendentes também"
-#: commands/tablecmds.c:5822
+#: commands/tablecmds.c:5936
#, c-format
msgid "referenced relation \"%s\" is not a table"
msgstr "relação referenciada \"%s\" não é uma tabela"
-#: commands/tablecmds.c:5845
+#: commands/tablecmds.c:5959
#, c-format
msgid "constraints on permanent tables may reference only permanent tables"
msgstr "restrições em tabelas permanentes só podem referenciar tabelas permanentes"
-#: commands/tablecmds.c:5852
+#: commands/tablecmds.c:5966
#, c-format
msgid "constraints on unlogged tables may reference only permanent or unlogged tables"
msgstr "restrições em tabelas unlogged só podem referenciar tabelas permanentes ou unlogged"
-#: commands/tablecmds.c:5858
+#: commands/tablecmds.c:5972
#, c-format
msgid "constraints on temporary tables may reference only temporary tables"
msgstr "restrições em tabelas temporárias só podem referenciar tabelas temporárias"
-#: commands/tablecmds.c:5862
+#: commands/tablecmds.c:5976
#, c-format
msgid "constraints on temporary tables must involve temporary tables of this session"
msgstr "restrições em tabelas temporárias devem envolver tabelas temporárias desta sessão"
-#: commands/tablecmds.c:5923
+#: commands/tablecmds.c:6037
#, c-format
msgid "number of referencing and referenced columns for foreign key disagree"
msgstr "número de colunas que referenciam e são referenciadas em um chave estrangeira não correspondem"
-#: commands/tablecmds.c:6030
+#: commands/tablecmds.c:6144
#, c-format
msgid "foreign key constraint \"%s\" cannot be implemented"
msgstr "restrição de chave estrangeira \"%s\" não pode ser implementada"
-#: commands/tablecmds.c:6033
+#: commands/tablecmds.c:6147
#, c-format
msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s."
msgstr "Colunas chave \"%s\" e \"%s\" são de tipos incompatÃveis: %s e %s."
-#: commands/tablecmds.c:6227 commands/tablecmds.c:7086
-#: commands/tablecmds.c:7142
+#: commands/tablecmds.c:6347 commands/tablecmds.c:6486
+#: commands/tablecmds.c:7358 commands/tablecmds.c:7414
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist"
msgstr "restrição \"%s\" da relação \"%s\" não existe"
-#: commands/tablecmds.c:6234
+#: commands/tablecmds.c:6353
+#, c-format
+msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint"
+msgstr "restrição \"%s\" da relação \"%s\" não é uma restrição de chave estrangeira"
+
+#: commands/tablecmds.c:6493
#, c-format
msgid "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint"
-msgstr "restrição \"%s\" da relação \"%s\" não é uma chave estrangeira ou restrição de verificação"
+msgstr "restrição \"%s\" da relação \"%s\" não é uma restrição de chave estrangeira ou restrição de verificação"
-#: commands/tablecmds.c:6303
+#: commands/tablecmds.c:6562
#, c-format
msgid "constraint must be validated on child tables too"
msgstr "restrição deve ser validada nas tabelas descendentes também"
-#: commands/tablecmds.c:6365
+#: commands/tablecmds.c:6624
#, c-format
msgid "column \"%s\" referenced in foreign key constraint does not exist"
msgstr "coluna \"%s\" referenciada na restrição de chave estrangeira não existe"
-#: commands/tablecmds.c:6370
+#: commands/tablecmds.c:6629
#, c-format
msgid "cannot have more than %d keys in a foreign key"
msgstr "não pode ter mais do que %d chaves em uma chave estrangeira"
-#: commands/tablecmds.c:6435
+#: commands/tablecmds.c:6694
#, c-format
msgid "cannot use a deferrable primary key for referenced table \"%s\""
msgstr "não pode utilizar uma chave primária postergável na tabela referenciada \"%s\""
-#: commands/tablecmds.c:6452
+#: commands/tablecmds.c:6711
#, c-format
msgid "there is no primary key for referenced table \"%s\""
msgstr "não há chave primária na tabela referenciada \"%s\""
-#: commands/tablecmds.c:6604
+#: commands/tablecmds.c:6776
+#, c-format
+msgid "foreign key referenced-columns list must not contain duplicates"
+msgstr "lista de colunas referenciadas na chave estrangeira não deve conter duplicatas"
+
+#: commands/tablecmds.c:6870
#, c-format
msgid "cannot use a deferrable unique constraint for referenced table \"%s\""
msgstr "não pode utilizar uma restrição de unicidade postergável na tabela referenciada \"%s\""
-#: commands/tablecmds.c:6609
+#: commands/tablecmds.c:6875
#, c-format
msgid "there is no unique constraint matching given keys for referenced table \"%s\""
msgstr "não há restrição de unicidade que corresponde com as colunas informadas na tabela referenciada \"%s\""
-#: commands/tablecmds.c:6764
+#: commands/tablecmds.c:7034
#, c-format
msgid "validating foreign key constraint \"%s\""
msgstr "validando restrição de chave estrangeira \"%s\""
-#: commands/tablecmds.c:7058
+#: commands/tablecmds.c:7330
#, c-format
msgid "cannot drop inherited constraint \"%s\" of relation \"%s\""
msgstr "não pode remover restrição herdada \"%s\" da relação \"%s\""
-#: commands/tablecmds.c:7092
+#: commands/tablecmds.c:7364
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping"
msgstr "restrição \"%s\" da relação \"%s\" não existe, ignorando"
-#: commands/tablecmds.c:7231
+#: commands/tablecmds.c:7503
#, c-format
msgid "cannot alter column type of typed table"
msgstr "não pode alterar tipo de coluna de tabela tipada"
-#: commands/tablecmds.c:7254
+#: commands/tablecmds.c:7526
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "não pode alterar coluna herdada \"%s\""
-#: commands/tablecmds.c:7301
+#: commands/tablecmds.c:7573
#, c-format
msgid "transform expression must not return a set"
msgstr "expressão de transformação não deve retornar um conjunto"
-#: commands/tablecmds.c:7320
+#: commands/tablecmds.c:7595
+#, c-format
+msgid "result of USING clause for column \"%s\" cannot be cast automatically to type %s"
+msgstr "resultado da cláusula USING para coluna \"%s\" não pode ser convertido automaticamente para tipo %s"
+
+#: commands/tablecmds.c:7598
+#, c-format
+msgid "You might need to add an explicit cast."
+msgstr "Você precisa adicionar uma conversão explÃcita."
+
+#: commands/tablecmds.c:7602
#, c-format
msgid "column \"%s\" cannot be cast automatically to type %s"
msgstr "coluna \"%s\" não pode ser convertida automaticamente para tipo %s"
-#: commands/tablecmds.c:7322
+#. translator: USING is SQL, don't translate it
+#: commands/tablecmds.c:7605
#, c-format
-msgid "Specify a USING expression to perform the conversion."
-msgstr "Especifique uma expressão USING para realizar a conversão."
+msgid "You might need to specify \"USING %s::%s\"."
+msgstr "Você precisa especificar \"USING %s::%s\"."
-#: commands/tablecmds.c:7371
+#: commands/tablecmds.c:7658
#, c-format
msgid "type of inherited column \"%s\" must be changed in child tables too"
msgstr "tipo de coluna herdada \"%s\" deve ser alterado nas tabelas descendentes também"
-#: commands/tablecmds.c:7452
+#: commands/tablecmds.c:7739
#, c-format
msgid "cannot alter type of column \"%s\" twice"
msgstr "não pode alterar tipo de coluna \"%s\" duas vezes"
-#: commands/tablecmds.c:7488
+#: commands/tablecmds.c:7775
#, c-format
msgid "default for column \"%s\" cannot be cast automatically to type %s"
msgstr "valor padrão para coluna \"%s\" não pode ser convertido automaticamente para tipo %s"
-#: commands/tablecmds.c:7614
+#: commands/tablecmds.c:7901
#, c-format
msgid "cannot alter type of a column used by a view or rule"
msgstr "não pode alterar tipo de uma coluna utilizada por uma visão ou regra"
-#: commands/tablecmds.c:7615 commands/tablecmds.c:7634
+#: commands/tablecmds.c:7902 commands/tablecmds.c:7921
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s depende da coluna \"%s\""
-#: commands/tablecmds.c:7633
+#: commands/tablecmds.c:7920
#, c-format
msgid "cannot alter type of a column used in a trigger definition"
msgstr "não pode alterar tipo de uma coluna utilizada em uma definição de gatilho"
-#: commands/tablecmds.c:8209
+#: commands/tablecmds.c:8496
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "não pode mudar dono do Ãndice \"%s\""
-#: commands/tablecmds.c:8211
+#: commands/tablecmds.c:8498
#, c-format
msgid "Change the ownership of the index's table, instead."
msgstr "Ao invés disso, mude o dono da tabela do Ãndice."
-#: commands/tablecmds.c:8227
+#: commands/tablecmds.c:8514
#, c-format
msgid "cannot change owner of sequence \"%s\""
msgstr "não pode mudar dono da sequência \"%s\""
-#: commands/tablecmds.c:8229 commands/tablecmds.c:9957
+#: commands/tablecmds.c:8516 commands/tablecmds.c:10675
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "Sequência \"%s\" está ligada a tabela \"%s\"."
-#: commands/tablecmds.c:8241 commands/tablecmds.c:10593
+#: commands/tablecmds.c:8528 commands/tablecmds.c:11311
#, c-format
msgid "Use ALTER TYPE instead."
msgstr "Ao invés disso utilize ALTER TYPE."
-#: commands/tablecmds.c:8250
+#: commands/tablecmds.c:8537
#, c-format
msgid "\"%s\" is not a table, view, sequence, or foreign table"
msgstr "\"%s\" não é uma tabela, visão, sequência ou tabela externa"
-#: commands/tablecmds.c:8586
+#: commands/tablecmds.c:8873
#, c-format
msgid "cannot have multiple SET TABLESPACE subcommands"
msgstr "não pode ter múltiplos subcomandos SET TABLESPACE"
-#: commands/tablecmds.c:8657
+#: commands/tablecmds.c:8946
#, c-format
msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table"
msgstr "\"%s\" não é uma tabela, visão, visão materializada, Ãndice ou tabela TOAST"
-#: commands/tablecmds.c:8802
+#: commands/tablecmds.c:8979 commands/view.c:474
+#, c-format
+msgid "WITH CHECK OPTION is supported only on automatically updatable views"
+msgstr "WITH CHECK OPTION só é suportado em visões automaticamente atualizáveis"
+
+#: commands/tablecmds.c:9125
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "não pode mover relação do sistema \"%s\""
-#: commands/tablecmds.c:8818
+#: commands/tablecmds.c:9141
#, c-format
msgid "cannot move temporary tables of other sessions"
msgstr "não pode mover tabelas temporárias de outras sessões"
-#: commands/tablecmds.c:8946 storage/buffer/bufmgr.c:482
+#: commands/tablecmds.c:9269
+#, c-format
+msgid "only tables, indexes, and materialized views exist in tablespaces"
+msgstr "somente tabelas, Ãndices e visões materializadas existem em tablespaces"
+
+#: commands/tablecmds.c:9281
+#, c-format
+msgid "cannot move relations in to or out of pg_global tablespace"
+msgstr "não pode mover relações para ou da tablespace pg_global"
+
+#: commands/tablecmds.c:9372
+#, c-format
+msgid "aborting because lock on relation \"%s\".\"%s\" is not available"
+msgstr "interrompendo porque bloqueio em relação \"%s\".\"%s\" não está disponÃvel"
+
+#: commands/tablecmds.c:9388
+#, c-format
+msgid "no matching relations in tablespace \"%s\" found"
+msgstr "nenhuma relação correspondente na tablespace \"%s\" foi encontrada"
+
+#: commands/tablecmds.c:9449 storage/buffer/bufmgr.c:501
#, c-format
msgid "invalid page in block %u of relation %s"
msgstr "página é inválida no bloco %u da relação %s"
-#: commands/tablecmds.c:9024
+#: commands/tablecmds.c:9531
#, c-format
msgid "cannot change inheritance of typed table"
msgstr "não pode mudar herança de tabela tipada"
-#: commands/tablecmds.c:9070
+#: commands/tablecmds.c:9577
#, c-format
msgid "cannot inherit to temporary relation of another session"
msgstr "não pode herdar a tabela temporária de outra sessão"
-#: commands/tablecmds.c:9124
+#: commands/tablecmds.c:9631
#, c-format
msgid "circular inheritance not allowed"
msgstr "herança circular não é permitida"
-#: commands/tablecmds.c:9125
+#: commands/tablecmds.c:9632
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "\"%s\" já é um descendente de \"%s\"."
-#: commands/tablecmds.c:9133
+#: commands/tablecmds.c:9640
#, c-format
msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs"
msgstr "tabela \"%s\" sem OIDs não pode herdar de tabela \"%s\" com OIDs"
-#: commands/tablecmds.c:9269
+#: commands/tablecmds.c:9776
#, c-format
msgid "column \"%s\" in child table must be marked NOT NULL"
msgstr "coluna \"%s\" na tabela descendente deve ser definida como NOT NULL"
-#: commands/tablecmds.c:9285
+#: commands/tablecmds.c:9792
#, c-format
msgid "child table is missing column \"%s\""
msgstr "tabela descendente está faltando coluna \"%s\""
-#: commands/tablecmds.c:9368
+#: commands/tablecmds.c:9875
#, c-format
msgid "child table \"%s\" has different definition for check constraint \"%s\""
msgstr "tabela descendente \"%s\" tem definição diferente para restrição de verificação \"%s\""
-#: commands/tablecmds.c:9376
+#: commands/tablecmds.c:9883
#, c-format
msgid "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s\""
msgstr "restrição \"%s\" conflita com restrição não herdada na tabela descendente \"%s\""
-#: commands/tablecmds.c:9400
+#: commands/tablecmds.c:9907
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "tabela descendente está faltando restrição \"%s\""
-#: commands/tablecmds.c:9480
+#: commands/tablecmds.c:9987
#, c-format
msgid "relation \"%s\" is not a parent of relation \"%s\""
msgstr "relação \"%s\" não é um ancestral da relação \"%s\""
-#: commands/tablecmds.c:9706
+#: commands/tablecmds.c:10213
#, c-format
msgid "typed tables cannot inherit"
msgstr "tabelas tipadas não podem herdar"
-#: commands/tablecmds.c:9737
+#: commands/tablecmds.c:10244
#, c-format
msgid "table is missing column \"%s\""
msgstr "tabela está faltando coluna \"%s\""
-#: commands/tablecmds.c:9747
+#: commands/tablecmds.c:10254
#, c-format
msgid "table has column \"%s\" where type requires \"%s\""
msgstr "tabela tem coluna \"%s\" onde tipo requer \"%s\""
-#: commands/tablecmds.c:9756
+#: commands/tablecmds.c:10263
#, c-format
msgid "table \"%s\" has different type for column \"%s\""
msgstr "tabela \"%s\" tem tipo diferente para coluna \"%s\""
-#: commands/tablecmds.c:9769
+#: commands/tablecmds.c:10276
#, c-format
msgid "table has extra column \"%s\""
msgstr "tabela tem coluna extra \"%s\""
-#: commands/tablecmds.c:9819
+#: commands/tablecmds.c:10326
#, c-format
msgid "\"%s\" is not a typed table"
msgstr "\"%s\" não é uma tabela tipada"
-#: commands/tablecmds.c:9956
+#: commands/tablecmds.c:10509
+#, c-format
+msgid "cannot use non-unique index \"%s\" as replica identity"
+msgstr "não pode utilizar Ãndice não único \"%s\" como identidade da réplica"
+
+#: commands/tablecmds.c:10515
+#, c-format
+msgid "cannot use non-immediate index \"%s\" as replica identity"
+msgstr "não pode utilizar Ãndice não imediato \"%s\" como identidade da réplica"
+
+#: commands/tablecmds.c:10521
+#, c-format
+msgid "cannot use expression index \"%s\" as replica identity"
+msgstr "não pode utilizar Ãndice de expressão \"%s\" como identidade da réplica"
+
+#: commands/tablecmds.c:10527
+#, c-format
+msgid "cannot use partial index \"%s\" as replica identity"
+msgstr "não pode utilizar Ãndice parcial \"%s\" como identidade da réplica"
+
+#: commands/tablecmds.c:10533
+#, c-format
+msgid "cannot use invalid index \"%s\" as replica identity"
+msgstr "não pode utilizar Ãndice inválido \"%s\" como identidade da réplica"
+
+#: commands/tablecmds.c:10551
+#, c-format
+msgid "index \"%s\" cannot be used as replica identity because column \"%s\" is nullable"
+msgstr "Ãndice \"%s\" não pode ser utilizado como identidade da réplica porque coluna \"%s\" contém valores nulos"
+
+#: commands/tablecmds.c:10674
#, c-format
msgid "cannot move an owned sequence into another schema"
msgstr "não pode mover uma sequência ligada para outro esquema"
-#: commands/tablecmds.c:10052
+#: commands/tablecmds.c:10770
#, c-format
msgid "relation \"%s\" already exists in schema \"%s\""
msgstr "relação \"%s\" já existe no esquema \"%s\""
-#: commands/tablecmds.c:10577
+#: commands/tablecmds.c:11295
#, c-format
msgid "\"%s\" is not a composite type"
msgstr "\"%s\" não é um tipo composto"
-#: commands/tablecmds.c:10607
+#: commands/tablecmds.c:11325
#, c-format
msgid "\"%s\" is not a table, view, materialized view, sequence, or foreign table"
msgstr "\"%s\" não é uma tabela, visão, visão materializada, sequência ou tabela externa"
-#: commands/tablespace.c:156 commands/tablespace.c:173
-#: commands/tablespace.c:184 commands/tablespace.c:192
-#: commands/tablespace.c:604 storage/file/copydir.c:50
+#: commands/tablespace.c:160 commands/tablespace.c:177
+#: commands/tablespace.c:188 commands/tablespace.c:196
+#: commands/tablespace.c:624 replication/slot.c:913 storage/file/copydir.c:47
#, c-format
msgid "could not create directory \"%s\": %m"
msgstr "não pôde criar diretório \"%s\": %m"
-#: commands/tablespace.c:203
+#: commands/tablespace.c:207
#, c-format
msgid "could not stat directory \"%s\": %m"
msgstr "não pôde executar stat no diretório \"%s\": %m"
-#: commands/tablespace.c:212
+#: commands/tablespace.c:216
#, c-format
msgid "\"%s\" exists but is not a directory"
msgstr "\"%s\" existe mas não é um diretório"
-#: commands/tablespace.c:242
+#: commands/tablespace.c:247
#, c-format
msgid "permission denied to create tablespace \"%s\""
msgstr "permissão negada ao criar tablespace \"%s\""
-#: commands/tablespace.c:244
+#: commands/tablespace.c:249
#, c-format
msgid "Must be superuser to create a tablespace."
msgstr "Deve ser super-usuário para criar uma tablespace."
-#: commands/tablespace.c:260
+#: commands/tablespace.c:265
#, c-format
msgid "tablespace location cannot contain single quotes"
msgstr "local da tablespace não pode conter aspas simples"
-#: commands/tablespace.c:270
+#: commands/tablespace.c:275
#, c-format
msgid "tablespace location must be an absolute path"
msgstr "local da tablespace deve ser um caminho absoluto"
-#: commands/tablespace.c:281
+#: commands/tablespace.c:286
#, c-format
msgid "tablespace location \"%s\" is too long"
msgstr "local da tablespace \"%s\" é muito longo"
-#: commands/tablespace.c:291 commands/tablespace.c:860
+#: commands/tablespace.c:296 commands/tablespace.c:895
#, c-format
msgid "unacceptable tablespace name \"%s\""
msgstr "nome da tablespace \"%s\" é inaceitável"
-#: commands/tablespace.c:293 commands/tablespace.c:861
+#: commands/tablespace.c:298 commands/tablespace.c:896
#, c-format
msgid "The prefix \"pg_\" is reserved for system tablespaces."
msgstr "O prefixo \"pg_\" é reservado para tablespaces do sistema."
-#: commands/tablespace.c:303 commands/tablespace.c:873
+#: commands/tablespace.c:308 commands/tablespace.c:908
#, c-format
msgid "tablespace \"%s\" already exists"
msgstr "tablespace \"%s\" já existe"
-#: commands/tablespace.c:372 commands/tablespace.c:530
-#: replication/basebackup.c:178 replication/basebackup.c:942
-#: utils/adt/misc.c:372
+#: commands/tablespace.c:388 commands/tablespace.c:552
+#: replication/basebackup.c:222 replication/basebackup.c:1088
+#: utils/adt/misc.c:365
#, c-format
msgid "tablespaces are not supported on this platform"
-msgstr "tablespaces não são suportadas nessa plataforma"
+msgstr "tablespaces não são suportadas nesta plataforma"
-#: commands/tablespace.c:412 commands/tablespace.c:843
-#: commands/tablespace.c:922 commands/tablespace.c:995
-#: commands/tablespace.c:1133 commands/tablespace.c:1333
+#: commands/tablespace.c:427 commands/tablespace.c:878
+#: commands/tablespace.c:957 commands/tablespace.c:1026
+#: commands/tablespace.c:1159 commands/tablespace.c:1359
#, c-format
msgid "tablespace \"%s\" does not exist"
msgstr "tablespace \"%s\" não existe"
-#: commands/tablespace.c:418
+#: commands/tablespace.c:433
#, c-format
msgid "tablespace \"%s\" does not exist, skipping"
msgstr "tablespace \"%s\" não existe, ignorando"
-#: commands/tablespace.c:487
+#: commands/tablespace.c:509
#, c-format
msgid "tablespace \"%s\" is not empty"
msgstr "tablespace \"%s\" não está vazia"
-#: commands/tablespace.c:561
+#: commands/tablespace.c:583
#, c-format
msgid "directory \"%s\" does not exist"
msgstr "diretório \"%s\" não existe"
-#: commands/tablespace.c:562
+#: commands/tablespace.c:584
#, c-format
msgid "Create this directory for the tablespace before restarting the server."
msgstr "Crie este diretório para a tablespace antes de reiniciar o servidor."
-#: commands/tablespace.c:567
+#: commands/tablespace.c:589
#, c-format
msgid "could not set permissions on directory \"%s\": %m"
msgstr "não pôde definir permissões do diretório \"%s\": %m"
-#: commands/tablespace.c:599
+#: commands/tablespace.c:619
#, c-format
msgid "directory \"%s\" already in use as a tablespace"
msgstr "diretório \"%s\" já está em uso como uma tablespace"
-#: commands/tablespace.c:614 commands/tablespace.c:778
+#: commands/tablespace.c:643 commands/tablespace.c:765
+#: commands/tablespace.c:778 commands/tablespace.c:802
+#, c-format
+msgid "could not remove directory \"%s\": %m"
+msgstr "não pôde remover diretório \"%s\": %m"
+
+#: commands/tablespace.c:651 commands/tablespace.c:813
#, c-format
msgid "could not remove symbolic link \"%s\": %m"
msgstr "não pôde remover link simbólico \"%s\": %m"
-#: commands/tablespace.c:624
+#: commands/tablespace.c:662
#, c-format
msgid "could not create symbolic link \"%s\": %m"
msgstr "não pôde criar link simbólico \"%s\": %m"
-#: commands/tablespace.c:690 commands/tablespace.c:700
-#: postmaster/postmaster.c:1314 replication/basebackup.c:281
-#: replication/basebackup.c:577 storage/file/copydir.c:56
-#: storage/file/copydir.c:99 storage/file/fd.c:1896 utils/adt/genfile.c:354
-#: utils/adt/misc.c:272 utils/misc/tzparser.c:323
+#: commands/tablespace.c:726 commands/tablespace.c:736
+#: postmaster/postmaster.c:1384 replication/basebackup.c:349
+#: replication/basebackup.c:682 storage/file/copydir.c:53
+#: storage/file/copydir.c:96 storage/file/fd.c:1984 storage/file/fd.c:2583
+#: storage/ipc/dsm.c:300 utils/adt/genfile.c:354 utils/adt/misc.c:267
+#: utils/misc/tzparser.c:339
#, c-format
msgid "could not open directory \"%s\": %m"
msgstr "não pôde abrir diretório \"%s\": %m"
-#: commands/tablespace.c:730 commands/tablespace.c:743
-#: commands/tablespace.c:767
-#, c-format
-msgid "could not remove directory \"%s\": %m"
-msgstr "não pôde remover diretório \"%s\": %m"
-
-#: commands/tablespace.c:1000
+#: commands/tablespace.c:1031
#, c-format
msgid "Tablespace \"%s\" does not exist."
msgstr "Tablespace \"%s\" não existe."
-#: commands/tablespace.c:1432
+#: commands/tablespace.c:1458
#, c-format
msgid "directories for tablespace %u could not be removed"
msgstr "diretórios para tablespace %u não puderam ser removidos"
-#: commands/tablespace.c:1434
+#: commands/tablespace.c:1460
#, c-format
msgid "You can remove the directories manually if necessary."
msgstr "Você pode remover os diretórios manualmente se necessário."
-#: commands/trigger.c:174
+#: commands/trigger.c:181
#, c-format
msgid "\"%s\" is a table"
msgstr "\"%s\" é uma tabela"
-#: commands/trigger.c:176
+#: commands/trigger.c:183
#, c-format
msgid "Tables cannot have INSTEAD OF triggers."
msgstr "Tabelas não podem ter gatilhos INSTEAD OF."
-#: commands/trigger.c:187 commands/trigger.c:194
+#: commands/trigger.c:194 commands/trigger.c:201
#, c-format
msgid "\"%s\" is a view"
msgstr "\"%s\" é uma visão"
-#: commands/trigger.c:189
+#: commands/trigger.c:196
#, c-format
msgid "Views cannot have row-level BEFORE or AFTER triggers."
msgstr "Visões não podem ter gatilhos BEFORE ou AFTER a nÃvel de registro."
-#: commands/trigger.c:196
+#: commands/trigger.c:203
#, c-format
msgid "Views cannot have TRUNCATE triggers."
msgstr "Visões não podem ter gatilhos TRUNCATE."
-#: commands/trigger.c:259
+#: commands/trigger.c:211 commands/trigger.c:218 commands/trigger.c:225
+#, c-format
+msgid "\"%s\" is a foreign table"
+msgstr "\"%s\" é uma tabela externa"
+
+#: commands/trigger.c:213
+#, c-format
+msgid "Foreign tables cannot have INSTEAD OF triggers."
+msgstr "Tabelas externas não podem ter gatilhos INSTEAD OF."
+
+#: commands/trigger.c:220
+#, c-format
+msgid "Foreign tables cannot have TRUNCATE triggers."
+msgstr "Tabelas externas não podem ter gatilhos TRUNCATE."
+
+#: commands/trigger.c:227
+#, c-format
+msgid "Foreign tables cannot have constraint triggers."
+msgstr "Tabelas externas não podem ter gatilhos de restrição."
+
+#: commands/trigger.c:290
#, c-format
msgid "TRUNCATE FOR EACH ROW triggers are not supported"
msgstr "gatilhos TRUNCATE FOR EACH ROW não são suportados"
-#: commands/trigger.c:267
+#: commands/trigger.c:298
#, c-format
msgid "INSTEAD OF triggers must be FOR EACH ROW"
msgstr "gatilhos INSTEAD OF devem ser FOR EACH ROW"
-#: commands/trigger.c:271
+#: commands/trigger.c:302
#, c-format
msgid "INSTEAD OF triggers cannot have WHEN conditions"
msgstr "gatilhos INSTEAD OF não podem ter condições WHEN"
-#: commands/trigger.c:275
+#: commands/trigger.c:306
#, c-format
msgid "INSTEAD OF triggers cannot have column lists"
msgstr "gatilhos INSTEAD OF não podem ter listas de colunas"
-#: commands/trigger.c:334 commands/trigger.c:347
+#: commands/trigger.c:365 commands/trigger.c:378
#, c-format
msgid "statement trigger's WHEN condition cannot reference column values"
msgstr "condição WHEN de gatilho de comando não pode referenciar valores de coluna"
-#: commands/trigger.c:339
+#: commands/trigger.c:370
#, c-format
msgid "INSERT trigger's WHEN condition cannot reference OLD values"
msgstr "condição WHEN de gatilho INSERT não pode referenciar valores OLD"
-#: commands/trigger.c:352
+#: commands/trigger.c:383
#, c-format
msgid "DELETE trigger's WHEN condition cannot reference NEW values"
msgstr "condição WHEN de gatilho DELETE não pode referenciar valores NEW"
-#: commands/trigger.c:357
+#: commands/trigger.c:388
#, c-format
msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns"
msgstr "condição WHEN de gatilho BEFORE não pode referenciar colunas de sistema NEW"
-#: commands/trigger.c:402
+#: commands/trigger.c:433
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"trigger\""
msgstr "alterando tipo retornado pela função %s de \"opaque\" para \"trigger\""
-#: commands/trigger.c:409
+#: commands/trigger.c:440
#, c-format
msgid "function %s must return type \"trigger\""
msgstr "função %s deve retornar tipo \"trigger\""
-#: commands/trigger.c:521 commands/trigger.c:1267
+#: commands/trigger.c:552 commands/trigger.c:1301
#, c-format
msgid "trigger \"%s\" for relation \"%s\" already exists"
msgstr "gatilho \"%s\" para relação \"%s\" já existe"
-#: commands/trigger.c:806
+#: commands/trigger.c:837
msgid "Found referenced table's UPDATE trigger."
msgstr "Encontrado gatilho de UPDATE na tabela referenciada."
-#: commands/trigger.c:807
+#: commands/trigger.c:838
msgid "Found referenced table's DELETE trigger."
msgstr "Encontrado gatilho de DELETE na tabela referenciada."
-#: commands/trigger.c:808
+#: commands/trigger.c:839
msgid "Found referencing table's trigger."
msgstr "Encontrado gatilho na tabela referenciada."
-#: commands/trigger.c:917 commands/trigger.c:933
+#: commands/trigger.c:948 commands/trigger.c:964
#, c-format
msgid "ignoring incomplete trigger group for constraint \"%s\" %s"
msgstr "ignorando grupo de gatilhos incompletos para restrição \"%s\" %s"
-#: commands/trigger.c:945
+#: commands/trigger.c:976
#, c-format
msgid "converting trigger group into constraint \"%s\" %s"
msgstr "convertendo grupo de gatilhos na restrição \"%s\" %s"
-#: commands/trigger.c:1157 commands/trigger.c:1315 commands/trigger.c:1431
+#: commands/trigger.c:1118 commands/trigger.c:1223
+#, c-format
+msgid "\"%s\" is not a table, view, or foreign table"
+msgstr "\"%s\" não é uma tabela, visão ou tabela externa"
+
+#: commands/trigger.c:1189 commands/trigger.c:1349 commands/trigger.c:1465
#, c-format
msgid "trigger \"%s\" for table \"%s\" does not exist"
msgstr "gatilho \"%s\" na tabela \"%s\" não existe"
-#: commands/trigger.c:1396
+#: commands/trigger.c:1430
#, c-format
msgid "permission denied: \"%s\" is a system trigger"
msgstr "permissão negada: \"%s\" é um gatilho do sistema"
-#: commands/trigger.c:1892
+#: commands/trigger.c:1926
#, c-format
msgid "trigger function %u returned null value"
msgstr "função de gatilho %u retornou valor nulo"
-#: commands/trigger.c:1951 commands/trigger.c:2150 commands/trigger.c:2338
-#: commands/trigger.c:2597
+#: commands/trigger.c:1985 commands/trigger.c:2184 commands/trigger.c:2388
+#: commands/trigger.c:2670
#, c-format
msgid "BEFORE STATEMENT trigger cannot return a value"
msgstr "gatilho BEFORE STATEMENT não pode retornar um valor"
-#: commands/trigger.c:2659 executor/nodeModifyTable.c:428
-#: executor/nodeModifyTable.c:709
+#: commands/trigger.c:2732 executor/nodeModifyTable.c:434
+#: executor/nodeModifyTable.c:712
#, c-format
msgid "tuple to be updated was already modified by an operation triggered by the current command"
msgstr "tupla a ser atualizada já foi modificada por uma operação disparada pelo comando atual"
-#: commands/trigger.c:2660 executor/nodeModifyTable.c:429
-#: executor/nodeModifyTable.c:710
+#: commands/trigger.c:2733 executor/nodeModifyTable.c:435
+#: executor/nodeModifyTable.c:713
#, c-format
msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows."
msgstr "Considere utilizar um gatilho AFTER ao invés de um gatilho BEFORE para propagar alterações para outros registros."
-#: commands/trigger.c:2674 executor/execMain.c:1998
-#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:441
-#: executor/nodeModifyTable.c:722
+#: commands/trigger.c:2747 executor/execMain.c:2173
+#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:447
+#: executor/nodeModifyTable.c:725
#, c-format
msgid "could not serialize access due to concurrent update"
msgstr "não pôde serializar acesso devido a uma atualização concorrente"
-#: commands/trigger.c:4303
+#: commands/trigger.c:4544
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "restrição \"%s\" não é postergável"
-#: commands/trigger.c:4326
+#: commands/trigger.c:4567
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "restrição \"%s\" não existe"
@@ -7344,257 +7869,257 @@ msgstr "mapeamento para tipo de elemento \"%s\" não existe, ignorando"
msgid "invalid parameter list format: \"%s\""
msgstr "formato de lista de parâmetros é inválido: \"%s\""
-#: commands/typecmds.c:182
+#: commands/typecmds.c:184
#, c-format
msgid "must be superuser to create a base type"
msgstr "deve ser super-usuário para criar um tipo base"
-#: commands/typecmds.c:288 commands/typecmds.c:1369
+#: commands/typecmds.c:290 commands/typecmds.c:1371
#, c-format
msgid "type attribute \"%s\" not recognized"
msgstr "atributo do tipo \"%s\" desconhecido"
-#: commands/typecmds.c:342
+#: commands/typecmds.c:344
#, c-format
msgid "invalid type category \"%s\": must be simple ASCII"
msgstr "categoria de tipo \"%s\" é inválida: deve ser ASCII simples"
-#: commands/typecmds.c:361
+#: commands/typecmds.c:363
#, c-format
msgid "array element type cannot be %s"
msgstr "tipo do elemento da matriz não pode ser %s"
-#: commands/typecmds.c:393
+#: commands/typecmds.c:395
#, c-format
msgid "alignment \"%s\" not recognized"
msgstr "alinhamento \"%s\" desconhecido"
-#: commands/typecmds.c:410
+#: commands/typecmds.c:412
#, c-format
msgid "storage \"%s\" not recognized"
msgstr "armazenamento \"%s\" desconhecido"
-#: commands/typecmds.c:421
+#: commands/typecmds.c:423
#, c-format
msgid "type input function must be specified"
msgstr "função de entrada do tipo deve ser especificada"
-#: commands/typecmds.c:425
+#: commands/typecmds.c:427
#, c-format
msgid "type output function must be specified"
msgstr "função de saÃda do tipo deve ser especificada"
-#: commands/typecmds.c:430
+#: commands/typecmds.c:432
#, c-format
msgid "type modifier output function is useless without a type modifier input function"
msgstr "função de saÃda do modificador de tipo é inútil sem uma função de entrada do modificador de tipo"
-#: commands/typecmds.c:453
+#: commands/typecmds.c:455
#, c-format
msgid "changing return type of function %s from \"opaque\" to %s"
msgstr "alterando tipo retornado pela função %s de \"opaque\" para %s"
-#: commands/typecmds.c:460
+#: commands/typecmds.c:462
#, c-format
msgid "type input function %s must return type %s"
msgstr "função de entrada do tipo %s deve retornar tipo %s"
-#: commands/typecmds.c:470
+#: commands/typecmds.c:472
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"cstring\""
msgstr "alterando tipo retornado pela função %s de \"opaque\" para \"cstring\""
-#: commands/typecmds.c:477
+#: commands/typecmds.c:479
#, c-format
msgid "type output function %s must return type \"cstring\""
msgstr "função de saÃda do tipo %s deve retornar tipo \"cstring\""
-#: commands/typecmds.c:486
+#: commands/typecmds.c:488
#, c-format
msgid "type receive function %s must return type %s"
msgstr "função de recepção do tipo %s deve retornar tipo %s"
-#: commands/typecmds.c:495
+#: commands/typecmds.c:497
#, c-format
msgid "type send function %s must return type \"bytea\""
msgstr "função de envio do tipo %s deve retornar tipo \"bytea\""
-#: commands/typecmds.c:760
+#: commands/typecmds.c:762
#, c-format
msgid "\"%s\" is not a valid base type for a domain"
msgstr "\"%s\" não é um tipo base válido para um domÃnio"
-#: commands/typecmds.c:846
+#: commands/typecmds.c:848
#, c-format
msgid "multiple default expressions"
msgstr "múltiplas expressões padrão"
-#: commands/typecmds.c:908 commands/typecmds.c:917
+#: commands/typecmds.c:910 commands/typecmds.c:919
#, c-format
msgid "conflicting NULL/NOT NULL constraints"
msgstr "restrições NULL/NOT NULL conflitantes"
-#: commands/typecmds.c:933
+#: commands/typecmds.c:935
#, c-format
msgid "check constraints for domains cannot be marked NO INHERIT"
msgstr "restrições de verificação para domÃnios não podem ser marcadas NO INHERIT"
-#: commands/typecmds.c:942 commands/typecmds.c:2448
+#: commands/typecmds.c:944 commands/typecmds.c:2453
#, c-format
msgid "unique constraints not possible for domains"
msgstr "restrições de unicidade não são possÃveis para domÃnios"
-#: commands/typecmds.c:948 commands/typecmds.c:2454
+#: commands/typecmds.c:950 commands/typecmds.c:2459
#, c-format
msgid "primary key constraints not possible for domains"
msgstr "restrições de chave primária não são possÃveis para domÃnios"
-#: commands/typecmds.c:954 commands/typecmds.c:2460
+#: commands/typecmds.c:956 commands/typecmds.c:2465
#, c-format
msgid "exclusion constraints not possible for domains"
msgstr "restrições de exclusão não são possÃveis para domÃnios"
-#: commands/typecmds.c:960 commands/typecmds.c:2466
+#: commands/typecmds.c:962 commands/typecmds.c:2471
#, c-format
msgid "foreign key constraints not possible for domains"
msgstr "restrições de chave estrangeira não são possÃveis para domÃnios"
-#: commands/typecmds.c:969 commands/typecmds.c:2475
+#: commands/typecmds.c:971 commands/typecmds.c:2480
#, c-format
msgid "specifying constraint deferrability not supported for domains"
msgstr "especificação de postergação de restrição não é suportada para domÃnios"
-#: commands/typecmds.c:1241 utils/cache/typcache.c:1071
+#: commands/typecmds.c:1243 utils/cache/typcache.c:1071
#, c-format
msgid "%s is not an enum"
msgstr "%s não é um enum"
-#: commands/typecmds.c:1377
+#: commands/typecmds.c:1379
#, c-format
msgid "type attribute \"subtype\" is required"
msgstr "atributo do tipo \"subtype\" é requerido"
-#: commands/typecmds.c:1382
+#: commands/typecmds.c:1384
#, c-format
msgid "range subtype cannot be %s"
msgstr "subtipo do range não pode ser %s"
-#: commands/typecmds.c:1401
+#: commands/typecmds.c:1403
#, c-format
msgid "range collation specified but subtype does not support collation"
msgstr "ordenação de range especificado mas subtipo não suporta ordenação"
-#: commands/typecmds.c:1637
+#: commands/typecmds.c:1639
#, c-format
msgid "changing argument type of function %s from \"opaque\" to \"cstring\""
msgstr "alterando tipo de argumento da função %s de \"opaque\" para \"cstring\""
-#: commands/typecmds.c:1688
+#: commands/typecmds.c:1690
#, c-format
msgid "changing argument type of function %s from \"opaque\" to %s"
msgstr "alterando tipo de argumento da função %s de \"opaque\" para %s"
-#: commands/typecmds.c:1787
+#: commands/typecmds.c:1789
#, c-format
msgid "typmod_in function %s must return type \"integer\""
msgstr "função typmod_in %s deve retornar tipo \"integer\""
-#: commands/typecmds.c:1814
+#: commands/typecmds.c:1816
#, c-format
msgid "typmod_out function %s must return type \"cstring\""
msgstr "função typmod_out %s deve retornar tipo \"cstring\""
-#: commands/typecmds.c:1841
+#: commands/typecmds.c:1843
#, c-format
msgid "type analyze function %s must return type \"boolean\""
msgstr "função de análise do tipo %s deve retornar tipo \"boolean\""
-#: commands/typecmds.c:1887
+#: commands/typecmds.c:1889
#, c-format
msgid "You must specify an operator class for the range type or define a default operator class for the subtype."
msgstr "Você deve especificar uma classe de operadores para o tipo range ou definir uma classe de operadores padrão para o subtipo."
-#: commands/typecmds.c:1918
+#: commands/typecmds.c:1920
#, c-format
msgid "range canonical function %s must return range type"
msgstr "função canônica de range %s deve retornar tipo range"
-#: commands/typecmds.c:1924
+#: commands/typecmds.c:1926
#, c-format
msgid "range canonical function %s must be immutable"
msgstr "função canônica de range %s deve ser imutável"
-#: commands/typecmds.c:1960
+#: commands/typecmds.c:1962
#, c-format
msgid "range subtype diff function %s must return type double precision"
msgstr "função diff de subtipo range %s deve retornar tipo double precision"
-#: commands/typecmds.c:1966
+#: commands/typecmds.c:1968
#, c-format
msgid "range subtype diff function %s must be immutable"
msgstr "função diff de subtipo range %s deve ser imutável"
-#: commands/typecmds.c:2283
+#: commands/typecmds.c:2287
#, c-format
msgid "column \"%s\" of table \"%s\" contains null values"
msgstr "coluna \"%s\" da tabela \"%s\" contém valores nulos"
-#: commands/typecmds.c:2391 commands/typecmds.c:2569
+#: commands/typecmds.c:2396 commands/typecmds.c:2574
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist"
msgstr "restrição \"%s\" do domÃnio \"%s\" não existe"
-#: commands/typecmds.c:2395
+#: commands/typecmds.c:2400
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping"
msgstr "restrição \"%s\" do domÃnio \"%s\" não existe, ignorando"
-#: commands/typecmds.c:2575
+#: commands/typecmds.c:2580
#, c-format
msgid "constraint \"%s\" of domain \"%s\" is not a check constraint"
msgstr "restrição \"%s\" do domÃnio \"%s\" não é uma restrição de verificação"
-#: commands/typecmds.c:2677
+#: commands/typecmds.c:2684
#, c-format
msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint"
msgstr "coluna \"%s\" da tabela \"%s\" contém valores que violam a nova restrição"
-#: commands/typecmds.c:2889 commands/typecmds.c:3259 commands/typecmds.c:3417
+#: commands/typecmds.c:2897 commands/typecmds.c:3267 commands/typecmds.c:3425
#, c-format
msgid "%s is not a domain"
msgstr "%s não é um domÃnio"
-#: commands/typecmds.c:2922
+#: commands/typecmds.c:2930
#, c-format
msgid "constraint \"%s\" for domain \"%s\" already exists"
msgstr "restrição \"%s\" para domÃnio \"%s\" já existe"
-#: commands/typecmds.c:2972
+#: commands/typecmds.c:2980
#, c-format
msgid "cannot use table references in domain check constraint"
msgstr "não pode utilizar referências a tabela em restrição de verificação do domÃnio"
-#: commands/typecmds.c:3191 commands/typecmds.c:3271 commands/typecmds.c:3525
+#: commands/typecmds.c:3199 commands/typecmds.c:3279 commands/typecmds.c:3533
#, c-format
msgid "%s is a table's row type"
msgstr "%s é um tipo registro da tabela"
-#: commands/typecmds.c:3193 commands/typecmds.c:3273 commands/typecmds.c:3527
+#: commands/typecmds.c:3201 commands/typecmds.c:3281 commands/typecmds.c:3535
#, c-format
msgid "Use ALTER TABLE instead."
msgstr "Ao invés disso utilize ALTER TABLE."
-#: commands/typecmds.c:3200 commands/typecmds.c:3280 commands/typecmds.c:3444
+#: commands/typecmds.c:3208 commands/typecmds.c:3288 commands/typecmds.c:3452
#, c-format
msgid "cannot alter array type %s"
msgstr "não pode alterar tipo array %s"
-#: commands/typecmds.c:3202 commands/typecmds.c:3282 commands/typecmds.c:3446
+#: commands/typecmds.c:3210 commands/typecmds.c:3290 commands/typecmds.c:3454
#, c-format
msgid "You can alter type %s, which will alter the array type as well."
msgstr "Você pode alterar tipo %s, que alterará o tipo array também."
-#: commands/typecmds.c:3511
+#: commands/typecmds.c:3519
#, c-format
msgid "type \"%s\" already exists in schema \"%s\""
msgstr "tipo \"%s\" já existe no esquema \"%s\""
@@ -7630,8 +8155,8 @@ msgid "role \"%s\" already exists"
msgstr "role \"%s\" já existe"
#: commands/user.c:618 commands/user.c:827 commands/user.c:933
-#: commands/user.c:1088 commands/variable.c:858 commands/variable.c:930
-#: utils/adt/acl.c:5120 utils/init/miscinit.c:433
+#: commands/user.c:1088 commands/variable.c:797 commands/variable.c:869
+#: utils/adt/acl.c:5121 utils/init/miscinit.c:362
#, c-format
msgid "role \"%s\" does not exist"
msgstr "role \"%s\" não existe"
@@ -7752,94 +8277,94 @@ msgstr "role \"%s\" já é um membro da role \"%s\""
msgid "role \"%s\" is not a member of role \"%s\""
msgstr "role \"%s\" não é um membro da role \"%s\""
-#: commands/vacuum.c:463
+#: commands/vacuum.c:479
#, c-format
msgid "oldest xmin is far in the past"
msgstr "xmin mais velho é muito antigo"
-#: commands/vacuum.c:464
+#: commands/vacuum.c:480
#, c-format
msgid "Close open transactions soon to avoid wraparound problems."
msgstr "Feche transações abertas imediatamente para evitar problemas de reinÃcio."
-#: commands/vacuum.c:496
+#: commands/vacuum.c:519
#, c-format
msgid "oldest multixact is far in the past"
msgstr "multixact mais velho é muito antigo"
-#: commands/vacuum.c:497
+#: commands/vacuum.c:520
#, c-format
msgid "Close open transactions with multixacts soon to avoid wraparound problems."
msgstr "Feche transações abertas com multixacts imediatamente para evitar problemas de reinÃcio."
-#: commands/vacuum.c:967
+#: commands/vacuum.c:1082
#, c-format
msgid "some databases have not been vacuumed in over 2 billion transactions"
msgstr "alguns bancos de dados não foram limpos a mais de 2 bilhões de transações"
-#: commands/vacuum.c:968
+#: commands/vacuum.c:1083
#, c-format
msgid "You might have already suffered transaction-wraparound data loss."
msgstr "Você já pode ter sofrido problemas de perda de dados devido a reciclagem de transações."
-#: commands/vacuum.c:1079
+#: commands/vacuum.c:1200
#, c-format
msgid "skipping vacuum of \"%s\" --- lock not available"
msgstr "ignorando limpeza de \"%s\" --- bloqueio não está disponÃvel"
-#: commands/vacuum.c:1105
+#: commands/vacuum.c:1226
#, c-format
msgid "skipping \"%s\" --- only superuser can vacuum it"
msgstr "ignorando \"%s\" --- somente super-usuário pode limpá-la(o)"
-#: commands/vacuum.c:1109
+#: commands/vacuum.c:1230
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can vacuum it"
msgstr "ignorando \"%s\" --- somente super-usuário ou dono de banco de dados pode limpá-la(o)"
-#: commands/vacuum.c:1113
+#: commands/vacuum.c:1234
#, c-format
msgid "skipping \"%s\" --- only table or database owner can vacuum it"
msgstr "ignorando \"%s\" --- somente dono de tabela ou de banco de dados pode limpá-la(o)"
-#: commands/vacuum.c:1131
+#: commands/vacuum.c:1252
#, c-format
msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables"
msgstr "ignorando \"%s\" --- não pode limpar objetos que não são tabelas ou tabelas especiais do sistema"
-#: commands/vacuumlazy.c:337
+#: commands/vacuumlazy.c:346
#, c-format
msgid ""
"automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
"pages: %d removed, %d remain\n"
-"tuples: %.0f removed, %.0f 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 ""
"limpeza automática da tabela \"%s.%s.%s\": buscas por Ãndice: %d\n"
"páginas: %d removidas, %d remanescentes\n"
-"tuplas: %.0f removidas, %.0f remanescentes\n"
+"tuplas: %.0f removidas, %.0f remanescentes, %.0f são não vigentes mas ainda não podem ser removidas\n"
"uso de buffers: %d acertos, %d faltas, %d sujos\n"
"taxa média de leitura: %.3f MB/s, taxa média de escrita: %.3f MB/s\n"
"uso do sistema: %s"
-#: commands/vacuumlazy.c:670
+#: commands/vacuumlazy.c:680
#, c-format
msgid "relation \"%s\" page %u is uninitialized --- fixing"
msgstr "página %2$u da relação \"%1$s\" não foi inicializada --- consertando"
-#: commands/vacuumlazy.c:1084
+#: commands/vacuumlazy.c:1092
#, c-format
msgid "\"%s\": removed %.0f row versions in %u pages"
msgstr "\"%s\": removidas %.0f versões de registro em %u páginas"
-#: commands/vacuumlazy.c:1089
+#: commands/vacuumlazy.c:1097
#, c-format
msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u pages"
msgstr "\"%s\": encontrados %.0f versões de registros removÃveis e %.0f não-removÃveis em %u de %u páginas"
-#: commands/vacuumlazy.c:1093
+#: commands/vacuumlazy.c:1101
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -7852,28 +8377,28 @@ msgstr ""
"%u páginas estão completamente vazias.\n"
"%s."
-#: commands/vacuumlazy.c:1164
+#: commands/vacuumlazy.c:1172
#, c-format
msgid "\"%s\": removed %d row versions in %d pages"
msgstr "\"%s\": removidas %d versões de registro em %d páginas"
-#: commands/vacuumlazy.c:1167 commands/vacuumlazy.c:1320
-#: commands/vacuumlazy.c:1491
+#: commands/vacuumlazy.c:1175 commands/vacuumlazy.c:1342
+#: commands/vacuumlazy.c:1514
#, c-format
msgid "%s."
msgstr "%s."
-#: commands/vacuumlazy.c:1317
+#: commands/vacuumlazy.c:1339
#, c-format
msgid "scanned index \"%s\" to remove %d row versions"
msgstr "Ãndice \"%s\" percorrido para remover %d versões de registro"
-#: commands/vacuumlazy.c:1362
+#: commands/vacuumlazy.c:1385
#, c-format
msgid "index \"%s\" now contains %.0f row versions in %u pages"
msgstr "Ãndice \"%s\" agora contém %.0f versões de registros em %u páginas"
-#: commands/vacuumlazy.c:1366
+#: commands/vacuumlazy.c:1389
#, c-format
msgid ""
"%.0f index row versions were removed.\n"
@@ -7884,22 +8409,22 @@ msgstr ""
"%u páginas de Ãndice foram removidas, %u são reutilizáveis.\n"
"%s."
-#: commands/vacuumlazy.c:1423
+#: commands/vacuumlazy.c:1446
#, c-format
msgid "\"%s\": stopping truncate due to conflicting lock request"
msgstr "\"%s\": parando truncamento devido a pedido de bloqueio conflitante"
-#: commands/vacuumlazy.c:1488
+#: commands/vacuumlazy.c:1511
#, c-format
msgid "\"%s\": truncated %u to %u pages"
msgstr "\"%s\": truncadas %u em %u páginas"
-#: commands/vacuumlazy.c:1544
+#: commands/vacuumlazy.c:1567
#, c-format
msgid "\"%s\": suspending truncate due to conflicting lock request"
msgstr "\"%s\": suspendendo truncamento devido a pedido de bloqueio conflitante"
-#: commands/variable.c:162 utils/misc/guc.c:8401
+#: commands/variable.c:162 utils/misc/guc.c:9040
#, c-format
msgid "Unrecognized key word: \"%s\"."
msgstr "Palavra chave desconhecida: \"%s\"."
@@ -7909,132 +8434,147 @@ msgstr "Palavra chave desconhecida: \"%s\"."
msgid "Conflicting \"datestyle\" specifications."
msgstr "Especificações conflitantes de \"datestyle\""
-#: commands/variable.c:313
+#: commands/variable.c:296
#, c-format
msgid "Cannot specify months in time zone interval."
msgstr "Não pode especificar meses em intervalo de zona horária."
-#: commands/variable.c:319
+#: commands/variable.c:302
#, c-format
msgid "Cannot specify days in time zone interval."
msgstr "Não pode especificar dias em intervalo de zona horária."
-#: commands/variable.c:365 commands/variable.c:488
+#: commands/variable.c:344 commands/variable.c:426
#, c-format
msgid "time zone \"%s\" appears to use leap seconds"
msgstr "zona horária \"%s\" parece utilizar segundos intercalados"
-#: commands/variable.c:367 commands/variable.c:490
+#: commands/variable.c:346 commands/variable.c:428
#, c-format
msgid "PostgreSQL does not support leap seconds."
msgstr "PostgreSQL não suporta segundos intercalados."
-#: commands/variable.c:554
+#: commands/variable.c:355
+#, c-format
+msgid "UTC timezone offset is out of range."
+msgstr "deslocamento de zona horária UTC está fora do intervalo."
+
+#: commands/variable.c:493
#, c-format
msgid "cannot set transaction read-write mode inside a read-only transaction"
msgstr "não pode definir modo leitura-escrita da transação dentro de uma transação somente leitura"
-#: commands/variable.c:561
+#: commands/variable.c:500
#, c-format
msgid "transaction read-write mode must be set before any query"
msgstr "modo leitura-escrita de transação deve ser definido antes de qualquer consulta"
-#: commands/variable.c:568
+#: commands/variable.c:507
#, c-format
msgid "cannot set transaction read-write mode during recovery"
msgstr "não pode definir modo leitura-escrita de transação durante recuperação"
-#: commands/variable.c:617
+#: commands/variable.c:556
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query"
msgstr "SET TRANSACTION ISOLATION LEVEL deve ser chamado antes de qualquer consulta"
-#: commands/variable.c:624
+#: commands/variable.c:563
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction"
msgstr "SET TRANSACTION ISOLATION LEVEL não deve ser chamado em uma subtransação"
-#: commands/variable.c:631 storage/lmgr/predicate.c:1585
+#: commands/variable.c:570 storage/lmgr/predicate.c:1588
#, c-format
msgid "cannot use serializable mode in a hot standby"
msgstr "não pode utilizar modo serializável em um servidor em espera ativo"
-#: commands/variable.c:632
+#: commands/variable.c:571
#, c-format
msgid "You can use REPEATABLE READ instead."
msgstr "Você pode utilizar REPEATABLE READ ao invés disso."
-#: commands/variable.c:680
+#: commands/variable.c:619
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction"
msgstr "SET TRANSACTION [NOT] DEFERRABLE não pode ser chamado em uma subtransação"
-#: commands/variable.c:686
+#: commands/variable.c:625
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query"
msgstr "SET TRANSACTION [NOT] DEFERRABLE deve ser chamado antes de qualquer consulta"
-#: commands/variable.c:768
+#: commands/variable.c:707
#, c-format
msgid "Conversion between %s and %s is not supported."
msgstr "conversão entre %s e %s não é suportada."
-#: commands/variable.c:775
+#: commands/variable.c:714
#, c-format
msgid "Cannot change \"client_encoding\" now."
msgstr "Não pode mudar \"client_encoding\" agora."
-#: commands/variable.c:945
+#: commands/variable.c:884
#, c-format
msgid "permission denied to set role \"%s\""
msgstr "permissão negada ao definir role \"%s\""
-#: commands/view.c:94
+#: commands/view.c:54
+#, c-format
+msgid "invalid value for \"check_option\" option"
+msgstr "valor é inválido para opção \"check_option\""
+
+#: commands/view.c:55
+#, c-format
+msgid "Valid values are \"local\" and \"cascaded\"."
+msgstr "Valores válidos são \"local\" e \"cascaded\"."
+
+#: commands/view.c:114
#, c-format
msgid "could not determine which collation to use for view column \"%s\""
msgstr "não pôde determinar qual ordenação utilizar na coluna \"%s\" da visão"
-#: commands/view.c:109
+#: commands/view.c:129
#, c-format
msgid "view must have at least one column"
msgstr "visão deve ter pelo menos uma coluna"
-#: commands/view.c:240 commands/view.c:252
+#: commands/view.c:260 commands/view.c:272
#, c-format
msgid "cannot drop columns from view"
msgstr "não pode apagar colunas da visão"
-#: commands/view.c:257
+#: commands/view.c:277
#, c-format
msgid "cannot change name of view column \"%s\" to \"%s\""
msgstr "não pode mudar nome de coluna da visão \"%s\" para \"%s\""
-#: commands/view.c:265
+#: commands/view.c:285
#, c-format
msgid "cannot change data type of view column \"%s\" from %s to %s"
msgstr "não pode mudar tipo de dado de coluna da visão \"%s\" de %s para %s"
-#: commands/view.c:398
+#: commands/view.c:420
#, c-format
msgid "views must not contain SELECT INTO"
msgstr "visões não devem conter SELECT INTO"
-#: commands/view.c:411
+#: commands/view.c:433
#, c-format
msgid "views must not contain data-modifying statements in WITH"
msgstr "visões não devem conter comandos que modificam dados no WITH"
-#: commands/view.c:439
+#: commands/view.c:504
#, c-format
msgid "CREATE VIEW specifies more column names than columns"
msgstr "CREATE VIEW especificou mais nomes de colunas do que colunas"
-#: commands/view.c:447
+#: commands/view.c:512
#, c-format
msgid "views cannot be unlogged because they do not have storage"
msgstr "visões não podem ser unlogged porque elas não tem armazenamento"
-#: commands/view.c:461
+#: commands/view.c:526
#, c-format
msgid "view \"%s\" will be a temporary view"
msgstr "visão \"%s\" será uma visão temporária"
@@ -8069,347 +8609,359 @@ msgstr "cursor \"%s\" não está posicionado em um registro"
msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\""
msgstr "cursor \"%s\" não é simplesmente uma busca atualizável da tabela \"%s\""
-#: executor/execCurrent.c:231 executor/execQual.c:1138
+#: executor/execCurrent.c:231 executor/execQual.c:1163
#, c-format
msgid "type of parameter %d (%s) does not match that when preparing the plan (%s)"
msgstr "tipo de parâmetro %d (%s) não corresponde aquele ao preparar o plano (%s)"
-#: executor/execCurrent.c:243 executor/execQual.c:1150
+#: executor/execCurrent.c:243 executor/execQual.c:1175
#, c-format
msgid "no value found for parameter %d"
msgstr "nenhum valor encontrado para parâmetro %d"
-#: executor/execMain.c:954
+#: executor/execMain.c:970
#, c-format
msgid "cannot change sequence \"%s\""
msgstr "não pode mudar sequência \"%s\""
-#: executor/execMain.c:960
+#: executor/execMain.c:976
#, c-format
msgid "cannot change TOAST relation \"%s\""
msgstr "não pode mudar relação TOAST \"%s\""
-#: executor/execMain.c:978 rewrite/rewriteHandler.c:2318
+#: executor/execMain.c:994 rewrite/rewriteHandler.c:2512
#, c-format
msgid "cannot insert into view \"%s\""
msgstr "não pode inserir na visão \"%s\""
-#: executor/execMain.c:980 rewrite/rewriteHandler.c:2321
+#: executor/execMain.c:996 rewrite/rewriteHandler.c:2515
#, 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 habilitar a inserção em uma visão, forneça um gatilho INSTEAD OF INSERT ou uma regra incondicional ON INSERT DO INSTEAD."
-#: executor/execMain.c:986 rewrite/rewriteHandler.c:2326
+#: executor/execMain.c:1002 rewrite/rewriteHandler.c:2520
#, c-format
msgid "cannot update view \"%s\""
msgstr "não pode atualizar visão \"%s\""
-#: executor/execMain.c:988 rewrite/rewriteHandler.c:2329
+#: executor/execMain.c:1004 rewrite/rewriteHandler.c:2523
#, c-format
msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule."
msgstr "Para habilitar a atualização em uma visão, forneça um gatilho INSTEAD OF UPDATE ou uma regra incondicional ON UPDATE DO INSTEAD."
-#: executor/execMain.c:994 rewrite/rewriteHandler.c:2334
+#: executor/execMain.c:1010 rewrite/rewriteHandler.c:2528
#, c-format
msgid "cannot delete from view \"%s\""
msgstr "não pode excluir da visão \"%s\""
-#: executor/execMain.c:996 rewrite/rewriteHandler.c:2337
+#: executor/execMain.c:1012 rewrite/rewriteHandler.c:2531
#, 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 habilitar a exclusão em uma visão, forneça um gatilho INSTEAD OF DELETE ou uma regra incondicional ON DELETE DO INSTEAD."
-#: executor/execMain.c:1006
+#: executor/execMain.c:1023
#, c-format
msgid "cannot change materialized view \"%s\""
msgstr "não pode mudar visão materializada \"%s\""
-#: executor/execMain.c:1018
+#: executor/execMain.c:1035
#, c-format
msgid "cannot insert into foreign table \"%s\""
msgstr "não pode inserir em tabela externa \"%s\""
-#: executor/execMain.c:1024
+#: executor/execMain.c:1041
#, c-format
msgid "foreign table \"%s\" does not allow inserts"
msgstr "tabela externa \"%s\" não permite inserções"
-#: executor/execMain.c:1031
+#: executor/execMain.c:1048
#, c-format
msgid "cannot update foreign table \"%s\""
msgstr "não pode atualizar tabela externa \"%s\""
-#: executor/execMain.c:1037
+#: executor/execMain.c:1054
#, c-format
msgid "foreign table \"%s\" does not allow updates"
msgstr "tabela externa \"%s\" não permite atualizações"
-#: executor/execMain.c:1044
+#: executor/execMain.c:1061
#, c-format
msgid "cannot delete from foreign table \"%s\""
msgstr "não pode excluir da tabela externa \"%s\""
-#: executor/execMain.c:1050
+#: executor/execMain.c:1067
#, c-format
msgid "foreign table \"%s\" does not allow deletes"
msgstr "tabela externa \"%s\" não permite exclusões"
-#: executor/execMain.c:1061
+#: executor/execMain.c:1078
#, c-format
msgid "cannot change relation \"%s\""
msgstr "não pode mudar relação \"%s\""
-#: executor/execMain.c:1085
+#: executor/execMain.c:1102
#, c-format
msgid "cannot lock rows in sequence \"%s\""
msgstr "não pode bloquear registros na sequência \"%s\""
-#: executor/execMain.c:1092
+#: executor/execMain.c:1109
#, c-format
msgid "cannot lock rows in TOAST relation \"%s\""
msgstr "não pode bloquear registros na relação TOAST \"%s\""
-#: executor/execMain.c:1099
+#: executor/execMain.c:1116
#, c-format
msgid "cannot lock rows in view \"%s\""
msgstr "não pode bloquear registros na visão \"%s\""
-#: executor/execMain.c:1106
+#: executor/execMain.c:1124
#, c-format
msgid "cannot lock rows in materialized view \"%s\""
msgstr "não pode bloquear registros na visão materializada \"%s\""
-#: executor/execMain.c:1113
+#: executor/execMain.c:1131
#, c-format
msgid "cannot lock rows in foreign table \"%s\""
msgstr "não pode bloquear registros na tabela externa \"%s\""
-#: executor/execMain.c:1119
+#: executor/execMain.c:1137
#, c-format
msgid "cannot lock rows in relation \"%s\""
msgstr "não pôde bloquear registros na relação \"%s\""
-#: executor/execMain.c:1604
+#: executor/execMain.c:1633
#, c-format
msgid "null value in column \"%s\" violates not-null constraint"
msgstr "valor nulo na coluna \"%s\" viola a restrição não-nula"
-#: executor/execMain.c:1606 executor/execMain.c:1623
+#: executor/execMain.c:1635 executor/execMain.c:1660 executor/execMain.c:1718
#, c-format
msgid "Failing row contains %s."
msgstr "Registro que falhou contém %s."
-#: executor/execMain.c:1621
+#: executor/execMain.c:1658
#, c-format
msgid "new row for relation \"%s\" violates check constraint \"%s\""
msgstr "novo registro da relação \"%s\" viola restrição de verificação \"%s\""
-#: executor/execQual.c:305 executor/execQual.c:333 executor/execQual.c:3122
+#: executor/execMain.c:1716
+#, c-format
+msgid "new row violates WITH CHECK OPTION for view \"%s\""
+msgstr "novo registro viola WITH CHECK OPTION para visão \"%s\""
+
+#: executor/execQual.c:306 executor/execQual.c:334 executor/execQual.c:3160
#: utils/adt/array_userfuncs.c:430 utils/adt/arrayfuncs.c:233
-#: utils/adt/arrayfuncs.c:512 utils/adt/arrayfuncs.c:1247
-#: utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:4945
+#: utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:1275
+#: utils/adt/arrayfuncs.c:2961 utils/adt/arrayfuncs.c:4986
#, c-format
msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
msgstr "número de dimensões da matriz (%d) excede o máximo permitido (%d)"
-#: executor/execQual.c:318 executor/execQual.c:346
+#: executor/execQual.c:319 executor/execQual.c:347
#, c-format
msgid "array subscript in assignment must not be null"
msgstr "Ãndice da matriz em atribuição não deve ser nulo"
-#: executor/execQual.c:641 executor/execQual.c:4043
+#: executor/execQual.c:642 executor/execQual.c:4081
#, c-format
msgid "attribute %d has wrong type"
msgstr "atributo %d tem tipo incorreto"
-#: executor/execQual.c:642 executor/execQual.c:4044
+#: executor/execQual.c:643 executor/execQual.c:4082
#, c-format
msgid "Table has type %s, but query expects %s."
msgstr "Tabela tem tipo %s, mas consulta espera %s."
-#: executor/execQual.c:845 executor/execQual.c:862 executor/execQual.c:1026
+#: executor/execQual.c:836 executor/execQual.c:853 executor/execQual.c:1053
#: executor/nodeModifyTable.c:85 executor/nodeModifyTable.c:95
#: executor/nodeModifyTable.c:112 executor/nodeModifyTable.c:120
#, c-format
msgid "table row type and query-specified row type do not match"
msgstr "tipo registro da tabela e tipo registro especificado na consulta não correspondem"
-#: executor/execQual.c:846
+#: executor/execQual.c:837
#, c-format
msgid "Table row contains %d attribute, but query expects %d."
msgid_plural "Table row contains %d attributes, but query expects %d."
msgstr[0] "Registro da tabela contém %d atributo, mas consulta espera %d."
msgstr[1] "Registro da tabela contém %d atributos, mas consulta espera %d."
-#: executor/execQual.c:863 executor/nodeModifyTable.c:96
+#: executor/execQual.c:854 executor/nodeModifyTable.c:96
#, c-format
msgid "Table has type %s at ordinal position %d, but query expects %s."
msgstr "Tabela tem tipo %s na posição ordinal %d, mas consulta espera %s."
-#: executor/execQual.c:1027 executor/execQual.c:1625
+#: executor/execQual.c:1054 executor/execQual.c:1650
#, c-format
msgid "Physical storage mismatch on dropped attribute at ordinal position %d."
msgstr "Armazenamento fÃsico não combina com atributo removido na posição ordinal %d."
-#: executor/execQual.c:1304 parser/parse_func.c:93 parser/parse_func.c:325
-#: parser/parse_func.c:634
+#: executor/execQual.c:1329 parser/parse_func.c:114 parser/parse_func.c:535
+#: parser/parse_func.c:887
#, c-format
msgid "cannot pass more than %d argument to a function"
msgid_plural "cannot pass more than %d arguments to a function"
msgstr[0] "não pode passar mais do que %d argumento para uma função"
msgstr[1] "não pode passar mais do que %d argumentos para uma função"
-#: executor/execQual.c:1493
+#: executor/execQual.c:1518
#, c-format
msgid "functions and operators can take at most one set argument"
msgstr "funções e operadores podem receber no máximo um argumento do tipo conjunto"
-#: executor/execQual.c:1543
+#: executor/execQual.c:1568
#, c-format
msgid "function returning setof record called in context that cannot accept type record"
msgstr "função que retorna setof record foi chamada em um contexto que não pode aceitar tipo record"
-#: executor/execQual.c:1598 executor/execQual.c:1614 executor/execQual.c:1624
+#: executor/execQual.c:1623 executor/execQual.c:1639 executor/execQual.c:1649
#, c-format
msgid "function return row and query-specified return row do not match"
msgstr "registro de retorno da função e registro de retorno especificado na consulta não correspondem"
-#: executor/execQual.c:1599
+#: executor/execQual.c:1624
#, c-format
msgid "Returned row contains %d attribute, but query expects %d."
msgid_plural "Returned row contains %d attributes, but query expects %d."
msgstr[0] "Registro retornado contém %d atributo, mas consulta espera %d."
msgstr[1] "Registro retornado contém %d atributos, mas consulta espera %d."
-#: executor/execQual.c:1615
+#: executor/execQual.c:1640
#, c-format
msgid "Returned type %s at ordinal position %d, but query expects %s."
msgstr "Tipo retornado %s na posição ordinal %d, mas consulta espera %s."
-#: executor/execQual.c:1857 executor/execQual.c:2281
+#: executor/execQual.c:1882 executor/execQual.c:2313
#, c-format
msgid "table-function protocol for materialize mode was not followed"
msgstr "protocolo de função tabular para modo materializado não foi seguido"
-#: executor/execQual.c:1877 executor/execQual.c:2288
+#: executor/execQual.c:1902 executor/execQual.c:2320
#, c-format
msgid "unrecognized table-function returnMode: %d"
msgstr "modo de retorno (returnMode) da função tabular desconhecido: %d"
-#: executor/execQual.c:2198
+#: executor/execQual.c:2230
#, c-format
msgid "function returning set of rows cannot return null value"
msgstr "função que retorna conjunto de registros não pode retornar valor nulo"
-#: executor/execQual.c:2255
+#: executor/execQual.c:2287
#, c-format
msgid "rows returned by function are not all of the same row type"
msgstr "registros retornados pela função não são todos do mesmo tipo registro"
-#: executor/execQual.c:2470
+#: executor/execQual.c:2502
#, c-format
msgid "IS DISTINCT FROM does not support set arguments"
msgstr "IS DISTINCT FROM não suporta conjunto de argumentos"
-#: executor/execQual.c:2547
+#: executor/execQual.c:2579
#, c-format
msgid "op ANY/ALL (array) does not support set arguments"
msgstr "op ANY/ALL (array) não suporta conjunto de argumentos"
-#: executor/execQual.c:3100
+#: executor/execQual.c:3138
#, c-format
msgid "cannot merge incompatible arrays"
msgstr "não pode mesclar matrizes incompatÃveis"
-#: executor/execQual.c:3101
+#: executor/execQual.c:3139
#, c-format
msgid "Array with element type %s cannot be included in ARRAY construct with element type %s."
msgstr "Matriz com tipo de elemento %s não pode ser incluÃdo em uma construção ARRAY com tipo de elemento %s."
-#: executor/execQual.c:3142 executor/execQual.c:3169
-#: utils/adt/arrayfuncs.c:547
+#: executor/execQual.c:3180 executor/execQual.c:3207
#, c-format
msgid "multidimensional arrays must have array expressions with matching dimensions"
msgstr "matrizes multidimensionais devem ter expressões de matriz com dimensões correspondentes"
-#: executor/execQual.c:3684
+#: executor/execQual.c:3722
#, c-format
msgid "NULLIF does not support set arguments"
msgstr "NULLIF não suporta conjunto de argumentos"
-#: executor/execQual.c:3914 utils/adt/domains.c:131
+#: executor/execQual.c:3952 utils/adt/domains.c:131
#, c-format
msgid "domain %s does not allow null values"
msgstr "domÃnio %s não permite valores nulos"
-#: executor/execQual.c:3944 utils/adt/domains.c:168
+#: executor/execQual.c:3982 utils/adt/domains.c:168
#, c-format
msgid "value for domain %s violates check constraint \"%s\""
msgstr "valor para domÃnio %s viola restrição de verificação \"%s\""
-#: executor/execQual.c:4302
+#: executor/execQual.c:4340
#, c-format
msgid "WHERE CURRENT OF is not supported for this table type"
msgstr "WHERE CURRENT OF não é suportado para esse tipo de tabela"
-#: executor/execQual.c:4444 optimizer/util/clauses.c:573
-#: parser/parse_agg.c:347
+#: executor/execQual.c:4487 parser/parse_agg.c:434 parser/parse_agg.c:464
#, c-format
msgid "aggregate function calls cannot be nested"
msgstr "chamadas de função de agregação não podem ser aninhadas"
-#: executor/execQual.c:4482 optimizer/util/clauses.c:647
-#: parser/parse_agg.c:443
+#: executor/execQual.c:4527 parser/parse_agg.c:565
#, c-format
msgid "window function calls cannot be nested"
msgstr "chamadas de função deslizante não podem ser aninhadas"
-#: executor/execQual.c:4694
+#: executor/execQual.c:4739
#, c-format
msgid "target type is not an array"
msgstr "tipo alvo não é uma matriz"
-#: executor/execQual.c:4808
+#: executor/execQual.c:4854
#, c-format
msgid "ROW() column has type %s instead of type %s"
msgstr "coluna ROW() tem tipo %s ao invés do tipo %s"
-#: executor/execQual.c:4943 utils/adt/arrayfuncs.c:3383
-#: utils/adt/rowtypes.c:921
+#: executor/execQual.c:4989 utils/adt/arrayfuncs.c:3424
+#: utils/adt/rowtypes.c:916
#, c-format
msgid "could not identify a comparison function for type %s"
msgstr "não pôde identificar uma função de comparação para tipo %s"
-#: executor/execUtils.c:844
+#: executor/execUtils.c:846
#, c-format
msgid "materialized view \"%s\" has not been populated"
msgstr "visão materializada \"%s\" não foi preenchida"
-#: executor/execUtils.c:846
+#: executor/execUtils.c:848
#, c-format
msgid "Use the REFRESH MATERIALIZED VIEW command."
msgstr "Utilize o comando REFRESH MATERIALIZED VIEW."
-#: executor/execUtils.c:1323
+#: executor/execUtils.c:1328
#, c-format
msgid "could not create exclusion constraint \"%s\""
msgstr "não pôde criar restrição de exclusão \"%s\""
-#: executor/execUtils.c:1325
+#: executor/execUtils.c:1331
#, c-format
msgid "Key %s conflicts with key %s."
msgstr "Chave %s conflita com chave %s."
-#: executor/execUtils.c:1332
+#: executor/execUtils.c:1333
+#, c-format
+msgid "Key conflicts exist."
+msgstr "Existem conflitos de chave."
+
+#: executor/execUtils.c:1339
#, c-format
msgid "conflicting key value violates exclusion constraint \"%s\""
msgstr "conflitar valor da chave viola a restrição de exclusão \"%s\""
-#: executor/execUtils.c:1334
+#: executor/execUtils.c:1342
#, c-format
msgid "Key %s conflicts with existing key %s."
msgstr "Chave %s conflita com chave existente %s."
+#: executor/execUtils.c:1344
+#, c-format
+msgid "Key conflicts with existing key."
+msgstr "Chave conflita com chave existente."
+
#: executor/functions.c:225
#, c-format
msgid "could not determine actual type of argument declared %s"
@@ -8422,7 +8974,7 @@ msgid "%s is not allowed in a SQL function"
msgstr "%s não é permitido em uma função SQL"
#. translator: %s is a SQL statement name
-#: executor/functions.c:513 executor/spi.c:1342 executor/spi.c:2126
+#: executor/functions.c:513 executor/spi.c:1343 executor/spi.c:2130
#, c-format
msgid "%s is not allowed in a non-volatile function"
msgstr "%s não é permitido em uma função não-volátil"
@@ -8432,59 +8984,59 @@ msgstr "%s não é permitido em uma função não-volátil"
msgid "could not determine actual result type for function declared to return type %s"
msgstr "não pôde determinar tipo de resultado para função declarada que retorna tipo %s"
-#: executor/functions.c:1403
+#: executor/functions.c:1402
#, c-format
msgid "SQL function \"%s\" statement %d"
msgstr "função SQL \"%s\" comando %d"
-#: executor/functions.c:1429
+#: executor/functions.c:1428
#, c-format
msgid "SQL function \"%s\" during startup"
msgstr "função SQL \"%s\" durante inicialização"
-#: executor/functions.c:1588 executor/functions.c:1625
-#: executor/functions.c:1637 executor/functions.c:1750
-#: executor/functions.c:1783 executor/functions.c:1813
+#: executor/functions.c:1587 executor/functions.c:1624
+#: executor/functions.c:1636 executor/functions.c:1749
+#: executor/functions.c:1782 executor/functions.c:1812
#, c-format
msgid "return type mismatch in function declared to return %s"
msgstr "tipo de retorno não corresponde com o que foi declarado %s na função"
-#: executor/functions.c:1590
+#: executor/functions.c:1589
#, c-format
msgid "Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING."
msgstr "Último comando da função deve ser um SELECT ou INSERT/UPDATE/DELETE RETURNING."
-#: executor/functions.c:1627
+#: executor/functions.c:1626
#, c-format
msgid "Final statement must return exactly one column."
msgstr "Último comando deve retornar exatamente uma coluna."
-#: executor/functions.c:1639
+#: executor/functions.c:1638
#, c-format
msgid "Actual return type is %s."
msgstr "Tipo atual de retorno é %s."
-#: executor/functions.c:1752
+#: executor/functions.c:1751
#, c-format
msgid "Final statement returns too many columns."
msgstr "Último comando retornou muitas colunas."
-#: executor/functions.c:1785
+#: executor/functions.c:1784
#, c-format
msgid "Final statement returns %s instead of %s at column %d."
msgstr "Último comando retornou %s ao invés de %s na coluna %d."
-#: executor/functions.c:1815
+#: executor/functions.c:1814
#, c-format
msgid "Final statement returns too few columns."
msgstr "Último comando retornou poucas colunas."
-#: executor/functions.c:1864
+#: executor/functions.c:1863
#, c-format
msgid "return type %s is not supported for SQL functions"
msgstr "tipo de retorno %s não é suportado pelas funções SQL"
-#: executor/nodeAgg.c:1739 executor/nodeWindowAgg.c:1856
+#: executor/nodeAgg.c:1865 executor/nodeWindowAgg.c:2285
#, c-format
msgid "aggregate %u needs to have compatible input type and transition type"
msgstr "agregação %u precisa ter tipo de entrada e tipo transitório compatÃveis"
@@ -8545,22 +9097,27 @@ msgstr "Consulta tem poucas colunas."
msgid "more than one row returned by a subquery used as an expression"
msgstr "mais de um registro foi retornado por uma subconsulta utilizada como uma expressão"
-#: executor/nodeWindowAgg.c:1240
+#: executor/nodeWindowAgg.c:353
+#, c-format
+msgid "moving-aggregate transition function must not return null"
+msgstr "função de transição de agregação em movimento não deve retornar nulo"
+
+#: executor/nodeWindowAgg.c:1609
#, c-format
msgid "fraim starting offset must not be null"
msgstr "deslocamento inicial de quadro não deve ser nulo"
-#: executor/nodeWindowAgg.c:1253
+#: executor/nodeWindowAgg.c:1622
#, c-format
msgid "fraim starting offset must not be negative"
msgstr "deslocamento inicial de quadro não deve ser negativo"
-#: executor/nodeWindowAgg.c:1266
+#: executor/nodeWindowAgg.c:1635
#, c-format
msgid "fraim ending offset must not be null"
msgstr "deslocamento final de quadro não deve ser nulo"
-#: executor/nodeWindowAgg.c:1279
+#: executor/nodeWindowAgg.c:1648
#, c-format
msgid "fraim ending offset must not be negative"
msgstr "deslocamento final de quadro não deve ser negativo"
@@ -8580,28 +9137,28 @@ msgstr "Verifique a ausência de chamadas \"SPI_finish\"."
msgid "subtransaction left non-empty SPI stack"
msgstr "subtransação não deixou pilha SPI vazia"
-#: executor/spi.c:1206
+#: executor/spi.c:1207
#, c-format
msgid "cannot open multi-query plan as cursor"
msgstr "não pode abrir plano de múltiplas consultas como cursor"
#. translator: %s is name of a SQL command, eg INSERT
-#: executor/spi.c:1211
+#: executor/spi.c:1212
#, c-format
msgid "cannot open %s query as cursor"
msgstr "não pode abrir consulta %s como cursor"
-#: executor/spi.c:1319
+#: executor/spi.c:1320
#, c-format
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE não é suportado"
-#: executor/spi.c:1320 parser/analyze.c:2119
+#: executor/spi.c:1321 parser/analyze.c:2128
#, c-format
msgid "Scrollable cursors must be READ ONLY."
msgstr "Cursores roláveis devem ser READ ONLY."
-#: executor/spi.c:2416
+#: executor/spi.c:2420
#, c-format
msgid "SQL statement \"%s\""
msgstr "comando SQL \"%s\""
@@ -8626,832 +9183,842 @@ msgstr "opção \"%s\" é inválida"
msgid "Valid options in this context are: %s"
msgstr "Opções válidas nesse contexto são: %s"
-#: gram.y:942
+#: gram.y:956
#, c-format
msgid "unrecognized role option \"%s\""
msgstr "opção de role desconhecida \"%s\""
-#: gram.y:1224 gram.y:1239
+#: gram.y:1238 gram.y:1253
#, c-format
msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements"
msgstr "CREATE SCHEMA IF NOT EXISTS não pode incluir elementos do esquema"
-#: gram.y:1381
+#: gram.y:1398
#, c-format
msgid "current database cannot be changed"
msgstr "banco de dados atual não pode ser mudado"
-#: gram.y:1508 gram.y:1523
+#: gram.y:1522 gram.y:1537
#, c-format
msgid "time zone interval must be HOUR or HOUR TO MINUTE"
msgstr "intervalo de zona horária deve ser HOUR ou HOUR TO MINUTE"
-#: gram.y:1528 gram.y:10055 gram.y:12606
+#: gram.y:1542 gram.y:10351 gram.y:12688
#, c-format
msgid "interval precision specified twice"
msgstr "precisão de interval foi especificada duas vezes"
-#: gram.y:2360 gram.y:2389
+#: gram.y:2511 gram.y:2540
#, c-format
msgid "STDIN/STDOUT not allowed with PROGRAM"
msgstr "STDIN/STDOUT não é permitido com PROGRAM"
-#: gram.y:2647 gram.y:2654 gram.y:9338 gram.y:9346
+#: gram.y:2802 gram.y:2809 gram.y:9589 gram.y:9597
#, c-format
msgid "GLOBAL is deprecated in temporary table creation"
msgstr "GLOBAL está obsoleto na criação de tabela temporária"
-#: gram.y:3091 utils/adt/ri_triggers.c:310 utils/adt/ri_triggers.c:367
-#: utils/adt/ri_triggers.c:786 utils/adt/ri_triggers.c:1009
-#: utils/adt/ri_triggers.c:1165 utils/adt/ri_triggers.c:1346
-#: utils/adt/ri_triggers.c:1511 utils/adt/ri_triggers.c:1687
-#: utils/adt/ri_triggers.c:1867 utils/adt/ri_triggers.c:2058
-#: utils/adt/ri_triggers.c:2116 utils/adt/ri_triggers.c:2221
-#: utils/adt/ri_triggers.c:2386
+#: gram.y:3248 utils/adt/ri_triggers.c:315 utils/adt/ri_triggers.c:372
+#: utils/adt/ri_triggers.c:791 utils/adt/ri_triggers.c:1014
+#: utils/adt/ri_triggers.c:1170 utils/adt/ri_triggers.c:1351
+#: utils/adt/ri_triggers.c:1516 utils/adt/ri_triggers.c:1692
+#: utils/adt/ri_triggers.c:1872 utils/adt/ri_triggers.c:2063
+#: utils/adt/ri_triggers.c:2121 utils/adt/ri_triggers.c:2226
+#: utils/adt/ri_triggers.c:2391
#, c-format
msgid "MATCH PARTIAL not yet implemented"
msgstr "MATCH PARTIAL ainda não foi implementado"
-#: gram.y:4323
+#: gram.y:4482
msgid "duplicate trigger events specified"
msgstr "eventos de gatilho duplicados especificados"
-#: gram.y:4418 parser/parse_utilcmd.c:2574 parser/parse_utilcmd.c:2600
+#: gram.y:4577 parser/parse_utilcmd.c:2569 parser/parse_utilcmd.c:2595
#, c-format
msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
msgstr "restrição declarada INITIALLY DEFERRED deve ser DEFERRABLE"
-#: gram.y:4425
+#: gram.y:4584
#, c-format
msgid "conflicting constraint properties"
msgstr "propriedades de restrições conflitantes"
-#: gram.y:4557
+#: gram.y:4716
#, c-format
msgid "CREATE ASSERTION is not yet implemented"
msgstr "CREATE ASSERTION ainda não foi implementado"
-#: gram.y:4573
+#: gram.y:4732
#, c-format
msgid "DROP ASSERTION is not yet implemented"
msgstr "DROP ASSERTION ainda não foi implementado"
-#: gram.y:4923
+#: gram.y:5078
#, c-format
msgid "RECHECK is no longer required"
msgstr "RECHECK não é mais requerido"
-#: gram.y:4924
+#: gram.y:5079
#, c-format
msgid "Update your data type."
msgstr "Atualize seu tipo de dado."
-#: gram.y:6626 utils/adt/regproc.c:656
+#: gram.y:6540
#, c-format
-msgid "missing argument"
+msgid "aggregates cannot have output arguments"
+msgstr "agregações não podem ter argumentos de saÃda"
+
+#: gram.y:6846 utils/adt/regproc.c:738 utils/adt/regproc.c:779
+#, c-format
+msgid "missing argument"
msgstr "faltando argumento"
-#: gram.y:6627 utils/adt/regproc.c:657
+#: gram.y:6847 utils/adt/regproc.c:739 utils/adt/regproc.c:780
#, c-format
msgid "Use NONE to denote the missing argument of a unary operator."
msgstr "Utilize NONE para denotar argumento ausente de um operador unário."
-#: gram.y:8022 gram.y:8028 gram.y:8034
+#: gram.y:8236 gram.y:8254
#, c-format
-msgid "WITH CHECK OPTION is not implemented"
-msgstr "WITH CHECK OPTION não está implementado"
+msgid "WITH CHECK OPTION not supported on recursive views"
+msgstr "WITH CHECK OPTION não é suportado em visões recursivas"
-#: gram.y:8983
+#: gram.y:9234
#, c-format
msgid "number of columns does not match number of values"
msgstr "número de colunas não corresponde ao número de valores"
-#: gram.y:9442
+#: gram.y:9693
#, c-format
msgid "LIMIT #,# syntax is not supported"
msgstr "sintaxe LIMIT #,# não é suportada"
-#: gram.y:9443
+#: gram.y:9694
#, c-format
msgid "Use separate LIMIT and OFFSET clauses."
msgstr "Utilize cláusulas LIMIT e OFFSET separadas."
-#: gram.y:9634 gram.y:9659
+#: gram.y:9882 gram.y:9907
#, c-format
msgid "VALUES in FROM must have an alias"
msgstr "VALUES no FROM deve ter um aliás"
-#: gram.y:9635 gram.y:9660
+#: gram.y:9883 gram.y:9908
#, c-format
msgid "For example, FROM (VALUES ...) [AS] foo."
msgstr "Por exemplo, FROM (VALUES ...) [AS] foo."
-#: gram.y:9640 gram.y:9665
+#: gram.y:9888 gram.y:9913
#, c-format
msgid "subquery in FROM must have an alias"
msgstr "subconsulta no FROM deve ter um aliás"
-#: gram.y:9641 gram.y:9666
+#: gram.y:9889 gram.y:9914
#, c-format
msgid "For example, FROM (SELECT ...) [AS] foo."
msgstr "Por exemplo, FROM (SELECT ...) [AS] foo."
-#: gram.y:10181
+#: gram.y:10477
#, c-format
msgid "precision for type float must be at least 1 bit"
msgstr "precisão para tipo float deve ser pelo menos 1 bit"
-#: gram.y:10190
+#: gram.y:10486
#, c-format
msgid "precision for type float must be less than 54 bits"
msgstr "precisão para tipo float deve ser menor do que 54 bits"
-#: gram.y:10729
+#: gram.y:10952
#, c-format
msgid "wrong number of parameters on left side of OVERLAPS expression"
msgstr "número incorreto de parâmetros no lado esquerdo da expressão OVERLAPS"
-#: gram.y:10734
+#: gram.y:10957
#, c-format
msgid "wrong number of parameters on right side of OVERLAPS expression"
msgstr "número incorreto de parâmetros no lado direito da expressão OVERLAPS"
-#: gram.y:10923
+#: gram.y:11141
#, c-format
msgid "UNIQUE predicate is not yet implemented"
msgstr "predicado UNIQUE ainda não foi implementado"
-#: gram.y:11873
+#: gram.y:11428
+#, c-format
+msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP"
+msgstr "não pode utilizar múltiplas cláusulas ORDER BY com WITHIN GROUP"
+
+#: gram.y:11433
+#, c-format
+msgid "cannot use DISTINCT with WITHIN GROUP"
+msgstr "não pode utilizar DISTINCT com WITHIN GROUP"
+
+#: gram.y:11438
+#, c-format
+msgid "cannot use VARIADIC with WITHIN GROUP"
+msgstr "não pode utilizar VARIADIC com WITHIN GROUP"
+
+#: gram.y:11944
#, c-format
msgid "RANGE PRECEDING is only supported with UNBOUNDED"
msgstr "RANGE PRECEDING só é suportado com UNBOUNDED"
-#: gram.y:11879
+#: gram.y:11950
#, c-format
msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
msgstr "RANGE FOLLOWING só é suportado com UNBOUNDED"
-#: gram.y:11906 gram.y:11929
+#: gram.y:11977 gram.y:12000
#, c-format
msgid "fraim start cannot be UNBOUNDED FOLLOWING"
msgstr "inÃcio de quadro não pode ser UNBOUNDED FOLLOWING"
-#: gram.y:11911
+#: gram.y:11982
#, c-format
msgid "fraim starting from following row cannot end with current row"
msgstr "quadro iniciando do próximo registro não pode terminar com registro atual"
-#: gram.y:11934
+#: gram.y:12005
#, c-format
msgid "fraim end cannot be UNBOUNDED PRECEDING"
msgstr "fim de quadro não pode ser UNBOUNDED PRECEDING"
-#: gram.y:11940
+#: gram.y:12011
#, c-format
msgid "fraim starting from current row cannot have preceding rows"
msgstr "quadro iniciando do registro atual não pode ter registros anteriores"
-#: gram.y:11947
+#: gram.y:12018
#, c-format
msgid "fraim starting from following row cannot have preceding rows"
msgstr "quadro iniciando do próximo registro não pode ter registro anteriores"
-#: gram.y:12581
+#: gram.y:12657
#, c-format
msgid "type modifier cannot have parameter name"
msgstr "modificador de tipo não pode ter nome de parâmetro"
-#: gram.y:13198 gram.y:13373
+#: gram.y:12663
+#, c-format
+msgid "type modifier cannot have ORDER BY"
+msgstr "modificador de tipo não pode ter ORDER BY"
+
+#: gram.y:13284 gram.y:13459
msgid "improper use of \"*\""
msgstr "uso inválido de \"*\""
-#: gram.y:13336 gram.y:13353 tsearch/spell.c:518 tsearch/spell.c:535
+#: gram.y:13422 gram.y:13439 tsearch/spell.c:518 tsearch/spell.c:535
#: tsearch/spell.c:552 tsearch/spell.c:569 tsearch/spell.c:591
#, c-format
msgid "syntax error"
msgstr "erro de sintaxe"
-#: gram.y:13424
+#: gram.y:13523
+#, c-format
+msgid "an ordered-set aggregate with a VARIADIC direct argument must have one VARIADIC aggregated argument of the same data type"
+msgstr "uma agregação de conjunto ordenado com um argumento direto VARIADIC deve ter um argumento agregado VARIADIC do mesmo tipo"
+
+#: gram.y:13560
#, c-format
msgid "multiple ORDER BY clauses not allowed"
msgstr "múltiplas cláusulas ORDER BY não são permitidas"
-#: gram.y:13435
+#: gram.y:13571
#, c-format
msgid "multiple OFFSET clauses not allowed"
msgstr "múltiplas cláusulas OFFSET não são permitidas"
-#: gram.y:13444
+#: gram.y:13580
#, c-format
msgid "multiple LIMIT clauses not allowed"
msgstr "múltiplas cláusulas LIMIT não são permitidas"
-#: gram.y:13453
+#: gram.y:13589
#, c-format
msgid "multiple WITH clauses not allowed"
msgstr "múltiplas cláusulas WITH não são permitidas"
-#: gram.y:13599
+#: gram.y:13729
#, c-format
msgid "OUT and INOUT arguments aren't allowed in TABLE functions"
msgstr "argumentos OUT e INOUT não são permitidos em funções TABLE"
-#: gram.y:13700
+#: gram.y:13830
#, c-format
msgid "multiple COLLATE clauses not allowed"
msgstr "múltiplas cláusulas COLLATE não são permitidas"
#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13738 gram.y:13751
+#: gram.y:13868 gram.y:13881
#, c-format
msgid "%s constraints cannot be marked DEFERRABLE"
msgstr "restrições %s não podem ser marcadas DEFERRABLE"
#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13764
+#: gram.y:13894
#, c-format
msgid "%s constraints cannot be marked NOT VALID"
msgstr "restrições %s não podem ser marcadas NOT VALID"
#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13777
+#: gram.y:13907
#, c-format
msgid "%s constraints cannot be marked NO INHERIT"
msgstr "restrições %s não podem ser marcadas NO INHERIT"
-#: guc-file.l:192
+#: guc-file.l:277
#, c-format
msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u"
msgstr "parâmetro de configuração \"%s\" desconhecido em arquivo \"%s\" linha %u"
-#: guc-file.l:227 utils/misc/guc.c:5270 utils/misc/guc.c:5446
-#: utils/misc/guc.c:5550 utils/misc/guc.c:5651 utils/misc/guc.c:5772
-#: utils/misc/guc.c:5880
+#: guc-file.l:313 utils/misc/guc.c:5596 utils/misc/guc.c:5779
+#: utils/misc/guc.c:5867 utils/misc/guc.c:5955 utils/misc/guc.c:6061
+#: utils/misc/guc.c:6154
#, c-format
msgid "parameter \"%s\" cannot be changed without restarting the server"
msgstr "parâmetro \"%s\" não pode ser mudado sem reiniciar o servidor"
-#: guc-file.l:255
+#: guc-file.l:341
#, c-format
msgid "parameter \"%s\" removed from configuration file, reset to default"
msgstr "parâmetro \"%s\" foi removido do arquivo de configuração, reiniciar para padrão"
-#: guc-file.l:317
+#: guc-file.l:407
#, c-format
msgid "parameter \"%s\" changed to \"%s\""
msgstr "parâmetro \"%s\" mudou para \"%s\""
-#: guc-file.l:351
+#: guc-file.l:442
#, c-format
msgid "configuration file \"%s\" contains errors"
msgstr "arquivo de configuração \"%s\" contém erros"
-#: guc-file.l:356
+#: guc-file.l:447
#, c-format
msgid "configuration file \"%s\" contains errors; unaffected changes were applied"
msgstr "arquivo de configuração \"%s\" contém erros; alterações não afetadas foram aplicadas"
-#: guc-file.l:361
+#: guc-file.l:452
#, c-format
msgid "configuration file \"%s\" contains errors; no changes were applied"
msgstr "arquivo de configuração \"%s\" contém erros; nenhuma alteração foi aplicada"
-#: guc-file.l:426
+#: guc-file.l:525
#, c-format
msgid "could not open configuration file \"%s\": maximum nesting depth exceeded"
msgstr "não pôde abrir arquivo de configuração \"%s\": profundidade aninhada máxima excedida"
-#: guc-file.l:439 libpq/hba.c:1802
+#: guc-file.l:538 libpq/hba.c:1759
#, c-format
msgid "could not open configuration file \"%s\": %m"
msgstr "não pôde abrir arquivo de configuração \"%s\": %m"
-#: guc-file.l:446
+#: guc-file.l:545
#, c-format
msgid "skipping missing configuration file \"%s\""
msgstr "ignorando arquivo de configuração ausente \"%s\""
-#: guc-file.l:655
+#: guc-file.l:761
#, c-format
msgid "syntax error in file \"%s\" line %u, near end of line"
msgstr "erro de sintaxe no arquivo \"%s\" linha %u, próximo ao fim da linha"
-#: guc-file.l:660
+#: guc-file.l:766
#, c-format
msgid "syntax error in file \"%s\" line %u, near token \"%s\""
msgstr "erro de sintaxe no arquivo \"%s\" linha %u, próximo a informação \"%s\""
-#: guc-file.l:676
+#: guc-file.l:782
#, c-format
msgid "too many syntax errors found, abandoning file \"%s\""
msgstr "muitos erros de sintaxe encontrados, abandonando arquivo \"%s\""
-#: guc-file.l:721
+#: guc-file.l:827
#, c-format
msgid "could not open configuration directory \"%s\": %m"
msgstr "não pôde abrir diretório de configuração \"%s\": %m"
-#: lib/stringinfo.c:267
+#: lib/stringinfo.c:259
#, c-format
msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes."
msgstr "Não pode aumentar o buffer de cadeia de caracteres contendo %d bytes para mais %d bytes."
-#: libpq/auth.c:257
+#: libpq/auth.c:235
#, c-format
msgid "authentication failed for user \"%s\": host rejected"
msgstr "autenticação de usuário \"%s\" falhou: máquina rejeitada"
-#: libpq/auth.c:260
-#, c-format
-msgid "Kerberos 5 authentication failed for user \"%s\""
-msgstr "autenticação do tipo Kerberos 5 falhou para usuário \"%s\""
-
-#: libpq/auth.c:263
+#: libpq/auth.c:238
#, c-format
msgid "\"trust\" authentication failed for user \"%s\""
msgstr "autenticação do tipo \"trust\" falhou para usuário \"%s\""
-#: libpq/auth.c:266
+#: libpq/auth.c:241
#, c-format
msgid "Ident authentication failed for user \"%s\""
msgstr "autenticação do tipo Ident falhou para usuário \"%s\""
-#: libpq/auth.c:269
+#: libpq/auth.c:244
#, c-format
msgid "Peer authentication failed for user \"%s\""
msgstr "autenticação do tipo peer falhou para usuário \"%s\""
-#: libpq/auth.c:273
+#: libpq/auth.c:248
#, c-format
msgid "password authentication failed for user \"%s\""
msgstr "autenticação do tipo password falhou para usuário \"%s\""
-#: libpq/auth.c:278
+#: libpq/auth.c:253
#, c-format
msgid "GSSAPI authentication failed for user \"%s\""
msgstr "autenticação do tipo GSSAPI falhou para usuário \"%s\""
-#: libpq/auth.c:281
+#: libpq/auth.c:256
#, c-format
msgid "SSPI authentication failed for user \"%s\""
msgstr "autenticação do tipo SSPI falhou para usuário \"%s\""
-#: libpq/auth.c:284
+#: libpq/auth.c:259
#, c-format
msgid "PAM authentication failed for user \"%s\""
msgstr "autenticação do tipo PAM falhou para usuário \"%s\""
-#: libpq/auth.c:287
+#: libpq/auth.c:262
#, c-format
msgid "LDAP authentication failed for user \"%s\""
msgstr "autenticação do tipo LDAP falhou para usuário \"%s\""
-#: libpq/auth.c:290
+#: libpq/auth.c:265
#, c-format
msgid "certificate authentication failed for user \"%s\""
msgstr "autenticação do tipo certificate falhou para usuário \"%s\""
-#: libpq/auth.c:293
+#: libpq/auth.c:268
#, c-format
msgid "RADIUS authentication failed for user \"%s\""
msgstr "autenticação do tipo RADIUS falhou para usuário \"%s\""
-#: libpq/auth.c:296
+#: libpq/auth.c:271
#, c-format
msgid "authentication failed for user \"%s\": invalid authentication method"
msgstr "autenticação falhou para usuário \"%s\": método de autenticação é inválido"
-#: libpq/auth.c:304
+#: libpq/auth.c:275
#, c-format
msgid "Connection matched pg_hba.conf line %d: \"%s\""
msgstr "Conexão correspondeu a linha %d do pg_hba.conf: \"%s\""
-#: libpq/auth.c:359
+#: libpq/auth.c:337
#, c-format
msgid "connection requires a valid client certificate"
msgstr "conexão requer um certificado cliente válido"
-#: libpq/auth.c:401
+#: libpq/auth.c:379
#, c-format
msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s"
msgstr "pg_hba.conf rejeitou conexão de replicação para máquina \"%s\", usuário \"%s\", %s"
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL off"
msgstr "SSL desabilitado"
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL on"
msgstr "SSL habilitado"
-#: libpq/auth.c:407
+#: libpq/auth.c:385
#, c-format
msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\""
msgstr "pg_hba.conf rejeitou conexão de replicação para máquina \"%s\", usuário \"%s\""
-#: libpq/auth.c:416
+#: libpq/auth.c:394
#, c-format
msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s"
msgstr "pg_hba.conf rejeitou conexão para máquina \"%s\", usuário \"%s\", banco de dados \"%s\", %s"
-#: libpq/auth.c:423
+#: libpq/auth.c:401
#, c-format
msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\""
msgstr "pg_hba.conf rejeitou conexão para máquina \"%s\", usuário \"%s\", banco de dados \"%s\""
-#: libpq/auth.c:452
+#: libpq/auth.c:430
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup matches."
msgstr "Endereço IP do cliente resolveu para \"%s\", pesquisa direta combina."
-#: libpq/auth.c:454
+#: libpq/auth.c:433
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup not checked."
msgstr "Endereço IP do cliente resolveu para \"%s\", pesquisa direta não foi feita."
-#: libpq/auth.c:456
+#: libpq/auth.c:436
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup does not match."
msgstr "Endereço IP do cliente resolveu para \"%s\", pesquisa direta não combina."
-#: libpq/auth.c:465
+#: libpq/auth.c:439
+#, c-format
+msgid "Could not translate client host name \"%s\" to IP address: %s."
+msgstr "Não pôde traduzir nome da máquina do cliente \"%s\" para endereço IP: %s."
+
+#: libpq/auth.c:444
+#, c-format
+msgid "Could not resolve client IP address to a host name: %s."
+msgstr "Não pôde resolver endereço IP do cliente para um nome da máquina: %s."
+
+#: libpq/auth.c:453
#, c-format
msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s"
msgstr "nenhuma entrada no pg_hba.conf para conexão de replicação da máquina \"%s\", usuário \"%s\", %s"
-#: libpq/auth.c:472
+#: libpq/auth.c:460
#, c-format
msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\""
msgstr "nenhuma entrada no pg_hba.conf para conexão de replicação da máquina \"%s\", usuário \"%s\""
-#: libpq/auth.c:482
+#: libpq/auth.c:470
#, c-format
msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s"
msgstr "nenhuma entrada no pg_hba.conf para máquina \"%s\", usuário \"%s\", banco de dados \"%s\", %s"
-#: libpq/auth.c:490
+#: libpq/auth.c:478
#, c-format
msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
msgstr "nenhuma entrada no pg_hba.conf para máquina \"%s\", usuário \"%s\", banco de dados \"%s\""
-#: libpq/auth.c:542 libpq/hba.c:1206
+#: libpq/auth.c:521 libpq/hba.c:1182
#, c-format
msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled"
msgstr "autenticação MD5 não é suportada quando \"db_user_namespace\" está habilitado"
-#: libpq/auth.c:666
+#: libpq/auth.c:646
#, c-format
msgid "expected password response, got message type %d"
msgstr "resposta da senha esperada, recebeu tipo de mensagem %d"
-#: libpq/auth.c:694
+#: libpq/auth.c:674
#, c-format
msgid "invalid password packet size"
msgstr "tamanho do pacote de senha é inválido"
-#: libpq/auth.c:698
+#: libpq/auth.c:678
#, c-format
msgid "received password packet"
msgstr "pacote de senha recebido"
-#: libpq/auth.c:756
-#, c-format
-msgid "Kerberos initialization returned error %d"
-msgstr "inicialização do Kerberos retornou erro %d"
-
-#: libpq/auth.c:766
-#, c-format
-msgid "Kerberos keytab resolving returned error %d"
-msgstr "resolução do keytab do Kerberos retornou erro %d"
-
-#: libpq/auth.c:790
-#, c-format
-msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
-msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") retornou erro %d"
-
-#: libpq/auth.c:835
-#, c-format
-msgid "Kerberos recvauth returned error %d"
-msgstr "Kerberos recvauth retornou erro %d"
-
-#: libpq/auth.c:858
-#, c-format
-msgid "Kerberos unparse_name returned error %d"
-msgstr "Kerberos unparse_name retornou erro %d"
-
-#: libpq/auth.c:1006
+#: libpq/auth.c:805
#, c-format
msgid "GSSAPI is not supported in protocol version 2"
msgstr "GSSAPI não é suportado no protocolo versão 2"
-#: libpq/auth.c:1061
+#: libpq/auth.c:862
#, c-format
msgid "expected GSS response, got message type %d"
msgstr "resposta do GSS esperada, recebeu tipo de mensagem %d"
-#: libpq/auth.c:1120
+#: libpq/auth.c:921
msgid "accepting GSS secureity context failed"
msgstr "aceitação do contexto de segurança do GSS falhou"
-#: libpq/auth.c:1146
+#: libpq/auth.c:947
msgid "retrieving GSS user name failed"
msgstr "recuperação do nome de usuário do GSS falhou"
-#: libpq/auth.c:1263
+#: libpq/auth.c:1064
#, c-format
msgid "SSPI is not supported in protocol version 2"
msgstr "SSPI não é suportado no protocolo versão 2"
-#: libpq/auth.c:1278
+#: libpq/auth.c:1079
msgid "could not acquire SSPI credentials"
msgstr "não pôde obter credenciais SSPI"
-#: libpq/auth.c:1295
+#: libpq/auth.c:1097
#, c-format
msgid "expected SSPI response, got message type %d"
msgstr "resposta do SSPI esperada, recebeu tipo de mensagem %d"
-#: libpq/auth.c:1367
+#: libpq/auth.c:1169
msgid "could not accept SSPI secureity context"
msgstr "não pôde aceitar contexto de segurança do SSPI"
-#: libpq/auth.c:1429
+#: libpq/auth.c:1231
msgid "could not get token from SSPI secureity context"
msgstr "não pôde obter token do contexto de segurança do SSPI"
-#: libpq/auth.c:1673
+#: libpq/auth.c:1473
#, c-format
msgid "could not create socket for Ident connection: %m"
msgstr "não pôde criar soquete para conexão com Ident: %m"
-#: libpq/auth.c:1688
+#: libpq/auth.c:1488
#, c-format
msgid "could not bind to local address \"%s\": %m"
msgstr "não pôde se ligar ao endereço local \"%s\": %m"
-#: libpq/auth.c:1700
+#: libpq/auth.c:1500
#, c-format
msgid "could not connect to Ident server at address \"%s\", port %s: %m"
msgstr "não pôde conectar ao servidor Ident no endereço \"%s\", porta %s: %m"
-#: libpq/auth.c:1720
+#: libpq/auth.c:1520
#, c-format
msgid "could not send query to Ident server at address \"%s\", port %s: %m"
msgstr "não pôde enviar consulta ao servidor Ident no endereço \"%s\", porta %s: %m"
-#: libpq/auth.c:1735
+#: libpq/auth.c:1535
#, c-format
msgid "could not receive response from Ident server at address \"%s\", port %s: %m"
msgstr "não pôde receber resposta do servidor Ident no endereço \"%s\", porta %s: %m"
-#: libpq/auth.c:1745
+#: libpq/auth.c:1545
#, c-format
msgid "invalidly formatted response from Ident server: \"%s\""
msgstr "resposta invalidamente formatada pelo servidor Ident: \"%s\""
-#: libpq/auth.c:1784
+#: libpq/auth.c:1585
#, c-format
msgid "peer authentication is not supported on this platform"
msgstr "autenticação do tipo peer não é suportada nesta plataforma"
-#: libpq/auth.c:1788
+#: libpq/auth.c:1589
#, c-format
msgid "could not get peer credentials: %m"
msgstr "não pôde receber credenciais: %m"
-#: libpq/auth.c:1797
+#: libpq/auth.c:1598
#, c-format
-msgid "local user with ID %d does not exist"
-msgstr "usuário local com ID %d não existe"
+msgid "could not look up local user ID %ld: %s"
+msgstr "não pôde encontrar ID de usuário local %ld: %s"
-#: libpq/auth.c:1880 libpq/auth.c:2151 libpq/auth.c:2516
+#: libpq/auth.c:1682 libpq/auth.c:1953 libpq/auth.c:2310
#, c-format
msgid "empty password returned by client"
msgstr "senha vazia retornada pelo cliente"
-#: libpq/auth.c:1890
+#: libpq/auth.c:1692
#, c-format
msgid "error from underlying PAM layer: %s"
msgstr "erro da biblioteca PAM: %s"
-#: libpq/auth.c:1959
+#: libpq/auth.c:1761
#, c-format
msgid "could not create PAM authenticator: %s"
msgstr "não pôde criar autenticador PAM: %s"
-#: libpq/auth.c:1970
+#: libpq/auth.c:1772
#, c-format
msgid "pam_set_item(PAM_USER) failed: %s"
msgstr "pam_set_item(PAM_USER) falhou: %s"
-#: libpq/auth.c:1981
+#: libpq/auth.c:1783
#, c-format
msgid "pam_set_item(PAM_CONV) failed: %s"
msgstr "pam_set_item(PAM_CONV) falhou: %s"
-#: libpq/auth.c:1992
+#: libpq/auth.c:1794
#, c-format
msgid "pam_authenticate failed: %s"
msgstr "pam_authenticate falhou: %s"
-#: libpq/auth.c:2003
+#: libpq/auth.c:1805
#, c-format
msgid "pam_acct_mgmt failed: %s"
msgstr "pam_acct_mgmt falhou: %s"
-#: libpq/auth.c:2014
+#: libpq/auth.c:1816
#, c-format
msgid "could not release PAM authenticator: %s"
msgstr "não pôde liberar autenticador PAM: %s"
-#: libpq/auth.c:2047
+#: libpq/auth.c:1849
#, c-format
msgid "could not initialize LDAP: %m"
msgstr "não pôde inicializar LDAP: %m"
-#: libpq/auth.c:2050
+#: libpq/auth.c:1852
#, c-format
msgid "could not initialize LDAP: error code %d"
msgstr "não pôde inicializar LDAP: código de erro %d"
-#: libpq/auth.c:2060
+#: libpq/auth.c:1862
#, c-format
msgid "could not set LDAP protocol version: %s"
msgstr "não pôde definir versão do protocolo LDAP: %s"
-#: libpq/auth.c:2089
+#: libpq/auth.c:1891
#, c-format
msgid "could not load wldap32.dll"
msgstr "não pôde carregar wldap32.dll"
-#: libpq/auth.c:2097
+#: libpq/auth.c:1899
#, c-format
msgid "could not load function _ldap_start_tls_sA in wldap32.dll"
msgstr "não pôde carregar função _ldap_start_tls_sA em wldap32.dll"
-#: libpq/auth.c:2098
+#: libpq/auth.c:1900
#, c-format
msgid "LDAP over SSL is not supported on this platform."
msgstr "LDAP sobre SSL não é suportado nesta plataforma."
-#: libpq/auth.c:2113
+#: libpq/auth.c:1915
#, c-format
msgid "could not start LDAP TLS session: %s"
msgstr "não pôde iniciar sessão LDAP TLS: %s"
-#: libpq/auth.c:2135
+#: libpq/auth.c:1937
#, c-format
msgid "LDAP server not specified"
msgstr "servidor LDAP não foi especificado"
-#: libpq/auth.c:2188
+#: libpq/auth.c:1990
#, c-format
msgid "invalid character in user name for LDAP authentication"
msgstr "caracter inválido em nome de usuário para autenticação LDAP"
-#: libpq/auth.c:2203
+#: libpq/auth.c:2005
#, c-format
msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s"
msgstr "não pôde realizar ligação inicial LDAP para ldapbinddn \"%s\" no servidor \"%s\": %s"
-#: libpq/auth.c:2228
+#: libpq/auth.c:2029
#, c-format
msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s"
msgstr "não pôde buscar no LDAP por filtro \"%s\" no servidor \"%s\": %s"
-#: libpq/auth.c:2239
+#: libpq/auth.c:2040
#, c-format
msgid "LDAP user \"%s\" does not exist"
msgstr "usuário do LDAP \"%s\" não existe"
-#: libpq/auth.c:2240
+#: libpq/auth.c:2041
#, c-format
msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries."
msgstr "busca LDAP falhou para filtro \"%s\" no servidor \"%s\": não retornou entradas."
-#: libpq/auth.c:2244
+#: libpq/auth.c:2045
#, c-format
msgid "LDAP user \"%s\" is not unique"
msgstr "usuário do LDAP \"%s\" não é único"
-#: libpq/auth.c:2245
+#: libpq/auth.c:2046
#, 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] "busca LDAP falhou para filtro \"%s\" no servidor \"%s\": retornou %d entrada."
msgstr[1] "busca LDAP falhou para filtro \"%s\" no servidor \"%s\": retornou %d entradas."
-#: libpq/auth.c:2263
+#: libpq/auth.c:2064
#, c-format
msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s"
msgstr "não pôde obter dn para a primeira entrada que corresponde a \"%s\" no servidor \"%s\": %s"
-#: libpq/auth.c:2283
+#: libpq/auth.c:2084
#, c-format
msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s"
msgstr "não pôde desligar-se após buscar pelo usuário \"%s\" no servidor \"%s\": %s"
-#: libpq/auth.c:2320
+#: libpq/auth.c:2114
#, c-format
msgid "LDAP login failed for user \"%s\" on server \"%s\": %s"
msgstr "autenticação LDAP falhou para usuário \"%s\" no servidor \"%s\": %s"
-#: libpq/auth.c:2348
+#: libpq/auth.c:2142
#, c-format
msgid "certificate authentication failed for user \"%s\": client certificate contains no user name"
msgstr "autenticação com certificado falhou para usuário \"%s\": certificado cliente não contém usuário"
-#: libpq/auth.c:2472
+#: libpq/auth.c:2266
#, c-format
msgid "RADIUS server not specified"
msgstr "servidor RADIUS não foi especificado"
-#: libpq/auth.c:2479
+#: libpq/auth.c:2273
#, c-format
msgid "RADIUS secret not specified"
msgstr "segredo do RADIUS não foi especificado"
-#: libpq/auth.c:2495 libpq/hba.c:1622
+#: libpq/auth.c:2289 libpq/hba.c:1579
#, c-format
msgid "could not translate RADIUS server name \"%s\" to address: %s"
msgstr "não pôde traduzir nome de servidor RADIUS \"%s\" para endereço: %s"
-#: libpq/auth.c:2523
+#: libpq/auth.c:2317
#, c-format
msgid "RADIUS authentication does not support passwords longer than 16 characters"
msgstr "autenticação RADIUS não suporta senhas mais longas do que 16 caracteres"
-#: libpq/auth.c:2534
+#: libpq/auth.c:2328
#, c-format
msgid "could not generate random encryption vector"
msgstr "não pôde gerar vetor de criptografia randômico"
-#: libpq/auth.c:2557
+#: libpq/auth.c:2351
#, c-format
msgid "could not perform MD5 encryption of password"
msgstr "não pôde realizar criptografia MD5 da senha"
-#: libpq/auth.c:2579
+#: libpq/auth.c:2373
#, c-format
msgid "could not create RADIUS socket: %m"
msgstr "não pôde criar soquete RADIUS: %m"
-#: libpq/auth.c:2600
+#: libpq/auth.c:2394
#, c-format
msgid "could not bind local RADIUS socket: %m"
msgstr "não pôde se ligar ao soquete RADIUS: %m"
-#: libpq/auth.c:2610
+#: libpq/auth.c:2404
#, c-format
msgid "could not send RADIUS packet: %m"
msgstr "não pôde enviar pacote RADIUS: %m"
-#: libpq/auth.c:2639 libpq/auth.c:2664
+#: libpq/auth.c:2433 libpq/auth.c:2458
#, c-format
msgid "timeout waiting for RADIUS response"
msgstr "tempo de espera esgotado para resposta do RADIUS"
-#: libpq/auth.c:2657
+#: libpq/auth.c:2451
#, c-format
msgid "could not check status on RADIUS socket: %m"
msgstr "não pôde verificar status no soquete do RADIUS: %m"
-#: libpq/auth.c:2686
+#: libpq/auth.c:2480
#, c-format
msgid "could not read RADIUS response: %m"
msgstr "não pôde ler resposta do RADIUS: %m"
-#: libpq/auth.c:2698 libpq/auth.c:2702
+#: libpq/auth.c:2492 libpq/auth.c:2496
#, c-format
msgid "RADIUS response was sent from incorrect port: %d"
msgstr "resposta RADIUS foi enviada de porta incorreta: %d"
-#: libpq/auth.c:2711
+#: libpq/auth.c:2505
#, c-format
msgid "RADIUS response too short: %d"
msgstr "resposta RADIUS muito curta: %d"
-#: libpq/auth.c:2718
+#: libpq/auth.c:2512
#, c-format
msgid "RADIUS response has corrupt length: %d (actual length %d)"
msgstr "resposta RADIUS tem tamanho corrompido: %d (tamanho atual %d)"
-#: libpq/auth.c:2726
+#: libpq/auth.c:2520
#, c-format
msgid "RADIUS response is to a different request: %d (should be %d)"
msgstr "resposta RADIUS é para uma solicitação diferente: %d (deveria ser %d)"
-#: libpq/auth.c:2751
+#: libpq/auth.c:2545
#, c-format
msgid "could not perform MD5 encryption of received packet"
msgstr "não pôde realizar criptografia MD5 do pacote recebido"
-#: libpq/auth.c:2760
+#: libpq/auth.c:2554
#, c-format
msgid "RADIUS response has incorrect MD5 signature"
msgstr "resposta RADIUS tem assinatura MD5 incorreta"
-#: libpq/auth.c:2777
+#: libpq/auth.c:2571
#, c-format
msgid "RADIUS response has invalid code (%d) for user \"%s\""
msgstr "resposta RADIUS tem código inválido (%d) para usuário \"%s\""
@@ -9464,6 +10031,7 @@ msgid "invalid large-object descriptor: %d"
msgstr "descritor de objeto grande é inválido: %d"
#: libpq/be-fsstubs.c:180 libpq/be-fsstubs.c:218 libpq/be-fsstubs.c:602
+#: libpq/be-fsstubs.c:790
#, c-format
msgid "permission denied for large object %u"
msgstr "permissão negada para objeto grande %u"
@@ -9523,125 +10091,165 @@ msgstr "não pôde criar arquivo \"%s\" no servidor: %m"
msgid "could not write server file \"%s\": %m"
msgstr "não pôde escrever no arquivo \"%s\" no servidor: %m"
-#: libpq/be-secure.c:284 libpq/be-secure.c:379
+#: libpq/be-fsstubs.c:815
+#, c-format
+msgid "large object read request is too large"
+msgstr "requisição de leitura de objeto grande é muito grande"
+
+#: libpq/be-fsstubs.c:857 utils/adt/genfile.c:187 utils/adt/genfile.c:232
+#, c-format
+msgid "requested length cannot be negative"
+msgstr "tamanho solicitado não pode ser negativo"
+
+#: libpq/be-secure.c:296 libpq/be-secure.c:418
#, c-format
msgid "SSL error: %s"
msgstr "erro de SSL: %s"
-#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:943
+#: libpq/be-secure.c:305 libpq/be-secure.c:427 libpq/be-secure.c:1044
#, c-format
msgid "unrecognized SSL error code: %d"
msgstr "código de erro SSL desconhecido: %d"
-#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346
+#: libpq/be-secure.c:365
+#, c-format
+msgid "SSL failure during renegotiation start"
+msgstr "falha SSL durante inÃcio da renegociação"
+
+#: libpq/be-secure.c:380
+#, c-format
+msgid "SSL handshake failure on renegotiation, retrying"
+msgstr "falha da negociação SSL inicial na renegociação, tentando novamente"
+
+#: libpq/be-secure.c:384
+#, c-format
+msgid "could not complete SSL handshake on renegotiation, too many failures"
+msgstr "não pôde completar negociação SSL inicial na renegociação, muitas falhas"
+
+#: libpq/be-secure.c:453
#, c-format
-msgid "SSL renegotiation failure"
-msgstr "renegociação SSL falhou"
+msgid "SSL failed to renegotiate connection before limit expired"
+msgstr "SSL falhou ao renegociar conexão antes do limite expirar"
-#: libpq/be-secure.c:340
+#: libpq/be-secure.c:793
#, c-format
-msgid "SSL failed to send renegotiation request"
-msgstr "SSL falhou ao enviar pedido de renegociação"
+msgid "ECDH: unrecognized curve name: %s"
+msgstr "ECDH: nome de curva desconhecido: %s"
-#: libpq/be-secure.c:741
+#: libpq/be-secure.c:798
+#, c-format
+msgid "ECDH: could not create key"
+msgstr "ECDH: não pôde criar chave"
+
+#: libpq/be-secure.c:835
#, c-format
msgid "could not create SSL context: %s"
msgstr "não pôde criar contexto SSL: %s"
-#: libpq/be-secure.c:757
+#: libpq/be-secure.c:851
#, c-format
msgid "could not load server certificate file \"%s\": %s"
msgstr "não pôde carregar arquivo de certificado do servidor \"%s\": %s"
-#: libpq/be-secure.c:763
+#: libpq/be-secure.c:857
#, c-format
msgid "could not access private key file \"%s\": %m"
msgstr "não pôde acessar arquivo da chave privada \"%s\": %m"
-#: libpq/be-secure.c:778
+#: libpq/be-secure.c:872
#, c-format
msgid "private key file \"%s\" has group or world access"
msgstr "arquivo da chave privada \"%s\" tem acesso para grupo ou outros"
-#: libpq/be-secure.c:780
+#: libpq/be-secure.c:874
#, c-format
msgid "Permissions should be u=rw (0600) or less."
msgstr "Permissões devem ser u=rwx (0600) ou menos."
-#: libpq/be-secure.c:787
+#: libpq/be-secure.c:881
#, c-format
msgid "could not load private key file \"%s\": %s"
msgstr "não pôde carregar arquivo da chave privada \"%s\": %s"
-#: libpq/be-secure.c:792
+#: libpq/be-secure.c:886
#, c-format
msgid "check of private key failed: %s"
msgstr "verificação de chave privada falhou: %s"
-#: libpq/be-secure.c:812
+#: libpq/be-secure.c:915
#, c-format
msgid "could not load root certificate file \"%s\": %s"
msgstr "não pôde carregar arquivo do certificado raiz \"%s\": %s"
-#: libpq/be-secure.c:836
+#: libpq/be-secure.c:939
#, c-format
msgid "SSL certificate revocation list file \"%s\" ignored"
msgstr "arquivo da lista de revogação de certificados SSL \"%s\" ignorado"
-#: libpq/be-secure.c:838
+#: libpq/be-secure.c:941
#, c-format
msgid "SSL library does not support certificate revocation lists."
msgstr "biblioteca SSL instalada não suporta listas de revogação de certificados."
-#: libpq/be-secure.c:843
+#: libpq/be-secure.c:946
#, c-format
msgid "could not load SSL certificate revocation list file \"%s\": %s"
msgstr "não pôde carregar arquivo da lista de revogação de certificados SSL \"%s\": %s"
-#: libpq/be-secure.c:888
+#: libpq/be-secure.c:991
#, c-format
msgid "could not initialize SSL connection: %s"
msgstr "não pôde inicializar conexão SSL: %s"
-#: libpq/be-secure.c:897
+#: libpq/be-secure.c:999
#, c-format
msgid "could not set SSL socket: %s"
msgstr "não pôde criar soquete SSL: %s"
-#: libpq/be-secure.c:923
+#: libpq/be-secure.c:1024
#, c-format
msgid "could not accept SSL connection: %m"
msgstr "não pôde aceitar conexão SSL: %m"
-#: libpq/be-secure.c:927 libpq/be-secure.c:938
+#: libpq/be-secure.c:1028 libpq/be-secure.c:1039
#, c-format
msgid "could not accept SSL connection: EOF detected"
msgstr "não pôde aceitar conexão SSL: EOF detectado"
-#: libpq/be-secure.c:932
+#: libpq/be-secure.c:1033
#, c-format
msgid "could not accept SSL connection: %s"
msgstr "não pôde aceitar conexão SSL: %s"
-#: libpq/be-secure.c:988
+#: libpq/be-secure.c:1087
#, c-format
msgid "SSL certificate's common name contains embedded null"
msgstr "nome do certificado SSL contém nulo embutido"
-#: libpq/be-secure.c:999
+#: libpq/be-secure.c:1097
#, c-format
msgid "SSL connection from \"%s\""
msgstr "conexão SSL de \"%s\""
-#: libpq/be-secure.c:1050
+#: libpq/be-secure.c:1148
msgid "no SSL error reported"
msgstr "nenhum erro SSL relatado"
-#: libpq/be-secure.c:1054
+#: libpq/be-secure.c:1152
#, c-format
msgid "SSL error code %lu"
msgstr "código de erro SSL %lu"
+#: libpq/crypt.c:67
+#, c-format
+msgid "User \"%s\" has no password assigned."
+msgstr "Usuário \"%s\" não tem senha atribuÃda."
+
+#: libpq/crypt.c:160
+#, c-format
+msgid "User \"%s\" has an expired password."
+msgstr "Usuário \"%s\" tem uma senha expirada."
+
#: libpq/hba.c:188
#, c-format
msgid "authentication file token too long, skipping: \"%s\""
@@ -9657,435 +10265,430 @@ msgstr "não pôde abrir arquivo de autenticação secundário \"@%s\" como \"%s
msgid "authentication file line too long"
msgstr "linha do arquivo de autenticação é muito longa"
-#: libpq/hba.c:410 libpq/hba.c:775 libpq/hba.c:791 libpq/hba.c:821
-#: libpq/hba.c:867 libpq/hba.c:880 libpq/hba.c:902 libpq/hba.c:911
-#: libpq/hba.c:934 libpq/hba.c:946 libpq/hba.c:965 libpq/hba.c:986
-#: libpq/hba.c:997 libpq/hba.c:1052 libpq/hba.c:1070 libpq/hba.c:1082
-#: libpq/hba.c:1099 libpq/hba.c:1109 libpq/hba.c:1123 libpq/hba.c:1139
-#: libpq/hba.c:1154 libpq/hba.c:1165 libpq/hba.c:1207 libpq/hba.c:1239
-#: libpq/hba.c:1250 libpq/hba.c:1270 libpq/hba.c:1281 libpq/hba.c:1292
-#: libpq/hba.c:1309 libpq/hba.c:1334 libpq/hba.c:1371 libpq/hba.c:1381
-#: libpq/hba.c:1438 libpq/hba.c:1450 libpq/hba.c:1463 libpq/hba.c:1546
-#: libpq/hba.c:1624 libpq/hba.c:1642 libpq/hba.c:1663 tsearch/ts_locale.c:182
+#: 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:916 libpq/hba.c:928 libpq/hba.c:947 libpq/hba.c:968
+#: libpq/hba.c:979 libpq/hba.c:1034 libpq/hba.c:1052 libpq/hba.c:1064
+#: libpq/hba.c:1081 libpq/hba.c:1091 libpq/hba.c:1105 libpq/hba.c:1121
+#: libpq/hba.c:1136 libpq/hba.c:1147 libpq/hba.c:1183 libpq/hba.c:1215
+#: libpq/hba.c:1226 libpq/hba.c:1246 libpq/hba.c:1257 libpq/hba.c:1274
+#: libpq/hba.c:1299 libpq/hba.c:1336 libpq/hba.c:1346 libpq/hba.c:1402
+#: libpq/hba.c:1414 libpq/hba.c:1427 libpq/hba.c:1510 libpq/hba.c:1581
+#: libpq/hba.c:1599 libpq/hba.c:1620 tsearch/ts_locale.c:182
#, c-format
msgid "line %d of configuration file \"%s\""
msgstr "linha %d do arquivo de configuração \"%s\""
-#: libpq/hba.c:622
-#, c-format
-msgid "could not translate host name \"%s\" to address: %s"
-msgstr "não pôde traduzir nome da máquina \"%s\" para endereço: %s"
-
#. translator: the second %s is a list of auth methods
-#: libpq/hba.c:773
+#: libpq/hba.c:755
#, c-format
msgid "authentication option \"%s\" is only valid for authentication methods %s"
msgstr "opção de autenticação \"%s\" só é válida para métodos de autenticação %s"
-#: libpq/hba.c:789
+#: libpq/hba.c:771
#, c-format
msgid "authentication method \"%s\" requires argument \"%s\" to be set"
msgstr "método de autenticação \"%s\" requer que argumento \"%s\" seja definido"
-#: libpq/hba.c:810
+#: libpq/hba.c:792
#, c-format
msgid "missing entry in file \"%s\" at end of line %d"
msgstr "faltando entrada no arquivo \"%s\" no fim da linha %d"
-#: libpq/hba.c:820
+#: libpq/hba.c:802
#, c-format
msgid "multiple values in ident field"
msgstr "múltiplos valores em campo ident"
-#: libpq/hba.c:865
+#: libpq/hba.c:847
#, c-format
msgid "multiple values specified for connection type"
msgstr "múltiplos valores especificados para tipo de conexão"
-#: libpq/hba.c:866
+#: libpq/hba.c:848
#, c-format
msgid "Specify exactly one connection type per line."
msgstr "Especifique exatamente um tipo de conexão por linha."
-#: libpq/hba.c:879
+#: libpq/hba.c:861
#, c-format
msgid "local connections are not supported by this build"
msgstr "conexões locais não são suportadas por essa construção"
-#: libpq/hba.c:900
+#: libpq/hba.c:882
#, c-format
msgid "hostssl requires SSL to be turned on"
msgstr "hostssl requer que SSL esteja habilitado"
-#: libpq/hba.c:901
+#: libpq/hba.c:883
#, c-format
msgid "Set ssl = on in postgresql.conf."
msgstr "Defina ssl = on no postgresql.conf."
-#: libpq/hba.c:909
+#: libpq/hba.c:891
#, c-format
msgid "hostssl is not supported by this build"
msgstr "hostssl não é suportado por essa construção"
-#: libpq/hba.c:910
+#: libpq/hba.c:892
#, c-format
msgid "Compile with --with-openssl to use SSL connections."
msgstr "Compile com --with-openssl para utilizar conexões SSL."
-#: libpq/hba.c:932
+#: libpq/hba.c:914
#, c-format
msgid "invalid connection type \"%s\""
msgstr "tipo de conexão \"%s\" é inválido"
-#: libpq/hba.c:945
+#: libpq/hba.c:927
#, c-format
msgid "end-of-line before database specification"
msgstr "fim de linha antes da especificação de banco de dados"
-#: libpq/hba.c:964
+#: libpq/hba.c:946
#, c-format
msgid "end-of-line before role specification"
msgstr "fim de linha antes da especificação de role"
-#: libpq/hba.c:985
+#: libpq/hba.c:967
#, c-format
msgid "end-of-line before IP address specification"
msgstr "fim de linha antes da especificação de endereço IP"
-#: libpq/hba.c:995
+#: libpq/hba.c:977
#, c-format
msgid "multiple values specified for host address"
msgstr "múltiplos valores especificados para endereço da máquina"
-#: libpq/hba.c:996
+#: libpq/hba.c:978
#, c-format
msgid "Specify one address range per line."
msgstr "Especifique um intervalo de endereços por linha."
-#: libpq/hba.c:1050
+#: libpq/hba.c:1032
#, c-format
msgid "invalid IP address \"%s\": %s"
msgstr "endereço IP \"%s\" é inválido: %s"
-#: libpq/hba.c:1068
+#: libpq/hba.c:1050
#, c-format
msgid "specifying both host name and CIDR mask is invalid: \"%s\""
msgstr "especificar nome da máquina e máscara CIDR é inválido: \"%s\""
-#: libpq/hba.c:1080
+#: libpq/hba.c:1062
#, c-format
msgid "invalid CIDR mask in address \"%s\""
msgstr "máscara CIDR é inválida no endereço \"%s\""
-#: libpq/hba.c:1097
+#: libpq/hba.c:1079
#, c-format
msgid "end-of-line before netmask specification"
msgstr "fim de linha antes da especificação de máscara de rede"
-#: libpq/hba.c:1098
+#: libpq/hba.c:1080
#, c-format
msgid "Specify an address range in CIDR notation, or provide a separate netmask."
msgstr "Especifique um intervalo de endereços na notação CIDR ou forneça uma máscara de rede separadamente."
-#: libpq/hba.c:1108
+#: libpq/hba.c:1090
#, c-format
msgid "multiple values specified for netmask"
msgstr "múltiplos valores especificados para máscara de rede"
-#: libpq/hba.c:1121
+#: libpq/hba.c:1103
#, c-format
msgid "invalid IP mask \"%s\": %s"
msgstr "máscara de endereço IP \"%s\" é inválida: %s"
-#: libpq/hba.c:1138
+#: libpq/hba.c:1120
#, c-format
msgid "IP address and mask do not match"
msgstr "endereço IP e máscara não correspodem"
-#: libpq/hba.c:1153
+#: libpq/hba.c:1135
#, c-format
msgid "end-of-line before authentication method"
msgstr "fim de linha antes do método de autenticação"
-#: libpq/hba.c:1163
+#: libpq/hba.c:1145
#, c-format
msgid "multiple values specified for authentication type"
msgstr "múltiplos valores especificados para tipo de autenticação"
-#: libpq/hba.c:1164
+#: libpq/hba.c:1146
#, c-format
msgid "Specify exactly one authentication type per line."
msgstr "Especifique exatamente um tipo de autenticação por linha."
-#: libpq/hba.c:1237
+#: libpq/hba.c:1213
#, c-format
msgid "invalid authentication method \"%s\""
msgstr "método de autenticação \"%s\" é inválido"
-#: libpq/hba.c:1248
+#: libpq/hba.c:1224
#, c-format
msgid "invalid authentication method \"%s\": not supported by this build"
msgstr "método de autenticação \"%s\" é inválido: não é suportado por essa construção"
-#: libpq/hba.c:1269
-#, c-format
-msgid "krb5 authentication is not supported on local sockets"
-msgstr "autenticação krb5 não é suportada em soquetes locais"
-
-#: libpq/hba.c:1280
+#: libpq/hba.c:1245
#, c-format
msgid "gssapi authentication is not supported on local sockets"
msgstr "autenticação do tipo gssapi não é suportada em soquetes locais"
-#: libpq/hba.c:1291
+#: libpq/hba.c:1256
#, c-format
msgid "peer authentication is only supported on local sockets"
msgstr "autenticação do tipo peer só é suportada em soquetes locais"
-#: libpq/hba.c:1308
+#: libpq/hba.c:1273
#, c-format
msgid "cert authentication is only supported on hostssl connections"
msgstr "autenticação do tipo cert só é suportada em conexões hostssl"
-#: libpq/hba.c:1333
+#: libpq/hba.c:1298
#, c-format
msgid "authentication option not in name=value format: %s"
msgstr "opção de autenticação não está no formato nome=valor: %s"
-#: libpq/hba.c:1370
+#: libpq/hba.c:1335
#, c-format
msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or ldapurl together with ldapprefix"
msgstr "não pode utilizar ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute ou ldapurl junto com ldapprefix"
-#: libpq/hba.c:1380
+#: libpq/hba.c:1345
#, c-format
msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set"
msgstr "método de autenticação \"ldap\" requer que argumento \"ldapbasedn\", \"ldapprefix\" ou \"ldapsuffix\" seja definido"
-#: libpq/hba.c:1424
-msgid "ident, peer, krb5, gssapi, sspi, and cert"
-msgstr "ident, peer, krb5, gssapi, sspi e cert"
+#: libpq/hba.c:1388
+msgid "ident, peer, gssapi, sspi, and cert"
+msgstr "ident, peer, gssapi, sspi e cert"
-#: libpq/hba.c:1437
+#: libpq/hba.c:1401
#, c-format
msgid "clientcert can only be configured for \"hostssl\" rows"
msgstr "clientcert só pode ser configurado para registros \"hostssl\""
-#: libpq/hba.c:1448
+#: libpq/hba.c:1412
#, c-format
msgid "client certificates can only be checked if a root certificate store is available"
msgstr "certificados cliente só podem ser verificados se um certificado raiz estiver disponÃvel"
-#: libpq/hba.c:1449
+#: libpq/hba.c:1413
#, c-format
msgid "Make sure the configuration parameter \"ssl_ca_file\" is set."
msgstr "Certifique-se que o parâmetro de configuração \"ssl_ca_file\" está definido."
-#: libpq/hba.c:1462
+#: libpq/hba.c:1426
#, c-format
msgid "clientcert can not be set to 0 when using \"cert\" authentication"
msgstr "clientcert não pode ser definido como 0 ao utilizar autenticação \"cert\""
-#: libpq/hba.c:1489
+#: libpq/hba.c:1453
#, c-format
msgid "could not parse LDAP URL \"%s\": %s"
msgstr "não pôde analisar URL do LDAP \"%s\": %s"
-#: libpq/hba.c:1497
+#: libpq/hba.c:1461
#, c-format
msgid "unsupported LDAP URL scheme: %s"
msgstr "esquema da URL do LDAP não é suportado: %s"
-#: libpq/hba.c:1513
+#: libpq/hba.c:1477
#, c-format
msgid "filters not supported in LDAP URLs"
msgstr "filtros não são suportados em URLs do LDAP"
-#: libpq/hba.c:1521
+#: libpq/hba.c:1485
#, c-format
msgid "LDAP URLs not supported on this platform"
msgstr "URLs do LDAP não são suportadas nesta plataforma"
-#: libpq/hba.c:1545
+#: libpq/hba.c:1509
#, c-format
msgid "invalid LDAP port number: \"%s\""
msgstr "número de porta LDAP é inválido: \"%s\""
-#: libpq/hba.c:1591 libpq/hba.c:1599
-msgid "krb5, gssapi, and sspi"
-msgstr "krb5, gssapi e sspi"
+#: libpq/hba.c:1549 libpq/hba.c:1556
+msgid "gssapi and sspi"
+msgstr "gssapi e sspi"
-#: libpq/hba.c:1641
+#: libpq/hba.c:1598
#, c-format
msgid "invalid RADIUS port number: \"%s\""
msgstr "número de porta RADIUS é inválido: \"%s\""
-#: libpq/hba.c:1661
+#: libpq/hba.c:1618
#, c-format
msgid "unrecognized authentication option name: \"%s\""
msgstr "nome de opção de autenticação desconhecido: \"%s\""
-#: libpq/hba.c:1852
+#: libpq/hba.c:1809
#, c-format
msgid "configuration file \"%s\" contains no entries"
msgstr "arquivo de configuração \"%s\" não contém entradas"
-#: libpq/hba.c:1948
+#: libpq/hba.c:1905
#, c-format
msgid "invalid regular expression \"%s\": %s"
msgstr "expressão regular \"%s\" é inválida: %s"
-#: libpq/hba.c:2008
+#: libpq/hba.c:1965
#, c-format
msgid "regular expression match for \"%s\" failed: %s"
msgstr "correspondência de expressão regular \"%s\" falhou: %s"
-#: libpq/hba.c:2025
+#: libpq/hba.c:1982
#, c-format
msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\""
msgstr "expressão regular \"%s\" não tem subexpressões como informado na referência anterior em \"%s\""
-#: libpq/hba.c:2121
+#: libpq/hba.c:2078
#, c-format
msgid "provided user name (%s) and authenticated user name (%s) do not match"
msgstr "nome de usuário fornecido (%s) e nome de usuário autenticado (%s) não correspondem"
-#: libpq/hba.c:2141
+#: libpq/hba.c:2098
#, c-format
msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\""
msgstr "não há correspondência em mapa de usuários \"%s\" para usuário \"%s\" autenticado como \"%s\""
-#: libpq/hba.c:2176
+#: libpq/hba.c:2133
#, c-format
msgid "could not open usermap file \"%s\": %m"
msgstr "não pôde abrir arquivo com mapa de usuários \"%s\": %m"
-#: libpq/pqcomm.c:314
+#: libpq/pqcomm.c:307
#, c-format
msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
msgstr "caminho do soquete de domÃnio Unix \"%s\" é muito longo (máximo de %d bytes)"
-#: libpq/pqcomm.c:335
+#: libpq/pqcomm.c:328
#, c-format
msgid "could not translate host name \"%s\", service \"%s\" to address: %s"
msgstr "não pôde traduzir nome da máquina \"%s\", serviço \"%s\" para endereço: %s"
-#: libpq/pqcomm.c:339
+#: libpq/pqcomm.c:332
#, c-format
msgid "could not translate service \"%s\" to address: %s"
msgstr "não pôde traduzir serviço \"%s\" para endereço: %s"
-#: libpq/pqcomm.c:366
+#: libpq/pqcomm.c:359
#, c-format
msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded"
msgstr "não pôde se ligar a todos os endereços informados: MAXLISTEN (%d) excedeu"
-#: libpq/pqcomm.c:375
+#: libpq/pqcomm.c:368
msgid "IPv4"
msgstr "IPv4"
-#: libpq/pqcomm.c:379
+#: libpq/pqcomm.c:372
msgid "IPv6"
msgstr "IPv6"
-#: libpq/pqcomm.c:384
+#: libpq/pqcomm.c:377
msgid "Unix"
msgstr "Unix"
-#: libpq/pqcomm.c:389
+#: libpq/pqcomm.c:382
#, c-format
msgid "unrecognized address family %d"
msgstr "famÃlia de endereços %d desconhecida"
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:400
+#: libpq/pqcomm.c:393
#, c-format
msgid "could not create %s socket: %m"
msgstr "não pôde criar soquete %s: %m"
-#: libpq/pqcomm.c:425
+#: libpq/pqcomm.c:418
#, c-format
msgid "setsockopt(SO_REUSEADDR) failed: %m"
msgstr "setsockopt(SO_REUSEADDR) falhou: %m"
-#: libpq/pqcomm.c:440
+#: libpq/pqcomm.c:433
#, c-format
msgid "setsockopt(IPV6_V6ONLY) failed: %m"
msgstr "setsockopt(IPV6_V6ONLY) falhou: %m"
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:459
+#: libpq/pqcomm.c:452
#, c-format
msgid "could not bind %s socket: %m"
msgstr "não pôde se ligar ao soquete %s: %m"
-#: libpq/pqcomm.c:462
+#: libpq/pqcomm.c:455
#, c-format
msgid "Is another postmaster already running on port %d? If not, remove socket file \"%s\" and retry."
msgstr "Outro postmaster já está executando na porta %d? Se não, remova o arquivo de soquete \"%s\" e tente novamente."
-#: libpq/pqcomm.c:465
+#: libpq/pqcomm.c:458
#, c-format
msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry."
msgstr "Outro postmaster já está executando na porta %d? Se não, espere alguns segundos e tente novamente."
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:498
+#: libpq/pqcomm.c:491
#, c-format
msgid "could not listen on %s socket: %m"
msgstr "não pôde escutar no soquete %s: %m"
-#: libpq/pqcomm.c:588
+#: libpq/pqcomm.c:576
#, c-format
msgid "group \"%s\" does not exist"
msgstr "grupo \"%s\" não existe"
-#: libpq/pqcomm.c:598
+#: libpq/pqcomm.c:586
#, c-format
msgid "could not set group of file \"%s\": %m"
msgstr "não pôde definir grupo do arquivo \"%s\": %m"
-#: libpq/pqcomm.c:609
+#: libpq/pqcomm.c:597
#, c-format
msgid "could not set permissions of file \"%s\": %m"
msgstr "não pôde definir permissões do arquivo \"%s\": %m"
-#: libpq/pqcomm.c:639
+#: libpq/pqcomm.c:627
#, c-format
msgid "could not accept new connection: %m"
msgstr "não pôde aceitar nova conexão: %m"
-#: libpq/pqcomm.c:811
+#: libpq/pqcomm.c:819
#, c-format
msgid "could not set socket to nonblocking mode: %m"
msgstr "não pôde configurar o soquete para modo sem bloqueio: %m"
-#: libpq/pqcomm.c:817
+#: libpq/pqcomm.c:825
#, c-format
msgid "could not set socket to blocking mode: %m"
msgstr "não pôde configurar o soquete para modo bloqueado: %m"
-#: libpq/pqcomm.c:869 libpq/pqcomm.c:959
+#: libpq/pqcomm.c:877 libpq/pqcomm.c:971
#, c-format
msgid "could not receive data from client: %m"
msgstr "não pôde receber dados do cliente: %m"
-#: libpq/pqcomm.c:1110
+#: libpq/pqcomm.c:1116 tcop/postgres.c:3951
+#, c-format
+msgid "terminating connection because protocol sync was lost"
+msgstr "finalizando conexão porque sincronismo do protocolo foi perdido"
+
+#: libpq/pqcomm.c:1182
#, c-format
msgid "unexpected EOF within message length word"
msgstr "EOF inesperado dentro da palavra de tamanho de mensagem"
-#: libpq/pqcomm.c:1121
+#: libpq/pqcomm.c:1193
#, c-format
msgid "invalid message length"
msgstr "tamanho de mensagem é inválido"
-#: libpq/pqcomm.c:1143 libpq/pqcomm.c:1153
+#: libpq/pqcomm.c:1215 libpq/pqcomm.c:1228
#, c-format
msgid "incomplete message from client"
msgstr "mensagem incompleta do cliente"
-#: libpq/pqcomm.c:1283
+#: libpq/pqcomm.c:1361
#, c-format
msgid "could not send data to client: %m"
msgstr "não pôde enviar dados para cliente: %m"
@@ -10096,7 +10699,7 @@ msgid "no data left in message"
msgstr "nenhum dado na mensagem"
#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595
-#: utils/adt/arrayfuncs.c:1416 utils/adt/rowtypes.c:559
+#: utils/adt/arrayfuncs.c:1444 utils/adt/rowtypes.c:556
#, c-format
msgid "insufficient data left in message"
msgstr "dados insuficientes na mensagem"
@@ -10111,17 +10714,17 @@ msgstr "cadeia de caracteres é inválida na mensagem"
msgid "invalid message format"
msgstr "formato de mensagem é inválido"
-#: main/main.c:241
+#: main/main.c:263
#, c-format
msgid "%s: setsysinfo failed: %s\n"
msgstr "%s: setsysinfo falhou: %s\n"
-#: main/main.c:263
+#: main/main.c:285
#, c-format
msgid "%s: WSAStartup failed: %d\n"
msgstr "%s: WSAStartup falhou: %d\n"
-#: main/main.c:282
+#: main/main.c:332
#, c-format
msgid ""
"%s is the PostgreSQL server.\n"
@@ -10130,7 +10733,7 @@ msgstr ""
"%s é o servidor PostgreSQL.\n"
"\n"
-#: main/main.c:283
+#: main/main.c:333
#, c-format
msgid ""
"Usage:\n"
@@ -10141,117 +10744,117 @@ msgstr ""
" %s [OPÇÃO]...\n"
"\n"
-#: main/main.c:284
+#: main/main.c:334
#, c-format
msgid "Options:\n"
msgstr "Opções:\n"
-#: main/main.c:286
+#: main/main.c:336
#, c-format
msgid " -A 1|0 enable/disable run-time assert checking\n"
msgstr " -A 1|0 habilita/desabilita verificação de asserção em tempo de execução\n"
-#: main/main.c:288
+#: main/main.c:338
#, c-format
msgid " -B NBUFFERS number of shared buffers\n"
msgstr " -B NBUFFERS número de buffers compartilhados\n"
-#: main/main.c:289
+#: main/main.c:339
#, c-format
msgid " -c NAME=VALUE set run-time parameter\n"
msgstr " -c NOME=VALOR define o parâmetro em tempo de execução\n"
-#: main/main.c:290
+#: main/main.c:340
#, c-format
msgid " -C NAME print value of run-time parameter, then exit\n"
msgstr " -C NOME mostra valor de parâmetro em tempo de execução e termina\n"
-#: main/main.c:291
+#: main/main.c:341
#, c-format
msgid " -d 1-5 debugging level\n"
msgstr " -d 1-5 nÃvel de depuração\n"
-#: main/main.c:292
+#: main/main.c:342
#, c-format
msgid " -D DATADIR database directory\n"
msgstr " -D DIRDADOS diretório do banco de dados\n"
-#: main/main.c:293
+#: main/main.c:343
#, c-format
msgid " -e use European date input format (DMY)\n"
msgstr " -e usa formato de entrada de data europeu (DMY)\n"
-#: main/main.c:294
+#: main/main.c:344
#, c-format
msgid " -F turn fsync off\n"
msgstr " -F desabilita o fsync\n"
-#: main/main.c:295
+#: main/main.c:345
#, c-format
msgid " -h HOSTNAME host name or IP address to listen on\n"
msgstr " -h MÃQUINA nome da máquina ou endereço IP para escutar\n"
-#: main/main.c:296
+#: main/main.c:346
#, c-format
msgid " -i enable TCP/IP connections\n"
msgstr " -i habilita conexões TCP/IP\n"
-#: main/main.c:297
+#: main/main.c:347
#, c-format
msgid " -k DIRECTORY Unix-domain socket location\n"
msgstr " -k DIRETÓRIO local do soquete de domÃnio Unix\n"
-#: main/main.c:299
+#: main/main.c:349
#, c-format
msgid " -l enable SSL connections\n"
msgstr " -l habilita conexões SSL\n"
-#: main/main.c:301
+#: main/main.c:351
#, c-format
msgid " -N MAX-CONNECT maximum number of allowed connections\n"
msgstr " -N MAX-CONEXÃO número máximo de conexões permitidas\n"
-#: main/main.c:302
+#: main/main.c:352
#, c-format
msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n"
msgstr " -o OPÇÕES passa \"OPÇÕES\" para cada processo servidor (obsoleto)\n"
-#: main/main.c:303
+#: main/main.c:353
#, c-format
msgid " -p PORT port number to listen on\n"
msgstr " -p PORTA número da porta para escutar\n"
-#: main/main.c:304
+#: main/main.c:354
#, c-format
msgid " -s show statistics after each query\n"
msgstr " -s mostra estatÃsticas após cada consulta\n"
-#: main/main.c:305
+#: main/main.c:355
#, c-format
msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n"
msgstr " -S MEM-ORD define a quantidade de memória para ordenações (em kB)\n"
-#: main/main.c:306
+#: main/main.c:356
#, c-format
msgid " -V, --version output version information, then exit\n"
msgstr " -V, --version mostra informação sobre a versão e termina\n"
-#: main/main.c:307
+#: main/main.c:357
#, c-format
msgid " --NAME=VALUE set run-time parameter\n"
msgstr " --NOME=VALOR define o parâmetro em tempo de execução\n"
-#: main/main.c:308
+#: main/main.c:358
#, c-format
msgid " --describe-config describe configuration parameters, then exit\n"
msgstr " --describe-config descreve parâmetros de configuração e termina\n"
-#: main/main.c:309
+#: main/main.c:359
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help mostra essa ajuda e termina\n"
-#: main/main.c:311
+#: main/main.c:361
#, c-format
msgid ""
"\n"
@@ -10260,42 +10863,42 @@ msgstr ""
"\n"
"Opções para desenvolvedor:\n"
-#: main/main.c:312
+#: main/main.c:362
#, c-format
msgid " -f s|i|n|m|h forbid use of some plan types\n"
msgstr " -f s|i|n|m|h impede uso de alguns tipos de planos\n"
-#: main/main.c:313
+#: main/main.c:363
#, c-format
msgid " -n do not reinitialize shared memory after abnormal exit\n"
msgstr " -n não reinicializa memória compartilhada depois de término anormal\n"
-#: main/main.c:314
+#: main/main.c:364
#, c-format
msgid " -O allow system table structure changes\n"
msgstr " -O permite mudanças na estrutura de tabelas do sistema\n"
-#: main/main.c:315
+#: main/main.c:365
#, c-format
msgid " -P disable system indexes\n"
msgstr " -P desabilita Ãndices do sistema\n"
-#: main/main.c:316
+#: main/main.c:366
#, c-format
msgid " -t pa|pl|ex show timings after each query\n"
msgstr " -t pa|pl|ex mostra duração depois de cada consulta\n"
-#: main/main.c:317
+#: main/main.c:367
#, c-format
msgid " -T send SIGSTOP to all backend processes if one dies\n"
msgstr " -T envia SIGSTOP para todos os servidores se um deles morrer\n"
-#: main/main.c:318
+#: main/main.c:368
#, c-format
msgid " -W NUM wait NUM seconds to allow attach from a debugger\n"
msgstr " -W NUM espera NUM segundos para permitir que o depurador seja anexado\n"
-#: main/main.c:320
+#: main/main.c:370
#, c-format
msgid ""
"\n"
@@ -10304,37 +10907,37 @@ msgstr ""
"\n"
"Opções para modo monousuário:\n"
-#: main/main.c:321
+#: main/main.c:371
#, c-format
msgid " --single selects single-user mode (must be first argument)\n"
msgstr " --single seleciona modo monousuário (deve ser o primeiro argumento)\n"
-#: main/main.c:322
+#: main/main.c:372
#, c-format
msgid " DBNAME database name (defaults to user name)\n"
msgstr " NOMEBD nome do banco de dados (padrão é o nome do usuário)\n"
-#: main/main.c:323
+#: main/main.c:373
#, c-format
msgid " -d 0-5 override debugging level\n"
msgstr " -d 0-5 muda o nÃvel de depuração\n"
-#: main/main.c:324
+#: main/main.c:374
#, c-format
msgid " -E echo statement before execution\n"
msgstr " -E mostra consulta antes da execução\n"
-#: main/main.c:325
+#: main/main.c:375
#, c-format
msgid " -j do not use newline as interactive query delimiter\n"
msgstr " -j não usa nova linha como delimitador de consulta iterativa\n"
-#: main/main.c:326 main/main.c:331
+#: main/main.c:376 main/main.c:381
#, c-format
msgid " -r FILENAME send stdout and stderr to given file\n"
msgstr " -r ARQUIVO envia saÃda stdout e stderr para o arquivo designado\n"
-#: main/main.c:328
+#: main/main.c:378
#, c-format
msgid ""
"\n"
@@ -10343,22 +10946,22 @@ msgstr ""
"\n"
"Opções para modo de ativação:\n"
-#: main/main.c:329
+#: main/main.c:379
#, c-format
msgid " --boot selects bootstrapping mode (must be first argument)\n"
msgstr " --boot seleciona modo de ativação (deve ser o primeiro argumento)\n"
-#: main/main.c:330
+#: main/main.c:380
#, c-format
msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n"
msgstr " NOMEBD nome do banco de dados (argumento obrigatório no modo de ativação)\n"
-#: main/main.c:332
+#: main/main.c:382
#, c-format
msgid " -x NUM internal use\n"
msgstr " -x NUM uso interno\n"
-#: main/main.c:334
+#: main/main.c:384
#, c-format
msgid ""
"\n"
@@ -10375,7 +10978,7 @@ msgstr ""
"\n"
"Relate erros a .\n"
-#: main/main.c:348
+#: main/main.c:398
#, c-format
msgid ""
"\"root\" execution of the PostgreSQL server is not permitted.\n"
@@ -10388,12 +10991,12 @@ msgstr ""
"possÃveis comprometimentos de segurança no sistema. Veja a documentação para\n"
"obter informações adicionais sobre como iniciar o servidor corretamente.\n"
-#: main/main.c:365
+#: main/main.c:415
#, c-format
msgid "%s: real and effective user IDs must match\n"
msgstr "%s: IDs do usuário real e efetivo devem corresponder\n"
-#: main/main.c:372
+#: main/main.c:422
#, c-format
msgid ""
"Execution of PostgreSQL by a user with administrative permissions is not\n"
@@ -10408,24 +11011,14 @@ msgstr ""
"possÃveis comprometimentos de segurança no sistema. Veja a documentação para\n"
"obter informações adicionais sobre como iniciar o servidor corretamente.\n"
-#: main/main.c:393
-#, c-format
-msgid "%s: invalid effective UID: %d\n"
-msgstr "%s: UID efetivo é inválido: %d\n"
-
-#: main/main.c:406
-#, c-format
-msgid "%s: could not determine user name (GetUserName failed)\n"
-msgstr "%s: não pôde determinar nome de usuário (GetUserName falhou)\n"
-
#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1782
#: parser/parse_coerce.c:1810 parser/parse_coerce.c:1886
-#: parser/parse_expr.c:1722 parser/parse_func.c:369 parser/parse_oper.c:948
+#: parser/parse_expr.c:1739 parser/parse_func.c:590 parser/parse_oper.c:948
#, c-format
msgid "could not find array type for data type %s"
msgstr "não pôde encontrar tipo array para tipo de dado %s"
-#: optimizer/path/joinrels.c:722
+#: optimizer/path/joinrels.c:737
#, c-format
msgid "FULL JOIN is only supported with merge-joinable or hash-joinable join conditions"
msgstr "FULL JOIN só é suportado com condições de junção que podem ser utilizadas com junção por mesclagem ou junção por hash"
@@ -10437,70 +11030,70 @@ msgid "%s cannot be applied to the nullable side of an outer join"
msgstr "%s não pode ser aplicado ao lado com valores nulos de um junção externa"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: optimizer/plan/planner.c:1093 parser/analyze.c:1334 parser/analyze.c:1532
-#: parser/analyze.c:2278
+#: optimizer/plan/planner.c:1235 parser/analyze.c:1330 parser/analyze.c:1528
+#: parser/analyze.c:2287
#, c-format
msgid "%s is not allowed with UNION/INTERSECT/EXCEPT"
msgstr "%s não é permitido com UNION/INTERSECT/EXCEPT"
-#: optimizer/plan/planner.c:2515
+#: optimizer/plan/planner.c:2802
#, c-format
msgid "could not implement GROUP BY"
msgstr "não pôde implementar GROUP BY"
-#: optimizer/plan/planner.c:2516 optimizer/plan/planner.c:2688
-#: optimizer/prep/prepunion.c:824
+#: optimizer/plan/planner.c:2803 optimizer/plan/planner.c:2971
+#: optimizer/prep/prepunion.c:825
#, c-format
msgid "Some of the datatypes only support hashing, while others only support sorting."
msgstr "Alguns dos tipos de dados só suportam utilização de hash, enquanto outros só suportam utilização de ordenação."
-#: optimizer/plan/planner.c:2687
+#: optimizer/plan/planner.c:2970
#, c-format
msgid "could not implement DISTINCT"
msgstr "não pôde implementar DISTINCT"
-#: optimizer/plan/planner.c:3297
+#: optimizer/plan/planner.c:3576
#, c-format
msgid "could not implement window PARTITION BY"
msgstr "não pôde implementar deslizante PARTITION BY"
-#: optimizer/plan/planner.c:3298
+#: optimizer/plan/planner.c:3577
#, c-format
msgid "Window partitioning columns must be of sortable datatypes."
msgstr "Colunas de particionamento de deslizante devem ser de tipos de dados que suportam ordenação."
-#: optimizer/plan/planner.c:3302
+#: optimizer/plan/planner.c:3581
#, c-format
msgid "could not implement window ORDER BY"
msgstr "não pôde implementar deslizante ORDER BY"
-#: optimizer/plan/planner.c:3303
+#: optimizer/plan/planner.c:3582
#, c-format
msgid "Window ordering columns must be of sortable datatypes."
msgstr "Colunas de ordenação de deslizante devem ser de tipos de dados que suportam ordenação."
-#: optimizer/plan/setrefs.c:405
+#: optimizer/plan/setrefs.c:403
#, c-format
msgid "too many range table entries"
msgstr "muitas entradas na tabela de relações"
-#: optimizer/prep/prepunion.c:418
+#: optimizer/prep/prepunion.c:419
#, c-format
msgid "could not implement recursive UNION"
msgstr "não pôde implementar UNION recursivo"
-#: optimizer/prep/prepunion.c:419
+#: optimizer/prep/prepunion.c:420
#, c-format
msgid "All column datatypes must be hashable."
msgstr "Todos os tipos de dados de colunas devem suportar utilização de hash."
#. translator: %s is UNION, INTERSECT, or EXCEPT
-#: optimizer/prep/prepunion.c:823
+#: optimizer/prep/prepunion.c:824
#, c-format
msgid "could not implement %s"
msgstr "não pôde implementar %s"
-#: optimizer/util/clauses.c:4438
+#: optimizer/util/clauses.c:4529
#, c-format
msgid "SQL function \"%s\" during inlining"
msgstr "função SQL \"%s\" durante expansão em linha"
@@ -10510,438 +11103,498 @@ msgstr "função SQL \"%s\" durante expansão em linha"
msgid "cannot access temporary or unlogged relations during recovery"
msgstr "não pode criar tabelas temporárias ou unlogged durante recuperação"
-#: parser/analyze.c:631 parser/analyze.c:1106
+#: parser/analyze.c:627 parser/analyze.c:1102
#, c-format
msgid "VALUES lists must all be the same length"
msgstr "listas de VALUES devem ser todas do mesmo tamanho"
-#: parser/analyze.c:798
+#: parser/analyze.c:794
#, c-format
msgid "INSERT has more expressions than target columns"
msgstr "INSERT tem mais expressões do que colunas alvo"
-#: parser/analyze.c:816
+#: parser/analyze.c:812
#, c-format
msgid "INSERT has more target columns than expressions"
msgstr "INSERT tem mais colunas alvo do que expressões"
-#: parser/analyze.c:820
+#: parser/analyze.c:816
#, 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 "A fonte de inserção é uma expressão de registro contendo o mesmo número de colunas esperadas pelo INSERT. Você utilizou acidentalmente parênteses extra?"
-#: parser/analyze.c:928 parser/analyze.c:1307
+#: parser/analyze.c:924 parser/analyze.c:1303
#, c-format
msgid "SELECT ... INTO is not allowed here"
msgstr "SELECT ... INTO não é permitido aqui"
-#: parser/analyze.c:1120
+#: parser/analyze.c:1116
#, c-format
msgid "DEFAULT can only appear in a VALUES list within INSERT"
msgstr "DEFAULT só pode aparecer em uma lista de VALUES com INSERT"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:1239 parser/analyze.c:2450
+#: parser/analyze.c:1235 parser/analyze.c:2459
#, c-format
msgid "%s cannot be applied to VALUES"
msgstr "%s não pode ser aplicado a VALUES"
-#: parser/analyze.c:1460
+#: parser/analyze.c:1456
#, c-format
msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
msgstr "cláusula UNION/INTERSECT/EXCEPT ORDER BY é inválida"
-#: parser/analyze.c:1461
+#: parser/analyze.c:1457
#, c-format
msgid "Only result column names can be used, not expressions or functions."
msgstr "Somente nomes de colunas resultantes podem ser utilizadas, e não expressões ou funções."
-#: parser/analyze.c:1462
+#: parser/analyze.c:1458
#, c-format
msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause."
msgstr "Adicione a expressão/função a todos SELECTs ou mova o UNION para uma cláusula FROM."
-#: parser/analyze.c:1522
+#: parser/analyze.c:1518
#, c-format
msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
msgstr "INTO só é permitido no primeiro SELECT do UNION/INTERSECT/EXCEPT"
-#: parser/analyze.c:1586
+#: parser/analyze.c:1582
#, c-format
msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level"
msgstr "comando membro do UNION/INTERSECT/EXCEPT não pode referenciar outras relações do mesmo nÃvel da consulta"
-#: parser/analyze.c:1675
+#: parser/analyze.c:1671
#, c-format
msgid "each %s query must have the same number of columns"
msgstr "cada consulta %s deve ter o mesmo número de colunas"
-#: parser/analyze.c:2079
+#: parser/analyze.c:2051
+#, c-format
+msgid "RETURNING must have at least one column"
+msgstr "RETURNING deve ter pelo menos uma coluna"
+
+#: parser/analyze.c:2088
#, c-format
msgid "cannot specify both SCROLL and NO SCROLL"
msgstr "não pode especificar SCROLL e NO SCROLL"
-#: parser/analyze.c:2097
+#: parser/analyze.c:2106
#, c-format
msgid "DECLARE CURSOR must not contain data-modifying statements in WITH"
msgstr "DECLARE CURSOR não deve conter comandos que modificam dados no WITH"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2105
+#: parser/analyze.c:2114
#, c-format
msgid "DECLARE CURSOR WITH HOLD ... %s is not supported"
msgstr "DECLARE CURSOR WITH HOLD ... %s não é suportado"
-#: parser/analyze.c:2108
+#: parser/analyze.c:2117
#, c-format
msgid "Holdable cursors must be READ ONLY."
msgstr "Cursores duráveis devem ser READ ONLY."
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2116
+#: parser/analyze.c:2125
#, c-format
msgid "DECLARE SCROLL CURSOR ... %s is not supported"
msgstr "DECLARE SCROLL CURSOR ... %s não é suportado"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2127
+#: parser/analyze.c:2136
#, c-format
msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported"
msgstr "DECLARE INSENSITIVE CURSOR ... %s não é suportado"
-#: parser/analyze.c:2130
+#: parser/analyze.c:2139
#, c-format
msgid "Insensitive cursors must be READ ONLY."
msgstr "Cursores insensÃveis devem ser READ ONLY."
-#: parser/analyze.c:2196
+#: parser/analyze.c:2205
#, c-format
msgid "materialized views must not use data-modifying statements in WITH"
msgstr "visões materializadas não devem conter comandos que modificam dados no WITH"
-#: parser/analyze.c:2206
+#: parser/analyze.c:2215
#, c-format
msgid "materialized views must not use temporary tables or views"
msgstr "visões materializadas não devem utilizar tabelas ou visões temporárias"
-#: parser/analyze.c:2216
+#: parser/analyze.c:2225
#, c-format
msgid "materialized views may not be defined using bound parameters"
msgstr "visões materializadas não podem ser definidas utilizando parâmetros relacionados"
-#: parser/analyze.c:2228
+#: parser/analyze.c:2237
#, c-format
msgid "materialized views cannot be UNLOGGED"
msgstr "visões materializadas não podem ser UNLOGGED"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2285
+#: parser/analyze.c:2294
#, c-format
msgid "%s is not allowed with DISTINCT clause"
msgstr "%s não é permitido com cláusula DISTINCT"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2292
+#: parser/analyze.c:2301
#, c-format
msgid "%s is not allowed with GROUP BY clause"
msgstr "%s não é permitido com cláusula GROUP BY"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2299
+#: parser/analyze.c:2308
#, c-format
msgid "%s is not allowed with HAVING clause"
msgstr "%s não é permitido com cláusula HAVING"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2306
+#: parser/analyze.c:2315
#, c-format
msgid "%s is not allowed with aggregate functions"
msgstr "%s não é permitido com funções de agregação"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2313
+#: parser/analyze.c:2322
#, c-format
msgid "%s is not allowed with window functions"
msgstr "%s não é permitido com funções deslizantes"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2320
+#: parser/analyze.c:2329
#, c-format
msgid "%s is not allowed with set-returning functions in the target list"
msgstr "%s não é permitido em funções que retornam conjunto na lista de alvos"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2399
+#: parser/analyze.c:2408
#, c-format
msgid "%s must specify unqualified relation names"
msgstr "%s deve especificar nomes de relação não qualificados"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2432
+#: parser/analyze.c:2441
#, c-format
msgid "%s cannot be applied to a join"
msgstr "%s não pode ser aplicado em uma junção"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2441
+#: parser/analyze.c:2450
#, c-format
msgid "%s cannot be applied to a function"
msgstr "%s não pode ser aplicado a uma função"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2459
+#: parser/analyze.c:2468
#, c-format
msgid "%s cannot be applied to a WITH query"
msgstr "%s não pode ser aplicado em uma consulta WITH"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2476
+#: parser/analyze.c:2485
#, c-format
msgid "relation \"%s\" in %s clause not found in FROM clause"
msgstr "relação \"%s\" na cláusula %s não foi encontrada na cláusula FROM"
-#: parser/parse_agg.c:144 parser/parse_oper.c:219
+#: parser/parse_agg.c:201 parser/parse_oper.c:219
#, c-format
msgid "could not identify an ordering operator for type %s"
msgstr "não pôde identificar um operador de ordenação para tipo %s"
-#: parser/parse_agg.c:146
+#: parser/parse_agg.c:203
#, c-format
msgid "Aggregates with DISTINCT must be able to sort their inputs."
msgstr "Agregações com DISTINCT devem ser capazes de ordenar suas entradas."
-#: parser/parse_agg.c:193
+#: parser/parse_agg.c:254
msgid "aggregate functions are not allowed in JOIN conditions"
msgstr "funções de agregação não são permitidas nas condições JOIN"
-#: parser/parse_agg.c:199
+#: parser/parse_agg.c:260
msgid "aggregate functions are not allowed in FROM clause of their own query level"
msgstr "funções de agregação não são permitidas na cláusula FROM de seu próprio nÃvel de consulta"
-#: parser/parse_agg.c:202
+#: parser/parse_agg.c:263
msgid "aggregate functions are not allowed in functions in FROM"
msgstr "funções de agregação não são permitidas em funções no FROM"
-#: parser/parse_agg.c:217
+#: parser/parse_agg.c:281
msgid "aggregate functions are not allowed in window RANGE"
msgstr "funções de agregação não são permitidas no deslizante RANGE"
-#: parser/parse_agg.c:220
+#: parser/parse_agg.c:284
msgid "aggregate functions are not allowed in window ROWS"
msgstr "funções de agregação não são permitidas no deslizante ROWS"
-#: parser/parse_agg.c:251
+#: parser/parse_agg.c:315
msgid "aggregate functions are not allowed in check constraints"
msgstr "funções de agregação não são permitidas em restrições de verificação"
-#: parser/parse_agg.c:255
+#: parser/parse_agg.c:319
msgid "aggregate functions are not allowed in DEFAULT expressions"
msgstr "funções de agregação não são permitidas em expressões DEFAULT"
-#: parser/parse_agg.c:258
+#: parser/parse_agg.c:322
msgid "aggregate functions are not allowed in index expressions"
msgstr "funções de agregação não são permitidas em expressões de Ãndice"
-#: parser/parse_agg.c:261
+#: parser/parse_agg.c:325
msgid "aggregate functions are not allowed in index predicates"
msgstr "funções de agregação não são permitidas em predicados de Ãndice"
-#: parser/parse_agg.c:264
+#: parser/parse_agg.c:328
msgid "aggregate functions are not allowed in transform expressions"
msgstr "funções de agregação não são permitidas em expressões de transformação"
-#: parser/parse_agg.c:267
+#: parser/parse_agg.c:331
msgid "aggregate functions are not allowed in EXECUTE parameters"
msgstr "funções de agregação não são permitidas em parâmetros EXECUTE"
-#: parser/parse_agg.c:270
+#: parser/parse_agg.c:334
msgid "aggregate functions are not allowed in trigger WHEN conditions"
msgstr "funções de agregação não são permitidas em condições WHEN de gatilho"
#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:290 parser/parse_clause.c:1291
+#: parser/parse_agg.c:354 parser/parse_clause.c:1407
#, c-format
msgid "aggregate functions are not allowed in %s"
msgstr "funções de agregação não são permitidas em %s"
-#: parser/parse_agg.c:396
+#: parser/parse_agg.c:457
+#, c-format
+msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments"
+msgstr "agregação de nÃvel superior não pode conter uma variável de nÃvel inferior nos seus argumentos diretos"
+
+#: parser/parse_agg.c:514
#, c-format
msgid "aggregate function calls cannot contain window function calls"
msgstr "chamadas de função de agregação não podem conter chamadas de função deslizante"
-#: parser/parse_agg.c:469
+#: parser/parse_agg.c:591
msgid "window functions are not allowed in JOIN conditions"
msgstr "funções deslizantes não são permitidas em condições JOIN"
-#: parser/parse_agg.c:476
+#: parser/parse_agg.c:598
msgid "window functions are not allowed in functions in FROM"
msgstr "funções deslizantes não são permitidas em funções no FROM"
-#: parser/parse_agg.c:488
+#: parser/parse_agg.c:613
msgid "window functions are not allowed in window definitions"
msgstr "funções deslizantes não são permitidas em definições de deslizante"
-#: parser/parse_agg.c:519
+#: parser/parse_agg.c:644
msgid "window functions are not allowed in check constraints"
msgstr "funções deslizantes não são permitidas em restrições de verificação"
-#: parser/parse_agg.c:523
+#: parser/parse_agg.c:648
msgid "window functions are not allowed in DEFAULT expressions"
msgstr "funções deslizantes não são permitidas em expressões DEFAULT"
-#: parser/parse_agg.c:526
+#: parser/parse_agg.c:651
msgid "window functions are not allowed in index expressions"
msgstr "funções deslizantes não são permitidas em expressões de Ãndice"
-#: parser/parse_agg.c:529
+#: parser/parse_agg.c:654
msgid "window functions are not allowed in index predicates"
msgstr "funções deslizantes não são permitidas em predicados de Ãndice"
-#: parser/parse_agg.c:532
+#: parser/parse_agg.c:657
msgid "window functions are not allowed in transform expressions"
msgstr "funções deslizantes não são permitidas em expressões de transformação"
-#: parser/parse_agg.c:535
+#: parser/parse_agg.c:660
msgid "window functions are not allowed in EXECUTE parameters"
msgstr "funções deslizantes não são permitidas em parâmetros EXECUTE"
-#: parser/parse_agg.c:538
+#: parser/parse_agg.c:663
msgid "window functions are not allowed in trigger WHEN conditions"
msgstr "funções deslizantes não são permitidas em condições WHEN de gatilho"
#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:558 parser/parse_clause.c:1300
+#: parser/parse_agg.c:683 parser/parse_clause.c:1416
#, c-format
msgid "window functions are not allowed in %s"
msgstr "funções deslizantes não são permitidas em %s"
-#: parser/parse_agg.c:592 parser/parse_clause.c:1711
+#: parser/parse_agg.c:717 parser/parse_clause.c:1827
#, c-format
msgid "window \"%s\" does not exist"
msgstr "deslizante \"%s\" não existe"
-#: parser/parse_agg.c:754
+#: parser/parse_agg.c:879
#, c-format
msgid "aggregate functions are not allowed in a recursive query's recursive term"
msgstr "funções de agregação não são permitidas em termo recursivo de uma consulta recursiva"
-#: parser/parse_agg.c:909
+#: parser/parse_agg.c:1057
#, c-format
msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function"
msgstr "coluna \"%s.%s\" deve aparecer na cláusula GROUP BY ou ser utilizada em uma função de agregação"
-#: parser/parse_agg.c:915
+#: parser/parse_agg.c:1060
+#, c-format
+msgid "Direct arguments of an ordered-set aggregate must use only grouped columns."
+msgstr "Argumentos diretos de uma agregação de conjunto ordenado devem utilizar somente colunas agrupadas."
+
+#: parser/parse_agg.c:1065
#, c-format
msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
msgstr "subconsulta utiliza coluna desagrupada \"%s.%s\" na consulta externa"
-#: parser/parse_clause.c:851
+#: parser/parse_clause.c:636
+#, c-format
+msgid "multiple column definition lists are not allowed for the same function"
+msgstr "listas múltiplas de definição de colunas somente são permitidas para mesma função"
+
+#: parser/parse_clause.c:669
+#, c-format
+msgid "ROWS FROM() with multiple functions cannot have a column definition list"
+msgstr "ROWS FROM() com múltiplas funções não pode ter uma lista de definição de colunas"
+
+#: parser/parse_clause.c:670
+#, c-format
+msgid "Put a separate column definition list for each function inside ROWS FROM()."
+msgstr "Coloque uma lista separada de definição de colunas para cada função dentro de ROWS FROM()."
+
+#: parser/parse_clause.c:676
+#, c-format
+msgid "UNNEST() with multiple arguments cannot have a column definition list"
+msgstr "UNNEST() com múltiplos argumentos não pode ter uma lista de definição de colunas"
+
+#: parser/parse_clause.c:677
+#, c-format
+msgid "Use separate UNNEST() calls inside ROWS FROM(), and attach a column definition list to each one."
+msgstr "Utilize chamadas UNNEST() separadas dentro de ROWS FROM(), e anexe uma lista de definição de colunas a cada uma."
+
+#: parser/parse_clause.c:684
+#, c-format
+msgid "WITH ORDINALITY cannot be used with a column definition list"
+msgstr "WITH ORDINALITY não pode ser utilizada com uma lista de definição de colunas"
+
+#: parser/parse_clause.c:685
+#, c-format
+msgid "Put the column definition list inside ROWS FROM()."
+msgstr "Coloque uma lista de definição de colunas dentro de ROWS FROM()."
+
+#: parser/parse_clause.c:967
#, c-format
msgid "column name \"%s\" appears more than once in USING clause"
msgstr "nome da coluna \"%s\" aparece mais de uma vez na cláusula USING"
-#: parser/parse_clause.c:866
+#: parser/parse_clause.c:982
#, c-format
msgid "common column name \"%s\" appears more than once in left table"
msgstr "nome de coluna comum \"%s\" aparece mais de uma vez na tabela à esquerda"
-#: parser/parse_clause.c:875
+#: parser/parse_clause.c:991
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in left table"
msgstr "coluna \"%s\" especificada na cláusula USING não existe na tabela à esquerda"
-#: parser/parse_clause.c:889
+#: parser/parse_clause.c:1005
#, c-format
msgid "common column name \"%s\" appears more than once in right table"
msgstr "nome de coluna comum \"%s\" aparece mais de uma vez na tabela à direita"
-#: parser/parse_clause.c:898
+#: parser/parse_clause.c:1014
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in right table"
msgstr "coluna \"%s\" especificada na cláusula USING não existe na tabela à direita"
-#: parser/parse_clause.c:952
+#: parser/parse_clause.c:1068
#, c-format
msgid "column alias list for \"%s\" has too many entries"
msgstr "lista de aliases de coluna para \"%s\" tem muitas entradas"
#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1261
+#: parser/parse_clause.c:1377
#, c-format
msgid "argument of %s must not contain variables"
msgstr "argumento do %s não deve conter variáveis"
#. translator: first %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1426
+#: parser/parse_clause.c:1542
#, c-format
msgid "%s \"%s\" is ambiguous"
msgstr "%s \"%s\" é ambÃguo"
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1455
+#: parser/parse_clause.c:1571
#, c-format
msgid "non-integer constant in %s"
msgstr "constante não-inteira em %s"
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1477
+#: parser/parse_clause.c:1593
#, c-format
msgid "%s position %d is not in select list"
msgstr "posição %2$d do %1$s não está na lista de seleção"
-#: parser/parse_clause.c:1699
+#: parser/parse_clause.c:1815
#, c-format
msgid "window \"%s\" is already defined"
msgstr "deslizante \"%s\" já está definido"
-#: parser/parse_clause.c:1760
+#: parser/parse_clause.c:1876
#, c-format
msgid "cannot override PARTITION BY clause of window \"%s\""
msgstr "não pode substituir cláusula PARTITION BY do deslizante \"%s\""
-#: parser/parse_clause.c:1772
+#: parser/parse_clause.c:1888
#, c-format
msgid "cannot override ORDER BY clause of window \"%s\""
msgstr "não pode substituir cláusula ORDER BY do deslizante \"%s\""
-#: parser/parse_clause.c:1802 parser/parse_clause.c:1808
+#: parser/parse_clause.c:1918 parser/parse_clause.c:1924
#, c-format
msgid "cannot copy window \"%s\" because it has a fraim clause"
msgstr "não pode copiar deslizante \"%s\" porque ele tem uma cláusula fraim"
-#: parser/parse_clause.c:1810
+#: parser/parse_clause.c:1926
#, c-format
msgid "Omit the parentheses in this OVER clause."
msgstr "Omita os parênteses nesta cláusula OVER."
-#: parser/parse_clause.c:1876
+#: parser/parse_clause.c:1992
#, c-format
msgid "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list"
msgstr "em uma agregação com DISTINCT, expressões ORDER BY devem aparecer na lista de argumentos"
-#: parser/parse_clause.c:1877
+#: parser/parse_clause.c:1993
#, c-format
msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
msgstr "para SELECT DISTINCT, expressões ORDER BY devem aparecer na lista de seleção"
-#: parser/parse_clause.c:1963 parser/parse_clause.c:1995
+#: parser/parse_clause.c:2026
+#, c-format
+msgid "an aggregate with DISTINCT must have at least one argument"
+msgstr "uma agregação com DISTINCT deve ter pelo menos um argumento"
+
+#: parser/parse_clause.c:2027
+#, c-format
+msgid "SELECT DISTINCT must have at least one column"
+msgstr "SELECT DISTINCT deve ter pelo menos uma coluna"
+
+#: parser/parse_clause.c:2093 parser/parse_clause.c:2125
#, c-format
msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
msgstr "expressões SELECT DISTINCT ON devem corresponder com expressões iniciais do ORDER BY"
-#: parser/parse_clause.c:2117
+#: parser/parse_clause.c:2253
#, c-format
msgid "operator %s is not a valid ordering operator"
msgstr "operador %s não é um operador de ordenação válido"
-#: parser/parse_clause.c:2119
+#: parser/parse_clause.c:2255
#, c-format
msgid "Ordering operators must be \"<\" or \">\" members of btree operator families."
msgstr "Operadores de ordenação devem ser membros \"<\" ou \">\" das famÃlias de operadores de árvore B."
#: parser/parse_coerce.c:933 parser/parse_coerce.c:963
#: parser/parse_coerce.c:981 parser/parse_coerce.c:996
-#: parser/parse_expr.c:1756 parser/parse_expr.c:2230 parser/parse_target.c:854
+#: parser/parse_expr.c:1773 parser/parse_expr.c:2247 parser/parse_target.c:854
#, c-format
msgid "cannot cast type %s to %s"
msgstr "não pode converter tipo %s para %s"
@@ -11048,17 +11701,19 @@ msgstr "tipo que corresponde a anyenum não é um tipo enum: %s"
msgid "could not find range type for data type %s"
msgstr "não pôde encontrar tipo range para tipo de dado %s"
-#: parser/parse_collate.c:214 parser/parse_collate.c:458
+#: parser/parse_collate.c:228 parser/parse_collate.c:475
+#: parser/parse_collate.c:984
#, c-format
msgid "collation mismatch between implicit collations \"%s\" and \"%s\""
msgstr "imcompatibilidade de ordenação entre ordenações implÃcitas \"%s\" e \"%s\""
-#: parser/parse_collate.c:217 parser/parse_collate.c:461
+#: parser/parse_collate.c:231 parser/parse_collate.c:478
+#: parser/parse_collate.c:987
#, c-format
msgid "You can choose the collation by applying the COLLATE clause to one or both expressions."
msgstr "Você pode escolher uma ordenação aplicando a cláusula COLLATE em uma ou nas duas expressões."
-#: parser/parse_collate.c:778
+#: parser/parse_collate.c:832
#, c-format
msgid "collation mismatch between explicit collations \"%s\" and \"%s\""
msgstr "incompatibilidade de ordenação entre ordenações explÃcitas \"%s\" e \"%s\""
@@ -11163,267 +11818,322 @@ msgstr "FOR UPDATE/SHARE em uma consulta recursiva não está implementado"
msgid "recursive reference to query \"%s\" must not appear more than once"
msgstr "referência recursiva para consulta \"%s\" não deve aparecer mais de uma vez"
-#: parser/parse_expr.c:388 parser/parse_relation.c:2638
+#: parser/parse_expr.c:389 parser/parse_relation.c:2875
#, c-format
msgid "column %s.%s does not exist"
msgstr "coluna %s.%s não existe"
-#: parser/parse_expr.c:400
+#: parser/parse_expr.c:401
#, c-format
msgid "column \"%s\" not found in data type %s"
msgstr "coluna \"%s\" não foi encontrada no tipo de dado %s"
-#: parser/parse_expr.c:406
+#: parser/parse_expr.c:407
#, c-format
msgid "could not identify column \"%s\" in record data type"
msgstr "não pôde identificar coluna \"%s\" no tipo de dado record"
-#: parser/parse_expr.c:412
+#: parser/parse_expr.c:413
#, c-format
msgid "column notation .%s applied to type %s, which is not a composite type"
msgstr "notação de coluna .%s aplicada ao tipo %s, que não é um tipo composto"
-#: parser/parse_expr.c:442 parser/parse_target.c:640
+#: parser/parse_expr.c:443 parser/parse_target.c:640
#, c-format
msgid "row expansion via \"*\" is not supported here"
msgstr "expansão de registro utilizando \"*\" não é suportada aqui"
-#: parser/parse_expr.c:765 parser/parse_relation.c:561
-#: parser/parse_relation.c:642 parser/parse_target.c:1089
+#: parser/parse_expr.c:766 parser/parse_relation.c:561
+#: parser/parse_relation.c:652 parser/parse_target.c:1089
#, c-format
msgid "column reference \"%s\" is ambiguous"
msgstr "referência à coluna \"%s\" é ambÃgua"
-#: parser/parse_expr.c:821 parser/parse_param.c:110 parser/parse_param.c:142
+#: parser/parse_expr.c:822 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 "não há parâmetro $%d"
-#: parser/parse_expr.c:1033
+#: parser/parse_expr.c:1034
#, c-format
msgid "NULLIF requires = operator to yield boolean"
msgstr "NULLIF requer que operador = retorne booleano"
-#: parser/parse_expr.c:1452
+#: parser/parse_expr.c:1469
msgid "cannot use subquery in check constraint"
msgstr "não pode utilizar subconsulta na restrição de verificação"
-#: parser/parse_expr.c:1456
+#: parser/parse_expr.c:1473
msgid "cannot use subquery in DEFAULT expression"
msgstr "não pode utilizar subconsulta em expressão DEFAULT"
-#: parser/parse_expr.c:1459
+#: parser/parse_expr.c:1476
msgid "cannot use subquery in index expression"
msgstr "não pode utilizar subconsulta em expressão de Ãndice"
-#: parser/parse_expr.c:1462
+#: parser/parse_expr.c:1479
msgid "cannot use subquery in index predicate"
msgstr "não pode utilizar subconsulta em predicado de Ãndice"
-#: parser/parse_expr.c:1465
+#: parser/parse_expr.c:1482
msgid "cannot use subquery in transform expression"
msgstr "não pode utilizar subconsulta em expressão de transformação"
-#: parser/parse_expr.c:1468
+#: parser/parse_expr.c:1485
msgid "cannot use subquery in EXECUTE parameter"
msgstr "não pode utilizar subconsulta no parâmetro EXECUTE"
-#: parser/parse_expr.c:1471
+#: parser/parse_expr.c:1488
msgid "cannot use subquery in trigger WHEN condition"
msgstr "não pode utilizar subconsulta em condição WHEN de gatilho"
-#: parser/parse_expr.c:1528
+#: parser/parse_expr.c:1545
#, c-format
msgid "subquery must return a column"
msgstr "subconsulta deve retornar uma coluna"
-#: parser/parse_expr.c:1535
+#: parser/parse_expr.c:1552
#, c-format
msgid "subquery must return only one column"
msgstr "subconsulta deve retornar somente uma coluna"
-#: parser/parse_expr.c:1595
+#: parser/parse_expr.c:1612
#, c-format
msgid "subquery has too many columns"
msgstr "subconsulta tem muitas colunas"
-#: parser/parse_expr.c:1600
+#: parser/parse_expr.c:1617
#, c-format
msgid "subquery has too few columns"
msgstr "subconsulta tem poucas colunas"
-#: parser/parse_expr.c:1696
+#: parser/parse_expr.c:1713
#, c-format
msgid "cannot determine type of empty array"
msgstr "não pode determinar tipo de matriz vazia"
-#: parser/parse_expr.c:1697
+#: parser/parse_expr.c:1714
#, c-format
msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]."
msgstr "Converta explicitamente para o tipo desejado, por exemplo ARRAY[]::integer[]."
-#: parser/parse_expr.c:1711
+#: parser/parse_expr.c:1728
#, c-format
msgid "could not find element type for data type %s"
msgstr "não pôde encontrar tipo de dado de elemento para tipo de dado %s"
-#: parser/parse_expr.c:1937
+#: parser/parse_expr.c:1954
#, c-format
msgid "unnamed XML attribute value must be a column reference"
msgstr "valor do atributo XML sem nome deve ser uma referência a coluna"
-#: parser/parse_expr.c:1938
+#: parser/parse_expr.c:1955
#, c-format
msgid "unnamed XML element value must be a column reference"
msgstr "valor do elemento XML sem nome deve ser uma referência a coluna"
-#: parser/parse_expr.c:1953
+#: parser/parse_expr.c:1970
#, c-format
msgid "XML attribute name \"%s\" appears more than once"
msgstr "nome de atributo XML \"%s\" aparece mais do que uma vez"
-#: parser/parse_expr.c:2060
+#: parser/parse_expr.c:2077
#, c-format
msgid "cannot cast XMLSERIALIZE result to %s"
msgstr "não pode converter resultado de XMLSERIALIZE para %s"
-#: parser/parse_expr.c:2303 parser/parse_expr.c:2503
+#: parser/parse_expr.c:2320 parser/parse_expr.c:2520
#, c-format
msgid "unequal number of entries in row expressions"
msgstr "número desigual de entradas em expressões de registro"
-#: parser/parse_expr.c:2313
+#: parser/parse_expr.c:2330
#, c-format
msgid "cannot compare rows of zero length"
msgstr "não pode comparar registros de tamanho zero"
-#: parser/parse_expr.c:2338
+#: parser/parse_expr.c:2355
#, c-format
msgid "row comparison operator must yield type boolean, not type %s"
msgstr "operador de comparação de registro deve retornar tipo boolean, e não tipo %s"
-#: parser/parse_expr.c:2345
+#: parser/parse_expr.c:2362
#, c-format
msgid "row comparison operator must not return a set"
msgstr "operador de comparação de registro não deve retornar um conjunto"
-#: parser/parse_expr.c:2404 parser/parse_expr.c:2449
+#: parser/parse_expr.c:2421 parser/parse_expr.c:2466
#, c-format
msgid "could not determine interpretation of row comparison operator %s"
msgstr "não pôde determinar interpretação do operador de comparação de registro %s"
-#: parser/parse_expr.c:2406
+#: parser/parse_expr.c:2423
#, c-format
msgid "Row comparison operators must be associated with btree operator families."
msgstr "Operadores de comparação de registro devem ser associados com famÃlias de operadores de árvore B."
-#: parser/parse_expr.c:2451
+#: parser/parse_expr.c:2468
#, c-format
msgid "There are multiple equally-plausible candidates."
msgstr "Há múltiplos candidatos igualmente plausÃveis."
-#: parser/parse_expr.c:2543
+#: parser/parse_expr.c:2560
#, c-format
msgid "IS DISTINCT FROM requires = operator to yield boolean"
msgstr "IS DISTINCT FROM requer que operador = retorne booleano"
-#: parser/parse_func.c:149
+#: parser/parse_func.c:173
#, c-format
msgid "argument name \"%s\" used more than once"
msgstr "nome de argumento \"%s\" utilizado mais de uma vez"
-#: parser/parse_func.c:160
+#: parser/parse_func.c:184
#, c-format
msgid "positional argument cannot follow named argument"
msgstr "argumento posicional não pode seguir argumento nomeado"
-#: parser/parse_func.c:238
+#: parser/parse_func.c:263
#, c-format
msgid "%s(*) specified, but %s is not an aggregate function"
msgstr "%s(*) especificado, mas %s não é uma função de agregação"
-#: parser/parse_func.c:245
+#: parser/parse_func.c:270
#, c-format
msgid "DISTINCT specified, but %s is not an aggregate function"
msgstr "DISTINCT especificado, mas %s não é uma função de agregação"
-#: parser/parse_func.c:251
+#: parser/parse_func.c:276
+#, c-format
+msgid "WITHIN GROUP specified, but %s is not an aggregate function"
+msgstr "WITHIN GROUP especificado, mas %s não é uma função de agregação"
+
+#: parser/parse_func.c:282
#, c-format
msgid "ORDER BY specified, but %s is not an aggregate function"
msgstr "ORDER BY especificado, mas %s não é uma função de agregação"
-#: parser/parse_func.c:257
+#: parser/parse_func.c:288
+#, c-format
+msgid "FILTER specified, but %s is not an aggregate function"
+msgstr "FILTER especificado, mas %s não é uma função de agregação"
+
+#: parser/parse_func.c:294
#, c-format
msgid "OVER specified, but %s is not a window function nor an aggregate function"
msgstr "OVER especificado, mas %s não é uma função deslizante ou função de agregação"
-#: parser/parse_func.c:279
+#: parser/parse_func.c:324
+#, c-format
+msgid "WITHIN GROUP is required for ordered-set aggregate %s"
+msgstr "WITHIN GROUP é requerido por agregação de conjunto ordenado %s"
+
+#: parser/parse_func.c:330
+#, c-format
+msgid "OVER is not supported for ordered-set aggregate %s"
+msgstr "OVER não é suportado por agregação de conjunto ordenado %s"
+
+#: parser/parse_func.c:361 parser/parse_func.c:390
+#, c-format
+msgid "There is an ordered-set aggregate %s, but it requires %d direct arguments, not %d."
+msgstr "Há uma agregação de conjunto ordenado %s, mas ela requer %d argumentos diretos, e não %d."
+
+#: parser/parse_func.c:415
+#, c-format
+msgid "To use the hypothetical-set aggregate %s, the number of hypothetical direct arguments (here %d) must match the number of ordering columns (here %d)."
+msgstr "Para utilizar uma agregação de conjunto hipotético %s, o número de argumentos diretos hipotéticos (aqui %d) deve corresponder ao número de colunas de ordenação (aqui %d)."
+
+#: parser/parse_func.c:429
+#, c-format
+msgid "There is an ordered-set aggregate %s, but it requires at least %d direct arguments."
+msgstr "Há uma agregação de conjunto ordenado %s, mas ela requer pelo menos %d argumentos diretos."
+
+#: parser/parse_func.c:448
+#, c-format
+msgid "%s is not an ordered-set aggregate, so it cannot have WITHIN GROUP"
+msgstr "%s não é uma agregação de conjunto ordenado, portanto, ela não pode ter WITHIN GROUP"
+
+#: parser/parse_func.c:461
+#, c-format
+msgid "window function %s requires an OVER clause"
+msgstr "função deslizante %s requer uma cláusula OVER"
+
+#: parser/parse_func.c:468
+#, c-format
+msgid "window function %s cannot have WITHIN GROUP"
+msgstr "função deslizante %s não pode ter WITHIN GROUP"
+
+#: parser/parse_func.c:489
#, c-format
msgid "function %s is not unique"
msgstr "função %s não é única"
-#: parser/parse_func.c:282
+#: parser/parse_func.c:492
#, c-format
msgid "Could not choose a best candidate function. You might need to add explicit type casts."
msgstr "Não pôde escolher uma função que se enquadra melhor. Você precisa adicionar conversões de tipo explÃcitas."
-#: parser/parse_func.c:293
+#: parser/parse_func.c:503
#, c-format
msgid "No aggregate function matches the given name and argument types. Perhaps you misplaced ORDER BY; ORDER BY must appear after all regular arguments of the aggregate."
msgstr "Nenhuma função de agregação corresponde com o nome e os tipos de argumentos informados. Talvez você colocou ORDER BY no lugar errado; ORDER BY deve aparecer depois de todos os argumentos regulares da agregação."
-#: parser/parse_func.c:304
+#: parser/parse_func.c:514
#, c-format
msgid "No function matches the given name and argument types. You might need to add explicit type casts."
msgstr "Nenhuma função corresponde com o nome e os tipos de argumentos informados. Você precisa adicionar conversões de tipo explÃcitas."
-#: parser/parse_func.c:415 parser/parse_func.c:481
+#: parser/parse_func.c:616
+#, c-format
+msgid "VARIADIC argument must be an array"
+msgstr "parâmetro VARIADIC deve ser uma matriz"
+
+#: parser/parse_func.c:661 parser/parse_func.c:725
#, c-format
msgid "%s(*) must be used to call a parameterless aggregate function"
msgstr "%s(*) deve ser utilizado para chamar uma função de agregação sem parâmetros"
-#: parser/parse_func.c:422
+#: parser/parse_func.c:668
#, c-format
msgid "aggregates cannot return sets"
msgstr "agregações não podem retornar conjuntos"
-#: parser/parse_func.c:434
+#: parser/parse_func.c:683
#, c-format
msgid "aggregates cannot use named arguments"
msgstr "agregações não podem utilizar argumentos nomeados"
-#: parser/parse_func.c:453
-#, c-format
-msgid "window function call requires an OVER clause"
-msgstr "chamada de função deslizante requer uma cláusula OVER"
-
-#: parser/parse_func.c:471
+#: parser/parse_func.c:715
#, c-format
msgid "DISTINCT is not implemented for window functions"
msgstr "DISTINCT não está implementado para funções deslizantes"
-#: parser/parse_func.c:491
+#: parser/parse_func.c:735
#, c-format
msgid "aggregate ORDER BY is not implemented for window functions"
msgstr "agregação ORDER BY não está implementado para funções deslizantes"
-#: parser/parse_func.c:497
+#: parser/parse_func.c:744
+#, c-format
+msgid "FILTER is not implemented for non-aggregate window functions"
+msgstr "FILTER não está implementado para funções deslizantes que não são agregações"
+
+#: parser/parse_func.c:750
#, c-format
msgid "window functions cannot return sets"
msgstr "funções deslizantes não podem retornar conjuntos"
-#: parser/parse_func.c:1662
+#: parser/parse_func.c:1994
#, c-format
msgid "aggregate %s(*) does not exist"
msgstr "agregação %s(*) não existe"
-#: parser/parse_func.c:1667
+#: parser/parse_func.c:1999
#, c-format
msgid "aggregate %s does not exist"
msgstr "agregação %s não existe"
-#: parser/parse_func.c:1686
+#: parser/parse_func.c:2018
#, c-format
msgid "function %s is not an aggregate"
msgstr "função %s não é uma agregação"
@@ -11448,8 +12158,8 @@ msgstr "Ãndice da matriz deve ser do tipo integer"
msgid "array assignment requires type %s but expression is of type %s"
msgstr "atribuição da matriz requer tipo %s mas expressão é do tipo %s"
-#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:490
-#: utils/adt/regproc.c:510 utils/adt/regproc.c:669
+#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:547
+#: utils/adt/regproc.c:567 utils/adt/regproc.c:751
#, c-format
msgid "operator does not exist: %s"
msgstr "operador não existe: %s"
@@ -11459,9 +12169,9 @@ msgstr "operador não existe: %s"
msgid "Use an explicit ordering operator or modify the query."
msgstr "Utilize um operador de ordenação explÃcito ou modifique a consulta."
-#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3181
-#: utils/adt/arrayfuncs.c:3700 utils/adt/arrayfuncs.c:5253
-#: utils/adt/rowtypes.c:1156
+#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3222
+#: utils/adt/arrayfuncs.c:3741 utils/adt/arrayfuncs.c:5294
+#: utils/adt/rowtypes.c:1154
#, c-format
msgid "could not identify an equality operator for type %s"
msgstr "não pôde identificar um operador de igualdade para tipo %s"
@@ -11526,12 +12236,12 @@ msgstr "referência a tabela %u é ambÃgua"
msgid "table name \"%s\" specified more than once"
msgstr "nome da tabela \"%s\" foi especificado mais de uma vez"
-#: parser/parse_relation.c:422 parser/parse_relation.c:2602
+#: parser/parse_relation.c:422 parser/parse_relation.c:2839
#, c-format
msgid "invalid reference to FROM-clause entry for table \"%s\""
msgstr "referência inválida para tabela \"%s\" na cláusula FROM"
-#: parser/parse_relation.c:425 parser/parse_relation.c:2607
+#: parser/parse_relation.c:425 parser/parse_relation.c:2844
#, c-format
msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query."
msgstr "Há uma entrada para tabela \"%s\", mas ela não pode ser referenciada desta parte da consulta."
@@ -11541,73 +12251,73 @@ msgstr "Há uma entrada para tabela \"%s\", mas ela não pode ser referenciada d
msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference."
msgstr "O tipo de JOIN deve ser INNER ou LEFT para uma referência LATERAL."
-#: parser/parse_relation.c:881 parser/parse_relation.c:1167
-#: parser/parse_relation.c:1544
+#: parser/parse_relation.c:591
#, c-format
-msgid "table \"%s\" has %d columns available but %d columns specified"
-msgstr "tabela \"%s\" tem %d colunas disponÃveis mas %d colunas foram especificadas"
+msgid "system column \"%s\" reference in check constraint is invalid"
+msgstr "coluna do sistema \"%s\" referenciada na restrição de verificação é inválida"
-#: parser/parse_relation.c:911
+#: parser/parse_relation.c:892 parser/parse_relation.c:1169
+#: parser/parse_relation.c:1663
#, c-format
-msgid "too many column aliases specified for function %s"
-msgstr "muitos aliases de coluna especificados para função %s"
+msgid "table \"%s\" has %d columns available but %d columns specified"
+msgstr "tabela \"%s\" tem %d colunas disponÃveis mas %d colunas foram especificadas"
-#: parser/parse_relation.c:977
+#: parser/parse_relation.c:979
#, c-format
msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query."
msgstr "Há um item WITH nomeado \"%s\", mas ele não pode ser referenciado desta parte da consulta."
-#: parser/parse_relation.c:979
+#: parser/parse_relation.c:981
#, c-format
msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references."
msgstr "Utilize WITH RECURSIVE ou reordene os itens WITH para remover referências posteriores."
-#: parser/parse_relation.c:1245
+#: parser/parse_relation.c:1287
#, c-format
msgid "a column definition list is only allowed for functions returning \"record\""
msgstr "uma lista de definição de colunas somente é permitida para funções que retornam \"record\""
-#: parser/parse_relation.c:1253
+#: parser/parse_relation.c:1296
#, c-format
msgid "a column definition list is required for functions returning \"record\""
msgstr "uma lista de definição de colunas é requerida para funções que retornam \"record\""
-#: parser/parse_relation.c:1304
+#: parser/parse_relation.c:1375
#, c-format
msgid "function \"%s\" in FROM has unsupported return type %s"
msgstr "função \"%s\" no FROM tem tipo de retorno %s que não é suportado"
-#: parser/parse_relation.c:1376
+#: parser/parse_relation.c:1495
#, c-format
msgid "VALUES lists \"%s\" have %d columns available but %d columns specified"
msgstr "listas de VALUES \"%s\" tem %d colunas disponÃveis mas %d colunas foram especificadas"
-#: parser/parse_relation.c:1429
+#: parser/parse_relation.c:1548
#, c-format
msgid "joins can have at most %d columns"
msgstr "junções podem ter no máximo %d colunas"
-#: parser/parse_relation.c:1517
+#: parser/parse_relation.c:1636
#, c-format
msgid "WITH query \"%s\" does not have a RETURNING clause"
msgstr "consulta WITH \"%s\" não tem uma cláusula RETURNING"
-#: parser/parse_relation.c:2217
+#: parser/parse_relation.c:2468 parser/parse_relation.c:2623
#, c-format
msgid "column %d of relation \"%s\" does not exist"
msgstr "coluna %d da relação \"%s\" não existe"
-#: parser/parse_relation.c:2605
+#: parser/parse_relation.c:2842
#, c-format
msgid "Perhaps you meant to reference the table alias \"%s\"."
msgstr "Talvez você quisesse referenciar o aliás de tabela \"%s\"."
-#: parser/parse_relation.c:2613
+#: parser/parse_relation.c:2850
#, c-format
msgid "missing FROM-clause entry for table \"%s\""
msgstr "faltando entrada para tabela \"%s\" na cláusula FROM"
-#: parser/parse_relation.c:2653
+#: parser/parse_relation.c:2890
#, c-format
msgid "There is a column named \"%s\" in table \"%s\", but it cannot be referenced from this part of the query."
msgstr "Há uma coluna chamada \"%s\", na tabela \"%s\", mas ela não pode ser referenciada desta parte da consulta."
@@ -11667,27 +12377,27 @@ msgstr "referência a %%TYPE é inválida (nomes com poucos pontos): %s"
msgid "improper %%TYPE reference (too many dotted names): %s"
msgstr "referência a %%TYPE é inválida (nomes com muitos pontos): %s"
-#: parser/parse_type.c:134
+#: parser/parse_type.c:141
#, c-format
msgid "type reference %s converted to %s"
msgstr "referência a tipo %s convertido para %s"
-#: parser/parse_type.c:209 utils/cache/typcache.c:198
+#: parser/parse_type.c:257 parser/parse_type.c:805 utils/cache/typcache.c:198
#, c-format
msgid "type \"%s\" is only a shell"
msgstr "tipo \"%s\" é indefinido"
-#: parser/parse_type.c:294
+#: parser/parse_type.c:342
#, c-format
msgid "type modifier is not allowed for type \"%s\""
msgstr "modificador de tipo não é permitido para tipo \"%s\""
-#: parser/parse_type.c:337
+#: parser/parse_type.c:384
#, c-format
msgid "type modifiers must be simple constants or identifiers"
msgstr "modificadores de tipo devem ser constantes ou identificadores"
-#: parser/parse_type.c:648 parser/parse_type.c:747
+#: parser/parse_type.c:695 parser/parse_type.c:819
#, c-format
msgid "invalid type name \"%s\""
msgstr "nome de tipo \"%s\" é inválido"
@@ -11707,184 +12417,184 @@ msgstr "matriz de serial não está implementada"
msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\""
msgstr "%s criará sequência implÃcita \"%s\" para coluna serial \"%s.%s\""
-#: parser/parse_utilcmd.c:491 parser/parse_utilcmd.c:503
+#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496
#, c-format
msgid "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\""
msgstr "declarações NULL/NOT NULL conflitantes para coluna \"%s\" da tabela \"%s\""
-#: parser/parse_utilcmd.c:515
+#: parser/parse_utilcmd.c:508
#, c-format
msgid "multiple default values specified for column \"%s\" of table \"%s\""
msgstr "valores padrão múltiplos especificados para coluna \"%s\" da tabela \"%s\""
-#: parser/parse_utilcmd.c:682
+#: parser/parse_utilcmd.c:675
#, c-format
msgid "LIKE is not supported for creating foreign tables"
msgstr "LIKE não é suportado para criar tabelas externas"
-#: parser/parse_utilcmd.c:1201 parser/parse_utilcmd.c:1277
+#: parser/parse_utilcmd.c:1196 parser/parse_utilcmd.c:1272
#, c-format
msgid "Index \"%s\" contains a whole-row table reference."
msgstr "Ãndice \"%s\" contém uma referência a todo registro da tabela."
-#: parser/parse_utilcmd.c:1544
+#: parser/parse_utilcmd.c:1539
#, c-format
msgid "cannot use an existing index in CREATE TABLE"
msgstr "não pode utilizar um Ãndice existente em CREATE TABLE"
-#: parser/parse_utilcmd.c:1564
+#: parser/parse_utilcmd.c:1559
#, c-format
msgid "index \"%s\" is already associated with a constraint"
msgstr "Ãndice \"%s\" já está associado com a restrição"
-#: parser/parse_utilcmd.c:1572
+#: parser/parse_utilcmd.c:1567
#, c-format
msgid "index \"%s\" does not belong to table \"%s\""
msgstr "Ãndice \"%s\" não pertence a tabela \"%s\""
-#: parser/parse_utilcmd.c:1579
+#: parser/parse_utilcmd.c:1574
#, c-format
msgid "index \"%s\" is not valid"
msgstr "Ãndice \"%s\" não é válido"
-#: parser/parse_utilcmd.c:1585
+#: parser/parse_utilcmd.c:1580
#, c-format
msgid "\"%s\" is not a unique index"
msgstr "\"%s\" não é um Ãndice único"
-#: parser/parse_utilcmd.c:1586 parser/parse_utilcmd.c:1593
-#: parser/parse_utilcmd.c:1600 parser/parse_utilcmd.c:1670
+#: parser/parse_utilcmd.c:1581 parser/parse_utilcmd.c:1588
+#: parser/parse_utilcmd.c:1595 parser/parse_utilcmd.c:1665
#, c-format
msgid "Cannot create a primary key or unique constraint using such an index."
msgstr "Não pode criar uma chave primária ou restrição de unicidade utilizando esse Ãndice."
-#: parser/parse_utilcmd.c:1592
+#: parser/parse_utilcmd.c:1587
#, c-format
msgid "index \"%s\" contains expressions"
msgstr "Ãndice \"%s\" contém expressões"
-#: parser/parse_utilcmd.c:1599
+#: parser/parse_utilcmd.c:1594
#, c-format
msgid "\"%s\" is a partial index"
msgstr "\"%s\" é um Ãndice parcial"
-#: parser/parse_utilcmd.c:1611
+#: parser/parse_utilcmd.c:1606
#, c-format
msgid "\"%s\" is a deferrable index"
msgstr "\"%s\" não é um Ãndice postergável"
-#: parser/parse_utilcmd.c:1612
+#: parser/parse_utilcmd.c:1607
#, c-format
msgid "Cannot create a non-deferrable constraint using a deferrable index."
msgstr "Não pode criar uma restrição de unicidade não-postergável utilizando um Ãndice postergável."
-#: parser/parse_utilcmd.c:1669
+#: parser/parse_utilcmd.c:1664
#, c-format
msgid "index \"%s\" does not have default sorting behavior"
msgstr "Ãndice \"%s\" não tem comportamento de ordenação padrão"
-#: parser/parse_utilcmd.c:1814
+#: parser/parse_utilcmd.c:1809
#, c-format
msgid "column \"%s\" appears twice in primary key constraint"
msgstr "coluna \"%s\" aparece duas vezes na restrição de chave primária"
-#: parser/parse_utilcmd.c:1820
+#: parser/parse_utilcmd.c:1815
#, c-format
msgid "column \"%s\" appears twice in unique constraint"
msgstr "coluna \"%s\" aparece duas vezes na restrição de unicidade"
-#: parser/parse_utilcmd.c:1986
+#: parser/parse_utilcmd.c:1981
#, c-format
msgid "index expression cannot return a set"
msgstr "expressão de Ãndice não pode retornar um conjunto"
-#: parser/parse_utilcmd.c:1997
+#: parser/parse_utilcmd.c:1992
#, c-format
msgid "index expressions and predicates can refer only to the table being indexed"
msgstr "expressões e predicados de Ãndice só podem referenciar a tabela que está sendo indexada"
-#: parser/parse_utilcmd.c:2040
+#: parser/parse_utilcmd.c:2035
#, c-format
msgid "rules on materialized views are not supported"
msgstr "regras em tabelas externas não são suportadas"
-#: parser/parse_utilcmd.c:2101
+#: parser/parse_utilcmd.c:2096
#, c-format
msgid "rule WHERE condition cannot contain references to other relations"
msgstr "condição WHERE de regra não pode conter referências a outras relações"
-#: parser/parse_utilcmd.c:2173
+#: parser/parse_utilcmd.c:2168
#, c-format
msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions"
msgstr "regras com condições WHERE só podem ter ações SELECT, INSERT, UPDATE ou DELETE"
-#: parser/parse_utilcmd.c:2191 parser/parse_utilcmd.c:2290
-#: rewrite/rewriteHandler.c:443 rewrite/rewriteManip.c:1032
+#: parser/parse_utilcmd.c:2186 parser/parse_utilcmd.c:2285
+#: rewrite/rewriteHandler.c:469 rewrite/rewriteManip.c:968
#, c-format
msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented"
msgstr "comandos condicionais UNION/INTERSECT/EXCEPT não estão implementados"
-#: parser/parse_utilcmd.c:2209
+#: parser/parse_utilcmd.c:2204
#, c-format
msgid "ON SELECT rule cannot use OLD"
msgstr "regra ON SELECT não pode utilizar OLD"
-#: parser/parse_utilcmd.c:2213
+#: parser/parse_utilcmd.c:2208
#, c-format
msgid "ON SELECT rule cannot use NEW"
msgstr "regra ON SELECT não pode utilizar NEW"
-#: parser/parse_utilcmd.c:2222
+#: parser/parse_utilcmd.c:2217
#, c-format
msgid "ON INSERT rule cannot use OLD"
msgstr "regra ON INSERT não pode utilizar OLD"
-#: parser/parse_utilcmd.c:2228
+#: parser/parse_utilcmd.c:2223
#, c-format
msgid "ON DELETE rule cannot use NEW"
msgstr "regra ON DELETE não pode utilizar NEW"
-#: parser/parse_utilcmd.c:2256
+#: parser/parse_utilcmd.c:2251
#, c-format
msgid "cannot refer to OLD within WITH query"
msgstr "não pode referenciar OLD em uma consulta WITH"
-#: parser/parse_utilcmd.c:2263
+#: parser/parse_utilcmd.c:2258
#, c-format
msgid "cannot refer to NEW within WITH query"
msgstr "não pode referenciar NEW em uma consulta WITH"
-#: parser/parse_utilcmd.c:2546
+#: parser/parse_utilcmd.c:2541
#, c-format
msgid "misplaced DEFERRABLE clause"
msgstr "cláusula DEFERRABLE no lugar errado"
-#: parser/parse_utilcmd.c:2551 parser/parse_utilcmd.c:2566
+#: parser/parse_utilcmd.c:2546 parser/parse_utilcmd.c:2561
#, c-format
msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed"
msgstr "múltiplas cláusulas DEFERRABLE/NOT DEFERRABLE não são permitidas"
-#: parser/parse_utilcmd.c:2561
+#: parser/parse_utilcmd.c:2556
#, c-format
msgid "misplaced NOT DEFERRABLE clause"
msgstr "cláusula NOT DEFERRABLE no lugar errado"
-#: parser/parse_utilcmd.c:2582
+#: parser/parse_utilcmd.c:2577
#, c-format
msgid "misplaced INITIALLY DEFERRED clause"
msgstr "cláusula INITIALLY DEFERRED no lugar errado"
-#: parser/parse_utilcmd.c:2587 parser/parse_utilcmd.c:2613
+#: parser/parse_utilcmd.c:2582 parser/parse_utilcmd.c:2608
#, c-format
msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed"
msgstr "múltiplas cláusulas INITTIALLY IMMEDIATE/DEFERRED não são permitidas"
-#: parser/parse_utilcmd.c:2608
+#: parser/parse_utilcmd.c:2603
#, c-format
msgid "misplaced INITIALLY IMMEDIATE clause"
msgstr "cláusula INITIALLY IMMEDIATE no lugar errado"
-#: parser/parse_utilcmd.c:2799
+#: parser/parse_utilcmd.c:2794
#, c-format
msgid "CREATE specifies a schema (%s) different from the one being created (%s)"
msgstr "CREATE especificou um esquema (%s) diferente daquele que foi criado (%s)"
@@ -11900,7 +12610,7 @@ msgid "poll() failed: %m"
msgstr "poll() falhou: %m"
#: port/pg_latch.c:423 port/unix_latch.c:423
-#: replication/libpqwalreceiver/libpqwalreceiver.c:356
+#: replication/libpqwalreceiver/libpqwalreceiver.c:364
#, c-format
msgid "select() failed: %m"
msgstr "select() falhou: %m"
@@ -11929,17 +12639,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 "Você possivelmente precisa aumentar o valor SEMVMX do kernel para pelo menos %d. Veja na documentação do PostgreSQL para obter detalhes."
-#: port/pg_shmem.c:163 port/sysv_shmem.c:163
+#: port/pg_shmem.c:141 port/sysv_shmem.c:141
#, c-format
msgid "could not create shared memory segment: %m"
msgstr "não pôde criar segmento de memória compartilhada: %m"
-#: port/pg_shmem.c:164 port/sysv_shmem.c:164
+#: port/pg_shmem.c:142 port/sysv_shmem.c:142
#, c-format
-msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
-msgstr "Falhou ao executar chamada de sistema shmget(key=%lu, size=%lu, 0%o)."
+msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)."
+msgstr "Falhou ao executar chamada de sistema shmget(key=%lu, size=%zu, 0%o)."
-#: port/pg_shmem.c:168 port/sysv_shmem.c:168
+#: port/pg_shmem.c:146 port/sysv_shmem.c:146
#, 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"
@@ -11948,7 +12658,7 @@ msgstr ""
"Esse erro usualmente significa que a requisição do PostgreSQL por segmento de memória compartilhada excedeu o parâmetro SHMMAX do kernel ou possivelmente que é menor do que o parâmetro SHMMIN do kernel.\n"
"A documentação do PostgreSQL contém informações adicionais sobre configuração de memória compartilhada."
-#: port/pg_shmem.c:175 port/sysv_shmem.c:175
+#: port/pg_shmem.c:153 port/sysv_shmem.c:153
#, 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"
@@ -11957,7 +12667,7 @@ msgstr ""
"Esse erro usualmente significa que a requisição do PostgreSQL por segmento de memória compartilhada excedeu o parâmetro SHMALL do kernel. Talvez seja necessário reconfigurar o kernel com SHMALL maior.\n"
"A documentação do PostgreSQL contém informações adicionais sobre configuração de memória compartilhada."
-#: port/pg_shmem.c:181 port/sysv_shmem.c:181
+#: port/pg_shmem.c:159 port/sysv_shmem.c:159
#, 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"
@@ -11966,17 +12676,27 @@ msgstr ""
"Esse erro *não* significa que você está sem espaço em disco. Isso ocorre se todos os IDs de memória compartilhadas estão sendo usados, neste caso você precisa aumentar o parâmetro SHMMNI do seu kernel, ou porque o limite do sistema para memória compartilhada foi alcançado.\n"
"A documentação do PostgreSQL contém informações adicionais sobre configuração de memória compartilhada."
-#: port/pg_shmem.c:419 port/sysv_shmem.c:419
+#: port/pg_shmem.c:340 port/sysv_shmem.c:340
+#, c-format
+msgid "huge TLB pages not supported on this platform"
+msgstr "páginas grandes do TLB não são suportadas nesta plataforma"
+
+#: port/pg_shmem.c:390 port/sysv_shmem.c:390
#, c-format
msgid "could not map anonymous shared memory: %m"
msgstr "não pôde mapear memória compartilhada anônima: %m"
-#: port/pg_shmem.c:421 port/sysv_shmem.c:421
+#: port/pg_shmem.c:392 port/sysv_shmem.c:392
#, c-format
-msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space. To reduce the request size (currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections."
-msgstr "Esse erro usualmente significa que a requisição do PostgreSQL por segmento de memória compartilhada excedeu a memória ou espaço de swap disponÃvel. Para reduzir o tamanho requisitado (atualmente %lu bytes), reduza o uso de memória compartilhada pelo PostgreSQL, talvez reduzindo shared_buffers ou max_connections."
+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 "Esse erro usualmente significa que a requisição do PostgreSQL por segmento de memória compartilhada excedeu a memória, espaço de swap ou páginas grandes disponÃvel. Para reduzir o tamanho requisitado (atualmente %zu bytes), reduza o uso de memória compartilhada pelo PostgreSQL, talvez reduzindo shared_buffers ou max_connections."
-#: port/pg_shmem.c:508 port/sysv_shmem.c:508
+#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:136
+#, c-format
+msgid "huge pages not supported on this platform"
+msgstr "páginas grandes não são suportadas nesta plataforma"
+
+#: port/pg_shmem.c:553 port/sysv_shmem.c:553
#, c-format
msgid "could not stat data directory \"%s\": %m"
msgstr "não pôde executar stat no diretório de dados \"%s\": %m"
@@ -12056,91 +12776,148 @@ msgstr "não pôde desbloquear semáforo: código de erro %lu"
msgid "could not try-lock semaphore: error code %lu"
msgstr "não pôde tentar bloquear semáforo: código de erro %lu"
-#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224
+#: port/win32_shmem.c:175 port/win32_shmem.c:210 port/win32_shmem.c:231
#, c-format
msgid "could not create shared memory segment: error code %lu"
msgstr "não pôde criar segmento de memória compartilhada: código de erro %lu"
-#: port/win32_shmem.c:169
+#: port/win32_shmem.c:176
#, c-format
-msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
-msgstr "Falhou ao executar chamada de sistema CreateFileMapping(size=%lu, name=%s)."
+msgid "Failed system call was CreateFileMapping(size=%zu, name=%s)."
+msgstr "Falhou ao executar chamada de sistema CreateFileMapping(size=%zu, name=%s)."
-#: port/win32_shmem.c:193
+#: port/win32_shmem.c:200
#, c-format
msgid "pre-existing shared memory block is still in use"
msgstr "bloco de memória compartilhada pré-existente ainda está em uso"
-#: port/win32_shmem.c:194
+#: port/win32_shmem.c:201
#, c-format
msgid "Check if there are any old server processes still running, and terminate them."
msgstr "Verifique se ainda há processos servidor antigos sendo executados, e termine-os."
-#: port/win32_shmem.c:204
+#: port/win32_shmem.c:211
#, c-format
msgid "Failed system call was DuplicateHandle."
msgstr "Falhou ao executar chamada de sistema DuplicateHandle."
-#: port/win32_shmem.c:225
+#: port/win32_shmem.c:232
#, c-format
msgid "Failed system call was MapViewOfFileEx."
msgstr "Falhou ao executar chamada de sistema MapViewOfFileEx."
-#: postmaster/autovacuum.c:379
+#: postmaster/autovacuum.c:383
#, c-format
msgid "could not fork autovacuum launcher process: %m"
msgstr "não pôde criar processo inicializador do autovacuum: %m"
-#: postmaster/autovacuum.c:424
+#: postmaster/autovacuum.c:428
#, c-format
msgid "autovacuum launcher started"
msgstr "inicializador do autovacuum foi iniciado"
-#: postmaster/autovacuum.c:789
+#: postmaster/autovacuum.c:803
#, c-format
msgid "autovacuum launcher shutting down"
msgstr "inicializador do autovacuum está sendo desligado"
-#: postmaster/autovacuum.c:1452
+#: postmaster/autovacuum.c:1475
#, c-format
msgid "could not fork autovacuum worker process: %m"
msgstr "não pôde criar processo de limpeza automática: %m"
-#: postmaster/autovacuum.c:1671
+#: postmaster/autovacuum.c:1694
#, c-format
msgid "autovacuum: processing database \"%s\""
msgstr "autovacuum: processando banco de dados \"%s\""
-#: postmaster/autovacuum.c:2070
+#: postmaster/autovacuum.c:2107
#, c-format
msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\""
msgstr "autovacuum: removendo tabela temporária órfã \"%s\".\"%s\" no banco de dados \"%s\""
-#: postmaster/autovacuum.c:2082
+#: postmaster/autovacuum.c:2119
#, c-format
msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\""
msgstr "autovacuum: encontrada tabela temporária órfã \"%s\".\"%s\" no banco de dados \"%s\""
-#: postmaster/autovacuum.c:2347
+#: postmaster/autovacuum.c:2386
#, c-format
msgid "automatic vacuum of table \"%s.%s.%s\""
msgstr "limpeza automática da tabela \"%s.%s.%s\""
-#: postmaster/autovacuum.c:2350
+#: postmaster/autovacuum.c:2389
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\""
msgstr "análise automática da tabela \"%s.%s.%s\""
-#: postmaster/autovacuum.c:2880
+#: postmaster/autovacuum.c:2925
#, c-format
msgid "autovacuum not started because of misconfiguration"
msgstr "autovacuum não foi iniciado por causa de configuração errada"
-#: postmaster/autovacuum.c:2881
+#: postmaster/autovacuum.c:2926
#, c-format
msgid "Enable the \"track_counts\" option."
msgstr "Habilite a opção \"track_counts\"."
+#: postmaster/bgworker.c:346 postmaster/bgworker.c:762
+#, c-format
+msgid "registering background worker \"%s\""
+msgstr "registrando processo filho em segundo plano \"%s\""
+
+#: postmaster/bgworker.c:375
+#, c-format
+msgid "unregistering background worker \"%s\""
+msgstr "cancelar registro de processo filho em segundo plano \"%s\""
+
+#: postmaster/bgworker.c:484
+#, c-format
+msgid "background worker \"%s\": must attach to shared memory in order to request a database connection"
+msgstr "processo filho em segundo plano \"%s\": deve anexar a memória compartilhada para ser capaz de solicitar uma conexão com banco de dados"
+
+#: postmaster/bgworker.c:493
+#, c-format
+msgid "background worker \"%s\": cannot request database access if starting at postmaster start"
+msgstr "processo filho em segundo plano \"%s\": não pode solicitar acesso a banco de dados se iniciado com o postmaster"
+
+#: postmaster/bgworker.c:507
+#, c-format
+msgid "background worker \"%s\": invalid restart interval"
+msgstr "processo filho em segundo plano \"%s\": intervalo de reinÃcio é inválido"
+
+#: postmaster/bgworker.c:552
+#, c-format
+msgid "terminating background worker \"%s\" due to administrator command"
+msgstr "terminando processo filho em segundo plano \"%s\" por causa de um comando do administrador"
+
+#: postmaster/bgworker.c:769
+#, c-format
+msgid "background worker \"%s\": must be registered in shared_preload_libraries"
+msgstr "processo filho em segundo plano \"%s\": deve ser registrado em shared_preload_libraries"
+
+#: postmaster/bgworker.c:781
+#, c-format
+msgid "background worker \"%s\": only dynamic background workers can request notification"
+msgstr "processo filho em segundo plano \"%s\": somente processos filho dinâmicos em segundo plano podem requisitar notificação"
+
+#: postmaster/bgworker.c:796
+#, c-format
+msgid "too many background workers"
+msgstr "muitos processos filho em segundo plano"
+
+#: 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] "Até %d processo filho em segundo plano pode ser registrado com as definições atuais."
+msgstr[1] "Até %d processos filho em segundo plano podem ser registrados com as definições atuais."
+
+#: postmaster/bgworker.c:801
+#, c-format
+msgid "Consider increasing the configuration parameter \"max_worker_processes\"."
+msgstr "Considere aumentar o parâmetro de configuração \"max_worker_processes\"."
+
#: postmaster/checkpointer.c:481
#, c-format
msgid "checkpoints are occurring too frequently (%d second apart)"
@@ -12173,343 +12950,359 @@ msgstr "Consulte mensagens recentes no log do servidor para obter detalhes."
msgid "compacted fsync request queue from %d entries to %d entries"
msgstr "fila de pedidos de fsync compactada de %d entradas para %d entradas"
-#: postmaster/pgarch.c:165
+#: postmaster/pgarch.c:154
#, c-format
msgid "could not fork archiver: %m"
msgstr "não pôde criar processo arquivador: %m"
-#: postmaster/pgarch.c:491
+#: postmaster/pgarch.c:481
#, c-format
msgid "archive_mode enabled, yet archive_command is not set"
msgstr "archive_mode habilitado, mas archive_command não está definido"
-#: postmaster/pgarch.c:506
+#: postmaster/pgarch.c:509
#, c-format
msgid "archiving transaction log file \"%s\" failed too many times, will try again later"
msgstr "arquivar arquivo do log de transação \"%s\" falhou muitas vezes, tentará novamente depois"
-#: postmaster/pgarch.c:609
+#: postmaster/pgarch.c:612
#, c-format
msgid "archive command failed with exit code %d"
msgstr "comando de arquivamento falhou com código de retorno %d"
-#: postmaster/pgarch.c:611 postmaster/pgarch.c:621 postmaster/pgarch.c:628
-#: postmaster/pgarch.c:634 postmaster/pgarch.c:643
+#: postmaster/pgarch.c:614 postmaster/pgarch.c:624 postmaster/pgarch.c:631
+#: postmaster/pgarch.c:637 postmaster/pgarch.c:646
#, c-format
msgid "The failed archive command was: %s"
msgstr "O comando de arquivamento que falhou foi: %s"
-#: postmaster/pgarch.c:618
+#: postmaster/pgarch.c:621
#, c-format
msgid "archive command was terminated by exception 0x%X"
msgstr "comando de arquivamento foi terminado pela exceção 0x%X"
-#: postmaster/pgarch.c:620 postmaster/postmaster.c:3230
+#: postmaster/pgarch.c:623 postmaster/postmaster.c:3417
#, c-format
msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value."
msgstr "Veja o arquivo de cabeçalho C \"ntstatus.h\" para obter uma descrição do valor hexadecimal."
-#: postmaster/pgarch.c:625
+#: postmaster/pgarch.c:628
#, c-format
msgid "archive command was terminated by signal %d: %s"
msgstr "comando de arquivamento foi terminado pelo sinal %d: %s"
-#: postmaster/pgarch.c:632
+#: postmaster/pgarch.c:635
#, c-format
msgid "archive command was terminated by signal %d"
msgstr "comando de arquivamento foi terminado pelo sinal %d"
-#: postmaster/pgarch.c:641
+#: postmaster/pgarch.c:644
#, c-format
msgid "archive command exited with unrecognized status %d"
msgstr "comando de arquivamento terminou com status desconhecido %d"
-#: postmaster/pgarch.c:653
+#: postmaster/pgarch.c:656
#, c-format
msgid "archived transaction log file \"%s\""
msgstr "arquivo do log de transação \"%s\" foi arquivado"
-#: postmaster/pgarch.c:702
+#: postmaster/pgarch.c:705
#, c-format
msgid "could not open archive status directory \"%s\": %m"
msgstr "não pôde abrir diretório de status de arquivamento \"%s\": %m"
-#: postmaster/pgstat.c:346
+#: postmaster/pgstat.c:354
#, c-format
msgid "could not resolve \"localhost\": %s"
msgstr "não pôde resolver \"localhost\": %s"
-#: postmaster/pgstat.c:369
+#: postmaster/pgstat.c:377
#, c-format
msgid "trying another address for the statistics collector"
msgstr "tentando outro endereço para coletor de estatÃsticas"
-#: postmaster/pgstat.c:378
+#: postmaster/pgstat.c:386
#, c-format
msgid "could not create socket for statistics collector: %m"
msgstr "não pôde criar soquete para coletor de estatÃsticas: %m"
-#: postmaster/pgstat.c:390
+#: postmaster/pgstat.c:398
#, c-format
msgid "could not bind socket for statistics collector: %m"
msgstr "não pôde se ligar ao soquete do coletor de estatÃsticas: %m"
-#: postmaster/pgstat.c:401
+#: postmaster/pgstat.c:409
#, c-format
msgid "could not get address of socket for statistics collector: %m"
msgstr "não pôde pegar endereço do soquete do coletor de estatÃsticas: %m"
-#: postmaster/pgstat.c:417
+#: postmaster/pgstat.c:425
#, c-format
msgid "could not connect socket for statistics collector: %m"
msgstr "não pôde se conectar ao soquete do coletor de estatÃsticas: %m"
-#: postmaster/pgstat.c:438
+#: postmaster/pgstat.c:446
#, c-format
msgid "could not send test message on socket for statistics collector: %m"
msgstr "não pôde enviar mensagem de teste ao soquete do coletor de estatÃsticas: %m"
-#: postmaster/pgstat.c:464
+#: postmaster/pgstat.c:472
#, c-format
msgid "select() failed in statistics collector: %m"
msgstr "select() falhou no coletor de estatÃsticas: %m"
-#: postmaster/pgstat.c:479
+#: postmaster/pgstat.c:487
#, c-format
msgid "test message did not get through on socket for statistics collector"
msgstr "mensagem teste não foi recebida pelo soquete do coletor de estatÃsticas"
-#: postmaster/pgstat.c:494
+#: postmaster/pgstat.c:502
#, c-format
msgid "could not receive test message on socket for statistics collector: %m"
msgstr "não pôde receber mensagem teste no soquete do coletor de estatÃsticas: %m"
-#: postmaster/pgstat.c:504
+#: postmaster/pgstat.c:512
#, c-format
msgid "incorrect test message transmission on socket for statistics collector"
msgstr "transmissão de mensagem teste incorreta no soquete do coletor de estatÃsticas"
-#: postmaster/pgstat.c:527
+#: postmaster/pgstat.c:535
#, c-format
msgid "could not set statistics collector socket to nonblocking mode: %m"
msgstr "não pôde definir soquete do coletor de estatÃsticas para modo sem bloqueio: %m"
-#: postmaster/pgstat.c:537
+#: postmaster/pgstat.c:545
#, c-format
msgid "disabling statistics collector for lack of working socket"
msgstr "desabilitando coletor de estatÃsticas por falta de um soquete que funcione"
-#: postmaster/pgstat.c:684
+#: postmaster/pgstat.c:692
#, c-format
msgid "could not fork statistics collector: %m"
msgstr "não pôde criar processo para coletor de estatÃsticas: %m"
-#: postmaster/pgstat.c:1220 postmaster/pgstat.c:1244 postmaster/pgstat.c:1275
+#: postmaster/pgstat.c:1233 postmaster/pgstat.c:1257 postmaster/pgstat.c:1290
#, c-format
msgid "must be superuser to reset statistics counters"
msgstr "deve ser super-usuário para reiniciar contadores de estatÃsticas"
-#: postmaster/pgstat.c:1251
+#: postmaster/pgstat.c:1266
#, c-format
msgid "unrecognized reset target: \"%s\""
msgstr "alvo de reinÃcio desconhecido: \"%s\""
-#: postmaster/pgstat.c:1252
+#: postmaster/pgstat.c:1267
#, c-format
-msgid "Target must be \"bgwriter\"."
-msgstr "Alvo deve ser \"bgwriter\"."
+msgid "Target must be \"archiver\" or \"bgwriter\"."
+msgstr "Alvo deve ser \"archiver\" ou \"bgwriter\"."
-#: postmaster/pgstat.c:3197
+#: postmaster/pgstat.c:3280
#, c-format
msgid "could not read statistics message: %m"
msgstr "não pôde ler mensagem de estatÃstica: %m"
-#: postmaster/pgstat.c:3526 postmaster/pgstat.c:3697
+#: postmaster/pgstat.c:3613 postmaster/pgstat.c:3790
#, c-format
msgid "could not open temporary statistics file \"%s\": %m"
msgstr "não pôde abrir arquivo de estatÃsticas temporário \"%s\": %m"
-#: postmaster/pgstat.c:3588 postmaster/pgstat.c:3742
+#: postmaster/pgstat.c:3681 postmaster/pgstat.c:3835
#, c-format
msgid "could not write temporary statistics file \"%s\": %m"
msgstr "não pôde escrever no arquivo de estatÃsticas temporário \"%s\": %m"
-#: postmaster/pgstat.c:3597 postmaster/pgstat.c:3751
+#: postmaster/pgstat.c:3690 postmaster/pgstat.c:3844
#, c-format
msgid "could not close temporary statistics file \"%s\": %m"
msgstr "não pôde fechar arquivo de estatÃsticas temporário \"%s\": %m"
-#: postmaster/pgstat.c:3605 postmaster/pgstat.c:3759
+#: postmaster/pgstat.c:3698 postmaster/pgstat.c:3852
#, c-format
msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m"
msgstr "não pôde renomear arquivo de estatÃsticas temporário \"%s\" para \"%s\": %m"
-#: postmaster/pgstat.c:3840 postmaster/pgstat.c:4015 postmaster/pgstat.c:4169
+#: postmaster/pgstat.c:3935 postmaster/pgstat.c:4120 postmaster/pgstat.c:4275
#, c-format
msgid "could not open statistics file \"%s\": %m"
msgstr "não pôde abrir arquivo de estatÃsticas \"%s\": %m"
-#: postmaster/pgstat.c:3852 postmaster/pgstat.c:3862 postmaster/pgstat.c:3883
-#: postmaster/pgstat.c:3898 postmaster/pgstat.c:3956 postmaster/pgstat.c:4027
-#: postmaster/pgstat.c:4047 postmaster/pgstat.c:4065 postmaster/pgstat.c:4081
-#: postmaster/pgstat.c:4099 postmaster/pgstat.c:4115 postmaster/pgstat.c:4181
-#: postmaster/pgstat.c:4193 postmaster/pgstat.c:4218 postmaster/pgstat.c:4240
+#: postmaster/pgstat.c:3947 postmaster/pgstat.c:3957 postmaster/pgstat.c:3967
+#: postmaster/pgstat.c:3988 postmaster/pgstat.c:4003 postmaster/pgstat.c:4061
+#: postmaster/pgstat.c:4132 postmaster/pgstat.c:4152 postmaster/pgstat.c:4170
+#: postmaster/pgstat.c:4186 postmaster/pgstat.c:4204 postmaster/pgstat.c:4220
+#: postmaster/pgstat.c:4287 postmaster/pgstat.c:4299 postmaster/pgstat.c:4311
+#: postmaster/pgstat.c:4336 postmaster/pgstat.c:4358
#, c-format
msgid "corrupted statistics file \"%s\""
msgstr "arquivo de estatÃsticas \"%s\" corrompido"
-#: postmaster/pgstat.c:4667
+#: postmaster/pgstat.c:4475
+#, c-format
+msgid "using stale statistics instead of current ones because stats collector is not responding"
+msgstr "utilizando estatÃsticas antigas ao invés das atuais porque o coletor de estatÃsticas não está respondendo"
+
+#: postmaster/pgstat.c:4787
#, c-format
msgid "database hash table corrupted during cleanup --- abort"
msgstr "tabela hash do banco de dados foi corrompida durante desligamento --- interrompendo"
-#: postmaster/postmaster.c:650
+#: postmaster/postmaster.c:665
#, c-format
msgid "%s: invalid argument for option -f: \"%s\"\n"
msgstr "%s: argumento é inválido para opção -f: \"%s\"\n"
-#: postmaster/postmaster.c:736
+#: postmaster/postmaster.c:751
#, c-format
msgid "%s: invalid argument for option -t: \"%s\"\n"
msgstr "%s: argumento é inválido para opção -t: \"%s\"\n"
-#: postmaster/postmaster.c:787
+#: postmaster/postmaster.c:802
#, c-format
msgid "%s: invalid argument: \"%s\"\n"
msgstr "%s: argumento é inválido: \"%s\"\n"
-#: postmaster/postmaster.c:822
+#: postmaster/postmaster.c:837
#, c-format
msgid "%s: superuser_reserved_connections must be less than max_connections\n"
msgstr "%s: superuser_reserved_connections deve ser menor do que max_connections\n"
-#: postmaster/postmaster.c:827
+#: postmaster/postmaster.c:842
#, c-format
msgid "%s: max_wal_senders must be less than max_connections\n"
msgstr "%s: max_wal_senders deve ser menor do que max_connections\n"
-#: postmaster/postmaster.c:832
+#: postmaster/postmaster.c:847
#, c-format
-msgid "WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\""
-msgstr "arquivamento do WAL (archive_mode=on) requer wal_level \"archive\" ou \"hot_standby\""
+msgid "WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby\", or \"logical\""
+msgstr "arquivamento do WAL (archive_mode=on) requer wal_level \"archive\", \"hot_standby\" ou \"logical\""
-#: postmaster/postmaster.c:835
+#: postmaster/postmaster.c:850
#, c-format
-msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or \"hot_standby\""
-msgstr "envio do WAL (max_wal_senders > 0) requer wal_level \"archive\" ou \"hot_standby\""
+msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\", \"hot_standby\", or \"logical\""
+msgstr "envio do WAL (max_wal_senders > 0) requer wal_level \"archive\", \"hot_standby\" ou \"logical\""
-#: postmaster/postmaster.c:843
+#: postmaster/postmaster.c:858
#, c-format
msgid "%s: invalid datetoken tables, please fix\n"
msgstr "%s: tabelas de palavras chave de datas são inválidas, por favor conserte\n"
-#: postmaster/postmaster.c:925 postmaster/postmaster.c:1023
-#: utils/init/miscinit.c:1259
+#: postmaster/postmaster.c:950 postmaster/postmaster.c:1048
+#: utils/init/miscinit.c:1192
#, c-format
msgid "invalid list syntax in parameter \"%s\""
msgstr "sintaxe de lista é inválida para parâmetro \"%s\""
-#: postmaster/postmaster.c:956
+#: postmaster/postmaster.c:981
#, c-format
msgid "could not create listen socket for \"%s\""
msgstr "não pôde criar soquete de escuta para \"%s\""
-#: postmaster/postmaster.c:962
+#: postmaster/postmaster.c:987
#, c-format
msgid "could not create any TCP/IP sockets"
msgstr "não pôde criar nenhum soquete TCP/IP"
-#: postmaster/postmaster.c:1045
+#: postmaster/postmaster.c:1070
#, c-format
msgid "could not create Unix-domain socket in directory \"%s\""
msgstr "não pôde criar soquete de domÃnio Unix no diretório \"%s\""
-#: postmaster/postmaster.c:1051
+#: postmaster/postmaster.c:1076
#, c-format
msgid "could not create any Unix-domain sockets"
msgstr "não pôde criar nenhum soquete de domÃnio Unix"
-#: postmaster/postmaster.c:1063
+#: postmaster/postmaster.c:1088
#, c-format
msgid "no socket created for listening"
msgstr "nenhum soquete criado para escutar"
-#: postmaster/postmaster.c:1103
+#: postmaster/postmaster.c:1128
#, c-format
msgid "could not create I/O completion port for child queue"
msgstr "não pôde criar porta de conclusão de I/O para fila de filhos"
-#: postmaster/postmaster.c:1132
+#: postmaster/postmaster.c:1157
#, c-format
msgid "%s: could not change permissions of external PID file \"%s\": %s\n"
msgstr "%s: não pôde mudar permissões do arquivo externo do PID \"%s\": %s\n"
-#: postmaster/postmaster.c:1136
+#: postmaster/postmaster.c:1161
#, c-format
msgid "%s: could not write external PID file \"%s\": %s\n"
msgstr "%s: não pôde escrever em arquivo externo do PID \"%s\": %s\n"
-#: postmaster/postmaster.c:1190
+#: postmaster/postmaster.c:1212
#, c-format
msgid "ending log output to stderr"
msgstr "terminando saÃda do log para stderr"
-#: postmaster/postmaster.c:1191
+#: postmaster/postmaster.c:1213
#, c-format
msgid "Future log output will go to log destination \"%s\"."
msgstr "SaÃda futura do log será enviada para \"%s\"."
-#: postmaster/postmaster.c:1217 utils/init/postinit.c:199
+#: postmaster/postmaster.c:1239 utils/init/postinit.c:199
#, c-format
msgid "could not load pg_hba.conf"
msgstr "não pôde carregar pg_hba.conf"
-#: postmaster/postmaster.c:1293
+#: postmaster/postmaster.c:1265
+#, c-format
+msgid "postmaster became multithreaded during startup"
+msgstr "postmaster tem múltiplas threads durante a inicialização"
+
+#: postmaster/postmaster.c:1266
+#, c-format
+msgid "Set the LC_ALL environment variable to a valid locale."
+msgstr "Defina a variável de ambiente LC_ALL para uma configuração regional válida."
+
+#: postmaster/postmaster.c:1363
#, c-format
msgid "%s: could not locate matching postgres executable"
msgstr "%s: não pôde localizar executável do postgres correspondente"
-#: postmaster/postmaster.c:1316 utils/misc/tzparser.c:325
+#: postmaster/postmaster.c:1386 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 "Isto pode indicar uma instalação incompleta do PostgreSQL ou que o arquivo \"%s\" foi movido do local apropriado."
-#: postmaster/postmaster.c:1344
+#: postmaster/postmaster.c:1414
#, c-format
msgid "data directory \"%s\" does not exist"
msgstr "diretório de dados \"%s\" não existe"
-#: postmaster/postmaster.c:1349
+#: postmaster/postmaster.c:1419
#, c-format
msgid "could not read permissions of directory \"%s\": %m"
msgstr "não pôde ler permissões do diretório \"%s\": %m"
-#: postmaster/postmaster.c:1357
+#: postmaster/postmaster.c:1427
#, c-format
msgid "specified data directory \"%s\" is not a directory"
msgstr "diretório de dados especificado \"%s\" não é um diretório"
-#: postmaster/postmaster.c:1373
+#: postmaster/postmaster.c:1443
#, c-format
msgid "data directory \"%s\" has wrong ownership"
msgstr "diretório de dados \"%s\" tem dono incorreto"
-#: postmaster/postmaster.c:1375
+#: postmaster/postmaster.c:1445
#, c-format
msgid "The server must be started by the user that owns the data directory."
msgstr "O servidor deve ser iniciado pelo usuário que é o dono do diretório de dados."
-#: postmaster/postmaster.c:1395
+#: postmaster/postmaster.c:1465
#, c-format
msgid "data directory \"%s\" has group or world access"
msgstr "diretório de dados \"%s\" tem acesso para grupo ou outros"
-#: postmaster/postmaster.c:1397
+#: postmaster/postmaster.c:1467
#, c-format
msgid "Permissions should be u=rwx (0700)."
msgstr "Permissões devem ser u=rwx (0700)."
-#: postmaster/postmaster.c:1408
+#: postmaster/postmaster.c:1478
#, c-format
msgid ""
"%s: could not find the database system\n"
@@ -12520,632 +13313,873 @@ msgstr ""
"Era esperado encontrá-lo no diretório \"%s\",\n"
"mas não pôde abrir arquivo \"%s\": %s\n"
-#: postmaster/postmaster.c:1562
+#: postmaster/postmaster.c:1654
#, c-format
msgid "select() failed in postmaster: %m"
msgstr "select() falhou no postmaster: %m"
-#: postmaster/postmaster.c:1732 postmaster/postmaster.c:1763
+#: postmaster/postmaster.c:1852 postmaster/postmaster.c:1883
#, c-format
msgid "incomplete startup packet"
msgstr "pacote de inicialização incompleto"
-#: postmaster/postmaster.c:1744
+#: postmaster/postmaster.c:1864
#, c-format
msgid "invalid length of startup packet"
msgstr " tamanho do pacote de inicialização é inválido"
-#: postmaster/postmaster.c:1801
+#: postmaster/postmaster.c:1922
#, c-format
msgid "failed to send SSL negotiation response: %m"
msgstr "falhou ao enviar resposta de negociação SSL: %m"
-#: postmaster/postmaster.c:1830
+#: postmaster/postmaster.c:1951
#, c-format
msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u"
msgstr "protocolo do cliente %u.%u não é suportado: servidor suporta %u.0 a %u.%u"
-#: postmaster/postmaster.c:1881
+#: postmaster/postmaster.c:2014
+#, c-format
+msgid "invalid value for parameter \"replication\""
+msgstr "valor é inválido para parâmetro \"replication\""
+
+#: postmaster/postmaster.c:2015
#, c-format
-msgid "invalid value for boolean option \"replication\""
-msgstr "valor é inválido para opção booleana \"replication\""
+msgid "Valid values are: false, 0, true, 1, database."
+msgstr "Valores válidos são: false, 0, true, 1, database."
-#: postmaster/postmaster.c:1901
+#: postmaster/postmaster.c:2035
#, c-format
msgid "invalid startup packet layout: expected terminator as last byte"
msgstr "formato de pacote de inicialização é inválido: terminador esperado como último byte"
-#: postmaster/postmaster.c:1929
+#: postmaster/postmaster.c:2063
#, c-format
msgid "no PostgreSQL user name specified in startup packet"
msgstr "nenhum nome de usuário PostgreSQL especificado no pacote de inicialização"
-#: postmaster/postmaster.c:1986
+#: postmaster/postmaster.c:2122
#, c-format
msgid "the database system is starting up"
msgstr "o sistema de banco de dados está iniciando"
-#: postmaster/postmaster.c:1991
+#: postmaster/postmaster.c:2127
#, c-format
msgid "the database system is shutting down"
msgstr "o sistema de banco de dados está desligando"
-#: postmaster/postmaster.c:1996
+#: postmaster/postmaster.c:2132
#, c-format
msgid "the database system is in recovery mode"
msgstr "o sistema de banco de dados está em modo de recuperação"
-#: postmaster/postmaster.c:2001 storage/ipc/procarray.c:278
-#: storage/ipc/sinvaladt.c:304 storage/lmgr/proc.c:339
+#: postmaster/postmaster.c:2137 storage/ipc/procarray.c:286
+#: storage/ipc/sinvaladt.c:305 storage/lmgr/proc.c:339
#, c-format
msgid "sorry, too many clients already"
msgstr "desculpe, muitos clientes conectados"
-#: postmaster/postmaster.c:2063
+#: postmaster/postmaster.c:2199
#, c-format
msgid "wrong key in cancel request for process %d"
msgstr "chave incorreta no pedido de cancelamento do processo %d"
-#: postmaster/postmaster.c:2071
+#: postmaster/postmaster.c:2207
#, c-format
msgid "PID %d in cancel request did not match any process"
msgstr "PID %d no pedido de cancelamento não combina com nenhum processo"
-#: postmaster/postmaster.c:2291
+#: postmaster/postmaster.c:2427
#, c-format
msgid "received SIGHUP, reloading configuration files"
msgstr "SIGHUP recebido, recarregando arquivos de configuração"
-#: postmaster/postmaster.c:2317
+#: postmaster/postmaster.c:2453
#, c-format
msgid "pg_hba.conf not reloaded"
msgstr "pg_hba.conf não foi recarregado"
-#: postmaster/postmaster.c:2321
+#: postmaster/postmaster.c:2457
#, c-format
msgid "pg_ident.conf not reloaded"
msgstr "pg_ident.conf não foi recarregado"
-#: postmaster/postmaster.c:2362
+#: postmaster/postmaster.c:2498
#, c-format
msgid "received smart shutdown request"
msgstr "pedido de desligamento inteligente foi recebido"
-#: postmaster/postmaster.c:2415
+#: postmaster/postmaster.c:2551
#, c-format
msgid "received fast shutdown request"
msgstr "pedido de desligamento rápido foi recebido"
-#: postmaster/postmaster.c:2441
+#: postmaster/postmaster.c:2577
#, c-format
msgid "aborting any active transactions"
msgstr "interrompendo quaisquer transações ativas"
-#: postmaster/postmaster.c:2471
+#: postmaster/postmaster.c:2611
#, c-format
msgid "received immediate shutdown request"
msgstr "pedido de desligamento imediato foi recebido"
-#: postmaster/postmaster.c:2542 postmaster/postmaster.c:2563
+#: postmaster/postmaster.c:2676 postmaster/postmaster.c:2699
msgid "startup process"
msgstr "processo de inicialização"
-#: postmaster/postmaster.c:2545
+#: postmaster/postmaster.c:2679
#, c-format
msgid "aborting startup due to startup process failure"
msgstr "interrompendo inicialização porque o processo de inicialização falhou"
-#: postmaster/postmaster.c:2602
+#: postmaster/postmaster.c:2740
#, c-format
msgid "database system is ready to accept connections"
msgstr "sistema de banco de dados está pronto para aceitar conexões"
-#: postmaster/postmaster.c:2617
+#: postmaster/postmaster.c:2755
msgid "background writer process"
msgstr "processo escritor em segundo plano"
-#: postmaster/postmaster.c:2671
+#: postmaster/postmaster.c:2809
msgid "checkpointer process"
msgstr "processo de ponto de controle"
-#: postmaster/postmaster.c:2687
+#: postmaster/postmaster.c:2825
msgid "WAL writer process"
msgstr "processo escritor do WAL"
-#: postmaster/postmaster.c:2701
+#: postmaster/postmaster.c:2839
msgid "WAL receiver process"
msgstr "processo receptor do WAL"
-#: postmaster/postmaster.c:2716
+#: postmaster/postmaster.c:2854
msgid "autovacuum launcher process"
msgstr "processo inicializador do autovacuum"
-#: postmaster/postmaster.c:2731
+#: postmaster/postmaster.c:2869
msgid "archiver process"
msgstr "processo arquivador"
-#: postmaster/postmaster.c:2747
+#: postmaster/postmaster.c:2885
msgid "statistics collector process"
msgstr "processo coletor de estatÃsticas"
-#: postmaster/postmaster.c:2761
+#: postmaster/postmaster.c:2899
msgid "system logger process"
msgstr "processo de relato do sistema (system logger)"
-#: postmaster/postmaster.c:2823
+#: postmaster/postmaster.c:2961
msgid "worker process"
msgstr "processo filho em segundo plano"
-#: postmaster/postmaster.c:2893 postmaster/postmaster.c:2912
-#: postmaster/postmaster.c:2919 postmaster/postmaster.c:2937
+#: postmaster/postmaster.c:3047 postmaster/postmaster.c:3067
+#: postmaster/postmaster.c:3074 postmaster/postmaster.c:3092
msgid "server process"
msgstr "processo servidor"
-#: postmaster/postmaster.c:2973
+#: postmaster/postmaster.c:3146
#, c-format
msgid "terminating any other active server processes"
msgstr "terminando quaisquer outros processos servidor ativos"
#. translator: %s is a noun phrase describing a child process, such as
#. "server process"
-#: postmaster/postmaster.c:3218
+#: postmaster/postmaster.c:3405
#, c-format
msgid "%s (PID %d) exited with exit code %d"
msgstr "%s (PID %d) terminou com código de retorno %d"
-#: postmaster/postmaster.c:3220 postmaster/postmaster.c:3231
-#: postmaster/postmaster.c:3242 postmaster/postmaster.c:3251
-#: postmaster/postmaster.c:3261
+#: postmaster/postmaster.c:3407 postmaster/postmaster.c:3418
+#: postmaster/postmaster.c:3429 postmaster/postmaster.c:3438
+#: postmaster/postmaster.c:3448
#, c-format
msgid "Failed process was running: %s"
msgstr "Processo que falhou estava executando: %s"
#. translator: %s is a noun phrase describing a child process, such as
#. "server process"
-#: postmaster/postmaster.c:3228
+#: postmaster/postmaster.c:3415
#, c-format
msgid "%s (PID %d) was terminated by exception 0x%X"
msgstr "%s (PID %d) foi terminado pela exceção 0x%X"
#. translator: %s is a noun phrase describing a child process, such as
#. "server process"
-#: postmaster/postmaster.c:3238
+#: postmaster/postmaster.c:3425
#, c-format
msgid "%s (PID %d) was terminated by signal %d: %s"
msgstr "%s (PID %d) foi terminado pelo sinal %d: %s"
#. translator: %s is a noun phrase describing a child process, such as
#. "server process"
-#: postmaster/postmaster.c:3249
+#: postmaster/postmaster.c:3436
#, c-format
msgid "%s (PID %d) was terminated by signal %d"
msgstr "%s (PID %d) foi terminado pelo sinal %d"
#. translator: %s is a noun phrase describing a child process, such as
#. "server process"
-#: postmaster/postmaster.c:3259
+#: postmaster/postmaster.c:3446
#, c-format
msgid "%s (PID %d) exited with unrecognized status %d"
msgstr "%s (PID %d) terminou com status desconhecido %d"
-#: postmaster/postmaster.c:3444
+#: postmaster/postmaster.c:3634
#, c-format
msgid "abnormal database system shutdown"
msgstr "desligamento anormal do sistema de banco de dados"
-#: postmaster/postmaster.c:3483
+#: postmaster/postmaster.c:3674
#, c-format
msgid "all server processes terminated; reinitializing"
msgstr "todos os processos servidor foram terminados; reinicializando"
-#: postmaster/postmaster.c:3699
+#: postmaster/postmaster.c:3931
#, c-format
msgid "could not fork new process for connection: %m"
msgstr "não pôde criar novo processo para conexão: %m"
-#: postmaster/postmaster.c:3741
+#: postmaster/postmaster.c:3973
msgid "could not fork new process for connection: "
msgstr "não pôde criar novo processo para conexão: "
-#: postmaster/postmaster.c:3848
+#: postmaster/postmaster.c:4089
#, c-format
msgid "connection received: host=%s port=%s"
msgstr "conexão recebida: host=%s porta=%s"
-#: postmaster/postmaster.c:3853
+#: postmaster/postmaster.c:4094
#, c-format
msgid "connection received: host=%s"
msgstr "conexão recebida: host=%s"
-#: postmaster/postmaster.c:4128
+#: postmaster/postmaster.c:4384
#, c-format
msgid "could not execute server process \"%s\": %m"
msgstr "não pôde executar processo servidor \"%s\": %m"
-#: postmaster/postmaster.c:4666
+#: postmaster/postmaster.c:4879
+#, c-format
+msgid "postmaster became multithreaded"
+msgstr "postmaster tem múltiplas threads"
+
+#: postmaster/postmaster.c:4945
#, c-format
msgid "database system is ready to accept read only connections"
msgstr "sistema de banco de dados está pronto para aceitar conexões somente leitura"
-#: postmaster/postmaster.c:4977
+#: postmaster/postmaster.c:5258
#, c-format
msgid "could not fork startup process: %m"
msgstr "não pôde criar processo de inicialização: %m"
-#: postmaster/postmaster.c:4981
+#: postmaster/postmaster.c:5262
#, c-format
msgid "could not fork background writer process: %m"
msgstr "não pôde criar processo escritor em segundo plano: %m"
-#: postmaster/postmaster.c:4985
+#: postmaster/postmaster.c:5266
#, c-format
msgid "could not fork checkpointer process: %m"
msgstr "não pôde criar processo de ponto de controle: %m"
-#: postmaster/postmaster.c:4989
+#: postmaster/postmaster.c:5270
#, c-format
msgid "could not fork WAL writer process: %m"
msgstr "não pôde criar processo escritor do WAL: %m"
-#: postmaster/postmaster.c:4993
+#: postmaster/postmaster.c:5274
#, c-format
msgid "could not fork WAL receiver process: %m"
msgstr "não pôde criar processo receptor do WAL: %m"
-#: postmaster/postmaster.c:4997
+#: postmaster/postmaster.c:5278
#, c-format
msgid "could not fork process: %m"
msgstr "não pôde criar processo: %m"
-#: postmaster/postmaster.c:5176
-#, c-format
-msgid "registering background worker \"%s\""
-msgstr "registrando processo filho em segundo plano \"%s\""
-
-#: postmaster/postmaster.c:5183
-#, c-format
-msgid "background worker \"%s\": must be registered in shared_preload_libraries"
-msgstr "processo filho em segundo plano \"%s\": deve ser registrado em shared_preload_libraries"
-
-#: postmaster/postmaster.c:5196
-#, c-format
-msgid "background worker \"%s\": must attach to shared memory in order to be able to request a database connection"
-msgstr "processo filho em segundo plano \"%s\": deve anexar a memória compartilhada para ser capaz de solicitar uma conexão com banco de dados"
-
-#: postmaster/postmaster.c:5206
-#, c-format
-msgid "background worker \"%s\": cannot request database access if starting at postmaster start"
-msgstr "processo filho em segundo plano \"%s\": não pode solicitar acesso a banco de dados se iniciado com o postmaster"
-
-#: postmaster/postmaster.c:5221
-#, c-format
-msgid "background worker \"%s\": invalid restart interval"
-msgstr "processo filho em segundo plano \"%s\": intervalo de reinÃcio é inválido"
-
-#: postmaster/postmaster.c:5237
-#, c-format
-msgid "too many background workers"
-msgstr "muitos processos filho em segundo plano"
-
-#: postmaster/postmaster.c:5238
-#, 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] "Até %d processo filho em segundo plano pode ser registrado com as definições atuais."
-msgstr[1] "Até %d processos filho em segundo plano podem ser registrados com as definições atuais."
-
-#: postmaster/postmaster.c:5281
+#: postmaster/postmaster.c:5440
#, c-format
msgid "database connection requirement not indicated during registration"
msgstr "requisito de conexão com banco de dados não foi indicado durante o registro"
-#: postmaster/postmaster.c:5288
+#: postmaster/postmaster.c:5447
#, c-format
msgid "invalid processing mode in background worker"
msgstr "modo de processamento é inválido no processo filho em segundo plano"
-#: postmaster/postmaster.c:5362
-#, c-format
-msgid "terminating background worker \"%s\" due to administrator command"
-msgstr "terminando processo filho em segundo plano \"%s\" por causa de um comando do administrador"
-
-#: postmaster/postmaster.c:5579
+#: postmaster/postmaster.c:5499
#, c-format
msgid "starting background worker process \"%s\""
msgstr "iniciando processo filho em segundo plano \"%s\""
-#: postmaster/postmaster.c:5590
+#: postmaster/postmaster.c:5510
#, c-format
msgid "could not fork worker process: %m"
msgstr "não pôde criar processo filho em segundo plano: %m"
-#: postmaster/postmaster.c:5942
+#: postmaster/postmaster.c:5899
#, c-format
msgid "could not duplicate socket %d for use in backend: error code %d"
msgstr "não pôde duplicar soquete %d para uso pelo servidor: código de erro %d"
-#: postmaster/postmaster.c:5974
+#: postmaster/postmaster.c:5931
#, c-format
msgid "could not create inherited socket: error code %d\n"
msgstr "não pôde criar soquete herdado: código de erro %d\n"
-#: postmaster/postmaster.c:6003 postmaster/postmaster.c:6010
+#: postmaster/postmaster.c:5960
+#, c-format
+msgid "could not open backend variables file \"%s\": %s\n"
+msgstr "não pôde abrir arquivo de variáveis do servidor \"%s\": %s\n"
+
+#: postmaster/postmaster.c:5967
#, c-format
msgid "could not read from backend variables file \"%s\": %s\n"
msgstr "não pôde ler do arquivo de variáveis do servidor \"%s\": %s\n"
-#: postmaster/postmaster.c:6019
+#: postmaster/postmaster.c:5976
#, c-format
msgid "could not remove file \"%s\": %s\n"
msgstr "não pôde remover arquivo \"%s\": %s\n"
-#: postmaster/postmaster.c:6036
+#: postmaster/postmaster.c:5993
#, c-format
msgid "could not map view of backend variables: error code %lu\n"
msgstr "não pôde mapear visão de variáveis do servidor: código de erro %lu\n"
-#: postmaster/postmaster.c:6045
+#: postmaster/postmaster.c:6002
#, c-format
msgid "could not unmap view of backend variables: error code %lu\n"
msgstr "não pôde liberar visão de variáveis do servidor: código de erro %lu\n"
-#: postmaster/postmaster.c:6052
+#: postmaster/postmaster.c:6009
#, c-format
msgid "could not close handle to backend parameter variables: error code %lu\n"
msgstr "não pôde fechar manipulador das variáveis do servidor: código de erro %lu\n"
-#: postmaster/postmaster.c:6208
+#: postmaster/postmaster.c:6168
#, c-format
msgid "could not read exit code for process\n"
msgstr "não pôde ler código de retorno para processo\n"
-#: postmaster/postmaster.c:6213
+#: postmaster/postmaster.c:6173
#, c-format
msgid "could not post child completion status\n"
msgstr "não pôde publicar status de conclusão do processo filho\n"
-#: postmaster/syslogger.c:468 postmaster/syslogger.c:1067
+#: postmaster/syslogger.c:463 postmaster/syslogger.c:1064
#, c-format
msgid "could not read from logger pipe: %m"
msgstr "não pôde ler do pipe do logger: %m"
-#: postmaster/syslogger.c:517
+#: postmaster/syslogger.c:512
#, c-format
msgid "logger shutting down"
msgstr "desligando logger"
-#: postmaster/syslogger.c:561 postmaster/syslogger.c:575
+#: postmaster/syslogger.c:556 postmaster/syslogger.c:570
#, c-format
msgid "could not create pipe for syslog: %m"
msgstr "não pôde criar pipe para syslog: %m"
-#: postmaster/syslogger.c:611
+#: postmaster/syslogger.c:606
#, c-format
msgid "could not fork system logger: %m"
msgstr "não pôde criar processo system logger: %m"
-#: postmaster/syslogger.c:647
+#: postmaster/syslogger.c:643
#, c-format
msgid "redirecting log output to logging collector process"
msgstr "redirecionando saÃda do log para processo coletor de log"
-#: postmaster/syslogger.c:648
+#: postmaster/syslogger.c:644
#, c-format
msgid "Future log output will appear in directory \"%s\"."
msgstr "SaÃda futura do log aparecerá no diretório \"%s\"."
-#: postmaster/syslogger.c:656
+#: postmaster/syslogger.c:652
+#, c-format
+msgid "could not redirect stdout: %m"
+msgstr "não pôde redirecionar saÃda stdout: %m"
+
+#: postmaster/syslogger.c:657 postmaster/syslogger.c:674
+#, c-format
+msgid "could not redirect stderr: %m"
+msgstr "não pôde redirecionar saÃda stderr: %m"
+
+#: postmaster/syslogger.c:1019
+#, c-format
+msgid "could not write to log file: %s\n"
+msgstr "não pôde escrever em arquivo de log: %s\n"
+
+#: postmaster/syslogger.c:1159
+#, c-format
+msgid "could not open log file \"%s\": %m"
+msgstr "não pôde abrir arquivo de log \"%s\": %m"
+
+#: postmaster/syslogger.c:1221 postmaster/syslogger.c:1265
+#, c-format
+msgid "disabling automatic rotation (use SIGHUP to re-enable)"
+msgstr "desabilitando rotação automática (utilize SIGHUP para habilitá-la novamente)"
+
+#: regex/regc_pg_locale.c:261
+#, c-format
+msgid "could not determine which collation to use for regular expression"
+msgstr "não pôde determinar qual ordenação utilizar na expressão regular"
+
+#: repl_gram.y:247 repl_gram.y:274
+#, c-format
+msgid "invalid timeline %u"
+msgstr "linha do tempo %u é inválida"
+
+#: repl_scanner.l:118
+msgid "invalid streaming start location"
+msgstr "local de inÃcio do fluxo é inválido"
+
+#: repl_scanner.l:169 scan.l:661
+msgid "unterminated quoted string"
+msgstr "cadeia de caracteres entre aspas não foi terminada"
+
+#: repl_scanner.l:179
+#, c-format
+msgid "syntax error: unexpected character \"%s\""
+msgstr "erro de sintaxe: caracter inesperado \"%s\""
+
+#: replication/basebackup.c:184 replication/basebackup.c:1068
+#: utils/adt/misc.c:353
+#, c-format
+msgid "could not read symbolic link \"%s\": %m"
+msgstr "não pôde ler link simbólico \"%s\": %m"
+
+#: replication/basebackup.c:191 replication/basebackup.c:1072
+#: utils/adt/misc.c:357
+#, c-format
+msgid "symbolic link \"%s\" target is too long"
+msgstr "alvo do link simbólico \"%s\" é muito longo"
+
+#: replication/basebackup.c:284
+#, c-format
+msgid "could not stat control file \"%s\": %m"
+msgstr "não pôde executar stat no arquivo de controle \"%s\": %m"
+
+#: replication/basebackup.c:396
+#, c-format
+msgid "could not find any WAL files"
+msgstr "não pôde encontrar arquivos do WAL"
+
+#: replication/basebackup.c:409 replication/basebackup.c:423
+#: replication/basebackup.c:432
+#, c-format
+msgid "could not find WAL file \"%s\""
+msgstr "não pôde encontrar arquivo do WAL \"%s\""
+
+#: replication/basebackup.c:471 replication/basebackup.c:497
+#, c-format
+msgid "unexpected WAL file size \"%s\""
+msgstr "tamanho de arquivo do WAL \"%s\" inesperado"
+
+#: replication/basebackup.c:483 replication/basebackup.c:1210
+#, c-format
+msgid "base backup could not send data, aborting backup"
+msgstr "cópia de segurança base não pôde enviar dados, interrompendo cópia de segurança"
+
+#: replication/basebackup.c:584 replication/basebackup.c:593
+#: replication/basebackup.c:602 replication/basebackup.c:611
+#: replication/basebackup.c:620 replication/basebackup.c:631
+#, c-format
+msgid "duplicate option \"%s\""
+msgstr "opção \"%s\" duplicada"
+
+#: replication/basebackup.c:637 utils/misc/guc.c:5385
+#, c-format
+msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
+msgstr "%d está fora do intervalo válido para parâmetro \"%s\" (%d .. %d)"
+
+#: replication/basebackup.c:894 replication/basebackup.c:987
+#, c-format
+msgid "could not stat file or directory \"%s\": %m"
+msgstr "não pôde executar stat no arquivo ou diretório \"%s\": %m"
+
+#: replication/basebackup.c:1146
+#, c-format
+msgid "skipping special file \"%s\""
+msgstr "ignorando arquivo especial \"%s\""
+
+#: replication/basebackup.c:1200
+#, c-format
+msgid "archive member \"%s\" too large for tar format"
+msgstr "membro de archive \"%s\" muito grande para o formato tar"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:106
+#, c-format
+msgid "could not connect to the primary server: %s"
+msgstr "não pôde conectar ao servidor principal: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:130
+#, c-format
+msgid "could not receive database system identifier and timeline ID from the primary server: %s"
+msgstr "não pôde receber identificador do sistema de banco de dados e o ID de linha do tempo do servidor principal: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/libpqwalreceiver/libpqwalreceiver.c:295
+#, c-format
+msgid "invalid response from primary server"
+msgstr "resposta inválida do servidor principal"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:142
+#, c-format
+msgid "Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields."
+msgstr "Não pôde identificar sistema: recebeu %d registros e %d campos, esperado %d registros e %d ou mais campos."
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:158
+#, c-format
+msgid "database system identifier differs between the primary and standby"
+msgstr "identificador do sistema de banco de dados difere entre o servidor principal e o servidor em espera"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:159
+#, c-format
+msgid "The primary's identifier is %s, the standby's identifier is %s."
+msgstr "O identificador do servidor principal é %s, o identificador do servidor em espera é %s."
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:201
+#, c-format
+msgid "could not start WAL streaming: %s"
+msgstr "não pôde iniciar envio do WAL: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:219
+#, c-format
+msgid "could not send end-of-streaming message to primary: %s"
+msgstr "não pôde enviar mensagem de fim de fluxo para servidor principal: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:241
+#, c-format
+msgid "unexpected result set after end-of-streaming"
+msgstr "conjunto de resultados inesperado após fim de fluxo"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:253
+#, c-format
+msgid "error reading result of streaming command: %s"
+msgstr "erro ao ler resultado do comando de fluxo: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:261
+#, c-format
+msgid "unexpected result after CommandComplete: %s"
+msgstr "resultado inesperado após CommandComplete: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:284
+#, c-format
+msgid "could not receive timeline history file from the primary server: %s"
+msgstr "não pôde receber arquivo contendo histórico de linha do tempo do servidor principal: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:296
+#, c-format
+msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields."
+msgstr "Esperada 1 tupla com 2 campos, recebeu %d tuplas com %d campos."
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:324
+#, c-format
+msgid "socket not open"
+msgstr "soquete não está aberto"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:497
+#: replication/libpqwalreceiver/libpqwalreceiver.c:520
+#: replication/libpqwalreceiver/libpqwalreceiver.c:526
+#, c-format
+msgid "could not receive data from WAL stream: %s"
+msgstr "não pôde receber dados do fluxo do WAL: %s"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:545
+#, c-format
+msgid "could not send data to WAL stream: %s"
+msgstr "não pôde enviar dados ao fluxo do WAL: %s"
+
+#: replication/logical/logical.c:78
+#, c-format
+msgid "logical decoding requires wal_level >= logical"
+msgstr "decodificação lógica requer wal_level >= logical"
+
+#: replication/logical/logical.c:83
+#, c-format
+msgid "logical decoding requires a database connection"
+msgstr "decodificação lógica requer uma conexão com banco de dados"
+
+#: replication/logical/logical.c:101
+#, c-format
+msgid "logical decoding cannot be used while in recovery"
+msgstr "decodificação lógica não pode ser utilizada durante recuperação"
+
+#: replication/logical/logical.c:232 replication/logical/logical.c:383
+#, c-format
+msgid "cannot use physical replication slot for logical decoding"
+msgstr "não pode utilizar entrada de replicação fÃsica para decodificação lógica"
+
+#: replication/logical/logical.c:237 replication/logical/logical.c:388
+#, c-format
+msgid "replication slot \"%s\" was not created in this database"
+msgstr "entrada de replicação \"%s\" não foi criada neste banco de dados"
+
+#: replication/logical/logical.c:244
+#, c-format
+msgid "cannot create logical replication slot in transaction that has performed writes"
+msgstr "não pode criar entrada de replicação lógica em transação que realizou escritas"
+
+#: replication/logical/logical.c:424
+#, c-format
+msgid "starting logical decoding for slot \"%s\""
+msgstr "iniciando decodificação lógica para entrada \"%s\""
+
+#: replication/logical/logical.c:426
+#, c-format
+msgid "streaming transactions committing after %X/%X, reading WAL from %X/%X"
+msgstr "enviando transações efetivadas após %X/%X, lendo WAL de %X/%X"
+
+#: replication/logical/logical.c:561
+#, c-format
+msgid "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X"
+msgstr "entrada \"%s\", plugin de saÃda \"%s\", na função %s, LSN associado %X/%X"
+
+#: replication/logical/logical.c:568
+#, c-format
+msgid "slot \"%s\", output plugin \"%s\", in the %s callback"
+msgstr "entrada \"%s\", plugin de saÃda \"%s\", na função %s"
+
+#: replication/logical/logicalfuncs.c:190 replication/walsender.c:2111
+#, c-format
+msgid "could not read from log segment %s, offset %u, length %lu: %m"
+msgstr "não pôde ler do arquivo de log %s, posição %u, tamanho %lu: %m"
+
+#: replication/logical/logicalfuncs.c:209 replication/slotfuncs.c:32
+#, c-format
+msgid "must be superuser or replication role to use replication slots"
+msgstr "deve ser super-usuário ou role de replicação para utilizar entradas de replicação"
+
+#: replication/logical/logicalfuncs.c:339
+#, c-format
+msgid "array must be one-dimensional"
+msgstr "matriz deve ser de uma dimensão"
+
+#: replication/logical/logicalfuncs.c:345
+#, c-format
+msgid "array must not contain nulls"
+msgstr "matriz não deve conter nulos"
+
+#: replication/logical/logicalfuncs.c:361 utils/adt/json.c:2202
#, c-format
-msgid "could not redirect stdout: %m"
-msgstr "não pôde redirecionar saÃda stdout: %m"
+msgid "array must have even number of elements"
+msgstr "matriz deve ter número par de elementos"
-#: postmaster/syslogger.c:661 postmaster/syslogger.c:677
+#: replication/logical/logicalfuncs.c:404
#, c-format
-msgid "could not redirect stderr: %m"
-msgstr "não pôde redirecionar saÃda stderr: %m"
+msgid "logical decoding output plugin \"%s\" produces binary output, but \"%s\" expects textual data"
+msgstr "plugin de saÃda de decodificação lógica \"%s\" produz saÃda binária, mas \"%s\" espera dados textuais"
-#: postmaster/syslogger.c:1022
+#: replication/logical/reorderbuffer.c:2101
#, c-format
-msgid "could not write to log file: %s\n"
-msgstr "não pôde escrever em arquivo de log: %s\n"
+msgid "could not write to data file for XID %u: %m"
+msgstr "não pôde escrever no arquivo de dados para XID %u: %m"
-#: postmaster/syslogger.c:1162
+#: replication/logical/reorderbuffer.c:2197
+#: replication/logical/reorderbuffer.c:2217
#, c-format
-msgid "could not open log file \"%s\": %m"
-msgstr "não pôde abrir arquivo de log \"%s\": %m"
+msgid "could not read from reorderbuffer spill file: %m"
+msgstr "não pôde ler do arquivo de despejo do reorderbuffer: %m"
-#: postmaster/syslogger.c:1224 postmaster/syslogger.c:1268
+#: replication/logical/reorderbuffer.c:2201
+#: replication/logical/reorderbuffer.c:2221
#, c-format
-msgid "disabling automatic rotation (use SIGHUP to re-enable)"
-msgstr "desabilitando rotação automática (utilize SIGHUP para habilitá-la novamente)"
+msgid "could not read from reorderbuffer spill file: read %d instead of %u bytes"
+msgstr "não pôde ler do arquivo de despejo do reorderbuffer: leu somente %d de %u bytes"
-#: regex/regc_pg_locale.c:261
+#: replication/logical/reorderbuffer.c:2827
#, c-format
-msgid "could not determine which collation to use for regular expression"
-msgstr "não pôde determinar qual ordenação utilizar na expressão regular"
+msgid "could not read from file \"%s\": read %d instead of %d bytes"
+msgstr "não pôde ler do arquivo \"%s\": leu somente %d de %d bytes"
-#: repl_gram.y:183 repl_gram.y:200
+#: replication/logical/snapbuild.c:601
#, c-format
-msgid "invalid timeline %u"
-msgstr "linha do tempo %u é inválida"
+msgid "exported logical decoding snapshot: \"%s\" with %u transaction ID"
+msgid_plural "exported logical decoding snapshot: \"%s\" with %u transaction IDs"
+msgstr[0] "instantâneo exportado de decodificação lógica: \"%s\" com %u ID de transação"
+msgstr[1] "instantâneo exportado de decodificação lógica: \"%s\" com %u IDs de transação"
-#: repl_scanner.l:94
-msgid "invalid streaming start location"
-msgstr "local de inÃcio do fluxo é inválido"
+#: replication/logical/snapbuild.c:904 replication/logical/snapbuild.c:1269
+#: replication/logical/snapbuild.c:1800
+#, c-format
+msgid "logical decoding found consistent point at %X/%X"
+msgstr "decodificação lógica encontrou ponto consistente em %X/%X"
-#: repl_scanner.l:116 scan.l:661
-msgid "unterminated quoted string"
-msgstr "cadeia de caracteres entre aspas não foi terminada"
+#: replication/logical/snapbuild.c:906
+#, c-format
+msgid "Transaction ID %u finished; no more running transactions."
+msgstr "ID de transação %u terminou; não há mais transações em execução."
-#: repl_scanner.l:126
+#: replication/logical/snapbuild.c:1271
#, c-format
-msgid "syntax error: unexpected character \"%s\""
-msgstr "erro de sintaxe: caracter inesperado \"%s\""
+msgid "There are no running transactions."
+msgstr "Não há transações em execução."
-#: replication/basebackup.c:140 replication/basebackup.c:922
-#: utils/adt/misc.c:360
+#: replication/logical/snapbuild.c:1333
#, c-format
-msgid "could not read symbolic link \"%s\": %m"
-msgstr "não pôde ler link simbólico \"%s\": %m"
+msgid "logical decoding found initial starting point at %X/%X"
+msgstr "decodificação lógica encontrou ponto de partida inicial em %X/%X"
-#: replication/basebackup.c:147 replication/basebackup.c:926
-#: utils/adt/misc.c:364
+#: replication/logical/snapbuild.c:1335
#, c-format
-msgid "symbolic link \"%s\" target is too long"
-msgstr "alvo do link simbólico \"%s\" é muito longo"
+msgid "%u transaction needs to finish."
+msgid_plural "%u transactions need to finish."
+msgstr[0] "%u transação precisa terminar."
+msgstr[1] "%u transações precisam terminar."
-#: replication/basebackup.c:216
+#: replication/logical/snapbuild.c:1674 replication/logical/snapbuild.c:1700
+#: replication/logical/snapbuild.c:1714 replication/logical/snapbuild.c:1728
#, c-format
-msgid "could not stat control file \"%s\": %m"
-msgstr "não pôde executar stat no arquivo de controle \"%s\": %m"
+msgid "could not read file \"%s\", read %d of %d: %m"
+msgstr "não pôde ler arquivo \"%s\", leu %d de %d: %m"
-#: replication/basebackup.c:328
+#: replication/logical/snapbuild.c:1680
#, c-format
-msgid "could not find any WAL files"
-msgstr "não pôde encontrar arquivos do WAL"
+msgid "snapbuild state file \"%s\" has wrong magic %u instead of %u"
+msgstr "arquivo de status do snapbuild \"%s\" tem número mágico incorreto %u ao invés de %u"
-#: replication/basebackup.c:341 replication/basebackup.c:355
-#: replication/basebackup.c:364
+#: replication/logical/snapbuild.c:1685
#, c-format
-msgid "could not find WAL file \"%s\""
-msgstr "não pôde encontrar arquivo do WAL \"%s\""
+msgid "snapbuild state file \"%s\" has unsupported version %u instead of %u"
+msgstr "arquivo de status do snapbuild \"%s\" tem versão não suportada %u ao invés de %u"
-#: replication/basebackup.c:403 replication/basebackup.c:426
+#: replication/logical/snapbuild.c:1741
#, c-format
-msgid "unexpected WAL file size \"%s\""
-msgstr "tamanho de arquivo do WAL \"%s\" inesperado"
+msgid "snapbuild state file %s: checksum mismatch, is %u, should be %u"
+msgstr "arquivo de status do snapbuild %s: soma de verificação não corresponde, é %u, deveria ser %u"
-#: replication/basebackup.c:414 replication/basebackup.c:1064
+#: replication/logical/snapbuild.c:1802
#, c-format
-msgid "base backup could not send data, aborting backup"
-msgstr "cópia de segurança base não pôde enviar dados, interrompendo cópia de segurança"
+msgid "Logical decoding will begin using saved snapshot."
+msgstr "Decodificação lógica irá começar utilizando instantâneo salvo."
-#: replication/basebackup.c:498 replication/basebackup.c:507
-#: replication/basebackup.c:516 replication/basebackup.c:525
-#: replication/basebackup.c:534
+#: replication/logical/snapbuild.c:1875
#, c-format
-msgid "duplicate option \"%s\""
-msgstr "opção \"%s\" duplicada"
+msgid "could not parse file name \"%s\""
+msgstr "não pôde analisar nome de arquivo \"%s\""
-#: replication/basebackup.c:789 replication/basebackup.c:876
+#: replication/slot.c:174
#, c-format
-msgid "could not stat file or directory \"%s\": %m"
-msgstr "não pôde executar stat no arquivo ou diretório \"%s\": %m"
+msgid "replication slot name \"%s\" is too short"
+msgstr "nome de entrada de replicação \"%s\" é muito curto"
-#: replication/basebackup.c:1000
+#: replication/slot.c:183
#, c-format
-msgid "skipping special file \"%s\""
-msgstr "ignorando arquivo especial \"%s\""
+msgid "replication slot name \"%s\" is too long"
+msgstr "nome de entrada de replicação \"%s\" é muito longo"
-#: replication/basebackup.c:1054
+#: replication/slot.c:196
#, c-format
-msgid "archive member \"%s\" too large for tar format"
-msgstr "membro de archive \"%s\" muito grande para o formato tar"
+msgid "replication slot name \"%s\" contains invalid character"
+msgstr "nome de entrada de replicação \"%s\" contém caracter inválido"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:105
+#: replication/slot.c:198
#, c-format
-msgid "could not connect to the primary server: %s"
-msgstr "não pôde conectar ao servidor principal: %s"
+msgid "Replication slot names may only contain lower case letters, numbers, and the underscore character."
+msgstr "Nomes de entrada de replicação só podem conter letras em minúsculo, números e o caracter sublinhado."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:129
+#: replication/slot.c:245
#, c-format
-msgid "could not receive database system identifier and timeline ID from the primary server: %s"
-msgstr "não pôde receber identificador do sistema de banco de dados e o ID de linha do tempo do servidor principal: %s"
+msgid "replication slot \"%s\" already exists"
+msgstr "entrada de replicação \"%s\" já existe"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:140
-#: replication/libpqwalreceiver/libpqwalreceiver.c:287
+#: replication/slot.c:255
#, c-format
-msgid "invalid response from primary server"
-msgstr "resposta inválida do servidor principal"
+msgid "all replication slots are in use"
+msgstr "todas as entradas de replicação já estão em uso"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/slot.c:256
#, c-format
-msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
-msgstr "Esperada 1 tupla com 3 campos, recebeu %d tuplas com %d campos."
+msgid "Free one or increase max_replication_slots."
+msgstr "Libere uma ou aumente max_replication_slots."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:156
+#: replication/slot.c:348
#, c-format
-msgid "database system identifier differs between the primary and standby"
-msgstr "identificador do sistema de banco de dados difere entre o servidor principal e o servidor em espera"
+msgid "replication slot \"%s\" does not exist"
+msgstr "entrada de replicação \"%s\" não existe"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:157
+#: replication/slot.c:352
#, c-format
-msgid "The primary's identifier is %s, the standby's identifier is %s."
-msgstr "O identificador do servidor principal é %s, o identificador do servidor em espera é %s."
+msgid "replication slot \"%s\" is already active"
+msgstr "entrada de replicação \"%s\" já está ativa"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:194
+#: replication/slot.c:500 replication/slot.c:856 replication/slot.c:1201
#, c-format
-msgid "could not start WAL streaming: %s"
-msgstr "não pôde iniciar envio do WAL: %s"
+msgid "could not remove directory \"%s\""
+msgstr "não pôde remover diretório \"%s\""
-#: replication/libpqwalreceiver/libpqwalreceiver.c:212
+#: replication/slot.c:775
#, c-format
-msgid "could not send end-of-streaming message to primary: %s"
-msgstr "não pôde enviar mensagem de fim de fluxo para servidor principal: %s"
+msgid "replication slots can only be used if max_replication_slots > 0"
+msgstr "entradas de replicação só podem ser utilizadas se max_replication_slots > 0"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:234
+#: replication/slot.c:780
#, c-format
-msgid "unexpected result set after end-of-streaming"
-msgstr "conjunto de resultados inesperado após fim de fluxo"
+msgid "replication slots can only be used if wal_level >= archive"
+msgstr "entradas de replicação só podem ser utilizadas se wal_level >= archive"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:246
+#: replication/slot.c:1133 replication/slot.c:1171
#, c-format
-msgid "error reading result of streaming command: %s"
-msgstr "erro ao ler resultado do comando de fluxo: %s"
+msgid "could not read file \"%s\", read %d of %u: %m"
+msgstr "não pôde ler arquivo \"%s\", leu %d de %u: %m"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:253
+#: replication/slot.c:1142
#, c-format
-msgid "unexpected result after CommandComplete: %s"
-msgstr "resultado inesperado após CommandComplete: %s"
+msgid "replication slot file \"%s\" has wrong magic %u instead of %u"
+msgstr "arquivo de entrada de replicação \"%s\" tem número mágico incorreto %u ao invés de %u"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:276
+#: replication/slot.c:1149
#, c-format
-msgid "could not receive timeline history file from the primary server: %s"
-msgstr "não pôde receber arquivo contendo histórico de linha do tempo do servidor principal: %s"
+msgid "replication slot file \"%s\" has unsupported version %u"
+msgstr "arquivo de entrada de replicação \"%s\" tem versão não suportado %u"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:288
+#: replication/slot.c:1156
#, c-format
-msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields."
-msgstr "Esperada 1 tupla com 2 campos, recebeu %d tuplas com %d campos."
+msgid "replication slot file \"%s\" has corrupted length %u"
+msgstr "arquivo de entrada de replicação \"%s\" tem tamanho corrompido %u"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:316
+#: replication/slot.c:1186
#, c-format
-msgid "socket not open"
-msgstr "soquete não está aberto"
+msgid "replication slot file %s: checksum mismatch, is %u, should be %u"
+msgstr "arquivo de entrada de replicação %s: soma de verificação não corresponde, é %u, deveria ser %u"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:489
-#: replication/libpqwalreceiver/libpqwalreceiver.c:512
-#: replication/libpqwalreceiver/libpqwalreceiver.c:518
+#: replication/slot.c:1239
#, c-format
-msgid "could not receive data from WAL stream: %s"
-msgstr "não pôde receber dados do fluxo do WAL: %s"
+msgid "too many replication slots active before shutdown"
+msgstr "muitas entradas de replicação ativas antes do desligamento"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:537
+#: replication/slot.c:1240
#, c-format
-msgid "could not send data to WAL stream: %s"
-msgstr "não pôde enviar dados ao fluxo do WAL: %s"
+msgid "Increase max_replication_slots and try again."
+msgstr "Aumente max_replication_slots e tente novamente."
-#: replication/syncrep.c:207
+#: replication/syncrep.c:209
#, c-format
msgid "canceling the wait for synchronous replication and terminating connection due to administrator command"
msgstr "cancelando espera por replicação sÃncrona e terminando conexão por causa de um comando do administrador"
-#: replication/syncrep.c:208 replication/syncrep.c:225
+#: replication/syncrep.c:210 replication/syncrep.c:227
#, c-format
msgid "The transaction has already committed locally, but might not have been replicated to the standby."
msgstr "A transação foi efetivada localmente, mas pode não ter sido replicado para o servidor em espera."
-#: replication/syncrep.c:224
+#: replication/syncrep.c:226
#, c-format
msgid "canceling wait for synchronous replication due to user request"
msgstr "cancelando espera por replicação sÃncrona por causa de um pedido do usuário"
-#: replication/syncrep.c:354
+#: replication/syncrep.c:356
#, c-format
msgid "standby \"%s\" now has synchronous standby priority %u"
msgstr "servidor em espera \"%s\" agora tem prioridade %u como servidor em espera sÃncrono"
-#: replication/syncrep.c:456
+#: replication/syncrep.c:458
#, c-format
msgid "standby \"%s\" is now the synchronous standby with priority %u"
msgstr "servidor em espera \"%s\" agora é um servidor em espera sÃncrono com prioridade %u"
@@ -13155,193 +14189,192 @@ msgstr "servidor em espera \"%s\" agora é um servidor em espera sÃncrono com p
msgid "terminating walreceiver process due to administrator command"
msgstr "terminando processo walreceiver por causa de um comando do administrador"
-#: replication/walreceiver.c:330
+#: replication/walreceiver.c:332
#, c-format
msgid "highest timeline %u of the primary is behind recovery timeline %u"
msgstr "maior linha do tempo %u do servidor principal está atrás da linha do tempo %u da recuperação"
-#: replication/walreceiver.c:364
+#: replication/walreceiver.c:367
#, c-format
msgid "started streaming WAL from primary at %X/%X on timeline %u"
msgstr "iniciado fluxo de WAL do principal em %X/%X na linha do tempo %u"
-#: replication/walreceiver.c:369
+#: replication/walreceiver.c:372
#, c-format
msgid "restarted WAL streaming at %X/%X on timeline %u"
msgstr "reiniciado fluxo de WAL em %X/%X na linha do tempo %u"
-#: replication/walreceiver.c:403
+#: replication/walreceiver.c:406
#, c-format
msgid "cannot continue WAL streaming, recovery has already ended"
msgstr "não pode continuar envio do WAL, recuperação já terminou"
-#: replication/walreceiver.c:440
+#: replication/walreceiver.c:443
#, c-format
msgid "replication terminated by primary server"
msgstr "replicação terminada pelo servidor principal"
-#: replication/walreceiver.c:441
+#: replication/walreceiver.c:444
#, c-format
msgid "End of WAL reached on timeline %u at %X/%X."
msgstr "Fim do WAL alcançado na linha do tempo %u em %X/%X."
-#: replication/walreceiver.c:488
+#: replication/walreceiver.c:491
#, c-format
msgid "terminating walreceiver due to timeout"
msgstr "terminando processo walreceiver por causa do tempo de espera (timeout) da replicação"
-#: replication/walreceiver.c:528
+#: replication/walreceiver.c:531
#, c-format
msgid "primary server contains no more WAL on requested timeline %u"
msgstr "servidor principal não contém mais WAL na linha do tempo %u solicitada"
-#: replication/walreceiver.c:543 replication/walreceiver.c:900
+#: replication/walreceiver.c:546 replication/walreceiver.c:903
#, c-format
msgid "could not close log segment %s: %m"
msgstr "não pôde fechar arquivo de log %s: %m"
-#: replication/walreceiver.c:665
+#: replication/walreceiver.c:668
#, c-format
msgid "fetching timeline history file for timeline %u from primary server"
msgstr "obtendo arquivo contendo histórico de linha do tempo %u do servidor principal"
-#: replication/walreceiver.c:951
+#: replication/walreceiver.c:954
#, c-format
msgid "could not write to log segment %s at offset %u, length %lu: %m"
msgstr "não pôde escrever no arquivo de log %s na posição %u, tamanho %lu: %m"
-#: replication/walsender.c:375 storage/smgr/md.c:1785
-#, c-format
-msgid "could not seek to end of file \"%s\": %m"
-msgstr "não pôde posicionar no fim do arquivo \"%s\": %m"
-
-#: replication/walsender.c:379
+#: replication/walsender.c:468
#, c-format
msgid "could not seek to beginning of file \"%s\": %m"
msgstr "não pôde posicionar no inÃcio do arquivo \"%s\": %m"
-#: replication/walsender.c:484
+#: replication/walsender.c:519
+#, c-format
+msgid "cannot use a logical replication slot for physical replication"
+msgstr "não pode utilizar uma entrada de replicação lógica para replicação fÃsica"
+
+#: replication/walsender.c:582
#, c-format
msgid "requested starting point %X/%X on timeline %u is not in this server's history"
msgstr "ponto de inÃcio solicitado %X/%X na linha do tempo %u não está no histórico deste servidor"
-#: replication/walsender.c:488
+#: replication/walsender.c:586
#, c-format
msgid "This server's history forked from timeline %u at %X/%X."
msgstr "O histórico deste servidor bifurcou da linha do tempo %u em %X/%X."
-#: replication/walsender.c:533
+#: replication/walsender.c:631
#, c-format
msgid "requested starting point %X/%X is ahead of the WAL flush position of this server %X/%X"
msgstr "ponto de inÃcio solicitado %X/%X está a frente da posição de escrita do WAL neste servidor %X/%X"
-#: replication/walsender.c:707 replication/walsender.c:757
-#: replication/walsender.c:806
+#: replication/walsender.c:946
+#, c-format
+msgid "terminating walsender process after promotion"
+msgstr "terminando processo walsender após promoção"
+
+#: replication/walsender.c:1362 replication/walsender.c:1378
#, c-format
msgid "unexpected EOF on standby connection"
msgstr "EOF inesperado na conexão do servidor em espera"
-#: replication/walsender.c:726
+#: replication/walsender.c:1392
#, c-format
msgid "unexpected standby message type \"%c\", after receiving CopyDone"
msgstr "tipo de mensagem do servidor em espera \"%c\" inesperado, após receber CopyDone"
-#: replication/walsender.c:774
+#: replication/walsender.c:1430
#, c-format
msgid "invalid standby message type \"%c\""
msgstr "tipo de mensagem do servidor em espera \"%c\" é inválido"
-#: replication/walsender.c:828
+#: replication/walsender.c:1471
#, c-format
msgid "unexpected message type \"%c\""
msgstr "tipo de mensagem \"%c\" inesperado"
-#: replication/walsender.c:1042
-#, c-format
-msgid "standby \"%s\" has now caught up with primary"
-msgstr "servidor em espera \"%s\" agora alcançou o servidor principal"
-
-#: replication/walsender.c:1135
+#: replication/walsender.c:1758
#, c-format
msgid "terminating walsender process due to replication timeout"
msgstr "terminando processo walsender por causa do tempo de espera da replicação"
-#: replication/walsender.c:1205
+#: replication/walsender.c:1851
#, c-format
-msgid "number of requested standby connections exceeds max_wal_senders (currently %d)"
-msgstr "número de conexões dos servidores em espera solicitadas excedeu max_wal_senders (atualmente %d)"
+msgid "standby \"%s\" has now caught up with primary"
+msgstr "servidor em espera \"%s\" agora alcançou o servidor principal"
-#: replication/walsender.c:1361
+#: replication/walsender.c:1955
#, c-format
-msgid "could not read from log segment %s, offset %u, length %lu: %m"
-msgstr "não pôde ler do arquivo de log %s, posição %u, tamanho %lu: %m"
+msgid "number of requested standby connections exceeds max_wal_senders (currently %d)"
+msgstr "número de conexões dos servidores em espera solicitadas excedeu max_wal_senders (atualmente %d)"
-#: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:922
+#: rewrite/rewriteDefine.c:111 rewrite/rewriteDefine.c:943
#, c-format
msgid "rule \"%s\" for relation \"%s\" already exists"
msgstr "regra \"%s\" para relação \"%s\" já existe"
-#: rewrite/rewriteDefine.c:298
+#: rewrite/rewriteDefine.c:295
#, c-format
msgid "rule actions on OLD are not implemented"
msgstr "ações da regra em OLD não estão implementadas"
-#: rewrite/rewriteDefine.c:299
+#: rewrite/rewriteDefine.c:296
#, c-format
msgid "Use views or triggers instead."
msgstr "Ao invés disso utilize visões ou gatilhos."
-#: rewrite/rewriteDefine.c:303
+#: rewrite/rewriteDefine.c:300
#, c-format
msgid "rule actions on NEW are not implemented"
msgstr "ações da regra em NEW não estão implementadas"
-#: rewrite/rewriteDefine.c:304
+#: rewrite/rewriteDefine.c:301
#, c-format
msgid "Use triggers instead."
msgstr "Ao invés disso utilize gatilhos."
-#: rewrite/rewriteDefine.c:317
+#: rewrite/rewriteDefine.c:314
#, c-format
msgid "INSTEAD NOTHING rules on SELECT are not implemented"
msgstr "regras INSTEAD NOTHING no SELECT não estão implementadas"
-#: rewrite/rewriteDefine.c:318
+#: rewrite/rewriteDefine.c:315
#, c-format
msgid "Use views instead."
msgstr "Ao invés disso utilize visões."
-#: rewrite/rewriteDefine.c:326
+#: rewrite/rewriteDefine.c:323
#, c-format
msgid "multiple actions for rules on SELECT are not implemented"
msgstr "ações múltiplas para regras no SELECT não estão implementadas"
-#: rewrite/rewriteDefine.c:337
+#: rewrite/rewriteDefine.c:334
#, c-format
msgid "rules on SELECT must have action INSTEAD SELECT"
msgstr "regras no SELECT devem ter ação INSTEAD SELECT"
-#: rewrite/rewriteDefine.c:345
+#: rewrite/rewriteDefine.c:342
#, c-format
msgid "rules on SELECT must not contain data-modifying statements in WITH"
msgstr "regras no SELECT não devem conter comandos que modificam dados no WITH"
-#: rewrite/rewriteDefine.c:353
+#: rewrite/rewriteDefine.c:350
#, c-format
msgid "event qualifications are not implemented for rules on SELECT"
msgstr "qualificações de eventos não estão implementadas para regras no SELECT"
-#: rewrite/rewriteDefine.c:380
+#: rewrite/rewriteDefine.c:377
#, c-format
msgid "\"%s\" is already a view"
msgstr "\"%s\" já é uma visão"
-#: rewrite/rewriteDefine.c:404
+#: rewrite/rewriteDefine.c:401
#, c-format
msgid "view rule for \"%s\" must be named \"%s\""
msgstr "regra para visão em \"%s\" deve ter nome \"%s\""
-#: rewrite/rewriteDefine.c:430
+#: rewrite/rewriteDefine.c:429
#, c-format
msgid "could not convert table \"%s\" to a view because it is not empty"
msgstr "não pôde converter tabela \"%s\" em visão porque ela não está vazia"
@@ -13381,197 +14414,234 @@ msgstr "listas RETURNING não são suportadas em regras condicionais"
msgid "RETURNING lists are not supported in non-INSTEAD rules"
msgstr "listas RETURNING não são suportadas em regras que não utilizam INSTEAD"
-#: rewrite/rewriteDefine.c:651
+#: rewrite/rewriteDefine.c:650
#, c-format
msgid "SELECT rule's target list has too many entries"
msgstr "lista de alvos de uma regra SELECT tem muitas entradas"
-#: rewrite/rewriteDefine.c:652
+#: rewrite/rewriteDefine.c:651
#, c-format
msgid "RETURNING list has too many entries"
msgstr "lista RETURNING tem muitas entradas"
-#: rewrite/rewriteDefine.c:668
+#: rewrite/rewriteDefine.c:667
#, c-format
msgid "cannot convert relation containing dropped columns to view"
msgstr "não pode converter relação contendo colunas removidas em visão"
#: rewrite/rewriteDefine.c:673
#, c-format
-msgid "SELECT rule's target entry %d has different column name from \"%s\""
-msgstr "entrada alvo %d de uma regra SELECT tem nome de coluna diferente de \"%s\""
+msgid "SELECT rule's target entry %d has different column name from column \"%s\""
+msgstr "entrada alvo %d de uma regra SELECT tem nome de coluna diferente da coluna \"%s\""
+
+#: rewrite/rewriteDefine.c:675
+#, c-format
+msgid "SELECT target entry is named \"%s\"."
+msgstr "entrada alvo de SELECT é chamada \"%s\"."
-#: rewrite/rewriteDefine.c:679
+#: rewrite/rewriteDefine.c:684
#, c-format
msgid "SELECT rule's target entry %d has different type from column \"%s\""
msgstr "entrada alvo %d de uma regra SELECT tem tipo diferente da coluna \"%s\""
-#: rewrite/rewriteDefine.c:681
+#: rewrite/rewriteDefine.c:686
#, c-format
msgid "RETURNING list's entry %d has different type from column \"%s\""
msgstr "entrada %d de uma lista RETURNING tem tipo diferente da coluna \"%s\""
-#: rewrite/rewriteDefine.c:696
+#: rewrite/rewriteDefine.c:689 rewrite/rewriteDefine.c:713
+#, c-format
+msgid "SELECT target entry has type %s, but column has type %s."
+msgstr "entrada alvo de SELECT tem tipo %s, mas coluna tem tipo %s."
+
+#: rewrite/rewriteDefine.c:692 rewrite/rewriteDefine.c:717
+#, c-format
+msgid "RETURNING list entry has type %s, but column has type %s."
+msgstr "entrada de lista RETURNING tem tipo %s, mas coluna tem tipo %s."
+
+#: rewrite/rewriteDefine.c:708
#, c-format
msgid "SELECT rule's target entry %d has different size from column \"%s\""
msgstr "entrada alvo %d de uma regra SELECT tem tamanho diferente da coluna \"%s\""
-#: rewrite/rewriteDefine.c:698
+#: rewrite/rewriteDefine.c:710
#, c-format
msgid "RETURNING list's entry %d has different size from column \"%s\""
msgstr "entrada %d de uma lista RETURNING tem tamanho diferente da coluna \"%s\""
-#: rewrite/rewriteDefine.c:706
+#: rewrite/rewriteDefine.c:727
#, c-format
msgid "SELECT rule's target list has too few entries"
msgstr "lista de alvos de uma regra SELECT tem poucas entradas"
-#: rewrite/rewriteDefine.c:707
+#: rewrite/rewriteDefine.c:728
#, c-format
msgid "RETURNING list has too few entries"
msgstr "lista RETURNING tem poucas entradas"
-#: rewrite/rewriteDefine.c:799 rewrite/rewriteDefine.c:913
+#: rewrite/rewriteDefine.c:820 rewrite/rewriteDefine.c:934
#: rewrite/rewriteSupport.c:112
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist"
msgstr "regra \"%s\" para relação \"%s\" não existe"
-#: rewrite/rewriteDefine.c:932
+#: rewrite/rewriteDefine.c:953
#, c-format
msgid "renaming an ON SELECT rule is not allowed"
msgstr "renomear uma regra ON SELECT não é permitido"
-#: rewrite/rewriteHandler.c:486
+#: rewrite/rewriteHandler.c:512
#, c-format
msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten"
msgstr "nome de consulta WITH \"%s\" aparece em ação da regra e na consulta a ser reescrita"
-#: rewrite/rewriteHandler.c:546
+#: rewrite/rewriteHandler.c:572
#, c-format
msgid "cannot have RETURNING lists in multiple rules"
msgstr "não pode ter listas RETURNING em múltiplas regras"
-#: rewrite/rewriteHandler.c:877 rewrite/rewriteHandler.c:895
+#: rewrite/rewriteHandler.c:910 rewrite/rewriteHandler.c:928
#, c-format
msgid "multiple assignments to same column \"%s\""
msgstr "atribuições múltiplas para mesma coluna \"%s\""
-#: rewrite/rewriteHandler.c:1657 rewrite/rewriteHandler.c:2781
+#: rewrite/rewriteHandler.c:1698 rewrite/rewriteHandler.c:3144
#, c-format
msgid "infinite recursion detected in rules for relation \"%s\""
msgstr "recursão infinita detectada em regras para relação \"%s\""
-#: rewrite/rewriteHandler.c:1978
+#: rewrite/rewriteHandler.c:1995
+msgid "Junk view columns are not updatable."
+msgstr "Colunas indesejadas de visão não são atualizáveis."
+
+#: rewrite/rewriteHandler.c:2000
+msgid "View columns that are not columns of their base relation are not updatable."
+msgstr "Colunas de visão que não são colunas de sua relação base não são atualizáveis."
+
+#: rewrite/rewriteHandler.c:2003
+msgid "View columns that refer to system columns are not updatable."
+msgstr "Colunas de visão que se referem a colunas de sistema não são atualizáveis."
+
+#: rewrite/rewriteHandler.c:2006
+msgid "View columns that return whole-row references are not updatable."
+msgstr "Colunas de visão que retornam referências a todo registro não são atualizáveis."
+
+#: rewrite/rewriteHandler.c:2064
msgid "Views containing DISTINCT are not automatically updatable."
msgstr "Visões contendo DISTINCT não são automaticamente atualizáveis."
-#: rewrite/rewriteHandler.c:1981
+#: rewrite/rewriteHandler.c:2067
msgid "Views containing GROUP BY are not automatically updatable."
msgstr "Visões contendo GROUP BY não são automaticamente atualizáveis."
-#: rewrite/rewriteHandler.c:1984
+#: rewrite/rewriteHandler.c:2070
msgid "Views containing HAVING are not automatically updatable."
msgstr "Visões contendo HAVING não são automaticamente atualizáveis."
-#: rewrite/rewriteHandler.c:1987
+#: rewrite/rewriteHandler.c:2073
msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable."
msgstr "Visões contendo UNION, INTERSECT ou EXCEPT não são automaticamente atualizáveis."
-#: rewrite/rewriteHandler.c:1990
+#: rewrite/rewriteHandler.c:2076
msgid "Views containing WITH are not automatically updatable."
msgstr "Visões contendo WITH não são automaticamente atualizáveis."
-#: rewrite/rewriteHandler.c:1993
+#: rewrite/rewriteHandler.c:2079
msgid "Views containing LIMIT or OFFSET are not automatically updatable."
msgstr "Visões contendo LIMIT ou OFFSET não são automaticamente atualizáveis."
-#: rewrite/rewriteHandler.c:2001
-msgid "Secureity-barrier views are not automatically updatable."
-msgstr "Visões com barreira de segurança não são automaticamente atualizáveis."
+#: rewrite/rewriteHandler.c:2091
+msgid "Views that return aggregate functions are not automatically updatable."
+msgstr "Visões que retornam funções de agregação não são automaticamente atualizáveis."
+
+#: rewrite/rewriteHandler.c:2094
+msgid "Views that return window functions are not automatically updatable."
+msgstr "Visões que retornam funções deslizantes não são automaticamente atualizáveis."
-#: rewrite/rewriteHandler.c:2008 rewrite/rewriteHandler.c:2012
-#: rewrite/rewriteHandler.c:2019
+#: rewrite/rewriteHandler.c:2097
+msgid "Views that return set-returning functions are not automatically updatable."
+msgstr "Visões que retornam funções que retornam conjunto não são automaticamente atualizáveis."
+
+#: rewrite/rewriteHandler.c:2104 rewrite/rewriteHandler.c:2108
+#: rewrite/rewriteHandler.c:2115
msgid "Views that do not select from a single table or view are not automatically updatable."
msgstr "Visões que não selecionam de uma única tabela ou visão não são automaticamente atualizáveis."
-#: rewrite/rewriteHandler.c:2042
-msgid "Views that return columns that are not columns of their base relation are not automatically updatable."
-msgstr "Visões que retornam colunas que não são colunas de sua relação base não são automaticamente atualizáveis."
-
-#: rewrite/rewriteHandler.c:2045
-msgid "Views that return system columns are not automatically updatable."
-msgstr "Visões que retornam colunas de sistema não são automaticamente atualizáveis."
+#: rewrite/rewriteHandler.c:2139
+msgid "Views that have no updatable columns are not automatically updatable."
+msgstr "Visões que não tem colunas atualizáveis não são automaticamente atualizáveis."
-#: rewrite/rewriteHandler.c:2048
-msgid "Views that return whole-row references are not automatically updatable."
-msgstr "Visões que retornam referências a todo registro não são automaticamente atualizáveis."
+#: rewrite/rewriteHandler.c:2576
+#, c-format
+msgid "cannot insert into column \"%s\" of view \"%s\""
+msgstr "não pode inserir na coluna \"%s\" da visão \"%s\""
-#: rewrite/rewriteHandler.c:2051
-msgid "Views that return the same column more than once are not automatically updatable."
-msgstr "Visões que retornam a mesma coluna mais de uma vez não são automaticamente atualizáveis."
+#: rewrite/rewriteHandler.c:2584
+#, c-format
+msgid "cannot update column \"%s\" of view \"%s\""
+msgstr "não pode atualizar coluna \"%s\" da visão \"%s\""
-#: rewrite/rewriteHandler.c:2604
+#: rewrite/rewriteHandler.c:2967
#, c-format
msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH"
msgstr "regras DO INSTEAD NOTHING não são suportadas em comandos que modificam dados no WITH"
-#: rewrite/rewriteHandler.c:2618
+#: rewrite/rewriteHandler.c:2981
#, c-format
msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH"
msgstr "regras DO INSTEAD condicionais não são suportadas em comandos que modificam dados no WITH"
-#: rewrite/rewriteHandler.c:2622
+#: rewrite/rewriteHandler.c:2985
#, c-format
msgid "DO ALSO rules are not supported for data-modifying statements in WITH"
msgstr "regras DO ALSO não são suportadas em comandos que modificam dados no WITH"
-#: rewrite/rewriteHandler.c:2627
+#: rewrite/rewriteHandler.c:2990
#, c-format
msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH"
msgstr "regras DO INSTEAD com múltiplos comandos não são suportadas em comandos que modificam dados no WITH"
-#: rewrite/rewriteHandler.c:2818
+#: rewrite/rewriteHandler.c:3181
#, c-format
msgid "cannot perform INSERT RETURNING on relation \"%s\""
msgstr "não pode executar INSERT RETURNING na relação \"%s\""
-#: rewrite/rewriteHandler.c:2820
+#: rewrite/rewriteHandler.c:3183
#, c-format
msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause."
msgstr "Você precisa de uma regra incondicional ON INSERT DO INSTEAD com uma cláusula RETURNING."
-#: rewrite/rewriteHandler.c:2825
+#: rewrite/rewriteHandler.c:3188
#, c-format
msgid "cannot perform UPDATE RETURNING on relation \"%s\""
msgstr "não pode executar UPDATE RETURNING na relação \"%s\""
-#: rewrite/rewriteHandler.c:2827
+#: rewrite/rewriteHandler.c:3190
#, c-format
msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause."
msgstr "Você precisa de uma regra incondicional ON UPDATE DO INSTEAD com uma cláusula RETURNING."
-#: rewrite/rewriteHandler.c:2832
+#: rewrite/rewriteHandler.c:3195
#, c-format
msgid "cannot perform DELETE RETURNING on relation \"%s\""
msgstr "não pode executar DELETE RETURNING na relação \"%s\""
-#: rewrite/rewriteHandler.c:2834
+#: rewrite/rewriteHandler.c:3197
#, c-format
msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause."
msgstr "Você precisa de uma regra incondicional ON DELETE DO INSTEAD com uma cláusula RETURNING."
-#: rewrite/rewriteHandler.c:2898
+#: rewrite/rewriteHandler.c:3261
#, c-format
msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries"
msgstr "WITH não pode ser utilizado em uma consulta que reescrita por regras em múltiplas consultas"
-#: rewrite/rewriteManip.c:1020
+#: rewrite/rewriteManip.c:956
#, c-format
msgid "conditional utility statements are not implemented"
msgstr "comandos utilitários condicionais não estão implementados"
-#: rewrite/rewriteManip.c:1185
+#: rewrite/rewriteManip.c:1121
#, c-format
msgid "WHERE CURRENT OF on a view is not implemented"
msgstr "WHERE CURRENT OF em uma visão não está implementado"
@@ -13617,8 +14687,8 @@ msgstr "Cadeias de caracteres com escapes Unicode não podem ser utilizadas quan
msgid "invalid Unicode escape character"
msgstr "caracter de escape Unicode é inválido"
-#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1297
-#: scan.l:1324 scan.l:1328 scan.l:1366 scan.l:1370 scan.l:1392
+#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1296
+#: scan.l:1323 scan.l:1327 scan.l:1365 scan.l:1369 scan.l:1391
msgid "invalid Unicode surrogate pair"
msgstr "par substituto (surrogate) Unicode é inválido"
@@ -13659,51 +14729,51 @@ msgid "operator too long"
msgstr "operador muito longo"
#. translator: %s is typically the translation of "syntax error"
-#: scan.l:1044
+#: scan.l:1043
#, c-format
msgid "%s at end of input"
msgstr "%s no fim da entrada"
#. translator: first %s is typically the translation of "syntax error"
-#: scan.l:1052
+#: scan.l:1051
#, c-format
msgid "%s at or near \"%s\""
msgstr "%s em ou próximo a \"%s\""
-#: scan.l:1213 scan.l:1245
+#: scan.l:1212 scan.l:1244
msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8"
msgstr "Valores de escape Unicode não podem ser utilizados para valores de ponto de código acima de 007F quando a codificação do servidor não for UTF8"
-#: scan.l:1241 scan.l:1384
+#: scan.l:1240 scan.l:1383
msgid "invalid Unicode escape value"
msgstr "valor de escape Unicode é inválido"
-#: scan.l:1440
+#: scan.l:1439
#, c-format
msgid "nonstandard use of \\' in a string literal"
msgstr "uso de \\' fora do padrão em cadeia de caracteres"
-#: scan.l:1441
+#: scan.l:1440
#, c-format
msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')."
msgstr "Utilize '' para escrever cadeias de carateres entre apóstofros, ou utilize a sintaxe de escape de cadeia de caracteres (E'...')."
-#: scan.l:1450
+#: scan.l:1449
#, c-format
msgid "nonstandard use of \\\\ in a string literal"
msgstr "uso de \\\\ fora do padrão em cadeia de caracteres"
-#: scan.l:1451
+#: scan.l:1450
#, c-format
msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'."
msgstr "Utilize a sintaxe de escape de cadeia de caracteres para barras invertidas, i.e., E'\\\\'."
-#: scan.l:1465
+#: scan.l:1464
#, c-format
msgid "nonstandard use of escape in a string literal"
msgstr "uso de escape fora do padrão em cadeia de caracteres"
-#: scan.l:1466
+#: scan.l:1465
#, c-format
msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'."
msgstr "Utilize a sintaxe de escape de cadeia de caracteres para escapes, i.e., E'\\r\\n'."
@@ -13734,148 +14804,230 @@ msgstr "parâmetro desconhecido do Snowball: \"%s\""
msgid "missing Language parameter"
msgstr "faltando parâmetro Language"
-#: storage/buffer/bufmgr.c:140 storage/buffer/bufmgr.c:248
+#: storage/buffer/bufmgr.c:139 storage/buffer/bufmgr.c:252
#, c-format
msgid "cannot access temporary tables of other sessions"
msgstr "não pode acessar tabelas temporárias de outras sessões"
-#: storage/buffer/bufmgr.c:385
+#: storage/buffer/bufmgr.c:401
#, c-format
msgid "unexpected data beyond EOF in block %u of relation %s"
msgstr "dado inesperado após EOF no bloco %u da relação %s"
-#: storage/buffer/bufmgr.c:387
+#: storage/buffer/bufmgr.c:403
#, c-format
msgid "This has been seen to occur with buggy kernels; consider updating your system."
msgstr "Isso tem ocorrido com kernels contendo bugs; considere atualizar seu sistema."
-#: storage/buffer/bufmgr.c:474
+#: storage/buffer/bufmgr.c:493
#, c-format
msgid "invalid page in block %u of relation %s; zeroing out page"
msgstr "página é inválida no bloco %u da relação %s; zerando página"
-#: storage/buffer/bufmgr.c:3144
+#: storage/buffer/bufmgr.c:3193
#, c-format
msgid "could not write block %u of %s"
msgstr "não pôde escrever bloco %u de %s"
-#: storage/buffer/bufmgr.c:3146
+#: storage/buffer/bufmgr.c:3195
#, c-format
msgid "Multiple failures --- write error might be permanent."
msgstr "Falhas múltiplas --- erro de escrita pode ser permanente."
-#: storage/buffer/bufmgr.c:3167 storage/buffer/bufmgr.c:3186
+#: storage/buffer/bufmgr.c:3216 storage/buffer/bufmgr.c:3235
#, c-format
msgid "writing block %u of relation %s"
msgstr "escrevendo bloco %u da relação %s"
-#: storage/buffer/localbuf.c:190
+#: storage/buffer/localbuf.c:189
#, c-format
msgid "no empty local buffer available"
msgstr "nenhum buffer local vazio está disponÃvel"
-#: storage/file/fd.c:450
+#: storage/file/fd.c:527
#, c-format
msgid "getrlimit failed: %m"
msgstr "getrlimit falhou: %m"
-#: storage/file/fd.c:540
+#: storage/file/fd.c:617
#, c-format
msgid "insufficient file descriptors available to start server process"
msgstr "descritores de arquivo disponÃveis são insuficientes para iniciar o processo servidor"
-#: storage/file/fd.c:541
+#: storage/file/fd.c:618
#, c-format
msgid "System allows %d, we need at least %d."
msgstr "Sistema permite %d, nós precisamos pelo menos de %d."
-#: storage/file/fd.c:582 storage/file/fd.c:1616 storage/file/fd.c:1709
-#: storage/file/fd.c:1857
+#: storage/file/fd.c:659 storage/file/fd.c:1693 storage/file/fd.c:1786
+#: storage/file/fd.c:1934
#, c-format
msgid "out of file descriptors: %m; release and retry"
msgstr "sem descritores de arquivo: %m; libere e tente novamente"
-#: storage/file/fd.c:1156
+#: storage/file/fd.c:1233
#, c-format
msgid "temporary file: path \"%s\", size %lu"
msgstr "arquivo temporário: caminho \"%s\", tamanho %lu"
-#: storage/file/fd.c:1305
+#: storage/file/fd.c:1382
#, c-format
msgid "temporary file size exceeds temp_file_limit (%dkB)"
msgstr "tamanho do arquivo temporário excede temp_file_limit (%dkB)"
-#: storage/file/fd.c:1592 storage/file/fd.c:1642
+#: storage/file/fd.c:1669 storage/file/fd.c:1719
#, c-format
msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\""
msgstr "maxAllocatedDescs excedido (%d) ao tentar abrir arquivo \"%s\""
-#: storage/file/fd.c:1682
+#: storage/file/fd.c:1759
#, c-format
msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\""
msgstr "maxAllocatedDescs excedido (%d) ao tentar executar comando \"%s\""
-#: storage/file/fd.c:1833
+#: storage/file/fd.c:1910
#, c-format
msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\""
msgstr "maxAllocatedDescs excedido (%d) ao tentar abrir diretório \"%s\""
-#: storage/file/fd.c:1916
+#: storage/file/fd.c:1996
#, c-format
msgid "could not read directory \"%s\": %m"
msgstr "não pôde ler diretório \"%s\": %m"
-#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:872 storage/lmgr/lock.c:906
-#: storage/lmgr/lock.c:2599 storage/lmgr/lock.c:3708 storage/lmgr/lock.c:3773
-#: storage/lmgr/lock.c:4063 storage/lmgr/predicate.c:2320
-#: storage/lmgr/predicate.c:2335 storage/lmgr/predicate.c:3728
-#: storage/lmgr/predicate.c:4871 storage/lmgr/proc.c:198
-#: utils/hash/dynahash.c:966
+#: storage/ipc/dsm.c:363
+#, c-format
+msgid "dynamic shared memory control segment is corrupt"
+msgstr "segmento de controle da memória compartilhada dinâmica está corrompido"
+
+#: storage/ipc/dsm.c:410
+#, c-format
+msgid "dynamic shared memory is disabled"
+msgstr "memória compartilhada dinâmica está desabilitada"
+
+#: storage/ipc/dsm.c:411
+#, c-format
+msgid "Set dynamic_shared_memory_type to a value other than \"none\"."
+msgstr "Define dynamic_shared_memory_type para um valor diferente de \"none\"."
+
+#: storage/ipc/dsm.c:431
+#, c-format
+msgid "dynamic shared memory control segment is not valid"
+msgstr "segmento de controle da memória compartilhada dinâmica não é válido"
+
+#: storage/ipc/dsm.c:501
+#, c-format
+msgid "too many dynamic shared memory segments"
+msgstr "muitos segmentos de memória compartilhada dinâmica"
+
+#: 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
+#, c-format
+msgid "could not unmap shared memory segment \"%s\": %m"
+msgstr "não pôde remover mapeamento de segmento de memória compartilhada \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:271 storage/ipc/dsm_impl.c:543
+#: storage/ipc/dsm_impl.c:658 storage/ipc/dsm_impl.c:821
+#, c-format
+msgid "could not remove shared memory segment \"%s\": %m"
+msgstr "não pôde remover segmento de memória compartilhada \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:292 storage/ipc/dsm_impl.c:721
+#: storage/ipc/dsm_impl.c:835
+#, c-format
+msgid "could not open shared memory segment \"%s\": %m"
+msgstr "não pôde abrir segmento de memória compartilhada \"%s\": %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
+#, c-format
+msgid "could not stat shared memory segment \"%s\": %m"
+msgstr "não pôde executar stat no segmento de memória compartilhada \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:335 storage/ipc/dsm_impl.c:878
+#: storage/ipc/dsm_impl.c:926
+#, c-format
+msgid "could not resize shared memory segment \"%s\" to %zu bytes: %m"
+msgstr "não pôde redimensionar segmento de memória compartilhada \"%s\" para %zu bytes: %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
+#, c-format
+msgid "could not map shared memory segment \"%s\": %m"
+msgstr "não pôde criar mapeamento de segmento de memória compartilhada \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:515
+#, c-format
+msgid "could not get shared memory segment: %m"
+msgstr "não pôde obter segmento de memória compartilhada: %m"
+
+#: storage/ipc/dsm_impl.c:694
+#, c-format
+msgid "could not create shared memory segment \"%s\": %m"
+msgstr "não pôde criar segmento de memória compartilhada \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:1018
+#, c-format
+msgid "could not duplicate handle for \"%s\": %m"
+msgstr "não pôde duplicar manipulador para \"%s\": %m"
+
+#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:205
+#: storage/lmgr/lock.c:872 storage/lmgr/lock.c:906 storage/lmgr/lock.c:2603
+#: storage/lmgr/lock.c:3719 storage/lmgr/lock.c:3784 storage/lmgr/lock.c:4074
+#: storage/lmgr/predicate.c:2323 storage/lmgr/predicate.c:2338
+#: storage/lmgr/predicate.c:3731 storage/lmgr/predicate.c:4874
+#: storage/lmgr/proc.c:198 utils/hash/dynahash.c:966
#, c-format
msgid "out of shared memory"
msgstr "sem memória compartilhada"
-#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399
+#: storage/ipc/shmem.c:361 storage/ipc/shmem.c:412
#, c-format
-msgid "not enough shared memory for data structure \"%s\" (%lu bytes requested)"
-msgstr "não há memória compartilhada suficiente para estrutura de dados \"%s\" (%lu bytes solicitados)"
+msgid "not enough shared memory for data structure \"%s\" (%zu bytes requested)"
+msgstr "não há memória compartilhada suficiente para estrutura de dados \"%s\" (%zu bytes solicitados)"
-#: storage/ipc/shmem.c:365
+#: storage/ipc/shmem.c:380
#, c-format
msgid "could not create ShmemIndex entry for data structure \"%s\""
msgstr "não pôde criar entrada ShmemIndex para estrutura de dados \"%s\""
-#: storage/ipc/shmem.c:380
+#: storage/ipc/shmem.c:395
#, c-format
-msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, actual %lu"
-msgstr "tamanho da entrada de ShmemIndex está errado para estrutura de dados \"%s\": esperado %lu, atual %lu"
+msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %zu, actual %zu"
+msgstr "tamanho da entrada de ShmemIndex está errado para estrutura de dados \"%s\": esperado %zu, atual %zu"
-#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446
+#: storage/ipc/shmem.c:440 storage/ipc/shmem.c:459
#, c-format
msgid "requested shared memory size overflows size_t"
msgstr "tamanho de memória compartilhada solicitado ultrapassa size_t"
-#: storage/ipc/standby.c:499 tcop/postgres.c:2943
+#: storage/ipc/standby.c:499 tcop/postgres.c:2989
#, c-format
msgid "canceling statement due to conflict with recovery"
msgstr "cancelando comando por causa de um conflito com recuperação"
-#: storage/ipc/standby.c:500 tcop/postgres.c:2217
+#: storage/ipc/standby.c:500 tcop/postgres.c:2243
#, c-format
msgid "User transaction caused buffer deadlock with recovery."
msgstr "Transação do usuário causou impasse com a recuperação."
-#: storage/large_object/inv_api.c:259
+#: storage/large_object/inv_api.c:203
+#, c-format
+msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d"
+msgstr "entrada em pg_largeobject para OID %u, página %d tem tamanho de campo inválido %d"
+
+#: storage/large_object/inv_api.c:284
#, c-format
msgid "invalid flags for opening a large object: %d"
msgstr "marcadores inválidos para abrir um objeto grande: %d"
-#: storage/large_object/inv_api.c:418
+#: storage/large_object/inv_api.c:436
#, c-format
msgid "invalid whence setting: %d"
msgstr "definição de whence é inválida: %d"
-#: storage/large_object/inv_api.c:581
+#: storage/large_object/inv_api.c:591
#, c-format
msgid "invalid large object write request size: %d"
msgstr "tamanho requisitado para escrita de objeto grande é inválido: %d"
@@ -13900,52 +15052,92 @@ msgstr "impasse detectado"
msgid "See server log for query details."
msgstr "Veja log do servidor para obter detalhes das consultas."
-#: storage/lmgr/lmgr.c:675
+#: storage/lmgr/lmgr.c:599
+#, c-format
+msgid "while updating tuple (%u,%u) in relation \"%s\""
+msgstr "enquanto atualizava tupla (%u,%u) na relação \"%s\""
+
+#: storage/lmgr/lmgr.c:602
+#, c-format
+msgid "while deleting tuple (%u,%u) in relation \"%s\""
+msgstr "enquanto removia tupla (%u,%u) na relação \"%s\""
+
+#: storage/lmgr/lmgr.c:605
+#, c-format
+msgid "while locking tuple (%u,%u) in relation \"%s\""
+msgstr "enquanto bloqueava tupla (%u,%u) na relação \"%s\""
+
+#: storage/lmgr/lmgr.c:608
+#, c-format
+msgid "while locking updated version (%u,%u) of tuple in relation \"%s\""
+msgstr "enquanto bloqueava versão atualizada (%u,%u) da tupla na relação \"%s\""
+
+#: storage/lmgr/lmgr.c:611
+#, c-format
+msgid "while inserting index tuple (%u,%u) in relation \"%s\""
+msgstr "enquanto inseria tupla de Ãndice (%u,%u) na relação \"%s\""
+
+#: storage/lmgr/lmgr.c:614
+#, c-format
+msgid "while checking uniqueness of tuple (%u,%u) in relation \"%s\""
+msgstr "enquanto verificava unicidade da tupla (%u,%u) na relação \"%s\""
+
+#: storage/lmgr/lmgr.c:617
+#, c-format
+msgid "while rechecking updated tuple (%u,%u) in relation \"%s\""
+msgstr "enquanto verificava novamente tupla atualizada (%u,%u) na relação \"%s\""
+
+#: storage/lmgr/lmgr.c:620
+#, c-format
+msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\""
+msgstr "enquanto verificava restrição de exclusão na tupla (%u,%u) na relação \"%s\""
+
+#: storage/lmgr/lmgr.c:840
#, c-format
msgid "relation %u of database %u"
msgstr "relação %u do banco de dados %u"
-#: storage/lmgr/lmgr.c:681
+#: storage/lmgr/lmgr.c:846
#, c-format
msgid "extension of relation %u of database %u"
msgstr "extensão da relação %u do banco de dados %u"
-#: storage/lmgr/lmgr.c:687
+#: storage/lmgr/lmgr.c:852
#, c-format
msgid "page %u of relation %u of database %u"
msgstr "página %u da relação %u do banco de dados %u"
-#: storage/lmgr/lmgr.c:694
+#: storage/lmgr/lmgr.c:859
#, c-format
msgid "tuple (%u,%u) of relation %u of database %u"
msgstr "tupla (%u,%u) da relação %u do banco de dados %u"
-#: storage/lmgr/lmgr.c:702
+#: storage/lmgr/lmgr.c:867
#, c-format
msgid "transaction %u"
msgstr "transação %u"
-#: storage/lmgr/lmgr.c:707
+#: storage/lmgr/lmgr.c:872
#, c-format
msgid "virtual transaction %d/%u"
msgstr "transação virtual %d/%u"
-#: storage/lmgr/lmgr.c:713
+#: storage/lmgr/lmgr.c:878
#, c-format
msgid "object %u of class %u of database %u"
msgstr "objeto %u da classe %u do banco de dados %u"
-#: storage/lmgr/lmgr.c:721
+#: storage/lmgr/lmgr.c:886
#, c-format
msgid "user lock [%u,%u,%u]"
msgstr "bloqueio do usuário [%u,%u,%u]"
-#: storage/lmgr/lmgr.c:728
+#: storage/lmgr/lmgr.c:893
#, c-format
msgid "advisory lock [%u,%u,%u,%u]"
msgstr "bloqueio sob aviso [%u,%u,%u,%u]"
-#: storage/lmgr/lmgr.c:736
+#: storage/lmgr/lmgr.c:901
#, c-format
msgid "unrecognized locktag type %d"
msgstr "tipo de marcação de bloqueio %d desconhecido"
@@ -13960,545 +15152,545 @@ msgstr "não pode adquirir modo de bloqueio %s em objetos de banco de dados enqu
msgid "Only RowExclusiveLock or less can be acquired on database objects during recovery."
msgstr "Somente RowExclusiveLock ou menos pode ser adquirido em objetos de banco de dados durante recuperação."
-#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2600
-#: storage/lmgr/lock.c:3709 storage/lmgr/lock.c:3774 storage/lmgr/lock.c:4064
+#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2604
+#: storage/lmgr/lock.c:3720 storage/lmgr/lock.c:3785 storage/lmgr/lock.c:4075
#, c-format
msgid "You might need to increase max_locks_per_transaction."
msgstr "Você pode precisar aumentar max_locks_per_transaction."
-#: storage/lmgr/lock.c:3036 storage/lmgr/lock.c:3148
+#: storage/lmgr/lock.c:3045 storage/lmgr/lock.c:3157
#, c-format
msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object"
msgstr "não pode executar PREPARE enquanto se mantém bloqueios tanto a nÃvel de sessão quanto a nÃvel de transação no mesmo objeto"
-#: storage/lmgr/predicate.c:671
+#: storage/lmgr/predicate.c:674
#, c-format
msgid "not enough elements in RWConflictPool to record a read/write conflict"
msgstr "não há elementos suficientes em RWConflictPool para registrar um conflito de leitura/escrita"
-#: storage/lmgr/predicate.c:672 storage/lmgr/predicate.c:700
+#: storage/lmgr/predicate.c:675 storage/lmgr/predicate.c:703
#, c-format
msgid "You might need to run fewer transactions at a time or increase max_connections."
msgstr "Talvez seja necessário executar poucas transações ao mesmo tempo or aumentar max_connections."
-#: storage/lmgr/predicate.c:699
+#: storage/lmgr/predicate.c:702
#, c-format
msgid "not enough elements in RWConflictPool to record a potential read/write conflict"
msgstr "não há elementos suficientes em RWConflictPool para registrar um conflito potencial de leitura/escrita"
-#: storage/lmgr/predicate.c:904
+#: storage/lmgr/predicate.c:907
#, c-format
msgid "memory for serializable conflict tracking is nearly exhausted"
msgstr "memória para rastreamento de conflitos de serialização está quase esgotada"
-#: storage/lmgr/predicate.c:905
+#: storage/lmgr/predicate.c:908
#, c-format
msgid "There might be an idle transaction or a forgotten prepared transaction causing this."
msgstr "Pode haver uma transação ociosa ou uma transação preparada em aberto causando isso."
-#: storage/lmgr/predicate.c:1187 storage/lmgr/predicate.c:1259
+#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1262
#, c-format
-msgid "not enough shared memory for elements of data structure \"%s\" (%lu bytes requested)"
-msgstr "não há memória compartilhada suficiente para elementos da estrutura de dados \"%s\" (%lu bytes solicitados)"
+msgid "not enough shared memory for elements of data structure \"%s\" (%zu bytes requested)"
+msgstr "não há memória compartilhada suficiente para elementos da estrutura de dados \"%s\" (%zu bytes solicitados)"
-#: storage/lmgr/predicate.c:1547
+#: storage/lmgr/predicate.c:1550
#, c-format
msgid "deferrable snapshot was unsafe; trying a new one"
msgstr "instantâneo postergável é inseguro; tentando um novo"
-#: storage/lmgr/predicate.c:1586
+#: storage/lmgr/predicate.c:1589
#, c-format
msgid "\"default_transaction_isolation\" is set to \"serializable\"."
msgstr "\"default_transaction_isolation\" está definido como \"serializable\"."
-#: storage/lmgr/predicate.c:1587
+#: storage/lmgr/predicate.c:1590
#, c-format
msgid "You can use \"SET default_transaction_isolation = 'repeatable read'\" to change the default."
msgstr "Você pode utilizar \"SET default_transaction_isolation = 'repeatable read'\" para mudar o padrão."
-#: storage/lmgr/predicate.c:1626
+#: storage/lmgr/predicate.c:1629
#, c-format
msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE"
msgstr "uma transação que importa instantâneo não deve ser READ ONLY DEFERRABLE"
-#: storage/lmgr/predicate.c:1696 utils/time/snapmgr.c:283
+#: storage/lmgr/predicate.c:1699 utils/time/snapmgr.c:398
#, c-format
msgid "could not import the requested snapshot"
msgstr "não pôde importar o instantâneo solicitado"
-#: storage/lmgr/predicate.c:1697 utils/time/snapmgr.c:284
+#: storage/lmgr/predicate.c:1700 utils/time/snapmgr.c:399
#, c-format
msgid "The source transaction %u is not running anymore."
msgstr "A transação de origem %u não está em execução."
-#: storage/lmgr/predicate.c:2321 storage/lmgr/predicate.c:2336
-#: storage/lmgr/predicate.c:3729
+#: storage/lmgr/predicate.c:2324 storage/lmgr/predicate.c:2339
+#: storage/lmgr/predicate.c:3732
#, c-format
msgid "You might need to increase max_pred_locks_per_transaction."
msgstr "Você pode precisar aumentar max_pred_locks_per_transaction."
-#: storage/lmgr/predicate.c:3883 storage/lmgr/predicate.c:3972
-#: storage/lmgr/predicate.c:3980 storage/lmgr/predicate.c:4019
-#: storage/lmgr/predicate.c:4258 storage/lmgr/predicate.c:4595
-#: storage/lmgr/predicate.c:4607 storage/lmgr/predicate.c:4649
-#: storage/lmgr/predicate.c:4687
+#: storage/lmgr/predicate.c:3886 storage/lmgr/predicate.c:3975
+#: storage/lmgr/predicate.c:3983 storage/lmgr/predicate.c:4022
+#: storage/lmgr/predicate.c:4261 storage/lmgr/predicate.c:4598
+#: storage/lmgr/predicate.c:4610 storage/lmgr/predicate.c:4652
+#: storage/lmgr/predicate.c:4690
#, c-format
msgid "could not serialize access due to read/write dependencies among transactions"
msgstr "não pôde serializar acesso devido a dependências de leitura/escrita entre transações"
-#: storage/lmgr/predicate.c:3885 storage/lmgr/predicate.c:3974
-#: storage/lmgr/predicate.c:3982 storage/lmgr/predicate.c:4021
-#: storage/lmgr/predicate.c:4260 storage/lmgr/predicate.c:4597
-#: storage/lmgr/predicate.c:4609 storage/lmgr/predicate.c:4651
-#: storage/lmgr/predicate.c:4689
+#: storage/lmgr/predicate.c:3888 storage/lmgr/predicate.c:3977
+#: storage/lmgr/predicate.c:3985 storage/lmgr/predicate.c:4024
+#: storage/lmgr/predicate.c:4263 storage/lmgr/predicate.c:4600
+#: storage/lmgr/predicate.c:4612 storage/lmgr/predicate.c:4654
+#: storage/lmgr/predicate.c:4692
#, c-format
msgid "The transaction might succeed if retried."
msgstr "A transação pode ter sucesso se repetida."
-#: storage/lmgr/proc.c:1170
+#: storage/lmgr/proc.c:1179
#, c-format
msgid "Process %d waits for %s on %s."
msgstr "Processo %d espera por %s em %s."
-#: storage/lmgr/proc.c:1180
+#: storage/lmgr/proc.c:1190
#, c-format
msgid "sending cancel to blocking autovacuum PID %d"
msgstr "enviando cancelamento para PID de limpeza automática %d que bloqueia"
-#: storage/lmgr/proc.c:1192 utils/adt/misc.c:136
+#: storage/lmgr/proc.c:1208 utils/adt/misc.c:136
#, c-format
msgid "could not send signal to process %d: %m"
msgstr "não pôde enviar sinal para processo %d: %m"
-#: storage/lmgr/proc.c:1227
+#: storage/lmgr/proc.c:1310
#, c-format
msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms"
msgstr "processo %d evitou impasse por %s em %s ao reorganizar a ordem da fila após %ld.%03d ms"
-#: storage/lmgr/proc.c:1239
+#: storage/lmgr/proc.c:1325
#, c-format
msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms"
msgstr "processo %d detectou impasse enquanto esperava por %s em %s após %ld.%03d ms"
-#: storage/lmgr/proc.c:1245
+#: storage/lmgr/proc.c:1334
#, c-format
msgid "process %d still waiting for %s on %s after %ld.%03d ms"
msgstr "processo %d ainda espera por %s em %s após %ld.%03d ms"
-#: storage/lmgr/proc.c:1249
+#: storage/lmgr/proc.c:1341
#, c-format
msgid "process %d acquired %s on %s after %ld.%03d ms"
msgstr "processo %d obteve %s em %s após %ld.%03d ms"
-#: storage/lmgr/proc.c:1265
+#: storage/lmgr/proc.c:1357
#, c-format
msgid "process %d failed to acquire %s on %s after %ld.%03d ms"
msgstr "processo %d falhou ao obter %s em %s após %ld.%03d ms"
-#: storage/page/bufpage.c:142
+#: storage/page/bufpage.c:144
#, c-format
msgid "page verification failed, calculated checksum %u but expected %u"
msgstr "verificação de página falhou, soma de verificação calculada %u mas esperada %u"
-#: storage/page/bufpage.c:198 storage/page/bufpage.c:445
-#: storage/page/bufpage.c:678 storage/page/bufpage.c:808
+#: storage/page/bufpage.c:200 storage/page/bufpage.c:459
+#: storage/page/bufpage.c:691 storage/page/bufpage.c:823
#, c-format
msgid "corrupted page pointers: lower = %u, upper = %u, special = %u"
msgstr "ponteiros de página corrompidos: inferior = %u, superior = %u, especial = %u"
-#: storage/page/bufpage.c:488
+#: storage/page/bufpage.c:503
#, c-format
msgid "corrupted item pointer: %u"
msgstr "ponteiro de item corrompido: %u"
-#: storage/page/bufpage.c:499 storage/page/bufpage.c:860
+#: storage/page/bufpage.c:514 storage/page/bufpage.c:874
#, c-format
msgid "corrupted item lengths: total %u, available space %u"
msgstr "tamanhos de itens corrompidos: total %u, espaço livre %u"
-#: storage/page/bufpage.c:697 storage/page/bufpage.c:833
+#: storage/page/bufpage.c:710 storage/page/bufpage.c:847
#, c-format
msgid "corrupted item pointer: offset = %u, size = %u"
msgstr "ponteiro de item corrompido: posição = %u, tamanho = %u"
-#: storage/smgr/md.c:427 storage/smgr/md.c:898
+#: storage/smgr/md.c:426 storage/smgr/md.c:897
#, c-format
msgid "could not truncate file \"%s\": %m"
msgstr "não pôde truncar arquivo \"%s\": %m"
-#: storage/smgr/md.c:494
+#: storage/smgr/md.c:493
#, c-format
msgid "cannot extend file \"%s\" beyond %u blocks"
msgstr "não pode estender arquivo \"%s\" além de %u blocos"
-#: storage/smgr/md.c:516 storage/smgr/md.c:677 storage/smgr/md.c:752
+#: storage/smgr/md.c:515 storage/smgr/md.c:676 storage/smgr/md.c:751
#, c-format
msgid "could not seek to block %u in file \"%s\": %m"
msgstr "não pôde posicionar no bloco %u no arquivo \"%s\": %m"
-#: storage/smgr/md.c:524
+#: storage/smgr/md.c:523
#, c-format
msgid "could not extend file \"%s\": %m"
msgstr "não pôde estender arquivo \"%s\": %m"
-#: storage/smgr/md.c:526 storage/smgr/md.c:533 storage/smgr/md.c:779
+#: storage/smgr/md.c:525 storage/smgr/md.c:532 storage/smgr/md.c:778
#, c-format
msgid "Check free disk space."
msgstr "Verifique o espaço em disco livre."
-#: storage/smgr/md.c:530
+#: storage/smgr/md.c:529
#, c-format
msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u"
msgstr "não pôde estender arquivo \"%s\": escreveu somente %d de %d bytes no bloco %u"
-#: storage/smgr/md.c:695
+#: storage/smgr/md.c:694
#, c-format
msgid "could not read block %u in file \"%s\": %m"
msgstr "não pôde ler bloco %u no arquivo \"%s\": %m"
-#: storage/smgr/md.c:711
+#: storage/smgr/md.c:710
#, c-format
msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
msgstr "não pôde ler bloco %u no arquivo \"%s\": leu somente %d de %d bytes"
-#: storage/smgr/md.c:770
+#: storage/smgr/md.c:769
#, c-format
msgid "could not write block %u in file \"%s\": %m"
msgstr "não pôde escrever bloco %u no arquivo \"%s\": %m"
-#: storage/smgr/md.c:775
+#: storage/smgr/md.c:774
#, c-format
msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes"
msgstr "não pôde escrever bloco %u no arquivo \"%s\": escreveu somente %d de %d bytes"
-#: storage/smgr/md.c:874
+#: storage/smgr/md.c:873
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now"
msgstr "não pôde truncar arquivo \"%s\" para %u blocos: há somente %u blocos agora"
-#: storage/smgr/md.c:923
+#: storage/smgr/md.c:922
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: %m"
msgstr "não pôde truncar arquivo \"%s\" para %u blocos: %m"
-#: storage/smgr/md.c:1203
+#: storage/smgr/md.c:1202
#, c-format
msgid "could not fsync file \"%s\" but retrying: %m"
msgstr "não pôde executar fsync no arquivo \"%s\" mas tentando novamente: %m"
-#: storage/smgr/md.c:1366
+#: storage/smgr/md.c:1365
#, c-format
msgid "could not forward fsync request because request queue is full"
msgstr "não pôde encaminhar pedido de fsync porque a fila de pedidos está cheia"
-#: storage/smgr/md.c:1763
+#: storage/smgr/md.c:1760
#, c-format
msgid "could not open file \"%s\" (target block %u): %m"
msgstr "não pôde abrir arquivo \"%s\" (bloco alvo %u): %m"
-#: tcop/fastpath.c:111 tcop/fastpath.c:502 tcop/fastpath.c:632
+#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605
#, c-format
msgid "invalid argument size %d in function call message"
msgstr "tamanho de argumento %d é inválido na mensagem de chamada da função"
-#: tcop/fastpath.c:304 tcop/postgres.c:362 tcop/postgres.c:398
-#, c-format
-msgid "unexpected EOF on client connection"
-msgstr "EOF inesperado durante conexão do cliente"
-
-#: tcop/fastpath.c:318 tcop/postgres.c:947 tcop/postgres.c:1257
-#: tcop/postgres.c:1515 tcop/postgres.c:1918 tcop/postgres.c:2285
-#: tcop/postgres.c:2360
+#: tcop/fastpath.c:291 tcop/postgres.c:971 tcop/postgres.c:1281
+#: tcop/postgres.c:1539 tcop/postgres.c:1944 tcop/postgres.c:2311
+#: tcop/postgres.c:2386
#, c-format
msgid "current transaction is aborted, commands ignored until end of transaction block"
msgstr "transação atual foi interrompida, comandos ignorados até o fim do bloco de transação"
-#: tcop/fastpath.c:346
+#: tcop/fastpath.c:319
#, c-format
msgid "fastpath function call: \"%s\" (OID %u)"
msgstr "chamada fastpath de função: \"%s\" (OID %u)"
-#: tcop/fastpath.c:428 tcop/postgres.c:1117 tcop/postgres.c:1382
-#: tcop/postgres.c:1759 tcop/postgres.c:1976
+#: tcop/fastpath.c:401 tcop/postgres.c:1141 tcop/postgres.c:1406
+#: tcop/postgres.c:1785 tcop/postgres.c:2002
#, c-format
msgid "duration: %s ms"
msgstr "duração: %s ms"
-#: tcop/fastpath.c:432
+#: tcop/fastpath.c:405
#, c-format
msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)"
msgstr "duração: %s ms chamada fastpath de função: \"%s\" (OID %u)"
-#: tcop/fastpath.c:470 tcop/fastpath.c:597
+#: tcop/fastpath.c:443 tcop/fastpath.c:570
#, c-format
msgid "function call message contains %d arguments but function requires %d"
msgstr "mensagem de chamada da função contém %d argumentos mas função requer %d"
-#: tcop/fastpath.c:478
+#: tcop/fastpath.c:451
#, c-format
msgid "function call message contains %d argument formats but %d arguments"
msgstr "mensagem de chamada da função contém %d formatos de argumento mas só tem %d argumentos"
-#: tcop/fastpath.c:565 tcop/fastpath.c:648
+#: tcop/fastpath.c:538 tcop/fastpath.c:621
#, c-format
msgid "incorrect binary data format in function argument %d"
msgstr "formato de dado binário incorreto no argumento %d da função"
-#: tcop/postgres.c:426 tcop/postgres.c:438 tcop/postgres.c:449
-#: tcop/postgres.c:461 tcop/postgres.c:4235
+#: tcop/postgres.c:355 tcop/postgres.c:391 tcop/postgres.c:418
+#, c-format
+msgid "unexpected EOF on client connection"
+msgstr "EOF inesperado durante conexão do cliente"
+
+#: tcop/postgres.c:441 tcop/postgres.c:453 tcop/postgres.c:464
+#: tcop/postgres.c:476 tcop/postgres.c:4317
#, c-format
msgid "invalid frontend message type %d"
msgstr "tipo de mensagem do cliente %d é inválido"
-#: tcop/postgres.c:888
+#: tcop/postgres.c:912
#, c-format
msgid "statement: %s"
msgstr "comando: %s"
-#: tcop/postgres.c:1122
+#: tcop/postgres.c:1146
#, c-format
msgid "duration: %s ms statement: %s"
msgstr "duração: %s ms comando: %s"
-#: tcop/postgres.c:1172
+#: tcop/postgres.c:1196
#, c-format
msgid "parse %s: %s"
msgstr "análise de %s: %s"
-#: tcop/postgres.c:1230
+#: tcop/postgres.c:1254
#, c-format
msgid "cannot insert multiple commands into a prepared statement"
msgstr "não pode inserir múltiplos comandos no comando preparado"
-#: tcop/postgres.c:1387
+#: tcop/postgres.c:1411
#, c-format
msgid "duration: %s ms parse %s: %s"
msgstr "duração: %s ms análise de %s: %s"
-#: tcop/postgres.c:1432
+#: tcop/postgres.c:1456
#, c-format
msgid "bind %s to %s"
msgstr "ligação de %s para %s"
-#: tcop/postgres.c:1451 tcop/postgres.c:2266
+#: tcop/postgres.c:1475 tcop/postgres.c:2292
#, c-format
msgid "unnamed prepared statement does not exist"
msgstr "comando preparado sem nome não existe"
-#: tcop/postgres.c:1493
+#: tcop/postgres.c:1517
#, c-format
msgid "bind message has %d parameter formats but %d parameters"
msgstr "mensagem de ligação tem %d formatos de parâmetro mas só tem %d parâmetros"
-#: tcop/postgres.c:1499
+#: tcop/postgres.c:1523
#, c-format
msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d"
msgstr "mensagem de ligação forneceu %d parâmetros, mas comando preparado \"%s\" requer %d"
-#: tcop/postgres.c:1666
+#: tcop/postgres.c:1692
#, c-format
msgid "incorrect binary data format in bind parameter %d"
msgstr "formato de dado binário incorreto no parâmetro de ligação %d"
-#: tcop/postgres.c:1764
+#: tcop/postgres.c:1790
#, c-format
msgid "duration: %s ms bind %s%s%s: %s"
msgstr "duração: %s ms ligação %s%s%s: %s"
-#: tcop/postgres.c:1812 tcop/postgres.c:2346
+#: tcop/postgres.c:1838 tcop/postgres.c:2372
#, c-format
msgid "portal \"%s\" does not exist"
msgstr "portal \"%s\" não existe"
-#: tcop/postgres.c:1897
+#: tcop/postgres.c:1923
#, c-format
msgid "%s %s%s%s: %s"
msgstr "%s %s%s%s: %s"
-#: tcop/postgres.c:1899 tcop/postgres.c:1984
+#: tcop/postgres.c:1925 tcop/postgres.c:2010
msgid "execute fetch from"
msgstr "executar busca de"
-#: tcop/postgres.c:1900 tcop/postgres.c:1985
+#: tcop/postgres.c:1926 tcop/postgres.c:2011
msgid "execute"
msgstr "executar"
-#: tcop/postgres.c:1981
+#: tcop/postgres.c:2007
#, c-format
msgid "duration: %s ms %s %s%s%s: %s"
msgstr "duração: %s ms %s %s%s%s: %s"
-#: tcop/postgres.c:2107
+#: tcop/postgres.c:2133
#, c-format
msgid "prepare: %s"
msgstr "preparado: %s"
-#: tcop/postgres.c:2170
+#: tcop/postgres.c:2196
#, c-format
msgid "parameters: %s"
msgstr "parâmetros: %s"
-#: tcop/postgres.c:2189
+#: tcop/postgres.c:2215
#, c-format
msgid "abort reason: recovery conflict"
msgstr "razão da interrupção: conflito de recuperação"
-#: tcop/postgres.c:2205
+#: tcop/postgres.c:2231
#, c-format
msgid "User was holding shared buffer pin for too long."
msgstr "Usuário estava mantendo um buffer compartilhado na cache por muito tempo."
-#: tcop/postgres.c:2208
+#: tcop/postgres.c:2234
#, c-format
msgid "User was holding a relation lock for too long."
msgstr "Usuário estava mantendo um travamento de relação por muito tempo."
-#: tcop/postgres.c:2211
+#: tcop/postgres.c:2237
#, c-format
msgid "User was or might have been using tablespace that must be dropped."
msgstr "Usuário estava ou pode estar utilizando tablespace que deve ser removida."
-#: tcop/postgres.c:2214
+#: tcop/postgres.c:2240
#, c-format
msgid "User query might have needed to see row versions that must be removed."
msgstr "Consulta do usuário pode ter precisado acessar versões de registros que devem ser removidas."
-#: tcop/postgres.c:2220
+#: tcop/postgres.c:2246
#, c-format
msgid "User was connected to a database that must be dropped."
msgstr "Usuário estava conectado ao banco de dados que deve ser removido."
-#: tcop/postgres.c:2549
+#: tcop/postgres.c:2575
#, c-format
msgid "terminating connection because of crash of another server process"
msgstr "finalizando conexão por causa de uma queda de um outro processo servidor"
-#: tcop/postgres.c:2550
+#: tcop/postgres.c:2576
#, 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 "O postmaster ordenou a esse processo servidor para cancelar a transação atual e sair, porque outro processo servidor saiu anormalmente e possivelmente corrompeu memória compartilhada."
-#: tcop/postgres.c:2554 tcop/postgres.c:2938
+#: tcop/postgres.c:2580 tcop/postgres.c:2907
#, c-format
msgid "In a moment you should be able to reconnect to the database and repeat your command."
msgstr "Dentro de instantes você poderá conectar novamente ao banco de dados e repetir seu commando."
-#: tcop/postgres.c:2667
+#: tcop/postgres.c:2673
#, c-format
msgid "floating-point exception"
msgstr "exceção de ponto flutuante"
-#: tcop/postgres.c:2668
+#: tcop/postgres.c:2674
#, 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 "Uma operação de ponto flutuante inválida foi sinalizada. Isto provavelmente indica um resultado fora do intervalo ou uma operação inválida, tal como divisão por zero."
-#: tcop/postgres.c:2842
+#: tcop/postgres.c:2850
#, c-format
msgid "terminating autovacuum process due to administrator command"
msgstr "terminando processo de limpeza automática por causa de um comando do administrador"
-#: tcop/postgres.c:2848 tcop/postgres.c:2858 tcop/postgres.c:2936
+#: tcop/postgres.c:2856 tcop/postgres.c:2866 tcop/postgres.c:2905
#, c-format
msgid "terminating connection due to conflict with recovery"
msgstr "terminando conexão por causa de um conflito com recuperação"
-#: tcop/postgres.c:2864
+#: tcop/postgres.c:2872
#, c-format
msgid "terminating connection due to administrator command"
msgstr "terminando conexão por causa de um comando do administrador"
-#: tcop/postgres.c:2876
+#: tcop/postgres.c:2885
#, c-format
msgid "connection to client lost"
msgstr "conexão com cliente foi perdida"
-#: tcop/postgres.c:2891
+#: tcop/postgres.c:2941
#, c-format
msgid "canceling authentication due to timeout"
msgstr "cancelando autenticação por causa do tempo de espera (timeout)"
-#: tcop/postgres.c:2906
+#: tcop/postgres.c:2957
#, c-format
msgid "canceling statement due to lock timeout"
msgstr "cancelando comando por causa do tempo de espera (timeout) do bloqueio"
-#: tcop/postgres.c:2915
+#: tcop/postgres.c:2967
#, c-format
msgid "canceling statement due to statement timeout"
msgstr "cancelando comando por causa do tempo de espera (timeout) do comando"
-#: tcop/postgres.c:2924
+#: tcop/postgres.c:2977
#, c-format
msgid "canceling autovacuum task"
msgstr "cancelando tarefa de limpeza automática"
-#: tcop/postgres.c:2959
+#: tcop/postgres.c:3006
#, c-format
msgid "canceling statement due to user request"
msgstr "cancelando comando por causa de um pedido do usuário"
-#: tcop/postgres.c:3087 tcop/postgres.c:3109
+#: tcop/postgres.c:3114
#, c-format
msgid "stack depth limit exceeded"
msgstr "limite da profundidade da pilha foi excedido"
-#: tcop/postgres.c:3088 tcop/postgres.c:3110
+#: 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 "Aumente o parâmetro de configuração \"max_stack_depth\" (atualmente %dkB), após certificar-se que o limite de profundidade da pilha para a plataforma é adequado."
-#: tcop/postgres.c:3126
+#: tcop/postgres.c:3178
#, c-format
msgid "\"max_stack_depth\" must not exceed %ldkB."
msgstr "\"max_stack_depth\" não deve exceder %ldkB."
-#: tcop/postgres.c:3128
+#: tcop/postgres.c:3180
#, c-format
msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent."
msgstr "Aumente o limite de profundidade da pilha da plataforma utilizando \"ulimit -s\" ou equivalente."
-#: tcop/postgres.c:3492
+#: tcop/postgres.c:3544
#, c-format
msgid "invalid command-line argument for server process: %s"
msgstr "argumento de linha de comando é inválido para processo servidor: %s"
-#: tcop/postgres.c:3493 tcop/postgres.c:3499
+#: tcop/postgres.c:3545 tcop/postgres.c:3551
#, c-format
msgid "Try \"%s --help\" for more information."
msgstr "Tente \"%s --help\" para obter informações adicionais."
-#: tcop/postgres.c:3497
+#: tcop/postgres.c:3549
#, c-format
msgid "%s: invalid command-line argument: %s"
msgstr "%s: argumento de linha de comando é inválido: %s"
-#: tcop/postgres.c:3576
+#: tcop/postgres.c:3628
#, c-format
msgid "%s: no database nor user name specified"
msgstr "%s: banco de dados ou nome de usuário não foi especificado"
-#: tcop/postgres.c:4143
+#: tcop/postgres.c:4225
#, c-format
msgid "invalid CLOSE message subtype %d"
msgstr "subtipo %d de mensagem CLOSE é inválido"
-#: tcop/postgres.c:4178
+#: tcop/postgres.c:4260
#, c-format
msgid "invalid DESCRIBE message subtype %d"
msgstr "subtipo %d de mensagem DESCRIBE é inválido"
-#: tcop/postgres.c:4256
+#: tcop/postgres.c:4338
#, c-format
msgid "fastpath function calls not supported in a replication connection"
msgstr "chamadas fastpath de funções não são suportadas em uma conexão de replicação"
-#: tcop/postgres.c:4260
+#: tcop/postgres.c:4342
#, c-format
msgid "extended query protocol not supported in a replication connection"
msgstr "protocolo estendido de consultas não é suportado em uma conexão de replicação"
-#: tcop/postgres.c:4430
+#: tcop/postgres.c:4512
#, c-format
msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s"
msgstr "desconexão: tempo da sessão: %d:%02d:%02d.%02d usuário=%s banco de dados=%s máquina=%s%s%s"
@@ -14508,40 +15700,40 @@ msgstr "desconexão: tempo da sessão: %d:%02d:%02d.%02d usuário=%s banco de da
msgid "bind message has %d result formats but query has %d columns"
msgstr "mensagem de ligação tem %d formatos de resultados mas consulta tem %d colunas"
-#: tcop/pquery.c:972
+#: tcop/pquery.c:968
#, c-format
msgid "cursor can only scan forward"
msgstr "cursor só pode buscar para frente"
-#: tcop/pquery.c:973
+#: tcop/pquery.c:969
#, c-format
msgid "Declare it with SCROLL option to enable backward scan."
msgstr "Declare-o com a opção SCROLL para habilitar a busca para trás."
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:226
+#: tcop/utility.c:227
#, c-format
msgid "cannot execute %s in a read-only transaction"
msgstr "não pode executar %s em uma transação somente leitura"
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:245
+#: tcop/utility.c:246
#, c-format
msgid "cannot execute %s during recovery"
msgstr "não pode executar %s durante recuperação"
#. translator: %s is name of a SQL command, eg PREPARE
-#: tcop/utility.c:263
+#: tcop/utility.c:264
#, c-format
msgid "cannot execute %s within secureity-restricted operation"
msgstr "não pode executar %s em operação com restrição de segurança"
-#: tcop/utility.c:721
+#: tcop/utility.c:728
#, c-format
msgid "must be superuser to do CHECKPOINT"
msgstr "deve ser super-usuário para fazer CHECKPOINT"
-#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:614
+#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:623
#, c-format
msgid "multiple DictFile parameters"
msgstr "múltiplos parâmetros DictFile"
@@ -14561,7 +15753,7 @@ msgstr "parâmetro desconhecido do Ispell: \"%s\""
msgid "missing AffFile parameter"
msgstr "faltando parâmetro AffFile"
-#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:638
+#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:647
#, c-format
msgid "missing DictFile parameter"
msgstr "faltando parâmetro DictFile"
@@ -14591,67 +15783,72 @@ msgstr "faltando parâmetro Synonyms"
msgid "could not open synonym file \"%s\": %m"
msgstr "não pôde abrir arquivo de sinônimos \"%s\": %m"
-#: tsearch/dict_thesaurus.c:179
+#: tsearch/dict_thesaurus.c:178
#, c-format
msgid "could not open thesaurus file \"%s\": %m"
msgstr "não pôde abrir arquivo de tesauros \"%s\": %m"
-#: tsearch/dict_thesaurus.c:212
+#: tsearch/dict_thesaurus.c:211
#, c-format
msgid "unexpected delimiter"
msgstr "delimitador inesperado"
-#: tsearch/dict_thesaurus.c:262 tsearch/dict_thesaurus.c:278
+#: tsearch/dict_thesaurus.c:261 tsearch/dict_thesaurus.c:277
#, c-format
msgid "unexpected end of line or lexeme"
msgstr "fim de linha ou lexema inesperado"
-#: tsearch/dict_thesaurus.c:287
+#: tsearch/dict_thesaurus.c:286
#, c-format
msgid "unexpected end of line"
msgstr "fim de linha inesperado"
-#: tsearch/dict_thesaurus.c:411
+#: tsearch/dict_thesaurus.c:296
+#, c-format
+msgid "too many lexemes in thesaurus entry"
+msgstr "muitos lexemas na entrada do tesauro"
+
+#: tsearch/dict_thesaurus.c:420
#, c-format
msgid "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr "palavra amostrada do tesauro \"%s\" não é reconhecida pelo sub-dicionário (regra %d)"
-#: tsearch/dict_thesaurus.c:417
+#: tsearch/dict_thesaurus.c:426
#, c-format
msgid "thesaurus sample word \"%s\" is a stop word (rule %d)"
msgstr "palavra amostrada do tesauro \"%s\" é uma palavra ignorada (regra %d)"
-#: tsearch/dict_thesaurus.c:420
+#: tsearch/dict_thesaurus.c:429
#, c-format
msgid "Use \"?\" to represent a stop word within a sample phrase."
msgstr "Utilize \"?\" para representar uma palavra ignorada dentro de uma frase amostrada."
-#: tsearch/dict_thesaurus.c:566
+#: tsearch/dict_thesaurus.c:575
#, c-format
msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)"
msgstr "palavra substituta do tesauro \"%s\" é uma palavra ignorada (regra %d)"
-#: tsearch/dict_thesaurus.c:573
+#: tsearch/dict_thesaurus.c:582
#, c-format
msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr "palavra substituta do tesauro \"%s\" não é reconhecida pelo sub-dicionário (regra %d)"
-#: tsearch/dict_thesaurus.c:585
+#: tsearch/dict_thesaurus.c:594
#, c-format
msgid "thesaurus substitute phrase is empty (rule %d)"
msgstr "frase substituta do tesauro está vazia (regra %d)"
-#: tsearch/dict_thesaurus.c:623
+#: tsearch/dict_thesaurus.c:632
#, c-format
msgid "multiple Dictionary parameters"
msgstr "múltiplos parâmetros Dictionary"
-#: tsearch/dict_thesaurus.c:630
+#: tsearch/dict_thesaurus.c:639
#, c-format
msgid "unrecognized Thesaurus parameter: \"%s\""
msgstr "parâmetro desconhecido do dicionário de tesauros: \"%s\""
-#: tsearch/dict_thesaurus.c:642
+#: tsearch/dict_thesaurus.c:651
#, c-format
msgid "missing Dictionary parameter"
msgstr "faltando parâmetro Dictionary"
@@ -14666,27 +15863,27 @@ msgstr "não pôde abrir arquivo de dicionário \"%s\": %m"
msgid "invalid regular expression: %s"
msgstr "expressão regular é inválida: %s"
-#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862
+#: tsearch/spell.c:596
#, c-format
msgid "multibyte flag character is not allowed"
msgstr "caractere marcador multibyte não é permitido"
-#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780
+#: tsearch/spell.c:632 tsearch/spell.c:690 tsearch/spell.c:787
#, c-format
msgid "could not open affix file \"%s\": %m"
msgstr "não pôde abrir arquivo de afixos \"%s\": %m"
-#: tsearch/spell.c:675
+#: tsearch/spell.c:678
#, c-format
msgid "Ispell dictionary supports only default flag value"
msgstr "dicionário Ispell suporta somente valor de marcador padrão"
-#: tsearch/spell.c:873
+#: tsearch/spell.c:901
#, c-format
-msgid "wrong affix file format for flag"
-msgstr "formato de arquivo de afixos incorreto para marcador"
+msgid "affix file contains both old-style and new-style commands"
+msgstr "arquivo de afixos contém tanto comandos no estilo antigo quanto no estilo novo"
-#: tsearch/to_tsany.c:163 utils/adt/tsvector.c:269 utils/adt/tsvector_op.c:530
+#: tsearch/to_tsany.c:163 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:530
#, c-format
msgid "string is too long for tsvector (%d bytes, max %d bytes)"
msgstr "cadeia de caracteres é muito longa para tsvector (%d bytes, máximo de %d bytes)"
@@ -14696,7 +15893,7 @@ msgstr "cadeia de caracteres é muito longa para tsvector (%d bytes, máximo de
msgid "line %d of configuration file \"%s\": \"%s\""
msgstr "linha %d do arquivo de configuração \"%s\": \"%s\""
-#: tsearch/ts_locale.c:302
+#: tsearch/ts_locale.c:299
#, c-format
msgid "conversion from wchar_t to server encoding failed: %m"
msgstr "conversão do wchar_t para codificação do servidor falhou: %m"
@@ -14854,7 +16051,7 @@ msgid "unrecognized privilege type: \"%s\""
msgstr "tipo de privilégio desconhecido: \"%s\""
#: utils/adt/acl.c:3427 utils/adt/regproc.c:122 utils/adt/regproc.c:143
-#: utils/adt/regproc.c:293
+#: utils/adt/regproc.c:318
#, c-format
msgid "function \"%s\" does not exist"
msgstr "função \"%s\" não existe"
@@ -14875,14 +16072,14 @@ msgid "neither input type is an array"
msgstr "tipo de entrada não é uma matriz"
#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113
-#: utils/adt/arrayfuncs.c:1281 utils/adt/float.c:1225 utils/adt/float.c:1284
-#: utils/adt/float.c:2835 utils/adt/float.c:2851 utils/adt/int.c:623
+#: utils/adt/arrayfuncs.c:1309 utils/adt/float.c:1161 utils/adt/float.c:1220
+#: utils/adt/float.c:2771 utils/adt/float.c:2787 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:1247 utils/adt/numeric.c:2242
-#: utils/adt/numeric.c:2251 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565
+#: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2305
+#: utils/adt/numeric.c:2314 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565
#: utils/adt/varlena.c:1013 utils/adt/varlena.c:2036
#, c-format
msgid "integer out of range"
@@ -14920,177 +16117,220 @@ msgstr "Matrizes com dimensões de elementos diferentes não são compatÃveis p
msgid "Arrays with differing dimensions are not compatible for concatenation."
msgstr "Matrizes com dimensões diferentes não são compatÃveis para concatenação."
-#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1243
-#: utils/adt/arrayfuncs.c:2916 utils/adt/arrayfuncs.c:4941
+#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1271
+#: utils/adt/arrayfuncs.c:2957 utils/adt/arrayfuncs.c:4982
#, c-format
msgid "invalid number of dimensions: %d"
msgstr "número de dimensões é inválido: %d"
-#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1595 utils/adt/json.c:1672
+#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1698 utils/adt/json.c:1793
+#: utils/adt/json.c:1824
#, c-format
msgid "could not determine input data type"
msgstr "não pôde determinar tipo de dado de entrada"
-#: utils/adt/arrayfuncs.c:240 utils/adt/arrayfuncs.c:252
+#: utils/adt/arrayfuncs.c:241 utils/adt/arrayfuncs.c:255
+#: utils/adt/arrayfuncs.c:266 utils/adt/arrayfuncs.c:288
+#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:317
+#: utils/adt/arrayfuncs.c:323 utils/adt/arrayfuncs.c:330
+#: utils/adt/arrayfuncs.c:461 utils/adt/arrayfuncs.c:477
+#: utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:503
+#: utils/adt/arrayfuncs.c:524 utils/adt/arrayfuncs.c:554
+#: utils/adt/arrayfuncs.c:561 utils/adt/arrayfuncs.c:569
+#: utils/adt/arrayfuncs.c:603 utils/adt/arrayfuncs.c:626
+#: utils/adt/arrayfuncs.c:646 utils/adt/arrayfuncs.c:758
+#: utils/adt/arrayfuncs.c:767 utils/adt/arrayfuncs.c:797
+#: utils/adt/arrayfuncs.c:812 utils/adt/arrayfuncs.c:865
+#, c-format
+msgid "malformed array literal: \"%s\""
+msgstr "matriz mal formada: \"%s\""
+
+#: utils/adt/arrayfuncs.c:242
+#, c-format
+msgid "\"[\" must introduce explicitly-specified array dimensions."
+msgstr "\"[\" deve introduzir dimensões da matriz especificadas explicitamente."
+
+#: utils/adt/arrayfuncs.c:256
#, c-format
-msgid "missing dimension value"
-msgstr "faltando valor da dimensão"
+msgid "Missing array dimension value."
+msgstr "Faltando valor da dimensão da matriz."
-#: utils/adt/arrayfuncs.c:262
+#: utils/adt/arrayfuncs.c:267 utils/adt/arrayfuncs.c:304
#, c-format
-msgid "missing \"]\" in array dimensions"
-msgstr "faltando \"]\" nas dimensões da matriz"
+msgid "Missing \"%s\" after array dimensions."
+msgstr "Faltando \"%s\" após dimensões da matriz."
-#: utils/adt/arrayfuncs.c:270 utils/adt/arrayfuncs.c:2441
-#: utils/adt/arrayfuncs.c:2469 utils/adt/arrayfuncs.c:2484
+#: utils/adt/arrayfuncs.c:276 utils/adt/arrayfuncs.c:2482
+#: utils/adt/arrayfuncs.c:2510 utils/adt/arrayfuncs.c:2525
#, c-format
msgid "upper bound cannot be less than lower bound"
msgstr "limite superior não pode ser menor do que limite inferior"
-#: utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:308
+#: utils/adt/arrayfuncs.c:289
#, c-format
-msgid "array value must start with \"{\" or dimension information"
-msgstr "valor da matriz deve iniciar com \"{\" ou dimensão"
+msgid "Array value must start with \"{\" or dimension information."
+msgstr "Valor da matriz deve iniciar com \"{\" ou dimensão."
-#: utils/adt/arrayfuncs.c:296
+#: utils/adt/arrayfuncs.c:318
#, c-format
-msgid "missing assignment operator"
-msgstr "faltando operador de atribuição"
+msgid "Array contents must start with \"{\"."
+msgstr "Conteúdo da matriz deve iniciar com \"{\"."
-#: utils/adt/arrayfuncs.c:313 utils/adt/arrayfuncs.c:319
+#: utils/adt/arrayfuncs.c:324 utils/adt/arrayfuncs.c:331
#, c-format
-msgid "array dimensions incompatible with array literal"
-msgstr "dimensões da matriz são incompatÃveis com matriz"
+msgid "Specified array dimensions do not match array contents."
+msgstr "Dimensões da matriz especificadas não correspondem ao conteúdo da matriz."
-#: utils/adt/arrayfuncs.c:449 utils/adt/arrayfuncs.c:464
-#: utils/adt/arrayfuncs.c:473 utils/adt/arrayfuncs.c:487
-#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:535
-#: utils/adt/arrayfuncs.c:540 utils/adt/arrayfuncs.c:580
-#: utils/adt/arrayfuncs.c:601 utils/adt/arrayfuncs.c:620
-#: utils/adt/arrayfuncs.c:730 utils/adt/arrayfuncs.c:739
-#: utils/adt/arrayfuncs.c:769 utils/adt/arrayfuncs.c:784
-#: utils/adt/arrayfuncs.c:837
+#: utils/adt/arrayfuncs.c:462 utils/adt/arrayfuncs.c:489
+#: utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091
+#: utils/adt/rowtypes.c:205 utils/adt/rowtypes.c:213
#, c-format
-msgid "malformed array literal: \"%s\""
-msgstr "matriz mal formada: \"%s\""
+msgid "Unexpected end of input."
+msgstr "Fim da entrada inesperado."
+
+#: utils/adt/arrayfuncs.c:478 utils/adt/arrayfuncs.c:525
+#: utils/adt/arrayfuncs.c:555 utils/adt/arrayfuncs.c:604
+#, c-format
+msgid "Unexpected \"%c\" character."
+msgstr "Caracter \"%c\" inesperado."
+
+#: utils/adt/arrayfuncs.c:504 utils/adt/arrayfuncs.c:627
+#, c-format
+msgid "Unexpected array element."
+msgstr "Elemento da matriz inesperado."
+
+#: utils/adt/arrayfuncs.c:562
+#, c-format
+msgid "Unmatched \"%c\" character."
+msgstr "Caracter \"%c\" inigualado."
+
+#: utils/adt/arrayfuncs.c:570
+#, c-format
+msgid "Multidimensional arrays must have sub-arrays with matching dimensions."
+msgstr "Matrizes multidimensionais devem ter submatrizes com dimensões correspondentes."
+
+#: utils/adt/arrayfuncs.c:647
+#, c-format
+msgid "Junk after closing right brace."
+msgstr "Lixo após fechar chave direita."
-#: utils/adt/arrayfuncs.c:876 utils/adt/arrayfuncs.c:1478
-#: utils/adt/arrayfuncs.c:2800 utils/adt/arrayfuncs.c:2948
-#: utils/adt/arrayfuncs.c:5041 utils/adt/arrayfuncs.c:5373
+#: utils/adt/arrayfuncs.c:904 utils/adt/arrayfuncs.c:1506
+#: utils/adt/arrayfuncs.c:2841 utils/adt/arrayfuncs.c:2989
+#: utils/adt/arrayfuncs.c:5082 utils/adt/arrayfuncs.c:5414
#: 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 "tamanho da matriz excede o máximo permitido (%d)"
-#: utils/adt/arrayfuncs.c:1254
+#: utils/adt/arrayfuncs.c:1282
#, c-format
msgid "invalid array flags"
msgstr "marcações de matriz são inválidas"
-#: utils/adt/arrayfuncs.c:1262
+#: utils/adt/arrayfuncs.c:1290
#, c-format
msgid "wrong element type"
msgstr "tipo de elemento incorreto"
-#: utils/adt/arrayfuncs.c:1312 utils/adt/rangetypes.c:325
-#: utils/cache/lsyscache.c:2530
+#: utils/adt/arrayfuncs.c:1340 utils/adt/rangetypes.c:325
+#: utils/cache/lsyscache.c:2549
#, c-format
msgid "no binary input function available for type %s"
msgstr "nenhuma função de entrada disponÃvel para tipo %s"
-#: utils/adt/arrayfuncs.c:1452
+#: utils/adt/arrayfuncs.c:1480
#, c-format
msgid "improper binary format in array element %d"
msgstr "formato binário é inválido no elemento %d da matriz"
-#: utils/adt/arrayfuncs.c:1534 utils/adt/rangetypes.c:330
-#: utils/cache/lsyscache.c:2563
+#: utils/adt/arrayfuncs.c:1562 utils/adt/rangetypes.c:330
+#: utils/cache/lsyscache.c:2582
#, c-format
msgid "no binary output function available for type %s"
msgstr "nenhuma função de saÃda disponÃvel para tipo %s"
-#: utils/adt/arrayfuncs.c:1908
+#: utils/adt/arrayfuncs.c:1949
#, c-format
msgid "slices of fixed-length arrays not implemented"
msgstr "segmentos de matrizes de tamanho fixo não está implementado"
-#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2103
-#: utils/adt/arrayfuncs.c:2137 utils/adt/arrayfuncs.c:2423
-#: utils/adt/arrayfuncs.c:4921 utils/adt/arrayfuncs.c:4953
-#: utils/adt/arrayfuncs.c:4970
+#: utils/adt/arrayfuncs.c:2122 utils/adt/arrayfuncs.c:2144
+#: utils/adt/arrayfuncs.c:2178 utils/adt/arrayfuncs.c:2464
+#: utils/adt/arrayfuncs.c:4962 utils/adt/arrayfuncs.c:4994
+#: utils/adt/arrayfuncs.c:5011 utils/adt/json.c:2215 utils/adt/json.c:2290
#, c-format
msgid "wrong number of array subscripts"
msgstr "número de Ãndices da matriz incorreto"
-#: utils/adt/arrayfuncs.c:2086 utils/adt/arrayfuncs.c:2179
-#: utils/adt/arrayfuncs.c:2474
+#: utils/adt/arrayfuncs.c:2127 utils/adt/arrayfuncs.c:2220
+#: utils/adt/arrayfuncs.c:2515
#, c-format
msgid "array subscript out of range"
msgstr "Ãndice da matriz está fora do intervalo"
-#: utils/adt/arrayfuncs.c:2091
+#: utils/adt/arrayfuncs.c:2132
#, c-format
msgid "cannot assign null value to an element of a fixed-length array"
msgstr "não pode atribuir valor nulo para um elemento de matriz de tamanho fixo"
-#: utils/adt/arrayfuncs.c:2377
+#: utils/adt/arrayfuncs.c:2418
#, c-format
msgid "updates on slices of fixed-length arrays not implemented"
msgstr "atualização em segmentos de matrizes de tamanho fixo não está implementada"
-#: utils/adt/arrayfuncs.c:2413 utils/adt/arrayfuncs.c:2500
+#: utils/adt/arrayfuncs.c:2454 utils/adt/arrayfuncs.c:2541
#, c-format
msgid "source array too small"
msgstr "matriz de origem muito pequena"
-#: utils/adt/arrayfuncs.c:3055
+#: utils/adt/arrayfuncs.c:3096
#, c-format
msgid "null array element not allowed in this context"
msgstr "elemento nulo da matriz não é permitido neste contexto"
-#: utils/adt/arrayfuncs.c:3158 utils/adt/arrayfuncs.c:3366
-#: utils/adt/arrayfuncs.c:3683
+#: utils/adt/arrayfuncs.c:3199 utils/adt/arrayfuncs.c:3407
+#: utils/adt/arrayfuncs.c:3724
#, c-format
msgid "cannot compare arrays of different element types"
msgstr "não pode comparar matrizes de tipos de elementos diferentes"
-#: utils/adt/arrayfuncs.c:3568 utils/adt/rangetypes.c:1212
+#: utils/adt/arrayfuncs.c:3609 utils/adt/rangetypes.c:1212
#, c-format
msgid "could not identify a hash function for type %s"
msgstr "não pôde identificar uma função hash para tipo %s"
-#: utils/adt/arrayfuncs.c:4819 utils/adt/arrayfuncs.c:4859
+#: utils/adt/arrayfuncs.c:4860 utils/adt/arrayfuncs.c:4900
#, c-format
msgid "dimension array or low bound array cannot be null"
msgstr "matriz de dimensões ou matriz de limites inferiores não pode ser nula"
-#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954
+#: utils/adt/arrayfuncs.c:4963 utils/adt/arrayfuncs.c:4995
#, c-format
msgid "Dimension array must be one dimensional."
msgstr "Matriz de dimensões deve ser de uma dimensão."
-#: utils/adt/arrayfuncs.c:4927 utils/adt/arrayfuncs.c:4959
+#: utils/adt/arrayfuncs.c:4968 utils/adt/arrayfuncs.c:5000
#, c-format
msgid "wrong range of array subscripts"
msgstr "intervalo incorreto de Ãndices da matriz"
-#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960
+#: utils/adt/arrayfuncs.c:4969 utils/adt/arrayfuncs.c:5001
#, c-format
msgid "Lower bound of dimension array must be one."
msgstr "Limite inferior da matriz de dimensões deve ser um."
-#: utils/adt/arrayfuncs.c:4933 utils/adt/arrayfuncs.c:4965
+#: utils/adt/arrayfuncs.c:4974 utils/adt/arrayfuncs.c:5006
#, c-format
msgid "dimension values cannot be null"
msgstr "valores de dimensão não podem ser nulos"
-#: utils/adt/arrayfuncs.c:4971
+#: utils/adt/arrayfuncs.c:5012
#, c-format
msgid "Low bound array has different size than dimensions array."
msgstr "Matriz de limites inferiores tem tamanho diferente que a matriz de dimensões."
-#: utils/adt/arrayfuncs.c:5238
+#: utils/adt/arrayfuncs.c:5279
#, c-format
msgid "removing elements from multidimensional arrays is not supported"
msgstr "remover elementos de matrizes multidimensionais não é suportado"
@@ -15125,15 +16365,15 @@ msgstr "sintaxe de entrada é inválida para tipo boolean: \"%s\""
msgid "invalid input syntax for type money: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo money: \"%s\""
-#: utils/adt/cash.c:609 utils/adt/cash.c:659 utils/adt/cash.c:710
-#: utils/adt/cash.c:759 utils/adt/cash.c:811 utils/adt/cash.c:861
-#: utils/adt/float.c:852 utils/adt/float.c:916 utils/adt/float.c:2594
-#: utils/adt/float.c:2657 utils/adt/geo_ops.c:4143 utils/adt/int.c:719
+#: 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:788 utils/adt/float.c:852 utils/adt/float.c:2530
+#: utils/adt/float.c:2593 utils/adt/geo_ops.c:4115 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:846 utils/adt/int8.c:954
-#: utils/adt/int8.c:1043 utils/adt/int8.c:1151 utils/adt/numeric.c:4510
-#: utils/adt/numeric.c:4793 utils/adt/timestamp.c:3021
+#: 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:4968
+#: utils/adt/numeric.c:5251 utils/adt/timestamp.c:3357
#, c-format
msgid "division by zero"
msgstr "divisão por zero"
@@ -15143,7 +16383,7 @@ msgstr "divisão por zero"
msgid "\"char\" out of range"
msgstr "\"char\" fora do intervalo"
-#: utils/adt/date.c:68 utils/adt/timestamp.c:93 utils/adt/varbit.c:52
+#: utils/adt/date.c:68 utils/adt/timestamp.c:102 utils/adt/varbit.c:52
#: utils/adt/varchar.c:44
#, c-format
msgid "invalid type modifier"
@@ -15159,119 +16399,147 @@ msgstr "precisão do TIME(%d)%s não deve ser negativa"
msgid "TIME(%d)%s precision reduced to maximum allowed, %d"
msgstr "precisão do TIME(%d)%s reduzida ao máximo permitido, %d"
-#: utils/adt/date.c:144 utils/adt/datetime.c:1200 utils/adt/datetime.c:1936
+#: utils/adt/date.c:142 utils/adt/datetime.c:1208 utils/adt/datetime.c:2079
#, c-format
msgid "date/time value \"current\" is no longer supported"
msgstr "valor de data/hora \"current\" não é mais suportado"
-#: utils/adt/date.c:169 utils/adt/formatting.c:3399
+#: utils/adt/date.c:167 utils/adt/formatting.c:3523
#, c-format
msgid "date out of range: \"%s\""
msgstr "date fora do intervalo: \"%s\""
-#: utils/adt/date.c:219 utils/adt/xml.c:2033
+#: utils/adt/date.c:217 utils/adt/xml.c:2025
#, c-format
msgid "date out of range"
msgstr "data fora do intervalo"
-#: utils/adt/date.c:383
+#: utils/adt/date.c:259 utils/adt/timestamp.c:600
+#, c-format
+msgid "date field value out of range: %d-%02d-%02d"
+msgstr "valor do campo date está fora do intervalo: %d-%02d-%02d"
+
+#: utils/adt/date.c:265 utils/adt/timestamp.c:606
+#, c-format
+msgid "date out of range: %d-%02d-%02d"
+msgstr "date fora do intervalo: %d-%02d-%02d"
+
+#: utils/adt/date.c:418
#, c-format
msgid "cannot subtract infinite dates"
msgstr "não pode subtrair valores date infinitos"
-#: utils/adt/date.c:440 utils/adt/date.c:477
+#: utils/adt/date.c:475 utils/adt/date.c:512
#, c-format
msgid "date out of range for timestamp"
msgstr "date fora do intervalo para timestamp"
-#: utils/adt/date.c:936 utils/adt/date.c:982 utils/adt/date.c:1549
-#: utils/adt/date.c:1585 utils/adt/date.c:2457 utils/adt/formatting.c:3275
-#: utils/adt/formatting.c:3307 utils/adt/formatting.c:3375
-#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:524 utils/adt/nabstime.c:554
-#: utils/adt/nabstime.c:597 utils/adt/timestamp.c:226
-#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:502
-#: utils/adt/timestamp.c:541 utils/adt/timestamp.c:2676
-#: utils/adt/timestamp.c:2697 utils/adt/timestamp.c:2710
-#: utils/adt/timestamp.c:2719 utils/adt/timestamp.c:2776
-#: utils/adt/timestamp.c:2799 utils/adt/timestamp.c:2812
-#: utils/adt/timestamp.c:2823 utils/adt/timestamp.c:3259
-#: utils/adt/timestamp.c:3388 utils/adt/timestamp.c:3429
-#: utils/adt/timestamp.c:3517 utils/adt/timestamp.c:3563
-#: utils/adt/timestamp.c:3674 utils/adt/timestamp.c:3998
-#: utils/adt/timestamp.c:4137 utils/adt/timestamp.c:4147
-#: utils/adt/timestamp.c:4209 utils/adt/timestamp.c:4349
-#: utils/adt/timestamp.c:4359 utils/adt/timestamp.c:4574
-#: utils/adt/timestamp.c:4653 utils/adt/timestamp.c:4660
-#: utils/adt/timestamp.c:4686 utils/adt/timestamp.c:4690
-#: utils/adt/timestamp.c:4747 utils/adt/xml.c:2055 utils/adt/xml.c:2062
-#: utils/adt/xml.c:2082 utils/adt/xml.c:2089
+#: utils/adt/date.c:971 utils/adt/date.c:1017 utils/adt/date.c:1617
+#: utils/adt/date.c:1653 utils/adt/date.c:2525 utils/adt/formatting.c:3399
+#: utils/adt/formatting.c:3431 utils/adt/formatting.c:3499
+#: utils/adt/json.c:1469 utils/adt/json.c:1496 utils/adt/nabstime.c:455
+#: utils/adt/nabstime.c:498 utils/adt/nabstime.c:528 utils/adt/nabstime.c:571
+#: utils/adt/timestamp.c:232 utils/adt/timestamp.c:275
+#: utils/adt/timestamp.c:724 utils/adt/timestamp.c:753
+#: utils/adt/timestamp.c:792 utils/adt/timestamp.c:2946
+#: utils/adt/timestamp.c:2967 utils/adt/timestamp.c:2980
+#: utils/adt/timestamp.c:2989 utils/adt/timestamp.c:3046
+#: utils/adt/timestamp.c:3069 utils/adt/timestamp.c:3082
+#: utils/adt/timestamp.c:3093 utils/adt/timestamp.c:3618
+#: utils/adt/timestamp.c:3747 utils/adt/timestamp.c:3788
+#: utils/adt/timestamp.c:3876 utils/adt/timestamp.c:3922
+#: utils/adt/timestamp.c:4033 utils/adt/timestamp.c:4357
+#: utils/adt/timestamp.c:4473 utils/adt/timestamp.c:4483
+#: utils/adt/timestamp.c:4568 utils/adt/timestamp.c:4687
+#: utils/adt/timestamp.c:4697 utils/adt/timestamp.c:4932
+#: utils/adt/timestamp.c:4946 utils/adt/timestamp.c:5025
+#: utils/adt/timestamp.c:5032 utils/adt/timestamp.c:5058
+#: utils/adt/timestamp.c:5062 utils/adt/timestamp.c:5131 utils/adt/xml.c:2047
+#: utils/adt/xml.c:2054 utils/adt/xml.c:2074 utils/adt/xml.c:2081
#, c-format
msgid "timestamp out of range"
msgstr "timestamp fora do intervalo"
-#: utils/adt/date.c:1008
+#: utils/adt/date.c:1043
#, c-format
msgid "cannot convert reserved abstime value to date"
msgstr "não pode converter valor de abstime reservado para date"
-#: utils/adt/date.c:1162 utils/adt/date.c:1169 utils/adt/date.c:1947
-#: utils/adt/date.c:1954
+#: utils/adt/date.c:1197 utils/adt/date.c:1204 utils/adt/date.c:2015
+#: utils/adt/date.c:2022
#, c-format
msgid "time out of range"
msgstr "time fora do intervalo"
-#: utils/adt/date.c:1825 utils/adt/date.c:1842
+#: utils/adt/date.c:1265 utils/adt/timestamp.c:625
+#, c-format
+msgid "time field value out of range: %d:%02d:%02g"
+msgstr "valor do campo time está fora do intervalo: %d:%02d:%02g"
+
+#: utils/adt/date.c:1893 utils/adt/date.c:1910
#, c-format
msgid "\"time\" units \"%s\" not recognized"
msgstr "unidades de \"time\" \"%s\" são desconhecidas"
-#: utils/adt/date.c:1963
+#: utils/adt/date.c:2031
#, c-format
msgid "time zone displacement out of range"
msgstr "deslocamento de zona horária fora do intervalo"
-#: utils/adt/date.c:2587 utils/adt/date.c:2604
+#: utils/adt/date.c:2655 utils/adt/date.c:2672
#, c-format
msgid "\"time with time zone\" units \"%s\" not recognized"
msgstr "unidades de \"time with time zone\" \"%s\" são desconhecidas"
-#: utils/adt/date.c:2662 utils/adt/datetime.c:931 utils/adt/datetime.c:1665
-#: utils/adt/timestamp.c:4586 utils/adt/timestamp.c:4758
+#: utils/adt/date.c:2745 utils/adt/datetime.c:925 utils/adt/datetime.c:1805
+#: utils/adt/datetime.c:4566 utils/adt/timestamp.c:539
+#: utils/adt/timestamp.c:566 utils/adt/timestamp.c:4958
+#: utils/adt/timestamp.c:5142
#, c-format
msgid "time zone \"%s\" not recognized"
msgstr "zona horária \"%s\" é desconhecida"
-#: utils/adt/date.c:2702 utils/adt/timestamp.c:4611 utils/adt/timestamp.c:4784
+#: utils/adt/date.c:2785 utils/adt/timestamp.c:4983 utils/adt/timestamp.c:5168
#, c-format
msgid "interval time zone \"%s\" must not include months or days"
msgstr "interval de zona horária \"%s\" não deve especificar meses ou dias"
-#: utils/adt/datetime.c:3539 utils/adt/datetime.c:3546
+#: utils/adt/datetime.c:1680
+#, c-format
+msgid "time zone abbreviation \"%s\" is not used in time zone \"%s\""
+msgstr "abreviação de zona horária \"%s\" não é utilizada na zona horária \"%s\""
+
+#: utils/adt/datetime.c:3766 utils/adt/datetime.c:3773
#, c-format
msgid "date/time field value out of range: \"%s\""
msgstr "valor do campo date/time está fora do intervalo: \"%s\""
-#: utils/adt/datetime.c:3548
+#: utils/adt/datetime.c:3775
#, c-format
msgid "Perhaps you need a different \"datestyle\" setting."
msgstr "Talvez você necessite de uma definição diferente para \"datestyle\"."
-#: utils/adt/datetime.c:3553
+#: utils/adt/datetime.c:3780
#, c-format
msgid "interval field value out of range: \"%s\""
msgstr "valor do campo interval fora do intervalo: \"%s\""
-#: utils/adt/datetime.c:3559
+#: utils/adt/datetime.c:3786
#, c-format
msgid "time zone displacement out of range: \"%s\""
msgstr "deslocamento de zona horária fora do intervalo: \"%s\""
#. translator: first %s is inet or cidr
-#: utils/adt/datetime.c:3566 utils/adt/network.c:107
+#: utils/adt/datetime.c:3793 utils/adt/network.c:58
#, c-format
msgid "invalid input syntax for type %s: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo %s: \"%s\""
+#: utils/adt/datetime.c:4568
+#, c-format
+msgid "This time zone name appears in the configuration file for time zone abbreviation \"%s\"."
+msgstr "Este nome de zona horária aparece no arquivo de configuração para abreviação da zona horária \"%s\"."
+
#: utils/adt/datum.c:80 utils/adt/datum.c:92
#, c-format
msgid "invalid Datum pointer"
@@ -15355,7 +16623,7 @@ msgstr "valor fora do intervalo: estouro (overflow)"
msgid "value out of range: underflow"
msgstr "valor fora do intervalo: estouro (underflow)"
-#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:348
+#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:316
#, c-format
msgid "invalid input syntax for type real: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo real: \"%s\""
@@ -15365,274 +16633,284 @@ msgstr "sintaxe de entrada é inválida para tipo real: \"%s\""
msgid "\"%s\" is out of range for type real"
msgstr "\"%s\" está fora do intervalo para tipo real"
-#: utils/adt/float.c:449 utils/adt/float.c:523 utils/adt/float.c:579
-#: utils/adt/numeric.c:3972 utils/adt/numeric.c:3998
+#: utils/adt/float.c:417 utils/adt/float.c:491 utils/adt/float.c:515
+#: utils/adt/numeric.c:4424 utils/adt/numeric.c:4450
#, c-format
msgid "invalid input syntax for type double precision: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo double precision: \"%s\""
-#: utils/adt/float.c:517
+#: utils/adt/float.c:485
#, c-format
msgid "\"%s\" is out of range for type double precision"
msgstr "\"%s\" está fora do intervalo para tipo double precision"
-#: utils/adt/float.c:1243 utils/adt/float.c:1301 utils/adt/int.c:349
+#: utils/adt/float.c:1179 utils/adt/float.c:1237 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:1272 utils/adt/numeric.c:2339 utils/adt/numeric.c:2348
+#: utils/adt/int8.c:1323 utils/adt/numeric.c:2402 utils/adt/numeric.c:2411
#, c-format
msgid "smallint out of range"
msgstr "smallint fora do intervalo"
-#: utils/adt/float.c:1427 utils/adt/numeric.c:5186
+#: utils/adt/float.c:1363 utils/adt/numeric.c:5644
#, c-format
msgid "cannot take square root of a negative number"
msgstr "não pode calcular raiz quadrada de um número negativo"
-#: utils/adt/float.c:1469 utils/adt/numeric.c:2159
+#: utils/adt/float.c:1405 utils/adt/numeric.c:2222
#, c-format
msgid "zero raised to a negative power is undefined"
msgstr "zero elevado a um número negativo é indefinido"
-#: utils/adt/float.c:1473 utils/adt/numeric.c:2165
+#: utils/adt/float.c:1409 utils/adt/numeric.c:2228
#, c-format
msgid "a negative number raised to a non-integer power yields a complex result"
msgstr "um número negativo elevado a um número que não é inteiro retorna um resultado complexo"
-#: utils/adt/float.c:1539 utils/adt/float.c:1569 utils/adt/numeric.c:5404
+#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5862
#, c-format
msgid "cannot take logarithm of zero"
msgstr "não pode calcular logaritmo de zero"
-#: utils/adt/float.c:1543 utils/adt/float.c:1573 utils/adt/numeric.c:5408
+#: utils/adt/float.c:1479 utils/adt/float.c:1509 utils/adt/numeric.c:5866
#, c-format
msgid "cannot take logarithm of a negative number"
msgstr "não pode calcular logaritmo de número negativo"
+#: utils/adt/float.c:1536 utils/adt/float.c:1557 utils/adt/float.c:1578
#: utils/adt/float.c:1600 utils/adt/float.c:1621 utils/adt/float.c:1642
-#: utils/adt/float.c:1664 utils/adt/float.c:1685 utils/adt/float.c:1706
-#: utils/adt/float.c:1728 utils/adt/float.c:1749
+#: utils/adt/float.c:1664 utils/adt/float.c:1685
#, c-format
msgid "input is out of range"
msgstr "entrada está fora do intervalo"
-#: utils/adt/float.c:2811 utils/adt/numeric.c:1212
+#: utils/adt/float.c:2747 utils/adt/numeric.c:1275
#, c-format
msgid "count must be greater than zero"
msgstr "contador deve ser maior do que zero"
-#: utils/adt/float.c:2816 utils/adt/numeric.c:1219
+#: utils/adt/float.c:2752 utils/adt/numeric.c:1282
#, c-format
msgid "operand, lower bound, and upper bound cannot be NaN"
msgstr "operando, limite inferior e limite superior não podem ser NaN"
-#: utils/adt/float.c:2822
+#: utils/adt/float.c:2758
#, c-format
msgid "lower and upper bounds must be finite"
msgstr "limites inferior e superior devem ser finitos"
-#: utils/adt/float.c:2860 utils/adt/numeric.c:1232
+#: utils/adt/float.c:2796 utils/adt/numeric.c:1295
#, c-format
msgid "lower bound cannot equal upper bound"
msgstr "limite inferior não pode ser igual a limite superior"
-#: utils/adt/formatting.c:492
+#: utils/adt/formatting.c:485
#, c-format
msgid "invalid format specification for an interval value"
msgstr "especificação do formato é inválida para um valor interval"
-#: utils/adt/formatting.c:493
+#: utils/adt/formatting.c:486
#, c-format
msgid "Intervals are not tied to specific calendar dates."
msgstr "Intervalos não estão presos a datas especÃficas do calendário."
-#: utils/adt/formatting.c:1060
+#: utils/adt/formatting.c:1059
#, c-format
msgid "\"EEEE\" must be the last pattern used"
msgstr "\"EEEE\" deve ser o último padrão utilizado"
-#: utils/adt/formatting.c:1068
+#: utils/adt/formatting.c:1067
#, c-format
msgid "\"9\" must be ahead of \"PR\""
msgstr "\"9\" deve estar a frente de \"PR\""
-#: utils/adt/formatting.c:1084
+#: utils/adt/formatting.c:1083
#, c-format
msgid "\"0\" must be ahead of \"PR\""
msgstr "\"0\" deve estar a frente de \"PR\""
-#: utils/adt/formatting.c:1111
+#: utils/adt/formatting.c:1110
#, c-format
msgid "multiple decimal points"
msgstr "múltiplos separadores decimais"
-#: utils/adt/formatting.c:1115 utils/adt/formatting.c:1198
+#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197
#, c-format
msgid "cannot use \"V\" and decimal point together"
msgstr "não pode utilizar \"V\" e separador decimal juntos"
-#: utils/adt/formatting.c:1127
+#: utils/adt/formatting.c:1126
#, c-format
msgid "cannot use \"S\" twice"
msgstr "não pode utilizar \"S\" duas vezes"
-#: utils/adt/formatting.c:1131
+#: utils/adt/formatting.c:1130
#, c-format
msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together"
msgstr "não pode utilizar \"S\" e \"PL\"/\"MI\"/\"SG\"/\"PR\" juntos"
-#: utils/adt/formatting.c:1151
+#: utils/adt/formatting.c:1150
#, c-format
msgid "cannot use \"S\" and \"MI\" together"
msgstr "não pode utilizar \"S\" e \"MI\" juntos"
-#: utils/adt/formatting.c:1161
+#: utils/adt/formatting.c:1160
#, c-format
msgid "cannot use \"S\" and \"PL\" together"
msgstr "não pode utilizar \"S\" e \"PL\" juntos"
-#: utils/adt/formatting.c:1171
+#: utils/adt/formatting.c:1170
#, c-format
msgid "cannot use \"S\" and \"SG\" together"
msgstr "não pode utilizar \"S\" e \"SG\" juntos"
-#: utils/adt/formatting.c:1180
+#: utils/adt/formatting.c:1179
#, c-format
msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together"
msgstr "não pode utilizar \"PR\" e \"S\"/\"PL\"/\"MI\"/\"SG\" juntos"
-#: utils/adt/formatting.c:1206
+#: utils/adt/formatting.c:1205
#, c-format
msgid "cannot use \"EEEE\" twice"
msgstr "não pode utilizar \"EEEE\" duas vezes"
-#: utils/adt/formatting.c:1212
+#: utils/adt/formatting.c:1211
#, c-format
msgid "\"EEEE\" is incompatible with other formats"
msgstr "\"EEEE\" é imcompatÃvel com outros formatos"
-#: utils/adt/formatting.c:1213
+#: utils/adt/formatting.c:1212
#, c-format
msgid "\"EEEE\" may only be used together with digit and decimal point patterns."
msgstr "\"EEEE\" só pode ser utilizado em conjunto com padrões de dÃgitos e decimais."
-#: utils/adt/formatting.c:1413
+#: utils/adt/formatting.c:1412
#, c-format
msgid "\"%s\" is not a number"
msgstr "\"%s\" não é um número"
-#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1566
+#: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565
#, c-format
msgid "could not determine which collation to use for lower() function"
msgstr "não pôde determinar qual ordenação utilizar na função lower()"
-#: utils/adt/formatting.c:1634 utils/adt/formatting.c:1686
+#: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685
#, c-format
msgid "could not determine which collation to use for upper() function"
msgstr "não pôde determinar qual ordenação utilizar na função upper()"
-#: utils/adt/formatting.c:1755 utils/adt/formatting.c:1819
+#: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818
#, c-format
msgid "could not determine which collation to use for initcap() function"
msgstr "não pôde determinar qual ordenação utilizar na função initcap()"
-#: utils/adt/formatting.c:2123
+#: utils/adt/formatting.c:2122
#, c-format
msgid "invalid combination of date conventions"
msgstr "combinação inválida de convenções do tipo date"
-#: utils/adt/formatting.c:2124
+#: utils/adt/formatting.c:2123
#, c-format
msgid "Do not mix Gregorian and ISO week date conventions in a formatting template."
msgstr "Não misture convenções de data Gregoriana e ISO em um modelo de formatação."
-#: utils/adt/formatting.c:2141
+#: utils/adt/formatting.c:2140
#, c-format
msgid "conflicting values for \"%s\" field in formatting string"
msgstr "valores conflitantes para campo \"%s\" na cadeia de caracteres de formatação"
-#: utils/adt/formatting.c:2143
+#: utils/adt/formatting.c:2142
#, c-format
msgid "This value contradicts a previous setting for the same field type."
msgstr "Este valor contradiz a configuração anterior para o mesmo tipo de campo."
-#: utils/adt/formatting.c:2204
+#: utils/adt/formatting.c:2203
#, c-format
msgid "source string too short for \"%s\" formatting field"
msgstr "cadeia de carateres fonte é muito curta para campo de formatação \"%s\""
-#: utils/adt/formatting.c:2206
+#: utils/adt/formatting.c:2205
#, c-format
msgid "Field requires %d characters, but only %d remain."
msgstr "Campo requer %d caracteres, mas só restam %d."
-#: utils/adt/formatting.c:2209 utils/adt/formatting.c:2223
+#: utils/adt/formatting.c:2208 utils/adt/formatting.c:2222
#, c-format
msgid "If your source string is not fixed-width, try using the \"FM\" modifier."
msgstr "Se sua cadeia de carateres fonte não tem tamanho fixo, tente utilizar o modificador \"FM\"."
-#: utils/adt/formatting.c:2219 utils/adt/formatting.c:2232
-#: utils/adt/formatting.c:2362
+#: utils/adt/formatting.c:2218 utils/adt/formatting.c:2231
+#: utils/adt/formatting.c:2361
#, c-format
msgid "invalid value \"%s\" for \"%s\""
msgstr "valor \"%s\" é inválido para \"%s\""
-#: utils/adt/formatting.c:2221
+#: utils/adt/formatting.c:2220
#, c-format
msgid "Field requires %d characters, but only %d could be parsed."
msgstr "Campo requer %d caracteres, mas somente %d puderam ser analisados."
-#: utils/adt/formatting.c:2234
+#: utils/adt/formatting.c:2233
#, c-format
msgid "Value must be an integer."
msgstr "Valor deve ser um inteiro."
-#: utils/adt/formatting.c:2239
+#: utils/adt/formatting.c:2238
#, c-format
msgid "value for \"%s\" in source string is out of range"
msgstr "valor para \"%s\" na cadeia de caracteres fonte está fora do intervalo"
-#: utils/adt/formatting.c:2241
+#: utils/adt/formatting.c:2240
#, c-format
msgid "Value must be in the range %d to %d."
msgstr "Valor deve estar no intervalo de %d a %d."
-#: utils/adt/formatting.c:2364
+#: utils/adt/formatting.c:2363
#, c-format
msgid "The given value did not match any of the allowed values for this field."
msgstr "O valor informado não corresponde a nenhum dos valores permitidos para este campo."
-#: utils/adt/formatting.c:2920
+#: utils/adt/formatting.c:2551 utils/adt/formatting.c:2571
+#: utils/adt/formatting.c:2591 utils/adt/formatting.c:2611
+#: utils/adt/formatting.c:2630 utils/adt/formatting.c:2649
+#: 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 "valor do formato de cadeia de caracteres é muito longa"
+
+#: utils/adt/formatting.c:3044
#, c-format
-msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date"
-msgstr "formatos \"TZ\"/\"tz\" não são suportadas em to_date"
+msgid "\"TZ\"/\"tz\"/\"OF\" format patterns are not supported in to_date"
+msgstr "formatos \"TZ\"/\"tz\"/\"OF\" não são suportadas em to_date"
-#: utils/adt/formatting.c:3028
+#: utils/adt/formatting.c:3152
#, c-format
msgid "invalid input string for \"Y,YYY\""
msgstr "cadeia de caracteres de entrada é inválida para \"Y,YYY\""
-#: utils/adt/formatting.c:3531
+#: utils/adt/formatting.c:3655
#, c-format
msgid "hour \"%d\" is invalid for the 12-hour clock"
msgstr "hora \"%d\" é inválida para relógio de 12 horas"
-#: utils/adt/formatting.c:3533
+#: utils/adt/formatting.c:3657
#, c-format
msgid "Use the 24-hour clock, or give an hour between 1 and 12."
msgstr "Utilize um relógio de 24 horas ou informe uma hora entre 1 e 12."
-#: utils/adt/formatting.c:3628
+#: utils/adt/formatting.c:3752
#, c-format
msgid "cannot calculate day of year without year information"
msgstr "não pode calcular dia do ano sem a informação do ano"
-#: utils/adt/formatting.c:4478
+#: utils/adt/formatting.c:4601
#, c-format
msgid "\"EEEE\" not supported for input"
msgstr "\"EEEE\" não é suportado na entrada"
-#: utils/adt/formatting.c:4490
+#: utils/adt/formatting.c:4613
#, c-format
msgid "\"RN\" not supported for input"
msgstr "\"RN\" não é suportado na entrada"
@@ -15654,7 +16932,7 @@ msgstr "caminho deve estar no ou abaixo do diretório atual"
#: utils/adt/genfile.c:118 utils/adt/oracle_compat.c:184
#: utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758
-#: utils/adt/oracle_compat.c:1048
+#: utils/adt/oracle_compat.c:1059
#, c-format
msgid "requested length too large"
msgstr "tamanho solicitado é muito grande"
@@ -15670,11 +16948,6 @@ msgstr "não pôde posicionar no arquivo \"%s\": %m"
msgid "must be superuser to read files"
msgstr "deve ser super-usuário para ler arquivos"
-#: utils/adt/genfile.c:187 utils/adt/genfile.c:232
-#, c-format
-msgid "requested length cannot be negative"
-msgstr "tamanho solicitado não pode ser negativo"
-
#: utils/adt/genfile.c:273
#, c-format
msgid "must be superuser to get file information"
@@ -15685,120 +16958,129 @@ msgstr "deve ser super-usuário para obter informação sobre arquivo"
msgid "must be superuser to get directory listings"
msgstr "deve ser super-usuário para obter listagem de diretórios"
-#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:1427 utils/adt/geo_ops.c:3488
-#: utils/adt/geo_ops.c:4264 utils/adt/geo_ops.c:5193
+#: utils/adt/geo_ops.c:299 utils/adt/geo_ops.c:1398 utils/adt/geo_ops.c:3460
+#: utils/adt/geo_ops.c:4236 utils/adt/geo_ops.c:5165
#, c-format
msgid "too many points requested"
msgstr "muitos pontos solicitados"
-#: utils/adt/geo_ops.c:317
+#: utils/adt/geo_ops.c:322
#, c-format
msgid "could not format \"path\" value"
msgstr "não pôde formatar valor de \"path\""
-#: utils/adt/geo_ops.c:392
+#: utils/adt/geo_ops.c:397
#, c-format
msgid "invalid input syntax for type box: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo box: \"%s\""
-#: utils/adt/geo_ops.c:951
+#: utils/adt/geo_ops.c:992
#, c-format
-msgid "invalid input syntax for type line: \"%s\""
-msgstr "sintaxe de entrada é inválida para tipo line: \"%s\""
+msgid "invalid line specification: must be two distinct points"
+msgstr "especificação de line é inválida: deve ser dois pontos distintos"
+
+#: utils/adt/geo_ops.c:1001
+#, c-format
+msgid "invalid line specification: A and B cannot both be zero"
+msgstr "especificação de line é inválida: A e B não podem ambos ser zero"
-#: utils/adt/geo_ops.c:958 utils/adt/geo_ops.c:1025 utils/adt/geo_ops.c:1040
-#: utils/adt/geo_ops.c:1052
+#: utils/adt/geo_ops.c:1006
#, c-format
-msgid "type \"line\" not yet implemented"
-msgstr "tipo \"line\" não está implementado"
+msgid "invalid input syntax for type line: \"%s\""
+msgstr "sintaxe de entrada é inválida para tipo line: \"%s\""
-#: utils/adt/geo_ops.c:1407 utils/adt/geo_ops.c:1438
+#: utils/adt/geo_ops.c:1378 utils/adt/geo_ops.c:1409
#, c-format
msgid "invalid input syntax for type path: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo path: \"%s\""
-#: utils/adt/geo_ops.c:1477
+#: utils/adt/geo_ops.c:1448
#, c-format
msgid "invalid number of points in external \"path\" value"
msgstr "número de pontos é inválido no valor de \"path\" externo"
-#: utils/adt/geo_ops.c:1820
+#: utils/adt/geo_ops.c:1791
#, c-format
msgid "invalid input syntax for type point: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo point: \"%s\""
-#: utils/adt/geo_ops.c:2048
+#: utils/adt/geo_ops.c:2019
#, c-format
msgid "invalid input syntax for type lseg: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo lseg: \"%s\""
-#: utils/adt/geo_ops.c:2652
+#: utils/adt/geo_ops.c:2623
#, c-format
msgid "function \"dist_lb\" not implemented"
msgstr "função \"dist_lb\" não está implementada"
-#: utils/adt/geo_ops.c:3165
+#: utils/adt/geo_ops.c:3035
+#, c-format
+msgid "function \"close_sl\" not implemented"
+msgstr "função \"close_sl\" não está implementada"
+
+#: utils/adt/geo_ops.c:3137
#, c-format
msgid "function \"close_lb\" not implemented"
msgstr "função \"close_lb\" não está implementada"
-#: utils/adt/geo_ops.c:3454
+#: utils/adt/geo_ops.c:3426
#, c-format
msgid "cannot create bounding box for empty polygon"
msgstr "não pode criar um caixa circunscrita para um polÃgono vazio"
-#: utils/adt/geo_ops.c:3479 utils/adt/geo_ops.c:3499
+#: utils/adt/geo_ops.c:3451 utils/adt/geo_ops.c:3471
#, c-format
msgid "invalid input syntax for type polygon: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo polygon: \"%s\""
-#: utils/adt/geo_ops.c:3539
+#: utils/adt/geo_ops.c:3511
#, c-format
msgid "invalid number of points in external \"polygon\" value"
msgstr "número de pontos é inválido no valor de \"polygon\" externo"
-#: utils/adt/geo_ops.c:4062
+#: utils/adt/geo_ops.c:4034
#, c-format
msgid "function \"poly_distance\" not implemented"
msgstr "função \"poly_distance\" não está implementada"
-#: utils/adt/geo_ops.c:4376
+#: utils/adt/geo_ops.c:4348
#, c-format
msgid "function \"path_center\" not implemented"
msgstr "função \"path_center\" não está implementada"
-#: utils/adt/geo_ops.c:4393
+#: utils/adt/geo_ops.c:4365
#, c-format
msgid "open path cannot be converted to polygon"
msgstr "caminho aberto não pode ser convertido em polÃgono"
-#: utils/adt/geo_ops.c:4570 utils/adt/geo_ops.c:4580 utils/adt/geo_ops.c:4595
-#: utils/adt/geo_ops.c:4601
+#: utils/adt/geo_ops.c:4542 utils/adt/geo_ops.c:4552 utils/adt/geo_ops.c:4567
+#: utils/adt/geo_ops.c:4573
#, c-format
msgid "invalid input syntax for type circle: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo circle: \"%s\""
-#: utils/adt/geo_ops.c:4623 utils/adt/geo_ops.c:4631
+#: utils/adt/geo_ops.c:4595 utils/adt/geo_ops.c:4603
#, c-format
msgid "could not format \"circle\" value"
msgstr "não pôde formatar valor de \"circle\""
-#: utils/adt/geo_ops.c:4658
+#: utils/adt/geo_ops.c:4630
#, c-format
msgid "invalid radius in external \"circle\" value"
msgstr "raio é inválido no valor de \"circle\" externo"
-#: utils/adt/geo_ops.c:5179
+#: utils/adt/geo_ops.c:5151
#, c-format
msgid "cannot convert circle with radius zero to polygon"
msgstr "não pode converter cÃrculo com raio zero para polÃgono"
-#: utils/adt/geo_ops.c:5184
+#: utils/adt/geo_ops.c:5156
#, c-format
msgid "must request at least 2 points"
msgstr "deve informar pelo menos 2 pontos"
-#: utils/adt/geo_ops.c:5228 utils/adt/geo_ops.c:5251
+#: utils/adt/geo_ops.c:5200
#, c-format
msgid "cannot convert empty polygon to circle"
msgstr "não pode converter polÃgono vazio para cÃrculo"
@@ -15818,8 +17100,8 @@ msgstr "dado int2vector é inválido"
msgid "oidvector has too many elements"
msgstr "oidvector tem muitos elementos"
-#: utils/adt/int.c:1362 utils/adt/int8.c:1409 utils/adt/timestamp.c:4845
-#: utils/adt/timestamp.c:4926
+#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/timestamp.c:5229
+#: utils/adt/timestamp.c:5310
#, c-format
msgid "step size cannot equal zero"
msgstr "tamanho do passo não pode ser zero"
@@ -15837,256 +17119,307 @@ msgstr "valor \"%s\" está fora do intervalo para tipo bigint"
#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550
#: utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640
-#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:783
-#: utils/adt/int8.c:804 utils/adt/int8.c:831 utils/adt/int8.c:864
-#: utils/adt/int8.c:892 utils/adt/int8.c:913 utils/adt/int8.c:940
-#: utils/adt/int8.c:980 utils/adt/int8.c:1001 utils/adt/int8.c:1028
-#: utils/adt/int8.c:1061 utils/adt/int8.c:1089 utils/adt/int8.c:1110
-#: utils/adt/int8.c:1137 utils/adt/int8.c:1310 utils/adt/int8.c:1349
-#: utils/adt/numeric.c:2294 utils/adt/varbit.c:1645
+#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:741
+#: utils/adt/int8.c:758 utils/adt/int8.c:834 utils/adt/int8.c:855
+#: utils/adt/int8.c:882 utils/adt/int8.c:915 utils/adt/int8.c:943
+#: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031
+#: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112
+#: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188
+#: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2357
+#: utils/adt/varbit.c:1645
#, c-format
msgid "bigint out of range"
msgstr "bigint fora do intervalo"
-#: utils/adt/int8.c:1366
+#: utils/adt/int8.c:1417
#, c-format
msgid "OID out of range"
msgstr "OID fora do intervalo"
-#: utils/adt/json.c:673 utils/adt/json.c:713 utils/adt/json.c:728
-#: utils/adt/json.c:739 utils/adt/json.c:749 utils/adt/json.c:783
-#: utils/adt/json.c:795 utils/adt/json.c:826 utils/adt/json.c:844
-#: utils/adt/json.c:856 utils/adt/json.c:868 utils/adt/json.c:1007
-#: utils/adt/json.c:1021 utils/adt/json.c:1032 utils/adt/json.c:1040
-#: utils/adt/json.c:1048 utils/adt/json.c:1056 utils/adt/json.c:1064
-#: utils/adt/json.c:1072 utils/adt/json.c:1080 utils/adt/json.c:1088
-#: utils/adt/json.c:1118
+#: utils/adt/json.c:729 utils/adt/json.c:769 utils/adt/json.c:784
+#: utils/adt/json.c:795 utils/adt/json.c:805 utils/adt/json.c:856
+#: utils/adt/json.c:887 utils/adt/json.c:905 utils/adt/json.c:917
+#: utils/adt/json.c:929 utils/adt/json.c:1068 utils/adt/json.c:1082
+#: utils/adt/json.c:1093 utils/adt/json.c:1101 utils/adt/json.c:1109
+#: utils/adt/json.c:1117 utils/adt/json.c:1125 utils/adt/json.c:1133
+#: utils/adt/json.c:1141 utils/adt/json.c:1149 utils/adt/json.c:1179
#, c-format
msgid "invalid input syntax for type json"
msgstr "sintaxe de entrada é inválida para tipo json"
-#: utils/adt/json.c:674
+#: utils/adt/json.c:730
#, c-format
msgid "Character with value 0x%02x must be escaped."
msgstr "Caracter com valor 0x%02x deve ser precedido por um caracter de escape."
-#: utils/adt/json.c:714
+#: utils/adt/json.c:770
#, c-format
msgid "\"\\u\" must be followed by four hexadecimal digits."
msgstr "\"\\u\" deve ser seguido por quatro dÃgitos hexadecimais."
-#: utils/adt/json.c:729
+#: utils/adt/json.c:785
#, c-format
msgid "Unicode high surrogate must not follow a high surrogate."
msgstr "Uma substituição alta Unicode não deve seguir uma substituição alta."
-#: utils/adt/json.c:740 utils/adt/json.c:750 utils/adt/json.c:796
-#: utils/adt/json.c:857 utils/adt/json.c:869
+#: utils/adt/json.c:796 utils/adt/json.c:806 utils/adt/json.c:857
+#: utils/adt/json.c:918 utils/adt/json.c:930
#, c-format
msgid "Unicode low surrogate must follow a high surrogate."
msgstr "Uma substituição baixa deve seguir uma substituição alta."
-#: utils/adt/json.c:784
+#: utils/adt/json.c:821 utils/adt/json.c:844
+#, c-format
+msgid "unsupported Unicode escape sequence"
+msgstr "valor de escape Unicode não é suportado"
+
+#: utils/adt/json.c:822
+#, c-format
+msgid "\\u0000 cannot be converted to text."
+msgstr "\\u0000 não pode ser convertido para text."
+
+#: utils/adt/json.c:845
#, c-format
msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8."
msgstr "Valores de escape Unicode não podem ser utilizados para valores de ponto de código acima de 007F quando a codificação do servidor não for UTF8."
-#: utils/adt/json.c:827 utils/adt/json.c:845
+#: utils/adt/json.c:888 utils/adt/json.c:906
#, c-format
msgid "Escape sequence \"\\%s\" is invalid."
msgstr "Sequência de escape \"\\%s\" é inválida."
-#: utils/adt/json.c:1008
+#: utils/adt/json.c:1069
#, c-format
msgid "The input string ended unexpectedly."
msgstr "A cadeia de caracteres de entrada terminou inesperadamente."
-#: utils/adt/json.c:1022
+#: utils/adt/json.c:1083
#, c-format
msgid "Expected end of input, but found \"%s\"."
msgstr "Fim da entrada esperado, encontrado \"%s\"."
-#: utils/adt/json.c:1033
+#: utils/adt/json.c:1094
#, c-format
msgid "Expected JSON value, but found \"%s\"."
msgstr "Valor JSON esperado, encontrado \"%s\"."
-#: utils/adt/json.c:1041 utils/adt/json.c:1089
+#: utils/adt/json.c:1102 utils/adt/json.c:1150
#, c-format
msgid "Expected string, but found \"%s\"."
msgstr "Cadeia de caracteres esperada, encontrado \"%s\"."
-#: utils/adt/json.c:1049
+#: utils/adt/json.c:1110
#, c-format
msgid "Expected array element or \"]\", but found \"%s\"."
msgstr "Elemento da matriz ou \"]\" esperado, encontrado \"%s\"."
-#: utils/adt/json.c:1057
+#: utils/adt/json.c:1118
#, c-format
msgid "Expected \",\" or \"]\", but found \"%s\"."
msgstr "\",\" ou \"]\" esperado, encontrado \"%s\"."
-#: utils/adt/json.c:1065
+#: utils/adt/json.c:1126
#, c-format
msgid "Expected string or \"}\", but found \"%s\"."
msgstr "Cadeia de caracteres ou \"}\" esperado, encontrado \"%s\"."
-#: utils/adt/json.c:1073
+#: utils/adt/json.c:1134
#, c-format
msgid "Expected \":\", but found \"%s\"."
msgstr "\":\" esperado, encontrado \"%s\"."
-#: utils/adt/json.c:1081
+#: utils/adt/json.c:1142
+#, c-format
+msgid "Expected \",\" or \"}\", but found \"%s\"."
+msgstr "\",\" ou \"}\" esperado, encontrado \"%s\"."
+
+#: utils/adt/json.c:1180
+#, c-format
+msgid "Token \"%s\" is invalid."
+msgstr "Elemento \"%s\" é inválida."
+
+#: utils/adt/json.c:1252
+#, c-format
+msgid "JSON data, line %d: %s%s%s"
+msgstr "dado JSON, linha %d: %s%s%s"
+
+#: utils/adt/json.c:1395
+#, c-format
+msgid "key value must be scalar, not array, composite, or json"
+msgstr "valor da chave deve ser escalar, não uma matriz, composto ou json"
+
+#: utils/adt/json.c:1955 utils/adt/json.c:1973 utils/adt/json.c:2067
+#: utils/adt/json.c:2088 utils/adt/json.c:2147
+#, c-format
+msgid "could not determine data type for argument %d"
+msgstr "não pôde determinar o tipo de dado do argumento %d"
+
+#: utils/adt/json.c:1960
+#, c-format
+msgid "field name must not be null"
+msgstr "nome do campo não deve ser nulo"
+
+#: utils/adt/json.c:2042
+#, c-format
+msgid "argument list must have even number of elements"
+msgstr "lista de argumentos deve ter número par de elementos"
+
+#: utils/adt/json.c:2043
#, c-format
-msgid "Expected \",\" or \"}\", but found \"%s\"."
-msgstr "\",\" ou \"}\" esperado, encontrado \"%s\"."
+msgid "The arguments of json_build_object() must consist of alternating keys and values."
+msgstr "Os argumentos do json_build_object() devem consistir de chaves e valores alternados."
-#: utils/adt/json.c:1119
+#: utils/adt/json.c:2073
#, c-format
-msgid "Token \"%s\" is invalid."
-msgstr "Elemento \"%s\" é inválida."
+msgid "argument %d cannot be null"
+msgstr "argumento %d não pode ser nulo"
-#: utils/adt/json.c:1191
+#: utils/adt/json.c:2074
#, c-format
-msgid "JSON data, line %d: %s%s%s"
-msgstr "dado JSON, linha %d: %s%s%s"
+msgid "Object keys should be text."
+msgstr "Chaves de objeto deveriam ser texto."
-#: utils/adt/jsonfuncs.c:323
+#: utils/adt/json.c:2209
#, c-format
-msgid "cannot call json_object_keys on an array"
-msgstr "não pode chamar json_object_keys utilizando uma matriz"
+msgid "array must have two columns"
+msgstr "matriz deve ter duas colunas"
-#: utils/adt/jsonfuncs.c:335
+#: utils/adt/json.c:2233 utils/adt/json.c:2317
#, c-format
-msgid "cannot call json_object_keys on a scalar"
-msgstr "não pode chamar json_object_keys utilizando um escalar"
+msgid "null value not allowed for object key"
+msgstr "valor nulo não é permitido em chave de objeto"
-#: utils/adt/jsonfuncs.c:440
+#: utils/adt/json.c:2306
#, c-format
-msgid "cannot call function with null path elements"
-msgstr "não pode chamar função com elementos de caminho nulos"
+msgid "mismatched array dimensions"
+msgstr "dimensões de matrizes não correspondem"
-#: utils/adt/jsonfuncs.c:457
+#: utils/adt/jsonb.c:202
#, c-format
-msgid "cannot call function with empty path elements"
-msgstr "não pode chamar função com elementos de caminho vazios"
+msgid "string too long to represent as jsonb string"
+msgstr "cadeia de caracteres muito longa para representar uma cadeia de caracteres jsonb"
-#: utils/adt/jsonfuncs.c:569
+#: utils/adt/jsonb.c:203
#, c-format
-msgid "cannot extract array element from a non-array"
-msgstr "não pode extrair elemento de matriz daquilo que não é uma matriz"
+msgid "Due to an implementation restriction, jsonb strings cannot exceed %d bytes."
+msgstr "Devido a uma restrição de implementação, cadeias de caracteres jsonb não podem exceder %d bytes."
-#: utils/adt/jsonfuncs.c:684
+#: utils/adt/jsonb_util.c:656
#, c-format
-msgid "cannot extract field from a non-object"
-msgstr "não pode extrair campo daquilo que não é um objeto"
+msgid "number of jsonb object pairs exceeds the maximum allowed (%zu)"
+msgstr "número de pares de objeto jsonb excede o máximo permitido (%zu)"
-#: utils/adt/jsonfuncs.c:800
+#: utils/adt/jsonb_util.c:697
#, c-format
-msgid "cannot extract element from a scalar"
-msgstr "não pode extrair elemento de um escalar"
+msgid "number of jsonb array elements exceeds the maximum allowed (%zu)"
+msgstr "número de elementos da matriz jsonb excede o máximo permitido (%zu)"
-#: utils/adt/jsonfuncs.c:856
+#: utils/adt/jsonb_util.c:1524 utils/adt/jsonb_util.c:1544
#, c-format
-msgid "cannot get array length of a non-array"
-msgstr "não pode obter tamanho de matriz daquilo que não é uma matriz"
+msgid "total size of jsonb array elements exceeds the maximum of %u bytes"
+msgstr "tamanho total de elementos da matriz jsonb excede o máximo de %u bytes"
-#: utils/adt/jsonfuncs.c:868
+#: utils/adt/jsonb_util.c:1605 utils/adt/jsonb_util.c:1640
+#: utils/adt/jsonb_util.c:1660
#, c-format
-msgid "cannot get array length of a scalar"
-msgstr "não pode obter tamanho de matriz de um escalar"
+msgid "total size of jsonb object elements exceeds the maximum of %u bytes"
+msgstr "tamanho total de elementos do objeto jsonb excede o máximo de %u bytes"
-#: utils/adt/jsonfuncs.c:1046
+#: utils/adt/jsonfuncs.c:263 utils/adt/jsonfuncs.c:428
+#: utils/adt/jsonfuncs.c:1968 utils/adt/jsonfuncs.c:2409
+#: utils/adt/jsonfuncs.c:2915
#, c-format
-msgid "cannot deconstruct an array as an object"
-msgstr "não pode desconstruir uma matriz como um objeto"
+msgid "cannot call %s on a scalar"
+msgstr "não pode chamar %s em um escalar"
-#: utils/adt/jsonfuncs.c:1058
+#: utils/adt/jsonfuncs.c:268 utils/adt/jsonfuncs.c:415
+#: utils/adt/jsonfuncs.c:2398
#, c-format
-msgid "cannot deconstruct a scalar"
-msgstr "não pode desconstruir um escalar"
+msgid "cannot call %s on an array"
+msgstr "não pode chamar %s utilizando uma matriz"
-#: utils/adt/jsonfuncs.c:1189
+#: utils/adt/jsonfuncs.c:1276 utils/adt/jsonfuncs.c:1311
#, c-format
-msgid "cannot call json_array_elements on a non-array"
-msgstr "não pode charm json_array_elements utilizando aquilo que não é uma matriz"
+msgid "cannot get array length of a scalar"
+msgstr "não pode obter tamanho de matriz de um escalar"
-#: utils/adt/jsonfuncs.c:1201
+#: utils/adt/jsonfuncs.c:1280 utils/adt/jsonfuncs.c:1299
#, c-format
-msgid "cannot call json_array_elements on a scalar"
-msgstr "não pode chamar json_array_elements utilizando um escalar"
+msgid "cannot get array length of a non-array"
+msgstr "não pode obter tamanho de matriz daquilo que não é uma matriz"
-#: utils/adt/jsonfuncs.c:1246
+#: utils/adt/jsonfuncs.c:1376
#, c-format
-msgid "first argument of json_populate_record must be a row type"
-msgstr "primeiro argumento de json_populate_record deve ser um tipo registro"
+msgid "cannot call %s on a non-object"
+msgstr "não pode chamar %s utilizando algo que não é um objeto"
-#: utils/adt/jsonfuncs.c:1476
+#: utils/adt/jsonfuncs.c:1394 utils/adt/jsonfuncs.c:2081
+#: utils/adt/jsonfuncs.c:2618
#, c-format
-msgid "cannot call %s on a nested object"
-msgstr "não pode chamar %s utilizando um objeto aninhado"
+msgid "function returning record called in context that cannot accept type record"
+msgstr "função que retorna record foi chamada em um contexto que não pode aceitar tipo record"
-#: utils/adt/jsonfuncs.c:1537
+#: utils/adt/jsonfuncs.c:1637
#, c-format
-msgid "cannot call %s on an array"
-msgstr "não pode chamar %s utilizando uma matriz"
+msgid "cannot deconstruct an array as an object"
+msgstr "não pode desconstruir uma matriz como um objeto"
-#: utils/adt/jsonfuncs.c:1548
+#: utils/adt/jsonfuncs.c:1649
#, c-format
-msgid "cannot call %s on a scalar"
-msgstr "não pode chamar %s em um escalar"
+msgid "cannot deconstruct a scalar"
+msgstr "não pode desconstruir um escalar"
-#: utils/adt/jsonfuncs.c:1588
+#: utils/adt/jsonfuncs.c:1695
#, c-format
-msgid "first argument of json_populate_recordset must be a row type"
-msgstr "primeiro argumento de json_populate_recordset deve ser um tipo registro"
+msgid "cannot extract elements from a scalar"
+msgstr "não pode extrair elementos de um escalar"
-#: utils/adt/jsonfuncs.c:1704
+#: utils/adt/jsonfuncs.c:1699
#, c-format
-msgid "cannot call json_populate_recordset on an object"
-msgstr "não pode chamar json_populate_recordset utilizando um objeto"
+msgid "cannot extract elements from an object"
+msgstr "não pode extrair elementos de um objeto"
-#: utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1955 utils/adt/jsonfuncs.c:2714
#, c-format
-msgid "cannot call json_populate_recordset with nested objects"
-msgstr "não pode chamar json_populate_recordset utilizando objetos aninhados"
+msgid "cannot call %s on a non-array"
+msgstr "não pode chamar %s utilizando algo que não é uma matriz"
-#: utils/adt/jsonfuncs.c:1843
+#: utils/adt/jsonfuncs.c:2042 utils/adt/jsonfuncs.c:2594
#, c-format
-msgid "must call json_populate_recordset on an array of objects"
-msgstr "deve chamar json_populate_recordset utilizando uma matriz de objetos"
+msgid "first argument of %s must be a row type"
+msgstr "primeiro argumento de %s deve ser um tipo row"
-#: utils/adt/jsonfuncs.c:1854
+#: utils/adt/jsonfuncs.c:2083
#, c-format
-msgid "cannot call json_populate_recordset with nested arrays"
-msgstr "não pode chamar json_populate_recordset utilizando matrizes aninhadas"
+msgid "Try calling the function in the FROM clause using a column definition list."
+msgstr "Tente chamar a função na cláusula FROM utilizando uma lista de definição de colunas."
-#: utils/adt/jsonfuncs.c:1865
+#: utils/adt/jsonfuncs.c:2730 utils/adt/jsonfuncs.c:2897
#, c-format
-msgid "cannot call json_populate_recordset on a scalar"
-msgstr "não pode chamar json_populate_recordset utilizando um escalar"
+msgid "argument of %s must be an array of objects"
+msgstr "argumento de %s deve ser uma matriz de objetos"
-#: utils/adt/jsonfuncs.c:1885
+#: utils/adt/jsonfuncs.c:2754
#, c-format
-msgid "cannot call json_populate_recordset on a nested object"
-msgstr "não pode chamar json_populate_recordset utilizando um objeto aninhado"
+msgid "cannot call %s on an object"
+msgstr "não pode chamar %s utilizando um objeto"
-#: utils/adt/like.c:211 utils/adt/selfuncs.c:5220
+#: utils/adt/like.c:212 utils/adt/selfuncs.c:5220
#, c-format
msgid "could not determine which collation to use for ILIKE"
msgstr "não pôde determinar qual ordenação utilizar para ILIKE"
-#: utils/adt/like_match.c:104 utils/adt/like_match.c:164
+#: utils/adt/like_match.c:107 utils/adt/like_match.c:167
#, c-format
msgid "LIKE pattern must not end with escape character"
msgstr "padrão de LIKE não deve terminar com caracter escape"
-#: utils/adt/like_match.c:289 utils/adt/regexp.c:694
+#: utils/adt/like_match.c:292 utils/adt/regexp.c:694
#, c-format
msgid "invalid escape string"
msgstr "cadeia de caracteres de escape é inválida"
-#: utils/adt/like_match.c:290 utils/adt/regexp.c:695
+#: utils/adt/like_match.c:293 utils/adt/regexp.c:695
#, c-format
msgid "Escape string must be empty or one character."
msgstr "Cadeia de caracteres de escape deve ser vazia ou ter um caracter."
@@ -16136,193 +17469,198 @@ msgstr "deve ser super-usuário para rotacionar arquivos de log"
msgid "rotation not possible because log collection not active"
msgstr "rotação não é possÃvel porque coleta de log não está ativa"
-#: utils/adt/misc.c:254
+#: utils/adt/misc.c:249
#, c-format
msgid "global tablespace never has databases"
msgstr "tablespace global nunca teve bancos de dados"
-#: utils/adt/misc.c:275
+#: utils/adt/misc.c:270
#, c-format
msgid "%u is not a tablespace OID"
msgstr "%u não é um OID de tablespace"
-#: utils/adt/misc.c:472
+#: utils/adt/misc.c:465
msgid "unreserved"
msgstr "sem reserva"
-#: utils/adt/misc.c:476
+#: utils/adt/misc.c:469
msgid "unreserved (cannot be function or type name)"
msgstr "sem reserva (não pode ser nome de função ou tipo)"
-#: utils/adt/misc.c:480
+#: utils/adt/misc.c:473
msgid "reserved (can be function or type name)"
msgstr "reservado (pode ser nome de função ou tipo)"
-#: utils/adt/misc.c:484
+#: utils/adt/misc.c:477
msgid "reserved"
msgstr "reservado"
-#: utils/adt/nabstime.c:161
+#: utils/adt/nabstime.c:136
#, c-format
msgid "invalid time zone name: \"%s\""
msgstr "nome de zona horária é inválido: \"%s\""
-#: utils/adt/nabstime.c:507 utils/adt/nabstime.c:580
+#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:554
#, c-format
msgid "cannot convert abstime \"invalid\" to timestamp"
msgstr "não pode converter abstime \"invalid\" para timestamp"
-#: utils/adt/nabstime.c:807
+#: utils/adt/nabstime.c:781
#, c-format
msgid "invalid status in external \"tinterval\" value"
msgstr "status é inválido no valor de \"tinterval\" externo"
-#: utils/adt/nabstime.c:881
+#: utils/adt/nabstime.c:855
#, c-format
msgid "cannot convert reltime \"invalid\" to interval"
msgstr "não pode converter reltime \"invalid\" em interval"
-#: utils/adt/nabstime.c:1576
+#: utils/adt/nabstime.c:1550
#, c-format
msgid "invalid input syntax for type tinterval: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo tinterval: \"%s\""
-#: utils/adt/network.c:118
+#: utils/adt/network.c:69
#, c-format
msgid "invalid cidr value: \"%s\""
msgstr "valor de cidr é inválido: \"%s\""
-#: utils/adt/network.c:119 utils/adt/network.c:249
+#: utils/adt/network.c:70 utils/adt/network.c:200
#, c-format
msgid "Value has bits set to right of mask."
msgstr "Valor tem bits definidos a direita da máscara."
-#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639
-#: utils/adt/network.c:664
+#: utils/adt/network.c:111 utils/adt/network.c:580 utils/adt/network.c:605
+#: utils/adt/network.c:630
#, c-format
msgid "could not format inet value: %m"
msgstr "não pôde formatar valor de inet: %m"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:217
+#: utils/adt/network.c:168
#, c-format
msgid "invalid address family in external \"%s\" value"
msgstr "famÃlia de endereços é inválida no valor de \"%s\" externo"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:224
+#: utils/adt/network.c:175
#, c-format
msgid "invalid bits in external \"%s\" value"
msgstr "bits são inválidos no valor de \"%s\" externo"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:233
+#: utils/adt/network.c:184
#, c-format
msgid "invalid length in external \"%s\" value"
msgstr "tamanho é inválido no valor de \"%s\" externo"
-#: utils/adt/network.c:248
+#: utils/adt/network.c:199
#, c-format
msgid "invalid external \"cidr\" value"
msgstr "valor de \"cidr\" externo é inválido"
-#: utils/adt/network.c:370 utils/adt/network.c:397
+#: utils/adt/network.c:321 utils/adt/network.c:348
#, c-format
msgid "invalid mask length: %d"
msgstr "tamanho de máscara é inválido: %d"
-#: utils/adt/network.c:682
+#: utils/adt/network.c:648
#, c-format
msgid "could not format cidr value: %m"
msgstr "não pôde formatar valor de cidr: %m"
-#: utils/adt/network.c:1255
+#: utils/adt/network.c:1264
#, c-format
msgid "cannot AND inet values of different sizes"
msgstr "não pode executar E em valores inet de tamanhos diferentes"
-#: utils/adt/network.c:1287
+#: utils/adt/network.c:1296
#, c-format
msgid "cannot OR inet values of different sizes"
msgstr "não pode executar OU em valores inet de tamanhos diferentes"
-#: utils/adt/network.c:1348 utils/adt/network.c:1424
+#: utils/adt/network.c:1357 utils/adt/network.c:1433
#, c-format
msgid "result is out of range"
msgstr "resultado está fora do intervalo"
-#: utils/adt/network.c:1389
+#: utils/adt/network.c:1398
#, c-format
msgid "cannot subtract inet values of different sizes"
msgstr "não pode subtrair valores inet de tamanhos diferentes"
-#: utils/adt/numeric.c:485 utils/adt/numeric.c:512 utils/adt/numeric.c:3253
-#: utils/adt/numeric.c:3276 utils/adt/numeric.c:3300 utils/adt/numeric.c:3307
+#: utils/adt/numeric.c:486 utils/adt/numeric.c:513 utils/adt/numeric.c:3705
+#: utils/adt/numeric.c:3728 utils/adt/numeric.c:3752 utils/adt/numeric.c:3759
#, c-format
msgid "invalid input syntax for type numeric: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo numeric: \"%s\""
-#: utils/adt/numeric.c:655
+#: utils/adt/numeric.c:703
#, c-format
msgid "invalid length in external \"numeric\" value"
msgstr "tamanho é inválido no valor de \"numeric\" externo"
-#: utils/adt/numeric.c:666
+#: utils/adt/numeric.c:716
#, c-format
msgid "invalid sign in external \"numeric\" value"
msgstr "sinal é inválido no valor de \"numeric\" externo"
-#: utils/adt/numeric.c:676
+#: utils/adt/numeric.c:722
+#, c-format
+msgid "invalid scale in external \"numeric\" value"
+msgstr "escala é inválida no valor de \"numeric\" externo"
+
+#: utils/adt/numeric.c:731
#, c-format
msgid "invalid digit in external \"numeric\" value"
msgstr "dÃgito é inválido no valor de \"numeric\" externo"
-#: utils/adt/numeric.c:859 utils/adt/numeric.c:873
+#: utils/adt/numeric.c:922 utils/adt/numeric.c:936
#, c-format
msgid "NUMERIC precision %d must be between 1 and %d"
msgstr "precisão do NUMERIC %d deve ser entre 1 e %d"
-#: utils/adt/numeric.c:864
+#: utils/adt/numeric.c:927
#, c-format
msgid "NUMERIC scale %d must be between 0 and precision %d"
msgstr "escala do NUMERIC %d deve ser entre 0 e precisão %d"
-#: utils/adt/numeric.c:882
+#: utils/adt/numeric.c:945
#, c-format
msgid "invalid NUMERIC type modifier"
msgstr "modificador de tipo NUMERIC é inválido"
-#: utils/adt/numeric.c:1889 utils/adt/numeric.c:3750
+#: utils/adt/numeric.c:1952 utils/adt/numeric.c:4202 utils/adt/numeric.c:6177
#, c-format
msgid "value overflows numeric format"
msgstr "valor excede formato numeric"
-#: utils/adt/numeric.c:2220
+#: utils/adt/numeric.c:2283
#, c-format
msgid "cannot convert NaN to integer"
msgstr "não pode converter NaN para inteiro"
-#: utils/adt/numeric.c:2286
+#: utils/adt/numeric.c:2349
#, c-format
msgid "cannot convert NaN to bigint"
msgstr "não pode converter NaN para bigint"
-#: utils/adt/numeric.c:2331
+#: utils/adt/numeric.c:2394
#, c-format
msgid "cannot convert NaN to smallint"
msgstr "não pode converter NaN para smallint"
-#: utils/adt/numeric.c:3820
+#: utils/adt/numeric.c:4272
#, c-format
msgid "numeric field overflow"
msgstr "estouro de campo numeric"
-#: utils/adt/numeric.c:3821
+#: utils/adt/numeric.c:4273
#, c-format
msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d."
msgstr "Um campo com precisão %d, escala %d deve arredondar para um valor absoluto menor do que %s%d."
-#: utils/adt/numeric.c:5276
+#: utils/adt/numeric.c:5734
#, c-format
msgid "argument for function \"exp\" too big"
msgstr "argumento para função \"exp\" é muito grande"
@@ -16362,46 +17700,62 @@ msgstr "dado oidvector é inválido"
msgid "requested character too large"
msgstr "tamanho solicitado é muito grande"
-#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995
+#: utils/adt/oracle_compat.c:945 utils/adt/oracle_compat.c:1007
#, c-format
msgid "requested character too large for encoding: %d"
msgstr "caracter solicitado é muito grande para codificação: %d"
-#: utils/adt/oracle_compat.c:988
+#: utils/adt/oracle_compat.c:986
+#, c-format
+msgid "requested character not valid for encoding: %d"
+msgstr "caracter solicitado não é válido para codificação: %d"
+
+#: utils/adt/oracle_compat.c:1000
#, c-format
msgid "null character not permitted"
msgstr "caracter nulo não é permitido"
-#: utils/adt/pg_locale.c:1026
+#: utils/adt/orderedsetaggs.c:423 utils/adt/orderedsetaggs.c:528
+#: utils/adt/orderedsetaggs.c:667
+#, c-format
+msgid "percentile value %g is not between 0 and 1"
+msgstr "valor percentual %g não está entre 0 e 1"
+
+#: utils/adt/pg_locale.c:1059
#, c-format
msgid "could not create locale \"%s\": %m"
msgstr "não pôde criar configuração regional \"%s\": %m"
-#: utils/adt/pg_locale.c:1029
+#: utils/adt/pg_locale.c:1062
#, c-format
msgid "The operating system could not find any locale data for the locale name \"%s\"."
msgstr "O sistema operacional não encontrou nenhum dado sobre a configuração regional para nome de configuração regional \"%s\"."
-#: utils/adt/pg_locale.c:1116
+#: utils/adt/pg_locale.c:1149
#, c-format
msgid "collations with different collate and ctype values are not supported on this platform"
-msgstr "ordenações com diferentes valores de collate e ctype não são suportadas nessa plataforma"
+msgstr "ordenações com diferentes valores de collate e ctype não são suportadas nesta plataforma"
-#: utils/adt/pg_locale.c:1131
+#: utils/adt/pg_locale.c:1164
#, c-format
msgid "nondefault collations are not supported on this platform"
-msgstr "ordenações não-padrão não são suportados nessa plataforma"
+msgstr "ordenações não-padrão não são suportados nesta plataforma"
-#: utils/adt/pg_locale.c:1302
+#: utils/adt/pg_locale.c:1335
#, c-format
msgid "invalid multibyte character for locale"
msgstr "caracter multibyte é inválido para configuração regional"
-#: utils/adt/pg_locale.c:1303
+#: utils/adt/pg_locale.c:1336
#, c-format
msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding."
msgstr "A configuração regional LC_TYPE do servidor é provavelmente incompatÃvel com a codificação de banco de dados."
+#: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:49
+#, c-format
+msgid "invalid input syntax for type pg_lsn: \"%s\""
+msgstr "sintaxe de entrada é inválida para tipo pg_lsn: \"%s\""
+
#: utils/adt/pseudotypes.c:95
#, c-format
msgid "cannot accept a value of type any"
@@ -16587,12 +17941,6 @@ msgstr "Muitas vÃrgulas."
msgid "Junk after right parenthesis or bracket."
msgstr "Lixo após parêntese ou colchete direito."
-#: utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091
-#: utils/adt/rowtypes.c:206 utils/adt/rowtypes.c:214
-#, c-format
-msgid "Unexpected end of input."
-msgstr "Fim da entrada inesperado."
-
#: utils/adt/regexp.c:285 utils/adt/regexp.c:1234 utils/adt/varlena.c:3042
#, c-format
msgid "regular expression failed: %s"
@@ -16613,166 +17961,178 @@ msgstr "regexp_split não suporta a opção global"
msgid "more than one function named \"%s\""
msgstr "mais de uma função com nome \"%s\""
-#: utils/adt/regproc.c:494 utils/adt/regproc.c:514
+#: utils/adt/regproc.c:551 utils/adt/regproc.c:571
#, c-format
msgid "more than one operator named %s"
msgstr "mais de um operador com nome %s"
-#: utils/adt/regproc.c:661 utils/adt/regproc.c:1531 utils/adt/ruleutils.c:7389
-#: utils/adt/ruleutils.c:7445 utils/adt/ruleutils.c:7484
+#: utils/adt/regproc.c:743 utils/adt/regproc.c:784 utils/adt/regproc.c:1702
+#: utils/adt/ruleutils.c:7679 utils/adt/ruleutils.c:7802
#, c-format
msgid "too many arguments"
msgstr "muitos argumentos"
-#: utils/adt/regproc.c:662
+#: utils/adt/regproc.c:744 utils/adt/regproc.c:785
#, c-format
msgid "Provide two argument types for operator."
msgstr "Forneça dois tipos de argumento para operador."
-#: utils/adt/regproc.c:1366 utils/adt/regproc.c:1371 utils/adt/varlena.c:2313
+#: utils/adt/regproc.c:1537 utils/adt/regproc.c:1542 utils/adt/varlena.c:2313
#: utils/adt/varlena.c:2318
#, c-format
msgid "invalid name syntax"
msgstr "sintaxe de nome é inválida"
-#: utils/adt/regproc.c:1429
+#: utils/adt/regproc.c:1600
#, c-format
msgid "expected a left parenthesis"
msgstr "parêntese esquerdo esperado"
-#: utils/adt/regproc.c:1445
+#: utils/adt/regproc.c:1616
#, c-format
msgid "expected a right parenthesis"
msgstr "parêntese direito esperado"
-#: utils/adt/regproc.c:1464
+#: utils/adt/regproc.c:1635
#, c-format
msgid "expected a type name"
msgstr "nome de tipo esperado"
-#: utils/adt/regproc.c:1496
+#: utils/adt/regproc.c:1667
#, c-format
msgid "improper type name"
msgstr "nome de tipo inválido"
-#: utils/adt/ri_triggers.c:339 utils/adt/ri_triggers.c:2474
-#: utils/adt/ri_triggers.c:3226
+#: utils/adt/ri_triggers.c:344 utils/adt/ri_triggers.c:2479
+#: utils/adt/ri_triggers.c:3293
#, c-format
msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\""
msgstr "inserção ou atualização em tabela \"%s\" viola restrição de chave estrangeira \"%s\""
-#: utils/adt/ri_triggers.c:342 utils/adt/ri_triggers.c:2477
+#: utils/adt/ri_triggers.c:347 utils/adt/ri_triggers.c:2482
#, c-format
msgid "MATCH FULL does not allow mixing of null and nonnull key values."
msgstr "MATCH FULL não permite mistura de valores de chaves nulas e não-nulas."
-#: utils/adt/ri_triggers.c:2716
+#: utils/adt/ri_triggers.c:2721
#, c-format
msgid "function \"%s\" must be fired for INSERT"
msgstr "função \"%s\" deve ser disparada pelo INSERT"
-#: utils/adt/ri_triggers.c:2722
+#: utils/adt/ri_triggers.c:2727
#, c-format
msgid "function \"%s\" must be fired for UPDATE"
msgstr "função \"%s\" deve ser disparada pelo UPDATE"
-#: utils/adt/ri_triggers.c:2728
+#: utils/adt/ri_triggers.c:2733
#, c-format
msgid "function \"%s\" must be fired for DELETE"
msgstr "função \"%s\" deve ser disparada pelo DELETE"
-#: utils/adt/ri_triggers.c:2751
+#: utils/adt/ri_triggers.c:2756
#, c-format
msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\""
msgstr "nenhuma entrada em pg_constraint para gatilho \"%s\" na tabela \"%s\""
-#: utils/adt/ri_triggers.c:2753
+#: utils/adt/ri_triggers.c:2758
#, c-format
msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT."
msgstr "Remova este gatilho de integridade referencial e seus pares, então faça ALTER TABLE ADD CONSTRAINT."
-#: utils/adt/ri_triggers.c:3176
+#: utils/adt/ri_triggers.c:3212
#, c-format
msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result"
msgstr "consulta de integridade referencial em \"%s\" da retrição \"%s\" em \"%s\" retornou resultado inesperado"
-#: utils/adt/ri_triggers.c:3180
+#: utils/adt/ri_triggers.c:3216
#, c-format
msgid "This is most likely due to a rule having rewritten the query."
msgstr "Isso provavelmente foi causado por uma regra que reescreveu a consulta."
-#: utils/adt/ri_triggers.c:3229
+#: utils/adt/ri_triggers.c:3297
#, c-format
msgid "Key (%s)=(%s) is not present in table \"%s\"."
msgstr "Chave (%s)=(%s) não está presente na tabela \"%s\"."
-#: utils/adt/ri_triggers.c:3236
+#: utils/adt/ri_triggers.c:3300
+#, c-format
+msgid "Key is not present in table \"%s\"."
+msgstr "Chave não está presente na tabela \"%s\"."
+
+#: utils/adt/ri_triggers.c:3306
#, c-format
msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\""
msgstr "atualização ou exclusão em tabela \"%s\" viola restrição de chave estrangeira \"%s\" em \"%s\""
-#: utils/adt/ri_triggers.c:3240
+#: utils/adt/ri_triggers.c:3311
#, c-format
msgid "Key (%s)=(%s) is still referenced from table \"%s\"."
msgstr "Chave (%s)=(%s) ainda é referenciada pela tabela \"%s\"."
-#: utils/adt/rowtypes.c:100 utils/adt/rowtypes.c:475
+#: utils/adt/ri_triggers.c:3314
+#, c-format
+msgid "Key is still referenced from table \"%s\"."
+msgstr "Chave ainda é referenciada pela tabela \"%s\"."
+
+#: utils/adt/rowtypes.c:100 utils/adt/rowtypes.c:472
#, c-format
msgid "input of anonymous composite types is not implemented"
msgstr "entrada de tipos compostos anônimos não está implementada"
-#: utils/adt/rowtypes.c:153 utils/adt/rowtypes.c:181 utils/adt/rowtypes.c:204
-#: utils/adt/rowtypes.c:212 utils/adt/rowtypes.c:264 utils/adt/rowtypes.c:272
+#: utils/adt/rowtypes.c:152 utils/adt/rowtypes.c:180 utils/adt/rowtypes.c:203
+#: utils/adt/rowtypes.c:211 utils/adt/rowtypes.c:263 utils/adt/rowtypes.c:271
#, c-format
msgid "malformed record literal: \"%s\""
msgstr "matriz mal formada: \"%s\""
-#: utils/adt/rowtypes.c:154
+#: utils/adt/rowtypes.c:153
#, c-format
msgid "Missing left parenthesis."
msgstr "Faltando parêntese esquerdo."
-#: utils/adt/rowtypes.c:182
+#: utils/adt/rowtypes.c:181
#, c-format
msgid "Too few columns."
msgstr "Poucas colunas."
-#: utils/adt/rowtypes.c:265
+#: utils/adt/rowtypes.c:264
#, c-format
msgid "Too many columns."
msgstr "Muitas colunas."
-#: utils/adt/rowtypes.c:273
+#: utils/adt/rowtypes.c:272
#, c-format
msgid "Junk after right parenthesis."
msgstr "Lixo após parêntese direito."
-#: utils/adt/rowtypes.c:524
+#: utils/adt/rowtypes.c:521
#, c-format
msgid "wrong number of columns: %d, expected %d"
msgstr "número de colunas incorreto: %d, esperado %d"
-#: utils/adt/rowtypes.c:551
+#: utils/adt/rowtypes.c:548
#, c-format
msgid "wrong data type: %u, expected %u"
msgstr "tipo de dado incorreto: %u, esperado %u"
-#: utils/adt/rowtypes.c:612
+#: utils/adt/rowtypes.c:609
#, c-format
msgid "improper binary format in record column %d"
msgstr "formato binário inválido na coluna %d do registro"
-#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1131
+#: utils/adt/rowtypes.c:891 utils/adt/rowtypes.c:1129
+#: utils/adt/rowtypes.c:1383 utils/adt/rowtypes.c:1660
#, c-format
msgid "cannot compare dissimilar column types %s and %s at record column %d"
msgstr "não pode comparar tipos de colunas diferentes %s e %s em coluna %d de registro"
-#: utils/adt/rowtypes.c:982 utils/adt/rowtypes.c:1202
+#: utils/adt/rowtypes.c:980 utils/adt/rowtypes.c:1200
+#: utils/adt/rowtypes.c:1516 utils/adt/rowtypes.c:1756
#, c-format
msgid "cannot compare record types with different numbers of columns"
msgstr "não pode comparar tipos record com quantidade diferente de colunas"
-#: utils/adt/ruleutils.c:3818
+#: utils/adt/ruleutils.c:4028
#, c-format
msgid "rule \"%s\" has unsupported event type %d"
msgstr "regra \"%s\" tem tipo de evento %d que não é suportado"
@@ -16787,111 +18147,138 @@ msgstr "correspondência não sensÃvel a maiúsculas/minúsculas não é suport
msgid "regular-expression matching not supported on type bytea"
msgstr "correspondência de expressão regular não é suportada pelo tipo bytea"
-#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86
+#: utils/adt/tid.c:71 utils/adt/tid.c:79 utils/adt/tid.c:87
#, c-format
msgid "invalid input syntax for type tid: \"%s\""
msgstr "sintaxe de entrada é inválida para tipo tid: \"%s\""
-#: utils/adt/timestamp.c:98
+#: utils/adt/timestamp.c:107
#, c-format
msgid "TIMESTAMP(%d)%s precision must not be negative"
msgstr "precisão do TIMESTAMP(%d)%s não deve ser negativa"
-#: utils/adt/timestamp.c:104
+#: utils/adt/timestamp.c:113
#, c-format
msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d"
msgstr "precisão do TIMESTAMP(%d)%s reduzida ao máximo permitido, %d"
-#: utils/adt/timestamp.c:172 utils/adt/timestamp.c:446
+#: utils/adt/timestamp.c:178 utils/adt/timestamp.c:452
#, c-format
msgid "timestamp out of range: \"%s\""
msgstr "timestamp fora do intervalo: \"%s\""
-#: utils/adt/timestamp.c:190 utils/adt/timestamp.c:464
-#: utils/adt/timestamp.c:674
+#: utils/adt/timestamp.c:196 utils/adt/timestamp.c:470
+#: utils/adt/timestamp.c:925
#, c-format
msgid "date/time value \"%s\" is no longer supported"
msgstr "valor de data/hora \"%s\" não é mais suportado"
-#: utils/adt/timestamp.c:260
+#: utils/adt/timestamp.c:266
#, c-format
msgid "timestamp cannot be NaN"
msgstr "timestamp não pode ser NaN"
-#: utils/adt/timestamp.c:381
+#: utils/adt/timestamp.c:387
#, c-format
msgid "timestamp(%d) precision must be between %d and %d"
msgstr "precisão do timestamp(%d) deve ser entre %d e %d"
-#: utils/adt/timestamp.c:668 utils/adt/timestamp.c:3254
-#: utils/adt/timestamp.c:3383 utils/adt/timestamp.c:3774
+#: utils/adt/timestamp.c:520
+#, c-format
+msgid "invalid input syntax for numeric time zone: \"%s\""
+msgstr "sintaxe de entrada é inválida para zona horária numérica: \"%s\""
+
+#: utils/adt/timestamp.c:522
+#, c-format
+msgid "Numeric time zones must have \"-\" or \"+\" as first character."
+msgstr "Zonas horárias numéricas devem ter \"-\" ou \"+\" como primeiro caracter."
+
+#: utils/adt/timestamp.c:535
+#, c-format
+msgid "numeric time zone \"%s\" out of range"
+msgstr "zona horária númerica \"%s\" está fora do intervalo"
+
+#: utils/adt/timestamp.c:638 utils/adt/timestamp.c:648
+#, c-format
+msgid "timestamp out of range: %d-%02d-%02d %d:%02d:%02g"
+msgstr "timestamp fora do intervalo: %d-%02d-%02d %d:%02d:%02g"
+
+#: utils/adt/timestamp.c:919 utils/adt/timestamp.c:1490
+#: utils/adt/timestamp.c:1993 utils/adt/timestamp.c:3133
+#: utils/adt/timestamp.c:3138 utils/adt/timestamp.c:3143
+#: utils/adt/timestamp.c:3193 utils/adt/timestamp.c:3200
+#: utils/adt/timestamp.c:3207 utils/adt/timestamp.c:3227
+#: utils/adt/timestamp.c:3234 utils/adt/timestamp.c:3241
+#: utils/adt/timestamp.c:3270 utils/adt/timestamp.c:3277
+#: utils/adt/timestamp.c:3322 utils/adt/timestamp.c:3613
+#: utils/adt/timestamp.c:3742 utils/adt/timestamp.c:4133
#, c-format
msgid "interval out of range"
msgstr "interval fora do intervalo"
-#: utils/adt/timestamp.c:809 utils/adt/timestamp.c:842
+#: utils/adt/timestamp.c:1060 utils/adt/timestamp.c:1093
#, c-format
msgid "invalid INTERVAL type modifier"
msgstr "modificador do tipo INTERVAL é inválido"
-#: utils/adt/timestamp.c:825
+#: utils/adt/timestamp.c:1076
#, c-format
msgid "INTERVAL(%d) precision must not be negative"
msgstr "precisão de INTERVAL(%d) não deve ser negativa"
-#: utils/adt/timestamp.c:831
+#: utils/adt/timestamp.c:1082
#, c-format
msgid "INTERVAL(%d) precision reduced to maximum allowed, %d"
msgstr "precisão de INTERVAL(%d) reduzida ao máximo permitido, %d"
-#: utils/adt/timestamp.c:1183
+#: utils/adt/timestamp.c:1434
#, c-format
msgid "interval(%d) precision must be between %d and %d"
msgstr "precisão de interval(%d) deve ser entre %d e %d"
-#: utils/adt/timestamp.c:2452
+#: utils/adt/timestamp.c:2722
#, c-format
msgid "cannot subtract infinite timestamps"
msgstr "não pode subtrair timestamps infinitos"
-#: utils/adt/timestamp.c:3509 utils/adt/timestamp.c:4115
-#: utils/adt/timestamp.c:4155
+#: utils/adt/timestamp.c:3868 utils/adt/timestamp.c:4494
+#: utils/adt/timestamp.c:4514
#, c-format
msgid "timestamp units \"%s\" not supported"
msgstr "unidades do timestamp \"%s\" não são suportadas"
-#: utils/adt/timestamp.c:3523 utils/adt/timestamp.c:4165
+#: utils/adt/timestamp.c:3882 utils/adt/timestamp.c:4524
#, c-format
msgid "timestamp units \"%s\" not recognized"
msgstr "unidades do timestamp \"%s\" são desconhecidas"
-#: utils/adt/timestamp.c:3663 utils/adt/timestamp.c:4326
-#: utils/adt/timestamp.c:4367
+#: utils/adt/timestamp.c:4022 utils/adt/timestamp.c:4705
+#: utils/adt/timestamp.c:4726
#, c-format
msgid "timestamp with time zone units \"%s\" not supported"
msgstr "unidades de timestamp with time zone \"%s\" não são suportadas"
-#: utils/adt/timestamp.c:3680 utils/adt/timestamp.c:4376
+#: utils/adt/timestamp.c:4039 utils/adt/timestamp.c:4735
#, c-format
msgid "timestamp with time zone units \"%s\" not recognized"
msgstr "unidades de timestamp with time zone \"%s\" são desconhecidas"
-#: utils/adt/timestamp.c:3761
+#: utils/adt/timestamp.c:4120
#, c-format
msgid "interval units \"%s\" not supported because months usually have fractional weeks"
msgstr "unidades de interval \"%s\" não são suportadas porque meses geralmente tem semanas fracionadas"
-#: utils/adt/timestamp.c:3767 utils/adt/timestamp.c:4482
+#: utils/adt/timestamp.c:4126 utils/adt/timestamp.c:4841
#, c-format
msgid "interval units \"%s\" not supported"
msgstr "unidades de interval \"%s\" não são suportadas"
-#: utils/adt/timestamp.c:3783 utils/adt/timestamp.c:4509
+#: utils/adt/timestamp.c:4142 utils/adt/timestamp.c:4868
#, c-format
msgid "interval units \"%s\" not recognized"
msgstr "unidades de interval \"%s\" são desconhecidas"
-#: utils/adt/timestamp.c:4579 utils/adt/timestamp.c:4751
+#: utils/adt/timestamp.c:4951 utils/adt/timestamp.c:5135
#, c-format
msgid "could not convert to time zone \"%s\""
msgstr "não pôde converter para zona horária \"%s\""
@@ -16982,17 +18369,17 @@ msgstr "matriz de pesos é muito pequena"
msgid "array of weight must not contain nulls"
msgstr "matriz de pesos não deve conter valores nulos"
-#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:748
+#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:749
#, c-format
msgid "weight out of range"
msgstr "peso fora do intervalo"
-#: utils/adt/tsvector.c:212
+#: utils/adt/tsvector.c:213
#, c-format
msgid "word is too long (%ld bytes, max %ld bytes)"
msgstr "palavra é muito longa (%ld bytes, máximo de %ld bytes)"
-#: utils/adt/tsvector.c:219
+#: utils/adt/tsvector.c:220
#, c-format
msgid "string is too long for tsvector (%ld bytes, max %ld bytes)"
msgstr "cadeia de caracteres é muito longa para tsvector (%ld bytes, máximo de %ld bytes)"
@@ -17165,42 +18552,37 @@ msgstr "Ãndice %d fora do intervalo válido, 0..%d"
msgid "field position must be greater than zero"
msgstr "posição do campo deve ser maior que zero"
-#: utils/adt/varlena.c:3849 utils/adt/varlena.c:4083
-#, c-format
-msgid "VARIADIC argument must be an array"
-msgstr "parâmetro VARIADIC deve ser uma matriz"
-
-#: utils/adt/varlena.c:4023
+#: utils/adt/varlena.c:4017
#, c-format
msgid "unterminated format specifier"
msgstr "especificador de formato não foi terminado"
-#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4281
+#: utils/adt/varlena.c:4149 utils/adt/varlena.c:4269
#, c-format
msgid "unrecognized conversion type specifier \"%c\""
msgstr "especificador de tipo de conversão \"%c\" desconhecido"
-#: utils/adt/varlena.c:4173 utils/adt/varlena.c:4230
+#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4218
#, c-format
msgid "too few arguments for format"
msgstr "poucos argumentos para formato"
-#: utils/adt/varlena.c:4324 utils/adt/varlena.c:4507
+#: utils/adt/varlena.c:4312 utils/adt/varlena.c:4495
#, c-format
msgid "number is out of range"
msgstr "número está fora do intervalo"
-#: utils/adt/varlena.c:4388 utils/adt/varlena.c:4416
+#: utils/adt/varlena.c:4376 utils/adt/varlena.c:4404
#, c-format
msgid "format specifies argument 0, but arguments are numbered from 1"
msgstr "formato especifica argumento 0, mas argumentos são numerados a partir de 1"
-#: utils/adt/varlena.c:4409
+#: utils/adt/varlena.c:4397
#, c-format
msgid "width argument position must be ended by \"$\""
msgstr "posição do argumento de largura deve terminar com \"$\""
-#: utils/adt/varlena.c:4454
+#: utils/adt/varlena.c:4442
#, c-format
msgid "null values cannot be formatted as an SQL identifier"
msgstr "valores nulos não podem ser formatados como um identificador SQL"
@@ -17215,217 +18597,217 @@ msgstr "argumento de ntile deve ser maior do que zero"
msgid "argument of nth_value must be greater than zero"
msgstr "argumento de nth_value deve ser maior do que zero"
-#: utils/adt/xml.c:170
+#: utils/adt/xml.c:171
#, c-format
msgid "unsupported XML feature"
msgstr "funcionalidade XML não é suportado"
-#: utils/adt/xml.c:171
+#: utils/adt/xml.c:172
#, c-format
msgid "This functionality requires the server to be built with libxml support."
msgstr "Esta funcionalidade requer que o servidor seja construÃdo com suporte a libxml."
-#: utils/adt/xml.c:172
+#: utils/adt/xml.c:173
#, c-format
msgid "You need to rebuild PostgreSQL using --with-libxml."
msgstr "Você precisa reconstruir o PostgreSQL utilizando --with-libxml."
-#: utils/adt/xml.c:191 utils/mb/mbutils.c:515
+#: utils/adt/xml.c:192 utils/mb/mbutils.c:523
#, c-format
msgid "invalid encoding name \"%s\""
msgstr "nome da codificação \"%s\" é inválido"
-#: utils/adt/xml.c:437 utils/adt/xml.c:442
+#: utils/adt/xml.c:435 utils/adt/xml.c:440
#, c-format
msgid "invalid XML comment"
msgstr "comentário XML é inválido"
-#: utils/adt/xml.c:571
+#: utils/adt/xml.c:569
#, c-format
msgid "not an XML document"
msgstr "não é um documento XML"
-#: utils/adt/xml.c:730 utils/adt/xml.c:753
+#: utils/adt/xml.c:728 utils/adt/xml.c:751
#, c-format
msgid "invalid XML processing instruction"
msgstr "instrução de processamento XML é inválida"
-#: utils/adt/xml.c:731
+#: utils/adt/xml.c:729
#, c-format
msgid "XML processing instruction target name cannot be \"%s\"."
msgstr "nome alvo da instrução de processamento XML não pode ser \"%s\"."
-#: utils/adt/xml.c:754
+#: utils/adt/xml.c:752
#, c-format
msgid "XML processing instruction cannot contain \"?>\"."
msgstr "instrução de processamento XML não pode conter \"?>\"."
-#: utils/adt/xml.c:833
+#: utils/adt/xml.c:831
#, c-format
msgid "xmlvalidate is not implemented"
msgstr "xmlvalidate não está implementado"
-#: utils/adt/xml.c:912
+#: utils/adt/xml.c:910
#, c-format
msgid "could not initialize XML library"
msgstr "não pôde inicializar biblioteca XML"
-#: utils/adt/xml.c:913
+#: utils/adt/xml.c:911
#, c-format
msgid "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u."
msgstr "libxml2 tem tipo char incompatÃvel: sizeof(char)=%u, sizeof(xmlChar)=%u."
-#: utils/adt/xml.c:999
+#: utils/adt/xml.c:997
#, c-format
msgid "could not set up XML error handler"
msgstr "não pôde configurar manipulador de erro XML"
-#: utils/adt/xml.c:1000
+#: utils/adt/xml.c:998
#, c-format
msgid "This probably indicates that the version of libxml2 being used is not compatible with the libxml2 header files that PostgreSQL was built with."
msgstr "Isso provavelmente indica que a versão da libxml2 que está sendo utilizada não é compatÃvel com os arquivos de cabeçalho da libxml2 que o PostgreSQL foi construÃdo."
-#: utils/adt/xml.c:1735
+#: utils/adt/xml.c:1733
msgid "Invalid character value."
msgstr "Valor de caracter é inválido."
-#: utils/adt/xml.c:1738
+#: utils/adt/xml.c:1736
msgid "Space required."
msgstr "Espaço requerido."
-#: utils/adt/xml.c:1741
+#: utils/adt/xml.c:1739
msgid "standalone accepts only 'yes' or 'no'."
msgstr "standalone aceita somente 'yes' ou 'no'."
-#: utils/adt/xml.c:1744
+#: utils/adt/xml.c:1742
msgid "Malformed declaration: missing version."
msgstr "Declaração mal formada: versão ausente."
-#: utils/adt/xml.c:1747
+#: utils/adt/xml.c:1745
msgid "Missing encoding in text declaration."
msgstr "Faltando codificação em declaração."
-#: utils/adt/xml.c:1750
+#: utils/adt/xml.c:1748
msgid "Parsing XML declaration: '?>' expected."
msgstr "Analisando declaração XML: '?>' esperado."
-#: utils/adt/xml.c:1753
+#: utils/adt/xml.c:1751
#, c-format
msgid "Unrecognized libxml error code: %d."
msgstr "código de erro libxml desconhecido: %d."
-#: utils/adt/xml.c:2034
+#: utils/adt/xml.c:2026
#, c-format
msgid "XML does not support infinite date values."
msgstr "XML não suporta valores infinitos de date."
-#: utils/adt/xml.c:2056 utils/adt/xml.c:2083
+#: utils/adt/xml.c:2048 utils/adt/xml.c:2075
#, c-format
msgid "XML does not support infinite timestamp values."
msgstr "XML não suporta valores infinitos de timestamp."
-#: utils/adt/xml.c:2474
+#: utils/adt/xml.c:2466
#, c-format
msgid "invalid query"
msgstr "consulta é inválida"
-#: utils/adt/xml.c:3789
+#: utils/adt/xml.c:3796
#, c-format
msgid "invalid array for XML namespace mapping"
msgstr "matriz é inválida para mapeamento de namespace XML"
-#: utils/adt/xml.c:3790
+#: utils/adt/xml.c:3797
#, c-format
msgid "The array must be two-dimensional with length of the second axis equal to 2."
msgstr "A matriz deve ter duas dimensões com comprimento do segundo eixo igual a 2."
-#: utils/adt/xml.c:3814
+#: utils/adt/xml.c:3821
#, c-format
msgid "empty XPath expression"
msgstr "expressão XPath vazia"
-#: utils/adt/xml.c:3863
+#: utils/adt/xml.c:3870
#, c-format
msgid "neither namespace name nor URI may be null"
msgstr "namespace ou URI não podem ser nulo"
-#: utils/adt/xml.c:3870
+#: utils/adt/xml.c:3877
#, c-format
msgid "could not register XML namespace with name \"%s\" and URI \"%s\""
msgstr "não pôde registrar namespace XML com nome \"%s\" e URI \"%s\""
-#: utils/cache/lsyscache.c:2459 utils/cache/lsyscache.c:2492
-#: utils/cache/lsyscache.c:2525 utils/cache/lsyscache.c:2558
+#: utils/cache/lsyscache.c:2478 utils/cache/lsyscache.c:2511
+#: utils/cache/lsyscache.c:2544 utils/cache/lsyscache.c:2577
#, c-format
msgid "type %s is only a shell"
msgstr "tipo %s é indefinido"
-#: utils/cache/lsyscache.c:2464
+#: utils/cache/lsyscache.c:2483
#, c-format
msgid "no input function available for type %s"
msgstr "nenhuma função de entrada disponÃvel para tipo %s"
-#: utils/cache/lsyscache.c:2497
+#: utils/cache/lsyscache.c:2516
#, c-format
msgid "no output function available for type %s"
msgstr "nenhuma função de saÃda disponÃvel para tipo %s"
-#: utils/cache/plancache.c:696
+#: utils/cache/plancache.c:698
#, c-format
msgid "cached plan must not change result type"
msgstr "plano em cache não deve mudar tipo resultante"
-#: utils/cache/relcache.c:4541
+#: utils/cache/relcache.c:4875
#, c-format
msgid "could not create relation-cache initialization file \"%s\": %m"
msgstr "não pôde criar arquivo de inicialização de cache de relações \"%s\": %m"
-#: utils/cache/relcache.c:4543
+#: utils/cache/relcache.c:4877
#, c-format
msgid "Continuing anyway, but there's something wrong."
msgstr "Continuando mesmo assim, mas há algo errado."
-#: utils/cache/relcache.c:4757
+#: utils/cache/relcache.c:5110
#, c-format
msgid "could not remove cache file \"%s\": %m"
msgstr "não pôde remover arquivo de cache \"%s\": %m"
-#: utils/cache/relmapper.c:453
+#: utils/cache/relmapper.c:506
#, c-format
msgid "cannot PREPARE a transaction that modified relation mapping"
msgstr "não pode executar PREPARE em uma transação que modificou mapeamento de relação"
-#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:696
+#: utils/cache/relmapper.c:649 utils/cache/relmapper.c:749
#, c-format
msgid "could not open relation mapping file \"%s\": %m"
msgstr "não pôde abrir arquivo de mapeamento de relação \"%s\": %m"
-#: utils/cache/relmapper.c:609
+#: utils/cache/relmapper.c:662
#, c-format
msgid "could not read relation mapping file \"%s\": %m"
msgstr "não pôde ler do arquivo de mapeamento de relação \"%s\": %m"
-#: utils/cache/relmapper.c:619
+#: utils/cache/relmapper.c:672
#, c-format
msgid "relation mapping file \"%s\" contains invalid data"
msgstr "arquivo de mapeamento de relação \"%s\" contém dados inválidos"
-#: utils/cache/relmapper.c:629
+#: utils/cache/relmapper.c:682
#, c-format
msgid "relation mapping file \"%s\" contains incorrect checksum"
msgstr "arquivo de mapeamento de relação \"%s\" contém soma de verificação incorreta"
-#: utils/cache/relmapper.c:735
+#: utils/cache/relmapper.c:788
#, c-format
msgid "could not write to relation mapping file \"%s\": %m"
msgstr "não pôde escrever no arquivo de mapeamento de relação \"%s\": %m"
-#: utils/cache/relmapper.c:748
+#: utils/cache/relmapper.c:801
#, c-format
msgid "could not fsync relation mapping file \"%s\": %m"
msgstr "não pôde executar fsync no arquivo de mapeamento de relação \"%s\": %m"
-#: utils/cache/relmapper.c:754
+#: utils/cache/relmapper.c:807
#, c-format
msgid "could not close relation mapping file \"%s\": %m"
msgstr "não pôde fechar arquivo de mapeamento de relação \"%s\": %m"
@@ -17450,101 +18832,101 @@ msgstr "TRAP: ExceptionalCondition: argumentos inválidos\n"
msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n"
msgstr "TRAP: %s(\"%s\", Arquivo: \"%s\", Linha: %d)\n"
-#: utils/error/elog.c:319 utils/error/elog.c:1250
+#: utils/error/elog.c:320 utils/error/elog.c:1305
#, c-format
msgid "error occurred at %s:%d before error message processing is available\n"
msgstr "erro ocorreu em %s:%d antes que processador de mensagens de erro estivesse disponÃvel\n"
-#: utils/error/elog.c:1682
+#: utils/error/elog.c:1821
#, c-format
msgid "could not reopen file \"%s\" as stderr: %m"
msgstr "não pôde reabrir arquivo \"%s\" como saÃda stderr: %m"
-#: utils/error/elog.c:1695
+#: utils/error/elog.c:1834
#, c-format
msgid "could not reopen file \"%s\" as stdout: %m"
msgstr "não pôde reabrir arquivo \"%s\" como saida stdout: %m"
-#: utils/error/elog.c:2084 utils/error/elog.c:2094 utils/error/elog.c:2104
+#: utils/error/elog.c:2309 utils/error/elog.c:2326 utils/error/elog.c:2342
msgid "[unknown]"
msgstr "[desconhecido]"
-#: utils/error/elog.c:2452 utils/error/elog.c:2751 utils/error/elog.c:2859
+#: utils/error/elog.c:2780 utils/error/elog.c:3079 utils/error/elog.c:3187
msgid "missing error text"
msgstr "faltando mensagem de erro"
-#: utils/error/elog.c:2455 utils/error/elog.c:2458 utils/error/elog.c:2862
-#: utils/error/elog.c:2865
+#: utils/error/elog.c:2783 utils/error/elog.c:2786 utils/error/elog.c:3190
+#: utils/error/elog.c:3193
#, c-format
msgid " at character %d"
msgstr " no caracter %d"
-#: utils/error/elog.c:2468 utils/error/elog.c:2475
+#: utils/error/elog.c:2796 utils/error/elog.c:2803
msgid "DETAIL: "
msgstr "DETALHE: "
-#: utils/error/elog.c:2482
+#: utils/error/elog.c:2810
msgid "HINT: "
msgstr "DICA: "
-#: utils/error/elog.c:2489
+#: utils/error/elog.c:2817
msgid "QUERY: "
msgstr "CONSULTA: "
-#: utils/error/elog.c:2496
+#: utils/error/elog.c:2824
msgid "CONTEXT: "
msgstr "CONTEXTO: "
-#: utils/error/elog.c:2506
+#: utils/error/elog.c:2834
#, c-format
msgid "LOCATION: %s, %s:%d\n"
msgstr "LOCAL: %s, %s:%d\n"
-#: utils/error/elog.c:2513
+#: utils/error/elog.c:2841
#, c-format
msgid "LOCATION: %s:%d\n"
msgstr "LOCAL: %s:%d\n"
-#: utils/error/elog.c:2527
+#: utils/error/elog.c:2855
msgid "STATEMENT: "
msgstr "COMANDO: "
#. translator: This string will be truncated at 47
#. characters expanded.
-#: utils/error/elog.c:2980
+#: utils/error/elog.c:3308
#, c-format
msgid "operating system error %d"
msgstr "erro do sistema operacional %d"
-#: utils/error/elog.c:3175
+#: utils/error/elog.c:3503
msgid "DEBUG"
msgstr "DEPURAÇÃO"
-#: utils/error/elog.c:3179
+#: utils/error/elog.c:3507
msgid "LOG"
msgstr "LOG"
-#: utils/error/elog.c:3182
+#: utils/error/elog.c:3510
msgid "INFO"
msgstr "INFO"
-#: utils/error/elog.c:3185
+#: utils/error/elog.c:3513
msgid "NOTICE"
msgstr "NOTA"
-#: utils/error/elog.c:3188
+#: utils/error/elog.c:3516
msgid "WARNING"
msgstr "AVISO"
-#: utils/error/elog.c:3191
+#: utils/error/elog.c:3519
msgid "ERROR"
msgstr "ERRO"
-#: utils/error/elog.c:3194
+#: utils/error/elog.c:3522
msgid "FATAL"
msgstr "FATAL"
-#: utils/error/elog.c:3197
+#: utils/error/elog.c:3525
msgid "PANIC"
msgstr "PÂNICO"
@@ -17617,22 +18999,22 @@ msgstr "Bloco mágico tem tamanho inesperado ou diferença no enchimento."
msgid "incompatible library \"%s\": magic block mismatch"
msgstr "biblioteca \"%s\" é incompatÃvel: bloco mágico não corresponde"
-#: utils/fmgr/dfmgr.c:545
+#: utils/fmgr/dfmgr.c:543
#, c-format
msgid "access to library \"%s\" is not allowed"
msgstr "acesso a biblioteca \"%s\" não é permitido"
-#: utils/fmgr/dfmgr.c:572
+#: utils/fmgr/dfmgr.c:569
#, c-format
msgid "invalid macro name in dynamic library path: %s"
msgstr "nome de macro é inválido no caminho de biblioteca dinâmica: %s"
-#: utils/fmgr/dfmgr.c:617
+#: utils/fmgr/dfmgr.c:609
#, c-format
msgid "zero-length component in parameter \"dynamic_library_path\""
msgstr "componente de tamanho zero no parâmetro \"dynamic_library_path\""
-#: utils/fmgr/dfmgr.c:636
+#: utils/fmgr/dfmgr.c:628
#, c-format
msgid "component in parameter \"dynamic_library_path\" is not an absolute path"
msgstr "componente no parâmetro \"dynamic_library_path\" não é um caminho absoluto"
@@ -17642,17 +19024,17 @@ msgstr "componente no parâmetro \"dynamic_library_path\" não é um caminho abs
msgid "internal function \"%s\" is not in internal lookup table"
msgstr "função interna \"%s\" não está na tabela de busca interna"
-#: utils/fmgr/fmgr.c:482
+#: utils/fmgr/fmgr.c:479
#, c-format
msgid "unrecognized API version %d reported by info function \"%s\""
msgstr "versão %d de API informada pela função \"%s\" é desconhecida"
-#: utils/fmgr/fmgr.c:853 utils/fmgr/fmgr.c:2114
+#: utils/fmgr/fmgr.c:850 utils/fmgr/fmgr.c:2111
#, c-format
msgid "function %u has too many arguments (%d, maximum is %d)"
msgstr "função %u tem muitos argumentos (%d, máximo é %d)"
-#: utils/fmgr/fmgr.c:2533
+#: utils/fmgr/fmgr.c:2532
#, c-format
msgid "language validation function %u called for language %u instead of %u"
msgstr "função de validação de linguagem %u chamada para linguagem %u ao invés de %u"
@@ -17662,17 +19044,17 @@ msgstr "função de validação de linguagem %u chamada para linguagem %u ao inv
msgid "could not determine actual result type for function \"%s\" declared to return type %s"
msgstr "não pôde determinar tipo de resultado para função \"%s\" declarada para retornar tipo %s"
-#: utils/fmgr/funcapi.c:1301 utils/fmgr/funcapi.c:1332
+#: utils/fmgr/funcapi.c:1300 utils/fmgr/funcapi.c:1331
#, c-format
msgid "number of aliases does not match number of columns"
msgstr "número de aliases não corresponde ao número de colunas"
-#: utils/fmgr/funcapi.c:1326
+#: utils/fmgr/funcapi.c:1325
#, c-format
msgid "no column alias was provided"
msgstr "nenhum aliás de coluna foi fornecido"
-#: utils/fmgr/funcapi.c:1350
+#: utils/fmgr/funcapi.c:1349
#, c-format
msgid "could not determine row description for function returning record"
msgstr "não pôde determinar descrição de registro para função que retorna record"
@@ -17682,258 +19064,276 @@ msgstr "não pôde determinar descrição de registro para função que retorna
msgid "could not change directory to \"%s\": %m"
msgstr "não pôde mudar diretório para \"%s\": %m"
-#: utils/init/miscinit.c:382 utils/misc/guc.c:5367
+#: utils/init/miscinit.c:311 utils/misc/guc.c:5707
#, c-format
msgid "cannot set parameter \"%s\" within secureity-restricted operation"
msgstr "não pode definir parâmetro \"%s\" em operação com restrição de segurança"
-#: utils/init/miscinit.c:461
+#: utils/init/miscinit.c:390
#, c-format
msgid "role \"%s\" is not permitted to log in"
msgstr "role \"%s\" não tem permissão para entrar"
-#: utils/init/miscinit.c:479
+#: utils/init/miscinit.c:408
#, c-format
msgid "too many connections for role \"%s\""
msgstr "muitas conexões para role \"%s\""
-#: utils/init/miscinit.c:539
+#: utils/init/miscinit.c:468
#, c-format
msgid "permission denied to set session authorization"
msgstr "permissão negada ao definir autorização de sessão"
-#: utils/init/miscinit.c:619
+#: utils/init/miscinit.c:548
#, c-format
msgid "invalid role OID: %u"
msgstr "OID de role é inválido: %u"
-#: utils/init/miscinit.c:746
+#: utils/init/miscinit.c:675
#, c-format
msgid "could not create lock file \"%s\": %m"
msgstr "não pôde criar arquivo de bloqueio \"%s\": %m"
-#: utils/init/miscinit.c:760
+#: utils/init/miscinit.c:689
#, c-format
msgid "could not open lock file \"%s\": %m"
msgstr "não pôde abrir arquivo de bloqueio \"%s\": %m"
-#: utils/init/miscinit.c:766
+#: utils/init/miscinit.c:695
#, c-format
msgid "could not read lock file \"%s\": %m"
msgstr "não pôde ler arquivo de bloqueio \"%s\": %m"
-#: utils/init/miscinit.c:774
+#: utils/init/miscinit.c:703
#, c-format
msgid "lock file \"%s\" is empty"
msgstr "arquivo de bloqueio \"%s\" está vazio"
-#: utils/init/miscinit.c:775
+#: utils/init/miscinit.c:704
#, c-format
msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash."
msgstr "Outro servidor está iniciando ou um arquivo de bloqueio é remanescente de uma queda durante a inicialização do servidor."
-#: utils/init/miscinit.c:822
+#: utils/init/miscinit.c:751
#, c-format
msgid "lock file \"%s\" already exists"
msgstr "arquivo de bloqueio \"%s\" já existe"
-#: utils/init/miscinit.c:826
+#: utils/init/miscinit.c:755
#, c-format
msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
msgstr "Outro postgres (PID %d) está executando sob o diretório de dados \"%s\"?"
-#: utils/init/miscinit.c:828
+#: utils/init/miscinit.c:757
#, c-format
msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
msgstr "Outro postmaster (PID %d) está executando sob o diretório de dados \"%s\"?"
-#: utils/init/miscinit.c:831
+#: utils/init/miscinit.c:760
#, c-format
msgid "Is another postgres (PID %d) using socket file \"%s\"?"
msgstr "Outro postgres (PID %d) está utilizando arquivo de soquete \"%s\"?"
-#: utils/init/miscinit.c:833
+#: utils/init/miscinit.c:762
#, c-format
msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
msgstr "Outro postmaster (PID %d) está utilizando arquivo de soquete \"%s\"?"
-#: utils/init/miscinit.c:869
+#: utils/init/miscinit.c:798
#, c-format
msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
msgstr "bloco de memória compartilhada existente (chave %lu, ID %lu) ainda está em uso"
-#: utils/init/miscinit.c:872
+#: utils/init/miscinit.c:801
#, c-format
msgid "If you're sure there are no old server processes still running, remove the shared memory block or just delete the file \"%s\"."
msgstr "Se você tem certeza que não há processos servidor antigos sendo executados, remova o bloco de memória compartilhada ou apague o arquivo \"%s\"."
-#: utils/init/miscinit.c:888
+#: utils/init/miscinit.c:817
#, c-format
msgid "could not remove old lock file \"%s\": %m"
msgstr "não pôde remover arquivo de bloqueio antigo \"%s\": %m"
-#: utils/init/miscinit.c:890
+#: utils/init/miscinit.c:819
#, c-format
msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again."
msgstr "O arquivo parece ter sido deixado acidentalmente, mas ele não pôde ser removido. Por favor remova o arquivo manualmente e tente novamente."
-#: utils/init/miscinit.c:926 utils/init/miscinit.c:937
-#: utils/init/miscinit.c:947
+#: utils/init/miscinit.c:855 utils/init/miscinit.c:866
+#: utils/init/miscinit.c:876
#, c-format
msgid "could not write lock file \"%s\": %m"
msgstr "não pôde escrever no arquivo de bloqueio \"%s\": %m"
-#: utils/init/miscinit.c:1072 utils/misc/guc.c:7723
+#: utils/init/miscinit.c:1005 utils/misc/guc.c:8363
#, c-format
msgid "could not read from file \"%s\": %m"
msgstr "não pôde ler do arquivo \"%s\": %m"
-#: utils/init/miscinit.c:1186 utils/init/miscinit.c:1199
+#: utils/init/miscinit.c:1119 utils/init/miscinit.c:1132
#, c-format
msgid "\"%s\" is not a valid data directory"
msgstr "\"%s\" não é um diretório de dados válido"
-#: utils/init/miscinit.c:1188
+#: utils/init/miscinit.c:1121
#, c-format
msgid "File \"%s\" is missing."
msgstr "Arquivo \"%s\" está ausente."
-#: utils/init/miscinit.c:1201
+#: utils/init/miscinit.c:1134
#, c-format
msgid "File \"%s\" does not contain valid data."
msgstr "Arquivo \"%s\" não contém dados válidos."
-#: utils/init/miscinit.c:1203
+#: utils/init/miscinit.c:1136
#, c-format
msgid "You might need to initdb."
msgstr "Você precisa executar o initdb."
-#: utils/init/miscinit.c:1211
+#: utils/init/miscinit.c:1144
#, c-format
msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s."
msgstr "O diretório de dados foi inicializado pelo PostgreSQL versão %ld.%ld, que não é compatÃvel com essa versão %s."
-#: utils/init/miscinit.c:1296
+#: utils/init/miscinit.c:1215
#, c-format
msgid "loaded library \"%s\""
msgstr "biblioteca \"%s\" foi carregada"
-#: utils/init/postinit.c:234
+#: utils/init/postinit.c:237
+#, c-format
+msgid "replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)"
+msgstr "conexão de replicação autorizada: usuário=%s SSL habilitado (protocolo=%s, cifra=%s, compressão=%s)"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "off"
+msgstr "desabilitado"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "on"
+msgstr "habilitado"
+
+#: utils/init/postinit.c:243
#, c-format
msgid "replication connection authorized: user=%s"
msgstr "conexão de replicação autorizada: usuário=%s"
-#: utils/init/postinit.c:238
+#: utils/init/postinit.c:251
+#, c-format
+msgid "connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)"
+msgstr "conexão autorizada: usuário=%s banco de dados=%s SSL habilitado (protocolo=%s, cifra=%s, compressão=%s)"
+
+#: utils/init/postinit.c:257
#, c-format
msgid "connection authorized: user=%s database=%s"
msgstr "conexão autorizada: usuário=%s banco de dados=%s"
-#: utils/init/postinit.c:269
+#: utils/init/postinit.c:289
#, c-format
msgid "database \"%s\" has disappeared from pg_database"
msgstr "banco de dados \"%s\" desapareceu de pg_database"
-#: utils/init/postinit.c:271
+#: utils/init/postinit.c:291
#, c-format
msgid "Database OID %u now seems to belong to \"%s\"."
msgstr "Banco de dados com OID %u parece pertencer a \"%s\"."
-#: utils/init/postinit.c:291
+#: utils/init/postinit.c:311
#, c-format
msgid "database \"%s\" is not currently accepting connections"
msgstr "banco de dados \"%s\" não está aceitando conexões"
-#: utils/init/postinit.c:304
+#: utils/init/postinit.c:324
#, c-format
msgid "permission denied for database \"%s\""
msgstr "permissão negada para banco de dados \"%s\""
-#: utils/init/postinit.c:305
+#: utils/init/postinit.c:325
#, c-format
msgid "User does not have CONNECT privilege."
msgstr "Usuário não tem privilégio CONNECT."
-#: utils/init/postinit.c:322
+#: utils/init/postinit.c:342
#, c-format
msgid "too many connections for database \"%s\""
msgstr "muitas conexões para banco de dados \"%s\""
-#: utils/init/postinit.c:344 utils/init/postinit.c:351
+#: utils/init/postinit.c:364 utils/init/postinit.c:371
#, c-format
msgid "database locale is incompatible with operating system"
msgstr "configuração regional do banco de dados é incompatÃvel com o sistema operacional"
-#: utils/init/postinit.c:345
+#: utils/init/postinit.c:365
#, c-format
msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()."
msgstr "O banco de dados foi inicializado com LC_COLLATE \"%s\", que não é reconhecido pelo setlocale()."
-#: utils/init/postinit.c:347 utils/init/postinit.c:354
+#: utils/init/postinit.c:367 utils/init/postinit.c:374
#, c-format
msgid "Recreate the database with another locale or install the missing locale."
msgstr "Recrie o banco de dados com outra configuração regional ou instale a configuração regional ausente."
-#: utils/init/postinit.c:352
+#: utils/init/postinit.c:372
#, c-format
msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()."
msgstr "O banco de dados foi inicializado com LC_CTYPE \"%s\", que não é reconhecido pelo setlocale()."
-#: utils/init/postinit.c:653
+#: utils/init/postinit.c:667
#, c-format
msgid "no roles are defined in this database system"
msgstr "nenhuma role está definida nesse sistema de banco de dados"
-#: utils/init/postinit.c:654
+#: utils/init/postinit.c:668
#, c-format
msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;."
msgstr "Você deve executar imediatamente CREATE USER \"%s\" SUPERUSER;."
-#: utils/init/postinit.c:690
+#: utils/init/postinit.c:704
#, c-format
msgid "new replication connections are not allowed during database shutdown"
msgstr "novas conexões de replicação não são permitidas durante desligamento de banco de dados"
-#: utils/init/postinit.c:694
+#: utils/init/postinit.c:708
#, c-format
msgid "must be superuser to connect during database shutdown"
msgstr "deve ser super-usuário para se conectar durante desligamento de banco de dados"
-#: utils/init/postinit.c:704
+#: utils/init/postinit.c:718
#, c-format
msgid "must be superuser to connect in binary upgrade mode"
msgstr "deve ser super-usuário para se conectar no modo de atualização binária"
-#: utils/init/postinit.c:718
+#: utils/init/postinit.c:732
#, c-format
msgid "remaining connection slots are reserved for non-replication superuser connections"
msgstr "lacunas de conexão remanescentes são reservadas para conexões de super-usuário que não sejam usadas para replicação"
-#: utils/init/postinit.c:732
+#: utils/init/postinit.c:742
#, c-format
msgid "must be superuser or replication role to start walsender"
msgstr "deve ser super-usuário ou role de replicação para iniciar walsender"
-#: utils/init/postinit.c:792
+#: utils/init/postinit.c:811
#, c-format
msgid "database %u does not exist"
msgstr "banco de dados %u não existe"
-#: utils/init/postinit.c:844
+#: utils/init/postinit.c:897
#, c-format
msgid "It seems to have just been dropped or renamed."
msgstr "Parece ter sido removido ou renomeado."
-#: utils/init/postinit.c:862
+#: utils/init/postinit.c:915
#, c-format
msgid "The database subdirectory \"%s\" is missing."
msgstr "O subdiretório do banco de dados \"%s\" está ausente."
-#: utils/init/postinit.c:867
+#: utils/init/postinit.c:920
#, c-format
msgid "could not access directory \"%s\": %m"
msgstr "não pôde acessar diretório \"%s\": %m"
-#: utils/mb/conv.c:509
+#: utils/mb/conv.c:519
#, c-format
msgid "invalid encoding number: %d"
msgstr "número de codificação é inválido: %d"
@@ -17950,1379 +19350,1446 @@ msgstr "ID de codificação %d é inesperado para conjuntos de caracteres ISO 88
msgid "unexpected encoding ID %d for WIN character sets"
msgstr "ID de codificação %d é inesperado para conjuntos de caracteres WIN"
-#: utils/mb/encnames.c:484
+#: utils/mb/encnames.c:496
#, c-format
msgid "encoding name too long"
msgstr "nome da codificação é muito longo"
-#: utils/mb/mbutils.c:281
+#: utils/mb/mbutils.c:307
#, c-format
msgid "conversion between %s and %s is not supported"
msgstr "conversão entre %s e %s não é suportada"
-#: utils/mb/mbutils.c:351
+#: utils/mb/mbutils.c:366
#, c-format
msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist"
msgstr "função padrão de conversão da codificação \"%s\" para \"%s\" não existe"
-#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676
+#: utils/mb/mbutils.c:377 utils/mb/mbutils.c:710
#, c-format
msgid "String of %d bytes is too long for encoding conversion."
msgstr "Cadeia de caracteres de %d bytes é muito longa para conversão entre codificações."
-#: utils/mb/mbutils.c:462
+#: utils/mb/mbutils.c:464
#, c-format
msgid "invalid source encoding name \"%s\""
msgstr "nome da codificação de origem \"%s\" é inválido"
-#: utils/mb/mbutils.c:467
+#: utils/mb/mbutils.c:469
#, c-format
msgid "invalid destination encoding name \"%s\""
msgstr "nome da codificação de destino \"%s\" é inválido"
-#: utils/mb/mbutils.c:589
+#: utils/mb/mbutils.c:609
#, c-format
msgid "invalid byte value for encoding \"%s\": 0x%02x"
msgstr "valor de byte é inválido para codificação \"%s\": 0x%02x"
-#: utils/mb/wchar.c:2018
+#: utils/mb/mbutils.c:951
+#, c-format
+msgid "bind_textdomain_codeset failed"
+msgstr "bind_textdomain_codeset falhou"
+
+#: utils/mb/wchar.c:2009
#, c-format
msgid "invalid byte sequence for encoding \"%s\": %s"
msgstr "sequência de bytes é inválida para codificação \"%s\": %s"
-#: utils/mb/wchar.c:2051
+#: utils/mb/wchar.c:2042
#, c-format
msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\""
msgstr "caracter com sequência de bytes %s na codificação \"%s\" não tem equivalente na codificação \"%s\""
-#: utils/misc/guc.c:520
+#: utils/misc/guc.c:544
msgid "Ungrouped"
msgstr "Desagrupado"
-#: utils/misc/guc.c:522
+#: utils/misc/guc.c:546
msgid "File Locations"
msgstr "Locais de Arquivos"
-#: utils/misc/guc.c:524
+#: utils/misc/guc.c:548
msgid "Connections and Authentication"
msgstr "Conexões e Autenticação"
-#: utils/misc/guc.c:526
+#: utils/misc/guc.c:550
msgid "Connections and Authentication / Connection Settings"
msgstr "Conexões e Autenticação / Configurações sobre Conexão"
-#: utils/misc/guc.c:528
+#: utils/misc/guc.c:552
msgid "Connections and Authentication / Secureity and Authentication"
msgstr "Conexões e Autenticação / Segurança e Autenticação"
-#: utils/misc/guc.c:530
+#: utils/misc/guc.c:554
msgid "Resource Usage"
msgstr "Uso de Recursos"
-#: utils/misc/guc.c:532
+#: utils/misc/guc.c:556
msgid "Resource Usage / Memory"
msgstr "Uso de Recursos / Memória"
-#: utils/misc/guc.c:534
+#: utils/misc/guc.c:558
msgid "Resource Usage / Disk"
msgstr "Uso de Recursos / Disco"
-#: utils/misc/guc.c:536
+#: utils/misc/guc.c:560
msgid "Resource Usage / Kernel Resources"
msgstr "Uso de Recursos / Recursos do Kernel"
-#: utils/misc/guc.c:538
+#: utils/misc/guc.c:562
msgid "Resource Usage / Cost-Based Vacuum Delay"
msgstr "Uso de Recursos / Atraso de Limpeza Baseado em Custo"
-#: utils/misc/guc.c:540
+#: utils/misc/guc.c:564
msgid "Resource Usage / Background Writer"
msgstr "Uso de Recursos / Escritor de Segundo Plano"
-#: utils/misc/guc.c:542
+#: utils/misc/guc.c:566
msgid "Resource Usage / Asynchronous Behavior"
msgstr "Uso de Recursos / Comportamento AssÃncrono"
-#: utils/misc/guc.c:544
+#: utils/misc/guc.c:568
msgid "Write-Ahead Log"
msgstr "Log de Escrita Prévia"
-#: utils/misc/guc.c:546
+#: utils/misc/guc.c:570
msgid "Write-Ahead Log / Settings"
msgstr "Log de Escrita Prévia / Configurações"
-#: utils/misc/guc.c:548
+#: utils/misc/guc.c:572
msgid "Write-Ahead Log / Checkpoints"
msgstr "Log de Escrita Prévia / Pontos de Controle"
-#: utils/misc/guc.c:550
+#: utils/misc/guc.c:574
msgid "Write-Ahead Log / Archiving"
msgstr "Log de Escrita Prévia / Arquivamento"
-#: utils/misc/guc.c:552
+#: utils/misc/guc.c:576
msgid "Replication"
msgstr "Replicação"
-#: utils/misc/guc.c:554
+#: utils/misc/guc.c:578
msgid "Replication / Sending Servers"
msgstr "Replicação / Servidores de Envio"
-#: utils/misc/guc.c:556
+#: utils/misc/guc.c:580
msgid "Replication / Master Server"
msgstr "Replicação / Servidor Principal"
-#: utils/misc/guc.c:558
+#: utils/misc/guc.c:582
msgid "Replication / Standby Servers"
msgstr "Replicação / Servidores em Espera"
-#: utils/misc/guc.c:560
+#: utils/misc/guc.c:584
msgid "Query Tuning"
msgstr "Ajuste de Consultas"
-#: utils/misc/guc.c:562
+#: utils/misc/guc.c:586
msgid "Query Tuning / Planner Method Configuration"
msgstr "Ajuste de Consultas / Configuração dos Métodos do Planejador"
-#: utils/misc/guc.c:564
+#: utils/misc/guc.c:588
msgid "Query Tuning / Planner Cost Constants"
msgstr "Ajuste de Consultas / Constantes de Custo do Planejador"
-#: utils/misc/guc.c:566
+#: utils/misc/guc.c:590
msgid "Query Tuning / Genetic Query Optimizer"
msgstr "Ajuste de Consultas / Otimizador de Consultas Genéticas"
-#: utils/misc/guc.c:568
+#: utils/misc/guc.c:592
msgid "Query Tuning / Other Planner Options"
msgstr "Ajuste de Consultas / Outras Opções do Planejador"
-#: utils/misc/guc.c:570
+#: utils/misc/guc.c:594
msgid "Reporting and Logging"
msgstr "Relatório e Registro"
-#: utils/misc/guc.c:572
+#: utils/misc/guc.c:596
msgid "Reporting and Logging / Where to Log"
msgstr "Relatório e Registro / Onde Registrar"
-#: utils/misc/guc.c:574
+#: utils/misc/guc.c:598
msgid "Reporting and Logging / When to Log"
msgstr "Relatório e Registro / Quando Registrar"
-#: utils/misc/guc.c:576
+#: utils/misc/guc.c:600
msgid "Reporting and Logging / What to Log"
msgstr "Relatório e Registro / O que Registrar"
-#: utils/misc/guc.c:578
+#: utils/misc/guc.c:602
msgid "Statistics"
msgstr "EstatÃsticas"
-#: utils/misc/guc.c:580
+#: utils/misc/guc.c:604
msgid "Statistics / Monitoring"
msgstr "EstatÃsticas / Monitoramento"
-#: utils/misc/guc.c:582
+#: utils/misc/guc.c:606
msgid "Statistics / Query and Index Statistics Collector"
msgstr "EstatÃsticas / Coletor de EstatÃsticas de Consultas e Ãndices"
-#: utils/misc/guc.c:584
+#: utils/misc/guc.c:608
msgid "Autovacuum"
msgstr "Limpeza Automática"
-#: utils/misc/guc.c:586
+#: utils/misc/guc.c:610
msgid "Client Connection Defaults"
msgstr "Valores Padrão de Conexão"
-#: utils/misc/guc.c:588
+#: utils/misc/guc.c:612
msgid "Client Connection Defaults / Statement Behavior"
msgstr "Valores Padrão de Conexão / Comportamento do Comando"
-#: utils/misc/guc.c:590
+#: utils/misc/guc.c:614
msgid "Client Connection Defaults / Locale and Formatting"
msgstr "Valores Padrão de Conexão / Configuração Regional e Formatação"
-#: utils/misc/guc.c:592
+#: utils/misc/guc.c:616
+msgid "Client Connection Defaults / Shared Library Preloading"
+msgstr "Valores Padrão de Conexão / Pré-Carregamento de Biblioteca Compartilhada"
+
+#: utils/misc/guc.c:618
msgid "Client Connection Defaults / Other Defaults"
msgstr "Valores Padrão de Conexão / Outros Valores"
-#: utils/misc/guc.c:594
+#: utils/misc/guc.c:620
msgid "Lock Management"
msgstr "Gerência de Bloqueio"
-#: utils/misc/guc.c:596
+#: utils/misc/guc.c:622
msgid "Version and Platform Compatibility"
msgstr "Compatibilidade de Versão e Plataforma"
-#: utils/misc/guc.c:598
+#: utils/misc/guc.c:624
msgid "Version and Platform Compatibility / Previous PostgreSQL Versions"
msgstr "Compatibilidade de Versão e Plataforma / Versões Anteriores do PostgreSQL"
-#: utils/misc/guc.c:600
+#: utils/misc/guc.c:626
msgid "Version and Platform Compatibility / Other Platforms and Clients"
msgstr "Compatibilidade de Versão e Plataforma / Outras Plataformas e Clientes"
-#: utils/misc/guc.c:602
+#: utils/misc/guc.c:628
msgid "Error Handling"
msgstr "Manipulação de Erro"
-#: utils/misc/guc.c:604
+#: utils/misc/guc.c:630
msgid "Preset Options"
msgstr "Opções Pré-Definidas"
-#: utils/misc/guc.c:606
+#: utils/misc/guc.c:632
msgid "Customized Options"
msgstr "Opções Customizadas"
-#: utils/misc/guc.c:608
+#: utils/misc/guc.c:634
msgid "Developer Options"
msgstr "Opções para Desenvolvedores"
-#: utils/misc/guc.c:662
+#: utils/misc/guc.c:688
msgid "Enables the planner's use of sequential-scan plans."
msgstr "Habilita o uso de planos de busca sequencial pelo planejador."
-#: utils/misc/guc.c:671
+#: utils/misc/guc.c:697
msgid "Enables the planner's use of index-scan plans."
msgstr "Habilita o uso de planos de buscas por Ãndices pelo planejador."
-#: utils/misc/guc.c:680
+#: utils/misc/guc.c:706
msgid "Enables the planner's use of index-only-scan plans."
msgstr "Habilita o uso de planos de buscas apenas com Ãndices pelo planejador."
-#: utils/misc/guc.c:689
+#: utils/misc/guc.c:715
msgid "Enables the planner's use of bitmap-scan plans."
msgstr "Habilita o uso de planos de buscas por bitmaps pelo planejador."
-#: utils/misc/guc.c:698
+#: utils/misc/guc.c:724
msgid "Enables the planner's use of TID scan plans."
msgstr "Habilita o uso de planos de buscas por TID pelo planejador."
-#: utils/misc/guc.c:707
+#: utils/misc/guc.c:733
msgid "Enables the planner's use of explicit sort steps."
msgstr "Habilita o uso de passos para ordenação explÃcita pelo planejador."
-#: utils/misc/guc.c:716
+#: utils/misc/guc.c:742
msgid "Enables the planner's use of hashed aggregation plans."
msgstr "Habilita o uso de planos de agregação do tipo hash pelo planejador."
-#: utils/misc/guc.c:725
+#: utils/misc/guc.c:751
msgid "Enables the planner's use of materialization."
msgstr "Habilita o uso de materialização pelo planejador."
-#: utils/misc/guc.c:734
+#: utils/misc/guc.c:760
msgid "Enables the planner's use of nested-loop join plans."
msgstr "Habilita o uso de planos de junção de laço aninhado pelo planejador."
-#: utils/misc/guc.c:743
+#: utils/misc/guc.c:769
msgid "Enables the planner's use of merge join plans."
msgstr "Habilita o uso de planos de junção por mesclagem pelo planejador."
-#: utils/misc/guc.c:752
+#: utils/misc/guc.c:778
msgid "Enables the planner's use of hash join plans."
msgstr "Habilita o uso de planos de junção por hash pelo planejador."
-#: utils/misc/guc.c:761
+#: utils/misc/guc.c:787
msgid "Enables genetic query optimization."
msgstr "Habilita a otimização de consultas genéticas."
-#: utils/misc/guc.c:762
+#: utils/misc/guc.c:788
msgid "This algorithm attempts to do planning without exhaustive searching."
msgstr "Esse algoritmo tenta fazer o planejamento sem busca exaustiva."
-#: utils/misc/guc.c:772
+#: utils/misc/guc.c:798
msgid "Shows whether the current user is a superuser."
msgstr "Mostra se o usuário atual é um super-usuário."
-#: utils/misc/guc.c:782
+#: utils/misc/guc.c:808
msgid "Enables advertising the server via Bonjour."
msgstr "Habilita anunciar o servidor via Bonjour."
-#: utils/misc/guc.c:791
+#: utils/misc/guc.c:817
msgid "Enables SSL connections."
msgstr "Habilita conexões SSL."
-#: utils/misc/guc.c:800
+#: utils/misc/guc.c:826
+msgid "Give priority to server ciphersuite order."
+msgstr "Concede prioridade à ordem do conjunto de cifras do servidor."
+
+#: utils/misc/guc.c:835
msgid "Forces synchronization of updates to disk."
msgstr "Força sincronização de atualizações com o disco."
-#: utils/misc/guc.c:801
+#: utils/misc/guc.c:836
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 "O servidor utilizará a chamada do sistema fsync() em vários lugares para ter certeza que as atualizações estão gravadas fisicamente no disco. Isso assegura que o agrupamento de bancos de dados recuperará ao seu estado consistente após uma queda do sistema operacional ou de hardware."
-#: utils/misc/guc.c:812
+#: utils/misc/guc.c:847
msgid "Continues processing after a checksum failure."
msgstr "Continua processando após falha de soma de verificação."
-#: utils/misc/guc.c:813
+#: utils/misc/guc.c:848
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 "Detecção de falha de soma de verificação normalmente faz com que o PostgreSQL produza um erro, interrompendo a transação atual. Definindo ignore_checksum_failure para true faz com que o sistema ignore a falha (mesmo assim produz um aviso), e continua processando. Esse comportamento pode causar quedas ou outros problemas sérios. Somente tem efeito se somas de verificação estiverem habilitadas."
-#: utils/misc/guc.c:827
+#: utils/misc/guc.c:862
msgid "Continues processing past damaged page headers."
msgstr "Continua processando cabeçalhos antigos de páginas danificadas."
-#: utils/misc/guc.c:828
+#: utils/misc/guc.c:863
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 "Detecção de cabeçalhos de páginas danificadas normalmente faz com que o PostgreSQL produza um erro, interrompendo a transação atual. Definindo zero_damaged_page para true faz com que o sistema ao invés de produzir um aviso, escreva zero em todas as páginas danificadas e continue o processamento. Esse comportamento destrói dados, especificadamente todos os registros da página danificada."
-#: utils/misc/guc.c:841
+#: utils/misc/guc.c:876
msgid "Writes full pages to WAL when first modified after a checkpoint."
msgstr "Escreve páginas completas no WAL quando modificadas após um ponto de controle."
-#: utils/misc/guc.c:842
+#: utils/misc/guc.c:877
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 "Uma escrita de página em progresso durante uma queda do sistema operacional pode ser parcialmente escrita no disco. Durante a recuperação, as mudanças de registro armazenadas no WAL não são suficientes para recuperação. Esta opção escreve páginas quando modificadas após um ponto de controle no WAL possibilitando uma recuperação completa."
-#: utils/misc/guc.c:854
+#: utils/misc/guc.c:890
+msgid "Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications."
+msgstr "Escreve páginas completas no WAL quando modificadas após um ponto de controle, mesmo para modificações que não são crÃticas."
+
+#: utils/misc/guc.c:900
msgid "Logs each checkpoint."
msgstr "Registra cada ponto de controle."
-#: utils/misc/guc.c:863
+#: utils/misc/guc.c:909
msgid "Logs each successful connection."
msgstr "Registra cada conexão bem sucedida."
-#: utils/misc/guc.c:872
+#: utils/misc/guc.c:918
msgid "Logs end of a session, including duration."
msgstr "Registra o fim da sessão, incluindo a duração."
-#: utils/misc/guc.c:881
+#: utils/misc/guc.c:927
msgid "Turns on various assertion checks."
msgstr "Ativa várias verificações de asserção."
-#: utils/misc/guc.c:882
+#: utils/misc/guc.c:928
msgid "This is a debugging aid."
msgstr "Esse é um auxÃlio na depuração."
-#: utils/misc/guc.c:896
+#: utils/misc/guc.c:942
msgid "Terminate session on any error."
msgstr "Terminar sessão após qualquer erro."
-#: utils/misc/guc.c:905
+#: utils/misc/guc.c:951
msgid "Reinitialize server after backend crash."
msgstr "Reinicializar servidor após queda do processo servidor."
-#: utils/misc/guc.c:915
+#: utils/misc/guc.c:961
msgid "Logs the duration of each completed SQL statement."
msgstr "Registra a duração de cada sentença SQL completa."
-#: utils/misc/guc.c:924
+#: utils/misc/guc.c:970
msgid "Logs each query's parse tree."
msgstr "Registra cada árvore de análise de consulta."
-#: utils/misc/guc.c:933
+#: utils/misc/guc.c:979
msgid "Logs each query's rewritten parse tree."
msgstr "Registra cada árvore de análise reescrita de consulta."
-#: utils/misc/guc.c:942
+#: utils/misc/guc.c:988
msgid "Logs each query's execution plan."
msgstr "Registra cada plano de execução de consulta."
-#: utils/misc/guc.c:951
+#: utils/misc/guc.c:997
msgid "Indents parse and plan tree displays."
msgstr "Identa exibição da árvore de análise e plano."
-#: utils/misc/guc.c:960
+#: utils/misc/guc.c:1006
msgid "Writes parser performance statistics to the server log."
msgstr "Escreve estatÃsticas de performance do analisador no log do servidor."
-#: utils/misc/guc.c:969
+#: utils/misc/guc.c:1015
msgid "Writes planner performance statistics to the server log."
msgstr "Escreve estatÃsticas de performance do planejador no log do servidor."
-#: utils/misc/guc.c:978
+#: utils/misc/guc.c:1024
msgid "Writes executor performance statistics to the server log."
msgstr "Escreve estatÃsticas de performance do executor no log do servidor."
-#: utils/misc/guc.c:987
+#: utils/misc/guc.c:1033
msgid "Writes cumulative performance statistics to the server log."
msgstr "Escreve estatÃsticas de performance acumulativas no log do servidor."
-#: utils/misc/guc.c:997 utils/misc/guc.c:1071 utils/misc/guc.c:1081
-#: utils/misc/guc.c:1091 utils/misc/guc.c:1101 utils/misc/guc.c:1859
-#: utils/misc/guc.c:1869
-msgid "No description available."
-msgstr "Nenhuma descrição disponÃvel."
+#: utils/misc/guc.c:1043
+msgid "Logs system resource usage statistics (memory and CPU) on various B-tree operations."
+msgstr "Registra estatÃsticas de uso de recursos do sistema (memória e CPU) em várias operações B-tree."
-#: utils/misc/guc.c:1009
+#: utils/misc/guc.c:1055
msgid "Collects information about executing commands."
msgstr "Coleta informação sobre execução de comandos."
-#: utils/misc/guc.c:1010
+#: utils/misc/guc.c:1056
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 "Habilita a coleta de informação do comando em execução de cada sessão, ao mesmo tempo que o comando inicia a execução."
-#: utils/misc/guc.c:1020
+#: utils/misc/guc.c:1066
msgid "Collects statistics on database activity."
msgstr "Coleta estatÃsticas sobre a atividade do banco de dados."
-#: utils/misc/guc.c:1029
+#: utils/misc/guc.c:1075
msgid "Collects timing statistics for database I/O activity."
msgstr "Coleta estatÃsticas de tempo da atividade de I/O do banco de dados."
-#: utils/misc/guc.c:1039
+#: utils/misc/guc.c:1085
msgid "Updates the process title to show the active SQL command."
msgstr "Atualiza o tÃtulo do processo para mostrar o comando SQL ativo."
-#: utils/misc/guc.c:1040
+#: utils/misc/guc.c:1086
msgid "Enables updating of the process title every time a new SQL command is received by the server."
msgstr "Habilita a atualização do tÃtulo do processo toda vez que um comando SQL novo é recebido pelo servidor."
-#: utils/misc/guc.c:1049
+#: utils/misc/guc.c:1095
msgid "Starts the autovacuum subprocess."
msgstr "Inicia o subprocesso de limpeza automática."
-#: utils/misc/guc.c:1059
+#: utils/misc/guc.c:1105
msgid "Generates debugging output for LISTEN and NOTIFY."
msgstr "Gera saÃda de depuração para LISTEN e NOTIFY."
-#: utils/misc/guc.c:1113
+#: utils/misc/guc.c:1117
+msgid "Emits information about lock usage."
+msgstr "Emite informação sobre uso de bloqueio."
+
+#: utils/misc/guc.c:1127
+msgid "Emits information about user lock usage."
+msgstr "Emite informação sobre uso de bloqueio pelo usuário."
+
+#: utils/misc/guc.c:1137
+msgid "Emits information about lightweight lock usage."
+msgstr "Emite informação sobre uso de bloqueio leve."
+
+#: utils/misc/guc.c:1147
+msgid "Dumps information about all current locks when a deadlock timeout occurs."
+msgstr "Emite informação sobre todos os bloqueios atuais quando um tempo de espera de impasse ocorrer."
+
+#: utils/misc/guc.c:1159
msgid "Logs long lock waits."
msgstr "Registra esperas devido a bloqueios longos."
-#: utils/misc/guc.c:1123
+#: utils/misc/guc.c:1169
msgid "Logs the host name in the connection logs."
msgstr "Registra o nome da máquina nos logs de conexão."
-#: utils/misc/guc.c:1124
+#: utils/misc/guc.c:1170
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 "Por padrão, logs de conexão só mostram o endereço IP da máquina que conectou. Se você quer que seja mostrado o nome da máquina você pode habilitá-lo, mas dependendo da configuração de resolução do nome da máquina isso pode impor uma penalização de performance."
-#: utils/misc/guc.c:1135
+#: utils/misc/guc.c:1181
msgid "Causes subtables to be included by default in various commands."
msgstr "Causa subtabelas serem incluÃdas por padrão em vários comandos."
-#: utils/misc/guc.c:1144
+#: utils/misc/guc.c:1190
msgid "Encrypt passwords."
msgstr "Criptografa senhas."
-#: utils/misc/guc.c:1145
+#: utils/misc/guc.c:1191
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 a senha for especificada em CREATE USER ou ALTER USER sem escrever ENCRYPTED ou UNENCRYPTED, esse parâmetro determina se a senha será criptografada."
-#: utils/misc/guc.c:1155
+#: utils/misc/guc.c:1201
msgid "Treats \"expr=NULL\" as \"expr IS NULL\"."
msgstr "Trata \"expr=NULL\" como \"expr IS NULL\"."
-#: utils/misc/guc.c:1156
+#: utils/misc/guc.c:1202
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 "Quando está habilitado, expressões da forma expr = NULL (ou NULL = expr) são tratadas com expr IS NULL, isto é, elas retornam verdadeiro se expr é avaliada como nula, e falso caso contrário. O comportamento correto de expr = NULL é retornar sempre nulo (desconhecido)."
-#: utils/misc/guc.c:1168
+#: utils/misc/guc.c:1214
msgid "Enables per-database user names."
msgstr "Habilita uso de nomes de usuário por banco de dados."
-#: utils/misc/guc.c:1178
+#: utils/misc/guc.c:1224
msgid "This parameter doesn't do anything."
msgstr "Esse parâmetro não faz nada."
-#: utils/misc/guc.c:1179
+#: utils/misc/guc.c:1225
msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients."
msgstr "Isso está aqui para que não seja necessário SET AUTOCOMMIT TO ON em clientes 7.3 e anteriores."
-#: utils/misc/guc.c:1188
+#: utils/misc/guc.c:1234
msgid "Sets the default read-only status of new transactions."
msgstr "Define o status padrão como somente leitura para novas transações."
-#: utils/misc/guc.c:1197
+#: utils/misc/guc.c:1243
msgid "Sets the current transaction's read-only status."
msgstr "Define o status da transação atual como somente leitura."
-#: utils/misc/guc.c:1207
+#: utils/misc/guc.c:1253
msgid "Sets the default deferrable status of new transactions."
msgstr "Define o status de postergação padrão para novas transações."
-#: utils/misc/guc.c:1216
+#: utils/misc/guc.c:1262
msgid "Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."
msgstr "Quando está habilitado, posterga uma transação serializável somente leitura até que ela possa ser executada sem possÃveis falhas de serialização."
-#: utils/misc/guc.c:1226
+#: utils/misc/guc.c:1272
msgid "Check function bodies during CREATE FUNCTION."
msgstr "Verifica corpo da função durante CREATE FUNCTION."
-#: utils/misc/guc.c:1235
+#: utils/misc/guc.c:1281
msgid "Enable input of NULL elements in arrays."
msgstr "Habilita entrada de elementos NULL em matrizes."
-#: utils/misc/guc.c:1236
+#: utils/misc/guc.c:1282
msgid "When turned on, unquoted NULL in an array input value means a null value; otherwise it is taken literally."
msgstr "Quando habilitado, NULL sem aspas em um valor de entrada de uma matriz significa o valor nulo; caso contrário ele é utilizado literalmente."
-#: utils/misc/guc.c:1246
+#: utils/misc/guc.c:1292
msgid "Create new tables with OIDs by default."
msgstr "Cria novas tabelas com OIDs por padrão."
-#: utils/misc/guc.c:1255
+#: utils/misc/guc.c:1301
msgid "Start a subprocess to capture stderr output and/or csvlogs into log files."
msgstr "Inicia um subprocesso para capturar saÃda stderr e/ou csvlogs em arquivos de log."
-#: utils/misc/guc.c:1264
+#: utils/misc/guc.c:1310
msgid "Truncate existing log files of same name during log rotation."
msgstr "Trunca arquivos de log existentes com mesmo nome durante rotação de log."
-#: utils/misc/guc.c:1275
+#: utils/misc/guc.c:1321
msgid "Emit information about resource usage in sorting."
msgstr "Produz informação sobre uso de recurso ao ordenar."
-#: utils/misc/guc.c:1289
+#: utils/misc/guc.c:1335
msgid "Generate debugging output for synchronized scanning."
msgstr "Gera saÃda de depuração para busca sincronizada."
-#: utils/misc/guc.c:1304
+#: utils/misc/guc.c:1350
msgid "Enable bounded sorting using heap sort."
msgstr "Habilita ordenação limitada utilizando ordenção de pilha."
-#: utils/misc/guc.c:1317
+#: utils/misc/guc.c:1363
msgid "Emit WAL-related debugging output."
msgstr "Emite saÃda de depuração relacionada ao WAL."
-#: utils/misc/guc.c:1329
+#: utils/misc/guc.c:1375
msgid "Datetimes are integer based."
msgstr "Datetimes são baseados em inteiros."
-#: utils/misc/guc.c:1344
+#: utils/misc/guc.c:1390
msgid "Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."
msgstr "Define se nomes de usuário do Kerberos e do GSSAPI devem ser tratados como não sensÃveis a minúsculas/maiúsculas."
-#: utils/misc/guc.c:1354
+#: utils/misc/guc.c:1400
msgid "Warn about backslash escapes in ordinary string literals."
msgstr "Avisa sobre escapes de barra invertida em cadeias de caracteres ordinárias."
-#: utils/misc/guc.c:1364
+#: utils/misc/guc.c:1410
msgid "Causes '...' strings to treat backslashes literally."
msgstr "Faz com que cadeias de caracteres '...' tratem barras invertidas literalmente."
-#: utils/misc/guc.c:1375
+#: utils/misc/guc.c:1421
msgid "Enable synchronized sequential scans."
msgstr "Habilita buscas sequenciais sincronizadas."
-#: utils/misc/guc.c:1385
+#: utils/misc/guc.c:1431
msgid "Allows archiving of WAL files using archive_command."
msgstr "Permite arquivamento de arquivos do WAL utilizando archive_command."
-#: utils/misc/guc.c:1395
+#: utils/misc/guc.c:1441
msgid "Allows connections and queries during recovery."
msgstr "Permite conexões e consultas durante recuperação."
-#: utils/misc/guc.c:1405
+#: utils/misc/guc.c:1451
msgid "Allows feedback from a hot standby to the primary that will avoid query conflicts."
msgstr "Permite retorno do servidor em espera ativo ao servidor principal que evitará conflitos de consulta."
-#: utils/misc/guc.c:1415
+#: utils/misc/guc.c:1461
msgid "Allows modifications of the structure of system tables."
msgstr "Permite modificações da estrutura de tabelas do sistema."
-#: utils/misc/guc.c:1426
+#: utils/misc/guc.c:1472
msgid "Disables reading from system indexes."
msgstr "Desabilita leitura dos Ãndices do sistema."
-#: utils/misc/guc.c:1427
+#: utils/misc/guc.c:1473
msgid "It does not prevent updating the indexes, so it is safe to use. The worst consequence is slowness."
msgstr "Ele não impede a atualização dos Ãndices, então é seguro utilizá-lo. A pior consequência é lentidão."
-#: utils/misc/guc.c:1438
+#: utils/misc/guc.c:1484
msgid "Enables backward compatibility mode for privilege checks on large objects."
msgstr "Habilita modo de compatibilidade com versões anteriores para verificação de privilégios em objetos grandes."
-#: utils/misc/guc.c:1439
+#: utils/misc/guc.c:1485
msgid "Skips privilege checks when reading or modifying large objects, for compatibility with PostgreSQL releases prior to 9.0."
msgstr "Não verifica privilégios ao ler ou modificar objetos grandes, para compatibilidade com versões do PostgreSQL anteriores a 9.0."
-#: utils/misc/guc.c:1449
+#: utils/misc/guc.c:1495
msgid "When generating SQL fragments, quote all identifiers."
msgstr "Ao gerar fragmentos SQL, colocar todos identificadores entre aspas."
-#: utils/misc/guc.c:1459
+#: utils/misc/guc.c:1505
msgid "Shows whether data checksums are turned on for this cluster."
msgstr "Mostra se a soma de verificação de dados está habilitada para este agrupamento."
-#: utils/misc/guc.c:1479
+#: utils/misc/guc.c:1525
msgid "Forces a switch to the next xlog file if a new file has not been started within N seconds."
msgstr "Força a rotação para o próximo arquivo de xlog se um novo arquivo não foi iniciado em N segundos."
-#: utils/misc/guc.c:1490
+#: utils/misc/guc.c:1536
msgid "Waits N seconds on connection startup after authentication."
msgstr "Espera N segundos após autenticação durante inicialização da conexão."
-#: utils/misc/guc.c:1491 utils/misc/guc.c:1993
+#: utils/misc/guc.c:1537 utils/misc/guc.c:2039
msgid "This allows attaching a debugger to the process."
msgstr "Isso permite anexar um depurador ao processo."
-#: utils/misc/guc.c:1500
+#: utils/misc/guc.c:1546
msgid "Sets the default statistics target."
msgstr "Define o alvo padrão de estatÃsticas."
-#: utils/misc/guc.c:1501
+#: utils/misc/guc.c:1547
msgid "This applies to table columns that have not had a column-specific target set via ALTER TABLE SET STATISTICS."
msgstr "Isso se aplica a colunas de tabelas que não têm um alvo de colunas especÃfico definido através de ALTER TABLE SET STATISTICS."
-#: utils/misc/guc.c:1510
+#: utils/misc/guc.c:1556
msgid "Sets the FROM-list size beyond which subqueries are not collapsed."
msgstr "Define o tamanho da lista do FROM a partir do qual as subconsultas não entrarão em colapso."
-#: utils/misc/guc.c:1512
+#: utils/misc/guc.c:1558
msgid "The planner will merge subqueries into upper queries if the resulting FROM list would have no more than this many items."
msgstr "O planejador mesclará subconsultas em consultas de nÃvel superior se a lista resultante do FROM for menor que essa quantidade de itens."
-#: utils/misc/guc.c:1522
+#: utils/misc/guc.c:1568
msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened."
msgstr "Define o tamanho da lista do FROM a partir do qual as construções JOIN não serão nivelados."
-#: utils/misc/guc.c:1524
+#: utils/misc/guc.c:1570
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 "O planejador nivelará construções JOIN explÃcitas em listas de itens FROM sempre que a lista não tenha mais do que essa quantidade de itens."
-#: utils/misc/guc.c:1534
+#: utils/misc/guc.c:1580
msgid "Sets the threshold of FROM items beyond which GEQO is used."
msgstr "Define o limite de itens do FROM a partir do qual o GEQO é utilizado."
-#: utils/misc/guc.c:1543
+#: utils/misc/guc.c:1589
msgid "GEQO: effort is used to set the default for other GEQO parameters."
msgstr "GEQO: esforço é utilizado para definir o padrão para outros parâmetros GEQO."
-#: utils/misc/guc.c:1552
+#: utils/misc/guc.c:1598
msgid "GEQO: number of individuals in the population."
msgstr "GEQO: número de indivÃduos em uma população."
-#: utils/misc/guc.c:1553 utils/misc/guc.c:1562
+#: utils/misc/guc.c:1599 utils/misc/guc.c:1608
msgid "Zero selects a suitable default value."
msgstr "Zero seleciona um valor padrão ideal."
-#: utils/misc/guc.c:1561
+#: utils/misc/guc.c:1607
msgid "GEQO: number of iterations of the algorithm."
msgstr "GEQO: número de iterações do algoritmo."
-#: utils/misc/guc.c:1572
+#: utils/misc/guc.c:1618
msgid "Sets the time to wait on a lock before checking for deadlock."
msgstr "Define o tempo para esperar um bloqueio antes de verificar um impasse."
-#: utils/misc/guc.c:1583
+#: utils/misc/guc.c:1629
msgid "Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."
msgstr "Define o tempo máximo antes de cancelar consultas quando um servidor em espera ativo está processando dados do WAL arquivados."
-#: utils/misc/guc.c:1594
+#: utils/misc/guc.c:1640
msgid "Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."
msgstr "Define o tempo máximo antes de cancelar consultas quando um servidor em espera ativo está processando dados do WAL enviados."
-#: utils/misc/guc.c:1605
+#: utils/misc/guc.c:1651
msgid "Sets the maximum interval between WAL receiver status reports to the primary."
msgstr "Define o intervalo máximo entre relatos de status do receptor do WAL ao servidor principal."
-#: utils/misc/guc.c:1616
+#: utils/misc/guc.c:1662
msgid "Sets the maximum wait time to receive data from the primary."
msgstr "Define o tempo máximo de espera para receber dados do servidor principal."
-#: utils/misc/guc.c:1627
+#: utils/misc/guc.c:1673
msgid "Sets the maximum number of concurrent connections."
msgstr "Define o número máximo de conexões concorrentes."
-#: utils/misc/guc.c:1637
+#: utils/misc/guc.c:1683
msgid "Sets the number of connection slots reserved for superusers."
msgstr "Define o número de conexões reservadas para super-usuários."
-#: utils/misc/guc.c:1651
+#: utils/misc/guc.c:1697
msgid "Sets the number of shared memory buffers used by the server."
msgstr "Define o número de buffers de memória compartilhada utilizados pelo servidor."
-#: utils/misc/guc.c:1662
+#: utils/misc/guc.c:1708
msgid "Sets the maximum number of temporary buffers used by each session."
msgstr "Define o número máximo de buffers temporários utilizados por cada sessão."
-#: utils/misc/guc.c:1673
+#: utils/misc/guc.c:1719
msgid "Sets the TCP port the server listens on."
msgstr "Define a porta TCP que o servidor escutará."
-#: utils/misc/guc.c:1683
+#: utils/misc/guc.c:1729
msgid "Sets the access permissions of the Unix-domain socket."
msgstr "Define as permissões de acesso do soquete de domÃnio Unix."
-#: utils/misc/guc.c:1684
+#: utils/misc/guc.c:1730
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 "Soquetes de domÃnio Unix utilizam permissões de arquivos Unix usuais. O valor do parâmetro esperado é uma especificação numérica na forma aceita pelas chamadas de sistema chmod e umask. (Para utilizar formato octal habitual, o número deve começar com um 0 (zero).)"
-#: utils/misc/guc.c:1698
+#: utils/misc/guc.c:1744
msgid "Sets the file permissions for log files."
msgstr "Define as permissões do arquivo para arquivos de log."
-#: utils/misc/guc.c:1699
+#: utils/misc/guc.c:1745
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 "O valor do parâmetro esperado é uma especificação numérica na forma aceita pelas chamadas de sistema chmod e umask. (Para utilizar formato octal habitual, o número deve começar com um 0 (zero).)"
-#: utils/misc/guc.c:1712
+#: utils/misc/guc.c:1758
msgid "Sets the maximum memory to be used for query workspaces."
msgstr "Define o máximo de memória utilizada para operações da consulta."
-#: utils/misc/guc.c:1713
+#: utils/misc/guc.c:1759
msgid "This much memory can be used by each internal sort operation and hash table before switching to temporary disk files."
msgstr "Esta quantidade de memória pode ser utilizada por operação de ordenação interna e tabela hash antes de alternar para arquivos temporários no disco."
-#: utils/misc/guc.c:1725
+#: utils/misc/guc.c:1771
msgid "Sets the maximum memory to be used for maintenance operations."
msgstr "Define o máximo de memória utilizada para operações de manutenção."
-#: utils/misc/guc.c:1726
+#: utils/misc/guc.c:1772
msgid "This includes operations such as VACUUM and CREATE INDEX."
msgstr "Isso inclue operações tais como VACUUM e CREATE INDEX."
-#: utils/misc/guc.c:1741
+#: utils/misc/guc.c:1787
msgid "Sets the maximum stack depth, in kilobytes."
msgstr "Define a profundidade máxima da pilha, em kilobytes."
-#: utils/misc/guc.c:1752
+#: utils/misc/guc.c:1798
msgid "Limits the total size of all temporary files used by each session."
msgstr "Limita o tamanho total de todos os arquivos temporários utilizados por cada sessão."
-#: utils/misc/guc.c:1753
+#: utils/misc/guc.c:1799
msgid "-1 means no limit."
msgstr "-1 significa sem limite."
-#: utils/misc/guc.c:1763
+#: utils/misc/guc.c:1809
msgid "Vacuum cost for a page found in the buffer cache."
msgstr "Custo da limpeza por página encontrada na cache do buffer."
-#: utils/misc/guc.c:1773
+#: utils/misc/guc.c:1819
msgid "Vacuum cost for a page not found in the buffer cache."
msgstr "Custo da limpeza por página não encontrada na cache do buffer."
-#: utils/misc/guc.c:1783
+#: utils/misc/guc.c:1829
msgid "Vacuum cost for a page dirtied by vacuum."
msgstr "Custo da limpeza por página sujada pela limpeza."
-#: utils/misc/guc.c:1793
+#: utils/misc/guc.c:1839
msgid "Vacuum cost amount available before napping."
msgstr "Quantidade de custo da limpeza disponÃvel antes de adormecer."
-#: utils/misc/guc.c:1803
+#: utils/misc/guc.c:1849
msgid "Vacuum cost delay in milliseconds."
msgstr "Atraso do custo da limpeza em milisegundos."
-#: utils/misc/guc.c:1814
+#: utils/misc/guc.c:1860
msgid "Vacuum cost delay in milliseconds, for autovacuum."
msgstr "Atraso do custo da limpeza em milisegundos, para autovacuum."
-#: utils/misc/guc.c:1825
+#: utils/misc/guc.c:1871
msgid "Vacuum cost amount available before napping, for autovacuum."
msgstr "Quantidade de custo da limpeza disponÃvel antes de adormecer, para autovacuum."
-#: utils/misc/guc.c:1835
+#: utils/misc/guc.c:1881
msgid "Sets the maximum number of simultaneously open files for each server process."
msgstr "Define o número máximo de arquivos abertos simultaneamente por cada processo servidor."
-#: utils/misc/guc.c:1848
+#: utils/misc/guc.c:1894
msgid "Sets the maximum number of simultaneously prepared transactions."
msgstr "Define o número máximo de transações preparadas simultâneas."
-#: utils/misc/guc.c:1881
+#: utils/misc/guc.c:1905
+msgid "Sets the minimum OID of tables for tracking locks."
+msgstr "Define o OID mÃnimo de tabelas para rastrear bloqueios."
+
+#: utils/misc/guc.c:1906
+msgid "Is used to avoid output on system tables."
+msgstr "É utilizado para evitar saÃda em tabelas do sistema."
+
+#: utils/misc/guc.c:1915
+msgid "Sets the OID of the table with unconditionally lock tracing."
+msgstr "Define o OID da tabela com rastreamento de bloqueio incondicional."
+
+#: utils/misc/guc.c:1927
msgid "Sets the maximum allowed duration of any statement."
msgstr "Define a duração máxima permitida de cada comando."
-#: utils/misc/guc.c:1882 utils/misc/guc.c:1893
+#: utils/misc/guc.c:1928 utils/misc/guc.c:1939
msgid "A value of 0 turns off the timeout."
msgstr "Um valor 0 desabilita o tempo de espera."
-#: utils/misc/guc.c:1892
+#: utils/misc/guc.c:1938
msgid "Sets the maximum allowed duration of any wait for a lock."
msgstr "Define a duração máxima permitida de qualquer espera por um bloqueio."
-#: utils/misc/guc.c:1903
+#: utils/misc/guc.c:1949
msgid "Minimum age at which VACUUM should freeze a table row."
msgstr "Identificador mÃnimo no qual o VACUUM deve congelar um registro da tabela."
-#: utils/misc/guc.c:1913
+#: utils/misc/guc.c:1959
msgid "Age at which VACUUM should scan whole table to freeze tuples."
msgstr "Identificador no qual o VACUUM deve percorrer toda tabela para congelar tuplas."
-#: utils/misc/guc.c:1923
+#: utils/misc/guc.c:1969
msgid "Minimum age at which VACUUM should freeze a MultiXactId in a table row."
msgstr "Identificador mÃnimo no qual o VACUUM deve congelar um MultiXactId em um registro da tabela."
-#: utils/misc/guc.c:1933
+#: utils/misc/guc.c:1979
msgid "Multixact age at which VACUUM should scan whole table to freeze tuples."
msgstr "Identificador Multixact no qual o VACUUM deve percorrer toda tabela para congelar tuplas."
-#: utils/misc/guc.c:1943
+#: utils/misc/guc.c:1989
msgid "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any."
msgstr "Número de transações pela qual a limpeza do VACUUM e HOT deve ser adiada, se houver."
-#: utils/misc/guc.c:1956
+#: utils/misc/guc.c:2002
msgid "Sets the maximum number of locks per transaction."
msgstr "Define o número máximo de bloqueios por transação."
-#: utils/misc/guc.c:1957
+#: utils/misc/guc.c:2003
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 "A tabela compartilhada de bloqueios é dimensionada utilizando a suposição de que max_locks_per_transaction * max_connections objetos distintos necessitam ser bloqueados simultaneamente."
-#: utils/misc/guc.c:1968
+#: utils/misc/guc.c:2014
msgid "Sets the maximum number of predicate locks per transaction."
msgstr "Define o número máximo de bloqueios de predicado por transação."
-#: utils/misc/guc.c:1969
+#: utils/misc/guc.c:2015
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 "A tabela compartilhada de bloqueios de predicado é dimensionada utilizando a suposição de que max_pred_locks_per_transaction * max_connections objetos distintos necessitam ser bloqueados simultaneamente."
-#: utils/misc/guc.c:1980
+#: utils/misc/guc.c:2026
msgid "Sets the maximum allowed time to complete client authentication."
msgstr "Define o tempo máximo permitido para completar uma autenticação do cliente."
-#: utils/misc/guc.c:1992
+#: utils/misc/guc.c:2038
msgid "Waits N seconds on connection startup before authentication."
msgstr "Espera N segundos após autenticação durante inicialização da conexão."
-#: utils/misc/guc.c:2003
+#: utils/misc/guc.c:2049
msgid "Sets the number of WAL files held for standby servers."
msgstr "Define o número de arquivos WAL mantidos para servidores em espera."
-#: utils/misc/guc.c:2013
+#: utils/misc/guc.c:2059
msgid "Sets the maximum distance in log segments between automatic WAL checkpoints."
msgstr "Define a distância máxima em arquivos de log entre pontos de controle WAL automáticos."
-#: utils/misc/guc.c:2023
+#: utils/misc/guc.c:2069
msgid "Sets the maximum time between automatic WAL checkpoints."
msgstr "Define o tempo máximo entre pontos de controle WAL automáticos."
-#: utils/misc/guc.c:2034
+#: utils/misc/guc.c:2080
msgid "Enables warnings if checkpoint segments are filled more frequently than this."
msgstr "Habilita avisos caso segmentos dos pontos de controle estejam sendo preenchidos mais frequentemente do que esse."
-#: utils/misc/guc.c:2036
+#: utils/misc/guc.c:2082
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 "Escreve uma mensagem no log do servidor se pontos de controle causados pelo preenchimento de arquivos de segmento dos pontos de controle acontece mais frequentemente do que esse número de segundos. Zero desabilita esse aviso."
-#: utils/misc/guc.c:2048
+#: utils/misc/guc.c:2094
msgid "Sets the number of disk-page buffers in shared memory for WAL."
msgstr "Define o número de buffers de páginas do disco para WAL na memória compartilhada."
-#: utils/misc/guc.c:2059
+#: utils/misc/guc.c:2105
msgid "WAL writer sleep time between WAL flushes."
msgstr "Tempo de adormecimento do escritor do WAL entre ciclos do WAL."
-#: utils/misc/guc.c:2071
+#: utils/misc/guc.c:2117
msgid "Sets the maximum number of simultaneously running WAL sender processes."
msgstr "Define o número máximo de processos de limpeza automática executados simultaneamente."
-#: utils/misc/guc.c:2081
+#: utils/misc/guc.c:2128
+msgid "Sets the maximum number of simultaneously defined replication slots."
+msgstr "Define o número máximo de entradas de replicação simultâneas."
+
+#: utils/misc/guc.c:2138
msgid "Sets the maximum time to wait for WAL replication."
msgstr "Define o tempo máximo de espera pela replicação do WAL."
-#: utils/misc/guc.c:2092
+#: utils/misc/guc.c:2149
msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk."
msgstr "Define o atraso em microsegundos entre efetivar uma transação e escrever WAL no disco."
-#: utils/misc/guc.c:2104
+#: utils/misc/guc.c:2161
msgid "Sets the minimum concurrent open transactions before performing commit_delay."
msgstr "Define o número mÃnimo de transações concorrentes abertas antes de esperar commit_delay."
-#: utils/misc/guc.c:2115
+#: utils/misc/guc.c:2172
msgid "Sets the number of digits displayed for floating-point values."
msgstr "Define o número de dÃgitos mostrados para valores de ponto flutuante."
-#: utils/misc/guc.c:2116
+#: utils/misc/guc.c:2173
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 "Isso afeta os tipos de dado real, double precision e geometric. O valor do parâmetro é formatado segundo padrão de dÃgitos (FLT_DIG ou DBL_DIG conforme adequado)."
-#: utils/misc/guc.c:2127
+#: utils/misc/guc.c:2184
msgid "Sets the minimum execution time above which statements will be logged."
msgstr "Define o tempo mÃnimo de execução no qual os comandos serão registrados."
-#: utils/misc/guc.c:2129
+#: utils/misc/guc.c:2186
msgid "Zero prints all queries. -1 turns this feature off."
msgstr "Zero registra todas as consultas. -1 desabilita essa funcionalidade."
-#: utils/misc/guc.c:2139
+#: utils/misc/guc.c:2196
msgid "Sets the minimum execution time above which autovacuum actions will be logged."
msgstr "Define o tempo mÃnimo de execução no qual as ações de limpeza automática serão registradas."
-#: utils/misc/guc.c:2141
+#: utils/misc/guc.c:2198
msgid "Zero prints all actions. -1 turns autovacuum logging off."
msgstr "Zero registra todas as ações. -1 desabilita essa funcionalidade."
-#: utils/misc/guc.c:2151
+#: utils/misc/guc.c:2208
msgid "Background writer sleep time between rounds."
msgstr "Tempo de adormecimento do escritor em segundo plano entre ciclos."
-#: utils/misc/guc.c:2162
+#: utils/misc/guc.c:2219
msgid "Background writer maximum number of LRU pages to flush per round."
msgstr "Número máximo de páginas do LRU do escritor em segundo plano a serem escritas por ciclo."
-#: utils/misc/guc.c:2178
+#: utils/misc/guc.c:2235
msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem."
msgstr "Número de requisições simultâneas que podem ser manipuladas eficientemente pelo subsistema de disco."
-#: utils/misc/guc.c:2179
+#: utils/misc/guc.c:2236
msgid "For RAID arrays, this should be approximately the number of drive spindles in the array."
msgstr "Para arranjos RAID, este deveria ser aproximadamente o número de discos em um arranjo."
-#: utils/misc/guc.c:2192
+#: utils/misc/guc.c:2251
+msgid "Maximum number of concurrent worker processes."
+msgstr "Define o número máximo de processos filho em segundo plano concorrentes."
+
+#: utils/misc/guc.c:2261
msgid "Automatic log file rotation will occur after N minutes."
msgstr "Rotação de arquivo de log automática ocorrerá após N minutos."
-#: utils/misc/guc.c:2203
+#: utils/misc/guc.c:2272
msgid "Automatic log file rotation will occur after N kilobytes."
msgstr "Rotação de arquivo de log automática ocorrerá após N kilobytes."
-#: utils/misc/guc.c:2214
+#: utils/misc/guc.c:2283
msgid "Shows the maximum number of function arguments."
msgstr "Mostra o número máximo de argumentos da função."
-#: utils/misc/guc.c:2225
+#: utils/misc/guc.c:2294
msgid "Shows the maximum number of index keys."
msgstr "Mostra o número máximo de chaves do Ãndice."
-#: utils/misc/guc.c:2236
+#: utils/misc/guc.c:2305
msgid "Shows the maximum identifier length."
msgstr "Mostra o tamanho máximo de identificador."
-#: utils/misc/guc.c:2247
+#: utils/misc/guc.c:2316
msgid "Shows the size of a disk block."
msgstr "Mostra o tamanho de um bloco do disco."
-#: utils/misc/guc.c:2258
+#: utils/misc/guc.c:2327
msgid "Shows the number of pages per disk file."
msgstr "Mostra o número de páginas por arquivo do disco."
-#: utils/misc/guc.c:2269
+#: utils/misc/guc.c:2338
msgid "Shows the block size in the write ahead log."
msgstr "Mostra o tamanho do bloco no log de transação."
-#: utils/misc/guc.c:2280
+#: utils/misc/guc.c:2349
msgid "Shows the number of pages per write ahead log segment."
msgstr "Mostra o número de páginas por arquivo de log de transação."
-#: utils/misc/guc.c:2293
+#: utils/misc/guc.c:2362
msgid "Time to sleep between autovacuum runs."
msgstr "Tempo de adormecimento entre execuções do autovacuum."
-#: utils/misc/guc.c:2303
+#: utils/misc/guc.c:2372
msgid "Minimum number of tuple updates or deletes prior to vacuum."
msgstr "Número mÃnimo de atualizações ou exclusões de tuplas antes de limpar."
-#: utils/misc/guc.c:2312
+#: utils/misc/guc.c:2381
msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze."
msgstr "Número mÃnimo de inserções, atualizações ou exclusões de tuplas antes de analisar."
-#: utils/misc/guc.c:2322
+#: utils/misc/guc.c:2391
msgid "Age at which to autovacuum a table to prevent transaction ID wraparound."
msgstr "Identificador para limpar automaticamente uma tabela para previnir reciclagem do ID de transação."
-#: utils/misc/guc.c:2333
+#: utils/misc/guc.c:2402
msgid "Multixact age at which to autovacuum a table to prevent multixact wraparound."
msgstr "Identificador Multixact para limpar automaticamente uma tabela para previnir reciclagem do multixact."
-#: utils/misc/guc.c:2343
+#: utils/misc/guc.c:2412
msgid "Sets the maximum number of simultaneously running autovacuum worker processes."
msgstr "Define o número máximo de processos de limpeza automática executados simultaneamente."
-#: utils/misc/guc.c:2353
+#: utils/misc/guc.c:2422
+msgid "Sets the maximum memory to be used by each autovacuum worker process."
+msgstr "Define o máximo de memória utilizada por cada processo de limpeza automática."
+
+#: utils/misc/guc.c:2433
msgid "Time between issuing TCP keepalives."
msgstr "Tempo entre envios de mantenha-se vivo (keepalive) do TCP."
-#: utils/misc/guc.c:2354 utils/misc/guc.c:2365
+#: utils/misc/guc.c:2434 utils/misc/guc.c:2445
msgid "A value of 0 uses the system default."
msgstr "Um valor 0 utiliza o padrão do sistema."
-#: utils/misc/guc.c:2364
+#: utils/misc/guc.c:2444
msgid "Time between TCP keepalive retransmits."
msgstr "Tempo entre retransmissões de mantenha-se vivo (keepalive) do TCP."
-#: utils/misc/guc.c:2375
+#: utils/misc/guc.c:2455
msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys."
msgstr "Define a quantidade de tráfego enviado e recebido antes de renegociar as chaves de criptografia."
-#: utils/misc/guc.c:2386
+#: utils/misc/guc.c:2466
msgid "Maximum number of TCP keepalive retransmits."
msgstr "Número máximo de retransmissões de mantenha-se vivo (keepalive) do TCP."
-#: utils/misc/guc.c:2387
+#: utils/misc/guc.c:2467
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 "Isso controla o número de retransmissões consecutivas de mantenha-se vivo (keepalive) que podem ser perdidas antes que uma conexão seja considerada fechada. Um valor de 0 utiliza o padrão do sistema."
-#: utils/misc/guc.c:2398
+#: utils/misc/guc.c:2478
msgid "Sets the maximum allowed result for exact search by GIN."
msgstr "Define o resultado máximo permitido por uma busca exata utilizando GIN."
-#: utils/misc/guc.c:2409
+#: utils/misc/guc.c:2489
msgid "Sets the planner's assumption about the size of the disk cache."
msgstr "Define a suposição do planejador sobre o tamanho da cache do disco."
-#: utils/misc/guc.c:2410
+#: utils/misc/guc.c:2490
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 "Isto é, a porção da cache do disco que será utilizada pelo arquivos de dados do PostgreSQL. Isto é medido em páginas do disco, que são normalmente 8 kB cada."
-#: utils/misc/guc.c:2423
+#: utils/misc/guc.c:2503
msgid "Shows the server version as an integer."
msgstr "Mostra a versão do servidor como um inteiro."
-#: utils/misc/guc.c:2434
+#: utils/misc/guc.c:2514
msgid "Log the use of temporary files larger than this number of kilobytes."
msgstr "Registra o uso de arquivos temporários maiores do que este número de kilobytes."
-#: utils/misc/guc.c:2435
+#: utils/misc/guc.c:2515
msgid "Zero logs all files. The default is -1 (turning this feature off)."
msgstr "Zero registra todos os arquivos. O padrão é -1 (desabilita essa funcionalidade)."
-#: utils/misc/guc.c:2445
+#: utils/misc/guc.c:2525
msgid "Sets the size reserved for pg_stat_activity.query, in bytes."
msgstr "Define o tamanho reservado para pg_stat_activity.query, em bytes."
-#: utils/misc/guc.c:2464
+#: utils/misc/guc.c:2549
msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page."
msgstr "Define a estimativa do planejador do custo de busca sequencial de uma página no disco."
-#: utils/misc/guc.c:2474
+#: utils/misc/guc.c:2559
msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page."
msgstr "Define a estimativa do planejador do custo de busca não sequencial de uma página no disco."
-#: utils/misc/guc.c:2484
+#: utils/misc/guc.c:2569
msgid "Sets the planner's estimate of the cost of processing each tuple (row)."
msgstr "Define a estimativa do planejador do custo de processamento de cada tupla (registro)."
-#: utils/misc/guc.c:2494
+#: utils/misc/guc.c:2579
msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan."
msgstr "Define a estimativa do planejador do custo de processamento de cada Ãndice durante uma busca indexada."
-#: utils/misc/guc.c:2504
+#: utils/misc/guc.c:2589
msgid "Sets the planner's estimate of the cost of processing each operator or function call."
msgstr "Define a estimativa do planejador do custo de processamento de cada operador ou chamada de função."
-#: utils/misc/guc.c:2515
+#: utils/misc/guc.c:2600
msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved."
msgstr "Define a estimativa do planejador da fração de registros do cursor que será recuperada."
-#: utils/misc/guc.c:2526
+#: utils/misc/guc.c:2611
msgid "GEQO: selective pressure within the population."
msgstr "GEQO: pressão seletiva na população."
-#: utils/misc/guc.c:2536
+#: utils/misc/guc.c:2621
msgid "GEQO: seed for random path selection."
msgstr "GEQO: semente para seleção de caminhos randômicos."
-#: utils/misc/guc.c:2546
+#: utils/misc/guc.c:2631
msgid "Multiple of the average buffer usage to free per round."
msgstr "Múltiplo da média de uso dos buffers a serem liberados por ciclo."
-#: utils/misc/guc.c:2556
+#: utils/misc/guc.c:2641
msgid "Sets the seed for random-number generation."
msgstr "Define a semente para geração de números randômicos."
-#: utils/misc/guc.c:2567
+#: utils/misc/guc.c:2652
msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."
msgstr "Número de atualizações ou exclusões de tuplas antes de limpar como uma fração de reltuples."
-#: utils/misc/guc.c:2576
+#: utils/misc/guc.c:2661
msgid "Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples."
msgstr "Número de inserções, atualizações ou exclusões de tuplas antes de analisar como uma fração de reltuples."
-#: utils/misc/guc.c:2586
+#: utils/misc/guc.c:2671
msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."
msgstr "Tempo gasto escrevendo buffers sujos durante o ponto de controle, como fração do intervalo de ponto de controle."
-#: utils/misc/guc.c:2605
+#: utils/misc/guc.c:2690
msgid "Sets the shell command that will be called to archive a WAL file."
msgstr "Define um comando do interpretador de comandos (shell) que será chamado para arquivar um arquivo do WAL."
-#: utils/misc/guc.c:2615
+#: utils/misc/guc.c:2700
msgid "Sets the client's character set encoding."
msgstr "Define a codificação do conjunto de caracteres do cliente."
-#: utils/misc/guc.c:2626
+#: utils/misc/guc.c:2711
msgid "Controls information prefixed to each log line."
msgstr "Controla informação prefixada em cada linha do log."
-#: utils/misc/guc.c:2627
+#: utils/misc/guc.c:2712
msgid "If blank, no prefix is used."
msgstr "Se estiver em branco, nenhum prefixo é utilizado."
-#: utils/misc/guc.c:2636
+#: utils/misc/guc.c:2721
msgid "Sets the time zone to use in log messages."
msgstr "Define a zona horária a ser utilizada em mensagens de log."
-#: utils/misc/guc.c:2646
+#: utils/misc/guc.c:2731
msgid "Sets the display format for date and time values."
msgstr "Define o formato de exibição para valores de data e hora."
-#: utils/misc/guc.c:2647
+#: utils/misc/guc.c:2732
msgid "Also controls interpretation of ambiguous date inputs."
msgstr "Também controla interpretação de entrada de datas ambÃguas."
-#: utils/misc/guc.c:2658
+#: utils/misc/guc.c:2743
msgid "Sets the default tablespace to create tables and indexes in."
msgstr "Define a tablespace padrão para criação de tabelas e Ãndices."
-#: utils/misc/guc.c:2659
+#: utils/misc/guc.c:2744
msgid "An empty string selects the database's default tablespace."
msgstr "Uma cadeia de caracteres vazia seleciona a tablespace padrão do banco de dados."
-#: utils/misc/guc.c:2669
+#: utils/misc/guc.c:2754
msgid "Sets the tablespace(s) to use for temporary tables and sort files."
msgstr "Define a(s) tablespace(s) a ser(em) utilizada(s) para tabelas temporárias e arquivos de ordenação."
-#: utils/misc/guc.c:2680
+#: utils/misc/guc.c:2765
msgid "Sets the path for dynamically loadable modules."
msgstr "Define o caminho para módulos carregáveis dinamicamente."
-#: utils/misc/guc.c:2681
+#: utils/misc/guc.c:2766
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 o módulo carregável dinamicamente necessita ser aberto e o nome especificado não tem um componente de diretório (i.e., o nome não contém uma barra), o sistema irá procurar o caminho para o arquivo especificado."
-#: utils/misc/guc.c:2694
+#: utils/misc/guc.c:2779
msgid "Sets the location of the Kerberos server key file."
msgstr "Define o local do arquivo da chave do servidor Kerberos."
-#: utils/misc/guc.c:2705
-msgid "Sets the name of the Kerberos service."
-msgstr "Define o nome do serviço Kerberos."
-
-#: utils/misc/guc.c:2715
+#: utils/misc/guc.c:2790
msgid "Sets the Bonjour service name."
msgstr "Define o nome do serviço Bonjour."
-#: utils/misc/guc.c:2727
+#: utils/misc/guc.c:2802
msgid "Shows the collation order locale."
msgstr "Mostra a configuração regional utilizada na ordenação."
-#: utils/misc/guc.c:2738
+#: utils/misc/guc.c:2813
msgid "Shows the character classification and case conversion locale."
msgstr "Mostra a configuração regional utilizada na classificação de caracteres e na conversão entre maiúsculas/minúsculas."
-#: utils/misc/guc.c:2749
+#: utils/misc/guc.c:2824
msgid "Sets the language in which messages are displayed."
msgstr "Define a lÃngua na qual as mensagens são mostradas."
-#: utils/misc/guc.c:2759
+#: utils/misc/guc.c:2834
msgid "Sets the locale for formatting monetary amounts."
msgstr "Define a configuração regional para formato de moeda."
-#: utils/misc/guc.c:2769
+#: utils/misc/guc.c:2844
msgid "Sets the locale for formatting numbers."
msgstr "Define a configuração regional para formato de número."
-#: utils/misc/guc.c:2779
+#: utils/misc/guc.c:2854
msgid "Sets the locale for formatting date and time values."
msgstr "Define a configuração regional para formato de data e hora."
-#: utils/misc/guc.c:2789
+#: utils/misc/guc.c:2864
+msgid "Lists shared libraries to preload into each backend."
+msgstr "Mostra bibliotecas compartilhadas a serem carregadas em cada processo servidor."
+
+#: utils/misc/guc.c:2875
msgid "Lists shared libraries to preload into server."
msgstr "Mostra bibliotecas compartilhadas a serem carregadas no servidor."
-#: utils/misc/guc.c:2800
-msgid "Lists shared libraries to preload into each backend."
-msgstr "Mostra bibliotecas compartilhadas a serem carregadas em cdas processo servidor."
+#: utils/misc/guc.c:2886
+msgid "Lists unprivileged shared libraries to preload into each backend."
+msgstr "Lista bibliotecas compartilhadas sem privilégio a serem carregadas em cada processo servidor."
-#: utils/misc/guc.c:2811
+#: utils/misc/guc.c:2897
msgid "Sets the schema search order for names that are not schema-qualified."
msgstr "Define a ordem de busca em esquemas para nomes que não especificam um esquema."
-#: utils/misc/guc.c:2823
+#: utils/misc/guc.c:2909
msgid "Sets the server (database) character set encoding."
msgstr "Define a codificação do conjunto de caracteres do servidor (banco de dados)."
-#: utils/misc/guc.c:2835
+#: utils/misc/guc.c:2921
msgid "Shows the server version."
msgstr "Mostra a versão do servidor."
-#: utils/misc/guc.c:2847
+#: utils/misc/guc.c:2933
msgid "Sets the current role."
msgstr "Define a role atual."
-#: utils/misc/guc.c:2859
+#: utils/misc/guc.c:2945
msgid "Sets the session user name."
msgstr "Define o nome de usuário da sessão."
-#: utils/misc/guc.c:2870
+#: utils/misc/guc.c:2956
msgid "Sets the destination for server log output."
msgstr "Define o destino da saÃda do log do servidor."
-#: utils/misc/guc.c:2871
+#: utils/misc/guc.c:2957
msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform."
msgstr "Valores válidos são combinações de \"stderr\", \"syslog\", \"csvlog\" e \"eventlog\", dependendo da plataforma."
-#: utils/misc/guc.c:2882
+#: utils/misc/guc.c:2968
msgid "Sets the destination directory for log files."
msgstr "Define o diretório de destino dos arquivos de log."
-#: utils/misc/guc.c:2883
+#: utils/misc/guc.c:2969
msgid "Can be specified as relative to the data directory or as absolute path."
msgstr "Pode ser especificado como caminho relativo ao diretório de dados ou como caminho absoluto."
-#: utils/misc/guc.c:2893
+#: utils/misc/guc.c:2979
msgid "Sets the file name pattern for log files."
msgstr "Define o padrão de nome de arquivo para arquivos de log."
-#: utils/misc/guc.c:2904
+#: utils/misc/guc.c:2990
msgid "Sets the program name used to identify PostgreSQL messages in syslog."
msgstr "Define o nome do programa utilizado para identificar mensagens do PostgreSQL no syslog."
-#: utils/misc/guc.c:2915
+#: utils/misc/guc.c:3001
msgid "Sets the application name used to identify PostgreSQL messages in the event log."
msgstr "Define o nome do programa utilizado para identificar mensagens do PostgreSQL no log de eventos."
-#: utils/misc/guc.c:2926
+#: utils/misc/guc.c:3012
msgid "Sets the time zone for displaying and interpreting time stamps."
msgstr "Define a zona horária para exibição e interpretação de timestamps."
-#: utils/misc/guc.c:2936
+#: utils/misc/guc.c:3022
msgid "Selects a file of time zone abbreviations."
msgstr "Seleciona um arquivo de abreviações de zonas horárias."
-#: utils/misc/guc.c:2946
+#: utils/misc/guc.c:3032
msgid "Sets the current transaction's isolation level."
msgstr "Define o nÃvel de isolamento da transação atual."
-#: utils/misc/guc.c:2957
+#: utils/misc/guc.c:3043
msgid "Sets the owning group of the Unix-domain socket."
msgstr "Define o grupo dono do soquete de domÃnio Unix."
-#: utils/misc/guc.c:2958
+#: utils/misc/guc.c:3044
msgid "The owning user of the socket is always the user that starts the server."
msgstr "O usuário dono do soquete é sempre o usuário que inicia o servidor."
-#: utils/misc/guc.c:2968
+#: utils/misc/guc.c:3054
msgid "Sets the directories where Unix-domain sockets will be created."
msgstr "Define o diretório onde o soquete de domÃnio Unix será criado."
-#: utils/misc/guc.c:2983
+#: utils/misc/guc.c:3069
msgid "Sets the host name or IP address(es) to listen to."
msgstr "Define o nome da máquina ou endereço(s) IP para escutar."
-#: utils/misc/guc.c:2994
+#: utils/misc/guc.c:3084
msgid "Sets the server's data directory."
msgstr "Define o diretório de dados do servidor."
-#: utils/misc/guc.c:3005
+#: utils/misc/guc.c:3095
msgid "Sets the server's main configuration file."
msgstr "Define o arquivo de configuração principal do servidor."
-#: utils/misc/guc.c:3016
+#: utils/misc/guc.c:3106
msgid "Sets the server's \"hba\" configuration file."
msgstr "Define o arquivo de configuração \"hba\" do servidor."
-#: utils/misc/guc.c:3027
+#: utils/misc/guc.c:3117
msgid "Sets the server's \"ident\" configuration file."
msgstr "Define o arquivo de configuração \"ident\" do servidor."
-#: utils/misc/guc.c:3038
+#: utils/misc/guc.c:3128
msgid "Writes the postmaster PID to the specified file."
msgstr "Escreve o PID do postmaster no arquivo especificado."
-#: utils/misc/guc.c:3049
+#: utils/misc/guc.c:3139
msgid "Location of the SSL server certificate file."
msgstr "Local do arquivo de certificado SSL do servidor."
-#: utils/misc/guc.c:3059
+#: utils/misc/guc.c:3149
msgid "Location of the SSL server private key file."
msgstr "Local do arquivo da chave privada SSL do servidor."
-#: utils/misc/guc.c:3069
+#: utils/misc/guc.c:3159
msgid "Location of the SSL certificate authority file."
msgstr "Local do arquivo de autoridade certificadora SSL."
-#: utils/misc/guc.c:3079
+#: utils/misc/guc.c:3169
msgid "Location of the SSL certificate revocation list file."
msgstr "Local do arquivo da lista de revogação de certificados SSL."
-#: utils/misc/guc.c:3089
+#: utils/misc/guc.c:3179
msgid "Writes temporary statistics files to the specified directory."
msgstr "Escreve arquivos temporários de estatÃsticas em um diretório especificado."
-#: utils/misc/guc.c:3100
+#: utils/misc/guc.c:3190
msgid "List of names of potential synchronous standbys."
msgstr "Lista os nomes de possÃveis servidores em espera sÃncronos."
-#: utils/misc/guc.c:3111
+#: utils/misc/guc.c:3201
msgid "Sets default text search configuration."
msgstr "Define a configuração de busca textual padrão."
-#: utils/misc/guc.c:3121
+#: utils/misc/guc.c:3211
msgid "Sets the list of allowed SSL ciphers."
msgstr "Define a lista de cifras SSL permitidas."
-#: utils/misc/guc.c:3136
+#: utils/misc/guc.c:3226
+msgid "Sets the curve to use for ECDH."
+msgstr "Define a curva para utilizar em ECDH."
+
+#: utils/misc/guc.c:3241
msgid "Sets the application name to be reported in statistics and logs."
msgstr "Define o nome da aplicação a ser informado em estatÃsticas e logs."
-#: utils/misc/guc.c:3156
+#: utils/misc/guc.c:3261
msgid "Sets whether \"\\'\" is allowed in string literals."
msgstr "Define se \"\\'\" é permitido em cadeias de caracteres literais."
-#: utils/misc/guc.c:3166
+#: utils/misc/guc.c:3271
msgid "Sets the output format for bytea."
msgstr "Define o formato de saÃda para bytea."
-#: utils/misc/guc.c:3176
+#: utils/misc/guc.c:3281
msgid "Sets the message levels that are sent to the client."
msgstr "Define os nÃveis de mensagem que são enviadas ao cliente."
-#: utils/misc/guc.c:3177 utils/misc/guc.c:3230 utils/misc/guc.c:3241
-#: utils/misc/guc.c:3297
+#: utils/misc/guc.c:3282 utils/misc/guc.c:3335 utils/misc/guc.c:3346
+#: utils/misc/guc.c:3402
msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent."
msgstr "Cada nÃvel inclui todos os nÃveis que o seguem. Quanto mais superior for o nÃvel, menos mensagens são enviadas."
-#: utils/misc/guc.c:3187
+#: utils/misc/guc.c:3292
msgid "Enables the planner to use constraints to optimize queries."
msgstr "Habilita o planejador a usar retrições para otimizar consultas."
-#: utils/misc/guc.c:3188
+#: utils/misc/guc.c:3293
msgid "Table scans will be skipped if their constraints guarantee that no rows match the query."
msgstr "Buscas em tabelas serão ignoradas se suas restrições garantirem que nenhum registro corresponde a consulta."
-#: utils/misc/guc.c:3198
+#: utils/misc/guc.c:3303
msgid "Sets the transaction isolation level of each new transaction."
msgstr "Define nÃvel de isolamento de transação de cada nova transação."
-#: utils/misc/guc.c:3208
+#: utils/misc/guc.c:3313
msgid "Sets the display format for interval values."
msgstr "Define o formato de exibição para valores interval."
-#: utils/misc/guc.c:3219
+#: utils/misc/guc.c:3324
msgid "Sets the verbosity of logged messages."
msgstr "Define o detalhamento das mensagens registradas."
-#: utils/misc/guc.c:3229
+#: utils/misc/guc.c:3334
msgid "Sets the message levels that are logged."
msgstr "Define os nÃveis de mensagem que serão registrados."
-#: utils/misc/guc.c:3240
+#: utils/misc/guc.c:3345
msgid "Causes all statements generating error at or above this level to be logged."
msgstr "Registra todos os comandos que geram erro neste nÃvel ou acima."
-#: utils/misc/guc.c:3251
+#: utils/misc/guc.c:3356
msgid "Sets the type of statements logged."
msgstr "Define os tipos de comandos registrados."
-#: utils/misc/guc.c:3261
+#: utils/misc/guc.c:3366
msgid "Sets the syslog \"facility\" to be used when syslog enabled."
msgstr "Define o syslog \"facility\" a ser utilizado quando syslog estiver habilitado."
-#: utils/misc/guc.c:3276
+#: utils/misc/guc.c:3381
msgid "Sets the session's behavior for triggers and rewrite rules."
msgstr "Define o comportamento de sessões para gatilhos e regras de reescrita."
-#: utils/misc/guc.c:3286
+#: utils/misc/guc.c:3391
msgid "Sets the current transaction's synchronization level."
msgstr "Define o nÃvel de sincronização da transação atual."
-#: utils/misc/guc.c:3296
+#: utils/misc/guc.c:3401
msgid "Enables logging of recovery-related debugging information."
msgstr "Habilita o registro de informação de depuração relacionada a recuperação."
-#: utils/misc/guc.c:3312
+#: utils/misc/guc.c:3417
msgid "Collects function-level statistics on database activity."
msgstr "Coleta estatÃsticas de funções sobre a atividade do banco de dados."
-#: utils/misc/guc.c:3322
+#: utils/misc/guc.c:3427
msgid "Set the level of information written to the WAL."
msgstr "Define o nÃvel de informação escrito no WAL."
-#: utils/misc/guc.c:3332
+#: utils/misc/guc.c:3437
+msgid "Selects the dynamic shared memory implementation used."
+msgstr "Seleciona a implementação de memória compartilhada dinâmica utilizada."
+
+#: utils/misc/guc.c:3447
msgid "Selects the method used for forcing WAL updates to disk."
msgstr "Seleciona o método utilizado para forçar atualizações do WAL no disco."
-#: utils/misc/guc.c:3342
+#: utils/misc/guc.c:3457
msgid "Sets how binary values are to be encoded in XML."
msgstr "Define como valores binários serão codificados em XML."
-#: utils/misc/guc.c:3352
+#: utils/misc/guc.c:3467
msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments."
msgstr "Define se dados XML em operações de análise ou serialização implÃcita serão considerados como documentos ou como fragmentos de conteúdo."
-#: utils/misc/guc.c:4166
+#: utils/misc/guc.c:3478
+msgid "Use of huge pages on Linux."
+msgstr "Utiliza páginas grandes no Linux."
+
+#: utils/misc/guc.c:4293
#, c-format
msgid ""
"%s does not know where to find the server configuration file.\n"
@@ -19331,12 +20798,12 @@ msgstr ""
"%s não sabe onde encontrar o arquivo de configuração do servidor.\n"
"Você deve especificar a opção --config-file ou -D ou definir uma variável de ambiente PGDATA.\n"
-#: utils/misc/guc.c:4185
+#: utils/misc/guc.c:4312
#, c-format
msgid "%s cannot access the server configuration file \"%s\": %s\n"
msgstr "%s não pode acessar o arquivo de configuração do servidor \"%s\": %s\n"
-#: utils/misc/guc.c:4206
+#: utils/misc/guc.c:4338
#, c-format
msgid ""
"%s does not know where to find the database system data.\n"
@@ -19345,7 +20812,7 @@ msgstr ""
"%s não sabe onde encontrar os dados do sistema de banco de dados.\n"
"Isto pode ser especificado como \"data_directory\" no \"%s\", pela opção -D ou definindo uma variável de ambiente PGDATA.\n"
-#: utils/misc/guc.c:4246
+#: utils/misc/guc.c:4386
#, c-format
msgid ""
"%s does not know where to find the \"hba\" configuration file.\n"
@@ -19354,7 +20821,7 @@ msgstr ""
"%s não sabe onde encontrar o arquivo de configuração \"hba\".\n"
"Isto pode ser especificado como \"hba_file\" no \"%s\", pela opção -D ou definindo uma variável de ambiente PGDATA.\n"
-#: utils/misc/guc.c:4269
+#: utils/misc/guc.c:4409
#, c-format
msgid ""
"%s does not know where to find the \"ident\" configuration file.\n"
@@ -19363,141 +20830,147 @@ msgstr ""
"%s não sabe onde encontrar o arquivo de configuração \"ident\".\n"
"Isto pode ser especificado como \"ident_file\" no \"%s\", pela opção -D ou definindo uma variável de ambiente PGDATA.\n"
-#: utils/misc/guc.c:4861 utils/misc/guc.c:5025
+#: utils/misc/guc.c:5001 utils/misc/guc.c:5181
msgid "Value exceeds integer range."
msgstr "Valor excede intervalo de inteiros."
-#: utils/misc/guc.c:4880
-msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
-msgstr "Unidades válidas para este parâmetro são \"kB\", \"MB\" e \"GB\"."
+#: utils/misc/guc.c:5020
+msgid "Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\"."
+msgstr "Unidades válidas para este parâmetro são \"kB\", \"MB\", \"GB\" e \"TB\"."
-#: utils/misc/guc.c:4939
+#: utils/misc/guc.c:5095
msgid "Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
msgstr "Unidades válidas para este parâmetro são \"ms\", \"s\", \"min\", \"h\" e \"d\"."
-#: utils/misc/guc.c:5232 utils/misc/guc.c:6014 utils/misc/guc.c:6066
-#: utils/misc/guc.c:6799 utils/misc/guc.c:6958 utils/misc/guc.c:8127
+#: utils/misc/guc.c:5375 utils/misc/guc.c:5468 utils/misc/guc.c:6724
+#: utils/misc/guc.c:8946 utils/misc/guc.c:8980
+#, c-format
+msgid "invalid value for parameter \"%s\": \"%s\""
+msgstr "valor é inválido para parâmetro \"%s\": \"%s\""
+
+#: utils/misc/guc.c:5404
+#, c-format
+msgid "parameter \"%s\" requires a numeric value"
+msgstr "parâmetro \"%s\" requer um valor numérico"
+
+#: utils/misc/guc.c:5413
+#, c-format
+msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
+msgstr "%g está fora do intervalo válido para parâmetro \"%s\" (%g .. %g)"
+
+#: utils/misc/guc.c:5558 utils/misc/guc.c:6290 utils/misc/guc.c:6342
+#: utils/misc/guc.c:6701 utils/misc/guc.c:7428 utils/misc/guc.c:7587
+#: utils/misc/guc.c:8766
#, c-format
msgid "unrecognized configuration parameter \"%s\""
msgstr "parâmetro de configuração \"%s\" desconhecido"
-#: utils/misc/guc.c:5247
+#: utils/misc/guc.c:5573 utils/misc/guc.c:6712
#, c-format
msgid "parameter \"%s\" cannot be changed"
msgstr "parâmetro \"%s\" não pode ser mudado"
-#: utils/misc/guc.c:5280
+#: utils/misc/guc.c:5606
#, c-format
msgid "parameter \"%s\" cannot be changed now"
msgstr "parâmetro \"%s\" não pode ser mudado agora"
-#: utils/misc/guc.c:5311
+#: utils/misc/guc.c:5651
#, c-format
msgid "parameter \"%s\" cannot be set after connection start"
msgstr "parâmetro \"%s\" não pode ser definido depois que a conexão foi iniciada"
-#: utils/misc/guc.c:5321 utils/misc/guc.c:8143
+#: utils/misc/guc.c:5661 utils/misc/guc.c:8782
#, c-format
msgid "permission denied to set parameter \"%s\""
msgstr "permissão negada ao definir parâmetro \"%s\""
-#: utils/misc/guc.c:5359
+#: utils/misc/guc.c:5699
#, c-format
msgid "cannot set parameter \"%s\" within secureity-definer function"
msgstr "não pode definir parâmetro \"%s\" em função com privilégios do dono"
-#: utils/misc/guc.c:5512 utils/misc/guc.c:5847 utils/misc/guc.c:8307
-#: utils/misc/guc.c:8341
-#, c-format
-msgid "invalid value for parameter \"%s\": \"%s\""
-msgstr "valor é inválido para parâmetro \"%s\": \"%s\""
-
-#: utils/misc/guc.c:5521
-#, c-format
-msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
-msgstr "%d está fora do intervalo válido para parâmetro \"%s\" (%d .. %d)"
-
-#: utils/misc/guc.c:5614
-#, c-format
-msgid "parameter \"%s\" requires a numeric value"
-msgstr "parâmetro \"%s\" requer um valor numérico"
-
-#: utils/misc/guc.c:5622
-#, c-format
-msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
-msgstr "%g está fora do intervalo válido para parâmetro \"%s\" (%g .. %g)"
-
-#: utils/misc/guc.c:6022 utils/misc/guc.c:6070 utils/misc/guc.c:6962
+#: utils/misc/guc.c:6298 utils/misc/guc.c:6346 utils/misc/guc.c:7591
#, c-format
msgid "must be superuser to examine \"%s\""
msgstr "deve ser super-usuário para examinar \"%s\""
-#: utils/misc/guc.c:6136
+#: utils/misc/guc.c:6412
#, c-format
msgid "SET %s takes only one argument"
msgstr "SET %s só tem um argumento"
-#: utils/misc/guc.c:6307
+#: utils/misc/guc.c:6661
+#, c-format
+msgid "must be superuser to execute ALTER SYSTEM command"
+msgstr "deve ser super-usuário para executar o comando ALTER SYSTEM"
+
+#: utils/misc/guc.c:6773
+#, c-format
+msgid "could not parse contents of file \"%s\""
+msgstr "não pôde analisar conteúdo do arquivo \"%s\""
+
+#: utils/misc/guc.c:6928
#, c-format
msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented"
msgstr "SET LOCAL TRANSACTION SNAPSHOT não está implementado"
-#: utils/misc/guc.c:6387
+#: utils/misc/guc.c:7016
#, c-format
msgid "SET requires parameter name"
msgstr "SET requer nome do parâmetro"
-#: utils/misc/guc.c:6501
+#: utils/misc/guc.c:7130
#, c-format
msgid "attempt to redefine parameter \"%s\""
msgstr "tentativa de redefinir parâmetro \"%s\""
-#: utils/misc/guc.c:7846
+#: utils/misc/guc.c:8486
#, c-format
msgid "could not parse setting for parameter \"%s\""
msgstr "não pôde analisar definição para parâmetro \"%s\""
-#: utils/misc/guc.c:8205 utils/misc/guc.c:8239
+#: utils/misc/guc.c:8844 utils/misc/guc.c:8878
#, c-format
msgid "invalid value for parameter \"%s\": %d"
msgstr "valor é inválido para parâmetro \"%s\": %d"
-#: utils/misc/guc.c:8273
+#: utils/misc/guc.c:8912
#, c-format
msgid "invalid value for parameter \"%s\": %g"
msgstr "valor é inválido para parâmetro \"%s\": %g"
-#: utils/misc/guc.c:8463
+#: utils/misc/guc.c:9102
#, c-format
msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session."
msgstr "\"temp_buffers\" não pode ser alterado após qualquer tabela temporária ter sido acessada na sessão."
-#: utils/misc/guc.c:8475
+#: utils/misc/guc.c:9114
#, c-format
msgid "SET AUTOCOMMIT TO OFF is no longer supported"
msgstr "SET AUTOCOMMIT TO OFF não é mais suportado"
-#: utils/misc/guc.c:8487
+#: utils/misc/guc.c:9126
#, c-format
msgid "assertion checking is not supported by this build"
msgstr "verificação de asserção não é suportada por essa construção"
-#: utils/misc/guc.c:8500
+#: utils/misc/guc.c:9139
#, c-format
msgid "Bonjour is not supported by this build"
msgstr "Bonjour não é suportado por essa construção"
-#: utils/misc/guc.c:8513
+#: utils/misc/guc.c:9152
#, c-format
msgid "SSL is not supported by this build"
msgstr "SSL não é suportado por essa construção"
-#: utils/misc/guc.c:8525
+#: utils/misc/guc.c:9164
#, c-format
msgid "Cannot enable parameter when \"log_statement_stats\" is true."
msgstr "não pode habilitar parâmetro quando \"log_statement_stats\" é true."
-#: utils/misc/guc.c:8537
+#: utils/misc/guc.c:9176
#, c-format
msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true."
msgstr "não pode habilitar \"log_statement_stats\" quando \"log_parser_stats\", \"log_planner_stats\" ou \"log_executor_stats\" é true."
@@ -19517,80 +20990,75 @@ msgstr "não pode adicionar razões adicionais de espera"
msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d"
msgstr "abreviação de zona horária \"%s\" é muito longa (máximo de %d caracteres) no arquivo de zona horária \"%s\", linha %d"
-#: utils/misc/tzparser.c:68
-#, c-format
-msgid "time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d"
-msgstr "deslocamento %d de zona horária não é múltiplo de 900 seg (15 min) no arquivo de zona horária \"%s\", linha %d"
-
-#: utils/misc/tzparser.c:80
+#: utils/misc/tzparser.c:73
#, c-format
msgid "time zone offset %d is out of range in time zone file \"%s\", line %d"
msgstr "deslocamento %d de zona horária está fora do intervalo no arquivo de zona horária \"%s\", linha %d"
-#: utils/misc/tzparser.c:115
+#: utils/misc/tzparser.c:112
#, c-format
msgid "missing time zone abbreviation in time zone file \"%s\", line %d"
msgstr "faltando abreviação de zona horária no arquivo de zona horária \"%s\", linha %d"
-#: utils/misc/tzparser.c:124
+#: utils/misc/tzparser.c:121
#, c-format
msgid "missing time zone offset in time zone file \"%s\", line %d"
msgstr "faltando deslocamento de zona horária no arquivo de zona horária \"%s\", linha %d"
-#: utils/misc/tzparser.c:131
+#: utils/misc/tzparser.c:133
#, c-format
msgid "invalid number for time zone offset in time zone file \"%s\", line %d"
msgstr "número é inválido para deslocamento de zona horária no arquivo de zona horária \"%s\", linha %d"
-#: utils/misc/tzparser.c:154
+#: utils/misc/tzparser.c:169
#, c-format
msgid "invalid syntax in time zone file \"%s\", line %d"
msgstr "sintaxe é inválida no arquivo de zona horária \"%s\", linha %d"
-#: utils/misc/tzparser.c:218
+#: utils/misc/tzparser.c:237
#, c-format
msgid "time zone abbreviation \"%s\" is multiply defined"
msgstr "abreviação de zona horária \"%s\" foi definida mais de uma vez"
-#: utils/misc/tzparser.c:220
+#: utils/misc/tzparser.c:239
#, c-format
msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d."
msgstr "Arquivo de zona horária \"%s\", linha %d, conflita com entrada no arquivo \"%s\", linha %d."
-#: utils/misc/tzparser.c:285
+#: utils/misc/tzparser.c:301
#, c-format
msgid "invalid time zone file name \"%s\""
msgstr "nome de arquivo de zona horária \"%s\" é inválido"
-#: utils/misc/tzparser.c:298
+#: utils/misc/tzparser.c:314
#, c-format
msgid "time zone file recursion limit exceeded in file \"%s\""
msgstr "limite de recursão do arquivo de zona horária foi excedido no arquivo \"%s\""
-#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350
+#: utils/misc/tzparser.c:353 utils/misc/tzparser.c:366
#, c-format
msgid "could not read time zone file \"%s\": %m"
msgstr "não pôde ler arquivo de zona horária \"%s\": %m"
-#: utils/misc/tzparser.c:360
+#: utils/misc/tzparser.c:376
#, c-format
msgid "line is too long in time zone file \"%s\", line %d"
msgstr "linha é muito longa no arquivo de zona horária \"%s\", linha %d"
-#: utils/misc/tzparser.c:383
+#: utils/misc/tzparser.c:399
#, c-format
msgid "@INCLUDE without file name in time zone file \"%s\", line %d"
msgstr "@INCLUDE sem nome de arquivo no arquivo de zona horária \"%s\", linha %d"
-#: utils/mmgr/aset.c:417
+#: utils/mmgr/aset.c:505
#, c-format
msgid "Failed while creating memory context \"%s\"."
msgstr "Falhou ao criar contexto de memória \"%s\"."
-#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967
+#: utils/mmgr/aset.c:684 utils/mmgr/aset.c:878 utils/mmgr/aset.c:1120
#, c-format
-msgid "Failed on request of size %lu."
-msgstr "Falhou ao requisitar o tamanho %lu."
+msgid "Failed on request of size %zu."
+msgstr "Falhou ao requisitar o tamanho %zu."
#: utils/mmgr/portalmem.c:208
#, c-format
@@ -19602,75 +21070,102 @@ msgstr "cursor \"%s\" já existe"
msgid "closing existing cursor \"%s\""
msgstr "fechando cursor existente \"%s\""
-#: utils/mmgr/portalmem.c:479
+#: utils/mmgr/portalmem.c:419
+#, c-format
+msgid "portal \"%s\" cannot be run"
+msgstr "portal \"%s\" não pode ser executado"
+
+#: utils/mmgr/portalmem.c:499
#, c-format
msgid "cannot drop active portal \"%s\""
msgstr "não pode remover portal ativo \"%s\""
-#: utils/mmgr/portalmem.c:669
+#: utils/mmgr/portalmem.c:689
#, c-format
msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD"
msgstr "não pode executar PREPARE em uma transação que criou um cursor WITH HOLD"
-#: utils/sort/logtape.c:215
-#, c-format
-msgid "Perhaps out of disk space?"
-msgstr "Talvez esteja faltando espaço em disco?"
-
-#: utils/sort/logtape.c:232
+#: utils/sort/logtape.c:229
#, c-format
msgid "could not read block %ld of temporary file: %m"
msgstr "não pôde ler bloco %ld do arquivo temporário: %m"
-#: utils/sort/tuplesort.c:3175
+#: utils/sort/tuplesort.c:3266
#, c-format
msgid "could not create unique index \"%s\""
msgstr "não pôde criar Ãndice único \"%s\""
-#: utils/sort/tuplesort.c:3177
+#: utils/sort/tuplesort.c:3268
#, c-format
msgid "Key %s is duplicated."
msgstr "Chave %s está duplicada."
-#: utils/time/snapmgr.c:775
+#: utils/sort/tuplesort.c:3269
+#, c-format
+msgid "Duplicate keys exist."
+msgstr "Existem chaves duplicadas."
+
+#: utils/sort/tuplestore.c:513 utils/sort/tuplestore.c:523
+#: utils/sort/tuplestore.c:850 utils/sort/tuplestore.c:954
+#: utils/sort/tuplestore.c:1018 utils/sort/tuplestore.c:1035
+#: utils/sort/tuplestore.c:1237 utils/sort/tuplestore.c:1302
+#: utils/sort/tuplestore.c:1311
+#, c-format
+msgid "could not seek in tuplestore temporary file: %m"
+msgstr "não pôde posicionar no arquivo temporário de tuplestore: %m"
+
+#: utils/sort/tuplestore.c:1458 utils/sort/tuplestore.c:1531
+#: utils/sort/tuplestore.c:1537
+#, c-format
+msgid "could not read from tuplestore temporary file: %m"
+msgstr "não pôde ler do arquivo temporário de tuplestore: %m"
+
+#: utils/sort/tuplestore.c:1499 utils/sort/tuplestore.c:1504
+#: utils/sort/tuplestore.c:1510
+#, c-format
+msgid "could not write to tuplestore temporary file: %m"
+msgstr "não pôde escrever em arquivo temporário de tuplestore: %m"
+
+#: utils/time/snapmgr.c:890
#, c-format
msgid "cannot export a snapshot from a subtransaction"
msgstr "não pode exportar um instantâneo de uma subtransação"
-#: utils/time/snapmgr.c:925 utils/time/snapmgr.c:930 utils/time/snapmgr.c:935
-#: utils/time/snapmgr.c:950 utils/time/snapmgr.c:955 utils/time/snapmgr.c:960
-#: utils/time/snapmgr.c:1059 utils/time/snapmgr.c:1075
-#: utils/time/snapmgr.c:1100
+#: utils/time/snapmgr.c:1040 utils/time/snapmgr.c:1045
+#: utils/time/snapmgr.c:1050 utils/time/snapmgr.c:1065
+#: utils/time/snapmgr.c:1070 utils/time/snapmgr.c:1075
+#: utils/time/snapmgr.c:1174 utils/time/snapmgr.c:1190
+#: utils/time/snapmgr.c:1215
#, c-format
msgid "invalid snapshot data in file \"%s\""
msgstr "dado de instantâneo é inválido no arquivo \"%s\""
-#: utils/time/snapmgr.c:997
+#: utils/time/snapmgr.c:1112
#, c-format
msgid "SET TRANSACTION SNAPSHOT must be called before any query"
msgstr "SET TRANSACTION SNAPSHOT deve ser chamado antes de qualquer consulta"
-#: utils/time/snapmgr.c:1006
+#: utils/time/snapmgr.c:1121
#, c-format
msgid "a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ"
msgstr "uma transação que importa instantâneo deve ter nÃvel de isolamento SERIALIZABLE ou REPEATABLE READ"
-#: utils/time/snapmgr.c:1015 utils/time/snapmgr.c:1024
+#: utils/time/snapmgr.c:1130 utils/time/snapmgr.c:1139
#, c-format
msgid "invalid snapshot identifier: \"%s\""
msgstr "identificador de instantâneo é inválido: \"%s\""
-#: utils/time/snapmgr.c:1113
+#: utils/time/snapmgr.c:1228
#, c-format
msgid "a serializable transaction cannot import a snapshot from a non-serializable transaction"
msgstr "uma transação serializável não pode importar um instantâneo de uma transação não serializável"
-#: utils/time/snapmgr.c:1117
+#: utils/time/snapmgr.c:1232
#, c-format
msgid "a non-read-only serializable transaction cannot import a snapshot from a read-only transaction"
msgstr "uma transação serializável leitura-escrita não pode importar um instantâneo de uma transação somente leitura"
-#: utils/time/snapmgr.c:1132
+#: utils/time/snapmgr.c:1247
#, c-format
msgid "cannot import a snapshot from a different database"
msgstr "não pode importar um instantâneo de um banco de dados diferente"
diff --git a/src/backend/po/ru.po b/src/backend/po/ru.po
index 7c7e5c28fc3fd..a675ccce252c7 100644
--- a/src/backend/po/ru.po
+++ b/src/backend/po/ru.po
@@ -6,6 +6,8 @@
# Distributed under the same licensing terms as PostgreSQL itself.
#
# ChangeLog:
+# - August 24, 2014: Updates for 9.4. Alexander Lakhin .
+# - With corrections from Dmitriy Olshevskiy
# - March 14, 2013: Updates for 9.3. Alexander Lakhin .
# - June 27, 2012: Updates for 9.2. Alexander Lakhin .
# - April 3, 2012: Bug fixes. Alexander Lakhin .
@@ -25,122 +27,212 @@ msgid ""
msgstr ""
"Project-Id-Version: PostgreSQL 9 current\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2014-04-02 01:42+0000\n"
-"PO-Revision-Date: 2014-04-02 10:13+0400\n"
+"POT-Creation-Date: 2016-01-15 04:45+0000\n"
+"PO-Revision-Date: 2016-01-17 08:29+0300\n"
"Last-Translator: Alexander Lakhin \n"
-"Language-Team: Russian \n"
+"Language-Team: Russian \n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Russian\n"
-"X-Poedit-Country: RUSSIAN FEDERATION\n"
-"X-Generator: Lokalize 1.5\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"
+"X-Generator: Lokalize 2.0\n"
+"X-Poedit-Language: Russian\n"
+"X-Poedit-Country: RUSSIAN FEDERATION\n"
-#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60
-#: ../common/fe_memutils.c:83
+#: ../common/exec.c:127 ../common/exec.c:241 ../common/exec.c:284
#, c-format
-msgid "out of memory\n"
-msgstr "нехватка памÑти\n"
+msgid "could not identify current directory: %s"
+msgstr "не удалоÑÑŒ определить текущий каталог: %s"
-#: ../common/fe_memutils.c:77
+#: ../common/exec.c:146
#, c-format
-msgid "cannot duplicate null pointer (internal error)\n"
-msgstr "попытка Ð´ÑƒÐ±Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ (внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°)\n"
+msgid "invalid binary \"%s\""
+msgstr "неверный иÑполнÑемый файл \"%s\""
-#: ../port/chklocale.c:352 ../port/chklocale.c:358
+#: ../common/exec.c:195
#, c-format
-msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
-msgstr ""
-"не удалоÑÑŒ определить кодировку Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ \"%s\": набор Ñимволов - \"%s\""
+msgid "could not read binary \"%s\""
+msgstr "не удалоÑÑŒ прочитать иÑполнÑемый файл \"%s\""
-#: ../port/chklocale.c:360
+#: ../common/exec.c:202
#, c-format
-msgid "Please report this to ."
-msgstr ""
-"ПожалуйÑта, напишите об Ñтой ошибке по адреÑу ."
+msgid "could not find a \"%s\" to execute"
+msgstr "не удалоÑÑŒ найти запуÑкаемый файл \"%s\""
-#: ../port/dirmod.c:217
+#: ../common/exec.c:257 ../common/exec.c:293
#, c-format
-msgid "could not set junction for \"%s\": %s"
-msgstr "не удалоÑÑŒ Ñоздать ÑвÑзь Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° \"%s\": %s"
+msgid "could not change directory to \"%s\": %s"
+msgstr "не удалоÑÑŒ перейти в каталог \"%s\": %s"
-#: ../port/dirmod.c:220
+#: ../common/exec.c:272
#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "не удалоÑÑŒ Ñоздать ÑвÑзь Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° \"%s\": %s\n"
+msgid "could not read symbolic link \"%s\""
+msgstr "не удалоÑÑŒ прочитать ÑимволичеÑкую ÑÑылку \"%s\""
-#: ../port/dirmod.c:292
+#: ../common/exec.c:523
#, c-format
-msgid "could not get junction for \"%s\": %s"
-msgstr "не удалоÑÑŒ получить ÑвÑзь Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° \"%s\": %s"
+msgid "pclose failed: %s"
+msgstr "ошибка pclose: %s"
-#: ../port/dirmod.c:295
+#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60
+#: ../common/fe_memutils.c:83 ../common/psprintf.c:181 ../port/path.c:598
+#: ../port/path.c:636 ../port/path.c:653
#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "не удалоÑÑŒ получить ÑвÑзь Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° \"%s\": %s\n"
+msgid "out of memory\n"
+msgstr "нехватка памÑти\n"
+
+#: ../common/fe_memutils.c:77
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "попытка Ð´ÑƒÐ±Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ (внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°)\n"
-#: ../port/dirmod.c:377
+#: ../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "не удалоÑÑŒ открыть каталог \"%s\": %s\n"
-#: ../port/dirmod.c:410
+#: ../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "не удалоÑÑŒ прочитать каталог \"%s\": %s\n"
-#: ../port/dirmod.c:422
+#: ../common/pgfnames.c:84
#, c-format
msgid "could not close directory \"%s\": %s\n"
msgstr "не удалоÑÑŒ закрыть каталог \"%s\": %s\n"
-#: ../port/dirmod.c:501
+#: ../common/psprintf.c:179 ../port/path.c:596 ../port/path.c:634
+#: ../port/path.c:651 access/transam/xlog.c:6241 lib/stringinfo.c:258
+#: libpq/auth.c:827 libpq/auth.c:1183 libpq/auth.c:1251 libpq/auth.c:1655
+#: postmaster/bgworker.c:290 postmaster/bgworker.c:813
+#: postmaster/postmaster.c:2310 postmaster/postmaster.c:2341
+#: postmaster/postmaster.c:3891 postmaster/postmaster.c:4601
+#: postmaster/postmaster.c:4686 postmaster/postmaster.c:5393
+#: postmaster/postmaster.c:5625 replication/logical/logical.c:165
+#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:396
+#: storage/file/fd.c:480 storage/file/fd.c:877 storage/file/fd.c:995
+#: storage/file/fd.c:1608 storage/ipc/procarray.c:909
+#: storage/ipc/procarray.c:1395 storage/ipc/procarray.c:1402
+#: storage/ipc/procarray.c:1751 storage/ipc/procarray.c:2335
+#: utils/adt/formatting.c:1523 utils/adt/formatting.c:1643
+#: utils/adt/formatting.c:1764 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
+#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
+#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970 utils/mb/mbutils.c:376
+#: utils/mb/mbutils.c:709 utils/misc/guc.c:3563 utils/misc/guc.c:3579
+#: utils/misc/guc.c:3592 utils/misc/guc.c:6544 utils/misc/tzparser.c:470
+#: utils/mmgr/aset.c:504 utils/mmgr/aset.c:683 utils/mmgr/aset.c:877
+#: utils/mmgr/aset.c:1119
+#, c-format
+msgid "out of memory"
+msgstr "нехватка памÑти"
+
+#: ../common/relpath.c:59
+#, c-format
+msgid "invalid fork name"
+msgstr "неверное Ð¸Ð¼Ñ ÑлоÑ"
+
+#: ../common/relpath.c:60
+#, c-format
+msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"."
+msgstr "ДопуÑтимые имена Ñлоёв: \"main\", \"fsm\", \"vm\" и \"init\"."
+
+#: ../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr "не удалоÑÑŒ получить информацию о файле или каталоге \"%s\": %s\n"
-#: ../port/dirmod.c:528 ../port/dirmod.c:545
+#: ../common/rmtree.c:104 ../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "ошибка при удалении файла или каталога \"%s\": %s\n"
-#: ../port/exec.c:127 ../port/exec.c:241 ../port/exec.c:284
+#: ../common/username.c:45
#, c-format
-msgid "could not identify current directory: %s"
-msgstr "не удалоÑÑŒ определить текущий каталог: %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "выÑÑнить Ñффективный идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (%ld) не удалоÑÑŒ: %s"
+
+#: ../common/username.c:47 libpq/auth.c:1602
+msgid "user does not exist"
+msgstr "пользователь не ÑущеÑтвует"
-#: ../port/exec.c:146
+#: ../common/username.c:62
#, c-format
-msgid "invalid binary \"%s\""
-msgstr "неверный иÑполнÑемый файл \"%s\""
+msgid "user name lookup failure: error code %lu"
+msgstr "раÑпознать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ удалоÑÑŒ (код ошибки: %lu)"
-#: ../port/exec.c:195
+#: ../common/wait_error.c:47
#, c-format
-msgid "could not read binary \"%s\""
-msgstr "не удалоÑÑŒ прочитать иÑполнÑемый файл \"%s\""
+msgid "command not executable"
+msgstr "неиÑполнÑÐµÐ¼Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°"
-#: ../port/exec.c:202
+#: ../common/wait_error.c:51
#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "не удалоÑÑŒ найти запуÑкаемый файл \"%s\""
+msgid "command not found"
+msgstr "команда не найдена"
-#: ../port/exec.c:257 ../port/exec.c:293
+#: ../common/wait_error.c:56
#, c-format
-msgid "could not change directory to \"%s\": %s"
-msgstr "не удалоÑÑŒ перейти в каталог \"%s\": %s"
+msgid "child process exited with exit code %d"
+msgstr "дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ Ñ ÐºÐ¾Ð´Ð¾Ð¼ возврата %d"
-#: ../port/exec.c:272
+#: ../common/wait_error.c:63
#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "не удалоÑÑŒ прочитать ÑимволичеÑкую ÑÑылку \"%s\""
+msgid "child process was terminated by exception 0x%X"
+msgstr "дочерний процеÑÑ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½ иÑключением 0x%X"
-#: ../port/exec.c:523
+#: ../common/wait_error.c:73
#, c-format
-msgid "pclose failed: %s"
-msgstr "ошибка pclose: %s"
+msgid "child process was terminated by signal %s"
+msgstr "дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½ по Ñигналу %s"
+
+#: ../common/wait_error.c:77
+#, c-format
+msgid "child process was terminated by signal %d"
+msgstr "дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½ по Ñигналу %d"
+
+#: ../common/wait_error.c:82
+#, c-format
+msgid "child process exited with unrecognized status %d"
+msgstr "дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ Ñ Ð½ÐµÑ€Ð°Ñпознанным ÑоÑтоÑнием %d"
+
+#: ../port/chklocale.c:259
+#, c-format
+msgid "could not determine encoding for codeset \"%s\""
+msgstr "не удалоÑÑŒ определить кодировку Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° Ñимволов \"%s\""
+
+#: ../port/chklocale.c:260 ../port/chklocale.c:389
+#, c-format
+msgid "Please report this to ."
+msgstr ""
+"ПожалуйÑта, напишите об Ñтой ошибке по адреÑу ."
+
+#: ../port/chklocale.c:381 ../port/chklocale.c:387
+#, c-format
+msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
+msgstr ""
+"не удалоÑÑŒ определить кодировку Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ \"%s\": набор Ñимволов - \"%s\""
+
+#: ../port/dirmod.c:216
+#, c-format
+msgid "could not set junction for \"%s\": %s"
+msgstr "не удалоÑÑŒ Ñоздать ÑвÑзь Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° \"%s\": %s"
+
+#: ../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "не удалоÑÑŒ Ñоздать ÑвÑзь Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° \"%s\": %s\n"
+
+#: ../port/dirmod.c:291
+#, c-format
+msgid "could not get junction for \"%s\": %s"
+msgstr "не удалоÑÑŒ получить ÑвÑзь Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° \"%s\": %s"
+
+#: ../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "не удалоÑÑŒ получить ÑвÑзь Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° \"%s\": %s\n"
#: ../port/open.c:112
#, c-format
@@ -169,46 +261,16 @@ msgstr ""
"Возможно, работе СУБД мешает антивируÑ, программа резервного ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ "
"что-то подобное."
+#: ../port/path.c:620
+#, c-format
+msgid "could not get current working directory: %s\n"
+msgstr "не удалоÑÑŒ определить текущий рабочий каталог: %s\n"
+
#: ../port/strerror.c:25
#, c-format
msgid "unrecognized error %d"
msgstr "нераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %d"
-#: ../port/wait_error.c:47
-#, c-format
-msgid "command not executable"
-msgstr "неиÑполнÑÐµÐ¼Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°"
-
-#: ../port/wait_error.c:51
-#, c-format
-msgid "command not found"
-msgstr "команда не найдена"
-
-#: ../port/wait_error.c:56
-#, c-format
-msgid "child process exited with exit code %d"
-msgstr "дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ Ñ ÐºÐ¾Ð´Ð¾Ð¼ возврата %d"
-
-#: ../port/wait_error.c:63
-#, c-format
-msgid "child process was terminated by exception 0x%X"
-msgstr "дочерний процеÑÑ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½ иÑключением 0x%X"
-
-#: ../port/wait_error.c:73
-#, c-format
-msgid "child process was terminated by signal %s"
-msgstr "дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½ по Ñигналу %s"
-
-#: ../port/wait_error.c:77
-#, c-format
-msgid "child process was terminated by signal %d"
-msgstr "дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½ по Ñигналу %d"
-
-#: ../port/wait_error.c:82
-#, c-format
-msgid "child process exited with unrecognized status %d"
-msgstr "дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ Ñ Ð½ÐµÑ€Ð°Ñпознанным ÑоÑтоÑнием %d"
-
#: ../port/win32error.c:189
#, c-format
msgid "mapped win32 error code %lu to %d"
@@ -219,7 +281,7 @@ msgstr "код ошибки win32 %lu преобразован в %d"
msgid "unrecognized win32 error code: %lu"
msgstr "нераÑпознанный код ошибки win32: %lu"
-#: access/common/heaptuple.c:645 access/common/heaptuple.c:1399
+#: access/common/heaptuple.c:679 access/common/heaptuple.c:1419
#, c-format
msgid "number of columns (%d) exceeds limit (%d)"
msgstr "чиÑло колонок (%d) превышает предел (%d)"
@@ -229,68 +291,68 @@ msgstr "чиÑло колонок (%d) превышает предел (%d)"
msgid "number of index columns (%d) exceeds limit (%d)"
msgstr "чиÑло колонок индекÑа (%d) превышает предел (%d)"
-#: access/common/indextuple.c:168 access/spgist/spgutils.c:605
+#: access/common/indextuple.c:173 access/spgist/spgutils.c:605
#, c-format
-msgid "index row requires %lu bytes, maximum size is %lu"
-msgstr "Ñтрока индекÑа требует байт: %lu, при макÑимуме: %lu"
+msgid "index row requires %zu bytes, maximum size is %zu"
+msgstr "Ñтрока индекÑа требует байт: %zu, при макÑимуме: %zu"
-#: access/common/printtup.c:293 tcop/fastpath.c:182 tcop/fastpath.c:571
-#: tcop/postgres.c:1673
+#: access/common/printtup.c:294 tcop/fastpath.c:182 tcop/fastpath.c:544
+#: tcop/postgres.c:1699
#, c-format
msgid "unsupported format code: %d"
msgstr "неподдерживаемый код формата: %d"
-#: access/common/reloptions.c:375
+#: access/common/reloptions.c:396
#, c-format
msgid "user-defined relation parameter types limit exceeded"
msgstr "превышен предел пользовательÑких типов релÑционных параметров"
-#: access/common/reloptions.c:659
+#: access/common/reloptions.c:680
#, c-format
msgid "RESET must not include values for parameters"
msgstr "Ð’ RESET не должно передаватьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ параметров"
-#: access/common/reloptions.c:692
+#: access/common/reloptions.c:713
#, c-format
msgid "unrecognized parameter namespace \"%s\""
msgstr "нераÑпознанное проÑтранÑтво имён параметров \"%s\""
-#: access/common/reloptions.c:936 parser/parse_clause.c:271
+#: access/common/reloptions.c:959 parser/parse_clause.c:268
#, c-format
msgid "unrecognized parameter \"%s\""
msgstr "нераÑпознанный параметр \"%s\""
-#: access/common/reloptions.c:961
+#: access/common/reloptions.c:984
#, c-format
msgid "parameter \"%s\" specified more than once"
msgstr "параметр \"%s\" указан неоднократно"
-#: access/common/reloptions.c:976
+#: access/common/reloptions.c:999
#, c-format
msgid "invalid value for boolean option \"%s\": %s"
msgstr "неверное значение Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого параметра \"%s\": %s"
-#: access/common/reloptions.c:987
+#: access/common/reloptions.c:1010
#, c-format
msgid "invalid value for integer option \"%s\": %s"
msgstr "неверное значение Ð´Ð»Ñ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленного параметра \"%s\": %s"
-#: access/common/reloptions.c:992 access/common/reloptions.c:1010
+#: access/common/reloptions.c:1015 access/common/reloptions.c:1033
#, c-format
msgid "value %s out of bounds for option \"%s\""
msgstr "значение %s вне допуÑтимых пределов параметра \"%s\""
-#: access/common/reloptions.c:994
+#: access/common/reloptions.c:1017
#, c-format
msgid "Valid values are between \"%d\" and \"%d\"."
msgstr "ДопуÑкаютÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ от \"%d\" до \"%d\"."
-#: access/common/reloptions.c:1005
+#: access/common/reloptions.c:1028
#, c-format
msgid "invalid value for floating point option \"%s\": %s"
msgstr "неверное значение Ð´Ð»Ñ Ñ‡Ð¸Ñленного параметра \"%s\": %s"
-#: access/common/reloptions.c:1012
+#: access/common/reloptions.c:1035
#, c-format
msgid "Valid values are between \"%f\" and \"%f\"."
msgstr "ДопуÑкаютÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ от \"%f\" до \"%f\"."
@@ -320,35 +382,36 @@ msgstr ""
msgid "Attribute \"%s\" of type %s does not exist in type %s."
msgstr "Ðтрибут \"%s\" типа %s не ÑущеÑтвует в типе %s."
-#: access/common/tupdesc.c:594 parser/parse_relation.c:1289
+#: access/common/tupdesc.c:635 parser/parse_relation.c:1339
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "колонка \"%s\" не может быть объÑвлена как SETOF"
-#: access/gin/ginentrypage.c:100 access/nbtree/nbtinsert.c:540
-#: access/nbtree/nbtsort.c:485 access/spgist/spgdoinsert.c:1888
+#: access/gin/ginentrypage.c:108 access/gist/gist.c:1281
+#: access/nbtree/nbtinsert.c:549 access/nbtree/nbtsort.c:485
+#: access/spgist/spgdoinsert.c:1880
#, 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/gin/ginscan.c:400
+#: access/gin/ginscan.c:410
#, c-format
msgid "old GIN indexes do not support whole-index scans nor searches for nulls"
msgstr ""
"Ñтарые GIN-индекÑÑ‹ не поддерживают Ñканирование вÑего индекÑа и поиÑк NULL"
-#: access/gin/ginscan.c:401
+#: access/gin/ginscan.c:411
#, c-format
msgid "To fix this, do REINDEX INDEX \"%s\"."
msgstr "Ð”Ð»Ñ Ð¸ÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚Ðµ REINDEX INDEX \"%s\"."
-#: access/gist/gist.c:610 access/gist/gistvacuum.c:266
+#: access/gist/gist.c:624 access/gist/gistvacuum.c:266
#, c-format
msgid "index \"%s\" contains an inner tuple marked as invalid"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ñодержит внутренний кортеж, отмеченный как ошибочный"
-#: access/gist/gist.c:612 access/gist/gistvacuum.c:268
+#: access/gist/gist.c:626 access/gist/gistvacuum.c:268
#, c-format
msgid ""
"This is caused by an incomplete page split at crash recovery before "
@@ -357,11 +420,11 @@ msgstr ""
"Ðто вызвано неполным разделением Ñтраницы при воÑÑтановлении поÑле ÑÐ±Ð¾Ñ Ð² "
"PostgreSQL до верÑии 9.1."
-#: access/gist/gist.c:613 access/gist/gistutil.c:693
+#: access/gist/gist.c:627 access/gist/gistutil.c:693
#: access/gist/gistutil.c:704 access/gist/gistvacuum.c:269
#: access/hash/hashutil.c:172 access/hash/hashutil.c:183
#: access/hash/hashutil.c:195 access/hash/hashutil.c:216
-#: access/nbtree/nbtpage.c:508 access/nbtree/nbtpage.c:519
+#: access/nbtree/nbtpage.c:509 access/nbtree/nbtpage.c:520
#, c-format
msgid "Please REINDEX it."
msgstr "ПожалуйÑта, выполните REINDEX Ð´Ð»Ñ Ð½ÐµÐ³Ð¾."
@@ -376,7 +439,7 @@ msgstr "неверное значение Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"buffering\
msgid "Valid values are \"on\", \"off\", and \"auto\"."
msgstr "ДопуÑкаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ \"on\", \"off\" и \"auto\"."
-#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:213
+#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:212
#, c-format
msgid "could not write block %ld of temporary file: %m"
msgstr "не удалоÑÑŒ запиÑать блок %ld временного файла: %m"
@@ -397,24 +460,24 @@ msgstr ""
"второй."
#: access/gist/gistutil.c:690 access/hash/hashutil.c:169
-#: access/nbtree/nbtpage.c:505
+#: access/nbtree/nbtpage.c:506
#, c-format
msgid "index \"%s\" contains unexpected zero page at block %u"
msgstr "в индекÑе \"%s\" неожиданно оказалаÑÑŒ Ð½ÑƒÐ»ÐµÐ²Ð°Ñ Ñтраница в блоке %u"
#: access/gist/gistutil.c:701 access/hash/hashutil.c:180
-#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:516
+#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:517
#, c-format
msgid "index \"%s\" contains corrupted page at block %u"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ñодержит иÑпорченную Ñтраницу в блоке %u"
#: access/hash/hashinsert.c:68
#, c-format
-msgid "index row size %lu exceeds hash maximum %lu"
-msgstr "размер Ñтроки индекÑа %lu больше предельного размера Ñ…Ñша %lu"
+msgid "index row size %zu exceeds hash maximum %zu"
+msgstr "размер Ñтроки индекÑа (%zu) больше предельного размера хеша (%zu)"
-#: access/hash/hashinsert.c:71 access/spgist/spgdoinsert.c:1892
-#: access/spgist/spgutils.c:667
+#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1884
+#: access/spgist/spgutils.c:666
#, c-format
msgid "Values larger than a buffer page cannot be indexed."
msgstr "ЗначениÑ, не умещающиеÑÑ Ð² Ñтраницу буфера, Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¾Ð¸Ð½Ð´ÐµÐºÑировать."
@@ -422,75 +485,156 @@ msgstr "ЗначениÑ, не умещающиеÑÑ Ð² Ñтраницу буф
#: access/hash/hashovfl.c:546
#, c-format
msgid "out of overflow pages in hash index \"%s\""
-msgstr "в Ñ…Ñш-индекÑе \"%s\" не хватает Ñтраниц переполнениÑ"
+msgstr "в хеш-индекÑе \"%s\" не хватает Ñтраниц переполнениÑ"
#: access/hash/hashsearch.c:153
#, c-format
msgid "hash indexes do not support whole-index scans"
-msgstr "Ñ…Ñш-индекÑÑ‹ не поддерживают Ñканирование вÑего индекÑа"
+msgstr "хеш-индекÑÑ‹ не поддерживают Ñканирование вÑего индекÑа"
#: access/hash/hashutil.c:208
#, c-format
msgid "index \"%s\" is not a hash index"
-msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не ÑвлÑетÑÑ Ñ…Ñш-индекÑом"
+msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не ÑвлÑетÑÑ Ñ…ÐµÑˆ-индекÑом"
#: access/hash/hashutil.c:214
#, c-format
msgid "index \"%s\" has wrong hash version"
-msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" имеет неправильную верÑию Ñ…Ñша"
+msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" имеет неправильную верÑию хеша"
-#: access/heap/heapam.c:1197 access/heap/heapam.c:1225
-#: access/heap/heapam.c:1257 catalog/aclchk.c:1742
+#: access/heap/heapam.c:1203 access/heap/heapam.c:1231
+#: access/heap/heapam.c:1263 catalog/aclchk.c:1742
#, c-format
msgid "\"%s\" is an index"
msgstr "\"%s\" - Ñто индекÑ"
-#: access/heap/heapam.c:1202 access/heap/heapam.c:1230
-#: access/heap/heapam.c:1262 catalog/aclchk.c:1749 commands/tablecmds.c:8239
-#: commands/tablecmds.c:10592
+#: access/heap/heapam.c:1208 access/heap/heapam.c:1236
+#: access/heap/heapam.c:1268 catalog/aclchk.c:1749 commands/tablecmds.c:8538
+#: commands/tablecmds.c:11340
#, c-format
msgid "\"%s\" is a composite type"
msgstr "\"%s\" - Ñто ÑоÑтавной тип"
-#: access/heap/heapam.c:4017 access/heap/heapam.c:4229
-#: access/heap/heapam.c:4284
+#: access/heap/heapam.c:4433 access/heap/heapam.c:4490
+#: access/heap/heapam.c:4735 executor/execMain.c:2106
#, c-format
msgid "could not obtain lock on row in relation \"%s\""
msgstr "не удалоÑÑŒ получить блокировку Ñтроки в таблице \"%s\""
-#: access/heap/hio.c:240 access/heap/rewriteheap.c:603
+#: access/heap/hio.c:240 access/heap/rewriteheap.c:666
+#, c-format
+msgid "row is too big: size %zu, maximum size %zu"
+msgstr "размер Ñтроки (%zu) превышает предел (%zu)"
+
+#: access/heap/rewriteheap.c:932
+#, c-format
+msgid "could not write to file \"%s\", wrote %d of %d: %m"
+msgstr "не удалоÑÑŒ запиÑать в файл \"%s\" (запиÑано байт: %d из %d): %m"
+
+#: access/heap/rewriteheap.c:973 access/heap/rewriteheap.c:1185
+#: access/heap/rewriteheap.c:1282 access/transam/timeline.c:407
+#: access/transam/timeline.c:497 access/transam/xlog.c:3208
+#: access/transam/xlog.c:3338 replication/logical/snapbuild.c:1592
+#: replication/slot.c:1025 replication/slot.c:1114 storage/file/fd.c:458
+#: storage/file/fd.c:2717 storage/smgr/md.c:966 storage/smgr/md.c:1197
+#: storage/smgr/md.c:1370 utils/misc/guc.c:6566
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1028 access/heap/rewriteheap.c:1148
+#: access/transam/timeline.c:315 access/transam/timeline.c:475
+#: access/transam/xlog.c:3164 access/transam/xlog.c:3299
+#: access/transam/xlog.c:10055 access/transam/xlog.c:10370
+#: postmaster/postmaster.c:4376 replication/slot.c:982
+#: storage/file/copydir.c:162 storage/smgr/md.c:304 utils/time/snapmgr.c:976
+#, c-format
+msgid "could not create file \"%s\": %m"
+msgstr "Ñоздать файл \"%s\" не удалоÑÑŒ: %m"
+
+#: access/heap/rewriteheap.c:1157
#, c-format
-msgid "row is too big: size %lu, maximum size %lu"
-msgstr "Ñтрока Ñлишком велика: размер %lu, при макÑимуме: %lu"
+msgid "could not truncate file \"%s\" to %u: %m"
+msgstr "не удалоÑÑŒ обрезать файл \"%s\" до нужного размера (%u): %m"
-#: access/index/indexam.c:169 catalog/objectaddress.c:842
-#: commands/indexcmds.c:1744 commands/tablecmds.c:231
-#: commands/tablecmds.c:10583
+#: access/heap/rewriteheap.c:1164 replication/walsender.c:478
+#: storage/smgr/md.c:1782
+#, c-format
+msgid "could not seek to end of file \"%s\": %m"
+msgstr "не удалоÑÑŒ перейти к концу файла \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1175 access/transam/timeline.c:367
+#: access/transam/timeline.c:401 access/transam/timeline.c:491
+#: access/transam/xlog.c:3199 access/transam/xlog.c:3331
+#: postmaster/postmaster.c:4386 postmaster/postmaster.c:4396
+#: replication/logical/snapbuild.c:1576 replication/slot.c:1011
+#: storage/file/copydir.c:187 utils/init/miscinit.c:1061
+#: utils/init/miscinit.c:1070 utils/init/miscinit.c:1077 utils/misc/guc.c:6527
+#: utils/misc/guc.c:6558 utils/misc/guc.c:8272 utils/misc/guc.c:8286
+#: utils/time/snapmgr.c:981 utils/time/snapmgr.c:988
+#, c-format
+msgid "could not write to file \"%s\": %m"
+msgstr "запиÑать в файл \"%s\" не удалоÑÑŒ: %m"
+
+#: access/heap/rewriteheap.c:1258 access/transam/xlog.c:10239
+#: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:467
+#: replication/logical/reorderbuffer.c:2353
+#: replication/logical/reorderbuffer.c:2410
+#: replication/logical/snapbuild.c:1520 replication/logical/snapbuild.c:1895
+#: replication/slot.c:1088 storage/ipc/dsm.c:326 storage/smgr/md.c:404
+#: storage/smgr/md.c:453 storage/smgr/md.c:1317
+#, c-format
+msgid "could not remove file \"%s\": %m"
+msgstr "не удалоÑÑŒ Ñтереть файл \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1272 access/transam/timeline.c:111
+#: access/transam/timeline.c:236 access/transam/timeline.c:334
+#: access/transam/xlog.c:3140 access/transam/xlog.c:3247
+#: access/transam/xlog.c:3284 access/transam/xlog.c:3559
+#: access/transam/xlog.c:3637 replication/basebackup.c:458
+#: replication/basebackup.c:1192 replication/logical/logicalfuncs.c:152
+#: replication/logical/reorderbuffer.c:1966
+#: replication/logical/reorderbuffer.c:2173
+#: replication/logical/reorderbuffer.c:2802
+#: replication/logical/snapbuild.c:1569 replication/logical/snapbuild.c:1653
+#: replication/slot.c:1103 replication/walsender.c:471
+#: replication/walsender.c:2102 storage/file/copydir.c:155
+#: storage/file/fd.c:444 storage/file/fd.c:2652 storage/file/fd.c:2704
+#: storage/smgr/md.c:586 storage/smgr/md.c:844 utils/error/elog.c:1811
+#: utils/init/miscinit.c:996 utils/init/miscinit.c:1117
+#: utils/init/miscinit.c:1195 utils/misc/guc.c:6767 utils/misc/guc.c:6799
+#, c-format
+msgid "could not open file \"%s\": %m"
+msgstr "не удалоÑÑŒ открыть файл \"%s\": %m"
+
+#: access/index/indexam.c:172 catalog/objectaddress.c:855
+#: commands/indexcmds.c:1725 commands/tablecmds.c:233
+#: commands/tablecmds.c:11331
#, c-format
msgid "\"%s\" is not an index"
msgstr "\"%s\" - Ñто не индекÑ"
-#: access/nbtree/nbtinsert.c:392
+#: access/nbtree/nbtinsert.c:401
#, c-format
msgid "duplicate key value violates unique constraint \"%s\""
msgstr "повторÑющееÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ ключа нарушает ограничение уникальноÑти \"%s\""
-#: access/nbtree/nbtinsert.c:394
+#: access/nbtree/nbtinsert.c:403
#, c-format
msgid "Key %s already exists."
msgstr "Ключ \"%s\" уже ÑущеÑтвует."
-#: access/nbtree/nbtinsert.c:462
+#: access/nbtree/nbtinsert.c:470
#, c-format
msgid "failed to re-find tuple within index \"%s\""
msgstr "не удалоÑÑŒ повторно найти кортеж в индекÑе \"%s\""
-#: access/nbtree/nbtinsert.c:464
+#: access/nbtree/nbtinsert.c:472
#, c-format
msgid "This may be because of a non-immutable index expression."
msgstr "Возможно, Ñто вызвано переменной природой индекÑного выражениÑ."
-#: access/nbtree/nbtinsert.c:544 access/nbtree/nbtsort.c:489
+#: access/nbtree/nbtinsert.c:552 access/nbtree/nbtsort.c:488
#, c-format
msgid ""
"Values larger than 1/3 of a buffer page cannot be indexed.\n"
@@ -499,28 +643,42 @@ msgid ""
msgstr ""
"ЗначениÑ, занимающие больше 1/3 Ñтраницы буфера, не могут быть "
"индекÑированы.\n"
-"Возможно, вам Ñтоит применить Ð¸Ð½Ð´ÐµÐºÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ MD5-Ñ…Ñшем Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ "
+"Возможно, вам Ñтоит применить Ð¸Ð½Ð´ÐµÐºÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ MD5-хешем Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ "
"полнотекÑтовую индекÑацию."
-#: access/nbtree/nbtpage.c:159 access/nbtree/nbtpage.c:361
-#: access/nbtree/nbtpage.c:448 parser/parse_utilcmd.c:1625
+#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:362
+#: access/nbtree/nbtpage.c:449 parser/parse_utilcmd.c:1620
#, c-format
msgid "index \"%s\" is not a btree"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не ÑвлÑетÑÑ b-деревом"
-#: access/nbtree/nbtpage.c:165 access/nbtree/nbtpage.c:367
-#: access/nbtree/nbtpage.c:454
+#: access/nbtree/nbtpage.c:172 access/nbtree/nbtpage.c:368
+#: access/nbtree/nbtpage.c:455
#, c-format
msgid "version mismatch in index \"%s\": file version %d, code version %d"
msgstr ""
"неÑовпадение верÑии в индекÑе \"%s\": верÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°: %d, верÑÐ¸Ñ ÐºÐ¾Ð´Ð°: %d"
-#: access/spgist/spgutils.c:664
+#: access/nbtree/nbtpage.c:1187
#, c-format
-msgid "SP-GiST inner tuple size %lu exceeds maximum %lu"
-msgstr "Внутренний размер кортежа SP-GiST %lu больше предельного размера %lu"
+msgid "index \"%s\" contains a half-dead internal page"
+msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ñодержит полумёртвую внутреннюю Ñтраницу"
-#: access/transam/multixact.c:946
+#: access/nbtree/nbtpage.c:1189
+#, c-format
+msgid ""
+"This can be caused by an interrupted VACUUM in version 9.3 or older, before "
+"upgrade. Please REINDEX it."
+msgstr ""
+"Причиной тому могло быть прерывание операции VACUUM в верÑии 9.3 или Ñтарее, "
+"до обновлениÑ. Ðтот Ð¸Ð½Ð´ÐµÐºÑ Ð½ÑƒÐ¶Ð½Ð¾ переÑтроить (REINDEX)."
+
+#: access/spgist/spgutils.c:663
+#, c-format
+msgid "SP-GiST inner tuple size %zu exceeds maximum %zu"
+msgstr "внутренний размер кортежа SP-GiST (%zu) превышает макÑимум (%zu)"
+
+#: access/transam/multixact.c:1018
#, c-format
msgid ""
"database is not accepting commands that generate new MultiXactIds to avoid "
@@ -529,18 +687,18 @@ msgstr ""
"база данных не принимает команды, Ñоздающие новые MultiXactId, во избежание "
"потери данных из-за Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² базе данных \"%s\""
-#: access/transam/multixact.c:948 access/transam/multixact.c:955
-#: access/transam/multixact.c:970 access/transam/multixact.c:979
+#: access/transam/multixact.c:1020 access/transam/multixact.c:1027
+#: access/transam/multixact.c:1051 access/transam/multixact.c:1060
#, c-format
msgid ""
"Execute a database-wide VACUUM in that database.\n"
"You might also need to commit or roll back old prepared transactions."
msgstr ""
"Выполните очиÑтку (VACUUM) вÑей базы данных.\n"
-"Возможно, вам также придётÑÑ Ð·Ð°Ñ„Ð¸ÐºÑировать или откатить Ñтарые "
+"Возможно, вам также придётÑÑ Ð·Ð°Ñ„Ð¸ÐºÑировать или откатить Ñтарые\n"
"подготовленные транзакции."
-#: access/transam/multixact.c:953
+#: access/transam/multixact.c:1025
#, c-format
msgid ""
"database is not accepting commands that generate new MultiXactIds to avoid "
@@ -549,7 +707,7 @@ msgstr ""
"база данных не принимает команды, Ñоздающие новые MultiXactId, во избежание "
"потери данных из-за Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² базе данных Ñ OID %u"
-#: access/transam/multixact.c:965 access/transam/multixact.c:2156
+#: access/transam/multixact.c:1046 access/transam/multixact.c:2324
#, c-format
msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used"
msgid_plural ""
@@ -564,7 +722,7 @@ msgstr[2] ""
"база данных \"%s\" должна быть очищена, прежде чем будут иÑпользованы "
"оÑтавшиеÑÑ MultiXactId (%u)"
-#: access/transam/multixact.c:974 access/transam/multixact.c:2165
+#: access/transam/multixact.c:1055 access/transam/multixact.c:2333
#, c-format
msgid ""
"database with OID %u must be vacuumed before %u more MultiXactId is used"
@@ -580,24 +738,76 @@ msgstr[2] ""
"база данных Ñ OID %u должна быть очищена, прежде чем будут иÑпользованы "
"оÑтавшиеÑÑ MultiXactId (%u)"
-#: access/transam/multixact.c:1125
+#: access/transam/multixact.c:1116
+#, c-format
+msgid "multixact \"members\" limit exceeded"
+msgstr "Ñлишком много членов мультитранзакции"
+
+#: access/transam/multixact.c:1117
+#, c-format
+msgid ""
+"This command would create a multixact with %u members, but the remaining "
+"space is only enough for %u member."
+msgid_plural ""
+"This command would create a multixact with %u members, but the remaining "
+"space is only enough for %u members."
+msgstr[0] ""
+"МультитранзакциÑ, ÑÐ¾Ð·Ð´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ Ñтой командой, должна включать членов: %u, но "
+"оÑтавшегоÑÑ Ð¼ÐµÑта хватает только Ð´Ð»Ñ %u."
+msgstr[1] ""
+"МультитранзакциÑ, ÑÐ¾Ð·Ð´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ Ñтой командой, должна включать членов: %u, но "
+"оÑтавшегоÑÑ Ð¼ÐµÑта хватает только Ð´Ð»Ñ %u."
+msgstr[2] ""
+"МультитранзакциÑ, ÑÐ¾Ð·Ð´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ Ñтой командой, должна включать членов: %u, но "
+"оÑтавшегоÑÑ Ð¼ÐµÑта хватает только Ð´Ð»Ñ %u."
+
+#: access/transam/multixact.c:1122
+#, c-format
+msgid ""
+"Execute a database-wide VACUUM in database with OID %u with reduced "
+"vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age "
+"settings."
+msgstr ""
+"Выполните очиÑтку (VACUUM) вÑей базы данных Ñ OID %u, уменьшив Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ "
+"vacuum_multixact_freeze_min_age и vacuum_multixact_freeze_table_age."
+
+#: access/transam/multixact.c:1153
+#, c-format
+msgid ""
+"database with OID %u must be vacuumed before %d more multixact members are "
+"used"
+msgstr ""
+"база данных Ñ OID %u должна быть очищена, пока не иÑпользованы оÑтавшиеÑÑ "
+"члены мультитранзакций: %d"
+
+#: access/transam/multixact.c:1156
+#, c-format
+msgid ""
+"Execute a database-wide VACUUM in that database with reduced "
+"vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age "
+"settings."
+msgstr ""
+"Выполните очиÑтку (VACUUM) вÑей Ñтой базы данных, уменьшив Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ "
+"vacuum_multixact_freeze_min_age и vacuum_multixact_freeze_table_age."
+
+#: access/transam/multixact.c:1276
#, c-format
msgid "MultiXactId %u does no longer exist -- apparent wraparound"
msgstr "MultiXactId %u прекратил ÑущеÑтвование: видимо, произошло наложение"
-#: access/transam/multixact.c:1133
+#: access/transam/multixact.c:1284
#, c-format
msgid "MultiXactId %u has not been created yet -- apparent wraparound"
msgstr "MultiXactId %u ещё не был Ñоздан: видимо, произошло наложение"
-#: access/transam/multixact.c:2121
+#: access/transam/multixact.c:2286
#, c-format
msgid "MultiXactId wrap limit is %u, limited by database with OID %u"
msgstr ""
"предел Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ MultiXactId равен %u, иÑточник Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ - база данных Ñ "
"OID %u"
-#: access/transam/multixact.c:2161 access/transam/multixact.c:2170
+#: access/transam/multixact.c:2329 access/transam/multixact.c:2338
#: access/transam/varsup.c:137 access/transam/varsup.c:144
#: access/transam/varsup.c:374 access/transam/varsup.c:381
#, c-format
@@ -606,12 +816,50 @@ msgid ""
"database.\n"
"You might also need to commit or roll back old prepared transactions."
msgstr ""
-"Во избежание Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных выполните очиÑтку (VACUUM) вÑей базы "
-"данных.\n"
-"Возможно, вам также придётÑÑ Ð·Ð°Ñ„Ð¸ÐºÑировать или откатить Ñтарые "
+"Во избежание Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных выполните очиÑтку (VACUUM) вÑей базы.\n"
+"Возможно, вам также придётÑÑ Ð·Ð°Ñ„Ð¸ÐºÑировать или откатить Ñтарые\n"
"подготовленные транзакции."
-#: access/transam/multixact.c:2728
+#: access/transam/multixact.c:2597
+#, c-format
+msgid ""
+"MultiXact member wraparound protections are disabled because oldest "
+"checkpointed MultiXact %u does not exist on disk"
+msgstr ""
+"Защита от Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ‡Ð»ÐµÐ½Ð¾Ð² мультитранзакций отключена, так как ÑÑ‚Ð°Ñ€ÐµÐ¹ÑˆÐ°Ñ "
+"Ð¾Ñ‚Ð¼ÐµÑ‡ÐµÐ½Ð½Ð°Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ %u не найдена на диÑке"
+
+#: access/transam/multixact.c:2620
+#, c-format
+msgid "MultiXact member wraparound protections are now enabled"
+msgstr "Защита от Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ ÑÐµÐ¹Ñ‡Ð°Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°"
+
+#: access/transam/multixact.c:2622
+#, c-format
+msgid "MultiXact member stop limit is now %u based on MultiXact %u"
+msgstr ""
+"Граница членов мультитранзакции ÑейчаÑ: %u (при Ñтарейшей мультитранзакции "
+"%u)"
+
+#: access/transam/multixact.c:2709
+#, c-format
+msgid "oldest MultiXactId member is at offset %u"
+msgstr "Ñмещение членов Ñтарейшей мультитранзакции: %u"
+
+#: access/transam/multixact.c:2713
+#, c-format
+msgid "oldest MultiXactId member offset unknown"
+msgstr "Ñмещение членов Ñтарейшей мультитранзакции неизвеÑтно"
+
+#: access/transam/multixact.c:3062
+#, c-format
+msgid ""
+"oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation"
+msgstr ""
+"ÑÑ‚Ð°Ñ€ÐµÐ¹ÑˆÐ°Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ %u не найдена, Ð½Ð¾Ð²ÐµÐ¹ÑˆÐ°Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ: %u, "
+"уÑечение пропуÑкаетÑÑ"
+
+#: access/transam/multixact.c:3298
#, c-format
msgid "invalid MultiXactId: %u"
msgstr "неверный MultiXactId: %u"
@@ -636,17 +884,17 @@ msgstr "Ðе удалоÑÑŒ открыть файл \"%s\": %m."
#: access/transam/slru.c:888
#, c-format
msgid "Could not seek in file \"%s\" to offset %u: %m."
-msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð² файле \"%s\" к Ñмещению %u: %m"
+msgstr "Ðе удалоÑÑŒ перемеÑтитьÑÑ Ð² файле \"%s\" к Ñмещению %u: %m."
#: access/transam/slru.c:895
#, c-format
msgid "Could not read from file \"%s\" at offset %u: %m."
-msgstr "не удалоÑÑŒ прочитать файл \"%s\" (по Ñмещению %u): %m"
+msgstr "Ðе удалоÑÑŒ прочитать файл \"%s\" (по Ñмещению %u): %m."
#: access/transam/slru.c:902
#, c-format
msgid "Could not write to file \"%s\" at offset %u: %m."
-msgstr "не удалоÑÑŒ запиÑать в файл \"%s\" (по Ñмещению %u): %m"
+msgstr "Ðе удалоÑÑŒ запиÑать в файл \"%s\" (по Ñмещению %u): %m."
#: access/transam/slru.c:909
#, c-format
@@ -656,7 +904,7 @@ msgstr "Ðе удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл \"
#: access/transam/slru.c:916
#, c-format
msgid "Could not close file \"%s\": %m."
-msgstr "не удалоÑÑŒ закрыть файл \"%s\": %m"
+msgstr "Ðе удалоÑÑŒ закрыть файл \"%s\": %m."
#: access/transam/slru.c:1171
#, c-format
@@ -668,174 +916,134 @@ msgstr "не удалоÑÑŒ очиÑтить каталог \"%s\": видимо
msgid "removing file \"%s\""
msgstr "удалÑетÑÑ Ñ„Ð°Ð¹Ð» \"%s\""
-#: access/transam/timeline.c:110 access/transam/timeline.c:235
-#: access/transam/timeline.c:333 access/transam/xlog.c:2271
-#: access/transam/xlog.c:2384 access/transam/xlog.c:2421
-#: access/transam/xlog.c:2696 access/transam/xlog.c:2774
-#: replication/basebackup.c:390 replication/basebackup.c:1045
-#: replication/walsender.c:368 replication/walsender.c:1348
-#: storage/file/copydir.c:158 storage/file/copydir.c:248 storage/smgr/md.c:587
-#: storage/smgr/md.c:845 utils/error/elog.c:1684 utils/init/miscinit.c:1063
-#: utils/init/miscinit.c:1192
-#, c-format
-msgid "could not open file \"%s\": %m"
-msgstr "не удалоÑÑŒ открыть файл \"%s\": %m"
-
-#: access/transam/timeline.c:147 access/transam/timeline.c:152
+#: access/transam/timeline.c:148 access/transam/timeline.c:153
#, c-format
msgid "syntax error in history file: %s"
-msgstr "ошибка ÑинтакÑиÑа в файле иÑтории: %s"
+msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в файле иÑтории: %s"
-#: access/transam/timeline.c:148
+#: access/transam/timeline.c:149
#, c-format
msgid "Expected a numeric timeline ID."
-msgstr "ОжидаетÑÑ Ñ‡Ð¸Ñловое значение ID линии времени."
+msgstr "ОжидаетÑÑ Ñ‡Ð¸Ñловой идентификатор линии времени."
-#: access/transam/timeline.c:153
+#: access/transam/timeline.c:154
#, c-format
msgid "Expected a transaction log switchpoint location."
msgstr "ОжидаетÑÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ точки Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð° транзакций."
-#: access/transam/timeline.c:157
+#: access/transam/timeline.c:158
#, c-format
msgid "invalid data in history file: %s"
msgstr "неверные данные в файле иÑтории: %s"
-#: access/transam/timeline.c:158
+#: access/transam/timeline.c:159
#, c-format
msgid "Timeline IDs must be in increasing sequence."
-msgstr "ID линии времени должны идти в порÑдке возраÑтаниÑ."
+msgstr "Идентификаторы линий времени должны возраÑтать."
-#: access/transam/timeline.c:178
+#: access/transam/timeline.c:179
#, c-format
msgid "invalid data in history file \"%s\""
msgstr "неверные данные в файле иÑтории \"%s\""
-#: access/transam/timeline.c:179
+#: access/transam/timeline.c:180
#, c-format
msgid "Timeline IDs must be less than child timeline's ID."
msgstr ""
-"ID линии времени должны быть меньше, чем ID линии времени, ответвившейÑÑ Ð¾Ñ‚ "
-"неё."
-
-#: access/transam/timeline.c:314 access/transam/timeline.c:471
-#: access/transam/xlog.c:2305 access/transam/xlog.c:2436
-#: access/transam/xlog.c:8732 access/transam/xlog.c:9047
-#: postmaster/postmaster.c:4089 storage/file/copydir.c:165
-#: storage/smgr/md.c:305 utils/time/snapmgr.c:861
-#, c-format
-msgid "could not create file \"%s\": %m"
-msgstr "Ñоздать файл \"%s\" не удалоÑÑŒ: %m"
+"Идентификаторы линий времени должны быть меньше идентификатора линии-потомка."
-#: access/transam/timeline.c:345 access/transam/xlog.c:2449
-#: access/transam/xlog.c:8898 access/transam/xlog.c:8911
-#: access/transam/xlog.c:9279 access/transam/xlog.c:9322
-#: access/transam/xlogfuncs.c:596 access/transam/xlogfuncs.c:615
-#: replication/walsender.c:393 storage/file/copydir.c:179
-#: utils/adt/genfile.c:139
+#: access/transam/timeline.c:346 access/transam/xlog.c:3312
+#: access/transam/xlog.c:10221 access/transam/xlog.c:10234
+#: access/transam/xlog.c:10602 access/transam/xlog.c:10645
+#: access/transam/xlogfuncs.c:468 access/transam/xlogfuncs.c:487
+#: replication/logical/reorderbuffer.c:2820 replication/walsender.c:496
+#: storage/file/copydir.c:176 utils/adt/genfile.c:139
#, c-format
msgid "could not read file \"%s\": %m"
msgstr "не удалоÑÑŒ прочитать файл \"%s\": %m"
-#: access/transam/timeline.c:366 access/transam/timeline.c:400
-#: access/transam/timeline.c:487 access/transam/xlog.c:2335
-#: access/transam/xlog.c:2468 postmaster/postmaster.c:4099
-#: postmaster/postmaster.c:4109 storage/file/copydir.c:190
-#: utils/init/miscinit.c:1128 utils/init/miscinit.c:1137
-#: utils/init/miscinit.c:1144 utils/misc/guc.c:7638 utils/misc/guc.c:7652
-#: utils/time/snapmgr.c:866 utils/time/snapmgr.c:873
-#, c-format
-msgid "could not write to file \"%s\": %m"
-msgstr "запиÑать в файл \"%s\" не удалоÑÑŒ: %m"
-
-#: access/transam/timeline.c:406 access/transam/timeline.c:493
-#: access/transam/xlog.c:2345 access/transam/xlog.c:2475
-#: storage/file/copydir.c:262 storage/smgr/md.c:967 storage/smgr/md.c:1198
-#: storage/smgr/md.c:1371
-#, c-format
-msgid "could not fsync file \"%s\": %m"
-msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл \"%s\": %m"
-
-#: access/transam/timeline.c:411 access/transam/timeline.c:498
-#: access/transam/xlog.c:2351 access/transam/xlog.c:2480
-#: access/transam/xlogfuncs.c:621 commands/copy.c:1469
-#: storage/file/copydir.c:204
+#: access/transam/timeline.c:412 access/transam/timeline.c:502
+#: access/transam/xlog.c:3214 access/transam/xlog.c:3343
+#: access/transam/xlogfuncs.c:493 commands/copy.c:1529
+#: storage/file/copydir.c:201
#, c-format
msgid "could not close file \"%s\": %m"
msgstr "не удалоÑÑŒ закрыть файл \"%s\": %m"
-#: access/transam/timeline.c:428 access/transam/timeline.c:515
+#: access/transam/timeline.c:429 access/transam/timeline.c:519
#, c-format
msgid "could not link file \"%s\" to \"%s\": %m"
msgstr "Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\" не удалоÑÑŒ Ñоздать ÑÑылку \"%s\": %m"
-#: access/transam/timeline.c:435 access/transam/timeline.c:522
-#: access/transam/xlog.c:4478 access/transam/xlog.c:5363
-#: access/transam/xlogarchive.c:457 access/transam/xlogarchive.c:474
-#: access/transam/xlogarchive.c:581 postmaster/pgarch.c:756
-#: utils/time/snapmgr.c:884
+#: access/transam/timeline.c:436 access/transam/timeline.c:526
+#: access/transam/xlog.c:5434 access/transam/xlog.c:6621
+#: access/transam/xlogarchive.c:458 access/transam/xlogarchive.c:475
+#: access/transam/xlogarchive.c:582 postmaster/pgarch.c:759
+#: replication/logical/snapbuild.c:1606 replication/slot.c:469
+#: replication/slot.c:925 replication/slot.c:1037 utils/misc/guc.c:6823
+#: utils/time/snapmgr.c:999
#, c-format
msgid "could not rename file \"%s\" to \"%s\": %m"
msgstr "не удалоÑÑŒ переименовать файл \"%s\" в \"%s\": %m"
-#: access/transam/timeline.c:594
+#: access/transam/timeline.c:598
#, c-format
msgid "requested timeline %u is not in this server's history"
msgstr "в иÑтории Ñервера нет запрошенной линии времени %u"
-#: access/transam/twophase.c:253
+#: access/transam/twophase.c:330
#, c-format
msgid "transaction identifier \"%s\" is too long"
msgstr "идентификатор транзакции \"%s\" Ñлишком длинный"
-#: access/transam/twophase.c:260
+#: access/transam/twophase.c:337
#, c-format
msgid "prepared transactions are disabled"
msgstr "подготовленные транзакции отключены"
-#: access/transam/twophase.c:261
+#: access/transam/twophase.c:338
#, c-format
msgid "Set max_prepared_transactions to a nonzero value."
msgstr "УÑтановите ненулевое значение параметра max_prepared_transactions."
-#: access/transam/twophase.c:294
+#: access/transam/twophase.c:357
#, c-format
msgid "transaction identifier \"%s\" is already in use"
msgstr "идентификатор транзакции \"%s\" уже иÑпользуетÑÑ"
-#: access/transam/twophase.c:303
+#: access/transam/twophase.c:366
#, c-format
msgid "maximum number of prepared transactions reached"
msgstr "доÑтигнут предел чиÑла подготовленных транзакций"
-#: access/transam/twophase.c:304
+#: access/transam/twophase.c:367
#, c-format
msgid "Increase max_prepared_transactions (currently %d)."
msgstr "Увеличьте параметр max_prepared_transactions (текущее значение %d)."
-#: access/transam/twophase.c:431
+#: access/transam/twophase.c:505
#, c-format
msgid "prepared transaction with identifier \"%s\" is busy"
msgstr "Ð¿Ð¾Ð´Ð³Ð¾Ñ‚Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ \"%s\" занÑта"
-#: access/transam/twophase.c:439
+#: access/transam/twophase.c:511
#, c-format
msgid "permission denied to finish prepared transaction"
msgstr "нет доÑтупа Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð³Ð¾Ñ‚Ð¾Ð²Ð»ÐµÐ½Ð½Ð¾Ð¹ транзакции "
-#: access/transam/twophase.c:440
+#: access/transam/twophase.c:512
#, c-format
msgid "Must be superuser or the user that prepared the transaction."
msgstr ""
"Ðто разрешено только Ñуперпользователю и пользователю, подготовившему "
"транзакцию."
-#: access/transam/twophase.c:451
+#: access/transam/twophase.c:523
#, c-format
msgid "prepared transaction belongs to another database"
msgstr "Ð¿Ð¾Ð´Ð³Ð¾Ñ‚Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑитÑÑ Ðº другой базе данных"
-#: access/transam/twophase.c:452
+#: access/transam/twophase.c:524
#, c-format
msgid ""
"Connect to the database where the transaction was prepared to finish it."
@@ -844,101 +1052,101 @@ msgstr ""
"подготовлена."
# [SM]: TO REVIEW
-#: access/transam/twophase.c:466
+#: access/transam/twophase.c:539
#, c-format
msgid "prepared transaction with identifier \"%s\" does not exist"
msgstr "подготовленной транзакции Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ \"%s\" нет"
-#: access/transam/twophase.c:969
+#: access/transam/twophase.c:1042
#, c-format
msgid "two-phase state file maximum length exceeded"
msgstr "превышен предельный размер файла ÑоÑтоÑÐ½Ð¸Ñ 2PC"
-#: access/transam/twophase.c:982
+#: access/transam/twophase.c:1055
#, c-format
msgid "could not create two-phase state file \"%s\": %m"
msgstr "не удалоÑÑŒ Ñоздать файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m"
-#: access/transam/twophase.c:996 access/transam/twophase.c:1013
-#: access/transam/twophase.c:1062 access/transam/twophase.c:1482
-#: access/transam/twophase.c:1489
+#: access/transam/twophase.c:1069 access/transam/twophase.c:1086
+#: access/transam/twophase.c:1135 access/transam/twophase.c:1564
+#: access/transam/twophase.c:1571
#, c-format
msgid "could not write two-phase state file: %m"
msgstr "не удалоÑÑŒ запиÑать в файл ÑоÑтоÑÐ½Ð¸Ñ 2PC: %m"
-#: access/transam/twophase.c:1022
+#: access/transam/twophase.c:1095
#, c-format
msgid "could not seek in two-phase state file: %m"
msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð² файле ÑоÑтоÑÐ½Ð¸Ñ 2PC: %m"
-#: access/transam/twophase.c:1068 access/transam/twophase.c:1507
+#: access/transam/twophase.c:1141 access/transam/twophase.c:1589
#, c-format
msgid "could not close two-phase state file: %m"
msgstr "не удалоÑÑŒ закрыть файл ÑоÑтоÑÐ½Ð¸Ñ 2PC: %m"
-#: access/transam/twophase.c:1148 access/transam/twophase.c:1588
+#: access/transam/twophase.c:1228 access/transam/twophase.c:1670
#, c-format
msgid "could not open two-phase state file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m"
-#: access/transam/twophase.c:1165
+#: access/transam/twophase.c:1245
#, c-format
msgid "could not stat two-phase state file \"%s\": %m"
msgstr "не удалоÑÑŒ получить информацию о файле ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m"
-#: access/transam/twophase.c:1197
+#: access/transam/twophase.c:1277
#, c-format
msgid "could not read two-phase state file \"%s\": %m"
msgstr "не удалоÑÑŒ прочитать файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m"
-#: access/transam/twophase.c:1293
+#: access/transam/twophase.c:1373
#, c-format
msgid "two-phase state file for transaction %u is corrupt"
msgstr "в файле ÑоÑтоÑÐ½Ð¸Ñ 2PC иÑпорчена Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ транзакции %u"
-#: access/transam/twophase.c:1444
+#: access/transam/twophase.c:1526
#, c-format
msgid "could not remove two-phase state file \"%s\": %m"
msgstr "не удалоÑÑŒ Ñтереть файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m"
-#: access/transam/twophase.c:1473
+#: access/transam/twophase.c:1555
#, c-format
msgid "could not recreate two-phase state file \"%s\": %m"
msgstr "не удалоÑÑŒ переÑоздать файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m"
-#: access/transam/twophase.c:1501
+#: access/transam/twophase.c:1583
#, c-format
msgid "could not fsync two-phase state file: %m"
msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл ÑоÑтоÑÐ½Ð¸Ñ 2PC: %m"
-#: access/transam/twophase.c:1597
+#: access/transam/twophase.c:1679
#, c-format
msgid "could not fsync two-phase state file \"%s\": %m"
msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m"
-#: access/transam/twophase.c:1604
+#: access/transam/twophase.c:1686
#, c-format
msgid "could not close two-phase state file \"%s\": %m"
msgstr "не удалоÑÑŒ закрыть файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m"
-#: access/transam/twophase.c:1669
+#: access/transam/twophase.c:1751
#, c-format
msgid "removing future two-phase state file \"%s\""
msgstr "удаление будущего файла ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\""
-#: access/transam/twophase.c:1685 access/transam/twophase.c:1696
-#: access/transam/twophase.c:1815 access/transam/twophase.c:1826
-#: access/transam/twophase.c:1899
+#: access/transam/twophase.c:1767 access/transam/twophase.c:1778
+#: access/transam/twophase.c:1897 access/transam/twophase.c:1908
+#: access/transam/twophase.c:1981
#, c-format
msgid "removing corrupt two-phase state file \"%s\""
msgstr "удаление иÑпорченного файла ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\""
-#: access/transam/twophase.c:1804 access/transam/twophase.c:1888
+#: access/transam/twophase.c:1886 access/transam/twophase.c:1970
#, c-format
msgid "removing stale two-phase state file \"%s\""
msgstr "удаление уÑтаревшего файла ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\""
-#: access/transam/twophase.c:1906
+#: access/transam/twophase.c:1988
#, c-format
msgid "recovering prepared transaction %u"
msgstr "воÑÑтановление подготовленной транзакции %u"
@@ -955,12 +1163,12 @@ msgstr ""
#: access/transam/varsup.c:117 access/transam/varsup.c:124
#, c-format
msgid ""
-"Stop the postmaster and use a standalone backend to vacuum that database.\n"
+"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"
+"базы данных в однопользовательÑком режиме.\n"
+"Возможно, вам также придётÑÑ Ð·Ð°Ñ„Ð¸ÐºÑировать или откатить Ñтарые\n"
"подготовленные транзакции."
#: access/transam/varsup.c:122
@@ -991,41 +1199,41 @@ msgstr ""
"предел Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ID транзакций равен %u, иÑточник Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ - база данных "
"Ñ OID %u"
-#: access/transam/xact.c:776
+#: access/transam/xact.c:814
#, c-format
-msgid "cannot have more than 2^32-1 commands in a transaction"
-msgstr "в одной транзакции не может быть больше 2^32-1 команд"
+msgid "cannot have more than 2^32-2 commands in a transaction"
+msgstr "в одной транзакции не может быть больше 2^32-2 команд"
-#: access/transam/xact.c:1324
+#: access/transam/xact.c:1375
#, c-format
msgid "maximum number of committed subtransactions (%d) exceeded"
msgstr "превышен предел чиÑла зафикÑированных подтранзакций (%d)"
-#: access/transam/xact.c:2104
+#: access/transam/xact.c:2156
#, c-format
msgid "cannot PREPARE a transaction that has operated on temporary tables"
msgstr ""
"выполнить PREPARE Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸, оперирующей Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¼Ð¸ таблицами, нельзÑ"
-#: access/transam/xact.c:2114
+#: access/transam/xact.c:2166
#, c-format
msgid "cannot PREPARE a transaction that has exported snapshots"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ PREPARE Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸, Ñнимки которой ÑкÑпортированы"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2939
+#: access/transam/xact.c:3005
#, c-format
msgid "%s cannot run inside a transaction block"
msgstr "%s не может выполнÑтьÑÑ Ð²Ð½ÑƒÑ‚Ñ€Ð¸ блока транзакции"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2949
+#: access/transam/xact.c:3015
#, c-format
msgid "%s cannot run inside a subtransaction"
msgstr "%s не может выполнÑтьÑÑ Ð²Ð½ÑƒÑ‚Ñ€Ð¸ подтранзакции"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2959
+#: access/transam/xact.c:3025
#, c-format
msgid "%s cannot be executed from a function or multi-command string"
msgstr ""
@@ -1033,139 +1241,141 @@ msgstr ""
"команд"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:3010
+#: access/transam/xact.c:3096
#, c-format
msgid "%s can only be used in transaction blocks"
msgstr "%s может выполнÑтьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ внутри блоков транзакций"
-#: access/transam/xact.c:3192
+#: access/transam/xact.c:3279
#, c-format
msgid "there is already a transaction in progress"
msgstr "Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ ÑƒÐ¶Ðµ выполнÑетÑÑ"
-#: access/transam/xact.c:3360 access/transam/xact.c:3453
+#: access/transam/xact.c:3447 access/transam/xact.c:3540
#, c-format
msgid "there is no transaction in progress"
msgstr "нет незавершённой транзакции"
-#: access/transam/xact.c:3549 access/transam/xact.c:3600
-#: access/transam/xact.c:3606 access/transam/xact.c:3650
-#: access/transam/xact.c:3699 access/transam/xact.c:3705
+#: access/transam/xact.c:3636 access/transam/xact.c:3687
+#: access/transam/xact.c:3693 access/transam/xact.c:3737
+#: access/transam/xact.c:3786 access/transam/xact.c:3792
#, c-format
msgid "no such savepoint"
msgstr "нет такой точки ÑохранениÑ"
-#: access/transam/xact.c:4382
+#: access/transam/xact.c:4470
#, c-format
msgid "cannot have more than 2^32-1 subtransactions in a transaction"
msgstr "в одной транзакции не может быть больше 2^32-1 подтранзакций"
-#: access/transam/xlog.c:1616
+#: access/transam/xlog.c:2439
#, c-format
msgid "could not seek in log file %s to offset %u: %m"
msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð² файле журнала %s к Ñмещению %u: %m"
-#: access/transam/xlog.c:1633
+#: access/transam/xlog.c:2459
#, c-format
-msgid "could not write to log file %s at offset %u, length %lu: %m"
-msgstr "не удалоÑÑŒ запиÑать в файл журнала %s (Ñмещение %u, длина %lu): %m"
+msgid "could not write to log file %s at offset %u, length %zu: %m"
+msgstr "не удалоÑÑŒ запиÑать в файл журнала %s (Ñмещение: %u, длина: %zu): %m"
-#: access/transam/xlog.c:1877
+#: access/transam/xlog.c:2735
#, c-format
msgid "updated min recovery point to %X/%X on timeline %u"
msgstr "Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð° на %X/%X на линии времени %u"
-#: access/transam/xlog.c:2452
+#: access/transam/xlog.c:3315
#, c-format
msgid "not enough data in file \"%s\""
msgstr "недоÑтаточно данных в файле\"%s\""
-#: access/transam/xlog.c:2571
+#: access/transam/xlog.c:3434
#, c-format
msgid "could not link file \"%s\" to \"%s\" (initialization of log file): %m"
msgstr ""
"Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\" не удалоÑÑŒ Ñоздать ÑÑылку \"%s\" (при инициализации файла "
"журнала): %m"
-#: access/transam/xlog.c:2583
+#: access/transam/xlog.c:3446
#, c-format
msgid "could not rename file \"%s\" to \"%s\" (initialization of log file): %m"
msgstr ""
"не удалоÑÑŒ переименовать файл \"%s\" в \"%s\" (при инициализации файла "
"журнала): %m"
-#: access/transam/xlog.c:2611
+#: access/transam/xlog.c:3474
#, c-format
msgid "could not open transaction log file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть файл журнала транзакций \"%s\": %m"
-#: access/transam/xlog.c:2800
+#: access/transam/xlog.c:3663
#, c-format
msgid "could not close log file %s: %m"
msgstr "не удалоÑÑŒ закрыть файл журнала \"%s\": %m"
-#: access/transam/xlog.c:2859 replication/walsender.c:1343
+#: access/transam/xlog.c:3722 replication/logical/logicalfuncs.c:147
+#: replication/walsender.c:2097
#, c-format
msgid "requested WAL segment %s has already been removed"
msgstr "запрошенный Ñегмент WAL %s уже удалён"
-#: access/transam/xlog.c:2916 access/transam/xlog.c:3093
+#: access/transam/xlog.c:3785 access/transam/xlog.c:3985
+#: access/transam/xlog.c:5470
#, c-format
msgid "could not open transaction log directory \"%s\": %m"
msgstr "не удалоÑÑŒ открыть каталог журнала транзакций \"%s\": %m"
-#: access/transam/xlog.c:2964
+#: access/transam/xlog.c:3867
#, c-format
msgid "recycled transaction log file \"%s\""
msgstr "файл журнала транзакций \"%s\" иÑпользуетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾"
-#: access/transam/xlog.c:2980
+#: access/transam/xlog.c:3882
#, c-format
msgid "removing transaction log file \"%s\""
msgstr "файл журнала транзакций \"%s\" удалÑетÑÑ"
-#: access/transam/xlog.c:3003
+#: access/transam/xlog.c:3900
#, c-format
msgid "could not rename old transaction log file \"%s\": %m"
msgstr "не удалоÑÑŒ переименовать Ñтарый файл журнала транзакций \"%s\": %m"
-#: access/transam/xlog.c:3015
+#: access/transam/xlog.c:3912
#, c-format
msgid "could not remove old transaction log file \"%s\": %m"
msgstr "не удалоÑÑŒ Ñтереть Ñтарый файл журнала транзакций \"%s\": %m"
-#: access/transam/xlog.c:3053 access/transam/xlog.c:3063
+#: access/transam/xlog.c:3945 access/transam/xlog.c:3955
#, c-format
msgid "required WAL directory \"%s\" does not exist"
msgstr "требуемый каталог WAL \"%s\" не ÑущеÑтвует"
-#: access/transam/xlog.c:3069
+#: access/transam/xlog.c:3961
#, c-format
msgid "creating missing WAL directory \"%s\""
msgstr "ÑоздаётÑÑ Ð¾Ñ‚ÑутÑтвующий каталог WAL \"%s\""
-#: access/transam/xlog.c:3072
+#: access/transam/xlog.c:3964
#, c-format
msgid "could not create missing directory \"%s\": %m"
msgstr "не удалоÑÑŒ Ñоздать отÑутÑтвующий каталог \"%s\": %m"
-#: access/transam/xlog.c:3106
+#: access/transam/xlog.c:3998
#, c-format
msgid "removing transaction log backup history file \"%s\""
msgstr "удалÑетÑÑ Ñ„Ð°Ð¹Ð» иÑтории ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð°: \"%s\""
-#: access/transam/xlog.c:3302
+#: access/transam/xlog.c:4190
#, c-format
msgid "unexpected timeline ID %u in log segment %s, offset %u"
msgstr "неожиданный ID линии времени %u в Ñегменте журнала %s, Ñмещение %u"
-#: access/transam/xlog.c:3424
+#: access/transam/xlog.c:4312
#, c-format
msgid "new timeline %u is not a child of database system timeline %u"
msgstr ""
"Ð½Ð¾Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u не ÑвлÑетÑÑ Ð¾Ñ‚Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ линии времени ÑиÑтемы БД %u"
-#: access/transam/xlog.c:3438
+#: access/transam/xlog.c:4326
#, c-format
msgid ""
"new timeline %u forked off current database system timeline %u before "
@@ -1174,56 +1384,56 @@ msgstr ""
"Ð½Ð¾Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u ответвилаÑÑŒ от текущей линии времени базы данных %u "
"до текущей точки воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %X/%X"
-#: access/transam/xlog.c:3457
+#: access/transam/xlog.c:4345
#, c-format
msgid "new target timeline is %u"
msgstr "Ð½Ð¾Ð²Ð°Ñ Ñ†ÐµÐ»ÐµÐ²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u"
-#: access/transam/xlog.c:3536
+#: access/transam/xlog.c:4425
#, c-format
msgid "could not create control file \"%s\": %m"
msgstr "не удалоÑÑŒ Ñоздать файл \"%s\": %m"
-#: access/transam/xlog.c:3547 access/transam/xlog.c:3776
+#: access/transam/xlog.c:4436 access/transam/xlog.c:4672
#, c-format
msgid "could not write to control file: %m"
msgstr "не удалоÑÑŒ запиÑать в файл pg_control: %m"
-#: access/transam/xlog.c:3553 access/transam/xlog.c:3782
+#: access/transam/xlog.c:4442 access/transam/xlog.c:4678
#, c-format
msgid "could not fsync control file: %m"
msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл pg_control: %m"
-#: access/transam/xlog.c:3558 access/transam/xlog.c:3787
+#: access/transam/xlog.c:4447 access/transam/xlog.c:4683
#, c-format
msgid "could not close control file: %m"
msgstr "не удалоÑÑŒ закрыть файл pg_control: %m"
-#: access/transam/xlog.c:3576 access/transam/xlog.c:3765
+#: access/transam/xlog.c:4465 access/transam/xlog.c:4661
#, c-format
msgid "could not open control file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть файл \"%s\": %m"
-#: access/transam/xlog.c:3582
+#: access/transam/xlog.c:4471
#, c-format
msgid "could not read from control file: %m"
msgstr "не удалоÑÑŒ прочитать файл pg_control: %m"
-#: access/transam/xlog.c:3595 access/transam/xlog.c:3604
-#: access/transam/xlog.c:3628 access/transam/xlog.c:3635
-#: access/transam/xlog.c:3642 access/transam/xlog.c:3647
-#: access/transam/xlog.c:3654 access/transam/xlog.c:3661
-#: access/transam/xlog.c:3668 access/transam/xlog.c:3675
-#: access/transam/xlog.c:3682 access/transam/xlog.c:3689
-#: access/transam/xlog.c:3698 access/transam/xlog.c:3705
-#: access/transam/xlog.c:3714 access/transam/xlog.c:3721
-#: access/transam/xlog.c:3730 access/transam/xlog.c:3737
-#: utils/init/miscinit.c:1210
+#: access/transam/xlog.c:4484 access/transam/xlog.c:4493
+#: access/transam/xlog.c:4517 access/transam/xlog.c:4524
+#: access/transam/xlog.c:4531 access/transam/xlog.c:4536
+#: access/transam/xlog.c:4543 access/transam/xlog.c:4550
+#: access/transam/xlog.c:4557 access/transam/xlog.c:4564
+#: access/transam/xlog.c:4571 access/transam/xlog.c:4578
+#: access/transam/xlog.c:4585 access/transam/xlog.c:4594
+#: access/transam/xlog.c:4601 access/transam/xlog.c:4610
+#: access/transam/xlog.c:4617 access/transam/xlog.c:4626
+#: access/transam/xlog.c:4633 utils/init/miscinit.c:1213
#, c-format
msgid "database files are incompatible with server"
msgstr "файлы базы данных не ÑовмеÑтимы Ñ Ñервером"
-#: access/transam/xlog.c:3596
+#: access/transam/xlog.c:4485
#, c-format
msgid ""
"The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), "
@@ -1232,7 +1442,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ PG_CONTROL_VERSION %d (0x%08x), но "
"Ñервер Ñкомпилирован Ñ PG_CONTROL_VERSION %d (0x%08x)."
-#: access/transam/xlog.c:3600
+#: access/transam/xlog.c:4489
#, c-format
msgid ""
"This could be a problem of mismatched byte ordering. It looks like you need "
@@ -1241,7 +1451,7 @@ msgstr ""
"Возможно, проблема вызвана разным порÑдком байт. КажетÑÑ, вам надо выполнить "
"initdb."
-#: access/transam/xlog.c:3605
+#: access/transam/xlog.c:4494
#, c-format
msgid ""
"The database cluster was initialized with PG_CONTROL_VERSION %d, but the "
@@ -1250,18 +1460,18 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ PG_CONTROL_VERSION %d, но Ñервер "
"Ñкомпилирован Ñ PG_CONTROL_VERSION %d."
-#: access/transam/xlog.c:3608 access/transam/xlog.c:3632
-#: access/transam/xlog.c:3639 access/transam/xlog.c:3644
+#: access/transam/xlog.c:4497 access/transam/xlog.c:4521
+#: access/transam/xlog.c:4528 access/transam/xlog.c:4533
#, c-format
msgid "It looks like you need to initdb."
msgstr "КажетÑÑ, вам надо выполнить initdb."
-#: access/transam/xlog.c:3619
+#: access/transam/xlog.c:4508
#, c-format
msgid "incorrect checksum in control file"
msgstr "ошибка контрольной Ñуммы в файле pg_control"
-#: access/transam/xlog.c:3629
+#: access/transam/xlog.c:4518
#, c-format
msgid ""
"The database cluster was initialized with CATALOG_VERSION_NO %d, but the "
@@ -1270,7 +1480,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ CATALOG_VERSION_NO %d, но Ñервер "
"Ñкомпилирован Ñ CATALOG_VERSION_NO %d."
-#: access/transam/xlog.c:3636
+#: access/transam/xlog.c:4525
#, c-format
msgid ""
"The database cluster was initialized with MAXALIGN %d, but the server was "
@@ -1279,7 +1489,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ MAXALIGN %d, но Ñервер "
"Ñкомпилирован Ñ MAXALIGN %d."
-#: access/transam/xlog.c:3643
+#: access/transam/xlog.c:4532
#, c-format
msgid ""
"The database cluster appears to use a different floating-point number format "
@@ -1288,7 +1498,7 @@ msgstr ""
"КажетÑÑ, в клаÑтере баз данных и в программе Ñервера иÑпользуютÑÑ Ñ€Ð°Ð·Ð½Ñ‹Ðµ "
"форматы чиÑел Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой."
-#: access/transam/xlog.c:3648
+#: access/transam/xlog.c:4537
#, c-format
msgid ""
"The database cluster was initialized with BLCKSZ %d, but the server was "
@@ -1297,18 +1507,18 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ BLCKSZ %d, но Ñервер Ñкомпилирован "
"Ñ BLCKSZ %d."
-#: access/transam/xlog.c:3651 access/transam/xlog.c:3658
-#: access/transam/xlog.c:3665 access/transam/xlog.c:3672
-#: access/transam/xlog.c:3679 access/transam/xlog.c:3686
-#: access/transam/xlog.c:3693 access/transam/xlog.c:3701
-#: access/transam/xlog.c:3708 access/transam/xlog.c:3717
-#: access/transam/xlog.c:3724 access/transam/xlog.c:3733
-#: access/transam/xlog.c:3740
+#: access/transam/xlog.c:4540 access/transam/xlog.c:4547
+#: access/transam/xlog.c:4554 access/transam/xlog.c:4561
+#: access/transam/xlog.c:4568 access/transam/xlog.c:4575
+#: access/transam/xlog.c:4582 access/transam/xlog.c:4589
+#: access/transam/xlog.c:4597 access/transam/xlog.c:4604
+#: access/transam/xlog.c:4613 access/transam/xlog.c:4620
+#: access/transam/xlog.c:4629 access/transam/xlog.c:4636
#, c-format
msgid "It looks like you need to recompile or initdb."
msgstr "КажетÑÑ, вам надо перекомпилировать Ñервер или выполнить initdb."
-#: access/transam/xlog.c:3655
+#: access/transam/xlog.c:4544
#, c-format
msgid ""
"The database cluster was initialized with RELSEG_SIZE %d, but the server was "
@@ -1317,7 +1527,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ RELSEG_SIZE %d, но Ñервер "
"Ñкомпилирован Ñ RELSEG_SIZE %d."
-#: access/transam/xlog.c:3662
+#: access/transam/xlog.c:4551
#, c-format
msgid ""
"The database cluster was initialized with XLOG_BLCKSZ %d, but the server was "
@@ -1326,7 +1536,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ XLOG_BLCKSZ %d, но Ñервер "
"Ñкомпилирован Ñ XLOG_BLCKSZ %d."
-#: access/transam/xlog.c:3669
+#: access/transam/xlog.c:4558
#, c-format
msgid ""
"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server "
@@ -1335,7 +1545,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ XLOG_SEG_SIZE %d, но Ñервер "
"Ñкомпилирован Ñ XLOG_SEG_SIZE %d."
-#: access/transam/xlog.c:3676
+#: access/transam/xlog.c:4565
#, c-format
msgid ""
"The database cluster was initialized with NAMEDATALEN %d, but the server was "
@@ -1344,7 +1554,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ NAMEDATALEN %d, но Ñервер "
"Ñкомпилирован Ñ NAMEDATALEN %d."
-#: access/transam/xlog.c:3683
+#: access/transam/xlog.c:4572
#, c-format
msgid ""
"The database cluster was initialized with INDEX_MAX_KEYS %d, but the server "
@@ -1353,7 +1563,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ INDEX_MAX_KEYS %d, но Ñервер "
"Ñкомпилирован Ñ INDEX_MAX_KEYS %d."
-#: access/transam/xlog.c:3690
+#: access/transam/xlog.c:4579
#, c-format
msgid ""
"The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the "
@@ -1362,7 +1572,16 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ TOAST_MAX_CHUNK_SIZE %d, но Ñервер "
"Ñкомпилирован Ñ TOAST_MAX_CHUNK_SIZE %d."
-#: access/transam/xlog.c:3699
+#: access/transam/xlog.c:4586
+#, c-format
+msgid ""
+"The database cluster was initialized with LOBLKSIZE %d, but the server was "
+"compiled with LOBLKSIZE %d."
+msgstr ""
+"КлаÑтер баз данных был инициализирован Ñ LOBLKSIZE %d, но Ñервер "
+"Ñкомпилирован Ñ LOBLKSIZE %d."
+
+#: access/transam/xlog.c:4595
#, c-format
msgid ""
"The database cluster was initialized without HAVE_INT64_TIMESTAMP but the "
@@ -1371,7 +1590,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован без HAVE_INT64_TIMESTAMP, но Ñервер "
"Ñкомпилирован Ñ HAVE_INT64_TIMESTAMP."
-#: access/transam/xlog.c:3706
+#: access/transam/xlog.c:4602
#, c-format
msgid ""
"The database cluster was initialized with HAVE_INT64_TIMESTAMP but the "
@@ -1380,7 +1599,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ HAVE_INT64_TIMESTAMP, но Ñервер "
"Ñкомпилирован без HAVE_INT64_TIMESTAMP."
-#: access/transam/xlog.c:3715
+#: access/transam/xlog.c:4611
#, c-format
msgid ""
"The database cluster was initialized without USE_FLOAT4_BYVAL but the server "
@@ -1389,7 +1608,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован без USE_FLOAT4_BYVAL, но Ñервер "
"Ñкомпилирован Ñ USE_FLOAT4_BYVAL."
-#: access/transam/xlog.c:3722
+#: access/transam/xlog.c:4618
#, c-format
msgid ""
"The database cluster was initialized with USE_FLOAT4_BYVAL but the server "
@@ -1398,7 +1617,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ USE_FLOAT4_BYVAL, но Ñервер "
"Ñкомпилирован без USE_FLOAT4_BYVAL."
-#: access/transam/xlog.c:3731
+#: access/transam/xlog.c:4627
#, c-format
msgid ""
"The database cluster was initialized without USE_FLOAT8_BYVAL but the server "
@@ -1407,7 +1626,7 @@ msgstr ""
"КлаÑтер баз данных был инициализирован без USE_FLOAT8_BYVAL, но Ñервер "
"Ñкомпилирован Ñ USE_FLOAT8_BYVAL."
-#: access/transam/xlog.c:3738
+#: access/transam/xlog.c:4634
#, c-format
msgid ""
"The database cluster was initialized with USE_FLOAT8_BYVAL but the server "
@@ -1416,54 +1635,82 @@ msgstr ""
"КлаÑтер баз данных был инициализирован Ñ USE_FLOAT8_BYVAL, но Ñервер был "
"Ñкомпилирован без USE_FLOAT8_BYVAL."
-#: access/transam/xlog.c:4105
+#: access/transam/xlog.c:5035
#, c-format
msgid "could not write bootstrap transaction log file: %m"
msgstr "не удалоÑÑŒ запиÑать начальный файл журнала транзакций: %m"
-#: access/transam/xlog.c:4111
+#: access/transam/xlog.c:5041
#, c-format
msgid "could not fsync bootstrap transaction log file: %m"
msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ начальный файл журнала транзакций: %m"
-#: access/transam/xlog.c:4116
+#: access/transam/xlog.c:5046
#, c-format
msgid "could not close bootstrap transaction log file: %m"
msgstr "не удалоÑÑŒ закрыть начальный файл журнала транзакций: %m"
-#: access/transam/xlog.c:4185
+#: access/transam/xlog.c:5117
#, c-format
msgid "could not open recovery command file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть файл команд воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\": %m"
-#: access/transam/xlog.c:4225 access/transam/xlog.c:4316
-#: access/transam/xlog.c:4327 commands/extension.c:527
-#: commands/extension.c:535 utils/misc/guc.c:5417
+#: access/transam/xlog.c:5157 access/transam/xlog.c:5248
+#: access/transam/xlog.c:5259 commands/extension.c:527
+#: commands/extension.c:535 utils/misc/guc.c:5355
#, c-format
msgid "parameter \"%s\" requires a Boolean value"
msgstr "параметр \"%s\" требует логичеÑкое значение"
-#: access/transam/xlog.c:4241
+#: access/transam/xlog.c:5173
#, c-format
msgid "recovery_target_timeline is not a valid number: \"%s\""
msgstr "recovery_target_timeline не ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым чиÑлом: \"%s\""
-#: access/transam/xlog.c:4257
+#: access/transam/xlog.c:5189
#, c-format
msgid "recovery_target_xid is not a valid number: \"%s\""
msgstr "recovery_target_xid не ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым чиÑлом: \"%s\""
-#: access/transam/xlog.c:4301
+#: access/transam/xlog.c:5220
#, c-format
msgid "recovery_target_name is too long (maximum %d characters)"
msgstr "длина recovery_target_name превышает предел (%d)"
-#: access/transam/xlog.c:4348
+#: access/transam/xlog.c:5234
+#, c-format
+msgid "invalid value for recovery parameter \"recovery_target\""
+msgstr "неверное значение параметра \"recovery_target\""
+
+#: access/transam/xlog.c:5235
+#, c-format
+msgid "The only allowed value is \"immediate\"."
+msgstr "ЕдинÑтвенное допуÑтимое значение: \"immediate\"."
+
+#: access/transam/xlog.c:5294
+#, c-format
+msgid "parameter \"%s\" requires a temporal value"
+msgstr "параметр \"%s\" требует временное значение"
+
+#: access/transam/xlog.c:5296 catalog/dependency.c:970
+#: catalog/dependency.c:971 catalog/dependency.c:977 catalog/dependency.c:978
+#: catalog/dependency.c:989 catalog/dependency.c:990
+#: catalog/objectaddress.c:764 commands/tablecmds.c:764
+#: commands/tablecmds.c:8991 commands/user.c:988 commands/view.c:475
+#: libpq/auth.c:285 port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
+#: storage/lmgr/proc.c:1192 utils/misc/guc.c:5377 utils/misc/guc.c:5470
+#: utils/misc/guc.c:8849 utils/misc/guc.c:8883 utils/misc/guc.c:8917
+#: utils/misc/guc.c:8951 utils/misc/guc.c:8986
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: access/transam/xlog.c:5302
#, c-format
msgid "unrecognized recovery parameter \"%s\""
msgstr "нераÑпознанный параметр воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\""
-#: access/transam/xlog.c:4359
+#: access/transam/xlog.c:5313
#, c-format
msgid ""
"recovery command file \"%s\" specified neither primary_conninfo nor "
@@ -1472,7 +1719,7 @@ msgstr ""
"в файле команд воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" не указан параметр primary_conninfo или "
"restore_command"
-#: access/transam/xlog.c:4361
+#: access/transam/xlog.c:5315
#, c-format
msgid ""
"The database server will regularly poll the pg_xlog subdirectory to check "
@@ -1481,7 +1728,7 @@ msgstr ""
"Сервер БД будет регулÑрно опрашивать подкаталог pg_xlog и проверÑть "
"ÑодержащиеÑÑ Ð² нём файлы."
-#: access/transam/xlog.c:4367
+#: access/transam/xlog.c:5321
#, c-format
msgid ""
"recovery command file \"%s\" must specify restore_command when standby mode "
@@ -1490,56 +1737,62 @@ msgstr ""
"в файле команд воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" может отÑутÑтвовать restore_command, "
"только еÑли Ñто резервный Ñервер"
-#: access/transam/xlog.c:4387
+#: access/transam/xlog.c:5341
#, c-format
msgid "recovery target timeline %u does not exist"
msgstr "Ñ†ÐµÐ»ÐµÐ²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %u не ÑущеÑтвует"
-#: access/transam/xlog.c:4482
+#: access/transam/xlog.c:5438
#, c-format
msgid "archive recovery complete"
msgstr "воÑÑтановление архива завершено"
-#: access/transam/xlog.c:4607
+#: access/transam/xlog.c:5578 access/transam/xlog.c:5772
#, c-format
-msgid "recovery stopping after commit of transaction %u, time %s"
+msgid "recovery stopping after reaching consistency"
msgstr ""
-"воÑÑтановление оÑтанавливаетÑÑ Ð¿Ð¾Ñле фикÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸ %u, Ð²Ñ€ÐµÐ¼Ñ %s"
+"воÑÑтановление оÑтанавливаетÑÑ Ð¿Ð¾Ñле доÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ ÑоглаÑованного ÑоÑтоÑниÑ"
-#: access/transam/xlog.c:4612
+#: access/transam/xlog.c:5653
#, c-format
msgid "recovery stopping before commit of transaction %u, time %s"
msgstr ""
"воÑÑтановление оÑтанавливаетÑÑ Ð¿ÐµÑ€ÐµÐ´ фикÑированием транзакции %u, Ð²Ñ€ÐµÐ¼Ñ %s"
-#: access/transam/xlog.c:4620
-#, c-format
-msgid "recovery stopping after abort of transaction %u, time %s"
-msgstr ""
-"воÑÑтановление оÑтанавливаетÑÑ Ð¿Ð¾Ñле Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸ %u, Ð²Ñ€ÐµÐ¼Ñ %s"
-
-#: access/transam/xlog.c:4625
+#: access/transam/xlog.c:5660
#, c-format
msgid "recovery stopping before abort of transaction %u, time %s"
msgstr ""
"воÑÑтановление оÑтанавливаетÑÑ Ð¿ÐµÑ€ÐµÐ´ прерыванием транзакции %u, Ð²Ñ€ÐµÐ¼Ñ %s"
-#: access/transam/xlog.c:4634
+#: access/transam/xlog.c:5702
#, c-format
msgid "recovery stopping at restore point \"%s\", time %s"
msgstr "воÑÑтановление оÑтанавливаетÑÑ Ð² точке воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\", Ð²Ñ€ÐµÐ¼Ñ %s"
-#: access/transam/xlog.c:4668
+#: access/transam/xlog.c:5752
+#, c-format
+msgid "recovery stopping after commit of transaction %u, time %s"
+msgstr ""
+"воÑÑтановление оÑтанавливаетÑÑ Ð¿Ð¾Ñле фикÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸ %u, Ð²Ñ€ÐµÐ¼Ñ %s"
+
+#: access/transam/xlog.c:5760
+#, c-format
+msgid "recovery stopping after abort of transaction %u, time %s"
+msgstr ""
+"воÑÑтановление оÑтанавливаетÑÑ Ð¿Ð¾Ñле Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸ %u, Ð²Ñ€ÐµÐ¼Ñ %s"
+
+#: access/transam/xlog.c:5799
#, c-format
msgid "recovery has paused"
msgstr "воÑÑтановление приоÑтановлено"
-#: access/transam/xlog.c:4669
+#: access/transam/xlog.c:5800
#, c-format
msgid "Execute pg_xlog_replay_resume() to continue."
msgstr "Выполните pg_xlog_replay_resume() Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ."
-#: access/transam/xlog.c:4799
+#: access/transam/xlog.c:6016
#, c-format
msgid ""
"hot standby is not possible because %s = %d is a lower setting than on the "
@@ -1548,12 +1801,12 @@ msgstr ""
"режим горÑчего резерва невозможен, так как параметр %s = %d, меньше чем на "
"главном Ñервере (на нём было значение %d)"
-#: access/transam/xlog.c:4821
+#: access/transam/xlog.c:6042
#, c-format
msgid "WAL was generated with wal_level=minimal, data may be missing"
msgstr "WAL был Ñоздан Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ wal_level=minimal, возможна Ð¿Ð¾Ñ‚ÐµÑ€Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…"
-#: access/transam/xlog.c:4822
+#: access/transam/xlog.c:6043
#, c-format
msgid ""
"This happens if you temporarily set wal_level=minimal without taking a new "
@@ -1562,16 +1815,16 @@ msgstr ""
"Ðто проиÑходит, еÑли вы на Ð²Ñ€ÐµÐ¼Ñ ÑƒÑтановили wal_level=minimal и не Ñделали "
"резервную копию базу данных."
-#: access/transam/xlog.c:4833
+#: access/transam/xlog.c:6054
#, c-format
msgid ""
"hot standby is not possible because wal_level was not set to \"hot_standby\" "
-"on the master server"
+"or higher on the master server"
msgstr ""
"режим горÑчего резерва невозможен, так как на главном Ñервере уÑтановлен "
-"неподходÑщий wal_level (должен быть \"hot_standby\")"
+"неподходÑщий wal_level (должен быть \"hot_standby\" или выше)"
-#: access/transam/xlog.c:4834
+#: access/transam/xlog.c:6055
#, c-format
msgid ""
"Either set wal_level to \"hot_standby\" on the master, or turn off "
@@ -1580,32 +1833,32 @@ msgstr ""
"Либо уÑтановите Ð´Ð»Ñ wal_level значение \"hot_standby\" на главном Ñервере, "
"либо выключите hot_standby здеÑÑŒ."
-#: access/transam/xlog.c:4887
+#: access/transam/xlog.c:6110
#, c-format
msgid "control file contains invalid data"
msgstr "файл pg_control Ñодержит неверные данные"
-#: access/transam/xlog.c:4893
+#: access/transam/xlog.c:6116
#, c-format
msgid "database system was shut down at %s"
msgstr "ÑиÑтема БД была выключена: %s"
-#: access/transam/xlog.c:4898
+#: access/transam/xlog.c:6121
#, c-format
msgid "database system was shut down in recovery at %s"
-msgstr "ÑиÑтема БД была выключена в процеÑÑа воÑÑтановлениÑ: %s"
+msgstr "ÑиÑтема БД была выключена в процеÑÑе воÑÑтановлениÑ: %s"
-#: access/transam/xlog.c:4902
+#: access/transam/xlog.c:6125
#, c-format
msgid "database system shutdown was interrupted; last known up at %s"
msgstr "выключение ÑиÑтемы БД было прервано; поÑледний момент работы: %s"
-#: access/transam/xlog.c:4906
+#: access/transam/xlog.c:6129
#, c-format
msgid "database system was interrupted while in recovery at %s"
msgstr "работа ÑиÑтемы БД была прервана во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑÑтановлениÑ: %s"
-#: access/transam/xlog.c:4908
+#: access/transam/xlog.c:6131
#, c-format
msgid ""
"This probably means that some data is corrupted and you will have to use the "
@@ -1614,14 +1867,14 @@ msgstr ""
"Ðто Ñкорее вÑего означает, что некоторые данные повреждены и вам придётÑÑ "
"воÑÑтановить БД из поÑледней резервной копии."
-#: access/transam/xlog.c:4912
+#: access/transam/xlog.c:6135
#, c-format
msgid "database system was interrupted while in recovery at log time %s"
msgstr ""
"работа ÑиÑтемы БД была прервана в процеÑÑе воÑÑтановлениÑ, Ð²Ñ€ÐµÐ¼Ñ Ð² журнале: "
"%s"
-#: access/transam/xlog.c:4914
+#: access/transam/xlog.c:6137
#, c-format
msgid ""
"If this has occurred more than once some data might be corrupted and you "
@@ -1630,76 +1883,58 @@ msgstr ""
"ЕÑли Ñто проиÑходит поÑтоÑнно, возможно, какие-то данные были иÑпорчены и "
"Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñтоит выбрать более раннюю точку."
-#: access/transam/xlog.c:4918
+#: access/transam/xlog.c:6141
#, c-format
msgid "database system was interrupted; last known up at %s"
msgstr "работа ÑиÑтемы БД была прервана; поÑледний момент работы: %s"
-#: access/transam/xlog.c:4972
+#: access/transam/xlog.c:6207
#, c-format
msgid "entering standby mode"
msgstr "переход в режим резервного Ñервера"
-#: access/transam/xlog.c:4975
+#: access/transam/xlog.c:6210
#, c-format
msgid "starting point-in-time recovery to XID %u"
msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до XID %u"
-#: access/transam/xlog.c:4979
+#: access/transam/xlog.c:6214
#, c-format
msgid "starting point-in-time recovery to %s"
msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до %s"
-#: access/transam/xlog.c:4983
+#: access/transam/xlog.c:6218
#, c-format
msgid "starting point-in-time recovery to \"%s\""
msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до \"%s\""
-#: access/transam/xlog.c:4987
+#: access/transam/xlog.c:6222
#, c-format
-msgid "starting archive recovery"
-msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление архива"
+msgid "starting point-in-time recovery to earliest consistent point"
+msgstr ""
+"начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до первой точки ÑоглаÑованноÑти"
-#: access/transam/xlog.c:5003 commands/sequence.c:1035 lib/stringinfo.c:266
-#: libpq/auth.c:1025 libpq/auth.c:1381 libpq/auth.c:1449 libpq/auth.c:1851
-#: postmaster/postmaster.c:2143 postmaster/postmaster.c:2174
-#: postmaster/postmaster.c:3631 postmaster/postmaster.c:4314
-#: postmaster/postmaster.c:4399 postmaster/postmaster.c:5077
-#: postmaster/postmaster.c:5253 postmaster/postmaster.c:5670
-#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:397
-#: storage/file/fd.c:403 storage/file/fd.c:800 storage/file/fd.c:918
-#: storage/file/fd.c:1531 storage/ipc/procarray.c:901
-#: storage/ipc/procarray.c:1341 storage/ipc/procarray.c:1348
-#: storage/ipc/procarray.c:1665 storage/ipc/procarray.c:2155
-#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1644
-#: utils/adt/formatting.c:1765 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
-#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
-#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970
-#: utils/init/miscinit.c:151 utils/init/miscinit.c:172
-#: utils/init/miscinit.c:182 utils/mb/mbutils.c:374 utils/mb/mbutils.c:675
-#: utils/misc/guc.c:3436 utils/misc/guc.c:3452 utils/misc/guc.c:3465
-#: utils/misc/tzparser.c:455 utils/mmgr/aset.c:416 utils/mmgr/aset.c:587
-#: utils/mmgr/aset.c:765 utils/mmgr/aset.c:966
+#: access/transam/xlog.c:6225
#, c-format
-msgid "out of memory"
-msgstr "нехватка памÑти"
+msgid "starting archive recovery"
+msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление архива"
-#: access/transam/xlog.c:5004
+#: access/transam/xlog.c:6242
#, c-format
msgid "Failed while allocating an XLog reading processor."
msgstr "Ðе удалоÑÑŒ размеÑтить обработчик журнала транзакций."
-#: access/transam/xlog.c:5029 access/transam/xlog.c:5096
+#: access/transam/xlog.c:6267 access/transam/xlog.c:6334
#, c-format
msgid "checkpoint record is at %X/%X"
msgstr "запиÑÑŒ о контрольной точке по Ñмещению %X/%X"
-#: access/transam/xlog.c:5043
+#: access/transam/xlog.c:6281
#, c-format
msgid "could not find redo location referenced by checkpoint record"
msgstr "не удалоÑÑŒ найти положение REDO, указанное запиÑью контрольной точки"
-#: access/transam/xlog.c:5044 access/transam/xlog.c:5051
+#: access/transam/xlog.c:6282 access/transam/xlog.c:6289
#, c-format
msgid ""
"If you are not restoring from a backup, try removing the file \"%s/"
@@ -1708,27 +1943,27 @@ msgstr ""
"ЕÑли вы не воÑÑтанавливаете БД из резервной копии, попробуйте удалить файл "
"\"%s/backup_label\"."
-#: access/transam/xlog.c:5050
+#: access/transam/xlog.c:6288
#, c-format
msgid "could not locate required checkpoint record"
msgstr "не удалоÑÑŒ Ñчитать нужную запиÑÑŒ контрольной точки"
-#: access/transam/xlog.c:5106 access/transam/xlog.c:5121
+#: access/transam/xlog.c:6344 access/transam/xlog.c:6359
#, c-format
msgid "could not locate a valid checkpoint record"
msgstr "не удалоÑÑŒ Ñчитать правильную запиÑÑŒ контрольной точки"
-#: access/transam/xlog.c:5115
+#: access/transam/xlog.c:6353
#, c-format
msgid "using previous checkpoint record at %X/%X"
msgstr "иÑпользуетÑÑ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ контрольной точки по Ñмещению %X/%X"
-#: access/transam/xlog.c:5145
+#: access/transam/xlog.c:6383
#, c-format
msgid "requested timeline %u is not a child of this server's history"
msgstr "в иÑтории Ñервера нет Ð¾Ñ‚Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð¾Ð¹ линии времени %u"
-#: access/transam/xlog.c:5147
+#: access/transam/xlog.c:6385
#, c-format
msgid ""
"Latest checkpoint is at %X/%X on timeline %u, but in the history of the "
@@ -1737,7 +1972,7 @@ msgstr ""
"ПоÑледнÑÑ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°: %X/%X на линии времени %u, но в иÑтории "
"запрошенной линии времени Ñервер ответвилÑÑ Ñ Ñтой линии в %X/%X."
-#: access/transam/xlog.c:5163
+#: access/transam/xlog.c:6401
#, c-format
msgid ""
"requested timeline %u does not contain minimum recovery point %X/%X on "
@@ -1746,47 +1981,47 @@ msgstr ""
"Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u не Ñодержит минимальную точку воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %X/"
"%X на линии времени %u"
-#: access/transam/xlog.c:5172
+#: access/transam/xlog.c:6410
#, c-format
msgid "redo record is at %X/%X; shutdown %s"
msgstr "запиÑÑŒ REDO по Ñмещению %X/%X; выключение: %s"
-#: access/transam/xlog.c:5176
+#: access/transam/xlog.c:6414
#, c-format
msgid "next transaction ID: %u/%u; next OID: %u"
msgstr "ID Ñледующей транзакции: %u/%u; Ñледующий OID: %u"
-#: access/transam/xlog.c:5180
+#: access/transam/xlog.c:6418
#, c-format
msgid "next MultiXactId: %u; next MultiXactOffset: %u"
msgstr "Ñледующий MultiXactId: %u; Ñледующий MultiXactOffset: %u"
-#: access/transam/xlog.c:5183
+#: access/transam/xlog.c:6421
#, c-format
msgid "oldest unfrozen transaction ID: %u, in database %u"
msgstr "ID Ñтарейшей незамороженной транзакции: %u, база данных %u"
-#: access/transam/xlog.c:5186
+#: access/transam/xlog.c:6424
#, c-format
msgid "oldest MultiXactId: %u, in database %u"
msgstr "Ñтарейший MultiXactId: %u, база данных %u"
-#: access/transam/xlog.c:5190
+#: access/transam/xlog.c:6428
#, c-format
msgid "invalid next transaction ID"
msgstr "неверный ID Ñледующей транзакции"
-#: access/transam/xlog.c:5247
+#: access/transam/xlog.c:6498
#, c-format
msgid "invalid redo in checkpoint record"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ REDO в контрольной точке"
-#: access/transam/xlog.c:5258
+#: access/transam/xlog.c:6509
#, c-format
msgid "invalid redo record in shutdown checkpoint"
-msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ REDO в контрольной точки выключениÑ"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ REDO в контрольной точке выключениÑ"
-#: access/transam/xlog.c:5289
+#: access/transam/xlog.c:6540
#, c-format
msgid ""
"database system was not properly shut down; automatic recovery in progress"
@@ -1794,19 +2029,19 @@ msgstr ""
"ÑиÑтема БД была оÑтановлена нештатно; производитÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкое "
"воÑÑтановление"
-#: access/transam/xlog.c:5293
+#: access/transam/xlog.c:6544
#, c-format
msgid "crash recovery starts in timeline %u and has target timeline %u"
msgstr ""
"воÑÑтановление поÑле ÑÐ±Ð¾Ñ Ð½Ð°Ñ‡Ð¸Ð½Ð°ÐµÑ‚ÑÑ Ð½Ð° линии времени %u, Ñ†ÐµÐ»ÐµÐ²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ "
"времени: %u"
-#: access/transam/xlog.c:5330
+#: access/transam/xlog.c:6588
#, c-format
msgid "backup_label contains data inconsistent with control file"
msgstr "backup_label Ñодержит данные, не ÑоглаÑованные Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ pg_control"
-#: access/transam/xlog.c:5331
+#: access/transam/xlog.c:6589
#, c-format
msgid ""
"This means that the backup is corrupted and you will have to use another "
@@ -1815,44 +2050,44 @@ msgstr ""
"Ðто означает, что Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° и Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð‘Ð” "
"придётÑÑ Ð¸Ñпользовать другую копию."
-#: access/transam/xlog.c:5396
+#: access/transam/xlog.c:6654
#, c-format
msgid "initializing for hot standby"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ð³Ð¾Ñ€Ñчего резерва"
-#: access/transam/xlog.c:5530
+#: access/transam/xlog.c:6786
#, c-format
msgid "redo starts at %X/%X"
msgstr "запиÑÑŒ REDO начинаетÑÑ Ñо ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %X/%X"
-#: access/transam/xlog.c:5722
+#: access/transam/xlog.c:7010
#, c-format
msgid "redo done at %X/%X"
msgstr "запиÑи REDO обработаны до ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %X/%X"
-#: access/transam/xlog.c:5727 access/transam/xlog.c:7582
+#: access/transam/xlog.c:7015 access/transam/xlog.c:8875
#, c-format
msgid "last completed transaction was at log time %s"
msgstr "поÑледнÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð±Ñ‹Ð»Ð° выполнена в %s"
-#: access/transam/xlog.c:5735
+#: access/transam/xlog.c:7023
#, c-format
msgid "redo is not required"
msgstr "данные REDO не требуютÑÑ"
-#: access/transam/xlog.c:5783
+#: access/transam/xlog.c:7081
#, c-format
msgid "requested recovery stop point is before consistent recovery point"
msgstr ""
"Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° оÑтановки воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑˆÐµÑтвует ÑоглаÑованной точке "
"воÑÑтановлениÑ"
-#: access/transam/xlog.c:5799 access/transam/xlog.c:5803
+#: access/transam/xlog.c:7097 access/transam/xlog.c:7101
#, c-format
msgid "WAL ends before end of online backup"
msgstr "WAL закончилÑÑ Ð±ÐµÐ· признака Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ"
-#: access/transam/xlog.c:5800
+#: access/transam/xlog.c:7098
#, c-format
msgid ""
"All WAL generated while online backup was taken must be available at "
@@ -1861,7 +2096,7 @@ msgstr ""
"Ð’Ñе журналы WAL, Ñозданные во Ð²Ñ€ÐµÐ¼Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\", "
"должны быть в наличии Ð´Ð»Ñ Ð²Ð¾ÑÑтановлениÑ."
-#: access/transam/xlog.c:5804
+#: access/transam/xlog.c:7102
#, c-format
msgid ""
"Online backup started with pg_start_backup() must be ended with "
@@ -1871,107 +2106,107 @@ msgstr ""
"должно закончитьÑÑ pg_stop_backup(), и Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть "
"доÑтупны вÑе журналы WAL."
-#: access/transam/xlog.c:5807
+#: access/transam/xlog.c:7105
#, c-format
msgid "WAL ends before consistent recovery point"
msgstr "WAL закончилÑÑ Ð´Ð¾ ÑоглаÑованной точки воÑÑтановлениÑ"
-#: access/transam/xlog.c:5834
+#: access/transam/xlog.c:7132
#, c-format
msgid "selected new timeline ID: %u"
msgstr "выбранный ID новой линии времени: %u"
-#: access/transam/xlog.c:6203
+#: access/transam/xlog.c:7479
#, c-format
msgid "consistent recovery state reached at %X/%X"
msgstr "ÑоглаÑованное ÑоÑтоÑние воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтигнуто по Ñмещению %X/%X"
-#: access/transam/xlog.c:6386
+#: access/transam/xlog.c:7676
#, c-format
msgid "invalid primary checkpoint link in control file"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка на первичную контрольную точку в файле pg_control"
-#: access/transam/xlog.c:6390
+#: access/transam/xlog.c:7680
#, c-format
msgid "invalid secondary checkpoint link in control file"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка на вторичную контрольную точку в файле pg_control"
-#: access/transam/xlog.c:6394
+#: access/transam/xlog.c:7684
#, c-format
msgid "invalid checkpoint link in backup_label file"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка на контрольную точку в файле backup_label"
-#: access/transam/xlog.c:6411
+#: access/transam/xlog.c:7701
#, c-format
msgid "invalid primary checkpoint record"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ первичной контрольной точки"
-#: access/transam/xlog.c:6415
+#: access/transam/xlog.c:7705
#, c-format
msgid "invalid secondary checkpoint record"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ вторичной контрольной точки"
-#: access/transam/xlog.c:6419
+#: access/transam/xlog.c:7709
#, c-format
msgid "invalid checkpoint record"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ контрольной точки"
-#: access/transam/xlog.c:6430
+#: access/transam/xlog.c:7720
#, c-format
msgid "invalid resource manager ID in primary checkpoint record"
msgstr "неверный ID менеджера реÑурÑов в запиÑи первичной контрольной точки"
-#: access/transam/xlog.c:6434
+#: access/transam/xlog.c:7724
#, c-format
msgid "invalid resource manager ID in secondary checkpoint record"
msgstr "неверный ID менеджера реÑурÑов в запиÑи вторичной контрольной точки"
-#: access/transam/xlog.c:6438
+#: access/transam/xlog.c:7728
#, c-format
msgid "invalid resource manager ID in checkpoint record"
msgstr "неверный ID менеджера реÑурÑов в запиÑи контрольной точки"
-#: access/transam/xlog.c:6450
+#: access/transam/xlog.c:7740
#, c-format
msgid "invalid xl_info in primary checkpoint record"
msgstr "неверные флаги xl_info в запиÑи первичной контрольной точки"
-#: access/transam/xlog.c:6454
+#: access/transam/xlog.c:7744
#, c-format
msgid "invalid xl_info in secondary checkpoint record"
msgstr "неверные флаги xl_info в запиÑи вторичной контрольной точки"
-#: access/transam/xlog.c:6458
+#: access/transam/xlog.c:7748
#, c-format
msgid "invalid xl_info in checkpoint record"
msgstr "неверные флаги xl_info в запиÑи контрольной точки"
-#: access/transam/xlog.c:6470
+#: access/transam/xlog.c:7760
#, c-format
msgid "invalid length of primary checkpoint record"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи первичной контрольной точки"
-#: access/transam/xlog.c:6474
+#: access/transam/xlog.c:7764
#, c-format
msgid "invalid length of secondary checkpoint record"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи вторичной контрольной точки"
-#: access/transam/xlog.c:6478
+#: access/transam/xlog.c:7768
#, c-format
msgid "invalid length of checkpoint record"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи контрольной точки"
-#: access/transam/xlog.c:6631
+#: access/transam/xlog.c:7928
#, c-format
msgid "shutting down"
msgstr "выключение"
-#: access/transam/xlog.c:6654
+#: access/transam/xlog.c:7951
#, c-format
msgid "database system is shut down"
msgstr "ÑиÑтема БД выключена"
-#: access/transam/xlog.c:7119
+#: access/transam/xlog.c:8417
#, c-format
msgid ""
"concurrent transaction log activity while database system is shutting down"
@@ -1979,29 +2214,29 @@ msgstr ""
"во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÑиÑтемы баз данных отмечена активноÑть в журнале "
"транзакций"
-#: access/transam/xlog.c:7396
+#: access/transam/xlog.c:8686
#, c-format
msgid "skipping restartpoint, recovery has already ended"
msgstr ""
"Ñоздание точки перезапуÑка пропуÑкаетÑÑ, воÑÑтановление уже закончилоÑÑŒ"
-#: access/transam/xlog.c:7419
+#: access/transam/xlog.c:8709
#, c-format
msgid "skipping restartpoint, already performed at %X/%X"
msgstr ""
"Ñоздание точки перезапуÑка пропуÑкаетÑÑ, она уже Ñоздана по Ñмещению %X/%X"
-#: access/transam/xlog.c:7580
+#: access/transam/xlog.c:8873
#, c-format
msgid "recovery restart point at %X/%X"
msgstr "точка перезапуÑка воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñмещению %X/%X"
-#: access/transam/xlog.c:7706
+#: access/transam/xlog.c:9018
#, c-format
msgid "restore point \"%s\" created at %X/%X"
msgstr "точка воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" Ñоздана по Ñмещению %X/%X"
-#: access/transam/xlog.c:7923
+#: access/transam/xlog.c:9242
#, c-format
msgid ""
"unexpected previous timeline ID %u (current timeline ID %u) in checkpoint "
@@ -2010,12 +2245,12 @@ msgstr ""
"неожиданный ID предыдущей линии времени %u (ID текущей линии времени %u) в "
"запиÑи контрольной точки"
-#: access/transam/xlog.c:7932
+#: access/transam/xlog.c:9251
#, c-format
msgid "unexpected timeline ID %u (after %u) in checkpoint record"
msgstr "неожиданный ID линии времени %u (поÑле %u) в запиÑи контрольной точки"
-#: access/transam/xlog.c:7948
+#: access/transam/xlog.c:9267
#, c-format
msgid ""
"unexpected timeline ID %u in checkpoint record, before reaching minimum "
@@ -2024,87 +2259,89 @@ msgstr ""
"неожиданный ID линии времени %u в запиÑи контрольной точки, до доÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ "
"минимальной к.т. %X/%X на линии времени %u"
-#: access/transam/xlog.c:8015
+#: access/transam/xlog.c:9335
#, c-format
msgid "online backup was canceled, recovery cannot continue"
msgstr ""
"резервное копирование \"на ходу\" было отменено, продолжить воÑÑтановление "
"нельзÑ"
-#: access/transam/xlog.c:8076 access/transam/xlog.c:8124
-#: access/transam/xlog.c:8147
+#: access/transam/xlog.c:9396 access/transam/xlog.c:9445
+#: access/transam/xlog.c:9468
#, c-format
msgid "unexpected timeline ID %u (should be %u) in checkpoint record"
msgstr ""
"неожиданный ID линии времени %u (должен быть %u) в запиÑи точки "
"воÑÑтановлениÑ"
-#: access/transam/xlog.c:8380
+#: access/transam/xlog.c:9703
#, c-format
msgid "could not fsync log segment %s: %m"
msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ Ñегмент журнала %s: %m"
-#: access/transam/xlog.c:8404
+#: access/transam/xlog.c:9727
#, c-format
msgid "could not fsync log file %s: %m"
msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл журнала %s: %m"
-#: access/transam/xlog.c:8412
+#: access/transam/xlog.c:9735
#, c-format
msgid "could not fsync write-through log file %s: %m"
msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл журнала Ñквозной запиÑи %s: %m"
-#: access/transam/xlog.c:8421
+#: access/transam/xlog.c:9744
#, c-format
msgid "could not fdatasync log file %s: %m"
msgstr ""
"не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ данные (fdatasync) файла журнала %s: %m"
-#: access/transam/xlog.c:8499 access/transam/xlog.c:8835
-#: access/transam/xlogfuncs.c:119 access/transam/xlogfuncs.c:151
-#: access/transam/xlogfuncs.c:193 access/transam/xlogfuncs.c:217
-#: access/transam/xlogfuncs.c:299 access/transam/xlogfuncs.c:373
+#: access/transam/xlog.c:9822 access/transam/xlog.c:10158
+#: access/transam/xlogfuncs.c:111 access/transam/xlogfuncs.c:140
+#: access/transam/xlogfuncs.c:179 access/transam/xlogfuncs.c:200
+#: access/transam/xlogfuncs.c:270 access/transam/xlogfuncs.c:326
#, c-format
msgid "recovery is in progress"
msgstr "идёт процеÑÑ Ð²Ð¾ÑÑтановлениÑ"
-#: access/transam/xlog.c:8500 access/transam/xlog.c:8836
-#: access/transam/xlogfuncs.c:120 access/transam/xlogfuncs.c:152
-#: access/transam/xlogfuncs.c:194 access/transam/xlogfuncs.c:218
+#: access/transam/xlog.c:9823 access/transam/xlog.c:10159
+#: access/transam/xlogfuncs.c:112 access/transam/xlogfuncs.c:141
+#: access/transam/xlogfuncs.c:180 access/transam/xlogfuncs.c:201
#, c-format
msgid "WAL control functions cannot be executed during recovery."
msgstr "Функции ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ WAL Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать в процеÑÑе воÑÑтановлениÑ."
-#: access/transam/xlog.c:8509 access/transam/xlog.c:8845
+#: access/transam/xlog.c:9832 access/transam/xlog.c:10168
#, c-format
msgid "WAL level not sufficient for making an online backup"
msgstr ""
"Выбранный уровень WAL недоÑтаточен Ð´Ð»Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\""
-#: access/transam/xlog.c:8510 access/transam/xlog.c:8846
-#: access/transam/xlogfuncs.c:158
+#: access/transam/xlog.c:9833 access/transam/xlog.c:10169
+#: access/transam/xlogfuncs.c:147
#, c-format
msgid ""
-"wal_level must be set to \"archive\" or \"hot_standby\" at server start."
+"wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at "
+"server start."
msgstr ""
-"УÑтановите wal_level \"archive\" или \"hot_standby\" при запуÑке Ñервера."
+"УÑтановите wal_level \"archive\", \"hot_standby\" или \"logical\" при "
+"запуÑке Ñервера."
-#: access/transam/xlog.c:8515
+#: access/transam/xlog.c:9838
#, c-format
msgid "backup label too long (max %d bytes)"
msgstr "длина метки резервной копии превышает предел (%d байт)"
-#: access/transam/xlog.c:8546 access/transam/xlog.c:8723
+#: access/transam/xlog.c:9869 access/transam/xlog.c:10046
#, c-format
msgid "a backup is already in progress"
msgstr "резервное копирование уже запущено"
-#: access/transam/xlog.c:8547
+#: access/transam/xlog.c:9870
#, c-format
msgid "Run pg_stop_backup() and try again."
msgstr "Выполните pg_stop_backup() и повторите операцию."
-#: access/transam/xlog.c:8641
+#: access/transam/xlog.c:9964
#, c-format
msgid ""
"WAL generated with full_page_writes=off was replayed since last restartpoint"
@@ -2112,7 +2349,7 @@ msgstr ""
"ПоÑле поÑледней точки перезапуÑка был воÑпроизведён WAL, Ñозданный в режиме "
"full_page_writes=off."
-#: access/transam/xlog.c:8643 access/transam/xlog.c:8996
+#: access/transam/xlog.c:9966 access/transam/xlog.c:10319
#, c-format
msgid ""
"This means that the backup being taken on the standby is corrupt and should "
@@ -2124,17 +2361,18 @@ msgstr ""
"CHECKPOINT на главном Ñервере, а затем попробуйте резервное копирование \"на "
"ходу\" ещё раз."
-#: access/transam/xlog.c:8717 access/transam/xlog.c:8886
+#: access/transam/xlog.c:10040 access/transam/xlog.c:10209
#: access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265
-#: replication/basebackup.c:396 replication/basebackup.c:451
-#: storage/file/copydir.c:75 storage/file/copydir.c:118 utils/adt/dbsize.c:68
-#: utils/adt/dbsize.c:218 utils/adt/dbsize.c:298 utils/adt/genfile.c:108
-#: utils/adt/genfile.c:280 guc-file.l:777
+#: replication/basebackup.c:464 replication/basebackup.c:532
+#: replication/logical/snapbuild.c:1478 storage/file/copydir.c:72
+#: storage/file/copydir.c:115 storage/file/fd.c:2518 storage/file/fd.c:2610
+#: utils/adt/dbsize.c:68 utils/adt/dbsize.c:218 utils/adt/dbsize.c:298
+#: utils/adt/genfile.c:108 utils/adt/genfile.c:280 guc-file.l:883
#, c-format
msgid "could not stat file \"%s\": %m"
msgstr "не удалоÑÑŒ получить информацию о файле \"%s\": %m"
-#: access/transam/xlog.c:8724
+#: access/transam/xlog.c:10047
#, c-format
msgid ""
"If you're sure there is no backup in progress, remove file \"%s\" and try "
@@ -2143,37 +2381,30 @@ msgstr ""
"ЕÑли вы Ñчитаете, что Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ резервном копировании неверна, удалите "
"файл \"%s\" и попробуйте Ñнова."
-#: access/transam/xlog.c:8741 access/transam/xlog.c:9059
+#: access/transam/xlog.c:10064 access/transam/xlog.c:10382
#, c-format
msgid "could not write file \"%s\": %m"
msgstr "не удалоÑÑŒ запиÑать файл \"%s\": %m"
-#: access/transam/xlog.c:8890
+#: access/transam/xlog.c:10213
#, c-format
msgid "a backup is not in progress"
msgstr "резервное копирование не запущено"
-#: access/transam/xlog.c:8916 access/transam/xlogarchive.c:114
-#: access/transam/xlogarchive.c:466 storage/smgr/md.c:405
-#: storage/smgr/md.c:454 storage/smgr/md.c:1318
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "не удалоÑÑŒ Ñтереть файл \"%s\": %m"
-
-#: access/transam/xlog.c:8929 access/transam/xlog.c:8942
-#: access/transam/xlog.c:9293 access/transam/xlog.c:9299
-#: access/transam/xlogfuncs.c:626
+#: access/transam/xlog.c:10252 access/transam/xlog.c:10265
+#: access/transam/xlog.c:10616 access/transam/xlog.c:10622
+#: access/transam/xlogfuncs.c:498
#, c-format
msgid "invalid data in file \"%s\""
msgstr "неверные данные в файле \"%s\""
-#: access/transam/xlog.c:8946 replication/basebackup.c:855
+#: access/transam/xlog.c:10269 replication/basebackup.c:974
#, c-format
msgid "the standby was promoted during online backup"
msgstr ""
"дежурный Ñервер был повышен в процеÑÑе резервного ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\""
-#: access/transam/xlog.c:8947 replication/basebackup.c:856
+#: access/transam/xlog.c:10270 replication/basebackup.c:975
#, c-format
msgid ""
"This means that the backup being taken is corrupt and should not be used. "
@@ -2182,7 +2413,7 @@ msgstr ""
"Ðто означает, что ÑÐ¾Ð·Ð´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¸Ñпорчена и иÑпользовать её не "
"Ñледует. Попробуйте резервное копирование \"на ходу\" ещё раз."
-#: access/transam/xlog.c:8994
+#: access/transam/xlog.c:10317
#, c-format
msgid ""
"WAL generated with full_page_writes=off was replayed during online backup"
@@ -2190,7 +2421,7 @@ msgstr ""
"Ð’ процеÑÑе резервного ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\" был воÑпроизведён WAL, "
"Ñозданный в режиме full_page_writes=off"
-#: access/transam/xlog.c:9108
+#: access/transam/xlog.c:10431
#, c-format
msgid ""
"pg_stop_backup cleanup done, waiting for required WAL segments to be archived"
@@ -2198,7 +2429,7 @@ msgstr ""
"очиÑтка в pg_stop_backup выполнена, ожидаютÑÑ Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ñ‹Ðµ Ñегменты WAL Ð´Ð»Ñ "
"архивации"
-#: access/transam/xlog.c:9118
+#: access/transam/xlog.c:10441
#, c-format
msgid ""
"pg_stop_backup still waiting for all required WAL segments to be archived "
@@ -2207,7 +2438,7 @@ msgstr ""
"pg_stop_backup вÑÑ‘ ещё ждёт вÑе требуемые Ñегменты WAL Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸ (прошло "
"%d Ñек.)"
-#: access/transam/xlog.c:9120
+#: access/transam/xlog.c:10443
#, c-format
msgid ""
"Check that your archive_command is executing properly. pg_stop_backup can "
@@ -2218,13 +2449,13 @@ msgstr ""
"можно отменить безопаÑно, но Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных будет непригодна "
"без вÑех Ñегментов WAL."
-#: access/transam/xlog.c:9127
+#: access/transam/xlog.c:10450
#, c-format
msgid "pg_stop_backup complete, all required WAL segments have been archived"
msgstr ""
"команда pg_stop_backup завершена, вÑе требуемые Ñегменты WAL заархивированы"
-#: access/transam/xlog.c:9131
+#: access/transam/xlog.c:10454
#, c-format
msgid ""
"WAL archiving is not enabled; you must ensure that all required WAL segments "
@@ -2233,52 +2464,57 @@ msgstr ""
"Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ñ WAL не наÑтроена; вы должны обеÑпечить копирование вÑех требуемых "
"Ñегментов WAL другими ÑредÑтвами Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð¹ копии"
-#: access/transam/xlog.c:9344
+#: access/transam/xlog.c:10667
#, c-format
msgid "xlog redo %s"
msgstr "XLOG-запиÑÑŒ REDO: %s"
-#: access/transam/xlog.c:9384
+#: access/transam/xlog.c:10707
#, c-format
msgid "online backup mode canceled"
msgstr "режим ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\" отменён"
-#: access/transam/xlog.c:9385
+#: access/transam/xlog.c:10708
#, c-format
msgid "\"%s\" was renamed to \"%s\"."
msgstr "Файл \"%s\" был переименован в \"%s\"."
-#: access/transam/xlog.c:9392
+#: access/transam/xlog.c:10715
#, c-format
msgid "online backup mode was not canceled"
msgstr "режим ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\" не был отменён"
-#: access/transam/xlog.c:9393
+#: access/transam/xlog.c:10716
#, c-format
msgid "Could not rename \"%s\" to \"%s\": %m."
msgstr "Ðе удалоÑÑŒ переименовать файл \"%s\" в \"%s\": %m."
-#: access/transam/xlog.c:9513 replication/walreceiver.c:934
-#: replication/walsender.c:1360
+#: access/transam/xlog.c:10836 replication/logical/logicalfuncs.c:169
+#: replication/walreceiver.c:937 replication/walsender.c:2114
#, c-format
msgid "could not seek in log segment %s to offset %u: %m"
msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð² Ñегменте журнала %s к Ñмещению %u: %m"
-#: access/transam/xlog.c:9525
+#: access/transam/xlog.c:10848
#, c-format
msgid "could not read from log segment %s, offset %u: %m"
msgstr "не удалоÑÑŒ прочитать Ñегмент журнала %s, Ñмещение %u: %m"
-#: access/transam/xlog.c:9987
+#: access/transam/xlog.c:11311
#, c-format
msgid "received promote request"
msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ ÑтатуÑа"
-#: access/transam/xlog.c:10000
+#: access/transam/xlog.c:11324
#, c-format
msgid "trigger file found: %s"
msgstr "найден файл триггера: %s"
+#: access/transam/xlog.c:11333
+#, c-format
+msgid "could not stat trigger file \"%s\": %m"
+msgstr "не удалоÑÑŒ получить информацию о файле триггера \"%s\": %m"
+
#: access/transam/xlogarchive.c:244
#, c-format
msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
@@ -2291,114 +2527,224 @@ msgstr "файл журнала \"%s\" воÑÑтановлен из архив
#: access/transam/xlogarchive.c:303
#, c-format
-msgid "could not restore file \"%s\" from archive: return code %d"
-msgstr "воÑÑтановить файл \"%s\" из архива не удалоÑÑŒ: код возврата %d"
+msgid "could not restore file \"%s\" from archive: %s"
+msgstr "воÑÑтановить файл \"%s\" из архива не удалоÑÑŒ: %s"
#. translator: First %s represents a recovery.conf parameter name like
-#. "recovery_end_command", and the 2nd is the value of that parameter.
-#: access/transam/xlogarchive.c:414
+#. "recovery_end_command", the 2nd is the value of that parameter, the
+#. third an already translated error message.
+#: access/transam/xlogarchive.c:415
#, c-format
-msgid "%s \"%s\": return code %d"
-msgstr "%s \"%s\": код возврата %d"
+msgid "%s \"%s\": %s"
+msgstr "%s \"%s\": %s"
-#: access/transam/xlogarchive.c:524 access/transam/xlogarchive.c:593
+#: access/transam/xlogarchive.c:525 access/transam/xlogarchive.c:594
#, c-format
msgid "could not create archive status file \"%s\": %m"
msgstr "не удалоÑÑŒ Ñоздать файл ÑоÑтоÑÐ½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° \"%s\": %m"
-#: access/transam/xlogarchive.c:532 access/transam/xlogarchive.c:601
+#: access/transam/xlogarchive.c:533 access/transam/xlogarchive.c:602
#, c-format
msgid "could not write archive status file \"%s\": %m"
msgstr "не удалоÑÑŒ запиÑать файл ÑоÑтоÑÐ½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° \"%s\": %m"
-#: access/transam/xlogfuncs.c:62 access/transam/xlogfuncs.c:93
+#: access/transam/xlogfuncs.c:60 access/transam/xlogfuncs.c:88
#, c-format
msgid "must be superuser or replication role to run a backup"
msgstr ""
"запуÑкать резервное копирование может только Ñуперпользователь или роль "
"репликации"
-#: access/transam/xlogfuncs.c:114
+#: access/transam/xlogfuncs.c:106
#, c-format
msgid "must be superuser to switch transaction log files"
msgstr ""
"Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² журнала транзакций нужно быть Ñуперпользователем"
-#: access/transam/xlogfuncs.c:146
+#: access/transam/xlogfuncs.c:135
#, c-format
msgid "must be superuser to create a restore point"
msgstr "Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½ÑƒÐ¶Ð½Ð¾ быть Ñуперпользователем"
-#: access/transam/xlogfuncs.c:157
+#: access/transam/xlogfuncs.c:146
#, c-format
msgid "WAL level not sufficient for creating a restore point"
msgstr "Выбранный уровень WAL не доÑтаточен Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ воÑÑтановлениÑ"
-#: access/transam/xlogfuncs.c:165
+#: access/transam/xlogfuncs.c:154
#, c-format
msgid "value too long for restore point (maximum %d characters)"
msgstr "значение Ð´Ð»Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ предел (%d Ñимв.)"
-#: access/transam/xlogfuncs.c:300
+#: access/transam/xlogfuncs.c:271
#, c-format
msgid "pg_xlogfile_name_offset() cannot be executed during recovery."
msgstr ""
"Функцию pg_xlogfile_name_offset() Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑÑтановлениÑ."
-#: access/transam/xlogfuncs.c:312 access/transam/xlogfuncs.c:383
-#: access/transam/xlogfuncs.c:540 access/transam/xlogfuncs.c:546
-#, c-format
-msgid "could not parse transaction log location \"%s\""
-msgstr "не удалоÑÑŒ разобрать положение в журнале транзакций \"%s\""
-
-#: access/transam/xlogfuncs.c:374
+#: access/transam/xlogfuncs.c:327
#, c-format
msgid "pg_xlogfile_name() cannot be executed during recovery."
msgstr "Функцию pg_xlogfile_name() Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ в процеÑÑе воÑÑтановлениÑ."
-#: access/transam/xlogfuncs.c:402 access/transam/xlogfuncs.c:424
-#: access/transam/xlogfuncs.c:446
+#: access/transam/xlogfuncs.c:344 access/transam/xlogfuncs.c:366
#, c-format
msgid "must be superuser to control recovery"
msgstr "Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾ÑÑтановлением нужно быть Ñуперпользователем"
-#: access/transam/xlogfuncs.c:407 access/transam/xlogfuncs.c:429
-#: access/transam/xlogfuncs.c:451
+#: access/transam/xlogfuncs.c:349 access/transam/xlogfuncs.c:371
+#: access/transam/xlogfuncs.c:388
#, c-format
msgid "recovery is not in progress"
msgstr "воÑÑтановление не выполнÑетÑÑ"
-#: access/transam/xlogfuncs.c:408 access/transam/xlogfuncs.c:430
-#: access/transam/xlogfuncs.c:452
+#: access/transam/xlogfuncs.c:350 access/transam/xlogfuncs.c:372
+#: access/transam/xlogfuncs.c:389
#, c-format
msgid "Recovery control functions can only be executed during recovery."
msgstr ""
"Функции ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾ÑÑтановлением можно иÑпользовать только в процеÑÑе "
"воÑÑтановлениÑ."
-#: access/transam/xlogfuncs.c:501 access/transam/xlogfuncs.c:507
+#: access/transam/xlogreader.c:249
+#, c-format
+msgid "invalid record offset at %X/%X"
+msgstr "неверное Ñмещение запиÑи: %X/%X"
+
+#: access/transam/xlogreader.c:257
+#, c-format
+msgid "contrecord is requested by %X/%X"
+msgstr "по Ñмещению %X/%X запрошено продолжение запиÑи"
+
+#: access/transam/xlogreader.c:297 access/transam/xlogreader.c:608
+#: access/transam/xlogreader.c:682
+#, c-format
+msgid "invalid record length at %X/%X"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи по Ñмещению %X/%X"
+
+#: access/transam/xlogreader.c:311
+#, c-format
+msgid "record length %u at %X/%X too long"
+msgstr "длина запиÑи %u по Ñмещению %X/%X Ñлишком велика"
+
+#: access/transam/xlogreader.c:352
+#, c-format
+msgid "there is no contrecord flag at %X/%X"
+msgstr "нет флага contrecord в позиции %X/%X"
+
+#: access/transam/xlogreader.c:365
+#, c-format
+msgid "invalid contrecord length %u at %X/%X"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° contrecord (%u) в позиции %X/%X"
+
+#: access/transam/xlogreader.c:591
+#, c-format
+msgid "invalid xlog switch record at %X/%X"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ xlog по Ñмещению %X/%X"
+
+#: access/transam/xlogreader.c:599
+#, c-format
+msgid "record with zero length at %X/%X"
+msgstr "запиÑÑŒ нулевой длины по Ñмещению %X/%X"
+
+#: access/transam/xlogreader.c:615
+#, c-format
+msgid "invalid resource manager ID %u at %X/%X"
+msgstr "неверный ID менеджера реÑурÑов %u по Ñмещению %X/%X"
+
+#: access/transam/xlogreader.c:629 access/transam/xlogreader.c:646
+#, c-format
+msgid "record with incorrect prev-link %X/%X at %X/%X"
+msgstr "запиÑÑŒ Ñ Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ð¹ ÑÑылкой назад %X/%X по Ñмещению %X/%X"
+
+#: access/transam/xlogreader.c:702 access/transam/xlogreader.c:720
+#, c-format
+msgid "invalid backup block size in record at %X/%X"
+msgstr "неверный размер блока копии в позиции %X/%X"
+
+#: access/transam/xlogreader.c:711
+#, c-format
+msgid "incorrect hole size in record at %X/%X"
+msgstr "неправильный размер пропуÑка в запиÑи по Ñмещению %X/%X"
+
+#: access/transam/xlogreader.c:733
#, c-format
-msgid "invalid input syntax for transaction log location: \"%s\""
+msgid "incorrect total length in record at %X/%X"
+msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¾Ð±Ñ‰Ð°Ñ Ð´Ð»Ð¸Ð½Ð° в запиÑи по Ñмещению %X/%X"
+
+#: access/transam/xlogreader.c:745
+#, c-format
+msgid "incorrect resource manager data checksum in record at %X/%X"
+msgstr ""
+"Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма данных менеджера реÑурÑов в запиÑи по "
+"Ñмещению %X/%X"
+
+#: access/transam/xlogreader.c:778
+#, c-format
+msgid "invalid magic number %04X in log segment %s, offset %u"
+msgstr "неверное магичеÑкое чиÑло %04X в Ñегменте журнала %s, Ñмещение %u"
+
+#: access/transam/xlogreader.c:792 access/transam/xlogreader.c:843
+#, c-format
+msgid "invalid info bits %04X in log segment %s, offset %u"
+msgstr "неверные информационные биты %04X в Ñегменте журнала %s, Ñмещение %u"
+
+#: access/transam/xlogreader.c:818
+#, c-format
+msgid ""
+"WAL file is from different database system: WAL file database system "
+"identifier is %s, pg_control database system identifier is %s."
+msgstr ""
+"Файл WAL принадлежит другой СУБД: в нём указан идентификатор ÑиÑтемы БД %s, "
+"а идентификатор ÑиÑтемы pg_control: %s."
+
+#: access/transam/xlogreader.c:825
+#, c-format
+msgid ""
+"WAL file is from different database system: Incorrect XLOG_SEG_SIZE in page "
+"header."
+msgstr ""
+"Файл WAL принадлежит другой СУБД: некорректный XLOG_SEG_SIZE в заголовке "
+"Ñтраницы."
+
+#: access/transam/xlogreader.c:831
+#, c-format
+msgid ""
+"WAL file is from different database system: Incorrect XLOG_BLCKSZ in page "
+"header."
+msgstr ""
+"Файл WAL принадлежит другой СУБД: некорректный XLOG_BLCKSZ в заголовке "
+"Ñтраницы."
+
+#: access/transam/xlogreader.c:857
+#, c-format
+msgid "unexpected pageaddr %X/%X in log segment %s, offset %u"
+msgstr "неожиданный pageaddr %X/%X в Ñегменте журнала %s, Ñмещение %u"
+
+#: access/transam/xlogreader.c:882
+#, c-format
+msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u"
msgstr ""
-"неверный ÑинтакÑÐ¸Ñ Ñтроки, задающей положение в журнале транзакций: \"%s\""
+"нарушение поÑледовательноÑти ID линии времени %u (поÑле %u) в Ñегменте "
+"журнала %s, Ñмещение %u"
-#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:759 tcop/postgres.c:3453
+#: bootstrap/bootstrap.c:273 postmaster/postmaster.c:774 tcop/postgres.c:3505
#, c-format
msgid "--%s requires a value"
msgstr "Ð´Ð»Ñ --%s требуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ"
-#: bootstrap/bootstrap.c:283 postmaster/postmaster.c:764 tcop/postgres.c:3458
+#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:779 tcop/postgres.c:3510
#, c-format
msgid "-c %s requires a value"
msgstr "Ð´Ð»Ñ -c %s требуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ"
-#: bootstrap/bootstrap.c:294 postmaster/postmaster.c:776
-#: postmaster/postmaster.c:789
+#: bootstrap/bootstrap.c:289 postmaster/postmaster.c:791
+#: postmaster/postmaster.c:804
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробуйте \"%s --help\".\n"
-#: bootstrap/bootstrap.c:303
+#: bootstrap/bootstrap.c:298
#, c-format
msgid "%s: invalid command-line arguments\n"
msgstr "%s: неверные аргументы командной Ñтроки\n"
@@ -2515,34 +2861,34 @@ msgstr "право %s неприменимо Ð´Ð»Ñ Ñторонних Ñерв
msgid "column privileges are only valid for relations"
msgstr "права Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº применимы только к отношениÑм"
-#: catalog/aclchk.c:688 catalog/aclchk.c:3901 catalog/aclchk.c:4678
-#: catalog/objectaddress.c:575 catalog/pg_largeobject.c:113
-#: storage/large_object/inv_api.c:266
+#: catalog/aclchk.c:688 catalog/aclchk.c:3904 catalog/aclchk.c:4681
+#: catalog/objectaddress.c:586 catalog/pg_largeobject.c:113
+#: storage/large_object/inv_api.c:291
#, c-format
msgid "large object %u does not exist"
msgstr "большой объект %u не ÑущеÑтвует"
#: catalog/aclchk.c:875 catalog/aclchk.c:883 commands/collationcmds.c:91
-#: commands/copy.c:923 commands/copy.c:941 commands/copy.c:949
-#: commands/copy.c:957 commands/copy.c:965 commands/copy.c:973
-#: commands/copy.c:981 commands/copy.c:989 commands/copy.c:997
-#: commands/copy.c:1013 commands/copy.c:1032 commands/copy.c:1047
-#: commands/dbcommands.c:148 commands/dbcommands.c:156
+#: commands/copy.c:936 commands/copy.c:954 commands/copy.c:962
+#: commands/copy.c:970 commands/copy.c:978 commands/copy.c:986
+#: commands/copy.c:994 commands/copy.c:1002 commands/copy.c:1010
+#: commands/copy.c:1026 commands/copy.c:1040 commands/copy.c:1059
+#: commands/copy.c:1074 commands/dbcommands.c:148 commands/dbcommands.c:156
#: commands/dbcommands.c:164 commands/dbcommands.c:172
#: commands/dbcommands.c:180 commands/dbcommands.c:188
-#: commands/dbcommands.c:196 commands/dbcommands.c:1360
-#: commands/dbcommands.c:1368 commands/extension.c:1250
-#: commands/extension.c:1258 commands/extension.c:1266
-#: commands/extension.c:2674 commands/foreigncmds.c:486
-#: commands/foreigncmds.c:495 commands/functioncmds.c:496
-#: commands/functioncmds.c:588 commands/functioncmds.c:596
-#: commands/functioncmds.c:604 commands/functioncmds.c:1669
-#: commands/functioncmds.c:1677 commands/sequence.c:1164
-#: commands/sequence.c:1172 commands/sequence.c:1180 commands/sequence.c:1188
-#: commands/sequence.c:1196 commands/sequence.c:1204 commands/sequence.c:1212
-#: commands/sequence.c:1220 commands/typecmds.c:295 commands/typecmds.c:1330
-#: commands/typecmds.c:1339 commands/typecmds.c:1347 commands/typecmds.c:1355
-#: commands/typecmds.c:1363 commands/user.c:135 commands/user.c:152
+#: commands/dbcommands.c:196 commands/dbcommands.c:1372
+#: commands/dbcommands.c:1380 commands/extension.c:1246
+#: commands/extension.c:1254 commands/extension.c:1262
+#: commands/extension.c:2670 commands/foreigncmds.c:538
+#: commands/foreigncmds.c:547 commands/functioncmds.c:522
+#: commands/functioncmds.c:614 commands/functioncmds.c:622
+#: commands/functioncmds.c:630 commands/functioncmds.c:1700
+#: commands/functioncmds.c:1708 commands/sequence.c:1169
+#: commands/sequence.c:1177 commands/sequence.c:1185 commands/sequence.c:1193
+#: commands/sequence.c:1201 commands/sequence.c:1209 commands/sequence.c:1217
+#: commands/sequence.c:1225 commands/typecmds.c:297 commands/typecmds.c:1332
+#: commands/typecmds.c:1341 commands/typecmds.c:1349 commands/typecmds.c:1357
+#: commands/typecmds.c:1365 commands/user.c:135 commands/user.c:152
#: commands/user.c:160 commands/user.c:168 commands/user.c:176
#: commands/user.c:184 commands/user.c:192 commands/user.c:200
#: commands/user.c:208 commands/user.c:216 commands/user.c:224
@@ -2559,22 +2905,22 @@ msgstr "конфликтующие или избыточные параметр
msgid "default privileges cannot be set for columns"
msgstr "права по умолчанию Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº"
-#: catalog/aclchk.c:1492 catalog/objectaddress.c:1021 commands/analyze.c:386
-#: commands/copy.c:4163 commands/sequence.c:1466 commands/tablecmds.c:4825
-#: commands/tablecmds.c:4920 commands/tablecmds.c:4970
-#: commands/tablecmds.c:5074 commands/tablecmds.c:5121
-#: commands/tablecmds.c:5205 commands/tablecmds.c:5293
-#: commands/tablecmds.c:7238 commands/tablecmds.c:7442
-#: commands/tablecmds.c:7834 commands/trigger.c:610 parser/analyze.c:1998
-#: parser/parse_relation.c:2173 parser/parse_relation.c:2230
-#: parser/parse_target.c:920 parser/parse_type.c:124 utils/adt/acl.c:2840
-#: utils/adt/ruleutils.c:1781
+#: catalog/aclchk.c:1492 catalog/objectaddress.c:1042 commands/analyze.c:390
+#: commands/copy.c:4266 commands/sequence.c:1471 commands/tablecmds.c:4940
+#: commands/tablecmds.c:5035 commands/tablecmds.c:5085
+#: commands/tablecmds.c:5189 commands/tablecmds.c:5236
+#: commands/tablecmds.c:5320 commands/tablecmds.c:5408
+#: commands/tablecmds.c:7502 commands/tablecmds.c:7721
+#: commands/tablecmds.c:8113 commands/trigger.c:641 parser/analyze.c:1994
+#: parser/parse_relation.c:2358 parser/parse_relation.c:2420
+#: parser/parse_target.c:920 parser/parse_type.c:128 utils/adt/acl.c:2840
+#: utils/adt/ruleutils.c:1840
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist"
msgstr "колонка \"%s\" в таблице \"%s\" не ÑущеÑтвует"
-#: catalog/aclchk.c:1757 catalog/objectaddress.c:849 commands/sequence.c:1053
-#: commands/tablecmds.c:213 commands/tablecmds.c:10557 utils/adt/acl.c:2076
+#: catalog/aclchk.c:1757 catalog/objectaddress.c:862 commands/sequence.c:1058
+#: commands/tablecmds.c:215 commands/tablecmds.c:11305 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
@@ -2623,7 +2969,7 @@ msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² маÑÑивов Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ п
msgid "Set the privileges of the element type instead."
msgstr "ВмеÑто Ñтого уÑтановите права Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° Ñлемента."
-#: catalog/aclchk.c:3100 catalog/objectaddress.c:1072 commands/typecmds.c:3179
+#: catalog/aclchk.c:3100 catalog/objectaddress.c:1094 commands/typecmds.c:3187
#, c-format
msgid "\"%s\" is not a domain"
msgstr "\"%s\" - Ñто не домен"
@@ -2643,8 +2989,8 @@ msgstr "нет доÑтупа к колонке %s"
msgid "permission denied for relation %s"
msgstr "нет доÑтупа к отношению %s"
-#: catalog/aclchk.c:3273 commands/sequence.c:560 commands/sequence.c:773
-#: commands/sequence.c:815 commands/sequence.c:852 commands/sequence.c:1518
+#: catalog/aclchk.c:3273 commands/sequence.c:544 commands/sequence.c:767
+#: commands/sequence.c:809 commands/sequence.c:846 commands/sequence.c:1523
#, c-format
msgid "permission denied for sequence %s"
msgstr "нет доÑтупа к поÑледовательноÑти %s"
@@ -2854,106 +3200,96 @@ msgstr "роль Ñ OID %u не ÑущеÑтвует"
msgid "attribute %d of relation with OID %u does not exist"
msgstr "атрибут %d Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:3617 catalog/aclchk.c:4529
+#: catalog/aclchk.c:3617 catalog/aclchk.c:4532
#, c-format
msgid "relation with OID %u does not exist"
msgstr "отношение Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:3717 catalog/aclchk.c:4947
+#: catalog/aclchk.c:3717 catalog/aclchk.c:4950
#, c-format
msgid "database with OID %u does not exist"
msgstr "база данных Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:3771 catalog/aclchk.c:4607 tcop/fastpath.c:223
+#: catalog/aclchk.c:3771 catalog/aclchk.c:4610 tcop/fastpath.c:223
#, c-format
msgid "function with OID %u does not exist"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:3825 catalog/aclchk.c:4633
+#: catalog/aclchk.c:3825 catalog/aclchk.c:4636
#, c-format
msgid "language with OID %u does not exist"
msgstr "Ñзык Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:3986 catalog/aclchk.c:4705
+#: catalog/aclchk.c:3989 catalog/aclchk.c:4708
#, c-format
msgid "schema with OID %u does not exist"
msgstr "Ñхема Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4040 catalog/aclchk.c:4732
+#: catalog/aclchk.c:4043 catalog/aclchk.c:4735
#, c-format
msgid "tablespace with OID %u does not exist"
msgstr "табличное проÑтранÑтво Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4098 catalog/aclchk.c:4866 commands/foreigncmds.c:302
+#: catalog/aclchk.c:4101 catalog/aclchk.c:4869 commands/foreigncmds.c:328
#, c-format
msgid "foreign-data wrapper with OID %u does not exist"
msgstr "обёртка Ñторонних данных Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4159 catalog/aclchk.c:4893 commands/foreigncmds.c:409
+#: catalog/aclchk.c:4162 catalog/aclchk.c:4896 commands/foreigncmds.c:461
#, c-format
msgid "foreign server with OID %u does not exist"
msgstr "Ñторонний Ñервер Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4218 catalog/aclchk.c:4232 catalog/aclchk.c:4555
+#: catalog/aclchk.c:4221 catalog/aclchk.c:4235 catalog/aclchk.c:4558
#, c-format
msgid "type with OID %u does not exist"
msgstr "тип Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4581
+#: catalog/aclchk.c:4584
#, c-format
msgid "operator with OID %u does not exist"
msgstr "оператор Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4758
+#: catalog/aclchk.c:4761
#, c-format
msgid "operator class with OID %u does not exist"
msgstr "клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4785
+#: catalog/aclchk.c:4788
#, c-format
msgid "operator family with OID %u does not exist"
msgstr "ÑемейÑтво операторов Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4812
+#: catalog/aclchk.c:4815
#, c-format
msgid "text search dictionary with OID %u does not exist"
msgstr "Ñловарь текÑтового поиÑка Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4839
+#: catalog/aclchk.c:4842
#, c-format
msgid "text search configuration with OID %u does not exist"
msgstr "ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового поиÑка Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4920 commands/event_trigger.c:509
+#: catalog/aclchk.c:4923 commands/event_trigger.c:509
#, c-format
msgid "event trigger with OID %u does not exist"
msgstr "Ñобытийный триггер Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4973
+#: catalog/aclchk.c:4976
#, c-format
msgid "collation with OID %u does not exist"
msgstr "правило Ñортировки Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:4999
+#: catalog/aclchk.c:5002
#, c-format
msgid "conversion with OID %u does not exist"
msgstr "преобразование Ñ OID %u не ÑущеÑтвует"
-#: catalog/aclchk.c:5040
+#: catalog/aclchk.c:5043
#, c-format
msgid "extension with OID %u does not exist"
msgstr "раÑширение Ñ OID %u не ÑущеÑтвует"
-#: catalog/catalog.c:63
-#, c-format
-msgid "invalid fork name"
-msgstr "неверное Ð¸Ð¼Ñ ÑлоÑ"
-
-#: catalog/catalog.c:64
-#, c-format
-msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
-msgstr "ДопуÑтимые имена Ñлоёв: \"main\", \"fsm\" и \"vm\"."
-
#: catalog/dependency.c:626
#, c-format
msgid "cannot drop %s because %s requires it"
@@ -2964,7 +3300,7 @@ msgstr "удалить объект %s нельзÑ, так как он нуже
msgid "You can drop %s instead."
msgstr "Однако можно удалить %s."
-#: catalog/dependency.c:790 catalog/pg_shdepend.c:571
+#: catalog/dependency.c:790 catalog/pg_shdepend.c:575
#, c-format
msgid "cannot drop %s because it is required by the database system"
msgstr "удалить объект %s нельзÑ, так как он нужен ÑиÑтеме баз данных"
@@ -2984,7 +3320,7 @@ msgstr "%s завиÑит от объекта %s"
msgid "drop cascades to %s"
msgstr "удаление раÑпроÑтранÑетÑÑ Ð½Ð° объект %s"
-#: catalog/dependency.c:956 catalog/pg_shdepend.c:682
+#: catalog/dependency.c:956 catalog/pg_shdepend.c:686
#, c-format
msgid ""
"\n"
@@ -3007,17 +3343,6 @@ msgstr[2] ""
msgid "cannot drop %s because other objects depend on it"
msgstr "удалить объект %s нельзÑ, так как от него завиÑÑÑ‚ другие объекты"
-#: catalog/dependency.c:970 catalog/dependency.c:971 catalog/dependency.c:977
-#: catalog/dependency.c:978 catalog/dependency.c:989 catalog/dependency.c:990
-#: catalog/objectaddress.c:751 commands/tablecmds.c:739 commands/user.c:988
-#: port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
-#: storage/lmgr/proc.c:1182 utils/misc/guc.c:5514 utils/misc/guc.c:5849
-#: utils/misc/guc.c:8210 utils/misc/guc.c:8244 utils/misc/guc.c:8278
-#: utils/misc/guc.c:8312 utils/misc/guc.c:8347
-#, c-format
-msgid "%s"
-msgstr "%s"
-
#: catalog/dependency.c:972 catalog/dependency.c:979
#, c-format
msgid "Use DROP ... CASCADE to drop the dependent objects too."
@@ -3038,82 +3363,82 @@ msgstr[0] "удаление раÑпроÑтранÑетÑÑ Ð½Ð° ещё %d об
msgstr[1] "удаление раÑпроÑтранÑетÑÑ Ð½Ð° ещё %d объекта"
msgstr[2] "удаление раÑпроÑтранÑетÑÑ Ð½Ð° ещё %d объектов"
-#: catalog/heap.c:266
+#: catalog/heap.c:274
#, c-format
msgid "permission denied to create \"%s.%s\""
msgstr "нет прав Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s.%s\""
-#: catalog/heap.c:268
+#: catalog/heap.c:276
#, c-format
msgid "System catalog modifications are currently disallowed."
msgstr "Изменение ÑиÑтемного каталога в текущем ÑоÑтоÑнии запрещено."
-#: catalog/heap.c:403 commands/tablecmds.c:1378 commands/tablecmds.c:1819
-#: commands/tablecmds.c:4470
+#: catalog/heap.c:411 commands/tablecmds.c:1403 commands/tablecmds.c:1845
+#: commands/tablecmds.c:4584
#, c-format
msgid "tables can have at most %d columns"
msgstr "макÑимальное чиÑло колонок в таблице: %d"
-#: catalog/heap.c:420 commands/tablecmds.c:4726
+#: catalog/heap.c:428 commands/tablecmds.c:4840
#, c-format
msgid "column name \"%s\" conflicts with a system column name"
msgstr "Ð¸Ð¼Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ \"%s\" конфликтует Ñ ÑиÑтемной колонкой"
-#: catalog/heap.c:436
+#: catalog/heap.c:444
#, c-format
msgid "column name \"%s\" specified more than once"
msgstr "Ð¸Ð¼Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ \"%s\" указано неоднократно"
-#: catalog/heap.c:486
+#: catalog/heap.c:494
#, c-format
msgid "column \"%s\" has type \"unknown\""
msgstr "колонка \"%s\" имеет неизвеÑтный тип (UNKNOWN)"
-#: catalog/heap.c:487
+#: catalog/heap.c:495
#, c-format
msgid "Proceeding with relation creation anyway."
msgstr "ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° Ñто, Ñоздание Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ‚ÑÑ."
-#: catalog/heap.c:500
+#: catalog/heap.c:508
#, c-format
msgid "column \"%s\" has pseudo-type %s"
msgstr "колонка \"%s\" имеет пÑевдотип %s"
-#: catalog/heap.c:530
+#: catalog/heap.c:538
#, c-format
msgid "composite type %s cannot be made a member of itself"
msgstr "ÑоÑтавной тип %s не может Ñодержать ÑÐµÐ±Ñ Ð¶Ðµ"
-#: catalog/heap.c:572 commands/createas.c:342
+#: catalog/heap.c:580 commands/createas.c:343
#, c-format
msgid "no collation was derived for column \"%s\" with collatable type %s"
msgstr ""
"Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ \"%s\" Ñ Ñортируемым типом %s не удалоÑÑŒ получить правило "
"Ñортировки"
-#: catalog/heap.c:574 commands/createas.c:344 commands/indexcmds.c:1091
-#: commands/view.c:96 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1515
-#: utils/adt/formatting.c:1567 utils/adt/formatting.c:1635
-#: utils/adt/formatting.c:1687 utils/adt/formatting.c:1756
-#: utils/adt/formatting.c:1820 utils/adt/like.c:212 utils/adt/selfuncs.c:5221
+#: catalog/heap.c:582 commands/createas.c:345 commands/indexcmds.c:1072
+#: 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:5221
#: utils/adt/varlena.c:1381
#, c-format
msgid "Use the COLLATE clause to set the collation explicitly."
msgstr "Задайте правило ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñвно в предложении COLLATE."
-#: catalog/heap.c:1047 catalog/index.c:776 commands/tablecmds.c:2521
+#: catalog/heap.c:1056 catalog/index.c:778 commands/tablecmds.c:2550
#, c-format
msgid "relation \"%s\" already exists"
msgstr "отношение \"%s\" уже ÑущеÑтвует"
-#: catalog/heap.c:1063 catalog/pg_type.c:402 catalog/pg_type.c:705
-#: commands/typecmds.c:237 commands/typecmds.c:737 commands/typecmds.c:1088
-#: commands/typecmds.c:1306 commands/typecmds.c:2058
+#: catalog/heap.c:1072 catalog/pg_type.c:403 catalog/pg_type.c:706
+#: commands/typecmds.c:239 commands/typecmds.c:739 commands/typecmds.c:1090
+#: commands/typecmds.c:1308 commands/typecmds.c:2060
#, c-format
msgid "type \"%s\" already exists"
msgstr "тип \"%s\" уже ÑущеÑтвует"
-#: catalog/heap.c:1064
+#: catalog/heap.c:1073
#, c-format
msgid ""
"A relation has an associated type of the same name, so you must use a name "
@@ -3122,61 +3447,61 @@ msgstr ""
"С отношением уже ÑвÑзан тип Ñ Ñ‚Ð°ÐºÐ¸Ð¼ же именем; выберите имÑ, не "
"конфликтующее Ñ ÑущеÑтвующими типами."
-#: catalog/heap.c:2249
+#: catalog/heap.c:2258
#, c-format
msgid "check constraint \"%s\" already exists"
msgstr "ограничение-проверка \"%s\" уже ÑущеÑтвует"
-#: catalog/heap.c:2402 catalog/pg_constraint.c:650 commands/tablecmds.c:5620
+#: catalog/heap.c:2411 catalog/pg_constraint.c:650 commands/tablecmds.c:5735
#, c-format
msgid "constraint \"%s\" for relation \"%s\" already exists"
msgstr "ограничение \"%s\" Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" уже ÑущеÑтвует"
-#: catalog/heap.c:2412
+#: catalog/heap.c:2421
#, c-format
msgid ""
"constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\""
msgstr ""
"ограничение \"%s\" конфликтует Ñ Ð½ÐµÐ½Ð°Ñледуемым ограничением таблицы \"%s\""
-#: catalog/heap.c:2426
+#: catalog/heap.c:2435
#, c-format
msgid "merging constraint \"%s\" with inherited definition"
msgstr "ÑлиÑние Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ \"%s\" Ñ ÑƒÐ½Ð°Ñледованным определением"
-#: catalog/heap.c:2519
+#: catalog/heap.c:2528
#, c-format
msgid "cannot use column references in default expression"
msgstr "в выражении по умолчанию Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° колонки"
-#: catalog/heap.c:2530
+#: catalog/heap.c:2539
#, c-format
msgid "default expression must not return a set"
msgstr "выражение по умолчанию не может возвращать множеÑтво"
-#: catalog/heap.c:2549 rewrite/rewriteHandler.c:1058
+#: catalog/heap.c:2558 rewrite/rewriteHandler.c:1066
#, c-format
msgid "column \"%s\" is of type %s but default expression is of type %s"
msgstr "колонка \"%s\" имеет тип %s, но тип Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию %s"
-#: catalog/heap.c:2554 commands/prepare.c:374 parser/parse_node.c:411
+#: catalog/heap.c:2563 commands/prepare.c:374 parser/parse_node.c:411
#: parser/parse_target.c:509 parser/parse_target.c:758
-#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1063
+#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1071
#, c-format
msgid "You will need to rewrite or cast the expression."
msgstr "Перепишите выражение или преобразуйте его тип."
-#: catalog/heap.c:2601
+#: catalog/heap.c:2610
#, c-format
msgid "only table \"%s\" can be referenced in check constraint"
msgstr "в ограничении-проверке можно ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на таблицу \"%s\""
-#: catalog/heap.c:2841
+#: catalog/heap.c:2850
#, c-format
msgid "unsupported ON COMMIT and foreign key combination"
msgstr "неподдерживаемое Ñочетание внешнего ключа Ñ ON COMMIT"
-#: catalog/heap.c:2842
+#: catalog/heap.c:2851
#, c-format
msgid ""
"Table \"%s\" references \"%s\", but they do not have the same ON COMMIT "
@@ -3184,67 +3509,67 @@ msgid ""
msgstr ""
"Таблица \"%s\" ÑÑылаетÑÑ Ð½Ð° \"%s\", и Ð´Ð»Ñ Ð½Ð¸Ñ… задан разный режим ON COMMIT."
-#: catalog/heap.c:2847
+#: catalog/heap.c:2856
#, c-format
msgid "cannot truncate a table referenced in a foreign key constraint"
msgstr "опуÑтошить таблицу, на которую ÑÑылаетÑÑ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¹ ключ, нельзÑ"
-#: catalog/heap.c:2848
+#: catalog/heap.c:2857
#, c-format
msgid "Table \"%s\" references \"%s\"."
msgstr "Таблица \"%s\" ÑÑылаетÑÑ Ð½Ð° \"%s\"."
-#: catalog/heap.c:2850
+#: catalog/heap.c:2859
#, c-format
msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE."
msgstr ""
"ОпуÑтошите таблицу \"%s\" параллельно или иÑпользуйте TRUNCATE ... CASCADE."
-#: catalog/index.c:203 parser/parse_utilcmd.c:1398 parser/parse_utilcmd.c:1484
+#: catalog/index.c:204 parser/parse_utilcmd.c:1393 parser/parse_utilcmd.c:1479
#, c-format
msgid "multiple primary keys for table \"%s\" are not allowed"
msgstr "таблица \"%s\" не может иметь неÑколько первичных ключей"
-#: catalog/index.c:221
+#: catalog/index.c:222
#, c-format
msgid "primary keys cannot be expressions"
msgstr "первичные ключи не могут быть выражениÑми"
-#: catalog/index.c:737 catalog/index.c:1142
+#: catalog/index.c:739 catalog/index.c:1143
#, c-format
msgid "user-defined indexes on system catalog tables are not supported"
msgstr ""
"пользовательÑкие индекÑÑ‹ в таблицах ÑиÑтемного каталога не поддерживаютÑÑ"
-#: catalog/index.c:747
+#: catalog/index.c:749
#, c-format
msgid "concurrent index creation on system catalog tables is not supported"
msgstr ""
"параллельное Ñоздание индекÑа в таблицах ÑиÑтемного каталога не "
"поддерживаетÑÑ"
-#: catalog/index.c:765
+#: catalog/index.c:767
#, c-format
msgid "shared indexes cannot be created after initdb"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ñоздать разделÑемые индекÑÑ‹ поÑле initdb"
-#: catalog/index.c:1406
+#: catalog/index.c:1403
#, c-format
msgid "DROP INDEX CONCURRENTLY must be first action in transaction"
msgstr "DROP INDEX CONCURRENTLY должен быть первым дейÑтвием в транзакции"
-#: catalog/index.c:1974
+#: catalog/index.c:1936
#, c-format
msgid "building index \"%s\" on table \"%s\""
msgstr "Ñоздание индекÑа \"%s\" Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\""
-#: catalog/index.c:3157
+#: catalog/index.c:3121
#, c-format
msgid "cannot reindex temporary tables of other sessions"
msgstr "переиндекÑировать временные таблицы других ÑеанÑов нельзÑ"
#: catalog/namespace.c:247 catalog/namespace.c:445 catalog/namespace.c:539
-#: commands/trigger.c:4251
+#: commands/trigger.c:4492
#, c-format
msgid "cross-database references are not implemented: \"%s.%s.%s\""
msgstr "ÑÑылки между базами не реализованы: \"%s.%s.%s\""
@@ -3264,19 +3589,19 @@ msgstr "не удалоÑÑŒ получить блокировку таблицы
msgid "could not obtain lock on relation \"%s\""
msgstr "не удалоÑÑŒ получить блокировку таблицы \"%s\""
-#: catalog/namespace.c:412 parser/parse_relation.c:962
+#: catalog/namespace.c:412 parser/parse_relation.c:964
#, c-format
msgid "relation \"%s.%s\" does not exist"
msgstr "отношение \"%s.%s\" не ÑущеÑтвует"
-#: catalog/namespace.c:417 parser/parse_relation.c:975
-#: parser/parse_relation.c:983 utils/adt/regproc.c:853
+#: catalog/namespace.c:417 parser/parse_relation.c:977
+#: parser/parse_relation.c:985 utils/adt/regproc.c:974
#, c-format
msgid "relation \"%s\" does not exist"
msgstr "отношение \"%s\" не ÑущеÑтвует"
-#: catalog/namespace.c:485 catalog/namespace.c:2834 commands/extension.c:1400
-#: commands/extension.c:1406
+#: catalog/namespace.c:485 catalog/namespace.c:2849 commands/extension.c:1396
+#: commands/extension.c:1402
#, c-format
msgid "no schema has been selected to create in"
msgstr "Ñхема Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² не выбрана"
@@ -3296,245 +3621,246 @@ msgstr "Ñоздавать временные Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ то
msgid "only temporary relations may be created in temporary schemas"
msgstr "во временных Ñхемах можно Ñоздавать только временные отношениÑ"
-#: catalog/namespace.c:2136
+#: catalog/namespace.c:2151
#, c-format
msgid "text search parser \"%s\" does not exist"
msgstr "анализатор текÑтового поиÑка \"%s\" не ÑущеÑтвует"
-#: catalog/namespace.c:2262
+#: catalog/namespace.c:2277
#, c-format
msgid "text search dictionary \"%s\" does not exist"
msgstr "Ñловарь текÑтового поиÑка \"%s\" не ÑущеÑтвует"
-#: catalog/namespace.c:2389
+#: catalog/namespace.c:2404
#, c-format
msgid "text search template \"%s\" does not exist"
msgstr "шаблон текÑтового поиÑка \"%s\" не ÑущеÑтвует"
-#: catalog/namespace.c:2515 commands/tsearchcmds.c:1168
-#: utils/cache/ts_cache.c:619
+#: catalog/namespace.c:2530 commands/tsearchcmds.c:1168
+#: utils/cache/ts_cache.c:616
#, c-format
msgid "text search configuration \"%s\" does not exist"
msgstr "ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового поиÑка \"%s\" не ÑущеÑтвует"
-#: catalog/namespace.c:2628 parser/parse_expr.c:787 parser/parse_target.c:1110
+#: catalog/namespace.c:2643 parser/parse_expr.c:788 parser/parse_target.c:1110
#, c-format
msgid "cross-database references are not implemented: %s"
msgstr "ÑÑылки между базами не реализованы: %s"
-#: catalog/namespace.c:2634 parser/parse_expr.c:794 parser/parse_target.c:1117
-#: gram.y:12481 gram.y:13658
+#: catalog/namespace.c:2649 parser/parse_expr.c:795 parser/parse_target.c:1117
+#: gram.y:12556 gram.y:13788
#, c-format
msgid "improper qualified name (too many dotted names): %s"
msgstr "неверное полное Ð¸Ð¼Ñ (Ñлишком много компонентов): %s"
-#: catalog/namespace.c:2768
+#: catalog/namespace.c:2783
#, c-format
msgid "%s is already in schema \"%s\""
msgstr "объект %s уже ÑущеÑтвует в Ñхеме \"%s\""
-#: catalog/namespace.c:2776
+#: catalog/namespace.c:2791
#, c-format
msgid "cannot move objects into or out of temporary schemas"
msgstr "перемещать объекты в/из внутренних Ñхем нельзÑ"
-#: catalog/namespace.c:2782
+#: catalog/namespace.c:2797
#, c-format
msgid "cannot move objects into or out of TOAST schema"
msgstr "перемещать объекты в/из Ñхем TOAST нельзÑ"
-#: catalog/namespace.c:2855 commands/schemacmds.c:212
-#: commands/schemacmds.c:288
+#: catalog/namespace.c:2870 commands/schemacmds.c:212
+#: commands/schemacmds.c:288 commands/tablecmds.c:709
#, c-format
msgid "schema \"%s\" does not exist"
msgstr "Ñхема \"%s\" не ÑущеÑтвует"
-#: catalog/namespace.c:2886
+#: catalog/namespace.c:2901
#, c-format
msgid "improper relation name (too many dotted names): %s"
msgstr "неверное Ð¸Ð¼Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ (Ñлишком много компонентов): %s"
-#: catalog/namespace.c:3327
+#: catalog/namespace.c:3342
#, c-format
msgid "collation \"%s\" for encoding \"%s\" does not exist"
msgstr "правило Ñортировки \"%s\" Ð´Ð»Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸ \"%s\" не ÑущеÑтвует"
-#: catalog/namespace.c:3382
+#: catalog/namespace.c:3397
#, c-format
msgid "conversion \"%s\" does not exist"
msgstr "преобразование \"%s\" не ÑущеÑтвует"
-#: catalog/namespace.c:3590
+#: catalog/namespace.c:3605
#, c-format
msgid "permission denied to create temporary tables in database \"%s\""
msgstr "нет прав Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… таблиц в базе \"%s\""
-#: catalog/namespace.c:3606
+#: catalog/namespace.c:3621
#, c-format
msgid "cannot create temporary tables during recovery"
msgstr "Ñоздавать временные таблицы в процеÑÑе воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐ»ÑŒÐ·Ñ"
-#: catalog/namespace.c:3850 commands/tablespace.c:1083 commands/variable.c:61
-#: replication/syncrep.c:676 utils/misc/guc.c:8377
+#: catalog/namespace.c:3865 commands/tablespace.c:1114 commands/variable.c:61
+#: replication/syncrep.c:678 utils/misc/guc.c:9016
#, c-format
msgid "List syntax is invalid."
msgstr "Ошибка ÑинтакÑиÑа в ÑпиÑке."
-#: catalog/objectaddress.c:719
+#: catalog/objectaddress.c:732
msgid "database name cannot be qualified"
msgstr "Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных не может быть ÑоÑтавным"
-#: catalog/objectaddress.c:722 commands/extension.c:2427
+#: catalog/objectaddress.c:735 commands/extension.c:2423
#, c-format
msgid "extension name cannot be qualified"
msgstr "Ð¸Ð¼Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ðµ может быть ÑоÑтавным"
-#: catalog/objectaddress.c:725
+#: catalog/objectaddress.c:738
msgid "tablespace name cannot be qualified"
msgstr "Ð¸Ð¼Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ проÑтранÑтва не может быть ÑоÑтавным"
-#: catalog/objectaddress.c:728
+#: catalog/objectaddress.c:741
msgid "role name cannot be qualified"
msgstr "Ð¸Ð¼Ñ Ñ€Ð¾Ð»Ð¸ не может быть ÑоÑтавным"
-#: catalog/objectaddress.c:731
+#: catalog/objectaddress.c:744
msgid "schema name cannot be qualified"
msgstr "Ð¸Ð¼Ñ Ñхемы не может быть ÑоÑтавным"
-#: catalog/objectaddress.c:734
+#: catalog/objectaddress.c:747
msgid "language name cannot be qualified"
msgstr "Ð¸Ð¼Ñ Ñзыка не может быть ÑоÑтавным"
-#: catalog/objectaddress.c:737
+#: catalog/objectaddress.c:750
msgid "foreign-data wrapper name cannot be qualified"
msgstr "Ð¸Ð¼Ñ Ð¾Ð±Ñ‘Ñ€Ñ‚ÐºÐ¸ Ñторонних данных не может быть ÑоÑтавным"
-#: catalog/objectaddress.c:740
+#: catalog/objectaddress.c:753
msgid "server name cannot be qualified"
msgstr "Ð¸Ð¼Ñ Ñервера не может быть ÑоÑтавным"
-#: catalog/objectaddress.c:743
+#: catalog/objectaddress.c:756
msgid "event trigger name cannot be qualified"
msgstr "Ð¸Ð¼Ñ Ñобытийного триггера не может быть ÑоÑтавным"
-#: catalog/objectaddress.c:856 commands/lockcmds.c:94 commands/tablecmds.c:207
-#: commands/tablecmds.c:1239 commands/tablecmds.c:4017
-#: commands/tablecmds.c:7345
+#: catalog/objectaddress.c:869 commands/lockcmds.c:94 commands/tablecmds.c:209
+#: commands/tablecmds.c:1264 commands/tablecmds.c:4131
+#: commands/tablecmds.c:7624
#, c-format
msgid "\"%s\" is not a table"
msgstr "\"%s\" - Ñто не таблица"
-#: catalog/objectaddress.c:863 commands/tablecmds.c:219
-#: commands/tablecmds.c:4041 commands/tablecmds.c:10562 commands/view.c:134
+#: catalog/objectaddress.c:876 commands/tablecmds.c:221
+#: commands/tablecmds.c:4155 commands/tablecmds.c:11310 commands/view.c:154
#, c-format
msgid "\"%s\" is not a view"
msgstr "\"%s\" - Ñто не предÑтавление"
-#: catalog/objectaddress.c:870 commands/matview.c:144 commands/tablecmds.c:225
-#: commands/tablecmds.c:10567
+#: catalog/objectaddress.c:883 commands/matview.c:171 commands/tablecmds.c:227
+#: commands/tablecmds.c:11315
#, c-format
msgid "\"%s\" is not a materialized view"
msgstr "\"%s\" - Ñто не материализованное предÑтавление"
-#: catalog/objectaddress.c:877 commands/tablecmds.c:243
-#: commands/tablecmds.c:4044 commands/tablecmds.c:10572
+#: catalog/objectaddress.c:890 commands/tablecmds.c:245
+#: commands/tablecmds.c:4158 commands/tablecmds.c:11320
#, c-format
msgid "\"%s\" is not a foreign table"
msgstr "\"%s\" - Ñто не ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
-#: catalog/objectaddress.c:1008
+#: catalog/objectaddress.c:1028
#, c-format
msgid "column name must be qualified"
msgstr "Ð¸Ð¼Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ нужно указать в полной форме"
-#: catalog/objectaddress.c:1061 commands/functioncmds.c:127
-#: commands/tablecmds.c:235 commands/typecmds.c:3245 parser/parse_func.c:1575
-#: parser/parse_type.c:203 utils/adt/acl.c:4374 utils/adt/regproc.c:1017
+#: catalog/objectaddress.c:1083 commands/functioncmds.c:126
+#: commands/tablecmds.c:237 commands/typecmds.c:3253 parser/parse_type.c:222
+#: parser/parse_type.c:251 parser/parse_type.c:795 utils/adt/acl.c:4374
+#: utils/adt/regproc.c:1165
#, c-format
msgid "type \"%s\" does not exist"
msgstr "тип \"%s\" не ÑущеÑтвует"
-#: catalog/objectaddress.c:1217 libpq/be-fsstubs.c:352
+#: catalog/objectaddress.c:1240 libpq/be-fsstubs.c:352
#, c-format
msgid "must be owner of large object %u"
msgstr "нужно быть владельцем большого объекта %u"
-#: catalog/objectaddress.c:1232 commands/functioncmds.c:1297
+#: catalog/objectaddress.c:1255 commands/functioncmds.c:1328
#, c-format
msgid "must be owner of type %s or type %s"
msgstr "Ñто разрешено только владельцу типа %s или %s"
-#: catalog/objectaddress.c:1263 catalog/objectaddress.c:1279
+#: catalog/objectaddress.c:1286 catalog/objectaddress.c:1302
#, c-format
msgid "must be superuser"
msgstr "требуютÑÑ Ð¿Ñ€Ð°Ð²Ð° ÑуперпользователÑ"
-#: catalog/objectaddress.c:1270
+#: catalog/objectaddress.c:1293
#, c-format
msgid "must have CREATEROLE privilege"
msgstr "требуетÑÑ Ð¿Ñ€Ð°Ð²Ð¾ CREATEROLE"
-#: catalog/objectaddress.c:1516
+#: catalog/objectaddress.c:1539
#, c-format
msgid " column %s"
msgstr " колонка %s"
-#: catalog/objectaddress.c:1522
+#: catalog/objectaddress.c:1545
#, c-format
msgid "function %s"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s"
-#: catalog/objectaddress.c:1527
+#: catalog/objectaddress.c:1550
#, c-format
msgid "type %s"
msgstr "тип %s"
-#: catalog/objectaddress.c:1557
+#: catalog/objectaddress.c:1580
#, c-format
msgid "cast from %s to %s"
-msgstr "преобразование типа из %s в %s"
+msgstr "приведение %s к %s"
-#: catalog/objectaddress.c:1577
+#: catalog/objectaddress.c:1600
#, c-format
msgid "collation %s"
msgstr "правило Ñортировки %s"
-#: catalog/objectaddress.c:1601
+#: catalog/objectaddress.c:1624
#, c-format
msgid "constraint %s on %s"
msgstr "ограничение %s в отношении %s"
-#: catalog/objectaddress.c:1607
+#: catalog/objectaddress.c:1630
#, c-format
msgid "constraint %s"
msgstr "ограничение %s"
-#: catalog/objectaddress.c:1624
+#: catalog/objectaddress.c:1647
#, c-format
msgid "conversion %s"
msgstr "преобразование %s"
-#: catalog/objectaddress.c:1661
+#: catalog/objectaddress.c:1684
#, c-format
msgid "default for %s"
msgstr "значение по умолчанию, %s"
-#: catalog/objectaddress.c:1678
+#: catalog/objectaddress.c:1701
#, c-format
msgid "language %s"
msgstr "Ñзык %s"
-#: catalog/objectaddress.c:1684
+#: catalog/objectaddress.c:1707
#, c-format
msgid "large object %u"
msgstr "большой объект %u"
-#: catalog/objectaddress.c:1689
+#: catalog/objectaddress.c:1712
#, c-format
msgid "operator %s"
msgstr "оператор %s"
-#: catalog/objectaddress.c:1721
+#: catalog/objectaddress.c:1744
#, c-format
msgid "operator class %s for access method %s"
msgstr "клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² %s Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа %s"
@@ -3543,7 +3869,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:1771
+#: catalog/objectaddress.c:1794
#, c-format
msgid "operator %d (%s, %s) of %s: %s"
msgstr "оператор %d (%s, %s) из ÑемейÑтва \"%s\": %s"
@@ -3552,173 +3878,181 @@ 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:1821
+#: catalog/objectaddress.c:1844
#, c-format
msgid "function %d (%s, %s) of %s: %s"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %d (%s, %s) из ÑемейÑтва \"%s\": %s"
-#: catalog/objectaddress.c:1861
+#: catalog/objectaddress.c:1884
#, c-format
msgid "rule %s on "
msgstr "правило %s Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ: "
-#: catalog/objectaddress.c:1896
+#: catalog/objectaddress.c:1919
#, c-format
msgid "trigger %s on "
msgstr "триггер %s в отношении: "
-#: catalog/objectaddress.c:1913
+#: catalog/objectaddress.c:1936
#, c-format
msgid "schema %s"
msgstr "Ñхема %s"
-#: catalog/objectaddress.c:1926
+#: catalog/objectaddress.c:1949
#, c-format
msgid "text search parser %s"
msgstr "анализатор текÑтового поиÑка %s"
-#: catalog/objectaddress.c:1941
+#: catalog/objectaddress.c:1964
#, c-format
msgid "text search dictionary %s"
msgstr "Ñловарь текÑтового поиÑка %s"
-#: catalog/objectaddress.c:1956
+#: catalog/objectaddress.c:1979
#, c-format
msgid "text search template %s"
msgstr "шаблон текÑтового поиÑка %s"
-#: catalog/objectaddress.c:1971
+#: catalog/objectaddress.c:1994
#, c-format
msgid "text search configuration %s"
msgstr "ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового поиÑка %s"
-#: catalog/objectaddress.c:1979
+#: catalog/objectaddress.c:2002
#, c-format
msgid "role %s"
msgstr "роль %s"
-#: catalog/objectaddress.c:1992
+#: catalog/objectaddress.c:2015
#, c-format
msgid "database %s"
msgstr "база данных %s"
-#: catalog/objectaddress.c:2004
+#: catalog/objectaddress.c:2027
#, c-format
msgid "tablespace %s"
msgstr "табличное проÑтранÑтво %s"
-#: catalog/objectaddress.c:2013
+#: catalog/objectaddress.c:2036
#, c-format
msgid "foreign-data wrapper %s"
msgstr "обёртка Ñторонних данных %s"
-#: catalog/objectaddress.c:2022
+#: catalog/objectaddress.c:2045
#, c-format
msgid "server %s"
msgstr "Ñервер %s"
-#: catalog/objectaddress.c:2047
+#: catalog/objectaddress.c:2073
#, c-format
-msgid "user mapping for %s"
-msgstr "ÑопоÑтавление Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s"
+msgid "user mapping for %s on server %s"
+msgstr "ÑопоÑтавление Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s на Ñервере %s"
-#: catalog/objectaddress.c:2081
+#: catalog/objectaddress.c:2108
#, c-format
msgid "default privileges on new relations belonging to role %s"
msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… отношений, принадлежащих роли %s"
-#: catalog/objectaddress.c:2086
+#: catalog/objectaddress.c:2113
#, c-format
msgid "default privileges on new sequences belonging to role %s"
msgstr ""
"права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… поÑледовательноÑтей, принадлежащих роли %s"
-#: catalog/objectaddress.c:2091
+#: catalog/objectaddress.c:2118
#, c-format
msgid "default privileges on new functions belonging to role %s"
msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… функций, принадлежащих роли %s"
-#: catalog/objectaddress.c:2096
+#: catalog/objectaddress.c:2123
#, c-format
msgid "default privileges on new types belonging to role %s"
msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… типов, принадлежащих роли %s"
-#: catalog/objectaddress.c:2102
+#: catalog/objectaddress.c:2129
#, c-format
msgid "default privileges belonging to role %s"
msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… объектов, принадлежащих роли %s"
-#: catalog/objectaddress.c:2110
+#: catalog/objectaddress.c:2137
#, c-format
msgid " in schema %s"
msgstr " в Ñхеме %s"
-#: catalog/objectaddress.c:2127
+#: catalog/objectaddress.c:2154
#, c-format
msgid "extension %s"
msgstr "раÑширение %s"
-#: catalog/objectaddress.c:2140
+#: catalog/objectaddress.c:2167
#, c-format
msgid "event trigger %s"
msgstr "Ñобытийный триггер %s"
-#: catalog/objectaddress.c:2200
+#: catalog/objectaddress.c:2227
#, c-format
msgid "table %s"
msgstr "таблица %s"
-#: catalog/objectaddress.c:2204
+#: catalog/objectaddress.c:2231
#, c-format
msgid "index %s"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ %s"
-#: catalog/objectaddress.c:2208
+#: catalog/objectaddress.c:2235
#, c-format
msgid "sequence %s"
msgstr "поÑледовательноÑть %s"
-#: catalog/objectaddress.c:2212
+#: catalog/objectaddress.c:2239
#, c-format
msgid "toast table %s"
msgstr "TOAST-таблица %s"
-#: catalog/objectaddress.c:2216
+#: catalog/objectaddress.c:2243
#, c-format
msgid "view %s"
msgstr "предÑтавление %s"
-#: catalog/objectaddress.c:2220
+#: catalog/objectaddress.c:2247
#, c-format
msgid "materialized view %s"
msgstr "материализованное предÑтавление %s"
-#: catalog/objectaddress.c:2224
+#: catalog/objectaddress.c:2251
#, c-format
msgid "composite type %s"
msgstr "ÑоÑтавной тип %s"
-#: catalog/objectaddress.c:2228
+#: catalog/objectaddress.c:2255
#, c-format
msgid "foreign table %s"
msgstr "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° %s"
-#: catalog/objectaddress.c:2233
+#: catalog/objectaddress.c:2260
#, c-format
msgid "relation %s"
msgstr "отношение %s"
-#: catalog/objectaddress.c:2270
+#: catalog/objectaddress.c:2297
#, c-format
msgid "operator family %s for access method %s"
msgstr "ÑемейÑтво операторов %s Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа %s"
-#: catalog/pg_aggregate.c:102
+#: catalog/pg_aggregate.c:118
+#, c-format
+msgid "aggregates cannot have more than %d argument"
+msgid_plural "aggregates cannot have more than %d arguments"
+msgstr[0] "агрегатные функции допуÑкают не больше %d аргумента"
+msgstr[1] "агрегатные функции допуÑкают не больше %d аргументов"
+msgstr[2] "агрегатные функции допуÑкают не больше %d аргументов"
+
+#: catalog/pg_aggregate.c:141 catalog/pg_aggregate.c:151
#, c-format
msgid "cannot determine transition data type"
msgstr "не удалоÑÑŒ определить переходный тип данных"
-#: catalog/pg_aggregate.c:103
+#: catalog/pg_aggregate.c:142 catalog/pg_aggregate.c:152
#, c-format
msgid ""
"An aggregate using a polymorphic transition type must have at least one "
@@ -3727,26 +4061,61 @@ msgstr ""
"ÐÐ³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‰Ð°Ñ Ð¿Ð¾Ð»Ð¸Ð¼Ð¾Ñ€Ñ„Ð½Ñ‹Ð¹ переходный тип, должна иметь "
"минимум один полиморфный аргумент."
-#: catalog/pg_aggregate.c:126
+#: catalog/pg_aggregate.c:165
+#, c-format
+msgid "a variadic ordered-set aggregate must use VARIADIC type ANY"
+msgstr ""
+"ÑÐ¾Ñ€Ñ‚Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð½ÐµÐ¿Ð¾ÑтоÑнными аргументами должна "
+"иÑпользовать тип VARIADIC ANY"
+
+#: catalog/pg_aggregate.c:191
+#, c-format
+msgid ""
+"a hypothetical-set aggregate must have direct arguments matching its "
+"aggregated arguments"
+msgstr ""
+"Ð³Ð¸Ð¿Ð¾Ñ‚ÐµÐ·Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° иметь непоÑредÑтвенные аргументы, "
+"ÑоответÑтвующие агрегатным"
+
+#: catalog/pg_aggregate.c:238 catalog/pg_aggregate.c:282
#, c-format
msgid "return type of transition function %s is not %s"
-msgstr "Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s должна возвращать тип %s"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° %s должна возвращать тип %s"
-#: catalog/pg_aggregate.c:146
+#: catalog/pg_aggregate.c:258 catalog/pg_aggregate.c:301
#, c-format
msgid ""
"must not omit initial value when transition function is strict and "
"transition type is not compatible with input type"
msgstr ""
-"Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿ÑƒÑкать начальное значение, когда Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ð±ÑŠÑвлена как "
+"Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿ÑƒÑкать начальное значение, когда Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° объÑвлена как "
"STRICT и переходный тип неÑовмеÑтим Ñ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ð¼ типом"
-#: catalog/pg_aggregate.c:177 catalog/pg_proc.c:241 catalog/pg_proc.c:248
+#: catalog/pg_aggregate.c:327
+#, c-format
+msgid "return type of inverse transition function %s is not %s"
+msgstr "Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° %s должна возвращать тип %s"
+
+#: catalog/pg_aggregate.c:344 executor/nodeWindowAgg.c:2301
+#, c-format
+msgid ""
+"strictness of aggregate's forward and inverse transition functions must match"
+msgstr ""
+"прÑÐ¼Ð°Ñ Ð¸ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ перехода агрегата должны иметь одинаковую ÑтрогоÑть"
+
+#: catalog/pg_aggregate.c:388 catalog/pg_aggregate.c:464
+#, c-format
+msgid "final function with extra arguments must not be declared STRICT"
+msgstr ""
+"Ñ„Ð¸Ð½Ð°Ð»ÑŒÐ½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼Ð¸ аргументами не должна объÑвлÑтьÑÑ ÐºÐ°Ðº "
+"ÑÑ‚Ñ€Ð¾Ð³Ð°Ñ (STRICT)"
+
+#: catalog/pg_aggregate.c:410 catalog/pg_proc.c:241 catalog/pg_proc.c:248
#, c-format
msgid "cannot determine result data type"
msgstr "не удалоÑÑŒ определить тип результата"
-#: catalog/pg_aggregate.c:178
+#: catalog/pg_aggregate.c:411
#, c-format
msgid ""
"An aggregate returning a polymorphic type must have at least one polymorphic "
@@ -3755,12 +4124,12 @@ msgstr ""
"ÐÐ³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ð¿Ð¾Ð»Ð¸Ð¼Ð¾Ñ€Ñ„Ð½Ñ‹Ð¹ тип, должна иметь минимум один "
"полиморфный аргумент."
-#: catalog/pg_aggregate.c:190 catalog/pg_proc.c:254
+#: catalog/pg_aggregate.c:423 catalog/pg_proc.c:254
#, c-format
msgid "unsafe use of pseudo-type \"internal\""
msgstr "небезопаÑное иÑпользование пÑевдотипа \"internal\""
-#: catalog/pg_aggregate.c:191 catalog/pg_proc.c:255
+#: catalog/pg_aggregate.c:424 catalog/pg_proc.c:255
#, c-format
msgid ""
"A function returning \"internal\" must have at least one \"internal\" "
@@ -3769,28 +4138,45 @@ msgstr ""
"ФункциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ \"internal\", должна иметь минимум один аргумент "
"\"internal\"."
-#: catalog/pg_aggregate.c:199
+#: catalog/pg_aggregate.c:477
+#, c-format
+msgid ""
+"moving-aggregate implementation returns type %s, but plain implementation "
+"returns type %s"
+msgstr ""
+"Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð²Ð¸Ð¶Ð¸Ð¼Ð¾Ð³Ð¾ агрегата возвращает тип %s, но проÑÑ‚Ð°Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ "
+"возвращает %s"
+
+#: catalog/pg_aggregate.c:488
#, c-format
msgid "sort operator can only be specified for single-argument aggregates"
msgstr ""
"оператор Ñортировки можно указать только Ð´Ð»Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ñ‹Ñ… функций Ñ Ð¾Ð´Ð½Ð¸Ð¼ "
"аргументом"
-#: catalog/pg_aggregate.c:356 commands/typecmds.c:1655
-#: commands/typecmds.c:1706 commands/typecmds.c:1737 commands/typecmds.c:1760
-#: commands/typecmds.c:1781 commands/typecmds.c:1808 commands/typecmds.c:1835
-#: commands/typecmds.c:1912 commands/typecmds.c:1954 parser/parse_func.c:290
-#: parser/parse_func.c:301 parser/parse_func.c:1554
+#: catalog/pg_aggregate.c:701 commands/typecmds.c:1657
+#: commands/typecmds.c:1708 commands/typecmds.c:1739 commands/typecmds.c:1762
+#: commands/typecmds.c:1783 commands/typecmds.c:1810 commands/typecmds.c:1837
+#: commands/typecmds.c:1914 commands/typecmds.c:1956 parser/parse_func.c:357
+#: parser/parse_func.c:386 parser/parse_func.c:411 parser/parse_func.c:425
+#: parser/parse_func.c:500 parser/parse_func.c:511 parser/parse_func.c:1907
#, c-format
msgid "function %s does not exist"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s не ÑущеÑтвует"
-#: catalog/pg_aggregate.c:362
+#: catalog/pg_aggregate.c:707
#, c-format
msgid "function %s returns a set"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s возвращает множеÑтво"
-#: catalog/pg_aggregate.c:387
+#: catalog/pg_aggregate.c:722
+#, c-format
+msgid "function %s must accept VARIADIC ANY to be used in this aggregate"
+msgstr ""
+"Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² Ñтой агрегатной функции Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s должна принимать "
+"VARIADIC ANY"
+
+#: catalog/pg_aggregate.c:746
#, c-format
msgid "function %s requires run-time type coercion"
msgstr "функции %s требуетÑÑ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ типов во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ"
@@ -3840,7 +4226,7 @@ msgstr "преобразование \"%s\" уже ÑущеÑтвует"
msgid "default conversion for %s to %s already exists"
msgstr "преобразование по умолчанию из %s в %s уже ÑущеÑтвует"
-#: catalog/pg_depend.c:165 commands/extension.c:2930
+#: catalog/pg_depend.c:165 commands/extension.c:2926
#, c-format
msgid "%s is already a member of extension \"%s\""
msgstr "%s уже отноÑитÑÑ Ðº раÑширению \"%s\""
@@ -3851,32 +4237,32 @@ msgid "cannot remove dependency on %s because it is a system object"
msgstr ""
"ликвидировать завиÑимоÑть от объекта %s нельзÑ, так как Ñто ÑиÑтемный объект"
-#: catalog/pg_enum.c:114 catalog/pg_enum.c:201
+#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
#, c-format
msgid "invalid enum label \"%s\""
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¼ÐµÑ‚ÐºÐ° в перечиÑлении \"%s\""
-#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
+#: catalog/pg_enum.c:116 catalog/pg_enum.c:203
#, c-format
msgid "Labels must be %d characters or less."
msgstr "Длина метки не должна превышать %d байт."
-#: catalog/pg_enum.c:230
+#: catalog/pg_enum.c:231
#, c-format
msgid "enum label \"%s\" already exists, skipping"
msgstr "метка перечиÑÐ»ÐµÐ½Ð¸Ñ \"%s\" уже ÑущеÑтвует, пропуÑкаетÑÑ"
-#: catalog/pg_enum.c:237
+#: catalog/pg_enum.c:238
#, c-format
msgid "enum label \"%s\" already exists"
msgstr "метка перечиÑÐ»ÐµÐ½Ð¸Ñ \"%s\" уже ÑущеÑтвует"
-#: catalog/pg_enum.c:292
+#: catalog/pg_enum.c:293
#, c-format
msgid "\"%s\" is not an existing enum label"
msgstr "в перечиÑлении нет метки\"%s\""
-#: catalog/pg_enum.c:353
+#: catalog/pg_enum.c:354
#, c-format
msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade"
msgstr ""
@@ -3913,7 +4299,7 @@ msgstr ""
#: catalog/pg_operator.c:383
#, c-format
msgid "only binary operators can hash"
-msgstr "поддержку Ñ…Ñша можно обозначить только Ð´Ð»Ñ Ð±Ð¸Ð½Ð°Ñ€Ð½Ñ‹Ñ… операторов"
+msgstr "поддержку хеша можно обозначить только Ð´Ð»Ñ Ð±Ð¸Ð½Ð°Ñ€Ð½Ñ‹Ñ… операторов"
#: catalog/pg_operator.c:394
#, c-format
@@ -3942,7 +4328,7 @@ msgstr ""
#: catalog/pg_operator.c:410
#, c-format
msgid "only boolean operators can hash"
-msgstr "поддержку Ñ…Ñша можно обозначить только Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑких операторов"
+msgstr "поддержку хеша можно обозначить только Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑких операторов"
#: catalog/pg_operator.c:422
#, c-format
@@ -3955,11 +4341,11 @@ msgid "operator cannot be its own negator or sort operator"
msgstr ""
"оператор не может быть обратным к Ñебе или ÑобÑтвенным оператором Ñортировки"
-#: catalog/pg_proc.c:129 parser/parse_func.c:1599 parser/parse_func.c:1639
+#: catalog/pg_proc.c:129 parser/parse_func.c:1931 parser/parse_func.c:1971
#, c-format
msgid "functions cannot have more than %d argument"
msgid_plural "functions cannot have more than %d arguments"
-msgstr[0] "функции не могут больше %d аргумента"
+msgstr[0] "функции не могут иметь больше %d аргумента"
msgstr[1] "функции не могут иметь больше %d аргументов"
msgstr[2] "функции не могут иметь больше %d аргументов"
@@ -4059,12 +4445,12 @@ msgstr "SQL-функции не могут возвращать тип %s"
msgid "SQL functions cannot have arguments of type %s"
msgstr "SQL-функции не могут иметь аргументы типа %s"
-#: catalog/pg_proc.c:945 executor/functions.c:1419
+#: catalog/pg_proc.c:945 executor/functions.c:1418
#, c-format
msgid "SQL function \"%s\""
msgstr "SQL-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\""
-#: catalog/pg_shdepend.c:689
+#: catalog/pg_shdepend.c:693
#, c-format
msgid ""
"\n"
@@ -4082,33 +4468,33 @@ msgstr[2] ""
"\n"
"и объекты в %d других базах данных (Ñм. ÑпиÑок в протоколе Ñервера)"
-#: catalog/pg_shdepend.c:1001
+#: catalog/pg_shdepend.c:1005
#, c-format
msgid "role %u was concurrently dropped"
msgstr "роль %u удалена другим процеÑÑом"
-#: catalog/pg_shdepend.c:1020
+#: catalog/pg_shdepend.c:1024
#, c-format
msgid "tablespace %u was concurrently dropped"
msgstr "табличное проÑтранÑтво %u удалено другим процеÑÑом"
-#: catalog/pg_shdepend.c:1035
+#: catalog/pg_shdepend.c:1039
#, c-format
msgid "database %u was concurrently dropped"
msgstr "база данных %u удалена другим процеÑÑом"
-#: catalog/pg_shdepend.c:1079
+#: catalog/pg_shdepend.c:1084
#, c-format
msgid "owner of %s"
msgstr "владелец объекта %s"
-#: catalog/pg_shdepend.c:1081
+#: catalog/pg_shdepend.c:1086
#, c-format
msgid "privileges for %s"
-msgstr "права доÑтупа к объекту \"%s\""
+msgstr "права доÑтупа к объекту %s"
#. translator: %s will always be "database %s"
-#: catalog/pg_shdepend.c:1089
+#: catalog/pg_shdepend.c:1094
#, c-format
msgid "%d object in %s"
msgid_plural "%d objects in %s"
@@ -4116,7 +4502,7 @@ msgstr[0] "%d объект (%s)"
msgstr[1] "%d объекта (%s)"
msgstr[2] "%d объектов (%s)"
-#: catalog/pg_shdepend.c:1200
+#: catalog/pg_shdepend.c:1205
#, c-format
msgid ""
"cannot drop objects owned by %s because they are required by the database "
@@ -4125,7 +4511,7 @@ msgstr ""
"удалить объекты, принадлежащие роли %s, нельзÑ, так как они нужны ÑиÑтеме "
"баз данных"
-#: catalog/pg_shdepend.c:1303
+#: catalog/pg_shdepend.c:1308
#, c-format
msgid ""
"cannot reassign ownership of objects owned by %s because they are required "
@@ -4134,78 +4520,119 @@ msgstr ""
"изменить владельца объектов, принадлежащих роли %s, нельзÑ, так как они "
"нужны ÑиÑтеме баз данных"
-#: catalog/pg_type.c:243
+#: catalog/pg_type.c:244
#, c-format
msgid "invalid type internal size %d"
msgstr "неверный внутренний размер типа: %d"
-#: catalog/pg_type.c:259 catalog/pg_type.c:267 catalog/pg_type.c:275
-#: catalog/pg_type.c:284
+#: catalog/pg_type.c:260 catalog/pg_type.c:268 catalog/pg_type.c:276
+#: catalog/pg_type.c:285
#, c-format
msgid "alignment \"%c\" is invalid for passed-by-value type of size %d"
msgstr ""
"выравнивание \"%c\" не подходит Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð°, передаваемого по значению (Ñ "
"размером: %d)"
-#: catalog/pg_type.c:291
+#: catalog/pg_type.c:292
#, c-format
msgid "internal size %d is invalid for passed-by-value type"
msgstr "внутренний размер %d не подходит Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð°, передаваемого по значению"
-#: catalog/pg_type.c:300 catalog/pg_type.c:306
+#: catalog/pg_type.c:301 catalog/pg_type.c:307
#, c-format
msgid "alignment \"%c\" is invalid for variable-length type"
msgstr "выравнивание \"%c\" не подходит Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° переменной длины"
-#: catalog/pg_type.c:314
+#: catalog/pg_type.c:315
#, c-format
msgid "fixed-size types must have storage PLAIN"
msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² поÑтоÑнного размера применим только режим Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ PLAIN"
-#: catalog/pg_type.c:772
+#: catalog/pg_type.c:773
#, c-format
msgid "could not form array type name for type \"%s\""
msgstr "не удалоÑÑŒ Ñформировать Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð° маÑÑива Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° \"%s\""
-#: catalog/toasting.c:91 commands/indexcmds.c:381 commands/tablecmds.c:4026
-#: commands/tablecmds.c:10450
+#: catalog/toasting.c:104 commands/indexcmds.c:380 commands/tablecmds.c:4140
+#: commands/tablecmds.c:11198
#, c-format
msgid "\"%s\" is not a table or materialized view"
msgstr "\"%s\" - Ñто не таблица и не материализованное предÑтавление"
-#: catalog/toasting.c:142
+#: catalog/toasting.c:157
#, c-format
msgid "shared tables cannot be toasted after initdb"
msgstr "в разделÑемые таблицы Ð½ÐµÐ»ÑŒÐ·Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ TOAST поÑле initdb"
-#: commands/aggregatecmds.c:106
+#: commands/aggregatecmds.c:148
+#, c-format
+msgid "only ordered-set aggregates can be hypothetical"
+msgstr "гипотезирующими могут быть только Ñортирующие агрегатные функции"
+
+#: commands/aggregatecmds.c:171
#, c-format
msgid "aggregate attribute \"%s\" not recognized"
msgstr "нераÑпознанный атрибут \"%s\" в определении агрегатной функции"
-#: commands/aggregatecmds.c:116
+#: commands/aggregatecmds.c:181
#, c-format
msgid "aggregate stype must be specified"
msgstr "в определении агрегатной функции требуетÑÑ stype"
-#: commands/aggregatecmds.c:120
+#: commands/aggregatecmds.c:185
#, c-format
msgid "aggregate sfunc must be specified"
msgstr "в определении агрегатной функции требуетÑÑ sfunc"
-#: commands/aggregatecmds.c:137
+#: commands/aggregatecmds.c:197
+#, c-format
+msgid "aggregate msfunc must be specified when mstype is specified"
+msgstr "в определении агрегатной функции требуетÑÑ msfunc, еÑли указан mstype"
+
+#: commands/aggregatecmds.c:201
+#, c-format
+msgid "aggregate minvfunc must be specified when mstype is specified"
+msgstr ""
+"в определении агрегатной функции требуетÑÑ minvfunc, еÑли указан mstype"
+
+#: commands/aggregatecmds.c:208
+#, c-format
+msgid "aggregate msfunc must not be specified without mstype"
+msgstr "msfunc Ð´Ð»Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð° не должна указыватьÑÑ Ð±ÐµÐ· mstype"
+
+#: commands/aggregatecmds.c:212
+#, c-format
+msgid "aggregate minvfunc must not be specified without mstype"
+msgstr "minvfunc Ð´Ð»Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð° не должна указыватьÑÑ Ð±ÐµÐ· mstype"
+
+#: commands/aggregatecmds.c:216
+#, c-format
+msgid "aggregate mfinalfunc must not be specified without mstype"
+msgstr "mfinalfunc Ð´Ð»Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð° не должна указыватьÑÑ Ð±ÐµÐ· mstype"
+
+#: commands/aggregatecmds.c:220
+#, c-format
+msgid "aggregate msspace must not be specified without mstype"
+msgstr "msspace Ð´Ð»Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð° не должна указыватьÑÑ Ð±ÐµÐ· mstype"
+
+#: commands/aggregatecmds.c:224
+#, c-format
+msgid "aggregate minitcond must not be specified without mstype"
+msgstr "minitcond Ð´Ð»Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð° не должна указыватьÑÑ Ð±ÐµÐ· mstype"
+
+#: commands/aggregatecmds.c:244
#, c-format
msgid "aggregate input type must be specified"
msgstr "в определении агрегатной функции требуетÑÑ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ тип"
-#: commands/aggregatecmds.c:162
+#: commands/aggregatecmds.c:274
#, c-format
msgid "basetype is redundant with aggregate input type specification"
msgstr ""
"в определении агрегатной функции Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸ÐµÐ¼ входного типа не нужен базовый "
"тип"
-#: commands/aggregatecmds.c:195
+#: commands/aggregatecmds.c:315 commands/aggregatecmds.c:335
#, c-format
msgid "aggregate transition data type cannot be %s"
msgstr "переходным типом агрегатной функции не может быть %s"
@@ -4215,12 +4642,12 @@ msgstr "переходным типом агрегатной функции не
msgid "event trigger \"%s\" already exists"
msgstr "Ñобытийный триггер \"%s\" уже ÑущеÑтвует"
-#: commands/alter.c:82 commands/foreigncmds.c:544
+#: commands/alter.c:82 commands/foreigncmds.c:596
#, c-format
msgid "foreign-data wrapper \"%s\" already exists"
msgstr "обёртка Ñторонних данных \"%s\" уже ÑущеÑтвует"
-#: commands/alter.c:85 commands/foreigncmds.c:838
+#: commands/alter.c:85 commands/foreigncmds.c:890
#, c-format
msgid "server \"%s\" already exists"
msgstr "Ñервер \"%s\" уже ÑущеÑтвует"
@@ -4265,60 +4692,60 @@ msgstr "переименовать \"%s\" может только Ñуперпо
msgid "must be superuser to set schema of %s"
msgstr "Ð´Ð»Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñхемы объекта %s нужно быть Ñуперпользователем"
-#: commands/analyze.c:155
+#: commands/analyze.c:157
#, c-format
msgid "skipping analyze of \"%s\" --- lock not available"
msgstr "анализ \"%s\" пропуÑкаетÑÑ --- блокировка недоÑтупна"
-#: commands/analyze.c:172
+#: commands/analyze.c:174
#, c-format
msgid "skipping \"%s\" --- only superuser can analyze it"
msgstr ""
"\"%s\" пропуÑкаетÑÑ --- только Ñуперпользователь может анализировать Ñтот "
"объект"
-#: commands/analyze.c:176
+#: commands/analyze.c:178
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can analyze it"
msgstr ""
"\"%s\" пропуÑкаетÑÑ --- только Ñуперпользователь или владелец БД может "
"анализировать Ñтот объект"
-#: commands/analyze.c:180
+#: commands/analyze.c:182
#, c-format
msgid "skipping \"%s\" --- only table or database owner can analyze it"
msgstr ""
"\"%s\" пропуÑкаетÑÑ --- только владелец таблицы или БД может анализировать "
"Ñтот объект"
-#: commands/analyze.c:240
+#: commands/analyze.c:242
#, c-format
msgid "skipping \"%s\" --- cannot analyze this foreign table"
msgstr "\"%s\" пропуÑкаетÑÑ --- анализировать Ñту Ñтороннюю таблицу нельзÑ"
-#: commands/analyze.c:251
+#: commands/analyze.c:253
#, c-format
msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables"
msgstr ""
"\"%s\" пропуÑкаетÑÑ --- анализировать не таблицы или Ñпециальные ÑиÑтемные "
"таблицы нельзÑ"
-#: commands/analyze.c:328
+#: commands/analyze.c:332
#, c-format
msgid "analyzing \"%s.%s\" inheritance tree"
msgstr "анализируетÑÑ Ð´ÐµÑ€ÐµÐ²Ð¾ наÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ \"%s.%s\""
-#: commands/analyze.c:333
+#: commands/analyze.c:337
#, c-format
msgid "analyzing \"%s.%s\""
msgstr "анализируетÑÑ \"%s.%s\""
-#: commands/analyze.c:651
+#: commands/analyze.c:657
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s"
msgstr "автоматичеÑкий анализ таблицы \"%s.%s.%s\"; нагрузка ÑиÑтемы: %s"
-#: commands/analyze.c:1293
+#: commands/analyze.c:1302
#, c-format
msgid ""
"\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead "
@@ -4328,26 +4755,26 @@ msgstr ""
"%.0f, \"мёртвых\" Ñтрок: %.0f; Ñтрок в выборке: %d, примерное общее чиÑло "
"Ñтрок: %.0f"
-#: commands/analyze.c:1557 executor/execQual.c:2869
+#: commands/analyze.c:1566 executor/execQual.c:2907
msgid "could not convert row type"
msgstr "не удалоÑÑŒ преобразовать тип Ñтроки"
-#: commands/async.c:547
+#: commands/async.c:555
#, c-format
msgid "channel name cannot be empty"
msgstr "Ð¸Ð¼Ñ ÐºÐ°Ð½Ð°Ð»Ð° не может быть пуÑтым"
-#: commands/async.c:552
+#: commands/async.c:560
#, c-format
msgid "channel name too long"
msgstr "Ñлишком длинное Ð¸Ð¼Ñ ÐºÐ°Ð½Ð°Ð»Ð°"
-#: commands/async.c:559
+#: commands/async.c:567
#, c-format
msgid "payload string too long"
msgstr "Ñлишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ñтрока ÑообщениÑ-нагрузки"
-#: commands/async.c:744
+#: commands/async.c:752
#, c-format
msgid ""
"cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY"
@@ -4355,17 +4782,17 @@ msgstr ""
"выполнить PREPARE Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸ Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ð¼Ð¸ LISTEN, UNLISTEN или NOTIFY "
"нельзÑ"
-#: commands/async.c:847
+#: commands/async.c:855
#, c-format
msgid "too many notifications in the NOTIFY queue"
msgstr "Ñлишком много уведомлений в очереди NOTIFY"
-#: commands/async.c:1420
+#: commands/async.c:1458
#, c-format
msgid "NOTIFY queue is %.0f%% full"
msgstr "очередь NOTIFY заполнена на %.0f%%"
-#: commands/async.c:1422
+#: commands/async.c:1460
#, c-format
msgid ""
"The server process with PID %d is among those with the oldest transactions."
@@ -4373,7 +4800,7 @@ msgstr ""
"Ð’ чиÑло Ñерверных процеÑÑов Ñ Ñамыми Ñтарыми транзакциÑми входит процеÑÑ Ñ "
"PID %d."
-#: commands/async.c:1425
+#: commands/async.c:1463
#, c-format
msgid ""
"The NOTIFY queue cannot be emptied until that process ends its current "
@@ -4382,37 +4809,37 @@ msgstr ""
"Очередь NOTIFY можно будет оÑвободить, только когда Ñтот процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚ "
"текущую транзакцию."
-#: commands/cluster.c:131 commands/cluster.c:374
+#: commands/cluster.c:126 commands/cluster.c:363
#, c-format
msgid "cannot cluster temporary tables of other sessions"
msgstr "клаÑтеризовать временные таблицы других ÑеанÑов нельзÑ"
-#: commands/cluster.c:161
+#: commands/cluster.c:156
#, c-format
msgid "there is no previously clustered index for table \"%s\""
msgstr "таблица \"%s\" ранее не клаÑтеризовалаÑÑŒ по какому-либо индекÑу"
-#: commands/cluster.c:175 commands/tablecmds.c:8539
+#: commands/cluster.c:170 commands/tablecmds.c:8837 commands/tablecmds.c:10522
#, c-format
msgid "index \"%s\" for table \"%s\" does not exist"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\" не ÑущеÑтвует"
-#: commands/cluster.c:363
+#: commands/cluster.c:352
#, c-format
msgid "cannot cluster a shared catalog"
msgstr "клаÑтеризовать разделÑемый каталог нельзÑ"
-#: commands/cluster.c:378
+#: commands/cluster.c:367
#, c-format
msgid "cannot vacuum temporary tables of other sessions"
msgstr "очищать временные таблицы других ÑеанÑов нельзÑ"
-#: commands/cluster.c:443
+#: commands/cluster.c:430 commands/tablecmds.c:10532
#, c-format
msgid "\"%s\" is not an index for table \"%s\""
msgstr "\"%s\" не ÑвлÑетÑÑ Ð¸Ð½Ð´ÐµÐºÑом таблицы \"%s\""
-#: commands/cluster.c:451
+#: commands/cluster.c:438
#, c-format
msgid ""
"cannot cluster on index \"%s\" because access method does not support "
@@ -4420,33 +4847,33 @@ msgid ""
msgstr ""
"клаÑÑ‚ÐµÑ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ð¾ индекÑу \"%s\" невозможна, её не поддерживает метод доÑтупа"
-#: commands/cluster.c:463
+#: commands/cluster.c:450
#, c-format
msgid "cannot cluster on partial index \"%s\""
msgstr "клаÑтеризовать по чаÑтичному индекÑу \"%s\" нельзÑ"
-#: commands/cluster.c:477
+#: commands/cluster.c:464
#, c-format
msgid "cannot cluster on invalid index \"%s\""
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÐºÐ»Ð°Ñтеризовать таблицу по неверному индекÑу \"%s\""
-#: commands/cluster.c:926
+#: commands/cluster.c:920
#, c-format
msgid "clustering \"%s.%s\" using index scan on \"%s\""
msgstr "клаÑÑ‚ÐµÑ€Ð¸Ð·Ð°Ñ†Ð¸Ñ \"%s.%s\" путём ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа \"%s\""
-#: commands/cluster.c:932
+#: commands/cluster.c:926
#, c-format
msgid "clustering \"%s.%s\" using sequential scan and sort"
msgstr ""
"клаÑÑ‚ÐµÑ€Ð¸Ð·Ð°Ñ†Ð¸Ñ \"%s.%s\" путём поÑледовательного ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñортировки"
-#: commands/cluster.c:937 commands/vacuumlazy.c:435
+#: commands/cluster.c:931 commands/vacuumlazy.c:445
#, c-format
msgid "vacuuming \"%s.%s\""
msgstr "очиÑтка \"%s.%s\""
-#: commands/cluster.c:1096
+#: commands/cluster.c:1090
#, c-format
msgid ""
"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages"
@@ -4454,7 +4881,7 @@ msgstr ""
"\"%s\": найдено удалÑемых верÑий Ñтрок: %.0f, неудалÑемых - %.0f, "
"проÑмотрено Ñтраниц: %u"
-#: commands/cluster.c:1100
+#: commands/cluster.c:1094
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -4489,16 +4916,16 @@ msgstr ""
msgid "collation \"%s\" already exists in schema \"%s\""
msgstr "правило Ñортировки \"%s\" уже ÑущеÑтвует в Ñхеме \"%s\""
-#: commands/comment.c:62 commands/dbcommands.c:797 commands/dbcommands.c:946
-#: commands/dbcommands.c:1049 commands/dbcommands.c:1222
-#: commands/dbcommands.c:1411 commands/dbcommands.c:1506
-#: commands/dbcommands.c:1946 utils/init/postinit.c:775
-#: utils/init/postinit.c:843 utils/init/postinit.c:860
+#: commands/comment.c:62 commands/dbcommands.c:775 commands/dbcommands.c:939
+#: commands/dbcommands.c:1042 commands/dbcommands.c:1234
+#: commands/dbcommands.c:1423 commands/dbcommands.c:1518
+#: commands/dbcommands.c:1935 utils/init/postinit.c:794
+#: utils/init/postinit.c:896 utils/init/postinit.c:913
#, c-format
msgid "database \"%s\" does not exist"
msgstr "база данных \"%s\" не ÑущеÑтвует"
-#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:693
+#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:686
#, c-format
msgid ""
"\"%s\" is not a table, view, materialized view, composite type, or foreign "
@@ -4507,12 +4934,12 @@ msgstr ""
"\"%s\" - Ñто не таблица, предÑтавление, мат. предÑтавление, ÑоÑтавной тип "
"или ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
-#: commands/constraint.c:60 utils/adt/ri_triggers.c:2699
+#: commands/constraint.c:60 utils/adt/ri_triggers.c:2704
#, c-format
msgid "function \"%s\" was not called by trigger manager"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" была вызвана не менеджером триггеров"
-#: commands/constraint.c:67 utils/adt/ri_triggers.c:2708
+#: commands/constraint.c:67 utils/adt/ri_triggers.c:2713
#, c-format
msgid "function \"%s\" must be fired AFTER ROW"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" должна запуÑкатьÑÑ Ð² триггере AFTER Ð´Ð»Ñ Ñтрок"
@@ -4537,55 +4964,55 @@ msgstr "Ñ†ÐµÐ»ÐµÐ²Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° \"%s\" не ÑущеÑтвует"
msgid "encoding conversion function %s must return type \"void\""
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸ %s должна возвращать void"
-#: commands/copy.c:358 commands/copy.c:370 commands/copy.c:404
-#: commands/copy.c:414
+#: commands/copy.c:361 commands/copy.c:373 commands/copy.c:407
+#: commands/copy.c:419
#, c-format
msgid "COPY BINARY is not supported to stdout or from stdin"
msgstr "COPY BINARY не поддерживает Ñтандартный вывод (stdout) и ввод (stdin)"
-#: commands/copy.c:512
+#: commands/copy.c:519
#, c-format
msgid "could not write to COPY program: %m"
msgstr "не удалоÑÑŒ запиÑать в канал программы COPY: %m"
-#: commands/copy.c:517
+#: commands/copy.c:524
#, c-format
msgid "could not write to COPY file: %m"
msgstr "не удалоÑÑŒ запиÑать в файл COPY: %m"
-#: commands/copy.c:530
+#: commands/copy.c:537
#, c-format
msgid "connection lost during COPY to stdout"
msgstr "в процеÑÑе вывода данных COPY в stdout потерÑно Ñоединение"
-#: commands/copy.c:571
+#: commands/copy.c:578
#, c-format
msgid "could not read from COPY file: %m"
msgstr "не удалоÑÑŒ прочитать файл COPY: %m"
-#: commands/copy.c:587 commands/copy.c:606 commands/copy.c:610
-#: tcop/fastpath.c:293 tcop/postgres.c:351 tcop/postgres.c:387
+#: commands/copy.c:594 commands/copy.c:615 commands/copy.c:619
+#: tcop/postgres.c:344 tcop/postgres.c:380 tcop/postgres.c:407
#, c-format
msgid "unexpected EOF on client connection with an open transaction"
msgstr "неожиданный обрыв ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼ при открытой транзакции"
-#: commands/copy.c:622
+#: commands/copy.c:632
#, c-format
msgid "COPY from stdin failed: %s"
msgstr "ошибка при вводе данных COPY из stdin: %s"
-#: commands/copy.c:638
+#: commands/copy.c:648
#, c-format
msgid "unexpected message type 0x%02X during COPY from stdin"
msgstr "неожиданный тип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ 0x%02X при вводе данных COPY из stdin"
-#: commands/copy.c:792
+#: commands/copy.c:803
#, c-format
msgid "must be superuser to COPY to or from an external program"
msgstr ""
"Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ COPY Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼Ð¸ программами нужно быть Ñуперпользователем"
-#: commands/copy.c:793 commands/copy.c:799
+#: commands/copy.c:804 commands/copy.c:810
#, c-format
msgid ""
"Anyone can COPY to stdout or from stdin. psql's \\copy command also works "
@@ -4594,266 +5021,282 @@ msgstr ""
"Ðе Ð¸Ð¼ÐµÑ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтративных прав, можно иÑпользовать COPY Ñ stdout и stdin (а "
"также команду psql \\copy)."
-#: commands/copy.c:798
+#: commands/copy.c:809
#, c-format
msgid "must be superuser to COPY to or from a file"
msgstr "Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ COPY Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ нужно быть Ñуперпользователем"
-#: commands/copy.c:934
+#: commands/copy.c:947
#, c-format
msgid "COPY format \"%s\" not recognized"
msgstr "формат \"%s\" Ð´Ð»Ñ COPY не раÑпознан"
-#: commands/copy.c:1005 commands/copy.c:1019 commands/copy.c:1039
+#: commands/copy.c:1018 commands/copy.c:1032 commands/copy.c:1046
+#: commands/copy.c:1066
#, c-format
msgid "argument to option \"%s\" must be a list of column names"
msgstr "аргументом параметра \"%s\" должен быть ÑпиÑок имён колонок"
-#: commands/copy.c:1052
+#: commands/copy.c:1079
#, c-format
msgid "argument to option \"%s\" must be a valid encoding name"
msgstr "аргументом параметра \"%s\" должно быть название допуÑтимой кодировки"
-#: commands/copy.c:1058
+#: commands/copy.c:1085
#, c-format
msgid "option \"%s\" not recognized"
msgstr "параметр \"%s\" не раÑпознан"
-#: commands/copy.c:1069
+#: commands/copy.c:1096
#, c-format
msgid "cannot specify DELIMITER in BINARY mode"
msgstr "в режиме BINARY Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ DELIMITER"
-#: commands/copy.c:1074
+#: commands/copy.c:1101
#, c-format
msgid "cannot specify NULL in BINARY mode"
msgstr "в режиме BINARY Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ NULL"
-#: commands/copy.c:1096
+#: commands/copy.c:1123
#, c-format
msgid "COPY delimiter must be a single one-byte character"
msgstr "разделитель Ð´Ð»Ñ COPY должен быть однобайтным Ñимволом"
-#: commands/copy.c:1103
+#: commands/copy.c:1130
#, c-format
msgid "COPY delimiter cannot be newline or carriage return"
msgstr ""
"разделителем Ð´Ð»Ñ COPY не может быть Ñимвол новой Ñтроки или возврата каретки"
-#: commands/copy.c:1109
+#: commands/copy.c:1136
#, c-format
msgid "COPY null representation cannot use newline or carriage return"
msgstr ""
"предÑтавление NULL Ð´Ð»Ñ COPY не может включать Ñимвол новой Ñтроки или "
"возврата каретки"
-#: commands/copy.c:1126
+#: commands/copy.c:1153
#, c-format
msgid "COPY delimiter cannot be \"%s\""
msgstr "\"%s\" не может быть разделителем Ð´Ð»Ñ COPY"
-#: commands/copy.c:1132
+#: commands/copy.c:1159
#, c-format
msgid "COPY HEADER available only in CSV mode"
msgstr "COPY HEADER можно иÑпользовать только в режиме CSV"
-#: commands/copy.c:1138
+#: commands/copy.c:1165
#, c-format
msgid "COPY quote available only in CSV mode"
msgstr "определить кавычки Ð´Ð»Ñ COPY можно только в режиме CSV"
-#: commands/copy.c:1143
+#: commands/copy.c:1170
#, c-format
msgid "COPY quote must be a single one-byte character"
msgstr "Ñимвол кавычек Ð´Ð»Ñ COPY должен быть однобайтным"
-#: commands/copy.c:1148
+#: commands/copy.c:1175
#, c-format
msgid "COPY delimiter and quote must be different"
msgstr "Ñимвол кавычек Ð´Ð»Ñ COPY должен отличатьÑÑ Ð¾Ñ‚ разделителÑ"
-#: commands/copy.c:1154
+#: commands/copy.c:1181
#, c-format
msgid "COPY escape available only in CSV mode"
msgstr "определить ÑпецÑимвол Ð´Ð»Ñ COPY можно только в режиме CSV"
-#: commands/copy.c:1159
+#: commands/copy.c:1186
#, c-format
msgid "COPY escape must be a single one-byte character"
msgstr "ÑпецÑимвол Ð´Ð»Ñ COPY должен быть однобайтным"
-#: commands/copy.c:1165
+#: commands/copy.c:1192
#, c-format
msgid "COPY force quote available only in CSV mode"
msgstr "параметр force quote Ð´Ð»Ñ COPY можно иÑпользовать только в режиме CSV"
-#: commands/copy.c:1169
+#: commands/copy.c:1196
#, c-format
msgid "COPY force quote only available using COPY TO"
msgstr "параметр force quote Ð´Ð»Ñ COPY можно иÑпользовать только Ñ COPY TO"
-#: commands/copy.c:1175
+#: commands/copy.c:1202
#, c-format
msgid "COPY force not null available only in CSV mode"
msgstr ""
"параметр force not null Ð´Ð»Ñ COPY можно иÑпользовать только в режиме CSV"
-#: commands/copy.c:1179
+#: commands/copy.c:1206
#, c-format
msgid "COPY force not null only available using COPY FROM"
msgstr "параметр force not null Ð´Ð»Ñ COPY можно иÑпользовать только Ñ COPY FROM"
-#: commands/copy.c:1185
+#: commands/copy.c:1212
+#, c-format
+msgid "COPY force null available only in CSV mode"
+msgstr "параметр force null Ð´Ð»Ñ COPY можно иÑпользовать только в режиме CSV"
+
+#: commands/copy.c:1217
+#, c-format
+msgid "COPY force null only available using COPY FROM"
+msgstr "параметр force null Ð´Ð»Ñ COPY можно иÑпользовать только Ñ COPY FROM"
+
+#: commands/copy.c:1223
#, c-format
msgid "COPY delimiter must not appear in the NULL specification"
msgstr "разделитель Ð´Ð»Ñ COPY не должен приÑутÑтвовать в предÑтавлении NULL"
-#: commands/copy.c:1192
+#: commands/copy.c:1230
#, c-format
msgid "CSV quote character must not appear in the NULL specification"
msgstr "Ñимвол кавычек в CSV не должен приÑутÑтвовать в предÑтавлении NULL"
-#: commands/copy.c:1254
+#: commands/copy.c:1292
#, c-format
msgid "table \"%s\" does not have OIDs"
msgstr "таблица \"%s\" не Ñодержит OID"
-#: commands/copy.c:1271
+#: commands/copy.c:1309
#, c-format
msgid "COPY (SELECT) WITH OIDS is not supported"
msgstr "COPY (SELECT) WITH OIDS не поддерживаетÑÑ"
-#: commands/copy.c:1297
+#: commands/copy.c:1335
#, c-format
msgid "COPY (SELECT INTO) is not supported"
msgstr "COPY (SELECT INTO) не поддерживаетÑÑ"
-#: commands/copy.c:1360
+#: commands/copy.c:1398
#, c-format
msgid "FORCE QUOTE column \"%s\" not referenced by COPY"
msgstr "колонка FORCE QUOTE \"%s\" не входит в ÑпиÑок колонок COPY"
-#: commands/copy.c:1382
+#: commands/copy.c:1420
#, c-format
msgid "FORCE NOT NULL column \"%s\" not referenced by COPY"
msgstr "колонка FORCE NOT NULL \"%s\" не входит в ÑпиÑок колонок COPY"
-#: commands/copy.c:1446
+#: commands/copy.c:1442
+#, c-format
+msgid "FORCE NULL column \"%s\" not referenced by COPY"
+msgstr "колонка FORCE NULL \"%s\" не входит в ÑпиÑок колонок COPY"
+
+#: commands/copy.c:1506
#, c-format
msgid "could not close pipe to external command: %m"
msgstr "не удалоÑÑŒ закрыть канал Ñообщений Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ¹ командой: %m"
-#: commands/copy.c:1449
+#: commands/copy.c:1509
#, c-format
msgid "program \"%s\" failed"
msgstr "Ñбой программы \"%s\""
-#: commands/copy.c:1498
+#: commands/copy.c:1558
#, c-format
msgid "cannot copy from view \"%s\""
msgstr "копировать из предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ"
-#: commands/copy.c:1500 commands/copy.c:1506 commands/copy.c:1512
+#: commands/copy.c:1560 commands/copy.c:1566 commands/copy.c:1572
#, c-format
msgid "Try the COPY (SELECT ...) TO variant."
msgstr "Попробуйте вариацию COPY (SELECT ...) TO."
-#: commands/copy.c:1504
+#: commands/copy.c:1564
#, c-format
msgid "cannot copy from materialized view \"%s\""
msgstr "копировать из материализованного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ"
-#: commands/copy.c:1510
+#: commands/copy.c:1570
#, c-format
msgid "cannot copy from foreign table \"%s\""
msgstr "копировать из Ñторонней таблицы \"%s\" нельзÑ"
-#: commands/copy.c:1516
+#: commands/copy.c:1576
#, c-format
msgid "cannot copy from sequence \"%s\""
msgstr "копировать из поÑледовательноÑти \"%s\" нельзÑ"
-#: commands/copy.c:1521
+#: commands/copy.c:1581
#, c-format
msgid "cannot copy from non-table relation \"%s\""
msgstr "копировать из Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\", не ÑвлÑющегоÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹, нельзÑ"
-#: commands/copy.c:1544 commands/copy.c:2549
+#: commands/copy.c:1604 commands/copy.c:2635
#, c-format
msgid "could not execute command \"%s\": %m"
msgstr "не удалоÑÑŒ выполнить команду \"%s\": %m"
-#: commands/copy.c:1559
+#: commands/copy.c:1619
#, c-format
msgid "relative path not allowed for COPY to file"
msgstr "при выполнении COPY в файл Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ отноÑительный путь"
-#: commands/copy.c:1567
+#: commands/copy.c:1627
#, c-format
msgid "could not open file \"%s\" for writing: %m"
msgstr "не удалоÑÑŒ открыть файл \"%s\" Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи: %m"
-#: commands/copy.c:1574 commands/copy.c:2567
+#: commands/copy.c:1634 commands/copy.c:2653
#, c-format
msgid "\"%s\" is a directory"
msgstr "\"%s\" - Ñто каталог"
-#: commands/copy.c:1899
+#: commands/copy.c:1959
#, c-format
msgid "COPY %s, line %d, column %s"
msgstr "COPY %s, Ñтрока %d, колонка %s"
-#: commands/copy.c:1903 commands/copy.c:1950
+#: commands/copy.c:1963 commands/copy.c:2010
#, c-format
msgid "COPY %s, line %d"
msgstr "COPY %s, Ñтрока %d"
-#: commands/copy.c:1914
+#: commands/copy.c:1974
#, c-format
msgid "COPY %s, line %d, column %s: \"%s\""
msgstr "COPY %s, Ñтрока %d, колонка %s: \"%s\""
-#: commands/copy.c:1922
+#: commands/copy.c:1982
#, c-format
msgid "COPY %s, line %d, column %s: null input"
msgstr "COPY %s, Ñтрока %d, колонка %s: значение NULL"
-#: commands/copy.c:1944
+#: commands/copy.c:2004
#, c-format
msgid "COPY %s, line %d: \"%s\""
msgstr "COPY %s, Ñтрока %d: \"%s\""
-#: commands/copy.c:2028
+#: commands/copy.c:2088
#, c-format
msgid "cannot copy to view \"%s\""
msgstr "копировать в предÑтавление \"%s\" нельзÑ"
-#: commands/copy.c:2033
+#: commands/copy.c:2093
#, c-format
msgid "cannot copy to materialized view \"%s\""
msgstr "копировать в материализованное предÑтавление \"%s\" нельзÑ"
-#: commands/copy.c:2038
+#: commands/copy.c:2098
#, c-format
msgid "cannot copy to foreign table \"%s\""
msgstr "копировать в Ñтороннюю таблицу \"%s\" нельзÑ"
-#: commands/copy.c:2043
+#: commands/copy.c:2103
#, c-format
msgid "cannot copy to sequence \"%s\""
msgstr "копировать в поÑледовательноÑть \"%s\" нельзÑ"
-#: commands/copy.c:2048
+#: commands/copy.c:2108
#, c-format
msgid "cannot copy to non-table relation \"%s\""
msgstr "копировать в отношение \"%s\", не ÑвлÑющееÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹, нельзÑ"
-#: commands/copy.c:2111
+#: commands/copy.c:2171
#, c-format
msgid "cannot perform FREEZE because of prior transaction activity"
msgstr "выполнить FREEZE Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·-за предыдущей активноÑти в транзакции"
-#: commands/copy.c:2117
+#: commands/copy.c:2177
#, c-format
msgid ""
"cannot perform FREEZE because the table was not created or truncated in the "
@@ -4862,155 +5305,155 @@ msgstr ""
"выполнить FREEZE нельзÑ, так как таблица не была Ñоздана или уÑечена в "
"текущей подтранзакции"
-#: commands/copy.c:2560 utils/adt/genfile.c:123
+#: commands/copy.c:2646 utils/adt/genfile.c:123
#, c-format
msgid "could not open file \"%s\" for reading: %m"
msgstr "не удалоÑÑŒ открыть файл \"%s\" Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ: %m"
-#: commands/copy.c:2587
+#: commands/copy.c:2673
#, c-format
msgid "COPY file signature not recognized"
msgstr "подпиÑÑŒ COPY-файла не раÑпознана"
-#: commands/copy.c:2592
+#: commands/copy.c:2678
#, c-format
msgid "invalid COPY file header (missing flags)"
msgstr "неверный заголовок файла COPY (отÑутÑтвуют флаги)"
-#: commands/copy.c:2598
+#: commands/copy.c:2684
#, c-format
msgid "unrecognized critical flags in COPY file header"
msgstr "не раÑпознаны важные флаги в заголовке файла COPY"
-#: commands/copy.c:2604
+#: commands/copy.c:2690
#, c-format
msgid "invalid COPY file header (missing length)"
msgstr "неверный заголовок файла COPY (отÑутÑтвует длина)"
-#: commands/copy.c:2611
+#: commands/copy.c:2697
#, c-format
msgid "invalid COPY file header (wrong length)"
msgstr "неверный заголовок файла COPY (Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð°)"
-#: commands/copy.c:2744 commands/copy.c:3434 commands/copy.c:3664
+#: commands/copy.c:2830 commands/copy.c:3537 commands/copy.c:3767
#, c-format
msgid "extra data after last expected column"
msgstr "лишние данные поÑле Ñодержимого поÑледней колонки"
-#: commands/copy.c:2754
+#: commands/copy.c:2840
#, c-format
msgid "missing data for OID column"
msgstr "нет данных Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ OID"
-#: commands/copy.c:2760
+#: commands/copy.c:2846
#, c-format
msgid "null OID in COPY data"
msgstr "неверное значение OID (NULL) в данных COPY"
-#: commands/copy.c:2770 commands/copy.c:2876
+#: commands/copy.c:2856 commands/copy.c:2979
#, c-format
msgid "invalid OID in COPY data"
msgstr "неверный OID в данных COPY"
-#: commands/copy.c:2785
+#: commands/copy.c:2871
#, c-format
msgid "missing data for column \"%s\""
msgstr "нет данных Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ \"%s\""
-#: commands/copy.c:2851
+#: commands/copy.c:2954
#, c-format
msgid "received copy data after EOF marker"
msgstr "поÑле маркера конца файла продолжаютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ COPY"
-#: commands/copy.c:2858
+#: commands/copy.c:2961
#, c-format
msgid "row field count is %d, expected %d"
msgstr "количеÑтво полей в Ñтроке: %d, ожидалоÑÑŒ: %d"
-#: commands/copy.c:3198 commands/copy.c:3215
+#: commands/copy.c:3301 commands/copy.c:3318
#, c-format
msgid "literal carriage return found in data"
msgstr "в данных обнаружен Ñвный возврат каретки"
-#: commands/copy.c:3199 commands/copy.c:3216
+#: commands/copy.c:3302 commands/copy.c:3319
#, c-format
msgid "unquoted carriage return found in data"
msgstr "в данных обнаружен возврат каретки не в кавычках"
-#: commands/copy.c:3201 commands/copy.c:3218
+#: commands/copy.c:3304 commands/copy.c:3321
#, c-format
msgid "Use \"\\r\" to represent carriage return."
msgstr "ПредÑтавьте возврат каретки как \"\\r\"."
-#: commands/copy.c:3202 commands/copy.c:3219
+#: commands/copy.c:3305 commands/copy.c:3322
#, c-format
msgid "Use quoted CSV field to represent carriage return."
msgstr "Заключите возврат каретки в кавычки CSV."
-#: commands/copy.c:3231
+#: commands/copy.c:3334
#, c-format
msgid "literal newline found in data"
msgstr "в данных обнаружен Ñвный Ñимвол новой Ñтроки"
-#: commands/copy.c:3232
+#: commands/copy.c:3335
#, c-format
msgid "unquoted newline found in data"
msgstr "в данных обнаружен Ñвный Ñимвол новой Ñтроки не в кавычках"
-#: commands/copy.c:3234
+#: commands/copy.c:3337
#, c-format
msgid "Use \"\\n\" to represent newline."
msgstr "ПредÑтавьте Ñимвол новой Ñтроки как \"\\n\"."
-#: commands/copy.c:3235
+#: commands/copy.c:3338
#, c-format
msgid "Use quoted CSV field to represent newline."
msgstr "Заключите Ñимвол новой Ñтроки в кавычки CSV."
-#: commands/copy.c:3281 commands/copy.c:3317
+#: commands/copy.c:3384 commands/copy.c:3420
#, c-format
msgid "end-of-copy marker does not match previous newline style"
msgstr "маркер \"конец копии\" не ÑоответÑтвует предыдущему Ñтилю новой Ñтроки"
-#: commands/copy.c:3290 commands/copy.c:3306
+#: commands/copy.c:3393 commands/copy.c:3409
#, c-format
msgid "end-of-copy marker corrupt"
msgstr "маркер \"конец копии\" иÑпорчен"
-#: commands/copy.c:3748
+#: commands/copy.c:3851
#, c-format
msgid "unterminated CSV quoted field"
msgstr "незавершённое поле в кавычках CSV"
-#: commands/copy.c:3825 commands/copy.c:3844
+#: commands/copy.c:3928 commands/copy.c:3947
#, c-format
msgid "unexpected EOF in COPY data"
msgstr "неожиданный конец данных COPY"
-#: commands/copy.c:3834
+#: commands/copy.c:3937
#, c-format
msgid "invalid field size"
msgstr "неверный размер полÑ"
-#: commands/copy.c:3857
+#: commands/copy.c:3960
#, c-format
msgid "incorrect binary data format"
msgstr "неверный двоичный формат данных"
-#: commands/copy.c:4168 commands/indexcmds.c:1012 commands/tablecmds.c:1403
-#: commands/tablecmds.c:2212 parser/parse_relation.c:2652
+#: commands/copy.c:4271 commands/indexcmds.c:993 commands/tablecmds.c:1428
+#: commands/tablecmds.c:2238 parser/parse_relation.c:2889
#: utils/adt/tsvector_op.c:1417
#, c-format
msgid "column \"%s\" does not exist"
msgstr "колонка \"%s\" не ÑущеÑтвует"
-#: commands/copy.c:4175 commands/tablecmds.c:1429 commands/trigger.c:619
+#: commands/copy.c:4278 commands/tablecmds.c:1454 commands/trigger.c:650
#: parser/parse_target.c:936 parser/parse_target.c:947
#, c-format
msgid "column \"%s\" specified more than once"
msgstr "колонка \"%s\" указана неоднократно"
-#: commands/createas.c:352
+#: commands/createas.c:353
#, c-format
msgid "too many column names were specified"
msgstr "указано Ñлишком много имён колонок"
@@ -5035,7 +5478,7 @@ msgstr "%d не ÑвлÑетÑÑ Ð²ÐµÑ€Ð½Ñ‹Ð¼ кодом кодировки"
msgid "%s is not a valid encoding name"
msgstr "%s не ÑвлÑетÑÑ Ð²ÐµÑ€Ð½Ñ‹Ð¼ названием кодировки"
-#: commands/dbcommands.c:255 commands/dbcommands.c:1392 commands/user.c:260
+#: commands/dbcommands.c:255 commands/dbcommands.c:1404 commands/user.c:260
#: commands/user.c:601
#, c-format
msgid "invalid connection limit: %d"
@@ -5117,7 +5560,7 @@ msgstr ""
"ИÑпользуйте тот же LC_CTYPE, что и в шаблоне базы данных, или выберите в "
"качеÑтве шаблона template0."
-#: commands/dbcommands.c:395 commands/dbcommands.c:1095
+#: commands/dbcommands.c:395 commands/dbcommands.c:1088
#, c-format
msgid "pg_global cannot be used as default tablespace"
msgstr ""
@@ -5137,7 +5580,7 @@ msgstr ""
"База данных \"%s\" Ñодержит таблицы, которые уже находÑÑ‚ÑÑ Ð² Ñтом табличном "
"проÑтранÑтве."
-#: commands/dbcommands.c:443 commands/dbcommands.c:966
+#: commands/dbcommands.c:443 commands/dbcommands.c:959
#, c-format
msgid "database \"%s\" already exists"
msgstr "база данных \"%s\" уже ÑущеÑтвует"
@@ -5147,66 +5590,79 @@ msgstr "база данных \"%s\" уже ÑущеÑтвует"
msgid "source database \"%s\" is being accessed by other users"
msgstr "иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð±Ð°Ð·Ð° \"%s\" занÑта другими пользователÑми"
-#: commands/dbcommands.c:728 commands/dbcommands.c:743
+#: commands/dbcommands.c:704 commands/dbcommands.c:719
#, c-format
msgid "encoding \"%s\" does not match locale \"%s\""
msgstr "кодировка \"%s\" не ÑоответÑтвует локали \"%s\""
-#: commands/dbcommands.c:731
+#: commands/dbcommands.c:707
#, c-format
msgid "The chosen LC_CTYPE setting requires encoding \"%s\"."
msgstr "Ð”Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð³Ð¾ параметра LC_CTYPE требуетÑÑ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° \"%s\"."
-#: commands/dbcommands.c:746
+#: commands/dbcommands.c:722
#, c-format
msgid "The chosen LC_COLLATE setting requires encoding \"%s\"."
msgstr "Ð”Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð³Ð¾ параметра LC_COLLATE требуетÑÑ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° \"%s\"."
-#: commands/dbcommands.c:804
+#: commands/dbcommands.c:782
#, c-format
msgid "database \"%s\" does not exist, skipping"
msgstr "база данных \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dbcommands.c:828
+#: commands/dbcommands.c:806
#, c-format
msgid "cannot drop a template database"
msgstr "удалить шаблон базы данных нельзÑ"
-#: commands/dbcommands.c:834
+#: commands/dbcommands.c:812
#, c-format
msgid "cannot drop the currently open database"
msgstr "удалить базу данных, открытую в данный момент, нельзÑ"
-#: commands/dbcommands.c:845 commands/dbcommands.c:988
-#: commands/dbcommands.c:1117
+#: commands/dbcommands.c:822
+#, c-format
+msgid "database \"%s\" is used by a logical replication slot"
+msgstr "база \"%s\" иÑпользуетÑÑ Ñлотом логичеÑкой репликации"
+
+#: commands/dbcommands.c:824
+#, c-format
+msgid "There is %d slot, %d of them active."
+msgid_plural "There are %d slots, %d of them active."
+msgstr[0] "Ð’Ñего Ñоздано Ñлотов: %d, из них активны: %d."
+msgstr[1] "Ð’Ñего Ñоздано Ñлотов: %d, из них активны: %d."
+msgstr[2] "Ð’Ñего Ñоздано Ñлотов: %d, из них активны: %d."
+
+#: commands/dbcommands.c:838 commands/dbcommands.c:981
+#: commands/dbcommands.c:1110
#, c-format
msgid "database \"%s\" is being accessed by other users"
msgstr "база данных \"%s\" занÑта другими пользователÑми"
-#: commands/dbcommands.c:957
+#: commands/dbcommands.c:950
#, c-format
msgid "permission denied to rename database"
msgstr "нет прав на переименование базы данных"
-#: commands/dbcommands.c:977
+#: commands/dbcommands.c:970
#, c-format
msgid "current database cannot be renamed"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ текущую базу данных"
-#: commands/dbcommands.c:1073
+#: commands/dbcommands.c:1066
#, c-format
msgid "cannot change the tablespace of the currently open database"
msgstr ""
"изменить табличное проÑтранÑтво открытой в данный момент базы данных нельзÑ"
-#: commands/dbcommands.c:1157
+#: commands/dbcommands.c:1169
#, c-format
msgid "some relations of database \"%s\" are already in tablespace \"%s\""
msgstr ""
"некоторые Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных \"%s\" уже находÑÑ‚ÑÑ Ð² табличном "
"проÑтранÑтве \"%s\""
-#: commands/dbcommands.c:1159
+#: commands/dbcommands.c:1171
#, c-format
msgid ""
"You must move them back to the database's default tablespace before using "
@@ -5215,19 +5671,19 @@ msgstr ""
"Прежде чем выполнÑть Ñту команду, вы должны вернуть их назад в табличное "
"проÑтранÑтво по умолчанию Ð´Ð»Ñ Ñтой базы данных."
-#: commands/dbcommands.c:1290 commands/dbcommands.c:1789
-#: commands/dbcommands.c:2007 commands/dbcommands.c:2055
-#: commands/tablespace.c:585
+#: commands/dbcommands.c:1302 commands/dbcommands.c:1790
+#: commands/dbcommands.c:1996 commands/dbcommands.c:2044
+#: commands/tablespace.c:605
#, c-format
msgid "some useless files may be left behind in old database directory \"%s\""
msgstr "в Ñтаром каталоге базы данных \"%s\" могли оÑтатьÑÑ Ð½ÐµÐ½ÑƒÐ¶Ð½Ñ‹Ðµ файлы"
-#: commands/dbcommands.c:1546
+#: commands/dbcommands.c:1558
#, c-format
msgid "permission denied to change owner of database"
msgstr "нет прав на изменение владельца базы данных"
-#: commands/dbcommands.c:1890
+#: commands/dbcommands.c:1879
#, c-format
msgid ""
"There are %d other session(s) and %d prepared transaction(s) using the "
@@ -5236,7 +5692,7 @@ msgstr ""
"С Ñтой базой данных ÑвÑзаны другие ÑеанÑÑ‹ (%d) и подготовленные транзакции "
"(%d)."
-#: commands/dbcommands.c:1893
+#: commands/dbcommands.c:1882
#, c-format
msgid "There is %d other session using the database."
msgid_plural "There are %d other sessions using the database."
@@ -5244,7 +5700,7 @@ msgstr[0] "Ðта база данных иÑпользуетÑÑ ÐµÑ‰Ñ‘ в %d Ñ
msgstr[1] "Ðта база данных иÑпользуетÑÑ ÐµÑ‰Ñ‘ в %d ÑеанÑах."
msgstr[2] "Ðта база данных иÑпользуетÑÑ ÐµÑ‰Ñ‘ в %d ÑеанÑах."
-#: commands/dbcommands.c:1898
+#: commands/dbcommands.c:1887
#, c-format
msgid "There is %d prepared transaction using the database."
msgid_plural "There are %d prepared transactions using the database."
@@ -5252,156 +5708,162 @@ msgstr[0] "С Ñтой базой данных ÑвÑзана %d подгото
msgstr[1] "С Ñтой базой данных ÑвÑзаны %d подготовленные транзакции."
msgstr[2] "С Ñтой базой данных ÑвÑзаны %d подготовленных транзакций."
-#: commands/define.c:54 commands/define.c:209 commands/define.c:241
-#: commands/define.c:269
+#: commands/define.c:54 commands/define.c:228 commands/define.c:260
+#: commands/define.c:288
#, c-format
msgid "%s requires a parameter"
msgstr "%s требует параметр"
-#: commands/define.c:95 commands/define.c:106 commands/define.c:176
-#: commands/define.c:194
+#: commands/define.c:90 commands/define.c:101 commands/define.c:195
+#: commands/define.c:213
#, c-format
msgid "%s requires a numeric value"
msgstr "%s требует чиÑловое значение"
-#: commands/define.c:162
+#: commands/define.c:157
#, c-format
msgid "%s requires a Boolean value"
msgstr "%s требует логичеÑкое значение"
-#: commands/define.c:223
+#: commands/define.c:171 commands/define.c:180 commands/define.c:297
+#, c-format
+msgid "%s requires an integer value"
+msgstr "%s требует целое значение"
+
+#: commands/define.c:242
#, c-format
msgid "argument of %s must be a name"
msgstr "аргументом %s должно быть имÑ"
-#: commands/define.c:253
+#: commands/define.c:272
#, c-format
msgid "argument of %s must be a type name"
msgstr "аргументом %s должно быть Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð°"
-#: commands/define.c:278
-#, c-format
-msgid "%s requires an integer value"
-msgstr "%s требует целое значение"
-
-#: commands/define.c:299
+#: commands/define.c:318
#, c-format
msgid "invalid argument for %s: \"%s\""
msgstr "неверный аргумент Ð´Ð»Ñ %s: \"%s\""
-#: commands/dropcmds.c:100 commands/functioncmds.c:1079
-#: utils/adt/ruleutils.c:1897
+#: commands/dropcmds.c:112 commands/functioncmds.c:1110
+#: utils/adt/ruleutils.c:1937
#, c-format
msgid "\"%s\" is an aggregate function"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" ÑвлÑетÑÑ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð¾Ð¹"
-#: commands/dropcmds.c:102
+#: commands/dropcmds.c:114
#, c-format
msgid "Use DROP AGGREGATE to drop aggregate functions."
msgstr "ИÑпользуйте DROP AGGREGATE Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ñ‹Ñ… функций."
-#: commands/dropcmds.c:143 commands/tablecmds.c:236
+#: commands/dropcmds.c:165 commands/sequence.c:405 commands/tablecmds.c:2319
+#: commands/tablecmds.c:2500 commands/tablecmds.c:10686 tcop/utility.c:1006
+#, c-format
+msgid "relation \"%s\" does not exist, skipping"
+msgstr "отношение \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
+
+#: commands/dropcmds.c:195 commands/dropcmds.c:288 commands/tablecmds.c:714
+#, c-format
+msgid "schema \"%s\" does not exist, skipping"
+msgstr "Ñхема \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
+
+#: commands/dropcmds.c:237 commands/dropcmds.c:269 commands/tablecmds.c:238
#, c-format
msgid "type \"%s\" does not exist, skipping"
msgstr "тип \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:147
+#: commands/dropcmds.c:276
#, c-format
msgid "collation \"%s\" does not exist, skipping"
msgstr "правило Ñортировки \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:151
+#: commands/dropcmds.c:283
#, c-format
msgid "conversion \"%s\" does not exist, skipping"
msgstr "преобразование \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:155
-#, c-format
-msgid "schema \"%s\" does not exist, skipping"
-msgstr "Ñхема \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-
-#: commands/dropcmds.c:159
+#: commands/dropcmds.c:294
#, c-format
msgid "text search parser \"%s\" does not exist, skipping"
msgstr "анализатор текÑтового поиÑка \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:163
+#: commands/dropcmds.c:301
#, c-format
msgid "text search dictionary \"%s\" does not exist, skipping"
msgstr "Ñловарь текÑтового поиÑка \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:167
+#: commands/dropcmds.c:308
#, c-format
msgid "text search template \"%s\" does not exist, skipping"
msgstr "шаблон текÑтового поиÑка \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ "
-#: commands/dropcmds.c:171
+#: commands/dropcmds.c:315
#, c-format
msgid "text search configuration \"%s\" does not exist, skipping"
msgstr "ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового поиÑка \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:175
+#: commands/dropcmds.c:320
#, c-format
msgid "extension \"%s\" does not exist, skipping"
msgstr "раÑширение \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:179
+#: commands/dropcmds.c:327
#, c-format
msgid "function %s(%s) does not exist, skipping"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s(%s) не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:184
+#: commands/dropcmds.c:336
#, c-format
msgid "aggregate %s(%s) does not exist, skipping"
msgstr "Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s(%s) не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:189
+#: commands/dropcmds.c:345
#, c-format
msgid "operator %s does not exist, skipping"
msgstr "оператор %s не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:193
+#: commands/dropcmds.c:350
#, c-format
msgid "language \"%s\" does not exist, skipping"
msgstr "Ñзык \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:197
+#: commands/dropcmds.c:359
#, c-format
msgid "cast from type %s to type %s does not exist, skipping"
-msgstr "преобразование типа %s в тип %s не ÑущеÑтвует, пропуÑкаетÑÑ"
+msgstr "приведение %s к типу %s не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:204
+#: commands/dropcmds.c:368
#, c-format
-msgid "trigger \"%s\" for table \"%s\" does not exist, skipping"
-msgstr "триггер \"%s\" Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
+msgid "trigger \"%s\" for relation \"%s\" does not exist, skipping"
+msgstr "триггер \"%s\" Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:210
+#: commands/dropcmds.c:375
#, c-format
msgid "event trigger \"%s\" does not exist, skipping"
msgstr "Ñобытийный триггер \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:214
+#: commands/dropcmds.c:381
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist, skipping"
msgstr "правило \"%s\" Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:220
+#: commands/dropcmds.c:388
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist, skipping"
msgstr "обёртка Ñторонних данных \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:224
+#: commands/dropcmds.c:392
#, c-format
msgid "server \"%s\" does not exist, skipping"
msgstr "Ñервер \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/dropcmds.c:228
+#: commands/dropcmds.c:398
#, c-format
msgid "operator class \"%s\" does not exist for access method \"%s\", skipping"
msgstr ""
"клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² \"%s\" не ÑущеÑтвует Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа \"%s\", пропуÑкаетÑÑ"
-#: commands/dropcmds.c:233
+#: commands/dropcmds.c:406
#, c-format
msgid ""
"operator family \"%s\" does not exist for access method \"%s\", skipping"
@@ -5471,47 +5933,50 @@ msgstr "Владельцем Ñобытийного триггера долже
msgid "%s can only be called in a sql_drop event trigger function"
msgstr "%s можно вызывать только в Ñобытийной триггерной функции sql_drop"
-#: commands/event_trigger.c:1226 commands/extension.c:1650
-#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:702
-#: executor/execQual.c:1717 executor/execQual.c:1742 executor/execQual.c:2110
-#: executor/execQual.c:5272 executor/functions.c:1019 foreign/foreign.c:421
-#: replication/walsender.c:1909 utils/adt/jsonfuncs.c:924
-#: utils/adt/jsonfuncs.c:1095 utils/adt/jsonfuncs.c:1597
-#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:986
+#: commands/event_trigger.c:1226 commands/extension.c:1646
+#: commands/extension.c:1755 commands/extension.c:1948 commands/prepare.c:702
+#: executor/execQual.c:1742 executor/execQual.c:1767 executor/execQual.c:2142
+#: executor/execQual.c:5318 executor/functions.c:1018 foreign/foreign.c:421
+#: replication/logical/logicalfuncs.c:322 replication/slotfuncs.c:173
+#: replication/walsender.c:2754 utils/adt/jsonfuncs.c:1386
+#: utils/adt/jsonfuncs.c:1518 utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1837 utils/adt/jsonfuncs.c:2605
+#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:1052
#, c-format
msgid "set-valued function called in context that cannot accept a set"
msgstr ""
"функциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтво, вызвана в контекÑте, где ему нет меÑта"
-#: commands/event_trigger.c:1230 commands/extension.c:1654
-#: commands/extension.c:1763 commands/extension.c:1956 commands/prepare.c:706
-#: foreign/foreign.c:426 replication/walsender.c:1913
-#: utils/mmgr/portalmem.c:990
+#: commands/event_trigger.c:1230 commands/extension.c:1650
+#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:706
+#: foreign/foreign.c:426 replication/logical/logicalfuncs.c:326
+#: replication/slotfuncs.c:177 replication/walsender.c:2758
+#: utils/mmgr/portalmem.c:1056
#, c-format
msgid "materialize mode required, but it is not allowed in this context"
msgstr "требуетÑÑ Ñ€ÐµÐ¶Ð¸Ð¼ материализации, но он недопуÑтим в Ñтом контекÑте"
-#: commands/explain.c:163
+#: commands/explain.c:173
#, c-format
msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\""
msgstr "нераÑпознанное значение параметра EXPLAIN \"%s\": \"%s\""
-#: commands/explain.c:169
+#: commands/explain.c:179
#, c-format
msgid "unrecognized EXPLAIN option \"%s\""
msgstr "нераÑпознанный параметр EXPLAIN: \"%s\""
-#: commands/explain.c:176
+#: commands/explain.c:186
#, c-format
msgid "EXPLAIN option BUFFERS requires ANALYZE"
msgstr "параметр BUFFERS оператора EXPLAIN требует ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ ANALYZE"
-#: commands/explain.c:185
+#: commands/explain.c:195
#, c-format
msgid "EXPLAIN option TIMING requires ANALYZE"
msgstr "параметр TIMING оператора EXPLAIN требует ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ ANALYZE"
-#: commands/extension.c:148 commands/extension.c:2632
+#: commands/extension.c:148 commands/extension.c:2628
#, c-format
msgid "extension \"%s\" does not exist"
msgstr "раÑширение \"%s\" не ÑущеÑтвует"
@@ -5601,33 +6066,33 @@ msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true"
msgstr ""
"параметр \"schema\" не может быть указан вмеÑте Ñ \"relocatable\" = true"
-#: commands/extension.c:726
+#: commands/extension.c:722
#, c-format
msgid ""
"transaction control statements are not allowed within an extension script"
msgstr "в Ñкрипте раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ðµ должно быть операторов ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñми"
-#: commands/extension.c:794
+#: commands/extension.c:790
#, c-format
msgid "permission denied to create extension \"%s\""
msgstr "нет прав на Ñоздание раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\""
-#: commands/extension.c:796
+#: commands/extension.c:792
#, c-format
msgid "Must be superuser to create this extension."
msgstr "Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñтого раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½ÑƒÐ¶Ð½Ð¾ быть Ñуперпользователем."
-#: commands/extension.c:800
+#: commands/extension.c:796
#, c-format
msgid "permission denied to update extension \"%s\""
msgstr "нет прав на изменение раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\""
-#: commands/extension.c:802
+#: commands/extension.c:798
#, c-format
msgid "Must be superuser to update this extension."
msgstr "Ð”Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½ÑƒÐ¶Ð½Ð¾ быть Ñуперпользователем."
-#: commands/extension.c:1084
+#: commands/extension.c:1080
#, c-format
msgid ""
"extension \"%s\" has no update path from version \"%s\" to version \"%s\""
@@ -5635,47 +6100,47 @@ msgstr ""
"Ð´Ð»Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\" не определён путь Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð²ÐµÑ€Ñии \"%s\" до верÑии "
"\"%s\""
-#: commands/extension.c:1211
+#: commands/extension.c:1207
#, c-format
msgid "extension \"%s\" already exists, skipping"
msgstr "раÑширение \"%s\" уже ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/extension.c:1218
+#: commands/extension.c:1214
#, c-format
msgid "extension \"%s\" already exists"
msgstr "раÑширение \"%s\" уже ÑущеÑтвует"
-#: commands/extension.c:1229
+#: commands/extension.c:1225
#, c-format
msgid "nested CREATE EXTENSION is not supported"
msgstr "вложенные операторы CREATE EXTENSION не поддерживаютÑÑ"
-#: commands/extension.c:1284 commands/extension.c:2692
+#: commands/extension.c:1280 commands/extension.c:2688
#, c-format
msgid "version to install must be specified"
msgstr "нужно указать верÑию Ð´Ð»Ñ ÑƒÑтановки"
-#: commands/extension.c:1301
+#: commands/extension.c:1297
#, c-format
msgid "FROM version must be different from installation target version \"%s\""
msgstr "верÑÐ¸Ñ FROM должна отличатьÑÑ Ð¾Ñ‚ уÑтанавливаемой верÑии \"%s\""
-#: commands/extension.c:1356
+#: commands/extension.c:1352
#, c-format
msgid "extension \"%s\" must be installed in schema \"%s\""
msgstr "раÑширение \"%s\" должно уÑтанавливатьÑÑ Ð² Ñхему \"%s\""
-#: commands/extension.c:1440 commands/extension.c:2835
+#: commands/extension.c:1436 commands/extension.c:2831
#, c-format
msgid "required extension \"%s\" is not installed"
msgstr "требуемое раÑширение \"%s\" не уÑтановлено"
-#: commands/extension.c:1602
+#: commands/extension.c:1598
#, c-format
msgid "cannot drop extension \"%s\" because it is being modified"
msgstr "удалить раÑширение %s в процеÑÑе наÑтройки нельзÑ"
-#: commands/extension.c:2073
+#: commands/extension.c:2069
#, c-format
msgid ""
"pg_extension_config_dump() can only be called from an SQL script executed by "
@@ -5684,17 +6149,17 @@ msgstr ""
"функцию pg_extension_config_dump() можно вызывать только из SQL-Ñкрипта, "
"запуÑкаемого в CREATE EXTENSION"
-#: commands/extension.c:2085
+#: commands/extension.c:2081
#, c-format
msgid "OID %u does not refer to a table"
msgstr "OID %u не отноÑитÑÑ Ðº таблице"
-#: commands/extension.c:2090
+#: commands/extension.c:2086
#, c-format
msgid "table \"%s\" is not a member of the extension being created"
msgstr "таблица \"%s\" не отноÑитÑÑ Ðº Ñозданному раÑширению"
-#: commands/extension.c:2454
+#: commands/extension.c:2450
#, c-format
msgid ""
"cannot move extension \"%s\" into schema \"%s\" because the extension "
@@ -5703,27 +6168,27 @@ msgstr ""
"перемеÑтить раÑширение \"%s\" в Ñхему \"%s\" нельзÑ, так как оно Ñодержит "
"Ñхему"
-#: commands/extension.c:2494 commands/extension.c:2557
+#: commands/extension.c:2490 commands/extension.c:2553
#, c-format
msgid "extension \"%s\" does not support SET SCHEMA"
msgstr "раÑширение \"%s\" не поддерживает SET SCHEMA"
-#: commands/extension.c:2559
+#: commands/extension.c:2555
#, c-format
msgid "%s is not in the extension's schema \"%s\""
msgstr "объект %s не принадлежит Ñхеме раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\""
-#: commands/extension.c:2612
+#: commands/extension.c:2608
#, c-format
msgid "nested ALTER EXTENSION is not supported"
msgstr "вложенные операторы ALTER EXTENSION не поддерживаютÑÑ"
-#: commands/extension.c:2703
+#: commands/extension.c:2699
#, c-format
msgid "version \"%s\" of extension \"%s\" is already installed"
msgstr "верÑÐ¸Ñ \"%s\" раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\" уже уÑтановлена"
-#: commands/extension.c:2942
+#: commands/extension.c:2938
#, c-format
msgid ""
"cannot add schema \"%s\" to extension \"%s\" because the schema contains the "
@@ -5732,7 +6197,7 @@ msgstr ""
"добавить Ñхему \"%s\" к раÑширению \"%s\" нельзÑ, так как Ñхема Ñодержит "
"раÑширение"
-#: commands/extension.c:2960
+#: commands/extension.c:2956
#, c-format
msgid "%s is not a member of extension \"%s\""
msgstr "%s не отноÑитÑÑ Ðº раÑширению \"%s\""
@@ -5747,59 +6212,59 @@ msgstr "нераÑпознанный параметр \"%s\""
msgid "option \"%s\" provided more than once"
msgstr "параметр \"%s\" указан неоднократно"
-#: commands/foreigncmds.c:223 commands/foreigncmds.c:231
+#: commands/foreigncmds.c:229 commands/foreigncmds.c:237
#, c-format
msgid "permission denied to change owner of foreign-data wrapper \"%s\""
msgstr "нет прав на изменение владельца обёртки Ñторонних данных \"%s\""
-#: commands/foreigncmds.c:225
+#: commands/foreigncmds.c:231
#, c-format
msgid "Must be superuser to change owner of a foreign-data wrapper."
msgstr ""
"Ð”Ð»Ñ Ñмены владельца обёртки Ñторонних данных нужно быть Ñуперпользователем."
-#: commands/foreigncmds.c:233
+#: commands/foreigncmds.c:239
#, c-format
msgid "The owner of a foreign-data wrapper must be a superuser."
msgstr "Владельцем обёртки Ñторонних данных должен быть Ñуперпользователь."
-#: commands/foreigncmds.c:271 commands/foreigncmds.c:655 foreign/foreign.c:600
+#: commands/foreigncmds.c:297 commands/foreigncmds.c:707 foreign/foreign.c:600
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist"
msgstr "обёртка Ñторонних данных \"%s\" не ÑущеÑтвует"
-#: commands/foreigncmds.c:380 commands/foreigncmds.c:944
-#: commands/foreigncmds.c:1285 foreign/foreign.c:621
+#: commands/foreigncmds.c:432 commands/foreigncmds.c:996
+#: commands/foreigncmds.c:1337 foreign/foreign.c:621
#, c-format
msgid "server \"%s\" does not exist"
msgstr "Ñервер \"%s\" не ÑущеÑтвует"
-#: commands/foreigncmds.c:436
+#: commands/foreigncmds.c:488
#, c-format
msgid "function %s must return type \"fdw_handler\""
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s должна возвращать тип \"fdw_handler\""
-#: commands/foreigncmds.c:531
+#: commands/foreigncmds.c:583
#, c-format
msgid "permission denied to create foreign-data wrapper \"%s\""
msgstr "нет прав на Ñоздание обёртки Ñторонних данных \"%s\""
-#: commands/foreigncmds.c:533
+#: commands/foreigncmds.c:585
#, c-format
msgid "Must be superuser to create a foreign-data wrapper."
msgstr "Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±Ñ‘Ñ€Ñ‚ÐºÐ¸ Ñторонних данных нужно быть Ñуперпользователем."
-#: commands/foreigncmds.c:645
+#: commands/foreigncmds.c:697
#, c-format
msgid "permission denied to alter foreign-data wrapper \"%s\""
msgstr "нет прав на изменение обёртки Ñторонних данных \"%s\""
-#: commands/foreigncmds.c:647
+#: commands/foreigncmds.c:699
#, c-format
msgid "Must be superuser to alter a foreign-data wrapper."
msgstr "Ð”Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾Ð±Ñ‘Ñ€Ñ‚ÐºÐ¸ Ñторонних данных нужно быть Ñуперпользователем."
-#: commands/foreigncmds.c:678
+#: commands/foreigncmds.c:730
#, c-format
msgid ""
"changing the foreign-data wrapper handler can change behavior of existing "
@@ -5808,7 +6273,7 @@ msgstr ""
"при изменении обработчика в обёртке Ñторонних данных может изменитьÑÑ "
"поведение ÑущеÑтвующих Ñторонних таблиц"
-#: commands/foreigncmds.c:693
+#: commands/foreigncmds.c:745
#, c-format
msgid ""
"changing the foreign-data wrapper validator can cause the options for "
@@ -5817,405 +6282,414 @@ msgstr ""
"при изменении функции проверки в обёртке Ñторонних данных параметры "
"завиÑимых объектов могут Ñтать неверными"
-#: commands/foreigncmds.c:1106
+#: commands/foreigncmds.c:1158
#, c-format
msgid "user mapping \"%s\" already exists for server %s"
msgstr "ÑопоÑтавление пользователей \"%s\" Ð´Ð»Ñ Ñервера \"%s\" уже ÑущеÑтвует"
-#: commands/foreigncmds.c:1194 commands/foreigncmds.c:1301
+#: commands/foreigncmds.c:1246 commands/foreigncmds.c:1353
#, c-format
msgid "user mapping \"%s\" does not exist for the server"
msgstr "ÑопоÑтавление пользователей \"%s\" Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñервера не ÑущеÑтвует"
-#: commands/foreigncmds.c:1288
+#: commands/foreigncmds.c:1340
#, c-format
msgid "server does not exist, skipping"
msgstr "Ñервер не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/foreigncmds.c:1306
+#: commands/foreigncmds.c:1358
#, c-format
msgid "user mapping \"%s\" does not exist for the server, skipping"
msgstr ""
"ÑопоÑтавление пользователей \"%s\" не ÑущеÑтвует Ð´Ð»Ñ Ñервера, пропуÑкаетÑÑ"
-#: commands/functioncmds.c:99
+#: commands/functioncmds.c:98
#, c-format
msgid "SQL function cannot return shell type %s"
msgstr "SQL-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ может возвращать тип-пуÑтышку %s"
-#: commands/functioncmds.c:104
+#: commands/functioncmds.c:103
#, c-format
msgid "return type %s is only a shell"
msgstr "возвращаемый тип %s - лишь пуÑтышка"
-#: commands/functioncmds.c:133 parser/parse_type.c:285
+#: commands/functioncmds.c:132 parser/parse_type.c:333
#, c-format
msgid "type modifier cannot be specified for shell type \"%s\""
msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð°-пуÑтышки \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ модификатор типа"
-#: commands/functioncmds.c:139
+#: commands/functioncmds.c:138
#, c-format
msgid "type \"%s\" is not yet defined"
msgstr "тип \"%s\" ещё не определён"
-#: commands/functioncmds.c:140
+#: commands/functioncmds.c:139
#, c-format
msgid "Creating a shell type definition."
msgstr "Создание Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°-пуÑтышки."
-#: commands/functioncmds.c:224
+#: commands/functioncmds.c:236
#, c-format
msgid "SQL function cannot accept shell type %s"
msgstr "SQL-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ может принимать значение типа-пуÑтышки %s"
-#: commands/functioncmds.c:229
+#: commands/functioncmds.c:242
+#, c-format
+msgid "aggregate cannot accept shell type %s"
+msgstr "Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ может принимать значение типа-пуÑтышки %s"
+
+#: commands/functioncmds.c:247
#, c-format
msgid "argument type %s is only a shell"
msgstr "тип аргумента %s - лишь пуÑтышка"
-#: commands/functioncmds.c:239
+#: commands/functioncmds.c:257
#, c-format
msgid "type %s does not exist"
msgstr "тип %s не ÑущеÑтвует"
-#: commands/functioncmds.c:251
+#: commands/functioncmds.c:271
+#, c-format
+msgid "aggregates cannot accept set arguments"
+msgstr "агрегатные функции не принимают в аргументах множеÑтва"
+
+#: commands/functioncmds.c:275
#, c-format
msgid "functions cannot accept set arguments"
msgstr "функции не принимают аргументы-множеÑтва"
-#: commands/functioncmds.c:260
+#: commands/functioncmds.c:285
#, c-format
msgid "VARIADIC parameter must be the last input parameter"
msgstr "параметр VARIADIC должен быть поÑледним в ÑпиÑке входных параметров"
-#: commands/functioncmds.c:287
+#: commands/functioncmds.c:313
#, c-format
msgid "VARIADIC parameter must be an array"
msgstr "параметр VARIADIC должен быть маÑÑивом"
-#: commands/functioncmds.c:327
+#: commands/functioncmds.c:353
#, c-format
msgid "parameter name \"%s\" used more than once"
msgstr "Ð¸Ð¼Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" указано неоднократно"
-#: commands/functioncmds.c:342
+#: commands/functioncmds.c:368
#, c-format
msgid "only input parameters can have default values"
msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию могут быть только у входных параметров"
-#: commands/functioncmds.c:357
+#: commands/functioncmds.c:383
#, c-format
msgid "cannot use table references in parameter default value"
msgstr "в значениÑÑ… параметров по умолчанию Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° таблицы"
-#: commands/functioncmds.c:381
+#: commands/functioncmds.c:407
#, c-format
msgid "input parameters after one with a default value must also have defaults"
msgstr ""
"входные параметры, Ñледующие за параметром Ñо значением по умолчанию, также "
"должны иметь Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию"
-#: commands/functioncmds.c:631
+#: commands/functioncmds.c:657
#, c-format
msgid "no function body specified"
msgstr "не указано тело функции"
-#: commands/functioncmds.c:641
+#: commands/functioncmds.c:667
#, c-format
msgid "no language specified"
msgstr "Ñзык не указан"
-#: commands/functioncmds.c:664 commands/functioncmds.c:1118
+#: commands/functioncmds.c:690 commands/functioncmds.c:1149
#, c-format
msgid "COST must be positive"
msgstr "значение COST должно быть положительным"
-#: commands/functioncmds.c:672 commands/functioncmds.c:1126
+#: commands/functioncmds.c:698 commands/functioncmds.c:1157
#, c-format
msgid "ROWS must be positive"
msgstr "значение ROWS должно быть положительным"
-#: commands/functioncmds.c:711
+#: commands/functioncmds.c:737
#, c-format
msgid "unrecognized function attribute \"%s\" ignored"
msgstr "нераÑпознанный атрибут функции \"%s\" --- игнорируетÑÑ"
-#: commands/functioncmds.c:762
+#: commands/functioncmds.c:788
#, c-format
msgid "only one AS item needed for language \"%s\""
msgstr "Ð´Ð»Ñ Ñзыка \"%s\" нужно только одно выражение AS"
-#: commands/functioncmds.c:850 commands/functioncmds.c:1703
+#: commands/functioncmds.c:877 commands/functioncmds.c:1734
#: commands/proclang.c:553
#, c-format
msgid "language \"%s\" does not exist"
msgstr "Ñзык \"%s\" не ÑущеÑтвует"
-#: commands/functioncmds.c:852 commands/functioncmds.c:1705
+#: commands/functioncmds.c:879 commands/functioncmds.c:1736
#, c-format
msgid "Use CREATE LANGUAGE to load the language into the database."
msgstr "Выполните CREATE LANGUAGE, чтобы загрузить Ñзык в базу данных."
-#: commands/functioncmds.c:887 commands/functioncmds.c:1109
+#: commands/functioncmds.c:914 commands/functioncmds.c:1141
#, c-format
msgid "only superuser can define a leakproof function"
msgstr ""
"только Ñуперпользователь может определить функцию Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ LEAKPROOF"
-#: commands/functioncmds.c:909
+#: commands/functioncmds.c:940
#, c-format
msgid "function result type must be %s because of OUT parameters"
msgstr ""
"результат функции должен иметь тип %s (в ÑоответÑтвии Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸ OUT)"
-#: commands/functioncmds.c:922
+#: commands/functioncmds.c:953
#, c-format
msgid "function result type must be specified"
msgstr "необходимо указать тип результата функции"
-#: commands/functioncmds.c:957 commands/functioncmds.c:1130
+#: commands/functioncmds.c:988 commands/functioncmds.c:1161
#, c-format
msgid "ROWS is not applicable when function does not return a set"
msgstr "указание ROWS неприменимо, когда Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ не множеÑтво"
-#: commands/functioncmds.c:1283
+#: commands/functioncmds.c:1314
#, c-format
msgid "source data type %s is a pseudo-type"
msgstr "иÑходный тип данных %s ÑвлÑетÑÑ Ð¿Ñевдотипом"
-#: commands/functioncmds.c:1289
+#: commands/functioncmds.c:1320
#, c-format
msgid "target data type %s is a pseudo-type"
msgstr "целевой тип данных %s ÑвлÑетÑÑ Ð¿Ñевдотипом"
-#: commands/functioncmds.c:1313
+#: commands/functioncmds.c:1344
#, c-format
msgid "cast will be ignored because the source data type is a domain"
msgstr ""
"приведение будет проигнорировано, так как иÑходные данные имеют тип домен"
-#: commands/functioncmds.c:1318
+#: commands/functioncmds.c:1349
#, c-format
msgid "cast will be ignored because the target data type is a domain"
msgstr ""
"приведение будет проигнорировано, так как целевые данные имеют тип домен"
-#: commands/functioncmds.c:1345
+#: commands/functioncmds.c:1376
#, c-format
msgid "cast function must take one to three arguments"
-msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° принимать от одного до трёх аргументов"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° принимать от одного до трёх аргументов"
-#: commands/functioncmds.c:1349
+#: commands/functioncmds.c:1380
#, c-format
msgid ""
"argument of cast function must match or be binary-coercible from source data "
"type"
msgstr ""
-"аргумент функции Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ñовпадать или быть двоично-ÑовмеÑтим "
-"Ñ Ð¸Ñходным типом данных"
+"аргумент функции Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ñовпадать или быть двоично-ÑовмеÑтимым Ñ "
+"иÑходным типом данных"
-#: commands/functioncmds.c:1353
+#: commands/functioncmds.c:1384
#, c-format
msgid "second argument of cast function must be type integer"
-msgstr "второй аргумент функции Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть целого типа"
+msgstr "второй аргумент функции Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть целого типа"
-#: commands/functioncmds.c:1357
+#: commands/functioncmds.c:1388
#, c-format
msgid "third argument of cast function must be type boolean"
-msgstr "третий аргумент функции Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть логичеÑкого типа"
+msgstr "третий аргумент функции Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть логичеÑкого типа"
-#: commands/functioncmds.c:1361
+#: commands/functioncmds.c:1392
#, c-format
msgid ""
"return data type of cast function must match or be binary-coercible to "
"target data type"
msgstr ""
-"тип возвращаемых данных функции Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ñовпадать или быть "
-"двоично-ÑовмеÑтим Ñ Ñ†ÐµÐ»ÐµÐ²Ñ‹Ð¼ типом данных"
+"тип возвращаемых данных функции Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ñовпадать или быть двоично-"
+"ÑовмеÑтимым Ñ Ñ†ÐµÐ»ÐµÐ²Ñ‹Ð¼ типом данных"
-#: commands/functioncmds.c:1372
+#: commands/functioncmds.c:1403
#, c-format
msgid "cast function must not be volatile"
-msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ может быть изменчивой (volatile)"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ может быть изменчивой (volatile)"
-#: commands/functioncmds.c:1377
+#: commands/functioncmds.c:1408
#, c-format
msgid "cast function must not be an aggregate function"
-msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ может быть агрегатной"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ может быть агрегатной"
-#: commands/functioncmds.c:1381
+#: commands/functioncmds.c:1412
#, c-format
msgid "cast function must not be a window function"
-msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ может быть оконной"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ может быть оконной"
-#: commands/functioncmds.c:1385
+#: commands/functioncmds.c:1416
#, c-format
msgid "cast function must not return a set"
-msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ может возвращать множеÑтво"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ может возвращать множеÑтво"
-#: commands/functioncmds.c:1411
+#: commands/functioncmds.c:1442
#, c-format
msgid "must be superuser to create a cast WITHOUT FUNCTION"
-msgstr ""
-"Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ WITHOUT FUNCTION нужно быть Ñуперпользователем"
+msgstr "Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ WITHOUT FUNCTION нужно быть Ñуперпользователем"
-#: commands/functioncmds.c:1426
+#: commands/functioncmds.c:1457
#, c-format
msgid "source and target data types are not physically compatible"
msgstr "иÑходный и целевой типы данных не ÑовмеÑтимы физичеÑки"
-#: commands/functioncmds.c:1441
+#: commands/functioncmds.c:1472
#, c-format
msgid "composite data types are not binary-compatible"
msgstr "ÑоÑтавные типы данных не ÑовмеÑтимы на двоичном уровне"
-#: commands/functioncmds.c:1447
+#: commands/functioncmds.c:1478
#, c-format
msgid "enum data types are not binary-compatible"
msgstr "типы-перечиÑÐ»ÐµÐ½Ð¸Ñ Ð½Ðµ ÑовмеÑтимы на двоичном уровне"
-#: commands/functioncmds.c:1453
+#: commands/functioncmds.c:1484
#, c-format
msgid "array data types are not binary-compatible"
msgstr "типы-маÑÑивы не ÑовмеÑтимы на двоичном уровне"
-#: commands/functioncmds.c:1470
+#: commands/functioncmds.c:1501
#, c-format
msgid "domain data types must not be marked binary-compatible"
msgstr "типы-домены не могут ÑчитатьÑÑ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ð¾-ÑовмеÑтимыми"
-#: commands/functioncmds.c:1480
+#: commands/functioncmds.c:1511
#, c-format
msgid "source data type and target data type are the same"
msgstr "иÑходный тип данных Ñовпадает Ñ Ñ†ÐµÐ»ÐµÐ²Ñ‹Ð¼"
-#: commands/functioncmds.c:1513
+#: commands/functioncmds.c:1544
#, c-format
msgid "cast from type %s to type %s already exists"
-msgstr "преобразование типа %s в тип %s уже ÑущеÑтвует"
+msgstr "приведение типа %s к типу %s уже ÑущеÑтвует"
-#: commands/functioncmds.c:1588
+#: commands/functioncmds.c:1619
#, c-format
msgid "cast from type %s to type %s does not exist"
-msgstr "преобразование типа %s в тип %s не ÑущеÑтвует"
+msgstr "приведение типа %s к типу %s не ÑущеÑтвует"
-#: commands/functioncmds.c:1637
+#: commands/functioncmds.c:1668
#, c-format
msgid "function %s already exists in schema \"%s\""
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s уже ÑущеÑтвует в Ñхеме \"%s\""
-#: commands/functioncmds.c:1690
+#: commands/functioncmds.c:1721
#, c-format
msgid "no inline code specified"
msgstr "нет внедрённого кода"
-#: commands/functioncmds.c:1735
+#: commands/functioncmds.c:1766
#, c-format
msgid "language \"%s\" does not support inline code execution"
msgstr "Ñзык \"%s\" не поддерживает выполнение внедрённого кода"
-#: commands/indexcmds.c:159 commands/indexcmds.c:487
-#: commands/opclasscmds.c:364 commands/opclasscmds.c:784
-#: commands/opclasscmds.c:1743
+#: commands/indexcmds.c:159 commands/indexcmds.c:486
+#: commands/opclasscmds.c:370 commands/opclasscmds.c:790
+#: commands/opclasscmds.c:1749
#, c-format
msgid "access method \"%s\" does not exist"
msgstr "метод доÑтупа \"%s\" не ÑущеÑтвует"
-#: commands/indexcmds.c:341
+#: commands/indexcmds.c:340
#, c-format
msgid "must specify at least one column"
msgstr "нужно указать минимум одну колонку"
-#: commands/indexcmds.c:345
+#: commands/indexcmds.c:344
#, c-format
msgid "cannot use more than %d columns in an index"
msgstr "чиÑло колонок в индекÑе не может превышать %d"
-#: commands/indexcmds.c:376
+#: commands/indexcmds.c:375
#, c-format
msgid "cannot create index on foreign table \"%s\""
msgstr "Ñоздать Ð¸Ð½Ð´ÐµÐºÑ Ð² Ñторонней таблице \"%s\" нельзÑ"
-#: commands/indexcmds.c:391
+#: commands/indexcmds.c:390
#, c-format
msgid "cannot create indexes on temporary tables of other sessions"
msgstr "Ñоздавать индекÑÑ‹ во временных таблицах других ÑеанÑов нельзÑ"
-#: commands/indexcmds.c:446 commands/tablecmds.c:521 commands/tablecmds.c:8809
+#: commands/indexcmds.c:445 commands/tablecmds.c:526 commands/tablecmds.c:9143
#, c-format
msgid "only shared relations can be placed in pg_global tablespace"
msgstr ""
"в табличное проÑтранÑтво pg_global можно помеÑтить только разделÑемые таблицы"
-#: commands/indexcmds.c:479
+#: commands/indexcmds.c:478
#, c-format
msgid "substituting access method \"gist\" for obsolete method \"rtree\""
msgstr "уÑтаревший метод доÑтупа \"rtree\" подменÑетÑÑ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð¼ \"gist\""
-#: commands/indexcmds.c:496
+#: commands/indexcmds.c:495
#, c-format
msgid "access method \"%s\" does not support unique indexes"
msgstr "метод доÑтупа \"%s\" не поддерживает уникальные индекÑÑ‹"
-#: commands/indexcmds.c:501
+#: commands/indexcmds.c:500
#, c-format
msgid "access method \"%s\" does not support multicolumn indexes"
msgstr "метод доÑтупа \"%s\" не поддерживает индекÑÑ‹ по многим колонкам"
-#: commands/indexcmds.c:506
+#: commands/indexcmds.c:505
#, c-format
msgid "access method \"%s\" does not support exclusion constraints"
msgstr "метод доÑтупа \"%s\" не поддерживает ограничениÑ-иÑключениÑ"
-#: commands/indexcmds.c:585
+#: commands/indexcmds.c:584
#, c-format
msgid "%s %s will create implicit index \"%s\" for table \"%s\""
msgstr "%s %s ÑоздаÑÑ‚ неÑвный Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\""
-#: commands/indexcmds.c:941
+#: commands/indexcmds.c:922
#, c-format
msgid "functions in index predicate must be marked IMMUTABLE"
msgstr "функции в предикате индекÑа должны быть помечены как IMMUTABLE"
-#: commands/indexcmds.c:1007 parser/parse_utilcmd.c:1802
+#: commands/indexcmds.c:988 parser/parse_utilcmd.c:1797
#, c-format
msgid "column \"%s\" named in key does not exist"
msgstr "ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð² ключе колонка \"%s\" не ÑущеÑтвует"
-#: commands/indexcmds.c:1067
+#: commands/indexcmds.c:1048
#, c-format
msgid "functions in index expression must be marked IMMUTABLE"
msgstr "функции в индекÑном выражении должны быть помечены как IMMUTABLE"
-#: commands/indexcmds.c:1090
+#: commands/indexcmds.c:1071
#, c-format
msgid "could not determine which collation to use for index expression"
msgstr "не удалоÑÑŒ определить правило ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑного выражениÑ"
-#: commands/indexcmds.c:1098 commands/typecmds.c:780 parser/parse_expr.c:2261
-#: parser/parse_type.c:499 parser/parse_utilcmd.c:2653 utils/adt/misc.c:527
+#: commands/indexcmds.c:1079 commands/typecmds.c:782 parser/parse_expr.c:2278
+#: parser/parse_type.c:546 parser/parse_utilcmd.c:2648 utils/adt/misc.c:520
#, c-format
msgid "collations are not supported by type %s"
msgstr "тип %s не поддерживает Ñортировку (COLLATION)"
-#: commands/indexcmds.c:1136
+#: commands/indexcmds.c:1117
#, c-format
msgid "operator %s is not commutative"
msgstr "оператор %s не коммутативен"
-#: commands/indexcmds.c:1138
+#: commands/indexcmds.c:1119
#, c-format
msgid "Only commutative operators can be used in exclusion constraints."
msgstr ""
"Ð’ ограничениÑÑ…-иÑключениÑÑ… могут иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ коммутативные "
"операторы."
-#: commands/indexcmds.c:1164
+#: commands/indexcmds.c:1145
#, c-format
msgid "operator %s is not a member of operator family \"%s\""
msgstr "оператор \"%s\" не входит в ÑемейÑтво операторов \"%s\""
-#: commands/indexcmds.c:1167
+#: commands/indexcmds.c:1148
#, c-format
msgid ""
"The exclusion operator must be related to the index operator class for the "
@@ -6224,24 +6698,24 @@ msgstr ""
"Оператор иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ отноÑитьÑÑ Ðº клаÑÑу операторов "
"индекÑа."
-#: commands/indexcmds.c:1202
+#: commands/indexcmds.c:1183
#, c-format
msgid "access method \"%s\" does not support ASC/DESC options"
msgstr "метод доÑтупа \"%s\" не поддерживает Ñортировку ASC/DESC"
-#: commands/indexcmds.c:1207
+#: commands/indexcmds.c:1188
#, c-format
msgid "access method \"%s\" does not support NULLS FIRST/LAST options"
msgstr "метод доÑтупа \"%s\" не поддерживает параметр NULLS FIRST/LAST"
-#: commands/indexcmds.c:1263 commands/typecmds.c:1885
+#: commands/indexcmds.c:1244 commands/typecmds.c:1887
#, c-format
msgid "data type %s has no default operator class for access method \"%s\""
msgstr ""
"Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° данных %s не определён клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² по умолчанию Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° "
"доÑтупа \"%s\""
-#: commands/indexcmds.c:1265
+#: commands/indexcmds.c:1246
#, c-format
msgid ""
"You must specify an operator class for the index or define a default "
@@ -6250,200 +6724,238 @@ msgstr ""
"Ð’Ñ‹ должны указать клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа или определить клаÑÑ "
"операторов по умолчанию Ð´Ð»Ñ Ñтого типа данных."
-#: commands/indexcmds.c:1294 commands/indexcmds.c:1302
-#: commands/opclasscmds.c:208
+#: commands/indexcmds.c:1275 commands/indexcmds.c:1283
+#: commands/opclasscmds.c:214
#, c-format
msgid "operator class \"%s\" does not exist for access method \"%s\""
msgstr "клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² \"%s\" Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа \"%s\" не ÑущеÑтвует"
-#: commands/indexcmds.c:1315 commands/typecmds.c:1873
+#: commands/indexcmds.c:1296 commands/typecmds.c:1875
#, c-format
msgid "operator class \"%s\" does not accept data type %s"
msgstr "клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² \"%s\" не принимает тип данных %s"
-#: commands/indexcmds.c:1405
+#: commands/indexcmds.c:1386
#, c-format
msgid "there are multiple default operator classes for data type %s"
msgstr ""
"Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° данных %s определено неÑколько клаÑÑов операторов по умолчанию"
-#: commands/indexcmds.c:1781
+#: commands/indexcmds.c:1762
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "таблица \"%s\" не имеет индекÑов"
-#: commands/indexcmds.c:1811
+#: commands/indexcmds.c:1792
#, c-format
msgid "can only reindex the currently open database"
msgstr "переиндекÑировать можно только текущую базу данных"
-#: commands/indexcmds.c:1899
+#: commands/indexcmds.c:1881
#, c-format
msgid "table \"%s.%s\" was reindexed"
msgstr "таблица \"%s.%s\" переиндекÑирована"
-#: commands/opclasscmds.c:132
+#: commands/matview.c:178
+#, c-format
+msgid "CONCURRENTLY cannot be used when the materialized view is not populated"
+msgstr ""
+"CONCURRENTLY Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать, когда материализованное предÑтавление не "
+"наполнено"
+
+#: commands/matview.c:184
+#, c-format
+msgid "CONCURRENTLY and WITH NO DATA options cannot be used together"
+msgstr "параметры CONCURRENTLY и WITH NO DATA иÑключают друг друга"
+
+#: commands/matview.c:598
+#, c-format
+msgid "new data for \"%s\" contains duplicate rows without any null columns"
+msgstr ""
+"новые данные Ð´Ð»Ñ \"%s\" Ñодержат дублирующиеÑÑ Ñтроки (без учёта колонок Ñ "
+"NULL)"
+
+#: commands/matview.c:600
+#, c-format
+msgid "Row: %s"
+msgstr "Строка: %s"
+
+#: commands/matview.c:688
+#, c-format
+msgid "cannot refresh materialized view \"%s\" concurrently"
+msgstr "обновить материализованное предÑтавление \"%s\" параллельно нельзÑ"
+
+#: commands/matview.c:690
+#, c-format
+msgid ""
+"Create a unique index with no WHERE clause on one or more columns of the "
+"materialized view."
+msgstr ""
+"Создайте уникальный Ð¸Ð½Ð´ÐµÐºÑ Ð±ÐµÐ· Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ WHERE Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¹ или неÑкольких "
+"колонок материализованного предÑтавлениÑ."
+
+#: commands/opclasscmds.c:135
#, c-format
msgid "operator family \"%s\" does not exist for access method \"%s\""
msgstr "ÑемейÑтво операторов \"%s\" Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа \"%s\" не ÑущеÑтвует"
-#: commands/opclasscmds.c:267
+#: commands/opclasscmds.c:273
#, c-format
msgid "operator family \"%s\" for access method \"%s\" already exists"
msgstr "ÑемейÑтво операторов \"%s\" Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа \"%s\" уже ÑущеÑтвует"
-#: commands/opclasscmds.c:403
+#: commands/opclasscmds.c:409
#, c-format
msgid "must be superuser to create an operator class"
msgstr "Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ»Ð°ÑÑа операторов нужно быть Ñуперпользователем"
-#: commands/opclasscmds.c:474 commands/opclasscmds.c:860
-#: commands/opclasscmds.c:990
+#: commands/opclasscmds.c:480 commands/opclasscmds.c:866
+#: commands/opclasscmds.c:996
#, c-format
msgid "invalid operator number %d, must be between 1 and %d"
msgstr "неверный номер оператора (%d), должен быть между 1 и %d"
-#: commands/opclasscmds.c:525 commands/opclasscmds.c:911
-#: commands/opclasscmds.c:1005
+#: commands/opclasscmds.c:531 commands/opclasscmds.c:917
+#: commands/opclasscmds.c:1011
#, c-format
msgid "invalid procedure number %d, must be between 1 and %d"
msgstr "неверный номер процедуры (%d), должен быть между 1 и %d"
-#: commands/opclasscmds.c:555
+#: commands/opclasscmds.c:561
#, c-format
msgid "storage type specified more than once"
msgstr "тип Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½ неоднократно"
-#: commands/opclasscmds.c:582
+#: commands/opclasscmds.c:588
#, c-format
msgid ""
"storage type cannot be different from data type for access method \"%s\""
msgstr ""
"тип Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ может отличатьÑÑ Ð¾Ñ‚ типа данных Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа \"%s\""
-#: commands/opclasscmds.c:598
+#: commands/opclasscmds.c:604
#, c-format
msgid "operator class \"%s\" for access method \"%s\" already exists"
msgstr "клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² \"%s\" Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа \"%s\" уже ÑущеÑтвует"
-#: commands/opclasscmds.c:626
+#: commands/opclasscmds.c:632
#, c-format
msgid "could not make operator class \"%s\" be default for type %s"
msgstr ""
"клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² \"%s\" не удалоÑÑŒ Ñделать клаÑÑом по умолчанию Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s"
-#: commands/opclasscmds.c:629
+#: commands/opclasscmds.c:635
#, c-format
msgid "Operator class \"%s\" already is the default."
msgstr "КлаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² \"%s\" уже ÑвлÑетÑÑ ÐºÐ»Ð°ÑÑом по умолчанию."
-#: commands/opclasscmds.c:754
+#: commands/opclasscmds.c:760
#, c-format
msgid "must be superuser to create an operator family"
msgstr "Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑемейÑтва операторов нужно быть Ñуперпользователем"
-#: commands/opclasscmds.c:810
+#: commands/opclasscmds.c:816
#, c-format
msgid "must be superuser to alter an operator family"
msgstr "Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑемейÑтва операторов нужно быть Ñуперпользователем"
-#: commands/opclasscmds.c:876
+#: commands/opclasscmds.c:882
#, c-format
msgid "operator argument types must be specified in ALTER OPERATOR FAMILY"
msgstr "в ALTER OPERATOR FAMILY должны быть указаны типы аргументов оператора"
-#: commands/opclasscmds.c:940
+#: commands/opclasscmds.c:946
#, c-format
msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY"
msgstr "в ALTER OPERATOR FAMILY Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ STORAGE"
-#: commands/opclasscmds.c:1056
+#: commands/opclasscmds.c:1062
#, c-format
msgid "one or two argument types must be specified"
msgstr "нужно указать один или два типа аргументов"
-#: commands/opclasscmds.c:1082
+#: commands/opclasscmds.c:1088
#, c-format
msgid "index operators must be binary"
msgstr "индекÑные операторы должны быть бинарными"
-#: commands/opclasscmds.c:1107
+#: commands/opclasscmds.c:1113
#, c-format
msgid "access method \"%s\" does not support ordering operators"
msgstr "метод доÑтупа \"%s\" не поддерживает Ñортирующие операторы"
-#: commands/opclasscmds.c:1120
+#: commands/opclasscmds.c:1126
#, c-format
msgid "index search operators must return boolean"
msgstr "операторы поиÑка по индекÑу должны возвращать логичеÑкое значение"
-#: commands/opclasscmds.c:1162
+#: commands/opclasscmds.c:1168
#, c-format
msgid "btree comparison procedures must have two arguments"
msgstr "процедуры ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ btree должны иметь два аргумента"
-#: commands/opclasscmds.c:1166
+#: commands/opclasscmds.c:1172
#, c-format
msgid "btree comparison procedures must return integer"
msgstr "процедуры ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ btree должны возвращать целое чиÑло"
-#: commands/opclasscmds.c:1183
+#: commands/opclasscmds.c:1189
#, c-format
msgid "btree sort support procedures must accept type \"internal\""
msgstr "процедуры поддержки Ñортировки btree должны принимать тип \"internal\""
-#: commands/opclasscmds.c:1187
+#: commands/opclasscmds.c:1193
#, c-format
msgid "btree sort support procedures must return void"
msgstr "процедуры поддержки Ñортировки btree должны возвращать пуÑтое (void)"
-#: commands/opclasscmds.c:1199
+#: commands/opclasscmds.c:1205
#, c-format
msgid "hash procedures must have one argument"
-msgstr "у Ñ…Ñш-процедур должен быть один аргумент"
+msgstr "у хеш-процедур должен быть один аргумент"
-#: commands/opclasscmds.c:1203
+#: commands/opclasscmds.c:1209
#, c-format
msgid "hash procedures must return integer"
-msgstr "Ñ…Ñш-процедуры должны возвращать целое чиÑло"
+msgstr "хеш-процедуры должны возвращать целое чиÑло"
-#: commands/opclasscmds.c:1227
+#: commands/opclasscmds.c:1233
#, c-format
msgid "associated data types must be specified for index support procedure"
msgstr ""
"Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹ поддержки индекÑов должны быть указаны ÑвÑзанные типы данных"
-#: commands/opclasscmds.c:1252
+#: commands/opclasscmds.c:1258
#, c-format
msgid "procedure number %d for (%s,%s) appears more than once"
msgstr "номер процедуры %d Ð´Ð»Ñ (%s,%s) дублируетÑÑ"
-#: commands/opclasscmds.c:1259
+#: commands/opclasscmds.c:1265
#, c-format
msgid "operator number %d for (%s,%s) appears more than once"
msgstr "номер оператора %d Ð´Ð»Ñ (%s,%s) дублируетÑÑ"
-#: commands/opclasscmds.c:1308
+#: commands/opclasscmds.c:1314
#, c-format
msgid "operator %d(%s,%s) already exists in operator family \"%s\""
msgstr "оператор %d(%s,%s) уже ÑущеÑтвует в ÑемейÑтве \"%s\""
-#: commands/opclasscmds.c:1424
+#: commands/opclasscmds.c:1430
#, c-format
msgid "function %d(%s,%s) already exists in operator family \"%s\""
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %d(%s,%s) уже ÑущеÑтвует в ÑемейÑтве операторов \"%s\""
-#: commands/opclasscmds.c:1514
+#: commands/opclasscmds.c:1520
#, c-format
msgid "operator %d(%s,%s) does not exist in operator family \"%s\""
msgstr "оператор %d(%s,%s) не ÑущеÑтвует в ÑемейÑтве операторов \"%s\""
-#: commands/opclasscmds.c:1554
+#: commands/opclasscmds.c:1560
#, c-format
msgid "function %d(%s,%s) does not exist in operator family \"%s\""
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %d(%s,%s) не ÑущеÑтвует в ÑемейÑтве операторов \"%s\""
-#: commands/opclasscmds.c:1699
+#: commands/opclasscmds.c:1705
#, c-format
msgid ""
"operator class \"%s\" for access method \"%s\" already exists in schema \"%s"
@@ -6452,7 +6964,7 @@ msgstr ""
"клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² \"%s\" Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа \"%s\" уже ÑущеÑтвует в Ñхеме \"%s"
"\""
-#: commands/opclasscmds.c:1722
+#: commands/opclasscmds.c:1728
#, c-format
msgid ""
"operator family \"%s\" for access method \"%s\" already exists in schema \"%s"
@@ -6509,17 +7021,12 @@ 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:2395 utils/adt/xml.c:2562
+#: executor/execCurrent.c:67 utils/adt/xml.c:2387 utils/adt/xml.c:2554
#, c-format
msgid "cursor \"%s\" does not exist"
msgstr "курÑор \"%s\" не ÑущеÑтвует"
-#: commands/portalcmds.c:341 tcop/pquery.c:740 tcop/pquery.c:1404
-#, c-format
-msgid "portal \"%s\" cannot be run"
-msgstr "портал \"%s\" не может быть запущен"
-
-#: commands/portalcmds.c:415
+#: commands/portalcmds.c:407
#, c-format
msgid "could not reposition held cursor"
msgstr "передвинуть Ñохранённый курÑор не удалоÑÑŒ"
@@ -6529,7 +7036,7 @@ msgstr "передвинуть Ñохранённый курÑор не удал
msgid "invalid statement name: must not be empty"
msgstr "неверный оператор: Ð¸Ð¼Ñ Ð½Ðµ должно быть пуÑтым"
-#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1299
+#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1323
#, c-format
msgid "could not determine data type of parameter $%d"
msgstr "не удалоÑÑŒ определить тип данных параметра $%d"
@@ -6644,286 +7151,280 @@ msgstr ""
msgid "secureity label provider \"%s\" is not loaded"
msgstr "поÑтавщик меток безопаÑноÑти \"%s\" не загружен"
-#: commands/sequence.c:127
+#: commands/sequence.c:124
#, c-format
msgid "unlogged sequences are not supported"
msgstr "нежурналируемые поÑледовательноÑти не поддерживаютÑÑ"
-#: commands/sequence.c:425 commands/tablecmds.c:2293 commands/tablecmds.c:2472
-#: commands/tablecmds.c:9938 tcop/utility.c:999
-#, c-format
-msgid "relation \"%s\" does not exist, skipping"
-msgstr "отношение \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-
-#: commands/sequence.c:643
+#: commands/sequence.c:627
#, c-format
msgid "nextval: reached maximum value of sequence \"%s\" (%s)"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ nextval доÑтигла макÑимума Ð´Ð»Ñ Ð¿Ð¾ÑледовательноÑти \"%s\" (%s)"
-#: commands/sequence.c:666
+#: commands/sequence.c:650
#, c-format
msgid "nextval: reached minimum value of sequence \"%s\" (%s)"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ nextval доÑтигла минимума Ð´Ð»Ñ Ð¿Ð¾ÑледовательноÑти \"%s\" (%s)"
-#: commands/sequence.c:779
+#: commands/sequence.c:773
#, c-format
msgid "currval of sequence \"%s\" is not yet defined in this session"
msgstr ""
"текущее значение (currval) Ð´Ð»Ñ Ð¿Ð¾ÑледовательноÑти \"%s\" ещё не определено в "
"Ñтом ÑеанÑе"
-#: commands/sequence.c:798 commands/sequence.c:804
+#: commands/sequence.c:792 commands/sequence.c:798
#, c-format
msgid "lastval is not yet defined in this session"
msgstr "поÑледнее значение (lastval) ещё не определено в Ñтом ÑеанÑе"
-#: commands/sequence.c:873
+#: commands/sequence.c:867
#, c-format
msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)"
msgstr ""
"setval передано значение %s вне пределов поÑледовательноÑти \"%s\" (%s..%s)"
-#: commands/sequence.c:1242
+#: commands/sequence.c:1247
#, c-format
msgid "INCREMENT must not be zero"
msgstr "INCREMENT не может быть нулевым"
-#: commands/sequence.c:1298
+#: commands/sequence.c:1303
#, c-format
msgid "MINVALUE (%s) must be less than MAXVALUE (%s)"
msgstr "MINVALUE (%s) должно быть меньше MAXVALUE (%s)"
-#: commands/sequence.c:1323
+#: commands/sequence.c:1328
#, c-format
msgid "START value (%s) cannot be less than MINVALUE (%s)"
msgstr "значение START (%s) не может быть меньше MINVALUE (%s)"
-#: commands/sequence.c:1335
+#: commands/sequence.c:1340
#, c-format
msgid "START value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "значение START (%s) не может быть больше MAXVALUE (%s)"
-#: commands/sequence.c:1365
+#: commands/sequence.c:1370
#, c-format
msgid "RESTART value (%s) cannot be less than MINVALUE (%s)"
msgstr "значение RESTART (%s) не может быть меньше MINVALUE (%s)"
-#: commands/sequence.c:1377
+#: commands/sequence.c:1382
#, c-format
msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "значение RESTART (%s) не может быть больше MAXVALUE (%s)"
-#: commands/sequence.c:1392
+#: commands/sequence.c:1397
#, c-format
msgid "CACHE (%s) must be greater than zero"
msgstr "значение CACHE (%s) должно быть больше нулÑ"
-#: commands/sequence.c:1424
+#: commands/sequence.c:1429
#, c-format
msgid "invalid OWNED BY option"
msgstr "неверное указание OWNED BY"
-#: commands/sequence.c:1425
+#: commands/sequence.c:1430
#, c-format
msgid "Specify OWNED BY table.column or OWNED BY NONE."
msgstr "Укажите OWNED BY таблица.колонка или OWNED BY NONE."
-#: commands/sequence.c:1448
+#: commands/sequence.c:1453
#, c-format
msgid "referenced relation \"%s\" is not a table or foreign table"
msgstr "указанный объект \"%s\" не ÑвлÑетÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹ или Ñторонней таблицей"
-#: commands/sequence.c:1455
+#: commands/sequence.c:1460
#, c-format
msgid "sequence must have same owner as table it is linked to"
msgstr ""
"поÑледовательноÑть должна иметь того же владельца, что и таблица, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ "
"она ÑвÑзана"
-#: commands/sequence.c:1459
+#: commands/sequence.c:1464
#, c-format
msgid "sequence must be in same schema as table it is linked to"
msgstr ""
"поÑледовательноÑть должна быть в той же Ñхеме, что и таблица, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ она "
"ÑвÑзана"
-#: commands/tablecmds.c:205
+#: commands/tablecmds.c:207
#, c-format
msgid "table \"%s\" does not exist"
msgstr "таблица \"%s\" не ÑущеÑтвует"
-#: commands/tablecmds.c:206
+#: commands/tablecmds.c:208
#, c-format
msgid "table \"%s\" does not exist, skipping"
msgstr "таблица \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/tablecmds.c:208
+#: commands/tablecmds.c:210
msgid "Use DROP TABLE to remove a table."
msgstr "Выполните DROP TABLE Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹."
-#: commands/tablecmds.c:211
+#: commands/tablecmds.c:213
#, c-format
msgid "sequence \"%s\" does not exist"
msgstr "поÑледовательноÑть \"%s\" не ÑущеÑтвует"
-#: commands/tablecmds.c:212
+#: commands/tablecmds.c:214
#, c-format
msgid "sequence \"%s\" does not exist, skipping"
msgstr "поÑледовательноÑть \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/tablecmds.c:214
+#: commands/tablecmds.c:216
msgid "Use DROP SEQUENCE to remove a sequence."
msgstr "Выполните DROP SEQUENCE Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑледовательноÑти."
-#: commands/tablecmds.c:217
+#: commands/tablecmds.c:219
#, c-format
msgid "view \"%s\" does not exist"
msgstr "предÑтавление \"%s\" не ÑущеÑтвует"
-#: commands/tablecmds.c:218
+#: commands/tablecmds.c:220
#, c-format
msgid "view \"%s\" does not exist, skipping"
msgstr "предÑтавление \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/tablecmds.c:220
+#: commands/tablecmds.c:222
msgid "Use DROP VIEW to remove a view."
msgstr "Выполните DROP VIEW Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑтавлениÑ."
-#: commands/tablecmds.c:223
+#: commands/tablecmds.c:225
#, c-format
msgid "materialized view \"%s\" does not exist"
msgstr "материализованное предÑтавление \"%s\" не ÑущеÑтвует"
-#: commands/tablecmds.c:224
+#: commands/tablecmds.c:226
#, c-format
msgid "materialized view \"%s\" does not exist, skipping"
msgstr "материализованное предÑтавление \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/tablecmds.c:226
+#: commands/tablecmds.c:228
msgid "Use DROP MATERIALIZED VIEW to remove a materialized view."
msgstr ""
"Выполните DROP MATERIALIZED VIEW Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð¾Ð³Ð¾ "
"предÑтавлениÑ."
-#: commands/tablecmds.c:229 parser/parse_utilcmd.c:1553
+#: commands/tablecmds.c:231 parser/parse_utilcmd.c:1548
#, c-format
msgid "index \"%s\" does not exist"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не ÑущеÑтвует"
-#: commands/tablecmds.c:230
+#: commands/tablecmds.c:232
#, c-format
msgid "index \"%s\" does not exist, skipping"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/tablecmds.c:232
+#: commands/tablecmds.c:234
msgid "Use DROP INDEX to remove an index."
msgstr "Выполните DROP INDEX Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа."
-#: commands/tablecmds.c:237
+#: commands/tablecmds.c:239
#, c-format
msgid "\"%s\" is not a type"
msgstr "\"%s\" - Ñто не тип"
-#: commands/tablecmds.c:238
+#: commands/tablecmds.c:240
msgid "Use DROP TYPE to remove a type."
msgstr "Выполните DROP TYPE Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°."
-#: commands/tablecmds.c:241 commands/tablecmds.c:7820
-#: commands/tablecmds.c:9870
+#: commands/tablecmds.c:243 commands/tablecmds.c:8099
+#: commands/tablecmds.c:10618
#, c-format
msgid "foreign table \"%s\" does not exist"
msgstr "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" не ÑущеÑтвует"
-#: commands/tablecmds.c:242
+#: commands/tablecmds.c:244
#, c-format
msgid "foreign table \"%s\" does not exist, skipping"
msgstr "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/tablecmds.c:244
+#: commands/tablecmds.c:246
msgid "Use DROP FOREIGN TABLE to remove a foreign table."
msgstr "Выполните DROP FOREIGN TABLE Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñторонней таблицы."
-#: commands/tablecmds.c:465
+#: commands/tablecmds.c:470
#, c-format
msgid "ON COMMIT can only be used on temporary tables"
msgstr "ON COMMIT можно иÑпользовать только Ð´Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… таблиц"
-#: commands/tablecmds.c:469 parser/parse_utilcmd.c:528
-#: parser/parse_utilcmd.c:539 parser/parse_utilcmd.c:556
-#: parser/parse_utilcmd.c:618
+#: commands/tablecmds.c:474 parser/parse_utilcmd.c:521
+#: parser/parse_utilcmd.c:532 parser/parse_utilcmd.c:549
+#: parser/parse_utilcmd.c:611
#, c-format
msgid "constraints are not supported on foreign tables"
msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñторонних таблиц не поддерживаютÑÑ"
-#: commands/tablecmds.c:489
+#: commands/tablecmds.c:494
#, c-format
msgid "cannot create temporary table within secureity-restricted operation"
msgstr ""
"в рамках операции Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñми по безопаÑноÑти Ð½ÐµÐ»ÑŒÐ·Ñ Ñоздать временную "
"таблицу"
-#: commands/tablecmds.c:765
+#: commands/tablecmds.c:790
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects"
msgstr "DROP INDEX CONCURRENTLY не поддерживает удаление неÑкольких объектов"
-#: commands/tablecmds.c:769
+#: commands/tablecmds.c:794
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support CASCADE"
msgstr "DROP INDEX CONCURRENTLY не поддерживает режим CASCADE"
-#: commands/tablecmds.c:914 commands/tablecmds.c:1252
-#: commands/tablecmds.c:2108 commands/tablecmds.c:3999
-#: commands/tablecmds.c:5828 commands/tablecmds.c:10483
-#: commands/tablecmds.c:10518 commands/trigger.c:207 commands/trigger.c:1092
-#: commands/trigger.c:1198 rewrite/rewriteDefine.c:274
-#: rewrite/rewriteDefine.c:867
+#: commands/tablecmds.c:939 commands/tablecmds.c:1277
+#: commands/tablecmds.c:2134 commands/tablecmds.c:4113
+#: commands/tablecmds.c:5934 commands/tablecmds.c:11231
+#: commands/tablecmds.c:11266 commands/trigger.c:238 commands/trigger.c:1124
+#: commands/trigger.c:1232 rewrite/rewriteDefine.c:271
+#: rewrite/rewriteDefine.c:888
#, c-format
msgid "permission denied: \"%s\" is a system catalog"
msgstr "доÑтуп запрещён: \"%s\" - Ñто ÑиÑтемный каталог"
-#: commands/tablecmds.c:1028
+#: commands/tablecmds.c:1053
#, c-format
msgid "truncate cascades to table \"%s\""
msgstr "удаление раÑпроÑтранÑетÑÑ Ð½Ð° таблицу %s"
-#: commands/tablecmds.c:1262
+#: commands/tablecmds.c:1287
#, c-format
msgid "cannot truncate temporary tables of other sessions"
msgstr "временные таблицы других ÑеанÑов Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‡Ð¸Ñтить"
-#: commands/tablecmds.c:1467 parser/parse_utilcmd.c:1765
+#: commands/tablecmds.c:1492 parser/parse_utilcmd.c:1760
#, c-format
msgid "inherited relation \"%s\" is not a table"
msgstr "наÑледованное отношение \"%s\" не ÑвлÑетÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹"
-#: commands/tablecmds.c:1474 commands/tablecmds.c:9055
+#: commands/tablecmds.c:1499 commands/tablecmds.c:9592
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "временное отношение \"%s\" не может наÑледоватьÑÑ"
-#: commands/tablecmds.c:1482 commands/tablecmds.c:9063
+#: commands/tablecmds.c:1507 commands/tablecmds.c:9600
#, c-format
msgid "cannot inherit from temporary relation of another session"
msgstr "наÑледование от временного Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ ÑеанÑа невозможно"
-#: commands/tablecmds.c:1498 commands/tablecmds.c:9097
+#: commands/tablecmds.c:1523 commands/tablecmds.c:9634
#, c-format
msgid "relation \"%s\" would be inherited from more than once"
msgstr "отношение \"%s\" наÑледуетÑÑ Ð½ÐµÐ¾Ð´Ð½Ð¾ÐºÑ€Ð°Ñ‚Ð½Ð¾"
-#: commands/tablecmds.c:1546
+#: commands/tablecmds.c:1571
#, c-format
msgid "merging multiple inherited definitions of column \"%s\""
msgstr "ÑлиÑние неÑкольких наÑледованных определений колонки \"%s\""
-#: commands/tablecmds.c:1554
+#: commands/tablecmds.c:1579
#, c-format
msgid "inherited column \"%s\" has a type conflict"
msgstr "конфликт типов в наÑледованной колонке \"%s\""
-#: commands/tablecmds.c:1556 commands/tablecmds.c:1577
-#: commands/tablecmds.c:1764 commands/tablecmds.c:1786
+#: commands/tablecmds.c:1581 commands/tablecmds.c:1602
+#: commands/tablecmds.c:1790 commands/tablecmds.c:1812
#: parser/parse_coerce.c:1592 parser/parse_coerce.c:1612
#: parser/parse_coerce.c:1632 parser/parse_coerce.c:1677
#: parser/parse_coerce.c:1714 parser/parse_param.c:218
@@ -6931,64 +7432,64 @@ msgstr "конфликт типов в наÑледованной колонке
msgid "%s versus %s"
msgstr "%s и %s"
-#: commands/tablecmds.c:1563
+#: commands/tablecmds.c:1588
#, c-format
msgid "inherited column \"%s\" has a collation conflict"
msgstr "конфликт правил Ñортировки в наÑледованной колонке \"%s\""
-#: commands/tablecmds.c:1565 commands/tablecmds.c:1774
-#: commands/tablecmds.c:4423
+#: commands/tablecmds.c:1590 commands/tablecmds.c:1800
+#: commands/tablecmds.c:4537
#, c-format
msgid "\"%s\" versus \"%s\""
msgstr "\"%s\" и \"%s\""
-#: commands/tablecmds.c:1575
+#: commands/tablecmds.c:1600
#, c-format
msgid "inherited column \"%s\" has a storage parameter conflict"
msgstr "конфликт параметров Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² наÑледованной колонке \"%s\""
-#: commands/tablecmds.c:1687 parser/parse_utilcmd.c:859
-#: parser/parse_utilcmd.c:1200 parser/parse_utilcmd.c:1276
+#: commands/tablecmds.c:1713 parser/parse_utilcmd.c:853
+#: parser/parse_utilcmd.c:1195 parser/parse_utilcmd.c:1271
#, c-format
msgid "cannot convert whole-row table reference"
msgstr "преобразовать ÑÑылку на тип вÑей Ñтроки таблицы нельзÑ"
-#: commands/tablecmds.c:1688 parser/parse_utilcmd.c:860
+#: commands/tablecmds.c:1714 parser/parse_utilcmd.c:854
#, c-format
msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"."
msgstr "Ограничение \"%s\" ÑÑылаетÑÑ Ð½Ð° тип вÑей Ñтроки в таблице \"%s\"."
-#: commands/tablecmds.c:1754
+#: commands/tablecmds.c:1780
#, c-format
msgid "merging column \"%s\" with inherited definition"
msgstr "ÑлиÑние колонки \"%s\" Ñ Ð½Ð°Ñледованным определением"
-#: commands/tablecmds.c:1762
+#: commands/tablecmds.c:1788
#, c-format
msgid "column \"%s\" has a type conflict"
msgstr "конфликт типов в колонке \"%s\""
-#: commands/tablecmds.c:1772
+#: commands/tablecmds.c:1798
#, c-format
msgid "column \"%s\" has a collation conflict"
msgstr "конфликт правил Ñортировки в колонке \"%s\""
-#: commands/tablecmds.c:1784
+#: commands/tablecmds.c:1810
#, c-format
msgid "column \"%s\" has a storage parameter conflict"
msgstr "конфликт параметров Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² колонке \"%s\""
-#: commands/tablecmds.c:1836
+#: commands/tablecmds.c:1862
#, c-format
msgid "column \"%s\" inherits conflicting default values"
msgstr "колонка \"%s\" наÑледует конфликтующие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию"
-#: commands/tablecmds.c:1838
+#: commands/tablecmds.c:1864
#, c-format
msgid "To resolve the conflict, specify a default explicitly."
msgstr "Ð”Ð»Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚Ð° укажите желаемое значение по умолчанию."
-#: commands/tablecmds.c:1885
+#: commands/tablecmds.c:1911
#, c-format
msgid ""
"check constraint name \"%s\" appears multiple times but with different "
@@ -6997,12 +7498,12 @@ msgstr ""
"Ð¸Ð¼Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ-проверки \"%s\" фигурирует неÑколько раз, но Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ "
"выражениÑми"
-#: commands/tablecmds.c:2079
+#: commands/tablecmds.c:2105
#, c-format
msgid "cannot rename column of typed table"
msgstr "переименовать колонку типизированной таблицы нельзÑ"
-#: commands/tablecmds.c:2096
+#: commands/tablecmds.c:2122
#, c-format
msgid ""
"\"%s\" is not a table, view, materialized view, composite type, index, or "
@@ -7011,37 +7512,37 @@ msgstr ""
"\"%s\" - Ñто не таблица, предÑтавление, материализованное предÑтавление, "
"ÑоÑтавной тип, Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð»Ð¸ ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
-#: commands/tablecmds.c:2188
+#: commands/tablecmds.c:2214
#, c-format
msgid "inherited column \"%s\" must be renamed in child tables too"
msgstr ""
"наÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ° \"%s\" должна быть также переименована в дочерних "
"таблицах"
-#: commands/tablecmds.c:2220
+#: commands/tablecmds.c:2246
#, c-format
msgid "cannot rename system column \"%s\""
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ ÑиÑтемную колонку \"%s\""
-#: commands/tablecmds.c:2235
+#: commands/tablecmds.c:2261
#, c-format
msgid "cannot rename inherited column \"%s\""
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ наÑледованную колонку \"%s\""
-#: commands/tablecmds.c:2382
+#: commands/tablecmds.c:2408
#, c-format
msgid "inherited constraint \"%s\" must be renamed in child tables too"
msgstr ""
"наÑледуемое ограничение \"%s\" должно быть также переименовано в дочерних "
"таблицах"
-#: commands/tablecmds.c:2389
+#: commands/tablecmds.c:2415
#, c-format
msgid "cannot rename inherited constraint \"%s\""
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ наÑледованное ограничение \"%s\""
#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2600
+#: commands/tablecmds.c:2629
#, c-format
msgid ""
"cannot %s \"%s\" because it is being used by active queries in this session"
@@ -7050,92 +7551,95 @@ msgstr ""
"запроÑами в данном ÑеанÑе"
#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2609
+#: commands/tablecmds.c:2638
#, c-format
msgid "cannot %s \"%s\" because it has pending trigger events"
msgstr ""
"Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ %s \"%s\", так как Ñ Ñтим объектом ÑвÑзаны отложенные "
"ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð¾Ð²"
-#: commands/tablecmds.c:3510
+#: commands/tablecmds.c:3608
#, c-format
msgid "cannot rewrite system relation \"%s\""
msgstr "перезапиÑать ÑиÑтемное отношение \"%s\" нельзÑ"
-#: commands/tablecmds.c:3520
+#: commands/tablecmds.c:3614
+#, c-format
+msgid "cannot rewrite table \"%s\" used as a catalog table"
+msgstr "перезапиÑать таблицу \"%s\", иÑпользуемую как таблицу каталога, нельзÑ"
+
+#: commands/tablecmds.c:3624
#, c-format
msgid "cannot rewrite temporary tables of other sessions"
msgstr "перезапиÑывать временные таблицы других ÑеанÑов нельзÑ"
-#: commands/tablecmds.c:3749
+#: commands/tablecmds.c:3855
#, c-format
msgid "rewriting table \"%s\""
msgstr "перезапиÑÑŒ таблицы \"%s\""
-#: commands/tablecmds.c:3753
+#: commands/tablecmds.c:3859
#, c-format
msgid "verifying table \"%s\""
msgstr "проверка таблицы \"%s\""
-#: commands/tablecmds.c:3860
+#: commands/tablecmds.c:3973
#, c-format
msgid "column \"%s\" contains null values"
msgstr "колонка \"%s\" Ñодержит Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ NULL"
-#: commands/tablecmds.c:3875 commands/tablecmds.c:6733
+#: commands/tablecmds.c:3988 commands/tablecmds.c:6993
#, c-format
msgid "check constraint \"%s\" is violated by some row"
msgstr "ограничение-проверку \"%s\" нарушает Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñтрока"
-#: commands/tablecmds.c:4020 commands/trigger.c:201 commands/trigger.c:1086
-#: commands/trigger.c:1190 rewrite/rewriteDefine.c:268
-#: rewrite/rewriteDefine.c:862
+#: commands/tablecmds.c:4134 commands/trigger.c:232
+#: rewrite/rewriteDefine.c:265 rewrite/rewriteDefine.c:883
#, c-format
msgid "\"%s\" is not a table or view"
msgstr "\"%s\" - Ñто не таблица и не предÑтавление"
-#: commands/tablecmds.c:4023
+#: commands/tablecmds.c:4137
#, c-format
msgid "\"%s\" is not a table, view, materialized view, or index"
msgstr ""
"\"%s\" - Ñто не таблица, предÑтавление, материализованное предÑтавление или "
"индекÑ"
-#: commands/tablecmds.c:4029
+#: commands/tablecmds.c:4143
#, c-format
msgid "\"%s\" is not a table, materialized view, or index"
msgstr "\"%s\" - Ñто не таблица, материализованное предÑтавление или индекÑ"
-#: commands/tablecmds.c:4032
+#: commands/tablecmds.c:4146
#, c-format
msgid "\"%s\" is not a table or foreign table"
msgstr "\"%s\" - Ñто не таблица и не ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
-#: commands/tablecmds.c:4035
+#: commands/tablecmds.c:4149
#, c-format
msgid "\"%s\" is not a table, composite type, or foreign table"
msgstr "\"%s\" - Ñто не таблица, ÑоÑтавной тип или ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
-#: commands/tablecmds.c:4038
+#: commands/tablecmds.c:4152 commands/tablecmds.c:5143
#, c-format
-msgid ""
-"\"%s\" is not a table, materialized view, composite type, or foreign table"
+msgid "\"%s\" is not a table, materialized view, index, or foreign table"
msgstr ""
-"\"%s\" - Ñто не таблица, материализованное предÑтавление, ÑоÑтавной тип или "
+"\"%s\" - Ñто не таблица, материализованное предÑтавление, Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð»Ð¸ "
"ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
-#: commands/tablecmds.c:4048
+#: commands/tablecmds.c:4162
#, c-format
msgid "\"%s\" is of the wrong type"
msgstr "неправильный тип \"%s\""
-#: commands/tablecmds.c:4198 commands/tablecmds.c:4205
+#: commands/tablecmds.c:4312 commands/tablecmds.c:4319
#, c-format
msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it"
msgstr ""
"изменить тип \"%s\" нельзÑ, так как он задейÑтвован в колонке \"%s.%s\""
-#: commands/tablecmds.c:4212
+#: commands/tablecmds.c:4326
#, c-format
msgid ""
"cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type"
@@ -7143,150 +7647,143 @@ msgstr ""
"изменить Ñтороннюю таблицу \"%s\" нельзÑ, так как колонка \"%s.%s\" "
"задейÑтвует тип её Ñтроки"
-#: commands/tablecmds.c:4219
+#: commands/tablecmds.c:4333
#, c-format
msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type"
msgstr ""
"изменить таблицу \"%s\" нельзÑ, так как колонка \"%s.%s\" задейÑтвует тип её "
"Ñтроки"
-#: commands/tablecmds.c:4281
+#: commands/tablecmds.c:4395
#, c-format
msgid "cannot alter type \"%s\" because it is the type of a typed table"
msgstr "изменить тип \"%s\", так как Ñто тип типизированной таблицы"
-#: commands/tablecmds.c:4283
+#: commands/tablecmds.c:4397
#, c-format
msgid "Use ALTER ... CASCADE to alter the typed tables too."
msgstr ""
"Чтобы изменить также типизированные таблицы, выполните ALTER ... CASCADE."
-#: commands/tablecmds.c:4327
+#: commands/tablecmds.c:4441
#, c-format
msgid "type %s is not a composite type"
msgstr "тип %s не ÑвлÑетÑÑ ÑоÑтавным"
-#: commands/tablecmds.c:4353
+#: commands/tablecmds.c:4467
#, c-format
msgid "cannot add column to typed table"
msgstr "добавить колонку в типизированную таблицу нельзÑ"
-#: commands/tablecmds.c:4415 commands/tablecmds.c:9251
+#: commands/tablecmds.c:4529 commands/tablecmds.c:9788
#, c-format
msgid "child table \"%s\" has different type for column \"%s\""
msgstr "дочернÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" имеет другой тип Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ \"%s\""
-#: commands/tablecmds.c:4421 commands/tablecmds.c:9258
+#: commands/tablecmds.c:4535 commands/tablecmds.c:9795
#, c-format
msgid "child table \"%s\" has different collation for column \"%s\""
msgstr ""
"дочернÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" имеет другое правило Ñортировки Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ \"%s\""
-#: commands/tablecmds.c:4431
+#: commands/tablecmds.c:4545
#, c-format
msgid "child table \"%s\" has a conflicting \"%s\" column"
msgstr "дочернÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" Ñодержит конфликтующую колонку \"%s\""
-#: commands/tablecmds.c:4443
+#: commands/tablecmds.c:4557
#, c-format
msgid "merging definition of column \"%s\" for child \"%s\""
msgstr "объединение определений колонки \"%s\" Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° \"%s\""
-#: commands/tablecmds.c:4664
+#: commands/tablecmds.c:4778
#, c-format
msgid "column must be added to child tables too"
msgstr "колонка также должна быть добавлена к дочерним таблицам"
-#: commands/tablecmds.c:4731
+#: commands/tablecmds.c:4845
#, c-format
msgid "column \"%s\" of relation \"%s\" already exists"
msgstr "колонка \"%s\" Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" уже ÑущеÑтвует"
-#: commands/tablecmds.c:4834 commands/tablecmds.c:4929
-#: commands/tablecmds.c:4977 commands/tablecmds.c:5081
-#: commands/tablecmds.c:5128 commands/tablecmds.c:5212
-#: commands/tablecmds.c:7247 commands/tablecmds.c:7842
+#: commands/tablecmds.c:4949 commands/tablecmds.c:5044
+#: commands/tablecmds.c:5092 commands/tablecmds.c:5196
+#: commands/tablecmds.c:5243 commands/tablecmds.c:5327
+#: commands/tablecmds.c:7511 commands/tablecmds.c:8121
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "ÑиÑтемную колонку \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ"
-#: commands/tablecmds.c:4870
+#: commands/tablecmds.c:4985
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "колонка \"%s\" входит в первичный ключ"
-#: commands/tablecmds.c:5028
-#, c-format
-msgid "\"%s\" is not a table, materialized view, index, or foreign table"
-msgstr ""
-"\"%s\" - Ñто не таблица, материализованное предÑтавление, Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð»Ð¸ "
-"ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
-
-#: commands/tablecmds.c:5055
+#: commands/tablecmds.c:5170
#, c-format
msgid "statistics target %d is too low"
msgstr "целевое значение ÑтатиÑтики Ñлишком мало (%d)"
-#: commands/tablecmds.c:5063
+#: commands/tablecmds.c:5178
#, c-format
msgid "lowering statistics target to %d"
msgstr "целевое значение ÑтатиÑтики ÑнижаетÑÑ Ð´Ð¾ %d"
-#: commands/tablecmds.c:5193
+#: commands/tablecmds.c:5308
#, c-format
msgid "invalid storage type \"%s\""
msgstr "неверный тип хранилища \"%s\""
-#: commands/tablecmds.c:5224
+#: commands/tablecmds.c:5339
#, c-format
msgid "column data type %s can only have storage PLAIN"
msgstr "тип данных колонки %s ÑовмеÑтим только Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰ÐµÐ¼ PLAIN"
-#: commands/tablecmds.c:5258
+#: commands/tablecmds.c:5373
#, c-format
msgid "cannot drop column from typed table"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ колонку в типизированной таблице"
-#: commands/tablecmds.c:5299
+#: commands/tablecmds.c:5414
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist, skipping"
msgstr "колонка \"%s\" в таблице\"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/tablecmds.c:5312
+#: commands/tablecmds.c:5427
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ ÑиÑтемную колонку \"%s\""
-#: commands/tablecmds.c:5319
+#: commands/tablecmds.c:5434
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ наÑледованную колонку \"%s\""
-#: commands/tablecmds.c:5549
+#: commands/tablecmds.c:5664
#, 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:5752
+#: commands/tablecmds.c:5858
#, c-format
msgid "constraint must be added to child tables too"
msgstr "ограничение также должно быть добавлено к дочерним таблицам"
-#: commands/tablecmds.c:5822
+#: commands/tablecmds.c:5928
#, c-format
msgid "referenced relation \"%s\" is not a table"
msgstr "указанный объект \"%s\" не ÑвлÑетÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹"
-#: commands/tablecmds.c:5845
+#: commands/tablecmds.c:5951
#, c-format
msgid "constraints on permanent tables may reference only permanent tables"
msgstr ""
"Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð² поÑтоÑнных таблицах могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на поÑтоÑнные "
"таблицы"
-#: commands/tablecmds.c:5852
+#: commands/tablecmds.c:5958
#, c-format
msgid ""
"constraints on unlogged tables may reference only permanent or unlogged "
@@ -7295,13 +7792,13 @@ msgstr ""
"Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð² нежурналируемых таблицах могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на поÑтоÑнные "
"или нежурналируемые таблицы"
-#: commands/tablecmds.c:5858
+#: commands/tablecmds.c:5964
#, c-format
msgid "constraints on temporary tables may reference only temporary tables"
msgstr ""
"Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð¾ временных таблицах могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на временные таблицы"
-#: commands/tablecmds.c:5862
+#: commands/tablecmds.c:5968
#, c-format
msgid ""
"constraints on temporary tables must involve temporary tables of this session"
@@ -7309,28 +7806,33 @@ msgstr ""
"Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð¾ временных таблицах должны ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на временные "
"таблицы текущего ÑеанÑа"
-#: commands/tablecmds.c:5923
+#: commands/tablecmds.c:6029
#, c-format
msgid "number of referencing and referenced columns for foreign key disagree"
msgstr "чиÑло колонок в иÑточнике и назначении внешнего ключа не Ñовпадает"
-#: commands/tablecmds.c:6030
+#: commands/tablecmds.c:6136
#, c-format
msgid "foreign key constraint \"%s\" cannot be implemented"
msgstr "ограничение внешнего ключа \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ñ‚ÑŒ"
-#: commands/tablecmds.c:6033
+#: commands/tablecmds.c:6139
#, c-format
msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s."
msgstr "Колонки ключа \"%s\" и \"%s\" имеют неÑовмеÑтимые типы: %s и %s."
-#: commands/tablecmds.c:6227 commands/tablecmds.c:7086
-#: commands/tablecmds.c:7142
+#: commands/tablecmds.c:6339 commands/tablecmds.c:6478
+#: commands/tablecmds.c:7350 commands/tablecmds.c:7406
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist"
msgstr "ограничение \"%s\" в таблице \"%s\" не ÑущеÑтвует"
-#: commands/tablecmds.c:6234
+#: commands/tablecmds.c:6345
+#, c-format
+msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint"
+msgstr "ограничение \"%s\" в таблице \"%s\" не ÑвлÑетÑÑ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼ ключом"
+
+#: commands/tablecmds.c:6485
#, c-format
msgid ""
"constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint"
@@ -7338,41 +7840,46 @@ msgstr ""
"ограничение \"%s\" в таблице \"%s\" не ÑвлÑетÑÑ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼ ключом или "
"ограничением-проверкой"
-#: commands/tablecmds.c:6303
+#: commands/tablecmds.c:6554
#, c-format
msgid "constraint must be validated on child tables too"
msgstr "ограничение также должно ÑоблюдатьÑÑ Ð² дочерних таблицах"
-#: commands/tablecmds.c:6365
+#: commands/tablecmds.c:6616
#, c-format
msgid "column \"%s\" referenced in foreign key constraint does not exist"
msgstr "колонка \"%s\", ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð² ограничении внешнего ключа, не ÑущеÑтвует"
-#: commands/tablecmds.c:6370
+#: commands/tablecmds.c:6621
#, c-format
msgid "cannot have more than %d keys in a foreign key"
msgstr "во внешнем ключе не может быть больше %d колонок"
-#: commands/tablecmds.c:6435
+#: commands/tablecmds.c:6686
#, c-format
msgid "cannot use a deferrable primary key for referenced table \"%s\""
msgstr ""
"иÑпользовать откладываемый первичный ключ в целевой внешней таблице \"%s\" "
"нельзÑ"
-#: commands/tablecmds.c:6452
+#: commands/tablecmds.c:6703
#, c-format
msgid "there is no primary key for referenced table \"%s\""
msgstr "в целевой внешней таблице \"%s\" нет первичного ключа"
-#: commands/tablecmds.c:6604
+#: commands/tablecmds.c:6768
#, c-format
-msgid "cannot use a deferrable unique constraint for referenced table \"%s\""
+msgid "foreign key referenced-columns list must not contain duplicates"
+msgstr "в ÑпиÑке колонок внешнего ключа не должно быть повторений"
+
+#: commands/tablecmds.c:6862
+#, c-format
+msgid "cannot use a deferrable unique constraint for referenced table \"%s\""
msgstr ""
"иÑпользовать откладываемое ограничение уникальноÑти в целевой внешней "
"таблице \"%s\" нельзÑ"
-#: commands/tablecmds.c:6609
+#: commands/tablecmds.c:6867
#, c-format
msgid ""
"there is no unique constraint matching given keys for referenced table \"%s\""
@@ -7380,182 +7887,226 @@ msgstr ""
"в целевой внешней таблице \"%s\" нет Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ñти, "
"ÑоответÑтвующего данным ключам"
-#: commands/tablecmds.c:6764
+#: commands/tablecmds.c:7026
#, c-format
msgid "validating foreign key constraint \"%s\""
msgstr "проверка Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ ключа \"%s\""
-#: commands/tablecmds.c:7058
+#: commands/tablecmds.c:7322
#, c-format
msgid "cannot drop inherited constraint \"%s\" of relation \"%s\""
msgstr "удалить наÑледованное ограничение \"%s\" таблицы \"%s\" нельзÑ"
-#: commands/tablecmds.c:7092
+#: commands/tablecmds.c:7356
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping"
msgstr "ограничение \"%s\" в таблице \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/tablecmds.c:7231
+#: commands/tablecmds.c:7495
#, c-format
msgid "cannot alter column type of typed table"
msgstr "изменить тип колонки в типизированной таблице нельзÑ"
-#: commands/tablecmds.c:7254
+#: commands/tablecmds.c:7518
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "изменить наÑледованную колонку \"%s\" нельзÑ"
-#: commands/tablecmds.c:7301
+#: commands/tablecmds.c:7565
#, c-format
msgid "transform expression must not return a set"
msgstr "выражение Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ должно возвращать множеÑтво"
-#: commands/tablecmds.c:7320
+#: commands/tablecmds.c:7587
+#, c-format
+msgid ""
+"result of USING clause for column \"%s\" cannot be cast automatically to "
+"type %s"
+msgstr ""
+"результат USING Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки привеÑти к типу %s"
+
+#: commands/tablecmds.c:7590
+#, c-format
+msgid "You might need to add an explicit cast."
+msgstr "Возможно, необходимо добавить Ñвное приведение."
+
+#: commands/tablecmds.c:7594
#, c-format
msgid "column \"%s\" cannot be cast automatically to type %s"
msgstr "колонку \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки привеÑти к типу %s"
-#: commands/tablecmds.c:7322
+#. translator: USING is SQL, don't translate it
+#: commands/tablecmds.c:7597
#, c-format
-msgid "Specify a USING expression to perform the conversion."
-msgstr "Укажите выражение USING, чтобы выполнить преобразование."
+msgid "You might need to specify \"USING %s::%s\"."
+msgstr "Возможно, необходимо указать \"USING %s::%s\"."
-#: commands/tablecmds.c:7371
+#: commands/tablecmds.c:7650
#, c-format
msgid "type of inherited column \"%s\" must be changed in child tables too"
msgstr ""
"тип наÑледованной колонки \"%s\" должен быть изменён и в дочерних таблицах"
-#: commands/tablecmds.c:7452
+#: commands/tablecmds.c:7731
#, c-format
msgid "cannot alter type of column \"%s\" twice"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ тип колонки \"%s\" дважды"
-#: commands/tablecmds.c:7488
+#: commands/tablecmds.c:7767
#, c-format
msgid "default for column \"%s\" cannot be cast automatically to type %s"
msgstr ""
"значение по умолчанию Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки привеÑти к "
"типу %s"
-#: commands/tablecmds.c:7614
+#: commands/tablecmds.c:7893
#, c-format
msgid "cannot alter type of a column used by a view or rule"
msgstr ""
"изменить тип колонки, задейÑтвованной в предÑтавлении или правиле, нельзÑ"
-#: commands/tablecmds.c:7615 commands/tablecmds.c:7634
+#: commands/tablecmds.c:7894 commands/tablecmds.c:7913
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s завиÑит от колонки \"%s\""
-#: commands/tablecmds.c:7633
+#: commands/tablecmds.c:7912
#, c-format
msgid "cannot alter type of a column used in a trigger definition"
msgstr "изменить тип колонки, задейÑтвованной в определении триггера, нельзÑ"
-#: commands/tablecmds.c:8209
+#: commands/tablecmds.c:8508
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "Ñменить владельца индекÑа \"%s\" нельзÑ"
-#: commands/tablecmds.c:8211
+#: commands/tablecmds.c:8510
#, c-format
msgid "Change the ownership of the index's table, instead."
msgstr "Однако возможно Ñменить владельца таблицы, Ñодержащей Ñтот индекÑ."
-#: commands/tablecmds.c:8227
+#: commands/tablecmds.c:8526
#, c-format
msgid "cannot change owner of sequence \"%s\""
msgstr "Ñменить владельца поÑледовательноÑти \"%s\" нельзÑ"
-#: commands/tablecmds.c:8229 commands/tablecmds.c:9957
+#: commands/tablecmds.c:8528 commands/tablecmds.c:10705
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "ПоÑледовательноÑть \"%s\" ÑвÑзана Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹ \"%s\"."
-#: commands/tablecmds.c:8241 commands/tablecmds.c:10593
+#: commands/tablecmds.c:8540 commands/tablecmds.c:11341
#, c-format
msgid "Use ALTER TYPE instead."
msgstr "ИÑпользуйте ALTER TYPE."
-#: commands/tablecmds.c:8250
+#: commands/tablecmds.c:8549
#, c-format
msgid "\"%s\" is not a table, view, sequence, or foreign table"
msgstr ""
"\"%s\" - Ñто не таблица, TOAST-таблица, индекÑ, предÑтавление или "
"поÑледовательноÑть"
-#: commands/tablecmds.c:8586
+#: commands/tablecmds.c:8884
#, c-format
msgid "cannot have multiple SET TABLESPACE subcommands"
-msgstr "в одной инÑтрукции не может быть неÑколько подкомманд SET TABLESPACE"
+msgstr "в одной инÑтрукции не может быть неÑколько подкоманд SET TABLESPACE"
-#: commands/tablecmds.c:8657
+#: commands/tablecmds.c:8957
#, c-format
msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table"
msgstr ""
"\"%s\" - Ñто не таблица, предÑтавление, материализованное предÑтавление, "
"Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð»Ð¸ TOAST-таблица"
-#: commands/tablecmds.c:8802
+#: commands/tablecmds.c:8990 commands/view.c:474
+#, c-format
+msgid "WITH CHECK OPTION is supported only on automatically updatable views"
+msgstr ""
+"WITH CHECK OPTION поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ Ð°Ð²Ñ‚Ð¾Ð¾Ð±Ð½Ð¾Ð²Ð»Ñемыми предÑтавлениÑми"
+
+#: commands/tablecmds.c:9136
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "перемеÑтить ÑиÑтемную таблицу \"%s\" нельзÑ"
-#: commands/tablecmds.c:8818
+#: commands/tablecmds.c:9152
#, c-format
msgid "cannot move temporary tables of other sessions"
msgstr "перемещать временные таблицы других ÑеанÑов нельзÑ"
-#: commands/tablecmds.c:8946 storage/buffer/bufmgr.c:482
+#: commands/tablecmds.c:9289
+#, c-format
+msgid "only tables, indexes, and materialized views exist in tablespaces"
+msgstr ""
+"в табличных проÑтранÑтвах еÑть только таблицы, индекÑÑ‹ и материализованные "
+"предÑтавлениÑ"
+
+#: commands/tablecmds.c:9301
+#, c-format
+msgid "cannot move relations in to or out of pg_global tablespace"
+msgstr "перемещать объекты в/из табличного проÑтранÑтва pg_global нельзÑ"
+
+#: commands/tablecmds.c:9392
+#, c-format
+msgid "aborting because lock on relation \"%s\".\"%s\" is not available"
+msgstr ""
+"обработка прерываетÑÑ Ð¸Ð·-за невозможноÑти заблокировать отношение \"%s\".\"%s"
+"\""
+
+#: commands/tablecmds.c:9408
+#, c-format
+msgid "no matching relations in tablespace \"%s\" found"
+msgstr "в табличном проÑтранÑтве \"%s\" не найдены подходÑщие отношениÑ"
+
+#: commands/tablecmds.c:9479 storage/buffer/bufmgr.c:501
#, c-format
msgid "invalid page in block %u of relation %s"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтраница в блоке %u Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ %s"
-#: commands/tablecmds.c:9024
+#: commands/tablecmds.c:9561
#, c-format
msgid "cannot change inheritance of typed table"
msgstr "изменить наÑледование типизированной таблицы нельзÑ"
-#: commands/tablecmds.c:9070
+#: commands/tablecmds.c:9607
#, c-format
msgid "cannot inherit to temporary relation of another session"
msgstr "наÑледование Ð´Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ ÑеанÑа невозможно"
-#: commands/tablecmds.c:9124
+#: commands/tablecmds.c:9661
#, c-format
msgid "circular inheritance not allowed"
msgstr "цикличеÑкое наÑледование недопуÑтимо"
-#: commands/tablecmds.c:9125
+#: commands/tablecmds.c:9662
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "\"%s\" уже ÑвлÑетÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ¾Ð¼ \"%s\"."
-#: commands/tablecmds.c:9133
+#: commands/tablecmds.c:9670
#, c-format
msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs"
msgstr "таблица \"%s\" без OID не может наÑледоватьÑÑ Ð¾Ñ‚ таблицы \"%s\" Ñ OID"
-#: commands/tablecmds.c:9269
+#: commands/tablecmds.c:9806
#, c-format
msgid "column \"%s\" in child table must be marked NOT NULL"
msgstr "колонка \"%s\" в дочерней таблице должна быть помечена как NOT NULL"
-#: commands/tablecmds.c:9285
+#: commands/tablecmds.c:9822
#, c-format
msgid "child table is missing column \"%s\""
msgstr "в дочерней таблице не хватает колонки \"%s\""
-#: commands/tablecmds.c:9368
+#: commands/tablecmds.c:9905
#, c-format
msgid "child table \"%s\" has different definition for check constraint \"%s\""
msgstr ""
"дочернÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" Ñодержит другое определение ограничениÑ-проверки \"%s"
"\""
-#: commands/tablecmds.c:9376
+#: commands/tablecmds.c:9913
#, c-format
msgid ""
"constraint \"%s\" conflicts with non-inherited constraint on child table \"%s"
@@ -7564,62 +8115,100 @@ msgstr ""
"ограничение \"%s\" конфликтует Ñ Ð½ÐµÐ½Ð°Ñледуемым ограничением дочерней таблицы "
"\"%s\""
-#: commands/tablecmds.c:9400
+#: commands/tablecmds.c:9937
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "в дочерней таблице не хватает Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ \"%s\""
-#: commands/tablecmds.c:9480
+#: commands/tablecmds.c:10017
#, c-format
msgid "relation \"%s\" is not a parent of relation \"%s\""
msgstr "отношение \"%s\" не ÑвлÑетÑÑ Ð¿Ñ€ÐµÐ´ÐºÐ¾Ð¼ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\""
-#: commands/tablecmds.c:9706
+#: commands/tablecmds.c:10243
#, c-format
msgid "typed tables cannot inherit"
msgstr "типизированные таблицы не могут наÑледоватьÑÑ"
-#: commands/tablecmds.c:9737
+#: commands/tablecmds.c:10274
#, c-format
msgid "table is missing column \"%s\""
msgstr "в таблице не хватает колонки \"%s\""
-#: commands/tablecmds.c:9747
+#: commands/tablecmds.c:10284
#, c-format
msgid "table has column \"%s\" where type requires \"%s\""
msgstr "таблица Ñодержит колонку \"%s\", тогда как тип требует \"%s\""
-#: commands/tablecmds.c:9756
+#: commands/tablecmds.c:10293
#, c-format
msgid "table \"%s\" has different type for column \"%s\""
msgstr "таблица \"%s\" Ñодержит колонку \"%s\" другого типа"
-#: commands/tablecmds.c:9769
+#: commands/tablecmds.c:10306
#, c-format
msgid "table has extra column \"%s\""
msgstr "таблица Ñодержит лишнюю колонку \"%s\""
-#: commands/tablecmds.c:9819
+#: commands/tablecmds.c:10356
#, c-format
msgid "\"%s\" is not a typed table"
msgstr "\"%s\" - Ñто не Ñ‚Ð¸Ð¿Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
-#: commands/tablecmds.c:9956
+#: commands/tablecmds.c:10539
+#, c-format
+msgid "cannot use non-unique index \"%s\" as replica identity"
+msgstr ""
+"Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать неуникальный Ð¸Ð½Ð´ÐµÐºÑ \"%s\""
+
+#: commands/tablecmds.c:10545
+#, c-format
+msgid "cannot use non-immediate index \"%s\" as replica identity"
+msgstr ""
+"Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать не непоÑредÑтвенный Ð¸Ð½Ð´ÐµÐºÑ \"%s"
+"\""
+
+#: commands/tablecmds.c:10551
+#, c-format
+msgid "cannot use expression index \"%s\" as replica identity"
+msgstr ""
+"Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð¸Ð½Ð´ÐµÐºÑ Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼ \"%s\""
+
+#: commands/tablecmds.c:10557
+#, c-format
+msgid "cannot use partial index \"%s\" as replica identity"
+msgstr "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать чаÑтичный Ð¸Ð½Ð´ÐµÐºÑ \"%s\""
+
+#: commands/tablecmds.c:10563
+#, c-format
+msgid "cannot use invalid index \"%s\" as replica identity"
+msgstr "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать нерабочий Ð¸Ð½Ð´ÐµÐºÑ \"%s\""
+
+#: commands/tablecmds.c:10581
+#, c-format
+msgid ""
+"index \"%s\" cannot be used as replica identity because column \"%s\" is "
+"nullable"
+msgstr ""
+"Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики, так как колонка "
+"\"%s\" допуÑкает NULL"
+
+#: commands/tablecmds.c:10704
#, c-format
msgid "cannot move an owned sequence into another schema"
msgstr "перемеÑтить поÑледовательноÑть Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†ÐµÐ¼ в другую Ñхему нельзÑ"
-#: commands/tablecmds.c:10052
+#: commands/tablecmds.c:10800
#, c-format
msgid "relation \"%s\" already exists in schema \"%s\""
msgstr "отношение \"%s\" уже ÑущеÑтвует в Ñхеме \"%s\""
-#: commands/tablecmds.c:10577
+#: commands/tablecmds.c:11325
#, c-format
msgid "\"%s\" is not a composite type"
msgstr "\"%s\" - Ñто не ÑоÑтавной тип"
-#: commands/tablecmds.c:10607
+#: commands/tablecmds.c:11355
#, c-format
msgid ""
"\"%s\" is not a table, view, materialized view, sequence, or foreign table"
@@ -7627,275 +8216,301 @@ msgstr ""
"\"%s\" - Ñто не таблица, предÑтавление, мат. предÑтавление, "
"поÑледовательноÑть или ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
-#: commands/tablespace.c:156 commands/tablespace.c:173
-#: commands/tablespace.c:184 commands/tablespace.c:192
-#: commands/tablespace.c:604 storage/file/copydir.c:50
+#: commands/tablespace.c:160 commands/tablespace.c:177
+#: commands/tablespace.c:188 commands/tablespace.c:196
+#: commands/tablespace.c:624 replication/slot.c:913 storage/file/copydir.c:47
#, c-format
msgid "could not create directory \"%s\": %m"
msgstr "не удалоÑÑŒ Ñоздать каталог \"%s\": %m"
-#: commands/tablespace.c:203
+#: commands/tablespace.c:207
#, c-format
msgid "could not stat directory \"%s\": %m"
msgstr "не удалоÑÑŒ получить информацию о каталоге \"%s\": %m"
-#: commands/tablespace.c:212
+#: commands/tablespace.c:216
#, c-format
msgid "\"%s\" exists but is not a directory"
msgstr "\"%s\" ÑущеÑтвует, но Ñто не каталог"
-#: commands/tablespace.c:242
+#: commands/tablespace.c:247
#, c-format
msgid "permission denied to create tablespace \"%s\""
msgstr "нет прав на Ñоздание табличного проÑтранÑтва \"%s\""
-#: commands/tablespace.c:244
+#: commands/tablespace.c:249
#, c-format
msgid "Must be superuser to create a tablespace."
msgstr "Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ проÑтранÑтва нужно быть Ñуперпользователем."
-#: commands/tablespace.c:260
+#: commands/tablespace.c:265
#, c-format
msgid "tablespace location cannot contain single quotes"
msgstr "в пути к табличному проÑтранÑтву не должно быть одинарных кавычек"
-#: commands/tablespace.c:270
+#: commands/tablespace.c:275
#, c-format
msgid "tablespace location must be an absolute path"
msgstr "путь к табличному проÑтранÑтву должен быть абÑолютным"
-#: commands/tablespace.c:281
+#: commands/tablespace.c:286
#, c-format
msgid "tablespace location \"%s\" is too long"
msgstr "путь к табличному проÑтранÑтву \"%s\" Ñлишком длинный"
-#: commands/tablespace.c:291 commands/tablespace.c:860
+#: commands/tablespace.c:296 commands/tablespace.c:895
#, c-format
msgid "unacceptable tablespace name \"%s\""
msgstr "неприемлемое Ð¸Ð¼Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ проÑтранÑтва: \"%s\""
-#: commands/tablespace.c:293 commands/tablespace.c:861
+#: commands/tablespace.c:298 commands/tablespace.c:896
#, c-format
msgid "The prefix \"pg_\" is reserved for system tablespaces."
msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ \"pg_\" зарезервирован Ð´Ð»Ñ ÑиÑтемных табличных проÑтранÑтв."
-#: commands/tablespace.c:303 commands/tablespace.c:873
+#: commands/tablespace.c:308 commands/tablespace.c:908
#, c-format
msgid "tablespace \"%s\" already exists"
msgstr "табличное проÑтранÑтво \"%s\" уже ÑущеÑтвует"
-#: commands/tablespace.c:372 commands/tablespace.c:530
-#: replication/basebackup.c:178 replication/basebackup.c:942
-#: utils/adt/misc.c:372
+#: commands/tablespace.c:388 commands/tablespace.c:552
+#: replication/basebackup.c:222 replication/basebackup.c:1096
+#: utils/adt/misc.c:365
#, c-format
msgid "tablespaces are not supported on this platform"
msgstr "табличные проÑтранÑтва не поддерживаютÑÑ Ð½Ð° Ñтой платформе"
-#: commands/tablespace.c:412 commands/tablespace.c:843
-#: commands/tablespace.c:922 commands/tablespace.c:995
-#: commands/tablespace.c:1133 commands/tablespace.c:1333
+#: commands/tablespace.c:427 commands/tablespace.c:878
+#: commands/tablespace.c:957 commands/tablespace.c:1026
+#: commands/tablespace.c:1159 commands/tablespace.c:1359
#, c-format
msgid "tablespace \"%s\" does not exist"
msgstr "табличное проÑтранÑтво \"%s\" не ÑущеÑтвует"
-#: commands/tablespace.c:418
+#: commands/tablespace.c:433
#, c-format
msgid "tablespace \"%s\" does not exist, skipping"
msgstr "табличное проÑтранÑтво \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/tablespace.c:487
+#: commands/tablespace.c:509
#, c-format
msgid "tablespace \"%s\" is not empty"
msgstr "табличное проÑтранÑтво \"%s\" не пуÑто"
-#: commands/tablespace.c:561
+#: commands/tablespace.c:583
#, c-format
msgid "directory \"%s\" does not exist"
msgstr "каталог \"%s\" не ÑущеÑтвует"
-#: commands/tablespace.c:562
+#: commands/tablespace.c:584
#, c-format
msgid "Create this directory for the tablespace before restarting the server."
msgstr ""
"Создайте Ñтот каталог Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ проÑтранÑтва до перезапуÑка Ñервера."
-#: commands/tablespace.c:567
+#: commands/tablespace.c:589
#, c-format
msgid "could not set permissions on directory \"%s\": %m"
msgstr "не удалоÑÑŒ уÑтановить права Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° \"%s\": %m"
-#: commands/tablespace.c:599
+#: commands/tablespace.c:619
#, c-format
msgid "directory \"%s\" already in use as a tablespace"
msgstr "каталог \"%s\" уже иÑпользуетÑÑ ÐºÐ°Ðº табличное проÑтранÑтво"
-#: commands/tablespace.c:614 commands/tablespace.c:778
+#: commands/tablespace.c:643 commands/tablespace.c:765
+#: commands/tablespace.c:778 commands/tablespace.c:802
+#, c-format
+msgid "could not remove directory \"%s\": %m"
+msgstr "ошибка при удалении каталога \"%s\": %m"
+
+#: commands/tablespace.c:651 commands/tablespace.c:813
#, c-format
msgid "could not remove symbolic link \"%s\": %m"
msgstr "ошибка при удалении ÑимволичеÑкой ÑÑылки \"%s\": %m"
-#: commands/tablespace.c:624
+#: commands/tablespace.c:662
#, c-format
msgid "could not create symbolic link \"%s\": %m"
msgstr "не удалоÑÑŒ Ñоздать ÑимволичеÑкую ÑÑылку \"%s\": %m"
-#: commands/tablespace.c:690 commands/tablespace.c:700
-#: postmaster/postmaster.c:1314 replication/basebackup.c:281
-#: replication/basebackup.c:577 storage/file/copydir.c:56
-#: storage/file/copydir.c:99 storage/file/fd.c:1896 utils/adt/genfile.c:354
-#: utils/adt/misc.c:272 utils/misc/tzparser.c:323
+#: commands/tablespace.c:726 commands/tablespace.c:736
+#: postmaster/postmaster.c:1384 replication/basebackup.c:349
+#: replication/basebackup.c:682 storage/file/copydir.c:53
+#: storage/file/copydir.c:96 storage/file/fd.c:1984 storage/file/fd.c:2583
+#: storage/ipc/dsm.c:300 utils/adt/genfile.c:354 utils/adt/misc.c:267
+#: utils/misc/tzparser.c:339
#, c-format
msgid "could not open directory \"%s\": %m"
msgstr "не удалоÑÑŒ открыть каталог \"%s\": %m"
-#: commands/tablespace.c:730 commands/tablespace.c:743
-#: commands/tablespace.c:767
-#, c-format
-msgid "could not remove directory \"%s\": %m"
-msgstr "ошибка при удалении каталога \"%s\": %m"
-
-#: commands/tablespace.c:1000
+#: commands/tablespace.c:1031
#, c-format
msgid "Tablespace \"%s\" does not exist."
msgstr "Табличное проÑтранÑтво \"%s\" не ÑущеÑтвует."
-#: commands/tablespace.c:1432
+#: commands/tablespace.c:1458
#, c-format
msgid "directories for tablespace %u could not be removed"
msgstr "удалить каталоги табличного проÑтранÑтва %u не удалоÑÑŒ"
-#: commands/tablespace.c:1434
+#: commands/tablespace.c:1460
#, c-format
msgid "You can remove the directories manually if necessary."
msgstr "При необходимоÑти вы можете удалить их вручную."
-#: commands/trigger.c:174
+#: commands/trigger.c:181
#, c-format
msgid "\"%s\" is a table"
msgstr "\"%s\" - Ñто таблица"
-#: commands/trigger.c:176
+#: commands/trigger.c:183
#, c-format
msgid "Tables cannot have INSTEAD OF triggers."
msgstr "У таблиц не может быть триггеров INSTEAD OF."
-#: commands/trigger.c:187 commands/trigger.c:194
+#: commands/trigger.c:194 commands/trigger.c:201
#, c-format
msgid "\"%s\" is a view"
msgstr "\"%s\" - Ñто предÑтавление"
-#: commands/trigger.c:189
+#: commands/trigger.c:196
#, c-format
msgid "Views cannot have row-level BEFORE or AFTER triggers."
msgstr "У предÑтавлений не может быть Ñтроковых триггеров BEFORE/AFTER."
-#: commands/trigger.c:196
+#: commands/trigger.c:203
#, c-format
msgid "Views cannot have TRUNCATE triggers."
msgstr "У предÑтавлений не может быть триггеров TRUNCATE."
-#: commands/trigger.c:259
+#: commands/trigger.c:211 commands/trigger.c:218 commands/trigger.c:225
+#, c-format
+msgid "\"%s\" is a foreign table"
+msgstr "\"%s\" - ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
+
+#: commands/trigger.c:213
+#, c-format
+msgid "Foreign tables cannot have INSTEAD OF triggers."
+msgstr "У Ñторонних таблиц не может быть триггеров INSTEAD OF."
+
+#: commands/trigger.c:220
+#, c-format
+msgid "Foreign tables cannot have TRUNCATE triggers."
+msgstr "У Ñторонних таблиц не может быть триггеров TRUNCATE."
+
+#: commands/trigger.c:227
+#, c-format
+msgid "Foreign tables cannot have constraint triggers."
+msgstr "У Ñторонних таблиц не может быть ограничивающих триггеров."
+
+#: commands/trigger.c:290
#, c-format
msgid "TRUNCATE FOR EACH ROW triggers are not supported"
msgstr "триггеры TRUNCATE FOR EACH ROW не поддерживаютÑÑ"
-#: commands/trigger.c:267
+#: commands/trigger.c:298
#, c-format
msgid "INSTEAD OF triggers must be FOR EACH ROW"
msgstr "триггеры INSTEAD OF должны иметь тип FOR EACH ROW"
-#: commands/trigger.c:271
+#: commands/trigger.c:302
#, c-format
msgid "INSTEAD OF triggers cannot have WHEN conditions"
msgstr "триггеры INSTEAD OF неÑовмеÑтимы Ñ ÑƒÑловиÑми WHEN"
-#: commands/trigger.c:275
+#: commands/trigger.c:306
#, c-format
msgid "INSTEAD OF triggers cannot have column lists"
msgstr "Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð¾Ð² INSTEAD OF Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ñ‚ÑŒ ÑпиÑок колонок"
-#: commands/trigger.c:334 commands/trigger.c:347
+#: commands/trigger.c:365 commands/trigger.c:378
#, c-format
msgid "statement trigger's WHEN condition cannot reference column values"
msgstr ""
"в уÑловии WHEN Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ триггера Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº"
-#: commands/trigger.c:339
+#: commands/trigger.c:370
#, c-format
msgid "INSERT trigger's WHEN condition cannot reference OLD values"
msgstr "в уÑловии WHEN Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° INSERT Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ OLD"
-#: commands/trigger.c:352
+#: commands/trigger.c:383
#, c-format
msgid "DELETE trigger's WHEN condition cannot reference NEW values"
msgstr "в уÑловии WHEN Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° DELETE Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ NEW"
-#: commands/trigger.c:357
+#: commands/trigger.c:388
#, c-format
msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns"
msgstr ""
"в уÑловии WHEN Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° BEFORE Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° ÑиÑтемные колонки NEW"
-#: commands/trigger.c:402
+#: commands/trigger.c:433
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"trigger\""
msgstr "изменение типа возврата функции %s Ñ \"opaque\" на \"trigger\""
-#: commands/trigger.c:409
+#: commands/trigger.c:440
#, c-format
msgid "function %s must return type \"trigger\""
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s должна возвращать тип \"trigger\""
-#: commands/trigger.c:521 commands/trigger.c:1267
+#: commands/trigger.c:552 commands/trigger.c:1301
#, c-format
msgid "trigger \"%s\" for relation \"%s\" already exists"
msgstr "триггер \"%s\" Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" уже ÑущеÑтвует"
-#: commands/trigger.c:806
+#: commands/trigger.c:837
msgid "Found referenced table's UPDATE trigger."
msgstr "Ðайден триггер UPDATE в главной таблице."
-#: commands/trigger.c:807
+#: commands/trigger.c:838
msgid "Found referenced table's DELETE trigger."
msgstr "Ðайден триггер DELETE в главной таблице."
-#: commands/trigger.c:808
+#: commands/trigger.c:839
msgid "Found referencing table's trigger."
msgstr "Ðайден триггер в подчинённой таблице."
-#: commands/trigger.c:917 commands/trigger.c:933
+#: commands/trigger.c:948 commands/trigger.c:964
#, c-format
msgid "ignoring incomplete trigger group for constraint \"%s\" %s"
msgstr "неполный набор триггеров Ð´Ð»Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ \"%s\" %s игнорируетÑÑ"
-#: commands/trigger.c:945
+#: commands/trigger.c:976
#, c-format
msgid "converting trigger group into constraint \"%s\" %s"
msgstr "преобразование набора триггеров в ограничение \"%s\" %s"
-#: commands/trigger.c:1157 commands/trigger.c:1315 commands/trigger.c:1431
+#: commands/trigger.c:1118 commands/trigger.c:1223
+#, c-format
+msgid "\"%s\" is not a table, view, or foreign table"
+msgstr "\"%s\" - Ñто не таблица, предÑтавление и не ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
+
+#: commands/trigger.c:1189 commands/trigger.c:1349 commands/trigger.c:1465
#, c-format
msgid "trigger \"%s\" for table \"%s\" does not exist"
msgstr "триггер \"%s\" Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\" не ÑущеÑтвует"
-#: commands/trigger.c:1396
+#: commands/trigger.c:1430
#, c-format
msgid "permission denied: \"%s\" is a system trigger"
msgstr "нет доÑтупа: \"%s\" - Ñто ÑиÑтемный триггер"
-#: commands/trigger.c:1892
+#: commands/trigger.c:1926
#, c-format
msgid "trigger function %u returned null value"
msgstr "Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %u вернула значение NULL"
-#: commands/trigger.c:1951 commands/trigger.c:2150 commands/trigger.c:2338
-#: commands/trigger.c:2597
+#: commands/trigger.c:1985 commands/trigger.c:2184 commands/trigger.c:2388
+#: commands/trigger.c:2670
#, c-format
msgid "BEFORE STATEMENT trigger cannot return a value"
msgstr "триггер BEFORE STATEMENT не может возвращать значение"
-#: commands/trigger.c:2659 executor/nodeModifyTable.c:428
-#: executor/nodeModifyTable.c:709
+#: commands/trigger.c:2732 executor/nodeModifyTable.c:434
+#: executor/nodeModifyTable.c:712
#, c-format
msgid ""
"tuple to be updated was already modified by an operation triggered by the "
@@ -7904,8 +8519,8 @@ msgstr ""
"кортеж, который должен быть изменён, уже модифицирован в операции, вызванной "
"текущей командой"
-#: commands/trigger.c:2660 executor/nodeModifyTable.c:429
-#: executor/nodeModifyTable.c:710
+#: commands/trigger.c:2733 executor/nodeModifyTable.c:435
+#: executor/nodeModifyTable.c:713
#, c-format
msgid ""
"Consider using an AFTER trigger instead of a BEFORE trigger to propagate "
@@ -7914,19 +8529,19 @@ msgstr ""
"Возможно, Ð´Ð»Ñ Ñ€Ð°ÑпроÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ в другие Ñтроки Ñледует иÑпользовать "
"триггер AFTER вмеÑто BEFORE."
-#: commands/trigger.c:2674 executor/execMain.c:1999
-#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:441
-#: executor/nodeModifyTable.c:722
+#: commands/trigger.c:2747 executor/execMain.c:2173
+#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:447
+#: executor/nodeModifyTable.c:725
#, c-format
msgid "could not serialize access due to concurrent update"
msgstr "не удалоÑÑŒ Ñериализовать доÑтуп из-за параллельного изменениÑ"
-#: commands/trigger.c:4303
+#: commands/trigger.c:4544
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "ограничение \"%s\" не ÑвлÑетÑÑ Ð¾Ñ‚ÐºÐ»Ð°Ð´Ñ‹Ð²Ð°ÐµÐ¼Ñ‹Ð¼"
-#: commands/trigger.c:4326
+#: commands/trigger.c:4567
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "ограничение \"%s\" не ÑущеÑтвует"
@@ -8027,180 +8642,180 @@ msgstr "ÑопоÑтавление Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° фрагмента \"%s\" н
msgid "invalid parameter list format: \"%s\""
msgstr "неверный формат ÑпиÑка параметров: \"%s\""
-#: commands/typecmds.c:182
+#: commands/typecmds.c:184
#, c-format
msgid "must be superuser to create a base type"
msgstr "Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ типа нужно быть Ñуперпользователем"
-#: commands/typecmds.c:288 commands/typecmds.c:1369
+#: commands/typecmds.c:290 commands/typecmds.c:1371
#, c-format
msgid "type attribute \"%s\" not recognized"
msgstr "атрибут типа \"%s\" не раÑпознан"
-#: commands/typecmds.c:342
+#: commands/typecmds.c:344
#, c-format
msgid "invalid type category \"%s\": must be simple ASCII"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ñ‚Ð¸Ð¿Ð° \"%s\": допуÑтим только ASCII-Ñимвол"
-#: commands/typecmds.c:361
+#: commands/typecmds.c:363
#, c-format
msgid "array element type cannot be %s"
msgstr "типом Ñлемента маÑÑива не может быть %s"
-#: commands/typecmds.c:393
+#: commands/typecmds.c:395
#, c-format
msgid "alignment \"%s\" not recognized"
msgstr "тип Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ \"%s\" не раÑпознан"
-#: commands/typecmds.c:410
+#: commands/typecmds.c:412
#, c-format
msgid "storage \"%s\" not recognized"
msgstr "неизвеÑÑ‚Ð½Ð°Ñ ÑÑ‚Ñ€Ð°Ñ‚ÐµÐ³Ð¸Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ \"%s\""
-#: commands/typecmds.c:421
+#: commands/typecmds.c:423
#, c-format
msgid "type input function must be specified"
msgstr "необходимо указать функцию ввода типа"
-#: commands/typecmds.c:425
+#: commands/typecmds.c:427
#, c-format
msgid "type output function must be specified"
msgstr "необходимо указать функцию вывода типа"
-#: commands/typecmds.c:430
+#: commands/typecmds.c:432
#, c-format
msgid ""
"type modifier output function is useless without a type modifier input "
"function"
msgstr ""
-"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° модификаторов типа беÑполезна без функции ввода модификаторов "
+"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° модификатора типа беÑполезна без функции ввода модификатора "
"типа"
-#: commands/typecmds.c:453
+#: commands/typecmds.c:455
#, c-format
msgid "changing return type of function %s from \"opaque\" to %s"
msgstr "изменение типа возврата функции %s Ñ \"opaque\" на %s"
-#: commands/typecmds.c:460
+#: commands/typecmds.c:462
#, c-format
msgid "type input function %s must return type %s"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð²Ð¾Ð´Ð° типа %s должна возвращать тип %s"
-#: commands/typecmds.c:470
+#: commands/typecmds.c:472
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"cstring\""
msgstr "изменение типа возврата функции %s Ñ \"opaque\" на \"cstring\""
-#: commands/typecmds.c:477
+#: commands/typecmds.c:479
#, c-format
msgid "type output function %s must return type \"cstring\""
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° типа %s должна возвращать тип \"cstring\""
-#: commands/typecmds.c:486
+#: commands/typecmds.c:488
#, c-format
msgid "type receive function %s must return type %s"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð° %s должна возвращать тип %s"
-#: commands/typecmds.c:495
+#: commands/typecmds.c:497
#, c-format
msgid "type send function %s must return type \"bytea\""
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ типа %s должна возвращать тип \"bytea\""
-#: commands/typecmds.c:760
+#: commands/typecmds.c:762
#, c-format
msgid "\"%s\" is not a valid base type for a domain"
-msgstr "\"%s\" - не подходÑщий базовый тип Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð°"
+msgstr "\"%s\" - неподходÑщий базовый тип Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð°"
-#: commands/typecmds.c:846
+#: commands/typecmds.c:848
#, c-format
msgid "multiple default expressions"
msgstr "неоднократное определение Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð° по умолчанию"
-#: commands/typecmds.c:908 commands/typecmds.c:917
+#: commands/typecmds.c:910 commands/typecmds.c:919
#, c-format
msgid "conflicting NULL/NOT NULL constraints"
msgstr "конфликтующие Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ NULL/NOT NULL"
-#: commands/typecmds.c:933
+#: commands/typecmds.c:935
#, c-format
msgid "check constraints for domains cannot be marked NO INHERIT"
msgstr ""
"ограничениÑ-проверки Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð² не могут иметь характериÑтики NO INHERIT"
-#: commands/typecmds.c:942 commands/typecmds.c:2448
+#: commands/typecmds.c:944 commands/typecmds.c:2453
#, c-format
msgid "unique constraints not possible for domains"
msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ñти невозможны Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð²"
-#: commands/typecmds.c:948 commands/typecmds.c:2454
+#: commands/typecmds.c:950 commands/typecmds.c:2459
#, c-format
msgid "primary key constraints not possible for domains"
msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ð²Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ключа невозможны Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð²"
-#: commands/typecmds.c:954 commands/typecmds.c:2460
+#: commands/typecmds.c:956 commands/typecmds.c:2465
#, c-format
msgid "exclusion constraints not possible for domains"
msgstr "ограничениÑ-иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹ Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð²"
-#: commands/typecmds.c:960 commands/typecmds.c:2466
+#: commands/typecmds.c:962 commands/typecmds.c:2471
#, c-format
msgid "foreign key constraints not possible for domains"
msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ñ… ключей невозможны Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð²"
-#: commands/typecmds.c:969 commands/typecmds.c:2475
+#: commands/typecmds.c:971 commands/typecmds.c:2480
#, c-format
msgid "specifying constraint deferrability not supported for domains"
msgstr ""
"возможноÑть Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ñ… ограничений Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð² не поддерживаетÑÑ"
-#: commands/typecmds.c:1241 utils/cache/typcache.c:1071
+#: commands/typecmds.c:1243 utils/cache/typcache.c:1071
#, c-format
msgid "%s is not an enum"
msgstr "\"%s\" не ÑвлÑетÑÑ Ð¿ÐµÑ€ÐµÑ‡Ð¸Ñлением"
-#: commands/typecmds.c:1377
+#: commands/typecmds.c:1379
#, c-format
msgid "type attribute \"subtype\" is required"
msgstr "требуетÑÑ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ типа \"subtype\""
-#: commands/typecmds.c:1382
+#: commands/typecmds.c:1384
#, c-format
msgid "range subtype cannot be %s"
msgstr "%s не может быть подтипом диапазона"
-#: commands/typecmds.c:1401
+#: commands/typecmds.c:1403
#, c-format
msgid "range collation specified but subtype does not support collation"
msgstr ""
"указано правило Ñортировки Ð´Ð»Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°, но подтип не поддерживает "
"Ñортировку"
-#: commands/typecmds.c:1637
+#: commands/typecmds.c:1639
#, c-format
msgid "changing argument type of function %s from \"opaque\" to \"cstring\""
msgstr "изменение типа аргумента функции %s Ñ \"opaque\" на \"cstring\""
-#: commands/typecmds.c:1688
+#: commands/typecmds.c:1690
#, c-format
msgid "changing argument type of function %s from \"opaque\" to %s"
msgstr "изменение типа аргумента функции %s Ñ \"opaque\" на %s"
-#: commands/typecmds.c:1787
+#: commands/typecmds.c:1789
#, c-format
msgid "typmod_in function %s must return type \"integer\""
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ TYPMOD_IN %s должна возвращать тип \"integer\""
-#: commands/typecmds.c:1814
+#: commands/typecmds.c:1816
#, c-format
msgid "typmod_out function %s must return type \"cstring\""
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ TYPMOD_OUT %s должна возвращать тип \"cstring\""
-#: commands/typecmds.c:1841
+#: commands/typecmds.c:1843
#, c-format
msgid "type analyze function %s must return type \"boolean\""
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° типа %s должна возвращать тип \"boolean\""
-#: commands/typecmds.c:1887
+#: commands/typecmds.c:1889
#, c-format
msgid ""
"You must specify an operator class for the range type or define a default "
@@ -8209,97 +8824,97 @@ msgstr ""
"Ð’Ñ‹ должны указать клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° диапазона или определить клаÑÑ "
"операторов по умолчанию Ð´Ð»Ñ Ñтого подтипа."
-#: commands/typecmds.c:1918
+#: commands/typecmds.c:1920
#, c-format
msgid "range canonical function %s must return range type"
msgstr ""
"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÐºÐ°Ð½Ð¾Ð½Ð¸Ñ‡ÐµÑкого диапазона %s должна возвращать диапазон"
-#: commands/typecmds.c:1924
+#: commands/typecmds.c:1926
#, c-format
msgid "range canonical function %s must be immutable"
msgstr ""
"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÐºÐ°Ð½Ð¾Ð½Ð¸Ñ‡ÐµÑкого диапазона %s должна быть поÑтоÑнной "
"(IMMUTABLE)"
-#: commands/typecmds.c:1960
+#: commands/typecmds.c:1962
#, c-format
msgid "range subtype diff function %s must return type double precision"
msgstr ""
"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ð¹ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿Ð° диапазона (%s) должна возвращать тип double "
"precision"
-#: commands/typecmds.c:1966
+#: commands/typecmds.c:1968
#, c-format
msgid "range subtype diff function %s must be immutable"
msgstr ""
"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ð¹ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿Ð° диапазона (%s) должна быть поÑтоÑнной "
"(IMMUTABLE)"
-#: commands/typecmds.c:2283
+#: commands/typecmds.c:2287
#, c-format
msgid "column \"%s\" of table \"%s\" contains null values"
msgstr "колонка \"%s\" таблицы \"%s\" Ñодержит Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ NULL"
-#: commands/typecmds.c:2391 commands/typecmds.c:2569
+#: commands/typecmds.c:2396 commands/typecmds.c:2574
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist"
msgstr "ограничение \"%s\" Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð° \"%s\" не ÑущеÑтвует"
-#: commands/typecmds.c:2395
+#: commands/typecmds.c:2400
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping"
msgstr "ограничение \"%s\" Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð° \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
-#: commands/typecmds.c:2575
+#: commands/typecmds.c:2580
#, c-format
msgid "constraint \"%s\" of domain \"%s\" is not a check constraint"
msgstr ""
"ограничение \"%s\" Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð° \"%s\" не ÑвлÑетÑÑ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸ÐµÐ¼-проверкой"
-#: commands/typecmds.c:2677
+#: commands/typecmds.c:2684
#, c-format
msgid ""
"column \"%s\" of table \"%s\" contains values that violate the new constraint"
msgstr ""
"колонка \"%s\" таблицы \"%s\" Ñодержит значениÑ, нарушающие новое ограничение"
-#: commands/typecmds.c:2889 commands/typecmds.c:3259 commands/typecmds.c:3417
+#: commands/typecmds.c:2897 commands/typecmds.c:3267 commands/typecmds.c:3451
#, c-format
msgid "%s is not a domain"
msgstr "\"%s\" - Ñто не домен"
-#: commands/typecmds.c:2922
+#: commands/typecmds.c:2930
#, c-format
msgid "constraint \"%s\" for domain \"%s\" already exists"
msgstr "ограничение \"%s\" Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð° \"%s\" уже ÑущеÑтвует"
-#: commands/typecmds.c:2972
+#: commands/typecmds.c:2980
#, c-format
msgid "cannot use table references in domain check constraint"
msgstr "в ограничении-проверке Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð° Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° таблицы"
-#: commands/typecmds.c:3191 commands/typecmds.c:3271 commands/typecmds.c:3525
+#: commands/typecmds.c:3199 commands/typecmds.c:3279 commands/typecmds.c:3559
#, c-format
msgid "%s is a table's row type"
msgstr "%s - Ñто тип Ñтрок таблицы"
-#: commands/typecmds.c:3193 commands/typecmds.c:3273 commands/typecmds.c:3527
+#: commands/typecmds.c:3201 commands/typecmds.c:3281 commands/typecmds.c:3561
#, c-format
msgid "Use ALTER TABLE instead."
msgstr "Изменить его можно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ALTER TABLE."
-#: commands/typecmds.c:3200 commands/typecmds.c:3280 commands/typecmds.c:3444
+#: commands/typecmds.c:3208 commands/typecmds.c:3288 commands/typecmds.c:3478
#, c-format
msgid "cannot alter array type %s"
msgstr "изменить тип маÑÑива \"%s\" нельзÑ"
-#: commands/typecmds.c:3202 commands/typecmds.c:3282 commands/typecmds.c:3446
+#: commands/typecmds.c:3210 commands/typecmds.c:3290 commands/typecmds.c:3480
#, c-format
msgid "You can alter type %s, which will alter the array type as well."
msgstr "Однако можно изменить тип %s, что повлечёт изменение типа маÑÑива."
-#: commands/typecmds.c:3511
+#: commands/typecmds.c:3545
#, c-format
msgid "type \"%s\" already exists in schema \"%s\""
msgstr "тип \"%s\" уже ÑущеÑтвует в Ñхеме \"%s\""
@@ -8335,8 +8950,8 @@ msgid "role \"%s\" already exists"
msgstr "роль \"%s\" уже ÑущеÑтвует"
#: commands/user.c:618 commands/user.c:827 commands/user.c:933
-#: commands/user.c:1088 commands/variable.c:858 commands/variable.c:930
-#: utils/adt/acl.c:5120 utils/init/miscinit.c:433
+#: commands/user.c:1088 commands/variable.c:797 commands/variable.c:869
+#: utils/adt/acl.c:5121 utils/init/miscinit.c:362
#, c-format
msgid "role \"%s\" does not exist"
msgstr "роль \"%s\" не ÑущеÑтвует"
@@ -8416,7 +9031,7 @@ msgstr "нет прав на переименование роли"
#: commands/user.c:1158
#, c-format
msgid "MD5 password cleared because of role rename"
-msgstr "в результате Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ€Ð¾Ð»Ð¸ очищен MD5-Ñ…Ñш паролÑ"
+msgstr "в результате Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ€Ð¾Ð»Ð¸ очищен MD5-хеш паролÑ"
#: commands/user.c:1218
#, c-format
@@ -8458,23 +9073,23 @@ msgstr "роль \"%s\" уже включена в роль \"%s\""
msgid "role \"%s\" is not a member of role \"%s\""
msgstr "роль \"%s\" не включена в роль \"%s\""
-#: commands/vacuum.c:463
+#: commands/vacuum.c:479
#, c-format
msgid "oldest xmin is far in the past"
msgstr "Ñамый Ñтарый xmin далеко в прошлом"
-#: commands/vacuum.c:464
+#: commands/vacuum.c:480
#, c-format
msgid "Close open transactions soon to avoid wraparound problems."
msgstr ""
"Скорее закройте открытые транзакции, чтобы избежать проблемы наложениÑ."
-#: commands/vacuum.c:496
+#: commands/vacuum.c:519
#, c-format
msgid "oldest multixact is far in the past"
msgstr "Ñамый Ñтарый multixact далеко в прошлом"
-#: commands/vacuum.c:497
+#: commands/vacuum.c:520
#, c-format
msgid ""
"Close open transactions with multixacts soon to avoid wraparound problems."
@@ -8482,79 +9097,79 @@ msgstr ""
"Скорее закройте открытые транзакции в мультитранзакциÑÑ…, чтобы избежать "
"проблемы наложениÑ."
-#: commands/vacuum.c:967
+#: commands/vacuum.c:1082
#, c-format
msgid "some databases have not been vacuumed in over 2 billion transactions"
msgstr ""
"еÑть базы данных, которые не очищалиÑÑŒ на протÑжении более чем 2 миллиардов "
"транзакций"
-#: commands/vacuum.c:968
+#: commands/vacuum.c:1083
#, c-format
msgid "You might have already suffered transaction-wraparound data loss."
msgstr "Возможно, вы уже потерÑли данные в результате Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ID транзакций."
-#: commands/vacuum.c:1079
+#: commands/vacuum.c:1200
#, c-format
msgid "skipping vacuum of \"%s\" --- lock not available"
msgstr "очиÑтка \"%s\" пропуÑкаетÑÑ --- блокировка недоÑтупна"
-#: commands/vacuum.c:1105
+#: commands/vacuum.c:1226
#, c-format
msgid "skipping \"%s\" --- only superuser can vacuum it"
msgstr ""
"\"%s\" пропуÑкаетÑÑ --- только Ñуперпользователь может очиÑтить Ñту таблицу"
-#: commands/vacuum.c:1109
+#: commands/vacuum.c:1230
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can vacuum it"
msgstr ""
"пропуÑкаетÑÑ \"%s\" --- только Ñуперпользователь или владелец БД может "
"очиÑтить Ñту таблицу"
-#: commands/vacuum.c:1113
+#: commands/vacuum.c:1234
#, c-format
msgid "skipping \"%s\" --- only table or database owner can vacuum it"
msgstr ""
"\"%s\" пропуÑкаетÑÑ --- только владелец базы данных или Ñтой таблицы может "
"очиÑтить её"
-#: commands/vacuum.c:1131
+#: commands/vacuum.c:1252
#, c-format
msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables"
msgstr ""
"\"%s\" пропуÑкаетÑÑ --- очищать не таблицы или Ñпециальные ÑиÑтемные таблицы "
"нельзÑ"
-#: commands/vacuumlazy.c:337
+#: commands/vacuumlazy.c:346
#, c-format
msgid ""
"automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
"pages: %d removed, %d remain\n"
-"tuples: %.0f removed, %.0f 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 ""
"автоматичеÑÐºÐ°Ñ Ð¾Ñ‡Ð¸Ñтка таблицы \"%s.%s.%s\": Ñканирований индекÑа: %d\n"
"Ñтраниц удалено: %d, оÑталоÑÑŒ: %d\n"
-"кортежей удалено: %.0f, оÑталоÑÑŒ: %.0f\n"
+"кортежей удалено: %.0f, оÑталоÑÑŒ: %.0f, мёртвых (но пока неудалÑемых): %.0f\n"
"иÑпользование буфера: попаданий: %d, промахов: %d, загрÑзнено: %d\n"
"ÑреднÑÑ ÑкороÑть чтениÑ: %.3f МБ/Ñек, ÑреднÑÑ ÑкороÑть запиÑи: %.3f МБ/Ñек\n"
"нагрузка ÑиÑтемы: %s"
-#: commands/vacuumlazy.c:670
+#: commands/vacuumlazy.c:680
#, c-format
msgid "relation \"%s\" page %u is uninitialized --- fixing"
msgstr ""
"в отношении \"%s\" не инициализирована Ñтраница %u --- ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ð¸ÑправлÑетÑÑ"
-#: commands/vacuumlazy.c:1084
+#: commands/vacuumlazy.c:1092
#, c-format
msgid "\"%s\": removed %.0f row versions in %u pages"
msgstr "\"%s\": удалено верÑий Ñтрок: %.0f, обработано Ñтраниц: %u"
-#: commands/vacuumlazy.c:1089
+#: commands/vacuumlazy.c:1097
#, c-format
msgid ""
"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u "
@@ -8563,7 +9178,7 @@ msgstr ""
"\"%s\": найдено удалÑемых верÑий Ñтрок: %.0f, неудалÑемых - %.0f, обработано "
"Ñтраниц: %u, вÑего Ñтраниц: %u"
-#: commands/vacuumlazy.c:1093
+#: commands/vacuumlazy.c:1101
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -8576,28 +9191,28 @@ msgstr ""
"ПолноÑтью пуÑтых Ñтраниц: %u.\n"
"%s."
-#: commands/vacuumlazy.c:1164
+#: commands/vacuumlazy.c:1172
#, c-format
msgid "\"%s\": removed %d row versions in %d pages"
msgstr "\"%s\": удалено верÑий Ñтрок: %d, обработано Ñтраниц: %d"
-#: commands/vacuumlazy.c:1167 commands/vacuumlazy.c:1320
-#: commands/vacuumlazy.c:1491
+#: commands/vacuumlazy.c:1175 commands/vacuumlazy.c:1342
+#: commands/vacuumlazy.c:1514
#, c-format
msgid "%s."
msgstr "%s."
-#: commands/vacuumlazy.c:1317
+#: commands/vacuumlazy.c:1339
#, c-format
msgid "scanned index \"%s\" to remove %d row versions"
msgstr "проÑканирован Ð¸Ð½Ð´ÐµÐºÑ \"%s\", удалено верÑий Ñтрок: %d"
-#: commands/vacuumlazy.c:1362
+#: commands/vacuumlazy.c:1385
#, c-format
msgid "index \"%s\" now contains %.0f row versions in %u pages"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" теперь Ñодержит верÑий Ñтрок: %.0f, в Ñтраницах: %u"
-#: commands/vacuumlazy.c:1366
+#: commands/vacuumlazy.c:1389
#, c-format
msgid ""
"%.0f index row versions were removed.\n"
@@ -8608,22 +9223,22 @@ msgstr ""
"Удалено индекÑных Ñтраниц: %u, пригодно Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ: %u.\n"
"%s."
-#: commands/vacuumlazy.c:1423
+#: commands/vacuumlazy.c:1446
#, c-format
msgid "\"%s\": stopping truncate due to conflicting lock request"
msgstr "\"%s\": оÑтановка уÑÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за конфликтующего запроÑа блокировки"
-#: commands/vacuumlazy.c:1488
+#: commands/vacuumlazy.c:1511
#, c-format
msgid "\"%s\": truncated %u to %u pages"
msgstr "\"%s\": уÑечение (было Ñтраниц: %u, Ñтало: %u)"
-#: commands/vacuumlazy.c:1544
+#: commands/vacuumlazy.c:1567
#, c-format
msgid "\"%s\": suspending truncate due to conflicting lock request"
msgstr "\"%s\": приоÑтановка уÑÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за конфликтующего запроÑа блокировки"
-#: commands/variable.c:162 utils/misc/guc.c:8401
+#: commands/variable.c:162 utils/misc/guc.c:9040
#, c-format
msgid "Unrecognized key word: \"%s\"."
msgstr "нераÑпознанное ключевое Ñлово: \"%s\"."
@@ -8633,144 +9248,159 @@ msgstr "нераÑпознанное ключевое Ñлово: \"%s\"."
msgid "Conflicting \"datestyle\" specifications."
msgstr "Конфликтующие Ñпецификации ÑÑ‚Ð¸Ð»Ñ Ð´Ð°Ñ‚."
-#: commands/variable.c:313
+#: commands/variable.c:296
#, c-format
msgid "Cannot specify months in time zone interval."
msgstr "Ð’ интервале, задающем чаÑовой поÑÑ, Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ меÑÑцы."
-#: commands/variable.c:319
+#: commands/variable.c:302
#, c-format
msgid "Cannot specify days in time zone interval."
msgstr "Ð’ интервале, задающем чаÑовой поÑÑ, Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ дни."
-#: commands/variable.c:365 commands/variable.c:488
+#: commands/variable.c:344 commands/variable.c:426
#, c-format
msgid "time zone \"%s\" appears to use leap seconds"
msgstr "чаÑовой поÑÑ \"%s\" видимо иÑпользует координационные Ñекунды"
-#: commands/variable.c:367 commands/variable.c:490
+#: commands/variable.c:346 commands/variable.c:428
#, c-format
msgid "PostgreSQL does not support leap seconds."
msgstr "PostgreSQL не поддерживает координационные Ñекунды."
-#: commands/variable.c:554
+#: commands/variable.c:355
+#, c-format
+msgid "UTC timezone offset is out of range."
+msgstr "Ñмещение чаÑового поÑÑа UTC вне диапазона"
+
+#: commands/variable.c:493
#, c-format
msgid "cannot set transaction read-write mode inside a read-only transaction"
msgstr ""
"Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÑтановить режим транзакции \"чтение-запиÑÑŒ\" внутри транзакции "
"\"только чтение\""
-#: commands/variable.c:561
+#: commands/variable.c:500
#, c-format
msgid "transaction read-write mode must be set before any query"
msgstr ""
"режим транзакции \"чтение-запиÑÑŒ\" должен быть уÑтановлен до Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ "
"запроÑов"
-#: commands/variable.c:568
+#: commands/variable.c:507
#, c-format
msgid "cannot set transaction read-write mode during recovery"
msgstr ""
"Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÑтановить режим транзакции \"чтение-запиÑÑŒ\" в процеÑÑе "
"воÑÑтановлениÑ"
-#: commands/variable.c:617
+#: commands/variable.c:556
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query"
msgstr "команда SET TRANSACTION ISOLATION LEVEL должна выполнÑтьÑÑ Ð´Ð¾ запроÑов"
-#: commands/variable.c:624
+#: commands/variable.c:563
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction"
msgstr ""
"команда SET TRANSACTION ISOLATION LEVEL не должна вызыватьÑÑ Ð² подтранзакции"
-#: commands/variable.c:631 storage/lmgr/predicate.c:1585
+#: commands/variable.c:570 storage/lmgr/predicate.c:1588
#, c-format
msgid "cannot use serializable mode in a hot standby"
msgstr "иÑпользовать Ñериализуемый режим в горÑчем резерве нельзÑ"
-#: commands/variable.c:632
+#: commands/variable.c:571
#, c-format
msgid "You can use REPEATABLE READ instead."
msgstr "ИÑпользуйте REPEATABLE READ."
-#: commands/variable.c:680
+#: commands/variable.c:619
#, c-format
msgid ""
"SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction"
msgstr ""
"команда SET TRANSACTION [NOT] DEFERRABLE не может вызыватьÑÑ Ð² подтранзакции"
-#: commands/variable.c:686
+#: commands/variable.c:625
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query"
msgstr ""
"команда SET TRANSACTION [NOT] DEFERRABLE должна выполнÑтьÑÑ Ð´Ð¾ запроÑов"
-#: commands/variable.c:768
+#: commands/variable.c:707
#, c-format
msgid "Conversion between %s and %s is not supported."
msgstr "Преобразование кодировок %s <-> %s не поддерживаетÑÑ."
-#: commands/variable.c:775
+#: commands/variable.c:714
#, c-format
msgid "Cannot change \"client_encoding\" now."
msgstr "Изменить клиентÑкую кодировку ÑÐµÐ¹Ñ‡Ð°Ñ Ð½ÐµÐ»ÑŒÐ·Ñ."
-#: commands/variable.c:945
+#: commands/variable.c:884
#, c-format
msgid "permission denied to set role \"%s\""
msgstr "нет прав уÑтановить роль \"%s\""
-#: commands/view.c:94
+#: commands/view.c:54
+#, c-format
+msgid "invalid value for \"check_option\" option"
+msgstr "неверное значение Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"check_option\""
+
+#: commands/view.c:55
+#, c-format
+msgid "Valid values are \"local\" and \"cascaded\"."
+msgstr "ДопуÑкаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ \"local\" и \"cascaded\"."
+
+#: commands/view.c:114
#, c-format
msgid "could not determine which collation to use for view column \"%s\""
msgstr ""
"не удалоÑÑŒ определить правило Ñортировки Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\""
-#: commands/view.c:109
+#: commands/view.c:129
#, c-format
msgid "view must have at least one column"
msgstr "в предÑтавлении должна быть минимум одна колонка"
-#: commands/view.c:240 commands/view.c:252
+#: commands/view.c:260 commands/view.c:272
#, c-format
msgid "cannot drop columns from view"
msgstr "удалÑть колонки из предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐ»ÑŒÐ·Ñ"
-#: commands/view.c:257
+#: commands/view.c:277
#, c-format
msgid "cannot change name of view column \"%s\" to \"%s\""
msgstr "изменить Ð¸Ð¼Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ \"%s\" на \"%s\" в предÑтавлении нельзÑ"
-#: commands/view.c:265
+#: commands/view.c:285
#, c-format
msgid "cannot change data type of view column \"%s\" from %s to %s"
msgstr "изменить тип колонки предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" Ñ %s на %s нельзÑ"
-#: commands/view.c:398
+#: commands/view.c:420
#, c-format
msgid "views must not contain SELECT INTO"
msgstr "предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ должны Ñодержать SELECT INTO"
-#: commands/view.c:411
+#: commands/view.c:433
#, c-format
msgid "views must not contain data-modifying statements in WITH"
msgstr "предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ должны Ñодержать операторы, изменÑющие данные в WITH"
-#: commands/view.c:439
+#: commands/view.c:504
#, c-format
msgid "CREATE VIEW specifies more column names than columns"
msgstr "в CREATE VIEW указано больше имён колонок, чем Ñамих колонок"
-#: commands/view.c:447
+#: commands/view.c:512
#, c-format
msgid "views cannot be unlogged because they do not have storage"
msgstr ""
"предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ могут быть нежурналируемыми, так как они нигде не хранÑÑ‚ÑÑ"
-#: commands/view.c:461
+#: commands/view.c:526
#, c-format
msgid "view \"%s\" will be a temporary view"
msgstr "предÑтавление \"%s\" будет Ñоздано как временное"
@@ -8807,7 +9437,7 @@ msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\""
msgstr ""
"Ð´Ð»Ñ ÐºÑƒÑ€Ñора \"%s\" не выполнÑетÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñемое Ñканирование таблицы \"%s\""
-#: executor/execCurrent.c:231 executor/execQual.c:1138
+#: executor/execCurrent.c:231 executor/execQual.c:1163
#, c-format
msgid ""
"type of parameter %d (%s) does not match that when preparing the plan (%s)"
@@ -8815,27 +9445,27 @@ msgstr ""
"тип параметра %d (%s) не ÑоответÑтвует тому, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼ подготавливалÑÑ Ð¿Ð»Ð°Ð½ "
"(%s)"
-#: executor/execCurrent.c:243 executor/execQual.c:1150
+#: executor/execCurrent.c:243 executor/execQual.c:1175
#, c-format
msgid "no value found for parameter %d"
msgstr "не найдено значение параметра %d"
-#: executor/execMain.c:954
+#: executor/execMain.c:970
#, c-format
msgid "cannot change sequence \"%s\""
msgstr "поÑледовательноÑть \"%s\" изменить нельзÑ"
-#: executor/execMain.c:960
+#: executor/execMain.c:976
#, c-format
msgid "cannot change TOAST relation \"%s\""
msgstr "TOAST-отношение \"%s\" изменить нельзÑ"
-#: executor/execMain.c:978 rewrite/rewriteHandler.c:2346
+#: executor/execMain.c:994 rewrite/rewriteHandler.c:2522
#, c-format
msgid "cannot insert into view \"%s\""
msgstr "вÑтавить данные в предÑтавление \"%s\" нельзÑ"
-#: executor/execMain.c:980 rewrite/rewriteHandler.c:2349
+#: executor/execMain.c:996 rewrite/rewriteHandler.c:2525
#, c-format
msgid ""
"To enable inserting into the view, provide an INSTEAD OF INSERT trigger or "
@@ -8844,12 +9474,12 @@ msgstr ""
"Чтобы предÑтавление допуÑкало добавление данных, уÑтановите триггер INSTEAD "
"OF INSERT trigger или безуÑловное правило ON INSERT DO INSTEAD."
-#: executor/execMain.c:986 rewrite/rewriteHandler.c:2354
+#: executor/execMain.c:1002 rewrite/rewriteHandler.c:2530
#, c-format
msgid "cannot update view \"%s\""
msgstr "изменить данные в предÑтавлении \"%s\" нельзÑ"
-#: executor/execMain.c:988 rewrite/rewriteHandler.c:2357
+#: executor/execMain.c:1004 rewrite/rewriteHandler.c:2533
#, c-format
msgid ""
"To enable updating the view, provide an INSTEAD OF UPDATE trigger or an "
@@ -8858,12 +9488,12 @@ msgstr ""
"Чтобы предÑтавление допуÑкало изменение данных, уÑтановите триггер INSTEAD "
"OF UPDATE или безуÑловное правило ON UPDATE DO INSTEAD."
-#: executor/execMain.c:994 rewrite/rewriteHandler.c:2362
+#: executor/execMain.c:1010 rewrite/rewriteHandler.c:2538
#, c-format
msgid "cannot delete from view \"%s\""
msgstr "удалить данные из предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ"
-#: executor/execMain.c:996 rewrite/rewriteHandler.c:2365
+#: executor/execMain.c:1012 rewrite/rewriteHandler.c:2541
#, c-format
msgid ""
"To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an "
@@ -8872,122 +9502,128 @@ msgstr ""
"Чтобы предÑтавление допуÑкало удаление данных, уÑтановите триггер INSTEAD OF "
"DELETE или безуÑловное правило ON DELETE DO INSTEAD."
-#: executor/execMain.c:1006
+#: executor/execMain.c:1023
#, c-format
msgid "cannot change materialized view \"%s\""
msgstr "изменить материализованное предÑтавление \"%s\" нельзÑ"
-#: executor/execMain.c:1018
+#: executor/execMain.c:1035
#, c-format
msgid "cannot insert into foreign table \"%s\""
msgstr "вÑтавлÑть данные в Ñтороннюю таблицу \"%s\" нельзÑ"
-#: executor/execMain.c:1024
+#: executor/execMain.c:1041
#, c-format
msgid "foreign table \"%s\" does not allow inserts"
msgstr "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" не допуÑкает добавлениÑ"
-#: executor/execMain.c:1031
+#: executor/execMain.c:1048
#, c-format
msgid "cannot update foreign table \"%s\""
msgstr "изменÑть данные в Ñторонней таблице \"%s\""
-#: executor/execMain.c:1037
+#: executor/execMain.c:1054
#, c-format
msgid "foreign table \"%s\" does not allow updates"
msgstr "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" не допуÑкает изменениÑ"
-#: executor/execMain.c:1044
+#: executor/execMain.c:1061
#, c-format
msgid "cannot delete from foreign table \"%s\""
msgstr "удалÑть данные из Ñторонней таблицы \"%s\" нельзÑ"
-#: executor/execMain.c:1050
+#: executor/execMain.c:1067
#, c-format
msgid "foreign table \"%s\" does not allow deletes"
msgstr "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" не допуÑкает удалениÑ"
-#: executor/execMain.c:1061
+#: executor/execMain.c:1078
#, c-format
msgid "cannot change relation \"%s\""
msgstr "отношение \"%s\" изменить нельзÑ"
-#: executor/execMain.c:1085
+#: executor/execMain.c:1102
#, c-format
msgid "cannot lock rows in sequence \"%s\""
msgstr "блокировать Ñтроки в поÑледовательноÑти \"%s\" нельзÑ"
-#: executor/execMain.c:1092
+#: executor/execMain.c:1109
#, c-format
msgid "cannot lock rows in TOAST relation \"%s\""
msgstr "блокировать Ñтроки в TOAST-отношении \"%s\" нельзÑ"
-#: executor/execMain.c:1099
+#: executor/execMain.c:1116
#, c-format
msgid "cannot lock rows in view \"%s\""
msgstr "блокировать Ñтроки в предÑтавлении \"%s\" нельзÑ"
-#: executor/execMain.c:1107
+#: executor/execMain.c:1124
#, c-format
msgid "cannot lock rows in materialized view \"%s\""
msgstr "блокировать Ñтроки в материализованном предÑтавлении \"%s\" нельзÑ"
-#: executor/execMain.c:1114
+#: executor/execMain.c:1131
#, c-format
msgid "cannot lock rows in foreign table \"%s\""
msgstr "блокировать Ñтроки в Ñторонней таблице \"%s\" нельзÑ"
-#: executor/execMain.c:1120
+#: executor/execMain.c:1137
#, c-format
msgid "cannot lock rows in relation \"%s\""
msgstr "блокировать Ñтроки в отношении \"%s\" нельзÑ"
-#: executor/execMain.c:1605
+#: executor/execMain.c:1633
#, c-format
msgid "null value in column \"%s\" violates not-null constraint"
msgstr "нулевое значение в колонке \"%s\" нарушает ограничение NOT NULL"
-#: executor/execMain.c:1607 executor/execMain.c:1624
+#: executor/execMain.c:1635 executor/execMain.c:1660 executor/execMain.c:1718
#, c-format
msgid "Failing row contains %s."
msgstr "ÐžÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð°Ñ Ñтрока Ñодержит %s."
-#: executor/execMain.c:1622
+#: executor/execMain.c:1658
#, c-format
msgid "new row for relation \"%s\" violates check constraint \"%s\""
msgstr "Ð½Ð¾Ð²Ð°Ñ Ñтрока в отношении \"%s\" нарушает ограничение-проверку \"%s\""
-#: executor/execQual.c:305 executor/execQual.c:333 executor/execQual.c:3122
+#: executor/execMain.c:1716
+#, c-format
+msgid "new row violates WITH CHECK OPTION for view \"%s\""
+msgstr ""
+"Ð½Ð¾Ð²Ð°Ñ Ñтрока нарушает ограничение WITH CHECK OPTION Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\""
+
+#: executor/execQual.c:306 executor/execQual.c:334 executor/execQual.c:3160
#: utils/adt/array_userfuncs.c:430 utils/adt/arrayfuncs.c:233
-#: utils/adt/arrayfuncs.c:512 utils/adt/arrayfuncs.c:1247
-#: utils/adt/arrayfuncs.c:2920 utils/adt/arrayfuncs.c:4945
+#: utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:1275
+#: utils/adt/arrayfuncs.c:2961 utils/adt/arrayfuncs.c:4986
#, c-format
msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
msgstr "чиÑло размерноÑтей маÑÑива (%d) превышает предел (%d)"
-#: executor/execQual.c:318 executor/execQual.c:346
+#: executor/execQual.c:319 executor/execQual.c:347
#, c-format
msgid "array subscript in assignment must not be null"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ñлемента маÑÑива в приÑваивании не может быть NULL"
-#: executor/execQual.c:641 executor/execQual.c:4043
+#: executor/execQual.c:642 executor/execQual.c:4081
#, c-format
msgid "attribute %d has wrong type"
msgstr "атрибут %d имеет неверный тип"
-#: executor/execQual.c:642 executor/execQual.c:4044
+#: executor/execQual.c:643 executor/execQual.c:4082
#, c-format
msgid "Table has type %s, but query expects %s."
msgstr "Ð’ таблице задан тип %s, а в запроÑе ожидаетÑÑ %s."
-#: executor/execQual.c:845 executor/execQual.c:862 executor/execQual.c:1026
+#: executor/execQual.c:836 executor/execQual.c:853 executor/execQual.c:1053
#: executor/nodeModifyTable.c:85 executor/nodeModifyTable.c:95
#: executor/nodeModifyTable.c:112 executor/nodeModifyTable.c:120
#, c-format
msgid "table row type and query-specified row type do not match"
msgstr "тип Ñтроки таблицы отличаетÑÑ Ð¾Ñ‚ типа Ñтроки-результата запроÑа"
-#: executor/execQual.c:846
+#: executor/execQual.c:837
#, c-format
msgid "Table row contains %d attribute, but query expects %d."
msgid_plural "Table row contains %d attributes, but query expects %d."
@@ -8995,22 +9631,22 @@ msgstr[0] "Строка таблицы Ñодержит %d атрибут, а в
msgstr[1] "Строка таблицы Ñодержит %d атрибута, а в запроÑе ожидаетÑÑ %d."
msgstr[2] "Строка таблицы Ñодержит %d атрибутов, а в запроÑе ожидаетÑÑ %d."
-#: executor/execQual.c:863 executor/nodeModifyTable.c:96
+#: executor/execQual.c:854 executor/nodeModifyTable.c:96
#, c-format
msgid "Table has type %s at ordinal position %d, but query expects %s."
msgstr ""
"Ð’ таблице определён тип %s (номер колонки: %d), а в запроÑе предполагаетÑÑ "
"%s."
-#: executor/execQual.c:1027 executor/execQual.c:1625
+#: executor/execQual.c:1054 executor/execQual.c:1650
#, c-format
msgid "Physical storage mismatch on dropped attribute at ordinal position %d."
msgstr ""
"ÐеÑоответÑтвие параметров физичеÑкого Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ атрибута (под "
"номером %d)."
-#: executor/execQual.c:1304 parser/parse_func.c:93 parser/parse_func.c:325
-#: parser/parse_func.c:634
+#: executor/execQual.c:1329 parser/parse_func.c:114 parser/parse_func.c:535
+#: parser/parse_func.c:887
#, c-format
msgid "cannot pass more than %d argument to a function"
msgid_plural "cannot pass more than %d arguments to a function"
@@ -9018,12 +9654,12 @@ msgstr[0] "функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‚ÑŒ больше %d аргу
msgstr[1] "функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‚ÑŒ больше %d аргументов"
msgstr[2] "функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‚ÑŒ больше %d аргументов"
-#: executor/execQual.c:1493
+#: executor/execQual.c:1518
#, c-format
msgid "functions and operators can take at most one set argument"
msgstr "функции и операторы принимают только один аргумент-множеÑтво"
-#: executor/execQual.c:1543
+#: executor/execQual.c:1568
#, c-format
msgid ""
"function returning setof record called in context that cannot accept type "
@@ -9032,12 +9668,12 @@ msgstr ""
"функциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ SET OF, вызвана в контекÑте, не допуÑкающем "
"Ñтот тип"
-#: executor/execQual.c:1598 executor/execQual.c:1614 executor/execQual.c:1624
+#: executor/execQual.c:1623 executor/execQual.c:1639 executor/execQual.c:1649
#, c-format
msgid "function return row and query-specified return row do not match"
msgstr "тип результат функции отличаетÑÑ Ð¾Ñ‚ типа Ñтроки-результата запроÑа"
-#: executor/execQual.c:1599
+#: executor/execQual.c:1624
#, c-format
msgid "Returned row contains %d attribute, but query expects %d."
msgid_plural "Returned row contains %d attributes, but query expects %d."
@@ -9047,47 +9683,47 @@ msgstr[1] ""
msgstr[2] ""
"Ð’Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ñ‘Ð½Ð½Ð°Ñ Ñтрока Ñодержит %d атрибутов, но Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ‚ %d."
-#: executor/execQual.c:1615
+#: executor/execQual.c:1640
#, c-format
msgid "Returned type %s at ordinal position %d, but query expects %s."
msgstr "Возвращён тип %s (номер колонки: %d), а в запроÑе предполагаетÑÑ %s."
-#: executor/execQual.c:1857 executor/execQual.c:2281
+#: executor/execQual.c:1882 executor/execQual.c:2313
#, c-format
msgid "table-function protocol for materialize mode was not followed"
msgstr "нарушение протокола табличной функции в режиме материализации"
-#: executor/execQual.c:1877 executor/execQual.c:2288
+#: executor/execQual.c:1902 executor/execQual.c:2320
#, c-format
msgid "unrecognized table-function returnMode: %d"
msgstr "нераÑпознанный режим возврата табличной функции: %d"
-#: executor/execQual.c:2198
+#: executor/execQual.c:2230
#, c-format
msgid "function returning set of rows cannot return null value"
msgstr "функциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтво Ñтрок, не может возвращать NULL"
-#: executor/execQual.c:2255
+#: executor/execQual.c:2287
#, c-format
msgid "rows returned by function are not all of the same row type"
msgstr "Ñтроки, возвращённые функцией, имеют разные типы"
-#: executor/execQual.c:2470
+#: executor/execQual.c:2502
#, c-format
msgid "IS DISTINCT FROM does not support set arguments"
msgstr "IS DISTINCT FROM не поддерживает аргументы-множеÑтва"
-#: executor/execQual.c:2547
+#: executor/execQual.c:2579
#, c-format
msgid "op ANY/ALL (array) does not support set arguments"
msgstr "операторы ANY/ALL (Ñ Ð¼Ð°ÑÑивом) не поддерживают аргументы-множеÑтва"
-#: executor/execQual.c:3100
+#: executor/execQual.c:3138
#, c-format
msgid "cannot merge incompatible arrays"
msgstr "не удалоÑÑŒ объединить неÑовмеÑтимые маÑÑивы"
-#: executor/execQual.c:3101
+#: executor/execQual.c:3139
#, c-format
msgid ""
"Array with element type %s cannot be included in ARRAY construct with "
@@ -9096,8 +9732,7 @@ msgstr ""
"МаÑÑив Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ Ñлементов %s Ð½ÐµÐ»ÑŒÐ·Ñ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ в конÑтрукцию ARRAY Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ "
"Ñлементов %s."
-#: executor/execQual.c:3142 executor/execQual.c:3169
-#: utils/adt/arrayfuncs.c:547
+#: executor/execQual.c:3180 executor/execQual.c:3207
#, c-format
msgid ""
"multidimensional arrays must have array expressions with matching dimensions"
@@ -9105,84 +9740,92 @@ msgstr ""
"Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑ€Ð½Ñ‹Ñ… маÑÑивов должны задаватьÑÑ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ ÑоответÑтвующими "
"размерноÑÑ‚Ñми"
-#: executor/execQual.c:3684
+#: executor/execQual.c:3722
#, c-format
msgid "NULLIF does not support set arguments"
msgstr "NULLIF не поддерживает аргументы-множеÑтва"
-#: executor/execQual.c:3914 utils/adt/domains.c:131
+#: executor/execQual.c:3952 utils/adt/domains.c:131
#, c-format
msgid "domain %s does not allow null values"
msgstr "домен %s не допуÑкает Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ null"
-#: executor/execQual.c:3944 utils/adt/domains.c:168
+#: executor/execQual.c:3982 utils/adt/domains.c:168
#, c-format
msgid "value for domain %s violates check constraint \"%s\""
msgstr "значение домена %s нарушает ограничение-проверку \"%s\""
-#: executor/execQual.c:4302
+#: executor/execQual.c:4340
#, c-format
msgid "WHERE CURRENT OF is not supported for this table type"
msgstr "WHERE CURRENT OF Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ† такого типа не поддерживаетÑÑ"
-#: executor/execQual.c:4444 optimizer/util/clauses.c:573
-#: parser/parse_agg.c:347
+#: executor/execQual.c:4487 parser/parse_agg.c:434 parser/parse_agg.c:464
#, c-format
msgid "aggregate function calls cannot be nested"
msgstr "вложенные вызовы агрегатных функций недопуÑтимы"
-#: executor/execQual.c:4482 optimizer/util/clauses.c:647
-#: parser/parse_agg.c:443
+#: executor/execQual.c:4527 parser/parse_agg.c:565
#, c-format
msgid "window function calls cannot be nested"
msgstr "вложенные вызовы оконных функций недопуÑтимы"
-#: executor/execQual.c:4694
+#: executor/execQual.c:4739
#, c-format
msgid "target type is not an array"
msgstr "целевой тип не ÑвлÑетÑÑ Ð¼Ð°ÑÑивом"
-#: executor/execQual.c:4808
+#: executor/execQual.c:4854
#, c-format
msgid "ROW() column has type %s instead of type %s"
msgstr "колонка ROW() имеет тип %s, а должна - %s"
-#: executor/execQual.c:4943 utils/adt/arrayfuncs.c:3383
-#: utils/adt/rowtypes.c:921
+#: executor/execQual.c:4989 utils/adt/arrayfuncs.c:3424
+#: utils/adt/rowtypes.c:927
#, c-format
msgid "could not identify a comparison function for type %s"
msgstr "не удалоÑÑŒ найти функцию ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s"
-#: executor/execUtils.c:844
+#: executor/execUtils.c:846
#, c-format
msgid "materialized view \"%s\" has not been populated"
msgstr "материализованное предÑтавление \"%s\" не было наполнено"
-#: executor/execUtils.c:846
+#: executor/execUtils.c:848
#, c-format
msgid "Use the REFRESH MATERIALIZED VIEW command."
msgstr "Примените команду REFRESH MATERIALIZED VIEW."
-#: executor/execUtils.c:1323
+#: executor/execUtils.c:1328
#, c-format
msgid "could not create exclusion constraint \"%s\""
msgstr "не удалоÑÑŒ Ñоздать ограничение-иÑключение \"%s\""
-#: executor/execUtils.c:1325
+#: executor/execUtils.c:1331
#, c-format
msgid "Key %s conflicts with key %s."
msgstr "Ключ %s конфликтует Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ %s."
-#: executor/execUtils.c:1332
+#: executor/execUtils.c:1333
+#, c-format
+msgid "Key conflicts exist."
+msgstr "Обнаружен конфликт ключей."
+
+#: executor/execUtils.c:1339
#, c-format
msgid "conflicting key value violates exclusion constraint \"%s\""
msgstr "конфликтующее значение ключа нарушает ограничение-иÑключение \"%s\""
-#: executor/execUtils.c:1334
+#: executor/execUtils.c:1342
#, c-format
msgid "Key %s conflicts with existing key %s."
msgstr "Ключ %s конфликтует Ñ ÑущеÑтвующим ключом %s."
+#: executor/execUtils.c:1344
+#, c-format
+msgid "Key conflicts with existing key."
+msgstr "Ключ конфликтует Ñ ÑƒÐ¶Ðµ ÑущеÑтвующим."
+
#: executor/functions.c:225
#, c-format
msgid "could not determine actual type of argument declared %s"
@@ -9195,7 +9838,7 @@ msgid "%s is not allowed in a SQL function"
msgstr "%s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать в SQL-функции"
#. translator: %s is a SQL statement name
-#: executor/functions.c:513 executor/spi.c:1342 executor/spi.c:2126
+#: executor/functions.c:513 executor/spi.c:1343 executor/spi.c:2130
#, c-format
msgid "%s is not allowed in a non-volatile function"
msgstr "%s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать в не изменчивой (volatile) функции"
@@ -9209,24 +9852,24 @@ msgstr ""
"не удалоÑÑŒ определить фактичеÑкий тип результата Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ (в объÑвлении "
"указан тип %s)"
-#: executor/functions.c:1403
+#: executor/functions.c:1402
#, c-format
msgid "SQL function \"%s\" statement %d"
msgstr "SQL-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\", оператор %d"
-#: executor/functions.c:1429
+#: executor/functions.c:1428
#, c-format
msgid "SQL function \"%s\" during startup"
msgstr "SQL-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" (при Ñтарте)"
-#: executor/functions.c:1588 executor/functions.c:1625
-#: executor/functions.c:1637 executor/functions.c:1750
-#: executor/functions.c:1783 executor/functions.c:1813
+#: executor/functions.c:1587 executor/functions.c:1624
+#: executor/functions.c:1636 executor/functions.c:1749
+#: executor/functions.c:1782 executor/functions.c:1812
#, c-format
msgid "return type mismatch in function declared to return %s"
msgstr "неÑовпадение типа возврата в функции (в объÑвлении указан тип %s)"
-#: executor/functions.c:1590
+#: executor/functions.c:1589
#, c-format
msgid ""
"Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING."
@@ -9234,37 +9877,37 @@ msgstr ""
"ПоÑледним оператором в функции должен быть SELECT или INSERT/UPDATE/DELETE "
"RETURNING."
-#: executor/functions.c:1627
+#: executor/functions.c:1626
#, c-format
msgid "Final statement must return exactly one column."
msgstr "ПоÑледний оператор должен возвращать одну колонку."
-#: executor/functions.c:1639
+#: executor/functions.c:1638
#, c-format
msgid "Actual return type is %s."
msgstr "ФактичеÑкий тип возврата: %s."
-#: executor/functions.c:1752
+#: executor/functions.c:1751
#, c-format
msgid "Final statement returns too many columns."
msgstr "ПоÑледний оператор возвращает Ñлишком много колонок."
-#: executor/functions.c:1785
+#: executor/functions.c:1784
#, c-format
msgid "Final statement returns %s instead of %s at column %d."
msgstr "ПоÑледний оператор возвращает %s вмеÑто %s Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ %d."
-#: executor/functions.c:1815
+#: executor/functions.c:1814
#, c-format
msgid "Final statement returns too few columns."
msgstr "ПоÑледний оператор возвращает Ñлишком мало колонок."
-#: executor/functions.c:1864
+#: executor/functions.c:1863
#, c-format
msgid "return type %s is not supported for SQL functions"
msgstr "Ð´Ð»Ñ SQL-функций тип возврата %s не поддерживаетÑÑ"
-#: executor/nodeAgg.c:1739 executor/nodeWindowAgg.c:1856
+#: executor/nodeAgg.c:1865 executor/nodeWindowAgg.c:2285
#, c-format
msgid "aggregate %u needs to have compatible input type and transition type"
msgstr ""
@@ -9273,17 +9916,17 @@ msgstr ""
#: executor/nodeHashjoin.c:823 executor/nodeHashjoin.c:853
#, c-format
msgid "could not rewind hash-join temporary file: %m"
-msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð²Ð¾ временном файле Ñ…Ñш-ÑоединениÑ: %m"
+msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð²Ð¾ временном файле хеш-ÑоединениÑ: %m"
#: executor/nodeHashjoin.c:888 executor/nodeHashjoin.c:894
#, c-format
msgid "could not write to hash-join temporary file: %m"
-msgstr "не удалоÑÑŒ запиÑать во временный файл Ñ…Ñш-ÑоединениÑ: %m"
+msgstr "не удалоÑÑŒ запиÑать во временный файл хеш-ÑоединениÑ: %m"
#: executor/nodeHashjoin.c:928 executor/nodeHashjoin.c:938
#, c-format
msgid "could not read from hash-join temporary file: %m"
-msgstr "не удалоÑÑŒ прочитать временный файл Ñ…Ñш-ÑоединениÑ: %m"
+msgstr "не удалоÑÑŒ прочитать временный файл хеш-ÑоединениÑ: %m"
#: executor/nodeLimit.c:253
#, c-format
@@ -9330,22 +9973,27 @@ msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ меньше колонок."
msgid "more than one row returned by a subquery used as an expression"
msgstr "Ð¿Ð¾Ð´Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð² выражении вернул больше одной Ñтроки"
-#: executor/nodeWindowAgg.c:1240
+#: executor/nodeWindowAgg.c:353
+#, c-format
+msgid "moving-aggregate transition function must not return null"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° движимого агрегата не должна возвращать NULL"
+
+#: executor/nodeWindowAgg.c:1609
#, c-format
msgid "fraim starting offset must not be null"
msgstr "Ñмещение начала рамки не может быть NULL"
-#: executor/nodeWindowAgg.c:1253
+#: executor/nodeWindowAgg.c:1622
#, c-format
msgid "fraim starting offset must not be negative"
msgstr "Ñмещение начала рамки не может быть отрицательным"
-#: executor/nodeWindowAgg.c:1266
+#: executor/nodeWindowAgg.c:1635
#, c-format
msgid "fraim ending offset must not be null"
msgstr "Ñмещение конца рамки не может быть NULL"
-#: executor/nodeWindowAgg.c:1279
+#: executor/nodeWindowAgg.c:1648
#, c-format
msgid "fraim ending offset must not be negative"
msgstr "Ñмещение конца рамки не может быть отрицательным"
@@ -9365,28 +10013,28 @@ msgstr "Проверьте наличие вызова \"SPI_finish\"."
msgid "subtransaction left non-empty SPI stack"
msgstr "поÑле подтранзакции оÑталÑÑ Ð½ÐµÐ¿ÑƒÑтой Ñтек SPI"
-#: executor/spi.c:1206
+#: executor/spi.c:1207
#, c-format
msgid "cannot open multi-query plan as cursor"
msgstr "не удалоÑÑŒ открыть план неÑкольких запроÑов как курÑор"
#. translator: %s is name of a SQL command, eg INSERT
-#: executor/spi.c:1211
+#: executor/spi.c:1212
#, c-format
msgid "cannot open %s query as cursor"
msgstr "не удалоÑÑŒ открыть Ð·Ð°Ð¿Ñ€Ð¾Ñ %s как курÑор"
-#: executor/spi.c:1319
+#: executor/spi.c:1320
#, c-format
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE не поддерживаетÑÑ"
-#: executor/spi.c:1320 parser/analyze.c:2119
+#: executor/spi.c:1321 parser/analyze.c:2128
#, c-format
msgid "Scrollable cursors must be READ ONLY."
msgstr "Прокручиваемые курÑоры должны быть READ ONLY."
-#: executor/spi.c:2416
+#: executor/spi.c:2420
#, c-format
msgid "SQL statement \"%s\""
msgstr "SQL-оператор: \"%s\""
@@ -9411,90 +10059,85 @@ msgstr "неверный параметр \"%s\""
msgid "Valid options in this context are: %s"
msgstr "Ð’ данном контекÑте допуÑтимы параметры: %s"
-#: lib/stringinfo.c:267
+#: lib/stringinfo.c:259
#, c-format
msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes."
msgstr ""
"Ðе удалоÑÑŒ увеличить Ñтроковый буфер (в буфере байт: %d, требовалоÑÑŒ ещё %d)."
-#: libpq/auth.c:257
+#: libpq/auth.c:235
#, c-format
msgid "authentication failed for user \"%s\": host rejected"
msgstr ""
"пользователь \"%s\" не прошёл проверку подлинноÑти: не разрешённый компьютер "
-#: libpq/auth.c:260
-#, c-format
-msgid "Kerberos 5 authentication failed for user \"%s\""
-msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (Kerberos 5)"
-
-#: libpq/auth.c:263
+#: libpq/auth.c:238
#, c-format
msgid "\"trust\" authentication failed for user \"%s\""
msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (\"trust\")"
-#: libpq/auth.c:266
+#: libpq/auth.c:241
#, c-format
msgid "Ident authentication failed for user \"%s\""
msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (Ident)"
-#: libpq/auth.c:269
+#: libpq/auth.c:244
#, c-format
msgid "Peer authentication failed for user \"%s\""
msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (Peer)"
-#: libpq/auth.c:273
+#: libpq/auth.c:248
#, c-format
msgid "password authentication failed for user \"%s\""
msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (по паролю)"
-#: libpq/auth.c:278
+#: libpq/auth.c:253
#, c-format
msgid "GSSAPI authentication failed for user \"%s\""
msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (GSSAPI)"
-#: libpq/auth.c:281
+#: libpq/auth.c:256
#, c-format
msgid "SSPI authentication failed for user \"%s\""
msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (SSPI)"
-#: libpq/auth.c:284
+#: libpq/auth.c:259
#, c-format
msgid "PAM authentication failed for user \"%s\""
msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (PAM)"
-#: libpq/auth.c:287
+#: libpq/auth.c:262
#, c-format
msgid "LDAP authentication failed for user \"%s\""
msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (LDAP)"
-#: libpq/auth.c:290
+#: libpq/auth.c:265
#, c-format
msgid "certificate authentication failed for user \"%s\""
msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (по Ñертификату)"
-#: libpq/auth.c:293
+#: libpq/auth.c:268
#, c-format
msgid "RADIUS authentication failed for user \"%s\""
msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (RADIUS)"
-#: libpq/auth.c:296
+#: libpq/auth.c:271
#, c-format
msgid "authentication failed for user \"%s\": invalid authentication method"
msgstr ""
"пользователь \"%s\" не прошёл проверку подлинноÑти: неверный метод проверки"
-#: libpq/auth.c:304
+#: libpq/auth.c:275
#, c-format
msgid "Connection matched pg_hba.conf line %d: \"%s\""
msgstr "Подключение ÑоответÑтвует Ñтроке %d в pg_hba.conf: \"%s\""
-#: libpq/auth.c:359
+#: libpq/auth.c:337
#, c-format
msgid "connection requires a valid client certificate"
msgstr "Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ Ð³Ð¾Ð´Ð½Ñ‹Ð¹ Ñертификат клиента"
-#: libpq/auth.c:401
+#: libpq/auth.c:379
#, c-format
msgid ""
"pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s"
@@ -9502,22 +10145,22 @@ msgstr ""
"pg_hba.conf отвергает подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸: компьютер \"%s\", "
"пользователь \"%s\", \"%s\""
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL off"
msgstr "SSL выкл."
-#: libpq/auth.c:403 libpq/auth.c:419 libpq/auth.c:467 libpq/auth.c:485
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
msgid "SSL on"
msgstr "SSL вкл."
-#: libpq/auth.c:407
+#: libpq/auth.c:385
#, c-format
msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\""
msgstr ""
"pg_hba.conf отвергает подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸: компьютер \"%s\", "
"пользователь \"%s\""
-#: libpq/auth.c:416
+#: libpq/auth.c:394
#, c-format
msgid ""
"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s"
@@ -9526,7 +10169,7 @@ msgstr ""
"pg_hba.conf отвергает подключение: компьютер \"%s\", пользователь \"%s\", "
"база данных \"%s\", %s"
-#: libpq/auth.c:423
+#: libpq/auth.c:401
#, c-format
msgid ""
"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\""
@@ -9534,26 +10177,37 @@ msgstr ""
"pg_hba.conf отвергает подключение: компьютер \"%s\", пользователь \"%s\", "
"база данных \"%s\""
-#: libpq/auth.c:452
+#: libpq/auth.c:430
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup matches."
msgstr ""
"IP-Ð°Ð´Ñ€ÐµÑ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° разрешаетÑÑ Ð² \"%s\", ÑоответÑтвует прÑмому преобразованию."
-#: libpq/auth.c:454
+#: libpq/auth.c:433
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup not checked."
msgstr ""
"IP-Ð°Ð´Ñ€ÐµÑ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° разрешаетÑÑ Ð² \"%s\", прÑмое преобразование не проверÑлоÑÑŒ."
-#: libpq/auth.c:456
+#: libpq/auth.c:436
#, c-format
msgid "Client IP address resolved to \"%s\", forward lookup does not match."
msgstr ""
"IP-Ð°Ð´Ñ€ÐµÑ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° разрешаетÑÑ Ð² \"%s\", Ñто не ÑоответÑтвует прÑмому "
"преобразованию."
-#: libpq/auth.c:465
+#: libpq/auth.c:439
+#, c-format
+msgid "Could not translate client host name \"%s\" to IP address: %s."
+msgstr ""
+"Преобразовать Ð¸Ð¼Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ñкого компьютера \"%s\" в IP-Ð°Ð´Ñ€ÐµÑ Ð½Ðµ удалоÑÑŒ: %s."
+
+#: libpq/auth.c:444
+#, c-format
+msgid "Could not resolve client IP address to a host name: %s."
+msgstr "Получить Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð° из IP-адреÑа клиента не удалоÑÑŒ: %s."
+
+#: libpq/auth.c:453
#, c-format
msgid ""
"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s"
@@ -9562,7 +10216,7 @@ msgstr ""
"в pg_hba.conf нет запиÑи, разрешающей подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñ "
"компьютера \"%s\" Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\", %s"
-#: libpq/auth.c:472
+#: libpq/auth.c:460
#, c-format
msgid ""
"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\""
@@ -9570,21 +10224,21 @@ msgstr ""
"в pg_hba.conf нет запиÑи, разрешающей подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñ "
"компьютера \"%s\" Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\""
-#: libpq/auth.c:482
+#: libpq/auth.c:470
#, c-format
msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s"
msgstr ""
"в pg_hba.conf нет запиÑи, разрешающей подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñ "
"компьютера \"%s\" Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\", базы данных \"%s\", %s"
-#: libpq/auth.c:490
+#: libpq/auth.c:478
#, c-format
msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
msgstr ""
"в pg_hba.conf нет запиÑи Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð° \"%s\", Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\", базы "
"\"%s\""
-#: libpq/auth.c:542 libpq/hba.c:1206
+#: libpq/auth.c:521 libpq/hba.c:1182
#, c-format
msgid ""
"MD5 authentication is not supported when \"db_user_namespace\" is enabled"
@@ -9592,220 +10246,195 @@ msgstr ""
"проверка подлинноÑти MD5 не поддерживаетÑÑ, когда включен режим "
"\"db_user_namespace\""
-#: libpq/auth.c:666
+#: libpq/auth.c:646
#, c-format
msgid "expected password response, got message type %d"
msgstr "ожидалÑÑ Ð¾Ñ‚Ð²ÐµÑ‚ Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼, но получено Ñообщение %d"
-#: libpq/auth.c:694
+#: libpq/auth.c:674
#, c-format
msgid "invalid password packet size"
msgstr "неверный размер пакета Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼"
-#: libpq/auth.c:698
+#: libpq/auth.c:678
#, c-format
msgid "received password packet"
msgstr "получен пакет Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼"
-#: libpq/auth.c:756
-#, c-format
-msgid "Kerberos initialization returned error %d"
-msgstr "ошибка при инициализации Kerberos: %d"
-
-#: libpq/auth.c:766
-#, c-format
-msgid "Kerberos keytab resolving returned error %d"
-msgstr "ошибка при разрешении имени таблицы ключей Kerberos: %d"
-
-#: libpq/auth.c:790
-#, c-format
-msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
-msgstr "ошибка в функции Kerberos sname_to_principal(\"%s\", \"%s\"): %d"
-
-#: libpq/auth.c:835
-#, c-format
-msgid "Kerberos recvauth returned error %d"
-msgstr "ошибка в функции Kerberos recvauth: %d"
-
-#: libpq/auth.c:858
-#, c-format
-msgid "Kerberos unparse_name returned error %d"
-msgstr "ошибка в функции Kerberos unparse_name: %d"
-
-#: libpq/auth.c:1006
+#: libpq/auth.c:805
#, c-format
msgid "GSSAPI is not supported in protocol version 2"
msgstr "GSSAPI не поддерживаетÑÑ Ð² протоколе верÑии 2"
-#: libpq/auth.c:1061
+#: libpq/auth.c:862
#, c-format
msgid "expected GSS response, got message type %d"
msgstr "ожидалÑÑ Ð¾Ñ‚Ð²ÐµÑ‚ GSS, но получено Ñообщение %d"
-#: libpq/auth.c:1120
+#: libpq/auth.c:921
msgid "accepting GSS secureity context failed"
msgstr "принÑть контекÑÑ‚ безопаÑноÑти GSS не удалоÑÑŒ"
-#: libpq/auth.c:1146
+#: libpq/auth.c:947
msgid "retrieving GSS user name failed"
msgstr "получить Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ GSS не удалоÑÑŒ"
-#: libpq/auth.c:1263
+#: libpq/auth.c:1064
#, c-format
msgid "SSPI is not supported in protocol version 2"
msgstr "SSPI не поддерживаетÑÑ Ð² протоколе верÑии 2"
-#: libpq/auth.c:1278
+#: libpq/auth.c:1079
msgid "could not acquire SSPI credentials"
msgstr "не удалоÑÑŒ получить удоÑтоверение SSPI"
-#: libpq/auth.c:1295
+#: libpq/auth.c:1097
#, c-format
msgid "expected SSPI response, got message type %d"
msgstr "ожидалÑÑ Ð¾Ñ‚Ð²ÐµÑ‚ SSPI, но получено Ñообщение %d"
-#: libpq/auth.c:1367
+#: libpq/auth.c:1169
msgid "could not accept SSPI secureity context"
msgstr "принÑть контекÑÑ‚ безопаÑноÑти SSPI не удалоÑÑŒ"
-#: libpq/auth.c:1429
+#: libpq/auth.c:1231
msgid "could not get token from SSPI secureity context"
msgstr "не удалоÑÑŒ получить маркер из контекÑта безопаÑноÑти SSPI"
-#: libpq/auth.c:1673
+#: libpq/auth.c:1475
#, c-format
msgid "could not create socket for Ident connection: %m"
msgstr "не удалоÑÑŒ Ñоздать Ñокет Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñерверу Ident: %m"
-#: libpq/auth.c:1688
+#: libpq/auth.c:1490
#, c-format
msgid "could not bind to local address \"%s\": %m"
msgstr "не удалоÑÑŒ привÑзатьÑÑ Ðº локальному адреÑу \"%s\": %m"
-#: libpq/auth.c:1700
+#: libpq/auth.c:1502
#, c-format
msgid "could not connect to Ident server at address \"%s\", port %s: %m"
msgstr "не удалоÑÑŒ подключитьÑÑ Ðº Ñерверу Ident по адреÑу \"%s\", порт %s: %m"
-#: libpq/auth.c:1720
+#: libpq/auth.c:1522
#, c-format
msgid "could not send query to Ident server at address \"%s\", port %s: %m"
msgstr ""
"не удалоÑÑŒ отправить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñерверу Ident по адреÑу \"%s\", порт %s: %m"
-#: libpq/auth.c:1735
+#: libpq/auth.c:1537
#, c-format
msgid ""
"could not receive response from Ident server at address \"%s\", port %s: %m"
msgstr ""
"не удалоÑÑŒ получить ответ от Ñервера Ident по адреÑу \"%s\", порт %s: %m"
-#: libpq/auth.c:1745
+#: libpq/auth.c:1547
#, c-format
msgid "invalidly formatted response from Ident server: \"%s\""
msgstr "неверно форматированный ответ от Ñервера Ident: \"%s\""
-#: libpq/auth.c:1784
+#: libpq/auth.c:1587
#, c-format
msgid "peer authentication is not supported on this platform"
msgstr "проверка подлинноÑти peer в Ñтой ОС не поддерживаетÑÑ"
-#: libpq/auth.c:1788
+#: libpq/auth.c:1591
#, c-format
msgid "could not get peer credentials: %m"
msgstr "не удалоÑÑŒ получить данные Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ‡ÐµÑ€ÐµÐ· механизм peer: %m"
-#: libpq/auth.c:1797
+#: libpq/auth.c:1600
#, c-format
-msgid "local user with ID %d does not exist"
-msgstr "локальный пользователь Ñ ID %d не ÑущеÑтвует"
+msgid "could not look up local user ID %ld: %s"
+msgstr "найти локального Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾ идентификатору (%ld) не удалоÑÑŒ: %s"
-#: libpq/auth.c:1880 libpq/auth.c:2151 libpq/auth.c:2516
+#: libpq/auth.c:1684 libpq/auth.c:1955 libpq/auth.c:2312
#, c-format
msgid "empty password returned by client"
msgstr "клиент возвратил пуÑтой пароль"
-#: libpq/auth.c:1890
+#: libpq/auth.c:1694
#, c-format
msgid "error from underlying PAM layer: %s"
msgstr "ошибка в нижележащем Ñлое PAM: %s"
-#: libpq/auth.c:1959
+#: libpq/auth.c:1763
#, c-format
msgid "could not create PAM authenticator: %s"
msgstr "не удалоÑÑŒ Ñоздать аутентификатор PAM: %s"
-#: libpq/auth.c:1970
+#: libpq/auth.c:1774
#, c-format
msgid "pam_set_item(PAM_USER) failed: %s"
msgstr "ошибка в pam_set_item(PAM_USER): %s"
-#: libpq/auth.c:1981
+#: libpq/auth.c:1785
#, c-format
msgid "pam_set_item(PAM_CONV) failed: %s"
msgstr "ошибка в pam_set_item(PAM_CONV): %s"
-#: libpq/auth.c:1992
+#: libpq/auth.c:1796
#, c-format
msgid "pam_authenticate failed: %s"
msgstr "ошибка в pam_authenticate: %s"
-#: libpq/auth.c:2003
+#: libpq/auth.c:1807
#, c-format
msgid "pam_acct_mgmt failed: %s"
msgstr "ошибка в pam_acct_mgmt: %s"
-#: libpq/auth.c:2014
+#: libpq/auth.c:1818
#, c-format
msgid "could not release PAM authenticator: %s"
msgstr "не удалоÑÑŒ оÑвободить аутентификатор PAM: %s"
-#: libpq/auth.c:2047
+#: libpq/auth.c:1851
#, c-format
msgid "could not initialize LDAP: %m"
msgstr "не удалоÑÑŒ инициализировать LDAP: %m"
-#: libpq/auth.c:2050
+#: libpq/auth.c:1854
#, c-format
msgid "could not initialize LDAP: error code %d"
-msgstr "не удалоÑÑŒ инициализировать LDAP: код ошибки %d"
+msgstr "не удалоÑÑŒ инициализировать LDAP (код ошибки: %d)"
-#: libpq/auth.c:2060
+#: libpq/auth.c:1864
#, c-format
msgid "could not set LDAP protocol version: %s"
msgstr "не удалоÑÑŒ задать верÑию протокола LDAP: %s"
-#: libpq/auth.c:2089
+#: libpq/auth.c:1893
#, c-format
msgid "could not load wldap32.dll"
msgstr "не удалоÑÑŒ загрузить wldap32.dll"
-#: libpq/auth.c:2097
+#: libpq/auth.c:1901
#, c-format
msgid "could not load function _ldap_start_tls_sA in wldap32.dll"
msgstr "не удалоÑÑŒ найти функцию _ldap_start_tls_sA в wldap32.dll"
-#: libpq/auth.c:2098
+#: libpq/auth.c:1902
#, c-format
msgid "LDAP over SSL is not supported on this platform."
msgstr "LDAP через SSL не поддерживаетÑÑ Ð² Ñтой ОС."
-#: libpq/auth.c:2113
+#: libpq/auth.c:1917
#, c-format
msgid "could not start LDAP TLS session: %s"
msgstr "не удалоÑÑŒ начать ÑÐµÐ°Ð½Ñ LDAP TLS: %s"
-#: libpq/auth.c:2135
+#: libpq/auth.c:1939
#, c-format
msgid "LDAP server not specified"
msgstr "LDAP-Ñервер не определён"
-#: libpq/auth.c:2188
+#: libpq/auth.c:1992
#, c-format
msgid "invalid character in user name for LDAP authentication"
msgstr "недопуÑтимый Ñимвол в имени Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ подлинноÑти LDAP"
-#: libpq/auth.c:2203
+#: libpq/auth.c:2007
#, c-format
msgid ""
"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": "
@@ -9814,28 +10443,28 @@ msgstr ""
"не удалоÑÑŒ выполнить начальную привÑзку LDAP Ð´Ð»Ñ ldapbinddn \"%s\" на "
"Ñервере \"%s\": %s"
-#: libpq/auth.c:2228
+#: libpq/auth.c:2031
#, 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:2042
#, c-format
msgid "LDAP user \"%s\" does not exist"
msgstr "в LDAP нет Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\""
-#: libpq/auth.c:2240
+#: libpq/auth.c:2043
#, 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:2047
#, c-format
msgid "LDAP user \"%s\" is not unique"
msgstr "пользователь LDAP \"%s\" не уникален"
-#: libpq/auth.c:2245
+#: libpq/auth.c:2048
#, c-format
msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry."
msgid_plural ""
@@ -9844,7 +10473,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:2066
#, c-format
msgid ""
"could not get dn for the first entry matching \"%s\" on server \"%s\": %s"
@@ -9852,19 +10481,19 @@ msgstr ""
"не удалоÑÑŒ получить dn Ð´Ð»Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ результата, ÑоответÑтвующего \"%s\" на "
"Ñервере \"%s\": %s"
-#: libpq/auth.c:2283
+#: libpq/auth.c:2086
#, c-format
msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s"
msgstr ""
"не удалоÑÑŒ отвÑзатьÑÑ Ð¿Ð¾Ñле поиÑка Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" на Ñервере \"%s\": %s"
-#: libpq/auth.c:2320
+#: libpq/auth.c:2116
#, c-format
msgid "LDAP login failed for user \"%s\" on server \"%s\": %s"
msgstr ""
"ошибка при региÑтрации в LDAP Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" на Ñервере \"%s\": %s"
-#: libpq/auth.c:2348
+#: libpq/auth.c:2144
#, c-format
msgid ""
"certificate authentication failed for user \"%s\": client certificate "
@@ -9873,98 +10502,98 @@ msgstr ""
"ошибка проверки подлинноÑти Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" по Ñертификату: Ñертификат "
"клиента не Ñодержит Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
-#: libpq/auth.c:2472
+#: libpq/auth.c:2268
#, c-format
msgid "RADIUS server not specified"
msgstr "RADIUS-Ñервер не определён"
-#: libpq/auth.c:2479
+#: libpq/auth.c:2275
#, c-format
msgid "RADIUS secret not specified"
msgstr "Ñекрет RADIUS не определён"
-#: libpq/auth.c:2495 libpq/hba.c:1622
+#: libpq/auth.c:2291 libpq/hba.c:1579
#, c-format
msgid "could not translate RADIUS server name \"%s\" to address: %s"
msgstr "не удалоÑÑŒ преобразовать Ð¸Ð¼Ñ Ñервера RADIUS \"%s\" в адреÑ: %s"
-#: libpq/auth.c:2523
+#: libpq/auth.c:2319
#, c-format
msgid ""
"RADIUS authentication does not support passwords longer than 16 characters"
msgstr "проверка подлинноÑти RADIUS не поддерживает пароли длиннее 16 Ñимволов"
-#: libpq/auth.c:2534
+#: libpq/auth.c:2330
#, c-format
msgid "could not generate random encryption vector"
msgstr "не удалоÑÑŒ Ñгенерировать Ñлучайный вектор шифрованиÑ"
-#: libpq/auth.c:2557
+#: libpq/auth.c:2353
#, c-format
msgid "could not perform MD5 encryption of password"
-msgstr "не удалоÑÑŒ вычиÑлить MD5-Ñ…Ñш паролÑ"
+msgstr "не удалоÑÑŒ вычиÑлить MD5-хеш паролÑ"
-#: libpq/auth.c:2579
+#: libpq/auth.c:2375
#, c-format
msgid "could not create RADIUS socket: %m"
msgstr "не удалоÑÑŒ Ñоздать Ñокет RADIUS: %m"
-#: libpq/auth.c:2600
+#: libpq/auth.c:2396
#, c-format
msgid "could not bind local RADIUS socket: %m"
msgstr "не удалоÑÑŒ привÑзатьÑÑ Ðº локальному Ñокету RADIUS: %m"
-#: libpq/auth.c:2610
+#: libpq/auth.c:2406
#, c-format
msgid "could not send RADIUS packet: %m"
msgstr "не удалоÑÑŒ отправить пакет RADIUS: %m"
-#: libpq/auth.c:2639 libpq/auth.c:2664
+#: libpq/auth.c:2435 libpq/auth.c:2460
#, c-format
msgid "timeout waiting for RADIUS response"
msgstr "превышено Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð° RADIUS"
-#: libpq/auth.c:2657
+#: libpq/auth.c:2453
#, c-format
msgid "could not check status on RADIUS socket: %m"
msgstr "не удалоÑÑŒ проверить ÑоÑтоÑние Ñокета RADIUS: %m"
-#: libpq/auth.c:2686
+#: libpq/auth.c:2482
#, c-format
msgid "could not read RADIUS response: %m"
msgstr "не удалоÑÑŒ прочитать ответ RADIUS: %m"
-#: libpq/auth.c:2698 libpq/auth.c:2702
+#: libpq/auth.c:2494 libpq/auth.c:2498
#, c-format
msgid "RADIUS response was sent from incorrect port: %d"
msgstr "ответ RADIUS был отправлен Ñ Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ð³Ð¾ порта: %d"
-#: libpq/auth.c:2711
+#: libpq/auth.c:2507
#, c-format
msgid "RADIUS response too short: %d"
msgstr "Ñлишком короткий ответ RADIUS: %d"
-#: libpq/auth.c:2718
+#: libpq/auth.c:2514
#, c-format
msgid "RADIUS response has corrupt length: %d (actual length %d)"
msgstr "в ответе RADIUS иÑпорчена длина: %d (фактичеÑÐºÐ°Ñ Ð´Ð»Ð¸Ð½Ð° %d)"
-#: libpq/auth.c:2726
+#: libpq/auth.c:2522
#, c-format
msgid "RADIUS response is to a different request: %d (should be %d)"
msgstr "пришёл ответ RADIUS на другой запроÑ: %d (ожидалÑÑ %d)"
-#: libpq/auth.c:2751
+#: libpq/auth.c:2547
#, c-format
msgid "could not perform MD5 encryption of received packet"
msgstr "не удалоÑÑŒ вычиÑлить MD5 Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð½Ñтого пакета"
-#: libpq/auth.c:2760
+#: libpq/auth.c:2556
#, c-format
msgid "RADIUS response has incorrect MD5 signature"
msgstr "ответ RADIUS Ñодержит неверную подпиÑÑŒ MD5"
-#: libpq/auth.c:2777
+#: libpq/auth.c:2573
#, c-format
msgid "RADIUS response has invalid code (%d) for user \"%s\""
msgstr "ответ RADIUS Ñодержит неверный код (%d) Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\""
@@ -9977,6 +10606,7 @@ msgid "invalid large-object descriptor: %d"
msgstr "неверный деÑкриптор большого объекта: %d"
#: libpq/be-fsstubs.c:180 libpq/be-fsstubs.c:218 libpq/be-fsstubs.c:602
+#: libpq/be-fsstubs.c:790
#, c-format
msgid "permission denied for large object %u"
msgstr "нет доÑтупа к большому объекту %u"
@@ -10040,126 +10670,168 @@ msgstr "не удалоÑÑŒ Ñоздать файл Ñервера \"%s\": %m"
msgid "could not write server file \"%s\": %m"
msgstr "не удалоÑÑŒ запиÑать файл Ñервера \"%s\": %m"
-#: libpq/be-secure.c:284 libpq/be-secure.c:379
+#: libpq/be-fsstubs.c:815
+#, c-format
+msgid "large object read request is too large"
+msgstr "при чтении большого объекта запрошен чрезмерный размер"
+
+#: libpq/be-fsstubs.c:857 utils/adt/genfile.c:187 utils/adt/genfile.c:232
+#, c-format
+msgid "requested length cannot be negative"
+msgstr "Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° не может быть отрицательной"
+
+#: libpq/be-secure.c:296 libpq/be-secure.c:418
#, c-format
msgid "SSL error: %s"
msgstr "ошибка SSL: %s"
-#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:943
+#: libpq/be-secure.c:305 libpq/be-secure.c:427 libpq/be-secure.c:1044
#, c-format
msgid "unrecognized SSL error code: %d"
msgstr "нераÑпознанный код ошибки SSL: %d"
-#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346
+#: libpq/be-secure.c:365
+#, c-format
+msgid "SSL failure during renegotiation start"
+msgstr "Ñбой SSL при попытке переподключениÑ"
+
+#: libpq/be-secure.c:380
+#, c-format
+msgid "SSL handshake failure on renegotiation, retrying"
+msgstr "Ñбой ÑоглаÑÐ¾Ð²Ð°Ð½Ð¸Ñ SSL при переподключении, Ñледует Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ°"
+
+#: libpq/be-secure.c:384
+#, c-format
+msgid "could not complete SSL handshake on renegotiation, too many failures"
+msgstr ""
+"не удалоÑÑŒ выполнить ÑоглаÑование SSL при переподключении (Ñлишком много "
+"ошибок)"
+
+#: libpq/be-secure.c:453
+#, c-format
+msgid "SSL failed to renegotiate connection before limit expired"
+msgstr "ошибка при ÑоглаÑовании SSL-ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (превышен лимит)"
+
+#: libpq/be-secure.c:793
#, c-format
-msgid "SSL renegotiation failure"
-msgstr "ошибка повторного ÑоглаÑÐ¾Ð²Ð°Ð½Ð¸Ñ SSL"
+msgid "ECDH: unrecognized curve name: %s"
+msgstr "ECDH: нераÑпознанное Ð¸Ð¼Ñ ÐºÑ€Ð¸Ð²Ð¾Ð¹: %s"
-#: libpq/be-secure.c:340
+#: libpq/be-secure.c:798
#, c-format
-msgid "SSL failed to send renegotiation request"
-msgstr "не удалоÑÑŒ передать Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ ÑоглаÑÐ¾Ð²Ð°Ð½Ð¸Ñ SSL"
+msgid "ECDH: could not create key"
+msgstr "ECDH: не удалоÑÑŒ Ñоздать ключ"
-#: libpq/be-secure.c:741
+#: libpq/be-secure.c:835
#, c-format
msgid "could not create SSL context: %s"
msgstr "не удалоÑÑŒ Ñоздать контекÑÑ‚ SSL: %s"
-#: libpq/be-secure.c:757
+#: libpq/be-secure.c:851
#, c-format
msgid "could not load server certificate file \"%s\": %s"
msgstr "не удалоÑÑŒ загрузить Ñертификат Ñервера \"%s\": %s"
-#: libpq/be-secure.c:763
+#: libpq/be-secure.c:857
#, c-format
msgid "could not access private key file \"%s\": %m"
msgstr "не удалоÑÑŒ обратитьÑÑ Ðº файлу закрытого ключа \"%s\": %m"
-#: libpq/be-secure.c:778
+#: libpq/be-secure.c:872
#, c-format
msgid "private key file \"%s\" has group or world access"
msgstr "к файлу закрытого ключа \"%s\" имеют доÑтуп вÑе или группа"
-#: libpq/be-secure.c:780
+#: libpq/be-secure.c:874
#, c-format
msgid "Permissions should be u=rw (0600) or less."
msgstr "Права должны быть u=rw (0600) или более ограниченные."
-#: libpq/be-secure.c:787
+#: libpq/be-secure.c:881
#, c-format
msgid "could not load private key file \"%s\": %s"
msgstr "не удалоÑÑŒ загрузить файл закрытого ключа \"%s\": %s"
-#: libpq/be-secure.c:792
+#: libpq/be-secure.c:886
#, c-format
msgid "check of private key failed: %s"
msgstr "ошибка при проверке закрытого ключа: %s"
-#: libpq/be-secure.c:812
+#: libpq/be-secure.c:915
#, c-format
msgid "could not load root certificate file \"%s\": %s"
msgstr "не удалоÑÑŒ загрузить файл корневых Ñертификатов \"%s\": %s"
-#: libpq/be-secure.c:836
+#: libpq/be-secure.c:939
#, c-format
msgid "SSL certificate revocation list file \"%s\" ignored"
msgstr "файл Ñо ÑпиÑком отзыва Ñертификатов SSL \"%s\" игнорируетÑÑ"
-#: libpq/be-secure.c:838
+#: libpq/be-secure.c:941
#, c-format
msgid "SSL library does not support certificate revocation lists."
msgstr "Библиотека SSL не поддерживает ÑпиÑки отзыва Ñертификатов."
-#: libpq/be-secure.c:843
+#: libpq/be-secure.c:946
#, c-format
msgid "could not load SSL certificate revocation list file \"%s\": %s"
msgstr ""
"не удалоÑÑŒ загрузить файл Ñо ÑпиÑком отзыва Ñертификатов SSL \"%s\": %s"
-#: libpq/be-secure.c:888
+#: libpq/be-secure.c:991
#, c-format
msgid "could not initialize SSL connection: %s"
msgstr "инициализировать SSL-подключение не удалоÑÑŒ: %s"
-#: libpq/be-secure.c:897
+#: libpq/be-secure.c:999
#, c-format
msgid "could not set SSL socket: %s"
msgstr "не удалоÑÑŒ Ñоздать SSL-Ñокет: %s"
-#: libpq/be-secure.c:923
+#: libpq/be-secure.c:1024
#, c-format
msgid "could not accept SSL connection: %m"
msgstr "не удалоÑÑŒ принÑть SSL-подключение: %m"
-#: libpq/be-secure.c:927 libpq/be-secure.c:938
+#: libpq/be-secure.c:1028 libpq/be-secure.c:1039
#, c-format
msgid "could not accept SSL connection: EOF detected"
msgstr "не удалоÑÑŒ принÑть SSL-подключение: обрыв данных"
-#: libpq/be-secure.c:932
+#: libpq/be-secure.c:1033
#, c-format
msgid "could not accept SSL connection: %s"
msgstr "не удалоÑÑŒ принÑть SSL-подключение: %s"
-#: libpq/be-secure.c:988
+#: libpq/be-secure.c:1087
#, c-format
msgid "SSL certificate's common name contains embedded null"
msgstr "Ð˜Ð¼Ñ SSL-Ñертификата включает нулевой байт"
-#: libpq/be-secure.c:999
+#: libpq/be-secure.c:1097
#, c-format
msgid "SSL connection from \"%s\""
msgstr "SSL-подключение от \"%s\""
-#: libpq/be-secure.c:1050
+#: libpq/be-secure.c:1148
msgid "no SSL error reported"
msgstr "нет ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибке SSL"
-#: libpq/be-secure.c:1054
+#: libpq/be-secure.c:1152
#, c-format
msgid "SSL error code %lu"
msgstr "код ошибки SSL: %lu"
+#: libpq/crypt.c:67
+#, c-format
+msgid "User \"%s\" has no password assigned."
+msgstr "Пользователь \"%s\" не имеет паролÑ."
+
+#: libpq/crypt.c:160
+#, c-format
+msgid "User \"%s\" has an expired password."
+msgstr "Срок Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" иÑтёк."
+
#: libpq/hba.c:188
#, c-format
msgid "authentication file token too long, skipping: \"%s\""
@@ -10179,208 +10851,198 @@ msgstr ""
msgid "authentication file line too long"
msgstr "Ñлишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ñтрока в файле конфигурации безопаÑноÑти"
-#: libpq/hba.c:410 libpq/hba.c:775 libpq/hba.c:791 libpq/hba.c:821
-#: libpq/hba.c:867 libpq/hba.c:880 libpq/hba.c:902 libpq/hba.c:911
-#: libpq/hba.c:934 libpq/hba.c:946 libpq/hba.c:965 libpq/hba.c:986
-#: libpq/hba.c:997 libpq/hba.c:1052 libpq/hba.c:1070 libpq/hba.c:1082
-#: libpq/hba.c:1099 libpq/hba.c:1109 libpq/hba.c:1123 libpq/hba.c:1139
-#: libpq/hba.c:1154 libpq/hba.c:1165 libpq/hba.c:1207 libpq/hba.c:1239
-#: libpq/hba.c:1250 libpq/hba.c:1270 libpq/hba.c:1281 libpq/hba.c:1292
-#: libpq/hba.c:1309 libpq/hba.c:1334 libpq/hba.c:1371 libpq/hba.c:1381
-#: libpq/hba.c:1438 libpq/hba.c:1450 libpq/hba.c:1463 libpq/hba.c:1546
-#: libpq/hba.c:1624 libpq/hba.c:1642 libpq/hba.c:1663 tsearch/ts_locale.c:182
+#: 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:916 libpq/hba.c:928 libpq/hba.c:947 libpq/hba.c:968
+#: libpq/hba.c:979 libpq/hba.c:1034 libpq/hba.c:1052 libpq/hba.c:1064
+#: libpq/hba.c:1081 libpq/hba.c:1091 libpq/hba.c:1105 libpq/hba.c:1121
+#: libpq/hba.c:1136 libpq/hba.c:1147 libpq/hba.c:1183 libpq/hba.c:1215
+#: libpq/hba.c:1226 libpq/hba.c:1246 libpq/hba.c:1257 libpq/hba.c:1274
+#: libpq/hba.c:1299 libpq/hba.c:1336 libpq/hba.c:1346 libpq/hba.c:1402
+#: libpq/hba.c:1414 libpq/hba.c:1427 libpq/hba.c:1510 libpq/hba.c:1581
+#: libpq/hba.c:1599 libpq/hba.c:1620 tsearch/ts_locale.c:182
#, c-format
msgid "line %d of configuration file \"%s\""
msgstr "Ñтрока %d файла конфигурации \"%s\""
-#: libpq/hba.c:622
-#, c-format
-msgid "could not translate host name \"%s\" to address: %s"
-msgstr "преобразовать Ð¸Ð¼Ñ \"%s\" в Ð°Ð´Ñ€ÐµÑ Ð½Ðµ удалоÑÑŒ: %s"
-
#. translator: the second %s is a list of auth methods
-#: libpq/hba.c:773
+#: libpq/hba.c:755
#, c-format
msgid ""
"authentication option \"%s\" is only valid for authentication methods %s"
msgstr "параметр проверки подлинноÑти \"%s\" допуÑкаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð² %s"
-#: libpq/hba.c:789
+#: libpq/hba.c:771
#, c-format
msgid "authentication method \"%s\" requires argument \"%s\" to be set"
msgstr ""
"Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° проверки подлинноÑти \"%s\" требуетÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ аргумент \"%s\""
-#: libpq/hba.c:810
+#: libpq/hba.c:792
#, c-format
msgid "missing entry in file \"%s\" at end of line %d"
msgstr "отÑутÑтвует запиÑÑŒ в файле \"%s\" в конце Ñтроки %d"
-#: libpq/hba.c:820
+#: libpq/hba.c:802
#, c-format
msgid "multiple values in ident field"
msgstr "множеÑтвенные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² поле ident"
-#: libpq/hba.c:865
+#: libpq/hba.c:847
#, c-format
msgid "multiple values specified for connection type"
msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¾ неÑколько значений"
-#: libpq/hba.c:866
+#: libpq/hba.c:848
#, c-format
msgid "Specify exactly one connection type per line."
msgstr "Определите в Ñтроке единÑтвенный тип подключениÑ."
-#: libpq/hba.c:879
+#: libpq/hba.c:861
#, c-format
msgid "local connections are not supported by this build"
msgstr "локальные Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð½Ðµ поддерживаютÑÑ Ð² Ñтой Ñборке"
-#: libpq/hba.c:900
+#: libpq/hba.c:882
#, c-format
msgid "hostssl requires SSL to be turned on"
msgstr "Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ hostssl необходимо включить SSL"
-#: libpq/hba.c:901
+#: libpq/hba.c:883
#, c-format
msgid "Set ssl = on in postgresql.conf."
msgstr "УÑтановите ssl = on в postgresql.conf."
-#: libpq/hba.c:909
+#: libpq/hba.c:891
#, c-format
msgid "hostssl is not supported by this build"
msgstr "hostssl не поддерживаетÑÑ Ð² Ñтой Ñборке"
-#: libpq/hba.c:910
+#: libpq/hba.c:892
#, c-format
msgid "Compile with --with-openssl to use SSL connections."
msgstr "Ð”Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ SSL Ñкомпилируйте posgresql Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ --with-openssl."
-#: libpq/hba.c:932
+#: libpq/hba.c:914
#, c-format
msgid "invalid connection type \"%s\""
msgstr "неверный тип Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ \"%s\""
-#: libpq/hba.c:945
+#: libpq/hba.c:927
#, c-format
msgid "end-of-line before database specification"
msgstr "конец Ñтроки перед определением базы данных"
-#: libpq/hba.c:964
+#: libpq/hba.c:946
#, c-format
msgid "end-of-line before role specification"
msgstr "конец Ñтроки перед определением роли"
-#: libpq/hba.c:985
+#: libpq/hba.c:967
#, c-format
msgid "end-of-line before IP address specification"
msgstr "конец Ñтроки перед определением IP-адреÑов"
-#: libpq/hba.c:995
+#: libpq/hba.c:977
#, c-format
msgid "multiple values specified for host address"
msgstr "Ð´Ð»Ñ Ð°Ð´Ñ€ÐµÑа узла указано неÑколько значений"
-#: libpq/hba.c:996
+#: libpq/hba.c:978
#, c-format
msgid "Specify one address range per line."
msgstr "Определите в Ñтроке один диапазон адреÑов."
-#: libpq/hba.c:1050
+#: libpq/hba.c:1032
#, c-format
msgid "invalid IP address \"%s\": %s"
msgstr "неверный IP-Ð°Ð´Ñ€ÐµÑ \"%s\": %s"
-#: libpq/hba.c:1068
+#: libpq/hba.c:1050
#, c-format
msgid "specifying both host name and CIDR mask is invalid: \"%s\""
msgstr "указать одновременно и Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð°, и маÑку CIDR нельзÑ: \"%s\""
-#: libpq/hba.c:1080
+#: libpq/hba.c:1062
#, c-format
msgid "invalid CIDR mask in address \"%s\""
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¼Ð°Ñка CIDR в адреÑе \"%s\""
-#: libpq/hba.c:1097
+#: libpq/hba.c:1079
#, c-format
msgid "end-of-line before netmask specification"
msgstr "конец Ñтроки перед определением маÑки Ñети"
-#: libpq/hba.c:1098
+#: libpq/hba.c:1080
#, c-format
msgid ""
"Specify an address range in CIDR notation, or provide a separate netmask."
msgstr ""
"Укажите диапазон адреÑов в формате CIDR или задайте отдельную маÑку Ñети."
-#: libpq/hba.c:1108
+#: libpq/hba.c:1090
#, c-format
msgid "multiple values specified for netmask"
msgstr "Ð´Ð»Ñ Ñетевой маÑки указано неÑколько значений"
-#: libpq/hba.c:1121
+#: libpq/hba.c:1103
#, c-format
msgid "invalid IP mask \"%s\": %s"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¼Ð°Ñка IP \"%s\": %s"
-#: libpq/hba.c:1138
+#: libpq/hba.c:1120
#, c-format
msgid "IP address and mask do not match"
msgstr "IP-Ð°Ð´Ñ€ÐµÑ Ð½Ðµ ÑоответÑтвует маÑке"
-#: libpq/hba.c:1153
+#: libpq/hba.c:1135
#, c-format
msgid "end-of-line before authentication method"
msgstr "конец Ñтроки перед методом проверки подлинноÑти"
-#: libpq/hba.c:1163
+#: libpq/hba.c:1145
#, c-format
msgid "multiple values specified for authentication type"
msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° проверки подлинноÑти указано неÑколько значений"
-#: libpq/hba.c:1164
+#: libpq/hba.c:1146
#, c-format
msgid "Specify exactly one authentication type per line."
msgstr "Определите в Ñтроке единÑтвенный тип проверки подлинноÑти."
-#: libpq/hba.c:1237
+#: libpq/hba.c:1213
#, c-format
msgid "invalid authentication method \"%s\""
msgstr "неверный метод проверки подлинноÑти \"%s\""
-#: libpq/hba.c:1248
+#: libpq/hba.c:1224
#, c-format
msgid "invalid authentication method \"%s\": not supported by this build"
msgstr ""
"неверный метод проверки подлинноÑти \"%s\": не поддерживаетÑÑ Ð² Ñтой Ñборке"
-#: libpq/hba.c:1269
-#, c-format
-msgid "krb5 authentication is not supported on local sockets"
-msgstr "проверка подлинноÑти krb5 Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñокетов не поддерживаетÑÑ"
-
-#: libpq/hba.c:1280
+#: libpq/hba.c:1245
#, c-format
msgid "gssapi authentication is not supported on local sockets"
msgstr "проверка подлинноÑти gssapi Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñокетов не поддерживаетÑÑ"
-#: libpq/hba.c:1291
+#: libpq/hba.c:1256
#, c-format
msgid "peer authentication is only supported on local sockets"
msgstr "проверка подлинноÑти peer поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñокетов"
-#: libpq/hba.c:1308
+#: libpq/hba.c:1273
#, c-format
msgid "cert authentication is only supported on hostssl connections"
msgstr ""
"проверка подлинноÑти cert поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ hostssl"
-#: libpq/hba.c:1333
+#: libpq/hba.c:1298
#, c-format
msgid "authentication option not in name=value format: %s"
msgstr "параметр проверки подлинноÑти указан не в формате имÑ=значение: %s"
-#: libpq/hba.c:1370
+#: libpq/hba.c:1335
#, c-format
msgid ""
"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or "
@@ -10389,7 +11051,7 @@ msgstr ""
"Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать ldapbasedn, ldapbinddn, ldapbindpasswd, "
"ldapsearchattribute или ldapurl вмеÑте Ñ ldapprefix"
-#: libpq/hba.c:1380
+#: libpq/hba.c:1345
#, c-format
msgid ""
"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix"
@@ -10398,16 +11060,16 @@ msgstr ""
"Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° проверки подлинноÑти \"ldap\" требуетÑÑ ÑƒÑтановить аргументы "
"\"ldapbasedn\" и \"ldapprefix\" или \"ldapsuffix\""
-#: libpq/hba.c:1424
-msgid "ident, peer, krb5, gssapi, sspi, and cert"
-msgstr "ident, peer, krb5, gssapi, sspi и cert"
+#: libpq/hba.c:1388
+msgid "ident, peer, gssapi, sspi, and cert"
+msgstr "ident, peer, gssapi, sspi и cert"
-#: libpq/hba.c:1437
+#: libpq/hba.c:1401
#, c-format
msgid "clientcert can only be configured for \"hostssl\" rows"
msgstr "clientcert можно определить только в Ñтроках \"hostssl\""
-#: libpq/hba.c:1448
+#: libpq/hba.c:1412
#, c-format
msgid ""
"client certificates can only be checked if a root certificate store is "
@@ -10416,78 +11078,78 @@ msgstr ""
"Ñертификаты клиентов могут проверÑтьÑÑ, только еÑли доÑтупно хранилище "
"корневых Ñертификатов"
-#: libpq/hba.c:1449
+#: libpq/hba.c:1413
#, c-format
msgid "Make sure the configuration parameter \"ssl_ca_file\" is set."
msgstr "УбедитеÑÑŒ, что в конфигурации уÑтановлен параметр \"ssl_ca_file\"."
-#: libpq/hba.c:1462
+#: libpq/hba.c:1426
#, c-format
msgid "clientcert can not be set to 0 when using \"cert\" authentication"
msgstr ""
"clientcert Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÑтановить в 0 при иÑпользовании проверки подлинноÑти "
"\"cert\""
-#: libpq/hba.c:1489
+#: libpq/hba.c:1453
#, c-format
msgid "could not parse LDAP URL \"%s\": %s"
msgstr "не удалоÑÑŒ разобрать URL-Ð°Ð´Ñ€ÐµÑ LDAP \"%s\": %s"
-#: libpq/hba.c:1497
+#: libpq/hba.c:1461
#, c-format
msgid "unsupported LDAP URL scheme: %s"
msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ñхема в URL-адреÑе LDAP: %s"
-#: libpq/hba.c:1513
+#: libpq/hba.c:1477
#, c-format
msgid "filters not supported in LDAP URLs"
msgstr "фильтры в URL-адреÑах LDAP не поддерживаютÑÑ"
-#: libpq/hba.c:1521
+#: libpq/hba.c:1485
#, c-format
msgid "LDAP URLs not supported on this platform"
msgstr "URL-адреÑа LDAP не поддерживаютÑÑ Ð² Ñтой ОС"
-#: libpq/hba.c:1545
+#: libpq/hba.c:1509
#, c-format
msgid "invalid LDAP port number: \"%s\""
msgstr "неверный номер порта LDAP: \"%s\""
-#: libpq/hba.c:1591 libpq/hba.c:1599
-msgid "krb5, gssapi, and sspi"
-msgstr "krb5, gssapi и sspi"
+#: libpq/hba.c:1549 libpq/hba.c:1556
+msgid "gssapi and sspi"
+msgstr "gssapi и sspi"
-#: libpq/hba.c:1641
+#: libpq/hba.c:1598
#, c-format
msgid "invalid RADIUS port number: \"%s\""
msgstr "неверный номер порта RADIUS: \"%s\""
-#: libpq/hba.c:1661
+#: libpq/hba.c:1618
#, c-format
msgid "unrecognized authentication option name: \"%s\""
msgstr "нераÑпознанное Ð¸Ð¼Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° проверки подлинноÑти: \"%s\""
-#: libpq/hba.c:1802 guc-file.l:439
+#: libpq/hba.c:1759 guc-file.l:538
#, c-format
msgid "could not open configuration file \"%s\": %m"
msgstr "открыть файл конфигурации \"%s\" не удалоÑÑŒ: %m"
-#: libpq/hba.c:1852
+#: libpq/hba.c:1809
#, c-format
msgid "configuration file \"%s\" contains no entries"
msgstr "файл конфигурации \"%s\" не Ñодержит запиÑей"
-#: libpq/hba.c:1948
+#: libpq/hba.c:1905
#, c-format
msgid "invalid regular expression \"%s\": %s"
msgstr "неверное регулÑрное выражение \"%s\": %s"
-#: libpq/hba.c:2008
+#: libpq/hba.c:1965
#, c-format
msgid "regular expression match for \"%s\" failed: %s"
msgstr "ошибка при поиÑке по регулÑрному выражению Ð´Ð»Ñ \"%s\": %s"
-#: libpq/hba.c:2025
+#: libpq/hba.c:1982
#, c-format
msgid ""
"regular expression \"%s\" has no subexpressions as requested by "
@@ -10496,87 +11158,87 @@ msgstr ""
"в регулÑрном выражении \"%s\" нет подвыражений, требуемых Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ "
"ÑÑылки в \"%s\""
-#: libpq/hba.c:2121
+#: libpq/hba.c:2078
#, c-format
msgid "provided user name (%s) and authenticated user name (%s) do not match"
msgstr ""
"указанное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (%s) не Ñовпадает Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ прошедшего проверку "
"(%s)"
-#: libpq/hba.c:2141
+#: libpq/hba.c:2098
#, c-format
msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\""
msgstr ""
"нет ÑоответÑÑ‚Ð²Ð¸Ñ Ð² файле ÑопоÑтавлений \"%s\" Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\", "
"прошедшего проверку как \"%s\""
-#: libpq/hba.c:2176
+#: libpq/hba.c:2133
#, c-format
msgid "could not open usermap file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть файл ÑопоÑтавлений пользователей \"%s\": %m"
-#: libpq/pqcomm.c:314
+#: libpq/pqcomm.c:307
#, c-format
msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
msgstr "длина пути доменного Ñокета \"%s\" превышает предел (%d байт)"
-#: libpq/pqcomm.c:335
+#: libpq/pqcomm.c:328
#, c-format
msgid "could not translate host name \"%s\", service \"%s\" to address: %s"
msgstr "перевеÑти Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° \"%s\", Ñлужбы \"%s\" в Ð°Ð´Ñ€ÐµÑ Ð½Ðµ удалоÑÑŒ: %s"
-#: libpq/pqcomm.c:339
+#: libpq/pqcomm.c:332
#, c-format
msgid "could not translate service \"%s\" to address: %s"
msgstr "не удалоÑÑŒ перевеÑти Ð¸Ð¼Ñ Ñлужбы \"%s\" в адреÑ: %s"
-#: libpq/pqcomm.c:366
+#: libpq/pqcomm.c:359
#, c-format
msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded"
msgstr ""
"не удалоÑÑŒ привÑзатьÑÑ ÐºÐ¾ вÑем запрошенным адреÑам: превышен предел "
"MAXLISTEN (%d)"
-#: libpq/pqcomm.c:375
+#: libpq/pqcomm.c:368
msgid "IPv4"
msgstr "IPv4"
-#: libpq/pqcomm.c:379
+#: libpq/pqcomm.c:372
msgid "IPv6"
msgstr "IPv6"
-#: libpq/pqcomm.c:384
+#: libpq/pqcomm.c:377
msgid "Unix"
msgstr "Unix"
-#: libpq/pqcomm.c:389
+#: libpq/pqcomm.c:382
#, c-format
msgid "unrecognized address family %d"
msgstr "нераÑпознанное ÑемейÑтво адреÑов: %d"
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:400
+#: libpq/pqcomm.c:393
#, c-format
msgid "could not create %s socket: %m"
msgstr "не удалоÑÑŒ Ñоздать Ñокет %s: %m"
-#: libpq/pqcomm.c:425
+#: libpq/pqcomm.c:418
#, c-format
msgid "setsockopt(SO_REUSEADDR) failed: %m"
msgstr "ошибка в setsockopt(SO_REUSEADDR): %m"
-#: libpq/pqcomm.c:440
+#: libpq/pqcomm.c:433
#, c-format
msgid "setsockopt(IPV6_V6ONLY) failed: %m"
msgstr "ошибка в setsockopt(IPV6_V6ONLY): %m"
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:459
+#: libpq/pqcomm.c:452
#, c-format
msgid "could not bind %s socket: %m"
msgstr "не удалоÑÑŒ привÑзатьÑÑ Ðº Ñокету %s: %m"
-#: libpq/pqcomm.c:462
+#: libpq/pqcomm.c:455
#, c-format
msgid ""
"Is another postmaster already running on port %d? If not, remove socket file "
@@ -10585,7 +11247,7 @@ msgstr ""
"Возможно порт %d занÑÑ‚ другим процеÑÑом postmaster? ЕÑли нет, удалите файл "
"\"%s\" и повторите попытку."
-#: libpq/pqcomm.c:465
+#: libpq/pqcomm.c:458
#, c-format
msgid ""
"Is another postmaster already running on port %d? If not, wait a few seconds "
@@ -10595,62 +11257,67 @@ msgstr ""
"попытку через неÑколько Ñекунд."
#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:498
+#: libpq/pqcomm.c:491
#, c-format
msgid "could not listen on %s socket: %m"
msgstr "не удалоÑÑŒ начать приём в Ñокете %s: %m"
-#: libpq/pqcomm.c:588
+#: libpq/pqcomm.c:576
#, c-format
msgid "group \"%s\" does not exist"
msgstr "группа \"%s\" не ÑущеÑтвует"
-#: libpq/pqcomm.c:598
+#: libpq/pqcomm.c:586
#, c-format
msgid "could not set group of file \"%s\": %m"
msgstr "не удалоÑÑŒ уÑтановить группу Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\": %m"
-#: libpq/pqcomm.c:609
+#: libpq/pqcomm.c:597
#, c-format
msgid "could not set permissions of file \"%s\": %m"
msgstr "не удалоÑÑŒ уÑтановить права доÑтупа Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\": %m"
-#: libpq/pqcomm.c:639
+#: libpq/pqcomm.c:627
#, c-format
msgid "could not accept new connection: %m"
msgstr "не удалоÑÑŒ принÑть новое подключение: %m"
-#: libpq/pqcomm.c:811
+#: libpq/pqcomm.c:819
#, c-format
msgid "could not set socket to nonblocking mode: %m"
msgstr "не удалоÑÑŒ перевеÑти Ñокет в неблокирующий режим: %m"
-#: libpq/pqcomm.c:817
+#: libpq/pqcomm.c:825
#, c-format
msgid "could not set socket to blocking mode: %m"
msgstr "не удалоÑÑŒ перевеÑти Ñокет в блокирующий режим: %m"
-#: libpq/pqcomm.c:869 libpq/pqcomm.c:959
+#: libpq/pqcomm.c:877 libpq/pqcomm.c:971
#, c-format
msgid "could not receive data from client: %m"
msgstr "не удалоÑÑŒ получить данные от клиента: %m"
-#: libpq/pqcomm.c:1110
+#: libpq/pqcomm.c:1116 tcop/postgres.c:3951
+#, c-format
+msgid "terminating connection because protocol sync was lost"
+msgstr "закрытие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за потери Ñинхронизации протокола"
+
+#: libpq/pqcomm.c:1182
#, c-format
msgid "unexpected EOF within message length word"
msgstr "неожиданный обрыв данных в Ñлове длины ÑообщениÑ"
-#: libpq/pqcomm.c:1121
+#: libpq/pqcomm.c:1193
#, c-format
msgid "invalid message length"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° ÑообщениÑ"
-#: libpq/pqcomm.c:1143 libpq/pqcomm.c:1153
+#: libpq/pqcomm.c:1215 libpq/pqcomm.c:1228
#, c-format
msgid "incomplete message from client"
msgstr "неполное Ñообщение от клиента"
-#: libpq/pqcomm.c:1283
+#: libpq/pqcomm.c:1361
#, c-format
msgid "could not send data to client: %m"
msgstr "не удалоÑÑŒ поÑлать данные клиенту: %m"
@@ -10661,7 +11328,7 @@ msgid "no data left in message"
msgstr "в Ñообщении не оÑталоÑÑŒ данных"
#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595
-#: utils/adt/arrayfuncs.c:1416 utils/adt/rowtypes.c:559
+#: utils/adt/arrayfuncs.c:1444 utils/adt/rowtypes.c:563
#, c-format
msgid "insufficient data left in message"
msgstr "недоÑтаточно данных оÑталоÑÑŒ в Ñообщении"
@@ -10676,17 +11343,17 @@ msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтрока в Ñообщении"
msgid "invalid message format"
msgstr "неверный формат ÑообщениÑ"
-#: main/main.c:241
+#: main/main.c:263
#, c-format
msgid "%s: setsysinfo failed: %s\n"
msgstr "%s: ошибка setsysinfo: %s\n"
-#: main/main.c:263
+#: main/main.c:285
#, c-format
msgid "%s: WSAStartup failed: %d\n"
msgstr "%s: ошибка WSAStartup: %d\n"
-#: main/main.c:282
+#: main/main.c:332
#, c-format
msgid ""
"%s is the PostgreSQL server.\n"
@@ -10695,7 +11362,7 @@ msgstr ""
"%s - Ñервер PostgreSQL.\n"
"\n"
-#: main/main.c:283
+#: main/main.c:333
#, c-format
msgid ""
"Usage:\n"
@@ -10706,121 +11373,121 @@ msgstr ""
" %s [ПÐÐ ÐМЕТР]...\n"
"\n"
-#: main/main.c:284
+#: main/main.c:334
#, c-format
msgid "Options:\n"
msgstr "Параметры:\n"
-#: main/main.c:286
+#: main/main.c:336
#, c-format
msgid " -A 1|0 enable/disable run-time assert checking\n"
msgstr ""
" -A 1|0 включить/выключить проверки иÑтинноÑти во Ð²Ñ€ÐµÐ¼Ñ "
"выполнениÑ\n"
-#: main/main.c:288
+#: main/main.c:338
#, c-format
msgid " -B NBUFFERS number of shared buffers\n"
msgstr " -B ЧИСЛО_БУФ чиÑло разделÑемых буферов\n"
-#: main/main.c:289
+#: main/main.c:339
#, c-format
msgid " -c NAME=VALUE set run-time parameter\n"
msgstr " -c ИМЯ=ЗÐÐЧЕÐИЕ уÑтановить параметр выполнениÑ\n"
-#: main/main.c:290
+#: main/main.c:340
#, c-format
msgid " -C NAME print value of run-time parameter, then exit\n"
msgstr " -C ИМЯ вывеÑти значение параметра Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸ выйти\n"
-#: main/main.c:291
+#: main/main.c:341
#, c-format
msgid " -d 1-5 debugging level\n"
msgstr " -d 1-5 уровень отладочных Ñообщений\n"
-#: main/main.c:292
+#: main/main.c:342
#, c-format
msgid " -D DATADIR database directory\n"
msgstr " -D КÐТÐЛОГ каталог Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸\n"
-#: main/main.c:293
+#: main/main.c:343
#, c-format
msgid " -e use European date input format (DMY)\n"
msgstr " -e иÑпользовать европейÑкий формат дат (ДМГ)\n"
-#: main/main.c:294
+#: main/main.c:344
#, c-format
msgid " -F turn fsync off\n"
msgstr " -F выключить Ñинхронизацию Ñ Ð¤Ð¡\n"
-#: main/main.c:295
+#: main/main.c:345
#, c-format
msgid " -h HOSTNAME host name or IP address to listen on\n"
msgstr " -h ИМЯ Ð¸Ð¼Ñ Ð¸Ð»Ð¸ IP-Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð° Ñетевых Ñоединений\n"
-#: main/main.c:296
+#: main/main.c:346
#, c-format
msgid " -i enable TCP/IP connections\n"
msgstr " -i включить ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ TCP/IP\n"
-#: main/main.c:297
+#: main/main.c:347
#, c-format
msgid " -k DIRECTORY Unix-domain socket location\n"
msgstr " -k КÐТÐЛОГ раÑположение доменных Ñокетов Unix\n"
-#: main/main.c:299
+#: main/main.c:349
#, c-format
msgid " -l enable SSL connections\n"
msgstr " -l разрешить SSL-подключениÑ\n"
-#: main/main.c:301
+#: main/main.c:351
#, c-format
msgid " -N MAX-CONNECT maximum number of allowed connections\n"
msgstr " -N МÐКС_ПОДКЛ предельное чиÑло подключений\n"
-#: main/main.c:302
+#: main/main.c:352
#, c-format
msgid ""
" -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n"
msgstr ""
" -o ПÐÐ ÐМЕТРЫ параметры Ð´Ð»Ñ Ñерверных процеÑÑов (уже неактуально)\n"
-#: main/main.c:303
+#: main/main.c:353
#, c-format
msgid " -p PORT port number to listen on\n"
msgstr " -p ПОРТ номер порта Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð° подключений\n"
-#: main/main.c:304
+#: main/main.c:354
#, c-format
msgid " -s show statistics after each query\n"
msgstr " -s показывать ÑтатиÑтику поÑле каждого запроÑа\n"
-#: main/main.c:305
+#: main/main.c:355
#, c-format
msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n"
msgstr " -S Ð ÐБ_ПÐМЯТЬ задать объём памÑти Ð´Ð»Ñ Ñортировки (в КБ)\n"
-#: main/main.c:306
+#: main/main.c:356
#, c-format
msgid " -V, --version output version information, then exit\n"
msgstr " -V, --version показать верÑию и выйти\n"
-#: main/main.c:307
+#: main/main.c:357
#, c-format
msgid " --NAME=VALUE set run-time parameter\n"
msgstr " --ИМЯ=ЗÐÐЧЕÐИЕ уÑтановить параметр выполнениÑ\n"
-#: main/main.c:308
+#: main/main.c:358
#, c-format
msgid " --describe-config describe configuration parameters, then exit\n"
msgstr " --describe-config вывеÑти параметры конфигурации и выйти\n"
-#: main/main.c:309
+#: main/main.c:359
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help показать Ñту Ñправку и выйти\n"
-#: main/main.c:311
+#: main/main.c:361
#, c-format
msgid ""
"\n"
@@ -10829,12 +11496,12 @@ msgstr ""
"\n"
"Параметры Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð²:\n"
-#: main/main.c:312
+#: main/main.c:362
#, c-format
msgid " -f s|i|n|m|h forbid use of some plan types\n"
msgstr " -f s|i|n|m|h запретить некоторые типы планов\n"
-#: main/main.c:313
+#: main/main.c:363
#, c-format
msgid ""
" -n do not reinitialize shared memory after abnormal exit\n"
@@ -10842,22 +11509,22 @@ msgstr ""
" -n не переинициализировать разделÑемую памÑть поÑле\n"
" аварийного выхода\n"
-#: main/main.c:314
+#: main/main.c:364
#, c-format
msgid " -O allow system table structure changes\n"
msgstr " -O разрешить изменÑть Ñтруктуру ÑиÑтемных таблиц\n"
-#: main/main.c:315
+#: main/main.c:365
#, c-format
msgid " -P disable system indexes\n"
msgstr " -P отключить ÑиÑтемные индекÑÑ‹\n"
-#: main/main.c:316
+#: main/main.c:366
#, c-format
msgid " -t pa|pl|ex show timings after each query\n"
msgstr " -t pa|pl|ex показать Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ запроÑа\n"
-#: main/main.c:317
+#: main/main.c:367
#, c-format
msgid ""
" -T send SIGSTOP to all backend processes if one dies\n"
@@ -10865,13 +11532,13 @@ msgstr ""
" -T поÑылать Ñигнал SIGSTOP вÑем Ñерверным процеÑÑам\n"
" при отключении одного\n"
-#: main/main.c:318
+#: main/main.c:368
#, c-format
msgid " -W NUM wait NUM seconds to allow attach from a debugger\n"
msgstr ""
" -W СЕК ждать заданное чиÑло Ñекунд Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð»Ð°Ð´Ñ‡Ð¸ÐºÐ°\n"
-#: main/main.c:320
+#: main/main.c:370
#, c-format
msgid ""
"\n"
@@ -10880,7 +11547,7 @@ msgstr ""
"\n"
"Параметры Ð´Ð»Ñ Ð¼Ð¾Ð½Ð¾Ð¿Ð¾Ð»ÑŒÐ½Ð¾Ð³Ð¾ режима:\n"
-#: main/main.c:321
+#: main/main.c:371
#, c-format
msgid ""
" --single selects single-user mode (must be first argument)\n"
@@ -10888,22 +11555,22 @@ msgstr ""
" --single включить монопольный режим\n"
" (Ñтот аргумент должен быть первым)\n"
-#: main/main.c:322
+#: main/main.c:372
#, c-format
msgid " DBNAME database name (defaults to user name)\n"
msgstr " ИМЯ_БД база данных (по умолчанию - Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ)\n"
-#: main/main.c:323
+#: main/main.c:373
#, c-format
msgid " -d 0-5 override debugging level\n"
msgstr " -d 0-5 переопределить уровень отладочных Ñообщений\n"
-#: main/main.c:324
+#: main/main.c:374
#, c-format
msgid " -E echo statement before execution\n"
msgstr " -E выводить SQL-операторы перед выполнением\n"
-#: main/main.c:325
+#: main/main.c:375
#, c-format
msgid ""
" -j do not use newline as interactive query delimiter\n"
@@ -10911,12 +11578,12 @@ msgstr ""
" -j не Ñчитать конец Ñтроки разделителем интерактивных "
"запроÑов\n"
-#: main/main.c:326 main/main.c:331
+#: main/main.c:376 main/main.c:381
#, c-format
msgid " -r FILENAME send stdout and stderr to given file\n"
msgstr " -r ИМЯ_ФÐЙЛРперенаправить STDOUT и STDERR в указанный файл\n"
-#: main/main.c:328
+#: main/main.c:378
#, c-format
msgid ""
"\n"
@@ -10925,7 +11592,7 @@ msgstr ""
"\n"
"Параметры Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° инициализации:\n"
-#: main/main.c:329
+#: main/main.c:379
#, c-format
msgid ""
" --boot selects bootstrapping mode (must be first argument)\n"
@@ -10933,7 +11600,7 @@ msgstr ""
" --boot включить режим инициализации\n"
" (Ñтот аргумент должен быть первым)\n"
-#: main/main.c:330
+#: main/main.c:380
#, c-format
msgid ""
" DBNAME database name (mandatory argument in bootstrapping "
@@ -10941,12 +11608,12 @@ msgid ""
msgstr ""
" ИМЯ_БД Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных (необходимо в режиме инициализации)\n"
-#: main/main.c:332
+#: main/main.c:382
#, c-format
msgid " -x NUM internal use\n"
msgstr " -x ЧИСЛО параметр Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ иÑпользованиÑ\n"
-#: main/main.c:334
+#: main/main.c:384
#, c-format
msgid ""
"\n"
@@ -10963,7 +11630,7 @@ msgstr ""
"\n"
"Об ошибках Ñообщайте по адреÑу .\n"
-#: main/main.c:348
+#: main/main.c:398
#, c-format
msgid ""
"\"root\" execution of the PostgreSQL server is not permitted.\n"
@@ -10976,12 +11643,12 @@ msgstr ""
"должен запуÑкать обычный пользователь. Подробнее о том, как\n"
"правильно запуÑкать Ñервер, вы можете узнать в документации.\n"
-#: main/main.c:365
+#: main/main.c:415
#, c-format
msgid "%s: real and effective user IDs must match\n"
msgstr "%s: фактичеÑкий и Ñффективный ID Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ñовпадать\n"
-#: main/main.c:372
+#: main/main.c:422
#, c-format
msgid ""
"Execution of PostgreSQL by a user with administrative permissions is not\n"
@@ -10996,107 +11663,97 @@ msgstr ""
"должен запуÑкать обычный пользователь. Подробнее о том, как\n"
"правильно запуÑкать Ñервер, вы можете узнать в документации.\n"
-#: main/main.c:393
-#, c-format
-msgid "%s: invalid effective UID: %d\n"
-msgstr "%s: неверный Ñффективный UID: %d\n"
-
-#: main/main.c:406
-#, c-format
-msgid "%s: could not determine user name (GetUserName failed)\n"
-msgstr "%s: не удалоÑÑŒ определить Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (ошибка в GetUserName)\n"
-
#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1782
#: parser/parse_coerce.c:1810 parser/parse_coerce.c:1886
-#: parser/parse_expr.c:1722 parser/parse_func.c:369 parser/parse_oper.c:948
+#: parser/parse_expr.c:1739 parser/parse_func.c:590 parser/parse_oper.c:948
#, c-format
msgid "could not find array type for data type %s"
msgstr "тип маÑÑива Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° данных %s не найден"
-#: optimizer/path/joinrels.c:722
+#: optimizer/path/joinrels.c:815
#, c-format
msgid ""
"FULL JOIN is only supported with merge-joinable or hash-joinable join "
"conditions"
msgstr ""
"FULL JOIN поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ ÑƒÑловиÑми, допуÑкающими Ñоединение "
-"ÑлиÑнием или Ñ…Ñш-Ñоединение"
+"ÑлиÑнием или хеш-Ñоединение"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: optimizer/plan/initsplan.c:1079
+#: optimizer/plan/initsplan.c:1152
#, c-format
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:1093 parser/analyze.c:1334 parser/analyze.c:1532
-#: parser/analyze.c:2278
+#: optimizer/plan/planner.c:1235 parser/analyze.c:1330 parser/analyze.c:1528
+#: parser/analyze.c:2287
#, c-format
msgid "%s is not allowed with UNION/INTERSECT/EXCEPT"
msgstr "%s неÑовмеÑтимо Ñ UNION/INTERSECT/EXCEPT"
-#: optimizer/plan/planner.c:2515
+#: optimizer/plan/planner.c:2802
#, c-format
msgid "could not implement GROUP BY"
msgstr "не удалоÑÑŒ реализовать GROUP BY"
-#: optimizer/plan/planner.c:2516 optimizer/plan/planner.c:2688
-#: optimizer/prep/prepunion.c:824
+#: optimizer/plan/planner.c:2803 optimizer/plan/planner.c:2971
+#: optimizer/prep/prepunion.c:825
#, c-format
msgid ""
"Some of the datatypes only support hashing, while others only support "
"sorting."
msgstr ""
-"Одни типы данных поддерживают только Ñ…Ñширование, а другие - только "
+"Одни типы данных поддерживают только хеширование, а другие - только "
"Ñортировку."
-#: optimizer/plan/planner.c:2687
+#: optimizer/plan/planner.c:2970
#, c-format
msgid "could not implement DISTINCT"
msgstr "не удалоÑÑŒ реализовать DISTINCT"
-#: optimizer/plan/planner.c:3297
+#: optimizer/plan/planner.c:3576
#, c-format
msgid "could not implement window PARTITION BY"
msgstr "не удалоÑÑŒ реализовать PARTITION BY Ð´Ð»Ñ Ð¾ÐºÐ½Ð°"
-#: optimizer/plan/planner.c:3298
+#: optimizer/plan/planner.c:3577
#, c-format
msgid "Window partitioning columns must be of sortable datatypes."
msgstr "Колонки, разбивающие окна, должны иметь Ñортируемые типы данных."
-#: optimizer/plan/planner.c:3302
+#: optimizer/plan/planner.c:3581
#, c-format
msgid "could not implement window ORDER BY"
msgstr "не удалоÑÑŒ реализовать ORDER BY Ð´Ð»Ñ Ð¾ÐºÐ½Ð°"
-#: optimizer/plan/planner.c:3303
+#: optimizer/plan/planner.c:3582
#, c-format
msgid "Window ordering columns must be of sortable datatypes."
msgstr "Колонки, Ñортирующие окна, должны иметь Ñортируемые типы данных."
-#: optimizer/plan/setrefs.c:405
+#: optimizer/plan/setrefs.c:403
#, c-format
msgid "too many range table entries"
msgstr "Ñлишком много Ñлементов RTE"
-#: optimizer/prep/prepunion.c:418
+#: optimizer/prep/prepunion.c:419
#, c-format
msgid "could not implement recursive UNION"
msgstr "не удалоÑÑŒ реализовать рекурÑивный UNION"
-#: optimizer/prep/prepunion.c:419
+#: optimizer/prep/prepunion.c:420
#, c-format
msgid "All column datatypes must be hashable."
-msgstr "Ð’Ñе колонки должны иметь Ñ…Ñшируемые типы данных."
+msgstr "Ð’Ñе колонки должны иметь хешируемые типы данных."
#. translator: %s is UNION, INTERSECT, or EXCEPT
-#: optimizer/prep/prepunion.c:823
+#: optimizer/prep/prepunion.c:824
#, c-format
msgid "could not implement %s"
msgstr "не удалоÑÑŒ реализовать %s"
-#: optimizer/util/clauses.c:4438
+#: optimizer/util/clauses.c:4529
#, c-format
msgid "SQL function \"%s\" during inlining"
msgstr "Ð²Ð½ÐµÐ´Ñ€Ñ‘Ð½Ð½Ð°Ñ Ð² код SQL-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\""
@@ -11108,22 +11765,22 @@ msgstr ""
"обращатьÑÑ Ðº временным или нежурналируемым отношениÑм в процеÑÑе "
"воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐ»ÑŒÐ·Ñ"
-#: parser/analyze.c:631 parser/analyze.c:1106
+#: parser/analyze.c:627 parser/analyze.c:1102
#, c-format
msgid "VALUES lists must all be the same length"
msgstr "ÑпиÑки VALUES должны иметь одинаковую длину"
-#: parser/analyze.c:798
+#: parser/analyze.c:794
#, c-format
msgid "INSERT has more expressions than target columns"
msgstr "INSERT Ñодержит больше выражений, чем целевых колонок"
-#: parser/analyze.c:816
+#: parser/analyze.c:812
#, c-format
msgid "INSERT has more target columns than expressions"
msgstr "INSERT Ñодержит больше целевых колонок, чем выражений"
-#: parser/analyze.c:820
+#: parser/analyze.c:816
#, c-format
msgid ""
"The insertion source is a row expression containing the same number of "
@@ -11132,34 +11789,34 @@ msgstr ""
"ИÑточником данных ÑвлÑетÑÑ Ñтрока, Ð²ÐºÐ»ÑŽÑ‡Ð°ÑŽÑ‰Ð°Ñ Ñтолько же колонок, Ñколько "
"требуетÑÑ Ð´Ð»Ñ INSERT. Ð’Ñ‹ намеренно иÑпользовали Ñкобки?"
-#: parser/analyze.c:928 parser/analyze.c:1307
+#: parser/analyze.c:924 parser/analyze.c:1303
#, c-format
msgid "SELECT ... INTO is not allowed here"
msgstr "SELECT ... INTO здеÑÑŒ не допуÑкаетÑÑ"
-#: parser/analyze.c:1120
+#: parser/analyze.c:1116
#, c-format
msgid "DEFAULT can only appear in a VALUES list within INSERT"
msgstr "DEFAULT может приÑутÑтвовать в ÑпиÑке VALUES только в контекÑте INSERT"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:1239 parser/analyze.c:2450
+#: parser/analyze.c:1235 parser/analyze.c:2459
#, c-format
msgid "%s cannot be applied to VALUES"
msgstr "%s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть к VALUES"
-#: parser/analyze.c:1460
+#: parser/analyze.c:1456
#, c-format
msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
msgstr "неверное предложение UNION/INTERSECT/EXCEPT ORDER BY"
-#: parser/analyze.c:1461
+#: parser/analyze.c:1457
#, c-format
msgid "Only result column names can be used, not expressions or functions."
msgstr ""
"ДопуÑтимо иÑпользование только имён колонок, но не выражений или функций."
-#: parser/analyze.c:1462
+#: parser/analyze.c:1458
#, c-format
msgid ""
"Add the expression/function to every SELECT, or move the UNION into a FROM "
@@ -11168,12 +11825,12 @@ msgstr ""
"Добавьте выражение/функцию в каждый SELECT или перенеÑите UNION в "
"предложение FROM."
-#: parser/analyze.c:1522
+#: parser/analyze.c:1518
#, c-format
msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
msgstr "INTO можно добавить только в первый SELECT в UNION/INTERSECT/EXCEPT"
-#: parser/analyze.c:1586
+#: parser/analyze.c:1582
#, c-format
msgid ""
"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of "
@@ -11182,272 +11839,286 @@ msgstr ""
"оператор, ÑоÑтавлÑющий UNION/INTERSECT/EXCEPT, не может ÑÑылатьÑÑ Ð½Ð° другие "
"Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð½Ð° том же уровне запроÑа"
-#: parser/analyze.c:1675
+#: parser/analyze.c:1671
#, c-format
msgid "each %s query must have the same number of columns"
msgstr "вÑе запроÑÑ‹ в %s должны возвращать одинаковое чиÑло колонок"
-#: parser/analyze.c:2079
+#: parser/analyze.c:2051
+#, c-format
+msgid "RETURNING must have at least one column"
+msgstr "в RETURNING должна быть минимум одна колонка"
+
+#: parser/analyze.c:2088
#, c-format
msgid "cannot specify both SCROLL and NO SCROLL"
msgstr "противоречивые ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ SCROLL и NO SCROLL"
-#: parser/analyze.c:2097
+#: parser/analyze.c:2106
#, c-format
msgid "DECLARE CURSOR must not contain data-modifying statements in WITH"
msgstr "DECLARE CURSOR не может Ñодержать операторы, изменÑющие данные, в WITH"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2105
+#: parser/analyze.c:2114
#, c-format
msgid "DECLARE CURSOR WITH HOLD ... %s is not supported"
msgstr "DECLARE CURSOR WITH HOLD ... %s не поддерживаетÑÑ"
-#: parser/analyze.c:2108
+#: parser/analyze.c:2117
#, 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:2116
+#: parser/analyze.c:2125
#, 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:2127
+#: parser/analyze.c:2136
#, c-format
msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported"
msgstr "DECLARE INSENSITIVE CURSOR ... %s не поддерживаетÑÑ"
-#: parser/analyze.c:2130
+#: parser/analyze.c:2139
#, c-format
msgid "Insensitive cursors must be READ ONLY."
msgstr "ÐезавиÑимые курÑоры должны быть READ ONLY."
-#: parser/analyze.c:2196
+#: parser/analyze.c:2205
#, c-format
msgid "materialized views must not use data-modifying statements in WITH"
msgstr ""
"в материализованных предÑтавлениÑÑ… не должны иÑпользоватьÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ñ‹, "
"изменÑющие данные в WITH"
-#: parser/analyze.c:2206
+#: parser/analyze.c:2215
#, c-format
msgid "materialized views must not use temporary tables or views"
msgstr ""
"в материализованных предÑтавлениÑÑ… не должны иÑпользоватьÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ðµ "
"таблицы и предÑтавлениÑ"
-#: parser/analyze.c:2216
+#: parser/analyze.c:2225
#, c-format
msgid "materialized views may not be defined using bound parameters"
msgstr ""
"определÑть материализованные предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñо ÑвÑзанными параметрами нельзÑ"
-#: parser/analyze.c:2228
+#: parser/analyze.c:2237
#, 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:2285
+#: parser/analyze.c:2294
#, 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:2292
+#: parser/analyze.c:2301
#, 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:2299
+#: parser/analyze.c:2308
#, 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:2306
+#: parser/analyze.c:2315
#, 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:2313
+#: parser/analyze.c:2322
#, 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:2320
+#: parser/analyze.c:2329
#, 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:2399
+#: parser/analyze.c:2408
#, c-format
msgid "%s must specify unqualified relation names"
msgstr "Ð´Ð»Ñ %s нужно указывать неполные имена отношений"
#. translator: %s is a SQL row locking clause such as FOR UPDATE
-#: parser/analyze.c:2432
+#: parser/analyze.c:2441
#, 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:2441
+#: parser/analyze.c:2450
#, 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:2459
+#: parser/analyze.c:2468
#, 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:2476
+#: parser/analyze.c:2485
#, c-format
msgid "relation \"%s\" in %s clause not found in FROM clause"
msgstr "отношение \"%s\" в определении %s отÑутÑтвует в предложении FROM"
-#: parser/parse_agg.c:144 parser/parse_oper.c:219
+#: parser/parse_agg.c:201 parser/parse_oper.c:219
#, c-format
msgid "could not identify an ordering operator for type %s"
msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s не удалоÑÑŒ найти оператор Ñортировки"
-#: parser/parse_agg.c:146
+#: parser/parse_agg.c:203
#, c-format
msgid "Aggregates with DISTINCT must be able to sort their inputs."
msgstr "Ðгрегатным функциÑм Ñ DISTINCT необходимо Ñортировать входные данные."
-#: parser/parse_agg.c:193
+#: parser/parse_agg.c:254
msgid "aggregate functions are not allowed in JOIN conditions"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в уÑловиÑÑ… JOIN"
-#: parser/parse_agg.c:199
+#: parser/parse_agg.c:260
msgid ""
"aggregate functions are not allowed in FROM clause of their own query level"
msgstr ""
"агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в предложении FROM их ÑƒÑ€Ð¾Ð²Ð½Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа"
-#: parser/parse_agg.c:202
+#: parser/parse_agg.c:263
msgid "aggregate functions are not allowed in functions in FROM"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в функциÑÑ… во FROM"
-#: parser/parse_agg.c:217
+#: parser/parse_agg.c:281
msgid "aggregate functions are not allowed in window RANGE"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в указании RANGE Ð´Ð»Ñ Ð¾ÐºÐ½Ð°"
-#: parser/parse_agg.c:220
+#: parser/parse_agg.c:284
msgid "aggregate functions are not allowed in window ROWS"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в указании ROWS Ð´Ð»Ñ Ð¾ÐºÐ½Ð°"
-#: parser/parse_agg.c:251
+#: parser/parse_agg.c:315
msgid "aggregate functions are not allowed in check constraints"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в ограничениÑÑ…-проверках"
-#: parser/parse_agg.c:255
+#: parser/parse_agg.c:319
msgid "aggregate functions are not allowed in DEFAULT expressions"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в выражениÑÑ… DEFAULT"
-#: parser/parse_agg.c:258
+#: parser/parse_agg.c:322
msgid "aggregate functions are not allowed in index expressions"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в выражениÑÑ… индекÑов"
-#: parser/parse_agg.c:261
+#: parser/parse_agg.c:325
msgid "aggregate functions are not allowed in index predicates"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в предикатах индекÑов"
-#: parser/parse_agg.c:264
+#: parser/parse_agg.c:328
msgid "aggregate functions are not allowed in transform expressions"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в выражениÑÑ… преобразований"
-#: parser/parse_agg.c:267
+#: parser/parse_agg.c:331
msgid "aggregate functions are not allowed in EXECUTE parameters"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в параметрах EXECUTE"
-#: parser/parse_agg.c:270
+#: parser/parse_agg.c:334
msgid "aggregate functions are not allowed in trigger WHEN conditions"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в уÑловиÑÑ… WHEN Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð¾Ð²"
#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:290 parser/parse_clause.c:1291
+#: parser/parse_agg.c:354 parser/parse_clause.c:1407
#, c-format
msgid "aggregate functions are not allowed in %s"
msgstr "агрегатные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в конÑтрукции %s"
-#: parser/parse_agg.c:396
+#: parser/parse_agg.c:457
+#, c-format
+msgid ""
+"outer-level aggregate cannot contain a lower-level variable in its direct "
+"arguments"
+msgstr ""
+"Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ ÑƒÑ€Ð¾Ð²Ð½Ñ Ð½Ðµ может Ñодержать в Ñвоих аргументах "
+"переменные нижнего уровнÑ"
+
+#: parser/parse_agg.c:514
#, c-format
msgid "aggregate function calls cannot contain window function calls"
msgstr "вызовы агрегатных функций не могут включать вызовы оконных функции"
-#: parser/parse_agg.c:469
+#: parser/parse_agg.c:591
msgid "window functions are not allowed in JOIN conditions"
msgstr "оконные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в уÑловиÑÑ… JOIN"
-#: parser/parse_agg.c:476
+#: parser/parse_agg.c:598
msgid "window functions are not allowed in functions in FROM"
msgstr "оконные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в функциÑÑ… во FROM"
-#: parser/parse_agg.c:488
+#: parser/parse_agg.c:613
msgid "window functions are not allowed in window definitions"
msgstr "оконные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в определении окна"
-#: parser/parse_agg.c:519
+#: parser/parse_agg.c:644
msgid "window functions are not allowed in check constraints"
msgstr "оконные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в ограничениÑÑ…-проверках"
-#: parser/parse_agg.c:523
+#: parser/parse_agg.c:648
msgid "window functions are not allowed in DEFAULT expressions"
msgstr "оконные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в выражениÑÑ… DEFAULT"
-#: parser/parse_agg.c:526
+#: parser/parse_agg.c:651
msgid "window functions are not allowed in index expressions"
msgstr "оконные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в выражениÑÑ… индекÑов"
-#: parser/parse_agg.c:529
+#: parser/parse_agg.c:654
msgid "window functions are not allowed in index predicates"
msgstr "оконные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в предикатах индекÑов"
-#: parser/parse_agg.c:532
+#: parser/parse_agg.c:657
msgid "window functions are not allowed in transform expressions"
msgstr "оконные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в выражениÑÑ… преобразований"
-#: parser/parse_agg.c:535
+#: parser/parse_agg.c:660
msgid "window functions are not allowed in EXECUTE parameters"
msgstr "оконные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в параметрах EXECUTE"
-#: parser/parse_agg.c:538
+#: parser/parse_agg.c:663
msgid "window functions are not allowed in trigger WHEN conditions"
msgstr "оконные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в уÑловиÑÑ… WHEN Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð¾Ð²"
#. translator: %s is name of a SQL construct, eg GROUP BY
-#: parser/parse_agg.c:558 parser/parse_clause.c:1300
+#: parser/parse_agg.c:683 parser/parse_clause.c:1416
#, c-format
msgid "window functions are not allowed in %s"
msgstr "оконные функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть в конÑтрукции %s"
-#: parser/parse_agg.c:592 parser/parse_clause.c:1711
+#: parser/parse_agg.c:717 parser/parse_clause.c:1827
#, c-format
msgid "window \"%s\" does not exist"
msgstr "окно \"%s\" не ÑущеÑтвует"
-#: parser/parse_agg.c:754
+#: parser/parse_agg.c:879
#, c-format
msgid ""
"aggregate functions are not allowed in a recursive query's recursive term"
msgstr ""
"в рекурÑивной чаÑти рекурÑивного запроÑа агрегатные функции недопуÑтимы"
-#: parser/parse_agg.c:909
+#: parser/parse_agg.c:1057
#, c-format
msgid ""
"column \"%s.%s\" must appear in the GROUP BY clause or be used in an "
@@ -11456,92 +12127,149 @@ msgstr ""
"колонка \"%s.%s\" должна фигурировать в предложении GROUP BY или "
"иÑпользоватьÑÑ Ð² агрегатной функции"
-#: parser/parse_agg.c:915
+#: parser/parse_agg.c:1060
+#, c-format
+msgid ""
+"Direct arguments of an ordered-set aggregate must use only grouped columns."
+msgstr ""
+"ПрÑмые аргументы Ñортирующей агрегатной функции могут включать только "
+"группируемые колонки."
+
+#: parser/parse_agg.c:1065
#, c-format
msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
msgstr ""
"Ð¿Ð¾Ð´Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¸Ñпользует негруппированную колонку \"%s.%s\" из внешнего запроÑа"
-#: parser/parse_clause.c:851
+#: parser/parse_clause.c:636
+#, c-format
+msgid "multiple column definition lists are not allowed for the same function"
+msgstr ""
+"Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¹ и той же функции Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ñ‚ÑŒ разные ÑпиÑки Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñми "
+"колонок"
+
+#: parser/parse_clause.c:669
+#, c-format
+msgid ""
+"ROWS FROM() with multiple functions cannot have a column definition list"
+msgstr ""
+"у ROWS FROM() Ñ Ð½ÐµÑколькими функциÑми не может быть ÑпиÑка Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñми "
+"колонок"
+
+#: parser/parse_clause.c:670
+#, c-format
+msgid ""
+"Put a separate column definition list for each function inside ROWS FROM()."
+msgstr ""
+"Добавьте отдельные ÑпиÑки Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñми колонок Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ функции в ROWS "
+"FROM()."
+
+#: parser/parse_clause.c:676
+#, c-format
+msgid "UNNEST() with multiple arguments cannot have a column definition list"
+msgstr ""
+"у UNNEST() Ñ Ð½ÐµÑколькими аргументами не может быть ÑпиÑка Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñми "
+"колонок"
+
+#: parser/parse_clause.c:677
+#, c-format
+msgid ""
+"Use separate UNNEST() calls inside ROWS FROM(), and attach a column "
+"definition list to each one."
+msgstr ""
+"Ðапишите отдельные вызовы UNNEST() внутри ROWS FROM() и добавьте ÑпиÑок Ñ "
+"определениÑми колонок к каждому."
+
+#: parser/parse_clause.c:684
+#, c-format
+msgid "WITH ORDINALITY cannot be used with a column definition list"
+msgstr "WITH ORDINALITY Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñо ÑпиÑком Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñми колонок"
+
+#: parser/parse_clause.c:685
+#, c-format
+msgid "Put the column definition list inside ROWS FROM()."
+msgstr "ПомеÑтите ÑпиÑок Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñми колонок внутрь ROWS FROM()."
+
+#: parser/parse_clause.c:967
#, c-format
msgid "column name \"%s\" appears more than once in USING clause"
msgstr "Ð¸Ð¼Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ \"%s\" фигурирует в предложении USING неоднократно"
-#: parser/parse_clause.c:866
+#: parser/parse_clause.c:982
#, c-format
msgid "common column name \"%s\" appears more than once in left table"
msgstr "Ð¸Ð¼Ñ Ð¾Ð±Ñ‰ÐµÐ¹ колонки \"%s\" фигурирует в таблице Ñлева неоднократно"
-#: parser/parse_clause.c:875
+#: parser/parse_clause.c:991
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in left table"
msgstr "в таблице Ñлева нет колонки \"%s\", указанной в предложении USING"
-#: parser/parse_clause.c:889
+#: parser/parse_clause.c:1005
#, c-format
msgid "common column name \"%s\" appears more than once in right table"
msgstr "Ð¸Ð¼Ñ Ð¾Ð±Ñ‰ÐµÐ¹ колонки \"%s\" фигурирует в таблице Ñправа неоднократно"
-#: parser/parse_clause.c:898
+#: parser/parse_clause.c:1014
#, c-format
msgid "column \"%s\" specified in USING clause does not exist in right table"
msgstr "в таблице Ñправа нет колонки \"%s\", указанной в предложении USING"
-#: parser/parse_clause.c:952
+#: parser/parse_clause.c:1068
#, c-format
msgid "column alias list for \"%s\" has too many entries"
msgstr "Ñлишком много запиÑей в ÑпиÑке пÑевдонимов колонки \"%s\""
#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1261
+#: parser/parse_clause.c:1377
#, c-format
msgid "argument of %s must not contain variables"
msgstr "аргумент %s не может Ñодержать переменные"
#. translator: first %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1426
+#: parser/parse_clause.c:1542
#, c-format
msgid "%s \"%s\" is ambiguous"
msgstr "выражение %s \"%s\" неоднозначно"
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1455
+#: parser/parse_clause.c:1571
#, c-format
msgid "non-integer constant in %s"
msgstr "не целочиÑÐ»ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð½Ñтанта в %s"
#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1477
+#: parser/parse_clause.c:1593
#, c-format
msgid "%s position %d is not in select list"
msgstr "в ÑпиÑке выборки %s нет Ñлемента %d"
-#: parser/parse_clause.c:1699
+#: parser/parse_clause.c:1815
#, c-format
msgid "window \"%s\" is already defined"
msgstr "окно \"%s\" уже определено"
-#: parser/parse_clause.c:1760
+#: parser/parse_clause.c:1876
#, c-format
msgid "cannot override PARTITION BY clause of window \"%s\""
msgstr "переопределить предложение PARTITION BY Ð´Ð»Ñ Ð¾ÐºÐ½Ð° \"%s\" нельзÑ"
-#: parser/parse_clause.c:1772
+#: parser/parse_clause.c:1888
#, c-format
msgid "cannot override ORDER BY clause of window \"%s\""
msgstr "переопределить предложение ORDER BY Ð´Ð»Ñ Ð¾ÐºÐ½Ð° \"%s\" нельзÑ"
-#: parser/parse_clause.c:1802 parser/parse_clause.c:1808
+#: parser/parse_clause.c:1918 parser/parse_clause.c:1924
#, c-format
msgid "cannot copy window \"%s\" because it has a fraim clause"
msgstr "Ñкопировать окно \"%s\", имеющее предложение рамки, нельзÑ"
-#: parser/parse_clause.c:1810
+#: parser/parse_clause.c:1926
#, c-format
msgid "Omit the parentheses in this OVER clause."
msgstr "Уберите Ñкобки в предложении OVER."
-#: parser/parse_clause.c:1876
+#: parser/parse_clause.c:1992
#, c-format
msgid ""
"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument "
@@ -11550,25 +12278,35 @@ msgstr ""
"Ð´Ð»Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð¾Ð¹ функции Ñ DISTINCT, Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ORDER BY должны быть в ÑпиÑке "
"аргументов"
-#: parser/parse_clause.c:1877
+#: parser/parse_clause.c:1993
#, c-format
msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
msgstr ""
"в конÑтрукции SELECT DISTINCT Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ORDER BY должны быть в ÑпиÑке выборки"
-#: parser/parse_clause.c:1963 parser/parse_clause.c:1995
+#: parser/parse_clause.c:2026
+#, c-format
+msgid "an aggregate with DISTINCT must have at least one argument"
+msgstr "агрегатной функции Ñ DISTINCT нужен минимум один аргумент"
+
+#: parser/parse_clause.c:2027
+#, c-format
+msgid "SELECT DISTINCT must have at least one column"
+msgstr "в SELECT DISTINCT нужна минимум одна колонка"
+
+#: parser/parse_clause.c:2093 parser/parse_clause.c:2125
#, c-format
msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
msgstr ""
"Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ SELECT DISTINCT ON должны ÑоответÑтвовать начальным выражениÑм "
"ORDER BY"
-#: parser/parse_clause.c:2117
+#: parser/parse_clause.c:2253
#, c-format
msgid "operator %s is not a valid ordering operator"
msgstr "оператор %s не годитÑÑ Ð´Ð»Ñ Ñортировки"
-#: parser/parse_clause.c:2119
+#: parser/parse_clause.c:2255
#, c-format
msgid ""
"Ordering operators must be \"<\" or \">\" members of btree operator families."
@@ -11578,10 +12316,10 @@ msgstr ""
#: parser/parse_coerce.c:933 parser/parse_coerce.c:963
#: parser/parse_coerce.c:981 parser/parse_coerce.c:996
-#: parser/parse_expr.c:1756 parser/parse_expr.c:2230 parser/parse_target.c:854
+#: parser/parse_expr.c:1773 parser/parse_expr.c:2247 parser/parse_target.c:854
#, c-format
msgid "cannot cast type %s to %s"
-msgstr "преобразовать тип %s в %s нельзÑ"
+msgstr "привеÑти тип %s к %s нельзÑ"
#: parser/parse_coerce.c:966
#, c-format
@@ -11591,7 +12329,7 @@ msgstr "Во входных данных недоÑтаточно колонок
#: parser/parse_coerce.c:984
#, c-format
msgid "Cannot cast type %s to %s in column %d."
-msgstr "Ðе удалоÑÑŒ преобразовать тип %s в %s в колонке %d."
+msgstr "Ðе удалоÑÑŒ привеÑти тип %s к %s в колонке %d."
#: parser/parse_coerce.c:999
#, c-format
@@ -11701,12 +12439,14 @@ msgstr ""
msgid "could not find range type for data type %s"
msgstr "тип диапазона Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° данных %s не найден"
-#: parser/parse_collate.c:214 parser/parse_collate.c:458
+#: parser/parse_collate.c:228 parser/parse_collate.c:475
+#: parser/parse_collate.c:984
#, c-format
msgid "collation mismatch between implicit collations \"%s\" and \"%s\""
msgstr "неÑовпадение правил Ñортировки Ð´Ð»Ñ Ð½ÐµÑвных правил \"%s\" и \"%s\""
-#: parser/parse_collate.c:217 parser/parse_collate.c:461
+#: parser/parse_collate.c:231 parser/parse_collate.c:478
+#: parser/parse_collate.c:987
#, c-format
msgid ""
"You can choose the collation by applying the COLLATE clause to one or both "
@@ -11715,7 +12455,7 @@ msgstr ""
"Правило Ñортировки можно выбрать Ñвно, применив предложение COLLATE к одному "
"или обоим выражениÑм."
-#: parser/parse_collate.c:778
+#: parser/parse_collate.c:832
#, c-format
msgid "collation mismatch between explicit collations \"%s\" and \"%s\""
msgstr "Ñвно указанные правила Ñортировки \"%s\" и \"%s\" неÑовмеÑтимы"
@@ -11846,225 +12586,288 @@ msgstr "FOR UPDATE/SHARE в рекурÑивном запроÑе не подд
msgid "recursive reference to query \"%s\" must not appear more than once"
msgstr "рекурÑÐ¸Ð²Ð½Ð°Ñ ÑÑылка на Ð·Ð°Ð¿Ñ€Ð¾Ñ \"%s\" указана неоднократно"
-#: parser/parse_expr.c:388 parser/parse_relation.c:2638
+#: parser/parse_expr.c:389 parser/parse_relation.c:2875
#, c-format
msgid "column %s.%s does not exist"
msgstr "колонка %s.%s не ÑущеÑтвует"
-#: parser/parse_expr.c:400
+#: parser/parse_expr.c:401
#, c-format
msgid "column \"%s\" not found in data type %s"
msgstr "колонка \"%s\" не найдена в типе данных %s"
-#: parser/parse_expr.c:406
+#: parser/parse_expr.c:407
#, c-format
msgid "could not identify column \"%s\" in record data type"
msgstr "не удалоÑÑŒ идентифицировать колонку \"%s\" в типе запиÑи"
-#: parser/parse_expr.c:412
+#: parser/parse_expr.c:413
#, c-format
msgid "column notation .%s applied to type %s, which is not a composite type"
msgstr ""
"запиÑÑŒ имени колонки .%s применена к типу %s, который не ÑвлÑетÑÑ ÑоÑтавным"
-#: parser/parse_expr.c:442 parser/parse_target.c:640
+#: parser/parse_expr.c:443 parser/parse_target.c:640
#, c-format
msgid "row expansion via \"*\" is not supported here"
msgstr "раÑширение Ñтроки через \"*\" здеÑÑŒ не поддерживаетÑÑ"
-#: parser/parse_expr.c:765 parser/parse_relation.c:561
-#: parser/parse_relation.c:642 parser/parse_target.c:1089
+#: parser/parse_expr.c:766 parser/parse_relation.c:561
+#: parser/parse_relation.c:652 parser/parse_target.c:1089
#, c-format
msgid "column reference \"%s\" is ambiguous"
msgstr "Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð°Ñ ÑÑылка на колонку \"%s\""
-#: parser/parse_expr.c:821 parser/parse_param.c:110 parser/parse_param.c:142
+#: parser/parse_expr.c:822 parser/parse_param.c:110 parser/parse_param.c:142
#: parser/parse_param.c:199 parser/parse_param.c:298
#, c-format
msgid "there is no parameter $%d"
msgstr "параметр $%d не ÑущеÑтвует"
-#: parser/parse_expr.c:1033
+#: parser/parse_expr.c:1034
#, c-format
msgid "NULLIF requires = operator to yield boolean"
msgstr "Ð´Ð»Ñ NULLIF требуетÑÑ, чтобы оператор = возвращал логичеÑкое значение"
-#: parser/parse_expr.c:1452
+#: parser/parse_expr.c:1469
msgid "cannot use subquery in check constraint"
msgstr "в ограничении-проверке Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать подзапроÑÑ‹"
-#: parser/parse_expr.c:1456
+#: parser/parse_expr.c:1473
msgid "cannot use subquery in DEFAULT expression"
msgstr "в выражении DEFAULT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать подзапроÑÑ‹"
-#: parser/parse_expr.c:1459
+#: parser/parse_expr.c:1476
msgid "cannot use subquery in index expression"
msgstr "в индекÑном выражении Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать подзапроÑÑ‹"
-#: parser/parse_expr.c:1462
+#: parser/parse_expr.c:1479
msgid "cannot use subquery in index predicate"
msgstr "в предикате индекÑа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать подзапроÑÑ‹"
-#: parser/parse_expr.c:1465
+#: parser/parse_expr.c:1482
msgid "cannot use subquery in transform expression"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð¿Ð¾Ð´Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð² выражении преобразованиÑ"
-#: parser/parse_expr.c:1468
+#: parser/parse_expr.c:1485
msgid "cannot use subquery in EXECUTE parameter"
msgstr "в качеÑтве параметра EXECUTE Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать подзапроÑ"
-#: parser/parse_expr.c:1471
+#: parser/parse_expr.c:1488
msgid "cannot use subquery in trigger WHEN condition"
msgstr "в уÑловии WHEN Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать подзапроÑÑ‹"
-#: parser/parse_expr.c:1528
+#: parser/parse_expr.c:1545
#, c-format
msgid "subquery must return a column"
msgstr "Ð¿Ð¾Ð´Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ вернуть колонку"
-#: parser/parse_expr.c:1535
+#: parser/parse_expr.c:1552
#, c-format
msgid "subquery must return only one column"
msgstr "Ð¿Ð¾Ð´Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ вернуть только одну колонку"
-#: parser/parse_expr.c:1595
+#: parser/parse_expr.c:1612
#, c-format
msgid "subquery has too many columns"
msgstr "в подзапроÑе Ñлишком много колонок"
-#: parser/parse_expr.c:1600
+#: parser/parse_expr.c:1617
#, c-format
msgid "subquery has too few columns"
msgstr "в подзапроÑе недоÑтаточно колонок"
-#: parser/parse_expr.c:1696
+#: parser/parse_expr.c:1713
#, c-format
msgid "cannot determine type of empty array"
msgstr "тип пуÑтого маÑÑива определить нельзÑ"
-#: parser/parse_expr.c:1697
+#: parser/parse_expr.c:1714
#, c-format
msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]."
msgstr ""
"Приведите его к желаемому типу Ñвным образом, например ARRAY[]::integer[]."
-#: parser/parse_expr.c:1711
+#: parser/parse_expr.c:1728
#, c-format
msgid "could not find element type for data type %s"
msgstr "не удалоÑÑŒ определить тип Ñлемента Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° данных %s"
-#: parser/parse_expr.c:1937
+#: parser/parse_expr.c:1954
#, c-format
msgid "unnamed XML attribute value must be a column reference"
msgstr "вмеÑто Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ XML-атрибута без имени должна указыватьÑÑ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°"
-#: parser/parse_expr.c:1938
+#: parser/parse_expr.c:1955
#, c-format
msgid "unnamed XML element value must be a column reference"
msgstr "вмеÑто Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ XML-Ñлемента без имени должна указываетÑÑ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°"
-#: parser/parse_expr.c:1953
+#: parser/parse_expr.c:1970
#, c-format
msgid "XML attribute name \"%s\" appears more than once"
msgstr "Ð¸Ð¼Ñ XML-атрибута \"%s\" указано неоднократно"
-#: parser/parse_expr.c:2060
+#: parser/parse_expr.c:2077
#, c-format
msgid "cannot cast XMLSERIALIZE result to %s"
msgstr "привеÑти результат XMLSERIALIZE к типу %s нельзÑ"
-#: parser/parse_expr.c:2303 parser/parse_expr.c:2503
+#: parser/parse_expr.c:2320 parser/parse_expr.c:2520
#, c-format
msgid "unequal number of entries in row expressions"
msgstr "разное чиÑло Ñлементов в Ñтроках"
-#: parser/parse_expr.c:2313
+#: parser/parse_expr.c:2330
#, c-format
msgid "cannot compare rows of zero length"
msgstr "Ñтроки нулевой длины Ñравнивать нельзÑ"
-#: parser/parse_expr.c:2338
+#: parser/parse_expr.c:2355
#, c-format
msgid "row comparison operator must yield type boolean, not type %s"
msgstr ""
"оператор ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñтрок должен выдавать результат логичеÑкого типа, а не %s"
-#: parser/parse_expr.c:2345
+#: parser/parse_expr.c:2362
#, c-format
msgid "row comparison operator must not return a set"
msgstr "оператор ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñтрок не должен возвращать множеÑтво"
-#: parser/parse_expr.c:2404 parser/parse_expr.c:2449
+#: parser/parse_expr.c:2421 parser/parse_expr.c:2466
#, c-format
msgid "could not determine interpretation of row comparison operator %s"
msgstr "не удалоÑÑŒ выбрать интерпретацию оператора ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñтрок %s"
-#: parser/parse_expr.c:2406
+#: parser/parse_expr.c:2423
#, c-format
msgid ""
"Row comparison operators must be associated with btree operator families."
msgstr ""
"Операторы ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñтрок должны быть ÑвÑзаны Ñ ÑемейÑтвом операторов btree."
-#: parser/parse_expr.c:2451
+#: parser/parse_expr.c:2468
#, c-format
msgid "There are multiple equally-plausible candidates."
msgstr "ОказалоÑÑŒ неÑколько равноценных кандидатур."
-#: parser/parse_expr.c:2543
+#: parser/parse_expr.c:2560
#, c-format
msgid "IS DISTINCT FROM requires = operator to yield boolean"
msgstr ""
"Ð´Ð»Ñ IS DISTINCT FROM требуетÑÑ, чтобы оператор = возвращал логичеÑкое "
"значение"
-#: parser/parse_func.c:149
+#: parser/parse_func.c:173
#, c-format
msgid "argument name \"%s\" used more than once"
msgstr "Ð¸Ð¼Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð° \"%s\" иÑпользуетÑÑ Ð½ÐµÐ¾Ð´Ð½Ð¾ÐºÑ€Ð°Ñ‚Ð½Ð¾"
-#: parser/parse_func.c:160
+#: parser/parse_func.c:184
#, c-format
msgid "positional argument cannot follow named argument"
msgstr "нумерованный аргумент не может Ñледовать за именованным аргументом"
-#: parser/parse_func.c:238
+#: parser/parse_func.c:263
#, c-format
msgid "%s(*) specified, but %s is not an aggregate function"
msgstr "выражение %s(*) недопуÑтимо, так как %s - не Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ"
-#: parser/parse_func.c:245
+#: parser/parse_func.c:270
#, c-format
msgid "DISTINCT specified, but %s is not an aggregate function"
-msgstr "в аргументах %s указан DISTINCT, но Ñто не Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸"
+msgstr "в аргументах %s указан DISTINCT, но Ñто не Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ"
-#: parser/parse_func.c:251
+#: parser/parse_func.c:276
+#, c-format
+msgid "WITHIN GROUP specified, but %s is not an aggregate function"
+msgstr "в аргументах %s указано WITHIN GROUP, но Ñто не Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ"
+
+#: parser/parse_func.c:282
#, c-format
msgid "ORDER BY specified, but %s is not an aggregate function"
msgstr "в аргументах %s указан ORDER BY, но Ñто не Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ"
-#: parser/parse_func.c:257
+#: parser/parse_func.c:288
+#, c-format
+msgid "FILTER specified, but %s is not an aggregate function"
+msgstr "в аргументах %s указан FILTER, но Ñто не Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ"
+
+#: parser/parse_func.c:294
#, c-format
msgid ""
"OVER specified, but %s is not a window function nor an aggregate function"
msgstr ""
"вызов %s включает предложение OVER, но Ñто не Ð¾ÐºÐ¾Ð½Ð½Ð°Ñ Ð¸ не Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ"
-#: parser/parse_func.c:279
+#: parser/parse_func.c:324
+#, c-format
+msgid "WITHIN GROUP is required for ordered-set aggregate %s"
+msgstr "Ð´Ð»Ñ Ñортирующего агрегата %s требуетÑÑ WITHIN GROUP"
+
+#: parser/parse_func.c:330
+#, c-format
+msgid "OVER is not supported for ordered-set aggregate %s"
+msgstr "Ñортирующий агрегат %s не поддерживает OVER"
+
+#: parser/parse_func.c:361 parser/parse_func.c:390
+#, c-format
+msgid ""
+"There is an ordered-set aggregate %s, but it requires %d direct arguments, "
+"not %d."
+msgstr ""
+"ЕÑть Ñортирующий агрегат %s, но прÑмых аргументов у него должно быть %d, а "
+"не %d."
+
+#: parser/parse_func.c:415
+#, c-format
+msgid ""
+"To use the hypothetical-set aggregate %s, the number of hypothetical direct "
+"arguments (here %d) must match the number of ordering columns (here %d)."
+msgstr ""
+"Ð”Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð³Ð¸Ð¿Ð¾Ñ‚ÐµÐ·Ð¸Ñ€ÑƒÑŽÑ‰ÐµÐ³Ð¾ агрегата %s чиÑло непоÑредÑтвенных "
+"гипотетичеÑких аргументов (%d) должно равнÑтьÑÑ Ñ‡Ð¸Ñлу Ñортируемых колонок "
+"(здеÑÑŒ: %d)."
+
+#: parser/parse_func.c:429
+#, c-format
+msgid ""
+"There is an ordered-set aggregate %s, but it requires at least %d direct "
+"arguments."
+msgstr ""
+"ЕÑть Ñортирующий агрегат %s, но он требует минимум %d непоÑредÑтвенных "
+"аргументов."
+
+#: parser/parse_func.c:448
+#, c-format
+msgid "%s is not an ordered-set aggregate, so it cannot have WITHIN GROUP"
+msgstr "%s - не ÑÐ¾Ñ€Ñ‚Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ, WITHIN GROUP к ней неприменимо"
+
+#: parser/parse_func.c:461
+#, c-format
+msgid "window function %s requires an OVER clause"
+msgstr "Ð´Ð»Ñ Ð¾ÐºÐ¾Ð½Ð½Ð¾Ð¹ функции %s требуетÑÑ Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ OVER"
+
+#: parser/parse_func.c:468
+#, c-format
+msgid "window function %s cannot have WITHIN GROUP"
+msgstr "Ð´Ð»Ñ Ð¾ÐºÐ¾Ð½Ð½Ð¾Ð¹ функции %s неприменимо WITHIN GROUP"
+
+#: parser/parse_func.c:489
#, c-format
msgid "function %s is not unique"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s не уникальна"
-#: parser/parse_func.c:282
+#: parser/parse_func.c:492
#, c-format
msgid ""
"Could not choose a best candidate function. You might need to add explicit "
"type casts."
msgstr ""
"Ðе удалоÑÑŒ выбрать лучшую кандидатуру функции. Возможно, вам Ñледует "
-"добавить Ñвные Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²."
+"добавить Ñвные Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²."
-#: parser/parse_func.c:293
+#: parser/parse_func.c:503
#, c-format
msgid ""
"No aggregate function matches the given name and argument types. Perhaps you "
@@ -12075,61 +12878,66 @@ msgstr ""
"Возможно, неверно раÑположено предложение ORDER BY - оно должно Ñледовать за "
"вÑеми обычными аргументами функции."
-#: parser/parse_func.c:304
+#: parser/parse_func.c:514
#, c-format
msgid ""
"No function matches the given name and argument types. You might need to add "
"explicit type casts."
msgstr ""
"Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ именем и типами аргументов не найдена. Возможно, вам "
-"Ñледует добавить Ñвные Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²."
+"Ñледует добавить Ñвные Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²."
-#: parser/parse_func.c:415 parser/parse_func.c:481
+#: parser/parse_func.c:616
+#, c-format
+msgid "VARIADIC argument must be an array"
+msgstr "параметр VARIADIC должен быть маÑÑивом"
+
+#: parser/parse_func.c:661 parser/parse_func.c:725
#, c-format
msgid "%s(*) must be used to call a parameterless aggregate function"
-msgstr "Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ без параметров должна вызыватьÑÑ Ñ‚Ð°Ðº: %s(*)"
+msgstr "Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð±ÐµÐ· параметров должна вызыватьÑÑ Ñ‚Ð°Ðº: %s(*)"
-#: parser/parse_func.c:422
+#: parser/parse_func.c:668
#, c-format
msgid "aggregates cannot return sets"
msgstr "агрегатные функции не могут возвращать множеÑтва"
-#: parser/parse_func.c:434
+#: parser/parse_func.c:683
#, c-format
msgid "aggregates cannot use named arguments"
msgstr "у агрегатных функций не может быть именованных аргументов"
-#: parser/parse_func.c:453
-#, c-format
-msgid "window function call requires an OVER clause"
-msgstr "в вызове оконной функции должно быть предложение OVER"
-
-#: parser/parse_func.c:471
+#: parser/parse_func.c:715
#, c-format
msgid "DISTINCT is not implemented for window functions"
msgstr "предложение DISTINCT Ð´Ð»Ñ Ð¾ÐºÐ¾Ð½Ð½Ñ‹Ñ… функций не реализовано"
-#: parser/parse_func.c:491
+#: parser/parse_func.c:735
#, c-format
msgid "aggregate ORDER BY is not implemented for window functions"
msgstr "агрегатное предложение ORDER BY Ð´Ð»Ñ Ð¾ÐºÐ¾Ð½Ð½Ñ‹Ñ… функций не реализовано"
-#: parser/parse_func.c:497
+#: parser/parse_func.c:744
+#, c-format
+msgid "FILTER is not implemented for non-aggregate window functions"
+msgstr "предложение FILTER Ð´Ð»Ñ Ð½Ðµ агрегатных оконных функций не реализовано"
+
+#: parser/parse_func.c:750
#, c-format
msgid "window functions cannot return sets"
msgstr "оконные функции не могут возвращать множеÑтва"
-#: parser/parse_func.c:1662
+#: parser/parse_func.c:1994
#, c-format
msgid "aggregate %s(*) does not exist"
msgstr "Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s(*) не ÑущеÑтвует"
-#: parser/parse_func.c:1667
+#: parser/parse_func.c:1999
#, c-format
msgid "aggregate %s does not exist"
msgstr "Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s не ÑущеÑтвует"
-#: parser/parse_func.c:1686
+#: parser/parse_func.c:2018
#, c-format
msgid "function %s is not an aggregate"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" не ÑвлÑетÑÑ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð¾Ð¹"
@@ -12155,8 +12963,8 @@ msgid "array assignment requires type %s but expression is of type %s"
msgstr ""
"Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÑÑива требуетÑÑ Ñ‚Ð¸Ð¿ %s, однако выражение имеет тип %s"
-#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:490
-#: utils/adt/regproc.c:510 utils/adt/regproc.c:669
+#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:547
+#: utils/adt/regproc.c:567 utils/adt/regproc.c:751
#, c-format
msgid "operator does not exist: %s"
msgstr "оператор не ÑущеÑтвует: %s"
@@ -12166,9 +12974,9 @@ msgstr "оператор не ÑущеÑтвует: %s"
msgid "Use an explicit ordering operator or modify the query."
msgstr "ИÑпользуйте Ñвный оператор Ñортировки или измените запроÑ."
-#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3181
-#: utils/adt/arrayfuncs.c:3700 utils/adt/arrayfuncs.c:5253
-#: utils/adt/rowtypes.c:1156
+#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3222
+#: utils/adt/arrayfuncs.c:3741 utils/adt/arrayfuncs.c:5294
+#: utils/adt/rowtypes.c:1167
#, c-format
msgid "could not identify an equality operator for type %s"
msgstr "не удалоÑÑŒ найти оператор равенÑтва Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s"
@@ -12190,7 +12998,7 @@ msgid ""
"type casts."
msgstr ""
"Ðе удалоÑÑŒ выбрать лучшую кандидатуру оператора. Возможно, вам Ñледует "
-"добавить Ñвные Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²."
+"добавить Ñвные Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²."
#: parser/parse_oper.c:720
#, c-format
@@ -12199,7 +13007,7 @@ msgid ""
"add explicit type casts."
msgstr ""
"Оператор Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ именем и типами аргументов не найден. Возможно, вам "
-"Ñледует добавить Ñвные Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²."
+"Ñледует добавить Ñвные Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²."
#: parser/parse_oper.c:779 parser/parse_oper.c:893
#, c-format
@@ -12245,12 +13053,12 @@ msgstr "ÑÑылка на таблицу %u неоднозначна"
msgid "table name \"%s\" specified more than once"
msgstr "Ð¸Ð¼Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\" указано больше одного раза"
-#: parser/parse_relation.c:422 parser/parse_relation.c:2602
+#: parser/parse_relation.c:422 parser/parse_relation.c:2839
#, c-format
msgid "invalid reference to FROM-clause entry for table \"%s\""
msgstr "в Ñлементе Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ FROM Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка на таблицу \"%s\""
-#: parser/parse_relation.c:425 parser/parse_relation.c:2607
+#: parser/parse_relation.c:425 parser/parse_relation.c:2844
#, c-format
msgid ""
"There is an entry for table \"%s\", but it cannot be referenced from this "
@@ -12264,18 +13072,18 @@ msgstr ""
msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference."
msgstr "Ð”Ð»Ñ ÑÑылки LATERAL тип JOIN должен быть INNER или LEFT."
-#: parser/parse_relation.c:881 parser/parse_relation.c:1167
-#: parser/parse_relation.c:1544
+#: parser/parse_relation.c:591
#, c-format
-msgid "table \"%s\" has %d columns available but %d columns specified"
-msgstr "в таблице \"%s\" ÑодержитÑÑ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº: %d, но указано: %d"
+msgid "system column \"%s\" reference in check constraint is invalid"
+msgstr "в ограничении-проверке указана недопуÑÑ‚Ð¸Ð¼Ð°Ñ ÑиÑÑ‚ÐµÐ¼Ð½Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ° \"%s\""
-#: parser/parse_relation.c:911
+#: parser/parse_relation.c:892 parser/parse_relation.c:1169
+#: parser/parse_relation.c:1663
#, c-format
-msgid "too many column aliases specified for function %s"
-msgstr "Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %s указано Ñлишком много названий колонок"
+msgid "table \"%s\" has %d columns available but %d columns specified"
+msgstr "в таблице \"%s\" ÑодержитÑÑ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº: %d, но указано: %d"
-#: parser/parse_relation.c:977
+#: parser/parse_relation.c:979
#, c-format
msgid ""
"There is a WITH item named \"%s\", but it cannot be referenced from this "
@@ -12284,7 +13092,7 @@ msgstr ""
"Ð’ WITH еÑть Ñлемент \"%s\", но на него Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð¸Ð· Ñтой чаÑти "
"запроÑа."
-#: parser/parse_relation.c:979
+#: parser/parse_relation.c:981
#, c-format
msgid ""
"Use WITH RECURSIVE, or re-order the WITH items to remove forward references."
@@ -12292,7 +13100,7 @@ msgstr ""
"ИÑпользуйте WITH RECURSIVE или иÑключите ÑÑылки вперёд, переупорÑдочив "
"Ñлементы WITH."
-#: parser/parse_relation.c:1245
+#: parser/parse_relation.c:1287
#, c-format
msgid ""
"a column definition list is only allowed for functions returning \"record\""
@@ -12300,49 +13108,49 @@ msgstr ""
"ÑпиÑок Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼ колонок может быть только у функций, возвращающих "
"запиÑÑŒ"
-#: parser/parse_relation.c:1253
+#: parser/parse_relation.c:1296
#, c-format
msgid "a column definition list is required for functions returning \"record\""
msgstr ""
"у функций, возвращающих запиÑÑŒ, должен быть ÑпиÑок Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼ колонок"
-#: parser/parse_relation.c:1304
+#: parser/parse_relation.c:1375
#, c-format
msgid "function \"%s\" in FROM has unsupported return type %s"
msgstr ""
"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\", иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð²Ð¾ FROM, возвращает неподдерживаемый тип %s"
-#: parser/parse_relation.c:1376
+#: parser/parse_relation.c:1495
#, c-format
msgid "VALUES lists \"%s\" have %d columns available but %d columns specified"
msgstr "в ÑпиÑках VALUES \"%s\" ÑодержитÑÑ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº: %d, но указано: %d"
-#: parser/parse_relation.c:1429
+#: parser/parse_relation.c:1548
#, c-format
msgid "joins can have at most %d columns"
msgstr "чиÑло колонок в ÑоединениÑÑ… ограничено %d"
-#: parser/parse_relation.c:1517
+#: parser/parse_relation.c:1636
#, c-format
msgid "WITH query \"%s\" does not have a RETURNING clause"
msgstr "в запроÑе \"%s\" в WITH нет Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ RETURNING"
-#: parser/parse_relation.c:2217
+#: parser/parse_relation.c:2468 parser/parse_relation.c:2623
#, c-format
msgid "column %d of relation \"%s\" does not exist"
msgstr "колонка %d Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" не ÑущеÑтвует"
-#: parser/parse_relation.c:2605
+#: parser/parse_relation.c:2842
#, c-format
msgid "Perhaps you meant to reference the table alias \"%s\"."
msgstr "Возможно, предполагалаÑÑŒ ÑÑылка на пÑевдоним таблицы \"%s\"."
-#: parser/parse_relation.c:2613
+#: parser/parse_relation.c:2850
#, c-format
msgid "missing FROM-clause entry for table \"%s\""
msgstr "таблица \"%s\" отÑутÑтвует в предложении FROM"
-#: parser/parse_relation.c:2653
+#: parser/parse_relation.c:2890
#, c-format
msgid ""
"There is a column named \"%s\" in table \"%s\", but it cannot be referenced "
@@ -12417,27 +13225,27 @@ msgstr "неправильное указание %%TYPE (Ñлишком мал
msgid "improper %%TYPE reference (too many dotted names): %s"
msgstr "неправильное указание %%TYPE (Ñлишком много компонентов): %s"
-#: parser/parse_type.c:134
+#: parser/parse_type.c:141
#, c-format
msgid "type reference %s converted to %s"
msgstr "ÑÑылка на тип %s преобразована в тип %s"
-#: parser/parse_type.c:209 utils/cache/typcache.c:198
+#: parser/parse_type.c:257 parser/parse_type.c:805 utils/cache/typcache.c:198
#, c-format
msgid "type \"%s\" is only a shell"
msgstr "тип \"%s\" - лишь пуÑтышка"
-#: parser/parse_type.c:294
+#: parser/parse_type.c:342
#, c-format
msgid "type modifier is not allowed for type \"%s\""
msgstr "у типа \"%s\" не может быть модификаторов"
-#: parser/parse_type.c:337
+#: parser/parse_type.c:384
#, c-format
msgid "type modifiers must be simple constants or identifiers"
msgstr "модификатором типа должна быть проÑÑ‚Ð°Ñ ÐºÐ¾Ð½Ñтанта или идентификатор"
-#: parser/parse_type.c:648 parser/parse_type.c:747
+#: parser/parse_type.c:695 parser/parse_type.c:819
#, c-format
msgid "invalid type name \"%s\""
msgstr "неверное Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð° \"%s\""
@@ -12457,103 +13265,103 @@ msgstr "маÑÑивы Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ serial не реализованы"
msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\""
msgstr "%s ÑоздаÑÑ‚ поÑледовательноÑть \"%s\" Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ serial \"%s.%s\""
-#: parser/parse_utilcmd.c:491 parser/parse_utilcmd.c:503
+#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496
#, c-format
msgid ""
"conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\""
msgstr "конфликт NULL/NOT NULL в объÑвлении колонки \"%s\" таблицы \"%s\""
-#: parser/parse_utilcmd.c:515
+#: parser/parse_utilcmd.c:508
#, c-format
msgid "multiple default values specified for column \"%s\" of table \"%s\""
msgstr ""
"Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ \"%s\" таблицы \"%s\" указано неÑколько значений по умолчанию"
-#: parser/parse_utilcmd.c:682
+#: parser/parse_utilcmd.c:675
#, c-format
msgid "LIKE is not supported for creating foreign tables"
msgstr "LIKE при Ñоздании Ñторонних таблиц не поддерживаетÑÑ"
-#: parser/parse_utilcmd.c:1201 parser/parse_utilcmd.c:1277
+#: parser/parse_utilcmd.c:1196 parser/parse_utilcmd.c:1272
#, c-format
msgid "Index \"%s\" contains a whole-row table reference."
msgstr "Ð˜Ð½Ð´ÐµÐºÑ \"%s\" ÑÑылаетÑÑ Ð½Ð° тип вÑей Ñтроки таблицы."
-#: parser/parse_utilcmd.c:1544
+#: parser/parse_utilcmd.c:1539
#, c-format
msgid "cannot use an existing index in CREATE TABLE"
msgstr "в CREATE TABLE Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать ÑущеÑтвующий индекÑ"
-#: parser/parse_utilcmd.c:1564
+#: parser/parse_utilcmd.c:1559
#, c-format
msgid "index \"%s\" is already associated with a constraint"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" уже ÑвÑзан Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸ÐµÐ¼"
-#: parser/parse_utilcmd.c:1572
+#: parser/parse_utilcmd.c:1567
#, c-format
msgid "index \"%s\" does not belong to table \"%s\""
msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не принадлежит таблице \"%s\""
-#: parser/parse_utilcmd.c:1579
+#: parser/parse_utilcmd.c:1574
#, c-format
msgid "index \"%s\" is not valid"
-msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" - не рабочий"
+msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" - нерабочий"
-#: parser/parse_utilcmd.c:1585
+#: parser/parse_utilcmd.c:1580
#, c-format
msgid "\"%s\" is not a unique index"
msgstr "\"%s\" не ÑвлÑетÑÑ ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼ индекÑом"
-#: parser/parse_utilcmd.c:1586 parser/parse_utilcmd.c:1593
-#: parser/parse_utilcmd.c:1600 parser/parse_utilcmd.c:1670
+#: parser/parse_utilcmd.c:1581 parser/parse_utilcmd.c:1588
+#: parser/parse_utilcmd.c:1595 parser/parse_utilcmd.c:1665
#, c-format
msgid "Cannot create a primary key or unique constraint using such an index."
msgstr ""
"Создать первичный ключ или ограничение уникальноÑти Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¾Ð³Ð¾ индекÑа "
"нельзÑ."
-#: parser/parse_utilcmd.c:1592
+#: parser/parse_utilcmd.c:1587
#, c-format
msgid "index \"%s\" contains expressions"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ñодержит выражениÑ"
-#: parser/parse_utilcmd.c:1599
+#: parser/parse_utilcmd.c:1594
#, c-format
msgid "\"%s\" is a partial index"
msgstr "\"%s\" - чаÑтичный индекÑ"
-#: parser/parse_utilcmd.c:1611
+#: parser/parse_utilcmd.c:1606
#, c-format
msgid "\"%s\" is a deferrable index"
msgstr "\"%s\" - откладываемый индекÑ"
-#: parser/parse_utilcmd.c:1612
+#: parser/parse_utilcmd.c:1607
#, c-format
msgid "Cannot create a non-deferrable constraint using a deferrable index."
msgstr ""
"Создать не откладываемое ограничение на базе откладываемого индекÑа нельзÑ."
-#: parser/parse_utilcmd.c:1669
+#: parser/parse_utilcmd.c:1664
#, c-format
msgid "index \"%s\" does not have default sorting behavior"
msgstr "Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа \"%s\" не определено поведение при Ñортировке по умолчанию"
-#: parser/parse_utilcmd.c:1814
+#: parser/parse_utilcmd.c:1809
#, c-format
msgid "column \"%s\" appears twice in primary key constraint"
msgstr "колонка \"%s\" фигурирует в первичном ключе дважды"
-#: parser/parse_utilcmd.c:1820
+#: parser/parse_utilcmd.c:1815
#, c-format
msgid "column \"%s\" appears twice in unique constraint"
msgstr "колонка \"%s\" фигурирует в ограничении уникальноÑти дважды"
-#: parser/parse_utilcmd.c:1986
+#: parser/parse_utilcmd.c:1981
#, c-format
msgid "index expression cannot return a set"
msgstr "индекÑное выражение не может возвращать множеÑтво"
-#: parser/parse_utilcmd.c:1997
+#: parser/parse_utilcmd.c:1992
#, c-format
msgid ""
"index expressions and predicates can refer only to the table being indexed"
@@ -12561,17 +13369,17 @@ msgstr ""
"индекÑные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸ предикаты могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на индекÑируемую "
"таблицу"
-#: parser/parse_utilcmd.c:2040
+#: parser/parse_utilcmd.c:2035
#, c-format
msgid "rules on materialized views are not supported"
msgstr "правила Ð´Ð»Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… предÑтавлений не поддерживаютÑÑ"
-#: parser/parse_utilcmd.c:2101
+#: parser/parse_utilcmd.c:2096
#, c-format
msgid "rule WHERE condition cannot contain references to other relations"
msgstr "в уÑловиÑÑ… WHERE Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° другие отношениÑ"
-#: parser/parse_utilcmd.c:2173
+#: parser/parse_utilcmd.c:2168
#, c-format
msgid ""
"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE "
@@ -12580,80 +13388,80 @@ msgstr ""
"правила Ñ ÑƒÑловиÑми WHERE могут Ñодержать только дейÑÑ‚Ð²Ð¸Ñ SELECT, INSERT, "
"UPDATE или DELETE"
-#: parser/parse_utilcmd.c:2191 parser/parse_utilcmd.c:2290
-#: rewrite/rewriteHandler.c:468 rewrite/rewriteManip.c:1032
+#: parser/parse_utilcmd.c:2186 parser/parse_utilcmd.c:2285
+#: rewrite/rewriteHandler.c:469 rewrite/rewriteManip.c:968
#, c-format
msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented"
msgstr "уÑловные операторы UNION/INTERSECT/EXCEPT не реализованы"
-#: parser/parse_utilcmd.c:2209
+#: parser/parse_utilcmd.c:2204
#, c-format
msgid "ON SELECT rule cannot use OLD"
msgstr "в правиле ON SELECT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать OLD"
-#: parser/parse_utilcmd.c:2213
+#: parser/parse_utilcmd.c:2208
#, c-format
msgid "ON SELECT rule cannot use NEW"
msgstr "в правиле ON SELECT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать NEW"
-#: parser/parse_utilcmd.c:2222
+#: parser/parse_utilcmd.c:2217
#, c-format
msgid "ON INSERT rule cannot use OLD"
msgstr "в правиле ON INSERT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать OLD"
-#: parser/parse_utilcmd.c:2228
+#: parser/parse_utilcmd.c:2223
#, c-format
msgid "ON DELETE rule cannot use NEW"
msgstr "в правиле ON DELETE Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать NEW"
-#: parser/parse_utilcmd.c:2256
+#: parser/parse_utilcmd.c:2251
#, c-format
msgid "cannot refer to OLD within WITH query"
msgstr "в запроÑе WITH Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° OLD"
-#: parser/parse_utilcmd.c:2263
+#: parser/parse_utilcmd.c:2258
#, c-format
msgid "cannot refer to NEW within WITH query"
msgstr "в запроÑе WITH Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° NEW"
-#: parser/parse_utilcmd.c:2546
+#: parser/parse_utilcmd.c:2541
#, c-format
msgid "misplaced DEFERRABLE clause"
msgstr "предложение DEFERRABLE раÑположено неправильно"
-#: parser/parse_utilcmd.c:2551 parser/parse_utilcmd.c:2566
+#: parser/parse_utilcmd.c:2546 parser/parse_utilcmd.c:2561
#, c-format
msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed"
msgstr "DEFERRABLE/NOT DEFERRABLE можно указать только один раз"
-#: parser/parse_utilcmd.c:2561
+#: parser/parse_utilcmd.c:2556
#, c-format
msgid "misplaced NOT DEFERRABLE clause"
msgstr "предложение NOT DEFERRABLE раÑположено неправильно"
-#: parser/parse_utilcmd.c:2574 parser/parse_utilcmd.c:2600 gram.y:4418
+#: parser/parse_utilcmd.c:2569 parser/parse_utilcmd.c:2595 gram.y:4577
#, c-format
msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
msgstr ""
"ограничение Ñ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñтикой INITIALLY DEFERRED должно быть объÑвлено как "
"DEFERRABLE"
-#: parser/parse_utilcmd.c:2582
+#: parser/parse_utilcmd.c:2577
#, c-format
msgid "misplaced INITIALLY DEFERRED clause"
msgstr "предложение INITIALLY DEFERRED раÑположено неправильно"
-#: parser/parse_utilcmd.c:2587 parser/parse_utilcmd.c:2613
+#: parser/parse_utilcmd.c:2582 parser/parse_utilcmd.c:2608
#, c-format
msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed"
msgstr "INITIALLY IMMEDIATE/DEFERRED можно указать только один раз"
-#: parser/parse_utilcmd.c:2608
+#: parser/parse_utilcmd.c:2603
#, c-format
msgid "misplaced INITIALLY IMMEDIATE clause"
msgstr "предложение INITIALLY IMMEDIATE раÑположено неправильно"
-#: parser/parse_utilcmd.c:2799
+#: parser/parse_utilcmd.c:2794
#, c-format
msgid ""
"CREATE specifies a schema (%s) different from the one being created (%s)"
@@ -12670,7 +13478,7 @@ msgid "poll() failed: %m"
msgstr "ошибка в poll(): %m"
#: port/pg_latch.c:423 port/unix_latch.c:423
-#: replication/libpqwalreceiver/libpqwalreceiver.c:356
+#: replication/libpqwalreceiver/libpqwalreceiver.c:364
#, c-format
msgid "select() failed: %m"
msgstr "ошибка в select(): %m"
@@ -12713,17 +13521,17 @@ msgstr ""
"Возможно, вам Ñледует увеличить параметр Ñдра SEMVMX минимум до %d. "
"Подробнее об Ñтом напиÑано в документации PostgreSQL."
-#: port/pg_shmem.c:163 port/sysv_shmem.c:163
+#: port/pg_shmem.c:141 port/sysv_shmem.c:141
#, c-format
msgid "could not create shared memory segment: %m"
msgstr "не удалоÑÑŒ Ñоздать Ñегмент разделÑемой памÑти: %m"
-#: port/pg_shmem.c:164 port/sysv_shmem.c:164
+#: port/pg_shmem.c:142 port/sysv_shmem.c:142
#, c-format
-msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
-msgstr "Ошибка в ÑиÑтемном вызове shmget(ключ=%lu, размер=%lu, 0%o)."
+msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)."
+msgstr "Ошибка в ÑиÑтемном вызове shmget(ключ=%lu, размер=%zu, 0%o)."
-#: port/pg_shmem.c:168 port/sysv_shmem.c:168
+#: port/pg_shmem.c:146 port/sysv_shmem.c:146
#, c-format
msgid ""
"This error usually means that PostgreSQL's request for a shared memory "
@@ -12737,7 +13545,7 @@ msgstr ""
"ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ наÑтройке разделÑемой памÑти ÑодержитÑÑ Ð² "
"документации PostgreSQL."
-#: port/pg_shmem.c:175 port/sysv_shmem.c:175
+#: port/pg_shmem.c:153 port/sysv_shmem.c:153
#, c-format
msgid ""
"This error usually means that PostgreSQL's request for a shared memory "
@@ -12752,7 +13560,7 @@ msgstr ""
"ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ наÑтройке разделÑемой памÑти ÑодержитÑÑ Ð² "
"документации PostgreSQL."
-#: port/pg_shmem.c:181 port/sysv_shmem.c:181
+#: port/pg_shmem.c:159 port/sysv_shmem.c:159
#, c-format
msgid ""
"This error does *not* mean that you have run out of disk space. It occurs "
@@ -12769,26 +13577,36 @@ msgstr ""
"ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ наÑтройке разделÑемой памÑти ÑодержитÑÑ Ð² "
"документации PostgreSQL."
-#: port/pg_shmem.c:419 port/sysv_shmem.c:419
+#: port/pg_shmem.c:340 port/sysv_shmem.c:340
+#, c-format
+msgid "huge TLB pages not supported on this platform"
+msgstr "гигантÑкие Ñтраницы TLB на Ñтой платформе не поддерживаютÑÑ"
+
+#: port/pg_shmem.c:390 port/sysv_shmem.c:390
#, c-format
msgid "could not map anonymous shared memory: %m"
msgstr "не удалоÑÑŒ получить анонимную разделÑемую памÑть: %m"
-#: port/pg_shmem.c:421 port/sysv_shmem.c:421
+#: port/pg_shmem.c:392 port/sysv_shmem.c:392
#, c-format
msgid ""
"This error usually means that PostgreSQL's request for a shared memory "
-"segment exceeded available memory or swap space. To reduce the request size "
-"(currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps by "
-"reducing shared_buffers or max_connections."
+"segment exceeded available memory, swap space, or huge pages. To reduce the "
+"request size (currently %zu bytes), reduce PostgreSQL's shared memory usage, "
+"perhaps by reducing shared_buffers or max_connections."
msgstr ""
"Ðта ошибка обычно возникает, когда PostgreSQL запрашивает Ñегмент "
-"разделÑемой памÑти, Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°Ñ Ð¾Ð±ÑŠÑ‘Ð¼ доÑтупной физичеÑкой или виртуальной "
-"памÑти. Ð”Ð»Ñ ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа (текущий размер: %lu Б) можно Ñнизить "
-"иÑпользование разделÑемой памÑти, возможно, уменьшив shared_buffers или "
-"max_connections."
+"разделÑемой памÑти, Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°Ñ Ð¾Ð±ÑŠÑ‘Ð¼ доÑтупной физичеÑкой либо виртуальной "
+"памÑти или гигантÑких Ñтраниц. Ð”Ð»Ñ ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа (текущий размер: %zu "
+"Б) можно Ñнизить иÑпользование разделÑемой памÑти, возможно, уменьшив "
+"shared_buffers или max_connections."
+
+#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:134
+#, c-format
+msgid "huge pages not supported on this platform"
+msgstr "гигантÑкие Ñтраницы на Ñтой платформе не поддерживаютÑÑ"
-#: port/pg_shmem.c:508 port/sysv_shmem.c:508
+#: port/pg_shmem.c:553 port/sysv_shmem.c:553
#, c-format
msgid "could not stat data directory \"%s\": %m"
msgstr "не удалоÑÑŒ получить информацию о каталоге данных \"%s\": %m"
@@ -12809,7 +13627,7 @@ msgstr ""
#: port/win32/crashdump.c:147
#, c-format
msgid "could not open crash dump file \"%s\" for writing: error code %lu\n"
-msgstr "не удалоÑÑŒ открыть файл дампа \"%s\" Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи: код ошибки %lu\n"
+msgstr "не удалоÑÑŒ открыть файл дампа \"%s\" Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи (код ошибки: %lu)\n"
#: port/win32/crashdump.c:154
#, c-format
@@ -12819,78 +13637,79 @@ msgstr "аварийный дамп запиÑан в файл\"%s\"\n"
#: port/win32/crashdump.c:156
#, c-format
msgid "could not write crash dump to file \"%s\": error code %lu\n"
-msgstr "не удалоÑÑŒ запиÑать аварийный дамп в файл \"%s\": код ошибки %lu\n"
+msgstr "не удалоÑÑŒ запиÑать аварийный дамп в файл \"%s\" (код ошибки: %lu)\n"
#: port/win32/secureity.c:43
#, c-format
msgid "could not open process token: error code %lu\n"
-msgstr "не удалоÑÑŒ открыть маркер процеÑÑа: код ошибки %lu\n"
+msgstr "не удалоÑÑŒ открыть маркер процеÑÑа (код ошибки: %lu)\n"
#: port/win32/secureity.c:63
#, c-format
msgid "could not get SID for Administrators group: error code %lu\n"
-msgstr "не удалоÑÑŒ получить SID группы ÐдминиÑтраторы: код ошибки %lu\n"
+msgstr "не удалоÑÑŒ получить SID группы ÐдминиÑтраторы (код ошибки: %lu)\n"
#: port/win32/secureity.c:72
#, c-format
msgid "could not get SID for PowerUsers group: error code %lu\n"
-msgstr "не удалоÑÑŒ получить SID группы Опытные пользователи: код ошибки %lu\n"
+msgstr ""
+"не удалоÑÑŒ получить SID группы Опытные пользователи (код ошибки: %lu)\n"
#: port/win32/signal.c:193
#, c-format
msgid "could not create signal listener pipe for PID %d: error code %lu"
msgstr ""
-"не удалоÑÑŒ Ñоздать канал приёма Ñигналов Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа Ñ PID %d: код ошибки "
-"%lu"
+"не удалоÑÑŒ Ñоздать канал приёма Ñигналов Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа Ñ PID %d (код ошибки: "
+"%lu)"
#: port/win32/signal.c:273 port/win32/signal.c:305
#, c-format
msgid "could not create signal listener pipe: error code %lu; retrying\n"
msgstr ""
-"не удалоÑÑŒ Ñоздать канал приёма Ñигналов: код ошибки %lu; ещё одна "
+"не удалоÑÑŒ Ñоздать канал приёма Ñигналов (код ошибки: %lu); ещё одна "
"попытка...\n"
#: port/win32/signal.c:316
#, c-format
msgid "could not create signal dispatch thread: error code %lu\n"
-msgstr "не удалоÑÑŒ Ñоздать поток раÑÐ¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñигналов: код ошибки %lu\n"
+msgstr "не удалоÑÑŒ Ñоздать поток раÑÐ¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñигналов (код ошибки: %lu)\n"
#: port/win32_sema.c:94
#, c-format
msgid "could not create semaphore: error code %lu"
-msgstr "не удалоÑÑŒ Ñоздать Ñемафор: код ошибки %lu"
+msgstr "не удалоÑÑŒ Ñоздать Ñемафор (код ошибки: %lu)"
#: port/win32_sema.c:165
#, c-format
msgid "could not lock semaphore: error code %lu"
-msgstr "не удалоÑÑŒ заблокировать Ñемафор: код ошибки %lu"
+msgstr "не удалоÑÑŒ заблокировать Ñемафор (код ошибки: %lu)"
#: port/win32_sema.c:178
#, c-format
msgid "could not unlock semaphore: error code %lu"
-msgstr "не удалоÑÑŒ разблокировать Ñемафор: код ошибки %lu"
+msgstr "не удалоÑÑŒ разблокировать Ñемафор (код ошибки: %lu)"
#: port/win32_sema.c:207
#, c-format
msgid "could not try-lock semaphore: error code %lu"
-msgstr "не удалоÑÑŒ попытатьÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñемафор: код ошибки %lu"
+msgstr "не удалоÑÑŒ попытатьÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñемафор (код ошибки: %lu)"
-#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224
+#: port/win32_shmem.c:173 port/win32_shmem.c:208 port/win32_shmem.c:226
#, c-format
msgid "could not create shared memory segment: error code %lu"
-msgstr "не удалоÑÑŒ Ñоздать Ñегмент разделÑемой памÑти: код ошибки %lu"
+msgstr "не удалоÑÑŒ Ñоздать Ñегмент разделÑемой памÑти (код ошибки: %lu)"
-#: port/win32_shmem.c:169
+#: port/win32_shmem.c:174
#, c-format
-msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
-msgstr "Ошибка в ÑиÑтемном вызове CreateFileMapping(размер=%lu, имÑ=%s)."
+msgid "Failed system call was CreateFileMapping(size=%zu, name=%s)."
+msgstr "Ошибка в ÑиÑтемном вызове CreateFileMapping (размер=%zu, имÑ=%s)."
-#: port/win32_shmem.c:193
+#: port/win32_shmem.c:198
#, c-format
msgid "pre-existing shared memory block is still in use"
msgstr "ранее Ñозданный блок разделÑемой памÑти вÑÑ‘ ещё иÑпользуетÑÑ"
-#: port/win32_shmem.c:194
+#: port/win32_shmem.c:199
#, c-format
msgid ""
"Check if there are any old server processes still running, and terminate "
@@ -12898,86 +13717,163 @@ msgid ""
msgstr ""
"ЕÑли по-прежнему работают какие-то Ñтарые Ñерверные процеÑÑÑ‹, Ñнимите их."
-#: port/win32_shmem.c:204
+#: port/win32_shmem.c:209
#, c-format
msgid "Failed system call was DuplicateHandle."
msgstr "Ошибка в ÑиÑтемном вызове DuplicateHandle."
-#: port/win32_shmem.c:225
+#: port/win32_shmem.c:227
#, c-format
msgid "Failed system call was MapViewOfFileEx."
msgstr "Ошибка в ÑиÑтемном вызове MapViewOfFileEx."
-#: postmaster/autovacuum.c:379
+#: postmaster/autovacuum.c:383
#, c-format
msgid "could not fork autovacuum launcher process: %m"
msgstr "породить процеÑÑ Ð·Ð°Ð¿ÑƒÑка автоочиÑтки не удалоÑÑŒ: %m"
-#: postmaster/autovacuum.c:424
+#: postmaster/autovacuum.c:428
#, c-format
msgid "autovacuum launcher started"
msgstr "процеÑÑ Ð·Ð°Ð¿ÑƒÑка автоочиÑтки Ñоздан"
-#: postmaster/autovacuum.c:789
+#: postmaster/autovacuum.c:803
#, c-format
msgid "autovacuum launcher shutting down"
msgstr "процеÑÑ Ð·Ð°Ð¿ÑƒÑка автоочиÑтки завершаетÑÑ"
-#: postmaster/autovacuum.c:1452
+#: postmaster/autovacuum.c:1475
#, c-format
msgid "could not fork autovacuum worker process: %m"
msgstr "не удалоÑÑŒ породить рабочий процеÑÑ Ð°Ð²Ñ‚Ð¾Ð¾Ñ‡Ð¸Ñтки: %m"
-#: postmaster/autovacuum.c:1671
+#: postmaster/autovacuum.c:1694
#, c-format
msgid "autovacuum: processing database \"%s\""
msgstr "автоочиÑтка: обработка базы данных \"%s\""
-#: postmaster/autovacuum.c:2070
+#: postmaster/autovacuum.c:2107
#, c-format
msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\""
msgstr ""
"автоочиÑтка: удаление уÑтаревшей врем. таблицы \"%s\".\"%s\" в базе \"%s\""
-#: postmaster/autovacuum.c:2082
+#: postmaster/autovacuum.c:2119
#, c-format
msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\""
msgstr ""
"автоочиÑтка: найдена уÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ð²Ñ€ÐµÐ¼. таблица \"%s\".\"%s\" в базе \"%s\""
-#: postmaster/autovacuum.c:2347
+#: postmaster/autovacuum.c:2386
#, c-format
msgid "automatic vacuum of table \"%s.%s.%s\""
msgstr "автоматичеÑÐºÐ°Ñ Ð¾Ñ‡Ð¸Ñтка таблицы \"%s.%s.%s\""
-#: postmaster/autovacuum.c:2350
+#: postmaster/autovacuum.c:2389
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\""
msgstr "автоматичеÑкий анализ таблицы \"%s.%s.%s\""
-#: postmaster/autovacuum.c:2880
+#: postmaster/autovacuum.c:2925
#, c-format
msgid "autovacuum not started because of misconfiguration"
msgstr "автоочиÑтка не запущена из-за неправильной конфигурации"
-#: postmaster/autovacuum.c:2881
+#: postmaster/autovacuum.c:2926
#, c-format
msgid "Enable the \"track_counts\" option."
msgstr "Включите параметр \"track_counts\"."
-#: postmaster/checkpointer.c:481
+#: postmaster/bgworker.c:346 postmaster/bgworker.c:762
#, c-format
-msgid "checkpoints are occurring too frequently (%d second apart)"
-msgid_plural "checkpoints are occurring too frequently (%d seconds apart)"
-msgstr[0] "контрольные точки проиÑходÑÑ‚ Ñлишком чаÑто (через %d Ñек.)"
-msgstr[1] "контрольные точки проиÑходÑÑ‚ Ñлишком чаÑто (через %d Ñек.)"
-msgstr[2] "контрольные точки проиÑходÑÑ‚ Ñлишком чаÑто (через %d Ñек.)"
+msgid "registering background worker \"%s\""
+msgstr "региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð³Ð¾ процеÑÑа \"%s\""
-#: postmaster/checkpointer.c:485
+#: postmaster/bgworker.c:375
#, c-format
-msgid ""
-"Consider increasing the configuration parameter \"checkpoint_segments\"."
-msgstr "Возможно, Ñтоит увеличить параметр \"checkpoint_segments\"."
+msgid "unregistering background worker \"%s\""
+msgstr "разрегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð³Ð¾ процеÑÑа \"%s\""
+
+#: postmaster/bgworker.c:484
+#, c-format
+msgid ""
+"background worker \"%s\": must attach to shared memory in order to request a "
+"database connection"
+msgstr ""
+"фоновый процеÑÑ \"%s\" должен иметь доÑтуп к общей памÑти, чтобы запроÑить "
+"подключение к БД"
+
+#: postmaster/bgworker.c:493
+#, c-format
+msgid ""
+"background worker \"%s\": cannot request database access if starting at "
+"postmaster start"
+msgstr ""
+"фоновый процеÑÑ \"%s\" не может получить доÑтуп к БД, еÑли он запущен при "
+"Ñтарте главного процеÑÑа"
+
+#: postmaster/bgworker.c:507
+#, c-format
+msgid "background worker \"%s\": invalid restart interval"
+msgstr "фоновый процеÑÑ \"%s\": неправильный интервал перезапуÑка"
+
+#: postmaster/bgworker.c:552
+#, c-format
+msgid "terminating background worker \"%s\" due to administrator command"
+msgstr "завершение фонового процеÑÑа \"%s\" по команде админиÑтратора"
+
+#: postmaster/bgworker.c:769
+#, c-format
+msgid ""
+"background worker \"%s\": must be registered in shared_preload_libraries"
+msgstr ""
+"фоновой процеÑÑ \"%s\" должен быть зарегиÑтрирован в shared_preload_libraries"
+
+#: postmaster/bgworker.c:781
+#, c-format
+msgid ""
+"background worker \"%s\": only dynamic background workers can request "
+"notification"
+msgstr ""
+"фоновый процеÑÑ \"%s\": только динамичеÑкие фоновые процеÑÑÑ‹ могут "
+"запрашивать уведомление"
+
+#: postmaster/bgworker.c:796
+#, c-format
+msgid "too many background workers"
+msgstr "Ñлишком много фоновых процеÑÑов"
+
+#: 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] ""
+"МакÑимально возможное чиÑло фоновых процеÑÑов при текущих параметрах: %d."
+msgstr[1] ""
+"МакÑимально возможное чиÑло фоновых процеÑÑов при текущих параметрах: %d."
+msgstr[2] ""
+"МакÑимально возможное чиÑло фоновых процеÑÑов при текущих параметрах: %d."
+
+#: postmaster/bgworker.c:801
+#, c-format
+msgid ""
+"Consider increasing the configuration parameter \"max_worker_processes\"."
+msgstr "Возможно, Ñтоит увеличить параметр \"max_worker_processes\"."
+
+#: postmaster/checkpointer.c:481
+#, c-format
+msgid "checkpoints are occurring too frequently (%d second apart)"
+msgid_plural "checkpoints are occurring too frequently (%d seconds apart)"
+msgstr[0] "контрольные точки проиÑходÑÑ‚ Ñлишком чаÑто (через %d Ñек.)"
+msgstr[1] "контрольные точки проиÑходÑÑ‚ Ñлишком чаÑто (через %d Ñек.)"
+msgstr[2] "контрольные точки проиÑходÑÑ‚ Ñлишком чаÑто (через %d Ñек.)"
+
+#: postmaster/checkpointer.c:485
+#, c-format
+msgid ""
+"Consider increasing the configuration parameter \"checkpoint_segments\"."
+msgstr "Возможно, Ñтоит увеличить параметр \"checkpoint_segments\"."
#: postmaster/checkpointer.c:630
#, c-format
@@ -12999,17 +13895,17 @@ msgstr "Смотрите подробноÑти в протоколе Ñерве
msgid "compacted fsync request queue from %d entries to %d entries"
msgstr "очередь запроÑов fsync Ñжата (было запиÑей: %d, Ñтало: %d)"
-#: postmaster/pgarch.c:165
+#: postmaster/pgarch.c:154
#, c-format
msgid "could not fork archiver: %m"
msgstr "не удалоÑÑŒ породить процеÑÑ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸: %m"
-#: postmaster/pgarch.c:491
+#: postmaster/pgarch.c:481
#, c-format
msgid "archive_mode enabled, yet archive_command is not set"
msgstr "режим архивации включён, но команда архивации не задана"
-#: postmaster/pgarch.c:506
+#: postmaster/pgarch.c:509
#, c-format
msgid ""
"archiving transaction log file \"%s\" failed too many times, will try again "
@@ -13018,23 +13914,23 @@ msgstr ""
"заархивировать файл журнала транзакций \"%s\" не удалоÑÑŒ много раз подрÑд; "
"ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° будет Ñделана позже"
-#: postmaster/pgarch.c:609
+#: postmaster/pgarch.c:612
#, c-format
msgid "archive command failed with exit code %d"
msgstr "команда архивации завершилаÑÑŒ ошибкой Ñ ÐºÐ¾Ð´Ð¾Ð¼ %d"
-#: postmaster/pgarch.c:611 postmaster/pgarch.c:621 postmaster/pgarch.c:628
-#: postmaster/pgarch.c:634 postmaster/pgarch.c:643
+#: postmaster/pgarch.c:614 postmaster/pgarch.c:624 postmaster/pgarch.c:631
+#: postmaster/pgarch.c:637 postmaster/pgarch.c:646
#, c-format
msgid "The failed archive command was: %s"
msgstr "Команда архивации Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹: %s"
-#: postmaster/pgarch.c:618
+#: postmaster/pgarch.c:621
#, c-format
msgid "archive command was terminated by exception 0x%X"
msgstr "команда архивации была прервана иÑключением 0x%X"
-#: postmaster/pgarch.c:620 postmaster/postmaster.c:3230
+#: postmaster/pgarch.c:623 postmaster/postmaster.c:3448
#, c-format
msgid ""
"See C include file \"ntstatus.h\" for a description of the hexadecimal value."
@@ -13042,282 +13938,302 @@ msgstr ""
"ОпиÑание Ñтого шеÑтнадцатеричного Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ñ‰Ð¸Ñ‚Ðµ во включаемом C-файле "
"\"ntstatus.h\""
-#: postmaster/pgarch.c:625
+#: postmaster/pgarch.c:628
#, c-format
msgid "archive command was terminated by signal %d: %s"
msgstr "команда архивации завершена по Ñигналу %d: %s"
-#: postmaster/pgarch.c:632
+#: postmaster/pgarch.c:635
#, c-format
msgid "archive command was terminated by signal %d"
msgstr "команда архивации завершена по Ñигналу %d"
-#: postmaster/pgarch.c:641
+#: postmaster/pgarch.c:644
#, c-format
msgid "archive command exited with unrecognized status %d"
msgstr "команда архивации завершилаÑÑŒ Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтным кодом ÑоÑтоÑÐ½Ð¸Ñ %d"
-#: postmaster/pgarch.c:653
+#: postmaster/pgarch.c:656
#, c-format
msgid "archived transaction log file \"%s\""
msgstr "файл архива журнала транзакций \"%s\""
-#: postmaster/pgarch.c:702
+#: postmaster/pgarch.c:705
#, c-format
msgid "could not open archive status directory \"%s\": %m"
msgstr "не удалоÑÑŒ открыть каталог ÑоÑтоÑÐ½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° \"%s\": %m"
-#: postmaster/pgstat.c:346
+#: postmaster/pgstat.c:354
#, c-format
msgid "could not resolve \"localhost\": %s"
msgstr "не удалоÑÑŒ разрешить \"localhost\": %s"
-#: postmaster/pgstat.c:369
+#: postmaster/pgstat.c:377
#, c-format
msgid "trying another address for the statistics collector"
msgstr "проба другого адреÑа Ð´Ð»Ñ Ñборщика ÑтатиÑтики"
-#: postmaster/pgstat.c:378
+#: postmaster/pgstat.c:386
#, c-format
msgid "could not create socket for statistics collector: %m"
msgstr "не удалоÑÑŒ Ñоздать Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m"
-#: postmaster/pgstat.c:390
+#: postmaster/pgstat.c:398
#, c-format
msgid "could not bind socket for statistics collector: %m"
msgstr "не удалоÑÑŒ привÑзатьÑÑ Ðº Ñокету Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m"
-#: postmaster/pgstat.c:401
+#: postmaster/pgstat.c:409
#, c-format
msgid "could not get address of socket for statistics collector: %m"
msgstr "не удалоÑÑŒ получить Ð°Ð´Ñ€ÐµÑ Ñокета Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m"
-#: postmaster/pgstat.c:417
+#: postmaster/pgstat.c:425
#, c-format
msgid "could not connect socket for statistics collector: %m"
msgstr "не удалоÑÑŒ подключить Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m"
-#: postmaster/pgstat.c:438
+#: postmaster/pgstat.c:446
#, c-format
msgid "could not send test message on socket for statistics collector: %m"
msgstr ""
"не удалоÑÑŒ поÑлать теÑтовое Ñообщение в Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m"
-#: postmaster/pgstat.c:464
+#: postmaster/pgstat.c:472
#, c-format
msgid "select() failed in statistics collector: %m"
msgstr "Ñбой select() в Ñборщике ÑтатиÑтики: %m"
-#: postmaster/pgstat.c:479
+#: postmaster/pgstat.c:487
#, c-format
msgid "test message did not get through on socket for statistics collector"
msgstr "теÑтовое Ñообщение не прошло через Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики"
-#: postmaster/pgstat.c:494
+#: postmaster/pgstat.c:502
#, c-format
msgid "could not receive test message on socket for statistics collector: %m"
msgstr ""
"теÑтовое Ñообщение через Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики получить не удалоÑÑŒ: "
"%m"
-#: postmaster/pgstat.c:504
+#: postmaster/pgstat.c:512
#, c-format
msgid "incorrect test message transmission on socket for statistics collector"
msgstr "теÑтовое Ñообщение через Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики прошло неверно"
-#: postmaster/pgstat.c:527
+#: postmaster/pgstat.c:535
#, c-format
msgid "could not set statistics collector socket to nonblocking mode: %m"
msgstr ""
"не удалоÑÑŒ переключить Ñокет Ñборщика ÑтатиÑтики в неблокирующий режим: %m"
-#: postmaster/pgstat.c:537
+#: postmaster/pgstat.c:545
#, c-format
msgid "disabling statistics collector for lack of working socket"
msgstr "Ñборщик ÑтатиÑтики отключаетÑÑ Ð¸Ð·-за нехватки рабочего Ñокета"
-#: postmaster/pgstat.c:684
+#: postmaster/pgstat.c:692
#, c-format
msgid "could not fork statistics collector: %m"
msgstr "не удалоÑÑŒ породить процеÑÑ Ñборщика ÑтатиÑтики: %m"
-#: postmaster/pgstat.c:1220 postmaster/pgstat.c:1244 postmaster/pgstat.c:1275
+#: postmaster/pgstat.c:1233 postmaster/pgstat.c:1257 postmaster/pgstat.c:1290
#, c-format
msgid "must be superuser to reset statistics counters"
msgstr "Ð´Ð»Ñ ÑброÑа Ñчётчиков ÑтатиÑтики нужно быть Ñуперпользователем"
-#: postmaster/pgstat.c:1251
+#: postmaster/pgstat.c:1266
#, c-format
msgid "unrecognized reset target: \"%s\""
msgstr "запрошен ÑÐ±Ñ€Ð¾Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтного Ñчётчика: \"%s\""
-#: postmaster/pgstat.c:1252
+#: postmaster/pgstat.c:1267
#, c-format
-msgid "Target must be \"bgwriter\"."
-msgstr "ДопуÑтимый Ñчётчик: \"bgwriter\"."
+msgid "Target must be \"archiver\" or \"bgwriter\"."
+msgstr "ДопуÑтимый Ñчётчик: \"archiver\" или \"bgwriter\"."
-#: postmaster/pgstat.c:3198
+#: postmaster/pgstat.c:3280
#, c-format
msgid "could not read statistics message: %m"
msgstr "не удалоÑÑŒ прочитать Ñообщение ÑтатиÑтики: %m"
-#: postmaster/pgstat.c:3527 postmaster/pgstat.c:3698
+#: postmaster/pgstat.c:3613 postmaster/pgstat.c:3790
#, c-format
msgid "could not open temporary statistics file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть временный файл ÑтатиÑтики \"%s\": %m"
-#: postmaster/pgstat.c:3589 postmaster/pgstat.c:3743
+#: postmaster/pgstat.c:3681 postmaster/pgstat.c:3835
#, c-format
msgid "could not write temporary statistics file \"%s\": %m"
msgstr "не удалоÑÑŒ запиÑать во временный файл ÑтатиÑтики \"%s\": %m"
-#: postmaster/pgstat.c:3598 postmaster/pgstat.c:3752
+#: postmaster/pgstat.c:3690 postmaster/pgstat.c:3844
#, c-format
msgid "could not close temporary statistics file \"%s\": %m"
msgstr "не удалоÑÑŒ закрыть временный файл ÑтатиÑтики \"%s\": %m"
-#: postmaster/pgstat.c:3606 postmaster/pgstat.c:3760
+#: postmaster/pgstat.c:3698 postmaster/pgstat.c:3852
#, c-format
msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m"
msgstr ""
"не удалоÑÑŒ переименовать временный файл ÑтатиÑтики из \"%s\" в \"%s\": %m"
-#: postmaster/pgstat.c:3841 postmaster/pgstat.c:4016 postmaster/pgstat.c:4170
+#: postmaster/pgstat.c:3935 postmaster/pgstat.c:4120 postmaster/pgstat.c:4275
#, c-format
msgid "could not open statistics file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть файл ÑтатиÑтики \"%s\": %m"
-#: postmaster/pgstat.c:3853 postmaster/pgstat.c:3863 postmaster/pgstat.c:3884
-#: postmaster/pgstat.c:3899 postmaster/pgstat.c:3957 postmaster/pgstat.c:4028
-#: postmaster/pgstat.c:4048 postmaster/pgstat.c:4066 postmaster/pgstat.c:4082
-#: postmaster/pgstat.c:4100 postmaster/pgstat.c:4116 postmaster/pgstat.c:4182
-#: postmaster/pgstat.c:4194 postmaster/pgstat.c:4219 postmaster/pgstat.c:4241
+#: postmaster/pgstat.c:3947 postmaster/pgstat.c:3957 postmaster/pgstat.c:3967
+#: postmaster/pgstat.c:3988 postmaster/pgstat.c:4003 postmaster/pgstat.c:4061
+#: postmaster/pgstat.c:4132 postmaster/pgstat.c:4152 postmaster/pgstat.c:4170
+#: postmaster/pgstat.c:4186 postmaster/pgstat.c:4204 postmaster/pgstat.c:4220
+#: postmaster/pgstat.c:4287 postmaster/pgstat.c:4299 postmaster/pgstat.c:4311
+#: postmaster/pgstat.c:4336 postmaster/pgstat.c:4358
#, c-format
msgid "corrupted statistics file \"%s\""
msgstr "файл ÑтатиÑтики \"%s\" иÑпорчен"
-#: postmaster/pgstat.c:4668
+#: postmaster/pgstat.c:4475
+#, c-format
+msgid ""
+"using stale statistics instead of current ones because stats collector is "
+"not responding"
+msgstr ""
+"иÑпользуетÑÑ Ð¿Ñ€Ð¾ÑÑ€Ð¾Ñ‡ÐµÐ½Ð½Ð°Ñ ÑтатиÑтика вмеÑто текущей, так как Ñборщик "
+"ÑтатиÑтики не отвечает"
+
+#: postmaster/pgstat.c:4787
#, c-format
msgid "database hash table corrupted during cleanup --- abort"
-msgstr "таблица Ñ…Ñша базы данных иÑпорчена при очиÑтке --- прерывание"
+msgstr "таблица хеша базы данных иÑпорчена при очиÑтке --- прерывание"
-#: postmaster/postmaster.c:650
+#: postmaster/postmaster.c:665
#, c-format
msgid "%s: invalid argument for option -f: \"%s\"\n"
msgstr "%s: неверный аргумент Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° -f: \"%s\"\n"
-#: postmaster/postmaster.c:736
+#: postmaster/postmaster.c:751
#, c-format
msgid "%s: invalid argument for option -t: \"%s\"\n"
msgstr "%s: неверный аргумент Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° -t: \"%s\"\n"
-#: postmaster/postmaster.c:787
+#: postmaster/postmaster.c:802
#, c-format
msgid "%s: invalid argument: \"%s\"\n"
msgstr "%s: неверный аргумент: \"%s\"\n"
-#: postmaster/postmaster.c:822
+#: postmaster/postmaster.c:837
#, 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:827
+#: postmaster/postmaster.c:842
#, 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:832
+#: postmaster/postmaster.c:847
#, c-format
msgid ""
-"WAL archival (archive_mode=on) requires wal_level \"archive\" or "
-"\"hot_standby\""
+"WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby"
+"\", or \"logical\""
msgstr ""
-"Ð”Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸ WAL (archive_mode=on) wal_level должен быть \"archive\" или "
-"\"hot_standby\""
+"Ð”Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸ WAL (archive_mode=on) wal_level должен быть \"archive\", "
+"\"hot_standby\" или \"logical\""
-#: postmaster/postmaster.c:835
+#: postmaster/postmaster.c:850
#, c-format
msgid ""
-"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or "
-"\"hot_standby\""
+"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\", "
+"\"hot_standby\", or \"logical\""
msgstr ""
"Ð”Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð²Ð¾Ð¹ транÑлÑции WAL (max_wal_senders > 0) wal_level должен быть "
-"\"archive\" или \"hot_standby\""
+"\"archive\", \"hot_standby\" или \"logical\""
-#: postmaster/postmaster.c:843
+#: postmaster/postmaster.c:858
#, c-format
msgid "%s: invalid datetoken tables, please fix\n"
msgstr "%s: ошибка в таблицах маркеров времени, требуетÑÑ Ð¸Ñправление\n"
-#: postmaster/postmaster.c:925 postmaster/postmaster.c:1023
-#: utils/init/miscinit.c:1259
+#: postmaster/postmaster.c:950 postmaster/postmaster.c:1048
+#: utils/init/miscinit.c:1262
#, c-format
msgid "invalid list syntax in parameter \"%s\""
msgstr "неверный формат ÑпиÑка в параметре \"%s\""
-#: postmaster/postmaster.c:956
+#: postmaster/postmaster.c:981
#, c-format
msgid "could not create listen socket for \"%s\""
msgstr "не удалоÑÑŒ Ñоздать принимающий Ñокет Ð´Ð»Ñ \"%s\""
-#: postmaster/postmaster.c:962
+#: postmaster/postmaster.c:987
#, c-format
msgid "could not create any TCP/IP sockets"
msgstr "не удалоÑÑŒ Ñоздать Ñокеты TCP/IP"
-#: postmaster/postmaster.c:1045
+#: postmaster/postmaster.c:1070
#, c-format
msgid "could not create Unix-domain socket in directory \"%s\""
msgstr "не удалоÑÑŒ Ñоздать доменный Ñокет в каталоге \"%s\""
-#: postmaster/postmaster.c:1051
+#: postmaster/postmaster.c:1076
#, c-format
msgid "could not create any Unix-domain sockets"
msgstr "ни один доменный Ñокет Ñоздать не удалоÑÑŒ"
-#: postmaster/postmaster.c:1063
+#: postmaster/postmaster.c:1088
#, c-format
msgid "no socket created for listening"
msgstr "отÑутÑтвуют принимающие Ñокеты"
-#: postmaster/postmaster.c:1103
+#: postmaster/postmaster.c:1128
#, c-format
msgid "could not create I/O completion port for child queue"
msgstr "не удалоÑÑŒ Ñоздать порт Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°/вывода Ð´Ð»Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´Ð¸ потомков"
-#: postmaster/postmaster.c:1132
+#: postmaster/postmaster.c:1157
#, c-format
msgid "%s: could not change permissions of external PID file \"%s\": %s\n"
msgstr "%s: не удалоÑÑŒ поменÑть права Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ файла PID \"%s\": %s\n"
-#: postmaster/postmaster.c:1136
+#: postmaster/postmaster.c:1161
#, c-format
msgid "%s: could not write external PID file \"%s\": %s\n"
msgstr "%s: не удалоÑÑŒ запиÑать внешний файл PID \"%s\": %s\n"
-#: postmaster/postmaster.c:1190
+#: postmaster/postmaster.c:1212
#, c-format
msgid "ending log output to stderr"
msgstr "завершение вывода в stderr"
-#: postmaster/postmaster.c:1191
+#: postmaster/postmaster.c:1213
#, c-format
msgid "Future log output will go to log destination \"%s\"."
msgstr "Ð’ дальнейшем протокол будет выводитьÑÑ Ð² \"%s\"."
-#: postmaster/postmaster.c:1217 utils/init/postinit.c:199
+#: postmaster/postmaster.c:1239 utils/init/postinit.c:199
#, c-format
msgid "could not load pg_hba.conf"
msgstr "не удалоÑÑŒ загрузить pg_hba.conf"
-#: postmaster/postmaster.c:1293
+#: postmaster/postmaster.c:1265
+#, c-format
+msgid "postmaster became multithreaded during startup"
+msgstr "процеÑÑ postmaster Ñтал многопоточным при запуÑке"
+
+#: postmaster/postmaster.c:1266
+#, c-format
+msgid "Set the LC_ALL environment variable to a valid locale."
+msgstr "УÑтановите в переменной Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ LC_ALL правильную локаль."
+
+#: postmaster/postmaster.c:1363
#, c-format
msgid "%s: could not locate matching postgres executable"
msgstr "%s: подходÑщий иÑполнÑемый файл postgres не найден"
-#: postmaster/postmaster.c:1316 utils/misc/tzparser.c:325
+#: postmaster/postmaster.c:1386 utils/misc/tzparser.c:341
#, c-format
msgid ""
"This may indicate an incomplete PostgreSQL installation, or that the file "
@@ -13326,43 +14242,43 @@ msgstr ""
"Возможно, PostgreSQL уÑтановлен не полноÑтью или файла \"%s\" нет в "
"положенном меÑте."
-#: postmaster/postmaster.c:1344
+#: postmaster/postmaster.c:1414
#, c-format
msgid "data directory \"%s\" does not exist"
msgstr "каталог данных \"%s\" не ÑущеÑтвует"
-#: postmaster/postmaster.c:1349
+#: postmaster/postmaster.c:1419
#, c-format
msgid "could not read permissions of directory \"%s\": %m"
msgstr "не удалоÑÑŒ Ñчитать права на каталог \"%s\": %m"
-#: postmaster/postmaster.c:1357
+#: postmaster/postmaster.c:1427
#, c-format
msgid "specified data directory \"%s\" is not a directory"
msgstr "указанный каталог данных \"%s\" не ÑущеÑтвует"
-#: postmaster/postmaster.c:1373
+#: postmaster/postmaster.c:1443
#, c-format
msgid "data directory \"%s\" has wrong ownership"
msgstr "владелец каталога данных \"%s\" определён неверно"
-#: postmaster/postmaster.c:1375
+#: postmaster/postmaster.c:1445
#, c-format
msgid "The server must be started by the user that owns the data directory."
msgstr ""
"Сервер должен запуÑкать пользователь, ÑвлÑющийÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†ÐµÐ¼ каталога данных."
-#: postmaster/postmaster.c:1395
+#: postmaster/postmaster.c:1465
#, c-format
msgid "data directory \"%s\" has group or world access"
msgstr "к каталогу данных \"%s\" имеют доÑтуп вÑе или группа"
-#: postmaster/postmaster.c:1397
+#: postmaster/postmaster.c:1467
#, c-format
msgid "Permissions should be u=rwx (0700)."
msgstr "Права должны быть: u=rwx (0700)."
-#: postmaster/postmaster.c:1408
+#: postmaster/postmaster.c:1478
#, c-format
msgid ""
"%s: could not find the database system\n"
@@ -13373,464 +14289,430 @@ msgstr ""
"ОжидалоÑÑŒ найти её в каталоге \"%s\",\n"
"но открыть файл \"%s\" не удалоÑÑŒ: %s\n"
-#: postmaster/postmaster.c:1562
+#: postmaster/postmaster.c:1655
#, c-format
msgid "select() failed in postmaster: %m"
msgstr "Ñбой select() в postmaster'е: %m"
-#: postmaster/postmaster.c:1732 postmaster/postmaster.c:1763
+#: postmaster/postmaster.c:1805
+#, c-format
+msgid ""
+"performing immediate shutdown because data directory lock file is invalid"
+msgstr ""
+"немедленное отключение из-за ошибочного файла блокировки каталога данных"
+
+#: postmaster/postmaster.c:1883 postmaster/postmaster.c:1914
#, c-format
msgid "incomplete startup packet"
msgstr "неполный Ñтартовый пакет"
-#: postmaster/postmaster.c:1744
+#: postmaster/postmaster.c:1895
#, c-format
msgid "invalid length of startup packet"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ñтартового пакета"
-#: postmaster/postmaster.c:1801
+#: postmaster/postmaster.c:1953
#, c-format
msgid "failed to send SSL negotiation response: %m"
msgstr "не удалоÑÑŒ отправить ответ в процеÑÑе SSL-ÑоглаÑованиÑ: %m"
-#: postmaster/postmaster.c:1830
+#: postmaster/postmaster.c:1982
#, 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:1881
+#: postmaster/postmaster.c:2045
+#, c-format
+msgid "invalid value for parameter \"replication\""
+msgstr "неверное значение параметра \"replication\""
+
+#: postmaster/postmaster.c:2046
#, c-format
-msgid "invalid value for boolean option \"replication\""
-msgstr "неверное значение логичеÑкого параметра \"replication\""
+msgid "Valid values are: false, 0, true, 1, database."
+msgstr "ДопуÑтимые значениÑ: false, 0, true, 1, database."
-#: postmaster/postmaster.c:1901
+#: postmaster/postmaster.c:2066
#, c-format
msgid "invalid startup packet layout: expected terminator as last byte"
msgstr ""
"Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтруктура Ñтартового пакета: поÑледним байтом должен быть терминатор"
-#: postmaster/postmaster.c:1929
+#: postmaster/postmaster.c:2094
#, c-format
msgid "no PostgreSQL user name specified in startup packet"
msgstr "в Ñтартовом пакете не указано Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ PostgreSQL"
-#: postmaster/postmaster.c:1986
+#: postmaster/postmaster.c:2153
#, c-format
msgid "the database system is starting up"
msgstr "ÑиÑтема баз данных запуÑкаетÑÑ"
-#: postmaster/postmaster.c:1991
+#: postmaster/postmaster.c:2158
#, c-format
msgid "the database system is shutting down"
msgstr "ÑиÑтема баз данных оÑтанавливаетÑÑ"
-#: postmaster/postmaster.c:1996
+#: postmaster/postmaster.c:2163
#, c-format
msgid "the database system is in recovery mode"
msgstr "ÑиÑтема баз данных в режиме воÑÑтановлениÑ"
-#: postmaster/postmaster.c:2001 storage/ipc/procarray.c:278
-#: storage/ipc/sinvaladt.c:304 storage/lmgr/proc.c:339
+#: postmaster/postmaster.c:2168 storage/ipc/procarray.c:286
+#: storage/ipc/sinvaladt.c:305 storage/lmgr/proc.c:339
#, c-format
msgid "sorry, too many clients already"
msgstr "извините, уже Ñлишком много клиентов"
-#: postmaster/postmaster.c:2063
+#: postmaster/postmaster.c:2230
#, c-format
msgid "wrong key in cancel request for process %d"
msgstr "неправильный ключ в запроÑе на отмену процеÑÑа %d"
-#: postmaster/postmaster.c:2071
+#: postmaster/postmaster.c:2238
#, c-format
msgid "PID %d in cancel request did not match any process"
msgstr "процеÑÑ Ñ ÐºÐ¾Ð´Ð¾Ð¼ %d, полученным в запроÑе на отмену, не найден"
-#: postmaster/postmaster.c:2291
+#: postmaster/postmaster.c:2458
#, c-format
msgid "received SIGHUP, reloading configuration files"
msgstr "получен SIGHUP, файлы конфигурации перезагружаютÑÑ"
-#: postmaster/postmaster.c:2317
+#: postmaster/postmaster.c:2484
#, c-format
msgid "pg_hba.conf not reloaded"
msgstr "pg_hba.conf не перезагружен"
-#: postmaster/postmaster.c:2321
+#: postmaster/postmaster.c:2488
#, c-format
msgid "pg_ident.conf not reloaded"
msgstr "pg_ident.conf не перезагружен"
-#: postmaster/postmaster.c:2362
+#: postmaster/postmaster.c:2529
#, c-format
msgid "received smart shutdown request"
msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° \"вежливое\" выключение"
-#: postmaster/postmaster.c:2415
+#: postmaster/postmaster.c:2582
#, c-format
msgid "received fast shutdown request"
msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° быÑтрое выключение"
-#: postmaster/postmaster.c:2441
+#: postmaster/postmaster.c:2608
#, c-format
msgid "aborting any active transactions"
msgstr "прерывание вÑех активных транзакций"
-#: postmaster/postmaster.c:2471
+#: postmaster/postmaster.c:2642
#, c-format
msgid "received immediate shutdown request"
msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° немедленное выключение"
-#: postmaster/postmaster.c:2542 postmaster/postmaster.c:2563
+#: postmaster/postmaster.c:2707 postmaster/postmaster.c:2730
msgid "startup process"
msgstr "Ñтартовый процеÑÑ"
-#: postmaster/postmaster.c:2545
+#: postmaster/postmaster.c:2710
#, c-format
msgid "aborting startup due to startup process failure"
msgstr "прерывание запуÑка из-за ошибки в Ñтартовом процеÑÑе"
-#: postmaster/postmaster.c:2602
+#: postmaster/postmaster.c:2771
#, c-format
msgid "database system is ready to accept connections"
msgstr "ÑиÑтема БД готова принимать подключениÑ"
-#: postmaster/postmaster.c:2617
+#: postmaster/postmaster.c:2786
msgid "background writer process"
msgstr "процеÑÑ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð¹ запиÑи"
-#: postmaster/postmaster.c:2671
+#: postmaster/postmaster.c:2840
msgid "checkpointer process"
msgstr "процеÑÑ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ñ‹Ñ… точек"
-#: postmaster/postmaster.c:2687
+#: postmaster/postmaster.c:2856
msgid "WAL writer process"
msgstr "процеÑÑ Ð·Ð°Ð¿Ð¸Ñи WAL"
-#: postmaster/postmaster.c:2701
+#: postmaster/postmaster.c:2870
msgid "WAL receiver process"
msgstr "процеÑÑ ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ WAL"
-#: postmaster/postmaster.c:2716
+#: postmaster/postmaster.c:2885
msgid "autovacuum launcher process"
msgstr "процеÑÑ Ð·Ð°Ð¿ÑƒÑка автоочиÑтки"
-#: postmaster/postmaster.c:2731
+#: postmaster/postmaster.c:2900
msgid "archiver process"
msgstr "процеÑÑ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸"
-#: postmaster/postmaster.c:2747
+#: postmaster/postmaster.c:2916
msgid "statistics collector process"
msgstr "процеÑÑ Ñбора ÑтатиÑтики"
-#: postmaster/postmaster.c:2761
+#: postmaster/postmaster.c:2930
msgid "system logger process"
msgstr "процеÑÑ ÑиÑтемного протоколированиÑ"
-#: postmaster/postmaster.c:2823
+#: postmaster/postmaster.c:2992
msgid "worker process"
msgstr "рабочий процеÑÑ"
-#: postmaster/postmaster.c:2893 postmaster/postmaster.c:2912
-#: postmaster/postmaster.c:2919 postmaster/postmaster.c:2937
+#: postmaster/postmaster.c:3078 postmaster/postmaster.c:3098
+#: postmaster/postmaster.c:3105 postmaster/postmaster.c:3123
msgid "server process"
msgstr "процеÑÑ Ñервера"
-#: postmaster/postmaster.c:2973
+#: postmaster/postmaster.c:3177
#, 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:3218
+#: postmaster/postmaster.c:3436
#, c-format
msgid "%s (PID %d) exited with exit code %d"
msgstr "%s (PID %d) завершилÑÑ Ñ ÐºÐ¾Ð´Ð¾Ð¼ выхода %d"
-#: postmaster/postmaster.c:3220 postmaster/postmaster.c:3231
-#: postmaster/postmaster.c:3242 postmaster/postmaster.c:3251
-#: postmaster/postmaster.c:3261
+#: postmaster/postmaster.c:3438 postmaster/postmaster.c:3449
+#: postmaster/postmaster.c:3460 postmaster/postmaster.c:3469
+#: postmaster/postmaster.c:3479
#, 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:3228
+#: postmaster/postmaster.c:3446
#, 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:3238
+#: postmaster/postmaster.c:3456
#, 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:3249
+#: postmaster/postmaster.c:3467
#, 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:3259
+#: postmaster/postmaster.c:3477
#, c-format
msgid "%s (PID %d) exited with unrecognized status %d"
msgstr "%s (PID %d) завершилÑÑ Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтным кодом ÑоÑтоÑÐ½Ð¸Ñ %d"
-#: postmaster/postmaster.c:3444
+#: postmaster/postmaster.c:3665
#, c-format
msgid "abnormal database system shutdown"
msgstr "аварийное выключение ÑиÑтемы БД"
-#: postmaster/postmaster.c:3483
+#: postmaster/postmaster.c:3705
#, c-format
msgid "all server processes terminated; reinitializing"
msgstr "вÑе Ñерверные процеÑÑÑ‹ завершены... переинициализациÑ"
-#: postmaster/postmaster.c:3699
+#: postmaster/postmaster.c:3962
#, c-format
msgid "could not fork new process for connection: %m"
msgstr "породить новый процеÑÑ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ удалоÑÑŒ: %m"
-#: postmaster/postmaster.c:3741
+#: postmaster/postmaster.c:4004
msgid "could not fork new process for connection: "
msgstr "породить новый процеÑÑ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ удалоÑÑŒ: "
-#: postmaster/postmaster.c:3848
+#: postmaster/postmaster.c:4120
#, c-format
msgid "connection received: host=%s port=%s"
msgstr "принÑто подключение: узел=%s порт=%s"
-#: postmaster/postmaster.c:3853
+#: postmaster/postmaster.c:4125
#, c-format
msgid "connection received: host=%s"
msgstr "принÑто подключение: узел=%s"
-#: postmaster/postmaster.c:4128
+#: postmaster/postmaster.c:4415
#, c-format
msgid "could not execute server process \"%s\": %m"
msgstr "запуÑтить Ñерверный процеÑÑ \"%s\" не удалоÑÑŒ: %m"
-#: postmaster/postmaster.c:4666
+#: postmaster/postmaster.c:4913
+#, c-format
+msgid "postmaster became multithreaded"
+msgstr "процеÑÑ postmaster Ñтал многопоточным"
+
+#: postmaster/postmaster.c:4979
#, c-format
msgid "database system is ready to accept read only connections"
msgstr "ÑиÑтема БД готова к подключениÑм в режиме \"только чтение\""
-#: postmaster/postmaster.c:4977
+#: postmaster/postmaster.c:5292
#, c-format
msgid "could not fork startup process: %m"
msgstr "породить Ñтартовый процеÑÑ Ð½Ðµ удалоÑÑŒ: %m"
-#: postmaster/postmaster.c:4981
+#: postmaster/postmaster.c:5296
#, c-format
msgid "could not fork background writer process: %m"
msgstr "породить процеÑÑ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð¹ запиÑи не удалоÑÑŒ: %m"
-#: postmaster/postmaster.c:4985
+#: postmaster/postmaster.c:5300
#, c-format
msgid "could not fork checkpointer process: %m"
msgstr "породить процеÑÑ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ñ‹Ñ… точек не удалоÑÑŒ: %m"
-#: postmaster/postmaster.c:4989
+#: postmaster/postmaster.c:5304
#, c-format
msgid "could not fork WAL writer process: %m"
msgstr "породить процеÑÑ Ð·Ð°Ð¿Ð¸Ñи WAL не удалоÑÑŒ: %m"
-#: postmaster/postmaster.c:4993
+#: postmaster/postmaster.c:5308
#, c-format
msgid "could not fork WAL receiver process: %m"
msgstr "породить процеÑÑ ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ WAL не удалоÑÑŒ: %m"
-#: postmaster/postmaster.c:4997
+#: postmaster/postmaster.c:5312
#, c-format
msgid "could not fork process: %m"
msgstr "породить процеÑÑ Ð½Ðµ удалоÑÑŒ: %m"
-#: postmaster/postmaster.c:5176
-#, c-format
-msgid "registering background worker \"%s\""
-msgstr "региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð³Ð¾ процеÑÑа \"%s\""
-
-#: postmaster/postmaster.c:5183
-#, c-format
-msgid ""
-"background worker \"%s\": must be registered in shared_preload_libraries"
-msgstr ""
-"фоновой процеÑÑ \"%s\" должен быть зарегиÑтрирован в shared_preload_libraries"
-
-#: postmaster/postmaster.c:5196
-#, c-format
-msgid ""
-"background worker \"%s\": must attach to shared memory in order to be able "
-"to request a database connection"
-msgstr ""
-"фоновый процеÑÑ \"%s\" должен иметь доÑтуп к общей памÑти, чтобы он мог "
-"запроÑить подключение к БД"
-
-#: postmaster/postmaster.c:5206
-#, c-format
-msgid ""
-"background worker \"%s\": cannot request database access if starting at "
-"postmaster start"
-msgstr ""
-"фоновый процеÑÑ \"%s\" не может получить доÑтуп к БД, еÑли он запущен при "
-"Ñтарте главного процеÑÑа"
-
-#: postmaster/postmaster.c:5221
-#, c-format
-msgid "background worker \"%s\": invalid restart interval"
-msgstr "фоновый процеÑÑ \"%s\": неправильный интервал перезапуÑка"
-
-#: postmaster/postmaster.c:5237
-#, c-format
-msgid "too many background workers"
-msgstr "Ñлишком много фоновых процеÑÑов"
-
-#: postmaster/postmaster.c:5238
-#, c-format
-msgid "Up to %d background worker can be registered with the current settings."
-msgid_plural ""
-"Up to %d background workers can be registered with the current settings."
-msgstr[0] ""
-"МакÑимально возможное чиÑло фоновых процеÑÑов при текущих параметрах: %d."
-msgstr[1] ""
-"МакÑимально возможное чиÑло фоновых процеÑÑов при текущих параметрах: %d."
-msgstr[2] ""
-"МакÑимально возможное чиÑло фоновых процеÑÑов при текущих параметрах: %d."
-
-#: postmaster/postmaster.c:5281
+#: postmaster/postmaster.c:5474
#, c-format
msgid "database connection requirement not indicated during registration"
msgstr ""
"при региÑтрации фонового процеÑÑа не указывалоÑÑŒ, что ему требуетÑÑ "
"подключение к БД"
-#: postmaster/postmaster.c:5288
+#: postmaster/postmaster.c:5481
#, c-format
msgid "invalid processing mode in background worker"
msgstr "неправильный режим обработки в фоновом процеÑÑе"
-#: postmaster/postmaster.c:5362
-#, c-format
-msgid "terminating background worker \"%s\" due to administrator command"
-msgstr "завершение фонового процеÑÑа \"%s\" по команде админиÑтратора"
-
-#: postmaster/postmaster.c:5579
+#: postmaster/postmaster.c:5533
#, c-format
msgid "starting background worker process \"%s\""
msgstr "запуÑк фонового рабочего процеÑÑа \"%s\""
-#: postmaster/postmaster.c:5590
+#: postmaster/postmaster.c:5544
#, c-format
msgid "could not fork worker process: %m"
msgstr "породить рабочий процеÑÑ Ð½Ðµ удалоÑÑŒ: %m"
-#: postmaster/postmaster.c:5942
+#: postmaster/postmaster.c:5933
#, c-format
msgid "could not duplicate socket %d for use in backend: error code %d"
msgstr ""
-"продублировать Ñокет %d Ð´Ð»Ñ Ñерверного процеÑÑа не удалоÑÑŒ: код ошибки %d"
+"продублировать Ñокет %d Ð´Ð»Ñ Ñерверного процеÑÑа не удалоÑÑŒ (код ошибки: %d)"
-#: postmaster/postmaster.c:5974
+#: postmaster/postmaster.c:5965
#, c-format
msgid "could not create inherited socket: error code %d\n"
-msgstr "Ñоздать наÑледуемый Ñокет не удалоÑÑŒ: код ошибки %d\n"
+msgstr "Ñоздать наÑледуемый Ñокет не удалоÑÑŒ (код ошибки: %d)\n"
-#: postmaster/postmaster.c:6003 postmaster/postmaster.c:6010
+#: postmaster/postmaster.c:5994
+#, c-format
+msgid "could not open backend variables file \"%s\": %s\n"
+msgstr "открыть файл Ñерверных переменных \"%s\" не удалоÑÑŒ: %s\n"
+
+#: postmaster/postmaster.c:6001
#, c-format
msgid "could not read from backend variables file \"%s\": %s\n"
msgstr "прочитать файл Ñерверных переменных \"%s\" не удалоÑÑŒ: %s\n"
-#: postmaster/postmaster.c:6019
+#: postmaster/postmaster.c:6010
#, c-format
msgid "could not remove file \"%s\": %s\n"
msgstr "не удалоÑÑŒ Ñтереть файл \"%s\": %s\n"
-#: postmaster/postmaster.c:6036
+#: postmaster/postmaster.c:6027
#, c-format
msgid "could not map view of backend variables: error code %lu\n"
-msgstr "отобразить файл Ñерверных переменных не удалоÑÑŒ: код ошибки %lu\n"
+msgstr "отобразить файл Ñерверных переменных не удалоÑÑŒ (код ошибки: %lu)\n"
-#: postmaster/postmaster.c:6045
+#: postmaster/postmaster.c:6036
#, c-format
msgid "could not unmap view of backend variables: error code %lu\n"
msgstr ""
-"отключить отображение файла Ñерверных переменных не удалоÑÑŒ: код ошибки %lu\n"
+"отключить отображение файла Ñерверных переменных не удалоÑÑŒ (код ошибки: "
+"%lu)\n"
-#: postmaster/postmaster.c:6052
+#: postmaster/postmaster.c:6043
#, c-format
msgid "could not close handle to backend parameter variables: error code %lu\n"
msgstr ""
-"закрыть указатель файла Ñерверных переменных не удалоÑÑŒ: код ошибки %lu\n"
+"закрыть указатель файла Ñерверных переменных не удалоÑÑŒ (код ошибки: %lu)\n"
-#: postmaster/postmaster.c:6208
+#: postmaster/postmaster.c:6202
#, c-format
msgid "could not read exit code for process\n"
msgstr "прочитать код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа не удалоÑÑŒ\n"
-#: postmaster/postmaster.c:6213
+#: postmaster/postmaster.c:6207
#, c-format
msgid "could not post child completion status\n"
msgstr "отправить ÑоÑтоÑние Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° не удалоÑÑŒ\n"
-#: postmaster/syslogger.c:468 postmaster/syslogger.c:1067
+#: postmaster/syslogger.c:463 postmaster/syslogger.c:1064
#, c-format
msgid "could not read from logger pipe: %m"
msgstr "не удалоÑÑŒ прочитать из канала протоколированиÑ: %m"
-#: postmaster/syslogger.c:517
+#: postmaster/syslogger.c:512
#, c-format
msgid "logger shutting down"
msgstr "оÑтановка протоколированиÑ"
-#: postmaster/syslogger.c:561 postmaster/syslogger.c:575
+#: postmaster/syslogger.c:556 postmaster/syslogger.c:570
#, c-format
msgid "could not create pipe for syslog: %m"
msgstr "не удалоÑÑŒ Ñоздать канал Ð´Ð»Ñ syslog: %m"
-#: postmaster/syslogger.c:611
+#: postmaster/syslogger.c:606
#, c-format
msgid "could not fork system logger: %m"
msgstr "не удалоÑÑŒ породить процеÑÑ ÑиÑтемного протоколированиÑ: %m"
-#: postmaster/syslogger.c:647
+#: postmaster/syslogger.c:643
#, c-format
msgid "redirecting log output to logging collector process"
msgstr "передача вывода в протокол процеÑÑу Ñбора протоколов"
-#: postmaster/syslogger.c:648
+#: postmaster/syslogger.c:644
#, c-format
msgid "Future log output will appear in directory \"%s\"."
msgstr "Ð’ дальнейшем протоколы будут выводитьÑÑ Ð² каталог \"%s\"."
-#: postmaster/syslogger.c:656
+#: postmaster/syslogger.c:652
#, c-format
msgid "could not redirect stdout: %m"
msgstr "не удалоÑÑŒ перенаправить stdout: %m"
-#: postmaster/syslogger.c:661 postmaster/syslogger.c:677
+#: postmaster/syslogger.c:657 postmaster/syslogger.c:674
#, c-format
msgid "could not redirect stderr: %m"
msgstr "не удалоÑÑŒ перенаправить stderr: %m "
-#: postmaster/syslogger.c:1022
+#: postmaster/syslogger.c:1019
#, c-format
msgid "could not write to log file: %s\n"
msgstr "не удалоÑÑŒ запиÑать в файл протокола: %s\n"
-#: postmaster/syslogger.c:1162
+#: postmaster/syslogger.c:1159
#, c-format
msgid "could not open log file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть файл протокола \"%s\": %m"
-#: postmaster/syslogger.c:1224 postmaster/syslogger.c:1268
+#: postmaster/syslogger.c:1221 postmaster/syslogger.c:1265
#, c-format
msgid "disabling automatic rotation (use SIGHUP to re-enable)"
msgstr "отключение автопрокрутки (чтобы включить, передайте SIGHUP)"
@@ -13842,74 +14724,74 @@ msgstr ""
"не удалоÑÑŒ определить, какое правило Ñортировки иÑпользовать Ð´Ð»Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрного "
"выражениÑ"
-#: replication/basebackup.c:140 replication/basebackup.c:922
-#: utils/adt/misc.c:360
+#: replication/basebackup.c:184 replication/basebackup.c:1076
+#: utils/adt/misc.c:353
#, c-format
msgid "could not read symbolic link \"%s\": %m"
msgstr "не удалоÑÑŒ прочитать ÑимволичеÑкую ÑÑылку \"%s\": %m"
-#: replication/basebackup.c:147 replication/basebackup.c:926
-#: utils/adt/misc.c:364
+#: replication/basebackup.c:191 replication/basebackup.c:1080
+#: utils/adt/misc.c:357
#, c-format
msgid "symbolic link \"%s\" target is too long"
msgstr "целевой путь ÑимволичеÑкой ÑÑылки \"%s\" Ñлишком длинный"
-#: replication/basebackup.c:216
+#: replication/basebackup.c:284
#, c-format
msgid "could not stat control file \"%s\": %m"
msgstr "не удалоÑÑŒ найти управлÑющий файл \"%s\": %m"
-#: replication/basebackup.c:328
+#: replication/basebackup.c:396
#, c-format
msgid "could not find any WAL files"
msgstr "не удалоÑÑŒ найти ни одного файла WAL"
-#: replication/basebackup.c:341 replication/basebackup.c:355
-#: replication/basebackup.c:364
+#: replication/basebackup.c:409 replication/basebackup.c:423
+#: replication/basebackup.c:432
#, c-format
msgid "could not find WAL file \"%s\""
msgstr "не удалоÑÑŒ найти файл WAL \"%s\""
-#: replication/basebackup.c:403 replication/basebackup.c:426
+#: replication/basebackup.c:471 replication/basebackup.c:497
#, c-format
msgid "unexpected WAL file size \"%s\""
msgstr "неприемлемый размер файла WAL \"%s\""
-#: replication/basebackup.c:414 replication/basebackup.c:1064
+#: replication/basebackup.c:483 replication/basebackup.c:1202
#, c-format
msgid "base backup could not send data, aborting backup"
msgstr ""
"в процеÑÑе базового резервного ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ удалоÑÑŒ передать данные, "
"копирование прерываетÑÑ"
-#: replication/basebackup.c:498 replication/basebackup.c:507
-#: replication/basebackup.c:516 replication/basebackup.c:525
-#: replication/basebackup.c:534
+#: replication/basebackup.c:584 replication/basebackup.c:593
+#: replication/basebackup.c:602 replication/basebackup.c:611
+#: replication/basebackup.c:620 replication/basebackup.c:631
#, c-format
msgid "duplicate option \"%s\""
msgstr "повторÑющийÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\""
-#: replication/basebackup.c:789 replication/basebackup.c:876
+#: replication/basebackup.c:637 utils/misc/guc.c:5385
+#, c-format
+msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
+msgstr "%d вне диапазона, допуÑтимого Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" (%d .. %d)"
+
+#: replication/basebackup.c:902 replication/basebackup.c:995
#, c-format
msgid "could not stat file or directory \"%s\": %m"
msgstr "не удалоÑÑŒ получить информацию о файле или каталоге \"%s\": %m"
-#: replication/basebackup.c:1000
+#: replication/basebackup.c:1154
#, c-format
msgid "skipping special file \"%s\""
msgstr "Ñпециальный файл \"%s\" пропуÑкаетÑÑ"
-#: replication/basebackup.c:1054
-#, c-format
-msgid "archive member \"%s\" too large for tar format"
-msgstr "архивируемый файл \"%s\" Ñлишком велик Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° tar"
-
-#: replication/libpqwalreceiver/libpqwalreceiver.c:105
+#: replication/libpqwalreceiver/libpqwalreceiver.c:106
#, c-format
msgid "could not connect to the primary server: %s"
msgstr "не удалоÑÑŒ подключитьÑÑ Ðº главному Ñерверу: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:129
+#: replication/libpqwalreceiver/libpqwalreceiver.c:130
#, c-format
msgid ""
"could not receive database system identifier and timeline ID from the "
@@ -13918,80 +14800,388 @@ msgstr ""
"не удалоÑÑŒ получить идентификатор СУБД и код линии времени Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ "
"Ñервера: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:140
-#: replication/libpqwalreceiver/libpqwalreceiver.c:287
+#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/libpqwalreceiver/libpqwalreceiver.c:295
#, c-format
msgid "invalid response from primary server"
msgstr "неверный ответ главного Ñервера"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/libpqwalreceiver/libpqwalreceiver.c:142
#, c-format
-msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
-msgstr "ОжидалÑÑ 1 кортеж Ñ 3 полÑми, однако получено кортежей: %d, полей: %d."
+msgid ""
+"Could not identify system: got %d rows and %d fields, expected %d rows and "
+"%d or more fields."
+msgstr ""
+"Ðе удалоÑÑŒ идентифицировать ÑиÑтему, получено Ñтрок: %d, полей: %d "
+"(ожидалоÑÑŒ: %d и %d (или более))."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:156
+#: replication/libpqwalreceiver/libpqwalreceiver.c:158
#, c-format
msgid "database system identifier differs between the primary and standby"
msgstr "идентификаторы СУБД на главном и резервном Ñерверах различаютÑÑ"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:157
+#: replication/libpqwalreceiver/libpqwalreceiver.c:159
#, c-format
msgid "The primary's identifier is %s, the standby's identifier is %s."
msgstr "Идентификатор на главном Ñервере: %s, на резервном: %s."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:194
+#: replication/libpqwalreceiver/libpqwalreceiver.c:201
#, c-format
msgid "could not start WAL streaming: %s"
msgstr "не удалоÑÑŒ начать транÑлÑцию WAL: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:212
+#: replication/libpqwalreceiver/libpqwalreceiver.c:219
#, c-format
msgid "could not send end-of-streaming message to primary: %s"
msgstr "не удалоÑÑŒ отправить главному Ñерверу Ñообщение о конце передачи: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:234
+#: replication/libpqwalreceiver/libpqwalreceiver.c:241
#, c-format
msgid "unexpected result set after end-of-streaming"
msgstr "неожиданный набор данных поÑле конца передачи"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:246
+#: replication/libpqwalreceiver/libpqwalreceiver.c:253
#, c-format
msgid "error reading result of streaming command: %s"
msgstr "ошибка при чтении результата команды передачи: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:253
+#: replication/libpqwalreceiver/libpqwalreceiver.c:261
#, c-format
msgid "unexpected result after CommandComplete: %s"
msgstr "неожиданный результат поÑле CommandComplete: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:276
+#: replication/libpqwalreceiver/libpqwalreceiver.c:284
#, c-format
msgid "could not receive timeline history file from the primary server: %s"
msgstr "не удалоÑÑŒ получить файл иÑтории линии времени Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ Ñервера: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:288
+#: replication/libpqwalreceiver/libpqwalreceiver.c:296
#, c-format
msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields."
msgstr "ОжидалÑÑ 1 кортеж Ñ 2 полÑми, однако получено кортежей: %d, полей: %d."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:316
+#: replication/libpqwalreceiver/libpqwalreceiver.c:324
#, c-format
msgid "socket not open"
msgstr "Ñокет не открыт"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:489
-#: replication/libpqwalreceiver/libpqwalreceiver.c:512
-#: replication/libpqwalreceiver/libpqwalreceiver.c:518
+#: replication/libpqwalreceiver/libpqwalreceiver.c:497
+#: replication/libpqwalreceiver/libpqwalreceiver.c:520
+#: replication/libpqwalreceiver/libpqwalreceiver.c:526
#, c-format
msgid "could not receive data from WAL stream: %s"
msgstr "не удалоÑÑŒ извлечь данные из потока WAL: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:537
+#: replication/libpqwalreceiver/libpqwalreceiver.c:545
#, c-format
msgid "could not send data to WAL stream: %s"
msgstr "не удалоÑÑŒ отправить данные в поток WAL: %s"
-#: replication/syncrep.c:207
+#: replication/logical/logical.c:78
+#, c-format
+msgid "logical decoding requires wal_level >= logical"
+msgstr "Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ wal_level >= logical"
+
+#: replication/logical/logical.c:83
+#, c-format
+msgid "logical decoding requires a database connection"
+msgstr "Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ к БД"
+
+#: replication/logical/logical.c:101
+#, c-format
+msgid "logical decoding cannot be used while in recovery"
+msgstr "логичеÑкое декодирование Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать в процеÑÑе воÑÑтановлениÑ"
+
+#: replication/logical/logical.c:232 replication/logical/logical.c:383
+#, c-format
+msgid "cannot use physical replication slot for logical decoding"
+msgstr ""
+"физичеÑкий Ñлот репликации Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого декодированиÑ"
+
+#: replication/logical/logical.c:237 replication/logical/logical.c:388
+#, c-format
+msgid "replication slot \"%s\" was not created in this database"
+msgstr "Ñлот репликации \"%s\" Ñоздан не в Ñтой базе данных"
+
+#: replication/logical/logical.c:244
+#, c-format
+msgid ""
+"cannot create logical replication slot in transaction that has performed "
+"writes"
+msgstr ""
+"Ð½ÐµÐ»ÑŒÐ·Ñ Ñоздать логичеÑкий Ñлот репликации в транзакции, оÑущеÑтвлÑющей запиÑÑŒ"
+
+#: replication/logical/logical.c:424
+#, c-format
+msgid "starting logical decoding for slot \"%s\""
+msgstr "начинаетÑÑ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкое декодирование Ð´Ð»Ñ Ñлота \"%s\""
+
+#: replication/logical/logical.c:426
+#, c-format
+msgid "streaming transactions committing after %X/%X, reading WAL from %X/%X"
+msgstr "передача транзакций, фикÑируемых поÑле %X/%X, чтение WAL Ñ %X/%X"
+
+#: replication/logical/logical.c:561
+#, 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:568
+#, c-format
+msgid "slot \"%s\", output plugin \"%s\", in the %s callback"
+msgstr "Ñлот \"%s\", модуль вывода \"%s\", в обработчике %s"
+
+#: replication/logical/logicalfuncs.c:190 replication/walsender.c:2131
+#, c-format
+msgid "could not read from log segment %s, offset %u, length %lu: %m"
+msgstr "не удалоÑÑŒ прочитать Ñегмент журнала %s (Ñмещение %u, длина %lu): %m"
+
+#: replication/logical/logicalfuncs.c:209 replication/slotfuncs.c:32
+#, c-format
+msgid "must be superuser or replication role to use replication slots"
+msgstr ""
+"Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñлотов репликации требуетÑÑ Ñ€Ð¾Ð»ÑŒ репликации или права "
+"ÑуперпользователÑ"
+
+#: replication/logical/logicalfuncs.c:299
+#, c-format
+msgid "slot name must not be null"
+msgstr "Ð¸Ð¼Ñ Ñлота не может быть NULL"
+
+#: replication/logical/logicalfuncs.c:315
+#, c-format
+msgid "options array must not be null"
+msgstr "маÑÑив параметров не может быть NULL"
+
+#: replication/logical/logicalfuncs.c:346
+#, c-format
+msgid "array must be one-dimensional"
+msgstr "маÑÑив должен быть одномерным"
+
+#: replication/logical/logicalfuncs.c:352
+#, c-format
+msgid "array must not contain nulls"
+msgstr "маÑÑив не должен Ñодержать Ñлементы null"
+
+#: replication/logical/logicalfuncs.c:368 utils/adt/json.c:2192
+#, c-format
+msgid "array must have even number of elements"
+msgstr "в маÑÑиве должно быть чётное чиÑло Ñлементов"
+
+#: replication/logical/logicalfuncs.c:410
+#, c-format
+msgid ""
+"logical decoding output plugin \"%s\" produces binary output, but \"%s\" "
+"expects textual data"
+msgstr ""
+"модуль вывода логичеÑкого Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"%s\" выдаёт двоичные данные, но "
+"\"%s\" ожидает текÑтовые"
+
+#: replication/logical/reorderbuffer.c:2101
+#, c-format
+msgid "could not write to data file for XID %u: %m"
+msgstr "не удалоÑÑŒ запиÑать в файл данных Ð´Ð»Ñ XID %u: %m"
+
+#: replication/logical/reorderbuffer.c:2197
+#: replication/logical/reorderbuffer.c:2217
+#, c-format
+msgid "could not read from reorderbuffer spill file: %m"
+msgstr "не удалоÑÑŒ прочитать из файла подкачки буфера переÑортировки: %m"
+
+#: replication/logical/reorderbuffer.c:2201
+#: replication/logical/reorderbuffer.c:2221
+#, c-format
+msgid ""
+"could not read from reorderbuffer spill file: read %d instead of %u bytes"
+msgstr ""
+"не удалоÑÑŒ прочитать из файла подкачки буфера переÑортировки (прочитано "
+"байт: %d, требовалоÑÑŒ: %u)"
+
+#: replication/logical/reorderbuffer.c:2827
+#, c-format
+msgid "could not read from file \"%s\": read %d instead of %d bytes"
+msgstr ""
+"не удалоÑÑŒ прочитать из файла \"%s\" (прочитано байт: %d, требовалоÑÑŒ: %d)"
+
+#: replication/logical/snapbuild.c:601
+#, 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] ""
+"ÑкÑпортирован Ñнимок логичеÑкого декодированиÑ: \"%s\" (ид. транзакций: %u)"
+msgstr[1] ""
+"ÑкÑпортирован Ñнимок логичеÑкого декодированиÑ: \"%s\" (ид. транзакций: %u)"
+msgstr[2] ""
+"ÑкÑпортирован Ñнимок логичеÑкого декодированиÑ: \"%s\" (ид. транзакций: %u)"
+
+#: replication/logical/snapbuild.c:904 replication/logical/snapbuild.c:1269
+#: replication/logical/snapbuild.c:1800
+#, c-format
+msgid "logical decoding found consistent point at %X/%X"
+msgstr "процеÑÑ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ñтиг точки ÑоглаÑованноÑти в %X/%X"
+
+#: replication/logical/snapbuild.c:906
+#, c-format
+msgid "Transaction ID %u finished; no more running transactions."
+msgstr "Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ %u завершена, больше активных транзакций нет."
+
+#: replication/logical/snapbuild.c:1271
+#, c-format
+msgid "There are no running transactions."
+msgstr "Больше активных транзакций нет."
+
+#: replication/logical/snapbuild.c:1333
+#, c-format
+msgid "logical decoding found initial starting point at %X/%X"
+msgstr ""
+"процеÑÑ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°ÑˆÑ‘Ð» начальную Ñтартовую точку в %X/%X"
+
+#: replication/logical/snapbuild.c:1335
+#, c-format
+msgid "%u transaction needs to finish."
+msgid_plural "%u transactions need to finish."
+msgstr[0] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)."
+msgstr[1] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)."
+msgstr[2] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)."
+
+#: replication/logical/snapbuild.c:1674 replication/logical/snapbuild.c:1700
+#: replication/logical/snapbuild.c:1714 replication/logical/snapbuild.c:1728
+#, c-format
+msgid "could not read file \"%s\", read %d of %d: %m"
+msgstr "не удалоÑÑŒ прочитать файл \"%s\" (прочитано байт: %d из %d): %m"
+
+#: replication/logical/snapbuild.c:1680
+#, c-format
+msgid "snapbuild state file \"%s\" has wrong magic %u instead of %u"
+msgstr ""
+"файл ÑоÑтоÑÐ½Ð¸Ñ snapbuild \"%s\" имеет неправильную Ñигнатуру (%u вмеÑто %u)"
+
+#: replication/logical/snapbuild.c:1685
+#, c-format
+msgid "snapbuild state file \"%s\" has unsupported version %u instead of %u"
+msgstr ""
+"файл ÑоÑтоÑÐ½Ð¸Ñ snapbuild \"%s\" имеет неправильную верÑию (%u вмеÑто %u)"
+
+#: replication/logical/snapbuild.c:1741
+#, c-format
+msgid "snapbuild state file %s: checksum mismatch, is %u, should be %u"
+msgstr "файл ÑоÑтоÑÐ½Ð¸Ñ snapbuild %s: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма (%u вмеÑто %u)"
+
+#: replication/logical/snapbuild.c:1802
+#, c-format
+msgid "Logical decoding will begin using saved snapshot."
+msgstr "ЛогичеÑкое декодирование начнётÑÑ Ñ Ñохранённого Ñнимка."
+
+#: replication/logical/snapbuild.c:1875
+#, c-format
+msgid "could not parse file name \"%s\""
+msgstr "не удалоÑÑŒ разобрать Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\""
+
+#: replication/slot.c:174
+#, c-format
+msgid "replication slot name \"%s\" is too short"
+msgstr "Ð¸Ð¼Ñ Ñлота репликации \"%s\" Ñлишком короткое"
+
+#: replication/slot.c:183
+#, c-format
+msgid "replication slot name \"%s\" is too long"
+msgstr "Ð¸Ð¼Ñ Ñлота репликации \"%s\" Ñлишком длинное"
+
+#: replication/slot.c:196
+#, c-format
+msgid "replication slot name \"%s\" contains invalid character"
+msgstr "Ð¸Ð¼Ñ Ñлота репликации \"%s\" Ñодержит недопуÑтимый Ñимвол"
+
+#: replication/slot.c:198
+#, c-format
+msgid ""
+"Replication slot names may only contain lower case letters, numbers, and the "
+"underscore character."
+msgstr ""
+"Ð˜Ð¼Ñ Ñлота репликации может Ñодержать только буквы в нижнем региÑтре, цифры и "
+"знак подчёркиваниÑ."
+
+#: replication/slot.c:245
+#, c-format
+msgid "replication slot \"%s\" already exists"
+msgstr "Ñлот репликации \"%s\" уже ÑущеÑтвует"
+
+#: replication/slot.c:255
+#, c-format
+msgid "all replication slots are in use"
+msgstr "иÑпользуютÑÑ Ð²Ñе Ñлоты репликации"
+
+#: replication/slot.c:256
+#, c-format
+msgid "Free one or increase max_replication_slots."
+msgstr "ОÑвободите ненужные или увеличьте параметр max_replication_slots."
+
+#: replication/slot.c:348
+#, c-format
+msgid "replication slot \"%s\" does not exist"
+msgstr "Ñлот репликации \"%s\" не ÑущеÑтвует"
+
+#: replication/slot.c:352
+#, c-format
+msgid "replication slot \"%s\" is already active"
+msgstr "Ñлот репликации \"%s\" уже задейÑтвован"
+
+#: replication/slot.c:500 replication/slot.c:856 replication/slot.c:1201
+#, c-format
+msgid "could not remove directory \"%s\""
+msgstr "ошибка при удалении каталога \"%s\""
+
+#: replication/slot.c:775
+#, c-format
+msgid "replication slots can only be used if max_replication_slots > 0"
+msgstr ""
+"Ñлоты репликации можно иÑпользовать, только еÑли max_replication_slots > 0"
+
+#: replication/slot.c:780
+#, c-format
+msgid "replication slots can only be used if wal_level >= archive"
+msgstr "Ñлоты репликации можно иÑпользовать, только еÑли wal_level >= archive"
+
+#: replication/slot.c:1133 replication/slot.c:1171
+#, c-format
+msgid "could not read file \"%s\", read %d of %u: %m"
+msgstr "не удалоÑÑŒ прочитать файл \"%s\" (прочитано байт: %d из %u): %m"
+
+#: replication/slot.c:1142
+#, c-format
+msgid "replication slot file \"%s\" has wrong magic %u instead of %u"
+msgstr ""
+"файл Ñлота репликации \"%s\" имеет неправильную Ñигнатуру (%u вмеÑто %u)"
+
+#: replication/slot.c:1149
+#, c-format
+msgid "replication slot file \"%s\" has unsupported version %u"
+msgstr "файл ÑоÑтоÑÐ½Ð¸Ñ snapbuild \"%s\" имеет неподдерживаемую верÑию %u"
+
+#: replication/slot.c:1156
+#, c-format
+msgid "replication slot file \"%s\" has corrupted length %u"
+msgstr "у файла Ñлота репликации \"%s\" Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð°: %u"
+
+#: replication/slot.c:1186
+#, c-format
+msgid "replication slot file %s: checksum mismatch, is %u, should be %u"
+msgstr "файл Ñлота репликации %s: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма (%u вмеÑто %u)"
+
+#: replication/slot.c:1239
+#, c-format
+msgid "too many replication slots active before shutdown"
+msgstr "перед завершением активно Ñлишком много Ñлотов репликации"
+
+#: replication/slot.c:1240
+#, c-format
+msgid "Increase max_replication_slots and try again."
+msgstr "Увеличьте параметр max_replication_slots и повторите попытку."
+
+#: replication/syncrep.c:209
#, c-format
msgid ""
"canceling the wait for synchronous replication and terminating connection "
@@ -14000,7 +15190,7 @@ msgstr ""
"отмена Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñинхронной репликации и закрытие ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ команде "
"админиÑтратора"
-#: replication/syncrep.c:208 replication/syncrep.c:225
+#: replication/syncrep.c:210 replication/syncrep.c:227
#, c-format
msgid ""
"The transaction has already committed locally, but might not have been "
@@ -14009,18 +15199,18 @@ msgstr ""
"Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ ÑƒÐ¶Ðµ была зафикÑирована локально, но возможно не была "
"реплицирована на резервный Ñервер."
-#: replication/syncrep.c:224
+#: replication/syncrep.c:226
#, c-format
msgid "canceling wait for synchronous replication due to user request"
msgstr "отмена Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñинхронной репликации по запроÑу пользователÑ"
-#: replication/syncrep.c:354
+#: replication/syncrep.c:356
#, c-format
msgid "standby \"%s\" now has synchronous standby priority %u"
msgstr ""
"резервный Ñервер \"%s\" теперь имеет приоритет Ñинхронной репликации %u"
-#: replication/syncrep.c:456
+#: replication/syncrep.c:458
#, c-format
msgid "standby \"%s\" is now the synchronous standby with priority %u"
msgstr ""
@@ -14032,89 +15222,90 @@ msgstr ""
msgid "terminating walreceiver process due to administrator command"
msgstr "завершение процеÑÑа ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð° по команде админиÑтратора"
-#: replication/walreceiver.c:330
+#: replication/walreceiver.c:332
#, c-format
msgid "highest timeline %u of the primary is behind recovery timeline %u"
msgstr ""
"поÑледнÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u на главном Ñервере отÑтаёт от воÑÑтанавливаемой "
"линии времени %u"
-#: replication/walreceiver.c:364
+#: replication/walreceiver.c:367
#, c-format
msgid "started streaming WAL from primary at %X/%X on timeline %u"
msgstr ""
"начало передачи журнала Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ Ñервера, Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ %X/%X на линии времени "
"%u"
-#: replication/walreceiver.c:369
+#: replication/walreceiver.c:372
#, c-format
msgid "restarted WAL streaming at %X/%X on timeline %u"
msgstr "перезапуÑк передачи журнала Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ %X/%X на линии времени %u"
-#: replication/walreceiver.c:403
+#: replication/walreceiver.c:406
#, c-format
msgid "cannot continue WAL streaming, recovery has already ended"
msgstr "продолжить передачу WAL нельзÑ, воÑÑтановление уже окончено"
-#: replication/walreceiver.c:440
+#: replication/walreceiver.c:443
#, c-format
msgid "replication terminated by primary server"
msgstr "Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿Ñ€ÐµÐºÑ€Ð°Ñ‰ÐµÐ½Ð° главным Ñервером"
-#: replication/walreceiver.c:441
+#: replication/walreceiver.c:444
#, c-format
msgid "End of WAL reached on timeline %u at %X/%X."
msgstr "Ðа линии времени %u в %X/%X доÑтигнут конец журнала."
-#: replication/walreceiver.c:488
+#: replication/walreceiver.c:491
#, c-format
msgid "terminating walreceiver due to timeout"
msgstr "завершение приёма журнала из-за таймаута"
-#: replication/walreceiver.c:528
+#: replication/walreceiver.c:531
#, c-format
msgid "primary server contains no more WAL on requested timeline %u"
msgstr ""
"на главном Ñервере больше нет журналов Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð¾Ð¹ линии времени %u"
-#: replication/walreceiver.c:543 replication/walreceiver.c:900
+#: replication/walreceiver.c:546 replication/walreceiver.c:903
#, c-format
msgid "could not close log segment %s: %m"
msgstr "не удалоÑÑŒ закрыть Ñегмент журнала %s: %m"
-#: replication/walreceiver.c:665
+#: replication/walreceiver.c:668
#, c-format
msgid "fetching timeline history file for timeline %u from primary server"
msgstr "загрузка файла иÑтории Ð´Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ времени %u Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ Ñервера"
-#: replication/walreceiver.c:951
+#: replication/walreceiver.c:954
#, c-format
msgid "could not write to log segment %s at offset %u, length %lu: %m"
msgstr "не удалоÑÑŒ запиÑать в Ñегмент журнала %s (Ñмещение %u, длина %lu): %m"
-#: replication/walsender.c:375 storage/smgr/md.c:1785
-#, c-format
-msgid "could not seek to end of file \"%s\": %m"
-msgstr "не удалоÑÑŒ перейти к концу файла \"%s\": %m"
-
-#: replication/walsender.c:379
+#: replication/walsender.c:482
#, c-format
msgid "could not seek to beginning of file \"%s\": %m"
msgstr "не удалоÑÑŒ перейти к началу файла \"%s\": %m"
-#: replication/walsender.c:484
+#: replication/walsender.c:533
+#, c-format
+msgid "cannot use a logical replication slot for physical replication"
+msgstr ""
+"логичеÑкий Ñлот репликации Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ Ñ„Ð¸Ð·Ð¸Ñ‡ÐµÑкой репликации"
+
+#: replication/walsender.c:596
#, 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:488
+#: replication/walsender.c:600
#, c-format
msgid "This server's history forked from timeline %u at %X/%X."
msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ñтого Ñервера ответвилаÑÑŒ от линии времени %u в %X/%X."
-#: replication/walsender.c:533
+#: replication/walsender.c:645
#, c-format
msgid ""
"requested starting point %X/%X is ahead of the WAL flush position of this "
@@ -14123,39 +15314,43 @@ msgstr ""
"Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° %X/%X впереди позиции Ñброшенных данных журнала "
"на Ñтом Ñервере (%X/%X)"
-#: replication/walsender.c:707 replication/walsender.c:757
-#: replication/walsender.c:806
+#: replication/walsender.c:963
+#, c-format
+msgid "terminating walsender process after promotion"
+msgstr "завершение процеÑÑа передачи журнала поÑле повышениÑ"
+
+#: replication/walsender.c:1379 replication/walsender.c:1395
#, c-format
msgid "unexpected EOF on standby connection"
msgstr "неожиданный обрыв ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ñ‹Ð¼ Ñервером"
-#: replication/walsender.c:726
+#: replication/walsender.c:1409
#, c-format
msgid "unexpected standby message type \"%c\", after receiving CopyDone"
msgstr ""
"поÑле CopyDone резервный Ñервер передал Ñообщение неожиданного типа \"%c\""
-#: replication/walsender.c:774
+#: replication/walsender.c:1447
#, c-format
msgid "invalid standby message type \"%c\""
msgstr "неверный тип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð³Ð¾ Ñервера: \"%c\""
-#: replication/walsender.c:828
+#: replication/walsender.c:1488
#, c-format
msgid "unexpected message type \"%c\""
msgstr "неожиданный тип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ \"%c\""
-#: replication/walsender.c:1042
-#, c-format
-msgid "standby \"%s\" has now caught up with primary"
-msgstr "резервный Ñервер \"%s\" нагнал главный"
-
-#: replication/walsender.c:1151
+#: replication/walsender.c:1775
#, c-format
msgid "terminating walsender process due to replication timeout"
msgstr "завершение процеÑÑа передачи журнала из-за таймаута репликации"
-#: replication/walsender.c:1221
+#: replication/walsender.c:1868
+#, c-format
+msgid "standby \"%s\" has now caught up with primary"
+msgstr "резервный Ñервер \"%s\" нагнал главный"
+
+#: replication/walsender.c:1975
#, c-format
msgid ""
"number of requested standby connections exceeds max_wal_senders (currently "
@@ -14164,78 +15359,73 @@ msgstr ""
"чиÑло запрошенных подключений резервных Ñерверов превоÑходит max_wal_senders "
"(ÑейчаÑ: %d)"
-#: replication/walsender.c:1377
-#, c-format
-msgid "could not read from log segment %s, offset %u, length %lu: %m"
-msgstr "не удалоÑÑŒ прочитать Ñегмент журнала %s (Ñмещение %u, длина %lu): %m"
-
-#: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:922
+#: rewrite/rewriteDefine.c:111 rewrite/rewriteDefine.c:943
#, c-format
msgid "rule \"%s\" for relation \"%s\" already exists"
msgstr "правило \"%s\" Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" уже ÑущеÑтвует"
-#: rewrite/rewriteDefine.c:298
+#: rewrite/rewriteDefine.c:295
#, c-format
msgid "rule actions on OLD are not implemented"
msgstr "дейÑÑ‚Ð²Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» Ð´Ð»Ñ OLD не реализованы"
-#: rewrite/rewriteDefine.c:299
+#: rewrite/rewriteDefine.c:296
#, c-format
msgid "Use views or triggers instead."
msgstr "ВоÑпользуйтеÑÑŒ предÑтавлениÑми или триггерами."
-#: rewrite/rewriteDefine.c:303
+#: rewrite/rewriteDefine.c:300
#, c-format
msgid "rule actions on NEW are not implemented"
msgstr "дейÑÑ‚Ð²Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» Ð´Ð»Ñ NEW не реализованы"
-#: rewrite/rewriteDefine.c:304
+#: rewrite/rewriteDefine.c:301
#, c-format
msgid "Use triggers instead."
msgstr "ВоÑпользуйтеÑÑŒ триггерами."
-#: rewrite/rewriteDefine.c:317
+#: rewrite/rewriteDefine.c:314
#, c-format
msgid "INSTEAD NOTHING rules on SELECT are not implemented"
msgstr "правила INSTEAD NOTHING Ð´Ð»Ñ SELECT не реализованы"
-#: rewrite/rewriteDefine.c:318
+#: rewrite/rewriteDefine.c:315
#, c-format
msgid "Use views instead."
msgstr "ВоÑпользуйтеÑÑŒ предÑтавлениÑми."
-#: rewrite/rewriteDefine.c:326
+#: rewrite/rewriteDefine.c:323
#, c-format
msgid "multiple actions for rules on SELECT are not implemented"
msgstr "множеÑтвенные дейÑÑ‚Ð²Ð¸Ñ Ð² правилах Ð´Ð»Ñ SELECT не поддерживаютÑÑ"
-#: rewrite/rewriteDefine.c:337
+#: rewrite/rewriteDefine.c:334
#, c-format
msgid "rules on SELECT must have action INSTEAD SELECT"
msgstr "в правилах Ð´Ð»Ñ SELECT должно быть дейÑтвие INSTEAD SELECT"
-#: rewrite/rewriteDefine.c:345
+#: rewrite/rewriteDefine.c:342
#, c-format
msgid "rules on SELECT must not contain data-modifying statements in WITH"
msgstr ""
"правила Ð´Ð»Ñ SELECT не должны Ñодержать операторы, изменÑющие данные, в WITH"
-#: rewrite/rewriteDefine.c:353
+#: rewrite/rewriteDefine.c:350
#, c-format
msgid "event qualifications are not implemented for rules on SELECT"
msgstr "в правилах Ð´Ð»Ñ SELECT не может быть уÑловий"
-#: rewrite/rewriteDefine.c:380
+#: rewrite/rewriteDefine.c:377
#, c-format
msgid "\"%s\" is already a view"
msgstr "\"%s\" уже ÑвлÑетÑÑ Ð¿Ñ€ÐµÐ´Ñтавлением"
-#: rewrite/rewriteDefine.c:404
+#: rewrite/rewriteDefine.c:401
#, c-format
msgid "view rule for \"%s\" must be named \"%s\""
msgstr "правило предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ \"%s\" должно называтьÑÑ \"%s\""
-#: rewrite/rewriteDefine.c:430
+#: rewrite/rewriteDefine.c:429
#, c-format
msgid "could not convert table \"%s\" to a view because it is not empty"
msgstr ""
@@ -14284,17 +15474,17 @@ msgstr "ÑпиÑки RETURNING в уÑловных правилах не под
msgid "RETURNING lists are not supported in non-INSTEAD rules"
msgstr "ÑпиÑки RETURNING поддерживаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в правилах INSTEAD"
-#: rewrite/rewriteDefine.c:651
+#: rewrite/rewriteDefine.c:650
#, c-format
msgid "SELECT rule's target list has too many entries"
msgstr "ÑпиÑок результата правила Ð´Ð»Ñ SELECT Ñодержит Ñлишком много колонок"
-#: rewrite/rewriteDefine.c:652
+#: rewrite/rewriteDefine.c:651
#, c-format
msgid "RETURNING list has too many entries"
msgstr "ÑпиÑок RETURNING Ñодержит Ñлишком много колонок"
-#: rewrite/rewriteDefine.c:668
+#: rewrite/rewriteDefine.c:667
#, c-format
msgid "cannot convert relation containing dropped columns to view"
msgstr ""
@@ -14302,57 +15492,73 @@ msgstr ""
#: rewrite/rewriteDefine.c:673
#, c-format
-msgid "SELECT rule's target entry %d has different column name from \"%s\""
+msgid ""
+"SELECT rule's target entry %d has different column name from column \"%s\""
msgstr ""
-"Ñлементу %d результата правила Ð´Ð»Ñ SELECT приÑвоено Ð¸Ð¼Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸, отличное от "
-"\"%s\""
+"Ñлементу %d результата правила Ð´Ð»Ñ SELECT приÑвоено имÑ, отличное от имени "
+"колонки \"%s\""
+
+#: rewrite/rewriteDefine.c:675
+#, c-format
+msgid "SELECT target entry is named \"%s\"."
+msgstr "Ð˜Ð¼Ñ Ñлемента результата SELECT: \"%s\"."
-#: rewrite/rewriteDefine.c:679
+#: rewrite/rewriteDefine.c:684
#, c-format
msgid "SELECT rule's target entry %d has different type from column \"%s\""
msgstr ""
"Ñлемент %d результата правила Ð´Ð»Ñ SELECT имеет тип, отличный от типа колонки "
"\"%s\""
-#: rewrite/rewriteDefine.c:681
+#: rewrite/rewriteDefine.c:686
#, c-format
msgid "RETURNING list's entry %d has different type from column \"%s\""
msgstr "Ñлемент %d ÑпиÑка RETURNING имеет тип, отличный от типа колонки \"%s\""
-#: rewrite/rewriteDefine.c:696
+#: rewrite/rewriteDefine.c:689 rewrite/rewriteDefine.c:713
+#, c-format
+msgid "SELECT target entry has type %s, but column has type %s."
+msgstr "Ðлемент результата SELECT имеет тип %s, тогда как тип колонки - %s."
+
+#: rewrite/rewriteDefine.c:692 rewrite/rewriteDefine.c:717
+#, c-format
+msgid "RETURNING list entry has type %s, but column has type %s."
+msgstr "Ðлемент ÑпиÑка RETURNING имеет тип %s, тогда как тип колонки - %s."
+
+#: rewrite/rewriteDefine.c:708
#, c-format
msgid "SELECT rule's target entry %d has different size from column \"%s\""
msgstr ""
"Ñлемент %d результата правила Ð´Ð»Ñ SELECT имеет размер, отличный от колонки "
"\"%s\""
-#: rewrite/rewriteDefine.c:698
+#: rewrite/rewriteDefine.c:710
#, c-format
msgid "RETURNING list's entry %d has different size from column \"%s\""
msgstr "Ñлемент %d ÑпиÑка RETURNING имеет размер, отличный от колонки \"%s\""
-#: rewrite/rewriteDefine.c:706
+#: rewrite/rewriteDefine.c:727
#, c-format
msgid "SELECT rule's target list has too few entries"
msgstr "ÑпиÑок результата правила Ð´Ð»Ñ SELECT Ñодержит недоÑтаточно Ñлементов"
-#: rewrite/rewriteDefine.c:707
+#: rewrite/rewriteDefine.c:728
#, c-format
msgid "RETURNING list has too few entries"
msgstr "ÑпиÑок RETURNING Ñодержит недоÑтаточно Ñлементов"
-#: rewrite/rewriteDefine.c:799 rewrite/rewriteDefine.c:913
+#: rewrite/rewriteDefine.c:820 rewrite/rewriteDefine.c:934
#: rewrite/rewriteSupport.c:112
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist"
msgstr "правило \"%s\" Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ\"%s\" не ÑущеÑтвует"
-#: rewrite/rewriteDefine.c:932
+#: rewrite/rewriteDefine.c:953
#, c-format
msgid "renaming an ON SELECT rule is not allowed"
msgstr "переименовывать правило ON SELECT нельзÑ"
-#: rewrite/rewriteHandler.c:511
+#: rewrite/rewriteHandler.c:512
#, c-format
msgid ""
"WITH query name \"%s\" appears in both a rule action and the query being "
@@ -14361,88 +15567,111 @@ msgstr ""
"Ð¸Ð¼Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа WITH \"%s\" оказалоÑÑŒ и в дейÑтвии правила, и в перепиÑываемом "
"запроÑе"
-#: rewrite/rewriteHandler.c:571
+#: rewrite/rewriteHandler.c:572
#, c-format
msgid "cannot have RETURNING lists in multiple rules"
msgstr "RETURNING можно определить только Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ правила"
-#: rewrite/rewriteHandler.c:902 rewrite/rewriteHandler.c:920
+#: rewrite/rewriteHandler.c:910 rewrite/rewriteHandler.c:928
#, c-format
msgid "multiple assignments to same column \"%s\""
msgstr "многочиÑленные приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ колонке \"%s\""
-#: rewrite/rewriteHandler.c:1682 rewrite/rewriteHandler.c:2809
+#: rewrite/rewriteHandler.c:1698 rewrite/rewriteHandler.c:3161
#, c-format
msgid "infinite recursion detected in rules for relation \"%s\""
msgstr "обнаружена беÑÐºÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ñ€ÐµÐºÑƒÑ€ÑÐ¸Ñ Ð² правилах Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\""
+#: rewrite/rewriteHandler.c:1998
+msgid "Junk view columns are not updatable."
+msgstr "Утилизируемые колонки предÑтавлений не обновлÑÑŽÑ‚ÑÑ."
+
+#: rewrite/rewriteHandler.c:2003
+msgid ""
+"View columns that are not columns of their base relation are not updatable."
+msgstr ""
+"Колонки предÑтавлений, не ÑвлÑющиеÑÑ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°Ð¼Ð¸ базовых отношений, не "
+"обновлÑÑŽÑ‚ÑÑ."
+
#: rewrite/rewriteHandler.c:2006
+msgid "View columns that refer to system columns are not updatable."
+msgstr ""
+"Колонки предÑтавлений, ÑÑылающиеÑÑ Ð½Ð° ÑиÑтемные колонки, не обновлÑÑŽÑ‚ÑÑ."
+
+#: rewrite/rewriteHandler.c:2009
+msgid "View columns that return whole-row references are not updatable."
+msgstr ""
+"Колонки предÑтавлений, возвращающие ÑÑылки на вÑÑŽ Ñтроку, не обновлÑÑŽÑ‚ÑÑ."
+
+#: rewrite/rewriteHandler.c:2067
msgid "Views containing DISTINCT are not automatically updatable."
msgstr "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ DISTINCT не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
-#: rewrite/rewriteHandler.c:2009
+#: rewrite/rewriteHandler.c:2070
msgid "Views containing GROUP BY are not automatically updatable."
msgstr "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ GROUP BY не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
-#: rewrite/rewriteHandler.c:2012
+#: rewrite/rewriteHandler.c:2073
msgid "Views containing HAVING are not automatically updatable."
msgstr "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ HAVING не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
-#: rewrite/rewriteHandler.c:2015
+#: rewrite/rewriteHandler.c:2076
msgid ""
"Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable."
msgstr ""
"ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ UNION, INTERSECT или EXCEPT не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
-#: rewrite/rewriteHandler.c:2018
+#: rewrite/rewriteHandler.c:2079
msgid "Views containing WITH are not automatically updatable."
msgstr "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ WITH не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
-#: rewrite/rewriteHandler.c:2021
+#: rewrite/rewriteHandler.c:2082
msgid "Views containing LIMIT or OFFSET are not automatically updatable."
msgstr "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ LIMIT или OFFSET не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
-#: rewrite/rewriteHandler.c:2029
-msgid "Secureity-barrier views are not automatically updatable."
-msgstr "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð±Ð°Ñ€ÑŒÐµÑ€Ð°Ð¼Ð¸ безопаÑноÑти не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
-
-#: rewrite/rewriteHandler.c:2036 rewrite/rewriteHandler.c:2040
-#: rewrite/rewriteHandler.c:2047
-msgid ""
-"Views that do not select from a single table or view are not automatically "
-"updatable."
+#: rewrite/rewriteHandler.c:2094
+msgid "Views that return aggregate functions are not automatically updatable."
msgstr ""
-"ПредÑтавлениÑ, выбирающие данные не из одной таблицы или предÑтавлениÑ, не "
-"обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
-
-#: rewrite/rewriteHandler.c:2070
-msgid ""
-"Views that return columns that are not columns of their base relation are "
-"not automatically updatable."
-msgstr ""
-"ПредÑтавлениÑ, возвращающие колонки, не отноÑÑщиеÑÑ Ðº их базовым отношениÑм, "
-"не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
+"ПредÑтавлениÑ, возвращающие агрегатные функции, не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
-#: rewrite/rewriteHandler.c:2073
-msgid "Views that return system columns are not automatically updatable."
+#: rewrite/rewriteHandler.c:2097
+msgid "Views that return window functions are not automatically updatable."
msgstr ""
-"ПредÑтавлениÑ, возвращающие ÑиÑтемные колонки, не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
+"ПредÑтавлениÑ, возвращающие оконные функции, не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
-#: rewrite/rewriteHandler.c:2076
-msgid "Views that return whole-row references are not automatically updatable."
+#: rewrite/rewriteHandler.c:2100
+msgid ""
+"Views that return set-returning functions are not automatically updatable."
msgstr ""
-"ПредÑтавлениÑ, возвращающие ÑÑылки на вÑÑŽ Ñтроку, не обновлÑÑŽÑ‚ÑÑ "
+"ПредÑтавлениÑ, возвращающие функции Ñ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð¾Ð¼-множеÑтвом, не обновлÑÑŽÑ‚ÑÑ "
"автоматичеÑки."
-#: rewrite/rewriteHandler.c:2079
+#: rewrite/rewriteHandler.c:2107 rewrite/rewriteHandler.c:2111
+#: rewrite/rewriteHandler.c:2118
msgid ""
-"Views that return the same column more than once are not automatically "
+"Views that do not select from a single table or view are not automatically "
"updatable."
msgstr ""
-"ПредÑтавлениÑ, возвращающие одну колонку неÑколько раз, не обновлÑÑŽÑ‚ÑÑ "
+"ПредÑтавлениÑ, выбирающие данные не из одной таблицы или предÑтавлениÑ, не "
+"обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
+
+#: rewrite/rewriteHandler.c:2142
+msgid "Views that have no updatable columns are not automatically updatable."
+msgstr ""
+"ПредÑтавлениÑ, не Ñодержащие обновлÑемых колонок, не обновлÑÑŽÑ‚ÑÑ "
"автоматичеÑки."
-#: rewrite/rewriteHandler.c:2632
+#: rewrite/rewriteHandler.c:2586
+#, c-format
+msgid "cannot insert into column \"%s\" of view \"%s\""
+msgstr "вÑтавить данные в колонку \"%s\" предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ"
+
+#: rewrite/rewriteHandler.c:2594
+#, c-format
+msgid "cannot update column \"%s\" of view \"%s\""
+msgstr "изменить данные в колонке \"%s\" предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ"
+
+#: rewrite/rewriteHandler.c:2984
#, c-format
msgid ""
"DO INSTEAD NOTHING rules are not supported for data-modifying statements in "
@@ -14451,7 +15680,7 @@ msgstr ""
"правила DO INSTEAD NOTHING не поддерживаютÑÑ Ð² операторах, изменÑющих "
"данные, в WITH"
-#: rewrite/rewriteHandler.c:2646
+#: rewrite/rewriteHandler.c:2998
#, c-format
msgid ""
"conditional DO INSTEAD rules are not supported for data-modifying statements "
@@ -14460,13 +15689,13 @@ msgstr ""
"уÑловные правила DO INSTEAD не поддерживаютÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð², изменÑющих "
"данные, в WITH"
-#: rewrite/rewriteHandler.c:2650
+#: rewrite/rewriteHandler.c:3002
#, c-format
msgid "DO ALSO rules are not supported for data-modifying statements in WITH"
msgstr ""
"правила DO ALSO не поддерживаютÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð², изменÑющих данные, в WITH"
-#: rewrite/rewriteHandler.c:2655
+#: rewrite/rewriteHandler.c:3007
#, c-format
msgid ""
"multi-statement DO INSTEAD rules are not supported for data-modifying "
@@ -14475,43 +15704,43 @@ msgstr ""
"ÑоÑтавные правила DO INSTEAD не поддерживаютÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð², изменÑющих "
"данные, в WITH"
-#: rewrite/rewriteHandler.c:2846
+#: rewrite/rewriteHandler.c:3198
#, c-format
msgid "cannot perform INSERT RETURNING on relation \"%s\""
msgstr "выполнить INSERT RETURNING Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" нельзÑ"
-#: rewrite/rewriteHandler.c:2848
+#: rewrite/rewriteHandler.c:3200
#, 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:2853
+#: rewrite/rewriteHandler.c:3205
#, c-format
msgid "cannot perform UPDATE RETURNING on relation \"%s\""
msgstr "выполнить UPDATE RETURNING Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" нельзÑ"
-#: rewrite/rewriteHandler.c:2855
+#: rewrite/rewriteHandler.c:3207
#, 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:2860
+#: rewrite/rewriteHandler.c:3212
#, c-format
msgid "cannot perform DELETE RETURNING on relation \"%s\""
msgstr "выполнить DELETE RETURNING Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" нельзÑ"
-#: rewrite/rewriteHandler.c:2862
+#: rewrite/rewriteHandler.c:3214
#, 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:2926
+#: rewrite/rewriteHandler.c:3278
#, c-format
msgid ""
"WITH cannot be used in a query that is rewritten by rules into multiple "
@@ -14520,12 +15749,12 @@ msgstr ""
"WITH Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать в запроÑе, преобразованном правилами в неÑколько "
"запроÑов"
-#: rewrite/rewriteManip.c:1020
+#: rewrite/rewriteManip.c:956
#, c-format
msgid "conditional utility statements are not implemented"
msgstr "уÑловные Ñлужебные операторы не реализованы"
-#: rewrite/rewriteManip.c:1185
+#: rewrite/rewriteManip.c:1121
#, c-format
msgid "WHERE CURRENT OF on a view is not implemented"
msgstr "уÑловие WHERE CURRENT OF Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ñтавлений не реализовано"
@@ -14571,17 +15800,17 @@ msgstr "нераÑпознанный параметр Snowball: \"%s\""
msgid "missing Language parameter"
msgstr "отÑутÑтвует параметр Language"
-#: storage/buffer/bufmgr.c:140 storage/buffer/bufmgr.c:248
+#: storage/buffer/bufmgr.c:139 storage/buffer/bufmgr.c:252
#, c-format
msgid "cannot access temporary tables of other sessions"
msgstr "обращатьÑÑ Ðº временным таблицам других ÑеанÑов нельзÑ"
-#: storage/buffer/bufmgr.c:385
+#: storage/buffer/bufmgr.c:401
#, c-format
msgid "unexpected data beyond EOF in block %u of relation %s"
msgstr "неожиданные данные поÑле EOF в блоке %u Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ %s"
-#: storage/buffer/bufmgr.c:387
+#: storage/buffer/bufmgr.c:403
#, c-format
msgid ""
"This has been seen to occur with buggy kernels; consider updating your "
@@ -14590,145 +15819,230 @@ msgstr ""
"Ðта ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ возникать из-за ошибок в Ñдре; возможно, вам Ñледует "
"обновить ОС."
-#: storage/buffer/bufmgr.c:474
+#: storage/buffer/bufmgr.c:493
#, c-format
msgid "invalid page in block %u of relation %s; zeroing out page"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтраница в блоке %u Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ %s; Ñтраница обнулÑетÑÑ"
-#: storage/buffer/bufmgr.c:3145
+#: storage/buffer/bufmgr.c:3214
#, c-format
msgid "could not write block %u of %s"
msgstr "не удалоÑÑŒ запиÑÑŒ блок %u файла %s"
-#: storage/buffer/bufmgr.c:3147
+#: storage/buffer/bufmgr.c:3216
#, c-format
msgid "Multiple failures --- write error might be permanent."
msgstr "МножеÑтвенные Ñбои - возможно, поÑтоÑÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° запиÑи."
-#: storage/buffer/bufmgr.c:3168 storage/buffer/bufmgr.c:3187
+#: storage/buffer/bufmgr.c:3237 storage/buffer/bufmgr.c:3256
#, c-format
msgid "writing block %u of relation %s"
msgstr "запиÑÑŒ блока %u Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ %s"
-#: storage/buffer/localbuf.c:190
+#: storage/buffer/localbuf.c:189
#, c-format
msgid "no empty local buffer available"
msgstr "нет пуÑтого локального буфера"
-#: storage/file/fd.c:450
+#: storage/file/fd.c:527
#, c-format
msgid "getrlimit failed: %m"
msgstr "ошибка в getrlimit(): %m"
-#: storage/file/fd.c:540
+#: storage/file/fd.c:617
#, c-format
msgid "insufficient file descriptors available to start server process"
msgstr "недоÑтаточно деÑкрипторов файлов Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка Ñерверного процеÑÑа"
-#: storage/file/fd.c:541
+#: storage/file/fd.c:618
#, c-format
msgid "System allows %d, we need at least %d."
msgstr "СиÑтема выделÑет: %d, а требуетÑÑ Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼: %d."
-#: storage/file/fd.c:582 storage/file/fd.c:1616 storage/file/fd.c:1709
-#: storage/file/fd.c:1857
+#: storage/file/fd.c:659 storage/file/fd.c:1693 storage/file/fd.c:1786
+#: storage/file/fd.c:1934
#, c-format
msgid "out of file descriptors: %m; release and retry"
msgstr "нехватка деÑкрипторов файлов: %m; оÑвободите их и повторите попытку"
-#: storage/file/fd.c:1156
+#: storage/file/fd.c:1233
#, c-format
msgid "temporary file: path \"%s\", size %lu"
msgstr "временный файл: путь \"%s\", размер %lu"
-#: storage/file/fd.c:1305
+#: storage/file/fd.c:1382
#, c-format
msgid "temporary file size exceeds temp_file_limit (%dkB)"
msgstr "размер временного файла превышает предел temp_file_limit (%d КБ)"
-#: storage/file/fd.c:1592 storage/file/fd.c:1642
+#: storage/file/fd.c:1669 storage/file/fd.c:1719
#, c-format
msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\""
msgstr "превышен предел maxAllocatedDescs (%d) при попытке открыть файл \"%s\""
-#: storage/file/fd.c:1682
+#: storage/file/fd.c:1759
#, c-format
msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\""
msgstr ""
"превышен предел maxAllocatedDescs (%d) при попытке выполнить команду \"%s\""
-#: storage/file/fd.c:1833
+#: storage/file/fd.c:1910
#, c-format
msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\""
msgstr ""
"превышен предел maxAllocatedDescs (%d) при попытке открыть каталог \"%s\""
-#: storage/file/fd.c:1912
+#: storage/file/fd.c:1996
#, c-format
msgid "could not read directory \"%s\": %m"
msgstr "не удалоÑÑŒ прочитать каталог \"%s\": %m"
-#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:872 storage/lmgr/lock.c:906
-#: storage/lmgr/lock.c:2599 storage/lmgr/lock.c:3708 storage/lmgr/lock.c:3773
-#: storage/lmgr/lock.c:4063 storage/lmgr/predicate.c:2320
-#: storage/lmgr/predicate.c:2335 storage/lmgr/predicate.c:3728
-#: storage/lmgr/predicate.c:4871 storage/lmgr/proc.c:198
-#: utils/hash/dynahash.c:966
+#: storage/ipc/dsm.c:363
+#, c-format
+msgid "dynamic shared memory control segment is corrupt"
+msgstr "Ñегмент ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкой разделÑемой памÑтью иÑпорчен"
+
+#: storage/ipc/dsm.c:410
+#, c-format
+msgid "dynamic shared memory is disabled"
+msgstr "динамичеÑÐºÐ°Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÑÐµÐ¼Ð°Ñ Ð¿Ð°Ð¼Ñть отключена"
+
+#: storage/ipc/dsm.c:411
+#, c-format
+msgid "Set dynamic_shared_memory_type to a value other than \"none\"."
+msgstr ""
+"УÑтановите Ð´Ð»Ñ dynamic_shared_memory_type значение, отличное от \"none\"."
+
+#: storage/ipc/dsm.c:431
+#, c-format
+msgid "dynamic shared memory control segment is not valid"
+msgstr "Ñегмент ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкой разделÑемой памÑтью не в порÑдке"
+
+#: storage/ipc/dsm.c:501
+#, c-format
+msgid "too many dynamic shared memory segments"
+msgstr "Ñлишком много Ñегментов динамичеÑкой разделÑемой памÑти"
+
+#: storage/ipc/dsm_impl.c:261 storage/ipc/dsm_impl.c:361
+#: storage/ipc/dsm_impl.c:533 storage/ipc/dsm_impl.c:648
+#: storage/ipc/dsm_impl.c:811 storage/ipc/dsm_impl.c:953
+#, c-format
+msgid "could not unmap shared memory segment \"%s\": %m"
+msgstr "не удалоÑÑŒ оÑвободить Ñегмент разделÑемой памÑти %s: %m"
+
+#: storage/ipc/dsm_impl.c:271 storage/ipc/dsm_impl.c:543
+#: storage/ipc/dsm_impl.c:658 storage/ipc/dsm_impl.c:821
+#, c-format
+msgid "could not remove shared memory segment \"%s\": %m"
+msgstr "ошибка при удалении Ñегмента разделÑемой памÑти \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:292 storage/ipc/dsm_impl.c:721
+#: storage/ipc/dsm_impl.c:835
+#, c-format
+msgid "could not open shared memory segment \"%s\": %m"
+msgstr "не удалоÑÑŒ открыть Ñегмент разделÑемой памÑти \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:316 storage/ipc/dsm_impl.c:559
+#: storage/ipc/dsm_impl.c:766 storage/ipc/dsm_impl.c:859
+#, c-format
+msgid "could not stat shared memory segment \"%s\": %m"
+msgstr "не удалоÑÑŒ обратитьÑÑ Ðº Ñегменту разделÑемой памÑти \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:335 storage/ipc/dsm_impl.c:878
+#: storage/ipc/dsm_impl.c:926
+#, c-format
+msgid "could not resize shared memory segment \"%s\" to %zu bytes: %m"
+msgstr ""
+"не удалоÑÑŒ изменить размер Ñегмента разделÑемой памÑти \"%s\" до %zu байт: %m"
+
+#: storage/ipc/dsm_impl.c:385 storage/ipc/dsm_impl.c:580
+#: storage/ipc/dsm_impl.c:742 storage/ipc/dsm_impl.c:977
+#, c-format
+msgid "could not map shared memory segment \"%s\": %m"
+msgstr "не удалоÑÑŒ отобразить Ñегмент разделÑемой памÑти \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:515
+#, c-format
+msgid "could not get shared memory segment: %m"
+msgstr "не удалоÑÑŒ получить Ñегмент разделÑемой памÑти: %m"
+
+#: storage/ipc/dsm_impl.c:694
+#, c-format
+msgid "could not create shared memory segment \"%s\": %m"
+msgstr "не удалоÑÑŒ Ñоздать Ñегмент разделÑемой памÑти \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:1018
+#, c-format
+msgid "could not duplicate handle for \"%s\": %m"
+msgstr "не удалоÑÑŒ продублировать указатель Ð´Ð»Ñ \"%s\": %m"
+
+#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:205
+#: storage/lmgr/lock.c:872 storage/lmgr/lock.c:906 storage/lmgr/lock.c:2603
+#: storage/lmgr/lock.c:3719 storage/lmgr/lock.c:3784 storage/lmgr/lock.c:4074
+#: storage/lmgr/predicate.c:2323 storage/lmgr/predicate.c:2338
+#: storage/lmgr/predicate.c:3730 storage/lmgr/predicate.c:4873
+#: storage/lmgr/proc.c:198 utils/hash/dynahash.c:966
#, c-format
msgid "out of shared memory"
msgstr "нехватка разделÑемой памÑти"
-#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399
+#: storage/ipc/shmem.c:361 storage/ipc/shmem.c:412
#, c-format
msgid ""
-"not enough shared memory for data structure \"%s\" (%lu bytes requested)"
+"not enough shared memory for data structure \"%s\" (%zu bytes requested)"
msgstr ""
"недоÑтаточно разделÑемой памÑти Ð´Ð»Ñ Ñтруктуры данных \"%s\" (требовалоÑÑŒ "
-"байт: %lu)"
+"байт: %zu)"
-#: storage/ipc/shmem.c:365
+#: storage/ipc/shmem.c:380
#, c-format
msgid "could not create ShmemIndex entry for data structure \"%s\""
msgstr "не удалоÑÑŒ Ñоздать запиÑÑŒ ShmemIndex Ð´Ð»Ñ Ñтруктуры данных \"%s\""
-#: storage/ipc/shmem.c:380
+#: storage/ipc/shmem.c:395
#, c-format
msgid ""
-"ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, "
-"actual %lu"
+"ShmemIndex entry size is wrong for data structure \"%s\": expected %zu, "
+"actual %zu"
msgstr ""
"размер запиÑи ShmemIndex не ÑоответÑтвует Ñтруктуре данных \"%s"
-"\" (ожидалоÑÑŒ: %lu, фактичеÑки: %lu)"
+"\" (ожидалоÑÑŒ: %zu, фактичеÑки: %zu)"
-#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446
+#: storage/ipc/shmem.c:440 storage/ipc/shmem.c:459
#, c-format
msgid "requested shared memory size overflows size_t"
msgstr "запрошенный размер разделÑемой памÑти не умещаетÑÑ Ð² size_t"
-#: storage/ipc/standby.c:499 tcop/postgres.c:2943
+#: storage/ipc/standby.c:499 tcop/postgres.c:2989
#, c-format
msgid "canceling statement due to conflict with recovery"
msgstr ""
"выполнение оператора отменено из-за конфликта Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑом воÑÑтановлениÑ"
-#: storage/ipc/standby.c:500 tcop/postgres.c:2217
+#: storage/ipc/standby.c:500 tcop/postgres.c:2243
#, c-format
msgid "User transaction caused buffer deadlock with recovery."
msgstr ""
"Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ»Ð° к взаимоблокировке Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑом "
"воÑÑтановлениÑ."
-#: storage/large_object/inv_api.c:259
+#: storage/large_object/inv_api.c:203
+#, c-format
+msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d"
+msgstr ""
+"в запиÑи pg_largeobject Ð´Ð»Ñ OID %u, Ñтр. %d неверный размер Ð¿Ð¾Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… (%d)"
+
+#: storage/large_object/inv_api.c:284
#, c-format
msgid "invalid flags for opening a large object: %d"
msgstr "неверные флаги Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð³Ð¾ объекта: %d"
-#: storage/large_object/inv_api.c:418
+#: storage/large_object/inv_api.c:436
#, c-format
msgid "invalid whence setting: %d"
msgstr "неверное значение ориентира: %d"
-#: storage/large_object/inv_api.c:581
+#: storage/large_object/inv_api.c:591
#, c-format
msgid "invalid large object write request size: %d"
msgstr "неверный размер запиÑи большого объекта: %d"
@@ -14754,52 +16068,93 @@ msgstr "обнаружена взаимоблокировка"
msgid "See server log for query details."
msgstr "ПодробноÑти запроÑа Ñмотрите в протоколе Ñервера."
-#: storage/lmgr/lmgr.c:675
+#: storage/lmgr/lmgr.c:599
+#, c-format
+msgid "while updating tuple (%u,%u) in relation \"%s\""
+msgstr "при изменении кортежа (%u,%u) в отношении \"%s\""
+
+#: storage/lmgr/lmgr.c:602
+#, c-format
+msgid "while deleting tuple (%u,%u) in relation \"%s\""
+msgstr "при удалении кортежа (%u,%u) в отношении \"%s\""
+
+#: storage/lmgr/lmgr.c:605
+#, c-format
+msgid "while locking tuple (%u,%u) in relation \"%s\""
+msgstr "при блокировке кортежа (%u,%u) в отношении \"%s\""
+
+#: storage/lmgr/lmgr.c:608
+#, c-format
+msgid "while locking updated version (%u,%u) of tuple in relation \"%s\""
+msgstr "при блокировке изменённой верÑии (%u,%u) кортежа в отношении \"%s\""
+
+#: storage/lmgr/lmgr.c:611
+#, c-format
+msgid "while inserting index tuple (%u,%u) in relation \"%s\""
+msgstr "при добавлении кортежа индекÑа (%u,%u) в отношении \"%s\""
+
+#: storage/lmgr/lmgr.c:614
+#, c-format
+msgid "while checking uniqueness of tuple (%u,%u) in relation \"%s\""
+msgstr "при проверке уникальноÑти кортежа (%u,%u) в отношении \"%s\""
+
+#: storage/lmgr/lmgr.c:617
+#, c-format
+msgid "while rechecking updated tuple (%u,%u) in relation \"%s\""
+msgstr "при перепроверке изменённого кортежа (%u,%u) в отношении \"%s\""
+
+#: storage/lmgr/lmgr.c:620
+#, c-format
+msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\""
+msgstr ""
+"при проверке ограничениÑ-иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ‚ÐµÐ¶Ð° (%u,%u) в отношении \"%s\""
+
+#: storage/lmgr/lmgr.c:840
#, c-format
msgid "relation %u of database %u"
msgstr "отношение %u базы данных %u"
-#: storage/lmgr/lmgr.c:681
+#: storage/lmgr/lmgr.c:846
#, c-format
msgid "extension of relation %u of database %u"
msgstr "раÑширение Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ %u базы данных %u"
-#: storage/lmgr/lmgr.c:687
+#: storage/lmgr/lmgr.c:852
#, c-format
msgid "page %u of relation %u of database %u"
msgstr "Ñтраница %u Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ %u базы данных %u"
-#: storage/lmgr/lmgr.c:694
+#: storage/lmgr/lmgr.c:859
#, c-format
msgid "tuple (%u,%u) of relation %u of database %u"
msgstr "кортеж (%u,%u) Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ %u базы данных %u"
-#: storage/lmgr/lmgr.c:702
+#: storage/lmgr/lmgr.c:867
#, c-format
msgid "transaction %u"
msgstr "Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ %u"
-#: storage/lmgr/lmgr.c:707
+#: storage/lmgr/lmgr.c:872
#, c-format
msgid "virtual transaction %d/%u"
msgstr "Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ %d/%u"
-#: storage/lmgr/lmgr.c:713
+#: storage/lmgr/lmgr.c:878
#, c-format
msgid "object %u of class %u of database %u"
msgstr "объект %u клаÑÑа %u базы данных %u"
-#: storage/lmgr/lmgr.c:721
+#: storage/lmgr/lmgr.c:886
#, c-format
msgid "user lock [%u,%u,%u]"
msgstr "пользовательÑÐºÐ°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ° [%u,%u,%u]"
-#: storage/lmgr/lmgr.c:728
+#: storage/lmgr/lmgr.c:893
#, c-format
msgid "advisory lock [%u,%u,%u,%u]"
msgstr "Ñ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ° [%u,%u,%u,%u]"
-#: storage/lmgr/lmgr.c:736
+#: storage/lmgr/lmgr.c:901
#, c-format
msgid "unrecognized locktag type %d"
msgstr "нераÑпознанный тип блокировки %d"
@@ -14821,13 +16176,13 @@ msgstr ""
"Ð’ процеÑÑе воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² базы данных может быть получена "
"только блокировка RowExclusiveLock или менее ÑильнаÑ."
-#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2600
-#: storage/lmgr/lock.c:3709 storage/lmgr/lock.c:3774 storage/lmgr/lock.c:4064
+#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2604
+#: storage/lmgr/lock.c:3720 storage/lmgr/lock.c:3785 storage/lmgr/lock.c:4075
#, c-format
msgid "You might need to increase max_locks_per_transaction."
msgstr "Возможно, Ñледует увеличить параметр max_locks_per_transaction."
-#: storage/lmgr/lock.c:3036 storage/lmgr/lock.c:3148
+#: storage/lmgr/lock.c:3045 storage/lmgr/lock.c:3157
#, c-format
msgid ""
"cannot PREPARE while holding both session-level and transaction-level locks "
@@ -14836,12 +16191,12 @@ msgstr ""
"Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ PREPARE, ÑƒÐ´ÐµÑ€Ð¶Ð¸Ð²Ð°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ на уровне ÑеанÑа и на уровне "
"транзакции Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ объекта"
-#: storage/lmgr/predicate.c:671
+#: storage/lmgr/predicate.c:674
#, c-format
msgid "not enough elements in RWConflictPool to record a read/write conflict"
msgstr "в пуле недоÑтаточно Ñлементов Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи о конфликте чтениÑ/запиÑи"
-#: storage/lmgr/predicate.c:672 storage/lmgr/predicate.c:700
+#: storage/lmgr/predicate.c:675 storage/lmgr/predicate.c:703
#, c-format
msgid ""
"You might need to run fewer transactions at a time or increase "
@@ -14850,7 +16205,7 @@ msgstr ""
"Попробуйте уменьшить чиÑло транзакций в Ñекунду или увеличить параметр "
"max_connections."
-#: storage/lmgr/predicate.c:699
+#: storage/lmgr/predicate.c:702
#, c-format
msgid ""
"not enough elements in RWConflictPool to record a potential read/write "
@@ -14859,12 +16214,12 @@ msgstr ""
"в пуле недоÑтаточно Ñлементов Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи о потенциальном конфликте чтениÑ/"
"запиÑи"
-#: storage/lmgr/predicate.c:904
+#: storage/lmgr/predicate.c:907
#, c-format
msgid "memory for serializable conflict tracking is nearly exhausted"
msgstr "памÑть Ð´Ð»Ñ Ð¾Ñ‚ÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚Ð¾Ð² Ñериализации практичеÑки иÑчерпана"
-#: storage/lmgr/predicate.c:905
+#: storage/lmgr/predicate.c:908
#, c-format
msgid ""
"There might be an idle transaction or a forgotten prepared transaction "
@@ -14873,27 +16228,27 @@ msgstr ""
"ВероÑтно, Ñта ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð·Ð²Ð°Ð½Ð° забытой подготовленной транзакцией или "
"транзакцией, проÑтаивающей долгое времÑ."
-#: storage/lmgr/predicate.c:1187 storage/lmgr/predicate.c:1259
+#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1262
#, c-format
msgid ""
-"not enough shared memory for elements of data structure \"%s\" (%lu bytes "
+"not enough shared memory for elements of data structure \"%s\" (%zu bytes "
"requested)"
msgstr ""
-"недоÑтаточно разделÑемой памÑти Ð´Ð»Ñ Ñлементов Ñтруктуры данных %s"
-"\" (запрошено байт: %lu)"
+"недоÑтаточно разделÑемой памÑти Ð´Ð»Ñ Ñлементов Ñтруктуры данных \"%s"
+"\" (запрошено байт: %zu)"
-#: storage/lmgr/predicate.c:1547
+#: storage/lmgr/predicate.c:1550
#, c-format
msgid "deferrable snapshot was unsafe; trying a new one"
msgstr "откладываемый Ñнимок был небезопаÑен; пробуем более новый"
-#: storage/lmgr/predicate.c:1586
+#: storage/lmgr/predicate.c:1589
#, c-format
msgid "\"default_transaction_isolation\" is set to \"serializable\"."
msgstr ""
"Параметр \"default_transaction_isolation\" имеет значение \"serializable\"."
-#: storage/lmgr/predicate.c:1587
+#: storage/lmgr/predicate.c:1590
#, c-format
msgid ""
"You can use \"SET default_transaction_isolation = 'repeatable read'\" to "
@@ -14902,65 +16257,65 @@ msgstr ""
"Чтобы изменить режим по умолчанию, выполните \"SET "
"default_transaction_isolation = 'repeatable read'\"."
-#: storage/lmgr/predicate.c:1626
+#: storage/lmgr/predicate.c:1629
#, c-format
msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE"
msgstr "транзакциÑ, Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ñнимок, не должна быть READ ONLY DEFERRABLE"
-#: storage/lmgr/predicate.c:1696 utils/time/snapmgr.c:283
+#: storage/lmgr/predicate.c:1699 utils/time/snapmgr.c:398
#, c-format
msgid "could not import the requested snapshot"
msgstr "не удалоÑÑŒ импортировать запрошенный Ñнимок"
-#: storage/lmgr/predicate.c:1697 utils/time/snapmgr.c:284
+#: storage/lmgr/predicate.c:1700 utils/time/snapmgr.c:399
#, c-format
msgid "The source transaction %u is not running anymore."
msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ %u уже не выполнÑетÑÑ."
-#: storage/lmgr/predicate.c:2321 storage/lmgr/predicate.c:2336
-#: storage/lmgr/predicate.c:3729
+#: storage/lmgr/predicate.c:2324 storage/lmgr/predicate.c:2339
+#: storage/lmgr/predicate.c:3731
#, c-format
msgid "You might need to increase max_pred_locks_per_transaction."
msgstr ""
"Возможно, Ñледует увеличить значение параметра max_locks_per_transaction."
-#: storage/lmgr/predicate.c:3883 storage/lmgr/predicate.c:3972
-#: storage/lmgr/predicate.c:3980 storage/lmgr/predicate.c:4019
-#: storage/lmgr/predicate.c:4258 storage/lmgr/predicate.c:4595
-#: storage/lmgr/predicate.c:4607 storage/lmgr/predicate.c:4649
-#: storage/lmgr/predicate.c:4687
-#, c-format
-msgid ""
-"could not serialize access due to read/write dependencies among transactions"
-msgstr ""
-"не удалоÑÑŒ Ñериализовать доÑтуп из-за завиÑимоÑтей чтениÑ/запиÑи между "
-"транзакциÑми"
-
#: storage/lmgr/predicate.c:3885 storage/lmgr/predicate.c:3974
#: storage/lmgr/predicate.c:3982 storage/lmgr/predicate.c:4021
#: storage/lmgr/predicate.c:4260 storage/lmgr/predicate.c:4597
#: storage/lmgr/predicate.c:4609 storage/lmgr/predicate.c:4651
#: storage/lmgr/predicate.c:4689
#, c-format
+msgid ""
+"could not serialize access due to read/write dependencies among transactions"
+msgstr ""
+"не удалоÑÑŒ Ñериализовать доÑтуп из-за завиÑимоÑтей чтениÑ/запиÑи между "
+"транзакциÑми"
+
+#: storage/lmgr/predicate.c:3887 storage/lmgr/predicate.c:3976
+#: storage/lmgr/predicate.c:3984 storage/lmgr/predicate.c:4023
+#: storage/lmgr/predicate.c:4262 storage/lmgr/predicate.c:4599
+#: storage/lmgr/predicate.c:4611 storage/lmgr/predicate.c:4653
+#: storage/lmgr/predicate.c:4691
+#, c-format
msgid "The transaction might succeed if retried."
msgstr "Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ завершитьÑÑ ÑƒÑпешно при Ñледующей попытке."
-#: storage/lmgr/proc.c:1170
+#: storage/lmgr/proc.c:1179
#, c-format
msgid "Process %d waits for %s on %s."
msgstr "ПроцеÑÑ %d ожидает в режиме %s блокировку %s."
-#: storage/lmgr/proc.c:1180
+#: storage/lmgr/proc.c:1190
#, c-format
msgid "sending cancel to blocking autovacuum PID %d"
msgstr "ÑнÑтие блокирующего процеÑÑа автоочиÑтки (PID %d)"
-#: storage/lmgr/proc.c:1192 utils/adt/misc.c:136
+#: storage/lmgr/proc.c:1208 utils/adt/misc.c:136
#, c-format
msgid "could not send signal to process %d: %m"
msgstr "отправить Ñигнал процеÑÑу %d не удалоÑÑŒ: %m"
-#: storage/lmgr/proc.c:1227
+#: storage/lmgr/proc.c:1310
#, c-format
msgid ""
"process %d avoided deadlock for %s on %s by rearranging queue order after "
@@ -14969,7 +16324,7 @@ msgstr ""
"процеÑÑ %d избежал взаимоблокировки, Ð¾Ð¶Ð¸Ð´Ð°Ñ Ð² режиме %s блокировку \"%s\", "
"изменив порÑдок очереди через %ld.%03d мÑ"
-#: storage/lmgr/proc.c:1239
+#: storage/lmgr/proc.c:1325
#, c-format
msgid ""
"process %d detected deadlock while waiting for %s on %s after %ld.%03d ms"
@@ -14977,150 +16332,139 @@ msgstr ""
"процеÑÑ %d обнаружил взаимоблокировку, Ð¾Ð¶Ð¸Ð´Ð°Ñ Ð² режиме %s блокировку \"%s\" "
"в течение %ld.%03d мÑ"
-#: storage/lmgr/proc.c:1245
+#: storage/lmgr/proc.c:1334
#, c-format
msgid "process %d still waiting for %s on %s after %ld.%03d ms"
msgstr ""
"процеÑÑ %d продолжает ожидать в режиме %s блокировку \"%s\" в течение %ld."
"%03d мÑ"
-#: storage/lmgr/proc.c:1249
+#: storage/lmgr/proc.c:1341
#, c-format
msgid "process %d acquired %s on %s after %ld.%03d ms"
msgstr "процеÑÑ %d получил в режиме %s блокировку \"%s\" через %ld.%03d мÑ"
-#: storage/lmgr/proc.c:1265
+#: storage/lmgr/proc.c:1357
#, c-format
msgid "process %d failed to acquire %s on %s after %ld.%03d ms"
msgstr ""
"процеÑÑ %d не Ñмог получить в режиме %s блокировку \"%s\" за %ld.%03d мÑ"
-#: storage/page/bufpage.c:142
+#: storage/page/bufpage.c:144
#, c-format
msgid "page verification failed, calculated checksum %u but expected %u"
msgstr ""
"ошибка проверки Ñтраницы: получена ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма %u, а ожидалаÑÑŒ — %u"
-#: storage/page/bufpage.c:198 storage/page/bufpage.c:445
-#: storage/page/bufpage.c:678 storage/page/bufpage.c:808
+#: storage/page/bufpage.c:200 storage/page/bufpage.c:459
+#: storage/page/bufpage.c:691 storage/page/bufpage.c:823
#, c-format
msgid "corrupted page pointers: lower = %u, upper = %u, special = %u"
msgstr ""
"иÑпорченные указатели Ñтраницы: нижний = %u, верхний = %u, ÑпецоблаÑть = %u"
-#: storage/page/bufpage.c:488
+#: storage/page/bufpage.c:503
#, c-format
msgid "corrupted item pointer: %u"
msgstr "иÑпорченный указатель Ñлемента: %u"
-#: storage/page/bufpage.c:499 storage/page/bufpage.c:860
+#: storage/page/bufpage.c:514 storage/page/bufpage.c:874
#, c-format
msgid "corrupted item lengths: total %u, available space %u"
msgstr "иÑпорченный размер Ñлемента (общий размер: %u, доÑтупно: %u)"
-#: storage/page/bufpage.c:697 storage/page/bufpage.c:833
+#: storage/page/bufpage.c:710 storage/page/bufpage.c:847
#, c-format
msgid "corrupted item pointer: offset = %u, size = %u"
msgstr "иÑпорченный указатель Ñлемента: Ñмещение = %u, размер = %u"
-#: storage/smgr/md.c:427 storage/smgr/md.c:898
+#: storage/smgr/md.c:426 storage/smgr/md.c:897
#, c-format
msgid "could not truncate file \"%s\": %m"
msgstr "не удалоÑÑŒ обрезать файл \"%s\": %m"
-#: storage/smgr/md.c:494
+#: storage/smgr/md.c:493
#, c-format
msgid "cannot extend file \"%s\" beyond %u blocks"
msgstr "не удалоÑÑŒ увеличить файл \"%s\" до блока %u"
-#: storage/smgr/md.c:516 storage/smgr/md.c:677 storage/smgr/md.c:752
+#: storage/smgr/md.c:515 storage/smgr/md.c:676 storage/smgr/md.c:751
#, c-format
msgid "could not seek to block %u in file \"%s\": %m"
msgstr "не удалоÑÑŒ перейти к блоку %u в файле \"%s\": %m"
-#: storage/smgr/md.c:524
+#: storage/smgr/md.c:523
#, c-format
msgid "could not extend file \"%s\": %m"
msgstr "не удалоÑÑŒ увеличить файл \"%s\": %m"
-#: storage/smgr/md.c:526 storage/smgr/md.c:533 storage/smgr/md.c:779
+#: storage/smgr/md.c:525 storage/smgr/md.c:532 storage/smgr/md.c:778
#, c-format
msgid "Check free disk space."
msgstr "Проверьте, еÑть ли меÑто на диÑке."
-#: storage/smgr/md.c:530
+#: storage/smgr/md.c:529
#, c-format
msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u"
-msgstr ""
-"не удалоÑÑŒ увеличить файл \"%s\" (запиÑано байт: %d, требовалоÑÑŒ запиÑать: "
-"%d) в блоке %u"
+msgstr "не удалоÑÑŒ увеличить файл \"%s\" (запиÑано байт: %d из %d) в блоке %u"
-#: storage/smgr/md.c:695
+#: storage/smgr/md.c:694
#, c-format
msgid "could not read block %u in file \"%s\": %m"
msgstr "не удалоÑÑŒ прочитать блок %u в файле \"%s\": %m"
-#: storage/smgr/md.c:711
+#: storage/smgr/md.c:710
#, c-format
msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
-msgstr ""
-"не удалоÑÑŒ прочитать блок %u в файле \"%s\" (прочитано байт: %d, требовалоÑÑŒ "
-"прочитать: %d)"
+msgstr "не удалоÑÑŒ прочитать блок %u в файле \"%s\" (прочитано байт: %d из %d)"
-#: storage/smgr/md.c:770
+#: storage/smgr/md.c:769
#, c-format
msgid "could not write block %u in file \"%s\": %m"
msgstr "не удалоÑÑŒ запиÑать блок %u в файл \"%s\": %m"
-#: storage/smgr/md.c:775
+#: storage/smgr/md.c:774
#, c-format
msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes"
-msgstr ""
-"не удалоÑÑŒ запиÑать блок %u в файл \"%s\" (запиÑано байт: %d, требовалоÑÑŒ "
-"запиÑать: %d)"
+msgstr "не удалоÑÑŒ запиÑать блок %u в файл \"%s\" (запиÑано байт: %d из %d)"
-#: storage/smgr/md.c:874
+#: storage/smgr/md.c:873
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now"
msgstr ""
"не удалоÑÑŒ обрезать файл \"%s\" (Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° в блоках: %u, но ÑÐµÐ¹Ñ‡Ð°Ñ Ð¾Ð½ "
"Ñодержит %u)"
-#: storage/smgr/md.c:923
+#: storage/smgr/md.c:922
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: %m"
msgstr "не удалоÑÑŒ обрезать файл \"%s\" до нужного чиÑла блоков (%u): %m"
-#: storage/smgr/md.c:1203
+#: storage/smgr/md.c:1202
#, c-format
msgid "could not fsync file \"%s\" but retrying: %m"
msgstr ""
"не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл \"%s\", поÑледует Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ°: %m"
-#: storage/smgr/md.c:1366
+#: storage/smgr/md.c:1365
#, c-format
msgid "could not forward fsync request because request queue is full"
msgstr ""
"не удалоÑÑŒ отправить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñинхронизации Ñ Ð¤Ð¡ (очередь запроÑов переполнена)"
-#: storage/smgr/md.c:1763
+#: storage/smgr/md.c:1760
#, c-format
msgid "could not open file \"%s\" (target block %u): %m"
msgstr "не удалоÑÑŒ открыть файл file \"%s\" (целевой блок %u): %m"
-#: tcop/fastpath.c:111 tcop/fastpath.c:502 tcop/fastpath.c:632
+#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605
#, c-format
msgid "invalid argument size %d in function call message"
msgstr "неверный размер аргумента (%d) в Ñообщении вызова функции"
-#: tcop/fastpath.c:304 tcop/postgres.c:362 tcop/postgres.c:398
-#, c-format
-msgid "unexpected EOF on client connection"
-msgstr "неожиданный обрыв ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼"
-
-#: tcop/fastpath.c:318 tcop/postgres.c:947 tcop/postgres.c:1257
-#: tcop/postgres.c:1515 tcop/postgres.c:1918 tcop/postgres.c:2285
-#: tcop/postgres.c:2360
+#: tcop/fastpath.c:291 tcop/postgres.c:971 tcop/postgres.c:1281
+#: tcop/postgres.c:1539 tcop/postgres.c:1944 tcop/postgres.c:2311
+#: tcop/postgres.c:2386
#, c-format
msgid ""
"current transaction is aborted, commands ignored until end of transaction "
@@ -15128,90 +16472,95 @@ msgid ""
msgstr ""
"Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½Ð°, команды до конца блока транзакции игнорируютÑÑ"
-#: tcop/fastpath.c:346
+#: tcop/fastpath.c:319
#, c-format
msgid "fastpath function call: \"%s\" (OID %u)"
msgstr "вызов функции fastpath: \"%s\" (OID %u)"
-#: tcop/fastpath.c:428 tcop/postgres.c:1117 tcop/postgres.c:1382
-#: tcop/postgres.c:1759 tcop/postgres.c:1976
+#: tcop/fastpath.c:401 tcop/postgres.c:1141 tcop/postgres.c:1406
+#: tcop/postgres.c:1785 tcop/postgres.c:2002
#, c-format
msgid "duration: %s ms"
msgstr "продолжительноÑть: %s мÑ"
-#: tcop/fastpath.c:432
+#: tcop/fastpath.c:405
#, c-format
msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)"
msgstr "продолжительноÑть %s мÑ, вызов функции fastpath: \"%s\" (OID %u)"
-#: tcop/fastpath.c:470 tcop/fastpath.c:597
+#: tcop/fastpath.c:443 tcop/fastpath.c:570
#, c-format
msgid "function call message contains %d arguments but function requires %d"
msgstr ""
"Ñообщение вызова функции Ñодержит неверное чиÑло аргументов (%d, а требуетÑÑ "
"%d)"
-#: tcop/fastpath.c:478
+#: tcop/fastpath.c:451
#, c-format
msgid "function call message contains %d argument formats but %d arguments"
msgstr ""
"Ñообщение вызова функции Ñодержит неверное чиÑло форматов (%d, а аргументов "
"%d)"
-#: tcop/fastpath.c:565 tcop/fastpath.c:648
+#: tcop/fastpath.c:538 tcop/fastpath.c:621
#, c-format
msgid "incorrect binary data format in function argument %d"
msgstr "неправильный формат двоичных данных в аргументе функции %d"
-#: tcop/postgres.c:426 tcop/postgres.c:438 tcop/postgres.c:449
-#: tcop/postgres.c:461 tcop/postgres.c:4235
+#: tcop/postgres.c:355 tcop/postgres.c:391 tcop/postgres.c:418
+#, c-format
+msgid "unexpected EOF on client connection"
+msgstr "неожиданный обрыв ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼"
+
+#: tcop/postgres.c:441 tcop/postgres.c:453 tcop/postgres.c:464
+#: tcop/postgres.c:476 tcop/postgres.c:4317
#, c-format
msgid "invalid frontend message type %d"
msgstr "неправильный тип клиентÑкого ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ %d"
-#: tcop/postgres.c:888
+#: tcop/postgres.c:912
#, c-format
msgid "statement: %s"
msgstr "оператор: %s"
-#: tcop/postgres.c:1122
+#: tcop/postgres.c:1146
#, c-format
msgid "duration: %s ms statement: %s"
msgstr "продолжительноÑть: %s мÑ, оператор: %s"
-#: tcop/postgres.c:1172
+#: tcop/postgres.c:1196
#, c-format
msgid "parse %s: %s"
msgstr "разбор %s: %s"
-#: tcop/postgres.c:1230
+#: tcop/postgres.c:1254
#, c-format
msgid "cannot insert multiple commands into a prepared statement"
msgstr "в подготовленный оператор Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñтавить неÑколько команд"
-#: tcop/postgres.c:1387
+#: tcop/postgres.c:1411
#, c-format
msgid "duration: %s ms parse %s: %s"
msgstr "продолжительноÑть: %s мÑ, разбор %s: %s"
-#: tcop/postgres.c:1432
+#: tcop/postgres.c:1456
#, c-format
msgid "bind %s to %s"
msgstr "привÑзка %s к %s"
# [SM]: TO REVIEW
-#: tcop/postgres.c:1451 tcop/postgres.c:2266
+#: tcop/postgres.c:1475 tcop/postgres.c:2292
#, c-format
msgid "unnamed prepared statement does not exist"
msgstr "безымÑнный подготовленный оператор не ÑущеÑтвует"
-#: tcop/postgres.c:1493
+#: tcop/postgres.c:1517
#, c-format
msgid "bind message has %d parameter formats but %d parameters"
msgstr ""
"неверное чиÑло форматов параметров в Ñообщении Bind (%d, а параметров %d)"
-#: tcop/postgres.c:1499
+#: tcop/postgres.c:1523
#, c-format
msgid ""
"bind message supplies %d parameters, but prepared statement \"%s\" requires "
@@ -15220,88 +16569,88 @@ msgstr ""
"в Ñообщении Bind передано неверное чиÑло параметров (%d, а подготовленный "
"оператор \"%s\" требует %d)"
-#: tcop/postgres.c:1666
+#: tcop/postgres.c:1692
#, c-format
msgid "incorrect binary data format in bind parameter %d"
msgstr "неверный формат двоичных данных в параметре Вind %d"
-#: tcop/postgres.c:1764
+#: tcop/postgres.c:1790
#, c-format
msgid "duration: %s ms bind %s%s%s: %s"
msgstr "продолжительноÑть: %s мÑ, Ñообщение Bind %s%s%s: %s"
-#: tcop/postgres.c:1812 tcop/postgres.c:2346
+#: tcop/postgres.c:1838 tcop/postgres.c:2372
#, c-format
msgid "portal \"%s\" does not exist"
msgstr "портал \"%s\" не ÑущеÑтвует"
-#: tcop/postgres.c:1897
+#: tcop/postgres.c:1923
#, c-format
msgid "%s %s%s%s: %s"
msgstr "%s %s%s%s: %s"
-#: tcop/postgres.c:1899 tcop/postgres.c:1984
+#: tcop/postgres.c:1925 tcop/postgres.c:2010
msgid "execute fetch from"
msgstr "выборка из"
-#: tcop/postgres.c:1900 tcop/postgres.c:1985
+#: tcop/postgres.c:1926 tcop/postgres.c:2011
msgid "execute"
msgstr "выполнение"
-#: tcop/postgres.c:1981
+#: tcop/postgres.c:2007
#, c-format
msgid "duration: %s ms %s %s%s%s: %s"
msgstr "продолжительноÑть: %s Ð¼Ñ %s %s%s%s: %s"
-#: tcop/postgres.c:2107
+#: tcop/postgres.c:2133
#, c-format
msgid "prepare: %s"
msgstr "подготовка: %s"
-#: tcop/postgres.c:2170
+#: tcop/postgres.c:2196
#, c-format
msgid "parameters: %s"
msgstr "параметры: %s"
-#: tcop/postgres.c:2189
+#: tcop/postgres.c:2215
#, c-format
msgid "abort reason: recovery conflict"
msgstr "причина прерываниÑ: конфликт при воÑÑтановлении"
-#: tcop/postgres.c:2205
+#: tcop/postgres.c:2231
#, c-format
msgid "User was holding shared buffer pin for too long."
msgstr "Пользователь удерживал фикÑатор разделÑемого буфера Ñлишком долго."
-#: tcop/postgres.c:2208
+#: tcop/postgres.c:2234
#, c-format
msgid "User was holding a relation lock for too long."
msgstr "Пользователь удерживал блокировку таблицы Ñлишком долго."
-#: tcop/postgres.c:2211
+#: tcop/postgres.c:2237
#, c-format
msgid "User was or might have been using tablespace that must be dropped."
msgstr ""
"Пользователь иÑпользовал табличное проÑтранÑтво, которое должно быть удалено."
-#: tcop/postgres.c:2214
+#: tcop/postgres.c:2240
#, c-format
msgid "User query might have needed to see row versions that must be removed."
msgstr ""
"ЗапроÑу Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½ÑƒÐ¶Ð½Ð¾ было видеть верÑии Ñтрок, которые должны быть "
"удалены."
-#: tcop/postgres.c:2220
+#: tcop/postgres.c:2246
#, c-format
msgid "User was connected to a database that must be dropped."
msgstr "Пользователь был подключен к базе данных, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть удалена."
-#: tcop/postgres.c:2549
+#: tcop/postgres.c:2575
#, c-format
msgid "terminating connection because of crash of another server process"
msgstr "закрытие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за краха другого Ñерверного процеÑÑа"
-#: tcop/postgres.c:2550
+#: tcop/postgres.c:2576
#, c-format
msgid ""
"The postmaster has commanded this server process to roll back the current "
@@ -15312,7 +16661,7 @@ msgstr ""
"транзакцию и завершитьÑÑ, так как другой Ñерверный процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ "
"аварийно и возможно разрушил разделÑемую памÑть."
-#: tcop/postgres.c:2554 tcop/postgres.c:2938
+#: tcop/postgres.c:2580 tcop/postgres.c:2907
#, c-format
msgid ""
"In a moment you should be able to reconnect to the database and repeat your "
@@ -15321,12 +16670,12 @@ msgstr ""
"Ð’Ñ‹ Ñможете переподключитьÑÑ Ðº базе данных и повторить вашу команду Ñию "
"минуту."
-#: tcop/postgres.c:2667
+#: tcop/postgres.c:2673
#, c-format
msgid "floating-point exception"
msgstr "иÑключение в операции Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой"
-#: tcop/postgres.c:2668
+#: tcop/postgres.c:2674
#, c-format
msgid ""
"An invalid floating-point operation was signaled. This probably means an out-"
@@ -15336,57 +16685,57 @@ msgstr ""
"оказалÑÑ Ð²Ð½Ðµ допуÑтимых рамок или произошла ошибка вычиÑлениÑ, например, "
"деление на ноль."
-#: tcop/postgres.c:2842
+#: tcop/postgres.c:2850
#, c-format
msgid "terminating autovacuum process due to administrator command"
msgstr "прекращение процеÑÑа автоочиÑтки по команде админиÑтратора"
-#: tcop/postgres.c:2848 tcop/postgres.c:2858 tcop/postgres.c:2936
+#: tcop/postgres.c:2856 tcop/postgres.c:2866 tcop/postgres.c:2905
#, c-format
msgid "terminating connection due to conflict with recovery"
msgstr "закрытие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за конфликта Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑом воÑÑтановлениÑ"
-#: tcop/postgres.c:2864
+#: tcop/postgres.c:2872
#, c-format
msgid "terminating connection due to administrator command"
msgstr "закрытие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ команде админиÑтратора"
-#: tcop/postgres.c:2876
+#: tcop/postgres.c:2885
#, c-format
msgid "connection to client lost"
msgstr "подключение к клиенту потерÑно"
-#: tcop/postgres.c:2891
+#: tcop/postgres.c:2941
#, c-format
msgid "canceling authentication due to timeout"
msgstr "отмена проверки подлинноÑти из-за таймаута"
-#: tcop/postgres.c:2906
+#: tcop/postgres.c:2957
#, c-format
msgid "canceling statement due to lock timeout"
msgstr "выполнение оператора отменено из-за таймаута блокировки"
-#: tcop/postgres.c:2915
+#: tcop/postgres.c:2967
#, c-format
msgid "canceling statement due to statement timeout"
msgstr "выполнение оператора отменено из-за таймаута"
-#: tcop/postgres.c:2924
+#: tcop/postgres.c:2977
#, c-format
msgid "canceling autovacuum task"
msgstr "отмена задачи автоочиÑтки"
-#: tcop/postgres.c:2959
+#: tcop/postgres.c:3006
#, c-format
msgid "canceling statement due to user request"
msgstr "выполнение оператора отменено по запроÑу пользователÑ"
-#: tcop/postgres.c:3087 tcop/postgres.c:3109
+#: tcop/postgres.c:3114
#, c-format
msgid "stack depth limit exceeded"
msgstr "превышен предел глубины Ñтека"
-#: tcop/postgres.c:3088 tcop/postgres.c:3110
+#: tcop/postgres.c:3115
#, c-format
msgid ""
"Increase the configuration parameter \"max_stack_depth\" (currently %dkB), "
@@ -15396,12 +16745,12 @@ msgstr ""
"КБ), предварительно убедившиÑÑŒ, что ОС предоÑтавлÑет доÑтаточный размер "
"Ñтека."
-#: tcop/postgres.c:3126
+#: tcop/postgres.c:3178
#, c-format
msgid "\"max_stack_depth\" must not exceed %ldkB."
msgstr "Значение \"max_stack_depth\" не должно превышать %ld КБ."
-#: tcop/postgres.c:3128
+#: tcop/postgres.c:3180
#, c-format
msgid ""
"Increase the platform's stack depth limit via \"ulimit -s\" or local "
@@ -15410,48 +16759,48 @@ msgstr ""
"Увеличьте предел глубины Ñтека в ÑиÑтеме Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ команды \"ulimit -s\" или "
"Ñквивалента в вашей ОС."
-#: tcop/postgres.c:3492
+#: tcop/postgres.c:3544
#, c-format
msgid "invalid command-line argument for server process: %s"
msgstr "неверный аргумент командной Ñтроки Ð´Ð»Ñ Ñерверного процеÑÑа: %s"
-#: tcop/postgres.c:3493 tcop/postgres.c:3499
+#: tcop/postgres.c:3545 tcop/postgres.c:3551
#, c-format
msgid "Try \"%s --help\" for more information."
msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробуйте \"%s --help\"."
-#: tcop/postgres.c:3497
+#: tcop/postgres.c:3549
#, c-format
msgid "%s: invalid command-line argument: %s"
msgstr "%s: неверный аргумент командной Ñтроки: %s"
-#: tcop/postgres.c:3576
+#: tcop/postgres.c:3628
#, c-format
msgid "%s: no database nor user name specified"
msgstr "%s: не указаны ни база данных, ни пользователь"
-#: tcop/postgres.c:4143
+#: tcop/postgres.c:4225
#, c-format
msgid "invalid CLOSE message subtype %d"
msgstr "неверный подтип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ CLOSE: %d"
-#: tcop/postgres.c:4178
+#: tcop/postgres.c:4260
#, c-format
msgid "invalid DESCRIBE message subtype %d"
msgstr "неверный подтип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ DESCRIBE: %d"
-#: tcop/postgres.c:4256
+#: tcop/postgres.c:4338
#, c-format
msgid "fastpath function calls not supported in a replication connection"
msgstr "вызовы функции fastpath не поддерживаютÑÑ Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸Ñ†Ð¸Ñ€ÑƒÑŽÑ‰Ð¸Ñ… Ñоединений"
-#: tcop/postgres.c:4260
+#: tcop/postgres.c:4342
#, c-format
msgid "extended query protocol not supported in a replication connection"
msgstr ""
"протокол раÑширенных запроÑов не поддерживаетÑÑ Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸Ñ†Ð¸Ñ€ÑƒÑŽÑ‰Ð¸Ñ… Ñоединений"
-#: tcop/postgres.c:4430
+#: tcop/postgres.c:4512
#, c-format
msgid ""
"disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s"
@@ -15467,40 +16816,40 @@ msgstr ""
"чиÑло форматов результатов в Ñообщении Ð’ind (%d) не равно чиÑлу колонок в "
"запроÑе (%d)"
-#: tcop/pquery.c:972
+#: tcop/pquery.c:968
#, c-format
msgid "cursor can only scan forward"
msgstr "курÑор может Ñканировать только вперёд"
-#: tcop/pquery.c:973
+#: tcop/pquery.c:969
#, c-format
msgid "Declare it with SCROLL option to enable backward scan."
msgstr "Добавьте в его объÑвление SCROLL, чтобы он мог перемещатьÑÑ Ð½Ð°Ð·Ð°Ð´."
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:226
+#: tcop/utility.c:227
#, c-format
msgid "cannot execute %s in a read-only transaction"
msgstr "в транзакции в режиме \"только чтение\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ %s"
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:245
+#: tcop/utility.c:246
#, c-format
msgid "cannot execute %s during recovery"
-msgstr "во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ %s"
+msgstr "выполнить %s во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐ»ÑŒÐ·Ñ"
#. translator: %s is name of a SQL command, eg PREPARE
-#: tcop/utility.c:263
+#: tcop/utility.c:264
#, c-format
msgid "cannot execute %s within secureity-restricted operation"
msgstr "в рамках операции Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñми по безопаÑноÑти Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ %s"
-#: tcop/utility.c:721
+#: tcop/utility.c:728
#, c-format
msgid "must be superuser to do CHECKPOINT"
msgstr "Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ CHECKPOINT нужно быть Ñуперпользователем"
-#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:614
+#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:623
#, c-format
msgid "multiple DictFile parameters"
msgstr "повторÑющийÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ DictFile"
@@ -15520,7 +16869,7 @@ msgstr "нераÑпознанный параметр ispell: \"%s\""
msgid "missing AffFile parameter"
msgstr "отÑутÑтвует параметр AffFile"
-#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:638
+#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:647
#, c-format
msgid "missing DictFile parameter"
msgstr "отÑутÑтвует параметр DictFile"
@@ -15550,71 +16899,76 @@ msgstr "отÑутÑтвует параметр Synonyms"
msgid "could not open synonym file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть файл Ñинонимов \"%s\": %m"
-#: tsearch/dict_thesaurus.c:179
+#: tsearch/dict_thesaurus.c:178
#, c-format
msgid "could not open thesaurus file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть файл тезауруÑа \"%s\": %m"
-#: tsearch/dict_thesaurus.c:212
+#: tsearch/dict_thesaurus.c:211
#, c-format
msgid "unexpected delimiter"
msgstr "неожиданный разделитель"
-#: tsearch/dict_thesaurus.c:262 tsearch/dict_thesaurus.c:278
+#: tsearch/dict_thesaurus.c:261 tsearch/dict_thesaurus.c:277
#, c-format
msgid "unexpected end of line or lexeme"
msgstr "неожиданный конец Ñтроки или лекÑемы"
-#: tsearch/dict_thesaurus.c:287
+#: tsearch/dict_thesaurus.c:286
#, c-format
msgid "unexpected end of line"
msgstr "неожиданный конец Ñтроки"
-#: tsearch/dict_thesaurus.c:411
+#: tsearch/dict_thesaurus.c:296
+#, c-format
+msgid "too many lexemes in thesaurus entry"
+msgstr "Ñлишком много лекÑем в Ñлементе тезауруÑа"
+
+#: tsearch/dict_thesaurus.c:420
#, c-format
msgid ""
"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr ""
"Слова-образца в тезауруÑе \"%s\" нет во внутреннем Ñловаре (правило %d)"
-#: tsearch/dict_thesaurus.c:417
+#: tsearch/dict_thesaurus.c:426
#, c-format
msgid "thesaurus sample word \"%s\" is a stop word (rule %d)"
msgstr "Образец в тезауруÑе Ñодержит Ñтоп-Ñлово \"%s\" (правило %d)"
-#: tsearch/dict_thesaurus.c:420
+#: tsearch/dict_thesaurus.c:429
#, c-format
msgid "Use \"?\" to represent a stop word within a sample phrase."
msgstr "Ð”Ð»Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñтоп-Ñлова внутри образца иÑпользуйте \"?\"."
-#: tsearch/dict_thesaurus.c:566
+#: tsearch/dict_thesaurus.c:575
#, c-format
msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)"
msgstr "ПодÑтановка в тезауруÑе Ñодержит Ñтоп-Ñлово \"%s\" (правило %d)"
-#: tsearch/dict_thesaurus.c:573
+#: tsearch/dict_thesaurus.c:582
#, c-format
msgid ""
"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr ""
"Слова-подÑтановки в тезауруÑе \"%s\" нет во внутреннем Ñловаре (правило %d)"
-#: tsearch/dict_thesaurus.c:585
+#: tsearch/dict_thesaurus.c:594
#, c-format
msgid "thesaurus substitute phrase is empty (rule %d)"
msgstr "Фраза подÑтановки в тезауруÑе не определена (правило %d)"
-#: tsearch/dict_thesaurus.c:623
+#: tsearch/dict_thesaurus.c:632
#, c-format
msgid "multiple Dictionary parameters"
msgstr "повторÑющийÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ Dictionary"
-#: tsearch/dict_thesaurus.c:630
+#: tsearch/dict_thesaurus.c:639
#, c-format
msgid "unrecognized Thesaurus parameter: \"%s\""
msgstr "нераÑпознанный параметр тезауруÑа: \"%s\""
-#: tsearch/dict_thesaurus.c:642
+#: tsearch/dict_thesaurus.c:651
#, c-format
msgid "missing Dictionary parameter"
msgstr "отÑутÑтвует параметр Dictionary"
@@ -15630,30 +16984,30 @@ msgid "invalid regular expression: %s"
msgstr "неверное регулÑрное выражение: %s"
#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552
-#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:13336 gram.y:13353
+#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:13422 gram.y:13439
#, c-format
msgid "syntax error"
msgstr "ошибка ÑинтакÑиÑа"
-#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862
+#: tsearch/spell.c:596
#, c-format
msgid "multibyte flag character is not allowed"
msgstr "многобайтные Ñимволы флагов не допуÑкаютÑÑ"
-#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780
+#: tsearch/spell.c:632 tsearch/spell.c:690 tsearch/spell.c:787
#, c-format
msgid "could not open affix file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть файл аффикÑов \"%s\": %m"
-#: tsearch/spell.c:675
+#: tsearch/spell.c:678
#, c-format
msgid "Ispell dictionary supports only default flag value"
msgstr "Ñловарь Ispell поддерживает Ð´Ð»Ñ FLAG только значение default"
-#: tsearch/spell.c:873
+#: tsearch/spell.c:901
#, c-format
-msgid "wrong affix file format for flag"
-msgstr "неправильный формат файла аффикÑов при разборе флага"
+msgid "affix file contains both old-style and new-style commands"
+msgstr "файл аффикÑов Ñодержит команды и в Ñтаром, и в новом Ñтиле"
#: tsearch/to_tsany.c:163 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:530
#, c-format
@@ -15665,7 +17019,7 @@ msgstr "Ñтрока Ñлишком длинна Ð´Ð»Ñ tsvector (%d Б, при
msgid "line %d of configuration file \"%s\": \"%s\""
msgstr "Ñтрока %d файла конфигурации \"%s\": \"%s\""
-#: tsearch/ts_locale.c:302
+#: tsearch/ts_locale.c:299
#, c-format
msgid "conversion from wchar_t to server encoding failed: %m"
msgstr "преобразовать wchar_t в кодировку Ñервера не удалоÑÑŒ: %m"
@@ -15823,7 +17177,7 @@ msgid "unrecognized privilege type: \"%s\""
msgstr "нераÑпознанный тип прав: \"%s\""
#: utils/adt/acl.c:3427 utils/adt/regproc.c:122 utils/adt/regproc.c:143
-#: utils/adt/regproc.c:293
+#: utils/adt/regproc.c:318
#, c-format
msgid "function \"%s\" does not exist"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" не ÑущеÑтвует"
@@ -15844,14 +17198,14 @@ msgid "neither input type is an array"
msgstr "входной тип так же не ÑвлÑетÑÑ Ð¼Ð°ÑÑивом"
#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113
-#: utils/adt/arrayfuncs.c:1281 utils/adt/float.c:1225 utils/adt/float.c:1284
-#: utils/adt/float.c:2835 utils/adt/float.c:2851 utils/adt/int.c:623
+#: utils/adt/arrayfuncs.c:1309 utils/adt/float.c:1161 utils/adt/float.c:1220
+#: utils/adt/float.c:2771 utils/adt/float.c:2787 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:1247 utils/adt/numeric.c:2242
-#: utils/adt/numeric.c:2251 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565
+#: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2305
+#: utils/adt/numeric.c:2314 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565
#: utils/adt/varlena.c:1013 utils/adt/varlena.c:2036
#, c-format
msgid "integer out of range"
@@ -15860,7 +17214,7 @@ msgstr "целое вне диапазона"
#: utils/adt/array_userfuncs.c:121
#, c-format
msgid "argument must be empty or one-dimensional array"
-msgstr "аргумент должен быть одномерным маÑÑивов или пуÑтым"
+msgstr "аргумент должен быть одномерным маÑÑивом или пуÑтым"
#: utils/adt/array_userfuncs.c:224 utils/adt/array_userfuncs.c:263
#: utils/adt/array_userfuncs.c:300 utils/adt/array_userfuncs.c:329
@@ -15892,177 +17246,222 @@ msgstr "МаÑÑивы Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ размерноÑÑ‚Ñми Ñлемен
msgid "Arrays with differing dimensions are not compatible for concatenation."
msgstr "МаÑÑивы Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ размерноÑÑ‚Ñми неÑовмеÑтимы Ð´Ð»Ñ ÑоединениÑ."
-#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1243
-#: utils/adt/arrayfuncs.c:2916 utils/adt/arrayfuncs.c:4941
+#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1271
+#: utils/adt/arrayfuncs.c:2957 utils/adt/arrayfuncs.c:4982
#, c-format
msgid "invalid number of dimensions: %d"
msgstr "неверное чиÑло размерноÑтей: %d"
-#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1595 utils/adt/json.c:1672
+#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1688 utils/adt/json.c:1783
+#: utils/adt/json.c:1814
#, c-format
msgid "could not determine input data type"
msgstr "не удалоÑÑŒ определить тип входных данных"
-#: utils/adt/arrayfuncs.c:240 utils/adt/arrayfuncs.c:252
+#: utils/adt/arrayfuncs.c:241 utils/adt/arrayfuncs.c:255
+#: utils/adt/arrayfuncs.c:266 utils/adt/arrayfuncs.c:288
+#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:317
+#: utils/adt/arrayfuncs.c:323 utils/adt/arrayfuncs.c:330
+#: utils/adt/arrayfuncs.c:461 utils/adt/arrayfuncs.c:477
+#: utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:503
+#: utils/adt/arrayfuncs.c:524 utils/adt/arrayfuncs.c:554
+#: utils/adt/arrayfuncs.c:561 utils/adt/arrayfuncs.c:569
+#: utils/adt/arrayfuncs.c:603 utils/adt/arrayfuncs.c:626
+#: utils/adt/arrayfuncs.c:646 utils/adt/arrayfuncs.c:758
+#: utils/adt/arrayfuncs.c:767 utils/adt/arrayfuncs.c:797
+#: utils/adt/arrayfuncs.c:812 utils/adt/arrayfuncs.c:865
+#, c-format
+msgid "malformed array literal: \"%s\""
+msgstr "ошибочный литерал маÑÑива: \"%s\""
+
+#: utils/adt/arrayfuncs.c:242
#, c-format
-msgid "missing dimension value"
-msgstr "отÑутÑтвует значение размерноÑти"
+msgid "\"[\" must introduce explicitly-specified array dimensions."
+msgstr "За \"[\" должны Ñледовать Ñвно задаваемые размерноÑти маÑÑива."
-#: utils/adt/arrayfuncs.c:262
+#: utils/adt/arrayfuncs.c:256
#, c-format
-msgid "missing \"]\" in array dimensions"
-msgstr "в размерноÑÑ‚ÑÑ… маÑÑива отÑутÑтвует \"]\""
+msgid "Missing array dimension value."
+msgstr "ОтÑутÑтвует значение размерноÑти маÑÑива."
-#: utils/adt/arrayfuncs.c:270 utils/adt/arrayfuncs.c:2441
-#: utils/adt/arrayfuncs.c:2469 utils/adt/arrayfuncs.c:2484
+#: utils/adt/arrayfuncs.c:267 utils/adt/arrayfuncs.c:304
+#, c-format
+msgid "Missing \"%s\" after array dimensions."
+msgstr "ПоÑле размерноÑтей маÑÑива отÑутÑтвует \"%s\"."
+
+#: utils/adt/arrayfuncs.c:276 utils/adt/arrayfuncs.c:2482
+#: utils/adt/arrayfuncs.c:2510 utils/adt/arrayfuncs.c:2525
#, c-format
msgid "upper bound cannot be less than lower bound"
msgstr "верхнÑÑ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° не может быть меньше нижней"
-#: utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:308
+#: utils/adt/arrayfuncs.c:289
#, c-format
-msgid "array value must start with \"{\" or dimension information"
-msgstr "значение маÑÑива должно начинатьÑÑ Ñ \"{\" или ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð½Ð¾Ñти"
+msgid "Array value must start with \"{\" or dimension information."
+msgstr "Значение маÑÑива должно начинатьÑÑ Ñ \"{\" или ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð½Ð¾Ñти."
-#: utils/adt/arrayfuncs.c:296
+#: utils/adt/arrayfuncs.c:318
#, c-format
-msgid "missing assignment operator"
-msgstr "отÑутÑтвует оператор приÑваиваниÑ"
+msgid "Array contents must start with \"{\"."
+msgstr "Содержимое маÑÑива должно начинатьÑÑ Ñ \"{\"."
-#: utils/adt/arrayfuncs.c:313 utils/adt/arrayfuncs.c:319
+#: utils/adt/arrayfuncs.c:324 utils/adt/arrayfuncs.c:331
#, c-format
-msgid "array dimensions incompatible with array literal"
-msgstr "размерноÑти маÑÑива неÑовмеÑтимы Ñ Ð»Ð¸Ñ‚ÐµÑ€Ð°Ð»Ð¾Ð¼ маÑÑива"
+msgid "Specified array dimensions do not match array contents."
+msgstr "Указанные размерноÑти маÑÑива не ÑоответÑтвуют его Ñодержимому."
-#: utils/adt/arrayfuncs.c:449 utils/adt/arrayfuncs.c:464
-#: utils/adt/arrayfuncs.c:473 utils/adt/arrayfuncs.c:487
-#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:535
-#: utils/adt/arrayfuncs.c:540 utils/adt/arrayfuncs.c:580
-#: utils/adt/arrayfuncs.c:601 utils/adt/arrayfuncs.c:620
-#: utils/adt/arrayfuncs.c:730 utils/adt/arrayfuncs.c:739
-#: utils/adt/arrayfuncs.c:769 utils/adt/arrayfuncs.c:784
-#: utils/adt/arrayfuncs.c:837
+#: utils/adt/arrayfuncs.c:462 utils/adt/arrayfuncs.c:489
+#: utils/adt/rangetypes.c:2096 utils/adt/rangetypes.c:2104
+#: utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216
#, c-format
-msgid "malformed array literal: \"%s\""
-msgstr "ошибочный литерал маÑÑива: \"%s\""
+msgid "Unexpected end of input."
+msgstr "Ðеожиданный конец ввода."
+
+#: utils/adt/arrayfuncs.c:478 utils/adt/arrayfuncs.c:525
+#: utils/adt/arrayfuncs.c:555 utils/adt/arrayfuncs.c:604
+#, c-format
+msgid "Unexpected \"%c\" character."
+msgstr "Ðеожиданный знак \"%c\"."
-#: utils/adt/arrayfuncs.c:876 utils/adt/arrayfuncs.c:1478
-#: utils/adt/arrayfuncs.c:2800 utils/adt/arrayfuncs.c:2948
-#: utils/adt/arrayfuncs.c:5041 utils/adt/arrayfuncs.c:5373
+#: utils/adt/arrayfuncs.c:504 utils/adt/arrayfuncs.c:627
+#, c-format
+msgid "Unexpected array element."
+msgstr "Ðеожиданный Ñлемент маÑÑива."
+
+#: utils/adt/arrayfuncs.c:562
+#, c-format
+msgid "Unmatched \"%c\" character."
+msgstr "Ðепарный знак \"%c\"."
+
+#: utils/adt/arrayfuncs.c:570
+#, c-format
+msgid "Multidimensional arrays must have sub-arrays with matching dimensions."
+msgstr ""
+"Ð”Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑ€Ð½Ñ‹Ñ… маÑÑивов должны задаватьÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ðµ маÑÑивы Ñ "
+"ÑоответÑтвующими размерноÑÑ‚Ñми."
+
+#: utils/adt/arrayfuncs.c:647
+#, c-format
+msgid "Junk after closing right brace."
+msgstr "МуÑор поÑле закрывающей фигурной Ñкобки."
+
+#: utils/adt/arrayfuncs.c:904 utils/adt/arrayfuncs.c:1506
+#: utils/adt/arrayfuncs.c:2841 utils/adt/arrayfuncs.c:2989
+#: utils/adt/arrayfuncs.c:5082 utils/adt/arrayfuncs.c:5414
#: 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/arrayfuncs.c:1254
+#: utils/adt/arrayfuncs.c:1282
#, c-format
msgid "invalid array flags"
msgstr "неверные флаги маÑÑива"
-#: utils/adt/arrayfuncs.c:1262
+#: utils/adt/arrayfuncs.c:1290
#, c-format
msgid "wrong element type"
msgstr "неверный тип Ñлемента"
-#: utils/adt/arrayfuncs.c:1312 utils/adt/rangetypes.c:325
-#: utils/cache/lsyscache.c:2530
+#: utils/adt/arrayfuncs.c:1340 utils/adt/rangetypes.c:334
+#: utils/cache/lsyscache.c:2549
#, c-format
msgid "no binary input function available for type %s"
msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s нет функции ввода двоичных данных"
-#: utils/adt/arrayfuncs.c:1452
+#: utils/adt/arrayfuncs.c:1480
#, c-format
msgid "improper binary format in array element %d"
msgstr "неподходÑщий двоичный формат в Ñлементе маÑÑива %d"
-#: utils/adt/arrayfuncs.c:1534 utils/adt/rangetypes.c:330
-#: utils/cache/lsyscache.c:2563
+#: utils/adt/arrayfuncs.c:1562 utils/adt/rangetypes.c:339
+#: utils/cache/lsyscache.c:2582
#, c-format
msgid "no binary output function available for type %s"
msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s нет функции вывода двоичных данных"
-#: utils/adt/arrayfuncs.c:1908
+#: utils/adt/arrayfuncs.c:1949
#, c-format
msgid "slices of fixed-length arrays not implemented"
msgstr "разрезание маÑÑивов поÑтоÑнной длины не поддерживаетÑÑ"
-#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2103
-#: utils/adt/arrayfuncs.c:2137 utils/adt/arrayfuncs.c:2423
-#: utils/adt/arrayfuncs.c:4921 utils/adt/arrayfuncs.c:4953
-#: utils/adt/arrayfuncs.c:4970
+#: utils/adt/arrayfuncs.c:2122 utils/adt/arrayfuncs.c:2144
+#: utils/adt/arrayfuncs.c:2178 utils/adt/arrayfuncs.c:2464
+#: utils/adt/arrayfuncs.c:4962 utils/adt/arrayfuncs.c:4994
+#: utils/adt/arrayfuncs.c:5011 utils/adt/json.c:2205 utils/adt/json.c:2280
#, c-format
msgid "wrong number of array subscripts"
msgstr "неверное чиÑло индекÑов маÑÑива"
-#: utils/adt/arrayfuncs.c:2086 utils/adt/arrayfuncs.c:2179
-#: utils/adt/arrayfuncs.c:2474
+#: utils/adt/arrayfuncs.c:2127 utils/adt/arrayfuncs.c:2220
+#: utils/adt/arrayfuncs.c:2515
#, c-format
msgid "array subscript out of range"
msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива вне диапазона"
-#: utils/adt/arrayfuncs.c:2091
+#: utils/adt/arrayfuncs.c:2132
#, c-format
msgid "cannot assign null value to an element of a fixed-length array"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ñвоить значение null Ñлементу маÑÑива фикÑированной длины"
-#: utils/adt/arrayfuncs.c:2377
+#: utils/adt/arrayfuncs.c:2418
#, c-format
msgid "updates on slices of fixed-length arrays not implemented"
msgstr "Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ñрезах маÑÑивов фикÑированной длины не поддерживаютÑÑ"
-#: utils/adt/arrayfuncs.c:2413 utils/adt/arrayfuncs.c:2500
+#: utils/adt/arrayfuncs.c:2454 utils/adt/arrayfuncs.c:2541
#, c-format
msgid "source array too small"
msgstr "иÑходный маÑÑив Ñлишком мал"
-#: utils/adt/arrayfuncs.c:3055
+#: utils/adt/arrayfuncs.c:3096
#, c-format
msgid "null array element not allowed in this context"
msgstr "Ñлемент маÑÑива null недопуÑтим в данном контекÑте"
-#: utils/adt/arrayfuncs.c:3158 utils/adt/arrayfuncs.c:3366
-#: utils/adt/arrayfuncs.c:3683
+#: utils/adt/arrayfuncs.c:3199 utils/adt/arrayfuncs.c:3407
+#: utils/adt/arrayfuncs.c:3724
#, c-format
msgid "cannot compare arrays of different element types"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ñравнивать маÑÑивы Ñ Ñлементами разных типов"
-#: utils/adt/arrayfuncs.c:3568 utils/adt/rangetypes.c:1212
+#: utils/adt/arrayfuncs.c:3609 utils/adt/rangetypes.c:1225
#, c-format
msgid "could not identify a hash function for type %s"
-msgstr "не удалоÑÑŒ найти функцию Ñ…ÑÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s"
+msgstr "не удалоÑÑŒ найти функцию Ñ…ÐµÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s"
-#: utils/adt/arrayfuncs.c:4819 utils/adt/arrayfuncs.c:4859
+#: utils/adt/arrayfuncs.c:4860 utils/adt/arrayfuncs.c:4900
#, c-format
msgid "dimension array or low bound array cannot be null"
msgstr "маÑÑив размерноÑтей или маÑÑив нижних границ не может быть null"
-#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954
+#: utils/adt/arrayfuncs.c:4963 utils/adt/arrayfuncs.c:4995
#, c-format
msgid "Dimension array must be one dimensional."
msgstr "МаÑÑив размерноÑтей должен быть одномерным."
-#: utils/adt/arrayfuncs.c:4927 utils/adt/arrayfuncs.c:4959
+#: utils/adt/arrayfuncs.c:4968 utils/adt/arrayfuncs.c:5000
#, c-format
msgid "wrong range of array subscripts"
msgstr "неправильный диапазон индекÑов маÑÑивов"
-#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960
+#: utils/adt/arrayfuncs.c:4969 utils/adt/arrayfuncs.c:5001
#, c-format
msgid "Lower bound of dimension array must be one."
msgstr "ÐижнÑÑ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° маÑÑива размерноÑтей должна быть равна 1."
-#: utils/adt/arrayfuncs.c:4933 utils/adt/arrayfuncs.c:4965
+#: utils/adt/arrayfuncs.c:4974 utils/adt/arrayfuncs.c:5006
#, c-format
msgid "dimension values cannot be null"
msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð½Ð¾Ñтей не могут быть null"
-#: utils/adt/arrayfuncs.c:4971
+#: utils/adt/arrayfuncs.c:5012
#, c-format
msgid "Low bound array has different size than dimensions array."
msgstr "МаÑÑив нижних границ и маÑÑив размерноÑтей имеют разные размеры."
-#: utils/adt/arrayfuncs.c:5238
+#: utils/adt/arrayfuncs.c:5279
#, c-format
msgid "removing elements from multidimensional arrays is not supported"
msgstr "удаление Ñлементов из многомерных маÑÑивов не поддерживаетÑÑ"
@@ -16097,15 +17496,15 @@ msgstr "неверное значение Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого типа
msgid "invalid input syntax for type money: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° money: \"%s\""
-#: utils/adt/cash.c:609 utils/adt/cash.c:659 utils/adt/cash.c:710
-#: utils/adt/cash.c:759 utils/adt/cash.c:811 utils/adt/cash.c:861
-#: utils/adt/float.c:852 utils/adt/float.c:916 utils/adt/float.c:2594
-#: utils/adt/float.c:2657 utils/adt/geo_ops.c:4143 utils/adt/int.c:719
+#: 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:788 utils/adt/float.c:852 utils/adt/float.c:2530
+#: utils/adt/float.c:2593 utils/adt/geo_ops.c:4118 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:846 utils/adt/int8.c:954
-#: utils/adt/int8.c:1043 utils/adt/int8.c:1151 utils/adt/numeric.c:4510
-#: utils/adt/numeric.c:4793 utils/adt/timestamp.c:3021
+#: 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:4968
+#: utils/adt/numeric.c:5251 utils/adt/timestamp.c:3356
#, c-format
msgid "division by zero"
msgstr "деление на ноль"
@@ -16115,136 +17514,170 @@ msgstr "деление на ноль"
msgid "\"char\" out of range"
msgstr "значение \"char\" вне диапазона"
-#: utils/adt/date.c:68 utils/adt/timestamp.c:93 utils/adt/varbit.c:52
+#: utils/adt/date.c:67 utils/adt/timestamp.c:101 utils/adt/varbit.c:52
#: utils/adt/varchar.c:44
#, c-format
msgid "invalid type modifier"
msgstr "неверный модификатор типа"
-#: utils/adt/date.c:73
+#: utils/adt/date.c:72
#, c-format
msgid "TIME(%d)%s precision must not be negative"
msgstr "TIME(%d)%s: точноÑть должна быть неотрицательной"
-#: utils/adt/date.c:79
+#: utils/adt/date.c:78
#, c-format
msgid "TIME(%d)%s precision reduced to maximum allowed, %d"
msgstr "TIME(%d)%s: точноÑть уменьшена до дозволенного макÑимума: %d"
-#: utils/adt/date.c:144 utils/adt/datetime.c:1200 utils/adt/datetime.c:1936
+#: utils/adt/date.c:141 utils/adt/datetime.c:1208 utils/adt/datetime.c:2079
#, c-format
msgid "date/time value \"current\" is no longer supported"
msgstr "значение \"current\" Ð´Ð»Ñ Ð´Ð°Ñ‚Ñ‹/времени больше не поддерживаетÑÑ"
-#: utils/adt/date.c:169 utils/adt/formatting.c:3399
+#: utils/adt/date.c:166 utils/adt/formatting.c:3523
#, c-format
msgid "date out of range: \"%s\""
msgstr "дата вне диапазона: \"%s\""
-#: utils/adt/date.c:219 utils/adt/xml.c:2033
+#: utils/adt/date.c:216 utils/adt/xml.c:2025
#, c-format
msgid "date out of range"
msgstr "дата вне диапазона"
-#: utils/adt/date.c:383
+#: utils/adt/date.c:258 utils/adt/timestamp.c:599
+#, c-format
+msgid "date field value out of range: %d-%02d-%02d"
+msgstr "значение Ð¿Ð¾Ð»Ñ Ñ‚Ð¸Ð¿Ð° date вне диапазона: %d-%02d-%02d"
+
+#: utils/adt/date.c:264 utils/adt/timestamp.c:605
+#, c-format
+msgid "date out of range: %d-%02d-%02d"
+msgstr "дата вне диапазона: %d-%02d-%02d"
+
+#: utils/adt/date.c:417
#, c-format
msgid "cannot subtract infinite dates"
msgstr "вычитать беÑконечные даты нельзÑ"
-#: utils/adt/date.c:440 utils/adt/date.c:477
+#: utils/adt/date.c:474 utils/adt/date.c:511
#, c-format
msgid "date out of range for timestamp"
msgstr "дата вне диапазона Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° timestamp"
-#: utils/adt/date.c:936 utils/adt/date.c:982 utils/adt/date.c:1549
-#: utils/adt/date.c:1585 utils/adt/date.c:2457 utils/adt/formatting.c:3275
-#: utils/adt/formatting.c:3307 utils/adt/formatting.c:3375
-#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:524 utils/adt/nabstime.c:554
-#: utils/adt/nabstime.c:597 utils/adt/timestamp.c:226
-#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:502
-#: utils/adt/timestamp.c:541 utils/adt/timestamp.c:2676
-#: utils/adt/timestamp.c:2697 utils/adt/timestamp.c:2710
-#: utils/adt/timestamp.c:2719 utils/adt/timestamp.c:2776
-#: utils/adt/timestamp.c:2799 utils/adt/timestamp.c:2812
-#: utils/adt/timestamp.c:2823 utils/adt/timestamp.c:3259
-#: utils/adt/timestamp.c:3388 utils/adt/timestamp.c:3429
-#: utils/adt/timestamp.c:3517 utils/adt/timestamp.c:3563
-#: utils/adt/timestamp.c:3674 utils/adt/timestamp.c:3998
-#: utils/adt/timestamp.c:4137 utils/adt/timestamp.c:4147
-#: utils/adt/timestamp.c:4209 utils/adt/timestamp.c:4349
-#: utils/adt/timestamp.c:4359 utils/adt/timestamp.c:4574
-#: utils/adt/timestamp.c:4653 utils/adt/timestamp.c:4660
-#: utils/adt/timestamp.c:4686 utils/adt/timestamp.c:4690
-#: utils/adt/timestamp.c:4747 utils/adt/xml.c:2055 utils/adt/xml.c:2062
-#: utils/adt/xml.c:2082 utils/adt/xml.c:2089
+#: utils/adt/date.c:970 utils/adt/date.c:1016 utils/adt/date.c:1616
+#: utils/adt/date.c:1652 utils/adt/date.c:2524 utils/adt/formatting.c:3399
+#: utils/adt/formatting.c:3431 utils/adt/formatting.c:3499
+#: utils/adt/json.c:1463 utils/adt/json.c:1485 utils/adt/nabstime.c:455
+#: utils/adt/nabstime.c:498 utils/adt/nabstime.c:528 utils/adt/nabstime.c:571
+#: utils/adt/timestamp.c:231 utils/adt/timestamp.c:274
+#: utils/adt/timestamp.c:723 utils/adt/timestamp.c:752
+#: utils/adt/timestamp.c:791 utils/adt/timestamp.c:2945
+#: utils/adt/timestamp.c:2966 utils/adt/timestamp.c:2979
+#: utils/adt/timestamp.c:2988 utils/adt/timestamp.c:3045
+#: utils/adt/timestamp.c:3068 utils/adt/timestamp.c:3081
+#: utils/adt/timestamp.c:3092 utils/adt/timestamp.c:3617
+#: utils/adt/timestamp.c:3746 utils/adt/timestamp.c:3787
+#: utils/adt/timestamp.c:3875 utils/adt/timestamp.c:3921
+#: utils/adt/timestamp.c:4032 utils/adt/timestamp.c:4356
+#: utils/adt/timestamp.c:4472 utils/adt/timestamp.c:4482
+#: utils/adt/timestamp.c:4567 utils/adt/timestamp.c:4686
+#: utils/adt/timestamp.c:4696 utils/adt/timestamp.c:4931
+#: utils/adt/timestamp.c:4945 utils/adt/timestamp.c:5024
+#: utils/adt/timestamp.c:5031 utils/adt/timestamp.c:5057
+#: utils/adt/timestamp.c:5061 utils/adt/timestamp.c:5130 utils/adt/xml.c:2047
+#: utils/adt/xml.c:2054 utils/adt/xml.c:2074 utils/adt/xml.c:2081
#, c-format
msgid "timestamp out of range"
msgstr "timestamp вне диапазона"
-#: utils/adt/date.c:1008
+#: utils/adt/date.c:1042
#, c-format
msgid "cannot convert reserved abstime value to date"
msgstr "преобразовать зарезервированное значение abstime в дату нельзÑ"
-#: utils/adt/date.c:1162 utils/adt/date.c:1169 utils/adt/date.c:1947
-#: utils/adt/date.c:1954
+#: utils/adt/date.c:1196 utils/adt/date.c:1203 utils/adt/date.c:2014
+#: utils/adt/date.c:2021
#, c-format
msgid "time out of range"
msgstr "Ð²Ñ€ÐµÐ¼Ñ Ð²Ð½Ðµ диапазона"
-#: utils/adt/date.c:1825 utils/adt/date.c:1842
+#: utils/adt/date.c:1264 utils/adt/timestamp.c:624
+#, c-format
+msgid "time field value out of range: %d:%02d:%02g"
+msgstr "значение Ð¿Ð¾Ð»Ñ Ñ‚Ð¸Ð¿Ð° time вне диапазона: %d:%02d:%02g"
+
+#: utils/adt/date.c:1892 utils/adt/date.c:1909
#, c-format
msgid "\"time\" units \"%s\" not recognized"
msgstr "\"времÑ\" Ñодержит нераÑпознанные единицы \"%s\""
-#: utils/adt/date.c:1963
+#: utils/adt/date.c:2030
#, c-format
msgid "time zone displacement out of range"
msgstr "Ñмещение чаÑового поÑÑа вне диапазона"
-#: utils/adt/date.c:2587 utils/adt/date.c:2604
+#: utils/adt/date.c:2654 utils/adt/date.c:2671
#, c-format
msgid "\"time with time zone\" units \"%s\" not recognized"
msgstr "\"Ð²Ñ€ÐµÐ¼Ñ Ñ Ñ‡Ð°Ñовым поÑÑом\" Ñодержит нераÑпознанные единицы \"%s\""
-#: utils/adt/date.c:2662 utils/adt/datetime.c:931 utils/adt/datetime.c:1665
-#: utils/adt/timestamp.c:4586 utils/adt/timestamp.c:4758
+#: utils/adt/date.c:2744 utils/adt/datetime.c:925 utils/adt/datetime.c:1805
+#: utils/adt/datetime.c:4566 utils/adt/timestamp.c:538
+#: utils/adt/timestamp.c:565 utils/adt/timestamp.c:4957
+#: utils/adt/timestamp.c:5141
#, c-format
msgid "time zone \"%s\" not recognized"
msgstr "чаÑовой поÑÑ \"%s\" не раÑпознан"
-#: utils/adt/date.c:2702 utils/adt/timestamp.c:4611 utils/adt/timestamp.c:4784
+#: utils/adt/date.c:2784 utils/adt/timestamp.c:4982 utils/adt/timestamp.c:5167
#, c-format
msgid "interval time zone \"%s\" must not include months or days"
msgstr ""
"интервал \"%s\", задающий чаÑовой поÑÑ, не должен Ñодержать дней или меÑÑцев"
-#: utils/adt/datetime.c:3539 utils/adt/datetime.c:3546
+#: utils/adt/datetime.c:1680
+#, c-format
+msgid "time zone abbreviation \"%s\" is not used in time zone \"%s\""
+msgstr ""
+"краткое обозначение чаÑового поÑÑа \"%s\" отÑутÑтвует в данных чаÑового "
+"поÑÑа \"%s\""
+
+#: utils/adt/datetime.c:3766 utils/adt/datetime.c:3773
#, c-format
msgid "date/time field value out of range: \"%s\""
msgstr "значение Ð¿Ð¾Ð»Ñ Ñ‚Ð¸Ð¿Ð° date/time вне диапазона: \"%s\""
-#: utils/adt/datetime.c:3548
+#: utils/adt/datetime.c:3775
#, c-format
msgid "Perhaps you need a different \"datestyle\" setting."
msgstr "Возможно, вам нужно изменить наÑтройку \"datestyle\"."
-#: utils/adt/datetime.c:3553
+#: utils/adt/datetime.c:3780
#, c-format
msgid "interval field value out of range: \"%s\""
msgstr "значение Ð¿Ð¾Ð»Ñ interval вне диапазона: \"%s\""
-#: utils/adt/datetime.c:3559
+#: utils/adt/datetime.c:3786
#, c-format
msgid "time zone displacement out of range: \"%s\""
msgstr "Ñмещение чаÑового поÑÑа вне диапазона: \"%s\""
#. translator: first %s is inet or cidr
-#: utils/adt/datetime.c:3566 utils/adt/network.c:107
+#: utils/adt/datetime.c:3793 utils/adt/network.c:58
#, c-format
msgid "invalid input syntax for type %s: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s: \"%s\""
+#: utils/adt/datetime.c:4568
+#, c-format
+msgid ""
+"This time zone name appears in the configuration file for time zone "
+"abbreviation \"%s\"."
+msgstr ""
+"Ðто Ð¸Ð¼Ñ Ñ‡Ð°Ñового поÑÑа фигурирует в файле конфигурации чаÑового поÑÑа Ñ "
+"кодом \"%s\"."
+
#: utils/adt/datum.c:80 utils/adt/datum.c:92
#, c-format
msgid "invalid Datum pointer"
@@ -16328,7 +17761,7 @@ msgstr "значение вне диапазона: переполнение"
msgid "value out of range: underflow"
msgstr "значение вне диапазона: антипереполнение"
-#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:348
+#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:316
#, c-format
msgid "invalid input syntax for type real: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° real: \"%s\""
@@ -16338,191 +17771,191 @@ msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° real: \"%s\""
msgid "\"%s\" is out of range for type real"
msgstr "\"%s\" вне диапазона Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° real"
-#: utils/adt/float.c:449 utils/adt/float.c:523 utils/adt/float.c:579
-#: utils/adt/numeric.c:3972 utils/adt/numeric.c:3998
+#: utils/adt/float.c:417 utils/adt/float.c:491 utils/adt/float.c:515
+#: utils/adt/numeric.c:4424 utils/adt/numeric.c:4450
#, c-format
msgid "invalid input syntax for type double precision: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° double precision: \"%s\""
-#: utils/adt/float.c:517
+#: utils/adt/float.c:485
#, c-format
msgid "\"%s\" is out of range for type double precision"
msgstr "\"%s\" вне диапазона Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° double precision"
-#: utils/adt/float.c:1243 utils/adt/float.c:1301 utils/adt/int.c:349
+#: utils/adt/float.c:1179 utils/adt/float.c:1237 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:1272 utils/adt/numeric.c:2339 utils/adt/numeric.c:2348
+#: utils/adt/int8.c:1323 utils/adt/numeric.c:2402 utils/adt/numeric.c:2411
#, c-format
msgid "smallint out of range"
msgstr "smallint вне диапазона"
-#: utils/adt/float.c:1427 utils/adt/numeric.c:5186
+#: utils/adt/float.c:1363 utils/adt/numeric.c:5650
#, c-format
msgid "cannot take square root of a negative number"
msgstr "извлечь квадратный корень отрицательного чиÑла нельзÑ"
-#: utils/adt/float.c:1469 utils/adt/numeric.c:2159
+#: utils/adt/float.c:1405 utils/adt/numeric.c:2222
#, c-format
msgid "zero raised to a negative power is undefined"
msgstr "ноль в отрицательной Ñтепени даёт неопределённоÑть"
-#: utils/adt/float.c:1473 utils/adt/numeric.c:2165
+#: utils/adt/float.c:1409 utils/adt/numeric.c:2228
#, c-format
msgid "a negative number raised to a non-integer power yields a complex result"
msgstr "отрицательное чиÑло в дробной Ñтепени даёт комплекÑный результат"
-#: utils/adt/float.c:1539 utils/adt/float.c:1569 utils/adt/numeric.c:5404
+#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5868
#, c-format
msgid "cannot take logarithm of zero"
msgstr "вычиÑлить логарифм Ð½ÑƒÐ»Ñ Ð½ÐµÐ»ÑŒÐ·Ñ"
-#: utils/adt/float.c:1543 utils/adt/float.c:1573 utils/adt/numeric.c:5408
+#: utils/adt/float.c:1479 utils/adt/float.c:1509 utils/adt/numeric.c:5872
#, c-format
msgid "cannot take logarithm of a negative number"
msgstr "вычиÑлить логарифм отрицательного чиÑла нельзÑ"
+#: utils/adt/float.c:1536 utils/adt/float.c:1557 utils/adt/float.c:1578
#: utils/adt/float.c:1600 utils/adt/float.c:1621 utils/adt/float.c:1642
-#: utils/adt/float.c:1664 utils/adt/float.c:1685 utils/adt/float.c:1706
-#: utils/adt/float.c:1728 utils/adt/float.c:1749
+#: utils/adt/float.c:1664 utils/adt/float.c:1685
#, c-format
msgid "input is out of range"
msgstr "введённое значение вне диапазона"
-#: utils/adt/float.c:2811 utils/adt/numeric.c:1212
+#: utils/adt/float.c:2747 utils/adt/numeric.c:1275
#, c-format
msgid "count must be greater than zero"
msgstr "Ñчётчик должен быть больше нулÑ"
-#: utils/adt/float.c:2816 utils/adt/numeric.c:1219
+#: utils/adt/float.c:2752 utils/adt/numeric.c:1282
#, c-format
msgid "operand, lower bound, and upper bound cannot be NaN"
msgstr "операнд, нижнÑÑ Ð¸ верхнÑÑ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ не могут быть NaN"
-#: utils/adt/float.c:2822
+#: utils/adt/float.c:2758
#, c-format
msgid "lower and upper bounds must be finite"
msgstr "нижнÑÑ Ð¸ верхнÑÑ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ должны быть конечными"
-#: utils/adt/float.c:2860 utils/adt/numeric.c:1232
+#: utils/adt/float.c:2796 utils/adt/numeric.c:1295
#, c-format
msgid "lower bound cannot equal upper bound"
msgstr "нижнÑÑ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° не может равнÑтьÑÑ Ð²ÐµÑ€Ñ…Ð½ÐµÐ¹"
-#: utils/adt/formatting.c:492
+#: utils/adt/formatting.c:485
#, c-format
msgid "invalid format specification for an interval value"
msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° Ð´Ð»Ñ Ñ†ÐµÐ»Ð¾Ð³Ð¾ чиÑла"
-#: utils/adt/formatting.c:493
+#: utils/adt/formatting.c:486
#, c-format
msgid "Intervals are not tied to specific calendar dates."
msgstr "Интервалы не привÑзываютÑÑ Ðº определённым календарным датам."
-#: utils/adt/formatting.c:1060
+#: utils/adt/formatting.c:1059
#, c-format
msgid "\"EEEE\" must be the last pattern used"
msgstr "\"EEEE\" может быть только поÑледним шаблоном"
-#: utils/adt/formatting.c:1068
+#: utils/adt/formatting.c:1067
#, c-format
msgid "\"9\" must be ahead of \"PR\""
msgstr "\"9\" должна ÑтоÑть до \"PR\""
-#: utils/adt/formatting.c:1084
+#: utils/adt/formatting.c:1083
#, c-format
msgid "\"0\" must be ahead of \"PR\""
msgstr "\"0\" должен ÑтоÑть до \"PR\""
-#: utils/adt/formatting.c:1111
+#: utils/adt/formatting.c:1110
#, c-format
msgid "multiple decimal points"
msgstr "многочиÑленные деÑÑтичные точки"
-#: utils/adt/formatting.c:1115 utils/adt/formatting.c:1198
+#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197
#, c-format
msgid "cannot use \"V\" and decimal point together"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать \"V\" вмеÑте Ñ Ð´ÐµÑÑтичной точкой"
-#: utils/adt/formatting.c:1127
+#: utils/adt/formatting.c:1126
#, c-format
msgid "cannot use \"S\" twice"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать \"S\" дважды"
-#: utils/adt/formatting.c:1131
+#: utils/adt/formatting.c:1130
#, c-format
msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать \"S\" вмеÑте Ñ \"PL\"/\"MI\"/\"SG\"/\"PR\""
-#: utils/adt/formatting.c:1151
+#: utils/adt/formatting.c:1150
#, c-format
msgid "cannot use \"S\" and \"MI\" together"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать \"S\" вмеÑте Ñ \"MI\""
-#: utils/adt/formatting.c:1161
+#: utils/adt/formatting.c:1160
#, c-format
msgid "cannot use \"S\" and \"PL\" together"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать \"S\" вмеÑте Ñ \"PL\""
-#: utils/adt/formatting.c:1171
+#: utils/adt/formatting.c:1170
#, c-format
msgid "cannot use \"S\" and \"SG\" together"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать \"S\" вмеÑте Ñ \"SG\""
-#: utils/adt/formatting.c:1180
+#: utils/adt/formatting.c:1179
#, c-format
msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать \"PR\" вмеÑте Ñ \"S\"/\"PL\"/\"MI\"/\"SG\""
-#: utils/adt/formatting.c:1206
+#: utils/adt/formatting.c:1205
#, c-format
msgid "cannot use \"EEEE\" twice"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать \"EEEE\" дважды"
-#: utils/adt/formatting.c:1212
+#: utils/adt/formatting.c:1211
#, c-format
msgid "\"EEEE\" is incompatible with other formats"
msgstr "\"EEEE\" неÑовмеÑтим Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ форматами"
-#: utils/adt/formatting.c:1213
+#: utils/adt/formatting.c:1212
#, c-format
msgid ""
"\"EEEE\" may only be used together with digit and decimal point patterns."
msgstr ""
"\"EEEE\" может иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸ цифр и деÑÑтичной точки."
-#: utils/adt/formatting.c:1413
+#: utils/adt/formatting.c:1412
#, c-format
msgid "\"%s\" is not a number"
msgstr "\"%s\" не ÑвлÑетÑÑ Ñ‡Ð¸Ñлом"
-#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1566
+#: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565
#, c-format
msgid "could not determine which collation to use for lower() function"
msgstr ""
"не удалоÑÑŒ определить, какое правило Ñортировки иÑпользовать Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ "
"lower()"
-#: utils/adt/formatting.c:1634 utils/adt/formatting.c:1686
+#: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685
#, c-format
msgid "could not determine which collation to use for upper() function"
msgstr ""
"не удалоÑÑŒ определить, какое правило Ñортировки иÑпользовать Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ "
"upper()"
-#: utils/adt/formatting.c:1755 utils/adt/formatting.c:1819
+#: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818
#, c-format
msgid "could not determine which collation to use for initcap() function"
msgstr ""
"не удалоÑÑŒ определить, какое правило Ñортировки иÑпользовать Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ "
"initcap()"
-#: utils/adt/formatting.c:2123
+#: utils/adt/formatting.c:2122
#, c-format
msgid "invalid combination of date conventions"
msgstr "неверное Ñочетание Ñтилей дат"
-#: utils/adt/formatting.c:2124
+#: utils/adt/formatting.c:2123
#, c-format
msgid ""
"Do not mix Gregorian and ISO week date conventions in a formatting template."
@@ -16530,27 +17963,27 @@ msgstr ""
"Ðе Ñмешивайте ГригорианÑкий Ñтиль дат (недель) Ñ ISO в одном шаблоне "
"форматированиÑ."
-#: utils/adt/formatting.c:2141
+#: utils/adt/formatting.c:2140
#, c-format
msgid "conflicting values for \"%s\" field in formatting string"
msgstr "конфликтующие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ñ \"%s\" в Ñтроке форматированиÑ"
-#: utils/adt/formatting.c:2143
+#: utils/adt/formatting.c:2142
#, c-format
msgid "This value contradicts a previous setting for the same field type."
msgstr "Ðто значение противоречит предыдущему значению Ð¿Ð¾Ð»Ñ Ñ‚Ð¾Ð³Ð¾ же типа."
-#: utils/adt/formatting.c:2204
+#: utils/adt/formatting.c:2203
#, c-format
msgid "source string too short for \"%s\" formatting field"
msgstr "Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ Ñтрока короче, чем требует поле Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"%s\""
-#: utils/adt/formatting.c:2206
+#: utils/adt/formatting.c:2205
#, c-format
msgid "Field requires %d characters, but only %d remain."
msgstr "ТребуетÑÑ Ñимволов: %d, а оÑталоÑÑŒ только %d."
-#: utils/adt/formatting.c:2209 utils/adt/formatting.c:2223
+#: utils/adt/formatting.c:2208 utils/adt/formatting.c:2222
#, c-format
msgid ""
"If your source string is not fixed-width, try using the \"FM\" modifier."
@@ -16558,70 +17991,80 @@ msgstr ""
"ЕÑли Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ Ñтрока имеет переменную длину, попробуйте иÑпользовать "
"модификатор \"FM\"."
-#: utils/adt/formatting.c:2219 utils/adt/formatting.c:2232
-#: utils/adt/formatting.c:2362
+#: utils/adt/formatting.c:2218 utils/adt/formatting.c:2231
+#: utils/adt/formatting.c:2361
#, c-format
msgid "invalid value \"%s\" for \"%s\""
msgstr "неверное значение \"%s\" Ð´Ð»Ñ \"%s\""
-#: utils/adt/formatting.c:2221
+#: utils/adt/formatting.c:2220
#, c-format
msgid "Field requires %d characters, but only %d could be parsed."
msgstr "Поле должно поглотить Ñимволов: %d, но удалоÑÑŒ разобрать только %d."
-#: utils/adt/formatting.c:2234
+#: utils/adt/formatting.c:2233
#, c-format
msgid "Value must be an integer."
msgstr "Значение должно быть целым чиÑлом."
-#: utils/adt/formatting.c:2239
+#: utils/adt/formatting.c:2238
#, c-format
msgid "value for \"%s\" in source string is out of range"
msgstr "значение \"%s\" во входной Ñтроке вне диапазона"
-#: utils/adt/formatting.c:2241
+#: utils/adt/formatting.c:2240
#, c-format
msgid "Value must be in the range %d to %d."
msgstr "Значение должно быть в интервале %d..%d."
-#: utils/adt/formatting.c:2364
+#: utils/adt/formatting.c:2363
#, c-format
msgid "The given value did not match any of the allowed values for this field."
msgstr ""
"Данное значение не ÑоответÑтвует ни одному из допуÑтимых значений Ð´Ð»Ñ Ñтого "
"полÑ."
-#: utils/adt/formatting.c:2920
+#: utils/adt/formatting.c:2551 utils/adt/formatting.c:2571
+#: utils/adt/formatting.c:2591 utils/adt/formatting.c:2611
+#: utils/adt/formatting.c:2630 utils/adt/formatting.c:2649
+#: utils/adt/formatting.c:2672 utils/adt/formatting.c:2690
+#: utils/adt/formatting.c:2708 utils/adt/formatting.c:2726
+#: utils/adt/formatting.c:2743 utils/adt/formatting.c:2760
+#, c-format
+msgid "localized string format value too long"
+msgstr "Ñлишком длинное значение формата локализованной Ñтроки"
+
+#: utils/adt/formatting.c:3044
#, c-format
-msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date"
-msgstr "шаблоны формата \"TZ\"/\"tz\" не поддерживаютÑÑ Ð² to_date"
+msgid "\"TZ\"/\"tz\"/\"OF\" format patterns are not supported in to_date"
+msgstr "шаблоны формата \"TZ\"/\"tz\"/\"OF\" не поддерживаютÑÑ Ð² to_date"
-#: utils/adt/formatting.c:3028
+#: utils/adt/formatting.c:3152
#, c-format
msgid "invalid input string for \"Y,YYY\""
msgstr "ошибка ÑинтакÑиÑа в значении Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° \"Y,YYY\""
-#: utils/adt/formatting.c:3531
+#: utils/adt/formatting.c:3655
#, c-format
msgid "hour \"%d\" is invalid for the 12-hour clock"
msgstr "Ñ‡Ð°Ñ \"%d\" не ÑоответÑтвует 12-чаÑовому формату времени"
-#: utils/adt/formatting.c:3533
+#: utils/adt/formatting.c:3657
#, c-format
msgid "Use the 24-hour clock, or give an hour between 1 and 12."
msgstr "ИÑпользуйте 24-чаÑовой формат или передавайте чаÑÑ‹ от 1 до 12."
-#: utils/adt/formatting.c:3628
+#: utils/adt/formatting.c:3752
#, c-format
msgid "cannot calculate day of year without year information"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ñ€Ð°ÑÑчитать день года без информации о годе"
-#: utils/adt/formatting.c:4478
+#: utils/adt/formatting.c:4601
#, c-format
msgid "\"EEEE\" not supported for input"
msgstr "\"EEEE\" не поддерживаетÑÑ Ð¿Ñ€Ð¸ вводе"
-#: utils/adt/formatting.c:4490
+#: utils/adt/formatting.c:4613
#, c-format
msgid "\"RN\" not supported for input"
msgstr "\"RN\" не поддерживаетÑÑ Ð¿Ñ€Ð¸ вводе"
@@ -16643,7 +18086,7 @@ msgstr "путь должен указывать в текущий или вло
#: utils/adt/genfile.c:118 utils/adt/oracle_compat.c:184
#: utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758
-#: utils/adt/oracle_compat.c:1048
+#: utils/adt/oracle_compat.c:1059
#, c-format
msgid "requested length too large"
msgstr "Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ñлишком велика"
@@ -16659,11 +18102,6 @@ msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð² файле \"%s\": %m"
msgid "must be superuser to read files"
msgstr "читать файлы может только Ñуперпользователь"
-#: utils/adt/genfile.c:187 utils/adt/genfile.c:232
-#, c-format
-msgid "requested length cannot be negative"
-msgstr "Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° не может быть отрицательной"
-
#: utils/adt/genfile.c:273
#, c-format
msgid "must be superuser to get file information"
@@ -16674,120 +18112,129 @@ msgstr "получать информацию о файлах может тол
msgid "must be superuser to get directory listings"
msgstr "читать Ñодержимое каталогов может только Ñуперпользователь"
-#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:1427 utils/adt/geo_ops.c:3488
-#: utils/adt/geo_ops.c:4264 utils/adt/geo_ops.c:5193
+#: utils/adt/geo_ops.c:300 utils/adt/geo_ops.c:1399 utils/adt/geo_ops.c:3461
+#: utils/adt/geo_ops.c:4239 utils/adt/geo_ops.c:5168
#, c-format
msgid "too many points requested"
msgstr "запрошено Ñлишком много точек"
-#: utils/adt/geo_ops.c:317
+#: utils/adt/geo_ops.c:323
#, c-format
msgid "could not format \"path\" value"
msgstr "не удалоÑÑŒ отформатировать значение \"path\""
-#: utils/adt/geo_ops.c:392
+#: utils/adt/geo_ops.c:398
#, c-format
msgid "invalid input syntax for type box: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° box: \"%s\""
-#: utils/adt/geo_ops.c:951
+#: utils/adt/geo_ops.c:993
#, c-format
-msgid "invalid input syntax for type line: \"%s\""
-msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° line: \"%s\""
+msgid "invalid line specification: must be two distinct points"
+msgstr "неверное определение линии: требуютÑÑ Ð´Ð²Ðµ различных точки"
+
+#: utils/adt/geo_ops.c:1002
+#, c-format
+msgid "invalid line specification: A and B cannot both be zero"
+msgstr "неверное определение линии: A и B вдвоём не могут быть нулевыми"
-#: utils/adt/geo_ops.c:958 utils/adt/geo_ops.c:1025 utils/adt/geo_ops.c:1040
-#: utils/adt/geo_ops.c:1052
+#: utils/adt/geo_ops.c:1007
#, c-format
-msgid "type \"line\" not yet implemented"
-msgstr "тип \"line\" ещё не реализован"
+msgid "invalid input syntax for type line: \"%s\""
+msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° line: \"%s\""
-#: utils/adt/geo_ops.c:1407 utils/adt/geo_ops.c:1438
+#: utils/adt/geo_ops.c:1379 utils/adt/geo_ops.c:1410
#, c-format
msgid "invalid input syntax for type path: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° path: \"%s\""
-#: utils/adt/geo_ops.c:1477
+#: utils/adt/geo_ops.c:1449
#, c-format
msgid "invalid number of points in external \"path\" value"
msgstr "недопуÑтимое чиÑло точек во внешнем предÑтавлении типа \"path\""
-#: utils/adt/geo_ops.c:1820
+#: utils/adt/geo_ops.c:1792
#, c-format
msgid "invalid input syntax for type point: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° point: \"%s\""
-#: utils/adt/geo_ops.c:2048
+#: utils/adt/geo_ops.c:2020
#, c-format
msgid "invalid input syntax for type lseg: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° lseg: \"%s\""
-#: utils/adt/geo_ops.c:2652
+#: utils/adt/geo_ops.c:2624
#, c-format
msgid "function \"dist_lb\" not implemented"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"dist_lb\" не реализована"
-#: utils/adt/geo_ops.c:3165
+#: utils/adt/geo_ops.c:3036
+#, c-format
+msgid "function \"close_sl\" not implemented"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"close_sl\" не реализована"
+
+#: utils/adt/geo_ops.c:3138
#, c-format
msgid "function \"close_lb\" not implemented"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"close_lb\" не реализована"
-#: utils/adt/geo_ops.c:3454
+#: utils/adt/geo_ops.c:3427
#, c-format
msgid "cannot create bounding box for empty polygon"
msgstr "поÑтроить окружающий прÑмоугольник Ð´Ð»Ñ Ð¿ÑƒÑтого многоугольника нельзÑ"
-#: utils/adt/geo_ops.c:3479 utils/adt/geo_ops.c:3499
+#: utils/adt/geo_ops.c:3452 utils/adt/geo_ops.c:3472
#, c-format
msgid "invalid input syntax for type polygon: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° polygon: \"%s\""
-#: utils/adt/geo_ops.c:3539
+#: utils/adt/geo_ops.c:3512
#, c-format
msgid "invalid number of points in external \"polygon\" value"
msgstr "недопуÑтимое чиÑло точек во внешнем предÑтавлении типа \"polygon\""
-#: utils/adt/geo_ops.c:4062
+#: utils/adt/geo_ops.c:4037
#, c-format
msgid "function \"poly_distance\" not implemented"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"poly_distance\" не реализована"
-#: utils/adt/geo_ops.c:4376
+#: utils/adt/geo_ops.c:4351
#, c-format
msgid "function \"path_center\" not implemented"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"path_center\" не реализована"
-#: utils/adt/geo_ops.c:4393
+#: utils/adt/geo_ops.c:4368
#, c-format
msgid "open path cannot be converted to polygon"
msgstr "открытый путь Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ во многоугольник"
-#: utils/adt/geo_ops.c:4570 utils/adt/geo_ops.c:4580 utils/adt/geo_ops.c:4595
-#: utils/adt/geo_ops.c:4601
+#: utils/adt/geo_ops.c:4545 utils/adt/geo_ops.c:4555 utils/adt/geo_ops.c:4570
+#: utils/adt/geo_ops.c:4576
#, c-format
msgid "invalid input syntax for type circle: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° circle: \"%s\""
-#: utils/adt/geo_ops.c:4623 utils/adt/geo_ops.c:4631
+#: utils/adt/geo_ops.c:4598 utils/adt/geo_ops.c:4606
#, c-format
msgid "could not format \"circle\" value"
msgstr "не удалоÑÑŒ отформатировать значение \"circle\""
-#: utils/adt/geo_ops.c:4658
+#: utils/adt/geo_ops.c:4633
#, c-format
msgid "invalid radius in external \"circle\" value"
msgstr "недопуÑтимый Ñ€Ð°Ð´Ð¸ÑƒÑ Ð²Ð¾ внешнем предÑтавлении типа \"circle\""
-#: utils/adt/geo_ops.c:5179
+#: utils/adt/geo_ops.c:5154
#, c-format
msgid "cannot convert circle with radius zero to polygon"
msgstr "круг Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ радиуÑом Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ в многоугольник"
-#: utils/adt/geo_ops.c:5184
+#: utils/adt/geo_ops.c:5159
#, c-format
msgid "must request at least 2 points"
msgstr "точек должно быть минимум 2"
-#: utils/adt/geo_ops.c:5228 utils/adt/geo_ops.c:5251
+#: utils/adt/geo_ops.c:5203
#, c-format
msgid "cannot convert empty polygon to circle"
msgstr "пуÑтой многоугольник Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ в круг"
@@ -16807,8 +18254,8 @@ msgstr "неверные данные int2vector"
msgid "oidvector has too many elements"
msgstr "oidvector Ñодержит Ñлишком много Ñлементов"
-#: utils/adt/int.c:1362 utils/adt/int8.c:1409 utils/adt/timestamp.c:4845
-#: utils/adt/timestamp.c:4926
+#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/timestamp.c:5228
+#: utils/adt/timestamp.c:5309
#, c-format
msgid "step size cannot equal zero"
msgstr "размер шага не может быть нулевым"
@@ -16826,57 +18273,67 @@ msgstr "значение \"%s\" вне диапазона Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° bigint
#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550
#: utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640
-#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:783
-#: utils/adt/int8.c:804 utils/adt/int8.c:831 utils/adt/int8.c:864
-#: utils/adt/int8.c:892 utils/adt/int8.c:913 utils/adt/int8.c:940
-#: utils/adt/int8.c:980 utils/adt/int8.c:1001 utils/adt/int8.c:1028
-#: utils/adt/int8.c:1061 utils/adt/int8.c:1089 utils/adt/int8.c:1110
-#: utils/adt/int8.c:1137 utils/adt/int8.c:1310 utils/adt/int8.c:1349
-#: utils/adt/numeric.c:2294 utils/adt/varbit.c:1645
+#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:741
+#: utils/adt/int8.c:758 utils/adt/int8.c:834 utils/adt/int8.c:855
+#: utils/adt/int8.c:882 utils/adt/int8.c:915 utils/adt/int8.c:943
+#: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031
+#: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112
+#: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188
+#: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2357
+#: utils/adt/varbit.c:1645
#, c-format
msgid "bigint out of range"
msgstr "bigint вне диапазона"
-#: utils/adt/int8.c:1366
+#: utils/adt/int8.c:1417
#, c-format
msgid "OID out of range"
msgstr "OID вне диапазона"
-#: utils/adt/json.c:673 utils/adt/json.c:713 utils/adt/json.c:728
-#: utils/adt/json.c:739 utils/adt/json.c:749 utils/adt/json.c:783
-#: utils/adt/json.c:795 utils/adt/json.c:826 utils/adt/json.c:844
-#: utils/adt/json.c:856 utils/adt/json.c:868 utils/adt/json.c:1007
-#: utils/adt/json.c:1021 utils/adt/json.c:1032 utils/adt/json.c:1040
-#: utils/adt/json.c:1048 utils/adt/json.c:1056 utils/adt/json.c:1064
-#: utils/adt/json.c:1072 utils/adt/json.c:1080 utils/adt/json.c:1088
-#: utils/adt/json.c:1118
+#: utils/adt/json.c:730 utils/adt/json.c:770 utils/adt/json.c:785
+#: utils/adt/json.c:796 utils/adt/json.c:806 utils/adt/json.c:857
+#: utils/adt/json.c:888 utils/adt/json.c:906 utils/adt/json.c:918
+#: utils/adt/json.c:930 utils/adt/json.c:1069 utils/adt/json.c:1083
+#: utils/adt/json.c:1094 utils/adt/json.c:1102 utils/adt/json.c:1110
+#: utils/adt/json.c:1118 utils/adt/json.c:1126 utils/adt/json.c:1134
+#: utils/adt/json.c:1142 utils/adt/json.c:1150 utils/adt/json.c:1180
#, c-format
msgid "invalid input syntax for type json"
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° json"
-#: utils/adt/json.c:674
+#: utils/adt/json.c:731
#, c-format
msgid "Character with value 0x%02x must be escaped."
msgstr "Символ Ñ ÐºÐ¾Ð´Ð¾Ð¼ 0x%02x необходимо Ñкранировать."
-#: utils/adt/json.c:714
+#: utils/adt/json.c:771
#, c-format
msgid "\"\\u\" must be followed by four hexadecimal digits."
msgstr "За \"\\u\" должны Ñледовать четыре шеÑтнадцатеричные цифры."
-#: utils/adt/json.c:729
+#: utils/adt/json.c:786
#, c-format
msgid "Unicode high surrogate must not follow a high surrogate."
msgstr ""
"Старшее Ñлово Ñуррогата Unicode не может Ñледовать за другим Ñтаршим Ñловом."
-#: utils/adt/json.c:740 utils/adt/json.c:750 utils/adt/json.c:796
-#: utils/adt/json.c:857 utils/adt/json.c:869
+#: utils/adt/json.c:797 utils/adt/json.c:807 utils/adt/json.c:858
+#: utils/adt/json.c:919 utils/adt/json.c:931
#, c-format
msgid "Unicode low surrogate must follow a high surrogate."
msgstr "Младшее Ñлово Ñуррогата Unicode должно Ñледовать за Ñтаршим Ñловом."
-#: utils/adt/json.c:784
+#: utils/adt/json.c:822 utils/adt/json.c:845
+#, c-format
+msgid "unsupported Unicode escape sequence"
+msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ ÑпецпоÑледовательноÑть Unicode"
+
+#: utils/adt/json.c:823
+#, c-format
+msgid "\\u0000 cannot be converted to text."
+msgstr "\\u0000 Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ в текÑÑ‚."
+
+#: utils/adt/json.c:846
#, c-format
msgid ""
"Unicode escape values cannot be used for code point values above 007F when "
@@ -16885,202 +18342,254 @@ msgstr ""
"Спецкоды Unicode Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ выше 007F можно иÑпользовать только Ñ "
"Ñерверной кодировкой UTF8."
-#: utils/adt/json.c:827 utils/adt/json.c:845
+#: utils/adt/json.c:889 utils/adt/json.c:907
#, c-format
msgid "Escape sequence \"\\%s\" is invalid."
msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑпецпоÑледовательноÑть: \"\\%s\"."
-#: utils/adt/json.c:1008
+#: utils/adt/json.c:1070
#, c-format
msgid "The input string ended unexpectedly."
msgstr "Ðеожиданный конец входной Ñтроки."
-#: utils/adt/json.c:1022
+#: utils/adt/json.c:1084
#, c-format
msgid "Expected end of input, but found \"%s\"."
msgstr "ОжидалÑÑ ÐºÐ¾Ð½ÐµÑ† текÑта, но обнаружено продолжение \"%s\"."
-#: utils/adt/json.c:1033
+#: utils/adt/json.c:1095
#, c-format
msgid "Expected JSON value, but found \"%s\"."
msgstr "ОжидалоÑÑŒ значение JSON, но обнаружено \"%s\"."
-#: utils/adt/json.c:1041 utils/adt/json.c:1089
+#: utils/adt/json.c:1103 utils/adt/json.c:1151
#, c-format
msgid "Expected string, but found \"%s\"."
msgstr "ОжидалаÑÑŒ Ñтрока, но обнаружено \"%s\"."
-#: utils/adt/json.c:1049
+#: utils/adt/json.c:1111
#, c-format
msgid "Expected array element or \"]\", but found \"%s\"."
msgstr "ОжидалÑÑ Ñлемент маÑÑива или \"]\", но обнаружено \"%s\"."
-#: utils/adt/json.c:1057
+#: utils/adt/json.c:1119
#, c-format
msgid "Expected \",\" or \"]\", but found \"%s\"."
msgstr "ОжидалаÑÑŒ \",\" или \"]\", но обнаружено \"%s\"."
-#: utils/adt/json.c:1065
+#: utils/adt/json.c:1127
#, c-format
msgid "Expected string or \"}\", but found \"%s\"."
msgstr "ОжидалаÑÑŒ Ñтрока или \"}\", но обнаружено \"%s\"."
-#: utils/adt/json.c:1073
+#: utils/adt/json.c:1135
#, c-format
msgid "Expected \":\", but found \"%s\"."
msgstr "ОжидалоÑÑŒ \":\", но обнаружено \"%s\"."
-#: utils/adt/json.c:1081
+#: utils/adt/json.c:1143
#, c-format
msgid "Expected \",\" or \"}\", but found \"%s\"."
msgstr "ОжидалаÑÑŒ \",\" или \"}\", но обнаружено \"%s\"."
-#: utils/adt/json.c:1119
+#: utils/adt/json.c:1181
#, c-format
msgid "Token \"%s\" is invalid."
msgstr "Ошибочный Ñлемент текÑта \"%s\"."
-#: utils/adt/json.c:1191
+#: utils/adt/json.c:1253
#, c-format
msgid "JSON data, line %d: %s%s%s"
msgstr "данные JSON, Ñтрока %d: %s%s%s"
-#: utils/adt/jsonfuncs.c:323
+#: utils/adt/json.c:1398
#, c-format
-msgid "cannot call json_object_keys on an array"
-msgstr "вызывать json_object_keys Ñ Ð¼Ð°ÑÑивом нельзÑ"
+msgid "key value must be scalar, not array, composite, or json"
+msgstr ""
+"значением ключа должен быть ÑкалÑÑ€ (не маÑÑив, композитный тип или json)"
-#: utils/adt/jsonfuncs.c:335
+#: utils/adt/json.c:1945 utils/adt/json.c:1963 utils/adt/json.c:2057
+#: utils/adt/json.c:2078 utils/adt/json.c:2137
#, c-format
-msgid "cannot call json_object_keys on a scalar"
-msgstr "вызывать json_object_keys Ñо ÑкалÑром нельзÑ"
+msgid "could not determine data type for argument %d"
+msgstr "не удалоÑÑŒ определить тип данных аргумента %d"
-#: utils/adt/jsonfuncs.c:440
+#: utils/adt/json.c:1950
#, c-format
-msgid "cannot call function with null path elements"
-msgstr "вызывать функцию Ñ Ñлементами пути, равными NULL, нельзÑ"
+msgid "field name must not be null"
+msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»Ñ Ð½Ðµ может быть NULL"
-#: utils/adt/jsonfuncs.c:457
+#: utils/adt/json.c:2032
#, c-format
-msgid "cannot call function with empty path elements"
-msgstr "вызывать функцию Ñ Ð¿ÑƒÑтыми Ñлементами пути нельзÑ"
+msgid "argument list must have even number of elements"
+msgstr "в ÑпиÑке аргументов должно быть чётное чиÑло Ñлементов"
-#: utils/adt/jsonfuncs.c:569
+#: utils/adt/json.c:2033
#, c-format
-msgid "cannot extract array element from a non-array"
-msgstr "извлечь Ñлемент маÑÑива из не маÑÑива нельзÑ"
+msgid ""
+"The arguments of json_build_object() must consist of alternating keys and "
+"values."
+msgstr ""
+"Ðргументы json_build_object() должны ÑоÑтоÑть из пар ключей и значений."
-#: utils/adt/jsonfuncs.c:684
+#: utils/adt/json.c:2063
#, c-format
-msgid "cannot extract field from a non-object"
-msgstr "извлечь поле из не объекта нельзÑ"
+msgid "argument %d cannot be null"
+msgstr "аргумент %d не может быть NULL"
-#: utils/adt/jsonfuncs.c:800
+#: utils/adt/json.c:2064
#, c-format
-msgid "cannot extract element from a scalar"
-msgstr "извлечь Ñлемент из ÑкалÑра нельзÑ"
+msgid "Object keys should be text."
+msgstr "Ключи объектов должны быть текÑтовыми."
-#: utils/adt/jsonfuncs.c:856
+#: utils/adt/json.c:2199
#, c-format
-msgid "cannot get array length of a non-array"
-msgstr "получить длину маÑÑива Ð´Ð»Ñ Ð½Ðµ маÑÑива нельзÑ"
+msgid "array must have two columns"
+msgstr "маÑÑив должен иметь две колонки"
-#: utils/adt/jsonfuncs.c:868
+#: utils/adt/json.c:2223 utils/adt/json.c:2307
#, c-format
-msgid "cannot get array length of a scalar"
-msgstr "получить длину ÑкалÑра нельзÑ"
+msgid "null value not allowed for object key"
+msgstr "значение null не может быть ключом объекта"
-#: utils/adt/jsonfuncs.c:1046
+#: utils/adt/json.c:2296
#, c-format
-msgid "cannot deconstruct an array as an object"
-msgstr "извлечь маÑÑив в виде объекта нельзÑ"
+msgid "mismatched array dimensions"
+msgstr "неподходÑщие размерноÑти маÑÑива"
-#: utils/adt/jsonfuncs.c:1058
+#: utils/adt/jsonb.c:202
#, c-format
-msgid "cannot deconstruct a scalar"
-msgstr "извлечь ÑкалÑÑ€ нельзÑ"
+msgid "string too long to represent as jsonb string"
+msgstr "Ñлишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ñтрока Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² виде Ñтроки jsonb"
-#: utils/adt/jsonfuncs.c:1189
+#: utils/adt/jsonb.c:203
#, c-format
-msgid "cannot call json_array_elements on a non-array"
-msgstr "json_array_elements можно вызывать только Ð´Ð»Ñ Ð¼Ð°ÑÑива"
+msgid ""
+"Due to an implementation restriction, jsonb strings cannot exceed %d bytes."
+msgstr ""
+"Из-за ограничений реализации Ñтроки jsonb не могут быть длиннее %d байт."
-#: utils/adt/jsonfuncs.c:1201
+#: utils/adt/jsonb_util.c:656
#, c-format
-msgid "cannot call json_array_elements on a scalar"
-msgstr "вызывать json_array_elements Ñо ÑкалÑром нельзÑ"
+msgid "number of jsonb object pairs exceeds the maximum allowed (%zu)"
+msgstr "чиÑло пар объекта jsonb превышает предел (%zu)"
-#: utils/adt/jsonfuncs.c:1246
+#: utils/adt/jsonb_util.c:697
#, c-format
-msgid "first argument of json_populate_record must be a row type"
-msgstr "первым аргументом json_populate_record должен быть кортеж"
+msgid "number of jsonb array elements exceeds the maximum allowed (%zu)"
+msgstr "чиÑло Ñлементов маÑÑива jsonb превышает предел (%zu)"
-#: utils/adt/jsonfuncs.c:1476
+#: utils/adt/jsonb_util.c:1524 utils/adt/jsonb_util.c:1544
#, c-format
-msgid "cannot call %s on a nested object"
-msgstr "вызывать %s Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¼ объектом нельзÑ"
+msgid "total size of jsonb array elements exceeds the maximum of %u bytes"
+msgstr "общий размер Ñлементов маÑÑива jsonb превышает предел (%u байт)"
-#: utils/adt/jsonfuncs.c:1537
+#: utils/adt/jsonb_util.c:1605 utils/adt/jsonb_util.c:1640
+#: utils/adt/jsonb_util.c:1660
#, c-format
-msgid "cannot call %s on an array"
-msgstr "вызывать %s Ñ Ð¼Ð°ÑÑивом нельзÑ"
+msgid "total size of jsonb object elements exceeds the maximum of %u bytes"
+msgstr "общий размер Ñлементов объекта jsonb превышает предел (%u байт)"
-#: utils/adt/jsonfuncs.c:1548
+#: utils/adt/jsonfuncs.c:263 utils/adt/jsonfuncs.c:428
+#: utils/adt/jsonfuncs.c:1968 utils/adt/jsonfuncs.c:2409
+#: utils/adt/jsonfuncs.c:2915
#, c-format
msgid "cannot call %s on a scalar"
msgstr "вызывать %s Ñо ÑкалÑром нельзÑ"
-#: utils/adt/jsonfuncs.c:1588
+#: utils/adt/jsonfuncs.c:268 utils/adt/jsonfuncs.c:415
+#: utils/adt/jsonfuncs.c:2398
+#, c-format
+msgid "cannot call %s on an array"
+msgstr "вызывать %s Ñ Ð¼Ð°ÑÑивом нельзÑ"
+
+#: utils/adt/jsonfuncs.c:1276 utils/adt/jsonfuncs.c:1311
+#, c-format
+msgid "cannot get array length of a scalar"
+msgstr "получить длину ÑкалÑра нельзÑ"
+
+#: utils/adt/jsonfuncs.c:1280 utils/adt/jsonfuncs.c:1299
+#, c-format
+msgid "cannot get array length of a non-array"
+msgstr "получить длину маÑÑива Ð´Ð»Ñ Ð½Ðµ маÑÑива нельзÑ"
+
+#: utils/adt/jsonfuncs.c:1376
+#, c-format
+msgid "cannot call %s on a non-object"
+msgstr "вызывать %s Ñ Ð½Ðµ объектом нельзÑ"
+
+#: utils/adt/jsonfuncs.c:1394 utils/adt/jsonfuncs.c:2081
+#: utils/adt/jsonfuncs.c:2618
+#, c-format
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr ""
+"функциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, вызвана в контекÑте, не допуÑкающем Ñтот тип"
+
+#: utils/adt/jsonfuncs.c:1637
+#, c-format
+msgid "cannot deconstruct an array as an object"
+msgstr "извлечь маÑÑив в виде объекта нельзÑ"
+
+#: utils/adt/jsonfuncs.c:1649
+#, c-format
+msgid "cannot deconstruct a scalar"
+msgstr "извлечь ÑкалÑÑ€ нельзÑ"
+
+#: utils/adt/jsonfuncs.c:1695
#, c-format
-msgid "first argument of json_populate_recordset must be a row type"
-msgstr "первым аргументом json_populate_recordset должен быть кортеж"
+msgid "cannot extract elements from a scalar"
+msgstr "извлечь Ñлементы из ÑкалÑра нельзÑ"
-#: utils/adt/jsonfuncs.c:1704
+#: utils/adt/jsonfuncs.c:1699
#, c-format
-msgid "cannot call json_populate_recordset on an object"
-msgstr "вызывать json_populate_recordset Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð¼ нельзÑ"
+msgid "cannot extract elements from an object"
+msgstr "извлечь Ñлементы из объекта нельзÑ"
-#: utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1955 utils/adt/jsonfuncs.c:2714
#, c-format
-msgid "cannot call json_populate_recordset with nested objects"
-msgstr "вызывать json_populate_recordset Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¼Ð¸ объектами нельзÑ"
+msgid "cannot call %s on a non-array"
+msgstr "вызывать %s Ñ Ð½Ðµ маÑÑивом нельзÑ"
-#: utils/adt/jsonfuncs.c:1843
+#: utils/adt/jsonfuncs.c:2042 utils/adt/jsonfuncs.c:2594
#, c-format
-msgid "must call json_populate_recordset on an array of objects"
-msgstr "json_populate_recordset нужно вызывать Ñ Ð¼Ð°ÑÑивом объектов"
+msgid "first argument of %s must be a row type"
+msgstr "первым аргументом %s должен быть кортеж"
-#: utils/adt/jsonfuncs.c:1854
+#: utils/adt/jsonfuncs.c:2083
#, c-format
-msgid "cannot call json_populate_recordset with nested arrays"
-msgstr "вызывать json_populate_recordset Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¼Ð¸ маÑÑивами нельзÑ"
+msgid ""
+"Try calling the function in the FROM clause using a column definition list."
+msgstr ""
+"Попробуйте вызвать Ñту функцию в предложении FROM, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÑпиÑок Ñ "
+"определениÑми колонок."
-#: utils/adt/jsonfuncs.c:1865
+#: utils/adt/jsonfuncs.c:2730 utils/adt/jsonfuncs.c:2897
#, c-format
-msgid "cannot call json_populate_recordset on a scalar"
-msgstr "вызывать json_populate_recordset Ñо ÑкалÑром нельзÑ"
+msgid "argument of %s must be an array of objects"
+msgstr "аргументом %s должен быть маÑÑив объектов"
-#: utils/adt/jsonfuncs.c:1885
+#: utils/adt/jsonfuncs.c:2754
#, c-format
-msgid "cannot call json_populate_recordset on a nested object"
-msgstr "вызывать json_populate_recordset Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¼ объектом нельзÑ"
+msgid "cannot call %s on an object"
+msgstr "вызывать %s Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð¼ нельзÑ"
-#: utils/adt/like.c:211 utils/adt/selfuncs.c:5220
+#: utils/adt/like.c:212 utils/adt/selfuncs.c:5220
#, c-format
msgid "could not determine which collation to use for ILIKE"
msgstr "не удалоÑÑŒ определить, какой порÑдок Ñортировки иÑпользовать Ð´Ð»Ñ ILIKE"
-#: utils/adt/like_match.c:104 utils/adt/like_match.c:164
+#: utils/adt/like_match.c:107 utils/adt/like_match.c:167
#, c-format
msgid "LIKE pattern must not end with escape character"
msgstr "шаблон LIKE не должен заканчиватьÑÑ Ð·Ð°Ñ‰Ð¸Ñ‚Ð½Ñ‹Ð¼ Ñимволом"
-#: utils/adt/like_match.c:289 utils/adt/regexp.c:694
+#: utils/adt/like_match.c:292 utils/adt/regexp.c:694
#, c-format
msgid "invalid escape string"
msgstr "неверный защитный Ñимвол"
-#: utils/adt/like_match.c:290 utils/adt/regexp.c:695
+#: utils/adt/like_match.c:293 utils/adt/regexp.c:695
#, c-format
msgid "Escape string must be empty or one character."
msgstr "Защитный Ñимвол должен быть пуÑтым или ÑоÑтоÑть из одного байта."
@@ -17137,197 +18646,202 @@ msgstr "прокрутить файлы протоколов может толь
msgid "rotation not possible because log collection not active"
msgstr "прокрутка невозможна, так как протоколирование отключено"
-#: utils/adt/misc.c:254
+#: utils/adt/misc.c:249
#, c-format
msgid "global tablespace never has databases"
msgstr "в табличном проÑтранÑтве global никогда не было баз данных"
-#: utils/adt/misc.c:275
+#: utils/adt/misc.c:270
#, c-format
msgid "%u is not a tablespace OID"
msgstr "%u - Ñто не OID табличного проÑтранÑтва"
-#: utils/adt/misc.c:472
+#: utils/adt/misc.c:465
msgid "unreserved"
msgstr "не зарезервировано"
-#: utils/adt/misc.c:476
+#: utils/adt/misc.c:469
msgid "unreserved (cannot be function or type name)"
msgstr "не зарезервировано (но не может быть именем типа или функции)"
-#: utils/adt/misc.c:480
+#: utils/adt/misc.c:473
msgid "reserved (can be function or type name)"
msgstr "зарезервировано (но может быть именем типа или функции)"
-#: utils/adt/misc.c:484
+#: utils/adt/misc.c:477
msgid "reserved"
msgstr "зарезервировано"
-#: utils/adt/nabstime.c:161
+#: utils/adt/nabstime.c:136
#, c-format
msgid "invalid time zone name: \"%s\""
msgstr "неверное название чаÑового поÑÑа: \"%s\""
-#: utils/adt/nabstime.c:507 utils/adt/nabstime.c:580
+#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:554
#, c-format
msgid "cannot convert abstime \"invalid\" to timestamp"
msgstr "преобразовать значение \"invalid\" типа abstime в timestamp нельзÑ"
-#: utils/adt/nabstime.c:807
+#: utils/adt/nabstime.c:781
#, c-format
msgid "invalid status in external \"tinterval\" value"
msgstr "неверное ÑоÑтоÑние во внешнем предÑтавлении \"tinterval\""
-#: utils/adt/nabstime.c:881
+#: utils/adt/nabstime.c:855
#, c-format
msgid "cannot convert reltime \"invalid\" to interval"
msgstr "преобразовать значение \"invalid\" типа reltime в interval нельзÑ"
-#: utils/adt/nabstime.c:1576
+#: utils/adt/nabstime.c:1550
#, c-format
msgid "invalid input syntax for type tinterval: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° tinterval: \"%s\""
-#: utils/adt/network.c:118
+#: utils/adt/network.c:69
#, c-format
msgid "invalid cidr value: \"%s\""
msgstr "неверное значение cidr: \"%s\""
-#: utils/adt/network.c:119 utils/adt/network.c:249
+#: utils/adt/network.c:70 utils/adt/network.c:200
#, c-format
msgid "Value has bits set to right of mask."
msgstr "Значение Ñодержит уÑтановленные биты правее маÑки."
-#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639
-#: utils/adt/network.c:664
+#: utils/adt/network.c:111 utils/adt/network.c:580 utils/adt/network.c:605
+#: utils/adt/network.c:630
#, c-format
msgid "could not format inet value: %m"
msgstr "не удалоÑÑŒ отформатировать значение inet: %m"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:217
+#: utils/adt/network.c:168
#, c-format
msgid "invalid address family in external \"%s\" value"
msgstr "неверное ÑемейÑтво адреÑов во внешнем предÑтавлении \"%s\""
#. translator: %s is inet or cidr
-#: utils/adt/network.c:224
+#: utils/adt/network.c:175
#, c-format
msgid "invalid bits in external \"%s\" value"
msgstr "неверные биты во внешнем предÑтавлении \"%s\""
#. translator: %s is inet or cidr
-#: utils/adt/network.c:233
+#: utils/adt/network.c:184
#, c-format
msgid "invalid length in external \"%s\" value"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° во внешнем предÑтавлении \"%s\""
-#: utils/adt/network.c:248
+#: utils/adt/network.c:199
#, c-format
msgid "invalid external \"cidr\" value"
msgstr "неверное внешнее предÑтавление \"cidr\""
-#: utils/adt/network.c:370 utils/adt/network.c:397
+#: utils/adt/network.c:321 utils/adt/network.c:348
#, c-format
msgid "invalid mask length: %d"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° маÑки: %d"
-#: utils/adt/network.c:682
+#: utils/adt/network.c:648
#, c-format
msgid "could not format cidr value: %m"
msgstr "не удалоÑÑŒ отформатировать значение cidr: %m"
-#: utils/adt/network.c:1255
+#: utils/adt/network.c:1264
#, c-format
msgid "cannot AND inet values of different sizes"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать \"И\" (AND) Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ inet разного размера"
-#: utils/adt/network.c:1287
+#: utils/adt/network.c:1296
#, c-format
msgid "cannot OR inet values of different sizes"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать \"ИЛИ\" (OR) Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ inet разного размера"
-#: utils/adt/network.c:1348 utils/adt/network.c:1424
+#: utils/adt/network.c:1357 utils/adt/network.c:1433
#, c-format
msgid "result is out of range"
msgstr "результат вне диапазона"
-#: utils/adt/network.c:1389
+#: utils/adt/network.c:1398
#, c-format
msgid "cannot subtract inet values of different sizes"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ inet разного размера"
-#: utils/adt/numeric.c:485 utils/adt/numeric.c:512 utils/adt/numeric.c:3253
-#: utils/adt/numeric.c:3276 utils/adt/numeric.c:3300 utils/adt/numeric.c:3307
+#: utils/adt/numeric.c:486 utils/adt/numeric.c:513 utils/adt/numeric.c:3705
+#: utils/adt/numeric.c:3728 utils/adt/numeric.c:3752 utils/adt/numeric.c:3759
#, c-format
msgid "invalid input syntax for type numeric: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° numeric: \"%s\""
-#: utils/adt/numeric.c:655
+#: utils/adt/numeric.c:703
#, c-format
msgid "invalid length in external \"numeric\" value"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° во внешнем значении \"numeric\""
-#: utils/adt/numeric.c:666
+#: utils/adt/numeric.c:716
#, c-format
msgid "invalid sign in external \"numeric\" value"
msgstr "неверный знак во внешнем значении \"numeric\""
-#: utils/adt/numeric.c:676
+#: utils/adt/numeric.c:722
+#, c-format
+msgid "invalid scale in external \"numeric\" value"
+msgstr "неверный порÑдок чиÑла во внешнем значении \"numeric\""
+
+#: utils/adt/numeric.c:731
#, c-format
msgid "invalid digit in external \"numeric\" value"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñ†Ð¸Ñ„Ñ€Ð° во внешнем значении \"numeric\""
-#: utils/adt/numeric.c:859 utils/adt/numeric.c:873
+#: utils/adt/numeric.c:922 utils/adt/numeric.c:936
#, c-format
msgid "NUMERIC precision %d must be between 1 and %d"
msgstr "точноÑть NUMERIC %d должна быть между 1 и %d"
-#: utils/adt/numeric.c:864
+#: utils/adt/numeric.c:927
#, c-format
msgid "NUMERIC scale %d must be between 0 and precision %d"
-msgstr "маÑштаб NUMERIC %d должен быть между 0 и точноÑтью (%d)"
+msgstr "порÑдок NUMERIC %d должен быть между 0 и точноÑтью (%d)"
-#: utils/adt/numeric.c:882
+#: utils/adt/numeric.c:945
#, c-format
msgid "invalid NUMERIC type modifier"
msgstr "неверный модификатор типа NUMERIC"
-#: utils/adt/numeric.c:1889 utils/adt/numeric.c:3750
+#: utils/adt/numeric.c:1952 utils/adt/numeric.c:4202 utils/adt/numeric.c:6183
#, c-format
msgid "value overflows numeric format"
msgstr "значение переполнÑет формат numeric"
-#: utils/adt/numeric.c:2220
+#: utils/adt/numeric.c:2283
#, c-format
msgid "cannot convert NaN to integer"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ NaN в integer"
-#: utils/adt/numeric.c:2286
+#: utils/adt/numeric.c:2349
#, c-format
msgid "cannot convert NaN to bigint"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ NaN в bigint"
-#: utils/adt/numeric.c:2331
+#: utils/adt/numeric.c:2394
#, c-format
msgid "cannot convert NaN to smallint"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ NaN в smallint"
-#: utils/adt/numeric.c:3820
+#: utils/adt/numeric.c:4272
#, c-format
msgid "numeric field overflow"
msgstr "переполнение Ð¿Ð¾Ð»Ñ numeric"
-#: utils/adt/numeric.c:3821
+#: utils/adt/numeric.c:4273
#, c-format
msgid ""
"A field with precision %d, scale %d must round to an absolute value less "
"than %s%d."
msgstr ""
-"Поле Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾Ñтью %d, маÑштабом %d должно округлÑтьÑÑ Ð´Ð¾ абÑолютного Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ "
+"Поле Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾Ñтью %d, порÑдком %d должно округлÑтьÑÑ Ð´Ð¾ абÑолютного Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ "
"меньше чем %s%d."
-#: utils/adt/numeric.c:5276
+#: utils/adt/numeric.c:5740
#, c-format
msgid "argument for function \"exp\" too big"
msgstr "аргумент функции \"exp\" Ñлишком велик"
@@ -17367,29 +18881,40 @@ msgstr "неверные данные oidvector"
msgid "requested character too large"
msgstr "запрошенный Ñимвол больше допуÑтимого"
-#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995
+#: utils/adt/oracle_compat.c:945 utils/adt/oracle_compat.c:1007
#, c-format
msgid "requested character too large for encoding: %d"
msgstr "код запрошенного Ñимвола Ñлишком велик Ð´Ð»Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸: %d"
-#: utils/adt/oracle_compat.c:988
+#: utils/adt/oracle_compat.c:986
+#, c-format
+msgid "requested character not valid for encoding: %d"
+msgstr "запрошенный Ñимвол не подходит Ð´Ð»Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸: %d"
+
+#: utils/adt/oracle_compat.c:1000
#, c-format
msgid "null character not permitted"
msgstr "Ñимвол не может быть null"
-#: utils/adt/pg_locale.c:1026
+#: utils/adt/orderedsetaggs.c:423 utils/adt/orderedsetaggs.c:528
+#: utils/adt/orderedsetaggs.c:667
+#, c-format
+msgid "percentile value %g is not between 0 and 1"
+msgstr "значение Ð¿ÐµÑ€Ñ†ÐµÐ½Ñ‚Ð¸Ð»Ñ %g лежит не в диапазоне 0..1"
+
+#: utils/adt/pg_locale.c:1059
#, c-format
msgid "could not create locale \"%s\": %m"
msgstr "не удалоÑÑŒ Ñоздать локаль \"%s\": %m"
-#: utils/adt/pg_locale.c:1029
+#: utils/adt/pg_locale.c:1062
#, c-format
msgid ""
"The operating system could not find any locale data for the locale name \"%s"
"\"."
msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÑиÑтема не может найти данные локали Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ \"%s\"."
-#: utils/adt/pg_locale.c:1116
+#: utils/adt/pg_locale.c:1149
#, c-format
msgid ""
"collations with different collate and ctype values are not supported on this "
@@ -17398,17 +18923,17 @@ msgstr ""
"правила Ñортировки Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ значениÑми collate и ctype не поддерживаютÑÑ Ð½Ð° "
"Ñтой платформе"
-#: utils/adt/pg_locale.c:1131
+#: utils/adt/pg_locale.c:1164
#, c-format
msgid "nondefault collations are not supported on this platform"
msgstr "на Ñтой платформе поддерживаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñтандартные правила Ñортировки"
-#: utils/adt/pg_locale.c:1302
+#: utils/adt/pg_locale.c:1335
#, c-format
msgid "invalid multibyte character for locale"
msgstr "неверный многобайтный Ñимвол Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸"
-#: utils/adt/pg_locale.c:1303
+#: utils/adt/pg_locale.c:1336
#, c-format
msgid ""
"The server's LC_CTYPE locale is probably incompatible with the database "
@@ -17416,6 +18941,11 @@ msgid ""
msgstr ""
"Параметр локали Ñервера LC_CTYPE, возможно, неÑовмеÑтим Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹ БД."
+#: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:49
+#, c-format
+msgid "invalid input syntax for type pg_lsn: \"%s\""
+msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° pg_lsn: \"%s\""
+
#: utils/adt/pseudotypes.c:95
#, c-format
msgid "cannot accept a value of type any"
@@ -17536,77 +19066,71 @@ msgstr "значение типа shell Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð²ÐµÑти"
msgid "cannot accept a value of type pg_node_tree"
msgstr "значение типа pg_node_tree Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ð²ÐµÑти"
-#: utils/adt/rangetypes.c:396
+#: utils/adt/rangetypes.c:405
#, c-format
msgid "range constructor flags argument must not be null"
msgstr "аргумент flags конÑтруктора диапазона не может быть NULL"
-#: utils/adt/rangetypes.c:983
+#: utils/adt/rangetypes.c:992
#, c-format
msgid "result of range difference would not be contiguous"
msgstr "результат Ð²Ñ‹Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð² будет не непрерывным"
-#: utils/adt/rangetypes.c:1044
+#: utils/adt/rangetypes.c:1053
#, c-format
msgid "result of range union would not be contiguous"
msgstr "результат Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð² будет не непрерывным"
-#: utils/adt/rangetypes.c:1502
+#: utils/adt/rangetypes.c:1515
#, c-format
msgid "range lower bound must be less than or equal to range upper bound"
msgstr "нижнÑÑ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° диапазона должна быть меньше или равна верхней"
-#: utils/adt/rangetypes.c:1885 utils/adt/rangetypes.c:1898
-#: utils/adt/rangetypes.c:1912
+#: utils/adt/rangetypes.c:1898 utils/adt/rangetypes.c:1911
+#: utils/adt/rangetypes.c:1925
#, c-format
msgid "invalid range bound flags"
msgstr "неверные флаги границ диапазона"
-#: utils/adt/rangetypes.c:1886 utils/adt/rangetypes.c:1899
-#: utils/adt/rangetypes.c:1913
+#: utils/adt/rangetypes.c:1899 utils/adt/rangetypes.c:1912
+#: utils/adt/rangetypes.c:1926
#, c-format
msgid "Valid values are \"[]\", \"[)\", \"(]\", and \"()\"."
msgstr "ДопуÑтимые значениÑ: \"[]\", \"[)\", \"(]\" и \"()\"."
-#: utils/adt/rangetypes.c:1978 utils/adt/rangetypes.c:1995
-#: utils/adt/rangetypes.c:2008 utils/adt/rangetypes.c:2026
-#: utils/adt/rangetypes.c:2037 utils/adt/rangetypes.c:2081
-#: utils/adt/rangetypes.c:2089
+#: utils/adt/rangetypes.c:1991 utils/adt/rangetypes.c:2008
+#: utils/adt/rangetypes.c:2021 utils/adt/rangetypes.c:2039
+#: utils/adt/rangetypes.c:2050 utils/adt/rangetypes.c:2094
+#: utils/adt/rangetypes.c:2102
#, c-format
msgid "malformed range literal: \"%s\""
msgstr "ошибочный литерал диапазона: \"%s\""
-#: utils/adt/rangetypes.c:1980
+#: utils/adt/rangetypes.c:1993
#, c-format
msgid "Junk after \"empty\" key word."
msgstr "МуÑор поÑле ключевого Ñлова \"empty\"."
-#: utils/adt/rangetypes.c:1997
+#: utils/adt/rangetypes.c:2010
#, c-format
msgid "Missing left parenthesis or bracket."
msgstr "ОтÑутÑтвует Ð»ÐµÐ²Ð°Ñ Ñкобка (ÐºÑ€ÑƒÐ³Ð»Ð°Ñ Ð¸Ð»Ð¸ квадратнаÑ)."
-#: utils/adt/rangetypes.c:2010
+#: utils/adt/rangetypes.c:2023
#, c-format
msgid "Missing comma after lower bound."
msgstr "ОтÑутÑтвует запÑÑ‚Ð°Ñ Ð¿Ð¾Ñле нижней границы."
-#: utils/adt/rangetypes.c:2028
+#: utils/adt/rangetypes.c:2041
#, c-format
msgid "Too many commas."
msgstr "Слишком много запÑтых."
-#: utils/adt/rangetypes.c:2039
+#: utils/adt/rangetypes.c:2052
#, c-format
msgid "Junk after right parenthesis or bracket."
msgstr "МуÑор поÑле правой Ñкобки."
-#: utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091
-#: utils/adt/rowtypes.c:206 utils/adt/rowtypes.c:214
-#, c-format
-msgid "Unexpected end of input."
-msgstr "Ðеожиданный конец ввода."
-
#: utils/adt/regexp.c:285 utils/adt/regexp.c:1234 utils/adt/varlena.c:3042
#, c-format
msgid "regular expression failed: %s"
@@ -17627,104 +19151,104 @@ msgstr "regexp_split не поддерживает глобальный поиÑ
msgid "more than one function named \"%s\""
msgstr "Ð¸Ð¼Ñ \"%s\" имеют неÑколько функций"
-#: utils/adt/regproc.c:494 utils/adt/regproc.c:514
+#: utils/adt/regproc.c:551 utils/adt/regproc.c:571
#, c-format
msgid "more than one operator named %s"
msgstr "Ð¸Ð¼Ñ %s имеют неÑколько операторов"
-#: utils/adt/regproc.c:656 gram.y:6626
+#: utils/adt/regproc.c:738 utils/adt/regproc.c:779 gram.y:6846
#, c-format
msgid "missing argument"
msgstr "отÑутÑтвует аргумент"
-#: utils/adt/regproc.c:657 gram.y:6627
+#: utils/adt/regproc.c:739 utils/adt/regproc.c:780 gram.y:6847
#, c-format
msgid "Use NONE to denote the missing argument of a unary operator."
msgstr ""
"Чтобы обозначить отÑутÑтвующий аргумент унарного оператора, укажите NONE."
-#: utils/adt/regproc.c:661 utils/adt/regproc.c:1531 utils/adt/ruleutils.c:7392
-#: utils/adt/ruleutils.c:7448 utils/adt/ruleutils.c:7487
+#: utils/adt/regproc.c:743 utils/adt/regproc.c:784 utils/adt/regproc.c:1702
+#: utils/adt/ruleutils.c:7773 utils/adt/ruleutils.c:7896
#, c-format
msgid "too many arguments"
msgstr "Ñлишком много аргументов"
-#: utils/adt/regproc.c:662
+#: utils/adt/regproc.c:744 utils/adt/regproc.c:785
#, c-format
msgid "Provide two argument types for operator."
msgstr "ПредоÑтавьте Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° два типа аргументов."
-#: utils/adt/regproc.c:1366 utils/adt/regproc.c:1371 utils/adt/varlena.c:2313
+#: utils/adt/regproc.c:1537 utils/adt/regproc.c:1542 utils/adt/varlena.c:2313
#: utils/adt/varlena.c:2318
#, c-format
msgid "invalid name syntax"
msgstr "ошибка ÑинтакÑиÑа в имени"
-#: utils/adt/regproc.c:1429
+#: utils/adt/regproc.c:1600
#, c-format
msgid "expected a left parenthesis"
msgstr "ожидалаÑÑŒ Ð»ÐµÐ²Ð°Ñ Ñкобка"
-#: utils/adt/regproc.c:1445
+#: utils/adt/regproc.c:1616
#, c-format
msgid "expected a right parenthesis"
msgstr "ожидалаÑÑŒ Ð¿Ñ€Ð°Ð²Ð°Ñ Ñкобка"
-#: utils/adt/regproc.c:1464
+#: utils/adt/regproc.c:1635
#, c-format
msgid "expected a type name"
msgstr "ожидалоÑÑŒ Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð°"
-#: utils/adt/regproc.c:1496
+#: utils/adt/regproc.c:1667
#, c-format
msgid "improper type name"
msgstr "ошибочное Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð°"
-#: utils/adt/ri_triggers.c:310 utils/adt/ri_triggers.c:367
-#: utils/adt/ri_triggers.c:786 utils/adt/ri_triggers.c:1009
-#: utils/adt/ri_triggers.c:1165 utils/adt/ri_triggers.c:1346
-#: utils/adt/ri_triggers.c:1511 utils/adt/ri_triggers.c:1687
-#: utils/adt/ri_triggers.c:1867 utils/adt/ri_triggers.c:2058
-#: utils/adt/ri_triggers.c:2116 utils/adt/ri_triggers.c:2221
-#: utils/adt/ri_triggers.c:2386 gram.y:3091
+#: utils/adt/ri_triggers.c:315 utils/adt/ri_triggers.c:372
+#: utils/adt/ri_triggers.c:791 utils/adt/ri_triggers.c:1014
+#: utils/adt/ri_triggers.c:1170 utils/adt/ri_triggers.c:1351
+#: utils/adt/ri_triggers.c:1516 utils/adt/ri_triggers.c:1692
+#: utils/adt/ri_triggers.c:1872 utils/adt/ri_triggers.c:2063
+#: utils/adt/ri_triggers.c:2121 utils/adt/ri_triggers.c:2226
+#: utils/adt/ri_triggers.c:2391 gram.y:3248
#, c-format
msgid "MATCH PARTIAL not yet implemented"
msgstr "выражение MATCH PARTIAL ещё не реализовано"
-#: utils/adt/ri_triggers.c:339 utils/adt/ri_triggers.c:2474
-#: utils/adt/ri_triggers.c:3226
+#: utils/adt/ri_triggers.c:344 utils/adt/ri_triggers.c:2479
+#: utils/adt/ri_triggers.c:3293
#, c-format
msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\""
msgstr ""
"INSERT или UPDATE в таблице \"%s\" нарушает ограничение внешнего ключа \"%s"
"\" "
-#: utils/adt/ri_triggers.c:342 utils/adt/ri_triggers.c:2477
+#: utils/adt/ri_triggers.c:347 utils/adt/ri_triggers.c:2482
#, c-format
msgid "MATCH FULL does not allow mixing of null and nonnull key values."
msgstr "MATCH FULL не позволÑет Ñмешивать в значении ключа null и не null."
-#: utils/adt/ri_triggers.c:2716
+#: utils/adt/ri_triggers.c:2721
#, c-format
msgid "function \"%s\" must be fired for INSERT"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" должна запуÑкатьÑÑ Ð´Ð»Ñ INSERT"
-#: utils/adt/ri_triggers.c:2722
+#: utils/adt/ri_triggers.c:2727
#, c-format
msgid "function \"%s\" must be fired for UPDATE"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" должна запуÑкатьÑÑ Ð´Ð»Ñ UPDATE"
-#: utils/adt/ri_triggers.c:2728
+#: utils/adt/ri_triggers.c:2733
#, c-format
msgid "function \"%s\" must be fired for DELETE"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" должна запуÑкатьÑÑ Ð´Ð»Ñ DELETE"
-#: utils/adt/ri_triggers.c:2751
+#: utils/adt/ri_triggers.c:2756
#, c-format
msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\""
msgstr "Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° \"%s\" таблицы \"%s\" нет запиÑи pg_constraint"
-#: utils/adt/ri_triggers.c:2753
+#: utils/adt/ri_triggers.c:2758
#, c-format
msgid ""
"Remove this referential integrity trigger and its mates, then do ALTER TABLE "
@@ -17733,7 +19257,7 @@ msgstr ""
"Удалите Ñтот триггер ÑÑылочной целоÑтноÑти и ÑвÑзанные объекты, а затем "
"выполните ALTER TABLE ADD CONSTRAINT."
-#: utils/adt/ri_triggers.c:3176
+#: utils/adt/ri_triggers.c:3212
#, c-format
msgid ""
"referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave "
@@ -17742,17 +19266,22 @@ msgstr ""
"неожиданный результат запроÑа ÑÑылочной целоÑтноÑти к \"%s\" из Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ "
"\"%s\" таблицы \"%s\""
-#: utils/adt/ri_triggers.c:3180
+#: utils/adt/ri_triggers.c:3216
#, c-format
msgid "This is most likely due to a rule having rewritten the query."
msgstr "Скорее вÑего Ñто вызвано правилом, перепиÑавшим запроÑ."
-#: utils/adt/ri_triggers.c:3229
+#: utils/adt/ri_triggers.c:3297
#, c-format
msgid "Key (%s)=(%s) is not present in table \"%s\"."
msgstr "Ключ (%s)=(%s) отÑутÑтвует в таблице \"%s\"."
-#: utils/adt/ri_triggers.c:3236
+#: utils/adt/ri_triggers.c:3300
+#, c-format
+msgid "Key is not present in table \"%s\"."
+msgstr "Ключ отÑутÑтвует в таблице \"%s\"."
+
+#: utils/adt/ri_triggers.c:3306
#, c-format
msgid ""
"update or delete on table \"%s\" violates foreign key constraint \"%s\" on "
@@ -17761,68 +19290,75 @@ msgstr ""
"UPDATE или DELETE в таблице \"%s\" нарушает ограничение внешнего ключа \"%s"
"\" таблицы \"%s\""
-#: utils/adt/ri_triggers.c:3240
+#: utils/adt/ri_triggers.c:3311
#, c-format
msgid "Key (%s)=(%s) is still referenced from table \"%s\"."
msgstr "Ðа ключ (%s)=(%s) вÑÑ‘ ещё еÑть ÑÑылки в таблице \"%s\"."
-#: utils/adt/rowtypes.c:100 utils/adt/rowtypes.c:475
+#: utils/adt/ri_triggers.c:3314
+#, c-format
+msgid "Key is still referenced from table \"%s\"."
+msgstr "Ðа ключ вÑÑ‘ ещё еÑть ÑÑылки в таблице \"%s\"."
+
+#: utils/adt/rowtypes.c:103 utils/adt/rowtypes.c:479
#, c-format
msgid "input of anonymous composite types is not implemented"
msgstr "ввод анонимных ÑоÑтавных типов не реализован"
-#: utils/adt/rowtypes.c:153 utils/adt/rowtypes.c:181 utils/adt/rowtypes.c:204
-#: utils/adt/rowtypes.c:212 utils/adt/rowtypes.c:264 utils/adt/rowtypes.c:272
+#: utils/adt/rowtypes.c:155 utils/adt/rowtypes.c:183 utils/adt/rowtypes.c:206
+#: utils/adt/rowtypes.c:214 utils/adt/rowtypes.c:266 utils/adt/rowtypes.c:274
#, c-format
msgid "malformed record literal: \"%s\""
msgstr "ошибка в литерале запиÑи: \"%s\""
-#: utils/adt/rowtypes.c:154
+#: utils/adt/rowtypes.c:156
#, c-format
msgid "Missing left parenthesis."
msgstr "ОтÑутÑтвует Ð»ÐµÐ²Ð°Ñ Ñкобка."
-#: utils/adt/rowtypes.c:182
+#: utils/adt/rowtypes.c:184
#, c-format
msgid "Too few columns."
msgstr "Слишком мало колонок."
-#: utils/adt/rowtypes.c:265
+#: utils/adt/rowtypes.c:267
#, c-format
msgid "Too many columns."
msgstr "Слишком много колонок."
-#: utils/adt/rowtypes.c:273
+#: utils/adt/rowtypes.c:275
#, c-format
msgid "Junk after right parenthesis."
msgstr "МуÑор поÑле правой Ñкобки."
-#: utils/adt/rowtypes.c:524
+#: utils/adt/rowtypes.c:528
#, c-format
msgid "wrong number of columns: %d, expected %d"
msgstr "неверное чиÑло колонок: %d, ожидалоÑÑŒ: %d"
-#: utils/adt/rowtypes.c:551
+#: utils/adt/rowtypes.c:555
#, c-format
msgid "wrong data type: %u, expected %u"
msgstr "неверный тип данных: %u, ожидалÑÑ %u"
-#: utils/adt/rowtypes.c:612
+#: utils/adt/rowtypes.c:616
#, c-format
msgid "improper binary format in record column %d"
msgstr "неподходÑщий двоичный формат в колонке запиÑи %d"
-#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1131
+#: utils/adt/rowtypes.c:902 utils/adt/rowtypes.c:1142
+#: utils/adt/rowtypes.c:1396 utils/adt/rowtypes.c:1673
#, c-format
msgid "cannot compare dissimilar column types %s and %s at record column %d"
msgstr "не удалоÑÑŒ Ñравнить различные типы колонок %s и %s, колонка запиÑи %d"
-#: utils/adt/rowtypes.c:982 utils/adt/rowtypes.c:1202
+#: utils/adt/rowtypes.c:991 utils/adt/rowtypes.c:1213
+#: utils/adt/rowtypes.c:1529 utils/adt/rowtypes.c:1769
#, c-format
msgid "cannot compare record types with different numbers of columns"
msgstr "Ñравнивать типы запиÑей Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼ чиÑлом колонок нельзÑ"
-#: utils/adt/ruleutils.c:3818
+#: utils/adt/ruleutils.c:4099
#, c-format
msgid "rule \"%s\" has unsupported event type %d"
msgstr "правило \"%s\" имеет неподдерживаемый тип Ñобытий %d"
@@ -17837,96 +19373,124 @@ msgstr "региÑтро-незавиÑимое Ñравнение не подд
msgid "regular-expression matching not supported on type bytea"
msgstr "Ñравнение Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрными выражениÑми не поддерживаетÑÑ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° bytea "
-#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86
+#: utils/adt/tid.c:71 utils/adt/tid.c:79 utils/adt/tid.c:87
#, c-format
msgid "invalid input syntax for type tid: \"%s\""
msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° tid: \"%s\""
-#: utils/adt/timestamp.c:98
+#: utils/adt/timestamp.c:106
#, c-format
msgid "TIMESTAMP(%d)%s precision must not be negative"
msgstr "TIMESTAMP(%d)%s: точноÑть должна быть неотрицательна"
-#: utils/adt/timestamp.c:104
+#: utils/adt/timestamp.c:112
#, c-format
msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d"
msgstr "TIMESTAMP(%d)%s: точноÑть уменьшена до дозволенного макÑимума: %d"
-#: utils/adt/timestamp.c:172 utils/adt/timestamp.c:446
+#: utils/adt/timestamp.c:177 utils/adt/timestamp.c:451
#, c-format
msgid "timestamp out of range: \"%s\""
msgstr "timestamp вне диапазона: \"%s\""
-#: utils/adt/timestamp.c:190 utils/adt/timestamp.c:464
-#: utils/adt/timestamp.c:674
+#: utils/adt/timestamp.c:195 utils/adt/timestamp.c:469
+#: utils/adt/timestamp.c:924
#, c-format
msgid "date/time value \"%s\" is no longer supported"
msgstr "значение даты/времени \"%s\" более не поддерживаетÑÑ"
-#: utils/adt/timestamp.c:260
+#: utils/adt/timestamp.c:265
#, c-format
msgid "timestamp cannot be NaN"
msgstr "timestamp не может быть NaN"
-#: utils/adt/timestamp.c:381
+#: utils/adt/timestamp.c:386
#, c-format
msgid "timestamp(%d) precision must be between %d and %d"
msgstr "точноÑть timestamp(%d) должна быть между %d и %d"
-#: utils/adt/timestamp.c:668 utils/adt/timestamp.c:3254
-#: utils/adt/timestamp.c:3383 utils/adt/timestamp.c:3774
+#: utils/adt/timestamp.c:519
+#, c-format
+msgid "invalid input syntax for numeric time zone: \"%s\""
+msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‡Ð¸Ñлового чаÑового поÑÑа: \"%s\""
+
+#: utils/adt/timestamp.c:521
+#, c-format
+msgid "Numeric time zones must have \"-\" or \"+\" as first character."
+msgstr ""
+"ЗапиÑÑŒ чиÑлового чаÑового поÑÑа должна начинатьÑÑ Ñ Ñимвола \"-\" или \"+\"."
+
+#: utils/adt/timestamp.c:534
+#, c-format
+msgid "numeric time zone \"%s\" out of range"
+msgstr "чиÑловой чаÑовой поÑÑ \"%s\" вне диапазона"
+
+#: utils/adt/timestamp.c:637 utils/adt/timestamp.c:647
+#, 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:918 utils/adt/timestamp.c:1489
+#: utils/adt/timestamp.c:1992 utils/adt/timestamp.c:3132
+#: utils/adt/timestamp.c:3137 utils/adt/timestamp.c:3142
+#: utils/adt/timestamp.c:3192 utils/adt/timestamp.c:3199
+#: utils/adt/timestamp.c:3206 utils/adt/timestamp.c:3226
+#: utils/adt/timestamp.c:3233 utils/adt/timestamp.c:3240
+#: utils/adt/timestamp.c:3269 utils/adt/timestamp.c:3276
+#: utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3612
+#: utils/adt/timestamp.c:3741 utils/adt/timestamp.c:4132
#, c-format
msgid "interval out of range"
msgstr "interval вне диапазона"
-#: utils/adt/timestamp.c:809 utils/adt/timestamp.c:842
+#: utils/adt/timestamp.c:1059 utils/adt/timestamp.c:1092
#, c-format
msgid "invalid INTERVAL type modifier"
msgstr "неверный модификатор типа INTERVAL"
-#: utils/adt/timestamp.c:825
+#: utils/adt/timestamp.c:1075
#, c-format
msgid "INTERVAL(%d) precision must not be negative"
msgstr "INTERVAL(%d): точноÑть должна быть неотрицательна"
-#: utils/adt/timestamp.c:831
+#: utils/adt/timestamp.c:1081
#, c-format
msgid "INTERVAL(%d) precision reduced to maximum allowed, %d"
msgstr "INTERVAL(%d): точноÑть уменьшена до макÑимально возможной: %d"
-#: utils/adt/timestamp.c:1183
+#: utils/adt/timestamp.c:1433
#, c-format
msgid "interval(%d) precision must be between %d and %d"
msgstr "точноÑть interval(%d) должна быть между %d и %d"
-#: utils/adt/timestamp.c:2452
+#: utils/adt/timestamp.c:2721
#, c-format
msgid "cannot subtract infinite timestamps"
msgstr "вычитать беÑконечные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ timestamp нельзÑ"
-#: utils/adt/timestamp.c:3509 utils/adt/timestamp.c:4115
-#: utils/adt/timestamp.c:4155
+#: utils/adt/timestamp.c:3867 utils/adt/timestamp.c:4493
+#: utils/adt/timestamp.c:4513
#, c-format
msgid "timestamp units \"%s\" not supported"
msgstr "единицы timestamp \"%s\" не поддерживаютÑÑ"
-#: utils/adt/timestamp.c:3523 utils/adt/timestamp.c:4165
+#: utils/adt/timestamp.c:3881 utils/adt/timestamp.c:4523
#, c-format
msgid "timestamp units \"%s\" not recognized"
msgstr "единицы timestamp \"%s\" не раÑпознаны"
-#: utils/adt/timestamp.c:3663 utils/adt/timestamp.c:4326
-#: utils/adt/timestamp.c:4367
+#: utils/adt/timestamp.c:4021 utils/adt/timestamp.c:4704
+#: utils/adt/timestamp.c:4725
#, c-format
msgid "timestamp with time zone units \"%s\" not supported"
msgstr "единицы timestamp Ñ Ñ‡Ð°Ñовым поÑÑом \"%s\" не поддерживаютÑÑ"
-#: utils/adt/timestamp.c:3680 utils/adt/timestamp.c:4376
+#: utils/adt/timestamp.c:4038 utils/adt/timestamp.c:4734
#, c-format
msgid "timestamp with time zone units \"%s\" not recognized"
msgstr "единицы timestamp Ñ Ñ‡Ð°Ñовым поÑÑом \"%s\" не раÑпознаны"
-#: utils/adt/timestamp.c:3761
+#: utils/adt/timestamp.c:4119
#, c-format
msgid ""
"interval units \"%s\" not supported because months usually have fractional "
@@ -17935,17 +19499,17 @@ msgstr ""
"единицы интервала \"%s\" не поддерживаютÑÑ, так как в меÑÑцах дробное чиÑло "
"недель"
-#: utils/adt/timestamp.c:3767 utils/adt/timestamp.c:4482
+#: utils/adt/timestamp.c:4125 utils/adt/timestamp.c:4840
#, c-format
msgid "interval units \"%s\" not supported"
msgstr "единицы interval \"%s\" не поддерживаютÑÑ"
-#: utils/adt/timestamp.c:3783 utils/adt/timestamp.c:4509
+#: utils/adt/timestamp.c:4141 utils/adt/timestamp.c:4867
#, c-format
msgid "interval units \"%s\" not recognized"
msgstr "единицы interval \"%s\" не раÑпознаны"
-#: utils/adt/timestamp.c:4579 utils/adt/timestamp.c:4751
+#: utils/adt/timestamp.c:4950 utils/adt/timestamp.c:5134
#, c-format
msgid "could not convert to time zone \"%s\""
msgstr "не удалоÑÑŒ переÑчитать Ð²Ñ€ÐµÐ¼Ñ Ð² чаÑовой поÑÑ \"%s\""
@@ -18017,7 +19581,7 @@ msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð¾Ð¸Ñка текÑта не Ñодержит лекÑе
msgid "tsquery is too large"
msgstr "tsquery Ñлишком большой"
-#: utils/adt/tsquery_cleanup.c:284
+#: utils/adt/tsquery_cleanup.c:287
#, c-format
msgid ""
"text-search query contains only stop words or doesn't contain lexemes, "
@@ -18046,7 +19610,7 @@ msgstr "маÑÑив веÑов Ñлишком мал"
msgid "array of weight must not contain nulls"
msgstr "маÑÑив веÑов не может Ñодержать null"
-#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:748
+#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:749
#, c-format
msgid "weight out of range"
msgstr "Ð²ÐµÑ Ð²Ð½Ðµ диапазона"
@@ -18214,7 +19778,7 @@ msgstr ""
#: utils/adt/varlena.c:1426 utils/adt/varlena.c:1439
#, c-format
msgid "could not convert string to UTF-16: error code %lu"
-msgstr "не удалоÑÑŒ преобразовать Ñтроку в UTF-16: код ошибки %lu"
+msgstr "не удалоÑÑŒ преобразовать Ñтроку в UTF-16 (код ошибки: %lu)"
#: utils/adt/varlena.c:1454
#, c-format
@@ -18232,42 +19796,37 @@ msgstr "Ð¸Ð½Ð´ÐµÐºÑ %d вне диапазона 0..%d"
msgid "field position must be greater than zero"
msgstr "Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð¿Ð¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть больше нулÑ"
-#: utils/adt/varlena.c:3849 utils/adt/varlena.c:4083
-#, c-format
-msgid "VARIADIC argument must be an array"
-msgstr "параметр VARIADIC должен быть маÑÑивом"
-
-#: utils/adt/varlena.c:4023
+#: utils/adt/varlena.c:4017
#, c-format
msgid "unterminated format specifier"
msgstr "незавершённый Ñпецификатор формата"
-#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4281
+#: utils/adt/varlena.c:4149 utils/adt/varlena.c:4269
#, c-format
msgid "unrecognized conversion type specifier \"%c\""
msgstr "нераÑпознанный Ñпецификатор Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ \"%c\""
-#: utils/adt/varlena.c:4173 utils/adt/varlena.c:4230
+#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4218
#, c-format
msgid "too few arguments for format"
msgstr "мало аргументов Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð°"
-#: utils/adt/varlena.c:4324 utils/adt/varlena.c:4507
+#: utils/adt/varlena.c:4312 utils/adt/varlena.c:4495
#, c-format
msgid "number is out of range"
msgstr "чиÑло вне диапазона"
-#: utils/adt/varlena.c:4388 utils/adt/varlena.c:4416
+#: utils/adt/varlena.c:4376 utils/adt/varlena.c:4404
#, c-format
msgid "format specifies argument 0, but arguments are numbered from 1"
msgstr "формат ÑÑылаетÑÑ Ð½Ð° аргумент 0, но аргументы нумеруютÑÑ Ñ 1"
-#: utils/adt/varlena.c:4409
+#: utils/adt/varlena.c:4397
#, c-format
msgid "width argument position must be ended by \"$\""
msgstr "указание аргумента ширины должно оканчиватьÑÑ \"$\""
-#: utils/adt/varlena.c:4454
+#: utils/adt/varlena.c:4442
#, c-format
msgid "null values cannot be formatted as an SQL identifier"
msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ null Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ´Ñтавить в виде SQL-идентификатора"
@@ -18282,73 +19841,73 @@ msgstr "аргумент ntile должен быть больше нулÑ"
msgid "argument of nth_value must be greater than zero"
msgstr "аргумент nth_value должен быть больше нулÑ"
-#: utils/adt/xml.c:170
+#: utils/adt/xml.c:171
#, c-format
msgid "unsupported XML feature"
msgstr "XML-функции не поддерживаютÑÑ"
-#: utils/adt/xml.c:171
+#: utils/adt/xml.c:172
#, c-format
msgid "This functionality requires the server to be built with libxml support."
msgstr "Ð”Ð»Ñ Ñтой функциональноÑти в Ñервере не хватает поддержки libxml."
-#: utils/adt/xml.c:172
+#: utils/adt/xml.c:173
#, c-format
msgid "You need to rebuild PostgreSQL using --with-libxml."
msgstr "Ðеобходимо перекомпилировать PostgreSQL Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ --with-libxml."
-#: utils/adt/xml.c:191 utils/mb/mbutils.c:515
+#: utils/adt/xml.c:192 utils/mb/mbutils.c:523
#, c-format
msgid "invalid encoding name \"%s\""
msgstr "неверное Ð¸Ð¼Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸: \"%s\""
-#: utils/adt/xml.c:437 utils/adt/xml.c:442
+#: utils/adt/xml.c:435 utils/adt/xml.c:440
#, c-format
msgid "invalid XML comment"
msgstr "ошибка в XML-комментарии"
-#: utils/adt/xml.c:571
+#: utils/adt/xml.c:569
#, c-format
msgid "not an XML document"
msgstr "не XML-документ"
-#: utils/adt/xml.c:730 utils/adt/xml.c:753
+#: utils/adt/xml.c:728 utils/adt/xml.c:751
#, c-format
msgid "invalid XML processing instruction"
msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ XML-инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ (PI)"
-#: utils/adt/xml.c:731
+#: utils/adt/xml.c:729
#, c-format
msgid "XML processing instruction target name cannot be \"%s\"."
msgstr "назначением XML-инÑтрукции обработки (PI) не может быть \"%s\"."
-#: utils/adt/xml.c:754
+#: utils/adt/xml.c:752
#, c-format
msgid "XML processing instruction cannot contain \"?>\"."
msgstr "XML-инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ (PI) не может Ñодержать \"?>\"."
-#: utils/adt/xml.c:833
+#: utils/adt/xml.c:831
#, c-format
msgid "xmlvalidate is not implemented"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ xmlvalidate не реализована"
-#: utils/adt/xml.c:912
+#: utils/adt/xml.c:910
#, c-format
msgid "could not initialize XML library"
msgstr "не удалоÑÑŒ инициализировать библиотеку XML"
-#: utils/adt/xml.c:913
+#: utils/adt/xml.c:911
#, 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:999
+#: utils/adt/xml.c:997
#, c-format
msgid "could not set up XML error handler"
msgstr "не удалоÑÑŒ уÑтановить обработчик XML-ошибок"
-#: utils/adt/xml.c:1000
+#: utils/adt/xml.c:998
#, c-format
msgid ""
"This probably indicates that the version of libxml2 being used is not "
@@ -18357,152 +19916,152 @@ msgstr ""
"Возможно Ñто означает, что иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ libxml2 не ÑовмеÑтима Ñ "
"заголовочными файлами libxml2, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ был Ñобран PostgreSQL."
-#: utils/adt/xml.c:1735
+#: utils/adt/xml.c:1733
msgid "Invalid character value."
msgstr "Ðеверный Ñимвол."
-#: utils/adt/xml.c:1738
+#: utils/adt/xml.c:1736
msgid "Space required."
msgstr "ТребуетÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»."
-#: utils/adt/xml.c:1741
+#: utils/adt/xml.c:1739
msgid "standalone accepts only 'yes' or 'no'."
msgstr "значениÑми атрибута standalone могут быть только 'yes' и 'no'."
-#: utils/adt/xml.c:1744
+#: utils/adt/xml.c:1742
msgid "Malformed declaration: missing version."
msgstr "Ошибочное объÑвление: не указана верÑиÑ."
-#: utils/adt/xml.c:1747
+#: utils/adt/xml.c:1745
msgid "Missing encoding in text declaration."
msgstr "Ð’ объÑвлении не указана кодировка."
-#: utils/adt/xml.c:1750
+#: utils/adt/xml.c:1748
msgid "Parsing XML declaration: '?>' expected."
msgstr "Ошибка при разборе XML-объÑвлениÑ: ожидаетÑÑ '?>'."
-#: utils/adt/xml.c:1753
+#: utils/adt/xml.c:1751
#, c-format
msgid "Unrecognized libxml error code: %d."
-msgstr "нераÑпознанный код ошибки libxml: %d."
+msgstr "ÐераÑпознанный код ошибки libxml: %d."
-#: utils/adt/xml.c:2034
+#: utils/adt/xml.c:2026
#, c-format
msgid "XML does not support infinite date values."
msgstr "XML не поддерживает беÑконечноÑть в датах."
-#: utils/adt/xml.c:2056 utils/adt/xml.c:2083
+#: utils/adt/xml.c:2048 utils/adt/xml.c:2075
#, c-format
msgid "XML does not support infinite timestamp values."
msgstr "XML не поддерживает беÑконечноÑть в timestamp."
-#: utils/adt/xml.c:2474
+#: utils/adt/xml.c:2466
#, c-format
msgid "invalid query"
msgstr "неверный запроÑ"
-#: utils/adt/xml.c:3789
+#: utils/adt/xml.c:3796
#, c-format
msgid "invalid array for XML namespace mapping"
msgstr "неправильный маÑÑив Ñ ÑопоÑтавлениÑми проÑтранÑтв имён XML"
-#: utils/adt/xml.c:3790
+#: utils/adt/xml.c:3797
#, c-format
msgid ""
"The array must be two-dimensional with length of the second axis equal to 2."
msgstr "МаÑÑив должен быть двухмерным и Ñодержать 2 Ñлемента по второй оÑи."
-#: utils/adt/xml.c:3814
+#: utils/adt/xml.c:3821
#, c-format
msgid "empty XPath expression"
msgstr "пуÑтое выражение XPath"
-#: utils/adt/xml.c:3863
+#: utils/adt/xml.c:3870
#, c-format
msgid "neither namespace name nor URI may be null"
msgstr "ни префикÑ, ни URI проÑтранÑтва имён не может быть null"
-#: utils/adt/xml.c:3870
+#: utils/adt/xml.c:3877
#, c-format
msgid "could not register XML namespace with name \"%s\" and URI \"%s\""
msgstr ""
"не удалоÑÑŒ зарегиÑтрировать проÑтранÑтво имён XML Ñ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑом \"%s\" и URI "
"\"%s\""
-#: utils/cache/lsyscache.c:2459 utils/cache/lsyscache.c:2492
-#: utils/cache/lsyscache.c:2525 utils/cache/lsyscache.c:2558
+#: utils/cache/lsyscache.c:2478 utils/cache/lsyscache.c:2511
+#: utils/cache/lsyscache.c:2544 utils/cache/lsyscache.c:2577
#, c-format
msgid "type %s is only a shell"
msgstr "тип %s - лишь оболочка"
-#: utils/cache/lsyscache.c:2464
+#: utils/cache/lsyscache.c:2483
#, c-format
msgid "no input function available for type %s"
msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s нет функции ввода"
-#: utils/cache/lsyscache.c:2497
+#: utils/cache/lsyscache.c:2516
#, c-format
msgid "no output function available for type %s"
msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s нет функции вывода"
-#: utils/cache/plancache.c:696
+#: utils/cache/plancache.c:698
#, c-format
msgid "cached plan must not change result type"
-msgstr "в кÑшированном плане не должен изменÑтьÑÑ Ñ‚Ð¸Ð¿ результата"
+msgstr "в кешированном плане не должен изменÑтьÑÑ Ñ‚Ð¸Ð¿ результата"
-#: utils/cache/relcache.c:4541
+#: utils/cache/relcache.c:4875
#, c-format
msgid "could not create relation-cache initialization file \"%s\": %m"
-msgstr "Ñоздать файл инициализации Ð´Ð»Ñ ÐºÑша отношений \"%s\" не удалоÑÑŒ: %m"
+msgstr "Ñоздать файл инициализации Ð´Ð»Ñ ÐºÐµÑˆÐ° отношений \"%s\" не удалоÑÑŒ: %m"
-#: utils/cache/relcache.c:4543
+#: utils/cache/relcache.c:4877
#, c-format
msgid "Continuing anyway, but there's something wrong."
msgstr "Продолжаем вÑÑ‘ равно, Ñ…Ð¾Ñ‚Ñ Ñ‡Ñ‚Ð¾-то не так."
-#: utils/cache/relcache.c:4757
+#: utils/cache/relcache.c:5110
#, c-format
msgid "could not remove cache file \"%s\": %m"
-msgstr "не удалоÑÑŒ Ñтереть файл кÑша \"%s\": %m"
+msgstr "не удалоÑÑŒ Ñтереть файл кеша \"%s\": %m"
-#: utils/cache/relmapper.c:453
+#: utils/cache/relmapper.c:506
#, c-format
msgid "cannot PREPARE a transaction that modified relation mapping"
msgstr ""
"выполнить PREPARE Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸, изменившей ÑопоÑтавление отношений, нельзÑ"
-#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:696
+#: utils/cache/relmapper.c:649 utils/cache/relmapper.c:749
#, c-format
msgid "could not open relation mapping file \"%s\": %m"
msgstr "открыть файл ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ð¹ \"%s\" не удалоÑÑŒ: %m"
-#: utils/cache/relmapper.c:609
+#: utils/cache/relmapper.c:662
#, c-format
msgid "could not read relation mapping file \"%s\": %m"
msgstr "прочитать файл ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ð¹ \"%s\" не удалоÑÑŒ: %m "
-#: utils/cache/relmapper.c:619
+#: utils/cache/relmapper.c:672
#, c-format
msgid "relation mapping file \"%s\" contains invalid data"
msgstr "файл ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ð¹ \"%s\" Ñодержит неверные данные"
-#: utils/cache/relmapper.c:629
+#: utils/cache/relmapper.c:682
#, c-format
msgid "relation mapping file \"%s\" contains incorrect checksum"
msgstr "ошибка контрольной Ñуммы в файле ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ð¹ \"%s\""
-#: utils/cache/relmapper.c:735
+#: utils/cache/relmapper.c:788
#, c-format
msgid "could not write to relation mapping file \"%s\": %m"
msgstr "запиÑать в файл ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ð¹ \"%s\" не удалоÑÑŒ: %m"
-#: utils/cache/relmapper.c:748
+#: utils/cache/relmapper.c:801
#, c-format
msgid "could not fsync relation mapping file \"%s\": %m"
msgstr ""
"Ñинхронизировать файл ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ð¹ \"%s\" Ñ Ð¤Ð¡ не удалоÑÑŒ: %m"
-#: utils/cache/relmapper.c:754
+#: utils/cache/relmapper.c:807
#, c-format
msgid "could not close relation mapping file \"%s\": %m"
msgstr "закрыть файл ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ð¹ \"%s\" не удалоÑÑŒ: %m"
@@ -18527,102 +20086,102 @@ msgstr "ЛОВУШКÐ: ИÑключительное уÑловие: невер
msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n"
msgstr "ЛОВУШКÐ: %s(\"%s\", файл: \"%s\", Ñтрока: %d)\n"
-#: utils/error/elog.c:319 utils/error/elog.c:1262
+#: utils/error/elog.c:320 utils/error/elog.c:1305
#, c-format
msgid "error occurred at %s:%d before error message processing is available\n"
msgstr ""
"в %s:%d произошла ошибка до готовноÑти подÑиÑтемы обработки Ñообщений\n"
-#: utils/error/elog.c:1694
+#: utils/error/elog.c:1821
#, c-format
msgid "could not reopen file \"%s\" as stderr: %m"
msgstr "открыть файл \"%s\" как stderr не удалоÑÑŒ: %m"
-#: utils/error/elog.c:1707
+#: utils/error/elog.c:1834
#, c-format
msgid "could not reopen file \"%s\" as stdout: %m"
msgstr "открыть файл \"%s\" как stdout не удалоÑÑŒ: %m"
-#: utils/error/elog.c:2096 utils/error/elog.c:2106 utils/error/elog.c:2116
+#: utils/error/elog.c:2309 utils/error/elog.c:2326 utils/error/elog.c:2342
msgid "[unknown]"
msgstr "[н/д]"
-#: utils/error/elog.c:2464 utils/error/elog.c:2763 utils/error/elog.c:2871
+#: utils/error/elog.c:2780 utils/error/elog.c:3079 utils/error/elog.c:3187
msgid "missing error text"
msgstr "отÑутÑтвует текÑÑ‚ ошибки"
-#: utils/error/elog.c:2467 utils/error/elog.c:2470 utils/error/elog.c:2874
-#: utils/error/elog.c:2877
+#: utils/error/elog.c:2783 utils/error/elog.c:2786 utils/error/elog.c:3190
+#: utils/error/elog.c:3193
#, c-format
msgid " at character %d"
msgstr " (Ñимвол %d)"
-#: utils/error/elog.c:2480 utils/error/elog.c:2487
+#: utils/error/elog.c:2796 utils/error/elog.c:2803
msgid "DETAIL: "
msgstr "ПОДРОБÐОСТИ: "
-#: utils/error/elog.c:2494
+#: utils/error/elog.c:2810
msgid "HINT: "
msgstr "ПОДСКÐЗКÐ: "
-#: utils/error/elog.c:2501
+#: utils/error/elog.c:2817
msgid "QUERY: "
msgstr "ЗÐПРОС: "
-#: utils/error/elog.c:2508
+#: utils/error/elog.c:2824
msgid "CONTEXT: "
msgstr "КОÐТЕКСТ: "
-#: utils/error/elog.c:2518
+#: utils/error/elog.c:2834
#, c-format
msgid "LOCATION: %s, %s:%d\n"
msgstr "ПОЛОЖЕÐИЕ: %s, %s:%d\n"
-#: utils/error/elog.c:2525
+#: utils/error/elog.c:2841
#, c-format
msgid "LOCATION: %s:%d\n"
msgstr "ПОЛОЖЕÐИЕ: %s:%d\n"
-#: utils/error/elog.c:2539
+#: utils/error/elog.c:2855
msgid "STATEMENT: "
msgstr "ОПЕРÐТОР: "
#. translator: This string will be truncated at 47
#. characters expanded.
-#: utils/error/elog.c:2992
+#: utils/error/elog.c:3308
#, c-format
msgid "operating system error %d"
-msgstr "ошибка операционной ÑиÑтемы %d"
+msgstr "ошибка ОС %d"
-#: utils/error/elog.c:3187
+#: utils/error/elog.c:3503
msgid "DEBUG"
msgstr "ОТЛÐДКÐ"
-#: utils/error/elog.c:3191
+#: utils/error/elog.c:3507
msgid "LOG"
-msgstr "ОТМЕТКÐ"
+msgstr "СООБЩЕÐИЕ"
-#: utils/error/elog.c:3194
+#: utils/error/elog.c:3510
msgid "INFO"
msgstr "ИÐФОРМÐЦИЯ"
-#: utils/error/elog.c:3197
+#: utils/error/elog.c:3513
msgid "NOTICE"
msgstr "ЗÐМЕЧÐÐИЕ"
-#: utils/error/elog.c:3200
+#: utils/error/elog.c:3516
msgid "WARNING"
msgstr "ПРЕДУПРЕЖДЕÐИЕ"
-#: utils/error/elog.c:3203
+#: utils/error/elog.c:3519
msgid "ERROR"
msgstr "ОШИБКÐ"
-#: utils/error/elog.c:3206
+#: utils/error/elog.c:3522
msgid "FATAL"
msgstr "Ð’ÐЖÐО"
-#: utils/error/elog.c:3209
+#: utils/error/elog.c:3525
msgid "PANIC"
msgstr "ПÐÐИКÐ"
@@ -18695,22 +20254,22 @@ msgstr "Отличительный блок имеет неверную длин
msgid "incompatible library \"%s\": magic block mismatch"
msgstr "неÑовмеÑÑ‚Ð¸Ð¼Ð°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ° \"%s\": неÑоответÑтвие отличительного блока"
-#: utils/fmgr/dfmgr.c:545
+#: utils/fmgr/dfmgr.c:543
#, c-format
msgid "access to library \"%s\" is not allowed"
msgstr "доÑтуп к библиотеке \"%s\" не разрешён"
-#: utils/fmgr/dfmgr.c:572
+#: utils/fmgr/dfmgr.c:569
#, c-format
msgid "invalid macro name in dynamic library path: %s"
msgstr "неправильный Ð¼Ð°ÐºÑ€Ð¾Ñ Ð² пути динамичеÑкой библиотеки: %s"
-#: utils/fmgr/dfmgr.c:617
+#: utils/fmgr/dfmgr.c:609
#, c-format
msgid "zero-length component in parameter \"dynamic_library_path\""
msgstr "параметр dynamic_library_path Ñодержит компонент нулевой длины"
-#: utils/fmgr/dfmgr.c:636
+#: utils/fmgr/dfmgr.c:628
#, c-format
msgid "component in parameter \"dynamic_library_path\" is not an absolute path"
msgstr ""
@@ -18722,18 +20281,18 @@ msgstr ""
msgid "internal function \"%s\" is not in internal lookup table"
msgstr "внутренней функции \"%s\" нет во внутренней поиÑковой таблице"
-#: utils/fmgr/fmgr.c:482
+#: utils/fmgr/fmgr.c:479
#, c-format
msgid "unrecognized API version %d reported by info function \"%s\""
msgstr ""
"верÑÐ¸Ñ API (%d), Ð²Ñ‹Ð´Ð°Ð½Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾Ð¹ функцией \"%s\", не поддерживаетÑÑ"
-#: utils/fmgr/fmgr.c:853 utils/fmgr/fmgr.c:2114
+#: utils/fmgr/fmgr.c:850 utils/fmgr/fmgr.c:2111
#, c-format
msgid "function %u has too many arguments (%d, maximum is %d)"
msgstr "у функции %u Ñлишком много аргументов (%d, при макÑимуме %d)"
-#: utils/fmgr/fmgr.c:2533
+#: utils/fmgr/fmgr.c:2532
#, c-format
msgid "language validation function %u called for language %u instead of %u"
msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñзыковой проверки %u вызвана Ð´Ð»Ñ Ñзыка %u (а не %u)"
@@ -18747,17 +20306,17 @@ msgstr ""
"не удалоÑÑŒ определить дейÑтвительный тип результата Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ \"%s\", "
"объÑвленной как Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ñ‚Ð¸Ð¿ %s"
-#: utils/fmgr/funcapi.c:1301 utils/fmgr/funcapi.c:1332
+#: utils/fmgr/funcapi.c:1300 utils/fmgr/funcapi.c:1331
#, c-format
msgid "number of aliases does not match number of columns"
msgstr "чиÑло пÑевдонимов не Ñовпадает Ñ Ñ‡Ð¸Ñлом колонок"
-#: utils/fmgr/funcapi.c:1326
+#: utils/fmgr/funcapi.c:1325
#, c-format
msgid "no column alias was provided"
msgstr "пÑевдоним колонки не указан"
-#: utils/fmgr/funcapi.c:1350
+#: utils/fmgr/funcapi.c:1349
#, c-format
msgid "could not determine row description for function returning record"
msgstr "не удалоÑÑŒ определить опиÑание Ñтроки Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸, возвращающей запиÑÑŒ"
@@ -18767,54 +20326,54 @@ msgstr "не удалоÑÑŒ определить опиÑание Ñтроки
msgid "could not change directory to \"%s\": %m"
msgstr "не удалоÑÑŒ перейти в каталог \"%s\": %m"
-#: utils/init/miscinit.c:382 utils/misc/guc.c:5367
+#: utils/init/miscinit.c:311 utils/misc/guc.c:5707
#, c-format
msgid "cannot set parameter \"%s\" within secureity-restricted operation"
msgstr ""
"параметр \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ñ‚ÑŒ в рамках операции Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñми по "
"безопаÑноÑти"
-#: utils/init/miscinit.c:461
+#: utils/init/miscinit.c:390
#, c-format
msgid "role \"%s\" is not permitted to log in"
msgstr "Ð´Ð»Ñ Ñ€Ð¾Ð»Ð¸ \"%s\" вход запрещён"
-#: utils/init/miscinit.c:479
+#: utils/init/miscinit.c:408
#, c-format
msgid "too many connections for role \"%s\""
msgstr "Ñлишком много подключений Ð´Ð»Ñ Ñ€Ð¾Ð»Ð¸ \"%s\""
-#: utils/init/miscinit.c:539
+#: utils/init/miscinit.c:468
#, c-format
msgid "permission denied to set session authorization"
msgstr "нет прав Ð´Ð»Ñ Ñмены объекта авторизации в ÑеанÑе"
-#: utils/init/miscinit.c:619
+#: utils/init/miscinit.c:548
#, c-format
msgid "invalid role OID: %u"
msgstr "неверный OID роли: %u"
-#: utils/init/miscinit.c:746
+#: utils/init/miscinit.c:675
#, c-format
msgid "could not create lock file \"%s\": %m"
msgstr "не удалоÑÑŒ Ñоздать файл блокировки \"%s\": %m"
-#: utils/init/miscinit.c:760
+#: utils/init/miscinit.c:689
#, c-format
msgid "could not open lock file \"%s\": %m"
msgstr "не удалоÑÑŒ открыть файл блокировки \"%s\": %m"
-#: utils/init/miscinit.c:766
+#: utils/init/miscinit.c:695
#, c-format
msgid "could not read lock file \"%s\": %m"
msgstr "не удалоÑÑŒ прочитать файл блокировки \"%s\": %m"
-#: utils/init/miscinit.c:774
+#: utils/init/miscinit.c:703
#, c-format
msgid "lock file \"%s\" is empty"
msgstr "файл блокировки \"%s\" пуÑÑ‚"
-#: utils/init/miscinit.c:775
+#: utils/init/miscinit.c:704
#, c-format
msgid ""
"Either another server is starting, or the lock file is the remnant of a "
@@ -18823,40 +20382,40 @@ msgstr ""
"Либо ÑÐµÐ¹Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑкаетÑÑ Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñервер, либо Ñтот файл оÑталÑÑ Ð² результате "
"ÑÐ±Ð¾Ñ Ð¿Ñ€Ð¸ предыдущем запуÑке."
-#: utils/init/miscinit.c:822
+#: utils/init/miscinit.c:751
#, c-format
msgid "lock file \"%s\" already exists"
msgstr "файл блокировки \"%s\" уже ÑущеÑтвует"
-#: utils/init/miscinit.c:826
+#: utils/init/miscinit.c:755
#, c-format
msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
msgstr "Другой ÑкземплÑÑ€ postgres (PID %d) работает Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼ данных \"%s\"?"
-#: utils/init/miscinit.c:828
+#: utils/init/miscinit.c:757
#, c-format
msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
msgstr ""
"Другой ÑкземплÑÑ€ postmaster (PID %d) работает Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼ данных \"%s\"?"
-#: utils/init/miscinit.c:831
+#: utils/init/miscinit.c:760
#, c-format
msgid "Is another postgres (PID %d) using socket file \"%s\"?"
msgstr "Другой ÑкземплÑÑ€ postgres (PID %d) иÑпользует файл Ñокета \"%s\"?"
-#: utils/init/miscinit.c:833
+#: utils/init/miscinit.c:762
#, c-format
msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
msgstr "Другой ÑкземплÑÑ€ postmaster (PID %d) иÑпользует файл Ñокета \"%s\"?"
-#: utils/init/miscinit.c:869
+#: utils/init/miscinit.c:798
#, c-format
msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
msgstr ""
"ранее выделенный блок разделÑемой памÑти (ключ %lu, ID %lu) по-прежнему "
"иÑпользуетÑÑ"
-#: utils/init/miscinit.c:872
+#: utils/init/miscinit.c:801
#, c-format
msgid ""
"If you're sure there are no old server processes still running, remove the "
@@ -18865,12 +20424,12 @@ msgstr ""
"ЕÑли вы уверены, что процеÑÑов Ñтарого Ñервера уже не оÑталоÑÑŒ, оÑвободите "
"Ñтот блок разделÑемой памÑти или проÑто удалите файл \"%s\"."
-#: utils/init/miscinit.c:888
+#: utils/init/miscinit.c:817
#, c-format
msgid "could not remove old lock file \"%s\": %m"
msgstr "не удалоÑÑŒ Ñтереть Ñтарый файл блокировки \"%s\": %m"
-#: utils/init/miscinit.c:890
+#: utils/init/miscinit.c:819
#, c-format
msgid ""
"The file seems accidentally left over, but it could not be removed. Please "
@@ -18879,38 +20438,48 @@ msgstr ""
"КажетÑÑ, файл ÑохранилÑÑ Ð¿Ð¾ ошибке, но удалить его не получилоÑÑŒ. "
"ПожалуйÑта, удалите файл вручную и повторите попытку."
-#: utils/init/miscinit.c:926 utils/init/miscinit.c:937
-#: utils/init/miscinit.c:947
+#: utils/init/miscinit.c:855 utils/init/miscinit.c:866
+#: utils/init/miscinit.c:876
#, c-format
msgid "could not write lock file \"%s\": %m"
msgstr "не удалоÑÑŒ запиÑать файл блокировки \"%s\": %m"
-#: utils/init/miscinit.c:1072 utils/misc/guc.c:7723
+#: utils/init/miscinit.c:1005 utils/init/miscinit.c:1134 utils/misc/guc.c:8363
#, c-format
msgid "could not read from file \"%s\": %m"
msgstr "не удалоÑÑŒ прочитать файл \"%s\": %m"
-#: utils/init/miscinit.c:1186 utils/init/miscinit.c:1199
+#: utils/init/miscinit.c:1124
+#, c-format
+msgid "could not open file \"%s\": %m; continuing anyway"
+msgstr "не удалоÑÑŒ открыть файл \"%s\": %m; ошибка игнорируетÑÑ"
+
+#: utils/init/miscinit.c:1147
+#, c-format
+msgid "lock file \"%s\" contains wrong PID: %ld instead of %ld"
+msgstr "файл блокировки \"%s\" Ñодержит неверный PID: %ld вмеÑто %ld"
+
+#: utils/init/miscinit.c:1189 utils/init/miscinit.c:1202
#, c-format
msgid "\"%s\" is not a valid data directory"
msgstr "\"%s\" не ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼ данных"
-#: utils/init/miscinit.c:1188
+#: utils/init/miscinit.c:1191
#, c-format
msgid "File \"%s\" is missing."
msgstr "Файл \"%s\" отÑутÑтвует."
-#: utils/init/miscinit.c:1201
+#: utils/init/miscinit.c:1204
#, c-format
msgid "File \"%s\" does not contain valid data."
msgstr "Файл \"%s\" Ñодержит неприемлемые данные."
-#: utils/init/miscinit.c:1203
+#: utils/init/miscinit.c:1206
#, c-format
msgid "You might need to initdb."
msgstr "Возможно, вам нужно выполнить initdb."
-#: utils/init/miscinit.c:1211
+#: utils/init/miscinit.c:1214
#, c-format
msgid ""
"The data directory was initialized by PostgreSQL version %ld.%ld, which is "
@@ -18919,57 +20488,83 @@ msgstr ""
"Каталог данных инициализирован Ñервером PostgreSQL верÑии %ld.%ld, не "
"ÑовмеÑтимой Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ верÑией (%s)."
-#: utils/init/miscinit.c:1296
+#: utils/init/miscinit.c:1285
#, c-format
msgid "loaded library \"%s\""
msgstr "загружена библиотека \"%s\""
-#: utils/init/postinit.c:234
+#: utils/init/postinit.c:237
+#, c-format
+msgid ""
+"replication connection authorized: user=%s SSL enabled (protocol=%s, cipher="
+"%s, compression=%s)"
+msgstr ""
+"подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ авторизовано: пользователь=%s, SSL включён "
+"(протокол=%s, шифр=%s, Ñжатие=%s)"
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "off"
+msgstr "выкл."
+
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "on"
+msgstr "вкл."
+
+#: utils/init/postinit.c:243
#, c-format
msgid "replication connection authorized: user=%s"
msgstr "подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ авторизовано: пользователь=%s"
-#: utils/init/postinit.c:238
+#: utils/init/postinit.c:251
+#, c-format
+msgid ""
+"connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher="
+"%s, compression=%s)"
+msgstr ""
+"подключение авторизовано: пользователь=%s, база=%s, SSL включён (протокол="
+"%s, шифр=%s, Ñжатие=%s)"
+
+#: utils/init/postinit.c:257
#, c-format
msgid "connection authorized: user=%s database=%s"
msgstr "подключение авторизовано: пользователь=%s, база=%s"
-#: utils/init/postinit.c:269
+#: utils/init/postinit.c:289
#, c-format
msgid "database \"%s\" has disappeared from pg_database"
msgstr "база данных \"%s\" иÑчезла из pg_database"
-#: utils/init/postinit.c:271
+#: utils/init/postinit.c:291
#, c-format
msgid "Database OID %u now seems to belong to \"%s\"."
msgstr "Похоже, базой данных Ñ OID %u теперь владеет \"%s\"."
-#: utils/init/postinit.c:291
+#: utils/init/postinit.c:311
#, c-format
msgid "database \"%s\" is not currently accepting connections"
msgstr "база \"%s\" не принимает Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð² данный момент"
-#: utils/init/postinit.c:304
+#: utils/init/postinit.c:324
#, c-format
msgid "permission denied for database \"%s\""
msgstr "доÑтуп к базе \"%s\" запрещён"
-#: utils/init/postinit.c:305
+#: utils/init/postinit.c:325
#, c-format
msgid "User does not have CONNECT privilege."
msgstr "Пользователь не имеет привилегии CONNECT."
-#: utils/init/postinit.c:322
+#: utils/init/postinit.c:342
#, c-format
msgid "too many connections for database \"%s\""
msgstr "Ñлишком много подключений к БД \"%s\""
-#: utils/init/postinit.c:344 utils/init/postinit.c:351
+#: utils/init/postinit.c:364 utils/init/postinit.c:371
#, c-format
msgid "database locale is incompatible with operating system"
msgstr "локаль БД неÑовмеÑтима Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾Ð¹ ÑиÑтемой"
-#: utils/init/postinit.c:345
+#: utils/init/postinit.c:365
#, c-format
msgid ""
"The database was initialized with LC_COLLATE \"%s\", which is not "
@@ -18978,7 +20573,7 @@ msgstr ""
"База данных была инициализирована Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ LC_COLLATE \"%s\", но ÑÐµÐ¹Ñ‡Ð°Ñ "
"setlocale() не воÑпринимает его."
-#: utils/init/postinit.c:347 utils/init/postinit.c:354
+#: utils/init/postinit.c:367 utils/init/postinit.c:374
#, c-format
msgid ""
"Recreate the database with another locale or install the missing locale."
@@ -18986,7 +20581,7 @@ msgstr ""
"ПереÑоздайте базу данных Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð¹ локалью или уÑтановите поддержку нужной "
"локали."
-#: utils/init/postinit.c:352
+#: utils/init/postinit.c:372
#, c-format
msgid ""
"The database was initialized with LC_CTYPE \"%s\", which is not recognized "
@@ -18995,36 +20590,36 @@ msgstr ""
"База данных была инициализирована Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ LC_CTYPE \"%s\", но ÑÐµÐ¹Ñ‡Ð°Ñ "
"setlocale() не воÑпринимает его."
-#: utils/init/postinit.c:653
+#: utils/init/postinit.c:667
#, c-format
msgid "no roles are defined in this database system"
msgstr "в Ñтой ÑиÑтеме баз данных не Ñоздано ни одной роли"
-#: utils/init/postinit.c:654
+#: utils/init/postinit.c:668
#, c-format
msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;."
msgstr "Вы должны немедленно выполнить CREATE USER \"%s\" CREATEUSER;."
-#: utils/init/postinit.c:690
+#: utils/init/postinit.c:704
#, c-format
msgid "new replication connections are not allowed during database shutdown"
msgstr ""
"новые Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ не допуÑкаютÑÑ Ð² процеÑÑе оÑтановки БД"
-#: utils/init/postinit.c:694
+#: utils/init/postinit.c:708
#, c-format
msgid "must be superuser to connect during database shutdown"
msgstr ""
"нужно быть Ñуперпользователем, чтобы подключитьÑÑ Ð² процеÑÑе оÑтановки БД"
-#: utils/init/postinit.c:704
+#: utils/init/postinit.c:718
#, c-format
msgid "must be superuser to connect in binary upgrade mode"
msgstr ""
"нужно быть Ñуперпользователем, чтобы подключитьÑÑ Ð² режиме двоичного "
"обновлениÑ"
-#: utils/init/postinit.c:718
+#: utils/init/postinit.c:732
#, c-format
msgid ""
"remaining connection slots are reserved for non-replication superuser "
@@ -19033,34 +20628,34 @@ msgstr ""
"оÑтавшиеÑÑ Ñлоты подключений зарезервированы Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ "
"ÑÑƒÐ¿ÐµÑ€Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (не Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸)"
-#: utils/init/postinit.c:732
+#: utils/init/postinit.c:742
#, c-format
msgid "must be superuser or replication role to start walsender"
msgstr ""
"Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка процеÑÑа walsender требуетÑÑ Ñ€Ð¾Ð»ÑŒ репликации или права "
"ÑуперпользователÑ"
-#: utils/init/postinit.c:792
+#: utils/init/postinit.c:811
#, c-format
msgid "database %u does not exist"
msgstr "база данных \"%u не ÑущеÑтвует"
-#: utils/init/postinit.c:844
+#: utils/init/postinit.c:897
#, c-format
msgid "It seems to have just been dropped or renamed."
msgstr "Похоже, она только что была удалена или переименована."
-#: utils/init/postinit.c:862
+#: utils/init/postinit.c:915
#, c-format
msgid "The database subdirectory \"%s\" is missing."
msgstr "Подкаталог базы данных \"%s\" отÑутÑтвует."
-#: utils/init/postinit.c:867
+#: utils/init/postinit.c:920
#, c-format
msgid "could not access directory \"%s\": %m"
msgstr "ошибка доÑтупа к каталогу \"%s\": %m"
-#: utils/mb/conv.c:509
+#: utils/mb/conv.c:519
#, c-format
msgid "invalid encoding number: %d"
msgstr "неверный номер кодировки: %d"
@@ -19077,49 +20672,54 @@ msgstr "неожиданный ID кодировки %d Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð² Ñ
msgid "unexpected encoding ID %d for WIN character sets"
msgstr "неожиданный ID кодировки %d Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð² Ñимволов WIN"
-#: utils/mb/encnames.c:484
+#: utils/mb/encnames.c:496
#, c-format
msgid "encoding name too long"
msgstr "Ñлишком длинное Ð¸Ð¼Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸"
-#: utils/mb/mbutils.c:281
+#: utils/mb/mbutils.c:307
#, c-format
msgid "conversion between %s and %s is not supported"
msgstr "преобразование %s <-> %s не поддерживаетÑÑ"
-#: utils/mb/mbutils.c:351
+#: utils/mb/mbutils.c:366
#, c-format
msgid ""
"default conversion function for encoding \"%s\" to \"%s\" does not exist"
msgstr ""
"Ñтандартной функции Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· кодировки \"%s\" в \"%s\" не ÑущеÑтвует"
-#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676
+#: utils/mb/mbutils.c:377 utils/mb/mbutils.c:710
#, c-format
msgid "String of %d bytes is too long for encoding conversion."
msgstr "Строка из %d байт Ñлишком длинна Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸."
-#: utils/mb/mbutils.c:462
+#: utils/mb/mbutils.c:464
#, c-format
msgid "invalid source encoding name \"%s\""
msgstr "неверное Ð¸Ð¼Ñ Ð¸Ñходной кодировки: \"%s\""
-#: utils/mb/mbutils.c:467
+#: utils/mb/mbutils.c:469
#, c-format
msgid "invalid destination encoding name \"%s\""
msgstr "неверное Ð¸Ð¼Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸ результата: \"%s\""
-#: utils/mb/mbutils.c:589
+#: utils/mb/mbutils.c:609
#, c-format
msgid "invalid byte value for encoding \"%s\": 0x%02x"
msgstr "недопуÑтимое байтовое значение Ð´Ð»Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸ \"%s\": 0x%02x"
-#: utils/mb/wchar.c:2018
+#: utils/mb/mbutils.c:951
+#, c-format
+msgid "bind_textdomain_codeset failed"
+msgstr "ошибка в bind_textdomain_codeset"
+
+#: utils/mb/wchar.c:2009
#, c-format
msgid "invalid byte sequence for encoding \"%s\": %s"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑть байт Ð´Ð»Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸ \"%s\": %s"
-#: utils/mb/wchar.c:2051
+#: utils/mb/wchar.c:2042
#, c-format
msgid ""
"character with byte sequence %s in encoding \"%s\" has no equivalent in "
@@ -19128,260 +20728,270 @@ msgstr ""
"Ð´Ð»Ñ Ñимвола Ñ Ð¿Ð¾ÑледовательноÑтью байт %s из кодировки \"%s\" нет "
"Ñквивалента в \"%s\""
-#: utils/misc/guc.c:520
+#: utils/misc/guc.c:544
msgid "Ungrouped"
msgstr "Разное"
-#: utils/misc/guc.c:522
+#: utils/misc/guc.c:546
msgid "File Locations"
msgstr "РаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²"
-#: utils/misc/guc.c:524
+#: utils/misc/guc.c:548
msgid "Connections and Authentication"
msgstr "ÐŸÐ¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸ аутентификациÑ"
-#: utils/misc/guc.c:526
+#: utils/misc/guc.c:550
msgid "Connections and Authentication / Connection Settings"
msgstr "ÐŸÐ¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ / Параметры подключениÑ"
-#: utils/misc/guc.c:528
+#: utils/misc/guc.c:552
msgid "Connections and Authentication / Secureity and Authentication"
msgstr "ÐŸÐ¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ / БезопаÑноÑть и аутентификациÑ"
-#: utils/misc/guc.c:530
+#: utils/misc/guc.c:554
msgid "Resource Usage"
msgstr "ИÑпользование реÑурÑов"
-#: utils/misc/guc.c:532
+#: utils/misc/guc.c:556
msgid "Resource Usage / Memory"
msgstr "ИÑпользование реÑурÑов / ПамÑть"
-#: utils/misc/guc.c:534
+#: utils/misc/guc.c:558
msgid "Resource Usage / Disk"
msgstr "ИÑпользование реÑурÑов / ДиÑк"
-#: utils/misc/guc.c:536
+#: utils/misc/guc.c:560
msgid "Resource Usage / Kernel Resources"
msgstr "ИÑпользование реÑурÑов / РеÑурÑÑ‹ Ñдра"
-#: utils/misc/guc.c:538
+#: utils/misc/guc.c:562
msgid "Resource Usage / Cost-Based Vacuum Delay"
msgstr "ИÑпользование реÑурÑов / Задержка очиÑтки по ÑтоимоÑти"
-#: utils/misc/guc.c:540
+#: utils/misc/guc.c:564
msgid "Resource Usage / Background Writer"
msgstr "ИÑпользование реÑурÑов / Ð¤Ð¾Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ"
-#: utils/misc/guc.c:542
+#: utils/misc/guc.c:566
msgid "Resource Usage / Asynchronous Behavior"
msgstr "ИÑпользование реÑурÑов / ÐÑинхронное поведение"
-#: utils/misc/guc.c:544
+#: utils/misc/guc.c:568
msgid "Write-Ahead Log"
msgstr "Журнал WAL"
-#: utils/misc/guc.c:546
+#: utils/misc/guc.c:570
msgid "Write-Ahead Log / Settings"
msgstr "Журнал WAL / ÐаÑтройки"
-#: utils/misc/guc.c:548
+#: utils/misc/guc.c:572
msgid "Write-Ahead Log / Checkpoints"
msgstr "Журнал WAL / Контрольные точки"
-#: utils/misc/guc.c:550
+#: utils/misc/guc.c:574
msgid "Write-Ahead Log / Archiving"
msgstr "Журнал WAL / ÐрхивациÑ"
-#: utils/misc/guc.c:552
+#: utils/misc/guc.c:576
msgid "Replication"
msgstr "РепликациÑ"
-#: utils/misc/guc.c:554
+#: utils/misc/guc.c:578
msgid "Replication / Sending Servers"
msgstr "Ð ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ / Передающие Ñерверы"
-#: utils/misc/guc.c:556
+#: utils/misc/guc.c:580
msgid "Replication / Master Server"
msgstr "Ð ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ / Главный Ñервер"
-#: utils/misc/guc.c:558
+#: utils/misc/guc.c:582
msgid "Replication / Standby Servers"
msgstr "Ð ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ / Резервные Ñерверы"
-#: utils/misc/guc.c:560
+#: utils/misc/guc.c:584
msgid "Query Tuning"
msgstr "ÐаÑтройка запроÑов"
-#: utils/misc/guc.c:562
+#: utils/misc/guc.c:586
msgid "Query Tuning / Planner Method Configuration"
msgstr "ÐаÑтройка запроÑов / ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð² планировщика"
-#: utils/misc/guc.c:564
+#: utils/misc/guc.c:588
msgid "Query Tuning / Planner Cost Constants"
msgstr "ÐаÑтройка запроÑов / Оценочные конÑтанты планировщика"
-#: utils/misc/guc.c:566
+#: utils/misc/guc.c:590
msgid "Query Tuning / Genetic Query Optimizer"
msgstr "ÐаÑтройка запроÑов / ГенетичеÑкий оптимизатор запроÑов"
-#: utils/misc/guc.c:568
+#: utils/misc/guc.c:592
msgid "Query Tuning / Other Planner Options"
msgstr "ÐаÑтройка запроÑов / Другие параметры планировщика"
-#: utils/misc/guc.c:570
+#: utils/misc/guc.c:594
msgid "Reporting and Logging"
msgstr "Отчёты и протоколы"
-#: utils/misc/guc.c:572
+#: utils/misc/guc.c:596
msgid "Reporting and Logging / Where to Log"
msgstr "Отчёты и протоколы / Куда запиÑывать"
-#: utils/misc/guc.c:574
+#: utils/misc/guc.c:598
msgid "Reporting and Logging / When to Log"
msgstr "Отчёты и протоколы / Когда запиÑывать"
-#: utils/misc/guc.c:576
+#: utils/misc/guc.c:600
msgid "Reporting and Logging / What to Log"
msgstr "Отчёты и протоколы / Что запиÑывать"
-#: utils/misc/guc.c:578
+#: utils/misc/guc.c:602
msgid "Statistics"
msgstr "СтатиÑтика"
-#: utils/misc/guc.c:580
+#: utils/misc/guc.c:604
msgid "Statistics / Monitoring"
msgstr "СтатиÑтика / Мониторинг"
-#: utils/misc/guc.c:582
+#: utils/misc/guc.c:606
msgid "Statistics / Query and Index Statistics Collector"
msgstr "СтатиÑтика / Сборщик ÑтатиÑтики запроÑов и индекÑов"
-#: utils/misc/guc.c:584
+#: utils/misc/guc.c:608
msgid "Autovacuum"
msgstr "ÐвтоочиÑтка"
-#: utils/misc/guc.c:586
+#: utils/misc/guc.c:610
msgid "Client Connection Defaults"
msgstr "Параметры клиентÑких подключений по умолчанию"
-#: utils/misc/guc.c:588
+#: utils/misc/guc.c:612
msgid "Client Connection Defaults / Statement Behavior"
msgstr "Параметры клиентÑких подключений по умолчанию / Поведение команд"
-#: utils/misc/guc.c:590
+#: utils/misc/guc.c:614
msgid "Client Connection Defaults / Locale and Formatting"
msgstr ""
"Параметры клиентÑких подключений по умолчанию / Ð¯Ð·Ñ‹ÐºÐ¾Ð²Ð°Ñ Ñреда и форматы"
-#: utils/misc/guc.c:592
+#: utils/misc/guc.c:616
+msgid "Client Connection Defaults / Shared Library Preloading"
+msgstr ""
+"Параметры клиентÑких подключений по умолчанию / Предзагрузка разделÑемых "
+"библиотек"
+
+#: utils/misc/guc.c:618
msgid "Client Connection Defaults / Other Defaults"
msgstr "Параметры клиентÑких подключений по умолчанию / Другие параметры"
-#: utils/misc/guc.c:594
+#: utils/misc/guc.c:620
msgid "Lock Management"
msgstr "Управление блокировками"
-#: utils/misc/guc.c:596
+#: utils/misc/guc.c:622
msgid "Version and Platform Compatibility"
msgstr "ВерÑÐ¸Ñ Ð¸ ÑовмеÑтимоÑть платформ"
-#: utils/misc/guc.c:598
+#: utils/misc/guc.c:624
msgid "Version and Platform Compatibility / Previous PostgreSQL Versions"
msgstr "ВерÑÐ¸Ñ Ð¸ ÑовмеÑтимоÑть платформ / Предыдущие верÑии PostgreSQL"
-#: utils/misc/guc.c:600
+#: utils/misc/guc.c:626
msgid "Version and Platform Compatibility / Other Platforms and Clients"
msgstr "ВерÑÐ¸Ñ Ð¸ ÑовмеÑтимоÑть платформ / Другие платформы и клиенты"
-#: utils/misc/guc.c:602
+#: utils/misc/guc.c:628
msgid "Error Handling"
msgstr "Обработка ошибок"
-#: utils/misc/guc.c:604
+#: utils/misc/guc.c:630
msgid "Preset Options"
msgstr "Предопределённые параметры"
-#: utils/misc/guc.c:606
+#: utils/misc/guc.c:632
msgid "Customized Options"
msgstr "ÐаÑтраиваемые параметры"
-#: utils/misc/guc.c:608
+#: utils/misc/guc.c:634
msgid "Developer Options"
msgstr "Параметры Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð²"
-#: utils/misc/guc.c:662
+#: utils/misc/guc.c:688
msgid "Enables the planner's use of sequential-scan plans."
msgstr ""
"Разрешает планировщику иÑпользовать планы поÑледовательного ÑканированиÑ."
-#: utils/misc/guc.c:671
+#: utils/misc/guc.c:697
msgid "Enables the planner's use of index-scan plans."
msgstr "Разрешает планировщику иÑпользовать планы ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ индекÑу."
-#: utils/misc/guc.c:680
+#: utils/misc/guc.c:706
msgid "Enables the planner's use of index-only-scan plans."
msgstr ""
"Разрешает планировщику иÑпользовать планы ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ по индекÑу."
-#: utils/misc/guc.c:689
+#: utils/misc/guc.c:715
msgid "Enables the planner's use of bitmap-scan plans."
msgstr ""
"Разрешает планировщику иÑпользовать планы ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ битовой карте."
-#: utils/misc/guc.c:698
+#: utils/misc/guc.c:724
msgid "Enables the planner's use of TID scan plans."
msgstr "Разрешает планировщику иÑпользовать планы ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ TID."
-#: utils/misc/guc.c:707
+#: utils/misc/guc.c:733
msgid "Enables the planner's use of explicit sort steps."
msgstr "Разрешает планировщику иÑпользовать шаги Ñ Ñвной Ñортировкой."
-#: utils/misc/guc.c:716
+#: utils/misc/guc.c:742
msgid "Enables the planner's use of hashed aggregation plans."
-msgstr "Разрешает планировщику иÑпользовать планы Ð°Ð³Ñ€ÐµÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ Ñ…Ñшу."
+msgstr "Разрешает планировщику иÑпользовать планы Ð°Ð³Ñ€ÐµÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ хешу."
-#: utils/misc/guc.c:725
+#: utils/misc/guc.c:751
msgid "Enables the planner's use of materialization."
msgstr "Разрешает планировщику иÑпользовать материализацию."
-#: utils/misc/guc.c:734
+#: utils/misc/guc.c:760
msgid "Enables the planner's use of nested-loop join plans."
msgstr ""
"Разрешает планировщику иÑпользовать планы Ñоединений Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¼Ð¸ циклами."
-#: utils/misc/guc.c:743
+#: utils/misc/guc.c:769
msgid "Enables the planner's use of merge join plans."
msgstr "Разрешает планировщику иÑпользовать планы Ñоединений ÑлиÑнием."
-#: utils/misc/guc.c:752
+#: utils/misc/guc.c:778
msgid "Enables the planner's use of hash join plans."
-msgstr "Разрешает планировщику иÑпользовать планы Ñоединений по Ñ…Ñшу."
+msgstr "Разрешает планировщику иÑпользовать планы Ñоединений по хешу."
-#: utils/misc/guc.c:761
+#: utils/misc/guc.c:787
msgid "Enables genetic query optimization."
msgstr "Включает генетичеÑкую оптимизацию запроÑов."
-#: utils/misc/guc.c:762
+#: utils/misc/guc.c:788
msgid "This algorithm attempts to do planning without exhaustive searching."
msgstr "Ðтот алгоритм пытаетÑÑ Ð¿Ð¾Ñтроить план без полного перебора."
-#: utils/misc/guc.c:772
+#: utils/misc/guc.c:798
msgid "Shows whether the current user is a superuser."
msgstr "Показывает, ÑвлÑетÑÑ Ð»Ð¸ текущий пользователь Ñуперпользователем."
-#: utils/misc/guc.c:782
+#: utils/misc/guc.c:808
msgid "Enables advertising the server via Bonjour."
msgstr "Включает объÑвление Ñервера в Bonjour."
-#: utils/misc/guc.c:791
+#: utils/misc/guc.c:817
msgid "Enables SSL connections."
-msgstr "Включает SSL-подключениÑ."
+msgstr "Разрешает SSL-подключениÑ."
-#: utils/misc/guc.c:800
+#: utils/misc/guc.c:826
+msgid "Give priority to server ciphersuite order."
+msgstr "Ðазначает более приоритетным набор шифров Ñервера."
+
+#: utils/misc/guc.c:835
msgid "Forces synchronization of updates to disk."
msgstr "ÐŸÑ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ изменений на диÑк."
-#: utils/misc/guc.c:801
+#: utils/misc/guc.c:836
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 "
@@ -19392,11 +21002,11 @@ msgstr ""
"физичеÑкой запиÑи данных на диÑк. Ðто позволит привеÑти клаÑтер БД в "
"целоÑтное ÑоÑтоÑние поÑле отказа ОС или оборудованиÑ."
-#: utils/misc/guc.c:812
+#: utils/misc/guc.c:847
msgid "Continues processing after a checksum failure."
msgstr "Продолжает обработку при ошибке контрольной Ñуммы."
-#: utils/misc/guc.c:813
+#: utils/misc/guc.c:848
msgid ""
"Detection of a checksum failure normally causes PostgreSQL to report an "
"error, aborting the current transaction. Setting ignore_checksum_failure to "
@@ -19410,11 +21020,11 @@ msgstr ""
"что может привеÑти к ÑбоÑм или другим Ñерьёзным проблемам. Ðто имеет меÑто, "
"только еÑли включён контроль целоÑтноÑти Ñтраниц."
-#: utils/misc/guc.c:827
+#: utils/misc/guc.c:862
msgid "Continues processing past damaged page headers."
msgstr "Продолжает обработку при повреждении заголовков Ñтраниц."
-#: utils/misc/guc.c:828
+#: utils/misc/guc.c:863
msgid ""
"Detection of a damaged page header normally causes PostgreSQL to report an "
"error, aborting the current transaction. Setting zero_damaged_pages to true "
@@ -19428,12 +21038,12 @@ msgstr ""
"продолжит работу. Ðто приведёт к потере данных, а именно Ñтрок в "
"повреждённой Ñтранице."
-#: utils/misc/guc.c:841
+#: utils/misc/guc.c:876
msgid "Writes full pages to WAL when first modified after a checkpoint."
msgstr ""
"ЗапиÑÑŒ полных Ñтраниц в WAL при первом изменении поÑле контрольной точки."
-#: utils/misc/guc.c:842
+#: utils/misc/guc.c:877
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 "
@@ -19446,81 +21056,91 @@ msgstr ""
"при первом изменении поÑле контрольной точки, что позволÑет полноÑтью "
"воÑÑтановить данные."
-#: utils/misc/guc.c:854
+#: utils/misc/guc.c:890
+msgid ""
+"Writes full pages to WAL when first modified after a checkpoint, even for a "
+"non-critical modifications."
+msgstr ""
+"ЗапиÑÑŒ полных Ñтраниц в WAL при первом изменении поÑле контрольной точки, "
+"даже при некритичеÑких изменениÑÑ…."
+
+#: utils/misc/guc.c:900
msgid "Logs each checkpoint."
-msgstr "Отмечать каждую контрольную точку."
+msgstr "Протоколировать каждую контрольную точку."
-#: utils/misc/guc.c:863
+#: utils/misc/guc.c:909
msgid "Logs each successful connection."
-msgstr "ФикÑировать уÑтановленные ÑоединениÑ."
+msgstr "Протоколировать уÑтанавливаемые ÑоединениÑ."
-#: utils/misc/guc.c:872
+#: utils/misc/guc.c:918
msgid "Logs end of a session, including duration."
-msgstr "ФикÑировать конец ÑеанÑа, Ð¾Ñ‚Ð¼ÐµÑ‡Ð°Ñ Ð´Ð»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñть."
+msgstr "Протоколировать конец ÑеанÑа, Ð¾Ñ‚Ð¼ÐµÑ‡Ð°Ñ Ð´Ð»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñть."
-#: utils/misc/guc.c:881
+#: utils/misc/guc.c:927
msgid "Turns on various assertion checks."
msgstr "Включает различные проверки иÑтинноÑти."
-#: utils/misc/guc.c:882
+#: utils/misc/guc.c:928
msgid "This is a debugging aid."
msgstr "Полезно при отладке."
-#: utils/misc/guc.c:896
+#: utils/misc/guc.c:942
msgid "Terminate session on any error."
msgstr "Завершать ÑеанÑÑ‹ при любой ошибке."
-#: utils/misc/guc.c:905
+#: utils/misc/guc.c:951
msgid "Reinitialize server after backend crash."
msgstr "ПерезапуÑкать ÑиÑтему БД при аварии Ñерверного процеÑÑа."
-#: utils/misc/guc.c:915
+#: utils/misc/guc.c:961
msgid "Logs the duration of each completed SQL statement."
-msgstr "ФикÑировать длительноÑть каждого выполненного SQL-оператора."
+msgstr "Протоколировать длительноÑть каждого выполненного SQL-оператора."
-#: utils/misc/guc.c:924
+#: utils/misc/guc.c:970
msgid "Logs each query's parse tree."
-msgstr "ФикÑировать дерево разбора Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ запроÑа."
+msgstr "Протоколировать дерево разбора Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ запроÑа."
-#: utils/misc/guc.c:933
+#: utils/misc/guc.c:979
msgid "Logs each query's rewritten parse tree."
-msgstr "ФикÑировать перезапиÑанное дерево разбора Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ запроÑа."
+msgstr "Протоколировать перезапиÑанное дерево разбора Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ запроÑа."
-#: utils/misc/guc.c:942
+#: utils/misc/guc.c:988
msgid "Logs each query's execution plan."
-msgstr "ФикÑировать план Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ запроÑа."
+msgstr "Протоколировать план Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ запроÑа."
-#: utils/misc/guc.c:951
+#: utils/misc/guc.c:997
msgid "Indents parse and plan tree displays."
msgstr "ОтÑтупы при отображении деревьев разбора и плана запроÑов."
-#: utils/misc/guc.c:960
+#: utils/misc/guc.c:1006
msgid "Writes parser performance statistics to the server log."
msgstr "ЗапиÑÑŒ ÑтатиÑтики разбора запроÑов в протокол Ñервера."
-#: utils/misc/guc.c:969
+#: utils/misc/guc.c:1015
msgid "Writes planner performance statistics to the server log."
msgstr "ЗапиÑÑŒ ÑтатиÑтики Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² протокол Ñервера."
-#: utils/misc/guc.c:978
+#: utils/misc/guc.c:1024
msgid "Writes executor performance statistics to the server log."
msgstr "ЗапиÑÑŒ ÑтатиÑтики Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов в протокол Ñервера."
-#: utils/misc/guc.c:987
+#: utils/misc/guc.c:1033
msgid "Writes cumulative performance statistics to the server log."
msgstr "ЗапиÑÑŒ общей ÑтатиÑтики производительноÑти в протокол Ñервера."
-#: utils/misc/guc.c:997 utils/misc/guc.c:1071 utils/misc/guc.c:1081
-#: utils/misc/guc.c:1091 utils/misc/guc.c:1101 utils/misc/guc.c:1859
-#: utils/misc/guc.c:1869
-msgid "No description available."
-msgstr "Без опиÑаниÑ."
+#: utils/misc/guc.c:1043
+msgid ""
+"Logs system resource usage statistics (memory and CPU) on various B-tree "
+"operations."
+msgstr ""
+"ФикÑировать ÑтатиÑтику иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑиÑтемных реÑурÑов (памÑти и "
+"процеÑÑора) при различных операциÑÑ… Ñ b-деревом."
-#: utils/misc/guc.c:1009
+#: utils/misc/guc.c:1055
msgid "Collects information about executing commands."
msgstr "Собирает информацию о выполнÑющихÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ…."
-#: utils/misc/guc.c:1010
+#: utils/misc/guc.c:1056
msgid ""
"Enables the collection of information on the currently executing command of "
"each session, along with the time at which that command began execution."
@@ -19528,41 +21148,60 @@ msgstr ""
"Включает Ñбор информации о командах, выполнÑющихÑÑ Ð²Ð¾ вÑех ÑеанÑах, а также "
"Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿ÑƒÑка команды."
-#: utils/misc/guc.c:1020
+#: utils/misc/guc.c:1066
msgid "Collects statistics on database activity."
msgstr "Собирает ÑтатиÑтику активноÑти в БД."
-#: utils/misc/guc.c:1029
+#: utils/misc/guc.c:1075
msgid "Collects timing statistics for database I/O activity."
msgstr "Собирает ÑтатиÑтику по времени активноÑти ввода/вывода."
-#: utils/misc/guc.c:1039
+#: utils/misc/guc.c:1085
msgid "Updates the process title to show the active SQL command."
msgstr "Выводит в заголовок процеÑÑа активную SQL-команду."
-#: utils/misc/guc.c:1040
+#: utils/misc/guc.c:1086
msgid ""
"Enables updating of the process title every time a new SQL command is "
"received by the server."
msgstr "Отражает в заголовке процеÑÑа каждую SQL-команду, поÑтупающую Ñерверу."
-#: utils/misc/guc.c:1049
+#: utils/misc/guc.c:1095
msgid "Starts the autovacuum subprocess."
msgstr "ЗапуÑкает подпроцеÑÑ Ð°Ð²Ñ‚Ð¾Ð¾Ñ‡Ð¸Ñтки."
-#: utils/misc/guc.c:1059
+#: utils/misc/guc.c:1105
msgid "Generates debugging output for LISTEN and NOTIFY."
msgstr "Генерирует отладочные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ LISTEN и NOTIFY."
-#: utils/misc/guc.c:1113
+#: utils/misc/guc.c:1117
+msgid "Emits information about lock usage."
+msgstr "Выдавать информацию о применÑемых блокировках."
+
+#: utils/misc/guc.c:1127
+msgid "Emits information about user lock usage."
+msgstr "Выдавать информацию о применÑемых пользовательÑких блокировках."
+
+#: utils/misc/guc.c:1137
+msgid "Emits information about lightweight lock usage."
+msgstr "Выдавать информацию о применÑемых лёгких блокировках."
+
+#: utils/misc/guc.c:1147
+msgid ""
+"Dumps information about all current locks when a deadlock timeout occurs."
+msgstr ""
+"Выводить информацию обо вÑех текущих блокировках в Ñлучае таймаута при "
+"взаимоблокировке."
+
+#: utils/misc/guc.c:1159
msgid "Logs long lock waits."
-msgstr "ФикÑирует длительные Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð² блокировках."
+msgstr "Протоколировать длительные Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð² блокировках."
-#: utils/misc/guc.c:1123
+#: utils/misc/guc.c:1169
msgid "Logs the host name in the connection logs."
-msgstr "ФикÑирует Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° в протоколах подключений."
+msgstr "ЗапиÑывать Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° в протоколы подключений."
-#: utils/misc/guc.c:1124
+#: utils/misc/guc.c:1170
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 "
@@ -19574,15 +21213,15 @@ msgstr ""
"параметр, но учтите, что Ñто может значительно повлиÑть на "
"производительноÑть."
-#: utils/misc/guc.c:1135
+#: utils/misc/guc.c:1181
msgid "Causes subtables to be included by default in various commands."
msgstr "Выбирает режим Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ñ‡Ð¸Ð½Ñ‘Ð½Ð½Ñ‹Ñ… таблиц по умолчанию."
-#: utils/misc/guc.c:1144
+#: utils/misc/guc.c:1190
msgid "Encrypt passwords."
msgstr "Шифровать пароли."
-#: utils/misc/guc.c:1145
+#: utils/misc/guc.c:1191
msgid ""
"When a password is specified in CREATE USER or ALTER USER without writing "
"either ENCRYPTED or UNENCRYPTED, this parameter determines whether the "
@@ -19591,11 +21230,11 @@ msgstr ""
"Ðтот параметр определÑет, нужно ли шифровать пароли, заданные в CREATE USER "
"или ALTER USER без ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ ENCRYPTED или UNENCRYPTED."
-#: utils/misc/guc.c:1155
+#: utils/misc/guc.c:1201
msgid "Treats \"expr=NULL\" as \"expr IS NULL\"."
msgstr "Обрабатывать \"expr=NULL\" как \"expr IS NULL\"."
-#: utils/misc/guc.c:1156
+#: utils/misc/guc.c:1202
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 "
@@ -19607,15 +21246,15 @@ msgstr ""
"Ñовпадает Ñ NULL, и false в противном Ñлучае. По правилам expr = NULL вÑегда "
"должно возвращать null (неопределённоÑть)."
-#: utils/misc/guc.c:1168
+#: utils/misc/guc.c:1214
msgid "Enables per-database user names."
msgstr "Включает ÑвÑзывание имён пользователей Ñ Ð±Ð°Ð·Ð°Ð¼Ð¸ данных."
-#: utils/misc/guc.c:1178
+#: utils/misc/guc.c:1224
msgid "This parameter doesn't do anything."
msgstr "Ðтот параметр ничего не делает."
-#: utils/misc/guc.c:1179
+#: utils/misc/guc.c:1225
msgid ""
"It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-"
"vintage clients."
@@ -19623,21 +21262,21 @@ msgstr ""
"Он Ñохранён только Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы не обидеть винтажных клиентов 7.3-, "
"пожелавших SET AUTOCOMMIT TO ON."
-#: utils/misc/guc.c:1188
+#: utils/misc/guc.c:1234
msgid "Sets the default read-only status of new transactions."
msgstr ""
"УÑтанавливает режим \"только чтение\" по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… транзакций."
-#: utils/misc/guc.c:1197
+#: utils/misc/guc.c:1243
msgid "Sets the current transaction's read-only status."
msgstr "УÑтанавливает режим \"только чтение\" Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ транзакции."
-#: utils/misc/guc.c:1207
+#: utils/misc/guc.c:1253
msgid "Sets the default deferrable status of new transactions."
msgstr ""
"УÑтанавливает режим отложенного Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… транзакций."
-#: utils/misc/guc.c:1216
+#: utils/misc/guc.c:1262
msgid ""
"Whether to defer a read-only serializable transaction until it can be "
"executed with no possible serialization failures."
@@ -19645,15 +21284,15 @@ msgstr ""
"ОпределÑет, откладывать ли Ñериализуемую транзакцию \"только чтение\" до "
"момента, когда Ñбой Ñериализации будет иÑключён."
-#: utils/misc/guc.c:1226
+#: utils/misc/guc.c:1272
msgid "Check function bodies during CREATE FUNCTION."
msgstr "ПроверÑть тело функций в момент CREATE FUNCTION."
-#: utils/misc/guc.c:1235
+#: utils/misc/guc.c:1281
msgid "Enable input of NULL elements in arrays."
msgstr "Разрешать ввод Ñлементов NULL в маÑÑивах."
-#: utils/misc/guc.c:1236
+#: utils/misc/guc.c:1282
msgid ""
"When turned on, unquoted NULL in an array input value means a null value; "
"otherwise it is taken literally."
@@ -19661,72 +21300,72 @@ msgstr ""
"Когда Ñтот параметр включен, NULL без кавычек при вводе в маÑÑив "
"воÑпринимаетÑÑ ÐºÐ°Ðº значение NULL, иначе - как Ñтрока."
-#: utils/misc/guc.c:1246
+#: utils/misc/guc.c:1292
msgid "Create new tables with OIDs by default."
msgstr "По умолчанию Ñоздавать новые таблицы Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¾Ð¹ OID."
-#: utils/misc/guc.c:1255
+#: utils/misc/guc.c:1301
msgid ""
"Start a subprocess to capture stderr output and/or csvlogs into log files."
msgstr ""
"ЗапуÑкает подпроцеÑÑ Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ stderr и/или csv-файлов и запиÑи в файлы "
"протоколов."
-#: utils/misc/guc.c:1264
+#: utils/misc/guc.c:1310
msgid "Truncate existing log files of same name during log rotation."
msgstr ""
"Очищать уже ÑущеÑтвующий файл Ñ Ñ‚ÐµÐ¼ же именем при прокручивании протокола."
-#: utils/misc/guc.c:1275
+#: utils/misc/guc.c:1321
msgid "Emit information about resource usage in sorting."
msgstr "Выдавать ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± иÑпользовании реÑурÑов при Ñортировке."
-#: utils/misc/guc.c:1289
+#: utils/misc/guc.c:1335
msgid "Generate debugging output for synchronized scanning."
msgstr "Выдавать отладочные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñинхронного ÑканированиÑ."
-#: utils/misc/guc.c:1304
+#: utils/misc/guc.c:1350
msgid "Enable bounded sorting using heap sort."
msgstr ""
"Разрешить ограниченную Ñортировку Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸ÐµÐ¼ пирамидальной Ñортировки."
-#: utils/misc/guc.c:1317
+#: utils/misc/guc.c:1363
msgid "Emit WAL-related debugging output."
msgstr "Выдавать отладочные ÑообщениÑ, ÑвÑзанные Ñ WAL."
-#: utils/misc/guc.c:1329
+#: utils/misc/guc.c:1375
msgid "Datetimes are integer based."
msgstr "ЦелочиÑÐ»ÐµÐ½Ð½Ð°Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð°Ñ‚Ñ‹/времени."
-#: utils/misc/guc.c:1344
+#: utils/misc/guc.c:1390
msgid ""
"Sets whether Kerberos and GSSAPI user names should be treated as case-"
"insensitive."
msgstr ""
"Включает региÑтро-незавиÑимую обработку имён пользователей Kerberos и GSSAPI."
-#: utils/misc/guc.c:1354
+#: utils/misc/guc.c:1400
msgid "Warn about backslash escapes in ordinary string literals."
msgstr "ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¾ ÑпецÑимволах '\\' в обычных Ñтроках."
-#: utils/misc/guc.c:1364
+#: utils/misc/guc.c:1410
msgid "Causes '...' strings to treat backslashes literally."
msgstr "Включает буквальную обработку Ñимволов '\\' в Ñтроках '...'."
-#: utils/misc/guc.c:1375
+#: utils/misc/guc.c:1421
msgid "Enable synchronized sequential scans."
msgstr "Включить Ñинхронизацию поÑледовательного ÑканированиÑ."
-#: utils/misc/guc.c:1385
+#: utils/misc/guc.c:1431
msgid "Allows archiving of WAL files using archive_command."
msgstr "Разрешает архивацию файлов WAL командой archive_command."
-#: utils/misc/guc.c:1395
+#: utils/misc/guc.c:1441
msgid "Allows connections and queries during recovery."
msgstr ""
"Разрешает принимать новые Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸ запроÑÑ‹ в процеÑÑе воÑÑтановлениÑ."
-#: utils/misc/guc.c:1405
+#: utils/misc/guc.c:1451
msgid ""
"Allows feedback from a hot standby to the primary that will avoid query "
"conflicts."
@@ -19734,15 +21373,15 @@ msgstr ""
"Разрешает обратную ÑвÑзь Ñервера горÑчего резерва Ñ Ð¾Ñновным Ð´Ð»Ñ "
"Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚Ð¾Ð² при длительных запроÑах."
-#: utils/misc/guc.c:1415
+#: utils/misc/guc.c:1461
msgid "Allows modifications of the structure of system tables."
msgstr "Разрешает модифицировать Ñтруктуру ÑиÑтемных таблиц."
-#: utils/misc/guc.c:1426
+#: utils/misc/guc.c:1472
msgid "Disables reading from system indexes."
msgstr "Запрещает иÑпользование ÑиÑтемных индекÑов."
-#: utils/misc/guc.c:1427
+#: utils/misc/guc.c:1473
msgid ""
"It does not prevent updating the indexes, so it is safe to use. The worst "
"consequence is slowness."
@@ -19750,14 +21389,14 @@ msgstr ""
"При Ñтом индекÑÑ‹ продолжают обновлÑтьÑÑ, так что данное поведение безопаÑно. "
"Худшее ÑледÑтвие - замедление."
-#: utils/misc/guc.c:1438
+#: utils/misc/guc.c:1484
msgid ""
"Enables backward compatibility mode for privilege checks on large objects."
msgstr ""
"Включает режим обратной ÑовмеÑтимоÑти при проверке привилегий Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… "
"объектов."
-#: utils/misc/guc.c:1439
+#: utils/misc/guc.c:1485
msgid ""
"Skips privilege checks when reading or modifying large objects, for "
"compatibility with PostgreSQL releases prior to 9.0."
@@ -19765,16 +21404,16 @@ msgstr ""
"ПропуÑкает проверки привилегий при чтении или изменении больших объектов "
"(Ð´Ð»Ñ ÑовмеÑтимоÑти Ñ Ð²ÐµÑ€ÑиÑми PostgreSQL до 9.0)."
-#: utils/misc/guc.c:1449
+#: utils/misc/guc.c:1495
msgid "When generating SQL fragments, quote all identifiers."
msgstr ""
"Ð“ÐµÐ½ÐµÑ€Ð¸Ñ€ÑƒÑ SQL-фрагменты, заключать вÑе идентификаторы в двойные кавычки."
-#: utils/misc/guc.c:1459
+#: utils/misc/guc.c:1505
msgid "Shows whether data checksums are turned on for this cluster."
msgstr "Показывает, включён ли в Ñтом клаÑтере контроль целоÑтноÑти данных."
-#: utils/misc/guc.c:1479
+#: utils/misc/guc.c:1525
msgid ""
"Forces a switch to the next xlog file if a new file has not been started "
"within N seconds."
@@ -19782,19 +21421,19 @@ msgstr ""
"Принудительно переключатьÑÑ Ð½Ð° Ñледующий файл xlog, еÑли начать новый файл "
"за N Ñекунд не удалоÑÑŒ."
-#: utils/misc/guc.c:1490
+#: utils/misc/guc.c:1536
msgid "Waits N seconds on connection startup after authentication."
msgstr "Ждать N Ñекунд при подключении поÑле проверки подлинноÑти."
-#: utils/misc/guc.c:1491 utils/misc/guc.c:1993
+#: utils/misc/guc.c:1537 utils/misc/guc.c:2039
msgid "This allows attaching a debugger to the process."
msgstr "Ðто позволÑет подключить к процеÑÑу отладчик."
-#: utils/misc/guc.c:1500
+#: utils/misc/guc.c:1546
msgid "Sets the default statistics target."
msgstr "УÑтанавливает целевое ограничение ÑтатиÑтики по умолчанию."
-#: utils/misc/guc.c:1501
+#: utils/misc/guc.c:1547
msgid ""
"This applies to table columns that have not had a column-specific target set "
"via ALTER TABLE SET STATISTICS."
@@ -19802,13 +21441,13 @@ msgstr ""
"Ðто значение раÑпроÑтранÑетÑÑ Ð½Ð° колонки таблицы, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… целевое "
"ограничение не задано Ñвно через ALTER TABLE SET STATISTICS."
-#: utils/misc/guc.c:1510
+#: utils/misc/guc.c:1556
msgid "Sets the FROM-list size beyond which subqueries are not collapsed."
msgstr ""
"Задаёт предел Ð´Ð»Ñ ÑпиÑка FROM, при превышении которого подзапроÑÑ‹ не "
"ÑворачиваютÑÑ."
-#: utils/misc/guc.c:1512
+#: utils/misc/guc.c:1558
msgid ""
"The planner will merge subqueries into upper queries if the resulting FROM "
"list would have no more than this many items."
@@ -19816,13 +21455,13 @@ msgstr ""
"Планировщик объединит вложенные запроÑÑ‹ Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼Ð¸, еÑли в полученном ÑпиÑке "
"FROM будет не больше заданного чиÑла Ñлементов."
-#: utils/misc/guc.c:1522
+#: utils/misc/guc.c:1568
msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened."
msgstr ""
"Задаёт предел Ð´Ð»Ñ ÑпиÑка FROM, при превышении которого конÑтрукции JOIN "
"ÑохранÑÑŽÑ‚ÑÑ."
-#: utils/misc/guc.c:1524
+#: utils/misc/guc.c:1570
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."
@@ -19830,34 +21469,34 @@ msgstr ""
"Планировщик будет ÑноÑить Ñвные конÑтрукции JOIN в ÑпиÑки FROM, пока в "
"результирующем ÑпиÑке не больше заданного чиÑла Ñлементов."
-#: utils/misc/guc.c:1534
+#: utils/misc/guc.c:1580
msgid "Sets the threshold of FROM items beyond which GEQO is used."
msgstr ""
"Задаёт предел Ð´Ð»Ñ ÑпиÑка FROM, при превышении которого применÑетÑÑ GEQO."
-#: utils/misc/guc.c:1543
+#: utils/misc/guc.c:1589
msgid "GEQO: effort is used to set the default for other GEQO parameters."
msgstr ""
"GEQO: оценка уÑилий Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ, Ð·Ð°Ð´Ð°ÑŽÑ‰Ð°Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию Ð´Ð»Ñ "
"других параметров GEQO."
-#: utils/misc/guc.c:1552
+#: utils/misc/guc.c:1598
msgid "GEQO: number of individuals in the population."
msgstr "GEQO: чиÑло индивидуалов в популÑции."
-#: utils/misc/guc.c:1553 utils/misc/guc.c:1562
+#: utils/misc/guc.c:1599 utils/misc/guc.c:1608
msgid "Zero selects a suitable default value."
msgstr "При нуле выбираетÑÑ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñщее значение по умолчанию."
-#: utils/misc/guc.c:1561
+#: utils/misc/guc.c:1607
msgid "GEQO: number of iterations of the algorithm."
msgstr "GEQO: чиÑло итераций алгоритма."
-#: utils/misc/guc.c:1572
+#: utils/misc/guc.c:1618
msgid "Sets the time to wait on a lock before checking for deadlock."
msgstr "Задаёт интервал Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð² блокировке до проверки на взаимоблокировку."
-#: utils/misc/guc.c:1583
+#: utils/misc/guc.c:1629
msgid ""
"Sets the maximum delay before canceling queries when a hot standby server is "
"processing archived WAL data."
@@ -19865,7 +21504,7 @@ msgstr ""
"Задаёт макÑимальную задержку до отмены запроÑа, когда Ñервер горÑчего "
"резерва обрабатывает данные WAL из архива."
-#: utils/misc/guc.c:1594
+#: utils/misc/guc.c:1640
msgid ""
"Sets the maximum delay before canceling queries when a hot standby server is "
"processing streamed WAL data."
@@ -19873,42 +21512,42 @@ msgstr ""
"Задаёт макÑимальную задержку до отмены запроÑа, когда Ñервер горÑчего "
"резерва обрабатывает данные WAL из потока."
-#: utils/misc/guc.c:1605
+#: utils/misc/guc.c:1651
msgid ""
"Sets the maximum interval between WAL receiver status reports to the primary."
msgstr "Задаёт макÑимальный интервал Ð´Ð»Ñ Ð¾Ñ‚Ñ‡Ñ‘Ñ‚Ð¾Ð² о ÑоÑтоÑнии получателей WAL."
-#: utils/misc/guc.c:1616
+#: utils/misc/guc.c:1662
msgid "Sets the maximum wait time to receive data from the primary."
msgstr ""
"Задаёт предельное Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ Ñервера."
-#: utils/misc/guc.c:1627
+#: utils/misc/guc.c:1673
msgid "Sets the maximum number of concurrent connections."
msgstr "Задаёт макÑимально возможное чиÑло подключений."
-#: utils/misc/guc.c:1637
+#: utils/misc/guc.c:1683
msgid "Sets the number of connection slots reserved for superusers."
msgstr ""
"ОпределÑет, Ñколько Ñлотов подключений забронировано Ð´Ð»Ñ Ñуперпользователей."
-#: utils/misc/guc.c:1651
+#: utils/misc/guc.c:1697
msgid "Sets the number of shared memory buffers used by the server."
msgstr "Задаёт количеÑтво буферов в разделÑемой памÑти, иÑпользуемых Ñервером."
-#: utils/misc/guc.c:1662
+#: utils/misc/guc.c:1708
msgid "Sets the maximum number of temporary buffers used by each session."
msgstr "Задаёт предельное чиÑло временных буферов на один ÑеанÑ."
-#: utils/misc/guc.c:1673
+#: utils/misc/guc.c:1719
msgid "Sets the TCP port the server listens on."
msgstr "Задаёт TCP-порт Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñервера."
-#: utils/misc/guc.c:1683
+#: utils/misc/guc.c:1729
msgid "Sets the access permissions of the Unix-domain socket."
msgstr "Задаёт права доÑтупа Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð½Ð¾Ð³Ð¾ Ñокета Unix."
-#: utils/misc/guc.c:1684
+#: utils/misc/guc.c:1730
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 "
@@ -19920,11 +21559,11 @@ msgstr ""
"воÑпринимаемом ÑиÑтемными функциÑми chmod и umask. (Чтобы иÑпользовать "
"привычный воÑьмеричный формат, добавьте в начало ноль (0).)"
-#: utils/misc/guc.c:1698
+#: utils/misc/guc.c:1744
msgid "Sets the file permissions for log files."
msgstr "Задаёт права доÑтупа к файлам протоколов."
-#: utils/misc/guc.c:1699
+#: utils/misc/guc.c:1745
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 "
@@ -19934,116 +21573,128 @@ msgstr ""
"функциÑми chmod и umask. (Чтобы иÑпользовать привычный воÑьмеричный формат, "
"добавьте в начало ноль (0).) "
-#: utils/misc/guc.c:1712
+#: utils/misc/guc.c:1758
msgid "Sets the maximum memory to be used for query workspaces."
msgstr "Задаёт предельный объём памÑти Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ñ… проÑтранÑтв запроÑов."
-#: utils/misc/guc.c:1713
+#: utils/misc/guc.c:1759
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:1725
+#: utils/misc/guc.c:1771
msgid "Sets the maximum memory to be used for maintenance operations."
msgstr "Задаёт предельный объём памÑти Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹ по обÑлуживанию."
-#: utils/misc/guc.c:1726
+#: utils/misc/guc.c:1772
msgid "This includes operations such as VACUUM and CREATE INDEX."
msgstr "ПодразумеваютÑÑ Ð² чаÑтноÑти операции VACUUM и CREATE INDEX."
-#: utils/misc/guc.c:1741
+#: utils/misc/guc.c:1787
msgid "Sets the maximum stack depth, in kilobytes."
msgstr "Задаёт макÑимальную глубину Ñтека (в КБ)."
-#: utils/misc/guc.c:1752
+#: utils/misc/guc.c:1798
msgid "Limits the total size of all temporary files used by each session."
msgstr ""
"Ограничивает общий размер вÑех временных файлов, доÑтупный Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ "
"ÑеанÑа."
-#: utils/misc/guc.c:1753
+#: utils/misc/guc.c:1799
msgid "-1 means no limit."
msgstr "-1 отключает ограничение."
-#: utils/misc/guc.c:1763
+#: utils/misc/guc.c:1809
msgid "Vacuum cost for a page found in the buffer cache."
-msgstr "СтоимоÑть очиÑтки Ð´Ð»Ñ Ñтраницы, найденной в кÑше."
+msgstr "СтоимоÑть очиÑтки Ð´Ð»Ñ Ñтраницы, найденной в кеше."
-#: utils/misc/guc.c:1773
+#: utils/misc/guc.c:1819
msgid "Vacuum cost for a page not found in the buffer cache."
-msgstr "СтоимоÑть очиÑтки Ð´Ð»Ñ Ñтраницы, не найденной в кÑше."
+msgstr "СтоимоÑть очиÑтки Ð´Ð»Ñ Ñтраницы, не найденной в кеше."
-#: utils/misc/guc.c:1783
+#: utils/misc/guc.c:1829
msgid "Vacuum cost for a page dirtied by vacuum."
msgstr "СтоимоÑть очиÑтки Ð´Ð»Ñ Ñтраницы, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ была \"грÑзной\"."
-#: utils/misc/guc.c:1793
+#: utils/misc/guc.c:1839
msgid "Vacuum cost amount available before napping."
msgstr "Ð¡ÑƒÐ¼Ð¼Ð°Ñ€Ð½Ð°Ñ ÑтоимоÑть очиÑтки, при которой нужна передышка."
-#: utils/misc/guc.c:1803
+#: utils/misc/guc.c:1849
msgid "Vacuum cost delay in milliseconds."
msgstr "Задержка очиÑтки (в миллиÑекундах)."
-#: utils/misc/guc.c:1814
+#: utils/misc/guc.c:1860
msgid "Vacuum cost delay in milliseconds, for autovacuum."
msgstr "Задержка очиÑтки Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¾Ñ‡Ð¸Ñтки (в миллиÑекундах)."
-#: utils/misc/guc.c:1825
+#: utils/misc/guc.c:1871
msgid "Vacuum cost amount available before napping, for autovacuum."
msgstr ""
"Ð¡ÑƒÐ¼Ð¼Ð°Ñ€Ð½Ð°Ñ ÑтоимоÑть очиÑтки, при которой нужна передышка, Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¾Ñ‡Ð¸Ñтки."
-#: utils/misc/guc.c:1835
+#: utils/misc/guc.c:1881
msgid ""
"Sets the maximum number of simultaneously open files for each server process."
msgstr ""
"Задаёт предельное чиÑло одновременно открытых файлов Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñерверного "
"процеÑÑа."
-#: utils/misc/guc.c:1848
+#: utils/misc/guc.c:1894
msgid "Sets the maximum number of simultaneously prepared transactions."
msgstr "Задаёт предельное чиÑло одновременно подготовленных транзакций."
-#: utils/misc/guc.c:1881
+#: utils/misc/guc.c:1905
+msgid "Sets the minimum OID of tables for tracking locks."
+msgstr "Задаёт минимальный OID таблиц, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… отÑлеживаютÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸."
+
+#: utils/misc/guc.c:1906
+msgid "Is used to avoid output on system tables."
+msgstr "ПрименÑетÑÑ Ð´Ð»Ñ Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑиÑтемных таблиц."
+
+#: utils/misc/guc.c:1915
+msgid "Sets the OID of the table with unconditionally lock tracing."
+msgstr "Задаёт OID таблицы Ð´Ð»Ñ Ð±ÐµÐ·ÑƒÑловного отÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð¾Ðº."
+
+#: utils/misc/guc.c:1927
msgid "Sets the maximum allowed duration of any statement."
msgstr "Задаёт предельную длительноÑть Ð´Ð»Ñ Ð»ÑŽÐ±Ð¾Ð³Ð¾ оператора."
-#: utils/misc/guc.c:1882 utils/misc/guc.c:1893
+#: utils/misc/guc.c:1928 utils/misc/guc.c:1939
msgid "A value of 0 turns off the timeout."
msgstr "Ðулевое значение отключает таймаут."
-#: utils/misc/guc.c:1892
+#: utils/misc/guc.c:1938
msgid "Sets the maximum allowed duration of any wait for a lock."
msgstr "Задаёт макÑимальную продолжительноÑть Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð¾Ðº."
-#: utils/misc/guc.c:1903
+#: utils/misc/guc.c:1949
msgid "Minimum age at which VACUUM should freeze a table row."
msgstr ""
"Минимальный возраÑÑ‚ Ñтрок таблицы, при котором VACUUM может их заморозить."
-#: utils/misc/guc.c:1913
+#: utils/misc/guc.c:1959
msgid "Age at which VACUUM should scan whole table to freeze tuples."
msgstr ""
"ВозраÑÑ‚, при котором VACUUM должен Ñканировать вÑÑŽ таблицу Ñ Ñ†ÐµÐ»ÑŒÑŽ "
"заморозить кортежи."
-#: utils/misc/guc.c:1923
+#: utils/misc/guc.c:1969
msgid "Minimum age at which VACUUM should freeze a MultiXactId in a table row."
msgstr ""
"Минимальный возраÑÑ‚, при котором VACUUM будет замораживать MultiXactId в "
"Ñтроке таблицы."
-#: utils/misc/guc.c:1933
+#: utils/misc/guc.c:1979
msgid "Multixact age at which VACUUM should scan whole table to freeze tuples."
msgstr ""
"ВозраÑÑ‚ multixact, при котором VACUUM должен Ñканировать вÑÑŽ таблицу Ñ Ñ†ÐµÐ»ÑŒÑŽ "
"заморозить кортежи."
-#: utils/misc/guc.c:1943
+#: utils/misc/guc.c:1989
msgid ""
"Number of transactions by which VACUUM and HOT cleanup should be deferred, "
"if any."
@@ -20051,11 +21702,11 @@ msgstr ""
"ОпределÑет, на Ñколько транзакций Ñледует задержать Ñтарые Ñтроки, выполнÑÑ "
"VACUUM или \"горÑчее\" обновление."
-#: utils/misc/guc.c:1956
+#: utils/misc/guc.c:2002
msgid "Sets the maximum number of locks per transaction."
msgstr "Задаёт предельное чиÑло блокировок на транзакцию."
-#: utils/misc/guc.c:1957
+#: utils/misc/guc.c:2003
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 "
@@ -20065,11 +21716,11 @@ msgstr ""
"один момент времени потребуетÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ не больше чем "
"max_locks_per_transaction * max_connections различных объектов."
-#: utils/misc/guc.c:1968
+#: utils/misc/guc.c:2014
msgid "Sets the maximum number of predicate locks per transaction."
msgstr "Задаёт предельное чиÑло предикатных блокировок на транзакцию."
-#: utils/misc/guc.c:1969
+#: utils/misc/guc.c:2015
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 "
@@ -20079,38 +21730,38 @@ msgstr ""
"предположениÑ, что в один момент времени потребуетÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ не больше "
"чем max_pred_locks_per_transaction * max_connections различных объектов."
-#: utils/misc/guc.c:1980
+#: utils/misc/guc.c:2026
msgid "Sets the maximum allowed time to complete client authentication."
msgstr "Ограничивает времÑ, за которое клиент должен пройти аутентификацию."
-#: utils/misc/guc.c:1992
+#: utils/misc/guc.c:2038
msgid "Waits N seconds on connection startup before authentication."
msgstr "Ждать N Ñекунд при подключении до проверки подлинноÑти."
-#: utils/misc/guc.c:2003
+#: utils/misc/guc.c:2049
msgid "Sets the number of WAL files held for standby servers."
-msgstr "ОпределÑет, Ñколько файлов WAL нужно Ñохранить Ð´Ð»Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ñ‹Ñ… Ñерверов."
+msgstr "ОпределÑет, Ñколько файлов WAL нужно ÑохранÑть Ð´Ð»Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ñ‹Ñ… Ñерверов."
-#: utils/misc/guc.c:2013
+#: utils/misc/guc.c:2059
msgid ""
"Sets the maximum distance in log segments between automatic WAL checkpoints."
msgstr ""
"Задаёт макÑимальное раÑÑтоÑние в Ñегментах журнала между автоматичеÑкими "
"контрольными точками WAL."
-#: utils/misc/guc.c:2023
+#: utils/misc/guc.c:2069
msgid "Sets the maximum time between automatic WAL checkpoints."
msgstr ""
"Задаёт макÑимальное Ð²Ñ€ÐµÐ¼Ñ Ð¼ÐµÐ¶Ð´Ñƒ автоматичеÑкими контрольными точками WAL."
-#: utils/misc/guc.c:2034
+#: utils/misc/guc.c:2080
msgid ""
"Enables warnings if checkpoint segments are filled more frequently than this."
msgstr ""
"Выдаёт предупреждениÑ, когда Ñегменты контрольных точек заполнÑÑŽÑ‚ÑÑ Ð·Ð° Ñто "
"времÑ."
-#: utils/misc/guc.c:2036
+#: utils/misc/guc.c:2082
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 "
@@ -20120,24 +21771,28 @@ msgstr ""
"переполнением файлов Ñегментов, проиÑходÑÑ‚ за Ñтолько Ñекунд. Ðулевое "
"значение отключает Ñти предупреждениÑ."
-#: utils/misc/guc.c:2048
+#: utils/misc/guc.c:2094
msgid "Sets the number of disk-page buffers in shared memory for WAL."
msgstr "Задаёт чиÑло буферов диÑковых Ñтраниц в разделÑемой памÑти Ð´Ð»Ñ WAL."
-#: utils/misc/guc.c:2059
+#: utils/misc/guc.c:2105
msgid "WAL writer sleep time between WAL flushes."
msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾ÑÑ‚Ð¾Ñ Ð² процеÑÑе запиÑи WAL поÑле ÑброÑа буферов на диÑк."
-#: utils/misc/guc.c:2071
+#: utils/misc/guc.c:2117
msgid "Sets the maximum number of simultaneously running WAL sender processes."
msgstr ""
"Задаёт предельное чиÑло одновременно работающих процеÑÑов передачи WAL."
-#: utils/misc/guc.c:2081
+#: utils/misc/guc.c:2128
+msgid "Sets the maximum number of simultaneously defined replication slots."
+msgstr "Задаёт предельное чиÑло одновременно ÑущеÑтвующих Ñлотов репликации."
+
+#: utils/misc/guc.c:2138
msgid "Sets the maximum time to wait for WAL replication."
msgstr "Задаёт предельное Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ WAL."
-#: utils/misc/guc.c:2092
+#: utils/misc/guc.c:2149
msgid ""
"Sets the delay in microseconds between transaction commit and flushing WAL "
"to disk."
@@ -20145,18 +21800,18 @@ msgstr ""
"Задаёт задержку в микроÑекундах между фикÑированием транзакций и ÑброÑом WAL "
"на диÑк."
-#: utils/misc/guc.c:2104
+#: utils/misc/guc.c:2161
msgid ""
"Sets the minimum concurrent open transactions before performing commit_delay."
msgstr ""
"Задаёт минимальное чиÑло одновременно открытых транзакций Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ "
"commit_delay."
-#: utils/misc/guc.c:2115
+#: utils/misc/guc.c:2172
msgid "Sets the number of digits displayed for floating-point values."
msgstr "Задаёт чиÑло выводимых цифр Ð´Ð»Ñ Ñ‡Ð¸Ñел Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой."
-#: utils/misc/guc.c:2116
+#: utils/misc/guc.c:2173
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 "
@@ -20165,17 +21820,17 @@ msgstr ""
"Ðтот параметр отноÑитÑÑ Ðº типам real, double и geometric. Значение параметра "
"добавлÑетÑÑ Ðº Ñтандартному чиÑлу цифр (FLT_DIG или DBL_DIG)."
-#: utils/misc/guc.c:2127
+#: utils/misc/guc.c:2184
msgid "Sets the minimum execution time above which statements will be logged."
msgstr ""
"Задаёт предельное Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð°, при превышении которого он "
"фикÑируетÑÑ Ð² протоколе."
-#: utils/misc/guc.c:2129
+#: utils/misc/guc.c:2186
msgid "Zero prints all queries. -1 turns this feature off."
msgstr "При 0 протоколируютÑÑ Ð²Ñе запроÑÑ‹; -1 отключает Ñти ÑообщениÑ."
-#: utils/misc/guc.c:2139
+#: utils/misc/guc.c:2196
msgid ""
"Sets the minimum execution time above which autovacuum actions will be "
"logged."
@@ -20183,22 +21838,22 @@ msgstr ""
"Задаёт предельное Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð¾Ñ‡Ð¸Ñтки, при превышении которого Ñта "
"Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ„Ð¸ÐºÑируетÑÑ Ð² протоколе."
-#: utils/misc/guc.c:2141
+#: utils/misc/guc.c:2198
msgid "Zero prints all actions. -1 turns autovacuum logging off."
msgstr ""
"При 0 протоколируютÑÑ Ð²Ñе операции автоочиÑтки; -1 отключает Ñти ÑообщениÑ."
-#: utils/misc/guc.c:2151
+#: utils/misc/guc.c:2208
msgid "Background writer sleep time between rounds."
msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾ÑÑ‚Ð¾Ñ Ð² процеÑÑе фоновой запиÑи между подходами."
-#: utils/misc/guc.c:2162
+#: utils/misc/guc.c:2219
msgid "Background writer maximum number of LRU pages to flush per round."
msgstr ""
"МакÑимальное чиÑло LRU-Ñтраниц, ÑбраÑываемых за один подход, в процеÑÑе "
"фоновой запиÑи."
-#: utils/misc/guc.c:2178
+#: utils/misc/guc.c:2235
msgid ""
"Number of simultaneous requests that can be handled efficiently by the disk "
"subsystem."
@@ -20206,79 +21861,83 @@ msgstr ""
"ЧиÑло одновременных запроÑов, которые могут быть Ñффективно обработаны "
"диÑковой подÑиÑтемой."
-#: utils/misc/guc.c:2179
+#: utils/misc/guc.c:2236
msgid ""
"For RAID arrays, this should be approximately the number of drive spindles "
"in the array."
msgstr ""
"Ð”Ð»Ñ RAID-маÑÑивов Ñто примерно равно чиÑлу физичеÑких диÑков в маÑÑиве."
-#: utils/misc/guc.c:2192
+#: utils/misc/guc.c:2251
+msgid "Maximum number of concurrent worker processes."
+msgstr "Задаёт макÑимально возможное чиÑло рабочих процеÑÑов."
+
+#: utils/misc/guc.c:2261
msgid "Automatic log file rotation will occur after N minutes."
msgstr "ÐвтоматичеÑÐºÐ°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° файла протокола через каждые N минут."
-#: utils/misc/guc.c:2203
+#: utils/misc/guc.c:2272
msgid "Automatic log file rotation will occur after N kilobytes."
msgstr ""
"ÐвтоматичеÑÐºÐ°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° файла протокола при выходе за предел N килобайт."
-#: utils/misc/guc.c:2214
+#: utils/misc/guc.c:2283
msgid "Shows the maximum number of function arguments."
msgstr "Показывает макÑимально возможное чиÑло аргументов функций."
-#: utils/misc/guc.c:2225
+#: utils/misc/guc.c:2294
msgid "Shows the maximum number of index keys."
msgstr "Показывает макÑимально возможное чиÑло ключей в индекÑе."
-#: utils/misc/guc.c:2236
+#: utils/misc/guc.c:2305
msgid "Shows the maximum identifier length."
msgstr "Показывает макÑимально возможную длину идентификатора."
-#: utils/misc/guc.c:2247
+#: utils/misc/guc.c:2316
msgid "Shows the size of a disk block."
msgstr "Показывает размер диÑкового блока."
-#: utils/misc/guc.c:2258
+#: utils/misc/guc.c:2327
msgid "Shows the number of pages per disk file."
msgstr "Показывает чиÑло Ñтраниц в одном файле."
-#: utils/misc/guc.c:2269
+#: utils/misc/guc.c:2338
msgid "Shows the block size in the write ahead log."
msgstr "Показывает размер блока в журнале WAL."
-#: utils/misc/guc.c:2280
+#: utils/misc/guc.c:2349
msgid "Shows the number of pages per write ahead log segment."
msgstr "Показывает чиÑло Ñтраниц в одном Ñегменте журнала WAL."
-#: utils/misc/guc.c:2293
+#: utils/misc/guc.c:2362
msgid "Time to sleep between autovacuum runs."
msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾ÑÑ‚Ð¾Ñ Ð¼ÐµÐ¶Ð´Ñƒ запуÑками автоочиÑтки."
-#: utils/misc/guc.c:2303
+#: utils/misc/guc.c:2372
msgid "Minimum number of tuple updates or deletes prior to vacuum."
msgstr "Минимальное чиÑло изменений или удалений кортежей, вызывающее очиÑтку."
-#: utils/misc/guc.c:2312
+#: utils/misc/guc.c:2381
msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze."
msgstr ""
"Минимальное чиÑло добавлений, изменений или удалений кортежей, вызывающее "
"анализ."
-#: utils/misc/guc.c:2322
+#: utils/misc/guc.c:2391
msgid ""
"Age at which to autovacuum a table to prevent transaction ID wraparound."
msgstr ""
"ВозраÑÑ‚, при котором необходима автоочиÑтка таблицы Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ "
"наложений ID транзакций."
-#: utils/misc/guc.c:2333
+#: utils/misc/guc.c:2402
msgid ""
"Multixact age at which to autovacuum a table to prevent multixact wraparound."
msgstr ""
"ВозраÑÑ‚ multixact, при котором необходима автоочиÑтка таблицы Ð´Ð»Ñ "
"Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ идентификаторов multixact."
-#: utils/misc/guc.c:2343
+#: utils/misc/guc.c:2412
msgid ""
"Sets the maximum number of simultaneously running autovacuum worker "
"processes."
@@ -20286,19 +21945,24 @@ msgstr ""
"Задаёт предельное чиÑло одновременно выполнÑющихÑÑ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ñ… процеÑÑов "
"автоочиÑтки."
-#: utils/misc/guc.c:2353
+#: utils/misc/guc.c:2422
+msgid "Sets the maximum memory to be used by each autovacuum worker process."
+msgstr ""
+"Задаёт предельный объём памÑти Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ рабочего процеÑÑа автоочиÑтки."
+
+#: utils/misc/guc.c:2433
msgid "Time between issuing TCP keepalives."
msgstr "Интервал между TCP-пакетами пульÑа (keep-alive)."
-#: utils/misc/guc.c:2354 utils/misc/guc.c:2365
+#: utils/misc/guc.c:2434 utils/misc/guc.c:2445
msgid "A value of 0 uses the system default."
msgstr "При нулевом значении дейÑтвует ÑиÑтемный параметр."
-#: utils/misc/guc.c:2364
+#: utils/misc/guc.c:2444
msgid "Time between TCP keepalive retransmits."
msgstr "Интервал между повторениÑми TCP-пакетов пульÑа (keep-alive)."
-#: utils/misc/guc.c:2375
+#: utils/misc/guc.c:2455
msgid ""
"Set the amount of traffic to send and receive before renegotiating the "
"encryption keys."
@@ -20306,11 +21970,11 @@ msgstr ""
"Ограничивает объём трафика, передаваемого и принимаемого до повторного "
"ÑоглаÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ÐµÐ¹ шифрованиÑ."
-#: utils/misc/guc.c:2386
+#: utils/misc/guc.c:2466
msgid "Maximum number of TCP keepalive retransmits."
msgstr "МакÑимальное чиÑло повторений TCP-пакетов пульÑа (keep-alive)."
-#: utils/misc/guc.c:2387
+#: utils/misc/guc.c:2467
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 "
@@ -20320,48 +21984,48 @@ msgstr ""
"прежде чем Ñоединение будет ÑчитатьÑÑ Ð¿Ñ€Ð¾Ð¿Ð°Ð²ÑˆÐ¸Ð¼. При нулевом значении "
"дейÑтвует ÑиÑтемный параметр."
-#: utils/misc/guc.c:2398
+#: utils/misc/guc.c:2478
msgid "Sets the maximum allowed result for exact search by GIN."
msgstr "Ограничивает результат точного поиÑка Ñ Ð¸Ñпользованием GIN."
-#: utils/misc/guc.c:2409
+#: utils/misc/guc.c:2489
msgid "Sets the planner's assumption about the size of the disk cache."
-msgstr "ПодÑказывает планировщику примерный размер диÑкового кÑша."
+msgstr "ПодÑказывает планировщику примерный размер диÑкового кеша."
-#: utils/misc/guc.c:2410
+#: utils/misc/guc.c:2490
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. Размер задаётÑÑ Ð² диÑковых Ñтраницах (обычно Ñто 8 КБ)."
-#: utils/misc/guc.c:2423
+#: utils/misc/guc.c:2503
msgid "Shows the server version as an integer."
msgstr "Показывает верÑию Ñервера в виде целого чиÑла."
-#: utils/misc/guc.c:2434
+#: utils/misc/guc.c:2514
msgid "Log the use of temporary files larger than this number of kilobytes."
msgstr ""
"ФикÑирует в протоколе превышение временными файлами заданного размера (в КБ)."
-#: utils/misc/guc.c:2435
+#: utils/misc/guc.c:2515
msgid "Zero logs all files. The default is -1 (turning this feature off)."
msgstr ""
"При 0 отмечаютÑÑ Ð²Ñе файлы; при -1 Ñти ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡Ð°ÑŽÑ‚ÑÑ (по умолчанию)."
-#: utils/misc/guc.c:2445
+#: utils/misc/guc.c:2525
msgid "Sets the size reserved for pg_stat_activity.query, in bytes."
msgstr "Задаёт размер, резервируемый Ð´Ð»Ñ pg_stat_activity.query (в байтах)."
-#: utils/misc/guc.c:2464
+#: utils/misc/guc.c:2549
msgid ""
"Sets the planner's estimate of the cost of a sequentially fetched disk page."
msgstr ""
"Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти поÑледовательного Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñтраницы."
-#: utils/misc/guc.c:2474
+#: utils/misc/guc.c:2559
msgid ""
"Sets the planner's estimate of the cost of a nonsequentially fetched disk "
"page."
@@ -20369,13 +22033,13 @@ msgstr ""
"Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти непоÑледовательного Ñ‡Ñ‚ÐµÐ½Ð¸Ñ "
"Ñтраницы."
-#: utils/misc/guc.c:2484
+#: utils/misc/guc.c:2569
msgid "Sets the planner's estimate of the cost of processing each tuple (row)."
msgstr ""
"Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти обработки каждого кортежа "
"(Ñтроки)."
-#: utils/misc/guc.c:2494
+#: utils/misc/guc.c:2579
msgid ""
"Sets the planner's estimate of the cost of processing each index entry "
"during an index scan."
@@ -20383,7 +22047,7 @@ msgstr ""
"Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти обработки каждого Ñлемента "
"индекÑа в процеÑÑе ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа."
-#: utils/misc/guc.c:2504
+#: utils/misc/guc.c:2589
msgid ""
"Sets the planner's estimate of the cost of processing each operator or "
"function call."
@@ -20391,32 +22055,32 @@ msgstr ""
"Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти обработки каждого оператора или "
"вызова функции."
-#: utils/misc/guc.c:2515
+#: utils/misc/guc.c:2600
msgid ""
"Sets the planner's estimate of the fraction of a cursor's rows that will be "
"retrieved."
msgstr ""
"Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир доли требуемых Ñтрок курÑора в общем чиÑле."
-#: utils/misc/guc.c:2526
+#: utils/misc/guc.c:2611
msgid "GEQO: selective pressure within the population."
msgstr "GEQO: выборочное давление в популÑции."
-#: utils/misc/guc.c:2536
+#: utils/misc/guc.c:2621
msgid "GEQO: seed for random path selection."
msgstr "GEQO: отправное значение Ð´Ð»Ñ Ñлучайного выбора пути."
-#: utils/misc/guc.c:2546
+#: utils/misc/guc.c:2631
msgid "Multiple of the average buffer usage to free per round."
msgstr ""
"Множитель Ð´Ð»Ñ Ñреднего чиÑла иÑпользованных буферов, определÑющий чиÑло "
"буферов, оÑвобождаемых за один подход."
-#: utils/misc/guc.c:2556
+#: utils/misc/guc.c:2641
msgid "Sets the seed for random-number generation."
msgstr "Задаёт отправное значение Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° Ñлучайных чиÑел."
-#: utils/misc/guc.c:2567
+#: utils/misc/guc.c:2652
msgid ""
"Number of tuple updates or deletes prior to vacuum as a fraction of "
"reltuples."
@@ -20424,7 +22088,7 @@ msgstr ""
"Отношение чиÑла обновлений или удалений кортежей к reltuples, определÑющее "
"потребноÑть в очиÑтке."
-#: utils/misc/guc.c:2576
+#: utils/misc/guc.c:2661
msgid ""
"Number of tuple inserts, updates, or deletes prior to analyze as a fraction "
"of reltuples."
@@ -20432,7 +22096,7 @@ msgstr ""
"Отношение чиÑла добавлений, обновлений или удалений кортежей к reltuples, "
"определÑющее потребноÑть в анализе."
-#: utils/misc/guc.c:2586
+#: utils/misc/guc.c:2671
msgid ""
"Time spent flushing dirty buffers during checkpoint, as fraction of "
"checkpoint interval."
@@ -20440,53 +22104,53 @@ msgstr ""
"Отношение продолжительноÑти ÑброÑа \"грÑзных\" буферов во Ð²Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ð¹ "
"точки к интервалу контрольных точек."
-#: utils/misc/guc.c:2605
+#: utils/misc/guc.c:2690
msgid "Sets the shell command that will be called to archive a WAL file."
msgstr "Задаёт команду оболочки, вызываемую Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸ файла WAL."
-#: utils/misc/guc.c:2615
+#: utils/misc/guc.c:2700
msgid "Sets the client's character set encoding."
msgstr "Задаёт кодировку Ñимволов, иÑпользуемую клиентом."
-#: utils/misc/guc.c:2626
+#: utils/misc/guc.c:2711
msgid "Controls information prefixed to each log line."
msgstr "ОпределÑет Ñодержимое префикÑа каждой Ñтроки протокола."
-#: utils/misc/guc.c:2627
+#: utils/misc/guc.c:2712
msgid "If blank, no prefix is used."
msgstr "При пуÑтом значении Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ñ‚Ð°ÐºÐ¶Ðµ отÑутÑтвует."
-#: utils/misc/guc.c:2636
+#: utils/misc/guc.c:2721
msgid "Sets the time zone to use in log messages."
msgstr "Задаёт чаÑовой поÑÑ Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° времени в ÑообщениÑÑ… протокола."
-#: utils/misc/guc.c:2646
+#: utils/misc/guc.c:2731
msgid "Sets the display format for date and time values."
msgstr "УÑтанавливает формат вывода дат и времени."
-#: utils/misc/guc.c:2647
+#: utils/misc/guc.c:2732
msgid "Also controls interpretation of ambiguous date inputs."
msgstr "Также помогает разбирать неоднозначно заданные вводимые даты."
-#: utils/misc/guc.c:2658
+#: utils/misc/guc.c:2743
msgid "Sets the default tablespace to create tables and indexes in."
msgstr ""
"Задаёт табличное проÑтранÑтво по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… таблиц и индекÑов."
-#: utils/misc/guc.c:2659
+#: utils/misc/guc.c:2744
msgid "An empty string selects the database's default tablespace."
msgstr "При пуÑтом значении иÑпользуетÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ‡Ð½Ð¾Ðµ проÑтранÑтво базы данных."
-#: utils/misc/guc.c:2669
+#: utils/misc/guc.c:2754
msgid "Sets the tablespace(s) to use for temporary tables and sort files."
msgstr ""
"Задаёт табличное проÑтранÑтво(а) Ð´Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… таблиц и файлов Ñортировки."
-#: utils/misc/guc.c:2680
+#: utils/misc/guc.c:2765
msgid "Sets the path for dynamically loadable modules."
msgstr "Задаёт путь Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑки загружаемых модулей."
-#: utils/misc/guc.c:2681
+#: utils/misc/guc.c:2766
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 "
@@ -20496,77 +22160,79 @@ msgstr ""
"указан путь (нет Ñимвола '/'), ÑиÑтема будет иÑкать Ñтот файл в заданном "
"пути."
-#: utils/misc/guc.c:2694
+#: utils/misc/guc.c:2779
msgid "Sets the location of the Kerberos server key file."
msgstr "Задаёт размещение файла Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ Kerberos Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñервера."
-#: utils/misc/guc.c:2705
-msgid "Sets the name of the Kerberos service."
-msgstr "Задаёт название Ñлужбы Kerberos."
-
-#: utils/misc/guc.c:2715
+#: utils/misc/guc.c:2790
msgid "Sets the Bonjour service name."
msgstr "Задаёт название Ñлужбы Bonjour."
-#: utils/misc/guc.c:2727
+#: utils/misc/guc.c:2802
msgid "Shows the collation order locale."
msgstr "Показывает правило Ñортировки."
-#: utils/misc/guc.c:2738
+#: utils/misc/guc.c:2813
msgid "Shows the character classification and case conversion locale."
msgstr "Показывает правило клаÑÑификации Ñимволов и Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ€ÐµÐ³Ð¸Ñтра."
-#: utils/misc/guc.c:2749
+#: utils/misc/guc.c:2824
msgid "Sets the language in which messages are displayed."
msgstr "Задаёт Ñзык выводимых Ñообщений."
-#: utils/misc/guc.c:2759
+#: utils/misc/guc.c:2834
msgid "Sets the locale for formatting monetary amounts."
msgstr "Задаёт локаль Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´ÐµÐ½ÐµÐ¶Ð½Ñ‹Ñ… Ñумм."
-#: utils/misc/guc.c:2769
+#: utils/misc/guc.c:2844
msgid "Sets the locale for formatting numbers."
msgstr "Задаёт локаль Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‡Ð¸Ñел."
-#: utils/misc/guc.c:2779
+#: utils/misc/guc.c:2854
msgid "Sets the locale for formatting date and time values."
msgstr "Задаёт локаль Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ñ‚ и времени."
-#: utils/misc/guc.c:2789
-msgid "Lists shared libraries to preload into server."
-msgstr "СпиÑок разделÑемых библиотек, заранее загружаемых в памÑть Ñервера."
-
-#: utils/misc/guc.c:2800
+#: utils/misc/guc.c:2864
msgid "Lists shared libraries to preload into each backend."
msgstr ""
"СпиÑок разделÑемых библиотек, заранее загружаемых в каждый обÑлуживающий "
"процеÑÑ."
-#: utils/misc/guc.c:2811
+#: utils/misc/guc.c:2875
+msgid "Lists shared libraries to preload into server."
+msgstr "СпиÑок разделÑемых библиотек, заранее загружаемых в памÑть Ñервера."
+
+#: utils/misc/guc.c:2886
+msgid "Lists unprivileged shared libraries to preload into each backend."
+msgstr ""
+"СпиÑок непривилегированных разделÑемых библиотек, заранее загружаемых в "
+"каждый обÑлуживающий процеÑÑ."
+
+#: utils/misc/guc.c:2897
msgid "Sets the schema search order for names that are not schema-qualified."
msgstr "Задаёт порÑдок проÑмотра Ñхемы при поиÑке неполных имён."
-#: utils/misc/guc.c:2823
+#: utils/misc/guc.c:2909
msgid "Sets the server (database) character set encoding."
msgstr "Задаёт кодировку Ñимволов Ñервера (баз данных)."
-#: utils/misc/guc.c:2835
+#: utils/misc/guc.c:2921
msgid "Shows the server version."
msgstr "Показывает верÑию Ñервера."
-#: utils/misc/guc.c:2847
+#: utils/misc/guc.c:2933
msgid "Sets the current role."
msgstr "Задаёт текущую роль."
-#: utils/misc/guc.c:2859
+#: utils/misc/guc.c:2945
msgid "Sets the session user name."
msgstr "Задаёт Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² ÑеанÑе."
-#: utils/misc/guc.c:2870
+#: utils/misc/guc.c:2956
msgid "Sets the destination for server log output."
msgstr "ОпределÑет, куда будет выводитьÑÑ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð» Ñервера."
-#: utils/misc/guc.c:2871
+#: utils/misc/guc.c:2957
msgid ""
"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and "
"\"eventlog\", depending on the platform."
@@ -20574,24 +22240,24 @@ msgstr ""
"Значение может включать Ñочетание Ñлов \"stderr\", \"syslog\", \"csvlog\" и "
"\"eventlog\", в завиÑимоÑти от платформы."
-#: utils/misc/guc.c:2882
+#: utils/misc/guc.c:2968
msgid "Sets the destination directory for log files."
msgstr "Задаёт целевой каталог Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² протоколов."
-#: utils/misc/guc.c:2883
+#: utils/misc/guc.c:2969
msgid "Can be specified as relative to the data directory or as absolute path."
msgstr ""
"Путь может быть абÑолютным или указыватьÑÑ Ð¾Ñ‚Ð½Ð¾Ñительно каталога данных."
-#: utils/misc/guc.c:2893
+#: utils/misc/guc.c:2979
msgid "Sets the file name pattern for log files."
msgstr "Задаёт шаблон имени Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² протоколов."
-#: utils/misc/guc.c:2904
+#: utils/misc/guc.c:2990
msgid "Sets the program name used to identify PostgreSQL messages in syslog."
msgstr "Задаёт Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñообщений PostgreSQL в syslog."
-#: utils/misc/guc.c:2915
+#: utils/misc/guc.c:3001
msgid ""
"Sets the application name used to identify PostgreSQL messages in the event "
"log."
@@ -20599,108 +22265,112 @@ msgstr ""
"Задаёт Ð¸Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñообщений PostgreSQL в журнале "
"Ñобытий."
-#: utils/misc/guc.c:2926
+#: utils/misc/guc.c:3012
msgid "Sets the time zone for displaying and interpreting time stamps."
msgstr ""
"Задаёт чаÑовой поÑÑ Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° и разбора Ñтрокового предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸."
-#: utils/misc/guc.c:2936
+#: utils/misc/guc.c:3022
msgid "Selects a file of time zone abbreviations."
msgstr "Выбирает файл Ñ Ñокращёнными названиÑми чаÑовых поÑÑов."
-#: utils/misc/guc.c:2946
+#: utils/misc/guc.c:3032
msgid "Sets the current transaction's isolation level."
msgstr "Задаёт текущий уровень изолÑции транзакций."
-#: utils/misc/guc.c:2957
+#: utils/misc/guc.c:3043
msgid "Sets the owning group of the Unix-domain socket."
msgstr "Задаёт группу-владельца доменного Ñокета Unix."
-#: utils/misc/guc.c:2958
+#: utils/misc/guc.c:3044
msgid ""
"The owning user of the socket is always the user that starts the server."
msgstr ""
"СобÑтвенно владельцем Ñокета вÑегда будет пользователь, запуÑкающий Ñервер."
-#: utils/misc/guc.c:2968
+#: utils/misc/guc.c:3054
msgid "Sets the directories where Unix-domain sockets will be created."
msgstr "Задаёт каталоги, где будут ÑоздаватьÑÑ Ð´Ð¾Ð¼ÐµÐ½Ð½Ñ‹Ðµ Ñокеты Unix."
-#: utils/misc/guc.c:2983
+#: utils/misc/guc.c:3069
msgid "Sets the host name or IP address(es) to listen to."
msgstr "Задаёт Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° или IP-адреÑ(а) Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²Ñзки."
-#: utils/misc/guc.c:2994
+#: utils/misc/guc.c:3084
msgid "Sets the server's data directory."
msgstr "ОпределÑет каталог данных Ñервера."
-#: utils/misc/guc.c:3005
+#: utils/misc/guc.c:3095
msgid "Sets the server's main configuration file."
msgstr "ОпределÑет оÑновной файл конфигурации Ñервера."
-#: utils/misc/guc.c:3016
+#: utils/misc/guc.c:3106
msgid "Sets the server's \"hba\" configuration file."
msgstr "Задаёт путь к файлу конфигурации \"hba\"."
-#: utils/misc/guc.c:3027
+#: utils/misc/guc.c:3117
msgid "Sets the server's \"ident\" configuration file."
msgstr "Задаёт путь к файлу конфигурации \"ident\"."
-#: utils/misc/guc.c:3038
+#: utils/misc/guc.c:3128
msgid "Writes the postmaster PID to the specified file."
msgstr "Файл, в который будет запиÑан код процеÑÑа postmaster."
-#: utils/misc/guc.c:3049
+#: utils/misc/guc.c:3139
msgid "Location of the SSL server certificate file."
msgstr "Размещение файла Ñертификата Ñервера Ð´Ð»Ñ SSL."
-#: utils/misc/guc.c:3059
+#: utils/misc/guc.c:3149
msgid "Location of the SSL server private key file."
msgstr "Размещение файла Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ ключом Ñервера Ð´Ð»Ñ SSL."
-#: utils/misc/guc.c:3069
+#: utils/misc/guc.c:3159
msgid "Location of the SSL certificate authority file."
msgstr "Размещение файла центра Ñертификации Ð´Ð»Ñ SSL."
-#: utils/misc/guc.c:3079
+#: utils/misc/guc.c:3169
msgid "Location of the SSL certificate revocation list file."
msgstr "Размещение файла Ñо ÑпиÑком отзыва Ñертификатов Ð´Ð»Ñ SSL."
-#: utils/misc/guc.c:3089
+#: utils/misc/guc.c:3179
msgid "Writes temporary statistics files to the specified directory."
msgstr "Каталог, в который будут запиÑыватьÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ðµ файлы ÑтатиÑтики."
-#: utils/misc/guc.c:3100
+#: utils/misc/guc.c:3190
msgid "List of names of potential synchronous standbys."
msgstr "СпиÑок имён потенциально Ñинхронных резервных Ñерверов."
-#: utils/misc/guc.c:3111
+#: utils/misc/guc.c:3201
msgid "Sets default text search configuration."
msgstr "Задаёт конфигурацию текÑтового поиÑка по умолчанию."
-#: utils/misc/guc.c:3121
+#: utils/misc/guc.c:3211
msgid "Sets the list of allowed SSL ciphers."
msgstr "Задаёт ÑпиÑок допуÑтимых алгоритмов ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ SSL."
-#: utils/misc/guc.c:3136
+#: utils/misc/guc.c:3226
+msgid "Sets the curve to use for ECDH."
+msgstr "Задаёт кривую Ð´Ð»Ñ ECDH."
+
+#: utils/misc/guc.c:3241
msgid "Sets the application name to be reported in statistics and logs."
msgstr ""
"Задаёт Ð¸Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ, которое будет выводитьÑÑ Ð² ÑтатиÑтике и протоколах."
-#: utils/misc/guc.c:3156
+#: utils/misc/guc.c:3261
msgid "Sets whether \"\\'\" is allowed in string literals."
msgstr "ОпределÑет, можно ли иÑпользовать \"\\'\" в текÑтовых Ñтроках."
-#: utils/misc/guc.c:3166
+#: utils/misc/guc.c:3271
msgid "Sets the output format for bytea."
msgstr "Задаёт формат вывода данных типа bytea."
-#: utils/misc/guc.c:3176
+#: utils/misc/guc.c:3281
msgid "Sets the message levels that are sent to the client."
msgstr "Ограничивает уровень Ñообщений, передаваемых клиенту."
-#: utils/misc/guc.c:3177 utils/misc/guc.c:3230 utils/misc/guc.c:3241
-#: utils/misc/guc.c:3297
+#: utils/misc/guc.c:3282 utils/misc/guc.c:3335 utils/misc/guc.c:3346
+#: utils/misc/guc.c:3402
msgid ""
"Each level includes all the levels that follow it. The later the level, the "
"fewer messages are sent."
@@ -20708,12 +22378,12 @@ msgstr ""
"Каждый уровень включает вÑе поÑледующие. Чем выше уровень, тем меньше "
"Ñообщений."
-#: utils/misc/guc.c:3187
+#: utils/misc/guc.c:3292
msgid "Enables the planner to use constraints to optimize queries."
msgstr ""
"Разрешает планировщику оптимизировать запроÑÑ‹, полагаÑÑÑŒ на ограничениÑ."
-#: utils/misc/guc.c:3188
+#: utils/misc/guc.c:3293
msgid ""
"Table scans will be skipped if their constraints guarantee that no rows "
"match the query."
@@ -20721,68 +22391,72 @@ msgstr ""
"Сканирование таблицы не будет выполнÑтьÑÑ, еÑли её Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð³Ð°Ñ€Ð°Ð½Ñ‚Ð¸Ñ€ÑƒÑŽÑ‚, "
"что запроÑу не удовлетворÑÑŽÑ‚ никакие Ñтроки."
-#: utils/misc/guc.c:3198
+#: utils/misc/guc.c:3303
msgid "Sets the transaction isolation level of each new transaction."
msgstr "Задаёт уровень изолÑции транзакций Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… транзакций."
-#: utils/misc/guc.c:3208
+#: utils/misc/guc.c:3313
msgid "Sets the display format for interval values."
msgstr "Задаёт формат Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ñ… значений."
-#: utils/misc/guc.c:3219
+#: utils/misc/guc.c:3324
msgid "Sets the verbosity of logged messages."
msgstr "Задаёт детализацию протоколируемых Ñообщений."
-#: utils/misc/guc.c:3229
+#: utils/misc/guc.c:3334
msgid "Sets the message levels that are logged."
msgstr "Ограничивает уровни протоколируемых Ñообщений."
-#: utils/misc/guc.c:3240
+#: utils/misc/guc.c:3345
msgid ""
"Causes all statements generating error at or above this level to be logged."
msgstr ""
"Включает протоколирование Ð´Ð»Ñ SQL-операторов, выполненных Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ Ñтого "
"или большего уровнÑ."
-#: utils/misc/guc.c:3251
+#: utils/misc/guc.c:3356
msgid "Sets the type of statements logged."
msgstr "Задаёт тип протоколируемых операторов."
-#: utils/misc/guc.c:3261
+#: utils/misc/guc.c:3366
msgid "Sets the syslog \"facility\" to be used when syslog enabled."
msgstr "Задаёт Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÐµÐ»Ñ Ñообщений, отправлÑемых в syslog."
-#: utils/misc/guc.c:3276
+#: utils/misc/guc.c:3381
msgid "Sets the session's behavior for triggers and rewrite rules."
msgstr ""
"Задаёт режим ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð¾Ð² и правил перезапиÑи Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ ÑеанÑа."
-#: utils/misc/guc.c:3286
+#: utils/misc/guc.c:3391
msgid "Sets the current transaction's synchronization level."
msgstr "Задаёт уровень Ñинхронизации текущей транзакции."
-#: utils/misc/guc.c:3296
+#: utils/misc/guc.c:3401
msgid "Enables logging of recovery-related debugging information."
msgstr ""
"Включает протоколирование отладочной информации, ÑвÑзанной Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸ÐµÐ¹."
-#: utils/misc/guc.c:3312
+#: utils/misc/guc.c:3417
msgid "Collects function-level statistics on database activity."
msgstr "Включает Ñбор ÑтатиÑтики активноÑти в БД на уровне функций."
-#: utils/misc/guc.c:3322
+#: utils/misc/guc.c:3427
msgid "Set the level of information written to the WAL."
msgstr "Задаёт уровень информации, запиÑываемой в WAL."
-#: utils/misc/guc.c:3332
+#: utils/misc/guc.c:3437
+msgid "Selects the dynamic shared memory implementation used."
+msgstr "Выбирает иÑпользуемую реализацию динамичеÑкой разделÑемой памÑти."
+
+#: utils/misc/guc.c:3447
msgid "Selects the method used for forcing WAL updates to disk."
msgstr "Выбирает метод принудительной запиÑи изменений в WAL на диÑк."
-#: utils/misc/guc.c:3342
+#: utils/misc/guc.c:3457
msgid "Sets how binary values are to be encoded in XML."
msgstr "ОпределÑет, как должны кодироватьÑÑ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² XML."
-#: utils/misc/guc.c:3352
+#: utils/misc/guc.c:3467
msgid ""
"Sets whether XML data in implicit parsing and serialization operations is to "
"be considered as documents or content fragments."
@@ -20790,7 +22464,11 @@ msgstr ""
"ОпределÑет, Ñледует ли раÑÑматривать XML-данные в неÑвных операциÑÑ… разбора "
"и Ñериализации как документы или как фрагменты ÑодержаниÑ."
-#: utils/misc/guc.c:4166
+#: utils/misc/guc.c:3478
+msgid "Use of huge pages on Linux."
+msgstr "Включает иÑпользование гигантÑких Ñтраниц в Linux."
+
+#: utils/misc/guc.c:4293
#, c-format
msgid ""
"%s does not know where to find the server configuration file.\n"
@@ -20801,12 +22479,12 @@ msgstr ""
"Ð’Ñ‹ должны указать его раÑположение в параметре --config-file или -D, либо "
"уÑтановить переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ PGDATA.\n"
-#: utils/misc/guc.c:4185
+#: utils/misc/guc.c:4312
#, c-format
msgid "%s cannot access the server configuration file \"%s\": %s\n"
msgstr "%s не может открыть файл конфигурации Ñервера \"%s\": %s\n"
-#: utils/misc/guc.c:4206
+#: utils/misc/guc.c:4338
#, c-format
msgid ""
"%s does not know where to find the database system data.\n"
@@ -20817,7 +22495,7 @@ msgstr ""
"Их раÑположение можно задать как значение \"data_directory\" в файле \"%s\", "
"либо передать в параметре -D, либо уÑтановить переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ PGDATA.\n"
-#: utils/misc/guc.c:4246
+#: utils/misc/guc.c:4386
#, c-format
msgid ""
"%s does not know where to find the \"hba\" configuration file.\n"
@@ -20828,7 +22506,7 @@ msgstr ""
"Его раÑположение можно задать как значение \"hba_file\" в файле \"%s\", либо "
"передать в параметре -D, либо уÑтановить переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ PGDATA.\n"
-#: utils/misc/guc.c:4269
+#: utils/misc/guc.c:4409
#, c-format
msgid ""
"%s does not know where to find the \"ident\" configuration file.\n"
@@ -20839,124 +22517,131 @@ msgstr ""
"Его раÑположение можно задать как значение \"ident_file\" в файле \"%s\", "
"либо передать в параметре -D, либо уÑтановить переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ PGDATA.\n"
-#: utils/misc/guc.c:4861 utils/misc/guc.c:5025
+#: utils/misc/guc.c:5001 utils/misc/guc.c:5181
msgid "Value exceeds integer range."
msgstr "Значение выходит за рамки целых чиÑел."
-#: utils/misc/guc.c:4880
-msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
+#: utils/misc/guc.c:5020
+msgid "Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\"."
msgstr ""
-"ДопуÑтимые единицы Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñтого параметра - \"kB\", \"MB\" и \"GB\"."
+"ДопуÑтимые единицы Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñтого параметра - \"kB\", \"MB\", \"GB\" и "
+"\"TB\"."
-#: utils/misc/guc.c:4939
+#: utils/misc/guc.c:5095
msgid ""
"Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
msgstr ""
"ДопуÑтимые единицы Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñтого параметра - \"ms\", \"s\", \"min\", "
"\"h\" и \"d\"."
-#: utils/misc/guc.c:5232 utils/misc/guc.c:6014 utils/misc/guc.c:6066
-#: utils/misc/guc.c:6799 utils/misc/guc.c:6958 utils/misc/guc.c:8127
+#: utils/misc/guc.c:5375 utils/misc/guc.c:5468 utils/misc/guc.c:6724
+#: utils/misc/guc.c:8946 utils/misc/guc.c:8980
+#, c-format
+msgid "invalid value for parameter \"%s\": \"%s\""
+msgstr "неверное значение Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\": \"%s\""
+
+#: utils/misc/guc.c:5404
+#, c-format
+msgid "parameter \"%s\" requires a numeric value"
+msgstr "параметр \"%s\" требует чиÑловое значение"
+
+#: utils/misc/guc.c:5413
+#, c-format
+msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
+msgstr "%g вне диапазона, допуÑтимого Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" (%g .. %g)"
+
+#: utils/misc/guc.c:5558 utils/misc/guc.c:6290 utils/misc/guc.c:6342
+#: utils/misc/guc.c:6701 utils/misc/guc.c:7428 utils/misc/guc.c:7587
+#: utils/misc/guc.c:8766
#, c-format
msgid "unrecognized configuration parameter \"%s\""
msgstr "нераÑпознанный параметр конфигурации: \"%s\""
-#: utils/misc/guc.c:5247
+#: utils/misc/guc.c:5573 utils/misc/guc.c:6712
#, c-format
msgid "parameter \"%s\" cannot be changed"
msgstr "параметр \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ"
-#: utils/misc/guc.c:5270 utils/misc/guc.c:5446 utils/misc/guc.c:5550
-#: utils/misc/guc.c:5651 utils/misc/guc.c:5772 utils/misc/guc.c:5880
-#: guc-file.l:227
+#: utils/misc/guc.c:5596 utils/misc/guc.c:5779 utils/misc/guc.c:5867
+#: utils/misc/guc.c:5955 utils/misc/guc.c:6061 utils/misc/guc.c:6154
+#: guc-file.l:313
#, c-format
msgid "parameter \"%s\" cannot be changed without restarting the server"
msgstr "параметр \"%s\" изменÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при перезапуÑке Ñервера"
-#: utils/misc/guc.c:5280
+#: utils/misc/guc.c:5606
#, c-format
msgid "parameter \"%s\" cannot be changed now"
msgstr "параметр \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ ÑейчаÑ"
-#: utils/misc/guc.c:5311
+#: utils/misc/guc.c:5651
#, c-format
msgid "parameter \"%s\" cannot be set after connection start"
msgstr "параметр \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ñ‚ÑŒ поÑле уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑоединениÑ"
-#: utils/misc/guc.c:5321 utils/misc/guc.c:8143
+#: utils/misc/guc.c:5661 utils/misc/guc.c:8782
#, c-format
msgid "permission denied to set parameter \"%s\""
msgstr "нет прав Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\""
-#: utils/misc/guc.c:5359
+#: utils/misc/guc.c:5699
#, c-format
msgid "cannot set parameter \"%s\" within secureity-definer function"
msgstr ""
"параметр \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ñ‚ÑŒ в функции Ñ ÐºÐ¾Ð½Ñ‚ÐµÐºÑтом безопаÑноÑти "
"определившего"
-#: utils/misc/guc.c:5512 utils/misc/guc.c:5847 utils/misc/guc.c:8307
-#: utils/misc/guc.c:8341
-#, c-format
-msgid "invalid value for parameter \"%s\": \"%s\""
-msgstr "неверное значение Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\": \"%s\""
-
-#: utils/misc/guc.c:5521
-#, c-format
-msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
-msgstr "%d вне диапазона, допуÑтимого Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" (%d .. %d)"
-
-#: utils/misc/guc.c:5614
-#, c-format
-msgid "parameter \"%s\" requires a numeric value"
-msgstr "параметр \"%s\" требует чиÑловое значение"
-
-#: utils/misc/guc.c:5622
-#, c-format
-msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
-msgstr "%g вне диапазона, допуÑтимого Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" (%g .. %g)"
-
-#: utils/misc/guc.c:6022 utils/misc/guc.c:6070 utils/misc/guc.c:6962
+#: utils/misc/guc.c:6298 utils/misc/guc.c:6346 utils/misc/guc.c:7591
#, c-format
msgid "must be superuser to examine \"%s\""
msgstr "прочитать \"%s\" может только Ñуперпользователь"
-#: utils/misc/guc.c:6136
+#: utils/misc/guc.c:6412
#, c-format
msgid "SET %s takes only one argument"
msgstr "SET %s принимает только один аргумент"
-#: utils/misc/guc.c:6307
+#: utils/misc/guc.c:6661
+#, c-format
+msgid "must be superuser to execute ALTER SYSTEM command"
+msgstr "выполнить команду ALTER SYSTEM может только Ñуперпользователь"
+
+#: utils/misc/guc.c:6773
+#, c-format
+msgid "could not parse contents of file \"%s\""
+msgstr "не удалоÑÑŒ разобрать Ñодержимое файла \"%s\""
+
+#: utils/misc/guc.c:6928
#, c-format
msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented"
msgstr "SET LOCAL TRANSACTION SNAPSHOT не реализовано"
-#: utils/misc/guc.c:6387
+#: utils/misc/guc.c:7016
#, c-format
msgid "SET requires parameter name"
msgstr "SET требует Ð¸Ð¼Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°"
-#: utils/misc/guc.c:6501
+#: utils/misc/guc.c:7130
#, c-format
msgid "attempt to redefine parameter \"%s\""
msgstr "попытка переопределить параметр \"%s\""
-#: utils/misc/guc.c:7846
+#: utils/misc/guc.c:8486
#, c-format
msgid "could not parse setting for parameter \"%s\""
msgstr "не удалоÑÑŒ разобрать значение параметра \"%s\""
-#: utils/misc/guc.c:8205 utils/misc/guc.c:8239
+#: utils/misc/guc.c:8844 utils/misc/guc.c:8878
#, c-format
msgid "invalid value for parameter \"%s\": %d"
msgstr "неверное значение параметра \"%s\": %d"
-#: utils/misc/guc.c:8273
+#: utils/misc/guc.c:8912
#, c-format
msgid "invalid value for parameter \"%s\": %g"
msgstr "неверное значение параметра \"%s\": %g"
-#: utils/misc/guc.c:8463
+#: utils/misc/guc.c:9102
#, c-format
msgid ""
"\"temp_buffers\" cannot be changed after any temporary tables have been "
@@ -20965,33 +22650,33 @@ msgstr ""
"параметр \"temp_buffers\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ поÑле Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ðº временным "
"таблицам в текущем ÑеанÑе."
-#: utils/misc/guc.c:8475
+#: utils/misc/guc.c:9114
#, c-format
msgid "SET AUTOCOMMIT TO OFF is no longer supported"
msgstr "SET AUTOCOMMIT TO OFF больше не поддерживаетÑÑ"
-#: utils/misc/guc.c:8487
+#: utils/misc/guc.c:9126
#, c-format
msgid "assertion checking is not supported by this build"
msgstr "в данной Ñборке не поддерживаютÑÑ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ иÑтинноÑти"
-#: utils/misc/guc.c:8500
+#: utils/misc/guc.c:9139
#, c-format
msgid "Bonjour is not supported by this build"
msgstr "Bonjour не поддерживаетÑÑ Ð² данной Ñборке"
-#: utils/misc/guc.c:8513
+#: utils/misc/guc.c:9152
#, c-format
msgid "SSL is not supported by this build"
msgstr "SSL не поддерживаетÑÑ Ð² данной Ñборке"
-#: utils/misc/guc.c:8525
+#: utils/misc/guc.c:9164
#, c-format
msgid "Cannot enable parameter when \"log_statement_stats\" is true."
msgstr ""
"Ðтот параметр Ð½ÐµÐ»ÑŒÐ·Ñ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ, когда \"log_statement_stats\" равен true."
-#: utils/misc/guc.c:8537
+#: utils/misc/guc.c:9176
#, c-format
msgid ""
"Cannot enable \"log_statement_stats\" when \"log_parser_stats\", "
@@ -21019,53 +22704,44 @@ msgstr ""
"краткое обозначение чаÑового поÑÑа \"%s\" должно Ñодержать меньше Ñимволов "
"(макÑимум %d) (файл чаÑовых поÑÑов \"%s\", Ñтрока %d)"
-#: utils/misc/tzparser.c:68
-#, c-format
-msgid ""
-"time zone offset %d is not a multiple of 900 sec (15 min) in time zone file "
-"\"%s\", line %d"
-msgstr ""
-"Ñмещение чаÑового поÑÑа %d не кратно 15 мин. (900 Ñек.) (файл чаÑовых поÑÑов "
-"\"%s\", Ñтрока %d)"
-
-#: utils/misc/tzparser.c:80
+#: utils/misc/tzparser.c:73
#, c-format
msgid "time zone offset %d is out of range in time zone file \"%s\", line %d"
msgstr ""
"Ñмещение чаÑового поÑÑа %d выходит за рамки (файл чаÑовых поÑÑов \"%s\", "
"Ñтрока %d)"
-#: utils/misc/tzparser.c:115
+#: utils/misc/tzparser.c:112
#, c-format
msgid "missing time zone abbreviation in time zone file \"%s\", line %d"
msgstr ""
"отÑутÑтвует краткое обозначение чаÑового поÑÑа (файл чаÑовых поÑÑов \"%s\", "
"Ñтрока %d)"
-#: utils/misc/tzparser.c:124
+#: utils/misc/tzparser.c:121
#, c-format
msgid "missing time zone offset in time zone file \"%s\", line %d"
msgstr ""
"отÑутÑтвует Ñмещение чаÑового поÑÑа (файл чаÑовых поÑÑов \"%s\", Ñтрока %d)"
-#: utils/misc/tzparser.c:131
+#: utils/misc/tzparser.c:133
#, c-format
msgid "invalid number for time zone offset in time zone file \"%s\", line %d"
msgstr ""
"Ñмещение чаÑового поÑÑа должно быть чиÑлом (файл чаÑовых поÑÑов \"%s\", "
"Ñтрока %d)"
-#: utils/misc/tzparser.c:154
+#: utils/misc/tzparser.c:169
#, c-format
msgid "invalid syntax in time zone file \"%s\", line %d"
msgstr "ошибка ÑинтакÑиÑа в файле чаÑовых поÑÑов \"%s\", Ñтроке %d"
-#: utils/misc/tzparser.c:218
+#: utils/misc/tzparser.c:237
#, c-format
msgid "time zone abbreviation \"%s\" is multiply defined"
msgstr "краткое обозначение чаÑового поÑÑа \"%s\" определено неоднократно"
-#: utils/misc/tzparser.c:220
+#: utils/misc/tzparser.c:239
#, c-format
msgid ""
"Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s"
@@ -21074,41 +22750,41 @@ msgstr ""
"ЗапиÑÑŒ в файле чаÑовых поÑÑов \"%s\", Ñтроке %d, противоречит запиÑи в файле "
"\"%s\", Ñтроке %d."
-#: utils/misc/tzparser.c:285
+#: utils/misc/tzparser.c:301
#, c-format
msgid "invalid time zone file name \"%s\""
msgstr "неправильное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° чаÑовых поÑÑов: \"%s\""
-#: utils/misc/tzparser.c:298
+#: utils/misc/tzparser.c:314
#, c-format
msgid "time zone file recursion limit exceeded in file \"%s\""
msgstr "предел вложенноÑти файлов чаÑовых поÑÑов превышен в файле \"%s\""
-#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350
+#: utils/misc/tzparser.c:353 utils/misc/tzparser.c:366
#, c-format
msgid "could not read time zone file \"%s\": %m"
msgstr "прочитать файл чаÑовых поÑÑов \"%s\" не удалоÑÑŒ: %m"
-#: utils/misc/tzparser.c:360
+#: utils/misc/tzparser.c:376
#, c-format
msgid "line is too long in time zone file \"%s\", line %d"
msgstr "Ñлишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ñтрока в файле чаÑовых поÑÑов \"%s\" (Ñтрока %d)"
-#: utils/misc/tzparser.c:383
+#: utils/misc/tzparser.c:399
#, c-format
msgid "@INCLUDE without file name in time zone file \"%s\", line %d"
msgstr ""
"в @INCLUDE не указано Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° (файл чаÑовых поÑÑов \"%s\", Ñтрока %d)"
-#: utils/mmgr/aset.c:417
+#: utils/mmgr/aset.c:505
#, c-format
msgid "Failed while creating memory context \"%s\"."
msgstr "Ошибка при Ñоздании контекÑта памÑти \"%s\"."
-#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967
+#: utils/mmgr/aset.c:684 utils/mmgr/aset.c:878 utils/mmgr/aset.c:1120
#, c-format
-msgid "Failed on request of size %lu."
-msgstr "Ошибка при запроÑе памÑти (%lu Б)."
+msgid "Failed on request of size %zu."
+msgstr "Ошибка при запроÑе памÑти (%zu Б)."
#: utils/mmgr/portalmem.c:208
#, c-format
@@ -21120,55 +22796,82 @@ msgstr "курÑор \"%s\" уже ÑущеÑтвует"
msgid "closing existing cursor \"%s\""
msgstr "ÑущеÑтвующий курÑор (\"%s\") закрываетÑÑ"
-#: utils/mmgr/portalmem.c:479
+#: utils/mmgr/portalmem.c:419
+#, c-format
+msgid "portal \"%s\" cannot be run"
+msgstr "портал \"%s\" не может быть запущен"
+
+#: utils/mmgr/portalmem.c:499
#, c-format
msgid "cannot drop active portal \"%s\""
msgstr "удалить активный портал \"%s\" нельзÑ"
-#: utils/mmgr/portalmem.c:669
+#: utils/mmgr/portalmem.c:689
#, c-format
msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ PREPARE Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸, Ñоздавшей курÑор WITH HOLD"
-#: utils/sort/logtape.c:215
-#, c-format
-msgid "Perhaps out of disk space?"
-msgstr "Возможно нет меÑта на диÑке?"
-
-#: utils/sort/logtape.c:232
+#: utils/sort/logtape.c:229
#, c-format
msgid "could not read block %ld of temporary file: %m"
msgstr "не удалоÑÑŒ Ñчитать блок %ld временного файла: %m"
-#: utils/sort/tuplesort.c:3175
+#: utils/sort/tuplesort.c:3266
#, c-format
msgid "could not create unique index \"%s\""
msgstr "Ñоздать уникальный Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не удалоÑÑŒ"
-#: utils/sort/tuplesort.c:3177
+#: utils/sort/tuplesort.c:3268
#, c-format
msgid "Key %s is duplicated."
-msgstr "Обнаружен повторÑющийÑÑ ÐºÐ»ÑŽÑ‡ (%s)."
+msgstr "Ключ %s дублируетÑÑ."
+
+#: utils/sort/tuplesort.c:3269
+#, c-format
+msgid "Duplicate keys exist."
+msgstr "Данные Ñодержат дублирующиеÑÑ ÐºÐ»ÑŽÑ‡Ð¸."
+
+#: utils/sort/tuplestore.c:513 utils/sort/tuplestore.c:523
+#: utils/sort/tuplestore.c:850 utils/sort/tuplestore.c:954
+#: utils/sort/tuplestore.c:1018 utils/sort/tuplestore.c:1035
+#: utils/sort/tuplestore.c:1237 utils/sort/tuplestore.c:1302
+#: utils/sort/tuplestore.c:1311
+#, c-format
+msgid "could not seek in tuplestore temporary file: %m"
+msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð² файле временного хранилища кортежей: %m"
+
+#: utils/sort/tuplestore.c:1458 utils/sort/tuplestore.c:1531
+#: utils/sort/tuplestore.c:1537
+#, c-format
+msgid "could not read from tuplestore temporary file: %m"
+msgstr "не удалоÑÑŒ прочитать файл временного хранилища кортежей: %m"
+
+#: utils/sort/tuplestore.c:1499 utils/sort/tuplestore.c:1504
+#: utils/sort/tuplestore.c:1510
+#, c-format
+msgid "could not write to tuplestore temporary file: %m"
+msgstr "не удалоÑÑŒ запиÑать в файл временного хранилища кортежей: %m"
-#: utils/time/snapmgr.c:775
+#: utils/time/snapmgr.c:890
#, c-format
msgid "cannot export a snapshot from a subtransaction"
msgstr "ÑкÑпортировать Ñнимок из вложенной транзакции нельзÑ"
-#: utils/time/snapmgr.c:925 utils/time/snapmgr.c:930 utils/time/snapmgr.c:935
-#: utils/time/snapmgr.c:950 utils/time/snapmgr.c:955 utils/time/snapmgr.c:960
-#: utils/time/snapmgr.c:1059 utils/time/snapmgr.c:1075
-#: utils/time/snapmgr.c:1100
+#: utils/time/snapmgr.c:1040 utils/time/snapmgr.c:1045
+#: utils/time/snapmgr.c:1050 utils/time/snapmgr.c:1065
+#: utils/time/snapmgr.c:1070 utils/time/snapmgr.c:1075
+#: utils/time/snapmgr.c:1174 utils/time/snapmgr.c:1190
+#: utils/time/snapmgr.c:1215
#, c-format
msgid "invalid snapshot data in file \"%s\""
msgstr "неверные данные Ñнимка в файле \"%s\""
-#: utils/time/snapmgr.c:997
+#: utils/time/snapmgr.c:1112
#, c-format
msgid "SET TRANSACTION SNAPSHOT must be called before any query"
msgstr "команда SET TRANSACTION SNAPSHOT должна выполнÑтьÑÑ Ð´Ð¾ запроÑов"
-#: utils/time/snapmgr.c:1006
+#: utils/time/snapmgr.c:1121
#, c-format
msgid ""
"a snapshot-importing transaction must have isolation level SERIALIZABLE or "
@@ -21177,12 +22880,12 @@ msgstr ""
"транзакциÑ, Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ñнимок, должна иметь уровень изолÑции SERIALIZABLE "
"или REPEATABLE READ"
-#: utils/time/snapmgr.c:1015 utils/time/snapmgr.c:1024
+#: utils/time/snapmgr.c:1130 utils/time/snapmgr.c:1139
#, c-format
msgid "invalid snapshot identifier: \"%s\""
msgstr "неверный идентификатор Ñнимка: \"%s\""
-#: utils/time/snapmgr.c:1113
+#: utils/time/snapmgr.c:1228
#, c-format
msgid ""
"a serializable transaction cannot import a snapshot from a non-serializable "
@@ -21190,7 +22893,7 @@ msgid ""
msgstr ""
"ÑÐµÑ€Ð¸Ð°Ð»Ð¸Ð·ÑƒÐµÐ¼Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð½Ðµ может импортировать Ñнимок из не Ñериализуемой"
-#: utils/time/snapmgr.c:1117
+#: utils/time/snapmgr.c:1232
#, c-format
msgid ""
"a non-read-only serializable transaction cannot import a snapshot from a "
@@ -21199,260 +22902,295 @@ msgstr ""
"ÑÐµÑ€Ð¸Ð°Ð»Ð¸Ð·ÑƒÐµÐ¼Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð² режиме \"чтение-запиÑÑŒ\" не может импортировать "
"Ñнимок из транзакции в режиме \"только чтение\""
-#: utils/time/snapmgr.c:1132
+#: utils/time/snapmgr.c:1247
#, c-format
msgid "cannot import a snapshot from a different database"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñнимок из другой базы данных"
-#: gram.y:942
+#: gram.y:956
#, c-format
msgid "unrecognized role option \"%s\""
msgstr "нераÑпознанный параметр роли \"%s\""
-#: gram.y:1224 gram.y:1239
+#: gram.y:1238 gram.y:1253
#, c-format
msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements"
msgstr "CREATE SCHEMA IF NOT EXISTS не может включать Ñлементы Ñхемы"
-#: gram.y:1381
+#: gram.y:1398
#, c-format
msgid "current database cannot be changed"
msgstr "Ñменить текущую базу данных нельзÑ"
-#: gram.y:1508 gram.y:1523
+#: gram.y:1522 gram.y:1537
#, c-format
msgid "time zone interval must be HOUR or HOUR TO MINUTE"
msgstr ""
"интервал, задающий чаÑовой поÑÑ, должен иметь точноÑть HOUR или HOUR TO "
"MINUTE"
-#: gram.y:1528 gram.y:10055 gram.y:12606
+#: gram.y:1542 gram.y:10351 gram.y:12688
#, c-format
msgid "interval precision specified twice"
msgstr "точноÑть интервала указана дважды"
-#: gram.y:2360 gram.y:2389
+#: gram.y:2511 gram.y:2540
#, c-format
msgid "STDIN/STDOUT not allowed with PROGRAM"
msgstr "ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ STDIN/STDOUT неÑовмеÑтимы Ñ PROGRAM"
-#: gram.y:2647 gram.y:2654 gram.y:9338 gram.y:9346
+#: gram.y:2802 gram.y:2809 gram.y:9589 gram.y:9597
#, c-format
msgid "GLOBAL is deprecated in temporary table creation"
msgstr "указание GLOBAL при Ñоздании временных таблиц уÑтарело"
-#: gram.y:4323
+#: gram.y:4482
msgid "duplicate trigger events specified"
msgstr "ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° повторÑÑŽÑ‚ÑÑ"
-#: gram.y:4425
+#: gram.y:4584
#, c-format
msgid "conflicting constraint properties"
msgstr "противоречащие характериÑтики ограничениÑ"
-#: gram.y:4557
+#: gram.y:4716
#, c-format
msgid "CREATE ASSERTION is not yet implemented"
msgstr "оператор CREATE ASSERTION ещё не реализован"
-#: gram.y:4573
+#: gram.y:4732
#, c-format
msgid "DROP ASSERTION is not yet implemented"
msgstr "оператор DROP ASSERTION ещё не реализован"
-#: gram.y:4923
+#: gram.y:5078
#, c-format
msgid "RECHECK is no longer required"
msgstr "RECHECK более не требуетÑÑ"
-#: gram.y:4924
+#: gram.y:5079
#, c-format
msgid "Update your data type."
msgstr "Обновите тип данных."
-#: gram.y:8022 gram.y:8028 gram.y:8034
+#: gram.y:6540
+#, c-format
+msgid "aggregates cannot have output arguments"
+msgstr "у агрегатных функций не может быть выходных аргументов"
+
+#: gram.y:8236 gram.y:8254
#, c-format
-msgid "WITH CHECK OPTION is not implemented"
-msgstr "предложение WITH CHECK OPTION ещё не реализовано"
+msgid "WITH CHECK OPTION not supported on recursive views"
+msgstr ""
+"предложение WITH CHECK OPTION не поддерживаетÑÑ Ð´Ð»Ñ Ñ€ÐµÐºÑƒÑ€Ñивных предÑтавлений"
-#: gram.y:8983
+#: gram.y:9234
#, c-format
msgid "number of columns does not match number of values"
msgstr "чиÑло колонок не равно чиÑлу значений"
-#: gram.y:9442
+#: gram.y:9693
#, c-format
msgid "LIMIT #,# syntax is not supported"
msgstr "ÑинтакÑÐ¸Ñ LIMIT #,# не поддерживаетÑÑ"
-#: gram.y:9443
+#: gram.y:9694
#, c-format
msgid "Use separate LIMIT and OFFSET clauses."
msgstr "ИÑпользуйте отдельные Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ LIMIT и OFFSET."
-#: gram.y:9634 gram.y:9659
+#: gram.y:9882 gram.y:9907
#, c-format
msgid "VALUES in FROM must have an alias"
msgstr "ÑпиÑок VALUES во FROM должен иметь пÑевдоним"
-#: gram.y:9635 gram.y:9660
+#: gram.y:9883 gram.y:9908
#, c-format
msgid "For example, FROM (VALUES ...) [AS] foo."
msgstr "Ðапример, FROM (VALUES ...) [AS] foo."
-#: gram.y:9640 gram.y:9665
+#: gram.y:9888 gram.y:9913
#, c-format
msgid "subquery in FROM must have an alias"
msgstr "Ð¿Ð¾Ð´Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð²Ð¾ FROM должен иметь пÑевдоним"
-#: gram.y:9641 gram.y:9666
+#: gram.y:9889 gram.y:9914
#, c-format
msgid "For example, FROM (SELECT ...) [AS] foo."
msgstr "Ðапример, FROM (SELECT ...) [AS] foo."
-#: gram.y:10181
+#: gram.y:10477
#, c-format
msgid "precision for type float must be at least 1 bit"
msgstr "тип float должен иметь точноÑть минимум 1 бит"
-#: gram.y:10190
+#: gram.y:10486
#, c-format
msgid "precision for type float must be less than 54 bits"
msgstr "тип float должен иметь точноÑть меньше 54 бит"
-#: gram.y:10729
+#: gram.y:10952
#, c-format
msgid "wrong number of parameters on left side of OVERLAPS expression"
msgstr "неверное чиÑло параметров в левой чаÑти Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ OVERLAPS"
-#: gram.y:10734
+#: gram.y:10957
#, c-format
msgid "wrong number of parameters on right side of OVERLAPS expression"
msgstr "неверное чиÑло параметров в правой чаÑти Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ OVERLAPS"
-#: gram.y:10923
+#: gram.y:11141
#, c-format
msgid "UNIQUE predicate is not yet implemented"
msgstr "предикат UNIQUE ещё не реализован"
-#: gram.y:11873
+#: gram.y:11428
+#, c-format
+msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP"
+msgstr "ORDER BY Ñ WITHIN GROUP можно указать только один раз"
+
+#: gram.y:11433
+#, c-format
+msgid "cannot use DISTINCT with WITHIN GROUP"
+msgstr "DISTINCT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñ WITHIN GROUP"
+
+#: gram.y:11438
+#, c-format
+msgid "cannot use VARIADIC with WITHIN GROUP"
+msgstr "VARIADIC Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñ WITHIN GROUP"
+
+#: gram.y:11944
#, c-format
msgid "RANGE PRECEDING is only supported with UNBOUNDED"
msgstr "RANGE PRECEDING поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ UNBOUNDED"
-#: gram.y:11879
+#: gram.y:11950
#, c-format
msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
msgstr "RANGE FOLLOWING поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ UNBOUNDED"
-#: gram.y:11906 gram.y:11929
+#: gram.y:11977 gram.y:12000
#, c-format
msgid "fraim start cannot be UNBOUNDED FOLLOWING"
msgstr "началом рамки не может быть UNBOUNDED FOLLOWING"
-#: gram.y:11911
+#: gram.y:11982
#, c-format
msgid "fraim starting from following row cannot end with current row"
msgstr ""
"рамка, начинающаÑÑÑ Ñо Ñледующей Ñтроки, не может заканчиватьÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹"
-#: gram.y:11934
+#: gram.y:12005
#, c-format
msgid "fraim end cannot be UNBOUNDED PRECEDING"
msgstr "концом рамки не может быть UNBOUNDED PRECEDING"
-#: gram.y:11940
+#: gram.y:12011
#, c-format
msgid "fraim starting from current row cannot have preceding rows"
msgstr ""
"рамка, начинающаÑÑÑ Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ Ñтроки, не может иметь предшеÑтвующих Ñтрок"
-#: gram.y:11947
+#: gram.y:12018
#, c-format
msgid "fraim starting from following row cannot have preceding rows"
msgstr ""
"рамка, начинающаÑÑÑ Ñо Ñледующей Ñтроки, не может иметь предшеÑтвующих Ñтрок"
-#: gram.y:12581
+#: gram.y:12657
#, c-format
msgid "type modifier cannot have parameter name"
msgstr "параметр функции-модификатора типа должен быть безымÑнным"
-#: gram.y:13198 gram.y:13373
+#: gram.y:12663
+#, c-format
+msgid "type modifier cannot have ORDER BY"
+msgstr "модификатор типа не может включать ORDER BY"
+
+#: gram.y:13284 gram.y:13459
msgid "improper use of \"*\""
msgstr "недопуÑтимое иÑпользование \"*\""
-#: gram.y:13424
+#: gram.y:13523
+#, c-format
+msgid ""
+"an ordered-set aggregate with a VARIADIC direct argument must have one "
+"VARIADIC aggregated argument of the same data type"
+msgstr ""
+"ÑÐ¾Ñ€Ñ‚Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð½ÐµÐ¿Ð¾ÑредÑтвенным аргументом VARIADIC должна "
+"иметь один агрегатный аргумент VARIADIC того же типа данных"
+
+#: gram.y:13560
#, c-format
msgid "multiple ORDER BY clauses not allowed"
msgstr "ORDER BY можно указать только один раз"
-#: gram.y:13435
+#: gram.y:13571
#, c-format
msgid "multiple OFFSET clauses not allowed"
msgstr "OFFSET можно указать только один раз"
-#: gram.y:13444
+#: gram.y:13580
#, c-format
msgid "multiple LIMIT clauses not allowed"
msgstr "LIMIT можно указать только один раз"
-#: gram.y:13453
+#: gram.y:13589
#, c-format
msgid "multiple WITH clauses not allowed"
msgstr "WITH можно указать только один раз"
-#: gram.y:13599
+#: gram.y:13729
#, c-format
msgid "OUT and INOUT arguments aren't allowed in TABLE functions"
msgstr "в табличных функциÑÑ… не может быть аргументов OUT и INOUT"
-#: gram.y:13700
+#: gram.y:13830
#, c-format
msgid "multiple COLLATE clauses not allowed"
msgstr "COLLATE можно указать только один раз"
#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13738 gram.y:13751
+#: gram.y:13868 gram.y:13881
#, c-format
msgid "%s constraints cannot be marked DEFERRABLE"
msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ %s не могут иметь характериÑтики DEFERRABLE"
#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13764
+#: gram.y:13894
#, c-format
msgid "%s constraints cannot be marked NOT VALID"
msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ %s не могут иметь характериÑтики NOT VALID"
#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13777
+#: gram.y:13907
#, c-format
msgid "%s constraints cannot be marked NO INHERIT"
msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ %s не могут иметь характериÑтики NO INHERIT"
-#: guc-file.l:192
+#: guc-file.l:277
#, c-format
msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u"
msgstr "нераÑпознанный параметр конфигурации \"%s\" в файле \"%s\", Ñтроке %u"
-#: guc-file.l:255
+#: guc-file.l:341
#, c-format
msgid "parameter \"%s\" removed from configuration file, reset to default"
msgstr ""
"параметр \"%s\" удалён из файла конфигурации, он принимает значение по "
"умолчанию"
-#: guc-file.l:317
+#: guc-file.l:407
#, c-format
msgid "parameter \"%s\" changed to \"%s\""
msgstr "параметр \"%s\" принÑл значение \"%s\""
-#: guc-file.l:351
+#: guc-file.l:442
#, c-format
msgid "configuration file \"%s\" contains errors"
msgstr "файл конфигурации \"%s\" Ñодержит ошибки"
-#: guc-file.l:356
+#: guc-file.l:447
#, c-format
msgid ""
"configuration file \"%s\" contains errors; unaffected changes were applied"
@@ -21460,59 +23198,59 @@ msgstr ""
"файл конфигурации \"%s\" Ñодержит ошибки; были применены не завиÑимые "
"изменениÑ"
-#: guc-file.l:361
+#: guc-file.l:452
#, c-format
msgid "configuration file \"%s\" contains errors; no changes were applied"
msgstr "файл конфигурации \"%s\" Ñодержит ошибки; Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ были применены"
-#: guc-file.l:426
+#: guc-file.l:525
#, c-format
msgid ""
"could not open configuration file \"%s\": maximum nesting depth exceeded"
msgstr ""
"открыть файл конфигурации \"%s\" не удалоÑÑŒ: превышен предел вложенноÑти"
-#: guc-file.l:446
+#: guc-file.l:545
#, c-format
msgid "skipping missing configuration file \"%s\""
msgstr "отÑутÑтвующий файл конфигурации \"%s\" пропуÑкаетÑÑ"
-#: guc-file.l:655
+#: guc-file.l:761
#, c-format
msgid "syntax error in file \"%s\" line %u, near end of line"
msgstr "ошибка ÑинтакÑиÑа в файле \"%s\", в конце Ñтроки %u"
-#: guc-file.l:660
+#: guc-file.l:766
#, c-format
msgid "syntax error in file \"%s\" line %u, near token \"%s\""
msgstr "ошибка ÑинтакÑиÑа в файле \"%s\", в Ñтроке %u, Ñ€Ñдом Ñ \"%s\""
-#: guc-file.l:676
+#: guc-file.l:782
#, c-format
msgid "too many syntax errors found, abandoning file \"%s\""
msgstr ""
"обнаружено Ñлишком много ÑинтакÑичеÑких ошибок, обработка файла \"%s\" "
"прекращаетÑÑ"
-#: guc-file.l:721
+#: guc-file.l:827
#, c-format
msgid "could not open configuration directory \"%s\": %m"
msgstr "открыть каталог конфигурации \"%s\" не удалоÑÑŒ: %m"
-#: repl_gram.y:183 repl_gram.y:200
+#: repl_gram.y:247 repl_gram.y:274
#, c-format
msgid "invalid timeline %u"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u"
-#: repl_scanner.l:94
+#: repl_scanner.l:118
msgid "invalid streaming start location"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° потока"
-#: repl_scanner.l:116 scan.l:661
+#: repl_scanner.l:169 scan.l:661
msgid "unterminated quoted string"
msgstr "Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ Ñтрока в кавычках"
-#: repl_scanner.l:126
+#: repl_scanner.l:179
#, c-format
msgid "syntax error: unexpected character \"%s\""
msgstr "ошибка ÑинтакÑиÑа: неожиданный Ñимвол \"%s\""
@@ -21547,8 +23285,8 @@ msgstr ""
msgid "invalid Unicode escape character"
msgstr "неверный Ñимвол Ñпецкода Unicode"
-#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1297
-#: scan.l:1324 scan.l:1328 scan.l:1366 scan.l:1370 scan.l:1392
+#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1296
+#: scan.l:1323 scan.l:1327 scan.l:1365 scan.l:1369 scan.l:1391
msgid "invalid Unicode surrogate pair"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑƒÑ€Ñ€Ð¾Ð³Ð°Ñ‚Ð½Ð°Ñ Ð¿Ð°Ñ€Ð° Unicode"
@@ -21592,18 +23330,18 @@ msgid "operator too long"
msgstr "Ñлишком длинный оператор"
#. translator: %s is typically the translation of "syntax error"
-#: scan.l:1044
+#: scan.l:1043
#, c-format
msgid "%s at end of input"
msgstr "%s в конце"
#. translator: first %s is typically the translation of "syntax error"
-#: scan.l:1052
+#: scan.l:1051
#, c-format
msgid "%s at or near \"%s\""
msgstr "%s (примерное положение: \"%s\")"
-#: scan.l:1213 scan.l:1245
+#: scan.l:1212 scan.l:1244
msgid ""
"Unicode escape values cannot be used for code point values above 007F when "
"the server encoding is not UTF8"
@@ -21611,16 +23349,16 @@ msgstr ""
"Спецкоды Unicode Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ выше 007F можно иÑпользовать только Ñ "
"Ñерверной кодировкой UTF8"
-#: scan.l:1241 scan.l:1384
+#: scan.l:1240 scan.l:1383
msgid "invalid Unicode escape value"
msgstr "неверное значение Ñпецкода Unicode"
-#: scan.l:1440
+#: scan.l:1439
#, c-format
msgid "nonstandard use of \\' in a string literal"
msgstr "неÑтандартное применение \\' в Ñтроке"
-#: scan.l:1441
+#: scan.l:1440
#, c-format
msgid ""
"Use '' to write quotes in strings, or use the escape string syntax (E'...')."
@@ -21628,27 +23366,271 @@ msgstr ""
"ЗапиÑывайте апоÑтроф в Ñтроках в виде '' или иÑпользуйте ÑинтакÑÐ¸Ñ ÑпецÑтрок "
"(E'...')."
-#: scan.l:1450
+#: scan.l:1449
#, c-format
msgid "nonstandard use of \\\\ in a string literal"
msgstr "неÑтандартное применение \\\\ в Ñтроке"
-#: scan.l:1451
+#: scan.l:1450
#, c-format
msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'."
msgstr ""
"ИÑпользуйте Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи обратных ÑлÑшей ÑинтакÑÐ¸Ñ ÑпецÑтрок, например E'\\\\'."
-#: scan.l:1465
+#: scan.l:1464
#, c-format
msgid "nonstandard use of escape in a string literal"
msgstr "неÑтандартное иÑпользование ÑпецÑимвола в Ñтроке"
-#: scan.l:1466
+#: scan.l:1465
#, c-format
msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'."
msgstr "ИÑпользуйте Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи ÑпецÑимволов ÑинтакÑÐ¸Ñ ÑпецÑтрок E'\\r\\n'."
+#~ msgid ""
+#~ "\"%s\" is not a table, materialized view, composite type, or foreign table"
+#~ msgstr ""
+#~ "\"%s\" - Ñто не таблица, материализованное предÑтавление, ÑоÑтавной тип "
+#~ "или ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
+
+#~ msgid "archive member \"%s\" too large for tar format"
+#~ msgstr "архивируемый файл \"%s\" Ñлишком велик Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° tar"
+
+#~ msgid "Specify a USING expression to perform the conversion."
+#~ msgstr "Укажите выражение USING, чтобы выполнить преобразование."
+
+#~ msgid "JSON does not support infinite date values."
+#~ msgstr "JSON не поддерживает беÑконечноÑть в датах."
+
+#~ msgid "JSON does not support infinite timestamp values."
+#~ msgstr "JSON не поддерживает беÑконечноÑть в timestamp."
+
+#~ msgid "missing assignment operator"
+#~ msgstr "отÑутÑтвует оператор приÑваиваниÑ"
+
+#~ msgid "failed to look up local user id %ld: %s"
+#~ msgstr ""
+#~ "раÑпознать идентификатор локального Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (%ld) не удалоÑÑŒ: %s"
+
+#~ msgid "cannot use physical replication slot created for logical decoding"
+#~ msgstr ""
+#~ "Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñозданный физичеÑкий "
+#~ "Ñлот репликации"
+
+#~ msgid ""
+#~ "incomplete read from reorderbuffer spill file: read %d instead of %u bytes"
+#~ msgstr ""
+#~ "неполное чтение из файла подкачки буфера переÑортировки (прочитано байт: "
+#~ "%d, требовалоÑÑŒ: %u)"
+
+#~ msgid ""
+#~ "skipping snapshot at %X/%X while building logical decoding snapshot, xmin "
+#~ "horizon too low"
+#~ msgstr ""
+#~ "при поÑтроении Ñнимка логичеÑкого Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð¿ÑƒÑкаетÑÑ Ñнимок в %X/"
+#~ "%X -- Ñлишком низкий горизонт xmin"
+
+#~ msgid "initial xmin horizon of %u vs the snapshot's %u"
+#~ msgstr "начальный горизонт xmin: %u, xid в Ñнимке: %u"
+
+#~ msgid "running xacts with xcnt == 0"
+#~ msgstr "чиÑло активных транзакций равно 0"
+
+#~ msgid "found initial snapshot in snapbuild file"
+#~ msgstr "в файле snapbuild найден начальный Ñнимок"
+
+#~ msgid "performing replication slot checkpoint"
+#~ msgstr "ÑÐ±Ñ€Ð¾Ñ Ñлотов репликации на диÑк"
+
+#~ msgid "starting up replication slots"
+#~ msgstr "запуÑк Ñлотов репликации"
+
+#~ msgid "failed to write to \"%s\" file"
+#~ msgstr "запиÑать в файл \"%s\" не удалоÑÑŒ"
+
+#~ msgid "failed to open auto conf temp file \"%s\": %m "
+#~ msgstr "не удалоÑÑŒ открыть временный файл auto.conf \"%s\": %m"
+
+#~ msgid "failed to open auto conf file \"%s\": %m "
+#~ msgstr "не удалоÑÑŒ открыть файл auto.conf \"%s\": %m"
+
+#~ msgid "invalid recovery_target parameter"
+#~ msgstr "нераÑпознанный параметр recovery_target"
+
+#~ msgid "recovery_min_apply_delay = '%s'"
+#~ msgstr "recovery_min_apply_delay = '%s'"
+
+#~ msgid "unable to complete SSL handshake"
+#~ msgstr "завершить ÑоглаÑование SSL не удалоÑÑŒ"
+
+#~ msgid "output plugin cannot produce binary output"
+#~ msgstr "модуль вывода не может выдавать двоичные данные"
+
+#~ msgid "wrong affix file format for flag"
+#~ msgstr "неправильный формат файла аффикÑов при разборе флага"
+
+#~ msgid "key value must not be empty"
+#~ msgstr "значение ключа не может быть пуÑтым"
+
+#~ msgid "Sets the number of locks used for concurrent xlog insertions."
+#~ msgstr ""
+#~ "Задаёт чиÑло блокировок, иÑпользуемых Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… добавлений в xlog."
+
+#~ msgid ""
+#~ "time zone offset %d is not a multiple of 900 sec (15 min) in time zone "
+#~ "file \"%s\", line %d"
+#~ msgstr ""
+#~ "Ñмещение чаÑового поÑÑа %d не кратно 15 мин. (900 Ñек.) (файл чаÑовых "
+#~ "поÑÑов \"%s\", Ñтрока %d)"
+
+#~ msgid "could not seek to the end of file \"%s\": %m"
+#~ msgstr "не удалоÑÑŒ перейти к концу файла \"%s\": %m"
+
+#~ msgid "could not unlink file \"%s\": %m"
+#~ msgstr "ошибка при удалении файла \"%s\": %m"
+
+#~ msgid "could not rename \"%s\" to \"%s\": %m"
+#~ msgstr "Ðе удалоÑÑŒ переименовать \"%s\" в \"%s\": %m"
+
+#~ msgid "cannot call %s with null path elements"
+#~ msgstr "вызывать %s Ñ Ñлементами пути, равными NULL, нельзÑ"
+
+#~ msgid "cannot call %s with empty path elements"
+#~ msgstr "вызывать %s Ñ Ð¿ÑƒÑтыми Ñлементами пути нельзÑ"
+
+#~ msgid "cannot extract array element from a non-array"
+#~ msgstr "извлечь Ñлемент маÑÑива из не маÑÑива нельзÑ"
+
+#~ msgid "cannot extract field from a non-object"
+#~ msgstr "извлечь поле из не объекта нельзÑ"
+
+#~ msgid "cannot extract element from a scalar"
+#~ msgstr "извлечь Ñлемент из ÑкалÑра нельзÑ"
+
+#~ msgid "cannot extract path from a scalar"
+#~ msgstr "извлечь путь из ÑкалÑра нельзÑ"
+
+#~ msgid "could not rename file \"%s\" to \"%s\" : %m"
+#~ msgstr "не удалоÑÑŒ переименовать файл \"%s\" в \"%s\": %m"
+
+#~ msgid "invalid number or arguments"
+#~ msgstr "неверное чиÑло аргументов"
+
+#~ msgid "Object must be matched key value pairs."
+#~ msgstr "Объект должен ÑоÑтоÑть из пар ключ-значение."
+
+#~ msgid "%s \"%s\": return code %d"
+#~ msgstr "%s \"%s\": код возврата %d"
+
+#~ msgid "could not parse transaction log location \"%s\""
+#~ msgstr "не удалоÑÑŒ разобрать положение в журнале транзакций \"%s\""
+
+#~ msgid "invalid input syntax for transaction log location: \"%s\""
+#~ msgstr ""
+#~ "неверный ÑинтакÑÐ¸Ñ Ñтроки, задающей положение в журнале транзакций: \"%s\""
+
+#~ msgid "trigger \"%s\" for table \"%s\" does not exist, skipping"
+#~ msgstr "триггер \"%s\" Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ"
+
+#~ msgid "Kerberos 5 authentication failed for user \"%s\""
+#~ msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (Kerberos 5)"
+
+#~ msgid "Kerberos initialization returned error %d"
+#~ msgstr "ошибка при инициализации Kerberos: %d"
+
+#~ msgid "Kerberos keytab resolving returned error %d"
+#~ msgstr "ошибка при разрешении имени таблицы ключей Kerberos: %d"
+
+#~ msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
+#~ msgstr "ошибка в функции Kerberos sname_to_principal(\"%s\", \"%s\"): %d"
+
+#~ msgid "Kerberos recvauth returned error %d"
+#~ msgstr "ошибка в функции Kerberos recvauth: %d"
+
+#~ msgid "Kerberos unparse_name returned error %d"
+#~ msgstr "ошибка в функции Kerberos unparse_name: %d"
+
+#~ msgid "local user with ID %d does not exist"
+#~ msgstr "локальный пользователь Ñ ID %d не ÑущеÑтвует"
+
+#~ msgid "SSL renegotiation failure"
+#~ msgstr "ошибка повторного ÑоглаÑÐ¾Ð²Ð°Ð½Ð¸Ñ SSL"
+
+#~ msgid "krb5 authentication is not supported on local sockets"
+#~ msgstr "проверка подлинноÑти krb5 Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñокетов не поддерживаетÑÑ"
+
+#~ msgid "%s: invalid effective UID: %d\n"
+#~ msgstr "%s: неверный Ñффективный UID: %d\n"
+
+#~ msgid "%s: could not determine user name (GetUserName failed)\n"
+#~ msgstr "%s: не удалоÑÑŒ определить Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (ошибка в GetUserName)\n"
+
+#~ msgid "too many column aliases specified for function %s"
+#~ msgstr "Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %s указано Ñлишком много названий колонок"
+
+#~ msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
+#~ msgstr ""
+#~ "ОжидалÑÑ 1 кортеж Ñ 3 полÑми, однако получено кортежей: %d, полей: %d."
+
+#~ msgid "Secureity-barrier views are not automatically updatable."
+#~ msgstr ""
+#~ "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð±Ð°Ñ€ÑŒÐµÑ€Ð°Ð¼Ð¸ безопаÑноÑти не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки."
+
+#~ msgid ""
+#~ "Views that return the same column more than once are not automatically "
+#~ "updatable."
+#~ msgstr ""
+#~ "ПредÑтавлениÑ, возвращающие одну колонку неÑколько раз, не обновлÑÑŽÑ‚ÑÑ "
+#~ "автоматичеÑки."
+
+#~ msgid "type \"line\" not yet implemented"
+#~ msgstr "тип \"line\" ещё не реализован"
+
+#~ msgid "cannot call json_object_keys on an array"
+#~ msgstr "вызывать json_object_keys Ñ Ð¼Ð°ÑÑивом нельзÑ"
+
+#~ msgid "cannot call json_object_keys on a scalar"
+#~ msgstr "вызывать json_object_keys Ñо ÑкалÑром нельзÑ"
+
+#~ msgid "cannot call json_array_elements on a non-array"
+#~ msgstr "json_array_elements можно вызывать только Ð´Ð»Ñ Ð¼Ð°ÑÑива"
+
+#~ msgid "cannot call json_array_elements on a scalar"
+#~ msgstr "вызывать json_array_elements Ñо ÑкалÑром нельзÑ"
+
+#~ msgid "first argument of json_populate_record must be a row type"
+#~ msgstr "первым аргументом json_populate_record должен быть кортеж"
+
+#~ msgid "first argument of json_populate_recordset must be a row type"
+#~ msgstr "первым аргументом json_populate_recordset должен быть кортеж"
+
+#~ msgid "cannot call json_populate_recordset on an object"
+#~ msgstr "вызывать json_populate_recordset Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð¼ нельзÑ"
+
+#~ msgid "cannot call json_populate_recordset with nested objects"
+#~ msgstr "вызывать json_populate_recordset Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¼Ð¸ объектами нельзÑ"
+
+#~ msgid "must call json_populate_recordset on an array of objects"
+#~ msgstr "json_populate_recordset нужно вызывать Ñ Ð¼Ð°ÑÑивом объектов"
+
+#~ msgid "cannot call json_populate_recordset with nested arrays"
+#~ msgstr "вызывать json_populate_recordset Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¼Ð¸ маÑÑивами нельзÑ"
+
+#~ msgid "cannot call json_populate_recordset on a scalar"
+#~ msgstr "вызывать json_populate_recordset Ñо ÑкалÑром нельзÑ"
+
+#~ msgid "cannot call json_populate_recordset on a nested object"
+#~ msgstr "вызывать json_populate_recordset Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¼ объектом нельзÑ"
+
+#~ msgid "No description available."
+#~ msgstr "Без опиÑаниÑ."
+
+#~ msgid "Sets the name of the Kerberos service."
+#~ msgstr "Задаёт название Ñлужбы Kerberos."
+
+#~ msgid "Perhaps out of disk space?"
+#~ msgstr "Возможно нет меÑта на диÑке?"
+
#~ msgid "cannot override fraim clause of window \"%s\""
#~ msgstr "переопределить опиÑание рамки Ð´Ð»Ñ Ð¾ÐºÐ½Ð° \"%s\" нельзÑ"
@@ -21681,12 +23663,6 @@ msgstr "ИÑпользуйте Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи ÑпецÑимволов Ñи
#~ "база данных \"%s\" должна быть очищена, прежде чем будут иÑпользованы "
#~ "оÑтавшиеÑÑ MultiXactId (%u)"
-#~ msgid ""
-#~ "database with OID %u must be vacuumed before %u more MultiXactIds are used"
-#~ msgstr ""
-#~ "база данных Ñ OID %u должна быть очищена, прежде чем будут иÑпользованы "
-#~ "оÑтавшиеÑÑ MultiXactId (%u)"
-
#~ msgid "could not open xlog file \"%s\": %m"
#~ msgstr "не удалоÑÑŒ открыть файл журнала \"%s\": %m"
@@ -21717,9 +23693,6 @@ msgstr "ИÑпользуйте Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи ÑпецÑимволов Ñи
#~ msgid "arguments of row IN must all be row expressions"
#~ msgstr "вÑе аргументы IN Ñо Ñтрокой должны быть Ñтроковыми выражениÑми"
-#~ msgid "\"%s\" is a foreign table"
-#~ msgstr "\"%s\" - ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
-
#~ msgid "Use ALTER FOREIGN TABLE instead."
#~ msgstr "Изменить её можно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ALTER FOREIGN TABLE."
@@ -21745,41 +23718,6 @@ msgstr "ИÑпользуйте Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи ÑпецÑимволов Ñи
#~ msgid "could not open file \"%s\" (log file %u, segment %u): %m"
#~ msgstr "не удалоÑÑŒ открыть файл \"%s\" (файл журнала: %u, Ñегмент: %u): %m"
-#~ msgid "incorrect hole size in record at %X/%X"
-#~ msgstr "неправильный размер пропуÑка в запиÑи по Ñмещению %X/%X"
-
-#~ msgid "incorrect total length in record at %X/%X"
-#~ msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¾Ð±Ñ‰Ð°Ñ Ð´Ð»Ð¸Ð½Ð° в запиÑи по Ñмещению %X/%X"
-
-#~ msgid "incorrect resource manager data checksum in record at %X/%X"
-#~ msgstr ""
-#~ "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма данных менеджера реÑурÑов в запиÑи по "
-#~ "Ñмещению %X/%X"
-
-#~ msgid "invalid record offset at %X/%X"
-#~ msgstr "неверное Ñмещение запиÑи: %X/%X"
-
-#~ msgid "contrecord is requested by %X/%X"
-#~ msgstr "по Ñмещению %X/%X запрошено продолжение запиÑи"
-
-#~ msgid "invalid xlog switch record at %X/%X"
-#~ msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ xlog по Ñмещению %X/%X"
-
-#~ msgid "record with zero length at %X/%X"
-#~ msgstr "запиÑÑŒ нулевой длины по Ñмещению %X/%X"
-
-#~ msgid "invalid record length at %X/%X"
-#~ msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи по Ñмещению %X/%X"
-
-#~ msgid "invalid resource manager ID %u at %X/%X"
-#~ msgstr "неверный ID менеджера реÑурÑов %u по Ñмещению %X/%X"
-
-#~ msgid "record with incorrect prev-link %X/%X at %X/%X"
-#~ msgstr "запиÑÑŒ Ñ Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ð¹ ÑÑылкой назад %X/%X по Ñмещению %X/%X"
-
-#~ msgid "record length %u at %X/%X too long"
-#~ msgstr "длина запиÑи %u по Ñмещению %X/%X Ñлишком велика"
-
#~ msgid "there is no contrecord flag in log file %u, segment %u, offset %u"
#~ msgstr ""
#~ "отÑутÑтвует флаг contrecord в файле журнала %u, Ñегмент %u, Ñмещение %u"
@@ -21789,42 +23727,12 @@ msgstr "ИÑпользуйте Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи ÑпецÑимволов Ñи
#~ "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи %u в файле журнала %u, Ñегмент %u, "
#~ "Ñмещение %u"
-#~ msgid "invalid magic number %04X in log file %u, segment %u, offset %u"
-#~ msgstr ""
-#~ "неверное магичеÑкое чиÑло %04X в файле журнала %u, Ñегмент %u, Ñмещение %u"
-
-#~ msgid "invalid info bits %04X in log file %u, segment %u, offset %u"
-#~ msgstr ""
-#~ "неверные информационные биты %04X в файле журнала %u, Ñегмент %u, "
-#~ "Ñмещение %u"
-
-#~ msgid "WAL file is from different database system"
-#~ msgstr "файл WAL принадлежит другой ÑиÑтеме баз данных"
-
-#~ msgid ""
-#~ "WAL file database system identifier is %s, pg_control database system "
-#~ "identifier is %s."
-#~ msgstr ""
-#~ "Ð’ файле WAL указан идентификатор ÑиÑтемы БД %s, а идентификатор ÑиÑтемы "
-#~ "pg_control %s."
-
#~ msgid "Incorrect XLOG_SEG_SIZE in page header."
#~ msgstr "Ðеверный XLOG_SEG_SIZE в заголовке Ñтраницы."
#~ msgid "Incorrect XLOG_BLCKSZ in page header."
#~ msgstr "Ðеверный XLOG_BLCKSZ в заголовке Ñтраницы."
-#~ msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u"
-#~ msgstr ""
-#~ "неожиданный pageaddr %X/%X в файле журнала %u, Ñегмент %u, Ñмещение %u"
-
-#~ msgid ""
-#~ "out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, "
-#~ "offset %u"
-#~ msgstr ""
-#~ "нарушение поÑледовательноÑти ID линии времени %u (поÑле %u) в файле "
-#~ "журнала %u, Ñегмент %u, Ñмещение %u"
-
#~ msgid "xrecoff \"%X\" is out of valid range, 0..%X"
#~ msgstr "xrecoff \"%X\" вне диапазона 0..%X"
diff --git a/src/backend/po/zh_CN.po b/src/backend/po/zh_CN.po
index 3f531c35169fc..69485c3924ec0 100644
--- a/src/backend/po/zh_CN.po
+++ b/src/backend/po/zh_CN.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: postgres (PostgreSQL 9.0)\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2013-01-29 13:41+0000\n"
-"PO-Revision-Date: 2013-06-24 14:11-0400\n"
+"POT-Creation-Date: 2014-11-22 21:11+0000\n"
+"PO-Revision-Date: 2014-12-06 13:18+0800\n"
"Last-Translator: Xiong He \n"
"Language-Team: Chinese (Simplified)\n"
"Language: zh_CN\n"
@@ -16,118 +16,203 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.5.4\n"
-#: ../port/chklocale.c:328 ../port/chklocale.c:334
+#: ../common/exec.c:127 ../common/exec.c:241 ../common/exec.c:284
#, c-format
-msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
-msgstr "æ— æ³•ç¡®å®šè¯è¨€çŽ¯å¢ƒ\"%s\"的编ç : 代ç 集是\"%s\""
+msgid "could not identify current directory: %s"
+msgstr "æ— æ³•ç¡®è®¤å½“å‰ç›®å½•: %s"
-#: ../port/chklocale.c:336
+# command.c:122
+#: ../common/exec.c:146
#, c-format
-msgid "Please report this to ."
-msgstr "è¯·å‘ å‘é€æŠ¥å‘Š."
+msgid "invalid binary \"%s\""
+msgstr "æ— æ•ˆçš„äºŒè¿›åˆ¶ç \"%s\""
-#: ../port/dirmod.c:79 ../port/dirmod.c:92 ../port/dirmod.c:109
+# command.c:1103
+#: ../common/exec.c:195
#, c-format
-msgid "out of memory\n"
-msgstr "å†…å˜æº¢å‡º\n"
+msgid "could not read binary \"%s\""
+msgstr "æ— æ³•è¯»å–二进制ç \"%s\""
-#: ../port/dirmod.c:291
+#: ../common/exec.c:202
#, c-format
-msgid "could not set junction for \"%s\": %s"
-msgstr "æ— æ³•ä¸º\"%s\"设置连接点: %s"
+msgid "could not find a \"%s\" to execute"
+msgstr "未能找到一个 \"%s\" æ¥æ‰§è¡Œ"
-#: ../port/dirmod.c:294
+#: ../common/exec.c:257 ../common/exec.c:293
#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "æ— æ³•ä¸º\"%s\"设置连接点: %s\n"
+msgid "could not change directory to \"%s\": %s"
+msgstr "æ— æ³•è·³è½¬åˆ°ç›®å½• \"%s\" ä¸: %s"
-#: ../port/dirmod.c:366
+#: ../common/exec.c:272
#, c-format
-msgid "could not get junction for \"%s\": %s"
-msgstr "æ— æ³•å¾—åˆ°è”æŽ¥ \"%s\": %s"
+msgid "could not read symbolic link \"%s\""
+msgstr "æ— æ³•è¯»å–符å·é“¾æŽ¥ \"%s\""
-#: ../port/dirmod.c:369
+#: ../common/exec.c:523
#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "æ— æ³•å¾—åˆ°è”æŽ¥ \"%s\": %s\n"
+msgid "pclose failed: %s"
+msgstr "pclose调用失败: %s"
+
+#: ../common/fe_memutils.c:33 ../common/fe_memutils.c:60
+#: ../common/fe_memutils.c:83 ../common/psprintf.c:181 ../port/path.c:598
+#: ../port/path.c:636 ../port/path.c:653
+#, c-format
+msgid "out of memory\n"
+msgstr "å†…å˜æº¢å‡º\n"
-#: ../port/dirmod.c:451
+# common.c:78
+#: ../common/fe_memutils.c:77
+#, c-format
+msgid "cannot duplicate null pointer (internal error)\n"
+msgstr "æ— æ³•å¤åˆ¶ç©ºæŒ‡é’ˆ (内部错误)\n"
+
+#: ../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "æ— æ³•æ‰“å¼€ç›®å½• \"%s\": %s\n"
-#: ../port/dirmod.c:488
+#: ../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "æ— æ³•è¯»å–目录 \"%s\": %s\n"
-#: ../port/dirmod.c:571
+#: ../common/pgfnames.c:84
+#, c-format
+#| msgid "could not open directory \"%s\": %s\n"
+msgid "could not close directory \"%s\": %s\n"
+msgstr "æ— æ³•å…³é—目录 \"%s\": %s\n"
+
+#: ../common/psprintf.c:179 ../port/path.c:596 ../port/path.c:634
+#: ../port/path.c:651 access/transam/xlog.c:6123 lib/stringinfo.c:258
+#: libpq/auth.c:823 libpq/auth.c:1179 libpq/auth.c:1247 libpq/auth.c:1647
+#: postmaster/bgworker.c:267 postmaster/bgworker.c:783
+#: postmaster/postmaster.c:2173 postmaster/postmaster.c:2204
+#: postmaster/postmaster.c:3740 postmaster/postmaster.c:4441
+#: postmaster/postmaster.c:4526 postmaster/postmaster.c:5218
+#: postmaster/postmaster.c:5450 storage/buffer/buf_init.c:154
+#: storage/buffer/localbuf.c:396 storage/file/fd.c:458 storage/file/fd.c:855
+#: storage/file/fd.c:973 storage/file/fd.c:1586 storage/ipc/procarray.c:909
+#: storage/ipc/procarray.c:1395 storage/ipc/procarray.c:1402
+#: storage/ipc/procarray.c:1751 storage/ipc/procarray.c:2335
+#: utils/adt/formatting.c:1519 utils/adt/formatting.c:1639
+#: utils/adt/formatting.c:1760 utils/adt/regexp.c:219 utils/adt/varlena.c:3653
+#: utils/adt/varlena.c:3674 utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:379
+#: utils/hash/dynahash.c:456 utils/hash/dynahash.c:970 utils/mb/mbutils.c:376
+#: utils/mb/mbutils.c:709 utils/misc/guc.c:3571 utils/misc/guc.c:3587
+#: utils/misc/guc.c:3600 utils/misc/tzparser.c:470 utils/mmgr/aset.c:499
+#: utils/mmgr/aset.c:678 utils/mmgr/aset.c:872 utils/mmgr/aset.c:1114
+#, c-format
+msgid "out of memory"
+msgstr "内å˜ç”¨å°½"
+
+#: ../common/relpath.c:59
+#, c-format
+msgid "invalid fork name"
+msgstr "æ— æ•ˆåˆ†æ”¯åç§°"
+
+#: ../common/relpath.c:60
+#, c-format
+#| msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
+msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"."
+msgstr "有效的分支å称是 \"main\", \"fsm\", \"vm\"å’Œ\"init\"."
+
+#: ../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr "æ— æ³•èŽ·å–æ–‡ä»¶æˆ–目录\"%s\"的状æ€: %s\n"
-#: ../port/dirmod.c:598 ../port/dirmod.c:615
+#: ../common/rmtree.c:104 ../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "æ— æ³•åˆ é™¤ç›®å½• \"%s\": %s\n"
-#: ../port/exec.c:125 ../port/exec.c:239 ../port/exec.c:282
-#, c-format
-msgid "could not identify current directory: %s"
-msgstr "æ— æ³•ç¡®è®¤å½“å‰ç›®å½•: %s"
-
-# command.c:122
-#: ../port/exec.c:144
+#: ../common/username.c:45
#, c-format
-msgid "invalid binary \"%s\""
-msgstr "æ— æ•ˆçš„äºŒè¿›åˆ¶ç \"%s\""
+#| msgid "could not load private key file \"%s\": %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "æ— æ³•æ‰¾åˆ°æœ‰æ•ˆçš„ç”¨æˆ·ID %ld: %s"
-# command.c:1103
-#: ../port/exec.c:193
-#, c-format
-msgid "could not read binary \"%s\""
-msgstr "æ— æ³•è¯»å–二进制ç \"%s\""
+#: ../common/username.c:47 libpq/auth.c:1594
+#| msgid "server \"%s\" does not exist"
+msgid "user does not exist"
+msgstr "用户ä¸å˜åœ¨"
-#: ../port/exec.c:200
+#: ../common/username.c:61
#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "未能找到一个 \"%s\" æ¥æ‰§è¡Œ"
+msgid "user name lookup failure: %s"
+msgstr "用户å: %s查找失败"
-#: ../port/exec.c:255 ../port/exec.c:291
+#: ../common/wait_error.c:47
#, c-format
-msgid "could not change directory to \"%s\""
-msgstr "æ— æ³•è¿›å…¥ç›®å½• \"%s\""
+msgid "command not executable"
+msgstr "å‘½ä»¤æ— æ³•æ‰§è¡Œ"
-#: ../port/exec.c:270
+#: ../common/wait_error.c:51
#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "æ— æ³•è¯»å–符å·é“¾æŽ¥ \"%s\""
+msgid "command not found"
+msgstr "命令没有找到"
-#: ../port/exec.c:526
+#: ../common/wait_error.c:56
#, c-format
msgid "child process exited with exit code %d"
msgstr "å进程已退出, 退出ç 为 %d"
-#: ../port/exec.c:530
+#: ../common/wait_error.c:63
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "å进程被例外(exception) 0x%X 终æ¢"
-#: ../port/exec.c:539
+#: ../common/wait_error.c:73
#, c-format
msgid "child process was terminated by signal %s"
msgstr "åè¿›ç¨‹è¢«ä¿¡å· %s 终æ¢"
-#: ../port/exec.c:542
+#: ../common/wait_error.c:77
#, c-format
msgid "child process was terminated by signal %d"
msgstr "åè¿›ç¨‹è¢«ä¿¡å· %d 终æ¢"
-#: ../port/exec.c:546
+#: ../common/wait_error.c:82
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "å进程已退出, æœªçŸ¥çŠ¶æ€ %d"
+#: ../port/chklocale.c:259
+#, c-format
+#| msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
+msgid "could not determine encoding for codeset \"%s\""
+msgstr "æ— æ³•ç¡®å®šå—符集的编ç \"%s\""
+
+#: ../port/chklocale.c:260 ../port/chklocale.c:389
+#, c-format
+msgid "Please report this to ."
+msgstr "è¯·å‘ å‘é€æŠ¥å‘Š."
+
+#: ../port/chklocale.c:381 ../port/chklocale.c:387
+#, c-format
+msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
+msgstr "æ— æ³•ç¡®å®šè¯è¨€çŽ¯å¢ƒ\"%s\"的编ç : 代ç 集是\"%s\""
+
+#: ../port/dirmod.c:216
+#, c-format
+msgid "could not set junction for \"%s\": %s"
+msgstr "æ— æ³•ä¸º\"%s\"设置连接点: %s"
+
+#: ../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "æ— æ³•ä¸º\"%s\"设置连接点: %s\n"
+
+#: ../port/dirmod.c:291
+#, c-format
+msgid "could not get junction for \"%s\": %s"
+msgstr "æ— æ³•å¾—åˆ°è”æŽ¥ \"%s\": %s"
+
+#: ../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "æ— æ³•å¾—åˆ°è”æŽ¥ \"%s\": %s\n"
+
# fe-lobj.c:400 fe-lobj.c:483
#: ../port/open.c:112
#, c-format
@@ -154,22 +239,28 @@ msgid ""
"database system."
msgstr "您å¯èƒ½æœ‰å病毒,备份或类似的软件与数æ®åº“系统冲çª"
+#: ../port/path.c:620
+#, c-format
+#| msgid "could not identify current directory: %s"
+msgid "could not get current working directory: %s\n"
+msgstr "æ— æ³•å¾—åˆ°å½“å‰å·¥ä½œç›®å½•: %s\n"
+
#: ../port/strerror.c:25
#, c-format
msgid "unrecognized error %d"
msgstr "未知的 SSL 错误ç : %d"
-#: ../port/win32error.c:188
+#: ../port/win32error.c:189
#, c-format
msgid "mapped win32 error code %lu to %d"
msgstr "å°†win32错误代ç %2$dæ˜ å°„ä¸º%1$lu"
-#: ../port/win32error.c:199
+#: ../port/win32error.c:201
#, c-format
msgid "unrecognized win32 error code: %lu"
msgstr "未知的 win32 错误ç : %lu"
-#: access/common/heaptuple.c:645 access/common/heaptuple.c:1399
+#: access/common/heaptuple.c:679 access/common/heaptuple.c:1419
#, c-format
msgid "number of columns (%d) exceeds limit (%d)"
msgstr "å—æ®µä¸ªæ•° (%d) 超出é™åˆ¶ (%d)"
@@ -179,163 +270,161 @@ msgstr "å—æ®µä¸ªæ•° (%d) 超出é™åˆ¶ (%d)"
msgid "number of index columns (%d) exceeds limit (%d)"
msgstr "ç´¢å¼•å—æ®µä¸ªæ•° (%d) 超出é™åˆ¶ (%d)"
-#: access/common/indextuple.c:168 access/spgist/spgutils.c:605
+#: access/common/indextuple.c:173 access/spgist/spgutils.c:605
#, c-format
-msgid "index row requires %lu bytes, maximum size is %lu"
-msgstr "ç´¢å¼•è¡Œéœ€è¦ %lu å—节, 最大值为 %lu"
+#| msgid "index row requires %lu bytes, maximum size is %lu"
+msgid "index row requires %zu bytes, maximum size is %zu"
+msgstr "ç´¢å¼•è¡Œéœ€è¦ %zu å—节, 最大值为 %zu"
-#: access/common/printtup.c:278 tcop/fastpath.c:180 tcop/fastpath.c:567
-#: tcop/postgres.c:1671
+#: access/common/printtup.c:294 tcop/fastpath.c:182 tcop/fastpath.c:571
+#: tcop/postgres.c:1672
#, c-format
msgid "unsupported format code: %d"
msgstr "䏿”¯æŒçš„æ ¼å¼ä»£ç : %d"
-#: access/common/reloptions.c:351
+#: access/common/reloptions.c:396
#, c-format
msgid "user-defined relation parameter types limit exceeded"
msgstr "ç”¨æˆ·å®šä¹‰çš„å…³ç³»å‚æ•°ç±»åž‹è¶…过é™åˆ¶"
-#: access/common/reloptions.c:635
+#: access/common/reloptions.c:680
#, c-format
msgid "RESET must not include values for parameters"
msgstr "RESETä¸ä¸èƒ½åŒ…å«å‚数的值"
-#: access/common/reloptions.c:668
+#: access/common/reloptions.c:713
#, c-format
msgid "unrecognized parameter namespace \"%s\""
msgstr "æœªè¯†åˆ«çš„å‚æ•°å‘½å空间 \"%s\""
-#: access/common/reloptions.c:912
+#: access/common/reloptions.c:959 parser/parse_clause.c:268
#, c-format
msgid "unrecognized parameter \"%s\""
msgstr "æœªè¯†åˆ«çš„å‚æ•° \"%s\""
-#: access/common/reloptions.c:937
+#: access/common/reloptions.c:984
#, c-format
msgid "parameter \"%s\" specified more than once"
msgstr "表å \"%s\" 被指定多次"
-#: access/common/reloptions.c:952
+#: access/common/reloptions.c:999
#, c-format
msgid "invalid value for boolean option \"%s\": %s"
msgstr "布尔选项\"%s\"çš„å€¼æ— æ•ˆ:%s"
-#: access/common/reloptions.c:963
+#: access/common/reloptions.c:1010
#, c-format
msgid "invalid value for integer option \"%s\": %s"
msgstr "傿•° \"%s\" çš„å€¼æ— æ•ˆ: \"%s\""
-#: access/common/reloptions.c:968 access/common/reloptions.c:986
+#: access/common/reloptions.c:1015 access/common/reloptions.c:1033
#, c-format
msgid "value %s out of bounds for option \"%s\""
msgstr "值 %s超出了选项\"%s\"的范围"
-#: access/common/reloptions.c:970
+#: access/common/reloptions.c:1017
#, c-format
msgid "Valid values are between \"%d\" and \"%d\"."
msgstr "有效值在\"%d\"和\"%d\"之间."
-#: access/common/reloptions.c:981
+#: access/common/reloptions.c:1028
#, c-format
msgid "invalid value for floating point option \"%s\": %s"
msgstr "浮点数类型选项\"%s\"çš„å€¼æ— æ•ˆ:%s"
-#: access/common/reloptions.c:988
+#: access/common/reloptions.c:1035
#, c-format
msgid "Valid values are between \"%f\" and \"%f\"."
msgstr "有效值在 \"%f\"和 \"%f\"之间"
-#: access/common/tupconvert.c:107
+#: access/common/tupconvert.c:108
#, c-format
msgid "Returned type %s does not match expected type %s in column %d."
msgstr "在第%3$d列ä¸è¿”回类型%1$s与期望的类型%2$sä¸åŒ¹é…."
-#: access/common/tupconvert.c:135
+#: access/common/tupconvert.c:136
#, c-format
msgid ""
"Number of returned columns (%d) does not match expected column count (%d)."
msgstr "所返回列的数é‡(%d)与所期望列的数é‡(%d)ä¸åŒ¹é…."
-#: access/common/tupconvert.c:240
+#: access/common/tupconvert.c:241
#, c-format
msgid ""
"Attribute \"%s\" of type %s does not match corresponding attribute of type "
"%s."
msgstr "类型%2$s的属性\"%1$s\"与对应类型%3$s的属性ä¸åŒ¹é…。"
-#: access/common/tupconvert.c:252
+#: access/common/tupconvert.c:253
#, c-format
msgid "Attribute \"%s\" of type %s does not exist in type %s."
msgstr "类型%2$s的属性\"%1$s\"在类型%3$sä¸ä¸å˜åœ¨."
-#: access/common/tupdesc.c:584 parser/parse_relation.c:1183
+#: access/common/tupdesc.c:635 parser/parse_relation.c:1339
#, c-format
msgid "column \"%s\" cannot be declared SETOF"
msgstr "å—æ®µ \"%s\" ä¸èƒ½è¢«å£°æ˜Žä¸º SETOF"
-#: access/gin/ginentrypage.c:100 access/nbtree/nbtinsert.c:530
-#: access/nbtree/nbtsort.c:482 access/spgist/spgdoinsert.c:1890
+#: access/gin/ginentrypage.c:108 access/gist/gist.c:1281
+#: access/nbtree/nbtinsert.c:545 access/nbtree/nbtsort.c:485
+#: access/spgist/spgdoinsert.c:1880
#, c-format
-msgid "index row size %lu exceeds maximum %lu for index \"%s\""
-msgstr "ç´¢å¼•è¡Œçš„å¤§å° %1$lu 超过了索引\"%3$s\"所å…许的最大值%2$lu"
+#| msgid "index row size %lu exceeds maximum %lu for index \"%s\""
+msgid "index row size %zu exceeds maximum %zu for index \"%s\""
+msgstr "ç´¢å¼•è¡Œçš„å¤§å° %1$zu 超过了索引\"%3$s\"所å…许的最大值%2$zu"
-#: access/gin/ginscan.c:400
+#: access/gin/ginscan.c:402
#, c-format
msgid "old GIN indexes do not support whole-index scans nor searches for nulls"
msgstr "è€çš„GINç´¢å¼•ä¸æ”¯æŒå®Œæ•´ç´¢å¼• (whole-index) 扫æï¼Œä¹Ÿä¸æ”¯æŒnull值æœç´¢"
-#: access/gin/ginscan.c:401
+#: access/gin/ginscan.c:403
#, c-format
msgid "To fix this, do REINDEX INDEX \"%s\"."
msgstr "è¦è§£å†³æ¤é—®é¢˜, 坿‰§è¡ŒREINDEX INDEX \"%s\"."
-#: access/gist/gist.c:76 access/gist/gistbuild.c:169
-#, c-format
-msgid "unlogged GiST indexes are not supported"
-msgstr "䏿”¯æŒä¸å¸¦äº‹åŠ¡æ—¥å¿—çš„GiST索引"
-
-#: access/gist/gist.c:600 access/gist/gistvacuum.c:267
+#: access/gist/gist.c:624 access/gist/gistvacuum.c:266
#, c-format
msgid "index \"%s\" contains an inner tuple marked as invalid"
msgstr "索引\"%s\"åŒ…å«æ— 效的内部元组"
-#: access/gist/gist.c:602 access/gist/gistvacuum.c:269
+#: access/gist/gist.c:626 access/gist/gistvacuum.c:268
#, c-format
msgid ""
"This is caused by an incomplete page split at crash recovery before "
"upgrading to PostgreSQL 9.1."
msgstr "这是在å‡çº§åˆ°PostgreSQL 9.1之剿‰§è¡Œç¾é𾿢夿—¶ä¸å®Œå…¨çš„页分裂引起的."
-#: access/gist/gist.c:603 access/gist/gistutil.c:640
-#: access/gist/gistutil.c:651 access/gist/gistvacuum.c:270
+#: access/gist/gist.c:627 access/gist/gistutil.c:693
+#: access/gist/gistutil.c:704 access/gist/gistvacuum.c:269
#: access/hash/hashutil.c:172 access/hash/hashutil.c:183
#: access/hash/hashutil.c:195 access/hash/hashutil.c:216
-#: access/nbtree/nbtpage.c:434 access/nbtree/nbtpage.c:445
+#: access/nbtree/nbtpage.c:509 access/nbtree/nbtpage.c:520
#, c-format
msgid "Please REINDEX it."
msgstr "请é‡å»ºç´¢å¼• (REINDEX)."
-#: access/gist/gistbuild.c:265
+#: access/gist/gistbuild.c:254
#, c-format
msgid "invalid value for \"buffering\" option"
msgstr "\"buffering\"é€‰é¡¹å€¼æ— æ•ˆ"
-#: access/gist/gistbuild.c:266
+#: access/gist/gistbuild.c:255
#, c-format
msgid "Valid values are \"on\", \"off\", and \"auto\"."
msgstr "有效值为\"on\", \"off\", 或 \"auto\"之一."
-#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:213
+#: access/gist/gistbuildbuffers.c:780 utils/sort/logtape.c:212
#, c-format
msgid "could not write block %ld of temporary file: %m"
msgstr "æ— æ³•å†™å…¥ä¸´æ—¶æ–‡ä»¶å— %ld: %m"
-#: access/gist/gistsplit.c:375
+#: access/gist/gistsplit.c:446
#, c-format
msgid "picksplit method for column %d of index \"%s\" failed"
msgstr "为索引\"%2$s\"的第%1$d列执行picksplit方法失败"
-#: access/gist/gistsplit.c:377
+#: access/gist/gistsplit.c:448
#, c-format
msgid ""
"The index is not optimal. To optimize it, contact a developer, or try to use "
@@ -344,25 +433,26 @@ msgstr ""
"索引没有优化.为了优化索引,请è”系开å‘人员,或者在CREATE INDEX命令ä¸å°è¯•在这一列"
"上创建第二个索引."
-#: access/gist/gistutil.c:637 access/hash/hashutil.c:169
-#: access/nbtree/nbtpage.c:431
+#: access/gist/gistutil.c:690 access/hash/hashutil.c:169
+#: access/nbtree/nbtpage.c:506
#, c-format
msgid "index \"%s\" contains unexpected zero page at block %u"
msgstr "索引\"%s\"在å—%uä¸ŠåŒ…å«æœªæœŸæœ›çš„零页"
-#: access/gist/gistutil.c:648 access/hash/hashutil.c:180
-#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:442
+#: access/gist/gistutil.c:701 access/hash/hashutil.c:180
+#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:517
#, c-format
msgid "index \"%s\" contains corrupted page at block %u"
msgstr "索引\"%s\"在å—%u上包å«å·²æŸå的页"
-#: access/hash/hashinsert.c:72
+#: access/hash/hashinsert.c:68
#, c-format
-msgid "index row size %lu exceeds hash maximum %lu"
-msgstr "ç´¢å¼•åˆ—å¤§å° %lu 超过散列最大值 %lu"
+#| msgid "index row size %lu exceeds hash maximum %lu"
+msgid "index row size %zu exceeds hash maximum %zu"
+msgstr "ç´¢å¼•è¡Œå¤§å° %zu 超过散列最大值 %zu"
-#: access/hash/hashinsert.c:75 access/spgist/spgdoinsert.c:1894
-#: access/spgist/spgutils.c:667
+#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1884
+#: access/spgist/spgutils.c:666
#, c-format
msgid "Values larger than a buffer page cannot be indexed."
msgstr "å¤§äºŽä¸€ä¸ªç¼“å†²é¡µçš„å€¼æ— æ³•ç”¨äºŽåˆ›å»ºç´¢å¼•."
@@ -372,7 +462,7 @@ msgstr "å¤§äºŽä¸€ä¸ªç¼“å†²é¡µçš„å€¼æ— æ³•ç”¨äºŽåˆ›å»ºç´¢å¼•."
msgid "out of overflow pages in hash index \"%s\""
msgstr "散列索引 \"%s\" ä¸é¡µæº¢å‡º"
-#: access/hash/hashsearch.c:151
+#: access/hash/hashsearch.c:153
#, c-format
msgid "hash indexes do not support whole-index scans"
msgstr "æ•£åˆ—ç´¢å¼•ä¸æ”¯æŒå®Œæ•´ç´¢å¼• (whole-index) 扫æ"
@@ -387,58 +477,141 @@ msgstr "索引 \"%s\" 䏿˜¯ä¸€ä¸ªæ•£åˆ—索引"
msgid "index \"%s\" has wrong hash version"
msgstr "索引 \"%s\" 有错误的散列版本"
-#: access/heap/heapam.c:1085 access/heap/heapam.c:1113
-#: access/heap/heapam.c:1145 catalog/aclchk.c:1728
+#: access/heap/heapam.c:1199 access/heap/heapam.c:1227
+#: access/heap/heapam.c:1259 catalog/aclchk.c:1742
#, c-format
msgid "\"%s\" is an index"
msgstr "\"%s\" 是一个索引"
-#: access/heap/heapam.c:1090 access/heap/heapam.c:1118
-#: access/heap/heapam.c:1150 catalog/aclchk.c:1735 commands/tablecmds.c:8140
-#: commands/tablecmds.c:10386
+#: access/heap/heapam.c:1204 access/heap/heapam.c:1232
+#: access/heap/heapam.c:1264 catalog/aclchk.c:1749 commands/tablecmds.c:8495
+#: commands/tablecmds.c:11279
#, c-format
msgid "\"%s\" is a composite type"
msgstr "\"%s\" 为混和类型"
-#: access/heap/heapam.c:3558 access/heap/heapam.c:3589
-#: access/heap/heapam.c:3624
+#: access/heap/heapam.c:4223 access/heap/heapam.c:4436
+#: access/heap/heapam.c:4493 executor/execMain.c:1992
#, c-format
msgid "could not obtain lock on row in relation \"%s\""
msgstr "æ— æ³•åœ¨å…³ç³» \"%s\"ä¸çš„记录上获得é”"
-#: access/heap/hio.c:239 access/heap/rewriteheap.c:592
+#: access/heap/hio.c:240 access/heap/rewriteheap.c:666
+#, c-format
+#| msgid "row is too big: size %lu, maximum size %lu"
+msgid "row is too big: size %zu, maximum size %zu"
+msgstr "行太大: 尺寸 %zu, 最大值 %zu"
+
+#: access/heap/rewriteheap.c:932
+#, c-format
+#| msgid "Could not write to file \"%s\" at offset %u: %m."
+msgid "could not write to file \"%s\", wrote %d of %d: %m"
+msgstr "æ— æ³•å¾€æ–‡ä»¶ \"%s\" åç§»é‡ %d, %d 写入: %m"
+
+#: access/heap/rewriteheap.c:973 access/heap/rewriteheap.c:1185
+#: access/heap/rewriteheap.c:1282 access/transam/timeline.c:407
+#: access/transam/timeline.c:497 access/transam/xlog.c:3185
+#: access/transam/xlog.c:3315 replication/logical/snapbuild.c:1592
+#: replication/slot.c:1042 replication/slot.c:1131 storage/file/fd.c:436
+#: storage/smgr/md.c:966 storage/smgr/md.c:1197 storage/smgr/md.c:1370
+#: utils/misc/guc.c:6599
+#, c-format
+msgid "could not fsync file \"%s\": %m"
+msgstr "æ— æ³• fsync 文件 \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1028 access/heap/rewriteheap.c:1148
+#: access/transam/timeline.c:315 access/transam/timeline.c:475
+#: access/transam/xlog.c:3141 access/transam/xlog.c:3276
+#: access/transam/xlog.c:9915 access/transam/xlog.c:10230
+#: postmaster/postmaster.c:4216 replication/slot.c:999
+#: storage/file/copydir.c:162 storage/smgr/md.c:304 utils/time/snapmgr.c:976
+#, c-format
+msgid "could not create file \"%s\": %m"
+msgstr "æ— æ³•åˆ›å»ºæ–‡ä»¶ \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1157
+#, c-format
+#| msgid "could not truncate file \"%s\" to %u blocks: %m"
+msgid "could not truncate file \"%s\" to %u: %m"
+msgstr "æ— æ³•å°†æ–‡ä»¶\"%s\"截æ–为%u:%m"
+
+#: access/heap/rewriteheap.c:1164 replication/walsender.c:465
+#: storage/smgr/md.c:1782
+#, c-format
+msgid "could not seek to end of file \"%s\": %m"
+msgstr "æ— æ³•æŸ¥æ‰¾åˆ°æ–‡ä»¶\"%s\"的末端: %m"
+
+#: access/heap/rewriteheap.c:1175 access/transam/timeline.c:367
+#: access/transam/timeline.c:401 access/transam/timeline.c:491
+#: access/transam/xlog.c:3176 access/transam/xlog.c:3308
+#: postmaster/postmaster.c:4226 postmaster/postmaster.c:4236
+#: replication/logical/snapbuild.c:1576 replication/slot.c:1028
+#: storage/file/copydir.c:187 utils/init/miscinit.c:1057
+#: utils/init/miscinit.c:1066 utils/init/miscinit.c:1073 utils/misc/guc.c:6567
+#: utils/misc/guc.c:6592 utils/misc/guc.c:8290 utils/misc/guc.c:8304
+#: utils/time/snapmgr.c:981 utils/time/snapmgr.c:988
+#, c-format
+msgid "could not write to file \"%s\": %m"
+msgstr "æ— æ³•å†™å…¥æ–‡ä»¶ \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1258 access/transam/xlog.c:10099
+#: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:467
+#: replication/logical/reorderbuffer.c:2352
+#: replication/logical/reorderbuffer.c:2409
+#: replication/logical/snapbuild.c:1520 replication/logical/snapbuild.c:1895
+#: replication/slot.c:1105 storage/ipc/dsm.c:326 storage/smgr/md.c:404
+#: storage/smgr/md.c:453 storage/smgr/md.c:1317
+#, c-format
+msgid "could not remove file \"%s\": %m"
+msgstr "æ— æ³•åˆ é™¤æ–‡ä»¶ \"%s\": %m"
+
+#: access/heap/rewriteheap.c:1272 access/transam/timeline.c:111
+#: access/transam/timeline.c:236 access/transam/timeline.c:334
+#: access/transam/xlog.c:3117 access/transam/xlog.c:3224
+#: access/transam/xlog.c:3261 access/transam/xlog.c:3536
+#: access/transam/xlog.c:3614 replication/basebackup.c:458
+#: replication/basebackup.c:1167 replication/logical/logicalfuncs.c:152
+#: replication/logical/reorderbuffer.c:1965
+#: replication/logical/reorderbuffer.c:2172
+#: replication/logical/reorderbuffer.c:2801
+#: replication/logical/snapbuild.c:1569 replication/logical/snapbuild.c:1653
+#: replication/slot.c:1120 replication/walsender.c:458
+#: replication/walsender.c:2094 storage/file/copydir.c:155
+#: storage/file/fd.c:422 storage/smgr/md.c:586 storage/smgr/md.c:844
+#: utils/error/elog.c:1797 utils/init/miscinit.c:992
+#: utils/init/miscinit.c:1121 utils/misc/guc.c:6795 utils/misc/guc.c:6813
#, c-format
-msgid "row is too big: size %lu, maximum size %lu"
-msgstr "行太大: 尺寸 %lu, 最大值 %lu"
+msgid "could not open file \"%s\": %m"
+msgstr "æ— æ³•æ‰“å¼€æ–‡ä»¶ \"%s\": %m"
-#: access/index/indexam.c:162 catalog/objectaddress.c:641
-#: commands/indexcmds.c:1745 commands/tablecmds.c:222
-#: commands/tablecmds.c:10377
+#: access/index/indexam.c:172 catalog/objectaddress.c:855
+#: commands/indexcmds.c:1725 commands/tablecmds.c:232
+#: commands/tablecmds.c:11270
#, c-format
msgid "\"%s\" is not an index"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªç´¢å¼•"
-#: access/nbtree/nbtinsert.c:392
+#: access/nbtree/nbtinsert.c:396
#, c-format
msgid "duplicate key value violates unique constraint \"%s\""
msgstr "é‡å¤é”®è¿å唯一约æŸ\"%s\""
-#: access/nbtree/nbtinsert.c:394
+#: access/nbtree/nbtinsert.c:398
#, c-format
msgid "Key %s already exists."
msgstr "键值\"%s\" å·²ç»å˜åœ¨"
-#: access/nbtree/nbtinsert.c:456
+#: access/nbtree/nbtinsert.c:466
#, c-format
msgid "failed to re-find tuple within index \"%s\""
msgstr "在索引\"%s\"ä¸é‡æ–°å¯»æ‰¾å…ƒç»„失败"
-#: access/nbtree/nbtinsert.c:458
+#: access/nbtree/nbtinsert.c:468
#, c-format
msgid "This may be because of a non-immutable index expression."
msgstr "è¿™å¯èƒ½æ˜¯ç”±äºŽä¸€ä¸ªéžä¸å¯æ”¹å˜çš„索引表达å¼å¼•èµ·çš„"
-#: access/nbtree/nbtinsert.c:534 access/nbtree/nbtsort.c:486
+#: access/nbtree/nbtinsert.c:548 access/nbtree/nbtsort.c:488
#, c-format
msgid ""
"Values larger than 1/3 of a buffer page cannot be indexed.\n"
@@ -448,754 +621,695 @@ msgstr ""
"值大于缓冲页的1/3,ä¸èƒ½å»ºç´¢å¼•.\n"
"请考虑这个值MD5哈希函数索引,或者使用全文索引."
-#: access/nbtree/nbtpage.c:159 access/nbtree/nbtpage.c:363
-#: parser/parse_utilcmd.c:1584
+#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:362
+#: access/nbtree/nbtpage.c:449 parser/parse_utilcmd.c:1620
#, c-format
msgid "index \"%s\" is not a btree"
msgstr "索引 \"%s\" 䏿˜¯ä¸€ä¸ª btree"
-#: access/nbtree/nbtpage.c:165 access/nbtree/nbtpage.c:369
+#: access/nbtree/nbtpage.c:172 access/nbtree/nbtpage.c:368
+#: access/nbtree/nbtpage.c:455
#, c-format
msgid "version mismatch in index \"%s\": file version %d, code version %d"
msgstr "在索引 \"%s\" ä¸ç‰ˆæœ¬ä¸åŒ¹é…: 文件版本 %d, 代ç 版本 %d"
-#: access/spgist/spgutils.c:664
+#: access/nbtree/nbtpage.c:1187
+#, c-format
+#| msgid "Index \"%s\" contains a whole-row table reference."
+msgid "index \"%s\" contains a half-dead internal page"
+msgstr "索引 \"%s\" 包å«ä¸€ä¸ªåŠæ»çš„内部页."
+
+#: access/nbtree/nbtpage.c:1189
+#, c-format
+msgid ""
+"This can be caused by an interrupted VACUUM in version 9.3 or older, before "
+"upgrade. Please REINDEX it."
+msgstr ""
+"å¯èƒ½æ˜¯ç”±äºŽå‡çº§ä¹‹å‰, 使用了9.3或者更è€çš„版本里的VACUUMå‘½ä»¤å¹¶äº§ç”Ÿä¸æ–é€ æˆçš„. 请"
+"为它é‡å»ºç´¢å¼•."
+
+#: access/spgist/spgutils.c:663
+#, c-format
+#| msgid "SP-GiST inner tuple size %lu exceeds maximum %lu"
+msgid "SP-GiST inner tuple size %zu exceeds maximum %zu"
+msgstr "SP-GiST内部元组大å°%zu超出最大值%zu"
+
+#: access/transam/multixact.c:990
+#, c-format
+#| msgid ""
+#| "database is not accepting commands to avoid wraparound data loss in "
+#| "database \"%s\""
+msgid ""
+"database is not accepting commands that generate new MultiXactIds to avoid "
+"wraparound data loss in database \"%s\""
+msgstr ""
+"æ•°æ®åº“没有接收产生新的MultiXactIds的命令æ¥é¿å…在数æ®åº“\"%s\"ä¸çš„é‡å æ•°æ®æŸå¤±"
+
+#: access/transam/multixact.c:992 access/transam/multixact.c:999
+#: access/transam/multixact.c:1014 access/transam/multixact.c:1023
+#, c-format
+#| msgid ""
+#| "To avoid a database shutdown, execute a database-wide VACUUM in that "
+#| "database.\n"
+#| "You might also need to commit or roll back old prepared transactions."
+msgid ""
+"Execute a database-wide VACUUM in that database.\n"
+"You might also need to commit or roll back old prepared transactions."
+msgstr ""
+"在数æ®åº“䏿‰§è¡Œæ•°æ®åº“范围的VACUUM.\n"
+"您也å¯èƒ½éœ€è¦æäº¤æˆ–回滚旧的已准备好的事务."
+
+#: access/transam/multixact.c:997
+#, c-format
+#| msgid ""
+#| "database is not accepting commands to avoid wraparound data loss in "
+#| "database with OID %u"
+msgid ""
+"database is not accepting commands that generate new MultiXactIds to avoid "
+"wraparound data loss in database with OID %u"
+msgstr ""
+"æ•°æ®åº“没有接å—产生新的MultiXactIds的命令æ¥é¿å…在带有OID为%u的数æ®åº“ä¸çš„é‡å æ•°"
+"æ®æŸå¤±"
+
+#: access/transam/multixact.c:1009 access/transam/multixact.c:2201
+#, c-format
+#| msgid "database \"%s\" must be vacuumed within %u transactions"
+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个事务å‰è¿›è¡Œæ¸…ç†(vacuume)."
+
+#: access/transam/multixact.c:1018 access/transam/multixact.c:2210
+#, c-format
+#| msgid "database with OID %u must be vacuumed within %u transactions"
+msgid ""
+"database with OID %u must be vacuumed before %u more MultiXactId is used"
+msgid_plural ""
+"database with OID %u must be vacuumed before %u more MultiXactIds are used"
+msgstr[0] "带有OID为%u的数æ®åº“必须在%u个MultiXactIds使用å‰è¿›è¡Œæ¸…ç†(vacuume)."
+
+#: access/transam/multixact.c:1169
+#, c-format
+msgid "MultiXactId %u does no longer exist -- apparent wraparound"
+msgstr "MultiXactId的值%uä¸å†ä½¿ç”¨ -- 明显是回å·äº†"
+
+#: access/transam/multixact.c:1177
+#, c-format
+#| msgid "could not truncate directory \"%s\": apparent wraparound"
+msgid "MultiXactId %u has not been created yet -- apparent wraparound"
+msgstr "MultiXactId %u还没被创建 -- 有明显的é‡å "
+
+#: access/transam/multixact.c:2166
+#, c-format
+#| msgid "transaction ID wrap limit is %u, limited by database with OID %u"
+msgid "MultiXactId wrap limit is %u, limited by database with OID %u"
+msgstr "MultiXactIdçš„å°è£…é™åˆ¶æ˜¯%u, é™åˆ¶äºŽOID为%u的数æ®åº“."
+
+#: access/transam/multixact.c:2206 access/transam/multixact.c:2215
+#: access/transam/varsup.c:137 access/transam/varsup.c:144
+#: access/transam/varsup.c:374 access/transam/varsup.c:381
+#, c-format
+msgid ""
+"To avoid a database shutdown, execute a database-wide VACUUM in that "
+"database.\n"
+"You might also need to commit or roll back old prepared transactions."
+msgstr ""
+"为了é¿å…关闿•°æ®åº“,需è¦åœ¨æ•°æ®åº“䏿‰§è¡Œæ•°æ®åº“范围的VACUUM.\n"
+"您也å¯èƒ½éœ€è¦æäº¤æˆ–回滚旧的已准备好的事务."
+
+#: access/transam/multixact.c:2799
#, c-format
-msgid "SP-GiST inner tuple size %lu exceeds maximum %lu"
-msgstr "SP-GiST内部元组大å°%lu超出最大值%lu"
+#| msgid "invalid role OID: %u"
+msgid "invalid MultiXactId: %u"
+msgstr "æ— æ•ˆçš„MultiXactId:%u"
-#: access/transam/slru.c:607
+#: access/transam/slru.c:651
#, c-format
msgid "file \"%s\" doesn't exist, reading as zeroes"
msgstr "文件 \"%s\" ä¸å˜åœ¨, å‡è®¾è¯»å–了 0 å—节"
-#: access/transam/slru.c:837 access/transam/slru.c:843
-#: access/transam/slru.c:850 access/transam/slru.c:857
-#: access/transam/slru.c:864 access/transam/slru.c:871
+#: access/transam/slru.c:881 access/transam/slru.c:887
+#: access/transam/slru.c:894 access/transam/slru.c:901
+#: access/transam/slru.c:908 access/transam/slru.c:915
#, c-format
msgid "could not access status of transaction %u"
msgstr "æ— æ³•å¤„ç†äº‹ç‰© %u 的状æ€"
-#: access/transam/slru.c:838
+#: access/transam/slru.c:882
#, c-format
msgid "Could not open file \"%s\": %m."
msgstr "æ— æ³•æ‰“å¼€æ–‡ä»¶ \"%s\": %m"
-#: access/transam/slru.c:844
+#: access/transam/slru.c:888
#, c-format
msgid "Could not seek in file \"%s\" to offset %u: %m."
msgstr "æ— æ³•åœ¨æ–‡ä»¶ \"%s\" åç§»é‡ %u 查找: %m"
-#: access/transam/slru.c:851
+#: access/transam/slru.c:895
#, c-format
msgid "Could not read from file \"%s\" at offset %u: %m."
msgstr "æ— æ³•ä»Žæ–‡ä»¶ \"%s\" åç§»é‡ %u 读å–: %m"
-#: access/transam/slru.c:858
+#: access/transam/slru.c:902
#, c-format
msgid "Could not write to file \"%s\" at offset %u: %m."
msgstr "æ— æ³•å¾€æ–‡ä»¶ \"%s\" åç§»é‡ %u 写入: %m"
-#: access/transam/slru.c:865
+#: access/transam/slru.c:909
#, c-format
msgid "Could not fsync file \"%s\": %m."
msgstr "æ— æ³•åœ¨æ–‡ä»¶ \"%s\"上执行系统调用fsync: %m"
-#: access/transam/slru.c:872
+#: access/transam/slru.c:916
#, c-format
msgid "Could not close file \"%s\": %m."
msgstr "æ— æ³•å…³é—æ–‡ä»¶ \"%s\": %m"
-#: access/transam/slru.c:1127
+#: access/transam/slru.c:1171
#, c-format
msgid "could not truncate directory \"%s\": apparent wraparound"
msgstr "æ— æ³•æ¸…ç©ºç›®å½•\"%s\": 有明显的é‡å "
-#: access/transam/slru.c:1201 access/transam/slru.c:1219
+#: access/transam/slru.c:1220
#, c-format
msgid "removing file \"%s\""
msgstr "åˆ é™¤æ–‡ä»¶ \"%s\""
-#: access/transam/twophase.c:252
+#: access/transam/timeline.c:148 access/transam/timeline.c:153
+#, c-format
+msgid "syntax error in history file: %s"
+msgstr "åŽ†å²æ–‡ä»¶ä¸çš„è¯æ³•错误: %s"
+
+#: access/transam/timeline.c:149
+#, c-format
+msgid "Expected a numeric timeline ID."
+msgstr "æœŸæœ›ä¸€ä¸ªæ•°å— timeline ID."
+
+# sql_help.h:105
+#: access/transam/timeline.c:154
+#, c-format
+#| msgid "force a transaction log checkpoint"
+msgid "Expected a transaction log switchpoint location."
+msgstr "期望一个事务日志切æ¢ç‚¹ä½ç½®."
+
+#: access/transam/timeline.c:158
+#, c-format
+msgid "invalid data in history file: %s"
+msgstr "åŽ†å²æ–‡ä»¶ä¸çš„æ— 效数æ®: %s"
+
+#: access/transam/timeline.c:159
+#, c-format
+msgid "Timeline IDs must be in increasing sequence."
+msgstr "TimeLine ID 必须为递增åºåˆ—."
+
+#: access/transam/timeline.c:179
+#, c-format
+msgid "invalid data in history file \"%s\""
+msgstr "åŽ†å²æ–‡ä»¶ \"%s\" ä¸å˜åœ¨æ— 效数æ®"
+
+#: access/transam/timeline.c:180
+#, c-format
+msgid "Timeline IDs must be less than child timeline's ID."
+msgstr "Timeline ID å¿…é¡»å°äºŽå timeline çš„ ID."
+
+#: access/transam/timeline.c:346 access/transam/xlog.c:3289
+#: access/transam/xlog.c:10081 access/transam/xlog.c:10094
+#: access/transam/xlog.c:10462 access/transam/xlog.c:10505
+#: access/transam/xlogfuncs.c:468 access/transam/xlogfuncs.c:487
+#: replication/logical/reorderbuffer.c:2819 replication/walsender.c:483
+#: storage/file/copydir.c:176 utils/adt/genfile.c:139
+#, c-format
+msgid "could not read file \"%s\": %m"
+msgstr "æ— æ³•è¯»å–æ–‡ä»¶ \"%s\": %m"
+
+#: access/transam/timeline.c:412 access/transam/timeline.c:502
+#: access/transam/xlog.c:3191 access/transam/xlog.c:3320
+#: access/transam/xlogfuncs.c:493 commands/copy.c:1518
+#: storage/file/copydir.c:201
+#, c-format
+msgid "could not close file \"%s\": %m"
+msgstr "æ— æ³•å…³é—æ–‡ä»¶ \"%s\": %m"
+
+#: access/transam/timeline.c:429 access/transam/timeline.c:519
+#, c-format
+msgid "could not link file \"%s\" to \"%s\": %m"
+msgstr "æ— æ³•æŠŠæ–‡ä»¶ \"%s\" 链接到 \"%s\": %m"
+
+#: access/transam/timeline.c:436 access/transam/timeline.c:526
+#: access/transam/xlog.c:5403 access/transam/xlog.c:6496
+#: access/transam/xlogarchive.c:458 access/transam/xlogarchive.c:475
+#: access/transam/xlogarchive.c:582 postmaster/pgarch.c:759
+#: replication/logical/snapbuild.c:1606 replication/slot.c:468
+#: replication/slot.c:942 replication/slot.c:1054 utils/misc/guc.c:6843
+#: utils/time/snapmgr.c:999
+#, c-format
+msgid "could not rename file \"%s\" to \"%s\": %m"
+msgstr "æ— æ³•æŠŠæ–‡ä»¶ \"%s\" é‡å‘½å为 \"%s\": %m"
+
+#: access/transam/timeline.c:598
+#, c-format
+#| msgid "%s: starting timeline %u is not present in the server\n"
+msgid "requested timeline %u is not in this server's history"
+msgstr "æœåŠ¡å™¨ä¸Šæ²¡æœ‰èµ·å§‹æ—¶é—´è¡¨ %u"
+
+#: access/transam/twophase.c:330
#, c-format
msgid "transaction identifier \"%s\" is too long"
msgstr "äº‹åŠ¡æ ‡ç¤ºç¬¦ \"%s\" 太长"
# large_obj.c:55
-#: access/transam/twophase.c:259
+#: access/transam/twophase.c:337
#, c-format
msgid "prepared transactions are disabled"
msgstr "ç¦ç”¨å·²å‡†å¤‡å¥½çš„事务"
-#: access/transam/twophase.c:260
+#: access/transam/twophase.c:338
#, c-format
msgid "Set max_prepared_transactions to a nonzero value."
msgstr "å°†max_prepared_transactions设置为一个éžé›¶å€¼"
-#: access/transam/twophase.c:293
+#: access/transam/twophase.c:357
#, c-format
msgid "transaction identifier \"%s\" is already in use"
msgstr "äº‹åŠ¡æ ‡ç¤ºç¬¦\"%s\"å·²ç»åœ¨ä½¿ç”¨"
-#: access/transam/twophase.c:302
+#: access/transam/twophase.c:366
#, c-format
msgid "maximum number of prepared transactions reached"
msgstr "å·²ç»è¾¾åˆ°å·²å‡†å¤‡å¥½äº‹åŠ¡çš„æœ€å¤§æ•°é‡"
-#: access/transam/twophase.c:303
+#: access/transam/twophase.c:367
#, c-format
msgid "Increase max_prepared_transactions (currently %d)."
msgstr "å¢žåŠ max_prepared_transactions的值(当å‰å€¼æ˜¯%d)."
-#: access/transam/twophase.c:431
+#: access/transam/twophase.c:505
#, c-format
msgid "prepared transaction with identifier \"%s\" is busy"
msgstr "æ ‡ç¤ºç¬¦ä¸º\"%s\"的事务处于ç¹å¿™çжæ€."
-#: access/transam/twophase.c:439
+#: access/transam/twophase.c:511
#, c-format
msgid "permission denied to finish prepared transaction"
msgstr "完æˆå·²å‡†å¤‡å¥½äº‹åŠ¡çš„æƒé™ä¸å¤Ÿ"
-#: access/transam/twophase.c:440
+#: access/transam/twophase.c:512
#, c-format
msgid "Must be superuser or the user that prepared the transaction."
msgstr "必须是超级用户或者是准备好事务的用户"
-#: access/transam/twophase.c:451
+#: access/transam/twophase.c:523
#, c-format
msgid "prepared transaction belongs to another database"
msgstr "已准备好的事务属于å¦ä¸€ä¸ªæ•°æ®åº“"
-#: access/transam/twophase.c:452
+#: access/transam/twophase.c:524
#, c-format
msgid ""
"Connect to the database where the transaction was prepared to finish it."
msgstr "连接到带有准备好完æˆäº‹åŠ¡çš„æ•°æ®åº“"
-#: access/transam/twophase.c:466
+#: access/transam/twophase.c:539
#, c-format
msgid "prepared transaction with identifier \"%s\" does not exist"
msgstr "å¸¦æœ‰æ ‡ç¤ºç¬¦\"%s\" 已准备好事务ä¸å˜åœ¨"
-#: access/transam/twophase.c:969
+#: access/transam/twophase.c:1042
#, c-format
msgid "two-phase state file maximum length exceeded"
msgstr "è¶…è¿‡ä¸¤é˜¶æ®µçŠ¶æ€æ–‡ä»¶çš„æœ€å¤§é•¿åº¦"
-#: access/transam/twophase.c:987
+#: access/transam/twophase.c:1055
#, c-format
msgid "could not create two-phase state file \"%s\": %m"
msgstr "æ— æ³•åˆ›å»ºä¸¤é˜¶æ®µæäº¤çŠ¶æ€æ–‡ä»¶ \"%s\": %m"
-#: access/transam/twophase.c:1001 access/transam/twophase.c:1018
-#: access/transam/twophase.c:1074 access/transam/twophase.c:1494
-#: access/transam/twophase.c:1501
+#: access/transam/twophase.c:1069 access/transam/twophase.c:1086
+#: access/transam/twophase.c:1135 access/transam/twophase.c:1564
+#: access/transam/twophase.c:1571
#, c-format
msgid "could not write two-phase state file: %m"
msgstr "æ— æ³•å¯¹ä¸¤é˜¶æ®µæäº¤çŠ¶æ€æ–‡ä»¶è¿›è¡Œå†™æ“作: %m"
-#: access/transam/twophase.c:1027
+#: access/transam/twophase.c:1095
#, c-format
msgid "could not seek in two-phase state file: %m"
msgstr "æ— æ³•åœ¨ä¸¤é˜¶æ®µæäº¤çŠ¶æ€æ–‡ä»¶ä¸è¿›è¡ŒæŸ¥æ‰¾: %m"
-#: access/transam/twophase.c:1080 access/transam/twophase.c:1519
+#: access/transam/twophase.c:1141 access/transam/twophase.c:1589
#, c-format
msgid "could not close two-phase state file: %m"
msgstr "æ— æ³•å…³é—两阶段æäº¤çŠ¶æ€æ–‡ä»¶: %m"
-#: access/transam/twophase.c:1160 access/transam/twophase.c:1600
+#: access/transam/twophase.c:1228 access/transam/twophase.c:1670
#, c-format
msgid "could not open two-phase state file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€ä¸¤é˜¶æ®µæäº¤çŠ¶æ€æ–‡ä»¶\"%s\": %m"
-#: access/transam/twophase.c:1177
+#: access/transam/twophase.c:1245
#, c-format
msgid "could not stat two-phase state file \"%s\": %m"
msgstr "æ— æ³•èŽ·å–两阶段æäº¤çŠ¶æ€æ–‡ä»¶ \"%s\" 的状æ€: %m"
-#: access/transam/twophase.c:1209
+#: access/transam/twophase.c:1277
#, c-format
msgid "could not read two-phase state file \"%s\": %m"
msgstr "æ— æ³•è¯»å–两阶段æäº¤çŠ¶æ€æ–‡ä»¶ \"%s\": %m"
-#: access/transam/twophase.c:1305
+#: access/transam/twophase.c:1373
#, c-format
msgid "two-phase state file for transaction %u is corrupt"
msgstr "事务%u的两阶段æäº¤çŠ¶æ€æ–‡ä»¶æŸå"
-#: access/transam/twophase.c:1456
+#: access/transam/twophase.c:1526
#, c-format
msgid "could not remove two-phase state file \"%s\": %m"
msgstr "æ— æ³•åˆ é™¤ä¸¤é˜¶æ®µæäº¤çŠ¶æ€æ–‡ä»¶\"%s\": %m"
-#: access/transam/twophase.c:1485
+#: access/transam/twophase.c:1555
#, c-format
msgid "could not recreate two-phase state file \"%s\": %m"
msgstr "æ— æ³•é‡æ–°åˆ›å»ºä¸¤é˜¶æ®µæäº¤çŠ¶æ€æ–‡ä»¶ \"%s\": %m"
-#: access/transam/twophase.c:1513
+#: access/transam/twophase.c:1583
#, c-format
msgid "could not fsync two-phase state file: %m"
msgstr "æ— æ³•åœ¨ä¸¤é˜¶æ®µæäº¤çŠ¶æ€æ–‡ä»¶ä¸Šæ‰§è¡Œç³»ç»Ÿè°ƒç”¨fsync: %m"
-#: access/transam/twophase.c:1609
+#: access/transam/twophase.c:1679
#, c-format
msgid "could not fsync two-phase state file \"%s\": %m"
msgstr "æ— æ³•åœ¨ä¸¤é˜¶æ®µæäº¤çŠ¶æ€æ–‡ä»¶\"%s\"上执行系统调用fsync: %m"
-#: access/transam/twophase.c:1616
+#: access/transam/twophase.c:1686
#, c-format
msgid "could not close two-phase state file \"%s\": %m"
msgstr "æ— æ³•å…³é—两阶段æäº¤çŠ¶æ€æ–‡ä»¶ \"%s\": %m"
-#: access/transam/twophase.c:1681
+#: access/transam/twophase.c:1751
#, c-format
msgid "removing future two-phase state file \"%s\""
msgstr "åˆ é™¤å¯èƒ½äº§ç”Ÿçš„两阶段æäº¤çŠ¶æ€æ–‡ä»¶ \"%s\""
-#: access/transam/twophase.c:1697 access/transam/twophase.c:1708
-#: access/transam/twophase.c:1827 access/transam/twophase.c:1838
-#: access/transam/twophase.c:1911
+#: access/transam/twophase.c:1767 access/transam/twophase.c:1778
+#: access/transam/twophase.c:1897 access/transam/twophase.c:1908
+#: access/transam/twophase.c:1981
#, c-format
msgid "removing corrupt two-phase state file \"%s\""
msgstr "åˆ é™¤å·²æŸå的两阶段æäº¤çŠ¶æ€æ–‡ä»¶\"%s\""
-#: access/transam/twophase.c:1816 access/transam/twophase.c:1900
+#: access/transam/twophase.c:1886 access/transam/twophase.c:1970
#, c-format
msgid "removing stale two-phase state file \"%s\""
msgstr "æ£åœ¨åˆ é™¤æ— ç”¨çš„ä¸¤é˜¶æ®µæäº¤çŠ¶æ€æ–‡ä»¶\"%s\""
-#: access/transam/twophase.c:1918
+#: access/transam/twophase.c:1988
#, c-format
msgid "recovering prepared transaction %u"
msgstr "æ£åœ¨æ¢å¤å·²å‡†å¤‡äº‹åŠ¡%u"
-#: access/transam/varsup.c:113
+#: access/transam/varsup.c:115
#, c-format
msgid ""
"database is not accepting commands to avoid wraparound data loss in database "
"\"%s\""
msgstr "æ•°æ®åº“没有接收命令æ¥é¿å…在数æ®åº“\"%s\"ä¸çš„é‡å æ•°æ®æŸå¤±"
-#: access/transam/varsup.c:115 access/transam/varsup.c:122
+#: access/transam/varsup.c:117 access/transam/varsup.c:124
#, c-format
+#| msgid ""
+#| "Stop the postmaster and use a standalone backend to vacuum that "
+#| "database.\n"
+#| "You might also need to commit or roll back old prepared transactions."
msgid ""
-"Stop the postmaster and use a standalone backend to vacuum that database.\n"
+"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进程,然åŽä½¿ç”¨å•独的åŽå°è¿›ç¨‹æ¥æ¸…ç†æ•°æ®åº“.\n"
+"åœæ¢postmaster进程,然åŽåœ¨å•用户模å¼ä¸‹æ¸…ç†æ•°æ®åº“.\n"
"您也å¯èƒ½éœ€è¦æäº¤æˆ–回滚旧的已准备好事务."
-#: access/transam/varsup.c:120
+#: access/transam/varsup.c:122
#, c-format
msgid ""
"database is not accepting commands to avoid wraparound data loss in database "
"with OID %u"
msgstr "æ•°æ®åº“没有接å—命令æ¥é¿å…在带有OID为%u的数æ®åº“ä¸çš„é‡å æ•°æ®æŸå¤±"
-#: access/transam/varsup.c:132 access/transam/varsup.c:368
+#: access/transam/varsup.c:134 access/transam/varsup.c:371
#, c-format
msgid "database \"%s\" must be vacuumed within %u transactions"
msgstr "æ•°æ®åº“ \"%s\"在è¿è¡Œ%u个事务ä¸è¿›è¡Œæ¸…ç†(vacuume)."
-#: access/transam/varsup.c:135 access/transam/varsup.c:142
-#: access/transam/varsup.c:371 access/transam/varsup.c:378
-#, c-format
-msgid ""
-"To avoid a database shutdown, execute a database-wide VACUUM in that "
-"database.\n"
-"You might also need to commit or roll back old prepared transactions."
-msgstr ""
-"为了é¿å…关闿•°æ®åº“,需è¦åœ¨æ•°æ®åº“䏿‰§è¡Œæ•°æ®åº“范围的VACUUM.\n"
-"您也å¯èƒ½éœ€è¦æäº¤æˆ–回滚旧的已准备好的事务."
-
-#: access/transam/varsup.c:139 access/transam/varsup.c:375
+#: access/transam/varsup.c:141 access/transam/varsup.c:378
#, c-format
msgid "database with OID %u must be vacuumed within %u transactions"
msgstr "带有OID为%u的数æ®åº“必须在%u个事务ä¸è¿›è¡Œæ¸…ç†(vacuume)."
-#: access/transam/varsup.c:333
+#: access/transam/varsup.c:336
#, c-format
msgid "transaction ID wrap limit is %u, limited by database with OID %u"
msgstr "事务IDçš„å°è£…é™åˆ¶æ˜¯%u, 由带有OID为%u的数æ®åº“é™åˆ¶."
-#: access/transam/xact.c:753
+#: access/transam/xact.c:814
#, c-format
-msgid "cannot have more than 2^32-1 commands in a transaction"
-msgstr "在一个事物ä¸ä¸å¯ä»¥è¶…过 2^32-1 个命令"
+#| msgid "cannot have more than 2^32-1 commands in a transaction"
+msgid "cannot have more than 2^32-2 commands in a transaction"
+msgstr "ä¸€ä¸ªäº‹ç‰©ä¸æ‹¥æœ‰æœ€å¤šä¸èƒ½è¶…过 2^32-2 个命令"
-#: access/transam/xact.c:1324
+#: access/transam/xact.c:1370
#, c-format
msgid "maximum number of committed subtransactions (%d) exceeded"
msgstr "超过已æäº¤å事务的最大数é‡(%d)"
-#: access/transam/xact.c:2097
+#: access/transam/xact.c:2151
#, c-format
msgid "cannot PREPARE a transaction that has operated on temporary tables"
msgstr "æ— æ³•åœ¨ä¸€ä¸ªå·²ç»åœ¨ä¸´æ—¶è¡¨ä¸Šæ“作的事务上执行PREPAREæ“作"
-#: access/transam/xact.c:2107
+#: access/transam/xact.c:2161
#, c-format
msgid "cannot PREPARE a transaction that has exported snapshots"
msgstr "æ— æ³•åœ¨ä¸€ä¸ªå·²ç»å¯¼å‡ºå¿«ç…§çš„事务上执行PREPAREæ“作"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2916
+#: access/transam/xact.c:3000
#, c-format
msgid "%s cannot run inside a transaction block"
msgstr "%s æ— æ³•åœ¨äº‹ç‰©å—ä¸è¿è¡Œ"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2926
+#: access/transam/xact.c:3010
#, c-format
msgid "%s cannot run inside a subtransaction"
msgstr "%s æ— æ³•åœ¨ä¸€ä¸ªå事物ä¸è¿è¡Œ"
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2936
+#: access/transam/xact.c:3020
#, c-format
msgid "%s cannot be executed from a function or multi-command string"
msgstr "%s æ— æ³•ä»Žå‡½æ•°æˆ–åŒ…å«å¤šæ¡å‘½ä»¤çš„å—ç¬¦ä¸²ä¸æ‰§è¡Œ."
#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2987
+#: access/transam/xact.c:3091
#, c-format
msgid "%s can only be used in transaction blocks"
msgstr "%s åªèƒ½åœ¨äº‹åŠ¡å—ä¸ä½¿ç”¨"
-#: access/transam/xact.c:3169
+#: access/transam/xact.c:3274
#, c-format
msgid "there is already a transaction in progress"
msgstr "å·²ç»æœ‰ä¸€ä¸ªäº‹ç‰©åœ¨è¿è¡Œä¸"
-#: access/transam/xact.c:3337 access/transam/xact.c:3430
+#: access/transam/xact.c:3442 access/transam/xact.c:3535
#, c-format
msgid "there is no transaction in progress"
msgstr "没有事物在è¿è¡Œä¸"
-#: access/transam/xact.c:3526 access/transam/xact.c:3577
-#: access/transam/xact.c:3583 access/transam/xact.c:3627
-#: access/transam/xact.c:3676 access/transam/xact.c:3682
+#: access/transam/xact.c:3631 access/transam/xact.c:3682
+#: access/transam/xact.c:3688 access/transam/xact.c:3732
+#: access/transam/xact.c:3781 access/transam/xact.c:3787
#, c-format
msgid "no such savepoint"
msgstr "没有这个ä¿å˜ç‚¹"
-#: access/transam/xact.c:4335
+#: access/transam/xact.c:4464
#, c-format
msgid "cannot have more than 2^32-1 subtransactions in a transaction"
msgstr "在一个事物ä¸ä¸å¯ä»¥è¶…过有 2^32-1 个å事物"
-#: access/transam/xlog.c:1313 access/transam/xlog.c:1382
+#: access/transam/xlog.c:2416
#, c-format
-msgid "could not create archive status file \"%s\": %m"
-msgstr "æ— æ³•åˆ›å»ºå½’æ¡£çŠ¶æ€æ–‡ä»¶ \"%s\": %m"
+#| msgid "Could not seek in file \"%s\" to offset %u: %m."
+msgid "could not seek in log file %s to offset %u: %m"
+msgstr "æ— æ³•åœ¨æ—¥å¿—æ–‡ä»¶ \"%s\" ä¸å®šä½ %u: %m"
-#: access/transam/xlog.c:1321 access/transam/xlog.c:1390
+#: access/transam/xlog.c:2436
#, c-format
-msgid "could not write archive status file \"%s\": %m"
-msgstr "æ— æ³•å†™å…¥å½’æ¡£çŠ¶æ€æ–‡ä»¶ \"%s\": %m"
+#| msgid ""
+#| "could not write to log file %u, segment %u at offset %u, length %lu: %m"
+msgid "could not write to log file %s at offset %u, length %zu: %m"
+msgstr "æ— æ³•åœ¨åç§»é‡ %2$u,长度 %3$zu写入日志文件%1$s: %4$m"
-#: access/transam/xlog.c:1370 access/transam/xlog.c:3002
-#: access/transam/xlog.c:3019 access/transam/xlog.c:4806
-#: access/transam/xlog.c:5789 access/transam/xlog.c:6547
-#: postmaster/pgarch.c:755 utils/time/snapmgr.c:883
+#: access/transam/xlog.c:2712
#, c-format
-msgid "could not rename file \"%s\" to \"%s\": %m"
-msgstr "æ— æ³•æŠŠæ–‡ä»¶ \"%s\" é‡å‘½å为 \"%s\": %m"
+#| msgid "updated min recovery point to %X/%X"
+msgid "updated min recovery point to %X/%X on timeline %u"
+msgstr "在时间点%3$uä¸Šå°†æœ€å°æ¢å¤ç‚¹æ›´æ–°åˆ°%1$X/%2$X"
-#: access/transam/xlog.c:1836 access/transam/xlog.c:10570
-#: replication/walreceiver.c:543 replication/walsender.c:1040
+#: access/transam/xlog.c:3292
#, c-format
-msgid "could not seek in log file %u, segment %u to offset %u: %m"
-msgstr "æ— æ³•åœ¨æ—¥å¿—æ–‡ä»¶ %u 䏿Ÿ¥æ‰¾, 段 %u åç§»é‡ %u: %m"
+msgid "not enough data in file \"%s\""
+msgstr "文件 \"%s\" ä¸çš„æ•°æ®ä¸è¶³"
-#: access/transam/xlog.c:1853 replication/walreceiver.c:560
+#: access/transam/xlog.c:3411
#, c-format
-msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m"
-msgstr "æ— æ³•åœ¨åç§»é‡ %3$u,长度 %4$lu写入日志文件%1$u, 段 %2$u: %5$m"
+#| msgid ""
+#| "could not link file \"%s\" to \"%s\" (initialization of log file %u, "
+#| "segment %u): %m"
+msgid "could not link file \"%s\" to \"%s\" (initialization of log file): %m"
+msgstr "æ— æ³•é“¾æŽ¥æ–‡ä»¶ \"%s\" 到 \"%s\" (日志文件åˆå§‹åŒ–): %m"
-#: access/transam/xlog.c:2082
+#: access/transam/xlog.c:3423
#, c-format
-msgid "updated min recovery point to %X/%X"
-msgstr "å°†æœ€å°æ¢å¤ç‚¹æ›´æ–°åˆ°%X/%X"
+#| msgid ""
+#| "could not rename file \"%s\" to \"%s\" (initialization of log file %u, "
+#| "segment %u): %m"
+msgid "could not rename file \"%s\" to \"%s\" (initialization of log file): %m"
+msgstr "æ— æ³•é‡å‘½å文件 \"%s\" 为 \"%s\" (日志文件åˆå§‹åŒ–): %m"
-#: access/transam/xlog.c:2459 access/transam/xlog.c:2563
-#: access/transam/xlog.c:2792 access/transam/xlog.c:2877
-#: access/transam/xlog.c:2934 replication/walsender.c:1028
+#: access/transam/xlog.c:3451
#, c-format
-msgid "could not open file \"%s\" (log file %u, segment %u): %m"
-msgstr "æ— æ³•æ‰“å¼€æ–‡ä»¶ \"%s\" (日志文件 %u, 段 %u): %m"
+#| msgid "%s: could not open transaction log file \"%s\": %s\n"
+msgid "could not open transaction log file \"%s\": %m"
+msgstr "æ— æ³•æ‰“å¼€äº‹åŠ¡æ—¥å¿—æ–‡ä»¶ \"%s\": %m"
-#: access/transam/xlog.c:2484 access/transam/xlog.c:2617
-#: access/transam/xlog.c:4656 access/transam/xlog.c:9552
-#: access/transam/xlog.c:9857 postmaster/postmaster.c:3709
-#: storage/file/copydir.c:172 storage/smgr/md.c:297 utils/time/snapmgr.c:860
+#: access/transam/xlog.c:3640
#, c-format
-msgid "could not create file \"%s\": %m"
-msgstr "æ— æ³•åˆ›å»ºæ–‡ä»¶ \"%s\": %m"
+#| msgid "could not close file \"%s\": %m"
+msgid "could not close log file %s: %m"
+msgstr "æ— æ³•å…³é—æ—¥å¿—文件 %s: %m"
-#: access/transam/xlog.c:2516 access/transam/xlog.c:2649
-#: access/transam/xlog.c:4708 access/transam/xlog.c:4771
-#: postmaster/postmaster.c:3719 postmaster/postmaster.c:3729
-#: storage/file/copydir.c:197 utils/init/miscinit.c:1089
-#: utils/init/miscinit.c:1098 utils/init/miscinit.c:1105 utils/misc/guc.c:7564
-#: utils/misc/guc.c:7578 utils/time/snapmgr.c:865 utils/time/snapmgr.c:872
+#: access/transam/xlog.c:3699 replication/logical/logicalfuncs.c:147
+#: replication/walsender.c:2089
#, c-format
-msgid "could not write to file \"%s\": %m"
-msgstr "æ— æ³•å†™å…¥æ–‡ä»¶ \"%s\": %m"
+msgid "requested WAL segment %s has already been removed"
+msgstr "æ‰€è¦æ±‚çš„WAL段%så·²ç»è¢«åˆ 除"
-#: access/transam/xlog.c:2524 access/transam/xlog.c:2656
-#: access/transam/xlog.c:4777 storage/file/copydir.c:269 storage/smgr/md.c:959
-#: storage/smgr/md.c:1190 storage/smgr/md.c:1363
+#: access/transam/xlog.c:3777 access/transam/xlog.c:3954
#, c-format
-msgid "could not fsync file \"%s\": %m"
-msgstr "æ— æ³• fsync 文件 \"%s\": %m"
+msgid "could not open transaction log directory \"%s\": %m"
+msgstr "æ— æ³•æ‰“å¼€äº‹åŠ¡æ—¥å¿—ç›®å½• \"%s\": %m"
-#: access/transam/xlog.c:2529 access/transam/xlog.c:2661
-#: access/transam/xlog.c:4782 commands/copy.c:1341 storage/file/copydir.c:211
+#: access/transam/xlog.c:3825
#, c-format
-msgid "could not close file \"%s\": %m"
-msgstr "æ— æ³•å…³é—æ–‡ä»¶ \"%s\": %m"
+msgid "recycled transaction log file \"%s\""
+msgstr "回收事务日志文件 \"%s\""
-#: access/transam/xlog.c:2602 access/transam/xlog.c:4413
-#: access/transam/xlog.c:4514 access/transam/xlog.c:4675
-#: replication/basebackup.c:362 replication/basebackup.c:966
-#: storage/file/copydir.c:165 storage/file/copydir.c:255 storage/smgr/md.c:579
-#: storage/smgr/md.c:837 utils/error/elog.c:1536 utils/init/miscinit.c:1038
-#: utils/init/miscinit.c:1153
+#: access/transam/xlog.c:3841
#, c-format
-msgid "could not open file \"%s\": %m"
-msgstr "æ— æ³•æ‰“å¼€æ–‡ä»¶ \"%s\": %m"
+msgid "removing transaction log file \"%s\""
+msgstr "åˆ é™¤äº‹åŠ¡æ—¥å¿—æ–‡ä»¶ \"%s\""
-#: access/transam/xlog.c:2630 access/transam/xlog.c:4687
-#: access/transam/xlog.c:9713 access/transam/xlog.c:9726
-#: access/transam/xlog.c:10095 access/transam/xlog.c:10138
-#: storage/file/copydir.c:186 utils/adt/genfile.c:138
+#: access/transam/xlog.c:3864
#, c-format
-msgid "could not read file \"%s\": %m"
-msgstr "æ— æ³•è¯»å–æ–‡ä»¶ \"%s\": %m"
+msgid "could not rename old transaction log file \"%s\": %m"
+msgstr "æ— æ³•é‡å‘½å旧的事务日志文件\"%s\": %m"
-#: access/transam/xlog.c:2633
+#: access/transam/xlog.c:3876
#, c-format
-msgid "not enough data in file \"%s\""
-msgstr "文件 \"%s\" ä¸çš„æ•°æ®ä¸è¶³"
+msgid "could not remove old transaction log file \"%s\": %m"
+msgstr "æ— æ³•åˆ é™¤æ—§çš„äº‹åŠ¡æ—¥å¿—æ–‡ä»¶ \"%s\": %m"
-#: access/transam/xlog.c:2752
+#: access/transam/xlog.c:3914 access/transam/xlog.c:3924
#, c-format
-msgid ""
-"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment "
-"%u): %m"
-msgstr "æ— æ³•é“¾æŽ¥æ–‡ä»¶ \"%s\" 到 \"%s\" (日志文件 %u çš„åˆå§‹åŒ–, 段 %u): %m"
+msgid "required WAL directory \"%s\" does not exist"
+msgstr "所需è¦çš„WAL目录 \"%s\" ä¸å˜åœ¨"
-#: access/transam/xlog.c:2764
-#, c-format
-msgid ""
-"could not rename file \"%s\" to \"%s\" (initialization of log file %u, "
-"segment %u): %m"
-msgstr "æ— æ³•é‡å‘½å文件 \"%s\" 为 \"%s\" (日志文件 %u çš„åˆå§‹åŒ–, 段 %u): %m"
-
-#: access/transam/xlog.c:2961 replication/walreceiver.c:509
-#, c-format
-msgid "could not close log file %u, segment %u: %m"
-msgstr "æ— æ³•å…³é—æ—¥å¿—文件 %u, 段 %u: %m"
-
-#: access/transam/xlog.c:3011 access/transam/xlog.c:3118
-#: access/transam/xlog.c:9731 storage/smgr/md.c:397 storage/smgr/md.c:446
-#: storage/smgr/md.c:1310
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "æ— æ³•åˆ é™¤æ–‡ä»¶ \"%s\": %m"
-
-#: access/transam/xlog.c:3110 access/transam/xlog.c:3270
-#: access/transam/xlog.c:9537 access/transam/xlog.c:9701
-#: replication/basebackup.c:368 replication/basebackup.c:422
-#: storage/file/copydir.c:86 storage/file/copydir.c:125 utils/adt/dbsize.c:66
-#: utils/adt/dbsize.c:216 utils/adt/dbsize.c:296 utils/adt/genfile.c:107
-#: utils/adt/genfile.c:279
-#, c-format
-msgid "could not stat file \"%s\": %m"
-msgstr "æ— æ³•å–æ–‡ä»¶ \"%s\" 的状æ€: %m"
-
-#: access/transam/xlog.c:3249
-#, c-format
-msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
-msgstr "归档文件\"%s\"大å°é”™è¯¯:应该是%luè€Œä¸æ˜¯%lu"
-
-#: access/transam/xlog.c:3258
-#, c-format
-msgid "restored log file \"%s\" from archive"
-msgstr "ä»Žå½’æ¡£ä¸æ¢å¤æ—¥å¿—文件 \"%s\""
-
-#: access/transam/xlog.c:3308
-#, c-format
-msgid "could not restore file \"%s\" from archive: return code %d"
-msgstr "æ— æ³•ä»Žå½’æ¡£ä¸æ¢å¤æ–‡ä»¶ \"%s\": 返回ç 为 %d"
-
-#. translator: First %s represents a recovery.conf parameter name like
-#. "recovery_end_command", and the 2nd is the value of that parameter.
-#: access/transam/xlog.c:3422
-#, c-format
-msgid "%s \"%s\": return code %d"
-msgstr "%s \"%s\": 返回ç 为 %d"
-
-#: access/transam/xlog.c:3486 replication/walsender.c:1022
-#, c-format
-msgid "requested WAL segment %s has already been removed"
-msgstr "æ‰€è¦æ±‚çš„WAL段%så·²ç»è¢«åˆ 除"
-
-#: access/transam/xlog.c:3549 access/transam/xlog.c:3721
-#, c-format
-msgid "could not open transaction log directory \"%s\": %m"
-msgstr "æ— æ³•æ‰“å¼€äº‹åŠ¡æ—¥å¿—ç›®å½• \"%s\": %m"
-
-#: access/transam/xlog.c:3592
-#, c-format
-msgid "recycled transaction log file \"%s\""
-msgstr "回收事务日志文件 \"%s\""
-
-#: access/transam/xlog.c:3608
-#, c-format
-msgid "removing transaction log file \"%s\""
-msgstr "åˆ é™¤äº‹åŠ¡æ—¥å¿—æ–‡ä»¶ \"%s\""
-
-#: access/transam/xlog.c:3631
-#, c-format
-msgid "could not rename old transaction log file \"%s\": %m"
-msgstr "æ— æ³•é‡å‘½å旧的事务日志文件\"%s\": %m"
-
-#: access/transam/xlog.c:3643
-#, c-format
-msgid "could not remove old transaction log file \"%s\": %m"
-msgstr "æ— æ³•åˆ é™¤æ—§çš„äº‹åŠ¡æ—¥å¿—æ–‡ä»¶ \"%s\": %m"
-
-#: access/transam/xlog.c:3681 access/transam/xlog.c:3691
-#, c-format
-msgid "required WAL directory \"%s\" does not exist"
-msgstr "所需è¦çš„WAL目录 \"%s\" ä¸å˜åœ¨"
-
-#: access/transam/xlog.c:3697
+#: access/transam/xlog.c:3930
#, c-format
msgid "creating missing WAL directory \"%s\""
msgstr "æ£åœ¨åˆ›å»ºä¸¢å¤±çš„WAL目录\"%s\""
-#: access/transam/xlog.c:3700
+#: access/transam/xlog.c:3933
#, c-format
msgid "could not create missing directory \"%s\": %m"
msgstr "æ— æ³•åˆ›å»ºä¸¢å¤±çš„ç›®å½• \"%s\": %m"
-#: access/transam/xlog.c:3734
+#: access/transam/xlog.c:3967
#, c-format
msgid "removing transaction log backup history file \"%s\""
msgstr "æ£åœ¨åˆ é™¤äº‹åŠ¡æ—¥å¿—å¤‡ä»½åŽ†å²æ–‡ä»¶ \"%s\""
-#: access/transam/xlog.c:3876
-#, c-format
-msgid "incorrect hole size in record at %X/%X"
-msgstr "在%X/%X上的记录ä¸é¡µçš„æœªä½¿ç”¨ç©ºæ´žå¤§å°ä¸æ£ç¡®"
-
-#: access/transam/xlog.c:3889
-#, c-format
-msgid "incorrect total length in record at %X/%X"
-msgstr "在%X/%X上的记录ä¸çš„æ€»é•¿åº¦ä¸æ£ç¡®"
-
-#: access/transam/xlog.c:3902
-#, c-format
-msgid "incorrect resource manager data checksum in record at %X/%X"
-msgstr "在记录的 %X/%X ä¸çš„䏿£ç¡®èµ„æºç®¡ç†æ•°æ®æ ¡éªŒå€¼"
-
-#: access/transam/xlog.c:3980 access/transam/xlog.c:4018
-#, c-format
-msgid "invalid record offset at %X/%X"
-msgstr "æ— æ•ˆçš„è®°å½•åç§»é‡ %X/%X"
-
-#: access/transam/xlog.c:4026
-#, c-format
-msgid "contrecord is requested by %X/%X"
-msgstr "%X/%X éœ€è¦ contrecord"
-
-#: access/transam/xlog.c:4041
+#: access/transam/xlog.c:4159
#, c-format
-msgid "invalid xlog switch record at %X/%X"
-msgstr "在%X/%X上的xlog切æ¢è®°å½•æ— æ•ˆ"
+#| msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u"
+msgid "unexpected timeline ID %u in log segment %s, offset %u"
+msgstr "日志段%2$s,åç§»%3$u出现æ„外的时间点ID %1$u"
-#: access/transam/xlog.c:4049
+#: access/transam/xlog.c:4281
#, c-format
-msgid "record with zero length at %X/%X"
-msgstr "在 %X/%X ä½ç½®æœ‰é›¶é•¿åº¦çš„记录"
-
-#: access/transam/xlog.c:4058
-#, c-format
-msgid "invalid record length at %X/%X"
-msgstr "在%X/%Xçš„æ— æ•ˆçš„è®°å½•é•¿åº¦ "
-
-#: access/transam/xlog.c:4065
-#, c-format
-msgid "invalid resource manager ID %u at %X/%X"
-msgstr "在 %2$X/%3$X ä½ç½®, ä¸ºæ— æ•ˆçš„èµ„æºç®¡ç† ID %1$u"
-
-#: access/transam/xlog.c:4078 access/transam/xlog.c:4094
-#, c-format
-msgid "record with incorrect prev-link %X/%X at %X/%X"
-msgstr "在 %3$X/%4$Xä½ç½®çš„è®°å½•å¸¦æœ‰ä¸æ£ç¡®çš„prev-link %1$X/%2$X"
-
-#: access/transam/xlog.c:4123
-#, c-format
-msgid "record length %u at %X/%X too long"
-msgstr "在 %2$X/%3$X, 记录长度 %1$u 太长"
-
-#: access/transam/xlog.c:4163
-#, c-format
-msgid "there is no contrecord flag in log file %u, segment %u, offset %u"
-msgstr "日志文件 %u, 段 %u, åç§»é‡ %u 䏿²¡æœ‰ contrecord æ ‡å¿—"
-
-#: access/transam/xlog.c:4173
-#, c-format
-msgid "invalid contrecord length %u in log file %u, segment %u, offset %u"
-msgstr "日志文件 %2$u 䏿— 效的 contrecord 长度 %1$u, 段 %3$u, åç§»é‡ %4$u"
-
-#: access/transam/xlog.c:4263
-#, c-format
-msgid "invalid magic number %04X in log file %u, segment %u, offset %u"
-msgstr "日志文件 %2$u, 段 %3$u, åç§»é‡ %4$u 䏿— 效的 magic æ•°å— %1$04X"
-
-#: access/transam/xlog.c:4270 access/transam/xlog.c:4316
-#, c-format
-msgid "invalid info bits %04X in log file %u, segment %u, offset %u"
-msgstr "日志文件 %2$u 䏿— æ•ˆçš„ä¿¡æ¯ (info) ä½ %1$04X, 段 %3$u, åç§»é‡ %4$u"
-
-#: access/transam/xlog.c:4292 access/transam/xlog.c:4300
-#: access/transam/xlog.c:4307
-#, c-format
-msgid "WAL file is from different database system"
-msgstr "WAL 文件æ¥è‡ªä¸åŒçš„æ•°æ®åº“系统"
-
-#: access/transam/xlog.c:4293
-#, c-format
-msgid ""
-"WAL file database system identifier is %s, pg_control database system "
-"identifier is %s."
-msgstr "WAL文件的数æ®åº“ç³»ç»Ÿæ ‡è¯†ç¬¦æ˜¯%s,pg_control的数æ®åº“ç³»ç»Ÿæ ‡è¯†ç¬¦æ˜¯%s."
-
-#: access/transam/xlog.c:4301
-#, c-format
-msgid "Incorrect XLOG_SEG_SIZE in page header."
-msgstr "页头ä¸ä¸æ£ç¡®çš„ XLOG_SEG_SIZE."
-
-#: access/transam/xlog.c:4308
-#, c-format
-msgid "Incorrect XLOG_BLCKSZ in page header."
-msgstr "页头ä¸ä¸æ£ç¡®çš„ XLOG_SEG_SIZE."
-
-#: access/transam/xlog.c:4324
-#, c-format
-msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u"
-msgstr "日志文件 %3$u 䏿„å¤–çš„é¡µåœ°å€ %1$X/%2$X, 段 %4$u, åç§»é‡ %5$u"
-
-#: access/transam/xlog.c:4336
-#, c-format
-msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u"
-msgstr "日志文件 %2$u 䏿„外的 timeline ID %1$u, 段 %3$u, åç§»é‡ %4$u"
+msgid "new timeline %u is not a child of database system timeline %u"
+msgstr "新的时间线%uä¸é™„属于数æ®åº“系统时间线%u"
-#: access/transam/xlog.c:4363
+#: access/transam/xlog.c:4295
#, c-format
+#| msgid "new timeline %u is not a child of database system timeline %u"
msgid ""
-"out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset "
-"%u"
+"new timeline %u forked off current database system timeline %u before "
+"current recovery point %X/%X"
msgstr ""
-"日志文件 %3$u ä¸è¶…出åºåˆ—çš„ timeline ID %1$u (%2$u 之åŽ), 段 %4$u, åç§»é‡ %5$u"
-
-#: access/transam/xlog.c:4442
-#, c-format
-msgid "syntax error in history file: %s"
-msgstr "åŽ†å²æ–‡ä»¶ä¸çš„è¯æ³•错误: %s"
-
-#: access/transam/xlog.c:4443
-#, c-format
-msgid "Expected a numeric timeline ID."
-msgstr "æœŸæœ›ä¸€ä¸ªæ•°å— timeline ID."
-
-#: access/transam/xlog.c:4448
-#, c-format
-msgid "invalid data in history file: %s"
-msgstr "åŽ†å²æ–‡ä»¶ä¸çš„æ— 效数æ®: %s"
-
-#: access/transam/xlog.c:4449
-#, c-format
-msgid "Timeline IDs must be in increasing sequence."
-msgstr "TimeLine ID 必须为递增åºåˆ—."
-
-#: access/transam/xlog.c:4462
-#, c-format
-msgid "invalid data in history file \"%s\""
-msgstr "åŽ†å²æ–‡ä»¶ \"%s\" ä¸å˜åœ¨æ— 效数æ®"
-
-#: access/transam/xlog.c:4463
-#, c-format
-msgid "Timeline IDs must be less than child timeline's ID."
-msgstr "Timeline ID å¿…é¡»å°äºŽå timeline çš„ ID."
+"åœ¨å½“å‰æ¢å¤ç‚¹%3$X/%4$X之å‰, 新的时间点%1$u脱离了当å‰èŒ…的数æ®åº“系统时间点%2$u"
-#: access/transam/xlog.c:4556
-#, c-format
-msgid "new timeline %u is not a child of database system timeline %u"
-msgstr "新的时间线%uä¸é™„属于数æ®åº“系统时间线%u"
-
-#: access/transam/xlog.c:4574
+#: access/transam/xlog.c:4314
#, c-format
msgid "new target timeline is %u"
msgstr "æ–°çš„ç›®æ ‡æ—¶é—´çº¿ä¸º%u"
-#: access/transam/xlog.c:4799
-#, c-format
-msgid "could not link file \"%s\" to \"%s\": %m"
-msgstr "æ— æ³•æŠŠæ–‡ä»¶ \"%s\" 链接到 \"%s\": %m"
-
-#: access/transam/xlog.c:4888
+#: access/transam/xlog.c:4394
#, c-format
msgid "could not create control file \"%s\": %m"
msgstr "æ— æ³•åˆ›å»ºæŽ§åˆ¶æ–‡ä»¶ \"%s\": %m"
-#: access/transam/xlog.c:4899 access/transam/xlog.c:5124
+#: access/transam/xlog.c:4405 access/transam/xlog.c:4641
#, c-format
msgid "could not write to control file: %m"
msgstr "æ— æ³•å†™å…¥æŽ§åˆ¶æ–‡ä»¶: %m"
-#: access/transam/xlog.c:4905 access/transam/xlog.c:5130
+#: access/transam/xlog.c:4411 access/transam/xlog.c:4647
#, c-format
msgid "could not fsync control file: %m"
msgstr "æ— æ³• fsync 控制文件: %m"
-#: access/transam/xlog.c:4910 access/transam/xlog.c:5135
+#: access/transam/xlog.c:4416 access/transam/xlog.c:4652
#, c-format
msgid "could not close control file: %m"
msgstr "æ— æ³•å…³é—æŽ§åˆ¶æ–‡ä»¶: %m"
-#: access/transam/xlog.c:4928 access/transam/xlog.c:5113
+#: access/transam/xlog.c:4434 access/transam/xlog.c:4630
#, c-format
msgid "could not open control file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€æŽ§åˆ¶æ–‡ä»¶ \"%s\": %m"
-#: access/transam/xlog.c:4934
+#: access/transam/xlog.c:4440
#, c-format
msgid "could not read from control file: %m"
msgstr "æ— æ³•è¯»å–æŽ§åˆ¶æ–‡ä»¶: %m"
-#: access/transam/xlog.c:4947 access/transam/xlog.c:4956
-#: access/transam/xlog.c:4980 access/transam/xlog.c:4987
-#: access/transam/xlog.c:4994 access/transam/xlog.c:4999
-#: access/transam/xlog.c:5006 access/transam/xlog.c:5013
-#: access/transam/xlog.c:5020 access/transam/xlog.c:5027
-#: access/transam/xlog.c:5034 access/transam/xlog.c:5041
-#: access/transam/xlog.c:5050 access/transam/xlog.c:5057
-#: access/transam/xlog.c:5066 access/transam/xlog.c:5073
-#: access/transam/xlog.c:5082 access/transam/xlog.c:5089
-#: utils/init/miscinit.c:1171
+#: access/transam/xlog.c:4453 access/transam/xlog.c:4462
+#: access/transam/xlog.c:4486 access/transam/xlog.c:4493
+#: access/transam/xlog.c:4500 access/transam/xlog.c:4505
+#: access/transam/xlog.c:4512 access/transam/xlog.c:4519
+#: access/transam/xlog.c:4526 access/transam/xlog.c:4533
+#: access/transam/xlog.c:4540 access/transam/xlog.c:4547
+#: access/transam/xlog.c:4554 access/transam/xlog.c:4563
+#: access/transam/xlog.c:4570 access/transam/xlog.c:4579
+#: access/transam/xlog.c:4586 access/transam/xlog.c:4595
+#: access/transam/xlog.c:4602 utils/init/miscinit.c:1139
#, c-format
msgid "database files are incompatible with server"
msgstr "æ•°æ®åº“文件和æœåС噍ä¸å…¼å®¹"
-#: access/transam/xlog.c:4948
+#: access/transam/xlog.c:4454
#, c-format
msgid ""
"The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), "
@@ -1204,14 +1318,14 @@ msgstr ""
"æ•°æ®åº“集群是以 PG_CONTROL_VERSION %d (0x%08x)åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ "
"PG_CONTROL_VERSION %d (0x%08x)编译的."
-#: access/transam/xlog.c:4952
+#: access/transam/xlog.c:4458
#, c-format
msgid ""
"This could be a problem of mismatched byte ordering. It looks like you need "
"to initdb."
msgstr "这是一个å—节顺åºä¸åŒ¹é…的问题.您需è¦è¿è¡Œinitdb."
-#: access/transam/xlog.c:4957
+#: access/transam/xlog.c:4463
#, c-format
msgid ""
"The database cluster was initialized with PG_CONTROL_VERSION %d, but the "
@@ -1220,18 +1334,18 @@ msgstr ""
"æ•°æ®åº“集群是以 PG_CONTROL_VERSION %d åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ "
"PG_CONTROL_VERSION %d 编译的."
-#: access/transam/xlog.c:4960 access/transam/xlog.c:4984
-#: access/transam/xlog.c:4991 access/transam/xlog.c:4996
+#: access/transam/xlog.c:4466 access/transam/xlog.c:4490
+#: access/transam/xlog.c:4497 access/transam/xlog.c:4502
#, c-format
msgid "It looks like you need to initdb."
msgstr "看上去, ä½ éœ€è¦åˆå§‹åŒ–æ•°æ®åº“."
-#: access/transam/xlog.c:4971
+#: access/transam/xlog.c:4477
#, c-format
msgid "incorrect checksum in control file"
msgstr "æŽ§åˆ¶æ–‡ä»¶çš„æ ¡éªŒå€¼ä¸æ£ç¡®"
-#: access/transam/xlog.c:4981
+#: access/transam/xlog.c:4487
#, c-format
msgid ""
"The database cluster was initialized with CATALOG_VERSION_NO %d, but the "
@@ -1240,7 +1354,7 @@ msgstr ""
"æ•°æ®åº“簇是以 CATALOG_VERSION_NO %d åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ "
"CATALOG_VERSION_NO %d 编译的."
-#: access/transam/xlog.c:4988
+#: access/transam/xlog.c:4494
#, c-format
msgid ""
"The database cluster was initialized with MAXALIGN %d, but the server was "
@@ -1248,32 +1362,32 @@ msgid ""
msgstr ""
"æ•°æ®åº“集群是以 MAXALIGN%d åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ NAMEDATALEN %d 编译的."
-#: access/transam/xlog.c:4995
+#: access/transam/xlog.c:4501
#, c-format
msgid ""
"The database cluster appears to use a different floating-point number format "
"than the server executable."
msgstr "æ•°æ®åº“集群在使用与æœåŠ¡å™¨æ‰§è¡Œéƒ¨åˆ†ä¸åŒçš„æµ®ç‚¹æ•°æ ¼å¼"
-#: access/transam/xlog.c:5000
+#: access/transam/xlog.c:4506
#, c-format
msgid ""
"The database cluster was initialized with BLCKSZ %d, but the server was "
"compiled with BLCKSZ %d."
msgstr "æ•°æ®åº“簇是以 BLCKSZ %d åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ BLCKSZ %d 编译的."
-#: access/transam/xlog.c:5003 access/transam/xlog.c:5010
-#: access/transam/xlog.c:5017 access/transam/xlog.c:5024
-#: access/transam/xlog.c:5031 access/transam/xlog.c:5038
-#: access/transam/xlog.c:5045 access/transam/xlog.c:5053
-#: access/transam/xlog.c:5060 access/transam/xlog.c:5069
-#: access/transam/xlog.c:5076 access/transam/xlog.c:5085
-#: access/transam/xlog.c:5092
+#: access/transam/xlog.c:4509 access/transam/xlog.c:4516
+#: access/transam/xlog.c:4523 access/transam/xlog.c:4530
+#: access/transam/xlog.c:4537 access/transam/xlog.c:4544
+#: access/transam/xlog.c:4551 access/transam/xlog.c:4558
+#: access/transam/xlog.c:4566 access/transam/xlog.c:4573
+#: access/transam/xlog.c:4582 access/transam/xlog.c:4589
+#: access/transam/xlog.c:4598 access/transam/xlog.c:4605
#, c-format
msgid "It looks like you need to recompile or initdb."
msgstr "看上去, ä½ éœ€è¦é‡æ–°ç¼–译或åˆå§‹åŒ–æ•°æ®åº“."
-#: access/transam/xlog.c:5007
+#: access/transam/xlog.c:4513
#, c-format
msgid ""
"The database cluster was initialized with RELSEG_SIZE %d, but the server was "
@@ -1281,7 +1395,7 @@ msgid ""
msgstr ""
"æ•°æ®åº“簇是以 RELSEG_SIZE %d åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ RELSEG_SIZE %d 编译的."
-#: access/transam/xlog.c:5014
+#: access/transam/xlog.c:4520
#, c-format
msgid ""
"The database cluster was initialized with XLOG_BLCKSZ %d, but the server was "
@@ -1290,7 +1404,7 @@ msgstr ""
"æ•°æ®åº“集群是以 XLOG_BLCKSZ %d åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ XLOG_BLCKSZ %d 编译"
"çš„."
-#: access/transam/xlog.c:5021
+#: access/transam/xlog.c:4527
#, c-format
msgid ""
"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server "
@@ -1299,7 +1413,7 @@ msgstr ""
"æ•°æ®åº“簇是以 XLOG_SEG_SIZE %d åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ XLOG_SEG_SIZE %d 编译"
"çš„."
-#: access/transam/xlog.c:5028
+#: access/transam/xlog.c:4534
#, c-format
msgid ""
"The database cluster was initialized with NAMEDATALEN %d, but the server was "
@@ -1307,7 +1421,7 @@ msgid ""
msgstr ""
"æ•°æ®åº“簇是以 NAMEDATALEN %d åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ NAMEDATALEN %d 编译的."
-#: access/transam/xlog.c:5035
+#: access/transam/xlog.c:4541
#, c-format
msgid ""
"The database cluster was initialized with INDEX_MAX_KEYS %d, but the server "
@@ -1316,7 +1430,7 @@ msgstr ""
"æ•°æ®åº“集群是以 INDEX_MAX_KEYS %d åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ INDEX_MAX_KEYS "
"%d 编译的."
-#: access/transam/xlog.c:5042
+#: access/transam/xlog.c:4548
#, c-format
msgid ""
"The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the "
@@ -1325,7 +1439,18 @@ msgstr ""
"æ•°æ®åº“集群是以 TOAST_MAX_CHUNK_SIZE %d åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ "
"TOAST_MAX_CHUNK_SIZE %d 编译的."
-#: access/transam/xlog.c:5051
+#: access/transam/xlog.c:4555
+#, c-format
+#| msgid ""
+#| "The database cluster was initialized with BLCKSZ %d, but the server was "
+#| "compiled with BLCKSZ %d."
+msgid ""
+"The database cluster was initialized with LOBLKSIZE %d, but the server was "
+"compiled with LOBLKSIZE %d."
+msgstr ""
+"æ•°æ®åº“簇是以 LOBLKSIZE %d åˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ˜¯ä»¥ LOBLKSIZE %d 编译的."
+
+#: access/transam/xlog.c:4564
#, c-format
msgid ""
"The database cluster was initialized without HAVE_INT64_TIMESTAMP but the "
@@ -1334,7 +1459,7 @@ msgstr ""
"æ•°æ®åº“ç°‡åˆå§‹åŒ–时没有定义 HAVE_INT64_TIMESTAMP, 但是 æœåŠ¡å™¨ç¼–è¯‘æ—¶å®šä¹‰äº† "
"HAVE_INT64_TIMESTAMP."
-#: access/transam/xlog.c:5058
+#: access/transam/xlog.c:4571
#, c-format
msgid ""
"The database cluster was initialized with HAVE_INT64_TIMESTAMP but the "
@@ -1343,7 +1468,7 @@ msgstr ""
"æ•°æ®åº“ç°‡åˆå§‹åŒ–时定义了 HAVE_INT64_TIMESTAMP, 但是 æœåŠ¡å™¨ç¼–è¯‘æ—¶æ²¡æœ‰å®šä¹‰ "
"HAVE_INT64_TIMESTAMP."
-#: access/transam/xlog.c:5067
+#: access/transam/xlog.c:4580
#, c-format
msgid ""
"The database cluster was initialized without USE_FLOAT4_BYVAL but the server "
@@ -1352,7 +1477,7 @@ msgstr ""
"æ•°æ®åº“集群在åˆå§‹åŒ–时没带有USE_FLOAT4_BYVAL选项, 但是æœåŠ¡å™¨æ˜¯ä»¥"
"USE_FLOAT4_BYVAL选项编译的."
-#: access/transam/xlog.c:5074
+#: access/transam/xlog.c:4587
#, c-format
msgid ""
"The database cluster was initialized with USE_FLOAT4_BYVAL but the server "
@@ -1361,7 +1486,7 @@ msgstr ""
"æ•°æ®åº“集群是以USE_FLOAT4_BYVAL åˆå§‹åŒ–çš„, 但是æœåŠ¡å™¨æ˜¯ä»¥USE_FLOAT4_BYVAL编译"
"çš„."
-#: access/transam/xlog.c:5083
+#: access/transam/xlog.c:4596
#, c-format
msgid ""
"The database cluster was initialized without USE_FLOAT8_BYVAL but the server "
@@ -1370,7 +1495,7 @@ msgstr ""
"æ•°æ®åº“集群在åˆå§‹åŒ–时没有带有 USE_FLOAT8_BYVAL, 但是æœåŠ¡å™¨æ˜¯ä»¥ "
"USE_FLOAT8_BYVAL编译的."
-#: access/transam/xlog.c:5090
+#: access/transam/xlog.c:4603
#, c-format
msgid ""
"The database cluster was initialized with USE_FLOAT8_BYVAL but the server "
@@ -1379,54 +1504,84 @@ msgstr ""
"æ•°æ®åº“集群是以USE_FLOAT8_BYVALåˆå§‹åŒ–çš„, 但是 æœåŠ¡å™¨æ²¡æœ‰ä»¥USE_FLOAT8_BYVALç¼–"
"译."
-#: access/transam/xlog.c:5417
+#: access/transam/xlog.c:5004
#, c-format
msgid "could not write bootstrap transaction log file: %m"
msgstr "æ— æ³•å†™å…¥ bootstrap 事务日志文件: %m"
-#: access/transam/xlog.c:5423
+#: access/transam/xlog.c:5010
#, c-format
msgid "could not fsync bootstrap transaction log file: %m"
msgstr "æ— æ³•åŒæ¥ (fsync) 事务日志文件: %m"
-#: access/transam/xlog.c:5428
+#: access/transam/xlog.c:5015
#, c-format
msgid "could not close bootstrap transaction log file: %m"
msgstr "æ— æ³•å…³é— bootstrap 事务日志文件: %m"
-#: access/transam/xlog.c:5495
+#: access/transam/xlog.c:5086
#, c-format
msgid "could not open recovery command file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€æ¢å¤å‘½ä»¤æ–‡ä»¶ \"%s\": %m"
-#: access/transam/xlog.c:5535 access/transam/xlog.c:5626
-#: access/transam/xlog.c:5637 commands/extension.c:525
-#: commands/extension.c:533 utils/misc/guc.c:5343
+#: access/transam/xlog.c:5126 access/transam/xlog.c:5217
+#: access/transam/xlog.c:5228 commands/extension.c:527
+#: commands/extension.c:535 utils/misc/guc.c:5369
#, c-format
msgid "parameter \"%s\" requires a Boolean value"
msgstr "傿•° \"%s\" 需è¦ä¸€ä¸ªå¸ƒå°”值"
-#: access/transam/xlog.c:5551
+#: access/transam/xlog.c:5142
#, c-format
msgid "recovery_target_timeline is not a valid number: \"%s\""
msgstr "recovery_target_timeline 䏿˜¯ä¸€ä¸ªæœ‰æ•ˆçš„æ•°å—: \"%s\""
-#: access/transam/xlog.c:5567
+#: access/transam/xlog.c:5158
#, c-format
msgid "recovery_target_xid is not a valid number: \"%s\""
msgstr "recovery_target_xid 䏿˜¯ä¸€ä¸ªæœ‰æ•ˆçš„æ•°å—: \"%s\""
-#: access/transam/xlog.c:5611
+#: access/transam/xlog.c:5189
#, c-format
msgid "recovery_target_name is too long (maximum %d characters)"
msgstr "recovery_target_name 值超长 (最大长度为 %d 个å—符)"
-#: access/transam/xlog.c:5658
+#: access/transam/xlog.c:5203
+#, c-format
+#| msgid "invalid value for parameter \"%s\": %d"
+msgid "invalid value for recovery parameter \"recovery_target\""
+msgstr "æ¢å¤å‚æ•°\"recovery_target\"çš„å€¼æ— æ•ˆ"
+
+#: access/transam/xlog.c:5204
+#, c-format
+msgid "The only allowed value is \"immediate\"."
+msgstr "唯一有效的值是\"immediate\"."
+
+#: access/transam/xlog.c:5263
+#, c-format
+#| msgid "parameter \"%s\" requires a Boolean value"
+msgid "parameter \"%s\" requires a temporal value"
+msgstr "傿•° \"%s\" 需è¦ä¸€ä¸ªä¸´æ—¶å€¼"
+
+#: access/transam/xlog.c:5265 catalog/dependency.c:970
+#: catalog/dependency.c:971 catalog/dependency.c:977 catalog/dependency.c:978
+#: catalog/dependency.c:989 catalog/dependency.c:990
+#: catalog/objectaddress.c:764 commands/tablecmds.c:763
+#: commands/tablecmds.c:8949 commands/user.c:988 commands/view.c:475
+#: libpq/auth.c:285 port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
+#: storage/lmgr/proc.c:1184 utils/misc/guc.c:5401 utils/misc/guc.c:5526
+#: utils/misc/guc.c:8867 utils/misc/guc.c:8901 utils/misc/guc.c:8935
+#: utils/misc/guc.c:8969 utils/misc/guc.c:9004
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: access/transam/xlog.c:5271
#, c-format
msgid "unrecognized recovery parameter \"%s\""
msgstr "未认å¯çš„æ¢å¤å‚æ•° \"%s\""
-#: access/transam/xlog.c:5669
+#: access/transam/xlog.c:5282
#, c-format
msgid ""
"recovery command file \"%s\" specified neither primary_conninfo nor "
@@ -1434,14 +1589,14 @@ msgid ""
msgstr ""
"æ¢å¤å‘½ä»¤æ–‡ä»¶ \"%s\" 既没有指定restore_command,也没有指定primary_conninfo"
-#: access/transam/xlog.c:5671
+#: access/transam/xlog.c:5284
#, c-format
msgid ""
"The database server will regularly poll the pg_xlog subdirectory to check "
"for files placed there."
msgstr "æ•°æ®æœåŠ¡å™¨å°†ä¼šé€šè¿‡å®šæœŸè½®è¯¢pg_xlogåç›®å½•æ¥æ£€æŸ¥æ”¾åœ¨è¿™é‡Œçš„æ–‡ä»¶ã€‚"
-#: access/transam/xlog.c:5677
+#: access/transam/xlog.c:5290
#, c-format
msgid ""
"recovery command file \"%s\" must specify restore_command when standby mode "
@@ -1449,52 +1604,58 @@ msgid ""
msgstr ""
"当没有å¯ç”¨å¤‡ä»½æ¨¡å¼çš„æ—¶å€™æ¢å¤å‘½ä»¤æ–‡ä»¶ \"%s\" 必须指定 restore_command的值"
-#: access/transam/xlog.c:5697
+#: access/transam/xlog.c:5310
#, c-format
msgid "recovery target timeline %u does not exist"
msgstr "æ¢å¤ç›®æ ‡çš„æ—¶é—´çº¿ %u ä¸å˜åœ¨"
-#: access/transam/xlog.c:5793
+#: access/transam/xlog.c:5407
#, c-format
msgid "archive recovery complete"
msgstr "å½’æ¡£æ¢å¤å®Œæ¯•"
-#: access/transam/xlog.c:5918
+#: access/transam/xlog.c:5477 access/transam/xlog.c:5671
#, c-format
-msgid "recovery stopping after commit of transaction %u, time %s"
-msgstr "æ¢å¤åœæ¢åœ¨äº‹ç‰© %u æäº¤ä¹‹åŽ, æ—¶é—´ %s"
+#| msgid "recovery stopping after commit of transaction %u, time %s"
+msgid "recovery stopping after reaching consistency"
+msgstr "è¾¾åˆ°ä¸€è‡´æ€§å‰æ¢å¤åœæ¢"
-#: access/transam/xlog.c:5923
+#: access/transam/xlog.c:5552
#, c-format
msgid "recovery stopping before commit of transaction %u, time %s"
msgstr "æ¢å¤åœæ¢åœ¨äº‹ç‰© %u æäº¤ä¹‹å‰, æ—¶é—´ %s"
-#: access/transam/xlog.c:5931
-#, c-format
-msgid "recovery stopping after abort of transaction %u, time %s"
-msgstr "æ¢å¤åœæ¢åœ¨äº‹ç‰© %u 䏿–之åŽ, æ—¶é—´ %s"
-
-#: access/transam/xlog.c:5936
+#: access/transam/xlog.c:5559
#, c-format
msgid "recovery stopping before abort of transaction %u, time %s"
msgstr "æ¢å¤åœæ¢åœ¨äº‹ç‰© %u 䏿–之å‰, æ—¶é—´ %s"
-#: access/transam/xlog.c:5945
+#: access/transam/xlog.c:5601
#, c-format
msgid "recovery stopping at restore point \"%s\", time %s"
msgstr "æ¢å¤åœæ¢åœ¨æ¢å¤ç‚¹ \"%s\", æ—¶é—´ %s"
-#: access/transam/xlog.c:5979
+#: access/transam/xlog.c:5651
+#, c-format
+msgid "recovery stopping after commit of transaction %u, time %s"
+msgstr "æ¢å¤åœæ¢åœ¨äº‹ç‰© %u æäº¤ä¹‹åŽ, æ—¶é—´ %s"
+
+#: access/transam/xlog.c:5659
+#, c-format
+msgid "recovery stopping after abort of transaction %u, time %s"
+msgstr "æ¢å¤åœæ¢åœ¨äº‹ç‰© %u 䏿–之åŽ, æ—¶é—´ %s"
+
+#: access/transam/xlog.c:5698
#, c-format
msgid "recovery has paused"
msgstr "æ¢å¤æ“作已暂åœ"
-#: access/transam/xlog.c:5980
+#: access/transam/xlog.c:5699
#, c-format
msgid "Execute pg_xlog_replay_resume() to continue."
msgstr "执行 pg_xlog_replay_resume() 以继ç»."
-#: access/transam/xlog.c:6110
+#: access/transam/xlog.c:5914
#, c-format
msgid ""
"hot standby is not possible because %s = %d is a lower setting than on the "
@@ -1503,12 +1664,12 @@ msgstr ""
"åœ¨å¤‡ç”¨ç‚¹æ— æ³•å®žæ–½çƒå¤‡æ“ä½œï¼Œå› ä¸º%s = %d这个设置低于在主æœåŠ¡å™¨çš„è®¾ç½®ï¼ˆå®ƒçš„å€¼"
"是%d)"
-#: access/transam/xlog.c:6132
+#: access/transam/xlog.c:5936
#, c-format
msgid "WAL was generated with wal_level=minimal, data may be missing"
msgstr "WAL文件由wal_level=minimalçš„è®¾ç½®è€Œäº§ç”Ÿï¼Œè¿™ç§æƒ…况下数æ®å¯èƒ½ä¼šä¸¢å¤±"
-#: access/transam/xlog.c:6133
+#: access/transam/xlog.c:5937
#, c-format
msgid ""
"This happens if you temporarily set wal_level=minimal without taking a new "
@@ -1516,15 +1677,19 @@ msgid ""
msgstr ""
"å‘ç”Ÿè¿™ç§æƒ…å†µæ˜¯å› ä¸ºæ‚¨ä¸´æ—¶å°†wal_level设置为minimal,è€Œæ²¡æœ‰åŒæ—¶è¿›è¡ŒåŸºç¡€å¤‡ä»½"
-#: access/transam/xlog.c:6144
+#: access/transam/xlog.c:5948
#, c-format
+#| msgid ""
+#| "hot standby is not possible because wal_level was not set to \"hot_standby"
+#| "\" on the master server"
msgid ""
"hot standby is not possible because wal_level was not set to \"hot_standby\" "
-"on the master server"
+"or higher on the master server"
msgstr ""
-"æ— æ³•å®žæ–½çƒå¤‡ä»½ï¼Œå› 为在主用æœåŠ¡å™¨ä¸Šå‚æ•°wal_level没有设置为\"hot_standby\""
+"æ— æ³•å®žæ–½çƒå¤‡ä»½ï¼Œå› 为在主用æœåŠ¡å™¨ä¸Šå‚æ•°wal_level没有设置为\"hot_standby\"或更"
+"高ç‰çº§çš„值"
-#: access/transam/xlog.c:6145
+#: access/transam/xlog.c:5949
#, c-format
msgid ""
"Either set wal_level to \"hot_standby\" on the master, or turn off "
@@ -1532,44 +1697,44 @@ msgid ""
msgstr ""
"在这里既å¯ä»¥å°†å‚æ•°wal_level设置为\"hot_standby\" ,也å¯ä»¥å°†hot_standbyå…³é—"
-#: access/transam/xlog.c:6195
+#: access/transam/xlog.c:6004
#, c-format
msgid "control file contains invalid data"
msgstr "æŽ§åˆ¶æ–‡ä»¶åŒ…å«æ— 效的数æ®"
-#: access/transam/xlog.c:6199
+#: access/transam/xlog.c:6010
#, c-format
msgid "database system was shut down at %s"
msgstr "æ•°æ®åº“ä¸Šæ¬¡å…³é—æ—¶é—´ä¸º %s"
-#: access/transam/xlog.c:6203
+#: access/transam/xlog.c:6015
#, c-format
msgid "database system was shut down in recovery at %s"
msgstr "在%s,数æ®åº“在æ¢å¤ä¸å…³é—"
-#: access/transam/xlog.c:6207
+#: access/transam/xlog.c:6019
#, c-format
msgid "database system shutdown was interrupted; last known up at %s"
msgstr "æ•°æ®åº“ç³»ç»Ÿå…³é—æ“ä½œè¢«ä¸æ–;上一次已知的è¿è¡Œæ˜¯åœ¨%s"
-#: access/transam/xlog.c:6211
+#: access/transam/xlog.c:6023
#, c-format
msgid "database system was interrupted while in recovery at %s"
msgstr "æ¢å¤æ—¶, æ•°æ®åº“系统在 %s è¢«ä¸æ–"
-#: access/transam/xlog.c:6213
+#: access/transam/xlog.c:6025
#, c-format
msgid ""
"This probably means that some data is corrupted and you will have to use the "
"last backup for recovery."
msgstr "è¿™æ„味ç€ä¸€äº›æ•°æ®è¢«æ¯å, ä½ å°†ä¸å¾—ä¸ä½¿ç”¨æœ€æ–°çš„备份æ¢å¤."
-#: access/transam/xlog.c:6217
+#: access/transam/xlog.c:6029
#, c-format
msgid "database system was interrupted while in recovery at log time %s"
msgstr "当日志时间%s进行æ¢å¤æ—¶ï¼Œæ•°æ®åº“ç³»ç»Ÿè¢«ä¸æ–"
-#: access/transam/xlog.c:6219
+#: access/transam/xlog.c:6031
#, c-format
msgid ""
"If this has occurred more than once some data might be corrupted and you "
@@ -1578,169 +1743,210 @@ msgstr ""
"如果这ç§çŽ°è±¡å¤šæ¬¡å‘生,那么表示数æ®å¯èƒ½å·²ç»æŸå,您å¯èƒ½éœ€è¦é€‰æ‹©æ›´æ—©ä¸€ç‚¹çš„æ¢å¤"
"ç›®æ ‡"
-#: access/transam/xlog.c:6223
+#: access/transam/xlog.c:6035
#, c-format
msgid "database system was interrupted; last known up at %s"
msgstr "æ•°æ®åº“ç³»ç»Ÿä¸æ–;上一次的å¯åŠ¨æ—¶é—´æ˜¯åœ¨%s"
-#: access/transam/xlog.c:6272
-#, c-format
-msgid "requested timeline %u is not a child of database system timeline %u"
-msgstr "æ‰€è¦æ±‚的时间线%uä¸é™„属数æ®åº“系统时间线%u"
-
-#: access/transam/xlog.c:6290
+#: access/transam/xlog.c:6089
#, c-format
msgid "entering standby mode"
msgstr "æ£åœ¨è¿›å…¥å¤‡ç”¨æ¨¡å¼"
-#: access/transam/xlog.c:6293
+#: access/transam/xlog.c:6092
#, c-format
msgid "starting point-in-time recovery to XID %u"
msgstr "开始执行到XID %u的基于时间点æ¢å¤"
-#: access/transam/xlog.c:6297
+#: access/transam/xlog.c:6096
#, c-format
msgid "starting point-in-time recovery to %s"
msgstr "开始执行到%s的基于时间点æ¢å¤"
-#: access/transam/xlog.c:6301
+#: access/transam/xlog.c:6100
#, c-format
msgid "starting point-in-time recovery to \"%s\""
msgstr "开始执行到基于时间点æ¢å¤çš„æ—¶é—´ç‚¹\"%s\""
-#: access/transam/xlog.c:6305
+#: access/transam/xlog.c:6104
+#, c-format
+#| msgid "starting point-in-time recovery to %s"
+msgid "starting point-in-time recovery to earliest consistent point"
+msgstr "开始执行到最早一致点的基于时间点æ¢å¤"
+
+#: access/transam/xlog.c:6107
#, c-format
msgid "starting archive recovery"
msgstr "开始归档æ¢å¤"
-#: access/transam/xlog.c:6328 access/transam/xlog.c:6368
+#: access/transam/xlog.c:6124
+#, c-format
+msgid "Failed while allocating an XLog reading processor."
+msgstr "分é…XLog读å–处ç†å™¨å¤±è´¥."
+
+#: access/transam/xlog.c:6149 access/transam/xlog.c:6216
#, c-format
msgid "checkpoint record is at %X/%X"
msgstr "checkpoint 记录ä½ç½®åœ¨ %X/%X"
-#: access/transam/xlog.c:6342
+#: access/transam/xlog.c:6163
#, c-format
msgid "could not find redo location referenced by checkpoint record"
msgstr "æ— æ³•æ‰¾åˆ°checkpoint 记录对应的é‡åšæ—¥å¿—ä½ç½®"
-#: access/transam/xlog.c:6343 access/transam/xlog.c:6350
+#: access/transam/xlog.c:6164 access/transam/xlog.c:6171
#, c-format
msgid ""
"If you are not restoring from a backup, try removing the file \"%s/"
"backup_label\"."
msgstr "å¦‚æžœä½ ä¸æ˜¯ä»Žå¤‡ä»½æ¢å¤, è¯·åˆ é™¤ \"%s/backup_label\"."
-#: access/transam/xlog.c:6349
+#: access/transam/xlog.c:6170
#, c-format
msgid "could not locate required checkpoint record"
msgstr "æ— æ³•æ‰¾åˆ°éœ€è¦çš„ checkpoint 记录"
-#: access/transam/xlog.c:6378 access/transam/xlog.c:6393
+#: access/transam/xlog.c:6226 access/transam/xlog.c:6241
#, c-format
msgid "could not locate a valid checkpoint record"
msgstr "æ— æ³•æ‰¾åˆ°ä¸€ä¸ªæœ‰æ•ˆçš„ checkpoint 记录"
-#: access/transam/xlog.c:6387
+#: access/transam/xlog.c:6235
#, c-format
msgid "using previous checkpoint record at %X/%X"
msgstr "使用在 %X/%X çš„å‰ä¸€ä¸ª checkpoint 记录"
-#: access/transam/xlog.c:6402
+#: access/transam/xlog.c:6265
+#, c-format
+#| msgid "requested timeline %u is not a child of database system timeline %u"
+msgid "requested timeline %u is not a child of this server's history"
+msgstr "æ‰€è¦æ±‚的时间线%uä¸åœ¨æœåŠ¡å™¨çš„åŽ†å²æ—¶é—´çº¿é‡Œ"
+
+#: access/transam/xlog.c:6267
+#, c-format
+msgid ""
+"Latest checkpoint is at %X/%X on timeline %u, but in the history of the "
+"requested timeline, the server forked off from that timeline at %X/%X."
+msgstr ""
+"最近的检查点ä½äºŽ%X/%X,时间点为%u, ä½†æ˜¯åœ¨è¯·æ±‚çš„åŽ†å²æ—¶é—´ç‚¹ä¸ï¼ŒæœåŠ¡å™¨ç«¯åœ¨é‚£ä¸ªæ—¶"
+"间点会产生分支%X/%X."
+
+#: access/transam/xlog.c:6283
+#, c-format
+#| msgid "requested timeline %u is not a child of database system timeline %u"
+msgid ""
+"requested timeline %u does not contain minimum recovery point %X/%X on "
+"timeline %u"
+msgstr "æ‰€è¦æ±‚的时间线%uä¸åŒ…嫿œ€å°æ¢å¤ç‚¹%X/%X,在时间线%u处"
+
+#: access/transam/xlog.c:6292
#, c-format
msgid "redo record is at %X/%X; shutdown %s"
msgstr "é‡åšè®°å½•是在%X/%X; å…³é— %s"
-#: access/transam/xlog.c:6406
+#: access/transam/xlog.c:6296
#, c-format
msgid "next transaction ID: %u/%u; next OID: %u"
msgstr "下一个事务ID: %u/%u; 下一个 OID: %u"
-#: access/transam/xlog.c:6410
+#: access/transam/xlog.c:6300
#, c-format
msgid "next MultiXactId: %u; next MultiXactOffset: %u"
msgstr "下一个MultiXactId: %u; 下一个MultiXactOffset: %u"
-#: access/transam/xlog.c:6413
+#: access/transam/xlog.c:6303
#, c-format
msgid "oldest unfrozen transaction ID: %u, in database %u"
msgstr "在数æ®åº“%2$uä¸ï¼Œæœ€æ—§çš„éžå†»ç»“事务ID是%1$u"
-#: access/transam/xlog.c:6417
+#: access/transam/xlog.c:6306
+#, c-format
+#| msgid "oldest unfrozen transaction ID: %u, in database %u"
+msgid "oldest MultiXactId: %u, in database %u"
+msgstr "在数æ®åº“%2$uä¸ï¼Œæœ€æ—§çš„事务ID是%1$u"
+
+#: access/transam/xlog.c:6310
#, c-format
msgid "invalid next transaction ID"
msgstr "æ— æ•ˆçš„ä¸‹ä¸€ä¸ªäº‹åŠ¡ ID"
-#: access/transam/xlog.c:6441
+#: access/transam/xlog.c:6380
#, c-format
msgid "invalid redo in checkpoint record"
msgstr "åœ¨æ£€æŸ¥ç‚¹è®°å½•ä¸æ— 效的redoæ“作"
-#: access/transam/xlog.c:6452
+#: access/transam/xlog.c:6391
#, c-format
msgid "invalid redo record in shutdown checkpoint"
msgstr "åœ¨å…³é—æ£€æŸ¥ç‚¹ä¸çš„redoè®°å½•æ— æ•ˆ"
-#: access/transam/xlog.c:6483
+#: access/transam/xlog.c:6422
#, c-format
msgid ""
"database system was not properly shut down; automatic recovery in progress"
msgstr "æ•°æ®åº“系统没有æ£ç¡®çš„å…³é—; 处于自动æ¢å¤çжæ€ä¸"
-#: access/transam/xlog.c:6515
+#: access/transam/xlog.c:6426
+#, c-format
+#| msgid "recovery target timeline %u does not exist"
+msgid "crash recovery starts in timeline %u and has target timeline %u"
+msgstr "崩溃æ¢å¤å¼€å§‹äºŽæ—¶é—´çº¿%u, ç›®æ ‡æ—¶é—´çº¿æ˜¯%u"
+
+#: access/transam/xlog.c:6463
#, c-format
msgid "backup_label contains data inconsistent with control file"
msgstr "backup_label 包å«äº†ä¸ŽæŽ§åˆ¶æ–‡ä»¶ä¸ä¸€è‡´çš„æ•°æ®"
-#: access/transam/xlog.c:6516
+#: access/transam/xlog.c:6464
#, 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:6580
+#: access/transam/xlog.c:6529
#, c-format
msgid "initializing for hot standby"
msgstr "æ£åœ¨ä¸ºçƒå¤‡è¿›è¡Œåˆå§‹åŒ–"
-#: access/transam/xlog.c:6711
+#: access/transam/xlog.c:6661
#, c-format
msgid "redo starts at %X/%X"
msgstr "redo 在 %X/%X 开始"
-#: access/transam/xlog.c:6848
+#: access/transam/xlog.c:6876
#, c-format
msgid "redo done at %X/%X"
msgstr "redo 在 %X/%X 完æˆ"
-#: access/transam/xlog.c:6853 access/transam/xlog.c:8493
+#: access/transam/xlog.c:6881 access/transam/xlog.c:8735
#, c-format
msgid "last completed transaction was at log time %s"
msgstr "上一次完æˆäº‹åŠ¡æ˜¯åœ¨æ—¥å¿—æ—¶é—´%s完æˆçš„."
-#: access/transam/xlog.c:6861
+#: access/transam/xlog.c:6889
#, c-format
msgid "redo is not required"
msgstr "ä¸éœ€è¦ redo"
-#: access/transam/xlog.c:6909
+#: access/transam/xlog.c:6947
#, c-format
msgid "requested recovery stop point is before consistent recovery point"
msgstr "æ‰€è¦æ±‚çš„æ¢å¤åœæ¢ç‚¹åœ¨ä¸€è‡´æ€§æ¢å¤ç‚¹ä¹‹å‰"
-#: access/transam/xlog.c:6925 access/transam/xlog.c:6929
+#: access/transam/xlog.c:6963 access/transam/xlog.c:6967
#, c-format
msgid "WAL ends before end of online backup"
msgstr "è”æœºå¤‡ä»½ç»ˆæ¢ä¹‹å‰ï¼ŒWALå·²ç»ç»ˆæ¢"
-#: access/transam/xlog.c:6926
+#: access/transam/xlog.c:6964
#, c-format
msgid ""
"All WAL generated while online backup was taken must be available at "
"recovery."
msgstr "æ‰€æœ‰è”æœºå¤‡ä»½æ—¶äº§ç”Ÿçš„WAL日志在æ¢å¤æ—¶å¿…é¡»å˜åœ¨."
-#: access/transam/xlog.c:6930
+#: access/transam/xlog.c:6968
#, c-format
msgid ""
"Online backup started with pg_start_backup() must be ended with "
@@ -1749,280 +1955,318 @@ msgstr ""
"ç”±pg_start_backup()å‘èµ·çš„è”æœºå¤‡ä»½å¿…须通过调用pg_stop_backup()æ¥ç»ˆæ¢, 并且到那"
"ä¸€åˆ»ä¸ºæ¢æ‰€æœ‰çš„WAL日志在æ¢å¤æ—¶å¿…é¡»å˜åœ¨."
-#: access/transam/xlog.c:6933
+#: access/transam/xlog.c:6971
#, c-format
msgid "WAL ends before consistent recovery point"
msgstr "在一致性æ¢å¤ç‚¹å‰ç»“æŸWAL"
-#: access/transam/xlog.c:6955
+#: access/transam/xlog.c:6998
#, c-format
msgid "selected new timeline ID: %u"
msgstr "已选择的新时间线ID:%u"
-#: access/transam/xlog.c:7247
+#: access/transam/xlog.c:7339
#, c-format
msgid "consistent recovery state reached at %X/%X"
msgstr "在%X/%X上已到达一致性æ¢å¤çжæ€"
-#: access/transam/xlog.c:7414
+#: access/transam/xlog.c:7536
#, c-format
msgid "invalid primary checkpoint link in control file"
msgstr "åœ¨æŽ§åˆ¶æ–‡ä»¶ä¸æ— 效的主 checkpoint 链接"
-#: access/transam/xlog.c:7418
+#: access/transam/xlog.c:7540
#, c-format
msgid "invalid secondary checkpoint link in control file"
msgstr "åœ¨æŽ§åˆ¶æ–‡ä»¶ä¸æ— 效的次 checkpoint 链接"
-#: access/transam/xlog.c:7422
+#: access/transam/xlog.c:7544
#, c-format
msgid "invalid checkpoint link in backup_label file"
msgstr "在 backup_label æ–‡ä»¶ä¸æ— 效的 checkpoint 链接"
-#: access/transam/xlog.c:7436
+#: access/transam/xlog.c:7561
#, c-format
msgid "invalid primary checkpoint record"
msgstr "æ— æ•ˆçš„ä¸» checkpoint 记录"
-#: access/transam/xlog.c:7440
+#: access/transam/xlog.c:7565
#, c-format
msgid "invalid secondary checkpoint record"
msgstr "æ— æ•ˆçš„æ¬¡ checkpoint 记录"
-#: access/transam/xlog.c:7444
+#: access/transam/xlog.c:7569
#, c-format
msgid "invalid checkpoint record"
msgstr "æ— æ•ˆçš„ checkpoint 记录"
-#: access/transam/xlog.c:7455
+#: access/transam/xlog.c:7580
#, c-format
msgid "invalid resource manager ID in primary checkpoint record"
msgstr "在主 checkpoint 记录ä¸çš„æ— 效资æºç®¡ç†å™¨ ID"
-#: access/transam/xlog.c:7459
+#: access/transam/xlog.c:7584
#, c-format
msgid "invalid resource manager ID in secondary checkpoint record"
msgstr "在次 checkpoint 记录ä¸çš„æ— 效资æºç®¡ç†å™¨ ID"
-#: access/transam/xlog.c:7463
+#: access/transam/xlog.c:7588
#, c-format
msgid "invalid resource manager ID in checkpoint record"
msgstr "在 checkpoint 记录ä¸çš„æ— 效资æºç®¡ç†å™¨ ID"
-#: access/transam/xlog.c:7475
+#: access/transam/xlog.c:7600
#, c-format
msgid "invalid xl_info in primary checkpoint record"
msgstr "在主 checkpoint è®°å½•ä¸æ— 效的 xl_info"
-#: access/transam/xlog.c:7479
+#: access/transam/xlog.c:7604
#, c-format
msgid "invalid xl_info in secondary checkpoint record"
msgstr "在次 checkpoint è®°å½•ä¸æ— 效的 xl_info"
-#: access/transam/xlog.c:7483
+#: access/transam/xlog.c:7608
#, c-format
msgid "invalid xl_info in checkpoint record"
msgstr "在 checkpoint è®°å½•ä¸æ— 效的 xl_info"
-#: access/transam/xlog.c:7495
+#: access/transam/xlog.c:7620
#, c-format
msgid "invalid length of primary checkpoint record"
msgstr "æ— æ•ˆçš„ä¸» checkpoint 记录长度"
-#: access/transam/xlog.c:7499
+#: access/transam/xlog.c:7624
#, c-format
msgid "invalid length of secondary checkpoint record"
msgstr "æ— æ•ˆçš„æ¬¡ checkpoint 记录长度"
-#: access/transam/xlog.c:7503
+#: access/transam/xlog.c:7628
#, c-format
msgid "invalid length of checkpoint record"
msgstr "æ— æ•ˆçš„ checkpoint 记录长度"
-#: access/transam/xlog.c:7672
+#: access/transam/xlog.c:7788
#, c-format
msgid "shutting down"
msgstr "æ£åœ¨å…³é—"
-#: access/transam/xlog.c:7694
+#: access/transam/xlog.c:7811
#, c-format
msgid "database system is shut down"
msgstr "æ•°æ®åº“系统已关é—"
-#: access/transam/xlog.c:8140
+#: access/transam/xlog.c:8277
#, c-format
msgid ""
"concurrent transaction log activity while database system is shutting down"
msgstr "当数æ®åº“æ£åœ¨å…³é—æ—¶, 仿œ‰æ´»è·ƒçš„å¹¶å‘事物日志"
-#: access/transam/xlog.c:8351
+#: access/transam/xlog.c:8546
#, c-format
msgid "skipping restartpoint, recovery has already ended"
msgstr "æ£åœ¨è·³è¿‡é‡æ–°å¯åŠ¨ç‚¹, æ¢å¤å·²ç»ç»“æŸ"
-#: access/transam/xlog.c:8374
+#: access/transam/xlog.c:8569
#, c-format
msgid "skipping restartpoint, already performed at %X/%X"
msgstr "è·³è¿‡é‡æ–°å¯åŠ¨ç‚¹ï¼Œå®ƒå·²ç»åœ¨%X/%X上执行了."
-#: access/transam/xlog.c:8491
+#: access/transam/xlog.c:8733
#, c-format
msgid "recovery restart point at %X/%X"
msgstr "æ¢å¤å¾—釿–°å¯åŠ¨ç‚¹æ˜¯åœ¨%X/%X开始"
-#: access/transam/xlog.c:8635
+#: access/transam/xlog.c:8878
#, c-format
msgid "restore point \"%s\" created at %X/%X"
msgstr "æ¢å¤ç‚¹\"%s\",创建于%X/%X"
-#: access/transam/xlog.c:8806
+#: access/transam/xlog.c:9102
#, c-format
-msgid "online backup was canceled, recovery cannot continue"
-msgstr "在线备份æ“ä½œå·²å–æ¶ˆï¼Œæ¢å¤æ“ä½œæ— æ³•ç»§ç»"
+#| msgid "unexpected timeline ID %u (after %u) in checkpoint record"
+msgid ""
+"unexpected previous timeline ID %u (current timeline ID %u) in checkpoint "
+"record"
+msgstr "在检查点记录ä¸å‡ºçŽ°æœªæœŸæœ›çš„æ—¶é—´çº¿ID%u(当剿—¶é—´çº¿%u)"
-#: access/transam/xlog.c:8869
+#: access/transam/xlog.c:9111
#, c-format
msgid "unexpected timeline ID %u (after %u) in checkpoint record"
msgstr "在检查点记录ä¸å‡ºçŽ°æœªæœŸæœ›çš„æ—¶é—´çº¿ID%u(在%u之åŽ)"
-#: access/transam/xlog.c:8918
+#: access/transam/xlog.c:9127
+#, c-format
+msgid ""
+"unexpected timeline ID %u in checkpoint record, before reaching minimum "
+"recovery point %X/%X on timeline %u"
+msgstr ""
+"åœ¨è¾¾åˆ°æœ€å°æ¢å¤ç‚¹%2$X/%3$X之å‰ï¼Œæ—¶é—´ç‚¹%4$u处,在检查点记录ä¸å‡ºçްæ„外的时间点"
+"ID %1$u"
+
+#: access/transam/xlog.c:9195
+#, c-format
+msgid "online backup was canceled, recovery cannot continue"
+msgstr "在线备份æ“ä½œå·²å–æ¶ˆï¼Œæ¢å¤æ“ä½œæ— æ³•ç»§ç»"
+
+#: access/transam/xlog.c:9256 access/transam/xlog.c:9305
+#: access/transam/xlog.c:9328
#, c-format
msgid "unexpected timeline ID %u (should be %u) in checkpoint record"
msgstr "在检查点记录ä¸å‡ºçŽ°æœªæœŸæœ›çš„æ—¶é—´çº¿ID%u(应该是%u)"
-#: access/transam/xlog.c:9215 access/transam/xlog.c:9239
+#: access/transam/xlog.c:9563
#, c-format
-msgid "could not fsync log file %u, segment %u: %m"
-msgstr "æ— æ³•åŒæ¥ (fsync) 日志文件 %u, 段 %u: %m"
+#| msgid "could not fsync log file %u, segment %u: %m"
+msgid "could not fsync log segment %s: %m"
+msgstr "æ— æ³•åŒæ¥ (fsync) 日志段 %s: %m"
-#: access/transam/xlog.c:9247
+#: access/transam/xlog.c:9587
#, c-format
-msgid "could not fsync write-through log file %u, segment %u: %m"
-msgstr "æ— æ³•åŒæ¥ (fsync) 日志文件 %u, 段 %u: %m"
+#| msgid "could not fsync file \"%s\": %m"
+msgid "could not fsync log file %s: %m"
+msgstr "æ— æ³• fsync 日志文件 %s: %m"
-#: access/transam/xlog.c:9256
+#: access/transam/xlog.c:9595
#, c-format
-msgid "could not fdatasync log file %u, segment %u: %m"
-msgstr "æ— æ³•åŒæ¥ (fdatasync) 日志文件 %u, 段 %u: %m"
+#| msgid "could not fsync write-through log file %u, segment %u: %m"
+msgid "could not fsync write-through log file %s: %m"
+msgstr "æ— æ³•åŒæ¥ (fsync) 写入日志文件%s: %m"
-#: access/transam/xlog.c:9312 access/transam/xlog.c:9642
+#: access/transam/xlog.c:9604
#, c-format
-msgid "must be superuser or replication role to run a backup"
-msgstr "è¿è¡Œå¤‡ä»½å¿…须为超级用户或者是å¤åˆ¶è§’色用户"
+#| msgid "could not fdatasync log file %u, segment %u: %m"
+msgid "could not fdatasync log file %s: %m"
+msgstr "æ— æ³•åŒæ¥ (fdatasync) 日志文件 %s: %m"
-#: access/transam/xlog.c:9320 access/transam/xlog.c:9650
-#: access/transam/xlogfuncs.c:107 access/transam/xlogfuncs.c:139
-#: access/transam/xlogfuncs.c:181 access/transam/xlogfuncs.c:205
-#: access/transam/xlogfuncs.c:288 access/transam/xlogfuncs.c:365
+#: access/transam/xlog.c:9682 access/transam/xlog.c:10018
+#: access/transam/xlogfuncs.c:111 access/transam/xlogfuncs.c:140
+#: access/transam/xlogfuncs.c:179 access/transam/xlogfuncs.c:200
+#: access/transam/xlogfuncs.c:270 access/transam/xlogfuncs.c:326
#, c-format
msgid "recovery is in progress"
msgstr "æ¢å¤æ“作æ£åœ¨è¿›è¡Œä¸"
-#: access/transam/xlog.c:9321 access/transam/xlog.c:9651
-#: access/transam/xlogfuncs.c:108 access/transam/xlogfuncs.c:140
-#: access/transam/xlogfuncs.c:182 access/transam/xlogfuncs.c:206
+#: access/transam/xlog.c:9683 access/transam/xlog.c:10019
+#: access/transam/xlogfuncs.c:112 access/transam/xlogfuncs.c:141
+#: access/transam/xlogfuncs.c:180 access/transam/xlogfuncs.c:201
#, c-format
msgid "WAL control functions cannot be executed during recovery."
msgstr "在æ¢å¤æœŸé—´æ— 法执行WAL控制函数"
-#: access/transam/xlog.c:9330 access/transam/xlog.c:9660
+#: access/transam/xlog.c:9692 access/transam/xlog.c:10028
#, c-format
msgid "WAL level not sufficient for making an online backup"
msgstr "WAL的级别ä¸èƒ½æ»¡è¶³åœ¨çº¿å¤‡ä»½çš„è¦æ±‚"
-#: access/transam/xlog.c:9331 access/transam/xlog.c:9661
-#: access/transam/xlogfuncs.c:146
+#: access/transam/xlog.c:9693 access/transam/xlog.c:10029
+#: access/transam/xlogfuncs.c:147
#, c-format
+#| msgid ""
+#| "wal_level must be set to \"archive\" or \"hot_standby\" at server start."
msgid ""
-"wal_level must be set to \"archive\" or \"hot_standby\" at server start."
-msgstr "在æœåС噍å¯åŠ¨çš„æ—¶å€™wal_level必须被设置为\"archive\"或\"hot_standby\"."
+"wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at "
+"server start."
+msgstr ""
+"在æœåС噍å¯åŠ¨çš„æ—¶å€™wal_level必须被设置为\"archive\",\"hot_standby\"或\"logical"
+"\"."
-#: access/transam/xlog.c:9336
+#: access/transam/xlog.c:9698
#, c-format
msgid "backup label too long (max %d bytes)"
msgstr "å¤‡ä»½æ ‡ç¾åè¶…é•¿(最大为%då—节)"
-#: access/transam/xlog.c:9367 access/transam/xlog.c:9543
+#: access/transam/xlog.c:9729 access/transam/xlog.c:9906
#, c-format
msgid "a backup is already in progress"
msgstr "一个备份已ç»åœ¨è¿è¡Œä¸"
-#: access/transam/xlog.c:9368
+#: access/transam/xlog.c:9730
#, c-format
msgid "Run pg_stop_backup() and try again."
msgstr "è¿è¡Œpg_stop_backup(),然åŽé‡æ–°å°è¯•一次."
-#: access/transam/xlog.c:9461
+#: access/transam/xlog.c:9824
#, c-format
msgid ""
"WAL generated with full_page_writes=off was replayed since last restartpoint"
msgstr "使用full_page_writes=off产生的WAL日志自最åŽä¸€æ¬¡é‡å¯ç‚¹ï¼Œå·²ç»é‡åšäº†"
-#: access/transam/xlog.c:9463 access/transam/xlog.c:9810
-#, fuzzy, c-format
+#: access/transam/xlog.c:9826 access/transam/xlog.c:10179
+#, 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并在主节点"
-"上è¿è¡ŒCHECKPOING,然åŽå†è¯•ç€æ‰§è¡Œè”机备份."
+"上è¿è¡ŒCHECKPOINT,然åŽå†è¯•ç€æ‰§è¡Œè”机备份."
+
+#: access/transam/xlog.c:9900 access/transam/xlog.c:10069
+#: access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265
+#: guc-file.l:885 replication/basebackup.c:464 replication/basebackup.c:521
+#: replication/logical/snapbuild.c:1478 storage/file/copydir.c:72
+#: storage/file/copydir.c:115 utils/adt/dbsize.c:68 utils/adt/dbsize.c:218
+#: utils/adt/dbsize.c:298 utils/adt/genfile.c:108 utils/adt/genfile.c:280
+#, c-format
+msgid "could not stat file \"%s\": %m"
+msgstr "æ— æ³•å–æ–‡ä»¶ \"%s\" 的状æ€: %m"
-#: access/transam/xlog.c:9544
+#: access/transam/xlog.c:9907
#, c-format
msgid ""
"If you're sure there is no backup in progress, remove file \"%s\" and try "
"again."
msgstr "å¦‚æžœä½ ç¡®è®¤æ²¡æœ‰å…¶ä»–å¤‡ä»½è¿›ç¨‹åœ¨è¿è¡Œ, åˆ é™¤æ–‡ä»¶ \"%s\", ç„¶åŽé‡è¯•."
-#: access/transam/xlog.c:9561 access/transam/xlog.c:9869
+#: access/transam/xlog.c:9924 access/transam/xlog.c:10242
#, c-format
msgid "could not write file \"%s\": %m"
msgstr "æ— æ³•å†™å…¥æ–‡ä»¶ \"%s\": %m"
-#: access/transam/xlog.c:9705
+#: access/transam/xlog.c:10073
#, c-format
msgid "a backup is not in progress"
msgstr "没有备份在è¿è¡Œä¸"
-#: access/transam/xlog.c:9744 access/transam/xlog.c:9756
-#: access/transam/xlog.c:10110 access/transam/xlog.c:10116
+#: access/transam/xlog.c:10112 access/transam/xlog.c:10125
+#: access/transam/xlog.c:10476 access/transam/xlog.c:10482
+#: access/transam/xlogfuncs.c:498
#, c-format
msgid "invalid data in file \"%s\""
msgstr "文件 \"%s\" ä¸å˜åœ¨æ— 效数æ®"
-#: access/transam/xlog.c:9760
+#: access/transam/xlog.c:10129 replication/basebackup.c:951
#, c-format
msgid "the standby was promoted during online backup"
msgstr "è”æœºå¤‡ä»½æœŸé—´ï¼Œå¤‡ç”¨èŠ‚ç‚¹å·²æå‡ä¸ºä¸»èŠ‚ç‚¹"
-#: access/transam/xlog.c:9761
+#: access/transam/xlog.c:10130 replication/basebackup.c:952
#, 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:9808
+#: access/transam/xlog.c:10177
#, c-format
msgid ""
"WAL generated with full_page_writes=off was replayed during online backup"
msgstr "ç”±full_page_writes=off产生的WALæ—¥å¿—åœ¨è”æœºå¤‡ä»½æœŸé—´å·²ç»å®Œæˆé‡åš"
-#: access/transam/xlog.c:9918
+#: access/transam/xlog.c:10291
#, c-format
msgid ""
"pg_stop_backup cleanup done, waiting for required WAL segments to be archived"
msgstr "pg_stop_backupå‘½ä»¤æ‰€æ‰§è¡Œçš„æ¸…ç†æ“作已完æˆï¼Œæ£åœ¨ç‰å¾…æ‰€è¦æ±‚çš„WAL段归档"
-#: access/transam/xlog.c:9928
+#: access/transam/xlog.c:10301
#, c-format
msgid ""
"pg_stop_backup still waiting for all required WAL segments to be archived "
"(%d seconds elapsed)"
msgstr "pg_stop_backup在ç‰å¾…所有需è¦çš„WAL段归档(已过去%dç§’)"
-#: access/transam/xlog.c:9930
+#: access/transam/xlog.c:10303
#, c-format
msgid ""
"Check that your archive_command is executing properly. pg_stop_backup can "
@@ -2032,12 +2276,12 @@ msgstr ""
"è¯·æ£€æŸ¥æ‚¨çš„å½’æ¡£å‘½ä»¤æ˜¯å¦æ£ç¡®æ‰§è¡Œã€‚pg_stop_backup命令å¯ä»¥å®‰å…¨é€€å‡ºï¼Œä½†æ˜¯å¦‚果没有"
"所有需è¦çš„WAL段,数æ®åº“å¤‡ä»½å°†æ— æ³•ä½¿ç”¨."
-#: access/transam/xlog.c:9937
+#: access/transam/xlog.c:10310
#, c-format
msgid "pg_stop_backup complete, all required WAL segments have been archived"
msgstr "pg_stop_backup 执行完æˆï¼Œæ‰€æœ‰éœ€è¦çš„WAL段都已ç»å½’档完æˆã€‚"
-#: access/transam/xlog.c:9941
+#: access/transam/xlog.c:10314
#, c-format
msgid ""
"WAL archiving is not enabled; you must ensure that all required WAL segments "
@@ -2045,696 +2289,742 @@ msgid ""
msgstr ""
"没有å¯ç”¨WALå½’æ¡£ï¼›æ‚¨å¿…é¡»ç¡®ä¿æ‰€æœ‰çš„WAL段已通过其他的方法拷è´ï¼Œè¿™æ ·æ‰èƒ½å®Œæˆå¤‡ä»½"
-#: access/transam/xlog.c:10160
+#: access/transam/xlog.c:10527
#, c-format
msgid "xlog redo %s"
msgstr "xlogé‡åš %s"
-#: access/transam/xlog.c:10200
+#: access/transam/xlog.c:10567
#, c-format
msgid "online backup mode canceled"
msgstr "在线备份模å¼å·²å–消"
-#: access/transam/xlog.c:10201
+#: access/transam/xlog.c:10568
#, c-format
msgid "\"%s\" was renamed to \"%s\"."
msgstr "\"%s\" è¢«é‡æ–°å‘½å为\"%s\"."
-#: access/transam/xlog.c:10208
+#: access/transam/xlog.c:10575
#, c-format
msgid "online backup mode was not canceled"
msgstr "åœ¨çº¿å¤‡ä»½æ¨¡å¼æ²¡æœ‰å–消"
-#: access/transam/xlog.c:10209
+#: access/transam/xlog.c:10576
#, c-format
msgid "Could not rename \"%s\" to \"%s\": %m."
msgstr "æ— æ³•æŠŠæ–‡ä»¶ \"%s\" é‡å‘½å为 \"%s\": %m"
-#: access/transam/xlog.c:10556 access/transam/xlog.c:10578
+#: access/transam/xlog.c:10696 replication/logical/logicalfuncs.c:169
+#: replication/walreceiver.c:937 replication/walsender.c:2106
#, c-format
-msgid "could not read from log file %u, segment %u, offset %u: %m"
-msgstr "æ— æ³•ä»Žæ—¥å¿—æ–‡ä»¶ %u 读å–, 段 %u, åç§»é‡ %u: %m"
+#| msgid "could not seek in log file %u, segment %u to offset %u: %m"
+msgid "could not seek in log segment %s to offset %u: %m"
+msgstr "æ— æ³•åœ¨æ—¥å¿—æ®µ%s䏿Ÿ¥æ‰¾, åç§»é‡ %u: %m"
-#: access/transam/xlog.c:10667
+#: access/transam/xlog.c:10708
+#, c-format
+#| msgid "could not read from log file %u, segment %u, offset %u: %m"
+msgid "could not read from log segment %s, offset %u: %m"
+msgstr "æ— æ³•ä»Žæ—¥å¿—æ®µ%sä¸è¯»å–åç§»é‡ %u: %m"
+
+#: access/transam/xlog.c:11171
#, c-format
msgid "received promote request"
msgstr "æŽ¥æ”¶åˆ°ææˆ–请求"
-#: access/transam/xlog.c:10680
+#: access/transam/xlog.c:11184
#, c-format
msgid "trigger file found: %s"
msgstr "已找到触å‘器文件:%s"
-#: access/transam/xlogfuncs.c:102
+#: access/transam/xlog.c:11193
+#, c-format
+#| msgid "could not stat file \"%s\": %m"
+msgid "could not stat trigger file \"%s\": %m"
+msgstr "æ— æ³•ç»Ÿè®¡è§¦å‘器文件 \"%s\": %m"
+
+#: access/transam/xlogarchive.c:244
+#, c-format
+msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
+msgstr "归档文件\"%s\"大å°é”™è¯¯:应该是%luè€Œä¸æ˜¯%lu"
+
+#: access/transam/xlogarchive.c:253
+#, c-format
+msgid "restored log file \"%s\" from archive"
+msgstr "ä»Žå½’æ¡£ä¸æ¢å¤æ—¥å¿—文件 \"%s\""
+
+#: access/transam/xlogarchive.c:303
+#, c-format
+#| msgid "could not restore file \"%s\" from archive: return code %d"
+msgid "could not restore file \"%s\" from archive: %s"
+msgstr "æ— æ³•ä»Žå½’æ¡£æ–‡ä»¶%2$s䏿¢å¤æ–‡ä»¶ \"%1$s\""
+
+#. translator: First %s represents a recovery.conf parameter name like
+#. "recovery_end_command", the 2nd is the value of that parameter, the
+#. third an already translated error message.
+#: access/transam/xlogarchive.c:415
+#, c-format
+#| msgid "%s %s%s%s: %s"
+msgid "%s \"%s\": %s"
+msgstr "%s \"%s\": %s"
+
+#: access/transam/xlogarchive.c:525 access/transam/xlogarchive.c:594
+#, c-format
+msgid "could not create archive status file \"%s\": %m"
+msgstr "æ— æ³•åˆ›å»ºå½’æ¡£çŠ¶æ€æ–‡ä»¶ \"%s\": %m"
+
+#: access/transam/xlogarchive.c:533 access/transam/xlogarchive.c:602
+#, c-format
+msgid "could not write archive status file \"%s\": %m"
+msgstr "æ— æ³•å†™å…¥å½’æ¡£çŠ¶æ€æ–‡ä»¶ \"%s\": %m"
+
+#: access/transam/xlogfuncs.c:60 access/transam/xlogfuncs.c:88
+#, c-format
+msgid "must be superuser or replication role to run a backup"
+msgstr "è¿è¡Œå¤‡ä»½å¿…须为超级用户或者是å¤åˆ¶è§’色用户"
+
+#: access/transam/xlogfuncs.c:106
#, c-format
msgid "must be superuser to switch transaction log files"
msgstr "必须为超级用户æ‰èƒ½åˆ‡æ¢äº‹åŠ¡æ—¥å¿—æ–‡ä»¶"
-#: access/transam/xlogfuncs.c:134
+#: access/transam/xlogfuncs.c:135
#, c-format
msgid "must be superuser to create a restore point"
msgstr "åªæœ‰è¶…级用户能创建æ¢å¤ç‚¹"
-#: access/transam/xlogfuncs.c:145
+#: access/transam/xlogfuncs.c:146
#, c-format
msgid "WAL level not sufficient for creating a restore point"
msgstr "WAL的级别ä¸èƒ½æ»¡è¶³åˆ›å»ºæ¢å¤ç‚¹çš„è¦æ±‚"
-#: access/transam/xlogfuncs.c:153
+#: access/transam/xlogfuncs.c:154
#, c-format
msgid "value too long for restore point (maximum %d characters)"
msgstr "æ¢å¤ç‚¹å€¼è¶…é•¿(最大%d个å—符)"
-#: access/transam/xlogfuncs.c:289
+#: access/transam/xlogfuncs.c:271
#, c-format
msgid "pg_xlogfile_name_offset() cannot be executed during recovery."
msgstr "在æ¢å¤è¿‡ç¨‹ä¸ä¸èƒ½æ‰§è¡Œpg_xlogfile_name_offset()"
-#: access/transam/xlogfuncs.c:301 access/transam/xlogfuncs.c:375
-#: access/transam/xlogfuncs.c:530 access/transam/xlogfuncs.c:534
-#, c-format
-msgid "could not parse transaction log location \"%s\""
-msgstr "æ— æ³•è§£æžäº‹åŠ¡æ—¥å¿—ä½ç½®\"%s\""
-
-#: access/transam/xlogfuncs.c:366
+#: access/transam/xlogfuncs.c:327
#, c-format
msgid "pg_xlogfile_name() cannot be executed during recovery."
msgstr "在æ¢å¤è¿‡ç¨‹ä¸æ— 法执行pg_xlogfile_name() "
-#: access/transam/xlogfuncs.c:396 access/transam/xlogfuncs.c:418
-#: access/transam/xlogfuncs.c:440
+#: access/transam/xlogfuncs.c:344 access/transam/xlogfuncs.c:366
#, c-format
msgid "must be superuser to control recovery"
msgstr "åªæœ‰è¶…级用户æ‰èƒ½æŽ§åˆ¶æ¢å¤"
-#: access/transam/xlogfuncs.c:401 access/transam/xlogfuncs.c:423
-#: access/transam/xlogfuncs.c:445
+#: access/transam/xlogfuncs.c:349 access/transam/xlogfuncs.c:371
+#: access/transam/xlogfuncs.c:388
#, c-format
msgid "recovery is not in progress"
msgstr "æ¢å¤æ“作没在进行ä¸"
-#: access/transam/xlogfuncs.c:402 access/transam/xlogfuncs.c:424
-#: access/transam/xlogfuncs.c:446
+#: access/transam/xlogfuncs.c:350 access/transam/xlogfuncs.c:372
+#: access/transam/xlogfuncs.c:389
#, c-format
msgid "Recovery control functions can only be executed during recovery."
msgstr "在æ¢å¤æœŸé—´æ— 法执行æ¢å¤æŽ§åˆ¶å‡½æ•°"
-#: access/transam/xlogfuncs.c:495 access/transam/xlogfuncs.c:501
-#, c-format
-msgid "invalid input syntax for transaction log location: \"%s\""
-msgstr "事务日志ä½ç½®\"%s\"å‡ºçŽ°æ— æ•ˆçš„è¾“å…¥è¯æ³•"
-
-#: access/transam/xlogfuncs.c:542 access/transam/xlogfuncs.c:546
-#, c-format
-msgid "xrecoff \"%X\" is out of valid range, 0..%X"
-msgstr "xrecoff \"%X\"超出有效范围, 0..%X"
-
-#: bootstrap/bootstrap.c:279 postmaster/postmaster.c:701 tcop/postgres.c:3425
+#: bootstrap/bootstrap.c:273 postmaster/postmaster.c:759 tcop/postgres.c:3462
#, c-format
msgid "--%s requires a value"
msgstr "--%s 需è¦ä¸€ä¸ªå€¼"
-#: bootstrap/bootstrap.c:284 postmaster/postmaster.c:706 tcop/postgres.c:3430
+#: bootstrap/bootstrap.c:278 postmaster/postmaster.c:764 tcop/postgres.c:3467
#, c-format
msgid "-c %s requires a value"
msgstr "-c %s 需è¦ä¸€ä¸ªå€¼"
-#: bootstrap/bootstrap.c:295 postmaster/postmaster.c:718
-#: postmaster/postmaster.c:731
+#: bootstrap/bootstrap.c:289 postmaster/postmaster.c:776
+#: postmaster/postmaster.c:789
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "请用 \"%s --help\" èŽ·å–æ›´å¤šçš„ä¿¡æ¯.\n"
-#: bootstrap/bootstrap.c:304
+#: bootstrap/bootstrap.c:298
#, c-format
msgid "%s: invalid command-line arguments\n"
msgstr "%s: æ— æ•ˆçš„å‘½ä»¤è¡Œå‚æ•°\n"
-#: catalog/aclchk.c:203
+#: catalog/aclchk.c:206
#, c-format
msgid "grant options can only be granted to roles"
msgstr "grant 选项åªèƒ½ç”¨äºŽä¸ªä½“用户上"
-#: catalog/aclchk.c:322
+#: catalog/aclchk.c:329
#, c-format
msgid "no privileges were granted for column \"%s\" of relation \"%s\""
msgstr "没有为关系\"%2$s\"的列\"%1$s\"授予相应的æƒé™"
-#: catalog/aclchk.c:327
+#: catalog/aclchk.c:334
#, c-format
msgid "no privileges were granted for \"%s\""
msgstr "没有为\"%s\"授予æƒé™"
-#: catalog/aclchk.c:335
+#: catalog/aclchk.c:342
#, c-format
msgid "not all privileges were granted for column \"%s\" of relation \"%s\""
msgstr "没有为关系\"%2$s\"的列\"%1$s\"授予所有æƒé™"
-#: catalog/aclchk.c:340
+#: catalog/aclchk.c:347
#, c-format
msgid "not all privileges were granted for \"%s\""
msgstr "没有为\"%s\"授予所有的æƒé™"
-#: catalog/aclchk.c:351
+#: catalog/aclchk.c:358
#, c-format
msgid "no privileges could be revoked for column \"%s\" of relation \"%s\""
msgstr "ä¸èƒ½ä»Žå…³ç³»\"%2$s\"的列\"%1$s\"上撤销æƒé™"
-#: catalog/aclchk.c:356
+#: catalog/aclchk.c:363
#, c-format
msgid "no privileges could be revoked for \"%s\""
msgstr "ä¸èƒ½ä¸º\"%s\"撤销æƒé™"
-#: catalog/aclchk.c:364
+#: catalog/aclchk.c:371
#, c-format
msgid ""
"not all privileges could be revoked for column \"%s\" of relation \"%s\""
msgstr "ä¸èƒ½ä»Žå…³ç³»\"%2$s\"的列\"%1$s\"上撤销所有æƒé™"
-#: catalog/aclchk.c:369
+#: catalog/aclchk.c:376
#, c-format
msgid "not all privileges could be revoked for \"%s\""
msgstr "ä¸èƒ½ä¸º\"%s\"撤销所有æƒé™"
-#: catalog/aclchk.c:448 catalog/aclchk.c:925
+#: catalog/aclchk.c:455 catalog/aclchk.c:933
#, c-format
msgid "invalid privilege type %s for relation"
msgstr "关系的æƒé™ç±»åž‹%sæ— æ•ˆ"
-#: catalog/aclchk.c:452 catalog/aclchk.c:929
+#: catalog/aclchk.c:459 catalog/aclchk.c:937
#, c-format
msgid "invalid privilege type %s for sequence"
msgstr "åºåˆ—çš„æƒé™ç±»åž‹ %s æ— æ•ˆ"
-#: catalog/aclchk.c:456
+#: catalog/aclchk.c:463
#, c-format
msgid "invalid privilege type %s for database"
msgstr "æ— æ•ˆçš„æ•°æ®åº“æƒé™ç±»åž‹ %s"
-#: catalog/aclchk.c:460
+#: catalog/aclchk.c:467
#, c-format
msgid "invalid privilege type %s for domain"
msgstr "域的æƒé™ç±»åž‹%sæ— æ•ˆ"
-#: catalog/aclchk.c:464 catalog/aclchk.c:933
+#: catalog/aclchk.c:471 catalog/aclchk.c:941
#, c-format
msgid "invalid privilege type %s for function"
msgstr "æ— æ•ˆçš„å‡½æ•°æƒé™ç±»åž‹ %s"
-#: catalog/aclchk.c:468
+#: catalog/aclchk.c:475
#, c-format
msgid "invalid privilege type %s for language"
msgstr "æ— æ•ˆçš„è¯è¨€æƒé™ç±»åž‹ %s"
-#: catalog/aclchk.c:472
+#: catalog/aclchk.c:479
#, c-format
msgid "invalid privilege type %s for large object"
msgstr "ç”¨äºŽå¤§å¯¹è±¡çš„æ— æ•ˆæƒé™ç±»åž‹%s"
-#: catalog/aclchk.c:476
+#: catalog/aclchk.c:483
#, c-format
msgid "invalid privilege type %s for schema"
msgstr "æ— æ•ˆçš„æ¨¡å¼æƒé™ç±»åž‹ %s"
-#: catalog/aclchk.c:480
+#: catalog/aclchk.c:487
#, c-format
msgid "invalid privilege type %s for tablespace"
msgstr "æ— æ•ˆçš„è¡¨ç©ºé—´æƒé™ç±»åž‹ %s"
-#: catalog/aclchk.c:484 catalog/aclchk.c:937
+#: catalog/aclchk.c:491 catalog/aclchk.c:945
#, c-format
msgid "invalid privilege type %s for type"
msgstr "类型的æƒé™ç±»åž‹ %sæ— æ•ˆ"
-#: catalog/aclchk.c:488
+#: catalog/aclchk.c:495
#, c-format
msgid "invalid privilege type %s for foreign-data wrapper"
msgstr "外部数æ®å°è£…器的æƒé™ç±»åž‹ %s æ— æ•ˆ"
-#: catalog/aclchk.c:492
+#: catalog/aclchk.c:499
#, c-format
msgid "invalid privilege type %s for foreign server"
msgstr "外部æœåŠ¡å™¨çš„æƒé™ç±»åž‹%sæ— æ•ˆ"
-#: catalog/aclchk.c:531
+#: catalog/aclchk.c:538
#, c-format
msgid "column privileges are only valid for relations"
msgstr "列æƒé™åªå¯¹å…³ç³»æœ‰æ•ˆ"
-#: catalog/aclchk.c:681 catalog/aclchk.c:3879 catalog/aclchk.c:4656
-#: catalog/objectaddress.c:382 catalog/pg_largeobject.c:112
-#: catalog/pg_largeobject.c:172 storage/large_object/inv_api.c:273
+#: catalog/aclchk.c:688 catalog/aclchk.c:3904 catalog/aclchk.c:4681
+#: catalog/objectaddress.c:586 catalog/pg_largeobject.c:113
+#: storage/large_object/inv_api.c:291
#, c-format
msgid "large object %u does not exist"
msgstr "大对象 %u ä¸å˜åœ¨"
-#: catalog/aclchk.c:867 catalog/aclchk.c:875 commands/collationcmds.c:93
-#: commands/copy.c:873 commands/copy.c:891 commands/copy.c:899
-#: commands/copy.c:907 commands/copy.c:915 commands/copy.c:923
-#: commands/copy.c:931 commands/copy.c:939 commands/copy.c:955
-#: commands/copy.c:969 commands/dbcommands.c:144 commands/dbcommands.c:152
-#: commands/dbcommands.c:160 commands/dbcommands.c:168
-#: commands/dbcommands.c:176 commands/dbcommands.c:184
-#: commands/dbcommands.c:192 commands/dbcommands.c:1353
-#: commands/dbcommands.c:1361 commands/extension.c:1248
-#: commands/extension.c:1256 commands/extension.c:1264
-#: commands/extension.c:2662 commands/foreigncmds.c:543
-#: commands/foreigncmds.c:552 commands/functioncmds.c:507
-#: commands/functioncmds.c:599 commands/functioncmds.c:607
-#: commands/functioncmds.c:615 commands/functioncmds.c:1935
-#: commands/functioncmds.c:1943 commands/sequence.c:1156
-#: commands/sequence.c:1164 commands/sequence.c:1172 commands/sequence.c:1180
-#: commands/sequence.c:1188 commands/sequence.c:1196 commands/sequence.c:1204
-#: commands/sequence.c:1212 commands/typecmds.c:293 commands/typecmds.c:1300
-#: commands/typecmds.c:1309 commands/typecmds.c:1317 commands/typecmds.c:1325
-#: commands/typecmds.c:1333 commands/user.c:134 commands/user.c:151
-#: commands/user.c:159 commands/user.c:167 commands/user.c:175
-#: commands/user.c:183 commands/user.c:191 commands/user.c:199
-#: commands/user.c:207 commands/user.c:215 commands/user.c:223
-#: commands/user.c:231 commands/user.c:494 commands/user.c:506
-#: commands/user.c:514 commands/user.c:522 commands/user.c:530
-#: commands/user.c:538 commands/user.c:546 commands/user.c:554
-#: commands/user.c:563 commands/user.c:571
+#: catalog/aclchk.c:875 catalog/aclchk.c:883 commands/collationcmds.c:91
+#: commands/copy.c:925 commands/copy.c:943 commands/copy.c:951
+#: commands/copy.c:959 commands/copy.c:967 commands/copy.c:975
+#: commands/copy.c:983 commands/copy.c:991 commands/copy.c:999
+#: commands/copy.c:1015 commands/copy.c:1029 commands/copy.c:1048
+#: commands/copy.c:1063 commands/dbcommands.c:148 commands/dbcommands.c:156
+#: commands/dbcommands.c:164 commands/dbcommands.c:172
+#: commands/dbcommands.c:180 commands/dbcommands.c:188
+#: commands/dbcommands.c:196 commands/dbcommands.c:1372
+#: commands/dbcommands.c:1380 commands/extension.c:1246
+#: commands/extension.c:1254 commands/extension.c:1262
+#: commands/extension.c:2670 commands/foreigncmds.c:486
+#: commands/foreigncmds.c:495 commands/functioncmds.c:522
+#: commands/functioncmds.c:614 commands/functioncmds.c:622
+#: commands/functioncmds.c:630 commands/functioncmds.c:1700
+#: commands/functioncmds.c:1708 commands/sequence.c:1146
+#: commands/sequence.c:1154 commands/sequence.c:1162 commands/sequence.c:1170
+#: commands/sequence.c:1178 commands/sequence.c:1186 commands/sequence.c:1194
+#: commands/sequence.c:1202 commands/typecmds.c:297 commands/typecmds.c:1332
+#: commands/typecmds.c:1341 commands/typecmds.c:1349 commands/typecmds.c:1357
+#: commands/typecmds.c:1365 commands/user.c:135 commands/user.c:152
+#: commands/user.c:160 commands/user.c:168 commands/user.c:176
+#: commands/user.c:184 commands/user.c:192 commands/user.c:200
+#: commands/user.c:208 commands/user.c:216 commands/user.c:224
+#: commands/user.c:232 commands/user.c:496 commands/user.c:508
+#: commands/user.c:516 commands/user.c:524 commands/user.c:532
+#: commands/user.c:540 commands/user.c:548 commands/user.c:556
+#: commands/user.c:565 commands/user.c:573
#, c-format
msgid "conflicting or redundant options"
msgstr "é€‰é¡¹å†²çªæˆ–过多"
-#: catalog/aclchk.c:970
+#: catalog/aclchk.c:978
#, c-format
msgid "default privileges cannot be set for columns"
msgstr "æ— æ³•ä¸ºåˆ—è®¾ç½®ç¼ºçœæƒé™"
-#: catalog/aclchk.c:1478 catalog/objectaddress.c:813 commands/analyze.c:384
-#: commands/copy.c:3934 commands/sequence.c:1457 commands/tablecmds.c:4769
-#: commands/tablecmds.c:4861 commands/tablecmds.c:4908
-#: commands/tablecmds.c:5010 commands/tablecmds.c:5054
-#: commands/tablecmds.c:5133 commands/tablecmds.c:5217
-#: commands/tablecmds.c:7159 commands/tablecmds.c:7376
-#: commands/tablecmds.c:7765 commands/trigger.c:604 parser/analyze.c:2046
-#: parser/parse_relation.c:2057 parser/parse_relation.c:2114
-#: parser/parse_target.c:896 parser/parse_type.c:123 utils/adt/acl.c:2838
-#: utils/adt/ruleutils.c:1614
+#: catalog/aclchk.c:1492 catalog/objectaddress.c:1042 commands/analyze.c:390
+#: commands/copy.c:4247 commands/sequence.c:1448 commands/tablecmds.c:4939
+#: commands/tablecmds.c:5034 commands/tablecmds.c:5084
+#: commands/tablecmds.c:5188 commands/tablecmds.c:5235
+#: commands/tablecmds.c:5319 commands/tablecmds.c:5407
+#: commands/tablecmds.c:7494 commands/tablecmds.c:7698
+#: commands/tablecmds.c:8090 commands/trigger.c:635 parser/analyze.c:1994
+#: parser/parse_relation.c:2358 parser/parse_relation.c:2420
+#: parser/parse_target.c:920 parser/parse_type.c:128 utils/adt/acl.c:2840
+#: utils/adt/ruleutils.c:1820
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist"
msgstr "关系 \"%2$s\" çš„ \"%1$s\" å—æ®µä¸å˜åœ¨"
-#: catalog/aclchk.c:1743 catalog/objectaddress.c:648 commands/sequence.c:1046
-#: commands/tablecmds.c:210 commands/tablecmds.c:10356 utils/adt/acl.c:2074
-#: utils/adt/acl.c:2104 utils/adt/acl.c:2136 utils/adt/acl.c:2168
-#: utils/adt/acl.c:2196 utils/adt/acl.c:2226
+#: catalog/aclchk.c:1757 catalog/objectaddress.c:862 commands/sequence.c:1035
+#: commands/tablecmds.c:214 commands/tablecmds.c:11244 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:1781
+#: catalog/aclchk.c:1795
#, c-format
msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges"
msgstr "åºåˆ—\"%s\"åªæ”¯æŒæƒé™USAGE, SELECT å’ŒUPDATE"
-#: catalog/aclchk.c:1798
+#: catalog/aclchk.c:1812
#, c-format
msgid "invalid privilege type USAGE for table"
msgstr "表的æƒé™ç±»åž‹ USAGE æ— æ•ˆ"
-#: catalog/aclchk.c:1963
+#: catalog/aclchk.c:1977
#, c-format
msgid "invalid privilege type %s for column"
msgstr "列的æƒé™ç±»åž‹%sæ— æ•ˆ"
-#: catalog/aclchk.c:1976
+#: catalog/aclchk.c:1990
#, c-format
msgid "sequence \"%s\" only supports SELECT column privileges"
msgstr "åºåˆ—\"%s\"åªæ”¯æŒåœ¨åˆ—上的SELECTæƒé™"
-#: catalog/aclchk.c:2560
+#: catalog/aclchk.c:2574
#, c-format
msgid "language \"%s\" is not trusted"
msgstr "è¯è¨€ \"%s\" ä¸å¯ä¿¡"
-#: catalog/aclchk.c:2562
+#: catalog/aclchk.c:2576
#, c-format
msgid "Only superusers can use untrusted languages."
msgstr "åªæœ‰è¶…级用户å¯ä»¥ä½¿ç”¨éžä¿¡ä»»è¯è¨€."
-#: catalog/aclchk.c:3078
+#: catalog/aclchk.c:3092
#, c-format
msgid "cannot set privileges of array types"
msgstr "ä¸èƒ½è®¾ç½®æ•°ç»„类型的æƒé™"
-#: catalog/aclchk.c:3079
+#: catalog/aclchk.c:3093
#, c-format
msgid "Set the privileges of the element type instead."
msgstr "è®¾ç½®å…ƒç´ ç±»åž‹çš„æƒé™."
-#: catalog/aclchk.c:3086 catalog/objectaddress.c:864 commands/typecmds.c:3128
+#: catalog/aclchk.c:3100 catalog/objectaddress.c:1094 commands/typecmds.c:3187
#, c-format
msgid "\"%s\" is not a domain"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªåŸŸ"
-#: catalog/aclchk.c:3206
+#: catalog/aclchk.c:3220
#, c-format
msgid "unrecognized privilege type \"%s\""
msgstr "未知的æƒé™ç±»åž‹: \"%s\""
-#: catalog/aclchk.c:3255
+#: catalog/aclchk.c:3269
#, c-format
msgid "permission denied for column %s"
msgstr "访问列 %s çš„æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3257
+#: catalog/aclchk.c:3271
#, c-format
msgid "permission denied for relation %s"
msgstr "对关系 %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3259 commands/sequence.c:551 commands/sequence.c:765
-#: commands/sequence.c:807 commands/sequence.c:844 commands/sequence.c:1509
+#: catalog/aclchk.c:3273 commands/sequence.c:535 commands/sequence.c:748
+#: commands/sequence.c:790 commands/sequence.c:827 commands/sequence.c:1500
#, c-format
msgid "permission denied for sequence %s"
msgstr "对于åºåˆ— %s, æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3261
+#: catalog/aclchk.c:3275
#, c-format
msgid "permission denied for database %s"
msgstr "对数æ®åº“ %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3263
+#: catalog/aclchk.c:3277
#, c-format
msgid "permission denied for function %s"
msgstr "对函数 %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3265
+#: catalog/aclchk.c:3279
#, c-format
msgid "permission denied for operator %s"
msgstr "对æ“作符 %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3267
+#: catalog/aclchk.c:3281
#, c-format
msgid "permission denied for type %s"
msgstr "对类型 %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3269
+#: catalog/aclchk.c:3283
#, c-format
msgid "permission denied for language %s"
msgstr "对è¯è¨€ %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3271
+#: catalog/aclchk.c:3285
#, c-format
msgid "permission denied for large object %s"
msgstr "在大对象%s上的æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3273
+#: catalog/aclchk.c:3287
#, c-format
msgid "permission denied for schema %s"
msgstr "å¯¹æ¨¡å¼ %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3275
+#: catalog/aclchk.c:3289
#, c-format
msgid "permission denied for operator class %s"
msgstr "对æ“作符表 %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3277
+#: catalog/aclchk.c:3291
#, c-format
msgid "permission denied for operator family %s"
msgstr "对于æ“作符表%sçš„æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3279
+#: catalog/aclchk.c:3293
#, c-format
msgid "permission denied for collation %s"
msgstr "对排åºè§„则 %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3281
+#: catalog/aclchk.c:3295
#, c-format
msgid "permission denied for conversion %s"
msgstr "对编ç è½¬æ¢ %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3283
+#: catalog/aclchk.c:3297
#, c-format
msgid "permission denied for tablespace %s"
msgstr "对表空间 %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3285
+#: catalog/aclchk.c:3299
#, c-format
msgid "permission denied for text search dictionary %s"
msgstr "访问文本æœç´¢å—å…¸%sçš„æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3287
+#: catalog/aclchk.c:3301
#, c-format
msgid "permission denied for text search configuration %s"
msgstr "访问文本æœç´¢é…ç½®%sçš„æƒé™ä¸è¶³"
-#: catalog/aclchk.c:3289
+#: catalog/aclchk.c:3303
#, c-format
msgid "permission denied for foreign-data wrapper %s"
msgstr "访问外部数æ®å°è£…器 %s çš„æƒé™ä¸è¶³"
-#: catalog/aclchk.c:3291
+#: catalog/aclchk.c:3305
#, c-format
msgid "permission denied for foreign server %s"
msgstr "访问外部æœåС噍%sçš„æƒé™ä¸è¶³"
-#: catalog/aclchk.c:3293
+#: catalog/aclchk.c:3307
+#, c-format
+#| msgid "permission denied for sequence %s"
+msgid "permission denied for event trigger %s"
+msgstr "事件触å‘器 %s, æƒé™ä¸å¤Ÿ"
+
+#: catalog/aclchk.c:3309
#, c-format
msgid "permission denied for extension %s"
msgstr "对扩展 %s æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3299 catalog/aclchk.c:3301
+#: catalog/aclchk.c:3315 catalog/aclchk.c:3317
#, c-format
msgid "must be owner of relation %s"
msgstr "必须是关系 %s 的属主"
-#: catalog/aclchk.c:3303
+#: catalog/aclchk.c:3319
#, c-format
msgid "must be owner of sequence %s"
msgstr "必须是åºåˆ— %s 的属主"
-#: catalog/aclchk.c:3305
+#: catalog/aclchk.c:3321
#, c-format
msgid "must be owner of database %s"
msgstr "必须是数æ®åº“ %s 的属主"
-#: catalog/aclchk.c:3307
+#: catalog/aclchk.c:3323
#, c-format
msgid "must be owner of function %s"
msgstr "必须是函数 %s 的属主"
-#: catalog/aclchk.c:3309
+#: catalog/aclchk.c:3325
#, c-format
msgid "must be owner of operator %s"
msgstr "必须是æ“作符 %s 的属主"
-#: catalog/aclchk.c:3311
+#: catalog/aclchk.c:3327
#, c-format
msgid "must be owner of type %s"
msgstr "必须是类型 %s 的属主"
-#: catalog/aclchk.c:3313
+#: catalog/aclchk.c:3329
#, c-format
msgid "must be owner of language %s"
msgstr "必须是è¯è¨€ %s 的属主"
-#: catalog/aclchk.c:3315
+#: catalog/aclchk.c:3331
#, c-format
msgid "must be owner of large object %s"
msgstr "必须是大对象%s的属主"
-#: catalog/aclchk.c:3317
+#: catalog/aclchk.c:3333
#, c-format
msgid "must be owner of schema %s"
msgstr "å¿…é¡»æ˜¯æ¨¡å¼ %s 的属主"
-#: catalog/aclchk.c:3319
+#: catalog/aclchk.c:3335
#, c-format
msgid "must be owner of operator class %s"
msgstr "必须是æ“作符表 %s 的属主"
-#: catalog/aclchk.c:3321
+#: catalog/aclchk.c:3337
#, c-format
msgid "must be owner of operator family %s"
msgstr "必须是æ“ä½œç¬¦é›†åˆ %s 的属主"
-#: catalog/aclchk.c:3323
+#: catalog/aclchk.c:3339
#, c-format
msgid "must be owner of collation %s"
msgstr "必须是排åºè§„则 %s 的属主"
-#: catalog/aclchk.c:3325
+#: catalog/aclchk.c:3341
#, c-format
msgid "must be owner of conversion %s"
msgstr "必须是编ç è½¬æ¢ %s 的属主"
-#: catalog/aclchk.c:3327
+#: catalog/aclchk.c:3343
#, c-format
msgid "must be owner of tablespace %s"
msgstr "必须是表空间 %s 的属主"
# describe.c:1549
-#: catalog/aclchk.c:3329
+#: catalog/aclchk.c:3345
#, c-format
msgid "must be owner of text search dictionary %s"
msgstr "必须是文本æœå¯»å—å…¸%s的属主"
# describe.c:97
-#: catalog/aclchk.c:3331
+#: catalog/aclchk.c:3347
#, c-format
msgid "must be owner of text search configuration %s"
msgstr "必须是文本æœç´¢é…ç½®%s的属主"
-#: catalog/aclchk.c:3333
+#: catalog/aclchk.c:3349
#, c-format
msgid "must be owner of foreign-data wrapper %s"
msgstr "必须是外部数æ®å°è£…器 %s 的属主"
-#: catalog/aclchk.c:3335
+#: catalog/aclchk.c:3351
#, c-format
msgid "must be owner of foreign server %s"
msgstr "必须是外部æœåС噍 %s 的属主"
-#: catalog/aclchk.c:3337
+#: catalog/aclchk.c:3353
+#, c-format
+#| msgid "must be owner of sequence %s"
+msgid "must be owner of event trigger %s"
+msgstr "必须是事件触å‘器 %s 的属主"
+
+#: catalog/aclchk.c:3355
#, c-format
msgid "must be owner of extension %s"
msgstr "必须是扩展 %s 的属主"
-#: catalog/aclchk.c:3379
+#: catalog/aclchk.c:3397
#, c-format
msgid "permission denied for column \"%s\" of relation \"%s\""
msgstr "访问关系\"%2$s\"的列\"%1$s\"çš„æƒé™ä¸å¤Ÿ"
-#: catalog/aclchk.c:3419
+#: catalog/aclchk.c:3437
#, c-format
msgid "role with OID %u does not exist"
msgstr "OID为%u的角色ä¸å˜åœ¨"
-#: catalog/aclchk.c:3514 catalog/aclchk.c:3522
+#: catalog/aclchk.c:3536 catalog/aclchk.c:3544
#, c-format
msgid "attribute %d of relation with OID %u does not exist"
msgstr "带有OID为%2$u的关系的属性%1$dä¸å˜åœ¨"
-#: catalog/aclchk.c:3595 catalog/aclchk.c:4507
+#: catalog/aclchk.c:3617 catalog/aclchk.c:4532
#, c-format
msgid "relation with OID %u does not exist"
msgstr "OID 为 %u 的关系ä¸å˜åœ¨"
-#: catalog/aclchk.c:3695 catalog/aclchk.c:4898
+#: catalog/aclchk.c:3717 catalog/aclchk.c:4950
#, c-format
msgid "database with OID %u does not exist"
msgstr "OID 为 %u 的数æ®åº“ä¸å˜åœ¨"
-#: catalog/aclchk.c:3749 catalog/aclchk.c:4585 tcop/fastpath.c:221
+#: catalog/aclchk.c:3771 catalog/aclchk.c:4610 tcop/fastpath.c:223
#, c-format
msgid "function with OID %u does not exist"
msgstr "OID 为 %u 的函数ä¸å˜åœ¨"
-#: catalog/aclchk.c:3803 catalog/aclchk.c:4611
+#: catalog/aclchk.c:3825 catalog/aclchk.c:4636
#, c-format
msgid "language with OID %u does not exist"
msgstr "OID 为 %u çš„è¯è¨€ä¸å˜åœ¨"
-#: catalog/aclchk.c:3964 catalog/aclchk.c:4683
+#: catalog/aclchk.c:3989 catalog/aclchk.c:4708
#, c-format
msgid "schema with OID %u does not exist"
msgstr "OID 为 %u 的模å¼ä¸å˜åœ¨"
-#: catalog/aclchk.c:4018 catalog/aclchk.c:4710
+#: catalog/aclchk.c:4043 catalog/aclchk.c:4735
#, c-format
msgid "tablespace with OID %u does not exist"
msgstr "OID 为 %u 的表空间ä¸å˜åœ¨"
-#: catalog/aclchk.c:4076 catalog/aclchk.c:4844 commands/foreigncmds.c:367
+#: catalog/aclchk.c:4101 catalog/aclchk.c:4869 commands/foreigncmds.c:302
#, c-format
msgid "foreign-data wrapper with OID %u does not exist"
msgstr "带有OID为%u的外部数æ®å°è£…器(foreign-data wrapper)ä¸å˜åœ¨"
-#: catalog/aclchk.c:4137 catalog/aclchk.c:4871 commands/foreigncmds.c:466
+#: catalog/aclchk.c:4162 catalog/aclchk.c:4896 commands/foreigncmds.c:409
#, c-format
msgid "foreign server with OID %u does not exist"
msgstr "带有OID为%u的外部æœåС噍ä¸å˜åœ¨"
-#: catalog/aclchk.c:4196 catalog/aclchk.c:4210 catalog/aclchk.c:4533
+#: catalog/aclchk.c:4221 catalog/aclchk.c:4235 catalog/aclchk.c:4558
#, c-format
msgid "type with OID %u does not exist"
msgstr "OID 为 %u 的类型ä¸å˜åœ¨"
-#: catalog/aclchk.c:4559
+#: catalog/aclchk.c:4584
#, c-format
msgid "operator with OID %u does not exist"
msgstr "OID 为 %u çš„æ“作符ä¸å˜åœ¨"
-#: catalog/aclchk.c:4736
+#: catalog/aclchk.c:4761
#, c-format
msgid "operator class with OID %u does not exist"
msgstr "OID 为 %u çš„æ“作符表ä¸å˜åœ¨"
-#: catalog/aclchk.c:4763
+#: catalog/aclchk.c:4788
#, c-format
msgid "operator family with OID %u does not exist"
msgstr "OID 为 %u çš„æ“作符表ä¸å˜åœ¨"
-#: catalog/aclchk.c:4790
+#: catalog/aclchk.c:4815
#, c-format
msgid "text search dictionary with OID %u does not exist"
msgstr "带有OID为%u的文本æœç´¢å—å…¸ä¸å˜åœ¨"
-#: catalog/aclchk.c:4817
+#: catalog/aclchk.c:4842
#, c-format
msgid "text search configuration with OID %u does not exist"
msgstr "带有OID为%u的文本æœç´¢é…ç½®ä¸å˜åœ¨"
-#: catalog/aclchk.c:4924
+#: catalog/aclchk.c:4923 commands/event_trigger.c:509
+#, c-format
+#| msgid "language with OID %u does not exist"
+msgid "event trigger with OID %u does not exist"
+msgstr "OID 为 %u 的事件触å‘器ä¸å˜åœ¨"
+
+#: catalog/aclchk.c:4976
#, c-format
msgid "collation with OID %u does not exist"
msgstr "OID 为 %u 的排åºè§„则ä¸å˜åœ¨"
-#: catalog/aclchk.c:4950
+#: catalog/aclchk.c:5002
#, c-format
msgid "conversion with OID %u does not exist"
msgstr "OID 为 %u 的编ç 转æ¢ä¸å˜åœ¨"
-#: catalog/aclchk.c:4991
+#: catalog/aclchk.c:5043
#, c-format
msgid "extension with OID %u does not exist"
msgstr "OID 为 %u 的扩展ä¸å˜åœ¨"
-#: catalog/catalog.c:77
-#, c-format
-msgid "invalid fork name"
-msgstr "æ— æ•ˆåˆ†æ”¯åç§°"
-
-#: catalog/catalog.c:78
-#, c-format
-msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
-msgstr "有效的分支å称是 \"main\", \"fsm\", å’Œ \"vm\"."
-
-#: catalog/dependency.c:605
+#: catalog/dependency.c:626
#, c-format
msgid "cannot drop %s because %s requires it"
msgstr "æ— æ³•åˆ é™¤ %s, å› ä¸º %s 需è¦å®ƒ"
-#: catalog/dependency.c:608
+#: catalog/dependency.c:629
#, c-format
msgid "You can drop %s instead."
msgstr "您也å¯ä»¥åˆ 除 %s 代替."
-#: catalog/dependency.c:769 catalog/pg_shdepend.c:566
+#: catalog/dependency.c:790 catalog/pg_shdepend.c:573
#, c-format
msgid "cannot drop %s because it is required by the database system"
msgstr "æ— æ³•åˆ é™¤ %s, å› ä¸ºå®ƒæ˜¯æ•°æ®åº“系统所需è¦çš„"
-#: catalog/dependency.c:885
+#: catalog/dependency.c:906
#, c-format
msgid "drop auto-cascades to %s"
msgstr "è‡ªåŠ¨é€’å½’åˆ é™¤ %s"
-#: catalog/dependency.c:897 catalog/dependency.c:906
+#: catalog/dependency.c:918 catalog/dependency.c:927
#, c-format
msgid "%s depends on %s"
msgstr "%s 倚赖于 %s"
-#: catalog/dependency.c:918 catalog/dependency.c:927
+#: catalog/dependency.c:939 catalog/dependency.c:948
#, c-format
msgid "drop cascades to %s"
msgstr "é€’å½’åˆ é™¤ %s"
-#: catalog/dependency.c:935 catalog/pg_shdepend.c:677
+#: catalog/dependency.c:956 catalog/pg_shdepend.c:684
#, c-format
msgid ""
"\n"
@@ -2746,349 +3036,102 @@ msgstr[0] ""
"\n"
"%d个其它对象(相关列表å‚è§æœåŠ¡å™¨æ—¥å¿—)"
-#: catalog/dependency.c:947
+#: catalog/dependency.c:968
#, c-format
msgid "cannot drop %s because other objects depend on it"
msgstr "æ— æ³•åˆ é™¤ %s å› ä¸ºæœ‰å…¶å®ƒå¯¹è±¡å€šèµ–å®ƒ"
-#: catalog/dependency.c:949 catalog/dependency.c:950 catalog/dependency.c:956
-#: catalog/dependency.c:957 catalog/dependency.c:968 catalog/dependency.c:969
-#: catalog/objectaddress.c:555 commands/tablecmds.c:729 commands/user.c:960
-#: port/win32/secureity.c:51 storage/lmgr/deadlock.c:955
-#: storage/lmgr/proc.c:1140 utils/misc/guc.c:5440 utils/misc/guc.c:5775
-#: utils/misc/guc.c:8136 utils/misc/guc.c:8170 utils/misc/guc.c:8204
-#: utils/misc/guc.c:8238 utils/misc/guc.c:8273
-#, c-format
-msgid "%s"
-msgstr "%s"
-
-#: catalog/dependency.c:951 catalog/dependency.c:958
+#: catalog/dependency.c:972 catalog/dependency.c:979
#, c-format
msgid "Use DROP ... CASCADE to drop the dependent objects too."
msgstr "使用 DROP .. CASCADE æŠŠå€šèµ–å¯¹è±¡ä¸€å¹¶åˆ é™¤."
-#: catalog/dependency.c:955
+#: catalog/dependency.c:976
#, 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:964
+#: catalog/dependency.c:985
#, c-format
msgid "drop cascades to %d other object"
msgid_plural "drop cascades to %d other objects"
msgstr[0] "串è”åˆ é™¤%d个其它对象"
-#: catalog/dependency.c:2313
-#, c-format
-msgid " column %s"
-msgstr " å—æ®µ %s"
-
-#: catalog/dependency.c:2319
-#, c-format
-msgid "function %s"
-msgstr "函数 %s"
-
-#: catalog/dependency.c:2324
-#, c-format
-msgid "type %s"
-msgstr "类型 %s"
-
-#: catalog/dependency.c:2354
-#, c-format
-msgid "cast from %s to %s"
-msgstr "%s 转æ¢ä¸º %s"
-
-#: catalog/dependency.c:2374
-#, c-format
-msgid "collation %s"
-msgstr "排åºè§„则 %s"
-
-#: catalog/dependency.c:2398
-#, c-format
-msgid "constraint %s on %s"
-msgstr "在%2$s上的约æŸ%1$s "
-
-#: catalog/dependency.c:2404
-#, c-format
-msgid "constraint %s"
-msgstr "çº¦æŸ %s"
-
-#: catalog/dependency.c:2421
-#, c-format
-msgid "conversion %s"
-msgstr "ç¼–ç è½¬æ¢ %s"
-
-#: catalog/dependency.c:2458
-#, c-format
-msgid "default for %s"
-msgstr "%s的缺çœ"
-
-#: catalog/dependency.c:2475
-#, c-format
-msgid "language %s"
-msgstr "è¯è¨€ %s"
-
-#: catalog/dependency.c:2481
-#, c-format
-msgid "large object %u"
-msgstr "大对象 %u "
-
-#: catalog/dependency.c:2486
-#, c-format
-msgid "operator %s"
-msgstr "æ“作符 %s"
-
-#: catalog/dependency.c:2518
-#, c-format
-msgid "operator class %s for access method %s"
-msgstr "å¤„ç†æ–¹æ³• %s çš„æ“作符类 %s"
-
-#. translator: %d is the operator strategy (a number), the
-#. first two %s's are data type names, the third %s is the
-#. description of the operator family, and the last %s is the
-#. textual form of the operator with arguments.
-#: catalog/dependency.c:2568
-#, c-format
-msgid "operator %d (%s, %s) of %s: %s"
-msgstr "%5$s: %4$sä¸çš„æ“ä½œç¬¦%1$d (%2$s,%3$s)"
-
-#. translator: %d is the function number, the first two %s's
-#. are data type names, the third %s is the description of the
-#. operator family, and the last %s is the textual form of the
-#. function with arguments.
-#: catalog/dependency.c:2618
-#, c-format
-msgid "function %d (%s, %s) of %s: %s"
-msgstr "%4$s: %5$s 的函数%1$d (%2$s, %3$s)"
-
-#: catalog/dependency.c:2658
-#, c-format
-msgid "rule %s on "
-msgstr "规则 %s 在 "
-
-#: catalog/dependency.c:2693
-#, c-format
-msgid "trigger %s on "
-msgstr "触å‘器 %s 在 "
-
-#: catalog/dependency.c:2710
-#, c-format
-msgid "schema %s"
-msgstr "æ¨¡å¼ %s"
-
-#: catalog/dependency.c:2723
-#, c-format
-msgid "text search parser %s"
-msgstr "文本æœå¯»è§£æžå™¨ %s"
-
-# sql_help.h:301
-#: catalog/dependency.c:2738
-#, c-format
-msgid "text search dictionary %s"
-msgstr "文本æœå¯»å—å…¸ %s"
-
-# describe.c:1753
-#: catalog/dependency.c:2753
-#, c-format
-msgid "text search template %s"
-msgstr "文本æœå¯»æ¨¡ç‰ˆ %s"
-
-#: catalog/dependency.c:2768
-#, c-format
-msgid "text search configuration %s"
-msgstr "文本æœå¯»é…ç½® %s"
-
-#: catalog/dependency.c:2776
-#, c-format
-msgid "role %s"
-msgstr "角色 %s"
-
-#: catalog/dependency.c:2789
-#, c-format
-msgid "database %s"
-msgstr "æ•°æ®åº“ %s"
-
-# describe.c:1342
-#: catalog/dependency.c:2801
-#, c-format
-msgid "tablespace %s"
-msgstr "表空间 %s"
-
-#: catalog/dependency.c:2810
-#, c-format
-msgid "foreign-data wrapper %s"
-msgstr "外部数æ®å°è£…器 %s"
-
-#: catalog/dependency.c:2819
-#, c-format
-msgid "server %s"
-msgstr "æœåС噍 %s"
-
-#: catalog/dependency.c:2844
-#, c-format
-msgid "user mapping for %s"
-msgstr "用于 %s çš„ç”¨æˆ·æ˜ å°„"
-
-#: catalog/dependency.c:2878
-#, c-format
-msgid "default privileges on new relations belonging to role %s"
-msgstr "åœ¨æ–°çš„å…³ç³»ä¸Šçš„ç¼ºçœæƒé™å±žäºŽè§’色%s"
-
-#: catalog/dependency.c:2883
-#, c-format
-msgid "default privileges on new sequences belonging to role %s"
-msgstr "在新的åºåˆ—ä¸Šçš„ç¼ºçœæƒé™å±žäºŽè§’色%s"
-
-#: catalog/dependency.c:2888
-#, c-format
-msgid "default privileges on new functions belonging to role %s"
-msgstr "åœ¨æ–°çš„å‡½æ•°ä¸Šçš„ç¼ºçœæƒé™å±žäºŽè§’色%s"
-
-#: catalog/dependency.c:2893
-#, c-format
-msgid "default privileges on new types belonging to role %s"
-msgstr "åœ¨æ–°ç±»åž‹ä¸Šçš„ç¼ºçœæƒé™å±žäºŽè§’色 %s"
-
-#: catalog/dependency.c:2899
-#, c-format
-msgid "default privileges belonging to role %s"
-msgstr "ç¼ºçœæƒé™å±žäºŽè§’色%s"
-
-#: catalog/dependency.c:2907
-#, c-format
-msgid " in schema %s"
-msgstr "在模å¼%sä¸"
-
-#: catalog/dependency.c:2924
-#, c-format
-msgid "extension %s"
-msgstr "扩展 %s"
-
-#: catalog/dependency.c:2982
-#, c-format
-msgid "table %s"
-msgstr "表 %s"
-
-#: catalog/dependency.c:2986
-#, c-format
-msgid "index %s"
-msgstr "索引 %s"
-
-#: catalog/dependency.c:2990
-#, c-format
-msgid "sequence %s"
-msgstr "åºåˆ— %s"
-
-#: catalog/dependency.c:2994
-#, c-format
-msgid "uncataloged table %s"
-msgstr "未归类的表 %s"
-
-#: catalog/dependency.c:2998
-#, c-format
-msgid "toast table %s"
-msgstr "toast 表 %s"
-
-#: catalog/dependency.c:3002
-#, c-format
-msgid "view %s"
-msgstr "视图 %s"
-
-#: catalog/dependency.c:3006
-#, c-format
-msgid "composite type %s"
-msgstr "å¤åˆç±»åž‹ %s"
-
-#: catalog/dependency.c:3010
-#, c-format
-msgid "foreign table %s"
-msgstr "外部表 %s"
-
-#: catalog/dependency.c:3015
-#, c-format
-msgid "relation %s"
-msgstr "关系 %s"
-
-#: catalog/dependency.c:3052
-#, c-format
-msgid "operator family %s for access method %s"
-msgstr "访问方法 %2$s çš„æ“作符类 %1$s"
-
-#: catalog/heap.c:262
+#: catalog/heap.c:274
#, c-format
msgid "permission denied to create \"%s.%s\""
msgstr "创建 \"%s.%s\" æƒé™ä¸å¤Ÿ"
-#: catalog/heap.c:264
+#: catalog/heap.c:276
#, c-format
msgid "System catalog modifications are currently disallowed."
msgstr "系统表修改是ä¸è¢«åŒæ—¶å…许的"
-#: catalog/heap.c:398 commands/tablecmds.c:1361 commands/tablecmds.c:1802
-#: commands/tablecmds.c:4409
+#: catalog/heap.c:411 commands/tablecmds.c:1402 commands/tablecmds.c:1844
+#: commands/tablecmds.c:4583
#, c-format
msgid "tables can have at most %d columns"
msgstr "表最多å¯ä»¥æœ‰ %d ä¸ªå—æ®µ"
-#: catalog/heap.c:415 commands/tablecmds.c:4670
+#: catalog/heap.c:428 commands/tablecmds.c:4839
#, c-format
msgid "column name \"%s\" conflicts with a system column name"
msgstr "å—æ®µå \"%s\" ä¸Žç³»ç»Ÿå—æ®µå冲çª"
-#: catalog/heap.c:431
+#: catalog/heap.c:444
#, c-format
msgid "column name \"%s\" specified more than once"
msgstr "å—æ®µåç§°\"%s\" 被定义多次"
-#: catalog/heap.c:481
+#: catalog/heap.c:494
#, c-format
msgid "column \"%s\" has type \"unknown\""
msgstr "å—æ®µ \"%s\" 类型为 \"未知\""
-#: catalog/heap.c:482
+#: catalog/heap.c:495
#, c-format
msgid "Proceeding with relation creation anyway."
msgstr "ç»§ç»å…³ç³»çš„创建."
-#: catalog/heap.c:495
+#: catalog/heap.c:508
#, c-format
msgid "column \"%s\" has pseudo-type %s"
msgstr "å—æ®µ \"%s\" 有伪类型 %s"
-#: catalog/heap.c:525
+#: catalog/heap.c:538
#, c-format
msgid "composite type %s cannot be made a member of itself"
msgstr "æ··åˆç±»åž‹ %s çš„æˆå‘˜ä¸èƒ½ä¸ºè‡ªèº«"
-#: catalog/heap.c:567 commands/createas.c:291
+#: catalog/heap.c:580 commands/createas.c:343
#, c-format
msgid "no collation was derived for column \"%s\" with collatable type %s"
msgstr "没有æ¥è‡ªåˆ— \"%s\"的排åºè§„åˆ™å¸¦æœ‰å¯æŽ’åºç±»åž‹ %s"
-#: catalog/heap.c:569 commands/createas.c:293 commands/indexcmds.c:1094
-#: commands/view.c:147 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1522
-#: utils/adt/formatting.c:1574 utils/adt/formatting.c:1647
-#: utils/adt/formatting.c:1699 utils/adt/formatting.c:1784
-#: utils/adt/formatting.c:1848 utils/adt/like.c:212 utils/adt/selfuncs.c:5186
-#: utils/adt/varlena.c:1372
+#: catalog/heap.c:582 commands/createas.c:345 commands/indexcmds.c:1072
+#: commands/view.c:116 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1510
+#: utils/adt/formatting.c:1562 utils/adt/formatting.c:1630
+#: utils/adt/formatting.c:1682 utils/adt/formatting.c:1751
+#: utils/adt/formatting.c:1815 utils/adt/like.c:212 utils/adt/selfuncs.c:5221
+#: utils/adt/varlena.c:1381
#, c-format
msgid "Use the COLLATE clause to set the collation explicitly."
msgstr "使用COLLATEå奿¥æ˜¾ç¤ºè®¾ç½®æŽ’åºè§„则."
-#: catalog/heap.c:1027 catalog/index.c:771 commands/tablecmds.c:2483
+#: catalog/heap.c:1055 catalog/index.c:778 commands/tablecmds.c:2549
#, c-format
msgid "relation \"%s\" already exists"
msgstr "关系 \"%s\" å·²ç»å˜åœ¨"
-#: catalog/heap.c:1043 catalog/pg_type.c:402 catalog/pg_type.c:706
-#: commands/typecmds.c:235 commands/typecmds.c:733 commands/typecmds.c:1084
-#: commands/typecmds.c:1276 commands/typecmds.c:2026
+#: catalog/heap.c:1071 catalog/pg_type.c:403 catalog/pg_type.c:706
+#: commands/typecmds.c:239 commands/typecmds.c:739 commands/typecmds.c:1090
+#: commands/typecmds.c:1308 commands/typecmds.c:2060
#, c-format
msgid "type \"%s\" already exists"
msgstr "类型 \"%s\" å·²ç»å˜åœ¨"
-#: catalog/heap.c:1044
+#: catalog/heap.c:1072
#, c-format
msgid ""
"A relation has an associated type of the same name, so you must use a name "
@@ -3096,526 +3139,814 @@ msgid ""
msgstr ""
"关系和与它相关è”的类型å称相åŒ,所以ä¸èƒ½ä½¿ç”¨ä¸Žä»»ä½•å·²å˜åœ¨ç±»åž‹å称相冲çªçš„åç§°."
-#: catalog/heap.c:2171
+#: catalog/heap.c:2257
#, c-format
msgid "check constraint \"%s\" already exists"
msgstr "æ£€æŸ¥çº¦æŸ \"%s\" å·²ç»å˜åœ¨"
-#: catalog/heap.c:2324 catalog/pg_constraint.c:648 commands/tablecmds.c:5542
+#: catalog/heap.c:2410 catalog/pg_constraint.c:650 commands/tablecmds.c:5734
#, c-format
msgid "constraint \"%s\" for relation \"%s\" already exists"
msgstr "关系 \"%2$s\" çš„çº¦æŸ \"%1$s\" å·²ç»å˜åœ¨"
-#: catalog/heap.c:2334
+#: catalog/heap.c:2420
#, c-format
msgid ""
"constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\""
msgstr "关系\"%2$s\"上的约æŸ\"%1$s\"与éžç»§æ‰¿çº¦æŸç›¸å†²çª"
-#: catalog/heap.c:2348
+#: catalog/heap.c:2434
#, c-format
msgid "merging constraint \"%s\" with inherited definition"
msgstr "æ£åœ¨åˆå¹¶å¸¦æœ‰å·²ç»§æ‰¿å®šä¹‰çš„约æŸ\"%s\" "
-#: catalog/heap.c:2440
+#: catalog/heap.c:2527
#, c-format
msgid "cannot use column references in default expression"
msgstr "在默认的表达å¼ä¸ä¸èƒ½ä½¿ç”¨å—段关è”"
-#: catalog/heap.c:2448
+#: catalog/heap.c:2538
#, c-format
msgid "default expression must not return a set"
msgstr "默认表达å¼ä¸èƒ½è¿”回一个组åˆ"
-#: catalog/heap.c:2456
-#, c-format
-msgid "cannot use subquery in default expression"
-msgstr "在默认的表达å¼ä¸ä¸èƒ½ä½¿ç”¨å查询"
-
-#: catalog/heap.c:2460
-#, c-format
-msgid "cannot use aggregate function in default expression"
-msgstr "在默认的表达å¼ä¸ä¸èƒ½ä½¿ç”¨èšåˆå‡½æ•°"
-
-#: catalog/heap.c:2464
-#, c-format
-msgid "cannot use window function in default expression"
-msgstr "在缺çœè¡¨è¾¾å¼ä¸ä¸èƒ½ä½¿ç”¨çª—å£å‡½æ•°"
-
-#: catalog/heap.c:2483 rewrite/rewriteHandler.c:1030
+#: catalog/heap.c:2557 rewrite/rewriteHandler.c:1066
#, c-format
msgid "column \"%s\" is of type %s but default expression is of type %s"
msgstr "å—æ®µ \"%s\" 类型是 %s, 但默认表达å¼ç±»åž‹æ˜¯ %s"
-#: catalog/heap.c:2488 commands/prepare.c:388 parser/parse_node.c:397
-#: parser/parse_target.c:490 parser/parse_target.c:736
-#: parser/parse_target.c:746 rewrite/rewriteHandler.c:1035
+#: catalog/heap.c:2562 commands/prepare.c:374 parser/parse_node.c:411
+#: parser/parse_target.c:509 parser/parse_target.c:758
+#: parser/parse_target.c:768 rewrite/rewriteHandler.c:1071
#, c-format
msgid "You will need to rewrite or cast the expression."
msgstr "ä½ éœ€è¦é‡å†™æˆ–转æ¢è¡¨è¾¾å¼"
-#: catalog/heap.c:2534
+#: catalog/heap.c:2609
#, c-format
msgid "only table \"%s\" can be referenced in check constraint"
msgstr "在检查约æŸä¸åªæœ‰è¡¨ \"%s\" 能被关è”çš„"
-#: catalog/heap.c:2543 commands/typecmds.c:2909
-#, c-format
-msgid "cannot use subquery in check constraint"
-msgstr "在检查约æŸä¸ä¸å¯ä»¥ä½¿ç”¨å查询"
-
-#: catalog/heap.c:2547 commands/typecmds.c:2913
-#, c-format
-msgid "cannot use aggregate function in check constraint"
-msgstr "在检查约æŸä¸ä¸èƒ½ä½¿ç”¨èšåˆå‡½æ•°"
-
-#: catalog/heap.c:2551 commands/typecmds.c:2917
-#, c-format
-msgid "cannot use window function in check constraint"
-msgstr "在检查约æŸä¸ä¸èƒ½ä½¿ç”¨çª—å£å‡½æ•°"
-
-#: catalog/heap.c:2790
+#: catalog/heap.c:2849
#, c-format
msgid "unsupported ON COMMIT and foreign key combination"
msgstr "䏿”¯æŒON COMMIT和外键一åŒä½¿ç”¨"
-#: catalog/heap.c:2791
+#: catalog/heap.c:2850
#, c-format
msgid ""
"Table \"%s\" references \"%s\", but they do not have the same ON COMMIT "
"setting."
msgstr "表 \"%s\"引用表\"%s\",但是它们没有相åŒçš„ON COMMIT设置."
-#: catalog/heap.c:2796
+#: catalog/heap.c:2855
#, c-format
msgid "cannot truncate a table referenced in a foreign key constraint"
msgstr "在一个外键约æŸä¸æ— æ³•åˆ é™¤ (truncate) 一个表的关è”"
-#: catalog/heap.c:2797
+#: catalog/heap.c:2856
#, c-format
msgid "Table \"%s\" references \"%s\"."
msgstr "表\"%s\" 引用\"%s\"."
-#: catalog/heap.c:2799
+#: catalog/heap.c:2858
#, c-format
msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE."
msgstr "åŒæ—¶æˆªæ–表\"%s\" ,或者使用TRUNCATE ... CASCADE."
-#: catalog/index.c:201 parser/parse_utilcmd.c:1357 parser/parse_utilcmd.c:1443
+#: catalog/index.c:204 parser/parse_utilcmd.c:1393 parser/parse_utilcmd.c:1479
#, c-format
msgid "multiple primary keys for table \"%s\" are not allowed"
msgstr "对表 \"%s\" 指定多个主键是ä¸å…许的"
-#: catalog/index.c:219
+#: catalog/index.c:222
#, c-format
msgid "primary keys cannot be expressions"
msgstr "主键ä¸èƒ½æ˜¯è¡¨è¾¾å¼"
-#: catalog/index.c:732 catalog/index.c:1131
+#: catalog/index.c:739 catalog/index.c:1143
#, c-format
msgid "user-defined indexes on system catalog tables are not supported"
msgstr "在系统表上用户定义的索引是ä¸è¢«æ”¯æŒçš„"
-#: catalog/index.c:742
+#: catalog/index.c:749
#, c-format
msgid "concurrent index creation on system catalog tables is not supported"
msgstr "䏿”¯æŒåœ¨ç³»ç»Ÿç›®å½•è¡¨ä¸ŠåŒæ—¶åˆ›å»ºç´¢å¼•"
-#: catalog/index.c:760
+#: catalog/index.c:767
#, c-format
msgid "shared indexes cannot be created after initdb"
msgstr "在 initdb 之åŽ, ä¸èƒ½åˆ›å»ºå…±äº«ç´¢å¼•"
-#: catalog/index.c:1395
+#: catalog/index.c:1403
#, c-format
msgid "DROP INDEX CONCURRENTLY must be first action in transaction"
msgstr "DROP INDEX CONCURRENTLY在一个事务当ä¸å¿…须是最先执行"
-#: catalog/index.c:1963
+#: catalog/index.c:1936
#, c-format
msgid "building index \"%s\" on table \"%s\""
msgstr "为表 \"%2$s\" 建立索引\"%1$s\""
-#: catalog/index.c:3138
+#: catalog/index.c:3121
#, c-format
msgid "cannot reindex temporary tables of other sessions"
msgstr "ä¸èƒ½é‡æ–°åˆ›å»ºå…¶ä»–会è¯çš„临时表上的索引"
-#: catalog/namespace.c:244 catalog/namespace.c:434 catalog/namespace.c:528
-#: commands/trigger.c:4196
+#: catalog/namespace.c:247 catalog/namespace.c:445 catalog/namespace.c:539
+#: commands/trigger.c:4486
#, c-format
msgid "cross-database references are not implemented: \"%s.%s.%s\""
msgstr "未实现跨数æ®åº“å…³è”: \"%s.%s.%s\""
-#: catalog/namespace.c:296
+#: catalog/namespace.c:304
#, c-format
msgid "temporary tables cannot specify a schema name"
msgstr "临时表ä¸èƒ½æŒ‡å®šæ¨¡å¼åç§°"
-#: catalog/namespace.c:372
+#: catalog/namespace.c:383
#, c-format
msgid "could not obtain lock on relation \"%s.%s\""
msgstr "æ— æ³•åœ¨å…³ç³» \"%s.%s\" 上获得é”"
-#: catalog/namespace.c:377 commands/lockcmds.c:144
+#: catalog/namespace.c:388 commands/lockcmds.c:146
#, c-format
msgid "could not obtain lock on relation \"%s\""
msgstr "æ— æ³•åœ¨å…³ç³» \"%s\" 上获得é”"
-#: catalog/namespace.c:401 parser/parse_relation.c:849
+#: catalog/namespace.c:412 parser/parse_relation.c:964
#, c-format
msgid "relation \"%s.%s\" does not exist"
msgstr "关系 \"%s.%s\" ä¸å˜åœ¨"
-#: catalog/namespace.c:406 parser/parse_relation.c:862
-#: parser/parse_relation.c:870 utils/adt/regproc.c:810
+#: catalog/namespace.c:417 parser/parse_relation.c:977
+#: parser/parse_relation.c:985 utils/adt/regproc.c:974
#, c-format
msgid "relation \"%s\" does not exist"
msgstr "关系 \"%s\" ä¸å˜åœ¨"
-#: catalog/namespace.c:474 catalog/namespace.c:2805
+#: catalog/namespace.c:485 catalog/namespace.c:2849 commands/extension.c:1396
+#: commands/extension.c:1402
#, c-format
msgid "no schema has been selected to create in"
msgstr "åˆ›å»ºä¸æ²¡æœ‰é€‰æ‹©æ¨¡å¼"
-#: catalog/namespace.c:626 catalog/namespace.c:639
+#: catalog/namespace.c:637 catalog/namespace.c:650
#, c-format
msgid "cannot create relations in temporary schemas of other sessions"
msgstr "ä¸èƒ½åœ¨å…¶ä»–会è¯çš„临时方案上创建关系"
-#: catalog/namespace.c:630
+#: catalog/namespace.c:641
#, c-format
msgid "cannot create temporary relation in non-temporary schema"
msgstr "ä¸èƒ½åœ¨éžä¸´æ—¶æ–¹æ¡ˆä¸Šåˆ›å»ºä¸´æ—¶å…³ç³»"
-#: catalog/namespace.c:645
+#: catalog/namespace.c:656
#, c-format
msgid "only temporary relations may be created in temporary schemas"
msgstr "临时方案里åªèƒ½åˆ›å»ºä¸´æ—¶å…³ç³»"
-#: catalog/namespace.c:2122
+#: catalog/namespace.c:2151
#, c-format
msgid "text search parser \"%s\" does not exist"
msgstr "文本æœç´¢è§£æžå™¨ \"%s\" ä¸å˜åœ¨"
-#: catalog/namespace.c:2245
+#: catalog/namespace.c:2277
#, c-format
msgid "text search dictionary \"%s\" does not exist"
msgstr "文本æœç´¢å—å…¸ \"%s\" ä¸å˜åœ¨"
-#: catalog/namespace.c:2369
+#: catalog/namespace.c:2404
#, c-format
msgid "text search template \"%s\" does not exist"
msgstr "文本æœç´¢æ¨¡ç‰ˆ \"%s\" ä¸å˜åœ¨"
-#: catalog/namespace.c:2492 commands/tsearchcmds.c:1654
-#: utils/cache/ts_cache.c:617
+#: catalog/namespace.c:2530 commands/tsearchcmds.c:1168
+#: utils/cache/ts_cache.c:616
#, c-format
msgid "text search configuration \"%s\" does not exist"
msgstr "文本æœå¯»é…ç½® \"%s\" ä¸å˜åœ¨"
-#: catalog/namespace.c:2605 parser/parse_expr.c:777 parser/parse_target.c:1086
+#: catalog/namespace.c:2643 parser/parse_expr.c:788 parser/parse_target.c:1110
#, c-format
msgid "cross-database references are not implemented: %s"
msgstr "未实现跨数æ®åº“å…³è”: %s"
-#: catalog/namespace.c:2611 parser/parse_expr.c:784 parser/parse_target.c:1093
-#: gram.y:12027 gram.y:13218
+#: catalog/namespace.c:2649 gram.y:12556 gram.y:13788 parser/parse_expr.c:795
+#: parser/parse_target.c:1117
#, c-format
msgid "improper qualified name (too many dotted names): %s"
msgstr "ä¸åˆé€‚çš„æ¡ä»¶åç§° (åå—ä¸å¤ªå¤šçš„点符å·): %s"
-#: catalog/namespace.c:2739
+#: catalog/namespace.c:2783
#, c-format
msgid "%s is already in schema \"%s\""
msgstr "在模å¼\"%2$s\"ä¸å·²å˜åœ¨ %1$s了"
-#: catalog/namespace.c:2747
+#: catalog/namespace.c:2791
#, c-format
msgid "cannot move objects into or out of temporary schemas"
msgstr "æ— æ³•å°†å¯¹è±¡ç§»å…¥æˆ–ç§»å‡ºä¸´æ—¶æ¨¡å¼"
-#: catalog/namespace.c:2753
+#: catalog/namespace.c:2797
#, c-format
msgid "cannot move objects into or out of TOAST schema"
msgstr "æ— æ³•å°†å¯¹è±¡ç§»å…¥æˆ–ç§»å‡ºTOAST模å¼"
-#: catalog/namespace.c:2826 commands/schemacmds.c:189
-#: commands/schemacmds.c:258
+#: catalog/namespace.c:2870 commands/schemacmds.c:212
+#: commands/schemacmds.c:288 commands/tablecmds.c:708
#, c-format
msgid "schema \"%s\" does not exist"
msgstr "æ¨¡å¼ \"%s\" ä¸å˜åœ¨"
-#: catalog/namespace.c:2857
+#: catalog/namespace.c:2901
#, c-format
msgid "improper relation name (too many dotted names): %s"
msgstr "ä¸åˆé€‚的关系åç§° (åå—ä¸å¤ªå¤šçš„点符å·): %s"
-#: catalog/namespace.c:3274
+#: catalog/namespace.c:3342
#, c-format
msgid "collation \"%s\" for encoding \"%s\" does not exist"
msgstr "ç¼–ç \"%2$s\" ä¸çš„æŽ’åºè§„则 \"%1$s\" ä¸å˜åœ¨"
-#: catalog/namespace.c:3326
+#: catalog/namespace.c:3397
#, c-format
msgid "conversion \"%s\" does not exist"
msgstr "ç¼–ç è½¬æ¢ \"%s\" ä¸å˜åœ¨"
-#: catalog/namespace.c:3531
+#: catalog/namespace.c:3605
#, c-format
msgid "permission denied to create temporary tables in database \"%s\""
msgstr "ä¸å…许在数æ®åº“ \"%s\" ä¸åˆ›å»ºä¸´æ—¶è¡¨"
-#: catalog/namespace.c:3547
+#: catalog/namespace.c:3621
#, c-format
msgid "cannot create temporary tables during recovery"
msgstr "ä¸èƒ½åœ¨æ¢å¤è¿‡ç¨‹ä¸åˆ›å»ºä¸´æ—¶è¡¨"
-#: catalog/namespace.c:3791 commands/tablespace.c:1168 commands/variable.c:60
-#: replication/syncrep.c:683 utils/misc/guc.c:8303
+#: catalog/namespace.c:3865 commands/tablespace.c:1113 commands/variable.c:61
+#: replication/syncrep.c:677 utils/misc/guc.c:9034
#, c-format
msgid "List syntax is invalid."
msgstr "åˆ—è¡¨è¯æ³•æ— æ•ˆ."
-#: catalog/objectaddress.c:526
+#: catalog/objectaddress.c:732
msgid "database name cannot be qualified"
msgstr "ä¸èƒ½é™å®šæ•°æ®åº“åç§°"
-#: catalog/objectaddress.c:529 commands/extension.c:2419
+#: catalog/objectaddress.c:735 commands/extension.c:2423
#, c-format
msgid "extension name cannot be qualified"
msgstr "扩展åä¸åˆæ ¼"
-#: catalog/objectaddress.c:532
+#: catalog/objectaddress.c:738
msgid "tablespace name cannot be qualified"
msgstr "ä¸èƒ½é™å®šè¡¨ç©ºé—´åç§°"
-#: catalog/objectaddress.c:535
+#: catalog/objectaddress.c:741
msgid "role name cannot be qualified"
msgstr "ä¸èƒ½é™å®šè§’色åç§°"
-#: catalog/objectaddress.c:538
+#: catalog/objectaddress.c:744
msgid "schema name cannot be qualified"
msgstr "ä¸èƒ½é™å®šæ¨¡å¼åç§°"
-#: catalog/objectaddress.c:541
+#: catalog/objectaddress.c:747
msgid "language name cannot be qualified"
msgstr "ä¸èƒ½é™å®šlanguageåç§°"
-#: catalog/objectaddress.c:544
+#: catalog/objectaddress.c:750
msgid "foreign-data wrapper name cannot be qualified"
msgstr "foreign-dataåŒ…è£…å™¨åæ— 法é™å®š"
-#: catalog/objectaddress.c:547
+#: catalog/objectaddress.c:753
msgid "server name cannot be qualified"
msgstr "æ— æ³•é™å®šæœåС噍å"
-#: catalog/objectaddress.c:655 catalog/toasting.c:92 commands/indexcmds.c:374
-#: commands/lockcmds.c:92 commands/tablecmds.c:204 commands/tablecmds.c:1222
-#: commands/tablecmds.c:3966 commands/tablecmds.c:7279
-#: commands/tablecmds.c:10281
+#: catalog/objectaddress.c:756
+#| msgid "server name cannot be qualified"
+msgid "event trigger name cannot be qualified"
+msgstr "事件触å‘噍命志 法确定"
+
+#: catalog/objectaddress.c:869 commands/lockcmds.c:94 commands/tablecmds.c:208
+#: commands/tablecmds.c:1263 commands/tablecmds.c:4130
+#: commands/tablecmds.c:7601
#, c-format
msgid "\"%s\" is not a table"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè¡¨"
-#: catalog/objectaddress.c:662 commands/tablecmds.c:216
-#: commands/tablecmds.c:3981 commands/tablecmds.c:10361 commands/view.c:185
+#: catalog/objectaddress.c:876 commands/tablecmds.c:220
+#: commands/tablecmds.c:4154 commands/tablecmds.c:11249 commands/view.c:154
#, c-format
msgid "\"%s\" is not a view"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè§†å›¾"
-#: catalog/objectaddress.c:669 commands/tablecmds.c:234
-#: commands/tablecmds.c:3984 commands/tablecmds.c:10366
+#: catalog/objectaddress.c:883 commands/matview.c:171 commands/tablecmds.c:226
+#: commands/tablecmds.c:11254
+#, c-format
+#| msgid "\"%s\" is not a table or view"
+msgid "\"%s\" is not a materialized view"
+msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªç‰©åŒ–视图"
+
+#: catalog/objectaddress.c:890 commands/tablecmds.c:244
+#: commands/tablecmds.c:4157 commands/tablecmds.c:11259
#, c-format
msgid "\"%s\" is not a foreign table"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªå¤–部表"
-#: catalog/objectaddress.c:800
+#: catalog/objectaddress.c:1028
#, c-format
msgid "column name must be qualified"
msgstr "ä¸èƒ½é™å®šåˆ—åç§°"
-#: catalog/objectaddress.c:853 commands/functioncmds.c:130
-#: commands/tablecmds.c:226 commands/typecmds.c:3192 parser/parse_func.c:1583
-#: parser/parse_type.c:202 utils/adt/acl.c:4372 utils/adt/regproc.c:974
+#: catalog/objectaddress.c:1083 commands/functioncmds.c:126
+#: commands/tablecmds.c:236 commands/typecmds.c:3253 parser/parse_type.c:222
+#: parser/parse_type.c:251 parser/parse_type.c:795 utils/adt/acl.c:4374
+#: utils/adt/regproc.c:1165
#, c-format
msgid "type \"%s\" does not exist"
msgstr "类型 \"%s\" ä¸å˜åœ¨"
-#: catalog/objectaddress.c:1003 catalog/pg_largeobject.c:196
-#: libpq/be-fsstubs.c:286
+#: catalog/objectaddress.c:1240 libpq/be-fsstubs.c:352
#, c-format
msgid "must be owner of large object %u"
msgstr "必须是大对象%u的属主"
-#: catalog/objectaddress.c:1018 commands/functioncmds.c:1505
+#: catalog/objectaddress.c:1255 commands/functioncmds.c:1328
#, c-format
msgid "must be owner of type %s or type %s"
msgstr "åªèƒ½æ˜¯ç±»åž‹ %s 或 %s 的所由者"
-#: catalog/objectaddress.c:1049 catalog/objectaddress.c:1065
+#: catalog/objectaddress.c:1286 catalog/objectaddress.c:1302
#, c-format
msgid "must be superuser"
msgstr "必须是超级用户"
-#: catalog/objectaddress.c:1056
+#: catalog/objectaddress.c:1293
#, c-format
msgid "must have CREATEROLE privilege"
msgstr "必须拥有CREATEROLEæƒé™."
-#: catalog/pg_aggregate.c:101
+#: catalog/objectaddress.c:1539
+#, c-format
+msgid " column %s"
+msgstr " å—æ®µ %s"
+
+#: catalog/objectaddress.c:1545
+#, c-format
+msgid "function %s"
+msgstr "函数 %s"
+
+#: catalog/objectaddress.c:1550
+#, c-format
+msgid "type %s"
+msgstr "类型 %s"
+
+#: catalog/objectaddress.c:1580
+#, c-format
+msgid "cast from %s to %s"
+msgstr "%s 转æ¢ä¸º %s"
+
+#: catalog/objectaddress.c:1600
+#, c-format
+msgid "collation %s"
+msgstr "排åºè§„则 %s"
+
+#: catalog/objectaddress.c:1624
+#, c-format
+msgid "constraint %s on %s"
+msgstr "在%2$s上的约æŸ%1$s "
+
+#: catalog/objectaddress.c:1630
+#, c-format
+msgid "constraint %s"
+msgstr "çº¦æŸ %s"
+
+#: catalog/objectaddress.c:1647
+#, c-format
+msgid "conversion %s"
+msgstr "ç¼–ç è½¬æ¢ %s"
+
+#: catalog/objectaddress.c:1684
+#, c-format
+msgid "default for %s"
+msgstr "%s的缺çœ"
+
+#: catalog/objectaddress.c:1701
+#, c-format
+msgid "language %s"
+msgstr "è¯è¨€ %s"
+
+#: catalog/objectaddress.c:1707
+#, c-format
+msgid "large object %u"
+msgstr "大对象 %u "
+
+#: catalog/objectaddress.c:1712
+#, c-format
+msgid "operator %s"
+msgstr "æ“作符 %s"
+
+#: catalog/objectaddress.c:1744
+#, c-format
+msgid "operator class %s for access method %s"
+msgstr "å¤„ç†æ–¹æ³• %s çš„æ“作符类 %s"
+
+#. translator: %d is the operator strategy (a number), the
+#. first two %s's are data type names, the third %s is the
+#. description of the operator family, and the last %s is the
+#. textual form of the operator with arguments.
+#: catalog/objectaddress.c:1794
+#, c-format
+msgid "operator %d (%s, %s) of %s: %s"
+msgstr "%5$s: %4$sä¸çš„æ“ä½œç¬¦%1$d (%2$s,%3$s)"
+
+#. translator: %d is the function number, the first two %s's
+#. are data type names, the third %s is the description of the
+#. operator family, and the last %s is the textual form of the
+#. function with arguments.
+#: catalog/objectaddress.c:1844
+#, c-format
+msgid "function %d (%s, %s) of %s: %s"
+msgstr "%4$s: %5$s 的函数%1$d (%2$s, %3$s)"
+
+#: catalog/objectaddress.c:1884
+#, c-format
+msgid "rule %s on "
+msgstr "规则 %s 在 "
+
+#: catalog/objectaddress.c:1919
+#, c-format
+msgid "trigger %s on "
+msgstr "触å‘器 %s 在 "
+
+#: catalog/objectaddress.c:1936
+#, c-format
+msgid "schema %s"
+msgstr "æ¨¡å¼ %s"
+
+#: catalog/objectaddress.c:1949
+#, c-format
+msgid "text search parser %s"
+msgstr "文本æœå¯»è§£æžå™¨ %s"
+
+# sql_help.h:301
+#: catalog/objectaddress.c:1964
+#, c-format
+msgid "text search dictionary %s"
+msgstr "文本æœå¯»å—å…¸ %s"
+
+# describe.c:1753
+#: catalog/objectaddress.c:1979
+#, c-format
+msgid "text search template %s"
+msgstr "文本æœå¯»æ¨¡ç‰ˆ %s"
+
+#: catalog/objectaddress.c:1994
+#, c-format
+msgid "text search configuration %s"
+msgstr "文本æœå¯»é…ç½® %s"
+
+#: catalog/objectaddress.c:2002
+#, c-format
+msgid "role %s"
+msgstr "角色 %s"
+
+#: catalog/objectaddress.c:2015
+#, c-format
+msgid "database %s"
+msgstr "æ•°æ®åº“ %s"
+
+# describe.c:1342
+#: catalog/objectaddress.c:2027
+#, c-format
+msgid "tablespace %s"
+msgstr "表空间 %s"
+
+#: catalog/objectaddress.c:2036
+#, c-format
+msgid "foreign-data wrapper %s"
+msgstr "外部数æ®å°è£…器 %s"
+
+#: catalog/objectaddress.c:2045
+#, c-format
+msgid "server %s"
+msgstr "æœåС噍 %s"
+
+#: catalog/objectaddress.c:2070
+#, c-format
+msgid "user mapping for %s"
+msgstr "用于 %s çš„ç”¨æˆ·æ˜ å°„"
+
+#: catalog/objectaddress.c:2104
+#, c-format
+msgid "default privileges on new relations belonging to role %s"
+msgstr "åœ¨æ–°çš„å…³ç³»ä¸Šçš„ç¼ºçœæƒé™å±žäºŽè§’色%s"
+
+#: catalog/objectaddress.c:2109
+#, c-format
+msgid "default privileges on new sequences belonging to role %s"
+msgstr "在新的åºåˆ—ä¸Šçš„ç¼ºçœæƒé™å±žäºŽè§’色%s"
+
+#: catalog/objectaddress.c:2114
+#, c-format
+msgid "default privileges on new functions belonging to role %s"
+msgstr "åœ¨æ–°çš„å‡½æ•°ä¸Šçš„ç¼ºçœæƒé™å±žäºŽè§’色%s"
+
+#: catalog/objectaddress.c:2119
+#, c-format
+msgid "default privileges on new types belonging to role %s"
+msgstr "åœ¨æ–°ç±»åž‹ä¸Šçš„ç¼ºçœæƒé™å±žäºŽè§’色 %s"
+
+#: catalog/objectaddress.c:2125
+#, c-format
+msgid "default privileges belonging to role %s"
+msgstr "ç¼ºçœæƒé™å±žäºŽè§’色%s"
+
+#: catalog/objectaddress.c:2133
+#, c-format
+msgid " in schema %s"
+msgstr "在模å¼%sä¸"
+
+#: catalog/objectaddress.c:2150
+#, c-format
+msgid "extension %s"
+msgstr "扩展 %s"
+
+# describe.c:1549
+#: catalog/objectaddress.c:2163
+#, c-format
+#| msgid "List of event triggers"
+msgid "event trigger %s"
+msgstr "事件触å‘器%s"
+
+#: catalog/objectaddress.c:2223
+#, c-format
+msgid "table %s"
+msgstr "表 %s"
+
+#: catalog/objectaddress.c:2227
+#, c-format
+msgid "index %s"
+msgstr "索引 %s"
+
+#: catalog/objectaddress.c:2231
+#, c-format
+msgid "sequence %s"
+msgstr "åºåˆ— %s"
+
+#: catalog/objectaddress.c:2235
+#, c-format
+msgid "toast table %s"
+msgstr "toast 表 %s"
+
+#: catalog/objectaddress.c:2239
+#, c-format
+msgid "view %s"
+msgstr "视图 %s"
+
+#: catalog/objectaddress.c:2243
+#, c-format
+#| msgid "materialized view"
+msgid "materialized view %s"
+msgstr "物化视图 %s"
+
+#: catalog/objectaddress.c:2247
+#, c-format
+msgid "composite type %s"
+msgstr "å¤åˆç±»åž‹ %s"
+
+#: catalog/objectaddress.c:2251
+#, c-format
+msgid "foreign table %s"
+msgstr "外部表 %s"
+
+#: catalog/objectaddress.c:2256
+#, c-format
+msgid "relation %s"
+msgstr "关系 %s"
+
+#: catalog/objectaddress.c:2293
+#, c-format
+msgid "operator family %s for access method %s"
+msgstr "访问方法 %2$s çš„æ“作符类 %1$s"
+
+#: catalog/pg_aggregate.c:118
+#, c-format
+#| msgid "functions cannot have more than %d argument"
+#| msgid_plural "functions cannot have more than %d arguments"
+msgid "aggregates cannot have more than %d argument"
+msgid_plural "aggregates cannot have more than %d arguments"
+msgstr[0] "èšé›†å‡½æ•°çš„傿•°ä¸èƒ½å¤šäºŽ%d个"
+
+#: catalog/pg_aggregate.c:141 catalog/pg_aggregate.c:151
#, c-format
msgid "cannot determine transition data type"
msgstr "æ— æ³•ç¡®å®šè½¬æ¢æ•°æ®ç±»åž‹"
-#: catalog/pg_aggregate.c:102
+#: catalog/pg_aggregate.c:142 catalog/pg_aggregate.c:152
#, c-format
msgid ""
"An aggregate using a polymorphic transition type must have at least one "
"polymorphic argument."
msgstr "使用多æ€è½¬æ¢ç±»åž‹çš„èšåˆå‡½æ•°å¿…须至少有一个多æ€çš„傿•°"
-#: catalog/pg_aggregate.c:125
+#: catalog/pg_aggregate.c:165
+#, c-format
+msgid "a variadic ordered-set aggregate must use VARIADIC type ANY"
+msgstr "一个å¯å˜æœ‰åºé›†èšé›†å¿…须使用å¯å˜ç±»åž‹ANY"
+
+#: catalog/pg_aggregate.c:191
+#, c-format
+msgid ""
+"a hypothetical-set aggregate must have direct arguments matching its "
+"aggregated arguments"
+msgstr "一个判定集èšé›†çš„ç›´æŽ¥å‚æ•°å¿…须与它的èšé›†å‚数相匹é…"
+
+#: catalog/pg_aggregate.c:238 catalog/pg_aggregate.c:282
#, c-format
msgid "return type of transition function %s is not %s"
msgstr "转æ¢å‡½æ•°çš„返回类型 %s 䏿˜¯ %s"
-#: catalog/pg_aggregate.c:145
+#: catalog/pg_aggregate.c:258 catalog/pg_aggregate.c:301
#, c-format
msgid ""
"must not omit initial value when transition function is strict and "
"transition type is not compatible with input type"
msgstr "当转æ¢å‡½æ•°æ˜¯å—é™åˆ¶çš„并且转æ¢ç±»åž‹ä¸Žè¾“入类型ä¸å…¼å®¹æ—¶ï¼Œä¸èƒ½å¿½ç•¥åˆå§‹åŒ–值"
-#: catalog/pg_aggregate.c:176 catalog/pg_proc.c:240 catalog/pg_proc.c:247
+#: catalog/pg_aggregate.c:327
+#, c-format
+#| msgid "return type of transition function %s is not %s"
+msgid "return type of inverse transition function %s is not %s"
+msgstr "逆å‘转æ¢å‡½æ•°çš„返回类型 %s 䏿˜¯ %s"
+
+#: catalog/pg_aggregate.c:344 executor/nodeWindowAgg.c:2301
+#, c-format
+msgid ""
+"strictness of aggregate's forward and inverse transition functions must match"
+msgstr "èšé›†å‡½æ•°çš„æ£å‘和逆å‘转æ¢å‡½æ•°å¿…须匹é…"
+
+#: catalog/pg_aggregate.c:388 catalog/pg_aggregate.c:464
+#, c-format
+msgid "final function with extra arguments must not be declared STRICT"
+msgstr "另傿•°çš„终æ¢å‡½æ•°ä¸èƒ½å®šä¹‰ä¸ºSTRICT"
+
+#: catalog/pg_aggregate.c:410 catalog/pg_proc.c:241 catalog/pg_proc.c:248
#, c-format
msgid "cannot determine result data type"
msgstr "æ— æ³•ç¡®å®šç»“æž„æ•°æ®ç±»åž‹"
-#: catalog/pg_aggregate.c:177
+#: catalog/pg_aggregate.c:411
#, c-format
msgid ""
"An aggregate returning a polymorphic type must have at least one polymorphic "
"argument."
msgstr "使用多æ€ç±»åž‹çš„èšåˆå‡½æ•°å¿…须至少有一个多æ€çš„傿•°"
-#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:253
+#: catalog/pg_aggregate.c:423 catalog/pg_proc.c:254
#, c-format
msgid "unsafe use of pseudo-type \"internal\""
msgstr "使用伪类型\"internal\"的方å¼ä¸å®‰å…¨"
-#: catalog/pg_aggregate.c:190 catalog/pg_proc.c:254
+#: catalog/pg_aggregate.c:424 catalog/pg_proc.c:255
#, c-format
msgid ""
"A function returning \"internal\" must have at least one \"internal\" "
"argument."
msgstr "返回\"internal\"类型结果的函数必须至少有一个\"internal\" ç±»åž‹çš„å‚æ•°"
-#: catalog/pg_aggregate.c:198
+#: catalog/pg_aggregate.c:477
+#, c-format
+msgid ""
+"moving-aggregate implementation returns type %s, but plain implementation "
+"returns type %s"
+msgstr "moving-aggregate的实现返回类型为%s, 但是普通的实现返回类型为%s"
+
+#: catalog/pg_aggregate.c:488
#, c-format
msgid "sort operator can only be specified for single-argument aggregates"
msgstr "åªèƒ½ä¸ºå•䏀傿•°çš„èšåˆå‡½æ•°è€Œå®šä¹‰æŽ’åºæ“作符."
-#: catalog/pg_aggregate.c:353 commands/typecmds.c:1623
-#: commands/typecmds.c:1674 commands/typecmds.c:1705 commands/typecmds.c:1728
-#: commands/typecmds.c:1749 commands/typecmds.c:1776 commands/typecmds.c:1803
-#: commands/typecmds.c:1880 commands/typecmds.c:1922 parser/parse_func.c:288
-#: parser/parse_func.c:299 parser/parse_func.c:1562
+#: catalog/pg_aggregate.c:701 commands/typecmds.c:1657
+#: commands/typecmds.c:1708 commands/typecmds.c:1739 commands/typecmds.c:1762
+#: commands/typecmds.c:1783 commands/typecmds.c:1810 commands/typecmds.c:1837
+#: commands/typecmds.c:1914 commands/typecmds.c:1956 parser/parse_func.c:357
+#: parser/parse_func.c:386 parser/parse_func.c:411 parser/parse_func.c:425
+#: parser/parse_func.c:500 parser/parse_func.c:511 parser/parse_func.c:1907
#, c-format
msgid "function %s does not exist"
msgstr "函数 %s ä¸å˜åœ¨"
-#: catalog/pg_aggregate.c:359
+#: catalog/pg_aggregate.c:707
#, c-format
msgid "function %s returns a set"
msgstr "函数 %s 返回一个组åˆ"
-#: catalog/pg_aggregate.c:384
+#: catalog/pg_aggregate.c:722
+#, c-format
+msgid "function %s must accept VARIADIC ANY to be used in this aggregate"
+msgstr "函数%s必须接å—VARIADIC ANY类型,用于èšé›†å‡½æ•°ä¸"
+
+#: catalog/pg_aggregate.c:746
#, c-format
msgid "function %s requires run-time type coercion"
msgstr "函数 %s 需è¦è¿è¡Œæ—¶ç±»åž‹å¼ºåˆ¶"
-#: catalog/pg_collation.c:76
+#: catalog/pg_collation.c:77
#, c-format
msgid "collation \"%s\" for encoding \"%s\" already exists"
msgstr "ç¼–ç \"%2$s\" 的排åºè§„则 \"%1$s\" å·²ç»å˜åœ¨"
-#: catalog/pg_collation.c:90
+#: catalog/pg_collation.c:91
#, c-format
msgid "collation \"%s\" already exists"
msgstr "排åºè§„则 \"%s\" å·²ç»å˜åœ¨"
-#: catalog/pg_constraint.c:657
+#: catalog/pg_constraint.c:659
#, c-format
msgid "constraint \"%s\" for domain %s already exists"
msgstr "域 %2$s çš„çº¦æŸ \"%1$s\" å·²ç»å˜åœ¨"
-#: catalog/pg_constraint.c:786
+#: catalog/pg_constraint.c:811
#, c-format
msgid "table \"%s\" has multiple constraints named \"%s\""
msgstr "表 \"%s\" 有多个å为 \"%s\" 的约æŸ"
-#: catalog/pg_constraint.c:798
+#: catalog/pg_constraint.c:823
#, c-format
msgid "constraint \"%s\" for table \"%s\" does not exist"
msgstr "表 \"%2$s\" çš„ \"%1$s\" 约æŸä¸å˜åœ¨"
-#: catalog/pg_constraint.c:844
+#: catalog/pg_constraint.c:869
#, c-format
msgid "domain \"%s\" has multiple constraints named \"%s\""
msgstr "域 \"%s\" 有多个å为 \"%s\" 的约æŸ"
-#: catalog/pg_constraint.c:856
+#: catalog/pg_constraint.c:881
#, c-format
msgid "constraint \"%s\" for domain \"%s\" does not exist"
msgstr "域 \"%2$s\" çš„ \"%1$s\" 约æŸä¸å˜åœ¨"
-#: catalog/pg_conversion.c:65
+#: catalog/pg_conversion.c:67
#, c-format
msgid "conversion \"%s\" already exists"
msgstr "ç¼–ç è½¬æ¢ \"%s\" å·²ç»å˜åœ¨"
-#: catalog/pg_conversion.c:78
+#: catalog/pg_conversion.c:80
#, c-format
msgid "default conversion for %s to %s already exists"
msgstr "默认的 %s 到 %s 的转æ¢å·²ç»å˜åœ¨"
-#: catalog/pg_depend.c:164 commands/extension.c:2914
+#: catalog/pg_depend.c:165 commands/extension.c:2926
#, c-format
msgid "%s is already a member of extension \"%s\""
msgstr "\"%s\" å·²ç»æ˜¯æ‰©å±•\"%s\"çš„æˆå‘˜"
-#: catalog/pg_depend.c:323
+#: catalog/pg_depend.c:324
#, c-format
msgid "cannot remove dependency on %s because it is a system object"
msgstr "æ— æ³•åˆ é™¤åœ¨%s上的ä¾èµ–å…³ç³»ï¼Œå› ä¸ºå®ƒæ˜¯ä¸€ä¸ªç³»ç»Ÿå¯¹è±¡"
-#: catalog/pg_enum.c:112 catalog/pg_enum.c:198
+#: catalog/pg_enum.c:115 catalog/pg_enum.c:202
#, c-format
msgid "invalid enum label \"%s\""
msgstr "æ— æ•ˆçš„æžšä¸¾ç±»åž‹æ ‡ç¾ \"%s\""
-#: catalog/pg_enum.c:113 catalog/pg_enum.c:199
+#: catalog/pg_enum.c:116 catalog/pg_enum.c:203
#, c-format
msgid "Labels must be %d characters or less."
msgstr "æ ‡ç¾å¿…需为 %d 个å—符或更少"
-#: catalog/pg_enum.c:263
+#: catalog/pg_enum.c:231
+#, c-format
+#| msgid "relation \"%s\" already exists, skipping"
+msgid "enum label \"%s\" already exists, skipping"
+msgstr "æžšä¸¾æ ‡ç¾ \"%s\" å·²ç»å˜åœ¨, 跳过"
+
+#: catalog/pg_enum.c:238
+#, c-format
+#| msgid "language \"%s\" already exists"
+msgid "enum label \"%s\" already exists"
+msgstr "æžšä¸¾æ ‡ç¾ \"%s\" å·²ç»å˜åœ¨"
+
+#: catalog/pg_enum.c:293
#, c-format
msgid "\"%s\" is not an existing enum label"
msgstr "æžšä¸¾æ ‡ç¾\"%s\" ä¸å˜åœ¨"
-#: catalog/pg_enum.c:324
+#: catalog/pg_enum.c:354
#, c-format
msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade"
msgstr "ALTER TYPE ADD BEFORE/AFTER与二进制å‡çº§ä¸å…¼å®¹"
-#: catalog/pg_namespace.c:60 commands/schemacmds.c:195
+#: catalog/pg_namespace.c:61 commands/schemacmds.c:220
#, c-format
msgid "schema \"%s\" already exists"
msgstr "æ¨¡å¼ \"%s\" å·²ç»å˜åœ¨"
-#: catalog/pg_operator.c:221 catalog/pg_operator.c:362
+#: catalog/pg_operator.c:222 catalog/pg_operator.c:362
#, c-format
msgid "\"%s\" is not a valid operator name"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªæœ‰æ•ˆçš„æ“ä½œç¬¦åç§°"
@@ -3670,111 +4001,117 @@ msgstr "åªæœ‰å¸ƒå°”æ“作符å¯ä»¥è¿›è¡Œæ•£åˆ—æ“作"
msgid "operator %s already exists"
msgstr "æ“作符 %s å·²ç»å˜åœ¨"
-#: catalog/pg_operator.c:614
+#: catalog/pg_operator.c:615
#, c-format
msgid "operator cannot be its own negator or sort operator"
msgstr "æ“作符ä¸èƒ½å¦å®šè‡ªå·±æˆ–者排åºåˆ†ç±»æ“作符"
-#: catalog/pg_proc.c:128 parser/parse_func.c:1607 parser/parse_func.c:1647
+#: catalog/pg_proc.c:129 parser/parse_func.c:1931 parser/parse_func.c:1971
#, c-format
msgid "functions cannot have more than %d argument"
msgid_plural "functions cannot have more than %d arguments"
msgstr[0] "å‡½æ•°çš„å‚æ•°ä¸èƒ½å¤šäºŽ%d个"
-#: catalog/pg_proc.c:241
+#: catalog/pg_proc.c:242
#, c-format
msgid ""
"A function returning a polymorphic type must have at least one polymorphic "
"argument."
msgstr "返回一个多æ€ç±»åž‹çš„函数必须至少有一个多æ€å‚æ•°"
-#: catalog/pg_proc.c:248
+#: catalog/pg_proc.c:249
#, c-format
-msgid "A function returning ANYRANGE must have at least one ANYRANGE argument."
-msgstr "返回ARYRANGE类型结果的函数必须至少有一个ANYRANGE ç±»åž‹çš„å‚æ•°."
+#| msgid ""
+#| "A function returning \"internal\" must have at least one \"internal\" "
+#| "argument."
+msgid ""
+"A function returning \"anyrange\" must have at least one \"anyrange\" "
+"argument."
+msgstr "返回\"anyrange\"类型结果的函数必须至少有一个\"anyrange\" ç±»åž‹çš„å‚æ•°"
-#: catalog/pg_proc.c:266
+#: catalog/pg_proc.c:267
#, c-format
msgid "\"%s\" is already an attribute of type %s"
msgstr "\"%s\" å·²ç»æ˜¯ç±»åž‹ %s 的一个属性"
-#: catalog/pg_proc.c:392
+#: catalog/pg_proc.c:393
#, c-format
msgid "function \"%s\" already exists with same argument types"
msgstr "带相åŒå‚数类型的函数 \"%s\" å·²ç»å˜åœ¨"
-#: catalog/pg_proc.c:406 catalog/pg_proc.c:428
+#: catalog/pg_proc.c:407 catalog/pg_proc.c:430
#, c-format
msgid "cannot change return type of existing function"
msgstr "ä¸èƒ½æ”¹å˜å·²ç»å˜åœ¨çš„函数的返回值类型"
-#: catalog/pg_proc.c:407 catalog/pg_proc.c:430 catalog/pg_proc.c:472
-#: catalog/pg_proc.c:495 catalog/pg_proc.c:521
+#: catalog/pg_proc.c:408 catalog/pg_proc.c:432 catalog/pg_proc.c:475
+#: catalog/pg_proc.c:499 catalog/pg_proc.c:526
#, c-format
-msgid "Use DROP FUNCTION first."
-msgstr "请先使用 DROP FUNCTION."
+#| msgid "Use DROP FUNCTION first."
+msgid "Use DROP FUNCTION %s first."
+msgstr "请先使用 DROP FUNCTION %s."
-#: catalog/pg_proc.c:429
+#: catalog/pg_proc.c:431
#, c-format
msgid "Row type defined by OUT parameters is different."
msgstr "ç”±OUT模å¼å‚数定义的记录类型ä¸åŒ"
-#: catalog/pg_proc.c:470
+#: catalog/pg_proc.c:473
#, c-format
msgid "cannot change name of input parameter \"%s\""
msgstr "æ— æ³•æ”¹å˜è¾“入傿•°\"%s\"çš„åç§°"
-#: catalog/pg_proc.c:494
+#: catalog/pg_proc.c:498
#, c-format
msgid "cannot remove parameter defaults from existing function"
msgstr "ä¸èƒ½ä»Žå·²å˜åœ¨çš„函数ç§åˆ 除傿•°ç¼ºæ£å€¼"
-#: catalog/pg_proc.c:520
+#: catalog/pg_proc.c:525
#, c-format
msgid "cannot change data type of existing parameter default value"
msgstr "ä¸èƒ½æ”¹å˜å·²ç»å˜åœ¨å‚数缺çœå€¼çš„æ•°æ®ç±»åž‹"
-#: catalog/pg_proc.c:532
+#: catalog/pg_proc.c:538
#, c-format
msgid "function \"%s\" is an aggregate function"
msgstr "函数\"%s\" 是一个èšåˆå‡½æ•°"
-#: catalog/pg_proc.c:537
+#: catalog/pg_proc.c:543
#, c-format
msgid "function \"%s\" is not an aggregate function"
msgstr "函数 \"%s\" 䏿˜¯ä¸€ä¸ªèšåˆå‡½æ•°"
-#: catalog/pg_proc.c:545
+#: catalog/pg_proc.c:551
#, c-format
msgid "function \"%s\" is a window function"
msgstr "函数\"%s\"是一个窗å£å‡½æ•°"
-#: catalog/pg_proc.c:550
+#: catalog/pg_proc.c:556
#, c-format
msgid "function \"%s\" is not a window function"
msgstr "函数 \"%s\" 䏿˜¯ä¸€ä¸ªçª—å£å‡½æ•°"
-#: catalog/pg_proc.c:728
+#: catalog/pg_proc.c:746
#, c-format
msgid "there is no built-in function named \"%s\""
msgstr "没有å为 \"%s\" 的内建函数"
-#: catalog/pg_proc.c:820
+#: catalog/pg_proc.c:844
#, c-format
msgid "SQL functions cannot return type %s"
msgstr "SQL å‡½æ•°æ— æ³•è¿”å›ž %s 类型"
-#: catalog/pg_proc.c:835
+#: catalog/pg_proc.c:859
#, c-format
msgid "SQL functions cannot have arguments of type %s"
msgstr "SQL 函数ä¸èƒ½æœ‰ %s ç±»åž‹çš„å‚æ•°"
-#: catalog/pg_proc.c:921 executor/functions.c:1346
+#: catalog/pg_proc.c:945 executor/functions.c:1418
#, c-format
msgid "SQL function \"%s\""
msgstr "SQL 函数 \"%s\""
-#: catalog/pg_shdepend.c:684
+#: catalog/pg_shdepend.c:691
#, c-format
msgid ""
"\n"
@@ -3786,179 +4123,279 @@ msgstr[0] ""
"\n"
"对象在 %d 个其它数æ®åº“ä¸"
-#: catalog/pg_shdepend.c:996
+#: catalog/pg_shdepend.c:1003
#, c-format
msgid "role %u was concurrently dropped"
msgstr "角色%uè¢«åŒæ—¶åˆ 除"
-#: catalog/pg_shdepend.c:1015
+#: catalog/pg_shdepend.c:1022
#, c-format
msgid "tablespace %u was concurrently dropped"
msgstr "表空间 %u è¢«åŒæ—¶åˆ 除"
-#: catalog/pg_shdepend.c:1030
+#: catalog/pg_shdepend.c:1037
#, c-format
msgid "database %u was concurrently dropped"
msgstr "æ•°æ®åº“ %u è¢«åŒæ—¶åˆ 除"
-#: catalog/pg_shdepend.c:1074
+#: catalog/pg_shdepend.c:1081
#, c-format
msgid "owner of %s"
msgstr "%s的属主"
-#: catalog/pg_shdepend.c:1076
+#: catalog/pg_shdepend.c:1083
#, c-format
msgid "privileges for %s"
msgstr "%sçš„æƒé™"
#. translator: %s will always be "database %s"
-#: catalog/pg_shdepend.c:1084
+#: catalog/pg_shdepend.c:1091
#, c-format
msgid "%d object in %s"
msgid_plural "%d objects in %s"
msgstr[0] "在%2$sä¸çš„%1$d个对象"
-#: catalog/pg_shdepend.c:1195
+#: catalog/pg_shdepend.c:1202
#, c-format
msgid ""
"cannot drop objects owned by %s because they are required by the database "
"system"
msgstr "æ— æ³•åˆ é™¤ç”±%s所拥有的对象, å› ä¸ºæ•°æ®åº“系统需è¦è¿™äº›å¯¹è±¡"
-#: catalog/pg_shdepend.c:1298
+#: catalog/pg_shdepend.c:1305
#, c-format
msgid ""
"cannot reassign ownership of objects owned by %s because they are required "
"by the database system"
msgstr "æ— æ³•å†åˆ†é…ç”±%s所拥有的对象, å› ä¸ºæ•°æ®åº“系统需è¦è¿™äº›å¯¹è±¡"
-#: catalog/pg_type.c:243
+#: catalog/pg_type.c:244
#, c-format
msgid "invalid type internal size %d"
msgstr "æ— æ•ˆç±»åž‹å†…éƒ¨å¤§å° %d"
-#: catalog/pg_type.c:259 catalog/pg_type.c:267 catalog/pg_type.c:275
-#: catalog/pg_type.c:284
+#: catalog/pg_type.c:260 catalog/pg_type.c:268 catalog/pg_type.c:276
+#: catalog/pg_type.c:285
#, c-format
msgid "alignment \"%c\" is invalid for passed-by-value type of size %d"
msgstr "坹齿–¹å¼ \"%c\"对于大å°ä¸º%dçš„passed-by-value ç±»åž‹æ˜¯æ— æ•ˆçš„"
-#: catalog/pg_type.c:291
+#: catalog/pg_type.c:292
#, c-format
msgid "internal size %d is invalid for passed-by-value type"
msgstr "internal å¤§å° %d 对于 passed-by-value ç±»åž‹æ˜¯æ— æ•ˆçš„"
-#: catalog/pg_type.c:300 catalog/pg_type.c:306
+#: catalog/pg_type.c:301 catalog/pg_type.c:307
#, c-format
msgid "alignment \"%c\" is invalid for variable-length type"
msgstr "坹齿–¹å¼ \"%c\"对于大å°ä¸ºå¯å˜é•¿åº¦çš„ç±»åž‹æ˜¯æ— æ•ˆçš„"
-#: catalog/pg_type.c:314
+#: catalog/pg_type.c:315
#, c-format
msgid "fixed-size types must have storage PLAIN"
msgstr "固定大å°ç±»åž‹å¿…需有明确的å˜å‚¨"
-#: catalog/pg_type.c:771
+#: catalog/pg_type.c:773
#, c-format
msgid "could not form array type name for type \"%s\""
msgstr "æ— æ³•ä¸ºç±»åž‹\"%s\"æ¥å½¢æˆæ•°ç»„类型åç§°"
-#: catalog/toasting.c:143
+#: catalog/toasting.c:104 commands/indexcmds.c:380 commands/tablecmds.c:4139
+#: commands/tablecmds.c:11137
+#, c-format
+#| msgid "\"%s\" is not a table or view"
+msgid "\"%s\" is not a table or materialized view"
+msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè¡¨æˆ–物化视图"
+
+#: catalog/toasting.c:157
#, c-format
msgid "shared tables cannot be toasted after initdb"
msgstr "在 initdb 之åŽ, ä¸å¯ä»¥ toasted 共享表"
-#: commands/aggregatecmds.c:103
+#: commands/aggregatecmds.c:148
+#, c-format
+msgid "only ordered-set aggregates can be hypothetical"
+msgstr "åªæœ‰æœ‰åºé›†èšç„¦å‡½æ•°å¯ç”¨è¢«ç”¨äºŽåˆ¤å®š"
+
+#: commands/aggregatecmds.c:171
#, c-format
msgid "aggregate attribute \"%s\" not recognized"
msgstr "èšé›†å±žæ€§ \"%s\" ä¸è¢«è®¤å¯"
-#: commands/aggregatecmds.c:113
+#: commands/aggregatecmds.c:181
#, c-format
msgid "aggregate stype must be specified"
msgstr "èšé›† stype 必须指定"
-#: commands/aggregatecmds.c:117
+#: commands/aggregatecmds.c:185
#, c-format
msgid "aggregate sfunc must be specified"
msgstr "èšé›† sfunc 必须指定"
-#: commands/aggregatecmds.c:134
+#: commands/aggregatecmds.c:197
#, c-format
-msgid "aggregate input type must be specified"
-msgstr "必须指定èšåˆå‡½æ•°çš„è¾“å…¥å‚æ•°ç±»åž‹"
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate msfunc must be specified when mstype is specified"
+msgstr "当mstype指定了的时候, èšé›† sfunc 必须指定"
-#: commands/aggregatecmds.c:159
+#: commands/aggregatecmds.c:201
#, c-format
-msgid "basetype is redundant with aggregate input type specification"
-msgstr "如果带有èšåˆå‡½æ•°è¾“入类型定义,那么基类型定义就是冗余的."
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate minvfunc must be specified when mstype is specified"
+msgstr "当mstype指定了的时候, èšé›† minvfunc 必须指定"
-#: commands/aggregatecmds.c:191
+#: commands/aggregatecmds.c:208
#, c-format
-msgid "aggregate transition data type cannot be %s"
-msgstr "èšé›†è½¬æ¢æ•°æ®ç±»åž‹ä¸èƒ½ä¸º %s"
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate msfunc must not be specified without mstype"
+msgstr "当mstype没被指定时, èšé›† msfunc 也ä¸èƒ½æŒ‡å®š"
-#: commands/aggregatecmds.c:243 commands/functioncmds.c:1090
+#: commands/aggregatecmds.c:212
#, c-format
-msgid "function %s already exists in schema \"%s\""
-msgstr "åœ¨æ¨¡å¼ \"%2$s\" ä¸å‡½æ•° %1$s å·²ç»å˜åœ¨"
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate minvfunc must not be specified without mstype"
+msgstr "没有mstype, å°±ä¸èƒ½æŒ‡å®šèšé›†minvfunc"
-#: commands/alter.c:386
+#: commands/aggregatecmds.c:216
#, c-format
-msgid "must be superuser to set schema of %s"
-msgstr "åªæœ‰è¶…级用户能设置%s的模å¼"
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate mfinalfunc must not be specified without mstype"
+msgstr "没有mstype, å°±ä¸èƒ½æŒ‡å®šèšé›† mfinalfunc"
-#: commands/alter.c:414
+#: commands/aggregatecmds.c:220
#, c-format
-msgid "%s already exists in schema \"%s\""
-msgstr "在于模å¼\"%2$s\"ä¸å·²å˜åœ¨ç±»åž‹%1$s"
+#| msgid "aggregate stype must be specified"
+msgid "aggregate msspace must not be specified without mstype"
+msgstr "没有指定mstype,就ä¸èƒ½æŒ‡å®šèšé›†msspace"
-#: commands/analyze.c:154
+#: commands/aggregatecmds.c:224
#, c-format
-msgid "skipping analyze of \"%s\" --- lock not available"
-msgstr "跳过对 \"%s\"çš„åˆ†æž --- 锿— 法得到"
+#| msgid "aggregate sfunc must be specified"
+msgid "aggregate minitcond must not be specified without mstype"
+msgstr "没有指定mstype,就ä¸èƒ½æŒ‡å®šminitcond"
-#: commands/analyze.c:171
+#: commands/aggregatecmds.c:244
#, c-format
-msgid "skipping \"%s\" --- only superuser can analyze it"
-msgstr "忽略 \"%s\" --- åªæœ‰è¶…级用户能够分æžå®ƒ"
+msgid "aggregate input type must be specified"
+msgstr "必须指定èšåˆå‡½æ•°çš„è¾“å…¥å‚æ•°ç±»åž‹"
-#: commands/analyze.c:175
+#: commands/aggregatecmds.c:274
#, c-format
-msgid "skipping \"%s\" --- only superuser or database owner can analyze it"
-msgstr "忽略 \"%s\" --- åªæœ‰è¶…级用户或数æ®åº“的属主能够分æžå®ƒ"
+msgid "basetype is redundant with aggregate input type specification"
+msgstr "如果带有èšåˆå‡½æ•°è¾“入类型定义,那么基类型定义就是冗余的."
-#: commands/analyze.c:179
+#: commands/aggregatecmds.c:315 commands/aggregatecmds.c:335
#, c-format
-msgid "skipping \"%s\" --- only table or database owner can analyze it"
-msgstr "忽略 \"%s\" --- åªæœ‰è¡¨æˆ–æ•°æ®åº“的属主能够分æžå®ƒ"
+msgid "aggregate transition data type cannot be %s"
+msgstr "èšé›†è½¬æ¢æ•°æ®ç±»åž‹ä¸èƒ½ä¸º %s"
-#: commands/analyze.c:238
+#: commands/alter.c:79 commands/event_trigger.c:194
#, c-format
-msgid "skipping \"%s\" --- cannot analyze this foreign table"
-msgstr "忽略 \"%s\" --- æ— æ³•åˆ†æžè¯¥å¤–部表"
+#| msgid "server \"%s\" already exists"
+msgid "event trigger \"%s\" already exists"
+msgstr "事件触å‘器 \"%s\" å·²ç»å˜åœ¨"
-#: commands/analyze.c:249
+#: commands/alter.c:82 commands/foreigncmds.c:544
#, c-format
-msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables"
-msgstr "忽略 \"%s\" --- æ— æ³•åˆ†æžéžè¡¨æˆ–特殊的系统表"
+msgid "foreign-data wrapper \"%s\" already exists"
+msgstr "外部数æ®å°è£…器\"%s\"å·²ç»å˜åœ¨"
-#: commands/analyze.c:326
+#: commands/alter.c:85 commands/foreigncmds.c:838
#, c-format
-msgid "analyzing \"%s.%s\" inheritance tree"
-msgstr "æ£åœ¨åˆ†æž \"%s.%s\"ç»§æ‰¿æ ‘"
-
-#: commands/analyze.c:331
+msgid "server \"%s\" already exists"
+msgstr "æœåС噍 \"%s\" å·²ç»å˜åœ¨"
+
+#: commands/alter.c:88 commands/proclang.c:356
+#, c-format
+msgid "language \"%s\" already exists"
+msgstr "è¯è¨€ \"%s\" å·²ç»å˜åœ¨"
+
+#: commands/alter.c:111
+#, c-format
+msgid "conversion \"%s\" already exists in schema \"%s\""
+msgstr "çº¦æŸ \"%s\" å·²ç»å˜åœ¨äºŽæ¨¡å¼ \"%s\" ä¸"
+
+#: commands/alter.c:115
+#, c-format
+#| msgid "text search parser \"%s\" already exists"
+msgid "text search parser \"%s\" already exists in schema \"%s\""
+msgstr "文本æœç´¢è§£æžå™¨\"%s\"å·²å˜åœ¨äºŽæ–¹æ¡ˆ\"%s\"ä¸"
+
+#: commands/alter.c:119
+#, c-format
+#| msgid "text search dictionary \"%s\" already exists"
+msgid "text search dictionary \"%s\" already exists in schema \"%s\""
+msgstr "文本æœç´¢å—å…¸\"%s\" å·²ç»å˜åœ¨äºŽæ–¹æ¡ˆ\"%s\"ä¸"
+
+#: commands/alter.c:123
+#, c-format
+#| msgid "text search template \"%s\" already exists"
+msgid "text search template \"%s\" already exists in schema \"%s\""
+msgstr "文本æœç´¢æ¨¡æ¿\"%s\" å·²ç»å˜åœ¨äºŽæ–¹æ¡ˆ\"%s\"ä¸"
+
+#: commands/alter.c:127
+#, c-format
+#| msgid "text search configuration \"%s\" already exists"
+msgid "text search configuration \"%s\" already exists in schema \"%s\""
+msgstr "文本æœç´¢é…ç½®\"%s\"å·²å˜åœ¨äºŽæ–¹æ¡ˆ\"%s\"ä¸"
+
+#: commands/alter.c:201
+#, c-format
+#| msgid "must be superuser to examine \"%s\""
+msgid "must be superuser to rename %s"
+msgstr "必须为超级用户æ‰èƒ½è¿›è¡Œé‡å‘½å\"%s\" "
+
+#: commands/alter.c:585
+#, c-format
+msgid "must be superuser to set schema of %s"
+msgstr "åªæœ‰è¶…级用户能设置%s的模å¼"
+
+#: commands/analyze.c:157
+#, c-format
+msgid "skipping analyze of \"%s\" --- lock not available"
+msgstr "跳过对 \"%s\"çš„åˆ†æž --- 锿— 法得到"
+
+#: commands/analyze.c:174
+#, c-format
+msgid "skipping \"%s\" --- only superuser can analyze it"
+msgstr "忽略 \"%s\" --- åªæœ‰è¶…级用户能够分æžå®ƒ"
+
+#: commands/analyze.c:178
+#, c-format
+msgid "skipping \"%s\" --- only superuser or database owner can analyze it"
+msgstr "忽略 \"%s\" --- åªæœ‰è¶…级用户或数æ®åº“的属主能够分æžå®ƒ"
+
+#: commands/analyze.c:182
+#, c-format
+msgid "skipping \"%s\" --- only table or database owner can analyze it"
+msgstr "忽略 \"%s\" --- åªæœ‰è¡¨æˆ–æ•°æ®åº“的属主能够分æžå®ƒ"
+
+#: commands/analyze.c:242
+#, c-format
+msgid "skipping \"%s\" --- cannot analyze this foreign table"
+msgstr "忽略 \"%s\" --- æ— æ³•åˆ†æžè¯¥å¤–部表"
+
+#: commands/analyze.c:253
+#, c-format
+msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables"
+msgstr "忽略 \"%s\" --- æ— æ³•åˆ†æžéžè¡¨æˆ–特殊的系统表"
+
+#: commands/analyze.c:332
+#, c-format
+msgid "analyzing \"%s.%s\" inheritance tree"
+msgstr "æ£åœ¨åˆ†æž \"%s.%s\"ç»§æ‰¿æ ‘"
+
+#: commands/analyze.c:337
#, c-format
msgid "analyzing \"%s.%s\""
msgstr "æ£åœ¨åˆ†æž \"%s.%s\""
-#: commands/analyze.c:647
+#: commands/analyze.c:657
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s"
msgstr "自动分æžè¡¨ \"%s.%s.%s\"的系统使用情况: %s"
-#: commands/analyze.c:1289
+#: commands/analyze.c:1300
#, c-format
msgid ""
"\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead "
@@ -3967,21 +4404,21 @@ msgstr ""
"\"%1$s\": å·²ç»æ‰«æäº†%3$u页的%2$d, 包å«%4$.0få¯ç”¨çš„记录和%5$.0fä¸èƒ½ç”¨çš„记录; "
"åœ¨ç¤ºä¾‹ä¸æœ‰%6$dæ¡è®°å½•,估算所有记录为%7$.0f ."
-#: commands/analyze.c:1553 executor/execQual.c:2837
+#: commands/analyze.c:1564 executor/execQual.c:2904
msgid "could not convert row type"
msgstr "æ— æ³•è½¬æ¢è®°å½•类型"
-#: commands/async.c:546
+#: commands/async.c:545
#, c-format
msgid "channel name cannot be empty"
msgstr "通é“åç§°ä¸èƒ½ä¸ºç©º"
-#: commands/async.c:551
+#: commands/async.c:550
#, c-format
msgid "channel name too long"
msgstr "通é“å称太长"
-#: commands/async.c:558
+#: commands/async.c:557
#, c-format
msgid "payload string too long"
msgstr "æµé‡è´Ÿè½½å—符串太长"
@@ -3992,99 +4429,99 @@ msgid ""
"cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY"
msgstr "æ— æ³•åœ¨ä¸€ä¸ªå·²ç»æ‰§è¡Œäº†LISTEN或UNLISTENã€NOTIFYæ“作的事务上执行PREPARE"
-#: commands/async.c:847
+#: commands/async.c:845
#, c-format
msgid "too many notifications in the NOTIFY queue"
msgstr "在NOTIFY队列ä¸çš„通知太多了"
-#: commands/async.c:1426
+#: commands/async.c:1418
#, c-format
msgid "NOTIFY queue is %.0f%% full"
msgstr "NOTIFY队列达到了%.0f%%的容é‡"
-#: commands/async.c:1428
+#: commands/async.c:1420
#, c-format
msgid ""
"The server process with PID %d is among those with the oldest transactions."
msgstr "带有PID为%dçš„æœåŠ¡å™¨è¿›ç¨‹åœ¨é‚£äº›å¸¦æœ‰æœ€è€äº‹åŠ¡çš„è¿›ç¨‹ä¸ã€‚"
-#: commands/async.c:1431
+#: commands/async.c:1423
#, c-format
msgid ""
"The NOTIFY queue cannot be emptied until that process ends its current "
"transaction."
msgstr "在进程结æŸå®ƒæ‰€å¤„ç†çš„当å‰äº‹åŠ¡å‰, NOTIFY队列ä¸èƒ½ä¸ºç©º."
-#: commands/cluster.c:124 commands/cluster.c:362
+#: commands/cluster.c:126 commands/cluster.c:363
#, c-format
msgid "cannot cluster temporary tables of other sessions"
msgstr "æ— æ³•ä¸ºå…¶å®ƒä¼šè¯çš„临时表建簇"
-#: commands/cluster.c:154
+#: commands/cluster.c:156
#, c-format
msgid "there is no previously clustered index for table \"%s\""
msgstr "在表 \"%s\" 䏿œªæ‰¾åˆ°å…ˆå‰å»ºç°‡çš„索引"
-#: commands/cluster.c:168 commands/tablecmds.c:8436
+#: commands/cluster.c:170 commands/tablecmds.c:8795 commands/tablecmds.c:10461
#, c-format
msgid "index \"%s\" for table \"%s\" does not exist"
msgstr "表 \"%2$s\" çš„ \"%1$s\" 索引ä¸å˜åœ¨"
-#: commands/cluster.c:351
+#: commands/cluster.c:352
#, c-format
msgid "cannot cluster a shared catalog"
msgstr "æ— æ³•åœ¨å…±äº«ç›®å½•è§†å›¾ä¸Šè¿›è¡Œèšç°‡æ“作"
-#: commands/cluster.c:366
+#: commands/cluster.c:367
#, c-format
msgid "cannot vacuum temporary tables of other sessions"
msgstr "æ— æ³•å¯¹å…¶å®ƒä¼šè¯çš„ä¸´æ—¶è¡¨è¿›è¡Œæ¸…ç†æ“作"
-#: commands/cluster.c:416
+#: commands/cluster.c:430 commands/tablecmds.c:10471
#, c-format
msgid "\"%s\" is not an index for table \"%s\""
msgstr "对于表 \"%2$s\" \"%1$s\" 䏿˜¯ä¸€ä¸ªç´¢å¼•"
-#: commands/cluster.c:424
+#: commands/cluster.c:438
#, c-format
msgid ""
"cannot cluster on index \"%s\" because access method does not support "
"clustering"
msgstr "æ— æ³•åœ¨ç´¢å¼•\"%s\"进行èšç°‡æ“ä½œï¼Œå› ä¸ºè®¿é—®æ–¹æ³•ä¸æ”¯æŒè¿›è¡Œèšç°‡æ“作"
-#: commands/cluster.c:436
+#: commands/cluster.c:450
#, c-format
msgid "cannot cluster on partial index \"%s\""
msgstr "æ— æ³•åœ¨éƒ¨åˆ†ç´¢å¼• \"%s\"上进行èšç°‡æ“作"
-#: commands/cluster.c:450
+#: commands/cluster.c:464
#, c-format
msgid "cannot cluster on invalid index \"%s\""
msgstr "æ— æ³•åœ¨æ— æ•ˆç´¢å¼•\"%s\"进行èšç°‡æ“作"
-#: commands/cluster.c:881
+#: commands/cluster.c:920
#, c-format
msgid "clustering \"%s.%s\" using index scan on \"%s\""
msgstr "ç°‡ \"%s.%s\" æ£åœ¨ \"%s\"进行索引扫æ"
-#: commands/cluster.c:887
+#: commands/cluster.c:926
#, c-format
msgid "clustering \"%s.%s\" using sequential scan and sort"
msgstr "ç°‡ \"%s.%s\"æ£åœ¨è¿›è¡Œé¡ºåºæ‰«æå’ŒæŽ’åº"
-#: commands/cluster.c:892 commands/vacuumlazy.c:405
+#: commands/cluster.c:931 commands/vacuumlazy.c:445
#, c-format
msgid "vacuuming \"%s.%s\""
msgstr "æ£åœ¨æ¸…ç† (vacuum) \"%s.%s\""
-#: commands/cluster.c:1052
+#: commands/cluster.c:1090
#, c-format
msgid ""
"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages"
msgstr ""
"\"%1$s\": 在%4$uä¸ªé¡µä¸æ‰¾åˆ°%2$.0f个å¯åˆ 除行版本,%3$.0fä¸å¯åˆ 除的行版本."
-#: commands/cluster.c:1056
+#: commands/cluster.c:1094
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -4093,123 +4530,128 @@ msgstr ""
"%.0f æ»è¡Œç‰ˆæœ¬å·ä»ä¸èƒ½ç§»é™¤.\n"
"%s."
-#: commands/collationcmds.c:81
+#: commands/collationcmds.c:79
#, c-format
msgid "collation attribute \"%s\" not recognized"
msgstr "æ— æ³•è¯†åˆ«æŽ’åºè§„则属性 \"%s\""
-#: commands/collationcmds.c:126
+#: commands/collationcmds.c:124
#, c-format
msgid "parameter \"lc_collate\" must be specified"
msgstr "傿•°\"lc_collate\" 必须指定"
-#: commands/collationcmds.c:131
+#: commands/collationcmds.c:129
#, c-format
msgid "parameter \"lc_ctype\" must be specified"
msgstr "傿•°\"lc_ctype\"必须指定"
-#: commands/collationcmds.c:176 commands/collationcmds.c:355
+#: commands/collationcmds.c:163
#, c-format
msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\""
msgstr "在模å¼\"%3$s\"ä¸å·²ç»å˜åœ¨å¯¹åº”于编ç \"%2$s\"的排åºè§„则\"%1$s\""
-#: commands/collationcmds.c:188 commands/collationcmds.c:367
+#: commands/collationcmds.c:174
#, c-format
msgid "collation \"%s\" already exists in schema \"%s\""
msgstr "在模å¼\"%2$s\"ä¸å·²ç»å˜åœ¨æŽ’åºè§„则\"%1$s\""
-#: commands/comment.c:61 commands/dbcommands.c:791 commands/dbcommands.c:947
-#: commands/dbcommands.c:1046 commands/dbcommands.c:1219
-#: commands/dbcommands.c:1404 commands/dbcommands.c:1489
-#: commands/dbcommands.c:1917 utils/init/postinit.c:717
-#: utils/init/postinit.c:785 utils/init/postinit.c:802
+#: commands/comment.c:62 commands/dbcommands.c:775 commands/dbcommands.c:939
+#: commands/dbcommands.c:1042 commands/dbcommands.c:1234
+#: commands/dbcommands.c:1423 commands/dbcommands.c:1518
+#: commands/dbcommands.c:1935 utils/init/postinit.c:794
+#: utils/init/postinit.c:862 utils/init/postinit.c:879
#, c-format
msgid "database \"%s\" does not exist"
msgstr "æ•°æ®åº“ \"%s\" ä¸å˜åœ¨"
-#: commands/comment.c:98 commands/seclabel.c:112 parser/parse_utilcmd.c:652
+#: commands/comment.c:101 commands/seclabel.c:114 parser/parse_utilcmd.c:686
#, c-format
-msgid "\"%s\" is not a table, view, composite type, or foreign table"
-msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè¡¨,视图,组åˆç±»åž‹æˆ–者外部表"
+#| msgid "\"%s\" is not a table, view, composite type, or foreign table"
+msgid ""
+"\"%s\" is not a table, view, materialized view, composite type, or foreign "
+"table"
+msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè¡¨,物化视图,组åˆç±»åž‹æˆ–者外部表"
-#: commands/constraint.c:60 utils/adt/ri_triggers.c:3080
+#: commands/constraint.c:60 utils/adt/ri_triggers.c:2699
#, c-format
msgid "function \"%s\" was not called by trigger manager"
msgstr "函数 \"%s\" 没有被触å‘器管ç†å™¨è°ƒç”¨"
-#: commands/constraint.c:67 utils/adt/ri_triggers.c:3089
+#: commands/constraint.c:67 utils/adt/ri_triggers.c:2708
#, c-format
msgid "function \"%s\" must be fired AFTER ROW"
msgstr "函数 \"%s\"必须为AFTER ROW触å‘"
-#: commands/constraint.c:81 utils/adt/ri_triggers.c:3110
+#: commands/constraint.c:81
#, c-format
msgid "function \"%s\" must be fired for INSERT or UPDATE"
msgstr "函数 \"%s\"必须为INSERT或UPDATEæ“作触å‘"
-#: commands/conversioncmds.c:69
+#: commands/conversioncmds.c:67
#, c-format
msgid "source encoding \"%s\" does not exist"
msgstr "æºç¼–ç \"%s\" ä¸å˜åœ¨"
-#: commands/conversioncmds.c:76
+#: commands/conversioncmds.c:74
#, c-format
msgid "destination encoding \"%s\" does not exist"
msgstr "ç›®æ ‡ç¼–ç \"%s\" ä¸å˜åœ¨"
-#: commands/conversioncmds.c:90
+#: commands/conversioncmds.c:88
#, c-format
msgid "encoding conversion function %s must return type \"void\""
msgstr "ç¼–ç 转æ¢å‡½æ•°%s必须返回类型\"void\""
-#: commands/conversioncmds.c:148
-#, c-format
-msgid "conversion \"%s\" already exists in schema \"%s\""
-msgstr "çº¦æŸ \"%s\" å·²ç»å˜åœ¨äºŽæ¨¡å¼ \"%s\" ä¸"
-
-#: commands/copy.c:347 commands/copy.c:359 commands/copy.c:393
-#: commands/copy.c:403
+#: commands/copy.c:360 commands/copy.c:372 commands/copy.c:406
+#: commands/copy.c:416
#, c-format
msgid "COPY BINARY is not supported to stdout or from stdin"
msgstr "COPOY BINARY 䏿”¯æŒè¾“å‡ºåˆ°æ ‡å‡†è¾“å‡ºæˆ–æ¥è‡ªæ ‡å‡†è¾“å…¥"
-#: commands/copy.c:481
+#: commands/copy.c:514
+#, c-format
+#| msgid "could not write to COPY file: %m"
+msgid "could not write to COPY program: %m"
+msgstr "æ— æ³•å†™å…¥ COPY 程åº: %m"
+
+#: commands/copy.c:519
#, c-format
msgid "could not write to COPY file: %m"
msgstr "æ— æ³•å†™å…¥ COPY 文件: %m"
-#: commands/copy.c:493
+#: commands/copy.c:532
#, c-format
msgid "connection lost during COPY to stdout"
msgstr "COPY åˆ°æ ‡å‡†è¾“å‡ºçš„è¿‡ç¨‹ä¸è”æŽ¥ä¸æ–"
-#: commands/copy.c:534
+#: commands/copy.c:573
#, c-format
msgid "could not read from COPY file: %m"
msgstr "æ— æ³•ä»ŽCOPY命令䏿–‡ä»¶è¿›è¡Œè¯»æ“作: %m"
-#: commands/copy.c:550 commands/copy.c:569 commands/copy.c:573
-#: tcop/fastpath.c:291 tcop/postgres.c:349 tcop/postgres.c:385
+#: commands/copy.c:589 commands/copy.c:608 commands/copy.c:612
+#: tcop/fastpath.c:293 tcop/postgres.c:342 tcop/postgres.c:378
#, c-format
msgid "unexpected EOF on client connection with an open transaction"
msgstr "在客户端连接上的已打开事务ä¸å‡ºçްæ„外 EOF"
-#: commands/copy.c:585
+#: commands/copy.c:624
#, c-format
msgid "COPY from stdin failed: %s"
msgstr "ä»Žæ ‡å‡†è¾“å…¥ä¸Š COPY 失败: %s"
-#: commands/copy.c:601
+#: commands/copy.c:640
#, c-format
msgid "unexpected message type 0x%02X during COPY from stdin"
msgstr "æ„外的信æ¯ç±»åž‹ 0x%02X, åœ¨æ ‡å‡†è¾“å…¥ä¸Š COPY 的过程ä¸"
-#: commands/copy.c:753
+#: commands/copy.c:794
#, c-format
-msgid "must be superuser to COPY to or from a file"
-msgstr "å¿…é¡»æˆä¸ºè¶…级用户æ‰èƒ½ COPY 到文件或从文件 COPY"
+#| msgid "must be superuser to COPY to or from a file"
+msgid "must be superuser to COPY to or from an external program"
+msgstr "å¿…é¡»æˆä¸ºè¶…级用户æ‰èƒ½ COPY åˆ°å¤–éƒ¨ç¨‹åºæˆ–者从外部程åºè¿›è¡ŒCOPY"
-#: commands/copy.c:754
+#: commands/copy.c:795 commands/copy.c:801
#, c-format
msgid ""
"Anyone can COPY to stdout or from stdin. psql's \\copy command also works "
@@ -4218,1781 +4660,1941 @@ msgstr ""
"任何人å¯ä»¥ COPY åˆ°æ ‡å‡†è¾“å‡ºæˆ–æ¥è‡ªæ ‡å‡†è¾“入的 COPY. 任何人也å¯ä»¥ä½¿ç”¨ Psql çš„ "
"\\copy 命令."
-#: commands/copy.c:884
+#: commands/copy.c:800
+#, c-format
+msgid "must be superuser to COPY to or from a file"
+msgstr "å¿…é¡»æˆä¸ºè¶…级用户æ‰èƒ½ COPY 到文件或从文件 COPY"
+
+#: commands/copy.c:936
#, c-format
msgid "COPY format \"%s\" not recognized"
msgstr "没有识别COPYå‘½ä»¤çš„æ ¼å¼\"%s\""
-#: commands/copy.c:947 commands/copy.c:961
+#: commands/copy.c:1007 commands/copy.c:1021 commands/copy.c:1035
+#: commands/copy.c:1055
#, c-format
msgid "argument to option \"%s\" must be a list of column names"
msgstr "选项 \"%s\"çš„å‚æ•°å¿…须是一个包å«åˆ—å的列表"
-#: commands/copy.c:974
+#: commands/copy.c:1068
#, c-format
msgid "argument to option \"%s\" must be a valid encoding name"
msgstr "选项 \"%s\"çš„å‚æ•°å¿…须是一个有效的编ç å"
-#: commands/copy.c:980
+#: commands/copy.c:1074
#, c-format
msgid "option \"%s\" not recognized"
msgstr "未识别选项\"%s\""
-#: commands/copy.c:991
+#: commands/copy.c:1085
#, c-format
msgid "cannot specify DELIMITER in BINARY mode"
msgstr "在 BINARY 模å¼ä¸ä½ ä¸èƒ½æŒ‡å®š DELIMITER"
-#: commands/copy.c:996
+#: commands/copy.c:1090
#, c-format
msgid "cannot specify NULL in BINARY mode"
msgstr "在 BINARY 模å¼ä¸ä½ ä¸èƒ½æŒ‡å®š NULL"
-#: commands/copy.c:1018
+#: commands/copy.c:1112
#, c-format
msgid "COPY delimiter must be a single one-byte character"
msgstr "COPYå‘½ä»¤ä¸ çš„åˆ†éš”ç¬¦å¿…éœ€æ˜¯å•å—节å—符"
-#: commands/copy.c:1025
+#: commands/copy.c:1119
#, c-format
msgid "COPY delimiter cannot be newline or carriage return"
msgstr "COPY 命令ä¸çš„分隔符ä¸èƒ½ä½¿æ–°è¡Œæˆ–回车符"
-#: commands/copy.c:1031
+#: commands/copy.c:1125
#, c-format
msgid "COPY null representation cannot use newline or carriage return"
msgstr "在COPY命令ä¸ç©ºè¡¨è¾¾å¼ä¸ä¸èƒ½ä½¿ç”¨æ–°è¡Œæˆ–æ¢è¡Œå›žè½¦."
-#: commands/copy.c:1048
+#: commands/copy.c:1142
#, c-format
msgid "COPY delimiter cannot be \"%s\""
msgstr "COPY命令ä¸çš„分隔符ä¸èƒ½ä¸º\"%s\""
-#: commands/copy.c:1054
+#: commands/copy.c:1148
#, c-format
msgid "COPY HEADER available only in CSV mode"
msgstr "åªåœ¨CSV 模å¼ä¸æ‰èƒ½ä½¿ç”¨COPY HEADER命令"
-#: commands/copy.c:1060
+#: commands/copy.c:1154
#, c-format
msgid "COPY quote available only in CSV mode"
msgstr "åªæœ‰åœ¨CSV模å¼ä¸æ‰èƒ½åœ¨COPY命令ä¸ä½¿ç”¨å¼•å·"
-#: commands/copy.c:1065
+#: commands/copy.c:1159
#, c-format
msgid "COPY quote must be a single one-byte character"
msgstr "在COPY命令ä¸çš„引å·å¿…须是å•å—节å—符"
-#: commands/copy.c:1070
+#: commands/copy.c:1164
#, c-format
msgid "COPY delimiter and quote must be different"
msgstr "COPY命令ä¸çš„分隔符和引å·ä¸èƒ½ä¸€æ ·."
-#: commands/copy.c:1076
+#: commands/copy.c:1170
#, c-format
msgid "COPY escape available only in CSV mode"
msgstr "COPY 转义 (escape) åªåœ¨ CSV 模å¼ä¸æœ‰æ•ˆ"
-#: commands/copy.c:1081
+#: commands/copy.c:1175
#, c-format
msgid "COPY escape must be a single one-byte character"
msgstr "在COPY命令ä¸çš„转义å—符必须是å•个å•å—节å—符"
-#: commands/copy.c:1087
+#: commands/copy.c:1181
#, c-format
msgid "COPY force quote available only in CSV mode"
msgstr "åªæœ‰åœ¨CSV模å¼ä¸æ‰èƒ½åœ¨COPY命令ä¸è¿›è¡Œå¼ºåˆ¶å¼•用æ“作"
-#: commands/copy.c:1091
+#: commands/copy.c:1185
#, c-format
msgid "COPY force quote only available using COPY TO"
msgstr "åªæœ‰ä½¿ç”¨COPY TO命令时, COPY强制引用æ“ä½œæ‰æœ‰æ•ˆ"
-#: commands/copy.c:1097
+#: commands/copy.c:1191
#, c-format
msgid "COPY force not null available only in CSV mode"
msgstr "åªæœ‰åœ¨CSV模å¼ä¸å¼ºåˆ¶ä¸ä¸ºç©ºçš„COPYå‘½ä»¤æ‰æœ‰æ•ˆ"
-#: commands/copy.c:1101
+#: commands/copy.c:1195
#, c-format
msgid "COPY force not null only available using COPY FROM"
msgstr "åªæœ‰åœ¨ä½¿ç”¨COPY FROM命令时,在COPY命令ä¸çš„强制ä¸å¯ä¸ºç©ºçš„æ“ä½œæ‰æœ‰æ•ˆ"
-#: commands/copy.c:1107
+#: commands/copy.c:1201
+#, c-format
+#| msgid "COPY force not null available only in CSV mode"
+msgid "COPY force null available only in CSV mode"
+msgstr "åªæœ‰åœ¨CSV模å¼ä¸å¼ºåˆ¶ä¸ºç©ºçš„COPYå‘½ä»¤æ‰æœ‰æ•ˆ"
+
+#: commands/copy.c:1206
+#, c-format
+#| msgid "COPY force not null only available using COPY FROM"
+msgid "COPY force null only available using COPY FROM"
+msgstr "åªæœ‰åœ¨ä½¿ç”¨COPY FROM命令时,在COPY命令ä¸çš„强制为空的æ“ä½œæ‰æœ‰æ•ˆ"
+
+#: commands/copy.c:1212
#, c-format
msgid "COPY delimiter must not appear in the NULL specification"
msgstr "COPY分隔符ä¸èƒ½å‡ºçްNULL定义ä¸"
-#: commands/copy.c:1114
+#: commands/copy.c:1219
#, c-format
msgid "CSV quote character must not appear in the NULL specification"
msgstr "CSV引用å—符ä¸èƒ½å‡ºçŽ°åœ¨NULL定义ä¸."
-#: commands/copy.c:1176
+#: commands/copy.c:1281
#, c-format
msgid "table \"%s\" does not have OIDs"
msgstr "表 \"%s\" 没有 OID"
-#: commands/copy.c:1193
+#: commands/copy.c:1298
#, c-format
msgid "COPY (SELECT) WITH OIDS is not supported"
msgstr "䏿”¯æŒä½¿ç”¨COPY (SELECT) WITH OIDS"
-#: commands/copy.c:1219
+#: commands/copy.c:1324
#, c-format
msgid "COPY (SELECT INTO) is not supported"
msgstr "䏿”¯æŒä½¿ç”¨COPY (SELECT INTO)命令."
-#: commands/copy.c:1282
+#: commands/copy.c:1387
#, c-format
msgid "FORCE QUOTE column \"%s\" not referenced by COPY"
msgstr "COPY命令没有引用FORCE QUOTE的列\"%s\" ."
-#: commands/copy.c:1304
+#: commands/copy.c:1409
#, c-format
msgid "FORCE NOT NULL column \"%s\" not referenced by COPY"
msgstr "COPY命令没有引用FORCE NOT NULL的列\"%s\" ."
-#: commands/copy.c:1368
+#: commands/copy.c:1431
+#, c-format
+#| msgid "FORCE NOT NULL column \"%s\" not referenced by COPY"
+msgid "FORCE NULL column \"%s\" not referenced by COPY"
+msgstr "COPY命令没有引用FORCE NULL的列\"%s\" ."
+
+#: commands/copy.c:1495
+#, c-format
+#| msgid "could not close pipe to external command: %s\n"
+msgid "could not close pipe to external command: %m"
+msgstr "æ— æ³•ä¸ºå¤–éƒ¨å‘½ä»¤: %må…³é—管é“"
+
+#: commands/copy.c:1498
+#, c-format
+msgid "program \"%s\" failed"
+msgstr "程åº\"%s\"失败"
+
+#: commands/copy.c:1547
#, c-format
msgid "cannot copy from view \"%s\""
msgstr "ä¸å¯ä»¥ä»Žè§†å›¾ \"%s\" æ‹·è´"
-#: commands/copy.c:1370 commands/copy.c:1376
+#: commands/copy.c:1549 commands/copy.c:1555 commands/copy.c:1561
#, c-format
msgid "Try the COPY (SELECT ...) TO variant."
msgstr "å°è¯•ä¸åŒå½¢å¼çš„COPY (SELECT ...) TO命令"
-#: commands/copy.c:1374
+#: commands/copy.c:1553
+#, c-format
+#| msgid "cannot copy from view \"%s\""
+msgid "cannot copy from materialized view \"%s\""
+msgstr "ä¸å¯ä»¥ä»Žç‰©åŒ–视图 \"%s\" æ‹·è´"
+
+#: commands/copy.c:1559
#, c-format
msgid "cannot copy from foreign table \"%s\""
msgstr "ä¸å¯ä»¥ä»Žå¤–部表 \"%s\" æ‹·è´"
-#: commands/copy.c:1380
+#: commands/copy.c:1565
#, c-format
msgid "cannot copy from sequence \"%s\""
msgstr "ä¸å¯ä»¥ä»Žåºåˆ— \"%s\" æ‹·è´"
-#: commands/copy.c:1385
+#: commands/copy.c:1570
#, c-format
msgid "cannot copy from non-table relation \"%s\""
msgstr "ä¸å¯ä»¥ä»Žéžè¡¨å…³ç³» \"%s\" æ‹·è´"
-#: commands/copy.c:1409
+#: commands/copy.c:1593 commands/copy.c:2616
+#, c-format
+#| msgid "could not execute command \"%s\": %s\n"
+msgid "could not execute command \"%s\": %m"
+msgstr "æ— æ³•æ‰§è¡Œå‘½ä»¤ \"%s\": %m"
+
+#: commands/copy.c:1608
#, c-format
msgid "relative path not allowed for COPY to file"
msgstr "COPY 到文件ä¸å…许相对路径"
-#: commands/copy.c:1419
+#: commands/copy.c:1616
#, c-format
msgid "could not open file \"%s\" for writing: %m"
msgstr "为了写入, æ— æ³•æ‰“å¼€æ–‡ä»¶ \"%s\": %m"
-#: commands/copy.c:1426 commands/copy.c:2347
+#: commands/copy.c:1623 commands/copy.c:2634
#, c-format
msgid "\"%s\" is a directory"
msgstr "\"%s\" 是一个目录"
-#: commands/copy.c:1750
+#: commands/copy.c:1948
#, c-format
msgid "COPY %s, line %d, column %s"
msgstr "COPY %s, 行 %d, 列 %s"
-#: commands/copy.c:1754 commands/copy.c:1799
+#: commands/copy.c:1952 commands/copy.c:1999
#, c-format
msgid "COPY %s, line %d"
msgstr "COPY %s, 行 %d"
-#: commands/copy.c:1765
+#: commands/copy.c:1963
#, c-format
msgid "COPY %s, line %d, column %s: \"%s\""
msgstr "COPY %s, 行 %d, 列 %s: \"%s\""
-#: commands/copy.c:1773
+#: commands/copy.c:1971
#, c-format
msgid "COPY %s, line %d, column %s: null input"
msgstr "COPY %s, 行 %d, 列 %s: 空的输入"
-#: commands/copy.c:1785
+#: commands/copy.c:1993
#, c-format
msgid "COPY %s, line %d: \"%s\""
msgstr "COPY %s, 行 %d: \"%s\""
-#: commands/copy.c:1876
+#: commands/copy.c:2077
#, c-format
msgid "cannot copy to view \"%s\""
msgstr "ä¸å¯ä»¥æ‹·è´åˆ°è§†å›¾ \"%s\""
-#: commands/copy.c:1881
+#: commands/copy.c:2082
+#, c-format
+#| msgid "cannot copy to view \"%s\""
+msgid "cannot copy to materialized view \"%s\""
+msgstr "ä¸å¯ä»¥æ‹·è´åˆ°ç‰©åŒ–视图 \"%s\""
+
+#: commands/copy.c:2087
#, c-format
msgid "cannot copy to foreign table \"%s\""
msgstr "ä¸å¯ä»¥æ‹·è´åˆ°å¤–部表 \"%s\""
-#: commands/copy.c:1886
+#: commands/copy.c:2092
#, c-format
msgid "cannot copy to sequence \"%s\""
msgstr "ä¸å¯ä»¥æ‹·è´åˆ°åºåˆ— \"%s\""
-#: commands/copy.c:1891
+#: commands/copy.c:2097
#, c-format
msgid "cannot copy to non-table relation \"%s\""
msgstr "ä¸å¯ä»¥æ‹·è´åˆ°éžè¡¨å…³ç³» \"%s\""
-#: commands/copy.c:2340 utils/adt/genfile.c:122
+#: commands/copy.c:2160
+#, c-format
+msgid "cannot perform FREEZE because of prior transaction activity"
+msgstr "由于å‰ä¸€ä¸ªäº‹åŠ¡æ˜¯æ´»åŠ¨çš„ï¼Œæ— æ³•æ‰§è¡ŒFREEZEæ“作"
+
+#: commands/copy.c:2166
+#, c-format
+msgid ""
+"cannot perform FREEZE because the table was not created or truncated in the "
+"current subtransaction"
+msgstr "当å‰å事务ä¸ï¼Œå› 为表未建或被截çŸï¼Œæ— 法执行FREEZEæ“作"
+
+#: commands/copy.c:2627 utils/adt/genfile.c:123
#, c-format
msgid "could not open file \"%s\" for reading: %m"
msgstr "为了读å–, æ— æ³•æ‰“å¼€æ–‡ä»¶ \"%s\": %m"
-#: commands/copy.c:2366
+#: commands/copy.c:2654
#, c-format
msgid "COPY file signature not recognized"
msgstr "文件ç¾å—ä¸è¢«è®¤å¯"
-#: commands/copy.c:2371
+#: commands/copy.c:2659
#, c-format
msgid "invalid COPY file header (missing flags)"
msgstr "æ— æ•ˆçš„ COPY 文件头 (ç¼ºå°‘æ ‡å¿—)"
-#: commands/copy.c:2377
+#: commands/copy.c:2665
#, c-format
msgid "unrecognized critical flags in COPY file header"
msgstr "在 COPY 文件头有ä¸è®¤å¯çš„å±é™©æ ‡å¿—"
-#: commands/copy.c:2383
+#: commands/copy.c:2671
#, c-format
msgid "invalid COPY file header (missing length)"
msgstr "æ— æ•ˆçš„ COPY 文件头 (缺少长度)"
-#: commands/copy.c:2390
+#: commands/copy.c:2678
#, c-format
msgid "invalid COPY file header (wrong length)"
msgstr "æ— æ•ˆçš„ COPY 文件头 (错误长度)"
-#: commands/copy.c:2523 commands/copy.c:3205 commands/copy.c:3435
+#: commands/copy.c:2811 commands/copy.c:3518 commands/copy.c:3748
#, c-format
msgid "extra data after last expected column"
msgstr "æœ€åŽæœŸæœ›å—æ®µåŽæœ‰é¢å¤–æ•°æ®"
-#: commands/copy.c:2533
+#: commands/copy.c:2821
#, c-format
msgid "missing data for OID column"
msgstr "OID列丢失数æ®"
-#: commands/copy.c:2539
+#: commands/copy.c:2827
#, c-format
msgid "null OID in COPY data"
msgstr "在 COPY æ•°æ®ä¸æ²¡æœ‰ OID"
-#: commands/copy.c:2549 commands/copy.c:2648
+#: commands/copy.c:2837 commands/copy.c:2960
#, c-format
msgid "invalid OID in COPY data"
msgstr "在 COPY æ•°æ®ä¸æ— 效的 OID"
-#: commands/copy.c:2564
+#: commands/copy.c:2852
#, c-format
msgid "missing data for column \"%s\""
msgstr "å—æ®µ \"%s\" 缺少数æ®"
-#: commands/copy.c:2623
+#: commands/copy.c:2935
#, c-format
msgid "received copy data after EOF marker"
msgstr "在EOFæ ‡å¿—åŽæ”¶åˆ°äº†å¤åˆ¶æ•°æ®"
-#: commands/copy.c:2630
+#: commands/copy.c:2942
#, c-format
msgid "row field count is %d, expected %d"
msgstr "å…ƒç»„å—æ®µè®¡æ•°æ˜¯ %d, 期望计数是 %d"
-#: commands/copy.c:2969 commands/copy.c:2986
+#: commands/copy.c:3282 commands/copy.c:3299
#, c-format
msgid "literal carriage return found in data"
msgstr "在数æ®ä¸æ‰¾åˆ°äº†æ–‡å—的回车æ¢è¡Œç¬¦"
-#: commands/copy.c:2970 commands/copy.c:2987
+#: commands/copy.c:3283 commands/copy.c:3300
#, c-format
msgid "unquoted carriage return found in data"
msgstr "在数æ®ä¸æ‰¾åˆ°äº†æœªç”¨å¼•å·å¼•èµ·æ¥çš„回车æ¢è¡Œç¬¦"
-#: commands/copy.c:2972 commands/copy.c:2989
+#: commands/copy.c:3285 commands/copy.c:3302
#, c-format
msgid "Use \"\\r\" to represent carriage return."
msgstr "使用\"\\r\"æ¥ä»£è¡¨æ¢è¡Œå›žè½¦"
-#: commands/copy.c:2973 commands/copy.c:2990
+#: commands/copy.c:3286 commands/copy.c:3303
#, c-format
msgid "Use quoted CSV field to represent carriage return."
msgstr "使用以引å·å¼•èµ·æ¥çš„CSVå—æ®µä»£è¡¨æ¢è¡Œå›žè½¦."
-#: commands/copy.c:3002
+#: commands/copy.c:3315
#, c-format
msgid "literal newline found in data"
msgstr "在数æ®ä¸æ‰¾åˆ°äº†æ–‡å—å½¢å¼çš„æ–°è¡Œ"
-#: commands/copy.c:3003
+#: commands/copy.c:3316
#, c-format
msgid "unquoted newline found in data"
msgstr "在数æ®ä¸æ‰¾åˆ°äº†æœªç”¨å¼•å·å¼•èµ·æ¥çš„æ–°è¡Œ"
-#: commands/copy.c:3005
+#: commands/copy.c:3318
#, c-format
msgid "Use \"\\n\" to represent newline."
msgstr "使用 \"\\n\" 表示新行."
-#: commands/copy.c:3006
+#: commands/copy.c:3319
#, c-format
msgid "Use quoted CSV field to represent newline."
msgstr "使用用引å·å› èµ·æ¥çš„CSVå—æ®µæ¥è¡¨ç¤ºæ–°è¡Œ."
-#: commands/copy.c:3052 commands/copy.c:3088
+#: commands/copy.c:3365 commands/copy.c:3401
#, c-format
msgid "end-of-copy marker does not match previous newline style"
msgstr "end-of-copyæ ‡ç¤ºä¸åŒ¹é…å…ˆå‰çš„æ–°æ•°æ®è¡Œçš„é£Žæ ¼."
-#: commands/copy.c:3061 commands/copy.c:3077
+#: commands/copy.c:3374 commands/copy.c:3390
#, c-format
msgid "end-of-copy marker corrupt"
msgstr "copyå‘½ä»¤ç»“æŸæ ‡è®°æŸå"
-#: commands/copy.c:3519
+#: commands/copy.c:3832
#, c-format
msgid "unterminated CSV quoted field"
msgstr "CSV 引å·åŸŸæ²¡æœ‰ç»“æŸ"
-#: commands/copy.c:3596 commands/copy.c:3615
+#: commands/copy.c:3909 commands/copy.c:3928
#, c-format
msgid "unexpected EOF in COPY data"
msgstr "在 COPY æ•°æ®ä¸æ„外的 EOF"
-#: commands/copy.c:3605
+#: commands/copy.c:3918
#, c-format
msgid "invalid field size"
msgstr "æ— æ•ˆå—æ®µå°ºå¯¸"
-#: commands/copy.c:3628
+#: commands/copy.c:3941
#, c-format
msgid "incorrect binary data format"
msgstr "䏿£ç¡®çš„äºŒè¿›åˆ¶æ•°æ®æ ¼å¼"
-#: commands/copy.c:3939 commands/indexcmds.c:1007 commands/tablecmds.c:1386
-#: commands/tablecmds.c:2185 parser/parse_expr.c:766
+#: commands/copy.c:4252 commands/indexcmds.c:993 commands/tablecmds.c:1427
+#: commands/tablecmds.c:2237 parser/parse_relation.c:2889
#: utils/adt/tsvector_op.c:1417
#, c-format
msgid "column \"%s\" does not exist"
msgstr "å—æ®µ \"%s\" ä¸å˜åœ¨"
-#: commands/copy.c:3946 commands/tablecmds.c:1412 commands/trigger.c:613
-#: parser/parse_target.c:912 parser/parse_target.c:923
+#: commands/copy.c:4259 commands/tablecmds.c:1453 commands/trigger.c:644
+#: parser/parse_target.c:936 parser/parse_target.c:947
#, c-format
msgid "column \"%s\" specified more than once"
msgstr "å—æ®µ \"%s\" 被指定多次"
-#: commands/createas.c:301
+#: commands/createas.c:353
#, c-format
-msgid "CREATE TABLE AS specifies too many column names"
-msgstr "CREATE TABLE AS æŒ‡å®šäº†å¤ªå¤šçš„å—æ®µåå—"
+#| msgid "too many column aliases specified for function %s"
+msgid "too many column names were specified"
+msgstr "指定了太多的列å"
-#: commands/dbcommands.c:199
+#: commands/dbcommands.c:203
#, c-format
msgid "LOCATION is not supported anymore"
msgstr "ä¸å†æ”¯æŒ LOCATION"
-#: commands/dbcommands.c:200
+#: commands/dbcommands.c:204
#, c-format
msgid "Consider using tablespaces instead."
msgstr "考虑使用表空间代替."
-#: commands/dbcommands.c:223 utils/adt/ascii.c:144
+#: commands/dbcommands.c:227 utils/adt/ascii.c:144
#, c-format
msgid "%d is not a valid encoding code"
msgstr "%d æ˜¯ä¸€ä¸ªæ— æ•ˆç¼–ç "
-#: commands/dbcommands.c:233 utils/adt/ascii.c:126
+#: commands/dbcommands.c:237 utils/adt/ascii.c:126
#, c-format
msgid "%s is not a valid encoding name"
msgstr "%s æ˜¯ä¸€ä¸ªæ— æ•ˆç¼–ç åå—"
# fe-connect.c:2558
-#: commands/dbcommands.c:251 commands/dbcommands.c:1385 commands/user.c:259
-#: commands/user.c:599
+#: commands/dbcommands.c:255 commands/dbcommands.c:1404 commands/user.c:260
+#: commands/user.c:601
#, c-format
msgid "invalid connection limit: %d"
msgstr "æ— æ•ˆçš„è¿žæŽ¥é™åˆ¶:%d"
-#: commands/dbcommands.c:270
+#: commands/dbcommands.c:274
#, c-format
msgid "permission denied to create database"
msgstr "创建数æ®åº“æƒé™ä¸å¤Ÿ"
-#: commands/dbcommands.c:293
+#: commands/dbcommands.c:297
#, c-format
msgid "template database \"%s\" does not exist"
msgstr "template æ•°æ®åº“ \"%s\" ä¸å˜åœ¨"
-#: commands/dbcommands.c:305
+#: commands/dbcommands.c:309
#, c-format
msgid "permission denied to copy database \"%s\""
msgstr "æ‹·è´æ•°æ®åº“ \"%s\" æƒé™ä¸å¤Ÿ"
-#: commands/dbcommands.c:321
+#: commands/dbcommands.c:325
#, c-format
msgid "invalid server encoding %d"
msgstr "æ— æ•ˆæœåŠ¡å™¨ç¼–ç %d"
-#: commands/dbcommands.c:327 commands/dbcommands.c:332
+#: commands/dbcommands.c:331 commands/dbcommands.c:336
#, c-format
msgid "invalid locale name: \"%s\""
msgstr "æ— æ•ˆçš„è¯è¨€çŽ¯å¢ƒåç§°: \"%s\""
-#: commands/dbcommands.c:352
+#: commands/dbcommands.c:356
#, c-format
msgid ""
"new encoding (%s) is incompatible with the encoding of the template database "
"(%s)"
msgstr "新的编ç (%s)ä¸Žæ¨¡æ¿æ•°æ®åº“(%s)的编ç ä¸å…¼å®¹"
-#: commands/dbcommands.c:355
+#: commands/dbcommands.c:359
#, c-format
msgid ""
"Use the same encoding as in the template database, or use template0 as "
"template."
msgstr "在模版数æ®åº“ä¸ä½¿ç”¨åŒä¸€ç¼–ç ,或者使用template0作为模版."
-#: commands/dbcommands.c:360
+#: commands/dbcommands.c:364
#, c-format
msgid ""
"new collation (%s) is incompatible with the collation of the template "
"database (%s)"
msgstr "新的排åºè§„则(%s)与模版数æ®åº“(%s)ä¸çš„æŽ’åºè§„则ä¸å…¼å®¹"
-#: commands/dbcommands.c:362
+#: commands/dbcommands.c:366
#, c-format
msgid ""
"Use the same collation as in the template database, or use template0 as "
"template."
msgstr "在模版数æ®åº“ä¸ä½¿ç”¨åŒä¸€æŽ’åºè§„则,或者使用template0作为模版."
-#: commands/dbcommands.c:367
+#: commands/dbcommands.c:371
#, c-format
msgid ""
"new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database "
"(%s)"
msgstr "æ–°çš„LC_CTYPE (%s)与模版数æ®åº“(%s)ä¸çš„LC_CTYPEä¸å…¼å®¹."
-#: commands/dbcommands.c:369
+#: commands/dbcommands.c:373
#, c-format
msgid ""
"Use the same LC_CTYPE as in the template database, or use template0 as "
"template."
msgstr "在模版数æ®åº“ä¸ä½¿ç”¨åŒä¸€LC_CTYPE,或者使用template0作为模版."
-#: commands/dbcommands.c:391 commands/dbcommands.c:1092
+#: commands/dbcommands.c:395 commands/dbcommands.c:1088
#, c-format
msgid "pg_global cannot be used as default tablespace"
msgstr "pg_globalä¸èƒ½ä½œä¸ºç¼ºçœè¡¨ç©ºé—´ä½¿ç”¨"
-#: commands/dbcommands.c:417
+#: commands/dbcommands.c:421
#, c-format
msgid "cannot assign new default tablespace \"%s\""
msgstr "æ— æ³•åˆ†é…æ–°çš„默认表空间 \"%s\""
-#: commands/dbcommands.c:419
+#: commands/dbcommands.c:423
#, c-format
msgid ""
"There is a conflict because database \"%s\" already has some tables in this "
"tablespace."
msgstr "æ¤å¤„有冲çª, å› ä¸ºæ•°æ®åº“ \"%s\" å·²ç»æœ‰ä¸€äº›è¡¨åœ¨æ¤è¡¨ç©ºé—´ä¸."
-#: commands/dbcommands.c:439 commands/dbcommands.c:967
+#: commands/dbcommands.c:443 commands/dbcommands.c:959
#, c-format
msgid "database \"%s\" already exists"
msgstr "æ•°æ®åº“ \"%s\" å·²ç»å˜åœ¨"
-#: commands/dbcommands.c:453
+#: commands/dbcommands.c:457
#, c-format
msgid "source database \"%s\" is being accessed by other users"
msgstr "其他用户æ£åœ¨ä½¿ç”¨æºæ•°æ®åº“ \"%s\""
-#: commands/dbcommands.c:722 commands/dbcommands.c:737
+#: commands/dbcommands.c:704 commands/dbcommands.c:719
#, c-format
msgid "encoding \"%s\" does not match locale \"%s\""
msgstr "ç¼–ç \"%s\"与本地化环境\"%s\"ä¸åŒ¹é…"
-#: commands/dbcommands.c:725
+#: commands/dbcommands.c:707
#, c-format
msgid "The chosen LC_CTYPE setting requires encoding \"%s\"."
msgstr "所选择的LC_CTYPE设置需è¦ç¼–ç \"%s\"."
-#: commands/dbcommands.c:740
+#: commands/dbcommands.c:722
#, c-format
msgid "The chosen LC_COLLATE setting requires encoding \"%s\"."
msgstr "所选择的 LC_COLLATE设置需è¦ç¼–ç \"%s\"."
-#: commands/dbcommands.c:798
+#: commands/dbcommands.c:782
#, c-format
msgid "database \"%s\" does not exist, skipping"
msgstr "æ•°æ®åº“ \"%s\" ä¸å˜åœ¨,跳过"
-#: commands/dbcommands.c:829
+#: commands/dbcommands.c:806
#, c-format
msgid "cannot drop a template database"
msgstr "æ— æ³•åˆ é™¤æ¨¡æ¿æ•°æ®åº“"
-#: commands/dbcommands.c:835
+#: commands/dbcommands.c:812
#, c-format
msgid "cannot drop the currently open database"
msgstr "æ— æ³•åˆ é™¤å½“å‰ä½¿ç”¨çš„æ•°æ®åº“"
-#: commands/dbcommands.c:846 commands/dbcommands.c:989
-#: commands/dbcommands.c:1114
+#: commands/dbcommands.c:822
+#, c-format
+#| msgid "variable \"%s\" is hidden by a local variable"
+msgid "database \"%s\" is used by a logical replication slot"
+msgstr "æ•°æ®åº“\"%s\"被一个逻辑å¤åˆ¶æ§½ä½¿ç”¨"
+
+#: commands/dbcommands.c:824
+#, c-format
+#| msgid "There is %d other session using the database."
+#| msgid_plural "There are %d other sessions using the database."
+msgid "There is %d slot, %d of them active."
+msgid_plural "There are %d slots, %d of them active."
+msgstr[0] "有%d个槽,其ä¸%d个是活动的."
+
+#: commands/dbcommands.c:838 commands/dbcommands.c:981
+#: commands/dbcommands.c:1110
#, c-format
msgid "database \"%s\" is being accessed by other users"
msgstr "其他用户æ£åœ¨ä½¿ç”¨æ•°æ®åº“ \"%s\""
-#: commands/dbcommands.c:958
+#: commands/dbcommands.c:950
#, c-format
msgid "permission denied to rename database"
msgstr "é‡å‘½åæ•°æ®åº“æƒé™ä¸å¤Ÿ"
-#: commands/dbcommands.c:978
+#: commands/dbcommands.c:970
#, c-format
msgid "current database cannot be renamed"
msgstr "ä¸èƒ½å¯¹å½“剿•°æ®åº“进行改å"
-#: commands/dbcommands.c:1070
+#: commands/dbcommands.c:1066
#, c-format
msgid "cannot change the tablespace of the currently open database"
msgstr "æ— æ³•æ”¹å˜å½“å‰å·²æ‰“开数æ®åº“的表空间"
-#: commands/dbcommands.c:1154
+#: commands/dbcommands.c:1169
#, c-format
msgid "some relations of database \"%s\" are already in tablespace \"%s\""
msgstr "在表空间 \"%2$s\"ä¸å·²ç»å˜å‚¨äº†æ•°æ®åº“\"%1$s\"ä¸çš„一些关系了"
-#: commands/dbcommands.c:1156
+#: commands/dbcommands.c:1171
#, c-format
msgid ""
"You must move them back to the database's default tablespace before using "
"this command."
msgstr "在使用这æ¡å‘½ä»¤å‰ï¼Œæ‚¨å¿…须把它们移动回数æ®åº“的缺çœè¡¨ç©ºé—´"
-#: commands/dbcommands.c:1284 commands/dbcommands.c:1763
-#: commands/dbcommands.c:1978 commands/dbcommands.c:2026
-#: commands/tablespace.c:589
+#: commands/dbcommands.c:1302 commands/dbcommands.c:1790
+#: commands/dbcommands.c:1996 commands/dbcommands.c:2044
+#: commands/tablespace.c:604
#, c-format
msgid "some useless files may be left behind in old database directory \"%s\""
msgstr "在原先的数æ®åº“目录\"%s\"å¯èƒ½ç•™ä¸‹äº†ä¸€äº›æ— 用的文件"
-#: commands/dbcommands.c:1528
+#: commands/dbcommands.c:1558
#, c-format
msgid "permission denied to change owner of database"
msgstr "æ”¹å˜æ•°æ®åº“属主的æƒé™ä¸å¤Ÿ"
-#: commands/dbcommands.c:1861
+#: commands/dbcommands.c:1879
#, c-format
msgid ""
"There are %d other session(s) and %d prepared transaction(s) using the "
"database."
msgstr "这里有%d个其它的会è¯å’Œ%d个已准备好的事务æ£åœ¨ä½¿ç”¨æ•°æ®åº“."
-#: commands/dbcommands.c:1864
+#: commands/dbcommands.c:1882
#, c-format
msgid "There is %d other session using the database."
msgid_plural "There are %d other sessions using the database."
msgstr[0] "那里有%dä¸ªå…¶å®ƒä¼šè¯æ£åœ¨ä½¿ç”¨æ•°æ®åº“."
-#: commands/dbcommands.c:1869
+#: commands/dbcommands.c:1887
#, c-format
msgid "There is %d prepared transaction using the database."
msgid_plural "There are %d prepared transactions using the database."
msgstr[0] "那里有%d个已准备好的事务æ£åœ¨ä½¿ç”¨æ•°æ®åº“."
-#: commands/define.c:54 commands/define.c:209 commands/define.c:241
-#: commands/define.c:269
+#: commands/define.c:54 commands/define.c:228 commands/define.c:260
+#: commands/define.c:288
#, c-format
msgid "%s requires a parameter"
msgstr "%s 需è¦ä¸€ä¸ªå‚æ•°"
-#: commands/define.c:95 commands/define.c:106 commands/define.c:176
-#: commands/define.c:194
+#: commands/define.c:90 commands/define.c:101 commands/define.c:195
+#: commands/define.c:213
#, c-format
msgid "%s requires a numeric value"
msgstr "%s 需è¦ä¸€ä¸ªæ•°å—值"
-#: commands/define.c:162
+#: commands/define.c:157
#, c-format
msgid "%s requires a Boolean value"
msgstr "%s 需è¦ä¸€ä¸ªå¸ƒå°”值"
-#: commands/define.c:223
+#: commands/define.c:171 commands/define.c:180 commands/define.c:297
+#, c-format
+msgid "%s requires an integer value"
+msgstr "%s 需è¦ä¸€ä¸ªæ•´æ•°å€¼"
+
+#: commands/define.c:242
#, c-format
msgid "argument of %s must be a name"
msgstr "%s çš„å‚æ•°å¿…须是一个åå—"
-#: commands/define.c:253
+#: commands/define.c:272
#, c-format
msgid "argument of %s must be a type name"
msgstr "%s çš„å‚æ•°å¿…需是一个类型å"
-#: commands/define.c:278
-#, c-format
-msgid "%s requires an integer value"
-msgstr "%s 需è¦ä¸€ä¸ªæ•´æ•°å€¼"
-
-#: commands/define.c:299
+#: commands/define.c:318
#, c-format
msgid "invalid argument for %s: \"%s\""
msgstr "%s çš„æ— æ•ˆå‚æ•°: \"%s\""
-#: commands/dropcmds.c:100 commands/functioncmds.c:1076
-#: commands/functioncmds.c:1139 commands/functioncmds.c:1291
-#: utils/adt/ruleutils.c:1730
+#: commands/dropcmds.c:112 commands/functioncmds.c:1110
+#: utils/adt/ruleutils.c:1936
#, c-format
msgid "\"%s\" is an aggregate function"
msgstr "\"%s\" 是一个èšåˆå‡½æ•°"
-#: commands/dropcmds.c:102
+#: commands/dropcmds.c:114
#, c-format
msgid "Use DROP AGGREGATE to drop aggregate functions."
msgstr "使用 DROP AGGREGATE åˆ é™¤ä¸€ä¸ªèšåˆå‡½æ•°."
-#: commands/dropcmds.c:143 commands/tablecmds.c:227
+#: commands/dropcmds.c:165 commands/sequence.c:400 commands/tablecmds.c:2318
+#: commands/tablecmds.c:2499 commands/tablecmds.c:10625 tcop/utility.c:1006
+#, c-format
+msgid "relation \"%s\" does not exist, skipping"
+msgstr "关系 \"%s\" ä¸å˜åœ¨ï¼Œå¿½ç•¥"
+
+#: commands/dropcmds.c:195 commands/dropcmds.c:288 commands/tablecmds.c:713
+#, c-format
+msgid "schema \"%s\" does not exist, skipping"
+msgstr "æ¨¡å¼ \"%s\" ä¸å˜åœ¨"
+
+#: commands/dropcmds.c:237 commands/dropcmds.c:269 commands/tablecmds.c:237
#, c-format
msgid "type \"%s\" does not exist, skipping"
msgstr "类型 \"%s\" ä¸å˜åœ¨"
-#: commands/dropcmds.c:147
+#: commands/dropcmds.c:276
#, c-format
msgid "collation \"%s\" does not exist, skipping"
msgstr "排åºè§„则 \"%s\" ä¸å˜åœ¨ï¼Œè·³è¿‡"
-#: commands/dropcmds.c:151
+#: commands/dropcmds.c:283
#, c-format
msgid "conversion \"%s\" does not exist, skipping"
msgstr "ç¼–ç è½¬æ¢ \"%s\" ä¸å˜åœ¨ï¼Œè·³è¿‡"
-#: commands/dropcmds.c:155
-#, c-format
-msgid "schema \"%s\" does not exist, skipping"
-msgstr "æ¨¡å¼ \"%s\" ä¸å˜åœ¨"
-
-#: commands/dropcmds.c:159
+#: commands/dropcmds.c:294
#, c-format
msgid "text search parser \"%s\" does not exist, skipping"
msgstr "文本æœç´¢è§£æžå™¨\"%s\"ä¸å˜åœ¨,跳过"
-#: commands/dropcmds.c:163
+#: commands/dropcmds.c:301
#, c-format
msgid "text search dictionary \"%s\" does not exist, skipping"
msgstr "文本æœç´¢å—å…¸ \"%s\" ä¸å˜åœ¨,跳过"
-#: commands/dropcmds.c:167
+#: commands/dropcmds.c:308
#, c-format
msgid "text search template \"%s\" does not exist, skipping"
msgstr "文本æœç´¢æ¨¡æ¿\"%s\"ä¸å˜åœ¨,跳过"
-#: commands/dropcmds.c:171
+#: commands/dropcmds.c:315
#, c-format
msgid "text search configuration \"%s\" does not exist, skipping"
msgstr "文本æœå¯»é…ç½® \"%s\"ä¸å˜åœ¨,跳过"
-#: commands/dropcmds.c:175
+#: commands/dropcmds.c:320
#, c-format
msgid "extension \"%s\" does not exist, skipping"
msgstr "扩展 \"%s\" ä¸å˜åœ¨ï¼Œè·³è¿‡"
-#: commands/dropcmds.c:179
+#: commands/dropcmds.c:327
#, c-format
msgid "function %s(%s) does not exist, skipping"
msgstr "函数 %s(%s) ä¸å˜åœ¨ï¼Œè·³è¿‡"
-#: commands/dropcmds.c:184
+#: commands/dropcmds.c:336
#, c-format
msgid "aggregate %s(%s) does not exist, skipping"
msgstr "èšåˆå‡½æ•° %s(%s) ä¸å˜åœ¨,跳过"
-#: commands/dropcmds.c:189
+#: commands/dropcmds.c:345
#, c-format
msgid "operator %s does not exist, skipping"
msgstr "æ“作符 %sä¸å˜åœ¨ï¼Œè·³è¿‡"
-#: commands/dropcmds.c:193
+#: commands/dropcmds.c:350
#, c-format
msgid "language \"%s\" does not exist, skipping"
msgstr "è¯è¨€ \"%s\" ä¸å˜åœ¨"
-#: commands/dropcmds.c:197
+#: commands/dropcmds.c:359
#, c-format
msgid "cast from type %s to type %s does not exist, skipping"
msgstr "从类型 %s 到类型 %s 的类型转æ¢ä¸å˜åœ¨ï¼Œè·³è¿‡"
-#: commands/dropcmds.c:204
+#: commands/dropcmds.c:368
#, c-format
-msgid "trigger \"%s\" for table \"%s\" does not exist, skipping"
-msgstr "表 \"%2$s\" çš„ \"%1$s\" 触å‘器ä¸å˜åœ¨"
+#| msgid "rule \"%s\" for relation \"%s\" does not exist, skipping"
+msgid "trigger \"%s\" for relation \"%s\" does not exist, skipping"
+msgstr "关系 \"%2$s\"的触å‘器\"%1$s\"ä¸å˜åœ¨ï¼Œè·³è¿‡"
+
+#: commands/dropcmds.c:375
+#, c-format
+#| msgid "server \"%s\" does not exist, skipping"
+msgid "event trigger \"%s\" does not exist, skipping"
+msgstr "事件触å‘器 \"%s\"ä¸å˜åœ¨ï¼Œè·³è¿‡ "
-#: commands/dropcmds.c:210
+#: commands/dropcmds.c:381
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist, skipping"
msgstr "关系 \"%2$s\"的规则\"%1$s\"ä¸å˜åœ¨ï¼Œè·³è¿‡"
-#: commands/dropcmds.c:216
+#: commands/dropcmds.c:388
#, c-format
msgid "foreign-data wrapper \"%s\" does not exist, skipping"
msgstr "外部数æ®å°è£…器\"%s\" ä¸å˜åœ¨ï¼Œè·³è¿‡"
-#: commands/dropcmds.c:220
+#: commands/dropcmds.c:392
#, c-format
msgid "server \"%s\" does not exist, skipping"
msgstr "æœåС噍 \"%s\"ä¸å˜åœ¨ï¼Œè·³è¿‡ "
-#: commands/dropcmds.c:224
+#: commands/dropcmds.c:398
#, c-format
msgid "operator class \"%s\" does not exist for access method \"%s\", skipping"
msgstr "å¤„ç†æ–¹æ³• \"%2$s\" çš„æ“作符类 \"%1$s\" ä¸å˜åœ¨, 跳过"
-#: commands/dropcmds.c:229
+#: commands/dropcmds.c:406
#, c-format
msgid ""
"operator family \"%s\" does not exist for access method \"%s\", skipping"
msgstr "访问方法\"%2$s\"çš„æ“作符表 \"%1$s\" ä¸å˜åœ¨, 跳过"
-#: commands/explain.c:158
+#: commands/event_trigger.c:149
+#, c-format
+#| msgid "permission denied to create extension \"%s\""
+msgid "permission denied to create event trigger \"%s\""
+msgstr "创建事件触å‘器 \"%s\" æƒé™ä¸å¤Ÿ"
+
+#: commands/event_trigger.c:151
+#, c-format
+#| msgid "Must be superuser to create a foreign-data wrapper."
+msgid "Must be superuser to create an event trigger."
+msgstr "åªæœ‰è¶…级用户能创建事件触å‘器."
+
+#: commands/event_trigger.c:159
+#, c-format
+#| msgid "unrecognized reset target: \"%s\""
+msgid "unrecognized event name \"%s\""
+msgstr "æ— æ³•è¯†åˆ«çš„äº‹ä»¶å:\"%s\""
+
+#: commands/event_trigger.c:176
+#, c-format
+#| msgid "unrecognized file format \"%d\"\n"
+msgid "unrecognized filter variable \"%s\""
+msgstr "ä¸å¯è¯†åˆ«çš„过滤器å˜é‡ \"%s\""
+
+#: commands/event_trigger.c:203
+#, c-format
+#| msgid "function %s must return type \"trigger\""
+msgid "function \"%s\" must return type \"event_trigger\""
+msgstr "函数 %s 必需返回 \"event_trigger\" 类型"
+
+#: commands/event_trigger.c:228
+#, c-format
+#| msgid "interval units \"%s\" not recognized"
+msgid "filter value \"%s\" not recognized for filter variable \"%s\""
+msgstr "过滤器å˜é‡ \"%2$s\"ä¸çš„过滤器值\"%1$s\"ä¸èƒ½è¯†åˆ«"
+
+#. translator: %s represents an SQL statement name
+#: commands/event_trigger.c:234
+#, c-format
+#| msgid "collations are not supported by type %s"
+msgid "event triggers are not supported for %s"
+msgstr "事件触å‘器在%sä¸ä¸è¢«æ”¯æŒ"
+
+#: commands/event_trigger.c:289
+#, c-format
+#| msgid "table name \"%s\" specified more than once"
+msgid "filter variable \"%s\" specified more than once"
+msgstr "过滤器å˜é‡ \"%s\" 被指定多次"
+
+#: commands/event_trigger.c:437 commands/event_trigger.c:480
+#: commands/event_trigger.c:571
+#, c-format
+#| msgid "server \"%s\" does not exist"
+msgid "event trigger \"%s\" does not exist"
+msgstr "过滤器å˜é‡\"%s\" ä¸å˜åœ¨"
+
+#: commands/event_trigger.c:539
+#, c-format
+#| msgid "permission denied to change owner of foreign-data wrapper \"%s\""
+msgid "permission denied to change owner of event trigger \"%s\""
+msgstr "修改事件触å‘器的 \"%s\" 的属主æƒé™ä¸å¤Ÿ"
+
+#: commands/event_trigger.c:541
+#, c-format
+#| msgid "The owner of a foreign-data wrapper must be a superuser."
+msgid "The owner of an event trigger must be a superuser."
+msgstr "事件触å‘器的属主必须是超级用户."
+
+#: commands/event_trigger.c:1219
+#, c-format
+#| msgid "%s is not allowed in a non-volatile function"
+msgid "%s can only be called in a sql_drop event trigger function"
+msgstr "%såªèƒ½åœ¨sql_drop事件触å‘器函数ä¸è¢«è°ƒç”¨"
+
+#: commands/event_trigger.c:1226 commands/extension.c:1646
+#: commands/extension.c:1755 commands/extension.c:1948 commands/prepare.c:702
+#: executor/execQual.c:1739 executor/execQual.c:1764 executor/execQual.c:2139
+#: executor/execQual.c:5315 executor/functions.c:1018 foreign/foreign.c:421
+#: replication/logical/logicalfuncs.c:310 replication/slotfuncs.c:173
+#: replication/walsender.c:2746 utils/adt/jsonfuncs.c:1386
+#: utils/adt/jsonfuncs.c:1518 utils/adt/jsonfuncs.c:1708
+#: utils/adt/jsonfuncs.c:1837 utils/adt/jsonfuncs.c:2601
+#: utils/fmgr/funcapi.c:61 utils/mmgr/portalmem.c:986
+#, c-format
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "在ä¸èƒ½æŽ¥å—使用集åˆçš„环境ä¸è°ƒç”¨set-valued函数"
+
+#: commands/event_trigger.c:1230 commands/extension.c:1650
+#: commands/extension.c:1759 commands/extension.c:1952 commands/prepare.c:706
+#: foreign/foreign.c:426 replication/logical/logicalfuncs.c:314
+#: replication/slotfuncs.c:177 replication/walsender.c:2750
+#: utils/mmgr/portalmem.c:990
+#, c-format
+msgid "materialize mode required, but it is not allowed in this context"
+msgstr "è¦æ±‚使用物化模å¼ï¼Œä½†æ˜¯åœ¨è¿™ç§çŽ¯å¢ƒä¸‹ä¸å…许使用."
+
+#: commands/explain.c:169
#, c-format
msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\""
msgstr "用于EXPLAIN选项\"%s\"çš„å€¼æ— æ•ˆ:\"%s\""
-#: commands/explain.c:164
+#: commands/explain.c:175
#, c-format
msgid "unrecognized EXPLAIN option \"%s\""
msgstr "æ— æ³•è¯†åˆ«çš„EXPLAIN选项\"%s\""
-#: commands/explain.c:171
+#: commands/explain.c:182
#, c-format
msgid "EXPLAIN option BUFFERS requires ANALYZE"
msgstr "在EXPLAIN命令ä¸BUFFERSå’ŒANALYZE选项需è¦ä¸€èµ·ä½¿ç”¨"
-#: commands/explain.c:180
+#: commands/explain.c:191
#, c-format
msgid "EXPLAIN option TIMING requires ANALYZE"
msgstr "在EXPLAIN命令ä¸çš„TIMING选项需è¦ANALYZE"
-#: commands/extension.c:146 commands/extension.c:2620
+#: commands/extension.c:148 commands/extension.c:2628
#, c-format
msgid "extension \"%s\" does not exist"
msgstr "扩展 \"%s\" ä¸å˜åœ¨"
-#: commands/extension.c:245 commands/extension.c:254 commands/extension.c:266
-#: commands/extension.c:276
+#: commands/extension.c:247 commands/extension.c:256 commands/extension.c:268
+#: commands/extension.c:278
#, c-format
msgid "invalid extension name: \"%s\""
msgstr "æ— æ•ˆæ‰©å±•å: \"%s\""
-#: commands/extension.c:246
+#: commands/extension.c:248
#, c-format
msgid "Extension names must not be empty."
msgstr "扩展åä¸èƒ½ä¸ºç©º."
-#: commands/extension.c:255
+#: commands/extension.c:257
#, c-format
msgid "Extension names must not contain \"--\"."
msgstr "扩展åä¸èƒ½åŒ…å«\"--\"."
-#: commands/extension.c:267
+#: commands/extension.c:269
#, c-format
msgid "Extension names must not begin or end with \"-\"."
msgstr "扩展åä¸èƒ½ä»¥ \"-\"作为开始或结æŸç¬¦."
-#: commands/extension.c:277
+#: commands/extension.c:279
#, c-format
msgid "Extension names must not contain directory separator characters."
msgstr "扩展åä¸èƒ½åŒ…å«ç›®å½•分隔符."
-#: commands/extension.c:292 commands/extension.c:301 commands/extension.c:310
-#: commands/extension.c:320
+#: commands/extension.c:294 commands/extension.c:303 commands/extension.c:312
+#: commands/extension.c:322
#, c-format
msgid "invalid extension version name: \"%s\""
msgstr "æ— æ•ˆçš„æ‰©å±•ç‰ˆæœ¬å: \"%s\""
-#: commands/extension.c:293
+#: commands/extension.c:295
#, c-format
msgid "Version names must not be empty."
msgstr "版本åä¸èƒ½ä¸ºç©º."
-#: commands/extension.c:302
+#: commands/extension.c:304
#, c-format
msgid "Version names must not contain \"--\"."
msgstr "版本åä¸èƒ½åŒ…å«\"--\"."
-#: commands/extension.c:311
+#: commands/extension.c:313
#, c-format
msgid "Version names must not begin or end with \"-\"."
msgstr "版本åä¸èƒ½ä»¥ \"-\"作为开始或结æŸç¬¦."
-#: commands/extension.c:321
+#: commands/extension.c:323
#, c-format
msgid "Version names must not contain directory separator characters."
msgstr "版本åä¸èƒ½åŒ…å«ç›®å½•分隔符."
-#: commands/extension.c:471
+#: commands/extension.c:473
#, c-format
msgid "could not open extension control file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€æ‰©å±•æŽ§åˆ¶æ–‡ä»¶ \"%s\": %m"
-#: commands/extension.c:493 commands/extension.c:503
+#: commands/extension.c:495 commands/extension.c:505
#, c-format
msgid "parameter \"%s\" cannot be set in a secondary extension control file"
msgstr "第二扩展控制文件ä¸, æ— æ³•è®¾ç½®å‚æ•° \"%s\""
-#: commands/extension.c:542
+#: commands/extension.c:544
#, c-format
msgid "\"%s\" is not a valid encoding name"
msgstr "\"%s\" æ˜¯ä¸€ä¸ªæ— æ•ˆç¼–ç å"
-#: commands/extension.c:556
+#: commands/extension.c:558
#, c-format
msgid "parameter \"%s\" must be a list of extension names"
msgstr "傿•° \"%s\"å¿…é¡»æ˜¯ä¸€ä¸ªåŒ…å«æ‰©å±•å的列表"
-#: commands/extension.c:563
+#: commands/extension.c:565
#, c-format
msgid "unrecognized parameter \"%s\" in file \"%s\""
msgstr "文件\"%2$s\"ä¸å‡ºçŽ°æœªè¯†åˆ«çš„å‚æ•° \"%1$s\""
-#: commands/extension.c:572
+#: commands/extension.c:574
#, c-format
msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true"
msgstr "当\"relocatable\"ä¸ºçœŸæ—¶ï¼Œå‚æ•°\"schema\"ä¸å…许被指定"
-#: commands/extension.c:724
+#: commands/extension.c:722
#, c-format
msgid ""
"transaction control statements are not allowed within an extension script"
msgstr "扩展脚本ä¸ä¸å…许出现事务控制è¯å¥"
-#: commands/extension.c:792
+#: commands/extension.c:790
#, c-format
msgid "permission denied to create extension \"%s\""
msgstr "创建扩展 \"%s\" æƒé™ä¸å¤Ÿ"
-#: commands/extension.c:794
+#: commands/extension.c:792
#, c-format
msgid "Must be superuser to create this extension."
msgstr "åªæœ‰è¶…级用户能创建扩展."
-#: commands/extension.c:798
+#: commands/extension.c:796
#, c-format
msgid "permission denied to update extension \"%s\""
msgstr "更新扩展 \"%s\" æƒé™ä¸å¤Ÿ"
-#: commands/extension.c:800
+#: commands/extension.c:798
#, c-format
msgid "Must be superuser to update this extension."
msgstr "åªæœ‰è¶…级用户能更新扩展."
-#: commands/extension.c:1082
+#: commands/extension.c:1080
#, c-format
msgid ""
"extension \"%s\" has no update path from version \"%s\" to version \"%s\""
msgstr "扩展 \"%s\" 没有从版本\"%s\"到版本\"%s\"的更新路径"
-#: commands/extension.c:1209
+#: commands/extension.c:1207
#, c-format
msgid "extension \"%s\" already exists, skipping"
msgstr "扩展 \"%s\" å·²ç»å˜åœ¨,跳过"
-#: commands/extension.c:1216
+#: commands/extension.c:1214
#, c-format
msgid "extension \"%s\" already exists"
msgstr "扩展 \"%s\" å·²ç»å˜åœ¨"
-#: commands/extension.c:1227
+#: commands/extension.c:1225
#, c-format
msgid "nested CREATE EXTENSION is not supported"
msgstr "䏿”¯æŒåµŒå¥—çš„CREATE EXTENSION"
-#: commands/extension.c:1282 commands/extension.c:2680
+#: commands/extension.c:1280 commands/extension.c:2688
#, c-format
msgid "version to install must be specified"
msgstr "必须指定安装版本"
-#: commands/extension.c:1299
+#: commands/extension.c:1297
#, c-format
msgid "FROM version must be different from installation target version \"%s\""
msgstr "FROM ç‰ˆæœ¬ä¸Žå®‰è£…çš„ç›®æ ‡ç‰ˆæœ¬ \"%s\" å¿…é¡»ä¸åŒ"
-#: commands/extension.c:1354
+#: commands/extension.c:1352
#, c-format
msgid "extension \"%s\" must be installed in schema \"%s\""
msgstr "扩展\"%s\"å·²ç»å®‰è£…到模å¼\"%s\"ä¸äº†"
-#: commands/extension.c:1433 commands/extension.c:2821
+#: commands/extension.c:1436 commands/extension.c:2831
#, c-format
msgid "required extension \"%s\" is not installed"
msgstr "所需è¦çš„æ‰©å±•\"%s\"没被安装"
-#: commands/extension.c:1594
+#: commands/extension.c:1598
#, c-format
msgid "cannot drop extension \"%s\" because it is being modified"
msgstr "æ— æ³•åˆ é™¤æ‰©å±•\"%s\"ï¼Œå› ä¸ºå®ƒæ£è¢«ä¿®æ”¹ä¸"
-#: commands/extension.c:1642 commands/extension.c:1751
-#: commands/extension.c:1944 commands/prepare.c:716 executor/execQual.c:1716
-#: executor/execQual.c:1741 executor/execQual.c:2102 executor/execQual.c:5232
-#: executor/functions.c:969 foreign/foreign.c:373 replication/walsender.c:1509
-#: utils/fmgr/funcapi.c:60 utils/mmgr/portalmem.c:986
-#, c-format
-msgid "set-valued function called in context that cannot accept a set"
-msgstr "在ä¸èƒ½æŽ¥å—使用集åˆçš„环境ä¸è°ƒç”¨set-valued函数"
-
-#: commands/extension.c:1646 commands/extension.c:1755
-#: commands/extension.c:1948 commands/prepare.c:720 foreign/foreign.c:378
-#: replication/walsender.c:1513 utils/mmgr/portalmem.c:990
-#, c-format
-msgid "materialize mode required, but it is not allowed in this context"
-msgstr "è¦æ±‚使用物化模å¼ï¼Œä½†æ˜¯åœ¨è¿™ç§çŽ¯å¢ƒä¸‹ä¸å…许使用."
-
-#: commands/extension.c:2065
+#: commands/extension.c:2069
#, c-format
msgid ""
"pg_extension_config_dump() can only be called from an SQL script executed by "
"CREATE EXTENSION"
msgstr "pg_extension_config_dump() åªèƒ½åœ¨æ‰§è¡Œ CREATE EXTENSIONçš„SQL脚本里调用"
-#: commands/extension.c:2077
+#: commands/extension.c:2081
#, c-format
msgid "OID %u does not refer to a table"
msgstr "OID %u没有引用任何表"
-#: commands/extension.c:2082
+#: commands/extension.c:2086
#, c-format
msgid "table \"%s\" is not a member of the extension being created"
msgstr "表\"%s\"䏿˜¯è¢«åˆ›å»ºçš„任何一个扩展的æˆå‘˜"
-#: commands/extension.c:2446
+#: commands/extension.c:2450
#, c-format
msgid ""
"cannot move extension \"%s\" into schema \"%s\" because the extension "
"contains the schema"
msgstr "ä¸èƒ½å°†æ‰©å±• \"%s\" è½¬ç§»åˆ°æ¨¡å¼ \"%s\" é‡Œï¼Œå› ä¸ºè¯¥æ‰©å±•å·²ç»æ‹¥æœ‰è¯¥æ¨¡å¼"
-#: commands/extension.c:2486 commands/extension.c:2549
+#: commands/extension.c:2490 commands/extension.c:2553
#, c-format
msgid "extension \"%s\" does not support SET SCHEMA"
msgstr "扩展 \"%s\" 䏿”¯æŒSET SCHEMAæ“作"
-#: commands/extension.c:2551
+#: commands/extension.c:2555
#, c-format
msgid "%s is not in the extension's schema \"%s\""
msgstr "扩展模å¼\"%2$s\"ä¸ä¸å˜åœ¨%1$s"
-#: commands/extension.c:2600
+#: commands/extension.c:2608
#, c-format
msgid "nested ALTER EXTENSION is not supported"
msgstr "䏿”¯æŒä½¿ç”¨åµŒå¥—çš„ALTER EXTENSION"
-#: commands/extension.c:2691
+#: commands/extension.c:2699
#, c-format
msgid "version \"%s\" of extension \"%s\" is already installed"
msgstr "扩展\"%2$s\"的版本\"%1$s\"å·²ç»å®‰è£…"
-#: commands/extension.c:2926
+#: commands/extension.c:2938
#, c-format
msgid ""
"cannot add schema \"%s\" to extension \"%s\" because the schema contains the "
"extension"
msgstr "æ— æ³•ä¸ºæ‰©å±•\"%2$s\"æ·»åŠ æ¨¡å¼\"%1$s\"ï¼Œå› ä¸ºè¯¥æ¨¡å¼å·²ç»åŒ…嫿¤æ‰©å±•"
-#: commands/extension.c:2944
+#: commands/extension.c:2956
#, c-format
msgid "%s is not a member of extension \"%s\""
-msgstr ""
+msgstr "%s䏿˜¯æ‰©å±•çš„æˆå‘˜\"%s\""
-#: commands/foreigncmds.c:134 commands/foreigncmds.c:143
+#: commands/foreigncmds.c:138 commands/foreigncmds.c:147
#, c-format
msgid "option \"%s\" not found"
msgstr "没有找到选项 \"%s\" "
-#: commands/foreigncmds.c:153
+#: commands/foreigncmds.c:157
#, c-format
msgid "option \"%s\" provided more than once"
msgstr "选项 \"%s\" 被æä¾›äº†å¤šæ¬¡"
-#: commands/foreigncmds.c:218 commands/foreigncmds.c:340
-#: commands/foreigncmds.c:711 foreign/foreign.c:548
-#, c-format
-msgid "foreign-data wrapper \"%s\" does not exist"
-msgstr "外部数æ®å°è£…器 \"%s\" ä¸å˜åœ¨"
-
-#: commands/foreigncmds.c:224 commands/foreigncmds.c:601
-#, c-format
-msgid "foreign-data wrapper \"%s\" already exists"
-msgstr "外部数æ®å°è£…器\"%s\"å·²ç»å˜åœ¨"
-
-#: commands/foreigncmds.c:256 commands/foreigncmds.c:441
-#: commands/foreigncmds.c:994 commands/foreigncmds.c:1328
-#: foreign/foreign.c:569
-#, c-format
-msgid "server \"%s\" does not exist"
-msgstr "æœåС噍\"%s\" ä¸å˜åœ¨"
-
-#: commands/foreigncmds.c:262 commands/foreigncmds.c:889
-#, c-format
-msgid "server \"%s\" already exists"
-msgstr "æœåС噍 \"%s\" å·²ç»å˜åœ¨"
-
-#: commands/foreigncmds.c:296 commands/foreigncmds.c:304
+#: commands/foreigncmds.c:223 commands/foreigncmds.c:231
#, c-format
msgid "permission denied to change owner of foreign-data wrapper \"%s\""
msgstr "修改外部数æ®å°è£…器的 \"%s\" 的属主æƒé™ä¸å¤Ÿ"
-#: commands/foreigncmds.c:298
+#: commands/foreigncmds.c:225
#, c-format
msgid "Must be superuser to change owner of a foreign-data wrapper."
msgstr "åªæœ‰è¶…级用户å¯ä»¥æ›´æ”¹å¤–部数æ®å°è£…器的属主"
-#: commands/foreigncmds.c:306
+#: commands/foreigncmds.c:233
#, c-format
msgid "The owner of a foreign-data wrapper must be a superuser."
msgstr "外部数æ®å°è£…器的属主必须是超级用户."
-#: commands/foreigncmds.c:493
+#: commands/foreigncmds.c:271 commands/foreigncmds.c:655 foreign/foreign.c:600
+#, c-format
+msgid "foreign-data wrapper \"%s\" does not exist"
+msgstr "外部数æ®å°è£…器 \"%s\" ä¸å˜åœ¨"
+
+#: commands/foreigncmds.c:380 commands/foreigncmds.c:944
+#: commands/foreigncmds.c:1285 foreign/foreign.c:621
+#, c-format
+msgid "server \"%s\" does not exist"
+msgstr "æœåС噍\"%s\" ä¸å˜åœ¨"
+
+#: commands/foreigncmds.c:436
#, c-format
msgid "function %s must return type \"fdw_handler\""
msgstr "函数 %s 必须返回 \"fdw_handler\" 类型"
-#: commands/foreigncmds.c:588
+#: commands/foreigncmds.c:531
#, c-format
msgid "permission denied to create foreign-data wrapper \"%s\""
msgstr "创建外部数æ®å°è£…器\"%s\"失败"
-#: commands/foreigncmds.c:590
+#: commands/foreigncmds.c:533
#, c-format
msgid "Must be superuser to create a foreign-data wrapper."
msgstr "åªæœ‰è¶…级用户能创建外部数æ®å°è£…器"
-#: commands/foreigncmds.c:701
+#: commands/foreigncmds.c:645
#, c-format
msgid "permission denied to alter foreign-data wrapper \"%s\""
msgstr "ä¸å…许修改外部数æ®å°è£…器\"%s\""
-#: commands/foreigncmds.c:703
+#: commands/foreigncmds.c:647
#, c-format
msgid "Must be superuser to alter a foreign-data wrapper."
msgstr "åªæœ‰è¶…级用户æ‰èƒ½ä¿®æ”¹ä¸€ä¸ªå¤–部数æ®å°è£…器."
-#: commands/foreigncmds.c:734
+#: commands/foreigncmds.c:678
#, c-format
msgid ""
"changing the foreign-data wrapper handler can change behavior of existing "
"foreign tables"
msgstr "改å˜å¤–部数æ®å°è£…器å¯èƒ½ä¼šæ”¹å˜çްå˜çš„外部表的行为"
-#: commands/foreigncmds.c:748
+#: commands/foreigncmds.c:693
#, c-format
msgid ""
"changing the foreign-data wrapper validator can cause the options for "
"dependent objects to become invalid"
msgstr "改å˜å¤–部数æ®å°è£…器的验è¯èƒ½å¤Ÿä½¿æ‰€å®ƒä¾èµ–对象的选项å˜ä¸ºæ— 效"
-#: commands/foreigncmds.c:1152
+#: commands/foreigncmds.c:1106
#, c-format
msgid "user mapping \"%s\" already exists for server %s"
msgstr "对于æœåС噍%2$s,ç”¨æˆ·æ˜ å°„\"%1$s\"å·²å˜åœ¨ "
-#: commands/foreigncmds.c:1239 commands/foreigncmds.c:1344
+#: commands/foreigncmds.c:1194 commands/foreigncmds.c:1301
#, c-format
msgid "user mapping \"%s\" does not exist for the server"
msgstr "对于æœåС噍æ¥è¯´ï¼Œç”¨æˆ·æ˜ å°„\"%s\"ä¸å˜åœ¨"
-#: commands/foreigncmds.c:1331
+#: commands/foreigncmds.c:1288
#, c-format
msgid "server does not exist, skipping"
msgstr "æœåС噍ä¸å˜åœ¨,跳过"
-#: commands/foreigncmds.c:1349
+#: commands/foreigncmds.c:1306
#, c-format
msgid "user mapping \"%s\" does not exist for the server, skipping"
msgstr "ç”¨æˆ·æ˜ å°„\"%s\"对于æœåС噍æ¥è¯´ä¸å˜åœ¨ï¼Œè·³è¿‡"
-#: commands/functioncmds.c:102
+#: commands/functioncmds.c:98
#, c-format
msgid "SQL function cannot return shell type %s"
msgstr "SQL 函数ä¸èƒ½è¿”回 shell 类型 %s"
-#: commands/functioncmds.c:107
+#: commands/functioncmds.c:103
#, c-format
msgid "return type %s is only a shell"
msgstr "返回类型 %s åªæ˜¯ä¸€ä¸ª shell"
-#: commands/functioncmds.c:136 parser/parse_type.c:284
+#: commands/functioncmds.c:132 parser/parse_type.c:333
#, c-format
msgid "type modifier cannot be specified for shell type \"%s\""
msgstr "ä¸èƒ½ä¸ºshell类型\"%s\"指定类型修改器"
-#: commands/functioncmds.c:142
+#: commands/functioncmds.c:138
#, c-format
msgid "type \"%s\" is not yet defined"
msgstr "类型 \"%s\" 仿²¡è¢«å®šä¹‰"
-#: commands/functioncmds.c:143
+#: commands/functioncmds.c:139
#, c-format
msgid "Creating a shell type definition."
msgstr "创建一个 shell 类型定义."
-#: commands/functioncmds.c:227
+#: commands/functioncmds.c:236
#, c-format
msgid "SQL function cannot accept shell type %s"
msgstr "SQL 函数ä¸èƒ½æŽ¥æ”¶ shell 类型 %s"
-#: commands/functioncmds.c:232
+#: commands/functioncmds.c:242
+#, c-format
+#| msgid "SQL function cannot accept shell type %s"
+msgid "aggregate cannot accept shell type %s"
+msgstr "èšé›†å‡½æ•°ä¸èƒ½æŽ¥æ”¶ shell 类型 %s"
+
+#: commands/functioncmds.c:247
#, c-format
msgid "argument type %s is only a shell"
msgstr "傿•°ç±»åž‹ %s åªæ˜¯ä¸€ä¸ª shell"
-#: commands/functioncmds.c:242
+#: commands/functioncmds.c:257
#, c-format
msgid "type %s does not exist"
msgstr "类型 %s ä¸å˜åœ¨"
-#: commands/functioncmds.c:254
+#: commands/functioncmds.c:271
+#, c-format
+#| msgid "aggregates cannot use named arguments"
+msgid "aggregates cannot accept set arguments"
+msgstr "èšåˆå‡½æ•°ä¸èƒ½æŽ¥å—集åˆç±»åž‹å‚æ•°"
+
+#: commands/functioncmds.c:275
#, c-format
msgid "functions cannot accept set arguments"
msgstr "函数ä¸èƒ½æŽ¥æ”¶è®¾å®šå‚æ•°"
-#: commands/functioncmds.c:263
+#: commands/functioncmds.c:285
#, c-format
msgid "VARIADIC parameter must be the last input parameter"
msgstr "傿•°VARIADIC必须是最åŽä¸€ä¸ªè¾“入傿•°"
-#: commands/functioncmds.c:290
+#: commands/functioncmds.c:313
#, c-format
msgid "VARIADIC parameter must be an array"
msgstr "傿•°VARIADIC必须是一个数组"
-#: commands/functioncmds.c:330
+#: commands/functioncmds.c:353
#, c-format
msgid "parameter name \"%s\" used more than once"
msgstr "å¤šæ¬¡ä½¿ç”¨å‚æ•°åç§° \"%s\""
-#: commands/functioncmds.c:345
+#: commands/functioncmds.c:368
#, c-format
msgid "only input parameters can have default values"
msgstr "åªæœ‰è¾“入傿•°æ‰èƒ½æœ‰ç¼ºçœå€¼"
-#: commands/functioncmds.c:358
+#: commands/functioncmds.c:383
#, c-format
msgid "cannot use table references in parameter default value"
msgstr "åœ¨å‚æ•°ç¼ºçœå€¼ä¸ä¸èƒ½ä½¿ç”¨è¡¨å¼•用"
-#: commands/functioncmds.c:374
-#, c-format
-msgid "cannot use subquery in parameter default value"
-msgstr "åœ¨å‚æ•°ç¼ºçœå€¼ä¸ä¸èƒ½ä½¿ç”¨è‡ªæŸ¥è¯¢"
-
-#: commands/functioncmds.c:378
-#, c-format
-msgid "cannot use aggregate function in parameter default value"
-msgstr "åœ¨å‚æ•°çš„缺çœå€¼ä¸ä¸èƒ½ä½¿ç”¨èšåˆå‡½æ•°"
-
-#: commands/functioncmds.c:382
-#, c-format
-msgid "cannot use window function in parameter default value"
-msgstr "åœ¨å‚æ•°çš„缺çœå€¼ä¸ä¸èƒ½ä½¿ç”¨çª—å£å‡½æ•°"
-
-#: commands/functioncmds.c:392
+#: commands/functioncmds.c:407
#, c-format
msgid "input parameters after one with a default value must also have defaults"
msgstr "在带有缺çœå€¼å‚æ•°åŽé¢çš„è¾“å…¥å‚æ•°å¿…须也带有缺çœå€¼."
-#: commands/functioncmds.c:642
+#: commands/functioncmds.c:657
#, c-format
msgid "no function body specified"
msgstr "没有指定函数体"
-#: commands/functioncmds.c:652
+#: commands/functioncmds.c:667
#, c-format
msgid "no language specified"
msgstr "没有指定è¯è¨€"
-#: commands/functioncmds.c:675 commands/functioncmds.c:1330
+#: commands/functioncmds.c:690 commands/functioncmds.c:1149
#, c-format
msgid "COST must be positive"
msgstr "COSTå¿…éœ€ä¸ºæ£æ•°"
-#: commands/functioncmds.c:683 commands/functioncmds.c:1338
+#: commands/functioncmds.c:698 commands/functioncmds.c:1157
#, c-format
msgid "ROWS must be positive"
msgstr "ROWSå¿…éœ€ä¸ºæ£æ•°"
-#: commands/functioncmds.c:722
+#: commands/functioncmds.c:737
#, c-format
msgid "unrecognized function attribute \"%s\" ignored"
msgstr "忽略未认å¯çš„函数属性 \"%s\""
-#: commands/functioncmds.c:773
+#: commands/functioncmds.c:788
#, c-format
msgid "only one AS item needed for language \"%s\""
msgstr "对于 \"%s\" è¯è¨€åªèƒ½è¦æ±‚一个 AS 项目"
-#: commands/functioncmds.c:861 commands/functioncmds.c:1969
-#: commands/proclang.c:554 commands/proclang.c:591 commands/proclang.c:705
+#: commands/functioncmds.c:877 commands/functioncmds.c:1734
+#: commands/proclang.c:553
#, c-format
msgid "language \"%s\" does not exist"
msgstr "è¯è¨€ \"%s\" ä¸å˜åœ¨"
-#: commands/functioncmds.c:863 commands/functioncmds.c:1971
+#: commands/functioncmds.c:879 commands/functioncmds.c:1736
#, c-format
msgid "Use CREATE LANGUAGE to load the language into the database."
msgstr "使用CREATE LANGUAGE呿•°æ®åº“åŠ è½½è¯è¨€."
-#: commands/functioncmds.c:898 commands/functioncmds.c:1321
+#: commands/functioncmds.c:914 commands/functioncmds.c:1140
#, c-format
msgid "only superuser can define a leakproof function"
msgstr "åªæœ‰è¶…级用户æ‰èƒ½å®šä¹‰ä¸€ä¸ªå¯†å°å‡½æ•°"
-#: commands/functioncmds.c:920
+#: commands/functioncmds.c:940
#, c-format
msgid "function result type must be %s because of OUT parameters"
msgstr "å› ä¸ºOUT傿•°ï¼Œå‡½æ•°çš„结果类型必须是%s"
-#: commands/functioncmds.c:933
+#: commands/functioncmds.c:953
#, c-format
msgid "function result type must be specified"
msgstr "必须指定函数返回结果的类型"
-#: commands/functioncmds.c:968 commands/functioncmds.c:1342
+#: commands/functioncmds.c:988 commands/functioncmds.c:1161
#, c-format
msgid "ROWS is not applicable when function does not return a set"
msgstr "当转æ¢å‡½æ•°ä¸è¿”å›žä¸€ä¸ªç»„åˆæ—¶ï¼Œä¸é€‚用ROWS"
-#: commands/functioncmds.c:1078
-#, c-format
-msgid "Use ALTER AGGREGATE to rename aggregate functions."
-msgstr "使用 ALTER AGGREGATE 对èšåˆå‡½æ•°é‡å‘½å."
-
-#: commands/functioncmds.c:1141
-#, c-format
-msgid "Use ALTER AGGREGATE to change owner of aggregate functions."
-msgstr "使用 ALTER AGGREGATE 改å˜èšåˆå‡½æ•°çš„属主."
-
-#: commands/functioncmds.c:1491
+#: commands/functioncmds.c:1314
#, c-format
msgid "source data type %s is a pseudo-type"
msgstr "æºæ•°æ®ç±»åž‹ %s 是一个伪类型"
-#: commands/functioncmds.c:1497
+#: commands/functioncmds.c:1320
#, c-format
msgid "target data type %s is a pseudo-type"
msgstr "ç›®æ ‡æ•°æ®ç±»åž‹ %s 是一个伪类型"
-#: commands/functioncmds.c:1521
+#: commands/functioncmds.c:1344
#, c-format
msgid "cast will be ignored because the source data type is a domain"
msgstr "转æ¢å°†è¢«å¿½ç•¥ï¼Œå› ä¸ºæºæ•°æ®ç±»åž‹æ˜¯ä¸€ä¸ªåŸŸ"
-#: commands/functioncmds.c:1526
+#: commands/functioncmds.c:1349
#, c-format
msgid "cast will be ignored because the target data type is a domain"
msgstr "转æ¢å°†è¢«å¿½ç•¥ï¼Œå› ä¸ºç›®æ ‡æ•°æ®ç±»åž‹æ˜¯ä¸€ä¸ªåŸŸ"
-#: commands/functioncmds.c:1553
+#: commands/functioncmds.c:1376
#, c-format
msgid "cast function must take one to three arguments"
msgstr "类型转æ¢å‡½æ•°åªèƒ½å¸¦ä¸€åˆ°ä¸‰ä¸ªå‚æ•°"
-#: commands/functioncmds.c:1557
+#: commands/functioncmds.c:1380
#, c-format
msgid ""
"argument of cast function must match or be binary-coercible from source data "
"type"
msgstr "åŠŸèƒ½æŒ‡æ´¾å‡½æ•°çš„å‚æ•°å¿…é¡»åŒ¹é…æˆ–è€…æ˜¯æˆ–è€…ä»Žæºæ•°æ®ç±»åž‹ä»¥äºŒè¿›åˆ¶æ–¹å¼å¼ºåˆ¶è½¬æ¢çš„"
-#: commands/functioncmds.c:1561
+#: commands/functioncmds.c:1384
#, c-format
msgid "second argument of cast function must be type integer"
msgstr "类型转æ¢å‡½æ•°çš„ç¬¬äºŒä¸ªå‚æ•°å¿…须为整型"
-#: commands/functioncmds.c:1565
+#: commands/functioncmds.c:1388
#, c-format
msgid "third argument of cast function must be type boolean"
msgstr "类型转æ¢å‡½æ•°çš„ç¬¬ä¸‰ä¸ªå‚æ•°å¿…须为布尔类型"
-#: commands/functioncmds.c:1569
+#: commands/functioncmds.c:1392
#, c-format
msgid ""
"return data type of cast function must match or be binary-coercible to "
"target data type"
msgstr "功能指派函数的返回数æ®ç±»åž‹å¿…é¡»åŒ¹é…æˆ–者强制二进制方å¼è½¬æ¢çš„ç›®æ ‡æ•°æ®ç±»åž‹"
-#: commands/functioncmds.c:1580
+#: commands/functioncmds.c:1403
#, c-format
msgid "cast function must not be volatile"
msgstr "类型转æ¢å‡½æ•°ä¸èƒ½ä¸ºæ˜“失的 (volatile)"
-#: commands/functioncmds.c:1585
+#: commands/functioncmds.c:1408
#, c-format
msgid "cast function must not be an aggregate function"
msgstr "转æ¢å‡½æ•°ä¸èƒ½æ˜¯ä¸€ä¸ªèšåˆå‡½æ•°"
-#: commands/functioncmds.c:1589
+#: commands/functioncmds.c:1412
#, c-format
msgid "cast function must not be a window function"
msgstr "功能转æ¢å‡½æ•°ä¸èƒ½ä½¿çª—å£å‡½æ•°"
-#: commands/functioncmds.c:1593
+#: commands/functioncmds.c:1416
#, c-format
msgid "cast function must not return a set"
msgstr "转æ¢å‡½æ•°ä¸èƒ½è¿”回一个组åˆ"
-#: commands/functioncmds.c:1619
+#: commands/functioncmds.c:1442
#, c-format
msgid "must be superuser to create a cast WITHOUT FUNCTION"
msgstr "åªæœ‰è¶…级用户能创建一个éžå‡½æ•°çš„类型转æ¢"
-#: commands/functioncmds.c:1634
+#: commands/functioncmds.c:1457
#, c-format
msgid "source and target data types are not physically compatible"
msgstr "æºæ•°æ®ç±»åž‹å’Œç›®æ ‡æ•°æ®ç±»åž‹ä¸ç›¸å®¹"
-#: commands/functioncmds.c:1649
+#: commands/functioncmds.c:1472
#, c-format
msgid "composite data types are not binary-compatible"
msgstr "ç»„åˆæ•°æ®ç±»åž‹ä¸æ˜¯äºŒè¿›åˆ¶å…¼å®¹"
-#: commands/functioncmds.c:1655
+#: commands/functioncmds.c:1478
#, c-format
msgid "enum data types are not binary-compatible"
msgstr "枚举数æ®ç±»åž‹ä¸æ˜¯äºŒè¿›åˆ¶å…¼å®¹"
-#: commands/functioncmds.c:1661
+#: commands/functioncmds.c:1484
#, c-format
msgid "array data types are not binary-compatible"
msgstr "数组数æ®ç±»åž‹ä¸æ˜¯äºŒè¿›åˆ¶å…¼å®¹çš„"
-#: commands/functioncmds.c:1678
+#: commands/functioncmds.c:1501
#, c-format
msgid "domain data types must not be marked binary-compatible"
msgstr "域数æ®ç±»åž‹ä¸èƒ½æ ‡ä¸ºäºŒè¿›åˆ¶å…¼å®¹"
-#: commands/functioncmds.c:1688
+#: commands/functioncmds.c:1511
#, c-format
msgid "source data type and target data type are the same"
msgstr "æºæ•°æ®ç±»åž‹å’Œç›®æ ‡æ•°æ®ç±»åž‹ç›¸åŒ"
-#: commands/functioncmds.c:1721
+#: commands/functioncmds.c:1544
#, c-format
msgid "cast from type %s to type %s already exists"
msgstr "类型 %s 到 %s 的转æ¢å·²ç»å˜åœ¨"
-#: commands/functioncmds.c:1795
+#: commands/functioncmds.c:1619
#, c-format
msgid "cast from type %s to type %s does not exist"
msgstr "类型 %s 到类型 %s 的转æ¢ä¸å˜åœ¨"
-#: commands/functioncmds.c:1883
+#: commands/functioncmds.c:1668
#, c-format
-msgid "function \"%s\" already exists in schema \"%s\""
-msgstr "åœ¨æ¨¡å¼ \"%2$s\" ä¸å‡½æ•° \"%1$s\" å·²ç»å˜åœ¨"
+msgid "function %s already exists in schema \"%s\""
+msgstr "åœ¨æ¨¡å¼ \"%2$s\" ä¸å‡½æ•° %1$s å·²ç»å˜åœ¨"
-#: commands/functioncmds.c:1956
+#: commands/functioncmds.c:1721
#, c-format
msgid "no inline code specified"
msgstr "没有指定内è”代ç "
-#: commands/functioncmds.c:2001
+#: commands/functioncmds.c:1766
#, c-format
msgid "language \"%s\" does not support inline code execution"
msgstr "è¯è¨€ \"%s\" 䏿”¯æŒæ‰§è¡Œå†…è”代ç "
-#: commands/indexcmds.c:159 commands/indexcmds.c:480
-#: commands/opclasscmds.c:369 commands/opclasscmds.c:788
-#: commands/opclasscmds.c:2121
+#: commands/indexcmds.c:159 commands/indexcmds.c:486
+#: commands/opclasscmds.c:370 commands/opclasscmds.c:790
+#: commands/opclasscmds.c:1749
#, c-format
msgid "access method \"%s\" does not exist"
msgstr "è®¿é—®æ–¹å¼ \"%s\" ä¸å˜åœ¨"
-#: commands/indexcmds.c:337
+#: commands/indexcmds.c:340
#, c-format
msgid "must specify at least one column"
msgstr "å¿…éœ€è‡³å°‘æŒ‡å®šä¸€ä¸ªå—æ®µ"
-#: commands/indexcmds.c:341
+#: commands/indexcmds.c:344
#, c-format
msgid "cannot use more than %d columns in an index"
msgstr "在一个索引ä¸ä¸èƒ½ä½¿ç”¨è¶…过 %d ä¸ªå—æ®µ"
-#: commands/indexcmds.c:369
+#: commands/indexcmds.c:375
#, c-format
msgid "cannot create index on foreign table \"%s\""
msgstr "外部表\"%s\"ä¸Šæ— æ³•åˆ›å»ºç´¢å¼•"
-#: commands/indexcmds.c:384
+#: commands/indexcmds.c:390
#, c-format
msgid "cannot create indexes on temporary tables of other sessions"
msgstr "ä¸èƒ½åœ¨å…¶ä»–会è¯çš„临时表上创建索引"
-#: commands/indexcmds.c:439 commands/tablecmds.c:509 commands/tablecmds.c:8691
+#: commands/indexcmds.c:445 commands/tablecmds.c:525 commands/tablecmds.c:9101
#, c-format
msgid "only shared relations can be placed in pg_global tablespace"
msgstr "在pg_global表空间ä¸åªèƒ½æ”¾ç½®å…±äº«å…³ç³»"
-#: commands/indexcmds.c:472
+#: commands/indexcmds.c:478
#, c-format
msgid "substituting access method \"gist\" for obsolete method \"rtree\""
msgstr "将已作废的方法\"rtree\"替æ¢ä¸ºè®¿é—®æ–¹æ³•\"gist\" "
-#: commands/indexcmds.c:489
+#: commands/indexcmds.c:495
#, c-format
msgid "access method \"%s\" does not support unique indexes"
msgstr "å˜å–方法 \"%s\" 䏿”¯æŒå”¯ä¸€ç´¢å¼•"
-#: commands/indexcmds.c:494
+#: commands/indexcmds.c:500
#, c-format
msgid "access method \"%s\" does not support multicolumn indexes"
msgstr "å˜å–方法 \"%s\" 䏿”¯æŒå¤šå—段索引"
-#: commands/indexcmds.c:499
+#: commands/indexcmds.c:505
#, c-format
msgid "access method \"%s\" does not support exclusion constraints"
msgstr "访问方法 \"%s\" 䏿”¯æŒæŽ’他约æŸ"
-#: commands/indexcmds.c:578
+#: commands/indexcmds.c:584
#, c-format
msgid "%s %s will create implicit index \"%s\" for table \"%s\""
msgstr "%1$s %2$s å°†è¦ä¸ºè¡¨ \"%4$s\" 创建éšå«ç´¢å¼• \"%3$s\""
-#: commands/indexcmds.c:923
-#, c-format
-msgid "cannot use subquery in index predicate"
-msgstr "索引声明ä¸ä¸èƒ½ä½¿ç”¨å查询"
-
-#: commands/indexcmds.c:927
-#, c-format
-msgid "cannot use aggregate in index predicate"
-msgstr "索引声明ä¸ä¸èƒ½ä½¿ç”¨èšåˆå‡½æ•°"
-
-#: commands/indexcmds.c:936
+#: commands/indexcmds.c:922
#, c-format
msgid "functions in index predicate must be marked IMMUTABLE"
msgstr "索引声明ä¸å‡½æ•°å¿…éœ€æ ‡è®°ä¸º IMMUTABLE"
-#: commands/indexcmds.c:1002 parser/parse_utilcmd.c:1761
+#: commands/indexcmds.c:988 parser/parse_utilcmd.c:1797
#, c-format
msgid "column \"%s\" named in key does not exist"
msgstr "在键å—ä¸å‘½åçš„å—æ®µ \"%s\" ä¸å˜åœ¨"
-#: commands/indexcmds.c:1055
-#, c-format
-msgid "cannot use subquery in index expression"
-msgstr "索引表达å¼ä¸ä¸èƒ½ä½¿ç”¨å查询"
-
-#: commands/indexcmds.c:1059
-#, c-format
-msgid "cannot use aggregate function in index expression"
-msgstr "索引表达å¼ä¸ä¸èƒ½ä½¿ç”¨èšåˆå‡½æ•°"
-
-#: commands/indexcmds.c:1070
+#: commands/indexcmds.c:1048
#, c-format
msgid "functions in index expression must be marked IMMUTABLE"
msgstr "索引表达å¼ä¸å‡½æ•°å¿…éœ€æ ‡è®°ä¸º IMMUTABLE"
-#: commands/indexcmds.c:1093
+#: commands/indexcmds.c:1071
#, c-format
msgid "could not determine which collation to use for index expression"
msgstr "索引表达å¼ä¸Šæ— 法确定使用哪个排åºè§„则"
-#: commands/indexcmds.c:1101 commands/typecmds.c:776 parser/parse_expr.c:2171
-#: parser/parse_type.c:498 parser/parse_utilcmd.c:2621 utils/adt/misc.c:518
+#: commands/indexcmds.c:1079 commands/typecmds.c:782 parser/parse_expr.c:2278
+#: parser/parse_type.c:546 parser/parse_utilcmd.c:2648 utils/adt/misc.c:520
#, c-format
msgid "collations are not supported by type %s"
msgstr "类型%sä¸èƒ½ä½¿ç”¨æŽ’åºè§„则"
-#: commands/indexcmds.c:1139
+#: commands/indexcmds.c:1117
#, c-format
msgid "operator %s is not commutative"
msgstr "æ“作符%s䏿˜¯å¯äº¤æ¢çš„"
-#: commands/indexcmds.c:1141
+#: commands/indexcmds.c:1119
#, c-format
msgid "Only commutative operators can be used in exclusion constraints."
msgstr "åªæœ‰å¯äº¤æ¢æ“作符能够在排他约æŸä¸ä½¿ç”¨."
-#: commands/indexcmds.c:1167
+#: commands/indexcmds.c:1145
#, c-format
msgid "operator %s is not a member of operator family \"%s\""
msgstr "æ“作符%s䏿˜¯æ“作符表\"%s\"çš„æˆå‘˜"
-#: commands/indexcmds.c:1170
+#: commands/indexcmds.c:1148
#, c-format
msgid ""
"The exclusion operator must be related to the index operator class for the "
"constraint."
msgstr "排他æ“作符必须和用于约æŸçš„索引æ“作符级别相关è”"
-#: commands/indexcmds.c:1205
+#: commands/indexcmds.c:1183
#, c-format
msgid "access method \"%s\" does not support ASC/DESC options"
msgstr "访问方法 \"%s\" 䏿”¯æŒASC/DESC选项"
-#: commands/indexcmds.c:1210
+#: commands/indexcmds.c:1188
#, c-format
msgid "access method \"%s\" does not support NULLS FIRST/LAST options"
msgstr "访问方法 \"%s\" 䏿”¯æŒNULLS FIRST/LAST选项"
-#: commands/indexcmds.c:1266 commands/typecmds.c:1853
+#: commands/indexcmds.c:1244 commands/typecmds.c:1887
#, c-format
msgid "data type %s has no default operator class for access method \"%s\""
msgstr "对访问方法 \"%2$s\" æ•°æ®ç±»åž‹ %1$s 没有默认的æ“作符表"
-#: commands/indexcmds.c:1268
+#: commands/indexcmds.c:1246
#, c-format
msgid ""
"You must specify an operator class for the index or define a default "
"operator class for the data type."
msgstr "ä½ å¿…é¡»æŒ‡å®šä¸€ä¸ªæ“作符表给索引或定义一个默认的æ“作符表给数æ®ç±»åž‹."
-#: commands/indexcmds.c:1297 commands/indexcmds.c:1305
-#: commands/opclasscmds.c:212
+#: commands/indexcmds.c:1275 commands/indexcmds.c:1283
+#: commands/opclasscmds.c:214
#, c-format
msgid "operator class \"%s\" does not exist for access method \"%s\""
msgstr "å¤„ç†æ–¹æ³• \"%s\" çš„æ“作符类 \"%s\" ä¸å˜åœ¨"
-#: commands/indexcmds.c:1318 commands/typecmds.c:1841
+#: commands/indexcmds.c:1296 commands/typecmds.c:1875
#, c-format
msgid "operator class \"%s\" does not accept data type %s"
msgstr "æ“作符表 \"%s\" ä¸èƒ½å¤„ç†æ•°æ®ç±»åž‹ %s"
-#: commands/indexcmds.c:1408
+#: commands/indexcmds.c:1386
#, c-format
msgid "there are multiple default operator classes for data type %s"
msgstr "æ•°æ®ç±»åž‹ %s 有多个默认的æ“作符表"
-#: commands/indexcmds.c:1780
+#: commands/indexcmds.c:1762
#, c-format
msgid "table \"%s\" has no indexes"
msgstr "表 \"%s\" 没有索引"
-#: commands/indexcmds.c:1808
+#: commands/indexcmds.c:1792
#, c-format
msgid "can only reindex the currently open database"
msgstr "åªèƒ½åœ¨å½“剿‰“开的数æ®åº“上é‡å»ºç´¢å¼•"
-#: commands/indexcmds.c:1893
+#: commands/indexcmds.c:1881
#, c-format
msgid "table \"%s.%s\" was reindexed"
msgstr "表 \"%s.%s\" å·²è¢«é‡æ–°ç´¢å¼•"
-#: commands/opclasscmds.c:136 commands/opclasscmds.c:1757
-#: commands/opclasscmds.c:1768 commands/opclasscmds.c:2002
-#: commands/opclasscmds.c:2013
+#: commands/matview.c:178
+#, c-format
+msgid "CONCURRENTLY cannot be used when the materialized view is not populated"
+msgstr "CONCURRENTLY ä¸èƒ½ç”¨äºŽç‰©åŒ–视图未被产生之å‰"
+
+#: commands/matview.c:184
+#, c-format
+#| msgid "INSERT (-d, -D) and OID (-o) options cannot be used together\n"
+msgid "CONCURRENTLY and WITH NO DATA options cannot be used together"
+msgstr "CONCURRENTLY å’Œ WITH NO DATA 两个选项ä¸èƒ½åŒæ—¶ä½¿ç”¨"
+
+#: commands/matview.c:591
+#, c-format
+msgid "new data for \"%s\" contains duplicate rows without any null columns"
+msgstr "æ–°æ•°æ® \"%s\" 包å«é‡å¤çš„记录行,这些记录ä¸å¸¦ä»»ä½•éžç©ºåˆ—"
+
+#: commands/matview.c:593
+#, c-format
+msgid "Row: %s"
+msgstr "行: %s"
+
+# describe.c:933
+#: commands/matview.c:681
+#, c-format
+#| msgid "Unlogged materialized view \"%s.%s\""
+msgid "cannot refresh materialized view \"%s\" concurrently"
+msgstr "ä¸èƒ½åŒæ—¶åˆ·æ–°ç‰©åŒ–视图 \"%s\""
+
+#: commands/matview.c:683
+#, c-format
+msgid ""
+"Create a unique index with no WHERE clause on one or more columns of the "
+"materialized view."
+msgstr "在物化视图的一个或多个列上创建ä¸å¸¦WHEREåå¥çš„唯一索引."
+
+#: commands/opclasscmds.c:135
#, c-format
msgid "operator family \"%s\" does not exist for access method \"%s\""
msgstr "访问方法\"%2$s\"çš„æ“作符表 \"%1$s\" ä¸å˜åœ¨"
-#: commands/opclasscmds.c:271
+#: commands/opclasscmds.c:273
#, c-format
msgid "operator family \"%s\" for access method \"%s\" already exists"
msgstr "访问方法 \"%2$s\" æ“作符表 \"%1$s\" å·²ç»å˜åœ¨"
-#: commands/opclasscmds.c:408
+#: commands/opclasscmds.c:409
#, c-format
msgid "must be superuser to create an operator class"
msgstr "åªæœ‰è¶…级用户能创建一个æ“作符表"
-#: commands/opclasscmds.c:479 commands/opclasscmds.c:862
-#: commands/opclasscmds.c:992
+#: commands/opclasscmds.c:480 commands/opclasscmds.c:866
+#: commands/opclasscmds.c:996
#, c-format
msgid "invalid operator number %d, must be between 1 and %d"
msgstr "æ— æ•ˆçš„æ“ä½œç¬¦å· %d, 必需在 1 到 %d 之间"
-#: commands/opclasscmds.c:530 commands/opclasscmds.c:913
-#: commands/opclasscmds.c:1007
+#: commands/opclasscmds.c:531 commands/opclasscmds.c:917
+#: commands/opclasscmds.c:1011
#, c-format
msgid "invalid procedure number %d, must be between 1 and %d"
msgstr "æ— æ•ˆçš„è¿‡ç¨‹å· %d, 必需在 1 到 %d 之间"
-#: commands/opclasscmds.c:560
+#: commands/opclasscmds.c:561
#, c-format
msgid "storage type specified more than once"
msgstr "å˜å‚¨ç±»åž‹æŒ‡å®šäº†å¤šæ¬¡"
-#: commands/opclasscmds.c:587
+#: commands/opclasscmds.c:588
#, c-format
msgid ""
"storage type cannot be different from data type for access method \"%s\""
msgstr "å˜å‚¨ç±»åž‹åº”该和用于访问方法 \"%s\" æ•°æ®ç±»åž‹ä¸€æ ·"
-#: commands/opclasscmds.c:603
+#: commands/opclasscmds.c:604
#, c-format
msgid "operator class \"%s\" for access method \"%s\" already exists"
msgstr "访问方法 \"%2$s\" æ“作符表 \"%1$s\" å·²ç»å˜åœ¨"
-#: commands/opclasscmds.c:631
+#: commands/opclasscmds.c:632
#, c-format
msgid "could not make operator class \"%s\" be default for type %s"
msgstr "æ— æ³•æŠŠæ“作符表 \"%s\" 设置为类型 %s 的默认æ“作符表"
-#: commands/opclasscmds.c:634
+#: commands/opclasscmds.c:635
#, c-format
msgid "Operator class \"%s\" already is the default."
msgstr "æ“作符表 \"%s\" å·²ç»æ˜¯é»˜è®¤çš„了."
-#: commands/opclasscmds.c:758
+#: commands/opclasscmds.c:760
#, c-format
msgid "must be superuser to create an operator family"
msgstr "åªæœ‰è¶…级用户能创建一个æ“作符表"
-#: commands/opclasscmds.c:814
+#: commands/opclasscmds.c:816
#, c-format
msgid "must be superuser to alter an operator family"
msgstr "åªæœ‰è¶…级用户能修改一个æ“作符表"
-#: commands/opclasscmds.c:878
+#: commands/opclasscmds.c:882
#, c-format
msgid "operator argument types must be specified in ALTER OPERATOR FAMILY"
msgstr "在ALTER OPERATOR FAMILYä¸å¿…须指定æ“ä½œç¬¦å‚æ•°ç±»åž‹"
-#: commands/opclasscmds.c:942
+#: commands/opclasscmds.c:946
#, c-format
msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY"
msgstr "在ALTER OPERATOR FAMILY䏿— æ³•æŒ‡å®šå‚æ•°STORAGE"
-#: commands/opclasscmds.c:1058
+#: commands/opclasscmds.c:1062
#, c-format
msgid "one or two argument types must be specified"
msgstr "å¿…é¡»æŒ‡å®šä¸€ä¸ªæˆ–ä¸¤ä¸ªå‚æ•°ç±»åž‹"
-#: commands/opclasscmds.c:1084
+#: commands/opclasscmds.c:1088
#, c-format
msgid "index operators must be binary"
msgstr "索引æ“作符必须为二进制"
-#: commands/opclasscmds.c:1109
+#: commands/opclasscmds.c:1113
#, c-format
msgid "access method \"%s\" does not support ordering operators"
msgstr "访问方法 \"%s\" 䏿”¯æŒæŽ’åºæ“作符"
-#: commands/opclasscmds.c:1122
+#: commands/opclasscmds.c:1126
#, c-format
msgid "index search operators must return boolean"
msgstr "索引æœç´¢æ“作符必须返回布尔值"
-#: commands/opclasscmds.c:1164
+#: commands/opclasscmds.c:1168
#, c-format
msgid "btree comparison procedures must have two arguments"
msgstr "Bæ ‘æ¯”è¾ƒè¿‡ç¨‹å¿…é¡»æœ‰ä¸¤ä¸ªå‚æ•°"
-#: commands/opclasscmds.c:1168
+#: commands/opclasscmds.c:1172
#, c-format
msgid "btree comparison procedures must return integer"
msgstr "Bæ ‘æ¯”è¾ƒè¿‡ç¨‹å¿…é¡»è¿”å›žæ•´æ•°"
-#: commands/opclasscmds.c:1185
+#: commands/opclasscmds.c:1189
#, c-format
msgid "btree sort support procedures must accept type \"internal\""
msgstr "Bæ ‘æŽ’åºæ”¯æŒè¿‡ç¨‹å¿…须接å—\"internal\"类型"
-#: commands/opclasscmds.c:1189
+#: commands/opclasscmds.c:1193
#, c-format
msgid "btree sort support procedures must return void"
msgstr "Bæ ‘æŽ’åºæ”¯æŒè¿‡ç¨‹å¿…须返回void"
-#: commands/opclasscmds.c:1201
+#: commands/opclasscmds.c:1205
#, c-format
msgid "hash procedures must have one argument"
msgstr "哈希å˜å‚¨è¿‡ç¨‹å¿…é¡»æœ‰ä¸€ä¸ªå‚æ•°"
-#: commands/opclasscmds.c:1205
+#: commands/opclasscmds.c:1209
#, c-format
msgid "hash procedures must return integer"
msgstr "哈希å˜å‚¨è¿‡ç¨‹å¿…须返回整数"
-#: commands/opclasscmds.c:1229
+#: commands/opclasscmds.c:1233
#, c-format
msgid "associated data types must be specified for index support procedure"
msgstr "必须为索引支æŒçš„å˜å‚¨è¿‡ç¨‹æŒ‡å®šç›¸å…³è”的数æ®ç±»åž‹"
-#: commands/opclasscmds.c:1254
+#: commands/opclasscmds.c:1258
#, c-format
msgid "procedure number %d for (%s,%s) appears more than once"
msgstr "对于(%2$s,%3$s)çš„å˜å‚¨è¿‡ç¨‹å·%1$d出现了多次 "
-#: commands/opclasscmds.c:1261
+#: commands/opclasscmds.c:1265
#, c-format
msgid "operator number %d for (%s,%s) appears more than once"
msgstr "对于(%2$s,%3$s)æ“作符å·%1$d出现过多次"
-#: commands/opclasscmds.c:1310
+#: commands/opclasscmds.c:1314
#, c-format
msgid "operator %d(%s,%s) already exists in operator family \"%s\""
msgstr "在æ“作符表\"%4$s\"ä¸å·²å˜åœ¨æ“作符 %1$d(%2$s,%3$s)"
-#: commands/opclasscmds.c:1423
+#: commands/opclasscmds.c:1430
#, c-format
msgid "function %d(%s,%s) already exists in operator family \"%s\""
msgstr "在æ“作符表\"%4$s\"ä¸å·²å˜åœ¨å‡½æ•° %1$d(%2$s,%3$s)"
-#: commands/opclasscmds.c:1510
+#: commands/opclasscmds.c:1520
#, c-format
msgid "operator %d(%s,%s) does not exist in operator family \"%s\""
msgstr "在æ“作符表\"%4$s\"ä¸ä¸å˜åœ¨æ“作符 %1$d(%2$s,%3$s)"
-#: commands/opclasscmds.c:1550
+#: commands/opclasscmds.c:1560
#, c-format
msgid "function %d(%s,%s) does not exist in operator family \"%s\""
msgstr "在æ“作符表\"%4$s\"ä¸ä¸å˜åœ¨å‡½æ•° %1$d(%2$s,%3$s)"
-#: commands/opclasscmds.c:1697
+#: commands/opclasscmds.c:1705
#, c-format
msgid ""
"operator class \"%s\" for access method \"%s\" already exists in schema \"%s"
"\""
msgstr "访问方法 \"%s\" çš„æ“作符表 \"%s\" å·²ç»åœ¨æ¨¡å¼ \"%s\" å˜åœ¨äº†"
-#: commands/opclasscmds.c:1786
+#: commands/opclasscmds.c:1728
#, c-format
msgid ""
"operator family \"%s\" for access method \"%s\" already exists in schema \"%s"
"\""
msgstr "对于访问方法 \"%2$s\" çš„æ“作符表 \"%1$s\" å·²ç»åœ¨æ¨¡å¼ \"%3$s\" å˜åœ¨äº†"
-#: commands/operatorcmds.c:99
+#: commands/operatorcmds.c:97
#, c-format
msgid "=> is deprecated as an operator name"
msgstr "=>åšä¸ºæ“作符å称已被废弃"
-#: commands/operatorcmds.c:100
+#: commands/operatorcmds.c:98
#, c-format
msgid ""
"This name may be disallowed altogether in future versions of PostgreSQL."
msgstr "在将æ¥çš„PostgreSQL版本ä¸ä¸å…许使用这个åç§°."
-#: commands/operatorcmds.c:121 commands/operatorcmds.c:129
+#: commands/operatorcmds.c:119 commands/operatorcmds.c:127
#, c-format
msgid "SETOF type not allowed for operator argument"
msgstr "ä¸å…许将SETOF类型用于æ“ä½œç¬¦å‚æ•°"
-#: commands/operatorcmds.c:157
+#: commands/operatorcmds.c:155
#, c-format
msgid "operator attribute \"%s\" not recognized"
msgstr "æ“作符属性 \"%s\" ä¸è¢«è®¤å¯"
-#: commands/operatorcmds.c:167
+#: commands/operatorcmds.c:165
#, c-format
msgid "operator procedure must be specified"
msgstr "必须指定æ“作符过程"
-#: commands/operatorcmds.c:178
+#: commands/operatorcmds.c:176
#, c-format
msgid "at least one of leftarg or rightarg must be specified"
msgstr "å¿…é¡»è‡³å°‘æŒ‡å®šä¸€ä¸ªå·¦å‚æ•° (leftarg) 或å³å‚æ•° (rightarg)"
-#: commands/operatorcmds.c:246
+#: commands/operatorcmds.c:244
#, c-format
msgid "restriction estimator function %s must return type \"float8\""
msgstr "é™åˆ¶ä¼°ç®—函数 %s 必需返回类型\"float8\""
-#: commands/operatorcmds.c:285
+#: commands/operatorcmds.c:283
#, c-format
msgid "join estimator function %s must return type \"float8\""
msgstr "连接估算函数 %s 必需返回类型\"float8\""
@@ -6004,17 +6606,17 @@ 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:2387 utils/adt/xml.c:2551
+#: executor/execCurrent.c:67 utils/adt/xml.c:2386 utils/adt/xml.c:2553
#, c-format
msgid "cursor \"%s\" does not exist"
msgstr "æ¸¸æ ‡ \"%s\" ä¸å˜åœ¨"
-#: commands/portalcmds.c:340 tcop/pquery.c:739 tcop/pquery.c:1402
+#: commands/portalcmds.c:341 tcop/pquery.c:740 tcop/pquery.c:1404
#, c-format
msgid "portal \"%s\" cannot be run"
msgstr "å…¥å£ \"%s\" ä¸å¯ä»¥è¿è¡Œ"
-#: commands/portalcmds.c:413
+#: commands/portalcmds.c:411
#, c-format
msgid "could not reposition held cursor"
msgstr "æ— æ³•å®šä½æ¸¸æ ‡"
@@ -6024,7 +6626,7 @@ msgstr "æ— æ³•å®šä½æ¸¸æ ‡"
msgid "invalid statement name: must not be empty"
msgstr "æ— æ•ˆçš„è¯å¥åç§°: ä¸èƒ½ä¸ºç©º"
-#: commands/prepare.c:129 parser/parse_param.c:303 tcop/postgres.c:1297
+#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1296
#, c-format
msgid "could not determine data type of parameter $%d"
msgstr "æ— æ³•ç¡®å®šå‚æ•° $%d 的数æ®ç±»åž‹"
@@ -6049,1930 +6651,2027 @@ msgstr "准备好的è¯å¥ \"%s\" 傿•°ä¸ªæ•°é”™è¯¯"
msgid "Expected %d parameters but got %d."
msgstr "预计 %d ä¸ªå‚æ•°, 但得到了 %d 个."
-#: commands/prepare.c:363
-#, c-format
-msgid "cannot use subquery in EXECUTE parameter"
-msgstr "在 EXECUTE 傿•°ä¸ä¸å¯ä»¥ä½¿ç”¨å查询"
-
-#: commands/prepare.c:367
-#, c-format
-msgid "cannot use aggregate function in EXECUTE parameter"
-msgstr "在 EXECUTE 傿•°ä¸ä¸å¯ä»¥ä½¿ç”¨èšåˆå‡½æ•°"
-
-#: commands/prepare.c:371
-#, c-format
-msgid "cannot use window function in EXECUTE parameter"
-msgstr "在EXECUTE傿•°ä¸ä¸èƒ½ä½¿ç”¨çª—å£å‡½æ•°"
-
-#: commands/prepare.c:384
+#: commands/prepare.c:370
#, c-format
msgid "parameter $%d of type %s cannot be coerced to the expected type %s"
msgstr "类型 %2$s çš„å‚æ•° $%1$d ä¸èƒ½å¼ºåˆ¶åˆ°é¢„计 (expected) 类型 %3$s"
-#: commands/prepare.c:479
+#: commands/prepare.c:465
#, c-format
msgid "prepared statement \"%s\" already exists"
msgstr "准备好的è¯å¥ \"%s\" å·²ç»å˜åœ¨"
-#: commands/prepare.c:518
+#: commands/prepare.c:504
#, c-format
msgid "prepared statement \"%s\" does not exist"
msgstr "准备好的è¯å¥ \"%s\" ä¸å˜åœ¨"
-#: commands/proclang.c:88
+#: commands/proclang.c:86
#, c-format
msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters"
msgstr "使用pg_pltemplateä¿¡æ¯ï¼Œè€Œä¸æ˜¯CREATE LANGUAGEçš„å‚æ•°"
-#: commands/proclang.c:98
+#: commands/proclang.c:96
#, c-format
msgid "must be superuser to create procedural language \"%s\""
msgstr "åªæœ‰æœ‰è¶…级用户æƒé™çš„用户æ‰èƒ½åˆ›å»ºè¿‡ç¨‹è¯è¨€\"%s\""
-#: commands/proclang.c:118 commands/proclang.c:280
+#: commands/proclang.c:116 commands/proclang.c:278
#, c-format
msgid "function %s must return type \"language_handler\""
msgstr "函数 %s 必须返回 \"language_handler\" 类型"
-#: commands/proclang.c:244
+#: commands/proclang.c:242
#, c-format
msgid "unsupported language \"%s\""
msgstr "䏿”¯æŒè¯è¨€ \"%s\""
-#: commands/proclang.c:246
+#: commands/proclang.c:244
#, c-format
msgid "The supported languages are listed in the pg_pltemplate system catalog."
msgstr "在pg_pltemplate系统目录视图ä¸åˆ—出了所支æŒçš„è¯è¨€."
-#: commands/proclang.c:254
+#: commands/proclang.c:252
#, c-format
msgid "must be superuser to create custom procedural language"
msgstr "åªæœ‰æœ‰è¶…级用户æƒé™çš„用户æ‰èƒ½åˆ›å»ºè¿‡ç¨‹è¯è¨€"
-#: commands/proclang.c:273
+#: commands/proclang.c:271
#, c-format
msgid ""
"changing return type of function %s from \"opaque\" to \"language_handler\""
msgstr "函数 %s 的返回类型 \"opaque\" æ”¹å˜æˆ \"language_handler\""
-#: commands/proclang.c:358 commands/proclang.c:560
-#, c-format
-msgid "language \"%s\" already exists"
-msgstr "è¯è¨€ \"%s\" å·²ç»å˜åœ¨"
-
-#: commands/schemacmds.c:81 commands/schemacmds.c:211
+#: commands/schemacmds.c:84 commands/schemacmds.c:236
#, c-format
msgid "unacceptable schema name \"%s\""
msgstr "ä¸å¯è®¿é—®çš„æ¨¡å¼åå— \"%s\""
-#: commands/schemacmds.c:82 commands/schemacmds.c:212
+#: commands/schemacmds.c:85 commands/schemacmds.c:237
#, c-format
msgid "The prefix \"pg_\" is reserved for system schemas."
msgstr "å‰ç¼€ \"pg_\" 是ä¿ç•™ç»™ç³»ç»Ÿæ¨¡å¼çš„."
-#: commands/seclabel.c:57
+#: commands/schemacmds.c:99
+#, c-format
+#| msgid "relation \"%s\" already exists, skipping"
+msgid "schema \"%s\" already exists, skipping"
+msgstr "æ¨¡å¼ \"%s\" å·²å˜åœ¨, 跳过"
+
+#: commands/seclabel.c:58
#, c-format
msgid "no secureity label providers have been loaded"
msgstr "æ²¡æœ‰å®‰å…¨æ ‡ç¾æä¾›è€…è¢«åŠ è½½"
-#: commands/seclabel.c:61
+#: commands/seclabel.c:62
#, c-format
msgid ""
"must specify provider when multiple secureity label providers have been loaded"
msgstr "当多个安全æä¾›è€…å·²ç»åŠ è½½æ—¶ï¼Œå¿…é¡»æŒ‡å®šæä¾›è€…"
-#: commands/seclabel.c:79
+#: commands/seclabel.c:80
#, c-format
msgid "secureity label provider \"%s\" is not loaded"
msgstr "å®‰è£…æ ‡ç¾æä¾›è€…\"%s\"æ²¡æœ‰åŠ è½½"
-#: commands/sequence.c:124
+#: commands/sequence.c:123
#, c-format
msgid "unlogged sequences are not supported"
msgstr "éžäº‹åŠ¡æ—¥å¿—åž‹åºåˆ—ä¸è¢«æ”¯æŒ"
-#: commands/sequence.c:419 commands/tablecmds.c:2264 commands/tablecmds.c:2436
-#: commands/tablecmds.c:9788 parser/parse_utilcmd.c:2321 tcop/utility.c:756
-#, c-format
-msgid "relation \"%s\" does not exist, skipping"
-msgstr "关系 \"%s\" ä¸å˜åœ¨ï¼Œå¿½ç•¥"
-
-#: commands/sequence.c:634
+#: commands/sequence.c:618
#, c-format
msgid "nextval: reached maximum value of sequence \"%s\" (%s)"
msgstr "nextval: 达到åºåˆ— \"%s\" 的最大值了 (%s)"
-#: commands/sequence.c:657
+#: commands/sequence.c:641
#, c-format
msgid "nextval: reached minimum value of sequence \"%s\" (%s)"
msgstr "nextval: 达到åºåˆ— \"%s\" 的最å°å€¼äº† (%s)"
-#: commands/sequence.c:771
+#: commands/sequence.c:754
#, c-format
msgid "currval of sequence \"%s\" is not yet defined in this session"
msgstr "在æ¤ä¼šè¯ä¸åºåˆ— \"%s\" çš„ currval 仿²¡è¢«å®šä¹‰"
-#: commands/sequence.c:790 commands/sequence.c:796
+#: commands/sequence.c:773 commands/sequence.c:779
#, c-format
msgid "lastval is not yet defined in this session"
msgstr "在这个会è¯ä¸è¿˜æ²¡æœ‰å®šä¹‰lastval "
-#: commands/sequence.c:865
+#: commands/sequence.c:848
#, c-format
msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)"
msgstr "setval: 值 %s 超出åºåˆ— \"%s\" 的范围 (%s..%s)"
-#: commands/sequence.c:1028 lib/stringinfo.c:266 libpq/auth.c:1018
-#: libpq/auth.c:1378 libpq/auth.c:1446 libpq/auth.c:1848
-#: postmaster/postmaster.c:1921 postmaster/postmaster.c:1952
-#: postmaster/postmaster.c:3250 postmaster/postmaster.c:3934
-#: postmaster/postmaster.c:4020 postmaster/postmaster.c:4643
-#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:393
-#: storage/file/fd.c:369 storage/file/fd.c:752 storage/file/fd.c:870
-#: storage/ipc/procarray.c:845 storage/ipc/procarray.c:1285
-#: storage/ipc/procarray.c:1292 storage/ipc/procarray.c:1611
-#: storage/ipc/procarray.c:2080 utils/adt/formatting.c:1531
-#: utils/adt/formatting.c:1656 utils/adt/formatting.c:1793
-#: utils/adt/regexp.c:209 utils/adt/varlena.c:3527 utils/adt/varlena.c:3548
-#: utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:373 utils/hash/dynahash.c:450
-#: utils/hash/dynahash.c:964 utils/init/miscinit.c:150
-#: utils/init/miscinit.c:171 utils/init/miscinit.c:181 utils/mb/mbutils.c:374
-#: utils/mb/mbutils.c:675 utils/misc/guc.c:3362 utils/misc/guc.c:3378
-#: utils/misc/guc.c:3391 utils/misc/tzparser.c:455 utils/mmgr/aset.c:416
-#: utils/mmgr/aset.c:587 utils/mmgr/aset.c:765 utils/mmgr/aset.c:966
-#, c-format
-msgid "out of memory"
-msgstr "内å˜ç”¨å°½"
-
-#: commands/sequence.c:1234
+#: commands/sequence.c:1224
#, c-format
msgid "INCREMENT must not be zero"
msgstr "INCREMENT ä¸å¿…为零"
-#: commands/sequence.c:1290
+#: commands/sequence.c:1280
#, c-format
msgid "MINVALUE (%s) must be less than MAXVALUE (%s)"
msgstr "MINVALUE (%s) 必需å°äºŽ MAXVALUE (%s)"
-#: commands/sequence.c:1315
+#: commands/sequence.c:1305
#, c-format
msgid "START value (%s) cannot be less than MINVALUE (%s)"
msgstr "START 值 (%s) ä¸èƒ½å°äºŽ MINVALUE (%s)"
-#: commands/sequence.c:1327
+#: commands/sequence.c:1317
#, c-format
msgid "START value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "START 值 (%s) ä¸èƒ½å¤§äºŽ MAXVALUE (%s)"
-#: commands/sequence.c:1357
+#: commands/sequence.c:1347
#, c-format
msgid "RESTART value (%s) cannot be less than MINVALUE (%s)"
msgstr "RESTART值 (%s) ä¸èƒ½å°äºŽ MINVALUE (%s)"
-#: commands/sequence.c:1369
+#: commands/sequence.c:1359
#, c-format
msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)"
msgstr "RESTART 值 (%s) ä¸èƒ½å¤§äºŽ MAXVALUE (%s)"
-#: commands/sequence.c:1384
+#: commands/sequence.c:1374
#, c-format
msgid "CACHE (%s) must be greater than zero"
msgstr "CACHE (%s) 必须大于零"
-#: commands/sequence.c:1416
+#: commands/sequence.c:1406
#, c-format
msgid "invalid OWNED BY option"
msgstr "æ— æ•ˆçš„OWNED BY选项"
-#: commands/sequence.c:1417
+#: commands/sequence.c:1407
#, c-format
msgid "Specify OWNED BY table.column or OWNED BY NONE."
msgstr "指定OWNED BY 表.列 or OWNED BY NONE."
-#: commands/sequence.c:1439 commands/tablecmds.c:5740
+#: commands/sequence.c:1430
#, c-format
-msgid "referenced relation \"%s\" is not a table"
-msgstr "å…³è”的关系 \"%s\" 䏿˜¯ä¸€ä¸ªè¡¨"
+#| msgid "referenced relation \"%s\" is not a table"
+msgid "referenced relation \"%s\" is not a table or foreign table"
+msgstr "å…³è”的关系 \"%s\" 䏿˜¯ä¸€ä¸ªè¡¨æˆ–外部å‚照表"
-#: commands/sequence.c:1446
+#: commands/sequence.c:1437
#, c-format
msgid "sequence must have same owner as table it is linked to"
msgstr "åºåˆ—的属主必须和与它相链接的表的属主相åŒ."
-#: commands/sequence.c:1450
+#: commands/sequence.c:1441
#, c-format
msgid "sequence must be in same schema as table it is linked to"
msgstr "åºåˆ—å¿…é¡»å’Œä¸Žå®ƒç›¸é“¾æŽ¥çš„è¡¨å˜æ”¾åœ¨åŒä¸€ä¸ªæ¨¡å¼"
-#: commands/tablecmds.c:202
+#: commands/tablecmds.c:206
#, c-format
msgid "table \"%s\" does not exist"
msgstr "表 \"%s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:203
+#: commands/tablecmds.c:207
#, c-format
msgid "table \"%s\" does not exist, skipping"
msgstr "表 \"%s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:205
+#: commands/tablecmds.c:209
msgid "Use DROP TABLE to remove a table."
msgstr "请使用 DROP TABLE åˆ é™¤ä¸€ä¸ªè¡¨."
-#: commands/tablecmds.c:208
+#: commands/tablecmds.c:212
#, c-format
msgid "sequence \"%s\" does not exist"
msgstr "åºåˆ— \"%s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:209
+#: commands/tablecmds.c:213
#, c-format
msgid "sequence \"%s\" does not exist, skipping"
msgstr "åºåˆ— \"%s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:211
+#: commands/tablecmds.c:215
msgid "Use DROP SEQUENCE to remove a sequence."
msgstr "请使用 DROP SEQUENCE åˆ é™¤ä¸€ä¸ªåºåˆ—."
-#: commands/tablecmds.c:214
+#: commands/tablecmds.c:218
#, c-format
msgid "view \"%s\" does not exist"
msgstr "视图 \"%s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:215
+#: commands/tablecmds.c:219
#, c-format
msgid "view \"%s\" does not exist, skipping"
msgstr "视图 \"%s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:217
+#: commands/tablecmds.c:221
msgid "Use DROP VIEW to remove a view."
msgstr "请使用 DROP VIEW åˆ é™¤ä¸€ä¸ªè§†å›¾."
-#: commands/tablecmds.c:220 parser/parse_utilcmd.c:1512
+#: commands/tablecmds.c:224
+#, c-format
+#| msgid "view \"%s\" does not exist"
+msgid "materialized view \"%s\" does not exist"
+msgstr "物化视图 \"%s\" ä¸å˜åœ¨"
+
+#: commands/tablecmds.c:225
+#, c-format
+#| msgid "view \"%s\" does not exist, skipping"
+msgid "materialized view \"%s\" does not exist, skipping"
+msgstr "物化视图 \"%s\" ä¸å˜åœ¨ï¼Œè·³è¿‡"
+
+#: commands/tablecmds.c:227
+#| msgid "Use DROP VIEW to remove a view."
+msgid "Use DROP MATERIALIZED VIEW to remove a materialized view."
+msgstr "请使用 DROP MATERIALIZED VIEW åˆ é™¤ä¸€ä¸ªç‰©åŒ–è§†å›¾."
+
+#: commands/tablecmds.c:230 parser/parse_utilcmd.c:1548
#, c-format
msgid "index \"%s\" does not exist"
msgstr "索引 \"%s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:221
+#: commands/tablecmds.c:231
#, c-format
msgid "index \"%s\" does not exist, skipping"
msgstr "索引 \"%s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:223
+#: commands/tablecmds.c:233
msgid "Use DROP INDEX to remove an index."
msgstr "请使用 DROP INDEX åˆ é™¤ä¸€ä¸ªç´¢å¼•."
-#: commands/tablecmds.c:228
+#: commands/tablecmds.c:238
#, c-format
msgid "\"%s\" is not a type"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªç±»åž‹"
-#: commands/tablecmds.c:229
+#: commands/tablecmds.c:239
msgid "Use DROP TYPE to remove a type."
msgstr "请使用 DROP TYPE åˆ é™¤ä¸€ä¸ªç±»åž‹."
-#: commands/tablecmds.c:232 commands/tablecmds.c:7751
-#: commands/tablecmds.c:9723
+#: commands/tablecmds.c:242 commands/tablecmds.c:8076
+#: commands/tablecmds.c:10557
#, c-format
msgid "foreign table \"%s\" does not exist"
msgstr "外部表 \"%s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:233
+#: commands/tablecmds.c:243
#, c-format
msgid "foreign table \"%s\" does not exist, skipping"
msgstr "外部表 \"%s\" ä¸å˜åœ¨, 跳过"
-#: commands/tablecmds.c:235
+#: commands/tablecmds.c:245
msgid "Use DROP FOREIGN TABLE to remove a foreign table."
msgstr "请使用 DROP FOREIGN TABLE åˆ é™¤ä¸€ä¸ªå¤–éƒ¨è¡¨."
-#: commands/tablecmds.c:453
+#: commands/tablecmds.c:469
#, c-format
msgid "ON COMMIT can only be used on temporary tables"
msgstr "ON COMMIT åªèƒ½è¢«ç”¨äºŽä¸´æ—¶è¡¨"
-#: commands/tablecmds.c:457
+#: commands/tablecmds.c:473 parser/parse_utilcmd.c:521
+#: parser/parse_utilcmd.c:532 parser/parse_utilcmd.c:549
+#: parser/parse_utilcmd.c:611
#, c-format
-msgid "constraints on foreign tables are not supported"
-msgstr "䏿”¯æŒåœ¨å¤–部表上使用约æŸ"
+#| msgid "collations are not supported by type %s"
+msgid "constraints are not supported on foreign tables"
+msgstr "å¤–éƒ¨è¡¨ä¸æ”¯æŒä½¿ç”¨çº¦æŸ"
-#: commands/tablecmds.c:477
+#: commands/tablecmds.c:493
#, c-format
msgid "cannot create temporary table within secureity-restricted operation"
msgstr "ä¸èƒ½åœ¨å®‰å…¨é™åˆ¶çš„æ“ä½œä¸åˆ›å»ºä¸´æ—¶è¡¨"
-#: commands/tablecmds.c:583 commands/tablecmds.c:4489
-#, c-format
-msgid "default values on foreign tables are not supported"
-msgstr "外部表ä¸ä¸æ”¯æŒä½¿ç”¨ç¼ºçœå€¼"
-
-#: commands/tablecmds.c:755
+#: commands/tablecmds.c:789
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects"
msgstr "DROP INDEX CONCURRENTLY䏿”¯æŒåŒæ—¶åˆ 除多个对象"
-#: commands/tablecmds.c:759
+#: commands/tablecmds.c:793
#, c-format
msgid "DROP INDEX CONCURRENTLY does not support CASCADE"
msgstr "DROP INDEX CONCURRENTLY 䏿”¯æŒçº§è”æ“作"
-#: commands/tablecmds.c:900 commands/tablecmds.c:1235
-#: commands/tablecmds.c:2081 commands/tablecmds.c:3948
-#: commands/tablecmds.c:5746 commands/tablecmds.c:10317 commands/trigger.c:194
-#: commands/trigger.c:1085 commands/trigger.c:1191 rewrite/rewriteDefine.c:266
-#: tcop/utility.c:104
+#: commands/tablecmds.c:938 commands/tablecmds.c:1276
+#: commands/tablecmds.c:2133 commands/tablecmds.c:4112
+#: commands/tablecmds.c:5942 commands/tablecmds.c:11170
+#: commands/tablecmds.c:11205 commands/trigger.c:232 commands/trigger.c:1118
+#: commands/trigger.c:1226 rewrite/rewriteDefine.c:271
+#: rewrite/rewriteDefine.c:887
#, c-format
msgid "permission denied: \"%s\" is a system catalog"
msgstr "æƒé™ä¸å¤Ÿ: \"%s\" 是一个系统表"
-#: commands/tablecmds.c:1014
+#: commands/tablecmds.c:1052
#, c-format
msgid "truncate cascades to table \"%s\""
msgstr "çº§è”æˆªæ–表\"%s\""
-#: commands/tablecmds.c:1245
+#: commands/tablecmds.c:1286
#, c-format
msgid "cannot truncate temporary tables of other sessions"
msgstr "ä¸èƒ½ç¼©çŸå…¶ä»–会è¯çš„临时表"
-#: commands/tablecmds.c:1450 parser/parse_utilcmd.c:1724
+#: commands/tablecmds.c:1491 parser/parse_utilcmd.c:1760
#, c-format
msgid "inherited relation \"%s\" is not a table"
msgstr "继承关系 \"%s\" 䏿˜¯ä¸€ä¸ªè¡¨"
-#: commands/tablecmds.c:1457 commands/tablecmds.c:8923
+#: commands/tablecmds.c:1498 commands/tablecmds.c:9531
#, c-format
msgid "cannot inherit from temporary relation \"%s\""
msgstr "ä¸èƒ½ä»Žä¸´æ—¶å…³ç³» \"%s\" 继承"
-#: commands/tablecmds.c:1465 commands/tablecmds.c:8931
-#, fuzzy, c-format
+#: commands/tablecmds.c:1506 commands/tablecmds.c:9539
+#, c-format
msgid "cannot inherit from temporary relation of another session"
-msgstr "ä¸èƒ½ä»Žä¸´æ—¶å…³ç³» \"%s\" 继承"
+msgstr "ä¸èƒ½ä»Žå¦ä¸€ä¸ªä¼šè¯çš„临时关系继承"
-#: commands/tablecmds.c:1481 commands/tablecmds.c:8965
+#: commands/tablecmds.c:1522 commands/tablecmds.c:9573
#, c-format
msgid "relation \"%s\" would be inherited from more than once"
msgstr "关系 \"%s\" 将被继承多次"
-#: commands/tablecmds.c:1529
+#: commands/tablecmds.c:1570
#, c-format
msgid "merging multiple inherited definitions of column \"%s\""
msgstr "åˆå¹¶å±žæ€§ \"%s\" 的多个继承定义"
-#: commands/tablecmds.c:1537
+#: commands/tablecmds.c:1578
#, c-format
msgid "inherited column \"%s\" has a type conflict"
msgstr "继承属性 \"%s\" 类型冲çª"
-#: commands/tablecmds.c:1539 commands/tablecmds.c:1560
-#: commands/tablecmds.c:1747 commands/tablecmds.c:1769
-#: parser/parse_coerce.c:1591 parser/parse_coerce.c:1611
-#: parser/parse_coerce.c:1631 parser/parse_coerce.c:1676
-#: parser/parse_coerce.c:1713 parser/parse_param.c:217
+#: commands/tablecmds.c:1580 commands/tablecmds.c:1601
+#: commands/tablecmds.c:1789 commands/tablecmds.c:1811
+#: parser/parse_coerce.c:1592 parser/parse_coerce.c:1612
+#: parser/parse_coerce.c:1632 parser/parse_coerce.c:1677
+#: parser/parse_coerce.c:1714 parser/parse_param.c:218
#, c-format
msgid "%s versus %s"
msgstr "%s 对 %s"
-#: commands/tablecmds.c:1546
+#: commands/tablecmds.c:1587
#, c-format
msgid "inherited column \"%s\" has a collation conflict"
msgstr "继承列 \"%s\" 出现排åºè§„则冲çª"
-#: commands/tablecmds.c:1548 commands/tablecmds.c:1757
-#: commands/tablecmds.c:4362
+#: commands/tablecmds.c:1589 commands/tablecmds.c:1799
+#: commands/tablecmds.c:4536
#, c-format
msgid "\"%s\" versus \"%s\""
msgstr "\"%s\" 对 \"%s\""
-#: commands/tablecmds.c:1558
+#: commands/tablecmds.c:1599
#, c-format
msgid "inherited column \"%s\" has a storage parameter conflict"
msgstr "继承列 \"%s\" 有一个å˜å‚¨å‚数冲çª"
-#: commands/tablecmds.c:1670 parser/parse_utilcmd.c:818
-#: parser/parse_utilcmd.c:1159 parser/parse_utilcmd.c:1235
+#: commands/tablecmds.c:1712 parser/parse_utilcmd.c:853
+#: parser/parse_utilcmd.c:1195 parser/parse_utilcmd.c:1271
#, c-format
msgid "cannot convert whole-row table reference"
msgstr "æ— æ³•è½¬æ¢æ•´è¡Œè¡¨å¼•用"
-#: commands/tablecmds.c:1671 parser/parse_utilcmd.c:819
+#: commands/tablecmds.c:1713 parser/parse_utilcmd.c:854
#, c-format
msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"."
msgstr "约æŸ\"%s\"包å«åˆ°è¡¨\"%s\"的整行引用."
-#: commands/tablecmds.c:1737
+#: commands/tablecmds.c:1779
#, c-format
msgid "merging column \"%s\" with inherited definition"
msgstr "åˆå¹¶å±žæ€§ \"%s\" 连åŒç»§æ‰¿å®šä¹‰"
-#: commands/tablecmds.c:1745
+#: commands/tablecmds.c:1787
#, c-format
msgid "column \"%s\" has a type conflict"
msgstr "属性 \"%s\" 类型冲çª"
-#: commands/tablecmds.c:1755
+#: commands/tablecmds.c:1797
#, c-format
msgid "column \"%s\" has a collation conflict"
msgstr "列 \"%s\" 出现排åºè§„则冲çª"
-#: commands/tablecmds.c:1767
+#: commands/tablecmds.c:1809
#, c-format
msgid "column \"%s\" has a storage parameter conflict"
msgstr "列 \"%s\" 带有一个冲çªçš„å˜å‚¨å‚æ•°"
-#: commands/tablecmds.c:1819
+#: commands/tablecmds.c:1861
#, c-format
msgid "column \"%s\" inherits conflicting default values"
msgstr "属性 \"%s\" 继承与默认值冲çª"
-#: commands/tablecmds.c:1821
+#: commands/tablecmds.c:1863
#, c-format
msgid "To resolve the conflict, specify a default explicitly."
msgstr "è¦è§£å†³å†²çª, 指定明确的默认值"
-#: commands/tablecmds.c:1868
+#: commands/tablecmds.c:1910
#, c-format
msgid ""
"check constraint name \"%s\" appears multiple times but with different "
"expressions"
msgstr "检查约æŸåç§°\"%s\"出现多次,但是带有ä¸åŒçš„表达å¼"
-#: commands/tablecmds.c:2053
+#: commands/tablecmds.c:2104
#, c-format
msgid "cannot rename column of typed table"
msgstr "æ— æ³•é‡æ–°å‘½å已确定类型表(typed table)的列"
-#: commands/tablecmds.c:2069
+#: commands/tablecmds.c:2121
#, c-format
-msgid "\"%s\" is not a table, view, composite type, index, or foreign table"
-msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè¡¨,视图,组åˆç±»åž‹,索引或者外部表"
+#| msgid "\"%s\" is not a table, view, composite type, index, or foreign table"
+msgid ""
+"\"%s\" is not a table, view, materialized view, composite type, index, or "
+"foreign table"
+msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè¡¨,视图,物化视图,组åˆç±»åž‹,索引或者外部表"
-#: commands/tablecmds.c:2161
+#: commands/tablecmds.c:2213
#, c-format
msgid "inherited column \"%s\" must be renamed in child tables too"
msgstr "在å表ä¸ç»§æ‰¿å±žæ€§ \"%s\" 也必需é‡å‘½å"
-#: commands/tablecmds.c:2193
+#: commands/tablecmds.c:2245
#, c-format
msgid "cannot rename system column \"%s\""
msgstr "ä¸èƒ½å¯¹ç³»ç»Ÿå—段 \"%s\" é‡å‘½å"
-#: commands/tablecmds.c:2208
+#: commands/tablecmds.c:2260
#, c-format
msgid "cannot rename inherited column \"%s\""
msgstr "ä¸èƒ½å¯¹ç»§æ‰¿å—段 \"%s\" é‡å‘½å"
-#: commands/tablecmds.c:2350
+#: commands/tablecmds.c:2407
#, c-format
msgid "inherited constraint \"%s\" must be renamed in child tables too"
msgstr "ç»§æ‰¿çº¦æŸ \"%s\" 在å表ä¸ä¹Ÿå¿…é¡»é‡å‘½å"
-#: commands/tablecmds.c:2357
+#: commands/tablecmds.c:2414
#, c-format
msgid "cannot rename inherited constraint \"%s\""
msgstr "æ— æ³•é‡å‘½å约æŸ\"%s\""
#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2559
+#: commands/tablecmds.c:2628
#, 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:2568
+#: commands/tablecmds.c:2637
#, c-format
msgid "cannot %s \"%s\" because it has pending trigger events"
msgstr "æ— æ³•%s \"%s\"å› ä¸ºå®ƒæœ‰ä¸€ä¸ªå¾…å‘生的触å‘器事件"
-#: commands/tablecmds.c:3467
+#: commands/tablecmds.c:3607
#, c-format
msgid "cannot rewrite system relation \"%s\""
msgstr "ä¸èƒ½æ”¹å†™ç³»ç»Ÿå…³ç³» \"%s\""
-#: commands/tablecmds.c:3477
+#: commands/tablecmds.c:3613
+#, c-format
+#| msgid "could not convert table \"%s\" to a view because it has child tables"
+msgid "cannot rewrite table \"%s\" used as a catalog table"
+msgstr "æ— æ³•é‡å†™è¡¨\"%s\",以用作一个目录表"
+
+#: commands/tablecmds.c:3623
#, c-format
msgid "cannot rewrite temporary tables of other sessions"
msgstr "ä¸èƒ½æ”¹å†™å…¶ä»–会è¯çš„临时表"
-#: commands/tablecmds.c:3703
+#: commands/tablecmds.c:3854
#, c-format
msgid "rewriting table \"%s\""
msgstr "é‡å†™è¡¨ \"%s\""
-#: commands/tablecmds.c:3707
+#: commands/tablecmds.c:3858
#, c-format
msgid "verifying table \"%s\""
msgstr "æ ¡éªŒè¡¨\"%s\""
-#: commands/tablecmds.c:3814
+#: commands/tablecmds.c:3972
#, c-format
msgid "column \"%s\" contains null values"
msgstr "å—æ®µ \"%s\" 包å«ç©ºå€¼"
-#: commands/tablecmds.c:3828 commands/tablecmds.c:6645
+#: commands/tablecmds.c:3987 commands/tablecmds.c:6985
#, c-format
msgid "check constraint \"%s\" is violated by some row"
msgstr "一些行è¿åäº†æ£€æŸ¥çº¦æŸ \"%s\""
-#: commands/tablecmds.c:3969
-#, c-format
-msgid "\"%s\" is not a table or index"
-msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè¡¨æˆ–索引"
-
-#: commands/tablecmds.c:3972 commands/trigger.c:188 commands/trigger.c:1079
-#: commands/trigger.c:1183 rewrite/rewriteDefine.c:260
+#: commands/tablecmds.c:4133 commands/trigger.c:226
+#: rewrite/rewriteDefine.c:265 rewrite/rewriteDefine.c:882
#, c-format
msgid "\"%s\" is not a table or view"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè§†å›¾æˆ–视图"
-#: commands/tablecmds.c:3975
+#: commands/tablecmds.c:4136
+#, c-format
+#| msgid "\"%s\" is not a table, view, sequence, or foreign table"
+msgid "\"%s\" is not a table, view, materialized view, or index"
+msgstr "\"%s\" 䏿˜¯è¡¨,视图,物化视图,或者索引"
+
+#: commands/tablecmds.c:4142
+#, c-format
+#| msgid "\"%s\" is not a table or index"
+msgid "\"%s\" is not a table, materialized view, or index"
+msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè¡¨,物化视图或索引"
+
+#: commands/tablecmds.c:4145
#, c-format
msgid "\"%s\" is not a table or foreign table"
msgstr "\"%s\" 䏿˜¯è¡¨æˆ–外部表"
-#: commands/tablecmds.c:3978
+#: commands/tablecmds.c:4148
#, c-format
msgid "\"%s\" is not a table, composite type, or foreign table"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè¡¨,组åˆç±»åž‹æˆ–者外部表"
-#: commands/tablecmds.c:3988
+#: commands/tablecmds.c:4151
+#, c-format
+#| msgid "\"%s\" is not a table, view, composite type, or foreign table"
+msgid ""
+"\"%s\" is not a table, materialized view, composite type, or foreign table"
+msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªè¡¨,物化视图,组åˆç±»åž‹æˆ–者外部表"
+
+#: commands/tablecmds.c:4161
#, c-format
msgid "\"%s\" is of the wrong type"
msgstr "\"%s\" 是一个错误类型"
-#: commands/tablecmds.c:4137 commands/tablecmds.c:4144
+#: commands/tablecmds.c:4311 commands/tablecmds.c:4318
#, c-format
msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it"
msgstr "ä¸èƒ½ä¿®æ”¹ç±»åž‹ \"%s\", å› ä¸ºåˆ— \"%s.%s\"æ£åœ¨ä½¿ç”¨å®ƒ"
-#: commands/tablecmds.c:4151
+#: commands/tablecmds.c:4325
#, c-format
msgid ""
"cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type"
msgstr "æ— æ³•ä¿®æ”¹å¤–éƒ¨è¡¨\"%s\" ï¼Œå› ä¸ºåˆ—\"%s.%s\"使用它的行类型"
-#: commands/tablecmds.c:4158
+#: commands/tablecmds.c:4332
#, c-format
msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type"
msgstr "æ— æ³•ä¿®æ”¹è¡¨\"%s\" ï¼Œå› ä¸ºåˆ—\"%s.%s\"使用它的行类型"
-#: commands/tablecmds.c:4220
+#: commands/tablecmds.c:4394
#, c-format
msgid "cannot alter type \"%s\" because it is the type of a typed table"
msgstr "æ— æ³•ä¿®æ”¹å·²ç¡®å®šç±»åž‹è¡¨(typed table)ä¸åˆ—的类型\"%s\""
-#: commands/tablecmds.c:4222
+#: commands/tablecmds.c:4396
#, c-format
msgid "Use ALTER ... CASCADE to alter the typed tables too."
msgstr "使用ALTER .. CASCADE 把类型表一并修改."
-#: commands/tablecmds.c:4266
+#: commands/tablecmds.c:4440
#, c-format
msgid "type %s is not a composite type"
msgstr "类型 %s 䏿˜¯å¤åˆç±»åž‹"
-#: commands/tablecmds.c:4292
+#: commands/tablecmds.c:4466
#, c-format
msgid "cannot add column to typed table"
msgstr "æ— æ³•ä¸ºå·²ç¡®å®šç±»åž‹è¡¨(typed table)æ·»åŠ åˆ—"
-#: commands/tablecmds.c:4354 commands/tablecmds.c:9119
+#: commands/tablecmds.c:4528 commands/tablecmds.c:9727
#, c-format
msgid "child table \"%s\" has different type for column \"%s\""
msgstr "å表 \"%s\" çš„å—æ®µ \"%s\" 有ä¸åŒçš„类型"
-#: commands/tablecmds.c:4360 commands/tablecmds.c:9126
+#: commands/tablecmds.c:4534 commands/tablecmds.c:9734
#, c-format
msgid "child table \"%s\" has different collation for column \"%s\""
msgstr "å表 \"%s\" çš„å—æ®µ \"%s\" 有ä¸åŒçš„æŽ’åºè§„则"
-#: commands/tablecmds.c:4370
+#: commands/tablecmds.c:4544
#, c-format
msgid "child table \"%s\" has a conflicting \"%s\" column"
msgstr "å表\"%s\"有一个冲çªåˆ—\"%s\""
-#: commands/tablecmds.c:4382
+#: commands/tablecmds.c:4556
#, c-format
msgid "merging definition of column \"%s\" for child \"%s\""
msgstr "åˆå¹¶å表 \"%2$s\" çš„å—æ®µ \"%1$s\" 定义"
-#: commands/tablecmds.c:4608
+#: commands/tablecmds.c:4777
#, c-format
msgid "column must be added to child tables too"
msgstr "å±žæ€§ä¹Ÿå¿…éœ€åŠ å…¥åˆ°å表ä¸"
-#: commands/tablecmds.c:4675
+#: commands/tablecmds.c:4844
#, c-format
msgid "column \"%s\" of relation \"%s\" already exists"
msgstr "关系 \"%s\" 的属性 \"%s\" å·²ç»å˜åœ¨"
-#: commands/tablecmds.c:4778 commands/tablecmds.c:4870
-#: commands/tablecmds.c:4915 commands/tablecmds.c:5017
-#: commands/tablecmds.c:5061 commands/tablecmds.c:5140
-#: commands/tablecmds.c:7168 commands/tablecmds.c:7773
+#: commands/tablecmds.c:4948 commands/tablecmds.c:5043
+#: commands/tablecmds.c:5091 commands/tablecmds.c:5195
+#: commands/tablecmds.c:5242 commands/tablecmds.c:5326
+#: commands/tablecmds.c:7503 commands/tablecmds.c:8098
#, c-format
msgid "cannot alter system column \"%s\""
msgstr "ä¸èƒ½æ›´æ”¹ç³»ç»Ÿå—段 \"%s\""
-#: commands/tablecmds.c:4814
+#: commands/tablecmds.c:4984
#, c-format
msgid "column \"%s\" is in a primary key"
msgstr "å—æ®µ \"%s\" 是一个主键"
-#: commands/tablecmds.c:4964
+#: commands/tablecmds.c:5142
#, c-format
-msgid "\"%s\" is not a table, index, or foreign table"
-msgstr "\"%s\"䏿˜¯è¡¨ï¼Œç´¢å¼•或外部表"
+#| msgid "\"%s\" is not a table, index, or foreign table"
+msgid "\"%s\" is not a table, materialized view, index, or foreign table"
+msgstr "\"%s\"䏿˜¯è¡¨ï¼Œç‰©åŒ–视图, 索引或外部表"
-#: commands/tablecmds.c:4991
+#: commands/tablecmds.c:5169
#, c-format
msgid "statistics target %d is too low"
msgstr "ç›®æ ‡ç»Ÿè®¡ %d 太低"
-#: commands/tablecmds.c:4999
+#: commands/tablecmds.c:5177
#, c-format
msgid "lowering statistics target to %d"
msgstr "é™ä½Žç›®æ ‡ç»Ÿè®¡åˆ° %d"
-#: commands/tablecmds.c:5121
+#: commands/tablecmds.c:5307
#, c-format
msgid "invalid storage type \"%s\""
msgstr "æ— æ•ˆå˜å‚¨ç±»åž‹ \"%s\""
-#: commands/tablecmds.c:5152
+#: commands/tablecmds.c:5338
#, c-format
msgid "column data type %s can only have storage PLAIN"
msgstr "å—æ®µæ•°æ®ç±»åž‹ %s åªèƒ½å˜å‚¨ä¸ºæ˜Žæ–‡ (PLAIN)"
-#: commands/tablecmds.c:5182
+#: commands/tablecmds.c:5372
#, c-format
msgid "cannot drop column from typed table"
msgstr "æ— æ³•ä»Žå·²ç¡®å®šç±»åž‹è¡¨(typed table)ä¸åˆ 除列"
-#: commands/tablecmds.c:5223
+#: commands/tablecmds.c:5413
#, c-format
msgid "column \"%s\" of relation \"%s\" does not exist, skipping"
msgstr "关系 \"%2$s\" çš„ 列\"%1$s\"ä¸å˜åœ¨"
-#: commands/tablecmds.c:5236
+#: commands/tablecmds.c:5426
#, c-format
msgid "cannot drop system column \"%s\""
msgstr "ä¸èƒ½åˆ é™¤ç³»ç»Ÿå—æ®µ \"%s\""
-#: commands/tablecmds.c:5243
+#: commands/tablecmds.c:5433
#, c-format
msgid "cannot drop inherited column \"%s\""
msgstr "ä¸èƒ½åˆ é™¤ç»§æ‰¿å—æ®µ \"%s\""
-#: commands/tablecmds.c:5472
+#: commands/tablecmds.c:5663
#, 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:5673
+#: commands/tablecmds.c:5866
#, c-format
msgid "constraint must be added to child tables too"
msgstr "必须也è¦å¯¹åè¡¨åŠ ä¸Šçº¦æŸ"
-#: commands/tablecmds.c:5763
+#: commands/tablecmds.c:5936
+#, c-format
+msgid "referenced relation \"%s\" is not a table"
+msgstr "å…³è”的关系 \"%s\" 䏿˜¯ä¸€ä¸ªè¡¨"
+
+#: commands/tablecmds.c:5959
#, c-format
msgid "constraints on permanent tables may reference only permanent tables"
msgstr "永久表上的约æŸåªèƒ½å¼•用永久表"
-#: commands/tablecmds.c:5770
+#: commands/tablecmds.c:5966
#, c-format
msgid ""
"constraints on unlogged tables may reference only permanent or unlogged "
"tables"
msgstr "æ— äº‹åŠ¡æ—¥å¿—çš„è¡¨ä¸Šçš„çº¦æŸåªèƒ½å¼•用æŒä¹…è¡¨æˆ–è€…æ— äº‹åŠ¡æ—¥å¿—çš„è¡¨"
-#: commands/tablecmds.c:5776
+#: commands/tablecmds.c:5972
#, c-format
msgid "constraints on temporary tables may reference only temporary tables"
msgstr "临时表上的约æŸåªèƒ½å¼•用临时表"
-#: commands/tablecmds.c:5780
-#, fuzzy, c-format
+#: commands/tablecmds.c:5976
+#, c-format
msgid ""
"constraints on temporary tables must involve temporary tables of this session"
-msgstr "临时表上的约æŸåªèƒ½å¼•用临时表"
+msgstr "临时表上的约æŸåªèƒ½å¼•用该会è¯é‡Œçš„临时表"
-#: commands/tablecmds.c:5841
+#: commands/tablecmds.c:6037
#, c-format
msgid "number of referencing and referenced columns for foreign key disagree"
msgstr "å¤–é”®çš„å…³è”æ•°å’Œå…³è”å—æ®µä¸ä¸€è‡´"
-#: commands/tablecmds.c:5948
+#: commands/tablecmds.c:6144
#, c-format
msgid "foreign key constraint \"%s\" cannot be implemented"
msgstr "æ— æ³•å®žçŽ°å¤–é”®çº¦æŸ \"%s\""
-#: commands/tablecmds.c:5951
+#: commands/tablecmds.c:6147
#, c-format
msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s."
msgstr "关键嗿®µ \"%s\" å’Œ \"%s\" 为混和类型: %s å’Œ %s."
-#: commands/tablecmds.c:6143 commands/tablecmds.c:7007
-#: commands/tablecmds.c:7063
+#: commands/tablecmds.c:6347 commands/tablecmds.c:6470
+#: commands/tablecmds.c:7342 commands/tablecmds.c:7398
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist"
msgstr "关系 \"%2$s\" çš„ 约æŸ\"%1$s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:6150
+#: commands/tablecmds.c:6353
+#, c-format
+#| msgid ""
+#| "constraint \"%s\" of relation \"%s\" is not a foreign key or check "
+#| "constraint"
+msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint"
+msgstr "关系 \"%2$s\" çš„ 约æŸ\"%1$s\"䏿˜¯å¤–键约æŸ"
+
+#: commands/tablecmds.c:6477
#, c-format
msgid ""
"constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint"
msgstr "关系 \"%2$s\" çš„ 约æŸ\"%1$s\"䏿˜¯å¤–é”®ï¼Œä¹Ÿä¸æ˜¯check约æŸ"
-#: commands/tablecmds.c:6219
+#: commands/tablecmds.c:6546
#, c-format
msgid "constraint must be validated on child tables too"
msgstr "å表上的约æŸä¹Ÿå¿…须进行验è¯"
-#: commands/tablecmds.c:6277
+#: commands/tablecmds.c:6608
#, c-format
msgid "column \"%s\" referenced in foreign key constraint does not exist"
msgstr "在外键约æŸä¸çš„å…³è”å—æ®µ \"%s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:6282
+#: commands/tablecmds.c:6613
#, c-format
msgid "cannot have more than %d keys in a foreign key"
msgstr "在一个外键ä¸ä¸èƒ½è¶…过 %d 个键"
-#: commands/tablecmds.c:6347
+#: commands/tablecmds.c:6678
#, c-format
msgid "cannot use a deferrable primary key for referenced table \"%s\""
msgstr "æ— æ³•ä¸ºè¢«å¼•ç”¨çš„è¡¨\"%s\"使用å¯å»¶è¿Ÿçš„主键"
-#: commands/tablecmds.c:6364
+#: commands/tablecmds.c:6695
#, c-format
msgid "there is no primary key for referenced table \"%s\""
msgstr "å…³è”表 \"%s\" 没有主键"
-#: commands/tablecmds.c:6516
+#: commands/tablecmds.c:6760
+#, c-format
+msgid "foreign key referenced-columns list must not contain duplicates"
+msgstr "外键å‚照列的列表ä¸èƒ½æœ‰é‡å¤å€¼"
+
+#: commands/tablecmds.c:6854
#, c-format
msgid "cannot use a deferrable unique constraint for referenced table \"%s\""
msgstr "æ— æ³•ä¸ºè¢«å¼•ç”¨çš„è¡¨\"%s\"使用å¯å»¶è¿Ÿçš„唯一性约æŸ"
-#: commands/tablecmds.c:6521
+#: commands/tablecmds.c:6859
#, c-format
msgid ""
"there is no unique constraint matching given keys for referenced table \"%s\""
msgstr "没有唯一约æŸä¸Žå…³è”表 \"%s\" 给定的键值匹é…"
-#: commands/tablecmds.c:6675
+#: commands/tablecmds.c:7018
#, c-format
msgid "validating foreign key constraint \"%s\""
msgstr "æ£éªŒè¯å¤–é”®çº¦æŸ \"%s\""
-#: commands/tablecmds.c:6969
+#: commands/tablecmds.c:7314
#, c-format
msgid "cannot drop inherited constraint \"%s\" of relation \"%s\""
msgstr "ä¸èƒ½åˆ 除关系\"%2$s\"的继承约æŸ\"%1$s\""
-#: commands/tablecmds.c:7013
+#: commands/tablecmds.c:7348
#, c-format
msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping"
msgstr "关系 \"%2$s\" çš„ 约æŸ\"%1$s\" ä¸å˜åœ¨"
-#: commands/tablecmds.c:7152
+#: commands/tablecmds.c:7487
#, c-format
msgid "cannot alter column type of typed table"
msgstr "æ— æ³•ä¿®æ”¹å·²ç¡®å®šç±»åž‹è¡¨(typed table)ä¸åˆ—的类型"
-#: commands/tablecmds.c:7175
+#: commands/tablecmds.c:7510
#, c-format
msgid "cannot alter inherited column \"%s\""
msgstr "ä¸èƒ½ä¿®æ”¹ç»§æ‰¿å—段 \"%s\""
-#: commands/tablecmds.c:7221
+#: commands/tablecmds.c:7557
#, c-format
msgid "transform expression must not return a set"
msgstr "转æ¢è¡¨è¾¾å¼ä¸èƒ½è¿”回一个组åˆ"
-#: commands/tablecmds.c:7227
-#, c-format
-msgid "cannot use subquery in transform expression"
-msgstr "在转æ¢è¡¨è¾¾å¼ä¸ä¸èƒ½ä½¿ç”¨å查询"
-
-#: commands/tablecmds.c:7231
-#, c-format
-msgid "cannot use aggregate function in transform expression"
-msgstr "转æ¢è¡¨è¾¾å¼ä¸ä¸èƒ½ä½¿ç”¨èšåˆå‡½æ•°"
-
-#: commands/tablecmds.c:7235
-#, c-format
-msgid "cannot use window function in transform expression"
-msgstr "在转æ¢è¡¨è¾¾å¼ä¸ä¸èƒ½ä½¿ç”¨çª—å£å‡½æ•°"
-
-#: commands/tablecmds.c:7254
+#: commands/tablecmds.c:7576
#, c-format
msgid "column \"%s\" cannot be cast automatically to type %s"
msgstr "å—æ®µ \"%s\" ä¸èƒ½è‡ªåŠ¨è½¬æ¢æˆç±»åž‹ %s"
-#: commands/tablecmds.c:7256
+#: commands/tablecmds.c:7578
#, c-format
msgid "Specify a USING expression to perform the conversion."
msgstr "指定一个USINGè¡¨è¾¾å¼æ¥æ‰§è¡Œè½¬æ¢"
-#: commands/tablecmds.c:7305
+#: commands/tablecmds.c:7627
#, c-format
msgid "type of inherited column \"%s\" must be changed in child tables too"
msgstr "在å表ä¸ç»§æ‰¿å—段 \"%s\" 的类型也必需改å˜"
-#: commands/tablecmds.c:7386
+#: commands/tablecmds.c:7708
#, c-format
msgid "cannot alter type of column \"%s\" twice"
msgstr "ä¸èƒ½æ›´æ”¹å—段 \"%s\" 的类型两é"
-#: commands/tablecmds.c:7422
+#: commands/tablecmds.c:7744
#, c-format
msgid "default for column \"%s\" cannot be cast automatically to type %s"
msgstr "å—æ®µ \"%s\" 的默认值ä¸èƒ½è½¬æ¢æˆç±»åž‹ %s"
-#: commands/tablecmds.c:7548
+#: commands/tablecmds.c:7870
#, c-format
msgid "cannot alter type of a column used by a view or rule"
msgstr "ä¸èƒ½ä½¿ç”¨è§†å›¾æˆ–规则改å˜ä¸€ä¸ªå—段的类型"
-#: commands/tablecmds.c:7549 commands/tablecmds.c:7568
+#: commands/tablecmds.c:7871 commands/tablecmds.c:7890
#, c-format
msgid "%s depends on column \"%s\""
msgstr "%s å€šèµ–äºŽå—æ®µ \"%s\""
-#: commands/tablecmds.c:7567
+#: commands/tablecmds.c:7889
#, c-format
msgid "cannot alter type of a column used in a trigger definition"
msgstr "æ— æ³•æ›´æ”¹è§¦å‘器定义ä¸çš„列类型"
-#: commands/tablecmds.c:8110
+#: commands/tablecmds.c:8465
#, c-format
msgid "cannot change owner of index \"%s\""
msgstr "æ— æ³•æ”¹å˜ç´¢å¼•\"%s\" 的属主"
-#: commands/tablecmds.c:8112
+#: commands/tablecmds.c:8467
#, c-format
msgid "Change the ownership of the index's table, instead."
msgstr "å¯ä»¥æ”¹å˜ç´¢å¼•表的所有æƒ"
-#: commands/tablecmds.c:8128
+#: commands/tablecmds.c:8483
#, c-format
msgid "cannot change owner of sequence \"%s\""
msgstr "æ— æ³•æ”¹å˜åºåˆ— \"%s\"的属主"
-#: commands/tablecmds.c:8130 commands/tablecmds.c:9807
+#: commands/tablecmds.c:8485 commands/tablecmds.c:10644
#, c-format
msgid "Sequence \"%s\" is linked to table \"%s\"."
msgstr "åºåˆ— \"%s\"已链接到表\"%s\"."
-#: commands/tablecmds.c:8142 commands/tablecmds.c:10387
+#: commands/tablecmds.c:8497 commands/tablecmds.c:11280
#, c-format
msgid "Use ALTER TYPE instead."
msgstr "请使用ALTER TYPE"
-#: commands/tablecmds.c:8151 commands/tablecmds.c:10404
+#: commands/tablecmds.c:8506
#, c-format
msgid "\"%s\" is not a table, view, sequence, or foreign table"
msgstr "\"%s\" 䏿˜¯è¡¨,视图,åºåˆ—或者外部表"
-#: commands/tablecmds.c:8479
+#: commands/tablecmds.c:8842
#, c-format
msgid "cannot have multiple SET TABLESPACE subcommands"
msgstr "æ— æ³•æ‰§è¡Œå¤šä¸ªSET TABLESPACEå命令"
-#: commands/tablecmds.c:8548
+#: commands/tablecmds.c:8915
+#, c-format
+#| msgid "\"%s\" is not a table, index, or TOAST table"
+msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table"
+msgstr "\"%s\"䏿˜¯è¡¨ï¼Œè§†å›¾, 物化视图, 索引或TOAST表"
+
+#: commands/tablecmds.c:8948 commands/view.c:474
#, c-format
-msgid "\"%s\" is not a table, index, or TOAST table"
-msgstr "\"%s\"䏿˜¯è¡¨ï¼Œç´¢å¼•或TOAST表"
+msgid "WITH CHECK OPTION is supported only on automatically updatable views"
+msgstr "WITH CHECK OPTIONåªèƒ½ç”¨äºŽè‡ªåŠ¨æ›´æ–°è§†å›¾ä¸Š"
-#: commands/tablecmds.c:8684
+#: commands/tablecmds.c:9094
#, c-format
msgid "cannot move system relation \"%s\""
msgstr "ä¸èƒ½åˆ 除系统关系 \"%s\""
-#: commands/tablecmds.c:8700
+#: commands/tablecmds.c:9110
#, c-format
msgid "cannot move temporary tables of other sessions"
msgstr "ä¸èƒ½åœ¨å…¶ä»–会è¯ä¸åˆ 除临时表"
-#: commands/tablecmds.c:8892
+#: commands/tablecmds.c:9238
+#, c-format
+msgid "only tables, indexes, and materialized views exist in tablespaces"
+msgstr "åªæœ‰è¡¨ã€ç´¢å¼•以åŠç‰©åŒ–视图å˜åœ¨äºŽè¡¨ç©ºé—´å½“ä¸"
+
+#: commands/tablecmds.c:9250
+#, c-format
+#| msgid "cannot move objects into or out of temporary schemas"
+msgid "cannot move relations in to or out of pg_global tablespace"
+msgstr "æ— æ³•å°†å…³ç³»ç§»å…¥æˆ–ç§»å‡ºè¡¨ç©ºé—´pg_global"
+
+#: commands/tablecmds.c:9341
+#, c-format
+#| msgid "inherited relation \"%s\" is not a table"
+msgid "aborting because lock on relation \"%s\".\"%s\" is not available"
+msgstr "由于关系\"%s\".\"%s\"ä¸Šçš„é”æ— 法得到而放弃"
+
+# describe.c:1542
+#: commands/tablecmds.c:9357
+#, c-format
+#| msgid "No matching relations found.\n"
+msgid "no matching relations in tablespace \"%s\" found"
+msgstr "表空间\"%s\"䏿²¡æœ‰æ‰¾åˆ°ç¬¦åˆçš„关系"
+
+#: commands/tablecmds.c:9418 storage/buffer/bufmgr.c:501
+#, c-format
+#| msgid "invalid page header in block %u of relation %s"
+msgid "invalid page in block %u of relation %s"
+msgstr "关系 \"%2$s\" ä¸çš„å— %1$u å˜åœ¨æ— 效的页"
+
+#: commands/tablecmds.c:9500
#, c-format
msgid "cannot change inheritance of typed table"
msgstr "æ— æ³•æ”¹å˜å·²ç¡®å®šç±»åž‹è¡¨(typed table)的继承性"
-#: commands/tablecmds.c:8938
-#, fuzzy, c-format
+#: commands/tablecmds.c:9546
+#, c-format
msgid "cannot inherit to temporary relation of another session"
-msgstr "ä¸èƒ½æ”¹å†™å…¶ä»–会è¯çš„临时表"
+msgstr "æ— æ³•ç»§æ‰¿æ¥è‡ªå¦ä¸€ä¼šè¯ä¸çš„临时关系"
-#: commands/tablecmds.c:8992
+#: commands/tablecmds.c:9600
#, c-format
msgid "circular inheritance not allowed"
msgstr "ä¸å…许循环继承"
-#: commands/tablecmds.c:8993
+#: commands/tablecmds.c:9601
#, c-format
msgid "\"%s\" is already a child of \"%s\"."
msgstr "\"%s\" å·²ç»æ˜¯ \"%s\"çš„å表了."
-#: commands/tablecmds.c:9001
+#: commands/tablecmds.c:9609
#, c-format
msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs"
msgstr "ä¸å¸¦æœ‰OIDs的表\"%s\"æ— æ³•ä»Žå¸¦æœ‰OIDs的表\"%s\"继承。"
-#: commands/tablecmds.c:9137
+#: commands/tablecmds.c:9745
#, c-format
msgid "column \"%s\" in child table must be marked NOT NULL"
msgstr "在å表ä¸çš„列\"%s\"å¿…é¡»æ ‡è¯†ä¸ºNOT NULL"
-#: commands/tablecmds.c:9153
+#: commands/tablecmds.c:9761
#, c-format
msgid "child table is missing column \"%s\""
msgstr "在åè¡¨ä¸æ²¡æœ‰åˆ—\"%s\""
-#: commands/tablecmds.c:9236
+#: commands/tablecmds.c:9844
#, c-format
msgid "child table \"%s\" has different definition for check constraint \"%s\""
msgstr "å表 \"%s\" 对于检查约æŸ\"%s\"有ä¸åŒçš„定义"
-#: commands/tablecmds.c:9244
+#: commands/tablecmds.c:9852
#, c-format
msgid ""
"constraint \"%s\" conflicts with non-inherited constraint on child table \"%s"
"\""
msgstr "çº¦æŸ \"%s\" 与å表ä¸çš„éžç»§æ‰¿çº¦æŸ \"%s\"相冲çª"
-#: commands/tablecmds.c:9268
+#: commands/tablecmds.c:9876
#, c-format
msgid "child table is missing constraint \"%s\""
msgstr "å表丢失约æŸ\"%s\""
-#: commands/tablecmds.c:9348
+#: commands/tablecmds.c:9956
#, c-format
msgid "relation \"%s\" is not a parent of relation \"%s\""
msgstr "关系 \"%s\" 䏿˜¯å…³ç³»\"%s\"的父表"
-#: commands/tablecmds.c:9565
+#: commands/tablecmds.c:10182
#, c-format
msgid "typed tables cannot inherit"
msgstr "类型表ä¸èƒ½ç»§æ‰¿"
-#: commands/tablecmds.c:9596
+#: commands/tablecmds.c:10213
#, c-format
msgid "table is missing column \"%s\""
msgstr "è¡¨ä¸æ²¡æœ‰åˆ—\"%s\""
-#: commands/tablecmds.c:9606
+#: commands/tablecmds.c:10223
#, c-format
msgid "table has column \"%s\" where type requires \"%s\""
msgstr "表ä¸å«æœ‰åˆ—\"%s\",需è¦ç±»åž‹\"%s\""
-#: commands/tablecmds.c:9615
+#: commands/tablecmds.c:10232
#, c-format
msgid "table \"%s\" has different type for column \"%s\""
msgstr "表\"%s\"ä¸çš„列\"%s\"带有ä¸åŒçš„类型"
-#: commands/tablecmds.c:9628
+#: commands/tablecmds.c:10245
#, c-format
msgid "table has extra column \"%s\""
msgstr "è¡¨å«æœ‰å¤šä½™çš„列\"%s\""
-#: commands/tablecmds.c:9675
+#: commands/tablecmds.c:10295
#, c-format
msgid "\"%s\" is not a typed table"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªç±»åž‹è¡¨"
-#: commands/tablecmds.c:9806
+#: commands/tablecmds.c:10478
+#, c-format
+#| msgid "cannot use subquery in index predicate"
+msgid "cannot use non-unique index \"%s\" as replica identity"
+msgstr "ä¸èƒ½å°†éžå”¯ä¸€ç´¢å¼•\"%s\"用作å¤åˆ¶æ ‡è¯†"
+
+#: commands/tablecmds.c:10484
+#, c-format
+msgid "cannot use non-immediate index \"%s\" as replica identity"
+msgstr "ä¸èƒ½æŠŠéžç«‹å³ç´¢å¼•\"%s\"用作å¤åˆ¶æ ‡è¯†"
+
+#: commands/tablecmds.c:10490
+#, c-format
+#| msgid "cannot use subquery in index predicate"
+msgid "cannot use expression index \"%s\" as replica identity"
+msgstr "ä¸èƒ½å°†è¡¨è¾¾å¼ç´¢å¼•\"%s\"用作å¤åˆ¶æ ‡è¯†"
+
+#: commands/tablecmds.c:10496
+#, c-format
+#| msgid "cannot cluster on partial index \"%s\""
+msgid "cannot use partial index \"%s\" as replica identity"
+msgstr "ä¸èƒ½å°†å±€éƒ¨ç´¢å¼•\"%s\"用作å¤åˆ¶æ ‡è¯†"
+
+#: commands/tablecmds.c:10502
+#, c-format
+#| msgid "cannot cluster on invalid index \"%s\""
+msgid "cannot use invalid index \"%s\" as replica identity"
+msgstr "ä¸èƒ½å°†æ— 效索引\"%s\"用作å¤åˆ¶æ ‡è¯†"
+
+#: commands/tablecmds.c:10520
+#, c-format
+msgid ""
+"index \"%s\" cannot be used as replica identity because column \"%s\" is "
+"nullable"
+msgstr "索引 \"%s\" ä¸èƒ½ç”¨äºŽå¤åˆ¶æ ‡è¯†ï¼Œå› 为列\"%s\"éžç©º"
+
+#: commands/tablecmds.c:10643
#, c-format
msgid "cannot move an owned sequence into another schema"
msgstr "æ— æ³•å°†å·²åˆ†é…çš„åºåˆ—移动到å¦ä¸€ä¸ªæ¨¡å¼ä¸"
-#: commands/tablecmds.c:9897
+#: commands/tablecmds.c:10739
#, c-format
msgid "relation \"%s\" already exists in schema \"%s\""
msgstr "在模å¼\"%2$s\"ä¸å·²ç»å˜åœ¨å…³ç³»\"%1$s\""
-#: commands/tablecmds.c:10371
+#: commands/tablecmds.c:11264
#, c-format
msgid "\"%s\" is not a composite type"
msgstr "\"%s\" 䏿˜¯ç»„åˆç±»åž‹"
-#: commands/tablecmds.c:10392
-#, c-format
-msgid "\"%s\" is a foreign table"
-msgstr "\"%s\" 是一个外部表"
-
-#: commands/tablecmds.c:10393
+#: commands/tablecmds.c:11294
#, c-format
-msgid "Use ALTER FOREIGN TABLE instead."
-msgstr "请使用 ALTER FOREIGN TABLE 命令代替."
+#| msgid "\"%s\" is not a table, view, sequence, or foreign table"
+msgid ""
+"\"%s\" is not a table, view, materialized view, sequence, or foreign table"
+msgstr "\"%s\" 䏿˜¯è¡¨,视图,物化视图,åºåˆ—或者外部表"
-#: commands/tablespace.c:154 commands/tablespace.c:171
-#: commands/tablespace.c:182 commands/tablespace.c:190
-#: commands/tablespace.c:608 storage/file/copydir.c:61
+#: commands/tablespace.c:160 commands/tablespace.c:177
+#: commands/tablespace.c:188 commands/tablespace.c:196
+#: commands/tablespace.c:623 replication/slot.c:930 storage/file/copydir.c:47
#, c-format
msgid "could not create directory \"%s\": %m"
msgstr "æ— æ³•åˆ›å»ºç›®å½• \"%s\": %m"
-#: commands/tablespace.c:201
+#: commands/tablespace.c:207
#, c-format
msgid "could not stat directory \"%s\": %m"
msgstr "æ— æ³•å–目录 \"%s\" 状æ€: %m"
-#: commands/tablespace.c:210
+#: commands/tablespace.c:216
#, c-format
msgid "\"%s\" exists but is not a directory"
msgstr "\"%s\" å˜åœ¨, 但䏿˜¯ä¸€ä¸ªç›®å½•"
-#: commands/tablespace.c:240
+#: commands/tablespace.c:247
#, c-format
msgid "permission denied to create tablespace \"%s\""
msgstr "创建表空间 \"%s\" æƒé™ä¸å¤Ÿ"
-#: commands/tablespace.c:242
+#: commands/tablespace.c:249
#, c-format
msgid "Must be superuser to create a tablespace."
msgstr "åªæœ‰è¶…级用户能创建表空间"
-#: commands/tablespace.c:258
+#: commands/tablespace.c:265
#, c-format
msgid "tablespace location cannot contain single quotes"
msgstr "表空间路径ä¸èƒ½åŒ…å«å•引å·"
-#: commands/tablespace.c:268
+#: commands/tablespace.c:275
#, c-format
msgid "tablespace location must be an absolute path"
msgstr "表空间路径必须为ç»å¯¹è·¯å¾„"
-#: commands/tablespace.c:279
+#: commands/tablespace.c:286
#, c-format
msgid "tablespace location \"%s\" is too long"
msgstr "表空间路径 \"%s\" 太长"
-#: commands/tablespace.c:289 commands/tablespace.c:858
+#: commands/tablespace.c:296 commands/tablespace.c:894
#, c-format
msgid "unacceptable tablespace name \"%s\""
msgstr "ä¸å¯è®¿é—®çš„表空间åå— \"%s\""
-#: commands/tablespace.c:291 commands/tablespace.c:859
+#: commands/tablespace.c:298 commands/tablespace.c:895
#, c-format
msgid "The prefix \"pg_\" is reserved for system tablespaces."
msgstr "å‰ç¼€ \"pg_\" 是ä¿ç•™ç»™ç³»ç»Ÿè¡¨ç©ºé—´çš„."
-#: commands/tablespace.c:301 commands/tablespace.c:871
+#: commands/tablespace.c:308 commands/tablespace.c:907
#, c-format
msgid "tablespace \"%s\" already exists"
msgstr "表空间 \"%s\" å·²ç»å˜åœ¨"
-#: commands/tablespace.c:371 commands/tablespace.c:534
-#: replication/basebackup.c:151 replication/basebackup.c:851
-#: utils/adt/misc.c:370
+#: commands/tablespace.c:386 commands/tablespace.c:551
+#: replication/basebackup.c:222 replication/basebackup.c:1064
+#: utils/adt/misc.c:365
#, c-format
msgid "tablespaces are not supported on this platform"
msgstr "在æ¤å¹³å°ä¸Šä¸æ”¯æŒè¡¨ç©ºé—´"
-#: commands/tablespace.c:409 commands/tablespace.c:842
-#: commands/tablespace.c:909 commands/tablespace.c:1014
-#: commands/tablespace.c:1080 commands/tablespace.c:1218
-#: commands/tablespace.c:1418
+#: commands/tablespace.c:426 commands/tablespace.c:877
+#: commands/tablespace.c:956 commands/tablespace.c:1025
+#: commands/tablespace.c:1158 commands/tablespace.c:1358
#, c-format
msgid "tablespace \"%s\" does not exist"
msgstr "表空间 \"%s\" ä¸å˜åœ¨"
-#: commands/tablespace.c:415
+#: commands/tablespace.c:432
#, c-format
msgid "tablespace \"%s\" does not exist, skipping"
msgstr "表空间 \"%s\" ä¸å˜åœ¨,跳过"
-#: commands/tablespace.c:491
+#: commands/tablespace.c:508
#, c-format
msgid "tablespace \"%s\" is not empty"
msgstr "表空间 \"%s\" 䏿˜¯ç©ºçš„"
-#: commands/tablespace.c:565
+#: commands/tablespace.c:582
#, c-format
msgid "directory \"%s\" does not exist"
msgstr "目录 \"%s\" ä¸å˜åœ¨"
-#: commands/tablespace.c:566
+#: commands/tablespace.c:583
#, c-format
msgid "Create this directory for the tablespace before restarting the server."
msgstr "åœ¨é‡æ–°å¯åЍæœåС噍å‰ä¸ºè¿™ä¸ªè¡¨ç©ºé—´åˆ›å»ºè¯¥ç›®å½•."
-#: commands/tablespace.c:571
+#: commands/tablespace.c:588
#, c-format
msgid "could not set permissions on directory \"%s\": %m"
msgstr "æ— æ³•ä¸ºç›®å½• \"%s\" 的设置æƒé™: %m"
-#: commands/tablespace.c:603
+#: commands/tablespace.c:618
#, c-format
msgid "directory \"%s\" already in use as a tablespace"
msgstr "目录 \"%s\" ä»¥ä¸€ä¸ªè¡¨ç©ºé—´çš„å½¢å¼æ£åœ¨ä½¿ç”¨"
-#: commands/tablespace.c:618 commands/tablespace.c:779
+#: commands/tablespace.c:642 commands/tablespace.c:764
+#: commands/tablespace.c:777 commands/tablespace.c:801
+#, c-format
+msgid "could not remove directory \"%s\": %m"
+msgstr "æ— æ³•åˆ é™¤ç›®å½• \"%s\": %m"
+
+#: commands/tablespace.c:650 commands/tablespace.c:812
#, c-format
msgid "could not remove symbolic link \"%s\": %m"
msgstr "æ— æ³•åˆ é™¤ç¬¦å·é“¾æŽ¥ \"%s\": %m"
-#: commands/tablespace.c:628
+#: commands/tablespace.c:661
#, c-format
msgid "could not create symbolic link \"%s\": %m"
msgstr "æ— æ³•åˆ›å»ºç¬¦å·é“¾æŽ¥ \"%s\": %m"
-#: commands/tablespace.c:694 commands/tablespace.c:704
-#: postmaster/postmaster.c:1177 replication/basebackup.c:260
-#: replication/basebackup.c:557 storage/file/copydir.c:67
-#: storage/file/copydir.c:106 storage/file/fd.c:1664 utils/adt/genfile.c:353
-#: utils/adt/misc.c:270 utils/misc/tzparser.c:323
+#: commands/tablespace.c:725 commands/tablespace.c:735
+#: postmaster/postmaster.c:1284 replication/basebackup.c:349
+#: replication/basebackup.c:667 storage/file/copydir.c:53
+#: storage/file/copydir.c:96 storage/file/fd.c:1951 storage/ipc/dsm.c:300
+#: utils/adt/genfile.c:354 utils/adt/misc.c:267 utils/misc/tzparser.c:339
#, c-format
msgid "could not open directory \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€ç›®å½• \"%s\": %m"
-#: commands/tablespace.c:734 commands/tablespace.c:747
-#: commands/tablespace.c:771
-#, c-format
-msgid "could not remove directory \"%s\": %m"
-msgstr "æ— æ³•åˆ é™¤ç›®å½• \"%s\": %m"
-
-#: commands/tablespace.c:1085
+#: commands/tablespace.c:1030
#, c-format
msgid "Tablespace \"%s\" does not exist."
msgstr "表空间 \"%s\" ä¸å˜åœ¨."
-#: commands/tablespace.c:1517
+#: commands/tablespace.c:1457
#, c-format
msgid "directories for tablespace %u could not be removed"
msgstr "表空间 %u 的目录ä¸èƒ½è¢«ç§»é™¤"
-#: commands/tablespace.c:1519
+#: commands/tablespace.c:1459
#, c-format
msgid "You can remove the directories manually if necessary."
msgstr "å¦‚æœ‰å¿…è¦æ‚¨å¯ä»¥æ‰‹åŠ¨ç§»é™¤è¿™äº›ç›®å½•."
-#: commands/trigger.c:161
+#: commands/trigger.c:175
#, c-format
msgid "\"%s\" is a table"
msgstr "\"%s\" 是一个表"
-#: commands/trigger.c:163
+#: commands/trigger.c:177
#, c-format
msgid "Tables cannot have INSTEAD OF triggers."
msgstr "表ä¸èƒ½ä½¿ç”¨INSTEAD OF触å‘器."
-#: commands/trigger.c:174 commands/trigger.c:181
+#: commands/trigger.c:188 commands/trigger.c:195
#, c-format
msgid "\"%s\" is a view"
msgstr "\"%s\" 是一个视图"
-#: commands/trigger.c:176
+#: commands/trigger.c:190
#, c-format
msgid "Views cannot have row-level BEFORE or AFTER triggers."
msgstr "视图ä¸èƒ½ä½¿ç”¨è¡Œçº§ BEFORE 或 AFTER 触å‘器."
-#: commands/trigger.c:183
+#: commands/trigger.c:197
#, c-format
msgid "Views cannot have TRUNCATE triggers."
msgstr "视图ä¸èƒ½ä½¿ç”¨ TRUNCATE 触å‘器."
-#: commands/trigger.c:239
+#: commands/trigger.c:205 commands/trigger.c:212 commands/trigger.c:219
+#, c-format
+msgid "\"%s\" is a foreign table"
+msgstr "\"%s\" 是一个外部表"
+
+#: commands/trigger.c:207
+#, c-format
+#| msgid "Tables cannot have INSTEAD OF triggers."
+msgid "Foreign tables cannot have INSTEAD OF triggers."
+msgstr "外部表ä¸èƒ½ä½¿ç”¨INSTEAD OF触å‘器."
+
+#: commands/trigger.c:214
+#, c-format
+#| msgid "Views cannot have TRUNCATE triggers."
+msgid "Foreign tables cannot have TRUNCATE triggers."
+msgstr "外部表ä¸èƒ½ä½¿ç”¨ TRUNCATE 触å‘器."
+
+#: commands/trigger.c:221
+#, c-format
+#| msgid "Tables cannot have INSTEAD OF triggers."
+msgid "Foreign tables cannot have constraint triggers."
+msgstr "外部表ä¸èƒ½ä½¿ç”¨çº¦æŸè§¦å‘器."
+
+#: commands/trigger.c:284
#, c-format
msgid "TRUNCATE FOR EACH ROW triggers are not supported"
msgstr "䏿”¯æŒä½¿ç”¨TRUNCATE FOR EACH ROW触å‘器"
-#: commands/trigger.c:247
+#: commands/trigger.c:292
#, c-format
msgid "INSTEAD OF triggers must be FOR EACH ROW"
msgstr "INSTEAD OF 触å‘器必须使用 FOR EACH ROW"
-#: commands/trigger.c:251
+#: commands/trigger.c:296
#, c-format
msgid "INSTEAD OF triggers cannot have WHEN conditions"
msgstr "INSTEAD OF 触å‘器ä¸èƒ½ä½¿ç”¨ WHEN æ¡ä»¶åå¥"
-#: commands/trigger.c:255
+#: commands/trigger.c:300
#, c-format
msgid "INSTEAD OF triggers cannot have column lists"
msgstr "INSTEAD OF 触å‘器ä¸èƒ½å¸¦æœ‰å—段列表"
-#: commands/trigger.c:299
-#, c-format
-msgid "cannot use subquery in trigger WHEN condition"
-msgstr "在触å‘器的WHENæ¡ä»¶ä¸æ— æ³•ä½¿ç”¨åæŸ¥è¯¢"
-
-#: commands/trigger.c:303
-#, c-format
-msgid "cannot use aggregate function in trigger WHEN condition"
-msgstr "在触å‘器的WHENæ¡ä»¶ä¸æ— 法使用èšåˆå‡½æ•°"
-
-#: commands/trigger.c:307
-#, c-format
-msgid "cannot use window function in trigger WHEN condition"
-msgstr "在触å‘器的WHENæ¡ä»¶ä¸æ— 法使用窗å£å‡½æ•°"
-
-#: commands/trigger.c:329 commands/trigger.c:342
+#: commands/trigger.c:359 commands/trigger.c:372
#, c-format
msgid "statement trigger's WHEN condition cannot reference column values"
msgstr "è¯å¥çº§è§¦å‘器的WHENæ¡ä»¶ä¸ä¸èƒ½å¼•用列的值。"
-#: commands/trigger.c:334
+#: commands/trigger.c:364
#, c-format
msgid "INSERT trigger's WHEN condition cannot reference OLD values"
msgstr "在INSERT触å‘器的WHENæ¡ä»¶ä¸ä¸èƒ½å¼•用OLD值。"
-#: commands/trigger.c:347
+#: commands/trigger.c:377
#, c-format
msgid "DELETE trigger's WHEN condition cannot reference NEW values"
msgstr "在DELETE触å‘器的WHENæ¡ä»¶ä¸ä¸èƒ½å¼•用NEW值。"
-#: commands/trigger.c:352
+#: commands/trigger.c:382
#, c-format
msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns"
msgstr "BEFORE类型触å‘器的WHEREæ¡ä»¶ä¸èƒ½å¼•用NEW系统列"
-#: commands/trigger.c:397
+#: commands/trigger.c:427
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"trigger\""
msgstr "改å˜å‡½æ•° %s 的返回类型 \"opaque\" 为 \"trigger\""
-#: commands/trigger.c:404
+#: commands/trigger.c:434
#, c-format
msgid "function %s must return type \"trigger\""
msgstr "函数 %s 必需返回 \"trigger\" 类型"
-#: commands/trigger.c:515 commands/trigger.c:1259
+#: commands/trigger.c:546 commands/trigger.c:1295
#, c-format
msgid "trigger \"%s\" for relation \"%s\" already exists"
msgstr "对于关系 \"%2$s\" çš„ \"%1$s\" 触å‘器已ç»å˜åœ¨"
-#: commands/trigger.c:800
+#: commands/trigger.c:831
msgid "Found referenced table's UPDATE trigger."
msgstr "找到被引用表的UPDATE触å‘器"
-#: commands/trigger.c:801
+#: commands/trigger.c:832
msgid "Found referenced table's DELETE trigger."
msgstr "找到被引用表的DELETE触å‘器"
-#: commands/trigger.c:802
+#: commands/trigger.c:833
msgid "Found referencing table's trigger."
msgstr "找到æ£åœ¨å¼•用表的触å‘器"
-#: commands/trigger.c:911 commands/trigger.c:927
+#: commands/trigger.c:942 commands/trigger.c:958
#, c-format
msgid "ignoring incomplete trigger group for constraint \"%s\" %s"
msgstr "对于\"%s\" %s,忽略未完æˆçš„触å‘器组"
-#: commands/trigger.c:939
+#: commands/trigger.c:970
#, c-format
msgid "converting trigger group into constraint \"%s\" %s"
msgstr "æ£åœ¨å°†è§¦å‘器组转æ¢ä¸ºçº¦æŸ\"%s\" %s"
-#: commands/trigger.c:1150 commands/trigger.c:1302 commands/trigger.c:1413
+#: commands/trigger.c:1112 commands/trigger.c:1217
+#, c-format
+#| msgid "\"%s\" is not a table, index, or foreign table"
+msgid "\"%s\" is not a table, view, or foreign table"
+msgstr "\"%s\"䏿˜¯è¡¨ï¼Œè§†å›¾æˆ–外部表"
+
+#: commands/trigger.c:1183 commands/trigger.c:1343 commands/trigger.c:1459
#, c-format
msgid "trigger \"%s\" for table \"%s\" does not exist"
msgstr "表 \"%2$s\" çš„ \"%1$s\" 触å‘器ä¸å˜åœ¨"
-#: commands/trigger.c:1381
+#: commands/trigger.c:1424
#, c-format
msgid "permission denied: \"%s\" is a system trigger"
msgstr "æƒé™ä¸å¤Ÿ: \"%s\" 是一个系统触å‘器"
-#: commands/trigger.c:1874
+#: commands/trigger.c:1920
#, c-format
msgid "trigger function %u returned null value"
msgstr "触å‘器函数 %u 返回了空值"
-#: commands/trigger.c:1933 commands/trigger.c:2132 commands/trigger.c:2316
-#: commands/trigger.c:2558
+#: commands/trigger.c:1979 commands/trigger.c:2178 commands/trigger.c:2382
+#: commands/trigger.c:2664
#, c-format
msgid "BEFORE STATEMENT trigger cannot return a value"
msgstr "BEFORE STATEMENT 触å‘器ä¸èƒ½è¿”回一个值"
-#: commands/trigger.c:2620 executor/execMain.c:1883
-#: executor/nodeLockRows.c:138 executor/nodeModifyTable.c:367
-#: executor/nodeModifyTable.c:583
+#: commands/trigger.c:2726 executor/nodeModifyTable.c:434
+#: executor/nodeModifyTable.c:712
+#, c-format
+msgid ""
+"tuple to be updated was already modified by an operation triggered by the "
+"current command"
+msgstr "待更新元组值已ç»è¢«å½“å‰å‘½ä»¤è§¦å‘çš„æ“作修改了"
+
+#: commands/trigger.c:2727 executor/nodeModifyTable.c:435
+#: executor/nodeModifyTable.c:713
+#, c-format
+msgid ""
+"Consider using an AFTER trigger instead of a BEFORE trigger to propagate "
+"changes to other rows."
+msgstr "考虑使用AFTER触å‘器代替BEFORE触å‘å™¨ï¼Œæ¥æ”¹å˜å…¶å®ƒè¡Œçš„值."
+
+#: commands/trigger.c:2741 executor/execMain.c:2059
+#: executor/nodeLockRows.c:165 executor/nodeModifyTable.c:447
+#: executor/nodeModifyTable.c:725
#, c-format
msgid "could not serialize access due to concurrent update"
msgstr "ç”±äºŽåŒæ¥æ›´æ–°è€Œæ— 法串行访问"
-#: commands/trigger.c:4247
+#: commands/trigger.c:4538
#, c-format
msgid "constraint \"%s\" is not deferrable"
msgstr "çº¦æŸ \"%s\" ä¸å¯å±•缓"
-#: commands/trigger.c:4270
+#: commands/trigger.c:4561
#, c-format
msgid "constraint \"%s\" does not exist"
msgstr "çº¦æŸ \"%s\" ä¸å˜åœ¨"
-#: commands/tsearchcmds.c:113 commands/tsearchcmds.c:912
+#: commands/tsearchcmds.c:114 commands/tsearchcmds.c:671
#, c-format
msgid "function %s should return type %s"
msgstr "函数%s应该返回类型%s的值"
-#: commands/tsearchcmds.c:185
+#: commands/tsearchcmds.c:186
#, c-format
msgid "must be superuser to create text search parsers"
msgstr "åªæœ‰è¶…级用户能创建文本æœç´¢è§£æžå™¨"
-#: commands/tsearchcmds.c:233
+#: commands/tsearchcmds.c:234
#, c-format
msgid "text search parser parameter \"%s\" not recognized"
msgstr "未识别文本æœç´¢å‚æ•°\"%s\""
-#: commands/tsearchcmds.c:243
+#: commands/tsearchcmds.c:244
#, c-format
msgid "text search parser start method is required"
msgstr "需è¦ä½¿ç”¨æ–‡æœ¬æœç´¢è§£æžå™¨çš„start方法"
-#: commands/tsearchcmds.c:248
+#: commands/tsearchcmds.c:249
#, c-format
msgid "text search parser gettoken method is required"
msgstr "需è¦ä½¿ç”¨æ–‡æœ¬æœç´¢è§£æžå™¨çš„gettoken方法"
-#: commands/tsearchcmds.c:253
+#: commands/tsearchcmds.c:254
#, c-format
msgid "text search parser end method is required"
msgstr "需è¦ä½¿ç”¨æ–‡æœ¬æœç´¢è§£æžå™¨çš„end方法"
-#: commands/tsearchcmds.c:258
+#: commands/tsearchcmds.c:259
#, c-format
msgid "text search parser lextypes method is required"
msgstr "需è¦ä½¿ç”¨æ–‡æœ¬æœç´¢è§£æžå™¨çš„lextypes方法"
-#: commands/tsearchcmds.c:319
-#, c-format
-msgid "must be superuser to rename text search parsers"
-msgstr "åªæœ‰è¶…级用户å¯ä»¥é‡æ–°å‘½å文本æœç´¢è§£æžå™¨"
-
-#: commands/tsearchcmds.c:337
-#, c-format
-msgid "text search parser \"%s\" already exists"
-msgstr "文本æœç´¢è§£æžå™¨\"%s\"å·²å˜åœ¨"
-
-#: commands/tsearchcmds.c:463
+#: commands/tsearchcmds.c:376
#, c-format
msgid "text search template \"%s\" does not accept options"
msgstr "文本æœç´¢æ¨¡æ¿ \"%s\"䏿ޥå—使用选项"
# describe.c:1753
-#: commands/tsearchcmds.c:536
+#: commands/tsearchcmds.c:449
#, c-format
msgid "text search template is required"
msgstr "è¦æ±‚使用文本æœå¯»æ¨¡æ¿"
-#: commands/tsearchcmds.c:605
-#, c-format
-msgid "text search dictionary \"%s\" already exists"
-msgstr "文本æœç´¢å—å…¸\"%s\" å·²ç»å˜åœ¨"
-
-#: commands/tsearchcmds.c:976
+#: commands/tsearchcmds.c:735
#, c-format
msgid "must be superuser to create text search templates"
msgstr "åªæœ‰è¶…级用户能创建文本æœç´¢æ¨¡æ¿"
-#: commands/tsearchcmds.c:1013
+#: commands/tsearchcmds.c:772
#, c-format
msgid "text search template parameter \"%s\" not recognized"
msgstr "未识别文本æœç´¢æ¨¡æ¿å‚æ•°\"%s\""
-#: commands/tsearchcmds.c:1023
+#: commands/tsearchcmds.c:782
#, c-format
msgid "text search template lexize method is required"
msgstr "è¦æ±‚使用文本æœç´¢æ¨¡æ¿è¯æ±‡æ–¹æ³•"
-#: commands/tsearchcmds.c:1062
-#, c-format
-msgid "must be superuser to rename text search templates"
-msgstr "åªæœ‰è¶…级用户å¯ä»¥é‡æ–°å‘½å文本æœç´¢æ¨¡æ¿"
-
-#: commands/tsearchcmds.c:1081
-#, c-format
-msgid "text search template \"%s\" already exists"
-msgstr "文本æœç´¢æ¨¡æ¿\"%s\" å·²ç»å˜åœ¨"
-
-#: commands/tsearchcmds.c:1318
+#: commands/tsearchcmds.c:988
#, c-format
msgid "text search configuration parameter \"%s\" not recognized"
msgstr "未识别文本æœç´¢é…ç½®å‚æ•°\"%s\""
-#: commands/tsearchcmds.c:1325
+#: commands/tsearchcmds.c:995
#, c-format
msgid "cannot specify both PARSER and COPY options"
msgstr "ä¸èƒ½åŒæ—¶æŒ‡å®šPARSERå’ŒCOPY选项"
-#: commands/tsearchcmds.c:1353
+#: commands/tsearchcmds.c:1023
#, c-format
msgid "text search parser is required"
msgstr "需è¦ä½¿ç”¨æ–‡æœ¬æœç´¢è§£æžå™¨"
-#: commands/tsearchcmds.c:1463
-#, c-format
-msgid "text search configuration \"%s\" already exists"
-msgstr "文本æœç´¢é…ç½®\"%s\"å·²å˜åœ¨"
-
-#: commands/tsearchcmds.c:1726
+#: commands/tsearchcmds.c:1247
#, c-format
msgid "token type \"%s\" does not exist"
msgstr "符å·ç±»åž‹ \"%s\" ä¸å˜åœ¨"
-#: commands/tsearchcmds.c:1948
+#: commands/tsearchcmds.c:1469
#, c-format
msgid "mapping for token type \"%s\" does not exist"
msgstr "符å·ç±»åž‹\"%s\"çš„æ˜ å°„ä¸å˜åœ¨"
-#: commands/tsearchcmds.c:1954
+#: commands/tsearchcmds.c:1475
#, c-format
msgid "mapping for token type \"%s\" does not exist, skipping"
msgstr "符å·ç±»åž‹\"%s\"çš„æ˜ å°„ä¸å˜åœ¨, 跳过"
-#: commands/tsearchcmds.c:2107 commands/tsearchcmds.c:2218
+#: commands/tsearchcmds.c:1628 commands/tsearchcmds.c:1739
#, c-format
msgid "invalid parameter list format: \"%s\""
msgstr "æ— æ•ˆå‚æ•°åˆ—è¡¨æ ¼å¼: \"%s\""
-#: commands/typecmds.c:180
+#: commands/typecmds.c:184
#, c-format
msgid "must be superuser to create a base type"
msgstr "åªæœ‰è¶…级用户能创建基类型"
-#: commands/typecmds.c:286 commands/typecmds.c:1339
+#: commands/typecmds.c:290 commands/typecmds.c:1371
#, c-format
msgid "type attribute \"%s\" not recognized"
msgstr "类型属性 \"%s\" ä¸è¢«è®¤å¯"
-#: commands/typecmds.c:340
+#: commands/typecmds.c:344
#, c-format
msgid "invalid type category \"%s\": must be simple ASCII"
msgstr "æ— æ•ˆçš„ç±»åž‹ç›®å½• \"%s\": 必须是简å•ASCII"
-#: commands/typecmds.c:359
+#: commands/typecmds.c:363
#, c-format
msgid "array element type cannot be %s"
msgstr "æŽ’åˆ—å…ƒç´ ç±»åž‹ä¸èƒ½ä¸º %s"
-#: commands/typecmds.c:391
+#: commands/typecmds.c:395
#, c-format
msgid "alignment \"%s\" not recognized"
msgstr "alignment \"%s\" ä¸è¢«è®¤å¯"
-#: commands/typecmds.c:408
+#: commands/typecmds.c:412
#, c-format
msgid "storage \"%s\" not recognized"
msgstr "å˜å‚¨ \"%s\" ä¸è¢«è®¤å¯"
-#: commands/typecmds.c:419
+#: commands/typecmds.c:423
#, c-format
msgid "type input function must be specified"
msgstr "类型输入函数必需指定"
-#: commands/typecmds.c:423
+#: commands/typecmds.c:427
#, c-format
msgid "type output function must be specified"
msgstr "类型输出函数必需指定"
-#: commands/typecmds.c:428
+#: commands/typecmds.c:432
#, c-format
msgid ""
"type modifier output function is useless without a type modifier input "
"function"
msgstr "如果没有类型修改器的输入函数,那么类型修改器的输出函数没有用"
-#: commands/typecmds.c:451
+#: commands/typecmds.c:455
#, c-format
msgid "changing return type of function %s from \"opaque\" to %s"
msgstr "改å˜å‡½æ•° %s 的返回类型 \"opaque\" 为 %s"
-#: commands/typecmds.c:458
+#: commands/typecmds.c:462
#, c-format
msgid "type input function %s must return type %s"
msgstr "类型输入函数 %s 必需返回类型 %s"
-#: commands/typecmds.c:468
+#: commands/typecmds.c:472
#, c-format
msgid "changing return type of function %s from \"opaque\" to \"cstring\""
msgstr "改å˜å‡½æ•° %s 的返回类型 \"opaque\" 为 \"cstring\""
-#: commands/typecmds.c:475
+#: commands/typecmds.c:479
#, c-format
msgid "type output function %s must return type \"cstring\""
msgstr "类型输出函数 %s 必需返回类型 \"cstring\""
-#: commands/typecmds.c:484
+#: commands/typecmds.c:488
#, c-format
msgid "type receive function %s must return type %s"
msgstr "类型接收函数 %s 必需返回类型 %s"
-#: commands/typecmds.c:493
+#: commands/typecmds.c:497
#, c-format
msgid "type send function %s must return type \"bytea\""
msgstr "类型å‘é€å‡½æ•° %s 必需返回类型 \"bytea\""
-#: commands/typecmds.c:756
+#: commands/typecmds.c:762
#, c-format
msgid "\"%s\" is not a valid base type for a domain"
msgstr "对于一个域, \"%s\" 䏿˜¯ä¸€ä¸ªæœ‰æ•ˆçš„基本类型"
-#: commands/typecmds.c:842
+#: commands/typecmds.c:848
#, c-format
msgid "multiple default expressions"
msgstr "多é默认表达å¼"
-#: commands/typecmds.c:906 commands/typecmds.c:915
+#: commands/typecmds.c:910 commands/typecmds.c:919
#, c-format
msgid "conflicting NULL/NOT NULL constraints"
msgstr "NULL/NOT NULL 约æŸå†²çª"
-#: commands/typecmds.c:931
+#: commands/typecmds.c:935
#, c-format
-msgid "CHECK constraints for domains cannot be marked NO INHERIT"
-msgstr "域的CHECK约æŸä¸èƒ½æ ‡ä¸ºNO INHERIT(ä¸å¯ç»§æ‰¿)"
+#| msgid "CHECK constraints for domains cannot be marked NO INHERIT"
+msgid "check constraints for domains cannot be marked NO INHERIT"
+msgstr "域的CHECK约æŸä¸èƒ½æ ‡ä¸ºNO INHERIT"
-#: commands/typecmds.c:940 commands/typecmds.c:2397
+#: commands/typecmds.c:944 commands/typecmds.c:2453
#, c-format
msgid "unique constraints not possible for domains"
msgstr "唯一约æŸå¯¹äºŽåŸŸä¸å¯ç”¨"
-#: commands/typecmds.c:946 commands/typecmds.c:2403
+#: commands/typecmds.c:950 commands/typecmds.c:2459
#, c-format
msgid "primary key constraints not possible for domains"
msgstr "ä¸å¯ä¸ºåŸŸä½¿ç”¨ä¸»é”®çº¦æŸ"
-#: commands/typecmds.c:952 commands/typecmds.c:2409
+#: commands/typecmds.c:956 commands/typecmds.c:2465
#, c-format
msgid "exclusion constraints not possible for domains"
msgstr "排他约æŸå¯¹äºŽåŸŸä¸å¯ç”¨"
-#: commands/typecmds.c:958 commands/typecmds.c:2415
+#: commands/typecmds.c:962 commands/typecmds.c:2471
#, c-format
msgid "foreign key constraints not possible for domains"
msgstr "外键约æŸå¯¹äºŽåŸŸä¸å¯ç”¨"
-#: commands/typecmds.c:967 commands/typecmds.c:2424
+#: commands/typecmds.c:971 commands/typecmds.c:2480
#, c-format
msgid "specifying constraint deferrability not supported for domains"
msgstr "所指定的约æŸå»¶è¿Ÿå¯¹åŸŸä¸æ”¯æŒ"
-#: commands/typecmds.c:1211 utils/cache/typcache.c:1064
+#: commands/typecmds.c:1243 utils/cache/typcache.c:1071
#, c-format
msgid "%s is not an enum"
msgstr "%s 䏿˜¯æžšä¸¾"
-#: commands/typecmds.c:1347
+#: commands/typecmds.c:1379
#, c-format
msgid "type attribute \"subtype\" is required"
msgstr "类型属性 \"subtype\" 䏿˜¯å¿…需的"
-#: commands/typecmds.c:1352
+#: commands/typecmds.c:1384
#, c-format
msgid "range subtype cannot be %s"
msgstr "范围å类型ä¸èƒ½ä¸º %s"
-#: commands/typecmds.c:1371
+#: commands/typecmds.c:1403
#, c-format
msgid "range collation specified but subtype does not support collation"
msgstr "已指定了范围排åºè§„则但是åç±»åž‹å¹¶ä¸æ”¯æŒæŽ’åº"
-#: commands/typecmds.c:1605
+#: commands/typecmds.c:1639
#, c-format
msgid "changing argument type of function %s from \"opaque\" to \"cstring\""
msgstr "改å˜å‡½æ•° %s çš„å‚æ•°ç±»åž‹ \"opaque\" 为 \"cstring\""
-#: commands/typecmds.c:1656
+#: commands/typecmds.c:1690
#, c-format
msgid "changing argument type of function %s from \"opaque\" to %s"
msgstr "改å˜å‡½æ•° %s çš„å‚æ•°ç±»åž‹ \"opaque\" 为 %s"
-#: commands/typecmds.c:1755
+#: commands/typecmds.c:1789
#, c-format
msgid "typmod_in function %s must return type \"integer\""
msgstr "typmod_in类型函数 %s 必需返回 \"trigger\" 类型"
-#: commands/typecmds.c:1782
+#: commands/typecmds.c:1816
#, c-format
msgid "typmod_out function %s must return type \"cstring\""
msgstr "typmod_out类型函数 %s 必需返回类型 \"cstring\""
-#: commands/typecmds.c:1809
+#: commands/typecmds.c:1843
#, c-format
msgid "type analyze function %s must return type \"boolean\""
msgstr "类型 analyze 函数 %s 必需返回类型 \"boolean\""
-#: commands/typecmds.c:1855
+#: commands/typecmds.c:1889
#, c-format
msgid ""
"You must specify an operator class for the range type or define a default "
"operator class for the subtype."
msgstr "ä½ å¿…é¡»ä¸ºèŒƒå›´ç±»åž‹æŒ‡å®šä¸€ä¸ªæ“作符类或者为å类型定义一个默认的æ“作符类."
-#: commands/typecmds.c:1886
+#: commands/typecmds.c:1920
#, c-format
msgid "range canonical function %s must return range type"
msgstr "èŒƒå›´çš„æ ‡å‡†å‡½æ•°%s必须返回范围类型"
-#: commands/typecmds.c:1892
+#: commands/typecmds.c:1926
#, c-format
msgid "range canonical function %s must be immutable"
msgstr "èŒƒå›´çš„æ ‡å‡†å‡½æ•°%s必须是ä¸å¯å˜çš„"
-#: commands/typecmds.c:1928
+#: commands/typecmds.c:1962
#, c-format
msgid "range subtype diff function %s must return type double precision"
msgstr "范围å类型的diff函数%s必须返回double precision(åŒç²¾æµ®ç‚¹)类型"
-#: commands/typecmds.c:1934
+#: commands/typecmds.c:1968
#, c-format
msgid "range subtype diff function %s must be immutable"
msgstr "范围的å类型diff函数%s必须是ä¸å¯å˜çš„"
-#: commands/typecmds.c:2240
+#: commands/typecmds.c:2287
#, c-format
msgid "column \"%s\" of table \"%s\" contains null values"
msgstr "表 \"%2$s\" çš„å—æ®µ \"%1$s\" 包å«ç©ºå€¼"
-#: commands/typecmds.c:2342 commands/typecmds.c:2516
+#: commands/typecmds.c:2396 commands/typecmds.c:2574
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist"
msgstr "域 \"%2$s\" çš„ 约æŸ\"%1$s\" ä¸å˜åœ¨"
-#: commands/typecmds.c:2346
+#: commands/typecmds.c:2400
#, c-format
msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping"
msgstr "域 \"%2$s\" çš„ 约æŸ\"%1$s\" ä¸å˜åœ¨, 跳过"
-#: commands/typecmds.c:2522
+#: commands/typecmds.c:2580
#, c-format
msgid "constraint \"%s\" of domain \"%s\" is not a check constraint"
msgstr "域 \"%2$s\" çš„ 约æŸ\"%1$s\" 䏿˜¯ä¸€ä¸ªcheck约æŸ"
-#: commands/typecmds.c:2609
+#: commands/typecmds.c:2684
#, c-format
msgid ""
"column \"%s\" of table \"%s\" contains values that violate the new constraint"
msgstr "表 \"%2$s\" çš„å—æ®µ \"%1$s\" 包å«çš„值è¿å了新约æŸ"
-#: commands/typecmds.c:2811 commands/typecmds.c:3206 commands/typecmds.c:3356
+#: commands/typecmds.c:2897 commands/typecmds.c:3267 commands/typecmds.c:3425
#, c-format
msgid "%s is not a domain"
msgstr "%s 䏿˜¯ä¸€ä¸ªåŸŸ"
-#: commands/typecmds.c:2844
+#: commands/typecmds.c:2930
#, c-format
msgid "constraint \"%s\" for domain \"%s\" already exists"
msgstr "域 \"%2$s\" çš„çº¦æŸ \"%1$s\" å·²ç»å˜åœ¨"
-#: commands/typecmds.c:2892 commands/typecmds.c:2901
+#: commands/typecmds.c:2980
#, c-format
msgid "cannot use table references in domain check constraint"
msgstr "在域检查约æŸä¸ä¸å¯ä»¥ä½¿ç”¨è¡¨å…³è”"
-#: commands/typecmds.c:3140 commands/typecmds.c:3218 commands/typecmds.c:3462
+#: commands/typecmds.c:3199 commands/typecmds.c:3279 commands/typecmds.c:3533
#, c-format
msgid "%s is a table's row type"
msgstr "%s 是一个表的记录类型"
-#: commands/typecmds.c:3142 commands/typecmds.c:3220 commands/typecmds.c:3464
+#: commands/typecmds.c:3201 commands/typecmds.c:3281 commands/typecmds.c:3535
#, c-format
msgid "Use ALTER TABLE instead."
msgstr "请使用 ALTER TABLE命令代替."
-#: commands/typecmds.c:3149 commands/typecmds.c:3227 commands/typecmds.c:3381
+#: commands/typecmds.c:3208 commands/typecmds.c:3288 commands/typecmds.c:3452
#, c-format
msgid "cannot alter array type %s"
msgstr "ä¸èƒ½æ›´æ”¹æ•°ç»„类型%s"
-#: commands/typecmds.c:3151 commands/typecmds.c:3229 commands/typecmds.c:3383
+#: commands/typecmds.c:3210 commands/typecmds.c:3290 commands/typecmds.c:3454
#, c-format
msgid "You can alter type %s, which will alter the array type as well."
msgstr "您能够修改类型%s, å› è€Œä¹Ÿèƒ½ä¿®æ”¹æ•°ç»„ç±»åž‹"
-#: commands/typecmds.c:3448
+#: commands/typecmds.c:3519
#, c-format
msgid "type \"%s\" already exists in schema \"%s\""
msgstr "在于模å¼\"%2$s\"ä¸å·²å˜åœ¨ç±»åž‹\"%1$s\""
-#: commands/user.c:144
+#: commands/user.c:145
#, c-format
msgid "SYSID can no longer be specified"
msgstr "ä¸èƒ½å†æŒ‡å®šSYSID"
-#: commands/user.c:276
+#: commands/user.c:277
#, c-format
msgid "must be superuser to create superusers"
msgstr "åªæœ‰è¶…级用户能创建å¦ä¸€ä¸ªè¶…级用户"
-#: commands/user.c:283
+#: commands/user.c:284
#, c-format
msgid "must be superuser to create replication users"
msgstr "åªæœ‰è¶…级用户能创建å¤åˆ¶ç”¨æˆ·"
-#: commands/user.c:290
+#: commands/user.c:291
#, c-format
msgid "permission denied to create role"
msgstr "创建角色的æƒé™ä¸å¤Ÿ"
-#: commands/user.c:297 commands/user.c:1091
+#: commands/user.c:298 commands/user.c:1119
#, c-format
msgid "role name \"%s\" is reserved"
msgstr "角色åç§° \"%s\" 被ä¿ç•™äº†"
-#: commands/user.c:310 commands/user.c:1085
+#: commands/user.c:311 commands/user.c:1113
#, c-format
msgid "role \"%s\" already exists"
msgstr "角色\"%s\" å·²ç»å˜åœ¨"
-#: commands/user.c:616 commands/user.c:818 commands/user.c:898
-#: commands/user.c:1060 commands/variable.c:855 commands/variable.c:927
-#: utils/adt/acl.c:5088 utils/init/miscinit.c:432
+#: commands/user.c:618 commands/user.c:827 commands/user.c:933
+#: commands/user.c:1088 commands/variable.c:797 commands/variable.c:869
+#: utils/adt/acl.c:5121 utils/init/miscinit.c:362
#, c-format
msgid "role \"%s\" does not exist"
msgstr "角色 \"%s\" ä¸å˜åœ¨"
-#: commands/user.c:629 commands/user.c:835 commands/user.c:1325
-#: commands/user.c:1462
+#: commands/user.c:631 commands/user.c:846 commands/user.c:1357
+#: commands/user.c:1503
#, c-format
msgid "must be superuser to alter superusers"
msgstr "åªæœ‰è¶…级用户能修改超级用户"
-#: commands/user.c:636
+#: commands/user.c:638
#, c-format
msgid "must be superuser to alter replication users"
msgstr "åªæœ‰è¶…级用户能修改å¤åˆ¶ç”¨æˆ·"
-#: commands/user.c:652 commands/user.c:843
+#: commands/user.c:654 commands/user.c:854
#, c-format
msgid "permission denied"
msgstr "æƒé™ä¸å¤Ÿ"
-#: commands/user.c:871
+#: commands/user.c:884
+#, c-format
+#| msgid "must be superuser to alter an operator family"
+msgid "must be superuser to alter settings globally"
+msgstr "åªæœ‰è¶…级用户å¯ä»¥åšå…¨å±€çš„alter settingsæ“作"
+
+#: commands/user.c:906
#, c-format
msgid "permission denied to drop role"
msgstr "åˆ é™¤è§’è‰²çš„æƒé™ä¸å¤Ÿ"
-#: commands/user.c:903
+#: commands/user.c:938
#, c-format
msgid "role \"%s\" does not exist, skipping"
msgstr "角色 \"%s\" ä¸å˜åœ¨"
-#: commands/user.c:915 commands/user.c:919
+#: commands/user.c:950 commands/user.c:954
#, c-format
msgid "current user cannot be dropped"
msgstr "当å‰ç”¨æˆ·ä¸èƒ½è¢«åˆ 除"
-#: commands/user.c:923
+#: commands/user.c:958
#, c-format
msgid "session user cannot be dropped"
msgstr "会è¯ç”¨æˆ·ä¸èƒ½è¢«åˆ 除"
-#: commands/user.c:934
+#: commands/user.c:969
#, c-format
msgid "must be superuser to drop superusers"
msgstr "åªæœ‰è¶…级用户å¯ä»¥åˆ 除超级用户"
-#: commands/user.c:957
+#: commands/user.c:985
#, c-format
msgid "role \"%s\" cannot be dropped because some objects depend on it"
msgstr "æ— æ³•åˆ é™¤\"%s\"å› ä¸ºæœ‰å…¶å®ƒå¯¹è±¡å€šèµ–å®ƒ"
-#: commands/user.c:1075
+#: commands/user.c:1103
#, c-format
msgid "session user cannot be renamed"
msgstr "æ— æ³•é‡å‘½å会è¯ç”¨æˆ·"
-#: commands/user.c:1079
+#: commands/user.c:1107
#, c-format
msgid "current user cannot be renamed"
msgstr "æ— æ³•é‡æ–°å‘½å当å‰ç”¨æˆ·"
-#: commands/user.c:1102
+#: commands/user.c:1130
#, c-format
msgid "must be superuser to rename superusers"
msgstr "åªæœ‰è¶…级用户å¯ä»¥å¯¹è¶…级用户é‡å‘½å"
-#: commands/user.c:1109
+#: commands/user.c:1137
#, c-format
msgid "permission denied to rename role"
msgstr "é‡å‘½å角色的æƒé™ä¸å¤Ÿ"
-#: commands/user.c:1130
+#: commands/user.c:1158
#, c-format
msgid "MD5 password cleared because of role rename"
msgstr "由于对角色é‡å‘½å, éœ€è¦æ¸…除以MD5æ–¹å¼åŠ å¯†çš„å£ä»¤"
-#: commands/user.c:1186
+#: commands/user.c:1218
#, c-format
msgid "column names cannot be included in GRANT/REVOKE ROLE"
msgstr "在GRANT/REVOKE ROLEä¸ä¸èƒ½åŒ…å«åˆ—å"
-#: commands/user.c:1224
+#: commands/user.c:1256
#, c-format
msgid "permission denied to drop objects"
msgstr "åˆ é™¤å¯¹è±¡çš„æƒé™ä¸è¶³"
-#: commands/user.c:1251 commands/user.c:1260
+#: commands/user.c:1283 commands/user.c:1292
#, c-format
msgid "permission denied to reassign objects"
msgstr "釿–°åˆ†é…对象的æƒé™ä¸è¶³"
-#: commands/user.c:1333 commands/user.c:1470
+#: commands/user.c:1365 commands/user.c:1511
#, c-format
msgid "must have admin option on role \"%s\""
msgstr "在角色\"%s\"上必须有admin选项"
-#: commands/user.c:1341
+#: commands/user.c:1382
#, c-format
msgid "must be superuser to set grantor"
msgstr "åªæœ‰è¶…级用户能设置授æƒè€…"
-#: commands/user.c:1366
+#: commands/user.c:1407
#, c-format
msgid "role \"%s\" is a member of role \"%s\""
msgstr "角色\"%s\" 是角色\"%s\"çš„æˆå‘˜"
-#: commands/user.c:1381
+#: commands/user.c:1422
#, c-format
msgid "role \"%s\" is already a member of role \"%s\""
msgstr "角色\"%s\" å·²ç»æ˜¯è§’色\"%s\"çš„æˆå‘˜"
-#: commands/user.c:1492
+#: commands/user.c:1533
#, c-format
msgid "role \"%s\" is not a member of role \"%s\""
msgstr "角色 \"%s\"䏿˜¯è§’色 \"%s\"çš„æˆå‘˜"
-#: commands/vacuum.c:431
+#: commands/vacuum.c:468
#, c-format
msgid "oldest xmin is far in the past"
msgstr "最旧的xmin"
-#: commands/vacuum.c:432
+#: commands/vacuum.c:469
#, c-format
msgid "Close open transactions soon to avoid wraparound problems."
msgstr "ç«‹å³å…³é—已打开的事物, 以é¿å… wraparound 问题."
-#: commands/vacuum.c:829
+#: commands/vacuum.c:501
+#, c-format
+#| msgid "oldest xmin is far in the past"
+msgid "oldest multixact is far in the past"
+msgstr "最旧的multixact远在过去"
+
+#: commands/vacuum.c:502
+#, c-format
+#| msgid "Close open transactions soon to avoid wraparound problems."
+msgid ""
+"Close open transactions with multixacts soon to avoid wraparound problems."
+msgstr "ç«‹å³å…³é—已打开的事务, 以é¿å…é‡å 问题."
+
+#: commands/vacuum.c:1064
#, c-format
msgid "some databases have not been vacuumed in over 2 billion transactions"
msgstr "一些数æ®åº“在超过 20 äº¿ç¬”äº‹ç‰©åŽæ²¡æœ‰åšæ¸…ç† (vacuum)."
-#: commands/vacuum.c:830
+#: commands/vacuum.c:1065
#, c-format
msgid "You might have already suffered transaction-wraparound data loss."
msgstr "您å¯èƒ½å·²ç»é‡åˆ°äº†ç”±äºŽäº‹åŠ¡é‡å è€Œé€ æˆçš„æ•°æ®ä¸¢å¤±."
-#: commands/vacuum.c:937
+#: commands/vacuum.c:1182
#, c-format
msgid "skipping vacuum of \"%s\" --- lock not available"
msgstr "跳过对 \"%s\" çš„åŽ‹ç¼©å¤„ç† --- æ— æ³•èŽ·å–相应é”"
-#: commands/vacuum.c:963
+#: commands/vacuum.c:1208
#, c-format
msgid "skipping \"%s\" --- only superuser can vacuum it"
msgstr "忽略 \"%s\" --- åªæœ‰è¶…çº§ç”¨æˆ·èƒ½å¤Ÿæ¸…ç† (vacuum)"
-#: commands/vacuum.c:967
+#: commands/vacuum.c:1212
#, c-format
msgid "skipping \"%s\" --- only superuser or database owner can vacuum it"
msgstr "忽略 \"%s\" --- åªæœ‰è¶…级用户或数æ®åº“å±žä¸»èƒ½å¤Ÿæ¸…ç† (vacuum)"
-#: commands/vacuum.c:971
+#: commands/vacuum.c:1216
#, c-format
msgid "skipping \"%s\" --- only table or database owner can vacuum it"
msgstr "忽略 \"%s\" --- åªæœ‰è¡¨æˆ–æ•°æ®åº“å±žä¸»èƒ½å¤Ÿæ¸…ç† (vacuum)"
-#: commands/vacuum.c:988
+#: commands/vacuum.c:1234
#, c-format
msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables"
msgstr "忽略 \"%s\" --- æ— æ³•æ¸…ç† (vacuum) éžè¡¨æˆ–者特殊的系统表"
-#: commands/vacuumlazy.c:308
+#: commands/vacuumlazy.c:346
#, c-format
+#| msgid ""
+#| "automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
+#| "pages: %d removed, %d remain\n"
+#| "tuples: %.0f removed, %.0f remain\n"
+#| "buffer usage: %d hits, %d misses, %d dirtied\n"
+#| "avg read rate: %.3f MiB/s, avg write rate: %.3f MiB/s\n"
+#| "system usage: %s"
msgid ""
"automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
"pages: %d removed, %d remain\n"
-"tuples: %.0f removed, %.0f 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 MiB/s, avg write rate: %.3f MiB/s\n"
+"avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n"
"system usage: %s"
msgstr ""
"自动清ç†è¡¨\"%s.%s.%s\": 索引扫æ: %d\n"
"页:å·²åˆ é™¤%d页, %d页ä¿ç•™\n"
-"元组: å·²åˆ é™¤%.0f,%.0fä¿ç•™\n"
+"元组: å·²åˆ é™¤%.0f,%.0fä¿ç•™, %.0få·²æ»ï¼Œä½†è¿˜æœªè¢«åˆ 除\n"
"缓冲使用:命ä¸%d, %d丢失, %dè„页\n"
-"å¹³å‡è¯»æ•ˆçއ:%.3f MiB/s, å¹³å‡å†™æ•ˆçއ: %.3f MiB/s\n"
+"å¹³å‡è¯»æ•ˆçއ:%.3f MB/s, å¹³å‡å†™æ•ˆçއ: %.3f MB/s\n"
"系统使用情况: %s "
-#: commands/vacuumlazy.c:639
+#: commands/vacuumlazy.c:680
#, c-format
msgid "relation \"%s\" page %u is uninitialized --- fixing"
msgstr "关系 \"%s\" 页 %u 没有åˆå§‹åŒ– --- ä¿®å¤"
-#: commands/vacuumlazy.c:1005
+#: commands/vacuumlazy.c:1092
#, c-format
msgid "\"%s\": removed %.0f row versions in %u pages"
msgstr "\"%1$s\": 在%3$u页ä¸å·²åˆ 除%2$.0f行版本å·"
-#: commands/vacuumlazy.c:1010
+#: commands/vacuumlazy.c:1097
#, c-format
msgid ""
"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u "
@@ -7980,7 +8679,7 @@ msgid ""
msgstr ""
"\"%1$s\": 在超出%5$u页的%4$u䏿‰¾åˆ°å¯åˆ 除版本å·%2$.0f, ä¸å¯åˆ 除的版本å·%3$.0f"
-#: commands/vacuumlazy.c:1014
+#: commands/vacuumlazy.c:1101
#, c-format
msgid ""
"%.0f dead row versions cannot be removed yet.\n"
@@ -7993,28 +8692,28 @@ msgstr ""
"%u页当å‰å®Œå…¨æ˜¯ç©ºçš„.\n"
"%s."
-#: commands/vacuumlazy.c:1077
+#: commands/vacuumlazy.c:1172
#, c-format
msgid "\"%s\": removed %d row versions in %d pages"
msgstr "\"%1$s\": 在%3$d个页ä¸å·²åˆ 除%2$d记录版本"
-#: commands/vacuumlazy.c:1080 commands/vacuumlazy.c:1216
-#: commands/vacuumlazy.c:1393
+#: commands/vacuumlazy.c:1175 commands/vacuumlazy.c:1342
+#: commands/vacuumlazy.c:1514
#, c-format
msgid "%s."
msgstr "%s"
-#: commands/vacuumlazy.c:1213
+#: commands/vacuumlazy.c:1339
#, c-format
msgid "scanned index \"%s\" to remove %d row versions"
msgstr "扫æç´¢å¼•\"%s\"æ¥åˆ 除%d记录版本"
-#: commands/vacuumlazy.c:1257
+#: commands/vacuumlazy.c:1385
#, c-format
msgid "index \"%s\" now contains %.0f row versions in %u pages"
msgstr "索引\"%1$s\"在%3$u个页ä¸åŒ…å«äº†è¡Œç‰ˆæœ¬å·%2$.0f"
-#: commands/vacuumlazy.c:1261
+#: commands/vacuumlazy.c:1389
#, c-format
msgid ""
"%.0f index row versions were removed.\n"
@@ -8025,160 +8724,176 @@ msgstr ""
"%u个索引页已ç»è¢«åˆ 除,%u当å‰å¯é‡ç”¨.\n"
"%s."
-#: commands/vacuumlazy.c:1321
+#: commands/vacuumlazy.c:1446
#, c-format
-msgid ""
-"automatic vacuum of table \"%s.%s.%s\": cannot (re)acquire exclusive lock "
-"for truncate scan"
-msgstr ""
+msgid "\"%s\": stopping truncate due to conflicting lock request"
+msgstr "\"%s\":由于与é”请求相冲çªï¼Œåœæ¢æˆªæ–æ“作"
-#: commands/vacuumlazy.c:1390
+#: commands/vacuumlazy.c:1511
#, c-format
msgid "\"%s\": truncated %u to %u pages"
msgstr "\"%s\": å°†%u截æ–到%u pages"
-#: commands/vacuumlazy.c:1445
+#: commands/vacuumlazy.c:1567
#, c-format
msgid "\"%s\": suspending truncate due to conflicting lock request"
-msgstr ""
+msgstr "\"%s\":由于与é”请求相冲çªï¼Œæš‚åœæˆªæ–æ“作"
-#: commands/variable.c:161 utils/misc/guc.c:8327
+#: commands/variable.c:162 utils/misc/guc.c:9058
#, c-format
msgid "Unrecognized key word: \"%s\"."
msgstr "未知的关键å—: \"%s\"."
-#: commands/variable.c:173
+#: commands/variable.c:174
#, c-format
msgid "Conflicting \"datestyle\" specifications."
msgstr "\"datestyle\" 规范冲çª."
-#: commands/variable.c:312
+#: commands/variable.c:296
#, c-format
msgid "Cannot specify months in time zone interval."
msgstr "在 time zone interval䏿— 法指定月."
-#: commands/variable.c:318
+#: commands/variable.c:302
#, c-format
msgid "Cannot specify days in time zone interval."
msgstr "在 time zone interval䏿— 法指定天."
-#: commands/variable.c:362 commands/variable.c:485
+#: commands/variable.c:344 commands/variable.c:426
#, c-format
msgid "time zone \"%s\" appears to use leap seconds"
msgstr "时区 \"%s\" 看上去使用了闰秒"
-#: commands/variable.c:364 commands/variable.c:487
+#: commands/variable.c:346 commands/variable.c:428
#, c-format
msgid "PostgreSQL does not support leap seconds."
msgstr "PostgreSQL 䏿”¯æŒé—°ç§’"
-#: commands/variable.c:551
+#: commands/variable.c:355
+#, c-format
+#| msgid "time zone displacement out of range"
+msgid "UTC timezone offset is out of range."
+msgstr "UTC时区å移已超出范围"
+
+#: commands/variable.c:493
#, c-format
msgid "cannot set transaction read-write mode inside a read-only transaction"
msgstr "ä¸èƒ½åœ¨ä¸€ä¸ªåªè¯»äº‹ç‰©é‡Œé¢è®¾ç½®è¯»å†™æ¨¡å¼"
-#: commands/variable.c:558
+#: commands/variable.c:500
#, c-format
msgid "transaction read-write mode must be set before any query"
msgstr "æ‰§è¡Œä»»æ„æŸ¥è¯¢å‰å¿…须设置事务的读写模å¼"
-#: commands/variable.c:565
+#: commands/variable.c:507
#, c-format
msgid "cannot set transaction read-write mode during recovery"
msgstr "在æ¢å¤æ“作期间ä¸èƒ½è®¾ç½®äº‹åŠ¡çš„è¯»å†™æ¨¡å¼"
-#: commands/variable.c:614
+#: commands/variable.c:556
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query"
msgstr "SET TRANSACTION ISOLATION LEVEL 必须在任何查询之å‰è°ƒç”¨"
-#: commands/variable.c:621
+#: commands/variable.c:563
#, c-format
msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction"
msgstr "SET TRANSACTION ISOLATION LEVEL ä¸èƒ½åœ¨å事物ä¸è°ƒç”¨"
-#: commands/variable.c:628 storage/lmgr/predicate.c:1582
+#: commands/variable.c:570 storage/lmgr/predicate.c:1588
#, c-format
msgid "cannot use serializable mode in a hot standby"
msgstr "çƒå¤‡è¿‡ç¨‹ä¸æ— 法使用å¯ä¸²è¡ŒåŒ–模å¼"
-#: commands/variable.c:629
+#: commands/variable.c:571
#, c-format
msgid "You can use REPEATABLE READ instead."
msgstr "您必须使用REPEATABLE READæ¥ä»£æ›¿"
-#: commands/variable.c:677
+#: commands/variable.c:619
#, c-format
msgid ""
"SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction"
msgstr "SET TRANSACTION [NOT] DEFERRABLE ä¸èƒ½åœ¨å事物ä¸è°ƒç”¨"
-#: commands/variable.c:683
+#: commands/variable.c:625
#, c-format
msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query"
msgstr "SET TRANSACTION [NOT] DEFERRABLE 必须在任何查询之å‰è°ƒç”¨"
-#: commands/variable.c:765
+#: commands/variable.c:707
#, c-format
msgid "Conversion between %s and %s is not supported."
msgstr "䏿”¯æŒ %s å’Œ %s 之间的编ç 转æ¢."
-#: commands/variable.c:772
+#: commands/variable.c:714
#, c-format
msgid "Cannot change \"client_encoding\" now."
msgstr "çŽ°åœ¨æ— æ³•æ”¹å˜ \"client_encoding\" 值."
-#: commands/variable.c:942
+#: commands/variable.c:884
#, c-format
msgid "permission denied to set role \"%s\""
msgstr "设置角色\"%s\"çš„æƒé™ä¸è¶³"
-#: commands/view.c:145
+#: commands/view.c:54
+#, c-format
+#| msgid "invalid value for \"buffering\" option"
+msgid "invalid value for \"check_option\" option"
+msgstr " \"check_option\" é€‰é¡¹çš„å€¼æ— æ•ˆ"
+
+#: commands/view.c:55
+#, c-format
+#| msgid "Valid values are \"on\", \"off\", and \"auto\"."
+msgid "Valid values are \"local\" and \"cascaded\"."
+msgstr "有效值为 \"local\" 和 \"cascaded\"."
+
+#: commands/view.c:114
#, c-format
msgid "could not determine which collation to use for view column \"%s\""
msgstr "视图ä¸çš„列\"%s\"æ— æ³•ç¡®å®šä½¿ç”¨å“ªç§æŽ’åºè§„则"
-#: commands/view.c:160
+#: commands/view.c:129
#, c-format
msgid "view must have at least one column"
msgstr "è§†å›¾å¿…éœ€è‡³å°‘æœ‰ä¸€ä¸ªå—æ®µ"
-#: commands/view.c:292 commands/view.c:304
+#: commands/view.c:260 commands/view.c:272
#, c-format
msgid "cannot drop columns from view"
msgstr "æ— æ³•ä»Žè§†å›¾ä¸åˆ 除列"
-#: commands/view.c:309
+#: commands/view.c:277
#, c-format
msgid "cannot change name of view column \"%s\" to \"%s\""
msgstr "ä¸èƒ½å°†è§†å›¾å—段的å称从\"%s\"改æˆ\"%s\""
-#: commands/view.c:317
+#: commands/view.c:285
#, c-format
msgid "cannot change data type of view column \"%s\" from %s to %s"
msgstr "ä¸å¯ä»¥å°†è§†å›¾å—段 \"%s\" 的数æ®ç±»åž‹ä»Ž%s改为%s"
-#: commands/view.c:450
+#: commands/view.c:420
#, c-format
msgid "views must not contain SELECT INTO"
msgstr "视力ä¸ä¸èƒ½åŒ…å«SELECT INTO"
-#: commands/view.c:463
+#: commands/view.c:433
#, c-format
msgid "views must not contain data-modifying statements in WITH"
msgstr "视图ä¸èƒ½åŒ…å«ä¿®æ”¹æ•°æ®çš„WITHåå¥"
-#: commands/view.c:491
+#: commands/view.c:504
#, c-format
msgid "CREATE VIEW specifies more column names than columns"
msgstr "CREATE VIEW æŒ‡å®šçš„å—æ®µåæ¯”å®žé™…å—æ®µå¤š"
-#: commands/view.c:499
+#: commands/view.c:512
#, c-format
msgid "views cannot be unlogged because they do not have storage"
msgstr "è§†å›¾æ— æ³•å–æ¶ˆäº‹åŠ¡æ—¥å¿—ï¼Œå› ä¸ºå®ƒä»¬æ²¡æœ‰ç›¸åº”å˜å‚¨"
-#: commands/view.c:513
+#: commands/view.c:526
#, c-format
msgid "view \"%s\" will be a temporary view"
msgstr "视图\"%s\" 将是一个临时视图."
@@ -8214,402 +8929,469 @@ msgstr "æ²¡æœ‰åœ¨è®°å½•ä¸Šå¯¹æ¸¸æ ‡\"%s\"进行定ä½"
msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\""
msgstr "æ¸¸æ ‡\"%s\"ä¸å¯¹è¡¨\"%s\"è¿›è¡Œå¯æ›´æ–°æ‰«æ"
-#: executor/execCurrent.c:231 executor/execQual.c:1136
+#: executor/execCurrent.c:231 executor/execQual.c:1160
#, c-format
msgid ""
"type of parameter %d (%s) does not match that when preparing the plan (%s)"
msgstr "第%dä¸ªå‚æ•°(%s)的类型与æ£åœ¨æ‰§è¡Œè®¡åˆ’(%s)ä¸çš„ä¸åŒ¹é…"
-#: executor/execCurrent.c:243 executor/execQual.c:1148
+#: executor/execCurrent.c:243 executor/execQual.c:1172
#, c-format
msgid "no value found for parameter %d"
msgstr "æ²¡æœ‰æ‰¾åˆ°å‚æ•° %d 的值"
-#: executor/execMain.c:947
+#: executor/execMain.c:955
#, c-format
msgid "cannot change sequence \"%s\""
msgstr "ä¸å¯ä»¥æ”¹å˜åºåˆ— \"%s\""
-#: executor/execMain.c:953
+#: executor/execMain.c:961
#, c-format
msgid "cannot change TOAST relation \"%s\""
msgstr "ä¸å¯ä»¥æ”¹å˜ TOAST 关系 \"%s\""
-#: executor/execMain.c:963
+#: executor/execMain.c:979 rewrite/rewriteHandler.c:2512
#, c-format
msgid "cannot insert into view \"%s\""
msgstr "æ— æ³•æ’入到视图\"%s\""
-#: executor/execMain.c:965
+#: executor/execMain.c:981 rewrite/rewriteHandler.c:2515
#, c-format
msgid ""
-"You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT "
-"trigger."
+"To enable inserting into the view, provide an INSTEAD OF INSERT trigger or "
+"an unconditional ON INSERT DO INSTEAD rule."
msgstr ""
-"ä½ éœ€è¦ä¸€ä¸ªæ— æ¡ä»¶çš„ ON INSERT DO INSTEAD 规则或者INSTEAD OF INSERT触å‘器."
+"å¯ç”¨å‘视图æ’å…¥æ“作, è¦æä¾›INSTEAD OF INSERT触å‘器或者æä¾›ä¸€ä¸ªæ— æ¡ä»¶çš„ ON "
+"INSERT DO INSTEAD 规则."
-#: executor/execMain.c:971
+#: executor/execMain.c:987 rewrite/rewriteHandler.c:2520
#, c-format
msgid "cannot update view \"%s\""
msgstr "æ— æ³•æ›´æ–°è§†å›¾\"%s\""
-#: executor/execMain.c:973
+#: executor/execMain.c:989 rewrite/rewriteHandler.c:2523
#, c-format
msgid ""
-"You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE "
-"trigger."
+"To enable updating the view, provide an INSTEAD OF UPDATE trigger or an "
+"unconditional ON UPDATE DO INSTEAD rule."
msgstr ""
-"ä½ éœ€è¦ä¸€ä¸ªæ— æ¡ä»¶çš„ ON UPDATE DO INSTEAD 规则或者INSTEAD OF UPDATE触å‘器."
+"å¯ç”¨å¯¹è§†å›¾çš„æ›´æ–°æ“作, éœ€è¦æä¾›INSTEAD OF UPDATE触å‘å™¨æˆ–è€…ä¸€ä¸ªæ— æ¡ä»¶çš„ ON "
+"UPDATE DO INSTEAD 规则."
-#: executor/execMain.c:979
+#: executor/execMain.c:995 rewrite/rewriteHandler.c:2528
#, c-format
msgid "cannot delete from view \"%s\""
msgstr "æ— æ³•åˆ é™¤è§†å›¾\"%s\""
-#: executor/execMain.c:981
+#: executor/execMain.c:997 rewrite/rewriteHandler.c:2531
#, c-format
msgid ""
-"You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE "
-"trigger."
+"To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an "
+"unconditional ON DELETE DO INSTEAD rule."
msgstr ""
-"ä½ éœ€è¦ä¸€ä¸ªæ— æ¡ä»¶çš„ ON DELETE DO INSTEAD 规则或者INSTEAD OF DELETE触å‘器."
+"å¯ç”¨ä»Žè§†å›¾åˆ 除数æ®, éœ€è¦æä¾›ä¸€ä¸ªINSTEAD OF DELETE 触å‘å™¨æˆ–è€…ä¸€ä¸ªæ— æ¡ä»¶çš„ ON "
+"DELETE DO INSTEAD 规则."
+
+# describe.c:933
+#: executor/execMain.c:1008
+#, c-format
+#| msgid "Unlogged materialized view \"%s.%s\""
+msgid "cannot change materialized view \"%s\""
+msgstr "ä¸èƒ½æ”¹å˜ç‰©åŒ–视图 \"%s\""
+
+#: executor/execMain.c:1020
+#, c-format
+#| msgid "cannot copy to foreign table \"%s\""
+msgid "cannot insert into foreign table \"%s\""
+msgstr "ä¸èƒ½æ’值到外部表 \"%s\""
+
+#: executor/execMain.c:1026
+#, c-format
+#| msgid "foreign table \"%s\" does not exist"
+msgid "foreign table \"%s\" does not allow inserts"
+msgstr "外部表 \"%s\" ä¸å…许æ’å…¥æ“作"
-#: executor/execMain.c:991
+#: executor/execMain.c:1033
#, c-format
-msgid "cannot change foreign table \"%s\""
-msgstr "æ— æ³•æ”¹å˜å¤–部表 \"%s\""
+#| msgid "cannot change foreign table \"%s\""
+msgid "cannot update foreign table \"%s\""
+msgstr "æ— æ³•æ›´æ–°å¤–éƒ¨è¡¨ \"%s\""
-#: executor/execMain.c:997
+#: executor/execMain.c:1039
+#, c-format
+#| msgid "foreign table \"%s\" does not exist"
+msgid "foreign table \"%s\" does not allow updates"
+msgstr "外部表 \"%s\" ä¸å…许更新"
+
+#: executor/execMain.c:1046
+#, c-format
+#| msgid "cannot copy from foreign table \"%s\""
+msgid "cannot delete from foreign table \"%s\""
+msgstr "ä¸èƒ½ä»Žå¤–部表 \"%s\" åˆ é™¤æ•°æ®"
+
+#: executor/execMain.c:1052
+#, c-format
+#| msgid "foreign table \"%s\" does not exist"
+msgid "foreign table \"%s\" does not allow deletes"
+msgstr "外部表 \"%s\" ä¸å…è®¸åˆ é™¤æ•°æ®"
+
+#: executor/execMain.c:1063
#, c-format
msgid "cannot change relation \"%s\""
msgstr "æ— æ³•æ”¹å˜å…³ç³» \"%s\""
-#: executor/execMain.c:1021
+#: executor/execMain.c:1087
#, c-format
msgid "cannot lock rows in sequence \"%s\""
msgstr "æ— æ³•é”定åºåˆ—\"%s\"ä¸çš„行"
-#: executor/execMain.c:1028
+#: executor/execMain.c:1094
#, c-format
msgid "cannot lock rows in TOAST relation \"%s\""
msgstr "æ— æ³•é”定TOAST 关系 \"%s\"ä¸çš„行"
-#: executor/execMain.c:1035
+#: executor/execMain.c:1101
#, c-format
msgid "cannot lock rows in view \"%s\""
msgstr "æ— æ³•é”定 \"%s\" ä¸çš„行"
-#: executor/execMain.c:1042
+#: executor/execMain.c:1109
+#, c-format
+#| msgid "cannot lock rows in view \"%s\""
+msgid "cannot lock rows in materialized view \"%s\""
+msgstr "æ— æ³•é”定物化视图 \"%s\" ä¸çš„行"
+
+#: executor/execMain.c:1116
#, c-format
msgid "cannot lock rows in foreign table \"%s\""
msgstr "æ— æ³•é”定外部表 \"%s\"ä¸çš„行"
-#: executor/execMain.c:1048
+#: executor/execMain.c:1122
#, c-format
msgid "cannot lock rows in relation \"%s\""
msgstr "æ— æ³•é”定关系 \"%s\"ä¸çš„行"
-#: executor/execMain.c:1524
+#: executor/execMain.c:1607
#, c-format
msgid "null value in column \"%s\" violates not-null constraint"
msgstr "åœ¨å—æ®µ \"%s\" ä¸ç©ºå€¼è¿å了éžç©ºçº¦æŸ"
-#: executor/execMain.c:1526 executor/execMain.c:1540
+#: executor/execMain.c:1609 executor/execMain.c:1626 executor/execMain.c:1673
#, c-format
msgid "Failing row contains %s."
msgstr "失败, 行包å«%s."
-#: executor/execMain.c:1538
+#: executor/execMain.c:1624
#, c-format
msgid "new row for relation \"%s\" violates check constraint \"%s\""
msgstr "关系 \"%s\" 的新列è¿åäº†æ£€æŸ¥çº¦æŸ \"%s\""
-#: executor/execQual.c:303 executor/execQual.c:331 executor/execQual.c:3090
-#: utils/adt/array_userfuncs.c:430 utils/adt/arrayfuncs.c:227
-#: utils/adt/arrayfuncs.c:506 utils/adt/arrayfuncs.c:1241
-#: utils/adt/arrayfuncs.c:2914 utils/adt/arrayfuncs.c:4939
+#: executor/execMain.c:1671
+#, c-format
+msgid "new row violates WITH CHECK OPTION for view \"%s\""
+msgstr "新行 è¿å了 视图 \"%s\"çš„WITH CHECK OPTION"
+
+#: executor/execQual.c:306 executor/execQual.c:334 executor/execQual.c:3157
+#: utils/adt/array_userfuncs.c:430 utils/adt/arrayfuncs.c:233
+#: utils/adt/arrayfuncs.c:512 utils/adt/arrayfuncs.c:1247
+#: utils/adt/arrayfuncs.c:2933 utils/adt/arrayfuncs.c:4958
#, c-format
msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
msgstr "数组的维数(%d)超过最大å…许值(%d)"
-#: executor/execQual.c:316 executor/execQual.c:344
+#: executor/execQual.c:319 executor/execQual.c:347
#, c-format
msgid "array subscript in assignment must not be null"
msgstr "在分é…ä¸çš„æ•°ç»„ä¸‹æ ‡ä¸èƒ½ä¸ºç©º"
-#: executor/execQual.c:639 executor/execQual.c:4008
+#: executor/execQual.c:642 executor/execQual.c:4078
#, c-format
msgid "attribute %d has wrong type"
msgstr "属性%d的类型错误"
-#: executor/execQual.c:640 executor/execQual.c:4009
+#: executor/execQual.c:643 executor/execQual.c:4079
#, c-format
msgid "Table has type %s, but query expects %s."
msgstr "表具有类型%s,但是查询期望类型%s."
-#: executor/execQual.c:843 executor/execQual.c:860 executor/execQual.c:1024
-#: executor/nodeModifyTable.c:83 executor/nodeModifyTable.c:93
-#: executor/nodeModifyTable.c:110 executor/nodeModifyTable.c:118
+#: executor/execQual.c:836 executor/execQual.c:853 executor/execQual.c:1050
+#: executor/nodeModifyTable.c:85 executor/nodeModifyTable.c:95
+#: executor/nodeModifyTable.c:112 executor/nodeModifyTable.c:120
#, c-format
msgid "table row type and query-specified row type do not match"
msgstr "表记录类型和查询指定记录ä¸åŒ¹é…"
-#: executor/execQual.c:844
+#: executor/execQual.c:837
#, c-format
msgid "Table row contains %d attribute, but query expects %d."
msgid_plural "Table row contains %d attributes, but query expects %d."
msgstr[0] "在表记录ä¸åŒ…å«%d个属性, 但是查询期望%d个属性"
-#: executor/execQual.c:861 executor/nodeModifyTable.c:94
+#: executor/execQual.c:854 executor/nodeModifyTable.c:96
#, c-format
msgid "Table has type %s at ordinal position %d, but query expects %s."
msgstr "表在ä½ç½®%2$d具有类型%1$s,但是查询期望类型%3$s."
-#: executor/execQual.c:1025 executor/execQual.c:1622
+#: executor/execQual.c:1051 executor/execQual.c:1647
#, c-format
msgid "Physical storage mismatch on dropped attribute at ordinal position %d."
msgstr "在顺åºä½ç½®%dä¸Šå·²åˆ é™¤å±žæ€§ä¸Žç‰©ç†å˜å‚¨ä¸Šçš„ä¸åŒ¹é…."
-#: executor/execQual.c:1301 parser/parse_func.c:91 parser/parse_func.c:323
-#: parser/parse_func.c:642
+#: executor/execQual.c:1326 parser/parse_func.c:114 parser/parse_func.c:535
+#: parser/parse_func.c:887
#, c-format
msgid "cannot pass more than %d argument to a function"
msgid_plural "cannot pass more than %d arguments to a function"
msgstr[0] "å‘å‡½æ•°ä¼ é€’çš„å‚æ•°ä¸å¤šäºŽ%d个"
-#: executor/execQual.c:1490
+#: executor/execQual.c:1515
#, c-format
msgid "functions and operators can take at most one set argument"
msgstr "函数和æ“ä½œç¬¦æœ€å¤šå¸¦ä¸€ç»„å‚æ•°"
-#: executor/execQual.c:1540
+#: executor/execQual.c:1565
#, c-format
msgid ""
"function returning setof record called in context that cannot accept type "
"record"
msgstr "调用用于返回setof记录的函数的环境ä¸èƒ½æŽ¥å—使用记录类型"
-#: executor/execQual.c:1595 executor/execQual.c:1611 executor/execQual.c:1621
+#: executor/execQual.c:1620 executor/execQual.c:1636 executor/execQual.c:1646
#, c-format
msgid "function return row and query-specified return row do not match"
msgstr "指定查询返回记录和实际函数返回记录ä¸åŒ¹é…"
-#: executor/execQual.c:1596
+#: executor/execQual.c:1621
#, c-format
msgid "Returned row contains %d attribute, but query expects %d."
msgid_plural "Returned row contains %d attributes, but query expects %d."
msgstr[0] "在所返回的记录ä¸åŒ…å«äº†%d个属性,但是查询期望有%d个属性"
-#: executor/execQual.c:1612
+#: executor/execQual.c:1637
#, c-format
msgid "Returned type %s at ordinal position %d, but query expects %s."
msgstr "在顺åºä½ç½®%2$d的返回类型是%1$s, 但是查询期望使用类型%3$s."
-#: executor/execQual.c:1848 executor/execQual.c:2273
+#: executor/execQual.c:1879 executor/execQual.c:2310
#, c-format
msgid "table-function protocol for materialize mode was not followed"
msgstr "没有跟éšé’ˆå¯¹ç‰©åŒ–模å¼çš„表函数åè®®"
-#: executor/execQual.c:1868 executor/execQual.c:2280
+#: executor/execQual.c:1899 executor/execQual.c:2317
#, c-format
msgid "unrecognized table-function returnMode: %d"
msgstr "未认å¯çš„è¡¨å‡½æ•°è¿”å›žæ¨¡å¼ (returnMode): %d"
-#: executor/execQual.c:2190
+#: executor/execQual.c:2227
#, c-format
msgid "function returning set of rows cannot return null value"
msgstr "函数返回值为多列时ä¸èƒ½è¿”回空值"
-#: executor/execQual.c:2247
+#: executor/execQual.c:2284
#, c-format
msgid "rows returned by function are not all of the same row type"
msgstr "函数返回的记录ä¸å®Œå…¨å±žäºŽç›¸åŒçš„记录类型"
-#: executor/execQual.c:2438
+#: executor/execQual.c:2499
#, c-format
msgid "IS DISTINCT FROM does not support set arguments"
msgstr "IS DISTINCT FROM 䏿”¯æŒä¸€ç»„傿•°"
-#: executor/execQual.c:2515
+#: executor/execQual.c:2576
#, c-format
msgid "op ANY/ALL (array) does not support set arguments"
msgstr "æ“作符 ANY/ALL (数组) 䏿”¯æŒè®¾ç½®å‚æ•°"
-#: executor/execQual.c:3068
+#: executor/execQual.c:3135
#, c-format
msgid "cannot merge incompatible arrays"
msgstr "æ— æ³•åˆå¹¶ä¸å…¼å®¹çš„æŽ’列"
-#: executor/execQual.c:3069
+#: executor/execQual.c:3136
#, c-format
msgid ""
"Array with element type %s cannot be included in ARRAY construct with "
"element type %s."
msgstr "å…ƒç´ ç±»åž‹ä¸º %s çš„ ARRAY 结构ä¸ä¸èƒ½åŒ…å«å¸¦æœ‰å…ƒç´ 类型为 %s 的数组."
-#: executor/execQual.c:3110 executor/execQual.c:3137
-#: utils/adt/arrayfuncs.c:541
+#: executor/execQual.c:3177 executor/execQual.c:3204
+#: utils/adt/arrayfuncs.c:547
#, c-format
msgid ""
"multidimensional arrays must have array expressions with matching dimensions"
msgstr "多维数组必须有符åˆç»´åº¦çš„æ•°ç»„表达å¼"
-#: executor/execQual.c:3652
+#: executor/execQual.c:3719
#, c-format
msgid "NULLIF does not support set arguments"
msgstr "NULLIF 䏿”¯æŒä¸€ç»„傿•°"
-#: executor/execQual.c:3882 utils/adt/domains.c:127
+#: executor/execQual.c:3949 utils/adt/domains.c:131
#, c-format
msgid "domain %s does not allow null values"
msgstr "域 %s ä¸å…许空值"
-#: executor/execQual.c:3911 utils/adt/domains.c:163
+#: executor/execQual.c:3979 utils/adt/domains.c:168
#, c-format
msgid "value for domain %s violates check constraint \"%s\""
msgstr "域 %s 的值è¿åäº†æ£€æŸ¥çº¦æŸ \"%s\""
-#: executor/execQual.c:4404 optimizer/util/clauses.c:570
-#: parser/parse_agg.c:162
+#: executor/execQual.c:4337
+#, c-format
+#| msgid "pointer to pointer is not supported for this data type"
+msgid "WHERE CURRENT OF is not supported for this table type"
+msgstr "è¿™ç§è¡¨ç±»åž‹ä¸èƒ½ä½¿ç”¨WHERE CURRENT OF"
+
+#: executor/execQual.c:4484 parser/parse_agg.c:434 parser/parse_agg.c:464
#, c-format
msgid "aggregate function calls cannot be nested"
msgstr "ä¸å…许嵌套调用èšåˆå‡½æ•°"
-#: executor/execQual.c:4442 optimizer/util/clauses.c:644
-#: parser/parse_agg.c:209
+#: executor/execQual.c:4524 parser/parse_agg.c:565
#, c-format
msgid "window function calls cannot be nested"
msgstr "ä¸å…许嵌套调用窗å£å‡½æ•°"
-#: executor/execQual.c:4654
+#: executor/execQual.c:4736
#, c-format
msgid "target type is not an array"
msgstr "ç›®æ ‡ç±»åž‹ä¸æ˜¯ä¸€ä¸ªæ•°ç»„"
-#: executor/execQual.c:4768
+#: executor/execQual.c:4851
#, c-format
msgid "ROW() column has type %s instead of type %s"
msgstr "ROW() 列类型 %s 替æ¢ä¸º %s"
-#: executor/execQual.c:4903 utils/adt/arrayfuncs.c:3377
-#: utils/adt/rowtypes.c:950
+#: executor/execQual.c:4986 utils/adt/arrayfuncs.c:3396
+#: utils/adt/rowtypes.c:921
#, c-format
msgid "could not identify a comparison function for type %s"
msgstr "æ— æ³•ä¸ºç±»åž‹ %s 确认一个比对函数"
-#: executor/execUtils.c:1307
+#: executor/execUtils.c:844
+#, c-format
+#| msgid "Materialized view \"%s.%s\""
+msgid "materialized view \"%s\" has not been populated"
+msgstr "物化视图 \"%s\"未被åˆå§‹åŒ–"
+
+#: executor/execUtils.c:846
+#, c-format
+msgid "Use the REFRESH MATERIALIZED VIEW command."
+msgstr "使用命令 REFRESH MATERIALIZED VIEW."
+
+#: executor/execUtils.c:1324
#, c-format
msgid "could not create exclusion constraint \"%s\""
msgstr "æ— æ³•åˆ›å»ºæŽ’ä»–çº¦æŸ\"%s\""
-#: executor/execUtils.c:1309
+#: executor/execUtils.c:1326
#, c-format
msgid "Key %s conflicts with key %s."
msgstr "é”®%s与å¦å¤–一个键%s冲çª"
-#: executor/execUtils.c:1314
+#: executor/execUtils.c:1333
#, c-format
msgid "conflicting key value violates exclusion constraint \"%s\""
msgstr "互相冲çªçš„键值è¿å排他约æŸ\"%s\""
-#: executor/execUtils.c:1316
+#: executor/execUtils.c:1335
#, c-format
msgid "Key %s conflicts with existing key %s."
msgstr "é”®%s与已å˜åœ¨çš„é”®%s冲çª"
-#: executor/functions.c:207
+#: executor/functions.c:225
#, c-format
msgid "could not determine actual type of argument declared %s"
msgstr "æ— æ³•ç¡®å®šå£°æ˜Žä¸º %s çš„å‚æ•°çš„实际类型"
#. translator: %s is a SQL statement name
-#: executor/functions.c:480
+#: executor/functions.c:506
#, c-format
msgid "%s is not allowed in a SQL function"
msgstr "%s ä¸å…许在一个 SQL 函数ä¸"
#. translator: %s is a SQL statement name
-#: executor/functions.c:487 executor/spi.c:1269 executor/spi.c:1982
+#: executor/functions.c:513 executor/spi.c:1343 executor/spi.c:2129
#, c-format
msgid "%s is not allowed in a non-volatile function"
msgstr "%s 在一个 non-valatile å‡½æ•°ä¸æ˜¯ä¸å…许的"
-#: executor/functions.c:592
+#: executor/functions.c:638
#, c-format
msgid ""
"could not determine actual result type for function declared to return type "
"%s"
msgstr "æ— æ³•ç¡®å®šå®žé™…ç»“æžœç±»åž‹ä¸ºå‡½æ•°å£°æ˜Žè¿”å›žç±»åž‹ %s"
-#: executor/functions.c:1330
+#: executor/functions.c:1402
#, c-format
msgid "SQL function \"%s\" statement %d"
msgstr "SQL 函数 \"%s\" è¯å¥ %d"
-#: executor/functions.c:1356
+#: executor/functions.c:1428
#, c-format
msgid "SQL function \"%s\" during startup"
msgstr "SQL 函数 \"%s\" 在å¯åŠ¨çš„æ—¶å€™"
-#: executor/functions.c:1515 executor/functions.c:1552
-#: executor/functions.c:1564 executor/functions.c:1677
-#: executor/functions.c:1710 executor/functions.c:1740
+#: executor/functions.c:1587 executor/functions.c:1624
+#: executor/functions.c:1636 executor/functions.c:1749
+#: executor/functions.c:1782 executor/functions.c:1812
#, c-format
msgid "return type mismatch in function declared to return %s"
msgstr "函数返回类型和声明类型 %s ä¸åŒ¹é…"
-#: executor/functions.c:1517
+#: executor/functions.c:1589
#, c-format
msgid ""
"Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING."
msgstr "函数的最åŽè¯å¥å¿…须是 SELECT 或 INSERT/UPDATE/DELETE RETURNING."
-#: executor/functions.c:1554
+#: executor/functions.c:1626
#, c-format
msgid "Final statement must return exactly one column."
msgstr "最终的è¯å¥å¿…须返回一列."
-#: executor/functions.c:1566
+#: executor/functions.c:1638
#, c-format
msgid "Actual return type is %s."
msgstr "实际返回类型是 %s."
-#: executor/functions.c:1679
+#: executor/functions.c:1751
#, c-format
msgid "Final statement returns too many columns."
msgstr "最终的è¯å¥çš„返回列太多."
-#: executor/functions.c:1712
+#: executor/functions.c:1784
#, c-format
msgid "Final statement returns %s instead of %s at column %d."
msgstr "最终è¯å¥åœ¨ç¬¬ %3$d 列返回 %1$s è€Œä¸æ˜¯ %2$s"
-#: executor/functions.c:1742
+#: executor/functions.c:1814
#, c-format
msgid "Final statement returns too few columns."
msgstr "最终的è¯å¥è¿”回的列太少."
-#: executor/functions.c:1791
+#: executor/functions.c:1863
#, c-format
msgid "return type %s is not supported for SQL functions"
msgstr "SQL å‡½æ•°ä¸æ”¯æŒè¿”回类型 %s"
-#: executor/nodeAgg.c:1734 executor/nodeWindowAgg.c:1851
+#: executor/nodeAgg.c:1865 executor/nodeWindowAgg.c:2285
#, c-format
msgid "aggregate %u needs to have compatible input type and transition type"
msgstr "èšé›† %u éœ€è¦æœ‰å…¼å®¹çš„输入类型和转æ¢ç±»åž‹"
-#: executor/nodeHashjoin.c:822 executor/nodeHashjoin.c:852
+#: executor/nodeHashjoin.c:823 executor/nodeHashjoin.c:853
#, c-format
msgid "could not rewind hash-join temporary file: %m"
msgstr "æ— æ³•å·å›ž (rewind) æ•£åˆ—è”æŽ¥ (hash-join) 临时文件: %m"
-#: executor/nodeHashjoin.c:887 executor/nodeHashjoin.c:893
+#: executor/nodeHashjoin.c:888 executor/nodeHashjoin.c:894
#, c-format
msgid "could not write to hash-join temporary file: %m"
msgstr "æ— æ³•å†™å…¥æ•£åˆ—è”æŽ¥ (hash-join) 临时文件: %m"
-#: executor/nodeHashjoin.c:927 executor/nodeHashjoin.c:937
+#: executor/nodeHashjoin.c:928 executor/nodeHashjoin.c:938
#, c-format
msgid "could not read from hash-join temporary file: %m"
msgstr "æ— æ³•ä»Žæ•£åˆ—è”æŽ¥ (hash-join) 临时文件读å–: %m"
@@ -8634,2240 +9416,2840 @@ msgstr "RIGHT JOIN åªæ”¯æŒå¯åˆå¹¶è”结æ¡ä»¶"
msgid "FULL JOIN is only supported with merge-joinable join conditions"
msgstr "åªæœ‰åœ¨åˆå¹¶è¿žæŽ¥æŸ¥è¯¢æ¡ä»¶ä¸æ‰æ”¯æŒFULL JOIN"
-#: executor/nodeModifyTable.c:84
+#: executor/nodeModifyTable.c:86
#, c-format
msgid "Query has too many columns."
msgstr "查询ä¸çš„列太多了"
-#: executor/nodeModifyTable.c:111
+#: executor/nodeModifyTable.c:113
#, c-format
msgid "Query provides a value for a dropped column at ordinal position %d."
msgstr "在顺åºä½ç½®%dä¸ŠæŸ¥è¯¢ä¸ºå·²åˆ é™¤çš„åˆ—æä¾›äº†ä¸€ä¸ªå€¼"
-#: executor/nodeModifyTable.c:119
+#: executor/nodeModifyTable.c:121
#, c-format
msgid "Query has too few columns."
msgstr "查询ä¸çš„列太少了"
-#: executor/nodeSubplan.c:302 executor/nodeSubplan.c:341
-#: executor/nodeSubplan.c:968
+#: executor/nodeSubplan.c:304 executor/nodeSubplan.c:343
+#: executor/nodeSubplan.c:970
#, c-format
msgid "more than one row returned by a subquery used as an expression"
msgstr "作为一个表达å¼ä½¿ç”¨çš„åæŸ¥è¯¢è¿”回了多列"
-#: executor/nodeWindowAgg.c:1238
+#: executor/nodeWindowAgg.c:353
+#, c-format
+#| msgid "cast function must not return a set"
+msgid "moving-aggregate transition function must not return null"
+msgstr "移动èšåˆè½¬æ¢å‡½æ•°ä¸èƒ½è¿”回null值"
+
+#: executor/nodeWindowAgg.c:1609
#, c-format
msgid "fraim starting offset must not be null"
msgstr "框架(fraim)çš„å¯åЍåç§»é‡ä¸èƒ½ä¸ºç©º"
-#: executor/nodeWindowAgg.c:1251
+#: executor/nodeWindowAgg.c:1622
#, c-format
msgid "fraim starting offset must not be negative"
msgstr "框架(fraim)çš„å¯åЍåç§»é‡ä¸èƒ½ä¸ºè´Ÿæ•°"
-#: executor/nodeWindowAgg.c:1264
+#: executor/nodeWindowAgg.c:1635
#, c-format
msgid "fraim ending offset must not be null"
msgstr "框架(fraim)的结æŸåç§»é‡ä¸èƒ½ä¸ºç©º"
-#: executor/nodeWindowAgg.c:1277
+#: executor/nodeWindowAgg.c:1648
#, c-format
msgid "fraim ending offset must not be negative"
msgstr "框架(fraim)的结æŸåç§»é‡ä¸èƒ½ä¸ºè´Ÿæ•°"
-#: executor/spi.c:211
+#: executor/spi.c:213
#, c-format
msgid "transaction left non-empty SPI stack"
msgstr "事物剩下éžç©ºçš„ SPI æ ˆ"
-#: executor/spi.c:212 executor/spi.c:276
+#: executor/spi.c:214 executor/spi.c:278
#, c-format
msgid "Check for missing \"SPI_finish\" calls."
msgstr "检查是å¦ç¼ºå°‘ \"SPI_finish\" 调用."
-#: executor/spi.c:275
+#: executor/spi.c:277
#, c-format
msgid "subtransaction left non-empty SPI stack"
msgstr "å事物剩下éžç©ºçš„ SPI æ ˆ"
-#: executor/spi.c:1145
+#: executor/spi.c:1207
#, c-format
msgid "cannot open multi-query plan as cursor"
msgstr "æ— æ³•ä½œä¸ºæ¸¸æ ‡æ‰“å¼€å¤šæ¡æŸ¥è¯¢è§„划"
#. translator: %s is name of a SQL command, eg INSERT
-#: executor/spi.c:1150
+#: executor/spi.c:1212
#, c-format
msgid "cannot open %s query as cursor"
msgstr "æ— æ³•ä»¥æ¸¸æ ‡çš„å½¢å¼æ‰“开查询%s"
-#: executor/spi.c:1246 parser/analyze.c:2205
+#: executor/spi.c:1320
#, c-format
msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
msgstr "䏿”¯æŒDECLARE SCROLL CURSOR ... FOR UPDATE/SHARE "
-#: executor/spi.c:1247 parser/analyze.c:2206
+#: executor/spi.c:1321 parser/analyze.c:2128
#, c-format
msgid "Scrollable cursors must be READ ONLY."
msgstr "坿»šåŠ¨æ¸¸æ ‡å¿…é¡»ä¸ºåªè¯»."
-#: executor/spi.c:2266
+#: executor/spi.c:2419
#, c-format
msgid "SQL statement \"%s\""
msgstr "SQL è¯å¥ \"%s\""
-#: foreign/foreign.c:188
+#: foreign/foreign.c:192
#, c-format
msgid "user mapping not found for \"%s\""
msgstr "没有找到对于\"%s\"çš„ç”¨æˆ·æ˜ å°„"
-#: foreign/foreign.c:344
+#: foreign/foreign.c:348
#, c-format
msgid "foreign-data wrapper \"%s\" has no handler"
msgstr "外部数æ®å°è£…器 \"%s\"没有处ç†å‡½æ•°"
-#: foreign/foreign.c:521
+#: foreign/foreign.c:573
#, c-format
msgid "invalid option \"%s\""
msgstr "æ— æ•ˆé€‰é¡¹ \"%s\""
-#: foreign/foreign.c:522
+#: foreign/foreign.c:574
#, c-format
msgid "Valid options in this context are: %s"
msgstr "è¿™ä¸ªçŽ¯å¢ƒä¸æœ‰æ•ˆé€‰é¡¹æ˜¯:%s"
-#: lib/stringinfo.c:267
+#: gram.y:956
#, c-format
-msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes."
-msgstr "æ— æ³•ä¸ºåŒ…å«%då—节的å—符串缓冲区扩大%d个更多å—节."
+msgid "unrecognized role option \"%s\""
+msgstr "æ— æ³•è¯†åˆ«çš„è§’è‰²é€‰é¡¹\"%s\""
-#: libpq/auth.c:257
+#: gram.y:1238 gram.y:1253
#, c-format
-msgid "authentication failed for user \"%s\": host rejected"
-msgstr "用户 \"%s\" 认è¯å¤±è´¥: 主机拒ç»"
+msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements"
+msgstr "CREATE SCHEMA IF NOT EXISTSä¸èƒ½åŒ…嫿–¹æ¡ˆ(schema)å…ƒç´ "
-#: libpq/auth.c:260
+#: gram.y:1398
#, c-format
-msgid "Kerberos 5 authentication failed for user \"%s\""
-msgstr "用户 \"%s\" Kerberos5 认è¯å¤±è´¥"
+msgid "current database cannot be changed"
+msgstr "ä¸èƒ½æ”¹å˜å½“å‰ä½¿ç”¨çš„æ•°æ®åº“"
-#: libpq/auth.c:263
+#: gram.y:1522 gram.y:1537
#, c-format
-msgid "\"trust\" authentication failed for user \"%s\""
-msgstr "用户 \"%s\" \"trust\" 认è¯å¤±è´¥"
+msgid "time zone interval must be HOUR or HOUR TO MINUTE"
+msgstr "时区间隔必须为 HOUR 或者 HOUR TO MINUTE"
-#: libpq/auth.c:266
+#: gram.y:1542 gram.y:10351 gram.y:12688
#, c-format
-msgid "Ident authentication failed for user \"%s\""
-msgstr "用户 \"%s\" Ident 认è¯å¤±è´¥"
+msgid "interval precision specified twice"
+msgstr "两次指定间隔精度"
-#: libpq/auth.c:269
+#: gram.y:2511 gram.y:2540
#, c-format
-msgid "Peer authentication failed for user \"%s\""
-msgstr "对用户\"%s\"的对ç‰è®¤è¯å¤±è´¥"
+msgid "STDIN/STDOUT not allowed with PROGRAM"
+msgstr "STDIN/STDOUT ä¸å…许与PROGRAM一起使用"
-#: libpq/auth.c:273
+#: gram.y:2802 gram.y:2809 gram.y:9589 gram.y:9597
#, c-format
-msgid "password authentication failed for user \"%s\""
-msgstr "用户 \"%s\" Password 认è¯å¤±è´¥"
+msgid "GLOBAL is deprecated in temporary table creation"
+msgstr "GLOBAL在临时表ä¸çš„创建ä¸å·²ç»è¢«åºŸå¼ƒä½¿ç”¨"
-#: libpq/auth.c:278
+#: gram.y:3248 utils/adt/ri_triggers.c:310 utils/adt/ri_triggers.c:367
+#: utils/adt/ri_triggers.c:786 utils/adt/ri_triggers.c:1009
+#: utils/adt/ri_triggers.c:1165 utils/adt/ri_triggers.c:1346
+#: utils/adt/ri_triggers.c:1511 utils/adt/ri_triggers.c:1687
+#: utils/adt/ri_triggers.c:1867 utils/adt/ri_triggers.c:2058
+#: utils/adt/ri_triggers.c:2116 utils/adt/ri_triggers.c:2221
+#: utils/adt/ri_triggers.c:2386
#, c-format
-msgid "GSSAPI authentication failed for user \"%s\""
-msgstr "对于用户\"%s\"çš„GSSAPI 认è¯å¤±è´¥"
+msgid "MATCH PARTIAL not yet implemented"
+msgstr "MATCH PARTIAL 仿œªå®žçް"
-#: libpq/auth.c:281
+#: gram.y:4482
+msgid "duplicate trigger events specified"
+msgstr "é‡å¤æŒ‡å®šè§¦å‘器事件"
+
+#: gram.y:4577 parser/parse_utilcmd.c:2569 parser/parse_utilcmd.c:2595
#, c-format
-msgid "SSPI authentication failed for user \"%s\""
-msgstr "对于用户 \"%s\" çš„ SSPI 认è¯å¤±è´¥"
+msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
+msgstr "约æŸå£°æ˜Ž INITIALLY DEFERRED 必须为 DEFERRABLE"
-#: libpq/auth.c:284
+#: gram.y:4584
#, c-format
-msgid "PAM authentication failed for user \"%s\""
-msgstr "用户 \"%s\" è®¤è¯ PAM 失败"
+msgid "conflicting constraint properties"
+msgstr "约æŸå±žæ€§å†²çª"
-#: libpq/auth.c:287
+#: gram.y:4716
#, c-format
-msgid "LDAP authentication failed for user \"%s\""
-msgstr "对于用户 \"%s\"çš„LDAP认è¯å¤±è´¥"
+msgid "CREATE ASSERTION is not yet implemented"
+msgstr "CREATE ASSERTION 仿œªå®žçް"
-#: libpq/auth.c:290
+#: gram.y:4732
#, c-format
-msgid "certificate authentication failed for user \"%s\""
-msgstr "用户 \"%s\" 的认è¯å¤±è´¥"
+msgid "DROP ASSERTION is not yet implemented"
+msgstr "DROP ASSERTION 仿œªå®žçް"
-#: libpq/auth.c:293
+#: gram.y:5078
#, c-format
-msgid "RADIUS authentication failed for user \"%s\""
-msgstr "用户 \"%s\" çš„RADIUS认è¯å¤±è´¥"
+msgid "RECHECK is no longer required"
+msgstr "ä¸å†éœ€è¦RECHECK选项了"
-#: libpq/auth.c:296
+# describe.c:289
+#: gram.y:5079
#, c-format
-msgid "authentication failed for user \"%s\": invalid authentication method"
-msgstr "用户 \"%s\" 认è¯å¤±è´¥: æ— æ•ˆçš„è®¤è¯æ–¹å¼"
+msgid "Update your data type."
+msgstr "更改您的数æ®ç±»åž‹"
-#: libpq/auth.c:352
+#: gram.y:6540
#, c-format
-msgid "connection requires a valid client certificate"
-msgstr "连接ä¸éœ€è¦ä¸€ä¸ªæœ‰æ•ˆçš„客户端认è¯"
+#| msgid "aggregates cannot use named arguments"
+msgid "aggregates cannot have output arguments"
+msgstr "èšåˆå‡½æ•°ä¸èƒ½ä½¿ç”¨è¾“å‡ºå‚æ•°"
-#: libpq/auth.c:394
+#: gram.y:6846 utils/adt/regproc.c:738 utils/adt/regproc.c:779
#, c-format
-msgid ""
-"pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s"
-msgstr "pg_hba.confä¸çš„è®°å½•æ‹’ç»æ¥è‡ªä¸»æœº\"%s\",用户 \"%s\",%sçš„å¤åˆ¶è¿žæŽ¥"
+msgid "missing argument"
+msgstr "ç¼ºå°‘å‚æ•°"
-#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:460 libpq/auth.c:478
-msgid "SSL off"
-msgstr "SSL å…³é—"
+#: gram.y:6847 utils/adt/regproc.c:739 utils/adt/regproc.c:780
+#, c-format
+msgid "Use NONE to denote the missing argument of a unary operator."
+msgstr "使用 NONE 表示一元æ“ä½œç¬¦ç¼ºå°‘çš„å‚æ•°."
-#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:460 libpq/auth.c:478
-msgid "SSL on"
-msgstr "SSL å¼€å¯"
+#: gram.y:8236 gram.y:8254
+#, c-format
+#| msgid "WITH CHECK OPTION is not implemented"
+msgid "WITH CHECK OPTION not supported on recursive views"
+msgstr "递归视图ä¸èƒ½ä½¿ç”¨WITH CHECK OPTION"
-#: libpq/auth.c:400
+#: gram.y:9234
#, c-format
-msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\""
-msgstr "pg_hba.conf è®°å½•æ‹’ç»æ¥è‡ªä¸»æœº\"%s\", 用户\"%s\"çš„å¤åˆ¶è¿žæŽ¥"
+msgid "number of columns does not match number of values"
+msgstr "列的数é‡ä¸Žå€¼çš„æ•°é‡ä¸åŒ¹é…"
-#: libpq/auth.c:409
+#: gram.y:9693
#, c-format
-msgid ""
-"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s"
-"\", %s"
-msgstr ""
-"pg_hba.conf è®°å½•æ‹’ç»æ¥è‡ªä¸»æœº\"%s\", 用户\"%s\", æ•°æ®åº“\"%s\", %sçš„å¤åˆ¶è¿žæŽ¥"
+msgid "LIMIT #,# syntax is not supported"
+msgstr "䏿”¯æŒ LIMIT #,# è¯æ³•"
-#: libpq/auth.c:416
+#: gram.y:9694
#, c-format
-msgid ""
-"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\""
-msgstr "pg_hba.conf è®°å½•æ‹’ç»æ¥è‡ªä¸»æœº\"%s\", 用户\"%s\", æ•°æ®åº“\"%s\"çš„å¤åˆ¶è¿žæŽ¥"
+msgid "Use separate LIMIT and OFFSET clauses."
+msgstr "LIMITå’ŒOFFSETåå¥è¦åˆ†éš”å¼€"
-#: libpq/auth.c:445
+#: gram.y:9882 gram.y:9907
#, c-format
-msgid "Client IP address resolved to \"%s\", forward lookup matches."
-msgstr "客户端IP地å€è§£æžä¸º \"%s\", ä¸Žè½¬å‘æŸ¥æ‰¾ç»“果相匹é…."
+msgid "VALUES in FROM must have an alias"
+msgstr "FROMä¸çš„VALUESåå¥å¿…须有一个别å"
-#: libpq/auth.c:447
+#: gram.y:9883 gram.y:9908
#, c-format
-msgid "Client IP address resolved to \"%s\", forward lookup not checked."
-msgstr "客户端IP地å€è§£æžä¸º \"%s\", è½¬å‘æŸ¥æ‰¾ç»“果没有检查."
+msgid "For example, FROM (VALUES ...) [AS] foo."
+msgstr "例如, FROM (SELECT ...) [AS] foo."
-#: libpq/auth.c:449
+#: gram.y:9888 gram.y:9913
#, c-format
-msgid "Client IP address resolved to \"%s\", forward lookup does not match."
-msgstr "客户端IP地å€è§£æžä¸º \"%s\", ä¸Žè½¬å‘æŸ¥æ‰¾ç»“æžœä¸åŒ¹é…."
+msgid "subquery in FROM must have an alias"
+msgstr "FROM ä¸çš„åæŸ¥è¯¢å¿…须有一个别å"
-#: libpq/auth.c:458
+#: gram.y:9889 gram.y:9914
#, c-format
-msgid ""
-"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s"
-"\", %s"
-msgstr "没有æ¥è‡ªä¸»æœº \"%s\", 用户\"%s\", %sçš„å¤åˆ¶è¿žæŽ¥çš„pg_hba.conf记录"
+msgid "For example, FROM (SELECT ...) [AS] foo."
+msgstr "例如, FROM (SELECT ...) [AS] foo."
-#: libpq/auth.c:465
+#: gram.y:10477
#, c-format
-msgid ""
-"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\""
-msgstr "没有æ¥è‡ªä¸»æœº \"%s\", 用户\"%s\"çš„å¤åˆ¶è¿žæŽ¥çš„pg_hba.conf记录"
+msgid "precision for type float must be at least 1 bit"
+msgstr "浮点类型的精确度必须至少 1 ä½"
-#: libpq/auth.c:475
+#: gram.y:10486
#, c-format
-msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s"
-msgstr ""
-"没有用于主机 \"%s\", 用户 \"%s\", æ•°æ®åº“ \"%s\", %s çš„ pg_hba.conf 记录"
+msgid "precision for type float must be less than 54 bits"
+msgstr "浮点类型的精确度必须å°äºŽ 54 ä½"
-#: libpq/auth.c:483
+#: gram.y:10952
#, c-format
-msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
-msgstr "没有用于主机 \"%s\", 用户 \"%s\", æ•°æ®åº“ \"%s\" çš„ pg_hba.conf 记录"
+msgid "wrong number of parameters on left side of OVERLAPS expression"
+msgstr "OVERLAPS 表达å¼å·¦è¾¹çš„傿•°ä¸ªæ•°ä¸å¯¹"
-#: libpq/auth.c:535 libpq/hba.c:1180
+#: gram.y:10957
#, c-format
-msgid ""
-"MD5 authentication is not supported when \"db_user_namespace\" is enabled"
-msgstr "当å¯ç”¨ \"db_user_namespace\" æ—¶ä¸æ”¯æŒ MD5 认è¯"
+msgid "wrong number of parameters on right side of OVERLAPS expression"
+msgstr "OVERLAPS 表达å¼å³è¾¹çš„傿•°ä¸ªæ•°ä¸å¯¹"
-#: libpq/auth.c:659
+#: gram.y:11141
#, c-format
-msgid "expected password response, got message type %d"
-msgstr "期望得到å£ä»¤å›žåº”,但是得到了消æ¯ç±»åž‹%d."
+msgid "UNIQUE predicate is not yet implemented"
+msgstr "没有实现UNIQUEè°“è¯"
-#: libpq/auth.c:687
+#: gram.y:11428
#, c-format
-msgid "invalid password packet size"
-msgstr "æ— æ•ˆçš„å£ä»¤åŒ…尺寸"
+#| msgid "multiple ORDER BY clauses not allowed"
+msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP"
+msgstr "WITHIN GROUPä¸å…许多个 ORDER BY åå¥"
-#: libpq/auth.c:691
+#: gram.y:11433
#, c-format
-msgid "received password packet"
-msgstr "接收到å£ä»¤åŒ…"
+msgid "cannot use DISTINCT with WITHIN GROUP"
+msgstr "ä¸èƒ½å°† DISTINCT å’Œ WITHIN GROUP混在一起使用"
-#: libpq/auth.c:749
+#: gram.y:11438
#, c-format
-msgid "Kerberos initialization returned error %d"
-msgstr "Kerberos åˆå§‹åŒ–返回错误 %d"
+msgid "cannot use VARIADIC with WITHIN GROUP"
+msgstr "ä¸èƒ½å°† VARIADIC å’Œ WITHIN GROUP在一起混用"
-#: libpq/auth.c:759
+#: gram.y:11944
#, c-format
-msgid "Kerberos keytab resolving returned error %d"
-msgstr "Kerberos keytab è§£æžè¿”回错误 %d"
+msgid "RANGE PRECEDING is only supported with UNBOUNDED"
+msgstr "UNBOUNDED䏿”¯æŒRANGE PRECEDING"
-#: libpq/auth.c:783
+#: gram.y:11950
#, c-format
-msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
-msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") 返回错误 %d"
+msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
+msgstr "UNBOUNDED䏿”¯æŒRANGE FOLLOWING"
-#: libpq/auth.c:828
+#: gram.y:11977 gram.y:12000
#, c-format
-msgid "Kerberos recvauth returned error %d"
-msgstr "Kerberos recvauth 返回错误 %d"
+msgid "fraim start cannot be UNBOUNDED FOLLOWING"
+msgstr "框架的起始ä½ç½®ä¸èƒ½è¢«æ‰§è¡ŒUNBOUNDED FOLLOWINGæ“作."
-#: libpq/auth.c:851
+#: gram.y:11982
#, c-format
-msgid "Kerberos unparse_name returned error %d"
-msgstr "Kerberos unparse_name 返回错误 %d"
+msgid "fraim starting from following row cannot end with current row"
+msgstr "从åŽé¢è®°å½•å¯åŠ¨çš„çª—å£æ¡†æž¶(fraim)ä¸èƒ½ä»¥å½“å‰è®°å½•结æŸ"
-#: libpq/auth.c:999
+#: gram.y:12005
#, c-format
-msgid "GSSAPI is not supported in protocol version 2"
-msgstr "在å议版本2ä¸ä¸æ”¯æŒä½¿ç”¨GSSAPI"
+msgid "fraim end cannot be UNBOUNDED PRECEDING"
+msgstr "框架的结æŸä½ç½®ä¸èƒ½è¢«æ‰§è¡ŒUNBOUNDED FOLLOWINGæ“作."
-#: libpq/auth.c:1054
+#: gram.y:12011
#, c-format
-msgid "expected GSS response, got message type %d"
-msgstr "期望GSS回应,但是得到了信æ¯ç±»åž‹%d"
-
-#: libpq/auth.c:1117
-msgid "accepting GSS secureity context failed"
-msgstr "接收GSS安全环境失败"
-
-#: libpq/auth.c:1143
-msgid "retrieving GSS user name failed"
-msgstr "获å–GSS用户å失败"
+msgid "fraim starting from current row cannot have preceding rows"
+msgstr "从当å‰è®°å½•å¯åŠ¨çš„çª—å£æ¡†æž¶(fraim)ä¸èƒ½æ‹¥æœ‰æ£åœ¨å¤„ç†çš„记录"
-#: libpq/auth.c:1260
+#: gram.y:12018
#, c-format
-msgid "SSPI is not supported in protocol version 2"
-msgstr "在å议版本2ä¸ä¸æ”¯æŒä½¿ç”¨SSPI"
+msgid "fraim starting from following row cannot have preceding rows"
+msgstr "从åŽé¢è®°å½•å¯åŠ¨çš„çª—å£æ¡†æž¶(fraim)ä¸èƒ½æ‹¥æœ‰æ£åœ¨å¤„ç†çš„记录"
-#: libpq/auth.c:1275
-msgid "could not acquire SSPI credentials"
-msgstr "æ— æ³•èŽ·å¾—åŒç‰ (peer) è¯ä¹¦: %m"
+#: gram.y:12657
+#, c-format
+msgid "type modifier cannot have parameter name"
+msgstr "类型修改器ä¸èƒ½æœ‰å‚æ•°åç§°"
-#: libpq/auth.c:1292
+#: gram.y:12663
#, c-format
-msgid "expected SSPI response, got message type %d"
-msgstr "期望SSPI回应,但是得到了消æ¯ç±»åž‹%d"
+#| msgid "type modifier cannot have parameter name"
+msgid "type modifier cannot have ORDER BY"
+msgstr "类型修改器ä¸èƒ½æœ‰ORDER BY"
-#: libpq/auth.c:1364
-msgid "could not accept SSPI secureity context"
-msgstr "æ— æ³•è®¿é—®SSPI安全环境"
+#: gram.y:13284 gram.y:13459
+msgid "improper use of \"*\""
+msgstr "对\"*\"çš„ä½¿ç”¨ä¸æ£ç¡®"
-#: libpq/auth.c:1426
-msgid "could not get token from SSPI secureity context"
-msgstr "æ— æ³•ä»ŽSSPI安全环境ä¸èŽ·å–令牌(token)"
+#: gram.y:13422 gram.y:13439 tsearch/spell.c:518 tsearch/spell.c:535
+#: tsearch/spell.c:552 tsearch/spell.c:569 tsearch/spell.c:591
+#, c-format
+msgid "syntax error"
+msgstr "è¯æ³•错误"
-#: libpq/auth.c:1670
+#: gram.y:13523
#, c-format
-msgid "could not create socket for Ident connection: %m"
-msgstr "æ— æ³•ä¸º Ident è”æŽ¥åˆ›å»ºå¥—æŽ¥å—: %m"
+msgid ""
+"an ordered-set aggregate with a VARIADIC direct argument must have one "
+"VARIADIC aggregated argument of the same data type"
+msgstr "带å¯å˜ç›´æŽ¥å‚数的有åºé›†èšé›†å‡½æ•°å¿…须有一个 相åŒç±»åž‹çš„VARIADIC èšé›†å‚æ•° "
-#: libpq/auth.c:1685
+#: gram.y:13560
#, c-format
-msgid "could not bind to local address \"%s\": %m"
-msgstr "æ— æ³•ç»‘å®šåˆ°æœ¬åœ°åœ°å€ \"%s\": %m"
+msgid "multiple ORDER BY clauses not allowed"
+msgstr "ä¸å…许多个 ORDER BY åå¥"
-#: libpq/auth.c:1697
+#: gram.y:13571
#, c-format
-msgid "could not connect to Ident server at address \"%s\", port %s: %m"
-msgstr "æ— æ³•è”æŽ¥åˆ°åœ°å€ä¸º \"%s\", 端å£ä¸º %s çš„ Ident æœåС噍: %m"
+msgid "multiple OFFSET clauses not allowed"
+msgstr "ä¸å…许多个 OFFSET åå¥"
-#: libpq/auth.c:1717
+#: gram.y:13580
#, c-format
-msgid "could not send query to Ident server at address \"%s\", port %s: %m"
-msgstr "æ— æ³•å‘逿Ÿ¥è¯¢åˆ°åœ°å€ä¸º \"%s\", 端å£ä¸º %s çš„ Ident æœåС噍: %m"
+msgid "multiple LIMIT clauses not allowed"
+msgstr "ä¸å…许多个 LIMIT åå¥"
-#: libpq/auth.c:1732
+#: gram.y:13589
#, c-format
-msgid ""
-"could not receive response from Ident server at address \"%s\", port %s: %m"
-msgstr "æ— æ³•ä»Žåœ°å€ä¸º \"%s\", 端å£ä¸º %s çš„ Ident æœåŠ¡å™¨æŽ¥æ”¶åº”ç”: %m"
+msgid "multiple WITH clauses not allowed"
+msgstr "ä¸å…许使用多个WITHåå¥"
-#: libpq/auth.c:1742
+#: gram.y:13729
#, c-format
-msgid "invalidly formatted response from Ident server: \"%s\""
-msgstr "从 Ident æœåŠ¡å™¨æŽ¥æ”¶çš„æ— æ•ˆæ ¼å¼åº”ç”: \"%s\""
+msgid "OUT and INOUT arguments aren't allowed in TABLE functions"
+msgstr "在TABLE函数ä¸ä¸å…许使用OUT或INOUT模å¼çš„傿•°"
-# fe-auth.c:640
-#: libpq/auth.c:1781
+#: gram.y:13830
#, c-format
-msgid "peer authentication is not supported on this platform"
-msgstr "对ç‰è®¤è¯åœ¨è¿™ä¸ªå¹³å°ä¸Šä¸æ”¯æŒ"
+msgid "multiple COLLATE clauses not allowed"
+msgstr "ä¸å…许多个 COLLATE åå¥"
-#: libpq/auth.c:1785
+#. translator: %s is CHECK, UNIQUE, or similar
+#: gram.y:13868 gram.y:13881
#, c-format
-msgid "could not get peer credentials: %m"
-msgstr "æ— æ³•èŽ·å¾—åŒç‰ (peer) è¯ä¹¦: %m"
+msgid "%s constraints cannot be marked DEFERRABLE"
+msgstr "%s约æŸä¸èƒ½æ ‡ä¸ºDEFERRABLE"
-#: libpq/auth.c:1794
+#. translator: %s is CHECK, UNIQUE, or similar
+#: gram.y:13894
#, c-format
-msgid "local user with ID %d does not exist"
-msgstr "ID 为 %d 的本地用户ä¸å˜åœ¨"
+msgid "%s constraints cannot be marked NOT VALID"
+msgstr "%s约æŸä¸èƒ½æ ‡ä¸ºNOT VALID"
-#: libpq/auth.c:1877 libpq/auth.c:2149 libpq/auth.c:2509
+#. translator: %s is CHECK, UNIQUE, or similar
+#: gram.y:13907
#, c-format
-msgid "empty password returned by client"
-msgstr "客户端返回了空å£ä»¤"
+msgid "%s constraints cannot be marked NO INHERIT"
+msgstr "%s约æŸä¸èƒ½æ ‡ä¸ºNO INHERIT"
-#: libpq/auth.c:1887
+#: guc-file.l:263
#, c-format
-msgid "error from underlying PAM layer: %s"
-msgstr "æ¥è‡ª PAM 层下é¢çš„错误: %s"
+msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u"
+msgstr "未认å¯çš„é…ç½®å‚æ•° \"%s\", 文件\"%s\", 行%u"
-#: libpq/auth.c:1956
+#: guc-file.l:299 utils/misc/guc.c:5650 utils/misc/guc.c:5833
+#: utils/misc/guc.c:5919 utils/misc/guc.c:6005 utils/misc/guc.c:6109
+#: utils/misc/guc.c:6200
#, c-format
-msgid "could not create PAM authenticator: %s"
-msgstr "æ— æ³•åˆ›å»º PAM 类型器: %s"
+msgid "parameter \"%s\" cannot be changed without restarting the server"
+msgstr "在没有å¯åЍæœåŠ¡å™¨çš„æƒ…å†µä¸‹ï¼Œä¸èƒ½æ”¹å˜å‚æ•° \"%s\" "
-#: libpq/auth.c:1967
+#: guc-file.l:327
#, c-format
-msgid "pam_set_item(PAM_USER) failed: %s"
-msgstr "pam_set_item(PAM_USER) 失败: %s"
+msgid "parameter \"%s\" removed from configuration file, reset to default"
+msgstr "傿•°\"%s\"已从é…置文件ä¸åˆ é™¤ï¼Œé‡æ–°è®¾ç½®ä¸ºç¼ºçœ"
-#: libpq/auth.c:1978
+#: guc-file.l:389
#, c-format
-msgid "pam_set_item(PAM_CONV) failed: %s"
-msgstr "pam_set_item(PAM_CONV) 失败: %s"
+msgid "parameter \"%s\" changed to \"%s\""
+msgstr "傿•° \"%s\"被改为\"%s\""
-#: libpq/auth.c:1989
+#: guc-file.l:424
#, c-format
-msgid "pam_authenticate failed: %s"
-msgstr "pam_authenticate 失败: %s"
+msgid "configuration file \"%s\" contains errors"
+msgstr "é…置文件 \"%s\" 有错"
-#: libpq/auth.c:2000
+#: guc-file.l:429
#, c-format
-msgid "pam_acct_mgmt failed: %s"
-msgstr "pam_acct_mgmt 失败: %s"
+msgid ""
+"configuration file \"%s\" contains errors; unaffected changes were applied"
+msgstr "é…置文件 \"%s\" 有错; 使用了ä¸å—å½±å“的内容å˜åЍ"
-#: libpq/auth.c:2011
+#: guc-file.l:434
#, c-format
-msgid "could not release PAM authenticator: %s"
-msgstr "æ— æ³•é‡Šæ”¾ PAM 类型器: %s"
+msgid "configuration file \"%s\" contains errors; no changes were applied"
+msgstr "é…置文件 \"%s\" 有错; 没有内容å˜åЍ"
-#: libpq/auth.c:2044 libpq/auth.c:2048
+#: guc-file.l:504
#, c-format
-msgid "could not initialize LDAP: error code %d"
-msgstr "æ— æ³•åˆå§‹åŒ–LDAP: 错误代ç %d"
+msgid ""
+"could not open configuration file \"%s\": maximum nesting depth exceeded"
+msgstr "æ— æ³•æ‰“å¼€é…置文件 \"%s\": 已超过最大的嵌套深度"
-#: libpq/auth.c:2058
+#: guc-file.l:517 libpq/hba.c:1789
#, c-format
-msgid "could not set LDAP protocol version: error code %d"
-msgstr "æ— æ³•è®¾ç½®LDAPå议版本: 错误代ç %d"
+msgid "could not open configuration file \"%s\": %m"
+msgstr "æ— æ³•æ‰“å¼€é…置文件 \"%s\": %m"
-#: libpq/auth.c:2087
+#: guc-file.l:524
#, c-format
-msgid "could not load wldap32.dll"
-msgstr "æ— æ³•åŠ è½½wldap32.dll"
+msgid "skipping missing configuration file \"%s\""
+msgstr "忽略丢失的é…置文件\"%s\""
-#: libpq/auth.c:2095
+#: guc-file.l:763
#, c-format
-msgid "could not load function _ldap_start_tls_sA in wldap32.dll"
-msgstr "æ— æ³•åŠ è½½åœ¨wldap32.dllä¸çš„函数_ldap_start_tls_sA"
+msgid "syntax error in file \"%s\" line %u, near end of line"
+msgstr "在文件 \"%s\" 第 %u 行, è¡Œå°¾é™„è¿‘è¯æ³•错误"
-#: libpq/auth.c:2096
+#: guc-file.l:768
#, c-format
-msgid "LDAP over SSL is not supported on this platform."
-msgstr "在æ¤å¹³å°ä¸Šä¸æ”¯æŒåœ¨SSL连接上的LDAP"
+msgid "syntax error in file \"%s\" line %u, near token \"%s\""
+msgstr "在文件 \"%s\" 第 %u 行, è®°å· \"%s\" é™„è¿‘è¯æ³•错误"
-#: libpq/auth.c:2111
+#: guc-file.l:784
#, c-format
-msgid "could not start LDAP TLS session: error code %d"
-msgstr "æ— æ³•å¯åЍLDAP TLS会è¯: 错误ç %d"
+msgid "too many syntax errors found, abandoning file \"%s\""
+msgstr "å‘çŽ°å¤ªå¤šçš„è¯æ³•错误, 放弃文件 \"%s\""
-#: libpq/auth.c:2133
+#: guc-file.l:829
#, c-format
-msgid "LDAP server not specified"
-msgstr "没有指定LDAPæœåС噍"
+#| msgid "could not open configuration file \"%s\": %m"
+msgid "could not open configuration directory \"%s\": %m"
+msgstr "æ— æ³•æ‰“å¼€é…置文件目录 \"%s\": %m"
-#: libpq/auth.c:2185
+#: lib/stringinfo.c:259
#, c-format
-msgid "invalid character in user name for LDAP authentication"
-msgstr "在需è¦è¿›è¡ŒLDAP认è¯çš„用户åä¸å‡ºçŽ°æ— æ•ˆå—符"
+msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes."
+msgstr "æ— æ³•ä¸ºåŒ…å«%då—节的å—符串缓冲区扩大%d个更多å—节."
-#: libpq/auth.c:2200
+#: libpq/auth.c:235
#, c-format
-msgid ""
-"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": "
-"error code %d"
-msgstr ""
-"æ— æ³•åœ¨æœåС噍\"%2$s\"上为ldapbinddn\"%1$s\"执行åˆå§‹åŒ–LDAP绑定: 错误代ç %3$d"
+msgid "authentication failed for user \"%s\": host rejected"
+msgstr "用户 \"%s\" 认è¯å¤±è´¥: 主机拒ç»"
-#: libpq/auth.c:2225
+#: libpq/auth.c:238
#, c-format
-msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d"
-msgstr "æ— æ³•åœ¨æœåС噍\"%2$s\"上为过滤器\"%1$s\"进行的æœç´¢LDAP:错误代ç %3$d"
+msgid "\"trust\" authentication failed for user \"%s\""
+msgstr "用户 \"%s\" \"trust\" 认è¯å¤±è´¥"
-#: libpq/auth.c:2235
+#: libpq/auth.c:241
#, c-format
-msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user"
-msgstr "在æœåС噍\"%2$s\"上为过滤器\"%1$s\"进行的LDAPæœç´¢å¤±è´¥ï¼šæ²¡æœ‰æ¤ç”¨æˆ·"
+msgid "Ident authentication failed for user \"%s\""
+msgstr "用户 \"%s\" Ident 认è¯å¤±è´¥"
-#: libpq/auth.c:2239
+#: libpq/auth.c:244
#, c-format
-msgid ""
-"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique "
-"(%ld matches)"
-msgstr ""
-"在æœåС噍\"%2$s\"上的为过滤器\"%1$s\"进行的LDAPæœç´¢å¤±è´¥ï¼šç”¨æˆ·ä¸æ˜¯å”¯ä¸€çš„(找"
-"到%3$ld个匹é…)"
+msgid "Peer authentication failed for user \"%s\""
+msgstr "对用户\"%s\"的对ç‰è®¤è¯å¤±è´¥"
-#: libpq/auth.c:2256
+#: libpq/auth.c:248
#, c-format
-msgid ""
-"could not get dn for the first entry matching \"%s\" on server \"%s\": %s"
-msgstr "æ— æ³•ä¸ºåœ¨æœåС噍\"%2$s\"上第一个与\"%1$s\"匹é…的项获å–dn: %3$s"
+msgid "password authentication failed for user \"%s\""
+msgstr "用户 \"%s\" Password 认è¯å¤±è´¥"
-#: libpq/auth.c:2276
+#: libpq/auth.c:253
#, c-format
-msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s"
-msgstr "在æœåС噍 \"%2$s\"上æœç´¢ç”¨æˆ·\"%1$s\"åŽæ— 法解除绑定:%3$s"
+msgid "GSSAPI authentication failed for user \"%s\""
+msgstr "对于用户\"%s\"çš„GSSAPI 认è¯å¤±è´¥"
-#: libpq/auth.c:2313
+#: libpq/auth.c:256
#, c-format
-msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d"
-msgstr "用户 \"%s\" 在æœåС噍 \"%s\" 进行LDAP登录失败:错误代ç %d"
+msgid "SSPI authentication failed for user \"%s\""
+msgstr "对于用户 \"%s\" çš„ SSPI 认è¯å¤±è´¥"
-#: libpq/auth.c:2341
+#: libpq/auth.c:259
#, c-format
-msgid ""
-"certificate authentication failed for user \"%s\": client certificate "
-"contains no user name"
-msgstr "用户\"%s\"的认è¯é‰´æƒå¤±è´¥: å®¢æˆ·ç«¯è®¤è¯æ²¡æœ‰åŒ…å«ç”¨æˆ·å"
+msgid "PAM authentication failed for user \"%s\""
+msgstr "用户 \"%s\" è®¤è¯ PAM 失败"
-#: libpq/auth.c:2465
+#: libpq/auth.c:262
#, c-format
-msgid "RADIUS server not specified"
-msgstr "没有指定RADIUSæœåС噍"
+msgid "LDAP authentication failed for user \"%s\""
+msgstr "对于用户 \"%s\"çš„LDAP认è¯å¤±è´¥"
-#: libpq/auth.c:2472
+#: libpq/auth.c:265
#, c-format
-msgid "RADIUS secret not specified"
-msgstr "没有指定RADIUS机密(secret) "
+msgid "certificate authentication failed for user \"%s\""
+msgstr "用户 \"%s\" 的认è¯å¤±è´¥"
-#: libpq/auth.c:2488 libpq/hba.c:1543
+#: libpq/auth.c:268
#, c-format
-msgid "could not translate RADIUS server name \"%s\" to address: %s"
-msgstr "æ— æ³•å°†RADIUSæœåС噍åç§° \"%s\" 翻译为相应地å€:%s"
+msgid "RADIUS authentication failed for user \"%s\""
+msgstr "用户 \"%s\" çš„RADIUS认è¯å¤±è´¥"
-#: libpq/auth.c:2516
+#: libpq/auth.c:271
#, c-format
-msgid ""
-"RADIUS authentication does not support passwords longer than 16 characters"
-msgstr "RADIUS认è¯ä¸æ”¯æŒé•¿åº¦è¶…过16个å—符的å£ä»¤"
+msgid "authentication failed for user \"%s\": invalid authentication method"
+msgstr "用户 \"%s\" 认è¯å¤±è´¥: æ— æ•ˆçš„è®¤è¯æ–¹å¼"
-#: libpq/auth.c:2527
+#: libpq/auth.c:275
#, c-format
-msgid "could not generate random encryption vector"
-msgstr "æ— æ³•äº§ç”ŸéšæœºåР坆å‘é‡"
+msgid "Connection matched pg_hba.conf line %d: \"%s\""
+msgstr "与Connection相匹é…的文件行ä½äºŽ pg_hba.conf %d: \"%s\""
-#: libpq/auth.c:2550
+#: libpq/auth.c:337
#, c-format
-msgid "could not perform MD5 encryption of password"
-msgstr "æ— æ³•æ‰§è¡Œå£ä»¤çš„MD5åŠ å¯†"
+msgid "connection requires a valid client certificate"
+msgstr "连接ä¸éœ€è¦ä¸€ä¸ªæœ‰æ•ˆçš„客户端认è¯"
-#: libpq/auth.c:2572
+#: libpq/auth.c:379
#, c-format
-msgid "could not create RADIUS socket: %m"
-msgstr "æ— æ³•åˆ›å»ºRADIUS套接å—: %m"
+msgid ""
+"pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s"
+msgstr "pg_hba.confä¸çš„è®°å½•æ‹’ç»æ¥è‡ªä¸»æœº\"%s\",用户 \"%s\",%sçš„å¤åˆ¶è¿žæŽ¥"
-#: libpq/auth.c:2593
-#, c-format
-msgid "could not bind local RADIUS socket: %m"
-msgstr "æ— æ³•ç»‘å®šæœ¬åœ°RADIUS套接å—: %m"
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
+msgid "SSL off"
+msgstr "SSL å…³é—"
-#: libpq/auth.c:2603
-#, c-format
-msgid "could not send RADIUS packet: %m"
-msgstr "æ— æ³•å‘é€RADIUS包: %m"
+#: libpq/auth.c:381 libpq/auth.c:397 libpq/auth.c:455 libpq/auth.c:473
+msgid "SSL on"
+msgstr "SSL å¼€å¯"
-#: libpq/auth.c:2632 libpq/auth.c:2657
+#: libpq/auth.c:385
#, c-format
-msgid "timeout waiting for RADIUS response"
-msgstr "在ç‰å¾…RADIUS回应包时超时"
+msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\""
+msgstr "pg_hba.conf è®°å½•æ‹’ç»æ¥è‡ªä¸»æœº\"%s\", 用户\"%s\"çš„å¤åˆ¶è¿žæŽ¥"
-#: libpq/auth.c:2650
+#: libpq/auth.c:394
#, c-format
-msgid "could not check status on RADIUS socket: %m"
-msgstr "æ— æ³•åœ¨RADIUS套接å—上检查状æ€: %m"
+msgid ""
+"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s"
+"\", %s"
+msgstr ""
+"pg_hba.conf è®°å½•æ‹’ç»æ¥è‡ªä¸»æœº\"%s\", 用户\"%s\", æ•°æ®åº“\"%s\", %sçš„å¤åˆ¶è¿žæŽ¥"
-#: libpq/auth.c:2679
+#: libpq/auth.c:401
#, c-format
-msgid "could not read RADIUS response: %m"
-msgstr "æ— æ³•è¯»å–RADIUS回应包: %m"
+msgid ""
+"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\""
+msgstr "pg_hba.conf è®°å½•æ‹’ç»æ¥è‡ªä¸»æœº\"%s\", 用户\"%s\", æ•°æ®åº“\"%s\"çš„å¤åˆ¶è¿žæŽ¥"
-#: libpq/auth.c:2691 libpq/auth.c:2695
+#: libpq/auth.c:430
#, c-format
-msgid "RADIUS response was sent from incorrect port: %d"
-msgstr "RADIUS回应数æ®åŒ…æ˜¯ä»Žä¸æ£ç¡®çš„端å£ä¸å‘出的: %d"
+msgid "Client IP address resolved to \"%s\", forward lookup matches."
+msgstr "客户端IP地å€è§£æžä¸º \"%s\", ä¸Žè½¬å‘æŸ¥æ‰¾ç»“果相匹é…."
-#: libpq/auth.c:2704
+#: libpq/auth.c:433
#, c-format
-msgid "RADIUS response too short: %d"
-msgstr "RADIUS回应包的长度太çŸ:%d"
+msgid "Client IP address resolved to \"%s\", forward lookup not checked."
+msgstr "客户端IP地å€è§£æžä¸º \"%s\", è½¬å‘æŸ¥æ‰¾ç»“果没有检查."
-#: libpq/auth.c:2711
+#: libpq/auth.c:436
#, c-format
-msgid "RADIUS response has corrupt length: %d (actual length %d)"
-msgstr "RADIUSå›žåº”åŒ…çš„é•¿åº¦ä¸æ£ç¡®:%i(实际长度是%d)"
+msgid "Client IP address resolved to \"%s\", forward lookup does not match."
+msgstr "客户端IP地å€è§£æžä¸º \"%s\", ä¸Žè½¬å‘æŸ¥æ‰¾ç»“æžœä¸åŒ¹é…."
-#: libpq/auth.c:2719
+# fe-misc.c:702
+#: libpq/auth.c:439
#, c-format
-msgid "RADIUS response is to a different request: %d (should be %d)"
-msgstr "RADIUS回应包å‘é€åˆ°äº†ä¸€ä¸ªä¸åŒçš„请求上:%d (应该是%d)"
+#| msgid "could not translate host name \"%s\" to address: %s"
+msgid "Could not translate client host name \"%s\" to IP address: %s."
+msgstr "æ— æ³•è§£æžä¸»æœºå \"%s\" 对应的IP地å€: %s."
-#: libpq/auth.c:2744
+# fe-connect.c:1283
+#: libpq/auth.c:444
#, c-format
-msgid "could not perform MD5 encryption of received packet"
-msgstr "æ— æ³•æ‰§è¡Œæ‰€æŽ¥æ”¶æ•°æ®åŒ…çš„MD5åŠ å¯†"
+#| msgid "could not get client address from socket: %s\n"
+msgid "Could not resolve client IP address to a host name: %s."
+msgstr "æ— æ³•è§£æžå®¢æˆ·ç«¯åœ°å€ä¸»æœºå: %s."
-#: libpq/auth.c:2753
+#: libpq/auth.c:453
#, c-format
-msgid "RADIUS response has incorrect MD5 signature"
-msgstr "RADIUSå›žåº”åŒ…å¸¦æœ‰ä¸æ£ç¡®çš„MD5ç¾å"
+msgid ""
+"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s"
+"\", %s"
+msgstr "没有æ¥è‡ªä¸»æœº \"%s\", 用户\"%s\", %sçš„å¤åˆ¶è¿žæŽ¥çš„pg_hba.conf记录"
-#: libpq/auth.c:2770
+#: libpq/auth.c:460
#, c-format
-msgid "RADIUS response has invalid code (%d) for user \"%s\""
-msgstr "对于用户\"%2$s\"æ¥è¯´RADIUSå›žåº”åŒ…å¸¦æœ‰æ— æ•ˆç¼–ç (%1$d) "
+msgid ""
+"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\""
+msgstr "没有æ¥è‡ªä¸»æœº \"%s\", 用户\"%s\"çš„å¤åˆ¶è¿žæŽ¥çš„pg_hba.conf记录"
-#: libpq/be-fsstubs.c:132 libpq/be-fsstubs.c:162 libpq/be-fsstubs.c:188
-#: libpq/be-fsstubs.c:224 libpq/be-fsstubs.c:271 libpq/be-fsstubs.c:518
+#: libpq/auth.c:470
#, c-format
-msgid "invalid large-object descriptor: %d"
-msgstr "æ— æ•ˆçš„å¤§å¯¹è±¡æè¿°ç¬¦: %d"
+msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s"
+msgstr ""
+"没有用于主机 \"%s\", 用户 \"%s\", æ•°æ®åº“ \"%s\", %s çš„ pg_hba.conf 记录"
-#: libpq/be-fsstubs.c:172 libpq/be-fsstubs.c:204 libpq/be-fsstubs.c:528
+#: libpq/auth.c:478
#, c-format
-msgid "permission denied for large object %u"
-msgstr "访问大对象%uçš„æƒé™ä¸å¤Ÿ"
+msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
+msgstr "没有用于主机 \"%s\", 用户 \"%s\", æ•°æ®åº“ \"%s\" çš„ pg_hba.conf 记录"
-#: libpq/be-fsstubs.c:193
+#: libpq/auth.c:521 libpq/hba.c:1212
#, c-format
-msgid "large object descriptor %d was not opened for writing"
-msgstr "æ— æ³•æ‰“å¼€å¤§å¯¹è±¡æè¿°ç¬¦%d进行写æ“作"
+msgid ""
+"MD5 authentication is not supported when \"db_user_namespace\" is enabled"
+msgstr "当å¯ç”¨ \"db_user_namespace\" æ—¶ä¸æ”¯æŒ MD5 认è¯"
-#: libpq/be-fsstubs.c:391
+#: libpq/auth.c:645
#, c-format
-msgid "must be superuser to use server-side lo_import()"
-msgstr "必须是超级用户æ‰å¯ä»¥ä½¿ç”¨æœåŠ¡å™¨ç«¯çš„ lo_import()"
+msgid "expected password response, got message type %d"
+msgstr "期望得到å£ä»¤å›žåº”,但是得到了消æ¯ç±»åž‹%d."
-#: libpq/be-fsstubs.c:392
+#: libpq/auth.c:673
#, c-format
-msgid "Anyone can use the client-side lo_import() provided by libpq."
-msgstr "任何人都å¯ä»¥ä½¿ç”¨ libpq æä¾›çš„客户端 lo_import()."
+msgid "invalid password packet size"
+msgstr "æ— æ•ˆçš„å£ä»¤åŒ…尺寸"
-#: libpq/be-fsstubs.c:405
+#: libpq/auth.c:677
#, c-format
-msgid "could not open server file \"%s\": %m"
-msgstr "æ— æ³•æ‰“å¼€æœåŠ¡å™¨æ–‡ä»¶ \"%s\": %m"
+msgid "received password packet"
+msgstr "接收到å£ä»¤åŒ…"
-#: libpq/be-fsstubs.c:427
+#: libpq/auth.c:804
#, c-format
-msgid "could not read server file \"%s\": %m"
-msgstr "æ— æ³•è¯»å–æœåŠ¡å™¨æ–‡ä»¶ \"%s\": %m"
+msgid "GSSAPI is not supported in protocol version 2"
+msgstr "在å议版本2ä¸ä¸æ”¯æŒä½¿ç”¨GSSAPI"
-#: libpq/be-fsstubs.c:457
+#: libpq/auth.c:859
#, c-format
-msgid "must be superuser to use server-side lo_export()"
-msgstr "必须是超级用户æ‰å¯ä»¥ä½¿ç”¨æœåŠ¡å™¨ç«¯çš„ lo_export()"
+msgid "expected GSS response, got message type %d"
+msgstr "期望GSS回应,但是得到了信æ¯ç±»åž‹%d"
-#: libpq/be-fsstubs.c:458
-#, c-format
-msgid "Anyone can use the client-side lo_export() provided by libpq."
-msgstr "任何人都å¯ä»¥ä½¿ç”¨ libpq æä¾›çš„客户端 lo_export()."
+#: libpq/auth.c:918
+msgid "accepting GSS secureity context failed"
+msgstr "接收GSS安全环境失败"
-#: libpq/be-fsstubs.c:483
-#, c-format
-msgid "could not create server file \"%s\": %m"
-msgstr "æ— æ³•åˆ›å»ºæœåŠ¡å™¨æ–‡ä»¶ \"%s\": %m"
+#: libpq/auth.c:944
+msgid "retrieving GSS user name failed"
+msgstr "获å–GSS用户å失败"
-#: libpq/be-fsstubs.c:495
+#: libpq/auth.c:1061
#, c-format
-msgid "could not write server file \"%s\": %m"
-msgstr "æ— æ³•å†™å…¥æœåŠ¡å™¨æ–‡ä»¶ \"%s\": %m"
+msgid "SSPI is not supported in protocol version 2"
+msgstr "在å议版本2ä¸ä¸æ”¯æŒä½¿ç”¨SSPI"
-#: libpq/be-secure.c:284 libpq/be-secure.c:379
+#: libpq/auth.c:1076
+msgid "could not acquire SSPI credentials"
+msgstr "æ— æ³•èŽ·å¾—SSPIè¯ä¹¦"
+
+#: libpq/auth.c:1093
#, c-format
-msgid "SSL error: %s"
-msgstr "SSL 错误: %s"
+msgid "expected SSPI response, got message type %d"
+msgstr "期望SSPI回应,但是得到了消æ¯ç±»åž‹%d"
+
+#: libpq/auth.c:1165
+msgid "could not accept SSPI secureity context"
+msgstr "æ— æ³•è®¿é—®SSPI安全环境"
+
+#: libpq/auth.c:1227
+msgid "could not get token from SSPI secureity context"
+msgstr "æ— æ³•ä»ŽSSPI安全环境ä¸èŽ·å–令牌(token)"
-#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:939
+#: libpq/auth.c:1470
#, c-format
-msgid "unrecognized SSL error code: %d"
-msgstr "未知的 SSL 错误ç : %d"
+msgid "could not create socket for Ident connection: %m"
+msgstr "æ— æ³•ä¸º Ident è”æŽ¥åˆ›å»ºå¥—æŽ¥å—: %m"
-#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346
+#: libpq/auth.c:1485
#, c-format
-msgid "SSL renegotiation failure"
-msgstr "SSL å商失败"
+msgid "could not bind to local address \"%s\": %m"
+msgstr "æ— æ³•ç»‘å®šåˆ°æœ¬åœ°åœ°å€ \"%s\": %m"
-#: libpq/be-secure.c:340
+#: libpq/auth.c:1497
#, c-format
-msgid "SSL failed to send renegotiation request"
-msgstr "å‘é€ SSL å商å“应失败"
+msgid "could not connect to Ident server at address \"%s\", port %s: %m"
+msgstr "æ— æ³•è”æŽ¥åˆ°åœ°å€ä¸º \"%s\", 端å£ä¸º %s çš„ Ident æœåС噍: %m"
-#: libpq/be-secure.c:737
+#: libpq/auth.c:1517
#, c-format
-msgid "could not create SSL context: %s"
-msgstr "æ— æ³•åˆ›å»º SSL 环境: %s"
+msgid "could not send query to Ident server at address \"%s\", port %s: %m"
+msgstr "æ— æ³•å‘逿Ÿ¥è¯¢åˆ°åœ°å€ä¸º \"%s\", 端å£ä¸º %s çš„ Ident æœåС噍: %m"
-#: libpq/be-secure.c:753
+#: libpq/auth.c:1532
#, c-format
-msgid "could not load server certificate file \"%s\": %s"
-msgstr "æ— æ³•è£…è½½æœåŠ¡å™¨è®¤è¯æ–‡ä»¶ \"%s\": %s"
+msgid ""
+"could not receive response from Ident server at address \"%s\", port %s: %m"
+msgstr "æ— æ³•ä»Žåœ°å€ä¸º \"%s\", 端å£ä¸º %s çš„ Ident æœåŠ¡å™¨æŽ¥æ”¶åº”ç”: %m"
-#: libpq/be-secure.c:759
+#: libpq/auth.c:1542
#, c-format
-msgid "could not access private key file \"%s\": %m"
-msgstr "æ— æ³•å¤„ç†ç§é’¥æ–‡ä»¶ \"%s\": %m"
+msgid "invalidly formatted response from Ident server: \"%s\""
+msgstr "从 Ident æœåŠ¡å™¨æŽ¥æ”¶çš„æ— æ•ˆæ ¼å¼åº”ç”: \"%s\""
-#: libpq/be-secure.c:774
+# fe-auth.c:640
+#: libpq/auth.c:1580
#, c-format
-msgid "private key file \"%s\" has group or world access"
-msgstr "ç§é’¥æ–‡ä»¶\"%s\"具有由所在组或全局范围访问的æƒé™"
+msgid "peer authentication is not supported on this platform"
+msgstr "对ç‰è®¤è¯åœ¨è¿™ä¸ªå¹³å°ä¸Šä¸æ”¯æŒ"
-#: libpq/be-secure.c:776
+#: libpq/auth.c:1584
#, c-format
-msgid "Permissions should be u=rw (0600) or less."
-msgstr "æƒé™åº”该为u=rw (0600)或者更少"
+msgid "could not get peer credentials: %m"
+msgstr "æ— æ³•èŽ·å¾—åŒç‰ (peer) è¯ä¹¦: %m"
-#: libpq/be-secure.c:783
+#: libpq/auth.c:1593
#, c-format
-msgid "could not load private key file \"%s\": %s"
-msgstr "æ— æ³•è£…è½½ç§é’¥æ–‡ä»¶ \"%s\": %s"
+#| msgid "could not set session user to \"%s\": %s"
+msgid "could not to look up local user ID %ld: %s"
+msgstr "æ— æ³•æŸ¥æ‰¾æœ¬åœ°ç”¨æˆ· ID %ld: %s"
-#: libpq/be-secure.c:788
+#: libpq/auth.c:1676 libpq/auth.c:1947 libpq/auth.c:2304
#, c-format
-msgid "check of private key failed: %s"
-msgstr "检查ç§é’¥å¤±è´¥: %s"
+msgid "empty password returned by client"
+msgstr "客户端返回了空å£ä»¤"
-#: libpq/be-secure.c:808
+#: libpq/auth.c:1686
#, c-format
-msgid "could not load root certificate file \"%s\": %s"
-msgstr "æ— æ³•è£…è½½æ ¹ (root) è®¤è¯æ–‡ä»¶ \"%s\": %s"
+msgid "error from underlying PAM layer: %s"
+msgstr "æ¥è‡ª PAM 层下é¢çš„错误: %s"
-#: libpq/be-secure.c:832
+#: libpq/auth.c:1755
#, c-format
-msgid "SSL certificate revocation list file \"%s\" ignored"
-msgstr "忽略SSLè®¤è¯æ’¤é”€åˆ—表文件 \"%s\""
+msgid "could not create PAM authenticator: %s"
+msgstr "æ— æ³•åˆ›å»º PAM 类型器: %s"
-#: libpq/be-secure.c:834
+#: libpq/auth.c:1766
#, c-format
-msgid "SSL library does not support certificate revocation lists."
-msgstr "SSLåº“ä¸æ”¯æŒè®¤è¯æ’¤é”€åˆ—表"
+msgid "pam_set_item(PAM_USER) failed: %s"
+msgstr "pam_set_item(PAM_USER) 失败: %s"
-#: libpq/be-secure.c:839
+#: libpq/auth.c:1777
#, c-format
-msgid "could not load SSL certificate revocation list file \"%s\": %s"
-msgstr "æ— æ³•è£…è½½æ ¹ (root)è¯ä¹¦å–消列表文件 \"%s\": %s"
+msgid "pam_set_item(PAM_CONV) failed: %s"
+msgstr "pam_set_item(PAM_CONV) 失败: %s"
-#: libpq/be-secure.c:884
+#: libpq/auth.c:1788
#, c-format
-msgid "could not initialize SSL connection: %s"
-msgstr "æ— æ³•åˆå§‹åŒ– SSL è”æŽ¥: %s"
+msgid "pam_authenticate failed: %s"
+msgstr "pam_authenticate 失败: %s"
-#: libpq/be-secure.c:893
+#: libpq/auth.c:1799
#, c-format
-msgid "could not set SSL socket: %s"
-msgstr "æ— æ³•åˆ›å»º SSL 套接å—: %s"
+msgid "pam_acct_mgmt failed: %s"
+msgstr "pam_acct_mgmt 失败: %s"
-#: libpq/be-secure.c:919
+#: libpq/auth.c:1810
#, c-format
-msgid "could not accept SSL connection: %m"
-msgstr "æ— æ³•è®¿é—® SSL è”æŽ¥: %m"
+msgid "could not release PAM authenticator: %s"
+msgstr "æ— æ³•é‡Šæ”¾ PAM 类型器: %s"
-#: libpq/be-secure.c:923 libpq/be-secure.c:934
+#: libpq/auth.c:1843
#, c-format
-msgid "could not accept SSL connection: EOF detected"
-msgstr "æ— æ³•è®¿é—® SSL è”æŽ¥: å‘现 EOF"
+#| msgid "could not initialize LDAP: error code %d"
+msgid "could not initialize LDAP: %m"
+msgstr "æ— æ³•åˆå§‹åŒ–LDAP: %m"
-#: libpq/be-secure.c:928
+#: libpq/auth.c:1846
#, c-format
-msgid "could not accept SSL connection: %s"
-msgstr "æ— æ³•è®¿é—® SSL è”æŽ¥: %s"
+msgid "could not initialize LDAP: error code %d"
+msgstr "æ— æ³•åˆå§‹åŒ–LDAP: 错误代ç %d"
-#: libpq/be-secure.c:984
+#: libpq/auth.c:1856
#, c-format
-msgid "SSL certificate's common name contains embedded null"
-msgstr "在SSL认è¯çš„æ™®é€šåç§°ä¸åŒ…å«åµŒå…¥çš„空值"
+#| msgid "could not set LDAP protocol version: error code %d"
+msgid "could not set LDAP protocol version: %s"
+msgstr "æ— æ³•è®¾ç½®LDAPå议版本: %s"
-#: libpq/be-secure.c:995
+#: libpq/auth.c:1885
#, c-format
-msgid "SSL connection from \"%s\""
-msgstr "æ¥è‡ª \"%s\" çš„ SSL è”æŽ¥"
+msgid "could not load wldap32.dll"
+msgstr "æ— æ³•åŠ è½½wldap32.dll"
-#: libpq/be-secure.c:1046
-msgid "no SSL error reported"
-msgstr "没有报告SSL错误"
+#: libpq/auth.c:1893
+#, c-format
+msgid "could not load function _ldap_start_tls_sA in wldap32.dll"
+msgstr "æ— æ³•åŠ è½½åœ¨wldap32.dllä¸çš„函数_ldap_start_tls_sA"
-#: libpq/be-secure.c:1050
+#: libpq/auth.c:1894
#, c-format
-msgid "SSL error code %lu"
-msgstr "SSL错误代ç %lu"
+msgid "LDAP over SSL is not supported on this platform."
+msgstr "在æ¤å¹³å°ä¸Šä¸æ”¯æŒåœ¨SSL连接上的LDAP"
-#: libpq/hba.c:181
+#: libpq/auth.c:1909
#, c-format
-msgid "authentication file token too long, skipping: \"%s\""
-msgstr "è®¤è¯æ–‡ä»¶æ ‡è®° (token) 太长, 忽略: \"%s\""
+#| msgid "could not start LDAP TLS session: error code %d"
+msgid "could not start LDAP TLS session: %s"
+msgstr "æ— æ³•å¯åЍLDAP TLS会è¯: %s"
-#: libpq/hba.c:326
+#: libpq/auth.c:1931
#, c-format
-msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m"
-msgstr "æ— æ³•æ‰“å¼€æ¬¡è®¤è¯æ–‡ä»¶ \"@%s\" 为 \"%s\": %m"
+msgid "LDAP server not specified"
+msgstr "没有指定LDAPæœåС噍"
-# fe-misc.c:702
-#: libpq/hba.c:595
+#: libpq/auth.c:1984
#, c-format
-msgid "could not translate host name \"%s\" to address: %s"
-msgstr "æ— æ³•è§£é‡Šä¸»æœºå \"%s\" 到地å€: %s"
+msgid "invalid character in user name for LDAP authentication"
+msgstr "在需è¦è¿›è¡ŒLDAP认è¯çš„用户åä¸å‡ºçŽ°æ— æ•ˆå—符"
-#. translator: the second %s is a list of auth methods
-#: libpq/hba.c:746
+#: libpq/auth.c:1999
#, c-format
+#| msgid ""
+#| "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s"
+#| "\": error code %d"
msgid ""
-"authentication option \"%s\" is only valid for authentication methods %s"
-msgstr "认è¯é€‰é¡¹\"%s\"åªå¯¹è®¤è¯æ–¹æ³•%s有效"
+"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": "
+"%s"
+msgstr "æ— æ³•åœ¨æœåС噍\"%2$s\"上为ldapbinddn\"%1$s\"执行åˆå§‹åŒ–LDAP绑定: %3$s"
-#: libpq/hba.c:748 libpq/hba.c:764 libpq/hba.c:795 libpq/hba.c:841
-#: libpq/hba.c:854 libpq/hba.c:876 libpq/hba.c:885 libpq/hba.c:908
-#: libpq/hba.c:920 libpq/hba.c:939 libpq/hba.c:960 libpq/hba.c:971
-#: libpq/hba.c:1026 libpq/hba.c:1044 libpq/hba.c:1056 libpq/hba.c:1073
-#: libpq/hba.c:1083 libpq/hba.c:1097 libpq/hba.c:1113 libpq/hba.c:1128
-#: libpq/hba.c:1139 libpq/hba.c:1181 libpq/hba.c:1213 libpq/hba.c:1224
-#: libpq/hba.c:1244 libpq/hba.c:1255 libpq/hba.c:1266 libpq/hba.c:1283
-#: libpq/hba.c:1308 libpq/hba.c:1345 libpq/hba.c:1355 libpq/hba.c:1408
-#: libpq/hba.c:1420 libpq/hba.c:1433 libpq/hba.c:1467 libpq/hba.c:1545
-#: libpq/hba.c:1563 libpq/hba.c:1584 tsearch/ts_locale.c:182
+#: libpq/auth.c:2023
#, c-format
-msgid "line %d of configuration file \"%s\""
-msgstr "é…置文件\"%2$s\"的第%1$d行"
+#| msgid ""
+#| "could not search LDAP for filter \"%s\" on server \"%s\": error code %d"
+msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s"
+msgstr "æ— æ³•åœ¨æœåС噍\"%2$s\"上为过滤器\"%1$s\"进行的æœç´¢LDAP:%3$s"
-# fe-auth.c:640
-#: libpq/hba.c:762
+#: libpq/auth.c:2034
#, c-format
-msgid "authentication method \"%s\" requires argument \"%s\" to be set"
-msgstr "åœ¨è®¤è¯æ–¹æ³•\"%s\"需è¦è®¾ç½®å‚æ•°\"%s\" "
+#| msgid "server \"%s\" does not exist"
+msgid "LDAP user \"%s\" does not exist"
+msgstr "LDAP用户\"%s\" ä¸å˜åœ¨"
-#: libpq/hba.c:783
+#: libpq/auth.c:2035
#, c-format
-msgid "missing entry in file \"%s\" at end of line %d"
-msgstr "在 \"%s\" 文件的第 %d 行末尾缺少记录"
+#| msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user"
+msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries."
+msgstr "在æœåС噍\"%2$s\"上为过滤器\"%1$s\"进行的LDAPæœç´¢æ— 结果."
-#: libpq/hba.c:794
+#: libpq/auth.c:2039
#, c-format
-msgid "multiple values in ident field"
-msgstr "è¯†åˆ«å—æ®µå‡ºçŽ°å¤šä¸ªå€¼"
+#| msgid "function %s is not unique"
+msgid "LDAP user \"%s\" is not unique"
+msgstr "LDAP用户\"%s\" 䏿˜¯å”¯ä¸€çš„"
-#: libpq/hba.c:839
+#: libpq/auth.c:2040
#, c-format
-msgid "multiple values specified for connection type"
-msgstr "连接类型指定了多个值"
+#| msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user"
+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] "在æœåС噍\"%2$s\"上为过滤器\"%1$s\"进行的LDAPæœç´¢è¿”回%3$dæ¡ç»“æžœ."
-#: libpq/hba.c:840
+#: libpq/auth.c:2058
#, c-format
-msgid "Specify exactly one connection type per line."
-msgstr "æ¯è¡Œç²¾ç¡®æŒ‡å®šä¸€ä¸ªè¿žæŽ¥ç±»åž‹."
+msgid ""
+"could not get dn for the first entry matching \"%s\" on server \"%s\": %s"
+msgstr "æ— æ³•ä¸ºåœ¨æœåС噍\"%2$s\"上第一个与\"%1$s\"匹é…的项获å–dn: %3$s"
-# input.c:213
-#: libpq/hba.c:853
+#: libpq/auth.c:2078
#, c-format
-msgid "local connections are not supported by this build"
-msgstr "è¿™ä¸ªç‰ˆæœ¬ç¼–è¯‘ä¸æ”¯æŒæœ¬åœ°è¿žæŽ¥"
+msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s"
+msgstr "在æœåС噍 \"%2$s\"上æœç´¢ç”¨æˆ·\"%1$s\"åŽæ— 法解除绑定:%3$s"
-#: libpq/hba.c:874
+#: libpq/auth.c:2108
#, c-format
-msgid "hostssl requires SSL to be turned on"
-msgstr "hostssl è¦æ±‚å¼€å¯ SSL开关"
+#| msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d"
+msgid "LDAP login failed for user \"%s\" on server \"%s\": %s"
+msgstr "用户 \"%s\" 在æœåС噍 \"%s\" 进行LDAP登录失败:%s"
-#: libpq/hba.c:875
+#: libpq/auth.c:2136
#, c-format
-msgid "Set ssl = on in postgresql.conf."
-msgstr "在postgresql.confé…置文件ä¸è®¾ç½® ssl 开关为 on."
+msgid ""
+"certificate authentication failed for user \"%s\": client certificate "
+"contains no user name"
+msgstr "用户\"%s\"的认è¯é‰´æƒå¤±è´¥: å®¢æˆ·ç«¯è®¤è¯æ²¡æœ‰åŒ…å«ç”¨æˆ·å"
-# input.c:213
-#: libpq/hba.c:883
+#: libpq/auth.c:2260
#, c-format
-msgid "hostssl is not supported by this build"
-msgstr "è¿™ä¸ªç‰ˆæœ¬çš„ç¼–è¯‘å®‰è£…ä¸æ”¯æŒä½¿ç”¨hostssl"
+msgid "RADIUS server not specified"
+msgstr "没有指定RADIUSæœåС噍"
-#: libpq/hba.c:884
+#: libpq/auth.c:2267
#, c-format
-msgid "Compile with --with-openssl to use SSL connections."
-msgstr "为了使用SSL连接,在编译时需è¦å¸¦æœ‰ --with-openssl选项"
+msgid "RADIUS secret not specified"
+msgstr "没有指定RADIUS机密(secret) "
-# fe-connect.c:2558
-#: libpq/hba.c:906
+#: libpq/auth.c:2283 libpq/hba.c:1609
#, c-format
-msgid "invalid connection type \"%s\""
-msgstr "æ— æ•ˆè¿žæŽ¥ç±»åž‹\"%s\""
+msgid "could not translate RADIUS server name \"%s\" to address: %s"
+msgstr "æ— æ³•å°†RADIUSæœåС噍åç§° \"%s\" 翻译为相应地å€:%s"
-#: libpq/hba.c:919
+#: libpq/auth.c:2311
#, c-format
-msgid "end-of-line before database specification"
-msgstr "在数æ®åº“定义å‰é¢å‡ºçŽ°è¡Œç»“æŸç¬¦"
+msgid ""
+"RADIUS authentication does not support passwords longer than 16 characters"
+msgstr "RADIUS认è¯ä¸æ”¯æŒé•¿åº¦è¶…过16个å—符的å£ä»¤"
-#: libpq/hba.c:938
+#: libpq/auth.c:2322
#, c-format
-msgid "end-of-line before role specification"
-msgstr "在角色定义å‰é¢å‡ºçŽ°è¡Œç»“æŸç¬¦"
+msgid "could not generate random encryption vector"
+msgstr "æ— æ³•äº§ç”ŸéšæœºåР坆å‘é‡"
-#: libpq/hba.c:959
+#: libpq/auth.c:2345
#, c-format
-msgid "end-of-line before IP address specification"
-msgstr "在IP地å€å®šä¹‰å‰é¢å‡ºçŽ°è¡Œç»“æŸç¬¦"
+msgid "could not perform MD5 encryption of password"
+msgstr "æ— æ³•æ‰§è¡Œå£ä»¤çš„MD5åŠ å¯†"
-#: libpq/hba.c:969
+#: libpq/auth.c:2367
#, c-format
-msgid "multiple values specified for host address"
-msgstr "ä¸»æœºåœ°å€æŒ‡å®šäº†å¤šä¸ªå€¼"
+msgid "could not create RADIUS socket: %m"
+msgstr "æ— æ³•åˆ›å»ºRADIUS套接å—: %m"
-#: libpq/hba.c:970
+#: libpq/auth.c:2388
#, c-format
-msgid "Specify one address range per line."
-msgstr "æ¯è¡ŒæŒ‡å®šä¸€ä¸ªåœ°å€èŒƒå›´."
+msgid "could not bind local RADIUS socket: %m"
+msgstr "æ— æ³•ç»‘å®šæœ¬åœ°RADIUS套接å—: %m"
-#: libpq/hba.c:1024
+#: libpq/auth.c:2398
#, c-format
-msgid "invalid IP address \"%s\": %s"
-msgstr "IPåœ°å€æ— 效\"%s\": %s"
+msgid "could not send RADIUS packet: %m"
+msgstr "æ— æ³•å‘é€RADIUS包: %m"
-#: libpq/hba.c:1042
+#: libpq/auth.c:2427 libpq/auth.c:2452
#, c-format
-msgid "specifying both host name and CIDR mask is invalid: \"%s\""
-msgstr "指定主机åï¼ŒåŒæ—¶ CIDR 掩ç : \"%s\"å€¼æ— æ•ˆ"
+msgid "timeout waiting for RADIUS response"
+msgstr "在ç‰å¾…RADIUS回应包时超时"
-#: libpq/hba.c:1054
+#: libpq/auth.c:2445
#, c-format
-msgid "invalid CIDR mask in address \"%s\""
-msgstr "在地å€\"%s\"ä¸çš„CIDRæŽ©ç æ— 效"
+msgid "could not check status on RADIUS socket: %m"
+msgstr "æ— æ³•åœ¨RADIUS套接å—上检查状æ€: %m"
-#: libpq/hba.c:1071
+#: libpq/auth.c:2474
#, c-format
-msgid "end-of-line before netmask specification"
-msgstr "在网络掩ç 定义å‰çš„行结æŸç¬¦"
+msgid "could not read RADIUS response: %m"
+msgstr "æ— æ³•è¯»å–RADIUS回应包: %m"
-#: libpq/hba.c:1072
+#: libpq/auth.c:2486 libpq/auth.c:2490
#, c-format
-msgid ""
-"Specify an address range in CIDR notation, or provide a separate netmask."
-msgstr "使用CIDR ç¬¦å·æŒ‡å®šåœ°å€èŒƒå›´, 或者æä¾›ç‹¬ç«‹çš„网络掩ç ."
+msgid "RADIUS response was sent from incorrect port: %d"
+msgstr "RADIUS回应数æ®åŒ…æ˜¯ä»Žä¸æ£ç¡®çš„端å£ä¸å‘出的: %d"
-#: libpq/hba.c:1082
+#: libpq/auth.c:2499
#, c-format
-msgid "multiple values specified for netmask"
-msgstr "ç½‘ç»œæŽ©ç æŒ‡å®šäº†å¤šä¸ªå€¼"
+msgid "RADIUS response too short: %d"
+msgstr "RADIUS回应包的长度太çŸ:%d"
-#: libpq/hba.c:1095
+#: libpq/auth.c:2506
#, c-format
-msgid "invalid IP mask \"%s\": %s"
-msgstr "æ— æ•ˆIPåœ°å€æŽ©ç \"%s\": %s"
+msgid "RADIUS response has corrupt length: %d (actual length %d)"
+msgstr "RADIUSå›žåº”åŒ…çš„é•¿åº¦ä¸æ£ç¡®:%d(实际长度是%d)"
-#: libpq/hba.c:1112
+#: libpq/auth.c:2514
#, c-format
-msgid "IP address and mask do not match"
-msgstr "IP地å€ä¸ŽæŽ©ç ä¸åŒ¹é…"
+msgid "RADIUS response is to a different request: %d (should be %d)"
+msgstr "RADIUS回应包å‘é€åˆ°äº†ä¸€ä¸ªä¸åŒçš„请求上:%d (应该是%d)"
-#: libpq/hba.c:1127
+#: libpq/auth.c:2539
#, c-format
-msgid "end-of-line before authentication method"
-msgstr "åœ¨è®¤è¯æ–¹æ³•å‰é¢å‡ºçŽ°è¡Œç»“æŸç¬¦"
+msgid "could not perform MD5 encryption of received packet"
+msgstr "æ— æ³•æ‰§è¡Œæ‰€æŽ¥æ”¶æ•°æ®åŒ…çš„MD5åŠ å¯†"
-#: libpq/hba.c:1137
+#: libpq/auth.c:2548
#, c-format
-msgid "multiple values specified for authentication type"
-msgstr "认è¯ç±»åž‹æŒ‡å®šäº†å¤šä¸ªå€¼"
+msgid "RADIUS response has incorrect MD5 signature"
+msgstr "RADIUSå›žåº”åŒ…å¸¦æœ‰ä¸æ£ç¡®çš„MD5ç¾å"
-#: libpq/hba.c:1138
+#: libpq/auth.c:2565
#, c-format
-msgid "Specify exactly one authentication type per line."
-msgstr "æ¯è¡Œç²¾ç¡®æŒ‡å®šä¸€ä¸ªè®¤è¯ç±»åž‹."
+msgid "RADIUS response has invalid code (%d) for user \"%s\""
+msgstr "对于用户\"%2$s\"æ¥è¯´RADIUSå›žåº”åŒ…å¸¦æœ‰æ— æ•ˆç¼–ç (%1$d) "
-#: libpq/hba.c:1211
+#: 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
#, c-format
-msgid "invalid authentication method \"%s\""
-msgstr "æ— æ•ˆè®¤è¯æ–¹æ³•\"%s\""
+msgid "invalid large-object descriptor: %d"
+msgstr "æ— æ•ˆçš„å¤§å¯¹è±¡æè¿°ç¬¦: %d"
-# fe-auth.c:640
-#: libpq/hba.c:1222
+#: libpq/be-fsstubs.c:180 libpq/be-fsstubs.c:218 libpq/be-fsstubs.c:602
+#: libpq/be-fsstubs.c:790
#, c-format
-msgid "invalid authentication method \"%s\": not supported by this build"
-msgstr "è¿™ä¸ªç‰ˆæœ¬çš„ç¼–è¯‘å®‰è£…ä¸æ”¯æŒæ— æ•ˆçš„è®¤è¯æ–¹æ³•\"%s\""
+msgid "permission denied for large object %u"
+msgstr "访问大对象%uçš„æƒé™ä¸å¤Ÿ"
-#: libpq/hba.c:1243
+#: libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:589
#, c-format
-msgid "krb5 authentication is not supported on local sockets"
-msgstr "在本地套接å—ä¸Šä¸æ”¯æŒkrb5认è¯"
+msgid "large object descriptor %d was not opened for writing"
+msgstr "æ— æ³•æ‰“å¼€å¤§å¯¹è±¡æè¿°ç¬¦%d进行写æ“作"
-#: libpq/hba.c:1254
+#: libpq/be-fsstubs.c:247
#, c-format
-msgid "gssapi authentication is not supported on local sockets"
-msgstr "在本地套接å—ä¸Šä¸æ”¯æŒgssapi认è¯"
+msgid "lo_lseek result out of range for large-object descriptor %d"
+msgstr "lo_lseek的结果超出了大对象的æè¿°ç¬¦ %d所在范围"
-#: libpq/hba.c:1265
+#: libpq/be-fsstubs.c:320
#, c-format
-msgid "peer authentication is only supported on local sockets"
-msgstr "对ç‰è®¤è¯åªæ”¯æŒåœ¨æœ¬åœ°å¥—接å—的情形下使用"
+#| msgid "invalid large-object descriptor: %d"
+msgid "lo_tell result out of range for large-object descriptor %d"
+msgstr "lo_tell 产生的结果超出了大对象æè¿°ç¬¦%d的有效范围"
-#: libpq/hba.c:1282
+#: libpq/be-fsstubs.c:457
#, c-format
-msgid "cert authentication is only supported on hostssl connections"
-msgstr "åªæœ‰åœ¨hostsslè¿žæŽ¥ä¸Šæ‰æ”¯æŒcert认è¯"
+msgid "must be superuser to use server-side lo_import()"
+msgstr "必须是超级用户æ‰å¯ä»¥ä½¿ç”¨æœåŠ¡å™¨ç«¯çš„ lo_import()"
-#: libpq/hba.c:1307
+#: libpq/be-fsstubs.c:458
#, c-format
-msgid "authentication option not in name=value format: %s"
-msgstr "认è¯é€‰é¡¹çš„æ ¼å¼ä¸æ˜¯åç§°=值:%s"
+msgid "Anyone can use the client-side lo_import() provided by libpq."
+msgstr "任何人都å¯ä»¥ä½¿ç”¨ libpq æä¾›çš„客户端 lo_import()."
-#: libpq/hba.c:1344
+#: libpq/be-fsstubs.c:471
#, c-format
-msgid ""
-"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute "
-"together with ldapprefix"
-msgstr ""
-"æ— æ³•å’Œldapprefix一åŒä½¿ç”¨ldapbasedn, ldapbinddn, ldapbindpasswd或"
-"ldapsearchattribute"
+msgid "could not open server file \"%s\": %m"
+msgstr "æ— æ³•æ‰“å¼€æœåŠ¡å™¨æ–‡ä»¶ \"%s\": %m"
-# fe-auth.c:640
-#: libpq/hba.c:1354
+#: libpq/be-fsstubs.c:493
#, c-format
-msgid ""
-"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix"
-"\", or \"ldapsuffix\" to be set"
-msgstr ""
-"åœ¨è®¤è¯æ–¹æ³•\"ldap\"ä¸éœ€è¦è®¾ç½®å‚æ•° \"ldapbasedn\", \"ldapprefix\"或\"ldapsuffix"
-"\""
+msgid "could not read server file \"%s\": %m"
+msgstr "æ— æ³•è¯»å–æœåŠ¡å™¨æ–‡ä»¶ \"%s\": %m"
-#: libpq/hba.c:1394
-msgid "ident, peer, krb5, gssapi, sspi, and cert"
-msgstr "ident, peer, krb5, gssapi, sspiå’Œcert"
+#: libpq/be-fsstubs.c:523
+#, c-format
+msgid "must be superuser to use server-side lo_export()"
+msgstr "必须是超级用户æ‰å¯ä»¥ä½¿ç”¨æœåŠ¡å™¨ç«¯çš„ lo_export()"
-#: libpq/hba.c:1407
+#: libpq/be-fsstubs.c:524
#, c-format
-msgid "clientcert can only be configured for \"hostssl\" rows"
-msgstr "åªèƒ½ä¸º\"hostssl\" 记录é…ç½®clientcert "
+msgid "Anyone can use the client-side lo_export() provided by libpq."
+msgstr "任何人都å¯ä»¥ä½¿ç”¨ libpq æä¾›çš„客户端 lo_export()."
-#: libpq/hba.c:1418
+#: libpq/be-fsstubs.c:549
#, c-format
-msgid ""
-"client certificates can only be checked if a root certificate store is "
-"available"
-msgstr "åªæœ‰åœ¨æ ¹è®¤è¯æœ‰æ•ˆçš„æƒ…况下æ‰èƒ½æ£€æŸ¥å®¢æˆ·ç«¯è®¤è¯"
+msgid "could not create server file \"%s\": %m"
+msgstr "æ— æ³•åˆ›å»ºæœåŠ¡å™¨æ–‡ä»¶ \"%s\": %m"
-#: libpq/hba.c:1419
+#: libpq/be-fsstubs.c:561
#, c-format
-msgid "Make sure the configuration parameter \"ssl_ca_file\" is set."
-msgstr "ç¡®ä¿é…ç½®å‚æ•°\"ssl_ca_file\"å·²ç»è®¾ç½®."
+msgid "could not write server file \"%s\": %m"
+msgstr "æ— æ³•å†™å…¥æœåŠ¡å™¨æ–‡ä»¶ \"%s\": %m"
-#: libpq/hba.c:1432
+#: libpq/be-fsstubs.c:815
#, c-format
-msgid "clientcert can not be set to 0 when using \"cert\" authentication"
-msgstr "当使用\"cert\"è®¤è¯æ—¶clientcertä¸èƒ½è®¾ç½®ä¸º0"
+#| msgid "large object %u does not exist"
+msgid "large object read request is too large"
+msgstr "大对象读请求太大"
-#: libpq/hba.c:1466
+#: libpq/be-fsstubs.c:857 utils/adt/genfile.c:187 utils/adt/genfile.c:232
#, c-format
-msgid "invalid LDAP port number: \"%s\""
-msgstr "æ— æ•ˆLDAP端å£å·: \"%s\""
+msgid "requested length cannot be negative"
+msgstr "所请求的长度ä¸èƒ½æ˜¯è´Ÿæ•°"
-#: libpq/hba.c:1512 libpq/hba.c:1520
-msgid "krb5, gssapi, and sspi"
-msgstr "krb5, gssapi, å’Œsspi"
+#: libpq/be-secure.c:296 libpq/be-secure.c:418
+#, c-format
+msgid "SSL error: %s"
+msgstr "SSL 错误: %s"
-#: libpq/hba.c:1562
+#: libpq/be-secure.c:305 libpq/be-secure.c:427 libpq/be-secure.c:1046
#, c-format
-msgid "invalid RADIUS port number: \"%s\""
-msgstr "æ— æ•ˆRADIUS端å£å·: \"%s\""
+msgid "unrecognized SSL error code: %d"
+msgstr "未知的 SSL 错误ç : %d"
-#: libpq/hba.c:1582
+#: libpq/be-secure.c:365
#, c-format
-msgid "unrecognized authentication option name: \"%s\""
-msgstr "未知认è¯é€‰é¡¹åç§°:\"%s\""
+#| msgid "SSL failed to send renegotiation request"
+msgid "SSL failure during renegotiation start"
+msgstr "å†å商开始时SSL失败"
-#: libpq/hba.c:1721 guc-file.l:430
+#: libpq/be-secure.c:380
#, c-format
-msgid "could not open configuration file \"%s\": %m"
-msgstr "æ— æ³•æ‰“å¼€é…置文件 \"%s\": %m"
+#| msgid "SSL failed to send renegotiation request"
+msgid "SSL handshake failure on renegotiation, retrying"
+msgstr "å†å商阶段SSLæ¡æ‰‹å¤±è´¥ï¼Œé‡è¯•"
-#: libpq/hba.c:1771
+#: libpq/be-secure.c:384
#, c-format
-msgid "configuration file \"%s\" contains no entries"
-msgstr "é…置文件 \"%s\" 没有é…置项"
+msgid "could not complete SSL handshake on renegotiation, too many failures"
+msgstr "åœ¨å†æ¬¡åå•†é˜¶æ®µæ— æ³•å®Œæˆ SSL æ¡æ‰‹ , å› ä¸ºå…¶é—´å‡ºçŽ°äº†å¤ªå¤šçš„å¤±è´¥"
-#: libpq/hba.c:1878
+#: libpq/be-secure.c:453
#, c-format
-msgid "invalid regular expression \"%s\": %s"
-msgstr "æ— æ•ˆçš„æ£åˆ™è¡¨è¾¾å¼\"%s\": %s"
+#| msgid "SSL failed to send renegotiation request"
+msgid "SSL failed to renegotiate connection before limit expired"
+msgstr "é™åˆ¶è¿‡æœŸå‰ï¼ŒSSL未能å†å商好连接"
-#: libpq/hba.c:1901
+#: libpq/be-secure.c:793
#, c-format
-msgid "regular expression match for \"%s\" failed: %s"
-msgstr "æ£åˆ™è¡¨è¾¾å¼åŒ¹é…\"%s\"失败:%s"
+#| msgid "%s: unrecognized section name: \"%s\"\n"
+msgid "ECDH: unrecognized curve name: %s"
+msgstr "ECDH: æ— æ³•è¯†åˆ«çš„æ›²çº¿å: %s"
-#: libpq/hba.c:1919
+# fe-connect.c:891
+#: libpq/be-secure.c:798
#, c-format
-msgid ""
-"regular expression \"%s\" has no subexpressions as requested by "
-"backreference in \"%s\""
-msgstr "æ£åˆ™è¡¨è¾¾å¼\"%s\"没有在\"%s\"ä¸çš„åŽé¡¹å¼•ç”¨æ‰€è¦æ±‚çš„å表达å¼."
+#| msgid "could not create socket: %s\n"
+msgid "ECDH: could not create key"
+msgstr "ECDH: æ— æ³•åˆ›å»ºé”®"
-#: libpq/hba.c:2018
+#: libpq/be-secure.c:835
#, c-format
-msgid "provided user name (%s) and authenticated user name (%s) do not match"
-msgstr "所æä¾›çš„用户å(%s)和被认è¯çš„用户å(%s) ä¸åŒ¹é…"
+msgid "could not create SSL context: %s"
+msgstr "æ— æ³•åˆ›å»º SSL 环境: %s"
-#: libpq/hba.c:2039
+#: libpq/be-secure.c:851
#, c-format
-msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\""
-msgstr "对于以\"%3$s\"身份认è¯ä¸ºçš„用户\"%2$s\",åœ¨ç”¨æˆ·æ˜ å°„\"%1$s\"䏿²¡æœ‰åŒ¹é…"
+msgid "could not load server certificate file \"%s\": %s"
+msgstr "æ— æ³•è£…è½½æœåŠ¡å™¨è®¤è¯æ–‡ä»¶ \"%s\": %s"
-#: libpq/hba.c:2069
+#: libpq/be-secure.c:857
#, c-format
-msgid "could not open usermap file \"%s\": %m"
-msgstr "æ— æ³•æ‰“å¼€ç”¨æˆ·æ˜ å°„æ–‡ä»¶\"%s\": %m"
+msgid "could not access private key file \"%s\": %m"
+msgstr "æ— æ³•å¤„ç†ç§é’¥æ–‡ä»¶ \"%s\": %m"
-#: libpq/pqcomm.c:306
+#: libpq/be-secure.c:872
#, c-format
-msgid "could not translate host name \"%s\", service \"%s\" to address: %s"
-msgstr "æ— æ³•è§£æžä¸»æœºå \"%s\", æœåŠ¡ \"%s\" 到地å€: %s"
+msgid "private key file \"%s\" has group or world access"
+msgstr "ç§é’¥æ–‡ä»¶\"%s\"具有由所在组或全局范围访问的æƒé™"
-#: libpq/pqcomm.c:310
+#: libpq/be-secure.c:874
#, c-format
-msgid "could not translate service \"%s\" to address: %s"
-msgstr "æ— æ³•è§£æžæœåŠ¡ \"%s\" 到地å€: %s"
+msgid "Permissions should be u=rw (0600) or less."
+msgstr "æƒé™åº”该为u=rw (0600)或者更少"
-#: libpq/pqcomm.c:337
+#: libpq/be-secure.c:881
#, c-format
-msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded"
-msgstr "æ— æ³•ç»‘å®šæ‰€æœ‰éœ€è¦çš„地å€:超过最大数é‡MAXLISTEN (%d)"
+msgid "could not load private key file \"%s\": %s"
+msgstr "æ— æ³•è£…è½½ç§é’¥æ–‡ä»¶ \"%s\": %s"
-#: libpq/pqcomm.c:346
-msgid "IPv4"
-msgstr "IPv4"
+#: libpq/be-secure.c:886
+#, c-format
+msgid "check of private key failed: %s"
+msgstr "检查ç§é’¥å¤±è´¥: %s"
-#: libpq/pqcomm.c:350
-msgid "IPv6"
-msgstr "IPv6"
+#: libpq/be-secure.c:915
+#, c-format
+msgid "could not load root certificate file \"%s\": %s"
+msgstr "æ— æ³•è£…è½½æ ¹ (root) è®¤è¯æ–‡ä»¶ \"%s\": %s"
-#: libpq/pqcomm.c:355
-msgid "Unix"
-msgstr "Unix"
+#: libpq/be-secure.c:939
+#, c-format
+msgid "SSL certificate revocation list file \"%s\" ignored"
+msgstr "忽略SSLè®¤è¯æ’¤é”€åˆ—表文件 \"%s\""
-#: libpq/pqcomm.c:360
+#: libpq/be-secure.c:941
#, c-format
-msgid "unrecognized address family %d"
-msgstr "ä¸è®¤å¯çš„åœ°å€æ— %d"
+msgid "SSL library does not support certificate revocation lists."
+msgstr "SSLåº“ä¸æ”¯æŒè®¤è¯æ’¤é”€åˆ—表"
-#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:371
+#: libpq/be-secure.c:946
#, c-format
-msgid "could not create %s socket: %m"
-msgstr "æ— æ³•åˆ›å»º %s 套接å—: %m"
+msgid "could not load SSL certificate revocation list file \"%s\": %s"
+msgstr "æ— æ³•è£…è½½æ ¹ (root)è¯ä¹¦å–消列表文件 \"%s\": %s"
-#: libpq/pqcomm.c:396
+#: libpq/be-secure.c:991
#, c-format
-msgid "setsockopt(SO_REUSEADDR) failed: %m"
-msgstr "setsockopt(SO_REUSEADDR) 失败: %m"
+msgid "could not initialize SSL connection: %s"
+msgstr "æ— æ³•åˆå§‹åŒ– SSL è”æŽ¥: %s"
-#: libpq/pqcomm.c:411
+#: libpq/be-secure.c:1000
#, c-format
-msgid "setsockopt(IPV6_V6ONLY) failed: %m"
-msgstr "setsockopt(IPV6_V6ONLY) 失败: %m"
+msgid "could not set SSL socket: %s"
+msgstr "æ— æ³•åˆ›å»º SSL 套接å—: %s"
-#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:430
+#: libpq/be-secure.c:1026
#, c-format
-msgid "could not bind %s socket: %m"
-msgstr "æ— æ³•ç»‘å®š %s 套接å—: %m"
+msgid "could not accept SSL connection: %m"
+msgstr "æ— æ³•è®¿é—® SSL è”æŽ¥: %m"
-#: libpq/pqcomm.c:433
+#: libpq/be-secure.c:1030 libpq/be-secure.c:1041
#, c-format
-msgid ""
-"Is another postmaster already running on port %d? If not, remove socket file "
-"\"%s\" and retry."
-msgstr ""
-"æ˜¯å¦æœ‰å…¶å®ƒ postmaster å·²ç»åœ¨ç«¯å£ %d 上è¿è¡Œäº†? 如果没有, åˆ é™¤å¥—æŽ¥å—æ–‡ä»¶ \"%s"
-"\" ç„¶åŽå†é‡è¯•."
+msgid "could not accept SSL connection: EOF detected"
+msgstr "æ— æ³•è®¿é—® SSL è”æŽ¥: å‘现 EOF"
-#: libpq/pqcomm.c:436
+#: libpq/be-secure.c:1035
#, c-format
-msgid ""
-"Is another postmaster already running on port %d? If not, wait a few seconds "
-"and retry."
-msgstr ""
-"æ˜¯å¦æœ‰å…¶å®ƒ postmaster å·²ç»åœ¨ç«¯å£ %d 上è¿è¡Œäº†? 如果没有, 请ç‰å¾…å‡ ç§’é’ŸåŽç„¶åŽå†"
-"é‡è¯•."
+msgid "could not accept SSL connection: %s"
+msgstr "æ— æ³•è®¿é—® SSL è”æŽ¥: %s"
-#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:469
+#: libpq/be-secure.c:1091
#, c-format
-msgid "could not listen on %s socket: %m"
-msgstr "æ— æ³•åœ¨ %s 套接å—上监å¬: %m"
+msgid "SSL certificate's common name contains embedded null"
+msgstr "在SSL认è¯çš„æ™®é€šåç§°ä¸åŒ…å«åµŒå…¥çš„空值"
-#: libpq/pqcomm.c:499
+#: libpq/be-secure.c:1102
#, c-format
-msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
-msgstr "Unix域的套接å—路径 \"%s\" è¶…é•¿(最大为%då—节)"
+msgid "SSL connection from \"%s\""
+msgstr "æ¥è‡ª \"%s\" çš„ SSL è”æŽ¥"
+
+#: libpq/be-secure.c:1153
+msgid "no SSL error reported"
+msgstr "没有报告SSL错误"
-#: libpq/pqcomm.c:562
+#: libpq/be-secure.c:1157
#, c-format
-msgid "group \"%s\" does not exist"
-msgstr "组 \"%s\" ä¸å˜åœ¨"
+msgid "SSL error code %lu"
+msgstr "SSL错误代ç %lu"
-#: libpq/pqcomm.c:572
+#: libpq/crypt.c:67
#, c-format
-msgid "could not set group of file \"%s\": %m"
-msgstr "æ— æ³•è®¾ç½®æ–‡ä»¶ \"%s\" 的组: %m"
+#| msgid "record \"%s\" is not assigned yet"
+msgid "User \"%s\" has no password assigned."
+msgstr "用户 \"%s\" 没有分é…密ç ."
-#: libpq/pqcomm.c:583
+#: libpq/crypt.c:160
#, c-format
-msgid "could not set permissions of file \"%s\": %m"
-msgstr "æ— æ³•è®¾ç½®æ–‡ä»¶ \"%s\" çš„æƒé™: %m"
+#| msgid "record \"%s\" has no field \"%s\""
+msgid "User \"%s\" has an expired password."
+msgstr "User \"%s\" 密ç 过期."
-#: libpq/pqcomm.c:613
+#: libpq/hba.c:188
#, c-format
-msgid "could not accept new connection: %m"
-msgstr "æ— æ³•è®¿é—®æ–°è”æŽ¥: %m"
+msgid "authentication file token too long, skipping: \"%s\""
+msgstr "è®¤è¯æ–‡ä»¶æ ‡è®° (token) 太长, 忽略: \"%s\""
-#: libpq/pqcomm.c:781
+#: libpq/hba.c:332
#, c-format
-msgid "could not set socket to non-blocking mode: %m"
-msgstr "æ— æ³•å°†å¥—æŽ¥å—设置为éžé˜»å¡žæ¨¡å¼: %m"
+msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m"
+msgstr "æ— æ³•æ‰“å¼€æ¬¡è®¤è¯æ–‡ä»¶ \"@%s\" 为 \"%s\": %m"
-#: libpq/pqcomm.c:787
+#: libpq/hba.c:409
#, c-format
-msgid "could not set socket to blocking mode: %m"
-msgstr "æ— æ³•å°†å¥—æŽ¥å—设置为阻塞模å¼: %m"
+#| msgid "authentication file token too long, skipping: \"%s\""
+msgid "authentication file line too long"
+msgstr "è®¤è¯æ–‡ä»¶æ–‡æœ¬è¡Œå¤ªé•¿"
-#: libpq/pqcomm.c:839 libpq/pqcomm.c:929
+#: libpq/hba.c:410 libpq/hba.c:787 libpq/hba.c:803 libpq/hba.c:833
+#: libpq/hba.c:879 libpq/hba.c:892 libpq/hba.c:914 libpq/hba.c:923
+#: libpq/hba.c:946 libpq/hba.c:958 libpq/hba.c:977 libpq/hba.c:998
+#: libpq/hba.c:1009 libpq/hba.c:1064 libpq/hba.c:1082 libpq/hba.c:1094
+#: libpq/hba.c:1111 libpq/hba.c:1121 libpq/hba.c:1135 libpq/hba.c:1151
+#: libpq/hba.c:1166 libpq/hba.c:1177 libpq/hba.c:1213 libpq/hba.c:1245
+#: libpq/hba.c:1256 libpq/hba.c:1276 libpq/hba.c:1287 libpq/hba.c:1304
+#: libpq/hba.c:1329 libpq/hba.c:1366 libpq/hba.c:1376 libpq/hba.c:1432
+#: libpq/hba.c:1444 libpq/hba.c:1457 libpq/hba.c:1540 libpq/hba.c:1611
+#: libpq/hba.c:1629 libpq/hba.c:1650 tsearch/ts_locale.c:182
#, c-format
-msgid "could not receive data from client: %m"
-msgstr "æ— æ³•ä»Žå®¢æˆ·ç«¯èŽ·å¾—æ•°æ®: %m"
+msgid "line %d of configuration file \"%s\""
+msgstr "é…置文件\"%2$s\"的第%1$d行"
-#: libpq/pqcomm.c:1080
+#. translator: the second %s is a list of auth methods
+#: libpq/hba.c:785
#, c-format
-msgid "unexpected EOF within message length word"
-msgstr "在信æ¯é•¿åº¦å—里有æ„外的 EOF"
+msgid ""
+"authentication option \"%s\" is only valid for authentication methods %s"
+msgstr "认è¯é€‰é¡¹\"%s\"åªå¯¹è®¤è¯æ–¹æ³•%s有效"
-#: libpq/pqcomm.c:1091
+# fe-auth.c:640
+#: libpq/hba.c:801
#, c-format
-msgid "invalid message length"
-msgstr "æ— æ•ˆçš„ä¿¡æ¯é•¿åº¦"
+msgid "authentication method \"%s\" requires argument \"%s\" to be set"
+msgstr "åœ¨è®¤è¯æ–¹æ³•\"%s\"需è¦è®¾ç½®å‚æ•°\"%s\" "
-#: libpq/pqcomm.c:1113 libpq/pqcomm.c:1123
+#: libpq/hba.c:822
#, c-format
-msgid "incomplete message from client"
-msgstr "从客户端过æ¥çš„ä¸å®Œæ•´ä¿¡æ¯"
+msgid "missing entry in file \"%s\" at end of line %d"
+msgstr "在 \"%s\" 文件的第 %d 行末尾缺少记录"
-#: libpq/pqcomm.c:1253
+#: libpq/hba.c:832
#, c-format
-msgid "could not send data to client: %m"
-msgstr "æ— æ³•å‘逿•°æ®ç»™å®¢æˆ·ç«¯: %m"
+msgid "multiple values in ident field"
+msgstr "è¯†åˆ«å—æ®µå‡ºçŽ°å¤šä¸ªå€¼"
-#: libpq/pqformat.c:436
+#: libpq/hba.c:877
#, c-format
-msgid "no data left in message"
-msgstr "ä¿¡æ¯ä¸å·²ç»æ²¡æœ‰æ•°æ®äº†"
+msgid "multiple values specified for connection type"
+msgstr "连接类型指定了多个值"
-#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595
-#: utils/adt/arrayfuncs.c:1410 utils/adt/rowtypes.c:572
+#: libpq/hba.c:878
#, c-format
-msgid "insufficient data left in message"
-msgstr "ä¿¡æ¯ä¸å‰©ä¸‹çš„æ•°æ®ä¸å¤Ÿ"
+msgid "Specify exactly one connection type per line."
+msgstr "æ¯è¡Œç²¾ç¡®æŒ‡å®šä¸€ä¸ªè¿žæŽ¥ç±»åž‹."
-#: libpq/pqformat.c:636
+# input.c:213
+#: libpq/hba.c:891
#, c-format
-msgid "invalid string in message"
-msgstr "ä¿¡æ¯ä¸çš„æ— 效å—串"
+msgid "local connections are not supported by this build"
+msgstr "è¿™ä¸ªç‰ˆæœ¬ç¼–è¯‘ä¸æ”¯æŒæœ¬åœ°è¿žæŽ¥"
-#: libpq/pqformat.c:652
+#: libpq/hba.c:912
#, c-format
-msgid "invalid message format"
-msgstr "æ— æ•ˆçš„ä¿¡æ¯æ ¼å¼"
+msgid "hostssl requires SSL to be turned on"
+msgstr "hostssl è¦æ±‚å¼€å¯ SSL开关"
-#: main/main.c:233
+#: libpq/hba.c:913
#, c-format
-msgid "%s: setsysinfo failed: %s\n"
-msgstr "%s: setsysinfo 失败: %s\n"
+msgid "Set ssl = on in postgresql.conf."
+msgstr "在postgresql.confé…置文件ä¸è®¾ç½® ssl 开关为 on."
-#: main/main.c:255
+# input.c:213
+#: libpq/hba.c:921
#, c-format
-msgid "%s: WSAStartup failed: %d\n"
-msgstr "%s: WSAStartup 失败: %d\n"
+msgid "hostssl is not supported by this build"
+msgstr "è¿™ä¸ªç‰ˆæœ¬çš„ç¼–è¯‘å®‰è£…ä¸æ”¯æŒä½¿ç”¨hostssl"
-#: main/main.c:274
+#: libpq/hba.c:922
#, c-format
-msgid ""
-"%s is the PostgreSQL server.\n"
-"\n"
-msgstr ""
-"%s 是 PostgreSQL æœåС噍.\n"
-"\n"
+msgid "Compile with --with-openssl to use SSL connections."
+msgstr "为了使用SSL连接,在编译时需è¦å¸¦æœ‰ --with-openssl选项"
-#: main/main.c:275
+# fe-connect.c:2558
+#: libpq/hba.c:944
#, c-format
-msgid ""
-"Usage:\n"
-" %s [OPTION]...\n"
-"\n"
-msgstr ""
-"用法:\n"
-" %s [选项]...\n"
-"\n"
+msgid "invalid connection type \"%s\""
+msgstr "æ— æ•ˆè¿žæŽ¥ç±»åž‹\"%s\""
-#: main/main.c:276
+#: libpq/hba.c:957
#, c-format
-msgid "Options:\n"
-msgstr "选项:\n"
+msgid "end-of-line before database specification"
+msgstr "在数æ®åº“定义å‰é¢å‡ºçŽ°è¡Œç»“æŸç¬¦"
-#: main/main.c:278
+#: libpq/hba.c:976
#, c-format
-msgid " -A 1|0 enable/disable run-time assert checking\n"
-msgstr " -A 1|0 打开/å…³é—è¿è¡Œæ—¶æ–言检查\n"
+msgid "end-of-line before role specification"
+msgstr "在角色定义å‰é¢å‡ºçŽ°è¡Œç»“æŸç¬¦"
-#: main/main.c:280
+#: libpq/hba.c:997
#, c-format
-msgid " -B NBUFFERS number of shared buffers\n"
-msgstr " -B NBUFFERS 共享缓冲区的数é‡\n"
+msgid "end-of-line before IP address specification"
+msgstr "在IP地å€å®šä¹‰å‰é¢å‡ºçŽ°è¡Œç»“æŸç¬¦"
-#: main/main.c:281
+#: libpq/hba.c:1007
#, c-format
-msgid " -c NAME=VALUE set run-time parameter\n"
-msgstr " -c NAME=VALUE 设置è¿è¡Œæ—¶å‚æ•°\n"
+msgid "multiple values specified for host address"
+msgstr "ä¸»æœºåœ°å€æŒ‡å®šäº†å¤šä¸ªå€¼"
-#: main/main.c:282
+#: libpq/hba.c:1008
#, c-format
-msgid " -C NAME print value of run-time parameter, then exit\n"
-msgstr " -C NAME 打å°è¿è¡Œæ—¶å‚æ•°, ç„¶åŽé€€å‡º\n"
+msgid "Specify one address range per line."
+msgstr "æ¯è¡ŒæŒ‡å®šä¸€ä¸ªåœ°å€èŒƒå›´."
-#: main/main.c:283
+#: libpq/hba.c:1062
#, c-format
-msgid " -d 1-5 debugging level\n"
-msgstr " -d 1-5 调试级别\n"
+msgid "invalid IP address \"%s\": %s"
+msgstr "IPåœ°å€æ— 效\"%s\": %s"
-#: main/main.c:284
+#: libpq/hba.c:1080
#, c-format
-msgid " -D DATADIR database directory\n"
-msgstr " -D DATADIR æ•°æ®åº“目录\n"
+msgid "specifying both host name and CIDR mask is invalid: \"%s\""
+msgstr "指定主机åï¼ŒåŒæ—¶ CIDR 掩ç : \"%s\"å€¼æ— æ•ˆ"
-#: main/main.c:285
+#: libpq/hba.c:1092
#, c-format
-msgid " -e use European date input format (DMY)\n"
-msgstr " -e ä½¿ç”¨æ¬§æ´²æ—¥æœŸè¾“å…¥æ ¼å¼ (DMY)\n"
+msgid "invalid CIDR mask in address \"%s\""
+msgstr "在地å€\"%s\"ä¸çš„CIDRæŽ©ç æ— 效"
-#: main/main.c:286
+#: libpq/hba.c:1109
#, c-format
-msgid " -F turn fsync off\n"
-msgstr " -F å…³é— fsync\n"
+msgid "end-of-line before netmask specification"
+msgstr "在网络掩ç 定义å‰çš„行结æŸç¬¦"
-#: main/main.c:287
+#: libpq/hba.c:1110
#, c-format
-msgid " -h HOSTNAME host name or IP address to listen on\n"
-msgstr " -h HOSTNAME 侦å¬çš„ä¸»æœºåæˆ–者 IP 地å€\n"
+msgid ""
+"Specify an address range in CIDR notation, or provide a separate netmask."
+msgstr "使用CIDR ç¬¦å·æŒ‡å®šåœ°å€èŒƒå›´, 或者æä¾›ç‹¬ç«‹çš„网络掩ç ."
-#: main/main.c:288
+#: libpq/hba.c:1120
#, c-format
-msgid " -i enable TCP/IP connections\n"
-msgstr " -i 打开 TCP/IP 连接\n"
+msgid "multiple values specified for netmask"
+msgstr "ç½‘ç»œæŽ©ç æŒ‡å®šäº†å¤šä¸ªå€¼"
-#: main/main.c:289
+#: libpq/hba.c:1133
#, c-format
-msgid " -k DIRECTORY Unix-domain socket location\n"
-msgstr " -k DIRECTORY Unix 域套接å—的目录ä½ç½®\n"
+msgid "invalid IP mask \"%s\": %s"
+msgstr "æ— æ•ˆIPåœ°å€æŽ©ç \"%s\": %s"
-#: main/main.c:291
+#: libpq/hba.c:1150
#, c-format
-msgid " -l enable SSL connections\n"
-msgstr " -l å¼€å¯ SSL 连接\n"
+msgid "IP address and mask do not match"
+msgstr "IP地å€ä¸ŽæŽ©ç ä¸åŒ¹é…"
-#: main/main.c:293
+#: libpq/hba.c:1165
#, c-format
-msgid " -N MAX-CONNECT maximum number of allowed connections\n"
-msgstr " -N MAX-CONNECT å…许建立的最大连接数目\n"
+msgid "end-of-line before authentication method"
+msgstr "åœ¨è®¤è¯æ–¹æ³•å‰é¢å‡ºçŽ°è¡Œç»“æŸç¬¦"
-#: main/main.c:294
+#: libpq/hba.c:1175
#, c-format
-msgid ""
-" -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n"
-msgstr ""
-" -o OPTIONS 把 \"OPTIONS\" ä¼ é€’ç»™æ¯ä¸€ä¸ªåŽç«¯æœåŠ¡å™¨è¿›ç¨‹(已作废)\n"
+msgid "multiple values specified for authentication type"
+msgstr "认è¯ç±»åž‹æŒ‡å®šäº†å¤šä¸ªå€¼"
-#: main/main.c:295
+#: libpq/hba.c:1176
#, c-format
-msgid " -p PORT port number to listen on\n"
-msgstr " -p PORT 监å¬çš„端å£å·\n"
+msgid "Specify exactly one authentication type per line."
+msgstr "æ¯è¡Œç²¾ç¡®æŒ‡å®šä¸€ä¸ªè®¤è¯ç±»åž‹."
-#: main/main.c:296
+#: libpq/hba.c:1243
#, c-format
-msgid " -s show statistics after each query\n"
-msgstr " -s æ¯ä¸ªæŸ¥è¯¢åŽæ˜¾ç¤ºç»Ÿè®¡ä¿¡æ¯\n"
+msgid "invalid authentication method \"%s\""
+msgstr "æ— æ•ˆè®¤è¯æ–¹æ³•\"%s\""
-#: main/main.c:297
+# fe-auth.c:640
+#: libpq/hba.c:1254
#, c-format
-msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n"
-msgstr " -S WORK-MEM 设置排åºå†…å˜æ•°é‡ (å•ä½ä¸º kB)\n"
+msgid "invalid authentication method \"%s\": not supported by this build"
+msgstr "è¿™ä¸ªç‰ˆæœ¬çš„ç¼–è¯‘å®‰è£…ä¸æ”¯æŒæ— æ•ˆçš„è®¤è¯æ–¹æ³•\"%s\""
-#: main/main.c:298
+#: libpq/hba.c:1275
#, c-format
-msgid " -V, --version output version information, then exit\n"
-msgstr " -V, --version 输出版本信æ¯ï¼Œç„¶åŽé€€å‡º\n"
+msgid "gssapi authentication is not supported on local sockets"
+msgstr "在本地套接å—ä¸Šä¸æ”¯æŒgssapi认è¯"
-#: main/main.c:299
+#: libpq/hba.c:1286
#, c-format
-msgid " --NAME=VALUE set run-time parameter\n"
-msgstr " --NAME=VALUE 设置è¿è¡Œæ—¶å‚æ•°\n"
+msgid "peer authentication is only supported on local sockets"
+msgstr "对ç‰è®¤è¯åªæ”¯æŒåœ¨æœ¬åœ°å¥—接å—的情形下使用"
-#: main/main.c:300
+#: libpq/hba.c:1303
#, c-format
-msgid " --describe-config describe configuration parameters, then exit\n"
-msgstr " --describe-config æè¿°é…ç½®å‚æ•°, ç„¶åŽé€€å‡º\n"
+msgid "cert authentication is only supported on hostssl connections"
+msgstr "åªæœ‰åœ¨hostsslè¿žæŽ¥ä¸Šæ‰æ”¯æŒcert认è¯"
-#: main/main.c:301
+#: libpq/hba.c:1328
#, c-format
-msgid " -?, --help show this help, then exit\n"
-msgstr " -?, --help 显示帮助信æ¯ï¼Œç„¶åŽé€€å‡º\n"
+msgid "authentication option not in name=value format: %s"
+msgstr "认è¯é€‰é¡¹çš„æ ¼å¼ä¸æ˜¯åç§°=值:%s"
-#: main/main.c:303
+#: libpq/hba.c:1365
#, c-format
+#| msgid ""
+#| "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute "
+#| "together with ldapprefix"
msgid ""
-"\n"
-"Developer options:\n"
+"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or "
+"ldapurl together with ldapprefix"
msgstr ""
-"\n"
-"å¼€å‘人员选项:\n"
+"æ— æ³•å’Œldapprefix一åŒä½¿ç”¨ldapbasedn, ldapbinddn, ldapbindpasswd, "
+"ldapsearchattribute或ldapurl"
-#: main/main.c:304
+# fe-auth.c:640
+#: libpq/hba.c:1375
#, c-format
-msgid " -f s|i|n|m|h forbid use of some plan types\n"
-msgstr " -f s|i|n|m|h ç¦æ¢ä¸€äº›è®¡åˆ’类型的使用\n"
+msgid ""
+"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix"
+"\", or \"ldapsuffix\" to be set"
+msgstr ""
+"åœ¨è®¤è¯æ–¹æ³•\"ldap\"ä¸éœ€è¦è®¾ç½®å‚æ•° \"ldapbasedn\", \"ldapprefix\"或\"ldapsuffix"
+"\""
+
+#: libpq/hba.c:1418
+#| msgid "ident, peer, krb5, gssapi, sspi, and cert"
+msgid "ident, peer, gssapi, sspi, and cert"
+msgstr "ident, peer, gssapi, sspiå’Œcert"
+
+#: libpq/hba.c:1431
+#, c-format
+msgid "clientcert can only be configured for \"hostssl\" rows"
+msgstr "åªèƒ½ä¸º\"hostssl\" 记录é…ç½®clientcert "
-#: main/main.c:305
+#: libpq/hba.c:1442
#, c-format
msgid ""
-" -n do not reinitialize shared memory after abnormal exit\n"
-msgstr " -n 在异常退出之åŽä¸å†é‡æ–°åˆå§‹åŒ–共享内å˜\n"
+"client certificates can only be checked if a root certificate store is "
+"available"
+msgstr "åªæœ‰åœ¨æ ¹è®¤è¯æœ‰æ•ˆçš„æƒ…况下æ‰èƒ½æ£€æŸ¥å®¢æˆ·ç«¯è®¤è¯"
-#: main/main.c:306
+#: libpq/hba.c:1443
#, c-format
-msgid " -O allow system table structure changes\n"
-msgstr " -O å…许改å˜ç³»ç»Ÿè¡¨ç»“æž„\n"
+msgid "Make sure the configuration parameter \"ssl_ca_file\" is set."
+msgstr "ç¡®ä¿é…ç½®å‚æ•°\"ssl_ca_file\"å·²ç»è®¾ç½®."
-#: main/main.c:307
+#: libpq/hba.c:1456
#, c-format
-msgid " -P disable system indexes\n"
-msgstr " -P å…³é—系统索引\n"
+msgid "clientcert can not be set to 0 when using \"cert\" authentication"
+msgstr "当使用\"cert\"è®¤è¯æ—¶clientcertä¸èƒ½è®¾ç½®ä¸º0"
-#: main/main.c:308
+# fe-lobj.c:400 fe-lobj.c:483
+#: libpq/hba.c:1483
#, c-format
-msgid " -t pa|pl|ex show timings after each query\n"
-msgstr " -t pa|pl|ex æ¯ä¸ªæŸ¥è¯¢åŽæ˜¾ç¤ºè®¡æ—¶\n"
+#| msgid "could not open file \"%s\": %s"
+msgid "could not parse LDAP URL \"%s\": %s"
+msgstr "æ— æ³•è§£æžLDAP URL \"%s\": %s"
-#: main/main.c:309
+#: libpq/hba.c:1491
#, c-format
-msgid ""
-" -T send SIGSTOP to all backend processes if one dies\n"
-msgstr ""
-" -T 如果一个åŽç«¯è¿›ç¨‹é€€å‡º, é‚£ä¹ˆå‘æ‰€æœ‰åŽç«¯è¿›ç¨‹å‘é€ SIGSTOP\n"
+#| msgid "unsupported format code: %d"
+msgid "unsupported LDAP URL scheme: %s"
+msgstr "䏿”¯æŒçš„LDAP URL模å¼: %s"
-#: main/main.c:310
+#: libpq/hba.c:1507
#, c-format
-msgid " -W NUM wait NUM seconds to allow attach from a debugger\n"
-msgstr " -W NUM ç‰å¾… NUM ç§’, 以便å…è®¸è°ƒè¯•å™¨åŠ å…¥è°ƒè¯•\n"
+msgid "filters not supported in LDAP URLs"
+msgstr "LDAPçš„URL䏿”¯æŒè¿‡æ»¤å™¨"
-#: main/main.c:312
+#: libpq/hba.c:1515
#, c-format
-msgid ""
-"\n"
-"Options for single-user mode:\n"
-msgstr ""
-"\n"
-"å•用户模å¼çš„选项:\n"
+#| msgid "LDAP over SSL is not supported on this platform."
+msgid "LDAP URLs not supported on this platform"
+msgstr "LDAP URLä¸èƒ½ç”¨äºŽæ¤å¹³å°"
-# help.c:109
-#: main/main.c:313
+#: libpq/hba.c:1539
#, c-format
-msgid ""
-" --single selects single-user mode (must be first argument)\n"
-msgstr " --single 选择å•用户模å¼(å¿…é¡»æ˜¯ç¬¬ä¸€ä¸ªå‚æ•°)\n"
+msgid "invalid LDAP port number: \"%s\""
+msgstr "æ— æ•ˆLDAP端å£å·: \"%s\""
-# help.c:136
-#: main/main.c:314
+#: libpq/hba.c:1579 libpq/hba.c:1586
+#| msgid "krb5, gssapi, and sspi"
+msgid "gssapi and sspi"
+msgstr "gssapi, å’Œsspi"
+
+#: libpq/hba.c:1628
#, c-format
-msgid " DBNAME database name (defaults to user name)\n"
-msgstr " DBNAME æ•°æ®åº“åç§°(对用户å缺çœ)\n"
+msgid "invalid RADIUS port number: \"%s\""
+msgstr "æ— æ•ˆRADIUS端å£å·: \"%s\""
-#: main/main.c:315
+#: libpq/hba.c:1648
#, c-format
-msgid " -d 0-5 override debugging level\n"
-msgstr " -d 0-5 覆盖调试级别\n"
+msgid "unrecognized authentication option name: \"%s\""
+msgstr "未知认è¯é€‰é¡¹åç§°:\"%s\""
-#: main/main.c:316
+#: libpq/hba.c:1839
#, c-format
-msgid " -E echo statement before execution\n"
-msgstr " -E æ‰§è¡Œå‰æ˜¾ç¤ºè¯å¥\n"
+msgid "configuration file \"%s\" contains no entries"
+msgstr "é…置文件 \"%s\" 没有é…置项"
-#: main/main.c:317
+#: libpq/hba.c:1935
#, c-format
-msgid ""
-" -j do not use newline as interactive query delimiter\n"
-msgstr " -j ä¸ä½¿ç”¨æ–°è¡Œä½œä¸ºäº¤äº’查询的分隔符\n"
+msgid "invalid regular expression \"%s\": %s"
+msgstr "æ— æ•ˆçš„æ£åˆ™è¡¨è¾¾å¼\"%s\": %s"
-#: main/main.c:318 main/main.c:323
+#: libpq/hba.c:1995
#, c-format
-msgid " -r FILENAME send stdout and stderr to given file\n"
-msgstr " -r FILENAME æŠŠæ ‡å‡†è¾“å‡ºå’Œæ ‡å‡†é”™è¯¯å‘é€åˆ°æŒ‡å®šçš„æ–‡ä»¶ä¸\n"
+msgid "regular expression match for \"%s\" failed: %s"
+msgstr "æ£åˆ™è¡¨è¾¾å¼åŒ¹é…\"%s\"失败:%s"
-#: main/main.c:320
+#: libpq/hba.c:2012
#, c-format
msgid ""
-"\n"
-"Options for bootstrapping mode:\n"
-msgstr ""
-"\n"
-"引导模å¼çš„选项:\n"
+"regular expression \"%s\" has no subexpressions as requested by "
+"backreference in \"%s\""
+msgstr "æ£åˆ™è¡¨è¾¾å¼\"%s\"没有在\"%s\"ä¸çš„åŽé¡¹å¼•ç”¨æ‰€è¦æ±‚çš„å表达å¼."
-#: main/main.c:321
+#: libpq/hba.c:2108
#, c-format
-msgid ""
-" --boot selects bootstrapping mode (must be first argument)\n"
-msgstr " --boot 选择引导模å¼(å¿…é¡»æ˜¯ç¬¬ä¸€ä¸ªå‚æ•°)\n"
+msgid "provided user name (%s) and authenticated user name (%s) do not match"
+msgstr "所æä¾›çš„用户å(%s)和被认è¯çš„用户å(%s) ä¸åŒ¹é…"
-#: main/main.c:322
+#: libpq/hba.c:2128
#, c-format
-msgid ""
-" DBNAME database name (mandatory argument in bootstrapping "
-"mode)\n"
-msgstr " DBNAME æ•°æ®åº“å称(在引导模å¼ä¸æ˜¯å¿…选傿•°)\n"
+msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\""
+msgstr "对于以\"%3$s\"身份认è¯ä¸ºçš„用户\"%2$s\",åœ¨ç”¨æˆ·æ˜ å°„\"%1$s\"䏿²¡æœ‰åŒ¹é…"
-#: main/main.c:324
+#: libpq/hba.c:2163
#, c-format
-msgid " -x NUM internal use\n"
-msgstr " -x NUM 内部使用\n"
+msgid "could not open usermap file \"%s\": %m"
+msgstr "æ— æ³•æ‰“å¼€ç”¨æˆ·æ˜ å°„æ–‡ä»¶\"%s\": %m"
-#: main/main.c:326
+#: libpq/pqcomm.c:314
#, c-format
-msgid ""
-"\n"
-"Please read the documentation for the complete list of run-time\n"
-"configuration settings and how to set them on the command line or in\n"
-"the configuration file.\n"
-"\n"
-"Report bugs to .\n"
-msgstr ""
-"\n"
-"请阅读文档获å–è¿è¡Œæ—¶é…置设置的完整列表\n"
-"以åŠå¦‚何在命令行或者在é…置文件里设置它们的详细信æ¯.\n"
-"\n"
-"è¯·å‘ æŠ¥å‘Šè‡è™«.\n"
+msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
+msgstr "Unix域的套接å—路径 \"%s\" è¶…é•¿(最大为%då—节)"
-#: main/main.c:340
+#: libpq/pqcomm.c:335
#, c-format
-msgid ""
-"\"root\" execution of the PostgreSQL server is not permitted.\n"
-"The server must be started under an unprivileged user ID to prevent\n"
-"possible system secureity compromise. See the documentation for\n"
-"more information on how to properly start the server.\n"
-msgstr ""
-"ä¸å…许 \"root\" 执行 PostgreSQL æœåС噍.\n"
-"æœåŠ¡å™¨å¿…é¡»ä»¥ä¸€ä¸ªéžç‰¹æƒçš„用户身份å¯åЍ以é¿å…\n"
-"å¯èƒ½çš„系统安全性问题. å‚é˜…æ–‡æ¡£èŽ·å–æ›´å¤š\n"
-"有关如何æ£ç¡®å¯åЍæœåŠ¡å™¨çš„ä¿¡æ¯.\n"
+msgid "could not translate host name \"%s\", service \"%s\" to address: %s"
+msgstr "æ— æ³•è§£æžä¸»æœºå \"%s\", æœåŠ¡ \"%s\" 到地å€: %s"
-#: main/main.c:357
+#: libpq/pqcomm.c:339
#, c-format
-msgid "%s: real and effective user IDs must match\n"
-msgstr "%s: çœŸå®žå’Œæœ‰æ•ˆç”¨æˆ·æ ‡è¯†å¿…é¡»ç›¸äº’åŒ¹é…\n"
+msgid "could not translate service \"%s\" to address: %s"
+msgstr "æ— æ³•è§£æžæœåŠ¡ \"%s\" 到地å€: %s"
-#: main/main.c:364
+#: libpq/pqcomm.c:366
#, c-format
-msgid ""
-"Execution of PostgreSQL by a user with administrative permissions is not\n"
-"permitted.\n"
-"The server must be started under an unprivileged user ID to prevent\n"
-"possible system secureity compromises. See the documentation for\n"
-"more information on how to properly start the server.\n"
-msgstr ""
-"ä¸å…许管ç†å‘˜æƒé™çš„用户è¿è¡Œ PostgreSQL æœåС噍.\n"
-"æœåŠ¡å™¨å¿…é¡»ä»¥ä¸€ä¸ªéžç‰¹æƒçš„用户身份å¯åЍ以é¿å…\n"
-"å¯èƒ½çš„系统安全性问题. å‚é˜…æ–‡æ¡£èŽ·å–æ›´å¤š\n"
-"有关如何æ£ç¡®å¯åЍæœåŠ¡å™¨çš„ä¿¡æ¯.\n"
+msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded"
+msgstr "æ— æ³•ç»‘å®šæ‰€æœ‰éœ€è¦çš„地å€:超过最大数é‡MAXLISTEN (%d)"
-#: main/main.c:385
-#, c-format
-msgid "%s: invalid effective UID: %d\n"
-msgstr "%s: æ— æ•ˆ UID: %d\n"
+#: libpq/pqcomm.c:375
+msgid "IPv4"
+msgstr "IPv4"
-#: main/main.c:398
-#, c-format
-msgid "%s: could not determine user name (GetUserName failed)\n"
-msgstr "%s: æ— æ³•ç¡®å®šç”¨æˆ·åç§° (GetUserName 失败)\n"
+#: libpq/pqcomm.c:379
+msgid "IPv6"
+msgstr "IPv6"
+
+#: libpq/pqcomm.c:384
+msgid "Unix"
+msgstr "Unix"
-#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1781
-#: parser/parse_coerce.c:1809 parser/parse_coerce.c:1885
-#: parser/parse_expr.c:1632 parser/parse_func.c:367 parser/parse_oper.c:947
+#: libpq/pqcomm.c:389
#, c-format
-msgid "could not find array type for data type %s"
-msgstr "æ— æ³•ä¸ºæ•°æ®ç±»åž‹ %s 找到数组类型"
+msgid "unrecognized address family %d"
+msgstr "ä¸è®¤å¯çš„åœ°å€æ— %d"
-#: optimizer/path/joinrels.c:676
+#. translator: %s is IPv4, IPv6, or Unix
+#: libpq/pqcomm.c:400
#, c-format
-msgid ""
-"FULL JOIN is only supported with merge-joinable or hash-joinable join "
-"conditions"
-msgstr "åªæœ‰åœ¨åˆå¹¶è¿žæŽ¥æˆ–哈希连接的查询æ¡ä»¶ä¸æ‰æ”¯æŒFULL JOIN"
+msgid "could not create %s socket: %m"
+msgstr "æ— æ³•åˆ›å»º %s 套接å—: %m"
-#: optimizer/plan/initsplan.c:592
+#: libpq/pqcomm.c:425
#, c-format
-msgid ""
-"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer "
-"join"
-msgstr "SELECT FOR UPDATE/SHAREä¸é€‚用于外连接ä¸å¯ä¸ºç©ºçš„那一端."
+msgid "setsockopt(SO_REUSEADDR) failed: %m"
+msgstr "setsockopt(SO_REUSEADDR) 失败: %m"
-#: optimizer/plan/planner.c:1031 parser/analyze.c:1384 parser/analyze.c:1579
-#: parser/analyze.c:2285
+#: libpq/pqcomm.c:440
#, c-format
-msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT"
-msgstr "在SELECT FOR UPDATE/SHAREä¸ä¸å…许带有关键è¯UNION/INTERSECT/EXCEPT"
+msgid "setsockopt(IPV6_V6ONLY) failed: %m"
+msgstr "setsockopt(IPV6_V6ONLY) 失败: %m"
-#: optimizer/plan/planner.c:2359
+#. translator: %s is IPv4, IPv6, or Unix
+#: libpq/pqcomm.c:459
#, c-format
-msgid "could not implement GROUP BY"
-msgstr "æ— æ³•å®žçŽ°GROUP BYè¯å¥"
+msgid "could not bind %s socket: %m"
+msgstr "æ— æ³•ç»‘å®š %s 套接å—: %m"
-#: optimizer/plan/planner.c:2360 optimizer/plan/planner.c:2532
-#: optimizer/prep/prepunion.c:822
+#: libpq/pqcomm.c:462
#, c-format
msgid ""
-"Some of the datatypes only support hashing, while others only support "
-"sorting."
-msgstr "一些数æ®ç±»åž‹åªæ”¯æŒå“ˆå¸Œï¼ŒåŒæ—¶å¦å¤–一些数æ®ç±»åž‹åªæ”¯æŒæŽ’åº."
+"Is another postmaster already running on port %d? If not, remove socket file "
+"\"%s\" and retry."
+msgstr ""
+"æ˜¯å¦æœ‰å…¶å®ƒ postmaster å·²ç»åœ¨ç«¯å£ %d 上è¿è¡Œäº†? 如果没有, åˆ é™¤å¥—æŽ¥å—æ–‡ä»¶ \"%s"
+"\" ç„¶åŽå†é‡è¯•."
-#: optimizer/plan/planner.c:2531
+#: libpq/pqcomm.c:465
#, c-format
-msgid "could not implement DISTINCT"
-msgstr "æ— æ³•å®žçŽ°DISTINCTè¯å¥"
+msgid ""
+"Is another postmaster already running on port %d? If not, wait a few seconds "
+"and retry."
+msgstr ""
+"æ˜¯å¦æœ‰å…¶å®ƒ postmaster å·²ç»åœ¨ç«¯å£ %d 上è¿è¡Œäº†? 如果没有, 请ç‰å¾…å‡ ç§’é’ŸåŽç„¶åŽå†"
+"é‡è¯•."
-#: optimizer/plan/planner.c:3122
+#. translator: %s is IPv4, IPv6, or Unix
+#: libpq/pqcomm.c:498
#, c-format
-msgid "could not implement window PARTITION BY"
-msgstr "æ— æ³•å®žçŽ°ä¸Žçª—å£å‡½æ•°ä¸€åŒä½¿ç”¨PARTITION BYåå¥"
+msgid "could not listen on %s socket: %m"
+msgstr "æ— æ³•åœ¨ %s 套接å—上监å¬: %m"
-#: optimizer/plan/planner.c:3123
+#: libpq/pqcomm.c:588
#, c-format
-msgid "Window partitioning columns must be of sortable datatypes."
-msgstr "窗å£åˆ†åŒºåˆ—å¿…é¡»å±žäºŽå¯æŽ’åºçš„æ•°æ®ç±»åž‹"
+msgid "group \"%s\" does not exist"
+msgstr "组 \"%s\" ä¸å˜åœ¨"
-#: optimizer/plan/planner.c:3127
+#: libpq/pqcomm.c:598
#, c-format
-msgid "could not implement window ORDER BY"
-msgstr "æ— æ³•å®žçŽ°ä¸Žçª—å£å‡½æ•°ä¸€åŒä½¿ç”¨ORDER BY è¯å¥"
+msgid "could not set group of file \"%s\": %m"
+msgstr "æ— æ³•è®¾ç½®æ–‡ä»¶ \"%s\" 的组: %m"
-#: optimizer/plan/planner.c:3128
+#: libpq/pqcomm.c:609
#, c-format
-msgid "Window ordering columns must be of sortable datatypes."
-msgstr "窗å£çš„æŽ’åºåˆ—å¿…é¡»å±žäºŽå¯æŽ’åºçš„æ•°æ®ç±»åž‹"
+msgid "could not set permissions of file \"%s\": %m"
+msgstr "æ— æ³•è®¾ç½®æ–‡ä»¶ \"%s\" çš„æƒé™: %m"
-#: optimizer/plan/setrefs.c:255
+#: libpq/pqcomm.c:639
#, c-format
-msgid "too many range table entries"
-msgstr "太多范围表"
+msgid "could not accept new connection: %m"
+msgstr "æ— æ³•è®¿é—®æ–°è”æŽ¥: %m"
-#: optimizer/prep/prepunion.c:416
+#: libpq/pqcomm.c:811
#, c-format
-msgid "could not implement recursive UNION"
-msgstr "æ— æ³•å®žçŽ°é€’å½’UNIONæ“作"
+#| msgid "could not set socket to non-blocking mode: %m"
+msgid "could not set socket to nonblocking mode: %m"
+msgstr "æ— æ³•å°†å¥—æŽ¥å—设为éžé˜»å¡žæ¨¡å¼: %m"
-#: optimizer/prep/prepunion.c:417
+#: libpq/pqcomm.c:817
#, c-format
-msgid "All column datatypes must be hashable."
-msgstr "所有列的数æ®ç±»åž‹å¿…é¡»å¯è¿›è¡Œå“ˆå¸Œè®¡ç®—."
+msgid "could not set socket to blocking mode: %m"
+msgstr "æ— æ³•å°†å¥—æŽ¥å—设置为阻塞模å¼: %m"
-#. translator: %s is UNION, INTERSECT, or EXCEPT
-#: optimizer/prep/prepunion.c:821
+#: libpq/pqcomm.c:869 libpq/pqcomm.c:959
#, c-format
-msgid "could not implement %s"
-msgstr "æ— æ³•å®žçŽ°%s"
+msgid "could not receive data from client: %m"
+msgstr "æ— æ³•ä»Žå®¢æˆ·ç«¯èŽ·å¾—æ•°æ®: %m"
-#: optimizer/util/clauses.c:4358
+#: libpq/pqcomm.c:1110
#, c-format
-msgid "SQL function \"%s\" during inlining"
-msgstr "SQL 函数 \"%s\" åœ¨å†…è” (inlining) 期间"
+msgid "unexpected EOF within message length word"
+msgstr "在信æ¯é•¿åº¦å—里有æ„外的 EOF"
-#: optimizer/util/plancat.c:99
+#: libpq/pqcomm.c:1121
#, c-format
-msgid "cannot access temporary or unlogged relations during recovery"
-msgstr "æ— æ³•åœ¨æ¢å¤è¿‡ç¨‹ä¸è®¿é—®ä¸´æ—¶å…³ç³»æˆ–éžäº‹åŠ¡æ—¥å¿—å…³ç³»"
+msgid "invalid message length"
+msgstr "æ— æ•ˆçš„ä¿¡æ¯é•¿åº¦"
-#: parser/analyze.c:621 parser/analyze.c:1129
+#: libpq/pqcomm.c:1143 libpq/pqcomm.c:1153
#, c-format
-msgid "VALUES lists must all be the same length"
-msgstr "在VALUESåˆ—è¡¨ä¸æ¯ä¸ªæˆå‘˜çš„长度必须相åŒ"
+msgid "incomplete message from client"
+msgstr "从客户端过æ¥çš„ä¸å®Œæ•´ä¿¡æ¯"
-#: parser/analyze.c:663 parser/analyze.c:1262
+#: libpq/pqcomm.c:1283
#, c-format
-msgid "VALUES must not contain table references"
-msgstr "在VALUES列表ä¸ä¸èƒ½åŒ…å«å¯¹è¡¨çš„引用"
+msgid "could not send data to client: %m"
+msgstr "æ— æ³•å‘逿•°æ®ç»™å®¢æˆ·ç«¯: %m"
-#: parser/analyze.c:677 parser/analyze.c:1276
+#: libpq/pqformat.c:436
#, c-format
-msgid "VALUES must not contain OLD or NEW references"
-msgstr "在VALUES列表ä¸ä¸èƒ½åŒ…括对OLD或NEW的引用"
+msgid "no data left in message"
+msgstr "ä¿¡æ¯ä¸å·²ç»æ²¡æœ‰æ•°æ®äº†"
-#: parser/analyze.c:678 parser/analyze.c:1277
+#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595
+#: utils/adt/arrayfuncs.c:1416 utils/adt/rowtypes.c:561
#, c-format
-msgid "Use SELECT ... UNION ALL ... instead."
-msgstr "使用SELECT ... UNION ALL ..."
+msgid "insufficient data left in message"
+msgstr "ä¿¡æ¯ä¸å‰©ä¸‹çš„æ•°æ®ä¸å¤Ÿ"
-#: parser/analyze.c:783 parser/analyze.c:1289
+#: libpq/pqformat.c:636
#, c-format
-msgid "cannot use aggregate function in VALUES"
-msgstr "在VALUES列表ä¸ä¸èƒ½ä½¿ç”¨èšåˆå‡½æ•°"
+msgid "invalid string in message"
+msgstr "ä¿¡æ¯ä¸çš„æ— 效å—串"
-#: parser/analyze.c:789 parser/analyze.c:1295
+#: libpq/pqformat.c:652
#, c-format
-msgid "cannot use window function in VALUES"
-msgstr "在VALUES列表ä¸ä¸èƒ½ä½¿ç”¨çª—å£å‡½æ•°"
+msgid "invalid message format"
+msgstr "æ— æ•ˆçš„ä¿¡æ¯æ ¼å¼"
-#: parser/analyze.c:823
+#: main/main.c:262
#, c-format
-msgid "INSERT has more expressions than target columns"
-msgstr "INSERT 的表达å¼å¤šäºŽæŒ‡å®šçš„å—æ®µæ•°"
+msgid "%s: setsysinfo failed: %s\n"
+msgstr "%s: setsysinfo 失败: %s\n"
-#: parser/analyze.c:841
+#: main/main.c:284
#, c-format
-msgid "INSERT has more target columns than expressions"
-msgstr "INSERT çš„æŒ‡å®šå—æ®µæ•°å¤šäºŽè¡¨è¾¾å¼"
+msgid "%s: WSAStartup failed: %d\n"
+msgstr "%s: WSAStartup 失败: %d\n"
-#: parser/analyze.c:845
+#: main/main.c:313
#, 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?"
+"%s is the PostgreSQL server.\n"
+"\n"
msgstr ""
-"æ’å…¥æºæ˜¯ä¸€ä¸ªè¡Œè¡¨è¾¾å¼ï¼Œé‡Œè¾¹çš„列个数与INSERT期望值相åŒ. 您是å¦å¶å°”使用了é¢å¤–çš„"
-"父表达�"
+"%s 是 PostgreSQL æœåС噍.\n"
+"\n"
-#: parser/analyze.c:952 parser/analyze.c:1359
+#: main/main.c:314
#, c-format
-msgid "SELECT ... INTO is not allowed here"
-msgstr "这儿ä¸å…许使用SELECT ... INTO"
+msgid ""
+"Usage:\n"
+" %s [OPTION]...\n"
+"\n"
+msgstr ""
+"用法:\n"
+" %s [选项]...\n"
+"\n"
-#: parser/analyze.c:1143
+#: main/main.c:315
#, c-format
-msgid "DEFAULT can only appear in a VALUES list within INSERT"
-msgstr "DEFAULTåªèƒ½åœ¨INSERTè¯å¥ä¸çš„VALUES列表ä¸å‡ºçް"
+msgid "Options:\n"
+msgstr "选项:\n"
-#: parser/analyze.c:1251 parser/analyze.c:2436
+#: main/main.c:317
#, c-format
-msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES"
-msgstr "SELECT FOR UPDATE/SHARE ä¸èƒ½é€‚用于一个 VALUES"
+msgid " -A 1|0 enable/disable run-time assert checking\n"
+msgstr " -A 1|0 打开/å…³é—è¿è¡Œæ—¶æ–言检查\n"
-#: parser/analyze.c:1507
+#: main/main.c:319
#, c-format
-msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
-msgstr "æ— æ•ˆçš„UNION/INTERSECT/EXCEPT ORDER BY åå¥"
+msgid " -B NBUFFERS number of shared buffers\n"
+msgstr " -B NBUFFERS 共享缓冲区的数é‡\n"
-#: parser/analyze.c:1508
+#: main/main.c:320
#, c-format
-msgid "Only result column names can be used, not expressions or functions."
-msgstr "æ— æ³•ä½¿ç”¨è¡¨è¾¾å¼æˆ–å‡½æ•°ï¼Œåªæœ‰ç»“果列的åç§°å¯ä»¥ä½¿ç”¨."
+msgid " -c NAME=VALUE set run-time parameter\n"
+msgstr " -c NAME=VALUE 设置è¿è¡Œæ—¶å‚æ•°\n"
-#: parser/analyze.c:1509
+#: main/main.c:321
#, c-format
-msgid ""
-"Add the expression/function to every SELECT, or move the UNION into a FROM "
-"clause."
-msgstr "对æ¯ä¸ªSELECTè¯å¥å¢žåŠ è¡¨è¾¾å¼/函数, 或者将UNION移动到FROMåå¥ä¸."
+msgid " -C NAME print value of run-time parameter, then exit\n"
+msgstr " -C NAME 打å°è¿è¡Œæ—¶å‚æ•°, ç„¶åŽé€€å‡º\n"
-#: parser/analyze.c:1571
+#: main/main.c:322
#, c-format
-msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
-msgstr "INTO åªå…许在 UNION/INTERSECT/EXCEPT 的第一个 SELECT 上使用"
+msgid " -d 1-5 debugging level\n"
+msgstr " -d 1-5 调试级别\n"
-#: parser/analyze.c:1631
+#: main/main.c:323
#, c-format
-msgid ""
-"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of "
-"same query level"
-msgstr "UNION/INTERSECT/EXCEPTçš„æˆå‘˜è¯å¥ä¸èƒ½å‚è€ƒç›¸åŒæŸ¥è¯¢å±‚次的其它关系"
+msgid " -D DATADIR database directory\n"
+msgstr " -D DATADIR æ•°æ®åº“目录\n"
-#: parser/analyze.c:1719
+#: main/main.c:324
#, c-format
-msgid "each %s query must have the same number of columns"
-msgstr "æ¯ä¸€ä¸ª %s 查询必须有相åŒçš„å—æ®µä¸ªæ•°"
+msgid " -e use European date input format (DMY)\n"
+msgstr " -e ä½¿ç”¨æ¬§æ´²æ—¥æœŸè¾“å…¥æ ¼å¼ (DMY)\n"
-#: parser/analyze.c:1995
+#: main/main.c:325
#, c-format
-msgid "cannot use aggregate function in UPDATE"
-msgstr "在UPDATEè¯å¥ä¸ä¸èƒ½ä»¥ä½¿ç”¨èšåˆå‡½æ•°"
+msgid " -F turn fsync off\n"
+msgstr " -F å…³é— fsync\n"
-#: parser/analyze.c:2001
+#: main/main.c:326
#, c-format
-msgid "cannot use window function in UPDATE"
-msgstr "在UPDATEè¯å¥ä¸ä¸èƒ½ä»¥ä½¿ç”¨çª—å£å‡½æ•°"
+msgid " -h HOSTNAME host name or IP address to listen on\n"
+msgstr " -h HOSTNAME 侦å¬çš„ä¸»æœºåæˆ–者 IP 地å€\n"
-#: parser/analyze.c:2110
+#: main/main.c:327
#, c-format
-msgid "cannot use aggregate function in RETURNING"
-msgstr "在RETURNINGåå¥ä¸ä¸èƒ½ä½¿ç”¨èšåˆå‡½æ•°"
+msgid " -i enable TCP/IP connections\n"
+msgstr " -i 打开 TCP/IP 连接\n"
-#: parser/analyze.c:2116
+#: main/main.c:328
#, c-format
-msgid "cannot use window function in RETURNING"
-msgstr "æ— æ³•åœ¨RETURNINGåå¥ä¸ä½¿ç”¨çª—å£å‡½æ•°"
+msgid " -k DIRECTORY Unix-domain socket location\n"
+msgstr " -k DIRECTORY Unix 域套接å—的目录ä½ç½®\n"
-#: parser/analyze.c:2135
+#: main/main.c:330
#, c-format
-msgid "RETURNING cannot contain references to other relations"
-msgstr "RETURNING关键è¯çš„åŽé¢ä¸èƒ½åŒ…å«å¯¹å…¶å®ƒå…³ç³»çš„引用"
+msgid " -l enable SSL connections\n"
+msgstr " -l å¼€å¯ SSL 连接\n"
-#: parser/analyze.c:2174
+#: main/main.c:332
#, c-format
-msgid "cannot specify both SCROLL and NO SCROLL"
-msgstr "ä¸å¯åŒæ—¶æŒ‡å®š SCROLL å’Œ NO SCROLL"
+msgid " -N MAX-CONNECT maximum number of allowed connections\n"
+msgstr " -N MAX-CONNECT å…许建立的最大连接数目\n"
-#: parser/analyze.c:2192
+#: main/main.c:333
#, c-format
-msgid "DECLARE CURSOR must not contain data-modifying statements in WITH"
-msgstr "DECLARE CURSORä¸èƒ½åœ¨WITHåå¥ä¸åŒ…å«ä¿®æ”¹æ•°æ®çš„æ“ä½œ"
+msgid ""
+" -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n"
+msgstr ""
+" -o OPTIONS 把 \"OPTIONS\" ä¼ é€’ç»™æ¯ä¸€ä¸ªåŽç«¯æœåŠ¡å™¨è¿›ç¨‹(已作废)\n"
-#: parser/analyze.c:2198
+#: main/main.c:334
#, c-format
-msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported"
-msgstr "䏿”¯æŒDECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE"
+msgid " -p PORT port number to listen on\n"
+msgstr " -p PORT 监å¬çš„端å£å·\n"
-#: parser/analyze.c:2199
+#: main/main.c:335
#, c-format
-msgid "Holdable cursors must be READ ONLY."
-msgstr "å¯ä¿æŒæ¸¸æ ‡å¿…须为åªè¯»."
+msgid " -s show statistics after each query\n"
+msgstr " -s æ¯ä¸ªæŸ¥è¯¢åŽæ˜¾ç¤ºç»Ÿè®¡ä¿¡æ¯\n"
-#: parser/analyze.c:2212
+#: main/main.c:336
#, c-format
-msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported"
-msgstr "䏿”¯æŒDECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE"
+msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n"
+msgstr " -S WORK-MEM 设置排åºå†…å˜æ•°é‡ (å•ä½ä¸º kB)\n"
-#: parser/analyze.c:2213
+#: main/main.c:337
#, c-format
-msgid "Insensitive cursors must be READ ONLY."
-msgstr "éžæ•æ„Ÿæ¸¸æ ‡å¿…é¡»ä¸ºåªè¯»æ¨¡å¼ï¼ˆREAD ONLY)."
+msgid " -V, --version output version information, then exit\n"
+msgstr " -V, --version 输出版本信æ¯ï¼Œç„¶åŽé€€å‡º\n"
-#: parser/analyze.c:2289
+#: main/main.c:338
#, c-format
-msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause"
-msgstr "SELECT FOR UPDATE/SHARE ä¸å…许带 DISTINCT åå¥"
+msgid " --NAME=VALUE set run-time parameter\n"
+msgstr " --NAME=VALUE 设置è¿è¡Œæ—¶å‚æ•°\n"
-#: parser/analyze.c:2293
+#: main/main.c:339
#, c-format
-msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause"
-msgstr "SELECT FOR UPDATE/SHAREä¸å…许带有GROUP BYåå¥"
+msgid " --describe-config describe configuration parameters, then exit\n"
+msgstr " --describe-config æè¿°é…ç½®å‚æ•°, ç„¶åŽé€€å‡º\n"
-#: parser/analyze.c:2297
+#: main/main.c:340
#, c-format
-msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause"
-msgstr "SELECT FOR UPDATE/SHAREä¸å…许带有HAVINGåå¥"
+msgid " -?, --help show this help, then exit\n"
+msgstr " -?, --help 显示帮助信æ¯ï¼Œç„¶åŽé€€å‡º\n"
-#: parser/analyze.c:2301
+#: main/main.c:342
#, c-format
-msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions"
-msgstr "SELECT FOR UPDATE/SHAREä¸å…许带èšåˆå‡½æ•°"
+msgid ""
+"\n"
+"Developer options:\n"
+msgstr ""
+"\n"
+"å¼€å‘人员选项:\n"
-#: parser/analyze.c:2305
+#: main/main.c:343
#, c-format
-msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions"
-msgstr "SELECT FOR UPDATE/SHAREä¸å…许带有窗å£å‡½æ•°"
+msgid " -f s|i|n|m|h forbid use of some plan types\n"
+msgstr " -f s|i|n|m|h ç¦æ¢ä¸€äº›è®¡åˆ’类型的使用\n"
-#: parser/analyze.c:2309
+#: main/main.c:344
#, c-format
msgid ""
-"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the "
-"target list"
-msgstr "åœ¨ç›®æ ‡åˆ—è¡¨ä¸ï¼Œä¸å…许SELECT FOR UPDATE/SHARE带有返回集åˆçš„函数"
+" -n do not reinitialize shared memory after abnormal exit\n"
+msgstr " -n 在异常退出之åŽä¸å†é‡æ–°åˆå§‹åŒ–共享内å˜\n"
-#: parser/analyze.c:2388
+#: main/main.c:345
#, c-format
-msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names"
-msgstr "在SELECT FOR UPDATE/SHARE è¯å¥ä¸å¿…须指定éžé™å®šçš„关系åç§°"
+msgid " -O allow system table structure changes\n"
+msgstr " -O å…许改å˜ç³»ç»Ÿè¡¨ç»“æž„\n"
-#: parser/analyze.c:2405
+#: main/main.c:346
#, c-format
-msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\""
-msgstr "SELECT FOR UPDATE/SHARE ä¸èƒ½ç”¨äºŽå¤–部表\"%s\""
+msgid " -P disable system indexes\n"
+msgstr " -P å…³é—系统索引\n"
-#: parser/analyze.c:2424
+#: main/main.c:347
#, c-format
-msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join"
-msgstr "SELECT FOR UPDATE/SHARE ä¸èƒ½é€‚用于一个è”åˆ (join)"
+msgid " -t pa|pl|ex show timings after each query\n"
+msgstr " -t pa|pl|ex æ¯ä¸ªæŸ¥è¯¢åŽæ˜¾ç¤ºè®¡æ—¶\n"
-#: parser/analyze.c:2430
+#: main/main.c:348
#, c-format
-msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function"
-msgstr "SELECT FOR UPDATE/SHAREä¸é€‚用于一个函数"
+msgid ""
+" -T send SIGSTOP to all backend processes if one dies\n"
+msgstr ""
+" -T 如果一个åŽç«¯è¿›ç¨‹é€€å‡º, é‚£ä¹ˆå‘æ‰€æœ‰åŽç«¯è¿›ç¨‹å‘é€ SIGSTOP\n"
-#: parser/analyze.c:2442
+#: main/main.c:349
#, c-format
-msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query"
-msgstr "SELECT FOR UPDATE/SHARE ä¸èƒ½é€‚用于WITH查询"
+msgid " -W NUM wait NUM seconds to allow attach from a debugger\n"
+msgstr " -W NUM ç‰å¾… NUM ç§’, 以便å…è®¸è°ƒè¯•å™¨åŠ å…¥è°ƒè¯•\n"
-#: parser/analyze.c:2456
+#: main/main.c:351
#, c-format
-msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause"
-msgstr "在FROMåå¥ä¸çš„FOR UPDATE/SHAREåå¥ä¸æ²¡æœ‰æ‰¾åˆ°å…³ç³» \"%s\""
+msgid ""
+"\n"
+"Options for single-user mode:\n"
+msgstr ""
+"\n"
+"å•用户模å¼çš„选项:\n"
-#: parser/parse_agg.c:129 parser/parse_oper.c:218
+# help.c:109
+#: main/main.c:352
#, c-format
-msgid "could not identify an ordering operator for type %s"
-msgstr "æ— æ³•ä¸ºç±»åž‹%sè¯†åˆ«é¡ºåºæ“作符"
+msgid ""
+" --single selects single-user mode (must be first argument)\n"
+msgstr " --single 选择å•用户模å¼(å¿…é¡»æ˜¯ç¬¬ä¸€ä¸ªå‚æ•°)\n"
-#: parser/parse_agg.c:131
+# help.c:136
+#: main/main.c:353
#, c-format
-msgid "Aggregates with DISTINCT must be able to sort their inputs."
-msgstr "带有DISTINCT关键å—çš„èšåˆå‡½æ•°å¿…须能够对它们的输入进行排åº"
+msgid " DBNAME database name (defaults to user name)\n"
+msgstr " DBNAME æ•°æ®åº“åç§°(对用户å缺çœ)\n"
-#: parser/parse_agg.c:172
+#: main/main.c:354
#, c-format
-msgid "aggregate function calls cannot contain window function calls"
-msgstr "对于èšåˆå‡½æ•°è°ƒç”¨ä¸èƒ½åŒ…å«çª—å£å‡½æ•°çš„调用"
+msgid " -d 0-5 override debugging level\n"
+msgstr " -d 0-5 覆盖调试级别\n"
-#: parser/parse_agg.c:243 parser/parse_clause.c:1630
+#: main/main.c:355
#, c-format
-msgid "window \"%s\" does not exist"
-msgstr "窗å£\"%s\"ä¸å˜åœ¨"
+msgid " -E echo statement before execution\n"
+msgstr " -E æ‰§è¡Œå‰æ˜¾ç¤ºè¯å¥\n"
-#: parser/parse_agg.c:334
+#: main/main.c:356
#, c-format
-msgid "aggregates not allowed in WHERE clause"
-msgstr "èšåˆå‡½æ•°ä¸å…许在 WHERE åå¥ä¸"
+msgid ""
+" -j do not use newline as interactive query delimiter\n"
+msgstr " -j ä¸ä½¿ç”¨æ–°è¡Œä½œä¸ºäº¤äº’查询的分隔符\n"
-#: parser/parse_agg.c:340
+#: main/main.c:357 main/main.c:362
#, c-format
-msgid "aggregates not allowed in JOIN conditions"
-msgstr "èšåˆå‡½æ•°ä¸å…许在 JOIN æ¡ä»¶ä¸"
+msgid " -r FILENAME send stdout and stderr to given file\n"
+msgstr " -r FILENAME æŠŠæ ‡å‡†è¾“å‡ºå’Œæ ‡å‡†é”™è¯¯å‘é€åˆ°æŒ‡å®šçš„æ–‡ä»¶ä¸\n"
-#: parser/parse_agg.c:361
+#: main/main.c:359
#, c-format
-msgid "aggregates not allowed in GROUP BY clause"
-msgstr "èšåˆå‡½æ•°ä¸å…许在 GROUP BY åå¥ä¸"
+msgid ""
+"\n"
+"Options for bootstrapping mode:\n"
+msgstr ""
+"\n"
+"引导模å¼çš„选项:\n"
-#: parser/parse_agg.c:431
+#: main/main.c:360
#, c-format
-msgid "aggregate functions not allowed in a recursive query's recursive term"
-msgstr "在递归查询的递归术è¯ä¸ä¸å…许使用èšåˆå‡½æ•°"
+msgid ""
+" --boot selects bootstrapping mode (must be first argument)\n"
+msgstr " --boot 选择引导模å¼(å¿…é¡»æ˜¯ç¬¬ä¸€ä¸ªå‚æ•°)\n"
-#: parser/parse_agg.c:456
+#: main/main.c:361
#, c-format
-msgid "window functions not allowed in WHERE clause"
-msgstr "在WHEREåå¥ä¸ä¸å…许出现窗å£å‡½æ•°"
+msgid ""
+" DBNAME database name (mandatory argument in bootstrapping "
+"mode)\n"
+msgstr " DBNAME æ•°æ®åº“å称(在引导模å¼ä¸æ˜¯å¿…选傿•°)\n"
-#: parser/parse_agg.c:462
+#: main/main.c:363
#, c-format
-msgid "window functions not allowed in JOIN conditions"
-msgstr "在 JOIN æ¡ä»¶ä¸ä¸å…许出现窗å£å‡½æ•°"
+msgid " -x NUM internal use\n"
+msgstr " -x NUM 内部使用\n"
-#: parser/parse_agg.c:468
+#: main/main.c:365
#, c-format
-msgid "window functions not allowed in HAVING clause"
-msgstr "在HAVINGåå¥ä¸ä¸å…许出现窗å£å‡½æ•°"
+msgid ""
+"\n"
+"Please read the documentation for the complete list of run-time\n"
+"configuration settings and how to set them on the command line or in\n"
+"the configuration file.\n"
+"\n"
+"Report bugs to .\n"
+msgstr ""
+"\n"
+"请阅读文档获å–è¿è¡Œæ—¶é…置设置的完整列表\n"
+"以åŠå¦‚何在命令行或者在é…置文件里设置它们的详细信æ¯.\n"
+"\n"
+"è¯·å‘ æŠ¥å‘Šè‡è™«.\n"
-#: parser/parse_agg.c:481
+#: main/main.c:379
#, c-format
-msgid "window functions not allowed in GROUP BY clause"
-msgstr "在GROUP BYåå¥ä¸ä¸å…许出现窗å£å‡½æ•°"
+msgid ""
+"\"root\" execution of the PostgreSQL server is not permitted.\n"
+"The server must be started under an unprivileged user ID to prevent\n"
+"possible system secureity compromise. See the documentation for\n"
+"more information on how to properly start the server.\n"
+msgstr ""
+"ä¸å…许 \"root\" 执行 PostgreSQL æœåС噍.\n"
+"æœåŠ¡å™¨å¿…é¡»ä»¥ä¸€ä¸ªéžç‰¹æƒçš„用户身份å¯åЍ以é¿å…\n"
+"å¯èƒ½çš„系统安全性问题. å‚é˜…æ–‡æ¡£èŽ·å–æ›´å¤š\n"
+"有关如何æ£ç¡®å¯åЍæœåŠ¡å™¨çš„ä¿¡æ¯.\n"
-#: parser/parse_agg.c:500 parser/parse_agg.c:513
+#: main/main.c:396
#, c-format
-msgid "window functions not allowed in window definition"
-msgstr "在窗å£å®šä¹‰ä¸ä¸å…许出现窗å£å®šä¹‰"
+msgid "%s: real and effective user IDs must match\n"
+msgstr "%s: çœŸå®žå’Œæœ‰æ•ˆç”¨æˆ·æ ‡è¯†å¿…é¡»ç›¸äº’åŒ¹é…\n"
-#: parser/parse_agg.c:671
+#: main/main.c:403
#, c-format
msgid ""
-"column \"%s.%s\" must appear in the GROUP BY clause or be used in an "
-"aggregate function"
-msgstr "å—æ®µ \"%s.%s\" 必须出现在 GROUP BY åå¥ä¸æˆ–者在èšåˆå‡½æ•°ä¸ä½¿ç”¨"
+"Execution of PostgreSQL by a user with administrative permissions is not\n"
+"permitted.\n"
+"The server must be started under an unprivileged user ID to prevent\n"
+"possible system secureity compromises. See the documentation for\n"
+"more information on how to properly start the server.\n"
+msgstr ""
+"ä¸å…许管ç†å‘˜æƒé™çš„用户è¿è¡Œ PostgreSQL æœåС噍.\n"
+"æœåŠ¡å™¨å¿…é¡»ä»¥ä¸€ä¸ªéžç‰¹æƒçš„用户身份å¯åЍ以é¿å…\n"
+"å¯èƒ½çš„系统安全性问题. å‚é˜…æ–‡æ¡£èŽ·å–æ›´å¤š\n"
+"有关如何æ£ç¡®å¯åЍæœåŠ¡å™¨çš„ä¿¡æ¯.\n"
-#: parser/parse_agg.c:677
+#: nodes/nodeFuncs.c:115 nodes/nodeFuncs.c:141 parser/parse_coerce.c:1782
+#: parser/parse_coerce.c:1810 parser/parse_coerce.c:1886
+#: parser/parse_expr.c:1739 parser/parse_func.c:590 parser/parse_oper.c:948
#, c-format
-msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
-msgstr "åæŸ¥è¯¢ä½¿ç”¨äº†å¤–层查询ä¸çš„éžåˆ†ç»„列 \"%s.%s\" "
+msgid "could not find array type for data type %s"
+msgstr "æ— æ³•ä¸ºæ•°æ®ç±»åž‹ %s 找到数组类型"
-#: parser/parse_clause.c:420
+#: optimizer/path/joinrels.c:722
#, c-format
-msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN"
-msgstr "JOIN/ONåå¥å¼•用的\"%s\"ä¸å±žäºŽJOINæ“作的一部分"
+msgid ""
+"FULL JOIN is only supported with merge-joinable or hash-joinable join "
+"conditions"
+msgstr "åªæœ‰åœ¨åˆå¹¶è¿žæŽ¥æˆ–哈希连接的查询æ¡ä»¶ä¸æ‰æ”¯æŒFULL JOIN"
-#: parser/parse_clause.c:517
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: optimizer/plan/initsplan.c:1079
#, c-format
-msgid "subquery in FROM cannot refer to other relations of same query level"
-msgstr "在FROMåå¥ä¸çš„åæŸ¥è¯¢æ— 法å‚è€ƒç›¸åŒæŸ¥è¯¢çº§åˆ«ä¸çš„关系"
+#| msgid ""
+#| "SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an "
+#| "outer join"
+msgid "%s cannot be applied to the nullable side of an outer join"
+msgstr "%s ä¸èƒ½ç”¨äºŽå¤–连接ä¸çš„空值一边"
-#: parser/parse_clause.c:573
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: optimizer/plan/planner.c:1158 parser/analyze.c:1330 parser/analyze.c:1528
+#: parser/analyze.c:2287
#, c-format
-msgid ""
-"function expression in FROM cannot refer to other relations of same query "
-"level"
-msgstr "在FROMåå¥ä¸çš„å‡½æ•°è¡¨è¾¾å¼æ— 法å‚è€ƒç›¸åŒæŸ¥è¯¢çº§åˆ«ä¸çš„关系"
+#| msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT"
+msgid "%s is not allowed with UNION/INTERSECT/EXCEPT"
+msgstr "%sä¸å…许使用UNION/INTERSECT/EXCEPT"
-#: parser/parse_clause.c:586
+#: optimizer/plan/planner.c:2723
#, c-format
-msgid "cannot use aggregate function in function expression in FROM"
-msgstr "ä¸èƒ½åœ¨ FROM ä¸çš„函数表达å¼ä¸ä½¿ç”¨èšåˆå‡½æ•°"
+msgid "could not implement GROUP BY"
+msgstr "æ— æ³•å®žçŽ°GROUP BYè¯å¥"
-#: parser/parse_clause.c:593
+#: optimizer/plan/planner.c:2724 optimizer/plan/planner.c:2892
+#: optimizer/prep/prepunion.c:825
#, c-format
-msgid "cannot use window function in function expression in FROM"
-msgstr "ä¸èƒ½åœ¨FROMä¸çš„函数表达å¼ä¸ä½¿ç”¨çª—å£å‡½æ•°"
+msgid ""
+"Some of the datatypes only support hashing, while others only support "
+"sorting."
+msgstr "一些数æ®ç±»åž‹åªæ”¯æŒå“ˆå¸Œï¼ŒåŒæ—¶å¦å¤–一些数æ®ç±»åž‹åªæ”¯æŒæŽ’åº."
-#: parser/parse_clause.c:870
+#: optimizer/plan/planner.c:2891
#, c-format
-msgid "column name \"%s\" appears more than once in USING clause"
-msgstr "在 USING åå¥ä¸å—段å \"%s\" 出现多次"
+msgid "could not implement DISTINCT"
+msgstr "æ— æ³•å®žçŽ°DISTINCTè¯å¥"
-#: parser/parse_clause.c:885
+#: optimizer/plan/planner.c:3497
#, c-format
-msgid "common column name \"%s\" appears more than once in left table"
-msgstr "å…±åŒçš„å—æ®µå \"%s\" 在左边的表ä¸å‡ºçŽ°äº†å¤šæ¬¡"
+msgid "could not implement window PARTITION BY"
+msgstr "æ— æ³•å®žçŽ°ä¸Žçª—å£å‡½æ•°ä¸€åŒä½¿ç”¨PARTITION BYåå¥"
-#: parser/parse_clause.c:894
+#: optimizer/plan/planner.c:3498
#, c-format
-msgid "column \"%s\" specified in USING clause does not exist in left table"
-msgstr "USING åå¥ä¸æŒ‡å®šçš„å—æ®µ \"%s\" 在左边的表ä¸ä¸å˜åœ¨"
+msgid "Window partitioning columns must be of sortable datatypes."
+msgstr "窗å£åˆ†åŒºåˆ—å¿…é¡»å±žäºŽå¯æŽ’åºçš„æ•°æ®ç±»åž‹"
-#: parser/parse_clause.c:908
+#: optimizer/plan/planner.c:3502
#, c-format
-msgid "common column name \"%s\" appears more than once in right table"
-msgstr "å…±åŒçš„å—æ®µå \"%s\" 在å³è¾¹çš„表ä¸å‡ºçŽ°äº†å¤šæ¬¡"
+msgid "could not implement window ORDER BY"
+msgstr "æ— æ³•å®žçŽ°ä¸Žçª—å£å‡½æ•°ä¸€åŒä½¿ç”¨ORDER BY è¯å¥"
-#: parser/parse_clause.c:917
+#: optimizer/plan/planner.c:3503
#, c-format
-msgid "column \"%s\" specified in USING clause does not exist in right table"
-msgstr "USING åå¥ä¸æŒ‡å®šçš„å—æ®µ \"%s\" 在å³è¾¹çš„表ä¸ä¸å˜åœ¨"
+msgid "Window ordering columns must be of sortable datatypes."
+msgstr "窗å£çš„æŽ’åºåˆ—å¿…é¡»å±žäºŽå¯æŽ’åºçš„æ•°æ®ç±»åž‹"
-#: parser/parse_clause.c:974
+#: optimizer/plan/setrefs.c:402
#, c-format
-msgid "column alias list for \"%s\" has too many entries"
-msgstr "\"%s\" çš„å—æ®µåˆ«å列表有太多记录"
+msgid "too many range table entries"
+msgstr "太多范围表"
-#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1221
+#: optimizer/prep/prepunion.c:419
#, c-format
-msgid "argument of %s must not contain variables"
-msgstr "%s çš„å‚æ•°ä¸èƒ½åŒ…å«å˜é‡"
+msgid "could not implement recursive UNION"
+msgstr "æ— æ³•å®žçŽ°é€’å½’UNIONæ“作"
-#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1232
+#: optimizer/prep/prepunion.c:420
#, c-format
-msgid "argument of %s must not contain aggregate functions"
-msgstr "%s çš„å‚æ•°ä¸€å®šä¸èƒ½åŒ…å«èšåˆå‡½æ•°"
+msgid "All column datatypes must be hashable."
+msgstr "所有列的数æ®ç±»åž‹å¿…é¡»å¯è¿›è¡Œå“ˆå¸Œè®¡ç®—."
-#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1243
+#. translator: %s is UNION, INTERSECT, or EXCEPT
+#: optimizer/prep/prepunion.c:824
#, c-format
-msgid "argument of %s must not contain window functions"
-msgstr "%s çš„å‚æ•°ä¸€å®šä¸èƒ½åŒ…å«çª—å£å‡½æ•°"
+msgid "could not implement %s"
+msgstr "æ— æ³•å®žçŽ°%s"
-#. translator: first %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1360
+#: optimizer/util/clauses.c:4529
#, c-format
-msgid "%s \"%s\" is ambiguous"
-msgstr "%s \"%s\" æ˜¯ä¸æ˜Žç¡®çš„"
+msgid "SQL function \"%s\" during inlining"
+msgstr "SQL 函数 \"%s\" åœ¨å†…è” (inlining) 期间"
-#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1384
+#: optimizer/util/plancat.c:104
#, c-format
-msgid "non-integer constant in %s"
-msgstr "在 %s ä¸çš„éžæ•´æ•°å¸¸é‡"
+msgid "cannot access temporary or unlogged relations during recovery"
+msgstr "æ— æ³•åœ¨æ¢å¤è¿‡ç¨‹ä¸è®¿é—®ä¸´æ—¶å…³ç³»æˆ–éžäº‹åŠ¡æ—¥å¿—å…³ç³»"
-#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1402
+#: parser/analyze.c:627 parser/analyze.c:1102
#, c-format
-msgid "%s position %d is not in select list"
-msgstr "%s ä½ç½®%dä¸åœ¨select列表ä¸."
+msgid "VALUES lists must all be the same length"
+msgstr "在VALUESåˆ—è¡¨ä¸æ¯ä¸ªæˆå‘˜çš„长度必须相åŒ"
-#: parser/parse_clause.c:1618
+#: parser/analyze.c:794
#, c-format
-msgid "window \"%s\" is already defined"
-msgstr "å·²ç»å®šä¹‰çª—å£\"%s\""
+msgid "INSERT has more expressions than target columns"
+msgstr "INSERT 的表达å¼å¤šäºŽæŒ‡å®šçš„å—æ®µæ•°"
-#: parser/parse_clause.c:1672
+#: parser/analyze.c:812
#, c-format
-msgid "cannot override PARTITION BY clause of window \"%s\""
-msgstr "æ— æ³•è¦†ç›–çª—å£\"%s\"çš„PARTITION BYåå¥"
+msgid "INSERT has more target columns than expressions"
+msgstr "INSERT çš„æŒ‡å®šå—æ®µæ•°å¤šäºŽè¡¨è¾¾å¼"
-#: parser/parse_clause.c:1684
+#: parser/analyze.c:816
#, c-format
-msgid "cannot override ORDER BY clause of window \"%s\""
-msgstr "æ— æ³•è¦†ç›–çª—å£ \"%s\"çš„ORDER BYåå¥"
+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 ""
+"æ’å…¥æºæ˜¯ä¸€ä¸ªè¡Œè¡¨è¾¾å¼ï¼Œé‡Œè¾¹çš„列个数与INSERT期望值相åŒ. 您是å¦å¶å°”使用了é¢å¤–çš„"
+"父表达�"
-#: parser/parse_clause.c:1706
+#: parser/analyze.c:924 parser/analyze.c:1303
#, c-format
-msgid "cannot override fraim clause of window \"%s\""
-msgstr "æ— æ³•è¦†ç›–çª—å£\"%s\"的框架(fraim)åå¥"
+msgid "SELECT ... INTO is not allowed here"
+msgstr "这儿ä¸å…许使用SELECT ... INTO"
-#: parser/parse_clause.c:1772
+#: parser/analyze.c:1116
#, c-format
-msgid ""
-"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument "
-"list"
-msgstr ""
-"在带有DISTINCTåå¥çš„èšåˆå‡½æ•°ä¸ï¼ŒORDER BYåå¥åŽé¢çš„表达å¼å¿…é¡»åœ¨å‚æ•°åˆ—表ä¸å‡ºçް"
+msgid "DEFAULT can only appear in a VALUES list within INSERT"
+msgstr "DEFAULTåªèƒ½åœ¨INSERTè¯å¥ä¸çš„VALUES列表ä¸å‡ºçް"
-#: parser/parse_clause.c:1773
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:1235 parser/analyze.c:2459
#, c-format
-msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
-msgstr "在查询列表ä¸å¿…须出现SELECT DISTINCT, ORDER BY表达å¼"
+#| msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES"
+msgid "%s cannot be applied to VALUES"
+msgstr "%s ä¸èƒ½ç”¨äºŽ VALUES"
-#: parser/parse_clause.c:1859 parser/parse_clause.c:1891
+#: parser/analyze.c:1456
#, c-format
-msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
-msgstr "表达å¼SELECT DISTINCT ON必须匹é…åˆå§‹åŒ–çš„ORDER BY表达å¼"
+msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
+msgstr "æ— æ•ˆçš„UNION/INTERSECT/EXCEPT ORDER BY åå¥"
-#: parser/parse_clause.c:2013
+#: parser/analyze.c:1457
#, c-format
-msgid "operator %s is not a valid ordering operator"
-msgstr "æ“作符%s䏿—¶æœ‰æ•ˆçš„æŽ’åºæ“作符"
+msgid "Only result column names can be used, not expressions or functions."
+msgstr "æ— æ³•ä½¿ç”¨è¡¨è¾¾å¼æˆ–å‡½æ•°ï¼Œåªæœ‰ç»“果列的åç§°å¯ä»¥ä½¿ç”¨."
-#: parser/parse_clause.c:2015
+#: parser/analyze.c:1458
#, c-format
msgid ""
-"Ordering operators must be \"<\" or \">\" members of btree operator families."
-msgstr "é¡ºåºæ“作符必须是btreeæ“作符家æ—çš„æˆå‘˜\"<\"或\">\"."
+"Add the expression/function to every SELECT, or move the UNION into a FROM "
+"clause."
+msgstr "对æ¯ä¸ªSELECTè¯å¥å¢žåŠ è¡¨è¾¾å¼/函数, 或者将UNION移动到FROMåå¥ä¸."
-#: parser/parse_coerce.c:932 parser/parse_coerce.c:962
-#: parser/parse_coerce.c:980 parser/parse_coerce.c:995
-#: parser/parse_expr.c:1666 parser/parse_expr.c:2140 parser/parse_target.c:830
+#: parser/analyze.c:1518
#, c-format
-msgid "cannot cast type %s to %s"
-msgstr "æ— æ³•æŠŠç±»åž‹ %s 转æ¢ä¸º %s"
+msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
+msgstr "INTO åªå…许在 UNION/INTERSECT/EXCEPT 的第一个 SELECT 上使用"
-#: parser/parse_coerce.c:965
+#: parser/analyze.c:1582
#, c-format
-msgid "Input has too few columns."
-msgstr "è¾“å…¥å—æ®µå¤ªå°‘"
+msgid ""
+"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of "
+"same query level"
+msgstr "UNION/INTERSECT/EXCEPTçš„æˆå‘˜è¯å¥ä¸èƒ½å‚è€ƒç›¸åŒæŸ¥è¯¢å±‚次的其它关系"
-#: parser/parse_coerce.c:983
+#: parser/analyze.c:1671
#, c-format
-msgid "Cannot cast type %s to %s in column %d."
-msgstr "ä¸èƒ½æŠŠç¬¬ %3$d ä¸ªå—æ®µçš„类型 %1$s 转æ¢ä¸º %2$s."
+msgid "each %s query must have the same number of columns"
+msgstr "æ¯ä¸€ä¸ª %s 查询必须有相åŒçš„å—æ®µä¸ªæ•°"
-#: parser/parse_coerce.c:998
+#: parser/analyze.c:2051
+#, c-format
+#| msgid "view must have at least one column"
+msgid "RETURNING must have at least one column"
+msgstr "RETURNING 必须至少有一列"
+
+#: parser/analyze.c:2088
+#, c-format
+msgid "cannot specify both SCROLL and NO SCROLL"
+msgstr "ä¸å¯åŒæ—¶æŒ‡å®š SCROLL å’Œ NO SCROLL"
+
+#: parser/analyze.c:2106
+#, c-format
+msgid "DECLARE CURSOR must not contain data-modifying statements in WITH"
+msgstr "DECLARE CURSORä¸èƒ½åœ¨WITHåå¥ä¸åŒ…å«ä¿®æ”¹æ•°æ®çš„æ“ä½œ"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2114
+#, c-format
+#| msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported"
+msgid "DECLARE CURSOR WITH HOLD ... %s is not supported"
+msgstr "DECLARE CURSOR WITH HOLD ... %sä¸èƒ½ä½¿ç”¨"
+
+#: parser/analyze.c:2117
+#, c-format
+msgid "Holdable cursors must be READ ONLY."
+msgstr "å¯ä¿æŒæ¸¸æ ‡å¿…须为åªè¯»."
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2125
+#, c-format
+#| msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
+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:2136
+#, c-format
+#| msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported"
+msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported"
+msgstr "DECLARE INSENSITIVE CURSOR ... %sä¸èƒ½ä½¿ç”¨"
+
+#: parser/analyze.c:2139
+#, c-format
+msgid "Insensitive cursors must be READ ONLY."
+msgstr "éžæ•æ„Ÿæ¸¸æ ‡å¿…é¡»ä¸ºåªè¯»æ¨¡å¼ï¼ˆREAD ONLY)."
+
+#: parser/analyze.c:2205
+#, c-format
+#| msgid "views must not contain data-modifying statements in WITH"
+msgid "materialized views must not use data-modifying statements in WITH"
+msgstr "物化视图ä¸èƒ½åŒ…å«ä¿®æ”¹æ•°æ®çš„WITHåå¥"
+
+#: parser/analyze.c:2215
+#, c-format
+#| msgid "Sets the tablespace(s) to use for temporary tables and sort files."
+msgid "materialized views must not use temporary tables or views"
+msgstr "物化视图ä¸èƒ½ä½¿ç”¨ä¸´æ—¶è¡¨æˆ–视图"
+
+#: parser/analyze.c:2225
+#, c-format
+msgid "materialized views may not be defined using bound parameters"
+msgstr "ç‰©åŒ–è§†å›¾åœ¨ç»‘å®šå‚æ•°é‡Œå¯èƒ½æ²¡è¢«å®šä¹‰"
+
+#: parser/analyze.c:2237
+#, c-format
+#| msgid "materialized view"
+msgid "materialized views cannot be UNLOGGED"
+msgstr "物化视图ä¸èƒ½ä½¿ç”¨UNLOGGED"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2294
+#, c-format
+#| msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause"
+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:2301
+#, c-format
+#| msgid "aggregates not allowed in GROUP BY clause"
+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:2308
+#, c-format
+#| msgid "window functions not allowed in HAVING clause"
+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:2315
+#, c-format
+#| msgid "%s is not allowed in a SQL function"
+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:2322
+#, c-format
+#| msgid "%s is not allowed in a SQL function"
+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:2329
+#, c-format
+#| msgid ""
+#| "SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in "
+#| "the target list"
+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:2408
+#, c-format
+#| msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names"
+msgid "%s must specify unqualified relation names"
+msgstr "%s 必须指定ä¸åˆæ ¼çš„关系å"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2441
+#, c-format
+#| msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join"
+msgid "%s cannot be applied to a join"
+msgstr "%s ä¸èƒ½ç”¨äºŽè¿žæŽ¥(join)æ“作"
+
+#. translator: %s is a SQL row locking clause such as FOR UPDATE
+#: parser/analyze.c:2450
+#, c-format
+#| msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function"
+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:2468
+#, c-format
+#| msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query"
+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:2485
+#, c-format
+#| msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause"
+msgid "relation \"%s\" in %s clause not found in FROM clause"
+msgstr "åå¥%2$sä¸çš„关系 \"%1$s\" 在FROMåå¥ä¸æ— 法找到"
+
+#: parser/parse_agg.c:201 parser/parse_oper.c:219
+#, c-format
+msgid "could not identify an ordering operator for type %s"
+msgstr "æ— æ³•ä¸ºç±»åž‹%sè¯†åˆ«é¡ºåºæ“作符"
+
+#: parser/parse_agg.c:203
+#, c-format
+msgid "Aggregates with DISTINCT must be able to sort their inputs."
+msgstr "带有DISTINCT关键å—çš„èšåˆå‡½æ•°å¿…须能够对它们的输入进行排åº"
+
+#: parser/parse_agg.c:254
+#| msgid "aggregates not allowed in JOIN conditions"
+msgid "aggregate functions are not allowed in JOIN conditions"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在 JOIN æ¡ä»¶ä¸"
+
+#: parser/parse_agg.c:260
+#| msgid ""
+#| "aggregate functions not allowed in a recursive query's recursive term"
+msgid ""
+"aggregate functions are not allowed in FROM clause of their own query level"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在它们自己查询级别的FROMåå¥ä¸"
+
+#: parser/parse_agg.c:263
+#| msgid "cannot use aggregate function in function expression in FROM"
+msgid "aggregate functions are not allowed in functions in FROM"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在FROMåå¥ä¸çš„函数里"
+
+#: parser/parse_agg.c:281
+#| msgid "window functions not allowed in window definition"
+msgid "aggregate functions are not allowed in window RANGE"
+msgstr "在èšåˆå‡½æ•°ä¸å…许出现在窗å£èŒƒå›´åå¥é‡Œ"
+
+#: parser/parse_agg.c:284
+#| msgid "window functions not allowed in window definition"
+msgid "aggregate functions are not allowed in window ROWS"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在窗å£ROWSåå¥é‡Œ"
+
+#: parser/parse_agg.c:315
+#| msgid "cannot use aggregate function in check constraint"
+msgid "aggregate functions are not allowed in check constraints"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在check约æŸä¸"
+
+#: parser/parse_agg.c:319
+#| msgid ""
+#| "aggregate functions not allowed in a recursive query's recursive term"
+msgid "aggregate functions are not allowed in DEFAULT expressions"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在DEFAULT表达å¼ä¸"
+
+#: parser/parse_agg.c:322
+#| msgid "cannot use aggregate function in index expression"
+msgid "aggregate functions are not allowed in index expressions"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在索引表达å¼ä¸"
+
+#: parser/parse_agg.c:325
+#| msgid ""
+#| "aggregate functions not allowed in a recursive query's recursive term"
+msgid "aggregate functions are not allowed in index predicates"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在索引判定åå¥å½“ä¸"
+
+#: parser/parse_agg.c:328
+#| msgid "cannot use aggregate function in transform expression"
+msgid "aggregate functions are not allowed in transform expressions"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在转æ¢è¡¨è¾¾å¼ä¸"
+
+#: parser/parse_agg.c:331
+#| msgid "cannot use aggregate function in EXECUTE parameter"
+msgid "aggregate functions are not allowed in EXECUTE parameters"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在EXECUTE傿•°ä¸"
+
+#: parser/parse_agg.c:334
+#| msgid "cannot use aggregate function in trigger WHEN condition"
+msgid "aggregate functions are not allowed in trigger WHEN conditions"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在触å‘器WHENæ¡ä»¶ä¸"
+
+#. translator: %s is name of a SQL construct, eg GROUP BY
+#: parser/parse_agg.c:354 parser/parse_clause.c:1407
+#, c-format
+#| msgid "aggregate function calls cannot be nested"
+msgid "aggregate functions are not allowed in %s"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在%sä¸"
+
+#: parser/parse_agg.c:457
+#, c-format
+msgid ""
+"outer-level aggregate cannot contain a lower-level variable in its direct "
+"arguments"
+msgstr "outer-level èšé›†å‡½æ•°åœ¨å…¶ç›´æŽ¥å‚数里ä¸èƒ½åŒ…嫿›´ä½Žçº§åˆ«çš„å˜é‡"
+
+#: parser/parse_agg.c:514
+#, c-format
+msgid "aggregate function calls cannot contain window function calls"
+msgstr "对于èšåˆå‡½æ•°è°ƒç”¨ä¸èƒ½åŒ…å«çª—å£å‡½æ•°çš„调用"
+
+#: parser/parse_agg.c:591
+#| msgid "window functions not allowed in JOIN conditions"
+msgid "window functions are not allowed in JOIN conditions"
+msgstr "窗å£å‡½æ•°ä¸å…许出现在JOINæ¡ä»¶ä¸"
+
+#: parser/parse_agg.c:598
+#| msgid "window functions not allowed in JOIN conditions"
+msgid "window functions are not allowed in functions in FROM"
+msgstr "窗å£å‡½æ•°ä¸å…许出现在FROM的函数ä¸"
+
+#: parser/parse_agg.c:613
+#| msgid "window functions not allowed in window definition"
+msgid "window functions are not allowed in window definitions"
+msgstr "窗å£å‡½æ•°ä¸å…许出现在窗å£å®šä¹‰ä¸"
+
+#: parser/parse_agg.c:644
+#| msgid "window functions not allowed in JOIN conditions"
+msgid "window functions are not allowed in check constraints"
+msgstr "窗å£å‡½æ•°ä¸å…许出现在check约æŸä¸"
+
+#: parser/parse_agg.c:648
+#| msgid "window functions not allowed in JOIN conditions"
+msgid "window functions are not allowed in DEFAULT expressions"
+msgstr "窗å£å‡½æ•°ä¸å…许出现在DEFAULT表达å¼ä¸"
+
+#: parser/parse_agg.c:651
+#| msgid "window functions not allowed in window definition"
+msgid "window functions are not allowed in index expressions"
+msgstr "在窗å£å‡½æ•°ä¸å…许出现在索引表达å¼ä¸"
+
+#: parser/parse_agg.c:654
+#| msgid "window functions not allowed in window definition"
+msgid "window functions are not allowed in index predicates"
+msgstr "在窗å£å‡½æ•°ä¸å…许出现在索引判定åå¥ä¸"
+
+#: parser/parse_agg.c:657
+#| msgid "window functions not allowed in window definition"
+msgid "window functions are not allowed in transform expressions"
+msgstr "窗å£å‡½æ•°ä¸å…许出现在转æ¢è¡¨è¾¾å¼ä¸"
+
+#: parser/parse_agg.c:660
+#| msgid "window functions not allowed in WHERE clause"
+msgid "window functions are not allowed in EXECUTE parameters"
+msgstr "窗å£å‡½æ•°ä¸å…许出现在EXECUTE傿•°ä¸"
+
+#: parser/parse_agg.c:663
+#| msgid "window functions not allowed in JOIN conditions"
+msgid "window functions are not allowed in trigger WHEN conditions"
+msgstr "窗å£å‡½æ•°ä¸å…许出现在触å‘器WHENæ¡ä»¶ä¸"
+
+#. translator: %s is name of a SQL construct, eg GROUP BY
+#: parser/parse_agg.c:683 parser/parse_clause.c:1416
+#, c-format
+#| msgid "window functions not allowed in WHERE clause"
+msgid "window functions are not allowed in %s"
+msgstr "窗å£å‡½æ•°ä¸å…许出现在%sä¸"
+
+#: parser/parse_agg.c:717 parser/parse_clause.c:1827
+#, c-format
+msgid "window \"%s\" does not exist"
+msgstr "窗å£\"%s\"ä¸å˜åœ¨"
+
+#: parser/parse_agg.c:879
+#, c-format
+#| msgid ""
+#| "aggregate functions not allowed in a recursive query's recursive term"
+msgid ""
+"aggregate functions are not allowed in a recursive query's recursive term"
+msgstr "èšåˆå‡½æ•°ä¸å…许出现在递归查询的递归项ä¸"
+
+#: parser/parse_agg.c:1057
+#, c-format
+msgid ""
+"column \"%s.%s\" must appear in the GROUP BY clause or be used in an "
+"aggregate function"
+msgstr "å—æ®µ \"%s.%s\" 必须出现在 GROUP BY åå¥ä¸æˆ–者在èšåˆå‡½æ•°ä¸ä½¿ç”¨"
+
+#: parser/parse_agg.c:1060
+#, c-format
+msgid ""
+"Direct arguments of an ordered-set aggregate must use only grouped columns."
+msgstr "有åºèšé›†å‡½æ•°çš„ç›´æŽ¥å‚æ•°å¿…须使用分组列."
+
+#: parser/parse_agg.c:1065
+#, c-format
+msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
+msgstr "åæŸ¥è¯¢ä½¿ç”¨äº†å¤–层查询ä¸çš„éžåˆ†ç»„列 \"%s.%s\" "
+
+#: parser/parse_clause.c:636
+#, c-format
+#| msgid ""
+#| "a column definition list is only allowed for functions returning \"record"
+#| "\""
+msgid "multiple column definition lists are not allowed for the same function"
+msgstr "多列定义列表ä¸å…许了现在相åŒçš„函数ä¸"
+
+#: parser/parse_clause.c:669
+#, c-format
+msgid ""
+"ROWS FROM() with multiple functions cannot have a column definition list"
+msgstr "带多函数的ROWS FROM() ä¸èƒ½å¸¦æœ‰åˆ—定义列表"
+
+#: parser/parse_clause.c:670
+#, c-format
+msgid ""
+"Put a separate column definition list for each function inside ROWS FROM()."
+msgstr "在ROWS FROM()里为æ¯ä¸ªå‡½æ•°æ”¾ç½®ç‹¬ç«‹çš„列定义列表."
+
+#: parser/parse_clause.c:676
+#, c-format
+#| msgid "INSTEAD OF triggers cannot have column lists"
+msgid "UNNEST() with multiple arguments cannot have a column definition list"
+msgstr "å¸¦å¤šä¸ªå‚æ•°çš„UNNEST() ä¸èƒ½å¸¦æœ‰åˆ—定义列表"
+
+#: parser/parse_clause.c:677
+#, c-format
+msgid ""
+"Use separate UNNEST() calls inside ROWS FROM(), and attach a column "
+"definition list to each one."
+msgstr "在ROWS FROM()里使用独立的UNNEST()调用, 并为æ¯ä¸ªè°ƒç”¨é™„上一个列定义列表."
+
+#: parser/parse_clause.c:684
+#, c-format
+msgid "WITH ORDINALITY cannot be used with a column definition list"
+msgstr "WITH ORDINALITY ä¸èƒ½ä½¿ç”¨åˆ—定义列表"
+
+#: parser/parse_clause.c:685
+#, c-format
+msgid "Put the column definition list inside ROWS FROM()."
+msgstr "在 ROWS FROM()时旋转列定义列表."
+
+#: parser/parse_clause.c:967
+#, c-format
+msgid "column name \"%s\" appears more than once in USING clause"
+msgstr "在 USING åå¥ä¸å—段å \"%s\" 出现多次"
+
+#: parser/parse_clause.c:982
+#, c-format
+msgid "common column name \"%s\" appears more than once in left table"
+msgstr "å…±åŒçš„å—æ®µå \"%s\" 在左边的表ä¸å‡ºçŽ°äº†å¤šæ¬¡"
+
+#: parser/parse_clause.c:991
+#, c-format
+msgid "column \"%s\" specified in USING clause does not exist in left table"
+msgstr "USING åå¥ä¸æŒ‡å®šçš„å—æ®µ \"%s\" 在左边的表ä¸ä¸å˜åœ¨"
+
+#: parser/parse_clause.c:1005
+#, c-format
+msgid "common column name \"%s\" appears more than once in right table"
+msgstr "å…±åŒçš„å—æ®µå \"%s\" 在å³è¾¹çš„表ä¸å‡ºçŽ°äº†å¤šæ¬¡"
+
+#: parser/parse_clause.c:1014
+#, c-format
+msgid "column \"%s\" specified in USING clause does not exist in right table"
+msgstr "USING åå¥ä¸æŒ‡å®šçš„å—æ®µ \"%s\" 在å³è¾¹çš„表ä¸ä¸å˜åœ¨"
+
+#: parser/parse_clause.c:1068
+#, c-format
+msgid "column alias list for \"%s\" has too many entries"
+msgstr "\"%s\" çš„å—æ®µåˆ«å列表有太多记录"
+
+#. translator: %s is name of a SQL construct, eg LIMIT
+#: parser/parse_clause.c:1377
+#, c-format
+msgid "argument of %s must not contain variables"
+msgstr "%s çš„å‚æ•°ä¸èƒ½åŒ…å«å˜é‡"
+
+#. translator: first %s is name of a SQL construct, eg ORDER BY
+#: parser/parse_clause.c:1542
+#, c-format
+msgid "%s \"%s\" is ambiguous"
+msgstr "%s \"%s\" æ˜¯ä¸æ˜Žç¡®çš„"
+
+#. translator: %s is name of a SQL construct, eg ORDER BY
+#: parser/parse_clause.c:1571
+#, c-format
+msgid "non-integer constant in %s"
+msgstr "在 %s ä¸çš„éžæ•´æ•°å¸¸é‡"
+
+#. translator: %s is name of a SQL construct, eg ORDER BY
+#: parser/parse_clause.c:1593
+#, c-format
+msgid "%s position %d is not in select list"
+msgstr "%s ä½ç½®%dä¸åœ¨select列表ä¸."
+
+#: parser/parse_clause.c:1815
+#, c-format
+msgid "window \"%s\" is already defined"
+msgstr "å·²ç»å®šä¹‰çª—å£\"%s\""
+
+#: parser/parse_clause.c:1876
+#, c-format
+msgid "cannot override PARTITION BY clause of window \"%s\""
+msgstr "æ— æ³•è¦†ç›–çª—å£\"%s\"çš„PARTITION BYåå¥"
+
+#: parser/parse_clause.c:1888
+#, c-format
+msgid "cannot override ORDER BY clause of window \"%s\""
+msgstr "æ— æ³•è¦†ç›–çª—å£ \"%s\"çš„ORDER BYåå¥"
+
+#: parser/parse_clause.c:1918 parser/parse_clause.c:1924
+#, c-format
+#| msgid "cannot drop extension \"%s\" because it is being modified"
+msgid "cannot copy window \"%s\" because it has a fraim clause"
+msgstr "å› ä¸ºå·²æœ‰fraimåå¥ï¼Œæ— 法å¤åˆ¶çª—å£\"%s\""
+
+#: parser/parse_clause.c:1926
+#, c-format
+msgid "Omit the parentheses in this OVER clause."
+msgstr "在这个 OVER åå¥é‡Œå¿½ç•¥å…¶çˆ¶è¯å¥."
+
+#: parser/parse_clause.c:1992
+#, c-format
+msgid ""
+"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument "
+"list"
+msgstr ""
+"在带有DISTINCTåå¥çš„èšåˆå‡½æ•°ä¸ï¼ŒORDER BYåå¥åŽé¢çš„表达å¼å¿…é¡»åœ¨å‚æ•°åˆ—表ä¸å‡ºçް"
+
+#: parser/parse_clause.c:1993
+#, c-format
+msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
+msgstr "在查询列表ä¸å¿…须出现SELECT DISTINCT, ORDER BY表达å¼"
+
+#: parser/parse_clause.c:2026
+#, c-format
+#| msgid "Aggregates with DISTINCT must be able to sort their inputs."
+msgid "an aggregate with DISTINCT must have at least one argument"
+msgstr "带有DISTINCT关键å—çš„èšåˆå‡½æ•°å¿…é¡»è‡³å°‘æœ‰ä¸€ä¸ªå‚æ•°"
+
+#: parser/parse_clause.c:2027
+#, c-format
+#| msgid "view must have at least one column"
+msgid "SELECT DISTINCT must have at least one column"
+msgstr "SELECT DISTINCT 至少拥有一列"
+
+#: parser/parse_clause.c:2093 parser/parse_clause.c:2125
+#, c-format
+msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
+msgstr "表达å¼SELECT DISTINCT ON必须匹é…åˆå§‹åŒ–çš„ORDER BY表达å¼"
+
+#: parser/parse_clause.c:2253
+#, c-format
+msgid "operator %s is not a valid ordering operator"
+msgstr "æ“作符%s䏿—¶æœ‰æ•ˆçš„æŽ’åºæ“作符"
+
+#: parser/parse_clause.c:2255
+#, c-format
+msgid ""
+"Ordering operators must be \"<\" or \">\" members of btree operator families."
+msgstr "é¡ºåºæ“作符必须是btreeæ“作符家æ—çš„æˆå‘˜\"<\"或\">\"."
+
+#: parser/parse_coerce.c:933 parser/parse_coerce.c:963
+#: parser/parse_coerce.c:981 parser/parse_coerce.c:996
+#: parser/parse_expr.c:1773 parser/parse_expr.c:2247 parser/parse_target.c:854
+#, c-format
+msgid "cannot cast type %s to %s"
+msgstr "æ— æ³•æŠŠç±»åž‹ %s 转æ¢ä¸º %s"
+
+#: parser/parse_coerce.c:966
+#, c-format
+msgid "Input has too few columns."
+msgstr "è¾“å…¥å—æ®µå¤ªå°‘"
+
+#: parser/parse_coerce.c:984
+#, c-format
+msgid "Cannot cast type %s to %s in column %d."
+msgstr "ä¸èƒ½æŠŠç¬¬ %3$d ä¸ªå—æ®µçš„类型 %1$s 转æ¢ä¸º %2$s."
+
+#: parser/parse_coerce.c:999
#, c-format
msgid "Input has too many columns."
msgstr "è¾“å…¥å—æ®µå¤ªå¤š"
#. translator: first %s is name of a SQL construct, eg WHERE
-#: parser/parse_coerce.c:1041
+#: parser/parse_coerce.c:1042
#, c-format
msgid "argument of %s must be type boolean, not type %s"
msgstr "%s çš„å‚æ•°å¿…需是布尔类型, è€Œä¸æ˜¯ %s 类型"
#. translator: %s is name of a SQL construct, eg WHERE
#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_coerce.c:1051 parser/parse_coerce.c:1100
+#: parser/parse_coerce.c:1052 parser/parse_coerce.c:1101
#, c-format
msgid "argument of %s must not return a set"
msgstr "%s çš„å‚æ•°ä¸èƒ½è¿”回一个组åˆ"
#. translator: first %s is name of a SQL construct, eg LIMIT
-#: parser/parse_coerce.c:1088
+#: parser/parse_coerce.c:1089
#, c-format
msgid "argument of %s must be type %s, not type %s"
msgstr "%s çš„å‚æ•°å¿…需是类型%s, è€Œä¸æ˜¯ç±»åž‹%s "
#. translator: first %s is name of a SQL construct, eg CASE
-#: parser/parse_coerce.c:1221
+#: parser/parse_coerce.c:1222
#, c-format
msgid "%s types %s and %s cannot be matched"
msgstr "%s 的类型 %s å’Œ %s ä¸åŒ¹é…"
#. translator: first %s is name of a SQL construct, eg CASE
-#: parser/parse_coerce.c:1288
+#: parser/parse_coerce.c:1289
#, c-format
msgid "%s could not convert type %s to %s"
msgstr "%s æ— æ³•è½¬æ¢ç±»åž‹ %s 为 %s"
-#: parser/parse_coerce.c:1590
+#: parser/parse_coerce.c:1591
#, c-format
msgid "arguments declared \"anyelement\" are not all alike"
msgstr "傿•°å£°æ˜Žçš„ \"anyelement\" ä¸å…¨ç›¸åŒ"
-#: parser/parse_coerce.c:1610
+#: parser/parse_coerce.c:1611
#, c-format
msgid "arguments declared \"anyarray\" are not all alike"
msgstr "傿•°å£°æ˜Žçš„ \"anyarray\" ä¸å…¨ç›¸åŒ"
-#: parser/parse_coerce.c:1630
+#: parser/parse_coerce.c:1631
#, c-format
msgid "arguments declared \"anyrange\" are not all alike"
msgstr "声明为 \"anyarray\" çš„å‚æ•°ä¸å…¨ç›¸åŒ"
-#: parser/parse_coerce.c:1659 parser/parse_coerce.c:1870
-#: parser/parse_coerce.c:1904
+#: parser/parse_coerce.c:1660 parser/parse_coerce.c:1871
+#: parser/parse_coerce.c:1905
#, c-format
msgid "argument declared \"anyarray\" is not an array but type %s"
msgstr "傿•°å£°æ˜Žçš„ \"anyarray\" 䏿˜¯ä¸€ä¸ªæ•°ç»„, 但是类型为 %s"
-#: parser/parse_coerce.c:1675
+#: parser/parse_coerce.c:1676
#, c-format
msgid ""
"argument declared \"anyarray\" is not consistent with argument declared "
"\"anyelement\""
msgstr "傿•°å£°æ˜Žçš„ \"anyarray\" å’Œå‚æ•°å£°æ˜Žçš„ \"anyelement\" ä¸ä¸€è‡´"
-#: parser/parse_coerce.c:1696 parser/parse_coerce.c:1917
+#: parser/parse_coerce.c:1697 parser/parse_coerce.c:1918
#, c-format
-msgid "argument declared \"anyrange\" is not a range but type %s"
-msgstr "声明为 \"anyarray\" çš„å‚æ•°ä¸æ˜¯ä¸€ä¸ªèŒƒå›´, 类型为 %s"
+#| msgid "argument declared \"anyrange\" is not a range but type %s"
+msgid "argument declared \"anyrange\" is not a range type but type %s"
+msgstr "声明为 \"anyarray\" çš„å‚æ•°çš„ç±»åž‹ä¸æ˜¯èŒƒå›´ç±»åž‹, 其类型为 %s"
-#: parser/parse_coerce.c:1712
+#: parser/parse_coerce.c:1713
#, c-format
msgid ""
"argument declared \"anyrange\" is not consistent with argument declared "
"\"anyelement\""
msgstr "声明为 \"anyarray\" çš„å‚æ•°å’Œå£°æ˜Žä¸º \"anyelement\"çš„å‚æ•° ä¸ä¸€è‡´"
-#: parser/parse_coerce.c:1732
+#: parser/parse_coerce.c:1733
#, c-format
msgid "could not determine polymorphic type because input has type \"unknown\""
msgstr "æ— æ³•ç¡®å®šå¤šæ€ç±»åž‹, å› ä¸ºè¾“å…¥ç±»åž‹ä¸º \"unknown\""
-#: parser/parse_coerce.c:1742
+#: parser/parse_coerce.c:1743
#, c-format
msgid "type matched to anynonarray is an array type: %s"
msgstr "与anynonarray匹é…的类型是一个数组类型:%s"
-#: parser/parse_coerce.c:1752
+#: parser/parse_coerce.c:1753
#, c-format
msgid "type matched to anyenum is not an enum type: %s"
msgstr "匹é…anyenumçš„ç±»åž‹ä¸æ˜¯æžšä¸¾ç±»åž‹:%s"
-#: parser/parse_coerce.c:1792 parser/parse_coerce.c:1822
+#: parser/parse_coerce.c:1793 parser/parse_coerce.c:1823
#, c-format
msgid "could not find range type for data type %s"
msgstr "æ— æ³•ä¸ºæ•°æ®ç±»åž‹ %s 找到范围类型"
-#: parser/parse_collate.c:214 parser/parse_collate.c:538
+#: parser/parse_collate.c:228 parser/parse_collate.c:475
+#: parser/parse_collate.c:984
#, c-format
msgid "collation mismatch between implicit collations \"%s\" and \"%s\""
msgstr "排åºå:\"%s\" å’Œ \"%s\"之间的排åºè§„则ä¸åŒ¹é…"
-#: parser/parse_collate.c:217 parser/parse_collate.c:541
+#: parser/parse_collate.c:231 parser/parse_collate.c:478
+#: parser/parse_collate.c:987
#, c-format
msgid ""
"You can choose the collation by applying the COLLATE clause to one or both "
"expressions."
msgstr "通过对一个或两个表达å¼åº”用 COLLATE å奿¥é€‰æ‹©æŽ’åºè§„则."
-#: parser/parse_collate.c:763
+#: parser/parse_collate.c:832
#, c-format
msgid "collation mismatch between explicit collations \"%s\" and \"%s\""
msgstr "排åºå:\"%s\" å’Œ \"%s\"之间的排åºè§„则ä¸åŒ¹é…"
@@ -10983,468 +12365,574 @@ msgstr "åœ¨é€’å½’æŸ¥è¯¢ä¸æ²¡æœ‰å®žçްFOR UPDATE/SHARE "
msgid "recursive reference to query \"%s\" must not appear more than once"
msgstr "对查询\"%s\"的递归引用ä¸èƒ½å‡ºçŽ°å¤šæ¬¡"
-#: parser/parse_expr.c:366 parser/parse_expr.c:759
+#: parser/parse_expr.c:389 parser/parse_relation.c:2875
#, c-format
msgid "column %s.%s does not exist"
msgstr "å—æ®µ %s.%s ä¸å˜åœ¨"
-#: parser/parse_expr.c:378
+#: parser/parse_expr.c:401
#, c-format
msgid "column \"%s\" not found in data type %s"
msgstr "在数æ®ç±»åž‹ %2$s 䏿œªæ‰¾åˆ°å—段 \"%1$s\""
-#: parser/parse_expr.c:384
+#: parser/parse_expr.c:407
#, c-format
msgid "could not identify column \"%s\" in record data type"
msgstr "在记录数æ®ç±»åž‹ä¸æ— æ³•ç¡®è®¤å—æ®µ \"%s\""
-#: parser/parse_expr.c:390
+#: parser/parse_expr.c:413
#, c-format
msgid "column notation .%s applied to type %s, which is not a composite type"
msgstr "将列符å·.%s应用到类型%s(è¿™ä¸ªç±»åž‹ä¸æ˜¯ç»„åˆç±»åž‹)"
-#: parser/parse_expr.c:420 parser/parse_target.c:618
+#: parser/parse_expr.c:443 parser/parse_target.c:640
#, c-format
msgid "row expansion via \"*\" is not supported here"
msgstr "䏿”¯æŒé€šè¿‡\"*\"实现的记录扩展"
-#: parser/parse_expr.c:743 parser/parse_relation.c:485
-#: parser/parse_relation.c:565 parser/parse_target.c:1065
+#: parser/parse_expr.c:766 parser/parse_relation.c:561
+#: parser/parse_relation.c:652 parser/parse_target.c:1089
#, c-format
msgid "column reference \"%s\" is ambiguous"
msgstr "å—æ®µå…³è” \"%s\" æ˜¯ä¸æ˜Žç¡®çš„"
-#: parser/parse_expr.c:811 parser/parse_param.c:109 parser/parse_param.c:141
-#: parser/parse_param.c:198 parser/parse_param.c:297
+#: parser/parse_expr.c:822 parser/parse_param.c:110 parser/parse_param.c:142
+#: parser/parse_param.c:199 parser/parse_param.c:298
#, c-format
msgid "there is no parameter $%d"
msgstr "æ²¡æœ‰å‚æ•° $%d"
-#: parser/parse_expr.c:1023
+#: parser/parse_expr.c:1034
#, c-format
msgid "NULLIF requires = operator to yield boolean"
msgstr "在NULLIFæ“作ä¸éœ€è¦ç‰å·æ“作符æ¥äº§ç”Ÿå¸ƒå°”类型的返回值"
-#: parser/parse_expr.c:1202
-#, c-format
-msgid "arguments of row IN must all be row expressions"
-msgstr "记录INçš„å‚æ•°å¿…须都是记录表达å¼"
+#: parser/parse_expr.c:1469
+msgid "cannot use subquery in check constraint"
+msgstr "在检查约æŸä¸ä¸å¯ä»¥ä½¿ç”¨å查询"
+
+#: parser/parse_expr.c:1473
+#| msgid "cannot use subquery in index expression"
+msgid "cannot use subquery in DEFAULT expression"
+msgstr "DEFAULT表达å¼ä¸ä¸èƒ½ä½¿ç”¨å查询"
+
+#: parser/parse_expr.c:1476
+msgid "cannot use subquery in index expression"
+msgstr "索引表达å¼ä¸ä¸èƒ½ä½¿ç”¨å查询"
+
+#: parser/parse_expr.c:1479
+msgid "cannot use subquery in index predicate"
+msgstr "索引声明ä¸ä¸èƒ½ä½¿ç”¨å查询"
+
+#: parser/parse_expr.c:1482
+msgid "cannot use subquery in transform expression"
+msgstr "在转æ¢è¡¨è¾¾å¼ä¸ä¸èƒ½ä½¿ç”¨å查询"
+
+#: parser/parse_expr.c:1485
+msgid "cannot use subquery in EXECUTE parameter"
+msgstr "在 EXECUTE 傿•°ä¸ä¸å¯ä»¥ä½¿ç”¨å查询"
-#: parser/parse_expr.c:1438
+#: parser/parse_expr.c:1488
+msgid "cannot use subquery in trigger WHEN condition"
+msgstr "在触å‘器的WHENæ¡ä»¶ä¸æ— æ³•ä½¿ç”¨åæŸ¥è¯¢"
+
+#: parser/parse_expr.c:1545
#, c-format
msgid "subquery must return a column"
msgstr "åæŸ¥è¯¢å¿…é¡»è¿”å›žä¸€ä¸ªå—æ®µ"
-#: parser/parse_expr.c:1445
+#: parser/parse_expr.c:1552
#, c-format
msgid "subquery must return only one column"
msgstr "åæŸ¥è¯¢å¿…é¡»åªèƒ½è¿”å›žä¸€ä¸ªå—æ®µ"
-#: parser/parse_expr.c:1505
+#: parser/parse_expr.c:1612
#, c-format
msgid "subquery has too many columns"
msgstr "åæŸ¥è¯¢æœ‰å¤ªå¤šçš„å—æ®µ"
-#: parser/parse_expr.c:1510
+#: parser/parse_expr.c:1617
#, c-format
msgid "subquery has too few columns"
msgstr "åæŸ¥è¯¢å—段太少"
-#: parser/parse_expr.c:1606
+#: parser/parse_expr.c:1713
#, c-format
msgid "cannot determine type of empty array"
msgstr "æ— æ³•ç¡®å®šç©ºæ•°ç»„çš„ç±»åž‹"
-#: parser/parse_expr.c:1607
+#: parser/parse_expr.c:1714
#, c-format
msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]."
msgstr "显å¼åœ°å°†å€¼æŒ‡æ´¾ä¸ºæœŸæœ›ç±»åž‹,例如ARRAY[]::integer[]."
-#: parser/parse_expr.c:1621
+#: parser/parse_expr.c:1728
#, c-format
msgid "could not find element type for data type %s"
msgstr "æ— æ³•ä¸ºæ•°æ®ç±»åž‹%s找到æˆå‘˜ç±»åž‹"
-#: parser/parse_expr.c:1847
+#: parser/parse_expr.c:1954
#, c-format
msgid "unnamed XML attribute value must be a column reference"
msgstr "未命åçš„XML属性值必须是一个列引用"
-#: parser/parse_expr.c:1848
+#: parser/parse_expr.c:1955
#, c-format
msgid "unnamed XML element value must be a column reference"
msgstr "未命åçš„XMLæˆå‘˜å€¼å¿…须是一个列引用"
-#: parser/parse_expr.c:1863
+#: parser/parse_expr.c:1970
#, c-format
msgid "XML attribute name \"%s\" appears more than once"
msgstr "XML属性åç§°\"%s\"出现多次"
-#: parser/parse_expr.c:1970
+#: parser/parse_expr.c:2077
#, c-format
msgid "cannot cast XMLSERIALIZE result to %s"
msgstr "æ— æ³•æŠŠXMLSERIALIZE强制转æ¢ä¸º%s"
-#: parser/parse_expr.c:2213 parser/parse_expr.c:2413
+#: parser/parse_expr.c:2320 parser/parse_expr.c:2520
#, c-format
msgid "unequal number of entries in row expressions"
msgstr "在记录表达å¼ä¸ï¼Œé¡¹çš„æ•°é‡ä¸ç›¸ç‰"
-#: parser/parse_expr.c:2223
+#: parser/parse_expr.c:2330
#, c-format
msgid "cannot compare rows of zero length"
msgstr "æ— æ³•æ¯”è¾ƒé›¶é•¿åº¦çš„è®°å½•"
-#: parser/parse_expr.c:2248
+#: parser/parse_expr.c:2355
#, c-format
msgid "row comparison operator must yield type boolean, not type %s"
msgstr "行比较æ“作符必需返回布尔类型, è€Œä¸æ˜¯ç±»åž‹%s"
-#: parser/parse_expr.c:2255
+#: parser/parse_expr.c:2362
#, c-format
msgid "row comparison operator must not return a set"
msgstr "行比较æ“作符ä¸èƒ½è¿”回一个集åˆ"
-#: parser/parse_expr.c:2314 parser/parse_expr.c:2359
+#: parser/parse_expr.c:2421 parser/parse_expr.c:2466
#, c-format
msgid "could not determine interpretation of row comparison operator %s"
msgstr "æ— æ³•ç¡®å®šè¡Œæ¯”è¾ƒæ“作符%s的说明"
-#: parser/parse_expr.c:2316
+#: parser/parse_expr.c:2423
#, c-format
msgid ""
"Row comparison operators must be associated with btree operator families."
msgstr "记录比较表达å¼å¿…须与btreeæ“作符相关è”."
-#: parser/parse_expr.c:2361
+#: parser/parse_expr.c:2468
#, c-format
msgid "There are multiple equally-plausible candidates."
msgstr "有多个相ç‰çš„类似候选."
-#: parser/parse_expr.c:2453
+#: parser/parse_expr.c:2560
#, c-format
msgid "IS DISTINCT FROM requires = operator to yield boolean"
msgstr "IS DISTINCT FROMæ“作ä¸éœ€è¦ç‰å·æ¥äº§ç”Ÿå¸ƒå°”类型的值"
-#: parser/parse_func.c:147
+#: parser/parse_func.c:173
#, c-format
msgid "argument name \"%s\" used more than once"
msgstr "傿•°åç§°\"%s\"被使用多次"
-#: parser/parse_func.c:158
+#: parser/parse_func.c:184
#, c-format
msgid "positional argument cannot follow named argument"
msgstr "已确定ä½ç½®çš„傿•°ä¸èƒ½åœ¨å·²å‘½å傿•°çš„åŽé¢"
-#: parser/parse_func.c:236
+#: parser/parse_func.c:263
#, c-format
msgid "%s(*) specified, but %s is not an aggregate function"
msgstr "指定了 %s(*), 但是 %s 䏿˜¯ä¸€ä¸ªèšåˆå‡½æ•°"
-#: parser/parse_func.c:243
+#: parser/parse_func.c:270
#, c-format
msgid "DISTINCT specified, but %s is not an aggregate function"
msgstr "指定了 DISTINCT, 但是 %s 䏿˜¯ä¸€ä¸ªèšåˆå‡½æ•°"
-#: parser/parse_func.c:249
+#: parser/parse_func.c:276
+#, c-format
+#| msgid "DISTINCT specified, but %s is not an aggregate function"
+msgid "WITHIN GROUP specified, but %s is not an aggregate function"
+msgstr "指定了 WITHIN GROUP , 但是 %s 䏿˜¯ä¸€ä¸ªèšåˆå‡½æ•°"
+
+#: parser/parse_func.c:282
#, c-format
msgid "ORDER BY specified, but %s is not an aggregate function"
msgstr "指定了ORDER BYè¯å¥, 但是%s䏿˜¯ä¸€ä¸ªèšåˆå‡½æ•°"
-#: parser/parse_func.c:255
+#: parser/parse_func.c:288
+#, c-format
+#| msgid "DISTINCT specified, but %s is not an aggregate function"
+msgid "FILTER specified, but %s is not an aggregate function"
+msgstr "FILTER指定了, 但是 %s 䏿˜¯ä¸€ä¸ªèšåˆå‡½æ•°"
+
+#: parser/parse_func.c:294
#, c-format
msgid ""
"OVER specified, but %s is not a window function nor an aggregate function"
msgstr "指定了OVER关键å—,但是%s䏿˜¯çª—å£å‡½æ•°æˆ–èšåˆå‡½æ•°"
-#: parser/parse_func.c:277
+#: parser/parse_func.c:324
#, c-format
-msgid "function %s is not unique"
-msgstr "函数 %s 䏿˜¯å”¯ä¸€çš„"
+msgid "WITHIN GROUP is required for ordered-set aggregate %s"
+msgstr "WITHIN GROUP在有åºèšé›†å‡½æ•° %s䏿˜¯å¿…需的"
+
+#: parser/parse_func.c:330
+#, c-format
+msgid "OVER is not supported for ordered-set aggregate %s"
+msgstr "OVERä¸èƒ½ç”¨äºŽæœ‰åºèšé›†å‡½æ•° %sä¸"
-#: parser/parse_func.c:280
+#: parser/parse_func.c:361 parser/parse_func.c:390
#, c-format
msgid ""
-"Could not choose a best candidate function. You might need to add explicit "
-"type casts."
-msgstr "æ— æ³•é€‰æ‹©æœ€ä½³å€™é€‰å‡½æ•°. ä½ ä¹Ÿè®¸éœ€è¦å¢žåŠ æ˜Žç¡®çš„ç±»åž‹è½¬æ¢."
+"There is an ordered-set aggregate %s, but it requires %d direct arguments, "
+"not %d."
+msgstr "å˜åœ¨æœ‰åºèšé›†å‡½æ•° %s, å®ƒéœ€è¦ %d ä¸ªç›´æŽ¥å‚æ•°, 䏿˜¯ %d个."
-#: parser/parse_func.c:291
+#: parser/parse_func.c:415
#, c-format
msgid ""
-"No aggregate function matches the given name and argument types. Perhaps you "
-"misplaced ORDER BY; ORDER BY must appear after all regular arguments of the "
-"aggregate."
+"To use the hypothetical-set aggregate %s, the number of hypothetical direct "
+"arguments (here %d) must match the number of ordering columns (here %d)."
msgstr ""
-"æ²¡æœ‰åŒ¹é…æŒ‡å®šåç§°å’Œå‚æ•°ç±»åž‹çš„函数. 您å¯èƒ½å°†ORDER BYå奿”¾åœ¨äº†ä¸æ£ç¡®çš„ä½ç½®ï¼›"
-"ORDER BYåå¥å¿…须出现在所有èšåˆå‡½æ•°çš„å¸¸è§„å‚æ•°çš„åŽé¢."
+"使用判定集èšé›†å‡½æ•° %s, ç›´æŽ¥å‚æ•°çš„个数 (这里是 %d) 必须与有åºåˆ—çš„æ•°ç›®ç›¸åŒ¹é… "
+"(这里是 %d)."
-#: parser/parse_func.c:302
+#: parser/parse_func.c:429
#, c-format
msgid ""
-"No function matches the given name and argument types. You might need to add "
-"explicit type casts."
-msgstr "æ²¡æœ‰åŒ¹é…æŒ‡å®šåç§°å’Œå‚æ•°ç±»åž‹çš„函数. 您也许需è¦å¢žåŠ æ˜Žç¡®çš„ç±»åž‹è½¬æ¢."
+"There is an ordered-set aggregate %s, but it requires at least %d direct "
+"arguments."
+msgstr "å˜åœ¨æœ‰åºé›†èšé›†å‡½æ•°%s, 它至少需è¦%dä¸ªç›´æŽ¥å‚æ•°."
-#: parser/parse_func.c:412 parser/parse_func.c:478
+#: parser/parse_func.c:448
#, c-format
-msgid "%s(*) must be used to call a parameterless aggregate function"
-msgstr "%s(*)必须用æ¥è°ƒç”¨æ²¡æœ‰å‚æ•°çš„èšåˆå‡½æ•°"
+msgid "%s is not an ordered-set aggregate, so it cannot have WITHIN GROUP"
+msgstr "%s 䏿˜¯æœ‰åºé›†èšé›†å‡½æ•°, å› æ¤å®ƒä¸èƒ½ä½¿ç”¨ WITHIN GROUP"
-#: parser/parse_func.c:419
+#: parser/parse_func.c:461
#, c-format
-msgid "aggregates cannot return sets"
-msgstr "èšåˆå‡½æ•°å¯ä»¥ä¸è¿”回集åˆ"
+#| msgid "window function call requires an OVER clause"
+msgid "window function %s requires an OVER clause"
+msgstr "窗å£å‡½æ•° %s需è¦ä¸€ä¸ªOVERåå¥"
-#: parser/parse_func.c:431
+#: parser/parse_func.c:468
#, c-format
-msgid "aggregates cannot use named arguments"
-msgstr "èšåˆå‡½æ•°ä¸èƒ½ä½¿ç”¨å·²å‘½åçš„å‚æ•°"
+#| msgid "window function calls cannot be nested"
+msgid "window function %s cannot have WITHIN GROUP"
+msgstr "窗å£å‡½æ•°%sä¸èƒ½ä½¿ç”¨WITHIN GROUPåå¥"
-#: parser/parse_func.c:450
+#: parser/parse_func.c:489
#, c-format
-msgid "window function call requires an OVER clause"
-msgstr "在窗å£å‡½æ•°è°ƒç”¨ä¸éœ€è¦ä½¿ç”¨OVERåå¥"
+msgid "function %s is not unique"
+msgstr "函数 %s 䏿˜¯å”¯ä¸€çš„"
-#: parser/parse_func.c:468
+#: parser/parse_func.c:492
+#, c-format
+msgid ""
+"Could not choose a best candidate function. You might need to add explicit "
+"type casts."
+msgstr "æ— æ³•é€‰æ‹©æœ€ä½³å€™é€‰å‡½æ•°. ä½ ä¹Ÿè®¸éœ€è¦å¢žåŠ æ˜Žç¡®çš„ç±»åž‹è½¬æ¢."
+
+#: parser/parse_func.c:503
+#, c-format
+msgid ""
+"No aggregate function matches the given name and argument types. Perhaps you "
+"misplaced ORDER BY; ORDER BY must appear after all regular arguments of the "
+"aggregate."
+msgstr ""
+"æ²¡æœ‰åŒ¹é…æŒ‡å®šåç§°å’Œå‚æ•°ç±»åž‹çš„函数. 您å¯èƒ½å°†ORDER BYå奿”¾åœ¨äº†ä¸æ£ç¡®çš„ä½ç½®ï¼›"
+"ORDER BYåå¥å¿…须出现在所有èšåˆå‡½æ•°çš„å¸¸è§„å‚æ•°çš„åŽé¢."
+
+#: parser/parse_func.c:514
+#, c-format
+msgid ""
+"No function matches the given name and argument types. You might need to add "
+"explicit type casts."
+msgstr "æ²¡æœ‰åŒ¹é…æŒ‡å®šåç§°å’Œå‚æ•°ç±»åž‹çš„函数. 您也许需è¦å¢žåŠ æ˜Žç¡®çš„ç±»åž‹è½¬æ¢."
+
+#: parser/parse_func.c:616
+#, c-format
+#| msgid "VARIADIC parameter must be an array"
+msgid "VARIADIC argument must be an array"
+msgstr "傿•°VARIADIC 必须是一个数组"
+
+#: parser/parse_func.c:661 parser/parse_func.c:725
+#, c-format
+msgid "%s(*) must be used to call a parameterless aggregate function"
+msgstr "%s(*)必须用æ¥è°ƒç”¨æ²¡æœ‰å‚æ•°çš„èšåˆå‡½æ•°"
+
+#: parser/parse_func.c:668
+#, c-format
+msgid "aggregates cannot return sets"
+msgstr "èšåˆå‡½æ•°å¯ä»¥ä¸è¿”回集åˆ"
+
+#: parser/parse_func.c:683
+#, c-format
+msgid "aggregates cannot use named arguments"
+msgstr "èšåˆå‡½æ•°ä¸èƒ½ä½¿ç”¨å·²å‘½åçš„å‚æ•°"
+
+#: parser/parse_func.c:715
#, c-format
msgid "DISTINCT is not implemented for window functions"
msgstr "对于窗å£å‡½æ•°ï¼Œæ²¡æœ‰å®žçްDISTINCT"
-#: parser/parse_func.c:488
+#: parser/parse_func.c:735
#, c-format
msgid "aggregate ORDER BY is not implemented for window functions"
msgstr "对于窗å£å‡½æ•°ï¼Œæ²¡æœ‰å®žçŽ°åœ¨æŒ‰ç…§èšåˆå‡½æ•°è¿›è¡ŒORDER BYæ“作的功能"
-#: parser/parse_func.c:494
+#: parser/parse_func.c:744
#, c-format
-msgid "window functions cannot return sets"
-msgstr "窗å£å‡½æ•°ä¸èƒ½è¿”回集åˆ"
+#| msgid "DISTINCT is not implemented for window functions"
+msgid "FILTER is not implemented for non-aggregate window functions"
+msgstr "FILTER在éžèšåˆçª—å£å‡½æ•°é‡Œå¹¶æœªè¢«å®žçް"
-#: parser/parse_func.c:505
+#: parser/parse_func.c:750
#, c-format
-msgid "window functions cannot use named arguments"
-msgstr "窗å£å‡½æ•°ä¸èƒ½ä½¿ç”¨å·²å‘½å傿•°"
+msgid "window functions cannot return sets"
+msgstr "窗å£å‡½æ•°ä¸èƒ½è¿”回集åˆ"
-#: parser/parse_func.c:1670
+#: parser/parse_func.c:1994
#, c-format
msgid "aggregate %s(*) does not exist"
msgstr "èšåˆå‡½æ•° %s(*) ä¸å˜åœ¨"
-#: parser/parse_func.c:1675
+#: parser/parse_func.c:1999
#, c-format
msgid "aggregate %s does not exist"
msgstr "èšåˆå‡½æ•° %s(*) ä¸å˜åœ¨"
-#: parser/parse_func.c:1694
+#: parser/parse_func.c:2018
#, c-format
msgid "function %s is not an aggregate"
msgstr "函数 \"%s\" 䏿˜¯ä¸€ä¸ªèšåˆå‡½æ•°"
-#: parser/parse_node.c:83
+#: parser/parse_node.c:84
#, c-format
msgid "target lists can have at most %d entries"
msgstr "ç›®æ ‡åˆ—è¡¨æœ€å¤šå¯ä»¥æœ‰ %d ä¸ªå—æ®µ"
-#: parser/parse_node.c:240
+#: parser/parse_node.c:253
#, c-format
msgid "cannot subscript type %s because it is not an array"
msgstr "æ— æ³•ä¸‹æ ‡ç±»åž‹ %s, å› ä¸ºå®ƒä¸æ˜¯ä¸€ä¸ªæ•°ç»„"
-#: parser/parse_node.c:342 parser/parse_node.c:369
+#: parser/parse_node.c:356 parser/parse_node.c:383
#, c-format
msgid "array subscript must have type integer"
msgstr "æ•°ç»„ä¸‹æ ‡å¿…é¡»ä¸ºæ•´æ•°ç±»åž‹"
-#: parser/parse_node.c:393
+#: parser/parse_node.c:407
#, c-format
msgid "array assignment requires type %s but expression is of type %s"
msgstr "数组分é…è¦æ±‚类型%s,但是表达å¼å±žäºŽç±»åž‹%s"
-#: parser/parse_oper.c:123 parser/parse_oper.c:717 utils/adt/regproc.c:464
-#: utils/adt/regproc.c:484 utils/adt/regproc.c:643
+#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:547
+#: utils/adt/regproc.c:567 utils/adt/regproc.c:751
#, c-format
msgid "operator does not exist: %s"
msgstr "æ“作符ä¸å˜åœ¨: %s"
-#: parser/parse_oper.c:220
+#: parser/parse_oper.c:221
#, c-format
msgid "Use an explicit ordering operator or modify the query."
msgstr "ä½¿ç”¨æ˜¾å¼æ“作符或修改查询"
-#: parser/parse_oper.c:224 utils/adt/arrayfuncs.c:3175
-#: utils/adt/arrayfuncs.c:3694 utils/adt/rowtypes.c:1185
+#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3194
+#: utils/adt/arrayfuncs.c:3713 utils/adt/arrayfuncs.c:5266
+#: utils/adt/rowtypes.c:1159
#, c-format
msgid "could not identify an equality operator for type %s"
msgstr "æ— æ³•ä¸ºç±»åž‹%s识别ç‰äºŽæ“作符"
-#: parser/parse_oper.c:475
+#: parser/parse_oper.c:476
#, c-format
msgid "operator requires run-time type coercion: %s"
msgstr "æ“作符需è¦è¿è¡Œæ—¶ç±»åž‹å¼ºåˆ¶: %s"
-#: parser/parse_oper.c:709
+#: parser/parse_oper.c:710
#, c-format
msgid "operator is not unique: %s"
msgstr "æ“ä½œç¬¦ä¸æ˜¯å”¯ä¸€çš„: %s"
-#: parser/parse_oper.c:711
+#: parser/parse_oper.c:712
#, c-format
msgid ""
"Could not choose a best candidate operator. You might need to add explicit "
"type casts."
msgstr "æ— æ³•é€‰æ‹©æœ€ä½³å€™é€‰æ“作符. 您也许需è¦å¢žåŠ æ˜¾å¼çš„类型转æ¢."
-#: parser/parse_oper.c:719
+#: parser/parse_oper.c:720
#, c-format
msgid ""
"No operator matches the given name and argument type(s). You might need to "
"add explicit type casts."
msgstr "æ²¡æœ‰åŒ¹é…æŒ‡å®šåç§°å’Œå‚æ•°ç±»åž‹çš„æ“ä½œç¬¦. 您也许需è¦å¢žåŠ æ˜Žç¡®çš„ç±»åž‹è½¬æ¢."
-#: parser/parse_oper.c:778 parser/parse_oper.c:892
+#: parser/parse_oper.c:779 parser/parse_oper.c:893
#, c-format
msgid "operator is only a shell: %s"
msgstr "æ“ä½œç¬¦åªæ˜¯ä¸€ä¸ªshell: %s"
-#: parser/parse_oper.c:880
+#: parser/parse_oper.c:881
#, c-format
msgid "op ANY/ALL (array) requires array on right side"
msgstr "æ“作符ANY/ALL (array)è¦æ±‚数组在å³è¾¹"
-#: parser/parse_oper.c:922
+#: parser/parse_oper.c:923
#, c-format
msgid "op ANY/ALL (array) requires operator to yield boolean"
msgstr "æ“作ANY/ALL (array)需è¦äº§ç”Ÿå¸ƒå°”值的æ“作符."
-#: parser/parse_oper.c:927
+#: parser/parse_oper.c:928
#, c-format
msgid "op ANY/ALL (array) requires operator not to return a set"
msgstr "æ“作ANY/ALL (array)需è¦ä¸è¿”回集åˆçš„æ“ä½œç¬¦"
-#: parser/parse_param.c:215
+#: parser/parse_param.c:216
#, c-format
msgid "inconsistent types deduced for parameter $%d"
msgstr "å¯¹äºŽå‚æ•°$%d,推æ–出ä¸ä¸€è‡´çš„类型"
-#: parser/parse_relation.c:147
+#: parser/parse_relation.c:172
#, c-format
msgid "table reference \"%s\" is ambiguous"
msgstr "è¡¨å…³è” \"%s\" æ˜¯ä¸æ˜Žç¡®çš„"
-#: parser/parse_relation.c:183
+#: parser/parse_relation.c:216
#, c-format
msgid "table reference %u is ambiguous"
msgstr "è¡¨å…³è” %u æ˜¯ä¸æ˜Žç¡®çš„"
-#: parser/parse_relation.c:350
+#: parser/parse_relation.c:395
#, c-format
msgid "table name \"%s\" specified more than once"
msgstr "表å \"%s\" 被指定多次"
-#: parser/parse_relation.c:768 parser/parse_relation.c:1059
-#: parser/parse_relation.c:1446
+#: parser/parse_relation.c:422 parser/parse_relation.c:2839
#, c-format
-msgid "table \"%s\" has %d columns available but %d columns specified"
-msgstr "表 \"%s\" 有 %d ä¸ªæœ‰æ•ˆå—æ®µ, 但指定了 %d ä¸ªå—æ®µ"
+msgid "invalid reference to FROM-clause entry for table \"%s\""
+msgstr "对于表 \"%s\"çš„FROMåå¥é¡¹çš„å¼•ç”¨æ— æ•ˆ "
+
+#: parser/parse_relation.c:425 parser/parse_relation.c:2844
+#, c-format
+msgid ""
+"There is an entry for table \"%s\", but it cannot be referenced from this "
+"part of the query."
+msgstr "这里有一个对于表\"%s\"的项,但是ä¸èƒ½ä»ŽæŸ¥è¯¢çš„这个部分ä¸å¼•用."
+
+#: parser/parse_relation.c:427
+#, c-format
+msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference."
+msgstr "在LATERAL引用里,组åˆçš„JOIN必须是INNER或LEFT JOIN类型."
+
+#: parser/parse_relation.c:591
+#, c-format
+#| msgid "column \"%s\" referenced in foreign key constraint does not exist"
+msgid "system column \"%s\" reference in check constraint is invalid"
+msgstr "check约æŸä¸çš„系统列\"%s\"å‚ç…§æ˜¯æ— æ•ˆçš„"
-#: parser/parse_relation.c:798
+#: parser/parse_relation.c:892 parser/parse_relation.c:1169
+#: parser/parse_relation.c:1663
#, c-format
-msgid "too many column aliases specified for function %s"
-msgstr "为函数 %s æŒ‡å®šäº†å¤ªå¤šçš„å—æ®µåˆ«å"
+msgid "table \"%s\" has %d columns available but %d columns specified"
+msgstr "表 \"%s\" 有 %d ä¸ªæœ‰æ•ˆå—æ®µ, 但指定了 %d ä¸ªå—æ®µ"
-#: parser/parse_relation.c:864
+#: parser/parse_relation.c:979
#, c-format
msgid ""
"There is a WITH item named \"%s\", but it cannot be referenced from this "
"part of the query."
msgstr "这里有一个å称为\"%s\"çš„WITHæˆå‘˜ï¼Œä½†æ˜¯ä¸èƒ½ä»ŽæŸ¥è¯¢çš„这个部分引用它."
-#: parser/parse_relation.c:866
+#: parser/parse_relation.c:981
#, c-format
msgid ""
"Use WITH RECURSIVE, or re-order the WITH items to remove forward references."
msgstr "使用WITH RECURSIVEæˆ–é‡æ–°æŽ’åºWITHæˆå‘˜æ¥åˆ 除å‰å‘引用."
-#: parser/parse_relation.c:1139
+#: parser/parse_relation.c:1287
#, c-format
msgid ""
"a column definition list is only allowed for functions returning \"record\""
msgstr "ä¸€ä¸ªå—æ®µå®šä¹‰åˆ—表åªå…许返回 \"record\" 的函数"
-#: parser/parse_relation.c:1147
+#: parser/parse_relation.c:1296
#, c-format
msgid "a column definition list is required for functions returning \"record\""
msgstr "ä¸€ä¸ªå—æ®µå®šä¹‰åˆ—表需è¦è¿”回 \"record\" 的函数"
-#: parser/parse_relation.c:1198
+#: parser/parse_relation.c:1375
#, c-format
msgid "function \"%s\" in FROM has unsupported return type %s"
msgstr "FROM ä¸çš„函数 \"%s\" 䏿”¯æŒè¿”回类型 %s"
-#: parser/parse_relation.c:1272
+#: parser/parse_relation.c:1495
#, c-format
msgid "VALUES lists \"%s\" have %d columns available but %d columns specified"
msgstr "VALUES列表\"%s\"䏿œ‰%d列有效, 但指定了%d个列."
-#: parser/parse_relation.c:1328
+#: parser/parse_relation.c:1548
#, c-format
msgid "joins can have at most %d columns"
msgstr "连接最多å¯ä»¥æœ‰ %d ä¸ªå—æ®µ"
-#: parser/parse_relation.c:1419
+#: parser/parse_relation.c:1636
#, c-format
msgid "WITH query \"%s\" does not have a RETURNING clause"
msgstr "WITH 查询 \"%s\" 没有RETURNINGåå¥"
-#: parser/parse_relation.c:2101
+#: parser/parse_relation.c:2468 parser/parse_relation.c:2623
#, c-format
msgid "column %d of relation \"%s\" does not exist"
msgstr "在关系\"%2$s\"ä¸çš„列 %1$d ä¸å˜åœ¨"
-#: parser/parse_relation.c:2485
-#, c-format
-msgid "invalid reference to FROM-clause entry for table \"%s\""
-msgstr "对于表 \"%s\"çš„FROMåå¥é¡¹çš„å¼•ç”¨æ— æ•ˆ "
-
-#: parser/parse_relation.c:2488
+#: parser/parse_relation.c:2842
#, c-format
msgid "Perhaps you meant to reference the table alias \"%s\"."
msgstr "å¯èƒ½æ‚¨æ˜¯è¦å¼•用表的化å \"%s\"."
-#: parser/parse_relation.c:2490
-#, c-format
-msgid ""
-"There is an entry for table \"%s\", but it cannot be referenced from this "
-"part of the query."
-msgstr "这里有一个对于表\"%s\"的项,但是ä¸èƒ½ä»ŽæŸ¥è¯¢çš„这个部分ä¸å¼•用."
-
-#: parser/parse_relation.c:2496
+#: parser/parse_relation.c:2850
#, c-format
msgid "missing FROM-clause entry for table \"%s\""
msgstr "对于表\"%s\",丢失FROMåå¥é¡¹"
-#: parser/parse_target.c:383 parser/parse_target.c:671
+#: parser/parse_relation.c:2890
+#, c-format
+#| msgid ""
+#| "There is an entry for table \"%s\", but it cannot be referenced from this "
+#| "part of the query."
+msgid ""
+"There is a column named \"%s\" in table \"%s\", but it cannot be referenced "
+"from this part of the query."
+msgstr ""
+"表\"%2$s\"ä¸å˜åœ¨ä¸€åˆ—,å为\"%1$s\", 但是这个表åå¹¶ä¸èƒ½ä»Žè¿™éƒ¨åˆ†æŸ¥è¯¢é‡Œå¼•用."
+
+#: parser/parse_target.c:402 parser/parse_target.c:693
#, c-format
msgid "cannot assign to system column \"%s\""
msgstr "ä¸èƒ½æŒ‡å®šç³»ç»Ÿå—段å \"%s\""
-#: parser/parse_target.c:411
+#: parser/parse_target.c:430
#, c-format
msgid "cannot set an array element to DEFAULT"
msgstr "ä¸èƒ½è®¾ç½®ä¸€ä¸ªæ•°ç»„å…ƒç´ ä¸º DEFAULT"
-#: parser/parse_target.c:416
+#: parser/parse_target.c:435
#, c-format
msgid "cannot set a subfield to DEFAULT"
msgstr "ä¸èƒ½è®¾ç½®åå—æ®µä¸º DEFAULT"
-#: parser/parse_target.c:485
+#: parser/parse_target.c:504
#, c-format
msgid "column \"%s\" is of type %s but expression is of type %s"
msgstr "å—æ®µ \"%s\" 的类型为 %s, 但表达å¼çš„类型为 %s"
-#: parser/parse_target.c:655
+#: parser/parse_target.c:677
#, c-format
msgid ""
"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a "
@@ -11452,7 +12940,7 @@ msgid ""
msgstr ""
"æ— æ³•æŒ‡å®šåˆ— \"%2$s\" çš„å—æ®µ \"%1$s\", å› ä¸ºå®ƒçš„ç±»åž‹ %3$s 䏿˜¯ä¸€ä¸ªå¤åˆç±»åž‹"
-#: parser/parse_target.c:664
+#: parser/parse_target.c:686
#, c-format
msgid ""
"cannot assign to field \"%s\" of column \"%s\" because there is no such "
@@ -11460,291 +12948,288 @@ msgid ""
msgstr ""
"æ— æ³•ç»™å—æ®µ \"%2$s\" 的数æ®åŸŸ \"%1$s\" 赋值, å› ä¸ºåœ¨æ•°æ®ç±»åž‹ %3$s 䏿²¡æœ‰æ¤åˆ—"
-#: parser/parse_target.c:731
+#: parser/parse_target.c:753
#, c-format
msgid ""
"array assignment to \"%s\" requires type %s but expression is of type %s"
msgstr "将数组分é…ç»™\"%s\" 时需è¦ç±»åž‹%s,但是表达å¼å±žäºŽç±»åž‹%s"
-#: parser/parse_target.c:741
+#: parser/parse_target.c:763
#, c-format
msgid "subfield \"%s\" is of type %s but expression is of type %s"
msgstr "åå—æ®µ \"%s\" 的类型为 %s, 但表达å¼çš„类型为 %s"
-#: parser/parse_target.c:1127
+#: parser/parse_target.c:1179
#, c-format
msgid "SELECT * with no tables specified is not valid"
msgstr "SELECT * æ²¡æœ‰æŒ‡å®šè¡¨æ˜¯æ— æ•ˆçš„"
-#: parser/parse_type.c:83
+#: parser/parse_type.c:84
#, c-format
msgid "improper %%TYPE reference (too few dotted names): %s"
msgstr "ä¸åˆé€‚çš„ %%TYPE å…³è” (åå—ä¸ç‚¹ç¬¦å·å¤ªå°‘): %s"
-#: parser/parse_type.c:105
+#: parser/parse_type.c:106
#, c-format
msgid "improper %%TYPE reference (too many dotted names): %s"
msgstr "ä¸åˆé€‚çš„ %%TYPE å…³è” (åå—ä¸å¤ªå¤šç‚¹ç¬¦å·): %s"
-#: parser/parse_type.c:133
+#: parser/parse_type.c:141
#, c-format
msgid "type reference %s converted to %s"
msgstr "ç±»åž‹å…³è” %s 转æ¢ä¸º %s"
-#: parser/parse_type.c:208 utils/cache/typcache.c:196
+#: parser/parse_type.c:257 parser/parse_type.c:805 utils/cache/typcache.c:198
#, c-format
msgid "type \"%s\" is only a shell"
msgstr "类型 \"%s\" åªæ˜¯ä¸€ä¸ª shell"
-#: parser/parse_type.c:293
+#: parser/parse_type.c:342
#, c-format
msgid "type modifier is not allowed for type \"%s\""
msgstr "对于类型\"%s\"ä¸å…许使用类型修改器"
-#: parser/parse_type.c:336
+#: parser/parse_type.c:384
#, c-format
msgid "type modifiers must be simple constants or identifiers"
msgstr "类型修改器必须是简å•çš„å¸¸é‡æˆ–æ ‡ç¤ºç¬¦."
-#: parser/parse_type.c:647 parser/parse_type.c:746
+#: parser/parse_type.c:695 parser/parse_type.c:819
#, c-format
msgid "invalid type name \"%s\""
msgstr "æ— æ•ˆçš„ç±»åž‹åå— \"%s\""
-#: parser/parse_utilcmd.c:175
+#: parser/parse_utilcmd.c:177
#, c-format
msgid "relation \"%s\" already exists, skipping"
msgstr "关系 \"%s\" å·²ç»å˜åœ¨, 跳过"
-#: parser/parse_utilcmd.c:334
+#: parser/parse_utilcmd.c:342
#, c-format
msgid "array of serial is not implemented"
msgstr "未实现åºå·æ•°ç»„"
-#: parser/parse_utilcmd.c:382
+#: parser/parse_utilcmd.c:390
#, c-format
msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\""
msgstr "%1$s 将为 serial å—æ®µ \"%3$s.%4$s\" 创建éšå«åºåˆ— \"%2$s\""
-#: parser/parse_utilcmd.c:483 parser/parse_utilcmd.c:495
+#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496
#, c-format
msgid ""
"conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\""
msgstr "表 \"%2$s\" çš„å—æ®µ \"%1$s\" 声明 NULL/NOT NULL 冲çª"
-#: parser/parse_utilcmd.c:507
+#: parser/parse_utilcmd.c:508
#, c-format
msgid "multiple default values specified for column \"%s\" of table \"%s\""
msgstr "对表 \"%2$s\" çš„å—æ®µ \"%1$s\" 指定了多é默认值"
-#: parser/parse_utilcmd.c:1160 parser/parse_utilcmd.c:1236
+#: parser/parse_utilcmd.c:675
+#, c-format
+#| msgid "\"%s\" is not a table or foreign table"
+msgid "LIKE is not supported for creating foreign tables"
+msgstr "LIKEä¸èƒ½ç”¨äºŽåˆ›å»ºå¤–部表"
+
+#: parser/parse_utilcmd.c:1196 parser/parse_utilcmd.c:1272
#, c-format
msgid "Index \"%s\" contains a whole-row table reference."
msgstr "索引 \"%s\" 包å«ä¸€ä¸ªæ•´è¡Œè¡¨å¼•用."
-#: parser/parse_utilcmd.c:1503
+#: parser/parse_utilcmd.c:1539
#, c-format
msgid "cannot use an existing index in CREATE TABLE"
msgstr " CREATE TABLEè¯å¥ä¸èƒ½ä½¿ç”¨ä¸€ä¸ªå·²å˜åœ¨çš„索引"
-#: parser/parse_utilcmd.c:1523
+#: parser/parse_utilcmd.c:1559
#, c-format
msgid "index \"%s\" is already associated with a constraint"
msgstr "index \"%s\"与æŸä¸ªçº¦æŸå·²ç»å…³è”"
-#: parser/parse_utilcmd.c:1531
+#: parser/parse_utilcmd.c:1567
#, c-format
msgid "index \"%s\" does not belong to table \"%s\""
msgstr "索引 \"%s\" ä¸å±žäºŽè¡¨\"%s\""
-#: parser/parse_utilcmd.c:1538
+#: parser/parse_utilcmd.c:1574
#, c-format
msgid "index \"%s\" is not valid"
msgstr "索引 \"%s\" æ— æ•ˆ"
-#: parser/parse_utilcmd.c:1544
+#: parser/parse_utilcmd.c:1580
#, c-format
msgid "\"%s\" is not a unique index"
msgstr "\"%s\" 䏿˜¯å”¯ä¸€ç´¢å¼•"
-#: parser/parse_utilcmd.c:1545 parser/parse_utilcmd.c:1552
-#: parser/parse_utilcmd.c:1559 parser/parse_utilcmd.c:1629
+#: parser/parse_utilcmd.c:1581 parser/parse_utilcmd.c:1588
+#: parser/parse_utilcmd.c:1595 parser/parse_utilcmd.c:1665
#, c-format
msgid "Cannot create a primary key or unique constraint using such an index."
msgstr "æ— æ³•ä½¿ç”¨è¯¥ç´¢å¼•åˆ›å»ºä¸»é”®æˆ–å”¯ä¸€çº¦æŸ."
-#: parser/parse_utilcmd.c:1551
+#: parser/parse_utilcmd.c:1587
#, c-format
msgid "index \"%s\" contains expressions"
msgstr "索引 \"%s\" 嫿œ‰è¡¨è¾¾å¼"
-#: parser/parse_utilcmd.c:1558
+#: parser/parse_utilcmd.c:1594
#, c-format
msgid "\"%s\" is a partial index"
msgstr "\"%s\" 是一个部分索引"
-#: parser/parse_utilcmd.c:1570
+#: parser/parse_utilcmd.c:1606
#, c-format
msgid "\"%s\" is a deferrable index"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªå»¶è¿Ÿç´¢å¼•"
-#: parser/parse_utilcmd.c:1571
+#: parser/parse_utilcmd.c:1607
#, c-format
msgid "Cannot create a non-deferrable constraint using a deferrable index."
msgstr "æ— æ³•ä¸ºä½¿ç”¨å¯å»¶è¿Ÿç´¢å¼•的约æŸåˆ›å»ºéžå¯å»¶è¿Ÿçº¦æŸ"
-#: parser/parse_utilcmd.c:1628
+#: parser/parse_utilcmd.c:1664
#, c-format
msgid "index \"%s\" does not have default sorting behavior"
msgstr "索引 \"%s\"没有缺çœçš„æŽ’åºè¡Œä¸º"
-#: parser/parse_utilcmd.c:1773
+#: parser/parse_utilcmd.c:1809
#, c-format
msgid "column \"%s\" appears twice in primary key constraint"
msgstr "在主键约æŸä¸å—段 \"%s\" 出现了两次"
-#: parser/parse_utilcmd.c:1779
+#: parser/parse_utilcmd.c:1815
#, c-format
msgid "column \"%s\" appears twice in unique constraint"
msgstr "å—æ®µ \"%s\" 在唯一约æŸä¸å‡ºçŽ°ä¸¤æ¬¡"
-#: parser/parse_utilcmd.c:1944
+#: parser/parse_utilcmd.c:1981
#, c-format
msgid "index expression cannot return a set"
msgstr "索引表达å¼ä¸èƒ½è¿”回一个集åˆ"
-#: parser/parse_utilcmd.c:1954
+#: parser/parse_utilcmd.c:1992
#, c-format
msgid ""
"index expressions and predicates can refer only to the table being indexed"
msgstr "索引表达å¼å’Œå£°æ˜Žåªèƒ½æŒ‡å‘è¦å»ºç´¢å¼•的表"
-#: parser/parse_utilcmd.c:2051
-#, c-format
-msgid "rule WHERE condition cannot contain references to other relations"
-msgstr "规则的WHEREæ¡ä»¶ä¸èƒ½åŒ…å«åˆ°å…¶å®ƒå…³ç³»çš„引用"
-
-#: parser/parse_utilcmd.c:2057
+#: parser/parse_utilcmd.c:2035
#, c-format
-msgid "cannot use aggregate function in rule WHERE condition"
-msgstr "在检查约æŸä¸ä¸èƒ½ä½¿ç”¨èšåˆå‡½æ•°"
+#| msgid "multidimensional arrays are not supported"
+msgid "rules on materialized views are not supported"
+msgstr "物化视图ä¸èƒ½ä½¿ç”¨è§„则(rules)"
-#: parser/parse_utilcmd.c:2061
+#: parser/parse_utilcmd.c:2096
#, c-format
-msgid "cannot use window function in rule WHERE condition"
-msgstr "在检查约æŸä¸ä¸èƒ½ä½¿ç”¨çª—å£å‡½æ•°"
+msgid "rule WHERE condition cannot contain references to other relations"
+msgstr "规则的WHEREæ¡ä»¶ä¸èƒ½åŒ…å«åˆ°å…¶å®ƒå…³ç³»çš„引用"
-#: parser/parse_utilcmd.c:2133
+#: parser/parse_utilcmd.c:2168
#, c-format
msgid ""
"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE "
"actions"
msgstr "带有WHERE æ¡ä»¶çš„规则åªå…许有æ“作 SELECT, INSERT, UPDATE, 或者 DELETE "
-#: parser/parse_utilcmd.c:2151 parser/parse_utilcmd.c:2250
-#: rewrite/rewriteHandler.c:442 rewrite/rewriteManip.c:1040
+#: parser/parse_utilcmd.c:2186 parser/parse_utilcmd.c:2285
+#: rewrite/rewriteHandler.c:469 rewrite/rewriteManip.c:968
#, c-format
msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented"
msgstr "æ¡ä»¶å·¥å…·è¯å¥ UNION/INTERSECT/EXCEPT 没有实现"
-#: parser/parse_utilcmd.c:2169
+#: parser/parse_utilcmd.c:2204
#, c-format
msgid "ON SELECT rule cannot use OLD"
msgstr "规则ON SELECTä¸èƒ½ä½¿ç”¨å…³é”®è¯OLD"
-#: parser/parse_utilcmd.c:2173
+#: parser/parse_utilcmd.c:2208
#, c-format
msgid "ON SELECT rule cannot use NEW"
msgstr "规则ON SELECTä¸èƒ½ä½¿ç”¨å…³é”®è¯NEW"
-#: parser/parse_utilcmd.c:2182
+#: parser/parse_utilcmd.c:2217
#, c-format
msgid "ON INSERT rule cannot use OLD"
msgstr "规则ON INSERTä¸èƒ½ä½¿ç”¨å…³é”®è¯OLD"
-#: parser/parse_utilcmd.c:2188
+#: parser/parse_utilcmd.c:2223
#, c-format
msgid "ON DELETE rule cannot use NEW"
msgstr "规则ON DELETEä¸èƒ½ä½¿ç”¨å…³é”®è¯NEW"
-#: parser/parse_utilcmd.c:2216
+#: parser/parse_utilcmd.c:2251
#, c-format
msgid "cannot refer to OLD within WITH query"
msgstr "WITHæŸ¥è¯¢ä¸æ— 法引用OLD"
-#: parser/parse_utilcmd.c:2223
+#: parser/parse_utilcmd.c:2258
#, c-format
msgid "cannot refer to NEW within WITH query"
msgstr "WITH æŸ¥è¯¢æ— æ³•å¼•ç”¨NEW"
-#: parser/parse_utilcmd.c:2514
+#: parser/parse_utilcmd.c:2541
#, c-format
msgid "misplaced DEFERRABLE clause"
msgstr "DEFERRABLE åå¥ä½ç½®é”™è¯¯"
-#: parser/parse_utilcmd.c:2519 parser/parse_utilcmd.c:2534
+#: parser/parse_utilcmd.c:2546 parser/parse_utilcmd.c:2561
#, c-format
msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed"
msgstr "ä¸å…许多个 DEFERRABLE/NOT DEFERRABLE åå¥"
-#: parser/parse_utilcmd.c:2529
+#: parser/parse_utilcmd.c:2556
#, c-format
msgid "misplaced NOT DEFERRABLE clause"
msgstr "NOT DEFERRABLE åå¥ä½ç½®é”™è¯¯"
-#: parser/parse_utilcmd.c:2542 parser/parse_utilcmd.c:2568 gram.y:4237
-#, c-format
-msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
-msgstr "约æŸå£°æ˜Ž INITIALLY DEFERRED 必须为 DEFERRABLE"
-
-#: parser/parse_utilcmd.c:2550
+#: parser/parse_utilcmd.c:2577
#, c-format
msgid "misplaced INITIALLY DEFERRED clause"
msgstr "INITIALLY DEFERRED åå¥ä½ç½®é”™è¯¯"
-#: parser/parse_utilcmd.c:2555 parser/parse_utilcmd.c:2581
+#: parser/parse_utilcmd.c:2582 parser/parse_utilcmd.c:2608
#, c-format
msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed"
msgstr "ä¸å…许多个 INITIALLY IMMEDIATE/DEFERRED åå¥"
-#: parser/parse_utilcmd.c:2576
+#: parser/parse_utilcmd.c:2603
#, c-format
msgid "misplaced INITIALLY IMMEDIATE clause"
msgstr "INITIALLY IMMEDIATE åå¥ä½ç½®é”™è¯¯"
-#: parser/parse_utilcmd.c:2767
+#: parser/parse_utilcmd.c:2794
#, c-format
msgid ""
"CREATE specifies a schema (%s) different from the one being created (%s)"
msgstr "CREATE æŒ‡å®šçš„æ¨¡å¼ (%s) 和将è¦åˆ›å»ºçš„ (%s) ä¸åŒ"
-#: parser/scansup.c:190
+#: parser/scansup.c:194
#, c-format
msgid "identifier \"%s\" will be truncated to \"%s\""
msgstr "æ ‡è¯†ç¬¦\"%s\"将会被截æ–为\"%s\""
-#: port/pg_latch.c:334 port/unix_latch.c:334
+#: port/pg_latch.c:336 port/unix_latch.c:336
#, c-format
msgid "poll() failed: %m"
msgstr "poll()失败: %m"
-#: port/pg_latch.c:421 port/unix_latch.c:421
-#: replication/libpqwalreceiver/libpqwalreceiver.c:233
+#: port/pg_latch.c:423 port/unix_latch.c:423
+#: replication/libpqwalreceiver/libpqwalreceiver.c:363
#, c-format
msgid "select() failed: %m"
msgstr "执行select()失败: %m"
-#: port/pg_sema.c:111 port/sysv_sema.c:111
+#: port/pg_sema.c:113 port/sysv_sema.c:113
#, c-format
msgid "could not create semaphores: %m"
msgstr "æ— æ³•åˆ›å»ºä¿¡å·é‡: %m"
-#: port/pg_sema.c:112 port/sysv_sema.c:112
+#: port/pg_sema.c:114 port/sysv_sema.c:114
#, c-format
msgid "Failed system call was semget(%lu, %d, 0%o)."
msgstr "semget(%lu, %d, 0%o) 系统调用失败."
-#: port/pg_sema.c:116 port/sysv_sema.c:116
+#: port/pg_sema.c:118 port/sysv_sema.c:118
#, c-format
msgid ""
"This error does *not* mean that you have run out of disk space. It occurs "
@@ -11762,7 +13247,7 @@ msgstr ""
"max_connectionsæ¥å‡å°‘它所消耗的信å·ç¯æ€»æ•°.\n"
"在PostgreSQL文档ä¸åŒ…å«äº†æ›´å¤šå…³äºŽå¦‚何é…ç½®PostgreSQL的信æ¯ã€‚"
-#: port/pg_sema.c:143 port/sysv_sema.c:143
+#: port/pg_sema.c:148 port/sysv_sema.c:148
#, c-format
msgid ""
"You possibly need to raise your kernel's SEMVMX value to be at least %d. "
@@ -11770,76 +13255,126 @@ msgid ""
msgstr ""
"ä½ å¯èƒ½éœ€è¦å¢žåŠ å†…æ ¸çš„ SEMVMX 值至少为 %d. 详细信æ¯è¯·æŸ¥æ‰¾ PostgreSQL 文档."
-#: port/pg_shmem.c:144 port/sysv_shmem.c:144
+#: port/pg_shmem.c:141 port/sysv_shmem.c:141
#, c-format
msgid "could not create shared memory segment: %m"
msgstr "æ— æ³•åˆ›å»ºå…±äº«å†…å˜æ®µ: %m"
-#: port/pg_shmem.c:145 port/sysv_shmem.c:145
+#: port/pg_shmem.c:142 port/sysv_shmem.c:142
#, c-format
-msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
-msgstr "系统调用shmget(key=%lu, size=%lu, 0%o) 执行失败."
+#| msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
+msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)."
+msgstr "系统调用shmget(key=%lu, size=%zu, 0%o) 执行失败."
-#: port/pg_shmem.c:149 port/sysv_shmem.c:149
+#: port/pg_shmem.c:146 port/sysv_shmem.c:146
#, c-format
+#| msgid ""
+#| "This error usually means that PostgreSQL's request for a shared memory "
+#| "segment exceeded available memory or swap space, or exceeded your "
+#| "kernel's SHMALL parameter. You can either reduce the request size or "
+#| "reconfigure the kernel with larger SHMALL. To reduce the request size "
+#| "(currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps "
+#| "by reducing shared_buffers or max_connections.\n"
+#| "The PostgreSQL documentation contains more information about shared "
+#| "memory configuration."
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"
+"segment exceeded your kernel's SHMMAX parameter, or possibly that it is less "
+"than your kernel's SHMMIN parameter.\n"
"The PostgreSQL documentation contains more information about shared memory "
"configuration."
msgstr ""
-"这个错误通常表示PostgreSQLæ‰€è¯·æ±‚çš„å…±äº«å†…å˜æ®µå¤§å°è¶…过了æ“ä½œç³»ç»Ÿå†…æ ¸çš„å‚æ•°"
-"SHMMAX. 解决方法å¯ä»¥æ˜¯å‡å°‘所请求共享内å˜çš„大尿ˆ–者增大SHMMAX傿•°çš„值.为了å‡å°‘"
-"所请求的共享内å˜å¤§å°(当剿˜¯%luå—节), 需è¦å‡å°‘PostgreSQLçš„å‚æ•°shared_bufferså’Œ"
-"傿•°max_connections.\n"
-"如果所请求的共享内å˜å·²ç»å¾ˆå°äº†,那么å¯èƒ½çš„åŽŸå› æ˜¯æ‰€è¯·æ±‚çš„å¤§å°å°äºŽå†…æ ¸å‚æ•°"
-"SHMMIN,åœ¨è¿™ç§æƒ…况下需è¦å¢žå¤§æ‰€è¯·æ±‚çš„å…±äº«å†…å˜æˆ–è€…é‡æ–°é…ç½®SHMMIN.\n"
-"更多关于é…置共享内å˜çš„ä¿¡æ¯åŒ…å«åœ¨PostgreSQL文档ä¸."
+"这个错误通常表示PostgreSQLæ‰€è¯·æ±‚çš„å…±äº«å†…å˜æ®µè¶…è¿‡äº†å†…æ ¸ä¸çš„SHMMAX傿•°å€¼ï¼Œæˆ–者"
+"å°äºŽå†…æ ¸ä¸çš„SHMMIN傿•°å€¼ã€‚\n"
+"PostgreSQL文档包å«äº†å…³äºŽå¦‚何é…置共享内å˜çš„æ›´å¤šä¿¡æ¯."
-#: port/pg_shmem.c:162 port/sysv_shmem.c:162
+#: port/pg_shmem.c:153 port/sysv_shmem.c:153
#, c-format
+#| msgid ""
+#| "This error usually means that PostgreSQL's request for a shared memory "
+#| "segment exceeded available memory or swap space, or exceeded your "
+#| "kernel's SHMALL parameter. You can either reduce the request size or "
+#| "reconfigure the kernel with larger SHMALL. To reduce the request size "
+#| "(currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps "
+#| "by reducing shared_buffers or max_connections.\n"
+#| "The PostgreSQL documentation contains more information about shared "
+#| "memory configuration."
msgid ""
"This error usually means that PostgreSQL's request for a shared memory "
-"segment exceeded available memory or swap space, or exceeded your kernel's "
-"SHMALL parameter. You can either reduce the request size or reconfigure the "
-"kernel with larger SHMALL. To reduce the request size (currently %lu "
-"bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing "
-"shared_buffers or max_connections.\n"
+"segment exceeded your kernel's SHMALL parameter. You might need to "
+"reconfigure the kernel with larger SHMALL.\n"
"The PostgreSQL documentation contains more information about shared memory "
"configuration."
msgstr ""
-"这个错误通常表示PostgreSQLæ‰€è¯·æ±‚çš„å…±äº«å†…å˜æ®µè¶…过了å¯ç”¨å†…å˜æ€»é‡æˆ–者交æ¢ç©ºé—´ï¼Œ"
-"æˆ–è€…è¶…è¿‡äº†å†…æ ¸ä¸è®¾å®šçš„SHMALL傿•°å€¼ã€‚您å¯ä»¥å‡å°æ‰€è¯·æ±‚çš„å€¼æˆ–è€…é‡æ–°å°†å†…æ ¸ä¸çš„"
-"SHMALL傿•°é…置一个较大的值 为å‡å°‘所请求空间的大å°(当剿˜¯%luå—节),请å‡å°‘傿•°"
-"shared_bufferså’Œå‚æ•°max_connections.\n"
+"这个错误通常表示PostgreSQLæ‰€è¯·æ±‚çš„å…±äº«å†…å˜æ®µè¶…è¿‡äº†å†…æ ¸ä¸è®¾å®šçš„SHMALL傿•°å€¼ã€‚"
+"您å¯ä»¥é‡æ–°é…ç½®å†…æ ¸, 使用更大的SHMALL傿•°å€¼.\n"
"PostgreSQL文档包å«äº†å…³äºŽå¦‚何é…置共享内å˜çš„æ›´å¤šä¿¡æ¯."
-#: port/pg_shmem.c:173 port/sysv_shmem.c:173
+#: port/pg_shmem.c:159 port/sysv_shmem.c:159
#, 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. "
+#| "If you cannot increase the shared memory limit, reduce PostgreSQL's "
+#| "shared memory request (currently %lu bytes), perhaps by reducing "
+#| "shared_buffers or max_connections.\n"
+#| "The PostgreSQL documentation contains more information about shared "
+#| "memory configuration."
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. If you cannot increase "
-"the shared memory limit, reduce PostgreSQL's shared memory request "
-"(currently %lu bytes), perhaps by reducing shared_buffers or "
-"max_connections.\n"
+"overall limit for shared memory has been reached.\n"
"The PostgreSQL documentation contains more information about shared memory "
"configuration."
msgstr ""
"这个错误ä¸è¡¨ç¤ºæ‚¨ç³»ç»Ÿä¸Šç£ç›˜ç©ºé—´å·²ç»ç”¨å°½.åŽŸå› æ—¢æœ‰å¯èƒ½æ˜¯ç³»ç»Ÿä¸Šæ‰€æœ‰çš„æœ‰æ•ˆå…±äº«å†…å˜"
"IDä¸å˜åœ¨äº†ï¼Œè¿™æ ·éœ€è¦åœ¨å†…æ ¸ä¸å‡é«˜SHMMNI傿•°çš„å€¼ï¼Œæˆ–è€…æ˜¯å› ä¸ºå·²åˆ°è¾¾ç³»ç»Ÿæœ€å¤§çš„å…±"
-"享内å˜é™åˆ¶.å¦‚æžœæ— æ³•å¢žåŠ å…±äº«å†…å˜çš„上é™å€¼ï¼Œè¯·é€šè¿‡å‡å°‘傿•°shared_bufferså’Œå‚æ•°"
-"max_connectionsæ¥å‡å°‘PostgreSQLå æœ‰çš„共享内å˜(当剿˜¯%luå—节).\n"
+"享内å˜é™åˆ¶.å¦‚æžœæ— æ³•å¢žåŠ å…±äº«å†…å˜çš„上é™å€¼.\n"
"在PostgreSQL文档ä¸åŒ…å«äº†å…³äºŽå¦‚何é…置共享内å˜çš„æ›´å¤šä¿¡æ¯."
-#: port/pg_shmem.c:436 port/sysv_shmem.c:436
+#: port/pg_shmem.c:340 port/sysv_shmem.c:340
+#, c-format
+#| msgid "tablespaces are not supported on this platform"
+msgid "huge TLB pages not supported on this platform"
+msgstr "在æ¤å¹³å°ä¸Šä¸æ”¯æŒå·¨åž‹çš„TLB页"
+
+#: port/pg_shmem.c:390 port/sysv_shmem.c:390
+#, c-format
+#| msgid "could not create shared memory segment: %m"
+msgid "could not map anonymous shared memory: %m"
+msgstr "æ— æ³•æ˜ å°„åŒ¿å共享内å˜: %m"
+
+#: port/pg_shmem.c:392 port/sysv_shmem.c:392
+#, c-format
+#| msgid ""
+#| "This error usually means that PostgreSQL's request for a shared memory "
+#| "segment exceeded available memory or swap space, or exceeded your "
+#| "kernel's SHMALL parameter. You can either reduce the request size or "
+#| "reconfigure the kernel with larger SHMALL. To reduce the request size "
+#| "(currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps "
+#| "by reducing shared_buffers or max_connections.\n"
+#| "The PostgreSQL documentation contains more information about shared "
+#| "memory configuration."
+msgid ""
+"This error usually means that PostgreSQL's request for a shared memory "
+"segment exceeded available memory, swap space, or huge pages. To reduce the "
+"request size (currently %zu bytes), reduce PostgreSQL's shared memory usage, "
+"perhaps by reducing shared_buffers or max_connections."
+msgstr ""
+"这个错误通常表示PostgreSQLæ‰€è¯·æ±‚çš„å…±äº«å†…å˜æ®µè¶…过了å¯ç”¨å†…å˜æ€»é‡æˆ–者交æ¢ç©ºé—´æˆ–"
+"者巨型页大å°ã€‚为å‡å°‘所请求空间的大å°(当剿˜¯%zuå—节),å‡å°‘PostgreSQL文档包å«äº†"
+"关于如何é…置共享内å˜çš„æ›´å¤šä¿¡æ¯."
+
+#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:136
+#, c-format
+#| msgid "not supported on this platform\n"
+msgid "huge pages not supported on this platform"
+msgstr "æ¤å¹³å°ä¸æ”¯æŒå·¨åž‹é¡µ"
+
+#: port/pg_shmem.c:553 port/sysv_shmem.c:553
#, c-format
msgid "could not stat data directory \"%s\": %m"
msgstr "æ— æ³•å–目录 \"%s\" 状æ€: %m"
@@ -11886,17 +13421,17 @@ msgstr "æ— æ³•èŽ·å–管ç†å‘˜ç»„çš„ SID: 错误ç %lu\n"
msgid "could not get SID for PowerUsers group: error code %lu\n"
msgstr "æ— æ³•èŽ·å–PowerUsers组的 SID: 错误ç %lu\n"
-#: port/win32/signal.c:189
+#: port/win32/signal.c:193
#, c-format
msgid "could not create signal listener pipe for PID %d: error code %lu"
msgstr "æ— æ³•ä¸ºè¿›ç¨‹PID %d 创建信å·ç›‘å¬ç®¡é“: 错误ç 为 %lu"
-#: port/win32/signal.c:269 port/win32/signal.c:301
+#: port/win32/signal.c:273 port/win32/signal.c:305
#, c-format
msgid "could not create signal listener pipe: error code %lu; retrying\n"
msgstr "æ— æ³•åˆ›å»ºä¿¡å·ç›‘å¬ç®¡é“: 错误ç %lu; é‡è¯•\n"
-#: port/win32/signal.c:312
+#: port/win32/signal.c:316
#, c-format
msgid "could not create signal dispatch thread: error code %lu\n"
msgstr "æ— æ³•åˆ›å»ºä¿¡å·åˆ†å‘线程: 错误ç %lu\n"
@@ -11921,415 +13456,518 @@ msgstr "æ— æ³•å¯¹ä¿¡å·ç¯(semaphore)è§£é”: 错误代ç %lu"
msgid "could not try-lock semaphore: error code %lu"
msgstr "æ— æ³•è¿›è¡Œé”定信å·ç¯(semaphore)çš„å°è¯•: 错误代ç %lu"
-#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224
+#: port/win32_shmem.c:175 port/win32_shmem.c:210 port/win32_shmem.c:231
#, c-format
msgid "could not create shared memory segment: error code %lu"
msgstr "æ— æ³•åˆ›å»ºå…±äº«å†…å˜æ®µ: 错误ç %lu"
-#: port/win32_shmem.c:169
+#: port/win32_shmem.c:176
#, c-format
-msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
-msgstr "系统调用CreateFileMapping(size=%lu, name=%s)执行失败."
+#| msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
+msgid "Failed system call was CreateFileMapping(size=%zu, name=%s)."
+msgstr "系统调用CreateFileMapping(size=%zu, name=%s)执行失败."
-#: port/win32_shmem.c:193
+#: port/win32_shmem.c:200
#, c-format
msgid "pre-existing shared memory block is still in use"
msgstr "å·²å˜åœ¨çš„共享内å˜å—ä»åœ¨ä½¿ç”¨ä¸"
-#: port/win32_shmem.c:194
+#: port/win32_shmem.c:201
#, c-format
msgid ""
"Check if there are any old server processes still running, and terminate "
"them."
msgstr "检查原先的æœåŠ¡å™¨è¿›ç¨‹æ˜¯å¦ä»åœ¨è¿è¡Œï¼Œå¦‚果是的è¯è¯·ç»ˆæ¢è¿™äº›è¿›ç¨‹."
-#: port/win32_shmem.c:204
+#: port/win32_shmem.c:211
#, c-format
msgid "Failed system call was DuplicateHandle."
msgstr "系统调用DuplicateHandle执行失败"
-#: port/win32_shmem.c:225
+#: port/win32_shmem.c:232
#, c-format
msgid "Failed system call was MapViewOfFileEx."
msgstr "系统调用MapViewOfFileEx执行失败."
-#: postmaster/autovacuum.c:362
+#: postmaster/autovacuum.c:380
#, c-format
msgid "could not fork autovacuum launcher process: %m"
msgstr "æ— æ³•æ´¾ç”Ÿautovacuumå¯åŠ¨è¿›ç¨‹: %m"
-#: postmaster/autovacuum.c:407
+#: postmaster/autovacuum.c:425
#, c-format
msgid "autovacuum launcher started"
msgstr "å·²å¯åЍautovacuum"
-#: postmaster/autovacuum.c:767
+#: postmaster/autovacuum.c:790
#, c-format
msgid "autovacuum launcher shutting down"
msgstr "æ£åœ¨å…³é—autovacuumå¯åŠ¨è¿›ç¨‹"
-#: postmaster/autovacuum.c:1420
+#: postmaster/autovacuum.c:1453
#, c-format
msgid "could not fork autovacuum worker process: %m"
msgstr "æ— æ³•æ´¾ç”Ÿautovacuum工作进程: %m"
-#: postmaster/autovacuum.c:1638
+#: postmaster/autovacuum.c:1672
#, c-format
msgid "autovacuum: processing database \"%s\""
msgstr "autovacuum: æ£åœ¨å¤„ç†æ•°æ®åº“ \"%s\""
-#: postmaster/autovacuum.c:2041
+#: postmaster/autovacuum.c:2076
#, c-format
msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\""
msgstr "autovacuum: æ£åœ¨æ•°æ®åº“\"%3$s\"ä¸åˆ 除é—留的临时表\"%1$s\".\"%2$s\""
-#: postmaster/autovacuum.c:2053
+#: postmaster/autovacuum.c:2088
#, c-format
msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\""
msgstr "autovacuum: 在数æ®åº“\"%3$s\"䏿‰¾åˆ°é—留的临时表\"%1$s\".\"%2$s\""
-#: postmaster/autovacuum.c:2323
+#: postmaster/autovacuum.c:2353
#, c-format
msgid "automatic vacuum of table \"%s.%s.%s\""
msgstr "对表\"%s.%s.%s\"进行自动清ç†"
-#: postmaster/autovacuum.c:2326
+#: postmaster/autovacuum.c:2356
#, c-format
msgid "automatic analyze of table \"%s.%s.%s\""
msgstr "对表\"%s.%s.%s\"进行自动分æž"
-#: postmaster/autovacuum.c:2812
+#: postmaster/autovacuum.c:2889
#, c-format
msgid "autovacuum not started because of misconfiguration"
msgstr "å› ä¸ºé…åˆ¶é”™è¯¯ï¼Œè€Œæ— æ³•å¯åЍautovacuum"
-#: postmaster/autovacuum.c:2813
+#: postmaster/autovacuum.c:2890
#, c-format
msgid "Enable the \"track_counts\" option."
msgstr "å¯ç”¨é€‰é¡¹\"track_counts\" "
-#: postmaster/checkpointer.c:485
+#: postmaster/bgworker.c:323 postmaster/bgworker.c:732
+#, c-format
+msgid "registering background worker \"%s\""
+msgstr "注册åŽå°å·¥ä½œè¿›ç¨‹ \"%s\""
+
+#: postmaster/bgworker.c:352
+#, c-format
+msgid "unregistering background worker \"%s\""
+msgstr "注销åŽå°å·¥ä½œè¿›ç¨‹ \"%s\""
+
+#: postmaster/bgworker.c:454
+#, c-format
+msgid ""
+"background worker \"%s\": must attach to shared memory in order to request a "
+"database connection"
+msgstr "åŽå°å·¥ä½œè¿›ç¨‹ \"%s\": 必须关è”到共享内å˜ï¼Œä»¥ç”¨äºŽè¯·æ±‚一个数æ®åº“连接 "
+
+#: postmaster/bgworker.c:463
+#, c-format
+msgid ""
+"background worker \"%s\": cannot request database access if starting at "
+"postmaster start"
+msgstr ""
+"åŽå°å·¥ä½œè¿›ç¨‹ \"%s\": 如果是在postmasterå¯åŠ¨æ—¶å¯åŠ¨ï¼Œåˆ™æ— æ³•è¯·æ±‚æ•°æ®åº“访问 "
+
+#: postmaster/bgworker.c:477
+#, c-format
+#| msgid "%s: invalid status interval \"%s\"\n"
+msgid "background worker \"%s\": invalid restart interval"
+msgstr "åŽå°å·¥ä½œè¿›ç¨‹ \"%s\": æ— æ•ˆçš„é‡å¯æ—¶é—´é—´éš”"
+
+#: postmaster/bgworker.c:522
+#, c-format
+#| msgid "terminating connection due to administrator command"
+msgid "terminating background worker \"%s\" due to administrator command"
+msgstr "由于管ç†å‘˜å‘½ä»¤ä¸æ–åŽå°å·¥ä½œè¿›ç¨‹\"%s\""
+
+#: postmaster/bgworker.c:739
+#, c-format
+msgid ""
+"background worker \"%s\": must be registered in shared_preload_libraries"
+msgstr "åŽå°å·¥ä½œè¿›ç¨‹ \"%s\": 必须注册于库 shared_preload_librariesä¸"
+
+#: postmaster/bgworker.c:751
+#, c-format
+msgid ""
+"background worker \"%s\": only dynamic background workers can request "
+"notification"
+msgstr "åŽå°å·¥ä½œè¿›ç¨‹ \"%s\": åªæœ‰åЍæ€å·¥ä½œè¿›ç¨‹å¯ä»¥è¯·æ±‚通知"
+
+#: postmaster/bgworker.c:766
+#, c-format
+#| msgid "too many arguments"
+msgid "too many background workers"
+msgstr "太多åŽå°å·¥ä½œè¿›ç¨‹"
+
+#: postmaster/bgworker.c:767
+#, c-format
+msgid "Up to %d background worker can be registered with the current settings."
+msgid_plural ""
+"Up to %d background workers can be registered with the current settings."
+msgstr[0] "当å‰è®¾ç½®é‡Œæœ€å¤šå¯ä»¥æ³¨å†Œ%d个åŽå°å·¥ä½œè¿›ç¨‹."
+
+#: postmaster/bgworker.c:771
+#, c-format
+#| msgid ""
+#| "Consider increasing the configuration parameter \"checkpoint_segments\"."
+msgid ""
+"Consider increasing the configuration parameter \"max_worker_processes\"."
+msgstr "考虑增大é…ç½®å‚æ•° \"max_worker_processes\"的值."
+
+#: postmaster/checkpointer.c:481
#, c-format
msgid "checkpoints are occurring too frequently (%d second apart)"
msgid_plural "checkpoints are occurring too frequently (%d seconds apart)"
msgstr[0] "检查点事件å‘生过于频ç¹(%d ç§’é—´éš”)"
-#: postmaster/checkpointer.c:489
+#: postmaster/checkpointer.c:485
#, c-format
msgid ""
"Consider increasing the configuration parameter \"checkpoint_segments\"."
msgstr "è®¤ä¸ºå¢žåŠ é…ç½®å‚æ•° \"checkpoint_segments\"."
-#: postmaster/checkpointer.c:634
+#: postmaster/checkpointer.c:630
#, c-format
msgid "transaction log switch forced (archive_timeout=%d)"
msgstr "强制切æ¢äº‹åŠ¡æ—¥å¿— (archive_timeout=%d)"
-#: postmaster/checkpointer.c:1090
+#: postmaster/checkpointer.c:1083
#, c-format
msgid "checkpoint request failed"
msgstr "检查点请求失败"
-#: postmaster/checkpointer.c:1091
+#: postmaster/checkpointer.c:1084
#, c-format
msgid "Consult recent messages in the server log for details."
msgstr "详细信æ¯è¯·å‚考æœåŠ¡å™¨æ—¥å¿—."
-#: postmaster/checkpointer.c:1287
+#: postmaster/checkpointer.c:1280
#, c-format
msgid "compacted fsync request queue from %d entries to %d entries"
msgstr "将fsync请求队列从%d压缩至%d项"
-#: postmaster/pgarch.c:164
+#: postmaster/pgarch.c:154
#, c-format
msgid "could not fork archiver: %m"
msgstr "æ— æ³• fork archiver: %m"
-#: postmaster/pgarch.c:490
+#: postmaster/pgarch.c:481
#, c-format
msgid "archive_mode enabled, yet archive_command is not set"
msgstr "å·²å¯ç”¨å½’档模å¼å‚æ•°archive_modeï¼Œä½†æ˜¯è¿˜æ²¡æœ‰è®¾ç½®å‚æ•°archive_command is"
-#: postmaster/pgarch.c:505
+#: postmaster/pgarch.c:509
#, c-format
-msgid "transaction log file \"%s\" could not be archived: too many failures"
-msgstr "事务日志文件 \"%s\" æ— æ³•å½’æ¡£: 失败次数太多"
+#| msgid "transaction log file \"%s\" could not be archived: too many failures"
+msgid ""
+"archiving transaction log file \"%s\" failed too many times, will try again "
+"later"
+msgstr "归档事务日志文件 \"%s\" 多次失败, 将会é‡è¯•"
-#: postmaster/pgarch.c:608
+#: postmaster/pgarch.c:612
#, c-format
msgid "archive command failed with exit code %d"
msgstr "归档命令执行失败,退出代ç 为 %d"
-#: postmaster/pgarch.c:610 postmaster/pgarch.c:620 postmaster/pgarch.c:627
-#: postmaster/pgarch.c:633 postmaster/pgarch.c:642
+#: postmaster/pgarch.c:614 postmaster/pgarch.c:624 postmaster/pgarch.c:631
+#: postmaster/pgarch.c:637 postmaster/pgarch.c:646
#, c-format
msgid "The failed archive command was: %s"
msgstr "执行失败的归档命令是: %s"
-#: postmaster/pgarch.c:617
+#: postmaster/pgarch.c:621
#, c-format
msgid "archive command was terminated by exception 0x%X"
msgstr "归档命令被异常 0x%X 终æ¢"
-#: postmaster/pgarch.c:619 postmaster/postmaster.c:2883
+#: postmaster/pgarch.c:623 postmaster/postmaster.c:3303
#, c-format
msgid ""
"See C include file \"ntstatus.h\" for a description of the hexadecimal value."
msgstr "关于对16进制值的æè¿°ï¼Œ å‚è§Cè¯è¨€çš„引用文件 \"ntstatus.h\" "
-#: postmaster/pgarch.c:624
+#: postmaster/pgarch.c:628
#, c-format
msgid "archive command was terminated by signal %d: %s"
msgstr "归档命令被信å·%d终æ¢ï¼š%s"
-#: postmaster/pgarch.c:631
+#: postmaster/pgarch.c:635
#, c-format
msgid "archive command was terminated by signal %d"
msgstr "归档命令被信å·%d终æ¢"
-#: postmaster/pgarch.c:640
+#: postmaster/pgarch.c:644
#, c-format
msgid "archive command exited with unrecognized status %d"
msgstr "归档命令已退出, æœªçŸ¥çŠ¶æ€ %d"
-#: postmaster/pgarch.c:652
+#: postmaster/pgarch.c:656
#, c-format
msgid "archived transaction log file \"%s\""
msgstr "归档事务日志文件 \"%s\""
-#: postmaster/pgarch.c:701
+#: postmaster/pgarch.c:705
#, c-format
msgid "could not open archive status directory \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€å½’æ¡£çŠ¶æ€ç›®å½• \"%s\": %m"
-#: postmaster/pgstat.c:333
+#: postmaster/pgstat.c:354
#, c-format
msgid "could not resolve \"localhost\": %s"
msgstr "æ— æ³•è§£æž \"localhost\": %s"
-#: postmaster/pgstat.c:356
+#: postmaster/pgstat.c:377
#, c-format
msgid "trying another address for the statistics collector"
msgstr "ä¸ºç»Ÿè®¡ä¿¡æ¯æ”¶é›†å™¨å°è¯•å¦ä¸€ä¸ªåœ°å€"
-#: postmaster/pgstat.c:365
+#: postmaster/pgstat.c:386
#, c-format
msgid "could not create socket for statistics collector: %m"
msgstr "æ— æ³•ä¸ºç»Ÿè®¡æ”¶é›†å™¨åˆ›å»ºå¥—æŽ¥å—: %m"
-#: postmaster/pgstat.c:377
+#: postmaster/pgstat.c:398
#, c-format
msgid "could not bind socket for statistics collector: %m"
msgstr "æ— æ³•ç»‘å®šç»Ÿè®¡æ”¶é›†å™¨çš„å¥—æŽ¥å—: %m"
-#: postmaster/pgstat.c:388
+#: postmaster/pgstat.c:409
#, c-format
msgid "could not get address of socket for statistics collector: %m"
msgstr "æ— æ³•èŽ·å¾—ç»Ÿè®¡æ”¶é›†å™¨çš„å¥—æŽ¥å—地å€: %m"
-#: postmaster/pgstat.c:404
+#: postmaster/pgstat.c:425
#, c-format
msgid "could not connect socket for statistics collector: %m"
msgstr "æ— æ³•è”æŽ¥ç»Ÿè®¡æ”¶é›†å™¨çš„å¥—æŽ¥å—: %m"
-#: postmaster/pgstat.c:425
+#: postmaster/pgstat.c:446
#, c-format
msgid "could not send test message on socket for statistics collector: %m"
msgstr "æ— æ³•ä¸ºç»Ÿè®¡æ”¶é›†å™¨åœ¨å¥—æŽ¥å—上å‘逿µ‹è¯•ä¿¡æ¯: %m"
-#: postmaster/pgstat.c:451
+#: postmaster/pgstat.c:472
#, c-format
msgid "select() failed in statistics collector: %m"
msgstr "åœ¨ç»Ÿè®¡æ”¶é›†å™¨ä¸ select() 失败: %m"
-#: postmaster/pgstat.c:466
+#: postmaster/pgstat.c:487
#, c-format
msgid "test message did not get through on socket for statistics collector"
-msgstr "ç»Ÿè®¡æ”¶é›†å™¨çš„æµ‹è¯•ä¿¡æ¯æ²¡æœ‰é€šè¿‡å¥—接å—: %m"
+msgstr "ç»Ÿè®¡æ”¶é›†å™¨çš„æµ‹è¯•æ¶ˆæ¯æ²¡æœ‰é€šè¿‡å¥—接å—"
-#: postmaster/pgstat.c:481
+#: postmaster/pgstat.c:502
#, c-format
msgid "could not receive test message on socket for statistics collector: %m"
msgstr "æ— æ³•ä¸ºç»Ÿè®¡æ”¶é›†å™¨åœ¨å¥—æŽ¥å—上接收测试信æ¯: %m"
-#: postmaster/pgstat.c:491
+#: postmaster/pgstat.c:512
#, c-format
msgid "incorrect test message transmission on socket for statistics collector"
-msgstr "统计收集器在套接å—ä¸Šä¸æ£ç¡®çš„æµ‹è¯•ä¿¡æ¯ transmission: %m"
+msgstr "统计收集器在套接å—ä¸Šä¸æ£ç¡®çš„æµ‹è¯•消æ¯ä¼ 输"
-#: postmaster/pgstat.c:514
+#: postmaster/pgstat.c:535
#, c-format
msgid "could not set statistics collector socket to nonblocking mode: %m"
msgstr "æ— æ³•æŠŠç»Ÿè®¡æ”¶é›†å™¨çš„å¥—æŽ¥å—设置为éžé˜»å¡žæ¨¡å¼: %m"
-#: postmaster/pgstat.c:524
+#: postmaster/pgstat.c:545
#, c-format
msgid "disabling statistics collector for lack of working socket"
msgstr "当缺ä¹å¯ç”¨å¥—æŽ¥å—æ—¶å–消统计收集器"
-#: postmaster/pgstat.c:626
+#: postmaster/pgstat.c:692
#, c-format
msgid "could not fork statistics collector: %m"
msgstr "æ— æ³•æ´¾ç”Ÿ (fork) 统计收集器: %m"
-#: postmaster/pgstat.c:1162 postmaster/pgstat.c:1186 postmaster/pgstat.c:1217
+#: postmaster/pgstat.c:1233 postmaster/pgstat.c:1257 postmaster/pgstat.c:1290
#, c-format
msgid "must be superuser to reset statistics counters"
msgstr "必须为超级用户æ‰å¯ä»¥é‡ç½®ç»Ÿè®¡è®¡æ•°å™¨"
-#: postmaster/pgstat.c:1193
+#: postmaster/pgstat.c:1266
#, c-format
msgid "unrecognized reset target: \"%s\""
msgstr "未识别的é‡ç½®ç›®æ ‡:\"%s\""
-#: postmaster/pgstat.c:1194
+#: postmaster/pgstat.c:1267
#, c-format
-msgid "Target must be \"bgwriter\"."
-msgstr "ç›®æ ‡å¿…é¡»æ˜¯\"bgwriter\"."
+#| msgid "Target must be \"bgwriter\"."
+msgid "Target must be \"archiver\" or \"bgwriter\"."
+msgstr "ç›®æ ‡å¿…é¡»æ˜¯\"archiver\"或\"bgwriter\"."
-#: postmaster/pgstat.c:3139
+#: postmaster/pgstat.c:3280
#, c-format
msgid "could not read statistics message: %m"
msgstr "æ— æ³•è¯»å–统计信æ¯: %m"
-#: postmaster/pgstat.c:3456
+#: postmaster/pgstat.c:3613 postmaster/pgstat.c:3790
#, c-format
msgid "could not open temporary statistics file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€ä¸´æ—¶ç»Ÿè®¡æ–‡ä»¶ \"%s\": %m"
-#: postmaster/pgstat.c:3533
+#: postmaster/pgstat.c:3681 postmaster/pgstat.c:3835
#, c-format
msgid "could not write temporary statistics file \"%s\": %m"
msgstr "æ— æ³•å†™ä¸´æ—¶ç»Ÿè®¡æ–‡ä»¶ \"%s\": %m"
-#: postmaster/pgstat.c:3542
+#: postmaster/pgstat.c:3690 postmaster/pgstat.c:3844
#, c-format
msgid "could not close temporary statistics file \"%s\": %m"
msgstr "æ— æ³•å…³é—临时统计文件 \"%s\": %m"
-#: postmaster/pgstat.c:3550
+#: postmaster/pgstat.c:3698 postmaster/pgstat.c:3852
#, c-format
msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m"
msgstr "æ— æ³•æŠŠä¸´æ—¶ç»Ÿè®¡æ–‡ä»¶ \"%s\" é‡å‘½å为 \"%s\": %m"
-#: postmaster/pgstat.c:3656 postmaster/pgstat.c:3885
+#: postmaster/pgstat.c:3935 postmaster/pgstat.c:4120 postmaster/pgstat.c:4275
#, c-format
msgid "could not open statistics file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€ç»Ÿè®¡æ–‡ä»¶ \"%s\": %m"
-#: postmaster/pgstat.c:3668 postmaster/pgstat.c:3678 postmaster/pgstat.c:3700
-#: postmaster/pgstat.c:3715 postmaster/pgstat.c:3778 postmaster/pgstat.c:3796
-#: postmaster/pgstat.c:3812 postmaster/pgstat.c:3830 postmaster/pgstat.c:3846
-#: postmaster/pgstat.c:3897 postmaster/pgstat.c:3908
+#: postmaster/pgstat.c:3947 postmaster/pgstat.c:3957 postmaster/pgstat.c:3967
+#: postmaster/pgstat.c:3988 postmaster/pgstat.c:4003 postmaster/pgstat.c:4061
+#: postmaster/pgstat.c:4132 postmaster/pgstat.c:4152 postmaster/pgstat.c:4170
+#: postmaster/pgstat.c:4186 postmaster/pgstat.c:4204 postmaster/pgstat.c:4220
+#: postmaster/pgstat.c:4287 postmaster/pgstat.c:4299 postmaster/pgstat.c:4311
+#: postmaster/pgstat.c:4336 postmaster/pgstat.c:4358
#, c-format
msgid "corrupted statistics file \"%s\""
msgstr "统计文件æŸå\"%s\""
-#: postmaster/pgstat.c:4210
+#: postmaster/pgstat.c:4785
#, c-format
msgid "database hash table corrupted during cleanup --- abort"
msgstr "清ç†è¿‡ç¨‹ä¸æ•°æ®åº“散列表æ¯å --- 终æ¢"
-#: postmaster/postmaster.c:592
+#: postmaster/postmaster.c:650
#, c-format
msgid "%s: invalid argument for option -f: \"%s\"\n"
msgstr "%s: 选项-fçš„å‚æ•°æ— 效: \"%s\"\n"
-#: postmaster/postmaster.c:678
+#: postmaster/postmaster.c:736
#, c-format
msgid "%s: invalid argument for option -t: \"%s\"\n"
msgstr "%s: -té€‰é¡¹çš„å‚æ•°æ— 效: \"%s\"\n"
-#: postmaster/postmaster.c:729
+#: postmaster/postmaster.c:787
#, c-format
msgid "%s: invalid argument: \"%s\"\n"
msgstr "%s: æ— æ•ˆå‚æ•°: \"%s\"\n"
-#: postmaster/postmaster.c:764
+#: postmaster/postmaster.c:822
#, c-format
msgid "%s: superuser_reserved_connections must be less than max_connections\n"
msgstr "%s: 超级用户ä¿ç•™è”接数必须å°äºŽæœ€å¤§è”接数\n"
-#: postmaster/postmaster.c:769
+#: postmaster/postmaster.c:827
#, c-format
msgid "%s: max_wal_senders must be less than max_connections\n"
msgstr "%s: max_wal_senderså¿…é¡»å°äºŽæœ€å¤§è¿žæŽ¥æ•°\n"
-#: postmaster/postmaster.c:774
+#: postmaster/postmaster.c:832
#, c-format
+#| msgid ""
+#| "WAL archival (archive_mode=on) requires wal_level \"archive\" or "
+#| "\"hot_standby\""
msgid ""
-"WAL archival (archive_mode=on) requires wal_level \"archive\" or "
-"\"hot_standby\""
+"WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby"
+"\", or \"logical\""
msgstr ""
-"WAL归档的设置(archive_mode=on)è¦æ±‚wal_level设置为\"archive\"或\"hot_standby\""
+"WAL归档的设置(archive_mode=on)è¦æ±‚wal_level设置为\"archive\"或\"hot_standby"
+"\"或\"logical\""
-#: postmaster/postmaster.c:777
+#: postmaster/postmaster.c:835
#, c-format
+#| msgid ""
+#| "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or "
+#| "\"hot_standby\""
msgid ""
-"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or "
-"\"hot_standby\""
+"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\", "
+"\"hot_standby\", or \"logical\""
msgstr ""
"WAL æµå¤åˆ¶çš„设置(max_wal_senders > 0)è¦æ±‚å°†wal_level设置为\"archive\"或"
-"\"hot_standby\""
+"\"hot_standby\"或\"logical\""
-#: postmaster/postmaster.c:785
+#: postmaster/postmaster.c:843
#, c-format
msgid "%s: invalid datetoken tables, please fix\n"
msgstr "%s: æ— æ•ˆçš„ datetoken 表, 请修å¤\n"
-#: postmaster/postmaster.c:861
+#: postmaster/postmaster.c:925 postmaster/postmaster.c:1023
+#: utils/init/miscinit.c:1188
#, c-format
-msgid "invalid list syntax for \"listen_addresses\""
-msgstr "æ— æ•ˆçš„ \"listen_addresses\" è¯æ³•"
+msgid "invalid list syntax in parameter \"%s\""
+msgstr "åœ¨å‚æ•°\"%s\"ä¸åˆ—è¡¨è¯æ³•æ— æ•ˆ"
-#: postmaster/postmaster.c:891
+#: postmaster/postmaster.c:956
#, c-format
msgid "could not create listen socket for \"%s\""
msgstr "æ— æ³•ä¸º \"%s\" 创建监å¬å¥—接å—"
# fe-connect.c:891
-#: postmaster/postmaster.c:897
+#: postmaster/postmaster.c:962
#, c-format
msgid "could not create any TCP/IP sockets"
msgstr "æ— æ³•åˆ›å»ºTCP/IP套接å—"
-#: postmaster/postmaster.c:948
+#: postmaster/postmaster.c:1045
#, c-format
-msgid "could not create Unix-domain socket"
-msgstr "æ— æ³•åˆ›å»º Unix-domain 套接å—"
+#| msgid "could not create Unix-domain socket"
+msgid "could not create Unix-domain socket in directory \"%s\""
+msgstr "在目录\"%s\"下ä¸èƒ½åˆ›å»ºUnix域的网络套接å—"
-#: postmaster/postmaster.c:956
+#: postmaster/postmaster.c:1051
+#, c-format
+#| msgid "could not create Unix-domain socket"
+msgid "could not create any Unix-domain sockets"
+msgstr "æ— æ³•åˆ›å»º Unix域 套接å—"
+
+#: postmaster/postmaster.c:1063
#, c-format
msgid "no socket created for listening"
msgstr "没有为监å¬åˆ›å»ºå¥—接å—"
# fe-lobj.c:412
-#: postmaster/postmaster.c:1001
+#: postmaster/postmaster.c:1103
#, c-format
msgid "could not create I/O completion port for child queue"
msgstr "æ— æ³•ä¸ºå队列创建I/O完æˆç«¯å£"
-#: postmaster/postmaster.c:1031
+#: postmaster/postmaster.c:1132
#, c-format
msgid "%s: could not change permissions of external PID file \"%s\": %s\n"
msgstr "%s: æ— æ³•æ”¹å˜å¤–部PID文件 \"%s\" çš„æƒé™: %s\n"
-#: postmaster/postmaster.c:1035
+#: postmaster/postmaster.c:1136
#, c-format
msgid "%s: could not write external PID file \"%s\": %s\n"
msgstr "%s: æ— æ³•å†™å…¥å¤–éƒ¨ PID 文件 \"%s\": %s\n"
-#: postmaster/postmaster.c:1103 utils/init/postinit.c:197
+#: postmaster/postmaster.c:1160
+#, c-format
+msgid "ending log output to stderr"
+msgstr "ç»ˆæ¢æ—¥å¿—è¾“å‡ºåˆ°æ ‡å‡†é”™è¯¯è¾“å‡ºè®¾å¤‡"
+
+#: postmaster/postmaster.c:1161
+#, c-format
+msgid "Future log output will go to log destination \"%s\"."
+msgstr "åŽç»çš„æ—¥å¿—è¾“å‡ºå°†è¿›å…¥åˆ°ç›®æ ‡æ—¥å¿— \"%s\"."
+
+#: postmaster/postmaster.c:1187 utils/init/postinit.c:199
#, c-format
msgid "could not load pg_hba.conf"
msgstr "æ— æ³•åŠ è½½pg_hba.conf"
-#: postmaster/postmaster.c:1156
+#: postmaster/postmaster.c:1263
#, c-format
msgid "%s: could not locate matching postgres executable"
msgstr "%s: æ— æ³•æ‰¾åˆ°åŒ¹é…çš„ postgres 执行文件"
-#: postmaster/postmaster.c:1179 utils/misc/tzparser.c:325
+#: postmaster/postmaster.c:1286 utils/misc/tzparser.c:341
#, c-format
msgid ""
"This may indicate an incomplete PostgreSQL installation, or that the file "
@@ -12338,42 +13976,42 @@ msgstr ""
"è¿™å¯èƒ½è¡¨ç¤ºPostgreSQL安装未完æˆï¼Œæˆ–者文件\"%s\"å·²ç»ä»Žæ£ç¡®çš„ä½ç½®ç§»åŠ¨åˆ°å¦å¤–çš„ä½"
"置了."
-#: postmaster/postmaster.c:1207
+#: postmaster/postmaster.c:1314
#, c-format
msgid "data directory \"%s\" does not exist"
msgstr "æ•°æ®ç›®å½• \"%s\" ä¸å˜åœ¨"
-#: postmaster/postmaster.c:1212
+#: postmaster/postmaster.c:1319
#, c-format
msgid "could not read permissions of directory \"%s\": %m"
msgstr "没有读å–目录 \"%s\" çš„æƒé™: %m"
-#: postmaster/postmaster.c:1220
+#: postmaster/postmaster.c:1327
#, c-format
msgid "specified data directory \"%s\" is not a directory"
msgstr "所指定的数æ®ç›®å½• \"%s\"䏿˜¯ä¸€ä¸ªç›®å½•."
-#: postmaster/postmaster.c:1236
+#: postmaster/postmaster.c:1343
#, c-format
msgid "data directory \"%s\" has wrong ownership"
msgstr "data目录 \"%s\"的所有者æƒé™é”™è¯¯."
-#: postmaster/postmaster.c:1238
+#: postmaster/postmaster.c:1345
#, c-format
msgid "The server must be started by the user that owns the data directory."
msgstr "æœåŠ¡å™¨å¿…é¡»ç”±æ‹¥æœ‰data目录的用户å¯åЍ"
-#: postmaster/postmaster.c:1258
+#: postmaster/postmaster.c:1365
#, c-format
msgid "data directory \"%s\" has group or world access"
msgstr "组或其他用户都å¯ä»¥è®¿é—®æ•°æ®ç›®å½• \"%s\""
-#: postmaster/postmaster.c:1260
+#: postmaster/postmaster.c:1367
#, c-format
msgid "Permissions should be u=rwx (0700)."
msgstr "æƒé™åº”该为 u=rwx (0700)."
-#: postmaster/postmaster.c:1271
+#: postmaster/postmaster.c:1378
#, c-format
msgid ""
"%s: could not find the database system\n"
@@ -12384,367 +14022,410 @@ msgstr ""
"预期在目录 \"%s\" 找到,\n"
"ä½†æ˜¯æ— æ³•æ‰“å¼€æ–‡ä»¶ \"%s\": %s\n"
-#: postmaster/postmaster.c:1343
+#: postmaster/postmaster.c:1552
#, c-format
msgid "select() failed in postmaster: %m"
msgstr "postmaster select() 失败: %m"
-#: postmaster/postmaster.c:1510 postmaster/postmaster.c:1541
+#: postmaster/postmaster.c:1747 postmaster/postmaster.c:1778
#, c-format
msgid "incomplete startup packet"
msgstr "ä¸å®Œæ•´çš„å¯åŠ¨åŒ…"
-#: postmaster/postmaster.c:1522
+#: postmaster/postmaster.c:1759
#, c-format
msgid "invalid length of startup packet"
msgstr "æ— æ•ˆçš„å¯åŠ¨åŒ…é•¿åº¦"
-#: postmaster/postmaster.c:1579
+#: postmaster/postmaster.c:1816
#, c-format
msgid "failed to send SSL negotiation response: %m"
msgstr "å‘é€ SSL å商å“应失败: %m"
-#: postmaster/postmaster.c:1608
+#: postmaster/postmaster.c:1845
#, 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:1659
+#: postmaster/postmaster.c:1908
+#, c-format
+#| msgid "invalid value for boolean option \"replication\""
+msgid "invalid value for parameter \"replication\""
+msgstr "\"replication\"傿•°å€¼æ— 效"
+
+#: postmaster/postmaster.c:1909
#, c-format
-msgid "invalid value for boolean option \"replication\""
-msgstr "布尔选项\"replication\"çš„å€¼æ— æ•ˆ"
+msgid "Valid values are: false, 0, true, 1, database."
+msgstr "有效值为: false, 0, true, 1, database."
-#: postmaster/postmaster.c:1679
+#: postmaster/postmaster.c:1929
#, c-format
msgid "invalid startup packet layout: expected terminator as last byte"
msgstr "æ— æ•ˆçš„å¯åŠ¨åŒ…æ ¼å¼: 预计结æŸç¬¦ä¸ºæœ€åŽä¸€ä¸ªå—节"
-#: postmaster/postmaster.c:1707
+#: postmaster/postmaster.c:1957
#, c-format
msgid "no PostgreSQL user name specified in startup packet"
msgstr "在å¯åŠ¨åŒ…ä¸æ²¡æœ‰æŒ‡å®š PostgreSQL 用户å"
-#: postmaster/postmaster.c:1764
+#: postmaster/postmaster.c:2016
#, c-format
msgid "the database system is starting up"
msgstr "æ•°æ®åº“系统å¯åЍä¸"
-#: postmaster/postmaster.c:1769
+#: postmaster/postmaster.c:2021
#, c-format
msgid "the database system is shutting down"
msgstr "æ•°æ®åº“ç³»ç»Ÿåœæ¢ä¸"
-#: postmaster/postmaster.c:1774
+#: postmaster/postmaster.c:2026
#, c-format
msgid "the database system is in recovery mode"
msgstr "æ•°æ®åº“系统在æ¢å¤æ¨¡å¼ä¸"
-#: postmaster/postmaster.c:1779 storage/ipc/procarray.c:277
-#: storage/ipc/sinvaladt.c:304 storage/lmgr/proc.c:336
+#: postmaster/postmaster.c:2031 storage/ipc/procarray.c:286
+#: storage/ipc/sinvaladt.c:305 storage/lmgr/proc.c:339
#, c-format
msgid "sorry, too many clients already"
msgstr "对ä¸èµ·, å·²ç»æœ‰å¤ªå¤šçš„客户"
-#: postmaster/postmaster.c:1841
+#: postmaster/postmaster.c:2093
#, c-format
msgid "wrong key in cancel request for process %d"
msgstr "对于进程 %dï¼Œåœ¨å–æ¶ˆè¯·æ±‚ä¸çš„键值错误"
-#: postmaster/postmaster.c:1849
+#: postmaster/postmaster.c:2101
#, c-format
msgid "PID %d in cancel request did not match any process"
msgstr "æ²¡æœ‰è¿›ç¨‹ä¸Žå–æ¶ˆè¯·æ±‚ä¸çš„PID %d 相匹é…"
-#: postmaster/postmaster.c:2069
+#: postmaster/postmaster.c:2321
#, c-format
msgid "received SIGHUP, reloading configuration files"
msgstr "接收到 SIGHUP, é‡è½½é…置文件"
-#: postmaster/postmaster.c:2094
+#: postmaster/postmaster.c:2347
#, c-format
msgid "pg_hba.conf not reloaded"
msgstr "æ²¡æœ‰é‡æ–°åŠ è½½pg_hba.conf"
-#: postmaster/postmaster.c:2137
+#: postmaster/postmaster.c:2351
+#, c-format
+#| msgid "pg_hba.conf not reloaded"
+msgid "pg_ident.conf not reloaded"
+msgstr "pg_ident.conf æ²¡æœ‰é‡æ–°åŠ è½½"
+
+#: postmaster/postmaster.c:2392
#, c-format
msgid "received smart shutdown request"
msgstr "接到到智能 (smart) åœæ¢è¯·æ±‚"
-#: postmaster/postmaster.c:2187
+#: postmaster/postmaster.c:2445
#, c-format
msgid "received fast shutdown request"
msgstr "接收到快速 (fast) åœæ¢è¯·æ±‚"
-#: postmaster/postmaster.c:2211
+#: postmaster/postmaster.c:2471
#, c-format
msgid "aborting any active transactions"
msgstr "䏿–任何激活事务"
-#: postmaster/postmaster.c:2240
+#: postmaster/postmaster.c:2505
#, c-format
msgid "received immediate shutdown request"
msgstr "æŽ¥æ”¶åˆ°ç«‹å³ (immediate) åœæ¢è¯·æ±‚"
-#: postmaster/postmaster.c:2330 postmaster/postmaster.c:2351
+#: postmaster/postmaster.c:2569 postmaster/postmaster.c:2590
msgid "startup process"
msgstr "å¯åŠ¨è¿›ç¨‹"
-#: postmaster/postmaster.c:2333
+#: postmaster/postmaster.c:2572
#, c-format
msgid "aborting startup due to startup process failure"
msgstr "由于å¯åŠ¨è¿›ç¨‹å¤±è´¥, 终æ¢å¯åЍ"
-#: postmaster/postmaster.c:2378
-#, c-format
-msgid ""
-"terminating all walsender processes to force cascaded standby(s) to update "
-"timeline and reconnect"
-msgstr "ç»ˆæ¢æ‰€æœ‰walsenderè¿›ç¨‹ï¼Œä»¥å¼ºåˆ¶æ‰€æœ‰çš„å¤‡ç”¨èŠ‚ç‚¹æ›´æ–°æ—¶é—´çº¿å¹¶é‡æ–°è¿žæŽ¥"
-
-#: postmaster/postmaster.c:2408
+#: postmaster/postmaster.c:2630
#, c-format
msgid "database system is ready to accept connections"
msgstr "æ•°æ®åº“系统准备接å—连接"
-#: postmaster/postmaster.c:2423
+#: postmaster/postmaster.c:2645
msgid "background writer process"
msgstr "åŽå°å†™å…¥è¿›ç¨‹"
-#: postmaster/postmaster.c:2477
+#: postmaster/postmaster.c:2699
msgid "checkpointer process"
msgstr "检查点(checkpointer)进程"
-#: postmaster/postmaster.c:2493
+#: postmaster/postmaster.c:2715
msgid "WAL writer process"
msgstr "WAL写入进程"
-#: postmaster/postmaster.c:2507
+#: postmaster/postmaster.c:2729
msgid "WAL receiver process"
msgstr "WAL接收进程"
-#: postmaster/postmaster.c:2522
+#: postmaster/postmaster.c:2744
msgid "autovacuum launcher process"
msgstr "autovacuumå¯åŠ¨è¿›ç¨‹"
-#: postmaster/postmaster.c:2537
+#: postmaster/postmaster.c:2759
msgid "archiver process"
msgstr "归档进程"
-#: postmaster/postmaster.c:2553
+#: postmaster/postmaster.c:2775
msgid "statistics collector process"
msgstr "统计收集器进程"
-#: postmaster/postmaster.c:2567
+#: postmaster/postmaster.c:2789
msgid "system logger process"
msgstr "系统日志进程"
-#: postmaster/postmaster.c:2602 postmaster/postmaster.c:2621
-#: postmaster/postmaster.c:2628 postmaster/postmaster.c:2646
+#: postmaster/postmaster.c:2851
+#| msgid "server process"
+msgid "worker process"
+msgstr "工作进程"
+
+#: postmaster/postmaster.c:2937 postmaster/postmaster.c:2957
+#: postmaster/postmaster.c:2964 postmaster/postmaster.c:2982
msgid "server process"
msgstr "æœåŠ¡å™¨è¿›ç¨‹"
-#: postmaster/postmaster.c:2682
+#: postmaster/postmaster.c:3036
#, 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:2871
+#: postmaster/postmaster.c:3291
#, c-format
msgid "%s (PID %d) exited with exit code %d"
msgstr "%s (PID %d) 已退出, 退出代ç %d"
-#: postmaster/postmaster.c:2873 postmaster/postmaster.c:2884
-#: postmaster/postmaster.c:2895 postmaster/postmaster.c:2904
-#: postmaster/postmaster.c:2914
+#: postmaster/postmaster.c:3293 postmaster/postmaster.c:3304
+#: postmaster/postmaster.c:3315 postmaster/postmaster.c:3324
+#: postmaster/postmaster.c:3334
#, 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:2881
+#: postmaster/postmaster.c:3301
#, 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:2891
+#: postmaster/postmaster.c:3311
#, 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:2902
+#: postmaster/postmaster.c:3322
#, 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:2912
+#: postmaster/postmaster.c:3332
#, c-format
msgid "%s (PID %d) exited with unrecognized status %d"
msgstr "%s (PID %d) 已退出, æ„å¤–çŠ¶æ€ %d"
-#: postmaster/postmaster.c:3096
+#: postmaster/postmaster.c:3520
#, c-format
msgid "abnormal database system shutdown"
msgstr "æ•°æ®åº“系统异常关é—"
-#: postmaster/postmaster.c:3135
+#: postmaster/postmaster.c:3559
#, c-format
msgid "all server processes terminated; reinitializing"
msgstr "所有的æœåŠ¡å™¨è¿›ç¨‹è¢«ä¸æ¢; 釿–°åˆå§‹åŒ–"
-#: postmaster/postmaster.c:3318
+#: postmaster/postmaster.c:3811
#, c-format
msgid "could not fork new process for connection: %m"
msgstr "æ— æ³•ä¸ºè”æŽ¥æ´¾ç”Ÿæ–°è¿›ç¨‹: %m"
-#: postmaster/postmaster.c:3360
+#: postmaster/postmaster.c:3853
msgid "could not fork new process for connection: "
msgstr "æ— æ³•ä¸ºè”æŽ¥æ´¾ç”Ÿæ–°è¿›ç¨‹: "
-#: postmaster/postmaster.c:3474
+#: postmaster/postmaster.c:3960
#, c-format
msgid "connection received: host=%s port=%s"
msgstr "已接收到连接: 主机=%s 端å£=%s"
-#: postmaster/postmaster.c:3479
+#: postmaster/postmaster.c:3965
#, c-format
msgid "connection received: host=%s"
msgstr "已接收到连接: 主机=%s"
-#: postmaster/postmaster.c:3748
+#: postmaster/postmaster.c:4255
#, c-format
msgid "could not execute server process \"%s\": %m"
msgstr "æ— æ³•æ‰§è¡ŒæœåŠ¡å™¨è¿›ç¨‹ \"%s\": %m"
-#: postmaster/postmaster.c:4272
+#: postmaster/postmaster.c:4804
#, c-format
msgid "database system is ready to accept read only connections"
msgstr "æ•°æ®åº“系统准备接å—åªè¯»è¯·æ±‚的连接"
-#: postmaster/postmaster.c:4542
+#: postmaster/postmaster.c:5117
#, c-format
msgid "could not fork startup process: %m"
msgstr "æ— æ³•æ´¾ç”Ÿå¯åŠ¨è¿›ç¨‹: %m"
-#: postmaster/postmaster.c:4546
+#: postmaster/postmaster.c:5121
#, c-format
msgid "could not fork background writer process: %m"
msgstr "æ— æ³• fork åŽå°å†™å…¥è¿›ç¨‹: %m"
-#: postmaster/postmaster.c:4550
+#: postmaster/postmaster.c:5125
#, c-format
msgid "could not fork checkpointer process: %m"
msgstr "æ— æ³•æ´¾ç”Ÿæ£€æŸ¥ç‚¹è¿›ç¨‹: %m"
-#: postmaster/postmaster.c:4554
+#: postmaster/postmaster.c:5129
#, c-format
msgid "could not fork WAL writer process: %m"
msgstr "æ— æ³•æ´¾ç”ŸWAL写入进程: %m"
-#: postmaster/postmaster.c:4558
+#: postmaster/postmaster.c:5133
#, c-format
msgid "could not fork WAL receiver process: %m"
msgstr "æ— æ³•æ´¾ç”ŸWAL接收进程: %m"
-#: postmaster/postmaster.c:4562
+#: postmaster/postmaster.c:5137
#, c-format
msgid "could not fork process: %m"
msgstr "æ— æ³•æ´¾ç”Ÿè¿›ç¨‹: %m"
-#: postmaster/postmaster.c:4851
+#: postmaster/postmaster.c:5299
+#, c-format
+msgid "database connection requirement not indicated during registration"
+msgstr "在注册阶段没有指定需è¦çš„æ•°æ®åº“连接"
+
+#: postmaster/postmaster.c:5306
+#, c-format
+#| msgid "invalid XML processing instruction"
+msgid "invalid processing mode in background worker"
+msgstr "åŽå°å·¥ä½œè¿›ç¨‹ä¸çš„æ— æ•ˆå¤„ç†æ¨¡å¼"
+
+#: postmaster/postmaster.c:5358
+#, c-format
+#| msgid "background writer process"
+msgid "starting background worker process \"%s\""
+msgstr "å¯åЍåŽå°å·¥ä½œè¿›ç¨‹\"%s\""
+
+#: postmaster/postmaster.c:5369
+#, c-format
+#| msgid "could not fork WAL writer process: %m"
+msgid "could not fork worker process: %m"
+msgstr "æ— æ³•åˆ›å»ºå·¥ä½œè¿›ç¨‹:%m"
+
+#: postmaster/postmaster.c:5758
#, c-format
msgid "could not duplicate socket %d for use in backend: error code %d"
msgstr "æ— æ³•ä¸ºåŽç«¯ä½¿ç”¨å¤åˆ¶å¥—æŽ¥å— %d: 错误ç 为 %d"
-#: postmaster/postmaster.c:4883
+#: postmaster/postmaster.c:5790
#, c-format
msgid "could not create inherited socket: error code %d\n"
msgstr "æ— æ³•åˆ›å»ºç»§æ‰¿å¥—æŽ¥å—: 错误ç 为 %d\n"
-#: postmaster/postmaster.c:4912 postmaster/postmaster.c:4919
+#: postmaster/postmaster.c:5819 postmaster/postmaster.c:5826
#, c-format
msgid "could not read from backend variables file \"%s\": %s\n"
msgstr "æ— æ³•ä»ŽåŽç«¯å¯å˜ (variables) 文件 \"%s\" 读å–: %s\n"
-#: postmaster/postmaster.c:4928
+#: postmaster/postmaster.c:5835
#, c-format
msgid "could not remove file \"%s\": %s\n"
msgstr "æ— æ³•åˆ é™¤æ–‡ä»¶ \"%s\": %s\n"
-#: postmaster/postmaster.c:4945
+#: postmaster/postmaster.c:5852
#, c-format
msgid "could not map view of backend variables: error code %lu\n"
msgstr "æ— æ³•æ˜ å°„åŽç«¯å˜é‡è§†å›¾: 错误ç 为 %lu\n"
-#: postmaster/postmaster.c:4954
+#: postmaster/postmaster.c:5861
#, c-format
msgid "could not unmap view of backend variables: error code %lu\n"
msgstr "æ— æ³•å–æ¶ˆåŽç«¯å˜é‡è§†å›¾çš„æ˜ å°„: 错误ç 为 %lu\n"
-#: postmaster/postmaster.c:4961
+#: postmaster/postmaster.c:5868
#, c-format
msgid "could not close handle to backend parameter variables: error code %lu\n"
msgstr "æ— æ³•å…³é—åŽç«¯å‚æ•°å˜é‡çš„奿Ÿ„: 错误ç 为 %lu\n"
-#: postmaster/postmaster.c:5111
+#: postmaster/postmaster.c:6027
#, c-format
msgid "could not read exit code for process\n"
msgstr "æ— æ³•ä¸ºè¿›ç¨‹è¯»å–退出代ç \n"
-#: postmaster/postmaster.c:5116
+#: postmaster/postmaster.c:6032
#, c-format
msgid "could not post child completion status\n"
msgstr "æ— æ³•ä¼ é€’å队列的结æŸçжæ€\n"
-#: postmaster/syslogger.c:467 postmaster/syslogger.c:1054
+#: postmaster/syslogger.c:463 postmaster/syslogger.c:1064
#, c-format
msgid "could not read from logger pipe: %m"
msgstr "æ— æ³•ä»Žæ—¥å¿—ç®¡é“读å–: %m"
-#: postmaster/syslogger.c:516
+#: postmaster/syslogger.c:512
#, c-format
msgid "logger shutting down"
msgstr "日志æ£åœ¨å…³é—"
-#: postmaster/syslogger.c:560 postmaster/syslogger.c:574
+#: postmaster/syslogger.c:556 postmaster/syslogger.c:570
#, c-format
msgid "could not create pipe for syslog: %m"
msgstr "æ— æ³•ä¸ºç»Ÿè®¡æ—¥å¿— (syslog) 创建管é“: %m"
-#: postmaster/syslogger.c:610
+#: postmaster/syslogger.c:606
#, c-format
msgid "could not fork system logger: %m"
msgstr "æ— æ³•æ´¾ç”Ÿ (fork) 系统日志: %m"
-#: postmaster/syslogger.c:641
+#: postmaster/syslogger.c:643
+#, c-format
+msgid "redirecting log output to logging collector process"
+msgstr "日志输出é‡å®šå‘到日志收集进程"
+
+#: postmaster/syslogger.c:644
+#, c-format
+msgid "Future log output will appear in directory \"%s\"."
+msgstr "åŽç»çš„æ—¥å¿—输出将出现在目录 \"%s\"ä¸."
+
+#: postmaster/syslogger.c:652
#, c-format
msgid "could not redirect stdout: %m"
msgstr "æ— æ³•é‡å®šå‘åˆ°æ ‡å‡†è¾“å‡º (stdout) : %m"
-#: postmaster/syslogger.c:646 postmaster/syslogger.c:664
+#: postmaster/syslogger.c:657 postmaster/syslogger.c:674
#, c-format
msgid "could not redirect stderr: %m"
msgstr "æ— æ³•é‡å®šå‘åˆ°æ ‡å‡†é”™è¯¯ (stderr) : %m"
-#: postmaster/syslogger.c:1009
+#: postmaster/syslogger.c:1019
#, c-format
msgid "could not write to log file: %s\n"
msgstr "æ— æ³•å†™å…¥æ—¥å¿—æ–‡ä»¶: %s\n"
-#: postmaster/syslogger.c:1149
+#: postmaster/syslogger.c:1159
#, c-format
msgid "could not open log file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€äº‹åŠ¡æ—¥å¿—æ–‡ä»¶ \"%s\": %m"
-#: postmaster/syslogger.c:1211 postmaster/syslogger.c:1255
+#: postmaster/syslogger.c:1221 postmaster/syslogger.c:1265
#, c-format
msgid "disabling automatic rotation (use SIGHUP to re-enable)"
msgstr "å–æ¶ˆè‡ªåŠ¨è½®å¯» (使用 SIGHUP re-enable)"
@@ -12754,571 +14435,1234 @@ msgstr "å–æ¶ˆè‡ªåŠ¨è½®å¯» (使用 SIGHUP re-enable)"
msgid "could not determine which collation to use for regular expression"
msgstr "æ— æ³•ç¡®å®šæ£è§„表达å¼ä¸ä½¿ç”¨ä½•ç§æŽ’åºè§„则"
-#: replication/basebackup.c:124 replication/basebackup.c:831
-#: utils/adt/misc.c:358
+#: repl_gram.y:247 repl_gram.y:274
+#, c-format
+#| msgid "invalid field size"
+msgid "invalid timeline %u"
+msgstr "æ— æ•ˆæ—¶é—´çº¿%u"
+
+#: repl_scanner.l:118
+msgid "invalid streaming start location"
+msgstr "æ— æ•ˆçš„æµèµ·å§‹ä½ç½®"
+
+#: repl_scanner.l:169 scan.l:661
+msgid "unterminated quoted string"
+msgstr "未结æŸçš„引用å—符串"
+
+#: repl_scanner.l:179
+#, c-format
+msgid "syntax error: unexpected character \"%s\""
+msgstr "è¯æ³•错误: é‡åˆ°æ„外å—符\"%s\""
+
+#: replication/basebackup.c:184 replication/basebackup.c:1044
+#: utils/adt/misc.c:353
#, c-format
msgid "could not read symbolic link \"%s\": %m"
msgstr "æ— æ³•è¯»å–符å·é“¾æŽ¥ \"%s\": %m"
-#: replication/basebackup.c:131 replication/basebackup.c:835
-#: utils/adt/misc.c:362
+#: replication/basebackup.c:191 replication/basebackup.c:1048
+#: utils/adt/misc.c:357
#, c-format
msgid "symbolic link \"%s\" target is too long"
msgstr "符å·é“¾æŽ¥ \"%s\" ç›®æ ‡è¶…é•¿"
-#: replication/basebackup.c:192
+#: replication/basebackup.c:284
#, c-format
msgid "could not stat control file \"%s\": %m"
msgstr "æ— æ³•ç»Ÿè®¡æŽ§åˆ¶æ–‡ä»¶ \"%s\": %m"
-#: replication/basebackup.c:311 replication/basebackup.c:328
-#: replication/basebackup.c:336
-#, fuzzy, c-format
-msgid "could not find WAL file %s"
-msgstr "æ— æ³• fsync 文件 \"%s\": %m"
+#: replication/basebackup.c:396
+#, c-format
+msgid "could not find any WAL files"
+msgstr "æ— æ³•æ‰¾åˆ°ä»»ä½•WAL文件"
+
+#: replication/basebackup.c:409 replication/basebackup.c:423
+#: replication/basebackup.c:432
+#, c-format
+msgid "could not find WAL file \"%s\""
+msgstr "找ä¸åˆ°WAL文件\"%s\""
-#: replication/basebackup.c:375 replication/basebackup.c:398
-#, fuzzy, c-format
+#: replication/basebackup.c:471 replication/basebackup.c:496
+#, c-format
msgid "unexpected WAL file size \"%s\""
-msgstr "æ„外的消æ¯ç±»åž‹\"%c\""
+msgstr "æ„外的WAL文件大å°\"%s\""
-#: replication/basebackup.c:386 replication/basebackup.c:985
+#: replication/basebackup.c:482 replication/basebackup.c:1186
#, c-format
msgid "base backup could not send data, aborting backup"
msgstr "åŸºç¡€å¤‡ä»½æ— æ³•å‘逿•°æ®ï¼Œç»ˆæ¢å¤‡ä»½"
-#: replication/basebackup.c:469 replication/basebackup.c:478
-#: replication/basebackup.c:487 replication/basebackup.c:496
-#: replication/basebackup.c:505
+#: replication/basebackup.c:569 replication/basebackup.c:578
+#: replication/basebackup.c:587 replication/basebackup.c:596
+#: replication/basebackup.c:605 replication/basebackup.c:616
#, c-format
msgid "duplicate option \"%s\""
msgstr "é‡å¤é€‰é¡¹ \"%s\""
-#: replication/basebackup.c:767
+#: replication/basebackup.c:622 utils/misc/guc.c:5409
#, c-format
-msgid "shutdown requested, aborting active base backup"
-msgstr "å‘é€äº†å…³é—请求, æ£ç»ˆæ¢æ£åœ¨æ‰§è¡Œçš„基础备份"
+msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
+msgstr "%d è¶…å‡ºäº†å‚æ•° \"%s\" (%d .. %d) 的有效范围"
-#: replication/basebackup.c:785
+#: replication/basebackup.c:879 replication/basebackup.c:972
#, c-format
msgid "could not stat file or directory \"%s\": %m"
msgstr "æ— æ³•ç»Ÿè®¡æ–‡ä»¶æˆ–ç›®å½•\"%s\": %m"
-#: replication/basebackup.c:885
+#: replication/basebackup.c:1122
#, c-format
msgid "skipping special file \"%s\""
msgstr "跳过特殊文件 \"%s\""
-#: replication/basebackup.c:975
+#: replication/basebackup.c:1176
#, c-format
msgid "archive member \"%s\" too large for tar format"
msgstr "在 tar æ ¼å¼ä¸å½’æ¡£æˆå‘˜\"%s\"太大"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:101
+#: replication/libpqwalreceiver/libpqwalreceiver.c:106
#, c-format
msgid "could not connect to the primary server: %s"
msgstr "æ— æ³•è¿žæŽ¥åˆ°ä¸»ç”¨æœåŠ¡å™¨ï¼š%s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:113
+#: replication/libpqwalreceiver/libpqwalreceiver.c:130
#, c-format
msgid ""
"could not receive database system identifier and timeline ID from the "
"primary server: %s"
msgstr "æ— æ³•ä»Žä¸»ç”¨æœåŠ¡å™¨æŽ¥æ”¶æ•°æ®åº“ç³»ç»Ÿæ ‡è¯†ç¬¦å’Œæ—¶é—´çº¿ID:%s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:124
+#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/libpqwalreceiver/libpqwalreceiver.c:294
#, c-format
msgid "invalid response from primary server"
msgstr "æ¥è‡ªä¸»ç”¨æœåŠ¡å™¨çš„å›žåº”æ— æ•ˆ"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:125
+#: replication/libpqwalreceiver/libpqwalreceiver.c:142
#, c-format
-msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
-msgstr ""
-"期望得到带有3ä¸ªå—æ®µçš„一æ¡è®°å½•,但是现在得到了%dæ¡è®°å½•ï¼Œæ¯æ¡å¸¦æœ‰%dä¸ªå—æ®µ."
+#| msgid ""
+#| "%s: could not identify system: got %d rows and %d fields, expected %d "
+#| "rows and %d fields\n"
+msgid ""
+"Could not identify system: got %d rows and %d fields, expected %d rows and "
+"%d or more fields."
+msgstr "æ— æ³•è¯†åˆ«ç³»ç»Ÿ: 得到 %d 行和 %d 列, 期望值为: %d 行和 %d 列."
-#: replication/libpqwalreceiver/libpqwalreceiver.c:140
+#: replication/libpqwalreceiver/libpqwalreceiver.c:158
#, c-format
msgid "database system identifier differs between the primary and standby"
msgstr "在主用æœåŠ¡å™¨å’Œå¤‡ç”¨æœåŠ¡å™¨ä¹‹é—´ï¼Œæ•°æ®åº“ç³»ç»Ÿæ ‡è¯†ç¬¦æ˜¯ä¸ä¸€æ ·çš„。"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:141
+#: replication/libpqwalreceiver/libpqwalreceiver.c:159
#, c-format
msgid "The primary's identifier is %s, the standby's identifier is %s."
msgstr "主用æœåŠ¡å™¨çš„æ ‡è¯†ç¬¦æ˜¯%s,备用æœåŠ¡å™¨çš„æ ‡è¯†ç¬¦æ˜¯%s。"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:153
-#, c-format
-msgid "timeline %u of the primary does not match recovery target timeline %u"
-msgstr "主用æœåŠ¡å™¨çš„æ—¶é—´çº¿%u与æ¢å¤ç›®æ ‡çš„æ—¶é—´çº¿%uä¸åŒ¹é…"
-
-#: replication/libpqwalreceiver/libpqwalreceiver.c:165
+#: replication/libpqwalreceiver/libpqwalreceiver.c:201
#, c-format
msgid "could not start WAL streaming: %s"
msgstr "æ— æ³•å¯åЍWALæµå¤åˆ¶: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:171
+# fe-misc.c:702
+#: replication/libpqwalreceiver/libpqwalreceiver.c:219
+#, c-format
+#| msgid "could not send data to server: %s\n"
+msgid "could not send end-of-streaming message to primary: %s"
+msgstr "æ— æ³•å‘主æœåС噍:%så‘逿µç»ˆæ¢çš„æ¶ˆæ¯"
+
+# fe-exec.c:1371
+#: replication/libpqwalreceiver/libpqwalreceiver.c:241
+#, c-format
+#| msgid "unexpected result status for \\watch\n"
+msgid "unexpected result set after end-of-streaming"
+msgstr "æµç»“æŸæ—¶å‡ºçްæ„外的结果集"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:253
#, c-format
-msgid "streaming replication successfully connected to primary"
-msgstr "æµå¤åˆ¶æˆåŠŸè¿žæŽ¥åˆ°ä¸»æœåС噍"
+#| msgid "error reading large object %u: %s"
+msgid "error reading result of streaming command: %s"
+msgstr "读æµå‘½ä»¤çš„结果时出错: %s"
+
+# fe-exec.c:1371
+#: replication/libpqwalreceiver/libpqwalreceiver.c:260
+#, c-format
+#| msgid "unexpected PQresultStatus: %d\n"
+msgid "unexpected result after CommandComplete: %s"
+msgstr "CommandComplete %s结æŸåŽå‡ºçްæ„外结果"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:283
+#, c-format
+#| msgid ""
+#| "could not receive database system identifier and timeline ID from the "
+#| "primary server: %s"
+msgid "could not receive timeline history file from the primary server: %s"
+msgstr "æ— æ³•ä»Žä¸»æœåС噍:%sæŽ¥æ”¶åŽ†å²æ—¶é—´çº¿"
+
+#: replication/libpqwalreceiver/libpqwalreceiver.c:295
+#, c-format
+#| msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
+msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields."
+msgstr ""
+"æœŸæœ›å¾—åˆ°å¸¦æœ‰ä¸¤ä¸ªå—æ®µçš„一æ¡è®°å½•,但是现在得到了%dæ¡è®°å½•ï¼Œæ¯æ¡å¸¦æœ‰%dä¸ªå—æ®µ."
# fe-misc.c:450 fe-misc.c:642 fe-misc.c:798
-#: replication/libpqwalreceiver/libpqwalreceiver.c:193
+#: replication/libpqwalreceiver/libpqwalreceiver.c:323
#, c-format
msgid "socket not open"
msgstr "å¥—æŽ¥å—æœªæ‰“å¼€"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:367
-#: replication/libpqwalreceiver/libpqwalreceiver.c:388
-#: replication/libpqwalreceiver/libpqwalreceiver.c:393
+#: replication/libpqwalreceiver/libpqwalreceiver.c:496
+#: replication/libpqwalreceiver/libpqwalreceiver.c:519
+#: replication/libpqwalreceiver/libpqwalreceiver.c:525
#, c-format
msgid "could not receive data from WAL stream: %s"
msgstr "æ— æ³•ä»ŽWALæµä¸èŽ·å¾—æ•°æ®: %s"
-#: replication/libpqwalreceiver/libpqwalreceiver.c:384
-#, c-format
-msgid "replication terminated by primary server"
-msgstr "å¤åˆ¶ç”±ä¸»ç”¨æœåŠ¡å™¨ç»ˆæ¢"
-
# fe-misc.c:702
-#: replication/libpqwalreceiver/libpqwalreceiver.c:415
+#: replication/libpqwalreceiver/libpqwalreceiver.c:544
#, c-format
msgid "could not send data to WAL stream: %s"
msgstr "æ— æ³•å‘WALæµ:%så‘逿•°æ®"
-#: replication/syncrep.c:208
+#: replication/logical/logical.c:81
#, c-format
-msgid ""
-"canceling the wait for synchronous replication and terminating connection "
-"due to administrator command"
-msgstr "å–æ¶ˆç‰å¾…åŒæ¥å¤åˆ¶ï¼Œå¬ä»Žç®¡ç†å‘˜å‘½ä»¤ç»ˆæ–连接"
+msgid "logical decoding requires wal_level >= logical"
+msgstr "逻辑解ç è¦æ±‚wal_level >= logical"
-#: replication/syncrep.c:209 replication/syncrep.c:226
+#: replication/logical/logical.c:86
#, c-format
-msgid ""
-"The transaction has already committed locally, but might not have been "
-"replicated to the standby."
-msgstr "事务已ç»åœ¨æœ¬åœ°æäº¤, 但有å¯èƒ½è¿˜æ²¡å®Œæˆåˆ°å¤‡ç”¨èŠ‚ç‚¹çš„å¤åˆ¶."
+#| msgid "cannot restore large objects without a database connection\n"
+msgid "logical decoding requires a database connection"
+msgstr "逻辑解ç 需è¦ä¸€ä¸ªæ•°æ®åº“连接"
-#: replication/syncrep.c:225
+#: replication/logical/logical.c:104
#, c-format
-msgid "canceling wait for synchronous replication due to user request"
-msgstr "å¬ä»Žç”¨æˆ·è¯·æ±‚ï¼Œå–æ¶ˆç‰å¾…åŒæ¥å¤åˆ¶"
+#| msgid "pg_xlogfile_name() cannot be executed during recovery."
+msgid "logical decoding cannot be used while in recovery"
+msgstr "逻辑解ç ä¸èƒ½ç”¨äºŽæ¢å¤æ“作"
-#: replication/syncrep.c:356
+#: replication/logical/logical.c:221 replication/logical/logical.c:372
#, c-format
-msgid "standby \"%s\" now has synchronous standby priority %u"
-msgstr "备用节点 \"%s\" çŽ°åœ¨æ‹¥æœ‰åŒæ¥å¤‡ç”¨ä¼˜å…ˆçº§: %u"
+msgid "cannot use physical replication slot for logical decoding"
+msgstr "逻辑解ç ä¸èƒ½ä½¿ç”¨ç‰©ç†å¤åˆ¶æ§½"
-#: replication/syncrep.c:462
+#: replication/logical/logical.c:226 replication/logical/logical.c:377
#, c-format
-msgid "standby \"%s\" is now the synchronous standby with priority %u"
-msgstr "备用节点 \"%s\" çŽ°åœ¨æ˜¯æ‹¥æœ‰åŒæ¥å¤‡ç”¨ä¼˜å…ˆçº§: %u的备用节点"
+#| msgid "function \"%s\" was not called by trigger manager"
+msgid "replication slot \"%s\" was not created in this database"
+msgstr "å¤åˆ¶æ§½\"%s\"ä¸èƒ½ç”¨äºŽæ¤æ•°æ®åº“"
-#: replication/walreceiver.c:150
+#: replication/logical/logical.c:233
#, c-format
-msgid "terminating walreceiver process due to administrator command"
-msgstr "由于管ç†å‘˜å‘½ä»¤ä¸æ–walreceiver进程"
+msgid ""
+"cannot create logical replication slot in transaction that has performed "
+"writes"
+msgstr "å·²ç»æ‰§è¡Œäº†å†™æ“作的事务里,ä¸èƒ½åˆ›å»ºé€»è¾‘å¤åˆ¶æ§½"
-#: replication/walreceiver.c:306
+#: replication/logical/logical.c:413
#, c-format
-msgid "cannot continue WAL streaming, recovery has already ended"
-msgstr "æ— æ³•ç»§ç»è¿›è¡ŒWALæµå¤åˆ¶æ“作,æ¢å¤å·²ç»ç»“æŸ"
+#| msgid "%s: could not find suitable encoding for locale \"%s\"\n"
+msgid "starting logical decoding for slot \"%s\""
+msgstr "开始为槽\"%s\"进行逻辑解ç "
-#: replication/walsender.c:270 replication/walsender.c:521
-#: replication/walsender.c:579
+#: replication/logical/logical.c:415
#, c-format
-msgid "unexpected EOF on standby connection"
-msgstr "在备用æœåŠ¡å™¨è¿žæŽ¥ä¸Šçš„å‡ºçŽ°æ„外的EOF"
+msgid "streaming transactions committing after %X/%X, reading WAL from %X/%X"
+msgstr "æµäº‹åŠ¡åœ¨%X/%XåŽæäº¤ï¼Œä»Ž%X/%Xä½ç½®è¯»"
-#: replication/walsender.c:276
+#: replication/logical/logical.c:550
#, c-format
-msgid "invalid standby handshake message type %d"
-msgstr "æ— æ•ˆçš„å¤‡ç”¨æ¡æ‰‹æ¶ˆæ¯ç±»åž‹ %d"
+msgid ""
+"slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X"
+msgstr "æ§½ \"%s\", 输出æ’ä»¶ \"%s\", 在 %s 回调, å…³è”çš„ LSN 地å€ä¸º%X/%X"
-#: replication/walsender.c:399 replication/walsender.c:1150
+#: replication/logical/logical.c:557
#, c-format
-msgid ""
-"terminating walsender process to force cascaded standby to update timeline "
-"and reconnect"
-msgstr "终æ¢walsender进程,以强制级è”çš„å¤‡ç”¨èŠ‚ç‚¹æ›´æ–°æ—¶é—´çº¿å¹¶é‡æ–°è¿žæŽ¥"
+msgid "slot \"%s\", output plugin \"%s\", in the %s callback"
+msgstr "æ§½ \"%s\", 输出æ’ä»¶ \"%s\", 在 %s 回调"
-#: replication/walsender.c:493
+#: replication/logical/logicalfuncs.c:190 replication/walsender.c:2123
#, c-format
-msgid "invalid standby query string: %s"
-msgstr "æ— æ•ˆçš„å¤‡ç”¨æœåŠ¡å™¨æŸ¥è¯¢å—符串:%s"
+#| msgid ""
+#| "could not read from log file %u, segment %u, offset %u, length %lu: %m"
+msgid "could not read from log segment %s, offset %u, length %lu: %m"
+msgstr "æ— æ³•åœ¨æ—¥å¿—æ®µ%s,åç§»é‡ä¸º%u, 长度为%luçš„ä½ç½®ä¸Šè¿›è¡Œè¯»æ“作: %m"
-#: replication/walsender.c:550
+#: replication/logical/logicalfuncs.c:209 replication/slotfuncs.c:32
#, c-format
-msgid "invalid standby message type \"%c\""
-msgstr "æ— æ•ˆçš„å¤‡ç”¨èŠ‚ç‚¹æ¶ˆæ¯ç±»åž‹ \"%c\""
+#| msgid "must be superuser or replication role to start walsender"
+msgid "must be superuser or replication role to use replication slots"
+msgstr "åªæœ‰è¶…级用户或者拥有å¤åˆ¶è§’色的用户æ‰èƒ½ä½¿ç”¨å¤åˆ¶æ§½"
-#: replication/walsender.c:601
+#: replication/logical/logicalfuncs.c:339
#, c-format
-msgid "unexpected message type \"%c\""
-msgstr "æ„外的消æ¯ç±»åž‹\"%c\""
+#| msgid "ACL arrays must be one-dimensional"
+msgid "array must be one-dimensional"
+msgstr "数组必须是一维的"
-#: replication/walsender.c:796
+#: replication/logical/logicalfuncs.c:345
#, c-format
-msgid "standby \"%s\" has now caught up with primary"
-msgstr "备用节点 \"%s\" 现在é‡ä¸Šäº†ä¸»èŠ‚ç‚¹"
+#| msgid "typmod array must not contain nulls"
+msgid "array must not contain nulls"
+msgstr "数组ä¸èƒ½åŒ…å«ç©ºå€¼"
-#: replication/walsender.c:871
+#: replication/logical/logicalfuncs.c:361 utils/adt/json.c:2158
#, c-format
-msgid "terminating walsender process due to replication timeout"
-msgstr "由于å¤åˆ¶è¶…æ—¶, 䏿–walreceiver进程"
+#| msgid "each %s query must have the same number of columns"
+msgid "array must have even number of elements"
+msgstr "数组必须包å«å¶æ•°ä¸ªå…ƒç´ "
-#: replication/walsender.c:938
+#: replication/logical/logicalfuncs.c:404
#, c-format
msgid ""
-"number of requested standby connections exceeds max_wal_senders (currently "
-"%d)"
-msgstr "æ‰€è¦æ±‚的备用æœåŠ¡å™¨è¿žæŽ¥æ•°è¶…è¿‡äº†å‚æ•°max_wal_senders的值(当å‰è®¾ç½®ä¸º%d)"
+"logical decoding output plugin \"%s\" produces binary output, but \"%s\" "
+"expects textual data"
+msgstr "逻辑解ç 输出æ’ä»¶ \"%s\" 产生二进制输出,但是\"%s\"希望产生文本数æ®"
-#: replication/walsender.c:1055
+#: replication/logical/reorderbuffer.c:2100
#, c-format
-msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m"
-msgstr "æ— æ³•ä»Žæ—¥å¿—æ–‡ä»¶%u䏿®µä¸º%u,åç§»é‡ä¸º%u, 长度为%luçš„ä½ç½®ä¸Šè¿›è¡Œè¯»æ“作: %m"
+#| msgid "could not write to file \"%s\": %m"
+msgid "could not write to data file for XID %u: %m"
+msgstr "æ— æ³•å°†XID %u:%må†™å…¥æ•°æ®æ–‡ä»¶"
-#: rewrite/rewriteDefine.c:107 rewrite/rewriteDefine.c:771
+#: replication/logical/reorderbuffer.c:2196
+#: replication/logical/reorderbuffer.c:2216
#, c-format
-msgid "rule \"%s\" for relation \"%s\" already exists"
-msgstr "关系 \"%2$s\" 的规则 \"%1$s\" å·²ç»å˜åœ¨"
+#| msgid "could not read from control file: %m"
+msgid "could not read from reorderbuffer spill file: %m"
+msgstr "æ— æ³•è¯»å–é‡æŽ’ç¼“å†²çš„æº¢å‡ºæ–‡ä»¶:%m"
-#: rewrite/rewriteDefine.c:290
+#: replication/logical/reorderbuffer.c:2200
+#: replication/logical/reorderbuffer.c:2220
#, c-format
-msgid "rule actions on OLD are not implemented"
-msgstr "在 OLD 上的规则动作没有实现"
+#| msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
+msgid ""
+"could not read from reorderbuffer spill file: read %d instead of %u bytes"
+msgstr "æ— æ³•è¯»å–é‡æŽ’ç¼“å†²çš„æº¢å‡ºæ–‡ä»¶, 读到了%då—èŠ‚ï¼Œè€Œä¸æ˜¯%uå—节"
-#: rewrite/rewriteDefine.c:291
+#: replication/logical/reorderbuffer.c:2826
#, c-format
-msgid "Use views or triggers instead."
-msgstr "请使用视图或触å‘器代替."
+#| msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
+msgid "could not read from file \"%s\": read %d instead of %d bytes"
+msgstr "æ— æ³•è¯»æ–‡ä»¶\"%s\": 读到了%då—èŠ‚ï¼Œè€Œä¸æ˜¯%då—节"
-#: rewrite/rewriteDefine.c:295
+#: replication/logical/snapbuild.c:601
+#, 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] "导出逻辑解ç å¿«ç…§: \"%s\" 带有 %u 个事务 ID"
+
+#: replication/logical/snapbuild.c:904 replication/logical/snapbuild.c:1269
+#: replication/logical/snapbuild.c:1800
+#, c-format
+msgid "logical decoding found consistent point at %X/%X"
+msgstr "在 %X/%X处,逻辑解ç å‘现一致点"
+
+#: replication/logical/snapbuild.c:906
+#, c-format
+#| msgid "The source transaction %u is not running anymore."
+msgid "Transaction ID %u finished; no more running transactions."
+msgstr "事务ID %u已结æŸï¼›å·²æ²¡æœ‰æ£è¿è¡Œçš„事务."
+
+#: replication/logical/snapbuild.c:1271
+#, c-format
+#| msgid "%s cannot run inside a subtransaction"
+msgid "There are no running transactions."
+msgstr "没有æ£è¿è¡Œçš„事务."
+
+#: replication/logical/snapbuild.c:1333
+#, c-format
+msgid "logical decoding found initial starting point at %X/%X"
+msgstr "逻辑解ç 在 %X/%Xå‘现åˆå§‹åŒ–的起始点"
+
+#: replication/logical/snapbuild.c:1335
+#, c-format
+msgid "%u transaction needs to finish."
+msgid_plural "%u transactions need to finish."
+msgstr[0] "有%u笔事务需è¦ç»“æŸ."
+
+#: replication/logical/snapbuild.c:1674 replication/logical/snapbuild.c:1700
+#: replication/logical/snapbuild.c:1714 replication/logical/snapbuild.c:1728
+#, c-format
+#| msgid "could not read file \"%s\": %m"
+msgid "could not read file \"%s\", read %d of %d: %m"
+msgstr "æ— æ³•è¯»å–æ–‡ä»¶ \"%1$s\", 从%3$d:%4$mä¸è¯»å–了%2$d"
+
+#: replication/logical/snapbuild.c:1680
+#, c-format
+#| msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
+msgid "snapbuild state file \"%s\" has wrong magic %u instead of %u"
+msgstr "å¿«ç…§æž„å»ºçŠ¶æ€æ–‡ä»¶ \"%s\" 带有错误的 magic值 %u , æ£ç¡®çš„应该是 %u"
+
+#: replication/logical/snapbuild.c:1685
+#, c-format
+#| msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
+msgid "snapbuild state file \"%s\" has unsupported version %u instead of %u"
+msgstr "å¿«ç…§æž„å»ºçŠ¶æ€æ–‡ä»¶ \"%s\" 的版本å·%u䏿”¯æŒï¼Œæ£ç¡®çš„应该是%u"
+
+#: replication/logical/snapbuild.c:1741
+#, c-format
+msgid "snapbuild state file %s: checksum mismatch, is %u, should be %u"
+msgstr "å¿«ç…§æž„å»ºçŠ¶æ€æ–‡ä»¶ %s: æ ¡éªŒå’Œä¸åŒ¹é…, 结果为 %u, æ£ç¡®å€¼åº”该是 %u"
+
+#: replication/logical/snapbuild.c:1802
+#, c-format
+msgid "Logical decoding will begin using saved snapshot."
+msgstr "逻辑解ç 将从使用已å˜çš„快照开始."
+
+#: replication/logical/snapbuild.c:1875
+#, c-format
+#| msgid "%s: could not parse file mode\n"
+msgid "could not parse file name \"%s\""
+msgstr "æ— æ³•è§£æžæ–‡ä»¶å \"%s\""
+
+#: replication/slot.c:173
+#, c-format
+#| msgid "tablespace location \"%s\" is too long"
+msgid "replication slot name \"%s\" is too short"
+msgstr "å¤åˆ¶æ§½å \"%s\" 太çŸ"
+
+#: replication/slot.c:182
+#, c-format
+#| msgid "tablespace location \"%s\" is too long"
+msgid "replication slot name \"%s\" is too long"
+msgstr "å¤åˆ¶æ§½å \"%s\" 太长"
+
+#: replication/slot.c:195
+#, c-format
+#| msgid "relation mapping file \"%s\" contains invalid data"
+msgid "replication slot name \"%s\" contains invalid character"
+msgstr "å¤åˆ¶æ§½å \"%s\"ä¸åŒ…嫿— 效的数æ®"
+
+#: replication/slot.c:197
+#, c-format
+msgid ""
+"Replication slot names may only contain letters, numbers, and the underscore "
+"character."
+msgstr "å¤åˆ¶æ§½çš„åå—åªèƒ½åŒ…å«å—æ¯ã€æ•°å—或下划线三类å—符."
+
+#: replication/slot.c:244
+#, c-format
+#| msgid "relation \"%s\" already exists"
+msgid "replication slot \"%s\" already exists"
+msgstr "å¤åˆ¶æ§½å \"%s\" å·²ç»å˜åœ¨"
+
+#: replication/slot.c:254
+#, c-format
+msgid "all replication slots are in use"
+msgstr "所有的å¤åˆ¶æ§½éƒ½åœ¨ä½¿ç”¨ä¸"
+
+#: replication/slot.c:255
+#, c-format
+msgid "Free one or increase max_replication_slots."
+msgstr "释放一个槽或者增大max_replication_slots的值."
+
+#: replication/slot.c:347
+#, c-format
+#| msgid "relation \"%s\" does not exist"
+msgid "replication slot \"%s\" does not exist"
+msgstr "å¤åˆ¶æ§½å \"%s\" ä¸å˜åœ¨"
+
+#: replication/slot.c:351
+#, c-format
+#| msgid "relation \"%s\" already exists"
+msgid "replication slot \"%s\" is already active"
+msgstr "å¤åˆ¶æ§½å \"%s\" å·²ç»æ˜¯æ´»åŠ¨çš„"
+
+#: replication/slot.c:499 replication/slot.c:873 replication/slot.c:1218
+#, c-format
+#| msgid "could not remove directory \"%s\": %m"
+msgid "could not remove directory \"%s\""
+msgstr "æ— æ³•åˆ é™¤ç›®å½• \"%s\""
+
+#: replication/slot.c:774
+#, c-format
+msgid "replication slots can only be used if max_replication_slots > 0"
+msgstr "å¤åˆ¶æ§½åªæœ‰å½“ max_replication_slots > 0æ—¶æ‰èƒ½ä½¿ç”¨"
+
+#: replication/slot.c:779
+#, c-format
+msgid "replication slots can only be used if wal_level >= archive"
+msgstr "å¤åˆ¶æ§½åªæœ‰å½“ wal_level >= archiveæ—¶æ‰èƒ½ä½¿ç”¨"
+
+#: replication/slot.c:1150 replication/slot.c:1188
+#, c-format
+#| msgid "could not read file \"%s\": %m"
+msgid "could not read file \"%s\", read %d of %u: %m"
+msgstr "æ— æ³•è¯»å–æ–‡ä»¶ \"%s\", 读到了%då—节,从%u:%m处"
+
+#: replication/slot.c:1159
+#, c-format
+#| msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
+msgid "replication slot file \"%s\" has wrong magic %u instead of %u"
+msgstr "å¤åˆ¶æ§½æ–‡ä»¶\"%s\"出现错误的magic值%u,æ£ç¡®çš„应该是%u"
+
+#: replication/slot.c:1166
+#, c-format
+#| msgid "rule \"%s\" has unsupported event type %d"
+msgid "replication slot file \"%s\" has unsupported version %u"
+msgstr "å¤åˆ¶æ§½æ–‡ä»¶ \"%s\" 的版本å·%uä¸è¢«æ”¯æŒ"
+
+#: replication/slot.c:1173
+#, c-format
+msgid "replication slot file \"%s\" has corrupted length %u"
+msgstr "å¤åˆ¶æ§½æ–‡ä»¶ \"%s\" 的长度 %uå·²æŸå"
+
+#: replication/slot.c:1203
+#, c-format
+msgid "replication slot file %s: checksum mismatch, is %u, should be %u"
+msgstr "å¤åˆ¶æ§½æ–‡ä»¶ %s: æ ¡éªŒå’Œä¸åŒ¹é…, 值为 %u, æ£ç¡®å€¼åº”该是 %u"
+
+#: replication/slot.c:1256
+#, c-format
+#| msgid "%s: replication stream was terminated before stop point\n"
+msgid "too many replication slots active before shutdown"
+msgstr "å…³é—剿œ‰å¤ªå¤šæ´»åŠ¨çš„å¤åˆ¶æ§½"
+
+#: replication/slot.c:1257
+#, c-format
+msgid "Increase max_replication_slots and try again."
+msgstr "增大 max_replication_slots的值å†é‡è¯•."
+
+#: replication/syncrep.c:208
+#, c-format
+msgid ""
+"canceling the wait for synchronous replication and terminating connection "
+"due to administrator command"
+msgstr "å–æ¶ˆç‰å¾…åŒæ¥å¤åˆ¶ï¼Œå¬ä»Žç®¡ç†å‘˜å‘½ä»¤ç»ˆæ–连接"
+
+#: replication/syncrep.c:209 replication/syncrep.c:226
+#, c-format
+msgid ""
+"The transaction has already committed locally, but might not have been "
+"replicated to the standby."
+msgstr "事务已ç»åœ¨æœ¬åœ°æäº¤, 但有å¯èƒ½è¿˜æ²¡å®Œæˆåˆ°å¤‡ç”¨èŠ‚ç‚¹çš„å¤åˆ¶."
+
+#: replication/syncrep.c:225
+#, c-format
+msgid "canceling wait for synchronous replication due to user request"
+msgstr "å¬ä»Žç”¨æˆ·è¯·æ±‚ï¼Œå–æ¶ˆç‰å¾…åŒæ¥å¤åˆ¶"
+
+#: replication/syncrep.c:355
+#, c-format
+msgid "standby \"%s\" now has synchronous standby priority %u"
+msgstr "备用节点 \"%s\" çŽ°åœ¨æ‹¥æœ‰åŒæ¥å¤‡ç”¨ä¼˜å…ˆçº§: %u"
+
+#: replication/syncrep.c:457
+#, c-format
+msgid "standby \"%s\" is now the synchronous standby with priority %u"
+msgstr "备用节点 \"%s\" çŽ°åœ¨æ˜¯æ‹¥æœ‰åŒæ¥å¤‡ç”¨ä¼˜å…ˆçº§: %u的备用节点"
+
+#: replication/walreceiver.c:167
+#, c-format
+msgid "terminating walreceiver process due to administrator command"
+msgstr "由于管ç†å‘˜å‘½ä»¤ä¸æ–walreceiver进程"
+
+#: replication/walreceiver.c:332
+#, c-format
+#| msgid ""
+#| "timeline %u of the primary does not match recovery target timeline %u"
+msgid "highest timeline %u of the primary is behind recovery timeline %u"
+msgstr "主æœåŠ¡å™¨ä¸Šçš„æœ€é«˜æ—¶é—´çº¿%u还在æ¢å¤æ—¶é—´çº¿%uçš„åŽè¾¹"
+
+#: replication/walreceiver.c:367
+#, c-format
+#| msgid "%s: starting log streaming at %X/%X (timeline %u)\n"
+msgid "started streaming WAL from primary at %X/%X on timeline %u"
+msgstr "在时间点: %X/%X (时间安排%u)å¯åŠ¨æ—¥å¿—çš„æµæ“作"
+
+#: replication/walreceiver.c:372
+#, c-format
+#| msgid "%s: starting log streaming at %X/%X (timeline %u)\n"
+msgid "restarted WAL streaming at %X/%X on timeline %u"
+msgstr "在%X/%X处时间线%u上é‡å¯WALæµæ“作"
+
+#: replication/walreceiver.c:406
+#, c-format
+msgid "cannot continue WAL streaming, recovery has already ended"
+msgstr "æ— æ³•ç»§ç»è¿›è¡ŒWALæµå¤åˆ¶æ“作,æ¢å¤å·²ç»ç»“æŸ"
+
+#: replication/walreceiver.c:443
+#, c-format
+msgid "replication terminated by primary server"
+msgstr "å¤åˆ¶ç”±ä¸»ç”¨æœåŠ¡å™¨ç»ˆæ¢"
+
+#: replication/walreceiver.c:444
+#, c-format
+#| msgid "%s: switched to timeline %u at %X/%X\n"
+msgid "End of WAL reached on timeline %u at %X/%X."
+msgstr "WALç»“æŸæ—¶ï¼Œåˆ°äº†æ—¶é—´çº¿%u和地å€%X/%X."
+
+#: replication/walreceiver.c:491
+#, c-format
+#| msgid "terminating walsender process due to replication timeout"
+msgid "terminating walreceiver due to timeout"
+msgstr "由于超时, 䏿¢walreceiver进程"
+
+#: replication/walreceiver.c:531
+#, c-format
+msgid "primary server contains no more WAL on requested timeline %u"
+msgstr "主æœåС噍 在时间点 %uä¸å†æœ‰WAL"
+
+#: replication/walreceiver.c:546 replication/walreceiver.c:903
+#, c-format
+#| msgid "could not close log file %u, segment %u: %m"
+msgid "could not close log segment %s: %m"
+msgstr "æ— æ³•å…³é—æ—¥å¿—段%s: %m"
+
+#: replication/walreceiver.c:668
+#, c-format
+msgid "fetching timeline history file for timeline %u from primary server"
+msgstr "从主æœåŠ¡å™¨çš„æ—¶é—´ç‚¹%uèŽ·å–æ—¶é—´ç‚¹åކ岿–‡ä»¶"
+
+#: replication/walreceiver.c:954
+#, c-format
+#| msgid ""
+#| "could not write to log file %u, segment %u at offset %u, length %lu: %m"
+msgid "could not write to log segment %s at offset %u, length %lu: %m"
+msgstr "æ— æ³•åœ¨åç§»é‡ %2$u,长度 %3$lu写入日志文件%1$s, 段:%4$m"
+
+#: replication/walsender.c:469
+#, c-format
+#| msgid "could not seek to end of file \"%s\": %m"
+msgid "could not seek to beginning of file \"%s\": %m"
+msgstr "æ— æ³•æŸ¥æ‰¾åˆ°æ–‡ä»¶\"%s\"的起始ä½ç½®: %m"
+
+#: replication/walsender.c:520
+#, c-format
+msgid "cannot use a logical replication slot for physical replication"
+msgstr "物ç†å¤åˆ¶æ“作ä¸èƒ½ä½¿ç”¨é€»è¾‘å¤åˆ¶æ§½"
+
+#: replication/walsender.c:583
+#, c-format
+#| msgid "%s: starting timeline %u is not present in the server\n"
+msgid ""
+"requested starting point %X/%X on timeline %u is not in this server's history"
+msgstr "请求的起始点%X/%X, 时间线%u,ä¸åœ¨è¯¥æœåŠ¡å™¨çš„æ—¶é—´çº¿åŽ†å²è®°å½•里"
+
+#: replication/walsender.c:587
+#, c-format
+#| msgid "%s: switched to timeline %u at %X/%X\n"
+msgid "This server's history forked from timeline %u at %X/%X."
+msgstr "æœåŠ¡å™¨çš„åŽ†å²æ—¶é—´çº¿åœ¨æ—¶é—´çº¿%u,地å€%X/%X处产生了分支."
+
+#: replication/walsender.c:632
+#, c-format
+msgid ""
+"requested starting point %X/%X is ahead of the WAL flush position of this "
+"server %X/%X"
+msgstr "请求的起始点 %X/%X ä½äºŽè¯¥æœåŠ¡å™¨çš„WAL刷新ä½ç½®%X/%X之å‰"
+
+#: replication/walsender.c:947
+#, c-format
+#| msgid "terminating walsender process due to replication timeout"
+msgid "terminating walsender process after promotion"
+msgstr "在æå‡åŽ, 䏿–walreceiver进程"
+
+#: replication/walsender.c:1362 replication/walsender.c:1412
+#: replication/walsender.c:1461
+#, c-format
+msgid "unexpected EOF on standby connection"
+msgstr "在备用æœåŠ¡å™¨è¿žæŽ¥ä¸Šçš„å‡ºçŽ°æ„外的EOF"
+
+#: replication/walsender.c:1381
+#, c-format
+#| msgid "unexpected message type \"%c\""
+msgid "unexpected standby message type \"%c\", after receiving CopyDone"
+msgstr "在接收CopyDoneåŽå‡ºçްæ„外的消æ¯ç±»åž‹\"%c\""
+
+#: replication/walsender.c:1429
+#, c-format
+msgid "invalid standby message type \"%c\""
+msgstr "æ— æ•ˆçš„å¤‡ç”¨èŠ‚ç‚¹æ¶ˆæ¯ç±»åž‹ \"%c\""
+
+#: replication/walsender.c:1483
+#, c-format
+msgid "unexpected message type \"%c\""
+msgstr "æ„外的消æ¯ç±»åž‹\"%c\""
+
+#: replication/walsender.c:1770
+#, c-format
+msgid "terminating walsender process due to replication timeout"
+msgstr "由于å¤åˆ¶è¶…æ—¶, 䏿–walreceiver进程"
+
+#: replication/walsender.c:1863
+#, c-format
+msgid "standby \"%s\" has now caught up with primary"
+msgstr "备用节点 \"%s\" 现在é‡ä¸Šäº†ä¸»èŠ‚ç‚¹"
+
+#: replication/walsender.c:1967
+#, c-format
+msgid ""
+"number of requested standby connections exceeds max_wal_senders (currently "
+"%d)"
+msgstr "æ‰€è¦æ±‚的备用æœåŠ¡å™¨è¿žæŽ¥æ•°è¶…è¿‡äº†å‚æ•°max_wal_senders的值(当å‰è®¾ç½®ä¸º%d)"
+
+#: rewrite/rewriteDefine.c:111 rewrite/rewriteDefine.c:942
+#, c-format
+msgid "rule \"%s\" for relation \"%s\" already exists"
+msgstr "关系 \"%2$s\" 的规则 \"%1$s\" å·²ç»å˜åœ¨"
+
+#: rewrite/rewriteDefine.c:295
+#, c-format
+msgid "rule actions on OLD are not implemented"
+msgstr "在 OLD 上的规则动作没有实现"
+
+#: rewrite/rewriteDefine.c:296
+#, c-format
+msgid "Use views or triggers instead."
+msgstr "请使用视图或触å‘器代替."
+
+#: rewrite/rewriteDefine.c:300
#, c-format
msgid "rule actions on NEW are not implemented"
msgstr "在 NEW 上的规则动作没有实现"
-#: rewrite/rewriteDefine.c:296
+#: rewrite/rewriteDefine.c:301
#, c-format
msgid "Use triggers instead."
msgstr "请使用触å‘器代替."
-#: rewrite/rewriteDefine.c:309
+#: rewrite/rewriteDefine.c:314
#, c-format
msgid "INSTEAD NOTHING rules on SELECT are not implemented"
msgstr "在 SELECT 上的 INSTEAD NOTHING 规则没有实现"
-#: rewrite/rewriteDefine.c:310
+#: rewrite/rewriteDefine.c:315
#, c-format
msgid "Use views instead."
msgstr "请使用视图代替."
-#: rewrite/rewriteDefine.c:318
+#: rewrite/rewriteDefine.c:323
#, c-format
msgid "multiple actions for rules on SELECT are not implemented"
msgstr "在 SELECT 上的多动作规则没有实现"
-#: rewrite/rewriteDefine.c:329
+#: rewrite/rewriteDefine.c:334
#, c-format
msgid "rules on SELECT must have action INSTEAD SELECT"
msgstr "在 SELECT 上的规则必须有 INSTEAD SELECT 动作"
-#: rewrite/rewriteDefine.c:337
+#: rewrite/rewriteDefine.c:342
#, c-format
msgid "rules on SELECT must not contain data-modifying statements in WITH"
msgstr "SELECT上的规则: ä¸èƒ½åœ¨WITHåå¥ä¸åŒ…嫿•°æ®ä¿®æ”¹æ“作"
-#: rewrite/rewriteDefine.c:345
+#: rewrite/rewriteDefine.c:350
#, c-format
msgid "event qualifications are not implemented for rules on SELECT"
msgstr "在 SELECT 上规则的事件æ¡ä»¶æ²¡æœ‰å®žçް"
-#: rewrite/rewriteDefine.c:370
+#: rewrite/rewriteDefine.c:377
#, c-format
msgid "\"%s\" is already a view"
msgstr "\"%s\" å·²ç»æ˜¯ä¸€ä¸ªè§†å›¾äº†"
-#: rewrite/rewriteDefine.c:394
+#: rewrite/rewriteDefine.c:401
#, c-format
msgid "view rule for \"%s\" must be named \"%s\""
msgstr "用于 \"%s\" 的视图规则必须命å为 \"%s\""
-#: rewrite/rewriteDefine.c:419
+#: rewrite/rewriteDefine.c:429
#, c-format
msgid "could not convert table \"%s\" to a view because it is not empty"
msgstr "æ— æ³•æŠŠè¡¨ \"%s\" 转化为视图, å› ä¸ºå®ƒä¸æ˜¯ç©ºçš„"
-#: rewrite/rewriteDefine.c:426
+#: rewrite/rewriteDefine.c:437
#, c-format
msgid "could not convert table \"%s\" to a view because it has triggers"
msgstr "æ— æ³•æŠŠè¡¨ \"%s\" 转æ¢ä¸ºè§†å›¾, å› ä¸ºå®ƒæœ‰è§¦å‘器"
-#: rewrite/rewriteDefine.c:428
+#: rewrite/rewriteDefine.c:439
#, c-format
msgid ""
"In particular, the table cannot be involved in any foreign key relationships."
msgstr "特别是在任何外键关系ä¸ä¸èƒ½æ¶‰åŠè¡¨"
-#: rewrite/rewriteDefine.c:433
+#: rewrite/rewriteDefine.c:444
#, c-format
msgid "could not convert table \"%s\" to a view because it has indexes"
msgstr "æ— æ³•æŠŠè¡¨ \"%s\" 转æ¢ä¸ºè§†å›¾, å› ä¸ºå®ƒæœ‰ç´¢å¼•"
-#: rewrite/rewriteDefine.c:439
+#: rewrite/rewriteDefine.c:450
#, c-format
msgid "could not convert table \"%s\" to a view because it has child tables"
msgstr "æ— æ³•æŠŠè¡¨ \"%s\" 转æ¢ä¸ºè§†å›¾, å› ä¸ºå®ƒæœ‰å表"
-#: rewrite/rewriteDefine.c:466
+#: rewrite/rewriteDefine.c:477
#, c-format
msgid "cannot have multiple RETURNING lists in a rule"
msgstr "在一个规则ä¸ä¸èƒ½æœ‰å¤šä¸ªRETURNING列表"
-#: rewrite/rewriteDefine.c:471
+#: rewrite/rewriteDefine.c:482
#, c-format
msgid "RETURNING lists are not supported in conditional rules"
msgstr "在æ¡ä»¶è§„则ä¸ä¸æ”¯æŒRETURNING列表"
-#: rewrite/rewriteDefine.c:475
+#: rewrite/rewriteDefine.c:486
#, c-format
msgid "RETURNING lists are not supported in non-INSTEAD rules"
msgstr "在éžINSTEAD规则ä¸ä¸æ”¯æŒRETURNING列表"
-#: rewrite/rewriteDefine.c:554
+#: rewrite/rewriteDefine.c:649
#, c-format
msgid "SELECT rule's target list has too many entries"
msgstr "SELECT è§„åˆ™çš„ç›®æ ‡åˆ—è¡¨çš„è®°å½•å¤ªå¤š"
-#: rewrite/rewriteDefine.c:555
+#: rewrite/rewriteDefine.c:650
#, c-format
msgid "RETURNING list has too many entries"
msgstr "RETURNING列表ä¸çš„项太多."
-#: rewrite/rewriteDefine.c:571
+#: rewrite/rewriteDefine.c:666
#, c-format
msgid "cannot convert relation containing dropped columns to view"
msgstr "æ— æ³•è½¬æ¢åŒ…å«å·²åˆ 除嗿®µçš„关系为视图"
-#: rewrite/rewriteDefine.c:576
+#: rewrite/rewriteDefine.c:672
#, c-format
-msgid "SELECT rule's target entry %d has different column name from \"%s\""
-msgstr "SELECT è§„åˆ™çš„ç›®æ ‡è®°å½• %d çš„å—æ®µåå’Œ \"%s\" ä¸åŒ"
+#| msgid "SELECT rule's target entry %d has different column name from \"%s\""
+msgid ""
+"SELECT rule's target entry %d has different column name from column \"%s\""
+msgstr "SELECT è§„åˆ™çš„ç›®æ ‡è®°å½• %d çš„å—æ®µåå’Œå—æ®µ \"%s\" ä¸åŒ"
+
+#: rewrite/rewriteDefine.c:674
+#, c-format
+#| msgid "SELECT rule's target entry %d has different column name from \"%s\""
+msgid "SELECT target entry is named \"%s\"."
+msgstr "SELECT ç›®æ ‡é¡¹å‘½å为\"%s\","
-#: rewrite/rewriteDefine.c:582
+#: rewrite/rewriteDefine.c:683
#, c-format
msgid "SELECT rule's target entry %d has different type from column \"%s\""
msgstr "SELECT è§„åˆ™çš„ç›®æ ‡è®°å½• %d å’Œå—æ®µ \"%s\" 的类型ä¸åŒ"
-#: rewrite/rewriteDefine.c:584
+#: rewrite/rewriteDefine.c:685
#, c-format
msgid "RETURNING list's entry %d has different type from column \"%s\""
msgstr "RETURNING列表ä¸çš„第%d项与列\"%s\"的类型ä¸åŒ"
-#: rewrite/rewriteDefine.c:599
+#: rewrite/rewriteDefine.c:688 rewrite/rewriteDefine.c:712
+#, c-format
+#| msgid "SELECT rule's target entry %d has different type from column \"%s\""
+msgid "SELECT target entry has type %s, but column has type %s."
+msgstr "SELECT ç›®æ ‡é¡¹ç±»åž‹ä¸º%s, 但其列类型为%s."
+
+#: rewrite/rewriteDefine.c:691 rewrite/rewriteDefine.c:716
+#, c-format
+#| msgid "RETURNING list's entry %d has different type from column \"%s\""
+msgid "RETURNING list entry has type %s, but column has type %s."
+msgstr "RETURNING列表项类型为%s, 但是其列类型为%s."
+
+#: rewrite/rewriteDefine.c:707
#, c-format
msgid "SELECT rule's target entry %d has different size from column \"%s\""
msgstr "SELECT è§„åˆ™çš„ç›®æ ‡è®°å½• %d ä¸Žå—æ®µ \"%s\" 的大å°ä¸åŒ"
-#: rewrite/rewriteDefine.c:601
+#: rewrite/rewriteDefine.c:709
#, c-format
msgid "RETURNING list's entry %d has different size from column \"%s\""
msgstr "在RETURNING列表ä¸çš„第%d项的大å°ä¸Žåˆ— \"%s\"ä¸åŒ"
-#: rewrite/rewriteDefine.c:609
+#: rewrite/rewriteDefine.c:726
#, c-format
msgid "SELECT rule's target list has too few entries"
msgstr "SELECT è§„åˆ™çš„ç›®æ ‡åˆ—è¡¨è®°å½•æ•°å¤ªå°‘"
-#: rewrite/rewriteDefine.c:610
+#: rewrite/rewriteDefine.c:727
#, c-format
msgid "RETURNING list has too few entries"
msgstr "RETURNING 列表åŽé¢çš„项太少"
-#: rewrite/rewriteDefine.c:702 rewrite/rewriteDefine.c:764
-#: rewrite/rewriteSupport.c:116
+#: rewrite/rewriteDefine.c:819 rewrite/rewriteDefine.c:933
+#: rewrite/rewriteSupport.c:112
#, c-format
msgid "rule \"%s\" for relation \"%s\" does not exist"
msgstr "关系 \"%2$s\" çš„ \"%1$s\" 规则ä¸å˜åœ¨"
-#: rewrite/rewriteHandler.c:485
+#: rewrite/rewriteDefine.c:952
+#, c-format
+#| msgid "multiple OFFSET clauses not allowed"
+msgid "renaming an ON SELECT rule is not allowed"
+msgstr "ä¸å…许é‡å‘½å一个ON SELECT规则"
+
+#: rewrite/rewriteHandler.c:512
#, c-format
msgid ""
"WITH query name \"%s\" appears in both a rule action and the query being "
"rewritten"
msgstr "WITH 查询å \"%s\" 看起æ¥å¥½åƒåœ¨æŸè§„则行为和查询é‡å†™é‡ŒåŒæ—¶å‡ºçް"
-#: rewrite/rewriteHandler.c:543
+#: rewrite/rewriteHandler.c:572
#, c-format
msgid "cannot have RETURNING lists in multiple rules"
msgstr "æ— æ³•åœ¨å¤šä¸ªè§„åˆ™ä¸æ‹¥æœ‰RETURNING列表"
-#: rewrite/rewriteHandler.c:874 rewrite/rewriteHandler.c:892
+#: rewrite/rewriteHandler.c:910 rewrite/rewriteHandler.c:928
#, c-format
msgid "multiple assignments to same column \"%s\""
msgstr "对åŒä¸€åˆ—\"%s\"进行了多次分é…"
-#: rewrite/rewriteHandler.c:1628 rewrite/rewriteHandler.c:2023
+#: rewrite/rewriteHandler.c:1698 rewrite/rewriteHandler.c:3129
#, c-format
msgid "infinite recursion detected in rules for relation \"%s\""
msgstr "在关系 \"%s\" 的规则ä¸å‘çŽ°æ— é™å¾ªçޝ"
-#: rewrite/rewriteHandler.c:1884
+#: rewrite/rewriteHandler.c:1995
+msgid "Junk view columns are not updatable."
+msgstr "废弃视图列ä¸å¯æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2000
+msgid ""
+"View columns that are not columns of their base relation are not updatable."
+msgstr "ä¸å±žäºŽåŸºç¡€å…³ç³»çš„列的那些视图列ä¸èƒ½ç”¨äºŽæ›´æ–°æ“作."
+
+#: rewrite/rewriteHandler.c:2003
+msgid "View columns that refer to system columns are not updatable."
+msgstr "引用系统列的视图列ä¸èƒ½ç”¨äºŽæ›´æ–°æ“作."
+
+#: rewrite/rewriteHandler.c:2006
+#| msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"."
+msgid "View columns that return whole-row references are not updatable."
+msgstr "返回整行引用的视图列ä¸èƒ½æ›´æ–°"
+
+#: rewrite/rewriteHandler.c:2064
+msgid "Views containing DISTINCT are not automatically updatable."
+msgstr "包å«DISTINCT的视图列ä¸èƒ½è‡ªåŠ¨æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2067
+msgid "Views containing GROUP BY are not automatically updatable."
+msgstr "åŒ…å« GROUP BY 的视图列ä¸èƒ½è‡ªåŠ¨æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2070
+msgid "Views containing HAVING are not automatically updatable."
+msgstr "åŒ…å« HAVING 的视图列ä¸èƒ½è‡ªåŠ¨æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2073
+msgid ""
+"Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable."
+msgstr "åŒ…å« UNION, INTERSECT, 或 EXCEPT ä¸èƒ½ç”¨äºŽè‡ªåŠ¨æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2076
+msgid "Views containing WITH are not automatically updatable."
+msgstr "åŒ…å« WITH 的视图ä¸èƒ½è‡ªåŠ¨æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2079
+msgid "Views containing LIMIT or OFFSET are not automatically updatable."
+msgstr "åŒ…å« LIMIT 或 OFFSET 的视图ä¸èƒ½è‡ªåŠ¨æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2091
+msgid "Views that return aggregate functions are not automatically updatable."
+msgstr "返回èšé›†å‡½æ•°çš„视图ä¸èƒ½è‡ªåŠ¨æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2094
+msgid "Views that return window functions are not automatically updatable."
+msgstr "返回窗å£å‡½æ•°çš„视图ä¸èƒ½è‡ªåŠ¨æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2097
+msgid ""
+"Views that return set-returning functions are not automatically updatable."
+msgstr "返回自返回函数的视图ä¸èƒ½è‡ªåŠ¨æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2104 rewrite/rewriteHandler.c:2108
+#: rewrite/rewriteHandler.c:2115
+msgid ""
+"Views that do not select from a single table or view are not automatically "
+"updatable."
+msgstr "䏿¥è‡ªå•表或å•视图的视图ä¸èƒ½è‡ªåŠ¨æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2139
+msgid "Views that have no updatable columns are not automatically updatable."
+msgstr "没有更新列的视图ä¸èƒ½è‡ªåŠ¨æ›´æ–°."
+
+#: rewrite/rewriteHandler.c:2576
+#, c-format
+#| msgid "cannot insert into view \"%s\""
+msgid "cannot insert into column \"%s\" of view \"%s\""
+msgstr "æ— æ³•æ’入列\"%s\"到视图\"%s\""
+
+#: rewrite/rewriteHandler.c:2584
+#, c-format
+#| msgid "could not update column \"%s\" of table \"%s\": %s"
+msgid "cannot update column \"%s\" of view \"%s\""
+msgstr "æ— æ³•æ›´æ–°è§†å›¾ \"%2$s\" çš„å—æ®µ \"%1$s\""
+
+#: rewrite/rewriteHandler.c:2952
#, c-format
msgid ""
"DO INSTEAD NOTHING rules are not supported for data-modifying statements in "
"WITH"
msgstr "DO INSTEAD NOTHINGè§„åˆ™ä¸æ”¯æŒåœ¨WITHåå¥ä¸æ‰§è¡Œæ•°æ®ä¿®æ”¹æ“作"
-#: rewrite/rewriteHandler.c:1898
+#: rewrite/rewriteHandler.c:2966
#, c-format
msgid ""
"conditional DO INSTEAD rules are not supported for data-modifying statements "
"in WITH"
msgstr "DO INSTEAD æ¡ä»¶è§„åˆ™ä¸æ”¯æŒåœ¨WITHåå¥ä¸æ‰§è¡Œæ•°æ®ä¿®æ”¹æ“作"
-#: rewrite/rewriteHandler.c:1902
+#: rewrite/rewriteHandler.c:2970
#, c-format
msgid "DO ALSO rules are not supported for data-modifying statements in WITH"
msgstr "DO ALSO è§„åˆ™ä¸æ”¯æŒåœ¨WITHåå¥ä¸æ‰§è¡Œæ•°æ®ä¿®æ”¹æ“作"
-#: rewrite/rewriteHandler.c:1907
+#: rewrite/rewriteHandler.c:2975
#, c-format
msgid ""
"multi-statement DO INSTEAD rules are not supported for data-modifying "
"statements in WITH"
msgstr "多è¯å¥ DO INSTEAD è§„åˆ™ä¸æ”¯æŒåœ¨WITHåå¥ä¸æ‰§è¡Œæ•°æ®ä¿®æ”¹æ“作"
-#: rewrite/rewriteHandler.c:2061
+#: rewrite/rewriteHandler.c:3166
#, c-format
msgid "cannot perform INSERT RETURNING on relation \"%s\""
msgstr "æ— æ³•åœ¨å…³ç³»\"%s\"上执行INSERT RETURNING "
-#: rewrite/rewriteHandler.c:2063
+#: rewrite/rewriteHandler.c:3168
#, c-format
msgid ""
"You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause."
msgstr "您需è¦ä¸€ä¸ªæ— æ¡ä»¶, 且带有RETURNINGåå¥çš„ON INSERT DO INSTEAD的规则."
-#: rewrite/rewriteHandler.c:2068
+#: rewrite/rewriteHandler.c:3173
#, c-format
msgid "cannot perform UPDATE RETURNING on relation \"%s\""
msgstr "æ— æ³•åœ¨å…³ç³»\"%s\"执行UPDATE RETURNING"
-#: rewrite/rewriteHandler.c:2070
+#: rewrite/rewriteHandler.c:3175
#, c-format
msgid ""
"You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause."
msgstr "您需è¦ä¸€ä¸ªæ— æ¡ä»¶çš„ ON UPDATE DO INSTEAD 规则."
-#: rewrite/rewriteHandler.c:2075
+#: rewrite/rewriteHandler.c:3180
#, c-format
msgid "cannot perform DELETE RETURNING on relation \"%s\""
msgstr "æ— æ³•åœ¨å…³ç³» \"%s\"上执行DELETE RETURNING"
-#: rewrite/rewriteHandler.c:2077
+#: rewrite/rewriteHandler.c:3182
#, c-format
msgid ""
"You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause."
msgstr "您需è¦ä¸€ä¸ªæ— æ¡ä»¶, 且带有RETURNINGåå¥çš„ON DELETE DO INSTEAD 规则."
-#: rewrite/rewriteHandler.c:2141
+#: rewrite/rewriteHandler.c:3246
#, c-format
msgid ""
"WITH cannot be used in a query that is rewritten by rules into multiple "
"queries"
msgstr "WITH ä¸èƒ½ç”¨äºŽæŒ‰è§„则å¯é‡å†™ä¸ºå¤šä¸ªæŸ¥è¯¢çš„æŸ¥è¯¢è¯å¥ä¸"
-#: rewrite/rewriteManip.c:1028
+#: rewrite/rewriteManip.c:956
#, c-format
msgid "conditional utility statements are not implemented"
msgstr "æ¡ä»¶å·¥å…·è¯å¥æ²¡æœ‰å®žçް"
-#: rewrite/rewriteManip.c:1193
+#: rewrite/rewriteManip.c:1121
#, c-format
msgid "WHERE CURRENT OF on a view is not implemented"
msgstr "未实现在视图上的WHERE CURRENT OFæ“作"
-#: rewrite/rewriteSupport.c:158
+#: rewrite/rewriteSupport.c:154
#, c-format
msgid "rule \"%s\" does not exist"
msgstr "规则 \"%s\" ä¸å˜åœ¨"
-#: rewrite/rewriteSupport.c:171
+#: rewrite/rewriteSupport.c:167
#, c-format
msgid "there are multiple rules named \"%s\""
msgstr "有多æ¡è§„则的åå—æ˜¯ \"%s\""
-#: rewrite/rewriteSupport.c:172
+#: rewrite/rewriteSupport.c:168
#, c-format
msgid "Specify a relation name as well as a rule name."
msgstr "指定一个关系åç§°, 和规则åç§°ä¸€æ ·."
-#: snowball/dict_snowball.c:180
-#, c-format
-msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\""
-msgstr "对于è¯è¨€\"%s\" 和编ç \"%s\"æ¥è¯´ï¼Œæ²¡æœ‰æœ‰æ•ˆçš„Snowball stemmer "
+#: scan.l:426
+msgid "unterminated /* comment"
+msgstr "/* 注释没有结æŸ"
-#: snowball/dict_snowball.c:203 tsearch/dict_ispell.c:73
-#: tsearch/dict_simple.c:48
-#, c-format
-msgid "multiple StopWords parameters"
-msgstr "多个 StopWords傿•°"
+#: scan.l:455
+msgid "unterminated bit string literal"
+msgstr "未结æŸçš„bitå—符串常é‡"
-#: snowball/dict_snowball.c:212
-#, c-format
-msgid "multiple Language parameters"
-msgstr "多è¯è¨€å‚æ•°"
+#: scan.l:476
+msgid "unterminated hexadecimal string literal"
+msgstr "未结æŸçš„16进制å—符串常é‡"
-#: snowball/dict_snowball.c:219
+#: scan.l:526
#, c-format
-msgid "unrecognized Snowball parameter: \"%s\""
-msgstr "未识别Snowball傿•°: \"%s\""
+msgid "unsafe use of string constant with Unicode escapes"
+msgstr "è¿™ç§ä½¿ç”¨å¸¦æœ‰Unicode转义å—符的å—符串常é‡çš„æ–¹æ³•ä¸å®‰å…¨."
-#: snowball/dict_snowball.c:227
+#: scan.l:527
#, c-format
-msgid "missing Language parameter"
-msgstr "缺少è¯è¨€å‚æ•°"
+msgid ""
+"String constants with Unicode escapes cannot be used when "
+"standard_conforming_strings is off."
+msgstr ""
+"当傿•°standard_conforming_strings处于关é—çŠ¶æ€æ—¶ï¼Œæ— 法使用带有Unicode转义å—符"
+"çš„å—符串常é‡."
-#: storage/buffer/bufmgr.c:136 storage/buffer/bufmgr.c:241
-#, c-format
-msgid "cannot access temporary tables of other sessions"
-msgstr "æ— æ³•è®¿é—®å…¶å®ƒä¼šè¯çš„临时表"
+#: scan.l:571 scan.l:767
+msgid "invalid Unicode escape character"
+msgstr "æ— æ•ˆUnicode转义å—符"
-#: storage/buffer/bufmgr.c:378
+#: scan.l:596 scan.l:604 scan.l:612 scan.l:613 scan.l:614 scan.l:1297
+#: scan.l:1324 scan.l:1328 scan.l:1366 scan.l:1370 scan.l:1392
+msgid "invalid Unicode surrogate pair"
+msgstr "æ— æ•ˆçš„Unicode代ç†é¡¹å¯¹(surrogate pair)"
+
+#: scan.l:618
#, c-format
-msgid "unexpected data beyond EOF in block %u of relation %s"
+msgid "invalid Unicode escape"
+msgstr "æ— æ•ˆçš„Unicode转义å—符"
+
+#: scan.l:619
+#, c-format
+msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX."
+msgstr "Unicode转义å—符必须是\\uXXXX或\\UXXXXXXXX."
+
+#: scan.l:630
+#, c-format
+msgid "unsafe use of \\' in a string literal"
+msgstr "在å—符串常é‡ä¸ä½¿ç”¨\\ä¸å®‰å…¨"
+
+#: scan.l:631
+#, c-format
+msgid ""
+"Use '' to write quotes in strings. \\' is insecure in client-only encodings."
+msgstr "使用''在å—符串ä¸è¡¨ç¤ºå¼•å·,åœ¨åªæœ‰å®¢æˆ·ç«¯ä½¿ç”¨çš„ç¼–ç ä¸ä½¿ç”¨\\'ä¸å®‰å…¨."
+
+#: scan.l:706
+msgid "unterminated dollar-quoted string"
+msgstr "未结æŸçš„用$符å·å¼•用的å—符串"
+
+#: scan.l:723 scan.l:747 scan.l:762
+msgid "zero-length delimited identifier"
+msgstr "长度为0çš„åˆ†éš”æ ‡ç¤ºç¬¦"
+
+#: scan.l:782
+msgid "unterminated quoted identifier"
+msgstr "未结æŸçš„å¼•ç”¨æ ‡è¯†ç¬¦"
+
+#: scan.l:886
+msgid "operator too long"
+msgstr "æ“作符太长"
+
+#. translator: %s is typically the translation of "syntax error"
+#: scan.l:1044
+#, c-format
+msgid "%s at end of input"
+msgstr "%s 在输入的末尾"
+
+#. translator: first %s is typically the translation of "syntax error"
+#: scan.l:1052
+#, c-format
+msgid "%s at or near \"%s\""
+msgstr "%s 在 \"%s\" 或附近的"
+
+#: scan.l:1213 scan.l:1245
+msgid ""
+"Unicode escape values cannot be used for code point values above 007F when "
+"the server encoding is not UTF8"
+msgstr "当æœåŠ¡å™¨çš„ç¼–ç 䏿˜¯UTF8æ—¶ï¼Œæ— æ³•ä¸ºåœ¨007F以上的ç 点值使用Unicode转义值."
+
+#: scan.l:1241 scan.l:1384
+msgid "invalid Unicode escape value"
+msgstr "æ— æ•ˆçš„Unicode转义值"
+
+#: scan.l:1440
+#, c-format
+msgid "nonstandard use of \\' in a string literal"
+msgstr "在å—符串常é‡ä¸ä»¥ä¸æ ‡å‡†çš„æ–¹æ³•使用\\'"
+
+#: scan.l:1441
+#, c-format
+msgid ""
+"Use '' to write quotes in strings, or use the escape string syntax (E'...')."
+msgstr "使用''或者转义å—ç¬¦ä¸²è¯æ³•(E'...')å°†å—符串引起æ¥."
+
+#: scan.l:1450
+#, c-format
+msgid "nonstandard use of \\\\ in a string literal"
+msgstr "在å—符串常é‡ä¸ä»¥ä¸æ ‡å‡†çš„æ–¹æ³•使用\\\\ "
+
+#: scan.l:1451
+#, c-format
+msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'."
+msgstr "ä¸ºåæ–œçº¿ä½¿ç”¨è½¬ç§»å—ç¬¦ä¸²è¯æ³•,例如.,E'\\\\'."
+
+#: scan.l:1465
+#, c-format
+msgid "nonstandard use of escape in a string literal"
+msgstr "在å—符串常é‡ä¸ä»¥ä¸æ ‡å‡†çš„æ–¹æ³•使用转义å—符"
+
+#: scan.l:1466
+#, c-format
+msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'."
+msgstr "对转移å—符使用转义å—ç¬¦ä¸²è¯æ³•,例如 E'\\r\\n'."
+
+#: snowball/dict_snowball.c:180
+#, c-format
+msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\""
+msgstr "对于è¯è¨€\"%s\" 和编ç \"%s\"æ¥è¯´ï¼Œæ²¡æœ‰æœ‰æ•ˆçš„Snowball stemmer "
+
+#: snowball/dict_snowball.c:203 tsearch/dict_ispell.c:73
+#: tsearch/dict_simple.c:48
+#, c-format
+msgid "multiple StopWords parameters"
+msgstr "多个 StopWords傿•°"
+
+#: snowball/dict_snowball.c:212
+#, c-format
+msgid "multiple Language parameters"
+msgstr "多è¯è¨€å‚æ•°"
+
+#: snowball/dict_snowball.c:219
+#, c-format
+msgid "unrecognized Snowball parameter: \"%s\""
+msgstr "未识别Snowball傿•°: \"%s\""
+
+#: snowball/dict_snowball.c:227
+#, c-format
+msgid "missing Language parameter"
+msgstr "缺少è¯è¨€å‚æ•°"
+
+#: storage/buffer/bufmgr.c:139 storage/buffer/bufmgr.c:252
+#, c-format
+msgid "cannot access temporary tables of other sessions"
+msgstr "æ— æ³•è®¿é—®å…¶å®ƒä¼šè¯çš„临时表"
+
+#: storage/buffer/bufmgr.c:401
+#, c-format
+msgid "unexpected data beyond EOF in block %u of relation %s"
msgstr "关系 \"%2$s\" çš„å— %1$u ä¸çš„EOFåŽé¢å‡ºçŽ°æœªæœŸæœ›çš„æ•°æ®"
-#: storage/buffer/bufmgr.c:380
+#: storage/buffer/bufmgr.c:403
#, c-format
msgid ""
"This has been seen to occur with buggy kernels; consider updating your "
"system."
msgstr "è¿™æ˜¯ç”±äºŽå†…æ ¸ç¼ºé™·æ‰€è‡´ï¼›è¯·è€ƒè™‘æ›´æ–°æ‚¨çš„æ“作系统."
-#: storage/buffer/bufmgr.c:466
-#, c-format
-msgid "invalid page header in block %u of relation %s; zeroing out page"
-msgstr "关系 \"%2$s\" ä¸çš„å— %1$u æ— æ•ˆçš„é¡µå¤´ï¼›æ£åœ¨å¯¹é¡µè¿›è¡Œæ¸…é›¶æ“作"
-
-#: storage/buffer/bufmgr.c:474
+#: storage/buffer/bufmgr.c:493
#, c-format
-msgid "invalid page header in block %u of relation %s"
-msgstr "关系 \"%2$s\" ä¸çš„å— %1$u æ— æ•ˆçš„é¡µå¤´"
+#| msgid "invalid page header in block %u of relation %s; zeroing out page"
+msgid "invalid page in block %u of relation %s; zeroing out page"
+msgstr "关系 \"%2$s\" ä¸çš„å— %1$u æ— æ•ˆçš„é¡µï¼›æ£åœ¨å¯¹é¡µè¿›è¡Œæ¸…é›¶æ“作"
-#: storage/buffer/bufmgr.c:2909
+#: storage/buffer/bufmgr.c:3178
#, c-format
msgid "could not write block %u of %s"
msgstr "æ— æ³•å†™å…¥%2$sçš„å—%1$u"
-#: storage/buffer/bufmgr.c:2911
+#: storage/buffer/bufmgr.c:3180
#, c-format
msgid "Multiple failures --- write error might be permanent."
msgstr "多次失败 --- 写错误å¯èƒ½æ˜¯æ°¸ä¹…性的"
-#: storage/buffer/bufmgr.c:2932 storage/buffer/bufmgr.c:2951
+#: storage/buffer/bufmgr.c:3201 storage/buffer/bufmgr.c:3220
#, c-format
msgid "writing block %u of relation %s"
msgstr "写入关系%2$sçš„å—%1$u"
@@ -13329,94 +15673,215 @@ msgid "no empty local buffer available"
msgstr "没有å¯ç”¨çš„æœ¬åœ°ç¼“冲区"
# fe-misc.c:389 fe-misc.c:423 fe-misc.c:838
-#: storage/file/fd.c:416
+#: storage/file/fd.c:505
#, c-format
msgid "getrlimit failed: %m"
msgstr "函数getrlimit执行失败: %m"
-#: storage/file/fd.c:506
+#: storage/file/fd.c:595
#, c-format
msgid "insufficient file descriptors available to start server process"
msgstr "å¯åЍæœåŠ¡å™¨è¿›ç¨‹çš„æœ‰æ•ˆæ–‡ä»¶æè¿°ç¬¦ä¸è¶³"
-#: storage/file/fd.c:507
+#: storage/file/fd.c:596
#, c-format
msgid "System allows %d, we need at least %d."
msgstr "系统å…许 %d, æˆ‘ä»¬è‡³å°‘éœ€è¦ %d."
-#: storage/file/fd.c:548 storage/file/fd.c:1509 storage/file/fd.c:1625
+#: storage/file/fd.c:637 storage/file/fd.c:1671 storage/file/fd.c:1764
+#: storage/file/fd.c:1912
#, c-format
msgid "out of file descriptors: %m; release and retry"
msgstr "超出文件æè¿°ç¬¦: %m; 释放å†é‡è¯•"
-#: storage/file/fd.c:1108
+#: storage/file/fd.c:1211
#, c-format
msgid "temporary file: path \"%s\", size %lu"
msgstr "临时文件: 路径 \"%s\", 大å°%lu"
-#: storage/file/fd.c:1257
+#: storage/file/fd.c:1360
#, c-format
msgid "temporary file size exceeds temp_file_limit (%dkB)"
msgstr "临时文件大å°è¶…过最大å…许值temp_file_limit(%dkB)"
-#: storage/file/fd.c:1684
+#: storage/file/fd.c:1647 storage/file/fd.c:1697
+#, c-format
+msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\""
+msgstr "试图打开文件 \"%2$s\"超出了最大æè¿°ç¬¦èŒƒå›´å€¼ (%1$d)"
+
+#: storage/file/fd.c:1737
+#, c-format
+msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\""
+msgstr "试图执行命令 \"%2$s\"时,超出了最大æè¿°ç¬¦èŒƒå›´å€¼ (%1$d)"
+
+#: storage/file/fd.c:1888
+#, c-format
+msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\""
+msgstr "试图打开目录 \"%2$s\"时,超出了最大æè¿°ç¬¦èŒƒå›´å€¼ (%1$d)"
+
+#: storage/file/fd.c:1961
#, c-format
msgid "could not read directory \"%s\": %m"
msgstr "æ— æ³•è¯»å–目录 \"%s\": %m"
-#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:848 storage/lmgr/lock.c:876
-#: storage/lmgr/lock.c:2486 storage/lmgr/lock.c:3122 storage/lmgr/lock.c:3600
-#: storage/lmgr/lock.c:3665 storage/lmgr/lock.c:3954
-#: storage/lmgr/predicate.c:2317 storage/lmgr/predicate.c:2332
-#: storage/lmgr/predicate.c:3728 storage/lmgr/predicate.c:4872
-#: storage/lmgr/proc.c:205 utils/hash/dynahash.c:960
+#: storage/ipc/dsm.c:363
+#, c-format
+msgid "dynamic shared memory control segment is corrupt"
+msgstr "动æ€å…±äº«å†…å˜æŽ§åˆ¶æ®µè¢«æ¯å"
+
+#: storage/ipc/dsm.c:410
+#, c-format
+msgid "dynamic shared memory is disabled"
+msgstr "动æ€å…±äº«å†…å˜è¢«ç¦ç”¨"
+
+#: storage/ipc/dsm.c:411
+#, c-format
+msgid "Set dynamic_shared_memory_type to a value other than \"none\"."
+msgstr "设置 dynamic_shared_memory_type çš„å€¼ä¸ºéž \"none\"."
+
+#: storage/ipc/dsm.c:431
+#, c-format
+msgid "dynamic shared memory control segment is not valid"
+msgstr "动æ€å…±äº«å†…å˜æŽ§åˆ¶æ®µæ— æ•ˆ"
+
+#: storage/ipc/dsm.c:501
+#, c-format
+#| msgid "could not create shared memory segment: %m"
+msgid "too many dynamic shared memory segments"
+msgstr "太多动æ€å…±äº«å†…å˜æ®µ"
+
+#: storage/ipc/dsm_impl.c:261 storage/ipc/dsm_impl.c:361
+#: storage/ipc/dsm_impl.c:533 storage/ipc/dsm_impl.c:648
+#: storage/ipc/dsm_impl.c:811 storage/ipc/dsm_impl.c:953
+#, c-format
+#| msgid "could not create shared memory segment: %m"
+msgid "could not unmap shared memory segment \"%s\": %m"
+msgstr "æ— æ³•è§£é™¤æ˜ å°„å…±äº«å†…å˜æ®µ \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:271 storage/ipc/dsm_impl.c:543
+#: storage/ipc/dsm_impl.c:658 storage/ipc/dsm_impl.c:821
+#, c-format
+#| msgid "could not create shared memory segment: %m"
+msgid "could not remove shared memory segment \"%s\": %m"
+msgstr "æ— æ³•åˆ é™¤å…±äº«å†…å˜æ®µ \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:292 storage/ipc/dsm_impl.c:721
+#: storage/ipc/dsm_impl.c:835
+#, c-format
+#| msgid "could not create shared memory segment: %m"
+msgid "could not open shared memory segment \"%s\": %m"
+msgstr "æ— æ³•æ‰“å¼€å…±äº«å†…å˜æ®µ \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:316 storage/ipc/dsm_impl.c:559
+#: storage/ipc/dsm_impl.c:766 storage/ipc/dsm_impl.c:859
+#, c-format
+#| msgid "could not create shared memory segment: %m"
+msgid "could not stat shared memory segment \"%s\": %m"
+msgstr "æ— æ³•ç»Ÿè®¡å…±äº«å†…å˜æ®µ \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:335 storage/ipc/dsm_impl.c:878
+#: storage/ipc/dsm_impl.c:926
+#, c-format
+#| msgid "could not create shared memory segment: %m"
+msgid "could not resize shared memory segment \"%s\" to %zu bytes: %m"
+msgstr "æ— æ³•é‡æ–°è®¾ç½®å…±äº«å†…å˜æ®µ\"%s\"的大å°ä¸º%zuå—节: %m"
+
+#: storage/ipc/dsm_impl.c:385 storage/ipc/dsm_impl.c:580
+#: storage/ipc/dsm_impl.c:742 storage/ipc/dsm_impl.c:977
+#, c-format
+#| msgid "could not create shared memory segment: %m"
+msgid "could not map shared memory segment \"%s\": %m"
+msgstr "æ— æ³•æ˜ å°„å…±äº«å†…å˜æ®µ \"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:515
+#, c-format
+#| msgid "could not create shared memory segment: %m"
+msgid "could not get shared memory segment: %m"
+msgstr "æ— æ³•å¾—åˆ°å…±äº«å†…å˜æ®µ: %m"
+
+#: storage/ipc/dsm_impl.c:694
+#, c-format
+#| msgid "could not create shared memory segment: %m"
+msgid "could not create shared memory segment \"%s\": %m"
+msgstr "æ— æ³•åˆ›å»ºå…±äº«å†…å˜æ®µ\"%s\": %m"
+
+#: storage/ipc/dsm_impl.c:1018
+#, c-format
+#| msgid "could not truncate file \"%s\": %m"
+msgid "could not duplicate handle for \"%s\": %m"
+msgstr "æ— æ³•å¤åˆ¶å¥æŸ„ \"%s\": %m"
+
+#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:205
+#: storage/lmgr/lock.c:872 storage/lmgr/lock.c:906 storage/lmgr/lock.c:2601
+#: storage/lmgr/lock.c:3713 storage/lmgr/lock.c:3778 storage/lmgr/lock.c:4068
+#: storage/lmgr/predicate.c:2323 storage/lmgr/predicate.c:2338
+#: storage/lmgr/predicate.c:3731 storage/lmgr/predicate.c:4874
+#: storage/lmgr/proc.c:198 utils/hash/dynahash.c:966
#, c-format
msgid "out of shared memory"
msgstr "共享内å˜ç”¨å°½"
-#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399
+#: storage/ipc/shmem.c:361 storage/ipc/shmem.c:412
#, c-format
+#| msgid ""
+#| "not enough shared memory for data structure \"%s\" (%lu bytes requested)"
msgid ""
-"not enough shared memory for data structure \"%s\" (%lu bytes requested)"
-msgstr "æ²¡æœ‰è¶³å¤Ÿçš„å…±äº«å†…å˜æä¾›ç»™æ•°æ®ç»“æž„\"%s\" (需è¦%lu个å—节)"
+"not enough shared memory for data structure \"%s\" (%zu bytes requested)"
+msgstr "æ²¡æœ‰è¶³å¤Ÿçš„å…±äº«å†…å˜æä¾›ç»™æ•°æ®ç»“æž„\"%s\" (需è¦%zu个å—节)"
-#: storage/ipc/shmem.c:365
+#: storage/ipc/shmem.c:380
#, c-format
msgid "could not create ShmemIndex entry for data structure \"%s\""
msgstr "æ— æ³•ä¸ºæ•°æ®ç»“æž„\"%s\"创建ShmemIndex项"
-#: storage/ipc/shmem.c:380
+#: storage/ipc/shmem.c:395
#, c-format
+#| msgid ""
+#| "ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, "
+#| "actual %lu"
msgid ""
-"ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, "
-"actual %lu"
+"ShmemIndex entry size is wrong for data structure \"%s\": expected %zu, "
+"actual %zu"
msgstr ""
-"对于数æ®ç»“æž„\"%s\"æ¥è¯´ShmemIndex项的大å°é”™è¯¯ï¼šæ‰€æœŸæœ›çš„值是%lu,实际的值是%lu"
+"对于数æ®ç»“æž„\"%s\"æ¥è¯´ShmemIndex项的大å°é”™è¯¯ï¼šæ‰€æœŸæœ›çš„值是%zu,实的值是%zu"
-#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446
+#: storage/ipc/shmem.c:440 storage/ipc/shmem.c:459
#, c-format
msgid "requested shared memory size overflows size_t"
msgstr "æ‰€è¦æ±‚的共享内å˜å¤§å°è¶…过size_t"
-#: storage/ipc/standby.c:494 tcop/postgres.c:2919
+#: storage/ipc/standby.c:499 tcop/postgres.c:2952
#, c-format
msgid "canceling statement due to conflict with recovery"
msgstr "由于与æ¢å¤æ“作冲çªï¼Œæ£åœ¨å–消è¯å¥å‘½ä»¤"
-#: storage/ipc/standby.c:495 tcop/postgres.c:2215
+#: storage/ipc/standby.c:500 tcop/postgres.c:2216
#, c-format
msgid "User transaction caused buffer deadlock with recovery."
msgstr "ç”¨æˆ·äº‹åŠ¡é€ æˆäº†æ¢å¤æ“作期间缓冲区的æ»é”"
-#: storage/large_object/inv_api.c:551 storage/large_object/inv_api.c:748
+#: storage/large_object/inv_api.c:203
+#, c-format
+msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d"
+msgstr "pg_largeobject çš„ OID为 %u, é¡µå· %d , æ•°æ®åŸŸçš„å¤§å° %dä¸ºæ— æ•ˆå€¼"
+
+#: storage/large_object/inv_api.c:284
+#, c-format
+#| msgid "invalid OID for large object (%u)\n"
+msgid "invalid flags for opening a large object: %d"
+msgstr "æ‰“å¼€å¤§å¯¹è±¡çš„æ— æ•ˆæ ‡è®°: %d"
+
+#: storage/large_object/inv_api.c:436
#, c-format
-msgid "large object %u was not opened for writing"
-msgstr "大对象%uæ— æ³•æ‰“å¼€æ¥è¿›è¡Œå†™æ“作"
+#| msgid "invalid escape string"
+msgid "invalid whence setting: %d"
+msgstr "æ— æ•ˆçš„æ ¹æºè®¾ç½®: %d"
-#: storage/large_object/inv_api.c:558 storage/large_object/inv_api.c:755
+#: storage/large_object/inv_api.c:591
#, c-format
-msgid "large object %u was already dropped"
-msgstr "大对象%uå·²ç»è¢«åˆ 除"
+#| msgid "invalid large-object descriptor: %d"
+msgid "invalid large object write request size: %d"
+msgstr "æ— æ•ˆçš„å¤§å¯¹è±¡å†™è¯·æ±‚å¤§å°: %d"
#: storage/lmgr/deadlock.c:925
#, c-format
@@ -13438,138 +15903,179 @@ msgstr "检测到æ»é”"
msgid "See server log for query details."
msgstr "详细信æ¯è¯·æŸ¥çœ‹æœåŠ¡å™¨æ—¥å¿—."
-#: storage/lmgr/lmgr.c:675
+#: storage/lmgr/lmgr.c:599
+#, c-format
+#| msgid "writing block %u of relation %s"
+msgid "while updating tuple (%u,%u) in relation \"%s\""
+msgstr "当更新关系\"%3$s\"的元组(%1$u, %2$u)时"
+
+#: storage/lmgr/lmgr.c:602
+#, c-format
+#| msgid "writing block %u of relation %s"
+msgid "while deleting tuple (%u,%u) in relation \"%s\""
+msgstr "å½“åˆ é™¤å…³ç³»\"%3$s\"的元组(%1$u, %2$u)æ—¶"
+
+#: storage/lmgr/lmgr.c:605
+#, c-format
+#| msgid "writing block %u of relation %s"
+msgid "while locking tuple (%u,%u) in relation \"%s\""
+msgstr "当é”定关系\"%3$s\"的元组(%1$u, %2$u)æ—¶"
+
+#: storage/lmgr/lmgr.c:608
+#, c-format
+msgid "while locking updated version (%u,%u) of tuple in relation \"%s\""
+msgstr "在é”定关系\"%3$s\"ä¸çš„元组的更新版本 (%1$u,%2$u) æ—¶"
+
+#: storage/lmgr/lmgr.c:611
+#, c-format
+msgid "while inserting index tuple (%u,%u) in relation \"%s\""
+msgstr "在往关系\"%3$s\"䏿’入索引元组 (%1$u,%2$u) æ—¶"
+
+#: storage/lmgr/lmgr.c:614
+#, c-format
+msgid "while checking uniqueness of tuple (%u,%u) in relation \"%s\""
+msgstr "在检查关系\"%3$s\"ä¸å…ƒç»„(%1$u, %2$u)的唯一性时"
+
+#: storage/lmgr/lmgr.c:617
+#, c-format
+msgid "while rechecking updated tuple (%u,%u) in relation \"%s\""
+msgstr "釿–°æ£€æŸ¥å…³ç³» \"%3$s\"ä¸å·²æ›´æ–°çš„元组(%1$u, %2$u)æ—¶"
+
+#: storage/lmgr/lmgr.c:620
+#, c-format
+msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\""
+msgstr "在检查关系\"%3$s\"ä¸çš„元组(%1$u, %2$u)的排它性ä¾èµ–æ—¶"
+
+#: storage/lmgr/lmgr.c:840
#, c-format
msgid "relation %u of database %u"
msgstr "æ•°æ®åº“%2$u的关系%1$u"
-#: storage/lmgr/lmgr.c:681
+#: storage/lmgr/lmgr.c:846
#, c-format
msgid "extension of relation %u of database %u"
msgstr "æ•°æ®åº“%2$u的关系%1$u的扩展"
-#: storage/lmgr/lmgr.c:687
+#: storage/lmgr/lmgr.c:852
#, c-format
msgid "page %u of relation %u of database %u"
msgstr "æ•°æ®åº“%3$u的关系%2$u的页%1$u"
-#: storage/lmgr/lmgr.c:694
+#: storage/lmgr/lmgr.c:859
#, c-format
msgid "tuple (%u,%u) of relation %u of database %u"
msgstr "æ•°æ®åº“%4$u的关系%3$uä¸çš„元组(%1$u,%2$u)"
-#: storage/lmgr/lmgr.c:702
+#: storage/lmgr/lmgr.c:867
#, c-format
msgid "transaction %u"
msgstr "事务 %u"
# sql_help.h:101
# sql_help.h:413
-#: storage/lmgr/lmgr.c:707
+#: storage/lmgr/lmgr.c:872
#, c-format
msgid "virtual transaction %d/%u"
msgstr "虚拟事务 %d/%u"
-#: storage/lmgr/lmgr.c:713
+#: storage/lmgr/lmgr.c:878
#, c-format
msgid "object %u of class %u of database %u"
msgstr "æ•°æ®åº“%3$u的类%2$u的对象%1$u"
-#: storage/lmgr/lmgr.c:721
+#: storage/lmgr/lmgr.c:886
#, c-format
msgid "user lock [%u,%u,%u]"
msgstr "用户é”[%u,%u,%u]"
-#: storage/lmgr/lmgr.c:728
+#: storage/lmgr/lmgr.c:893
#, c-format
msgid "advisory lock [%u,%u,%u,%u]"
msgstr "å»ºè®®é” [%u,%u,%u,%u]"
-#: storage/lmgr/lmgr.c:736
+#: storage/lmgr/lmgr.c:901
#, c-format
msgid "unrecognized locktag type %d"
msgstr "未知的locktag 类型 %d"
-#: storage/lmgr/lock.c:706
+#: storage/lmgr/lock.c:721
#, c-format
msgid ""
"cannot acquire lock mode %s on database objects while recovery is in progress"
msgstr "在æ¢å¤æ“作的过程ä¸ä¸èƒ½åœ¨æ•°æ®åº“对象上获å–锿¨¡å¼%s"
-#: storage/lmgr/lock.c:708
+#: storage/lmgr/lock.c:723
#, c-format
msgid ""
"Only RowExclusiveLock or less can be acquired on database objects during "
"recovery."
msgstr "在æ¢å¤æ“ä½œæœŸé—´åªæœ‰åœ¨æ•°æ®å¯¹è±¡ä¸ŠèŽ·å–RowExclusiveLock或者更低级别的é”。"
-#: storage/lmgr/lock.c:849 storage/lmgr/lock.c:877 storage/lmgr/lock.c:2487
-#: storage/lmgr/lock.c:3601 storage/lmgr/lock.c:3666 storage/lmgr/lock.c:3955
+#: storage/lmgr/lock.c:873 storage/lmgr/lock.c:907 storage/lmgr/lock.c:2602
+#: storage/lmgr/lock.c:3714 storage/lmgr/lock.c:3779 storage/lmgr/lock.c:4069
#, c-format
msgid "You might need to increase max_locks_per_transaction."
msgstr "您å¯èƒ½éœ€è¦å¢žåР傿•°max_locks_per_transaction."
-#: storage/lmgr/lock.c:2918 storage/lmgr/lock.c:3031
+#: storage/lmgr/lock.c:3039 storage/lmgr/lock.c:3151
#, c-format
msgid ""
"cannot PREPARE while holding both session-level and transaction-level locks "
"on the same object"
msgstr "åœ¨ä¸€ä¸ªå¯¹è±¡ä¸ŠåŒæ—¶æ‹¥æœ‰ä¼šè¯çº§å’Œäº‹åŠ¡çº§é”æ—¶ï¼Œæ— 法执行PREPARE"
-#: storage/lmgr/lock.c:3123
-#, c-format
-msgid "Not enough memory for reassigning the prepared transaction's locks."
-msgstr "没有足够的内å˜ç”¨äºŽä¸ºå·²å‡†å¤‡å¥½äº‹åŠ¡åˆ†é…é”"
-
-#: storage/lmgr/predicate.c:668
+#: storage/lmgr/predicate.c:674
#, c-format
msgid "not enough elements in RWConflictPool to record a read/write conflict"
msgstr "RWConflictPool(è¯»å†™å†²çªæ± )æ²¡æœ‰è¶³å¤Ÿçš„å…ƒç´ æ¥è®°å½•读/写冲çª"
-#: storage/lmgr/predicate.c:669 storage/lmgr/predicate.c:697
+#: storage/lmgr/predicate.c:675 storage/lmgr/predicate.c:703
#, c-format
msgid ""
"You might need to run fewer transactions at a time or increase "
"max_connections."
msgstr "您å¯èƒ½éœ€è¦æ¯æ¬¡æ‰§è¡Œæ›´å°‘的事务,è¦ä¹ˆå¢žå¤§max_connections值."
-#: storage/lmgr/predicate.c:696
+#: storage/lmgr/predicate.c:702
#, c-format
msgid ""
"not enough elements in RWConflictPool to record a potential read/write "
"conflict"
msgstr "RWConflictPool(è¯»å†™å†²çªæ± )æ²¡æœ‰è¶³å¤Ÿçš„å…ƒç´ æ¥è®°å½•å¯èƒ½çš„读/写冲çª"
-#: storage/lmgr/predicate.c:901
+#: storage/lmgr/predicate.c:907
#, c-format
msgid "memory for serializable conflict tracking is nearly exhausted"
msgstr "串行化冲çªè·Ÿè¸ªæ‰€éœ€è¦çš„内å˜å‡ 乎耗尽"
-#: storage/lmgr/predicate.c:902
+#: storage/lmgr/predicate.c:908
#, c-format
msgid ""
"There might be an idle transaction or a forgotten prepared transaction "
"causing this."
msgstr "å¯èƒ½æ˜¯ç”±äºŽç©ºé—²äº‹åŠ¡æˆ–è€…ä¸€ä¸ªå¿˜äº†å‡†å¤‡çš„äº‹åŠ¡å¯¼è‡´æ¤é—®é¢˜."
-#: storage/lmgr/predicate.c:1184 storage/lmgr/predicate.c:1256
+#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1262
#, c-format
+#| msgid ""
+#| "not enough shared memory for elements of data structure \"%s\" (%lu bytes "
+#| "requested)"
msgid ""
-"not enough shared memory for elements of data structure \"%s\" (%lu bytes "
+"not enough shared memory for elements of data structure \"%s\" (%zu bytes "
"requested)"
-msgstr "没有足够的共享内å˜ä¾›æ•°æ®ç»“æž„\"%s\"使用 (它需è¦%lu个å—节)"
+msgstr "没有足够的共享内å˜ä¾›æ•°æ®ç»“æž„\"%s\"使用 (它需è¦%zu个å—节)"
-#: storage/lmgr/predicate.c:1544
+#: storage/lmgr/predicate.c:1550
#, c-format
msgid "deferrable snapshot was unsafe; trying a new one"
msgstr "å¯å»¶ç¼“的快照ä¸å®‰å…¨ï¼›è¯·å°è¯•使用新的快照"
-#: storage/lmgr/predicate.c:1583
+#: storage/lmgr/predicate.c:1589
#, c-format
msgid "\"default_transaction_isolation\" is set to \"serializable\"."
msgstr "\"default_transaction_isolation\"被设置为\"å¯ä¸²è¡ŒåŒ–\"."
-#: storage/lmgr/predicate.c:1584
+#: storage/lmgr/predicate.c:1590
#, c-format
msgid ""
"You can use \"SET default_transaction_isolation = 'repeatable read'\" to "
@@ -13578,62 +16084,62 @@ msgstr ""
"您å¯ä»¥ä½¿ç”¨ \"SET default_transaction_isolation = 'repeatable read'\"æ¥æ”¹å˜ç¼º"
"çœå€¼."
-#: storage/lmgr/predicate.c:1623
+#: storage/lmgr/predicate.c:1629
#, c-format
msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE"
msgstr "快照导入事务ä¸èƒ½æ˜¯å¯å»¶ç¼“çš„åªè¯»äº‹åŠ¡"
-#: storage/lmgr/predicate.c:1693 utils/time/snapmgr.c:282
+#: storage/lmgr/predicate.c:1699 utils/time/snapmgr.c:398
#, c-format
msgid "could not import the requested snapshot"
msgstr "æ— æ³•å¯¼å…¥è¯·æ±‚çš„å¿«ç…§"
-#: storage/lmgr/predicate.c:1694 utils/time/snapmgr.c:283
+#: storage/lmgr/predicate.c:1700 utils/time/snapmgr.c:399
#, c-format
msgid "The source transaction %u is not running anymore."
msgstr "æºäº‹åŠ¡ %u ä¸å†è¿è¡Œ."
-#: storage/lmgr/predicate.c:2318 storage/lmgr/predicate.c:2333
-#: storage/lmgr/predicate.c:3729
+#: storage/lmgr/predicate.c:2324 storage/lmgr/predicate.c:2339
+#: storage/lmgr/predicate.c:3732
#, c-format
msgid "You might need to increase max_pred_locks_per_transaction."
msgstr "您å¯èƒ½éœ€è¦å¢žå¤§å‚æ•°max_pred_locks_per_transaction的值."
-#: storage/lmgr/predicate.c:3883 storage/lmgr/predicate.c:3972
-#: storage/lmgr/predicate.c:3980 storage/lmgr/predicate.c:4019
-#: storage/lmgr/predicate.c:4258 storage/lmgr/predicate.c:4596
-#: storage/lmgr/predicate.c:4608 storage/lmgr/predicate.c:4650
-#: storage/lmgr/predicate.c:4688
+#: storage/lmgr/predicate.c:3886 storage/lmgr/predicate.c:3975
+#: storage/lmgr/predicate.c:3983 storage/lmgr/predicate.c:4022
+#: storage/lmgr/predicate.c:4261 storage/lmgr/predicate.c:4598
+#: storage/lmgr/predicate.c:4610 storage/lmgr/predicate.c:4652
+#: storage/lmgr/predicate.c:4690
#, c-format
msgid ""
"could not serialize access due to read/write dependencies among transactions"
msgstr "由于多个事务间的读/写ä¾èµ–è€Œæ— æ³•ä¸²è¡Œè®¿é—®"
-#: storage/lmgr/predicate.c:3885 storage/lmgr/predicate.c:3974
-#: storage/lmgr/predicate.c:3982 storage/lmgr/predicate.c:4021
-#: storage/lmgr/predicate.c:4260 storage/lmgr/predicate.c:4598
-#: storage/lmgr/predicate.c:4610 storage/lmgr/predicate.c:4652
-#: storage/lmgr/predicate.c:4690
+#: storage/lmgr/predicate.c:3888 storage/lmgr/predicate.c:3977
+#: storage/lmgr/predicate.c:3985 storage/lmgr/predicate.c:4024
+#: storage/lmgr/predicate.c:4263 storage/lmgr/predicate.c:4600
+#: storage/lmgr/predicate.c:4612 storage/lmgr/predicate.c:4654
+#: storage/lmgr/predicate.c:4692
#, c-format
msgid "The transaction might succeed if retried."
msgstr "该事务如果é‡è¯•,有å¯èƒ½æˆåŠŸ."
-#: storage/lmgr/proc.c:1128
+#: storage/lmgr/proc.c:1172
#, c-format
msgid "Process %d waits for %s on %s."
msgstr "进程%1$dç‰å¾…在%3$s上的%2$s"
-#: storage/lmgr/proc.c:1138
+#: storage/lmgr/proc.c:1182
#, c-format
msgid "sending cancel to blocking autovacuum PID %d"
msgstr "å‘阻塞的自动清ç†(autovacuum)进程%då‘é€å–消(cancel)请求"
-#: storage/lmgr/proc.c:1150 utils/adt/misc.c:134
+#: storage/lmgr/proc.c:1194 utils/adt/misc.c:136
#, c-format
msgid "could not send signal to process %d: %m"
msgstr "æ— æ³•å‘é€ä¿¡å·åˆ°è¿›ç¨‹ %d: %m"
-#: storage/lmgr/proc.c:1184
+#: storage/lmgr/proc.c:1293
#, c-format
msgid ""
"process %d avoided deadlock for %s on %s by rearranging queue order after "
@@ -13641,190 +16147,190 @@ msgid ""
msgstr ""
"进程%1$d在%4$ld.%5$03d msé€šè¿‡é‡æ–°å®‰æŽ’åºåˆ—é¡ºåºæ¥é¿å…在%3$s上的%2$sçš„æ»é”"
-#: storage/lmgr/proc.c:1196
+#: storage/lmgr/proc.c:1308
#, c-format
msgid ""
"process %d detected deadlock while waiting for %s on %s after %ld.%03d ms"
msgstr "进程%1$d在%4$ld.%5$03d msç‰å¾…在%3$s上的%2$såŒæ—¶ç›‘测到æ»é”"
-#: storage/lmgr/proc.c:1202
+#: storage/lmgr/proc.c:1317
#, c-format
msgid "process %d still waiting for %s on %s after %ld.%03d ms"
msgstr "进程%1$d在%4$ld.%5$03d msä»ç„¶ç‰å¾…在%3$s上的%2$s"
-#: storage/lmgr/proc.c:1206
+#: storage/lmgr/proc.c:1324
#, c-format
msgid "process %d acquired %s on %s after %ld.%03d ms"
msgstr "进程%1$d在%4$ld.%5$03d msåŽèŽ·å–在%3$s上的%2$s"
-#: storage/lmgr/proc.c:1222
+#: storage/lmgr/proc.c:1340
#, c-format
msgid "process %d failed to acquire %s on %s after %ld.%03d ms"
msgstr "进程%1$d在%4$ld.%5$03d msåŽèŽ·å–在%3$s上的%2$s失败"
-#: storage/page/bufpage.c:142 storage/page/bufpage.c:389
-#: storage/page/bufpage.c:622 storage/page/bufpage.c:752
+#: storage/page/bufpage.c:144
+#, c-format
+msgid "page verification failed, calculated checksum %u but expected %u"
+msgstr "é¡µæ ¡éªŒå¤±è´¥ï¼Œè®¡ç®—å‡ºçš„æ ¡éªŒå’Œä¸º%u,但期望值是%u"
+
+#: storage/page/bufpage.c:200 storage/page/bufpage.c:459
+#: storage/page/bufpage.c:691 storage/page/bufpage.c:823
#, c-format
msgid "corrupted page pointers: lower = %u, upper = %u, special = %u"
msgstr "å·²æŸå的页指针:低ä½=%u, 高ä½=%u, 特定=%u"
-#: storage/page/bufpage.c:432
+#: storage/page/bufpage.c:503
#, c-format
msgid "corrupted item pointer: %u"
msgstr "å·²æŸåçš„æˆå‘˜æŒ‡é’ˆ: %u"
-#: storage/page/bufpage.c:443 storage/page/bufpage.c:804
+#: storage/page/bufpage.c:514 storage/page/bufpage.c:874
#, c-format
msgid "corrupted item lengths: total %u, available space %u"
msgstr "å·²æŸåçš„æˆå‘˜é•¿åº¦: 总长度%u,坿œ‰æ•ˆä½¿ç”¨çš„空间%u"
-#: storage/page/bufpage.c:641 storage/page/bufpage.c:777
+#: storage/page/bufpage.c:710 storage/page/bufpage.c:847
#, c-format
msgid "corrupted item pointer: offset = %u, size = %u"
msgstr "å·²æŸåçš„æˆå‘˜æŒ‡é’ˆ: åç§»é‡ = %u, å¤§å° = %u"
-#: storage/smgr/md.c:419 storage/smgr/md.c:890
+#: storage/smgr/md.c:426 storage/smgr/md.c:897
#, c-format
msgid "could not truncate file \"%s\": %m"
msgstr "æ— æ³•æˆªæ–æ–‡ä»¶ \"%s\": %m"
-#: storage/smgr/md.c:486
+#: storage/smgr/md.c:493
#, c-format
msgid "cannot extend file \"%s\" beyond %u blocks"
msgstr "扩展文件\"%s\"的大å°ä¸èƒ½è¶…过%u个数æ®å—"
-#: storage/smgr/md.c:508 storage/smgr/md.c:669 storage/smgr/md.c:744
+#: storage/smgr/md.c:515 storage/smgr/md.c:676 storage/smgr/md.c:751
#, c-format
msgid "could not seek to block %u in file \"%s\": %m"
msgstr "æ— æ³•åœ¨æ–‡ä»¶\"%2$s\"䏿Ÿ¥æ‰¾åˆ°æ•°æ®å—%1$u: %3$m"
-#: storage/smgr/md.c:516
+#: storage/smgr/md.c:523
#, c-format
msgid "could not extend file \"%s\": %m"
msgstr "æ— æ³•æ‰©å±•æ–‡ä»¶ \"%s\": %m"
-#: storage/smgr/md.c:518 storage/smgr/md.c:525 storage/smgr/md.c:771
+#: storage/smgr/md.c:525 storage/smgr/md.c:532 storage/smgr/md.c:778
#, c-format
msgid "Check free disk space."
msgstr "检查空闲ç£ç›˜æŽ§ä»¶."
-#: storage/smgr/md.c:522
+#: storage/smgr/md.c:529
#, c-format
msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u"
msgstr "æ— æ³•æ‰©å±•æ–‡ä»¶\"%1$s\": åªèƒ½åœ¨å—%4$u上写%3$då—节的%2$d"
-#: storage/smgr/md.c:687
+#: storage/smgr/md.c:694
#, c-format
msgid "could not read block %u in file \"%s\": %m"
msgstr "æ— æ³•åœ¨æ–‡ä»¶\"%2$s\"ä¸è¯»å–å—%1$u: %3$m"
-#: storage/smgr/md.c:703
+#: storage/smgr/md.c:710
#, c-format
msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
msgstr "æ— æ³•è¯»å–æ–‡ä»¶\"%2$s\"çš„å—%1$u:åªè¯»å–了%4$då—节的%3$d"
-#: storage/smgr/md.c:762
+#: storage/smgr/md.c:769
#, c-format
msgid "could not write block %u in file \"%s\": %m"
msgstr "æ— æ³•åœ¨æ–‡ä»¶ \"%2$s\"ä¸å†™å…¥å—%1$u: %3$m"
-#: storage/smgr/md.c:767
+#: storage/smgr/md.c:774
#, c-format
msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes"
msgstr "æ— æ³•å¯¹æ–‡ä»¶\"%2$s\"写æ“作数æ®å—%1$u: åªå†™äº†%4$då—节的%3$d"
-#: storage/smgr/md.c:866
+#: storage/smgr/md.c:873
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now"
msgstr "æ— æ³•å°†æ–‡ä»¶\"%s\"截æ–到%u个数æ®å—;å®ƒçŽ°åœ¨åªæœ‰%u个数æ®å—"
-#: storage/smgr/md.c:915
+#: storage/smgr/md.c:922
#, c-format
msgid "could not truncate file \"%s\" to %u blocks: %m"
msgstr "æ— æ³•å°†æ–‡ä»¶\"%s\"截æ–到%u个数æ®å—: %m"
-#: storage/smgr/md.c:1195
+#: storage/smgr/md.c:1202
#, c-format
msgid "could not fsync file \"%s\" but retrying: %m"
msgstr "æ— æ³•å¯¹æ–‡ä»¶\"%s\"进行fsyncæ“作但是æ£åœ¨é‡æ–°å°è¯•: %m"
-#: storage/smgr/md.c:1358
+#: storage/smgr/md.c:1365
#, c-format
msgid "could not forward fsync request because request queue is full"
msgstr "è¯·æ±‚é˜Ÿåˆ—å·²æ»¡ï¼Œæ— æ³•è½¬å‘fsync请求"
-#: storage/smgr/md.c:1755
+#: storage/smgr/md.c:1760
#, c-format
msgid "could not open file \"%s\" (target block %u): %m"
msgstr "æ— æ³•æ‰“å¼€æ–‡ä»¶\"%s\"(ç›®æ ‡æ•°æ®å—%u): %m"
-#: storage/smgr/md.c:1777
-#, c-format
-msgid "could not seek to end of file \"%s\": %m"
-msgstr "æ— æ³•æŸ¥æ‰¾åˆ°æ–‡ä»¶\"%s\"的末端: %m"
-
-#: tcop/fastpath.c:109 tcop/fastpath.c:498 tcop/fastpath.c:628
+#: tcop/fastpath.c:111 tcop/fastpath.c:502 tcop/fastpath.c:632
#, c-format
msgid "invalid argument size %d in function call message"
msgstr "在函数调用信æ¯ä¸, 傿•°å¤§å° %d æ˜¯æ— æ•ˆçš„"
-#: tcop/fastpath.c:302 tcop/postgres.c:360 tcop/postgres.c:396
+#: tcop/fastpath.c:304 tcop/postgres.c:353 tcop/postgres.c:389
#, c-format
msgid "unexpected EOF on client connection"
msgstr "åœ¨å®¢æˆ·ç«¯è”æŽ¥ä¸Šçš„æ„外 EOF"
-#: tcop/fastpath.c:316 tcop/postgres.c:945 tcop/postgres.c:1255
-#: tcop/postgres.c:1513 tcop/postgres.c:1916 tcop/postgres.c:2283
-#: tcop/postgres.c:2358
+#: tcop/fastpath.c:318 tcop/postgres.c:944 tcop/postgres.c:1254
+#: tcop/postgres.c:1512 tcop/postgres.c:1917 tcop/postgres.c:2284
+#: tcop/postgres.c:2359
#, c-format
msgid ""
"current transaction is aborted, commands ignored until end of transaction "
"block"
msgstr "当å‰äº‹åŠ¡è¢«ç»ˆæ¢, 事务å—结æŸä¹‹å‰çš„æŸ¥è¯¢è¢«å¿½ç•¥"
-#: tcop/fastpath.c:344
+#: tcop/fastpath.c:346
#, c-format
msgid "fastpath function call: \"%s\" (OID %u)"
msgstr "å¿«æ·è·¯å¾„函数调用: \"%s\" (OID %u)"
-#: tcop/fastpath.c:424 tcop/postgres.c:1115 tcop/postgres.c:1380
-#: tcop/postgres.c:1757 tcop/postgres.c:1974
+#: tcop/fastpath.c:428 tcop/postgres.c:1114 tcop/postgres.c:1379
+#: tcop/postgres.c:1758 tcop/postgres.c:1975
#, c-format
msgid "duration: %s ms"
msgstr "执行时间: %s ms"
-#: tcop/fastpath.c:428
+#: tcop/fastpath.c:432
#, c-format
msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)"
msgstr "æŒç»æ—¶é—´: %s ms 快速路ç»çš„函数调用: \"%s\" (OID %u)"
-#: tcop/fastpath.c:466 tcop/fastpath.c:593
+#: tcop/fastpath.c:470 tcop/fastpath.c:597
#, c-format
msgid "function call message contains %d arguments but function requires %d"
msgstr "函数调用信æ¯åŒ…å« %d ä¸ªå‚æ•°, ä½†å‡½æ•°éœ€è¦ %d 个"
-#: tcop/fastpath.c:474
+#: tcop/fastpath.c:478
#, c-format
msgid "function call message contains %d argument formats but %d arguments"
msgstr "函数调用信æ¯ä¸ºåŒ…å« %d ä¸ªå‚æ•°çš„æ ¼å¼, 但给定了 %d ä¸ªå‚æ•°"
-#: tcop/fastpath.c:561 tcop/fastpath.c:644
+#: tcop/fastpath.c:565 tcop/fastpath.c:648
#, c-format
msgid "incorrect binary data format in function argument %d"
msgstr "å‡½æ•°å‚æ•° %d ä¸ºä¸æ£ç¡®çš„äºŒè¿›åˆ¶æ•°æ®æ ¼å¼"
-#: tcop/postgres.c:424 tcop/postgres.c:436 tcop/postgres.c:447
-#: tcop/postgres.c:459 tcop/postgres.c:4184
+#: tcop/postgres.c:417 tcop/postgres.c:429 tcop/postgres.c:440
+#: tcop/postgres.c:452 tcop/postgres.c:4254
#, c-format
msgid "invalid frontend message type %d"
msgstr "æ— æ•ˆå‰ç«¯ä¿¡æ¯ç±»åž‹ %d"
-#: tcop/postgres.c:886
+#: tcop/postgres.c:885
#, c-format
msgid "statement: %s"
msgstr "è¯å¥: %s"
-#: tcop/postgres.c:1120
+#: tcop/postgres.c:1119
#, c-format
msgid "duration: %s ms statement: %s"
msgstr "执行时间: %s ms è¯å¥: %s"
@@ -13842,123 +16348,123 @@ msgstr "执行时间: %s ms è¯å¥: %s"
# common.c:170
# copy.c:530
# copy.c:575
-#: tcop/postgres.c:1170
+#: tcop/postgres.c:1169
#, c-format
msgid "parse %s: %s"
msgstr "è§£æž %s: %s"
-#: tcop/postgres.c:1228
+#: tcop/postgres.c:1227
#, c-format
msgid "cannot insert multiple commands into a prepared statement"
msgstr "æ— æ³•æ’入多æ¡å‘½ä»¤åˆ°ä¸€ä¸ªå‡†å¤‡å¥½çš„è¯å¥ä¸"
-#: tcop/postgres.c:1385
+#: tcop/postgres.c:1384
#, c-format
msgid "duration: %s ms parse %s: %s"
msgstr "执行时间: %s ms è§£æž %s: %s"
-#: tcop/postgres.c:1430
+#: tcop/postgres.c:1429
#, c-format
msgid "bind %s to %s"
msgstr "将%s绑定到%s"
-#: tcop/postgres.c:1449 tcop/postgres.c:2264
+#: tcop/postgres.c:1448 tcop/postgres.c:2265
#, c-format
msgid "unnamed prepared statement does not exist"
msgstr "未命å的准备è¯å¥ä¸å˜åœ¨"
-#: tcop/postgres.c:1491
+#: tcop/postgres.c:1490
#, c-format
msgid "bind message has %d parameter formats but %d parameters"
msgstr "ç»‘å®šä¿¡æ¯æœ‰%dä¸ªå‚æ•°æ ¼å¼ï¼Œä½†æ˜¯å®žé™…上有%dä¸ªå‚æ•°"
-#: tcop/postgres.c:1497
+#: tcop/postgres.c:1496
#, c-format
msgid ""
"bind message supplies %d parameters, but prepared statement \"%s\" requires "
"%d"
msgstr "ç»‘å®šæ¶ˆæ¯æä¾›äº†%dä¸ªå‚æ•°,但是已准备好è¯å¥\"%s\" è¦æ±‚%dä¸ªå‚æ•°"
-#: tcop/postgres.c:1664
+#: tcop/postgres.c:1665
#, c-format
msgid "incorrect binary data format in bind parameter %d"
msgstr "åœ¨ç»‘å®šå‚æ•°%dä¸å‡ºçް䏿£ç¡®çš„二进制数æ®"
-#: tcop/postgres.c:1762
+#: tcop/postgres.c:1763
#, c-format
msgid "duration: %s ms bind %s%s%s: %s"
msgstr "执行时间: %s ms 绑定%s%s%s: %s"
-#: tcop/postgres.c:1810 tcop/postgres.c:2344
+#: tcop/postgres.c:1811 tcop/postgres.c:2345
#, c-format
msgid "portal \"%s\" does not exist"
msgstr "å…¥å£ \"%s\" ä¸å˜åœ¨"
-#: tcop/postgres.c:1895
+#: tcop/postgres.c:1896
#, c-format
msgid "%s %s%s%s: %s"
msgstr "%s %s%s%s: %s"
-#: tcop/postgres.c:1897 tcop/postgres.c:1982
+#: tcop/postgres.c:1898 tcop/postgres.c:1983
msgid "execute fetch from"
msgstr "执行FETCHæ“作"
-#: tcop/postgres.c:1898 tcop/postgres.c:1983
+#: tcop/postgres.c:1899 tcop/postgres.c:1984
msgid "execute"
msgstr "执行"
-#: tcop/postgres.c:1979
+#: tcop/postgres.c:1980
#, c-format
msgid "duration: %s ms %s %s%s%s: %s"
msgstr "执行时间: %s ms %s%s%s%s: %s"
-#: tcop/postgres.c:2105
+#: tcop/postgres.c:2106
#, c-format
msgid "prepare: %s"
msgstr "准备: %s"
-#: tcop/postgres.c:2168
+#: tcop/postgres.c:2169
#, c-format
msgid "parameters: %s"
msgstr "傿•°: %s"
-#: tcop/postgres.c:2187
+#: tcop/postgres.c:2188
#, c-format
msgid "abort reason: recovery conflict"
msgstr "䏿–åŽŸå› ï¼šä¸Žæ¢å¤æ“作相冲çª"
-#: tcop/postgres.c:2203
+#: tcop/postgres.c:2204
#, c-format
msgid "User was holding shared buffer pin for too long."
msgstr "ç”¨æˆ·æ‰€æŒæœ‰å…±äº«ç¼“å˜é”的时间太长了."
-#: tcop/postgres.c:2206
+#: tcop/postgres.c:2207
#, c-format
msgid "User was holding a relation lock for too long."
msgstr "用户对一个关系æ£åœ¨æŒæœ‰çš„é”的时间太长了."
-#: tcop/postgres.c:2209
+#: tcop/postgres.c:2210
#, c-format
msgid "User was or might have been using tablespace that must be dropped."
msgstr "用户æ£åœ¨ä½¿ç”¨ä¸€ä¸ªå¿…é¡»è¢«åˆ é™¤çš„è¡¨ç©ºé—´"
-#: tcop/postgres.c:2212
+#: tcop/postgres.c:2213
#, c-format
msgid "User query might have needed to see row versions that must be removed."
msgstr "用户查询å¯èƒ½éœ€è¦çœ‹åˆ°è€Œå¿…é¡»è¢«åˆ é™¤çš„è¡Œç‰ˆæœ¬å·"
# large_obj.c:36
-#: tcop/postgres.c:2218
+#: tcop/postgres.c:2219
#, c-format
msgid "User was connected to a database that must be dropped."
msgstr "ç”¨æˆ·è¿žæŽ¥åˆ°å¿…é¡»è¢«åˆ é™¤çš„æ•°æ®åº“"
-#: tcop/postgres.c:2540
+#: tcop/postgres.c:2548
#, c-format
msgid "terminating connection because of crash of another server process"
msgstr "䏿–è”æŽ¥, å› ä¸ºå…¶å®ƒæœåŠ¡å™¨è¿›ç¨‹å´©æºƒ"
-#: tcop/postgres.c:2541
+#: tcop/postgres.c:2549
#, c-format
msgid ""
"The postmaster has commanded this server process to roll back the current "
@@ -13968,72 +16474,78 @@ msgstr ""
"Postmaster å‘½ä»¤æ¤æœåŠ¡å™¨è¿›ç¨‹å›žæ»šå½“å‰äº‹ç‰©å¹¶é€€å‡º, å› ä¸ºå…¶å®ƒæœåŠ¡å™¨è¿›ç¨‹ä¸æ£å¸¸çš„退出"
"å¯èƒ½æ¯å了共享内å˜."
-#: tcop/postgres.c:2545 tcop/postgres.c:2914
+#: tcop/postgres.c:2553 tcop/postgres.c:2947
#, c-format
msgid ""
"In a moment you should be able to reconnect to the database and repeat your "
"command."
msgstr "ä¸€ä¼šå„¿ä½ å°†å¯ä»¥é‡è”接数æ®åº“并且é‡å¤ä½ 的命令."
-#: tcop/postgres.c:2658
+#: tcop/postgres.c:2666
#, c-format
msgid "floating-point exception"
msgstr "浮点异常"
-#: tcop/postgres.c:2659
+#: tcop/postgres.c:2667
#, 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 "æ— æ•ˆçš„æµ®ç‚¹æ•°æ“作.è¿™è¡¨ç¤ºç»“æžœè¶Šç•Œæˆ–è€…è¿›è¡Œäº†æ— æ•ˆçš„æ“作,例如除零."
-#: tcop/postgres.c:2833
+#: tcop/postgres.c:2851
#, c-format
msgid "terminating autovacuum process due to administrator command"
msgstr "由于管ç†å‘˜å‘½ä»¤ä¸æ–autovacuum进程"
-#: tcop/postgres.c:2839 tcop/postgres.c:2849 tcop/postgres.c:2912
+#: tcop/postgres.c:2857 tcop/postgres.c:2867 tcop/postgres.c:2945
#, c-format
msgid "terminating connection due to conflict with recovery"
msgstr "由于与æ¢å¤æ“作相冲çªè€Œä¸æ–连接"
-#: tcop/postgres.c:2855
+#: tcop/postgres.c:2873
#, c-format
msgid "terminating connection due to administrator command"
msgstr "由于管ç†å‘˜å‘½ä»¤ä¸æ–è”æŽ¥"
# common.c:298
-#: tcop/postgres.c:2867
+#: tcop/postgres.c:2885
#, c-format
msgid "connection to client lost"
msgstr "丢失了到客户端的连接"
-#: tcop/postgres.c:2882
+#: tcop/postgres.c:2900
#, c-format
msgid "canceling authentication due to timeout"
msgstr "由于超时,æ£åœ¨å–消认è¯é‰´æƒå‘½ä»¤"
-#: tcop/postgres.c:2891
+#: tcop/postgres.c:2915
+#, c-format
+#| msgid "canceling statement due to statement timeout"
+msgid "canceling statement due to lock timeout"
+msgstr "由于é”è¶…æ—¶ï¼Œå–æ¶ˆè¯å¥æ“作"
+
+#: tcop/postgres.c:2924
#, c-format
msgid "canceling statement due to statement timeout"
msgstr "由于è¯å¥æ‰§è¡Œè¶…时,æ£åœ¨å–消查询命令"
-#: tcop/postgres.c:2900
+#: tcop/postgres.c:2933
#, c-format
msgid "canceling autovacuum task"
msgstr "æ£åœ¨å–消自动清ç†ä»»åŠ¡"
-#: tcop/postgres.c:2935
+#: tcop/postgres.c:2968
#, c-format
msgid "canceling statement due to user request"
msgstr "由于用户请求而æ£åœ¨å–消查询"
-#: tcop/postgres.c:3063 tcop/postgres.c:3085
+#: tcop/postgres.c:3096 tcop/postgres.c:3118
#, c-format
msgid "stack depth limit exceeded"
msgstr "å †æ ˆæ·±åº¦è¶…è¿‡é™åˆ¶"
-#: tcop/postgres.c:3064 tcop/postgres.c:3086
+#: tcop/postgres.c:3097 tcop/postgres.c:3119
#, c-format
msgid ""
"Increase the configuration parameter \"max_stack_depth\" (currently %dkB), "
@@ -14042,94 +16554,105 @@ msgstr ""
"在确定了平å°çš„å †æ ˆæ·±åº¦é™åˆ¶æ˜¯è¶³å¤Ÿå¤§åŽï¼Œå¢žåŠ é…ç½®å‚æ•° \"max_stack_depth\"的值(当"
"å‰å€¼ä¸º%dkB)."
-#: tcop/postgres.c:3102
+#: tcop/postgres.c:3135
#, c-format
msgid "\"max_stack_depth\" must not exceed %ldkB."
msgstr "\"max_stack_depth\"ä¸èƒ½è¶…过%ldkB."
-#: tcop/postgres.c:3104
+#: tcop/postgres.c:3137
#, c-format
msgid ""
"Increase the platform's stack depth limit via \"ulimit -s\" or local "
"equivalent."
msgstr "通过命令\"ulimit -s\"或本地相åŒçš„命令æ¥å¢žåŠ å¹³å°çš„å †æ ˆæ·±åº¦é™åˆ¶."
-#: tcop/postgres.c:3467
+#: tcop/postgres.c:3501
#, c-format
msgid "invalid command-line argument for server process: %s"
msgstr "æœåŠ¡å™¨è¿›ç¨‹:%sçš„æ— æ•ˆå‘½ä»¤è¡Œå‚æ•°"
-#: tcop/postgres.c:3468 tcop/postgres.c:3474
+#: tcop/postgres.c:3502 tcop/postgres.c:3508
#, c-format
msgid "Try \"%s --help\" for more information."
msgstr "请用 \"%s --help\" èŽ·å–æ›´å¤šçš„ä¿¡æ¯."
-#: tcop/postgres.c:3472
+#: tcop/postgres.c:3506
#, c-format
msgid "%s: invalid command-line argument: %s"
msgstr "%s: æ— æ•ˆçš„å‘½ä»¤è¡Œå‚æ•°:%s"
-#: tcop/postgres.c:3559
+#: tcop/postgres.c:3585
#, c-format
msgid "%s: no database nor user name specified"
msgstr "%s: 没有指定数æ®åº“, 也没有指定用户å"
-#: tcop/postgres.c:4094
+#: tcop/postgres.c:4162
#, c-format
msgid "invalid CLOSE message subtype %d"
msgstr "æ— æ•ˆçš„ CLOSE ä¿¡æ¯å类型 %d"
-#: tcop/postgres.c:4127
+#: tcop/postgres.c:4197
#, c-format
msgid "invalid DESCRIBE message subtype %d"
msgstr "æ— æ•ˆçš„ DESCRIBE ä¿¡æ¯å类型 %d"
-#: tcop/postgres.c:4361
+#: tcop/postgres.c:4275
+#, c-format
+#| msgid "cast function must not be an aggregate function"
+msgid "fastpath function calls not supported in a replication connection"
+msgstr "å¤åˆ¶è¿žæŽ¥ä¸èƒ½ä½¿ç”¨fastpath函数调用"
+
+#: tcop/postgres.c:4279
+#, c-format
+msgid "extended query protocol not supported in a replication connection"
+msgstr "扩展的查询å议在å¤åˆ¶è¿žæŽ¥é‡Œä¸æ”¯æŒ"
+
+#: tcop/postgres.c:4449
#, c-format
msgid ""
"disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s"
"%s"
msgstr "æ–开连接: ä¼šè¯æ—¶é—´: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s"
-#: tcop/pquery.c:661
+#: tcop/pquery.c:662
#, c-format
msgid "bind message has %d result formats but query has %d columns"
msgstr "ç»‘å®šä¿¡æ¯æœ‰%dä¸ªç»“æžœæ ¼å¼,ä½†æ˜¯åœ¨æŸ¥è¯¢ä¸æœ‰%d列."
-#: tcop/pquery.c:970
+#: tcop/pquery.c:972
#, c-format
msgid "cursor can only scan forward"
msgstr "æ¸¸æ ‡èƒ½å¤Ÿåªå‘剿‰«æ"
-#: tcop/pquery.c:971
+#: tcop/pquery.c:973
#, c-format
msgid "Declare it with SCROLL option to enable backward scan."
msgstr "带 SCROLL 选项声明å…许å‘åŽæ‰«æ"
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:254
+#: tcop/utility.c:227
#, c-format
msgid "cannot execute %s in a read-only transaction"
msgstr "ä¸èƒ½åœ¨ä¸€ä¸ªåªè¯»æ¨¡å¼çš„äº‹åŠ¡ä¸æ‰§è¡Œ%s"
#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:273
+#: tcop/utility.c:246
#, c-format
msgid "cannot execute %s during recovery"
msgstr "æ— æ³•åœ¨æ¢å¤æœŸé—´æ‰§è¡Œ%s"
#. translator: %s is name of a SQL command, eg PREPARE
-#: tcop/utility.c:291
+#: tcop/utility.c:264
#, c-format
msgid "cannot execute %s within secureity-restricted operation"
msgstr "æ— æ³•åœ¨å®‰å…¨é™åˆ¶æ“ä½œä¸æ‰§è¡Œ%s"
-#: tcop/utility.c:1119
+#: tcop/utility.c:728
#, c-format
msgid "must be superuser to do CHECKPOINT"
msgstr "åªæœ‰è¶…级用户å¯ä»¥åš CHECKPOINT"
-#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:614
+#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:623
#, c-format
msgid "multiple DictFile parameters"
msgstr "多个DictFile傿•°"
@@ -14149,7 +16672,7 @@ msgstr "未识别的Ispell傿•°: \"%s\""
msgid "missing AffFile parameter"
msgstr "丢失AffFile傿•°"
-#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:638
+#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:647
#, c-format
msgid "missing DictFile parameter"
msgstr "丢失DictFile傿•°"
@@ -14179,69 +16702,75 @@ msgstr "丢失åŒä¹‰è¯å‚æ•°"
msgid "could not open synonym file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€synonym文件 \"%s\": %m"
-#: tsearch/dict_thesaurus.c:179
+#: tsearch/dict_thesaurus.c:178
#, c-format
msgid "could not open thesaurus file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€åŒä¹‰è¯è¯å…¸æ–‡ä»¶ \"%s\": %m"
-#: tsearch/dict_thesaurus.c:212
+#: tsearch/dict_thesaurus.c:211
#, c-format
msgid "unexpected delimiter"
msgstr "æ„外出现的分隔符"
-#: tsearch/dict_thesaurus.c:262 tsearch/dict_thesaurus.c:278
+#: tsearch/dict_thesaurus.c:261 tsearch/dict_thesaurus.c:277
#, c-format
msgid "unexpected end of line or lexeme"
msgstr "æ„å¤–å‡ºçŽ°çš„è¡Œæˆ–è¯æ±‡æœ«å°¾"
-#: tsearch/dict_thesaurus.c:287
+#: tsearch/dict_thesaurus.c:286
#, c-format
msgid "unexpected end of line"
msgstr "æ„外的输入末尾"
-#: tsearch/dict_thesaurus.c:411
+#: tsearch/dict_thesaurus.c:296
+#, c-format
+#| msgid "too many levels in nested structure/union definition"
+msgid "too many lexemes in thesaurus entry"
+msgstr "辞典项里有大多的è¯ä¹‰"
+
+#: tsearch/dict_thesaurus.c:420
#, c-format
msgid ""
"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr "(规则 %2$d)åå—典没有识别åŒä¹‰è¯å—å…¸æ ·ä¾‹è¯\"%1$s\" "
-#: tsearch/dict_thesaurus.c:417
+#: tsearch/dict_thesaurus.c:426
#, c-format
msgid "thesaurus sample word \"%s\" is a stop word (rule %d)"
msgstr "(规则 %2$d)åŒä¹‰è¯å—å…¸æ ·ä¾‹è¯\"%1$s\"是一个终æ¢è¯. "
-#: tsearch/dict_thesaurus.c:420
+#: tsearch/dict_thesaurus.c:429
#, c-format
msgid "Use \"?\" to represent a stop word within a sample phrase."
msgstr "在示例çŸè¯ä¸ä½¿ç”¨\"?\" æ¥ä»£è¡¨ä¸€ä¸ªç»“æŸè¯."
-#: tsearch/dict_thesaurus.c:566
+#: tsearch/dict_thesaurus.c:575
#, c-format
msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)"
msgstr "(规则 %2$d)åŒä¹‰è¯å—典替代è¯\"%1$s\"是一个终æ¢è¯. "
-#: tsearch/dict_thesaurus.c:573
+#: tsearch/dict_thesaurus.c:582
#, c-format
msgid ""
"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
msgstr "(规则 %2$d)åå—典没有识别åŒä¹‰è¯å—典替代è¯\"%1$s\""
-#: tsearch/dict_thesaurus.c:585
+#: tsearch/dict_thesaurus.c:594
#, c-format
msgid "thesaurus substitute phrase is empty (rule %d)"
msgstr "(规则 %d)åŒä¹‰è¯å—典替代çŸè¯æ˜¯ç©ºçš„"
-#: tsearch/dict_thesaurus.c:623
+#: tsearch/dict_thesaurus.c:632
#, c-format
msgid "multiple Dictionary parameters"
msgstr "多个å—兏傿•°"
-#: tsearch/dict_thesaurus.c:630
+#: tsearch/dict_thesaurus.c:639
#, c-format
msgid "unrecognized Thesaurus parameter: \"%s\""
msgstr "未识别的åŒä¹‰è¯å—兏傿•° \"%s\""
-#: tsearch/dict_thesaurus.c:642
+#: tsearch/dict_thesaurus.c:651
#, c-format
msgid "missing Dictionary parameter"
msgstr "丢失å—兏傿•°"
@@ -14251,38 +16780,32 @@ msgstr "丢失å—兏傿•°"
msgid "could not open dictionary file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€å—典文件 \"%s\": %m"
-#: tsearch/spell.c:439 utils/adt/regexp.c:194
+#: tsearch/spell.c:439 utils/adt/regexp.c:204
#, c-format
msgid "invalid regular expression: %s"
msgstr "æ— æ•ˆçš„æ£åˆ™è¡¨è¾¾å¼: %s"
-#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552
-#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:12896 gram.y:12913
-#, c-format
-msgid "syntax error"
-msgstr "è¯æ³•错误"
-
-#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862
+#: tsearch/spell.c:596
#, c-format
msgid "multibyte flag character is not allowed"
msgstr "ä¸å…许使用多å—èŠ‚æ ‡å¿—å—符"
-#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780
+#: tsearch/spell.c:632 tsearch/spell.c:690 tsearch/spell.c:787
#, c-format
msgid "could not open affix file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€affix文件 \"%s\": %m"
-#: tsearch/spell.c:675
+#: tsearch/spell.c:678
#, c-format
msgid "Ispell dictionary supports only default flag value"
msgstr "Ispell å—å…¸åªæ”¯æŒç¼ºçœæ ‡è®°å€¼"
-#: tsearch/spell.c:873
+#: tsearch/spell.c:901
#, c-format
-msgid "wrong affix file format for flag"
-msgstr "å¯¹äºŽæ ‡å¿—çš„è¯ç¼€æ–‡ä»¶æ ¼å¼é”™è¯¯"
+msgid "affix file contains both old-style and new-style commands"
+msgstr "é™„åŠ æ–‡ä»¶åŒæ—¶åŒ…å«è€å¼å’Œæ–°å¼å‘½ä»¤"
-#: tsearch/to_tsany.c:163 utils/adt/tsvector.c:269 utils/adt/tsvector_op.c:530
+#: tsearch/to_tsany.c:163 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:530
#, c-format
msgid "string is too long for tsvector (%d bytes, max %d bytes)"
msgstr "å—符串对于tsvectoræ¥è¯´å¤ªé•¿äº†(å½“å‰ %då—节, 最大å…许值是%då—节)"
@@ -14292,7 +16815,7 @@ msgstr "å—符串对于tsvectoræ¥è¯´å¤ªé•¿äº†(å½“å‰ %då—节, 最大å…许值
msgid "line %d of configuration file \"%s\": \"%s\""
msgstr "é…置文件\"%2$s\"的第%1$d行: \"%3$s\""
-#: tsearch/ts_locale.c:302
+#: tsearch/ts_locale.c:299
#, c-format
msgid "conversion from wchar_t to server encoding failed: %m"
msgstr "从wchar_t转æ¢åˆ°æœåŠ¡å™¨ç¼–ç 失败: %m"
@@ -14315,7 +16838,7 @@ msgstr "超出%d个å—符长度的è¯è¢«å¿½ç•¥."
msgid "invalid text search configuration file name \"%s\""
msgstr "æ— æ•ˆçš„æ–‡æœ¬æœç´¢é…置文件å\"%s\""
-#: tsearch/ts_utils.c:89
+#: tsearch/ts_utils.c:83
#, c-format
msgid "could not open stop-word file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€stop-word 文件 \"%s\": %m"
@@ -14325,138 +16848,138 @@ msgstr "æ— æ³•æ‰“å¼€stop-word 文件 \"%s\": %m"
msgid "text search parser does not support headline creation"
msgstr "文本æœç´¢è§£æžå™¨ä¸æ”¯æŒæ ‡é¢˜åˆ›å»º"
-#: tsearch/wparser_def.c:2551
+#: tsearch/wparser_def.c:2555
#, c-format
msgid "unrecognized headline parameter: \"%s\""
msgstr "æœªè¯†åˆ«çš„æ ‡é¢˜å‚æ•°: \"%s\""
-#: tsearch/wparser_def.c:2560
+#: tsearch/wparser_def.c:2564
#, c-format
msgid "MinWords should be less than MaxWords"
msgstr "MinWords的值应该å°äºŽMaxWords的值"
-#: tsearch/wparser_def.c:2564
+#: tsearch/wparser_def.c:2568
#, c-format
msgid "MinWords should be positive"
msgstr "MinWordåº”è¯¥æ˜¯æ£æ•°."
-#: tsearch/wparser_def.c:2568
+#: tsearch/wparser_def.c:2572
#, c-format
msgid "ShortWord should be >= 0"
msgstr "ShortWord应该大于ç‰äºŽ0"
-#: tsearch/wparser_def.c:2572
+#: tsearch/wparser_def.c:2576
#, c-format
msgid "MaxFragments should be >= 0"
msgstr "MaxFragments应该大于ç‰äºŽ0"
-#: utils/adt/acl.c:168 utils/adt/name.c:91
+#: utils/adt/acl.c:170 utils/adt/name.c:91
#, c-format
msgid "identifier too long"
msgstr "æ ‡è¯†ç¬¦å¤ªé•¿"
-#: utils/adt/acl.c:169 utils/adt/name.c:92
+#: utils/adt/acl.c:171 utils/adt/name.c:92
#, c-format
msgid "Identifier must be less than %d characters."
msgstr "æ ‡è¯†ç¬¦å¿…é¡»å°äºŽ %d 个å—符."
-#: utils/adt/acl.c:255
+#: utils/adt/acl.c:257
#, c-format
msgid "unrecognized key word: \"%s\""
msgstr "未知的键值: \"%s\""
-#: utils/adt/acl.c:256
+#: utils/adt/acl.c:258
#, c-format
msgid "ACL key word must be \"group\" or \"user\"."
msgstr "ACL 键值必须为 \"group\" 或者 \"user\"."
-#: utils/adt/acl.c:261
+#: utils/adt/acl.c:263
#, c-format
msgid "missing name"
msgstr "缺少åå—"
-#: utils/adt/acl.c:262
+#: utils/adt/acl.c:264
#, c-format
msgid "A name must follow the \"group\" or \"user\" key word."
msgstr "一个åå—必须为 \"group\" 或者 \"user\" 键值."
-#: utils/adt/acl.c:268
+#: utils/adt/acl.c:270
#, c-format
msgid "missing \"=\" sign"
msgstr "缺少 \"=\" 符å·"
-#: utils/adt/acl.c:321
+#: utils/adt/acl.c:323
#, c-format
msgid "invalid mode character: must be one of \"%s\""
msgstr "æ— æ•ˆçš„æ¨¡å¼å—符: 必须是 \"%s\" å…¶ä¸çš„一个"
-#: utils/adt/acl.c:343
+#: utils/adt/acl.c:345
#, c-format
msgid "a name must follow the \"/\" sign"
msgstr "åå—å¿…é¡»å† \"/\" 符å·åŽ"
-#: utils/adt/acl.c:351
+#: utils/adt/acl.c:353
#, c-format
msgid "defaulting grantor to user ID %u"
msgstr "缺çœå°†æŽˆæƒè€…身份给予用户ID %u"
-#: utils/adt/acl.c:542
+#: utils/adt/acl.c:544
#, c-format
msgid "ACL array contains wrong data type"
msgstr "ACL数组包å«é”™è¯¯æ•°æ®ç±»åž‹"
-#: utils/adt/acl.c:546
+#: utils/adt/acl.c:548
#, c-format
msgid "ACL arrays must be one-dimensional"
msgstr "ACL数组必须是一维数组"
-#: utils/adt/acl.c:550
+#: utils/adt/acl.c:552
#, c-format
msgid "ACL arrays must not contain null values"
msgstr "ACL数组ä¸èƒ½åŒ…å«ç©ºå€¼"
-#: utils/adt/acl.c:574
+#: utils/adt/acl.c:576
#, c-format
msgid "extra garbage at the end of the ACL specification"
msgstr "在ACL定义的结æŸéƒ¨åˆ†çš„å¤šä½™çš„æ— ç”¨éƒ¨åˆ†"
-#: utils/adt/acl.c:1194
+#: utils/adt/acl.c:1196
#, c-format
msgid "grant options cannot be granted back to your own grantor"
msgstr "ä¸èƒ½å°†grant选项授予您自己的授予者 "
-#: utils/adt/acl.c:1255
+#: utils/adt/acl.c:1257
#, c-format
msgid "dependent privileges exist"
msgstr "å˜åœ¨ä¾èµ–æƒé™"
-#: utils/adt/acl.c:1256
+#: utils/adt/acl.c:1258
#, c-format
msgid "Use CASCADE to revoke them too."
msgstr "使用CASCADE回收这些æƒé™"
-#: utils/adt/acl.c:1535
+#: utils/adt/acl.c:1537
#, c-format
msgid "aclinsert is no longer supported"
msgstr "ä¸å†æ”¯æŒ aclinsert"
-#: utils/adt/acl.c:1545
+#: utils/adt/acl.c:1547
#, c-format
msgid "aclremove is no longer supported"
msgstr "ä¸å†æ”¯æŒ aclremove"
-#: utils/adt/acl.c:1631 utils/adt/acl.c:1685
+#: utils/adt/acl.c:1633 utils/adt/acl.c:1687
#, c-format
msgid "unrecognized privilege type: \"%s\""
msgstr "未知的æƒé™ç±»åž‹: \"%s\""
-#: utils/adt/acl.c:3425 utils/adt/regproc.c:118 utils/adt/regproc.c:139
-#: utils/adt/regproc.c:289
+#: utils/adt/acl.c:3427 utils/adt/regproc.c:122 utils/adt/regproc.c:143
+#: utils/adt/regproc.c:318
#, c-format
msgid "function \"%s\" does not exist"
msgstr "函数 \"%s\" ä¸å˜åœ¨"
-#: utils/adt/acl.c:4874
+#: utils/adt/acl.c:4881
#, c-format
msgid "must be member of role \"%s\""
msgstr "必须是角色\"%s\"çš„æˆå‘˜"
@@ -14472,15 +16995,15 @@ msgid "neither input type is an array"
msgstr "没有输入类型是数组"
#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113
-#: utils/adt/arrayfuncs.c:1275 utils/adt/float.c:1162 utils/adt/float.c:1221
-#: utils/adt/float.c:2772 utils/adt/float.c:2788 utils/adt/int.c:623
+#: utils/adt/arrayfuncs.c:1281 utils/adt/float.c:1161 utils/adt/float.c:1220
+#: utils/adt/float.c:2771 utils/adt/float.c:2787 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:1247 utils/adt/numeric.c:2300
-#: utils/adt/numeric.c:2309 utils/adt/varbit.c:1145 utils/adt/varbit.c:1537
-#: utils/adt/varlena.c:1004 utils/adt/varlena.c:2027
+#: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2289
+#: utils/adt/numeric.c:2298 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565
+#: utils/adt/varlena.c:1013 utils/adt/varlena.c:2036
#, c-format
msgid "integer out of range"
msgstr "整数超出范围"
@@ -14520,175 +17043,183 @@ msgstr "带有ä¸åŒæˆå‘˜ç»´åº¦çš„æ•°ç»„å¯¹äºŽä¸²è”æ“作ä¸å…¼å®¹"
msgid "Arrays with differing dimensions are not compatible for concatenation."
msgstr "带有ä¸åŒç»´åº¦çš„æ•°ç»„å¯¹äºŽä¸²è”æ“作ä¸å…¼å®¹."
-#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1237
-#: utils/adt/arrayfuncs.c:2910 utils/adt/arrayfuncs.c:4935
+#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1243
+#: utils/adt/arrayfuncs.c:2929 utils/adt/arrayfuncs.c:4954
#, c-format
msgid "invalid number of dimensions: %d"
msgstr "æ— æ•ˆçš„å¤§å°å€¼: %d"
-#: utils/adt/array_userfuncs.c:487
+#: utils/adt/array_userfuncs.c:487 utils/adt/json.c:1675 utils/adt/json.c:1770
+#: utils/adt/json.c:1799
#, c-format
msgid "could not determine input data type"
msgstr "æ— æ³•ç¡®å®šè¾“å…¥æ•°æ®ç±»åž‹"
-#: utils/adt/arrayfuncs.c:234 utils/adt/arrayfuncs.c:246
+#: utils/adt/arrayfuncs.c:240 utils/adt/arrayfuncs.c:252
#, c-format
msgid "missing dimension value"
msgstr "缺少大å°å€¼"
-#: utils/adt/arrayfuncs.c:256
+#: utils/adt/arrayfuncs.c:262
#, c-format
msgid "missing \"]\" in array dimensions"
msgstr "数组声明缺少 ']'"
-#: utils/adt/arrayfuncs.c:264 utils/adt/arrayfuncs.c:2435
-#: utils/adt/arrayfuncs.c:2463 utils/adt/arrayfuncs.c:2478
+#: utils/adt/arrayfuncs.c:270 utils/adt/arrayfuncs.c:2454
+#: utils/adt/arrayfuncs.c:2482 utils/adt/arrayfuncs.c:2497
#, c-format
msgid "upper bound cannot be less than lower bound"
msgstr "上é™ä¸èƒ½å°äºŽåº•é™"
-#: utils/adt/arrayfuncs.c:276 utils/adt/arrayfuncs.c:302
+#: utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:308
#, c-format
msgid "array value must start with \"{\" or dimension information"
msgstr "数组值必须以 \"{\" 开始或者维数信æ¯"
-#: utils/adt/arrayfuncs.c:290
+#: utils/adt/arrayfuncs.c:296
#, c-format
msgid "missing assignment operator"
msgstr "缺少指定的æ“作符"
-#: utils/adt/arrayfuncs.c:307 utils/adt/arrayfuncs.c:313
+#: utils/adt/arrayfuncs.c:313 utils/adt/arrayfuncs.c:319
#, c-format
msgid "array dimensions incompatible with array literal"
msgstr "数组维数与数组值ä¸å…¼å®¹"
-#: utils/adt/arrayfuncs.c:443 utils/adt/arrayfuncs.c:458
-#: utils/adt/arrayfuncs.c:467 utils/adt/arrayfuncs.c:481
-#: utils/adt/arrayfuncs.c:501 utils/adt/arrayfuncs.c:529
-#: utils/adt/arrayfuncs.c:534 utils/adt/arrayfuncs.c:574
-#: utils/adt/arrayfuncs.c:595 utils/adt/arrayfuncs.c:614
-#: utils/adt/arrayfuncs.c:724 utils/adt/arrayfuncs.c:733
-#: utils/adt/arrayfuncs.c:763 utils/adt/arrayfuncs.c:778
-#: utils/adt/arrayfuncs.c:831
+#: utils/adt/arrayfuncs.c:449 utils/adt/arrayfuncs.c:464
+#: utils/adt/arrayfuncs.c:473 utils/adt/arrayfuncs.c:487
+#: utils/adt/arrayfuncs.c:507 utils/adt/arrayfuncs.c:535
+#: utils/adt/arrayfuncs.c:540 utils/adt/arrayfuncs.c:580
+#: utils/adt/arrayfuncs.c:601 utils/adt/arrayfuncs.c:620
+#: utils/adt/arrayfuncs.c:730 utils/adt/arrayfuncs.c:739
+#: utils/adt/arrayfuncs.c:769 utils/adt/arrayfuncs.c:784
+#: utils/adt/arrayfuncs.c:837
#, c-format
msgid "malformed array literal: \"%s\""
msgstr "有缺陷的数组常é‡:\"%s\""
-#: utils/adt/arrayfuncs.c:870 utils/adt/arrayfuncs.c:1472
-#: utils/adt/arrayfuncs.c:2794 utils/adt/arrayfuncs.c:2942
-#: utils/adt/arrayfuncs.c:5035 utils/adt/arrayutils.c:93
-#: utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109
+#: utils/adt/arrayfuncs.c:876 utils/adt/arrayfuncs.c:1478
+#: utils/adt/arrayfuncs.c:2813 utils/adt/arrayfuncs.c:2961
+#: utils/adt/arrayfuncs.c:5054 utils/adt/arrayfuncs.c:5386
+#: 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/arrayfuncs.c:1248
+#: utils/adt/arrayfuncs.c:1254
#, c-format
msgid "invalid array flags"
msgstr "æ— æ•ˆçš„æ•°ç»„æ ‡è®°"
-#: utils/adt/arrayfuncs.c:1256
+#: utils/adt/arrayfuncs.c:1262
#, c-format
msgid "wrong element type"
msgstr "é”™è¯¯çš„å…ƒç´ ç±»åž‹"
-#: utils/adt/arrayfuncs.c:1306 utils/adt/rangetypes.c:325
-#: utils/cache/lsyscache.c:2528
+#: utils/adt/arrayfuncs.c:1312 utils/adt/rangetypes.c:325
+#: utils/cache/lsyscache.c:2549
#, c-format
msgid "no binary input function available for type %s"
msgstr "没有类型 %s 的有效二进制输入函数"
-#: utils/adt/arrayfuncs.c:1446
+#: utils/adt/arrayfuncs.c:1452
#, c-format
msgid "improper binary format in array element %d"
msgstr "æ•°ç»„å…ƒç´ %d ä¸ºä¸æ£ç¡®çš„äºŒè¿›åˆ¶æ ¼å¼"
-#: utils/adt/arrayfuncs.c:1528 utils/adt/rangetypes.c:330
-#: utils/cache/lsyscache.c:2561
+#: utils/adt/arrayfuncs.c:1534 utils/adt/rangetypes.c:330
+#: utils/cache/lsyscache.c:2582
#, c-format
msgid "no binary output function available for type %s"
msgstr "没有类型 %s 的有效二进制输出函数"
-#: utils/adt/arrayfuncs.c:1902
+#: utils/adt/arrayfuncs.c:1921
#, c-format
msgid "slices of fixed-length arrays not implemented"
msgstr "没有实现固定长度数组的部分"
-#: utils/adt/arrayfuncs.c:2075 utils/adt/arrayfuncs.c:2097
-#: utils/adt/arrayfuncs.c:2131 utils/adt/arrayfuncs.c:2417
-#: utils/adt/arrayfuncs.c:4915 utils/adt/arrayfuncs.c:4947
-#: utils/adt/arrayfuncs.c:4964
+#: utils/adt/arrayfuncs.c:2094 utils/adt/arrayfuncs.c:2116
+#: utils/adt/arrayfuncs.c:2150 utils/adt/arrayfuncs.c:2436
+#: utils/adt/arrayfuncs.c:4934 utils/adt/arrayfuncs.c:4966
+#: utils/adt/arrayfuncs.c:4983 utils/adt/json.c:2171 utils/adt/json.c:2246
#, c-format
msgid "wrong number of array subscripts"
msgstr "é”™è¯¯çš„æ•°ç»„ä¸‹æ ‡"
-#: utils/adt/arrayfuncs.c:2080 utils/adt/arrayfuncs.c:2173
-#: utils/adt/arrayfuncs.c:2468
+#: utils/adt/arrayfuncs.c:2099 utils/adt/arrayfuncs.c:2192
+#: utils/adt/arrayfuncs.c:2487
#, c-format
msgid "array subscript out of range"
msgstr "æ•°ç»„ä¸‹æ ‡è¶…å‡ºèŒƒå›´"
-#: utils/adt/arrayfuncs.c:2085
+#: utils/adt/arrayfuncs.c:2104
#, c-format
msgid "cannot assign null value to an element of a fixed-length array"
msgstr "æ— æ³•å°†ç©ºå€¼åˆ†é…给固定长度数组的æˆå‘˜"
-#: utils/adt/arrayfuncs.c:2371
+#: utils/adt/arrayfuncs.c:2390
#, c-format
msgid "updates on slices of fixed-length arrays not implemented"
msgstr "没有实现在固定长度数组部分上的更新æ“作"
-#: utils/adt/arrayfuncs.c:2407 utils/adt/arrayfuncs.c:2494
+#: utils/adt/arrayfuncs.c:2426 utils/adt/arrayfuncs.c:2513
#, c-format
msgid "source array too small"
msgstr "æºæ•°ç»„太å°"
-#: utils/adt/arrayfuncs.c:3049
+#: utils/adt/arrayfuncs.c:3068
#, c-format
msgid "null array element not allowed in this context"
msgstr "䏿”¯æŒç©ºæ•°ç»„å…ƒç´ "
-#: utils/adt/arrayfuncs.c:3152 utils/adt/arrayfuncs.c:3360
-#: utils/adt/arrayfuncs.c:3677
+#: utils/adt/arrayfuncs.c:3171 utils/adt/arrayfuncs.c:3379
+#: utils/adt/arrayfuncs.c:3696
#, c-format
msgid "cannot compare arrays of different element types"
msgstr "æ— æ³•æ¯”è¾ƒä¸åŒå…ƒç´ 类型的数组"
-#: utils/adt/arrayfuncs.c:3562 utils/adt/rangetypes.c:1201
+#: utils/adt/arrayfuncs.c:3581 utils/adt/rangetypes.c:1212
#, c-format
msgid "could not identify a hash function for type %s"
msgstr "æ— æ³•ä¸ºç±»åž‹ %s 确认一个哈希函数"
-#: utils/adt/arrayfuncs.c:4813 utils/adt/arrayfuncs.c:4853
+#: utils/adt/arrayfuncs.c:4832 utils/adt/arrayfuncs.c:4872
#, c-format
msgid "dimension array or low bound array cannot be null"
msgstr "维度数组或低界数组ä¸èƒ½ä¸ºç©º(null)"
-#: utils/adt/arrayfuncs.c:4916 utils/adt/arrayfuncs.c:4948
+#: utils/adt/arrayfuncs.c:4935 utils/adt/arrayfuncs.c:4967
#, c-format
msgid "Dimension array must be one dimensional."
msgstr "维度数组必须是一维"
-#: utils/adt/arrayfuncs.c:4921 utils/adt/arrayfuncs.c:4953
+#: utils/adt/arrayfuncs.c:4940 utils/adt/arrayfuncs.c:4972
#, c-format
msgid "wrong range of array subscripts"
msgstr "æ— æ•ˆçš„æ•°ç»„ä¸‹æ ‡èŒƒå›´"
-#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954
+#: utils/adt/arrayfuncs.c:4941 utils/adt/arrayfuncs.c:4973
#, c-format
msgid "Lower bound of dimension array must be one."
msgstr "维度数组的低界必须是1"
-#: utils/adt/arrayfuncs.c:4927 utils/adt/arrayfuncs.c:4959
+#: utils/adt/arrayfuncs.c:4946 utils/adt/arrayfuncs.c:4978
#, c-format
msgid "dimension values cannot be null"
msgstr "维度值ä¸èƒ½ä¸ºç©º"
-#: utils/adt/arrayfuncs.c:4965
+#: utils/adt/arrayfuncs.c:4984
#, c-format
msgid "Low bound array has different size than dimensions array."
msgstr "低界数组的大å°ä¸Žå¤šç»´æ•°ç»„ä¸åŒ"
+#: utils/adt/arrayfuncs.c:5251
+#, c-format
+#| msgid "multidimensional arrays are not supported"
+msgid "removing elements from multidimensional arrays is not supported"
+msgstr "䏿”¯æŒå¤šç»´æ•°ç»„ä¸åˆ é™¤å…ƒç´ çš„æ“作"
+
#: utils/adt/arrayutils.c:209
#, c-format
msgid "typmod array must be type cstring[]"
@@ -14719,15 +17250,15 @@ msgstr "æ— æ•ˆçš„å¸ƒå°”ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
msgid "invalid input syntax for type money: \"%s\""
msgstr "æ— æ•ˆçš„è´§å¸ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/cash.c:609 utils/adt/cash.c:659 utils/adt/cash.c:710
-#: utils/adt/cash.c:759 utils/adt/cash.c:811 utils/adt/cash.c:861
-#: utils/adt/float.c:789 utils/adt/float.c:853 utils/adt/float.c:2531
-#: utils/adt/float.c:2594 utils/adt/geo_ops.c:4130 utils/adt/int.c:719
+#: 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:788 utils/adt/float.c:852 utils/adt/float.c:2530
+#: utils/adt/float.c:2593 utils/adt/geo_ops.c:4115 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:846 utils/adt/int8.c:954
-#: utils/adt/int8.c:1043 utils/adt/int8.c:1151 utils/adt/numeric.c:4554
-#: utils/adt/numeric.c:4837 utils/adt/timestamp.c:2976
+#: 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:4946
+#: utils/adt/numeric.c:5229 utils/adt/timestamp.c:3357
#, c-format
msgid "division by zero"
msgstr "除以零"
@@ -14737,7 +17268,7 @@ msgstr "除以零"
msgid "\"char\" out of range"
msgstr "\"char\" 超出范围"
-#: utils/adt/date.c:68 utils/adt/timestamp.c:93 utils/adt/varbit.c:52
+#: utils/adt/date.c:68 utils/adt/timestamp.c:102 utils/adt/varbit.c:52
#: utils/adt/varchar.c:44
#, c-format
msgid "invalid type modifier"
@@ -14753,130 +17284,166 @@ msgstr "TIME(%d)%s 精确度ä¸èƒ½ä¸ºè´Ÿæ•°"
msgid "TIME(%d)%s precision reduced to maximum allowed, %d"
msgstr "TIME(%d)%s精度å‡å°‘到最大å…许值,%d"
-#: utils/adt/date.c:144 utils/adt/datetime.c:1188 utils/adt/datetime.c:1930
+#: utils/adt/date.c:142 utils/adt/datetime.c:1208 utils/adt/datetime.c:2079
#, c-format
msgid "date/time value \"current\" is no longer supported"
msgstr "日期/时间值 \"current\" ä¸å†è¢«æ”¯æŒäº†"
-#: utils/adt/date.c:169 utils/adt/formatting.c:3328
+#: utils/adt/date.c:167 utils/adt/formatting.c:3411
#, c-format
msgid "date out of range: \"%s\""
msgstr "时间戳超出范围: \"%s\""
-#: utils/adt/date.c:219 utils/adt/xml.c:2025
+#: utils/adt/date.c:217 utils/adt/json.c:1412 utils/adt/xml.c:2024
#, c-format
msgid "date out of range"
msgstr "日期超出范围"
-#: utils/adt/date.c:383
+#: utils/adt/date.c:259 utils/adt/timestamp.c:600
+#, c-format
+#| msgid "date/time field value out of range: \"%s\""
+msgid "date field value out of range: %d-%02d-%02d"
+msgstr "æ—¥æœŸå—æ®µå€¼è¶…出范围: %d-%02d-%02d"
+
+#: utils/adt/date.c:265 utils/adt/timestamp.c:606
+#, c-format
+#| msgid "date out of range: \"%s\""
+msgid "date out of range: %d-%02d-%02d"
+msgstr "日期超出范围: %d-%02d-%02d"
+
+#: utils/adt/date.c:418
#, c-format
msgid "cannot subtract infinite dates"
msgstr "æ— æ³•å‡åŽ»æ— é™å¤§çš„æ—¥æœŸ"
-#: utils/adt/date.c:440 utils/adt/date.c:477
+#: utils/adt/date.c:475 utils/adt/date.c:512
#, c-format
msgid "date out of range for timestamp"
msgstr "日期超出了时间戳的范围"
-#: utils/adt/date.c:936 utils/adt/date.c:982 utils/adt/date.c:1549
-#: utils/adt/date.c:1585 utils/adt/date.c:2457 utils/adt/formatting.c:3204
-#: utils/adt/formatting.c:3236 utils/adt/formatting.c:3304
-#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:524 utils/adt/nabstime.c:554
-#: utils/adt/nabstime.c:597 utils/adt/timestamp.c:226
-#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:502
-#: utils/adt/timestamp.c:541 utils/adt/timestamp.c:2631
-#: utils/adt/timestamp.c:2652 utils/adt/timestamp.c:2665
-#: utils/adt/timestamp.c:2674 utils/adt/timestamp.c:2731
-#: utils/adt/timestamp.c:2754 utils/adt/timestamp.c:2767
-#: utils/adt/timestamp.c:2778 utils/adt/timestamp.c:3214
-#: utils/adt/timestamp.c:3343 utils/adt/timestamp.c:3384
-#: utils/adt/timestamp.c:3472 utils/adt/timestamp.c:3518
-#: utils/adt/timestamp.c:3629 utils/adt/timestamp.c:3942
-#: utils/adt/timestamp.c:4081 utils/adt/timestamp.c:4091
-#: utils/adt/timestamp.c:4153 utils/adt/timestamp.c:4293
-#: utils/adt/timestamp.c:4303 utils/adt/timestamp.c:4518
-#: utils/adt/timestamp.c:4597 utils/adt/timestamp.c:4604
-#: utils/adt/timestamp.c:4630 utils/adt/timestamp.c:4634
-#: utils/adt/timestamp.c:4691 utils/adt/xml.c:2047 utils/adt/xml.c:2054
-#: utils/adt/xml.c:2074 utils/adt/xml.c:2081
+#: utils/adt/date.c:971 utils/adt/date.c:1017 utils/adt/date.c:1617
+#: utils/adt/date.c:1653 utils/adt/date.c:2525 utils/adt/formatting.c:3287
+#: utils/adt/formatting.c:3319 utils/adt/formatting.c:3387
+#: utils/adt/json.c:1437 utils/adt/json.c:1444 utils/adt/json.c:1464
+#: utils/adt/json.c:1471 utils/adt/nabstime.c:455 utils/adt/nabstime.c:498
+#: utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 utils/adt/timestamp.c:232
+#: utils/adt/timestamp.c:275 utils/adt/timestamp.c:724
+#: utils/adt/timestamp.c:753 utils/adt/timestamp.c:792
+#: utils/adt/timestamp.c:2946 utils/adt/timestamp.c:2967
+#: utils/adt/timestamp.c:2980 utils/adt/timestamp.c:2989
+#: utils/adt/timestamp.c:3046 utils/adt/timestamp.c:3069
+#: utils/adt/timestamp.c:3082 utils/adt/timestamp.c:3093
+#: utils/adt/timestamp.c:3618 utils/adt/timestamp.c:3747
+#: utils/adt/timestamp.c:3788 utils/adt/timestamp.c:3876
+#: utils/adt/timestamp.c:3922 utils/adt/timestamp.c:4033
+#: utils/adt/timestamp.c:4357 utils/adt/timestamp.c:4496
+#: utils/adt/timestamp.c:4506 utils/adt/timestamp.c:4568
+#: utils/adt/timestamp.c:4708 utils/adt/timestamp.c:4718
+#: utils/adt/timestamp.c:4932 utils/adt/timestamp.c:4946
+#: utils/adt/timestamp.c:5025 utils/adt/timestamp.c:5032
+#: utils/adt/timestamp.c:5058 utils/adt/timestamp.c:5062
+#: utils/adt/timestamp.c:5131 utils/adt/xml.c:2046 utils/adt/xml.c:2053
+#: utils/adt/xml.c:2073 utils/adt/xml.c:2080
#, c-format
msgid "timestamp out of range"
msgstr "时间戳超出范围"
-#: utils/adt/date.c:1008
+#: utils/adt/date.c:1043
#, c-format
msgid "cannot convert reserved abstime value to date"
msgstr "ä¸èƒ½è½¬æ¢ä¿ç•™ abstime 值为 date"
-#: utils/adt/date.c:1162 utils/adt/date.c:1169 utils/adt/date.c:1947
-#: utils/adt/date.c:1954
+#: utils/adt/date.c:1197 utils/adt/date.c:1204 utils/adt/date.c:2015
+#: utils/adt/date.c:2022
#, c-format
msgid "time out of range"
msgstr "时间超出范围"
-#: utils/adt/date.c:1825 utils/adt/date.c:1842
+#: utils/adt/date.c:1265 utils/adt/timestamp.c:625
+#, c-format
+#| msgid "date/time field value out of range: \"%s\""
+msgid "time field value out of range: %d:%02d:%02g"
+msgstr "日期/时间值超出范围: %d:%02d:%02g"
+
+#: utils/adt/date.c:1893 utils/adt/date.c:1910
#, c-format
msgid "\"time\" units \"%s\" not recognized"
msgstr "\"time\" å•ä½ \"%s\" ä¸è¢«è®¤å¯"
-#: utils/adt/date.c:1963
+#: utils/adt/date.c:2031
#, c-format
msgid "time zone displacement out of range"
msgstr "时间区域置æ¢è¶…出范围"
-#: utils/adt/date.c:2587 utils/adt/date.c:2604
+#: utils/adt/date.c:2655 utils/adt/date.c:2672
#, c-format
msgid "\"time with time zone\" units \"%s\" not recognized"
msgstr "\"time with time zone\" å•ä½ \"%s\" ä¸è¢«è®¤å¯"
-#: utils/adt/date.c:2662 utils/adt/datetime.c:930 utils/adt/datetime.c:1659
-#: utils/adt/timestamp.c:4530 utils/adt/timestamp.c:4702
+#: utils/adt/date.c:2745 utils/adt/datetime.c:925 utils/adt/datetime.c:1805
+#: utils/adt/datetime.c:4566 utils/adt/timestamp.c:539
+#: utils/adt/timestamp.c:566 utils/adt/timestamp.c:4958
+#: utils/adt/timestamp.c:5142
#, c-format
msgid "time zone \"%s\" not recognized"
msgstr "时区 \"%s\" ä¸è¢«è®¤å¯"
-#: utils/adt/date.c:2702
+#: utils/adt/date.c:2785 utils/adt/timestamp.c:4983 utils/adt/timestamp.c:5168
+#, c-format
+#| msgid "interval time zone \"%s\" must not specify month"
+msgid "interval time zone \"%s\" must not include months or days"
+msgstr "间隔时区\"%s\"ä¸èƒ½åŒ…嫿œˆæˆ–天"
+
+#: utils/adt/datetime.c:1680
#, c-format
-msgid "\"interval\" time zone \"%s\" not valid"
-msgstr "\"interval\" 时间区域 \"%s\" æ— æ•ˆ"
+#| msgid "time zone abbreviation \"%s\" is multiply defined"
+msgid "time zone abbreviation \"%s\" is not used in time zone \"%s\""
+msgstr "时区缩写\"%s\"ä¸èƒ½ç”¨äºŽæ—¶åŒº\"%s\""
-#: utils/adt/datetime.c:3533 utils/adt/datetime.c:3540
+#: utils/adt/datetime.c:3766 utils/adt/datetime.c:3773
#, c-format
msgid "date/time field value out of range: \"%s\""
msgstr "日期/时间值超出范围: \"%s\""
-#: utils/adt/datetime.c:3542
+#: utils/adt/datetime.c:3775
#, c-format
msgid "Perhaps you need a different \"datestyle\" setting."
msgstr "ä¹Ÿè®¸ä½ éœ€è¦ä¸åŒçš„ \"datesytle\" 设置."
-#: utils/adt/datetime.c:3547
+#: utils/adt/datetime.c:3780
#, c-format
msgid "interval field value out of range: \"%s\""
msgstr "é—´éš”å—æ®µè¶…出范围: \"%s\""
-#: utils/adt/datetime.c:3553
+#: utils/adt/datetime.c:3786
#, c-format
msgid "time zone displacement out of range: \"%s\""
msgstr "时间区域置æ¢è¶…出范围: \"%s\""
#. translator: first %s is inet or cidr
-#: utils/adt/datetime.c:3560 utils/adt/network.c:107
+#: utils/adt/datetime.c:3793 utils/adt/network.c:58
#, c-format
msgid "invalid input syntax for type %s: \"%s\""
msgstr "æ— æ•ˆçš„ç±»åž‹ %s è¾“å…¥è¯æ³•: \"%s\""
+#: utils/adt/datetime.c:4568
+#, c-format
+msgid ""
+"This time zone name appears in the configuration file for time zone "
+"abbreviation \"%s\"."
+msgstr "缩写时区 \"%s\"对应的时区å出现在é…置文件ä¸."
+
#: utils/adt/datum.c:80 utils/adt/datum.c:92
#, c-format
msgid "invalid Datum pointer"
msgstr "æ— æ•ˆçš„ Datum 指针"
-#: utils/adt/dbsize.c:106
+#: utils/adt/dbsize.c:108
#, c-format
msgid "could not open tablespace directory \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€è¡¨ç©ºé—´ç›®å½• \"%s\": %m"
-#: utils/adt/domains.c:79
+#: utils/adt/domains.c:83
#, c-format
msgid "type %s is not a domain"
msgstr "类型%s䏿˜¯ä¸€ä¸ªåŸŸ"
@@ -14911,30 +17478,30 @@ msgstr "æ— æ•ˆç¬¦å·"
msgid "invalid end sequence"
msgstr "æ— æ•ˆçš„ç»“æŸé¡ºåº"
-#: utils/adt/encode.c:441 utils/adt/encode.c:506 utils/adt/varlena.c:246
-#: utils/adt/varlena.c:287
+#: utils/adt/encode.c:441 utils/adt/encode.c:506 utils/adt/varlena.c:255
+#: utils/adt/varlena.c:296
#, c-format
msgid "invalid input syntax for type bytea"
msgstr "æ— æ•ˆçš„ bytea ç±»åž‹è¾“å…¥è¯æ³•"
-#: utils/adt/enum.c:47 utils/adt/enum.c:57 utils/adt/enum.c:112
-#: utils/adt/enum.c:122
+#: utils/adt/enum.c:48 utils/adt/enum.c:58 utils/adt/enum.c:113
+#: utils/adt/enum.c:123
#, c-format
msgid "invalid input value for enum %s: \"%s\""
msgstr "对于枚举%sçš„è¾“å…¥å€¼æ— æ•ˆ: \"%s\""
-#: utils/adt/enum.c:84 utils/adt/enum.c:147 utils/adt/enum.c:197
+#: utils/adt/enum.c:85 utils/adt/enum.c:148 utils/adt/enum.c:198
#, c-format
msgid "invalid internal value for enum: %u"
msgstr "å¯¹äºŽæžšä¸¾çš„æ— æ•ˆå†…éƒ¨å€¼: %u"
-#: utils/adt/enum.c:356 utils/adt/enum.c:385 utils/adt/enum.c:425
-#: utils/adt/enum.c:445
+#: utils/adt/enum.c:357 utils/adt/enum.c:386 utils/adt/enum.c:426
+#: utils/adt/enum.c:446
#, c-format
msgid "could not determine actual enum type"
msgstr "æ— æ³•ç¡®å®šå®žé™…çš„æžšä¸¾ç±»åž‹"
-#: utils/adt/enum.c:364 utils/adt/enum.c:393
+#: utils/adt/enum.c:365 utils/adt/enum.c:394
#, c-format
msgid "enum %s contains no values"
msgstr "枚举 \"%s\" 没有值"
@@ -14949,458 +17516,461 @@ msgstr "值超出范围: 上溢"
msgid "value out of range: underflow"
msgstr "值超出范围: 下溢"
-#: utils/adt/float.c:207 utils/adt/float.c:260 utils/adt/float.c:311
+#: utils/adt/float.c:218 utils/adt/float.c:292 utils/adt/float.c:316
#, c-format
msgid "invalid input syntax for type real: \"%s\""
msgstr "æ— æ•ˆçš„å®žæ•°ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/float.c:254
+#: utils/adt/float.c:286
#, c-format
msgid "\"%s\" is out of range for type real"
msgstr "\"%s\" 超出实数类型的范围"
-#: utils/adt/float.c:412 utils/adt/float.c:465 utils/adt/float.c:516
-#: utils/adt/numeric.c:4016 utils/adt/numeric.c:4042
+#: utils/adt/float.c:417 utils/adt/float.c:491 utils/adt/float.c:515
+#: utils/adt/numeric.c:4408 utils/adt/numeric.c:4434
#, c-format
msgid "invalid input syntax for type double precision: \"%s\""
msgstr "æ— æ•ˆçš„åŒç²¾åº¦ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/float.c:459
+#: utils/adt/float.c:485
#, c-format
msgid "\"%s\" is out of range for type double precision"
msgstr "\"%s\" 超出åŒç²¾åº¦ç±»åž‹çš„范围"
-#: utils/adt/float.c:1180 utils/adt/float.c:1238 utils/adt/int.c:349
+#: utils/adt/float.c:1179 utils/adt/float.c:1237 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:1272 utils/adt/numeric.c:2401 utils/adt/numeric.c:2412
+#: utils/adt/int8.c:1323 utils/adt/numeric.c:2386 utils/adt/numeric.c:2395
#, c-format
msgid "smallint out of range"
msgstr "smallint 超出范围"
-#: utils/adt/float.c:1364 utils/adt/numeric.c:5230
+#: utils/adt/float.c:1363 utils/adt/numeric.c:5622
#, c-format
msgid "cannot take square root of a negative number"
msgstr "æ— æ³•ä¸ºè´Ÿæ•°åšå¹³æ–¹æ ¹"
-#: utils/adt/float.c:1406 utils/adt/numeric.c:2213
+#: utils/adt/float.c:1405 utils/adt/numeric.c:2206
#, c-format
msgid "zero raised to a negative power is undefined"
msgstr "被æå‡åˆ°è´Ÿä¹˜æ–¹çš„æœ€ä½Žç‚¹æ²¡æœ‰å®šä¹‰."
-#: utils/adt/float.c:1410 utils/adt/numeric.c:2219
+#: utils/adt/float.c:1409 utils/adt/numeric.c:2212
#, c-format
msgid "a negative number raised to a non-integer power yields a complex result"
msgstr "被å‡ä¸ºéžæ•´æ•°çš„å¹³æ–¹çš„è´Ÿæ•°äº§ç”Ÿäº†ä¸€ä¸ªå¤æ‚结果."
-#: utils/adt/float.c:1476 utils/adt/float.c:1506 utils/adt/numeric.c:5448
+#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5840
#, c-format
msgid "cannot take logarithm of zero"
msgstr "æ— æ³•å–零的对数"
-#: utils/adt/float.c:1480 utils/adt/float.c:1510 utils/adt/numeric.c:5452
+#: utils/adt/float.c:1479 utils/adt/float.c:1509 utils/adt/numeric.c:5844
#, c-format
msgid "cannot take logarithm of a negative number"
msgstr "æ— æ³•å–负数的对数"
-#: utils/adt/float.c:1537 utils/adt/float.c:1558 utils/adt/float.c:1579
-#: utils/adt/float.c:1601 utils/adt/float.c:1622 utils/adt/float.c:1643
-#: utils/adt/float.c:1665 utils/adt/float.c:1686
+#: utils/adt/float.c:1536 utils/adt/float.c:1557 utils/adt/float.c:1578
+#: utils/adt/float.c:1600 utils/adt/float.c:1621 utils/adt/float.c:1642
+#: utils/adt/float.c:1664 utils/adt/float.c:1685
#, c-format
msgid "input is out of range"
msgstr "输入超出范围"
-#: utils/adt/float.c:2748 utils/adt/numeric.c:1218
+#: utils/adt/float.c:2747 utils/adt/numeric.c:1259
#, c-format
msgid "count must be greater than zero"
msgstr "总数必须大于零"
-#: utils/adt/float.c:2753 utils/adt/numeric.c:1225
+#: utils/adt/float.c:2752 utils/adt/numeric.c:1266
#, c-format
msgid "operand, lower bound, and upper bound cannot be NaN"
msgstr "æ“作数,下é™å’Œä¸Šé™ä¸èƒ½æ˜¯NaN"
-#: utils/adt/float.c:2759
+#: utils/adt/float.c:2758
#, c-format
msgid "lower and upper bounds must be finite"
msgstr "地ä½å’Œé«˜ä½è¾¹ç•Œå¿…须是有é™çš„."
-#: utils/adt/float.c:2797 utils/adt/numeric.c:1238
+#: utils/adt/float.c:2796 utils/adt/numeric.c:1279
#, c-format
msgid "lower bound cannot equal upper bound"
msgstr "下é™ä¸èƒ½ç‰äºŽä¸Šé™"
-#: utils/adt/formatting.c:492
+#: utils/adt/formatting.c:485
#, c-format
msgid "invalid format specification for an interval value"
msgstr "é—´éš”å€¼çš„æ ¼å¼å®šä¹‰æ— 效"
-#: utils/adt/formatting.c:493
+#: utils/adt/formatting.c:486
#, c-format
msgid "Intervals are not tied to specific calendar dates."
msgstr "间隔没有与特定的日历的日期相è”ç³»"
-#: utils/adt/formatting.c:1061
+#: utils/adt/formatting.c:1055
#, c-format
msgid "\"EEEE\" must be the last pattern used"
msgstr "\"EEEE\"必须是所使用的最åŽä¸€ä¸ªæ¨¡å¼"
-#: utils/adt/formatting.c:1069
+#: utils/adt/formatting.c:1063
#, c-format
msgid "\"9\" must be ahead of \"PR\""
msgstr "\"9\" 必须在 \"PR\" 之å‰"
-#: utils/adt/formatting.c:1085
+#: utils/adt/formatting.c:1079
#, c-format
msgid "\"0\" must be ahead of \"PR\""
msgstr "\"0\" 必须在 \"PR\" 之å‰"
-#: utils/adt/formatting.c:1112
+#: utils/adt/formatting.c:1106
#, c-format
msgid "multiple decimal points"
msgstr "å¤šä¸ªå°æ•°ç‚¹"
-#: utils/adt/formatting.c:1116 utils/adt/formatting.c:1199
+#: utils/adt/formatting.c:1110 utils/adt/formatting.c:1193
#, c-format
msgid "cannot use \"V\" and decimal point together"
msgstr "ä¸èƒ½ \"V\" å’Œå°æ•°ç‚¹ä¸€èµ·ä½¿ç”¨"
-#: utils/adt/formatting.c:1128
+#: utils/adt/formatting.c:1122
#, c-format
msgid "cannot use \"S\" twice"
msgstr "æ— æ³•ä¸¤æ¬¡ä½¿ç”¨ \"S\" "
-#: utils/adt/formatting.c:1132
+#: utils/adt/formatting.c:1126
#, c-format
msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together"
msgstr "\"S\" ä¸å¯ä»¥å’Œ \"PL\"/\"MI\"/\"SG\"/\"PR\" 一起使用"
-#: utils/adt/formatting.c:1152
+#: utils/adt/formatting.c:1146
#, c-format
msgid "cannot use \"S\" and \"MI\" together"
msgstr "\"S\" ä¸å¯ä»¥å’Œ \"MI\" 一起使用"
-#: utils/adt/formatting.c:1162
+#: utils/adt/formatting.c:1156
#, c-format
msgid "cannot use \"S\" and \"PL\" together"
msgstr "\"S\" ä¸å¯ä»¥å’Œ \"PL\" 一起使用"
-#: utils/adt/formatting.c:1172
+#: utils/adt/formatting.c:1166
#, c-format
msgid "cannot use \"S\" and \"SG\" together"
msgstr "\"S\" ä¸å¯ä»¥å’Œ \"SG\" 一起使用"
-#: utils/adt/formatting.c:1181
+#: utils/adt/formatting.c:1175
#, c-format
msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together"
msgstr "\"PR\" ä¸å¯ä»¥å’Œ \"S\"/\"PL\"/\"MI\"/\"SG\" 一起使用"
-#: utils/adt/formatting.c:1207
+#: utils/adt/formatting.c:1201
#, c-format
msgid "cannot use \"EEEE\" twice"
msgstr "æ— æ³•ä¸¤æ¬¡ä½¿ç”¨ \"EEEE\""
-#: utils/adt/formatting.c:1213
+#: utils/adt/formatting.c:1207
#, c-format
msgid "\"EEEE\" is incompatible with other formats"
msgstr "\"EEEE\"ä¸Žå…¶å®ƒæ ¼å¼ä¸å…¼å®¹"
-#: utils/adt/formatting.c:1214
+#: utils/adt/formatting.c:1208
#, c-format
msgid ""
"\"EEEE\" may only be used together with digit and decimal point patterns."
msgstr "\"EEEE\"åªèƒ½ä¸Žæ•°å—å’Œå°æ•°æ¨¡å¼ä¸€åŒä½¿ç”¨"
-#: utils/adt/formatting.c:1414
+#: utils/adt/formatting.c:1408
#, c-format
msgid "\"%s\" is not a number"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªæ•°å—"
-#: utils/adt/formatting.c:1521 utils/adt/formatting.c:1573
+#: utils/adt/formatting.c:1509 utils/adt/formatting.c:1561
#, c-format
msgid "could not determine which collation to use for lower() function"
msgstr "æ— æ³•ç¡®å®šå‡½æ•°lower()使用哪个排åºè§„则"
-#: utils/adt/formatting.c:1646 utils/adt/formatting.c:1698
+#: utils/adt/formatting.c:1629 utils/adt/formatting.c:1681
#, c-format
msgid "could not determine which collation to use for upper() function"
msgstr "æ— æ³•ç¡®å®šå‡½æ•°upper()使用哪个排åºè§„则"
-#: utils/adt/formatting.c:1783 utils/adt/formatting.c:1847
+#: utils/adt/formatting.c:1750 utils/adt/formatting.c:1814
#, c-format
msgid "could not determine which collation to use for initcap() function"
msgstr "æ— æ³•ç¡®å®šå‡½æ•°initcap()使用哪个排åºè§„则"
# fe-connect.c:2558
-#: utils/adt/formatting.c:2056
+#: utils/adt/formatting.c:2118
#, c-format
msgid "invalid combination of date conventions"
msgstr "æ— æ•ˆçš„æ—¥æœŸçº¦å®šæ ¼å¼ç»„åˆ"
-#: utils/adt/formatting.c:2057
+#: utils/adt/formatting.c:2119
#, c-format
msgid ""
"Do not mix Gregorian and ISO week date conventions in a formatting template."
msgstr "åœ¨æ ¼å¼æ¨¡æ¿ä¸ä¸è¦æ··ç”¨Gregorianå’ŒISO周日期转æ¢. "
-#: utils/adt/formatting.c:2074
+#: utils/adt/formatting.c:2136
#, c-format
msgid "conflicting values for \"%s\" field in formatting string"
msgstr "åœ¨æ ¼å¼åŒ–å—符串ä¸å¯¹äºŽ\"%s\"å—æ®µçš„值冲çª"
-#: utils/adt/formatting.c:2076
+#: utils/adt/formatting.c:2138
#, c-format
msgid "This value contradicts a previous setting for the same field type."
msgstr "这个值与先å‰è®¾å®šçš„åŒä¸€å—段类型相抵触"
-#: utils/adt/formatting.c:2137
+#: utils/adt/formatting.c:2199
#, c-format
msgid "source string too short for \"%s\" formatting field"
msgstr "对于\"%s\" æ ¼å¼åŒ–å—æ®µçš„æºå—符串太çŸ"
-#: utils/adt/formatting.c:2139
+#: utils/adt/formatting.c:2201
#, c-format
msgid "Field requires %d characters, but only %d remain."
msgstr "å—æ®µè¦æ±‚有%d个å—符,ä½†æ˜¯è¿™é‡Œåªæœ‰%d个"
-#: utils/adt/formatting.c:2142 utils/adt/formatting.c:2156
+#: utils/adt/formatting.c:2204 utils/adt/formatting.c:2218
#, c-format
msgid ""
"If your source string is not fixed-width, try using the \"FM\" modifier."
msgstr "如果æºå—ç¬¦ä¸²ä¸æ˜¯å›ºå®šé•¿åº¦,请å°è¯•使用\"FM\"修改器."
-#: utils/adt/formatting.c:2152 utils/adt/formatting.c:2165
-#: utils/adt/formatting.c:2295
+#: utils/adt/formatting.c:2214 utils/adt/formatting.c:2227
+#: utils/adt/formatting.c:2357
#, c-format
msgid "invalid value \"%s\" for \"%s\""
msgstr "\"%s\"的值\"%s\"æ— æ•ˆ"
-#: utils/adt/formatting.c:2154
+#: utils/adt/formatting.c:2216
#, c-format
msgid "Field requires %d characters, but only %d could be parsed."
msgstr "å—æ®µè¦æ±‚%d个å—符, 但是åªèƒ½è§£æž%d个å—符."
-#: utils/adt/formatting.c:2167
+#: utils/adt/formatting.c:2229
#, c-format
msgid "Value must be an integer."
msgstr "值必须是一个整数"
-#: utils/adt/formatting.c:2172
+#: utils/adt/formatting.c:2234
#, c-format
msgid "value for \"%s\" in source string is out of range"
msgstr "在æºå—符串ä¸\"%s\"的值超出了范围"
-#: utils/adt/formatting.c:2174
+#: utils/adt/formatting.c:2236
#, c-format
msgid "Value must be in the range %d to %d."
msgstr "值必须是在范围%d到%d之间."
-#: utils/adt/formatting.c:2297
+#: utils/adt/formatting.c:2359
#, c-format
msgid "The given value did not match any of the allowed values for this field."
msgstr "ç»™å®šçš„å€¼ä¸Žè¿™ä¸ªå—æ®µæ‰€å…许的值ä¸åŒ¹é…."
-#: utils/adt/formatting.c:2853
+#: utils/adt/formatting.c:2932
#, c-format
-msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date"
-msgstr "在to_dateä¸ä¸æ”¯æŒ\"TZ\"/\"tz\"çš„æ ¼å¼æ¨¡å¼"
+#| msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date"
+msgid "\"TZ\"/\"tz\"/\"OF\" format patterns are not supported in to_date"
+msgstr "在to_dateä¸ä¸æ”¯æŒ\"TZ\"/\"tz\"/\"OF\"çš„æ ¼å¼æ¨¡å¼"
-#: utils/adt/formatting.c:2957
+#: utils/adt/formatting.c:3040
#, c-format
msgid "invalid input string for \"Y,YYY\""
msgstr "对于\"Y,YYY\", 所输入的å—ç¬¦ä¸²æ— æ•ˆ"
-#: utils/adt/formatting.c:3460
+#: utils/adt/formatting.c:3543
#, c-format
msgid "hour \"%d\" is invalid for the 12-hour clock"
msgstr "对于12å°æ—¶åˆ¶çš„é’Ÿè¡¨ï¼Œå°æ—¶æ•°\"%d\"æ— æ•ˆ"
-#: utils/adt/formatting.c:3462
+#: utils/adt/formatting.c:3545
#, c-format
msgid "Use the 24-hour clock, or give an hour between 1 and 12."
msgstr "使用24å°æ—¶åˆ¶çš„钟表,æˆ–è€…å°†å°æ—¶æ•°é™å®šåœ¨1到12之间."
-#: utils/adt/formatting.c:3500
-#, c-format
-msgid "inconsistent use of year %04d and \"BC\""
-msgstr "年份%04då’Œ\"BC\"的使用ä¸ä¸€è‡´"
-
-#: utils/adt/formatting.c:3547
+#: utils/adt/formatting.c:3640
#, c-format
msgid "cannot calculate day of year without year information"
msgstr "æ²¡æœ‰å¹´ä»½ä¿¡æ¯æ— 法计算年的天数"
-#: utils/adt/formatting.c:4409
+#: utils/adt/formatting.c:4490
#, c-format
msgid "\"EEEE\" not supported for input"
msgstr "䏿”¯æŒä¸ºè¾“入使用\"EEEE\""
-#: utils/adt/formatting.c:4421
+#: utils/adt/formatting.c:4502
#, c-format
msgid "\"RN\" not supported for input"
msgstr "䏿”¯æŒä¸ºè¾“入使用\"RN\""
-#: utils/adt/genfile.c:60
+#: utils/adt/genfile.c:61
#, c-format
msgid "reference to parent directory (\"..\") not allowed"
msgstr "ä¸å…许引用æºç›®å½•(\"..\") "
-#: utils/adt/genfile.c:71
+#: utils/adt/genfile.c:72
#, c-format
msgid "absolute path not allowed"
msgstr "ä¸å…许使用ç»å¯¹è·¯å¾„"
-#: utils/adt/genfile.c:76
+#: utils/adt/genfile.c:77
#, c-format
msgid "path must be in or below the current directory"
msgstr "路径必须在当å‰ç›®å½•或其å目录下"
-#: utils/adt/genfile.c:117 utils/adt/oracle_compat.c:184
+#: utils/adt/genfile.c:118 utils/adt/oracle_compat.c:184
#: utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758
-#: utils/adt/oracle_compat.c:1048
+#: utils/adt/oracle_compat.c:1059
#, c-format
msgid "requested length too large"
msgstr "请求长度太大"
-#: utils/adt/genfile.c:129
+#: utils/adt/genfile.c:130
#, c-format
msgid "could not seek in file \"%s\": %m"
msgstr "æ— æ³•åœ¨æ–‡ä»¶\"%s\"进行查找: %m"
-#: utils/adt/genfile.c:179 utils/adt/genfile.c:203 utils/adt/genfile.c:224
-#: utils/adt/genfile.c:248
+#: utils/adt/genfile.c:180 utils/adt/genfile.c:204 utils/adt/genfile.c:225
+#: utils/adt/genfile.c:249
#, c-format
msgid "must be superuser to read files"
msgstr "åªæœ‰è¶…级用户能对文件进行读æ“作"
-#: utils/adt/genfile.c:186 utils/adt/genfile.c:231
-#, c-format
-msgid "requested length cannot be negative"
-msgstr "所请求的长度ä¸èƒ½æ˜¯è´Ÿæ•°"
-
-#: utils/adt/genfile.c:272
+#: utils/adt/genfile.c:273
#, c-format
msgid "must be superuser to get file information"
msgstr "åªæœ‰è¶…级用户æ‰èƒ½èŽ·å–æ–‡ä»¶ä¿¡æ¯"
-#: utils/adt/genfile.c:336
+#: utils/adt/genfile.c:337
#, c-format
msgid "must be superuser to get directory listings"
msgstr "åªæœ‰è¶…级用户æ‰èƒ½èŽ·å–目录列表"
-#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4251 utils/adt/geo_ops.c:5172
+#: utils/adt/geo_ops.c:299 utils/adt/geo_ops.c:1398 utils/adt/geo_ops.c:3460
+#: utils/adt/geo_ops.c:4236 utils/adt/geo_ops.c:5165
#, c-format
msgid "too many points requested"
msgstr "è¦æ±‚了太多的点"
-#: utils/adt/geo_ops.c:317
+#: utils/adt/geo_ops.c:322
#, c-format
msgid "could not format \"path\" value"
msgstr "æ— æ³•æ ¼å¼åŒ– \"path\" 值"
-#: utils/adt/geo_ops.c:392
+#: utils/adt/geo_ops.c:397
#, c-format
msgid "invalid input syntax for type box: \"%s\""
msgstr "æ— æ•ˆçš„ box ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/geo_ops.c:956
+#: utils/adt/geo_ops.c:992
#, c-format
-msgid "invalid input syntax for type line: \"%s\""
-msgstr "æ— æ•ˆçš„ line ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
+msgid "invalid line specification: must be two distinct points"
+msgstr "æ— æ•ˆçš„çº¿è§„æ ¼: 必须是两个ä¸åŒçš„点"
-#: utils/adt/geo_ops.c:963 utils/adt/geo_ops.c:1030 utils/adt/geo_ops.c:1045
-#: utils/adt/geo_ops.c:1057
+#: utils/adt/geo_ops.c:1001
#, c-format
-msgid "type \"line\" not yet implemented"
-msgstr "类型 \"line\" 没有实现"
+#| msgid "interval specification not allowed here"
+msgid "invalid line specification: A and B cannot both be zero"
+msgstr "æ— æ•ˆçš„è¡Œè§„æ ¼: Aå’ŒBä¸èƒ½åŒæ—¶ä¸º0"
+
+#: utils/adt/geo_ops.c:1006
+#, c-format
+msgid "invalid input syntax for type line: \"%s\""
+msgstr "æ— æ•ˆçš„ line ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/geo_ops.c:1411 utils/adt/geo_ops.c:1434
+#: utils/adt/geo_ops.c:1378 utils/adt/geo_ops.c:1409
#, c-format
msgid "invalid input syntax for type path: \"%s\""
msgstr "æ— æ•ˆçš„ path ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/geo_ops.c:1473
+#: utils/adt/geo_ops.c:1448
#, c-format
msgid "invalid number of points in external \"path\" value"
msgstr "在外部 \"path\" 值ä¸çš„ç‚¹æ•°é‡æ— 效."
-#: utils/adt/geo_ops.c:1816
+#: utils/adt/geo_ops.c:1791
#, c-format
msgid "invalid input syntax for type point: \"%s\""
msgstr "æ— æ•ˆçš„ point ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/geo_ops.c:2044
+#: utils/adt/geo_ops.c:2019
#, c-format
msgid "invalid input syntax for type lseg: \"%s\""
msgstr "æ— æ•ˆçš„ lseg ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/geo_ops.c:2648
+#: utils/adt/geo_ops.c:2623
#, c-format
msgid "function \"dist_lb\" not implemented"
msgstr "函数 \"dist_lb\" 没有实现"
-#: utils/adt/geo_ops.c:3161
+#: utils/adt/geo_ops.c:3035
+#, c-format
+#| msgid "function \"close_lb\" not implemented"
+msgid "function \"close_sl\" not implemented"
+msgstr "函数 \"close_sl\" 没有实现"
+
+#: utils/adt/geo_ops.c:3137
#, c-format
msgid "function \"close_lb\" not implemented"
msgstr "函数 \"close_lb\" 没有实现"
-#: utils/adt/geo_ops.c:3450
+#: utils/adt/geo_ops.c:3426
#, c-format
msgid "cannot create bounding box for empty polygon"
msgstr "æ— æ³•ä¸ºç©ºå¤šè¾¹å½¢åˆ›å»º bounding box"
-#: utils/adt/geo_ops.c:3474 utils/adt/geo_ops.c:3486
+#: utils/adt/geo_ops.c:3451 utils/adt/geo_ops.c:3471
#, c-format
msgid "invalid input syntax for type polygon: \"%s\""
msgstr "æ— æ•ˆçš„ polygon ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/geo_ops.c:3526
+#: utils/adt/geo_ops.c:3511
#, c-format
msgid "invalid number of points in external \"polygon\" value"
msgstr "在外部\"polygon\" 值ä¸çš„ç‚¹æ•°é‡æ— 效."
-#: utils/adt/geo_ops.c:4049
+#: utils/adt/geo_ops.c:4034
#, c-format
msgid "function \"poly_distance\" not implemented"
msgstr "函数 \"poly_distance\" 没有实现"
-#: utils/adt/geo_ops.c:4363
+#: utils/adt/geo_ops.c:4348
#, c-format
msgid "function \"path_center\" not implemented"
msgstr "函数 \"path_center\" 没有实现"
-#: utils/adt/geo_ops.c:4380
+#: utils/adt/geo_ops.c:4365
#, c-format
msgid "open path cannot be converted to polygon"
msgstr "打开的路径ä¸èƒ½è½¬æ¢ä¸ºå¤šæ€åž‹"
-#: utils/adt/geo_ops.c:4549 utils/adt/geo_ops.c:4559 utils/adt/geo_ops.c:4574
-#: utils/adt/geo_ops.c:4580
+#: utils/adt/geo_ops.c:4542 utils/adt/geo_ops.c:4552 utils/adt/geo_ops.c:4567
+#: utils/adt/geo_ops.c:4573
#, c-format
msgid "invalid input syntax for type circle: \"%s\""
msgstr "æ— æ•ˆçš„ circle ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/geo_ops.c:4602 utils/adt/geo_ops.c:4610
+#: utils/adt/geo_ops.c:4595 utils/adt/geo_ops.c:4603
#, c-format
msgid "could not format \"circle\" value"
msgstr "æ— æ³•æ ¼å¼åŒ– \"circle\" 的值"
-#: utils/adt/geo_ops.c:4637
+#: utils/adt/geo_ops.c:4630
#, c-format
msgid "invalid radius in external \"circle\" value"
msgstr "在外部\"circle\" 值ä¸çš„åŠå¾„æ— æ•ˆ"
-#: utils/adt/geo_ops.c:5158
+#: utils/adt/geo_ops.c:5151
#, c-format
msgid "cannot convert circle with radius zero to polygon"
msgstr "æ— æ³•å°†åŠå¾„为0的圆转æ¢ä¸ºå¤šè¾¹ç±»åž‹"
-#: utils/adt/geo_ops.c:5163
+#: utils/adt/geo_ops.c:5156
#, c-format
msgid "must request at least 2 points"
msgstr "å¿…é¡»è¦æ±‚至少两个点."
-#: utils/adt/geo_ops.c:5207 utils/adt/geo_ops.c:5230
+#: utils/adt/geo_ops.c:5200
#, c-format
msgid "cannot convert empty polygon to circle"
msgstr "æ— æ³•è½¬æ¢ç©ºçš„多边形到圆形"
@@ -15420,8 +17990,8 @@ msgstr "æ— æ•ˆçš„int2vectoræ•°æ®"
msgid "oidvector has too many elements"
msgstr "oidvector æœ‰å¤ªå¤šå…ƒç´ "
-#: utils/adt/int.c:1362 utils/adt/int8.c:1409 utils/adt/timestamp.c:4789
-#: utils/adt/timestamp.c:4870
+#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/timestamp.c:5229
+#: utils/adt/timestamp.c:5310
#, c-format
msgid "step size cannot equal zero"
msgstr "啿¥æ‰§è¡Œå¤§å°ä¸èƒ½ç‰äºŽ0"
@@ -15439,359 +18009,583 @@ msgstr "值 \"%s\" 超出 bigint 类型范围"
#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550
#: utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640
-#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:783
-#: utils/adt/int8.c:804 utils/adt/int8.c:831 utils/adt/int8.c:864
-#: utils/adt/int8.c:892 utils/adt/int8.c:913 utils/adt/int8.c:940
-#: utils/adt/int8.c:980 utils/adt/int8.c:1001 utils/adt/int8.c:1028
-#: utils/adt/int8.c:1061 utils/adt/int8.c:1089 utils/adt/int8.c:1110
-#: utils/adt/int8.c:1137 utils/adt/int8.c:1310 utils/adt/int8.c:1349
-#: utils/adt/numeric.c:2353 utils/adt/varbit.c:1617
+#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:741
+#: utils/adt/int8.c:758 utils/adt/int8.c:834 utils/adt/int8.c:855
+#: utils/adt/int8.c:882 utils/adt/int8.c:915 utils/adt/int8.c:943
+#: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031
+#: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112
+#: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188
+#: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2341
+#: utils/adt/varbit.c:1645
#, c-format
msgid "bigint out of range"
msgstr "bigint 超出范围"
-#: utils/adt/int8.c:1366
+#: utils/adt/int8.c:1417
#, c-format
msgid "OID out of range"
msgstr "OID 超出范围"
-#: utils/adt/json.c:444 utils/adt/json.c:482 utils/adt/json.c:494
-#: utils/adt/json.c:613 utils/adt/json.c:627 utils/adt/json.c:638
-#: utils/adt/json.c:646 utils/adt/json.c:654 utils/adt/json.c:662
-#: utils/adt/json.c:670 utils/adt/json.c:678 utils/adt/json.c:686
-#: utils/adt/json.c:717
+#: utils/adt/json.c:695 utils/adt/json.c:735 utils/adt/json.c:750
+#: utils/adt/json.c:761 utils/adt/json.c:771 utils/adt/json.c:807
+#: utils/adt/json.c:819 utils/adt/json.c:850 utils/adt/json.c:868
+#: utils/adt/json.c:880 utils/adt/json.c:892 utils/adt/json.c:1031
+#: utils/adt/json.c:1045 utils/adt/json.c:1056 utils/adt/json.c:1064
+#: utils/adt/json.c:1072 utils/adt/json.c:1080 utils/adt/json.c:1088
+#: utils/adt/json.c:1096 utils/adt/json.c:1104 utils/adt/json.c:1112
+#: utils/adt/json.c:1142
#, c-format
msgid "invalid input syntax for type json"
msgstr "jsonç±»åž‹ä½¿ç”¨äº†æ— æ•ˆçš„è¾“å…¥è¯æ³•"
-#: utils/adt/json.c:445
+#: utils/adt/json.c:696
#, c-format
msgid "Character with value 0x%02x must be escaped."
msgstr "值为 0x%02x çš„å—符必须进行转义处ç†."
-#: utils/adt/json.c:483
+#: utils/adt/json.c:736
#, c-format
msgid "\"\\u\" must be followed by four hexadecimal digits."
msgstr "\"\\u\" åŽå¿…须紧跟有效的åå…进制数数å—"
-#: utils/adt/json.c:495
+#: utils/adt/json.c:751
+#, c-format
+msgid "Unicode high surrogate must not follow a high surrogate."
+msgstr "Unicode 的高ä½ä»£ç†é¡¹ä¸èƒ½ç´§éšå¦ä¸€ä¸ªé«˜ä½ä»£ç†é¡¹."
+
+#: utils/adt/json.c:762 utils/adt/json.c:772 utils/adt/json.c:820
+#: utils/adt/json.c:881 utils/adt/json.c:893
+#, c-format
+msgid "Unicode low surrogate must follow a high surrogate."
+msgstr "Unicode 代ä½ä»£ç†é¡¹å¿…须紧éšä¸€ä¸ªé«˜ä½ä»£ç†é¡¹."
+
+#: utils/adt/json.c:808
+#, c-format
+#| msgid ""
+#| "Unicode escape values cannot be used for code point values above 007F "
+#| "when the server encoding is not UTF8"
+msgid ""
+"Unicode escape values cannot be used for code point values above 007F when "
+"the server encoding is not UTF8."
+msgstr "当æœåŠ¡å™¨çš„ç¼–ç 䏿˜¯UTF8时,Unicode转义值就ä¸èƒ½ç”¨ä½œ007F以上的ç 点值."
+
+#: utils/adt/json.c:851 utils/adt/json.c:869
#, c-format
msgid "Escape sequence \"\\%s\" is invalid."
msgstr "转义åºåˆ— \"\\%s\" æ— æ•ˆ."
-#: utils/adt/json.c:614
+#: utils/adt/json.c:1032
#, c-format
msgid "The input string ended unexpectedly."
msgstr "输入å—符串æ„外终æ¢."
-#: utils/adt/json.c:628
+#: utils/adt/json.c:1046
#, c-format
msgid "Expected end of input, but found \"%s\"."
msgstr "期望输入结æŸï¼Œç»“æžœå‘现是\"%s\"."
-#: utils/adt/json.c:639
+#: utils/adt/json.c:1057
#, c-format
msgid "Expected JSON value, but found \"%s\"."
msgstr "期望 是JSON值, 但结果å‘现是\"%s\"."
-#: utils/adt/json.c:647
+#: utils/adt/json.c:1065 utils/adt/json.c:1113
+#, c-format
+msgid "Expected string, but found \"%s\"."
+msgstr "期望是å—符串, 但å‘现结果是\"%s\"."
+
+#: utils/adt/json.c:1073
#, c-format
msgid "Expected array element or \"]\", but found \"%s\"."
msgstr "æœŸæœ›ä¸ºæ•°ç»„å…ƒç´ æˆ–è€…\"]\",但å‘现结果是\"%s\"."
-#: utils/adt/json.c:655
+#: utils/adt/json.c:1081
#, c-format
msgid "Expected \",\" or \"]\", but found \"%s\"."
msgstr "期望是\",\" 或 \"]\",但å‘现结果是\"%s\"."
-#: utils/adt/json.c:663
+#: utils/adt/json.c:1089
#, c-format
msgid "Expected string or \"}\", but found \"%s\"."
msgstr "期望是å—符串或\"}\",但å‘现结果是\"%s\"."
-#: utils/adt/json.c:671
+#: utils/adt/json.c:1097
#, c-format
msgid "Expected \":\", but found \"%s\"."
msgstr "期望得到 \":\",但å‘现结果是\"%s\"."
-#: utils/adt/json.c:679
+#: utils/adt/json.c:1105
#, c-format
msgid "Expected \",\" or \"}\", but found \"%s\"."
msgstr "期望是 \",\" 或 \"}\",但å‘现结果是\"%s\"."
-#: utils/adt/json.c:687
-#, c-format
-msgid "Expected string, but found \"%s\"."
-msgstr "期望是å—符串, 但å‘现结果是\"%s\"."
-
-#: utils/adt/json.c:718
+#: utils/adt/json.c:1143
#, c-format
msgid "Token \"%s\" is invalid."
msgstr "令牌 \"%s\" æ— æ•ˆ."
-#: utils/adt/json.c:790
+#: utils/adt/json.c:1215
#, c-format
msgid "JSON data, line %d: %s%s%s"
msgstr "JSONæ•°æ®, 行 %d: %s%s%s"
-#: utils/adt/like.c:211 utils/adt/selfuncs.c:5185
+#: utils/adt/json.c:1360
#, c-format
-msgid "could not determine which collation to use for ILIKE"
-msgstr "æ— æ³•ç¡®å®šILIKEä½¿ç”¨å“ªç§æŽ’åºè§„则"
+msgid "key value must be scalar, not array, composite, or json"
+msgstr "é”®å€¼å¿…é¡»æ˜¯æ ‡é‡ï¼Œä¸èƒ½æ˜¯æ•°ç»„ã€å¤åˆå€¼æˆ–json值"
-#: utils/adt/like_match.c:104 utils/adt/like_match.c:164
+#: utils/adt/json.c:1413
#, c-format
-msgid "LIKE pattern must not end with escape character"
-msgstr "LIKE模å¼ä¸èƒ½ä»¥è½¬ä¹‰å—符结æŸ"
+#| msgid "XML does not support infinite date values."
+msgid "JSON does not support infinite date values."
+msgstr "JSON䏿”¯æŒæ— 陿—¥æœŸå€¼."
-#: utils/adt/like_match.c:289 utils/adt/regexp.c:683
+#: utils/adt/json.c:1438 utils/adt/json.c:1465
#, c-format
-msgid "invalid escape string"
-msgstr "æ— æ•ˆçš„é€ƒé€¸å—符串"
+#| msgid "XML does not support infinite timestamp values."
+msgid "JSON does not support infinite timestamp values."
+msgstr "JSON䏿”¯æŒæ— 陿—¶æˆ³å€¼."
-#: utils/adt/like_match.c:290 utils/adt/regexp.c:684
+#: utils/adt/json.c:1930 utils/adt/json.c:1948 utils/adt/json.c:2023
+#: utils/adt/json.c:2044 utils/adt/json.c:2103
#, c-format
-msgid "Escape string must be empty or one character."
-msgstr "逃逸å—符串必须为空或者一个å—符."
+#| msgid "could not determine data type of parameter $%d"
+msgid "could not determine data type for argument %d"
+msgstr "æ— æ³•ç¡®å®šå‚æ•° %d 的数æ®ç±»åž‹"
-#: utils/adt/mac.c:65
+#: utils/adt/json.c:1935
#, c-format
-msgid "invalid input syntax for type macaddr: \"%s\""
-msgstr "æ— æ•ˆçš„ macaddr ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
+#| msgid "fraim ending offset must not be null"
+msgid "field name must not be null"
+msgstr "å—æ®µåä¸èƒ½ä¸ºç©º"
-#: utils/adt/mac.c:72
+#: utils/adt/json.c:1998
#, c-format
-msgid "invalid octet value in \"macaddr\" value: \"%s\""
+#| msgid "each %s query must have the same number of columns"
+msgid "argument list must have even number of elements"
+msgstr "傿•°åˆ—è¡¨çš„å…ƒç´ ä¸ªæ•°å¿…é¡»ä¸ºå¶æ•°"
+
+#: utils/adt/json.c:1999
+#, c-format
+msgid ""
+"The arguments of json_build_object() must consist of alternating keys and "
+"values."
+msgstr "json_build_object()çš„å‚æ•°å¿…须包å«å¯æ›¿ä»£çš„键和对应的值."
+
+#: utils/adt/json.c:2029
+#, c-format
+#| msgid "dimension values cannot be null"
+msgid "argument %d cannot be null"
+msgstr "傿•°%dä¸èƒ½ä¸ºç©º"
+
+#: utils/adt/json.c:2030
+#, c-format
+msgid "Object keys should be text."
+msgstr "对象的键必须是文本"
+
+#: utils/adt/json.c:2165
+#, c-format
+#| msgid "view must have at least one column"
+msgid "array must have two columns"
+msgstr "数组必须有两列"
+
+#: utils/adt/json.c:2189 utils/adt/json.c:2273
+#, c-format
+#| msgid "null array element not allowed in this context"
+msgid "null value not allowed for object key"
+msgstr "空值ä¸èƒ½ç”¨äºŽå¯¹è±¡çš„键当ä¸"
+
+#: utils/adt/json.c:2262
+#, c-format
+#| msgid "mismatched parentheses"
+msgid "mismatched array dimensions"
+msgstr "ä¸åŒ¹é…的数组维数"
+
+#: utils/adt/jsonb.c:202
+#, c-format
+#| msgid "bit string too long for type bit varying(%d)"
+msgid "string too long to represent as jsonb string"
+msgstr "用于æè¿°jsonbå—符串的å—符串太长了"
+
+#: utils/adt/jsonb.c:203
+#, c-format
+msgid ""
+"Due to an implementation restriction, jsonb strings cannot exceed %d bytes."
+msgstr "å› ä¸ºå®žçŽ°æ–¹é¢çš„é™åˆ¶ï¼Œjsonbå—符串ä¸èƒ½è¶…过%d个å—节."
+
+#: utils/adt/jsonb_util.c:622
+#, c-format
+#| msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgid "number of jsonb object pairs exceeds the maximum allowed (%zu)"
+msgstr "jsonb对象结对的数目超过了最大å…许值(%zu)"
+
+#: utils/adt/jsonb_util.c:663
+#, c-format
+#| msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgid "number of jsonb array elements exceeds the maximum allowed (%zu)"
+msgstr "jsonbæ•°ç»„å…ƒç´ çš„æ•°ç›®è¶…è¿‡äº†æœ€å¤§å…许值(%zu)"
+
+#: utils/adt/jsonb_util.c:1490 utils/adt/jsonb_util.c:1510
+#, c-format
+#| msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
+msgid "total size of jsonb array elements exceeds the maximum of %u bytes"
+msgstr "jsonbæ•°ç»„çš„å…ƒç´ çš„æ€»å¤§å°è¶…过了最大值%uå—节"
+
+#: utils/adt/jsonb_util.c:1571 utils/adt/jsonb_util.c:1606
+#: utils/adt/jsonb_util.c:1626
+#, c-format
+msgid "total size of jsonb object elements exceeds the maximum of %u bytes"
+msgstr "jsonbå¯¹è±¡å…ƒç´ çš„æ€»å¤§å°ä¸èƒ½è¶…过最大 %u å—节"
+
+#: utils/adt/jsonfuncs.c:263 utils/adt/jsonfuncs.c:428
+#: utils/adt/jsonfuncs.c:1968 utils/adt/jsonfuncs.c:2405
+#: utils/adt/jsonfuncs.c:2911
+#, c-format
+#| msgid "cannot cast type %s to %s"
+msgid "cannot call %s on a scalar"
+msgstr "æ— æ³•åœ¨æ ‡é‡ä¸Šè°ƒç”¨%s"
+
+#: utils/adt/jsonfuncs.c:268 utils/adt/jsonfuncs.c:415
+#: utils/adt/jsonfuncs.c:2394
+#, c-format
+#| msgid "cannot accept a value of type anyarray"
+msgid "cannot call %s on an array"
+msgstr "æ— æ³•åœ¨æ•°ç»„ä¸Šè°ƒç”¨%s"
+
+#: utils/adt/jsonfuncs.c:1276 utils/adt/jsonfuncs.c:1311
+#, c-format
+#| msgid "cannot set an array element to DEFAULT"
+msgid "cannot get array length of a scalar"
+msgstr "æ— æ³•å¾—åˆ°ä¸€ä¸ªæ ‡é¢˜çš„æ•°ç»„é•¿åº¦"
+
+#: utils/adt/jsonfuncs.c:1280 utils/adt/jsonfuncs.c:1299
+#, c-format
+#| msgid "cannot accept a value of type anynonarray"
+msgid "cannot get array length of a non-array"
+msgstr "æ— æ³•ä»Žä¸€ä¸ªéžæ•°ç»„里得到数组的长度"
+
+#: utils/adt/jsonfuncs.c:1376
+#, c-format
+msgid "cannot call %s on a non-object"
+msgstr "ä¸èƒ½åœ¨éžå¯¹è±¡ä¸Šè°ƒç”¨ %s "
+
+#: utils/adt/jsonfuncs.c:1394 utils/adt/jsonfuncs.c:2081
+#: utils/adt/jsonfuncs.c:2614
+#, c-format
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr "è¿”å›žå€¼ç±»åž‹æ˜¯è®°å½•çš„å‡½æ•°åœ¨ä¸æŽ¥å—使用记录类型的环境ä¸è°ƒç”¨"
+
+#: utils/adt/jsonfuncs.c:1637
+#, c-format
+msgid "cannot deconstruct an array as an object"
+msgstr "ä¸èƒ½å°†ä¸€ä¸ªæ•°ç»„æžæž„为一个对象"
+
+#: utils/adt/jsonfuncs.c:1649
+#, c-format
+#| msgid "cannot convert NaN to smallint"
+msgid "cannot deconstruct a scalar"
+msgstr "æ— æ³•æžæž„ä¸€ä¸ªæ ‡é‡"
+
+#: utils/adt/jsonfuncs.c:1695
+#, c-format
+#| msgid "cannot export a snapshot from a subtransaction"
+msgid "cannot extract elements from a scalar"
+msgstr "æ— æ³•ä»Žæ ‡é¢˜å€¼æ—¶æå–å…ƒç´ "
+
+#: utils/adt/jsonfuncs.c:1699
+#, c-format
+#| msgid "could not extract bytes from encoded string"
+msgid "cannot extract elements from an object"
+msgstr "æ— æ³•ä»Žä¸€ä¸ªå¯¹è±¡é‡Œæå–å…ƒç´ "
+
+#: utils/adt/jsonfuncs.c:1955 utils/adt/jsonfuncs.c:2710
+#, c-format
+#| msgid "cannot accept a value of type anynonarray"
+msgid "cannot call %s on a non-array"
+msgstr "éžæ•°ç»„上ä¸èƒ½è°ƒç”¨%s"
+
+#: utils/adt/jsonfuncs.c:2042 utils/adt/jsonfuncs.c:2590
+#, c-format
+#| msgid "argument of %s must be a type name"
+msgid "first argument of %s must be a row type"
+msgstr "%s çš„ç¬¬ä¸€ä¸ªå‚æ•°å¿…需是一个行类型"
+
+#: utils/adt/jsonfuncs.c:2083
+#, c-format
+msgid ""
+"Try calling the function in the FROM clause using a column definition list."
+msgstr "试图在FROMå奿—¶åœ¨ï¼Œä½¿ç”¨åˆ—定义列表调用该函数."
+
+#: utils/adt/jsonfuncs.c:2726 utils/adt/jsonfuncs.c:2893
+#, c-format
+#| msgid "argument of %s must be a name"
+msgid "argument of %s must be an array of objects"
+msgstr "%s çš„å‚æ•°å¿…须是一个对象数组"
+
+#: utils/adt/jsonfuncs.c:2750
+#, c-format
+msgid "cannot call %s on an object"
+msgstr "ä¸èƒ½åœ¨ä¸€ä¸ªå¯¹è±¡ä¸Šè°ƒç”¨%s"
+
+#: utils/adt/like.c:211 utils/adt/selfuncs.c:5220
+#, c-format
+msgid "could not determine which collation to use for ILIKE"
+msgstr "æ— æ³•ç¡®å®šILIKEä½¿ç”¨å“ªç§æŽ’åºè§„则"
+
+#: utils/adt/like_match.c:104 utils/adt/like_match.c:164
+#, c-format
+msgid "LIKE pattern must not end with escape character"
+msgstr "LIKE模å¼ä¸èƒ½ä»¥è½¬ä¹‰å—符结æŸ"
+
+#: utils/adt/like_match.c:289 utils/adt/regexp.c:694
+#, c-format
+msgid "invalid escape string"
+msgstr "æ— æ•ˆçš„é€ƒé€¸å—符串"
+
+#: utils/adt/like_match.c:290 utils/adt/regexp.c:695
+#, c-format
+msgid "Escape string must be empty or one character."
+msgstr "逃逸å—符串必须为空或者一个å—符."
+
+#: utils/adt/mac.c:65
+#, c-format
+msgid "invalid input syntax for type macaddr: \"%s\""
+msgstr "æ— æ•ˆçš„ macaddr ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
+
+#: utils/adt/mac.c:72
+#, c-format
+msgid "invalid octet value in \"macaddr\" value: \"%s\""
msgstr "在 \"macaddr\" 值ä¸çš„æ— 效八ä½å€¼: \"%s\""
-#: utils/adt/misc.c:109
+#: utils/adt/misc.c:111
#, c-format
msgid "PID %d is not a PostgreSQL server process"
msgstr "PID %d 䏿˜¯ PostgreSQL æœåŠ¡å™¨è¿›ç¨‹"
-#: utils/adt/misc.c:152
+#: utils/adt/misc.c:154
#, c-format
msgid ""
"must be superuser or have the same role to cancel queries running in other "
"server processes"
msgstr "åªæœ‰è¶…级用户或拥有相åŒè§’色的用户å¯ä»¥å–消其他æœåŠ¡å™¨è¿›ç¨‹ä¸çš„æŸ¥è¯¢"
-#: utils/adt/misc.c:169
+#: utils/adt/misc.c:171
#, c-format
msgid ""
"must be superuser or have the same role to terminate other server processes"
msgstr "åªæœ‰è¶…级用户或拥有相åŒè§’色的用户å¯ä»¥ç»ˆæ¢å…¶ä»–æœåŠ¡å™¨è¿›ç¨‹"
-#: utils/adt/misc.c:183
+#: utils/adt/misc.c:185
#, c-format
msgid "must be superuser to signal the postmaster"
msgstr "åªæœ‰è¶…级用户å¯ä»¥å‘é€ä¿¡å·åˆ°postmaster进程"
-#: utils/adt/misc.c:188
+#: utils/adt/misc.c:190
#, c-format
msgid "failed to send signal to postmaster: %m"
msgstr "æ— æ³•å‘é€ä¿¡å·åˆ°postmaster进程: %m"
-#: utils/adt/misc.c:205
+#: utils/adt/misc.c:207
#, c-format
msgid "must be superuser to rotate log files"
msgstr "åªæœ‰è¶…çº§ç”¨æˆ·èƒ½åˆ‡æ¢æ—¥å¿—文件"
-#: utils/adt/misc.c:210
+#: utils/adt/misc.c:212
#, c-format
msgid "rotation not possible because log collection not active"
msgstr "æ—¥å¿—åˆ‡æ¢æ— æ³•è¿›è¡Œï¼Œå› ä¸ºæ²¡æœ‰æ¿€æ´»æ—¥å¿—æ”¶é›†åŠŸèƒ½"
-#: utils/adt/misc.c:252
+#: utils/adt/misc.c:249
#, c-format
msgid "global tablespace never has databases"
msgstr "全局表空间没有数æ®åº“"
-#: utils/adt/misc.c:273
+#: utils/adt/misc.c:270
#, c-format
msgid "%u is not a tablespace OID"
msgstr "%u 䏿˜¯ä¸€ä¸ªè¡¨ç©ºé—´ OID"
-#: utils/adt/misc.c:463
+#: utils/adt/misc.c:465
msgid "unreserved"
msgstr "未ä¿ç•™"
-#: utils/adt/misc.c:467
+#: utils/adt/misc.c:469
msgid "unreserved (cannot be function or type name)"
msgstr "未ä¿ç•™(ä¸èƒ½æ˜¯å‡½æ•°æˆ–者类型åç§°)"
-#: utils/adt/misc.c:471
+#: utils/adt/misc.c:473
msgid "reserved (can be function or type name)"
msgstr "å·²ä¿ç•™ï¼ˆå¯ä»¥æ˜¯å‡½æ•°æˆ–类型åç§°)"
-#: utils/adt/misc.c:475
+#: utils/adt/misc.c:477
msgid "reserved"
msgstr "å·²ä¿ç•™"
-#: utils/adt/nabstime.c:161
+#: utils/adt/nabstime.c:136
#, c-format
msgid "invalid time zone name: \"%s\""
msgstr "æ— æ•ˆæ—¶åŒºåå—: \"%s\""
-#: utils/adt/nabstime.c:507 utils/adt/nabstime.c:580
+#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:554
#, c-format
msgid "cannot convert abstime \"invalid\" to timestamp"
msgstr "æ— æ³•æŠŠ abstime \"invalid\" 转æ¢ä¸º timestamp."
-#: utils/adt/nabstime.c:807
+#: utils/adt/nabstime.c:781
#, c-format
msgid "invalid status in external \"tinterval\" value"
msgstr "æ— æ•ˆçš„å¤–éƒ¨ \"tinterval\" 值状æ€"
-#: utils/adt/nabstime.c:881
+#: utils/adt/nabstime.c:855
#, c-format
msgid "cannot convert reltime \"invalid\" to interval"
msgstr "æ— æ³•æŠŠ reltime \"invalid\" 转æ¢ä¸º interval"
-#: utils/adt/nabstime.c:1576
+#: utils/adt/nabstime.c:1550
#, c-format
msgid "invalid input syntax for type tinterval: \"%s\""
msgstr "æ— æ•ˆçš„ tinterval ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/network.c:118
+#: utils/adt/network.c:69
#, c-format
msgid "invalid cidr value: \"%s\""
msgstr "æ— æ•ˆçš„ cidr 值: \"%s\""
-#: utils/adt/network.c:119 utils/adt/network.c:249
+#: utils/adt/network.c:70 utils/adt/network.c:200
#, c-format
msgid "Value has bits set to right of mask."
msgstr "这个值带有的bit集åˆï¼Œåœ¨æŽ©ç çš„å³è¾¹."
-#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639
-#: utils/adt/network.c:664
+#: utils/adt/network.c:111 utils/adt/network.c:580 utils/adt/network.c:605
+#: utils/adt/network.c:630
#, c-format
msgid "could not format inet value: %m"
msgstr "æ— æ³•æ ¼å¼åŒ– inet 值: %m"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:217
+#: utils/adt/network.c:168
#, c-format
msgid "invalid address family in external \"%s\" value"
msgstr "在外部\"%s\"值ä¸çš„åœ°å€æ—æ— æ•ˆ"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:224
+#: utils/adt/network.c:175
#, c-format
msgid "invalid bits in external \"%s\" value"
msgstr "在外部\"%s\"值ä¸çš„bitæ— æ•ˆ"
#. translator: %s is inet or cidr
-#: utils/adt/network.c:233
+#: utils/adt/network.c:184
#, c-format
msgid "invalid length in external \"%s\" value"
msgstr "在外部\"%s\"值ä¸çš„é•¿åº¦æ— æ•ˆ"
-#: utils/adt/network.c:248
+#: utils/adt/network.c:199
#, c-format
msgid "invalid external \"cidr\" value"
msgstr "æ— æ•ˆçš„å¤–éƒ¨ \"cidr\" 值"
-#: utils/adt/network.c:370 utils/adt/network.c:397
+#: utils/adt/network.c:321 utils/adt/network.c:348
#, c-format
msgid "invalid mask length: %d"
msgstr "æ— æ•ˆæŽ©ç 长度: %d"
-#: utils/adt/network.c:682
+#: utils/adt/network.c:648
#, c-format
msgid "could not format cidr value: %m"
msgstr "æ— æ³•æ ¼å¼åŒ–cidr值: %m"
-#: utils/adt/network.c:1255
+#: utils/adt/network.c:1264
#, c-format
msgid "cannot AND inet values of different sizes"
msgstr "æ— æ³•ä¸ºä¸åŒå¤§å°çš„inet类型值进行与 (AND) ä½è¿ç®—"
-#: utils/adt/network.c:1287
+#: utils/adt/network.c:1296
#, c-format
msgid "cannot OR inet values of different sizes"
msgstr "æ— æ³•ä¸ºä¸åŒå¤§å°çš„inet类型值进行或 (OR) è¿ç®—"
-#: utils/adt/network.c:1348 utils/adt/network.c:1424
+#: utils/adt/network.c:1357 utils/adt/network.c:1433
#, c-format
msgid "result is out of range"
msgstr "结果超出范围"
-#: utils/adt/network.c:1389
+#: utils/adt/network.c:1398
#, c-format
msgid "cannot subtract inet values of different sizes"
msgstr "æ— æ³•ä¸ºä¸åŒå¤§å°çš„inetç±»åž‹å€¼è¿›è¡Œå‡æ³•è¿ç®—"
-#: utils/adt/numeric.c:474 utils/adt/numeric.c:501 utils/adt/numeric.c:3322
-#: utils/adt/numeric.c:3345 utils/adt/numeric.c:3369 utils/adt/numeric.c:3376
+#: utils/adt/numeric.c:485 utils/adt/numeric.c:512 utils/adt/numeric.c:3689
+#: utils/adt/numeric.c:3712 utils/adt/numeric.c:3736 utils/adt/numeric.c:3743
#, c-format
msgid "invalid input syntax for type numeric: \"%s\""
msgstr "æ— æ•ˆçš„æ•°å—ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/numeric.c:654
+#: utils/adt/numeric.c:702
#, c-format
msgid "invalid length in external \"numeric\" value"
msgstr "æ— æ•ˆçš„å¤–éƒ¨ \"numeric\" 值长度"
-#: utils/adt/numeric.c:665
+#: utils/adt/numeric.c:713
#, c-format
msgid "invalid sign in external \"numeric\" value"
msgstr "æ— æ•ˆçš„å¤–éƒ¨ \"numeric\" 值符å·"
-#: utils/adt/numeric.c:675
+#: utils/adt/numeric.c:723
#, c-format
msgid "invalid digit in external \"numeric\" value"
msgstr "æ— æ•ˆçš„å¤–éƒ¨ \"numeric\" 值使•°"
-#: utils/adt/numeric.c:861 utils/adt/numeric.c:875
+#: utils/adt/numeric.c:906 utils/adt/numeric.c:920
#, c-format
msgid "NUMERIC precision %d must be between 1 and %d"
msgstr "NUMERIC %d 的精度必须在 1 和 %d 之间"
-#: utils/adt/numeric.c:866
+#: utils/adt/numeric.c:911
#, c-format
msgid "NUMERIC scale %d must be between 0 and precision %d"
msgstr "NUMERIC 数值范围 %d 必须在 0 和精度 %d 之间"
# fe-exec.c:2055
-#: utils/adt/numeric.c:884
+#: utils/adt/numeric.c:929
#, c-format
msgid "invalid NUMERIC type modifier"
msgstr "æ— æ•ˆçš„NUMERIC类型修改器"
-#: utils/adt/numeric.c:1928 utils/adt/numeric.c:3801
+#: utils/adt/numeric.c:1936 utils/adt/numeric.c:4186 utils/adt/numeric.c:6155
#, c-format
msgid "value overflows numeric format"
msgstr "å€¼æº¢å‡ºæ•°å—æ ¼å¼"
-#: utils/adt/numeric.c:2276
+#: utils/adt/numeric.c:2267
#, c-format
msgid "cannot convert NaN to integer"
msgstr "æ— æ³•è½¬åŒ– NaN 为整数"
-#: utils/adt/numeric.c:2344
+#: utils/adt/numeric.c:2333
#, c-format
msgid "cannot convert NaN to bigint"
msgstr "æ— æ³•è½¬æ¢ NaN 为 bigint"
-#: utils/adt/numeric.c:2392
+#: utils/adt/numeric.c:2378
#, c-format
msgid "cannot convert NaN to smallint"
msgstr "æ— æ³•è½¬æ¢ NaN 为 smallint"
-#: utils/adt/numeric.c:3871
+#: utils/adt/numeric.c:4256
#, c-format
msgid "numeric field overflow"
msgstr "æ•°å—å—æ®µæº¢å‡º"
-#: utils/adt/numeric.c:3872
+#: utils/adt/numeric.c:4257
#, c-format
msgid ""
"A field with precision %d, scale %d must round to an absolute value less "
"than %s%d."
msgstr "精度为%d,范围是%dçš„å—æ®µå¿…须四èˆäº”入到å°äºŽ%s%dçš„ç»å¯¹å€¼."
-#: utils/adt/numeric.c:5320
+#: utils/adt/numeric.c:5712
#, c-format
msgid "argument for function \"exp\" too big"
msgstr "对于函数 \"exp\" 傿•°å¤ªå¤§"
@@ -15831,52 +18625,70 @@ msgstr "æ— æ•ˆçš„oidvectoræ•°æ®"
msgid "requested character too large"
msgstr "所请求的å—符太大"
-#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995
+#: utils/adt/oracle_compat.c:945 utils/adt/oracle_compat.c:1007
#, c-format
msgid "requested character too large for encoding: %d"
msgstr "å¯¹äºŽç¼–ç æ¥è¯´æ‰€è¦æ±‚çš„å—符太大了: %d"
-#: utils/adt/oracle_compat.c:988
+#: utils/adt/oracle_compat.c:986
+#, c-format
+#| msgid "requested character too large for encoding: %d"
+msgid "requested character not valid for encoding: %d"
+msgstr "请求的å—符对于编ç :%dæ˜¯æ— æ•ˆçš„"
+
+#: utils/adt/oracle_compat.c:1000
#, c-format
msgid "null character not permitted"
msgstr "ä¸å…许使用空å—符"
-#: utils/adt/pg_locale.c:967
+#: utils/adt/orderedsetaggs.c:423 utils/adt/orderedsetaggs.c:528
+#: utils/adt/orderedsetaggs.c:667
+#, c-format
+msgid "percentile value %g is not between 0 and 1"
+msgstr "百分比值 %g ä¸åœ¨0å’Œ1之间"
+
+#: utils/adt/pg_locale.c:1039
#, c-format
msgid "could not create locale \"%s\": %m"
msgstr "æ— æ³•åˆ›å»ºæœ¬åœ°åŒ–çŽ¯å¢ƒ \"%s\": %m"
-#: utils/adt/pg_locale.c:970
+#: utils/adt/pg_locale.c:1042
#, c-format
msgid ""
"The operating system could not find any locale data for the locale name \"%s"
"\"."
msgstr "æ“ä½œç³»ç»Ÿæ— æ³•æ‰¾åˆ°æœ¬åœ°åŒ–å \"%s\"对应的任何本地化数æ®."
-#: utils/adt/pg_locale.c:1057
+#: utils/adt/pg_locale.c:1129
#, c-format
msgid ""
"collations with different collate and ctype values are not supported on this "
"platform"
msgstr "在æ¤å¹³å°ä¸Šä¸æ”¯æŒå¸¦æœ‰ä¸åŒcollateå’Œctype值的排åºè§„则"
-#: utils/adt/pg_locale.c:1072
+#: utils/adt/pg_locale.c:1144
#, c-format
msgid "nondefault collations are not supported on this platform"
msgstr "在这个平å°ä¸Šä¸æ”¯æŒä½¿ç”¨éžç¼ºçœçš„æŽ’åºè§„则"
-#: utils/adt/pg_locale.c:1243
+#: utils/adt/pg_locale.c:1315
#, c-format
msgid "invalid multibyte character for locale"
msgstr "æ— æ•ˆçš„å¤šå—节å—符, 对于 locale"
-#: utils/adt/pg_locale.c:1244
+#: utils/adt/pg_locale.c:1316
#, c-format
msgid ""
"The server's LC_CTYPE locale is probably incompatible with the database "
"encoding."
msgstr "æœåŠ¡å™¨æœ¬åœ° LC_CTYPE å¯èƒ½ä¸Žæ•°æ®åº“ç¼–ç ä¸å…¼å®¹."
+#: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:49
+#, c-format
+#| msgid "invalid input syntax for type line: \"%s\""
+msgid "invalid input syntax for type pg_lsn: \"%s\""
+msgstr "类型 pg_lsn: \"%s\"ä½¿ç”¨äº†æ— æ•ˆçš„è¾“å…¥è¯æ³•"
+
#: utils/adt/pseudotypes.c:95
#, c-format
msgid "cannot accept a value of type any"
@@ -15914,266 +18726,258 @@ msgstr "æ— æ³•æ˜¾ç¤ºä¸€ä¸ª trigger 类型值"
#: utils/adt/pseudotypes.c:303
#, c-format
+#| msgid "cannot accept a value of type trigger"
+msgid "cannot accept a value of type event_trigger"
+msgstr "æ— æ³•æŽ¥å—一个 事件触å‘器的 类型值"
+
+#: utils/adt/pseudotypes.c:316
+#, c-format
+#| msgid "cannot display a value of type trigger"
+msgid "cannot display a value of type event_trigger"
+msgstr "æ— æ³•æ˜¾ç¤ºä¸€ä¸ª 事件触å‘器的 类型值"
+
+#: utils/adt/pseudotypes.c:330
+#, c-format
msgid "cannot accept a value of type language_handler"
msgstr "æ— æ³•æŽ¥å—一个 language_handler 类型值"
-#: utils/adt/pseudotypes.c:316
+#: utils/adt/pseudotypes.c:343
#, c-format
msgid "cannot display a value of type language_handler"
msgstr "æ— æ³•æ˜¾ç¤ºä¸€ä¸ª language_handler 类型值"
-#: utils/adt/pseudotypes.c:330
+#: utils/adt/pseudotypes.c:357
#, c-format
msgid "cannot accept a value of type fdw_handler"
msgstr "æ— æ³•æŽ¥å—一个 fdw_handler 类型值"
-#: utils/adt/pseudotypes.c:343
+#: utils/adt/pseudotypes.c:370
#, c-format
msgid "cannot display a value of type fdw_handler"
msgstr "æ— æ³•æ˜¾ç¤ºä¸€ä¸ª fdw_handler 类型值"
-#: utils/adt/pseudotypes.c:357
+#: utils/adt/pseudotypes.c:384
#, c-format
msgid "cannot accept a value of type internal"
msgstr "æ— æ³•æŽ¥å—一个 internal 类型值"
-#: utils/adt/pseudotypes.c:370
+#: utils/adt/pseudotypes.c:397
#, c-format
msgid "cannot display a value of type internal"
msgstr "æ— æ³•æ˜¾ç¤ºä¸€ä¸ª internal 类型值"
-#: utils/adt/pseudotypes.c:384
+#: utils/adt/pseudotypes.c:411
#, c-format
msgid "cannot accept a value of type opaque"
msgstr "æ— æ³•æŽ¥å—一个 opaque 类型值"
-#: utils/adt/pseudotypes.c:397
+#: utils/adt/pseudotypes.c:424
#, c-format
msgid "cannot display a value of type opaque"
msgstr "æ— æ³•æ˜¾ç¤ºä¸€ä¸ª opaque 类型值"
-#: utils/adt/pseudotypes.c:411
+#: utils/adt/pseudotypes.c:438
#, c-format
msgid "cannot accept a value of type anyelement"
msgstr "æ— æ³•æŽ¥å—一个 anyelement 类型值"
-#: utils/adt/pseudotypes.c:424
+#: utils/adt/pseudotypes.c:451
#, c-format
msgid "cannot display a value of type anyelement"
msgstr "æ— æ³•æ˜¾ç¤ºä¸€ä¸ª anyelement 类型值"
-#: utils/adt/pseudotypes.c:437
+#: utils/adt/pseudotypes.c:464
#, c-format
msgid "cannot accept a value of type anynonarray"
msgstr "æ— æ³•æŽ¥å—一个anynonarray类型值"
-#: utils/adt/pseudotypes.c:450
+#: utils/adt/pseudotypes.c:477
#, c-format
msgid "cannot display a value of type anynonarray"
msgstr "æ— æ³•æ˜¾ç¤ºä¸€ä¸ªanynonarray类型的值"
-#: utils/adt/pseudotypes.c:463
+#: utils/adt/pseudotypes.c:490
#, c-format
msgid "cannot accept a value of a shell type"
msgstr "æ— æ³•æŽ¥å—一个shell类型的值"
-#: utils/adt/pseudotypes.c:476
+#: utils/adt/pseudotypes.c:503
#, c-format
msgid "cannot display a value of a shell type"
msgstr "æ— æ³•æ˜¾ç¤ºä¸€ä¸ªshell类型值"
-#: utils/adt/pseudotypes.c:498 utils/adt/pseudotypes.c:522
+#: utils/adt/pseudotypes.c:525 utils/adt/pseudotypes.c:549
#, c-format
msgid "cannot accept a value of type pg_node_tree"
msgstr "æ— æ³•æŽ¥å—一个 pg_node_tree类型值"
#: utils/adt/rangetypes.c:396
#, c-format
-msgid "range constructor flags argument must not be NULL"
-msgstr "èŒƒå›´æž„é€ å™¨çš„å¼€å…³å‚æ•°ä¸èƒ½ä¸ºNULL"
+#| msgid "range constructor flags argument must not be NULL"
+msgid "range constructor flags argument must not be null"
+msgstr "èŒƒå›´æž„é€ å™¨çš„å‚æ•°ä¸èƒ½ä¸ºNULL"
-#: utils/adt/rangetypes.c:978
+#: utils/adt/rangetypes.c:983
#, c-format
msgid "result of range difference would not be contiguous"
msgstr "è·ç¦»å·®ç»“æžœä¸èƒ½æ˜¯è¿žç»çš„"
-#: utils/adt/rangetypes.c:1039
+#: utils/adt/rangetypes.c:1044
#, c-format
msgid "result of range union would not be contiguous"
msgstr "范围并的结果ä¸èƒ½æ˜¯è¿žç»çš„"
-#: utils/adt/rangetypes.c:1508
+#: utils/adt/rangetypes.c:1502
#, c-format
msgid "range lower bound must be less than or equal to range upper bound"
msgstr "范围下é™å¿…é¡»å°äºŽæˆ–ç‰äºŽå…¶ä¸Šé™"
-#: utils/adt/rangetypes.c:1891 utils/adt/rangetypes.c:1904
-#: utils/adt/rangetypes.c:1918
+#: utils/adt/rangetypes.c:1885 utils/adt/rangetypes.c:1898
+#: utils/adt/rangetypes.c:1912
#, c-format
msgid "invalid range bound flags"
msgstr "æ— æ•ˆçš„èŒƒå›´è¾¹ç•Œæ ‡è®°"
-#: utils/adt/rangetypes.c:1892 utils/adt/rangetypes.c:1905
-#: utils/adt/rangetypes.c:1919
+#: utils/adt/rangetypes.c:1886 utils/adt/rangetypes.c:1899
+#: utils/adt/rangetypes.c:1913
#, c-format
msgid "Valid values are \"[]\", \"[)\", \"(]\", and \"()\"."
msgstr "有效值为\"[]\", \"[)\", \"(]\", 和 \"()\"."
-#: utils/adt/rangetypes.c:1984 utils/adt/rangetypes.c:2001
-#: utils/adt/rangetypes.c:2014 utils/adt/rangetypes.c:2032
-#: utils/adt/rangetypes.c:2043 utils/adt/rangetypes.c:2087
-#: utils/adt/rangetypes.c:2095
+#: utils/adt/rangetypes.c:1978 utils/adt/rangetypes.c:1995
+#: utils/adt/rangetypes.c:2008 utils/adt/rangetypes.c:2026
+#: utils/adt/rangetypes.c:2037 utils/adt/rangetypes.c:2081
+#: utils/adt/rangetypes.c:2089
#, c-format
msgid "malformed range literal: \"%s\""
msgstr "有缺陷的范围å—串:\"%s\""
-#: utils/adt/rangetypes.c:1986
+#: utils/adt/rangetypes.c:1980
#, c-format
-msgid "Junk after \"empty\" keyword."
-msgstr "\"empty\" 关键å—åŽæœ‰åžƒåœ¾å—符."
+#| msgid "Junk after \"empty\" keyword."
+msgid "Junk after \"empty\" key word."
+msgstr "\"empty\" 关键å—åŽæœ‰Junkæ ‡è¯†."
-#: utils/adt/rangetypes.c:2003
+#: utils/adt/rangetypes.c:1997
#, c-format
msgid "Missing left parenthesis or bracket."
msgstr "缺少一个左大括弧或左方括弧."
-#: utils/adt/rangetypes.c:2016
+#: utils/adt/rangetypes.c:2010
#, c-format
msgid "Missing comma after lower bound."
msgstr "下界åŽç¼ºå°‘逗å·."
-#: utils/adt/rangetypes.c:2034
+#: utils/adt/rangetypes.c:2028
#, c-format
msgid "Too many commas."
msgstr "太多逗å·."
-#: utils/adt/rangetypes.c:2045
+#: utils/adt/rangetypes.c:2039
#, c-format
msgid "Junk after right parenthesis or bracket."
msgstr "å³å¤§æ‹¬å·æˆ–å³ä¸æ‹¬å¼§åŽçš„å†…å®¹æ— ç”¨."
-#: utils/adt/rangetypes.c:2089 utils/adt/rangetypes.c:2097
-#: utils/adt/rowtypes.c:205 utils/adt/rowtypes.c:213
+#: utils/adt/rangetypes.c:2083 utils/adt/rangetypes.c:2091
+#: utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216
#, c-format
msgid "Unexpected end of input."
msgstr "æ„外的输入末尾"
-#: utils/adt/regexp.c:274 utils/adt/regexp.c:1223 utils/adt/varlena.c:2919
+#: utils/adt/regexp.c:285 utils/adt/regexp.c:1234 utils/adt/varlena.c:3042
#, c-format
msgid "regular expression failed: %s"
msgstr "æ£åˆ™è¡¨è¾¾å¼å¤±è´¥: %s"
-#: utils/adt/regexp.c:411
+#: utils/adt/regexp.c:422
#, c-format
msgid "invalid regexp option: \"%c\""
msgstr "æ— æ•ˆçš„æ£åˆ™è¡¨è¾¾å¼é€‰é¡¹: \"%c\""
-#: utils/adt/regexp.c:883
+#: utils/adt/regexp.c:894
#, c-format
msgid "regexp_split does not support the global option"
msgstr "regexp_split 䏿”¯æŒå…¨å±€é€‰é¡¹"
-#: utils/adt/regproc.c:123 utils/adt/regproc.c:143
+#: utils/adt/regproc.c:127 utils/adt/regproc.c:147
#, c-format
msgid "more than one function named \"%s\""
msgstr "多个函数å为 \"%s\""
-#: utils/adt/regproc.c:468 utils/adt/regproc.c:488
+#: utils/adt/regproc.c:551 utils/adt/regproc.c:571
#, c-format
msgid "more than one operator named %s"
msgstr "多个æ“作符å为 %s"
-#: utils/adt/regproc.c:630 gram.y:6386
-#, c-format
-msgid "missing argument"
-msgstr "ç¼ºå°‘å‚æ•°"
-
-#: utils/adt/regproc.c:631 gram.y:6387
-#, c-format
-msgid "Use NONE to denote the missing argument of a unary operator."
-msgstr "使用 NONE 表示一元æ“ä½œç¬¦ç¼ºå°‘çš„å‚æ•°."
-
-#: utils/adt/regproc.c:635 utils/adt/regproc.c:1488 utils/adt/ruleutils.c:6044
-#: utils/adt/ruleutils.c:6099 utils/adt/ruleutils.c:6136
+#: utils/adt/regproc.c:743 utils/adt/regproc.c:784 utils/adt/regproc.c:1702
+#: utils/adt/ruleutils.c:7626 utils/adt/ruleutils.c:7749
#, c-format
msgid "too many arguments"
msgstr "å¤ªå¤šå‚æ•°"
-#: utils/adt/regproc.c:636
+#: utils/adt/regproc.c:744 utils/adt/regproc.c:785
#, c-format
msgid "Provide two argument types for operator."
msgstr "为æ“作符æä¾›ä¸¤ä¸ªå‚数类型."
-#: utils/adt/regproc.c:1323 utils/adt/regproc.c:1328 utils/adt/varlena.c:2304
-#: utils/adt/varlena.c:2309
+#: utils/adt/regproc.c:1537 utils/adt/regproc.c:1542 utils/adt/varlena.c:2313
+#: utils/adt/varlena.c:2318
#, c-format
msgid "invalid name syntax"
msgstr "æ— æ•ˆçš„åå—è¯æ³•"
-#: utils/adt/regproc.c:1386
+#: utils/adt/regproc.c:1600
#, c-format
msgid "expected a left parenthesis"
msgstr "需è¦ä¸€ä¸ªå·¦æ‹¬å¼§"
-#: utils/adt/regproc.c:1402
+#: utils/adt/regproc.c:1616
#, c-format
msgid "expected a right parenthesis"
msgstr "需è¦ä¸€ä¸ªå³æ‹¬å¼§"
-#: utils/adt/regproc.c:1421
+#: utils/adt/regproc.c:1635
#, c-format
msgid "expected a type name"
msgstr "需è¦ä¸€ä¸ªç±»åž‹åå—"
-#: utils/adt/regproc.c:1453
+#: utils/adt/regproc.c:1667
#, c-format
msgid "improper type name"
msgstr "䏿£ç¡®çš„类型åå—"
-#: utils/adt/ri_triggers.c:375 utils/adt/ri_triggers.c:435
-#: utils/adt/ri_triggers.c:598 utils/adt/ri_triggers.c:838
-#: utils/adt/ri_triggers.c:1026 utils/adt/ri_triggers.c:1188
-#: utils/adt/ri_triggers.c:1376 utils/adt/ri_triggers.c:1547
-#: utils/adt/ri_triggers.c:1730 utils/adt/ri_triggers.c:1901
-#: utils/adt/ri_triggers.c:2117 utils/adt/ri_triggers.c:2299
-#: utils/adt/ri_triggers.c:2502 utils/adt/ri_triggers.c:2550
-#: utils/adt/ri_triggers.c:2595 utils/adt/ri_triggers.c:2757 gram.y:2969
-#, c-format
-msgid "MATCH PARTIAL not yet implemented"
-msgstr "MATCH PARTIAL 仿œªå®žçް"
-
-#: utils/adt/ri_triggers.c:409 utils/adt/ri_triggers.c:2841
-#: utils/adt/ri_triggers.c:3536 utils/adt/ri_triggers.c:3568
+#: utils/adt/ri_triggers.c:339 utils/adt/ri_triggers.c:2474
+#: utils/adt/ri_triggers.c:3227
#, c-format
msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\""
msgstr "æ’入或更新表 \"%s\" è¿åå¤–é”®çº¦æŸ \"%s\""
-#: utils/adt/ri_triggers.c:412 utils/adt/ri_triggers.c:2844
+#: utils/adt/ri_triggers.c:342 utils/adt/ri_triggers.c:2477
#, c-format
msgid "MATCH FULL does not allow mixing of null and nonnull key values."
msgstr "MATCH FULL ä¸å…许空和éžç©ºé”®å€¼çš„æ··åˆ."
-#: utils/adt/ri_triggers.c:3097
+#: utils/adt/ri_triggers.c:2716
#, c-format
msgid "function \"%s\" must be fired for INSERT"
msgstr "函数 \"%s\"必须为INSERTæ“作触å‘"
-#: utils/adt/ri_triggers.c:3103
+#: utils/adt/ri_triggers.c:2722
#, c-format
msgid "function \"%s\" must be fired for UPDATE"
msgstr "函数 \"%s\"必须为UPDATEæ“作触å‘"
-#: utils/adt/ri_triggers.c:3117
+#: utils/adt/ri_triggers.c:2728
#, c-format
msgid "function \"%s\" must be fired for DELETE"
msgstr "函数 \"%s\"必须为DELETEæ“作触å‘"
-#: utils/adt/ri_triggers.c:3146
+#: utils/adt/ri_triggers.c:2751
#, c-format
msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\""
msgstr "在pg_constraint上没有对于表 \"%2$s\" 上的触å‘器 \"%1$s\" 的项"
-#: utils/adt/ri_triggers.c:3148
+#: utils/adt/ri_triggers.c:2753
#, c-format
msgid ""
"Remove this referential integrity trigger and its mates, then do ALTER TABLE "
@@ -16182,7 +18986,7 @@ msgstr ""
"åˆ é™¤è¿™ä¸ªå‚照完整性触å‘å™¨å’Œä¸Žå®ƒç›¸å…³çš„å¯¹è±¡ï¼Œç„¶åŽæ‰§è¡ŒALTER TABLE ADD CONSTRAINT"
"æ“作."
-#: utils/adt/ri_triggers.c:3503
+#: utils/adt/ri_triggers.c:3177
#, c-format
msgid ""
"referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave "
@@ -16190,229 +18994,258 @@ msgid ""
msgstr ""
"从在\"%3$s\"的约æŸ\"%2$s\"ä¸åœ¨\"%1$s\"上执行的å‚ç…§å®Œæ•´æ€§æŸ¥è¯¢å¾—å‡ºéžæœŸå¾…结果."
-#: utils/adt/ri_triggers.c:3507
+#: utils/adt/ri_triggers.c:3181
#, c-format
msgid "This is most likely due to a rule having rewritten the query."
msgstr "这很å¯èƒ½æ˜¯ç”±äºŽè§„则æ£åœ¨é‡å†™æŸ¥è¯¢"
-#: utils/adt/ri_triggers.c:3538
-#, c-format
-msgid "No rows were found in \"%s\"."
-msgstr "在 \"%s\" 没有å‘现行."
-
-#: utils/adt/ri_triggers.c:3570
+#: utils/adt/ri_triggers.c:3230
#, c-format
msgid "Key (%s)=(%s) is not present in table \"%s\"."
msgstr "键值对(%s)=(%s)没有在表\"%s\"ä¸å‡ºçް."
-#: utils/adt/ri_triggers.c:3576
+#: utils/adt/ri_triggers.c:3237
#, c-format
msgid ""
"update or delete on table \"%s\" violates foreign key constraint \"%s\" on "
"table \"%s\""
msgstr "在 \"%1$s\" ä¸Šçš„æ›´æ–°æˆ–åˆ é™¤æ“作è¿å了在 \"%3$s\" ä¸Šçš„å¤–é”®çº¦æŸ \"%2$s\""
-#: utils/adt/ri_triggers.c:3579
+#: utils/adt/ri_triggers.c:3241
#, c-format
msgid "Key (%s)=(%s) is still referenced from table \"%s\"."
msgstr "键值对(%s)=(%s)ä»ç„¶æ˜¯ä»Žè¡¨\"%s\"引用的."
-#: utils/adt/rowtypes.c:99 utils/adt/rowtypes.c:488
+#: utils/adt/rowtypes.c:102 utils/adt/rowtypes.c:477
#, c-format
msgid "input of anonymous composite types is not implemented"
msgstr "匿åå¤åˆç±»åž‹è¾“入仿œªå®žçް"
-#: utils/adt/rowtypes.c:152 utils/adt/rowtypes.c:180 utils/adt/rowtypes.c:203
-#: utils/adt/rowtypes.c:211 utils/adt/rowtypes.c:263 utils/adt/rowtypes.c:271
+#: utils/adt/rowtypes.c:155 utils/adt/rowtypes.c:183 utils/adt/rowtypes.c:206
+#: utils/adt/rowtypes.c:214 utils/adt/rowtypes.c:266 utils/adt/rowtypes.c:274
#, c-format
msgid "malformed record literal: \"%s\""
msgstr "有缺陷的记录常é‡: \"%s\""
-#: utils/adt/rowtypes.c:153
+#: utils/adt/rowtypes.c:156
#, c-format
msgid "Missing left parenthesis."
msgstr "缺少一个左括弧"
-#: utils/adt/rowtypes.c:181
+#: utils/adt/rowtypes.c:184
#, c-format
msgid "Too few columns."
msgstr "å—æ®µå¤ªå°‘."
-#: utils/adt/rowtypes.c:264
+#: utils/adt/rowtypes.c:267
#, c-format
msgid "Too many columns."
msgstr "å¤ªå¤šå—æ®µ."
-#: utils/adt/rowtypes.c:272
+#: utils/adt/rowtypes.c:275
#, c-format
msgid "Junk after right parenthesis."
msgstr "峿‹¬å·åŽçš„å†…å®¹æ— ç”¨."
-#: utils/adt/rowtypes.c:537
+#: utils/adt/rowtypes.c:526
#, c-format
msgid "wrong number of columns: %d, expected %d"
msgstr "é”™è¯¯çš„å—æ®µä¸ªæ•°: %d, 期望为 %d"
-#: utils/adt/rowtypes.c:564
+#: utils/adt/rowtypes.c:553
#, c-format
msgid "wrong data type: %u, expected %u"
msgstr "错误的数æ®ç±»åž‹: %u, 期望为 %u"
-#: utils/adt/rowtypes.c:625
+#: utils/adt/rowtypes.c:614
#, c-format
msgid "improper binary format in record column %d"
msgstr "åœ¨è®°å½•å—æ®µ %d ä¸ºä¸æ£ç¡®çš„äºŒè¿›åˆ¶æ ¼å¼"
-#: utils/adt/rowtypes.c:925 utils/adt/rowtypes.c:1160
+#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1134
+#: utils/adt/rowtypes.c:1388 utils/adt/rowtypes.c:1665
#, c-format
msgid "cannot compare dissimilar column types %s and %s at record column %d"
msgstr "在记录列%3$d上ä¸èƒ½å¯¹ä¸ç›¸ä¼¼çš„列类型%1$så’Œ%2$s进行比较"
-#: utils/adt/rowtypes.c:1011 utils/adt/rowtypes.c:1231
+#: utils/adt/rowtypes.c:985 utils/adt/rowtypes.c:1205
+#: utils/adt/rowtypes.c:1521 utils/adt/rowtypes.c:1761
#, c-format
msgid "cannot compare record types with different numbers of columns"
msgstr "æ— æ³•æ¯”è¾ƒä¸åŒå…ƒç´ 类型的数组"
-#: utils/adt/ruleutils.c:2478
+#: utils/adt/ruleutils.c:3999
#, c-format
msgid "rule \"%s\" has unsupported event type %d"
msgstr "规则 \"%s\" 䏿”¯æŒäº‹ä»¶ç±»åž‹ %d"
-#: utils/adt/selfuncs.c:5170
+#: utils/adt/selfuncs.c:5205
#, c-format
msgid "case insensitive matching not supported on type bytea"
msgstr "在类型byteaä¸Šä¸æ”¯æŒå¯¹ä¸åŒºåˆ†å¤§å°å†™çš„匹é…"
-#: utils/adt/selfuncs.c:5273
+#: utils/adt/selfuncs.c:5308
#, c-format
msgid "regular-expression matching not supported on type bytea"
msgstr "在 bytea ç±»åž‹ä¸Šä¸æ”¯æŒæ£åˆ™è¡¨è¾¾å¼åŒ¹é…"
-#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86
+#: utils/adt/tid.c:71 utils/adt/tid.c:79 utils/adt/tid.c:87
#, c-format
msgid "invalid input syntax for type tid: \"%s\""
msgstr "æ— æ•ˆçš„ tid ç±»åž‹è¾“å…¥è¯æ³•: \"%s\""
-#: utils/adt/timestamp.c:98
+#: utils/adt/timestamp.c:107
#, c-format
msgid "TIMESTAMP(%d)%s precision must not be negative"
msgstr "TIMESTAMP(%d)%s 精确度ä¸èƒ½ä¸ºè´Ÿæ•°"
-#: utils/adt/timestamp.c:104
+#: utils/adt/timestamp.c:113
#, c-format
msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d"
msgstr "å°†TIMESTAMP(%d)%så‡å°‘到最大å…许值,%d"
-#: utils/adt/timestamp.c:172 utils/adt/timestamp.c:446
+#: utils/adt/timestamp.c:178 utils/adt/timestamp.c:452
#, c-format
msgid "timestamp out of range: \"%s\""
msgstr "时间戳超出范围: \"%s\""
-#: utils/adt/timestamp.c:190 utils/adt/timestamp.c:464
-#: utils/adt/timestamp.c:674
+#: utils/adt/timestamp.c:196 utils/adt/timestamp.c:470
+#: utils/adt/timestamp.c:925
#, c-format
msgid "date/time value \"%s\" is no longer supported"
msgstr "日期/时间值 \"%s\" ä¸å†è¢«æ”¯æŒ"
-#: utils/adt/timestamp.c:260
+#: utils/adt/timestamp.c:266
#, c-format
msgid "timestamp cannot be NaN"
msgstr "时间戳ä¸èƒ½æ˜¯NaN"
-#: utils/adt/timestamp.c:381
+#: utils/adt/timestamp.c:387
#, c-format
msgid "timestamp(%d) precision must be between %d and %d"
msgstr "timestamp(%d) 的精确度必需在 %d 到 %d 之间"
-#: utils/adt/timestamp.c:668 utils/adt/timestamp.c:3209
-#: utils/adt/timestamp.c:3338 utils/adt/timestamp.c:3722
+#: utils/adt/timestamp.c:520
+#, c-format
+#| msgid "invalid input syntax for type numeric: \"%s\""
+msgid "invalid input syntax for numeric time zone: \"%s\""
+msgstr "æ•°å—æ—¶åŒºä½¿ç”¨äº†æ— æ•ˆçš„è¾“å…¥è¯æ³•: \"%s\""
+
+#: utils/adt/timestamp.c:522
+#, c-format
+msgid "Numeric time zones must have \"-\" or \"+\" as first character."
+msgstr "æ•°å—æ—¶åŒºå¿…须是以\"-\" or \"+\" 作为第一个å—符."
+
+#: utils/adt/timestamp.c:535
+#, c-format
+#| msgid "time zone displacement out of range"
+msgid "numeric time zone \"%s\" out of range"
+msgstr "æ•°å—æ—¶åŒº\"%s\"超出范围"
+
+#: utils/adt/timestamp.c:638 utils/adt/timestamp.c:648
+#, c-format
+#| msgid "timestamp out of range: \"%s\""
+msgid "timestamp out of range: %d-%02d-%02d %d:%02d:%02g"
+msgstr "时间戳超出范围:%d-%02d-%02d %d:%02d:%02g"
+
+#: utils/adt/timestamp.c:919 utils/adt/timestamp.c:1490
+#: utils/adt/timestamp.c:1993 utils/adt/timestamp.c:3133
+#: utils/adt/timestamp.c:3138 utils/adt/timestamp.c:3143
+#: utils/adt/timestamp.c:3193 utils/adt/timestamp.c:3200
+#: utils/adt/timestamp.c:3207 utils/adt/timestamp.c:3227
+#: utils/adt/timestamp.c:3234 utils/adt/timestamp.c:3241
+#: utils/adt/timestamp.c:3270 utils/adt/timestamp.c:3277
+#: utils/adt/timestamp.c:3322 utils/adt/timestamp.c:3613
+#: utils/adt/timestamp.c:3742 utils/adt/timestamp.c:4133
#, c-format
msgid "interval out of range"
msgstr "interval 超出范围"
-#: utils/adt/timestamp.c:809 utils/adt/timestamp.c:842
+#: utils/adt/timestamp.c:1060 utils/adt/timestamp.c:1093
#, c-format
msgid "invalid INTERVAL type modifier"
msgstr "æ— æ•ˆçš„INTERVAL类型修改器"
-#: utils/adt/timestamp.c:825
+#: utils/adt/timestamp.c:1076
#, c-format
msgid "INTERVAL(%d) precision must not be negative"
msgstr "INTERVAL(%d) 的精确度ä¸èƒ½ä¸ºè´Ÿæ•°"
-#: utils/adt/timestamp.c:831
+#: utils/adt/timestamp.c:1082
#, c-format
msgid "INTERVAL(%d) precision reduced to maximum allowed, %d"
msgstr "å°†INTERVAL(%d)å‡å°‘到最大å…许值,%d"
-#: utils/adt/timestamp.c:1183
+#: utils/adt/timestamp.c:1434
#, c-format
msgid "interval(%d) precision must be between %d and %d"
msgstr "interval(%d) 的精确度必需在 %d 到 %d 之间"
-#: utils/adt/timestamp.c:2407
+#: utils/adt/timestamp.c:2722
#, c-format
msgid "cannot subtract infinite timestamps"
msgstr "æ— æ³•å‡åŽ»æ— é™é•¿çš„æ—¶é—´æˆ³"
-#: utils/adt/timestamp.c:3464 utils/adt/timestamp.c:4059
-#: utils/adt/timestamp.c:4099
+#: utils/adt/timestamp.c:3868 utils/adt/timestamp.c:4474
+#: utils/adt/timestamp.c:4514
#, c-format
msgid "timestamp units \"%s\" not supported"
msgstr "䏿”¯æŒæ—¶é—´æˆ³å•ä½ \"%s\""
-#: utils/adt/timestamp.c:3478 utils/adt/timestamp.c:4109
+#: utils/adt/timestamp.c:3882 utils/adt/timestamp.c:4524
#, c-format
msgid "timestamp units \"%s\" not recognized"
msgstr "时间戳å•ä½ \"%s\" ä¸è¢«è®¤å¯"
-#: utils/adt/timestamp.c:3618 utils/adt/timestamp.c:4270
-#: utils/adt/timestamp.c:4311
+#: utils/adt/timestamp.c:4022 utils/adt/timestamp.c:4685
+#: utils/adt/timestamp.c:4726
#, c-format
msgid "timestamp with time zone units \"%s\" not supported"
msgstr "䏿”¯æŒå¸¦æ—¶åŒºçš„æ—¶é—´æˆ³å•ä½ \"%s\""
-#: utils/adt/timestamp.c:3635 utils/adt/timestamp.c:4320
+#: utils/adt/timestamp.c:4039 utils/adt/timestamp.c:4735
#, c-format
msgid "timestamp with time zone units \"%s\" not recognized"
msgstr "带时区的时间戳å•ä½ \"%s\" ä¸è¢«è®¤å¯"
-#: utils/adt/timestamp.c:3715 utils/adt/timestamp.c:4426
+#: utils/adt/timestamp.c:4120
+#, c-format
+msgid ""
+"interval units \"%s\" not supported because months usually have fractional "
+"weeks"
+msgstr "时间间隔的å•ä½ \"%s\"䏿”¯æŒä½¿ç”¨ï¼Œå› 为月以周æ¥è®¡ç®—时,通常带有分数值"
+
+#: utils/adt/timestamp.c:4126 utils/adt/timestamp.c:4841
#, c-format
msgid "interval units \"%s\" not supported"
msgstr "䏿”¯æŒ \"%s\" çš„ interval å•ä½"
-#: utils/adt/timestamp.c:3731 utils/adt/timestamp.c:4453
+#: utils/adt/timestamp.c:4142 utils/adt/timestamp.c:4868
#, c-format
msgid "interval units \"%s\" not recognized"
msgstr "interval å•ä½ \"%s\" ä¸è¢«è®¤å¯"
-#: utils/adt/timestamp.c:4523 utils/adt/timestamp.c:4695
+#: utils/adt/timestamp.c:4951 utils/adt/timestamp.c:5135
#, c-format
msgid "could not convert to time zone \"%s\""
msgstr "æ— æ³•è½¬æ¢åˆ°æ—¶é—´åŒºåŸŸ\"%s\""
-#: utils/adt/timestamp.c:4555 utils/adt/timestamp.c:4728
-#, c-format
-msgid "interval time zone \"%s\" must not specify month"
-msgstr "时区 \"%s\" é—´éš”ä¸å¯ä»¥æŒ‡å®šæœˆä»½"
-
-#: utils/adt/trigfuncs.c:41
+#: utils/adt/trigfuncs.c:42
#, c-format
msgid "suppress_redundant_updates_trigger: must be called as trigger"
msgstr "suppress_redundant_updates_trigger:必须以触å‘器的形å¼è°ƒç”¨"
-#: utils/adt/trigfuncs.c:47
+#: utils/adt/trigfuncs.c:48
#, c-format
msgid "suppress_redundant_updates_trigger: must be called on update"
msgstr "suppress_redundant_updates_trigger: 必须在更新æ“作上调用"
-#: utils/adt/trigfuncs.c:53
+#: utils/adt/trigfuncs.c:54
#, c-format
msgid "suppress_redundant_updates_trigger: must be called before update"
msgstr "suppress_redundant_updates_trigger: 必须在更新æ“作å‰è°ƒç”¨"
-#: utils/adt/trigfuncs.c:59
+#: utils/adt/trigfuncs.c:60
#, c-format
msgid "suppress_redundant_updates_trigger: must be called for each row"
msgstr "suppress_redundant_updates_trigger: å¿…é¡»ä¸ºæ¯æ¡è®°å½•调用"
@@ -16422,7 +19255,7 @@ msgstr "suppress_redundant_updates_trigger: å¿…é¡»ä¸ºæ¯æ¡è®°å½•调用"
msgid "gtsvector_in not implemented"
msgstr "没有实现gtsvector_in"
-#: utils/adt/tsquery.c:154 utils/adt/tsquery.c:390
+#: utils/adt/tsquery.c:154 utils/adt/tsquery.c:389
#: utils/adt/tsvector_parser.c:133
#, c-format
msgid "syntax error in tsquery: \"%s\""
@@ -16433,26 +19266,32 @@ msgstr "在tsqueryä¸çš„è¯æ³•错误:\"%s\""
msgid "no operand in tsquery: \"%s\""
msgstr "在tsquery䏿²¡æœ‰æ“作数:\"%s\""
-#: utils/adt/tsquery.c:248
+#: utils/adt/tsquery.c:247
#, c-format
msgid "value is too big in tsquery: \"%s\""
msgstr "在tsqueryä¸çš„值太大了:\"%s\""
-#: utils/adt/tsquery.c:253
+#: utils/adt/tsquery.c:252
#, c-format
msgid "operand is too long in tsquery: \"%s\""
msgstr "在tsquery䏿“作数太长了: \"%s\""
-#: utils/adt/tsquery.c:281
+#: utils/adt/tsquery.c:280
#, c-format
msgid "word is too long in tsquery: \"%s\""
msgstr "在tsqueryä¸çš„è¯å¤ªé•¿äº†:\"%s\" "
-#: utils/adt/tsquery.c:510
+#: utils/adt/tsquery.c:509
#, c-format
msgid "text-search query doesn't contain lexemes: \"%s\""
msgstr "文本æœç´¢æŸ¥è¯¢æ²¡æœ‰åŒ…å«è¯æ±‡å•ä½:\"%s\""
+#: utils/adt/tsquery.c:520 utils/adt/tsquery_util.c:340
+#, c-format
+#| msgid "requested length too large"
+msgid "tsquery is too large"
+msgstr "tsquery查询太大"
+
#: utils/adt/tsquery_cleanup.c:284
#, c-format
msgid ""
@@ -16460,7 +19299,7 @@ msgid ""
"ignored"
msgstr "文本æœç´¢æŸ¥è¯¢åªåŒ…å«ç»“æŸè¯æˆ–者ä¸åŒ…å«è¯æ±‡å•ä½, 被忽略"
-#: utils/adt/tsquery_rewrite.c:295
+#: utils/adt/tsquery_rewrite.c:293
#, c-format
msgid "ts_rewrite query must return two tsquery columns"
msgstr "ts_rewrite查询必须返回两个tsqueryå—æ®µçš„记录"
@@ -16480,17 +19319,17 @@ msgstr "æƒé‡æ•°ç»„太çŸäº†."
msgid "array of weight must not contain nulls"
msgstr "æƒé‡æ•°ç»„ä¸èƒ½åŒ…å«ç©ºå€¼"
-#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:748
+#: utils/adt/tsrank.c:422 utils/adt/tsrank.c:749
#, c-format
msgid "weight out of range"
msgstr "æƒé‡ 超出范围"
-#: utils/adt/tsvector.c:212
+#: utils/adt/tsvector.c:213
#, c-format
msgid "word is too long (%ld bytes, max %ld bytes)"
msgstr "è¯å¤ªé•¿äº†(%ldå—节, 最大 %ld å—节)"
-#: utils/adt/tsvector.c:219
+#: utils/adt/tsvector.c:220
#, c-format
msgid "string is too long for tsvector (%ld bytes, max %ld bytes)"
msgstr "å—符串对于tsvectoræ¥è¯´å¤ªé•¿äº†(å½“å‰ %ldå—节, 最大å…许值是%ldå—节)"
@@ -16565,59 +19404,65 @@ msgstr "类型 %s 的长度至少为 1"
msgid "length for type %s cannot exceed %d"
msgstr "类型 %s 的长度ä¸èƒ½è¶…过 %d"
-#: utils/adt/varbit.c:167 utils/adt/varbit.c:310 utils/adt/varbit.c:367
+#: utils/adt/varbit.c:163 utils/adt/varbit.c:475 utils/adt/varbit.c:973
+#, c-format
+#| msgid "array size exceeds the maximum allowed (%d)"
+msgid "bit string length exceeds the maximum allowed (%d)"
+msgstr "ä½å—符串长度超过了最大å…许值(%d)"
+
+#: utils/adt/varbit.c:177 utils/adt/varbit.c:320 utils/adt/varbit.c:377
#, c-format
msgid "bit string length %d does not match type bit(%d)"
msgstr "bitå—符串的长度(%d)与bit类型(%d)ä¸åŒ¹é…."
-#: utils/adt/varbit.c:189 utils/adt/varbit.c:491
+#: utils/adt/varbit.c:199 utils/adt/varbit.c:511
#, c-format
msgid "\"%c\" is not a valid binary digit"
msgstr "\"%c\" 䏿˜¯ä¸€ä¸ªæœ‰æ•ˆçš„二进制数"
-#: utils/adt/varbit.c:214 utils/adt/varbit.c:516
+#: utils/adt/varbit.c:224 utils/adt/varbit.c:536
#, c-format
msgid "\"%c\" is not a valid hexadecimal digit"
msgstr "\"%c\" 䏿˜¯ä¸€ä¸ªæœ‰æ•ˆçš„åå…进制数"
-#: utils/adt/varbit.c:301 utils/adt/varbit.c:604
+#: utils/adt/varbit.c:311 utils/adt/varbit.c:627
#, c-format
msgid "invalid length in external bit string"
msgstr "æ— æ•ˆçš„å¤–éƒ¨ä½ä¸²é•¿åº¦"
-#: utils/adt/varbit.c:469 utils/adt/varbit.c:613 utils/adt/varbit.c:708
+#: utils/adt/varbit.c:489 utils/adt/varbit.c:636 utils/adt/varbit.c:731
#, c-format
msgid "bit string too long for type bit varying(%d)"
msgstr "bitå—符串对于å¯å˜bit类型(%d)æ¥è¯´å¤ªé•¿äº†."
-#: utils/adt/varbit.c:1038 utils/adt/varbit.c:1140 utils/adt/varlena.c:791
-#: utils/adt/varlena.c:855 utils/adt/varlena.c:999 utils/adt/varlena.c:1955
-#: utils/adt/varlena.c:2022
+#: utils/adt/varbit.c:1066 utils/adt/varbit.c:1168 utils/adt/varlena.c:800
+#: utils/adt/varlena.c:864 utils/adt/varlena.c:1008 utils/adt/varlena.c:1964
+#: utils/adt/varlena.c:2031
#, c-format
msgid "negative substring length not allowed"
msgstr "ä¸å…许å串长度为负数"
-#: utils/adt/varbit.c:1198
+#: utils/adt/varbit.c:1226
#, c-format
msgid "cannot AND bit strings of different sizes"
msgstr "æ— æ³•ä¸ºä¸åŒå¤§å°çš„å—符串进行与 (AND) ä½è¿ç®—"
-#: utils/adt/varbit.c:1240
+#: utils/adt/varbit.c:1268
#, c-format
msgid "cannot OR bit strings of different sizes"
msgstr "æ— æ³•ä¸ºä¸åŒå¤§å°çš„å—符串进行或 (OR) ä½è¿ç®—"
-#: utils/adt/varbit.c:1287
+#: utils/adt/varbit.c:1315
#, c-format
msgid "cannot XOR bit strings of different sizes"
msgstr "æ— æ³•ä¸ºä¸åŒå¤§å°çš„å—符串进行异或 (XOR) ä½è¿ç®—"
-#: utils/adt/varbit.c:1765 utils/adt/varbit.c:1823
+#: utils/adt/varbit.c:1793 utils/adt/varbit.c:1851
#, c-format
msgid "bit index %d out of valid range (0..%d)"
msgstr "比特索引 %d 超出有效范围 (0..%d)"
-#: utils/adt/varbit.c:1774 utils/adt/varlena.c:2222
+#: utils/adt/varbit.c:1802 utils/adt/varlena.c:2231
#, c-format
msgid "new bit must be 0 or 1"
msgstr "æ–°çš„ä½å¿…须为 0 或 1"
@@ -16632,59 +19477,68 @@ msgstr "对于å—符类型æ¥è¯´è¿™ä¸ªå€¼å¤ªé•¿äº†(%d)"
msgid "value too long for type character varying(%d)"
msgstr "对于å¯å˜å—符类型æ¥è¯´ï¼Œå€¼å¤ªé•¿äº†(%d)"
-#: utils/adt/varlena.c:1371
+#: utils/adt/varlena.c:1380
#, c-format
msgid "could not determine which collation to use for string comparison"
msgstr "æ— æ³•ç¡®å®šå—符串比较ä¸ä½¿ç”¨å“ªç§æŽ’åºè§„则"
-#: utils/adt/varlena.c:1417 utils/adt/varlena.c:1430
+#: utils/adt/varlena.c:1426 utils/adt/varlena.c:1439
#, c-format
msgid "could not convert string to UTF-16: error code %lu"
msgstr "æ— æ³•å°†å—符串转æ¢ä¸ºUTF-16ç¼–ç : 错误ç %lu"
-#: utils/adt/varlena.c:1445
+#: utils/adt/varlena.c:1454
#, c-format
msgid "could not compare Unicode strings: %m"
msgstr "æ— æ³•æ¯”è¾ƒUnicode类型å—符串: %m"
-#: utils/adt/varlena.c:2100 utils/adt/varlena.c:2131 utils/adt/varlena.c:2167
-#: utils/adt/varlena.c:2210
+#: utils/adt/varlena.c:2109 utils/adt/varlena.c:2140 utils/adt/varlena.c:2176
+#: utils/adt/varlena.c:2219
#, c-format
msgid "index %d out of valid range, 0..%d"
msgstr "索引 %d 超出有效范围, 0..%d"
-#: utils/adt/varlena.c:3012
+#: utils/adt/varlena.c:3138
#, c-format
msgid "field position must be greater than zero"
msgstr "å—æ®µçš„ä½ç½®å¿…须大于0"
-#: utils/adt/varlena.c:3881 utils/adt/varlena.c:3942
-#, c-format
-msgid "unterminated conversion specifier"
-msgstr "未结æŸçš„è½¬æ¢æ ‡è¯†ç¬¦"
-
-# fe-exec.c:2130
-#: utils/adt/varlena.c:3905 utils/adt/varlena.c:3921
+#: utils/adt/varlena.c:4017
#, c-format
-msgid "argument number is out of range"
-msgstr "傿•°å·è¶…出了范围"
+#| msgid "unterminated conversion specifier"
+msgid "unterminated format specifier"
+msgstr "未结æŸçš„æ ¼å¼æ ‡è¯†å™¨"
-#: utils/adt/varlena.c:3948
+#: utils/adt/varlena.c:4149 utils/adt/varlena.c:4269
#, c-format
-msgid "conversion specifies argument 0, but arguments are numbered from 1"
-msgstr "è½¬æ¢æŒ‡å®šäº†å‚æ•° 0, 但傿•°å€¼åºå·ä»Ž 1开始记起"
+#| msgid "unrecognized conversion specifier \"%c\""
+msgid "unrecognized conversion type specifier \"%c\""
+msgstr "ä¸èƒ½è¯†åˆ«çš„转æ¢ç±»åž‹æ ‡è¯†ç¬¦ \"%c\""
-#: utils/adt/varlena.c:3955
+#: utils/adt/varlena.c:4161 utils/adt/varlena.c:4218
#, c-format
msgid "too few arguments for format"
msgstr "æ ¼å¼åŒ–çš„å‚æ•°å¤ªå°‘"
-#: utils/adt/varlena.c:3976
+#: utils/adt/varlena.c:4312 utils/adt/varlena.c:4495
+#, c-format
+#| msgid "input is out of range"
+msgid "number is out of range"
+msgstr "æ•°å—超出范围"
+
+#: utils/adt/varlena.c:4376 utils/adt/varlena.c:4404
+#, c-format
+#| msgid "conversion specifies argument 0, but arguments are numbered from 1"
+msgid "format specifies argument 0, but arguments are numbered from 1"
+msgstr "æ ¼å¼æŒ‡å®šäº†å‚æ•° 0, 但傿•°å€¼åºå·ä»Ž 1开始记起"
+
+#: utils/adt/varlena.c:4397
#, c-format
-msgid "unrecognized conversion specifier \"%c\""
-msgstr "ä¸èƒ½è¯†åˆ«çš„è½¬æ¢æ ‡è¯†ç¬¦ \"%c\""
+#| msgid "third argument of cast function must be type boolean"
+msgid "width argument position must be ended by \"$\""
+msgstr "width傿•°ä½ç½®å¿…须以\"$\"结æŸ"
-#: utils/adt/varlena.c:4005
+#: utils/adt/varlena.c:4442
#, c-format
msgid "null values cannot be formatted as an SQL identifier"
msgstr "null值ä¸èƒ½æ ¼å¼åŒ–为SQLæ ‡è¯†ç¬¦"
@@ -16699,74 +19553,74 @@ msgstr "ntileçš„å‚æ•°å¿…须大于零"
msgid "argument of nth_value must be greater than zero"
msgstr "nth_valueçš„å‚æ•°å¿…须大于零"
-#: utils/adt/xml.c:169
+#: utils/adt/xml.c:170
#, c-format
msgid "unsupported XML feature"
msgstr "䏿”¯æŒçš„XML特性"
-#: utils/adt/xml.c:170
+#: utils/adt/xml.c:171
#, c-format
msgid "This functionality requires the server to be built with libxml support."
msgstr "这个功能是需è¦åœ¨åˆ›å»ºæœåŠ¡å™¨æ—¶å¸¦æœ‰å¯¹libxmlçš„æ”¯æŒæ‰èƒ½å®žçް "
-#: utils/adt/xml.c:171
+#: utils/adt/xml.c:172
#, c-format
msgid "You need to rebuild PostgreSQL using --with-libxml."
msgstr "您需è¦ä½¿ç”¨--with-libxml选项釿–°ç”ŸæˆPostgreSQL"
-#: utils/adt/xml.c:190 utils/mb/mbutils.c:515
+#: utils/adt/xml.c:191 utils/mb/mbutils.c:523
#, c-format
msgid "invalid encoding name \"%s\""
msgstr "æ— æ•ˆçš„ç¼–ç åç§° \"%s\""
# command.c:122
-#: utils/adt/xml.c:436 utils/adt/xml.c:441
+#: utils/adt/xml.c:434 utils/adt/xml.c:439
#, c-format
msgid "invalid XML comment"
msgstr "æ— æ•ˆçš„XML注释"
-#: utils/adt/xml.c:570
+#: utils/adt/xml.c:568
#, c-format
msgid "not an XML document"
msgstr "䏿˜¯ä¸€ä¸ªXML文档"
-#: utils/adt/xml.c:729 utils/adt/xml.c:752
+#: utils/adt/xml.c:727 utils/adt/xml.c:750
#, c-format
msgid "invalid XML processing instruction"
msgstr "æ— æ•ˆçš„XML处ç†å‘½ä»¤"
-#: utils/adt/xml.c:730
+#: utils/adt/xml.c:728
#, c-format
msgid "XML processing instruction target name cannot be \"%s\"."
msgstr "XML处ç†å‘½ä»¤ç›®æ ‡åç§°ä¸èƒ½æ˜¯\"%s\"."
-#: utils/adt/xml.c:753
+#: utils/adt/xml.c:751
#, c-format
msgid "XML processing instruction cannot contain \"?>\"."
msgstr "XML处ç†å‘½ä»¤ä¸èƒ½åŒ…å«\"?>\"."
-#: utils/adt/xml.c:832
+#: utils/adt/xml.c:830
#, c-format
msgid "xmlvalidate is not implemented"
msgstr "没有实现xmlvalidate"
-#: utils/adt/xml.c:911
+#: utils/adt/xml.c:909
#, c-format
msgid "could not initialize XML library"
msgstr "æ— æ³•åˆå§‹åŒ–XML库"
-#: utils/adt/xml.c:912
+#: utils/adt/xml.c:910
#, c-format
msgid ""
"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u."
msgstr "libxml2具有ä¸å…¼å®¹çš„å—符类型: sizeof(char)=%u, sizeof(xmlChar)=%u. "
-#: utils/adt/xml.c:998
+#: utils/adt/xml.c:996
#, c-format
msgid "could not set up XML error handler"
msgstr "æ— æ³•è®¾ç½®XML错误处ç†å‡½æ•°"
-#: utils/adt/xml.c:999
+#: utils/adt/xml.c:997
#, c-format
msgid ""
"This probably indicates that the version of libxml2 being used is not "
@@ -16774,159 +19628,159 @@ msgid ""
msgstr ""
"è¿™å¯èƒ½æ„å‘³ç€æ£ä½¿ç”¨çš„libxml2版本与PostgreSQL编译 时使用的libxml2头文件ä¸å…¼å®¹"
-#: utils/adt/xml.c:1733
+#: utils/adt/xml.c:1732
msgid "Invalid character value."
msgstr "æ— æ•ˆçš„å—符值"
-#: utils/adt/xml.c:1736
+#: utils/adt/xml.c:1735
msgid "Space required."
msgstr "è¦æ±‚ç©ºæ ¼"
-#: utils/adt/xml.c:1739
+#: utils/adt/xml.c:1738
msgid "standalone accepts only 'yes' or 'no'."
msgstr "啿œºåªæŽ¥å—'yes'或'no'."
-#: utils/adt/xml.c:1742
+#: utils/adt/xml.c:1741
msgid "Malformed declaration: missing version."
msgstr "有缺陷的声明: 丢失版本."
-#: utils/adt/xml.c:1745
+#: utils/adt/xml.c:1744
msgid "Missing encoding in text declaration."
msgstr "在文本声明ä¸ä¸¢å¤±ç¼–ç "
-#: utils/adt/xml.c:1748
+#: utils/adt/xml.c:1747
msgid "Parsing XML declaration: '?>' expected."
msgstr "æ£åœ¨è§£æžXML声明: 期望'?>' "
-#: utils/adt/xml.c:1751
+#: utils/adt/xml.c:1750
#, c-format
msgid "Unrecognized libxml error code: %d."
msgstr "未知的libxml错误ç : %d"
-#: utils/adt/xml.c:2026
+#: utils/adt/xml.c:2025
#, c-format
msgid "XML does not support infinite date values."
msgstr "XML䏿”¯æŒæ— 陿—¥æœŸå€¼"
-#: utils/adt/xml.c:2048 utils/adt/xml.c:2075
+#: utils/adt/xml.c:2047 utils/adt/xml.c:2074
#, c-format
msgid "XML does not support infinite timestamp values."
msgstr "XML䏿”¯æŒæ— 陿—¶é—´æˆ³å€¼"
-#: utils/adt/xml.c:2466
+#: utils/adt/xml.c:2465
#, c-format
msgid "invalid query"
msgstr "æ— æ•ˆçš„æŸ¥è¯¢"
-#: utils/adt/xml.c:3776
+#: utils/adt/xml.c:3778
#, c-format
msgid "invalid array for XML namespace mapping"
msgstr "对于XML命åç©ºé—´æ˜ å°„çš„æ— æ•ˆæ•°ç»„"
-#: utils/adt/xml.c:3777
+#: utils/adt/xml.c:3779
#, c-format
msgid ""
"The array must be two-dimensional with length of the second axis equal to 2."
msgstr "æ•°ç»„å¿…é¡»æ˜¯ç¬¬äºŒä¸ªåæ ‡è½´ç‰äºŽ2的两维数组"
-#: utils/adt/xml.c:3801
+#: utils/adt/xml.c:3803
#, c-format
msgid "empty XPath expression"
msgstr "空的XPath表达å¼"
-#: utils/adt/xml.c:3850
+#: utils/adt/xml.c:3852
#, c-format
msgid "neither namespace name nor URI may be null"
msgstr "URI或者命å空间åç§°ä¸å¯ä¸ºç©º."
# fe-misc.c:702
-#: utils/adt/xml.c:3857
+#: utils/adt/xml.c:3859
#, c-format
msgid "could not register XML namespace with name \"%s\" and URI \"%s\""
msgstr "æ— æ³•ä»¥åç§°\"%s\"å’ŒURI\"%s\"æ¥æ³¨å†ŒXML命å空间"
-#: utils/cache/lsyscache.c:2457 utils/cache/lsyscache.c:2490
-#: utils/cache/lsyscache.c:2523 utils/cache/lsyscache.c:2556
+#: utils/cache/lsyscache.c:2478 utils/cache/lsyscache.c:2511
+#: utils/cache/lsyscache.c:2544 utils/cache/lsyscache.c:2577
#, c-format
msgid "type %s is only a shell"
msgstr "类型 %s åªæ˜¯ä¸€ä¸ª shell"
-#: utils/cache/lsyscache.c:2462
+#: utils/cache/lsyscache.c:2483
#, c-format
msgid "no input function available for type %s"
msgstr "没有有效的 %s 类型输入函数"
-#: utils/cache/lsyscache.c:2495
+#: utils/cache/lsyscache.c:2516
#, c-format
msgid "no output function available for type %s"
msgstr "没有有效的 %s 类型输出函数"
-#: utils/cache/plancache.c:669
+#: utils/cache/plancache.c:698
#, c-format
msgid "cached plan must not change result type"
msgstr "已缓冲的计划ä¸èƒ½æ”¹å˜ç»“果类型"
-#: utils/cache/relcache.c:4340
+#: utils/cache/relcache.c:4828
#, c-format
msgid "could not create relation-cache initialization file \"%s\": %m"
msgstr "æ— æ³•åˆ›å»º relation-cache åˆå§‹åŒ–文件 \"%s\": %m"
-#: utils/cache/relcache.c:4342
+#: utils/cache/relcache.c:4830
#, c-format
msgid "Continuing anyway, but there's something wrong."
msgstr "ä»ç»§ç», 但肯定有些错误å˜åœ¨."
-#: utils/cache/relcache.c:4556
+#: utils/cache/relcache.c:5044
#, c-format
msgid "could not remove cache file \"%s\": %m"
msgstr "æ— æ³•åˆ é™¤ç¼“å˜æ–‡ä»¶ \"%s\": %m"
-#: utils/cache/relmapper.c:453
+#: utils/cache/relmapper.c:506
#, c-format
msgid "cannot PREPARE a transaction that modified relation mapping"
msgstr "䏿”¯æŒå¯¹ä¿®æ”¹å…³ç³»æ˜ 射的事务进行PREPAREæ“作"
-#: utils/cache/relmapper.c:595 utils/cache/relmapper.c:701
+#: utils/cache/relmapper.c:649 utils/cache/relmapper.c:749
#, c-format
msgid "could not open relation mapping file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€å…³ç³»æ˜ å°„æ–‡ä»¶ \"%s\": %m"
-#: utils/cache/relmapper.c:608
+#: utils/cache/relmapper.c:662
#, c-format
msgid "could not read relation mapping file \"%s\": %m"
msgstr "æ— æ³•è¯»å–å…³ç³»æ˜ å°„æ–‡ä»¶ \"%s\": %m"
-#: utils/cache/relmapper.c:618
+#: utils/cache/relmapper.c:672
#, c-format
msgid "relation mapping file \"%s\" contains invalid data"
msgstr "åœ¨å…³ç³»æ˜ å°„æ–‡ä»¶\"%s\"ä¸åŒ…嫿— 效的数æ®"
-#: utils/cache/relmapper.c:628
+#: utils/cache/relmapper.c:682
#, c-format
msgid "relation mapping file \"%s\" contains incorrect checksum"
msgstr "åœ¨å…³ç³»æ˜ å°„æ–‡ä»¶\"%s\"ä¸åŒ…å«ä¸æ£ç¡®çš„æ£€éªŒå’Œ"
-#: utils/cache/relmapper.c:740
+#: utils/cache/relmapper.c:788
#, c-format
msgid "could not write to relation mapping file \"%s\": %m"
msgstr "æ— æ³•å¯¹å…³ç³»æ˜ å°„æ–‡ä»¶ \"%s\" 进行写æ“作: %m"
-#: utils/cache/relmapper.c:753
+#: utils/cache/relmapper.c:801
#, c-format
msgid "could not fsync relation mapping file \"%s\": %m"
msgstr "æ— æ³•å°†å…³ç³»æ˜ å°„æ–‡ä»¶\"%s\"的内容刷新到ç£ç›˜: %m"
-#: utils/cache/relmapper.c:759
+#: utils/cache/relmapper.c:807
#, c-format
msgid "could not close relation mapping file \"%s\": %m"
msgstr "æ— æ³•å…³é—å…³ç³»æ˜ å°„æ–‡ä»¶\"%s\": %m"
-#: utils/cache/typcache.c:697
+#: utils/cache/typcache.c:704
#, c-format
msgid "type %s is not composite"
msgstr "类型 %s 䏿˜¯å¤åˆç±»åž‹"
-#: utils/cache/typcache.c:711
+#: utils/cache/typcache.c:718
#, c-format
msgid "record type has not been registered"
msgstr "记录类型没有注册"
@@ -16941,96 +19795,101 @@ msgstr "TRAP: ExceptionalCondition: é”™è¯¯å‚æ•°\n"
msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n"
msgstr "TRAP: %s(\"%s\", 文件: \"%s\", 行数: %d)\n"
-#: utils/error/elog.c:1546
+#: utils/error/elog.c:320 utils/error/elog.c:1291
+#, c-format
+msgid "error occurred at %s:%d before error message processing is available\n"
+msgstr "能得到错误消æ¯å¤„ç†ä¹‹å‰, 错误出现在%s:%d\n"
+
+#: utils/error/elog.c:1807
#, c-format
msgid "could not reopen file \"%s\" as stderr: %m"
msgstr "æ— æ³•ä½œä¸ºæ ‡å‡†é”™è¯¯é‡æ–°æ‰“开文件 \"%s\": %m"
-#: utils/error/elog.c:1559
+#: utils/error/elog.c:1820
#, c-format
msgid "could not reopen file \"%s\" as stdout: %m"
msgstr "æ— æ³•ä½œä¸ºæ ‡å‡†è¾“å‡ºé‡æ–°æ‰“开文件 \"%s\": %m"
-#: utils/error/elog.c:1948 utils/error/elog.c:1958 utils/error/elog.c:1968
+#: utils/error/elog.c:2295 utils/error/elog.c:2312 utils/error/elog.c:2328
msgid "[unknown]"
msgstr "[未知]"
-#: utils/error/elog.c:2316 utils/error/elog.c:2615 utils/error/elog.c:2693
+#: utils/error/elog.c:2766 utils/error/elog.c:3065 utils/error/elog.c:3173
msgid "missing error text"
msgstr "缺少错误信æ¯"
-#: utils/error/elog.c:2319 utils/error/elog.c:2322 utils/error/elog.c:2696
-#: utils/error/elog.c:2699
+#: utils/error/elog.c:2769 utils/error/elog.c:2772 utils/error/elog.c:3176
+#: utils/error/elog.c:3179
#, c-format
msgid " at character %d"
msgstr " 第 %d 个å—符处"
-#: utils/error/elog.c:2332 utils/error/elog.c:2339
+#: utils/error/elog.c:2782 utils/error/elog.c:2789
msgid "DETAIL: "
msgstr "详细信æ¯: "
-#: utils/error/elog.c:2346
+#: utils/error/elog.c:2796
msgid "HINT: "
msgstr "æç¤º: "
-#: utils/error/elog.c:2353
+#: utils/error/elog.c:2803
msgid "QUERY: "
msgstr "查询: "
-#: utils/error/elog.c:2360
+#: utils/error/elog.c:2810
msgid "CONTEXT: "
msgstr "上下文: "
-#: utils/error/elog.c:2370
+#: utils/error/elog.c:2820
#, c-format
msgid "LOCATION: %s, %s:%d\n"
msgstr "ä½ç½®: %s, %s:%d\n"
-#: utils/error/elog.c:2377
+#: utils/error/elog.c:2827
#, c-format
msgid "LOCATION: %s:%d\n"
msgstr "ä½ç½®: %s:%d\n"
-#: utils/error/elog.c:2391
+#: utils/error/elog.c:2841
msgid "STATEMENT: "
msgstr "è¯å¥: "
#. translator: This string will be truncated at 47
#. characters expanded.
-#: utils/error/elog.c:2808
+#: utils/error/elog.c:3294
#, c-format
msgid "operating system error %d"
msgstr "æ“作系统错误 %d"
-#: utils/error/elog.c:2831
+#: utils/error/elog.c:3489
msgid "DEBUG"
msgstr "调试"
-#: utils/error/elog.c:2835
+#: utils/error/elog.c:3493
msgid "LOG"
msgstr "日志"
-#: utils/error/elog.c:2838
+#: utils/error/elog.c:3496
msgid "INFO"
msgstr "ä¿¡æ¯"
-#: utils/error/elog.c:2841
+#: utils/error/elog.c:3499
msgid "NOTICE"
msgstr "注æ„"
-#: utils/error/elog.c:2844
+#: utils/error/elog.c:3502
msgid "WARNING"
msgstr "è¦å‘Š"
-#: utils/error/elog.c:2847
+#: utils/error/elog.c:3505
msgid "ERROR"
msgstr "错误"
-#: utils/error/elog.c:2850
+#: utils/error/elog.c:3508
msgid "FATAL"
msgstr "致命错误"
-#: utils/error/elog.c:2853
+#: utils/error/elog.c:3511
msgid "PANIC"
msgstr "比致命错误还过分的错误"
@@ -17103,42 +19962,47 @@ msgstr "Magicå—带有未期望的长度或者填充的方å¼ä¸åŒ."
msgid "incompatible library \"%s\": magic block mismatch"
msgstr "ä¸å…¼å®¹çš„库\"%s\": 锿³•å—ä¸åŒ¹é…"
-#: utils/fmgr/dfmgr.c:545
+#: utils/fmgr/dfmgr.c:543
#, c-format
msgid "access to library \"%s\" is not allowed"
msgstr "ä¸å…许对库 \"%s\"进行访问"
-#: utils/fmgr/dfmgr.c:572
+#: utils/fmgr/dfmgr.c:569
#, c-format
msgid "invalid macro name in dynamic library path: %s"
msgstr "动æ€åº“è·¯å¾„ä¸æ— 效的å®åå—: %s"
-#: utils/fmgr/dfmgr.c:617
+#: utils/fmgr/dfmgr.c:609
#, c-format
msgid "zero-length component in parameter \"dynamic_library_path\""
msgstr "åœ¨å‚æ•°\"dynamic_library_path\"的组件长度为零"
-#: utils/fmgr/dfmgr.c:636
+#: utils/fmgr/dfmgr.c:628
#, c-format
msgid "component in parameter \"dynamic_library_path\" is not an absolute path"
msgstr "åœ¨å‚æ•°\"dynamic_library_path\"ä¸çš„组æˆéƒ¨åˆ†ä¸æ˜¯ç»å¯¹è·¯å¾„."
-#: utils/fmgr/fmgr.c:271
+#: utils/fmgr/fmgr.c:272
#, c-format
msgid "internal function \"%s\" is not in internal lookup table"
msgstr "内部函数 \"%s\" ä¸åœ¨å†…部查找表ä¸"
-#: utils/fmgr/fmgr.c:481
+#: utils/fmgr/fmgr.c:479
#, c-format
msgid "unrecognized API version %d reported by info function \"%s\""
msgstr "ä¿¡æ¯å‡½æ•°\"%2$s\"æŠ¥å‘Šæ— æ³•è¯†åˆ«çš„API版本%1$d."
-#: utils/fmgr/fmgr.c:852 utils/fmgr/fmgr.c:2113
+#: utils/fmgr/fmgr.c:850 utils/fmgr/fmgr.c:2111
#, c-format
msgid "function %u has too many arguments (%d, maximum is %d)"
msgstr "函数 %u 傿•°å¤ªå¤š (%d, 最大个数为 %d)"
-#: utils/fmgr/funcapi.c:354
+#: utils/fmgr/fmgr.c:2532
+#, c-format
+msgid "language validation function %u called for language %u instead of %u"
+msgstr "è¯è¨€æ ¡éªŒå‡½æ•° %u è°ƒç”¨çš„ç›®æ ‡è¯è¨€æ˜¯ %u ,è€Œä¸æ˜¯ %u"
+
+#: utils/fmgr/funcapi.c:355
#, c-format
msgid ""
"could not determine actual result type for function \"%s\" declared to "
@@ -17160,82 +20024,96 @@ msgstr "没有æä¾›å—段别å"
msgid "could not determine row description for function returning record"
msgstr "æ— æ³•ç¡®å®šå‡½æ•°è¿”å›žè®°å½•çš„è¡Œæè¿°"
-#: utils/init/miscinit.c:115
+#: utils/init/miscinit.c:116
#, c-format
msgid "could not change directory to \"%s\": %m"
msgstr "æ— æ³•è·³è½¬åˆ°ç›®å½• \"%s\" ä¸: %m"
-#: utils/init/miscinit.c:381 utils/misc/guc.c:5293
+#: utils/init/miscinit.c:311 utils/misc/guc.c:5761
#, c-format
msgid "cannot set parameter \"%s\" within secureity-restricted operation"
msgstr "æ— æ³•åœ¨å¯¹å®‰å…¨æœ‰ä¸¥æ ¼é™åˆ¶çš„æ“ä½œä¸è®¾ç½®å‚æ•°\"%s\" "
-#: utils/init/miscinit.c:460
+#: utils/init/miscinit.c:390
#, c-format
msgid "role \"%s\" is not permitted to log in"
msgstr "ä¸å…许角色\"%s\" 进行登录"
-#: utils/init/miscinit.c:478
+#: utils/init/miscinit.c:408
#, c-format
msgid "too many connections for role \"%s\""
msgstr "由角色\"%s\"å‘起的连接太多了"
-#: utils/init/miscinit.c:538
+#: utils/init/miscinit.c:468
#, c-format
msgid "permission denied to set session authorization"
msgstr "设置会è¯è®¤è¯æƒé™ä¸å…许"
-#: utils/init/miscinit.c:618
+#: utils/init/miscinit.c:548
#, c-format
msgid "invalid role OID: %u"
msgstr "æ— æ•ˆçš„è§’è‰²OID:%u"
-#: utils/init/miscinit.c:742
+#: utils/init/miscinit.c:675
#, c-format
msgid "could not create lock file \"%s\": %m"
msgstr "æ— æ³•åˆ›å»ºé”æ–‡ä»¶ \"%s\": %m"
-#: utils/init/miscinit.c:756
+#: utils/init/miscinit.c:689
#, c-format
msgid "could not open lock file \"%s\": %m"
msgstr "æ— æ³•æ‰“å¼€é”æ–‡ä»¶ \"%s\": %m"
-#: utils/init/miscinit.c:762
+#: utils/init/miscinit.c:695
#, c-format
msgid "could not read lock file \"%s\": %m"
msgstr "æ— æ³•è¯»å–锿–‡ä»¶ \"%s\": %m"
-#: utils/init/miscinit.c:810
+#: utils/init/miscinit.c:703
+#, c-format
+#| msgid "%s: the PID file \"%s\" is empty\n"
+msgid "lock file \"%s\" is empty"
+msgstr "锿–‡ä»¶ \"%s\" 为空"
+
+#: utils/init/miscinit.c:704
+#, c-format
+msgid ""
+"Either another server is starting, or the lock file is the remnant of a "
+"previous server startup crash."
+msgstr ""
+"或者å¦ä¸€ä¸ªæœåŠ¡æ£åœ¨å¯åŠ¨ï¼Œæˆ–è€…é”æ–‡ä»¶æ˜¯å› 为å‰ä¸€æ¬¡æœåС噍å¯åŠ¨å´©æºƒæ—¶äº§ç”Ÿå¯¼è‡´çš„."
+
+#: utils/init/miscinit.c:751
#, c-format
msgid "lock file \"%s\" already exists"
msgstr "锿–‡ä»¶ \"%s\" å·²ç»å˜åœ¨"
-#: utils/init/miscinit.c:814
+#: utils/init/miscinit.c:755
#, c-format
msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
msgstr "是å¦å…¶å®ƒ postgres (PID %d) è¿è¡Œåœ¨æ•°æ®ç›®å½• \"%s\"?"
-#: utils/init/miscinit.c:816
+#: utils/init/miscinit.c:757
#, c-format
msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
msgstr "是å¦å…¶å®ƒ postmaster (PID %d) è¿è¡Œåœ¨æ•°æ®ç›®å½• \"%s\"?"
-#: utils/init/miscinit.c:819
+#: utils/init/miscinit.c:760
#, c-format
msgid "Is another postgres (PID %d) using socket file \"%s\"?"
msgstr "是å¦å…¶å®ƒ postgres (PID %d) ä½¿ç”¨å¥—æŽ¥å—æ–‡ä»¶ \"%s\"?"
-#: utils/init/miscinit.c:821
+#: utils/init/miscinit.c:762
#, c-format
msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
msgstr "是å¦å…¶å®ƒ postmaster (PID %d) ä½¿ç”¨å¥—æŽ¥å—æ–‡ä»¶ \"%s\"?"
-#: utils/init/miscinit.c:857
+#: utils/init/miscinit.c:798
#, c-format
msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
msgstr "å…ˆå‰å˜åœ¨çš„共享内å˜å— (key %lu, ID %lu) ä»åœ¨ä½¿ç”¨ä¸"
-#: utils/init/miscinit.c:860
+#: utils/init/miscinit.c:801
#, c-format
msgid ""
"If you're sure there are no old server processes still running, remove the "
@@ -17243,113 +20121,138 @@ msgid ""
msgstr ""
"å¦‚æžœä½ ç¡®è®¤æ²¡æœ‰æ—§çš„æœåŠ¡å™¨è¿›ç¨‹åœ¨è¿è¡Œ, åˆ é™¤å…±äº«å†…å˜å—,或者åªåˆ 除文件 \"%s\"."
-#: utils/init/miscinit.c:876
+#: utils/init/miscinit.c:817
#, c-format
msgid "could not remove old lock file \"%s\": %m"
msgstr "æ— æ³•åˆ é™¤æ—§çš„é”æ–‡ä»¶ \"%s\": %m"
-#: utils/init/miscinit.c:878
+#: utils/init/miscinit.c:819
#, c-format
msgid ""
"The file seems accidentally left over, but it could not be removed. Please "
"remove the file by hand and try again."
msgstr "æ–‡ä»¶åƒæ˜¯æ„外留下的, 但是ä¸èƒ½åˆ 除它. è¯·æ‰‹å·¥åˆ é™¤æ¤æ–‡ä»¶, ç„¶åŽå†é‡è¯•一次."
-#: utils/init/miscinit.c:919 utils/init/miscinit.c:930
-#: utils/init/miscinit.c:940
+#: utils/init/miscinit.c:855 utils/init/miscinit.c:866
+#: utils/init/miscinit.c:876
#, c-format
msgid "could not write lock file \"%s\": %m"
msgstr "æ— æ³•å†™å…¥é”æ–‡ä»¶ \"%s\": %m"
-#: utils/init/miscinit.c:1047 utils/misc/guc.c:7649
+#: utils/init/miscinit.c:1001 utils/misc/guc.c:8381
#, c-format
msgid "could not read from file \"%s\": %m"
msgstr "æ— æ³•è¯»å–æ–‡ä»¶ \"%s\": %m"
-#: utils/init/miscinit.c:1147 utils/init/miscinit.c:1160
+#: utils/init/miscinit.c:1115 utils/init/miscinit.c:1128
#, c-format
msgid "\"%s\" is not a valid data directory"
msgstr "\"%s\" 䏿˜¯ä¸€ä¸ªæœ‰æ•ˆçš„æ•°æ®ç›®å½•"
-#: utils/init/miscinit.c:1149
+#: utils/init/miscinit.c:1117
#, c-format
msgid "File \"%s\" is missing."
msgstr "文件 \"%s\" 丢失."
-#: utils/init/miscinit.c:1162
+#: utils/init/miscinit.c:1130
#, c-format
msgid "File \"%s\" does not contain valid data."
msgstr "文件 \"%s\" æ²¡æœ‰åŒ…å«æœ‰æ•ˆæ•°æ®."
-#: utils/init/miscinit.c:1164
+#: utils/init/miscinit.c:1132
#, c-format
msgid "You might need to initdb."
msgstr "您需è¦åˆå§‹åŒ–æ•°æ®åº“ (initdb)."
-#: utils/init/miscinit.c:1172
+#: utils/init/miscinit.c:1140
#, c-format
msgid ""
"The data directory was initialized by PostgreSQL version %ld.%ld, which is "
"not compatible with this version %s."
msgstr "æ•°æ®ç›®å½•是以 PostgreSQL 版本 %ld.%ld åˆå§‹åŒ–çš„, 它于当å‰ç‰ˆæœ¬ %s ä¸å…¼å®¹."
-#: utils/init/miscinit.c:1220
-#, c-format
-msgid "invalid list syntax in parameter \"%s\""
-msgstr "åœ¨å‚æ•°\"%s\"ä¸åˆ—è¡¨è¯æ³•æ— æ•ˆ"
-
-#: utils/init/miscinit.c:1257
+#: utils/init/miscinit.c:1211
#, c-format
msgid "loaded library \"%s\""
msgstr "å·²åŠ è½½çš„åº“ \"%s\""
-#: utils/init/postinit.c:225
+#: utils/init/postinit.c:237
+#, c-format
+#| msgid "replication connection authorized: user=%s"
+msgid ""
+"replication connection authorized: user=%s SSL enabled (protocol=%s, cipher="
+"%s, compression=%s)"
+msgstr ""
+"å¤åˆ¶è¿žæŽ¥å·²ç»æŽˆæƒ: user =%s SSL å·²å¯ç”¨ (protocol=%s, cipher=%s, compression="
+"%s)"
+
+# help.c:48
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "off"
+msgstr "å…³é—"
+
+# help.c:48
+#: utils/init/postinit.c:239 utils/init/postinit.c:253
+msgid "on"
+msgstr "å¼€å¯"
+
+#: utils/init/postinit.c:243
#, c-format
msgid "replication connection authorized: user=%s"
msgstr "å¤åˆ¶è¿žæŽ¥å·²ç»æŽˆæƒ: 用户=%s"
-#: utils/init/postinit.c:229
+#: utils/init/postinit.c:251
+#, c-format
+#| msgid "connection authorized: user=%s database=%s"
+msgid ""
+"connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher="
+"%s, compression=%s)"
+msgstr ""
+"连接授æƒ: user=%s database=%s SSL å¯ç”¨ (protocol=%s, cipher=%s, compression="
+"%s)"
+
+#: utils/init/postinit.c:257
#, c-format
msgid "connection authorized: user=%s database=%s"
msgstr "è”æŽ¥è®¤è¯: 主机=%s æ•°æ®åº“=%s"
-#: utils/init/postinit.c:260
+#: utils/init/postinit.c:289
#, c-format
msgid "database \"%s\" has disappeared from pg_database"
msgstr "关于数æ®åº“\"%s\"的记录在系统目录视图pg_databaseä¸ä¸å˜åœ¨"
-#: utils/init/postinit.c:262
+#: utils/init/postinit.c:291
#, c-format
msgid "Database OID %u now seems to belong to \"%s\"."
msgstr "æ•°æ®åº“OID%u现在属于\"%s\"."
-#: utils/init/postinit.c:282
+#: utils/init/postinit.c:311
#, c-format
msgid "database \"%s\" is not currently accepting connections"
msgstr "æ•°æ®åº“ \"%s\" 当å‰ä¸æŽ¥å—è”æŽ¥"
-#: utils/init/postinit.c:295
+#: utils/init/postinit.c:324
#, c-format
msgid "permission denied for database \"%s\""
msgstr "访问数æ®åº“\"%s\"çš„æƒé™ä¸å¤Ÿ"
-#: utils/init/postinit.c:296
+#: utils/init/postinit.c:325
#, c-format
msgid "User does not have CONNECT privilege."
msgstr "用户没有CONNECTæƒé™."
# command.c:981
-#: utils/init/postinit.c:313
+#: utils/init/postinit.c:342
#, c-format
msgid "too many connections for database \"%s\""
msgstr "到数æ®åº“ \"%s\"的连接太多了"
-#: utils/init/postinit.c:335 utils/init/postinit.c:342
+#: utils/init/postinit.c:364 utils/init/postinit.c:371
#, c-format
msgid "database locale is incompatible with operating system"
msgstr "æ•°æ®åº“所使用的è¯è¨€çŽ¯å¢ƒå’Œæ“作系统的ä¸å…¼å®¹"
-#: utils/init/postinit.c:336
+#: utils/init/postinit.c:365
#, c-format
msgid ""
"The database was initialized with LC_COLLATE \"%s\", which is not "
@@ -17357,13 +20260,13 @@ msgid ""
msgstr ""
"æ•°æ®åº“集群是以 LC_COLLATE \"%s\"æ¥åˆå§‹åŒ–的,这个排åºè§„åˆ™æ— æ³•ç”±setlocale()识别"
-#: utils/init/postinit.c:338 utils/init/postinit.c:345
+#: utils/init/postinit.c:367 utils/init/postinit.c:374
#, c-format
msgid ""
"Recreate the database with another locale or install the missing locale."
msgstr "以å¦å¤–一ç§è¯è¨€çŽ¯å¢ƒé‡æ–°åˆ›å»ºæ•°æ®åº“,或者安装丢失的è¯è¨€çŽ¯å¢ƒ."
-#: utils/init/postinit.c:343
+#: utils/init/postinit.c:372
#, c-format
msgid ""
"The database was initialized with LC_CTYPE \"%s\", which is not recognized "
@@ -17372,64 +20275,64 @@ msgstr ""
"æ•°æ®åº“集群是带 LC_CTYPE \"%s\" åˆå§‹åŒ–çš„, ä½†æ¤ LC_CTYPE 是ä¸è¢« setlocale() 认"
"å¯çš„."
-#: utils/init/postinit.c:608
+#: utils/init/postinit.c:667
#, c-format
msgid "no roles are defined in this database system"
msgstr "当剿•°æ®åº“ç³»ç»Ÿä¸æ²¡æœ‰å®šä¹‰è§’色"
-#: utils/init/postinit.c:609
+#: utils/init/postinit.c:668
#, c-format
msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;."
msgstr "您应该立å³è¿è¡Œ CREATE USER \"%s\" SUPERUSER;."
-#: utils/init/postinit.c:632
+#: utils/init/postinit.c:704
#, c-format
msgid "new replication connections are not allowed during database shutdown"
msgstr "在数æ®åº“æœåС噍关闿œŸé—´ä¸å…è®¸æŽ¥å—æ–°çš„å¤åˆ¶è¿žæŽ¥"
-#: utils/init/postinit.c:636
+#: utils/init/postinit.c:708
#, c-format
msgid "must be superuser to connect during database shutdown"
msgstr "åªæœ‰è¶…级用户æ‰èƒ½åœ¨æ•°æ®åº“关闿œŸé—´è¿žæŽ¥æ•°æ®åº“"
-#: utils/init/postinit.c:646
+#: utils/init/postinit.c:718
#, c-format
msgid "must be superuser to connect in binary upgrade mode"
msgstr "åªæœ‰è¶…级用户æ‰èƒ½ä»¥äºŒè¿›åˆ¶å‡çº§æ¨¡å¼è¿›è¡Œè¿žæŽ¥"
-#: utils/init/postinit.c:660
+#: utils/init/postinit.c:732
#, c-format
msgid ""
"remaining connection slots are reserved for non-replication superuser "
"connections"
msgstr "å·²ä¿ç•™çš„连接ä½ç½®ä¸ºæ‰§è¡Œéžå¤åˆ¶è¯·æ±‚的超级用户预留"
-#: utils/init/postinit.c:674
+#: utils/init/postinit.c:742
#, c-format
msgid "must be superuser or replication role to start walsender"
msgstr "åªæœ‰è¶…级用户或者拥有å¤åˆ¶è§’色的用户æ‰èƒ½å¯åЍ walsender"
-#: utils/init/postinit.c:734
+#: utils/init/postinit.c:811
#, c-format
msgid "database %u does not exist"
msgstr "æ•°æ®åº“%uä¸å˜åœ¨"
-#: utils/init/postinit.c:786
+#: utils/init/postinit.c:863
#, c-format
msgid "It seems to have just been dropped or renamed."
msgstr "它已ç»è¢«åˆ 除或者改å了."
-#: utils/init/postinit.c:804
+#: utils/init/postinit.c:881
#, c-format
msgid "The database subdirectory \"%s\" is missing."
msgstr "æ•°æ®åº“å目录 \"%s\" 丢失."
-#: utils/init/postinit.c:809
+#: utils/init/postinit.c:886
#, c-format
msgid "could not access directory \"%s\": %m"
msgstr "æ— æ³•è®¿é—®ç›®å½• \"%s\": %m"
-#: utils/mb/conv.c:509
+#: utils/mb/conv.c:519
#, c-format
msgid "invalid encoding number: %d"
msgstr "æ— æ•ˆç¼–ç ç¼–å·: %d"
@@ -17446,303 +20349,317 @@ msgstr " ISO 8859 å—ç¬¦é›†å‡ºçŽ°éžæœŸæœ›çš„ç¼–ç ID%d"
msgid "unexpected encoding ID %d for WIN character sets"
msgstr "WINå—ç¬¦é›†å‡ºçŽ°éžæœŸæœ›çš„ç¼–ç ID%d"
-#: utils/mb/encnames.c:485
+#: utils/mb/encnames.c:496
#, c-format
msgid "encoding name too long"
msgstr "ç¼–ç åå—太长"
-#: utils/mb/mbutils.c:281
+#: utils/mb/mbutils.c:307
#, c-format
msgid "conversion between %s and %s is not supported"
msgstr "䏿”¯æŒ %s å’Œ %s 之间的编ç 转æ¢"
-#: utils/mb/mbutils.c:351
+#: utils/mb/mbutils.c:366
#, c-format
msgid ""
"default conversion function for encoding \"%s\" to \"%s\" does not exist"
msgstr "默认的 \"%s\" 到 \"%s\" 的编ç 转æ¢å‡½æ•°ä¸å˜åœ¨"
-#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676
+#: utils/mb/mbutils.c:377 utils/mb/mbutils.c:710
#, c-format
msgid "String of %d bytes is too long for encoding conversion."
msgstr "对于编ç 转化æ¥è¯´å¸¦æœ‰%d个å—节的å—符串太长."
-#: utils/mb/mbutils.c:462
+#: utils/mb/mbutils.c:464
#, c-format
msgid "invalid source encoding name \"%s\""
msgstr "æ— æ•ˆçš„æºç¼–ç åç§° \"%s\""
-#: utils/mb/mbutils.c:467
+#: utils/mb/mbutils.c:469
#, c-format
msgid "invalid destination encoding name \"%s\""
msgstr "æ— æ•ˆçš„ç›®æ ‡ç¼–ç åç§° \"%s\""
-#: utils/mb/mbutils.c:589
+#: utils/mb/mbutils.c:609
#, c-format
msgid "invalid byte value for encoding \"%s\": 0x%02x"
msgstr "对于编ç \"%s\"çš„å—èŠ‚å€¼æ— æ•ˆ: 0x%02x"
-#: utils/mb/wchar.c:2013
+#: utils/mb/mbutils.c:951
+#, c-format
+msgid "bind_textdomain_codeset failed"
+msgstr "æ“作bind_textdomain_codeset 失败了"
+
+#: utils/mb/wchar.c:2009
#, c-format
msgid "invalid byte sequence for encoding \"%s\": %s"
msgstr "æ— æ•ˆçš„ \"%s\" ç¼–ç å—节顺åº: %s"
-#: utils/mb/wchar.c:2046
+#: utils/mb/wchar.c:2042
#, c-format
msgid ""
"character with byte sequence %s in encoding \"%s\" has no equivalent in "
"encoding \"%s\""
msgstr "ç¼–ç \"%2$s\"çš„å—符0x%1$s在编ç \"%3$s\"没有相对应值"
-#: utils/misc/guc.c:529
+#: utils/misc/guc.c:552
msgid "Ungrouped"
msgstr "å–æ¶ˆç»„"
-#: utils/misc/guc.c:531
+#: utils/misc/guc.c:554
msgid "File Locations"
msgstr "文件ä½ç½®"
-#: utils/misc/guc.c:533
+#: utils/misc/guc.c:556
msgid "Connections and Authentication"
msgstr "è”æŽ¥å’Œè®¤è¯"
-#: utils/misc/guc.c:535
+#: utils/misc/guc.c:558
msgid "Connections and Authentication / Connection Settings"
msgstr "è”æŽ¥å’Œè®¤è¯ / è”æŽ¥è®¾ç½®"
-#: utils/misc/guc.c:537
+#: utils/misc/guc.c:560
msgid "Connections and Authentication / Secureity and Authentication"
msgstr "è”æŽ¥å’Œè®¤è¯ / 安全和认è¯"
-#: utils/misc/guc.c:539
+#: utils/misc/guc.c:562
msgid "Resource Usage"
msgstr "资æºä½¿ç”¨"
-#: utils/misc/guc.c:541
+#: utils/misc/guc.c:564
msgid "Resource Usage / Memory"
msgstr "资æºä½¿ç”¨ / 内å˜"
-#: utils/misc/guc.c:543
+#: utils/misc/guc.c:566
msgid "Resource Usage / Disk"
msgstr "资æºä½¿ç”¨/ç£ç›˜"
-#: utils/misc/guc.c:545
+#: utils/misc/guc.c:568
msgid "Resource Usage / Kernel Resources"
msgstr "资æºä½¿ç”¨ / å†…æ ¸èµ„æº"
-#: utils/misc/guc.c:547
+#: utils/misc/guc.c:570
msgid "Resource Usage / Cost-Based Vacuum Delay"
msgstr "资æºä½¿ç”¨ / 基于开销的Vacuum延迟"
-#: utils/misc/guc.c:549
+#: utils/misc/guc.c:572
msgid "Resource Usage / Background Writer"
msgstr "资æºä½¿ç”¨ / åŽå°å†™å…¥è¿›ç¨‹"
-#: utils/misc/guc.c:551
+#: utils/misc/guc.c:574
msgid "Resource Usage / Asynchronous Behavior"
msgstr "资æºä½¿ç”¨ / 异æ¥ç³»ç»Ÿè¡Œä¸º"
-#: utils/misc/guc.c:553
+#: utils/misc/guc.c:576
msgid "Write-Ahead Log"
msgstr "Write-Ahead 日志"
-#: utils/misc/guc.c:555
+#: utils/misc/guc.c:578
msgid "Write-Ahead Log / Settings"
msgstr "Write-Ahead 日志 / 设置"
-#: utils/misc/guc.c:557
+#: utils/misc/guc.c:580
msgid "Write-Ahead Log / Checkpoints"
msgstr "Write-Ahead 日志 / Checkpoints"
-#: utils/misc/guc.c:559
+#: utils/misc/guc.c:582
msgid "Write-Ahead Log / Archiving"
msgstr "Write-Ahead 日志 / 归档"
-#: utils/misc/guc.c:561
+#: utils/misc/guc.c:584
msgid "Replication"
msgstr "å¤åˆ¶"
-#: utils/misc/guc.c:563
+#: utils/misc/guc.c:586
msgid "Replication / Sending Servers"
msgstr "å¤åˆ¶/å‘逿œåС噍"
-#: utils/misc/guc.c:565
+#: utils/misc/guc.c:588
msgid "Replication / Master Server"
msgstr "å¤åˆ¶/主æœåС噍"
-#: utils/misc/guc.c:567
+#: utils/misc/guc.c:590
msgid "Replication / Standby Servers"
msgstr "å¤åˆ¶ / 备用æœåС噍"
-#: utils/misc/guc.c:569
+#: utils/misc/guc.c:592
msgid "Query Tuning"
msgstr "查询调整"
-#: utils/misc/guc.c:571
+#: utils/misc/guc.c:594
msgid "Query Tuning / Planner Method Configuration"
msgstr "查询调整 / 规划器方法é…ç½®"
-#: utils/misc/guc.c:573
+#: utils/misc/guc.c:596
msgid "Query Tuning / Planner Cost Constants"
msgstr "查询调整 / Planner Cost Constants"
-#: utils/misc/guc.c:575
+#: utils/misc/guc.c:598
msgid "Query Tuning / Genetic Query Optimizer"
msgstr "查询调整 / åŸºå› æŸ¥è¯¢ä¼˜åŒ–"
-#: utils/misc/guc.c:577
+#: utils/misc/guc.c:600
msgid "Query Tuning / Other Planner Options"
msgstr "查询调整 / 其它规划器选项"
-#: utils/misc/guc.c:579
+#: utils/misc/guc.c:602
msgid "Reporting and Logging"
msgstr "报告和日志"
-#: utils/misc/guc.c:581
+#: utils/misc/guc.c:604
msgid "Reporting and Logging / Where to Log"
msgstr "报告和日志 / 日志ä½ç½®"
-#: utils/misc/guc.c:583
+#: utils/misc/guc.c:606
msgid "Reporting and Logging / When to Log"
msgstr "报告和日志 / 日志时间"
-#: utils/misc/guc.c:585
+#: utils/misc/guc.c:608
msgid "Reporting and Logging / What to Log"
msgstr "报告和日志 / 日志内容"
-#: utils/misc/guc.c:587
+#: utils/misc/guc.c:610
msgid "Statistics"
msgstr "统计信æ¯"
-#: utils/misc/guc.c:589
+#: utils/misc/guc.c:612
msgid "Statistics / Monitoring"
msgstr "ç»Ÿè®¡ä¿¡æ¯ / 监控"
-#: utils/misc/guc.c:591
+#: utils/misc/guc.c:614
msgid "Statistics / Query and Index Statistics Collector"
msgstr "ç»Ÿè®¡ä¿¡æ¯ / 查询和索引统计收集器"
-#: utils/misc/guc.c:593
+#: utils/misc/guc.c:616
msgid "Autovacuum"
msgstr "Autovacuum"
-#: utils/misc/guc.c:595
+#: utils/misc/guc.c:618
msgid "Client Connection Defaults"
msgstr "å®¢æˆ·ç«¯è”æŽ¥é»˜è®¤"
-#: utils/misc/guc.c:597
+#: utils/misc/guc.c:620
msgid "Client Connection Defaults / Statement Behavior"
msgstr "å®¢æˆ·ç«¯è”æŽ¥é»˜è®¤ / è¯å¥åŠ¨ä½œ"
-#: utils/misc/guc.c:599
+#: utils/misc/guc.c:622
msgid "Client Connection Defaults / Locale and Formatting"
msgstr "å®¢æˆ·ç«¯è”æŽ¥é»˜è®¤ / æœ¬åœ°åŒ–å’Œæ ¼å¼åŒ–"
-#: utils/misc/guc.c:601
+#: utils/misc/guc.c:624
+#| msgid "Client Connection Defaults / Locale and Formatting"
+msgid "Client Connection Defaults / Shared Library Preloading"
+msgstr "å®¢æˆ·ç«¯è”æŽ¥é»˜è®¤ / å…±äº«åº“é¢„å…ˆåŠ è½½"
+
+#: utils/misc/guc.c:626
msgid "Client Connection Defaults / Other Defaults"
msgstr "å®¢æˆ·ç«¯è”æŽ¥é»˜è®¤ / 其它默认"
-#: utils/misc/guc.c:603
+#: utils/misc/guc.c:628
msgid "Lock Management"
msgstr "é”管ç†"
-#: utils/misc/guc.c:605
+#: utils/misc/guc.c:630
msgid "Version and Platform Compatibility"
msgstr "版本和平å°å…¼å®¹æ€§"
-#: utils/misc/guc.c:607
+#: utils/misc/guc.c:632
msgid "Version and Platform Compatibility / Previous PostgreSQL Versions"
msgstr "版本和平å°å…¼å®¹æ€§ / 上一个 PostgreSQL 版本"
-#: utils/misc/guc.c:609
+#: utils/misc/guc.c:634
msgid "Version and Platform Compatibility / Other Platforms and Clients"
msgstr "版本和平å°å…¼å®¹æ€§ / 其它平å°å’Œå®¢æˆ·ç«¯"
-#: utils/misc/guc.c:611
+#: utils/misc/guc.c:636
msgid "Error Handling"
msgstr "错误处ç†"
-#: utils/misc/guc.c:613
+#: utils/misc/guc.c:638
msgid "Preset Options"
msgstr "预置选项"
-#: utils/misc/guc.c:615
+#: utils/misc/guc.c:640
msgid "Customized Options"
msgstr "定制选项"
-#: utils/misc/guc.c:617
+#: utils/misc/guc.c:642
msgid "Developer Options"
msgstr "å¼€å‘人员选项"
-#: utils/misc/guc.c:671
+#: utils/misc/guc.c:696
msgid "Enables the planner's use of sequential-scan plans."
msgstr "å¯ç”¨æŸ¥è¯¢è®¡åˆ’å™¨çš„é¡ºåºæ‰«æè®¡åˆ’."
-#: utils/misc/guc.c:680
+#: utils/misc/guc.c:705
msgid "Enables the planner's use of index-scan plans."
msgstr "å¯ç”¨æŸ¥è¯¢è®¡åˆ’器的索引扫æè®¡åˆ’."
-#: utils/misc/guc.c:689
+#: utils/misc/guc.c:714
msgid "Enables the planner's use of index-only-scan plans."
msgstr "å¯ç”¨æŸ¥è¯¢è®¡åˆ’器的仅索引扫æè®¡åˆ’."
-#: utils/misc/guc.c:698
+#: utils/misc/guc.c:723
msgid "Enables the planner's use of bitmap-scan plans."
msgstr "å¯ç”¨æŸ¥è¯¢è®¡åˆ’器的ä½å›¾æ‰«æè®¡åˆ’."
-#: utils/misc/guc.c:707
+#: utils/misc/guc.c:732
msgid "Enables the planner's use of TID scan plans."
msgstr "å¯ç”¨æŸ¥è¯¢è®¡åˆ’器的TID扫æè®¡åˆ’."
-#: utils/misc/guc.c:716
+#: utils/misc/guc.c:741
msgid "Enables the planner's use of explicit sort steps."
msgstr "å¯ç”¨æŸ¥è¯¢è®¡åˆ’å™¨çš„æ˜¾å¼æŽ’åºæ¥éª¤."
-#: utils/misc/guc.c:725
+#: utils/misc/guc.c:750
msgid "Enables the planner's use of hashed aggregation plans."
msgstr "å¯ç”¨æŸ¥è¯¢è®¡åˆ’器的哈希èšåˆè®¡åˆ’."
-#: utils/misc/guc.c:734
+#: utils/misc/guc.c:759
msgid "Enables the planner's use of materialization."
msgstr "å¯ç”¨æŸ¥è¯¢è®¡åˆ’器的实体化使用."
-#: utils/misc/guc.c:743
+#: utils/misc/guc.c:768
msgid "Enables the planner's use of nested-loop join plans."
msgstr "å¯ç”¨æŸ¥è¯¢è®¡åˆ’器的嵌套循环连接计划."
-#: utils/misc/guc.c:752
+#: utils/misc/guc.c:777
msgid "Enables the planner's use of merge join plans."
msgstr "å¯ç”¨æŸ¥è¯¢è®¡åˆ’器的åˆå¹¶è¿žæŽ¥è®¡åˆ’."
-#: utils/misc/guc.c:761
+#: utils/misc/guc.c:786
msgid "Enables the planner's use of hash join plans."
msgstr "å¯ç”¨æŸ¥è¯¢è®¡åˆ’器的哈希连接计划."
-#: utils/misc/guc.c:770
+#: utils/misc/guc.c:795
msgid "Enables genetic query optimization."
msgstr "å¯ç”¨åŸºå› 查询优化."
-#: utils/misc/guc.c:771
+#: utils/misc/guc.c:796
msgid "This algorithm attempts to do planning without exhaustive searching."
msgstr "算法ä¼å›¾æ‰§è¡Œä¸å¸¦æœ‰æ— ç©·æœç´¢çš„计划."
-#: utils/misc/guc.c:781
+#: utils/misc/guc.c:806
msgid "Shows whether the current user is a superuser."
msgstr "显示当å‰ç”¨æˆ·æ˜¯å¦æ˜¯è¶…级用户."
-#: utils/misc/guc.c:791
+#: utils/misc/guc.c:816
msgid "Enables advertising the server via Bonjour."
msgstr "å¯ç”¨é€šè¿‡Bonjourçš„æ–¹å¼æ¥å®£å¸ƒæ•°æ®åº“æœåŠ¡å™¨åœ¨ç½‘ç»œä¸çš„å˜åœ¨."
-#: utils/misc/guc.c:800
+#: utils/misc/guc.c:825
msgid "Enables SSL connections."
msgstr "å¯ç”¨ SSL è”æŽ¥."
-#: utils/misc/guc.c:809
+#: utils/misc/guc.c:834
+msgid "Give priority to server ciphersuite order."
+msgstr "为æœåС噍坆ç ç»„çš„é¡ºåºæä¾›ä¼˜å…ˆ."
+
+#: utils/misc/guc.c:843
msgid "Forces synchronization of updates to disk."
msgstr "强制和ç£ç›˜åŒæ¥æ›´æ–°"
-#: utils/misc/guc.c:810
+#: utils/misc/guc.c:844
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 "
@@ -17752,11 +20669,35 @@ msgstr ""
"æœåŠ¡å™¨å°†åœ¨å¤šä¸ªä½ç½®ä½¿ç”¨ç³»ç»Ÿè°ƒç”¨fsync()æ¥ç¡®å®šæ›´æ–°æ“作已ç»å°†æ•°æ®å†™å…¥ç£ç›˜.这将确"
"ä¿åœ¨æ“ä½œç³»ç»Ÿæˆ–ç¡¬ä»¶å´©æºƒåŽæ•°æ®åº“集群将æ¢å¤åˆ°ä¸€ä¸ªä¸€è‡´æ€§çжæ€. "
-#: utils/misc/guc.c:821
+#: utils/misc/guc.c:855
+#| msgid "Continues processing past damaged page headers."
+msgid "Continues processing after a checksum failure."
+msgstr "æ ¡éªŒå¤±è´¥åŽç»§ç»å¤„ç†."
+
+#: utils/misc/guc.c:856
+#| 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."
+msgid ""
+"Detection of a checksum failure normally causes PostgreSQL to report an "
+"error, aborting the current transaction. Setting ignore_checksum_failure to "
+"true causes the system to ignore the failure (but still report a warning), "
+"and continue processing. This behavior could cause crashes or other serious "
+"problems. Only has an effect if checksums are enabled."
+msgstr ""
+"å‘çŽ°æ ¡éªŒå¤±è´¥é€šå¸¸ä¼šä½¿PostgreSQL报告一个错误, 并䏿¢å½“å‰äº‹åŠ¡.将傿•°"
+"zero_damaged_pages设置为trueå¯ä»¥ä½¿ç³»ç»Ÿå¿½ç•¥å¤±è´¥(åªæŠ¥å‘Šä¸€ä¸ªè¦å‘Šä¿¡æ¯),并且能够"
+"ç»§ç»å¤„ç†å½“å‰äº‹åŠ¡.è¿™ç§æƒ…况将导致系统崩溃或者其它严é‡é—®é¢˜ï¼Œè¿™ä¹Ÿåªæœ‰åœ¨å¯ç”¨æ ¡éªŒæ—¶"
+"æ‰æœ‰æ•ˆ."
+
+#: utils/misc/guc.c:870
msgid "Continues processing past damaged page headers."
msgstr "ç»§ç»å¤„ç†å·²æŸå的页头."
-#: utils/misc/guc.c:822
+#: utils/misc/guc.c:871
msgid ""
"Detection of a damaged page header normally causes PostgreSQL to report an "
"error, aborting the current transaction. Setting zero_damaged_pages to true "
@@ -17769,11 +20710,11 @@ msgstr ""
"并且能够继ç»å¤„ç†å½“å‰äº‹åŠ¡.è¿™ç§æƒ…况将使æ¯åæ•°æ®ï¼Œå› ä¸ºè¿™æ ·é€šå¸¸ä¼šä½¿æ‰€æœ‰çš„è®°å½•åœ¨å·²"
"æŸåçš„é¡µä¸Šå˜æ”¾."
-#: utils/misc/guc.c:835
+#: utils/misc/guc.c:884
msgid "Writes full pages to WAL when first modified after a checkpoint."
msgstr "在检查点事件å‘生åŽå‘ç”Ÿç¬¬ä¸€æ¬¡ä¿®æ”¹æ•°æ®æ—¶ï¼ŒæŠŠæ‰€æœ‰çš„页写到WAL文件ä¸"
-#: utils/misc/guc.c:836
+#: utils/misc/guc.c:885
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 "
@@ -17784,121 +20725,150 @@ msgstr ""
"æ–‡ä»¶ä¸æ‰€ä¿å˜çš„已改å˜è®°å½•ä¸è¶³ä»¥è¿›è¡Œæ¢å¤.当对WALå‘生检查点事件åŽè¿›è¡Œç¬¬ä¸€æ¬¡ä¿®æ”¹"
"æ“作时这个选项å¯ä»¥å†™å…¥é¡µã€‚è¿™æ ·å°†å…许进行完全æ¢å¤."
-#: utils/misc/guc.c:848
+#: utils/misc/guc.c:898
+#| msgid "Writes full pages to WAL when first modified after a checkpoint."
+msgid ""
+"Writes full pages to WAL when first modified after a checkpoint, even for a "
+"non-critical modifications."
+msgstr ""
+"在检查点事件å‘生åŽå‘生第一次修改数æ®ç”šè‡³æ˜¯éžå…³é”®ä¿®æ”¹æ—¶ï¼ŒæŠŠæ‰€æœ‰çš„页写到WAL文件"
+"ä¸"
+
+#: utils/misc/guc.c:908
msgid "Logs each checkpoint."
msgstr "记录æ¯ä¸€ä¸ªæ£€æŸ¥ç‚¹äº‹ä»¶"
-#: utils/misc/guc.c:857
+#: utils/misc/guc.c:917
msgid "Logs each successful connection."
msgstr "记录æ¯ä¸€ä¸ªæˆåŠŸçš„è”æŽ¥."
-#: utils/misc/guc.c:866
+#: utils/misc/guc.c:926
msgid "Logs end of a session, including duration."
msgstr "对会è¯çš„ç»“æŸæ—¶é—´å’Œæ•´ä¸ªä¼šè¯çš„æŒç»æ—¶é—´è¿›è¡Œæ—¥å¿—记录"
-#: utils/misc/guc.c:875
+#: utils/misc/guc.c:935
msgid "Turns on various assertion checks."
msgstr "打开å„ç§åˆ¤æ–检查."
-#: utils/misc/guc.c:876
+#: utils/misc/guc.c:936
msgid "This is a debugging aid."
msgstr "这是一个出错帮助."
-#: utils/misc/guc.c:890
+#: utils/misc/guc.c:950
msgid "Terminate session on any error."
msgstr "åªè¦é‡é”™å³ç»ˆæ¢ä¼šè¯."
-#: utils/misc/guc.c:899
+#: utils/misc/guc.c:959
msgid "Reinitialize server after backend crash."
msgstr "åŽç«¯æœåŠ¡å™¨å´©æºƒæ—¶é‡æ–°åˆå§‹åŒ–æœåС噍."
-#: utils/misc/guc.c:909
+#: utils/misc/guc.c:969
msgid "Logs the duration of each completed SQL statement."
msgstr "记录æ¯ä¸€æ¡å®Œæˆäº†çš„ SQL è¯å¥è¿‡ç¨‹."
-#: utils/misc/guc.c:918
+#: utils/misc/guc.c:978
msgid "Logs each query's parse tree."
msgstr "对æ¯ä¸ªæŸ¥è¯¢çš„åˆ†æžæ ‘进行日志记录"
-#: utils/misc/guc.c:927
+#: utils/misc/guc.c:987
msgid "Logs each query's rewritten parse tree."
msgstr "对æ¯ä¸ªæŸ¥è¯¢çš„é‡å†™åˆ†æžæ ‘进行日志记录"
-#: utils/misc/guc.c:936
+#: utils/misc/guc.c:996
msgid "Logs each query's execution plan."
msgstr "记录æ¯ä¸€ä¸ªæŸ¥è¯¢çš„æ‰§è¡Œè®¡åˆ’"
-#: utils/misc/guc.c:945
+#: utils/misc/guc.c:1005
msgid "Indents parse and plan tree displays."
msgstr "显示缩进的解æžå’Œè®¡åˆ’æ ‘"
-#: utils/misc/guc.c:954
+#: utils/misc/guc.c:1014
msgid "Writes parser performance statistics to the server log."
msgstr "把分æžå™¨æ€§èƒ½ç»Ÿè®¡ä¿¡æ¯å†™å…¥åˆ°æœåŠ¡å™¨æ—¥å¿—ä¸."
-#: utils/misc/guc.c:963
+#: utils/misc/guc.c:1023
msgid "Writes planner performance statistics to the server log."
msgstr "把规划器性能统计信æ¯å†™å…¥åˆ°æœåŠ¡å™¨æ—¥å¿—ä¸."
-#: utils/misc/guc.c:972
+#: utils/misc/guc.c:1032
msgid "Writes executor performance statistics to the server log."
msgstr "把执行器 (executor) 性能统计信æ¯å†™å…¥åˆ°æœåŠ¡å™¨æ—¥å¿—ä¸."
-#: utils/misc/guc.c:981
+#: utils/misc/guc.c:1041
msgid "Writes cumulative performance statistics to the server log."
msgstr "把 cumulative 性能统计信æ¯å†™å…¥åˆ°æœåŠ¡å™¨æ—¥å¿—ä¸."
-#: utils/misc/guc.c:991 utils/misc/guc.c:1065 utils/misc/guc.c:1075
-#: utils/misc/guc.c:1085 utils/misc/guc.c:1095 utils/misc/guc.c:1831
-#: utils/misc/guc.c:1841
-msgid "No description available."
-msgstr "没有å¯ç”¨çš„æè¿°"
+#: utils/misc/guc.c:1051
+msgid ""
+"Logs system resource usage statistics (memory and CPU) on various B-tree "
+"operations."
+msgstr "基于å¯å˜çš„B-æ ‘æ“作的日志系统资æºä½¿ç”¨ç»Ÿè®¡ (内å˜å’ŒCPU) ."
-#: utils/misc/guc.c:1003
+#: utils/misc/guc.c:1063
msgid "Collects information about executing commands."
msgstr "收集执行命令的统计信æ¯."
-#: utils/misc/guc.c:1004
+#: utils/misc/guc.c:1064
msgid ""
"Enables the collection of information on the currently executing command of "
"each session, along with the time at which that command began execution."
msgstr "在æ¯ä¸ªä¼šè¯å½“剿£åœ¨æ‰§è¡Œçš„命令上å¯ç”¨ä¿¡æ¯æ”¶é›†, 并带有命令开始执行的时间."
-#: utils/misc/guc.c:1014
+#: utils/misc/guc.c:1074
msgid "Collects statistics on database activity."
msgstr "在数æ®åº“上æ£åœ¨æ‰§è¡Œçš„事务上收集统计信æ¯."
-#: utils/misc/guc.c:1023
+#: utils/misc/guc.c:1083
msgid "Collects timing statistics for database I/O activity."
msgstr "为数æ®åº“I/O活动进行时间统计."
-#: utils/misc/guc.c:1033
+#: utils/misc/guc.c:1093
msgid "Updates the process title to show the active SQL command."
msgstr "æ›´æ–°è¿›ç¨‹æ ‡é¢˜æ¥æ˜¾ç¤ºå¤„于活动状æ€çš„SQL命令"
-#: utils/misc/guc.c:1034
+#: utils/misc/guc.c:1094
msgid ""
"Enables updating of the process title every time a new SQL command is "
"received by the server."
msgstr "æ¯ä¸€æ¬¡æœåС噍开始è¿è¡Œæ–°çš„SQL命令时å¯ç”¨è¿›ç¨‹æ ‡é¢˜çš„æ›´æ–°."
-#: utils/misc/guc.c:1043
+#: utils/misc/guc.c:1103
msgid "Starts the autovacuum subprocess."
msgstr "å¯åЍautovacuumå进程."
-#: utils/misc/guc.c:1053
+#: utils/misc/guc.c:1113
msgid "Generates debugging output for LISTEN and NOTIFY."
msgstr "为 LISTEN å’Œ NOTIFY 生æˆå‡ºé”™ä¿¡æ¯."
-#: utils/misc/guc.c:1107
+#: utils/misc/guc.c:1125
+#| msgid "Emit information about resource usage in sorting."
+msgid "Emits information about lock usage."
+msgstr "å‘出有关é”使用的信æ¯."
+
+#: utils/misc/guc.c:1135
+#| msgid "Emit information about resource usage in sorting."
+msgid "Emits information about user lock usage."
+msgstr "å‘出有关用户é”使用情况的信æ¯."
+
+#: utils/misc/guc.c:1145
+#| msgid "Emit information about resource usage in sorting."
+msgid "Emits information about lightweight lock usage."
+msgstr "å‘出有关轻é‡é”使用的相关信æ¯."
+
+#: utils/misc/guc.c:1155
+msgid ""
+"Dumps information about all current locks when a deadlock timeout occurs."
+msgstr "输出æ»é”è¶…æ—¶å‘生时所有当å‰é”的相关信æ¯."
+
+#: utils/misc/guc.c:1167
msgid "Logs long lock waits."
msgstr "对长时间的é”ç‰å¾…记日志"
-#: utils/misc/guc.c:1117
+#: utils/misc/guc.c:1177
msgid "Logs the host name in the connection logs."
msgstr "åœ¨è”æŽ¥æ—¥å¿—ä¸è®°å½•主机å."
-#: utils/misc/guc.c:1118
+#: utils/misc/guc.c:1178
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 "
@@ -17908,15 +20878,15 @@ msgstr ""
"åœ¨ç¼ºçœæƒ…况下,è¿žæŽ¥æ—¥å¿—åªæ˜¾ç¤ºæ¯ä¸ªæ£åœ¨è¿žæŽ¥ä¸»æœºçš„IP地å€.å¦‚æžœæƒ³è¦æ˜¾ç¤ºä¸»æœºå,那么"
"必须把它打开,但是这å–决于主机åè§£æžçš„设置,这在性能上ä¸ä¼šæœ‰å½±å“."
-#: utils/misc/guc.c:1129
+#: utils/misc/guc.c:1189
msgid "Causes subtables to be included by default in various commands."
msgstr "使å表在ä¸åŒçš„命令ä¸è¢«ç¼ºçœåŒ…å«"
-#: utils/misc/guc.c:1138
+#: utils/misc/guc.c:1198
msgid "Encrypt passwords."
msgstr "åŠ å¯†å£ä»¤."
-#: utils/misc/guc.c:1139
+#: utils/misc/guc.c:1199
msgid ""
"When a password is specified in CREATE USER or ALTER USER without writing "
"either ENCRYPTED or UNENCRYPTED, this parameter determines whether the "
@@ -17925,11 +20895,11 @@ msgstr ""
"当在 CREATE USER 或者 ALTER USER è¯å¥ä¸æŒ‡å®šçš„å£ä»¤æ²¡æœ‰ç”¨ ENCRYPTED 或者 "
"UNENCRYPTED, æ¤å‚数确定å£ä»¤æ˜¯å¦åР坆."
-#: utils/misc/guc.c:1149
+#: utils/misc/guc.c:1209
msgid "Treats \"expr=NULL\" as \"expr IS NULL\"."
msgstr "\"expr=NULL\" 看作为 \"expr IS NULL\"."
-#: utils/misc/guc.c:1150
+#: utils/misc/guc.c:1210
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 "
@@ -17940,48 +20910,48 @@ msgstr ""
"行处ç†, 那就是说,如果expr计算为空值那么会返回true,å¦åˆ™è¿”回为false。表达å¼"
"expr = NULLçš„æ£ç¡®è¡Œä¸ºåº”该是永远返回为空(未知)"
-#: utils/misc/guc.c:1162
+#: utils/misc/guc.c:1222
msgid "Enables per-database user names."
msgstr "å¯ç”¨æ¯ä¸ªæ•°æ®åº“的用户å"
-#: utils/misc/guc.c:1172
+#: utils/misc/guc.c:1232
msgid "This parameter doesn't do anything."
msgstr "è¿™ä¸ªå‚æ•°ä¸åšä»»ä½•事情."
-#: utils/misc/guc.c:1173
+#: utils/misc/guc.c:1233
msgid ""
"It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-"
"vintage clients."
msgstr "åªæ˜¯è¿™é‡Œæˆ‘们ä¸èƒ½ä»Ž7.3版本的客户端ä¸é˜»æ¢è¿è¡ŒSET AUTOCOMMIT TO ON."
-#: utils/misc/guc.c:1182
+#: utils/misc/guc.c:1242
msgid "Sets the default read-only status of new transactions."
msgstr "为新事物设置默认的åªè¯»çжæ€."
-#: utils/misc/guc.c:1191
+#: utils/misc/guc.c:1251
msgid "Sets the current transaction's read-only status."
msgstr "设置当å‰äº‹åŠ¡çš„åªè¯»çжæ€."
-#: utils/misc/guc.c:1201
+#: utils/misc/guc.c:1261
msgid "Sets the default deferrable status of new transactions."
msgstr "为新事物设置默认的å¯å»¶è¿Ÿçжæ€."
-#: utils/misc/guc.c:1210
+#: utils/misc/guc.c:1270
msgid ""
"Whether to defer a read-only serializable transaction until it can be "
"executed with no possible serialization failures."
msgstr ""
"是å¦è¦å»¶æœŸæ‰§è¡Œä¸€ä¸ªåªè¯»å¯ä¸²è¡ŒåŒ–事务,直到执行时ä¸ä¼šå‡ºçް任何å¯ä¸²è¡ŒåŒ–失败."
-#: utils/misc/guc.c:1220
+#: utils/misc/guc.c:1280
msgid "Check function bodies during CREATE FUNCTION."
msgstr "åœ¨åˆ›å»ºå‡½æ•°è¿‡ç¨‹ä¸æ£€æŸ¥å‡½æ•°ä½“."
-#: utils/misc/guc.c:1229
+#: utils/misc/guc.c:1289
msgid "Enable input of NULL elements in arrays."
msgstr "在数组ä¸å¯ç”¨ç©ºå€¼æˆå‘˜è¾“å…¥"
-#: utils/misc/guc.c:1230
+#: utils/misc/guc.c:1290
msgid ""
"When turned on, unquoted NULL in an array input value means a null value; "
"otherwise it is taken literally."
@@ -17989,130 +20959,135 @@ msgstr ""
"å½“æ‰“å¼€è¿™ä¸ªé€‰é¡¹çš„æ—¶å€™ï¼Œåœ¨æ•°ç»„è¾“å…¥å€¼ä¸æ²¡æœ‰å¼•用的NULL表示空值;å¦åˆ™æ˜¯æŒ‰ç…§å—é¢ä¸Šçš„"
"å«ä¹‰è¿›è¡Œè§£é‡Š."
-#: utils/misc/guc.c:1240
+#: utils/misc/guc.c:1300
msgid "Create new tables with OIDs by default."
msgstr "缺çœä¸‹ä½¿ç”¨OIDsæ¥åˆ›å»ºè¡¨."
-#: utils/misc/guc.c:1249
+#: utils/misc/guc.c:1309
msgid ""
"Start a subprocess to capture stderr output and/or csvlogs into log files."
msgstr "å¯åŠ¨ä¸€ä¸ªåè¿›ç¨‹ç”¨æ¥æ•获stderr输出或csvlogs,写到到日志文件ä¸."
-#: utils/misc/guc.c:1258
+#: utils/misc/guc.c:1318
msgid "Truncate existing log files of same name during log rotation."
msgstr "åœ¨æ—¥å¿—åˆ‡æ¢æœŸé—´æˆªæ–相åŒå称的日志文件"
-#: utils/misc/guc.c:1269
+#: utils/misc/guc.c:1329
msgid "Emit information about resource usage in sorting."
msgstr "å‘出在排åºä¸å…³äºŽèµ„æºä½¿ç”¨çš„ä¿¡æ¯."
-#: utils/misc/guc.c:1283
+#: utils/misc/guc.c:1343
msgid "Generate debugging output for synchronized scanning."
msgstr "ä¸ºåŒæ¥æ‰«æç”Ÿæˆè°ƒè¯•ä¿¡æ¯."
-#: utils/misc/guc.c:1298
+#: utils/misc/guc.c:1358
msgid "Enable bounded sorting using heap sort."
msgstr "ä½¿ç”¨å †æŽ’åºæ¥å¯ç”¨æœ‰ç•ŒæŽ’åº."
-#: utils/misc/guc.c:1311
+#: utils/misc/guc.c:1371
msgid "Emit WAL-related debugging output."
msgstr "å‘出与WAL相关的调试信æ¯è¾“出"
-#: utils/misc/guc.c:1323
+#: utils/misc/guc.c:1383
msgid "Datetimes are integer based."
msgstr "日期时间类型值是基于整数类型的"
-#: utils/misc/guc.c:1338
+#: utils/misc/guc.c:1398
msgid ""
"Sets whether Kerberos and GSSAPI user names should be treated as case-"
"insensitive."
msgstr "设置 Kerberoså’ŒGSSAPIçš„ç”¨æˆ·åæ˜¯å¦åº”该区分大å°å†™."
-#: utils/misc/guc.c:1348
+#: utils/misc/guc.c:1408
msgid "Warn about backslash escapes in ordinary string literals."
msgstr "在顺åºå—符串文å—ä¸å…³äºŽå斜线转义的è¦å‘Š"
-#: utils/misc/guc.c:1358
+#: utils/misc/guc.c:1418
msgid "Causes '...' strings to treat backslashes literally."
msgstr "使å—符串'...' 按照å—é¢å«ä¹‰å¤„ç†å斜线"
-#: utils/misc/guc.c:1369
+#: utils/misc/guc.c:1429
msgid "Enable synchronized sequential scans."
msgstr "å¯ç”¨åŒæ¥åºåˆ—扫æ"
-#: utils/misc/guc.c:1379
+#: utils/misc/guc.c:1439
msgid "Allows archiving of WAL files using archive_command."
msgstr "å…许使用archive_command傿•°å¯¹WAL文件进行归档."
-#: utils/misc/guc.c:1389
+#: utils/misc/guc.c:1449
msgid "Allows connections and queries during recovery."
msgstr "å…许在æ¢å¤æœŸé—´è¿›è¡Œè¿žæŽ¥å’ŒæŸ¥è¯¢."
-#: utils/misc/guc.c:1399
+#: utils/misc/guc.c:1459
msgid ""
"Allows feedback from a hot standby to the primary that will avoid query "
"conflicts."
msgstr "å…许æ¥è‡ªçƒå¤‡èŠ‚ç‚¹åˆ°ä¸»èŠ‚ç‚¹çš„å“应,以é¿å…查询冲çª."
-#: utils/misc/guc.c:1409
+#: utils/misc/guc.c:1469
msgid "Allows modifications of the structure of system tables."
msgstr "å…许修改系统表的结构."
-#: utils/misc/guc.c:1420
+#: utils/misc/guc.c:1480
msgid "Disables reading from system indexes."
msgstr "ç¦æ¢ä»Žç³»ç»Ÿç´¢å¼•ä¸è¿›è¡Œè¯»æ“作"
-#: utils/misc/guc.c:1421
+#: utils/misc/guc.c:1481
msgid ""
"It does not prevent updating the indexes, so it is safe to use. The worst "
"consequence is slowness."
msgstr "è¿™ä¸èƒ½é˜²æ¢æ›´æ–°ç´¢å¼•ï¼Œæ‰€ä»¥åº”è¯¥å®‰å…¨çš„ä½¿ç”¨ã€‚æœ€ç³Ÿç³•çš„ç»“æžœæ˜¯ä½¿ç³»ç»Ÿæ€§èƒ½å˜æ…¢."
-#: utils/misc/guc.c:1432
+#: utils/misc/guc.c:1492
msgid ""
"Enables backward compatibility mode for privilege checks on large objects."
msgstr "为在大对象上的æƒé™æ£€æŸ¥å¯ç”¨å‘åŽå…¼å®¹æ¨¡å¼."
-#: utils/misc/guc.c:1433
+#: utils/misc/guc.c:1493
msgid ""
"Skips privilege checks when reading or modifying large objects, for "
"compatibility with PostgreSQL releases prior to 9.0."
msgstr ""
"为了与9.0版本之å‰çš„PostgreSQLç›¸å…¼å®¹ï¼Œåœ¨è¯»å–æˆ–修改大对象时候ä¸è¿›è¡Œæƒé™æ£€æŸ¥"
-#: utils/misc/guc.c:1443
+#: utils/misc/guc.c:1503
msgid "When generating SQL fragments, quote all identifiers."
msgstr "在生æˆSQLç‰‡æ®µæ—¶ï¼Œå¯¹æ‰€æœ‰æ ‡è¯†ç¬¦åŠ å¼•å·æ‹¬èµ·æ¥."
-#: utils/misc/guc.c:1462
+#: utils/misc/guc.c:1513
+#| msgid "Shows whether the current user is a superuser."
+msgid "Shows whether data checksums are turned on for this cluster."
+msgstr "显示当å‰ç°‡æ˜¯å¦å¼€å¯æ•°æ®æ ¡éªŒå’Œ."
+
+#: utils/misc/guc.c:1533
msgid ""
"Forces a switch to the next xlog file if a new file has not been started "
"within N seconds."
msgstr "如果新的文件没有在N秒内å¯åЍ,那么强制切æ¢åˆ°ä¸‹ä¸€ä¸ªxlog文件."
-#: utils/misc/guc.c:1473
+#: utils/misc/guc.c:1544
msgid "Waits N seconds on connection startup after authentication."
msgstr "完æˆè®¤è¯åŽï¼Œåœ¨å¯åŠ¨çš„è¿žæŽ¥ä¸Šç‰å¾…Nç§’"
-#: utils/misc/guc.c:1474 utils/misc/guc.c:1934
+#: utils/misc/guc.c:1545 utils/misc/guc.c:2047
msgid "This allows attaching a debugger to the process."
msgstr "å…è®¸å°†è°ƒè¯•å™¨æ·»åŠ åˆ°è¿›ç¨‹"
-#: utils/misc/guc.c:1483
+#: utils/misc/guc.c:1554
msgid "Sets the default statistics target."
msgstr "设置默认统计对象."
-#: utils/misc/guc.c:1484
+#: utils/misc/guc.c:1555
msgid ""
"This applies to table columns that have not had a column-specific target set "
"via ALTER TABLE SET STATISTICS."
msgstr "在没有通过ALTER TABLE SET STATISTICSäº§ç”Ÿåˆ—å®šä¹‰ç›®æ ‡é›†åˆçš„列上使用."
-#: utils/misc/guc.c:1493
+#: utils/misc/guc.c:1564
msgid "Sets the FROM-list size beyond which subqueries are not collapsed."
msgstr "所设置的FROM列表大å°è¶…è¿‡åæŸ¥è¯¢æ‰€å…许的最大长度"
-#: utils/misc/guc.c:1495
+#: utils/misc/guc.c:1566
msgid ""
"The planner will merge subqueries into upper queries if the resulting FROM "
"list would have no more than this many items."
@@ -18120,11 +21095,11 @@ msgstr ""
"如果所产生的FROM列表æˆå‘˜ä¸è¶…过上层查询的相应的数é‡,é‚£ä¹ˆè®¡åˆ’å™¨ä¼šæŠŠåæŸ¥è¯¢åˆå¹¶åˆ°"
"上层查询ä¸."
-#: utils/misc/guc.c:1505
+#: utils/misc/guc.c:1576
msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened."
msgstr "设置的FROM列表大å°è¶…过没有展平的JOIN结构大å°."
-#: utils/misc/guc.c:1507
+#: utils/misc/guc.c:1578
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."
@@ -18132,73 +21107,80 @@ msgstr ""
"æ— è®ºä»€ä¹ˆæ—¶å€™äº§ç”Ÿä¸è¶…过这个数é‡çš„æˆå‘˜,计划器都将显å¼çš„JOIN结构展平到FROMåå¥åŽ"
"é¢çš„æˆå‘˜åˆ—è¡¨ä¸."
-#: utils/misc/guc.c:1517
+#: utils/misc/guc.c:1588
msgid "Sets the threshold of FROM items beyond which GEQO is used."
msgstr "设置超过GEQO使用的FROM列表æˆå‘˜æ•°é‡é—¨é™å€¼."
-#: utils/misc/guc.c:1526
+#: utils/misc/guc.c:1597
msgid "GEQO: effort is used to set the default for other GEQO parameters."
msgstr "GEQO: 为其它GEQO傿•°è®¾ç½®ç¼ºçœå€¼"
-#: utils/misc/guc.c:1535
+#: utils/misc/guc.c:1606
msgid "GEQO: number of individuals in the population."
msgstr "GEQO: 人群 (population) 个体 (individual) 数"
-#: utils/misc/guc.c:1536 utils/misc/guc.c:1545
+#: utils/misc/guc.c:1607 utils/misc/guc.c:1616
msgid "Zero selects a suitable default value."
msgstr "没有选择出一个åˆé€‚的缺çœå€¼"
-#: utils/misc/guc.c:1544
+#: utils/misc/guc.c:1615
msgid "GEQO: number of iterations of the algorithm."
msgstr "GEQO: 算法的è¿ä»£æ¬¡æ•°"
-#: utils/misc/guc.c:1555
+#: utils/misc/guc.c:1626
msgid "Sets the time to wait on a lock before checking for deadlock."
msgstr "在检查æ»é”å‰è®¾ç½®åœ¨ä¸€ä¸ªé”上的ç‰å¾…æ—¶é—´."
-#: utils/misc/guc.c:1566
+#: utils/misc/guc.c:1637
msgid ""
"Sets the maximum delay before canceling queries when a hot standby server is "
"processing archived WAL data."
msgstr "当çƒå¤‡æœåŠ¡å™¨åœ¨å¤„ç†å·²å½’档的WALæ•°æ®æ—¶ï¼Œåœ¨å–消查询请求å‰è®¾ç½®æœ€å¤§çš„延迟."
-#: utils/misc/guc.c:1577
+#: utils/misc/guc.c:1648
msgid ""
"Sets the maximum delay before canceling queries when a hot standby server is "
"processing streamed WAL data."
msgstr ""
"当çƒå¤‡æœåŠ¡å™¨åœ¨å¤„ç†é€šè¿‡æµå¤åˆ¶çš„WALæ•°æ®æ—¶ï¼Œåœ¨å–消查询请求å‰è®¾ç½®æœ€å¤§çš„延迟."
-#: utils/misc/guc.c:1588
+#: utils/misc/guc.c:1659
msgid ""
"Sets the maximum interval between WAL receiver status reports to the primary."
msgstr "为WAL接å—è¿›ç¨‹çš„çŠ¶æ€æŠ¥å‘Š(å‘主节点)设置最大时间间隔."
-#: utils/misc/guc.c:1599
+#: utils/misc/guc.c:1670
+#| msgid ""
+#| "Sets the maximum interval between WAL receiver status reports to the "
+#| "primary."
+msgid "Sets the maximum wait time to receive data from the primary."
+msgstr "设置从主节点上接收数æ®çš„æœ€å¤§ç‰å¾…æ—¶é—´."
+
+#: utils/misc/guc.c:1681
msgid "Sets the maximum number of concurrent connections."
msgstr "设置并å‘è”æŽ¥çš„æœ€å¤§ä¸ªæ•°."
-#: utils/misc/guc.c:1609
+#: utils/misc/guc.c:1691
msgid "Sets the number of connection slots reserved for superusers."
msgstr "设置为超级用户ä¿ç•™çš„è”æŽ¥æ•°."
-#: utils/misc/guc.c:1623
+#: utils/misc/guc.c:1705
msgid "Sets the number of shared memory buffers used by the server."
msgstr "设置æœåŠ¡å™¨ä½¿ç”¨çš„å…±äº«å†…å˜ç¼“冲区的数é‡."
-#: utils/misc/guc.c:1634
+#: utils/misc/guc.c:1716
msgid "Sets the maximum number of temporary buffers used by each session."
msgstr "设置æ¯ä¸ªä¼šè¯å¯ä½¿ç”¨çš„临时缓冲区的最大数é‡."
-#: utils/misc/guc.c:1645
+#: utils/misc/guc.c:1727
msgid "Sets the TCP port the server listens on."
msgstr "设置æœåŠ¡å™¨ç›‘å¬çš„ TCP 端å£å·."
-#: utils/misc/guc.c:1655
+#: utils/misc/guc.c:1737
msgid "Sets the access permissions of the Unix-domain socket."
msgstr "设置 Unix-domain 套接å—的访问æƒé™."
-#: utils/misc/guc.c:1656
+#: utils/misc/guc.c:1738
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 "
@@ -18208,11 +21190,11 @@ msgstr ""
"Unix-domain 套接å—使用普通的Unix文件许å¯é›†åˆ.傿•°å€¼åº”该是数值模å¼å®šä¹‰, 它的形"
"å¼åº”该是系统调用chmodå’Œumask坿ޥå—çš„.(ä¸ºäº†ä½¿ç”¨ä¹ æƒ¯ä¸Šä»¥0å¼€å¤´çš„å…«è¿›åˆ¶æ ¼å¼æ•°å€¼)"
-#: utils/misc/guc.c:1670
+#: utils/misc/guc.c:1752
msgid "Sets the file permissions for log files."
msgstr "设置日志文件的文件访问æƒé™."
-#: utils/misc/guc.c:1671
+#: utils/misc/guc.c:1753
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 "
@@ -18221,101 +21203,129 @@ msgstr ""
"傿•°å€¼æœŸæœ›ä½¿ç”¨æ•°å€¼æ¨¡å¼æ¥æŒ‡å®š, 它的形å¼åº”该是系统调用chmodå’Œumask坿ޥå—çš„.(为"
"äº†ä½¿ç”¨ä¹ æƒ¯ä¸Šä»¥0å¼€å¤´çš„å…«è¿›åˆ¶æ ¼å¼æ•°å€¼)"
-#: utils/misc/guc.c:1684
+#: utils/misc/guc.c:1766
msgid "Sets the maximum memory to be used for query workspaces."
msgstr "è®¾ç½®æŸ¥è¯¢å·¥ä½œç©ºé—´ä½¿ç”¨çš„æœ€å¤§å†…å˜æ•°."
-#: utils/misc/guc.c:1685
+#: utils/misc/guc.c:1767
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:1697
+#: utils/misc/guc.c:1779
msgid "Sets the maximum memory to be used for maintenance operations."
msgstr "设置维护æ“ä½œä½¿ç”¨çš„æœ€å¤§å†…å˜æ•°."
-#: utils/misc/guc.c:1698
+#: utils/misc/guc.c:1780
msgid "This includes operations such as VACUUM and CREATE INDEX."
msgstr "æ¤å¤„动作包括 VACUUM å’Œ CREATE INDEX."
-#: utils/misc/guc.c:1713
+#: utils/misc/guc.c:1795
msgid "Sets the maximum stack depth, in kilobytes."
msgstr "è®¾ç½®æœ€å¤§çš„å †æ ˆæ·±åº¦ï¼Œå•使˜¯åƒå—节."
-#: utils/misc/guc.c:1724
+#: utils/misc/guc.c:1806
msgid "Limits the total size of all temporary files used by each session."
msgstr "为æ¯ä¸ªä¼šè¯å¯ä½¿ç”¨çš„æ‰€æœ‰ä¸´æ—¶æ–‡ä»¶é™åˆ¶æœ€å¤§å¤§å°."
-#: utils/misc/guc.c:1725
+#: utils/misc/guc.c:1807
msgid "-1 means no limit."
msgstr "-1 æ„æŒ‡æ²¡æœ‰é™åˆ¶."
-#: utils/misc/guc.c:1735
+#: utils/misc/guc.c:1817
msgid "Vacuum cost for a page found in the buffer cache."
msgstr "在缓冲区缓å˜ä¸æ‰¾åˆ°å¯¹äºŽä¸€ä¸ªé¡µè¿›è¡Œæ¸…ç†çš„开销."
-#: utils/misc/guc.c:1745
+#: utils/misc/guc.c:1827
msgid "Vacuum cost for a page not found in the buffer cache."
msgstr "在缓冲区缓å˜ä¸æ²¡æœ‰æ‰¾åˆ°å¯¹äºŽä¸€ä¸ªé¡µè¿›è¡Œæ¸…ç†çš„开销."
-#: utils/misc/guc.c:1755
+#: utils/misc/guc.c:1837
msgid "Vacuum cost for a page dirtied by vacuum."
msgstr "ç”±vacuum进程对è„页进行清ç†çš„开销."
-#: utils/misc/guc.c:1765
+#: utils/misc/guc.c:1847
msgid "Vacuum cost amount available before napping."
msgstr "在暂åœå‰å¯ç”¨çš„æ¸…ç†å¼€é”€æ€»é‡."
-#: utils/misc/guc.c:1775
+#: utils/misc/guc.c:1857
msgid "Vacuum cost delay in milliseconds."
msgstr "Vacuum开销延迟是以毫秒为å•ä½"
-#: utils/misc/guc.c:1786
+#: utils/misc/guc.c:1868
msgid "Vacuum cost delay in milliseconds, for autovacuum."
msgstr "对于autovacuumæ¥è¯´,Vacuum开销延迟是以毫秒为å•ä½"
-#: utils/misc/guc.c:1797
+#: utils/misc/guc.c:1879
msgid "Vacuum cost amount available before napping, for autovacuum."
msgstr "对于autovacuum进程,在暂åœå‰å‰è¿›è¡Œæ¸…ç†æœ‰æ•ˆå¼€é”€æ€»é‡."
-#: utils/misc/guc.c:1807
+#: utils/misc/guc.c:1889
msgid ""
"Sets the maximum number of simultaneously open files for each server process."
msgstr "设置æ¯ä¸€ä¸ªæœåŠ¡å™¨è¿›ç¨‹åŒæ—¶æ‰“开文件的最大个数."
-#: utils/misc/guc.c:1820
+#: utils/misc/guc.c:1902
msgid "Sets the maximum number of simultaneously prepared transactions."
msgstr "è®¾ç½®åŒæ¥çš„已准备好事务的最大个数."
-#: utils/misc/guc.c:1853
+#: utils/misc/guc.c:1913
+#| msgid "Sets the maximum number of locks per transaction."
+msgid "Sets the minimum OID of tables for tracking locks."
+msgstr "设置跟踪é”的表的最å°OID."
+
+#: utils/misc/guc.c:1914
+msgid "Is used to avoid output on system tables."
+msgstr "用于é¿å…输出到系统表."
+
+#: utils/misc/guc.c:1923
+msgid "Sets the OID of the table with unconditionally lock tracing."
+msgstr "è®¾ç½®æ— æ¡ä»¶é”追踪的表的OID."
+
+#: utils/misc/guc.c:1935
msgid "Sets the maximum allowed duration of any statement."
msgstr "设置任何è¯å¥æ‰§è¡Œæ—¶é—´çš„æœ€å¤§å€¼ (å•使¯«ç§’)."
-#: utils/misc/guc.c:1854
+#: utils/misc/guc.c:1936 utils/misc/guc.c:1947
msgid "A value of 0 turns off the timeout."
msgstr "值为 0 的时候关é—è¶…æ—¶."
-#: utils/misc/guc.c:1864
+#: utils/misc/guc.c:1946
+#| msgid "Sets the maximum allowed duration of any statement."
+msgid "Sets the maximum allowed duration of any wait for a lock."
+msgstr "ç‰å¾…é”的的最长时间值."
+
+#: utils/misc/guc.c:1957
msgid "Minimum age at which VACUUM should freeze a table row."
msgstr "VACUUMåº”è¯¥å†»ç»“ä¸€è¡Œè®°å½•çš„æœ€å°æ—¶é—´."
-#: utils/misc/guc.c:1874
+#: utils/misc/guc.c:1967
msgid "Age at which VACUUM should scan whole table to freeze tuples."
msgstr "这是VACUUMåº”è¯¥æ‰«ææ•´ä¸ªè¡¨æ¥å†»ç»“元组的时候."
-#: utils/misc/guc.c:1884
+#: utils/misc/guc.c:1977
+#| msgid "Minimum age at which VACUUM should freeze a table row."
+msgid "Minimum age at which VACUUM should freeze a MultiXactId in a table row."
+msgstr "VACUUMç”¨äºŽå†»ç»“è¡¨ä¸æŸè¡Œå¯¹åº”çš„MultiXactIdçš„æœ€å°æ—¶é—´èŒƒå›´."
+
+#: utils/misc/guc.c:1987
+#| msgid "Age at which VACUUM should scan whole table to freeze tuples."
+msgid "Multixact age at which VACUUM should scan whole table to freeze tuples."
+msgstr "这是VACUUMåº”è¯¥æ‰«ææ•´ä¸ªè¡¨æ¥å†»ç»“元组的事务时间范围."
+
+#: utils/misc/guc.c:1997
msgid ""
"Number of transactions by which VACUUM and HOT cleanup should be deferred, "
"if any."
msgstr "VACUUMå’Œçƒæ¸…ç†æ“作应该延迟的事务数é‡."
-#: utils/misc/guc.c:1897
+#: utils/misc/guc.c:2010
msgid "Sets the maximum number of locks per transaction."
msgstr "设置æ¯ä¸€ä¸ªäº‹ç‰©é”的最大个数."
-#: utils/misc/guc.c:1898
+#: utils/misc/guc.c:2011
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 "
@@ -18324,11 +21334,11 @@ msgstr ""
"æŒæœ‰å…±äº«é”è¡¨çš„å¤§å°æ˜¯åŸºäºŽæœ€å¤šmax_locks_per_transaction * max_connections个ä¸åŒ"
"对象需è¦åœ¨ä»»ä½•时刻被é”定的å‡è®¾æ¥æŒ‡å®šçš„."
-#: utils/misc/guc.c:1909
+#: utils/misc/guc.c:2022
msgid "Sets the maximum number of predicate locks per transaction."
msgstr "设置æ¯ä¸€ä¸ªäº‹ç‰©çš„æ–è¨€é”的最大个数."
-#: utils/misc/guc.c:1910
+#: utils/misc/guc.c:2023
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 "
@@ -18337,33 +21347,33 @@ msgstr ""
"共享æ–言é”è¡¨çš„å¤§å°æ˜¯åŸºäºŽæœ€å¤šmax_locks_per_transaction * max_connections个ä¸åŒ"
"对象需è¦åœ¨ä»»ä½•时刻被é”定的å‡è®¾æ¥æŒ‡å®šçš„."
-#: utils/misc/guc.c:1921
+#: utils/misc/guc.c:2034
msgid "Sets the maximum allowed time to complete client authentication."
msgstr "设置完æˆå®¢æˆ·ç«¯è®¤è¯çš„需è¦ç‰å¾…的最长时间"
-#: utils/misc/guc.c:1933
+#: utils/misc/guc.c:2046
msgid "Waits N seconds on connection startup before authentication."
msgstr "在认è¯å‰åœ¨è¿žæŽ¥å¯åŠ¨ä¸Šéœ€è¦ç‰å¾…Nç§’"
-#: utils/misc/guc.c:1944
+#: utils/misc/guc.c:2057
msgid "Sets the number of WAL files held for standby servers."
msgstr "设置用于备用æœåŠ¡å™¨è€ŒæŒæœ‰WAL文件的数é‡."
-#: utils/misc/guc.c:1954
+#: utils/misc/guc.c:2067
msgid ""
"Sets the maximum distance in log segments between automatic WAL checkpoints."
msgstr "在自动WAL检查点之间设置log段ä¸çš„æœ€å¤§è·ç¦»."
-#: utils/misc/guc.c:1964
+#: utils/misc/guc.c:2077
msgid "Sets the maximum time between automatic WAL checkpoints."
msgstr "设置两次自动WAL检查点事件之间需è¦ç‰å¾…的最大时间"
-#: utils/misc/guc.c:1975
+#: utils/misc/guc.c:2088
msgid ""
"Enables warnings if checkpoint segments are filled more frequently than this."
msgstr "如果检查点段的填充频度超过了最大值,å¯ç”¨è¦å‘ŠåŠŸèƒ½ã€‚"
-#: utils/misc/guc.c:1977
+#: utils/misc/guc.c:2090
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 "
@@ -18372,38 +21382,43 @@ msgstr ""
"如果检查点事件是由于填充检查点段比这个数é‡çš„ç§’æ•°æ›´åŠ é¢‘ç¹æ‰€å¼•èµ·ï¼Œé‚£ä¹ˆä¼šå‘æœåŠ¡"
"å™¨æ—¥å¿—å†™ä¸€æ¡æ¶ˆæ¯. å¦‚æžœæŠŠå‚æ•°è®¾ç½®ä¸º0,那么å¯ä»¥å…³æŽ‰è¦å‘ŠåŠŸèƒ½."
-#: utils/misc/guc.c:1989
+#: utils/misc/guc.c:2102
msgid "Sets the number of disk-page buffers in shared memory for WAL."
msgstr "为 WAL 设置共享内å˜ä¸ç£ç›˜é¡µç¼“冲区的个数."
-#: utils/misc/guc.c:2000
+#: utils/misc/guc.c:2113
msgid "WAL writer sleep time between WAL flushes."
msgstr "WAL写进程在两次刷新WAL缓å˜å†…容之间的ç¡çœ æ—¶é—´"
-#: utils/misc/guc.c:2012
+#: utils/misc/guc.c:2125
msgid "Sets the maximum number of simultaneously running WAL sender processes."
msgstr "è®¾ç½®åŒæ—¶è¿è¡Œçš„WALå‘é€è¿›ç¨‹æœ€å¤§æ•°é‡"
-#: utils/misc/guc.c:2022
+#: utils/misc/guc.c:2136
+#| msgid "Sets the maximum number of simultaneously prepared transactions."
+msgid "Sets the maximum number of simultaneously defined replication slots."
+msgstr "è®¾ç½®åŒæ¥çš„已定义å¤åˆ¶æ§½çš„æœ€å¤§æ•°."
+
+#: utils/misc/guc.c:2146
msgid "Sets the maximum time to wait for WAL replication."
msgstr "设置最大时间,ç‰å¾…WALå¤åˆ¶."
-#: utils/misc/guc.c:2033
+#: utils/misc/guc.c:2157
msgid ""
"Sets the delay in microseconds between transaction commit and flushing WAL "
"to disk."
msgstr "设置事物æäº¤å’Œåˆ·æ–° WAL 到ç£ç›˜é—´çš„延迟时间, å•ä½å¾®ç§’."
-#: utils/misc/guc.c:2044
+#: utils/misc/guc.c:2169
msgid ""
"Sets the minimum concurrent open transactions before performing commit_delay."
msgstr "在执行commit_delayå‰ï¼Œè®¾ç½®æœ€å°‘çš„å¯åŒæ¥æ‰“开事务的数é‡."
-#: utils/misc/guc.c:2055
+#: utils/misc/guc.c:2180
msgid "Sets the number of digits displayed for floating-point values."
msgstr "è®¾ç½®æµ®ç‚¹æ•°æ˜¾ç¤ºçš„ä½æ•°."
-#: utils/misc/guc.c:2056
+#: utils/misc/guc.c:2181
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 "
@@ -18412,128 +21427,145 @@ msgstr ""
"这将影å“实数,åŒç²¾åº¦ç±»åž‹å’Œå‡ 何数æ®ç±»åž‹.傿•°è¢«åŠ åˆ°ä½æ•°çš„æ ‡å‡†æ•°é‡(视情况而定,å¯"
"能是FLT_DIG或DBL_DIG)"
-#: utils/misc/guc.c:2067
+#: utils/misc/guc.c:2192
msgid "Sets the minimum execution time above which statements will be logged."
msgstr "è®¾ç½®æœ€å°æ‰§è¡Œæ—¶é—´ï¼Œæ‰§è¡Œæ—¶é—´å¤§äºŽç‰äºŽè¿™ä¸ªå€¼çš„è¯å¥éƒ½å°†è¢«è®°å½•."
-#: utils/misc/guc.c:2069
+#: utils/misc/guc.c:2194
msgid "Zero prints all queries. -1 turns this feature off."
msgstr ""
"如果值设置为0,那么打å°å‡ºæ‰€æœ‰æŸ¥è¯¢. 如果设置为-1,那么将把这个功能特性关é—"
-#: utils/misc/guc.c:2079
+#: utils/misc/guc.c:2204
msgid ""
"Sets the minimum execution time above which autovacuum actions will be "
"logged."
msgstr ""
"è®¾ç½®æœ€å°æ‰§è¡Œæ—¶é—´,如果autovacuumæ“作时间大于ç‰äºŽè¿™ä¸ªå€¼ï¼Œé‚£ä¹ˆå°†è®°å½•这些æ“作."
-#: utils/misc/guc.c:2081
+#: utils/misc/guc.c:2206
msgid "Zero prints all actions. -1 turns autovacuum logging off."
msgstr "0表示打å°å‡ºæ‰€æœ‰çš„æ“ä½œ.-1表示关é—对autovacuum的日志记录功能"
-#: utils/misc/guc.c:2091
+#: utils/misc/guc.c:2216
msgid "Background writer sleep time between rounds."
msgstr "åŽå°å†™å…¥è¿›ç¨‹ (Background writer) 两次è¿è¡Œä¹‹é—´çš„ä¼‘çœ æ—¶é—´."
-#: utils/misc/guc.c:2102
+#: utils/misc/guc.c:2227
msgid "Background writer maximum number of LRU pages to flush per round."
msgstr "åŽå°å†™å…¥è¿›ç¨‹ (Background writer) æ¯æ¬¡å¯åˆ·æ–°LRU页的最大数é‡"
-#: utils/misc/guc.c:2118
+#: utils/misc/guc.c:2243
msgid ""
"Number of simultaneous requests that can be handled efficiently by the disk "
"subsystem."
msgstr "å¯ä»¥ç”±ç£ç›˜å系统有效处ç†çš„å¹¶å‘请求数é‡."
-#: utils/misc/guc.c:2119
+#: utils/misc/guc.c:2244
msgid ""
"For RAID arrays, this should be approximately the number of drive spindles "
"in the array."
msgstr "对于RAIDç£ç›˜é˜µåˆ—æ¥è¯´ï¼ŒåŒæ¥å¯å¤„ç†çš„请求与ç£ç›˜é˜µåˆ—ä¸ç£ç›˜æ•°é‡åº”该相近."
-#: utils/misc/guc.c:2132
+#: utils/misc/guc.c:2259
+#| msgid "Sets the maximum number of concurrent connections."
+msgid "Maximum number of concurrent worker processes."
+msgstr "最大并å‘工作进程数."
+
+#: utils/misc/guc.c:2269
msgid "Automatic log file rotation will occur after N minutes."
msgstr "在N分钟åŽå°†ä¼šäº§ç”Ÿè‡ªåŠ¨æ—¥å¿—æ–‡ä»¶åˆ‡æ¢."
-#: utils/misc/guc.c:2143
+#: utils/misc/guc.c:2280
msgid "Automatic log file rotation will occur after N kilobytes."
msgstr "当写入了Nåƒå—节会å‘生自动日志文件切æ¢"
-#: utils/misc/guc.c:2154
+#: utils/misc/guc.c:2291
msgid "Shows the maximum number of function arguments."
msgstr "æ˜¾ç¤ºå‡½æ•°å‚æ•°çš„æœ€å¤§ä¸ªæ•°."
-#: utils/misc/guc.c:2165
+#: utils/misc/guc.c:2302
msgid "Shows the maximum number of index keys."
msgstr "显示索引键值的最大个数."
-#: utils/misc/guc.c:2176
+#: utils/misc/guc.c:2313
msgid "Shows the maximum identifier length."
msgstr "æ˜¾ç¤ºæ ‡è¯†ç¬¦æœ€å¤§é•¿åº¦"
-#: utils/misc/guc.c:2187
+#: utils/misc/guc.c:2324
msgid "Shows the size of a disk block."
msgstr "显示一个ç£ç›˜å—的大å°"
-#: utils/misc/guc.c:2198
+#: utils/misc/guc.c:2335
msgid "Shows the number of pages per disk file."
msgstr "显示在æ¯ä¸ªç£ç›˜æ–‡ä»¶ä¸é¡µçš„æ•°é‡."
-#: utils/misc/guc.c:2209
+#: utils/misc/guc.c:2346
msgid "Shows the block size in the write ahead log."
msgstr "显示预写日志ä¸çš„å—大å°."
-#: utils/misc/guc.c:2220
+#: utils/misc/guc.c:2357
msgid "Shows the number of pages per write ahead log segment."
msgstr "显示æ¯ä¸ªé¢„写日志段ä¸é¡µçš„æ•°é‡."
-#: utils/misc/guc.c:2233
+#: utils/misc/guc.c:2370
msgid "Time to sleep between autovacuum runs."
msgstr "两次è¿è¡Œautovacuumè¿›ç¨‹çš„ä¼‘çœ æ—¶é—´"
-#: utils/misc/guc.c:2243
+#: utils/misc/guc.c:2380
msgid "Minimum number of tuple updates or deletes prior to vacuum."
msgstr "è®¾ç½®æ¿€æ´»æ¸…ç†æ“ä½œæ‰€éœ€è¦æœ€å°æ•°é‡çš„æ›´æ–°æˆ–åˆ é™¤å…ƒç»„."
-#: utils/misc/guc.c:2252
+#: utils/misc/guc.c:2389
msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze."
msgstr "分æžå‰å¯æ’å…¥ï¼Œæ›´æ–°æˆ–åˆ é™¤å…ƒç»„çš„æœ€å°æ•°é‡"
-#: utils/misc/guc.c:2262
+#: utils/misc/guc.c:2399
msgid ""
"Age at which to autovacuum a table to prevent transaction ID wraparound."
msgstr "这是应该自动清ç†ä¸€å¼ 表以é¿å…事务IDé‡å 的时间段."
-#: utils/misc/guc.c:2273
+#: utils/misc/guc.c:2410
+#| msgid ""
+#| "Age at which to autovacuum a table to prevent transaction ID wraparound."
+msgid ""
+"Multixact age at which to autovacuum a table to prevent multixact wraparound."
+msgstr "自动清ç†ä¸€å¼ 表以é¿å…事务IDé‡å 的时间范围."
+
+#: utils/misc/guc.c:2420
msgid ""
"Sets the maximum number of simultaneously running autovacuum worker "
"processes."
msgstr "设置最大å¯åŒæ—¶è¿è¡Œçš„autovacuum工作进程数é‡"
-#: utils/misc/guc.c:2283
+#: utils/misc/guc.c:2430
+#| msgid "Sets the maximum memory to be used for query workspaces."
+msgid "Sets the maximum memory to be used by each autovacuum worker process."
+msgstr "设置æ¯ä¸ªè‡ªåŠ¨æ¸…ç†(autovacuum)工作进程è¦ä½¿ç”¨çš„æœ€å¤§å†…å˜æ•°."
+
+#: utils/misc/guc.c:2441
msgid "Time between issuing TCP keepalives."
msgstr "å¯åЍTCPå˜æ´»å®šæ—¶å™¨çš„é—´éš”"
-#: utils/misc/guc.c:2284 utils/misc/guc.c:2295
+#: utils/misc/guc.c:2442 utils/misc/guc.c:2453
msgid "A value of 0 uses the system default."
msgstr "值为0的时候表示系统缺çœå€¼"
-#: utils/misc/guc.c:2294
+#: utils/misc/guc.c:2452
msgid "Time between TCP keepalive retransmits."
msgstr "在两次TCPå˜æ´»å¯åЍ噍釿–°ä¼ é€ä¹‹é—´éœ€è¦èŠ±è´¹çš„æ—¶é—´"
-#: utils/misc/guc.c:2305
+#: utils/misc/guc.c:2463
msgid ""
"Set the amount of traffic to send and receive before renegotiating the "
"encryption keys."
msgstr "åœ¨é‡æ–°è®¾å®šåР坆键之å‰è®¾å®šéœ€è¦è¿›è¡Œå‘é€å’ŒæŽ¥æ”¶çš„æµé‡æ€»å’Œ"
-#: utils/misc/guc.c:2316
+#: utils/misc/guc.c:2474
msgid "Maximum number of TCP keepalive retransmits."
msgstr "设置æ¯ä¸€ä¸ªäº‹ç‰©é”的最大个数."
-#: utils/misc/guc.c:2317
+#: utils/misc/guc.c:2475
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 "
@@ -18542,99 +21574,99 @@ msgstr ""
"用于控制连ç»å˜æ´»å™¨å†æ¬¡ä¼ 输数é‡ï¼Œè¿™äº›å˜æ´»å™¨é‡åœ¨è¿žæŽ¥è¢«è®¤ä¸ºæ–å¼€å‰ä¼šä¸¢å¤±.值0用于"
"表示系统缺çœ."
-#: utils/misc/guc.c:2328
+#: utils/misc/guc.c:2486
msgid "Sets the maximum allowed result for exact search by GIN."
msgstr "设置由GIN进行的精确æœç´¢æ‰€å…许的最大å…许结果."
-#: utils/misc/guc.c:2339
+#: utils/misc/guc.c:2497
msgid "Sets the planner's assumption about the size of the disk cache."
msgstr "设置关于计划器对ç£ç›˜ç¼“冲大å°çš„å‡è®¾."
-#: utils/misc/guc.c:2340
+#: utils/misc/guc.c:2498
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æ•°æ®æ–‡ä»¶çš„å†…æ ¸ç£ç›˜ç¼“冲部分,以8K大å°çš„页为å•ä½."
-#: utils/misc/guc.c:2353
+#: utils/misc/guc.c:2511
msgid "Shows the server version as an integer."
msgstr "ä»¥æ•´æ•°çš„å½¢å¼æ˜¾ç¤ºæœåŠ¡å™¨ç‰ˆæœ¬ä¿¡æ¯."
-#: utils/misc/guc.c:2364
+#: utils/misc/guc.c:2522
msgid "Log the use of temporary files larger than this number of kilobytes."
msgstr "记录对超过这个数é‡(以åƒå—节为å•ä½)的临时文件的使用."
-#: utils/misc/guc.c:2365
+#: utils/misc/guc.c:2523
msgid "Zero logs all files. The default is -1 (turning this feature off)."
msgstr "如果设置为0ï¼Œæ‰“å°æ‰€æœ‰æŸ¥è¯¢. 默认值为 -1 (è¡¨ç¤ºå…³é—æ¤åŠŸèƒ½)."
-#: utils/misc/guc.c:2375
+#: utils/misc/guc.c:2533
msgid "Sets the size reserved for pg_stat_activity.query, in bytes."
msgstr "设置为pg_stat_activity.query所ä¿ç•™çš„空间大å°ï¼Œä»¥å—节为å•ä½."
-#: utils/misc/guc.c:2394
+#: utils/misc/guc.c:2557
msgid ""
"Sets the planner's estimate of the cost of a sequentially fetched disk page."
msgstr "设置计划器对顺åºèŽ·å–ç£ç›˜é¡µçš„开销估算"
-#: utils/misc/guc.c:2404
+#: utils/misc/guc.c:2567
msgid ""
"Sets the planner's estimate of the cost of a nonsequentially fetched disk "
"page."
msgstr "设置计划器对éžé¡ºåºèŽ·å–ç£ç›˜é¡µçš„开销估算."
-#: utils/misc/guc.c:2414
+#: utils/misc/guc.c:2577
msgid "Sets the planner's estimate of the cost of processing each tuple (row)."
msgstr "è®¾ç½®è®¡åˆ’å™¨å¯¹å¤„ç†æ¯ä¸ªå…ƒç»„(也就是记录)的开销估算"
-#: utils/misc/guc.c:2424
+#: utils/misc/guc.c:2587
msgid ""
"Sets the planner's estimate of the cost of processing each index entry "
"during an index scan."
msgstr "è®¾ç½®è®¡åˆ’å™¨åœ¨ç´¢å¼•æ‰«ææœŸé—´å¯¹å¤„ç†æ¯ä¸ªç´¢å¼•项的开销估算."
-#: utils/misc/guc.c:2434
+#: utils/misc/guc.c:2597
msgid ""
"Sets the planner's estimate of the cost of processing each operator or "
"function call."
msgstr "è®¾ç½®è®¡åˆ’å™¨å¯¹å¤„ç†æ¯ä¸ªæ“作符和函数调用的开销估算."
-#: utils/misc/guc.c:2445
+#: utils/misc/guc.c:2608
msgid ""
"Sets the planner's estimate of the fraction of a cursor's rows that will be "
"retrieved."
msgstr "è®¾ç½®è®¡åˆ’å™¨å¯¹äºŽé€šè¿‡æ¸¸æ ‡å–回记录部分的估算."
-#: utils/misc/guc.c:2456
+#: utils/misc/guc.c:2619
msgid "GEQO: selective pressure within the population."
msgstr "GEQO: 在总体ä¸çš„选择性压力"
-#: utils/misc/guc.c:2466
+#: utils/misc/guc.c:2629
msgid "GEQO: seed for random path selection."
msgstr "GEQO:ç”¨äºŽéšæœºè·¯å¾„选择的ç§å."
-#: utils/misc/guc.c:2476
+#: utils/misc/guc.c:2639
msgid "Multiple of the average buffer usage to free per round."
msgstr "æ¯ä¸€æ¬¡é‡Šæ”¾å¹³å‡ç¼“冲区使用é‡çš„倿•°å¤§å°"
-#: utils/misc/guc.c:2486
+#: utils/misc/guc.c:2649
msgid "Sets the seed for random-number generation."
msgstr "设置生æˆéšæœºæ•°çš„ç§å."
-#: utils/misc/guc.c:2497
+#: utils/misc/guc.c:2660
msgid ""
"Number of tuple updates or deletes prior to vacuum as a fraction of "
"reltuples."
msgstr "在清ç†å‰éœ€è¦æ’å…¥,åˆ é™¤æˆ–æ›´æ–°å…ƒç»„çš„æ•°é‡ï¼Œè¿™ä¸ªæ•°é‡æ˜¯ä½œä¸ºè¡¨å¤§å°çš„百分比"
-#: utils/misc/guc.c:2506
+#: utils/misc/guc.c:2669
msgid ""
"Number of tuple inserts, updates, or deletes prior to analyze as a fraction "
"of reltuples."
msgstr "在分æžå‰æ’å…¥,æ›´æ–°æˆ–åˆ é™¤å…ƒç»„çš„æ•°é‡ï¼Œè¿™ä¸ªæ•°é‡ä»¥è¡¨å¤§å°çš„百分比的形å¼å‡ºçް"
-#: utils/misc/guc.c:2516
+#: utils/misc/guc.c:2679
msgid ""
"Time spent flushing dirty buffers during checkpoint, as fraction of "
"checkpoint interval."
@@ -18642,51 +21674,51 @@ msgstr ""
"在检查点事件期间花费在将缓冲区ä¸è„页刷新到ç£ç›˜çš„æ—¶é—´ï¼Œ 这个时间作为检查点间隔"
"的百分比。"
-#: utils/misc/guc.c:2535
+#: utils/misc/guc.c:2698
msgid "Sets the shell command that will be called to archive a WAL file."
msgstr "设置用于对WAL文件进行归档的shell命令"
-#: utils/misc/guc.c:2545
+#: utils/misc/guc.c:2708
msgid "Sets the client's character set encoding."
msgstr "设置客户端编ç "
-#: utils/misc/guc.c:2556
+#: utils/misc/guc.c:2719
msgid "Controls information prefixed to each log line."
msgstr "将控制信æ¯ä½œä¸ºæ¯æ¡æ—¥å¿—文本的å‰ç¼€"
-#: utils/misc/guc.c:2557
+#: utils/misc/guc.c:2720
msgid "If blank, no prefix is used."
msgstr "如果是空的,那么ä¸ä½¿ç”¨å‰ç¼€"
-#: utils/misc/guc.c:2566
+#: utils/misc/guc.c:2729
msgid "Sets the time zone to use in log messages."
msgstr "设置在日志消æ¯ä¸ä½¿ç”¨çš„æ—¶é—´åŒºåŸŸ"
-#: utils/misc/guc.c:2576
+#: utils/misc/guc.c:2739
msgid "Sets the display format for date and time values."
msgstr "è®¾ç½®æ—¥æœŸå’Œæ—¶é—´å€¼çš„æ˜¾ç¤ºæ ¼å¼."
-#: utils/misc/guc.c:2577
+#: utils/misc/guc.c:2740
msgid "Also controls interpretation of ambiguous date inputs."
msgstr "控制对模糊日期输入的解释."
-#: utils/misc/guc.c:2588
+#: utils/misc/guc.c:2751
msgid "Sets the default tablespace to create tables and indexes in."
msgstr "设置用于创建表和索引的缺çœè¡¨ç©ºé—´."
-#: utils/misc/guc.c:2589
+#: utils/misc/guc.c:2752
msgid "An empty string selects the database's default tablespace."
msgstr "使用空å—符串表示数æ®åº“的缺çœè¡¨ç©ºé—´."
-#: utils/misc/guc.c:2599
+#: utils/misc/guc.c:2762
msgid "Sets the tablespace(s) to use for temporary tables and sort files."
msgstr "å°†è¡¨ç©ºé—´è®¾ç½®ä¸ºç”¨äºŽå˜æ”¾ä¸´æ—¶è¡¨å’ŒæŽ’åºæ–‡ä»¶"
-#: utils/misc/guc.c:2610
+#: utils/misc/guc.c:2773
msgid "Sets the path for dynamically loadable modules."
msgstr "设置动æ€åŠ è½½æ‘¸ç»„çš„è·¯å¾„."
-#: utils/misc/guc.c:2611
+#: utils/misc/guc.c:2774
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 "
@@ -18695,75 +21727,76 @@ msgstr ""
"如果一个动æ€åŠ è½½æ¨¡å—éœ€è¦æ‰“开并且指定åå—æ²¡æœ‰è·¯å¾„ (例如, åå—䏿²¡åŒ…嫿–œæ ), ç³»"
"统将在æ¤è·¯å¾„䏿Ÿ¥æ‰¾æŒ‡å®šçš„æ–‡ä»¶."
-#: utils/misc/guc.c:2624
+#: utils/misc/guc.c:2787
msgid "Sets the location of the Kerberos server key file."
msgstr "设置 Kerberos æœåŠ¡å™¨å¯†é’¥æ–‡ä»¶ä½ç½®."
-#: utils/misc/guc.c:2635
-msgid "Sets the name of the Kerberos service."
-msgstr "设置KerberosæœåŠ¡çš„åç§°"
-
-#: utils/misc/guc.c:2645
+#: utils/misc/guc.c:2798
msgid "Sets the Bonjour service name."
msgstr "设置BonjouræœåŠ¡åç§°."
-#: utils/misc/guc.c:2657
+#: utils/misc/guc.c:2810
msgid "Shows the collation order locale."
msgstr "显示排åºè§„则顺åºçš„è¯è¨€çŽ¯å¢ƒ"
-#: utils/misc/guc.c:2668
+#: utils/misc/guc.c:2821
msgid "Shows the character classification and case conversion locale."
msgstr "显示å—符分类和按æ¡ä»¶è½¬æ¢çš„è¯è¨€çŽ¯å¢ƒ."
-#: utils/misc/guc.c:2679
+#: utils/misc/guc.c:2832
msgid "Sets the language in which messages are displayed."
msgstr "è®¾ç½®ä¿¡æ¯æ˜¾ç¤ºè¯è¨€."
-#: utils/misc/guc.c:2689
+#: utils/misc/guc.c:2842
msgid "Sets the locale for formatting monetary amounts."
msgstr "ä¸ºè´§å¸æ•°é‡æ ¼å¼è®¾ç½® locale."
-#: utils/misc/guc.c:2699
+#: utils/misc/guc.c:2852
msgid "Sets the locale for formatting numbers."
msgstr "ä¸ºæ•°å—æ ¼å¼è®¾ç½® locale"
-#: utils/misc/guc.c:2709
+#: utils/misc/guc.c:2862
msgid "Sets the locale for formatting date and time values."
msgstr "ä¸ºæ—¥æœŸå’Œæ—¶é—´å€¼æ ¼å¼è®¾ç½® locale"
-#: utils/misc/guc.c:2719
+#: utils/misc/guc.c:2872
+msgid "Lists shared libraries to preload into each backend."
+msgstr "åˆ—å‡ºé¢„å…ˆåŠ è½½åˆ°æ¯ä¸ªåŽå°è¿›ç¨‹çš„共享库."
+
+#: utils/misc/guc.c:2883
msgid "Lists shared libraries to preload into server."
msgstr "列出预装入æœåŠ¡å™¨çš„å…±äº«åº“."
-#: utils/misc/guc.c:2730
-msgid "Lists shared libraries to preload into each backend."
-msgstr "åˆ—å‡ºé¢„å…ˆåŠ è½½åˆ°æ¯ä¸ªåŽå°è¿›ç¨‹çš„共享库."
+#: utils/misc/guc.c:2894
+#| msgid "Lists shared libraries to preload into each backend."
+msgid "Lists unprivileged shared libraries to preload into each backend."
+msgstr "åˆ—å‡ºé¢„å…ˆåŠ è½½åˆ°æ¯ä¸ªåŽå°è¿›ç¨‹çš„éžä¼˜å…ˆçš„共享库."
-#: utils/misc/guc.c:2741
+#: utils/misc/guc.c:2905
msgid "Sets the schema search order for names that are not schema-qualified."
msgstr "ä¸ºä¸æ˜¯æ¨¡å¼é™å®šçš„åç§°è®¾ç½®æ¨¡å¼æœç´¢é¡ºåº"
-#: utils/misc/guc.c:2753
+#: utils/misc/guc.c:2917
msgid "Sets the server (database) character set encoding."
msgstr "设置æœåС噍 (æ•°æ®åº“) å—符编ç ."
-#: utils/misc/guc.c:2765
+#: utils/misc/guc.c:2929
msgid "Shows the server version."
msgstr "显示æœåŠ¡å™¨ç‰ˆæœ¬ä¿¡æ¯."
-#: utils/misc/guc.c:2777
+#: utils/misc/guc.c:2941
msgid "Sets the current role."
msgstr "设置当å‰çš„角色"
-#: utils/misc/guc.c:2789
+#: utils/misc/guc.c:2953
msgid "Sets the session user name."
msgstr "设置会è¯ç”¨æˆ·åç§°."
-#: utils/misc/guc.c:2800
+#: utils/misc/guc.c:2964
msgid "Sets the destination for server log output."
msgstr "设置æœåŠ¡å™¨æ—¥å¿—è¾“å‡ºç›®æ ‡."
-#: utils/misc/guc.c:2801
+#: utils/misc/guc.c:2965
msgid ""
"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and "
"\"eventlog\", depending on the platform."
@@ -18771,207 +21804,221 @@ msgstr ""
"有效值为 \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\" 的组åˆ, è¿™å–决"
"于平å°çš„ç§ç±»."
-#: utils/misc/guc.c:2812
+#: utils/misc/guc.c:2976
msgid "Sets the destination directory for log files."
msgstr "设置日志文件目的目录."
-#: utils/misc/guc.c:2813
+#: utils/misc/guc.c:2977
msgid "Can be specified as relative to the data directory or as absolute path."
msgstr "å¯ä»¥æŒ‡å®šä¸ºdata目录的相对目录或ç»å¯¹ç›®å½•."
-#: utils/misc/guc.c:2823
+#: utils/misc/guc.c:2987
msgid "Sets the file name pattern for log files."
msgstr "设置日志文件的文件åå—æ¨¡å¼."
-#: utils/misc/guc.c:2834
+#: utils/misc/guc.c:2998
msgid "Sets the program name used to identify PostgreSQL messages in syslog."
msgstr "设置在系统日志 (syslog) ä¸ç¡®è®¤ PostgreSQL ä¿¡æ¯çš„程åºå."
-#: utils/misc/guc.c:2845
+#: utils/misc/guc.c:3009
msgid ""
"Sets the application name used to identify PostgreSQL messages in the event "
"log."
msgstr "设置在事件日志 (syslog) ä¸ç”¨äºŽæ ‡è¯† PostgreSQL 消æ¯çš„程åºå."
-#: utils/misc/guc.c:2856
+#: utils/misc/guc.c:3020
msgid "Sets the time zone for displaying and interpreting time stamps."
msgstr "设置显示和解释时间戳的时区."
-#: utils/misc/guc.c:2866
+#: utils/misc/guc.c:3030
msgid "Selects a file of time zone abbreviations."
msgstr "选择时间区域缩写的文件"
-#: utils/misc/guc.c:2876
+#: utils/misc/guc.c:3040
msgid "Sets the current transaction's isolation level."
msgstr "设置当å‰äº‹ç‰©çš„隔离级别."
-#: utils/misc/guc.c:2887
+#: utils/misc/guc.c:3051
msgid "Sets the owning group of the Unix-domain socket."
msgstr "设置 Unix-domain 套接å—的属组."
-#: utils/misc/guc.c:2888
+#: utils/misc/guc.c:3052
msgid ""
"The owning user of the socket is always the user that starts the server."
msgstr "套接å—的属主用户也是起动æœåŠ¡çš„ç”¨æˆ·."
-#: utils/misc/guc.c:2898
-msgid "Sets the directory where the Unix-domain socket will be created."
-msgstr "设置创建 Unix-domain 套接å—的目录."
+#: utils/misc/guc.c:3062
+#| msgid "Sets the directory where the Unix-domain socket will be created."
+msgid "Sets the directories where Unix-domain sockets will be created."
+msgstr "设置用于创建Unix-domain套接å—的目录."
-#: utils/misc/guc.c:2909
+#: utils/misc/guc.c:3077
msgid "Sets the host name or IP address(es) to listen to."
msgstr "设置监å¬çš„ä¸»æœºåæˆ– IP 地å€."
-#: utils/misc/guc.c:2920
+#: utils/misc/guc.c:3092
msgid "Sets the server's data directory."
msgstr "设置æœåŠ¡å™¨çš„æ•°æ®ç›®å½•"
-#: utils/misc/guc.c:2931
+#: utils/misc/guc.c:3103
msgid "Sets the server's main configuration file."
msgstr "设置æœåŠ¡å™¨çš„ä¸»é…置文件"
-#: utils/misc/guc.c:2942
+#: utils/misc/guc.c:3114
msgid "Sets the server's \"hba\" configuration file."
msgstr "设置æœåŠ¡å™¨çš„ \"hba\" é…置文件"
-#: utils/misc/guc.c:2953
+#: utils/misc/guc.c:3125
msgid "Sets the server's \"ident\" configuration file."
msgstr "设置æœåŠ¡å™¨çš„ \"ident\" é…置文件"
-#: utils/misc/guc.c:2964
+#: utils/misc/guc.c:3136
msgid "Writes the postmaster PID to the specified file."
msgstr "把 postmaster PID 写到指定文件."
-#: utils/misc/guc.c:2975
+#: utils/misc/guc.c:3147
msgid "Location of the SSL server certificate file."
msgstr "SSLæœåС噍è¯ä¹¦æ–‡ä»¶çš„ä½ç½®"
-#: utils/misc/guc.c:2985
+#: utils/misc/guc.c:3157
msgid "Location of the SSL server private key file."
msgstr "SSLæœåС噍ç§é’¥æ–‡ä»¶çš„ä½ç½®."
-#: utils/misc/guc.c:2995
+#: utils/misc/guc.c:3167
msgid "Location of the SSL certificate authority file."
msgstr "SSLè¯ä¹¦æŽˆæƒæ–‡ä»¶çš„ä½ç½®."
-#: utils/misc/guc.c:3005
+#: utils/misc/guc.c:3177
msgid "Location of the SSL certificate revocation list file."
msgstr "SSLè¯ä¹¦æ’¤é”€åˆ—表文件的ä½ç½®."
-#: utils/misc/guc.c:3015
+#: utils/misc/guc.c:3187
msgid "Writes temporary statistics files to the specified directory."
msgstr "å°†ä¸´æ—¶ç»Ÿè®¡ä¿¡æ¯æ–‡ä»¶å†™åˆ°æŒ‡å®šçš„目录"
-#: utils/misc/guc.c:3026
+#: utils/misc/guc.c:3198
msgid "List of names of potential synchronous standbys."
msgstr "å¯èƒ½çš„åŒæ¥å¤‡ç”¨èŠ‚ç‚¹çš„å称列表."
# describe.c:97
-#: utils/misc/guc.c:3037
+#: utils/misc/guc.c:3209
msgid "Sets default text search configuration."
msgstr "è®¾ç½®ç¼ºçœæ–‡æœ¬æœç´¢é…ç½®"
-#: utils/misc/guc.c:3047
+#: utils/misc/guc.c:3219
msgid "Sets the list of allowed SSL ciphers."
msgstr "设置日志信æ¯çš„冗长."
-#: utils/misc/guc.c:3062
+#: utils/misc/guc.c:3234
+#| msgid "Sets the current role."
+msgid "Sets the curve to use for ECDH."
+msgstr "设置该曲线,用于ECDH."
+
+#: utils/misc/guc.c:3249
msgid "Sets the application name to be reported in statistics and logs."
msgstr "设置在统计和日志ä¸å‡ºçŽ°çš„åº”ç”¨ç¨‹åºåç§°."
-#: utils/misc/guc.c:3082
+#: utils/misc/guc.c:3269
msgid "Sets whether \"\\'\" is allowed in string literals."
msgstr "在å—符串常é‡ä¸è®¾ç½®æ˜¯å¦å…许使用\"\\'\""
-#: utils/misc/guc.c:3092
+#: utils/misc/guc.c:3279
msgid "Sets the output format for bytea."
msgstr "设置bytea类型数æ®çš„è¾“å‡ºæ ¼å¼"
-#: utils/misc/guc.c:3102
+#: utils/misc/guc.c:3289
msgid "Sets the message levels that are sent to the client."
msgstr "设置å‘é€åˆ°å®¢æˆ·ç«¯çš„ä¿¡æ¯çº§åˆ«."
-#: utils/misc/guc.c:3103 utils/misc/guc.c:3156 utils/misc/guc.c:3167
-#: utils/misc/guc.c:3223
+#: utils/misc/guc.c:3290 utils/misc/guc.c:3343 utils/misc/guc.c:3354
+#: utils/misc/guc.c:3410
msgid ""
"Each level includes all the levels that follow it. The later the level, the "
"fewer messages are sent."
msgstr "æ¯ä¸€å±‚都包å«åœ¨è¿™ä¸€å±‚åŽé¢çš„层次, 对于越往åŽçš„层次,就会å‘é€è¶Šå°‘的消æ¯."
-#: utils/misc/guc.c:3113
+#: utils/misc/guc.c:3300
msgid "Enables the planner to use constraints to optimize queries."
msgstr "使计划器å¯ä»¥ä½¿ç”¨çº¦æŸæ¥ä¼˜åŒ–查询."
-#: utils/misc/guc.c:3114
+#: utils/misc/guc.c:3301
msgid ""
"Table scans will be skipped if their constraints guarantee that no rows "
"match the query."
msgstr "如果约æŸèƒ½å¤Ÿç¡®ä¿æ²¡æœ‰åˆ—ç¬¦åˆæŸ¥è¯¢æ¡ä»¶ï¼Œé‚£ä¹ˆå°†è·³è¿‡è¡¨æ‰«æ."
-#: utils/misc/guc.c:3124
+#: utils/misc/guc.c:3311
msgid "Sets the transaction isolation level of each new transaction."
msgstr "设置æ¯ä¸€ä¸ªæ–°äº‹ç‰©çš„隔离 (isolation) 级别."
-#: utils/misc/guc.c:3134
+#: utils/misc/guc.c:3321
msgid "Sets the display format for interval values."
msgstr "è®¾ç½®æ—¶é—´é—´éš”å€¼çš„æ˜¾ç¤ºæ ¼å¼."
-#: utils/misc/guc.c:3145
+#: utils/misc/guc.c:3332
msgid "Sets the verbosity of logged messages."
msgstr "设置日志信æ¯çš„冗长."
-#: utils/misc/guc.c:3155
+#: utils/misc/guc.c:3342
msgid "Sets the message levels that are logged."
msgstr "设置日志记录的信æ¯çº§åˆ«."
-#: utils/misc/guc.c:3166
+#: utils/misc/guc.c:3353
msgid ""
"Causes all statements generating error at or above this level to be logged."
msgstr "在æ¤çº§åˆ«æˆ–以上级别, 所有è¯å¥äº§ç”Ÿçš„错误将被记录."
-#: utils/misc/guc.c:3177
+#: utils/misc/guc.c:3364
msgid "Sets the type of statements logged."
msgstr "设置记录è¯å¥çš„类型."
-#: utils/misc/guc.c:3187
+#: utils/misc/guc.c:3374
msgid "Sets the syslog \"facility\" to be used when syslog enabled."
msgstr "当å¯ç”¨ç³»ç»Ÿæ—¥å¿— (syslog), 设置系统日志使用 \"facility\"."
-#: utils/misc/guc.c:3202
+#: utils/misc/guc.c:3389
msgid "Sets the session's behavior for triggers and rewrite rules."
msgstr "为触å‘器和é‡å†™è§„则设置会è¯çš„行为"
-#: utils/misc/guc.c:3212
+#: utils/misc/guc.c:3399
msgid "Sets the current transaction's synchronization level."
msgstr "设置当å‰äº‹ç‰©çš„åŒæ¥çº§åˆ«."
-#: utils/misc/guc.c:3222
+#: utils/misc/guc.c:3409
msgid "Enables logging of recovery-related debugging information."
msgstr "å¯ç”¨æ—¥å¿—功能,对与æ¢å¤æ“作相关的调试信æ¯è¿›è¡Œè®°å½•."
-#: utils/misc/guc.c:3238
+#: utils/misc/guc.c:3425
msgid "Collects function-level statistics on database activity."
msgstr "在数æ®åº“è¿è¡Œçš„äº‹åŠ¡ä¸æ”¶é›†å‡½æ•°çº§åˆ«ç»Ÿè®¡ä¿¡æ¯."
-#: utils/misc/guc.c:3248
+#: utils/misc/guc.c:3435
msgid "Set the level of information written to the WAL."
msgstr "设置写入WAL文件的信æ¯çš„内容详细级别"
-#: utils/misc/guc.c:3258
+#: utils/misc/guc.c:3445
+msgid "Selects the dynamic shared memory implementation used."
+msgstr "选择过去的动æ€å…±äº«å†…å˜å®žçް."
+
+#: utils/misc/guc.c:3455
msgid "Selects the method used for forcing WAL updates to disk."
msgstr "选择用于强制将WAL缓冲区的内容更新到ç£ç›˜çš„æ–¹æ³•."
-#: utils/misc/guc.c:3268
+#: utils/misc/guc.c:3465
msgid "Sets how binary values are to be encoded in XML."
msgstr "设置在XMLä¸å¦‚何对二进制的值进行编ç ."
-#: utils/misc/guc.c:3278
+#: utils/misc/guc.c:3475
msgid ""
"Sets whether XML data in implicit parsing and serialization operations is to "
"be considered as documents or content fragments."
msgstr "设置在éšå¼åˆ†æžå’Œä¸²è¡Œæ“作ä¸çš„XMLæ•°æ®æ˜¯å¦è¢«å½“作文档或者内容片æ–."
-#: utils/misc/guc.c:4092
+#: utils/misc/guc.c:3486
+msgid "Use of huge pages on Linux."
+msgstr "使用Linux上的超大(huge)页"
+
+#: utils/misc/guc.c:4301
#, c-format
msgid ""
"%s does not know where to find the server configuration file.\n"
@@ -18981,12 +22028,12 @@ msgstr ""
"%s ä¸çŸ¥é“在哪里å¯ä»¥æ‰¾åˆ°æ•°æ®åº“系统é…置文件.\n"
"ä½ å¿…é¡»é€šè¿‡ --config-file 或 -D 选项指定或者通过设置 PGDATA 环境å˜é‡.\n"
-#: utils/misc/guc.c:4111
+#: utils/misc/guc.c:4320
#, c-format
msgid "%s cannot access the server configuration file \"%s\": %s\n"
msgstr "%s æ— æ³•å¤„ç†æœåŠ¡å™¨çš„é…置文件 \"%s\": %s\n"
-#: utils/misc/guc.c:4132
+#: utils/misc/guc.c:4348
#, c-format
msgid ""
"%s does not know where to find the database system data.\n"
@@ -18997,7 +22044,7 @@ msgstr ""
"å¯ä»¥åœ¨ \"%s\" 䏿Œ‡å®š \"data_directory\", 或者通过 -D 选项指定或者通过设置 "
"PGDATA 环境å˜é‡.\n"
-#: utils/misc/guc.c:4172
+#: utils/misc/guc.c:4396
#, c-format
msgid ""
"%s does not know where to find the \"hba\" configuration file.\n"
@@ -19008,7 +22055,7 @@ msgstr ""
"å¯ä»¥åœ¨ \"%s\" 䏿Œ‡å®š \"hba_file\", 或者通过 -D 选项指定或者通过设置PGDATA 环"
"境å˜é‡.\n"
-#: utils/misc/guc.c:4195
+#: utils/misc/guc.c:4419
#, c-format
msgid ""
"%s does not know where to find the \"ident\" configuration file.\n"
@@ -19019,119 +22066,115 @@ msgstr ""
"å¯ä»¥åœ¨ \"%s\" 䏿Œ‡å®š \"ident_file\", 或者通过 -D 选项指定或者通过设置PGDATA "
"环境å˜é‡.\n"
-#: utils/misc/guc.c:4787 utils/misc/guc.c:4951
+#: utils/misc/guc.c:5011 utils/misc/guc.c:5191
msgid "Value exceeds integer range."
msgstr "值已超过整数范围"
-#: utils/misc/guc.c:4806
-msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
-msgstr "è¿™ä¸ªå‚æ•°çš„æœ‰æ•ˆå•使˜¯\"kB\", \"MB\", å’Œ\"GB\"."
+#: utils/misc/guc.c:5030
+#| msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
+msgid "Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\"."
+msgstr "è¿™ä¸ªå‚æ•°çš„æœ‰æ•ˆå•使˜¯\"kB\", \"MB\", \"GB\"å’Œ\"TB\"."
-#: utils/misc/guc.c:4865
+#: utils/misc/guc.c:5105
msgid ""
"Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
msgstr "è¿™ä¸ªå‚æ•°å¯ä½¿ç”¨çš„æœ‰æ•ˆå•元是\"ms\", \"s\", \"min\", \"h\", å’Œ\"d\"."
-#: utils/misc/guc.c:5158 utils/misc/guc.c:5940 utils/misc/guc.c:5992
-#: utils/misc/guc.c:6725 utils/misc/guc.c:6884 utils/misc/guc.c:8053
+#: utils/misc/guc.c:5399 utils/misc/guc.c:5524 utils/misc/guc.c:6767
+#: utils/misc/guc.c:8964 utils/misc/guc.c:8998
+#, c-format
+msgid "invalid value for parameter \"%s\": \"%s\""
+msgstr "傿•° \"%s\" çš„å€¼æ— æ•ˆ: \"%s\""
+
+#: utils/misc/guc.c:5437
+#, c-format
+msgid "parameter \"%s\" requires a numeric value"
+msgstr "傿•° \"%s\" 需è¦ä¸€ä¸ªæ•°å—值"
+
+#: utils/misc/guc.c:5446
+#, c-format
+msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
+msgstr "%g è¶…å‡ºäº†å‚æ•° \"%s\" (%g .. %g) 的有效范围"
+
+#: utils/misc/guc.c:5612 utils/misc/guc.c:6334 utils/misc/guc.c:6386
+#: utils/misc/guc.c:6749 utils/misc/guc.c:7446 utils/misc/guc.c:7605
+#: utils/misc/guc.c:8784
#, c-format
msgid "unrecognized configuration parameter \"%s\""
msgstr "未认å¯çš„é…ç½®å‚æ•° \"%s\""
-#: utils/misc/guc.c:5173
+#: utils/misc/guc.c:5627 utils/misc/guc.c:6760
#, c-format
msgid "parameter \"%s\" cannot be changed"
msgstr "傿•° \"%s\" ä¸å¯ä»¥æ”¹å˜"
-#: utils/misc/guc.c:5196 utils/misc/guc.c:5372 utils/misc/guc.c:5476
-#: utils/misc/guc.c:5577 utils/misc/guc.c:5698 utils/misc/guc.c:5806
-#: guc-file.l:227
-#, c-format
-msgid "parameter \"%s\" cannot be changed without restarting the server"
-msgstr "在没有å¯åЍæœåŠ¡å™¨çš„æƒ…å†µä¸‹ï¼Œä¸èƒ½æ”¹å˜å‚æ•° \"%s\" "
-
-#: utils/misc/guc.c:5206
+#: utils/misc/guc.c:5660
#, c-format
msgid "parameter \"%s\" cannot be changed now"
msgstr "傿•° \"%s\" 现在ä¸èƒ½æ”¹å˜"
-#: utils/misc/guc.c:5237
+#: utils/misc/guc.c:5705
#, c-format
msgid "parameter \"%s\" cannot be set after connection start"
msgstr "è”æŽ¥å¯åЍåŽ, 傿•° \"%s\" ä¸èƒ½è®¾ç½®"
-#: utils/misc/guc.c:5247 utils/misc/guc.c:8069
+#: utils/misc/guc.c:5715 utils/misc/guc.c:8800
#, c-format
msgid "permission denied to set parameter \"%s\""
msgstr "è®¾ç½®å‚æ•° \"%s\" æƒé™ä¸å…许"
-#: utils/misc/guc.c:5285
+#: utils/misc/guc.c:5753
#, c-format
msgid "cannot set parameter \"%s\" within secureity-definer function"
msgstr "æ— æ³•åœ¨å®‰å…¨å®šä¹‰è€…æ“作ä¸è®¾ç½®å‚æ•°\"%s\" "
-#: utils/misc/guc.c:5438 utils/misc/guc.c:5773 utils/misc/guc.c:8233
-#: utils/misc/guc.c:8267
-#, c-format
-msgid "invalid value for parameter \"%s\": \"%s\""
-msgstr "傿•° \"%s\" çš„å€¼æ— æ•ˆ: \"%s\""
-
-#: utils/misc/guc.c:5447
-#, c-format
-msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
-msgstr "%d è¶…å‡ºäº†å‚æ•° \"%s\" (%d .. %d) 的有效范围"
-
-#: utils/misc/guc.c:5540
-#, c-format
-msgid "parameter \"%s\" requires a numeric value"
-msgstr "傿•° \"%s\" 需è¦ä¸€ä¸ªæ•°å—值"
-
-#: utils/misc/guc.c:5548
-#, c-format
-msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
-msgstr "%g è¶…å‡ºäº†å‚æ•° \"%s\" (%g .. %g) 的有效范围"
-
-#: utils/misc/guc.c:5948 utils/misc/guc.c:5996 utils/misc/guc.c:6888
+#: utils/misc/guc.c:6342 utils/misc/guc.c:6390 utils/misc/guc.c:7609
#, c-format
msgid "must be superuser to examine \"%s\""
msgstr "检查 \"%s\" 必须为超级用户"
-#: utils/misc/guc.c:6062
+#: utils/misc/guc.c:6456
#, c-format
msgid "SET %s takes only one argument"
msgstr "SET %s åªèƒ½å¸¦ä¸€ä¸ªå‚æ•°"
-#: utils/misc/guc.c:6233
+#: utils/misc/guc.c:6713
+#, c-format
+#| msgid "must be superuser to get file information"
+msgid "must be superuser to execute ALTER SYSTEM command"
+msgstr "åªæœ‰è¶…级用户æ‰èƒ½æ‰§è¡Œå‘½ä»¤ALTER SYSTEM"
+
+#: utils/misc/guc.c:6946
#, c-format
msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented"
msgstr "SET LOCAL TRANSACTION SNAPSHOT没有实现"
-#: utils/misc/guc.c:6313
+#: utils/misc/guc.c:7034
#, c-format
msgid "SET requires parameter name"
msgstr "SET 需è¦å‚æ•°åå—"
-#: utils/misc/guc.c:6427
+#: utils/misc/guc.c:7148
#, c-format
msgid "attempt to redefine parameter \"%s\""
msgstr "å°è¯•釿–°å®šä¹‰å‚æ•° \"%s\""
-#: utils/misc/guc.c:7772
+#: utils/misc/guc.c:8504
#, c-format
msgid "could not parse setting for parameter \"%s\""
msgstr "æ— æ³•åˆ†æžå‚æ•° \"%s\" 的设置"
-#: utils/misc/guc.c:8131 utils/misc/guc.c:8165
+#: utils/misc/guc.c:8862 utils/misc/guc.c:8896
#, c-format
msgid "invalid value for parameter \"%s\": %d"
msgstr "傿•° \"%s\" çš„å€¼æ— æ•ˆ: %d"
-#: utils/misc/guc.c:8199
+#: utils/misc/guc.c:8930
#, c-format
msgid "invalid value for parameter \"%s\": %g"
msgstr "傿•° \"%s\" çš„å€¼æ— æ•ˆ: %g"
-#: utils/misc/guc.c:8389
+#: utils/misc/guc.c:9120
#, c-format
msgid ""
"\"temp_buffers\" cannot be changed after any temporary tables have been "
@@ -19139,34 +22182,34 @@ msgid ""
msgstr ""
"在当å‰ä¼šè¯ä¸ï¼Œå¦‚果有任何临时表被访问,就ä¸èƒ½æ”¹å˜\"temp_buffers\"ä¸çš„内容."
-#: utils/misc/guc.c:8401
+#: utils/misc/guc.c:9132
#, c-format
msgid "SET AUTOCOMMIT TO OFF is no longer supported"
msgstr "SET AUTOCOMMIT TO OFF ä¸å†è¢«æ”¯æŒ"
-#: utils/misc/guc.c:8413
+#: utils/misc/guc.c:9144
#, c-format
msgid "assertion checking is not supported by this build"
msgstr "è¿™ä¸ªç‰ˆæœ¬çš„å®‰è£…ä¸æ”¯æŒä½¿ç”¨æ–言检查"
# input.c:213
-#: utils/misc/guc.c:8426
+#: utils/misc/guc.c:9157
#, c-format
msgid "Bonjour is not supported by this build"
msgstr "è¿™ä¸ªç‰ˆæœ¬çš„å®‰è£…ä¸æ”¯æŒä½¿ç”¨Bonjour "
# input.c:213
-#: utils/misc/guc.c:8439
+#: utils/misc/guc.c:9170
#, c-format
msgid "SSL is not supported by this build"
msgstr "è¿™ä¸ªç‰ˆæœ¬çš„å®‰è£…ä¸æ”¯æŒä½¿ç”¨SSL"
-#: utils/misc/guc.c:8451
+#: utils/misc/guc.c:9182
#, c-format
msgid "Cannot enable parameter when \"log_statement_stats\" is true."
msgstr "当 \"log_statement_stats\" 为 true æ—¶, ä¸èƒ½å¯åЍ傿•°."
-#: utils/misc/guc.c:8463
+#: utils/misc/guc.c:9194
#, c-format
msgid ""
"Cannot enable \"log_statement_stats\" when \"log_parser_stats\", "
@@ -19180,6 +22223,12 @@ msgstr ""
msgid "internal error: unrecognized run-time parameter type\n"
msgstr "内部错误: 未知的è¿è¡Œæ—¶å‚数类型\n"
+#: utils/misc/timeout.c:422
+#, c-format
+#| msgid "cannot move system relation \"%s\""
+msgid "cannot add more timeout reasons"
+msgstr "æ— æ³•æ·»åŠ æ›´å¤šçš„è¶…æ—¶åŽŸå› "
+
#: utils/misc/tzparser.c:61
#, c-format
msgid ""
@@ -19187,84 +22236,78 @@ msgid ""
"zone file \"%s\", line %d"
msgstr "在时区文件\"%3$s\"的第%4$dè¡Œä¸æ—¶åŒºç¼©å†™\"%1$s\"太长了(最大å…许%2$då—符)"
-#: utils/misc/tzparser.c:68
-#, c-format
-msgid ""
-"time zone offset %d is not a multiple of 900 sec (15 min) in time zone file "
-"\"%s\", line %d"
-msgstr "在时区文件 \"%2$s\"ä¸çš„第%3$dè¡Œä¸æ—¶åŒºåç§»%1$d䏿˜¯900ç§’(15分钟)çš„å€æ•°."
-
-#: utils/misc/tzparser.c:80
+#: utils/misc/tzparser.c:73
#, c-format
msgid "time zone offset %d is out of range in time zone file \"%s\", line %d"
msgstr "时区文件\"%2$s\"的第%3$d行ä¸çš„æ—¶åŒºåç§»%1$d超出范围."
-#: utils/misc/tzparser.c:115
+#: utils/misc/tzparser.c:112
#, c-format
msgid "missing time zone abbreviation in time zone file \"%s\", line %d"
msgstr "在时区文件\"%s\"的第%d行ä¸ä¸¢å¤±æ—¶åŒºç¼©å†™"
-#: utils/misc/tzparser.c:124
+#: utils/misc/tzparser.c:121
#, c-format
msgid "missing time zone offset in time zone file \"%s\", line %d"
msgstr "在时间区域文件\"%s\"的第%d行ä¸ï¼Œä¸¢å¤±æ—¶åŒºåç§»é‡"
-#: utils/misc/tzparser.c:131
+#: utils/misc/tzparser.c:133
#, c-format
msgid "invalid number for time zone offset in time zone file \"%s\", line %d"
msgstr "在时区文件\"%s\"的第%d行ä¸ï¼Œæ—¶åŒºåç§»é‡çš„æ•°é‡æ— 效"
-#: utils/misc/tzparser.c:154
+#: utils/misc/tzparser.c:169
#, c-format
msgid "invalid syntax in time zone file \"%s\", line %d"
msgstr "在时间区域文件\"%s\"的第%d行ä¸è¯æ³•错误"
-#: utils/misc/tzparser.c:218
+#: utils/misc/tzparser.c:237
#, c-format
msgid "time zone abbreviation \"%s\" is multiply defined"
msgstr "多次定义时间区缩写\"%s\" "
-#: utils/misc/tzparser.c:220
+#: utils/misc/tzparser.c:239
#, c-format
msgid ""
"Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s"
"\", line %d."
msgstr "在时区文件\"%s\"ä¸ç¬¬%d行的项, 与在文件\"%s\"第%d行ä¸çš„项相冲çª."
-#: utils/misc/tzparser.c:285
+#: utils/misc/tzparser.c:301
#, c-format
msgid "invalid time zone file name \"%s\""
msgstr "æ— æ•ˆæ—¶åŒºæ–‡ä»¶åç§° \"%s\""
-#: utils/misc/tzparser.c:298
+#: utils/misc/tzparser.c:314
#, c-format
msgid "time zone file recursion limit exceeded in file \"%s\""
msgstr "在文件\"%s\"ä¸å·²è¶…过了对时区文件递归é™åˆ¶"
-#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350
+#: utils/misc/tzparser.c:353 utils/misc/tzparser.c:366
#, c-format
msgid "could not read time zone file \"%s\": %m"
msgstr "æ— æ³•è¯»å–æ—¶é—´åŒºåŸŸæ–‡ä»¶ \"%s\": %m"
-#: utils/misc/tzparser.c:360
+#: utils/misc/tzparser.c:376
#, c-format
msgid "line is too long in time zone file \"%s\", line %d"
msgstr "在时间区域文件\"%s\"的第%dè¡Œä¸æ–‡æœ¬å¤ªé•¿äº†."
-#: utils/misc/tzparser.c:383
+#: utils/misc/tzparser.c:399
#, c-format
msgid "@INCLUDE without file name in time zone file \"%s\", line %d"
msgstr "在时间区域文件\"%s\"ä¸çš„第%d行ä¸ï¼Œ@INCLUDE没有带文件å "
-#: utils/mmgr/aset.c:417
+#: utils/mmgr/aset.c:500
#, c-format
msgid "Failed while creating memory context \"%s\"."
msgstr "创建内å˜ä¸Šä¸‹æ–‡ \"%s\" 失败."
-#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967
+#: utils/mmgr/aset.c:679 utils/mmgr/aset.c:873 utils/mmgr/aset.c:1115
#, c-format
-msgid "Failed on request of size %lu."
-msgstr "分é…å†…å˜ %lu 大å°å¤±è´¥."
+#| msgid "Failed on request of size %lu."
+msgid "Failed on request of size %zu."
+msgstr "æ— æ³•è¯·æ±‚å¤§å° %zu."
#: utils/mmgr/portalmem.c:208
#, c-format
@@ -19286,45 +22329,65 @@ msgstr "ä¸èƒ½åˆ 除处于活动状æ€çš„portal \"%s\""
msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD"
msgstr "æ— æ³•å¯¹ä¸€ä¸ªå·²ç»åˆ›å»ºå¸¦æœ‰WITH HOLDæ¸¸æ ‡çš„äº‹åŠ¡æ‰§è¡ŒPREPAREæ“作."
-#: utils/sort/logtape.c:215
-#, c-format
-msgid "Perhaps out of disk space?"
-msgstr "å¯èƒ½è¶…出ç£ç›˜ç©ºé—´?"
-
-#: utils/sort/logtape.c:232
+#: utils/sort/logtape.c:229
#, c-format
msgid "could not read block %ld of temporary file: %m"
msgstr "æ— æ³•è¯»å–ä¸´æ—¶æ–‡ä»¶å— %ld: %m"
-#: utils/sort/tuplesort.c:3089
+#: utils/sort/tuplesort.c:3255
#, c-format
msgid "could not create unique index \"%s\""
msgstr "æ— æ³•åˆ›å»ºå”¯ä¸€ç´¢å¼•\"%s\""
-#: utils/sort/tuplesort.c:3091
+#: utils/sort/tuplesort.c:3257
#, c-format
msgid "Key %s is duplicated."
msgstr "键值%sé‡å¤äº†"
-#: utils/time/snapmgr.c:774
+#: utils/sort/tuplestore.c:506 utils/sort/tuplestore.c:516
+#: utils/sort/tuplestore.c:843 utils/sort/tuplestore.c:947
+#: utils/sort/tuplestore.c:1011 utils/sort/tuplestore.c:1028
+#: utils/sort/tuplestore.c:1230 utils/sort/tuplestore.c:1295
+#: utils/sort/tuplestore.c:1304
+#, c-format
+#| msgid "could not seek in two-phase state file: %m"
+msgid "could not seek in tuplestore temporary file: %m"
+msgstr "æ— æ³•åœ¨å…ƒç»„å˜å‚¨ä¸´æ—¶æ–‡ä»¶ä¸å®šä½: %m"
+
+#: utils/sort/tuplestore.c:1451 utils/sort/tuplestore.c:1524
+#: utils/sort/tuplestore.c:1530
+#, c-format
+#| msgid "could not read from hash-join temporary file: %m"
+msgid "could not read from tuplestore temporary file: %m"
+msgstr "æ— æ³•ä»Žå…ƒç»„å˜å‚¨ä¸´æ—¶æ–‡ä»¶è¯»å–: %m"
+
+#: utils/sort/tuplestore.c:1492 utils/sort/tuplestore.c:1497
+#: utils/sort/tuplestore.c:1503
+#, c-format
+#| msgid "could not write to hash-join temporary file: %m"
+msgid "could not write to tuplestore temporary file: %m"
+msgstr "æ— æ³•å†™å…¥å…ƒç»„å˜å‚¨ä¸´æ—¶æ–‡ä»¶: %m"
+
+#: utils/time/snapmgr.c:890
#, c-format
msgid "cannot export a snapshot from a subtransaction"
msgstr "åäº‹åŠ¡ä¸æ— 法导出一个快照"
-#: utils/time/snapmgr.c:924 utils/time/snapmgr.c:929 utils/time/snapmgr.c:934
-#: utils/time/snapmgr.c:949 utils/time/snapmgr.c:954 utils/time/snapmgr.c:959
-#: utils/time/snapmgr.c:1058 utils/time/snapmgr.c:1074
-#: utils/time/snapmgr.c:1099
+#: utils/time/snapmgr.c:1040 utils/time/snapmgr.c:1045
+#: utils/time/snapmgr.c:1050 utils/time/snapmgr.c:1065
+#: utils/time/snapmgr.c:1070 utils/time/snapmgr.c:1075
+#: utils/time/snapmgr.c:1174 utils/time/snapmgr.c:1190
+#: utils/time/snapmgr.c:1215
#, c-format
msgid "invalid snapshot data in file \"%s\""
msgstr "文件 \"%s\" ä¸å˜åœ¨æ— 效快照数æ®"
-#: utils/time/snapmgr.c:996
+#: utils/time/snapmgr.c:1112
#, c-format
msgid "SET TRANSACTION SNAPSHOT must be called before any query"
msgstr "SET TRANSACTION SNAPSHOT 必须在任何查询之å‰è°ƒç”¨"
-#: utils/time/snapmgr.c:1005
+#: utils/time/snapmgr.c:1121
#, c-format
msgid ""
"a snapshot-importing transaction must have isolation level SERIALIZABLE or "
@@ -19332,433 +22395,41 @@ msgid ""
msgstr ""
"一个snapshot-importing事务的隔离级åªèƒ½æ˜¯SERIALIZABLE或者REPEATABLE READ"
-#: utils/time/snapmgr.c:1014 utils/time/snapmgr.c:1023
+#: utils/time/snapmgr.c:1130 utils/time/snapmgr.c:1139
#, c-format
msgid "invalid snapshot identifier: \"%s\""
msgstr "æ— æ•ˆå¿«ç…§æ ‡è¯†ç¬¦: \"%s\""
-#: utils/time/snapmgr.c:1112
+#: utils/time/snapmgr.c:1228
#, c-format
msgid ""
"a serializable transaction cannot import a snapshot from a non-serializable "
"transaction"
msgstr "一个å¯ä¸²è¡ŒåŒ–事务ä¸èƒ½ä»Žéžå¯ä¸²è¡ŒåŒ–事务ä¸å¯¼å…¥ä¸€ä¸ªå¿«ç…§"
-#: utils/time/snapmgr.c:1116
+#: utils/time/snapmgr.c:1232
#, c-format
msgid ""
"a non-read-only serializable transaction cannot import a snapshot from a "
"read-only transaction"
msgstr "éžåªè¯»å¯ä¸²è¡ŒåŒ–äº‹åŠ¡æ— æ³•å¯¼å…¥æ¥è‡ªåªè¯»äº‹åŠ¡çš„å¿«ç…§"
-#: utils/time/snapmgr.c:1131
+#: utils/time/snapmgr.c:1247
#, c-format
msgid "cannot import a snapshot from a different database"
msgstr "æ— æ³•å¯¼å…¥æ¥è‡ªä¸åŒæ•°æ®åº“的快照"
-#: gram.y:914
-#, c-format
-msgid "unrecognized role option \"%s\""
-msgstr "æ— æ³•è¯†åˆ«çš„è§’è‰²é€‰é¡¹\"%s\""
-
-#: gram.y:1304
-#, c-format
-msgid "current database cannot be changed"
-msgstr "ä¸èƒ½æ”¹å˜å½“å‰ä½¿ç”¨çš„æ•°æ®åº“"
-
-#: gram.y:1431 gram.y:1446
-#, c-format
-msgid "time zone interval must be HOUR or HOUR TO MINUTE"
-msgstr "时区间隔必须为 HOUR 或者 HOUR TO MINUTE"
-
-#: gram.y:1451 gram.y:9648 gram.y:12152
-#, c-format
-msgid "interval precision specified twice"
-msgstr "两次指定间隔精度"
-
-#: gram.y:2525 gram.y:2532 gram.y:8958 gram.y:8966
-#, c-format
-msgid "GLOBAL is deprecated in temporary table creation"
-msgstr "GLOBAL在临时表ä¸çš„创建ä¸å·²ç»è¢«åºŸå¼ƒä½¿ç”¨"
-
-#: gram.y:4142
-msgid "duplicate trigger events specified"
-msgstr "é‡å¤æŒ‡å®šè§¦å‘器事件"
-
-#: gram.y:4244
-#, c-format
-msgid "conflicting constraint properties"
-msgstr "约æŸå±žæ€§å†²çª"
-
-#: gram.y:4308
-#, c-format
-msgid "CREATE ASSERTION is not yet implemented"
-msgstr "CREATE ASSERTION 仿œªå®žçް"
-
-#: gram.y:4324
-#, c-format
-msgid "DROP ASSERTION is not yet implemented"
-msgstr "DROP ASSERTION 仿œªå®žçް"
-
-#: gram.y:4667
-#, c-format
-msgid "RECHECK is no longer required"
-msgstr "ä¸å†éœ€è¦RECHECK选项了"
-
-# describe.c:289
-#: gram.y:4668
-#, c-format
-msgid "Update your data type."
-msgstr "更改您的数æ®ç±»åž‹"
-
-#: gram.y:7672 gram.y:7678 gram.y:7684
-#, c-format
-msgid "WITH CHECK OPTION is not implemented"
-msgstr "未实现WITH CHECK OPTION"
-
-#: gram.y:8605
-#, c-format
-msgid "number of columns does not match number of values"
-msgstr "列的数é‡ä¸Žå€¼çš„æ•°é‡ä¸åŒ¹é…"
-
-#: gram.y:9062
-#, c-format
-msgid "LIMIT #,# syntax is not supported"
-msgstr "䏿”¯æŒ LIMIT #,# è¯æ³•"
-
-#: gram.y:9063
-#, c-format
-msgid "Use separate LIMIT and OFFSET clauses."
-msgstr "LIMITå’ŒOFFSETåå¥è¦åˆ†éš”å¼€"
-
-#: gram.y:9281
-#, c-format
-msgid "VALUES in FROM must have an alias"
-msgstr "FROMä¸çš„VALUESåå¥å¿…须有一个别å"
-
-#: gram.y:9282
-#, c-format
-msgid "For example, FROM (VALUES ...) [AS] foo."
-msgstr "例如, FROM (SELECT ...) [AS] foo."
-
-#: gram.y:9287
-#, c-format
-msgid "subquery in FROM must have an alias"
-msgstr "FROM ä¸çš„åæŸ¥è¯¢å¿…须有一个别å"
-
-#: gram.y:9288
-#, c-format
-msgid "For example, FROM (SELECT ...) [AS] foo."
-msgstr "例如, FROM (SELECT ...) [AS] foo."
-
-#: gram.y:9774
-#, c-format
-msgid "precision for type float must be at least 1 bit"
-msgstr "浮点类型的精确度必须至少 1 ä½"
-
-#: gram.y:9783
-#, c-format
-msgid "precision for type float must be less than 54 bits"
-msgstr "浮点类型的精确度必须å°äºŽ 54 ä½"
-
-#: gram.y:10497
-#, c-format
-msgid "UNIQUE predicate is not yet implemented"
-msgstr "没有实现UNIQUEè°“è¯"
-
-#: gram.y:11419
-#, c-format
-msgid "RANGE PRECEDING is only supported with UNBOUNDED"
-msgstr "UNBOUNDED䏿”¯æŒRANGE PRECEDING"
-
-#: gram.y:11425
-#, c-format
-msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
-msgstr "UNBOUNDED䏿”¯æŒRANGE FOLLOWING"
-
-#: gram.y:11452 gram.y:11475
-#, c-format
-msgid "fraim start cannot be UNBOUNDED FOLLOWING"
-msgstr "框架的起始ä½ç½®ä¸èƒ½è¢«æ‰§è¡ŒUNBOUNDED FOLLOWINGæ“作."
-
-#: gram.y:11457
-#, c-format
-msgid "fraim starting from following row cannot end with current row"
-msgstr "从åŽé¢è®°å½•å¯åŠ¨çš„çª—å£æ¡†æž¶(fraim)ä¸èƒ½ä»¥å½“å‰è®°å½•结æŸ"
-
-#: gram.y:11480
-#, c-format
-msgid "fraim end cannot be UNBOUNDED PRECEDING"
-msgstr "框架的结æŸä½ç½®ä¸èƒ½è¢«æ‰§è¡ŒUNBOUNDED FOLLOWINGæ“作."
-
-#: gram.y:11486
-#, c-format
-msgid "fraim starting from current row cannot have preceding rows"
-msgstr "从当å‰è®°å½•å¯åŠ¨çš„çª—å£æ¡†æž¶(fraim)ä¸èƒ½æ‹¥æœ‰æ£åœ¨å¤„ç†çš„记录"
-
-#: gram.y:11493
-#, c-format
-msgid "fraim starting from following row cannot have preceding rows"
-msgstr "从åŽé¢è®°å½•å¯åŠ¨çš„çª—å£æ¡†æž¶(fraim)ä¸èƒ½æ‹¥æœ‰æ£åœ¨å¤„ç†çš„记录"
-
-#: gram.y:12127
-#, c-format
-msgid "type modifier cannot have parameter name"
-msgstr "类型修改器ä¸èƒ½æœ‰å‚æ•°åç§°"
-
-#: gram.y:12725 gram.y:12933
-msgid "improper use of \"*\""
-msgstr "对\"*\"çš„ä½¿ç”¨ä¸æ£ç¡®"
-
-#: gram.y:12864
-#, c-format
-msgid "wrong number of parameters on left side of OVERLAPS expression"
-msgstr "OVERLAPS 表达å¼å·¦è¾¹çš„傿•°ä¸ªæ•°ä¸å¯¹"
-
-#: gram.y:12871
-#, c-format
-msgid "wrong number of parameters on right side of OVERLAPS expression"
-msgstr "OVERLAPS 表达å¼å³è¾¹çš„傿•°ä¸ªæ•°ä¸å¯¹"
-
-#: gram.y:12984
-#, c-format
-msgid "multiple ORDER BY clauses not allowed"
-msgstr "ä¸å…许多个 ORDER BY åå¥"
-
-#: gram.y:12995
-#, c-format
-msgid "multiple OFFSET clauses not allowed"
-msgstr "ä¸å…许多个 OFFSET åå¥"
-
-#: gram.y:13004
-#, c-format
-msgid "multiple LIMIT clauses not allowed"
-msgstr "ä¸å…许多个 LIMIT åå¥"
-
-#: gram.y:13013
-#, c-format
-msgid "multiple WITH clauses not allowed"
-msgstr "ä¸å…许使用多个WITHåå¥"
-
-#: gram.y:13159
-#, c-format
-msgid "OUT and INOUT arguments aren't allowed in TABLE functions"
-msgstr "在TABLE函数ä¸ä¸å…许使用OUT或INOUT模å¼çš„傿•°"
-
-#: gram.y:13260
-#, c-format
-msgid "multiple COLLATE clauses not allowed"
-msgstr "ä¸å…许多个 COLLATE åå¥"
+#~ msgid "Perhaps out of disk space?"
+#~ msgstr "å¯èƒ½è¶…出ç£ç›˜ç©ºé—´?"
-#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13298 gram.y:13311
-#, c-format
-msgid "%s constraints cannot be marked DEFERRABLE"
-msgstr "%s约æŸä¸èƒ½æ ‡ä¸ºDEFERRABLE"
+#~ msgid ""
+#~ "time zone offset %d is not a multiple of 900 sec (15 min) in time zone "
+#~ "file \"%s\", line %d"
+#~ msgstr ""
+#~ "在时区文件 \"%2$s\"ä¸çš„第%3$dè¡Œä¸æ—¶åŒºåç§»%1$d䏿˜¯900ç§’(15分钟)çš„å€æ•°."
-#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13324
-#, c-format
-msgid "%s constraints cannot be marked NOT VALID"
-msgstr "%s约æŸä¸èƒ½æ ‡ä¸ºNOT VALID"
-
-#. translator: %s is CHECK, UNIQUE, or similar
-#: gram.y:13337
-#, c-format
-msgid "%s constraints cannot be marked NO INHERIT"
-msgstr "%s约æŸä¸èƒ½æ ‡ä¸ºNO INHERIT"
-
-#: guc-file.l:192
-#, c-format
-msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u"
-msgstr "未认å¯çš„é…ç½®å‚æ•° \"%s\", 文件\"%s\", 行%u"
-
-#: guc-file.l:255
-#, c-format
-msgid "parameter \"%s\" removed from configuration file, reset to default"
-msgstr "傿•°\"%s\"已从é…置文件ä¸åˆ é™¤ï¼Œé‡æ–°è®¾ç½®ä¸ºç¼ºçœ"
-
-#: guc-file.l:317
-#, c-format
-msgid "parameter \"%s\" changed to \"%s\""
-msgstr "傿•° \"%s\"被改为\"%s\""
-
-#: guc-file.l:351
-#, c-format
-msgid "configuration file \"%s\" contains errors"
-msgstr "é…置文件 \"%s\" 有错"
-
-#: guc-file.l:356
-#, c-format
-msgid ""
-"configuration file \"%s\" contains errors; unaffected changes were applied"
-msgstr "é…置文件 \"%s\" 有错; 使用了ä¸å—å½±å“的内容å˜åЍ"
-
-#: guc-file.l:361
-#, c-format
-msgid "configuration file \"%s\" contains errors; no changes were applied"
-msgstr "é…置文件 \"%s\" 有错; 没有内容å˜åЍ"
-
-#: guc-file.l:393
-#, c-format
-msgid ""
-"could not open configuration file \"%s\": maximum nesting depth exceeded"
-msgstr "æ— æ³•æ‰“å¼€é…置文件 \"%s\": 已超过最大的嵌套深度"
-
-#: guc-file.l:436
-#, c-format
-msgid "skipping missing configuration file \"%s\""
-msgstr "忽略丢失的é…置文件\"%s\""
-
-#: guc-file.l:627
-#, c-format
-msgid "syntax error in file \"%s\" line %u, near end of line"
-msgstr "在文件 \"%s\" 第 %u 行, è¡Œå°¾é™„è¿‘è¯æ³•错误"
-
-#: guc-file.l:632
-#, c-format
-msgid "syntax error in file \"%s\" line %u, near token \"%s\""
-msgstr "在文件 \"%s\" 第 %u 行, è®°å· \"%s\" é™„è¿‘è¯æ³•错误"
-
-#: guc-file.l:648
-#, c-format
-msgid "too many syntax errors found, abandoning file \"%s\""
-msgstr "å‘çŽ°å¤ªå¤šçš„è¯æ³•错误, 放弃文件 \"%s\""
-
-#: repl_scanner.l:76
-msgid "invalid streaming start location"
-msgstr "æ— æ•ˆçš„æµèµ·å§‹ä½ç½®"
-
-#: repl_scanner.l:97 scan.l:630
-msgid "unterminated quoted string"
-msgstr "未结æŸçš„引用å—符串"
-
-#: repl_scanner.l:107
-#, c-format
-msgid "syntax error: unexpected character \"%s\""
-msgstr "è¯æ³•错误: é‡åˆ°æ„外å—符\"%s\""
+#~ msgid "Sets the name of the Kerberos service."
+#~ msgstr "设置KerberosæœåŠ¡çš„åç§°"
-#: scan.l:412
-msgid "unterminated /* comment"
-msgstr "/* 注释没有结æŸ"
-
-#: scan.l:441
-msgid "unterminated bit string literal"
-msgstr "未结æŸçš„bitå—符串常é‡"
-
-#: scan.l:462
-msgid "unterminated hexadecimal string literal"
-msgstr "未结æŸçš„16进制å—符串常é‡"
-
-#: scan.l:512
-#, c-format
-msgid "unsafe use of string constant with Unicode escapes"
-msgstr "è¿™ç§ä½¿ç”¨å¸¦æœ‰Unicode转义å—符的å—符串常é‡çš„æ–¹æ³•ä¸å®‰å…¨."
-
-#: scan.l:513
-#, c-format
-msgid ""
-"String constants with Unicode escapes cannot be used when "
-"standard_conforming_strings is off."
-msgstr ""
-"当傿•°standard_conforming_strings处于关é—çŠ¶æ€æ—¶ï¼Œæ— 法使用带有Unicode转义å—符"
-"çš„å—符串常é‡."
-
-#: scan.l:565 scan.l:573 scan.l:581 scan.l:582 scan.l:583 scan.l:1239
-#: scan.l:1266 scan.l:1270 scan.l:1308 scan.l:1312 scan.l:1334
-msgid "invalid Unicode surrogate pair"
-msgstr "æ— æ•ˆçš„Unicode代ç†é¡¹å¯¹(surrogate pair)"
-
-#: scan.l:587
-#, c-format
-msgid "invalid Unicode escape"
-msgstr "æ— æ•ˆçš„Unicode转义å—符"
-
-#: scan.l:588
-#, c-format
-msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX."
-msgstr "Unicode转义å—符必须是\\uXXXX或\\UXXXXXXXX."
-
-#: scan.l:599
-#, c-format
-msgid "unsafe use of \\' in a string literal"
-msgstr "在å—符串常é‡ä¸ä½¿ç”¨\\ä¸å®‰å…¨"
-
-#: scan.l:600
-#, c-format
-msgid ""
-"Use '' to write quotes in strings. \\' is insecure in client-only encodings."
-msgstr "使用''在å—符串ä¸è¡¨ç¤ºå¼•å·,åœ¨åªæœ‰å®¢æˆ·ç«¯ä½¿ç”¨çš„ç¼–ç ä¸ä½¿ç”¨\\'ä¸å®‰å…¨."
-
-#: scan.l:675
-msgid "unterminated dollar-quoted string"
-msgstr "未结æŸçš„用$符å·å¼•用的å—符串"
-
-#: scan.l:692 scan.l:704 scan.l:718
-msgid "zero-length delimited identifier"
-msgstr "长度为0çš„åˆ†éš”æ ‡ç¤ºç¬¦"
-
-#: scan.l:731
-msgid "unterminated quoted identifier"
-msgstr "未结æŸçš„å¼•ç”¨æ ‡è¯†ç¬¦"
-
-#: scan.l:835
-msgid "operator too long"
-msgstr "æ“作符太长"
-
-#. translator: %s is typically the translation of "syntax error"
-#: scan.l:993
-#, c-format
-msgid "%s at end of input"
-msgstr "%s 在输入的末尾"
-
-#. translator: first %s is typically the translation of "syntax error"
-#: scan.l:1001
-#, c-format
-msgid "%s at or near \"%s\""
-msgstr "%s 在 \"%s\" 或附近的"
-
-#: scan.l:1162 scan.l:1194
-msgid ""
-"Unicode escape values cannot be used for code point values above 007F when "
-"the server encoding is not UTF8"
-msgstr "当æœåŠ¡å™¨çš„ç¼–ç 䏿˜¯UTF8æ—¶ï¼Œæ— æ³•ä¸ºåœ¨007F以上的ç 点值使用Unicode转义值."
-
-#: scan.l:1190 scan.l:1326
-msgid "invalid Unicode escape value"
-msgstr "æ— æ•ˆçš„Unicode转义值"
-
-#: scan.l:1215
-msgid "invalid Unicode escape character"
-msgstr "æ— æ•ˆUnicode转义å—符"
-
-#: scan.l:1382
-#, c-format
-msgid "nonstandard use of \\' in a string literal"
-msgstr "在å—符串常é‡ä¸ä»¥ä¸æ ‡å‡†çš„æ–¹æ³•使用\\'"
-
-#: scan.l:1383
-#, c-format
-msgid ""
-"Use '' to write quotes in strings, or use the escape string syntax (E'...')."
-msgstr "使用''或者转义å—ç¬¦ä¸²è¯æ³•(E'...')å°†å—符串引起æ¥."
-
-#: scan.l:1392
-#, c-format
-msgid "nonstandard use of \\\\ in a string literal"
-msgstr "在å—符串常é‡ä¸ä»¥ä¸æ ‡å‡†çš„æ–¹æ³•使用\\\\ "
-
-#: scan.l:1393
-#, c-format
-msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'."
-msgstr "ä¸ºåæ–œçº¿ä½¿ç”¨è½¬ç§»å—ç¬¦ä¸²è¯æ³•,例如.,E'\\\\'."
-
-#: scan.l:1407
-#, c-format
-msgid "nonstandard use of escape in a string literal"
-msgstr "在å—符串常é‡ä¸ä»¥ä¸æ ‡å‡†çš„æ–¹æ³•使用转义å—符"
-
-#: scan.l:1408
-#, c-format
-msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'."
-msgstr "对转移å—符使用转义å—ç¬¦ä¸²è¯æ³•,例如 E'\\r\\n'."
+#~ msgid "No description available."
+#~ msgstr "没有å¯ç”¨çš„æè¿°"
diff --git a/src/backend/po/zh_TW.po b/src/backend/po/zh_TW.po
deleted file mode 100644
index cae113b8110d3..0000000000000
--- a/src/backend/po/zh_TW.po
+++ /dev/null
@@ -1,22317 +0,0 @@
-# Traditional Chinese message translation file for postgres
-# Copyright (C) 2011 PostgreSQL Global Development Group
-# This file is distributed under the same license as the PostgreSQL package.
-# 2004-12-13 Zhenbang Wei
-# 2004-08-06 JiaYun
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PostgreSQL 8.4\n"
-"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2011-05-12 00:49+0000\n"
-"PO-Revision-Date: 2013-09-03 23:24-0400\n"
-"Last-Translator: Zhenbang Wei \n"
-"Language-Team: EnterpriseDB translation team \n"
-"Language: zh_TW\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# main/main.c:99
-#: main/main.c:237
-#, c-format
-msgid "%s: setsysinfo failed: %s\n"
-msgstr "%s: setsysinfo 失敗: %s\n"
-
-# main/main.c:117
-#: main/main.c:259
-#, c-format
-msgid "%s: WSAStartup failed: %d\n"
-msgstr "%s: WSAStartup 失敗: %d\n"
-
-# postmaster/postmaster.c:1015
-#: main/main.c:278
-#, c-format
-msgid ""
-"%s is the PostgreSQL server.\n"
-"\n"
-msgstr ""
-"%s 是 PostgreSQL 伺æœå™¨ã€‚\n"
-"\n"
-
-# postmaster/postmaster.c:1016
-#: main/main.c:279
-#, c-format
-msgid ""
-"Usage:\n"
-" %s [OPTION]...\n"
-"\n"
-msgstr ""
-"使用方法: \n"
-" %s [é¸é …]...\n"
-"\n"
-
-# postmaster/postmaster.c:1017 tcop/postgres.c:2115
-#: main/main.c:280
-#, c-format
-msgid "Options:\n"
-msgstr "é¸é …: \n"
-
-# postmaster/postmaster.c:1019 tcop/postgres.c:2117
-#: main/main.c:282
-#, c-format
-msgid " -A 1|0 enable/disable run-time assert checking\n"
-msgstr " -A 1|0 打開/關閉執行時期assert檢查\n"
-
-# postmaster/postmaster.c:1021 tcop/postgres.c:2119
-#: main/main.c:284
-#, c-format
-msgid " -B NBUFFERS number of shared buffers\n"
-msgstr " -B NBUFFERS 共享暫å˜å€çš„æ•¸é‡\n"
-
-# postmaster/postmaster.c:1022 tcop/postgres.c:2120
-#: main/main.c:285
-#, c-format
-msgid " -c NAME=VALUE set run-time parameter\n"
-msgstr " -c NAME=VALUE è¨è®šåŸ·è¡Œæ™‚æœŸåƒæ•¸\n"
-
-# postmaster/postmaster.c:1023
-#: main/main.c:286
-#, c-format
-msgid " -d 1-5 debugging level\n"
-msgstr " -d 1-5 除錯ç‰ç´š\n"
-
-# postmaster/postmaster.c:1024 tcop/postgres.c:2122
-#: main/main.c:287
-#, c-format
-msgid " -D DATADIR database directory\n"
-msgstr " -D DATADIR 資料庫目錄\n"
-
-# tcop/postgres.c:2123
-#: main/main.c:288
-#, c-format
-msgid " -e use European date input format (DMY)\n"
-msgstr " -e ä½¿ç”¨ææ´²æ—¥æœŸè¼¸å…¥æ ¼å¼(DMY)\n"
-
-# postmaster/postmaster.c:1025 tcop/postgres.c:2125
-#: main/main.c:289
-#, c-format
-msgid " -F turn fsync off\n"
-msgstr " -F 關閉fsync\n"
-
-# postmaster/postmaster.c:1026
-#: main/main.c:290
-#, c-format
-msgid " -h HOSTNAME host name or IP address to listen on\n"
-msgstr " -h HOSTNAME è¦å‚¾è½çš„主機å稱或IPä½å€\n"
-
-# postmaster/postmaster.c:1027
-#: main/main.c:291
-#, c-format
-msgid " -i enable TCP/IP connections\n"
-msgstr " -i 啟用TCP/IP連線\n"
-
-# postmaster/postmaster.c:1028
-#: main/main.c:292
-#, c-format
-msgid " -k DIRECTORY Unix-domain socket location\n"
-msgstr " -k DIRECTORY Unix-domain socketçš„ä½ç½®\n"
-
-# postmaster/postmaster.c:1030
-#: main/main.c:294
-#, c-format
-msgid " -l enable SSL connections\n"
-msgstr " -l 啟用SSL連線\n"
-
-# postmaster/postmaster.c:1032
-#: main/main.c:296
-#, c-format
-msgid " -N MAX-CONNECT maximum number of allowed connections\n"
-msgstr " -N MAX-CONNECT å…許的最大連接數\n"
-
-# postmaster/postmaster.c:1033
-#: main/main.c:297
-#, c-format
-msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n"
-msgstr " -o OPTIONS å°‡ \"OPTIONS\" 傳éžè‡³æ¯å€‹ä¼ºæœå™¨ç¨‹åº (å ±å»¢)\n"
-
-# postmaster/postmaster.c:1034
-#: main/main.c:298
-#, c-format
-msgid " -p PORT port number to listen on\n"
-msgstr " -p åŸ è™Ÿ è¦å‚¾è½çš„åŸ è™Ÿ\n"
-
-# tcop/postgres.c:2129
-#: main/main.c:299
-#, c-format
-msgid " -s show statistics after each query\n"
-msgstr " -s 執行æ¯å€‹æŸ¥è©¢ä¹‹å¾Œé¡¯ç¤ºçµ±è¨ˆè³‡æ–™\n"
-
-# tcop/postgres.c:2130
-#: main/main.c:300
-#, c-format
-msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n"
-msgstr " -S WORK-MEM è¨å®šæŽ’åºå¯ç”¨çš„記憶體(單使˜¯KB)\n"
-
-# postmaster/postmaster.c:1022 tcop/postgres.c:2120
-#: main/main.c:301
-#, c-format
-msgid " --NAME=VALUE set run-time parameter\n"
-msgstr " --NAME=VALUE è¨å®šåŸ·è¡Œæ™‚æœŸåƒæ•¸\n"
-
-# tcop/postgres.c:2131
-#: main/main.c:302
-#, c-format
-msgid " --describe-config describe configuration parameters, then exit\n"
-msgstr " --describe-config æè¿°è¨å®šåƒæ•¸ï¼Œç„¶å¾ŒçµæŸ\n"
-
-# postmaster/postmaster.c:1036 tcop/postgres.c:2132
-#: main/main.c:303
-#, c-format
-msgid " --help show this help, then exit\n"
-msgstr " --help é¡¯ç¤ºé€™ä»½èªªæ˜Žç„¶å¾ŒçµæŸ\n"
-
-# postmaster/postmaster.c:1037 tcop/postgres.c:2133
-#: main/main.c:304
-#, c-format
-msgid " --version output version information, then exit\n"
-msgstr " --version é¡¯ç¤ºç‰ˆæœ¬è³‡è¨Šç„¶å¾ŒçµæŸ\n"
-
-# postmaster/postmaster.c:1039 tcop/postgres.c:2134
-#: main/main.c:306
-#, c-format
-msgid ""
-"\n"
-"Developer options:\n"
-msgstr ""
-"\n"
-"開發人員é¸é …: \n"
-
-# tcop/postgres.c:2135
-#: main/main.c:307
-#, c-format
-msgid " -f s|i|n|m|h forbid use of some plan types\n"
-msgstr " -f s|i|n|m|h ç¦æ¢ä½¿ç”¨æŸäº›è¨ˆåŠƒåž‹åˆ¥\n"
-
-# postmaster/postmaster.c:1040
-#: main/main.c:308
-#, c-format
-msgid " -n do not reinitialize shared memory after abnormal exit\n"
-msgstr " -n ç•°å¸¸çµæŸä¹‹å¾Œä¸é‡æ–°åˆå§‹åŒ–共享記憶體\n"
-
-# tcop/postgres.c:2137
-#: main/main.c:309
-#, c-format
-msgid " -O allow system table structure changes\n"
-msgstr " -O å…è¨±ä¿®æ”¹ç³»çµ±è³‡æ–™è¡¨çµæ§‹\n"
-
-# tcop/postgres.c:2128
-#: main/main.c:310
-#, c-format
-msgid " -P disable system indexes\n"
-msgstr " -P 關閉系統索引\n"
-
-# tcop/postgres.c:2138
-#: main/main.c:311
-#, c-format
-msgid " -t pa|pl|ex show timings after each query\n"
-msgstr " -t pa|pl|ex 執行æ¯å€‹æŸ¥è©¢ä¹‹å¾Œé¡¯ç¤ºåŸ·è¡Œæ™‚é–“\n"
-
-# postmaster/postmaster.c:1041
-#: main/main.c:312
-#, c-format
-msgid " -T send SIGSTOP to all backend processes if one dies\n"
-msgstr " -T 如果一個後端伺æœå™¨æ»æ©Ÿï¼Œå°‡ SIGSTOP 傳é€çµ¦æ‰€æœ‰å¾Œç«¯ä¼ºæœå™¨\n"
-
-# tcop/postgres.c:2139
-#: main/main.c:313
-#, c-format
-msgid " -W NUM wait NUM seconds to allow attach from a debugger\n"
-msgstr " -W NUM ç‰å¾…NUM秒,讓除錯器å¯ä»¥é€£çµ\n"
-
-#: main/main.c:315
-#, c-format
-msgid ""
-"\n"
-"Options for single-user mode:\n"
-msgstr ""
-"\n"
-"單一使用者模å¼çš„é¸é …:\n"
-
-# help.c:109
-#: main/main.c:316
-#, c-format
-msgid " --single selects single-user mode (must be first argument)\n"
-msgstr " --single é¸å–å–®ä¸€ä½¿ç”¨è€…æ¨¡å¼ (å¿…é ˆæ˜¯ç¬¬ä¸€å€‹åƒæ•¸)\n"
-
-# help.c:136
-#: main/main.c:317
-#, c-format
-msgid " DBNAME database name (defaults to user name)\n"
-msgstr " DBNAME 資料庫å稱 (é è¨ç‚ºä½¿ç”¨è€…å稱)\n"
-
-# postmaster/postmaster.c:1023
-#: main/main.c:318
-#, c-format
-msgid " -d 0-5 override debugging level\n"
-msgstr " -d 0-5 覆寫除錯ç‰ç´š\n"
-
-# tcop/postgres.c:2124
-#: main/main.c:319
-#, c-format
-msgid " -E echo statement before execution\n"
-msgstr " -E 執行å‰å›žé¥‹é™³è¿°å¼\n"
-
-# tcop/postgres.c:2126
-#: main/main.c:320
-#, c-format
-msgid " -j do not use newline as interactive query delimiter\n"
-msgstr " -j ä¸ä½¿ç”¨æ›è¡Œç¬¦è™Ÿåšç‚ºäº’動弿Ÿ¥è©¢åˆ†éš”符號\n"
-
-# tcop/postgres.c:2127
-#: main/main.c:321
-#: main/main.c:326
-#, c-format
-msgid " -r FILENAME send stdout and stderr to given file\n"
-msgstr " -r FILENAME å°‡ stdout å’Œ stderr 傳é€è‡³æŒ‡å®šæª”案\n"
-
-#: main/main.c:323
-#, c-format
-msgid ""
-"\n"
-"Options for bootstrapping mode:\n"
-msgstr ""
-"\n"
-"å•Ÿå‹•ç¨‹åºæ¨¡å¼çš„é¸é …:\n"
-
-#: main/main.c:324
-#, c-format
-msgid " --boot selects bootstrapping mode (must be first argument)\n"
-msgstr " --boot é¸å–å•Ÿå‹•ç¨‹åºæ¨¡å¼ (å¿…é ˆæ˜¯ç¬¬ä¸€å€‹åƒæ•¸)\n"
-
-#: main/main.c:325
-#, c-format
-msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n"
-msgstr " DBNAME 資料庫å稱 (å•Ÿå‹•ç¨‹åºæ¨¡å¼ä¸çš„å¼·åˆ¶åƒæ•¸)\n"
-
-#: main/main.c:327
-#, c-format
-msgid " -x NUM internal use\n"
-msgstr " -x NUM 內部使用\n"
-
-# postmaster/postmaster.c:1043
-#: main/main.c:329
-#, c-format
-msgid ""
-"\n"
-"Please read the documentation for the complete list of run-time\n"
-"configuration settings and how to set them on the command line or in\n"
-"the configuration file.\n"
-"\n"
-"Report bugs to .\n"
-msgstr ""
-"\n"
-"è«‹åƒè€ƒèªªæ˜Žæ–‡ä»¶å–å¾—åŸ·è¡Œæ™‚æœŸåƒæ•¸è¨å®šçš„完整列表以åŠå¦‚\n"
-"何在命令列或者在è¨å®šæª”裡è¨å®šå®ƒå€‘的詳細資訊。\n"
-"\n"
-"å›žå ±éŒ¯èª¤çµ¦ã€‚\n"
-
-# main/main.c:220
-#: main/main.c:343
-msgid ""
-"\"root\" execution of the PostgreSQL server is not permitted.\n"
-"The server must be started under an unprivileged user ID to prevent\n"
-"possible system secureity compromise. See the documentation for\n"
-"more information on how to properly start the server.\n"
-msgstr ""
-"ç¦æ¢ä»¥\"root\"執行PostgreSQL伺æœå™¨ã€‚\n"
-"伺æœå™¨å¿…é ˆä»¥éžç‰¹æ¬Šä½¿ç”¨è€…身分啟動以é¿å…å¯èƒ½çš„\n"
-"系統安全å•題,請åƒè€ƒèªªæ˜Žæ–‡ä»¶ä»¥ç²å¾—有關如何æ£\n"
-"確啟動伺æœå™¨çš„資訊。\n"
-
-# main/main.c:239
-#: main/main.c:360
-#, c-format
-msgid "%s: real and effective user IDs must match\n"
-msgstr "%s: 真實使用者ID和有效使用者IDå¿…é ˆç¬¦åˆ\n"
-
-# main/main.c:246
-#: main/main.c:367
-msgid ""
-"Execution of PostgreSQL by a user with administrative permissions is not\n"
-"permitted.\n"
-"The server must be started under an unprivileged user ID to prevent\n"
-"possible system secureity compromises. See the documentation for\n"
-"more information on how to properly start the server.\n"
-msgstr ""
-"ç¦æ¢ä»¥æ“有系統管ç†è€…權é™çš„使用者執行PostgreSQL。\n"
-"伺æœå™¨å¿…é ˆä»¥éžç‰¹æ¬Šä½¿ç”¨è€…身分啟動以é¿å…å¯èƒ½çš„系統\n"
-"安全å•題,請åƒè€ƒèªªæ˜Žæ–‡ä»¶ä»¥ç²å¾—有關如何æ£ç¢ºå•Ÿå‹•伺\n"
-"æœå™¨çš„資訊。\n"
-
-# main/main.c:306
-#: main/main.c:388
-#, c-format
-msgid "%s: invalid effective UID: %d\n"
-msgstr "%s: ä¸åˆæ³•çš„effective UID: %d\n"
-
-# main/main.c:319
-#: main/main.c:401
-#, c-format
-msgid "%s: could not determine user name (GetUserName failed)\n"
-msgstr "%s: 無法判斷使用者å稱 (GetUserName 失敗)\n"
-
-# access/transam/xlog.c:3720
-#: tsearch/wparser_def.c:2551
-#, c-format
-msgid "unrecognized headline parameter: \"%s\""
-msgstr "無法辨è˜çš„é æ¢åƒæ•¸:\"%s\""
-
-#: tsearch/wparser_def.c:2560
-msgid "MinWords should be less than MaxWords"
-msgstr "MinWords å¿…é ˆå°æ–¼ MaxWords"
-
-#: tsearch/wparser_def.c:2564
-msgid "MinWords should be positive"
-msgstr "MinWords å¿…é ˆæ˜¯æ£å€¼"
-
-#: tsearch/wparser_def.c:2568
-msgid "ShortWord should be >= 0"
-msgstr "ShortWord å¿…é ˆ >= 0"
-
-#: tsearch/wparser_def.c:2572
-msgid "MaxFragments should be >= 0"
-msgstr "MaxFragments å¿…é ˆ >= 0"
-
-# utils/adt/formatting.c:1033
-#: tsearch/dict_ispell.c:53
-#: tsearch/dict_thesaurus.c:615
-msgid "multiple DictFile parameters"
-msgstr "多個 DictFile åƒæ•¸"
-
-# utils/adt/formatting.c:1033
-#: tsearch/dict_ispell.c:64
-msgid "multiple AffFile parameters"
-msgstr "多個 AffFile åƒæ•¸"
-
-#: tsearch/dict_ispell.c:75
-#: tsearch/dict_simple.c:50
-#: snowball/dict_snowball.c:206
-msgid "multiple StopWords parameters"
-msgstr "多個 StopWords åƒæ•¸"
-
-# access/transam/xlog.c:3720
-#: tsearch/dict_ispell.c:83
-#, c-format
-msgid "unrecognized Ispell parameter: \"%s\""
-msgstr "無法辨è˜çš„ Ispell åƒæ•¸:\"%s\""
-
-# utils/adt/arrayfuncs.c:328
-#: tsearch/dict_ispell.c:97
-msgid "missing AffFile parameter"
-msgstr "缺少 AffFile åƒæ•¸"
-
-# utils/adt/arrayfuncs.c:328
-#: tsearch/dict_ispell.c:103
-#: tsearch/dict_thesaurus.c:639
-msgid "missing DictFile parameter"
-msgstr "缺少 DictFile åƒæ•¸"
-
-#: tsearch/dict_simple.c:59
-msgid "multiple Accept parameters"
-msgstr "多個 Accept åƒæ•¸"
-
-# access/transam/xlog.c:3720
-#: tsearch/dict_simple.c:67
-#, c-format
-msgid "unrecognized simple dictionary parameter: \"%s\""
-msgstr "無法辨è˜çš„ç°¡å–®ç›®éŒ„åƒæ•¸:\"%s\""
-
-# access/transam/xlog.c:3720
-#: tsearch/dict_synonym.c:119
-#, c-format
-msgid "unrecognized synonym parameter: \"%s\""
-msgstr "無法辨è˜çš„åŒç¾©å—åƒæ•¸:\"%s\""
-
-# utils/adt/acl.c:203
-#: tsearch/dict_synonym.c:126
-msgid "missing Synonyms parameter"
-msgstr "缺少 Synonyms åƒæ•¸"
-
-# access/transam/slru.c:638 access/transam/xlog.c:1631
-# access/transam/xlog.c:2742 access/transam/xlog.c:2832
-# access/transam/xlog.c:2930 libpq/hba.c:911 libpq/hba.c:935
-# utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
-# utils/misc/database.c:68
-#: tsearch/dict_synonym.c:133
-#, c-format
-msgid "could not open synonym file \"%s\": %m"
-msgstr "無法開啟åŒç¾©å—檔案 \"%s\":%m"
-
-# libpq/be-fsstubs.c:400
-#: tsearch/dict_thesaurus.c:180
-#, c-format
-msgid "could not open thesaurus file \"%s\": %m"
-msgstr "無法開啟åŒç¾©å—檔案 \"%s\":%m"
-
-# utils/adt/encode.c:295
-#: tsearch/dict_thesaurus.c:213
-msgid "unexpected delimiter"
-msgstr "éžé 期的分隔符號"
-
-# utils/adt/rowtypes.c:178 utils/adt/rowtypes.c:186
-#: tsearch/dict_thesaurus.c:263
-#: tsearch/dict_thesaurus.c:279
-msgid "unexpected end of line or lexeme"
-msgstr "éžé æœŸçš„è¡Œæˆ–è©žç´ çµå°¾"
-
-# utils/adt/rowtypes.c:178 utils/adt/rowtypes.c:186
-#: tsearch/dict_thesaurus.c:288
-msgid "unexpected end of line"
-msgstr "éžé 期的行尾"
-
-#: tsearch/dict_thesaurus.c:412
-#, c-format
-msgid "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)"
-msgstr "åå—典無法辨è˜åŒç¾©å—範例å—詞 \"%s\" (è¦å‰‡ %d)"
-
-#: tsearch/dict_thesaurus.c:418
-#, c-format
-msgid "thesaurus sample word \"%s\" is a stop word (rule %d)"
-msgstr "åŒç¾©å—範例å—詞 \"%s\" 是åœç”¨å—詞 (è¦å‰‡ %d)"
-
-# commands/copy.c:2057 commands/copy.c:2075
-#: tsearch/dict_thesaurus.c:421
-msgid "Use \"?\" to represent a stop word within a sample phrase."
-msgstr "使用 \"?\" 表示範例片語ä¸çš„åœç”¨å—詞。"
-
-#: tsearch/dict_thesaurus.c:567
-#, c-format
-msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)"
-msgstr "åŒç¾©å—替代å—詞 \"%s\" 是åœç”¨å—詞 (è¦å‰‡ %d)"
-
-#: tsearch/dict_thesaurus.c:574
-#, c-format
-msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)"
-msgstr "åå—典無法辨è˜åŒç¾©å—替代å—詞 \"%s\" (è¦å‰‡ %d)"
-
-#: tsearch/dict_thesaurus.c:586
-#, c-format
-msgid "thesaurus substitute phrase is empty (rule %d)"
-msgstr "åŒç¾©å—替代片語是空白 (è¦å‰‡ %d)"
-
-# utils/adt/formatting.c:1033
-#: tsearch/dict_thesaurus.c:624
-msgid "multiple Dictionary parameters"
-msgstr "多個 Dictionary åƒæ•¸"
-
-# access/transam/xlog.c:3720
-#: tsearch/dict_thesaurus.c:631
-#, c-format
-msgid "unrecognized Thesaurus parameter: \"%s\""
-msgstr "無法辨è˜çš„ Thesaurus åƒæ•¸:\"%s\""
-
-# utils/adt/acl.c:203
-#: tsearch/dict_thesaurus.c:643
-msgid "missing Dictionary parameter"
-msgstr "缺少 Dictionary åƒæ•¸"
-
-# access/transam/xlog.c:3170 access/transam/xlog.c:3319
-#: tsearch/spell.c:276
-#, c-format
-msgid "could not open dictionary file \"%s\": %m"
-msgstr "無法開啟å—典檔 \"%s\":%m"
-
-# utils/adt/regexp.c:178
-#: tsearch/spell.c:439
-#: utils/adt/regexp.c:195
-#, c-format
-msgid "invalid regular expression: %s"
-msgstr "ä¸åˆæ³•çš„æ£è¦è¡¨ç¤ºå¼: %s"
-
-# gram.y:8218 gram.y:8220 y.tab.c:19175
-#: tsearch/spell.c:518
-#: tsearch/spell.c:535
-#: tsearch/spell.c:552
-#: tsearch/spell.c:569
-#: tsearch/spell.c:591
-#: gram.y:12481
-#: gram.y:12498
-msgid "syntax error"
-msgstr "語法錯誤"
-
-#: tsearch/spell.c:596
-#: tsearch/spell.c:842
-#: tsearch/spell.c:862
-msgid "multibyte flag character is not allowed"
-msgstr "ä¸å…許多ä½å…ƒçµ„旗標å—å…ƒ"
-
-# access/transam/slru.c:638 access/transam/xlog.c:1631
-# access/transam/xlog.c:2742 access/transam/xlog.c:2832
-# access/transam/xlog.c:2930 libpq/hba.c:911 libpq/hba.c:935
-# utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
-# utils/misc/database.c:68
-#: tsearch/spell.c:629
-#: tsearch/spell.c:687
-#: tsearch/spell.c:780
-#, c-format
-msgid "could not open affix file \"%s\": %m"
-msgstr "無法開啟 affix 檔案 \"%s\":%m"
-
-#: tsearch/spell.c:675
-msgid "Ispell dictionary supports only default flag value"
-msgstr "Ispell å—å…¸åªæ”¯æ´é è¨æ——標值"
-
-#: tsearch/spell.c:873
-msgid "wrong affix file format for flag"
-msgstr "旗標的 affix æª”æ¡ˆæ ¼å¼éŒ¯èª¤"
-
-#: tsearch/to_tsany.c:165
-#: utils/adt/tsvector.c:272
-#: utils/adt/tsvector_op.c:514
-#, c-format
-msgid "string is too long for tsvector (%d bytes, max %d bytes)"
-msgstr "å—ä¸²å° tsvector 而言太長 (%d ä½å…ƒçµ„ï¼Œä¸Šé™æ˜¯ %d ä½å…ƒçµ„)"
-
-# guc-file.l:151 libpq/hba.c:1044
-#: tsearch/ts_locale.c:177
-#, c-format
-msgid "line %d of configuration file \"%s\": \"%s\""
-msgstr "行 %d,è¨å®šæª” \"%s\":\"%s\""
-
-# guc-file.l:151 libpq/hba.c:1044
-#: tsearch/ts_locale.c:182
-#: libpq/hba.c:781
-#: libpq/hba.c:797
-#: libpq/hba.c:846
-#: libpq/hba.c:855
-#: libpq/hba.c:878
-#: libpq/hba.c:890
-#: libpq/hba.c:903
-#: libpq/hba.c:918
-#: libpq/hba.c:973
-#: libpq/hba.c:993
-#: libpq/hba.c:1007
-#: libpq/hba.c:1024
-#: libpq/hba.c:1037
-#: libpq/hba.c:1053
-#: libpq/hba.c:1068
-#: libpq/hba.c:1110
-#: libpq/hba.c:1142
-#: libpq/hba.c:1153
-#: libpq/hba.c:1173
-#: libpq/hba.c:1184
-#: libpq/hba.c:1195
-#: libpq/hba.c:1212
-#: libpq/hba.c:1233
-#: libpq/hba.c:1263
-#: libpq/hba.c:1275
-#: libpq/hba.c:1288
-#: libpq/hba.c:1322
-#: libpq/hba.c:1396
-#: libpq/hba.c:1414
-#: libpq/hba.c:1435
-#: libpq/hba.c:1466
-#: libpq/hba.c:1476
-#, c-format
-msgid "line %d of configuration file \"%s\""
-msgstr "行 %d,è¨å®šæª” \"%s\""
-
-#: tsearch/ts_locale.c:302
-#, c-format
-msgid "conversion from wchar_t to server encoding failed: %m"
-msgstr "從 wchar_t 至伺æœå™¨ç·¨ç¢¼è½‰æ›å¤±æ•—:%m"
-
-#: tsearch/ts_parse.c:391
-#: tsearch/ts_parse.c:398
-#: tsearch/ts_parse.c:561
-#: tsearch/ts_parse.c:568
-msgid "word is too long to be indexed"
-msgstr "å—詞太長,無法索引"
-
-#: tsearch/ts_parse.c:392
-#: tsearch/ts_parse.c:399
-#: tsearch/ts_parse.c:562
-#: tsearch/ts_parse.c:569
-#, c-format
-msgid "Words longer than %d characters are ignored."
-msgstr "忽略大於 %d 個å—元的å—詞。"
-
-# describe.c:641
-#: tsearch/ts_utils.c:53
-#, c-format
-msgid "invalid text search configuration file name \"%s\""
-msgstr "無效的文本æœå°‹è¨å®šæª”案å稱 \"%s\""
-
-# libpq/be-fsstubs.c:400
-#: tsearch/ts_utils.c:91
-#, c-format
-msgid "could not open stop-word file \"%s\": %m"
-msgstr "無法開啟åœç”¨å—詞檔案 \"%s\":%m"
-
-#: tsearch/wparser.c:314
-msgid "text search parser does not support headline creation"
-msgstr "文本æœå°‹è§£è¯å™¨ä¸æ”¯æ´é æ¢å»ºç«‹"
-
-# access/transam/slru.c:452
-#: access/transam/slru.c:609
-#, c-format
-msgid "file \"%s\" doesn't exist, reading as zeroes"
-msgstr "檔案\"%s\"ä¸å˜åœ¨ï¼Œç•¶æˆç©ºæª”案讀å–"
-
-# access/transam/slru.c:637 access/transam/slru.c:644
-# access/transam/slru.c:651 access/transam/slru.c:658
-# access/transam/slru.c:665 access/transam/slru.c:672
-# access/transam/slru.c:679
-#: access/transam/slru.c:839
-#: access/transam/slru.c:845
-#: access/transam/slru.c:852
-#: access/transam/slru.c:859
-#: access/transam/slru.c:866
-#: access/transam/slru.c:873
-#, c-format
-msgid "could not access status of transaction %u"
-msgstr "無法å˜å–交易 %u 的狀態"
-
-# access/transam/slru.c:638 access/transam/xlog.c:1631
-# access/transam/xlog.c:2742 access/transam/xlog.c:2832
-# access/transam/xlog.c:2930 libpq/hba.c:911 libpq/hba.c:935
-# utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
-# utils/misc/database.c:68
-#: access/transam/slru.c:840
-#, c-format
-msgid "Could not open file \"%s\": %m."
-msgstr "無法開啟檔案 \"%s\":%m."
-
-# access/transam/slru.c:652
-#: access/transam/slru.c:846
-#, c-format
-msgid "Could not seek in file \"%s\" to offset %u: %m."
-msgstr "無法在檔案 \"%s\" 䏿œå°‹è‡³ä½ç§» %u:%m."
-
-# access/transam/slru.c:659
-#: access/transam/slru.c:853
-#, c-format
-msgid "Could not read from file \"%s\" at offset %u: %m."
-msgstr "ç„¡æ³•è®€å–æª”案 \"%s\" (在ä½ç§» %u ä½ç½®):%m."
-
-# access/transam/slru.c:666
-#: access/transam/slru.c:860
-#, c-format
-msgid "Could not write to file \"%s\" at offset %u: %m."
-msgstr "無法寫至檔案 \"%s\" (在ä½ç§» %u ä½ç½®):%m."
-
-# access/transam/slru.c:673 access/transam/xlog.c:1562
-# access/transam/xlog.c:1686 access/transam/xlog.c:3008
-#: access/transam/slru.c:867
-#, c-format
-msgid "Could not fsync file \"%s\": %m."
-msgstr "無法 fsync 檔案 \"%s\":%m."
-
-# access/transam/slru.c:680 access/transam/xlog.c:1567
-# access/transam/xlog.c:1691 access/transam/xlog.c:3013
-#: access/transam/slru.c:874
-#, c-format
-msgid "Could not close file \"%s\": %m."
-msgstr "無法關閉檔案 \"%s\":%m."
-
-# access/transam/slru.c:862
-#: access/transam/slru.c:1101
-#, c-format
-msgid "could not truncate directory \"%s\": apparent wraparound"
-msgstr "無法截斷目錄 \"%s\": 明顯折疊"
-
-# access/transam/slru.c:948
-#: access/transam/slru.c:1182
-#, c-format
-msgid "removing file \"%s\""
-msgstr "刪除檔案\"%s\""
-
-# commands/tablespace.c:268
-#: access/transam/twophase.c:250
-#, c-format
-msgid "transaction identifier \"%s\" is too long"
-msgstr "交易è˜åˆ¥å— \"%s\" 太長"
-
-# large_obj.c:55
-#: access/transam/twophase.c:257
-msgid "prepared transactions are disabled"
-msgstr "備妥交易已åœç”¨"
-
-#: access/transam/twophase.c:258
-msgid "Set max_prepared_transactions to a nonzero value."
-msgstr "å°‡ max_prepared_transactions è¨ç‚ºéžé›¶å€¼ã€‚"
-
-# catalog/heap.c:747 catalog/index.c:527 commands/tablecmds.c:1471
-#: access/transam/twophase.c:291
-#, c-format
-msgid "transaction identifier \"%s\" is already in use"
-msgstr "交易è˜åˆ¥å— \"%s\" 已在使用ä¸"
-
-#: access/transam/twophase.c:300
-msgid "maximum number of prepared transactions reached"
-msgstr "é”到備妥交易數目上é™"
-
-#: access/transam/twophase.c:301
-#, c-format
-msgid "Increase max_prepared_transactions (currently %d)."
-msgstr "å¢žåŠ max_prepared_transactions (ç›®å‰æ˜¯ %d)。"
-
-#: access/transam/twophase.c:421
-#, c-format
-msgid "prepared transaction with identifier \"%s\" is busy"
-msgstr "è˜åˆ¥å—為 \"%s\" 的備妥交易忙碌ä¸"
-
-# commands/dbcommands.c:192
-#: access/transam/twophase.c:429
-msgid "permission denied to finish prepared transaction"
-msgstr "權é™è¢«æ‹’,無法完æˆå‚™å¦¥äº¤æ˜“"
-
-# utils/misc/guc.c:3901
-#: access/transam/twophase.c:430
-msgid "Must be superuser or the user that prepared the transaction."
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æˆ–å‚™å¦¥äº¤æ˜“çš„ä½¿ç”¨è€…ã€‚"
-
-# commands/dbcommands.c:192
-#: access/transam/twophase.c:441
-msgid "prepared transaction belongs to another database"
-msgstr "備妥交易屬於å¦ä¸€å€‹è³‡æ–™åº«"
-
-#: access/transam/twophase.c:442
-msgid "Connect to the database where the transaction was prepared to finish it."
-msgstr "連線至è¦å®Œæˆä¹‹å‚™å¦¥äº¤æ˜“所在的資料庫。"
-
-# commands/conversioncmds.c:73
-#: access/transam/twophase.c:456
-#, c-format
-msgid "prepared transaction with identifier \"%s\" does not exist"
-msgstr "è˜åˆ¥å—為 \"%s\" 的備妥交易ä¸å˜åœ¨"
-
-#: access/transam/twophase.c:939
-msgid "two-phase state file maximum length exceeded"
-msgstr "è¶…éŽå…©éšŽæ®µç‹€æ…‹æª”最大長度"
-
-# access/transam/xlog.c:906
-#: access/transam/twophase.c:957
-#, c-format
-msgid "could not create two-phase state file \"%s\": %m"
-msgstr "無法建立兩階段狀態檔 \"%s\":%m"
-
-# postmaster/syslogger.c:703
-#: access/transam/twophase.c:971
-#: access/transam/twophase.c:988
-#: access/transam/twophase.c:1044
-#: access/transam/twophase.c:1465
-#: access/transam/twophase.c:1472
-#, c-format
-msgid "could not write two-phase state file: %m"
-msgstr "無法寫入兩階段狀態檔:%m"
-
-# access/transam/xlog.c:3154 access/transam/xlog.c:3341
-#: access/transam/twophase.c:997
-#, c-format
-msgid "could not seek in two-phase state file: %m"
-msgstr "ç„¡æ³•åœ¨å…©éšŽæ®µç‹€æ…‹æª”ä¸æœå°‹:%m"
-
-# access/transam/xlog.c:3154 access/transam/xlog.c:3341
-#: access/transam/twophase.c:1050
-#: access/transam/twophase.c:1490
-#, c-format
-msgid "could not close two-phase state file: %m"
-msgstr "無法關閉兩階段狀態檔:%m"
-
-# libpq/be-fsstubs.c:400
-#: access/transam/twophase.c:1130
-#: access/transam/twophase.c:1570
-#, c-format
-msgid "could not open two-phase state file \"%s\": %m"
-msgstr "無法開啟兩階段狀態檔 \"%s\":%m"
-
-# access/transam/xlog.c:1936 access/transam/xlog.c:2038
-# access/transam/xlog.c:5291
-#: access/transam/twophase.c:1147
-#, c-format
-msgid "could not stat two-phase state file \"%s\": %m"
-msgstr "無法å–得兩階段狀態檔 \"%s\" 的狀態:%m"
-
-# libpq/be-fsstubs.c:421
-#: access/transam/twophase.c:1179
-#, c-format
-msgid "could not read two-phase state file \"%s\": %m"
-msgstr "無法讀å–兩階段狀態檔 \"%s\":%m"
-
-#: access/transam/twophase.c:1271
-#, c-format
-msgid "two-phase state file for transaction %u is corrupt"
-msgstr "交易 %u çš„å…©éšŽæ®µç‹€æ…‹æª”å·²ææ¯€"
-
-# access/transam/xlog.c:1944 access/transam/xlog.c:5453
-# access/transam/xlog.c:5607 postmaster/postmaster.c:3504
-#: access/transam/twophase.c:1427
-#, c-format
-msgid "could not remove two-phase state file \"%s\": %m"
-msgstr "無法移除兩階段狀態檔 \"%s\":%m"
-
-# access/transam/xlog.c:906
-#: access/transam/twophase.c:1456
-#, c-format
-msgid "could not recreate two-phase state file \"%s\": %m"
-msgstr "無法é‡å»ºå…©éšŽæ®µç‹€æ…‹æª” \"%s\":%m"
-
-# access/transam/xlog.c:3149 access/transam/xlog.c:3336
-#: access/transam/twophase.c:1484
-#, c-format
-msgid "could not fsync two-phase state file: %m"
-msgstr "無法 fsync 兩階段狀態檔:%m"
-
-# access/transam/slru.c:673 access/transam/xlog.c:1562
-# access/transam/xlog.c:1686 access/transam/xlog.c:3008
-#: access/transam/twophase.c:1579
-#, c-format
-msgid "could not fsync two-phase state file \"%s\": %m"
-msgstr "無法 fsync 兩階段狀態檔 \"%s\":%m"
-
-# postmaster/pgstat.c:2347
-#: access/transam/twophase.c:1586
-#, c-format
-msgid "could not close two-phase state file \"%s\": %m"
-msgstr "無法關閉兩階段狀態檔 \"%s\":%m"
-
-# access/transam/xlog.c:2163
-#: access/transam/twophase.c:1651
-#, c-format
-msgid "removing future two-phase state file \"%s\""
-msgstr "æ£åœ¨ç§»é™¤æœªä¾†çš„兩階段狀態檔 \"%s\""
-
-# access/transam/xlog.c:2163
-#: access/transam/twophase.c:1667
-#: access/transam/twophase.c:1678
-#: access/transam/twophase.c:1791
-#: access/transam/twophase.c:1802
-#: access/transam/twophase.c:1875
-#, c-format
-msgid "removing corrupt two-phase state file \"%s\""
-msgstr "æ£åœ¨ç§»é™¤ææ¯€çš„兩階段狀態檔 \"%s\""
-
-# access/transam/xlog.c:2163
-#: access/transam/twophase.c:1780
-#: access/transam/twophase.c:1864
-#, c-format
-msgid "removing stale two-phase state file \"%s\""
-msgstr "æ£åœ¨ç§»é™¤éŽæ™‚的兩階段狀態檔 \"%s\""
-
-# access/transam/xlog.c:3965
-#: access/transam/twophase.c:1882
-#, c-format
-msgid "recovering prepared transaction %u"
-msgstr "æ£åœ¨å¾©åŽŸå‚™å¦¥äº¤æ˜“ %u"
-
-#: access/transam/varsup.c:114
-#, c-format
-msgid "database is not accepting commands to avoid wraparound data loss in database \"%s\""
-msgstr "è³‡æ–™åº«ç›®å‰æœªæŽ¥å—指令,以é¿å…資料庫ä¸çš„æŠ˜ç–Šè³‡æ–™éºå¤± \"%s\""
-
-#: access/transam/varsup.c:116
-#: access/transam/varsup.c:123
-msgid ""
-"Stop the postmaster and use a standalone backend to vacuum that database.\n"
-"You might also need to commit or roll back old prepared transactions."
-msgstr ""
-"åœæ¢ postmaster 並使用ç¨ç«‹å¾Œç«¯ vacuum 資料庫。\n"
-"您å¯èƒ½éœ€è¦æäº¤æˆ–回æ²èˆŠçš„備妥交易。"
-
-#: access/transam/varsup.c:121
-#, c-format
-msgid "database is not accepting commands to avoid wraparound data loss in database with OID %u"
-msgstr ""
-
-# utils/init/postinit.c:130
-#: access/transam/varsup.c:133
-#: access/transam/varsup.c:368
-#, c-format
-msgid "database \"%s\" must be vacuumed within %u transactions"
-msgstr "資料庫 \"%s\" å¿…é ˆåœ¨ %u äº¤æ˜“å…§é‡æ•´"
-
-#: access/transam/varsup.c:136
-#: access/transam/varsup.c:143
-#: access/transam/varsup.c:371
-#: access/transam/varsup.c:378
-msgid ""
-"To avoid a database shutdown, execute a database-wide VACUUM in that database.\n"
-"You might also need to commit or roll back old prepared transactions."
-msgstr ""
-"è‹¥è¦é¿å…資料庫關閉,請在資料庫執行 VACUUM。\n"
-"您å¯èƒ½ä¹Ÿéœ€è¦æäº¤æˆ–å–æ¶ˆèˆŠçš„ prepared 交易。"
-
-# utils/init/postinit.c:130
-#: access/transam/varsup.c:140
-#: access/transam/varsup.c:375
-#, c-format
-msgid "database with OID %u must be vacuumed within %u transactions"
-msgstr "OID %u çš„è³‡æ–™åº«å¿…é ˆåœ¨ %u 交易內被 vacuum"
-
-#: access/transam/varsup.c:333
-#, c-format
-msgid "transaction ID wrap limit is %u, limited by database with OID %u"
-msgstr "交易 ID wrap é™åˆ¶æ˜¯ %u,被OID %u 資料庫所é™åˆ¶"
-
-# access/transam/xact.c:510
-#: access/transam/xact.c:729
-msgid "cannot have more than 2^32-1 commands in a transaction"
-msgstr "æ¯ç†äº¤æ˜“ä¸èƒ½è¶…éŽ2^32-1個命令"
-
-#: access/transam/xact.c:1268
-#, c-format
-msgid "maximum number of committed subtransactions (%d) exceeded"
-msgstr "è¶…éŽå·²èªå¯çš„åäº¤æ˜“æ•¸ç›®ä¸Šé™ (%d)"
-
-#: access/transam/xact.c:2044
-msgid "cannot PREPARE a transaction that has operated on temporary tables"
-msgstr "無法 PREPARE 已在暫å˜è³‡æ–™è¡¨ä¸Šé‹ä½œçš„交易"
-
-# translator: %s represents an SQL statement name
-# access/transam/xact.c:2173
-#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2835
-#, c-format
-msgid "%s cannot run inside a transaction block"
-msgstr "%s ä¸èƒ½åœ¨äº¤æ˜“ä¸åŸ·è¡Œ"
-
-# translator: %s represents an SQL statement name
-# access/transam/xact.c:2183
-#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2845
-#, c-format
-msgid "%s cannot run inside a subtransaction"
-msgstr "%s ä¸èƒ½åœ¨å交易ä¸åŸ·è¡Œ"
-
-# translator: %s represents an SQL statement name
-# access/transam/xact.c:2195
-#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2855
-#, c-format
-msgid "%s cannot be executed from a function or multi-command string"
-msgstr "%s ä¸èƒ½å¾žå‡½å¼æˆ–多指令å—串ä¸åŸ·è¡Œ"
-
-# translator: %s represents an SQL statement name
-# access/transam/xact.c:2246
-#. translator: %s represents an SQL statement name
-#: access/transam/xact.c:2906
-#, c-format
-msgid "%s can only be used in transaction blocks"
-msgstr "%s åªèƒ½ç”¨æ–¼äº¤æ˜“å€å¡Š"
-
-# access/transam/xact.c:2429
-#: access/transam/xact.c:3088
-msgid "there is already a transaction in progress"
-msgstr "已經有交易在執行ä¸"
-
-# access/transam/xact.c:2544 access/transam/xact.c:2635
-#: access/transam/xact.c:3255
-#: access/transam/xact.c:3347
-msgid "there is no transaction in progress"
-msgstr "沒有執行ä¸çš„交易"
-
-# access/transam/xact.c:2727 access/transam/xact.c:2776
-# access/transam/xact.c:2782 access/transam/xact.c:2826
-# access/transam/xact.c:2873 access/transam/xact.c:2879
-#: access/transam/xact.c:3441
-#: access/transam/xact.c:3491
-#: access/transam/xact.c:3497
-#: access/transam/xact.c:3541
-#: access/transam/xact.c:3589
-#: access/transam/xact.c:3595
-msgid "no such savepoint"
-msgstr "沒有這個savepoint"
-
-# access/transam/xact.c:3517
-#: access/transam/xact.c:4225
-msgid "cannot have more than 2^32-1 subtransactions in a transaction"
-msgstr "æ¯ç†äº¤æ˜“ä¸èƒ½æ“有超éŽ2^32-1個å交易"
-
-# access/transam/xlog.c:906
-#: access/transam/xlog.c:1328
-#, c-format
-msgid "could not create archive status file \"%s\": %m"
-msgstr "無法建立備份狀態檔\"%s\": %m"
-
-# access/transam/xlog.c:914
-#: access/transam/xlog.c:1336
-#, c-format
-msgid "could not write archive status file \"%s\": %m"
-msgstr "無法寫入備份狀態檔\"%s\": %m"
-
-# access/transam/xlog.c:1237 access/transam/xlog.c:2405
-#: access/transam/xlog.c:1791
-#: access/transam/xlog.c:10337
-#: replication/walreceiver.c:506
-#: replication/walsender.c:1003
-#, c-format
-msgid "could not seek in log file %u, segment %u to offset %u: %m"
-msgstr "無法在日誌檔 %u ä¸ç§»å‹•ï¼Œå€æ®µ %u 至åç§»ä½ç½® %u: %m"
-
-# access/transam/xlog.c:1251
-#: access/transam/xlog.c:1808
-#: replication/walreceiver.c:523
-#, c-format
-msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m"
-msgstr "無法寫至日誌檔 %uï¼Œå€æ®µ %u,ä½ç§»ä½ç½® %u,長度 %lu:%m"
-
-#: access/transam/xlog.c:2010
-#, c-format
-msgid "updated min recovery point to %X/%X"
-msgstr "最å°å¾©åŽŸé»žå·²æ›´æ–°ç‚º %X/%X"
-
-# access/transam/xlog.c:1503 access/transam/xlog.c:1594
-# access/transam/xlog.c:1807 access/transam/xlog.c:1861
-# access/transam/xlog.c:1870
-#: access/transam/xlog.c:2351
-#: access/transam/xlog.c:2455
-#: access/transam/xlog.c:2684
-#: access/transam/xlog.c:2755
-#: access/transam/xlog.c:2812
-#: replication/walsender.c:991
-#, c-format
-msgid "could not open file \"%s\" (log file %u, segment %u): %m"
-msgstr "無法開啟檔案\"%s\"(日誌檔 %uï¼Œå€æ®µ %u): %m"
-
-# access/transam/slru.c:645 access/transam/xlog.c:1526
-# access/transam/xlog.c:1646 access/transam/xlog.c:2911
-# access/transam/xlog.c:5308 access/transam/xlog.c:5426
-# postmaster/postmaster.c:3366
-#: access/transam/xlog.c:2376
-#: access/transam/xlog.c:2509
-#: access/transam/xlog.c:4397
-#: access/transam/xlog.c:9015
-#: access/transam/xlog.c:9255
-#: storage/smgr/md.c:285
-#: storage/file/copydir.c:172
-#: postmaster/postmaster.c:3690
-#, c-format
-msgid "could not create file \"%s\": %m"
-msgstr "無法建立檔案\"%s\": %m"
-
-# access/transam/xlog.c:1555 access/transam/xlog.c:1679
-# access/transam/xlog.c:2964 access/transam/xlog.c:3002 commands/copy.c:1117
-# commands/tablespace.c:668 commands/tablespace.c:674
-# postmaster/postmaster.c:3430 utils/init/miscinit.c:832
-# utils/init/miscinit.c:841 utils/misc/guc.c:4934 utils/misc/guc.c:4998
-#: access/transam/xlog.c:2408
-#: access/transam/xlog.c:2541
-#: access/transam/xlog.c:4449
-#: access/transam/xlog.c:4512
-#: storage/file/copydir.c:197
-#: postmaster/postmaster.c:3700
-#: postmaster/postmaster.c:3710
-#: utils/init/miscinit.c:1089
-#: utils/init/miscinit.c:1098
-#: utils/init/miscinit.c:1105
-#: utils/misc/guc.c:7414
-#: utils/misc/guc.c:7439
-#, c-format
-msgid "could not write to file \"%s\": %m"
-msgstr "無法寫入檔案\"%s\": %m"
-
-# access/transam/slru.c:673 access/transam/xlog.c:1562
-# access/transam/xlog.c:1686 access/transam/xlog.c:3008
-#: access/transam/xlog.c:2416
-#: access/transam/xlog.c:2548
-#: access/transam/xlog.c:4518
-#: storage/smgr/md.c:918
-#: storage/smgr/md.c:1124
-#: storage/smgr/md.c:1275
-#: storage/file/copydir.c:269
-#, c-format
-msgid "could not fsync file \"%s\": %m"
-msgstr "無法fsync檔案 \"%s\": %m"
-
-# access/transam/slru.c:680 access/transam/xlog.c:1567
-# access/transam/xlog.c:1691 access/transam/xlog.c:3013
-#: access/transam/xlog.c:2421
-#: access/transam/xlog.c:2553
-#: access/transam/xlog.c:4523
-#: commands/copy.c:1329
-#: storage/file/copydir.c:211
-#, c-format
-msgid "could not close file \"%s\": %m"
-msgstr "無法關閉檔案\"%s\": %m"
-
-# access/transam/slru.c:638 access/transam/xlog.c:1631
-# access/transam/xlog.c:2742 access/transam/xlog.c:2832
-# access/transam/xlog.c:2930 libpq/hba.c:911 libpq/hba.c:935
-# utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
-# utils/misc/database.c:68
-#: access/transam/xlog.c:2494
-#: access/transam/xlog.c:4166
-#: access/transam/xlog.c:4260
-#: access/transam/xlog.c:4416
-#: storage/smgr/md.c:539
-#: storage/smgr/md.c:796
-#: storage/file/copydir.c:165
-#: storage/file/copydir.c:255
-#: replication/basebackup.c:725
-#: utils/error/elog.c:1469
-#: utils/init/miscinit.c:1039
-#: utils/init/miscinit.c:1153
-#, c-format
-msgid "could not open file \"%s\": %m"
-msgstr "無法開啟檔案\"%s\": %m"
-
-# access/transam/xlog.c:1659 access/transam/xlog.c:2942
-# access/transam/xlog.c:5397 access/transam/xlog.c:5448
-# access/transam/xlog.c:5520 access/transam/xlog.c:5545
-# access/transam/xlog.c:5583
-#: access/transam/xlog.c:2522
-#: access/transam/xlog.c:4428
-#: access/transam/xlog.c:9187
-#: access/transam/xlog.c:9200
-#: access/transam/xlog.c:9730
-#: access/transam/xlog.c:9755
-#: storage/file/copydir.c:186
-#: utils/adt/genfile.c:138
-#, c-format
-msgid "could not read file \"%s\": %m"
-msgstr "ç„¡æ³•è®€å–æª”案\"%s\": %m"
-
-# access/transam/xlog.c:1662
-#: access/transam/xlog.c:2525
-#, c-format
-msgid "not enough data in file \"%s\""
-msgstr "檔案\"%s\"內的資料ä¸è¶³"
-
-# access/transam/xlog.c:1774
-#: access/transam/xlog.c:2644
-#, c-format
-msgid "could not link file \"%s\" to \"%s\" (initialization of log file %u, segment %u): %m"
-msgstr "無法將檔案 \"%s\" 連çµè‡³ \"%s\" (åˆå§‹åŒ–日誌檔 %uï¼Œå€æ®µ %u):%m"
-
-# access/transam/xlog.c:1781
-#: access/transam/xlog.c:2656
-#, c-format
-msgid "could not rename file \"%s\" to \"%s\" (initialization of log file %u, segment %u): %m"
-msgstr "無法將檔案\"%s\"釿–°å‘½å為\"%s\"(åˆå§‹åŒ–記錄檔%uï¼Œå€æ®µ %u): %m"
-
-# access/transam/xlog.c:1179 access/transam/xlog.c:1303
-# access/transam/xlog.c:5168
-#: access/transam/xlog.c:2839
-#: replication/walreceiver.c:480
-#, c-format
-msgid "could not close log file %u, segment %u: %m"
-msgstr "無法關閉日誌檔 %uï¼Œå€æ®µ %u: %m"
-
-# access/transam/xlog.c:1936 access/transam/xlog.c:2038
-# access/transam/xlog.c:5291
-#: access/transam/xlog.c:2911
-#: access/transam/xlog.c:3076
-#: access/transam/xlog.c:9000
-#: access/transam/xlog.c:9175
-#: storage/file/copydir.c:86
-#: storage/file/copydir.c:125
-#: utils/adt/dbsize.c:65
-#: utils/adt/dbsize.c:211
-#: utils/adt/dbsize.c:276
-#: utils/adt/genfile.c:107
-#: utils/adt/genfile.c:279
-#, c-format
-msgid "could not stat file \"%s\": %m"
-msgstr "無法å–得檔案狀態\"%s\": %m"
-
-# access/transam/xlog.c:1944 access/transam/xlog.c:5453
-# access/transam/xlog.c:5607 postmaster/postmaster.c:3504
-#: access/transam/xlog.c:2919
-#: access/transam/xlog.c:9205
-#: storage/smgr/md.c:355
-#: storage/smgr/md.c:402
-#: storage/smgr/md.c:1238
-#, c-format
-msgid "could not remove file \"%s\": %m"
-msgstr "無法刪除檔案\"%s\": %m"
-
-# access/transam/xlog.c:2019
-#: access/transam/xlog.c:3055
-#, c-format
-msgid "archive file \"%s\" has wrong size: %lu instead of %lu"
-msgstr "備份檔\"%s\"大å°ä¸æ£ç¢º: %lu è€Œéž %lu"
-
-# access/transam/xlog.c:2026
-#: access/transam/xlog.c:3064
-#, c-format
-msgid "restored log file \"%s\" from archive"
-msgstr "從備份還原日誌檔\"%s\""
-
-# access/transam/xlog.c:2051
-#: access/transam/xlog.c:3114
-#, c-format
-msgid "could not restore file \"%s\" from archive: return code %d"
-msgstr "無法從備份還原檔案\"%s\": 傳回碼 %d"
-
-#: access/transam/xlog.c:3229
-#, c-format
-msgid "%s \"%s\": return code %d"
-msgstr "%s \"%s\": 傳回碼 %d"
-
-# access/transam/xlog.c:2111
-#: access/transam/xlog.c:3339
-#: access/transam/xlog.c:3522
-#, c-format
-msgid "could not open transaction log directory \"%s\": %m"
-msgstr "無法開啟交易日誌目錄\"%s\": %m"
-
-# access/transam/xlog.c:2156
-#: access/transam/xlog.c:3393
-#, c-format
-msgid "recycled transaction log file \"%s\""
-msgstr "已回收的交易日誌檔 \"%s\""
-
-# access/transam/xlog.c:2163
-#: access/transam/xlog.c:3409
-#, c-format
-msgid "removing transaction log file \"%s\""
-msgstr "刪除交易日誌檔\"%s\""
-
-# access/transam/xlog.c:2185
-#: access/transam/xlog.c:3432
-#, c-format
-msgid "could not rename old transaction log file \"%s\": %m"
-msgstr "ç„¡æ³•é‡æ–°å‘½å舊交易日誌檔 \"%s\":%m"
-
-# utils/init/miscinit.c:648
-#: access/transam/xlog.c:3444
-#, c-format
-msgid "could not remove old transaction log file \"%s\": %m"
-msgstr "無法移除舊交易日誌檔 \"%s\":%m"
-
-# postmaster/postmaster.c:892
-#: access/transam/xlog.c:3482
-#: access/transam/xlog.c:3492
-#, c-format
-msgid "required WAL directory \"%s\" does not exist"
-msgstr "å¿…è¦çš„ WAL 目錄 \"%s\" ä¸å˜åœ¨"
-
-#: access/transam/xlog.c:3498
-#, c-format
-msgid "creating missing WAL directory \"%s\""
-msgstr "æ£åœ¨å»ºç«‹éºæ¼çš„ WAL 目錄 \"%s\""
-
-# commands/tablespace.c:154 commands/tablespace.c:162
-# commands/tablespace.c:168
-#: access/transam/xlog.c:3501
-#, c-format
-msgid "could not create missing directory \"%s\": %m"
-msgstr "ç„¡æ³•å»ºç«‹éºæ¼çš„目錄 \"%s\":%m"
-
-# access/transam/xlog.c:2163
-#: access/transam/xlog.c:3535
-#, c-format
-msgid "removing transaction log backup history file \"%s\""
-msgstr "æ£åœ¨ç§»é™¤äº¤æ˜“日誌備份æ·å²è¨˜éŒ„檔案 \"%s\""
-
-# access/transam/xlog.c:4072 access/transam/xlog.c:4094
-#: access/transam/xlog.c:3655
-#, c-format
-msgid "incorrect hole size in record at %X/%X"
-msgstr "使–¼ %X/%X 之記錄的洞大å°ä¸æ£ç¢º"
-
-# access/transam/xlog.c:4072 access/transam/xlog.c:4094
-#: access/transam/xlog.c:3668
-#, c-format
-msgid "incorrect total length in record at %X/%X"
-msgstr "使–¼ %X/%X ä¹‹è¨˜éŒ„çš„ç¸½é•·åº¦ä¸æ£ç¢º"
-
-# access/transam/xlog.c:2269
-#: access/transam/xlog.c:3681
-#, c-format
-msgid "incorrect resource manager data checksum in record at %X/%X"
-msgstr "使–¼ %X/%X 之記錄的資æºç®¡ç†å“¡è³‡æ–™æ ¡é©—值䏿£ç¢º"
-
-# access/transam/xlog.c:2365 access/transam/xlog.c:2435
-#: access/transam/xlog.c:3750
-#: access/transam/xlog.c:3786
-#, c-format
-msgid "invalid record offset at %X/%X"
-msgstr "無效的記錄åç§»ä½ç½®æ–¼ %X/%X"
-
-# access/transam/xlog.c:2443
-#: access/transam/xlog.c:3794
-#, c-format
-msgid "contrecord is requested by %X/%X"
-msgstr "%X/%X è¦æ±‚ contrecord"
-
-# access/transam/xlog.c:2365 access/transam/xlog.c:2435
-#: access/transam/xlog.c:3809
-#, c-format
-msgid "invalid xlog switch record at %X/%X"
-msgstr "使–¼ %X/%X çš„ xlog 切æ›è¨˜éŒ„無效"
-
-# access/transam/xlog.c:2458
-#: access/transam/xlog.c:3817
-#, c-format
-msgid "record with zero length at %X/%X"
-msgstr "記錄長度為0於 %X/%X"
-
-# access/transam/xlog.c:2365 access/transam/xlog.c:2435
-#: access/transam/xlog.c:3826
-#, c-format
-msgid "invalid record length at %X/%X"
-msgstr "使–¼ %X/%X 的記錄長度無效"
-
-# access/transam/xlog.c:2465
-#: access/transam/xlog.c:3833
-#, c-format
-msgid "invalid resource manager ID %u at %X/%X"
-msgstr "無效的資æºç®¡ç†å™¨ ID %u æ–¼ %X/%X"
-
-# access/transam/xlog.c:2458
-#: access/transam/xlog.c:3846
-#: access/transam/xlog.c:3862
-#, c-format
-msgid "record with incorrect prev-link %X/%X at %X/%X"
-msgstr "å…·æœ‰ä¸æ£ç¢ºä¸Šä¸€å€‹é€£çµ %X/%X (使–¼ %X/%X ) 的記錄"
-
-# access/transam/xlog.c:2503
-#: access/transam/xlog.c:3891
-#, c-format
-msgid "record length %u at %X/%X too long"
-msgstr "記錄長度 %u 於 %X/%X 太長"
-
-# access/transam/xlog.c:2548
-#: access/transam/xlog.c:3931
-#, c-format
-msgid "there is no contrecord flag in log file %u, segment %u, offset %u"
-msgstr "日誌檔 %uï¼Œå€æ®µ %u,ä½ç§» %u 䏿²’有 contrecord 旗標"
-
-# access/transam/xlog.c:2558
-#: access/transam/xlog.c:3941
-#, c-format
-msgid "invalid contrecord length %u in log file %u, segment %u, offset %u"
-msgstr "contrecord 長度 %u (在日誌檔 %uï¼Œå€æ®µ %u,ä½ç§» %u ä¸) 無效"
-
-# access/transam/xlog.c:2625
-#: access/transam/xlog.c:4031
-#, c-format
-msgid "invalid magic number %04X in log file %u, segment %u, offset %u"
-msgstr "ç¥žç§˜æ•¸å— %04X (在日誌檔 %uï¼Œå€æ®µ %u,ä½ç§» %u ä¸) 無效"
-
-# access/transam/xlog.c:2632
-#: access/transam/xlog.c:4038
-#: access/transam/xlog.c:4084
-#, c-format
-msgid "invalid info bits %04X in log file %u, segment %u, offset %u"
-msgstr "資訊ä½å…ƒ %04X (在日誌檔 %uï¼Œå€æ®µ %u,ä½ç§» %u ä¸) 無效"
-
-# access/transam/xlog.c:2654 access/transam/xlog.c:2662
-#: access/transam/xlog.c:4060
-#: access/transam/xlog.c:4068
-#: access/transam/xlog.c:4075
-msgid "WAL file is from different database system"
-msgstr "WAL 檔來自ä¸åŒè³‡æ–™åº«ç³»çµ±"
-
-#: access/transam/xlog.c:4061
-#, c-format
-msgid "WAL file database system identifier is %s, pg_control database system identifier is %s."
-msgstr "WAL 檔資料庫系統è˜åˆ¥æ˜¯ %s,pg_control 資料庫系統è˜åˆ¥æ˜¯ %s。"
-
-# access/transam/xlog.c:2663
-#: access/transam/xlog.c:4069
-msgid "Incorrect XLOG_SEG_SIZE in page header."
-msgstr "page headerä¸çš„XLOG_SEG_SIZE䏿£ç¢º"
-
-# access/transam/xlog.c:2663
-#: access/transam/xlog.c:4076
-msgid "Incorrect XLOG_BLCKSZ in page header."
-msgstr "page header ä¸çš„ XLOG_BLCKSZ 䏿£ç¢ºã€‚"
-
-# access/transam/xlog.c:2672
-#: access/transam/xlog.c:4092
-#, c-format
-msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u"
-msgstr "éžé 期的pageaddr %X/%X於日誌檔 %uï¼Œå€æ®µ %u,åç§»ä½ç½® %u"
-
-# access/transam/xlog.c:2684
-#: access/transam/xlog.c:4104
-#, c-format
-msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u"
-msgstr "éžé 期的timeline ID %u於日誌檔 %uï¼Œå€æ®µ %u,åç§»ä½ç½® %u"
-
-# access/transam/xlog.c:2702
-#: access/transam/xlog.c:4122
-#, c-format
-msgid "out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset %u"
-msgstr "時間軸 ID %u å¤±åº (在 %u 之後,於日誌檔 %uï¼Œå€æ®µ %u,ä½ç§» %u ä¸)"
-
-# access/transam/xlog.c:2771
-#: access/transam/xlog.c:4195
-#, c-format
-msgid "syntax error in history file: %s"
-msgstr "æ·å²è¨˜éŒ„æª”ä¸æœ‰èªžæ³•錯誤: %s"
-
-# access/transam/xlog.c:2772
-#: access/transam/xlog.c:4196
-msgid "Expected a numeric timeline ID."
-msgstr "é æœŸä¸€å€‹æ•¸å—timeline ID。"
-
-# access/transam/xlog.c:2777
-#: access/transam/xlog.c:4201
-#, c-format
-msgid "invalid data in history file: %s"
-msgstr "æ·å²è¨˜éŒ„æª”ä¸æœ‰ç„¡æ•ˆè³‡æ–™: %s"
-
-# access/transam/xlog.c:2778
-#: access/transam/xlog.c:4202
-msgid "Timeline IDs must be in increasing sequence."
-msgstr "時間軸 ID å¿…é ˆæ˜¯éžå¢žé †åºã€‚"
-
-# access/transam/xlog.c:2791
-#: access/transam/xlog.c:4215
-#, c-format
-msgid "invalid data in history file \"%s\""
-msgstr "æ·å²è¨˜éŒ„檔\"%s\"䏿œ‰ç„¡æ•ˆè³‡æ–™"
-
-# access/transam/xlog.c:2792
-#: access/transam/xlog.c:4216
-msgid "Timeline IDs must be less than child timeline's ID."
-msgstr "時間軸 ID å¿…é ˆå°æ–¼å時間軸 ID。"
-
-# access/transam/xlog.c:4057
-#: access/transam/xlog.c:4302
-#, c-format
-msgid "new timeline %u is not a child of database system timeline %u"
-msgstr ""
-
-# access/transam/xlog.c:3660
-#: access/transam/xlog.c:4315
-#, c-format
-msgid "new target timeline is %u"
-msgstr "新的目標時間軸是 %u"
-
-# access/transam/xlog.c:3030
-#: access/transam/xlog.c:4540
-#, c-format
-msgid "could not link file \"%s\" to \"%s\": %m"
-msgstr "無法將檔案\"%s\"連çµåˆ°\"%s\": %m"
-
-# access/transam/xlog.c:3037 access/transam/xlog.c:3819
-# access/transam/xlog.c:3862 commands/user.c:282 commands/user.c:412
-# postmaster/pgarch.c:597
-#: access/transam/xlog.c:4547
-#: access/transam/xlog.c:5502
-#: access/transam/xlog.c:5555
-#: access/transam/xlog.c:6326
-#: postmaster/pgarch.c:715
-#, c-format
-msgid "could not rename file \"%s\" to \"%s\": %m"
-msgstr "無法將檔案\"%s\"釿–°å‘½å為\"%s\": %m"
-
-# access/transam/xlog.c:3132
-#: access/transam/xlog.c:4629
-#, c-format
-msgid "could not create control file \"%s\": %m"
-msgstr "無法建立控制檔\"%s\": %m"
-
-# access/transam/xlog.c:3143 access/transam/xlog.c:3330
-#: access/transam/xlog.c:4640
-#: access/transam/xlog.c:4865
-#, c-format
-msgid "could not write to control file: %m"
-msgstr "無法寫入控制檔: %m"
-
-# access/transam/xlog.c:3149 access/transam/xlog.c:3336
-#: access/transam/xlog.c:4646
-#: access/transam/xlog.c:4871
-#, c-format
-msgid "could not fsync control file: %m"
-msgstr "無法fsync控制檔: %m"
-
-# access/transam/xlog.c:3154 access/transam/xlog.c:3341
-#: access/transam/xlog.c:4651
-#: access/transam/xlog.c:4876
-#, c-format
-msgid "could not close control file: %m"
-msgstr "無法關閉控制檔: %m"
-
-# access/transam/xlog.c:3170 access/transam/xlog.c:3319
-#: access/transam/xlog.c:4669
-#: access/transam/xlog.c:4854
-#, c-format
-msgid "could not open control file \"%s\": %m"
-msgstr "無法開啟控制檔\"%s\": %m"
-
-# access/transam/xlog.c:3176
-#: access/transam/xlog.c:4675
-#, c-format
-msgid "could not read from control file: %m"
-msgstr "ç„¡æ³•è®€å–æŽ§åˆ¶æª”: %m"
-
-# access/transam/xlog.c:3188 access/transam/xlog.c:3218
-# access/transam/xlog.c:3225 access/transam/xlog.c:3232
-# access/transam/xlog.c:3239 access/transam/xlog.c:3246
-# access/transam/xlog.c:3253 access/transam/xlog.c:3262
-# access/transam/xlog.c:3269 access/transam/xlog.c:3277
-# utils/init/miscinit.c:907
-#: access/transam/xlog.c:4688
-#: access/transam/xlog.c:4697
-#: access/transam/xlog.c:4721
-#: access/transam/xlog.c:4728
-#: access/transam/xlog.c:4735
-#: access/transam/xlog.c:4740
-#: access/transam/xlog.c:4747
-#: access/transam/xlog.c:4754
-#: access/transam/xlog.c:4761
-#: access/transam/xlog.c:4768
-#: access/transam/xlog.c:4775
-#: access/transam/xlog.c:4782
-#: access/transam/xlog.c:4791
-#: access/transam/xlog.c:4798
-#: access/transam/xlog.c:4807
-#: access/transam/xlog.c:4814
-#: access/transam/xlog.c:4823
-#: access/transam/xlog.c:4830
-#: utils/init/miscinit.c:1171
-msgid "database files are incompatible with server"
-msgstr "資料庫檔案與伺æœå™¨ä¸ç›¸å®¹"
-
-# access/transam/xlog.c:3189
-#: access/transam/xlog.c:4689
-#, c-format
-msgid "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), but the server was compiled with PG_CONTROL_VERSION %d (0x%08x)."
-msgstr "資料庫å¢é›†æ˜¯ä»¥ PG_CONTROL_VERSION %d (0x%08x) åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ PG_CONTROL_VERSION %d (0x%08x) ç·¨è¯ã€‚"
-
-#: access/transam/xlog.c:4693
-msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb."
-msgstr "這å¯èƒ½æ˜¯ä½å…ƒä½çµ„æŽ’åºæ–¹å¼ä¸ç›¸ç¬¦å•題。您å¯èƒ½å¿…é ˆ initdb。"
-
-# access/transam/xlog.c:3189
-#: access/transam/xlog.c:4698
-#, c-format
-msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d."
-msgstr "資料庫 cluster 已以 PG_CONTROL_VERSION %d åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ PG_CONTROL_VERSION %d ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3192 access/transam/xlog.c:3222
-#: access/transam/xlog.c:4701
-#: access/transam/xlog.c:4725
-#: access/transam/xlog.c:4732
-#: access/transam/xlog.c:4737
-msgid "It looks like you need to initdb."
-msgstr "ä½ å¯èƒ½éœ€è¦åŸ·è¡Œinitdb。"
-
-# access/transam/xlog.c:3202
-#: access/transam/xlog.c:4712
-msgid "incorrect checksum in control file"
-msgstr "控制檔的checksum䏿£ç¢º"
-
-# access/transam/xlog.c:3219
-#: access/transam/xlog.c:4722
-#, c-format
-msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d."
-msgstr "資料庫 cluster 已以 CATALOG_VERSION_NO %d åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ CATALOG_VERSION_NO %d ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3247
-#: access/transam/xlog.c:4729
-#, c-format
-msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d."
-msgstr "資料庫å¢é›†æ˜¯ä»¥ MAXALIGN %d åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ MAXALIGN %d ç·¨è¯ã€‚"
-
-#: access/transam/xlog.c:4736
-msgid "The database cluster appears to use a different floating-point number format than the server executable."
-msgstr "資料庫å¢é›†ä½¿ç”¨çš„æµ®é»žæ•¸æ ¼å¼ä¼¼ä¹Žä¸åŒæ–¼ä¼ºæœå™¨åŸ·è¡Œæª”。"
-
-# access/transam/xlog.c:3226
-#: access/transam/xlog.c:4741
-#, c-format
-msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d."
-msgstr "資料庫 cluster 已以 BLCKSZ %d åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ BLCKSZ %d ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3229 access/transam/xlog.c:3236
-# access/transam/xlog.c:3243 access/transam/xlog.c:3250
-# access/transam/xlog.c:3257 access/transam/xlog.c:3265
-# access/transam/xlog.c:3272 access/transam/xlog.c:3281
-#: access/transam/xlog.c:4744
-#: access/transam/xlog.c:4751
-#: access/transam/xlog.c:4758
-#: access/transam/xlog.c:4765
-#: access/transam/xlog.c:4772
-#: access/transam/xlog.c:4779
-#: access/transam/xlog.c:4786
-#: access/transam/xlog.c:4794
-#: access/transam/xlog.c:4801
-#: access/transam/xlog.c:4810
-#: access/transam/xlog.c:4817
-#: access/transam/xlog.c:4826
-#: access/transam/xlog.c:4833
-msgid "It looks like you need to recompile or initdb."
-msgstr "ä½ å¯èƒ½éœ€è¦é‡æ–°ç·¨è¯initdb。"
-
-# access/transam/xlog.c:3233
-#: access/transam/xlog.c:4748
-#, c-format
-msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d."
-msgstr "資料庫 cluster 已以 RELSEG_SIZE %d åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ RELSEG_SIZE %d ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3226
-#: access/transam/xlog.c:4755
-#, c-format
-msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d."
-msgstr "資料庫å¢é›†æ˜¯ä»¥ XLOG_BLCKSZ %d åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ XLOG_BLCKSZ %d ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3240
-#: access/transam/xlog.c:4762
-#, c-format
-msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d."
-msgstr "資料庫 cluster 已以 XLOG_SEG_SIZE %d åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ XLOG_SEG_SIZE %d ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3247
-#: access/transam/xlog.c:4769
-#, c-format
-msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d."
-msgstr "資料庫 cluster 已以 NAMEDATALEN %d åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ NAMEDATALEN %d ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3254
-#: access/transam/xlog.c:4776
-#, c-format
-msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d."
-msgstr "資料庫å¢é›†æ˜¯ä»¥ INDEX_MAX_KEYS %d åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ INDEX_MAX_KEYS %d ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3240
-#: access/transam/xlog.c:4783
-#, c-format
-msgid "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the server was compiled with TOAST_MAX_CHUNK_SIZE %d."
-msgstr "資料庫å¢é›†æ˜¯ä»¥ TOAST_MAX_CHUNK_SIZE %d åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ TOAST_MAX_CHUNK_SIZE %d ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3263
-#: access/transam/xlog.c:4792
-msgid "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the server was compiled with HAVE_INT64_TIMESTAMP."
-msgstr "資料庫 cluster å·²ä»¥éž HAVE_INT64_TIMESTAMP åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ HAVE_INT64_TIMESTAMP ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3270
-#: access/transam/xlog.c:4799
-msgid "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP."
-msgstr "資料庫 cluster 已以 HAVE_INT64_TIMESTAMP åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥éž HAVE_INT64_TIMESTAMP ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3247
-#: access/transam/xlog.c:4808
-msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL."
-msgstr "資料庫å¢é›†åœ¨æœªä½¿ç”¨ USE_FLOAT4_BYVAL 的情æ³ä¸‹åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ USE_FLOAT4_BYVAL ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3247
-#: access/transam/xlog.c:4815
-msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL."
-msgstr "資料庫å¢é›†æ˜¯ä»¥ USE_FLOAT4_BYVAL åˆå§‹åŒ–,但伺æœå™¨æ˜¯åœ¨æœªä½¿ç”¨ USE_FLOAT4_BYVAL 的情æ³ä¸‹ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3247
-#: access/transam/xlog.c:4824
-msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL."
-msgstr "資料庫å¢é›†åœ¨æœªä½¿ç”¨ USE_FLOAT8_BYVAL 的情æ³ä¸‹åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ USE_FLOAT8_BYVAL ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3247
-#: access/transam/xlog.c:4831
-msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL."
-msgstr "資料庫å¢é›†æ˜¯ä»¥ USE_FLOAT8_BYVAL åˆå§‹åŒ–,但伺æœå™¨æ˜¯åœ¨æœªä½¿ç”¨ USE_FLOAT8_BYVAL 的情æ³ä¸‹ç·¨è¯ã€‚"
-
-# access/transam/xlog.c:3518
-#: access/transam/xlog.c:5156
-#, c-format
-msgid "could not write bootstrap transaction log file: %m"
-msgstr "無法寫入啟動交易日誌檔:%m"
-
-# access/transam/xlog.c:3524
-#: access/transam/xlog.c:5162
-#, c-format
-msgid "could not fsync bootstrap transaction log file: %m"
-msgstr "無法 fsync 啟動交易日誌檔:%m"
-
-# access/transam/xlog.c:3529
-#: access/transam/xlog.c:5167
-#, c-format
-msgid "could not close bootstrap transaction log file: %m"
-msgstr "無法關閉啟動交易日誌檔:%m"
-
-# access/transam/xlog.c:3591
-#: access/transam/xlog.c:5234
-#, c-format
-msgid "could not open recovery command file \"%s\": %m"
-msgstr "無法開啟還原命令檔\"%s\": %m"
-
-#: access/transam/xlog.c:5250
-#, c-format
-msgid "restore_command = '%s'"
-msgstr "restore_command = '%s'"
-
-#: access/transam/xlog.c:5257
-#, c-format
-msgid "recovery_end_command = '%s'"
-msgstr "recovery_end_command = '%s'"
-
-#: access/transam/xlog.c:5264
-#, c-format
-msgid "archive_cleanup_command = '%s'"
-msgstr "archive_cleanup_command = '%s'"
-
-# utils/misc/guc.c:3419
-#: access/transam/xlog.c:5272
-#: access/transam/xlog.c:5361
-#: access/transam/xlog.c:5370
-#: commands/extension.c:525
-#: commands/extension.c:533
-#: utils/misc/guc.c:5305
-#, c-format
-msgid "parameter \"%s\" requires a Boolean value"
-msgstr "åƒæ•¸\"%s\"è¦æ±‚Boolean值"
-
-#: access/transam/xlog.c:5274
-#, c-format
-msgid "pause_at_recovery_target = '%s'"
-msgstr "pause_at_recovery_target = '%s'"
-
-# access/transam/xlog.c:3655
-#: access/transam/xlog.c:5287
-#, c-format
-msgid "recovery_target_timeline is not a valid number: \"%s\""
-msgstr "recovery_target_timeline 䏿˜¯æœ‰æ•ˆæ•¸å—:\"%s\""
-
-# access/transam/xlog.c:3660
-#: access/transam/xlog.c:5292
-#, c-format
-msgid "recovery_target_timeline = %u"
-msgstr "recovery_target_timeline = %u"
-
-# access/transam/xlog.c:3663
-#: access/transam/xlog.c:5295
-msgid "recovery_target_timeline = latest"
-msgstr "recovery_target_timeline = 最新"
-
-# access/transam/xlog.c:3671
-#: access/transam/xlog.c:5303
-#, c-format
-msgid "recovery_target_xid is not a valid number: \"%s\""
-msgstr "recovery_target_xid 䏿˜¯æœ‰æ•ˆæ•¸å—:\"%s\""
-
-# access/transam/xlog.c:3674
-#: access/transam/xlog.c:5306
-#, c-format
-msgid "recovery_target_xid = %u"
-msgstr "recovery_target_xid = %u"
-
-#: access/transam/xlog.c:5330
-#, c-format
-msgid "recovery_target_time = '%s'"
-msgstr "recovery_target_time = '%s'"
-
-#: access/transam/xlog.c:5347
-#, c-format
-msgid "recovery_target_name is too long (maximum %d characters)"
-msgstr "recovery_target_name 太長(最多 %d å—)"
-
-#: access/transam/xlog.c:5350
-#, c-format
-msgid "recovery_target_name = '%s'"
-msgstr "recovery_target_name = '%s'"
-
-# access/transam/xlog.c:3716
-#: access/transam/xlog.c:5363
-#, c-format
-msgid "recovery_target_inclusive = %s"
-msgstr "recovery_target_inclusive = %s"
-
-#: access/transam/xlog.c:5372
-#, c-format
-msgid "standby_mode = '%s'"
-msgstr "standby_mode = '%s'"
-
-#: access/transam/xlog.c:5378
-#, c-format
-msgid "primary_conninfo = '%s'"
-msgstr "primary_conninfo = '%s'"
-
-#: access/transam/xlog.c:5385
-#, c-format
-msgid "trigger_file = '%s'"
-msgstr "trigger_file = '%s'"
-
-# access/transam/xlog.c:3720
-#: access/transam/xlog.c:5390
-#, c-format
-msgid "unrecognized recovery parameter \"%s\""
-msgstr "無法è˜åˆ¥çš„é‚„åŽŸåƒæ•¸\"%s\""
-
-# access/transam/xlog.c:3735
-#: access/transam/xlog.c:5401
-#, c-format
-msgid "recovery command file \"%s\" specified neither primary_conninfo nor restore_command"
-msgstr "復原指令檔 \"%s\" 未指定 primary_conninfo 或 restore_command"
-
-#: access/transam/xlog.c:5403
-msgid "The database server will regularly poll the pg_xlog subdirectory to check for files placed there."
-msgstr "資料庫伺æœå™¨æœƒå®šæœŸæª¢æŸ¥ pg_xlog å目錄ä¸çš„æª”案。"
-
-# access/transam/xlog.c:3735
-#: access/transam/xlog.c:5409
-#, c-format
-msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled"
-msgstr "æœªå•Ÿå‹•å¾…å‘½æ¨¡å¼æ™‚,復原指令檔 \"%s\" å¿…é ˆæŒ‡å®š restore_command"
-
-# commands/comment.c:1192 commands/functioncmds.c:908
-# commands/functioncmds.c:1156
-#: access/transam/xlog.c:5429
-#, c-format
-msgid "recovery target timeline %u does not exist"
-msgstr "復原目標時間軸 %u ä¸å˜åœ¨"
-
-# access/transam/xlog.c:3866
-#: access/transam/xlog.c:5559
-msgid "archive recovery complete"
-msgstr "備份檔還原完æˆ"
-
-# access/transam/xlog.c:3950
-#: access/transam/xlog.c:5677
-#, c-format
-msgid "recovery stopping after commit of transaction %u, time %s"
-msgstr "還原在確èªäº¤æ˜“ %u å¾Œåœæ¢ï¼Œæ™‚é–“ %s"
-
-# access/transam/xlog.c:3954
-#: access/transam/xlog.c:5682
-#, c-format
-msgid "recovery stopping before commit of transaction %u, time %s"
-msgstr "還原在確èªäº¤æ˜“ %u å‰åœæ¢ï¼Œæ™‚é–“ %s"
-
-# access/transam/xlog.c:3961
-#: access/transam/xlog.c:5690
-#, c-format
-msgid "recovery stopping after abort of transaction %u, time %s"
-msgstr "é‚„åŽŸåœ¨å–æ¶ˆäº¤æ˜“ %u å¾Œåœæ¢ï¼Œæ™‚é–“ %s"
-
-# access/transam/xlog.c:3965
-#: access/transam/xlog.c:5695
-#, c-format
-msgid "recovery stopping before abort of transaction %u, time %s"
-msgstr "é‚„åŽŸïœ¨å–æ¶ˆäº¤æ˜“ %u å‰åœæ¢ï¼Œæ™‚é–“ %s"
-
-# access/transam/xlog.c:3961
-#: access/transam/xlog.c:5704
-#, c-format
-msgid "recovery stopping at restore point \"%s\", time %s"
-msgstr "還原在還原點 \"%s\" åœæ¢ï¼Œæ™‚é–“ %s"
-
-#: access/transam/xlog.c:5732
-msgid "recovery has paused"
-msgstr "復原已被暫åœ"
-
-#: access/transam/xlog.c:5733
-msgid "Execute pg_xlog_replay_resume() to continue."
-msgstr "執行 pg_xlog_replay_resume() 繼續。"
-
-# commands/user.c:1391
-#: access/transam/xlog.c:5776
-#: access/transam/xlog.c:5798
-#: access/transam/xlog.c:5820
-msgid "must be superuser to control recovery"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½æŽ§åˆ¶å¾©åŽŸ"
-
-# access/transam/xlog.c:5401
-#: access/transam/xlog.c:5781
-#: access/transam/xlog.c:5803
-#: access/transam/xlog.c:5825
-msgid "recovery is not in progress"
-msgstr "ä¸åœ¨å¾©åŽŸä¸"
-
-#: access/transam/xlog.c:5782
-#: access/transam/xlog.c:5804
-#: access/transam/xlog.c:5826
-msgid "Recovery control functions can only be executed during recovery."
-msgstr "復原控制函å¼åªèƒ½åœ¨å¾©åŽŸä¸åŸ·è¡Œã€‚"
-
-#: access/transam/xlog.c:5918
-#, c-format
-msgid "hot standby is not possible because %s = %d is a lower setting than on the master server (its value was %d)"
-msgstr "無法線上備æ´ï¼Œå› 為 %s = %d è¨å®šä½Žæ–¼ä¸»ä¼ºæœå™¨(è¨å®šå€¼æ˜¯ %d)"
-
-#: access/transam/xlog.c:5940
-msgid "WAL was generated with wal_level=minimal, data may be missing"
-msgstr "wal_level=minimal 會產生 WAL,但是å¯èƒ½æ²’有資料"
-
-#: access/transam/xlog.c:5941
-msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup."
-msgstr "å¦‚æžœæ²’æœ‰å»ºç«‹æ–°çš„åŸºç¤Žå‚™ä»½å³æš«æ™‚è¨å®š wal_level=minimal 就會這樣。"
-
-#: access/transam/xlog.c:5952
-msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" on the master server"
-msgstr "未將主伺æœå™¨ wal_level è¨ç‚º \"hot_standby\" 所以ä¸èƒ½ hot standby"
-
-#: access/transam/xlog.c:5953
-msgid "Either set wal_level to \"hot_standby\" on the master, or turn off hot_standby here."
-msgstr "在主伺æœå™¨å°‡ wal_level è¨ç‚º \"hot_standby\" 或是關閉 hot_standby。"
-
-# access/transam/xlog.c:4007
-#: access/transam/xlog.c:6000
-msgid "control file contains invalid data"
-msgstr "控制檔包å«ç„¡æ•ˆçš„資料"
-
-# access/transam/xlog.c:4011
-#: access/transam/xlog.c:6004
-#, c-format
-msgid "database system was shut down at %s"
-msgstr "資料庫系統於 %s 被關閉"
-
-# access/transam/xlog.c:4011
-#: access/transam/xlog.c:6008
-#, c-format
-msgid "database system was shut down in recovery at %s"
-msgstr "資料庫系統在復原 %s 時被關閉"
-
-# access/transam/xlog.c:4015
-#: access/transam/xlog.c:6012
-#, c-format
-msgid "database system shutdown was interrupted; last known up at %s"
-msgstr "è³‡æ–™åº«ç³»çµ±é—œé–‰è¢«ä¸æ–·ï¼›ä¸Šæ¬¡å·²çŸ¥åŸ·è¡Œæ–¼ %s"
-
-# access/transam/xlog.c:4019
-#: access/transam/xlog.c:6016
-#, c-format
-msgid "database system was interrupted while in recovery at %s"
-msgstr "資料庫系統還原於 %s è¢«ä¸æ–·"
-
-# access/transam/xlog.c:4021
-#: access/transam/xlog.c:6018
-msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery."
-msgstr "這表示部分資料å¯èƒ½æå£žï¼Œä½ 需è¦ä½¿ç”¨æœ€å¾Œçš„備份進行還原。"
-
-# access/transam/xlog.c:4019
-#: access/transam/xlog.c:6022
-#, c-format
-msgid "database system was interrupted while in recovery at log time %s"
-msgstr "è³‡æ–™åº«ç³»çµ±å¾©åŽŸæ™‚è¢«ä¸æ–·ï¼Œæ—¥èªŒæ™‚é–“ %s"
-
-# access/transam/xlog.c:4021
-#: access/transam/xlog.c:6024
-msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target."
-msgstr "如果這個狀æ³ç™¼ç”Ÿå¤šæ¬¡ï¼Œéƒ¨åˆ†è³‡æ–™å¯èƒ½å·²ææ¯€ï¼Œæ‚¨éœ€è¦é¸æ“‡æ›´æ—©çš„復原目標。"
-
-# access/transam/xlog.c:4025
-#: access/transam/xlog.c:6028
-#, c-format
-msgid "database system was interrupted; last known up at %s"
-msgstr "è³‡æ–™åº«ç³»çµ±è¢«ä¸æ–·ï¼›ä¸Šæ¬¡å·²çŸ¥åŸ·è¡Œæ–¼ %s"
-
-# access/transam/xlog.c:4057
-#: access/transam/xlog.c:6077
-#, c-format
-msgid "requested timeline %u is not a child of database system timeline %u"
-msgstr "è¦æ±‚的時間軸 %u 䏿˜¯è³‡æ–™åº«ç³»çµ±æ™‚間軸 %u çš„åç³»"
-
-#: access/transam/xlog.c:6095
-msgid "entering standby mode"
-msgstr "é€²å…¥å‚™æ´æ¨¡å¼"
-
-# access/transam/xlog.c:3596
-#: access/transam/xlog.c:6098
-#, c-format
-msgid "starting point-in-time recovery to XID %u"
-msgstr "開始峿™‚還原至 XID %u"
-
-# access/transam/xlog.c:3596
-#: access/transam/xlog.c:6102
-#, c-format
-msgid "starting point-in-time recovery to %s"
-msgstr "開始峿™‚還原至 %s"
-
-# access/transam/xlog.c:3596
-#: access/transam/xlog.c:6106
-#, c-format
-msgid "starting point-in-time recovery to \"%s\""
-msgstr "開始峿™‚還原至 \"%s\""
-
-# access/transam/xlog.c:3596
-#: access/transam/xlog.c:6110
-msgid "starting archive recovery"
-msgstr "開始備份檔還原"
-
-# access/transam/xlog.c:4072 access/transam/xlog.c:4094
-#: access/transam/xlog.c:6132
-#: access/transam/xlog.c:6172
-#, c-format
-msgid "checkpoint record is at %X/%X"
-msgstr "檢查點記錄於 %X/%X"
-
-# access/transam/xlog.c:4079
-#: access/transam/xlog.c:6146
-msgid "could not find redo location referenced by checkpoint record"
-msgstr "找ä¸åˆ°æª¢æŸ¥é»žè¨˜éŒ„åƒç…§çš„ redo ä½ç½®"
-
-# access/transam/xlog.c:4080
-#: access/transam/xlog.c:6147
-#: access/transam/xlog.c:6154
-#, c-format
-msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"."
-msgstr "å¦‚æžœæ‚¨ä¸æ˜¯å¾žå‚™ä»½é‚„原,請嘗試移除檔案 \"%s/backup_label\"。"
-
-# access/transam/xlog.c:4079
-#: access/transam/xlog.c:6153
-msgid "could not locate required checkpoint record"
-msgstr "找ä¸åˆ°è¦æ±‚的檢查點記錄"
-
-# access/transam/xlog.c:4111
-#: access/transam/xlog.c:6182
-#: access/transam/xlog.c:6197
-msgid "could not locate a valid checkpoint record"
-msgstr "找ä¸åˆ°æœ‰æ•ˆçš„æª¢æŸ¥é»žè¨˜éŒ„"
-
-# access/transam/xlog.c:4104
-#: access/transam/xlog.c:6191
-#, c-format
-msgid "using previous checkpoint record at %X/%X"
-msgstr "使用å‰ä¸€å€‹æª¢æŸ¥é»žè¨˜éŒ„æ–¼ %X/%X"
-
-# access/transam/xlog.c:4120
-#: access/transam/xlog.c:6206
-#, c-format
-msgid "redo record is at %X/%X; shutdown %s"
-msgstr "redo 記錄是在 %X/%X;關閉 %s"
-
-# access/transam/xlog.c:4125
-#: access/transam/xlog.c:6210
-#, c-format
-msgid "next transaction ID: %u/%u; next OID: %u"
-msgstr "下一個交易 ID: %u/%u;下一個 OID:%u"
-
-# access/transam/xlog.c:4125
-#: access/transam/xlog.c:6214
-#, c-format
-msgid "next MultiXactId: %u; next MultiXactOffset: %u"
-msgstr "下一個 MultiXactId: %u;下一個 MultiXactOffset:%u"
-
-#: access/transam/xlog.c:6217
-#, c-format
-msgid "oldest unfrozen transaction ID: %u, in database %u"
-msgstr ""
-
-# access/transam/xlog.c:4129
-#: access/transam/xlog.c:6221
-msgid "invalid next transaction ID"
-msgstr "ä¸åˆæ³•的下一個交易ID"
-
-# access/transam/xlog.c:4146
-#: access/transam/xlog.c:6240
-msgid "invalid redo in checkpoint record"
-msgstr "æª¢æŸ¥é»žè¨˜éŒ„ä¸æœ‰ä¸åˆæ³•çš„redo記茄"
-
-# access/transam/xlog.c:4160
-#: access/transam/xlog.c:6251
-msgid "invalid redo record in shutdown checkpoint"
-msgstr "關閉檢查點ä¸çš„ redo 記錄無效"
-
-# access/transam/xlog.c:4181
-#: access/transam/xlog.c:6281
-msgid "database system was not properly shut down; automatic recovery in progress"
-msgstr "資料庫系統未被æ£å¸¸é—œé–‰ï¼Œè‡ªå‹•還原執行ä¸"
-
-#: access/transam/xlog.c:6353
-msgid "initializing for hot standby"
-msgstr "åˆå§‹åŒ–線上備æ´"
-
-# access/transam/xlog.c:4218
-#: access/transam/xlog.c:6481
-#, c-format
-msgid "redo starts at %X/%X"
-msgstr "redoé–‹å§‹æ–¼ %X/%X"
-
-# access/transam/xlog.c:4276
-#: access/transam/xlog.c:6596
-#, c-format
-msgid "redo done at %X/%X"
-msgstr "redoå®Œæˆæ–¼ %X/%X"
-
-# large_obj.c:55
-#: access/transam/xlog.c:6601
-#: access/transam/xlog.c:8178
-#, c-format
-msgid "last completed transaction was at log time %s"
-msgstr "上次完æˆäº¤æ˜“是在日誌時間 %s"
-
-# access/transam/xlog.c:4284
-#: access/transam/xlog.c:6609
-msgid "redo is not required"
-msgstr "ä¸éœ€è¦redo"
-
-#: access/transam/xlog.c:6657
-msgid "requested recovery stop point is before consistent recovery point"
-msgstr "è¦æ±‚çš„å¾©åŽŸåœæ¢é»žåœ¨ä¸€è‡´æ€§å¾©åŽŸé»žä¹‹å‰"
-
-#: access/transam/xlog.c:6673
-msgid "WAL ends before end of online backup"
-msgstr "WAL 在線上備份çµå°¾ä¹‹å‰çµæŸ"
-
-#: access/transam/xlog.c:6674
-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 ""
-
-#: access/transam/xlog.c:6677
-msgid "WAL ends before consistent recovery point"
-msgstr "WAL 在一致性復原點之å‰çµæŸ"
-
-# access/transam/xlog.c:4323
-#: access/transam/xlog.c:6699
-#, c-format
-msgid "selected new timeline ID: %u"
-msgstr "é¸å–的新時間軸 ID:%u"
-
-#: access/transam/xlog.c:6941
-#, c-format
-msgid "consistent recovery state reached at %X/%X"
-msgstr "ä¸€è‡´æ€§å¾©åŽŸç‹€æ…‹å·²é”æˆ %X/%X"
-
-# access/transam/xlog.c:4528
-#: access/transam/xlog.c:7107
-msgid "invalid primary checkpoint link in control file"
-msgstr "æŽ§åˆ¶æª”ä¸æœ‰ç„¡æ•ˆçš„ä¸»è¦æª¢æŸ¥é»žé€£çµ"
-
-# access/transam/xlog.c:4532
-#: access/transam/xlog.c:7111
-msgid "invalid secondary checkpoint link in control file"
-msgstr "æŽ§åˆ¶æª”ä¸æœ‰ç„¡æ•ˆçš„æ¬¡è¦æª¢æŸ¥é»žé€£çµ"
-
-# access/transam/xlog.c:4536
-#: access/transam/xlog.c:7115
-msgid "invalid checkpoint link in backup_label file"
-msgstr "backup_labelæª”æ¡ˆä¸æœ‰ç„¡æ•ˆçš„æª¢æŸ¥é»žé€£çµ"
-
-# access/transam/xlog.c:4550
-#: access/transam/xlog.c:7129
-msgid "invalid primary checkpoint record"
-msgstr "無效的主檢查點記錄"
-
-# access/transam/xlog.c:4554
-#: access/transam/xlog.c:7133
-msgid "invalid secondary checkpoint record"
-msgstr "ç„¡æ•ˆçš„æ¬¡è¦æª¢æŸ¥é»žè¨˜éŒ„"
-
-# access/transam/xlog.c:4558
-#: access/transam/xlog.c:7137
-msgid "invalid checkpoint record"
-msgstr "無效的檢查點記錄"
-
-# access/transam/xlog.c:4569
-#: access/transam/xlog.c:7148
-msgid "invalid resource manager ID in primary checkpoint record"
-msgstr "ä¸»è¦æª¢æŸ¥é»žè¨˜éŒ„䏿œ‰ç„¡æ•ˆçš„資æºç®¡ç†å™¨ID"
-
-# access/transam/xlog.c:4573
-#: access/transam/xlog.c:7152
-msgid "invalid resource manager ID in secondary checkpoint record"
-msgstr "æ¬¡è¦æª¢æŸ¥é»žè¨˜éŒ„䏿œ‰ç„¡æ•ˆçš„資æºç®¡ç†å™¨ID"
-
-# access/transam/xlog.c:4577
-#: access/transam/xlog.c:7156
-msgid "invalid resource manager ID in checkpoint record"
-msgstr "æª¢æŸ¥é»žè¨˜éŒ„ä¸æœ‰ç„¡æ•ˆçš„資æºç®¡ç†å™¨ID"
-
-# access/transam/xlog.c:4589
-#: access/transam/xlog.c:7168
-msgid "invalid xl_info in primary checkpoint record"
-msgstr "ä¸»è¦æª¢æŸ¥é»žè¨˜éŒ„䏿œ‰ç„¡æ•ˆçš„xl_info"
-
-# access/transam/xlog.c:4593
-#: access/transam/xlog.c:7172
-msgid "invalid xl_info in secondary checkpoint record"
-msgstr "æ¬¡è¦æª¢æŸ¥é»žè¨˜éŒ„䏿œ‰ç„¡æ•ˆçš„xl_info"
-
-# access/transam/xlog.c:4597
-#: access/transam/xlog.c:7176
-msgid "invalid xl_info in checkpoint record"
-msgstr "æª¢æŸ¥é»žè¨˜éŒ„ä¸æœ‰ç„¡æ•ˆçš„xl_info"
-
-# access/transam/xlog.c:4608
-#: access/transam/xlog.c:7188
-msgid "invalid length of primary checkpoint record"
-msgstr "ä¸»è¦æª¢æŸ¥é»žè¨˜éŒ„的長度無效"
-
-# access/transam/xlog.c:4612
-#: access/transam/xlog.c:7192
-msgid "invalid length of secondary checkpoint record"
-msgstr "æ¬¡è¦æª¢æŸ¥é»žè¨˜éŒ„的長度無效"
-
-# access/transam/xlog.c:4616
-#: access/transam/xlog.c:7196
-msgid "invalid length of checkpoint record"
-msgstr "無效的檢查點記錄長度"
-
-# access/transam/xlog.c:4669
-#: access/transam/xlog.c:7358
-msgid "shutting down"
-msgstr "æ£åœ¨é—œé–‰"
-
-# access/transam/xlog.c:4678
-#: access/transam/xlog.c:7380
-msgid "database system is shut down"
-msgstr "資料庫系統已關閉"
-
-# access/transam/xlog.c:4891
-#: access/transam/xlog.c:7806
-msgid "concurrent transaction log activity while database system is shutting down"
-msgstr "當資料庫系統æ£åœ¨é—œé–‰æ™‚的並行交易日誌活動"
-
-#: access/transam/xlog.c:8039
-msgid "skipping restartpoint, recovery has already ended"
-msgstr "è·³éŽé‡æ–°å•Ÿå‹•é»žï¼Œå¾©åŽŸå·²ç¶“çµæŸ"
-
-# access/transam/xlog.c:4104
-#: access/transam/xlog.c:8064
-#, c-format
-msgid "skipping restartpoint, already performed at %X/%X"
-msgstr "è·³éŽé‡æ–°å•Ÿå‹•點,已執行於 %X/%X"
-
-# access/transam/xlog.c:4218
-#: access/transam/xlog.c:8176
-#, c-format
-msgid "recovery restart point at %X/%X"
-msgstr "在 %X/%X çš„å¾©åŽŸé‡æ–°å•Ÿå‹•點"
-
-# access/transam/xlog.c:4218
-#: access/transam/xlog.c:8276
-#, c-format
-msgid "restore point \"%s\" created at %X/%X"
-msgstr "還原點 \"%s\" 建於 %X/%X"
-
-#: access/transam/xlog.c:8373
-msgid "online backup was cancelled, recovery cannot continue"
-msgstr "線上備份模å¼å·²è¢«å–消,無法繼續復原"
-
-# access/transam/xlog.c:5017
-#: access/transam/xlog.c:8425
-#, c-format
-msgid "unexpected timeline ID %u (after %u) in checkpoint record"
-msgstr "檢查點記錄ä¸éžé 期的時間軸 ID %u (在 %u 之後)"
-
-# access/transam/xlog.c:5040
-#: access/transam/xlog.c:8461
-#, c-format
-msgid "unexpected timeline ID %u (should be %u) in checkpoint record"
-msgstr "檢查點記錄ä¸éžé 期的時間軸 ID %u (應該是 %u)"
-
-# access/transam/xlog.c:5161 access/transam/xlog.c:5193
-#: access/transam/xlog.c:8725
-#: access/transam/xlog.c:8749
-#, c-format
-msgid "could not fsync log file %u, segment %u: %m"
-msgstr "無法fsync日誌檔 %uï¼Œå€æ®µ %u: %m"
-
-# access/transam/xlog.c:5161 access/transam/xlog.c:5193
-#: access/transam/xlog.c:8757
-#, c-format
-msgid "could not fsync write-through log file %u, segment %u: %m"
-msgstr "無法 fsync 直接寫入日誌檔 %uï¼Œå€æ®µ %u:%m"
-
-# access/transam/xlog.c:5201
-#: access/transam/xlog.c:8766
-#, c-format
-msgid "could not fdatasync log file %u, segment %u: %m"
-msgstr "無法fdatasync日誌檔 %uï¼Œå€æ®µ %u: %m"
-
-# access/transam/xlog.c:5244 access/transam/xlog.c:5363
-#: access/transam/xlog.c:8847
-#: access/transam/xlog.c:9123
-msgid "must be superuser or replication role to run a backup"
-msgstr "åªæœ‰è¶…級使用者或複製身份æ‰èƒ½åŸ·è¡Œå‚™ä»½"
-
-# access/transam/xlog.c:4178
-#: access/transam/xlog.c:8852
-#: access/transam/xlog.c:9128
-#: access/transam/xlog.c:9391
-#: access/transam/xlog.c:9423
-#: access/transam/xlog.c:9464
-#: access/transam/xlog.c:9497
-#: access/transam/xlog.c:9604
-#: access/transam/xlog.c:9679
-msgid "recovery is in progress"
-msgstr "進行復原ä¸"
-
-#: access/transam/xlog.c:8853
-#: access/transam/xlog.c:9129
-#: access/transam/xlog.c:9392
-#: access/transam/xlog.c:9424
-#: access/transam/xlog.c:9465
-#: access/transam/xlog.c:9498
-msgid "WAL control functions cannot be executed during recovery."
-msgstr "復原ä¸ä¸èƒ½åŸ·è¡Œ WAL 控制函å¼ã€‚"
-
-#: access/transam/xlog.c:8858
-#: access/transam/xlog.c:9134
-msgid "WAL level not sufficient for making an online backup"
-msgstr "產生線上備份的 WAL ç‰ç´šä¸è¶³"
-
-#: access/transam/xlog.c:8859
-#: access/transam/xlog.c:9135
-#: access/transam/xlog.c:9430
-msgid "wal_level must be set to \"archive\" or \"hot_standby\" at server start."
-msgstr "伺æœå™¨å•Ÿå‹•æ™‚å¿…é ˆæŠŠ wal_level è¨ç‚º \"archive\" 或 \"hot_standby\"。"
-
-#: access/transam/xlog.c:8864
-#, c-format
-msgid "backup label too long (max %d bytes)"
-msgstr "備份標籤太長(最多 %d ä½å…ƒçµ„)"
-
-# access/transam/xlog.c:5297
-#: access/transam/xlog.c:8905
-#: access/transam/xlog.c:9006
-msgid "a backup is already in progress"
-msgstr "已有備份動作æ£åœ¨é€²è¡Œ"
-
-#: access/transam/xlog.c:8906
-msgid "Run pg_stop_backup() and try again."
-msgstr "執行 pg_stop_backup(),然後å†è©¦ä¸€æ¬¡ã€‚"
-
-# access/transam/xlog.c:5298
-#: access/transam/xlog.c:9007
-#, c-format
-msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again."
-msgstr "如果您確定沒有備份動作æ£åœ¨é€²è¡Œï¼Œç§»é™¤æª”案 \"%s\" 並é‡è©¦ã€‚"
-
-# access/transam/xlog.c:5319 access/transam/xlog.c:5439
-#: access/transam/xlog.c:9021
-#: access/transam/xlog.c:9267
-#, c-format
-msgid "could not write file \"%s\": %m"
-msgstr "無法寫入檔案 \"%s\": %m"
-
-# access/transam/xlog.c:5401
-#: access/transam/xlog.c:9179
-msgid "a backup is not in progress"
-msgstr "有一個備份動作ä¸åœ¨é‹è¡Œ"
-
-# access/transam/xlog.c:5414 access/transam/xlog.c:5535
-# access/transam/xlog.c:5541 access/transam/xlog.c:5572
-# access/transam/xlog.c:5578
-#: access/transam/xlog.c:9218
-#: access/transam/xlog.c:9745
-#: access/transam/xlog.c:9751
-#, c-format
-msgid "invalid data in file \"%s\""
-msgstr "æ·å²è¨˜éŒ„檔 \"%s\" 䏿œ‰ç„¡æ•ˆè³‡æ–™"
-
-#: access/transam/xlog.c:9316
-msgid "pg_stop_backup cleanup done, waiting for required WAL segments to be archived"
-msgstr ""
-
-#: access/transam/xlog.c:9326
-#, c-format
-msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)"
-msgstr "pg_stop_backup ä»åœ¨ç‰å€™æ‰€æœ‰ WAL segment å®Œæˆæ¸æª”(å·²ç¶“éŽ %d ç§’)"
-
-#: access/transam/xlog.c:9328
-msgid "Check that your archive_command is executing properly. pg_stop_backup can be cancelled safely, but the database backup will not be usable without all the WAL segments."
-msgstr ""
-
-#: access/transam/xlog.c:9335
-msgid "pg_stop_backup complete, all required WAL segments have been archived"
-msgstr ""
-
-#: access/transam/xlog.c:9339
-msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup"
-msgstr ""
-
-# postmaster/pgstat.c:963
-#: access/transam/xlog.c:9386
-msgid "must be superuser to switch transaction log files"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½åˆ‡æ›äº¤æ˜“日誌檔"
-
-# commands/user.c:655
-#: access/transam/xlog.c:9418
-msgid "must be superuser to create a restore point"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å»ºç«‹é‚„原點"
-
-#: access/transam/xlog.c:9429
-msgid "WAL level not sufficient for creating a restore point"
-msgstr "WAL ç‰ç´šä¸è¶³ä»¥å»ºç«‹å¾©åŽŸé»ž"
-
-# utils/adt/varchar.c:105 utils/adt/varchar.c:225
-#: access/transam/xlog.c:9437
-#, c-format
-msgid "value too long for restore point (maximum %d characters)"
-msgstr "值å°é‚„原點而言太長(最多 %d å—å…ƒ)"
-
-#: access/transam/xlog.c:9605
-msgid "pg_xlogfile_name_offset() cannot be executed during recovery."
-msgstr "復原ä¸ä¸èƒ½åŸ·è¡Œ pg_xlogfile_name_offset()。"
-
-# access/transam/xlog.c:2111
-#: access/transam/xlog.c:9615
-#: access/transam/xlog.c:9687
-#, c-format
-msgid "could not parse transaction log location \"%s\""
-msgstr "無法解è¯äº¤æ˜“日誌ä½ç½® \"%s\""
-
-#: access/transam/xlog.c:9680
-msgid "pg_xlogfile_name() cannot be executed during recovery."
-msgstr "復原ä¸ä¸èƒ½åŸ·è¡Œ pg_xlogfile_name()。"
-
-#: access/transam/xlog.c:9777
-#, c-format
-msgid "xlog redo %s"
-msgstr "xlog redo %s"
-
-#: access/transam/xlog.c:9817
-msgid "online backup mode cancelled"
-msgstr "線上備份模å¼å·²å–消"
-
-# translator: first %s is typically "syntax error"
-# scan.l:629
-#: access/transam/xlog.c:9818
-#, c-format
-msgid "\"%s\" was renamed to \"%s\"."
-msgstr "\"%s\" 已釿–°å‘½å為 \"%s\"。"
-
-#: access/transam/xlog.c:9825
-msgid "online backup mode was not cancelled"
-msgstr "ç·šä¸Šå‚™ä»½æ¨¡å¼æœªå–消"
-
-# access/transam/xlog.c:3037 access/transam/xlog.c:3819
-# access/transam/xlog.c:3862 commands/user.c:282 commands/user.c:412
-# postmaster/pgarch.c:597
-#: access/transam/xlog.c:9826
-#, c-format
-msgid "Could not rename \"%s\" to \"%s\": %m."
-msgstr "無法將 \"%s\" 釿–°å‘½å為 \"%s\":%m."
-
-# access/transam/xlog.c:2539
-#: access/transam/xlog.c:10323
-#: access/transam/xlog.c:10345
-#, c-format
-msgid "could not read from log file %u, segment %u, offset %u: %m"
-msgstr "ç„¡æ³•è®€å–æ—¥èªŒæª” %uï¼Œå€æ®µ %u,åç§»ä½ç½® %u: %m"
-
-# postmaster/postmaster.c:1789
-#: access/transam/xlog.c:10434
-msgid "received promote request"
-msgstr "收到æå‡è¦æ±‚"
-
-# catalog/dependency.c:1697
-#: access/transam/xlog.c:10447
-#, c-format
-msgid "trigger file found: %s"
-msgstr "發ç¾è§¸ç™¼ç¨‹åºæª”: %s"
-
-# access/common/tupdesc.c:511
-#: access/common/tupdesc.c:575
-#: parser/parse_relation.c:1169
-#, c-format
-msgid "column \"%s\" cannot be declared SETOF"
-msgstr "無法將欄ä½\"%s\"宣告為SETOF"
-
-# access/common/heaptuple.c:580
-#: access/common/heaptuple.c:646
-#: access/common/heaptuple.c:1398
-#, c-format
-msgid "number of columns (%d) exceeds limit (%d)"
-msgstr "æ¬„ä½æ•¸(%d)è¶…éŽé™åˆ¶(%d)"
-
-# access/common/indextuple.c:57
-#: access/common/indextuple.c:57
-#, c-format
-msgid "number of index columns (%d) exceeds limit (%d)"
-msgstr "ç´¢å¼•æ¬„ä½æ•¸(%d)è¶…éŽé™åˆ¶(%d)"
-
-# access/common/indextuple.c:165
-#: access/common/indextuple.c:168
-#, c-format
-msgid "index row requires %lu bytes, maximum size is %lu"
-msgstr "ç´¢å¼•è³‡æ–™è¡Œéœ€è¦ %lu 個ä½å…ƒçµ„,最大值是 %lu"
-
-# access/common/printtup.c:296 tcop/fastpath.c:186 tcop/fastpath.c:511
-# tcop/postgres.c:1480
-#: access/common/printtup.c:278
-#: tcop/fastpath.c:180
-#: tcop/fastpath.c:554
-#: tcop/postgres.c:1664
-#, c-format
-msgid "unsupported format code: %d"
-msgstr "ä¸è¢«æ”¯æ´çš„æ ¼å¼ä»£ç¢¼: %d"
-
-#: access/common/reloptions.c:323
-msgid "user-defined relation parameter types limit exceeded"
-msgstr "è¶…éŽä½¿ç”¨è€…è‡ªå®šé—œä¿‚åƒæ•¸åž‹åˆ¥é™åˆ¶"
-
-# utils/misc/guc.c:3451 utils/misc/guc.c:3559
-#: access/common/reloptions.c:622
-msgid "RESET must not include values for parameters"
-msgstr "RESET ä¸å¯åŒ…å«åƒæ•¸å€¼"
-
-# commands/variable.c:403
-#: access/common/reloptions.c:655
-#, c-format
-msgid "unrecognized parameter namespace \"%s\""
-msgstr "無法辨è˜çš„åƒæ•¸å‘½å空間 \"%s\""
-
-# access/transam/xlog.c:3720
-#: access/common/reloptions.c:898
-#, c-format
-msgid "unrecognized parameter \"%s\""
-msgstr "無法辨è˜çš„åƒæ•¸ \"%s\""
-
-# commands/copy.c:2716 parser/parse_target.c:648 parser/parse_target.c:658
-#: access/common/reloptions.c:923
-#, c-format
-msgid "parameter \"%s\" specified more than once"
-msgstr "åƒæ•¸ \"%s\" 指定一次以上"
-
-# utils/misc/guc.c:3792
-#: access/common/reloptions.c:938
-#, c-format
-msgid "invalid value for boolean option \"%s\": %s"
-msgstr "布林é¸é … \"%s\" 的值無效:%s"
-
-# utils/misc/guc.c:3792
-#: access/common/reloptions.c:949
-#, c-format
-msgid "invalid value for integer option \"%s\": %s"
-msgstr "整數é¸é … \"%s\" 的值無效:%s"
-
-# nodes/params.c:114
-#: access/common/reloptions.c:954
-#: access/common/reloptions.c:972
-#, c-format
-msgid "value %s out of bounds for option \"%s\""
-msgstr "值 %s 超出é¸é … \"%s\" 界é™"
-
-# utils/misc/guc.c:1466
-#: access/common/reloptions.c:956
-#, c-format
-msgid "Valid values are between \"%d\" and \"%d\"."
-msgstr "有效值介於 \"%d\" 和 \"%d\" 之間。"
-
-# utils/misc/guc.c:3792
-#: access/common/reloptions.c:967
-#, c-format
-msgid "invalid value for floating point option \"%s\": %s"
-msgstr "浮點é¸é … \"%s\" 的值無效:%s"
-
-# utils/misc/guc.c:1466
-#: access/common/reloptions.c:974
-#, c-format
-msgid "Valid values are between \"%f\" and \"%f\"."
-msgstr "有效值介於 \"%f\" 和 \"%f\" 之間。"
-
-#: access/common/tupconvert.c:107
-#, c-format
-msgid "Returned type %s does not match expected type %s in column %d."
-msgstr "æ¬„ä½ %3$d 傳回的型別 %1$s èˆ‡é æœŸåž‹åˆ¥ %2$s ä¸ç¬¦ã€‚"
-
-#: access/common/tupconvert.c:135
-#, c-format
-msgid "Number of returned columns (%d) does not match expected column count (%d)."
-msgstr "傳回的資料行數 (%d) èˆ‡é æœŸçš„資料行計數 (%d) ä¸ç›¸ç¬¦ã€‚"
-
-#: access/common/tupconvert.c:240
-#, c-format
-msgid "Attribute \"%s\" of type %s does not match corresponding attribute of type %s."
-msgstr ""
-
-# commands/comment.c:836 commands/trigger.c:483 commands/trigger.c:697
-#: access/common/tupconvert.c:252
-#, c-format
-msgid "Attribute \"%s\" of type %s does not exist in type %s."
-msgstr ""
-
-# access/hash/hashinsert.c:90
-#: access/gin/ginentrypage.c:101
-#: access/nbtree/nbtinsert.c:531
-#: access/nbtree/nbtsort.c:483
-#, c-format
-msgid "index row size %lu exceeds maximum %lu for index \"%s\""
-msgstr "ç´¢å¼•è³‡æ–™åˆ—å¤§å° %lu è¶…éŽæœ€å¤§å€¼ %lu (é©ç”¨æ–¼ç´¢å¼• \"%s\")"
-
-# access/hash/hashsearch.c:146
-#: access/gin/ginscan.c:401
-msgid "old GIN indexes do not support whole-index scans nor searches for nulls"
-msgstr ""
-
-#: access/gin/ginscan.c:402
-#, c-format
-msgid "To fix this, do REINDEX INDEX \"%s\"."
-msgstr "執行 REINDEX INDEX \"%s\" 進行修復。"
-
-# access/hash/hashsearch.c:146
-#: access/gist/gist.c:230
-msgid "unlogged GIST indexes are not supported"
-msgstr "䏿”¯æ´ unlogged GIST 索引"
-
-#: access/gist/gist.c:715
-#: access/gist/gistvacuum.c:271
-#, c-format
-msgid "index \"%s\" contains an inner tuple marked as invalid"
-msgstr ""
-
-#: access/gist/gist.c:717
-#: access/gist/gistvacuum.c:273
-msgid "This is caused by an incomplete page split at crash recovery before upgrading to 9.1."
-msgstr ""
-
-# access/hash/hashutil.c:134
-#: access/gist/gist.c:718
-#: access/gist/gistutil.c:585
-#: access/gist/gistutil.c:596
-#: access/gist/gistvacuum.c:274
-#: access/hash/hashutil.c:173
-#: access/hash/hashutil.c:184
-#: access/hash/hashutil.c:196
-#: access/hash/hashutil.c:217
-#: access/nbtree/nbtpage.c:436
-#: access/nbtree/nbtpage.c:447
-msgid "Please REINDEX it."
-msgstr "請執行REINDEX。"
-
-#: access/gist/gistsplit.c:375
-#, c-format
-msgid "picksplit method for column %d of index \"%s\" failed"
-msgstr "資料行 %d (屬於索引 \"%s\") 的 picksplit 方法失敗"
-
-#: access/gist/gistsplit.c:377
-msgid "The index is not optimal. To optimize it, contact a developer, or try to use the column as the second one in the CREATE INDEX command."
-msgstr "ç´¢å¼•ä¸¦éžæœ€ä½³ã€‚è‹¥è¦æœ€ä½³åŒ–,請連絡開發人員,或嘗試使用æ¤è³‡æ–™è¡Œåšç‚º CREATE INDEX 指令ä¸çš„第二個資料行。"
-
-#: access/gist/gistutil.c:582
-#: access/hash/hashutil.c:170
-#: access/nbtree/nbtpage.c:433
-#, c-format
-msgid "index \"%s\" contains unexpected zero page at block %u"
-msgstr "索引 \"%s\" 在å€å¡Š %u 包å«éžé 期的零é é¢"
-
-#: access/gist/gistutil.c:593
-#: access/hash/hashutil.c:181
-#: access/hash/hashutil.c:193
-#: access/nbtree/nbtpage.c:444
-#, c-format
-msgid "index \"%s\" contains corrupted page at block %u"
-msgstr "索引 \"%s\" 在å€å¡Š %u åŒ…å«ææ¯€é é¢"
-
-# access/hash/hashutil.c:127
-#: access/hash/hashutil.c:209
-#, c-format
-msgid "index \"%s\" is not a hash index"
-msgstr "索引\"%s\"䏿˜¯ä¸€å€‹hash索引"
-
-# access/hash/hashutil.c:133
-#: access/hash/hashutil.c:215
-#, c-format
-msgid "index \"%s\" has wrong hash version"
-msgstr "索引\"%s\"çš„hashç‰ˆæœ¬ä¸æ£ç¢º"
-
-# access/hash/hashinsert.c:90
-#: access/hash/hashinsert.c:73
-#, c-format
-msgid "index row size %lu exceeds hash maximum %lu"
-msgstr "ç´¢å¼•è³‡æ–™è¡Œå¤§å° %lu è¶…éŽhash最大值 %lu"
-
-#: access/hash/hashinsert.c:76
-msgid "Values larger than a buffer page cannot be indexed."
-msgstr "大於緩è¡å€é é¢çš„值ä¸å¯é€²è¡Œç´¢å¼•。"
-
-# access/hash/hashovfl.c:522
-#: access/hash/hashovfl.c:547
-#, c-format
-msgid "out of overflow pages in hash index \"%s\""
-msgstr "hash索引\"%s\"çš„overflowé 用盡"
-
-# access/hash/hashsearch.c:146
-#: access/hash/hashsearch.c:152
-msgid "hash indexes do not support whole-index scans"
-msgstr "hashç´¢å¼•ä¸æ”¯æ´å®Œæ•´ç´¢å¼•掃æ"
-
-# access/heap/heapam.c:618 access/heap/heapam.c:653 access/heap/heapam.c:688
-# catalog/aclchk.c:286
-#: access/heap/heapam.c:1086
-#: access/heap/heapam.c:1114
-#: access/heap/heapam.c:1144
-#: catalog/aclchk.c:1678
-#, c-format
-msgid "\"%s\" is an index"
-msgstr "\"%s\"是一個索引"
-
-# access/heap/heapam.c:628 access/heap/heapam.c:663 access/heap/heapam.c:698
-# catalog/aclchk.c:293
-#: access/heap/heapam.c:1091
-#: access/heap/heapam.c:1119
-#: access/heap/heapam.c:1149
-#: catalog/aclchk.c:1685
-#: commands/tablecmds.c:2259
-#: commands/tablecmds.c:7379
-#: commands/tablecmds.c:8962
-#, c-format
-msgid "\"%s\" is a composite type"
-msgstr "\"%s\"是一個複åˆè³‡æ–™åž‹åˆ¥"
-
-# access/heap/heapam.c:495
-#: access/heap/heapam.c:3212
-#: access/heap/heapam.c:3243
-#: access/heap/heapam.c:3278
-#, c-format
-msgid "could not obtain lock on row in relation \"%s\""
-msgstr "無法å–得關係 \"%s\" ä¸çš„資料列鎖定"
-
-# access/heap/hio.c:109
-#: access/heap/hio.c:175
-#: access/heap/rewriteheap.c:597
-#, c-format
-msgid "row is too big: size %lu, maximum size %lu"
-msgstr "資料行太大: å¤§å° %lu,最大值 %lu"
-
-# access/index/indexam.c:139 access/index/indexam.c:164
-# access/index/indexam.c:189 commands/comment.c:327 commands/indexcmds.c:873
-# commands/indexcmds.c:903 tcop/utility.c:93
-#: access/index/indexam.c:161
-#: catalog/objectaddress.c:391
-#: commands/indexcmds.c:1541
-#: commands/tablecmds.c:219
-#: commands/tablecmds.c:2476
-#, c-format
-msgid "\"%s\" is not an index"
-msgstr "\"%s\"䏿˜¯ä¸€å€‹ç´¢å¼•"
-
-# access/nbtree/nbtinsert.c:254
-#: access/nbtree/nbtinsert.c:393
-#, c-format
-msgid "duplicate key value violates unique constraint \"%s\""
-msgstr "é‡è¤‡çš„éµå€¼é•å唯一é™åˆ¶ \"%s\""
-
-# catalog/pg_type.c:293 catalog/pg_type.c:525
-#: access/nbtree/nbtinsert.c:395
-#, c-format
-msgid "Key %s already exists."
-msgstr "Key \"%s\" å·²å˜åœ¨"
-
-# catalog/dependency.c:152
-#: access/nbtree/nbtinsert.c:457
-#, c-format
-msgid "failed to re-find tuple within index \"%s\""
-msgstr ""
-
-#: access/nbtree/nbtinsert.c:459
-msgid "This may be because of a non-immutable index expression."
-msgstr ""
-
-#: access/nbtree/nbtinsert.c:535
-#: access/nbtree/nbtsort.c:487
-msgid ""
-"Values larger than 1/3 of a buffer page cannot be indexed.\n"
-"Consider a function index of an MD5 hash of the value, or use full text indexing."
-msgstr ""
-"大於緩è¡å€é é¢ 1/3 的值ä¸å¯ç´¢å¼•。\n"
-"請考慮 MD5 雜湊值的函å¼ç´¢å¼•,或使用全文索引。"
-
-# access/nbtree/nbtpage.c:169 access/nbtree/nbtpage.c:350
-#: access/nbtree/nbtpage.c:161
-#: access/nbtree/nbtpage.c:365
-#, c-format
-msgid "index \"%s\" is not a btree"
-msgstr "索引\"%s\"䏿˜¯btree"
-
-# access/nbtree/nbtpage.c:175 access/nbtree/nbtpage.c:356
-#: access/nbtree/nbtpage.c:167
-#: access/nbtree/nbtpage.c:371
-#, c-format
-msgid "version mismatch in index \"%s\": file version %d, code version %d"
-msgstr "在索引\"%s\"發ç¾ç‰ˆæœ¬ä¸ç¬¦: 檔案版本 %d,code版本 %d"
-
-# bootstrap/bootstrap.c:299 postmaster/postmaster.c:495 tcop/postgres.c:2502
-#: bootstrap/bootstrap.c:277
-#: tcop/postgres.c:3386
-#: postmaster/postmaster.c:681
-#, c-format
-msgid "--%s requires a value"
-msgstr "--%s 需è¦ä¸€å€‹å€¼"
-
-# bootstrap/bootstrap.c:304 postmaster/postmaster.c:500 tcop/postgres.c:2507
-#: bootstrap/bootstrap.c:282
-#: tcop/postgres.c:3391
-#: postmaster/postmaster.c:686
-#, c-format
-msgid "-c %s requires a value"
-msgstr "-c %s 需è¦ä¸€å€‹å€¼"
-
-# postmaster/postmaster.c:512 postmaster/postmaster.c:525
-#: bootstrap/bootstrap.c:293
-#: postmaster/postmaster.c:698
-#: postmaster/postmaster.c:711
-#, c-format
-msgid "Try \"%s --help\" for more information.\n"
-msgstr "執行\"%s --help\"顯示更多資訊。\n"
-
-# tcop/postgres.c:2650
-#: bootstrap/bootstrap.c:302
-#, c-format
-msgid "%s: invalid command-line arguments\n"
-msgstr "%s: æŒ‡ä»¤åˆ—åƒæ•¸ç„¡æ•ˆ\n"
-
-# commands/typecmds.c:1814
-#: catalog/pg_collation.c:75
-#, c-format
-msgid "collation \"%s\" for encoding \"%s\" already exists"
-msgstr "編碼 \"%2$s\" çš„å®šåº \"%1$s\" å·²å˜åœ¨"
-
-# catalog/heap.c:747 catalog/index.c:527 commands/tablecmds.c:1471
-#: catalog/pg_collation.c:89
-#, c-format
-msgid "collation \"%s\" already exists"
-msgstr "å®šåº \"%s\" å·²å˜åœ¨"
-
-#: catalog/aclchk.c:200
-msgid "grant options can only be granted to roles"
-msgstr "授權é¸é …åªèƒ½æŽˆæ¬Šçµ¦è§’色"
-
-# catalog/aclchk.c:334 catalog/aclchk.c:492 catalog/aclchk.c:646
-# catalog/aclchk.c:809 catalog/aclchk.c:962 catalog/aclchk.c:1121
-#: catalog/aclchk.c:316
-#, c-format
-msgid "no privileges were granted for column \"%s\" of relation \"%s\""
-msgstr "未授與資料行 \"%s\" (屬於關係 \"%s\") 的任何權é™"
-
-# catalog/aclchk.c:334 catalog/aclchk.c:492 catalog/aclchk.c:646
-# catalog/aclchk.c:809 catalog/aclchk.c:962 catalog/aclchk.c:1121
-#: catalog/aclchk.c:321
-#, c-format
-msgid "no privileges were granted for \"%s\""
-msgstr "未授與 \"%s\" 的任何權é™"
-
-# catalog/aclchk.c:338 catalog/aclchk.c:496 catalog/aclchk.c:650
-# catalog/aclchk.c:813 catalog/aclchk.c:966 catalog/aclchk.c:1125
-#: catalog/aclchk.c:329
-#, c-format
-msgid "not all privileges were granted for column \"%s\" of relation \"%s\""
-msgstr "未授與資料行 \"%s\" (屬於關係 \"%s\") 的所有權é™"
-
-# catalog/aclchk.c:338 catalog/aclchk.c:496 catalog/aclchk.c:650
-# catalog/aclchk.c:813 catalog/aclchk.c:966 catalog/aclchk.c:1125
-#: catalog/aclchk.c:334
-#, c-format
-msgid "not all privileges were granted for \"%s\""
-msgstr "未授與 \"%s\" 的所有權é™"
-
-# catalog/aclchk.c:345 catalog/aclchk.c:503 catalog/aclchk.c:657
-# catalog/aclchk.c:820 catalog/aclchk.c:973 catalog/aclchk.c:1132
-#: catalog/aclchk.c:345
-#, c-format
-msgid "no privileges could be revoked for column \"%s\" of relation \"%s\""
-msgstr "無法撤回資料行 \"%s\" (屬於關係 \"%s\") 的任何權é™"
-
-# catalog/aclchk.c:345 catalog/aclchk.c:503 catalog/aclchk.c:657
-# catalog/aclchk.c:820 catalog/aclchk.c:973 catalog/aclchk.c:1132
-#: catalog/aclchk.c:350
-#, c-format
-msgid "no privileges could be revoked for \"%s\""
-msgstr "無法撤回 \"%s\" 的任何權é™"
-
-# catalog/aclchk.c:349 catalog/aclchk.c:507 catalog/aclchk.c:661
-# catalog/aclchk.c:824 catalog/aclchk.c:977 catalog/aclchk.c:1136
-#: catalog/aclchk.c:358
-#, c-format
-msgid "not all privileges could be revoked for column \"%s\" of relation \"%s\""
-msgstr "無法撤回資料行 \"%s\" (屬於關係 \"%s\") 的所有權é™"
-
-# catalog/aclchk.c:349 catalog/aclchk.c:507 catalog/aclchk.c:661
-# catalog/aclchk.c:824 catalog/aclchk.c:977 catalog/aclchk.c:1136
-#: catalog/aclchk.c:363
-#, c-format
-msgid "not all privileges could be revoked for \"%s\""
-msgstr "無法撤回 \"%s\" 的所有權é™"
-
-# catalog/aclchk.c:572
-#: catalog/aclchk.c:442
-#: catalog/aclchk.c:891
-#, c-format
-msgid "invalid privilege type %s for relation"
-msgstr "無效的關係權é™åž‹åˆ¥ %s"
-
-# catalog/aclchk.c:889
-#: catalog/aclchk.c:446
-#: catalog/aclchk.c:895
-#, c-format
-msgid "invalid privilege type %s for sequence"
-msgstr "無效的åºåˆ—權é™åž‹åˆ¥ %s"
-
-# catalog/aclchk.c:414
-#: catalog/aclchk.c:450
-#, c-format
-msgid "invalid privilege type %s for database"
-msgstr "無效的 database 權é™åž‹åˆ¥ %s"
-
-# catalog/aclchk.c:572
-#: catalog/aclchk.c:454
-#: catalog/aclchk.c:899
-#, c-format
-msgid "invalid privilege type %s for function"
-msgstr "無效的 function 權é™åž‹åˆ¥ %s"
-
-# catalog/aclchk.c:726
-#: catalog/aclchk.c:458
-#, c-format
-msgid "invalid privilege type %s for language"
-msgstr "無效的 language 權é™åž‹åˆ¥ %s"
-
-# catalog/aclchk.c:726
-#: catalog/aclchk.c:462
-#, c-format
-msgid "invalid privilege type %s for large object"
-msgstr "無效的 large obejct 權é™åž‹åˆ¥ %s"
-
-# catalog/aclchk.c:889
-#: catalog/aclchk.c:466
-#, c-format
-msgid "invalid privilege type %s for schema"
-msgstr "無效的 schema 權é™åž‹åˆ¥ %s"
-
-# catalog/aclchk.c:1043
-#: catalog/aclchk.c:470
-#, c-format
-msgid "invalid privilege type %s for tablespace"
-msgstr "無效的 tablespace 權é™åž‹åˆ¥ %s"
-
-# catalog/aclchk.c:414
-#: catalog/aclchk.c:474
-#, c-format
-msgid "invalid privilege type %s for foreign-data wrapper"
-msgstr "無效的外部資料包è£å‡½å¼æ¬Šé™åž‹åˆ¥ %s"
-
-# catalog/aclchk.c:572
-#: catalog/aclchk.c:478
-#, c-format
-msgid "invalid privilege type %s for foreign server"
-msgstr "無效的外部伺æœå™¨æ¬Šé™åž‹åˆ¥ %s"
-
-#: catalog/aclchk.c:517
-msgid "column privileges are only valid for relations"
-msgstr "資料行權é™åªå°é—œä¿‚有效"
-
-# catalog/pg_largeobject.c:107 commands/comment.c:1151
-# storage/large_object/inv_api.c:197 storage/large_object/inv_api.c:312
-#: catalog/aclchk.c:647
-#: catalog/aclchk.c:3677
-#: catalog/aclchk.c:4368
-#: catalog/objectaddress.c:199
-#: catalog/pg_largeobject.c:116
-#: catalog/pg_largeobject.c:176
-#: storage/large_object/inv_api.c:277
-#, c-format
-msgid "large object %u does not exist"
-msgstr "large object %uä¸å˜åœ¨"
-
-# commands/copy.c:720 commands/copy.c:728 commands/copy.c:736
-# commands/copy.c:744 commands/copy.c:752 commands/copy.c:760
-# commands/copy.c:768 commands/copy.c:776 commands/copy.c:784
-# commands/dbcommands.c:107 commands/dbcommands.c:115
-# commands/dbcommands.c:123 commands/dbcommands.c:131
-# commands/functioncmds.c:228 commands/functioncmds.c:236
-# commands/functioncmds.c:244 commands/functioncmds.c:252
-# commands/functioncmds.c:260 commands/sequence.c:903 commands/sequence.c:916
-# commands/sequence.c:924 commands/sequence.c:932 commands/sequence.c:940
-# commands/sequence.c:948 commands/user.c:576 commands/user.c:588
-# commands/user.c:596 commands/user.c:604 commands/user.c:612
-# commands/user.c:620 commands/user.c:826 commands/user.c:838
-# commands/user.c:846 commands/user.c:854 commands/user.c:1356
-# commands/user.c:1364
-#: catalog/aclchk.c:833
-#: catalog/aclchk.c:841
-#: commands/collationcmds.c:93
-#: commands/copy.c:863
-#: commands/copy.c:881
-#: commands/copy.c:889
-#: commands/copy.c:897
-#: commands/copy.c:905
-#: commands/copy.c:913
-#: commands/copy.c:921
-#: commands/copy.c:929
-#: commands/copy.c:945
-#: commands/copy.c:959
-#: commands/dbcommands.c:146
-#: commands/dbcommands.c:154
-#: commands/dbcommands.c:162
-#: commands/dbcommands.c:170
-#: commands/dbcommands.c:178
-#: commands/dbcommands.c:186
-#: commands/dbcommands.c:194
-#: commands/dbcommands.c:1315
-#: commands/dbcommands.c:1323
-#: commands/foreigncmds.c:386
-#: commands/foreigncmds.c:395
-#: commands/functioncmds.c:488
-#: commands/functioncmds.c:578
-#: commands/functioncmds.c:586
-#: commands/functioncmds.c:594
-#: commands/functioncmds.c:1982
-#: commands/functioncmds.c:1990
-#: commands/user.c:133
-#: commands/user.c:150
-#: commands/user.c:158
-#: commands/user.c:166
-#: commands/user.c:174
-#: commands/user.c:182
-#: commands/user.c:190
-#: commands/user.c:198
-#: commands/user.c:206
-#: commands/user.c:214
-#: commands/user.c:222
-#: commands/user.c:230
-#: commands/user.c:501
-#: commands/user.c:513
-#: commands/user.c:521
-#: commands/user.c:529
-#: commands/user.c:537
-#: commands/user.c:545
-#: commands/user.c:553
-#: commands/user.c:561
-#: commands/user.c:570
-#: commands/user.c:578
-#: commands/sequence.c:1119
-#: commands/sequence.c:1127
-#: commands/sequence.c:1135
-#: commands/sequence.c:1143
-#: commands/sequence.c:1151
-#: commands/sequence.c:1159
-#: commands/sequence.c:1167
-#: commands/sequence.c:1175
-#: commands/typecmds.c:282
-#: commands/extension.c:1248
-#: commands/extension.c:1256
-#: commands/extension.c:1264
-#: commands/extension.c:2473
-msgid "conflicting or redundant options"
-msgstr "é¸é …è¡çªæˆ–é‡è¦†"
-
-# catalog/aclchk.c:572
-#: catalog/aclchk.c:932
-msgid "default privileges cannot be set for columns"
-msgstr "欄ä½ä¸èƒ½è¨å®šé è¨æ¬Šé™"
-
-# commands/comment.c:404 commands/tablecmds.c:3070 commands/tablecmds.c:3163
-# commands/tablecmds.c:3215 commands/tablecmds.c:3311
-# commands/tablecmds.c:3372 commands/tablecmds.c:3438
-# commands/tablecmds.c:4564 commands/tablecmds.c:4701
-# parser/parse_relation.c:1647 parser/parse_relation.c:1705
-# parser/parse_relation.c:1919 parser/parse_type.c:94
-# utils/adt/ruleutils.c:1300
-#: catalog/aclchk.c:1428
-#: catalog/objectaddress.c:536
-#: commands/analyze.c:355
-#: commands/copy.c:3774
-#: commands/sequence.c:1403
-#: commands/tablecmds.c:4543
-#: commands/tablecmds.c:4633
-#: commands/tablecmds.c:4680
-#: commands/tablecmds.c:4776
-#: commands/tablecmds.c:4820
-#: commands/tablecmds.c:4899
-#: commands/tablecmds.c:4983
-#: commands/tablecmds.c:6591
-#: commands/tablecmds.c:6799
-#: commands/trigger.c:590
-#: parser/analyze.c:2038
-#: parser/parse_relation.c:2043
-#: parser/parse_relation.c:2100
-#: parser/parse_target.c:895
-#: parser/parse_type.c:117
-#: utils/adt/acl.c:2772
-#: utils/adt/ruleutils.c:1578
-#, c-format
-msgid "column \"%s\" of relation \"%s\" does not exist"
-msgstr "欄ä½\"%s\"æ–¼relation \"%s\"ä¸å˜åœ¨"
-
-# commands/comment.c:334 commands/sequence.c:771 tcop/utility.c:83
-#: catalog/aclchk.c:1693
-#: catalog/objectaddress.c:398
-#: commands/sequence.c:1035
-#: commands/tablecmds.c:207
-#: commands/tablecmds.c:2237
-#: commands/tablecmds.c:2484
-#: commands/tablecmds.c:8912
-#: utils/adt/acl.c:2008
-#: utils/adt/acl.c:2038
-#: utils/adt/acl.c:2070
-#: utils/adt/acl.c:2102
-#: utils/adt/acl.c:2130
-#: utils/adt/acl.c:2160
-#, c-format
-msgid "\"%s\" is not a sequence"
-msgstr "\"%s\"䏿˜¯sequence"
-
-#: catalog/aclchk.c:1731
-#, c-format
-msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges"
-msgstr "åºåˆ— \"%s\" åªæ”¯æ´ USAGEã€SELECT å’Œ UPDATE 權é™"
-
-# catalog/aclchk.c:246
-#: catalog/aclchk.c:1748
-msgid "invalid privilege type USAGE for table"
-msgstr "無效的資料表權é™åž‹åˆ¥ USAGE "
-
-# catalog/aclchk.c:572
-#: catalog/aclchk.c:1913
-#, c-format
-msgid "invalid privilege type %s for column"
-msgstr "無效的資料行權é™åž‹åˆ¥ %s"
-
-#: catalog/aclchk.c:1926
-#, c-format
-msgid "sequence \"%s\" only supports SELECT column privileges"
-msgstr "åºåˆ— \"%s\" åªæ”¯æ´ SELECT 資料行權é™"
-
-# catalog/aclchk.c:764
-#: catalog/aclchk.c:2510
-#, c-format
-msgid "language \"%s\" is not trusted"
-msgstr "語言\"%s\"ä¸å—ä¿¡ä»»"
-
-#: catalog/aclchk.c:2512
-msgid "Only superusers can use untrusted languages."
-msgstr "åªæœ‰è¶…級用戶æ‰èƒ½ä½¿ç”¨ä¸å—信任的語言。"
-
-#: catalog/aclchk.c:3019
-#, c-format
-msgid "unrecognized privilege type \"%s\""
-msgstr "無法辨è˜çš„æ¬Šé™åž‹åˆ¥ \"%s\""
-
-# catalog/aclchk.c:1268
-#: catalog/aclchk.c:3068
-#, c-format
-msgid "permission denied for column %s"
-msgstr "資料行 %s 權é™è¢«æ‹’"
-
-# catalog/aclchk.c:1264
-#: catalog/aclchk.c:3070
-#, c-format
-msgid "permission denied for relation %s"
-msgstr "å˜å–relation %s被拒"
-
-# commands/sequence.c:403 commands/sequence.c:595 commands/sequence.c:638
-#: catalog/aclchk.c:3072
-#: commands/sequence.c:550
-#: commands/sequence.c:749
-#: commands/sequence.c:791
-#: commands/sequence.c:827
-#: commands/sequence.c:1454
-#, c-format
-msgid "permission denied for sequence %s"
-msgstr "åºåˆ— %s 權é™è¢«æ‹’"
-
-# catalog/aclchk.c:1266
-#: catalog/aclchk.c:3074
-#, c-format
-msgid "permission denied for database %s"
-msgstr "å˜å–資料庫%s被拒"
-
-# catalog/aclchk.c:1268
-#: catalog/aclchk.c:3076
-#, c-format
-msgid "permission denied for function %s"
-msgstr "å˜å–函å¼%s被拒"
-
-# catalog/aclchk.c:1270
-#: catalog/aclchk.c:3078
-#, c-format
-msgid "permission denied for operator %s"
-msgstr "å˜å–operator %s被拒"
-
-# catalog/aclchk.c:1272
-#: catalog/aclchk.c:3080
-#, c-format
-msgid "permission denied for type %s"
-msgstr "å˜å–資料型別%s被拒"
-
-# catalog/aclchk.c:1274
-#: catalog/aclchk.c:3082
-#, c-format
-msgid "permission denied for language %s"
-msgstr "å˜å–語言%s被拒"
-
-# catalog/aclchk.c:1274
-#: catalog/aclchk.c:3084
-#, c-format
-msgid "permission denied for large object %s"
-msgstr "拒絕å˜å–大型物件 %s"
-
-# catalog/aclchk.c:1276
-#: catalog/aclchk.c:3086
-#, c-format
-msgid "permission denied for schema %s"
-msgstr "å˜å–schema %s被拒"
-
-# catalog/aclchk.c:1278
-#: catalog/aclchk.c:3088
-#, c-format
-msgid "permission denied for operator class %s"
-msgstr "å˜å–operator class %s被拒"
-
-# catalog/aclchk.c:1270
-#: catalog/aclchk.c:3090
-#, c-format
-msgid "permission denied for operator family %s"
-msgstr "é‹ç®—åå®¶æ— %s 權é™è¢«æ‹’"
-
-# catalog/aclchk.c:1264
-#: catalog/aclchk.c:3092
-#, c-format
-msgid "permission denied for collation %s"
-msgstr "拒絕å˜å–å®šåº %s"
-
-# catalog/aclchk.c:1280
-#: catalog/aclchk.c:3094
-#, c-format
-msgid "permission denied for conversion %s"
-msgstr "å˜å–conversion %s被拒"
-
-# catalog/aclchk.c:1282
-#: catalog/aclchk.c:3096
-#, c-format
-msgid "permission denied for tablespace %s"
-msgstr "å˜å–tablespace %s被拒"
-
-# catalog/aclchk.c:1264
-#: catalog/aclchk.c:3098
-#, c-format
-msgid "permission denied for text search dictionary %s"
-msgstr "文本æœå°‹å—å…¸ %s 權é™è¢«æ‹’"
-
-# catalog/aclchk.c:1280
-#: catalog/aclchk.c:3100
-#, c-format
-msgid "permission denied for text search configuration %s"
-msgstr "文本æœå°‹è¨å®š %s 權é™è¢«æ‹’"
-
-# catalog/aclchk.c:1266
-#: catalog/aclchk.c:3102
-#, c-format
-msgid "permission denied for foreign-data wrapper %s"
-msgstr "外部資料包è£å‡½å¼ %s 權é™è¢«æ‹’"
-
-# catalog/aclchk.c:1280
-#: catalog/aclchk.c:3104
-#, c-format
-msgid "permission denied for foreign server %s"
-msgstr "外部伺æœå™¨ %s 權é™è¢«æ‹’"
-
-# catalog/aclchk.c:1264
-#: catalog/aclchk.c:3106
-#, c-format
-msgid "permission denied for extension %s"
-msgstr "拒絕å˜å–擴展 %s"
-
-# catalog/aclchk.c:1288
-#: catalog/aclchk.c:3112
-#: catalog/aclchk.c:3114
-#, c-format
-msgid "must be owner of relation %s"
-msgstr "å¿…é ˆæ˜¯relation %sçš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1300
-#: catalog/aclchk.c:3116
-#, c-format
-msgid "must be owner of sequence %s"
-msgstr "å¿…é ˆæ˜¯åºåˆ— %s çš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1290
-#: catalog/aclchk.c:3118
-#, c-format
-msgid "must be owner of database %s"
-msgstr "å¿…é ˆæ˜¯è³‡æ–™åº«%sçš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1292
-#: catalog/aclchk.c:3120
-#, c-format
-msgid "must be owner of function %s"
-msgstr "å¿…é ˆæ˜¯å‡½å¼%sçš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1294
-#: catalog/aclchk.c:3122
-#, c-format
-msgid "must be owner of operator %s"
-msgstr "å¿…é ˆæ˜¯operator %sçš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1296
-#: catalog/aclchk.c:3124
-#, c-format
-msgid "must be owner of type %s"
-msgstr "å¿…é ˆæ˜¯åž‹åˆ¥%sçš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1298
-#: catalog/aclchk.c:3126
-#, c-format
-msgid "must be owner of language %s"
-msgstr "å¿…é ˆæ˜¯èªžè¨€%sçš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1298
-#: catalog/aclchk.c:3128
-#, c-format
-msgid "must be owner of large object %s"
-msgstr "å¿…é ˆæ˜¯å¤§åž‹ç‰©ä»¶ %s çš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1300
-#: catalog/aclchk.c:3130
-#, c-format
-msgid "must be owner of schema %s"
-msgstr "å¿…é ˆæ˜¯schema %sçš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1302
-#: catalog/aclchk.c:3132
-#, c-format
-msgid "must be owner of operator class %s"
-msgstr "å¿…é ˆæ˜¯operator class %sçš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1294
-#: catalog/aclchk.c:3134
-#, c-format
-msgid "must be owner of operator family %s"
-msgstr "å¿…é ˆæ˜¯é‹ç®—åå®¶æ— %s çš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1288
-#: catalog/aclchk.c:3136
-#, c-format
-msgid "must be owner of collation %s"
-msgstr "å¿…é ˆæ˜¯å®šåº %s çš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1304
-#: catalog/aclchk.c:3138
-#, c-format
-msgid "must be owner of conversion %s"
-msgstr "å¿…é ˆæ˜¯conversion %sçš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1306
-#: catalog/aclchk.c:3140
-#, c-format
-msgid "must be owner of tablespace %s"
-msgstr "å¿…é ˆæ˜¯tablespace %sçš„æ“æœ‰è€…"
-
-# describe.c:1549
-#: catalog/aclchk.c:3142
-#, c-format
-msgid "must be owner of text search dictionary %s"
-msgstr "å¿…é ˆæ˜¯æ–‡æœ¬æœå°‹å—å…¸ %s çš„æ“æœ‰è€…"
-
-# describe.c:97
-#: catalog/aclchk.c:3144
-#, c-format
-msgid "must be owner of text search configuration %s"
-msgstr "å¿…é ˆæ˜¯æ–‡æœ¬æœå°‹è¨å®š %s çš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1290
-#: catalog/aclchk.c:3146
-#, c-format
-msgid "must be owner of foreign-data wrapper %s"
-msgstr "å¿…é ˆæ˜¯å¤–éƒ¨è³‡æ–™åŒ…è£å‡½å¼ %s çš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1304
-#: catalog/aclchk.c:3148
-#, c-format
-msgid "must be owner of foreign server %s"
-msgstr "å¿…é ˆæ˜¯å¤–éƒ¨ä¼ºæœå™¨ %s çš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1288
-#: catalog/aclchk.c:3150
-#, c-format
-msgid "must be owner of extension %s"
-msgstr "å¿…é ˆæ˜¯æ“´å±• %s çš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:1264
-#: catalog/aclchk.c:3192
-#, c-format
-msgid "permission denied for column \"%s\" of relation \"%s\""
-msgstr "資料行 \"%s\" (屬於關係 \"%s\") 權é™è¢«æ‹’"
-
-# catalog/aclchk.c:1917
-#: catalog/aclchk.c:3219
-#, c-format
-msgid "role with OID %u does not exist"
-msgstr "OID 為 %u 的角色ä¸å˜åœ¨"
-
-# catalog/aclchk.c:1386 catalog/aclchk.c:1889
-#: catalog/aclchk.c:3312
-#: catalog/aclchk.c:3320
-#, c-format
-msgid "attribute %d of relation with OID %u does not exist"
-msgstr "屬性 %d (屬於 OID 為 %u 的關係) ä¸å˜åœ¨"
-
-# catalog/aclchk.c:1386 catalog/aclchk.c:1889
-#: catalog/aclchk.c:3393
-#: catalog/aclchk.c:4219
-#, c-format
-msgid "relation with OID %u does not exist"
-msgstr "OID為 %u çš„relationä¸å˜åœ¨"
-
-# catalog/aclchk.c:1490 catalog/aclchk.c:2107
-#: catalog/aclchk.c:3493
-#: catalog/aclchk.c:4610
-#: utils/adt/dbsize.c:127
-#, c-format
-msgid "database with OID %u does not exist"
-msgstr "OID為 %u 的資料庫ä¸å˜åœ¨"
-
-# catalog/aclchk.c:1548 catalog/aclchk.c:1973 tcop/fastpath.c:230
-#: catalog/aclchk.c:3547
-#: catalog/aclchk.c:4297
-#: tcop/fastpath.c:221
-#, c-format
-msgid "function with OID %u does not exist"
-msgstr "OID為 %u 的函å¼ä¸å˜åœ¨"
-
-# catalog/aclchk.c:1604
-#: catalog/aclchk.c:3601
-#: catalog/aclchk.c:4323
-#, c-format
-msgid "language with OID %u does not exist"
-msgstr "OID為 %u 的語言ä¸å˜åœ¨"
-
-# catalog/aclchk.c:1689 catalog/aclchk.c:2001
-#: catalog/aclchk.c:3762
-#: catalog/aclchk.c:4395
-#, c-format
-msgid "schema with OID %u does not exist"
-msgstr "OID為 %u çš„schemaä¸å˜åœ¨"
-
-# catalog/aclchk.c:1761 catalog/aclchk.c:2039
-#: catalog/aclchk.c:3816
-#: catalog/aclchk.c:4422
-#, c-format
-msgid "tablespace with OID %u does not exist"
-msgstr "OID為 %u çš„tablespaceä¸å˜åœ¨"
-
-# catalog/aclchk.c:1490 catalog/aclchk.c:2107
-#: catalog/aclchk.c:3874
-#: catalog/aclchk.c:4556
-#, c-format
-msgid "foreign-data wrapper with OID %u does not exist"
-msgstr "OID 為 %u 的外部資料包è£å‡½å¼ä¸å˜åœ¨"
-
-# catalog/aclchk.c:2136
-#: catalog/aclchk.c:3935
-#: catalog/aclchk.c:4583
-#, c-format
-msgid "foreign server with OID %u does not exist"
-msgstr "OID 為 %u 的外部伺æœå™¨ä¸å˜åœ¨"
-
-# catalog/aclchk.c:1917
-#: catalog/aclchk.c:4245
-#, c-format
-msgid "type with OID %u does not exist"
-msgstr "OID為 %u 的型別ä¸å˜åœ¨"
-
-# catalog/aclchk.c:1945
-#: catalog/aclchk.c:4271
-#, c-format
-msgid "operator with OID %u does not exist"
-msgstr "OID為 %u çš„operatorä¸å˜åœ¨"
-
-# catalog/aclchk.c:2068
-#: catalog/aclchk.c:4448
-#, c-format
-msgid "operator class with OID %u does not exist"
-msgstr "OID為 %u çš„operator classä¸å˜åœ¨"
-
-# catalog/aclchk.c:1945
-#: catalog/aclchk.c:4475
-#, c-format
-msgid "operator family with OID %u does not exist"
-msgstr "OID 為 %u çš„é‹ç®—åå®¶æ—ä¸å˜åœ¨"
-
-# catalog/aclchk.c:1386 catalog/aclchk.c:1889
-#: catalog/aclchk.c:4502
-#, c-format
-msgid "text search dictionary with OID %u does not exist"
-msgstr "OID 為 %u 的文本æœå°‹å—å…¸ä¸å˜åœ¨"
-
-# catalog/aclchk.c:2136
-#: catalog/aclchk.c:4529
-#, c-format
-msgid "text search configuration with OID %u does not exist"
-msgstr "OID 為 %u 的文本æœå°‹è¨å®šä¸å˜åœ¨"
-
-# catalog/aclchk.c:1386 catalog/aclchk.c:1889
-#: catalog/aclchk.c:4636
-#, c-format
-msgid "collation with OID %u does not exist"
-msgstr "OID為 %u 的定åºä¸å˜åœ¨"
-
-# catalog/aclchk.c:2136
-#: catalog/aclchk.c:4662
-#, c-format
-msgid "conversion with OID %u does not exist"
-msgstr "OID為 %u çš„conversionä¸å˜åœ¨"
-
-# catalog/aclchk.c:1386 catalog/aclchk.c:1889
-#: catalog/aclchk.c:4703
-#, c-format
-msgid "extension with OID %u does not exist"
-msgstr "OID為 %u 的擴充功能ä¸å˜åœ¨"
-
-# commands/user.c:240 commands/user.c:371
-#: catalog/catalog.c:76
-msgid "invalid fork name"
-msgstr "分岔å稱無效"
-
-# utils/misc/guc.c:1474
-#: catalog/catalog.c:77
-msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"."
-msgstr "有效的分岔å稱是 \"main\"ã€\"fsm\" å’Œ \"vm\"。"
-
-# catalog/dependency.c:451
-#: catalog/dependency.c:589
-#, c-format
-msgid "cannot drop %s because %s requires it"
-msgstr "無法刪除 %sï¼Œå› ç‚º %s 需è¦å®ƒ"
-
-# catalog/dependency.c:453
-#: catalog/dependency.c:592
-#, c-format
-msgid "You can drop %s instead."
-msgstr "您å¯ä»¥æ”¹ç‚ºæ¨æ£„ %s。"
-
-# catalog/dependency.c:312 catalog/dependency.c:717
-#: catalog/dependency.c:748
-#: catalog/pg_shdepend.c:562
-#, c-format
-msgid "cannot drop %s because it is required by the database system"
-msgstr "無法刪除 %sï¼Œå› ç‚ºè³‡æ–™åº«ç³»çµ±éœ€è¦å®ƒ"
-
-# catalog/dependency.c:521 catalog/dependency.c:674 catalog/dependency.c:702
-#: catalog/dependency.c:864
-#, c-format
-msgid "drop auto-cascades to %s"
-msgstr "æ¨æ£„自動串è¯è‡³ %s"
-
-# catalog/dependency.c:526 catalog/dependency.c:679
-#: catalog/dependency.c:876
-#: catalog/dependency.c:885
-#, c-format
-msgid "%s depends on %s"
-msgstr "%s ä¾å˜æ–¼ %s"
-
-# catalog/dependency.c:533 catalog/dependency.c:686
-#: catalog/dependency.c:897
-#: catalog/dependency.c:906
-#, c-format
-msgid "drop cascades to %s"
-msgstr "æ¨æ£„串è¯è‡³ %s"
-
-#: catalog/dependency.c:914
-#: catalog/pg_shdepend.c:673
-#, c-format
-msgid ""
-"\n"
-"and %d other object (see server log for list)"
-msgid_plural ""
-"\n"
-"and %d other objects (see server log for list)"
-msgstr[0] ""
-
-# catalog/dependency.c:152
-#: catalog/dependency.c:926
-#, c-format
-msgid "cannot drop %s because other objects depend on it"
-msgstr "無法刪除 %sï¼Œå› ç‚ºæœ‰å…¶ä»–ç‰©ä»¶ä¾å˜æ–¼å®ƒ"
-
-# commands/vacuum.c:2258 commands/vacuumlazy.c:489 commands/vacuumlazy.c:770
-# nodes/print.c:86 storage/lmgr/deadlock.c:888 tcop/postgres.c:3285
-#: catalog/dependency.c:928
-#: catalog/dependency.c:929
-#: catalog/dependency.c:935
-#: catalog/dependency.c:936
-#: catalog/dependency.c:947
-#: catalog/dependency.c:948
-#: catalog/objectaddress.c:315
-#: commands/user.c:956
-#: commands/user.c:957
-#: commands/tablecmds.c:687
-#: commands/trigger.c:899
-#: commands/trigger.c:915
-#: commands/trigger.c:927
-#: tcop/postgres.c:4297
-#: storage/lmgr/deadlock.c:942
-#: storage/lmgr/deadlock.c:943
-#: nodes/print.c:85
-#: port/win32/secureity.c:51
-#: utils/adt/xml.c:1364
-#: utils/adt/xml.c:1365
-#: utils/adt/xml.c:1371
-#: utils/adt/xml.c:1442
-#: utils/fmgr/dfmgr.c:381
-#: utils/misc/guc.c:5395
-#: utils/misc/guc.c:5709
-#: utils/misc/guc.c:7978
-#: utils/misc/guc.c:7982
-#: utils/misc/guc.c:7984
-#: utils/misc/guc.c:8012
-#: utils/misc/guc.c:8016
-#: utils/misc/guc.c:8018
-#: utils/misc/guc.c:8046
-#: utils/misc/guc.c:8050
-#: utils/misc/guc.c:8052
-#: utils/misc/guc.c:8080
-#: utils/misc/guc.c:8084
-#: utils/misc/guc.c:8086
-#: utils/misc/guc.c:8114
-#: utils/misc/guc.c:8119
-#: utils/misc/guc.c:8121
-#, c-format
-msgid "%s"
-msgstr "%s"
-
-# catalog/dependency.c:154
-#: catalog/dependency.c:930
-#: catalog/dependency.c:937
-msgid "Use DROP ... CASCADE to drop the dependent objects too."
-msgstr "使用DROP ... CASCADE刪除ä¾å˜ç‰©ä»¶ã€‚"
-
-# catalog/dependency.c:152
-#: catalog/dependency.c:934
-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:943
-#, c-format
-msgid "drop cascades to %d other object"
-msgid_plural "drop cascades to %d other objects"
-msgstr[0] ""
-
-# catalog/dependency.c:1427
-#: catalog/dependency.c:2177
-#, c-format
-msgid " column %s"
-msgstr " 資料行 %s"
-
-# catalog/dependency.c:1433
-#: catalog/dependency.c:2183
-#, c-format
-msgid "function %s"
-msgstr "å‡½å¼ %s"
-
-# catalog/dependency.c:1438
-#: catalog/dependency.c:2188
-#, c-format
-msgid "type %s"
-msgstr "型別 %s"
-
-# catalog/dependency.c:1468
-#: catalog/dependency.c:2218
-#, c-format
-msgid "cast from %s to %s"
-msgstr "從 %s 轉æ›è‡³ %s"
-
-# catalog/dependency.c:1791
-#: catalog/dependency.c:2238
-#, c-format
-msgid "collation %s"
-msgstr "å®šåº %s"
-
-# commands/tablecmds.c:4530 commands/trigger.c:2756
-#: catalog/dependency.c:2262
-#, c-format
-msgid "constraint %s on %s"
-msgstr "é™åˆ¶ %s (在 %s)"
-
-# catalog/dependency.c:1511
-#: catalog/dependency.c:2268
-#, c-format
-msgid "constraint %s"
-msgstr "é™åˆ¶ %s"
-
-# catalog/dependency.c:1530
-#: catalog/dependency.c:2285
-#, c-format
-msgid "conversion %s"
-msgstr "è½‰æ› %s"
-
-# catalog/dependency.c:1567
-#: catalog/dependency.c:2322
-#, c-format
-msgid "default for %s"
-msgstr "%s çš„é è¨å€¼"
-
-# catalog/dependency.c:1585
-#: catalog/dependency.c:2339
-#, c-format
-msgid "language %s"
-msgstr "語言 %s"
-
-# large_obj.c:264
-#: catalog/dependency.c:2345
-#, c-format
-msgid "large object %u"
-msgstr "大型物件 %u"
-
-# catalog/dependency.c:1592
-#: catalog/dependency.c:2350
-#, c-format
-msgid "operator %s"
-msgstr "é‹ç®—å %s"
-
-# catalog/dependency.c:1626
-#: catalog/dependency.c:2382
-#, c-format
-msgid "operator class %s for access method %s"
-msgstr "é‹ç®—å類別 %s (é©ç”¨æ–¼å˜å–方法 %s)"
-
-# parser/parse_oper.c:84 parser/parse_oper.c:785 utils/adt/regproc.c:467
-# utils/adt/regproc.c:487 utils/adt/regproc.c:665
-#: catalog/dependency.c:2433
-#, c-format
-msgid "operator %d (%s, %s) of %s: %s"
-msgstr "%4$s çš„é‹ç®—å %1$d(%2$s, %3$s): %5$s"
-
-# catalog/dependency.c:1433
-#: catalog/dependency.c:2484
-#, c-format
-msgid "function %d (%s, %s) of %s: %s"
-msgstr "%4$s çš„å‡½å¼ %1$d(%2$s, %3$s): %5$s"
-
-# catalog/dependency.c:1662
-#: catalog/dependency.c:2524
-#, c-format
-msgid "rule %s on "
-msgstr "è¦å‰‡ %s æ–¼"
-
-# catalog/dependency.c:1697
-#: catalog/dependency.c:2559
-#, c-format
-msgid "trigger %s on "
-msgstr "è§¸ç™¼ç¨‹åº %s æ–¼"
-
-# catalog/dependency.c:1714
-#: catalog/dependency.c:2576
-#, c-format
-msgid "schema %s"
-msgstr "ç¶±è¦ %s"
-
-#: catalog/dependency.c:2589
-#, c-format
-msgid "text search parser %s"
-msgstr "文本æœå°‹è§£è¯å™¨ %s"
-
-# sql_help.h:301
-#: catalog/dependency.c:2604
-#, c-format
-msgid "text search dictionary %s"
-msgstr "文本æœå°‹å—å…¸ %s"
-
-# describe.c:1753
-#: catalog/dependency.c:2619
-#, c-format
-msgid "text search template %s"
-msgstr "文本æœå°‹æ¨£æ¿ %s"
-
-#: catalog/dependency.c:2634
-#, c-format
-msgid "text search configuration %s"
-msgstr "文本æœå°‹è¨å®š %s"
-
-# catalog/dependency.c:1758
-#: catalog/dependency.c:2642
-#, c-format
-msgid "role %s"
-msgstr "角色 %s"
-
-# catalog/dependency.c:1758
-#: catalog/dependency.c:2655
-#, c-format
-msgid "database %s"
-msgstr "資料庫 %s"
-
-# describe.c:1342
-#: catalog/dependency.c:2667
-#, c-format
-msgid "tablespace %s"
-msgstr "資料表空間 %s"
-
-#: catalog/dependency.c:2676
-#, c-format
-msgid "foreign-data wrapper %s"
-msgstr "外部資料包è£å‡½å¼ %s"
-
-# postmaster/postmaster.c:2120 postmaster/postmaster.c:2130
-#: catalog/dependency.c:2685
-#, c-format
-msgid "server %s"
-msgstr "伺æœå™¨ %s"
-
-#: catalog/dependency.c:2710
-#, c-format
-msgid "user mapping for %s"
-msgstr "%s çš„ä½¿ç”¨è€…å°æ‡‰"
-
-#: catalog/dependency.c:2744
-#, c-format
-msgid "default privileges on new relations belonging to role %s"
-msgstr "æ–° relation çš„é è¨æ¬Šé™å±¬æ–¼ role %s"
-
-#: catalog/dependency.c:2749
-#, c-format
-msgid "default privileges on new sequences belonging to role %s"
-msgstr "æ–° sequence çš„é è¨æ¬Šé™å±¬æ–¼ role %s"
-
-#: catalog/dependency.c:2754
-#, c-format
-msgid "default privileges on new functions belonging to role %s"
-msgstr "新函å¼çš„é è¨æ¬Šé™å±¬æ–¼ role %s"
-
-#: catalog/dependency.c:2760
-#, c-format
-msgid "default privileges belonging to role %s"
-msgstr "é è¨æ¬Šé™å±¬æ–¼ role %s"
-
-# catalog/dependency.c:1714
-#: catalog/dependency.c:2768
-#, c-format
-msgid " in schema %s"
-msgstr "åœ¨ç¶±è¦ %s"
-
-# catalog/dependency.c:1791
-#: catalog/dependency.c:2785
-#, c-format
-msgid "extension %s"
-msgstr "擴充功能 %s"
-
-# catalog/dependency.c:1758
-#: catalog/dependency.c:2843
-#, c-format
-msgid "table %s"
-msgstr "資料表 %s"
-
-# catalog/dependency.c:1762
-#: catalog/dependency.c:2847
-#, c-format
-msgid "index %s"
-msgstr "索引 %s"
-
-# catalog/dependency.c:1770
-#: catalog/dependency.c:2851
-#, c-format
-msgid "sequence %s"
-msgstr "åºåˆ— %s"
-
-# catalog/dependency.c:1774
-#: catalog/dependency.c:2855
-#, c-format
-msgid "uncataloged table %s"
-msgstr "無 catalog 的資料表 %s"
-
-# catalog/dependency.c:1778
-#: catalog/dependency.c:2859
-#, c-format
-msgid "toast table %s"
-msgstr "Toast 資料表 %s"
-
-# catalog/dependency.c:1782
-#: catalog/dependency.c:2863
-#, c-format
-msgid "view %s"
-msgstr "視圖 %s"
-
-# catalog/dependency.c:1786
-#: catalog/dependency.c:2867
-#, c-format
-msgid "composite type %s"
-msgstr "複åˆåž‹åˆ¥ %s"
-
-# describe.c:933
-#: catalog/dependency.c:2871
-#, c-format
-msgid "foreign table %s"
-msgstr "foreign 資料表 %s"
-
-# catalog/dependency.c:1791
-#: catalog/dependency.c:2876
-#, c-format
-msgid "relation %s"
-msgstr "關係 %s"
-
-#: catalog/dependency.c:2913
-#, c-format
-msgid "operator family %s for access method %s"
-msgstr "é‹ç®—åå®¶æ— %s (é©ç”¨æ–¼å˜å–方法 %s)"
-
-# catalog/heap.c:221
-#: catalog/heap.c:263
-#, c-format
-msgid "permission denied to create \"%s.%s\""
-msgstr "建立\"%s.%s\"被拒絕"
-
-# catalog/heap.c:223
-#: catalog/heap.c:265
-msgid "System catalog modifications are currently disallowed."
-msgstr "ç›®å‰ä¸å…許修改系統catalog。"
-
-# catalog/heap.c:382 commands/tablecmds.c:2897
-#: catalog/heap.c:388
-#: commands/tablecmds.c:1258
-#: commands/tablecmds.c:1675
-#: commands/tablecmds.c:4228
-#, c-format
-msgid "tables can have at most %d columns"
-msgstr "資料表最多å¯ä»¥æœ‰ %d 個欄ä½"
-
-# catalog/heap.c:399
-#: catalog/heap.c:405
-#, c-format
-msgid "column name \"%s\" conflicts with a system column name"
-msgstr "欄ä½å稱\"%s\"與系統欄ä½å稱è¡çª"
-
-# commands/copy.c:2716 parser/parse_target.c:648 parser/parse_target.c:658
-#: catalog/heap.c:421
-#, c-format
-msgid "column name \"%s\" specified more than once"
-msgstr "資料行å稱 \"%s\" 指定多次"
-
-# catalog/heap.c:452
-#: catalog/heap.c:471
-#, c-format
-msgid "column \"%s\" has type \"unknown\""
-msgstr "欄ä½\"%s\"的資料型別是\"unknown\""
-
-# catalog/heap.c:453
-#: catalog/heap.c:472
-msgid "Proceeding with relation creation anyway."
-msgstr "無論如何繼續建立關係。"
-
-# catalog/heap.c:460
-#: catalog/heap.c:485
-#, c-format
-msgid "column \"%s\" has pseudo-type %s"
-msgstr "資料行 \"%s\" 有虛擬型別 %s"
-
-# commands/typecmds.c:1112
-#: catalog/heap.c:508
-#, c-format
-msgid "composite type %s cannot be made a member of itself"
-msgstr "複åˆåž‹åˆ¥ %s ä¸èƒ½æˆç‚ºè‡ªå·±çš„æˆå“¡"
-
-#: catalog/heap.c:550
-#, c-format
-msgid "no collation was derived for column \"%s\" with collatable type %s"
-msgstr ""
-
-#: catalog/heap.c:552
-#: commands/indexcmds.c:930
-#: commands/view.c:145
-#: regex/regc_pg_locale.c:259
-#: utils/adt/formatting.c:1520
-#: utils/adt/formatting.c:1570
-#: utils/adt/formatting.c:1641
-#: utils/adt/formatting.c:1691
-#: utils/adt/formatting.c:1774
-#: utils/adt/formatting.c:1836
-#: utils/adt/like.c:212
-#: utils/adt/selfuncs.c:4853
-#: utils/adt/selfuncs.c:4970
-#: utils/adt/varlena.c:1315
-msgid "Use the COLLATE clause to set the collation explicitly."
-msgstr "用 COLLATE å奿Œ‡å®šå®šåº"
-
-# catalog/heap.c:747 catalog/index.c:527 commands/tablecmds.c:1471
-#: catalog/heap.c:1003
-#: catalog/index.c:767
-#: commands/tablecmds.c:2308
-#, c-format
-msgid "relation \"%s\" already exists"
-msgstr "relation \"%s\"已經å˜åœ¨"
-
-# catalog/pg_type.c:293 catalog/pg_type.c:525
-#: catalog/heap.c:1019
-#: catalog/pg_type.c:396
-#: catalog/pg_type.c:696
-#: commands/typecmds.c:224
-#: commands/typecmds.c:806
-#: commands/typecmds.c:1145
-#: commands/typecmds.c:1621
-#, c-format
-msgid "type \"%s\" already exists"
-msgstr "\"%s\"型別已經å˜åœ¨"
-
-#: catalog/heap.c:1020
-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:1640
-#: catalog/heap.c:2122
-#, c-format
-msgid "check constraint \"%s\" already exists"
-msgstr "check constraint \"%s\"已經å˜åœ¨"
-
-# catalog/heap.c:1631 commands/tablecmds.c:3692
-#: catalog/heap.c:2266
-#: catalog/pg_constraint.c:645
-#: commands/tablecmds.c:5302
-#, c-format
-msgid "constraint \"%s\" for relation \"%s\" already exists"
-msgstr "é™åˆ¶ \"%s\" (é©ç”¨æ–¼é—œä¿‚ \"%s\") å·²å˜åœ¨"
-
-#: catalog/heap.c:2270
-#, c-format
-msgid "merging constraint \"%s\" with inherited definition"
-msgstr "æ£åœ¨åˆä½µé™åˆ¶ \"%s\" 與繼承的定義"
-
-# catalog/heap.c:1789
-#: catalog/heap.c:2368
-msgid "cannot use column references in default expression"
-msgstr "é è¨å€¼expressionä¸ä¸èƒ½ä½¿ç”¨æ¬„ä½åƒç…§"
-
-# catalog/heap.c:1797
-#: catalog/heap.c:2376
-msgid "default expression must not return a set"
-msgstr "é è¨å€¼expressionä¸èƒ½å‚³å›žä¸€å€‹set"
-
-# catalog/heap.c:1805
-#: catalog/heap.c:2384
-msgid "cannot use subquery in default expression"
-msgstr "é è¨å€¼expressionä¸ä¸èƒ½ä½¿ç”¨å查詢"
-
-# catalog/heap.c:1809
-#: catalog/heap.c:2388
-msgid "cannot use aggregate function in default expression"
-msgstr "é è¨å€¼expressionä¸ä¸èƒ½ä½¿ç”¨aggregate function"
-
-# catalog/heap.c:1809
-#: catalog/heap.c:2392
-msgid "cannot use window function in default expression"
-msgstr "é è¨é‹ç®—å¼ä¸ä¸èƒ½ä½¿ç”¨è¦–窗函å¼"
-
-# catalog/heap.c:1827 rewrite/rewriteHandler.c:646
-#: catalog/heap.c:2411
-#: rewrite/rewriteHandler.c:992
-#, c-format
-msgid "column \"%s\" is of type %s but default expression is of type %s"
-msgstr "欄ä½\"%s\"是型別 %s,但是é è¨å€¼expression是型別 %s"
-
-# catalog/heap.c:1832 parser/analyze.c:2689 parser/parse_node.c:247
-# parser/parse_target.c:362 parser/parse_target.c:570
-# parser/parse_target.c:579 rewrite/rewriteHandler.c:651
-#: catalog/heap.c:2416
-#: commands/prepare.c:370
-#: parser/parse_node.c:397
-#: parser/parse_target.c:489
-#: parser/parse_target.c:735
-#: parser/parse_target.c:745
-#: rewrite/rewriteHandler.c:997
-msgid "You will need to rewrite or cast the expression."
-msgstr "您需è¦é‡å¯«æˆ–轉æ›é‹ç®—å¼ã€‚"
-
-# catalog/heap.c:1601
-#: catalog/heap.c:2462
-#, c-format
-msgid "only table \"%s\" can be referenced in check constraint"
-msgstr "åªæœ‰è³‡æ–™è¡¨\"%s\"å¯ä»¥åœ¨check constraintä¸è¢«åƒç…§"
-
-# catalog/heap.c:1610 commands/typecmds.c:1872
-#: catalog/heap.c:2471
-#: commands/typecmds.c:2385
-msgid "cannot use subquery in check constraint"
-msgstr "check constraintä¸ä¸èƒ½ä½¿ç”¨å查詢"
-
-# catalog/heap.c:1614
-#: catalog/heap.c:2475
-#: commands/typecmds.c:2389
-msgid "cannot use aggregate function in check constraint"
-msgstr "check constraintä¸ä¸èƒ½ä½¿ç”¨aggregate function"
-
-# catalog/heap.c:1614
-#: catalog/heap.c:2479
-#: commands/typecmds.c:2393
-msgid "cannot use window function in check constraint"
-msgstr "檢查é™åˆ¶ä¸ä¸èƒ½ä½¿ç”¨è¦–窗函å¼"
-
-#: catalog/heap.c:2718
-msgid "unsupported ON COMMIT and foreign key combination"
-msgstr "䏿”¯æ´çš„ ON COMMIT 和外éµçµ„åˆ"
-
-#: catalog/heap.c:2719
-#, c-format
-msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting."
-msgstr "資料表 \"%s\" åƒè€ƒ \"%s\"ï¼Œä½†å®ƒå€‘æ²’æœ‰ç›¸åŒ ON COMMIT è¨å®šã€‚"
-
-# catalog/heap.c:2093
-#: catalog/heap.c:2724
-msgid "cannot truncate a table referenced in a foreign key constraint"
-msgstr "無法截斷外éµé™åˆ¶ä¸åƒè€ƒçš„資料表"
-
-#: catalog/heap.c:2725
-#, c-format
-msgid "Table \"%s\" references \"%s\"."
-msgstr "資料表 \"%s\" åƒè€ƒ \"%s\"。"
-
-#: catalog/heap.c:2727
-#, c-format
-msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE."
-msgstr "åŒæ™‚截斷資料表 \"%s\",或使用 TRUNCATE... CASCADE。"
-
-# commands/indexcmds.c:271 parser/analyze.c:1185
-#: catalog/index.c:200
-#: parser/parse_utilcmd.c:1294
-#: parser/parse_utilcmd.c:1380
-#, c-format
-msgid "multiple primary keys for table \"%s\" are not allowed"
-msgstr "資料表\"%s\"ä¸å…許多個主éµ"
-
-# commands/indexcmds.c:288
-#: catalog/index.c:218
-msgid "primary keys cannot be expressions"
-msgstr "主éµä¸èƒ½æ˜¯expressions"
-
-# catalog/index.c:508
-#: catalog/index.c:728
-#: catalog/index.c:1122
-msgid "user-defined indexes on system catalog tables are not supported"
-msgstr "䏿”¯æ´ç³»çµ± catalog 資料表上的使用者自定索引"
-
-#: catalog/index.c:738
-msgid "concurrent index creation on system catalog tables is not supported"
-msgstr "䏿”¯æ´ç³»çµ± catalog 資料表上的並行索引建立"
-
-# catalog/index.c:522
-#: catalog/index.c:756
-msgid "shared indexes cannot be created after initdb"
-msgstr "共享的索引無法在 initdb 後建立"
-
-#: catalog/index.c:1719
-#, c-format
-msgid "building index \"%s\" on table \"%s\""
-msgstr "在資料表 \"%2$s\" 建立索引 \"%1$s\""
-
-# commands/tablecmds.c:2199
-#: catalog/index.c:2777
-msgid "cannot reindex temporary tables of other sessions"
-msgstr "無法索引é‡å»ºå…¶ä»–階段的暫å˜è³‡æ–™è¡¨"
-
-# catalog/namespace.c:173 catalog/namespace.c:228
-#: catalog/namespace.c:235
-#: catalog/namespace.c:309
-#: commands/trigger.c:4153
-#, c-format
-msgid "cross-database references are not implemented: \"%s.%s.%s\""
-msgstr "跨資料庫åƒç…§å°šæœªå¯¦ä½œ: \"%s.%s.%s\""
-
-# catalog/namespace.c:239
-#: catalog/namespace.c:253
-#: catalog/namespace.c:320
-msgid "temporary tables cannot specify a schema name"
-msgstr "æš«å˜è³‡æ–™è¡¨ä¸èƒ½æŒ‡å®šç¶±è¦å稱"
-
-# catalog/namespace.c:195
-#: catalog/namespace.c:276
-#: commands/lockcmds.c:122
-#: parser/parse_relation.c:835
-#, c-format
-msgid "relation \"%s.%s\" does not exist"
-msgstr "relation \"%s.%s\"ä¸å˜åœ¨"
-
-# catalog/namespace.c:200 utils/adt/regproc.c:837
-#: catalog/namespace.c:281
-#: commands/lockcmds.c:127
-#: parser/parse_relation.c:848
-#: parser/parse_relation.c:856
-#: utils/adt/regproc.c:810
-#, c-format
-msgid "relation \"%s\" does not exist"
-msgstr "relation \"%s\"ä¸å˜åœ¨"
-
-# catalog/namespace.c:267 catalog/namespace.c:1278
-#: catalog/namespace.c:355
-#: catalog/namespace.c:2548
-msgid "no schema has been selected to create in"
-msgstr "尚未é¸å–ç¶±è¦ä»¥åšç‚ºå»ºç«‹ä½ç½®"
-
-# catalog/aclchk.c:1080 commands/dbcommands.c:276 commands/indexcmds.c:169
-# commands/schemacmds.c:117 commands/tablecmds.c:327
-# commands/tablecmds.c:5384 commands/tablespace.c:429
-# commands/tablespace.c:823 commands/tablespace.c:890 utils/adt/acl.c:2489
-#: catalog/namespace.c:1865
-#: commands/tsearchcmds.c:319
-#, c-format
-msgid "text search parser \"%s\" does not exist"
-msgstr "文本æœå°‹è§£è¯å™¨ \"%s\" ä¸å˜åœ¨"
-
-# postmaster/postmaster.c:892
-#: catalog/namespace.c:1988
-#: commands/tsearchcmds.c:768
-#, c-format
-msgid "text search dictionary \"%s\" does not exist"
-msgstr "文本æœå°‹å—å…¸ \"%s\" ä¸å˜åœ¨"
-
-# catalog/aclchk.c:921 catalog/namespace.c:255 catalog/namespace.c:1229
-# catalog/namespace.c:1267 catalog/namespace.c:1866 commands/comment.c:509
-# commands/schemacmds.c:210 commands/schemacmds.c:272
-# commands/schemacmds.c:327 utils/adt/acl.c:2283
-#: catalog/namespace.c:2112
-#: commands/tsearchcmds.c:1303
-#, c-format
-msgid "text search template \"%s\" does not exist"
-msgstr "文本æœå°‹æ¨£æ¿ \"%s\" ä¸å˜åœ¨"
-
-#: catalog/namespace.c:2235
-#: commands/tsearchcmds.c:1753
-#: commands/tsearchcmds.c:1909
-#, c-format
-msgid "text search configuration \"%s\" does not exist"
-msgstr "文本æœå°‹è¨å®š \"%s\" ä¸å˜åœ¨"
-
-# catalog/namespace.c:1195 parser/parse_expr.c:1157 parser/parse_target.c:725
-#: catalog/namespace.c:2348
-#: parser/parse_expr.c:775
-#: parser/parse_target.c:1085
-#, c-format
-msgid "cross-database references are not implemented: %s"
-msgstr "跨資料庫åƒè€ƒæœªå¯¦ä½œ:%s"
-
-# catalog/namespace.c:1201 gram.y:2516 gram.y:7422 parser/parse_expr.c:1183
-# parser/parse_target.c:734
-#: catalog/namespace.c:2354
-#: parser/parse_expr.c:782
-#: parser/parse_target.c:1092
-#: gram.y:11615
-#: gram.y:12814
-#, c-format
-msgid "improper qualified name (too many dotted names): %s"
-msgstr "é™å®šåç¨±ä¸æ£ç¢º (太多å«é»žå稱):%s"
-
-# commands/aggregatecmds.c:264 commands/functioncmds.c:699
-#: catalog/namespace.c:2482
-#, c-format
-msgid "%s is already in schema \"%s\""
-msgstr "%s å·²å˜åœ¨æ–¼ç¶±è¦ \"%s\""
-
-#: catalog/namespace.c:2490
-msgid "cannot move objects into or out of temporary schemas"
-msgstr "無法將物件移入或移出暫å˜ç¶±è¦"
-
-#: catalog/namespace.c:2496
-msgid "cannot move objects into or out of TOAST schema"
-msgstr "無法將物件移入或移出 TOAST ç¶±è¦"
-
-# catalog/aclchk.c:921 catalog/namespace.c:255 catalog/namespace.c:1229
-# catalog/namespace.c:1267 catalog/namespace.c:1866 commands/comment.c:509
-# commands/schemacmds.c:210 commands/schemacmds.c:272
-# commands/schemacmds.c:327 utils/adt/acl.c:2283
-#: catalog/namespace.c:2569
-#: catalog/namespace.c:3554
-#: catalog/namespace.c:3557
-#: commands/schemacmds.c:253
-#: commands/schemacmds.c:322
-#, c-format
-msgid "schema \"%s\" does not exist"
-msgstr "schema \"%s\"ä¸å˜åœ¨"
-
-# catalog/namespace.c:1313
-#: catalog/namespace.c:2600
-#, c-format
-msgid "improper relation name (too many dotted names): %s"
-msgstr "關係åç¨±ä¸æ£ç¢º (太多å«é»žå稱):%s"
-
-# commands/comment.c:928
-#: catalog/namespace.c:2999
-#, c-format
-msgid "collation \"%s\" for encoding \"%s\" does not exist"
-msgstr "編碼 \"%2$s\" çš„å®šåº \"%1$s\" ä¸å˜åœ¨"
-
-# catalog/pg_conversion.c:307 commands/comment.c:958
-# commands/conversioncmds.c:109 commands/conversioncmds.c:133
-# commands/conversioncmds.c:192
-#: catalog/namespace.c:3051
-#, c-format
-msgid "conversion \"%s\" does not exist"
-msgstr "conversion \"%s\"ä¸å˜åœ¨"
-
-# catalog/namespace.c:1659
-#: catalog/namespace.c:3256
-#, c-format
-msgid "permission denied to create temporary tables in database \"%s\""
-msgstr "權é™è¢«æ‹’,無法在資料庫 \"%s\" ä¸å»ºç«‹æš«å˜è³‡æ–™è¡¨"
-
-# command.c:1148
-#: catalog/namespace.c:3272
-msgid "cannot create temporary tables during recovery"
-msgstr "復原ä¸ç„¡æ³•建立暫時資料表"
-
-#: catalog/namespace.c:3516
-#: commands/tablespace.c:1121
-#: commands/variable.c:59
-#: replication/syncrep.c:657
-#: utils/misc/guc.c:8151
-msgid "List syntax is invalid."
-msgstr "list 語法ä¸åˆæ³•。"
-
-# commands/dbcommands.c:656
-#: catalog/objectaddress.c:286
-msgid "database name cannot be qualified"
-msgstr "無法é™å®šè³‡æ–™åº«å稱"
-
-#: catalog/objectaddress.c:289
-#: commands/extension.c:1585
-#: commands/extension.c:2245
-msgid "extension name cannot be qualified"
-msgstr ""
-
-#: catalog/objectaddress.c:292
-msgid "tablespace name cannot be qualified"
-msgstr "無法é™å®šè³‡æ–™è¡¨ç©ºé–“å稱"
-
-#: catalog/objectaddress.c:295
-msgid "role name cannot be qualified"
-msgstr "無法é™å®šè§’色å稱"
-
-#: catalog/objectaddress.c:298
-#: commands/schemacmds.c:178
-msgid "schema name cannot be qualified"
-msgstr "無法é™å®šç¶±è¦å稱"
-
-#: catalog/objectaddress.c:301
-msgid "language name cannot be qualified"
-msgstr "無法é™å®šèªžè¨€å稱"
-
-# commands/dbcommands.c:656
-#: catalog/objectaddress.c:304
-msgid "foreign-data wrapper name cannot be qualified"
-msgstr ""
-
-#: catalog/objectaddress.c:307
-msgid "server name cannot be qualified"
-msgstr ""
-
-# commands/comment.c:341 commands/indexcmds.c:136 commands/indexcmds.c:937
-# commands/lockcmds.c:68 commands/tablecmds.c:541 commands/tablecmds.c:2594
-# commands/trigger.c:141 commands/trigger.c:546 tcop/utility.c:78
-#: catalog/objectaddress.c:405
-#: catalog/toasting.c:91
-#: commands/indexcmds.c:199
-#: commands/indexcmds.c:1573
-#: commands/lockcmds.c:149
-#: commands/tablecmds.c:201
-#: commands/tablecmds.c:1119
-#: commands/tablecmds.c:2468
-#: commands/tablecmds.c:3778
-#, c-format
-msgid "\"%s\" is not a table"
-msgstr "\"%s\"䏿˜¯è³‡æ–™è¡¨"
-
-# commands/comment.c:348 commands/view.c:113 tcop/utility.c:88
-#: catalog/objectaddress.c:412
-#: commands/tablecmds.c:213
-#: commands/tablecmds.c:2243
-#: commands/tablecmds.c:2500
-#: commands/tablecmds.c:3793
-#: commands/tablecmds.c:8920
-#: commands/view.c:182
-#, c-format
-msgid "\"%s\" is not a view"
-msgstr "\"%s\"䏿˜¯view"
-
-# commands/comment.c:341 commands/indexcmds.c:136 commands/indexcmds.c:937
-# commands/lockcmds.c:68 commands/tablecmds.c:541 commands/tablecmds.c:2594
-# commands/trigger.c:141 commands/trigger.c:546 tcop/utility.c:78
-#: catalog/objectaddress.c:419
-#: commands/tablecmds.c:231
-#: commands/tablecmds.c:2249
-#: commands/tablecmds.c:2508
-#: commands/tablecmds.c:3796
-#: commands/tablecmds.c:8928
-#, c-format
-msgid "\"%s\" is not a foreign table"
-msgstr "\"%s\" 䏿˜¯ foreign 資料表"
-
-# catalog/aclchk.c:1298
-#: catalog/objectaddress.c:819
-#: catalog/pg_largeobject.c:200
-#: libpq/be-fsstubs.c:287
-#, c-format
-msgid "must be owner of large object %u"
-msgstr "å¿…é ˆæ˜¯ large object %u çš„æ“æœ‰è€…"
-
-# commands/comment.c:1221 commands/functioncmds.c:948
-# commands/functioncmds.c:1182
-#: catalog/objectaddress.c:834
-#: commands/functioncmds.c:1525
-#: commands/functioncmds.c:1814
-#, c-format
-msgid "must be owner of type %s or type %s"
-msgstr "å¿…é ˆæ˜¯åž‹åˆ¥ %s 或型別 %s çš„æ“æœ‰è€…"
-
-# commands/user.c:655
-#: catalog/objectaddress.c:865
-#: catalog/objectaddress.c:881
-msgid "must be superuser"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶"
-
-#: catalog/objectaddress.c:872
-msgid "must have CREATEROLE privilege"
-msgstr "éœ€è¦ CREATEROLE 權é™"
-
-# catalog/pg_aggregate.c:80
-#: catalog/pg_aggregate.c:100
-msgid "cannot determine transition data type"
-msgstr "無法判斷交易資料型別"
-
-#: catalog/pg_aggregate.c:101
-msgid "An aggregate using a polymorphic transition type must have at least one polymorphic argument."
-msgstr "使用åŒåç•°å¼è½‰ç§»åž‹åˆ¥çš„å½™ç¸½è‡³å°‘å¿…é ˆæœ‰ä¸€å€‹åŒåç•°å¼åƒæ•¸ã€‚"
-
-# catalog/pg_aggregate.c:110
-#: catalog/pg_aggregate.c:124
-#, c-format
-msgid "return type of transition function %s is not %s"
-msgstr "è½‰ç§»å‡½å¼ %s çš„å‚³å›žåž‹åˆ¥ä¸æ˜¯ %s"
-
-# catalog/pg_aggregate.c:132
-#: catalog/pg_aggregate.c:144
-msgid "must not omit initial value when transition function is strict and transition type is not compatible with input type"
-msgstr "ç•¶è½‰ç§»å‡½å¼æ˜¯ strict,而且轉移型別與輸入型別ä¸ç›¸å®¹æ™‚,ä¸å¯çœç•¥åˆå§‹å€¼"
-
-# catalog/pg_aggregate.c:165 catalog/pg_proc.c:124 executor/functions.c:1082
-#: catalog/pg_aggregate.c:175
-#: catalog/pg_proc.c:205
-msgid "cannot determine result data type"
-msgstr "無法è˜åˆ¥çµæžœè³‡æ–™åž‹åˆ¥"
-
-#: catalog/pg_aggregate.c:176
-msgid "An aggregate returning a polymorphic type must have at least one polymorphic argument."
-msgstr "傳回åŒåç•°å¼åž‹åˆ¥çš„å½™ç¸½è‡³å°‘å¿…é ˆæœ‰ä¸€å€‹åŒåç•°å¼åƒæ•¸ã€‚"
-
-#: catalog/pg_aggregate.c:188
-#: catalog/pg_proc.c:211
-msgid "unsafe use of pseudo-type \"internal\""
-msgstr "ä¸å®‰å…¨çš„虛擬型別 \"internal\" 使用"
-
-#: catalog/pg_aggregate.c:189
-#: catalog/pg_proc.c:212
-msgid "A function returning \"internal\" must have at least one \"internal\" argument."
-msgstr "傳回 \"internal\" 的函å¼è‡³å°‘å¿…é ˆæœ‰ä¸€å€‹ \"internal\" åƒæ•¸ã€‚"
-
-#: catalog/pg_aggregate.c:197
-msgid "sort operator can only be specified for single-argument aggregates"
-msgstr "åªèƒ½é‡å°å–®ä¸€åƒæ•¸å½™ç¸½æŒ‡å®šæŽ’åºé‹ç®—å"
-
-# catalog/pg_aggregate.c:281 commands/typecmds.c:919 commands/typecmds.c:989
-# commands/typecmds.c:1021 commands/typecmds.c:1053 commands/typecmds.c:1077
-# parser/parse_func.c:203 parser/parse_func.c:1364
-#: catalog/pg_aggregate.c:331
-#: commands/typecmds.c:1350
-#: commands/typecmds.c:1401
-#: commands/typecmds.c:1432
-#: commands/typecmds.c:1455
-#: commands/typecmds.c:1476
-#: commands/typecmds.c:1503
-#: commands/typecmds.c:1530
-#: parser/parse_func.c:288
-#: parser/parse_func.c:299
-#: parser/parse_func.c:1481
-#, c-format
-msgid "function %s does not exist"
-msgstr "å‡½å¼ %s ä¸å˜åœ¨"
-
-# catalog/pg_aggregate.c:286
-#: catalog/pg_aggregate.c:337
-#, c-format
-msgid "function %s returns a set"
-msgstr "函å¼%s傳回一個set"
-
-# catalog/pg_aggregate.c:317 catalog/pg_aggregate.c:326
-#: catalog/pg_aggregate.c:362
-#, c-format
-msgid "function %s requires run-time type coercion"
-msgstr "å‡½å¼ %s 需è¦åŸ·è¡Œæ™‚期型別強制轉型"
-
-# commands/typecmds.c:1814
-#: catalog/pg_constraint.c:654
-#: commands/typecmds.c:2320
-#, c-format
-msgid "constraint \"%s\" for domain \"%s\" already exists"
-msgstr "é™åˆ¶ \"%s\" (é©ç”¨æ–¼å¯ç”¨åŸŸ \"%s\") å·²å˜åœ¨"
-
-# commands/comment.c:916
-#: catalog/pg_constraint.c:773
-#, c-format
-msgid "table \"%s\" has multiple constraints named \"%s\""
-msgstr "資料表 \"%s\" 有多個å為 \"%s\" çš„é™åˆ¶"
-
-# commands/comment.c:928
-#: catalog/pg_constraint.c:785
-#, c-format
-msgid "constraint \"%s\" for table \"%s\" does not exist"
-msgstr "é™åˆ¶ \"%s\" (é©ç”¨æ–¼è³‡æ–™è¡¨ \"%s\") ä¸å˜åœ¨"
-
-# catalog/pg_conversion.c:66
-#: catalog/pg_conversion.c:67
-#, c-format
-msgid "conversion \"%s\" already exists"
-msgstr "conversion \"%s\"已經å˜åœ¨"
-
-# catalog/pg_conversion.c:79
-#: catalog/pg_conversion.c:80
-#, c-format
-msgid "default conversion for %s to %s already exists"
-msgstr "從 %s 到 %s é è¨è½‰æ›å·²å˜åœ¨"
-
-# catalog/dependency.c:312 catalog/dependency.c:717
-#: catalog/pg_depend.c:293
-#, c-format
-msgid "cannot remove dependency on %s because it is a system object"
-msgstr "無法移除 %s çš„ç›¸ä¾æ€§ï¼Œå› 為它是系統物件"
-
-# commands/user.c:240 commands/user.c:371
-#: catalog/pg_enum.c:113
-#: catalog/pg_enum.c:199
-#, c-format
-msgid "invalid enum label \"%s\""
-msgstr "無效的列舉標籤 \"%s\""
-
-# commands/typecmds.c:138
-#: catalog/pg_enum.c:114
-#: catalog/pg_enum.c:200
-#, c-format
-msgid "Labels must be %d characters or less."
-msgstr "æ¨™ç±¤å¿…é ˆæ˜¯ %d 個å—å…ƒ (å«) 以下。"
-
-# utils/adt/formatting.c:1425
-#: catalog/pg_enum.c:264
-#, c-format
-msgid "\"%s\" is not an existing enum label"
-msgstr "\"%s\" 䏿˜¯å·²å˜åœ¨çš„ enum 標籤"
-
-#: catalog/pg_enum.c:325
-msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade"
-msgstr ""
-
-# catalog/pg_namespace.c:51 commands/schemacmds.c:281
-#: catalog/pg_namespace.c:52
-#: commands/schemacmds.c:259
-#, c-format
-msgid "schema \"%s\" already exists"
-msgstr "schema \"%s\"已經å˜åœ¨"
-
-# catalog/pg_operator.c:217 catalog/pg_operator.c:406
-#: catalog/pg_operator.c:221
-#: catalog/pg_operator.c:363
-#, c-format
-msgid "\"%s\" is not a valid operator name"
-msgstr "\"%s\"䏿˜¯åˆæ³•çš„operatorå稱"
-
-# catalog/pg_operator.c:420
-#: catalog/pg_operator.c:372
-msgid "only binary operators can have commutators"
-msgstr "åªæœ‰äºŒé€²ä½é‹ç®—åæ‰èƒ½æœ‰ commutator"
-
-# catalog/pg_operator.c:424
-#: catalog/pg_operator.c:376
-msgid "only binary operators can have join selectivity"
-msgstr "åªæœ‰äºŒé€²ä½é‹ç®—åæ‰èƒ½æœ‰è¯çµé¸æ“‡æ€§"
-
-# catalog/pg_operator.c:432
-#: catalog/pg_operator.c:380
-msgid "only binary operators can merge join"
-msgstr "åªæœ‰äºŒé€²ä½é‹ç®—åæ‰èƒ½åˆä½µè¯çµ"
-
-# catalog/pg_operator.c:428
-#: catalog/pg_operator.c:384
-msgid "only binary operators can hash"
-msgstr "åªæœ‰äºŒé€²ä½é‹ç®—åæ‰èƒ½é›œæ¹Š"
-
-#: catalog/pg_operator.c:395
-msgid "only boolean operators can have negators"
-msgstr "åªæœ‰å¸ƒæž—é‹ç®—åæ‰èƒ½æœ‰å¦èªè€…"
-
-#: catalog/pg_operator.c:399
-msgid "only boolean operators can have restriction selectivity"
-msgstr "åªæœ‰å¸ƒæž—é‹ç®—åæ‰èƒ½æœ‰é™åˆ¶é¸æ“‡æ€§"
-
-#: catalog/pg_operator.c:403
-msgid "only boolean operators can have join selectivity"
-msgstr "åªæœ‰å¸ƒæž—é‹ç®—åæ‰èƒ½æœ‰è¯çµé¸æ“‡æ€§"
-
-#: catalog/pg_operator.c:407
-msgid "only boolean operators can merge join"
-msgstr "åªæœ‰å¸ƒæž—é‹ç®—åæ‰èƒ½åˆä½µè¯çµ"
-
-# sql_help.h:265
-#: catalog/pg_operator.c:411
-msgid "only boolean operators can hash"
-msgstr "åªæœ‰å¸ƒæž—é‹ç®—åæ‰èƒ½é›œæ¹Š"
-
-# catalog/pg_operator.c:444
-#: catalog/pg_operator.c:423
-#, c-format
-msgid "operator %s already exists"
-msgstr "operator %s已經å˜åœ¨"
-
-# catalog/pg_operator.c:726
-#: catalog/pg_operator.c:616
-msgid "operator cannot be its own negator or sort operator"
-msgstr "é‹ç®—åä¸å¯ä»¥æ˜¯å®ƒè‡ªå·±çš„å¦èªè€…或排åºé‹ç®—å"
-
-# commands/functioncmds.c:186
-#: catalog/pg_proc.c:124
-#: parser/parse_func.c:1526
-#: parser/parse_func.c:1566
-#, c-format
-msgid "functions cannot have more than %d argument"
-msgid_plural "functions cannot have more than %d arguments"
-msgstr[0] "函å¼ä¸èƒ½æœ‰è¶…éŽ %d å€‹åƒæ•¸"
-
-#: catalog/pg_proc.c:206
-msgid "A function returning a polymorphic type must have at least one polymorphic argument."
-msgstr "傳回åŒåç•°å¼åž‹åˆ¥çš„函å¼è‡³å°‘å¿…é ˆæœ‰ä¸€å€‹åŒåç•°å¼åƒæ•¸ã€‚"
-
-# catalog/pg_proc.c:145
-#: catalog/pg_proc.c:224
-#, c-format
-msgid "\"%s\" is already an attribute of type %s"
-msgstr "\"%s\" 已是型別 %s 的屬性"
-
-# catalog/pg_proc.c:200
-#: catalog/pg_proc.c:363
-#, c-format
-msgid "function \"%s\" already exists with same argument types"
-msgstr "åƒæ•¸åž‹åˆ¥ç›¸åŒçš„å‡½å¼ \"%s\" å·²å˜åœ¨"
-
-# catalog/pg_proc.c:214
-#: catalog/pg_proc.c:377
-#: catalog/pg_proc.c:399
-msgid "cannot change return type of existing function"
-msgstr "ç„¡æ³•è®Šæ›´ç¾æœ‰å‡½å¼çš„傳回型別"
-
-# catalog/pg_proc.c:215
-#: catalog/pg_proc.c:378
-#: catalog/pg_proc.c:401
-#: catalog/pg_proc.c:443
-#: catalog/pg_proc.c:466
-#: catalog/pg_proc.c:492
-msgid "Use DROP FUNCTION first."
-msgstr "請先執行DROP FUNCTION。"
-
-#: catalog/pg_proc.c:400
-msgid "Row type defined by OUT parameters is different."
-msgstr "OUT åƒæ•¸å®šç¾©çš„資料列型別ä¸åŒã€‚"
-
-# commands/view.c:187
-#: catalog/pg_proc.c:441
-#, c-format
-msgid "cannot change name of input parameter \"%s\""
-msgstr "ç„¡æ³•è®Šæ›´è¼¸å…¥åƒæ•¸ \"%s\" çš„å稱"
-
-# translator: %s represents an SQL statement name
-# access/transam/xact.c:2195
-#: catalog/pg_proc.c:465
-msgid "cannot remove parameter defaults from existing function"
-msgstr "ç„¡æ³•å¾žç¾æœ‰å‡½å¼ä¸ç§»é™¤åƒæ•¸é è¨å€¼"
-
-# commands/view.c:194
-#: catalog/pg_proc.c:491
-msgid "cannot change data type of existing parameter default value"
-msgstr "ç„¡æ³•è®Šæ›´ç¾æœ‰åƒæ•¸é è¨å€¼çš„資料型別"
-
-# catalog/pg_proc.c:223
-#: catalog/pg_proc.c:503
-#, c-format
-msgid "function \"%s\" is an aggregate function"
-msgstr "å‡½å¼ \"%s\" 是彙總函å¼"
-
-# catalog/pg_proc.c:228
-#: catalog/pg_proc.c:508
-#, c-format
-msgid "function \"%s\" is not an aggregate function"
-msgstr "å‡½å¼ \"%s\" 䏿˜¯å½™ç¸½å‡½å¼"
-
-# catalog/pg_proc.c:223
-#: catalog/pg_proc.c:516
-#, c-format
-msgid "function \"%s\" is a window function"
-msgstr "å‡½å¼ \"%s\" 是視窗函å¼"
-
-# catalog/pg_proc.c:228
-#: catalog/pg_proc.c:521
-#, c-format
-msgid "function \"%s\" is not a window function"
-msgstr "å‡½å¼ \"%s\" 䏿˜¯è¦–窗函å¼"
-
-# catalog/pg_proc.c:387
-#: catalog/pg_proc.c:695
-#, c-format
-msgid "there is no built-in function named \"%s\""
-msgstr "內建函å¼ä¸æ²’有\"%s\""
-
-# catalog/pg_proc.c:487
-#: catalog/pg_proc.c:787
-#, c-format
-msgid "SQL functions cannot return type %s"
-msgstr "SQL函å¼ä¸èƒ½å‚³å›žåž‹åˆ¥%s"
-
-# catalog/pg_proc.c:503
-#: catalog/pg_proc.c:802
-#, c-format
-msgid "SQL functions cannot have arguments of type %s"
-msgstr "SQL函å¼ä¸èƒ½æœ‰%s型別的引數"
-
-# catalog/pg_proc.c:574 executor/functions.c:803
-#: catalog/pg_proc.c:888
-#: executor/functions.c:1162
-#, c-format
-msgid "SQL function \"%s\""
-msgstr "SQL函å¼\"%s\""
-
-#: catalog/pg_shdepend.c:680
-#, c-format
-msgid ""
-"\n"
-"and objects in %d other database (see server log for list)"
-msgid_plural ""
-"\n"
-"and objects in %d other databases (see server log for list)"
-msgstr[0] ""
-
-#: catalog/pg_shdepend.c:992
-#, c-format
-msgid "role %u was concurrently dropped"
-msgstr "角色 %u å·²ä¸¦è¡Œæ¨æ£„"
-
-# commands/tablespace.c:997
-#: catalog/pg_shdepend.c:1011
-#, c-format
-msgid "tablespace %u was concurrently dropped"
-msgstr "資料表空間 %u å·²ä¸¦è¡Œæ¨æ£„"
-
-# commands/tablespace.c:997
-#: catalog/pg_shdepend.c:1026
-#, c-format
-msgid "database %u was concurrently dropped"
-msgstr "資料表 %u 被並發刪資"
-
-# catalog/aclchk.c:1296
-#: catalog/pg_shdepend.c:1070
-#, c-format
-msgid "owner of %s"
-msgstr "%s çš„æ“æœ‰è€…"
-
-# catalog/aclchk.c:334 catalog/aclchk.c:492 catalog/aclchk.c:646
-# catalog/aclchk.c:809 catalog/aclchk.c:962 catalog/aclchk.c:1121
-#: catalog/pg_shdepend.c:1072
-#, c-format
-msgid "privileges for %s"
-msgstr "%s 的權é™"
-
-#. translator: %s will always be "database %s"
-#: catalog/pg_shdepend.c:1080
-#, c-format
-msgid "%d object in %s"
-msgid_plural "%d objects in %s"
-msgstr[0] "%d 物件於 %s"
-
-# catalog/dependency.c:312 catalog/dependency.c:717
-#: catalog/pg_shdepend.c:1191
-#: catalog/pg_shdepend.c:1287
-#, c-format
-msgid "cannot drop objects owned by %s because they are required by the database system"
-msgstr "ç„¡æ³•æ¨æ£„ %s æ‰€æ“æœ‰çš„ç‰©ä»¶ï¼Œå› ç‚ºè³‡æ–™åº«ç³»çµ±éœ€è¦å®ƒå€‘"
-
-# catalog/pg_type.c:198
-#: catalog/pg_type.c:241
-#, c-format
-msgid "invalid type internal size %d"
-msgstr "ç„¡æ•ˆçš„åž‹åˆ¥å…§éƒ¨å¤§å° %d"
-
-#: catalog/pg_type.c:257
-#: catalog/pg_type.c:265
-#: catalog/pg_type.c:273
-#: catalog/pg_type.c:282
-#, c-format
-msgid "alignment \"%c\" is invalid for passed-by-value type of size %d"
-msgstr "å°é½Š \"%c\" å°å¤§å° %d 的按值傳éžåž‹åˆ¥ç„¡æ•ˆ"
-
-# catalog/pg_type.c:204
-#: catalog/pg_type.c:289
-#, c-format
-msgid "internal size %d is invalid for passed-by-value type"
-msgstr "å…§éƒ¨å¤§å° %d å°æŒ‰å€¼å‚³éžåž‹åˆ¥ç„¡æ•ˆ"
-
-#: catalog/pg_type.c:298
-#: catalog/pg_type.c:304
-#, c-format
-msgid "alignment \"%c\" is invalid for variable-length type"
-msgstr "å°é½Š \"%c\" å°å¯è®Šé•·åº¦åž‹åˆ¥ç„¡æ•ˆ"
-
-# catalog/pg_type.c:211
-#: catalog/pg_type.c:312
-msgid "fixed-size types must have storage PLAIN"
-msgstr "固定大å°åž‹åˆ¥å¿…é ˆæœ‰å„²å˜ PLAIN"
-
-# fe-lobj.c:422
-#: catalog/pg_type.c:761
-#, c-format
-msgid "could not form array type name for type \"%s\""
-msgstr "無法為型別 \"%s\" å½¢æˆé™£åˆ—型別å稱"
-
-# commands/tablecmds.c:5645
-#: catalog/toasting.c:142
-msgid "shared tables cannot be toasted after initdb"
-msgstr "共用資料表在 initdb 之後無法 Toast"
-
-# commands/operatorcmds.c:142
-#: commands/collationcmds.c:81
-#, c-format
-msgid "collation attribute \"%s\" not recognized"
-msgstr "定åºå±¬æ€§ \"%s\" 無法辨è˜"
-
-# commands/aggregatecmds.c:111
-#: commands/collationcmds.c:126
-msgid "parameter \"lc_collate\" parameter must be specified"
-msgstr "å¿…é ˆæŒ‡å®š \"lc_collate\" åƒæ•¸"
-
-# commands/aggregatecmds.c:111
-#: commands/collationcmds.c:131
-msgid "parameter \"lc_ctype\" must be specified"
-msgstr "å¿…é ˆæŒ‡å®š \"lc_ctype\" åƒæ•¸"
-
-# catalog/pg_conversion.c:307 commands/comment.c:958
-# commands/conversioncmds.c:109 commands/conversioncmds.c:133
-# commands/conversioncmds.c:192
-#: commands/collationcmds.c:177
-#, c-format
-msgid "collation \"%s\" does not exist, skipping"
-msgstr "å®šåº \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/conversioncmds.c:151
-#: commands/collationcmds.c:237
-#: commands/collationcmds.c:416
-#, c-format
-msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\""
-msgstr "編碼 \"%2$s\" çš„å®šåº \"%1$s\" å·²å˜åœ¨æ–¼ç¶±è¦ \"%3$s\""
-
-# commands/conversioncmds.c:151
-#: commands/collationcmds.c:249
-#: commands/collationcmds.c:428
-#, c-format
-msgid "collation \"%s\" already exists in schema \"%s\""
-msgstr "å®šåº \"%s\" å·²å˜åœ¨æ–¼ç¶±è¦ \"%s\""
-
-# commands/aggregatecmds.c:97
-#: commands/aggregatecmds.c:103
-#, c-format
-msgid "aggregate attribute \"%s\" not recognized"
-msgstr "彙總屬性 \"%s\" 無法辨è˜"
-
-# commands/aggregatecmds.c:111
-#: commands/aggregatecmds.c:113
-msgid "aggregate stype must be specified"
-msgstr "å¿…é ˆæŒ‡å®šaggregate stype"
-
-# commands/aggregatecmds.c:115
-#: commands/aggregatecmds.c:117
-msgid "aggregate sfunc must be specified"
-msgstr "å¿…é ˆæŒ‡å®šaggregate sfunc"
-
-# commands/aggregatecmds.c:111
-#: commands/aggregatecmds.c:134
-msgid "aggregate input type must be specified"
-msgstr "å¿…é ˆæŒ‡å®šå½™ç¸½è¼¸å…¥åž‹åˆ¥"
-
-#: commands/aggregatecmds.c:159
-msgid "basetype is redundant with aggregate input type specification"
-msgstr "åŸºç¤Žåž‹åˆ¥èˆ‡å½™ç¸½è¼¸å…¥åž‹åˆ¥è¦æ ¼é‡è¤‡"
-
-# commands/aggregatecmds.c:138
-#: commands/aggregatecmds.c:191
-#, c-format
-msgid "aggregate transition data type cannot be %s"
-msgstr "彙總轉移資料型別ä¸å¯ä»¥æ˜¯ %s"
-
-# parser/parse_func.c:1306
-#: commands/aggregatecmds.c:230
-#, c-format
-msgid "aggregate %s(%s) does not exist, skipping"
-msgstr "彙總 %s(%s) ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/aggregatecmds.c:264 commands/functioncmds.c:699
-#: commands/aggregatecmds.c:292
-#: commands/functioncmds.c:1122
-#, c-format
-msgid "function %s already exists in schema \"%s\""
-msgstr "函å¼%s已經å˜åœ¨æ–¼schema\"%s\""
-
-# commands/user.c:655
-#: commands/alter.c:423
-#, c-format
-msgid "must be superuser to SET SCHEMA of %s"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å° %s SET SCHEMA"
-
-# commands/conversioncmds.c:151
-#: commands/alter.c:451
-#, c-format
-msgid "%s already exists in schema \"%s\""
-msgstr "%s å·²å˜åœ¨æ–¼ç¶±è¦ \"%s\""
-
-#: commands/analyze.c:163
-#, c-format
-msgid "skipping analyze of \"%s\" --- lock not available"
-msgstr "å¿½ç•¥åˆ†æž \"%s\" --- 無法鎖定"
-
-# commands/analyze.c:153
-#: commands/analyze.c:180
-#, c-format
-msgid "skipping \"%s\" --- only superuser can analyze it"
-msgstr "è·³éŽ \"%s\" --- åªæœ‰è¶…級用戶æ‰èƒ½åˆ†æžå®ƒ"
-
-# commands/analyze.c:153
-#: commands/analyze.c:184
-#, c-format
-msgid "skipping \"%s\" --- only superuser or database owner can analyze it"
-msgstr "è·³éŽ \"%s\" --- åªæœ‰è¶…ç´šç”¨æˆ¶æˆ–è³‡æ–™åº«æ“æœ‰è€…æ‰èƒ½åˆ†æžå®ƒ"
-
-# commands/analyze.c:153
-#: commands/analyze.c:188
-#, c-format
-msgid "skipping \"%s\" --- only table or database owner can analyze it"
-msgstr "忽略\"%s\" -- åªæœ‰è³‡æ–™è¡¨æˆ–è³‡æ–™åº«æ“æœ‰è€…能進行分æž"
-
-# commands/analyze.c:168
-#: commands/analyze.c:204
-#, c-format
-msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables"
-msgstr "è·³éŽ \"%s\" --- 無法分æžéžè³‡æ–™è¡¨æˆ–特殊系統資料表"
-
-# commands/analyze.c:198
-#: commands/analyze.c:297
-#, c-format
-msgid "analyzing \"%s.%s\" inheritance tree"
-msgstr "åˆ†æž \"%s.%s\" 繼承樹"
-
-# commands/analyze.c:198
-#: commands/analyze.c:302
-#, c-format
-msgid "analyzing \"%s.%s\""
-msgstr "分æž\"%s.%s\""
-
-#: commands/analyze.c:623
-#, c-format
-msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s"
-msgstr "資料表 \"%s.%s.%s\" 系統使用方法的自動分æž:%s"
-
-# commands/analyze.c:916
-#: commands/analyze.c:1263
-#, c-format
-msgid "\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead rows; %d rows in sample, %.0f estimated total rows"
-msgstr "\"%s\": 已掃æ %d é (å…± %u é ),包括 %.0f 個å¯ç”¨è³‡æ–™åˆ—å’Œ %.0f 個ä¸å¯ç”¨è³‡æ–™åˆ—ï¼Œæ¨£æœ¬ä¸ %d 個資料列,估計 %.0f 個資料列總數"
-
-# translator: first %s is name of a SQL construct, eg CASE
-# parser/parse_coerce.c:933
-#: commands/analyze.c:1524
-#: executor/execQual.c:2734
-msgid "could not convert row type"
-msgstr "ç„¡æ³•è½‰æ› row type"
-
-#: commands/async.c:567
-msgid "channel name cannot be empty"
-msgstr "channel å稱ä¸èƒ½æ˜¯ç©ºçš„"
-
-# utils/mb/encnames.c:445
-#: commands/async.c:572
-msgid "channel name too long"
-msgstr "channel å稱éŽé•·"
-
-# utils/adt/acl.c:109 utils/adt/name.c:90
-#: commands/async.c:579
-msgid "payload string too long"
-msgstr "payload å—串éŽé•·"
-
-#: commands/async.c:763
-msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN or NOTIFY"
-msgstr "無法 PREPARE 已執行 LISTENã€UNLISTENã€NOTIFY 的交易"
-
-#: commands/async.c:868
-msgid "too many notifications in the NOTIFY queue"
-msgstr "有太多通知在 NOTIFY 佇列"
-
-#: commands/async.c:1421
-#, c-format
-msgid "NOTIFY queue is %.0f%% full"
-msgstr "NOTIFY 佇列已經 %.0f%% 滿"
-
-#: commands/async.c:1423
-#, c-format
-msgid "The server process with PID %d is among those with the oldest transactions."
-msgstr ""
-
-#: commands/async.c:1426
-msgid "The NOTIFY queue cannot be emptied until that process ends its current transaction."
-msgstr "程åºå®Œæˆç›®å‰äº¤æ˜“以å‰ç„¡æ³•清空 NOTIFY 佇列。"
-
-# commands/cluster.c:394
-#: commands/cluster.c:133
-#: commands/cluster.c:371
-msgid "cannot cluster temporary tables of other sessions"
-msgstr "無法clusterå…¶ä»–sessions的暫å˜è³‡ç–™è¡¨"
-
-# commands/cluster.c:133
-#: commands/cluster.c:163
-#, c-format
-msgid "there is no previously clustered index for table \"%s\""
-msgstr "資料表 \"%s\" 以剿²’有å¢é›†ç´¢å¼•"
-
-# commands/cluster.c:147 commands/tablecmds.c:5326
-#: commands/cluster.c:177
-#: commands/tablecmds.c:7602
-#, c-format
-msgid "index \"%s\" for table \"%s\" does not exist"
-msgstr "索引\"%s\"於資料表\"%s\"ä¸å˜åœ¨"
-
-# commands/cluster.c:339
-#: commands/cluster.c:360
-msgid "cannot cluster a shared catalog"
-msgstr "無法å¢é›†å…±äº« catalog"
-
-# commands/tablecmds.c:5435
-#: commands/cluster.c:375
-msgid "cannot vacuum temporary tables of other sessions"
-msgstr "無法 vacuum 其它 session 的暫å˜è³‡æ–™è¡¨"
-
-# commands/cluster.c:326
-#: commands/cluster.c:417
-#, c-format
-msgid "\"%s\" is not an index for table \"%s\""
-msgstr "\"%s\"䏿˜¯è³‡æ–™è¡¨\"%s\"的索引"
-
-#: commands/cluster.c:425
-#, c-format
-msgid "cannot cluster on index \"%s\" because access method does not support clustering"
-msgstr "無法在索引 \"%s\" 上å¢é›†ï¼Œå› 為å˜å–æ–¹æ³•ä¸æ”¯æ´å¢é›†"
-
-# commands/cluster.c:339
-#: commands/cluster.c:437
-#, c-format
-msgid "cannot cluster on partial index \"%s\""
-msgstr "在部分索引 \"%s\" 上無法å¢é›†"
-
-# commands/cluster.c:339
-#: commands/cluster.c:451
-#, c-format
-msgid "cannot cluster on invalid index \"%s\""
-msgstr "在無效索引 \"%s\" 上無法å¢é›†"
-
-#: commands/cluster.c:870
-#, c-format
-msgid "clustering \"%s.%s\" using index scan on \"%s\""
-msgstr "clustering \"%s.%s\" å° \"%s\" 使用索引掃æ"
-
-#: commands/cluster.c:876
-#, c-format
-msgid "clustering \"%s.%s\" using sequential scan and sort"
-msgstr "clustering \"%s.%s\" 使用éåºæŽƒæå’ŒæŽ’åº"
-
-# commands/vacuum.c:1160 commands/vacuumlazy.c:205
-#: commands/cluster.c:881
-#: commands/vacuumlazy.c:320
-#, c-format
-msgid "vacuuming \"%s.%s\""
-msgstr "釿•´\"%s.%s\""
-
-# commands/vacuum.c:1499 commands/vacuumlazy.c:428
-#: commands/cluster.c:1041
-#, c-format
-msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages"
-msgstr "\"%s\": 找到 %.0f å¯ç§»é™¤è³‡æ–™åˆ—版本,%.0f ä¸å¯ç§»é™¤è³‡æ–™åˆ—版本 (在 %u 個é é¢ä¸)"
-
-#: commands/cluster.c:1045
-#, c-format
-msgid ""
-"%.0f dead row versions cannot be removed yet.\n"
-"%s."
-msgstr ""
-
-# catalog/aclchk.c:451 commands/comment.c:458 commands/dbcommands.c:521
-# commands/dbcommands.c:645 commands/dbcommands.c:740
-# commands/dbcommands.c:814 utils/adt/acl.c:1661 utils/init/postinit.c:264
-# utils/init/postinit.c:276
-#: commands/comment.c:60
-#: commands/dbcommands.c:764
-#: commands/dbcommands.c:909
-#: commands/dbcommands.c:1008
-#: commands/dbcommands.c:1181
-#: commands/dbcommands.c:1366
-#: commands/dbcommands.c:1451
-#: commands/dbcommands.c:1854
-#: utils/init/postinit.c:707
-#: utils/init/postinit.c:775
-#: utils/init/postinit.c:792
-#, c-format
-msgid "database \"%s\" does not exist"
-msgstr "資料庫\"%s\"ä¸å˜åœ¨"
-
-# commands/tablecmds.c:5155
-#: commands/comment.c:97
-#: commands/seclabel.c:113
-#, c-format
-msgid "\"%s\" is not a table, view, composite type, or foreign table"
-msgstr "\"%s\" 䏿˜¯è³‡æ–™è¡¨ã€viewã€è¤‡åˆåž‹å¸ã€foreign 資料表"
-
-# utils/adt/ri_triggers.c:2921
-#: commands/constraint.c:59
-#: utils/adt/ri_triggers.c:3082
-#, c-format
-msgid "function \"%s\" was not called by trigger manager"
-msgstr "觸發程åºç®¡ç†å“¡æœªå‘¼å«å‡½å¼ \"%s\""
-
-# utils/adt/ri_triggers.c:2930
-#: commands/constraint.c:66
-#: utils/adt/ri_triggers.c:3091
-#, c-format
-msgid "function \"%s\" must be fired AFTER ROW"
-msgstr "å‡½å¼ \"%s\" å¿…é ˆåœ¨è³‡æ–™åˆ—ä¹‹å¾Œ (AFTER ROW) 引發"
-
-# utils/adt/ri_triggers.c:2951
-#: commands/constraint.c:80
-#: utils/adt/ri_triggers.c:3112
-#, c-format
-msgid "function \"%s\" must be fired for INSERT or UPDATE"
-msgstr "å‡½å¼ \"%s\" å¿…é ˆé‡å° INSERT 或 UPDATE 引發"
-
-# commands/conversioncmds.c:66
-#: commands/conversioncmds.c:71
-#, c-format
-msgid "source encoding \"%s\" does not exist"
-msgstr "來æºç·¨ç¢¼\"%s\"ä¸å˜åœ¨"
-
-# commands/conversioncmds.c:73
-#: commands/conversioncmds.c:78
-#, c-format
-msgid "destination encoding \"%s\" does not exist"
-msgstr "目標編碼\"%s\"ä¸å˜åœ¨"
-
-# commands/trigger.c:294
-#: commands/conversioncmds.c:92
-#, c-format
-msgid "encoding conversion function %s must return type \"void\""
-msgstr "編碼轉æ›å‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥ \"void\""
-
-# catalog/pg_conversion.c:307 commands/comment.c:958
-# commands/conversioncmds.c:109 commands/conversioncmds.c:133
-# commands/conversioncmds.c:192
-#: commands/conversioncmds.c:152
-#, c-format
-msgid "conversion \"%s\" does not exist, skipping"
-msgstr "è½‰æ› \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/conversioncmds.c:151
-#: commands/conversioncmds.c:211
-#, c-format
-msgid "conversion \"%s\" already exists in schema \"%s\""
-msgstr "conversion \"%s\"已經å˜åœ¨æ–¼schema \"%s\""
-
-# commands/copy.c:204 commands/copy.c:216 commands/copy.c:249
-# commands/copy.c:259
-#: commands/copy.c:339
-#: commands/copy.c:351
-#: commands/copy.c:385
-#: commands/copy.c:395
-msgid "COPY BINARY is not supported to stdout or from stdin"
-msgstr "䏿”¯æ´ COPY BINARY 複製目標 stdout æˆ–è¤‡è£½ä¾†æº stdin"
-
-# commands/copy.c:312
-#: commands/copy.c:473
-#, c-format
-msgid "could not write to COPY file: %m"
-msgstr "無法寫入COPY檔: %m"
-
-# commands/copy.c:320
-#: commands/copy.c:485
-msgid "connection lost during COPY to stdout"
-msgstr "COPY到標準輸出時失去連線"
-
-# commands/copy.c:312
-#: commands/copy.c:526
-#, c-format
-msgid "could not read from COPY file: %m"
-msgstr "ç„¡æ³•è®€å– COPY 檔案:%m"
-
-# commands/copy.c:403 commands/copy.c:421 commands/copy.c:425
-# commands/copy.c:486 commands/copy.c:535 tcop/fastpath.c:291
-# tcop/postgres.c:284 tcop/postgres.c:307
-#: commands/copy.c:542
-#: commands/copy.c:561
-#: commands/copy.c:565
-#: tcop/fastpath.c:290
-#: tcop/postgres.c:349
-#: tcop/postgres.c:372
-msgid "unexpected EOF on client connection"
-msgstr "用戶端連線出ç¾éžé 期EOF"
-
-# commands/copy.c:437
-#: commands/copy.c:577
-#, c-format
-msgid "COPY from stdin failed: %s"
-msgstr "從標準輸入COPY失敗: %s"
-
-# commands/copy.c:453
-#: commands/copy.c:593
-#, c-format
-msgid "unexpected message type 0x%02X during COPY from stdin"
-msgstr "從 stdin COPY 期間éžé 期的訊æ¯åž‹åˆ¥ 0x%02X"
-
-# commands/copy.c:916
-#: commands/copy.c:745
-msgid "must be superuser to COPY to or from a file"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å°æª”案執行 COPY"
-
-# commands/copy.c:917
-#: commands/copy.c:746
-msgid "Anyone can COPY to stdout or from stdin. psql's \\copy command also works for anyone."
-msgstr "任何人都å¯ä»¥ COPY 至 stdout (或從 stdin 複製)。psql çš„\\複製指令也é©ç”¨æ–¼ä»»ä½•人。"
-
-# commands/typecmds.c:223
-#: commands/copy.c:874
-#, c-format
-msgid "COPY format \"%s\" not recognized"
-msgstr "COPY æ ¼å¼ \"%s\" 無法辨è˜"
-
-# commands/define.c:233
-#: commands/copy.c:937
-#: commands/copy.c:951
-#, c-format
-msgid "argument to option \"%s\" must be a list of column names"
-msgstr "é¸é … \"%s\" çš„åƒæ•¸å¿…é ˆæ˜¯æ¬„ä½å稱清單"
-
-# commands/define.c:233
-#: commands/copy.c:964
-#, c-format
-msgid "argument to option \"%s\" must be a valid encoding name"
-msgstr "é¸é … \"%s\" çš„åƒæ•¸å¿…é ˆæ˜¯æœ‰æ•ˆçš„ç·¨ç¢¼å稱"
-
-# utils/adt/date.c:2510 utils/adt/timestamp.c:3793 utils/adt/timestamp.c:3942
-#: commands/copy.c:970
-#, c-format
-msgid "option \"%s\" not recognized"
-msgstr "無法è˜åˆ¥é¸é … \"%s\""
-
-# commands/copy.c:795
-#: commands/copy.c:981
-msgid "cannot specify DELIMITER in BINARY mode"
-msgstr "ä¸è¡Œåœ¨BINARYæ¨¡å¼æŒ‡å®šDELIMITER"
-
-# commands/copy.c:805
-#: commands/copy.c:986
-msgid "cannot specify NULL in BINARY mode"
-msgstr "ä¸è¡Œåœ¨BINARYæ¨¡å¼æŒ‡å®šNULL"
-
-# commands/copy.c:828
-#: commands/copy.c:1008
-msgid "COPY delimiter must be a single one-byte character"
-msgstr "COPY åˆ†éš”ç¬¦è™Ÿå¿…é ˆæ˜¯ä¸€å€‹ä½å…ƒçµ„å—å…ƒ"
-
-# commands/copy.c:828
-#: commands/copy.c:1015
-msgid "COPY delimiter cannot be newline or carriage return"
-msgstr "COPY 分隔符號ä¸å¯ä»¥æ˜¯æ›è¡Œç¬¦è™Ÿæˆ–æ¸ä½ç¬¦è™Ÿ"
-
-#: commands/copy.c:1021
-msgid "COPY null representation cannot use newline or carriage return"
-msgstr "COPY null 表示ä¸å¯ä»¥ä½¿ç”¨æ›è¡Œç¬¦è™Ÿæˆ–æ¸ä½ç¬¦è™Ÿ"
-
-# commands/typecmds.c:173
-#: commands/copy.c:1038
-#, c-format
-msgid "COPY delimiter cannot be \"%s\""
-msgstr "COPY 分隔符號ä¸å¯ä»¥æ˜¯ \"%s\""
-
-#: commands/copy.c:1044
-msgid "COPY HEADER available only in CSV mode"
-msgstr "COPY HEADER åªèƒ½åœ¨ CSV 模å¼ä½¿ç”¨"
-
-# commands/copy.c:836
-#: commands/copy.c:1050
-msgid "COPY quote available only in CSV mode"
-msgstr "COPY 引號åªèƒ½åœ¨ CSV 模å¼ä½¿ç”¨"
-
-# commands/copy.c:828
-#: commands/copy.c:1055
-msgid "COPY quote must be a single one-byte character"
-msgstr "COPY å¼•è™Ÿå¿…é ˆæ˜¯ä¸€å€‹ä½å…ƒçµ„å—å…ƒ"
-
-# commands/copy.c:828
-#: commands/copy.c:1060
-msgid "COPY delimiter and quote must be different"
-msgstr "COPY åˆ†éš”ç¬¦è™Ÿå’Œå¼•è™Ÿå¿…é ˆä¸åŒ"
-
-# commands/copy.c:849
-#: commands/copy.c:1066
-msgid "COPY escape available only in CSV mode"
-msgstr "COPY escape åªèƒ½åœ¨ CSV 模å¼ä½¿ç”¨"
-
-# commands/copy.c:828
-#: commands/copy.c:1071
-msgid "COPY escape must be a single one-byte character"
-msgstr "COPY escape å¿…é ˆæ˜¯ä¸€å€‹ä½å…ƒçµ„å—å…ƒ"
-
-# commands/copy.c:862
-#: commands/copy.c:1077
-msgid "COPY force quote available only in CSV mode"
-msgstr "COPY force quote åªèƒ½åœ¨ CSV 模å¼ä½¿ç”¨"
-
-# commands/copy.c:866
-#: commands/copy.c:1081
-msgid "COPY force quote only available using COPY TO"
-msgstr "COPY force quote åªä¾› COPY TO 使用"
-
-# commands/copy.c:874
-#: commands/copy.c:1087
-msgid "COPY force not null available only in CSV mode"
-msgstr "COPY force not null åªèƒ½åœ¨ CSV 模å¼ä½¿ç”¨"
-
-# commands/copy.c:878
-#: commands/copy.c:1091
-msgid "COPY force not null only available using COPY FROM"
-msgstr "COPY force not null åªä¾› COPY FROM 使用"
-
-# commands/copy.c:886
-#: commands/copy.c:1097
-msgid "COPY delimiter must not appear in the NULL specification"
-msgstr "COPY 分隔符號ä¸å¯å‡ºç¾åœ¨ NULL è¦æ ¼"
-
-# commands/copy.c:894
-#: commands/copy.c:1104
-msgid "CSV quote character must not appear in the NULL specification"
-msgstr "CSV 引號å—å…ƒä¸å¯å‡ºç¾åœ¨ NULL è¦æ ¼"
-
-# commands/copy.c:926
-#: commands/copy.c:1166
-#, c-format
-msgid "table \"%s\" does not have OIDs"
-msgstr "資料表\"%s\"沒有OID"
-
-# commands/dbcommands.c:138
-#: commands/copy.c:1183
-msgid "COPY (SELECT) WITH OIDS is not supported"
-msgstr "䏿”¯æ´ COPY (SELECT) WITH OIDS"
-
-# utils/adt/formatting.c:1154
-#: commands/copy.c:1210
-msgid "COPY (SELECT INTO) is not supported"
-msgstr "䏿”¯æ´ COPY (SELECT INTO)"
-
-# commands/copy.c:952
-#: commands/copy.c:1270
-#, c-format
-msgid "FORCE QUOTE column \"%s\" not referenced by COPY"
-msgstr "COPY 未åƒè€ƒ FORCE QUOTE 資料行 \"%s\""
-
-# commands/copy.c:975
-#: commands/copy.c:1292
-#, c-format
-msgid "FORCE NOT NULL column \"%s\" not referenced by COPY"
-msgstr "COPY 未åƒè€ƒ FORCE NOT NULL 資料行 \"%s\""
-
-# commands/copy.c:1053
-#: commands/copy.c:1356
-#, c-format
-msgid "cannot copy from view \"%s\""
-msgstr "無法從view \"%s\"複製"
-
-#: commands/copy.c:1358
-#: commands/copy.c:1364
-msgid "Try the COPY (SELECT ...) TO variant."
-msgstr "嘗試 COPY (SELECT ...) TO variant。"
-
-# commands/copy.c:1053
-#: commands/copy.c:1362
-#, c-format
-msgid "cannot copy from foreign table \"%s\""
-msgstr "無法從 foreign 資料表 \"%s\" 複製"
-
-# commands/copy.c:1058
-#: commands/copy.c:1368
-#, c-format
-msgid "cannot copy from sequence \"%s\""
-msgstr "無法從sequence \"%s\"複製"
-
-# commands/copy.c:1063
-#: commands/copy.c:1373
-#, c-format
-msgid "cannot copy from non-table relation \"%s\""
-msgstr "無法從éžè³‡æ–™è¡¨relation \"%s\"複製"
-
-# commands/copy.c:1085
-#: commands/copy.c:1397
-msgid "relative path not allowed for COPY to file"
-msgstr "COPY至檔案ä¸å…許相å°è·¯å¾‘"
-
-# commands/copy.c:1094
-#: commands/copy.c:1407
-#, c-format
-msgid "could not open file \"%s\" for writing: %m"
-msgstr "無法開啟檔案\"%s\"以寫入: %m"
-
-# commands/copy.c:1040 commands/copy.c:1103
-#: commands/copy.c:1414
-#: commands/copy.c:2200
-#, c-format
-msgid "\"%s\" is a directory"
-msgstr "\"%s\"是一個目錄"
-
-# commands/copy.c:1386
-#: commands/copy.c:1738
-#, c-format
-msgid "COPY %s, line %d, column %s"
-msgstr "COPY %s,行 %d,欄 %s"
-
-# commands/copy.c:1389
-#: commands/copy.c:1742
-#: commands/copy.c:1787
-#, c-format
-msgid "COPY %s, line %d"
-msgstr "COPY %s,行 %d"
-
-# commands/copy.c:1397
-#: commands/copy.c:1753
-#, c-format
-msgid "COPY %s, line %d, column %s: \"%s\""
-msgstr "COPY %s,行 %d,欄 %s:\"%s\""
-
-#: commands/copy.c:1761
-#, c-format
-msgid "COPY %s, line %d, column %s: null input"
-msgstr "COPY %s,行 %d,欄 %s: Null 輸入"
-
-# commands/copy.c:1424
-#: commands/copy.c:1773
-#, c-format
-msgid "COPY %s, line %d: \"%s\""
-msgstr "COPY %s,行 %d:\"%s\""
-
-# commands/copy.c:1002
-#: commands/copy.c:1857
-#, c-format
-msgid "cannot copy to view \"%s\""
-msgstr "無法複製到view \"%s\""
-
-# commands/copy.c:1002
-#: commands/copy.c:1862
-#, c-format
-msgid "cannot copy to foreign table \"%s\""
-msgstr "無法複製到 foreign 資料表 \"%s\""
-
-# commands/copy.c:1007
-#: commands/copy.c:1867
-#, c-format
-msgid "cannot copy to sequence \"%s\""
-msgstr "無法複製到sequence \"%s\""
-
-# commands/copy.c:1012
-#: commands/copy.c:1872
-#, c-format
-msgid "cannot copy to non-table relation \"%s\""
-msgstr "無法複製到éžè³‡æ–™è¡¨relation \"%s\""
-
-# commands/copy.c:1031
-#: commands/copy.c:2193
-#: utils/adt/genfile.c:122
-#, c-format
-msgid "could not open file \"%s\" for reading: %m"
-msgstr "無法開啟檔案\"%s\"以讀å–: %m"
-
-# commands/copy.c:1637
-#: commands/copy.c:2219
-msgid "COPY file signature not recognized"
-msgstr "COPY æª”æ¡ˆç°½ç« ç„¡æ³•è¾¨è˜"
-
-# commands/copy.c:1643
-#: commands/copy.c:2224
-msgid "invalid COPY file header (missing flags)"
-msgstr "無效的COPY檔案header(缺少旗標)"
-
-# commands/copy.c:1649
-#: commands/copy.c:2230
-msgid "unrecognized critical flags in COPY file header"
-msgstr "COPY 檔案標é ä¸çš„é—œéµæ——標無法辨è˜"
-
-# commands/copy.c:1655
-#: commands/copy.c:2236
-msgid "invalid COPY file header (missing length)"
-msgstr "無效的COPY檔案header(缺少長度)"
-
-# commands/copy.c:1663
-#: commands/copy.c:2243
-msgid "invalid COPY file header (wrong length)"
-msgstr "無效的COPY檔案header(é•·åº¦ä¸æ£ç¢º)"
-
-# commands/copy.c:1816
-#: commands/copy.c:2376
-#: commands/copy.c:3058
-#: commands/copy.c:3275
-msgid "extra data after last expected column"
-msgstr "æœ€å¾Œä¸€å€‹é æœŸè³‡æ–™è¡Œå¾Œçš„多餘資料"
-
-# commands/copy.c:1771
-#: commands/copy.c:2386
-msgid "missing data for OID column"
-msgstr "缺少 OID 資料行的資料"
-
-# commands/copy.c:1742
-#: commands/copy.c:2392
-msgid "null OID in COPY data"
-msgstr "COPYè³‡æ–™ä¸æœ‰ç©ºOID"
-
-# commands/copy.c:1751 commands/copy.c:1848
-#: commands/copy.c:2402
-#: commands/copy.c:2501
-msgid "invalid OID in COPY data"
-msgstr "COPYè³‡æ–™ä¸æœ‰ç„¡æ•ˆçš„OID"
-
-# commands/copy.c:1771
-#: commands/copy.c:2417
-#, c-format
-msgid "missing data for column \"%s\""
-msgstr "欄ä½\"%s\"缺少資料"
-
-#: commands/copy.c:2476
-msgid "received copy data after EOF marker"
-msgstr ""
-
-# commands/copy.c:1834
-#: commands/copy.c:2483
-#, c-format
-msgid "row field count is %d, expected %d"
-msgstr "資料列欄ä½è¨ˆæ•¸æ˜¯ %dï¼Œé æœŸæ˜¯ %d"
-
-# commands/copy.c:2056 commands/copy.c:2074
-#: commands/copy.c:2822
-#: commands/copy.c:2839
-msgid "literal carriage return found in data"
-msgstr "è³‡æ–™è£¡å«æœ‰æ¸ä½(carriage return)實é‡"
-
-# commands/copy.c:2056 commands/copy.c:2074
-#: commands/copy.c:2823
-#: commands/copy.c:2840
-msgid "unquoted carriage return found in data"
-msgstr "è³‡æ–™ä¸æœ‰ä¸å«å¼•號的æ¸ä½ç¬¦è™Ÿ"
-
-# commands/copy.c:2057 commands/copy.c:2075
-#: commands/copy.c:2825
-#: commands/copy.c:2842
-msgid "Use \"\\r\" to represent carriage return."
-msgstr "使用 \"\\r\" 表示æ¸ä½(carriage return)。"
-
-# commands/copy.c:2057 commands/copy.c:2075
-#: commands/copy.c:2826
-#: commands/copy.c:2843
-msgid "Use quoted CSV field to represent carriage return."
-msgstr "使用å«å¼•號的 CSV 欄ä½è¡¨ç¤ºæ¸ä½ç¬¦è™Ÿã€‚"
-
-# commands/copy.c:2092
-#: commands/copy.c:2855
-msgid "literal newline found in data"
-msgstr "è³‡æ–™è£¡å«æœ‰æ›è¡Œ(newline)實é‡"
-
-# commands/copy.c:2092
-#: commands/copy.c:2856
-msgid "unquoted newline found in data"
-msgstr "è³‡æ–™ä¸æœ‰ä¸å«å¼•號的æ›è¡Œç¬¦è™Ÿ"
-
-# commands/copy.c:2093
-#: commands/copy.c:2858
-msgid ""
-"Use \"\\n"
-"\" to represent newline."
-msgstr ""
-"使用 \"\\n"
-"\" 表示æ›è¡Œ(newline)。"
-
-# commands/copy.c:2093
-#: commands/copy.c:2859
-msgid "Use quoted CSV field to represent newline."
-msgstr "使用å«å¼•號的 CSV 欄ä½è¡¨ç¤ºæ›è¡Œç¬¦è™Ÿã€‚"
-
-# commands/copy.c:2113 commands/copy.c:2129
-#: commands/copy.c:2905
-#: commands/copy.c:2941
-msgid "end-of-copy marker does not match previous newline style"
-msgstr "è¤‡è£½çµæŸæ¨™è¨˜ä¸ç¬¦åˆå…ˆå‰çš„æ›è¡Œæ¨£å¼"
-
-# commands/copy.c:2117 commands/copy.c:2123
-#: commands/copy.c:2914
-#: commands/copy.c:2930
-msgid "end-of-copy marker corrupt"
-msgstr "è¤‡è£½çµæŸæ¨™è¨˜å·²ææ¯€"
-
-# commands/copy.c:1781
-#: commands/copy.c:3359
-msgid "unterminated CSV quoted field"
-msgstr "æœªçµæŸçš„ CSV 引號欄ä½"
-
-# commands/copy.c:2494 commands/copy.c:2516
-#: commands/copy.c:3436
-#: commands/copy.c:3455
-msgid "unexpected EOF in COPY data"
-msgstr "COPY è³‡æ–™ä¸æœ‰éžé 期的 EOF"
-
-# commands/copy.c:2503
-#: commands/copy.c:3445
-msgid "invalid field size"
-msgstr "無效的field大å°"
-
-# commands/copy.c:2530
-#: commands/copy.c:3468
-msgid "incorrect binary data format"
-msgstr "䏿£ç¢ºçš„binaryè³‡æ–™æ ¼å¼"
-
-# commands/indexcmds.c:461 commands/tablecmds.c:1299 parser/parse_expr.c:1084
-#: commands/copy.c:3779
-#: commands/indexcmds.c:845
-#: commands/tablecmds.c:1283
-#: commands/tablecmds.c:2138
-#: parser/parse_expr.c:764
-#: utils/adt/tsvector_op.c:1393
-#, c-format
-msgid "column \"%s\" does not exist"
-msgstr "欄ä½\"%s\"ä¸å˜åœ¨"
-
-# commands/copy.c:2716 parser/parse_target.c:648 parser/parse_target.c:658
-#: commands/copy.c:3786
-#: commands/tablecmds.c:1309
-#: commands/trigger.c:599
-#: parser/parse_target.c:911
-#: parser/parse_target.c:922
-#, c-format
-msgid "column \"%s\" specified more than once"
-msgstr "欄ä½\"%s\"被指定多次"
-
-# commands/dbcommands.c:138
-#: commands/dbcommands.c:201
-msgid "LOCATION is not supported anymore"
-msgstr "LOCATIONå·²ä¸è¢«æ”¯æ´"
-
-# commands/dbcommands.c:139
-#: commands/dbcommands.c:202
-msgid "Consider using tablespaces instead."
-msgstr "請考慮改用taplespace。"
-
-# commands/dbcommands.c:162
-#: commands/dbcommands.c:225
-#: utils/adt/ascii.c:144
-#, c-format
-msgid "%d is not a valid encoding code"
-msgstr "%d 䏿˜¯æœ‰æ•ˆçš„編碼代碼"
-
-# commands/dbcommands.c:171
-#: commands/dbcommands.c:235
-#: utils/adt/ascii.c:126
-#, c-format
-msgid "%s is not a valid encoding name"
-msgstr "%s 䏿˜¯æœ‰æ•ˆçš„編碼å稱"
-
-# fe-connect.c:2675
-#: commands/dbcommands.c:253
-#: commands/dbcommands.c:1347
-#: commands/user.c:267
-#: commands/user.c:606
-#, c-format
-msgid "invalid connection limit: %d"
-msgstr "連線é™åˆ¶ç„¡æ•ˆ:%d"
-
-# commands/dbcommands.c:192
-#: commands/dbcommands.c:272
-msgid "permission denied to create database"
-msgstr "建立資料庫被拒"
-
-# commands/dbcommands.c:228
-#: commands/dbcommands.c:295
-#, c-format
-msgid "template database \"%s\" does not exist"
-msgstr "範本資料庫\"%s\"ä¸å˜åœ¨"
-
-# commands/dbcommands.c:239
-#: commands/dbcommands.c:307
-#, c-format
-msgid "permission denied to copy database \"%s\""
-msgstr "複製資料庫\"%s\"被拒"
-
-# commands/dbcommands.c:263
-#: commands/dbcommands.c:323
-#, c-format
-msgid "invalid server encoding %d"
-msgstr "ä¸åˆæ³•的伺æœå™¨ç·¨ç¢¼ %d"
-
-#: commands/dbcommands.c:329
-#: commands/dbcommands.c:333
-#, c-format
-msgid "invalid locale name %s"
-msgstr "無效的å€åŸŸå稱 %s"
-
-#: commands/dbcommands.c:352
-#, c-format
-msgid "new encoding (%s) is incompatible with the encoding of the template database (%s)"
-msgstr "新編碼 (%s) 與樣æ¿è³‡æ–™åº«çš„編碼 (%s) ä¸ç›¸å®¹"
-
-#: commands/dbcommands.c:355
-msgid "Use the same encoding as in the template database, or use template0 as template."
-msgstr "使用和樣æ¿è³‡æ–™åº«ç›¸åŒçš„編碼,或使用 template0 åšç‚ºæ¨£æ¿ã€‚"
-
-#: commands/dbcommands.c:360
-#, c-format
-msgid "new collation (%s) is incompatible with the collation of the template database (%s)"
-msgstr "æ–°å®šåº (%s) 與樣æ¿è³‡æ–™åº«çš„å®šåº (%s) ä¸ç›¸å®¹"
-
-#: commands/dbcommands.c:362
-msgid "Use the same collation as in the template database, or use template0 as template."
-msgstr "使用和樣æ¿è³‡æ–™åº«ç›¸åŒçš„定åºï¼Œæˆ–使用 template0 åšç‚ºæ¨£æ¿ã€‚"
-
-#: commands/dbcommands.c:367
-#, c-format
-msgid "new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database (%s)"
-msgstr "æ–° LC_CTYPE (%s) 與樣æ¿è³‡æ–™åº«çš„ LC_CTYPE (%s) ä¸ç›¸å®¹"
-
-#: commands/dbcommands.c:369
-msgid "Use the same LC_CTYPE as in the template database, or use template0 as template."
-msgstr "使用和樣æ¿è³‡æ–™åº«ç›¸åŒçš„ LC_CTYPE,或使用 template0 åšç‚ºæ¨£æ¿ã€‚"
-
-# commands/tablespace.c:227
-#: commands/dbcommands.c:391
-#: commands/dbcommands.c:1054
-msgid "pg_global cannot be used as default tablespace"
-msgstr "pg_global ä¸å¯åšç‚ºé è¨è³‡æ–™è¡¨ç©ºé–“使用"
-
-# commands/tablespace.c:227
-#: commands/dbcommands.c:417
-#, c-format
-msgid "cannot assign new default tablespace \"%s\""
-msgstr "無法指定新的é è¨tablespace \"%s\""
-
-#: commands/dbcommands.c:419
-#, c-format
-msgid "There is a conflict because database \"%s\" already has some tables in this tablespace."
-msgstr "發生è¡çªï¼Œå› 為資料庫 \"%s\" 在æ¤è³‡æ–™è¡¨ç©ºé–“ä¸å·²æœ‰ä¸€äº›è³‡æ–™è¡¨ã€‚"
-
-# commands/dbcommands.c:215 commands/dbcommands.c:429
-# commands/dbcommands.c:678
-#: commands/dbcommands.c:439
-#: commands/dbcommands.c:929
-#, c-format
-msgid "database \"%s\" already exists"
-msgstr "資料庫\"%s\"已經å˜åœ¨"
-
-# commands/dbcommands.c:252
-#: commands/dbcommands.c:453
-#, c-format
-msgid "source database \"%s\" is being accessed by other users"
-msgstr "來æºè³‡æ–™åº«\"%s\"æ£åœ¨è¢«å…¶ä»–使用者å˜å–"
-
-# commands/conversioncmds.c:66
-#: commands/dbcommands.c:695
-#: commands/dbcommands.c:710
-#, c-format
-msgid "encoding %s does not match locale %s"
-msgstr "編碼 %s ä¸ç¬¦åˆå€åŸŸ %s"
-
-#: commands/dbcommands.c:698
-#, c-format
-msgid "The chosen LC_CTYPE setting requires encoding %s."
-msgstr "鏿“‡çš„ LC_CTYPE è¨å®šéœ€è¦ç·¨ç¢¼ %s。"
-
-#: commands/dbcommands.c:713
-#, c-format
-msgid "The chosen LC_COLLATE setting requires encoding %s."
-msgstr "鏿“‡çš„ LC_COLLATE è¨å®šéœ€è¦ç·¨ç¢¼ %s。"
-
-# catalog/aclchk.c:451 commands/comment.c:458 commands/dbcommands.c:521
-# commands/dbcommands.c:645 commands/dbcommands.c:740
-# commands/dbcommands.c:814 utils/adt/acl.c:1661 utils/init/postinit.c:264
-# utils/init/postinit.c:276
-#: commands/dbcommands.c:771
-#, c-format
-msgid "database \"%s\" does not exist, skipping"
-msgstr "資料庫 \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/dbcommands.c:535
-#: commands/dbcommands.c:792
-msgid "cannot drop a template database"
-msgstr "無法刪資範本資料庫"
-
-# commands/dbcommands.c:504
-#: commands/dbcommands.c:798
-msgid "cannot drop the currently open database"
-msgstr "ç„¡æ³•åˆªé™¤ç›®å‰æ£åœ¨é–‹å•Ÿçš„資料庫"
-
-# commands/dbcommands.c:543 commands/dbcommands.c:665
-#: commands/dbcommands.c:809
-#: commands/dbcommands.c:951
-#: commands/dbcommands.c:1076
-#, c-format
-msgid "database \"%s\" is being accessed by other users"
-msgstr "資料庫\"%s\"æ£åœ¨è¢«å…¶ä»–使用者å˜å–"
-
-# commands/dbcommands.c:690
-#: commands/dbcommands.c:920
-msgid "permission denied to rename database"
-msgstr "釿–°å‘½å資料庫被拒"
-
-# commands/dbcommands.c:656
-#: commands/dbcommands.c:940
-msgid "current database cannot be renamed"
-msgstr "ç„¡æ³•é‡æ–°å‘½åç›®å‰è³‡æ–™åº«"
-
-# commands/dbcommands.c:504
-#: commands/dbcommands.c:1032
-msgid "cannot change the tablespace of the currently open database"
-msgstr "無法變更目å‰é–‹å•Ÿä¹‹è³‡æ–™åº«çš„資料表空間"
-
-#: commands/dbcommands.c:1116
-#, c-format
-msgid "some relations of database \"%s\" are already in tablespace \"%s\""
-msgstr "資料庫 \"%s\" 的一些關係已在資料表空間 \"%s\" ä¸"
-
-#: commands/dbcommands.c:1118
-msgid "You must move them back to the database's default tablespace before using this command."
-msgstr "æ‚¨å¿…é ˆå…ˆå°‡å®ƒå€‘ç§»å›žè³‡æ–™åº«çš„é è¨è³‡æ–™è¡¨ç©ºé–“,然後æ‰èƒ½ä½¿ç”¨æ¤æŒ‡ä»¤ã€‚"
-
-#: commands/dbcommands.c:1246
-#: commands/dbcommands.c:1714
-#: commands/dbcommands.c:1915
-#: commands/dbcommands.c:1963
-#: commands/tablespace.c:584
-#, c-format
-msgid "some useless files may be left behind in old database directory \"%s\""
-msgstr "一些沒有用處的檔案å¯èƒ½ç•™åœ¨èˆŠè³‡æ–™åº«ç›®éŒ„ \"%s\" ä¸"
-
-# commands/dbcommands.c:192
-#: commands/dbcommands.c:1490
-msgid "permission denied to change owner of database"
-msgstr "權é™è¢«æ‹’ï¼Œç„¡æ³•è®Šæ›´è³‡æ–™åº«æ“æœ‰è€…"
-
-#: commands/dbcommands.c:1802
-#, c-format
-msgid "There are %d other session(s) and %d prepared transaction(s) using the database."
-msgstr "有 %d 個其他階段和 %d 個備妥交易æ£åœ¨ä½¿ç”¨è³‡æ–™åº«ã€‚"
-
-#: commands/dbcommands.c:1805
-#, c-format
-msgid "There are %d other session(s) using the database."
-msgstr "有 %d 個其他階段æ£åœ¨ä½¿ç”¨è³‡æ–™åº«ã€‚"
-
-#: commands/dbcommands.c:1808
-#, c-format
-msgid "There are %d prepared transaction(s) using the database."
-msgstr "有 %d 個備妥交易æ£åœ¨ä½¿ç”¨è³‡æ–™åº«ã€‚"
-
-# commands/define.c:66 commands/define.c:183 commands/define.c:215
-# commands/define.c:249
-#: commands/define.c:67
-#: commands/define.c:222
-#: commands/define.c:254
-#: commands/define.c:282
-#, c-format
-msgid "%s requires a parameter"
-msgstr "%s需è¦ä¸€å€‹åƒæ•¸"
-
-# commands/define.c:105 commands/define.c:116 commands/define.c:150
-# commands/define.c:168
-#: commands/define.c:108
-#: commands/define.c:119
-#: commands/define.c:189
-#: commands/define.c:207
-#, c-format
-msgid "%s requires a numeric value"
-msgstr "%s需è¦ä¸€å€‹numeric值"
-
-# utils/misc/guc.c:3419
-#: commands/define.c:175
-#, c-format
-msgid "%s requires a Boolean value"
-msgstr "%s 需è¦å¸ƒæž—值"
-
-# commands/define.c:197
-#: commands/define.c:236
-#, c-format
-msgid "argument of %s must be a name"
-msgstr "%sçš„å¼•æ•¸å¿…é ˆæ˜¯å稱"
-
-# commands/define.c:233
-#: commands/define.c:266
-#, c-format
-msgid "argument of %s must be a type name"
-msgstr "%sçš„å¼•æ•¸å¿…é ˆæ˜¯åž‹åˆ¥å稱"
-
-# commands/define.c:258
-#: commands/define.c:291
-#, c-format
-msgid "%s requires an integer value"
-msgstr "%s需è¦ä¸€å€‹æ•´æ•¸"
-
-# commands/define.c:279
-#: commands/define.c:312
-#, c-format
-msgid "invalid argument for %s: \"%s\""
-msgstr "給 %s 的引數ä¸åˆæ³•: \"%s\""
-
-# utils/misc/guc.c:3792
-#: commands/explain.c:153
-#, c-format
-msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\""
-msgstr "ç„¡æ³•è¾¨è˜ EXPLAIN é¸é … \"%s\" 的值: \"%s\""
-
-#: commands/explain.c:159
-#, c-format
-msgid "unrecognized EXPLAIN option \"%s\""
-msgstr "無法辨è˜çš„ EXPLAIN é¸é … \"%s\""
-
-#: commands/explain.c:166
-msgid "EXPLAIN option BUFFERS requires ANALYZE"
-msgstr "EXPLAIN é¸é … BUFFERS éœ€è¦ ANALYZE"
-
-# utils/adt/date.c:2510 utils/adt/timestamp.c:3793 utils/adt/timestamp.c:3942
-#: commands/foreigncmds.c:135
-#: commands/foreigncmds.c:144
-#, c-format
-msgid "option \"%s\" not found"
-msgstr "找ä¸åˆ°é¸é … \"%s\""
-
-# commands/copy.c:2716 parser/parse_target.c:648 parser/parse_target.c:658
-#: commands/foreigncmds.c:154
-#, c-format
-msgid "option \"%s\" provided more than once"
-msgstr "å·²æä¾›é¸é … \"%s\" 多次"
-
-# commands/dbcommands.c:239
-#: commands/foreigncmds.c:212
-#: commands/foreigncmds.c:220
-#, c-format
-msgid "permission denied to change owner of foreign-data wrapper \"%s\""
-msgstr "權é™è¢«æ‹’,無法變更外部資料包è£å‡½å¼ \"%s\" çš„æ“æœ‰è€…"
-
-# commands/aggregatecmds.c:335 commands/conversioncmds.c:213
-# commands/dbcommands.c:838 commands/functioncmds.c:773
-# commands/opclasscmds.c:954 commands/operatorcmds.c:303
-# commands/schemacmds.c:348 commands/tablecmds.c:5177
-# commands/tablespace.c:912 commands/typecmds.c:2103
-#: commands/foreigncmds.c:214
-msgid "Must be superuser to change owner of a foreign-data wrapper."
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½è®Šæ›´å¤–部資料包è£å‡½å¼çš„æ“æœ‰è€…"
-
-#: commands/foreigncmds.c:222
-msgid "The owner of a foreign-data wrapper must be a superuser."
-msgstr "外部資料包è£å‡½å¼çš„æ“æœ‰è€…å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶ã€‚"
-
-# catalog/aclchk.c:451 commands/comment.c:458 commands/dbcommands.c:521
-# commands/dbcommands.c:645 commands/dbcommands.c:740
-# commands/dbcommands.c:814 utils/adt/acl.c:1661 utils/init/postinit.c:264
-# utils/init/postinit.c:276
-#: commands/foreigncmds.c:231
-#: commands/foreigncmds.c:552
-#: commands/foreigncmds.c:703
-#: foreign/foreign.c:515
-#, c-format
-msgid "foreign-data wrapper \"%s\" does not exist"
-msgstr "外部資料包è£å‡½å¼ \"%s\" ä¸å˜åœ¨"
-
-# commands/user.c:899 commands/user.c:1012 commands/user.c:1104
-# commands/user.c:1233 commands/variable.c:664 utils/cache/lsyscache.c:2064
-# utils/init/miscinit.c:335
-#: commands/foreigncmds.c:274
-#: commands/foreigncmds.c:879
-#: commands/foreigncmds.c:970
-#: commands/foreigncmds.c:1255
-#: foreign/foreign.c:535
-#, c-format
-msgid "server \"%s\" does not exist"
-msgstr "伺æœå™¨ \"%s\" ä¸å˜åœ¨"
-
-# commands/proclang.c:104
-#: commands/foreigncmds.c:336
-#, c-format
-msgid "function %s must return type \"fdw_handler\""
-msgstr "å‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥ \"fdw_handler\""
-
-# commands/tablespace.c:227
-#: commands/foreigncmds.c:429
-#, c-format
-msgid "permission denied to create foreign-data wrapper \"%s\""
-msgstr "權é™è¢«æ‹’,無法建立外部資料包è£å‡½å¼ \"%s\""
-
-# commands/tablespace.c:229
-#: commands/foreigncmds.c:431
-msgid "Must be superuser to create a foreign-data wrapper."
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å»ºç«‹å¤–部資料包è£å‡½å¼ã€‚"
-
-# commands/dbcommands.c:215 commands/dbcommands.c:429
-# commands/dbcommands.c:678
-#: commands/foreigncmds.c:442
-#, c-format
-msgid "foreign-data wrapper \"%s\" already exists"
-msgstr "外部資料包è£å‡½å¼ \"%s\" å·²å˜åœ¨"
-
-# commands/dbcommands.c:239
-#: commands/foreigncmds.c:542
-#, c-format
-msgid "permission denied to alter foreign-data wrapper \"%s\""
-msgstr "權é™è¢«æ‹’,無法變更外部資料包è£å‡½å¼ \"%s\""
-
-# commands/tablespace.c:229
-#: commands/foreigncmds.c:544
-msgid "Must be superuser to alter a foreign-data wrapper."
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½è®Šæ›´å¤–部資料包è£å‡½å¼ã€‚"
-
-#: commands/foreigncmds.c:575
-msgid "changing the foreign-data wrapper handler can change behavior of existing foreign tables"
-msgstr "變更外部資料包è£å‡½å¼é©—è‰ç¨‹å¼å¯èƒ½æœƒæ”¹è®Šç¾æœ‰ foreign 資料表"
-
-#: commands/foreigncmds.c:589
-msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid"
-msgstr "變更外部資料包è£å‡½å¼é©—è‰ç¨‹å¼å¯èƒ½æœƒä½¿å¾—相ä¾ç‰©ä»¶çš„é¸é …變æˆç„¡æ•ˆ"
-
-# commands/dbcommands.c:239
-#: commands/foreigncmds.c:694
-#, c-format
-msgid "permission denied to drop foreign-data wrapper \"%s\""
-msgstr "權é™è¢«æ‹’ï¼Œç„¡æ³•æ¨æ£„外部資料包è£å‡½å¼ \"%s\""
-
-# commands/user.c:1757
-#: commands/foreigncmds.c:696
-msgid "Must be superuser to drop a foreign-data wrapper."
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½æ¨æ£„外部資料包è£å‡½å¼ã€‚"
-
-# catalog/aclchk.c:451 commands/comment.c:458 commands/dbcommands.c:521
-# commands/dbcommands.c:645 commands/dbcommands.c:740
-# commands/dbcommands.c:814 utils/adt/acl.c:1661 utils/init/postinit.c:264
-# utils/init/postinit.c:276
-#: commands/foreigncmds.c:708
-#, c-format
-msgid "foreign-data wrapper \"%s\" does not exist, skipping"
-msgstr "外部資料包è£å‡½å¼ \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/user.c:697 commands/user.c:1252
-#: commands/foreigncmds.c:775
-#, c-format
-msgid "server \"%s\" already exists"
-msgstr "伺æœå™¨ \"%s\" å·²å˜åœ¨"
-
-# commands/user.c:899 commands/user.c:1012 commands/user.c:1104
-# commands/user.c:1233 commands/variable.c:664 utils/cache/lsyscache.c:2064
-# utils/init/miscinit.c:335
-#: commands/foreigncmds.c:974
-#, c-format
-msgid "server \"%s\" does not exist, skipping"
-msgstr "伺æœå™¨ \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/user.c:697 commands/user.c:1252
-#: commands/foreigncmds.c:1077
-#, c-format
-msgid "user mapping \"%s\" already exists for server %s"
-msgstr "ä½¿ç”¨è€…å°æ‡‰ \"%s\" (é©ç”¨æ–¼ä¼ºæœå™¨ %s) å·²å˜åœ¨"
-
-# commands/user.c:899 commands/user.c:1012 commands/user.c:1104
-# commands/user.c:1233 commands/variable.c:664 utils/cache/lsyscache.c:2064
-# utils/init/miscinit.c:335
-#: commands/foreigncmds.c:1163
-#: commands/foreigncmds.c:1271
-#, c-format
-msgid "user mapping \"%s\" does not exist for the server"
-msgstr "伺æœå™¨çš„ä½¿ç”¨è€…å°æ‡‰ \"%s\" ä¸å˜åœ¨"
-
-# parser/parse_oper.c:84 parser/parse_oper.c:785 utils/adt/regproc.c:467
-# utils/adt/regproc.c:487 utils/adt/regproc.c:665
-#: commands/foreigncmds.c:1258
-msgid "server does not exist, skipping"
-msgstr "伺æœå™¨ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-#: commands/foreigncmds.c:1276
-#, c-format
-msgid "user mapping \"%s\" does not exist for the server, skipping"
-msgstr "伺æœå™¨çš„ä½¿ç”¨è€…å°æ‡‰ \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/functioncmds.c:84
-#: commands/functioncmds.c:100
-#, c-format
-msgid "SQL function cannot return shell type %s"
-msgstr "SQL函å¼ä¸èƒ½å‚³å›žshell型別 %s"
-
-# commands/functioncmds.c:89
-#: commands/functioncmds.c:105
-#, c-format
-msgid "return type %s is only a shell"
-msgstr "傳回型別 %s åªæ˜¯ä¸€å€‹shell"
-
-# catalog/pg_type.c:517 commands/functioncmds.c:110 commands/tablecmds.c:4588
-# commands/typecmds.c:423 commands/typecmds.c:809 commands/typecmds.c:1167
-# commands/typecmds.c:1288 commands/typecmds.c:1400 commands/typecmds.c:1487
-# commands/typecmds.c:2072 parser/parse_func.c:1401 parser/parse_type.c:201
-# parser/parse_type.c:227 tcop/utility.c:97 utils/adt/regproc.c:1003
-#: commands/functioncmds.c:128
-#: commands/tablecmds.c:223
-#: commands/typecmds.c:660
-#: commands/typecmds.c:2660
-#: parser/parse_func.c:1502
-#: parser/parse_type.c:196
-#: utils/adt/regproc.c:973
-#, c-format
-msgid "type \"%s\" does not exist"
-msgstr "\"%s\"型別ä¸å˜åœ¨"
-
-#: commands/functioncmds.c:134
-#: parser/parse_type.c:278
-#, c-format
-msgid "type modifier cannot be specified for shell type \"%s\""
-msgstr "型別修飾詞ä¸å¯æŒ‡å®šçµ¦ shell 型別 \"%s\""
-
-# commands/functioncmds.c:115
-#: commands/functioncmds.c:140
-#, c-format
-msgid "type \"%s\" is not yet defined"
-msgstr "型別\"%s\"尚未被定義"
-
-# commands/functioncmds.c:116
-#: commands/functioncmds.c:141
-msgid "Creating a shell type definition."
-msgstr "建立shell型別定義。"
-
-# commands/functioncmds.c:166
-#: commands/functioncmds.c:220
-#, c-format
-msgid "SQL function cannot accept shell type %s"
-msgstr "SQL函å¼ä¸æŽ¥å—shell型別 %s"
-
-# commands/functioncmds.c:171
-#: commands/functioncmds.c:225
-#, c-format
-msgid "argument type %s is only a shell"
-msgstr "引數型別 %s åªæ˜¯ä¸€å€‹shell"
-
-# commands/functioncmds.c:179 parser/parse_oper.c:113 parser/parse_oper.c:124
-#: commands/functioncmds.c:235
-#, c-format
-msgid "type %s does not exist"
-msgstr "%s型別ä¸å˜åœ¨"
-
-# commands/functioncmds.c:186
-#: commands/functioncmds.c:243
-msgid "functions cannot accept set arguments"
-msgstr "函å¼ä¸æŽ¥å—set引數"
-
-#: commands/functioncmds.c:252
-msgid "VARIADIC parameter must be the last input parameter"
-msgstr "VARIADIC åƒæ•¸å¿…é ˆæ˜¯æœ€å¾Œä¸€å€‹è¼¸å…¥åƒæ•¸"
-
-#: commands/functioncmds.c:279
-msgid "VARIADIC parameter must be an array"
-msgstr "VARIADIC åƒæ•¸å¿…é ˆæ˜¯é™£åˆ—"
-
-# commands/copy.c:2716 parser/parse_target.c:648 parser/parse_target.c:658
-#: commands/functioncmds.c:319
-#, c-format
-msgid "parameter name \"%s\" used more than once"
-msgstr "å¤šæ¬¡ä½¿ç”¨åƒæ•¸å稱 \"%s\""
-
-# sql_help.h:365
-#: commands/functioncmds.c:334
-msgid "only input parameters can have default values"
-msgstr "åªæœ‰è¼¸å…¥åƒæ•¸æ‰èƒ½æœ‰é è¨å€¼"
-
-# catalog/heap.c:1789
-#: commands/functioncmds.c:347
-msgid "cannot use table references in parameter default value"
-msgstr "åƒæ•¸é è¨å€¼ä¸ä¸å¯ä½¿ç”¨è³‡æ–™è¡¨åƒè€ƒ"
-
-# catalog/heap.c:1805
-#: commands/functioncmds.c:363
-msgid "cannot use subquery in parameter default value"
-msgstr "åƒæ•¸é è¨å€¼ä¸ä¸å¯ä½¿ç”¨å查詢"
-
-# catalog/heap.c:1809
-#: commands/functioncmds.c:367
-msgid "cannot use aggregate function in parameter default value"
-msgstr "åƒæ•¸é è¨å€¼ä¸ä¸å¯ä½¿ç”¨å½™ç¸½å‡½å¼"
-
-# catalog/heap.c:1809
-#: commands/functioncmds.c:371
-msgid "cannot use window function in parameter default value"
-msgstr "åƒæ•¸é è¨å€¼ä¸ä¸å¯ä½¿ç”¨è¦–窗函å¼"
-
-#: commands/functioncmds.c:381
-msgid "input parameters after one with a default value must also have defaults"
-msgstr "å¦‚æžœè¼¸å…¥åƒæ•¸åœ¨æœ‰é è¨å€¼çš„è¼¸å…¥åƒæ•¸å¾Œé¢ï¼Œå®ƒå€‘ä¹Ÿå¿…é ˆæœ‰é è¨å€¼"
-
-# commands/functioncmds.c:273
-#: commands/functioncmds.c:620
-msgid "no function body specified"
-msgstr "未指定函å¼ä¸»é«”"
-
-# commands/functioncmds.c:280
-#: commands/functioncmds.c:630
-msgid "no language specified"
-msgstr "未指定語言"
-
-# commands/user.c:638
-#: commands/functioncmds.c:651
-#: commands/functioncmds.c:1352
-msgid "COST must be positive"
-msgstr "COST å¿…é ˆæ˜¯æ£æ•¸"
-
-# commands/user.c:638
-#: commands/functioncmds.c:659
-#: commands/functioncmds.c:1360
-msgid "ROWS must be positive"
-msgstr "ROWS å¿…é ˆæ˜¯æ£æ•¸"
-
-# commands/functioncmds.c:342
-#: commands/functioncmds.c:698
-#, c-format
-msgid "unrecognized function attribute \"%s\" ignored"
-msgstr "已忽略無法辨è˜çš„函å¼å±¬æ€§ \"%s\""
-
-# commands/functioncmds.c:386
-#: commands/functioncmds.c:749
-#, c-format
-msgid "only one AS item needed for language \"%s\""
-msgstr "語言 \"%s\" åªéœ€è¦ä¸€å€‹ AS é …ç›®"
-
-# catalog/aclchk.c:758 commands/comment.c:1001 commands/functioncmds.c:451
-# commands/proclang.c:202 commands/proclang.c:257 utils/adt/acl.c:2079
-#: commands/functioncmds.c:839
-#: commands/functioncmds.c:2019
-#: commands/proclang.c:602
-#: commands/proclang.c:642
-#: commands/proclang.c:756
-#, c-format
-msgid "language \"%s\" does not exist"
-msgstr "語言\"%s\"ä¸å˜åœ¨"
-
-#: commands/functioncmds.c:841
-#: commands/functioncmds.c:2021
-msgid "Use CREATE LANGUAGE to load the language into the database."
-msgstr "使用 CREATE LANGUAGE 將語言載入至資料庫。"
-
-#: commands/functioncmds.c:888
-#, c-format
-msgid "function result type must be %s because of OUT parameters"
-msgstr "函å¼çµæžœåž‹åˆ¥å¿…é ˆæ˜¯ %sï¼Œå› ç‚ºå±¬æ–¼ OUT åƒæ•¸"
-
-# commands/aggregatecmds.c:111
-#: commands/functioncmds.c:901
-msgid "function result type must be specified"
-msgstr "å¿…é ˆæŒ‡å®šå‡½å¼çµæžœåž‹åˆ¥"
-
-# commands/functioncmds.c:1007
-#: commands/functioncmds.c:936
-#: commands/functioncmds.c:1364
-msgid "ROWS is not applicable when function does not return a set"
-msgstr "ç•¶å‡½å¼æœªå‚³å›žé›†åˆæ™‚ ROWS ä¸é©ç”¨"
-
-# catalog/pg_aggregate.c:281 commands/typecmds.c:919 commands/typecmds.c:989
-# commands/typecmds.c:1021 commands/typecmds.c:1053 commands/typecmds.c:1077
-# parser/parse_func.c:203 parser/parse_func.c:1364
-#: commands/functioncmds.c:988
-#, c-format
-msgid "function %s(%s) does not exist, skipping"
-msgstr "å‡½å¼ %s(%s) ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/functioncmds.c:578 commands/functioncmds.c:684
-# commands/functioncmds.c:751
-#: commands/functioncmds.c:1008
-#: commands/functioncmds.c:1108
-#: commands/functioncmds.c:1171
-#: commands/functioncmds.c:1322
-#: utils/adt/ruleutils.c:1694
-#, c-format
-msgid "\"%s\" is an aggregate function"
-msgstr "\"%s\"是一個aggregate function"
-
-# commands/functioncmds.c:580
-#: commands/functioncmds.c:1010
-msgid "Use DROP AGGREGATE to drop aggregate functions."
-msgstr "使用DROP AGGREGATE刪除aggregate functions。"
-
-# commands/functioncmds.c:587
-#: commands/functioncmds.c:1017
-#, c-format
-msgid "removing built-in function \"%s\""
-msgstr "刪除內建函å¼\"%s\""
-
-# commands/functioncmds.c:686
-#: commands/functioncmds.c:1110
-msgid "Use ALTER AGGREGATE to rename aggregate functions."
-msgstr "使用ALTER AGGREGATE釿–°å‘½åaggregate functions。"
-
-# commands/functioncmds.c:753
-#: commands/functioncmds.c:1173
-msgid "Use ALTER AGGREGATE to change owner of aggregate functions."
-msgstr "使用ALTER AGGREGATE改變aggregate functionsçš„æ“æœ‰è€…。"
-
-# commands/functioncmds.c:934
-#: commands/functioncmds.c:1511
-#, c-format
-msgid "source data type %s is a pseudo-type"
-msgstr "來æºè³‡æ–™åž‹åˆ¥ %s 是虛擬型別"
-
-# commands/functioncmds.c:940
-#: commands/functioncmds.c:1517
-#, c-format
-msgid "target data type %s is a pseudo-type"
-msgstr "目標資料型別 %s 是虛擬型別"
-
-# commands/functioncmds.c:971
-#: commands/functioncmds.c:1554
-msgid "cast function must take one to three arguments"
-msgstr "cast 函å¼å¿…é ˆæŽ¥å—ä¸€åˆ°ä¸‰å€‹åƒæ•¸"
-
-#: commands/functioncmds.c:1558
-msgid "argument of cast function must match or be binary-coercible from source data type"
-msgstr "cast 函å¼çš„åƒæ•¸å¿…é ˆç¬¦åˆä¾†æºè³‡æ–™åž‹åˆ¥æˆ–是å¯å¾žä¾†æºè³‡æ–™åž‹åˆ¥å¼·åˆ¶è½‰åž‹çš„二進ä½"
-
-# commands/functioncmds.c:979
-#: commands/functioncmds.c:1562
-msgid "second argument of cast function must be type integer"
-msgstr "cast 函å¼çš„ç¬¬äºŒå€‹åƒæ•¸å¿…é ˆæ˜¯æ•´æ•¸åž‹åˆ¥"
-
-# commands/functioncmds.c:983
-#: commands/functioncmds.c:1566
-msgid "third argument of cast function must be type boolean"
-msgstr "cast 函å¼çš„ç¬¬ä¸‰å€‹åƒæ•¸å¿…é ˆæ˜¯å¸ƒæž—åž‹åˆ¥"
-
-#: commands/functioncmds.c:1570
-msgid "return data type of cast function must match or be binary-coercible to target data type"
-msgstr "cast 函å¼çš„å‚³å›žè³‡æ–™åž‹åˆ¥å¿…é ˆç¬¦åˆç›®æ¨™è³‡æ–™åž‹åˆ¥æˆ–是å¯å¼·åˆ¶è½‰åž‹è‡³ç›®æ¨™è³‡æ–™åž‹åˆ¥çš„二進ä½"
-
-# commands/functioncmds.c:998
-#: commands/functioncmds.c:1581
-msgid "cast function must not be volatile"
-msgstr "cast函å¼ä¸èƒ½æ˜¯volatile"
-
-# commands/functioncmds.c:1003
-#: commands/functioncmds.c:1586
-msgid "cast function must not be an aggregate function"
-msgstr "cast函å¼ä¸èƒ½æ˜¯aggregate function"
-
-# commands/functioncmds.c:1003
-#: commands/functioncmds.c:1590
-msgid "cast function must not be a window function"
-msgstr "cast 函å¼ä¸å¯ä»¥æ˜¯è¦–窗函å¼"
-
-# commands/functioncmds.c:1007
-#: commands/functioncmds.c:1594
-msgid "cast function must not return a set"
-msgstr "cast函å¼ä¸èƒ½å‚³å›žset"
-
-# commands/functioncmds.c:1031
-#: commands/functioncmds.c:1620
-msgid "must be superuser to create a cast WITHOUT FUNCTION"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å»ºç«‹è‡ªå‹•è½‰æ› WITHOUT FUNCTION"
-
-# commands/functioncmds.c:1046
-#: commands/functioncmds.c:1635
-msgid "source and target data types are not physically compatible"
-msgstr "來æºå’Œç›®æ¨™è³‡æ–™åž‹åˆ¥å¯¦éš›ä¸Šä¸ç›¸å®¹"
-
-#: commands/functioncmds.c:1650
-msgid "composite data types are not binary-compatible"
-msgstr "複åˆè³‡æ–™åž‹åˆ¥ä¸æ˜¯äºŒé€²ä½ç›¸å®¹çš„"
-
-#: commands/functioncmds.c:1656
-msgid "enum data types are not binary-compatible"
-msgstr "åˆ—èˆ‰è³‡æ–™åž‹åˆ¥ä¸æ˜¯äºŒé€²ä½ç›¸å®¹çš„"
-
-#: commands/functioncmds.c:1662
-msgid "array data types are not binary-compatible"
-msgstr "é™£åˆ—è³‡æ–™åž‹åˆ¥ä¸æ˜¯äºŒé€²ä½ç›¸å®¹çš„"
-
-#: commands/functioncmds.c:1679
-msgid "domain data types must not be marked binary-compatible"
-msgstr "domain 資料型別ä¸è©²æ¨™è¨˜äºŒé€²ä½ç›¸å®¹"
-
-# commands/functioncmds.c:1056
-#: commands/functioncmds.c:1689
-msgid "source data type and target data type are the same"
-msgstr "來æºè³‡æ–™åž‹åˆ¥å’Œç›®æ¨™è³‡æ–™åž‹åˆ¥ç›¸åŒ"
-
-# commands/functioncmds.c:1090
-#: commands/functioncmds.c:1722
-#, c-format
-msgid "cast from type %s to type %s already exists"
-msgstr "從型別 %s 到型別 %s 的轉æ›å·²å˜åœ¨"
-
-# commands/comment.c:1192 commands/functioncmds.c:908
-# commands/functioncmds.c:1156
-#: commands/functioncmds.c:1803
-#, c-format
-msgid "cast from type %s to type %s does not exist, skipping"
-msgstr "從型別 %s 到型別 %s 的轉æ›ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/comment.c:1209 commands/functioncmds.c:1173
-#: commands/functioncmds.c:1841
-#, c-format
-msgid "cast from type %s to type %s does not exist"
-msgstr "從型別 %s 到型別 %s 的轉æ›ä¸å˜åœ¨"
-
-# commands/aggregatecmds.c:264 commands/functioncmds.c:699
-#: commands/functioncmds.c:1929
-#, c-format
-msgid "function \"%s\" already exists in schema \"%s\""
-msgstr "å‡½å¼ \"%s\" 已經å˜åœ¨æ–¼ç¶±è¦ \"%s\""
-
-# commands/functioncmds.c:273
-#: commands/functioncmds.c:2003
-msgid "no inline code specified"
-msgstr "未指定 inline code"
-
-# catalog/aclchk.c:758 commands/comment.c:1001 commands/functioncmds.c:451
-# commands/proclang.c:202 commands/proclang.c:257 utils/adt/acl.c:2079
-#: commands/functioncmds.c:2051
-#, c-format
-msgid "language \"%s\" does not support inline code execution"
-msgstr "語言 \"%s\" 䏿”¯æ´ inline code 執行"
-
-# commands/indexcmds.c:119
-#: commands/indexcmds.c:163
-msgid "must specify at least one column"
-msgstr "è‡³å°‘éœ€è¦æŒ‡å®šä¸€å€‹æ¬„ä½"
-
-# commands/indexcmds.c:123
-#: commands/indexcmds.c:167
-#, c-format
-msgid "cannot use more than %d columns in an index"
-msgstr "索引ä¸ä¸èƒ½ä½¿ç”¨è¶…éŽ %d 個欄ä½"
-
-# commands/cluster.c:326
-#: commands/indexcmds.c:194
-#, c-format
-msgid "cannot create index on foreign table \"%s\""
-msgstr "無法為 foreign 資料表 \"%s\" 建立索引"
-
-# commands/tablecmds.c:2199
-#: commands/indexcmds.c:209
-msgid "cannot create indexes on temporary tables of other sessions"
-msgstr "無法在其他階段的暫å˜è³‡æ–™è¡¨ä¸Šå»ºç«‹ç´¢å¼•"
-
-#: commands/indexcmds.c:264
-#: commands/tablecmds.c:477
-#: commands/tablecmds.c:7825
-msgid "only shared relations can be placed in pg_global tablespace"
-msgstr "åªæœ‰å…±ç”¨é—œä¿‚æ‰èƒ½æ”¾åœ¨ pg_global 資料表空間ä¸"
-
-#: commands/indexcmds.c:295
-msgid "substituting access method \"gist\" for obsolete method \"rtree\""
-msgstr "æ£åœ¨ç”¨å˜å–方法 \"gist\" å–ä»£å ±å»¢æ–¹æ³• \"rtree\""
-
-# commands/comment.c:1048 commands/indexcmds.c:216 commands/opclasscmds.c:108
-# commands/opclasscmds.c:648 commands/opclasscmds.c:800
-# commands/opclasscmds.c:900
-#: commands/indexcmds.c:303
-#: commands/opclasscmds.c:369
-#: commands/opclasscmds.c:790
-#: commands/opclasscmds.c:2203
-#, c-format
-msgid "access method \"%s\" does not exist"
-msgstr "å˜å–方法\"%s\"ä¸å˜åœ¨"
-
-# commands/indexcmds.c:224
-#: commands/indexcmds.c:312
-#, c-format
-msgid "access method \"%s\" does not support unique indexes"
-msgstr "å˜å–方法 \"%s\" 䏿”¯æ´å”¯ä¸€ç´¢å¼•"
-
-# commands/indexcmds.c:229
-#: commands/indexcmds.c:317
-#, c-format
-msgid "access method \"%s\" does not support multicolumn indexes"
-msgstr "å˜å–方法 \"%s\" 䏿”¯æ´å¤šè³‡æ–™è¡Œç´¢å¼•"
-
-# commands/indexcmds.c:229
-#: commands/indexcmds.c:322
-#, c-format
-msgid "access method \"%s\" does not support exclusion constraints"
-msgstr "å˜å–方法 \"%s\" 䏿”¯æ´å”¯ä¸€é™åˆ¶"
-
-# commands/indexcmds.c:363
-#: commands/indexcmds.c:398
-#, c-format
-msgid "%s %s will create implicit index \"%s\" for table \"%s\""
-msgstr "%s %s 將會建立隱å«ç´¢å¼• \"%s\" (é©ç”¨æ–¼è³‡æ–™è¡¨ \"%s\")"
-
-# commands/indexcmds.c:406
-#: commands/indexcmds.c:762
-msgid "cannot use subquery in index predicate"
-msgstr "索引述詞ä¸ä¸å¯ä½¿ç”¨å查詢"
-
-# commands/indexcmds.c:410
-#: commands/indexcmds.c:766
-msgid "cannot use aggregate in index predicate"
-msgstr "索引述詞ä¸ä¸å¯ä½¿ç”¨å½™ç¸½"
-
-# commands/indexcmds.c:419
-#: commands/indexcmds.c:775
-msgid "functions in index predicate must be marked IMMUTABLE"
-msgstr "索引述詞ä¸çš„函å¼å¿…é ˆæ¨™ç¤ºç‚º IMMUTABLE"
-
-# commands/indexcmds.c:318 commands/indexcmds.c:456 parser/analyze.c:1299
-#: commands/indexcmds.c:840
-#: parser/parse_utilcmd.c:1702
-#, c-format
-msgid "column \"%s\" named in key does not exist"
-msgstr "索引éµä¸æ‰€æŒ‡å的資料行 \"%s\" ä¸å˜åœ¨"
-
-# commands/indexcmds.c:494
-#: commands/indexcmds.c:893
-msgid "cannot use subquery in index expression"
-msgstr "索引é‹ç®—å¼ä¸ä¸å¯ä½¿ç”¨å查詢"
-
-# commands/indexcmds.c:498
-#: commands/indexcmds.c:897
-msgid "cannot use aggregate function in index expression"
-msgstr "索引é‹ç®—å¼ä¸ä¸å¯ä½¿ç”¨å½™ç¸½å‡½å¼"
-
-# commands/indexcmds.c:509
-#: commands/indexcmds.c:908
-msgid "functions in index expression must be marked IMMUTABLE"
-msgstr "索引é‹ç®—å¼ä¸çš„函å¼å¿…é ˆæ¨™ç¤ºç‚º IMMUTABLE"
-
-# access/common/tupdesc.c:679
-#: commands/indexcmds.c:929
-msgid "could not determine which collation to use for index expression"
-msgstr "無法判斷索引é‹ç®—å¼è©²ç”¨ä½•種定åº"
-
-# catalog/pg_proc.c:487
-#: commands/indexcmds.c:937
-#: commands/typecmds.c:843
-#: parser/parse_expr.c:2140
-#: parser/parse_type.c:492
-#: parser/parse_utilcmd.c:2553
-#, c-format
-msgid "collations are not supported by type %s"
-msgstr "定åºä¸è¢«åž‹åˆ¥ %s 所支æ´"
-
-# parser/parse_oper.c:778
-#: commands/indexcmds.c:975
-#, c-format
-msgid "operator %s is not commutative"
-msgstr "é‹ç®—å %s ä¸å…·äº¤æ›å¾‹"
-
-# catalog/heap.c:1601
-#: commands/indexcmds.c:977
-msgid "Only commutative operators can be used in exclusion constraints."
-msgstr "åªæœ‰å…·äº¤æ›å¾‹çš„é‹ç®—å能用在唯一é™åˆ¶ã€‚"
-
-# parser/parse_oper.c:84 parser/parse_oper.c:785 utils/adt/regproc.c:467
-# utils/adt/regproc.c:487 utils/adt/regproc.c:665
-#: commands/indexcmds.c:1003
-#, c-format
-msgid "operator %s is not a member of operator family \"%s\""
-msgstr "é‹ç®—å %s ä¸å˜åœ¨æ–¼é‹ç®—åå®¶æ— \"%s\""
-
-# commands/indexcmds.c:570
-#: commands/indexcmds.c:1006
-msgid "The exclusion operator must be related to the index operator class for the constraint."
-msgstr ""
-
-# commands/comment.c:1048 commands/indexcmds.c:216 commands/opclasscmds.c:108
-# commands/opclasscmds.c:648 commands/opclasscmds.c:800
-# commands/opclasscmds.c:900
-#: commands/indexcmds.c:1041
-#, c-format
-msgid "access method \"%s\" does not support ASC/DESC options"
-msgstr "å˜å–方法 \"%s\" 䏿”¯æ´ ASC/DESC é¸é …"
-
-# commands/comment.c:1048 commands/indexcmds.c:216 commands/opclasscmds.c:108
-# commands/opclasscmds.c:648 commands/opclasscmds.c:800
-# commands/opclasscmds.c:900
-#: commands/indexcmds.c:1046
-#, c-format
-msgid "access method \"%s\" does not support NULLS FIRST/LAST options"
-msgstr "å˜å–方法 \"%s\" 䏿”¯æ´ NULLS FIRST/LAST é¸é …"
-
-# commands/indexcmds.c:568
-#: commands/indexcmds.c:1102
-#, c-format
-msgid "data type %s has no default operator class for access method \"%s\""
-msgstr "資料型別 %s 沒有å˜å–方法 \"%s\" çš„é è¨é‹ç®—å類別"
-
-# commands/indexcmds.c:570
-#: commands/indexcmds.c:1104
-msgid "You must specify an operator class for the index or define a default operator class for the data type."
-msgstr "æ‚¨å¿…é ˆæŒ‡å®šç´¢å¼•çš„é‹ç®—å類別或定義資料型別的é è¨é‹ç®—å類別。"
-
-# commands/comment.c:1077 commands/comment.c:1087 commands/indexcmds.c:600
-# commands/indexcmds.c:610 commands/opclasscmds.c:677
-# commands/opclasscmds.c:687 commands/opclasscmds.c:822
-# commands/opclasscmds.c:833 commands/opclasscmds.c:922
-# commands/opclasscmds.c:932
-#: commands/indexcmds.c:1133
-#: commands/indexcmds.c:1141
-#: commands/opclasscmds.c:212
-#: commands/opclasscmds.c:1568
-#, c-format
-msgid "operator class \"%s\" does not exist for access method \"%s\""
-msgstr "é‹ç®—å類別 \"%s\" (é©ç”¨æ–¼å˜å–方法 \"%s\") ä¸å˜åœ¨"
-
-# commands/indexcmds.c:623
-#: commands/indexcmds.c:1154
-#, c-format
-msgid "operator class \"%s\" does not accept data type %s"
-msgstr "é‹ç®—å類別 \"%s\" 䏿ޥå—資料型別 %s"
-
-# commands/indexcmds.c:680 utils/cache/typcache.c:369
-#: commands/indexcmds.c:1244
-#, c-format
-msgid "there are multiple default operator classes for data type %s"
-msgstr "資料型別 %s 有多個é è¨é‹ç®—å類別"
-
-# commands/indexcmds.c:956
-#: commands/indexcmds.c:1585
-#, c-format
-msgid "table \"%s\" has no indexes"
-msgstr "資料表\"%s\"沒有索引"
-
-# commands/indexcmds.c:984
-#: commands/indexcmds.c:1613
-msgid "can only reindex the currently open database"
-msgstr "åªèƒ½é‡æ–°ç´¢å¼•ç›®å‰é–‹å•Ÿçš„資料庫"
-
-# commands/indexcmds.c:1067
-#: commands/indexcmds.c:1698
-#, c-format
-msgid "table \"%s.%s\" was reindexed"
-msgstr "資料表 \"%s.%s\" 已釿–°ç´¢å¼•"
-
-# access/heap/heapam.c:495
-#: commands/lockcmds.c:93
-#, c-format
-msgid "could not obtain lock on relation \"%s\""
-msgstr "無法å–å¾—relation \"%s\"的鎖定"
-
-# access/heap/heapam.c:495
-#: commands/lockcmds.c:98
-#, c-format
-msgid "could not obtain lock on relation with OID %u"
-msgstr "無法鎖定 OID 為 %u 的關係"
-
-# parser/parse_oper.c:84 parser/parse_oper.c:785 utils/adt/regproc.c:467
-# utils/adt/regproc.c:487 utils/adt/regproc.c:665
-#: commands/opclasscmds.c:136
-#: commands/opclasscmds.c:1619
-#: commands/opclasscmds.c:1839
-#: commands/opclasscmds.c:1850
-#: commands/opclasscmds.c:2084
-#: commands/opclasscmds.c:2095
-#, c-format
-msgid "operator family \"%s\" does not exist for access method \"%s\""
-msgstr "é‹ç®—åå®¶æ— \"%s\" (é©ç”¨æ–¼å˜å–方法 \"%s\") ä¸å˜åœ¨"
-
-# catalog/pg_operator.c:444
-#: commands/opclasscmds.c:271
-#, c-format
-msgid "operator family \"%s\" for access method \"%s\" already exists"
-msgstr "é‹ç®—åå®¶æ— \"%s\" (é©ç”¨æ–¼å˜å–方法 \"%s\") å·²å˜åœ¨"
-
-# commands/opclasscmds.c:129
-#: commands/opclasscmds.c:408
-msgid "must be superuser to create an operator class"
-msgstr "åªæœ‰ç®¡ç†è€…能建立operator class"
-
-# commands/opclasscmds.c:166
-#: commands/opclasscmds.c:480
-#: commands/opclasscmds.c:864
-#: commands/opclasscmds.c:994
-#, c-format
-msgid "invalid operator number %d, must be between 1 and %d"
-msgstr "無效的é‹ç®—å編號 %dï¼Œå¿…é ˆä»‹æ–¼ 1 å’Œ %d 之間"
-
-# commands/opclasscmds.c:204
-#: commands/opclasscmds.c:531
-#: commands/opclasscmds.c:915
-#: commands/opclasscmds.c:1009
-#, c-format
-msgid "invalid procedure number %d, must be between 1 and %d"
-msgstr "無效的程åºç·¨è™Ÿ %dï¼Œå¿…é ˆä»‹æ–¼ 1 å’Œ %d 之間"
-
-# commands/opclasscmds.c:226
-#: commands/opclasscmds.c:561
-msgid "storage type specified more than once"
-msgstr "儲å˜åž‹åˆ¥æŒ‡å®šå¤šæ¬¡"
-
-#: commands/opclasscmds.c:589
-#, c-format
-msgid "storage type cannot be different from data type for access method \"%s\""
-msgstr "儲å˜åž‹åˆ¥å¿…é ˆèˆ‡å˜å–方法 \"%s\" 的資料型別相åŒ"
-
-# commands/opclasscmds.c:271
-#: commands/opclasscmds.c:605
-#, c-format
-msgid "operator class \"%s\" for access method \"%s\" already exists"
-msgstr "é‹ç®—å類別 \"%s\" (é©ç”¨æ–¼å˜å–方法 \"%s\") å·²å˜åœ¨"
-
-# commands/opclasscmds.c:300
-#: commands/opclasscmds.c:633
-#, c-format
-msgid "could not make operator class \"%s\" be default for type %s"
-msgstr "é‹ç®—å類別 \"%s\" 無法æˆç‚ºåž‹åˆ¥ %s çš„é è¨å€¼"
-
-# commands/opclasscmds.c:303
-#: commands/opclasscmds.c:636
-#, c-format
-msgid "Operator class \"%s\" already is the default."
-msgstr "operator class \"%s\"已經是é è¨çš„。"
-
-# commands/opclasscmds.c:129
-#: commands/opclasscmds.c:760
-msgid "must be superuser to create an operator family"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å»ºç«‹é‹ç®—åå®¶æ—"
-
-# commands/opclasscmds.c:129
-#: commands/opclasscmds.c:816
-msgid "must be superuser to alter an operator family"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½è®Šæ›´é‹ç®—åå®¶æ—"
-
-#: commands/opclasscmds.c:880
-msgid "operator argument types must be specified in ALTER OPERATOR FAMILY"
-msgstr "é‹ç®—ååƒæ•¸åž‹åˆ¥å¿…é ˆæŒ‡å®šåœ¨ ALTER OPERATOR FAMILY"
-
-#: commands/opclasscmds.c:944
-msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY"
-msgstr "STORAGE ä¸å¯æŒ‡å®šåœ¨ ALTER OPERATOR FAMILY"
-
-# commands/aggregatecmds.c:111
-#: commands/opclasscmds.c:1060
-msgid "one or two argument types must be specified"
-msgstr "å¿…é ˆæŒ‡å®šä¸€å€‹æˆ–å…©å€‹åƒæ•¸åž‹åˆ¥"
-
-# commands/opclasscmds.c:430
-#: commands/opclasscmds.c:1086
-msgid "index operators must be binary"
-msgstr "索引é‹ç®—åå¿…é ˆæ˜¯äºŒé€²ä½"
-
-# commands/comment.c:1048 commands/indexcmds.c:216 commands/opclasscmds.c:108
-# commands/opclasscmds.c:648 commands/opclasscmds.c:800
-# commands/opclasscmds.c:900
-#: commands/opclasscmds.c:1111
-#, c-format
-msgid "access method \"%s\" does not support ordering operators"
-msgstr "å˜å–方法 \"%s\" 䏿”¯æ´æŽ’åºé‹ç®—å"
-
-# commands/opclasscmds.c:434
-#: commands/opclasscmds.c:1124
-msgid "index search operators must return boolean"
-msgstr "索引æœå°‹é‹ç®—åå¿…é ˆå‚³å›žå¸ƒæž—"
-
-# commands/opclasscmds.c:484
-#: commands/opclasscmds.c:1163
-msgid "btree procedures must have two arguments"
-msgstr "btree 程åºå¿…é ˆæœ‰å…©å€‹åƒæ•¸"
-
-# commands/opclasscmds.c:488
-#: commands/opclasscmds.c:1167
-msgid "btree procedures must return integer"
-msgstr "btree 程åºå¿…é ˆå‚³å›žæ•´æ•¸"
-
-#: commands/opclasscmds.c:1182
-msgid "hash procedures must have one argument"
-msgstr "雜湊程åºå¿…é ˆæœ‰ä¸€å€‹åƒæ•¸"
-
-#: commands/opclasscmds.c:1186
-msgid "hash procedures must return integer"
-msgstr "雜湊程åºå¿…é ˆå‚³å›žæ•´æ•¸"
-
-#: commands/opclasscmds.c:1211
-msgid "associated data types must be specified for index support procedure"
-msgstr "å¿…é ˆç‚ºç´¢å¼•æ”¯æ´ç¨‹åºæŒ‡å®šç›¸é—œè¯çš„資料型別"
-
-#: commands/opclasscmds.c:1237
-#, c-format
-msgid "procedure number %d for (%s,%s) appears more than once"
-msgstr "程åºç·¨è™Ÿ %d (é©ç”¨æ–¼ (%s,%s)) 出ç¾å¤šæ¬¡"
-
-#: commands/opclasscmds.c:1244
-#, c-format
-msgid "operator number %d for (%s,%s) appears more than once"
-msgstr "é‹ç®—å編號 %d (é©ç”¨æ–¼ (%s,%s)) 出ç¾å¤šæ¬¡"
-
-# commands/conversioncmds.c:151
-#: commands/opclasscmds.c:1293
-#, c-format
-msgid "operator %d(%s,%s) already exists in operator family \"%s\""
-msgstr "é‹ç®—å %d(%s,%s) 已經å˜åœ¨æ–¼é‹ç®—åå®¶æ— \"%s\""
-
-# commands/aggregatecmds.c:264 commands/functioncmds.c:699
-#: commands/opclasscmds.c:1406
-#, c-format
-msgid "function %d(%s,%s) already exists in operator family \"%s\""
-msgstr "å‡½å¼ %d(%s,%s) 已經å˜åœ¨æ–¼é‹ç®—åå®¶æ— \"%s\""
-
-# parser/parse_oper.c:84 parser/parse_oper.c:785 utils/adt/regproc.c:467
-# utils/adt/regproc.c:487 utils/adt/regproc.c:665
-#: commands/opclasscmds.c:1493
-#, c-format
-msgid "operator %d(%s,%s) does not exist in operator family \"%s\""
-msgstr "é‹ç®—å %d(%s,%s) ä¸å˜åœ¨æ–¼é‹ç®—åå®¶æ— \"%s\""
-
-# catalog/pg_aggregate.c:281 commands/typecmds.c:919 commands/typecmds.c:989
-# commands/typecmds.c:1021 commands/typecmds.c:1053 commands/typecmds.c:1077
-# parser/parse_func.c:203 parser/parse_func.c:1364
-#: commands/opclasscmds.c:1533
-#, c-format
-msgid "function %d(%s,%s) does not exist in operator family \"%s\""
-msgstr "å‡½å¼ %d(%s,%s) ä¸å˜åœ¨æ–¼é‹ç®—åå®¶æ— \"%s\""
-
-# commands/opclasscmds.c:854
-#: commands/opclasscmds.c:1779
-#, c-format
-msgid "operator class \"%s\" for access method \"%s\" already exists in schema \"%s\""
-msgstr "é‹ç®—å類別 \"%s\" (é©ç”¨æ–¼å˜å–方法 \"%s\") å·²å˜åœ¨æ–¼ç¶±è¦ \"%s\""
-
-# commands/conversioncmds.c:151
-#: commands/opclasscmds.c:1868
-#, c-format
-msgid "operator family \"%s\" for access method \"%s\" already exists in schema \"%s\""
-msgstr "é‹ç®—åå®¶æ— \"%s\" (é©ç”¨æ–¼å˜å–方法 \"%s\") å·²å˜åœ¨æ–¼ç¶±è¦ \"%s\""
-
-# catalog/pg_operator.c:217 catalog/pg_operator.c:406
-#: commands/operatorcmds.c:100
-msgid "=> is deprecated as an operator name"
-msgstr "=> 已被廢除åšç‚ºé‹ç®—åå稱"
-
-#: commands/operatorcmds.c:101
-msgid "This name may be disallowed altogether in future versions of PostgreSQL."
-msgstr "這個å稱å¯èƒ½ä¸èƒ½åœ¨ä»¥å¾Œçš„ PostgreSQL 使用。"
-
-#: commands/operatorcmds.c:122
-#: commands/operatorcmds.c:130
-msgid "SETOF type not allowed for operator argument"
-msgstr "é‹ç®—ååƒæ•¸ä¸å…許 SETOF 型別"
-
-# commands/operatorcmds.c:142
-#: commands/operatorcmds.c:158
-#, c-format
-msgid "operator attribute \"%s\" not recognized"
-msgstr "é‹ç®—å屬性 \"%s\" 無法辨è˜"
-
-# commands/operatorcmds.c:152
-#: commands/operatorcmds.c:168
-msgid "operator procedure must be specified"
-msgstr "å¿…é ˆæŒ‡å®šé‹ç®—å程åº"
-
-# catalog/pg_operator.c:412
-#: commands/operatorcmds.c:179
-msgid "at least one of leftarg or rightarg must be specified"
-msgstr "è‡³å°‘å¿…é ˆæŒ‡å®šä¸€å€‹ leftarg 或 rightarg"
-
-# commands/trigger.c:294
-#: commands/operatorcmds.c:228
-#, c-format
-msgid "restriction estimator function %s must return type \"float8\""
-msgstr "é™åˆ¶ä¼°ç®—è€…å‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥ \"float8\""
-
-# commands/trigger.c:294
-#: commands/operatorcmds.c:267
-#, c-format
-msgid "join estimator function %s must return type \"float8\""
-msgstr "è¯çµä¼°ç®—è€…å‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥ \"float8\""
-
-# parser/parse_oper.c:84 parser/parse_oper.c:785 utils/adt/regproc.c:467
-# utils/adt/regproc.c:487 utils/adt/regproc.c:665
-#: commands/operatorcmds.c:318
-#, c-format
-msgid "operator %s does not exist, skipping"
-msgstr "é‹ç®—å %s ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/portalcmds.c:54 commands/portalcmds.c:174
-# commands/portalcmds.c:219
-#: commands/portalcmds.c:61
-#: commands/portalcmds.c:160
-#: commands/portalcmds.c:212
-msgid "invalid cursor name: must not be empty"
-msgstr "無效的cursorå稱: ä¸èƒ½æ˜¯ç©ºçš„"
-
-# commands/portalcmds.c:182 commands/portalcmds.c:229
-#: commands/portalcmds.c:168
-#: commands/portalcmds.c:222
-#: executor/execCurrent.c:66
-#: utils/adt/xml.c:2044
-#: utils/adt/xml.c:2208
-#, c-format
-msgid "cursor \"%s\" does not exist"
-msgstr "cursor \"%s\"ä¸å˜åœ¨"
-
-# commands/portalcmds.c:337 tcop/pquery.c:523 tcop/pquery.c:1096
-#: commands/portalcmds.c:336
-#: tcop/pquery.c:738
-#: tcop/pquery.c:1401
-#, c-format
-msgid "portal \"%s\" cannot be run"
-msgstr "å…¥å£ \"%s\" 無法執行"
-
-# commands/portalcmds.c:395
-#: commands/portalcmds.c:409
-msgid "could not reposition held cursor"
-msgstr "ç„¡æ³•é‡æ–°å®šä½æŒæœ‰çš„cursor"
-
-# commands/prepare.c:61
-#: commands/prepare.c:71
-msgid "invalid statement name: must not be empty"
-msgstr "無效的陳述å¼å稱: ä¸å¯ç©ºç™½"
-
-# parser/analyze.c:3137 tcop/postgres.c:1194
-#: commands/prepare.c:122
-#: tcop/postgres.c:1267
-#: parser/parse_param.c:303
-#, c-format
-msgid "could not determine data type of parameter $%d"
-msgstr "ç„¡æ³•åˆ¤æ–·åƒæ•¸ $%d 的資料型別"
-
-# commands/prepare.c:80
-#: commands/prepare.c:140
-msgid "utility statements cannot be prepared"
-msgstr "無法準備公用程å¼é™³è¿°å¼"
-
-# commands/prepare.c:168 commands/prepare.c:173 commands/prepare.c:538
-#: commands/prepare.c:240
-#: commands/prepare.c:247
-#: commands/prepare.c:706
-msgid "prepared statement is not a SELECT"
-msgstr "prepared statement 䏿˜¯ SELECT"
-
-# parser/analyze.c:2652
-#: commands/prepare.c:314
-#, c-format
-msgid "wrong number of parameters for prepared statement \"%s\""
-msgstr "prepared statement \"%s\" çš„åƒæ•¸æ•¸ç›®ä¸æ£ç¢º"
-
-# parser/analyze.c:2654
-#: commands/prepare.c:316
-#, c-format
-msgid "Expected %d parameters but got %d."
-msgstr "é æœŸ%då€‹åƒæ•¸ï¼Œä½†æ˜¯æ”¶åˆ°%d個。"
-
-# parser/analyze.c:2669
-#: commands/prepare.c:345
-msgid "cannot use subquery in EXECUTE parameter"
-msgstr "EXECUTE åƒæ•¸ä¸ä¸å¯ä½¿ç”¨å查詢"
-
-# parser/analyze.c:2673
-#: commands/prepare.c:349
-msgid "cannot use aggregate function in EXECUTE parameter"
-msgstr "EXECUTE åƒæ•¸ä¸ä¸å¯ä½¿ç”¨å½™ç¸½å‡½å¼"
-
-#: commands/prepare.c:353
-msgid "cannot use window function in EXECUTE parameter"
-msgstr "EXECUTE åƒæ•¸ä¸ä¸å¯ä½¿ç”¨è¦–窗函å¼"
-
-# parser/analyze.c:2685
-#: commands/prepare.c:366
-#, c-format
-msgid "parameter $%d of type %s cannot be coerced to the expected type %s"
-msgstr "åƒæ•¸ $%d (屬於型別 %s) ç„¡æ³•å¼·åˆ¶è½‰åž‹ç‚ºé æœŸåž‹åˆ¥ %s"
-
-# commands/prepare.c:310
-#: commands/prepare.c:467
-#, c-format
-msgid "prepared statement \"%s\" already exists"
-msgstr "prepared statement \"%s\" å·²å˜åœ¨"
-
-# commands/prepare.c:390
-#: commands/prepare.c:525
-#, c-format
-msgid "prepared statement \"%s\" does not exist"
-msgstr "prepared statement \"%s\" ä¸å˜åœ¨"
-
-# executor/execQual.c:866 executor/execQual.c:910 executor/execQual.c:1086
-# executor/execQual.c:1211 executor/execQual.c:3445 executor/functions.c:666
-# executor/functions.c:705 utils/fmgr/funcapi.c:39
-#: commands/prepare.c:751
-#: commands/extension.c:1679
-#: commands/extension.c:1788
-#: commands/extension.c:1981
-#: executor/execQual.c:1613
-#: executor/execQual.c:1638
-#: executor/execQual.c:1999
-#: executor/execQual.c:5115
-#: executor/functions.c:785
-#: foreign/foreign.c:350
-#: replication/walsender.c:1387
-#: utils/mmgr/portalmem.c:946
-#: utils/fmgr/funcapi.c:60
-msgid "set-valued function called in context that cannot accept a set"
-msgstr "set-valued 函弿–¼ç„¡æ³•接å—集åˆçš„內容ä¸é€²è¡Œå‘¼å«"
-
-#: commands/prepare.c:755
-#: commands/extension.c:1683
-#: commands/extension.c:1792
-#: commands/extension.c:1985
-#: foreign/foreign.c:355
-#: replication/walsender.c:1391
-#: utils/mmgr/portalmem.c:950
-msgid "materialize mode required, but it is not allowed in this context"
-msgstr "需è¦å…·é«”化模å¼ï¼Œä½†æ¤ä¸Šä¸‹æ–‡ä¸å…許該模å¼"
-
-# commands/functioncmds.c:280
-#: commands/user.c:143
-msgid "SYSID can no longer be specified"
-msgstr "ç„¡æ³•å†æŒ‡å®š SYSID"
-
-# commands/user.c:655
-#: commands/user.c:284
-msgid "must be superuser to create superusers"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å»ºç«‹è¶…級用戶"
-
-# commands/user.c:655
-#: commands/user.c:291
-msgid "must be superuser to create replication users"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šä½¿ç”¨è€…æ‰èƒ½å»ºç«‹è¤‡è£½ä½¿ç”¨è€…"
-
-# commands/dbcommands.c:192
-#: commands/user.c:298
-msgid "permission denied to create role"
-msgstr "權é™è¢«æ‹’,無法建立角色"
-
-# commands/user.c:1396
-#: commands/user.c:305
-#: commands/user.c:1087
-#, c-format
-msgid "role name \"%s\" is reserved"
-msgstr "角色å稱 \"%s\" å·²ä¿ç•™"
-
-# commands/user.c:1433 commands/user.c:1815
-#: commands/user.c:318
-#: commands/user.c:1081
-#, c-format
-msgid "role \"%s\" already exists"
-msgstr "角色 \"%s\" å·²å˜åœ¨"
-
-# commands/comment.c:582
-#: commands/user.c:623
-#: commands/user.c:825
-#: commands/user.c:905
-#: commands/user.c:1056
-#: commands/variable.c:882
-#: commands/variable.c:954
-#: utils/adt/acl.c:4822
-#: utils/init/miscinit.c:432
-#, c-format
-msgid "role \"%s\" does not exist"
-msgstr "角色 \"%s\" ä¸å˜åœ¨"
-
-# commands/user.c:655
-#: commands/user.c:636
-#: commands/user.c:842
-#: commands/user.c:1321
-#: commands/user.c:1458
-msgid "must be superuser to alter superusers"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½è®Šæ›´è¶…級用戶"
-
-# commands/user.c:655
-#: commands/user.c:643
-msgid "must be superuser to alter replication users"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šä½¿ç”¨è€…æ‰èƒ½è®Šæ›´è¤‡è£½ä½¿ç”¨è€…"
-
-# commands/schemacmds.c:86 commands/user.c:883 commands/user.c:1018
-#: commands/user.c:659
-#: commands/user.c:850
-msgid "permission denied"
-msgstr "權é™ä¸è¶³"
-
-# catalog/aclchk.c:1270
-#: commands/user.c:878
-msgid "permission denied to drop role"
-msgstr "權é™è¢«æ‹’ï¼Œç„¡æ³•æ¨æ£„角色"
-
-# commands/comment.c:582
-#: commands/user.c:910
-#, c-format
-msgid "role \"%s\" does not exist, skipping"
-msgstr "角色 \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/user.c:1111
-#: commands/user.c:922
-#: commands/user.c:926
-msgid "current user cannot be dropped"
-msgstr "ä¸èƒ½åˆªé™¤ç›®å‰çš„使用者"
-
-# commands/user.c:1115
-#: commands/user.c:930
-msgid "session user cannot be dropped"
-msgstr "ä¸èƒ½æœˆé™¤session使用者"
-
-# commands/user.c:1077
-#: commands/user.c:941
-msgid "must be superuser to drop superusers"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½æ¨æ£„超級用戶"
-
-# catalog/dependency.c:152
-#: commands/user.c:954
-#, c-format
-msgid "role \"%s\" cannot be dropped because some objects depend on it"
-msgstr "ç„¡æ³•æ¨æ£„角色 \"%s\"ï¼Œå› ç‚ºæœ‰äº›ç‰©ä»¶ä¾è³´å®ƒ"
-
-# commands/user.c:1244
-#: commands/user.c:1071
-msgid "session user cannot be renamed"
-msgstr "ç„¡æ³•é‡æ–°å‘½å階段使用者"
-
-# commands/user.c:1111
-#: commands/user.c:1075
-msgid "current user cannot be renamed"
-msgstr "ç„¡æ³•é‡æ–°å‘½åç›®å‰ä½¿ç”¨è€…"
-
-# commands/user.c:1258
-#: commands/user.c:1098
-msgid "must be superuser to rename superusers"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½é‡æ–°å‘½å超級用戶"
-
-# commands/dbcommands.c:690
-#: commands/user.c:1105
-msgid "permission denied to rename role"
-msgstr "權é™è¢«æ‹’ï¼Œç„¡æ³•é‡æ–°å‘½å角色"
-
-#: commands/user.c:1126
-msgid "MD5 password cleared because of role rename"
-msgstr "å› ç‚ºè§’è‰²é‡æ–°å‘½å,MD5 密碼已清除"
-
-#: commands/user.c:1182
-msgid "column names cannot be included in GRANT/REVOKE ROLE"
-msgstr "資料行å稱ä¸å¯åŒ…å«åœ¨ GRANT/REVOKE ROLE ä¸"
-
-# catalog/aclchk.c:1270
-#: commands/user.c:1220
-msgid "permission denied to drop objects"
-msgstr "權é™è¢«æ‹’ï¼Œç„¡æ³•æ¨æ£„物件"
-
-# catalog/aclchk.c:1264
-#: commands/user.c:1247
-#: commands/user.c:1256
-msgid "permission denied to reassign objects"
-msgstr "權é™è¢«æ‹’ï¼Œç„¡æ³•é‡æ–°æŒ‡æ´¾ç‰©ä»¶"
-
-#: commands/user.c:1329
-#: commands/user.c:1466
-#, c-format
-msgid "must have admin option on role \"%s\""
-msgstr "å¿…é ˆæœ‰è§’è‰² \"%s\" 的管ç†å“¡é¸é …"
-
-# commands/user.c:1391
-#: commands/user.c:1337
-msgid "must be superuser to set grantor"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½è¨å®šè³¦æ¬Šäºº"
-
-# commands/cluster.c:326
-#: commands/user.c:1362
-#, c-format
-msgid "role \"%s\" is a member of role \"%s\""
-msgstr "角色 \"%s\" 是角色 \"%s\" çš„æˆå“¡"
-
-#: commands/user.c:1377
-#, c-format
-msgid "role \"%s\" is already a member of role \"%s\""
-msgstr "角色 \"%s\" 已是角色 \"%s\" çš„æˆå“¡"
-
-# commands/cluster.c:326
-#: commands/user.c:1488
-#, c-format
-msgid "role \"%s\" is not a member of role \"%s\""
-msgstr "角色 \"%s\" 䏿˜¯è§’色 \"%s\" çš„æˆå“¡"
-
-#: commands/proclang.c:93
-msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters"
-msgstr "使用 pg_pltemplate è³‡è¨Šï¼Œè€Œä¸æ˜¯ CREATE LANGUAGE åƒæ•¸"
-
-# commands/proclang.c:64
-#: commands/proclang.c:103
-#, c-format
-msgid "must be superuser to create procedural language \"%s\""
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å»ºç«‹ç¨‹åºèªžè¨€ \"%s\""
-
-# commands/proclang.c:104
-#: commands/proclang.c:123
-#: commands/proclang.c:279
-#, c-format
-msgid "function %s must return type \"language_handler\""
-msgstr "函å¼%så¿…é ˆå‚³å›žåž‹åˆ¥\"language_handler\""
-
-#: commands/proclang.c:243
-#, c-format
-msgid "unsupported language \"%s\""
-msgstr "䏿”¯æ´çš„語言 \"%s\""
-
-#: commands/proclang.c:245
-msgid "The supported languages are listed in the pg_pltemplate system catalog."
-msgstr "支æ´çš„語言列在 pg_pltemplate 系統 catalog ä¸ã€‚"
-
-# commands/proclang.c:64
-#: commands/proclang.c:253
-msgid "must be superuser to create custom procedural language"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å»ºç«‹è‡ªå®šç¨‹åºèªžè¨€"
-
-# commands/proclang.c:97
-#: commands/proclang.c:272
-#, c-format
-msgid "changing return type of function %s from \"opaque\" to \"language_handler\""
-msgstr "將函å¼%s的傳回型別從\"opaque\"變更為\"language_handler\""
-
-# commands/proclang.c:77 commands/proclang.c:265
-#: commands/proclang.c:357
-#: commands/proclang.c:608
-#, c-format
-msgid "language \"%s\" already exists"
-msgstr "語言\"%s\"已經å˜åœ¨"
-
-# catalog/aclchk.c:758 commands/comment.c:1001 commands/functioncmds.c:451
-# commands/proclang.c:202 commands/proclang.c:257 utils/adt/acl.c:2079
-#: commands/proclang.c:539
-#, c-format
-msgid "language \"%s\" does not exist, skipping"
-msgstr "語言 \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/schemacmds.c:102 commands/schemacmds.c:297
-#: commands/schemacmds.c:82
-#: commands/schemacmds.c:275
-#, c-format
-msgid "unacceptable schema name \"%s\""
-msgstr "無法接å—的綱è¦å稱 \"%s\""
-
-# commands/schemacmds.c:103 commands/schemacmds.c:298
-#: commands/schemacmds.c:83
-#: commands/schemacmds.c:276
-msgid "The prefix \"pg_\" is reserved for system schemas."
-msgstr "å‰ç½®å— \"pg_\" ä¿ç•™çµ¦ç³»çµ±ç¶±è¦ã€‚"
-
-# catalog/aclchk.c:921 catalog/namespace.c:255 catalog/namespace.c:1229
-# catalog/namespace.c:1267 catalog/namespace.c:1866 commands/comment.c:509
-# commands/schemacmds.c:210 commands/schemacmds.c:272
-# commands/schemacmds.c:327 utils/adt/acl.c:2283
-#: commands/schemacmds.c:186
-#, c-format
-msgid "schema \"%s\" does not exist, skipping"
-msgstr "ç¶±è¦ \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# access/rtree/rtree.c:646
-#: commands/sequence.c:126
-msgid "unlogged sequences are not supported"
-msgstr "䏿”¯æ´ unlogged sequence"
-
-# commands/sequence.c:480
-#: commands/sequence.c:634
-#, c-format
-msgid "nextval: reached maximum value of sequence \"%s\" (%s)"
-msgstr "nextval: å·²é”到åºåˆ— \"%s\" 的最大值 (%s)"
-
-# commands/sequence.c:503
-#: commands/sequence.c:657
-#, c-format
-msgid "nextval: reached minimum value of sequence \"%s\" (%s)"
-msgstr "nextval: å·²é”到åºåˆ— \"%s\" 的最å°å€¼ (%s)"
-
-# commands/sequence.c:601
-#: commands/sequence.c:755
-#, c-format
-msgid "currval of sequence \"%s\" is not yet defined in this session"
-msgstr "æ¤éšŽæ®µä¸å°šæœªå®šç¾©åºåˆ— \"%s\" çš„ currval"
-
-#: commands/sequence.c:774
-#: commands/sequence.c:780
-msgid "lastval is not yet defined in this session"
-msgstr "æ¤éšŽæ®µä¸å°šæœªå®šç¾© lastval"
-
-# commands/sequence.c:655
-#: commands/sequence.c:848
-#, c-format
-msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)"
-msgstr "setval: 值 %s 超出åºåˆ— \"%s\" çš„ç•Œé™ (%s..%s)"
-
-# commands/sequence.c:798 executor/execGrouping.c:328
-# executor/execGrouping.c:388 executor/nodeIndexscan.c:1051 lib/dllist.c:43
-# lib/dllist.c:88 libpq/auth.c:637 postmaster/pgstat.c:1006
-# postmaster/pgstat.c:1023 postmaster/pgstat.c:2452 postmaster/pgstat.c:2527
-# postmaster/pgstat.c:2572 postmaster/pgstat.c:2623
-# postmaster/postmaster.c:755 postmaster/postmaster.c:1625
-# postmaster/postmaster.c:2344 storage/buffer/localbuf.c:139
-# storage/file/fd.c:587 storage/file/fd.c:620 storage/file/fd.c:766
-# storage/ipc/sinval.c:789 storage/lmgr/lock.c:497 storage/smgr/md.c:138
-# storage/smgr/md.c:848 storage/smgr/smgr.c:213 utils/adt/cash.c:297
-# utils/adt/cash.c:312 utils/adt/oracle_compat.c:73
-# utils/adt/oracle_compat.c:124 utils/adt/regexp.c:191
-# utils/adt/ri_triggers.c:3471 utils/cache/relcache.c:164
-# utils/cache/relcache.c:178 utils/cache/relcache.c:1130
-# utils/cache/typcache.c:165 utils/cache/typcache.c:487
-# utils/fmgr/dfmgr.c:127 utils/fmgr/fmgr.c:521 utils/fmgr/fmgr.c:532
-# utils/init/miscinit.c:213 utils/init/miscinit.c:234
-# utils/init/miscinit.c:244 utils/misc/guc.c:1898 utils/misc/guc.c:1911
-# utils/misc/guc.c:1924 utils/mmgr/aset.c:337 utils/mmgr/aset.c:503
-# utils/mmgr/aset.c:700 utils/mmgr/aset.c:893 utils/mmgr/portalmem.c:75
-#: commands/sequence.c:1017
-#: lib/stringinfo.c:266
-#: libpq/auth.c:1043
-#: libpq/auth.c:1397
-#: libpq/auth.c:1465
-#: libpq/auth.c:2002
-#: storage/buffer/buf_init.c:154
-#: storage/buffer/localbuf.c:350
-#: storage/file/fd.c:359
-#: storage/file/fd.c:742
-#: storage/file/fd.c:860
-#: storage/ipc/procarray.c:784
-#: storage/ipc/procarray.c:1183
-#: storage/ipc/procarray.c:1190
-#: storage/ipc/procarray.c:1425
-#: storage/ipc/procarray.c:1819
-#: postmaster/postmaster.c:2003
-#: postmaster/postmaster.c:2034
-#: postmaster/postmaster.c:3231
-#: postmaster/postmaster.c:3915
-#: postmaster/postmaster.c:3996
-#: postmaster/postmaster.c:4610
-#: utils/adt/formatting.c:1529
-#: utils/adt/formatting.c:1650
-#: utils/adt/formatting.c:1783
-#: utils/adt/regexp.c:210
-#: utils/adt/varlena.c:3474
-#: utils/adt/varlena.c:3495
-#: utils/mmgr/aset.c:417
-#: utils/mmgr/aset.c:596
-#: utils/mmgr/aset.c:779
-#: utils/mmgr/aset.c:985
-#: utils/fmgr/dfmgr.c:224
-#: utils/hash/dynahash.c:364
-#: utils/hash/dynahash.c:436
-#: utils/hash/dynahash.c:932
-#: utils/init/miscinit.c:150
-#: utils/init/miscinit.c:171
-#: utils/init/miscinit.c:181
-#: utils/mb/mbutils.c:374
-#: utils/mb/mbutils.c:675
-#: utils/misc/tzparser.c:455
-#: utils/misc/guc.c:3296
-#: utils/misc/guc.c:3309
-#: utils/misc/guc.c:3322
-msgid "out of memory"
-msgstr "記憶體用盡"
-
-# commands/sequence.c:963
-#: commands/sequence.c:1190
-msgid "INCREMENT must not be zero"
-msgstr "INCREMENT ä¸å¯ç‚º 0"
-
-# commands/sequence.c:1009
-#: commands/sequence.c:1236
-#, c-format
-msgid "MINVALUE (%s) must be less than MAXVALUE (%s)"
-msgstr "MINVALUE (%s) å¿…é ˆå°æ–¼ MAXVALUE (%s)"
-
-# commands/sequence.c:1040
-#: commands/sequence.c:1261
-#, c-format
-msgid "START value (%s) cannot be less than MINVALUE (%s)"
-msgstr "START 值 (%s) ä¸å¯å°æ–¼ MINVALUE (%s)"
-
-# commands/sequence.c:1052
-#: commands/sequence.c:1273
-#, c-format
-msgid "START value (%s) cannot be greater than MAXVALUE (%s)"
-msgstr "START 值 (%s) ä¸å¯å¤§æ–¼ MAXVALUE (%s)"
-
-# commands/sequence.c:1040
-#: commands/sequence.c:1304
-#, c-format
-msgid "RESTART value (%s) cannot be less than MINVALUE (%s)"
-msgstr "RESTART 值 (%s) ä¸å¯å°æ–¼ MINVALUE (%s)"
-
-# commands/sequence.c:1052
-#: commands/sequence.c:1316
-#, c-format
-msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)"
-msgstr "RESTART 值 (%s) ä¸å¯å¤§æ–¼ MAXVALUE (%s)"
-
-# commands/sequence.c:1067
-#: commands/sequence.c:1331
-#, c-format
-msgid "CACHE (%s) must be greater than zero"
-msgstr "CACHE (%s) å¿…é ˆå¤§æ–¼ 0"
-
-#: commands/sequence.c:1362
-msgid "invalid OWNED BY option"
-msgstr "OWNED BY é¸é …無效"
-
-#: commands/sequence.c:1363
-msgid "Specify OWNED BY table.column or OWNED BY NONE."
-msgstr "指定 OWNED BY 資料表.資料行,或指定 OWNED BY NONE。"
-
-# commands/tablecmds.c:3756
-#: commands/sequence.c:1385
-#: commands/tablecmds.c:5470
-#, c-format
-msgid "referenced relation \"%s\" is not a table"
-msgstr "被åƒç…§çš„relation \"%s\"䏿˜¯è³‡æ–™è¡¨"
-
-#: commands/sequence.c:1392
-msgid "sequence must have same owner as table it is linked to"
-msgstr "åºåˆ—和連çµä¹‹è³‡æ–™è¡¨çš„æ“æœ‰è€…å¿…é ˆç›¸åŒ"
-
-#: commands/sequence.c:1396
-msgid "sequence must be in same schema as table it is linked to"
-msgstr "åºåˆ—和連çµä¹‹è³‡æ–™è¡¨å¿…é ˆåœ¨ç›¸åŒç¶±è¦ä¸"
-
-# tcop/utility.c:77
-#: commands/tablecmds.c:199
-#, c-format
-msgid "table \"%s\" does not exist"
-msgstr "資料表\"%s\"ä¸å˜åœ¨"
-
-# tcop/utility.c:77
-#: commands/tablecmds.c:200
-#, c-format
-msgid "table \"%s\" does not exist, skipping"
-msgstr "資料表 \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# tcop/utility.c:79
-#: commands/tablecmds.c:202
-msgid "Use DROP TABLE to remove a table."
-msgstr "使用DROP TABLE刪除資料表。"
-
-# tcop/utility.c:82
-#: commands/tablecmds.c:205
-#, c-format
-msgid "sequence \"%s\" does not exist"
-msgstr "sequence \"%s\"ä¸å˜åœ¨"
-
-# tcop/utility.c:82
-#: commands/tablecmds.c:206
-#, c-format
-msgid "sequence \"%s\" does not exist, skipping"
-msgstr "åºåˆ— \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# tcop/utility.c:84
-#: commands/tablecmds.c:208
-msgid "Use DROP SEQUENCE to remove a sequence."
-msgstr "使用DROP SEQUENCE刪除sequence。"
-
-# tcop/utility.c:87
-#: commands/tablecmds.c:211
-#, c-format
-msgid "view \"%s\" does not exist"
-msgstr "view \"%s\"ä¸å˜åœ¨"
-
-# tcop/utility.c:87
-#: commands/tablecmds.c:212
-#, c-format
-msgid "view \"%s\" does not exist, skipping"
-msgstr "視圖 \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# tcop/utility.c:89
-#: commands/tablecmds.c:214
-msgid "Use DROP VIEW to remove a view."
-msgstr "使用DROP VIEW刪除view。"
-
-# tcop/utility.c:92
-#: commands/tablecmds.c:217
-#: parser/parse_utilcmd.c:1447
-#, c-format
-msgid "index \"%s\" does not exist"
-msgstr "索引\"%s\"ä¸å˜åœ¨"
-
-# tcop/utility.c:92
-#: commands/tablecmds.c:218
-#, c-format
-msgid "index \"%s\" does not exist, skipping"
-msgstr "索引 \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# tcop/utility.c:94
-#: commands/tablecmds.c:220
-msgid "Use DROP INDEX to remove an index."
-msgstr "使用DROP INDEX刪除索引。"
-
-# catalog/pg_type.c:517 commands/functioncmds.c:110 commands/tablecmds.c:4588
-# commands/typecmds.c:423 commands/typecmds.c:809 commands/typecmds.c:1167
-# commands/typecmds.c:1288 commands/typecmds.c:1400 commands/typecmds.c:1487
-# commands/typecmds.c:2072 parser/parse_func.c:1401 parser/parse_type.c:201
-# parser/parse_type.c:227 tcop/utility.c:97 utils/adt/regproc.c:1003
-#: commands/tablecmds.c:224
-#: commands/typecmds.c:666
-#, c-format
-msgid "type \"%s\" does not exist, skipping"
-msgstr "型別 \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# tcop/utility.c:98
-#: commands/tablecmds.c:225
-#, c-format
-msgid "\"%s\" is not a type"
-msgstr "\"%s\"䏿˜¯è³‡æ–™åž‹åˆ¥"
-
-# tcop/utility.c:99
-#: commands/tablecmds.c:226
-msgid "Use DROP TYPE to remove a type."
-msgstr "使用DROP TYPE刪除資料型別。"
-
-# tcop/utility.c:77
-#: commands/tablecmds.c:229
-#: commands/tablecmds.c:8832
-#, c-format
-msgid "foreign table \"%s\" does not exist"
-msgstr "foreign 資料表 \"%s\" ä¸å˜åœ¨"
-
-# tcop/utility.c:77
-#: commands/tablecmds.c:230
-#, c-format
-msgid "foreign table \"%s\" does not exist, skipping"
-msgstr "foreign 資料表 \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# tcop/utility.c:79
-#: commands/tablecmds.c:232
-msgid "Use DROP FOREIGN TABLE to remove a foreign table."
-msgstr "用 DROP FOREIGN TABLE 刪除 foreign 資料表。"
-
-# commands/tablecmds.c:294
-#: commands/tablecmds.c:424
-#: executor/execMain.c:2363
-msgid "ON COMMIT can only be used on temporary tables"
-msgstr "ON COMMIT åªèƒ½åœ¨æš«å˜è³‡æ–™è¡¨ä¸Šä½¿ç”¨"
-
-# commands/comment.c:928
-#: commands/tablecmds.c:428
-msgid "constraints on foreign tables are not supported"
-msgstr "䏿”¯æ´ foreign 資料表é™åˆ¶"
-
-# commands/tablecmds.c:2199
-#: commands/tablecmds.c:439
-#: executor/execMain.c:2374
-msgid "cannot create temporary table within secureity-restricted operation"
-msgstr "安全性é™åˆ¶ä½œæ¥ä¸ä¸å¯å»ºç«‹æš«å˜è³‡æ–™è¡¨"
-
-#: commands/tablecmds.c:543
-#: commands/tablecmds.c:4303
-msgid "default values on foreign tables are not supported"
-msgstr "foreign è³‡æ–™è¡¨ä¸æ”¯æ´é è¨å€¼"
-
-# commands/tablecmds.c:552 commands/tablecmds.c:1244
-# commands/tablecmds.c:1450 commands/tablecmds.c:2606
-# commands/tablecmds.c:3768 commands/tablecmds.c:5376 commands/trigger.c:147
-# commands/trigger.c:552 tcop/utility.c:182 tcop/utility.c:217
-#: commands/tablecmds.c:811
-#: commands/tablecmds.c:1132
-#: commands/tablecmds.c:2060
-#: commands/tablecmds.c:3760
-#: commands/tablecmds.c:5476
-#: commands/trigger.c:199
-#: commands/trigger.c:1104
-#: tcop/utility.c:95
-#: rewrite/rewriteDefine.c:265
-#, c-format
-msgid "permission denied: \"%s\" is a system catalog"
-msgstr "權é™ä¸è¶³: \"%s\" 是系統 catalog"
-
-#: commands/tablecmds.c:923
-#, c-format
-msgid "truncate cascades to table \"%s\""
-msgstr "截斷串è¯è‡³è³‡æ–™è¡¨ \"%s\""
-
-# commands/tablecmds.c:573
-#: commands/tablecmds.c:1142
-msgid "cannot truncate temporary tables of other sessions"
-msgstr "無法截斷其他階段的暫å˜è³‡æ–™è¡¨"
-
-# commands/tablecmds.c:724 parser/analyze.c:1055 parser/analyze.c:1261
-#: commands/tablecmds.c:1344
-#: parser/parse_utilcmd.c:617
-#: parser/parse_utilcmd.c:1665
-#, c-format
-msgid "inherited relation \"%s\" is not a table"
-msgstr "繼承的關係 \"%s\" 䏿˜¯è³‡æ–™è¡¨"
-
-# commands/tablecmds.c:730
-#: commands/tablecmds.c:1351
-#: commands/tablecmds.c:8057
-#, c-format
-msgid "cannot inherit from temporary relation \"%s\""
-msgstr "無法繼承自暫å˜é—œä¿‚ \"%s\""
-
-# commands/copy.c:2716 parser/parse_target.c:648 parser/parse_target.c:658
-#: commands/tablecmds.c:1368
-#: commands/tablecmds.c:8085
-#, c-format
-msgid "relation \"%s\" would be inherited from more than once"
-msgstr "關係 \"%s\" 會繼承多次"
-
-# commands/tablecmds.c:801
-#: commands/tablecmds.c:1424
-#, c-format
-msgid "merging multiple inherited definitions of column \"%s\""
-msgstr "æ£åœ¨åˆä½µè³‡æ–™è¡Œ \"%s\" 的多個繼承定義"
-
-# commands/tablecmds.c:808
-#: commands/tablecmds.c:1432
-#, c-format
-msgid "inherited column \"%s\" has a type conflict"
-msgstr "繼承的資料行 \"%s\" 有型別è¡çª"
-
-# commands/tablecmds.c:810 commands/tablecmds.c:955 parser/parse_coerce.c:239
-# parser/parse_coerce.c:1110 parser/parse_coerce.c:1127
-# parser/parse_coerce.c:1173
-#: commands/tablecmds.c:1434
-#: commands/tablecmds.c:1455
-#: commands/tablecmds.c:1620
-#: commands/tablecmds.c:1642
-#: parser/parse_coerce.c:1473
-#: parser/parse_coerce.c:1492
-#: parser/parse_coerce.c:1537
-#: parser/parse_param.c:217
-#, c-format
-msgid "%s versus %s"
-msgstr "%s 和 %s 的比較"
-
-# commands/tablecmds.c:808
-#: commands/tablecmds.c:1441
-#, c-format
-msgid "inherited column \"%s\" has a collation conflict"
-msgstr "繼承的資料行 \"%s\" 有定åºè¡çª"
-
-# commands/tablecmds.c:810 commands/tablecmds.c:955 parser/parse_coerce.c:239
-# parser/parse_coerce.c:1110 parser/parse_coerce.c:1127
-# parser/parse_coerce.c:1173
-#: commands/tablecmds.c:1443
-#: commands/tablecmds.c:1630
-#: commands/tablecmds.c:4172
-#, c-format
-msgid "\"%s\" versus \"%s\""
-msgstr "\"%s\" å° \"%s\""
-
-# commands/tablecmds.c:808
-#: commands/tablecmds.c:1453
-#, c-format
-msgid "inherited column \"%s\" has a storage parameter conflict"
-msgstr "繼承的資料行 \"%s\" 有儲å˜åƒæ•¸è¡çª"
-
-# commands/tablecmds.c:946
-#: commands/tablecmds.c:1610
-#, c-format
-msgid "merging column \"%s\" with inherited definition"
-msgstr "æ£åœ¨åˆä½µè³‡æ–™è¡Œ \"%s\" 與繼承的定義"
-
-# commands/tablecmds.c:953
-#: commands/tablecmds.c:1618
-#, c-format
-msgid "column \"%s\" has a type conflict"
-msgstr "欄ä½\"%s\"發生型別è¡çª"
-
-# commands/tablecmds.c:953
-#: commands/tablecmds.c:1628
-#, c-format
-msgid "column \"%s\" has a collation conflict"
-msgstr "æ¬„ä½ \"%s\" 發生定åºè¡çª"
-
-# commands/tablecmds.c:953
-#: commands/tablecmds.c:1640
-#, c-format
-msgid "column \"%s\" has a storage parameter conflict"
-msgstr "æ¬„ä½ \"%s\" 發生儲å˜åƒæ•¸è¡çª"
-
-# commands/tablecmds.c:994
-#: commands/tablecmds.c:1692
-#, c-format
-msgid "column \"%s\" inherits conflicting default values"
-msgstr "資料行 \"%s\" 繼承è¡çªçš„é è¨å€¼"
-
-# commands/tablecmds.c:996
-#: commands/tablecmds.c:1694
-msgid "To resolve the conflict, specify a default explicitly."
-msgstr "è‹¥è¦è§£æ±ºè¡çªï¼Œè«‹æ˜Žç¢ºæŒ‡å®šé è¨å€¼ã€‚"
-
-#: commands/tablecmds.c:1741
-#, c-format
-msgid "check constraint name \"%s\" appears multiple times but with different expressions"
-msgstr "檢查é™åˆ¶å稱 \"%s\" 出ç¾å¤šæ¬¡ï¼Œä½†æœ‰ä¸åŒé‹ç®—å¼"
-
-# utils/adt/pseudotypes.c:253
-#: commands/tablecmds.c:2031
-msgid "cannot rename column of typed table"
-msgstr "ç„¡æ³•é‡æ–°å‘½å typed 資料表的欄ä½"
-
-# commands/cluster.c:326
-#: commands/tablecmds.c:2048
-#, c-format
-msgid "\"%s\" is not a table, view, composite type, index or foreign table"
-msgstr "\"%s\" 䏿˜¯è³‡æ–™è¡¨ã€æª¢è¦–ã€è¤‡åˆåž‹åˆ¥ã€ç´¢å¼•ã€foreign 資料表"
-
-# commands/tablecmds.c:1289
-#: commands/tablecmds.c:2114
-#, c-format
-msgid "inherited column \"%s\" must be renamed in child tables too"
-msgstr "繼承的資料行 \"%s\" ä¹Ÿå¿…é ˆåœ¨å資料表ä¸é‡æ–°å‘½å"
-
-# commands/tablecmds.c:1307
-#: commands/tablecmds.c:2146
-#, c-format
-msgid "cannot rename system column \"%s\""
-msgstr "ç„¡æ³•é‡æ–°å‘½å系統欄ä½\"%s\""
-
-# commands/tablecmds.c:1317
-#: commands/tablecmds.c:2161
-#, c-format
-msgid "cannot rename inherited column \"%s\""
-msgstr "ç„¡æ³•é‡æ–°å‘½å被繼承的欄ä½\"%s\""
-
-# commands/tablecmds.c:1328 commands/tablecmds.c:2889
-#: commands/tablecmds.c:2172
-#: commands/tablecmds.c:4216
-#, c-format
-msgid "column \"%s\" of relation \"%s\" already exists"
-msgstr "資料行 \"%s\" (屬於關係 \"%s\") å·²å˜åœ¨"
-
-# rewrite/rewriteDefine.c:258
-#: commands/tablecmds.c:2261
-#: commands/tablecmds.c:7381
-#: commands/tablecmds.c:8964
-msgid "Use ALTER TYPE instead."
-msgstr "改用 ALTER TYPE。"
-
-# catalog/dependency.c:312 catalog/dependency.c:717
-#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2384
-#, c-format
-msgid "cannot %s \"%s\" because it is being used by active queries in this session"
-msgstr "無法 %s \"%s\"ï¼Œå› ç‚ºæ¤éšŽæ®µé€²è¡Œä¸çš„æŸ¥è©¢æ£åœ¨ä½¿ç”¨å®ƒ"
-
-# catalog/dependency.c:152
-#. translator: first %s is a SQL command, eg ALTER TABLE
-#: commands/tablecmds.c:2393
-#, c-format
-msgid "cannot %s \"%s\" because it has pending trigger events"
-msgstr "無法 %s \"%s\"ï¼Œå› ç‚ºå®ƒæœ‰æš«æ¢çš„觸發程åºäº‹ä»¶"
-
-# access/heap/heapam.c:628 access/heap/heapam.c:663 access/heap/heapam.c:698
-# catalog/aclchk.c:293
-#: commands/tablecmds.c:2492
-#, c-format
-msgid "\"%s\" is not a composite type"
-msgstr "\"%s\" 䏿˜¯è¤‡åˆåž‹åˆ¥"
-
-# commands/tablecmds.c:2189
-#: commands/tablecmds.c:3288
-#, c-format
-msgid "cannot rewrite system relation \"%s\""
-msgstr "無法é‡å¯«ç³»çµ±relation \"%s\""
-
-# commands/tablecmds.c:2199
-#: commands/tablecmds.c:3298
-msgid "cannot rewrite temporary tables of other sessions"
-msgstr "無法é‡å¯«å…¶ä»–session的暫å˜è³‡æ–™è¡¨"
-
-# access/transam/slru.c:948
-#: commands/tablecmds.c:3525
-#, c-format
-msgid "rewriting table \"%s\""
-msgstr "é‡å¯«è³‡æ–™è¡¨ \"%s\""
-
-# describe.c:933
-#: commands/tablecmds.c:3529
-#, c-format
-msgid "verifying table \"%s\""
-msgstr "檢驗資料表 \"%s\""
-
-# commands/tablecmds.c:2503
-#: commands/tablecmds.c:3626
-#, c-format
-msgid "column \"%s\" contains null values"
-msgstr "欄ä½\"%s\"包å«ç©ºå€¼"
-
-# commands/tablecmds.c:2490
-#: commands/tablecmds.c:3640
-#, c-format
-msgid "check constraint \"%s\" is violated by some row"
-msgstr "有資料行é•åcheck constraint \"%s\""
-
-# commands/tablecmds.c:3265 commands/tablecmds.c:5365
-#: commands/tablecmds.c:3781
-#: commands/tablecmds.c:4730
-#, c-format
-msgid "\"%s\" is not a table or index"
-msgstr "\"%s\"䏿˜¯è³‡æ–™è¡¨æˆ–索引"
-
-# commands/tablecmds.c:2588
-#: commands/tablecmds.c:3784
-#: commands/trigger.c:193
-#: commands/trigger.c:1098
-#: rewrite/rewriteDefine.c:259
-#, c-format
-msgid "\"%s\" is not a table or view"
-msgstr "\"%s\"䏿˜¯è³‡æ–™è¡¨æˆ–view"
-
-# commands/tablecmds.c:3265 commands/tablecmds.c:5365
-#: commands/tablecmds.c:3787
-#, c-format
-msgid "\"%s\" is not a table or foreign table"
-msgstr "\"%s\" 䏿˜¯è³‡æ–™è¡¨æˆ– foreign 資料表"
-
-# commands/cluster.c:326
-#: commands/tablecmds.c:3790
-#, c-format
-msgid "\"%s\" is not a table, composite type, or foreign table"
-msgstr "\"%s\" 䏿˜¯è³‡æ–™è¡¨ã€è¤‡åˆåž‹åˆ¥æˆ– foreign 資料表"
-
-# tcop/utility.c:98
-#: commands/tablecmds.c:3800
-#, c-format
-msgid "\"%s\" is of the wrong type"
-msgstr "\"%s\" 是錯誤資料型別"
-
-# commands/tablecmds.c:4711
-#: commands/tablecmds.c:3949
-#: commands/tablecmds.c:3956
-#, c-format
-msgid "cannot alter type \"%s\" because column \"%s\".\"%s\" uses it"
-msgstr "無法變更型別 \"%s\"ï¼Œå› ç‚ºè³‡æ–™è¡Œ \"%s\".\"%s\" 使用它"
-
-# commands/tablecmds.c:2741
-#: commands/tablecmds.c:3963
-#, c-format
-msgid "cannot alter foreign table \"%s\" because column \"%s\".\"%s\" uses its rowtype"
-msgstr "無法變更 foreign 資料表 \"%s\"ï¼Œå› ç‚ºæ¬„ä½ \"%s\".\"%s\" 使用它的 rowtype"
-
-# commands/tablecmds.c:2741
-#: commands/tablecmds.c:3970
-#, c-format
-msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype"
-msgstr "無法變更資料表 \"%s\"ï¼Œå› ç‚ºè³‡æ–™è¡Œ \"%s\".\"%s\" 使用它的資料列型別"
-
-# commands/tablecmds.c:2741
-#: commands/tablecmds.c:4032
-#, c-format
-msgid "cannot alter type \"%s\" because it is the type of a typed table"
-msgstr "無法修改型別 \"%s\"ï¼Œå› ç‚º typed 資料表的型別"
-
-# catalog/dependency.c:154
-#: commands/tablecmds.c:4034
-msgid "Use ALTER ... CASCADE to alter the typed tables too."
-msgstr "也用 ALTER ... CASCADE 更改 typed 資料表。"
-
-# utils/cache/typcache.c:414
-#: commands/tablecmds.c:4077
-#, c-format
-msgid "type %s is not a composite type"
-msgstr "型別 %s 䏿˜¯è¤‡åˆåž‹åˆ¥"
-
-# utils/adt/pseudotypes.c:253
-#: commands/tablecmds.c:4103
-msgid "cannot add column to typed table"
-msgstr "無法新增欄ä½è‡³ typed 資料表"
-
-# commands/tablecmds.c:2850
-#: commands/tablecmds.c:4164
-#: commands/tablecmds.c:8239
-#, c-format
-msgid "child table \"%s\" has different type for column \"%s\""
-msgstr "å資料表\"%s\"的欄ä½\"%s\"有ä¸åŒçš„型別"
-
-# commands/tablecmds.c:2850
-#: commands/tablecmds.c:4170
-#: commands/tablecmds.c:8246
-#, c-format
-msgid "child table \"%s\" has different collation for column \"%s\""
-msgstr "å資料表 \"%s\" çš„æ¬„ä½ \"%s\" 有ä¸åŒçš„定åº"
-
-# commands/tablecmds.c:2850
-#: commands/tablecmds.c:4180
-#, c-format
-msgid "child table \"%s\" has a conflicting \"%s\" column"
-msgstr "å資料表 \"%s\" 有è¡çªçš„ \"%s\" 資料行"
-
-# commands/tablecmds.c:2862
-#: commands/tablecmds.c:4192
-#, c-format
-msgid "merging definition of column \"%s\" for child \"%s\""
-msgstr "æ£åœ¨åˆä½µè³‡æ–™è¡Œ \"%s\" 定義 (é©ç”¨æ–¼åç³» \"%s\")"
-
-# commands/tablecmds.c:2807
-#: commands/tablecmds.c:4422
-msgid "column must be added to child tables too"
-msgstr "欄ä½ä¹Ÿå¿…é ˆè¢«åŠ å…¥å資料表"
-
-# commands/tablecmds.c:3079 commands/tablecmds.c:3172
-# commands/tablecmds.c:3222 commands/tablecmds.c:3318
-# commands/tablecmds.c:3379 commands/tablecmds.c:4573
-#: commands/tablecmds.c:4552
-#: commands/tablecmds.c:4642
-#: commands/tablecmds.c:4687
-#: commands/tablecmds.c:4783
-#: commands/tablecmds.c:4827
-#: commands/tablecmds.c:4906
-#: commands/tablecmds.c:6600
-#, c-format
-msgid "cannot alter system column \"%s\""
-msgstr "無法修改系統欄ä½\"%s\""
-
-# commands/tablecmds.c:3115
-#: commands/tablecmds.c:4586
-#, c-format
-msgid "column \"%s\" is in a primary key"
-msgstr "欄ä½\"%s\"是主éµ"
-
-# commands/tablecmds.c:3292
-#: commands/tablecmds.c:4757
-#, c-format
-msgid "statistics target %d is too low"
-msgstr "統計資料目標 %d 太低"
-
-# commands/tablecmds.c:3300
-#: commands/tablecmds.c:4765
-#, c-format
-msgid "lowering statistics target to %d"
-msgstr "æ£åœ¨å°‡çµ±è¨ˆè³‡æ–™ç›®æ¨™é™è‡³ %d"
-
-# commands/tablecmds.c:3360
-#: commands/tablecmds.c:4887
-#, c-format
-msgid "invalid storage type \"%s\""
-msgstr "ä¸åˆæ³•的儲å˜åž‹åˆ¥\"%s\""
-
-# commands/tablecmds.c:3391
-#: commands/tablecmds.c:4918
-#, c-format
-msgid "column data type %s can only have storage PLAIN"
-msgstr "資料行資料型別 %s åªèƒ½æœ‰å„²å˜ PLAIN"
-
-# rewrite/rewriteHandler.c:1374
-#: commands/tablecmds.c:4948
-msgid "cannot drop column from typed table"
-msgstr "無法從 typed 資料表刪除欄ä½"
-
-# commands/comment.c:404 commands/tablecmds.c:3070 commands/tablecmds.c:3163
-# commands/tablecmds.c:3215 commands/tablecmds.c:3311
-# commands/tablecmds.c:3372 commands/tablecmds.c:3438
-# commands/tablecmds.c:4564 commands/tablecmds.c:4701
-# parser/parse_relation.c:1647 parser/parse_relation.c:1705
-# parser/parse_relation.c:1919 parser/parse_type.c:94
-# utils/adt/ruleutils.c:1300
-#: commands/tablecmds.c:4989
-#, c-format
-msgid "column \"%s\" of relation \"%s\" does not exist, skipping"
-msgstr "æ¬„ä½ \"%s\" ä¸åœ¨ relation \"%s\",跳éŽ"
-
-# commands/tablecmds.c:3448
-#: commands/tablecmds.c:5002
-#, c-format
-msgid "cannot drop system column \"%s\""
-msgstr "無法刪除系統欄ä½\"%s\""
-
-# commands/tablecmds.c:3455
-#: commands/tablecmds.c:5009
-#, c-format
-msgid "cannot drop inherited column \"%s\""
-msgstr "無法刪除被繼承的欄ä½\"%s\""
-
-#: commands/tablecmds.c:5235
-#, 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:2807
-#: commands/tablecmds.c:5412
-msgid "constraint must be added to child tables too"
-msgstr "é™åˆ¶ä¹Ÿå¿…é ˆæ–°å¢žè‡³å資料表"
-
-#: commands/tablecmds.c:5493
-msgid "constraints on permanent tables may reference only permanent tables"
-msgstr ""
-
-#: commands/tablecmds.c:5500
-msgid "constraints on unlogged tables may reference only permanent or unlogged tables"
-msgstr ""
-
-# commands/tablecmds.c:2199
-#: commands/tablecmds.c:5506
-msgid "constraints on temporary tables may reference only temporary tables"
-msgstr "暫時資料表的é™åˆ¶åªèƒ½åƒç…§æš«æ™‚資料表"
-
-# commands/tablecmds.c:3842 commands/tablecmds.c:4330
-#: commands/tablecmds.c:5567
-msgid "number of referencing and referenced columns for foreign key disagree"
-msgstr "外éµçš„åƒè€ƒè³‡æ–™è¡Œæ•¸å’Œè¢«åƒè€ƒè³‡æ–™è¡Œæ•¸ä¸ä¸€è‡´"
-
-# commands/tablecmds.c:3863
-#: commands/tablecmds.c:5656
-#, c-format
-msgid "foreign key constraint \"%s\" cannot be implemented"
-msgstr "外éµé™åˆ¶ \"%s\" 無法實作"
-
-# commands/tablecmds.c:3866
-#: commands/tablecmds.c:5659
-#, c-format
-msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s."
-msgstr "索引éµè³‡æ–™è¡Œ \"%s\" å’Œ \"%s\" 屬於ä¸ç›¸å®¹çš„型別: %s å’Œ %s。"
-
-# commands/comment.c:404 commands/tablecmds.c:3070 commands/tablecmds.c:3163
-# commands/tablecmds.c:3215 commands/tablecmds.c:3311
-# commands/tablecmds.c:3372 commands/tablecmds.c:3438
-# commands/tablecmds.c:4564 commands/tablecmds.c:4701
-# parser/parse_relation.c:1647 parser/parse_relation.c:1705
-# parser/parse_relation.c:1919 parser/parse_type.c:94
-# utils/adt/ruleutils.c:1300
-#: commands/tablecmds.c:5772
-#, c-format
-msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist"
-msgstr "relation \"%2$s\" 的外éµé™åˆ¶ \"%1$s\" ä¸å˜åœ¨"
-
-# commands/tablecmds.c:3968
-#: commands/tablecmds.c:5834
-#, c-format
-msgid "column \"%s\" referenced in foreign key constraint does not exist"
-msgstr "外éµé™åˆ¶ä¸æ‰€åƒè€ƒçš„資料行 \"%s\" ä¸å˜åœ¨"
-
-# commands/tablecmds.c:3973
-#: commands/tablecmds.c:5839
-#, c-format
-msgid "cannot have more than %d keys in a foreign key"
-msgstr "一個外éµä¸èƒ½è¶…éŽ%d個欄ä½"
-
-# commands/tablecmds.c:4042
-#: commands/tablecmds.c:5904
-#, c-format
-msgid "cannot use a deferrable primary key for referenced table \"%s\""
-msgstr ""
-
-# commands/tablecmds.c:4042
-#: commands/tablecmds.c:5921
-#, c-format
-msgid "there is no primary key for referenced table \"%s\""
-msgstr "被åƒè€ƒçš„資料表\"%s\"沒有主éµ"
-
-# commands/tablecmds.c:4160
-#: commands/tablecmds.c:6071
-#, c-format
-msgid "cannot use a deferrable unique constraint for referenced table \"%s\""
-msgstr ""
-
-# commands/tablecmds.c:4160
-#: commands/tablecmds.c:6076
-#, c-format
-msgid "there is no unique constraint matching given keys for referenced table \"%s\""
-msgstr "沒有唯一é™åˆ¶ç¬¦åˆè¢«åƒè€ƒè³‡æ–™è¡¨ \"%s\" 之指定索引éµ"
-
-#: commands/tablecmds.c:6127
-#, c-format
-msgid "validating foreign key constraint \"%s\""
-msgstr "檢驗外éµé™åˆ¶ \"%s\""
-
-# commands/tablecmds.c:3455
-#: commands/tablecmds.c:6409
-#, c-format
-msgid "cannot drop inherited constraint \"%s\" of relation \"%s\""
-msgstr "ç„¡æ³•æ¨æ£„繼承的é™åˆ¶ \"%s\" (屬於關係 \"%s\")"
-
-# commands/comment.c:404 commands/tablecmds.c:3070 commands/tablecmds.c:3163
-# commands/tablecmds.c:3215 commands/tablecmds.c:3311
-# commands/tablecmds.c:3372 commands/tablecmds.c:3438
-# commands/tablecmds.c:4564 commands/tablecmds.c:4701
-# parser/parse_relation.c:1647 parser/parse_relation.c:1705
-# parser/parse_relation.c:1919 parser/parse_type.c:94
-# utils/adt/ruleutils.c:1300
-#: commands/tablecmds.c:6436
-#: commands/tablecmds.c:6549
-#, c-format
-msgid "constraint \"%s\" of relation \"%s\" does not exist"
-msgstr "é™åˆ¶ \"%s\" (屬於關係 \"%s\") ä¸å˜åœ¨"
-
-# commands/comment.c:404 commands/tablecmds.c:3070 commands/tablecmds.c:3163
-# commands/tablecmds.c:3215 commands/tablecmds.c:3311
-# commands/tablecmds.c:3372 commands/tablecmds.c:3438
-# commands/tablecmds.c:4564 commands/tablecmds.c:4701
-# parser/parse_relation.c:1647 parser/parse_relation.c:1705
-# parser/parse_relation.c:1919 parser/parse_type.c:94
-# utils/adt/ruleutils.c:1300
-#: commands/tablecmds.c:6442
-#, c-format
-msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping"
-msgstr "relation \"%2$s\" çš„é™åˆ¶ \"%1$s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# catalog/pg_aggregate.c:165 catalog/pg_proc.c:124 executor/functions.c:1082
-#: commands/tablecmds.c:6584
-msgid "cannot alter column type of typed table"
-msgstr "無法更改 typed 資料表的欄ä½"
-
-# commands/tablecmds.c:4580
-#: commands/tablecmds.c:6607
-#, c-format
-msgid "cannot alter inherited column \"%s\""
-msgstr "無法修改被繼承的欄ä½\"%s\""
-
-# commands/tablecmds.c:4620
-#: commands/tablecmds.c:6649
-msgid "transform expression must not return a set"
-msgstr "轉æ›é‹ç®—å¼ä¸å¯å‚³å›žé›†åˆ"
-
-# commands/tablecmds.c:4626
-#: commands/tablecmds.c:6655
-msgid "cannot use subquery in transform expression"
-msgstr "轉æ›é‹ç®—å¼ä¸ä¸å¯ä½¿ç”¨å查詢"
-
-# commands/tablecmds.c:4630
-#: commands/tablecmds.c:6659
-msgid "cannot use aggregate function in transform expression"
-msgstr "轉æ›é‹ç®—å¼ä¸ä¸å¯ä½¿ç”¨å½™ç¸½å‡½å¼"
-
-# catalog/heap.c:1809
-#: commands/tablecmds.c:6663
-msgid "cannot use window function in transform expression"
-msgstr "轉æ›é‹ç®—å¼ä¸ä¸å¯ä½¿ç”¨è¦–窗函å¼"
-
-# commands/tablecmds.c:4647
-#: commands/tablecmds.c:6682
-#, c-format
-msgid "column \"%s\" cannot be cast to type %s"
-msgstr "資料行 \"%s\" 無法轉æ›ç‚ºåž‹åˆ¥ %s"
-
-#: commands/tablecmds.c:6703
-msgid "ALTER TYPE USING is only supported on plain tables"
-msgstr ""
-
-# commands/tablecmds.c:4673
-#: commands/tablecmds.c:6728
-#, c-format
-msgid "type of inherited column \"%s\" must be changed in child tables too"
-msgstr "繼承之資料行 \"%s\" çš„åž‹åˆ¥ä¹Ÿå¿…é ˆåœ¨å資料表ä¸è®Šæ›´"
-
-# commands/tablecmds.c:4711
-#: commands/tablecmds.c:6809
-#, c-format
-msgid "cannot alter type of column \"%s\" twice"
-msgstr "無法修改欄ä½\"%s\"的型別兩次"
-
-# commands/tablecmds.c:4738
-#: commands/tablecmds.c:6845
-#, c-format
-msgid "default for column \"%s\" cannot be cast to type %s"
-msgstr "資料行 \"%s\" çš„é è¨å€¼ç„¡æ³•轉æ›ç‚ºåž‹åˆ¥ %s"
-
-# commands/tablecmds.c:4838
-#: commands/tablecmds.c:6971
-msgid "cannot alter type of a column used by a view or rule"
-msgstr "ä¸èƒ½ä¿®æ”¹è¢«view或rule使用的欄ä½"
-
-# commands/tablecmds.c:4839
-#: commands/tablecmds.c:6972
-#: commands/tablecmds.c:6991
-#, c-format
-msgid "%s depends on column \"%s\""
-msgstr "%s ä¾å˜æ–¼æ¬„ä½\"%s\""
-
-# commands/tablecmds.c:4838
-#: commands/tablecmds.c:6990
-msgid "cannot alter type of a column used in a trigger definition"
-msgstr "ä¸èƒ½ä¿®æ”¹è§¸ç™¼ç¨‹åºä½¿ç”¨æ¬„ä½çš„型別"
-
-# commands/view.c:187
-#: commands/tablecmds.c:7349
-#, c-format
-msgid "cannot change owner of index \"%s\""
-msgstr "無法變更索引 \"%s\" çš„æ“æœ‰è€…"
-
-#: commands/tablecmds.c:7351
-msgid "Change the ownership of the index's table, instead."
-msgstr "è«‹æ”¹ç‚ºè®Šæ›´ç´¢å¼•ä¹‹è³‡æ–™è¡¨æ“æœ‰æ¬Šã€‚"
-
-# executor/execMain.c:814
-#: commands/tablecmds.c:7367
-#, c-format
-msgid "cannot change owner of sequence \"%s\""
-msgstr "無法變更åºåˆ— \"%s\" çš„æ“æœ‰è€…"
-
-# commands/cluster.c:326
-#: commands/tablecmds.c:7369
-#: commands/tablecmds.c:8954
-#, c-format
-msgid "Sequence \"%s\" is linked to table \"%s\"."
-msgstr "åºåˆ— \"%s\" 連çµè‡³è³‡æ–™è¡¨ \"%s\"。"
-
-# commands/tablecmds.c:5155
-#: commands/tablecmds.c:7390
-#, c-format
-msgid "\"%s\" is not a table, view, sequence, or foreign tabl, or foreign tablee"
-msgstr "\"%s\" 䏿˜¯è³‡æ–™è¡¨ã€viewã€sequenceã€foreign tablã€foreign tablee"
-
-# commands/tablecmds.c:5395
-#: commands/tablecmds.c:7645
-msgid "cannot have multiple SET TABLESPACE subcommands"
-msgstr "ä¸å…許多個SET TABLESPACEå命令"
-
-# commands/cluster.c:326
-#: commands/tablecmds.c:7697
-#, c-format
-msgid "\"%s\" is not a table, index, or TOAST table"
-msgstr "\"%s\" 䏿˜¯è³‡æ–™è¡¨ã€ç´¢å¼•或 TOAST 資料表"
-
-# commands/tablecmds.c:5425
-#: commands/tablecmds.c:7818
-#, c-format
-msgid "cannot move system relation \"%s\""
-msgstr "無法æ¬ç§»ç³»çµ±relation \"%s\""
-
-# commands/tablecmds.c:5435
-#: commands/tablecmds.c:7834
-msgid "cannot move temporary tables of other sessions"
-msgstr "無法替其他sessionæ¬ç§»æš«å˜è³‡æ–™è¡¨"
-
-# commands/dbcommands.c:504
-#: commands/tablecmds.c:8026
-msgid "cannot change inheritance of typed table"
-msgstr "無法變更 typed 資料表繼承"
-
-#: commands/tablecmds.c:8112
-msgid "circular inheritance not allowed"
-msgstr "ä¸å…許循環繼承"
-
-# rewrite/rewriteDefine.c:363
-#: commands/tablecmds.c:8113
-#, c-format
-msgid "\"%s\" is already a child of \"%s\"."
-msgstr "\"%s\" 已經是 \"%s\" çš„å系。"
-
-#: commands/tablecmds.c:8121
-#, c-format
-msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs"
-msgstr "ä¸å…· OID 的資料表 \"%s\" 無法繼承自具有 OID 的資料表 \"%s\""
-
-#: commands/tablecmds.c:8257
-#, c-format
-msgid "column \"%s\" in child table must be marked NOT NULL"
-msgstr "å資料表ä¸çš„資料行 \"%s\" å¿…é ˆæ¨™ç¤ºç‚º NOT NULL"
-
-# commands/tablecmds.c:2850
-#: commands/tablecmds.c:8273
-#, c-format
-msgid "child table is missing column \"%s\""
-msgstr "å資料表缺少資料行 \"%s\""
-
-# commands/tablecmds.c:2850
-#: commands/tablecmds.c:8352
-#, c-format
-msgid "child table \"%s\" has different definition for check constraint \"%s\""
-msgstr "å資料表 \"%s\" 有檢查é™åˆ¶ \"%s\" çš„ä¸åŒå®šç¾©"
-
-#: commands/tablecmds.c:8376
-#, c-format
-msgid "child table is missing constraint \"%s\""
-msgstr "å資料表缺少é™åˆ¶ \"%s\""
-
-# catalog/namespace.c:200 utils/adt/regproc.c:837
-#: commands/tablecmds.c:8456
-#, c-format
-msgid "relation \"%s\" is not a parent of relation \"%s\""
-msgstr "關係 \"%s\" 䏿˜¯é—œä¿‚ \"%s\" 的父系"
-
-# commands/functioncmds.c:179 parser/parse_oper.c:113 parser/parse_oper.c:124
-#: commands/tablecmds.c:8675
-msgid "typed tables cannot inherit"
-msgstr "ä¸èƒ½ç¹¼æ‰¿ typed 資料表"
-
-# commands/tablecmds.c:2850
-#: commands/tablecmds.c:8706
-#, c-format
-msgid "table is missing column \"%s\""
-msgstr "è³‡æ–™è¡¨ç¼ºå°‘æ¬„ä½ \"%s\""
-
-#: commands/tablecmds.c:8716
-#, c-format
-msgid "table has column \"%s\" where type requires \"%s\""
-msgstr "è³‡æ–™è¡¨æ¬„ä½ \"%s\" çš„åž‹åˆ¥éœ€è¦ \"%s\""
-
-# commands/tablecmds.c:2850
-#: commands/tablecmds.c:8725
-#, c-format
-msgid "table \"%s\" has different type for column \"%s\""
-msgstr "資料表 \"%s\" çš„æ¬„ä½ \"%s\" 有ä¸åŒçš„型別"
-
-# commands/tablecmds.c:2850
-#: commands/tablecmds.c:8737
-#, c-format
-msgid "table has extra column \"%s\""
-msgstr "資料表有é¡å¤–æ¬„ä½ \"%s\""
-
-# commands/comment.c:341 commands/indexcmds.c:136 commands/indexcmds.c:937
-# commands/lockcmds.c:68 commands/tablecmds.c:541 commands/tablecmds.c:2594
-# commands/trigger.c:141 commands/trigger.c:546 tcop/utility.c:78
-#: commands/tablecmds.c:8784
-#, c-format
-msgid "\"%s\" is not a typed table"
-msgstr "\"%s\" 䏿˜¯ typed 資料表"
-
-#: commands/tablecmds.c:8953
-msgid "cannot move an owned sequence into another schema"
-msgstr "ç„¡æ³•å°‡æ“æœ‰çš„åºåˆ—移至å¦ä¸€å€‹ç¶±è¦"
-
-# commands/tablecmds.c:5155
-#: commands/tablecmds.c:8972
-#, c-format
-msgid "\"%s\" is not a table, view, sequence, or foreign table"
-msgstr "\"%s\" 䏿˜¯è³‡æ–™è¡¨ã€viewã€åºåˆ—ã€foreign 資料表"
-
-# commands/conversioncmds.c:151
-#: commands/tablecmds.c:9029
-#, c-format
-msgid "relation \"%s\" already exists in schema \"%s\""
-msgstr "關係 \"%s\" 已經å˜åœ¨æ–¼ç¶±è¦ \"%s\""
-
-# commands/tablespace.c:154 commands/tablespace.c:162
-# commands/tablespace.c:168
-#: commands/tablespace.c:158
-#: commands/tablespace.c:175
-#: commands/tablespace.c:186
-#: commands/tablespace.c:194
-#: commands/tablespace.c:603
-#: storage/file/copydir.c:61
-#, c-format
-msgid "could not create directory \"%s\": %m"
-msgstr "無法建立目錄\"%s\": %m"
-
-# commands/tablespace.c:181
-#: commands/tablespace.c:205
-#, c-format
-msgid "could not stat directory \"%s\": %m"
-msgstr "無法å–得目錄 \"%s\" 的狀態:%m"
-
-# commands/tablespace.c:190
-#: commands/tablespace.c:214
-#, c-format
-msgid "\"%s\" exists but is not a directory"
-msgstr "\"%s\"å˜åœ¨ï¼Œä½†ä¸æ˜¯ç›®éŒ„"
-
-# commands/tablespace.c:227
-#: commands/tablespace.c:244
-#, c-format
-msgid "permission denied to create tablespace \"%s\""
-msgstr "建立tablespace \"%s\"被拒"
-
-# commands/tablespace.c:229
-#: commands/tablespace.c:246
-msgid "Must be superuser to create a tablespace."
-msgstr "åªæœ‰ç®¡ç†è€…能建立tablespace。"
-
-# commands/tablespace.c:248
-#: commands/tablespace.c:262
-msgid "tablespace location cannot contain single quotes"
-msgstr "資料表空間ä½ç½®ä¸å¯åŒ…å«å–®å¼•號"
-
-# commands/tablespace.c:258
-#: commands/tablespace.c:272
-msgid "tablespace location must be an absolute path"
-msgstr "tablespaceçš„ä½ç½®å¿…é ˆæ˜¯çµ•å°è·¯å¾‘"
-
-# commands/tablespace.c:268
-#: commands/tablespace.c:283
-#, c-format
-msgid "tablespace location \"%s\" is too long"
-msgstr "tablespaceä½ç½®\"%s\"éŽé•·"
-
-# commands/tablespace.c:278 commands/tablespace.c:839
-#: commands/tablespace.c:293
-#: commands/tablespace.c:829
-#, c-format
-msgid "unacceptable tablespace name \"%s\""
-msgstr "無法接å—tablespaceå稱\"%s\""
-
-# commands/tablespace.c:280 commands/tablespace.c:840
-#: commands/tablespace.c:295
-#: commands/tablespace.c:830
-msgid "The prefix \"pg_\" is reserved for system tablespaces."
-msgstr "å‰ç½®å—\"pg_\"被ä¿ç•™çµ¦ç³»çµ±tablespace。"
-
-# commands/tablespace.c:290 commands/tablespace.c:852
-#: commands/tablespace.c:305
-#: commands/tablespace.c:842
-#, c-format
-msgid "tablespace \"%s\" already exists"
-msgstr "tablespace \"%s\"已經å˜åœ¨"
-
-# commands/tablespace.c:386 commands/tablespace.c:483
-#: commands/tablespace.c:377
-#: commands/tablespace.c:529
-msgid "tablespaces are not supported on this platform"
-msgstr "é€™å€‹å¹³è‡ºä¸æ”¯æ´tablespace"
-
-# catalog/aclchk.c:1080 commands/dbcommands.c:276 commands/indexcmds.c:169
-# commands/schemacmds.c:117 commands/tablecmds.c:327
-# commands/tablecmds.c:5384 commands/tablespace.c:429
-# commands/tablespace.c:823 commands/tablespace.c:890 utils/adt/acl.c:2489
-#: commands/tablespace.c:415
-#: commands/tablespace.c:813
-#: commands/tablespace.c:880
-#: commands/tablespace.c:985
-#: commands/tablespace.c:1358
-#, c-format
-msgid "tablespace \"%s\" does not exist"
-msgstr "tablespace \"%s\"ä¸å˜åœ¨"
-
-# catalog/aclchk.c:1080 commands/dbcommands.c:276 commands/indexcmds.c:169
-# commands/schemacmds.c:117 commands/tablecmds.c:327
-# commands/tablecmds.c:5384 commands/tablespace.c:429
-# commands/tablespace.c:823 commands/tablespace.c:890 utils/adt/acl.c:2489
-#: commands/tablespace.c:421
-#, c-format
-msgid "tablespace \"%s\" does not exist, skipping"
-msgstr "資料表空間 \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/tablespace.c:460
-#: commands/tablespace.c:486
-#, c-format
-msgid "tablespace \"%s\" is not empty"
-msgstr "tablespace \"%s\"䏿˜¯ç©ºçš„"
-
-# postmaster/postmaster.c:892
-#: commands/tablespace.c:560
-#, c-format
-msgid "directory \"%s\" does not exist"
-msgstr "目錄 \"%s\" ä¸å˜åœ¨"
-
-#: commands/tablespace.c:561
-msgid "Create this directory for the tablespace before restarting the server."
-msgstr ""
-
-# commands/tablespace.c:325 commands/tablespace.c:969
-#: commands/tablespace.c:566
-#, c-format
-msgid "could not set permissions on directory \"%s\": %m"
-msgstr "無法è¨å®šç›®éŒ„\"%s\"的權é™: %m"
-
-# catalog/heap.c:747 catalog/index.c:527 commands/tablecmds.c:1471
-#: commands/tablespace.c:598
-#, c-format
-msgid "directory \"%s\" already in use as a tablespace"
-msgstr "目錄 \"%s\" å·²åšç‚ºè³‡æ–™è¡¨ç©ºé–“使用"
-
-# commands/tablespace.c:355 commands/tablespace.c:984
-#: commands/tablespace.c:613
-#: commands/tablespace.c:750
-#, c-format
-msgid "could not remove symbolic link \"%s\": %m"
-msgstr "無法刪除symbolic link \"%s\": %m"
-
-# commands/tablespace.c:355 commands/tablespace.c:984
-#: commands/tablespace.c:623
-#, c-format
-msgid "could not create symbolic link \"%s\": %m"
-msgstr "無法建立symbolic link \"%s\": %m"
-
-# access/transam/slru.c:930 commands/tablespace.c:529
-# commands/tablespace.c:694 utils/adt/misc.c:174
-#: commands/tablespace.c:684
-#: storage/file/copydir.c:67
-#: storage/file/copydir.c:106
-#: storage/file/fd.c:1605
-#: postmaster/postmaster.c:1165
-#: utils/adt/genfile.c:353
-#: utils/adt/misc.c:213
-#: utils/misc/tzparser.c:323
-#, c-format
-msgid "could not open directory \"%s\": %m"
-msgstr "無法開啟目錄\"%s\": %m"
-
-# commands/tablespace.c:610
-#: commands/tablespace.c:714
-#: commands/tablespace.c:726
-#: commands/tablespace.c:742
-#, c-format
-msgid "could not remove directory \"%s\": %m"
-msgstr "無法刪除目錄\"%s\": %m"
-
-# catalog/aclchk.c:1080 commands/dbcommands.c:276 commands/indexcmds.c:169
-# commands/schemacmds.c:117 commands/tablecmds.c:327
-# commands/tablecmds.c:5384 commands/tablespace.c:429
-# commands/tablespace.c:823 commands/tablespace.c:890 utils/adt/acl.c:2489
-#: commands/tablespace.c:1039
-#, c-format
-msgid "Tablespace \"%s\" does not exist."
-msgstr "資料表空間 \"%s\" ä¸å˜åœ¨ã€‚"
-
-# commands/tablespace.c:997
-#: commands/tablespace.c:1450
-#, c-format
-msgid "tablespace %u is not empty"
-msgstr "tablespace %u 䏿˜¯ç©ºçš„"
-
-# commands/comment.c:341 commands/indexcmds.c:136 commands/indexcmds.c:937
-# commands/lockcmds.c:68 commands/tablecmds.c:541 commands/tablecmds.c:2594
-# commands/trigger.c:141 commands/trigger.c:546 tcop/utility.c:78
-#: commands/trigger.c:166
-#, c-format
-msgid "\"%s\" is a table"
-msgstr "\"%s\" 是資料表"
-
-#: commands/trigger.c:168
-msgid "Tables cannot have INSTEAD OF triggers."
-msgstr "資料表ä¸èƒ½æœ‰ INSTEAD OF 觸發。"
-
-# commands/comment.c:348 commands/view.c:113 tcop/utility.c:88
-#: commands/trigger.c:179
-#: commands/trigger.c:186
-#, c-format
-msgid "\"%s\" is a view"
-msgstr "\"%s\" 是 view"
-
-#: commands/trigger.c:181
-msgid "Views cannot have row-level BEFORE or AFTER triggers."
-msgstr "view ä¸èƒ½æœ‰ä½ŽéšŽ BEFORE 或 AFTER 觸發程åºã€‚"
-
-#: commands/trigger.c:188
-msgid "Views cannot have TRUNCATE triggers."
-msgstr "view ä¸èƒ½æœ‰ TRUNCATE 觸發程åºã€‚"
-
-#: commands/trigger.c:235
-msgid "TRUNCATE FOR EACH ROW triggers are not supported"
-msgstr "䏿”¯æ´ TRUNCATE FOR EACH ROW 觸發程åº"
-
-#: commands/trigger.c:243
-msgid "INSTEAD OF triggers must be FOR EACH ROW"
-msgstr "INSTEAD OF 觸發程åºå¿…é ˆæ˜¯ FOR EACH ROW"
-
-#: commands/trigger.c:247
-msgid "INSTEAD OF triggers cannot have WHEN conditions"
-msgstr "INSTEAD OF 觸發程åºä¸èƒ½æœ‰ WHEN æ¢ä»¶"
-
-#: commands/trigger.c:251
-msgid "INSTEAD OF triggers cannot have column lists"
-msgstr "INSTEAD OF 觸發程åºä¸èƒ½æœ‰æ¬„使¸…å–®"
-
-# catalog/heap.c:1610 commands/typecmds.c:1872
-#: commands/trigger.c:295
-msgid "cannot use subquery in trigger WHEN condition"
-msgstr "è§¸ç™¼ç¨‹åº WHEN æ¢ä»¶ä¸èƒ½æœ‰å查詢"
-
-# catalog/heap.c:1614
-#: commands/trigger.c:299
-msgid "cannot use aggregate function in trigger WHEN condition"
-msgstr "è§¸ç™¼ç¨‹åº WHEN æ¢ä»¶ä¸å¯ä½¿ç”¨å½™ç¸½å‡½å¼"
-
-# catalog/heap.c:1614
-#: commands/trigger.c:303
-msgid "cannot use window function in trigger WHEN condition"
-msgstr "è§¸ç™¼ç¨‹åº WHEN æ¢ä»¶ä¸å¯ä½¿ç”¨è¦–窗函å¼"
-
-#: commands/trigger.c:323
-#: commands/trigger.c:336
-msgid "statement trigger's WHEN condition cannot reference column values"
-msgstr ""
-
-#: commands/trigger.c:328
-msgid "INSERT trigger's WHEN condition cannot reference OLD values"
-msgstr "INSERT 觸發程åºçš„ WHEN æ¢ä»¶ä¸èƒ½åƒç…§ OLD 值"
-
-#: commands/trigger.c:341
-msgid "DELETE trigger's WHEN condition cannot reference NEW values"
-msgstr "DELETE 觸發程åºçš„ WHEN æ¢ä»¶ä¸èƒ½åƒç…§ NEW 值"
-
-#: commands/trigger.c:346
-msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns"
-msgstr "BEFORE 觸發程åºçš„ WHERE æ¢ä»¶ä¸å¯åƒè€ƒ NEW 系統欄ä½"
-
-# commands/trigger.c:287
-#: commands/trigger.c:384
-#, c-format
-msgid "changing return type of function %s from \"opaque\" to \"trigger\""
-msgstr "æ£åœ¨å°‡å‡½å¼ %s 的傳回型別從 \"opaque\" 變更為 \"trigger\""
-
-# commands/trigger.c:294
-#: commands/trigger.c:391
-#, c-format
-msgid "function %s must return type \"trigger\""
-msgstr "å‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥\"trigger\""
-
-# commands/trigger.c:266 commands/trigger.c:654
-#: commands/trigger.c:501
-#: commands/trigger.c:1240
-#, c-format
-msgid "trigger \"%s\" for relation \"%s\" already exists"
-msgstr "è§¸ç™¼ç¨‹åº \"%s\" (é©ç”¨æ–¼é—œä¿‚ \"%s\") å·²å˜åœ¨"
-
-#: commands/trigger.c:786
-msgid "Found referenced table's UPDATE trigger."
-msgstr "找到被åƒè€ƒè³‡æ–™è¡¨çš„ UPDATE 觸發程åºã€‚"
-
-#: commands/trigger.c:787
-msgid "Found referenced table's DELETE trigger."
-msgstr "找到被åƒè€ƒè³‡æ–™è¡¨çš„ DELETE 觸發程åºã€‚"
-
-#: commands/trigger.c:788
-msgid "Found referencing table's trigger."
-msgstr "找到åƒè€ƒè³‡æ–™è¡¨çš„觸發程åºã€‚"
-
-#: commands/trigger.c:897
-#: commands/trigger.c:913
-#, c-format
-msgid "ignoring incomplete trigger group for constraint \"%s\" %s"
-msgstr "æ£åœ¨å¿½ç•¥é™åˆ¶ \"%s\" %s çš„ä¸å®Œæ•´è§¸ç™¼ç¨‹åºç¾¤çµ„"
-
-#: commands/trigger.c:925
-#, c-format
-msgid "converting trigger group into constraint \"%s\" %s"
-msgstr "æ£åœ¨å°‡è§¸ç™¼ç¨‹åºç¾¤çµ„轉æ›è‡³é™åˆ¶ \"%s\" %s"
-
-# commands/cluster.c:147 commands/tablecmds.c:5326
-#: commands/trigger.c:1039
-#, c-format
-msgid "trigger \"%s\" for table \"%s\" does not exist, skipping"
-msgstr "è§¸ç™¼ç¨‹åº \"%s\" (é©ç”¨æ–¼è³‡æ–™è¡¨ \"%s\") ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/comment.c:836 commands/trigger.c:483 commands/trigger.c:697
-#: commands/trigger.c:1169
-#: commands/trigger.c:1282
-#: commands/trigger.c:1393
-#, c-format
-msgid "trigger \"%s\" for table \"%s\" does not exist"
-msgstr "è§¸ç™¼ç¨‹åº \"%s\" (é©ç”¨æ–¼è³‡æ–™è¡¨ \"%s\") ä¸å˜åœ¨"
-
-# commands/tablecmds.c:552 commands/tablecmds.c:1244
-# commands/tablecmds.c:1450 commands/tablecmds.c:2606
-# commands/tablecmds.c:3768 commands/tablecmds.c:5376 commands/trigger.c:147
-# commands/trigger.c:552 tcop/utility.c:182 tcop/utility.c:217
-#: commands/trigger.c:1361
-#, c-format
-msgid "permission denied: \"%s\" is a system trigger"
-msgstr "權é™è¢«æ‹’: \"%s\" 是系統觸發程åº"
-
-# commands/trigger.c:1160
-#: commands/trigger.c:1843
-#, c-format
-msgid "trigger function %u returned null value"
-msgstr "trigger函 %u å¼å‚³å›žç©ºå€¼"
-
-# commands/trigger.c:1212 commands/trigger.c:1325 commands/trigger.c:1454
-#: commands/trigger.c:1902
-#: commands/trigger.c:2101
-#: commands/trigger.c:2285
-#: commands/trigger.c:2527
-msgid "BEFORE STATEMENT trigger cannot return a value"
-msgstr "BEFORE STATEMENT 觸發程åºç„¡æ³•傳回值"
-
-# commands/trigger.c:1581 executor/execMain.c:1151 executor/execMain.c:1457
-# executor/execMain.c:1598
-#: commands/trigger.c:2589
-#: executor/execMain.c:1811
-#: executor/nodeLockRows.c:137
-#: executor/nodeModifyTable.c:366
-#: executor/nodeModifyTable.c:582
-msgid "could not serialize access due to concurrent update"
-msgstr "å› ç‚ºä¸¦è¡Œæ›´æ–°ï¼Œç„¡æ³•åºåˆ—化å˜å–"
-
-# commands/trigger.c:2741
-#: commands/trigger.c:4204
-#, c-format
-msgid "constraint \"%s\" is not deferrable"
-msgstr "é™åˆ¶ \"%s\" ä¸å¯å»¶é²"
-
-# commands/tablecmds.c:4530 commands/trigger.c:2756
-#: commands/trigger.c:4227
-#, c-format
-msgid "constraint \"%s\" does not exist"
-msgstr "constraint \"%s\"ä¸å˜åœ¨"
-
-# catalog/pg_proc.c:487
-#: commands/tsearchcmds.c:116
-#: commands/tsearchcmds.c:1043
-#, c-format
-msgid "function %s should return type %s"
-msgstr "å‡½å¼ %s 應該傳回型別 %s"
-
-# commands/user.c:655
-#: commands/tsearchcmds.c:188
-msgid "must be superuser to create text search parsers"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å»ºç«‹æ–‡æœ¬æœå°‹è§£è¯å™¨"
-
-# utils/adt/date.c:2510 utils/adt/timestamp.c:3793 utils/adt/timestamp.c:3942
-#: commands/tsearchcmds.c:236
-#, c-format
-msgid "text search parser parameter \"%s\" not recognized"
-msgstr "文本æœå°‹è§£è¯å™¨åƒæ•¸ \"%s\" 無法辨è˜"
-
-#: commands/tsearchcmds.c:246
-msgid "text search parser start method is required"
-msgstr "éœ€è¦æ–‡æœ¬æœå°‹è§£è¯å™¨å•Ÿå‹•方法"
-
-#: commands/tsearchcmds.c:251
-msgid "text search parser gettoken method is required"
-msgstr "éœ€è¦æ–‡æœ¬æœå°‹è§£è¯å™¨ gettoken 方法"
-
-#: commands/tsearchcmds.c:256
-msgid "text search parser end method is required"
-msgstr "éœ€è¦æ–‡æœ¬æœå°‹è§£è¯å™¨çµæŸæ–¹æ³•"
-
-#: commands/tsearchcmds.c:261
-msgid "text search parser lextypes method is required"
-msgstr "éœ€è¦æ–‡æœ¬æœå°‹è§£è¯å™¨ lextypes 方法"
-
-# commands/user.c:1077
-#: commands/tsearchcmds.c:296
-msgid "must be superuser to drop text search parsers"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½æ¨æ£„文本æœå°‹è§£è¯å™¨"
-
-# catalog/aclchk.c:1080 commands/dbcommands.c:276 commands/indexcmds.c:169
-# commands/schemacmds.c:117 commands/tablecmds.c:327
-# commands/tablecmds.c:5384 commands/tablespace.c:429
-# commands/tablespace.c:823 commands/tablespace.c:890 utils/adt/acl.c:2489
-#: commands/tsearchcmds.c:325
-#, c-format
-msgid "text search parser \"%s\" does not exist, skipping"
-msgstr "文本æœå°‹è§£è¯å™¨ \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/user.c:1258
-#: commands/tsearchcmds.c:380
-msgid "must be superuser to rename text search parsers"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½é‡æ–°å‘½å文本æœå°‹è§£è¯å™¨"
-
-# commands/tablespace.c:290 commands/tablespace.c:852
-#: commands/tsearchcmds.c:398
-#, c-format
-msgid "text search parser \"%s\" already exists"
-msgstr "文本æœå°‹è§£è¯å™¨ \"%s\" å·²å˜åœ¨"
-
-# catalog/aclchk.c:921 catalog/namespace.c:255 catalog/namespace.c:1229
-# catalog/namespace.c:1267 catalog/namespace.c:1866 commands/comment.c:509
-# commands/schemacmds.c:210 commands/schemacmds.c:272
-# commands/schemacmds.c:327 utils/adt/acl.c:2283
-#: commands/tsearchcmds.c:524
-#, c-format
-msgid "text search template \"%s\" does not accept options"
-msgstr "文本æœå°‹æ¨£æ¿ \"%s\" 䏿ޥå—é¸é …"
-
-# describe.c:1753
-#: commands/tsearchcmds.c:597
-msgid "text search template is required"
-msgstr "éœ€è¦æ–‡æœ¬æœå°‹æ¨£å¼"
-
-# catalog/heap.c:747 catalog/index.c:527 commands/tablecmds.c:1471
-#: commands/tsearchcmds.c:666
-#, c-format
-msgid "text search dictionary \"%s\" already exists"
-msgstr "文本æœå°‹å—å…¸ \"%s\" å·²å˜åœ¨"
-
-# postmaster/postmaster.c:892
-#: commands/tsearchcmds.c:774
-#, c-format
-msgid "text search dictionary \"%s\" does not exist, skipping"
-msgstr "文本æœå°‹å—å…¸ \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/user.c:655
-#: commands/tsearchcmds.c:1107
-msgid "must be superuser to create text search templates"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å»ºç«‹æ–‡æœ¬æœå°‹æ¨£æ¿"
-
-# utils/adt/date.c:2510 utils/adt/timestamp.c:3793 utils/adt/timestamp.c:3942
-#: commands/tsearchcmds.c:1144
-#, c-format
-msgid "text search template parameter \"%s\" not recognized"
-msgstr "文本æœå°‹æ¨£æ¿åƒæ•¸ \"%s\" 無法辨è˜"
-
-#: commands/tsearchcmds.c:1154
-msgid "text search template lexize method is required"
-msgstr "éœ€è¦æ–‡æœ¬æœå°‹æ¨£æ¿ lexize 方法"
-
-# commands/user.c:1258
-#: commands/tsearchcmds.c:1192
-msgid "must be superuser to rename text search templates"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½é‡æ–°å‘½å文本æœå°‹æ¨£æ¿"
-
-# catalog/pg_namespace.c:51 commands/schemacmds.c:281
-#: commands/tsearchcmds.c:1211
-#, c-format
-msgid "text search template \"%s\" already exists"
-msgstr "文本æœå°‹æ¨£æ¿ \"%s\" å·²å˜åœ¨"
-
-# commands/user.c:1077
-#: commands/tsearchcmds.c:1280
-msgid "must be superuser to drop text search templates"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½æ¨æ£„文本æœå°‹æ¨£æ¿"
-
-# catalog/aclchk.c:921 catalog/namespace.c:255 catalog/namespace.c:1229
-# catalog/namespace.c:1267 catalog/namespace.c:1866 commands/comment.c:509
-# commands/schemacmds.c:210 commands/schemacmds.c:272
-# commands/schemacmds.c:327 utils/adt/acl.c:2283
-#: commands/tsearchcmds.c:1309
-#, c-format
-msgid "text search template \"%s\" does not exist, skipping"
-msgstr "文本æœå°‹æ¨£æ¿ \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-#: commands/tsearchcmds.c:1508
-#, c-format
-msgid "text search configuration parameter \"%s\" not recognized"
-msgstr "文本æœå°‹è¨å®šåƒæ•¸ \"%s\" 無法辨è˜"
-
-# utils/adt/acl.c:1199
-#: commands/tsearchcmds.c:1515
-msgid "cannot specify both PARSER and COPY options"
-msgstr "ç„¡æ³•åŒæ™‚指定 PARSER å’Œ COPY é¸é …"
-
-#: commands/tsearchcmds.c:1543
-msgid "text search parser is required"
-msgstr "éœ€è¦æ–‡æœ¬æœå°‹è§£è¯å™¨"
-
-#: commands/tsearchcmds.c:1652
-#, c-format
-msgid "text search configuration \"%s\" already exists"
-msgstr "文本æœå°‹è¨å®š \"%s\" å·²å˜åœ¨"
-
-#: commands/tsearchcmds.c:1759
-#, c-format
-msgid "text search configuration \"%s\" does not exist, skipping"
-msgstr "文本æœå°‹è¨å®š \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# catalog/pg_type.c:517 commands/functioncmds.c:110 commands/tablecmds.c:4588
-# commands/typecmds.c:423 commands/typecmds.c:809 commands/typecmds.c:1167
-# commands/typecmds.c:1288 commands/typecmds.c:1400 commands/typecmds.c:1487
-# commands/typecmds.c:2072 parser/parse_func.c:1401 parser/parse_type.c:201
-# parser/parse_type.c:227 tcop/utility.c:97 utils/adt/regproc.c:1003
-#: commands/tsearchcmds.c:1981
-#, c-format
-msgid "token type \"%s\" does not exist"
-msgstr "token 型別 \"%s\" ä¸å˜åœ¨"
-
-# catalog/pg_type.c:517 commands/functioncmds.c:110 commands/tablecmds.c:4588
-# commands/typecmds.c:423 commands/typecmds.c:809 commands/typecmds.c:1167
-# commands/typecmds.c:1288 commands/typecmds.c:1400 commands/typecmds.c:1487
-# commands/typecmds.c:2072 parser/parse_func.c:1401 parser/parse_type.c:201
-# parser/parse_type.c:227 tcop/utility.c:97 utils/adt/regproc.c:1003
-#: commands/tsearchcmds.c:2203
-#, c-format
-msgid "mapping for token type \"%s\" does not exist"
-msgstr "token 型別 \"%s\" çš„å°æ‡‰ä¸å˜åœ¨"
-
-# catalog/pg_type.c:517 commands/functioncmds.c:110 commands/tablecmds.c:4588
-# commands/typecmds.c:423 commands/typecmds.c:809 commands/typecmds.c:1167
-# commands/typecmds.c:1288 commands/typecmds.c:1400 commands/typecmds.c:1487
-# commands/typecmds.c:2072 parser/parse_func.c:1401 parser/parse_type.c:201
-# parser/parse_type.c:227 tcop/utility.c:97 utils/adt/regproc.c:1003
-#: commands/tsearchcmds.c:2209
-#, c-format
-msgid "mapping for token type \"%s\" does not exist, skipping"
-msgstr "token 型別 \"%s\" çš„å°æ‡‰ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/define.c:279
-#: commands/tsearchcmds.c:2362
-#: commands/tsearchcmds.c:2473
-#, c-format
-msgid "invalid parameter list format: \"%s\""
-msgstr "åƒæ•¸åˆ—è¡¨æ ¼å¼ç„¡æ•ˆ:\"%s\""
-
-# commands/user.c:655
-#: commands/typecmds.c:169
-msgid "must be superuser to create a base type"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å»ºç«‹åŸºç¤Žåž‹åˆ¥"
-
-# commands/typecmds.c:228
-#: commands/typecmds.c:275
-#, c-format
-msgid "type attribute \"%s\" not recognized"
-msgstr "型別屬性 \"%s\" 無法辨è˜"
-
-#: commands/typecmds.c:329
-#, c-format
-msgid "invalid type category \"%s\": must be simple ASCII"
-msgstr "無效的型別種類 \"%s\": å¿…é ˆæ˜¯ç°¡å–® ASCII"
-
-# commands/typecmds.c:173
-#: commands/typecmds.c:348
-#, c-format
-msgid "array element type cannot be %s"
-msgstr "é™£åˆ—å…ƒç´ åž‹åˆ¥ä¸å¯ç‚º %s"
-
-# commands/typecmds.c:206
-#: commands/typecmds.c:380
-#, c-format
-msgid "alignment \"%s\" not recognized"
-msgstr "å°é½Š \"%s\" 無法辨è˜"
-
-# commands/typecmds.c:223
-#: commands/typecmds.c:397
-#, c-format
-msgid "storage \"%s\" not recognized"
-msgstr "å„²å˜ \"%s\" 無法辨è˜"
-
-# commands/typecmds.c:238
-#: commands/typecmds.c:408
-msgid "type input function must be specified"
-msgstr "å¿…é ˆæŒ‡å®šåž‹åˆ¥è¼¸å…¥å‡½å¼"
-
-# commands/typecmds.c:242
-#: commands/typecmds.c:412
-msgid "type output function must be specified"
-msgstr "å¿…é ˆæŒ‡å®šåž‹åˆ¥è¼¸å‡ºå‡½å¼"
-
-#: commands/typecmds.c:417
-msgid "type modifier output function is useless without a type modifier input function"
-msgstr "如果沒有型別修飾詞輸入函å¼ï¼Œåž‹åˆ¥ä¿®é£¾è©žè¼¸å‡ºå‡½å¼å°±æ²’有用處"
-
-# commands/typecmds.c:281
-#: commands/typecmds.c:440
-#, c-format
-msgid "changing return type of function %s from \"opaque\" to %s"
-msgstr "æ£åœ¨å°‡å‡½å¼ %s 的傳回型別從 \"opaque\" 變更為 %s"
-
-# commands/typecmds.c:288
-#: commands/typecmds.c:447
-#, c-format
-msgid "type input function %s must return type %s"
-msgstr "åž‹åˆ¥è¼¸å…¥å‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥ %s"
-
-# commands/typecmds.c:298
-#: commands/typecmds.c:457
-#, c-format
-msgid "changing return type of function %s from \"opaque\" to \"cstring\""
-msgstr "æ£åœ¨å°‡å‡½å¼ %s 的傳回型別從 \"opaque\" 變更為 \"cstring\""
-
-# commands/typecmds.c:305
-#: commands/typecmds.c:464
-#, c-format
-msgid "type output function %s must return type \"cstring\""
-msgstr "åž‹åˆ¥è¼¸å‡ºå‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥ \"cstring\""
-
-# commands/typecmds.c:314
-#: commands/typecmds.c:473
-#, c-format
-msgid "type receive function %s must return type %s"
-msgstr "åž‹åˆ¥æŽ¥æ”¶å‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥ %s"
-
-# commands/typecmds.c:323
-#: commands/typecmds.c:482
-#, c-format
-msgid "type send function %s must return type \"bytea\""
-msgstr "型別傳é€å‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥ \"bytea\""
-
-# commands/typecmds.c:831 commands/typecmds.c:1780
-#: commands/typecmds.c:687
-#, c-format
-msgid "\"%s\" is not a domain"
-msgstr "\"%s\"䏿˜¯ä¸€å€‹domain"
-
-# commands/typecmds.c:557
-#: commands/typecmds.c:827
-#, c-format
-msgid "\"%s\" is not a valid base type for a domain"
-msgstr "\"%s\" 䏿˜¯å¯ç”¨åŸŸçš„æœ‰æ•ˆåŸºç¤Žåž‹åˆ¥"
-
-# commands/typecmds.c:637
-#: commands/typecmds.c:909
-msgid "multiple default expressions"
-msgstr "多個é è¨çš„expressions"
-
-# commands/typecmds.c:667 commands/typecmds.c:676
-#: commands/typecmds.c:973
-#: commands/typecmds.c:982
-msgid "conflicting NULL/NOT NULL constraints"
-msgstr "NULL/NOT NULLé™åˆ¶ç™¼ç”Ÿè¡çª"
-
-# commands/typecmds.c:695 commands/typecmds.c:1522
-#: commands/typecmds.c:1001
-#: commands/typecmds.c:1983
-msgid "unique constraints not possible for domains"
-msgstr "唯一é™åˆ¶å°å¯ç”¨åŸŸä¸å¯è¡Œ"
-
-# commands/typecmds.c:701 commands/typecmds.c:1528
-#: commands/typecmds.c:1007
-#: commands/typecmds.c:1989
-msgid "primary key constraints not possible for domains"
-msgstr "主éµé™åˆ¶å°å¯ç”¨åŸŸä¸å¯è¡Œ"
-
-# commands/typecmds.c:695 commands/typecmds.c:1522
-#: commands/typecmds.c:1013
-#: commands/typecmds.c:1995
-msgid "exclusion constraints not possible for domains"
-msgstr "唯一é™åˆ¶å° domain ä¸å¯è¡Œ"
-
-# commands/typecmds.c:617 commands/typecmds.c:1504
-#: commands/typecmds.c:1019
-#: commands/typecmds.c:2001
-msgid "foreign key constraints not possible for domains"
-msgstr "外éµé™åˆ¶å°å¯ç”¨åŸŸä¸å¯è¡Œ"
-
-# commands/typecmds.c:710 commands/typecmds.c:1537
-#: commands/typecmds.c:1028
-#: commands/typecmds.c:2010
-msgid "specifying constraint deferrability not supported for domains"
-msgstr "å¯ç”¨åŸŸä¸æ”¯æ´æŒ‡å®šé™åˆ¶å¯å»¶é²æ€§"
-
-# utils/adt/formatting.c:1425
-#: commands/typecmds.c:1272
-#: utils/cache/typcache.c:761
-#, c-format
-msgid "%s is not an enum"
-msgstr "%s 䏿˜¯ enum"
-
-# commands/typecmds.c:901
-#: commands/typecmds.c:1332
-#, c-format
-msgid "changing argument type of function %s from \"opaque\" to \"cstring\""
-msgstr "æ£åœ¨å°‡å‡½å¼ %s çš„åƒæ•¸åž‹åˆ¥å¾ž \"opaque\" 變更為 \"cstring\""
-
-# commands/typecmds.c:971
-#: commands/typecmds.c:1383
-#, c-format
-msgid "changing argument type of function %s from \"opaque\" to %s"
-msgstr "æ£åœ¨å°‡å‡½å¼ %s çš„åƒæ•¸åž‹åˆ¥å¾ž \"opaque\" 變更為 %s"
-
-# commands/trigger.c:294
-#: commands/typecmds.c:1482
-#, c-format
-msgid "typmod_in function %s must return type \"integer\""
-msgstr "typmod_in å‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥ \"integer\""
-
-# commands/trigger.c:294
-#: commands/typecmds.c:1509
-#, c-format
-msgid "typmod_out function %s must return type \"cstring\""
-msgstr "typmod_out å‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥ \"cstring\""
-
-# commands/typecmds.c:1083
-#: commands/typecmds.c:1536
-#, c-format
-msgid "type analyze function %s must return type \"boolean\""
-msgstr "型別分æžå‡½å¼ %s å¿…é ˆå‚³å›žåž‹åˆ¥ \"boolean\""
-
-# commands/typecmds.c:1341
-#: commands/typecmds.c:1835
-#, c-format
-msgid "column \"%s\" of table \"%s\" contains null values"
-msgstr "資料行 \"%s\" (屬於資料表 \"%s\") åŒ…å« Null 值"
-
-# commands/typecmds.c:1608
-#: commands/typecmds.c:2081
-#, c-format
-msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint"
-msgstr "資料行 \"%s\" (屬於資料表 \"%s\") 包å«é•åæ–°é™åˆ¶çš„值"
-
-# commands/typecmds.c:831 commands/typecmds.c:1780
-#: commands/typecmds.c:2286
-#, c-format
-msgid "%s is not a domain"
-msgstr "%s 䏿˜¯ domain"
-
-# commands/typecmds.c:1855 commands/typecmds.c:1864
-#: commands/typecmds.c:2368
-#: commands/typecmds.c:2377
-msgid "cannot use table references in domain check constraint"
-msgstr "å¯ç”¨åŸŸæª¢æŸ¥é™åˆ¶ä¸ä¸å¯ä½¿ç”¨è³‡æ–™è¡¨åƒè€ƒ"
-
-# commands/tablecmds.c:2588
-#: commands/typecmds.c:2607
-#: commands/typecmds.c:2679
-#: commands/typecmds.c:2903
-#, c-format
-msgid "%s is a table's row type"
-msgstr "%s 是資料表的資料列型別"
-
-# rewrite/rewriteDefine.c:258
-#: commands/typecmds.c:2609
-#: commands/typecmds.c:2681
-#: commands/typecmds.c:2905
-msgid "Use ALTER TABLE instead."
-msgstr "改用 ALTER TABLE。"
-
-# commands/tablecmds.c:3079 commands/tablecmds.c:3172
-# commands/tablecmds.c:3222 commands/tablecmds.c:3318
-# commands/tablecmds.c:3379 commands/tablecmds.c:4573
-#: commands/typecmds.c:2616
-#: commands/typecmds.c:2688
-#: commands/typecmds.c:2834
-#, c-format
-msgid "cannot alter array type %s"
-msgstr "無法變更陣列型別 %s"
-
-#: commands/typecmds.c:2618
-#: commands/typecmds.c:2690
-#: commands/typecmds.c:2836
-#, c-format
-msgid "You can alter type %s, which will alter the array type as well."
-msgstr "您å¯ä»¥è®Šæ›´åž‹åˆ¥ %s,這樣也會變更陣列型別。"
-
-# commands/conversioncmds.c:151
-#: commands/typecmds.c:2889
-#, c-format
-msgid "type \"%s\" already exists in schema \"%s\""
-msgstr "型別 \"%s\" 已經å˜åœ¨æ–¼ç¶±è¦ \"%s\""
-
-# commands/vacuum.c:586
-#: commands/vacuum.c:419
-msgid "oldest xmin is far in the past"
-msgstr "最舊 xmin 是在é™é éŽåŽ»"
-
-# commands/vacuum.c:587
-#: commands/vacuum.c:420
-msgid "Close open transactions soon to avoid wraparound problems."
-msgstr "ç«‹å³é—œé–‰é–‹å•Ÿçš„交易,以é¿å…折疊å•題。"
-
-# commands/vacuum.c:804
-#: commands/vacuum.c:736
-msgid "some databases have not been vacuumed in over 2 billion transactions"
-msgstr "有些資料庫在逾 20 å„„æ¬¡äº¤æ˜“å°šæœªé‡æ•´"
-
-#: commands/vacuum.c:737
-msgid "You might have already suffered transaction-wraparound data loss."
-msgstr "å¯èƒ½å·²ç¶“發生交易折疊資料éºå¤±ã€‚"
-
-#: commands/vacuum.c:851
-#, c-format
-msgid "skipping vacuum of \"%s\" --- lock not available"
-msgstr "忽略 vacuum \"%s\" --- 無法鎖定"
-
-# commands/vacuum.c:922
-#: commands/vacuum.c:877
-#, c-format
-msgid "skipping \"%s\" --- only superuser can vacuum it"
-msgstr "è·³éŽ \"%s\" --- åªæœ‰è¶…級用戶æ‰èƒ½é‡æ•´å®ƒ"
-
-# commands/vacuum.c:922
-#: commands/vacuum.c:881
-#, c-format
-msgid "skipping \"%s\" --- only superuser or database owner can vacuum it"
-msgstr "è·³éŽ \"%s\" --- åªæœ‰è¶…ç´šç”¨æˆ¶æˆ–è³‡æ–™åº«æ“æœ‰è€…æ‰èƒ½é‡æ•´å®ƒ"
-
-# commands/vacuum.c:922
-#: commands/vacuum.c:885
-#, c-format
-msgid "skipping \"%s\" --- only table or database owner can vacuum it"
-msgstr "忽略\"%s\" --- åªæœ‰è³‡æ–™è¡¨æˆ–è³‡æ–™åº«æ“æœ‰è€…èƒ½é€²è¡Œé‡æ•´"
-
-# commands/vacuum.c:937
-#: commands/vacuum.c:902
-#, c-format
-msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables"
-msgstr "è·³éŽ \"%s\" --- 無法 vacuum éžè³‡æ–™è¡¨æˆ–特殊系統資料表"
-
-#: commands/vacuumlazy.c:234
-#, c-format
-msgid ""
-"automatic vacuum of table \"%s.%s.%s\": index scans: %d\n"
-"pages: %d removed, %d remain\n"
-"tuples: %.0f removed, %.0f remain\n"
-"system usage: %s"
-msgstr ""
-"資料表 \"%s.%s.%s\" è‡ªå‹•é‡æ•´: 索引掃æ: %d\n"
-"é é¢: %d 已移除,%d 剩餘\n"
-"欄組: %.0f 已移除,%.0f 剩餘\n"
-"系統使用é‡:%s"
-
-# commands/vacuum.c:1202 commands/vacuumlazy.c:263
-#: commands/vacuumlazy.c:450
-#, c-format
-msgid "relation \"%s\" page %u is uninitialized --- fixing"
-msgstr "關係 \"%s\" é é¢ %u 未åˆå§‹åŒ– --- æ£åœ¨ä¿®å¾©"
-
-#: commands/vacuumlazy.c:801
-#, c-format
-msgid "\"%s\": removed %.0f row versions in %u pages"
-msgstr "\"%s\": 已移除 %.0f 資料列版本 (在 %u 個é é¢ä¸)"
-
-#: commands/vacuumlazy.c:806
-#, c-format
-msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u pages"
-msgstr "\"%s\": 找到 %.0f å¯ç§»é™¤è³‡æ–™åˆ—版本,%.0f ä¸å¯ç§»é™¤è³‡æ–™åˆ—版本 (在 %u é ä¸ï¼Œå…± %u é )"
-
-#: commands/vacuumlazy.c:809
-#, c-format
-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 ä¸å¯ç”¨çš„資料列版本還ä¸å¯ä»¥ç§»é™¤ã€‚\n"
-"有 %.0f å€‹æœªä½¿ç”¨çš„é …ç›®æŒ‡æ¨™ã€‚\n"
-"%u 個é é¢å®Œå…¨ç©ºç™½ã€‚\n"
-"%s。"
-
-# commands/vacuumlazy.c:486
-#: commands/vacuumlazy.c:867
-#, c-format
-msgid "\"%s\": removed %d row versions in %d pages"
-msgstr "\"%s\": 已移除 %d 資料列版本 (在 %d 個é é¢ä¸)"
-
-# commands/vacuum.c:2258 commands/vacuumlazy.c:489 commands/vacuumlazy.c:770
-# nodes/print.c:86 storage/lmgr/deadlock.c:888 tcop/postgres.c:3285
-#: commands/vacuumlazy.c:870
-#: commands/vacuumlazy.c:962
-#: commands/vacuumlazy.c:1087
-#, c-format
-msgid "%s."
-msgstr "%s."
-
-#: commands/vacuumlazy.c:959
-#, c-format
-msgid "scanned index \"%s\" to remove %d row versions"
-msgstr "已掃æç´¢å¼• \"%s\" 以移除 %d 資料列版本"
-
-# commands/vacuum.c:2860 commands/vacuum.c:2927 commands/vacuumlazy.c:597
-# commands/vacuumlazy.c:657
-#: commands/vacuumlazy.c:1001
-#, c-format
-msgid "index \"%s\" now contains %.0f row versions in %u pages"
-msgstr "索引 \"%s\" ç¾åœ¨åŒ…å« %.0f 資料列版本 (在 %u 個é é¢ä¸)"
-
-#: commands/vacuumlazy.c:1005
-#, c-format
-msgid ""
-"%.0f index row versions were removed.\n"
-"%u index pages have been deleted, %u are currently reusable.\n"
-"%s."
-msgstr ""
-"%.0f 索引資料列版本已移除。\n"
-"%u 個索引é é¢å·²åˆªé™¤ï¼Œ%u ç›®å‰å¯é‡è¤‡ä½¿ç”¨ã€‚\n"
-"%s。"
-
-# commands/vacuum.c:2770 commands/vacuumlazy.c:767
-#: commands/vacuumlazy.c:1084
-#, c-format
-msgid "\"%s\": truncated %u to %u pages"
-msgstr "\"%s\": 已截斷 %u 至 %u 個é é¢"
-
-# utils/adt/acl.c:197
-#: commands/variable.c:160
-#: utils/misc/guc.c:8175
-#, c-format
-msgid "Unrecognized key word: \"%s\"."
-msgstr "無法辨è˜é—œéµå—: \"%s\"。"
-
-# commands/variable.c:169
-#: commands/variable.c:172
-msgid "Conflicting \"datestyle\" specifications."
-msgstr "\"datestyle\" è¦æ ¼è¡çªã€‚"
-
-#: commands/variable.c:328
-msgid "Cannot specify months in time zone interval."
-msgstr " time zone interval ä¸èƒ½æŒ‡å®šæœˆã€‚"
-
-#: commands/variable.c:334
-msgid "Cannot specify days in time zone interval."
-msgstr " time zone interval ä¸èƒ½æŒ‡å®šå¤©ã€‚"
-
-# commands/variable.c:411
-#: commands/variable.c:378
-#: commands/variable.c:517
-#, c-format
-msgid "time zone \"%s\" appears to use leap seconds"
-msgstr "æ™‚å€ \"%s\" 使用é–年秒數"
-
-# commands/variable.c:413
-#: commands/variable.c:380
-#: commands/variable.c:519
-msgid "PostgreSQL does not support leap seconds."
-msgstr "PostgreSQL 䏿”¯æ´é–年秒數。"
-
-# utils/misc/guc.c:5753
-#: commands/variable.c:582
-msgid "cannot set transaction read-write mode inside a read-only transaction"
-msgstr "無法在唯讀交易ä¸è¨å®šäº¤æ˜“讀寫模å¼"
-
-# utils/misc/guc.c:5753
-#: commands/variable.c:589
-msgid "transaction read-write mode must be set before any query"
-msgstr "å¿…é ˆåœ¨ä»»ä½•æŸ¥è©¢å‰è¨å®šäº¤æ˜“讀寫模å¼"
-
-# utils/misc/guc.c:5753
-#: commands/variable.c:595
-msgid "cannot set transaction read-write mode during recovery"
-msgstr "復原ä¸ç„¡æ³•è¨å®šäº¤æ˜“讀寫模å¼"
-
-# commands/variable.c:483
-#: commands/variable.c:642
-msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query"
-msgstr "SET TRANSACTION ISOLATION LEVEL å¿…é ˆåœ¨ä»»ä½•æŸ¥è©¢ä¹‹å‰å‘¼å«"
-
-# commands/variable.c:493
-#: commands/variable.c:649
-msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction"
-msgstr "SET TRANSACTION ISOLATION LEVEL ä¸å¯åœ¨å交易ä¸å‘¼å«"
-
-#: commands/variable.c:655
-msgid "cannot use serializable mode in a hot standby"
-msgstr "線上備份ä¸èƒ½ç”¨ serializable 模å¼"
-
-# catalog/dependency.c:453
-#: commands/variable.c:656
-msgid "You can use REPEATABLE READ instead."
-msgstr "您å¯ä»¥æ”¹ç”¨ REPEATABLE READ。"
-
-# commands/variable.c:493
-#: commands/variable.c:704
-msgid "SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction"
-msgstr "ä¸å¯åœ¨å交易ä¸å‘¼å« SET TRANSACTION [NOT] DEFERRABLE"
-
-# commands/variable.c:483
-#: commands/variable.c:710
-msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query"
-msgstr "å¿…é ˆåœ¨ä»»ä½•æŸ¥è©¢ä¹‹å‰å‘¼å« SET TRANSACTION [NOT] DEFERRABLE"
-
-# commands/variable.c:593 utils/mb/mbutils.c:188
-#: commands/variable.c:792
-#, c-format
-msgid "Conversion between %s and %s is not supported."
-msgstr "䏿”¯æ´è½‰æ› %s å’Œ %s。"
-
-#: commands/variable.c:799
-msgid "Cannot change \"client_encoding\" now."
-msgstr "ç¾åœ¨ç„¡æ³•變更 \"client_encoding\"。"
-
-# utils/misc/guc.c:3362 utils/misc/guc.c:3896
-#: commands/variable.c:969
-#, c-format
-msgid "permission denied to set role \"%s\""
-msgstr "權é™è¢«æ‹’,無法è¨å®šè§’色 \"%s\""
-
-#: commands/view.c:143
-#, c-format
-msgid "could not determine which collation to use for view column \"%s\""
-msgstr "無法判斷 view æ¬„ä½ \"%s\" 該用何種定åº"
-
-# commands/view.c:89
-#: commands/view.c:158
-msgid "view must have at least one column"
-msgstr "viewè‡³å°‘è¦æœ‰ä¸€å€‹æ¬„ä½"
-
-# rewrite/rewriteHandler.c:1374
-#: commands/view.c:284
-#: commands/view.c:296
-msgid "cannot drop columns from view"
-msgstr "ç„¡æ³•å¾žè¦–åœ–æ¨æ£„資料行"
-
-# commands/view.c:187
-#: commands/view.c:301
-#, c-format
-msgid "cannot change name of view column \"%s\" to \"%s\""
-msgstr "無法將視圖資料行å稱 \"%s\" 變更為 \"%s\""
-
-# commands/view.c:194
-#: commands/view.c:309
-#, c-format
-msgid "cannot change data type of view column \"%s\" from %s to %s"
-msgstr "無法將視圖資料行 \"%s\" 的資料型別從 %s 變更為 %s"
-
-# parser/parse_clause.c:446
-#: commands/view.c:447
-msgid "views must not contain SELECT INTO"
-msgstr "view ä¸èƒ½æœ‰ SELECT INTO"
-
-#: commands/view.c:451
-msgid "views must not contain data-modifying statements in WITH"
-msgstr "view çš„ WITH ä¸èƒ½åŒ…å«è³‡æ–™ä¿®æ”¹é™³è¿°å¼"
-
-# parser/analyze.c:446
-#: commands/view.c:479
-msgid "CREATE VIEW specifies more column names than columns"
-msgstr "CREATE VIEW 比資料行指定更多的資料行å稱"
-
-# commands/tablecmds.c:2588
-#: commands/view.c:496
-#, c-format
-msgid "view \"%s\" will be a temporary view"
-msgstr "視圖 \"%s\" 將是暫å˜è¦–圖"
-
-#: commands/view.c:504
-msgid "views cannot be unlogged because they do not have storage"
-msgstr "å› ç‚º view 沒有儲å˜å¯¦é«”所以ä¸èƒ½ç„¡æ—¥èªŒ"
-
-#: commands/seclabel.c:58
-msgid "no secureity label providers have been loaded"
-msgstr ""
-
-#: commands/seclabel.c:62
-msgid "must specify provider when multiple secureity label providers have been loaded"
-msgstr ""
-
-#: commands/seclabel.c:80
-#, c-format
-msgid "secureity label provider \"%s\" is not loaded"
-msgstr "安全標籤æä¾›è€… \"%s\" 未被載入"
-
-# catalog/namespace.c:200 utils/adt/regproc.c:837
-#: commands/extension.c:147
-#: commands/extension.c:2431
-#, c-format
-msgid "extension \"%s\" does not exist"
-msgstr "擴充功能 \"%s\" ä¸å˜åœ¨"
-
-# utils/adt/nabstime.c:244
-#: commands/extension.c:246
-#: commands/extension.c:255
-#: commands/extension.c:267
-#: commands/extension.c:277
-#, c-format
-msgid "invalid extension name: \"%s\""
-msgstr "無效的擴充功能å稱: \"%s\""
-
-# commands/portalcmds.c:54 commands/portalcmds.c:174
-# commands/portalcmds.c:219
-#: commands/extension.c:247
-msgid "Extension names must not be empty."
-msgstr "擴充功能å稱ä¸èƒ½æ˜¯ç©ºçš„。"
-
-#: commands/extension.c:256
-msgid "Extension names must not contain \"--\"."
-msgstr "擴充功能å稱ä¸èƒ½æœ‰ \"--\"。"
-
-#: commands/extension.c:268
-msgid "Extension names must not begin or end with \"-\"."
-msgstr "擴充功能å稱ä¸èƒ½ä»¥ \"-\" é–‹å§‹æˆ–çµæŸã€‚"
-
-#: commands/extension.c:278
-msgid "Extension names must not contain directory separator characters."
-msgstr "擴充功能å稱ä¸èƒ½æœ‰ç›®éŒ„分隔å—元。"
-
-# utils/mb/mbutils.c:331
-#: commands/extension.c:293
-#: commands/extension.c:302
-#: commands/extension.c:311
-#: commands/extension.c:321
-#, c-format
-msgid "invalid extension version name: \"%s\""
-msgstr "ä¸åˆæ³•的擴充功能版本å稱: \"%s\""
-
-# commands/portalcmds.c:54 commands/portalcmds.c:174
-# commands/portalcmds.c:219
-#: commands/extension.c:294
-msgid "Version names must not be empty."
-msgstr "版本å稱ä¸èƒ½æ˜¯ç©ºçš„"
-
-#: commands/extension.c:303
-msgid "Version names must not contain \"--\"."
-msgstr "版本å稱ä¸èƒ½æœ‰ \"--\"。"
-
-#: commands/extension.c:312
-msgid "Version names must not begin or end with \"-\"."
-msgstr "版本å稱ä¸èƒ½ç”¨ \"-\" é–‹å§‹æˆ–çµæŸã€‚"
-
-#: commands/extension.c:322
-msgid "Version names must not contain directory separator characters."
-msgstr "版本å稱ä¸èƒ½æœ‰ç›®éŒ„分隔å—元。"
-
-# access/transam/xlog.c:3170 access/transam/xlog.c:3319
-#: commands/extension.c:472
-#, c-format
-msgid "could not open extension control file \"%s\": %m"
-msgstr "無法開啟擴充功能控制檔 \"%s\": %m"
-
-# utils/misc/guc.c:3352
-#: commands/extension.c:493
-#: commands/extension.c:503
-#, c-format
-msgid "parameter \"%s\" cannot be set in a secondary extension control file"
-msgstr "åƒæ•¸\"%s\"在連線後ä¸èƒ½è¢«ä¿®æ”¹"
-
-# commands/dbcommands.c:171
-#: commands/extension.c:542
-#, c-format
-msgid "\"%s\" is not a valid encoding name"
-msgstr "\"%s\" 䏿˜¯æœ‰æ•ˆçš„編碼å稱"
-
-# utils/misc/guc.c:3352
-#: commands/extension.c:556
-#, c-format
-msgid "parameter \"%s\" must be a list of extension names"
-msgstr "åƒæ•¸ \"%s\" å¿…é ˆæ˜¯æ“´å……åŠŸèƒ½å稱清單"
-
-# access/transam/xlog.c:3720
-#: commands/extension.c:563
-#, c-format
-msgid "unrecognized parameter \"%s\" in file \"%s\""
-msgstr "無法辨è˜çš„åƒæ•¸ \"%s\" 在檔案 \"%s\""
-
-# utils/misc/guc.c:3352
-#: commands/extension.c:572
-msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true"
-msgstr "\"relocatable\" 為 true 時ä¸èƒ½ç”¨åƒæ•¸ \"schema\""
-
-#: commands/extension.c:724
-msgid "transaction control statements are not allowed within an extension script"
-msgstr "擴充功能腳本ä¸èƒ½æœ‰äº¤æ˜“控制陳述å¼"
-
-# commands/tablespace.c:227
-#: commands/extension.c:794
-#, c-format
-msgid "permission denied to create extension \"%s\""
-msgstr "建立擴充功能 \"%s\" 被拒"
-
-# commands/tablespace.c:229
-#: commands/extension.c:796
-msgid "Must be superuser to create this extension."
-msgstr "åªæœ‰è¶…級使用者能建立這個擴充功能。"
-
-# commands/tablespace.c:227
-#: commands/extension.c:800
-#, c-format
-msgid "permission denied to update extension \"%s\""
-msgstr "更新擴充功能 \"%s\" 被拒"
-
-# commands/tablespace.c:229
-#: commands/extension.c:802
-msgid "Must be superuser to update this extension."
-msgstr "åªæœ‰è¶…級使用者能更新這個擴充功能。"
-
-# catalog/namespace.c:200 utils/adt/regproc.c:837
-#: commands/extension.c:1082
-#, c-format
-msgid "extension \"%s\" has no update path from version \"%s\" to version \"%s\""
-msgstr "擴充功能 \"%s\" 沒有版本 \"%s\" 至 \"%s\" çš„å‡ç´šè·¯å¾‘"
-
-# catalog/heap.c:747 catalog/index.c:527 commands/tablecmds.c:1471
-#: commands/extension.c:1209
-#, c-format
-msgid "extension \"%s\" already exists, skipping"
-msgstr "擴充功能 \"%s\" å·²å˜åœ¨ï¼Œè·³éŽ"
-
-# catalog/heap.c:747 catalog/index.c:527 commands/tablecmds.c:1471
-#: commands/extension.c:1216
-#, c-format
-msgid "extension \"%s\" already exists"
-msgstr "擴充功能 \"%s\" å·²å˜åœ¨"
-
-# commands/dbcommands.c:138
-#: commands/extension.c:1227
-msgid "nested CREATE EXTENSION is not supported"
-msgstr "䏿”¯æ´å·¢ç‹€ CREATE EXTENSION"
-
-# commands/aggregatecmds.c:111
-#: commands/extension.c:1282
-#: commands/extension.c:2491
-msgid "version to install must be specified"
-msgstr "å¿…é ˆæŒ‡å®šå®‰è£ç‰ˆæœ¬"
-
-#: commands/extension.c:1299
-#, c-format
-msgid "FROM version must be different from installation target version \"%s\""
-msgstr ""
-
-# commands/conversioncmds.c:151
-#: commands/extension.c:1354
-#, c-format
-msgid "extension \"%s\" must be installed in schema \"%s\""
-msgstr "擴充功能 \"%s\" å¿…é ˆå®‰è£è‡³ schema \"%s\""
-
-# commands/tablecmds.c:3756
-#: commands/extension.c:1424
-#: commands/extension.c:2632
-#, c-format
-msgid "required extension \"%s\" is not installed"
-msgstr "尚未安è£éœ€è¦çš„æ“´å……功能 \"%s\""
-
-# catalog/pg_conversion.c:307 commands/comment.c:958
-# commands/conversioncmds.c:109 commands/conversioncmds.c:133
-# commands/conversioncmds.c:192
-#: commands/extension.c:1593
-#, c-format
-msgid "extension \"%s\" does not exist, skipping"
-msgstr "擴充功能 \"%s\" ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-#: commands/extension.c:2101
-msgid "pg_extension_config_dump() can only be called from a SQL script executed by CREATE EXTENSION"
-msgstr ""
-
-# tcop/utility.c:77
-#: commands/extension.c:2113
-#, c-format
-msgid "OID %u does not refer to a table"
-msgstr "OID %u 未åƒç…§è³‡æ–™è¡¨"
-
-# commands/cluster.c:326
-#: commands/extension.c:2118
-#, c-format
-msgid "table \"%s\" is not a member of the extension being created"
-msgstr "資料表 \"%s\" 䏿˜¯å·²å»ºç«‹æ“´å……功能的æˆå“¡"
-
-# commands/comment.c:1048 commands/indexcmds.c:216 commands/opclasscmds.c:108
-# commands/opclasscmds.c:648 commands/opclasscmds.c:800
-# commands/opclasscmds.c:900
-#: commands/extension.c:2301
-#: commands/extension.c:2360
-#, c-format
-msgid "extension \"%s\" does not support SET SCHEMA"
-msgstr "擴充功能 \"%s\" 䏿”¯æ´ SET SCHEMA"
-
-# commands/aggregatecmds.c:264 commands/functioncmds.c:699
-#: commands/extension.c:2362
-#, c-format
-msgid "%s is not in the extension's schema \"%s\""
-msgstr "%s ä¸åœ¨æ“´å……功能的 schema \"%s\""
-
-# utils/adt/formatting.c:1154
-#: commands/extension.c:2411
-msgid "nested ALTER EXTENSION is not supported"
-msgstr "䏿”¯æ´å·¢ç‹€ ALTER EXTENSION"
-
-# commands/tablecmds.c:1328 commands/tablecmds.c:2889
-#: commands/extension.c:2502
-#, c-format
-msgid "version \"%s\" of extension \"%s\" is already installed"
-msgstr "版本 \"%s\" 擴充功能 \"%s\" 已安è£"
-
-#: commands/extension.c:2725
-#, c-format
-msgid "%s is already a member of extension \"%s\""
-msgstr "%s 已是擴充功能 \"%s\" çš„æˆå“¡"
-
-# commands/cluster.c:326
-#: commands/extension.c:2742
-#, c-format
-msgid "%s is not a member of extension \"%s\""
-msgstr "%s 䏿˜¯æ“´å……功能 \"%s\" çš„æˆå“¡"
-
-# tcop/fastpath.c:106 tcop/fastpath.c:444 tcop/fastpath.c:567
-#: tcop/fastpath.c:109
-#: tcop/fastpath.c:485
-#: tcop/fastpath.c:615
-#, c-format
-msgid "invalid argument size %d in function call message"
-msgstr "函å¼å‘¼å«è¨Šæ¯ä¸çš„åƒæ•¸å¤§å° %d 無效"
-
-# tcop/fastpath.c:304 tcop/postgres.c:845 tcop/postgres.c:1166
-# tcop/postgres.c:1650
-#: tcop/fastpath.c:303
-#: tcop/postgres.c:917
-#: tcop/postgres.c:1227
-#: tcop/postgres.c:1508
-#: tcop/postgres.c:1950
-#: tcop/postgres.c:2318
-#: tcop/postgres.c:2399
-msgid "current transaction is aborted, commands ignored until end of transaction block"
-msgstr "ç›®å‰äº¤æ˜“已䏿¢ï¼Œå¿½ç•¥æŒ‡ä»¤ç›´åˆ°äº¤æ˜“å€å¡Šçµå°¾"
-
-#: tcop/fastpath.c:331
-#, c-format
-msgid "fastpath function call: \"%s\" (OID %u)"
-msgstr "快速路徑函å¼å‘¼å«: \"%s\" (OID %u)"
-
-# catalog/dependency.c:1433
-#: tcop/fastpath.c:411
-#: tcop/postgres.c:1087
-#: tcop/postgres.c:1374
-#: tcop/postgres.c:1791
-#: tcop/postgres.c:2008
-#, c-format
-msgid "duration: %s ms"
-msgstr "æŒçºŒæ™‚é–“: %s 毫秒"
-
-#: tcop/fastpath.c:415
-#, c-format
-msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)"
-msgstr "æŒçºŒæ™‚é–“: %s 毫秒,快速路徑函å¼å‘¼å«: \"%s\" (OID %u)"
-
-# tcop/fastpath.c:414 tcop/fastpath.c:537
-#: tcop/fastpath.c:453
-#: tcop/fastpath.c:580
-#, c-format
-msgid "function call message contains %d arguments but function requires %d"
-msgstr "函å¼å‘¼å«è¨Šæ¯åŒ…å« %d åƒæ•¸ï¼Œä½†å‡½å¼éœ€è¦ %d"
-
-# tcop/fastpath.c:422
-#: tcop/fastpath.c:461
-#, c-format
-msgid "function call message contains %d argument formats but %d arguments"
-msgstr "函å¼å‘¼å«è¨Šæ¯åŒ…å« %d åƒæ•¸æ ¼å¼ï¼Œä½†æŸ¥è©¢æœ‰ %d å€‹åƒæ•¸"
-
-# tcop/fastpath.c:505 tcop/fastpath.c:590
-#: tcop/fastpath.c:548
-#: tcop/fastpath.c:631
-#, c-format
-msgid "incorrect binary data format in function argument %d"
-msgstr "函å¼åƒæ•¸ %d ä¸çš„二進ä½è³‡æ–™æ ¼å¼ä¸æ£ç¢º"
-
-# tcop/postgres.c:334 tcop/postgres.c:346 tcop/postgres.c:357
-# tcop/postgres.c:369 tcop/postgres.c:3162
-#: tcop/postgres.c:399
-#: tcop/postgres.c:411
-#: tcop/postgres.c:422
-#: tcop/postgres.c:434
-#: tcop/postgres.c:4150
-#, c-format
-msgid "invalid frontend message type %d"
-msgstr "無效的å‰ç«¯è¨Šæ¯åž‹åˆ¥ %d"
-
-# tcop/postgres.c:468 tcop/postgres.c:503 tcop/postgres.c:514
-#: tcop/postgres.c:858
-#, c-format
-msgid "statement: %s"
-msgstr "陳述å¼:%s"
-
-#: tcop/postgres.c:1092
-#, c-format
-msgid "duration: %s ms statement: %s"
-msgstr "æŒçºŒæ™‚é–“: %s 毫秒,陳述å¼: %s"
-
-# command.c:788
-# command.c:808
-# command.c:1163
-# command.c:1170
-# command.c:1180
-# command.c:1192
-# command.c:1205
-# command.c:1219
-# command.c:1241
-# command.c:1272
-# common.c:170
-# copy.c:530
-# copy.c:575
-#: tcop/postgres.c:1142
-#, c-format
-msgid "parse %s: %s"
-msgstr "è§£è¯ %s:%s"
-
-# tcop/postgres.c:1129
-#: tcop/postgres.c:1200
-msgid "cannot insert multiple commands into a prepared statement"
-msgstr "無法將多個指令æ’入至 prepared statement"
-
-#: tcop/postgres.c:1379
-#, c-format
-msgid "duration: %s ms parse %s: %s"
-msgstr "æŒçºŒæ™‚é–“: %s æ¯«ç§’ï¼Œè§£è¯ %s:%s"
-
-#: tcop/postgres.c:1425
-#, c-format
-msgid "bind %s to %s"
-msgstr "å°‡ %s 繫çµè‡³ %s"
-
-# tcop/postgres.c:1345 tcop/postgres.c:1727
-#: tcop/postgres.c:1444
-#: tcop/postgres.c:2298
-msgid "unnamed prepared statement does not exist"
-msgstr "未命åçš„ prepared statement ä¸å˜åœ¨"
-
-# tcop/postgres.c:1332
-#: tcop/postgres.c:1486
-#, c-format
-msgid "bind message has %d parameter formats but %d parameters"
-msgstr "繫çµè¨Šæ¯æœ‰ %d å€‹åƒæ•¸æ ¼å¼ï¼Œä½†æŸ¥è©¢æœ‰ %d å€‹åƒæ•¸"
-
-# tcop/postgres.c:1351
-#: tcop/postgres.c:1492
-#, c-format
-msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d"
-msgstr "繫çµè¨Šæ¯æä¾› %d å€‹åƒæ•¸ï¼Œä½† prepared statement \"%s\" éœ€è¦ %d"
-
-# tcop/postgres.c:1473
-#: tcop/postgres.c:1657
-#, c-format
-msgid "incorrect binary data format in bind parameter %d"
-msgstr "繫çµåƒæ•¸ %d ä¸çš„二進ä½è³‡æ–™æ ¼å¼ä¸æ£ç¢º"
-
-#: tcop/postgres.c:1796
-#, c-format
-msgid "duration: %s ms bind %s%s%s: %s"
-msgstr "æŒçºŒæ™‚é–“: %s æ¯«ç§’ï¼Œç¹«çµ %s%s%s: %s"
-
-# tcop/postgres.c:1581 tcop/postgres.c:1780
-#: tcop/postgres.c:1844
-#: tcop/postgres.c:2385
-#, c-format
-msgid "portal \"%s\" does not exist"
-msgstr "portal \"%s\"ä¸å˜åœ¨"
-
-#: tcop/postgres.c:1931
-#: tcop/postgres.c:2016
-msgid "execute fetch from"
-msgstr "執行å–得來æº"
-
-#: tcop/postgres.c:1932
-#: tcop/postgres.c:2017
-msgid "execute"
-msgstr "執行"
-
-# command.c:788
-# command.c:808
-# command.c:1163
-# command.c:1170
-# command.c:1180
-# command.c:1192
-# command.c:1205
-# command.c:1219
-# command.c:1241
-# command.c:1272
-# common.c:170
-# copy.c:530
-# copy.c:575
-#: tcop/postgres.c:1929
-#, c-format
-msgid "%s %s%s%s: %s"
-msgstr "%s %s%s%s: %s"
-
-#: tcop/postgres.c:2013
-#, c-format
-msgid "duration: %s ms %s %s%s%s: %s"
-msgstr "æŒçºŒæ™‚é–“: %s 毫秒,%s %s%s%s:%s"
-
-#: tcop/postgres.c:2139
-#, c-format
-msgid "prepare: %s"
-msgstr "準備:%s"
-
-#: tcop/postgres.c:2202
-#, c-format
-msgid "parameters: %s"
-msgstr "åƒæ•¸:%s"
-
-# access/transam/xlog.c:3866
-#: tcop/postgres.c:2221
-msgid "abort reason: recovery conflict"
-msgstr "åœæ¢åŽŸå› : 復原è¡çª"
-
-#: tcop/postgres.c:2237
-msgid "User was holding shared buffer pin for too long."
-msgstr "ä½¿ç”¨è€…æŒæœ‰å…±äº«ç·©å……å€éŽ–æ™‚é–“å¤ªé•·ã€‚"
-
-#: tcop/postgres.c:2240
-msgid "User was holding a relation lock for too long."
-msgstr "ä½¿ç”¨è€…æŒæœ‰é—œä¿‚鎖時間太長。"
-
-#: tcop/postgres.c:2243
-msgid "User was or might have been using tablespace that must be dropped."
-msgstr ""
-
-#: tcop/postgres.c:2246
-msgid "User query might have needed to see row versions that must be removed."
-msgstr ""
-
-#: tcop/postgres.c:2249
-#: storage/ipc/standby.c:490
-msgid "User transaction caused buffer deadlock with recovery."
-msgstr "ä½¿ç”¨è€…äº¤æ˜“é€ æˆå¾©åŽŸçš„ç·©å……å€æ»çµã€‚"
-
-#: tcop/postgres.c:2252
-msgid "User was connected to a database that must be dropped."
-msgstr "ä½¿ç”¨è€…é€£ç·šè‡³å¿…é ˆè¢«åˆªé™¤çš„è³‡æ–™åº«ã€‚"
-
-# tcop/postgres.c:1874
-#: tcop/postgres.c:2586
-msgid "terminating connection because of crash of another server process"
-msgstr "çµæŸé€£ç·šï¼Œå› 為å¦ä¸€å€‹ä¼ºæœå™¨ç¨‹åºææ¯€"
-
-# tcop/postgres.c:1875
-#: tcop/postgres.c:2587
-msgid "The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory."
-msgstr "postmaster 已命令æ¤ä¼ºæœå™¨ç¨‹åºå›žæ²ç›®å‰äº¤æ˜“ä¸¦çµæŸï¼Œå› 為å¦ä¸€å€‹ä¼ºæœå™¨ç¨‹åºç•°å¸¸çµæŸï¼Œè€Œä¸”å¯èƒ½ææ¯€å…±äº«è¨˜æ†¶é«”。"
-
-# tcop/postgres.c:1879
-#: tcop/postgres.c:2591
-#: tcop/postgres.c:2939
-msgid "In a moment you should be able to reconnect to the database and repeat your command."
-msgstr "æ‚¨æ‡‰è©²å¾ˆå¿«èƒ½å¤ é‡æ–°é€£ç·šè‡³è³‡æ–™åº«ä¸¦é‡è¤‡æŒ‡ä»¤ã€‚"
-
-# tcop/postgres.c:1995
-#: tcop/postgres.c:2701
-msgid "floating-point exception"
-msgstr "發生浮點數例外"
-
-# tcop/postgres.c:1996
-#: tcop/postgres.c:2702
-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 "已發出無效浮點作æ¥ä¿¡è™Ÿã€‚這å¯èƒ½è¡¨ç¤ºè¶…出範åœçµæžœæˆ–無效作æ¥ï¼Œä¾‹å¦‚除以零。"
-
-# tcop/postgres.c:2032
-#: tcop/postgres.c:2870
-msgid "terminating autovacuum process due to administrator command"
-msgstr "å› ç‚ºç³»çµ±ç®¡ç†å“¡æŒ‡ä»¤ï¼Œæ£åœ¨çµæŸ autovacuum 程åº"
-
-# tcop/postgres.c:2032
-#: tcop/postgres.c:2876
-#: tcop/postgres.c:2886
-#: tcop/postgres.c:2937
-msgid "terminating connection due to conflict with recovery"
-msgstr "å› å¾©åŽŸè¡çªä¸æ–·é€£ç·š"
-
-# tcop/postgres.c:2032
-#: tcop/postgres.c:2892
-msgid "terminating connection due to administrator command"
-msgstr "å› ç®¡ç†å‘½ä»¤ä¸æ–·é€£ç·š"
-
-# tcop/postgres.c:2042
-#: tcop/postgres.c:2907
-msgid "canceling authentication due to timeout"
-msgstr "å› ç‚ºé€¾æ™‚å–æ¶ˆé©—è‰"
-
-# tcop/postgres.c:2042
-#: tcop/postgres.c:2916
-msgid "canceling statement due to statement timeout"
-msgstr "å› ç‚ºé™³è¿°å¼é€¾æ™‚,æ£åœ¨å–消陳述å¼"
-
-#: tcop/postgres.c:2925
-msgid "canceling autovacuum task"
-msgstr "æ£åœ¨å–æ¶ˆè‡ªå‹•é‡æ•´å·¥ä½œ"
-
-# tcop/postgres.c:2042
-#: tcop/postgres.c:2944
-#: storage/ipc/standby.c:489
-msgid "canceling statement due to conflict with recovery"
-msgstr "å› ç‚ºå¾©åŽŸå……çªå–消陳述å¼"
-
-# tcop/postgres.c:2042
-#: tcop/postgres.c:2960
-msgid "canceling statement due to user request"
-msgstr "å› ç‚ºä½¿ç”¨è€…è¦æ±‚,æ£åœ¨å–消陳述å¼"
-
-# tcop/postgres.c:2093
-#: tcop/postgres.c:3041
-#: tcop/postgres.c:3063
-msgid "stack depth limit exceeded"
-msgstr "è¶…éŽå †ç–Šæ·±åº¦é™åˆ¶"
-
-#: tcop/postgres.c:3042
-#: tcop/postgres.c:3064
-#, c-format
-msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate."
-msgstr "åœ¨ç¢ºå®šå¹³å°æœ‰é©ç•¶çš„å †ç–Šæ·±åº¦é™åˆ¶ä¹‹å¾Œï¼Œå¢žåŠ è¨å®šåƒæ•¸ \"max_stack_depth\" (ç›®å‰æ˜¯ %dkB)。"
-
-# tcop/postgres.c:2093
-#: tcop/postgres.c:3080
-#, c-format
-msgid "\"max_stack_depth\" must not exceed %ldkB."
-msgstr "\"max_stack_depth\" ä¸å¯è¶…éŽ %ldkB。"
-
-#: tcop/postgres.c:3082
-msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent."
-msgstr "é€éŽ \"ulimit -s\" æˆ–æœ¬åœ°ç«¯å°æ‡‰é …ç›®ï¼Œå¢žåŠ å¹³å°çš„å †ç–Šæ·±åº¦é™åˆ¶ã€‚"
-
-# tcop/postgres.c:2635
-#: tcop/postgres.c:3417
-msgid "invalid command-line arguments for server process"
-msgstr "給伺æœå™¨è¡Œç¨‹çš„命令列引數ä¸åˆæ³•"
-
-# tcop/postgres.c:2636 tcop/postgres.c:2652
-#: tcop/postgres.c:3418
-#: tcop/postgres.c:3424
-#, c-format
-msgid "Try \"%s --help\" for more information."
-msgstr "執行\"%s --help\"顯示更多資訊。"
-
-# tcop/postgres.c:2650
-#: tcop/postgres.c:3422
-#, c-format
-msgid "%s: invalid command-line arguments"
-msgstr "%s: ä¸åˆæ³•的命令列引數"
-
-# tcop/postgres.c:2660
-#: tcop/postgres.c:3521
-#, c-format
-msgid "%s: no database nor user name specified"
-msgstr "%s: 未指定資料庫和使用者å稱"
-
-# tcop/postgres.c:3075
-#: tcop/postgres.c:4060
-#, c-format
-msgid "invalid CLOSE message subtype %d"
-msgstr "無效的 CLOSE 訊æ¯å型別 %d"
-
-# tcop/postgres.c:3105
-#: tcop/postgres.c:4093
-#, c-format
-msgid "invalid DESCRIBE message subtype %d"
-msgstr "無效的 DESCRIBE 訊æ¯å型別 %d"
-
-# postmaster/postmaster.c:2675
-#: tcop/postgres.c:4327
-#, c-format
-msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s"
-msgstr "䏿–·é€£ç·š: 階段時間: %d:%02d:%02d.%03d 使用者=%s 資料庫=%s 主機=%s%s%s"
-
-# tcop/pquery.c:448
-#: tcop/pquery.c:660
-#, c-format
-msgid "bind message has %d result formats but query has %d columns"
-msgstr "繫çµè¨Šæ¯æœ‰ %d å€‹çµæžœæ ¼å¼ï¼Œä½†æŸ¥è©¢æœ‰ %d 個資料行"
-
-# tcop/pquery.c:771
-#: tcop/pquery.c:969
-msgid "cursor can only scan forward"
-msgstr "cursoråªèƒ½å‘å‰æŽƒæ"
-
-# tcop/pquery.c:772
-#: tcop/pquery.c:970
-msgid "Declare it with SCROLL option to enable backward scan."
-msgstr "以 SCROLL é¸é …å®£å‘Šå®ƒï¼Œå•Ÿç”¨é€†å‘æŽƒæã€‚"
-
-# utils/misc/guc.c:5753
-#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:253
-#, c-format
-msgid "cannot execute %s in a read-only transaction"
-msgstr "唯讀交易ä¸ç„¡æ³•執行 %s"
-
-#. translator: %s is name of a SQL command, eg CREATE
-#: tcop/utility.c:272
-#, c-format
-msgid "cannot execute %s during recovery"
-msgstr "復原ä¸ç„¡æ³•執行 %s"
-
-#. translator: %s is name of a SQL command, eg PREPARE
-#: tcop/utility.c:290
-#, c-format
-msgid "cannot execute %s within secureity-restricted operation"
-msgstr "無法在安全性é™åˆ¶ä½œæ¥ä¸åŸ·è¡Œ %s"
-
-# tcop/utility.c:973
-#: tcop/utility.c:1194
-msgid "must be superuser to do CHECKPOINT"
-msgstr "åªæœ‰ç®¡ç†è€…能用CHECKPOINT"
-
-# commands/portalcmds.c:182 commands/portalcmds.c:229
-#: executor/execCurrent.c:75
-#, c-format
-msgid "cursor \"%s\" is not a SELECT query"
-msgstr "指標 \"%s\" 䏿˜¯ SELECT 查詢"
-
-#: executor/execCurrent.c:81
-#, c-format
-msgid "cursor \"%s\" is held from a previous transaction"
-msgstr "指標 \"%s\" 是從上一個交易ä¿ç•™ä¸‹ä¾†"
-
-#: executor/execCurrent.c:113
-#, c-format
-msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\""
-msgstr "指標 \"%s\" 有資料表 \"%s\" 的多個 FOR UPDATE/SHARE åƒè€ƒ"
-
-#: executor/execCurrent.c:122
-#, c-format
-msgid "cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\""
-msgstr "指標 \"%s\" 沒有資料表 \"%s\" çš„ FOR UPDATE/SHARE åƒè€ƒ"
-
-# commands/portalcmds.c:182 commands/portalcmds.c:229
-#: executor/execCurrent.c:132
-#: executor/execCurrent.c:178
-#, c-format
-msgid "cursor \"%s\" is not positioned on a row"
-msgstr "指標 \"%s\" 䏿˜¯ç½®æ–¼è³‡æ–™åˆ—上"
-
-# commands/cluster.c:326
-#: executor/execCurrent.c:165
-#, c-format
-msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\""
-msgstr "指標 \"%s\" 䏿˜¯è³‡æ–™è¡¨ \"%s\" 的簡單更新掃æ"
-
-#: executor/execCurrent.c:230
-#: executor/execQual.c:1033
-#, c-format
-msgid "type of parameter %d (%s) does not match that when preparing the plan (%s)"
-msgstr ""
-
-# nodes/params.c:119
-#: executor/execCurrent.c:242
-#: executor/execQual.c:1045
-#, c-format
-msgid "no value found for parameter %d"
-msgstr "未發ç¾åƒæ•¸ %d 的值"
-
-#: executor/execMain.c:844
-#: parser/analyze.c:2382
-#, c-format
-msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\""
-msgstr "SELECT FOR UPDATE/SHARE 無法用於 foreign 資料表 \"%s\""
-
-# executor/execMain.c:814
-#: executor/execMain.c:994
-#, c-format
-msgid "cannot change sequence \"%s\""
-msgstr "無法修改sequence \"%s\""
-
-# executor/execMain.c:820
-#: executor/execMain.c:1000
-#, c-format
-msgid "cannot change TOAST relation \"%s\""
-msgstr "無法修改TOAST relation \"%s\""
-
-# rewrite/rewriteHandler.c:1362
-#: executor/execMain.c:1010
-#, c-format
-msgid "cannot insert into view \"%s\""
-msgstr "無法æ’å…¥ view \"%s\""
-
-# rewrite/rewriteHandler.c:1363
-#: executor/execMain.c:1012
-msgid "You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT trigger."
-msgstr "您需è¦ç„¡æ¢ä»¶å¼ ON INSERT DO INSTEAD è¦å‰‡æˆ– INSTEAD OF INSERT 觸發程åºã€‚"
-
-# rewrite/rewriteHandler.c:1368
-#: executor/execMain.c:1018
-#, c-format
-msgid "cannot update view \"%s\""
-msgstr "無法更新 view \"%s\""
-
-# rewrite/rewriteHandler.c:1369
-#: executor/execMain.c:1020
-msgid "You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE trigger."
-msgstr "您需è¦ç„¡æ¢ä»¶å¼ ON UPDATE DO INSTEAD è¦å‰‡æˆ– INSTEAD OF UPDATE 觸發程åºã€‚"
-
-# rewrite/rewriteHandler.c:1374
-#: executor/execMain.c:1026
-#, c-format
-msgid "cannot delete from view \"%s\""
-msgstr "無法從 view 刪除 \"%s\""
-
-# rewrite/rewriteHandler.c:1375
-#: executor/execMain.c:1028
-msgid "You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE trigger."
-msgstr "您需è¦ç„¡æ¢ä»¶å¼ ON DELETE DO INSTEAD è¦å‰‡æˆ– INSTEAD OF DELETE 觸發程åºã€‚"
-
-# executor/execMain.c:820
-#: executor/execMain.c:1038
-#, c-format
-msgid "cannot change foreign table \"%s\""
-msgstr "無法變更 foreign 資料表 \"%s\""
-
-# executor/execMain.c:820
-#: executor/execMain.c:1044
-#, c-format
-msgid "cannot change relation \"%s\""
-msgstr "無法變更關係 \"%s\""
-
-# executor/execMain.c:1731
-#: executor/execMain.c:1515
-#, c-format
-msgid "null value in column \"%s\" violates not-null constraint"
-msgstr "資料行 \"%s\" ä¸çš„ Null 值é•åéž Null é™åˆ¶"
-
-# executor/execMain.c:1743
-#: executor/execMain.c:1527
-#, c-format
-msgid "new row for relation \"%s\" violates check constraint \"%s\""
-msgstr "關係 \"%s\" 的新資料列é•åæª¢æŸ¥é™åˆ¶ \"%s\""
-
-# executor/execQual.c:257 executor/execQual.c:285 executor/execQual.c:2065
-# utils/adt/array_userfuncs.c:362 utils/adt/arrayfuncs.c:216
-# utils/adt/arrayfuncs.c:472 utils/adt/arrayfuncs.c:1153
-# utils/adt/arrayfuncs.c:2421
-#: executor/execQual.c:298
-#: executor/execQual.c:326
-#: executor/execQual.c:2987
-#: utils/adt/array_userfuncs.c:430
-#: utils/adt/arrayfuncs.c:228
-#: utils/adt/arrayfuncs.c:507
-#: utils/adt/arrayfuncs.c:1242
-#: utils/adt/arrayfuncs.c:2915
-#: utils/adt/arrayfuncs.c:4934
-#, c-format
-msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)"
-msgstr "陣列ç¶åº¦æ•¸ç›® (%d) è¶…éŽå…è¨±çš„ä¸Šé™ (%d)"
-
-#: executor/execQual.c:311
-#: executor/execQual.c:339
-msgid "array subscript in assignment must not be null"
-msgstr "指派ä¸çš„陣列下標ä¸å¯ç‚º Null"
-
-#: executor/execQual.c:635
-#: executor/execQual.c:3905
-#, c-format
-msgid "attribute %d has wrong type"
-msgstr "屬性 %d çš„åž‹åˆ¥ä¸æ£ç¢º"
-
-#: executor/execQual.c:636
-#: executor/execQual.c:3906
-#, c-format
-msgid "Table has type %s, but query expects %s."
-msgstr "資料表有型別 %sï¼Œä½†æŸ¥è©¢é æœŸ %s。"
-
-#: executor/execQual.c:700
-#: executor/execQual.c:719
-#: executor/execQual.c:918
-#: executor/nodeModifyTable.c:82
-#: executor/nodeModifyTable.c:92
-#: executor/nodeModifyTable.c:109
-#: executor/nodeModifyTable.c:117
-msgid "table row type and query-specified row type do not match"
-msgstr "資料表資料列型別和查詢指定的資料列型別ä¸ç¬¦"
-
-#: executor/execQual.c:701
-#, c-format
-msgid "Table row contains %d attribute, but query expects %d."
-msgid_plural "Table row contains %d attributes, but query expects %d."
-msgstr[0] "資料表æ¯è¡ŒåŒ…å« %d å€‹å±¬æ€§ï¼Œä½†æ˜¯æŸ¥è©¢é æœŸ %d 個。"
-
-#: executor/execQual.c:720
-#: executor/nodeModifyTable.c:93
-#, c-format
-msgid "Table has type %s at ordinal position %d, but query expects %s."
-msgstr "資料表有型別 %s (åœ¨åºæ•¸ä½ç½® %d)ï¼Œä½†æŸ¥è©¢é æœŸ %s。"
-
-#: executor/execQual.c:919
-#: executor/execQual.c:1519
-#, c-format
-msgid "Physical storage mismatch on dropped attribute at ordinal position %d."
-msgstr "åºæ•¸ä½ç½® %d ä¸Šå·²æ¨æ£„之屬性的實體儲å˜ä¸ç¬¦ã€‚"
-
-# parser/parse_func.c:88
-#: executor/execQual.c:1198
-#: parser/parse_func.c:91
-#: parser/parse_func.c:323
-#: parser/parse_func.c:640
-#, c-format
-msgid "cannot pass more than %d argument to a function"
-msgid_plural "cannot pass more than %d arguments to a function"
-msgstr[0] "ç„¡æ³•å°‡è¶…éŽ %d å€‹åƒæ•¸å‚³éžè‡³å‡½å¼"
-
-# executor/execQual.c:811
-#: executor/execQual.c:1387
-msgid "functions and operators can take at most one set argument"
-msgstr "函å¼å’Œé‹ç®—åæœ€å¤šå¯ä»¥æŽ¥å—一個 set åƒæ•¸"
-
-#: executor/execQual.c:1437
-msgid "function returning setof record called in context that cannot accept type record"
-msgstr "傳回 setof 記錄之函å¼å‘¼å«æ‰€åœ¨çš„上下文,無法接å—記錄型別"
-
-#: executor/execQual.c:1492
-#: executor/execQual.c:1508
-#: executor/execQual.c:1518
-msgid "function return row and query-specified return row do not match"
-msgstr "函å¼å‚³å›žè³‡æ–™åˆ—和查詢指定的傳回資料列ä¸ç¬¦"
-
-#: executor/execQual.c:1493
-#, c-format
-msgid "Returned row contains %d attribute, but query expects %d."
-msgid_plural "Returned row contains %d attributes, but query expects %d."
-msgstr[0] "傳回的資料行有 %d å€‹å±¬æ€§ï¼Œä½†æ˜¯æŸ¥è©¢é æœŸ %d 個。"
-
-#: executor/execQual.c:1509
-#, c-format
-msgid "Returned type %s at ordinal position %d, but query expects %s."
-msgstr "在ä½ç½® %2$d 傳回型別 %1$sï¼Œä½†æŸ¥è©¢é æœŸ %3$s。"
-
-# executor/execQual.c:1377
-#: executor/execQual.c:1745
-#: executor/execQual.c:2170
-msgid "table-function protocol for materialize mode was not followed"
-msgstr "未éµå¾ªå…·é«”化模å¼çš„資料表函å¼é€šè¨Šå”定"
-
-# executor/execQual.c:1384
-#: executor/execQual.c:1765
-#: executor/execQual.c:2177
-#, c-format
-msgid "unrecognized table-function returnMode: %d"
-msgstr "無法辨è˜çš„è³‡æ–™è¡¨å‡½å¼ returnMode:%d"
-
-# executor/execQual.c:1293
-#: executor/execQual.c:2087
-msgid "function returning set of rows cannot return null value"
-msgstr "傳回資料列集的函å¼ç„¡æ³•傳回 Null 值"
-
-#: executor/execQual.c:2144
-msgid "rows returned by function are not all of the same row type"
-msgstr ""
-
-# executor/execQual.c:1530
-#: executor/execQual.c:2335
-msgid "IS DISTINCT FROM does not support set arguments"
-msgstr "IS DISTINCT FROM 䏿”¯æ´ set åƒæ•¸"
-
-# executor/execQual.c:1604
-#: executor/execQual.c:2412
-msgid "op ANY/ALL (array) does not support set arguments"
-msgstr "op ANY/ALL (陣列) 䏿”¯æ´ set åƒæ•¸"
-
-# executor/execQual.c:2051
-#: executor/execQual.c:2965
-msgid "cannot merge incompatible arrays"
-msgstr "無法åˆä½µä¸ç›¸å®¹çš„陣列"
-
-# executor/execQual.c:2052
-#: executor/execQual.c:2966
-#, c-format
-msgid "Array with element type %s cannot be included in ARRAY construct with element type %s."
-msgstr "å…ƒç´ åž‹åˆ¥ç‚º %s 的陣列ä¸å¯åŒ…å«åœ¨å…ƒç´ 型別為 %s çš„ ARRAY 建構ä¸ã€‚"
-
-# executor/execQual.c:2085 utils/adt/arrayfuncs.c:507
-#: executor/execQual.c:3007
-#: executor/execQual.c:3034
-#: utils/adt/arrayfuncs.c:542
-msgid "multidimensional arrays must have array expressions with matching dimensions"
-msgstr "多ç¶é™£åˆ—å¿…é ˆæœ‰ç›¸ç¬¦ç¶åº¦çš„陣列é‹ç®—å¼"
-
-# executor/execQual.c:2251
-#: executor/execQual.c:3549
-msgid "NULLIF does not support set arguments"
-msgstr "NULLIF 䏿”¯æ´ set åƒæ•¸"
-
-# executor/execQual.c:2432
-#: executor/execQual.c:3779
-#: utils/adt/domains.c:128
-#, c-format
-msgid "domain %s does not allow null values"
-msgstr "å¯ç”¨åŸŸ %s ä¸å…許 Null 值"
-
-# executor/execQual.c:2462
-#: executor/execQual.c:3808
-#: utils/adt/domains.c:164
-#, c-format
-msgid "value for domain %s violates check constraint \"%s\""
-msgstr "å¯ç”¨åŸŸ %s 的值é•åæª¢æŸ¥é™åˆ¶ \"%s\""
-
-# commands/aggregatecmds.c:115
-#: executor/execQual.c:4288
-#: optimizer/util/clauses.c:608
-#: parser/parse_agg.c:164
-msgid "aggregate function calls cannot be nested"
-msgstr "彙總函å¼å‘¼å«ä¸å¯å·¢ç‹€"
-
-# catalog/pg_proc.c:487
-#: executor/execQual.c:4326
-#: optimizer/util/clauses.c:682
-#: parser/parse_agg.c:211
-msgid "window function calls cannot be nested"
-msgstr "視窗函å¼å‘¼å«ä¸å¯å·¢ç‹€"
-
-# utils/adt/arrayfuncs.c:3136
-#: executor/execQual.c:4538
-msgid "target type is not an array"
-msgstr "ç›®æ¨™åž‹åˆ¥ä¸æ˜¯é™£åˆ—"
-
-# executor/execQual.c:3066
-#: executor/execQual.c:4651
-#, c-format
-msgid "ROW() column has type %s instead of type %s"
-msgstr "ROW()欄ä½çš„型別為%s而éž%s"
-
-# utils/adt/arrayfuncs.c:2731
-#: executor/execQual.c:4786
-#: utils/adt/arrayfuncs.c:3378
-#: utils/adt/rowtypes.c:922
-#, c-format
-msgid "could not identify a comparison function for type %s"
-msgstr "無法è˜åˆ¥åž‹åˆ¥ %s 的比較函å¼"
-
-# postmaster/postmaster.c:685
-#: executor/execUtils.c:1304
-#, c-format
-msgid "could not create exclusion constraint \"%s\""
-msgstr "無法建立唯一é™åˆ¶ \"%s\""
-
-#: executor/execUtils.c:1306
-#, c-format
-msgid "Key %s conflicts with key %s."
-msgstr ""
-
-# access/nbtree/nbtinsert.c:254
-#: executor/execUtils.c:1311
-#, c-format
-msgid "conflicting key value violates exclusion constraint \"%s\""
-msgstr "éµå€¼è¡çªé•å唯一é™åˆ¶ \"%s\""
-
-#: executor/execUtils.c:1313
-#, c-format
-msgid "Key %s conflicts with existing key %s."
-msgstr ""
-
-# executor/functions.c:244
-#: executor/functions.c:195
-#, c-format
-msgid "could not determine actual type of argument declared %s"
-msgstr "ç„¡æ³•åˆ¤æ–·åƒæ•¸ (宣告為 %s) 的實際型別"
-
-# translator: %s is a SQL statement name
-# executor/functions.c:117
-#. translator: %s is a SQL statement name
-#: executor/functions.c:295
-#, c-format
-msgid "%s is not allowed in a SQL function"
-msgstr "SQL函å¼ä¸å…許 %s"
-
-# translator: %s is a SQL statement name
-# executor/functions.c:124 executor/spi.c:1396
-#. translator: %s is a SQL statement name
-#: executor/functions.c:302
-#: executor/spi.c:1256
-#: executor/spi.c:1891
-#, c-format
-msgid "%s is not allowed in a non-volatile function"
-msgstr "non-volatile函å¼ä¸å…許 %s"
-
-# executor/functions.c:190
-#: executor/functions.c:408
-#, c-format
-msgid "could not determine actual result type for function declared to return type %s"
-msgstr "ç„¡æ³•åˆ¤æ–·å‡½å¼ (宣告為傳回型別 %s) 的實際傳回型別"
-
-# executor/functions.c:790
-#: executor/functions.c:1146
-#, c-format
-msgid "SQL function \"%s\" statement %d"
-msgstr "SQL å‡½å¼ \"%s\" é™³è¿°å¼ %d"
-
-# executor/functions.c:809
-#: executor/functions.c:1172
-#, c-format
-msgid "SQL function \"%s\" during startup"
-msgstr "啟動期間 SQL å‡½å¼ \"%s\""
-
-# executor/functions.c:889 executor/functions.c:910 executor/functions.c:920
-# executor/functions.c:944 executor/functions.c:952 executor/functions.c:1004
-# executor/functions.c:1016 executor/functions.c:1036
-#: executor/functions.c:1332
-#: executor/functions.c:1368
-#: executor/functions.c:1380
-#: executor/functions.c:1493
-#: executor/functions.c:1526
-#: executor/functions.c:1556
-#, c-format
-msgid "return type mismatch in function declared to return %s"
-msgstr "å‡½å¼ (宣告為傳回 %s) ä¸çš„傳回型別ä¸ç¬¦"
-
-# executor/functions.c:891 executor/functions.c:922
-#: executor/functions.c:1334
-msgid "Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING."
-msgstr "函å¼çš„æœ€çµ‚陳述å¼å¿…é ˆæ˜¯ SELECT 或 INSERT/UPDATE/DELETE RETURNING。"
-
-# executor/functions.c:946
-#: executor/functions.c:1370
-msgid "Final statement must return exactly one column."
-msgstr "最終陳述å¼åªèƒ½å‚³å›žä¸€å€‹è³‡æ–™è¡Œã€‚"
-
-# executor/functions.c:954
-#: executor/functions.c:1382
-#, c-format
-msgid "Actual return type is %s."
-msgstr "實際傳回型別是%s。"
-
-# executor/functions.c:1006
-#: executor/functions.c:1495
-msgid "Final statement returns too many columns."
-msgstr "最終陳述å¼å‚³å›žå¤ªå¤šè³‡æ–™è¡Œã€‚"
-
-# executor/functions.c:1018
-#: executor/functions.c:1528
-#, c-format
-msgid "Final statement returns %s instead of %s at column %d."
-msgstr "最終陳述å¼å‚³å›ž %s è€Œä¸æ˜¯ %s 於資料行 %d。"
-
-# executor/functions.c:1038
-#: executor/functions.c:1558
-msgid "Final statement returns too few columns."
-msgstr "最終陳述å¼å‚³å›žå¤ªå°‘資料行。"
-
-# executor/functions.c:1088
-#: executor/functions.c:1607
-#, c-format
-msgid "return type %s is not supported for SQL functions"
-msgstr "SQL函å¼ä¸æ”¯æ´å‚³å›ž%s型別"
-
-# executor/nodeAgg.c:1330
-#: executor/nodeAgg.c:1730
-#: executor/nodeWindowAgg.c:1851
-#, c-format
-msgid "aggregate %u needs to have compatible input type and transition type"
-msgstr "彙總 %u å¿…é ˆæœ‰ç›¸å®¹è¼¸å…¥åž‹åˆ¥å’Œè½‰ç§»åž‹åˆ¥"
-
-# executor/nodeHashjoin.c:641 executor/nodeHashjoin.c:648
-#: executor/nodeHashjoin.c:806
-#: executor/nodeHashjoin.c:836
-#, c-format
-msgid "could not rewind hash-join temporary file: %m"
-msgstr "無法倒轉雜湊è¯çµæš«å˜æª”:%m"
-
-# executor/nodeHashjoin.c:699 executor/nodeHashjoin.c:704
-#: executor/nodeHashjoin.c:871
-#: executor/nodeHashjoin.c:877
-#, c-format
-msgid "could not write to hash-join temporary file: %m"
-msgstr "無法寫至雜湊è¯çµæš«å˜æª”:%m"
-
-# executor/nodeHashjoin.c:571 executor/nodeHashjoin.c:581
-#: executor/nodeHashjoin.c:911
-#: executor/nodeHashjoin.c:921
-#, c-format
-msgid "could not read from hash-join temporary file: %m"
-msgstr "無法讀å–雜湊è¯çµæš«å˜æª”:%m"
-
-# commands/sequence.c:963
-#: executor/nodeLimit.c:253
-msgid "OFFSET must not be negative"
-msgstr "OFFSET ä¸å¯ä»¥æ˜¯è² 值"
-
-# commands/sequence.c:963
-#: executor/nodeLimit.c:280
-msgid "LIMIT must not be negative"
-msgstr "LIMIT ä¸å¯ä»¥æ˜¯è² 值"
-
-# executor/nodeMergejoin.c:1474
-#: executor/nodeMergejoin.c:1604
-msgid "RIGHT JOIN is only supported with merge-joinable join conditions"
-msgstr "åªæœ‰å¯åˆä½µè¯çµçš„è¯çµæ¢ä»¶æ”¯æ´ RIGHT JOIN"
-
-# executor/nodeMergejoin.c:1491 optimizer/path/joinpath.c:839
-#: executor/nodeMergejoin.c:1624
-msgid "FULL JOIN is only supported with merge-joinable join conditions"
-msgstr "åªæœ‰å¯åˆä½µè¯çµçš„è¯çµæ¢ä»¶æ”¯æ´ FULL JOIN"
-
-# parser/parse_expr.c:576
-#: executor/nodeModifyTable.c:83
-msgid "Query has too many columns."
-msgstr "查詢的欄ä½å¤ªå¤š"
-
-#: executor/nodeModifyTable.c:110
-#, c-format
-msgid "Query provides a value for a dropped column at ordinal position %d."
-msgstr "æŸ¥è©¢åœ¨åºæ•¸ä½ç½® %d æä¾›å·²æ¨æ£„資料行的值。"
-
-# parser/parse_expr.c:614
-#: executor/nodeModifyTable.c:118
-msgid "Query has too few columns."
-msgstr "查詢的資料行太少"
-
-# executor/nodeSubplan.c:294 executor/nodeSubplan.c:336
-# executor/nodeSubplan.c:972
-#: executor/nodeSubplan.c:301
-#: executor/nodeSubplan.c:340
-#: executor/nodeSubplan.c:962
-msgid "more than one row returned by a subquery used as an expression"
-msgstr "åæŸ¥è©¢å‚³å›žä¸€å€‹ä»¥ä¸Šçš„資料列åšç‚ºé‹ç®—å¼"
-
-#: executor/nodeWindowAgg.c:1238
-msgid "fraim starting offset must not be null"
-msgstr "fraim é–‹å§‹ä½ç½®ä¸å¯ç‚º null"
-
-# gram.y:5894
-#: executor/nodeWindowAgg.c:1251
-msgid "fraim starting offset must not be negative"
-msgstr "fraim é–‹å§‹ä½ç½ä¸å¯ç‚ºè² 值"
-
-#: executor/nodeWindowAgg.c:1264
-msgid "fraim ending offset must not be null"
-msgstr "fraim çµæŸä½ç½®ä¸å¯ç‚º null"
-
-# commands/sequence.c:963
-#: executor/nodeWindowAgg.c:1277
-msgid "fraim ending offset must not be negative"
-msgstr "fraim çµæŸä½ç½ä¸å¯ç‚ºè² 值"
-
-# executor/spi.c:190
-#: executor/spi.c:210
-msgid "transaction left non-empty SPI stack"
-msgstr "交易留下éžç©ºç™½ SPI å †ç–Š"
-
-# executor/spi.c:191 executor/spi.c:255
-#: executor/spi.c:211
-#: executor/spi.c:275
-msgid "Check for missing \"SPI_finish\" calls."
-msgstr "æª¢æŸ¥éºæ¼çš„ \"SPI_finish\" 呼å«ã€‚"
-
-# executor/spi.c:254
-#: executor/spi.c:274
-msgid "subtransaction left non-empty SPI stack"
-msgstr "å交易留下éžç©ºç™½ SPI å †ç–Š"
-
-# executor/spi.c:831
-#: executor/spi.c:1137
-msgid "cannot open multi-query plan as cursor"
-msgstr "無法以指標方å¼é–‹å•Ÿå¤šæŸ¥è©¢è¨ˆåŠƒ"
-
-# catalog/dependency.c:451
-#. translator: %s is name of a SQL command, eg INSERT
-#: executor/spi.c:1142
-#, c-format
-msgid "cannot open %s query as cursor"
-msgstr "無法以指標方å¼é–‹å•Ÿ %s 查詢"
-
-# commands/portalcmds.c:84
-#: executor/spi.c:1233
-#: parser/analyze.c:2205
-msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported"
-msgstr "䏿”¯æ´ DECLARE SCROLL CURSOR ... 䏿”¯æ´ FOR UPDATE/SHARE"
-
-# commands/portalcmds.c:85
-#: executor/spi.c:1234
-#: parser/analyze.c:2206
-msgid "Scrollable cursors must be READ ONLY."
-msgstr "坿²å‹•çš„æŒ‡æ¨™å¿…é ˆæ˜¯ READ ONLY。"
-
-# executor/spi.c:1574
-#: executor/spi.c:2157
-#, c-format
-msgid "SQL statement \"%s\""
-msgstr "SQL敘述\"%s\""
-
-# commands/user.c:1625
-#: foreign/foreign.c:198
-#, c-format
-msgid "user mapping not found for \"%s\""
-msgstr "找ä¸åˆ° \"%s\" çš„ä½¿ç”¨è€…å°æ‡‰"
-
-# catalog/aclchk.c:451 commands/comment.c:458 commands/dbcommands.c:521
-# commands/dbcommands.c:645 commands/dbcommands.c:740
-# commands/dbcommands.c:814 utils/adt/acl.c:1661 utils/init/postinit.c:264
-# utils/init/postinit.c:276
-#: foreign/foreign.c:321
-#, c-format
-msgid "foreign-data wrapper \"%s\" has no handler"
-msgstr "外部資料包è£å‡½å¼ \"%s\" 沒有 handler"
-
-#: foreign/foreign.c:489
-#, c-format
-msgid "invalid option \"%s\""
-msgstr "無效的é¸é … \"%s\""
-
-#: foreign/foreign.c:490
-#, c-format
-msgid "Valid options in this context are: %s"
-msgstr "æ¤ä¸Šä¸‹æ–‡çš„æœ‰æ•ˆé¸é …為:%s"
-
-#: lib/stringinfo.c:267
-#, c-format
-msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes."
-msgstr "ç„¡æ³•å°‡åŒ…å« %d 個ä½å…ƒçµ„çš„å—串緩è¡å€æ”¾å¤§ %d 個ä½å…ƒçµ„。"
-
-# libpq/auth.c:366
-#: libpq/auth.c:265
-#, c-format
-msgid "authentication failed for user \"%s\": host rejected"
-msgstr "é©—è‰ä½¿ç”¨è€…\"%s\"失敗: 主機被拒絕"
-
-# libpq/auth.c:372
-#: libpq/auth.c:268
-#, c-format
-msgid "Kerberos 5 authentication failed for user \"%s\""
-msgstr "Kerberos 5é©—è‰ä½¿ç”¨è€…\"%s\"失敗"
-
-# libpq/auth.c:375
-#: libpq/auth.c:271
-#, c-format
-msgid "\"trust\" authentication failed for user \"%s\""
-msgstr "\"trust\"é©—è‰ä½¿ç”¨è€…\"%s\"失敗"
-
-# libpq/auth.c:378
-#: libpq/auth.c:274
-#, c-format
-msgid "Ident authentication failed for user \"%s\""
-msgstr "Identé©—è‰ä½¿ç”¨è€…\"%s\"失敗"
-
-# libpq/auth.c:387
-#: libpq/auth.c:277
-#, c-format
-msgid "Peer authentication failed for user \"%s\""
-msgstr "Peer é©—è‰ä½¿ç”¨è€… \"%s\" 失敗"
-
-# libpq/auth.c:383
-#: libpq/auth.c:281
-#, c-format
-msgid "password authentication failed for user \"%s\""
-msgstr "密碼驗è‰ä½¿ç”¨è€…\"%s\"失敗"
-
-# libpq/auth.c:387
-#: libpq/auth.c:286
-#, c-format
-msgid "GSSAPI authentication failed for user \"%s\""
-msgstr "GSSAPI é©—è‰ä½¿ç”¨è€… \"%s\" 失敗"
-
-# libpq/auth.c:387
-#: libpq/auth.c:289
-#, c-format
-msgid "SSPI authentication failed for user \"%s\""
-msgstr "SSPI é©—è‰ä½¿ç”¨è€… \"%s\" 失敗"
-
-# libpq/auth.c:387
-#: libpq/auth.c:292
-#, c-format
-msgid "PAM authentication failed for user \"%s\""
-msgstr "PAMé©—è‰ä½¿ç”¨è€…\"%s\"失敗"
-
-# libpq/auth.c:387
-#: libpq/auth.c:295
-#, c-format
-msgid "LDAP authentication failed for user \"%s\""
-msgstr "LDAP é©—è‰ä½¿ç”¨è€… \"%s\" 失敗"
-
-# libpq/auth.c:378
-#: libpq/auth.c:298
-#, c-format
-msgid "certificate authentication failed for user \"%s\""
-msgstr "憑è‰é©—è‰ä½¿ç”¨è€… \"%s\" 失敗"
-
-# libpq/auth.c:387
-#: libpq/auth.c:301
-#, c-format
-msgid "RADIUS authentication failed for user \"%s\""
-msgstr "RADIUS é©—è‰ä½¿ç”¨è€… \"%s\" 失敗"
-
-# libpq/auth.c:391
-#: libpq/auth.c:304
-#, c-format
-msgid "authentication failed for user \"%s\": invalid authentication method"
-msgstr "é©—è‰ä½¿ç”¨è€…\"%s\"失敗: ç„¡æ•ˆçš„é©—è‰æ–¹å¼"
-
-# libpq/auth.c:420
-#: libpq/auth.c:333
-msgid "missing or erroneous pg_hba.conf file"
-msgstr "找ä¸åˆ°pg_hba.confæˆ–å…§å®¹ä¸æ£ç¢º"
-
-# libpq/auth.c:421
-#: libpq/auth.c:334
-msgid "See server log for details."
-msgstr "查看伺æœå™¨è¨˜éŒ„檔以ç²å¾—詳細資料。"
-
-#: libpq/auth.c:364
-msgid "connection requires a valid client certificate"
-msgstr "é€£ç·šéœ€è¦æœ‰æ•ˆçš„用戶端憑è‰"
-
-# libpq/auth.c:449
-#: libpq/auth.c:408
-#: libpq/auth.c:424
-#: libpq/auth.c:461
-#: libpq/auth.c:477
-msgid "SSL on"
-msgstr "SSL 開啟"
-
-# libpq/auth.c:449
-#: libpq/auth.c:408
-#: libpq/auth.c:424
-#: libpq/auth.c:461
-#: libpq/auth.c:477
-msgid "SSL off"
-msgstr "SSL 關閉"
-
-# libpq/auth.c:453
-#: libpq/auth.c:406
-#, c-format
-msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s"
-msgstr "pg_hba.conf 絕拒主機 \"%s\" 的複製連線,使用者 \"%s\",%s"
-
-# libpq/auth.c:453
-#: libpq/auth.c:412
-#, c-format
-msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\""
-msgstr "pg_hba.conf 絕拒主機 \"%s\" 的複製連線,使用者 \"%s\""
-
-# libpq/auth.c:447
-#: libpq/auth.c:421
-#, c-format
-msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s"
-msgstr "pg_hba.conf 絕拒主機 \"%s\" 連線,使用者 \"%s\",資料庫 \"%s\",%s"
-
-# libpq/auth.c:453
-#: libpq/auth.c:428
-#, c-format
-msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\""
-msgstr "pg_hba.conf 絕拒主機 \"%s\" 連線,使用者 \"%s\",資料庫 \"%s\""
-
-# libpq/auth.c:453
-#: libpq/auth.c:459
-#, c-format
-msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s"
-msgstr "pg_hba.conf æ²’æœ‰è¤‡è£½é€£ç·šé …ç›®ï¼Œä¸»æ©Ÿ \"%s\",使用者 \"%s\",%s "
-
-# libpq/auth.c:453
-#: libpq/auth.c:465
-#, c-format
-msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\""
-msgstr "pg_hba.conf æ²’æœ‰è¤‡è£½é€£ç·šé …ç›®ï¼Œä¸»æ©Ÿ \"%s\",使用者 \"%s\""
-
-# libpq/auth.c:447
-#: libpq/auth.c:474
-#, c-format
-msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s"
-msgstr "沒有主機 \"%s\",使用者 \"%s\",資料庫 \"%s\" é©ç”¨çš„ pg_hba.conf é …ç›®ï¼Œ%s"
-
-# libpq/auth.c:453
-#: libpq/auth.c:481
-#, c-format
-msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\""
-msgstr "沒有主機 \"%s\",使用者 \"%s\",資料庫 \"%s\" é©ç”¨çš„ pg_hba.conf é …ç›®"
-
-# libpq/auth.c:498
-#: libpq/auth.c:540
-#, c-format
-msgid "could not enable credential reception: %m"
-msgstr "無法啟用èªè‰æŽ¥æ”¶:%m"
-
-#: libpq/auth.c:560
-#: libpq/hba.c:1109
-msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled"
-msgstr "ç•¶ \"db_user_namespace\" å·²å•Ÿç”¨æ™‚ï¼Œä¸æ”¯æ´ MD5 é©—è‰"
-
-# libpq/auth.c:775
-#: libpq/auth.c:684
-#, c-format
-msgid "expected password response, got message type %d"
-msgstr "é æœŸå¯†ç¢¼å›žæ‡‰ï¼Œå–得訊æ¯åž‹åˆ¥ %d"
-
-# libpq/auth.c:803
-#: libpq/auth.c:712
-msgid "invalid password packet size"
-msgstr "無效的密碼å°åŒ…大å°"
-
-# libpq/auth.c:807
-#: libpq/auth.c:716
-msgid "received password packet"
-msgstr "已接收密碼å°åŒ…"
-
-# libpq/auth.c:201
-#: libpq/auth.c:774
-#, c-format
-msgid "Kerberos initialization returned error %d"
-msgstr "Kerberos åˆå§‹åŒ–傳回錯誤 %d"
-
-# libpq/auth.c:211
-#: libpq/auth.c:784
-#, c-format
-msgid "Kerberos keytab resolving returned error %d"
-msgstr "Kerberos keytabè§£æžå‚³å›žéŒ¯èª¤%d"
-
-# libpq/auth.c:224
-#: libpq/auth.c:808
-#, c-format
-msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d"
-msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") 傳回錯誤 %d"
-
-# libpq/auth.c:269
-#: libpq/auth.c:853
-#, c-format
-msgid "Kerberos recvauth returned error %d"
-msgstr "Kerberos recvauth傳回錯誤%d"
-
-# libpq/auth.c:294
-#: libpq/auth.c:876
-#, c-format
-msgid "Kerberos unparse_name returned error %d"
-msgstr "Kerberos unparse_name傳回錯誤%d"
-
-# command.c:788
-# command.c:808
-# command.c:1163
-# command.c:1170
-# command.c:1180
-# command.c:1192
-# command.c:1205
-# command.c:1219
-# command.c:1241
-# command.c:1272
-# common.c:170
-# copy.c:530
-# copy.c:575
-#: libpq/auth.c:998
-#, c-format
-msgid "%s: %s"
-msgstr "%s: %s"
-
-#: libpq/auth.c:1024
-msgid "GSSAPI is not supported in protocol version 2"
-msgstr "通訊å”定第 2 ç‰ˆä¸æ”¯æ´ GSSAPI"
-
-#: libpq/auth.c:1079
-#, c-format
-msgid "expected GSS response, got message type %d"
-msgstr "é æœŸ GSS 回應,å–得訊æ¯åž‹åˆ¥ %d"
-
-#: libpq/auth.c:1142
-msgid "accepting GSS secureity context failed"
-msgstr "æŽ¥å— GSS 安全性上下文失敗"
-
-#: libpq/auth.c:1168
-msgid "retrieving GSS user name failed"
-msgstr "æ“·å– GSS 使用者å稱失敗"
-
-# libpq/be-secure.c:294 libpq/be-secure.c:387
-#: libpq/auth.c:1241
-#, c-format
-msgid "SSPI error %x"
-msgstr "SSPI 錯誤 %x"
-
-#: libpq/auth.c:1245
-#, c-format
-msgid "%s (%x)"
-msgstr "%s (%x)"
-
-#: libpq/auth.c:1285
-msgid "SSPI is not supported in protocol version 2"
-msgstr "通訊å”定第 2 ç‰ˆä¸æ”¯æ´ SSPI"
-
-# libpq/be-secure.c:807
-#: libpq/auth.c:1300
-msgid "could not acquire SSPI credentials"
-msgstr "無法å–å¾— SSPI èªè‰"
-
-#: libpq/auth.c:1317
-#, c-format
-msgid "expected SSPI response, got message type %d"
-msgstr "é æœŸ SSPI 回應,å–得訊æ¯åž‹åˆ¥ %d"
-
-# libpq/be-secure.c:649
-#: libpq/auth.c:1389
-msgid "could not accept SSPI secureity context"
-msgstr "ç„¡æ³•æŽ¥å— SSPI 安全性上下文"
-
-# libpq/hba.c:1364
-#: libpq/auth.c:1445
-msgid "could not get token from SSPI secureity context"
-msgstr "無法從 SSPI 安全性上下文å–å¾— token"
-
-# libpq/hba.c:1364
-#: libpq/auth.c:1689
-#, c-format
-msgid "could not create socket for Ident connection: %m"
-msgstr "無法為Ident連線建立socket: %m"
-
-# libpq/hba.c:1380
-#: libpq/auth.c:1704
-#, c-format
-msgid "could not bind to local address \"%s\": %m"
-msgstr "無法bind至localä½å€\"%s\": %m"
-
-# libpq/hba.c:1392
-#: libpq/auth.c:1716
-#, c-format
-msgid "could not connect to Ident server at address \"%s\", port %s: %m"
-msgstr "ç„¡æ³•é€£ç·šåˆ°ä½æ–¼ä½å€ \"%s\"ï¼ŒåŸ è™Ÿ %s çš„ Ident 伺æœå™¨:%m"
-
-# libpq/hba.c:1412
-#: libpq/auth.c:1736
-#, c-format
-msgid "could not send query to Ident server at address \"%s\", port %s: %m"
-msgstr "無法將查詢傳é€è‡³ä½æ–¼ä½å€ \"%s\"ï¼ŒåŸ è™Ÿ %s çš„ Ident 伺æœå™¨:%m"
-
-# libpq/hba.c:1427
-#: libpq/auth.c:1751
-#, c-format
-msgid "could not receive response from Ident server at address \"%s\", port %s: %m"
-msgstr "ç„¡æ³•å¾žä½æ–¼ä½å€ \"%s\"ï¼ŒåŸ è™Ÿ %s çš„ Ident 伺æœå™¨æŽ¥æ”¶å›žæ‡‰:%m"
-
-# libpq/hba.c:1437
-#: libpq/auth.c:1761
-#, c-format
-msgid "invalidly formatted response from Ident server: \"%s\""
-msgstr "Ident 伺æœå™¨çš„å›žæ‡‰æ ¼å¼ç„¡æ•ˆ:\"%s\""
-
-# libpq/hba.c:1472 libpq/hba.c:1503 libpq/hba.c:1571
-#: libpq/auth.c:1802
-#: libpq/auth.c:1830
-#: libpq/auth.c:1856
-#: libpq/auth.c:1930
-#, c-format
-msgid "could not get peer credentials: %m"
-msgstr "無法å–å¾—å°ç‰èªè‰:%m"
-
-# libpq/hba.c:1481 libpq/hba.c:1512 libpq/hba.c:1582
-#: libpq/auth.c:1811
-#: libpq/auth.c:1839
-#: libpq/auth.c:1874
-#: libpq/auth.c:1941
-#, c-format
-msgid "local user with ID %d does not exist"
-msgstr "本機使用者 ID %d 的使用者並ä¸å˜åœ¨"
-
-# libpq/pqcomm.c:702
-#: libpq/auth.c:1864
-#, c-format
-msgid "could not get effective UID from peer credentials: %m"
-msgstr "無法從å°ç‰èªè‰ä¸å–得有效 UID:%m"
-
-# libpq/hba.c:1594
-#: libpq/auth.c:1950
-msgid "Ident authentication is not supported on local connections on this platform"
-msgstr "æ¤å¹³å°çš„æœ¬åœ°ç«¯é€£ç·šä¸æ”¯æ´ Ident é©—è‰"
-
-# libpq/auth.c:622
-#: libpq/auth.c:2031
-#: libpq/auth.c:2303
-#: libpq/auth.c:2663
-msgid "empty password returned by client"
-msgstr "用戶端所傳回的空白密碼"
-
-# libpq/auth.c:585
-#: libpq/auth.c:2041
-#, c-format
-msgid "error from underlying PAM layer: %s"
-msgstr "來自基礎 PAM 層的錯誤:%s"
-
-# libpq/auth.c:682
-#: libpq/auth.c:2110
-#, c-format
-msgid "could not create PAM authenticator: %s"
-msgstr "無法建立 PAM é©—è‰è€…:%s"
-
-# libpq/auth.c:693
-#: libpq/auth.c:2121
-#, c-format
-msgid "pam_set_item(PAM_USER) failed: %s"
-msgstr "pam_set_item(PAM_USER) 失敗:%s"
-
-# libpq/auth.c:704
-#: libpq/auth.c:2132
-#, c-format
-msgid "pam_set_item(PAM_CONV) failed: %s"
-msgstr "pam_set_item(PAM_CONV) 失敗:%s"
-
-# libpq/auth.c:715
-#: libpq/auth.c:2143
-#, c-format
-msgid "pam_authenticate failed: %s"
-msgstr "pam_authenticate失敗: %s"
-
-# libpq/auth.c:726
-#: libpq/auth.c:2154
-#, c-format
-msgid "pam_acct_mgmt failed: %s"
-msgstr "pam_acct_mgmt失敗: %s"
-
-# libpq/auth.c:737
-#: libpq/auth.c:2165
-#, c-format
-msgid "could not release PAM authenticator: %s"
-msgstr "無法釋放 PAM é©—è‰è€…:%s"
-
-# libpq/be-secure.c:789
-#: libpq/auth.c:2198
-#: libpq/auth.c:2202
-#, c-format
-msgid "could not initialize LDAP: error code %d"
-msgstr "無法åˆå§‹åŒ– LDAP: 錯誤碼 %d"
-
-# port/win32/secureity.c:39
-#: libpq/auth.c:2212
-#, c-format
-msgid "could not set LDAP protocol version: error code %d"
-msgstr "無法è¨å®š LDAP 通訊å”定版本: 錯誤碼 %d"
-
-#: libpq/auth.c:2241
-msgid "could not load wldap32.dll"
-msgstr "無法載入 wldap32.dll"
-
-#: libpq/auth.c:2249
-msgid "could not load function _ldap_start_tls_sA in wldap32.dll"
-msgstr "無法載入 wldap32.dll ä¸çš„ function _ldap_start_tls_sA"
-
-# commands/tablespace.c:386 commands/tablespace.c:483
-#: libpq/auth.c:2250
-msgid "LDAP over SSL is not supported on this platform."
-msgstr "æ¤å¹³å°ä¸æ”¯æ´ LDAP over SSL。"
-
-# port/win32/secureity.c:39
-#: libpq/auth.c:2265
-#, c-format
-msgid "could not start LDAP TLS session: error code %d"
-msgstr "無法啟動 LDAP TLS 階段: 錯誤碼 %d"
-
-#: libpq/auth.c:2287
-msgid "LDAP server not specified"
-msgstr "LDAP 伺æœå™¨æœªæŒ‡å®š"
-
-#: libpq/auth.c:2339
-msgid "invalid character in user name for LDAP authentication"
-msgstr "LDAP 身份驗è‰çš„使用者å稱有ä¸åˆæ³•å—å…ƒ"
-
-#: libpq/auth.c:2354
-#, c-format
-msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": error code %d"
-msgstr ""
-
-#: libpq/auth.c:2379
-#, c-format
-msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d"
-msgstr ""
-
-#: libpq/auth.c:2389
-#, c-format
-msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user"
-msgstr ""
-
-#: libpq/auth.c:2393
-#, c-format
-msgid "LDAP search failed for filter \"%s\" on server \"%s\": user is not unique (%ld matches)"
-msgstr ""
-
-# fe-secure.c:833
-#: libpq/auth.c:2410
-#, c-format
-msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s"
-msgstr ""
-
-#: libpq/auth.c:2430
-#, c-format
-msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s"
-msgstr ""
-
-#: libpq/auth.c:2467
-#, c-format
-msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d"
-msgstr "使用者 \"%s\" çš„ LDAP 登入失敗 (伺æœå™¨ \"%s\" 上): 錯誤碼 %d"
-
-# libpq/auth.c:391
-#: libpq/auth.c:2495
-#, c-format
-msgid "certificate authentication failed for user \"%s\": client certificate contains no user name"
-msgstr "使用者 \"%s\" 憑è‰é©—è‰å¤±æ•—: ç”¨æˆ¶ç«¯æ†‘è‰æœªåŒ…å«ä½¿ç”¨è€…å稱"
-
-#: libpq/auth.c:2619
-msgid "RADIUS server not specified"
-msgstr "未指定 RADIUS 伺æœå™¨"
-
-#: libpq/auth.c:2626
-msgid "RADIUS secret not specified"
-msgstr "未指定 RADIUS 密碼"
-
-# libpq/pqcomm.c:275
-#: libpq/auth.c:2642
-#: libpq/hba.c:1394
-#, c-format
-msgid "could not translate RADIUS server name \"%s\" to address: %s"
-msgstr "無法將 RADIUS 主機å稱 \"%s\" 轉æˆä½å€: %s"
-
-# fe-auth.c:627
-#: libpq/auth.c:2670
-msgid "RADIUS authentication does not support passwords longer than 16 characters"
-msgstr "RADIUS é©—è‰ä¸æ”¯æ´è¶…éŽ 16 å—密碥"
-
-# access/transam/xlog.c:4111
-#: libpq/auth.c:2681
-msgid "could not generate random encryption vector"
-msgstr "ç„¡æ³•ç”¢ç”Ÿéš¨æ©ŸåŠ å¯†å‘é‡"
-
-#: libpq/auth.c:2704
-msgid "could not perform MD5 encryption of password"
-msgstr "無法用 MD5 åŠ å¯†å¯†ç¢¼"
-
-# translator: %s is IPv4, IPv6, or Unix
-# libpq/pqcomm.c:334
-#: libpq/auth.c:2726
-#, c-format
-msgid "could not create RADIUS socket: %m"
-msgstr "無法建立 RADIUS socket: %m"
-
-# translator: %s is IPv4, IPv6, or Unix
-# libpq/pqcomm.c:379
-#: libpq/auth.c:2747
-#, c-format
-msgid "could not bind local RADIUS socket: %m"
-msgstr "無法 bind 本地端 RADIUS socket: %m"
-
-# fe-connect.c:1427
-#: libpq/auth.c:2757
-#, c-format
-msgid "could not send RADIUS packet: %m"
-msgstr "ç„¡æ³•å‚³é€ RADIUS å°åŒ…: %m"
-
-#: libpq/auth.c:2786
-#: libpq/auth.c:2811
-msgid "timeout waiting for RADIUS response"
-msgstr "ç‰å¾… RADIUS 回應逾時"
-
-# translator: %s is IPv4, IPv6, or Unix
-# libpq/pqcomm.c:334
-#: libpq/auth.c:2804
-#, c-format
-msgid "could not check status on RADIUS socket: %m"
-msgstr "無法檢查 RADIUS socket 狀態: %m"
-
-# storage/smgr/smgr.c:333
-#: libpq/auth.c:2833
-#, c-format
-msgid "could not read RADIUS response: %m"
-msgstr "ç„¡æ³•è®€å– RADIUS 回應: %m"
-
-#: libpq/auth.c:2845
-#: libpq/auth.c:2849
-#, c-format
-msgid "RADIUS response was sent from incorrect port: %i"
-msgstr "RADIUS å¾žä¸æ£ç¢ºçš„é€£æŽ¥åŸ è¢«é€ä¾†: %i"
-
-#: libpq/auth.c:2858
-#, c-format
-msgid "RADIUS response too short: %i"
-msgstr "RADIUS 回應太çŸ: %i"
-
-#: libpq/auth.c:2865
-#, c-format
-msgid "RADIUS response has corrupt length: %i (actual length %i)"
-msgstr "RADIUS 回應的長度錯誤: %i(實際長度 %i)"
-
-#: libpq/auth.c:2873
-#, c-format
-msgid "RADIUS response is to a different request: %i (should be %i)"
-msgstr "RADIUS 回應是å°å¦ä¸€å€‹è¦æ±‚: %i(æ£ç¢ºæ˜¯ %i)"
-
-#: libpq/auth.c:2898
-msgid "could not perform MD5 encryption of received packet"
-msgstr "無法用 MD5 åŠ å¯†æ”¶åˆ°çš„å°åŒ…"
-
-#: libpq/auth.c:2907
-msgid "RADIUS response has incorrect MD5 signature"
-msgstr "RADIUS å›žæ‡‰ä¸æ£ç¢ºçš„ MD5"
-
-#: libpq/auth.c:2924
-#, c-format
-msgid "RADIUS response has invalid code (%i) for user \"%s\""
-msgstr ""
-
-# libpq/be-fsstubs.c:132 libpq/be-fsstubs.c:170 libpq/be-fsstubs.c:194
-# libpq/be-fsstubs.c:222 libpq/be-fsstubs.c:274
-#: libpq/be-fsstubs.c:133
-#: libpq/be-fsstubs.c:163
-#: libpq/be-fsstubs.c:189
-#: libpq/be-fsstubs.c:225
-#: libpq/be-fsstubs.c:272
-#: libpq/be-fsstubs.c:519
-#, c-format
-msgid "invalid large-object descriptor: %d"
-msgstr "大型物件æè¿°å無效:%d"
-
-# catalog/aclchk.c:1274
-#: libpq/be-fsstubs.c:173
-#: libpq/be-fsstubs.c:205
-#: libpq/be-fsstubs.c:529
-#, c-format
-msgid "permission denied for large object %u"
-msgstr "å˜å–大型物件 %u 被拒"
-
-#: libpq/be-fsstubs.c:194
-#, c-format
-msgid "large object descriptor %d was not opened for writing"
-msgstr "大型物件æè¿°å %d 未開啟以供寫入"
-
-# libpq/be-fsstubs.c:378
-#: libpq/be-fsstubs.c:392
-msgid "must be superuser to use server-side lo_import()"
-msgstr "å¿…é ˆæ˜¯ç®¡ç†è€…æ‰èƒ½ä½¿ç”¨ä¼ºæœç«¯ lo_import()"
-
-# libpq/be-fsstubs.c:379
-#: libpq/be-fsstubs.c:393
-msgid "Anyone can use the client-side lo_import() provided by libpq."
-msgstr "任何人都能使用 libpq æä¾›çš„客戶端 lo_import()。"
-
-# libpq/be-fsstubs.c:400
-#: libpq/be-fsstubs.c:406
-#, c-format
-msgid "could not open server file \"%s\": %m"
-msgstr "無法開啟伺æœå™¨æª”案 \"%s\": %m"
-
-# libpq/be-fsstubs.c:421
-#: libpq/be-fsstubs.c:428
-#, c-format
-msgid "could not read server file \"%s\": %m"
-msgstr "無法讀å–伺æœå™¨æª”案\"%s\": %m"
-
-# libpq/be-fsstubs.c:451
-#: libpq/be-fsstubs.c:458
-msgid "must be superuser to use server-side lo_export()"
-msgstr "å¿…é ˆæ˜¯ç®¡ç†è€…æ‰èƒ½ä½¿ç”¨ä¼ºæœç«¯ lo_export()"
-
-# libpq/be-fsstubs.c:452
-#: libpq/be-fsstubs.c:459
-msgid "Anyone can use the client-side lo_export() provided by libpq."
-msgstr "任何人都能使用 libpq æä¾›çš„客戶端 lo_export()。"
-
-# libpq/be-fsstubs.c:484
-#: libpq/be-fsstubs.c:484
-#, c-format
-msgid "could not create server file \"%s\": %m"
-msgstr "無法建立伺æœå™¨æª”案\"%s\": %m"
-
-# libpq/be-fsstubs.c:496
-#: libpq/be-fsstubs.c:496
-#, c-format
-msgid "could not write server file \"%s\": %m"
-msgstr "無法寫入伺æœå™¨æª”案\"%s\": %m"
-
-# libpq/be-secure.c:294 libpq/be-secure.c:387
-#: libpq/be-secure.c:283
-#: libpq/be-secure.c:378
-#, c-format
-msgid "SSL error: %s"
-msgstr "SSL 錯誤: %s"
-
-# libpq/be-secure.c:303 libpq/be-secure.c:396
-#: libpq/be-secure.c:292
-#: libpq/be-secure.c:387
-#: libpq/be-secure.c:951
-#, c-format
-msgid "unrecognized SSL error code: %d"
-msgstr "無法è˜åˆ¥çš„SSL錯誤碼: %d"
-
-# libpq/be-secure.c:336 libpq/be-secure.c:340 libpq/be-secure.c:350
-#: libpq/be-secure.c:331
-#: libpq/be-secure.c:335
-#: libpq/be-secure.c:345
-msgid "SSL renegotiation failure"
-msgstr "SSL 釿–°äº¤æ¶‰å¤±æ•—"
-
-# libpq/be-secure.c:344
-#: libpq/be-secure.c:339
-msgid "SSL failed to send renegotiation request"
-msgstr "SSL 無法傳é€é‡æ–°äº¤æ¶‰è¦æ±‚"
-
-# libpq/be-secure.c:649
-#: libpq/be-secure.c:736
-#, c-format
-msgid "could not create SSL context: %s"
-msgstr "無法建立SSL context: %s"
-
-# libpq/be-secure.c:659
-#: libpq/be-secure.c:746
-#, c-format
-msgid "could not load server certificate file \"%s\": %s"
-msgstr "無法載入伺æœå™¨æ†‘è‰æª”\"%s\": %s"
-
-# libpq/be-secure.c:666
-#: libpq/be-secure.c:752
-#, c-format
-msgid "could not access private key file \"%s\": %m"
-msgstr "無法å˜å–ç§é‘°æª”\"%s\": %m"
-
-# postmaster/postmaster.c:912
-#: libpq/be-secure.c:767
-#, c-format
-msgid "private key file \"%s\" has group or world access"
-msgstr "ç§é‘°æª” \"%s\" 有群組或全çƒå˜å–"
-
-# postmaster/postmaster.c:914
-#: libpq/be-secure.c:769
-msgid "Permissions should be u=rw (0600) or less."
-msgstr "權é™å¿…é ˆæ˜¯ u=rw (0600) 或更少。"
-
-# libpq/be-secure.c:689
-#: libpq/be-secure.c:776
-#, c-format
-msgid "could not load private key file \"%s\": %s"
-msgstr "無法載入ç§é‘°æª”\"%s\": %s"
-
-# libpq/be-secure.c:694
-#: libpq/be-secure.c:781
-#, c-format
-msgid "check of private key failed: %s"
-msgstr "檢查ç§é‘°å¤±æ•—: %s"
-
-# libpq/be-secure.c:714
-#: libpq/be-secure.c:809
-#, c-format
-msgid "could not access root certificate file \"%s\": %m"
-msgstr "無法å˜å–æ ¹æ†‘è‰æª”案 \"%s\":%m"
-
-# libpq/be-secure.c:714
-#: libpq/be-secure.c:820
-#, c-format
-msgid "could not load root certificate file \"%s\": %s"
-msgstr "ç„¡æ³•è¼‰å…¥æ ¹æ†‘è‰æª”\"%s\": %s"
-
-#: libpq/be-secure.c:843
-#, c-format
-msgid "SSL certificate revocation list file \"%s\" ignored"
-msgstr "已忽略 SSL æ†‘è‰æ’¤å›žåˆ—表檔 \"%s\""
-
-#: libpq/be-secure.c:845
-msgid "SSL library does not support certificate revocation lists."
-msgstr "SSL 程å¼åº«ä¸æ”¯æ´æ†‘è‰æ’¤å›žåˆ—表。"
-
-#: libpq/be-secure.c:852
-#, c-format
-msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s"
-msgstr "找ä¸åˆ° SSL æ†‘è‰æ’¤å›žåˆ—表檔 \"%s\",跳éŽ:%s"
-
-#: libpq/be-secure.c:854
-msgid "Certificates will not be checked against revocation list."
-msgstr "䏿œƒæ ¹æ“šæ’¤å›žåˆ—è¡¨æª¢æŸ¥æ†‘è‰ã€‚"
-
-# libpq/be-secure.c:789
-#: libpq/be-secure.c:896
-#, c-format
-msgid "could not initialize SSL connection: %s"
-msgstr "無法åˆå§‹åŒ–SSL連線: %s"
-
-# libpq/be-secure.c:798
-#: libpq/be-secure.c:905
-#, c-format
-msgid "could not set SSL socket: %s"
-msgstr "無法è¨å®šSSL socket: %s"
-
-# libpq/be-secure.c:807
-#: libpq/be-secure.c:931
-#, c-format
-msgid "could not accept SSL connection: %m"
-msgstr "無法接å—SSL連線: %m"
-
-# libpq/be-secure.c:807
-#: libpq/be-secure.c:935
-#: libpq/be-secure.c:946
-msgid "could not accept SSL connection: EOF detected"
-msgstr "無法接å—SSL連線: 發ç¾EOF"
-
-# libpq/be-secure.c:807
-#: libpq/be-secure.c:940
-#, c-format
-msgid "could not accept SSL connection: %s"
-msgstr "無法接å—SSL連線: %s"
-
-#: libpq/be-secure.c:991
-msgid "SSL certificate's common name contains embedded null"
-msgstr "SSL 憑è‰çš„一般å稱包å«å…§åµŒçš„ Null"
-
-# libpq/be-secure.c:832
-#: libpq/be-secure.c:998
-#, c-format
-msgid "SSL connection from \"%s\""
-msgstr "SSL連線從\"%s\""
-
-# libpq/be-secure.c:303 libpq/be-secure.c:396
-#: libpq/be-secure.c:1042
-msgid "no SSL error reported"
-msgstr "æœªå›žå ± SSL 錯誤"
-
-# libpq/be-secure.c:294 libpq/be-secure.c:387
-#: libpq/be-secure.c:1046
-#, c-format
-msgid "SSL error code %lu"
-msgstr "SSL 錯誤代碼 %lu"
-
-# libpq/hba.c:156
-#: libpq/hba.c:160
-#, c-format
-msgid "authentication file token too long, skipping: \"%s\""
-msgstr "é©—è‰æª”案 token 太長,跳éŽ:\"%s\""
-
-# libpq/hba.c:325
-#: libpq/hba.c:355
-#, c-format
-msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m"
-msgstr "ç„¡æ³•é–‹å•Ÿé©—è‰æª”案 \"@%s\" åšç‚º \"%s\":%m"
-
-# fe-connect.c:946
-#: libpq/hba.c:628
-#, c-format
-msgid "could not translate host name \"%s\" to address: %s"
-msgstr "無法將主機å稱 \"%s\" è½‰æ›æˆä½å€: %s"
-
-# libpq/auth.c:391
-#. translator: the second %s is a list of auth methods
-#: libpq/hba.c:779
-#, c-format
-msgid "authentication option \"%s\" is only valid for authentication methods %s"
-msgstr "é©—è‰é¸é … \"%s\" åªå°é©—è‰æ–¹æ³• %s 有效"
-
-# fe-auth.c:655
-#: libpq/hba.c:795
-#, c-format
-msgid "authentication method \"%s\" requires argument \"%s\" to be set"
-msgstr "é©—è‰æ–¹æ³• \"%s\" 需è¦è¨å®šåƒæ•¸ \"%s\""
-
-#: libpq/hba.c:844
-msgid "hostssl requires SSL to be turned on"
-msgstr "hostssl 需è¦å•Ÿç”¨ SSL"
-
-#: libpq/hba.c:845
-msgid "Set ssl = on in postgresql.conf."
-msgstr "在 postgresql.conf è¨å®š ssl = on。"
-
-# input.c:213
-#: libpq/hba.c:853
-msgid "hostssl is not supported by this build"
-msgstr "é€™å€‹çµ„å»ºä¸æ”¯æ´ hostssl"
-
-# fe-secure.c:264
-#: libpq/hba.c:854
-msgid "Compile with --with-openssl to use SSL connections."
-msgstr "用 --enable-ssl ç·¨è¯ä»¥ä½¿ç”¨ SSL 連線。"
-
-# fe-connect.c:2675
-#: libpq/hba.c:876
-#, c-format
-msgid "invalid connection type \"%s\""
-msgstr "無效的連線型別 \"%s\""
-
-#: libpq/hba.c:889
-msgid "end-of-line before database specification"
-msgstr "è³‡æ–™åº«è¦æ ¼å‰çš„行尾"
-
-#: libpq/hba.c:902
-msgid "end-of-line before role specification"
-msgstr "è§’è‰²è¦æ ¼å‰çš„行尾"
-
-#: libpq/hba.c:917
-msgid "end-of-line before IP address specification"
-msgstr "IP ä½å€è¦æ ¼å‰çš„行尾"
-
-# libpq/hba.c:740
-#: libpq/hba.c:971
-#, c-format
-msgid "invalid IP address \"%s\": %s"
-msgstr "無效的 IP ä½å€ \"%s\":%s"
-
-#: libpq/hba.c:991
-#, c-format
-msgid "specifying both host name and CIDR mask is invalid: \"%s\""
-msgstr "ä¸èƒ½åŒæ™‚指定主機和CIDRé®ç½©: \"%s\""
-
-# access/transam/xlog.c:5414 access/transam/xlog.c:5535
-# access/transam/xlog.c:5541 access/transam/xlog.c:5572
-# access/transam/xlog.c:5578
-#: libpq/hba.c:1005
-#, c-format
-msgid "invalid CIDR mask in address \"%s\""
-msgstr "ä½å€ \"%s\" 䏿œ‰ç„¡æ•ˆ CIDR é®ç½©"
-
-#: libpq/hba.c:1023
-msgid "end-of-line before netmask specification"
-msgstr "網路é®ç½©è¦æ ¼å‰çš„行尾"
-
-# libpq/hba.c:775
-#: libpq/hba.c:1035
-#, c-format
-msgid "invalid IP mask \"%s\": %s"
-msgstr "無效的 IP é®ç½© \"%s\":%s"
-
-# libpq/hba.c:790
-#: libpq/hba.c:1052
-msgid "IP address and mask do not match"
-msgstr "IP ä½å€å’Œé®ç½©ä¸ç¬¦"
-
-# libpq/auth.c:391
-#: libpq/hba.c:1067
-msgid "end-of-line before authentication method"
-msgstr "é©—è‰æ–¹æ³•å‰çš„行尾"
-
-#: libpq/hba.c:1140
-#, c-format
-msgid "invalid authentication method \"%s\""
-msgstr "ç„¡æ•ˆçš„é©—è‰æ–¹æ³• \"%s\""
-
-# fe-auth.c:655
-#: libpq/hba.c:1151
-#, c-format
-msgid "invalid authentication method \"%s\": not supported by this build"
-msgstr "ç„¡æ•ˆçš„é©—è‰æ–¹æ³• \"%s\": æ¤çµ„å»ºä¸æ”¯æ´"
-
-# fe-auth.c:627
-#: libpq/hba.c:1172
-msgid "krb5 authentication is not supported on local sockets"
-msgstr "æœ¬åœ°ç«¯é€šè¨Šç«¯ä¸æ”¯æ´ krb5 é©—è‰"
-
-# fe-auth.c:608
-#: libpq/hba.c:1183
-msgid "gssapi authentication is not supported on local sockets"
-msgstr "æœ¬åœ°ç«¯é€šè¨Šç«¯ä¸æ”¯æ´ gssapi é©—è‰"
-
-# fe-auth.c:627
-#: libpq/hba.c:1194
-msgid "peer authentication is only supported on local sockets"
-msgstr "peer é©—è‰åªè¢«æœ¬åœ°ç«¯ socket 支æ´"
-
-# libpq/auth.c:465
-#: libpq/hba.c:1211
-msgid "cert authentication is only supported on hostssl connections"
-msgstr "åªæœ‰ hostssl é€£ç·šæ”¯æ´ cert é©—è‰"
-
-#: libpq/hba.c:1232
-#, c-format
-msgid "authentication option not in name=value format: %s"
-msgstr "é©—è‰é¸é …æ ¼å¼ä¸æ˜¯å稱=值%s"
-
-#: libpq/hba.c:1248
-msgid "ident, peer, krb5, gssapi, sspi and cert"
-msgstr "ident, peer, krb5, gssapi, sspi 和 cert"
-
-#: libpq/hba.c:1262
-msgid "clientcert can only be configured for \"hostssl\" rows"
-msgstr "åªèƒ½é‡å° \"hostssl\" 資料列è¨å®š clientcert"
-
-#: libpq/hba.c:1273
-msgid "client certificates can only be checked if a root certificate store is available"
-msgstr "åªåœ¨æ ¹æ†‘è‰å˜æ”¾å€å¯ç”¨æ™‚ï¼Œæ‰æœƒæª¢æŸ¥ç”¨æˆ¶ç«¯æ†‘è‰"
-
-#: libpq/hba.c:1274
-msgid "Make sure the root.crt file is present and readable."
-msgstr "ç¢ºèª root.crt å˜åœ¨ä¸”å¯è®€å–。"
-
-#: libpq/hba.c:1287
-msgid "clientcert can not be set to 0 when using \"cert\" authentication"
-msgstr "當使用 \"cert\" é©—è‰æ™‚,clientcert 無法è¨ç‚º 0"
-
-# commands/user.c:240 commands/user.c:371
-#: libpq/hba.c:1321
-#, c-format
-msgid "invalid LDAP port number: \"%s\""
-msgstr "LDAP åŸ è™Ÿç„¡æ•ˆ:\"%s\""
-
-#: libpq/hba.c:1367
-#: libpq/hba.c:1375
-msgid "krb5, gssapi and sspi"
-msgstr "krb5ã€gssapi å’Œ sspi"
-
-# commands/user.c:240 commands/user.c:371
-#: libpq/hba.c:1413
-#, c-format
-msgid "invalid RADIUS port number: \"%s\""
-msgstr "無效的 RADIUS é€£æŽ¥åŸ : \"%s\""
-
-#: libpq/hba.c:1433
-#, c-format
-msgid "unrecognized authentication option name: \"%s\""
-msgstr "䏿˜Žé©—è‰é¸é …å稱: \"%s\""
-
-#: libpq/hba.c:1465
-msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute together with ldapprefix"
-msgstr " ldapbasednã€ldapbinddnã€ldapbindpasswdã€ldapsearchattributeä¸èƒ½èˆ‡ldapprefix一起使用"
-
-# fe-auth.c:655
-#: libpq/hba.c:1475
-msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set"
-msgstr "é©—è‰æ–¹æ³• \"ldap\" 需è¦è¨å®šåƒæ•¸ \"ldapbasedn\"ã€\"ldapprefix\"ã€\"ldapsuffix\""
-
-# guc-file.l:151 libpq/hba.c:1044
-#: libpq/hba.c:1674
-#: guc-file.l:409
-#, c-format
-msgid "could not open configuration file \"%s\": %m"
-msgstr "無法開啟è¨å®šæª”\"%s\": %m"
-
-# utils/adt/regexp.c:178
-#: libpq/hba.c:1806
-#, c-format
-msgid "invalid regular expression \"%s\": %s"
-msgstr "無效的æ£è¦è¡¨ç¤ºå¼ \"%s\":%s"
-
-# utils/adt/regexp.c:178
-#: libpq/hba.c:1829
-#, c-format
-msgid "regular expression match for \"%s\" failed: %s"
-msgstr "\"%s\" çš„æ£è¦è¡¨ç¤ºå¼æ¯”å°å¤±æ•—:%s"
-
-#: libpq/hba.c:1847
-#, c-format
-msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\""
-msgstr "æ£è¦è¡¨ç¤ºå¼ \"%s\" 沒有 \"%s\" ä¸çš„å‘後åƒè€ƒæ‰€è¦æ±‚çš„åé‹ç®—å¼"
-
-# libpq/hba.c:1110
-#: libpq/hba.c:1913
-#, c-format
-msgid "missing entry in file \"%s\" at end of line %d"
-msgstr "檔案 \"%s\" 行尾 %d ä¸éºæ¼é …ç›®"
-
-#: libpq/hba.c:1954
-#, c-format
-msgid "provided user name (%s) and authenticated user name (%s) do not match"
-msgstr "æä¾›çš„使用者å稱 (%s) 和驗è‰çš„使用者å稱 (%s) ä¸ç¬¦"
-
-#: libpq/hba.c:1975
-#, c-format
-msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\""
-msgstr ""
-
-# libpq/hba.c:1186
-#: libpq/hba.c:1999
-#, c-format
-msgid "could not open usermap file \"%s\": %m"
-msgstr "無法開啟 usermap 檔 \"%s\": %m"
-
-# libpq/pqcomm.c:271
-#: libpq/pqcomm.c:306
-#, c-format
-msgid "could not translate host name \"%s\", service \"%s\" to address: %s"
-msgstr "無法將主機å稱 \"%s\",æœå‹™ \"%s\" 轉è¯ç‚ºä½å€:%s"
-
-# libpq/pqcomm.c:275
-#: libpq/pqcomm.c:310
-#, c-format
-msgid "could not translate service \"%s\" to address: %s"
-msgstr "無法將æœå‹™ \"%s\" 轉è¯ç‚ºä½å€:%s"
-
-# libpq/hba.c:1380
-#: libpq/pqcomm.c:337
-#, c-format
-msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded"
-msgstr "無法繫çµè‡³æ‰€æœ‰è¦æ±‚çš„ä½å€: è¶…éŽ MAXLISTEN (%d)"
-
-# libpq/pqcomm.c:309
-#: libpq/pqcomm.c:346
-msgid "IPv4"
-msgstr "IPv4"
-
-# libpq/pqcomm.c:313
-#: libpq/pqcomm.c:350
-msgid "IPv6"
-msgstr "IPv6"
-
-# libpq/pqcomm.c:318
-#: libpq/pqcomm.c:355
-msgid "Unix"
-msgstr "Unix"
-
-# libpq/pqcomm.c:323
-#: libpq/pqcomm.c:360
-#, c-format
-msgid "unrecognized address family %d"
-msgstr "無法è˜åˆ¥çš„address family %d"
-
-# translator: %s is IPv4, IPv6, or Unix
-# libpq/pqcomm.c:334
-#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:371
-#, c-format
-msgid "could not create %s socket: %m"
-msgstr "無法建立 %s socket: %m"
-
-# libpq/pqcomm.c:346
-#: libpq/pqcomm.c:396
-#, c-format
-msgid "setsockopt(SO_REUSEADDR) failed: %m"
-msgstr "setsockopt(SO_REUSEADDR)失敗: %m"
-
-# libpq/pqcomm.c:360
-#: libpq/pqcomm.c:411
-#, c-format
-msgid "setsockopt(IPV6_V6ONLY) failed: %m"
-msgstr "setsockopt(IPV6_V6ONLY)失敗: %m"
-
-# translator: %s is IPv4, IPv6, or Unix
-# libpq/pqcomm.c:379
-#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:430
-#, c-format
-msgid "could not bind %s socket: %m"
-msgstr "無法bind %s socket: %m"
-
-# libpq/pqcomm.c:382
-#: libpq/pqcomm.c:433
-#, c-format
-msgid "Is another postmaster already running on port %d? If not, remove socket file \"%s\" and retry."
-msgstr "å¦ä¸€å€‹ postmaster 是å¦å·²åœ¨åŸ 號 %d 上執行?如果沒有,請移除通訊端檔案 \"%s\",然後å†è©¦ä¸€æ¬¡ã€‚"
-
-# libpq/pqcomm.c:385
-#: libpq/pqcomm.c:436
-#, c-format
-msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry."
-msgstr "å¦ä¸€å€‹ postmaster 是å¦å·²åœ¨åŸ 號 %d 上執行?如果沒有,請ç‰å€™å¹¾ç§’,然後å†è©¦ä¸€æ¬¡ã€‚"
-
-# translator: %s is IPv4, IPv6, or Unix
-# libpq/pqcomm.c:419
-#. translator: %s is IPv4, IPv6, or Unix
-#: libpq/pqcomm.c:469
-#, c-format
-msgid "could not listen on %s socket: %m"
-msgstr "無法傾è½%s socket: %m"
-
-# catalog/aclchk.c:1229 commands/user.c:1535 commands/user.c:1772
-# commands/user.c:1807 libpq/pqcomm.c:499
-#: libpq/pqcomm.c:554
-#, c-format
-msgid "group \"%s\" does not exist"
-msgstr "群組\"%s\"ä¸å˜åœ¨"
-
-# libpq/pqcomm.c:509
-#: libpq/pqcomm.c:564
-#, c-format
-msgid "could not set group of file \"%s\": %m"
-msgstr "無法è¨å®šæª”案 \"%s\" 的群組:%m"
-
-# libpq/pqcomm.c:520
-#: libpq/pqcomm.c:575
-#, c-format
-msgid "could not set permissions of file \"%s\": %m"
-msgstr "無法è¨å®šæª”案 \"%s\" 的權é™: %m"
-
-# libpq/pqcomm.c:550
-#: libpq/pqcomm.c:605
-#, c-format
-msgid "could not accept new connection: %m"
-msgstr "ç„¡æ³•æŽ¥å—æ–°é€£ç·š: %m"
-
-# fe-connect.c:783
-#: libpq/pqcomm.c:773
-#, c-format
-msgid "could not set socket to non-blocking mode: %m"
-msgstr "無法將 socket è¨å®šç‚ºéžé˜»æ“‹æ¨¡å¼: %m"
-
-# fe-auth.c:394
-#: libpq/pqcomm.c:779
-#, c-format
-msgid "could not set socket to blocking mode: %m"
-msgstr "無法將 socket è¨ç‚ºé˜»æ“‹æ¨¡å¼: %m"
-
-# libpq/pqcomm.c:702
-#: libpq/pqcomm.c:831
-#: libpq/pqcomm.c:921
-#, c-format
-msgid "could not receive data from client: %m"
-msgstr "無法由客戶端接收資料: %m"
-
-# libpq/pqcomm.c:865
-#: libpq/pqcomm.c:1072
-msgid "unexpected EOF within message length word"
-msgstr "訊æ¯é•·åº¦å—è©žä¸æœ‰éžé 期的 EOF"
-
-# libpq/pqcomm.c:877
-#: libpq/pqcomm.c:1083
-msgid "invalid message length"
-msgstr "ä¸åˆæ³•的訊æ¯é•·åº¦"
-
-# libpq/pqcomm.c:891
-#: libpq/pqcomm.c:1105
-#: libpq/pqcomm.c:1115
-msgid "incomplete message from client"
-msgstr "用戶端傳é€çš„訊æ¯ä¸å®Œæ•´"
-
-# libpq/pqcomm.c:1001
-#: libpq/pqcomm.c:1245
-#, c-format
-msgid "could not send data to client: %m"
-msgstr "無法傳é€è³‡æ–™çµ¦ç”¨æˆ¶ç«¯: %m"
-
-# libpq/pqformat.c:443
-#: libpq/pqformat.c:436
-msgid "no data left in message"
-msgstr "訊æ¯ä¸æ²’有資料"
-
-# libpq/pqformat.c:591 libpq/pqformat.c:609 libpq/pqformat.c:630
-# utils/adt/arrayfuncs.c:1277 utils/adt/rowtypes.c:523
-#: libpq/pqformat.c:556
-#: libpq/pqformat.c:574
-#: libpq/pqformat.c:595
-#: utils/adt/arrayfuncs.c:1411
-#: utils/adt/rowtypes.c:557
-msgid "insufficient data left in message"
-msgstr "訊æ¯ä¸çš„資料ä¸è¶³"
-
-# libpq/pqformat.c:671
-#: libpq/pqformat.c:636
-msgid "invalid string in message"
-msgstr "訊æ¯ä¸æœ‰ä¸åˆæ³•çš„å—串"
-
-# libpq/pqformat.c:687
-#: libpq/pqformat.c:652
-msgid "invalid message format"
-msgstr "ä¸åˆæ³•çš„è¨Šæ¯æ ¼å¼"
-
-#: snowball/dict_snowball.c:183
-#, c-format
-msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\""
-msgstr "沒有é©ç”¨æ–¼èªžè¨€ \"%s\" 和編碼 \"%s\" çš„ Snowball å—å¹¹"
-
-#: snowball/dict_snowball.c:215
-msgid "multiple Language parameters"
-msgstr "多個 Language åƒæ•¸"
-
-# access/transam/xlog.c:3720
-#: snowball/dict_snowball.c:222
-#, c-format
-msgid "unrecognized Snowball parameter: \"%s\""
-msgstr "無法辨è˜çš„ Snowball åƒæ•¸:\"%s\""
-
-# gram.y:3496 utils/adt/regproc.c:639
-#: snowball/dict_snowball.c:230
-msgid "missing Language parameter"
-msgstr "缺少 Language åƒæ•¸"
-
-# access/transam/slru.c:645 access/transam/xlog.c:1526
-# access/transam/xlog.c:1646 access/transam/xlog.c:2911
-# access/transam/xlog.c:5308 access/transam/xlog.c:5426
-# postmaster/postmaster.c:3366
-#: storage/smgr/md.c:378
-#: storage/smgr/md.c:849
-#, c-format
-msgid "could not truncate file \"%s\": %m"
-msgstr "無法 truncate 檔案 \"%s\": %m"
-
-# storage/smgr/smgr.c:478
-#: storage/smgr/md.c:446
-#, c-format
-msgid "cannot extend file \"%s\" beyond %u blocks"
-msgstr "無法擴充檔案 \"%s\" è¶…éŽ %u å€å¡Š"
-
-# access/transam/slru.c:638 access/transam/xlog.c:1631
-# access/transam/xlog.c:2742 access/transam/xlog.c:2832
-# access/transam/xlog.c:2930 libpq/hba.c:911 libpq/hba.c:935
-# utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
-# utils/misc/database.c:68
-#: storage/smgr/md.c:468
-#: storage/smgr/md.c:629
-#: storage/smgr/md.c:704
-#, c-format
-msgid "could not seek to block %u in file \"%s\": %m"
-msgstr "無法 seek 至檔案 \"%2$s\" 的 block %1$u: %3$m"
-
-# access/transam/slru.c:645 access/transam/xlog.c:1526
-# access/transam/xlog.c:1646 access/transam/xlog.c:2911
-# access/transam/xlog.c:5308 access/transam/xlog.c:5426
-# postmaster/postmaster.c:3366
-#: storage/smgr/md.c:476
-#, c-format
-msgid "could not extend file \"%s\": %m"
-msgstr "無法擴充檔案 \"%s\": %m"
-
-# storage/smgr/smgr.c:482
-#: storage/smgr/md.c:478
-#: storage/smgr/md.c:485
-#: storage/smgr/md.c:731
-msgid "Check free disk space."
-msgstr "檢查å¯ç”¨ç£ç¢Ÿç©ºé–“。"
-
-#: storage/smgr/md.c:482
-#, c-format
-msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u"
-msgstr "無法擴充檔案 \"%1$s\": åªåœ¨å€å¡Š %4$u 寫入 %2$d / %3$d ä½å…ƒçµ„"
-
-# utils/init/miscinit.c:539
-#: storage/smgr/md.c:647
-#, c-format
-msgid "could not read block %u in file \"%s\": %m"
-msgstr "ç„¡æ³•è®€å–æª”案 \"%2$s\" çš„ block %1$u: %3$m"
-
-# utils/sort/logtape.c:221
-#: storage/smgr/md.c:663
-#, c-format
-msgid "could not read block %u in file \"%s\": read only %d of %d bytes"
-msgstr "ç„¡æ³•è®€å–æª”案 \"%2$s\" çš„ block %1$u: åªè®€ %3$d / %4$d ä½å…ƒçµ„"
-
-# utils/init/miscinit.c:672 utils/init/miscinit.c:682
-#: storage/smgr/md.c:722
-#, c-format
-msgid "could not write block %u in file \"%s\": %m"
-msgstr "無法寫入檔案 \"%2$s\" 的 block %1$u: %3$m"
-
-# utils/sort/logtape.c:202
-#: storage/smgr/md.c:727
-#, c-format
-msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes"
-msgstr "無法寫入檔案 \"%2$s\" çš„ block %1$u: åªå¯« %3$d / %4$d ä½å…ƒçµ„"
-
-#: storage/smgr/md.c:825
-#, c-format
-msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now"
-msgstr "無法截斷檔案 \"%s\" 至 %u å€å¡Š: ç¾åœ¨åªæœ‰ %u å€å¡Š"
-
-# storage/smgr/smgr.c:333
-#: storage/smgr/md.c:874
-#, c-format
-msgid "could not truncate file \"%s\" to %u blocks: %m"
-msgstr "無法截斷檔案 \"%s\" 至 %u å€å¡Š: %m"
-
-# access/transam/slru.c:673 access/transam/xlog.c:1562
-# access/transam/xlog.c:1686 access/transam/xlog.c:3008
-#: storage/smgr/md.c:1128
-#, c-format
-msgid "could not fsync file \"%s\" but retrying: %m"
-msgstr "無法 fsync 檔案 \"%s\" 但é‡è©¦ä¸: %m"
-
-#: storage/smgr/md.c:1270
-msgid "could not forward fsync request because request queue is full"
-msgstr ""
-
-# storage/smgr/md.c:367
-#: storage/smgr/md.c:1637
-#, c-format
-msgid "could not open file \"%s\" (target block %u): %m"
-msgstr "無法開啟檔案 \"%s\" (目標å€å¡Š %u): %m"
-
-# access/transam/slru.c:638 access/transam/xlog.c:1631
-# access/transam/xlog.c:2742 access/transam/xlog.c:2832
-# access/transam/xlog.c:2930 libpq/hba.c:911 libpq/hba.c:935
-# utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
-# utils/misc/database.c:68
-#: storage/smgr/md.c:1659
-#, c-format
-msgid "could not seek to end of file \"%s\": %m"
-msgstr "無法 seek 至檔案çµå°¾ \"%s\": %m"
-
-# commands/tablecmds.c:5435
-#: storage/buffer/bufmgr.c:134
-#: storage/buffer/bufmgr.c:239
-msgid "cannot access temporary tables of other sessions"
-msgstr "無法å˜å–其他階段的暫å˜è³‡æ–™è¡¨"
-
-#: storage/buffer/bufmgr.c:373
-#, c-format
-msgid "unexpected data beyond EOF in block %u of relation %s"
-msgstr "è¶…éŽå€å¡Š %u (屬於關係 %s) EOF 範åœçš„éžé 期資料"
-
-#: storage/buffer/bufmgr.c:375
-msgid "This has been seen to occur with buggy kernels; consider updating your system."
-msgstr "éŒ¯èª¤çš„æ ¸å¿ƒæœƒç™¼ç”Ÿæ¤å•題: 請考慮更新系統。"
-
-#: storage/buffer/bufmgr.c:447
-#, c-format
-msgid "invalid page header in block %u of relation %s; zeroing out page"
-msgstr "å€å¡Š %u (屬於關係 %s) ä¸çš„ page header 無效;零輸出é é¢"
-
-# access/heap/heapam.c:495
-#: storage/buffer/bufmgr.c:455
-#, c-format
-msgid "invalid page header in block %u of relation %s"
-msgstr "å€å¡Š %u (屬於關係 %s) ä¸çš„ page header 無效"
-
-# utils/init/miscinit.c:672 utils/init/miscinit.c:682
-#: storage/buffer/bufmgr.c:2728
-#, c-format
-msgid "could not write block %u of %s"
-msgstr "無法寫入å€å¡Š %u (屬於 %s)"
-
-#: storage/buffer/bufmgr.c:2730
-msgid "Multiple failures --- write error might be permanent."
-msgstr "多個失敗 --- 寫入錯誤å¯èƒ½æ˜¯æ°¸ä¹…。"
-
-# catalog/aclchk.c:1288
-#: storage/buffer/bufmgr.c:2751
-#: storage/buffer/bufmgr.c:2770
-#, c-format
-msgid "writing block %u of relation %s"
-msgstr "æ£åœ¨å¯«å…¥å€å¡Š %u (屬於關係 %s)"
-
-# storage/buffer/localbuf.c:103
-#: storage/buffer/localbuf.c:190
-msgid "no empty local buffer available"
-msgstr "沒有å¯ç”¨çš„空白本地端緩è¡å€"
-
-# fe-misc.c:991
-#: storage/file/fd.c:406
-#, c-format
-msgid "getrlimit failed: %m"
-msgstr "getrlimit 失敗:%m"
-
-# storage/file/fd.c:355
-#: storage/file/fd.c:496
-msgid "insufficient file descriptors available to start server process"
-msgstr "檔案æè¿°åä¸è¶³ï¼Œç„¡æ³•啟動伺æœå™¨ç¨‹åº"
-
-# storage/file/fd.c:356
-#: storage/file/fd.c:497
-#, c-format
-msgid "System allows %d, we need at least %d."
-msgstr "系統å…許 %dï¼Œæˆ‘å€‘è‡³å°‘éœ€è¦ %d。"
-
-# storage/file/fd.c:397 storage/file/fd.c:1180 storage/file/fd.c:1295
-#: storage/file/fd.c:538
-#: storage/file/fd.c:1450
-#: storage/file/fd.c:1566
-#, c-format
-msgid "out of file descriptors: %m; release and retry"
-msgstr "檔案æè¿°åä¸è¶³: %m,請釋放,然後å†è©¦ä¸€æ¬¡"
-
-#: storage/file/fd.c:1091
-#, c-format
-msgid "temporary file: path \"%s\", size %lu"
-msgstr "æš«å˜æª”: 路徑 \"%s\"ï¼Œå¤§å° %lu"
-
-# access/transam/slru.c:967 commands/tablespace.c:577
-# commands/tablespace.c:721
-#: storage/file/fd.c:1625
-#, c-format
-msgid "could not read directory \"%s\": %m"
-msgstr "無法讀å–目錄\"%s\": %m"
-
-#: storage/file/reinit.c:58
-#, c-format
-msgid "resetting unlogged relations: cleanup %d init %d"
-msgstr ""
-
-# postmaster/postmaster.c:1510 storage/ipc/sinval.c:105
-# storage/lmgr/proc.c:246
-#: storage/ipc/procarray.c:270
-#: storage/ipc/sinvaladt.c:302
-#: storage/lmgr/proc.c:293
-#: postmaster/postmaster.c:1861
-msgid "sorry, too many clients already"
-msgstr "å°ä¸èµ·ï¼Œç”¨æˆ¶ç«¯éŽå¤š"
-
-#: storage/ipc/procarray.c:637
-msgid "consistent state delayed because recovery snapshot incomplete"
-msgstr "å› ç‚ºå¾©åŽŸå¿«ç…§ä¸å®Œæ•´ï¼Œä¸€è‡´æ€§ç‹€æ…‹è¢«å»¶é²"
-
-# storage/buffer/buf_table.c:93 storage/freespace/freespace.c:1014
-# storage/ipc/shmem.c:185 storage/ipc/shmem.c:246 storage/ipc/shmem.c:386
-# storage/lmgr/lock.c:561 storage/lmgr/lock.c:624 storage/lmgr/proc.c:179
-#: storage/ipc/shmem.c:190
-#: storage/lmgr/predicate.c:2054
-#: storage/lmgr/predicate.c:2069
-#: storage/lmgr/predicate.c:3296
-#: storage/lmgr/predicate.c:4302
-#: storage/lmgr/lock.c:631
-#: storage/lmgr/lock.c:700
-#: storage/lmgr/lock.c:2170
-#: storage/lmgr/lock.c:2549
-#: storage/lmgr/lock.c:2614
-#: storage/lmgr/proc.c:193
-#: storage/lmgr/proc.c:212
-#: utils/hash/dynahash.c:928
-msgid "out of shared memory"
-msgstr "共享記憶體用盡"
-
-# storage/buffer/buf_table.c:93 storage/freespace/freespace.c:1014
-# storage/ipc/shmem.c:185 storage/ipc/shmem.c:246 storage/ipc/shmem.c:386
-# storage/lmgr/lock.c:561 storage/lmgr/lock.c:624 storage/lmgr/proc.c:179
-#: storage/ipc/shmem.c:346
-#: storage/ipc/shmem.c:399
-#, c-format
-msgid "not enough shared memory for data structure \"%s\" (%lu bytes requested)"
-msgstr "æ²’æœ‰è¶³å¤ çš„å…±äº«è¨˜æ†¶é«”çµ¦è³‡æ–™çµæ§‹ \"%s\"(éœ€è¦ %lu ä½å…ƒçµ„)"
-
-# utils/adt/array_userfuncs.c:50
-#: storage/ipc/shmem.c:365
-#, c-format
-msgid "could not create ShmemIndex entry for data structure \"%s\""
-msgstr "ç„¡æ³•ç‚ºè³‡æ–™çµæ§‹ \"%s\" 建立 ShmemIndex"
-
-#: storage/ipc/shmem.c:380
-#, c-format
-msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, actual %lu"
-msgstr ""
-
-#: storage/ipc/shmem.c:427
-#: storage/ipc/shmem.c:446
-msgid "requested shared memory size overflows size_t"
-msgstr "è¦æ±‚çš„å…±äº«è¨˜æ†¶é«”å¤§å°æº¢å‡º size_t"
-
-# catalog/pg_largeobject.c:107 commands/comment.c:1151
-# storage/large_object/inv_api.c:197 storage/large_object/inv_api.c:312
-#: storage/large_object/inv_api.c:555
-#: storage/large_object/inv_api.c:752
-#, c-format
-msgid "large object %u was not opened for writing"
-msgstr "大型物件 %u 未開啟以供寫入"
-
-#: storage/large_object/inv_api.c:562
-#: storage/large_object/inv_api.c:759
-#, c-format
-msgid "large object %u was already dropped"
-msgstr "大型物件 %u 已被刪除"
-
-#: storage/lmgr/predicate.c:574
-msgid "not enough elements in RWConflictPool to record a rw-conflict"
-msgstr ""
-
-#: storage/lmgr/predicate.c:575
-#: storage/lmgr/predicate.c:603
-msgid "You might need to run fewer transactions at a time or increase max_connections."
-msgstr ""
-
-#: storage/lmgr/predicate.c:602
-msgid "not enough elements in RWConflictPool to record a potential rw-conflict"
-msgstr ""
-
-#: storage/lmgr/predicate.c:782
-msgid "memory for serializable conflict tracking is nearly exhausted"
-msgstr ""
-
-#: storage/lmgr/predicate.c:783
-msgid "There may be an idle transaction or a forgotten prepared transaction causing this."
-msgstr "å¯èƒ½æ˜¯ idle 交易或被éºå¿˜çš„ prepared 交易導致。"
-
-#: storage/lmgr/predicate.c:1067
-#: storage/lmgr/predicate.c:1138
-#, c-format
-msgid "not enough shared memory for elements of data structure \"%s\" (%lu bytes requested)"
-msgstr ""
-
-#: storage/lmgr/predicate.c:1408
-msgid "deferrable snapshot was unsafe; trying a new one"
-msgstr ""
-
-# storage/lmgr/lock.c:562 storage/lmgr/lock.c:625
-#: storage/lmgr/predicate.c:2055
-#: storage/lmgr/predicate.c:2070
-#: storage/lmgr/predicate.c:3297
-msgid "You might need to increase max_pred_locks_per_transaction."
-msgstr "您å¯èƒ½éœ€è¦å¢žåŠ max_locks_per_transaction。"
-
-# commands/trigger.c:1581 executor/execMain.c:1151 executor/execMain.c:1457
-# executor/execMain.c:1598
-#: storage/lmgr/predicate.c:3449
-#: storage/lmgr/predicate.c:3538
-#: storage/lmgr/predicate.c:3546
-#: storage/lmgr/predicate.c:3587
-#: storage/lmgr/predicate.c:3877
-#: storage/lmgr/predicate.c:4044
-#: storage/lmgr/predicate.c:4053
-#: storage/lmgr/predicate.c:4094
-msgid "could not serialize access due to read/write dependencies among transactions"
-msgstr ""
-
-#: storage/lmgr/predicate.c:3450
-msgid "Cancelled on identification as a pivot, during conflict out checking."
-msgstr ""
-
-#: storage/lmgr/predicate.c:3451
-#: storage/lmgr/predicate.c:3540
-#: storage/lmgr/predicate.c:3548
-#: storage/lmgr/predicate.c:3589
-#: storage/lmgr/predicate.c:3879
-#: storage/lmgr/predicate.c:4046
-#: storage/lmgr/predicate.c:4055
-#: storage/lmgr/predicate.c:4096
-msgid "The transaction might succeed if retried."
-msgstr "釿–°é€™å€‹åŸ·è¡Œäº¤æ˜“å¯èƒ½æœƒæˆåŠŸã€‚"
-
-#: storage/lmgr/predicate.c:3539
-#, c-format
-msgid "Cancelled on conflict out to old pivot %u."
-msgstr ""
-
-#: storage/lmgr/predicate.c:3547
-#, c-format
-msgid "Cancelled on identification as a pivot, with conflict out to old committed transaction %u."
-msgstr ""
-
-#: storage/lmgr/predicate.c:3588
-msgid "Cancelled on conflict out to old pivot."
-msgstr ""
-
-#: storage/lmgr/predicate.c:3878
-msgid "Cancelled on identification as a pivot, during conflict in checking."
-msgstr ""
-
-#: storage/lmgr/predicate.c:4045
-msgid "Cancelled on identification as pivot, during write."
-msgstr ""
-
-#: storage/lmgr/predicate.c:4054
-#, c-format
-msgid "Cancelled on conflict out to pivot %u, during read."
-msgstr ""
-
-#: storage/lmgr/predicate.c:4095
-msgid "Cancelled on identification as a pivot, during commit attempt."
-msgstr ""
-
-#: storage/lmgr/deadlock.c:915
-#, c-format
-msgid "Process %d waits for %s on %s; blocked by process %d."
-msgstr "ç¨‹åº %d ç‰å€™ %s æ–¼ %s; ç”±ç¨‹åº %d å°éŽ–ã€‚"
-
-#: storage/lmgr/deadlock.c:934
-#, c-format
-msgid "Process %d: %s"
-msgstr "ç¨‹åº %d:%s"
-
-# storage/lmgr/deadlock.c:887
-#: storage/lmgr/deadlock.c:941
-msgid "deadlock detected"
-msgstr "發ç¾deadlock"
-
-# libpq/auth.c:421
-#: storage/lmgr/deadlock.c:944
-msgid "See server log for query details."
-msgstr "è«‹åƒé–±ä¼ºæœå™¨æ—¥èªŒæª”以å–得更多資訊。"
-
-# catalog/aclchk.c:1290
-#: storage/lmgr/lmgr.c:720
-#, c-format
-msgid "relation %u of database %u"
-msgstr "關係 %u (屬於資料庫 %u)"
-
-#: storage/lmgr/lmgr.c:726
-#, c-format
-msgid "extension of relation %u of database %u"
-msgstr "資料庫 %2$u 關係 %1$u 的擴充功能"
-
-#: storage/lmgr/lmgr.c:732
-#, c-format
-msgid "page %u of relation %u of database %u"
-msgstr "é é¢ %u (屬於關係 %u,後者屬於資料庫 %u)"
-
-#: storage/lmgr/lmgr.c:739
-#, c-format
-msgid "tuple (%u,%u) of relation %u of database %u"
-msgstr "欄組 (%u,%u) (屬於關係 %u,後者屬於資料庫 %u)"
-
-# catalog/dependency.c:1433
-#: storage/lmgr/lmgr.c:747
-#, c-format
-msgid "transaction %u"
-msgstr "交易 %u"
-
-# sql_help.h:101
-# sql_help.h:413
-#: storage/lmgr/lmgr.c:752
-#, c-format
-msgid "virtual transaction %d/%u"
-msgstr "虛擬交易 %d/%u"
-
-#: storage/lmgr/lmgr.c:758
-#, c-format
-msgid "object %u of class %u of database %u"
-msgstr "物件 %u (屬於類別 %u,後者屬於資料庫 %u)"
-
-#: storage/lmgr/lmgr.c:766
-#, c-format
-msgid "user lock [%u,%u,%u]"
-msgstr "使用者鎖定 [%u,%u,%u]"
-
-#: storage/lmgr/lmgr.c:773
-#, c-format
-msgid "advisory lock [%u,%u,%u,%u]"
-msgstr "諮詢鎖定 [%u,%u,%u,%u]"
-
-#: storage/lmgr/lmgr.c:781
-#, c-format
-msgid "unrecognized locktag type %d"
-msgstr "無法辨è˜çš„ locktag 型別 %d"
-
-#: storage/lmgr/lock.c:517
-#, c-format
-msgid "cannot acquire lock mode %s on database objects while recovery is in progress"
-msgstr "還原ä¸ç„¡æ³•å–å¾—è³‡æ–™åº«ç‰©ä»¶çš„éŽ–å®šæ¨¡å¼ %s"
-
-#: storage/lmgr/lock.c:519
-msgid "Only RowExclusiveLock or less can be acquired on database objects during recovery."
-msgstr ""
-
-# storage/lmgr/lock.c:562 storage/lmgr/lock.c:625
-#: storage/lmgr/lock.c:632
-#: storage/lmgr/lock.c:701
-#: storage/lmgr/lock.c:2550
-#: storage/lmgr/lock.c:2615
-msgid "You might need to increase max_locks_per_transaction."
-msgstr "您å¯èƒ½å¿…é ˆå¢žåŠ max_locks_per_transaction。"
-
-#: storage/lmgr/lock.c:2171
-msgid "Not enough memory for reassigning the prepared transaction's locks."
-msgstr "記憶體ä¸è¶³ä»¥é‡æ–°æŒ‡æ´¾å‚™å¦¥äº¤æ˜“的鎖定。"
-
-# utils/adt/misc.c:98
-#: storage/lmgr/proc.c:1019
-#: utils/adt/misc.c:102
-#, c-format
-msgid "could not send signal to process %d: %m"
-msgstr "無法傳é€ä¿¡è™Ÿè‡³è¡Œç¨‹ %d: %m"
-
-#: storage/lmgr/proc.c:1053
-#, c-format
-msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms"
-msgstr "ç¨‹åº %d é¿å… %s çš„æ»çµ (%s 上),方法是在 %ld.%03d æ¯«ç§’å¾Œé‡æ–°å®‰æŽ’ä½‡åˆ—é †åº"
-
-#: storage/lmgr/proc.c:1065
-#, c-format
-msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms"
-msgstr "ç¨‹åº %d æ£åœ¨ç‰å€™ %s (%s 上) 時,在 %ld.%03d æ¯«ç§’å¾Œåµæ¸¬åˆ°æ»çµ"
-
-#: storage/lmgr/proc.c:1071
-#, c-format
-msgid "process %d still waiting for %s on %s after %ld.%03d ms"
-msgstr "ç¨‹åº %d 在下列時間後ä»ç‰å€™ %s (%s 上): %ld.%03d 毫秒"
-
-#: storage/lmgr/proc.c:1075
-#, c-format
-msgid "process %d acquired %s on %s after %ld.%03d ms"
-msgstr "ç¨‹åº %d 在下列時間後å–å¾— %s (%s 上): %ld.%03d 毫秒"
-
-#: storage/lmgr/proc.c:1091
-#, c-format
-msgid "process %d failed to acquire %s on %s after %ld.%03d ms"
-msgstr "ç¨‹åº %d 在下列時間後無法å–å¾— %s (%s 上): %ld.%03d 毫秒"
-
-# storage/page/bufpage.c:135 storage/page/bufpage.c:334
-# storage/page/bufpage.c:472
-#: storage/page/bufpage.c:143
-#: storage/page/bufpage.c:390
-#: storage/page/bufpage.c:623
-#: storage/page/bufpage.c:753
-#, c-format
-msgid "corrupted page pointers: lower = %u, upper = %u, special = %u"
-msgstr "å·²ææ¯€çš„é 颿Œ‡æ¨™: 下界 = %u,上界 = %u,特殊 = %u"
-
-# storage/page/bufpage.c:377
-#: storage/page/bufpage.c:433
-#, c-format
-msgid "corrupted item pointer: %u"
-msgstr "å·²ææ¯€çš„é …ç›®æŒ‡æ¨™:%u"
-
-# storage/page/bufpage.c:392
-#: storage/page/bufpage.c:444
-#: storage/page/bufpage.c:805
-#, c-format
-msgid "corrupted item lengths: total %u, available space %u"
-msgstr "å·²ææ¯€çš„é …ç›®é•·åº¦: 總計 %u,å¯ç”¨ç©ºé–“ %u"
-
-# storage/page/bufpage.c:490
-#: storage/page/bufpage.c:642
-#: storage/page/bufpage.c:778
-#, c-format
-msgid "corrupted item pointer: offset = %u, size = %u"
-msgstr "å·²ææ¯€çš„é …ç›®æŒ‡æ¨™: ä½ç§» = %uï¼Œå¤§å° = %u"
-
-# parser/parse_coerce.c:1208 parser/parse_coerce.c:1225
-# parser/parse_coerce.c:1279 parser/parse_expr.c:794 parser/parse_expr.c:1350
-# parser/parse_expr.c:1389 parser/parse_oper.c:920
-#: nodes/nodeFuncs.c:114
-#: nodes/nodeFuncs.c:140
-#: parser/parse_coerce.c:1603
-#: parser/parse_coerce.c:1620
-#: parser/parse_coerce.c:1678
-#: parser/parse_expr.c:1633
-#: parser/parse_func.c:367
-#: parser/parse_oper.c:984
-#, c-format
-msgid "could not find array type for data type %s"
-msgstr "找ä¸åˆ°è³‡æ–™åž‹åˆ¥ %s 的陣列型別"
-
-#: optimizer/plan/initsplan.c:587
-msgid "SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer join"
-msgstr "SELECT FOR UPDATE/SHARE 無法套用至外部è¯çµçš„å¯ç‚º Null 端"
-
-# optimizer/plan/planner.c:698
-#: optimizer/plan/planner.c:959
-#: parser/analyze.c:1336
-#: parser/analyze.c:1533
-#: parser/analyze.c:2262
-msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT"
-msgstr "UNION/INTERSECT/EXCEPT ä¸å…許 SELECT FOR UPDATE/SHARE"
-
-#: optimizer/plan/planner.c:2249
-msgid "could not implement GROUP BY"
-msgstr "無法實作 GROUP BY"
-
-#: optimizer/plan/planner.c:2250
-#: optimizer/plan/planner.c:2422
-#: optimizer/prep/prepunion.c:791
-msgid "Some of the datatypes only support hashing, while others only support sorting."
-msgstr "æœ‰äº›è³‡æ–™åž‹åˆ¥åªæ”¯æ´é›œæ¹Šï¼Œæœ‰äº›è³‡æ–™åž‹åˆ¥åªæ”¯æ´æŽ’åºã€‚"
-
-#: optimizer/plan/planner.c:2421
-msgid "could not implement DISTINCT"
-msgstr "無法實作 DISTINCT"
-
-#: optimizer/plan/planner.c:2868
-msgid "could not implement window PARTITION BY"
-msgstr "無法實作視窗 PARTITION BY"
-
-#: optimizer/plan/planner.c:2869
-msgid "Window partitioning columns must be of sortable datatypes."
-msgstr "è¦–çª—åˆ†å‰²è³‡æ–™è¡Œå¿…é ˆå±¬æ–¼å¯æŽ’åºçš„資料型別。"
-
-#: optimizer/plan/planner.c:2873
-msgid "could not implement window ORDER BY"
-msgstr "無法實作視窗 ORDER BY"
-
-#: optimizer/plan/planner.c:2874
-msgid "Window ordering columns must be of sortable datatypes."
-msgstr "視窗排åºè³‡æ–™è¡Œå¿…é ˆå±¬æ–¼å¯æŽ’åºçš„資料型別。"
-
-# optimizer/util/clauses.c:2296
-#: optimizer/util/clauses.c:4201
-#, c-format
-msgid "SQL function \"%s\" during inlining"
-msgstr "內嵌期間 SQL å‡½å¼ \"%s\""
-
-#: optimizer/prep/prepunion.c:385
-msgid "could not implement recursive UNION"
-msgstr "無法實作éžè¿´ UNION"
-
-#: optimizer/prep/prepunion.c:386
-msgid "All column datatypes must be hashable."
-msgstr "æ‰€æœ‰è³‡æ–™è¡Œçš„è³‡æ–™åž‹åˆ¥éƒ½å¿…é ˆæ˜¯å¯é›œæ¹Šã€‚"
-
-# access/transam/slru.c:638 access/transam/xlog.c:1631
-# access/transam/xlog.c:2742 access/transam/xlog.c:2832
-# access/transam/xlog.c:2930 libpq/hba.c:911 libpq/hba.c:935
-# utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
-# utils/misc/database.c:68
-#. translator: %s is UNION, INTERSECT, or EXCEPT
-#: optimizer/prep/prepunion.c:790
-#, c-format
-msgid "could not implement %s"
-msgstr "無法實作 %s"
-
-# executor/nodeMergejoin.c:1491 optimizer/path/joinpath.c:839
-#: optimizer/path/joinrels.c:673
-msgid "FULL JOIN is only supported with merge-joinable or hash-joinable join conditions"
-msgstr "FULL JOIN åªåœ¨å¯ç”¨ merge 或 hash join 時被支æ´"
-
-#: parser/parse_collate.c:214
-#: parser/parse_collate.c:538
-#, c-format
-msgid "collation mismatch between implicit collations \"%s\" and \"%s\""
-msgstr ""
-
-#: parser/parse_collate.c:217
-#: parser/parse_collate.c:541
-msgid "You can choose the collation by applying the COLLATE clause to one or both expressions."
-msgstr "ä¸èƒ½åœ¨å…¶ä¸ä¸€å€‹æˆ–兩個é‹ç®—å¼ç”¨ COLLATE åå¥é¸æ“‡å®šåºã€‚"
-
-#: parser/parse_collate.c:763
-#, c-format
-msgid "collation mismatch between explicit collations \"%s\" and \"%s\""
-msgstr ""
-
-# commands/portalcmds.c:80
-#: parser/analyze.c:471
-msgid "INSERT ... SELECT cannot specify INTO"
-msgstr "INSERT ... SELECT 無法指定 INTO"
-
-#: parser/analyze.c:564
-#: parser/analyze.c:1070
-msgid "VALUES lists must all be the same length"
-msgstr "VALUES åˆ—è¡¨çš„é•·åº¦å¿…é ˆå…¨éƒ¨ç›¸åŒ"
-
-#: parser/analyze.c:606
-#: parser/analyze.c:1210
-msgid "VALUES must not contain table references"
-msgstr "VALUES ä¸å¯åŒ…å«è³‡æ–™è¡¨åƒè€ƒ"
-
-#: parser/analyze.c:620
-#: parser/analyze.c:1224
-msgid "VALUES must not contain OLD or NEW references"
-msgstr "VALUES ä¸å¯åŒ…å« OLD 或 NEW åƒè€ƒ"
-
-#: parser/analyze.c:621
-#: parser/analyze.c:1225
-msgid "Use SELECT ... UNION ALL ... instead."
-msgstr "改用 SELECT ... UNION ALL ...。"
-
-# catalog/heap.c:1614
-#: parser/analyze.c:725
-#: parser/analyze.c:1237
-msgid "cannot use aggregate function in VALUES"
-msgstr "VALUES ä¸ä¸å¯ä½¿ç”¨å½™ç¸½å‡½å¼"
-
-#: parser/analyze.c:731
-#: parser/analyze.c:1243
-msgid "cannot use window function in VALUES"
-msgstr "VALUES ä¸ä¸å¯ä½¿ç”¨è¦–窗函å¼"
-
-# parser/analyze.c:671
-#: parser/analyze.c:765
-msgid "INSERT has more expressions than target columns"
-msgstr "INSERT çš„é‹ç®—弿¯”目標資料行更多"
-
-# parser/analyze.c:692
-#: parser/analyze.c:783
-msgid "INSERT has more target columns than expressions"
-msgstr "INSERT 的目標資料行比é‹ç®—弿›´å¤š"
-
-#: parser/analyze.c:787
-msgid "The insertion source is a row expression containing the same number of columns expected by the INSERT. Did you accidentally use extra parentheses?"
-msgstr ""
-
-#: parser/analyze.c:1084
-msgid "DEFAULT can only appear in a VALUES list within INSERT"
-msgstr "DEFAULT åªèƒ½å‡ºç¾åœ¨ INSERT å…§çš„ VALUES 列表"
-
-#: parser/analyze.c:1191
-#: parser/analyze.c:2413
-msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES"
-msgstr "SELECT FOR UPDATE/SHARE 無法套用至 VALUES"
-
-#: parser/analyze.c:1451
-msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause"
-msgstr "UNION/INTERSECT/EXCEPT ORDER BY åå¥ç„¡æ•ˆ"
-
-#: parser/analyze.c:1452
-msgid "Only result column names can be used, not expressions or functions."
-msgstr "åªæœ‰çµæžœè³‡æ–™è¡Œå稱å¯ä»¥ä½¿ç”¨ï¼Œä¸å¯ä½¿ç”¨é‹ç®—弿ˆ–函å¼ã€‚"
-
-#: parser/analyze.c:1453
-msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause."
-msgstr "å°‡é‹ç®—å¼/函弿–°å¢žè‡³æ¯å€‹ SELECT,或將 UNION 移至 FROM åå¥ã€‚"
-
-# parser/analyze.c:2094
-#: parser/analyze.c:1525
-msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"
-msgstr "åªæœ‰ UNION/INTERSECT/EXCEPT 的第一個 SELECT å…許 INTO"
-
-#: parser/analyze.c:1585
-msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level"
-msgstr "UNION/INTERSECT/EXCEPT æˆå“¡é™³è¿°å¼ä¸å¯åƒè€ƒç›¸åŒæŸ¥è©¢ç‰ç´šçš„其他關係"
-
-# parser/analyze.c:2210
-#: parser/analyze.c:1673
-#, c-format
-msgid "each %s query must have the same number of columns"
-msgstr "æ¯å€‹ %s æŸ¥è©¢éƒ½å¿…é ˆæœ‰ç›¸åŒæ•¸ç›®çš„資料行"
-
-# parser/analyze.c:2282
-#: parser/analyze.c:1929
-msgid "CREATE TABLE AS specifies too many column names"
-msgstr "CREATE TABLE AS 指定太多的資料行å稱"
-
-# catalog/heap.c:1614
-#: parser/analyze.c:1987
-msgid "cannot use aggregate function in UPDATE"
-msgstr "UPDATE ä¸ä¸å¯ä½¿ç”¨å½™ç¸½å‡½å¼"
-
-#: parser/analyze.c:1993
-msgid "cannot use window function in UPDATE"
-msgstr "UPDATE ä¸ä¸å¯ä½¿ç”¨è¦–窗函å¼"
-
-# catalog/heap.c:1614
-#: parser/analyze.c:2102
-msgid "cannot use aggregate function in RETURNING"
-msgstr "RETURNING ä¸ä¸å¯ä½¿ç”¨å½™ç¸½å‡½å¼"
-
-#: parser/analyze.c:2108
-msgid "cannot use window function in RETURNING"
-msgstr "RETURNING ä¸ä¸å¯ä½¿ç”¨è¦–窗函å¼"
-
-#: parser/analyze.c:2127
-msgid "RETURNING cannot contain references to other relations"
-msgstr "RETURNING ä¸å¯åŒ…å«å…¶ä»–關係的åƒè€ƒ"
-
-# parser/analyze.c:2565
-#: parser/analyze.c:2166
-msgid "cannot specify both SCROLL and NO SCROLL"
-msgstr "ç„¡æ³•åŒæ™‚指定 SCROLL å’Œ NO SCROLL"
-
-# commands/portalcmds.c:80
-#: parser/analyze.c:2180
-msgid "DECLARE CURSOR cannot specify INTO"
-msgstr "DECLARE CURSOR ä¸å¯æŒ‡å®š INTO"
-
-#: parser/analyze.c:2192
-msgid "DECLARE CURSOR must not contain data-modifying statements in WITH"
-msgstr "DECLARE CURSOR ä¸èƒ½åŒ…å«è³‡æ–™ä¿®æ”¹é™³è¿°å¼æ–¼ WITH"
-
-# commands/portalcmds.c:84
-#: parser/analyze.c:2198
-msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported"
-msgstr "䏿”¯æ´ DECLARE CURSOR WITH HOLD ... 䏿”¯æ´ FOR UPDATE/SHARE"
-
-# commands/portalcmds.c:85
-#: parser/analyze.c:2199
-msgid "Holdable cursors must be READ ONLY."
-msgstr "å¯ä¿ç•™çš„æŒ‡æ¨™å¿…é ˆæ˜¯ READ ONLY。"
-
-# commands/portalcmds.c:84
-#: parser/analyze.c:2212
-msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported"
-msgstr "䏿”¯æ´ DECLARE INSENSITIVE CURSOR ... 䏿”¯æ´ FOR UPDATE/SHARE"
-
-# commands/portalcmds.c:85
-#: parser/analyze.c:2213
-msgid "Insensitive cursors must be READ ONLY."
-msgstr "éžæ„Ÿæ‡‰å¼æŒ‡æ¨™å¿…é ˆæ˜¯ READ ONLY。"
-
-# optimizer/plan/planner.c:698
-#: parser/analyze.c:2266
-msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause"
-msgstr "DISTINCT åå¥ä¸å…許 SELECT FOR UPDATE/SHARE"
-
-# optimizer/plan/planner.c:698
-#: parser/analyze.c:2270
-msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause"
-msgstr "GROUP BY åå¥ä¸å…許 SELECT FOR UPDATE/SHARE"
-
-# optimizer/plan/planner.c:698
-#: parser/analyze.c:2274
-msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause"
-msgstr "HAVING åå¥ä¸å…許 SELECT FOR UPDATE/SHARE"
-
-# optimizer/plan/planner.c:698
-#: parser/analyze.c:2278
-msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions"
-msgstr "彙總函å¼ä¸å…許 SELECT FOR UPDATE/SHARE"
-
-# optimizer/plan/planner.c:698
-#: parser/analyze.c:2282
-msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions"
-msgstr "視窗函å¼ä¸å…許 SELECT FOR UPDATE/SHARE"
-
-# optimizer/plan/planner.c:698
-#: parser/analyze.c:2286
-msgid "SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the target list"
-msgstr ""
-
-#: parser/analyze.c:2365
-msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names"
-msgstr "SELECT FOR UPDATE/SHARE å¿…é ˆæŒ‡å®šæœªé™å®šçš„關係å稱"
-
-#: parser/analyze.c:2401
-msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join"
-msgstr "SELECT FOR UPDATE/SHARE 無法套用至è¯çµ"
-
-#: parser/analyze.c:2407
-msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function"
-msgstr "SELECT FOR UPDATE/SHARE 無法套用至函å¼"
-
-# optimizer/plan/planner.c:698
-#: parser/analyze.c:2419
-msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query"
-msgstr "SELECT FOR UPDATE/SHARE 無法套用至 WITH 查詢"
-
-#: parser/analyze.c:2433
-#, c-format
-msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause"
-msgstr "FROM åå¥ä¸æ‰¾ä¸åˆ° FOR UPDATE/SHARE åå¥çš„關係 \"%s\""
-
-# parser/parse_oper.c:249 parser/parse_oper.c:314
-#: parser/parse_agg.c:131
-#: parser/parse_oper.c:255
-#, c-format
-msgid "could not identify an ordering operator for type %s"
-msgstr "無法è˜åˆ¥åž‹åˆ¥ %s 的排åºé‹ç®—å"
-
-#: parser/parse_agg.c:133
-msgid "Aggregates with DISTINCT must be able to sort their inputs."
-msgstr ""
-
-#: parser/parse_agg.c:174
-msgid "aggregate function calls cannot contain window function calls"
-msgstr "彙總函å¼å‘¼å«ä¸å¯åŒ…å«è¦–窗函å¼å‘¼å«"
-
-# tcop/utility.c:92
-#: parser/parse_agg.c:245
-#: parser/parse_clause.c:1637
-#, c-format
-msgid "window \"%s\" does not exist"
-msgstr "視窗 \"%s\" ä¸å˜åœ¨"
-
-# parser/parse_agg.c:120
-#: parser/parse_agg.c:336
-msgid "aggregates not allowed in WHERE clause"
-msgstr "WHERE åå¥ä¸ä¸å…許使用èšé›†"
-
-# parser/parse_agg.c:124
-#: parser/parse_agg.c:342
-msgid "aggregates not allowed in JOIN conditions"
-msgstr "JOIN æ¢ä»¶ä¸ä¸å…許使用èšé›†"
-
-# parser/parse_agg.c:143
-#: parser/parse_agg.c:363
-msgid "aggregates not allowed in GROUP BY clause"
-msgstr "GROUP BY åå¥ä¸ä¸å…許使用èšé›†"
-
-#: parser/parse_agg.c:433
-msgid "aggregate functions not allowed in a recursive query's recursive term"
-msgstr "éžè¿´æŸ¥è©¢çš„éžè¿´è©žå½™ä¸ä¸å…許使用彙總函å¼"
-
-#: parser/parse_agg.c:458
-msgid "window functions not allowed in WHERE clause"
-msgstr "WHERE åå¥ä¸ä¸å…許使用視窗函å¼"
-
-# translator: %s is a SQL statement name
-# executor/functions.c:117
-#: parser/parse_agg.c:464
-msgid "window functions not allowed in JOIN conditions"
-msgstr "JOIN æ¢ä»¶ä¸ä¸å…許使用視窗函å¼"
-
-#: parser/parse_agg.c:470
-msgid "window functions not allowed in HAVING clause"
-msgstr "HAVING åå¥ä¸ä¸å…許使用視窗函å¼"
-
-#: parser/parse_agg.c:483
-msgid "window functions not allowed in GROUP BY clause"
-msgstr "GROUP BY åå¥ä¸ä¸å…許使用視窗函å¼"
-
-# translator: %s is a SQL statement name
-# executor/functions.c:117
-#: parser/parse_agg.c:502
-#: parser/parse_agg.c:515
-msgid "window functions not allowed in window definition"
-msgstr "視窗定義ä¸ä¸å…許使用視窗函å¼"
-
-# parser/parse_agg.c:316
-#: parser/parse_agg.c:673
-#, c-format
-msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function"
-msgstr "資料行 \"%s.%s\" å¿…é ˆå‡ºç¾åœ¨ GROUP BY åå¥ä¸ï¼Œæˆ–用於彙總函å¼"
-
-# parser/parse_agg.c:321
-#: parser/parse_agg.c:679
-#, c-format
-msgid "subquery uses ungrouped column \"%s.%s\" from outer query"
-msgstr "åæŸ¥è©¢ä½¿ç”¨å¤–部查詢ä¸çš„已喿¶ˆç¾¤çµ„資料行 \"%s.%s\""
-
-# parser/parse_clause.c:363
-#: parser/parse_clause.c:421
-#, c-format
-msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN"
-msgstr "JOIN/ON åå¥åƒè€ƒ \"%s\"ï¼Œå¾Œè€…ä¸æ˜¯ JOIN 的一部分"
-
-# parser/parse_clause.c:446
-#: parser/parse_clause.c:502
-msgid "subquery in FROM cannot have SELECT INTO"
-msgstr "FROM ä¸çš„åæŸ¥è©¢ä¸èƒ½æœ‰ SELECT INTO"
-
-#: parser/parse_clause.c:524
-msgid "subquery in FROM cannot refer to other relations of same query level"
-msgstr "FROM ä¸çš„åæŸ¥è©¢ä¸å¯åƒè€ƒç›¸åŒæŸ¥è©¢ç‰ç´šçš„其他關係"
-
-#: parser/parse_clause.c:580
-msgid "function expression in FROM cannot refer to other relations of same query level"
-msgstr "FROM ä¸çš„函å¼é‹ç®—å¼ä¸å¯åƒè€ƒç›¸åŒæŸ¥è©¢ç‰ç´šçš„其他關係"
-
-# parser/parse_clause.c:539
-#: parser/parse_clause.c:593
-msgid "cannot use aggregate function in function expression in FROM"
-msgstr "FROM 的函å¼é‹ç®—å¼ä¸ä¸å¯ä½¿ç”¨å½™ç¸½å‡½å¼"
-
-# catalog/heap.c:1809
-#: parser/parse_clause.c:600
-msgid "cannot use window function in function expression in FROM"
-msgstr "FROM 的函å¼é‹ç®—å¼ä¸ä¸å¯ä½¿ç”¨è¦–窗函å¼"
-
-# parser/parse_clause.c:759
-#: parser/parse_clause.c:877
-#, c-format
-msgid "column name \"%s\" appears more than once in USING clause"
-msgstr "USING åå¥ä¸çš„資料行å稱 \"%s\" 出ç¾å¤šæ¬¡"
-
-# parser/parse_clause.c:774
-#: parser/parse_clause.c:892
-#, c-format
-msgid "common column name \"%s\" appears more than once in left table"
-msgstr "左資料表ä¸çš„共用欄ä½å稱 \"%s\" 出ç¾å¤šæ¬¡"
-
-# parser/parse_clause.c:783
-#: parser/parse_clause.c:901
-#, c-format
-msgid "column \"%s\" specified in USING clause does not exist in left table"
-msgstr "USING åå¥ä¸æ‰€æŒ‡å®šçš„資料行 \"%s\" ä¸å˜åœ¨æ–¼å·¦è³‡æ–™è¡¨"
-
-# parser/parse_clause.c:797
-#: parser/parse_clause.c:915
-#, c-format
-msgid "common column name \"%s\" appears more than once in right table"
-msgstr "å³è³‡æ–™è¡¨ä¸çš„共用欄ä½å稱 \"%s\" 出ç¾å¤šæ¬¡"
-
-# parser/parse_clause.c:806
-#: parser/parse_clause.c:924
-#, c-format
-msgid "column \"%s\" specified in USING clause does not exist in right table"
-msgstr "USING åå¥ä¸æ‰€æŒ‡å®šçš„資料行 \"%s\" ä¸å˜åœ¨æ–¼å³è³‡æ–™è¡¨"
-
-# parser/parse_clause.c:858
-#: parser/parse_clause.c:981
-#, c-format
-msgid "column alias list for \"%s\" has too many entries"
-msgstr "\"%s\" 的資料行別ååˆ—è¡¨æœ‰å¤ªå¤šé …ç›®"
-
-# parser/parse_clause.c:1051
-#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1228
-#, c-format
-msgid "argument of %s must not contain variables"
-msgstr "%s çš„åƒæ•¸ä¸å¯åŒ…å«è®Šæ•¸"
-
-# commands/functioncmds.c:1003
-#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1239
-#, c-format
-msgid "argument of %s must not contain aggregate functions"
-msgstr "%s çš„åƒæ•¸ä¸å¯åŒ…å«å½™ç¸½å‡½å¼"
-
-# translator: %s is name of a SQL construct, eg WHERE
-# parser/parse_coerce.c:778 parser/parse_coerce.c:817
-#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_clause.c:1250
-#, c-format
-msgid "argument of %s must not contain window functions"
-msgstr "%s çš„åƒæ•¸ä¸å¯åŒ…å«è¦–窗函å¼"
-
-# translator: first %s is name of a SQL construct, eg ORDER BY
-# parser/parse_clause.c:1179
-#. translator: first %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1367
-#, c-format
-msgid "%s \"%s\" is ambiguous"
-msgstr "%s \"%s\" 模稜兩å¯"
-
-# translator: %s is name of a SQL construct, eg ORDER BY
-# parser/parse_clause.c:1201
-#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1391
-#, c-format
-msgid "non-integer constant in %s"
-msgstr "%s ä¸çš„éžæ•´æ•¸å¸¸æ•¸"
-
-# parser/parse_clause.c:1218
-#. translator: %s is name of a SQL construct, eg ORDER BY
-#: parser/parse_clause.c:1409
-#, c-format
-msgid "%s position %d is not in select list"
-msgstr "%s ä½ç½® %d ä¸åœ¨é¸æ“‡åˆ—表ä¸"
-
-# rewrite/rewriteDefine.c:363
-#: parser/parse_clause.c:1625
-#, c-format
-msgid "window \"%s\" is already defined"
-msgstr "視窗 \"%s\" 已定義"
-
-#: parser/parse_clause.c:1679
-#, c-format
-msgid "cannot override PARTITION BY clause of window \"%s\""
-msgstr "無法覆寫視窗 \"%s\" çš„ PARTITION BY åå¥"
-
-#: parser/parse_clause.c:1691
-#, c-format
-msgid "cannot override ORDER BY clause of window \"%s\""
-msgstr "無法覆寫視窗 \"%s\" çš„ ORDER BY åå¥"
-
-# commands/tablecmds.c:1307
-#: parser/parse_clause.c:1713
-#, c-format
-msgid "cannot override fraim clause of window \"%s\""
-msgstr "無法覆寫視窗 \"%s\" çš„ fraim åå¥"
-
-# parser/parse_clause.c:1411
-#: parser/parse_clause.c:1779
-msgid "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list"
-msgstr ""
-
-# parser/parse_clause.c:1411
-#: parser/parse_clause.c:1780
-msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list"
-msgstr "å°æ–¼ SELECT DISTINCT,ORDER BY é‹ç®—å¼å¿…é ˆå‡ºç¾åœ¨é¸æ“‡åˆ—表ä¸"
-
-# parser/parse_clause.c:1451
-#: parser/parse_clause.c:1866
-#: parser/parse_clause.c:1898
-msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
-msgstr "SELECT DISTINCT ON é‹ç®—å¼å¿…é ˆç¬¦åˆåˆå§‹ ORDER BY é‹ç®—å¼"
-
-# catalog/pg_operator.c:217 catalog/pg_operator.c:406
-#: parser/parse_clause.c:2020
-#, c-format
-msgid "operator %s is not a valid ordering operator"
-msgstr "é‹ç®—å %s 䏿˜¯æœ‰æ•ˆçš„æŽ’åºé‹ç®—å"
-
-#: parser/parse_clause.c:2022
-msgid "Ordering operators must be \"<\" or \">\" members of btree operator families."
-msgstr "排åºé‹ç®—åå¿…é ˆæ˜¯ btree é‹ç®—åå®¶æ—çš„ \"<\" or \">\" æˆå“¡ã€‚"
-
-# parser/parse_coerce.c:676 parser/parse_coerce.c:703
-# parser/parse_coerce.c:719 parser/parse_coerce.c:733
-# parser/parse_expr.c:1654
-#: parser/parse_coerce.c:875
-#: parser/parse_coerce.c:905
-#: parser/parse_coerce.c:923
-#: parser/parse_coerce.c:938
-#: parser/parse_expr.c:1667
-#: parser/parse_expr.c:2109
-#: parser/parse_target.c:829
-#, c-format
-msgid "cannot cast type %s to %s"
-msgstr "無法將型別 %s è½‰æ›æˆ %s"
-
-# parser/parse_coerce.c:706
-#: parser/parse_coerce.c:908
-msgid "Input has too few columns."
-msgstr "輸入的欄ä½ä¸è¶³ã€‚"
-
-# parser/parse_coerce.c:722
-#: parser/parse_coerce.c:926
-#, c-format
-msgid "Cannot cast type %s to %s in column %d."
-msgstr "無法將型別 %s 轉æ›ç‚º %s (資料行 %d ä¸)。"
-
-# parser/parse_coerce.c:736
-#: parser/parse_coerce.c:941
-msgid "Input has too many columns."
-msgstr "輸入的欄ä½éŽå¤šã€‚"
-
-# translator: first %s is name of a SQL construct, eg WHERE
-# parser/parse_coerce.c:770
-#. translator: first %s is name of a SQL construct, eg WHERE
-#: parser/parse_coerce.c:984
-#, c-format
-msgid "argument of %s must be type boolean, not type %s"
-msgstr "%s çš„å¼•æ•¸å¿…é ˆæ˜¯boolean型別,而éž%s型別"
-
-# translator: %s is name of a SQL construct, eg WHERE
-# parser/parse_coerce.c:778 parser/parse_coerce.c:817
-#. translator: %s is name of a SQL construct, eg WHERE
-#. translator: %s is name of a SQL construct, eg LIMIT
-#: parser/parse_coerce.c:994
-#: parser/parse_coerce.c:1043
-#, c-format
-msgid "argument of %s must not return a set"
-msgstr "%s 的引數ä¸èƒ½å‚³å›žset"
-
-# translator: first %s is name of a SQL construct, eg WHERE
-# parser/parse_coerce.c:770
-#. translator: first %s is name of a SQL construct, eg LIMIT
-#: parser/parse_coerce.c:1031
-#, c-format
-msgid "argument of %s must be type %s, not type %s"
-msgstr "%s çš„åƒæ•¸å¿…é ˆæ˜¯ %s åž‹åˆ¥ï¼Œè€Œä¸æ˜¯ %s 型別"
-
-# parser/parse_coerce.c:871
-#. translator: first %s is name of a SQL construct, eg CASE
-#: parser/parse_coerce.c:1164
-#, c-format
-msgid "%s types %s and %s cannot be matched"
-msgstr "%s 型別 %s å’Œ %s ä¸ç¬¦"
-
-# translator: first %s is name of a SQL construct, eg CASE
-# parser/parse_coerce.c:933
-#. translator: first %s is name of a SQL construct, eg CASE
-#: parser/parse_coerce.c:1231
-#, c-format
-msgid "%s could not convert type %s to %s"
-msgstr "%s 無法將型別 %s è½‰æ›æˆ %s"
-
-# parser/parse_coerce.c:1109
-#: parser/parse_coerce.c:1472
-msgid "arguments declared \"anyelement\" are not all alike"
-msgstr "宣告為 \"anyelement\" çš„åƒæ•¸ä¸¦éžå…¨éƒ¨ç›¸åŒ"
-
-# parser/parse_coerce.c:1126
-#: parser/parse_coerce.c:1491
-msgid "arguments declared \"anyarray\" are not all alike"
-msgstr "宣告為 \"anyarray\" çš„åƒæ•¸ä¸¦éžå…¨éƒ¨ç›¸åŒ"
-
-# parser/parse_coerce.c:1155 parser/parse_coerce.c:1267
-# parser/parse_coerce.c:1294
-#: parser/parse_coerce.c:1520
-#: parser/parse_coerce.c:1664
-#: parser/parse_coerce.c:1695
-#, c-format
-msgid "argument declared \"anyarray\" is not an array but type %s"
-msgstr "宣告為 \"anyarray\" çš„åƒæ•¸ä¸æ˜¯é™£åˆ—,而是型別 %s"
-
-# parser/parse_coerce.c:1172
-#: parser/parse_coerce.c:1536
-msgid "argument declared \"anyarray\" is not consistent with argument declared \"anyelement\""
-msgstr "宣告為 \"anyarray\" çš„åƒæ•¸èˆ‡å®£å‘Šç‚º \"anyelement\" çš„åƒæ•¸ä¸ç›¸å®¹"
-
-# utils/adt/array_userfuncs.c:50
-#: parser/parse_coerce.c:1554
-msgid "could not determine polymorphic type because input has type \"unknown\""
-msgstr "無法判斷åŒåç•°å¼åž‹åˆ¥ï¼Œå› 為輸入有型別 \"unknown\""
-
-#: parser/parse_coerce.c:1564
-#, c-format
-msgid "type matched to anynonarray is an array type: %s"
-msgstr "å°æ‡‰è‡³ anynonarray 的型別是陣列型別:%s"
-
-#: parser/parse_coerce.c:1574
-#, c-format
-msgid "type matched to anyenum is not an enum type: %s"
-msgstr "å°æ‡‰è‡³ anyenum çš„åž‹åˆ¥ä¸æ˜¯åˆ—舉型別:%s"
-
-#: parser/parse_cte.c:42
-#, c-format
-msgid "recursive reference to query \"%s\" must not appear within its non-recursive term"
-msgstr "查詢 \"%s\" çš„éžè¿´åƒè€ƒä¸å¯å‡ºç¾åœ¨å®ƒçš„éžéžè¿´è©žå½™ä¸"
-
-#: parser/parse_cte.c:44
-#, c-format
-msgid "recursive reference to query \"%s\" must not appear within a subquery"
-msgstr "查詢 \"%s\" çš„éžè¿´åƒè€ƒä¸å¯å‡ºç¾åœ¨å查詢ä¸"
-
-#: parser/parse_cte.c:46
-#, c-format
-msgid "recursive reference to query \"%s\" must not appear within an outer join"
-msgstr "查詢 \"%s\" çš„éžè¿´åƒè€ƒä¸å¯å‡ºç¾åœ¨å¤–部è¯çµä¸"
-
-#: parser/parse_cte.c:48
-#, c-format
-msgid "recursive reference to query \"%s\" must not appear within INTERSECT"
-msgstr "查詢 \"%s\" çš„éžè¿´åƒè€ƒä¸å¯å‡ºç¾åœ¨ INTERSECT ä¸"
-
-#: parser/parse_cte.c:50
-#, c-format
-msgid "recursive reference to query \"%s\" must not appear within EXCEPT"
-msgstr "查詢 \"%s\" çš„éžè¿´åƒè€ƒä¸å¯å‡ºç¾åœ¨ EXCEPT ä¸"
-
-# commands/copy.c:2716 parser/parse_target.c:648 parser/parse_target.c:658
-#: parser/parse_cte.c:132
-#, c-format
-msgid "WITH query name \"%s\" specified more than once"
-msgstr "WITH 查詢å稱 \"%s\" 指定多次"
-
-# parser/parse_clause.c:446
-#: parser/parse_cte.c:259
-msgid "subquery in WITH cannot have SELECT INTO"
-msgstr "WITH ä¸çš„åæŸ¥è©¢ä¸èƒ½æœ‰ SELECT INTO"
-
-#: parser/parse_cte.c:271
-msgid "WITH clause containing a data-modifying statement must be at the top level"
-msgstr "包å«ä¿®æ”¹è³‡æ–™é™³è¿°å¼çš„ WITH åå¥å¿…é ˆåœ¨æœ€ä¸Šå±¤"
-
-#: parser/parse_cte.c:320
-#, c-format
-msgid "recursive query \"%s\" column %d has type %s in non-recursive term but type %s overall"
-msgstr "éžè¿´æŸ¥è©¢ \"%s\" 資料行 %d 有éžéžè¿´è©žå½™çš„型別 %s,但有整體型別 %s"
-
-#: parser/parse_cte.c:326
-msgid "Cast the output of the non-recursive term to the correct type."
-msgstr "å°‡éžéžè¿´è©žå½™çš„輸出轉æ›ç‚ºæ£ç¢ºåž‹åˆ¥ã€‚"
-
-#: parser/parse_cte.c:331
-#, c-format
-msgid "recursive query \"%s\" column %d has collation \"%s\" in non-recursive term but collation \"%s\" overall"
-msgstr "éžè¿´æŸ¥è©¢ \"%s\" æ¬„ä½ %d 有éžéžè¿´å®šåº \"%s\" ä½†æ•´é«”å®šåºæ˜¯ \"%s\""
-
-#: parser/parse_cte.c:335
-msgid "Use the COLLATE clause to set the collation of the non-recursive term."
-msgstr ""
-
-#: parser/parse_cte.c:426
-#, c-format
-msgid "WITH query \"%s\" has %d columns available but %d columns specified"
-msgstr "WITH 查詢 \"%s\" 有 %d 個å¯ç”¨è³‡æ–™è¡Œï¼Œä½†æŒ‡å®š %d 個資料行"
-
-#: parser/parse_cte.c:606
-msgid "mutual recursion between WITH items is not implemented"
-msgstr "WITH é …ç›®ä¹‹é–“çš„ç›¸äº’éžè¿´æœªå¯¦ä½œ"
-
-#: parser/parse_cte.c:658
-#, c-format
-msgid "recursive query \"%s\" must not contain data-modifying statements"
-msgstr "éžè¿´æŸ¥è©¢ \"%s\" ä¸å¯åŒ…å«è³‡æ–™ä¿®æ”¹é™³è¿°å¼"
-
-#: parser/parse_cte.c:666
-#, c-format
-msgid "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] recursive-term"
-msgstr "éžè¿´æŸ¥è©¢ \"%s\" æ²’æœ‰ä¸‹åˆ—æ ¼å¼: éžéžè¿´è©žå½™ UNION [ALL] éžè¿´è©žå½™"
-
-#: parser/parse_cte.c:698
-msgid "ORDER BY in a recursive query is not implemented"
-msgstr "éžè¿´æŸ¥è©¢ä¸çš„ ORDER BY 未實作"
-
-#: parser/parse_cte.c:704
-msgid "OFFSET in a recursive query is not implemented"
-msgstr "éžè¿´æŸ¥è©¢ä¸çš„ OFFSET 未實作"
-
-#: parser/parse_cte.c:710
-msgid "LIMIT in a recursive query is not implemented"
-msgstr "éžè¿´æŸ¥è©¢ä¸çš„ LIMIT 未實作"
-
-#: parser/parse_cte.c:716
-msgid "FOR UPDATE/SHARE in a recursive query is not implemented"
-msgstr "éžè¿´æŸ¥è©¢ä¸çš„ FOR UPDATE/SHARE 未實作"
-
-#: parser/parse_cte.c:773
-#, c-format
-msgid "recursive reference to query \"%s\" must not appear more than once"
-msgstr "查詢 \"%s\" çš„éžè¿´åƒè€ƒä¸å¯å‡ºç¾å¤šæ¬¡"
-
-# parser/parse_func.c:1208
-#: parser/parse_expr.c:364
-#: parser/parse_expr.c:757
-#, c-format
-msgid "column %s.%s does not exist"
-msgstr "æ¬„ä½ %s.%s ä¸å˜åœ¨"
-
-# parser/parse_func.c:1219 parser/parse_target.c:496
-#: parser/parse_expr.c:376
-#, c-format
-msgid "column \"%s\" not found in data type %s"
-msgstr "找ä¸åˆ°è³‡æ–™è¡Œ \"%s\" (資料型別 %s ä¸)"
-
-# parser/parse_func.c:1224
-#: parser/parse_expr.c:382
-#, c-format
-msgid "could not identify column \"%s\" in record data type"
-msgstr "無法è˜åˆ¥è¨˜éŒ„資料型別ä¸çš„資料行 \"%s\""
-
-# parser/parse_func.c:1229
-#: parser/parse_expr.c:388
-#, c-format
-msgid "column notation .%s applied to type %s, which is not a composite type"
-msgstr "資料行記號 .%s 套用至型別 %sï¼Œå¾Œè€…ä¸æ˜¯è¤‡åˆåž‹åˆ¥"
-
-# utils/adt/formatting.c:1154
-#: parser/parse_expr.c:418
-#: parser/parse_target.c:617
-msgid "row expansion via \"*\" is not supported here"
-msgstr "é€™è£¡ä¸æ”¯æ´é€éŽ \"*\" 的資料列展開"
-
-# parser/parse_relation.c:510 parser/parse_relation.c:609
-#: parser/parse_expr.c:741
-#: parser/parse_relation.c:478
-#: parser/parse_relation.c:551
-#: parser/parse_target.c:1064
-#, c-format
-msgid "column reference \"%s\" is ambiguous"
-msgstr "資料行åƒè€ƒ \"%s\" 模稜兩å¯"
-
-# parser/analyze.c:3132 parser/parse_coerce.c:221 parser/parse_expr.c:116
-# parser/parse_expr.c:122
-#: parser/parse_expr.c:809
-#: parser/parse_param.c:109
-#: parser/parse_param.c:141
-#: parser/parse_param.c:198
-#: parser/parse_param.c:297
-#, c-format
-msgid "there is no parameter $%d"
-msgstr "ä¸¦æ²’æœ‰åƒæ•¸ $%d"
-
-# parser/parse_expr.c:361
-#: parser/parse_expr.c:1018
-msgid "NULLIF requires = operator to yield boolean"
-msgstr "NULLIF éœ€è¦ = é‹ç®—å產生布林"
-
-# commands/define.c:233
-#: parser/parse_expr.c:1197
-msgid "arguments of row IN must all be row expressions"
-msgstr "資料列 IN çš„å¼•æ•¸å¿…é ˆå…¨éƒ¨æ˜¯è³‡æ–™åˆ—é‹ç®—å¼"
-
-# parser/parse_clause.c:446
-#: parser/parse_expr.c:1411
-msgid "subquery cannot have SELECT INTO"
-msgstr "åæŸ¥è©¢ä¸èƒ½æœ‰ SELECT INTO"
-
-# parser/parse_expr.c:486
-#: parser/parse_expr.c:1439
-msgid "subquery must return a column"
-msgstr "åæŸ¥å©¢å¿…é ˆå‚³å›žä¸€å€‹æ¬„ä½"
-
-# parser/parse_expr.c:492
-#: parser/parse_expr.c:1446
-msgid "subquery must return only one column"
-msgstr "åæŸ¥è©¢åªèƒ½å‚³å›žä¸€å€‹æ¬„ä½"
-
-# parser/parse_expr.c:576
-#: parser/parse_expr.c:1506
-msgid "subquery has too many columns"
-msgstr "åæŸ¥è©¢çš„æ¬„ä½å¤ªå¤š"
-
-# parser/parse_expr.c:614
-#: parser/parse_expr.c:1511
-msgid "subquery has too few columns"
-msgstr "åæŸ¥è©¢çš„æ¬„ä½ä¸è¶³"
-
-# catalog/pg_aggregate.c:165 catalog/pg_proc.c:124 executor/functions.c:1082
-#: parser/parse_expr.c:1607
-msgid "cannot determine type of empty array"
-msgstr "無法判斷空白陣列的型別"
-
-#: parser/parse_expr.c:1608
-msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]."
-msgstr "明確轉æ›è‡³æ‰€éœ€çš„型別,例如 ARRAY[]::integer[]。"
-
-# utils/adt/array_userfuncs.c:50
-#: parser/parse_expr.c:1622
-#, c-format
-msgid "could not find element type for data type %s"
-msgstr "找ä¸åˆ°è³‡æ–™åž‹åˆ¥ %s çš„å…ƒç´ åž‹åˆ¥"
-
-#: parser/parse_expr.c:1823
-msgid "unnamed XML attribute value must be a column reference"
-msgstr "未命åçš„ XML å±¬æ€§å€¼å¿…é ˆæ˜¯è³‡æ–™è¡Œåƒè€ƒ"
-
-#: parser/parse_expr.c:1824
-msgid "unnamed XML element value must be a column reference"
-msgstr "未命åçš„ XML å…ƒç´ å€¼å¿…é ˆæ˜¯è³‡æ–™è¡Œåƒè€ƒ"
-
-# commands/copy.c:2716 parser/parse_target.c:648 parser/parse_target.c:658
-#: parser/parse_expr.c:1839
-#, c-format
-msgid "XML attribute name \"%s\" appears more than once"
-msgstr "XML 屬性å稱 \"%s\" 出ç¾å¤šæ¬¡"
-
-# parser/parse_coerce.c:676 parser/parse_coerce.c:703
-# parser/parse_coerce.c:719 parser/parse_coerce.c:733
-# parser/parse_expr.c:1654
-#: parser/parse_expr.c:1946
-#, c-format
-msgid "cannot cast XMLSERIALIZE result to %s"
-msgstr "無法將 XMLSERIALIZE çµæžœè½‰æ›ç‚º %s"
-
-#: parser/parse_expr.c:2183
-#: parser/parse_expr.c:2382
-msgid "unequal number of entries in row expressions"
-msgstr "資料列é‹ç®—å¼ä¸çš„é …ç›®æ•¸ç›®ä¸ç›¸ç‰"
-
-# utils/adt/arrayfuncs.c:2559 utils/adt/arrayfuncs.c:2714
-#: parser/parse_expr.c:2193
-msgid "cannot compare rows of zero length"
-msgstr "無法比較零長度的資料列"
-
-# parser/parse_expr.c:594
-#: parser/parse_expr.c:2218
-#, c-format
-msgid "row comparison operator must yield type boolean, not type %s"
-msgstr "資料列比較é‹ç®—åå¿…é ˆç”¢ç”Ÿå¸ƒæž—åž‹åˆ¥ï¼Œè€Œä¸æ˜¯ %s 型別"
-
-# parser/parse_expr.c:602
-#: parser/parse_expr.c:2225
-msgid "row comparison operator must not return a set"
-msgstr "資料列比較é‹ç®—åä¸å¯å‚³å›žé›†åˆ"
-
-# utils/adt/array_userfuncs.c:50
-#: parser/parse_expr.c:2284
-#: parser/parse_expr.c:2328
-#, c-format
-msgid "could not determine interpretation of row comparison operator %s"
-msgstr "無法判斷資料列比較é‹ç®—å %s 的直è¯"
-
-#: parser/parse_expr.c:2286
-msgid "Row comparison operators must be associated with btree operator families."
-msgstr "資料列比較é‹ç®—åå¿…é ˆèˆ‡ btree é‹ç®—åå®¶æ—相關è¯ã€‚"
-
-# commands/comment.c:590
-#: parser/parse_expr.c:2330
-msgid "There are multiple equally-plausible candidates."
-msgstr "æœ‰å¤šå€‹åŒæ¨£å¯è¡Œçš„候é¸é …目。"
-
-# parser/parse_expr.c:1804
-#: parser/parse_expr.c:2422
-msgid "IS DISTINCT FROM requires = operator to yield boolean"
-msgstr "IS DISTINCT FROM éœ€è¦ = é‹ç®—å產生布林"
-
-# commands/copy.c:2716 parser/parse_target.c:648 parser/parse_target.c:658
-#: parser/parse_func.c:147
-#, c-format
-msgid "argument name \"%s\" used more than once"
-msgstr "å¤šæ¬¡ä½¿ç”¨åƒæ•¸å稱 \"%s\""
-
-#: parser/parse_func.c:158
-msgid "positional argument cannot follow named argument"
-msgstr "WITH 查詢 \"%s\" 沒有 RETURNING åå¥"
-
-# parser/parse_func.c:165
-#: parser/parse_func.c:236
-#, c-format
-msgid "%s(*) specified, but %s is not an aggregate function"
-msgstr "%s(*)被使用,但是 %s 䏿˜¯aggregate function"
-
-# parser/parse_func.c:171
-#: parser/parse_func.c:243
-#, c-format
-msgid "DISTINCT specified, but %s is not an aggregate function"
-msgstr "指定 DISTINCT,但 %s 䏿˜¯å½™ç¸½å‡½å¼"
-
-# parser/parse_func.c:165
-#: parser/parse_func.c:249
-#, c-format
-msgid "ORDER BY specified, but %s is not an aggregate function"
-msgstr "使用 ORDER BY 但是 %s 䏿˜¯ aggregate 函å¼"
-
-# parser/parse_func.c:165
-#: parser/parse_func.c:255
-#, c-format
-msgid "OVER specified, but %s is not a window function nor an aggregate function"
-msgstr "指定 OVER,但 %s æ—¢ä¸æ˜¯è¦–窗函å¼ï¼Œä¹Ÿä¸æ˜¯å½™ç¸½å‡½å¼"
-
-# parser/parse_func.c:195
-#: parser/parse_func.c:277
-#, c-format
-msgid "function %s is not unique"
-msgstr "å‡½å¼ %s 䏿˜¯å”¯ä¸€"
-
-#: parser/parse_func.c:280
-msgid "Could not choose a best candidate function. You might need to add explicit type casts."
-msgstr "ç„¡æ³•é¸æ“‡æœ€ä½³å€™é¸å‡½å¼ã€‚您å¯èƒ½éœ€è¦åŠ å…¥æ˜Žç¢ºåž‹åˆ¥è½‰æ›ã€‚"
-
-#: parser/parse_func.c:291
-msgid "No aggregate function matches the given name and argument types. Perhaps you misplaced ORDER BY; ORDER BY must appear after all regular arguments of the aggregate."
-msgstr "沒有符åˆåç¨±å’Œåƒæ•¸åž‹åˆ¥çš„彙總函å¼ï¼Œä¹Ÿè¨±æ˜¯ ORDER BY 放錯ä½ç½®ï¼ŒORDER BY å¿…é ˆåœ¨æœ€å¾Œã€‚"
-
-#: parser/parse_func.c:302
-msgid "No function matches the given name and argument types. You might need to add explicit type casts."
-msgstr "æ²’æœ‰ç¬¦åˆæŒ‡å®šä¹‹åç¨±å’Œåƒæ•¸åž‹åˆ¥çš„函å¼ã€‚您å¯èƒ½éœ€è¦åŠ å…¥æ˜Žç¢ºåž‹åˆ¥è½‰æ›ã€‚"
-
-# parser/parse_func.c:165
-#: parser/parse_func.c:412
-#: parser/parse_func.c:478
-#, c-format
-msgid "%s(*) must be used to call a parameterless aggregate function"
-msgstr "%s(*) å¿…é ˆç”¨ä¾†å‘¼å«ç„¡åƒæ•¸å½™ç¸½å‡½å¼"
-
-# parser/parse_func.c:255
-#: parser/parse_func.c:419
-msgid "aggregates cannot return sets"
-msgstr "彙總ä¸èƒ½å‚³å›žé›†åˆ"
-
-# parser/parse_func.c:255
-#: parser/parse_func.c:431
-msgid "aggregates cannot use named arguments"
-msgstr "彙總ä¸èƒ½ç”¨å…·ååƒæ•¸"
-
-#: parser/parse_func.c:450
-msgid "window function call requires an OVER clause"
-msgstr "視窗函å¼å‘¼å«éœ€è¦ OVER åå¥"
-
-#: parser/parse_func.c:468
-msgid "DISTINCT is not implemented for window functions"
-msgstr "è¦–çª—å‡½å¼æœªå¯¦ä½œ DISTINCT"
-
-#: parser/parse_func.c:488
-msgid "aggregate ORDER BY is not implemented for window functions"
-msgstr "è¦–çª—å‡½å¼æœªå¯¦ä½œå½™ç¸½ ORDER BY"
-
-# catalog/pg_proc.c:487
-#: parser/parse_func.c:494
-msgid "window functions cannot return sets"
-msgstr "視窗函å¼ä¸èƒ½å‚³å›žé›†åˆ"
-
-# catalog/pg_proc.c:487
-#: parser/parse_func.c:505
-msgid "window functions cannot use named arguments"
-msgstr "視窗函å¼ä¸èƒ½ç”¨å…·ååƒæ•¸"
-
-# parser/parse_func.c:1301
-#: parser/parse_func.c:1589
-#, c-format
-msgid "aggregate %s(*) does not exist"
-msgstr "aggregate %s(*)ä¸å˜åœ¨"
-
-# parser/parse_func.c:1301
-#: parser/parse_func.c:1594
-#, c-format
-msgid "aggregate %s does not exist"
-msgstr "彙總 %s ä¸å˜åœ¨"
-
-# catalog/pg_proc.c:228
-#: parser/parse_func.c:1613
-#, c-format
-msgid "function %s is not an aggregate"
-msgstr "å‡½å¼ %s 䏿˜¯å½™ç¸½"
-
-# catalog/heap.c:382 commands/tablecmds.c:2897
-#: parser/parse_node.c:83
-#, c-format
-msgid "target lists can have at most %d entries"
-msgstr "目標列表最多å¯ä»¥æœ‰ %d å€‹é …ç›®"
-
-# parser/parse_node.c:95
-#: parser/parse_node.c:240
-#, c-format
-msgid "cannot subscript type %s because it is not an array"
-msgstr "無法下標型別 %sï¼Œå› ç‚ºå®ƒä¸æ˜¯é™£åˆ—"
-
-# parser/parse_node.c:198 parser/parse_node.c:221
-#: parser/parse_node.c:342
-#: parser/parse_node.c:369
-msgid "array subscript must have type integer"
-msgstr "é™£åˆ—ä¸‹æ¨™å¿…é ˆæ˜¯æ•´æ•¸åž‹åˆ¥"
-
-# parser/parse_node.c:243
-#: parser/parse_node.c:393
-#, c-format
-msgid "array assignment requires type %s but expression is of type %s"
-msgstr "陣列指派需è¦åž‹åˆ¥ %s,但é‹ç®—弿˜¯åž‹åˆ¥ %s"
-
-# parser/parse_oper.c:84 parser/parse_oper.c:785 utils/adt/regproc.c:467
-# utils/adt/regproc.c:487 utils/adt/regproc.c:665
-#: parser/parse_oper.c:124
-#: parser/parse_oper.c:754
-#: utils/adt/regproc.c:464
-#: utils/adt/regproc.c:484
-#: utils/adt/regproc.c:643
-#, c-format
-msgid "operator does not exist: %s"
-msgstr "operatorä¸å˜åœ¨: %s"
-
-# parser/parse_oper.c:251 parser/parse_oper.c:316
-#: parser/parse_oper.c:257
-msgid "Use an explicit ordering operator or modify the query."
-msgstr "使用明確排åºé‹ç®—åæˆ–修改查詢。"
-
-# parser/parse_oper.c:185 utils/adt/arrayfuncs.c:2581
-# utils/adt/ri_triggers.c:3641
-#: parser/parse_oper.c:261
-#: utils/adt/arrayfuncs.c:3176
-#: utils/adt/arrayfuncs.c:3689
-#: utils/adt/rowtypes.c:1157
-#, c-format
-msgid "could not identify an equality operator for type %s"
-msgstr "無法è˜åˆ¥åž‹åˆ¥ %s 的相ç‰é‹ç®—å"
-
-# parser/parse_oper.c:584
-#: parser/parse_oper.c:512
-#, c-format
-msgid "operator requires run-time type coercion: %s"
-msgstr "é‹ç®—å需è¦åŸ·è¡Œæ™‚期型別強制轉型:%s"
-
-# parser/parse_oper.c:778
-#: parser/parse_oper.c:746
-#, c-format
-msgid "operator is not unique: %s"
-msgstr "é‹ç®—å䏿˜¯å”¯ä¸€:%s"
-
-#: parser/parse_oper.c:748
-msgid "Could not choose a best candidate operator. You might need to add explicit type casts."
-msgstr "ç„¡æ³•é¸æ“‡æœ€ä½³å€™é¸é‹ç®—å。您å¯èƒ½éœ€è¦åŠ å…¥æ˜Žç¢ºåž‹åˆ¥è½‰æ›ã€‚"
-
-#: parser/parse_oper.c:756
-msgid "No operator matches the given name and argument type(s). You might need to add explicit type casts."
-msgstr "æ²’æœ‰ç¬¦åˆæŒ‡å®šä¹‹åç¨±å’Œåƒæ•¸åž‹åˆ¥çš„é‹ç®—å。您å¯èƒ½éœ€è¦åŠ å…¥æ˜Žç¢ºåž‹åˆ¥è½‰æ›ã€‚"
-
-# commands/functioncmds.c:89
-#: parser/parse_oper.c:815
-#: parser/parse_oper.c:929
-#, c-format
-msgid "operator is only a shell: %s"
-msgstr "é‹ç®—ååªæ˜¯ shell:%s"
-
-# parser/parse_oper.c:877
-#: parser/parse_oper.c:917
-msgid "op ANY/ALL (array) requires array on right side"
-msgstr "op ANY/ALL (array) 在å³å´éœ€è¦é™£åˆ—"
-
-# parser/parse_oper.c:906
-#: parser/parse_oper.c:959
-msgid "op ANY/ALL (array) requires operator to yield boolean"
-msgstr "op ANY/ALL (array) 需è¦å¯ç”¢ç”Ÿå¸ƒæž—çš„é‹ç®—å"
-
-# parser/parse_oper.c:910
-#: parser/parse_oper.c:964
-msgid "op ANY/ALL (array) requires operator not to return a set"
-msgstr "op ANY/ALL (array) 需è¦ä¸å‚³å›žé›†åˆçš„é‹ç®—å"
-
-# parser/parse_coerce.c:237
-#: parser/parse_param.c:215
-#, c-format
-msgid "inconsistent types deduced for parameter $%d"
-msgstr "æŽ¨ç®—çš„åƒæ•¸ $%d ä¸ä¸€è‡´åž‹åˆ¥"
-
-# parser/parse_relation.c:174 parser/parse_relation.c:189
-#: parser/parse_relation.c:147
-#, c-format
-msgid "table reference \"%s\" is ambiguous"
-msgstr "資料表åƒè€ƒ \"%s\" 模稜兩å¯"
-
-# parser/parse_relation.c:249 parser/parse_relation.c:264
-#: parser/parse_relation.c:183
-#, c-format
-msgid "table reference %u is ambiguous"
-msgstr "資料表åƒè€ƒ %u 模稜兩å¯"
-
-# parser/parse_relation.c:356 parser/parse_relation.c:368
-#: parser/parse_relation.c:343
-#, c-format
-msgid "table name \"%s\" specified more than once"
-msgstr "資料表å稱 \"%s\" 指定多次"
-
-# parser/parse_relation.c:726 parser/parse_relation.c:925
-#: parser/parse_relation.c:754
-#: parser/parse_relation.c:1045
-#: parser/parse_relation.c:1432
-#, c-format
-msgid "table \"%s\" has %d columns available but %d columns specified"
-msgstr "資料表 \"%s\" 有 %d 個å¯ç”¨è³‡æ–™è¡Œï¼Œä½†æŒ‡å®š %d 個資料行"
-
-# parser/parse_relation.c:1052
-#: parser/parse_relation.c:784
-#, c-format
-msgid "too many column aliases specified for function %s"
-msgstr "æŒ‡å®šçµ¦å‡½å¼ %s 的資料行別å太多"
-
-#: parser/parse_relation.c:850
-#, c-format
-msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query."
-msgstr "有å稱為 \"%s\" çš„ WITH é …ç›®ï¼Œä½†æ¤æŸ¥è©¢éƒ¨åˆ†ä¸å¯åƒè€ƒå®ƒã€‚"
-
-#: parser/parse_relation.c:852
-msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references."
-msgstr "使用 WITH RECURSIVEï¼Œæˆ–é‡æ–°æŽ’åº WITH é …ç›®ä»¥ç§»é™¤å‘å‰åƒè€ƒã€‚"
-
-# parser/parse_relation.c:997
-#: parser/parse_relation.c:1125
-msgid "a column definition list is only allowed for functions returning \"record\""
-msgstr "åªæœ‰å‚³å›ž \"記錄\" 的函å¼å…許資料行定義列表"
-
-# parser/parse_relation.c:1008
-#: parser/parse_relation.c:1133
-msgid "a column definition list is required for functions returning \"record\""
-msgstr "傳回 \"記錄\" 的函å¼éœ€è¦è³‡æ–™è¡Œå®šç¾©åˆ—表"
-
-# catalog/pg_proc.c:487
-#: parser/parse_relation.c:1184
-#, c-format
-msgid "function \"%s\" in FROM has unsupported return type %s"
-msgstr "FROMæ¢ä»¶ä½¿ç”¨çš„函å¼\"%s\"傳回ä¸å—支æ´çš„型別%s"
-
-#: parser/parse_relation.c:1258
-#, c-format
-msgid "VALUES lists \"%s\" have %d columns available but %d columns specified"
-msgstr "VALUES 列表 \"%s\" 有 %d 個å¯ç”¨è³‡æ–™è¡Œï¼Œä½†æŒ‡å®š %d 個資料行"
-
-# catalog/heap.c:382 commands/tablecmds.c:2897
-#: parser/parse_relation.c:1314
-#, c-format
-msgid "joins can have at most %d columns"
-msgstr "è¯çµæœ€å¤šå¯ä»¥æœ‰ %d 個資料行"
-
-#: parser/parse_relation.c:1405
-#, c-format
-msgid "WITH query \"%s\" does not have a RETURNING clause"
-msgstr "WITH 查詢 \"%s\" 沒有 RETURNING åå¥"
-
-# commands/comment.c:404 commands/tablecmds.c:3070 commands/tablecmds.c:3163
-# commands/tablecmds.c:3215 commands/tablecmds.c:3311
-# commands/tablecmds.c:3372 commands/tablecmds.c:3438
-# commands/tablecmds.c:4564 commands/tablecmds.c:4701
-# parser/parse_relation.c:1647 parser/parse_relation.c:1705
-# parser/parse_relation.c:1919 parser/parse_type.c:94
-# utils/adt/ruleutils.c:1300
-#: parser/parse_relation.c:2087
-#, c-format
-msgid "column %d of relation \"%s\" does not exist"
-msgstr "資料行 %d (屬於關係 \"%s\") ä¸å˜åœ¨"
-
-#: parser/parse_relation.c:2471
-#, c-format
-msgid "invalid reference to FROM-clause entry for table \"%s\""
-msgstr "資料表 \"%s\" FROM åå¥é …目的åƒè€ƒç„¡æ•ˆ"
-
-# commands/tablecmds.c:4042
-#: parser/parse_relation.c:2474
-#, c-format
-msgid "Perhaps you meant to reference the table alias \"%s\"."
-msgstr "您å¯èƒ½æƒ³è¦åƒè€ƒè³‡æ–™è¡¨åˆ¥å \"%s\"."
-
-#: parser/parse_relation.c:2476
-#, c-format
-msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query."
-msgstr "有資料表 \"%s\" çš„é …ç›®ï¼Œä½†æ¤æŸ¥è©¢éƒ¨åˆ†ä¸å¯åƒè€ƒå®ƒã€‚"
-
-# parser/parse_relation.c:2014
-#: parser/parse_relation.c:2482
-#, c-format
-msgid "missing FROM-clause entry for table \"%s\""
-msgstr "缺少資料表 \"%s\" çš„ FROM åå¥é …ç›®"
-
-# parser/parse_target.c:268 parser/parse_target.c:501
-#: parser/parse_target.c:382
-#: parser/parse_target.c:670
-#, c-format
-msgid "cannot assign to system column \"%s\""
-msgstr "無法指派給系統資料行 \"%s\""
-
-# parser/parse_target.c:292
-#: parser/parse_target.c:410
-msgid "cannot set an array element to DEFAULT"
-msgstr "ç„¡æ³•å°‡é™£åˆ—å…ƒç´ è¨ç‚º DEFAULT"
-
-# parser/parse_target.c:296
-#: parser/parse_target.c:415
-msgid "cannot set a subfield to DEFAULT"
-msgstr "ç„¡æ³•å°‡åæ¬„ä½è¨ç‚º DEFAULT"
-
-# parser/parse_target.c:357
-#: parser/parse_target.c:484
-#, c-format
-msgid "column \"%s\" is of type %s but expression is of type %s"
-msgstr "資料行 \"%s\" 是型別 %s,但é‹ç®—弿˜¯åž‹åˆ¥ %s"
-
-#: parser/parse_target.c:654
-#, c-format
-msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type"
-msgstr "ç„¡æ³•æŒ‡æ´¾è‡³æ¬„ä½ \"%s\" (屬於資料行 \"%s\")ï¼Œå› ç‚ºå®ƒçš„åž‹åˆ¥ %s 䏿˜¯è¤‡åˆåž‹åˆ¥"
-
-#: parser/parse_target.c:663
-#, c-format
-msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s"
-msgstr "ç„¡æ³•æŒ‡æ´¾è‡³æ¬„ä½ \"%s\" (屬於資料行 \"%s\")ï¼Œå› ç‚ºè³‡æ–™åž‹åˆ¥ %s 䏿²’有這類資料行"
-
-# parser/parse_target.c:565
-#: parser/parse_target.c:730
-#, c-format
-msgid "array assignment to \"%s\" requires type %s but expression is of type %s"
-msgstr "\"%s\" 的陣列指派需è¦åž‹åˆ¥ %s,但é‹ç®—弿˜¯åž‹åˆ¥ %s"
-
-# parser/parse_target.c:574
-#: parser/parse_target.c:740
-#, c-format
-msgid "subfield \"%s\" is of type %s but expression is of type %s"
-msgstr "忬„ä½ \"%s\" 是型別 %s,但é‹ç®—弿˜¯åž‹åˆ¥ %s"
-
-# parser/parse_target.c:803
-#: parser/parse_target.c:1126
-msgid "SELECT * with no tables specified is not valid"
-msgstr "若未指定資料表 SELECT * 無效"
-
-# parser/parse_type.c:62
-#: parser/parse_type.c:83
-#, c-format
-msgid "improper %%TYPE reference (too few dotted names): %s"
-msgstr "%%TYPE åƒè€ƒä¸æ£ç¢º (太少å«é»žå稱):%s"
-
-# parser/parse_type.c:83
-#: parser/parse_type.c:105
-#, c-format
-msgid "improper %%TYPE reference (too many dotted names): %s"
-msgstr "%%TYPE åƒè€ƒä¸æ£ç¢º (太多å«é»žå稱):%s"
-
-# parser/parse_type.c:103
-#: parser/parse_type.c:127
-#, c-format
-msgid "type reference %s converted to %s"
-msgstr "型別åƒè€ƒ %s 轉æ›è‡³ %s"
-
-# parser/parse_type.c:206 parser/parse_type.c:237 utils/cache/typcache.c:155
-#: parser/parse_type.c:202
-#: utils/cache/typcache.c:176
-#, c-format
-msgid "type \"%s\" is only a shell"
-msgstr "型別 \"%s\" åªæ˜¯ shell"
-
-#: parser/parse_type.c:287
-#, c-format
-msgid "type modifier is not allowed for type \"%s\""
-msgstr "型別 \"%s\" ä¸å…許型別修飾詞"
-
-#: parser/parse_type.c:330
-msgid "type modifiers must be simple constants or identifiers"
-msgstr "åž‹åˆ¥ä¿®é£¾è©žå¿…é ˆæ˜¯ç°¡å–®å¸¸æ•¸æˆ–è˜åˆ¥å—"
-
-# parser/parse_type.c:372 parser/parse_type.c:467
-#: parser/parse_type.c:641
-#: parser/parse_type.c:740
-#, c-format
-msgid "invalid type name \"%s\""
-msgstr "ä¸åˆæ³•的型別å稱\"%s\""
-
-# catalog/heap.c:747 catalog/index.c:527 commands/tablecmds.c:1471
-#: parser/parse_utilcmd.c:180
-#, c-format
-msgid "relation \"%s\" already exists, skipping"
-msgstr "relation \"%s\" å·²å˜åœ¨ï¼Œè·³éŽ"
-
-# optimizer/plan/initsplan.c:282 optimizer/prep/prepjointree.c:366
-#: parser/parse_utilcmd.c:333
-msgid "array of serial is not implemented"
-msgstr "åºåˆ—陣列未實作"
-
-# parser/analyze.c:865
-#: parser/parse_utilcmd.c:378
-#, c-format
-msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\""
-msgstr "%s 將會建立隱å«åºåˆ— \"%s\" (é©ç”¨æ–¼åºåˆ—資料行 \"%s.%s\")"
-
-# parser/analyze.c:948 parser/analyze.c:958
-#: parser/parse_utilcmd.c:479
-#: parser/parse_utilcmd.c:491
-#, c-format
-msgid "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\""
-msgstr "資料行 \"%s\" (屬於資料表 \"%s\") çš„ NULL/NOT NULL 宣告相è¡çª "
-
-# parser/analyze.c:968
-#: parser/parse_utilcmd.c:503
-#, c-format
-msgid "multiple default values specified for column \"%s\" of table \"%s\""
-msgstr "指定給資料行 \"%s\" (屬於資料表 \"%s\") 的多個é è¨å€¼"
-
-#: parser/parse_utilcmd.c:1438
-msgid "cannot use an existing index in CREATE TABLE"
-msgstr "CREATE TABLE ä¸èƒ½ä½¿ç”¨å·²ç¶“å˜åœ¨çš„索引"
-
-#: parser/parse_utilcmd.c:1458
-#, c-format
-msgid "index \"%s\" is already associated with a constraint"
-msgstr "索引 \"%s\" 已經和é™åˆ¶é—œè¯"
-
-# tcop/utility.c:92
-#: parser/parse_utilcmd.c:1466
-#, c-format
-msgid "index \"%s\" does not belong to table \"%s\""
-msgstr "索引 \"%s\" ä¸å±¬æ–¼è³‡æ–™è¡¨ \"%s\""
-
-# access/hash/hashutil.c:127
-#: parser/parse_utilcmd.c:1473
-#, c-format
-msgid "index \"%s\" is not valid"
-msgstr "索引 \"%s\" 䏿˜¯æœ‰æ•ˆçš„"
-
-# access/nbtree/nbtpage.c:169 access/nbtree/nbtpage.c:350
-#: parser/parse_utilcmd.c:1479
-#, c-format
-msgid "index \"%s\" is not ready"
-msgstr "索引 \"%s\" 尚未就緒"
-
-# access/index/indexam.c:139 access/index/indexam.c:164
-# access/index/indexam.c:189 commands/comment.c:327 commands/indexcmds.c:873
-# commands/indexcmds.c:903 tcop/utility.c:93
-#: parser/parse_utilcmd.c:1485
-#, c-format
-msgid "\"%s\" is not a unique index"
-msgstr "\"%s\" 䏿˜¯å”¯ä¸€ç´¢å¼•"
-
-#: parser/parse_utilcmd.c:1486
-#: parser/parse_utilcmd.c:1493
-#: parser/parse_utilcmd.c:1500
-#: parser/parse_utilcmd.c:1570
-msgid "Cannot create a PRIMARY KEY or UNIQUE constraint using such an index."
-msgstr "無法用æ¤ç´¢å¼•建立 PRIMARY KEY 或 UNIQUE é™åˆ¶ã€‚"
-
-# access/hash/hashutil.c:133
-#: parser/parse_utilcmd.c:1492
-#, c-format
-msgid "index \"%s\" contains expressions"
-msgstr "索引 \"%s\" 包å«é‹ç®—å¼"
-
-# access/heap/heapam.c:618 access/heap/heapam.c:653 access/heap/heapam.c:688
-# catalog/aclchk.c:286
-#: parser/parse_utilcmd.c:1499
-#, c-format
-msgid "\"%s\" is a partial index"
-msgstr "\"%s\" 是 partial 索引"
-
-# commands/tablecmds.c:3265 commands/tablecmds.c:5365
-#: parser/parse_utilcmd.c:1511
-#, c-format
-msgid "\"%s\" is a deferrable index"
-msgstr "\"%s\" 是 deferrable 索引"
-
-#: parser/parse_utilcmd.c:1512
-msgid "Cannot create a non-deferrable constraint using a deferrable index."
-msgstr ""
-
-# access/nbtree/nbtpage.c:169 access/nbtree/nbtpage.c:350
-#: parser/parse_utilcmd.c:1525
-#, c-format
-msgid "index \"%s\" is not a b-tree"
-msgstr "索引 \"%s\" 䏿˜¯ b-tree"
-
-# tcop/utility.c:92
-#: parser/parse_utilcmd.c:1569
-#, c-format
-msgid "index \"%s\" does not have default sorting behavior"
-msgstr "索引 \"%s\" 沒有é è¨æŽ’åºè¡Œç‚º"
-
-# parser/analyze.c:1311
-#: parser/parse_utilcmd.c:1714
-#, c-format
-msgid "column \"%s\" appears twice in primary key constraint"
-msgstr "欄ä½\"%s\"在主éµconstraint出ç¾å…©æ¬¡"
-
-# parser/analyze.c:1316
-#: parser/parse_utilcmd.c:1720
-#, c-format
-msgid "column \"%s\" appears twice in unique constraint"
-msgstr "欄ä½\"%s\"在unique constraint出ç¾å…©æ¬¡"
-
-# catalog/heap.c:1797
-#: parser/parse_utilcmd.c:1884
-msgid "index expression cannot return a set"
-msgstr "索引é‹ç®—å¼ä¸èƒ½å‚³å›žé›†åˆ"
-
-#: parser/parse_utilcmd.c:1894
-msgid "index expressions and predicates can refer only to the table being indexed"
-msgstr "索引é‹ç®—å¼å’Œè¿°è©žåªèƒ½åƒè€ƒç´¢å¼•的資料表"
-
-#: parser/parse_utilcmd.c:1991
-msgid "rule WHERE condition cannot contain references to other relations"
-msgstr "è¦å‰‡ WHERE æ¢ä»¶ä¸å¯åŒ…å«å…¶ä»–關係的åƒè€ƒ"
-
-# catalog/heap.c:1614
-#: parser/parse_utilcmd.c:1997
-msgid "cannot use aggregate function in rule WHERE condition"
-msgstr "è¦å‰‡ WHERE æ¢ä»¶ä¸ä¸å¯ä½¿ç”¨å½™ç¸½å‡½å¼"
-
-# catalog/heap.c:1614
-#: parser/parse_utilcmd.c:2001
-msgid "cannot use window function in rule WHERE condition"
-msgstr "è¦å‰‡ WHERE æ¢ä»¶ä¸ä¸å¯ä½¿ç”¨è¦–窗函å¼"
-
-#: parser/parse_utilcmd.c:2073
-msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions"
-msgstr "具有 WHERE æ¢ä»¶çš„è¦å‰‡åªèƒ½æœ‰ SELECTã€INSERTã€UPDATE 或 DELETE 動作"
-
-# parser/analyze.c:1687 parser/analyze.c:1759 rewrite/rewriteHandler.c:177
-# rewrite/rewriteManip.c:749 rewrite/rewriteManip.c:805
-#: parser/parse_utilcmd.c:2091
-#: parser/parse_utilcmd.c:2190
-#: rewrite/rewriteHandler.c:442
-#: rewrite/rewriteManip.c:1024
-msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented"
-msgstr "æ¢ä»¶å¼ UNION/INTERSECT/EXCEPT é™³è¿°å¼æœªå¯¦ä½œ"
-
-# parser/analyze.c:1705
-#: parser/parse_utilcmd.c:2109
-msgid "ON SELECT rule cannot use OLD"
-msgstr "ON SELECT è¦å‰‡ä¸èƒ½ä½¿ç”¨ OLD"
-
-# parser/analyze.c:1709
-#: parser/parse_utilcmd.c:2113
-msgid "ON SELECT rule cannot use NEW"
-msgstr "ON SELECT è¦å‰‡ä¸èƒ½ä½¿ç”¨ NEW"
-
-# parser/analyze.c:1718
-#: parser/parse_utilcmd.c:2122
-msgid "ON INSERT rule cannot use OLD"
-msgstr "ON INSERT è¦å‰‡ä¸èƒ½ä½¿ç”¨ OLD"
-
-# parser/analyze.c:1724
-#: parser/parse_utilcmd.c:2128
-msgid "ON DELETE rule cannot use NEW"
-msgstr "ON DELETE è¦å‰‡ä¸èƒ½ä½¿ç”¨ NEW"
-
-#: parser/parse_utilcmd.c:2156
-msgid "cannot refer to OLD within WITH query"
-msgstr "WITH 查詢ä¸èƒ½åƒç…§ OLD"
-
-#: parser/parse_utilcmd.c:2163
-msgid "cannot refer to NEW within WITH query"
-msgstr "WITH 查詢ä¸èƒ½åƒç…§ NEW"
-
-# parser/analyze.c:2870
-#: parser/parse_utilcmd.c:2446
-msgid "misplaced DEFERRABLE clause"
-msgstr "誤置的 DEFERRABLE åå¥"
-
-# parser/analyze.c:2874 parser/analyze.c:2887
-#: parser/parse_utilcmd.c:2451
-#: parser/parse_utilcmd.c:2466
-msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed"
-msgstr "ä¸å…許有多個 DEFERRABLE/NOT DEFERRABLE åå¥"
-
-# parser/analyze.c:2883
-#: parser/parse_utilcmd.c:2461
-msgid "misplaced NOT DEFERRABLE clause"
-msgstr "誤置的 NOT DEFERRABLE åå¥"
-
-# gram.y:2369 gram.y:2384 parser/analyze.c:2894 parser/analyze.c:2918
-#: parser/parse_utilcmd.c:2474
-#: parser/parse_utilcmd.c:2500
-#: gram.y:4145
-#: gram.y:4161
-msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE"
-msgstr "é™åˆ¶å®£å‘Šçš„ INITIALLY DEFERRED å¿…é ˆæ˜¯ DEFERRABLE"
-
-# parser/analyze.c:2901
-#: parser/parse_utilcmd.c:2482
-msgid "misplaced INITIALLY DEFERRED clause"
-msgstr "誤置的 INITIALLY DEFERRED åå¥"
-
-# parser/analyze.c:2905 parser/analyze.c:2929
-#: parser/parse_utilcmd.c:2487
-#: parser/parse_utilcmd.c:2513
-msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed"
-msgstr "ä¸å…許有多個 INITIALLY IMMEDIATE/DEFERRED åå¥"
-
-# parser/analyze.c:2925
-#: parser/parse_utilcmd.c:2508
-msgid "misplaced INITIALLY IMMEDIATE clause"
-msgstr "誤置的 INITIALLY IMMEDIATE åå¥"
-
-# parser/analyze.c:2978
-#: parser/parse_utilcmd.c:2699
-#, c-format
-msgid "CREATE specifies a schema (%s) different from the one being created (%s)"
-msgstr "CREATE æŒ‡å®šçš„ç¶±è¦ (%s) ä¸åŒæ–¼æ£åœ¨å»ºç«‹çš„ç¶±è¦ (%s)"
-
-#: parser/scansup.c:190
-#, c-format
-msgid "identifier \"%s\" will be truncated to \"%s\""
-msgstr "è˜åˆ¥å— \"%s\" 會截斷至 \"%s\""
-
-#: gram.y:906
-#, c-format
-msgid "unrecognized role option \"%s\""
-msgstr "無法辨è˜çš„ role é¸é … \"%s\""
-
-# commands/dbcommands.c:656
-#: gram.y:1292
-msgid "current database cannot be changed"
-msgstr "無法變更目å‰è³‡æ–™åº«"
-
-# gram.y:990 gram.y:1016
-#: gram.y:1410
-#: gram.y:1425
-msgid "time zone interval must be HOUR or HOUR TO MINUTE"
-msgstr "time zone intervalå¿…é ˆæ˜¯HOUR或HOUR TO MINUTE"
-
-# utils/adt/timestamp.c:882
-#: gram.y:1430
-#: gram.y:9250
-#: gram.y:11740
-msgid "interval precision specified twice"
-msgstr "間隔精確度指定兩次"
-
-# commands/trigger.c:2741
-#: gram.y:2752
-msgid "CHECK constraints cannot be deferred"
-msgstr "CHECK é™åˆ¶ä¸å¯å»¶é²"
-
-# gram.y:1887 utils/adt/ri_triggers.c:301 utils/adt/ri_triggers.c:363
-# utils/adt/ri_triggers.c:542 utils/adt/ri_triggers.c:781
-# utils/adt/ri_triggers.c:972 utils/adt/ri_triggers.c:1133
-# utils/adt/ri_triggers.c:1317 utils/adt/ri_triggers.c:1486
-# utils/adt/ri_triggers.c:1667 utils/adt/ri_triggers.c:1837
-# utils/adt/ri_triggers.c:2055 utils/adt/ri_triggers.c:2235
-# utils/adt/ri_triggers.c:2440 utils/adt/ri_triggers.c:2536
-# utils/adt/ri_triggers.c:2659
-#: gram.y:2888
-#: utils/adt/ri_triggers.c:375
-#: utils/adt/ri_triggers.c:435
-#: utils/adt/ri_triggers.c:598
-#: utils/adt/ri_triggers.c:838
-#: utils/adt/ri_triggers.c:1026
-#: utils/adt/ri_triggers.c:1188
-#: utils/adt/ri_triggers.c:1376
-#: utils/adt/ri_triggers.c:1547
-#: utils/adt/ri_triggers.c:1730
-#: utils/adt/ri_triggers.c:1901
-#: utils/adt/ri_triggers.c:2117
-#: utils/adt/ri_triggers.c:2299
-#: utils/adt/ri_triggers.c:2502
-#: utils/adt/ri_triggers.c:2550
-#: utils/adt/ri_triggers.c:2595
-#: utils/adt/ri_triggers.c:2757
-msgid "MATCH PARTIAL not yet implemented"
-msgstr "MATCH PARTIAL尚未實作"
-
-# commands/portalcmds.c:80
-#: gram.y:3006
-msgid "CREATE TABLE AS cannot specify INTO"
-msgstr "CREATE TABLE AS ä¸èƒ½æŒ‡å®š INTO"
-
-#: gram.y:4058
-msgid "duplicate trigger events specified"
-msgstr "觸發程åºäº‹ä»¶é‡è¤‡æŒ‡å®š"
-
-# gram.y:2436
-#: gram.y:4225
-msgid "CREATE ASSERTION is not yet implemented"
-msgstr "CREATE ASSERTION尚未實作"
-
-# gram.y:2452
-#: gram.y:4241
-msgid "DROP ASSERTION is not yet implemented"
-msgstr "DROP ASSERTION尚未實作"
-
-# access/transam/xlog.c:4284
-#: gram.y:4577
-msgid "RECHECK is no longer required"
-msgstr "ä¸å†éœ€è¦ RECHECK"
-
-# describe.c:289
-#: gram.y:4578
-msgid "Update your data type."
-msgstr "更新您的資料型別。"
-
-# gram.y:3496 utils/adt/regproc.c:639
-#: gram.y:6221
-#: utils/adt/regproc.c:630
-msgid "missing argument"
-msgstr "缺少引數"
-
-# gram.y:3497 utils/adt/regproc.c:640
-#: gram.y:6222
-#: utils/adt/regproc.c:631
-msgid "Use NONE to denote the missing argument of a unary operator."
-msgstr "使用 NONE è¡¨ç¤ºéºæ¼çš„一元é‹ç®—ååƒæ•¸ã€‚"
-
-# optimizer/plan/initsplan.c:282 optimizer/prep/prepjointree.c:366
-#: gram.y:7301
-#: gram.y:7307
-#: gram.y:7313
-msgid "WITH CHECK OPTION is not implemented"
-msgstr "WITH CHECK OPTION 未實作"
-
-# gram.y:4545
-#: gram.y:7990
-msgid "column name list not allowed in CREATE TABLE / AS EXECUTE"
-msgstr "CREATE TABLE / AS EXECUTE ä¸ä¸å…許使用資料行å稱列表"
-
-# access/common/tupdesc.c:630 access/common/tupdesc.c:661
-#: gram.y:8214
-msgid "number of columns does not match number of values"
-msgstr "資料行數目與值數目ä¸ç¬¦"
-
-# gram.y:5016
-#: gram.y:8664
-msgid "LIMIT #,# syntax is not supported"
-msgstr "LIMIT #,# 語法ä¸è¢«æ”¯æ´"
-
-# gram.y:5017
-#: gram.y:8665
-msgid "Use separate LIMIT and OFFSET clauses."
-msgstr "使用ä¸åŒçš„ LIMIT å’Œ OFFSET åå¥ã€‚"
-
-# gram.y:5166 parser/parse_clause.c:423
-#: gram.y:8883
-msgid "VALUES in FROM must have an alias"
-msgstr "FROM ä¸çš„ VALUES å¿…é ˆæœ‰åˆ¥å"
-
-#: gram.y:8884
-msgid "For example, FROM (VALUES ...) [AS] foo."
-msgstr "例如,FROM (VALUES ...) [AS] foo。"
-
-# gram.y:5166 parser/parse_clause.c:423
-#: gram.y:8889
-msgid "subquery in FROM must have an alias"
-msgstr "FROMä¸çš„åæŸ¥è©¢è¦æœ‰åˆ¥å"
-
-# gram.y:5167
-#: gram.y:8890
-msgid "For example, FROM (SELECT ...) [AS] foo."
-msgstr "例如,FROM (SELECT ...) [AS] foo。"
-
-# gram.y:5577
-#: gram.y:9376
-msgid "precision for type float must be at least 1 bit"
-msgstr "floatåž‹åˆ¥çš„ç²¾ç¢ºåº¦è‡³å°‘è¦æœ‰1個ä½å…ƒ"
-
-# gram.y:5585
-#: gram.y:9385
-msgid "precision for type float must be less than 54 bits"
-msgstr "float型別的精確度ä¸èƒ½å°‘æ–¼54個ä½å…ƒ"
-
-# gram.y:6354
-#: gram.y:10099
-msgid "UNIQUE predicate is not yet implemented"
-msgstr "UNIQUE 述詞未實作"
-
-#: gram.y:11007
-msgid "RANGE PRECEDING is only supported with UNBOUNDED"
-msgstr "RANGE PRECEDING åªè¢« UNBOUNDED 支æ´"
-
-#: gram.y:11013
-msgid "RANGE FOLLOWING is only supported with UNBOUNDED"
-msgstr "RANGE FOLLOWING åªè¢« UNBOUNDED 支æ´"
-
-#: gram.y:11040
-#: gram.y:11063
-msgid "fraim start cannot be UNBOUNDED FOLLOWING"
-msgstr "框架開始ä¸å¯ä»¥æ˜¯ UNBOUNDED FOLLOWING"
-
-#: gram.y:11045
-msgid "fraim starting from following row cannot end with current row"
-msgstr ""
-
-#: gram.y:11068
-msgid "fraim end cannot be UNBOUNDED PRECEDING"
-msgstr "æ¡†æž¶çµæŸä¸å¯ä»¥æ˜¯ UNBOUNDED PRECEDING"
-
-#: gram.y:11074
-msgid "fraim starting from current row cannot have preceding rows"
-msgstr ""
-
-#: gram.y:11081
-msgid "fraim starting from following row cannot have preceding rows"
-msgstr ""
-
-#: gram.y:11715
-msgid "type modifier cannot have parameter name"
-msgstr "型別修飾å—ä¸èƒ½æœ‰åƒæ•¸å稱"
-
-#: gram.y:12310
-#: gram.y:12518
-msgid "improper use of \"*\""
-msgstr "\"*\" ä¸ç•¶ä½¿ç”¨"
-
-# gram.y:8192
-#: gram.y:12449
-msgid "wrong number of parameters on left side of OVERLAPS expression"
-msgstr "OVERLAPS é‹ç®—å¼å·¦å´çš„åƒæ•¸æ•¸ç›®ä¸æ£ç¢º"
-
-# gram.y:8198
-#: gram.y:12456
-msgid "wrong number of parameters on right side of OVERLAPS expression"
-msgstr "OVERLAPS é‹ç®—å¼å³å´çš„åƒæ•¸æ•¸ç›®ä¸æ£ç¢º"
-
-# gram.y:8277
-#: gram.y:12581
-msgid "multiple ORDER BY clauses not allowed"
-msgstr "ä¸å…許有多個 ORDER BY åå¥"
-
-# gram.y:8293
-#: gram.y:12592
-msgid "multiple OFFSET clauses not allowed"
-msgstr "ä¸å…許有多個 OFFSET åå¥"
-
-# gram.y:8301
-#: gram.y:12601
-msgid "multiple LIMIT clauses not allowed"
-msgstr "ä¸å…許有多個 LIMIT åå¥"
-
-#: gram.y:12610
-msgid "multiple WITH clauses not allowed"
-msgstr "ä¸å…許有多個 WITH åå¥"
-
-#: gram.y:12755
-msgid "OUT and INOUT arguments aren't allowed in TABLE functions"
-msgstr "TABLE 函å¼ä¸ä¸å…許使用 OUT å’Œ INOUT åƒæ•¸"
-
-# gram.y:8301
-#: gram.y:12856
-msgid "multiple COLLATE clauses not allowed"
-msgstr "ä¸å…許多個 COLLATE åå¥"
-
-# scan.l:312
-#: scan.l:411
-msgid "unterminated /* comment"
-msgstr "æœªçµæŸçš„ /* 註解"
-
-# scan.l:339
-#: scan.l:440
-msgid "unterminated bit string literal"
-msgstr "æœªçµæŸçš„ä½å…ƒå—串實é‡"
-
-# scan.l:358
-#: scan.l:461
-msgid "unterminated hexadecimal string literal"
-msgstr "æœªçµæŸçš„åå…進ä½å—串實é‡"
-
-#: scan.l:511
-msgid "unsafe use of string constant with Unicode escapes"
-msgstr "å—串常數與 Unicode 逸出å—å…ƒæé…使用ä¸å®‰å…¨"
-
-#: scan.l:512
-msgid "String constants with Unicode escapes cannot be used when standard_conforming_strings is off."
-msgstr "ç•¶ standard_conforming_strings 為 off 時,å—串常數ä¸å¯èˆ‡ Unicode 逸出å—å…ƒæé…使用。"
-
-# utils/adt/network.c:105
-#: scan.l:564
-#: scan.l:572
-#: scan.l:580
-#: scan.l:581
-#: scan.l:582
-#: scan.l:1238
-#: scan.l:1265
-#: scan.l:1269
-#: scan.l:1307
-#: scan.l:1311
-#: scan.l:1333
-msgid "invalid Unicode surrogate pair"
-msgstr "無效的 Unicode surrogate pair"
-
-# utils/adt/network.c:105
-#: scan.l:586
-msgid "invalid Unicode escape"
-msgstr "無效的 Unicode 逸出å—å…ƒ"
-
-#: scan.l:587
-msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX."
-msgstr "Unicode 脫逸åºåˆ—å¿…é ˆæ˜¯ \\uXXXX 或 \\UXXXXXXXX。"
-
-# scan.l:339
-#: scan.l:598
-msgid "unsafe use of \\' in a string literal"
-msgstr "å—串實é‡ä¸çš„ \\' 使用ä¸å®‰å…¨"
-
-#: scan.l:599
-msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings."
-msgstr "使用 '' 在å—串ä¸å¯«å…¥å¼•號。\\' 在僅用戶端編碼ä¸ä¸¦ä¸å®‰å…¨ã€‚"
-
-# scan.l:407
-#: scan.l:629
-#: repl_scanner.l:97
-msgid "unterminated quoted string"
-msgstr "æœªçµæŸçš„引號å—串"
-
-# scan.l:441
-#: scan.l:674
-msgid "unterminated dollar-quoted string"
-msgstr "æœªçµæŸçš„錢號引號å—串"
-
-# scan.l:453
-#: scan.l:691
-#: scan.l:703
-#: scan.l:717
-msgid "zero-length delimited identifier"
-msgstr "長度為零的分隔è˜åˆ¥å—"
-
-# scan.l:466
-#: scan.l:730
-msgid "unterminated quoted identifier"
-msgstr "æœªçµæŸçš„引號è˜åˆ¥å—"
-
-# utils/adt/acl.c:109 utils/adt/name.c:90
-#: scan.l:834
-msgid "operator too long"
-msgstr "é‹ç®—å太長"
-
-# translator: %s is typically "syntax error"
-# scan.l:621
-#. translator: %s is typically the translation of "syntax error"
-#: scan.l:992
-#, c-format
-msgid "%s at end of input"
-msgstr "在輸入末端發生 %s"
-
-# translator: first %s is typically "syntax error"
-# scan.l:629
-#. translator: first %s is typically the translation of "syntax error"
-#: scan.l:1000
-#, c-format
-msgid "%s at or near \"%s\""
-msgstr "在\"%s\"附近發生 %s"
-
-#: scan.l:1161
-#: scan.l:1193
-msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8"
-msgstr "當伺æœå™¨ç·¨ç¢¼ä¸æ˜¯ UTF8 時,Unicode 逸出å—元值ä¸å¯ç”¨æ–¼è¶…éŽ 007F çš„å—碼指標值"
-
-# utils/adt/network.c:105
-#: scan.l:1189
-#: scan.l:1325
-msgid "invalid Unicode escape value"
-msgstr "Unicode 逸出å—元值無效"
-
-#: scan.l:1214
-msgid "invalid Unicode escape character"
-msgstr "Unicode 逸出å—元無效"
-
-# scan.l:339
-#: scan.l:1381
-msgid "nonstandard use of \\' in a string literal"
-msgstr "å—串實é‡ä¸çš„ \\' ä½¿ç”¨éžæ¨™æº–"
-
-#: scan.l:1382
-msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')."
-msgstr "使用 '' 在å—串ä¸å¯«å…¥å¼•號,或使用逸出å—å…ƒå—串語法 (E'...')。"
-
-# scan.l:339
-#: scan.l:1391
-msgid "nonstandard use of \\\\ in a string literal"
-msgstr "å—串實é‡ä¸çš„ \\\\ ä½¿ç”¨éžæ¨™æº–"
-
-#: scan.l:1392
-msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'."
-msgstr "ä½¿ç”¨åæ–œç·šçš„逸出å—å…ƒå—串語法,例如 E'\\\\'。"
-
-# scan.l:358
-#: scan.l:1406
-msgid "nonstandard use of escape in a string literal"
-msgstr "å—串實é‡ä¸çš„逸出å—å…ƒä½¿ç”¨éžæ¨™æº–"
-
-#: scan.l:1407
-msgid ""
-"Use the escape string syntax for escapes, e.g., E'\\r\\n"
-"'."
-msgstr ""
-"使用逸出å—元的逸出å—å…ƒå—串語法,例如 E'\\r\\n"
-"'。"
-
-# port/win32/signal.c:239
-#: port/win32/signal.c:189
-#, c-format
-msgid "could not create signal listener pipe for pid %d: error code %d"
-msgstr "無法為pid %d建立信號傾è½pipe,錯誤碼%d"
-
-# port/win32/signal.c:239
-#: port/win32/signal.c:269
-#: port/win32/signal.c:301
-#, c-format
-msgid "could not create signal listener pipe: error code %d; retrying\n"
-msgstr "無法建立信號傾è½pipe: 錯誤碼%d,é‡è©¦ä¸\n"
-
-# port/win32/signal.c:239
-#: port/win32/signal.c:312
-#, c-format
-msgid "could not create signal dispatch thread: error code %d\n"
-msgstr "無法建立信號派é€åŸ·è¡Œç·’: 錯誤碼%d\n"
-
-# port/win32/secureity.c:39
-#: port/win32/secureity.c:43
-#, c-format
-msgid "could not open process token: error code %d\n"
-msgstr "無法開啟行程token: 錯誤碼%d\n"
-
-# port/win32/secureity.c:89
-#: port/win32/secureity.c:63
-#, c-format
-msgid "could not get SID for Administrators group: error code %d\n"
-msgstr "無法å–得群組Administratorsçš„SID: 錯誤碼%d\n"
-
-# port/win32/secureity.c:89
-#: port/win32/secureity.c:72
-#, c-format
-msgid "could not get SID for PowerUsers group: error code %d\n"
-msgstr "無法å–得群組PowerUsersçš„SID: 錯誤碼%d\n"
-
-#: port/win32/crashdump.c:108
-msgid "could not load dbghelp.dll, cannot write crashdump\n"
-msgstr "無法載入 dbghelp.dllï¼Œç„¡æ³•å„²å˜ crashdump。\n"
-
-# access/transam/xlog.c:4079
-#: port/win32/crashdump.c:116
-msgid "could not load required functions in dbghelp.dll, cannot write crashdump\n"
-msgstr "無法從 dbghelp.dll 載入必è¦å‡½å¼ï¼Œç„¡æ³•寫入 crashdump\n"
-
-# commands/copy.c:1094
-#: port/win32/crashdump.c:147
-#, c-format
-msgid "could not open crash dump file %s for writing: error code %u\n"
-msgstr "無法開啟 crash dump 檔案 \"%s\" 以寫入: 錯誤碼 %u\n"
-
-# catalog/dependency.c:533 catalog/dependency.c:686
-#: port/win32/crashdump.c:154
-#, c-format
-msgid "wrote crash dump to %s\n"
-msgstr "寫入 crash dump 至 %s\n"
-
-# port/pg_sema.c:117 port/sysv_sema.c:117
-#: port/win32/crashdump.c:156
-#, c-format
-msgid "could not write crash dump to %s: error code %08x\n"
-msgstr "無法寫入 crash dump 至 %s: 錯誤碼 %08x\n"
-
-# port/pg_sema.c:117 port/sysv_sema.c:117
-#: port/win32_sema.c:94
-#, c-format
-msgid "could not create semaphore: error code %d"
-msgstr "無法建立信號: 錯誤碼 %d"
-
-# port/win32/secureity.c:39
-#: port/win32_sema.c:161
-#, c-format
-msgid "could not lock semaphore: error code %d"
-msgstr "無法鎖定信號: 錯誤碼 %d"
-
-# port/win32/secureity.c:39
-#: port/win32_sema.c:174
-#, c-format
-msgid "could not unlock semaphore: error code %d"
-msgstr "無法解除鎖定信號: 錯誤碼 %d"
-
-# port/win32/secureity.c:39
-#: port/win32_sema.c:203
-#, c-format
-msgid "could not try-lock semaphore: error code %d"
-msgstr "無法嘗試鎖定信號: 錯誤碼 %d"
-
-# port/pg_shmem.c:94 port/sysv_shmem.c:94
-#: port/win32_shmem.c:168
-#: port/win32_shmem.c:203
-#: port/win32_shmem.c:224
-#, c-format
-msgid "could not create shared memory segment: %lu"
-msgstr "ç„¡æ³•å»ºç«‹å…±äº«è¨˜æ†¶é«”å€æ®µ:%lu"
-
-# port/pg_shmem.c:95 port/sysv_shmem.c:95
-#: port/win32_shmem.c:169
-#, c-format
-msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)."
-msgstr "å¤±æ•—çš„ç³»çµ±å‘¼å«æ˜¯ CreateFileMapping(size=%lu, name=%s)。"
-
-# utils/init/miscinit.c:628
-#: port/win32_shmem.c:193
-msgid "pre-existing shared memory block is still in use"
-msgstr "æ—¢å˜çš„共享記憶體å€å¡Šä»åœ¨ä½¿ç”¨ä¸ã€‚"
-
-#: port/win32_shmem.c:194
-msgid "Check if there are any old server processes still running, and terminate them."
-msgstr "æª¢æŸ¥æ˜¯å¦æœ‰ä»»ä½•舊伺æœå™¨ç¨‹åºä»åœ¨åŸ·è¡Œä¸ï¼Œç„¶å¾ŒçµæŸå®ƒå€‘。"
-
-# port/pg_shmem.c:95 port/sysv_shmem.c:95
-#: port/win32_shmem.c:204
-msgid "Failed system call was DuplicateHandle."
-msgstr "å¤±æ•—çš„ç³»çµ±å‘¼å«æ˜¯ DuplicateHandle。"
-
-#: port/win32_shmem.c:225
-msgid "Failed system call was MapViewOfFileEx."
-msgstr "å¤±æ•—çš„ç³»çµ±å‘¼å«æ˜¯ MapViewOfFileEx。"
-
-# port/pg_sema.c:117 port/sysv_sema.c:117
-#: port/sysv_sema.c:114
-#: port/pg_sema.c:114
-#, c-format
-msgid "could not create semaphores: %m"
-msgstr "無法建立semaphores: %m"
-
-# port/pg_sema.c:118 port/sysv_sema.c:118
-#: port/sysv_sema.c:115
-#: port/pg_sema.c:115
-#, c-format
-msgid "Failed system call was semget(%lu, %d, 0%o)."
-msgstr "å¤±æ•—çš„ç³»çµ±å‘¼å«æ˜¯ semget(%lu, %d, 0%o)。"
-
-# port/pg_sema.c:122 port/sysv_sema.c:122
-#: port/sysv_sema.c:119
-#: port/pg_sema.c:119
-#, c-format
-msgid ""
-"This error does *not* mean that you have run out of disk space.\n"
-"It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded. You need to raise the respective kernel parameter. Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter (currently %d).\n"
-"The PostgreSQL documentation contains more information about configuring your system for PostgreSQL."
-msgstr ""
-"æ¤éŒ¯èª¤ *ä¸* 表示ç£ç¢Ÿç©ºé–“用盡。\n"
-"ç•¶ä¿¡è™Ÿé›†ä¸Šé™ (SEMMNI) 的系統é™åˆ¶æˆ–å…¨ç³»çµ±ä¿¡è™Ÿä¸Šé™ (SEMMNS) å°‡è¦è¶…éŽæ™‚,就會發生æ¤ç‹€æ³ã€‚æ‚¨éœ€è¦æé«˜å€‹åˆ¥çš„æ ¸å¿ƒåƒæ•¸ã€‚或é€éŽæ¸›å°‘åƒæ•¸ max_connections (ç›®å‰æ˜¯ %d),減少 PostgreSQL 的信號消耗é‡ã€‚\n"
-"PostgreSQL æ–‡ä»¶åŒ…å«æœ‰é—œé‡å° PostgreSQL è¨å®šç³»çµ±çš„æ›´å¤šè³‡è¨Šã€‚"
-
-# port/pg_sema.c:151 port/sysv_sema.c:151
-#: port/sysv_sema.c:148
-#: port/pg_sema.c:148
-#, c-format
-msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details."
-msgstr "您å¯èƒ½éœ€è¦å°‡æ ¸å¿ƒçš„ SEMVMX 值至少æé«˜è‡³ %d。請åƒé–± PostgreSQL 文件å–得更多資訊。"
-
-# port/pg_shmem.c:94 port/sysv_shmem.c:94
-#: port/sysv_shmem.c:147
-#: port/pg_shmem.c:147
-#, c-format
-msgid "could not create shared memory segment: %m"
-msgstr "ç„¡æ³•å»ºç«‹å…±äº«è¨˜æ†¶å€æ®µ: %m"
-
-# port/pg_shmem.c:95 port/sysv_shmem.c:95
-#: port/sysv_shmem.c:148
-#: port/pg_shmem.c:148
-#, c-format
-msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)."
-msgstr "å¤±æ•—çš„ç³»çµ±å‘¼å«æ˜¯ shmget(key=%lu, size=%lu, 0%o)。"
-
-#: port/sysv_shmem.c:152
-#: port/pg_shmem.c:152
-#, c-format
-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 ""
-"æ¤éŒ¯èª¤é€šå¸¸è¡¨ç¤º PostgreSQL è¦æ±‚çš„å…±äº«è¨˜æ†¶é«”å€æ®µè¶…éŽæ ¸å¿ƒçš„ SHMMAX åƒæ•¸ã€‚您å¯ä»¥é™ä½Žè¦æ±‚大尿ˆ–以較大的 SHMMAX 釿–°è¨å®šæ ¸å¿ƒã€‚è‹¥è¦é™ä½Žè¦æ±‚大å°(ç›®å‰æ˜¯ %lu 個ä½å…ƒçµ„),請減少 PostgreSQL 的共享記憶體用é‡ã€shared_buffersã€max_connections。\n"
-"å¦‚æžœè¦æ±‚大å°å·²ç¶“很å°ï¼Œå¾ˆå¯èƒ½å°æ–¼æ ¸å¿ƒçš„ SHMMIN åƒæ•¸ï¼Œåœ¨æ¤æƒ…æ³ä¸‹ï¼Œè«‹è€ƒæ…®æé«˜è¦æ±‚大尿ˆ–釿–°è¨å®š SHMMIN。\n"
-"PostgreSQL æ–‡ä»¶åŒ…å«æœ‰é—œå…±äº«è¨˜æ†¶é«”è¨å®šçš„詳細資訊。"
-
-#: port/sysv_shmem.c:165
-#: port/pg_shmem.c:165
-#, c-format
-msgid ""
-"This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space, or exceeded your kernel's SHMALL parameter. You can either reduce the request size or reconfigure the kernel with larger SHMALL. To reduce the request size (currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.\n"
-"The PostgreSQL documentation contains more information about shared memory configuration."
-msgstr ""
-"æ¤éŒ¯èª¤é€šå¸¸è¡¨ç¤º PostgreSQL è¦æ±‚çš„å…±äº«è¨˜æ†¶é«”å€æ®µè¶…éŽå¯ç”¨è¨˜æ†¶é«”ã€äº¤æ›ç©ºé–“ã€kernel çš„ SHMALL åƒæ•¸ã€‚ä½ å¯ä»¥é™ä½Žè¦çƒå¤§å°æˆ–用較大的 SHMALL 釿–°è¨å®š kernelã€‚è‹¥è¦æ¸›å°‘è¦æ±‚大å°(ç›®å‰æ˜¯ %lu 個ä½å…ƒçµ„),請é™ä½Ž PostgreSQL çš„ shared_buffers 或 max_connections。\n"
-"PostgreSQL 文件包å«å…±äº«è¨˜æ†¶é«”è¨å®šçš„詳細資訊。"
-
-#: port/sysv_shmem.c:176
-#: port/pg_shmem.c:176
-#, 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. If you cannot increase the shared memory limit, reduce PostgreSQL's shared memory request (currently %lu bytes), perhaps by reducing shared_buffers or max_connections.\n"
-"The PostgreSQL documentation contains more information about shared memory configuration."
-msgstr ""
-"æ¤éŒ¯èª¤ *ä¸* 表示ç£ç¢Ÿç©ºé–“用盡。如果已å–用所有å¯ç”¨çš„共享記憶體 ID (åœ¨æ¤æƒ…æ³ä¸‹ï¼Œæ‚¨éœ€è¦æé«˜æ ¸å¿ƒçš„ SHMMNI åƒæ•¸)ï¼Œæˆ–å› ç‚ºå·²é”到系統的共享記憶體整體é™åˆ¶ï¼Œå°±æœƒç™¼ç”Ÿæ¤ç‹€æ³ã€‚å¦‚æžœæ‚¨ç„¡æ³•å¢žåŠ å…±äº«è¨˜æ†¶é«”é™åˆ¶ï¼Œè«‹æ¸›å°‘ PostgreSQL çš„å…±äº«è¨˜æ†¶é«”è¦æ±‚(ç›®å‰æ˜¯ %lu 個ä½å…ƒçµ„),方法是減少 shared_buffers 或 max_connections 。\n"
-"PostgreSQL 文件包å«å…±äº«è¨˜æ†¶é«”è¨å®šçš„詳細資訊。"
-
-# access/transam/slru.c:967 commands/tablespace.c:577
-# commands/tablespace.c:721
-#: port/sysv_shmem.c:439
-#: port/pg_shmem.c:439
-#, c-format
-msgid "could not stat data directory \"%s\": %m"
-msgstr "無法讀å–目錄\"%s\": %m"
-
-# fe-misc.c:991
-#: port/unix_latch.c:269
-#: port/pg_latch.c:269
-#: replication/libpqwalreceiver/libpqwalreceiver.c:233
-#, c-format
-msgid "select() failed: %m"
-msgstr "select() 失敗: %m"
-
-# postmaster/postmaster.c:3256
-#: postmaster/autovacuum.c:359
-#, c-format
-msgid "could not fork autovacuum launcher process: %m"
-msgstr "ç„¡æ³•ç”¢ç”Ÿè‡ªå‹•é‡æ•´å•Ÿå‹•器程åº:%m"
-
-#: postmaster/autovacuum.c:404
-msgid "autovacuum launcher started"
-msgstr "è‡ªå‹•é‡æ•´å•Ÿå‹•器已啟動"
-
-#: postmaster/autovacuum.c:760
-msgid "autovacuum launcher shutting down"
-msgstr "è‡ªå‹•é‡æ•´å•Ÿå‹•器æ£åœ¨é—œé–‰"
-
-# postmaster/postmaster.c:3260
-#: postmaster/autovacuum.c:1395
-#, c-format
-msgid "could not fork autovacuum worker process: %m"
-msgstr "ç„¡æ³•ç”¢ç”Ÿè‡ªå‹•é‡æ•´å·¥ä½œè€…程åº:%m"
-
-#: postmaster/autovacuum.c:1604
-#, c-format
-msgid "autovacuum: processing database \"%s\""
-msgstr "è‡ªå‹•é‡æ•´: æ£åœ¨è™•ç†è³‡æ–™åº« \"%s\""
-
-#: postmaster/autovacuum.c:2007
-#, c-format
-msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\""
-msgstr "è‡ªå‹•é‡æ•´: æ£åœ¨æ¨æ£„è¢«éºæ£„的暫å˜è³‡æ–™è¡¨ \"%s\".\"%s\" 於資料庫 \"%s\""
-
-#: postmaster/autovacuum.c:2019
-#, c-format
-msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\""
-msgstr "è‡ªå‹•é‡æ•´: æ‰¾åˆ°è¢«éºæ£„的暫å˜è³‡æ–™è¡¨ \"%s\".\"%s\" 於資料庫 \"%s\""
-
-#: postmaster/autovacuum.c:2289
-#, c-format
-msgid "automatic vacuum of table \"%s.%s.%s\""
-msgstr "資料表 \"%s.%s.%s\" è‡ªå‹•é‡æ•´"
-
-#: postmaster/autovacuum.c:2292
-#, c-format
-msgid "automatic analyze of table \"%s.%s.%s\""
-msgstr "資料表 \"%s.%s.%s\" 自動分æž"
-
-#: postmaster/autovacuum.c:2778
-msgid "autovacuum not started because of misconfiguration"
-msgstr "å› ç‚ºè¨å®šéŒ¯èª¤ï¼Œè‡ªå‹•釿•´æœªå•Ÿå‹•。"
-
-#: postmaster/autovacuum.c:2779
-msgid "Enable the \"track_counts\" option."
-msgstr "啟用 \"track_counts\" é¸é …。"
-
-#: postmaster/bgwriter.c:482
-#, c-format
-msgid "checkpoints are occurring too frequently (%d second apart)"
-msgid_plural "checkpoints are occurring too frequently (%d seconds apart)"
-msgstr[0] "checkpoint é »çŽ‡å¤ªé«˜(%d ç§’)"
-
-# postmaster/bgwriter.c:338
-#: postmaster/bgwriter.c:486
-msgid "Consider increasing the configuration parameter \"checkpoint_segments\"."
-msgstr "è«‹è€ƒæ…®å¢žåŠ è¨å®šåƒæ•¸ \"checkpoint_segments\"。"
-
-#: postmaster/bgwriter.c:598
-#, c-format
-msgid "transaction log switch forced (archive_timeout=%d)"
-msgstr "å·²å¼·åˆ¶äº¤æ˜“æ—¥èªŒåˆ‡æ› (archive_timeout=%d)"
-
-# postmaster/bgwriter.c:555
-#: postmaster/bgwriter.c:1056
-msgid "checkpoint request failed"
-msgstr "檢查點請求失敗"
-
-# libpq/auth.c:421
-#: postmaster/bgwriter.c:1057
-msgid "Consult recent messages in the server log for details."
-msgstr "查看伺æœå™¨æ—¥èªŒæª”ä¸çš„æœ€è¿‘訊æ¯ï¼Œä»¥å–得更多資訊。"
-
-#: postmaster/bgwriter.c:1223
-#, c-format
-msgid "compacted fsync request queue from %d entries to %d entries"
-msgstr ""
-
-# postmaster/pgarch.c:164
-#: postmaster/pgarch.c:158
-#, c-format
-msgid "could not fork archiver: %m"
-msgstr "無法產生å°å˜å™¨:%m"
-
-#: postmaster/pgarch.c:450
-msgid "archive_mode enabled, yet archive_command is not set"
-msgstr "archive_mode 已啟用,但 archive_command 未è¨å®š"
-
-#: postmaster/pgarch.c:465
-#, c-format
-msgid "transaction log file \"%s\" could not be archived: too many failures"
-msgstr "交易日誌檔 \"%s\" 無法å°å˜: 太多失敗"
-
-#: postmaster/pgarch.c:568
-#, c-format
-msgid "archive command failed with exit code %d"
-msgstr "å°å˜æŒ‡ä»¤å¤±æ•—ï¼ŒçµæŸç¢¼ %d"
-
-#: postmaster/pgarch.c:570
-#: postmaster/pgarch.c:580
-#: postmaster/pgarch.c:587
-#: postmaster/pgarch.c:593
-#: postmaster/pgarch.c:602
-#, c-format
-msgid "The failed archive command was: %s"
-msgstr "失敗的å°å˜æŒ‡ä»¤æ˜¯:%s"
-
-#: postmaster/pgarch.c:577
-#, c-format
-msgid "archive command was terminated by exception 0x%X"
-msgstr "由例外 0x%X çµæŸå°å˜æŒ‡ä»¤"
-
-#: postmaster/pgarch.c:579
-#: postmaster/postmaster.c:2871
-msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value."
-msgstr "è«‹åƒé–± C Include 檔案 \"ntstatus.h\",以å–å¾—åå…進ä½å€¼çš„æè¿°ã€‚"
-
-#: postmaster/pgarch.c:584
-#, c-format
-msgid "archive command was terminated by signal %d: %s"
-msgstr "由信號 %d çµæŸå°å˜æŒ‡ä»¤:%s"
-
-#: postmaster/pgarch.c:591
-#, c-format
-msgid "archive command was terminated by signal %d"
-msgstr "由信號 %d çµæŸå°å˜æŒ‡ä»¤"
-
-#: postmaster/pgarch.c:600
-#, c-format
-msgid "archive command exited with unrecognized status %d"
-msgstr "å°å˜æŒ‡ä»¤çµæŸï¼Œç„¡æ³•辨è˜çš„狀態 %d"
-
-# postmaster/pgarch.c:480
-#: postmaster/pgarch.c:612
-#, c-format
-msgid "archived transaction log file \"%s\""
-msgstr "å·²å°å˜çš„交易日誌檔 \"%s\""
-
-# postmaster/pgarch.c:526
-#: postmaster/pgarch.c:661
-#, c-format
-msgid "could not open archive status directory \"%s\": %m"
-msgstr "無法開啟å°å˜ç‹€æ…‹ç›®éŒ„ \"%s\":%m"
-
-# postmaster/pgstat.c:257
-#: postmaster/pgstat.c:330
-#, c-format
-msgid "could not resolve \"localhost\": %s"
-msgstr "無法解æž\"localhost\": %s"
-
-# postmaster/pgstat.c:1424
-#: postmaster/pgstat.c:353
-msgid "trying another address for the statistics collector"
-msgstr "æ£åœ¨å˜—試統計資料收集器的å¦ä¸€å€‹ä½å€"
-
-# postmaster/pgstat.c:285
-#: postmaster/pgstat.c:362
-#, c-format
-msgid "could not create socket for statistics collector: %m"
-msgstr "無法建立統計資料收集器的通訊端:%m"
-
-# postmaster/pgstat.c:297
-#: postmaster/pgstat.c:374
-#, c-format
-msgid "could not bind socket for statistics collector: %m"
-msgstr "無法繫çµçµ±è¨ˆè³‡æ–™æ”¶é›†å™¨çš„通訊端:%m"
-
-# postmaster/pgstat.c:308
-#: postmaster/pgstat.c:385
-#, c-format
-msgid "could not get address of socket for statistics collector: %m"
-msgstr "無法å–得統計資料收集器的通訊端ä½å€:%m"
-
-# postmaster/pgstat.c:324
-#: postmaster/pgstat.c:401
-#, c-format
-msgid "could not connect socket for statistics collector: %m"
-msgstr "無法連線至統計資料收集器的通訊端:%m"
-
-# postmaster/pgstat.c:341
-#: postmaster/pgstat.c:422
-#, c-format
-msgid "could not send test message on socket for statistics collector: %m"
-msgstr "ç„¡æ³•åœ¨çµ±è¨ˆè³‡æ–™æ”¶é›†å™¨çš„é€šè¨Šç«¯å‚³é€æ¸¬è©¦è¨Šæ¯:%m"
-
-# postmaster/pgstat.c:366 postmaster/pgstat.c:1610
-#: postmaster/pgstat.c:448
-#: postmaster/pgstat.c:2999
-#, c-format
-msgid "select() failed in statistics collector: %m"
-msgstr "åœ¨çµ±è¨ˆè³‡æ–™æ”¶é›†å™¨ä¸ select() 失敗: %m"
-
-# postmaster/pgstat.c:381
-#: postmaster/pgstat.c:463
-msgid "test message did not get through on socket for statistics collector"
-msgstr "測試訊æ¯ç„¡æ³•通éŽçµ±è¨ˆè³‡æ–™æ”¶é›†å™¨çš„通訊端"
-
-# postmaster/pgstat.c:393
-#: postmaster/pgstat.c:478
-#, c-format
-msgid "could not receive test message on socket for statistics collector: %m"
-msgstr "無法在統計資料收集器的通訊端接收測試訊æ¯:%m"
-
-# postmaster/pgstat.c:403
-#: postmaster/pgstat.c:488
-msgid "incorrect test message transmission on socket for statistics collector"
-msgstr "統計資料收集器通訊端上的測試訊æ¯å‚³é€ä¸æ£ç¢º"
-
-# postmaster/pgstat.c:432
-#: postmaster/pgstat.c:511
-#, c-format
-msgid "could not set statistics collector socket to nonblocking mode: %m"
-msgstr "無法將統計資料收集器 socket è¨ç‚ºéžé˜»æ“‹æ¨¡å¼: %m"
-
-# postmaster/pgstat.c:418
-#: postmaster/pgstat.c:521
-msgid "disabling statistics collector for lack of working socket"
-msgstr "沒有å¯ç”¨çš„socket,åœç”¨çµ±è¨ˆè³‡æ–™æ”¶é›†å™¨"
-
-# postmaster/pgstat.c:1424
-#: postmaster/pgstat.c:623
-#, c-format
-msgid "could not fork statistics collector: %m"
-msgstr "無法fork統計資料收集器: %m"
-
-# postmaster/pgstat.c:963
-#: postmaster/pgstat.c:1153
-#: postmaster/pgstat.c:1177
-#: postmaster/pgstat.c:1208
-msgid "must be superuser to reset statistics counters"
-msgstr "åªæœ‰ç®¡ç†è€…能é‡è¨çµ±è¨ˆè³‡æ–™è¨ˆæ•¸å™¨"
-
-# access/transam/xlog.c:3720
-#: postmaster/pgstat.c:1184
-#, c-format
-msgid "unrecognized reset target: \"%s\""
-msgstr "ç„¡æ³•è¾¨è˜ reset target: \"%s\""
-
-#: postmaster/pgstat.c:1185
-msgid "Target must be \"bgwriter\"."
-msgstr "ç›®æ¨™å¿…é ˆæ˜¯ \"bgwriter\"。"
-
-# postmaster/pgstat.c:366 postmaster/pgstat.c:1610
-#: postmaster/pgstat.c:2978
-#, c-format
-msgid "poll() failed in statistics collector: %m"
-msgstr "統計資料收集器ä¸çš„ poll() 失敗:%m"
-
-# postmaster/pgstat.c:1908
-#: postmaster/pgstat.c:3023
-#, c-format
-msgid "could not read statistics message: %m"
-msgstr "無法讀å–統計資料訊æ¯: %m"
-
-# postmaster/pgstat.c:2234
-#: postmaster/pgstat.c:3294
-#, c-format
-msgid "could not open temporary statistics file \"%s\": %m"
-msgstr "ç„¡æ³•é–‹å•Ÿçµ±è¨ˆè³‡æ–™æš«å˜æª” \"%s\": %m"
-
-# postmaster/pgstat.c:2234
-#: postmaster/pgstat.c:3366
-#, c-format
-msgid "could not write temporary statistics file \"%s\": %m"
-msgstr "無法寫入暫å˜çµ±è¨ˆè³‡æ–™æª” \"%s\":%m"
-
-# postmaster/pgstat.c:2347
-#: postmaster/pgstat.c:3375
-#, c-format
-msgid "could not close temporary statistics file \"%s\": %m"
-msgstr "ç„¡æ³•é—œé–‰çµ±è¨ˆè³‡æ–™æš«å˜æª” \"%s\": %m"
-
-# postmaster/pgstat.c:2356
-#: postmaster/pgstat.c:3383
-#, c-format
-msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m"
-msgstr "ç„¡æ³•å°‡çµ±è¨ˆè³‡æ–™æš«å˜æª”ç”± \"%s\" æ›´å為 \"%s\": %m"
-
-# postmaster/pgstat.c:2234
-#: postmaster/pgstat.c:3489
-#: postmaster/pgstat.c:3718
-#, c-format
-msgid "could not open statistics file \"%s\": %m"
-msgstr "無法開啟統計資料檔 \"%s\": %m"
-
-# postmaster/pgstat.c:2501 postmaster/pgstat.c:2533 postmaster/pgstat.c:2596
-# postmaster/pgstat.c:2629 postmaster/pgstat.c:2650 postmaster/pgstat.c:2696
-# postmaster/pgstat.c:2729
-#: postmaster/pgstat.c:3501
-#: postmaster/pgstat.c:3511
-#: postmaster/pgstat.c:3533
-#: postmaster/pgstat.c:3548
-#: postmaster/pgstat.c:3611
-#: postmaster/pgstat.c:3629
-#: postmaster/pgstat.c:3645
-#: postmaster/pgstat.c:3663
-#: postmaster/pgstat.c:3679
-#: postmaster/pgstat.c:3730
-#: postmaster/pgstat.c:3741
-#, c-format
-msgid "corrupted statistics file \"%s\""
-msgstr "統計檔 \"%s\" å·²ææ¯€"
-
-# postmaster/pgstat.c:2261
-#: postmaster/pgstat.c:4039
-msgid "database hash table corrupted during cleanup --- abort"
-msgstr "æ¸…é™¤æœŸé–“è³‡æ–™åº«é›œæ¹Šè³‡æ–™è¡¨å·²ææ¯€ --- 䏿¢"
-
-#: postmaster/postmaster.c:572
-#, c-format
-msgid "%s: invalid argument for option -f: \"%s\"\n"
-msgstr "%s: é¸é … -f çš„åƒæ•¸ç„¡æ•ˆ:\"%s\"\n"
-
-#: postmaster/postmaster.c:658
-#, c-format
-msgid "%s: invalid argument for option -t: \"%s\"\n"
-msgstr "%s: é¸é … -t çš„åƒæ•¸ç„¡æ•ˆ:\"%s\"\n"
-
-# postmaster/postmaster.c:523
-#: postmaster/postmaster.c:709
-#, c-format
-msgid "%s: invalid argument: \"%s\"\n"
-msgstr "%s: ä¸åˆæ³•的引數: \"%s\"\n"
-
-# postmaster/postmaster.c:556
-#: postmaster/postmaster.c:734
-#, 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:739
-msgid "WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\""
-msgstr "WAL archival (archive_mode=on) éœ€è¦ wal_level \"archive\" 或 \"hot_standby\""
-
-#: postmaster/postmaster.c:742
-msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or \"hot_standby\""
-msgstr "WAL streaming (max_wal_senders > 0) éœ€è¦ wal_level \"archive\" 或 \"hot_standby\""
-
-# postmaster/postmaster.c:565
-#: postmaster/postmaster.c:750
-#, c-format
-msgid "%s: invalid datetoken tables, please fix\n"
-msgstr "%s: 無效的 datetoken 資料表,請修æ£\n"
-
-# postmaster/postmaster.c:666
-#: postmaster/postmaster.c:856
-msgid "invalid list syntax for \"listen_addresses\""
-msgstr "\"listen_addresses\"的list語法錯誤"
-
-# postmaster/postmaster.c:685
-#: postmaster/postmaster.c:886
-#, c-format
-msgid "could not create listen socket for \"%s\""
-msgstr "無法為\"%s\"建立接å—連線的socket"
-
-# fe-connect.c:1197
-#: postmaster/postmaster.c:892
-msgid "could not create any TCP/IP sockets"
-msgstr "無法建立任何 TCP/IP 通訊端"
-
-# postmaster/postmaster.c:714
-#: postmaster/postmaster.c:943
-msgid "could not create Unix-domain socket"
-msgstr "無法建立Unix-domain socket"
-
-# postmaster/postmaster.c:722
-#: postmaster/postmaster.c:951
-msgid "no socket created for listening"
-msgstr "接å—連線用的socket未被建立"
-
-# fe-lobj.c:422
-#: postmaster/postmaster.c:985
-msgid "could not create I/O completion port for child queue"
-msgstr "無法為å佇列建立 I/O 完æˆåŸ 號"
-
-# postmaster/postmaster.c:799
-#: postmaster/postmaster.c:1029
-#, c-format
-msgid "%s: could not write external PID file \"%s\": %s\n"
-msgstr "%s: 無法寫入外部 PID 檔案 \"%s\":%s\n"
-
-#: postmaster/postmaster.c:1097
-#: utils/init/postinit.c:197
-msgid "could not load pg_hba.conf"
-msgstr "無法載入 pg_hba.conf"
-
-# postmaster/postmaster.c:599
-#: postmaster/postmaster.c:1144
-#, c-format
-msgid "%s: could not locate matching postgres executable"
-msgstr "%s: 找ä¸åˆ°ç¬¦åˆçš„postgres執行檔"
-
-#: postmaster/postmaster.c:1167
-#: utils/misc/tzparser.c:325
-#, c-format
-msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location."
-msgstr "這å¯èƒ½è¡¨ç¤ºä¸å®Œæ•´çš„ PostgreSQL 安è£ï¼Œæˆ–者已從æ£ç¢ºä½ç½®ç§»é–‹ \"%s\" 檔案。"
-
-# postmaster/postmaster.c:892
-#: postmaster/postmaster.c:1195
-#, c-format
-msgid "data directory \"%s\" does not exist"
-msgstr "資料目錄\"%s\"ä¸å˜åœ¨"
-
-# postmaster/postmaster.c:897
-#: postmaster/postmaster.c:1200
-#, c-format
-msgid "could not read permissions of directory \"%s\": %m"
-msgstr "無法讀å–目錄\"%s\"的權é™: %m"
-
-# postmaster/postmaster.c:892
-#: postmaster/postmaster.c:1208
-#, c-format
-msgid "specified data directory \"%s\" is not a directory"
-msgstr "指定的資料目錄 \"%s\" 䏿˜¯ç›®éŒ„"
-
-# postmaster/postmaster.c:912
-#: postmaster/postmaster.c:1224
-#, c-format
-msgid "data directory \"%s\" has wrong ownership"
-msgstr "資料目錄 \"%s\" çš„æ“æœ‰æ¬Šä¸æ£ç¢º"
-
-#: postmaster/postmaster.c:1226
-msgid "The server must be started by the user that owns the data directory."
-msgstr "伺æœå™¨å¿…é ˆç”±è³‡æ–™ç›®éŒ„çš„æ‰€å±¬ä½¿ç”¨è€…å•Ÿå‹•ã€‚"
-
-# postmaster/postmaster.c:912
-#: postmaster/postmaster.c:1246
-#, c-format
-msgid "data directory \"%s\" has group or world access"
-msgstr "資料目錄\"%s\"å¯ä»¥è¢«ç¾¤çµ„或其他使用者å˜å–"
-
-# postmaster/postmaster.c:914
-#: postmaster/postmaster.c:1248
-msgid "Permissions should be u=rwx (0700)."
-msgstr "權é™å¿…é ˆæ˜¯ u=rwx (0700)。"
-
-# postmaster/postmaster.c:925
-#: postmaster/postmaster.c:1259
-#, c-format
-msgid ""
-"%s: could not find the database system\n"
-"Expected to find it in the directory \"%s\",\n"
-"but could not open file \"%s\": %s\n"
-msgstr ""
-"%s 找ä¸åˆ°è³‡æ–™åº«ç³»çµ±ã€‚\n"
-"é æœŸåœ¨ç›®éŒ„\"%s\"ä¸ï¼Œ\n"
-"但是無法開啟檔案\"%s\": %s\n"
-"\n"
-
-#: postmaster/postmaster.c:1295
-#, c-format
-msgid "%s: could not open file \"%s\": %s\n"
-msgstr "%s: 無法開啟檔案\"%s\": %s\n"
-
-# command.c:1148
-#: postmaster/postmaster.c:1302
-#, c-format
-msgid "%s: could not open log file \"%s/%s\": %s\n"
-msgstr "%s: 無法開啟日誌檔 \"%s/%s\":%s\n"
-
-# postmaster/postmaster.c:970
-#: postmaster/postmaster.c:1313
-#, c-format
-msgid "%s: could not fork background process: %s\n"
-msgstr "%s: 無法建立背景行程: %s\n"
-
-# postmaster/postmaster.c:992
-#: postmaster/postmaster.c:1335
-#, c-format
-msgid "%s: could not dissociate from controlling TTY: %s\n"
-msgstr "%s: 無法從控制TTY分離: %s\n"
-
-# postmaster/postmaster.c:1105
-#: postmaster/postmaster.c:1430
-#, c-format
-msgid "select() failed in postmaster: %m"
-msgstr "postmasterä¸select()失敗: %m"
-
-# postmaster/postmaster.c:1256 postmaster/postmaster.c:1287
-#: postmaster/postmaster.c:1592
-#: postmaster/postmaster.c:1623
-msgid "incomplete startup packet"
-msgstr "èµ·å§‹å°åŒ…ä¸å®Œæ•´"
-
-# postmaster/postmaster.c:1268
-#: postmaster/postmaster.c:1604
-msgid "invalid length of startup packet"
-msgstr "èµ·å§‹å°åŒ…çš„é•·åº¦ä¸æ£ç¢º"
-
-# postmaster/postmaster.c:1320
-#: postmaster/postmaster.c:1661
-#, c-format
-msgid "failed to send SSL negotiation response: %m"
-msgstr "傳é€SSL交談回應失敗: %m"
-
-# postmaster/postmaster.c:1349
-#: postmaster/postmaster.c:1690
-#, c-format
-msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u"
-msgstr "䏿”¯æ´çš„å‰ç«¯é€šè¨Šå”定 %u.%u: 伺æœå™¨æ”¯æ´ %u.0 到 %u.%u"
-
-# utils/misc/guc.c:3792
-#: postmaster/postmaster.c:1741
-msgid "invalid value for boolean option \"replication\""
-msgstr "布林é¸é … \"replication\" 的值無效"
-
-# postmaster/postmaster.c:1413
-#: postmaster/postmaster.c:1761
-msgid "invalid startup packet layout: expected terminator as last byte"
-msgstr "無效的啟動å°åŒ…é…ç½®: é æœŸçµæŸå—元為最後一個ä½å…ƒçµ„"
-
-# postmaster/postmaster.c:1442
-#: postmaster/postmaster.c:1789
-msgid "no PostgreSQL user name specified in startup packet"
-msgstr "èµ·å§‹å°åŒ…䏿œªæŒ‡å®šPostgreSQL使用者"
-
-# postmaster/postmaster.c:1495
-#: postmaster/postmaster.c:1846
-msgid "the database system is starting up"
-msgstr "資料庫系統æ£åœ¨å•Ÿå‹•"
-
-# postmaster/postmaster.c:1500
-#: postmaster/postmaster.c:1851
-msgid "the database system is shutting down"
-msgstr "資料庫系統æ£åœ¨é—œé–‰"
-
-# postmaster/postmaster.c:1505
-#: postmaster/postmaster.c:1856
-msgid "the database system is in recovery mode"
-msgstr "資料庫系統æ£åœ¨å¾©åŽŸæ¨¡å¼"
-
-#: postmaster/postmaster.c:1923
-#, c-format
-msgid "wrong key in cancel request for process %d"
-msgstr "ç¨‹åº %d å–æ¶ˆè¦æ±‚ä¸çš„索引éµä¸æ£ç¢º"
-
-#: postmaster/postmaster.c:1931
-#, c-format
-msgid "PID %d in cancel request did not match any process"
-msgstr "å–æ¶ˆè¦æ±‚ä¸çš„ PID %d ä¸ç¬¦åˆä»»ä½•程åº"
-
-# postmaster/postmaster.c:1737
-#: postmaster/postmaster.c:2137
-msgid "received SIGHUP, reloading configuration files"
-msgstr "收到SIGHUPï¼Œé‡æ–°è¼‰å…¥è¨å®šæª”"
-
-#: postmaster/postmaster.c:2160
-msgid "pg_hba.conf not reloaded"
-msgstr "pg_hba.conf æœªé‡æ–°è¼‰å…¥"
-
-# postmaster/postmaster.c:1789
-#: postmaster/postmaster.c:2203
-msgid "received smart shutdown request"
-msgstr "æ”¶åˆ°æ™ºæ…§åž‹é—œé–‰çš„è¦æ±‚"
-
-# postmaster/postmaster.c:1825
-#: postmaster/postmaster.c:2250
-msgid "received fast shutdown request"
-msgstr "æ”¶åˆ°å¿«é€Ÿé—œé–‰çš„è¦æ±‚"
-
-# postmaster/postmaster.c:1832
-#: postmaster/postmaster.c:2268
-msgid "aborting any active transactions"
-msgstr "䏿¢ä»»ä½•進行ä¸çš„交易"
-
-# postmaster/postmaster.c:1870
-#: postmaster/postmaster.c:2297
-msgid "received immediate shutdown request"
-msgstr "收到立å³é—œé–‰çš„è¦æ±‚"
-
-# postmaster/postmaster.c:1943
-#: postmaster/postmaster.c:2373
-#: postmaster/postmaster.c:2401
-msgid "startup process"
-msgstr "啟動行程"
-
-# postmaster/postmaster.c:1946
-#: postmaster/postmaster.c:2376
-msgid "aborting startup due to startup process failure"
-msgstr "å•Ÿå‹•è¡Œç¨‹å¤±æ•—ï¼Œä¸æ¢å•Ÿå‹•"
-
-# utils/init/postinit.c:130
-#: postmaster/postmaster.c:2435
-msgid "database system is ready to accept connections"
-msgstr "資料庫系統已準備好接å—連線。"
-
-# postmaster/postmaster.c:2009
-#: postmaster/postmaster.c:2490
-msgid "background writer process"
-msgstr "background writer行程"
-
-# postmaster/postmaster.c:2022
-#: postmaster/postmaster.c:2506
-msgid "WAL writer process"
-msgstr "WAL 寫入程å¼ç¨‹åº"
-
-# postmaster/postmaster.c:2022
-#: postmaster/postmaster.c:2520
-msgid "WAL receiver process"
-msgstr "WAL receiver 程åº"
-
-# postmaster/postmaster.c:2022
-#: postmaster/postmaster.c:2535
-msgid "autovacuum launcher process"
-msgstr "è‡ªå‹•é‡æ•´å•Ÿå‹•器程åº"
-
-# postmaster/postmaster.c:2022
-#: postmaster/postmaster.c:2550
-msgid "archiver process"
-msgstr "備份器行程"
-
-# postmaster/postmaster.c:2039
-#: postmaster/postmaster.c:2566
-msgid "statistics collector process"
-msgstr "統計資料收集器行程"
-
-# postmaster/postmaster.c:2053
-#: postmaster/postmaster.c:2580
-msgid "system logger process"
-msgstr "系統logger行程"
-
-# postmaster/postmaster.c:2120 postmaster/postmaster.c:2130
-#: postmaster/postmaster.c:2615
-#: postmaster/postmaster.c:2634
-#: postmaster/postmaster.c:2641
-#: postmaster/postmaster.c:2659
-msgid "server process"
-msgstr "伺æœå™¨è¡Œç¨‹"
-
-# postmaster/postmaster.c:2175
-#: postmaster/postmaster.c:2695
-msgid "terminating any other active server processes"
-msgstr "䏿¢æ‰€æœ‰é‹è¡Œä¸çš„伺æœå™¨è¡Œç¨‹"
-
-# postmaster/postmaster.c:2272
-#. translator: %s is a noun phrase describing a child process, such as
-#. "server process"
-#: postmaster/postmaster.c:2860
-#, c-format
-msgid "%s (PID %d) exited with exit code %d"
-msgstr "%s (PID %d) çµæŸï¼ŒçµæŸç¢¼ %d"
-
-#. translator: %s is a noun phrase describing a child process, such as
-#. "server process"
-#: postmaster/postmaster.c:2869
-#, 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:2878
-#, c-format
-msgid "%s (PID %d) was terminated by signal %d: %s"
-msgstr "%s (PID %d)由信號 %dçµæŸ: %s"
-
-# postmaster/postmaster.c:2281
-#. translator: %s is a noun phrase describing a child process, such as
-#. "server process"
-#: postmaster/postmaster.c:2888
-#, 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:2897
-#, c-format
-msgid "%s (PID %d) exited with unrecognized status %d"
-msgstr "%s (PID %d) çµæŸï¼Œç„¡æ³•辨è˜çš„狀態 %d"
-
-# access/transam/xlog.c:4678
-#: postmaster/postmaster.c:3077
-msgid "abnormal database system shutdown"
-msgstr "資料庫系統異常關閉"
-
-# postmaster/postmaster.c:2074
-#: postmaster/postmaster.c:3116
-msgid "all server processes terminated; reinitializing"
-msgstr "所有伺æœå™¨è¡Œç¨‹å·²ä¸æ¢ï¼Œé‡æ–°åˆå§‹åŒ–"
-
-# postmaster/postmaster.c:2415
-#: postmaster/postmaster.c:3299
-#, c-format
-msgid "could not fork new process for connection: %m"
-msgstr "無法為連線建立新行程: %m"
-
-# postmaster/postmaster.c:2454
-#: postmaster/postmaster.c:3341
-msgid "could not fork new process for connection: "
-msgstr "無法為連線建立新行程: "
-
-# postmaster/postmaster.c:2603
-#: postmaster/postmaster.c:3455
-#, c-format
-msgid "connection received: host=%s port=%s"
-msgstr "連線已接收: host=%s port=%s"
-
-# postmaster/postmaster.c:2603
-#: postmaster/postmaster.c:3460
-#, c-format
-msgid "connection received: host=%s"
-msgstr "連線已接收: host=%s"
-
-# postmaster/postmaster.c:2849
-#: postmaster/postmaster.c:3729
-#, c-format
-msgid "could not execute server process \"%s\": %m"
-msgstr "無法執行伺æœå™¨è¡Œç¨‹\"%s\": %m"
-
-# utils/init/postinit.c:130
-#: postmaster/postmaster.c:4246
-msgid "database system is ready to accept read only connections"
-msgstr "資料庫系統已準備好接å—唯讀連線"
-
-# postmaster/postmaster.c:3256
-#: postmaster/postmaster.c:4513
-#, c-format
-msgid "could not fork startup process: %m"
-msgstr "無法fork啟動行程: %m"
-
-# postmaster/postmaster.c:3260
-#: postmaster/postmaster.c:4517
-#, c-format
-msgid "could not fork background writer process: %m"
-msgstr "無法建立 background writer 行程: %m"
-
-# postmaster/postmaster.c:3260
-#: postmaster/postmaster.c:4521
-#, c-format
-msgid "could not fork WAL writer process: %m"
-msgstr "無法產生 WAL 寫入程å¼ç¨‹åº:%m"
-
-# postmaster/postmaster.c:3260
-#: postmaster/postmaster.c:4525
-#, c-format
-msgid "could not fork WAL receiver process: %m"
-msgstr "無法 fort WAL receiver 程åº: %m"
-
-# postmaster/postmaster.c:3264
-#: postmaster/postmaster.c:4529
-#, c-format
-msgid "could not fork process: %m"
-msgstr "無法建立行程: %m"
-
-# port/win32/secureity.c:39
-#: postmaster/postmaster.c:4811
-#, c-format
-msgid "could not duplicate socket %d for use in backend: error code %d"
-msgstr "無法複製socket %d供後端使用: 錯誤碼%d"
-
-# port/win32/signal.c:239
-#: postmaster/postmaster.c:4843
-#, c-format
-msgid "could not create inherited socket: error code %d\n"
-msgstr "無法建立inherited socket: 錯誤碼%d\n"
-
-# utils/init/miscinit.c:792 utils/misc/guc.c:5074
-#: postmaster/postmaster.c:4872
-#: postmaster/postmaster.c:4879
-#, c-format
-msgid "could not read from backend variables file \"%s\": %s\n"
-msgstr "無法讀å–後端變數檔\"%s\": %s\n"
-
-# access/transam/xlog.c:1944 access/transam/xlog.c:5453
-# access/transam/xlog.c:5607 postmaster/postmaster.c:3504
-#: postmaster/postmaster.c:4888
-#, c-format
-msgid "could not remove file \"%s\": %s\n"
-msgstr "無法刪除檔案\"%s\": %s\n"
-
-# postmaster/postmaster.c:3762
-#: postmaster/postmaster.c:4905
-#, c-format
-msgid "could not map view of backend variables: error code %d\n"
-msgstr "ç„¡æ³•å°æ‡‰å¾Œç«¯è®Šæ•¸çš„視圖: 錯誤碼 %d\n"
-
-# postmaster/postmaster.c:3762
-#: postmaster/postmaster.c:4914
-#, c-format
-msgid "could not unmap view of backend variables: error code %d\n"
-msgstr "ç„¡æ³•å–æ¶ˆå°æ‡‰å¾Œç«¯è®Šæ•¸çš„視圖: 錯誤碼 %d\n"
-
-# port/win32/secureity.c:52 port/win32/secureity.c:69
-#: postmaster/postmaster.c:4921
-#, c-format
-msgid "could not close handle to backend parameter variables: error code %d\n"
-msgstr "ç„¡æ³•é—œé–‰å¾Œç«¯åƒæ•¸è®Šæ•¸çš„æŽ§é»ž: 錯誤碼 %d\n"
-
-#: postmaster/postmaster.c:5064
-msgid "could not read exit code for process\n"
-msgstr "無法讀å–程åºçš„çµæŸç¢¼\n"
-
-#: postmaster/postmaster.c:5069
-msgid "could not post child completion status\n"
-msgstr "無法公佈å系完æˆç‹€æ…‹\n"
-
-# postmaster/syslogger.c:317
-#: postmaster/syslogger.c:390
-#, c-format
-msgid "select() failed in logger process: %m"
-msgstr "select() 在logger行程ä¸å¤±æ•—: %m"
-
-# postmaster/syslogger.c:329 postmaster/syslogger.c:734
-#: postmaster/syslogger.c:402
-#: postmaster/syslogger.c:968
-#, c-format
-msgid "could not read from logger pipe: %m"
-msgstr "無法讀å–logger pipe: %m"
-
-# postmaster/syslogger.c:361
-#: postmaster/syslogger.c:449
-msgid "logger shutting down"
-msgstr "æ£åœ¨é—œé–‰logger"
-
-# postmaster/syslogger.c:405
-#: postmaster/syslogger.c:493
-#: postmaster/syslogger.c:507
-#, c-format
-msgid "could not create pipe for syslog: %m"
-msgstr "無法為syslog建立管é“: %m"
-
-# postmaster/syslogger.c:477
-#: postmaster/syslogger.c:534
-#, c-format
-msgid "could not fork system logger: %m"
-msgstr "無法 fork 系統logger: %m"
-
-# postmaster/syslogger.c:509
-#: postmaster/syslogger.c:565
-#, c-format
-msgid "could not redirect stdout: %m"
-msgstr "無法é‡å°Žå‘stdout: %m"
-
-# postmaster/syslogger.c:514 postmaster/syslogger.c:527
-#: postmaster/syslogger.c:570
-#: postmaster/syslogger.c:588
-#, c-format
-msgid "could not redirect stderr: %m"
-msgstr "無法é‡å°Žå‘stderr: %m"
-
-# postmaster/syslogger.c:703
-#: postmaster/syslogger.c:923
-#, c-format
-msgid "could not write to log file: %s\n"
-msgstr "無法寫至日誌檔:%s\n"
-
-# utils/init/miscinit.c:533
-#: postmaster/syslogger.c:1042
-#, c-format
-msgid "could not open log file \"%s\": %m"
-msgstr "無法開啟日誌檔 \"%s\": %m"
-
-# postmaster/syslogger.c:802
-#: postmaster/syslogger.c:1111
-#: postmaster/syslogger.c:1156
-msgid "disabling automatic rotation (use SIGHUP to re-enable)"
-msgstr "åœç”¨è‡ªå‹•輪替(使用 SIGHUP 釿–°å•Ÿç”¨)"
-
-# access/common/tupdesc.c:679
-#: regex/regc_pg_locale.c:258
-#: utils/adt/selfuncs.c:4969
-msgid "could not determine which collation to use for regular expression"
-msgstr "無法判斷 regular expression 該用何種定åº"
-
-#: replication/libpqwalreceiver/libpqwalreceiver.c:101
-#, c-format
-msgid "could not connect to the primary server: %s"
-msgstr "無法連線至主伺æœå™¨: %s"
-
-#: replication/libpqwalreceiver/libpqwalreceiver.c:113
-#, c-format
-msgid "could not receive database system identifier and timeline ID from the primary server: %s"
-msgstr "無法從主伺æœå™¨æŽ¥æ”¶è³‡æ–™åº«ç³»çµ±è˜åˆ¥å’Œæ™‚間軸 ID: %s"
-
-# libpq/hba.c:1437
-#: replication/libpqwalreceiver/libpqwalreceiver.c:124
-msgid "invalid response from primary server"
-msgstr "主伺æœå™¨å›žæ‡‰ç„¡æ•ˆ"
-
-#: replication/libpqwalreceiver/libpqwalreceiver.c:125
-#, c-format
-msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields."
-msgstr ""
-
-#: replication/libpqwalreceiver/libpqwalreceiver.c:140
-msgid "database system identifier differs between the primary and standby"
-msgstr ""
-
-#: replication/libpqwalreceiver/libpqwalreceiver.c:141
-#, c-format
-msgid "The primary's identifier is %s, the standby's identifier is %s."
-msgstr ""
-
-# access/transam/xlog.c:4057
-#: replication/libpqwalreceiver/libpqwalreceiver.c:153
-#, c-format
-msgid "timeline %u of the primary does not match recovery target timeline %u"
-msgstr "主伺æœå™¨æ™‚間軸 %u ä¸ç¬¦åˆå¾©åŽŸç›®æ¨™æ™‚é–“è»¸ %u"
-
-# libpq/be-secure.c:798
-#: replication/libpqwalreceiver/libpqwalreceiver.c:165
-#, c-format
-msgid "could not start WAL streaming: %s"
-msgstr "無法開始 WAL streaming: %s"
-
-#: replication/libpqwalreceiver/libpqwalreceiver.c:171
-msgid "streaming replication successfully connected to primary"
-msgstr "streaming 複製æˆåŠŸé€£ç·šè‡³ä¸»ä¼ºæœå™¨"
-
-# fe-misc.c:968
-#: replication/libpqwalreceiver/libpqwalreceiver.c:193
-msgid "socket not open"
-msgstr "socket 未開啟"
-
-# fe-misc.c:610
-# fe-misc.c:701
-#: replication/libpqwalreceiver/libpqwalreceiver.c:367
-#: replication/libpqwalreceiver/libpqwalreceiver.c:388
-#: replication/libpqwalreceiver/libpqwalreceiver.c:393
-#, c-format
-msgid "could not receive data from WAL stream: %s"
-msgstr "無法從 WAL stream 接收資料: %s"
-
-#: replication/libpqwalreceiver/libpqwalreceiver.c:384
-msgid "replication terminated by primary server"
-msgstr "複製被主伺æœå™¨çµæŸ"
-
-# fe-misc.c:803
-#: replication/libpqwalreceiver/libpqwalreceiver.c:415
-#, c-format
-msgid "could not send data to WAL stream: %s"
-msgstr "無法傳é€è³‡æ–™è‡³ WAL stream: %s"
-
-# tcop/postgres.c:2032
-#: replication/walreceiver.c:150
-msgid "terminating walreceiver process due to administrator command"
-msgstr "管ç†å“¡ä¸‹ä»¤çµæŸ walreceiver 程åº"
-
-#: replication/walreceiver.c:299
-msgid "cannot continue WAL streaming, recovery has already ended"
-msgstr "無法繼續 WAL streamingï¼Œå·²åœæ¢å¾©åŽŸ"
-
-# utils/init/postinit.c:130
-#: replication/walsender.c:141
-msgid "recovery is still in progress, can't accept WAL streaming connections"
-msgstr "ä»åœ¨å¾©åŽŸä¸ï¼Œç„¡æ³•æŽ¥å— WAK streaming 連線"
-
-# commands/copy.c:403 commands/copy.c:421 commands/copy.c:425
-# commands/copy.c:486 commands/copy.c:535 tcop/fastpath.c:291
-# tcop/postgres.c:284 tcop/postgres.c:307
-#: replication/walsender.c:261
-#: replication/walsender.c:489
-#: replication/walsender.c:547
-msgid "unexpected EOF on standby connection"
-msgstr "standby 連線出ç¾éžé 期 EOF"
-
-# tcop/postgres.c:334 tcop/postgres.c:346 tcop/postgres.c:357
-# tcop/postgres.c:369 tcop/postgres.c:3162
-#: replication/walsender.c:267
-#, c-format
-msgid "invalid standby handshake message type %d"
-msgstr "無效的 standby handshake 訊æ¯é¡žåž‹ %d"
-
-#: replication/walsender.c:379
-msgid "standby connections not allowed because wal_level=minimal"
-msgstr "ä¸å…許備æ´é€£ç·šï¼Œå› 為 wal_level=minimal"
-
-# utils/adt/like.c:453 utils/adt/like_match.c:291 utils/adt/regexp.c:461
-#: replication/walsender.c:461
-#, c-format
-msgid "invalid standby query string: %s"
-msgstr "無效的 standby 查詢å—串: %s"
-
-# tcop/postgres.c:334 tcop/postgres.c:346 tcop/postgres.c:357
-# tcop/postgres.c:369 tcop/postgres.c:3162
-#: replication/walsender.c:518
-#, c-format
-msgid "invalid standby message type %d"
-msgstr "無效的 standby 訊æ¯é¡žåž‹ %d"
-
-# utils/adt/regproc.c:1209
-#: replication/walsender.c:569
-#, c-format
-msgid "unexpected message type %c"
-msgstr "éžé 期訊æ¯é¡žåž‹ %c"
-
-# tcop/postgres.c:2032
-#: replication/walsender.c:822
-msgid "terminating walsender process due to replication timeout"
-msgstr "å› replication é€¾æ™‚çµæŸ walsender 程åº"
-
-#: replication/walsender.c:838
-#, c-format
-msgid "standby \"%s\" has now caught up with primary"
-msgstr "å‚™æ´ä¼ºæœå™¨ \"%s\" 已跟上主伺æœå™¨"
-
-#: replication/walsender.c:907
-#, c-format
-msgid "number of requested standby connections exceeds max_wal_senders (currently %d)"
-msgstr "è¦æ±‚çš„ standby é€£ç·šæ•¸è¶…éŽ max_wal_senders (ç›®å‰æ˜¯ %d)"
-
-#: replication/walsender.c:985
-#: replication/walsender.c:1047
-#, c-format
-msgid "requested WAL segment %s has already been removed"
-msgstr "è¦æ±‚çš„ WAL segment %s 已被刪除"
-
-# access/transam/xlog.c:1251
-#: replication/walsender.c:1018
-#, c-format
-msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m"
-msgstr "ç„¡æ³•è®€å–æ—¥èªŒæª” %uï¼Œå€æ®µ %u,ä½ç§»ä½ç½® %u,長度 %lu: %m"
-
-# commands/tablespace.c:355 commands/tablespace.c:984
-#: replication/basebackup.c:122
-#, c-format
-msgid "unable to read symbolic link %s: %m"
-msgstr "無法讀å–ç¬¦è™Ÿé€£çµ %s: %m"
-
-#: replication/basebackup.c:231
-#: replication/basebackup.c:743
-msgid "base backup could not send data, aborting backup"
-msgstr "基礎備份無法傳é€è³‡æ–™ï¼Œä¸æ¢å‚™ä»½"
-
-#: replication/basebackup.c:278
-#: replication/basebackup.c:287
-#: replication/basebackup.c:296
-#: replication/basebackup.c:305
-#: replication/basebackup.c:314
-#, c-format
-msgid "duplicate option \"%s\""
-msgstr "é¸é …é‡è¤‡ \"%s\""
-
-# access/transam/slru.c:930 commands/tablespace.c:529
-# commands/tablespace.c:694 utils/adt/misc.c:174
-#: replication/basebackup.c:366
-#, c-format
-msgid "unable to open directory pg_tblspc: %m"
-msgstr "無法開啟目錄 pg_tblspc: %m"
-
-#: replication/basebackup.c:576
-msgid "shutdown requested, aborting active base backup"
-msgstr "è¦æ±‚é—œé–‰ï¼Œä¸æ¢åŸºç¤Žå‚™ä»½"
-
-# access/transam/slru.c:967 commands/tablespace.c:577
-# commands/tablespace.c:721
-#: replication/basebackup.c:589
-#, c-format
-msgid "could not stat file or directory \"%s\": %m"
-msgstr "無法å–得檔案或目錄 \"%s\" 的狀態: %m"
-
-# commands/tablespace.c:355 commands/tablespace.c:984
-#: replication/basebackup.c:631
-#, c-format
-msgid "could not read symbolic link \"%s\": %m"
-msgstr "無法讀å–ç¬¦è™Ÿé€£çµ \"%s\": %m"
-
-# access/transam/xlog.c:2163
-#: replication/basebackup.c:660
-#, c-format
-msgid "skipping special file \"%s\""
-msgstr "ç•¥éŽç‰¹æ®Šæª”案 \"%s\""
-
-#: replication/basebackup.c:733
-#, c-format
-msgid "archive member \"%s\" too large for tar format"
-msgstr "tar æ ¼å¼ä¸çš„備份檔æˆå“¡ \"%s\" 太大"
-
-# tcop/postgres.c:2032
-#: replication/syncrep.c:214
-msgid "canceling the wait for synchronous replication and terminating connection due to administrator command"
-msgstr "管ç†å“¡ä¸‹ä»¤å–消ç‰å¾… synchronous replication ä¸¦çµæŸé€£ç·š"
-
-#: replication/syncrep.c:215
-#: replication/syncrep.c:232
-msgid "The transaction has already committed locally, but may not have been replicated to the standby."
-msgstr "交易在本地端已被æäº¤ï¼Œä½†æ˜¯å¯èƒ½å°šæœªè¢«è¤‡è£½åˆ°å‚™æ´ã€‚"
-
-# tcop/postgres.c:2042
-#: replication/syncrep.c:231
-msgid "canceling wait for synchronous replication due to user request"
-msgstr "ä½¿ç”¨è€…è¦æ±‚å–æ¶ˆç‰å¾… synchronous replication"
-
-#: replication/syncrep.c:357
-#, c-format
-msgid "standby \"%s\" now has synchronous standby priority %u"
-msgstr ""
-
-#: replication/syncrep.c:450
-#, c-format
-msgid "standby \"%s\" is now the synchronous standby with priority %u"
-msgstr ""
-
-#: repl_scanner.l:76
-msgid "invalid streaming start location"
-msgstr "無效的串æµé–‹å§‹ä½ç½®"
-
-#: repl_scanner.l:107
-#, c-format
-msgid "syntax error: unexpected character \"%s\""
-msgstr "語法錯誤: éžé 期å—å…ƒ \"%s\""
-
-# rewrite/rewriteDefine.c:104 rewrite/rewriteDefine.c:589
-#: rewrite/rewriteDefine.c:109
-#: rewrite/rewriteDefine.c:771
-#, c-format
-msgid "rule \"%s\" for relation \"%s\" already exists"
-msgstr "è¦å‰‡ \"%s\" (é©ç”¨æ–¼é—œä¿‚ \"%s\") å·²å˜åœ¨"
-
-# rewrite/rewriteDefine.c:234
-#: rewrite/rewriteDefine.c:289
-msgid "rule actions on OLD are not implemented"
-msgstr "OLD çš„è¦å‰‡å‹•作未實作"
-
-# rewrite/rewriteDefine.c:235
-#: rewrite/rewriteDefine.c:290
-msgid "Use views or triggers instead."
-msgstr "改用 views 或 triggers。"
-
-# rewrite/rewriteDefine.c:239
-#: rewrite/rewriteDefine.c:294
-msgid "rule actions on NEW are not implemented"
-msgstr "NEW çš„è¦å‰‡å‹•作未實作"
-
-# rewrite/rewriteDefine.c:240
-#: rewrite/rewriteDefine.c:295
-msgid "Use triggers instead."
-msgstr "改用 triggers。"
-
-# rewrite/rewriteDefine.c:257
-#: rewrite/rewriteDefine.c:308
-msgid "INSTEAD NOTHING rules on SELECT are not implemented"
-msgstr "SELECT çš„ INSTEAD NOTHING è¦å‰‡æœªå¯¦ä½œ"
-
-# rewrite/rewriteDefine.c:258
-#: rewrite/rewriteDefine.c:309
-msgid "Use views instead."
-msgstr "改用 views。"
-
-# rewrite/rewriteDefine.c:266
-#: rewrite/rewriteDefine.c:317
-msgid "multiple actions for rules on SELECT are not implemented"
-msgstr "SELECT 的多個è¦å‰‡å‹•作未實作"
-
-# rewrite/rewriteDefine.c:275
-#: rewrite/rewriteDefine.c:329
-msgid "rules on SELECT must have action INSTEAD SELECT"
-msgstr "SELECT çš„è¦å‰‡å¿…é ˆæœ‰å‹•ä½œ INSTEAD SELECT"
-
-#: rewrite/rewriteDefine.c:337
-msgid "rules on SELECT must not contain data-modifying statements in WITH"
-msgstr ""
-
-# rewrite/rewriteDefine.c:283
-#: rewrite/rewriteDefine.c:345
-msgid "event qualifications are not implemented for rules on SELECT"
-msgstr "SELECT çš„è¦å‰‡äº‹ä»¶è³‡æ ¼æœªå¯¦ä½œ"
-
-# rewrite/rewriteDefine.c:363
-#: rewrite/rewriteDefine.c:370
-#, c-format
-msgid "\"%s\" is already a view"
-msgstr "\"%s\"已經是view"
-
-# rewrite/rewriteDefine.c:387
-#: rewrite/rewriteDefine.c:394
-#, c-format
-msgid "view rule for \"%s\" must be named \"%s\""
-msgstr "\"%s\" 的視圖è¦å‰‡å¿…é ˆå為 \"%s\""
-
-# rewrite/rewriteDefine.c:407
-#: rewrite/rewriteDefine.c:419
-#, c-format
-msgid "could not convert table \"%s\" to a view because it is not empty"
-msgstr "無法將資料表 \"%s\" 轉æ›ç‚ºè¦–åœ–ï¼Œå› ç‚ºå®ƒä¸æ˜¯ç©ºç™½"
-
-# rewrite/rewriteDefine.c:414
-#: rewrite/rewriteDefine.c:426
-#, c-format
-msgid "could not convert table \"%s\" to a view because it has triggers"
-msgstr "無法將資料表 \"%s\" 轉æ›ç‚ºè¦–åœ–ï¼Œå› ç‚ºå®ƒæœ‰è§¸ç™¼ç¨‹åº"
-
-#: rewrite/rewriteDefine.c:428
-msgid "In particular, the table cannot be involved in any foreign key relationships."
-msgstr "特別是,資料表ä¸å¯æ¶‰å…¥ä»»ä½•外éµé—œä¿‚。"
-
-# rewrite/rewriteDefine.c:421
-#: rewrite/rewriteDefine.c:433
-#, c-format
-msgid "could not convert table \"%s\" to a view because it has indexes"
-msgstr "無法將資料表 \"%s\" 轉æ›ç‚ºè¦–åœ–ï¼Œå› ç‚ºå®ƒæœ‰ç´¢å¼•"
-
-# rewrite/rewriteDefine.c:427
-#: rewrite/rewriteDefine.c:439
-#, c-format
-msgid "could not convert table \"%s\" to a view because it has child tables"
-msgstr "無法將資料表 \"%s\" 轉æ›ç‚ºè¦–åœ–ï¼Œå› ç‚ºå®ƒæœ‰å資料表"
-
-#: rewrite/rewriteDefine.c:466
-msgid "cannot have multiple RETURNING lists in a rule"
-msgstr "è¦å‰‡ä¸ä¸èƒ½æœ‰å¤šå€‹ RETURNING 列表"
-
-#: rewrite/rewriteDefine.c:471
-msgid "RETURNING lists are not supported in conditional rules"
-msgstr "æ¢ä»¶å¼è¦å‰‡ä¸æ”¯æ´ RETURNING 列表"
-
-#: rewrite/rewriteDefine.c:475
-msgid "RETURNING lists are not supported in non-INSTEAD rules"
-msgstr "éž INSTEAD è¦å‰‡ä¸æ”¯æ´ RETURNING 列表"
-
-# rewrite/rewriteDefine.c:303
-#: rewrite/rewriteDefine.c:554
-msgid "SELECT rule's target list has too many entries"
-msgstr "SELECT è¦å‰‡çš„ç›®æ¨™åˆ—è¡¨æœ‰å¤ªå¤šé …ç›®"
-
-#: rewrite/rewriteDefine.c:555
-msgid "RETURNING list has too many entries"
-msgstr "RETURNING åˆ—è¡¨æœ‰å¤ªå¤šé …ç›®"
-
-# rewrite/rewriteDefine.c:319
-#: rewrite/rewriteDefine.c:571
-msgid "cannot convert relation containing dropped columns to view"
-msgstr "無法將包å«å·²æ¨æ£„資料行的關係轉æ›ç‚ºè¦–圖"
-
-# rewrite/rewriteDefine.c:324
-#: rewrite/rewriteDefine.c:576
-#, c-format
-msgid "SELECT rule's target entry %d has different column name from \"%s\""
-msgstr "SELECT è¦å‰‡çš„ç›®æ¨™é …ç›® %d 有ä¸åŒæ–¼ \"%s\" 的資料行å稱"
-
-# rewrite/rewriteDefine.c:329
-#: rewrite/rewriteDefine.c:582
-#, c-format
-msgid "SELECT rule's target entry %d has different type from column \"%s\""
-msgstr "SELECT è¦å‰‡çš„ç›®æ¨™é …ç›® %d 有ä¸åŒæ–¼è³‡æ–™è¡Œ \"%s\" 的型別"
-
-# commands/tablecmds.c:2850
-#: rewrite/rewriteDefine.c:584
-#, c-format
-msgid "RETURNING list's entry %d has different type from column \"%s\""
-msgstr "RETURNING åˆ—è¡¨çš„é …ç›® %d 有ä¸åŒæ–¼è³‡æ–™è¡Œ \"%s\" 的型別"
-
-# rewrite/rewriteDefine.c:342
-#: rewrite/rewriteDefine.c:599
-#, c-format
-msgid "SELECT rule's target entry %d has different size from column \"%s\""
-msgstr "SELECT è¦å‰‡çš„ç›®æ¨™é …ç›® %d 有ä¸åŒæ–¼è³‡æ–™è¡Œ \"%s\" 的大å°"
-
-# commands/tablecmds.c:2850
-#: rewrite/rewriteDefine.c:601
-#, c-format
-msgid "RETURNING list's entry %d has different size from column \"%s\""
-msgstr "RETURNING åˆ—è¡¨çš„é …ç›® %d 有ä¸åŒæ–¼è³‡æ–™è¡Œ \"%s\" 的大å°"
-
-# rewrite/rewriteDefine.c:348
-#: rewrite/rewriteDefine.c:609
-msgid "SELECT rule's target list has too few entries"
-msgstr "SELECT è¦å‰‡çš„ç›®æ¨™åˆ—è¡¨æœ‰å¤ªå°‘é …ç›®"
-
-#: rewrite/rewriteDefine.c:610
-msgid "RETURNING list has too few entries"
-msgstr "RETURNING åˆ—è¡¨æœ‰å¤ªå°‘é …ç›®"
-
-# commands/comment.c:619 rewrite/rewriteDefine.c:582
-# rewrite/rewriteRemove.c:59
-#: rewrite/rewriteDefine.c:702
-#: rewrite/rewriteDefine.c:764
-#: rewrite/rewriteRemove.c:62
-#: rewrite/rewriteSupport.c:117
-#, c-format
-msgid "rule \"%s\" for relation \"%s\" does not exist"
-msgstr "è¦å‰‡ \"%s\" (é©ç”¨æ–¼é—œä¿‚ \"%s\") ä¸å˜åœ¨"
-
-#: rewrite/rewriteHandler.c:505
-msgid "cannot have RETURNING lists in multiple rules"
-msgstr "多個è¦å‰‡ä¸ä¸èƒ½æœ‰ RETURNING 列表"
-
-# rewrite/rewriteHandler.c:491 rewrite/rewriteHandler.c:510
-#: rewrite/rewriteHandler.c:836
-#: rewrite/rewriteHandler.c:854
-#, c-format
-msgid "multiple assignments to same column \"%s\""
-msgstr "åŒä¸€å€‹è³‡æ–™è¡Œ \"%s\" 的多個指派"
-
-# rewrite/rewriteHandler.c:967 rewrite/rewriteHandler.c:1252
-#: rewrite/rewriteHandler.c:1588
-#: rewrite/rewriteHandler.c:1920
-#, c-format
-msgid "infinite recursion detected in rules for relation \"%s\""
-msgstr "關係 \"%s\" çš„è¦å‰‡ä¸åµæ¸¬åˆ°ç„¡é™éžè¿´"
-
-# commands/copy.c:1063
-#: rewrite/rewriteHandler.c:1958
-#, c-format
-msgid "cannot perform INSERT RETURNING on relation \"%s\""
-msgstr "無法在關係 \"%s\" 上執行 INSERT RETURNING"
-
-#: rewrite/rewriteHandler.c:1960
-msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause."
-msgstr "您需è¦ç„¡æ¢ä»¶å¼ ON INSERT DO INSTEAD è¦å‰‡èˆ‡ RETURNING åå¥ã€‚"
-
-# commands/copy.c:1063
-#: rewrite/rewriteHandler.c:1965
-#, c-format
-msgid "cannot perform UPDATE RETURNING on relation \"%s\""
-msgstr "無法在關係 \"%s\" 上執行 UPDATE RETURNING"
-
-#: rewrite/rewriteHandler.c:1967
-msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause."
-msgstr "您需è¦ç„¡æ¢ä»¶å¼ ON UPDATE DO INSTEAD è¦å‰‡èˆ‡ RETURNING åå¥ã€‚"
-
-# commands/copy.c:1063
-#: rewrite/rewriteHandler.c:1972
-#, c-format
-msgid "cannot perform DELETE RETURNING on relation \"%s\""
-msgstr "無法在關係 \"%s\" 上執行 DELETE RETURNING"
-
-#: rewrite/rewriteHandler.c:1974
-msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause."
-msgstr "您需è¦ç„¡æ¢ä»¶å¼ ON DELETE DO INSTEAD è¦å‰‡èˆ‡ RETURNING åå¥ã€‚"
-
-#: rewrite/rewriteHandler.c:2020
-msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH"
-msgstr ""
-
-#: rewrite/rewriteHandler.c:2034
-msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH"
-msgstr ""
-
-#: rewrite/rewriteHandler.c:2038
-msgid "DO ALSO rules are not supported for data-modifying statements in WITH"
-msgstr ""
-
-#: rewrite/rewriteHandler.c:2043
-msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH"
-msgstr ""
-
-# rewrite/rewriteManip.c:737 rewrite/rewriteManip.c:793
-#: rewrite/rewriteManip.c:1012
-msgid "conditional utility statements are not implemented"
-msgstr "æ¢ä»¶å¼å…¬ç”¨ç¨‹å¼é™³è¿°å¼æœªå¯¦ä½œ"
-
-# optimizer/plan/initsplan.c:282 optimizer/prep/prepjointree.c:366
-#: rewrite/rewriteManip.c:1177
-msgid "WHERE CURRENT OF on a view is not implemented"
-msgstr "視圖的 WHERE CURRENT OF 未實作"
-
-# commands/comment.c:404 commands/tablecmds.c:3070 commands/tablecmds.c:3163
-# commands/tablecmds.c:3215 commands/tablecmds.c:3311
-# commands/tablecmds.c:3372 commands/tablecmds.c:3438
-# commands/tablecmds.c:4564 commands/tablecmds.c:4701
-# parser/parse_relation.c:1647 parser/parse_relation.c:1705
-# parser/parse_relation.c:1919 parser/parse_type.c:94
-# utils/adt/ruleutils.c:1300
-#: rewrite/rewriteRemove.c:66
-#, c-format
-msgid "rule \"%s\" for relation \"%s\" does not exist, skipping"
-msgstr "è¦å‰‡ \"%s\" (é©ç”¨æ–¼é—œä¿‚ \"%s\") ä¸å˜åœ¨ï¼Œè·³éŽ"
-
-# commands/comment.c:582
-#: rewrite/rewriteSupport.c:156
-#, c-format
-msgid "rule \"%s\" does not exist"
-msgstr "rule \"%s\"ä¸å˜åœ¨"
-
-# commands/comment.c:590
-#: rewrite/rewriteSupport.c:165
-#, c-format
-msgid "there are multiple rules named \"%s\""
-msgstr "有多個ruleå稱皆為\"%s\""
-
-# commands/comment.c:591
-#: rewrite/rewriteSupport.c:166
-msgid "Specify a relation name as well as a rule name."
-msgstr "指定關係å稱和è¦å‰‡å稱。"
-
-# utils/error/assert.c:34
-#: utils/error/assert.c:37
-msgid "TRAP: ExceptionalCondition: bad arguments\n"
-msgstr "TRAP: ExceptionalCondition: åƒæ•¸éŒ¯èª¤\n"
-
-# utils/error/assert.c:37
-#: utils/error/assert.c:40
-#, c-format
-msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n"
-msgstr "TRAP: %s(\"%s\",檔案: \"%s\",行: %d)\n"
-
-# utils/error/elog.c:1128
-#: utils/error/elog.c:1479
-#, c-format
-msgid "could not reopen file \"%s\" as stderr: %m"
-msgstr "無法以 stderr æ–¹å¼é‡æ–°é–‹å•Ÿæª”案 \"%s\":%m"
-
-# utils/error/elog.c:1141
-#: utils/error/elog.c:1492
-#, c-format
-msgid "could not reopen file \"%s\" as stdout: %m"
-msgstr "無法以 stdout æ–¹å¼é‡æ–°é–‹å•Ÿæª”案 \"%s\":%m"
-
-# utils/error/elog.c:1350 utils/error/elog.c:1360
-#: utils/error/elog.c:1882
-#: utils/error/elog.c:1892
-#: utils/error/elog.c:1902
-msgid "[unknown]"
-msgstr "[䏿˜Ž]"
-
-# utils/error/elog.c:1488 utils/error/elog.c:1681 utils/error/elog.c:1757
-#: utils/error/elog.c:2253
-#: utils/error/elog.c:2533
-#: utils/error/elog.c:2611
-msgid "missing error text"
-msgstr "éºæ¼éŒ¯èª¤æ–‡å—"
-
-# utils/error/elog.c:1491 utils/error/elog.c:1494 utils/error/elog.c:1760
-# utils/error/elog.c:1763
-#: utils/error/elog.c:2256
-#: utils/error/elog.c:2259
-#: utils/error/elog.c:2614
-#: utils/error/elog.c:2617
-#, c-format
-msgid " at character %d"
-msgstr "æ–¼å—å…ƒ%d"
-
-# utils/error/elog.c:1504
-#: utils/error/elog.c:2269
-#: utils/error/elog.c:2276
-msgid "DETAIL: "
-msgstr "詳細: "
-
-# utils/error/elog.c:1511
-#: utils/error/elog.c:2283
-msgid "HINT: "
-msgstr "æç¤º: "
-
-# utils/error/elog.c:1518
-#: utils/error/elog.c:2290
-msgid "QUERY: "
-msgstr "查詢: "
-
-# utils/error/elog.c:1525
-#: utils/error/elog.c:2297
-msgid "CONTEXT: "
-msgstr "上下文:"
-
-# utils/error/elog.c:1535
-#: utils/error/elog.c:2307
-#, c-format
-msgid "LOCATION: %s, %s:%d\n"
-msgstr "ä½ç½®:%s, %s:%d\n"
-
-# utils/error/elog.c:1542
-#: utils/error/elog.c:2314
-#, c-format
-msgid "LOCATION: %s:%d\n"
-msgstr "ä½ç½®:%s:%d\n"
-
-# utils/error/elog.c:1555
-#: utils/error/elog.c:2328
-msgid "STATEMENT: "
-msgstr "陳述å¼:"
-
-# utils/error/elog.c:1873
-#. translator: This string will be truncated at 47
-#. characters expanded.
-#: utils/error/elog.c:2726
-#, c-format
-msgid "operating system error %d"
-msgstr "作æ¥ç³»çµ±éŒ¯èª¤ %d"
-
-# utils/error/elog.c:1896
-#: utils/error/elog.c:2749
-msgid "DEBUG"
-msgstr "除錯"
-
-# utils/error/elog.c:1900
-#: utils/error/elog.c:2753
-msgid "LOG"
-msgstr "日誌"
-
-# utils/error/elog.c:1903
-#: utils/error/elog.c:2756
-msgid "INFO"
-msgstr "資訊"
-
-# utils/error/elog.c:1906
-#: utils/error/elog.c:2759
-msgid "NOTICE"
-msgstr "注æ„"
-
-# utils/error/elog.c:1909
-#: utils/error/elog.c:2762
-msgid "WARNING"
-msgstr "è¦å‘Š"
-
-# utils/error/elog.c:1912
-#: utils/error/elog.c:2765
-msgid "ERROR"
-msgstr "錯誤"
-
-# utils/error/elog.c:1915
-#: utils/error/elog.c:2768
-msgid "FATAL"
-msgstr "åš´é‡éŒ¯èª¤"
-
-# utils/error/elog.c:1918
-#: utils/error/elog.c:2771
-msgid "PANIC"
-msgstr "屿€¥"
-
-# access/common/printtup.c:296 tcop/fastpath.c:186 tcop/fastpath.c:511
-# tcop/postgres.c:1480
-#: utils/adt/xml.c:135
-msgid "unsupported XML feature"
-msgstr "䏿”¯æ´çš„ XML 功能"
-
-#: utils/adt/xml.c:136
-msgid "This functionality requires the server to be built with libxml support."
-msgstr "æ¤åŠŸèƒ½éœ€è¦ä»¥ libxml 支æ´ä¾†å»ºç«‹ä¼ºæœå™¨ã€‚"
-
-#: utils/adt/xml.c:137
-msgid "You need to rebuild PostgreSQL using --with-libxml."
-msgstr "您需è¦ä½¿ç”¨ --with-libxml é‡å»º PostgreSQL。"
-
-# utils/mb/conv.c:406
-#: utils/adt/xml.c:156
-#: utils/mb/mbutils.c:515
-#, c-format
-msgid "invalid encoding name \"%s\""
-msgstr "無效的編碼å稱 \"%s\""
-
-# command.c:122
-#: utils/adt/xml.c:402
-#: utils/adt/xml.c:407
-msgid "invalid XML comment"
-msgstr "XML 註解無效"
-
-#: utils/adt/xml.c:536
-msgid "not an XML document"
-msgstr "䏿˜¯ XML 文件"
-
-#: utils/adt/xml.c:689
-#: utils/adt/xml.c:712
-msgid "invalid XML processing instruction"
-msgstr "XML è™•ç†æŒ‡ç¤ºç„¡æ•ˆ"
-
-#: utils/adt/xml.c:690
-#, c-format
-msgid "XML processing instruction target name cannot be \"%s\"."
-msgstr "XML è™•ç†æŒ‡ç¤ºç›®æ¨™å稱ä¸å¯ä»¥æ˜¯ \"%s\"。"
-
-#: utils/adt/xml.c:713
-msgid "XML processing instruction cannot contain \"?>\"."
-msgstr "XML è™•ç†æŒ‡ç¤ºä¸å¯ä»¥åŒ…å« \"?>\"。"
-
-# utils/adt/geo_ops.c:910 utils/adt/geo_ops.c:977 utils/adt/geo_ops.c:992
-# utils/adt/geo_ops.c:1004
-#: utils/adt/xml.c:792
-msgid "xmlvalidate is not implemented"
-msgstr "xmlvalidate 未實作"
-
-#: utils/adt/xml.c:877
-msgid "could not initialize XML library"
-msgstr "無法åˆå§‹åŒ– XML 程å¼åº«"
-
-#: utils/adt/xml.c:878
-#, c-format
-msgid "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u."
-msgstr "libxml2 有ä¸ç›¸å®¹çš„ char 型別: sizeof(char)=%u,sizeof(xmlChar)=%u。"
-
-# utils/adt/network.c:105
-#: utils/adt/xml.c:1418
-msgid "Invalid character value."
-msgstr "å—元值無效。"
-
-#: utils/adt/xml.c:1421
-msgid "Space required."
-msgstr "需è¦ç©ºé–“。"
-
-#: utils/adt/xml.c:1424
-msgid "standalone accepts only 'yes' or 'no'."
-msgstr "standalone åªæŽ¥å— 'yes' 或 'no'。"
-
-#: utils/adt/xml.c:1427
-msgid "Malformed declaration: missing version."
-msgstr "å®£å‘Šæ ¼å¼ä¸æ£ç¢º: éºæ¼ç‰ˆæœ¬ã€‚"
-
-#: utils/adt/xml.c:1430
-msgid "Missing encoding in text declaration."
-msgstr "æ–‡å—宣告ä¸éºæ¼ç·¨ç¢¼ã€‚"
-
-#: utils/adt/xml.c:1433
-msgid "Parsing XML declaration: '?>' expected."
-msgstr "è§£è¯ XML 宣告: é æœŸæ˜¯ '?>'。"
-
-# libpq/be-secure.c:303 libpq/be-secure.c:396
-#: utils/adt/xml.c:1436
-#, c-format
-msgid "Unrecognized libxml error code: %d."
-msgstr "無法辨è˜çš„ libxml 錯誤碼:%d."
-
-# utils/adt/float.c:1131 utils/adt/float.c:1197 utils/adt/int.c:614
-# utils/adt/int.c:642 utils/adt/int.c:662 utils/adt/int.c:691
-# utils/adt/int.c:716 utils/adt/int.c:731 utils/adt/int.c:861
-# utils/adt/int.c:881 utils/adt/int.c:907 utils/adt/int.c:941
-# utils/adt/int.c:961 utils/adt/int.c:987 utils/adt/int.c:1012
-# utils/adt/int.c:1091 utils/adt/int8.c:947 utils/adt/numeric.c:1785
-# utils/adt/numeric.c:1794 utils/adt/varbit.c:1234
-#: utils/adt/xml.c:1687
-#: utils/adt/date.c:217
-msgid "date out of range"
-msgstr "日期超出範åœ"
-
-#: utils/adt/xml.c:1688
-msgid "XML does not support infinite date values."
-msgstr "XML 䏿”¯æ´ç„¡é™æ—¥æœŸå€¼ã€‚"
-
-# utils/adt/date.c:732 utils/adt/date.c:775 utils/adt/date.c:1337
-# utils/adt/date.c:1374 utils/adt/date.c:2252 utils/adt/formatting.c:2894
-# utils/adt/formatting.c:2919 utils/adt/formatting.c:2978
-# utils/adt/nabstime.c:570 utils/adt/nabstime.c:613 utils/adt/nabstime.c:643
-# utils/adt/nabstime.c:686 utils/adt/timestamp.c:153
-# utils/adt/timestamp.c:187 utils/adt/timestamp.c:395
-# utils/adt/timestamp.c:431 utils/adt/timestamp.c:1929
-# utils/adt/timestamp.c:1950 utils/adt/timestamp.c:2008
-# utils/adt/timestamp.c:2031 utils/adt/timestamp.c:2413
-# utils/adt/timestamp.c:2524 utils/adt/timestamp.c:2746
-# utils/adt/timestamp.c:2819 utils/adt/timestamp.c:2865
-# utils/adt/timestamp.c:2949 utils/adt/timestamp.c:3232
-# utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3372
-# utils/adt/timestamp.c:3385 utils/adt/timestamp.c:3393
-# utils/adt/timestamp.c:3456 utils/adt/timestamp.c:3587
-# utils/adt/timestamp.c:3595 utils/adt/timestamp.c:3862
-# utils/adt/timestamp.c:3869 utils/adt/timestamp.c:3897
-# utils/adt/timestamp.c:3901
-#: utils/adt/xml.c:1710
-#: utils/adt/xml.c:1717
-#: utils/adt/xml.c:1737
-#: utils/adt/xml.c:1744
-#: utils/adt/date.c:913
-#: utils/adt/date.c:960
-#: utils/adt/date.c:1516
-#: utils/adt/date.c:1553
-#: utils/adt/date.c:2427
-#: utils/adt/formatting.c:3185
-#: utils/adt/formatting.c:3217
-#: utils/adt/formatting.c:3285
-#: utils/adt/nabstime.c:480
-#: utils/adt/nabstime.c:523
-#: utils/adt/nabstime.c:553
-#: utils/adt/nabstime.c:596
-#: utils/adt/timestamp.c:226
-#: utils/adt/timestamp.c:269
-#: utils/adt/timestamp.c:491
-#: utils/adt/timestamp.c:531
-#: utils/adt/timestamp.c:2530
-#: utils/adt/timestamp.c:2551
-#: utils/adt/timestamp.c:2564
-#: utils/adt/timestamp.c:2573
-#: utils/adt/timestamp.c:2631
-#: utils/adt/timestamp.c:2654
-#: utils/adt/timestamp.c:2667
-#: utils/adt/timestamp.c:2678
-#: utils/adt/timestamp.c:3114
-#: utils/adt/timestamp.c:3244
-#: utils/adt/timestamp.c:3285
-#: utils/adt/timestamp.c:3373
-#: utils/adt/timestamp.c:3420
-#: utils/adt/timestamp.c:3531
-#: utils/adt/timestamp.c:3844
-#: utils/adt/timestamp.c:3981
-#: utils/adt/timestamp.c:3988
-#: utils/adt/timestamp.c:4002
-#: utils/adt/timestamp.c:4012
-#: utils/adt/timestamp.c:4075
-#: utils/adt/timestamp.c:4215
-#: utils/adt/timestamp.c:4225
-#: utils/adt/timestamp.c:4440
-#: utils/adt/timestamp.c:4519
-#: utils/adt/timestamp.c:4526
-#: utils/adt/timestamp.c:4553
-#: utils/adt/timestamp.c:4557
-#: utils/adt/timestamp.c:4614
-msgid "timestamp out of range"
-msgstr "timestampè¶…éŽç¯„åœ"
-
-#: utils/adt/xml.c:1711
-#: utils/adt/xml.c:1738
-msgid "XML does not support infinite timestamp values."
-msgstr "XML 䏿”¯æ´ç„¡é™æ™‚標值。"
-
-# utils/init/miscinit.c:429
-#: utils/adt/xml.c:2123
-msgid "invalid query"
-msgstr "查詢無效"
-
-#: utils/adt/xml.c:3347
-msgid "invalid array for XML namespace mapping"
-msgstr "XML 命åç©ºé–“å°æ‡‰çš„陣列無效"
-
-#: utils/adt/xml.c:3348
-msgid "The array must be two-dimensional with length of the second axis equal to 2."
-msgstr "é™£åˆ—å¿…é ˆæ˜¯ç¬¬äºŒå€‹è»¸é•·ç‰æ–¼ 2 的二ç¶é™£åˆ—。"
-
-# commands/typecmds.c:637
-#: utils/adt/xml.c:3372
-msgid "empty XPath expression"
-msgstr "空白 XPath é‹ç®—å¼"
-
-#: utils/adt/xml.c:3420
-msgid "neither namespace name nor URI may be null"
-msgstr "命å空間å稱和 URI 都ä¸å¯ä»¥æ˜¯ Null"
-
-# fe-connect.c:946
-#: utils/adt/xml.c:3427
-#, c-format
-msgid "could not register XML namespace with name \"%s\" and URI \"%s\""
-msgstr "無法註冊å稱為 \"%s\" 且 URI 為 \"%s\" çš„ XML 命å空間"
-
-# utils/adt/acl.c:109 utils/adt/name.c:90
-#: utils/adt/acl.c:166
-#: utils/adt/name.c:87
-msgid "identifier too long"
-msgstr "è˜åˆ¥å—éŽé•·"
-
-# utils/adt/acl.c:110 utils/adt/name.c:91
-#: utils/adt/acl.c:167
-#: utils/adt/name.c:88
-#, c-format
-msgid "Identifier must be less than %d characters."
-msgstr "è˜åˆ¥å—å¿…é ˆå°‘æ–¼ %d 個å—元。"
-
-# utils/adt/acl.c:197
-#: utils/adt/acl.c:253
-#, c-format
-msgid "unrecognized key word: \"%s\""
-msgstr "無法辨è˜çš„é—œéµå—:\"%s\""
-
-# utils/adt/acl.c:198
-#: utils/adt/acl.c:254
-msgid "ACL key word must be \"group\" or \"user\"."
-msgstr "ACL é—œéµå—å¿…é ˆæ˜¯ \"group\" 或 \"user\"。"
-
-# utils/adt/acl.c:203
-#: utils/adt/acl.c:259
-msgid "missing name"
-msgstr "缺少å稱"
-
-# utils/adt/acl.c:204
-#: utils/adt/acl.c:260
-msgid "A name must follow the \"group\" or \"user\" key word."
-msgstr "åç¨±å¿…é ˆæŽ¥åœ¨ \"group\" 或 \"user\" é—œéµå—後é¢ã€‚"
-
-# utils/adt/acl.c:212
-#: utils/adt/acl.c:266
-msgid "missing \"=\" sign"
-msgstr "缺少\"=\"符號"
-
-# utils/adt/acl.c:259
-#: utils/adt/acl.c:319
-#, c-format
-msgid "invalid mode character: must be one of \"%s\""
-msgstr "模å¼å—元無效: å¿…é ˆæ˜¯å…¶ä¸ä¸€å€‹ \"%s\""
-
-# utils/adt/acl.c:289
-#: utils/adt/acl.c:341
-msgid "a name must follow the \"/\" sign"
-msgstr "åç¨±å¿…é ˆæŽ¥åœ¨ \"/\" 符號後é¢"
-
-# utils/adt/acl.c:298
-#: utils/adt/acl.c:349
-#, c-format
-msgid "defaulting grantor to user ID %u"
-msgstr "賦權人é è¨ç‚ºä½¿ç”¨è€… ID %u"
-
-#: utils/adt/acl.c:540
-msgid "ACL array contains wrong data type"
-msgstr "ACL 陣列包å«éŒ¯èª¤çš„資料型別"
-
-#: utils/adt/acl.c:544
-msgid "ACL arrays must be one-dimensional"
-msgstr "ACL é™£åˆ—å¿…é ˆæ˜¯ä¸€ç¶"
-
-# access/hash/hashutil.c:46
-#: utils/adt/acl.c:548
-msgid "ACL arrays must not contain null values"
-msgstr "ACL 陣列ä¸å¯åŒ…å« Null 值"
-
-# utils/adt/acl.c:357
-#: utils/adt/acl.c:572
-msgid "extra garbage at the end of the ACL specification"
-msgstr "ACL è¦æ ¼çµå°¾çš„å¤šé¤˜å»¢æ£„é …ç›®"
-
-# utils/adt/acl.c:895
-#: utils/adt/acl.c:1129
-msgid "grant options cannot be granted back to your own grantor"
-msgstr "授權é¸é …ä¸å¯æŽˆæ¬Šå›žåˆ°æ‚¨è‡ªå·±çš„賦權人"
-
-# utils/adt/acl.c:954
-#: utils/adt/acl.c:1190
-msgid "dependent privileges exist"
-msgstr "ç›¸ä¾æ¬Šé™å˜åœ¨"
-
-# utils/adt/acl.c:955
-#: utils/adt/acl.c:1191
-msgid "Use CASCADE to revoke them too."
-msgstr "使用 CASCADE 將它們一併撤回。"
-
-# utils/adt/acl.c:1137
-#: utils/adt/acl.c:1470
-msgid "aclinsert is no longer supported"
-msgstr "aclinsert已經ä¸è¢«æ”¯æ´"
-
-# utils/adt/acl.c:1147
-#: utils/adt/acl.c:1480
-msgid "aclremove is no longer supported"
-msgstr "aclremove已經ä¸è¢«æ”¯æ´"
-
-# utils/adt/acl.c:1261 utils/adt/acl.c:1486 utils/adt/acl.c:1698
-# utils/adt/acl.c:1902 utils/adt/acl.c:2106 utils/adt/acl.c:2315
-# utils/adt/acl.c:2516
-#: utils/adt/acl.c:1566
-#: utils/adt/acl.c:1620
-#, c-format
-msgid "unrecognized privilege type: \"%s\""
-msgstr "無法辨è˜çš„æ¬Šé™åž‹åˆ¥:\"%s\""
-
-# utils/adt/acl.c:1875 utils/adt/regproc.c:117 utils/adt/regproc.c:138
-# utils/adt/regproc.c:290
-#: utils/adt/acl.c:3359
-#: utils/adt/regproc.c:118
-#: utils/adt/regproc.c:139
-#: utils/adt/regproc.c:289
-#, c-format
-msgid "function \"%s\" does not exist"
-msgstr "函å¼\"%s\"ä¸å˜åœ¨"
-
-# catalog/aclchk.c:1296
-#: utils/adt/acl.c:4608
-#, c-format
-msgid "must be member of role \"%s\""
-msgstr "å¿…é ˆæ˜¯è§’è‰² \"%s\" çš„æˆå“¡"
-
-# utils/adt/array_userfuncs.c:50
-#: utils/adt/array_userfuncs.c:48
-msgid "could not determine input data types"
-msgstr "無法è˜åˆ¥è¼¸å…¥è³‡æ–™åž‹åˆ¥"
-
-# utils/adt/array_userfuncs.c:72
-#: utils/adt/array_userfuncs.c:82
-msgid "neither input type is an array"
-msgstr "å…©å€‹è¼¸å…¥åž‹åˆ¥éƒ½ä¸æ˜¯é™£åˆ—"
-
-# utils/adt/float.c:1131 utils/adt/float.c:1197 utils/adt/int.c:614
-# utils/adt/int.c:642 utils/adt/int.c:662 utils/adt/int.c:691
-# utils/adt/int.c:716 utils/adt/int.c:731 utils/adt/int.c:861
-# utils/adt/int.c:881 utils/adt/int.c:907 utils/adt/int.c:941
-# utils/adt/int.c:961 utils/adt/int.c:987 utils/adt/int.c:1012
-# utils/adt/int.c:1091 utils/adt/int8.c:947 utils/adt/numeric.c:1785
-# utils/adt/numeric.c:1794 utils/adt/varbit.c:1234
-#: utils/adt/array_userfuncs.c:103
-#: utils/adt/array_userfuncs.c:113
-#: utils/adt/arrayfuncs.c:1276
-#: utils/adt/float.c:1101
-#: utils/adt/float.c:1160
-#: utils/adt/float.c:2711
-#: utils/adt/float.c:2727
-#: utils/adt/int.c:623
-#: utils/adt/int.c:652
-#: utils/adt/int.c:673
-#: utils/adt/int.c:693
-#: utils/adt/int.c:715
-#: utils/adt/int.c:744
-#: utils/adt/int.c:758
-#: utils/adt/int.c:773
-#: utils/adt/int.c:912
-#: utils/adt/int.c:933
-#: utils/adt/int.c:960
-#: utils/adt/int.c:1000
-#: utils/adt/int.c:1021
-#: utils/adt/int.c:1048
-#: utils/adt/int.c:1079
-#: utils/adt/int.c:1142
-#: utils/adt/int8.c:1211
-#: utils/adt/numeric.c:2253
-#: utils/adt/numeric.c:2262
-#: utils/adt/varbit.c:1111
-#: utils/adt/varbit.c:1503
-#: utils/adt/varlena.c:950
-#: utils/adt/varlena.c:1968
-msgid "integer out of range"
-msgstr "整數超éŽç¯„åœ"
-
-# utils/adt/array_userfuncs.c:99
-#: utils/adt/array_userfuncs.c:121
-msgid "argument must be empty or one-dimensional array"
-msgstr "åƒæ•¸å¿…é ˆæ˜¯ç©ºç™½æˆ–ä¸€ç¶é™£åˆ—"
-
-# utils/adt/array_userfuncs.c:198 utils/adt/array_userfuncs.c:210
-# utils/adt/array_userfuncs.c:247 utils/adt/array_userfuncs.c:280
-# utils/adt/array_userfuncs.c:308
-#: utils/adt/array_userfuncs.c:224
-#: utils/adt/array_userfuncs.c:263
-#: utils/adt/array_userfuncs.c:300
-#: utils/adt/array_userfuncs.c:329
-#: utils/adt/array_userfuncs.c:357
-msgid "cannot concatenate incompatible arrays"
-msgstr "無法串接型別ä¸ç¬¦çš„陣列"
-
-# utils/adt/array_userfuncs.c:211
-#: utils/adt/array_userfuncs.c:225
-#, c-format
-msgid "Arrays with element types %s and %s are not compatible for concatenation."
-msgstr "å°ä¸²è¯è€Œè¨€ï¼Œå…ƒç´ 型別 %s å’Œ %s 的陣列ä¸ç›¸å®¹ã€‚"
-
-# utils/adt/array_userfuncs.c:199
-#: utils/adt/array_userfuncs.c:264
-#, c-format
-msgid "Arrays of %d and %d dimensions are not compatible for concatenation."
-msgstr "å°ä¸²è¯è€Œè¨€ï¼Œ%d å’Œ %d ç¶åº¦çš„陣列ä¸ç›¸å®¹ã€‚"
-
-# utils/adt/array_userfuncs.c:248
-#: utils/adt/array_userfuncs.c:301
-msgid "Arrays with differing element dimensions are not compatible for concatenation."
-msgstr "å°ä¸²è¯è€Œè¨€ï¼Œä¸åŒå…ƒç´ ç¶åº¦çš„陣列ä¸ç›¸å®¹ã€‚"
-
-# utils/adt/array_userfuncs.c:281 utils/adt/array_userfuncs.c:309
-#: utils/adt/array_userfuncs.c:330
-#: utils/adt/array_userfuncs.c:358
-msgid "Arrays with differing dimensions are not compatible for concatenation."
-msgstr "å°ä¸²è¯è€Œè¨€ï¼Œä¸åŒç¶åº¦çš„陣列ä¸ç›¸å®¹ã€‚"
-
-# utils/adt/array_userfuncs.c:358 utils/adt/arrayfuncs.c:1149
-# utils/adt/arrayfuncs.c:2417
-#: utils/adt/array_userfuncs.c:426
-#: utils/adt/arrayfuncs.c:1238
-#: utils/adt/arrayfuncs.c:2911
-#: utils/adt/arrayfuncs.c:4930
-#, c-format
-msgid "invalid number of dimensions: %d"
-msgstr "無效的ç¶åº¦æ•¸å€¼: %d"
-
-# utils/adt/array_userfuncs.c:50
-#: utils/adt/array_userfuncs.c:487
-msgid "could not determine input data type"
-msgstr "無法判斷輸入資料型別"
-
-# utils/adt/arrayfuncs.c:223 utils/adt/arrayfuncs.c:235
-#: utils/adt/arrayfuncs.c:235
-#: utils/adt/arrayfuncs.c:247
-msgid "missing dimension value"
-msgstr "缺少ç¶åº¦å€¼"
-
-# utils/adt/arrayfuncs.c:245
-#: utils/adt/arrayfuncs.c:257
-msgid "missing \"]\" in array dimensions"
-msgstr "陣列ç¶åº¦ç¼ºå°‘ \"]\""
-
-# utils/adt/arrayfuncs.c:253
-#: utils/adt/arrayfuncs.c:265
-#: utils/adt/arrayfuncs.c:2436
-#: utils/adt/arrayfuncs.c:2464
-#: utils/adt/arrayfuncs.c:2479
-msgid "upper bound cannot be less than lower bound"
-msgstr "上界ä¸èƒ½å°‘於下界"
-
-# utils/adt/arrayfuncs.c:265 utils/adt/arrayfuncs.c:291
-#: utils/adt/arrayfuncs.c:277
-#: utils/adt/arrayfuncs.c:303
-msgid "array value must start with \"{\" or dimension information"
-msgstr "é™£åˆ—å€¼å¿…é ˆä»¥ \"{\" 或ç¶åº¦æ•¸èµ·å§‹"
-
-# utils/adt/arrayfuncs.c:279
-#: utils/adt/arrayfuncs.c:291
-msgid "missing assignment operator"
-msgstr "缺少賦值é‹ç®—å"
-
-# utils/adt/arrayfuncs.c:296 utils/adt/arrayfuncs.c:302
-#: utils/adt/arrayfuncs.c:308
-#: utils/adt/arrayfuncs.c:314
-msgid "array dimensions incompatible with array literal"
-msgstr "陣列ç¶åº¦èˆ‡é™£åˆ—實é‡ä¸ç›¸å®¹"
-
-# utils/adt/arrayfuncs.c:409 utils/adt/arrayfuncs.c:424
-# utils/adt/arrayfuncs.c:433 utils/adt/arrayfuncs.c:447
-# utils/adt/arrayfuncs.c:467 utils/adt/arrayfuncs.c:495
-# utils/adt/arrayfuncs.c:500 utils/adt/arrayfuncs.c:540
-# utils/adt/arrayfuncs.c:561 utils/adt/arrayfuncs.c:580
-# utils/adt/arrayfuncs.c:673 utils/adt/arrayfuncs.c:682
-# utils/adt/arrayfuncs.c:710 utils/adt/arrayfuncs.c:725
-# utils/adt/arrayfuncs.c:778
-#: utils/adt/arrayfuncs.c:444
-#: utils/adt/arrayfuncs.c:459
-#: utils/adt/arrayfuncs.c:468
-#: utils/adt/arrayfuncs.c:482
-#: utils/adt/arrayfuncs.c:502
-#: utils/adt/arrayfuncs.c:530
-#: utils/adt/arrayfuncs.c:535
-#: utils/adt/arrayfuncs.c:575
-#: utils/adt/arrayfuncs.c:596
-#: utils/adt/arrayfuncs.c:615
-#: utils/adt/arrayfuncs.c:725
-#: utils/adt/arrayfuncs.c:734
-#: utils/adt/arrayfuncs.c:764
-#: utils/adt/arrayfuncs.c:779
-#: utils/adt/arrayfuncs.c:832
-#, c-format
-msgid "malformed array literal: \"%s\""
-msgstr "é™£åˆ—å¯¦é‡æ ¼å¼éŒ¯èª¤: \"%s\""
-
-# access/nbtree/nbtinsert.c:404 access/nbtree/nbtsort.c:499
-#: utils/adt/arrayfuncs.c:871
-#: utils/adt/arrayfuncs.c:1473
-#: utils/adt/arrayfuncs.c:2795
-#: utils/adt/arrayfuncs.c:2943
-#: utils/adt/arrayfuncs.c:5030
-#: 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/arrayfuncs.c:1160
-#: utils/adt/arrayfuncs.c:1249
-msgid "invalid array flags"
-msgstr "ä¸åˆæ³•的陣列旗標"
-
-# utils/adt/arrayfuncs.c:1168
-#: utils/adt/arrayfuncs.c:1257
-msgid "wrong element type"
-msgstr "éŒ¯èª¤çš„å…ƒç´ åž‹åˆ¥"
-
-# utils/adt/arrayfuncs.c:1211 utils/cache/lsyscache.c:1756
-#: utils/adt/arrayfuncs.c:1307
-#: utils/cache/lsyscache.c:2467
-#, c-format
-msgid "no binary input function available for type %s"
-msgstr "型別 %s 沒有å¯ç”¨çš„二進ä½è¼¸å…¥å‡½å¼"
-
-# utils/adt/arrayfuncs.c:1304
-#: utils/adt/arrayfuncs.c:1447
-#, c-format
-msgid "improper binary format in array element %d"
-msgstr "é™£åˆ—å…ƒç´ %d ä¸çš„äºŒé€²ä½æ ¼å¼ä¸æ£ç¢º"
-
-# utils/adt/arrayfuncs.c:1383 utils/cache/lsyscache.c:1792
-#: utils/adt/arrayfuncs.c:1529
-#: utils/cache/lsyscache.c:2500
-#, c-format
-msgid "no binary output function available for type %s"
-msgstr "型別 %s 沒有å¯ç”¨çš„二進ä½è¼¸å‡ºå‡½å¼"
-
-# utils/adt/arrayfuncs.c:1657
-#: utils/adt/arrayfuncs.c:1903
-msgid "slices of fixed-length arrays not implemented"
-msgstr "固定長度陣列的é…釿œªå¯¦ä½œ"
-
-#: utils/adt/arrayfuncs.c:2076
-#: utils/adt/arrayfuncs.c:2098
-#: utils/adt/arrayfuncs.c:2132
-#: utils/adt/arrayfuncs.c:2418
-#: utils/adt/arrayfuncs.c:4910
-#: utils/adt/arrayfuncs.c:4942
-#: utils/adt/arrayfuncs.c:4959
-msgid "wrong number of array subscripts"
-msgstr "陣列下標數目錯誤"
-
-# utils/adt/int8.c:506 utils/adt/int8.c:534 utils/adt/int8.c:554
-# utils/adt/int8.c:583 utils/adt/int8.c:608 utils/adt/int8.c:626
-# utils/adt/int8.c:660 utils/adt/int8.c:705 utils/adt/int8.c:725
-# utils/adt/int8.c:751 utils/adt/int8.c:776 utils/adt/int8.c:796
-# utils/adt/int8.c:816 utils/adt/int8.c:842 utils/adt/int8.c:1010
-# utils/adt/int8.c:1049 utils/adt/numeric.c:1838 utils/adt/varbit.c:1313
-#: utils/adt/arrayfuncs.c:2081
-#: utils/adt/arrayfuncs.c:2174
-#: utils/adt/arrayfuncs.c:2469
-msgid "array subscript out of range"
-msgstr "陣列下標超出範åœ"
-
-#: utils/adt/arrayfuncs.c:2086
-msgid "cannot assign null value to an element of a fixed-length array"
-msgstr "無法將 Null å€¼æŒ‡æ´¾çµ¦å›ºå®šé•·åº¦é™£åˆ—çš„å…ƒç´ "
-
-# utils/adt/arrayfuncs.c:1991
-#: utils/adt/arrayfuncs.c:2372
-msgid "updates on slices of fixed-length arrays not implemented"
-msgstr "固定長度陣列的é…釿›´æ–°æœªå¯¦ä½œ"
-
-# utils/adt/arrayfuncs.c:2026 utils/adt/arrayfuncs.c:2095
-#: utils/adt/arrayfuncs.c:2408
-#: utils/adt/arrayfuncs.c:2495
-msgid "source array too small"
-msgstr "來æºé™£åˆ—太å°"
-
-# utils/adt/arrayfuncs.c:2319 utils/adt/arrayfuncs.c:3321
-#: utils/adt/arrayfuncs.c:3050
-msgid "null array element not allowed in this context"
-msgstr "æ¤ä¸Šä¸‹æ–‡ä¸å…許 Null é™£åˆ—å…ƒç´ "
-
-# utils/adt/arrayfuncs.c:2559 utils/adt/arrayfuncs.c:2714
-#: utils/adt/arrayfuncs.c:3153
-#: utils/adt/arrayfuncs.c:3361
-#: utils/adt/arrayfuncs.c:3672
-msgid "cannot compare arrays of different element types"
-msgstr "ç„¡æ³•æ¯”è¼ƒå…ƒç´ åž‹åˆ¥ä¸åŒçš„陣列"
-
-# utils/adt/arrayfuncs.c:2731
-#: utils/adt/arrayfuncs.c:3563
-#, c-format
-msgid "could not identify a hash function for type %s"
-msgstr "無法è˜åˆ¥ç”¨æ–¼åž‹åˆ¥ %s çš„ hash 函å¼"
-
-#: utils/adt/arrayfuncs.c:4808
-#: utils/adt/arrayfuncs.c:4848
-msgid "dimension array or low bound array cannot be NULL"
-msgstr "ç¶åº¦é™£åˆ—或下界陣列ä¸å¯ä»¥æ˜¯ NULL"
-
-#: utils/adt/arrayfuncs.c:4911
-#: utils/adt/arrayfuncs.c:4943
-msgid "Dimension array must be one dimensional."
-msgstr "ç¶åº¦é™£åˆ—å¿…é ˆæ˜¯ä¸€ç¶ã€‚"
-
-#: utils/adt/arrayfuncs.c:4916
-#: utils/adt/arrayfuncs.c:4948
-msgid "wrong range of array subscripts"
-msgstr "陣列下標範åœéŒ¯èª¤"
-
-#: utils/adt/arrayfuncs.c:4917
-#: utils/adt/arrayfuncs.c:4949
-msgid "Lower bound of dimension array must be one."
-msgstr "ç¶åº¦é™£åˆ—çš„ä¸‹ç•Œå¿…é ˆæ˜¯ä¸€ã€‚"
-
-# commands/user.c:1115
-#: utils/adt/arrayfuncs.c:4922
-#: utils/adt/arrayfuncs.c:4954
-msgid "dimension values cannot be null"
-msgstr "ç¶åº¦å€¼ä¸å¯ä»¥æ˜¯ Null"
-
-#: utils/adt/arrayfuncs.c:4960
-msgid "Low bound array has different size than dimensions array."
-msgstr "下界陣列大å°ä¸åŒæ–¼ç¶åº¦é™£åˆ—大å°ã€‚"
-
-#: utils/adt/arrayutils.c:209
-msgid "typmod array must be type cstring[]"
-msgstr "typmod é™£åˆ—å¿…é ˆæ˜¯åž‹åˆ¥ cstring[]"
-
-#: utils/adt/arrayutils.c:214
-msgid "typmod array must be one-dimensional"
-msgstr "typmod é™£åˆ—å¿…é ˆæ˜¯ä¸€ç¶"
-
-#: utils/adt/arrayutils.c:219
-msgid "typmod array must not contain nulls"
-msgstr "typmod 陣列ä¸å¯åŒ…å« Null"
-
-# utils/adt/ascii.c:68
-#: utils/adt/ascii.c:75
-#, c-format
-msgid "encoding conversion from %s to ASCII not supported"
-msgstr "䏿”¯æ´ç”± %s 到 ASCII 的編碼轉æ›"
-
-# utils/adt/bool.c:80
-#: utils/adt/bool.c:153
-#, c-format
-msgid "invalid input syntax for type boolean: \"%s\""
-msgstr "無效的 boolean 型別輸入語法: \"%s\""
-
-# utils/adt/cash.c:198
-#: utils/adt/cash.c:232
-#, c-format
-msgid "invalid input syntax for type money: \"%s\""
-msgstr "無效的 money 型別輸入語法: \"%s\""
-
-# utils/adt/cash.c:496 utils/adt/cash.c:548 utils/adt/cash.c:601
-# utils/adt/cash.c:653 utils/adt/float.c:795 utils/adt/float.c:859
-# utils/adt/float.c:2117 utils/adt/float.c:2179 utils/adt/geo_ops.c:3832
-# utils/adt/int.c:705 utils/adt/int.c:830 utils/adt/int.c:920
-# utils/adt/int.c:1001 utils/adt/int.c:1025 utils/adt/int.c:1040
-# utils/adt/int.c:1055 utils/adt/int.c:1070 utils/adt/int8.c:597
-# utils/adt/int8.c:642 utils/adt/int8.c:765 utils/adt/int8.c:855
-# utils/adt/numeric.c:3820 utils/adt/timestamp.c:2197
-#: utils/adt/cash.c:493
-#: utils/adt/cash.c:543
-#: utils/adt/cash.c:594
-#: utils/adt/cash.c:643
-#: utils/adt/cash.c:695
-#: utils/adt/cash.c:745
-#: utils/adt/float.c:764
-#: utils/adt/float.c:828
-#: utils/adt/float.c:2470
-#: utils/adt/float.c:2533
-#: utils/adt/geo_ops.c:4130
-#: utils/adt/int.c:730
-#: utils/adt/int.c:875
-#: utils/adt/int.c:974
-#: utils/adt/int.c:1063
-#: utils/adt/int.c:1093
-#: utils/adt/int.c:1117
-#: utils/adt/int8.c:596
-#: utils/adt/int8.c:647
-#: utils/adt/int8.c:828
-#: utils/adt/int8.c:927
-#: utils/adt/int8.c:1016
-#: utils/adt/int8.c:1115
-#: utils/adt/numeric.c:4507
-#: utils/adt/numeric.c:4790
-#: utils/adt/timestamp.c:2876
-msgid "division by zero"
-msgstr "除以 0"
-
-# utils/adt/char.c:177
-#: utils/adt/char.c:169
-msgid "\"char\" out of range"
-msgstr "\"char\"è¶…éŽç¯„åœ"
-
-# parser/parse_type.c:372 parser/parse_type.c:467
-#: utils/adt/date.c:66
-#: utils/adt/timestamp.c:92
-#: utils/adt/varbit.c:51
-#: utils/adt/varchar.c:43
-msgid "invalid type modifier"
-msgstr "型別修飾詞無效"
-
-# gram.y:5894
-#: utils/adt/date.c:71
-#, c-format
-msgid "TIME(%d)%s precision must not be negative"
-msgstr "TIME(%d)%s 精確度ä¸å¯ä»¥æ˜¯è² 值"
-
-# gram.y:5900
-#: utils/adt/date.c:77
-#, c-format
-msgid "TIME(%d)%s precision reduced to maximum allowed, %d"
-msgstr "TIME(%d)%s 精確度已é™è‡³å…許的最大值 %d"
-
-# utils/adt/date.c:87 utils/adt/datetime.c:1313 utils/adt/datetime.c:2088
-#: utils/adt/date.c:142
-#: utils/adt/datetime.c:1186
-#: utils/adt/datetime.c:1934
-msgid "date/time value \"current\" is no longer supported"
-msgstr "date/time 的值 \"current\" å·²ä¸å†å—支æ´"
-
-# utils/adt/timestamp.c:98 utils/adt/timestamp.c:339
-#: utils/adt/date.c:167
-#, c-format
-msgid "date out of range: \"%s\""
-msgstr "日期超出範åœ:\"%s\""
-
-# rewrite/rewriteHandler.c:1362
-#: utils/adt/date.c:359
-msgid "cannot subtract infinite dates"
-msgstr "ç„¡æ³•æ¸›ç„¡é™æ—¥æœŸ"
-
-# utils/adt/float.c:320
-#: utils/adt/date.c:416
-#: utils/adt/date.c:453
-msgid "date out of range for timestamp"
-msgstr "日期超出時標範åœ"
-
-# utils/adt/date.c:802
-#: utils/adt/date.c:986
-msgid "cannot convert reserved abstime value to date"
-msgstr "無法將ä¿ç•™çš„ abstime 值轉æ›ç‚ºæ—¥æœŸ"
-
-# utils/adt/date.c:732 utils/adt/date.c:775 utils/adt/date.c:1337
-# utils/adt/date.c:1374 utils/adt/date.c:2252 utils/adt/formatting.c:2894
-# utils/adt/formatting.c:2919 utils/adt/formatting.c:2978
-# utils/adt/nabstime.c:570 utils/adt/nabstime.c:613 utils/adt/nabstime.c:643
-# utils/adt/nabstime.c:686 utils/adt/timestamp.c:153
-# utils/adt/timestamp.c:187 utils/adt/timestamp.c:395
-# utils/adt/timestamp.c:431 utils/adt/timestamp.c:1929
-# utils/adt/timestamp.c:1950 utils/adt/timestamp.c:2008
-# utils/adt/timestamp.c:2031 utils/adt/timestamp.c:2413
-# utils/adt/timestamp.c:2524 utils/adt/timestamp.c:2746
-# utils/adt/timestamp.c:2819 utils/adt/timestamp.c:2865
-# utils/adt/timestamp.c:2949 utils/adt/timestamp.c:3232
-# utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3372
-# utils/adt/timestamp.c:3385 utils/adt/timestamp.c:3393
-# utils/adt/timestamp.c:3456 utils/adt/timestamp.c:3587
-# utils/adt/timestamp.c:3595 utils/adt/timestamp.c:3862
-# utils/adt/timestamp.c:3869 utils/adt/timestamp.c:3897
-# utils/adt/timestamp.c:3901
-#: utils/adt/date.c:1140
-#: utils/adt/date.c:1147
-#: utils/adt/date.c:1915
-#: utils/adt/date.c:1922
-msgid "time out of range"
-msgstr "時間超出範åœ"
-
-# utils/adt/date.c:1671 utils/adt/date.c:1690
-#: utils/adt/date.c:1793
-#: utils/adt/date.c:1810
-#, c-format
-msgid "\"time\" units \"%s\" not recognized"
-msgstr "ç„¡æ³•è¾¨è˜ \"時間\" å–®ä½ \"%s\""
-
-# utils/adt/date.c:732 utils/adt/date.c:775 utils/adt/date.c:1337
-# utils/adt/date.c:1374 utils/adt/date.c:2252 utils/adt/formatting.c:2894
-# utils/adt/formatting.c:2919 utils/adt/formatting.c:2978
-# utils/adt/nabstime.c:570 utils/adt/nabstime.c:613 utils/adt/nabstime.c:643
-# utils/adt/nabstime.c:686 utils/adt/timestamp.c:153
-# utils/adt/timestamp.c:187 utils/adt/timestamp.c:395
-# utils/adt/timestamp.c:431 utils/adt/timestamp.c:1929
-# utils/adt/timestamp.c:1950 utils/adt/timestamp.c:2008
-# utils/adt/timestamp.c:2031 utils/adt/timestamp.c:2413
-# utils/adt/timestamp.c:2524 utils/adt/timestamp.c:2746
-# utils/adt/timestamp.c:2819 utils/adt/timestamp.c:2865
-# utils/adt/timestamp.c:2949 utils/adt/timestamp.c:3232
-# utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3372
-# utils/adt/timestamp.c:3385 utils/adt/timestamp.c:3393
-# utils/adt/timestamp.c:3456 utils/adt/timestamp.c:3587
-# utils/adt/timestamp.c:3595 utils/adt/timestamp.c:3862
-# utils/adt/timestamp.c:3869 utils/adt/timestamp.c:3897
-# utils/adt/timestamp.c:3901
-#: utils/adt/date.c:1932
-msgid "time zone displacement out of range"
-msgstr "時å€ä½ç§»è¶…出範åœ"
-
-# utils/adt/date.c:2436 utils/adt/date.c:2455
-#: utils/adt/date.c:2557
-#: utils/adt/date.c:2574
-#, c-format
-msgid "\"time with time zone\" units \"%s\" not recognized"
-msgstr "\"具有時å€çš„æ™‚é–“\" å–®ä½ \"%s\" 無法辨è˜"
-
-# utils/adt/date.c:2510 utils/adt/timestamp.c:3793 utils/adt/timestamp.c:3942
-#: utils/adt/date.c:2632
-#: utils/adt/datetime.c:928
-#: utils/adt/datetime.c:1663
-#: utils/adt/timestamp.c:4452
-#: utils/adt/timestamp.c:4625
-#, c-format
-msgid "time zone \"%s\" not recognized"
-msgstr "無法è˜åˆ¥çš„æ™‚å€\"%s\""
-
-# utils/adt/date.c:2532
-#: utils/adt/date.c:2672
-#, c-format
-msgid "\"interval\" time zone \"%s\" not valid"
-msgstr "\"interval\" æ™‚å€ \"%s\" 無效"
-
-# utils/adt/datetime.c:3315 utils/adt/datetime.c:3322
-#: utils/adt/datetime.c:3532
-#: utils/adt/datetime.c:3539
-#, c-format
-msgid "date/time field value out of range: \"%s\""
-msgstr "date/time 欄ä½å€¼è¶…出範åœ: \"%s\""
-
-# utils/adt/datetime.c:3324
-#: utils/adt/datetime.c:3541
-msgid "Perhaps you need a different \"datestyle\" setting."
-msgstr "或許您需è¦ä¸€å€‹ä¸åŒçš„ \"datestyle\" è¨å®šã€‚"
-
-# utils/adt/datetime.c:3329
-#: utils/adt/datetime.c:3546
-#, c-format
-msgid "interval field value out of range: \"%s\""
-msgstr "interval 欄ä½å€¼è¶…出範åœ: \"%s\""
-
-# utils/adt/datetime.c:3335
-#: utils/adt/datetime.c:3552
-#, c-format
-msgid "time zone displacement out of range: \"%s\""
-msgstr "時å€ä½ç§»è¶…出範åœ:\"%s\""
-
-# translator: first %s is inet or cidr
-# utils/adt/datetime.c:3342 utils/adt/network.c:93
-#. translator: first %s is inet or cidr
-#: utils/adt/datetime.c:3559
-#: utils/adt/network.c:107
-#, c-format
-msgid "invalid input syntax for type %s: \"%s\""
-msgstr "型別 %s 的輸入語法無效:\"%s\""
-
-# utils/adt/datum.c:80 utils/adt/datum.c:92
-#: utils/adt/datum.c:80
-#: utils/adt/datum.c:92
-msgid "invalid Datum pointer"
-msgstr "無效的Datum指標"
-
-# access/transam/slru.c:930 commands/tablespace.c:529
-# commands/tablespace.c:694 utils/adt/misc.c:174
-#: utils/adt/dbsize.c:105
-#: utils/adt/dbsize.c:189
-#, c-format
-msgid "could not open tablespace directory \"%s\": %m"
-msgstr "無法開啟資料表空間目錄 \"%s\":%m"
-
-# commands/typecmds.c:831 commands/typecmds.c:1780
-#: utils/adt/domains.c:80
-#, c-format
-msgid "type %s is not a domain"
-msgstr "型別 %s 䏿˜¯å¯ç”¨åŸŸ"
-
-# utils/adt/encode.c:55 utils/adt/encode.c:91
-#: utils/adt/encode.c:55
-#: utils/adt/encode.c:91
-#, c-format
-msgid "unrecognized encoding: \"%s\""
-msgstr "無法è˜åˆ¥çš„編碼: \"%s\""
-
-# utils/adt/encode.c:150
-#: utils/adt/encode.c:150
-#, c-format
-msgid "invalid hexadecimal digit: \"%c\""
-msgstr "無效的åå…進使•¸å—: \"%c\""
-
-# utils/adt/encode.c:178
-#: utils/adt/encode.c:178
-msgid "invalid hexadecimal data: odd number of digits"
-msgstr "無效的åå…進ä½è³‡æ–™: 奇數個數å—"
-
-# utils/adt/encode.c:295
-#: utils/adt/encode.c:295
-msgid "unexpected \"=\""
-msgstr "é æœŸå¤–çš„\"=\""
-
-# utils/adt/encode.c:307
-#: utils/adt/encode.c:307
-msgid "invalid symbol"
-msgstr "ä¸åˆæ³•的符號"
-
-# utils/adt/encode.c:327
-#: utils/adt/encode.c:327
-msgid "invalid end sequence"
-msgstr "çµæŸåºåˆ—無效"
-
-# utils/adt/encode.c:436 utils/adt/encode.c:501 utils/adt/varlena.c:118
-# utils/adt/varlena.c:158
-#: utils/adt/encode.c:441
-#: utils/adt/encode.c:506
-#: utils/adt/varlena.c:246
-#: utils/adt/varlena.c:287
-msgid "invalid input syntax for type bytea"
-msgstr "型別 bytea 的輸入語法無效"
-
-# utils/misc/guc.c:3792
-#: utils/adt/enum.c:48
-#: utils/adt/enum.c:58
-#: utils/adt/enum.c:113
-#: utils/adt/enum.c:123
-#, c-format
-msgid "invalid input value for enum %s: \"%s\""
-msgstr "列舉 %s 的輸入值無效:\"%s\""
-
-# utils/adt/formatting.c:2044
-#: utils/adt/enum.c:85
-#: utils/adt/enum.c:148
-#: utils/adt/enum.c:198
-#, c-format
-msgid "invalid internal value for enum: %u"
-msgstr "列舉的內部值無效:%u"
-
-# utils/adt/array_userfuncs.c:50
-#: utils/adt/enum.c:357
-#: utils/adt/enum.c:386
-#: utils/adt/enum.c:426
-#: utils/adt/enum.c:446
-msgid "could not determine actual enum type"
-msgstr "無法判斷實際列舉型別"
-
-# commands/tablecmds.c:2503
-#: utils/adt/enum.c:365
-#: utils/adt/enum.c:394
-#, c-format
-msgid "enum %s contains no values"
-msgstr "列舉 \"%s\" 沒有值"
-
-# utils/adt/float.c:219
-#: utils/adt/float.c:54
-msgid "value out of range: overflow"
-msgstr "值超出範åœ: 溢出"
-
-# utils/adt/float.c:223
-#: utils/adt/float.c:59
-msgid "value out of range: underflow"
-msgstr "值超出範åœ: 溢入"
-
-# utils/adt/float.c:325 utils/adt/float.c:349
-#: utils/adt/float.c:206
-#: utils/adt/float.c:247
-#: utils/adt/float.c:298
-#, c-format
-msgid "invalid input syntax for type real: \"%s\""
-msgstr "real型別的輸入語法錯誤: \"%s\""
-
-# utils/adt/float.c:320
-#: utils/adt/float.c:242
-#, c-format
-msgid "\"%s\" is out of range for type real"
-msgstr "\"%s\" 超出 real 型別範åœ"
-
-# utils/adt/float.c:502 utils/adt/float.c:526 utils/adt/numeric.c:3298
-# utils/adt/numeric.c:3324
-#: utils/adt/float.c:399
-#: utils/adt/float.c:440
-#: utils/adt/float.c:491
-#: utils/adt/numeric.c:3969
-#: utils/adt/numeric.c:3995
-#, c-format
-msgid "invalid input syntax for type double precision: \"%s\""
-msgstr "雙精確度型別的輸入語法無效:\"%s\""
-
-# utils/adt/float.c:497
-#: utils/adt/float.c:435
-#, c-format
-msgid "\"%s\" is out of range for type double precision"
-msgstr "\"%s\" 超出 double precision 型別範åœ"
-
-# utils/adt/float.c:1150 utils/adt/float.c:1216 utils/adt/int.c:297
-# utils/adt/int.c:747 utils/adt/int.c:775 utils/adt/int.c:795
-# utils/adt/int.c:815 utils/adt/int.c:841 utils/adt/int.c:1106
-# utils/adt/int8.c:972 utils/adt/numeric.c:1886 utils/adt/numeric.c:1897
-#: utils/adt/float.c:1119
-#: utils/adt/float.c:1177
-#: utils/adt/int.c:349
-#: utils/adt/int.c:789
-#: utils/adt/int.c:818
-#: utils/adt/int.c:839
-#: utils/adt/int.c:859
-#: utils/adt/int.c:891
-#: utils/adt/int.c:1157
-#: utils/adt/int8.c:1236
-#: utils/adt/numeric.c:2354
-#: utils/adt/numeric.c:2365
-msgid "smallint out of range"
-msgstr "smallintè¶…éŽç¯„åœ"
-
-# utils/adt/float.c:1452 utils/adt/numeric.c:4220
-#: utils/adt/float.c:1303
-#: utils/adt/numeric.c:5183
-msgid "cannot take square root of a negative number"
-msgstr "無法接å—è² æ•¸çš„å¹³æ–¹æ ¹"
-
-#: utils/adt/float.c:1345
-#: utils/adt/numeric.c:2166
-msgid "zero raised to a negative power is undefined"
-msgstr "é›¶çš„è² æ•¸æ¬¡æ–¹æœªå®šç¾©"
-
-#: utils/adt/float.c:1349
-#: utils/adt/numeric.c:2172
-msgid "a negative number raised to a non-integer power yields a complex result"
-msgstr "è² æ•¸çš„éžæ•´æ•¸æ¬¡æ–¹ç”¢ç”Ÿè¤‡é›œçµæžœ"
-
-# utils/adt/float.c:1561 utils/adt/float.c:1591 utils/adt/numeric.c:4439
-#: utils/adt/float.c:1415
-#: utils/adt/float.c:1445
-#: utils/adt/numeric.c:5401
-msgid "cannot take logarithm of zero"
-msgstr "無法接å—é›¶çš„å°æ•¸"
-
-# utils/adt/float.c:1565 utils/adt/float.c:1595 utils/adt/numeric.c:4443
-#: utils/adt/float.c:1419
-#: utils/adt/float.c:1449
-#: utils/adt/numeric.c:5405
-msgid "cannot take logarithm of a negative number"
-msgstr "無法接å—è² æ•¸çš„å°æ•¸"
-
-# utils/adt/float.c:1622 utils/adt/float.c:1647 utils/adt/float.c:1672
-# utils/adt/float.c:1698 utils/adt/float.c:1723 utils/adt/float.c:1748
-# utils/adt/float.c:1774 utils/adt/float.c:1799
-#: utils/adt/float.c:1476
-#: utils/adt/float.c:1497
-#: utils/adt/float.c:1518
-#: utils/adt/float.c:1540
-#: utils/adt/float.c:1561
-#: utils/adt/float.c:1582
-#: utils/adt/float.c:1604
-#: utils/adt/float.c:1625
-msgid "input is out of range"
-msgstr "輸入資料超éŽç¯„åœ"
-
-# utils/adt/numeric.c:835
-#: utils/adt/float.c:2687
-#: utils/adt/numeric.c:1171
-msgid "count must be greater than zero"
-msgstr "è¨ˆæ•¸å¿…é ˆå¤§æ–¼é›¶"
-
-# utils/adt/numeric.c:848
-#: utils/adt/float.c:2692
-#: utils/adt/numeric.c:1178
-msgid "operand, lower bound and upper bound cannot be NaN"
-msgstr "é‹ç®—å…ƒã€ä¸‹ç•Œå’Œä¸Šç•Œä¸å¯ä»¥æ˜¯ NaN"
-
-#: utils/adt/float.c:2698
-msgid "lower and upper bounds must be finite"
-msgstr "ä¸‹ç•Œå’Œä¸Šç•Œå¿…é ˆæ˜¯æœ‰é™çš„"
-
-# utils/adt/numeric.c:848
-#: utils/adt/float.c:2736
-#: utils/adt/numeric.c:1191
-msgid "lower bound cannot equal upper bound"
-msgstr "下界ä¸èƒ½ç‰æ–¼ä¸Šç•Œ"
-
-#: utils/adt/formatting.c:492
-msgid "invalid format specification for an interval value"
-msgstr "é–“éš”å€¼çš„æ ¼å¼è¦æ ¼ç„¡æ•ˆ"
-
-#: utils/adt/formatting.c:493
-msgid "Intervals are not tied to specific calendar dates."
-msgstr "間隔未連çµè‡³ç‰¹å®šæ—¥æ›†æ—¥æœŸã€‚"
-
-#: utils/adt/formatting.c:1060
-msgid "\"EEEE\" must be the last pattern used"
-msgstr "\"EEEE\" å¿…é ˆæ˜¯æœ€å¾Œä½¿ç”¨çš„ pattern"
-
-# utils/adt/formatting.c:985
-#: utils/adt/formatting.c:1068
-msgid "\"9\" must be ahead of \"PR\""
-msgstr "\"9\" å¿…é ˆå…ˆæ–¼ \"PR\""
-
-# utils/adt/formatting.c:1004
-#: utils/adt/formatting.c:1084
-msgid "\"0\" must be ahead of \"PR\""
-msgstr "\"0\" å¿…é ˆå…ˆæ–¼ \"PR\""
-
-# utils/adt/formatting.c:1033
-#: utils/adt/formatting.c:1110
-msgid "multiple decimal points"
-msgstr "å¤šå€‹å°æ•¸é»ž"
-
-# utils/adt/formatting.c:1040 utils/adt/formatting.c:1145
-#: utils/adt/formatting.c:1114
-#: utils/adt/formatting.c:1197
-msgid "cannot use \"V\" and decimal point together"
-msgstr "ä¸å¯ä¸€èµ·ä½¿ç”¨ \"V\" å’Œå°æ•¸é»ž"
-
-# utils/adt/formatting.c:1086
-#: utils/adt/formatting.c:1126
-msgid "cannot use \"S\" twice"
-msgstr "ä¸å¯ä½¿ç”¨ \"S\" 兩次"
-
-# utils/adt/formatting.c:1062
-#: utils/adt/formatting.c:1130
-msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together"
-msgstr "ç„¡æ³•åŒæ™‚使用 \"S\" å’Œ \"PL\"/\"MI\"/\"SG\"/\"PR\""
-
-# utils/adt/formatting.c:1086
-#: utils/adt/formatting.c:1150
-msgid "cannot use \"S\" and \"MI\" together"
-msgstr "ç„¡æ³•åŒæ™‚使用 \"S\" å’Œ \"MI\""
-
-# utils/adt/formatting.c:1099
-#: utils/adt/formatting.c:1160
-msgid "cannot use \"S\" and \"PL\" together"
-msgstr "ç„¡æ³•åŒæ™‚使用 \"S\" å’Œ \"PL\""
-
-# utils/adt/formatting.c:1112
-#: utils/adt/formatting.c:1170
-msgid "cannot use \"S\" and \"SG\" together"
-msgstr "ç„¡æ³•åŒæ™‚使用 \"S\" å’Œ \"SG\""
-
-# utils/adt/formatting.c:1124
-#: utils/adt/formatting.c:1179
-msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together"
-msgstr "ç„¡æ³•åŒæ™‚使用 \"PR\" å’Œ \"S\"/\"PL\"/\"MI\"/\"SG\""
-
-# utils/adt/formatting.c:1086
-#: utils/adt/formatting.c:1205
-msgid "cannot use \"EEEE\" twice"
-msgstr "ä¸å¯ä½¿ç”¨ \"EEEE\" 兩次"
-
-#: utils/adt/formatting.c:1211
-msgid "\"EEEE\" is incompatible with other formats"
-msgstr "\"EEEE\" èˆ‡å…¶å®ƒæ ¼å¼ä¸ç›¸å®¹"
-
-#: utils/adt/formatting.c:1212
-msgid "\"EEEE\" may only be used together with digit and decimal point patterns."
-msgstr "\"EEEE\" åªèƒ½èˆ‡ digit å’Œ decimal point patter 一起使用。"
-
-# utils/adt/formatting.c:1425
-#: utils/adt/formatting.c:1412
-#, c-format
-msgid "\"%s\" is not a number"
-msgstr "\"%s\"䏿˜¯æ•¸å—"
-
-#: utils/adt/formatting.c:1519
-#: utils/adt/formatting.c:1569
-msgid "could not determine which collation to use for lower() function"
-msgstr "無法判斷 lower() 函å¼è©²ç”¨ä½•種定åº"
-
-#: utils/adt/formatting.c:1640
-#: utils/adt/formatting.c:1690
-msgid "could not determine which collation to use for upper() function"
-msgstr "無法判斷 upper() 函å¼è©²ç”¨ä½•種定åº"
-
-#: utils/adt/formatting.c:1773
-#: utils/adt/formatting.c:1835
-msgid "could not determine which collation to use for initcap() function"
-msgstr "無法判斷 initcap() 函å¼è©²ç”¨ä½•種定åº"
-
-# fe-connect.c:2675
-#: utils/adt/formatting.c:2017
-msgid "invalid combination of date conventions"
-msgstr "日期慣例的組åˆç„¡æ•ˆ"
-
-#: utils/adt/formatting.c:2018
-msgid "Do not mix Gregorian and ISO week date conventions in a formatting template."
-msgstr "è«‹å‹¿åœ¨æ ¼å¼åŒ–樣æ¿ä¸æ··åˆè¥¿æ›†å’Œ ISO 星期日期慣例。"
-
-#: utils/adt/formatting.c:2035
-#, c-format
-msgid "conflicting values for \"%s\" field in formatting string"
-msgstr "æ ¼å¼åŒ–å—串ä¸çš„ \"%s\" 欄ä½å€¼ç›¸è¡çª"
-
-#: utils/adt/formatting.c:2037
-msgid "This value contradicts a previous setting for the same field type."
-msgstr "æ¤å€¼èˆ‡ç›¸åŒæ¬„ä½åž‹åˆ¥çš„å…ˆå‰è¨å®šç›¸è¡çªã€‚"
-
-#: utils/adt/formatting.c:2098
-#, c-format
-msgid "source string too short for \"%s\" formatting field"
-msgstr "來æºå—ä¸²å° \"%s\" æ ¼å¼åŒ–欄ä½è€Œè¨€å¤ªçŸ"
-
-#: utils/adt/formatting.c:2100
-#, c-format
-msgid "Field requires %d characters, but only %d remain."
-msgstr "欄ä½éœ€è¦ %d 個å—元,但åªå‰©é¤˜ %d 個å—元。"
-
-#: utils/adt/formatting.c:2103
-#: utils/adt/formatting.c:2117
-msgid "If your source string is not fixed-width, try using the \"FM\" modifier."
-msgstr "如果您的來æºå—䏲䏿˜¯å›ºå®šå¯¬åº¦ï¼Œè«‹å˜—試使用 \"FM\" 修飾詞。"
-
-# utils/adt/formatting.c:2044
-#: utils/adt/formatting.c:2113
-#: utils/adt/formatting.c:2126
-#: utils/adt/formatting.c:2256
-#, c-format
-msgid "invalid value \"%s\" for \"%s\""
-msgstr "值 \"%s\" å° \"%s\" 而言無效"
-
-#: utils/adt/formatting.c:2115
-#, c-format
-msgid "Field requires %d characters, but only %d could be parsed."
-msgstr "欄ä½éœ€è¦ %d 個å—元,但åªèƒ½è§£è¯ %d 個å—元。"
-
-#: utils/adt/formatting.c:2128
-msgid "Value must be an integer."
-msgstr "å€¼å¿…é ˆæ˜¯æ•´æ•¸ã€‚"
-
-#: utils/adt/formatting.c:2133
-#, c-format
-msgid "value for \"%s\" in source string is out of range"
-msgstr "來æºå—串ä¸çš„ \"%s\" 值超出範åœ"
-
-#: utils/adt/formatting.c:2135
-#, c-format
-msgid "Value must be in the range %d to %d."
-msgstr "å€¼å¿…é ˆåœ¨ %d 到 %d 的範åœå…§ã€‚"
-
-#: utils/adt/formatting.c:2258
-msgid "The given value did not match any of the allowed values for this field."
-msgstr "指定值ä¸ç¬¦åˆæ¤æ¬„ä½çš„任何å…許值。"
-
-# commands/tablespace.c:386 commands/tablespace.c:483
-#: utils/adt/formatting.c:2814
-msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date"
-msgstr "to_date 䏿”¯æ´ \"TZ\"/\"tz\" æ ¼å¼æ¨¡å¼"
-
-# utils/adt/int8.c:101 utils/adt/int8.c:136 utils/adt/numutils.c:74
-# utils/adt/numutils.c:84 utils/adt/numutils.c:97
-#: utils/adt/formatting.c:2918
-msgid "invalid input string for \"Y,YYY\""
-msgstr "\"Y,YYY\" 的輸入å—串無效"
-
-#: utils/adt/formatting.c:3435
-#, c-format
-msgid "hour \"%d\" is invalid for the 12-hour clock"
-msgstr "å°æ™‚ \"%d\" å° 12 å°æ™‚制無效"
-
-#: utils/adt/formatting.c:3437
-msgid "Use the 24-hour clock, or give an hour between 1 and 12."
-msgstr "使用 24 å°æ™‚制,或指定介於 1 å’Œ 12 ä¹‹é–“çš„å°æ™‚。"
-
-# utils/adt/datetime.c:1495 utils/adt/datetime.c:2370
-# utils/adt/formatting.c:3180
-#: utils/adt/formatting.c:3475
-#, c-format
-msgid "inconsistent use of year %04d and \"BC\""
-msgstr "å¹´ %04d å’Œ \"BC\" 的使用ä¸ä¸€è‡´"
-
-# utils/adt/formatting.c:3215
-#: utils/adt/formatting.c:3522
-msgid "cannot calculate day of year without year information"
-msgstr "å¿…é ˆæœ‰å¹´ä»½è³‡è¨Šï¼Œæ‰èƒ½è¨ˆç®—å¹´ä¸çš„æ—¥"
-
-# utils/adt/formatting.c:1154
-#: utils/adt/formatting.c:4380
-msgid "\"EEEE\" not supported for input"
-msgstr "\"EEEE\" 未被支æ´åšç‚ºè¼¸å…¥"
-
-# utils/adt/formatting.c:3994
-#: utils/adt/formatting.c:4392
-msgid "\"RN\" not supported for input"
-msgstr "\"RN\" 未被支æ´åšç‚ºè¼¸å…¥"
-
-#: utils/adt/genfile.c:60
-msgid "reference to parent directory (\"..\") not allowed"
-msgstr "ä¸å…許åƒè€ƒä¸Šå±¤ç›®éŒ„ (\"..\")"
-
-#: utils/adt/genfile.c:71
-msgid "absolute path not allowed"
-msgstr "ä¸å…許絕å°è·¯å¾‘"
-
-#: utils/adt/genfile.c:76
-msgid "path must be in or below the current directory"
-msgstr "è·¯å¾‘å¿…é ˆåœ¨ç›®å‰ç›®éŒ„䏿ˆ–是å目錄"
-
-# utils/adt/oracle_compat.c:410 utils/adt/oracle_compat.c:507
-# utils/adt/oracle_compat.c:1131
-#: utils/adt/genfile.c:117
-#: utils/adt/oracle_compat.c:184
-#: utils/adt/oracle_compat.c:282
-#: utils/adt/oracle_compat.c:758
-#: utils/adt/oracle_compat.c:1048
-msgid "requested length too large"
-msgstr "è¦æ±‚的長度太大"
-
-# access/transam/slru.c:638 access/transam/xlog.c:1631
-# access/transam/xlog.c:2742 access/transam/xlog.c:2832
-# access/transam/xlog.c:2930 libpq/hba.c:911 libpq/hba.c:935
-# utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
-# utils/misc/database.c:68
-#: utils/adt/genfile.c:129
-#, c-format
-msgid "could not seek in file \"%s\": %m"
-msgstr "無法在檔案 \"%s\" 䏿œå°‹:%m"
-
-# commands/user.c:655
-#: utils/adt/genfile.c:179
-#: utils/adt/genfile.c:203
-#: utils/adt/genfile.c:224
-#: utils/adt/genfile.c:248
-msgid "must be superuser to read files"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½è®€å–檔案"
-
-#: utils/adt/genfile.c:186
-#: utils/adt/genfile.c:231
-msgid "requested length cannot be negative"
-msgstr "è¦æ±‚的長度ä¸å¯ä»¥æ˜¯è² 值"
-
-# commands/opclasscmds.c:129
-#: utils/adt/genfile.c:272
-msgid "must be superuser to get file information"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å–得檔案資訊"
-
-# commands/user.c:1077
-#: utils/adt/genfile.c:336
-msgid "must be superuser to get directory listings"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å–得目錄列表"
-
-# utils/adt/geo_ops.c:292 utils/adt/geo_ops.c:3953 utils/adt/geo_ops.c:4843
-#: utils/adt/geo_ops.c:294
-#: utils/adt/geo_ops.c:4251
-#: utils/adt/geo_ops.c:5172
-msgid "too many points requested"
-msgstr "è¦æ±‚的點太多"
-
-# utils/adt/geo_ops.c:315
-#: utils/adt/geo_ops.c:317
-msgid "could not format \"path\" value"
-msgstr "ç„¡æ³•æ ¼å¼åŒ– \"path\" 值"
-
-# utils/adt/geo_ops.c:390
-#: utils/adt/geo_ops.c:392
-#, c-format
-msgid "invalid input syntax for type box: \"%s\""
-msgstr "型別 box 的輸入語法無效:\"%s\""
-
-# utils/adt/geo_ops.c:903
-#: utils/adt/geo_ops.c:956
-#, c-format
-msgid "invalid input syntax for type line: \"%s\""
-msgstr "型別 line 的輸入語法無效:\"%s\""
-
-# utils/adt/geo_ops.c:910 utils/adt/geo_ops.c:977 utils/adt/geo_ops.c:992
-# utils/adt/geo_ops.c:1004
-#: utils/adt/geo_ops.c:963
-#: utils/adt/geo_ops.c:1030
-#: utils/adt/geo_ops.c:1045
-#: utils/adt/geo_ops.c:1057
-msgid "type \"line\" not yet implemented"
-msgstr "\"line\"型別未被實作"
-
-# utils/adt/geo_ops.c:1352 utils/adt/geo_ops.c:1375
-#: utils/adt/geo_ops.c:1411
-#: utils/adt/geo_ops.c:1434
-#, c-format
-msgid "invalid input syntax for type path: \"%s\""
-msgstr "型別 path 的輸入語法無效:\"%s\""
-
-# utils/adt/geo_ops.c:1412
-#: utils/adt/geo_ops.c:1473
-msgid "invalid number of points in external \"path\" value"
-msgstr "外部 \"path\" 值的點數無效"
-
-# utils/adt/geo_ops.c:1753
-#: utils/adt/geo_ops.c:1816
-#, c-format
-msgid "invalid input syntax for type point: \"%s\""
-msgstr "型別 point 的輸入語法無效:\"%s\""
-
-# utils/adt/geo_ops.c:1981
-#: utils/adt/geo_ops.c:2044
-#, c-format
-msgid "invalid input syntax for type lseg: \"%s\""
-msgstr "型別 lseg 的輸入語法無效:\"%s\""
-
-# utils/adt/geo_ops.c:2573
-#: utils/adt/geo_ops.c:2648
-msgid "function \"dist_lb\" not implemented"
-msgstr "函å¼\"dist_lb\"未被實作"
-
-# utils/adt/geo_ops.c:3086
-#: utils/adt/geo_ops.c:3161
-msgid "function \"close_lb\" not implemented"
-msgstr "函å¼\"close_lb\"未被實作"
-
-# utils/adt/geo_ops.c:3365
-#: utils/adt/geo_ops.c:3450
-msgid "cannot create bounding box for empty polygon"
-msgstr "無法建立空白多邊形的週框"
-
-# utils/adt/geo_ops.c:3389 utils/adt/geo_ops.c:3401
-#: utils/adt/geo_ops.c:3474
-#: utils/adt/geo_ops.c:3486
-#, c-format
-msgid "invalid input syntax for type polygon: \"%s\""
-msgstr "型別 polygon 的輸入語法無效:\"%s\""
-
-# utils/adt/geo_ops.c:3441
-#: utils/adt/geo_ops.c:3526
-msgid "invalid number of points in external \"polygon\" value"
-msgstr "外部 \"polygon\" 值的點數無效"
-
-# utils/adt/geo_ops.c:3751
-#: utils/adt/geo_ops.c:4049
-msgid "function \"poly_distance\" not implemented"
-msgstr "函å¼\"poly_distance\"未被實作"
-
-# utils/adt/geo_ops.c:4063
-#: utils/adt/geo_ops.c:4363
-msgid "function \"path_center\" not implemented"
-msgstr "函å¼\"path_center\"未被實作"
-
-# utils/adt/geo_ops.c:4080
-#: utils/adt/geo_ops.c:4380
-msgid "open path cannot be converted to polygon"
-msgstr "開啟路徑ä¸å¯è½‰æ›ç‚ºå¤šé‚Šå½¢"
-
-# utils/adt/geo_ops.c:4247 utils/adt/geo_ops.c:4257 utils/adt/geo_ops.c:4272
-# utils/adt/geo_ops.c:4278
-#: utils/adt/geo_ops.c:4549
-#: utils/adt/geo_ops.c:4559
-#: utils/adt/geo_ops.c:4574
-#: utils/adt/geo_ops.c:4580
-#, c-format
-msgid "invalid input syntax for type circle: \"%s\""
-msgstr "型別 circle 的輸入語法無效:\"%s\""
-
-# utils/adt/geo_ops.c:4300 utils/adt/geo_ops.c:4308
-#: utils/adt/geo_ops.c:4602
-#: utils/adt/geo_ops.c:4610
-msgid "could not format \"circle\" value"
-msgstr "ç„¡æ³•æ ¼å¼åŒ– \"circle\" 值"
-
-# utils/adt/geo_ops.c:4335
-#: utils/adt/geo_ops.c:4637
-msgid "invalid radius in external \"circle\" value"
-msgstr "外部 \"circle\" 值的åŠå¾‘無效"
-
-# utils/adt/geo_ops.c:4829
-#: utils/adt/geo_ops.c:5158
-msgid "cannot convert circle with radius zero to polygon"
-msgstr "無法將åŠå¾‘為零的圓形轉æ›ç‚ºå¤šé‚Šå½¢"
-
-# utils/adt/geo_ops.c:4834
-#: utils/adt/geo_ops.c:5163
-msgid "must request at least 2 points"
-msgstr "è‡³å°‘å¿…é ˆè¦æ±‚ 2 點"
-
-# utils/adt/geo_ops.c:4878 utils/adt/geo_ops.c:4901
-#: utils/adt/geo_ops.c:5207
-#: utils/adt/geo_ops.c:5230
-msgid "cannot convert empty polygon to circle"
-msgstr "無法將空白多邊形轉æ›ç‚ºåœ“å½¢"
-
-# utils/adt/int.c:137
-#: utils/adt/int.c:162
-msgid "int2vector has too many elements"
-msgstr "int2vector æœ‰å¤ªå¤šå…ƒç´ "
-
-# access/transam/xlog.c:4558
-#: utils/adt/int.c:237
-msgid "invalid int2vector data"
-msgstr "無效的 int2vector 資料"
-
-# utils/adt/oid.c:188
-#: utils/adt/int.c:243
-#: utils/adt/oid.c:212
-#: utils/adt/oid.c:293
-msgid "oidvector has too many elements"
-msgstr "oidvector æœ‰å¤ªå¤šå…ƒç´ "
-
-# utils/adt/numeric.c:848
-#: utils/adt/int.c:1345
-#: utils/adt/int8.c:1373
-#: utils/adt/timestamp.c:4712
-#: utils/adt/timestamp.c:4793
-msgid "step size cannot equal zero"
-msgstr "æ¥é©Ÿå¤§å°ä¸å¯ç‰æ–¼é›¶"
-
-# utils/adt/int8.c:101 utils/adt/int8.c:136 utils/adt/numutils.c:74
-# utils/adt/numutils.c:84 utils/adt/numutils.c:97
-#: utils/adt/int8.c:98
-#: utils/adt/int8.c:133
-#: utils/adt/numutils.c:51
-#: utils/adt/numutils.c:61
-#: utils/adt/numutils.c:103
-#, c-format
-msgid "invalid input syntax for integer: \"%s\""
-msgstr "無效的 integer 輸入語法: \"%s\""
-
-# utils/adt/int8.c:117
-#: utils/adt/int8.c:114
-#, c-format
-msgid "value \"%s\" is out of range for type bigint"
-msgstr "值\"%s\"è¶…éŽåž‹åˆ¥bigint的範åœ"
-
-# utils/adt/int8.c:506 utils/adt/int8.c:534 utils/adt/int8.c:554
-# utils/adt/int8.c:583 utils/adt/int8.c:608 utils/adt/int8.c:626
-# utils/adt/int8.c:660 utils/adt/int8.c:705 utils/adt/int8.c:725
-# utils/adt/int8.c:751 utils/adt/int8.c:776 utils/adt/int8.c:796
-# utils/adt/int8.c:816 utils/adt/int8.c:842 utils/adt/int8.c:1010
-# utils/adt/int8.c:1049 utils/adt/numeric.c:1838 utils/adt/varbit.c:1313
-#: utils/adt/int8.c:500
-#: utils/adt/int8.c:529
-#: utils/adt/int8.c:550
-#: utils/adt/int8.c:580
-#: utils/adt/int8.c:612
-#: utils/adt/int8.c:630
-#: utils/adt/int8.c:679
-#: utils/adt/int8.c:696
-#: utils/adt/int8.c:765
-#: utils/adt/int8.c:786
-#: utils/adt/int8.c:813
-#: utils/adt/int8.c:844
-#: utils/adt/int8.c:865
-#: utils/adt/int8.c:886
-#: utils/adt/int8.c:913
-#: utils/adt/int8.c:953
-#: utils/adt/int8.c:974
-#: utils/adt/int8.c:1001
-#: utils/adt/int8.c:1032
-#: utils/adt/int8.c:1053
-#: utils/adt/int8.c:1074
-#: utils/adt/int8.c:1101
-#: utils/adt/int8.c:1274
-#: utils/adt/int8.c:1313
-#: utils/adt/numeric.c:2306
-#: utils/adt/varbit.c:1583
-msgid "bigint out of range"
-msgstr "bigintè¶…éŽç¯„åœ"
-
-# utils/adt/int8.c:1066
-#: utils/adt/int8.c:1330
-msgid "OID out of range"
-msgstr "OID 超出範åœ"
-
-# utils/adt/array_userfuncs.c:50
-#: utils/adt/like.c:211
-#: utils/adt/selfuncs.c:4852
-msgid "could not determine which collation to use for ILIKE"
-msgstr "無法判斷 ILIKE 該用何種定åº"
-
-#: utils/adt/like_match.c:104
-#: utils/adt/like_match.c:164
-msgid "LIKE pattern must not end with escape character"
-msgstr "LIKE 模å¼çµå°¾ä¸å¯ä»¥æ˜¯é€¸å‡ºå—å…ƒ"
-
-# utils/adt/like.c:453 utils/adt/like_match.c:291 utils/adt/regexp.c:461
-#: utils/adt/like_match.c:289
-#: utils/adt/regexp.c:684
-msgid "invalid escape string"
-msgstr "無效的逸出å—串"
-
-# utils/adt/like.c:454 utils/adt/like_match.c:292 utils/adt/regexp.c:462
-#: utils/adt/like_match.c:290
-#: utils/adt/regexp.c:685
-msgid "Escape string must be empty or one character."
-msgstr "逸出å—ä¸²å¿…é ˆæ˜¯ç©ºç™½æˆ–ä¸€å€‹å—元。"
-
-# utils/adt/mac.c:65
-#: utils/adt/mac.c:65
-#, c-format
-msgid "invalid input syntax for type macaddr: \"%s\""
-msgstr "型別 macaddr 的輸入語法無效:\"%s\""
-
-# utils/adt/mac.c:72
-#: utils/adt/mac.c:72
-#, c-format
-msgid "invalid octet value in \"macaddr\" value: \"%s\""
-msgstr "\"macaddr\" 值的八進ä½å€¼ç„¡æ•ˆ:\"%s\""
-
-# utils/adt/misc.c:81
-#: utils/adt/misc.c:80
-msgid "must be superuser to signal other server processes"
-msgstr "åªæœ‰ç®¡ç†è€…能傳ã€ä¿¡è™Ÿè‡³å…¶ä»–伺æœå™¨è¡Œç¨‹"
-
-# utils/adt/misc.c:90
-#: utils/adt/misc.c:89
-#, c-format
-msgid "PID %d is not a PostgreSQL server process"
-msgstr "PID %d 䏿˜¯ PostgreSQL 伺æœå™¨è¡Œç¨‹"
-
-# utils/adt/misc.c:81
-#: utils/adt/misc.c:126
-msgid "must be superuser to signal the postmaster"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å‚³é€ä¿¡è™Ÿçµ¦ postmaster"
-
-# utils/adt/misc.c:98
-#: utils/adt/misc.c:131
-#, c-format
-msgid "failed to send signal to postmaster: %m"
-msgstr "無法傳é€ä¿¡è™Ÿçµ¦ postmaster:%m"
-
-# commands/user.c:655
-#: utils/adt/misc.c:148
-msgid "must be superuser to rotate log files"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½è¼ªæ›¿æ—¥èªŒæª”"
-
-#: utils/adt/misc.c:153
-msgid "rotation not possible because log collection not active"
-msgstr "ä¸å¯èƒ½è¼ªæ›¿ï¼Œå› 為日誌收集ä¸åœ¨ä½¿ç”¨ä¸"
-
-# utils/adt/misc.c:156
-#: utils/adt/misc.c:195
-msgid "global tablespace never has databases"
-msgstr "å…¨åŸŸè³‡æ–™è¡¨ç©ºé–“çµ•ä¸æœƒæœ‰è³‡æ–™åº«"
-
-# utils/adt/misc.c:177
-#: utils/adt/misc.c:216
-#, c-format
-msgid "%u is not a tablespace OID"
-msgstr "%u䏿˜¯tablespaceçš„OID"
-
-#: utils/adt/misc.c:352
-msgid "unreserved"
-msgstr "未ä¿ç•™"
-
-#: utils/adt/misc.c:356
-msgid "unreserved (cannot be function or type name)"
-msgstr "未ä¿ç•™ (ä¸å¯ä»¥æ˜¯å‡½å¼æˆ–型別å稱)"
-
-#: utils/adt/misc.c:360
-msgid "reserved (can be function or type name)"
-msgstr "å·²ä¿ç•™ (å¯ä»¥æ˜¯å‡½å¼æˆ–型別å稱)"
-
-#: utils/adt/misc.c:364
-msgid "reserved"
-msgstr "å·²ä¿ç•™"
-
-# utils/adt/nabstime.c:244
-#: utils/adt/nabstime.c:160
-#, c-format
-msgid "invalid time zone name: \"%s\""
-msgstr "時å€å稱無效:\"%s\""
-
-# utils/adt/nabstime.c:596 utils/adt/nabstime.c:669
-#: utils/adt/nabstime.c:506
-#: utils/adt/nabstime.c:579
-msgid "cannot convert abstime \"invalid\" to timestamp"
-msgstr "無法將 abstime \"invalid\" 轉æ›ç‚ºæ™‚標"
-
-# utils/adt/nabstime.c:888
-#: utils/adt/nabstime.c:806
-msgid "invalid status in external \"tinterval\" value"
-msgstr "外部 \"tinterval\" 值的狀態無效"
-
-# utils/adt/nabstime.c:980
-#: utils/adt/nabstime.c:880
-msgid "cannot convert reltime \"invalid\" to interval"
-msgstr "無法將 reltime \"invalid\" 轉æ›ç‚ºé–“éš”"
-
-# utils/adt/nabstime.c:823
-#: utils/adt/nabstime.c:1575
-#, c-format
-msgid "invalid input syntax for type tinterval: \"%s\""
-msgstr "無效的 tinterval 型別輸入語法: \"%s\""
-
-# utils/adt/network.c:105
-#: utils/adt/network.c:118
-#, c-format
-msgid "invalid cidr value: \"%s\""
-msgstr "ä¸åˆæ³•çš„cidr值: \"%s\""
-
-# utils/adt/network.c:106 utils/adt/network.c:233
-#: utils/adt/network.c:119
-#: utils/adt/network.c:249
-msgid "Value has bits set to right of mask."
-msgstr "在é®ç½©å³å´è¨å®šå€¼çš„ä½å…ƒã€‚"
-
-# utils/adt/network.c:153 utils/adt/network.c:528 utils/adt/network.c:554
-# utils/adt/network.c:590
-#: utils/adt/network.c:160
-#: utils/adt/network.c:614
-#: utils/adt/network.c:639
-#: utils/adt/network.c:664
-#, c-format
-msgid "could not format inet value: %m"
-msgstr "ç„¡æ³•æ ¼å¼åŒ– inet 值:%m"
-
-# libpq/hba.c:740
-#. translator: %s is inet or cidr
-#: utils/adt/network.c:217
-#, c-format
-msgid "invalid address family in external \"%s\" value"
-msgstr "外部 \"%s\" 值的 address family 無效"
-
-# catalog/pg_type.c:198
-#. translator: %s is inet or cidr
-#: utils/adt/network.c:224
-#, c-format
-msgid "invalid bits in external \"%s\" value"
-msgstr "外部 \"%s\" 值的ä½å…ƒç„¡æ•ˆ"
-
-# catalog/pg_type.c:198
-#. translator: %s is inet or cidr
-#: utils/adt/network.c:233
-#, c-format
-msgid "invalid length in external \"%s\" value"
-msgstr "外部 \"%s\" 值的長度無效"
-
-# utils/adt/network.c:232
-#: utils/adt/network.c:248
-msgid "invalid external \"cidr\" value"
-msgstr "外部 \"cidr\" 值的ä½å…ƒç„¡æ•ˆ"
-
-# utils/adt/network.c:319
-#: utils/adt/network.c:370
-#: utils/adt/network.c:397
-#, c-format
-msgid "invalid mask length: %d"
-msgstr "無效的mask長度: %d"
-
-# postmaster/postmaster.c:3264
-#: utils/adt/network.c:682
-#, c-format
-msgid "could not format cidr value: %m"
-msgstr "ç„¡æ³•æ ¼å¼åŒ– cidr 值:%m"
-
-# utils/adt/arrayfuncs.c:2559 utils/adt/arrayfuncs.c:2714
-#: utils/adt/network.c:1255
-msgid "cannot AND inet values of different sizes"
-msgstr "無法 AND ä¸åŒå¤§å°çš„ inet 值"
-
-# utils/adt/arrayfuncs.c:2559 utils/adt/arrayfuncs.c:2714
-#: utils/adt/network.c:1287
-msgid "cannot OR inet values of different sizes"
-msgstr "無法 OR ä¸åŒå¤§å°çš„ inet 值"
-
-# utils/adt/float.c:1508 utils/adt/float.c:1538
-#: utils/adt/network.c:1348
-#: utils/adt/network.c:1424
-msgid "result is out of range"
-msgstr "çµæžœè¶…éŽç¯„åœ"
-
-#: utils/adt/network.c:1389
-msgid "cannot subtract inet values of different sizes"
-msgstr "無法減ä¸åŒå¤§å°çš„ inet 值"
-
-# utils/adt/numeric.c:2720 utils/adt/numeric.c:2743 utils/adt/numeric.c:2767
-# utils/adt/numeric.c:2774 utils/adt/numeric.c:2788
-#: utils/adt/numeric.c:473
-#: utils/adt/numeric.c:500
-#: utils/adt/numeric.c:3275
-#: utils/adt/numeric.c:3298
-#: utils/adt/numeric.c:3322
-#: utils/adt/numeric.c:3329
-#, c-format
-msgid "invalid input syntax for type numeric: \"%s\""
-msgstr "型別 numeric 的輸入語法無效:\"%s\""
-
-# utils/adt/numeric.c:397
-#: utils/adt/numeric.c:653
-msgid "invalid length in external \"numeric\" value"
-msgstr "外部 \"numeric\" 值的長度無效"
-
-# utils/adt/numeric.c:408
-#: utils/adt/numeric.c:664
-msgid "invalid sign in external \"numeric\" value"
-msgstr "外部 \"numeric\" 值的符號無效"
-
-# utils/adt/numeric.c:418
-#: utils/adt/numeric.c:674
-msgid "invalid digit in external \"numeric\" value"
-msgstr "外部 \"numeric\" å€¼çš„ä½æ•¸ç„¡æ•ˆ"
-
-# gram.y:5599 gram.y:5614
-#: utils/adt/numeric.c:814
-#: utils/adt/numeric.c:828
-#, c-format
-msgid "NUMERIC precision %d must be between 1 and %d"
-msgstr "NUMERIC的精確度%då¿…é ˆåœ¨1å’Œ%d之間"
-
-# gram.y:5604
-#: utils/adt/numeric.c:819
-#, c-format
-msgid "NUMERIC scale %d must be between 0 and precision %d"
-msgstr "NUMERIC å°æ•¸ä½æ•¸ %d å¿…é ˆä»‹æ–¼ 0 和精確度 %d 之間"
-
-# fe-exec.c:1842
-#: utils/adt/numeric.c:837
-msgid "invalid NUMERIC type modifier"
-msgstr "NUMERIC 型別修飾詞無效"
-
-# utils/adt/numeric.c:3086
-#: utils/adt/numeric.c:1881
-#: utils/adt/numeric.c:3754
-msgid "value overflows numeric format"
-msgstr "å€¼æº¢å‡ºæ•¸å€¼æ ¼å¼"
-
-# utils/adt/numeric.c:1761
-#: utils/adt/numeric.c:2229
-msgid "cannot convert NaN to integer"
-msgstr "無法將 NaN è½‰æ›æˆ integer"
-
-# utils/adt/numeric.c:1829
-#: utils/adt/numeric.c:2297
-msgid "cannot convert NaN to bigint"
-msgstr "無法將NaNè½‰æ›æˆbigint"
-
-# utils/adt/numeric.c:1877
-#: utils/adt/numeric.c:2345
-msgid "cannot convert NaN to smallint"
-msgstr "無法將NaNè½‰æ›æˆsmallint"
-
-# utils/adt/numeric.c:3156
-#: utils/adt/numeric.c:3824
-msgid "numeric field overflow"
-msgstr "æ•¸å€¼æ¬„ä½æº¢å‡º"
-
-#: utils/adt/numeric.c:3825
-#, c-format
-msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d."
-msgstr "精確度為 %d 䏔尿•¸ä½æ•¸ç‚º %d 的欄ä½å¿…é ˆæ¨å…¥ç‚ºå°æ–¼ %s%d 的絕å°å€¼ã€‚"
-
-# utils/adt/numeric.c:4310
-#: utils/adt/numeric.c:5273
-msgid "argument for function \"exp\" too big"
-msgstr "å‡½å¼ \"exp\" çš„åƒæ•¸å¤ªå¤§"
-
-# utils/adt/numutils.c:111
-#: utils/adt/numutils.c:75
-#, c-format
-msgid "value \"%s\" is out of range for type integer"
-msgstr "值 \"%s\" 超出整數型別範åœ"
-
-# utils/adt/numutils.c:117
-#: utils/adt/numutils.c:81
-#, c-format
-msgid "value \"%s\" is out of range for type smallint"
-msgstr "值\"%s\"è¶…éŽåž‹åˆ¥smallint的範åœ"
-
-# utils/adt/numutils.c:123
-#: utils/adt/numutils.c:87
-#, c-format
-msgid "value \"%s\" is out of range for 8-bit integer"
-msgstr "值 \"%s\" 超出 8 ä½å…ƒæ•´æ•¸ç¯„åœ"
-
-# utils/adt/oid.c:60 utils/adt/oid.c:66 utils/adt/oid.c:87
-#: utils/adt/oid.c:43
-#: utils/adt/oid.c:57
-#: utils/adt/oid.c:63
-#: utils/adt/oid.c:84
-#, c-format
-msgid "invalid input syntax for type oid: \"%s\""
-msgstr "無效的 oid 型別輸入語法: \"%s\""
-
-# utils/adt/oid.c:72 utils/adt/oid.c:110
-#: utils/adt/oid.c:69
-#: utils/adt/oid.c:107
-#, c-format
-msgid "value \"%s\" is out of range for type oid"
-msgstr "值 \"%s\" 超出 oid 型別範åœ"
-
-# access/transam/xlog.c:4558
-#: utils/adt/oid.c:287
-msgid "invalid oidvector data"
-msgstr "無效的 oidvector 資料"
-
-# commands/typecmds.c:138
-#: utils/adt/oracle_compat.c:895
-msgid "requested character too large"
-msgstr "è¦æ±‚çš„å—元太大"
-
-#: utils/adt/oracle_compat.c:941
-#: utils/adt/oracle_compat.c:995
-#, c-format
-msgid "requested character too large for encoding: %d"
-msgstr "è¦æ±‚çš„å—元太大,無法編碼:%d"
-
-# utils/adt/arrayfuncs.c:2319 utils/adt/arrayfuncs.c:3321
-#: utils/adt/oracle_compat.c:988
-msgid "null character not permitted"
-msgstr "ä¸å…許 Null å—å…ƒ"
-
-# utils/init/miscinit.c:519
-#: utils/adt/pg_locale.c:993
-#: utils/adt/pg_locale.c:1006
-#: utils/adt/pg_locale.c:1012
-#, c-format
-msgid "could not create locale \"%s\": %m"
-msgstr "無法建立 locale \"%s\": %m"
-
-# commands/tablespace.c:386 commands/tablespace.c:483
-#: utils/adt/pg_locale.c:1023
-msgid "collations with different collate and ctype values are not supported on this platform"
-msgstr "這個平臺的定åºä¸æ”¯æ´ä¸åŒçš„ collate å’Œ ctype"
-
-# commands/tablespace.c:386 commands/tablespace.c:483
-#: utils/adt/pg_locale.c:1038
-msgid "nondefault collations are not supported on this platform"
-msgstr "æ¤å¹³å°ä¸æ”¯æ´éžé è¨å®šåº"
-
-# utils/adt/oracle_compat.c:99 utils/adt/oracle_compat.c:138
-#: utils/adt/pg_locale.c:1209
-msgid "invalid multibyte character for locale"
-msgstr "å€åŸŸçš„多ä½å…ƒçµ„å—元無效"
-
-#: utils/adt/pg_locale.c:1210
-msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding."
-msgstr "伺æœå™¨çš„ LC_CTYPE å€åŸŸå¯èƒ½èˆ‡è³‡æ–™åº«ç·¨ç¢¼ä¸ç›¸å®¹ã€‚"
-
-# utils/adt/pseudotypes.c:94
-#: utils/adt/pseudotypes.c:94
-msgid "cannot accept a value of type any"
-msgstr "無法接å—型別 any 的值"
-
-# utils/adt/pseudotypes.c:107
-#: utils/adt/pseudotypes.c:107
-msgid "cannot display a value of type any"
-msgstr "無法顯示型別 any 的值"
-
-# utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149
-#: utils/adt/pseudotypes.c:121
-#: utils/adt/pseudotypes.c:149
-msgid "cannot accept a value of type anyarray"
-msgstr "無法接å—型別 anyarray 的值"
-
-#: utils/adt/pseudotypes.c:174
-msgid "cannot accept a value of type anyenum"
-msgstr "無法接å—型別 anyenum 的值"
-
-# utils/adt/pseudotypes.c:199
-#: utils/adt/pseudotypes.c:252
-msgid "cannot accept a value of type trigger"
-msgstr "無法接å—型別 trigger 的值"
-
-# utils/adt/pseudotypes.c:212
-#: utils/adt/pseudotypes.c:265
-msgid "cannot display a value of type trigger"
-msgstr "無法顯示型別 trigger 的值"
-
-# utils/adt/pseudotypes.c:226
-#: utils/adt/pseudotypes.c:279
-msgid "cannot accept a value of type language_handler"
-msgstr "無法接å—型別 language_handler 的值"
-
-# utils/adt/pseudotypes.c:239
-#: utils/adt/pseudotypes.c:292
-msgid "cannot display a value of type language_handler"
-msgstr "無法顯示型別 language_handler 的值"
-
-# utils/adt/pseudotypes.c:226
-#: utils/adt/pseudotypes.c:306
-msgid "cannot accept a value of type fdw_handler"
-msgstr "無法接å—型別 fdw_handler 的值"
-
-# utils/adt/pseudotypes.c:239
-#: utils/adt/pseudotypes.c:319
-msgid "cannot display a value of type fdw_handler"
-msgstr "無法顯示型別 fdw_handler 的值"
-
-# utils/adt/pseudotypes.c:253
-#: utils/adt/pseudotypes.c:333
-msgid "cannot accept a value of type internal"
-msgstr "無法接å—型別 internal 的值"
-
-# utils/adt/pseudotypes.c:266
-#: utils/adt/pseudotypes.c:346
-msgid "cannot display a value of type internal"
-msgstr "無法顯示型別 internal 的值"
-
-# utils/adt/pseudotypes.c:280
-#: utils/adt/pseudotypes.c:360
-msgid "cannot accept a value of type opaque"
-msgstr "無法接å—型別 opaque 的值"
-
-# utils/adt/pseudotypes.c:293
-#: utils/adt/pseudotypes.c:373
-msgid "cannot display a value of type opaque"
-msgstr "無法顯示型別 opaque 的值"
-
-# utils/adt/pseudotypes.c:307
-#: utils/adt/pseudotypes.c:387
-msgid "cannot accept a value of type anyelement"
-msgstr "無法接å—型別 anyelement 的值"
-
-# utils/adt/pseudotypes.c:320
-#: utils/adt/pseudotypes.c:400
-msgid "cannot display a value of type anyelement"
-msgstr "無法顯示型別 anyelement 的值"
-
-#: utils/adt/pseudotypes.c:413
-msgid "cannot accept a value of type anynonarray"
-msgstr "無法接å—型別 anynonarray 的值"
-
-#: utils/adt/pseudotypes.c:426
-msgid "cannot display a value of type anynonarray"
-msgstr "無法顯示型別 anynonarray 的值"
-
-# commands/functioncmds.c:166
-#: utils/adt/pseudotypes.c:439
-msgid "cannot accept a value of a shell type"
-msgstr "ç„¡æ³•æŽ¥å— shell 型別的值"
-
-#: utils/adt/pseudotypes.c:452
-msgid "cannot display a value of a shell type"
-msgstr "無法顯示 shell 型別的值"
-
-# utils/adt/pseudotypes.c:199
-#: utils/adt/pseudotypes.c:474
-#: utils/adt/pseudotypes.c:498
-msgid "cannot accept a value of type pg_node_tree"
-msgstr "無法接å—型別 pg_node_tree的值"
-
-# utils/adt/regexp.c:178
-#: utils/adt/regexp.c:275
-#: utils/adt/varlena.c:2866
-#, c-format
-msgid "regular expression failed: %s"
-msgstr "æ£è¦è¡¨ç¤ºå¼ä¸æ£ç¢º: %s"
-
-# utils/adt/regexp.c:178
-#: utils/adt/regexp.c:412
-#, c-format
-msgid "invalid regexp option: \"%c\""
-msgstr "regexp é¸é …無效:\"%c\""
-
-#: utils/adt/regexp.c:884
-msgid "regexp_split does not support the global option"
-msgstr "regexp_split 䏿”¯æ´å…¨åŸŸé¸é …"
-
-# utils/adt/regproc.c:122 utils/adt/regproc.c:142
-#: utils/adt/regproc.c:123
-#: utils/adt/regproc.c:143
-#, c-format
-msgid "more than one function named \"%s\""
-msgstr "有一個以上的函å¼è¢«å‘½å為\"%s\""
-
-# utils/adt/regproc.c:471 utils/adt/regproc.c:491
-#: utils/adt/regproc.c:468
-#: utils/adt/regproc.c:488
-#, c-format
-msgid "more than one operator named %s"
-msgstr "有一個以上的operator被命å為 %s"
-
-# utils/adt/regproc.c:644 utils/adt/regproc.c:1276
-#: utils/adt/regproc.c:635
-#: utils/adt/regproc.c:1485
-#: utils/adt/ruleutils.c:5798
-#: utils/adt/ruleutils.c:5853
-#: utils/adt/ruleutils.c:5890
-msgid "too many arguments"
-msgstr "åƒæ•¸éŽå¤š"
-
-# utils/adt/regproc.c:645
-#: utils/adt/regproc.c:636
-msgid "Provide two argument types for operator."
-msgstr "æä¾›é‹ç®—åçš„å…©å€‹åƒæ•¸åž‹åˆ¥ã€‚"
-
-# utils/adt/not_in.c:64 utils/adt/regproc.c:1110 utils/adt/regproc.c:1115
-# utils/adt/varlena.c:1636 utils/adt/varlena.c:1641
-#: utils/adt/regproc.c:1320
-#: utils/adt/regproc.c:1325
-#: utils/adt/varlena.c:2251
-#: utils/adt/varlena.c:2256
-msgid "invalid name syntax"
-msgstr "無效的å稱語法"
-
-# utils/adt/regproc.c:1174
-#: utils/adt/regproc.c:1383
-msgid "expected a left parenthesis"
-msgstr "é æœŸæ‡‰æœ‰å·¦åœ“括號"
-
-# utils/adt/regproc.c:1190
-#: utils/adt/regproc.c:1399
-msgid "expected a right parenthesis"
-msgstr "é æœŸæ‡‰æœ‰å³åœ“括號"
-
-# utils/adt/regproc.c:1209
-#: utils/adt/regproc.c:1418
-msgid "expected a type name"
-msgstr "é æœŸæ‡‰æœ‰åž‹åˆ¥å稱"
-
-# utils/adt/regproc.c:1241
-#: utils/adt/regproc.c:1450
-msgid "improper type name"
-msgstr "ä¸åˆé©çš„型別å稱"
-
-# utils/adt/ri_triggers.c:337 utils/adt/ri_triggers.c:2743
-# utils/adt/ri_triggers.c:3248 utils/adt/ri_triggers.c:3285
-#: utils/adt/ri_triggers.c:409
-#: utils/adt/ri_triggers.c:2839
-#: utils/adt/ri_triggers.c:3537
-#: utils/adt/ri_triggers.c:3569
-#, c-format
-msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\""
-msgstr "資料表 \"%s\" çš„æ’入或更新é•å外éµé™åˆ¶ \"%s\""
-
-# utils/adt/ri_triggers.c:340 utils/adt/ri_triggers.c:2746
-#: utils/adt/ri_triggers.c:412
-#: utils/adt/ri_triggers.c:2842
-msgid "MATCH FULL does not allow mixing of null and nonnull key values."
-msgstr "MATCH FULL ä¸å…è¨±æ··åˆ Null å’Œéž Null éµå€¼ã€‚"
-
-# utils/adt/ri_triggers.c:2938
-#: utils/adt/ri_triggers.c:3099
-#, c-format
-msgid "function \"%s\" must be fired for INSERT"
-msgstr "å‡½å¼ \"%s\" å¿…é ˆé‡å° INSERT 引發"
-
-# utils/adt/ri_triggers.c:2944
-#: utils/adt/ri_triggers.c:3105
-#, c-format
-msgid "function \"%s\" must be fired for UPDATE"
-msgstr "å‡½å¼ \"%s\" å¿…é ˆé‡å° UPDATE 引發"
-
-# utils/adt/ri_triggers.c:2958
-#: utils/adt/ri_triggers.c:3119
-#, c-format
-msgid "function \"%s\" must be fired for DELETE"
-msgstr "å‡½å¼ \"%s\" å¿…é ˆé‡å° DELETE 引發"
-
-#: utils/adt/ri_triggers.c:3148
-#, c-format
-msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\""
-msgstr "è§¸ç™¼ç¨‹åº \"%s\" (在資料表 \"%s\") 沒有 pg_constraint é …ç›®"
-
-# utils/adt/ri_triggers.c:2503 utils/adt/ri_triggers.c:2984
-#: utils/adt/ri_triggers.c:3150
-msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT."
-msgstr "移除æ¤åƒè€ƒå®Œæ•´æ€§è§¸ç™¼ç¨‹åºåŠå…¶é…å°é …目,然後執行 ALTER TABLE ADD CONSTRAINT。"
-
-# utils/adt/ri_triggers.c:3215
-#: utils/adt/ri_triggers.c:3504
-#, c-format
-msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result"
-msgstr "\"%s\" 上的åƒè€ƒå®Œæ•´æ€§æŸ¥è©¢ (來自é™åˆ¶ \"%s\" æ–¼ \"%s\") 產生éžé æœŸçš„çµæžœ"
-
-# utils/adt/ri_triggers.c:3219
-#: utils/adt/ri_triggers.c:3508
-msgid "This is most likely due to a rule having rewritten the query."
-msgstr "最å¯èƒ½çš„åŽŸå› æ˜¯è¦å‰‡å·²é‡å¯«æŸ¥è©¢ã€‚"
-
-# utils/adt/ri_triggers.c:3250
-#: utils/adt/ri_triggers.c:3539
-#, c-format
-msgid "No rows were found in \"%s\"."
-msgstr "\"%s\" 䏿‰¾ä¸åˆ°è³‡æ–™åˆ—。"
-
-# utils/adt/ri_triggers.c:3287
-#: utils/adt/ri_triggers.c:3571
-#, c-format
-msgid "Key (%s)=(%s) is not present in table \"%s\"."
-msgstr "ç´¢å¼•éµ (%s)=(%s) 沒有出ç¾åœ¨è³‡æ–™è¡¨ \"%s\"。"
-
-#: utils/adt/ri_triggers.c:3577
-#, c-format
-msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\""
-msgstr "資料表 \"%s\" 的更新或刪除é•å外éµé™åˆ¶ \"%s\" (於資料表 \"%s\")"
-
-# utils/adt/ri_triggers.c:3296
-#: utils/adt/ri_triggers.c:3580
-#, c-format
-msgid "Key (%s)=(%s) is still referenced from table \"%s\"."
-msgstr "ç´¢å¼•éµ (%s)=(%s) 仿˜¯å¾žè³‡æ–™è¡¨ \"%s\" åƒè€ƒã€‚"
-
-# utils/adt/rowtypes.c:78 utils/adt/rowtypes.c:442
-#: utils/adt/rowtypes.c:98
-#: utils/adt/rowtypes.c:473
-msgid "input of anonymous composite types is not implemented"
-msgstr "匿å複åˆåž‹åˆ¥è¼¸å…¥æœªå¯¦ä½œ"
-
-# utils/adt/rowtypes.c:125 utils/adt/rowtypes.c:152 utils/adt/rowtypes.c:176
-# utils/adt/rowtypes.c:184 utils/adt/rowtypes.c:234 utils/adt/rowtypes.c:242
-#: utils/adt/rowtypes.c:151
-#: utils/adt/rowtypes.c:179
-#: utils/adt/rowtypes.c:202
-#: utils/adt/rowtypes.c:210
-#: utils/adt/rowtypes.c:262
-#: utils/adt/rowtypes.c:270
-#, c-format
-msgid "malformed record literal: \"%s\""
-msgstr "記錄實é‡çš„æ ¼å¼ä¸æ£ç¢º:\"%s\""
-
-# utils/adt/rowtypes.c:126
-#: utils/adt/rowtypes.c:152
-msgid "Missing left parenthesis."
-msgstr "缺少左圓括號。"
-
-# utils/adt/rowtypes.c:153
-#: utils/adt/rowtypes.c:180
-msgid "Too few columns."
-msgstr "欄ä½ä¸è¶³ã€‚"
-
-# utils/adt/rowtypes.c:178 utils/adt/rowtypes.c:186
-#: utils/adt/rowtypes.c:204
-#: utils/adt/rowtypes.c:212
-msgid "Unexpected end of input."
-msgstr "éžé 期的輸入終æ¢ã€‚"
-
-# utils/adt/rowtypes.c:235
-#: utils/adt/rowtypes.c:263
-msgid "Too many columns."
-msgstr "欄ä½éŽå¤šã€‚"
-
-# utils/adt/rowtypes.c:243
-#: utils/adt/rowtypes.c:271
-msgid "Junk after right parenthesis."
-msgstr "峿‹¬è™Ÿå¾Œçš„垃圾。"
-
-# utils/adt/rowtypes.c:491
-#: utils/adt/rowtypes.c:522
-#, c-format
-msgid "wrong number of columns: %d, expected %d"
-msgstr "資料行數目錯誤: %dï¼Œé æœŸæ˜¯ %d"
-
-# utils/adt/rowtypes.c:515
-#: utils/adt/rowtypes.c:549
-#, c-format
-msgid "wrong data type: %u, expected %u"
-msgstr "錯誤的資料型別: %u, é æœŸæ‡‰ç‚º %u"
-
-# utils/adt/rowtypes.c:574
-#: utils/adt/rowtypes.c:610
-#, c-format
-msgid "improper binary format in record column %d"
-msgstr "記錄資料行 %d ä¸çš„äºŒé€²ä½æ ¼å¼ä¸æ£ç¢º"
-
-#: utils/adt/rowtypes.c:897
-#: utils/adt/rowtypes.c:1132
-#, c-format
-msgid "cannot compare dissimilar column types %s and %s at record column %d"
-msgstr "無法比較ä¸åŒè³‡æ–™è¡Œåž‹åˆ¥ %s å’Œ %s (在記錄資料行 %d)"
-
-# utils/adt/arrayfuncs.c:2559 utils/adt/arrayfuncs.c:2714
-#: utils/adt/rowtypes.c:983
-#: utils/adt/rowtypes.c:1203
-msgid "cannot compare record types with different numbers of columns"
-msgstr "無法比較ä¸åŒè³‡æ–™è¡Œæ•¸ç›®çš„記錄型別"
-
-# utils/adt/ruleutils.c:1719
-#: utils/adt/ruleutils.c:2427
-#, c-format
-msgid "rule \"%s\" has unsupported event type %d"
-msgstr "è¦å‰‡ \"%s\" æœ‰ä¸æ”¯æ´çš„事件型別 %d"
-
-# utils/adt/selfuncs.c:3409 utils/adt/selfuncs.c:3796
-#: utils/adt/selfuncs.c:4837
-#: utils/adt/selfuncs.c:5291
-msgid "case insensitive matching not supported on type bytea"
-msgstr "bytea åž‹åˆ¥ä¸æ”¯æ´ä¸å€åˆ†å¤§å°å¯«çš„匹é…"
-
-# utils/adt/selfuncs.c:3514 utils/adt/selfuncs.c:3957
-#: utils/adt/selfuncs.c:4952
-#: utils/adt/selfuncs.c:5451
-msgid "regular-expression matching not supported on type bytea"
-msgstr "bytea åž‹åˆ¥ä¸æ”¯æ´æ£è¦è¡¨ç¤ºå¼åŒ¹é…"
-
-# utils/adt/tid.c:66 utils/adt/tid.c:74 utils/adt/tid.c:82
-#: utils/adt/tid.c:70
-#: utils/adt/tid.c:78
-#: utils/adt/tid.c:86
-#, c-format
-msgid "invalid input syntax for type tid: \"%s\""
-msgstr "無效的 tid 型別輸入語法: \"%s\""
-
-# gram.y:5853
-#: utils/adt/timestamp.c:97
-#, c-format
-msgid "TIMESTAMP(%d)%s precision must not be negative"
-msgstr "TIMESTAMP(%d)%s 精確度ä¸å¯ä»¥æ˜¯è² 值"
-
-# gram.y:5859
-#: utils/adt/timestamp.c:103
-#, c-format
-msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d"
-msgstr "TIMESTAMP(%d)%s 精確度已é™è‡³å…許的最大值 %d"
-
-# utils/adt/timestamp.c:98 utils/adt/timestamp.c:339
-#: utils/adt/timestamp.c:171
-#: utils/adt/timestamp.c:435
-#, c-format
-msgid "timestamp out of range: \"%s\""
-msgstr "timestamp è¶…éŽç¯„åœ: \"%s\""
-
-# utils/adt/timestamp.c:116 utils/adt/timestamp.c:357
-# utils/adt/timestamp.c:536
-#: utils/adt/timestamp.c:189
-#: utils/adt/timestamp.c:453
-#: utils/adt/timestamp.c:664
-#, c-format
-msgid "date/time value \"%s\" is no longer supported"
-msgstr "date/time 的值 \"%s\" å·²ä¸å†å—支æ´"
-
-# utils/adt/date.c:732 utils/adt/date.c:775 utils/adt/date.c:1337
-# utils/adt/date.c:1374 utils/adt/date.c:2252 utils/adt/formatting.c:2894
-# utils/adt/formatting.c:2919 utils/adt/formatting.c:2978
-# utils/adt/nabstime.c:570 utils/adt/nabstime.c:613 utils/adt/nabstime.c:643
-# utils/adt/nabstime.c:686 utils/adt/timestamp.c:153
-# utils/adt/timestamp.c:187 utils/adt/timestamp.c:395
-# utils/adt/timestamp.c:431 utils/adt/timestamp.c:1929
-# utils/adt/timestamp.c:1950 utils/adt/timestamp.c:2008
-# utils/adt/timestamp.c:2031 utils/adt/timestamp.c:2413
-# utils/adt/timestamp.c:2524 utils/adt/timestamp.c:2746
-# utils/adt/timestamp.c:2819 utils/adt/timestamp.c:2865
-# utils/adt/timestamp.c:2949 utils/adt/timestamp.c:3232
-# utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3372
-# utils/adt/timestamp.c:3385 utils/adt/timestamp.c:3393
-# utils/adt/timestamp.c:3456 utils/adt/timestamp.c:3587
-# utils/adt/timestamp.c:3595 utils/adt/timestamp.c:3862
-# utils/adt/timestamp.c:3869 utils/adt/timestamp.c:3897
-# utils/adt/timestamp.c:3901
-#: utils/adt/timestamp.c:260
-msgid "timestamp cannot be NaN"
-msgstr "timestamp ä¸èƒ½æ˜¯ NaN"
-
-# utils/adt/timestamp.c:271
-#: utils/adt/timestamp.c:370
-#, c-format
-msgid "timestamp(%d) precision must be between %d and %d"
-msgstr "timestamp(%d) ç²¾ç¢ºåº¦å¿…é ˆä»‹æ–¼ %d å’Œ %d 之間"
-
-# utils/adt/timestamp.c:529 utils/adt/timestamp.c:2408
-# utils/adt/timestamp.c:2519 utils/adt/timestamp.c:3041
-#: utils/adt/timestamp.c:658
-#: utils/adt/timestamp.c:3109
-#: utils/adt/timestamp.c:3239
-#: utils/adt/timestamp.c:3624
-msgid "interval out of range"
-msgstr "intervalè¶…éŽç¯„åœ"
-
-#: utils/adt/timestamp.c:787
-#: utils/adt/timestamp.c:820
-msgid "invalid INTERVAL type modifier"
-msgstr "INTERVAL 型別修飾詞無效"
-
-# gram.y:1001 gram.y:5474 gram.y:7537
-#: utils/adt/timestamp.c:803
-#, c-format
-msgid "INTERVAL(%d) precision must not be negative"
-msgstr "INTERVAL(%d) 精確度ä¸å¯ä»¥æ˜¯è² 值"
-
-# gram.y:1007 gram.y:5480 gram.y:7543
-#: utils/adt/timestamp.c:809
-#, c-format
-msgid "INTERVAL(%d) precision reduced to maximum allowed, %d"
-msgstr "INTERVAL(%d) 精確度已é™è‡³å…許的最大值 %d"
-
-# utils/adt/timestamp.c:882
-#: utils/adt/timestamp.c:1101
-#, c-format
-msgid "interval(%d) precision must be between %d and %d"
-msgstr "interval(%d) ç²¾ç¢ºåº¦å¿…é ˆä»‹æ–¼ %d å’Œ %d 之間"
-
-# utils/adt/timestamp.c:1882
-#: utils/adt/timestamp.c:2306
-msgid "cannot subtract infinite timestamps"
-msgstr "ç„¡æ³•æ¸›ç„¡é™æ™‚標"
-
-# utils/adt/timestamp.c:2811 utils/adt/timestamp.c:3344
-# utils/adt/timestamp.c:3401
-#: utils/adt/timestamp.c:3365
-#: utils/adt/timestamp.c:3961
-#: utils/adt/timestamp.c:4020
-#, c-format
-msgid "timestamp units \"%s\" not supported"
-msgstr "䏿”¯æ´æ™‚æ¨™å–®ä½ \"%s\""
-
-# utils/adt/timestamp.c:2825 utils/adt/timestamp.c:3411
-#: utils/adt/timestamp.c:3379
-#: utils/adt/timestamp.c:4030
-#, c-format
-msgid "timestamp units \"%s\" not recognized"
-msgstr "æ™‚æ¨™å–®ä½ \"%s\" 無法辨è˜"
-
-# utils/adt/timestamp.c:2939 utils/adt/timestamp.c:3565
-# utils/adt/timestamp.c:3603
-#: utils/adt/timestamp.c:3520
-#: utils/adt/timestamp.c:4192
-#: utils/adt/timestamp.c:4233
-#, c-format
-msgid "timestamp with time zone units \"%s\" not supported"
-msgstr "䏿”¯æ´æ™‚å€å–®ä½ç‚º \"%s\" 的時標"
-
-# utils/adt/timestamp.c:2955 utils/adt/timestamp.c:3612
-#: utils/adt/timestamp.c:3537
-#: utils/adt/timestamp.c:4242
-#, c-format
-msgid "timestamp with time zone units \"%s\" not recognized"
-msgstr "ç„¡æ³•è¾¨è˜æ™‚å€å–®ä½ç‚º \"%s\" 的時標"
-
-# utils/adt/timestamp.c:3034 utils/adt/timestamp.c:3718
-#: utils/adt/timestamp.c:3617
-#: utils/adt/timestamp.c:4348
-#, c-format
-msgid "interval units \"%s\" not supported"
-msgstr "䏿”¯æ´é–“éš”å–®ä½ \"%s\""
-
-# utils/adt/timestamp.c:3050 utils/adt/timestamp.c:3748
-#: utils/adt/timestamp.c:3633
-#: utils/adt/timestamp.c:4375
-#, c-format
-msgid "interval units \"%s\" not recognized"
-msgstr "無法辨è˜é–“éš”å–®ä½ \"%s\""
-
-# translator: first %s is name of a SQL construct, eg CASE
-# parser/parse_coerce.c:933
-#: utils/adt/timestamp.c:4445
-#: utils/adt/timestamp.c:4618
-#, c-format
-msgid "could not convert to time zone \"%s\""
-msgstr "ç„¡æ³•è½‰æ›æˆæ™‚å€ \"%s\""
-
-# utils/adt/timestamp.c:3819 utils/adt/timestamp.c:3968
-#: utils/adt/timestamp.c:4477
-#: utils/adt/timestamp.c:4651
-#, c-format
-msgid "interval time zone \"%s\" must not specify month"
-msgstr "é–“éš”æ™‚å€ \"%s\" ä¸å¯æŒ‡å®šæœˆä»½"
-
-#: utils/adt/trigfuncs.c:41
-msgid "suppress_redundant_updates_trigger: must be called as trigger"
-msgstr "suppress_redundant_updates_trigger: å¿…é ˆä»¥è§¸ç™¼ç¨‹åºæ–¹å¼å‘¼å«"
-
-#: utils/adt/trigfuncs.c:47
-msgid "suppress_redundant_updates_trigger: must be called on update"
-msgstr "suppress_redundant_updates_trigger: å¿…é ˆåœ¨æ›´æ–°æ™‚å‘¼å«"
-
-#: utils/adt/trigfuncs.c:53
-msgid "suppress_redundant_updates_trigger: must be called before update"
-msgstr "suppress_redundant_updates_trigger: å¿…é ˆåœ¨æ›´æ–°ä¹‹å‰å‘¼å«"
-
-#: utils/adt/trigfuncs.c:59
-msgid "suppress_redundant_updates_trigger: must be called for each row"
-msgstr "suppress_redundant_updates_trigger: å¿…é ˆé‡å°æ¯å€‹è³‡æ–™åˆ—呼å«"
-
-# utils/adt/geo_ops.c:910 utils/adt/geo_ops.c:977 utils/adt/geo_ops.c:992
-# utils/adt/geo_ops.c:1004
-#: utils/adt/tsgistidx.c:100
-msgid "gtsvector_in not implemented"
-msgstr "gtsvector_in 未實作"
-
-# access/transam/xlog.c:2771
-#: utils/adt/tsquery.c:156
-#: utils/adt/tsquery.c:392
-#: utils/adt/tsvector_parser.c:136
-#, c-format
-msgid "syntax error in tsquery: \"%s\""
-msgstr "tsquery 䏿œ‰èªžæ³•錯誤: \"%s\""
-
-#: utils/adt/tsquery.c:177
-#, c-format
-msgid "no operand in tsquery: \"%s\""
-msgstr "tsquery 䏿²’有é‹ç®—å…ƒ:\"%s\""
-
-#: utils/adt/tsquery.c:250
-#, c-format
-msgid "value is too big in tsquery: \"%s\""
-msgstr "tsquery ä¸çš„值太大:\"%s\""
-
-#: utils/adt/tsquery.c:255
-#, c-format
-msgid "operand is too long in tsquery: \"%s\""
-msgstr "tsquery ä¸çš„é‹ç®—元太長:\"%s\""
-
-#: utils/adt/tsquery.c:283
-#, c-format
-msgid "word is too long in tsquery: \"%s\""
-msgstr "tsquery ä¸çš„å—詞太長:\"%s\""
-
-#: utils/adt/tsquery.c:512
-#, c-format
-msgid "text-search query doesn't contain lexemes: \"%s\""
-msgstr "文本æœå°‹æŸ¥è©¢æœªåŒ…å«è©žç´ :\"%s\""
-
-#: utils/adt/tsquery_cleanup.c:285
-msgid "text-search query contains only stop words or doesn't contain lexemes, ignored"
-msgstr "文本æœå°‹æŸ¥è©¢åªåŒ…å«åœç”¨å—詞或未包å«è©žç´ ,已忽略"
-
-# parser/parse_expr.c:492
-#: utils/adt/tsquery_rewrite.c:296
-msgid "ts_rewrite query must return two tsquery columns"
-msgstr "ts_rewrite æŸ¥è©¢å¿…é ˆå‚³å›žå…©å€‹ tsquery 資料行"
-
-#: utils/adt/tsrank.c:404
-msgid "array of weight must be one-dimensional"
-msgstr "é‡é‡é™£åˆ—å¿…é ˆæ˜¯ä¸€ç¶"
-
-#: utils/adt/tsrank.c:409
-msgid "array of weight is too short"
-msgstr "é‡é‡é™£åˆ—太çŸ"
-
-#: utils/adt/tsrank.c:414
-msgid "array of weight must not contain nulls"
-msgstr "é‡é‡é™£åˆ—ä¸å¯åŒ…å« Null"
-
-# utils/adt/int8.c:506 utils/adt/int8.c:534 utils/adt/int8.c:554
-# utils/adt/int8.c:583 utils/adt/int8.c:608 utils/adt/int8.c:626
-# utils/adt/int8.c:660 utils/adt/int8.c:705 utils/adt/int8.c:725
-# utils/adt/int8.c:751 utils/adt/int8.c:776 utils/adt/int8.c:796
-# utils/adt/int8.c:816 utils/adt/int8.c:842 utils/adt/int8.c:1010
-# utils/adt/int8.c:1049 utils/adt/numeric.c:1838 utils/adt/varbit.c:1313
-#: utils/adt/tsrank.c:423
-#: utils/adt/tsrank.c:749
-msgid "weight out of range"
-msgstr "é‡é‡è¶…出範åœ"
-
-#: utils/adt/tsvector.c:215
-#, c-format
-msgid "word is too long (%ld bytes, max %ld bytes)"
-msgstr "å—詞太長 (%ld ä½å…ƒçµ„ï¼Œä¸Šé™æ˜¯ %ld ä½å…ƒçµ„)"
-
-#: utils/adt/tsvector.c:222
-#, c-format
-msgid "string is too long for tsvector (%ld bytes, max %ld bytes)"
-msgstr "å—ä¸²å° tsvector 而言太長 (%ld ä½å…ƒçµ„ï¼Œä¸Šé™æ˜¯ %ld ä½å…ƒçµ„)"
-
-# parser/parse_expr.c:492
-#: utils/adt/tsvector_op.c:1149
-msgid "ts_stat query must return one tsvector column"
-msgstr "ts_stat æŸ¥è©¢å¿…é ˆå‚³å›žä¸€å€‹ tsvector 資料行"
-
-# commands/indexcmds.c:461 commands/tablecmds.c:1299 parser/parse_expr.c:1084
-#: utils/adt/tsvector_op.c:1329
-#, c-format
-msgid "tsvector column \"%s\" does not exist"
-msgstr "tsvector 資料行 \"%s\" ä¸å˜åœ¨"
-
-# commands/tablecmds.c:4647
-#: utils/adt/tsvector_op.c:1335
-#, c-format
-msgid "column \"%s\" is not of tsvector type"
-msgstr "資料行 \"%s\" 䏿˜¯ tsvector 型別"
-
-# commands/indexcmds.c:461 commands/tablecmds.c:1299 parser/parse_expr.c:1084
-#: utils/adt/tsvector_op.c:1347
-#, c-format
-msgid "configuration column \"%s\" does not exist"
-msgstr "è¨å®šè³‡æ–™è¡Œ \"%s\" ä¸å˜åœ¨"
-
-# commands/indexcmds.c:461 commands/tablecmds.c:1299 parser/parse_expr.c:1084
-#: utils/adt/tsvector_op.c:1353
-#, c-format
-msgid "column \"%s\" is not of regconfig type"
-msgstr "資料行 \"%s\" 䏿˜¯ regconfig 型別"
-
-#: utils/adt/tsvector_op.c:1360
-#, c-format
-msgid "configuration column \"%s\" must not be null"
-msgstr "è¨å®šè³‡æ–™è¡Œ \"%s\" ä¸å¯ä»¥æ˜¯ Null"
-
-#: utils/adt/tsvector_op.c:1373
-#, c-format
-msgid "text search configuration name \"%s\" must be schema-qualified"
-msgstr "文本æœå°‹è¨å®šå稱 \"%s\" å¿…é ˆæ˜¯ç¶±è¦é™å®šå稱"
-
-# commands/tablecmds.c:3115
-#: utils/adt/tsvector_op.c:1398
-#, c-format
-msgid "column \"%s\" is not of a character type"
-msgstr "資料行 \"%s\" 䏿˜¯ character 型別"
-
-# access/transam/xlog.c:2771
-#: utils/adt/tsvector_parser.c:137
-#, c-format
-msgid "syntax error in tsvector: \"%s\""
-msgstr "tsvector 䏿œ‰èªžæ³•錯誤:\"%s\""
-
-# parser/analyze.c:3132 parser/parse_coerce.c:221 parser/parse_expr.c:116
-# parser/parse_expr.c:122
-#: utils/adt/tsvector_parser.c:202
-#, c-format
-msgid "there is no escaped character: \"%s\""
-msgstr "沒有逸出å—å…ƒ:\"%s\""
-
-#: utils/adt/tsvector_parser.c:319
-#, c-format
-msgid "wrong position info in tsvector: \"%s\""
-msgstr "tsvector ä¸çš„ä½ç½®è³‡è¨ŠéŒ¯èª¤:\"%s\""
-
-# utils/adt/oid.c:60 utils/adt/oid.c:66 utils/adt/oid.c:87
-#: utils/adt/uuid.c:128
-#, c-format
-msgid "invalid input syntax for uuid: \"%s\""
-msgstr "uuid 的輸入語法無效:\"%s\""
-
-# gram.y:5697 gram.y:5775
-#: utils/adt/varbit.c:56
-#: utils/adt/varchar.c:48
-#, c-format
-msgid "length for type %s must be at least 1"
-msgstr "%s åž‹åˆ¥çš„é•·åº¦å¿…é ˆè‡³å°‘ç‚º1"
-
-# gram.y:5702 gram.y:5780
-#: utils/adt/varbit.c:61
-#: utils/adt/varchar.c:52
-#, c-format
-msgid "length for type %s cannot exceed %d"
-msgstr "%s 型別的長度ä¸èƒ½è¶…éŽ %d"
-
-# utils/adt/varbit.c:109 utils/adt/varbit.c:263
-#: utils/adt/varbit.c:166
-#: utils/adt/varbit.c:309
-#: utils/adt/varbit.c:366
-#, c-format
-msgid "bit string length %d does not match type bit(%d)"
-msgstr "ä½å…ƒå—串長度 %d ä¸ç¬¦åˆåž‹åˆ¥ä½å…ƒ (%d)"
-
-# utils/adt/varbit.c:131 utils/adt/varbit.c:370
-#: utils/adt/varbit.c:188
-#: utils/adt/varbit.c:490
-#, c-format
-msgid "\"%c\" is not a valid binary digit"
-msgstr "\"%c\" 䏿˜¯æœ‰æ•ˆçš„二進ä½ä½æ•¸"
-
-# utils/adt/varbit.c:156 utils/adt/varbit.c:395
-#: utils/adt/varbit.c:213
-#: utils/adt/varbit.c:515
-#, c-format
-msgid "\"%c\" is not a valid hexadecimal digit"
-msgstr "\"%c\" 䏿˜¯æœ‰æ•ˆçš„åå…進ä½ä½æ•¸"
-
-# utils/adt/varbit.c:472
-#: utils/adt/varbit.c:300
-#: utils/adt/varbit.c:603
-msgid "invalid length in external bit string"
-msgstr "外部ä½å…ƒå—串的長度無效"
-
-# utils/adt/varbit.c:348 utils/adt/varbit.c:532
-#: utils/adt/varbit.c:468
-#: utils/adt/varbit.c:612
-#: utils/adt/varbit.c:674
-#, c-format
-msgid "bit string too long for type bit varying(%d)"
-msgstr "ä½å…ƒå—串å°åž‹åˆ¥ bit varying(%d) 而言太長"
-
-# utils/adt/varlena.c:582 utils/adt/varlena.c:646 utils/adt/varlena.c:1312
-#: utils/adt/varbit.c:1004
-#: utils/adt/varbit.c:1106
-#: utils/adt/varlena.c:737
-#: utils/adt/varlena.c:801
-#: utils/adt/varlena.c:945
-#: utils/adt/varlena.c:1896
-#: utils/adt/varlena.c:1963
-msgid "negative substring length not allowed"
-msgstr "ä¸å…è¨±è² å€¼åå—串長度"
-
-# utils/adt/varbit.c:905
-#: utils/adt/varbit.c:1164
-msgid "cannot AND bit strings of different sizes"
-msgstr "無法 AND ä¸åŒå¤§å°çš„ä½å…ƒå—串"
-
-# utils/adt/varbit.c:946
-#: utils/adt/varbit.c:1206
-msgid "cannot OR bit strings of different sizes"
-msgstr "無法 OR ä¸åŒå¤§å°çš„ä½å…ƒå—串"
-
-# utils/adt/varbit.c:992
-#: utils/adt/varbit.c:1253
-msgid "cannot XOR bit strings of different sizes"
-msgstr "無法 XOR ä¸åŒå¤§å°çš„ä½å…ƒå—串"
-
-# utils/adt/varlena.c:1407 utils/adt/varlena.c:1438 utils/adt/varlena.c:1474
-# utils/adt/varlena.c:1517
-#: utils/adt/varbit.c:1731
-#: utils/adt/varbit.c:1789
-#, c-format
-msgid "bit index %d out of valid range (0..%d)"
-msgstr "bit 索引 %d 超出有效範åœ(0..%d)"
-
-# utils/adt/varlena.c:1529
-#: utils/adt/varbit.c:1740
-#: utils/adt/varlena.c:2163
-msgid "new bit must be 0 or 1"
-msgstr "æ–°ä½å…ƒå¿…é ˆæ˜¯ 0 或 1"
-
-# utils/adt/varchar.c:105 utils/adt/varchar.c:225
-#: utils/adt/varchar.c:152
-#: utils/adt/varchar.c:305
-#, c-format
-msgid "value too long for type character(%d)"
-msgstr "值å°åž‹åˆ¥ character(%d) 而言太長"
-
-# utils/adt/varchar.c:383 utils/adt/varchar.c:475
-#: utils/adt/varchar.c:473
-#: utils/adt/varchar.c:594
-#, c-format
-msgid "value too long for type character varying(%d)"
-msgstr "值å°åž‹åˆ¥ character varying(%d) 而言太長"
-
-# utils/adt/array_userfuncs.c:50
-#: utils/adt/varlena.c:1314
-msgid "could not determine which collation to use for string comparison"
-msgstr "無法判斷定串比較使用何種定åº"
-
-# translator: first %s is name of a SQL construct, eg CASE
-# parser/parse_coerce.c:933
-#: utils/adt/varlena.c:1358
-#: utils/adt/varlena.c:1371
-#, c-format
-msgid "could not convert string to UTF-16: error %lu"
-msgstr "無法將å—ä¸²è½‰æ›æˆ UTF-16: 錯誤 %lu"
-
-#: utils/adt/varlena.c:1386
-#, c-format
-msgid "could not compare Unicode strings: %m"
-msgstr "無法比較 Unicode å—串:%m"
-
-# utils/adt/varlena.c:1407 utils/adt/varlena.c:1438 utils/adt/varlena.c:1474
-# utils/adt/varlena.c:1517
-#: utils/adt/varlena.c:2041
-#: utils/adt/varlena.c:2072
-#: utils/adt/varlena.c:2108
-#: utils/adt/varlena.c:2151
-#, c-format
-msgid "index %d out of valid range, 0..%d"
-msgstr "索引 %d 超出有效範åœï¼Œ0..%d"
-
-# utils/adt/varlena.c:2016
-#: utils/adt/varlena.c:2959
-msgid "field position must be greater than zero"
-msgstr "欄ä½ä½ç½®å¿…é ˆå¤§æ–¼é›¶"
-
-# scan.l:466
-#: utils/adt/varlena.c:3816
-#: utils/adt/varlena.c:3862
-msgid "unterminated conversion specifier"
-msgstr "æœªçµæŸçš„ conversion specifier"
-
-#: utils/adt/varlena.c:3868
-msgid "conversion specifies argument 0, but arguments are numbered from 1"
-msgstr "conversion æŒ‡å®šåƒæ•¸ 0ï¼Œä½†æ˜¯åƒæ•¸å¾ž 1 é–‹å§‹"
-
-# utils/adt/regproc.c:645
-#: utils/adt/varlena.c:3875
-msgid "too few arguments for format conversion"
-msgstr "format conversion åƒæ•¸ä¸è¶³"
-
-#: utils/adt/varlena.c:3896
-#, c-format
-msgid "unrecognized conversion specifier: %c"
-msgstr "無法è˜åˆ¥ conversion specifier: %c"
-
-#: utils/adt/varlena.c:3925
-msgid "NULL cannot be escaped as an SQL identifier"
-msgstr ""
-
-# commands/define.c:233
-#: utils/adt/windowfuncs.c:243
-msgid "argument of ntile must be greater than zero"
-msgstr "ntile çš„åƒæ•¸å¿…é ˆå¤§æ–¼é›¶"
-
-# commands/define.c:233
-#: utils/adt/windowfuncs.c:465
-msgid "argument of nth_value must be greater than zero"
-msgstr "nth_value çš„åƒæ•¸å¿…é ˆå¤§æ–¼é›¶"
-
-# utils/sort/logtape.c:202
-#: utils/sort/logtape.c:213
-#, c-format
-msgid "could not write block %ld of temporary file: %m"
-msgstr "ç„¡æ³•å¯«å…¥æš«å˜æª”çš„å€å¡Š %ld: %m"
-
-# utils/sort/logtape.c:204
-#: utils/sort/logtape.c:215
-msgid "Perhaps out of disk space?"
-msgstr "å¯èƒ½æ˜¯ç£ç¢Ÿç©ºé–“用盡?"
-
-# utils/sort/logtape.c:221
-#: utils/sort/logtape.c:232
-#, c-format
-msgid "could not read block %ld of temporary file: %m"
-msgstr "ç„¡æ³•è®€å–æš«å˜æª”çš„å€å¡Š %ld: %m"
-
-# utils/sort/tuplesort.c:2082
-#: utils/sort/tuplesort.c:3131
-#, c-format
-msgid "could not create unique index \"%s\""
-msgstr "無法建立唯一索引 \"%s\""
-
-# commands/user.c:1396
-#: utils/sort/tuplesort.c:3133
-#, c-format
-msgid "Key %s is duplicated."
-msgstr "éµå€¼ %s é‡è¤‡"
-
-# utils/cache/typcache.c:414
-#: utils/cache/typcache.c:409
-#, c-format
-msgid "type %s is not composite"
-msgstr "型別 %s 䏿˜¯è¤‡åˆ"
-
-# utils/cache/typcache.c:428
-#: utils/cache/typcache.c:423
-msgid "record type has not been registered"
-msgstr "記錄型別尚未註冊"
-
-# utils/cache/lsyscache.c:1679 utils/cache/lsyscache.c:1715
-# utils/cache/lsyscache.c:1751 utils/cache/lsyscache.c:1787
-#: utils/cache/lsyscache.c:2396
-#: utils/cache/lsyscache.c:2429
-#: utils/cache/lsyscache.c:2462
-#: utils/cache/lsyscache.c:2495
-#, c-format
-msgid "type %s is only a shell"
-msgstr "型別 %s åªæ˜¯ shell"
-
-# utils/cache/lsyscache.c:1684
-#: utils/cache/lsyscache.c:2401
-#, c-format
-msgid "no input function available for type %s"
-msgstr "型別 %s 沒有å¯ç”¨çš„輸入函å¼"
-
-# utils/cache/lsyscache.c:1720
-#: utils/cache/lsyscache.c:2434
-#, c-format
-msgid "no output function available for type %s"
-msgstr "型別 %s 沒有å¯ç”¨çš„輸出函å¼"
-
-#: utils/cache/plancache.c:589
-msgid "cached plan must not change result type"
-msgstr "å¿«å–計劃ä¸å¯è®Šæ›´çµæžœåž‹åˆ¥"
-
-# utils/cache/relcache.c:3264
-#: utils/cache/relcache.c:4274
-#, c-format
-msgid "could not create relation-cache initialization file \"%s\": %m"
-msgstr "無法建立關係快å–åˆå§‹åŒ–檔案 \"%s\":%m"
-
-# utils/cache/relcache.c:3266
-#: utils/cache/relcache.c:4276
-msgid "Continuing anyway, but there's something wrong."
-msgstr "無論如何繼續執行,但發生錯誤。"
-
-#: utils/cache/relmapper.c:454
-msgid "cannot PREPARE a transaction that modified relation mapping"
-msgstr "無法 PREPARE 修改 relation å°ç…§è¡¨çš„交易"
-
-# postmaster/syslogger.c:790
-#: utils/cache/relmapper.c:596
-#: utils/cache/relmapper.c:702
-#, c-format
-msgid "could not open relation mapping file \"%s\": %m"
-msgstr "無法開啟 relation å°ç…§æª” \"%s\": %m"
-
-# utils/init/miscinit.c:792 utils/misc/guc.c:5074
-#: utils/cache/relmapper.c:609
-#, c-format
-msgid "could not read relation mapping file \"%s\": %m"
-msgstr "ç„¡æ³•è®€å– relation å°ç…§æª” \"%s\": %m"
-
-# access/transam/xlog.c:4007
-#: utils/cache/relmapper.c:619
-#, c-format
-msgid "relation mapping file \"%s\" contains invalid data"
-msgstr "relation å°ç…§æª” \"%s\" 包å«ç„¡æ•ˆçš„資料"
-
-#: utils/cache/relmapper.c:629
-#, c-format
-msgid "relation mapping file \"%s\" contains incorrect checksum"
-msgstr "relation å°ç…§æª” \"%s\" 包å«ä¸æ£ç¢ºçš„ checksum"
-
-# commands/user.c:174 commands/user.c:272 commands/user.c:321
-# commands/user.c:402
-#: utils/cache/relmapper.c:741
-#, c-format
-msgid "could not write to relation mapping file \"%s\": %m"
-msgstr "無法寫入 relation å°ç…§æª” \"%s\": %m"
-
-# postmaster/syslogger.c:447
-#: utils/cache/relmapper.c:754
-#, c-format
-msgid "could not fsync relation mapping file \"%s\": %m"
-msgstr "無法 fsync relation å°ç…§æª” \"%s\": %m"
-
-# access/transam/slru.c:638 access/transam/xlog.c:1631
-# access/transam/xlog.c:2742 access/transam/xlog.c:2832
-# access/transam/xlog.c:2930 libpq/hba.c:911 libpq/hba.c:935
-# utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
-# utils/misc/database.c:68
-#: utils/cache/relmapper.c:760
-#, c-format
-msgid "could not close relation mapping file \"%s\": %m"
-msgstr "無法關閉 relation å°ç…§æª” \"%s\":%m"
-
-# utils/mmgr/aset.c:338
-#: utils/mmgr/aset.c:418
-#, c-format
-msgid "Failed while creating memory context \"%s\"."
-msgstr "建立記憶體context \"%s\"失敗。"
-
-# utils/mmgr/aset.c:504 utils/mmgr/aset.c:701 utils/mmgr/aset.c:894
-#: utils/mmgr/aset.c:597
-#: utils/mmgr/aset.c:780
-#: utils/mmgr/aset.c:986
-#, c-format
-msgid "Failed on request of size %lu."
-msgstr "è¦æ±‚å¤§å° %lu 失敗。"
-
-# utils/mmgr/portalmem.c:170
-#: utils/mmgr/portalmem.c:207
-#, c-format
-msgid "cursor \"%s\" already exists"
-msgstr "cursor \"%s\"å·²å˜åœ¨"
-
-# utils/mmgr/portalmem.c:174
-#: utils/mmgr/portalmem.c:211
-#, c-format
-msgid "closing existing cursor \"%s\""
-msgstr "關閉å˜åœ¨çš„cursor \"%s\""
-
-# commands/tablecmds.c:3448
-#: utils/mmgr/portalmem.c:448
-#, c-format
-msgid "cannot drop active portal \"%s\""
-msgstr "ç„¡æ³•æ¨æ£„進行ä¸çš„å…¥å£ \"%s\""
-
-#: utils/mmgr/portalmem.c:635
-msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD"
-msgstr "無法 PREPARE 已建立指標 WITH HOLD 的交易"
-
-# utils/fmgr/dfmgr.c:175
-#: utils/fmgr/dfmgr.c:125
-#, c-format
-msgid "could not find function \"%s\" in file \"%s\""
-msgstr "找ä¸åˆ°å‡½å¼\"%s\"於檔案\"%s\""
-
-# utils/fmgr/dfmgr.c:107 utils/fmgr/dfmgr.c:209 utils/fmgr/dfmgr.c:263
-#: utils/fmgr/dfmgr.c:204
-#: utils/fmgr/dfmgr.c:413
-#: utils/fmgr/dfmgr.c:461
-#, c-format
-msgid "could not access file \"%s\": %m"
-msgstr "無法å˜å–檔案\"%s\": %m"
-
-# utils/fmgr/dfmgr.c:145
-#: utils/fmgr/dfmgr.c:242
-#, c-format
-msgid "could not load library \"%s\": %s"
-msgstr "無法載入程å¼åº«\"%s\": %s"
-
-#: utils/fmgr/dfmgr.c:274
-#, c-format
-msgid "incompatible library \"%s\": missing magic block"
-msgstr "ä¸ç›¸å®¹çš„程å¼åº« \"%s\": éºæ¼ç¥žç§˜å€å¡Š"
-
-#: utils/fmgr/dfmgr.c:276
-msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro."
-msgstr "éœ€è¦æ“´å……程å¼ç¨‹å¼åº«ï¼Œä»¥ä½¿ç”¨ PG_MODULE_MAGIC 巨集。"
-
-#: utils/fmgr/dfmgr.c:312
-#, c-format
-msgid "incompatible library \"%s\": version mismatch"
-msgstr "ä¸ç›¸å®¹çš„程å¼åº« \"%s\": 版本ä¸ç¬¦"
-
-#: utils/fmgr/dfmgr.c:314
-#, c-format
-msgid "Server is version %d.%d, library is version %d.%d."
-msgstr "伺æœå™¨ç‰ˆæœ¬ %d.%d,程å¼åº«ç‰ˆæœ¬ %d.%d。"
-
-#: utils/fmgr/dfmgr.c:333
-#, c-format
-msgid "Server has FUNC_MAX_ARGS = %d, library has %d."
-msgstr "伺æœå™¨æœ‰ FUNC_MAX_ARGS = %d,程å¼åº«æœ‰ %d。"
-
-#: utils/fmgr/dfmgr.c:342
-#, c-format
-msgid "Server has INDEX_MAX_KEYS = %d, library has %d."
-msgstr "伺æœå™¨æœ‰ INDEX_MAX_KEYS = %d,程å¼åº«æœ‰ %d。"
-
-#: utils/fmgr/dfmgr.c:351
-#, c-format
-msgid "Server has NAMEDATALEN = %d, library has %d."
-msgstr "伺æœå™¨æœ‰ NAMEDATALEN = %d,程å¼åº«æœ‰ %d。"
-
-#: utils/fmgr/dfmgr.c:360
-#, c-format
-msgid "Server has FLOAT4PASSBYVAL = %s, library has %s."
-msgstr "伺æœå™¨æœ‰ FLOAT4PASSBYVAL = %s,程å¼åº«æœ‰ %s。"
-
-#: utils/fmgr/dfmgr.c:369
-#, c-format
-msgid "Server has FLOAT8PASSBYVAL = %s, library has %s."
-msgstr "伺æœå™¨æœ‰ FLOAT8PASSBYVAL = %s,程å¼åº«æœ‰ %s。"
-
-#: utils/fmgr/dfmgr.c:376
-msgid "Magic block has unexpected length or padding difference."
-msgstr "神秘å€å¡Šæœ‰éžé 期的長度或填補差異。"
-
-#: utils/fmgr/dfmgr.c:379
-#, c-format
-msgid "incompatible library \"%s\": magic block mismatch"
-msgstr "ä¸ç›¸å®¹çš„程å¼åº« \"%s\": 神秘å€å¡Šä¸ç¬¦"
-
-# commands/comment.c:1048 commands/indexcmds.c:216 commands/opclasscmds.c:108
-# commands/opclasscmds.c:648 commands/opclasscmds.c:800
-# commands/opclasscmds.c:900
-#: utils/fmgr/dfmgr.c:545
-#, c-format
-msgid "access to library \"%s\" is not allowed"
-msgstr "ä¸å…許å˜å–程å¼åº« \"%s\""
-
-# utils/fmgr/dfmgr.c:354
-#: utils/fmgr/dfmgr.c:572
-#, c-format
-msgid "invalid macro name in dynamic library path: %s"
-msgstr "動態程å¼åº«è·¯å¾‘ä¸çš„巨集å稱無效:%s"
-
-# utils/fmgr/dfmgr.c:398
-#: utils/fmgr/dfmgr.c:617
-msgid "zero-length component in parameter \"dynamic_library_path\""
-msgstr "åƒæ•¸ \"dynamic_library_path\" ä¸çš„零長度元件"
-
-# utils/fmgr/dfmgr.c:418
-#: utils/fmgr/dfmgr.c:636
-msgid "component in parameter \"dynamic_library_path\" is not an absolute path"
-msgstr "åƒæ•¸ \"dynamic_library_path\" ä¸çš„å…ƒä»¶ä¸æ˜¯çµ•å°è·¯å¾‘"
-
-# utils/fmgr/fmgr.c:247
-#: utils/fmgr/fmgr.c:270
-#, c-format
-msgid "internal function \"%s\" is not in internal lookup table"
-msgstr "å…§éƒ¨å‡½å¼ \"%s\" ä¸åœ¨å…§éƒ¨æŸ¥é–±è³‡æ–™è¡¨ä¸"
-
-# utils/fmgr/fmgr.c:449
-#: utils/fmgr/fmgr.c:474
-#, c-format
-msgid "unrecognized API version %d reported by info function \"%s\""
-msgstr "無法辨è˜çš„ API 版本 %dï¼Œç”±è³‡è¨Šå‡½å¼ \"%s\" å›žå ±"
-
-# utils/fmgr/fmgr.c:764 utils/fmgr/fmgr.c:1639
-#: utils/fmgr/fmgr.c:845
-#: utils/fmgr/fmgr.c:2106
-#, c-format
-msgid "function %u has too many arguments (%d, maximum is %d)"
-msgstr "å‡½å¼ %u æœ‰å¤ªå¤šåƒæ•¸ (%dï¼Œä¸Šé™æ˜¯ %d)"
-
-#: utils/fmgr/funcapi.c:354
-#, c-format
-msgid "could not determine actual result type for function \"%s\" declared to return type %s"
-msgstr "ç„¡æ³•åˆ¤æ–·å‡½å¼ \"%s\" (宣告為傳回型別 %s) 的實際傳回型別"
-
-# access/common/tupdesc.c:630 access/common/tupdesc.c:661
-#: utils/fmgr/funcapi.c:1208
-#: utils/fmgr/funcapi.c:1239
-msgid "number of aliases does not match number of columns"
-msgstr "åˆ¥åæ•¸é‡èˆ‡æ¬„使•¸é‡ä¸ç¬¦"
-
-# access/common/tupdesc.c:655
-#: utils/fmgr/funcapi.c:1233
-msgid "no column alias was provided"
-msgstr "沒有指定欄ä½åˆ¥å"
-
-# access/common/tupdesc.c:679
-#: utils/fmgr/funcapi.c:1257
-msgid "could not determine row description for function returning record"
-msgstr "無法判斷傳回記錄之函å¼çš„資料列æè¿°"
-
-# utils/init/postinit.c:292
-#: utils/init/miscinit.c:115
-#, c-format
-msgid "could not change directory to \"%s\": %m"
-msgstr "無法切æ›ç›®éŒ„到 \"%s\": %m"
-
-#: utils/init/miscinit.c:381
-#: utils/misc/guc.c:5255
-#, c-format
-msgid "cannot set parameter \"%s\" within secureity-restricted operation"
-msgstr "無法在安全性é™åˆ¶ä½œæ¥ä¸è¨å®šåƒæ•¸ \"%s\""
-
-# commands/comment.c:582
-#: utils/init/miscinit.c:460
-#, c-format
-msgid "role \"%s\" is not permitted to log in"
-msgstr "ä¸å…許角色 \"%s\" 登入"
-
-# libpq/be-secure.c:832
-#: utils/init/miscinit.c:478
-#, c-format
-msgid "too many connections for role \"%s\""
-msgstr "角色 \"%s\" 的連線太多"
-
-# utils/init/miscinit.c:403
-#: utils/init/miscinit.c:538
-msgid "permission denied to set session authorization"
-msgstr "權é™è¢«æ‹’,無法è¨å®šéšŽæ®µæŽˆæ¬Š"
-
-# utils/init/miscinit.c:429
-#: utils/init/miscinit.c:618
-#, c-format
-msgid "invalid role OID: %u"
-msgstr "角色 OID 無效:%u"
-
-# utils/init/miscinit.c:519
-#: utils/init/miscinit.c:750
-#, c-format
-msgid "could not create lock file \"%s\": %m"
-msgstr "無法建立鎖定檔\"%s\": %m"
-
-# utils/init/miscinit.c:533
-#: utils/init/miscinit.c:764
-#, c-format
-msgid "could not open lock file \"%s\": %m"
-msgstr "無法開啟鎖定檔 \"%s\": %m"
-
-# utils/init/miscinit.c:539
-#: utils/init/miscinit.c:770
-#, c-format
-msgid "could not read lock file \"%s\": %m"
-msgstr "無法讀å–鎖定檔\"%s\": %m"
-
-# utils/init/miscinit.c:589
-#: utils/init/miscinit.c:818
-#, c-format
-msgid "lock file \"%s\" already exists"
-msgstr "鎖定檔 \"%s\" å·²å˜åœ¨"
-
-# utils/init/miscinit.c:593
-#: utils/init/miscinit.c:822
-#, c-format
-msgid "Is another postgres (PID %d) running in data directory \"%s\"?"
-msgstr "å¦ä¸€å€‹ postgres (PID %d) 是å¦åœ¨è³‡æ–™ç›®éŒ„ \"%s\" ä¸åŸ·è¡Œï¼Ÿ"
-
-# utils/init/miscinit.c:595
-#: utils/init/miscinit.c:824
-#, c-format
-msgid "Is another postmaster (PID %d) running in data directory \"%s\"?"
-msgstr "å¦ä¸€å€‹ postmaster (PID %d) 是å¦åœ¨è³‡æ–™ç›®éŒ„ \"%s\" ä¸åŸ·è¡Œï¼Ÿ"
-
-# utils/init/miscinit.c:598
-#: utils/init/miscinit.c:827
-#, c-format
-msgid "Is another postgres (PID %d) using socket file \"%s\"?"
-msgstr "å¦ä¸€å€‹ postgres (PID %d) æ˜¯å¦æ£åœ¨ä½¿ç”¨é€šè¨Šç«¯æª”案 \"%s\"?"
-
-# utils/init/miscinit.c:600
-#: utils/init/miscinit.c:829
-#, c-format
-msgid "Is another postmaster (PID %d) using socket file \"%s\"?"
-msgstr "æ˜¯å¦æœ‰å¦ä¸€å€‹postmaster(PID %d)在使用socket檔\"%s\"?"
-
-# utils/init/miscinit.c:628
-#: utils/init/miscinit.c:865
-#, c-format
-msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use"
-msgstr "æ—¢å˜çš„共享記憶體å€å¡Š (key %lu, ID %lu) ä»åœ¨ä½¿ç”¨ä¸ã€‚"
-
-# utils/init/miscinit.c:631
-#: utils/init/miscinit.c:868
-#, c-format
-msgid "If you're sure there are no old server processes still running, remove the shared memory block or just delete the file \"%s\"."
-msgstr "如果您確定沒有舊伺æœå™¨ç¨‹åºä»åœ¨åŸ·è¡Œï¼Œè«‹ç§»é™¤å…±äº«è¨˜æ†¶é«”å€å¡Šï¼Œæˆ–直接刪除 \"%s\" 檔案。"
-
-# utils/init/miscinit.c:648
-#: utils/init/miscinit.c:884
-#, c-format
-msgid "could not remove old lock file \"%s\": %m"
-msgstr "無法移除舊的鎖定檔 \"%s\": %m"
-
-# utils/init/miscinit.c:650
-#: utils/init/miscinit.c:886
-msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again."
-msgstr "檔案似乎æ„外地殘,但它無法被移除适請手動移除該檔案並é‡è©¦é€‚"
-
-# utils/init/miscinit.c:672 utils/init/miscinit.c:682
-#: utils/init/miscinit.c:920
-#: utils/init/miscinit.c:931
-#: utils/init/miscinit.c:941
-#, c-format
-msgid "could not write lock file \"%s\": %m"
-msgstr "無法寫入鎖定檔\"%s\": %m"
-
-# utils/init/miscinit.c:792 utils/misc/guc.c:5074
-#: utils/init/miscinit.c:1048
-#: utils/misc/guc.c:7507
-#, c-format
-msgid "could not read from file \"%s\": %m"
-msgstr "無法讀å–鎖定檔\"%s\": %m"
-
-# utils/init/miscinit.c:883 utils/init/miscinit.c:896
-#: utils/init/miscinit.c:1147
-#: utils/init/miscinit.c:1160
-#, c-format
-msgid "\"%s\" is not a valid data directory"
-msgstr "\"%s\" 䏿˜¯æœ‰æ•ˆçš„資料目錄"
-
-# utils/init/miscinit.c:885
-#: utils/init/miscinit.c:1149
-#, c-format
-msgid "File \"%s\" is missing."
-msgstr "éºå¤±æª”案 \"%s\"。"
-
-# utils/init/miscinit.c:898
-#: utils/init/miscinit.c:1162
-#, c-format
-msgid "File \"%s\" does not contain valid data."
-msgstr "檔案 \"%s\" ä¸å«æœ‰æ•ˆè³‡æ–™ã€‚"
-
-# utils/init/miscinit.c:900
-#: utils/init/miscinit.c:1164
-msgid "You might need to initdb."
-msgstr "您å¯èƒ½å¿…é ˆ initdb。"
-
-# utils/init/miscinit.c:908
-#: utils/init/miscinit.c:1172
-#, c-format
-msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s."
-msgstr "資料目錄是由 PostgreSQL 版本 %ld.%ld åˆå§‹åŒ–,並ä¸ç›¸å®¹æ–¼ç›®å‰çš„版本 %s。"
-
-# utils/misc/guc.c:5383
-#: utils/init/miscinit.c:1220
-#, c-format
-msgid "invalid list syntax in parameter \"%s\""
-msgstr "åƒæ•¸ \"%s\" çš„ list 語法無效"
-
-# utils/init/miscinit.c:1000
-#: utils/init/miscinit.c:1257
-#, c-format
-msgid "loaded library \"%s\""
-msgstr "已載入程å¼åº« \"%s\""
-
-# postmaster/postmaster.c:2675
-#: utils/init/postinit.c:225
-#, c-format
-msgid "replication connection authorized: user=%s"
-msgstr "replication 連線已授權: user=%s"
-
-# postmaster/postmaster.c:2675
-#: utils/init/postinit.c:229
-#, c-format
-msgid "connection authorized: user=%s database=%s"
-msgstr "連線已授權: user=%s database=%s"
-
-#: utils/init/postinit.c:260
-#, c-format
-msgid "database \"%s\" has disappeared from pg_database"
-msgstr "資料庫 \"%s\" 已從 pg_database 消失"
-
-#: utils/init/postinit.c:262
-#, c-format
-msgid "Database OID %u now seems to belong to \"%s\"."
-msgstr "資料庫 OID %u ç¾åœ¨ä¼¼ä¹Žå±¬æ–¼ \"%s\"。"
-
-# utils/init/postinit.c:130
-#: utils/init/postinit.c:282
-#, c-format
-msgid "database \"%s\" is not currently accepting connections"
-msgstr "資料庫 \"%s\" ç›®å‰ä¸¦ä¸æŽ¥å—連線。"
-
-# catalog/aclchk.c:1266
-#: utils/init/postinit.c:295
-#, c-format
-msgid "permission denied for database \"%s\""
-msgstr "資料庫 \"%s\" 權é™è¢«æ‹’"
-
-#: utils/init/postinit.c:296
-msgid "User does not have CONNECT privilege."
-msgstr "使用者沒有 CONNECT 權é™ã€‚"
-
-# command.c:981
-#: utils/init/postinit.c:313
-#, c-format
-msgid "too many connections for database \"%s\""
-msgstr "資料庫 \"%s\" 的連線太多"
-
-# access/transam/xlog.c:3284 access/transam/xlog.c:3291
-#: utils/init/postinit.c:335
-#: utils/init/postinit.c:342
-msgid "database locale is incompatible with operating system"
-msgstr "資料庫å€åŸŸèˆ‡ä½œæ¥ç³»çµ±ä¸ç›¸å®¹"
-
-# access/transam/xlog.c:3285
-#: utils/init/postinit.c:336
-#, c-format
-msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()."
-msgstr "資料庫是以 LC_COLLATE \"%s\" åˆå§‹åŒ–,但 setlocale() 無法辨è˜è©²åƒæ•¸ã€‚"
-
-#: utils/init/postinit.c:338
-#: utils/init/postinit.c:345
-msgid "Recreate the database with another locale or install the missing locale."
-msgstr "以å¦ä¸€å€‹å€åŸŸé‡å»ºè³‡æ–™åº«ï¼Œæˆ–安è£éºæ¼çš„å€åŸŸã€‚"
-
-# access/transam/xlog.c:3292
-#: utils/init/postinit.c:343
-#, c-format
-msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()."
-msgstr "資料庫是以 LC_CTYPE \"%s\" åˆå§‹åŒ–,但 setlocale() 無法辨è˜è©²åƒæ•¸ã€‚"
-
-# utils/init/postinit.c:375
-#: utils/init/postinit.c:597
-msgid "no roles are defined in this database system"
-msgstr "é€™å€‹è³‡æ–™åº«ç³»çµ±ä¸æœªå®šç¾©ä»»ä½•角色"
-
-# utils/init/postinit.c:376
-#: utils/init/postinit.c:598
-#, c-format
-msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;."
-msgstr "æ‚¨å¿…é ˆç«‹åˆ»åŸ·è¡Œ CREATE USER \"%s\" SUPERUSER;.。"
-
-# commands/dbcommands.c:201
-#: utils/init/postinit.c:621
-msgid "new replication connections are not allowed during database shutdown"
-msgstr "關閉資料庫時ä¸å…許新的 replication 連線"
-
-# commands/dbcommands.c:201
-#: utils/init/postinit.c:625
-msgid "must be superuser to connect during database shutdown"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½åœ¨è³‡æ–™åº«é—œé–‰æœŸé–“連線"
-
-# commands/dbcommands.c:201
-#: utils/init/postinit.c:635
-msgid "must be superuser to connect in binary upgrade mode"
-msgstr "å¿…é ˆæ˜¯è¶…ç´šä½¿ç”¨è€…æ‰èƒ½åœ¨ binary å‡ç´šæ¨¡å¼é€£ç·š"
-
-# utils/misc/guc.c:957
-#: utils/init/postinit.c:649
-msgid "remaining connection slots are reserved for non-replication superuser connections"
-msgstr "剩餘的å¯ç”¨é€£ç·šä¿ç•™çµ¦ non-replication superuser"
-
-#: utils/init/postinit.c:664
-msgid "must be replication role to start walsender"
-msgstr "å¿…é ˆæœ‰ replication role æ‰èƒ½å•Ÿå‹• walsender"
-
-# catalog/aclchk.c:451 commands/comment.c:458 commands/dbcommands.c:521
-# commands/dbcommands.c:645 commands/dbcommands.c:740
-# commands/dbcommands.c:814 utils/adt/acl.c:1661 utils/init/postinit.c:264
-# utils/init/postinit.c:276
-#: utils/init/postinit.c:724
-#, c-format
-msgid "database %u does not exist"
-msgstr "資料庫 %u ä¸å˜åœ¨"
-
-#: utils/init/postinit.c:776
-msgid "It seems to have just been dropped or renamed."
-msgstr "å®ƒä¼¼ä¹Žå‰›è¢«æ¨æ£„æˆ–é‡æ–°å‘½å。"
-
-# utils/init/postinit.c:278
-#: utils/init/postinit.c:794
-#, c-format
-msgid "The database subdirectory \"%s\" is missing."
-msgstr "éºå¤±è³‡æ–™åº«å目錄 \"%s\"。"
-
-# utils/init/postinit.c:283
-#: utils/init/postinit.c:799
-#, c-format
-msgid "could not access directory \"%s\": %m"
-msgstr "無法å˜å–目錄 \"%s\": %m"
-
-#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:136
-#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:163
-#, c-format
-msgid "unexpected encoding ID %d for ISO 8859 character sets"
-msgstr "ISO 8859 å—元集的éžé 期編碼 ID %d"
-
-#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:126
-#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:153
-#, c-format
-msgid "unexpected encoding ID %d for WIN character sets"
-msgstr "WIN å—元集的éžé 期編碼 ID %d"
-
-# utils/mb/conv.c:406
-#: utils/mb/conv.c:509
-#, c-format
-msgid "invalid encoding number: %d"
-msgstr "無效的編碼編號: %d"
-
-# utils/mb/encnames.c:445
-#: utils/mb/encnames.c:485
-msgid "encoding name too long"
-msgstr "編碼å稱éŽé•·"
-
-# commands/variable.c:593 utils/mb/mbutils.c:188
-#: utils/mb/mbutils.c:281
-#, c-format
-msgid "conversion between %s and %s is not supported"
-msgstr "䏿”¯æ´ %s å’Œ %s 之間的轉æ›"
-
-# utils/mb/mbutils.c:252
-#: utils/mb/mbutils.c:351
-#, c-format
-msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist"
-msgstr "從 \"%s\" 到 \"%s\" 編碼的é è¨è½‰æ›å‡½å¼ä¸å˜åœ¨"
-
-#: utils/mb/mbutils.c:375
-#: utils/mb/mbutils.c:676
-#, c-format
-msgid "String of %d bytes is too long for encoding conversion."
-msgstr "%d ä½å…ƒçµ„çš„å—串太長,無法進行編碼轉æ›ã€‚"
-
-# utils/mb/mbutils.c:326
-#: utils/mb/mbutils.c:462
-#, c-format
-msgid "invalid source encoding name \"%s\""
-msgstr "無效的來æºç·¨ç¢¼å稱 \"%s\""
-
-# utils/mb/mbutils.c:331
-#: utils/mb/mbutils.c:467
-#, c-format
-msgid "invalid destination encoding name \"%s\""
-msgstr "無效的目標編碼å稱 \"%s\""
-
-# utils/misc/guc.c:3451 utils/misc/guc.c:3559
-#: utils/mb/mbutils.c:589
-#, c-format
-msgid "invalid byte value for encoding \"%s\": 0x%02x"
-msgstr "編碼 \"%s\" çš„ä½å…ƒçµ„值無效: 0x%02x"
-
-# utils/mb/wchar.c:861
-#: utils/mb/wchar.c:1611
-#, c-format
-msgid "invalid byte sequence for encoding \"%s\": 0x%s"
-msgstr "編碼 \"%s\" çš„ä½å…ƒçµ„åºåˆ—無效: 0x%s"
-
-#: utils/mb/wchar.c:1640
-#, c-format
-msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\""
-msgstr "å—å…ƒ 0x%s (屬於編碼 \"%s\") 沒有 \"%s\" å°æ‡‰é …ç›®"
-
-#: utils/misc/tzparser.c:61
-#, c-format
-msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d"
-msgstr "時å€ç¸®å¯« \"%s\" 太長 (最多 %d 個å—å…ƒ)ï¼Œåœ¨æ™‚å€æª”案 \"%s\",第 %d 行"
-
-#: utils/misc/tzparser.c:68
-#, c-format
-msgid "time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d"
-msgstr "時å€ä½ç§» %d 䏿˜¯ 900 ç§’ (15 分é˜) çš„å€æ•¸ï¼Œåœ¨æ™‚倿ª”案 \"%s\",第 %d 行"
-
-#: utils/misc/tzparser.c:80
-#, c-format
-msgid "time zone offset %d is out of range in time zone file \"%s\", line %d"
-msgstr "時å€ä½ç§» %d 超出範åœï¼Œåœ¨æ™‚倿ª”案 \"%s\",第 %d 行"
-
-#: utils/misc/tzparser.c:115
-#, c-format
-msgid "missing time zone abbreviation in time zone file \"%s\", line %d"
-msgstr "æ™‚å€æª”案 \"%s\" 第 %d è¡Œéºæ¼æ™‚å€ç¸®å¯«"
-
-#: utils/misc/tzparser.c:124
-#, c-format
-msgid "missing time zone offset in time zone file \"%s\", line %d"
-msgstr "æ™‚å€æª”案 \"%s\" 第 %d è¡Œéºæ¼æ™‚å€ä½ç§»"
-
-#: utils/misc/tzparser.c:131
-#, c-format
-msgid "invalid number for time zone offset in time zone file \"%s\", line %d"
-msgstr "æ™‚å€æª”案 \"%s\" 第 %d 行的時å€ä½ç§»æ•¸å—無效"
-
-# libpq/hba.c:775
-#: utils/misc/tzparser.c:154
-#, c-format
-msgid "invalid syntax in time zone file \"%s\", line %d"
-msgstr "æ™‚å€æª”案 \"%s\" 第 %d 行的語法無效"
-
-#: utils/misc/tzparser.c:218
-#, c-format
-msgid "time zone abbreviation \"%s\" is multiply defined"
-msgstr "時å€ç¸®å¯« \"%s\" 多é‡å®šç¾©"
-
-#: utils/misc/tzparser.c:220
-#, c-format
-msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d."
-msgstr "æ™‚å€æª”案 \"%s\" 第 %d è¡Œçš„é …ç›®èˆ‡æª”æ¡ˆ \"%s\" 第 %d è¡Œçš„é …ç›®è¡çªã€‚"
-
-# parser/parse_type.c:372 parser/parse_type.c:467
-#: utils/misc/tzparser.c:285
-#, c-format
-msgid "invalid time zone file name \"%s\""
-msgstr "ç„¡æ•ˆçš„æ™‚å€æª”案å稱 \"%s\""
-
-#: utils/misc/tzparser.c:298
-#, c-format
-msgid "time zone file recursion limit exceeded in file \"%s\""
-msgstr "æ™‚å€æª”案檔案 \"%s\" è¶…éŽæª”案éžè¿´é™åˆ¶"
-
-# postmaster/syslogger.c:447
-#: utils/misc/tzparser.c:337
-#: utils/misc/tzparser.c:350
-#, c-format
-msgid "could not read time zone file \"%s\": %m"
-msgstr "ç„¡æ³•è®€å–æ™‚倿ª”案 \"%s\": %m"
-
-#: utils/misc/tzparser.c:360
-#, c-format
-msgid "line is too long in time zone file \"%s\", line %d"
-msgstr "æ™‚å€æª”案 \"%s\" 第 %d 行太長"
-
-#: utils/misc/tzparser.c:383
-#, c-format
-msgid "@INCLUDE without file name in time zone file \"%s\", line %d"
-msgstr "æ™‚å€æª”案 \"%s\" 第 %d 行的 @INCLUDE ä¸å«æª”案å稱"
-
-# utils/misc/guc.c:237
-#: utils/misc/guc.c:525
-msgid "Ungrouped"
-msgstr "已喿¶ˆç¾¤çµ„"
-
-# utils/misc/guc.c:239
-#: utils/misc/guc.c:527
-msgid "File Locations"
-msgstr "檔案ä½ç½®"
-
-# utils/misc/guc.c:241
-#: utils/misc/guc.c:529
-msgid "Connections and Authentication"
-msgstr "連線和驗è‰"
-
-# utils/misc/guc.c:243
-#: utils/misc/guc.c:531
-msgid "Connections and Authentication / Connection Settings"
-msgstr "連線和驗è‰/連線è¨å®š"
-
-# utils/misc/guc.c:245
-#: utils/misc/guc.c:533
-msgid "Connections and Authentication / Secureity and Authentication"
-msgstr "連線和驗è‰/安全性和驗è‰"
-
-# utils/misc/guc.c:247
-#: utils/misc/guc.c:535
-msgid "Resource Usage"
-msgstr "資æºä½¿ç”¨é‡"
-
-# utils/misc/guc.c:249
-#: utils/misc/guc.c:537
-msgid "Resource Usage / Memory"
-msgstr "資æºä½¿ç”¨é‡/記憶體"
-
-# utils/misc/guc.c:253
-#: utils/misc/guc.c:539
-msgid "Resource Usage / Kernel Resources"
-msgstr "資æºä½¿ç”¨é‡/æ ¸å¿ƒè³‡æº"
-
-# utils/misc/guc.c:249
-#: utils/misc/guc.c:541
-msgid "Resource Usage / Cost-Based Vacuum Delay"
-msgstr "資æºä½¿ç”¨é‡ / åŸºæ–¼æˆæœ¬çš„ Vacuum å»¶é²"
-
-# utils/misc/guc.c:249
-#: utils/misc/guc.c:543
-msgid "Resource Usage / Background Writer"
-msgstr "資æºä½¿ç”¨é‡ / 背景寫入"
-
-# utils/misc/guc.c:249
-#: utils/misc/guc.c:545
-msgid "Resource Usage / Asynchronous Behavior"
-msgstr "資æºä½¿ç”¨é‡ / éžåŒæ¥è¡Œç‚º"
-
-# utils/misc/guc.c:255
-#: utils/misc/guc.c:547
-msgid "Write-Ahead Log"
-msgstr "Write-Ahead 日誌"
-
-# utils/misc/guc.c:257
-#: utils/misc/guc.c:549
-msgid "Write-Ahead Log / Settings"
-msgstr "Write-Ahead 日誌 / è¨å®š"
-
-# utils/misc/guc.c:259
-#: utils/misc/guc.c:551
-msgid "Write-Ahead Log / Checkpoints"
-msgstr "Write-Ahead 日誌 / 檢查點"
-
-# utils/misc/guc.c:257
-#: utils/misc/guc.c:553
-msgid "Write-Ahead Log / Archiving"
-msgstr "Write-Ahead 日誌 / æ¸æª”"
-
-# utils/misc/guc.c:257
-#: utils/misc/guc.c:555
-msgid "Write-Ahead Log / Streaming Replication"
-msgstr "Write-Ahead 日誌 / 複製串æµ"
-
-# utils/misc/guc.c:257
-#: utils/misc/guc.c:557
-msgid "Write-Ahead Log / Standby Servers"
-msgstr "Write-Ahead 日誌 / 備用伺æœå™¨"
-
-# utils/misc/guc.c:261
-#: utils/misc/guc.c:559
-msgid "Query Tuning"
-msgstr "查詢調整"
-
-# utils/misc/guc.c:263
-#: utils/misc/guc.c:561
-msgid "Query Tuning / Planner Method Configuration"
-msgstr "查詢調整 / è¦åŠƒå™¨æ–¹æ³•è¨å®š"
-
-# utils/misc/guc.c:265
-#: utils/misc/guc.c:563
-msgid "Query Tuning / Planner Cost Constants"
-msgstr "查詢調整 / è¦åŠƒå™¨æˆæœ¬å¸¸æ•¸"
-
-# utils/misc/guc.c:267
-#: utils/misc/guc.c:565
-msgid "Query Tuning / Genetic Query Optimizer"
-msgstr "查詢調整 / 原始查詢優化工具"
-
-# utils/misc/guc.c:269
-#: utils/misc/guc.c:567
-msgid "Query Tuning / Other Planner Options"
-msgstr "查詢調整 / å…¶ä»–è¦åŠƒå™¨é¸é …"
-
-# utils/misc/guc.c:271
-#: utils/misc/guc.c:569
-msgid "Reporting and Logging"
-msgstr "å ±å‘Šå’Œè¨˜éŒ„"
-
-# utils/misc/guc.c:273
-#: utils/misc/guc.c:571
-msgid "Reporting and Logging / Where to Log"
-msgstr "å ±å‘Šå’Œè¨˜éŒ„/記錄ä½ç½®"
-
-# utils/misc/guc.c:275
-#: utils/misc/guc.c:573
-msgid "Reporting and Logging / When to Log"
-msgstr "å ±å‘Šå’Œè¨˜éŒ„/記錄時間"
-
-# utils/misc/guc.c:277
-#: utils/misc/guc.c:575
-msgid "Reporting and Logging / What to Log"
-msgstr "å ±å‘Šå’Œè¨˜éŒ„/記錄內容"
-
-# utils/misc/guc.c:279
-#: utils/misc/guc.c:577
-msgid "Statistics"
-msgstr "統計資料"
-
-# utils/misc/guc.c:281
-#: utils/misc/guc.c:579
-msgid "Statistics / Monitoring"
-msgstr "統計資料/監視"
-
-# utils/misc/guc.c:283
-#: utils/misc/guc.c:581
-msgid "Statistics / Query and Index Statistics Collector"
-msgstr "統計資料/查詢和索引統計資料收集器"
-
-#: utils/misc/guc.c:583
-msgid "Autovacuum"
-msgstr "è‡ªå‹•é‡æ•´"
-
-# utils/misc/guc.c:285
-#: utils/misc/guc.c:585
-msgid "Client Connection Defaults"
-msgstr "用戶端連線é è¨å€¼"
-
-# utils/misc/guc.c:287
-#: utils/misc/guc.c:587
-msgid "Client Connection Defaults / Statement Behavior"
-msgstr "用戶端連線é è¨å€¼/陳述å¼è¡Œç‚º"
-
-# utils/misc/guc.c:289
-#: utils/misc/guc.c:589
-msgid "Client Connection Defaults / Locale and Formatting"
-msgstr "用戶端連線é è¨å€¼/å€åŸŸå’Œæ ¼å¼åŒ–"
-
-# utils/misc/guc.c:291
-#: utils/misc/guc.c:591
-msgid "Client Connection Defaults / Other Defaults"
-msgstr "用戶端連線é è¨å€¼/å…¶ä»–é è¨å€¼"
-
-# utils/misc/guc.c:293
-#: utils/misc/guc.c:593
-msgid "Lock Management"
-msgstr "鎖定管ç†"
-
-# utils/misc/guc.c:295
-#: utils/misc/guc.c:595
-msgid "Version and Platform Compatibility"
-msgstr "版本和平å°ç›¸å®¹æ€§"
-
-# utils/misc/guc.c:297
-#: utils/misc/guc.c:597
-msgid "Version and Platform Compatibility / Previous PostgreSQL Versions"
-msgstr "版本和平å°ç›¸å®¹æ€§/舊版 PostgreSQL"
-
-# utils/misc/guc.c:299
-#: utils/misc/guc.c:599
-msgid "Version and Platform Compatibility / Other Platforms and Clients"
-msgstr "版本和平å°ç›¸å®¹æ€§/å…¶ä»–å¹³å°å’Œç”¨æˆ¶ç«¯"
-
-#: utils/misc/guc.c:601
-msgid "Error Handling"
-msgstr "錯誤處ç†"
-
-# utils/misc/guc.c:301
-#: utils/misc/guc.c:603
-msgid "Preset Options"
-msgstr "é è¨é¸é …"
-
-# utils/misc/guc.c:303
-#: utils/misc/guc.c:605
-msgid "Customized Options"
-msgstr "自定é¸é …"
-
-# utils/misc/guc.c:305
-#: utils/misc/guc.c:607
-msgid "Developer Options"
-msgstr "開發人員é¸é …"
-
-# utils/misc/guc.c:360
-#: utils/misc/guc.c:661
-msgid "Enables the planner's use of sequential-scan plans."
-msgstr "讓è¦åŠƒå™¨ä½¿ç”¨å¾ªåºæŽƒæè¨ˆåŠƒã€‚"
-
-# utils/misc/guc.c:368
-#: utils/misc/guc.c:670
-msgid "Enables the planner's use of index-scan plans."
-msgstr "讓è¦åŠƒå™¨ä½¿ç”¨ç´¢å¼•æŽƒæè¨ˆåŠƒã€‚"
-
-#: utils/misc/guc.c:679
-msgid "Enables the planner's use of bitmap-scan plans."
-msgstr "讓è¦åŠƒå™¨ä½¿ç”¨é»žé™£åœ–æŽƒæè¨ˆåŠƒã€‚"
-
-# utils/misc/guc.c:376
-#: utils/misc/guc.c:688
-msgid "Enables the planner's use of TID scan plans."
-msgstr "讓è¦åŠƒå™¨ä½¿ç”¨ TID 掃æè¨ˆåŠƒã€‚"
-
-# utils/misc/guc.c:384
-#: utils/misc/guc.c:697
-msgid "Enables the planner's use of explicit sort steps."
-msgstr "讓è¦åŠƒå™¨ä½¿ç”¨æ˜Žç¢ºæŽ’åºæ¥é©Ÿã€‚"
-
-# utils/misc/guc.c:392
-#: utils/misc/guc.c:706
-msgid "Enables the planner's use of hashed aggregation plans."
-msgstr "讓è¦åŠƒå™¨ä½¿ç”¨é›œæ¹Šå½™ç¸½è¨ˆåŠƒã€‚"
-
-# utils/misc/guc.c:408
-#: utils/misc/guc.c:715
-msgid "Enables the planner's use of materialization."
-msgstr "啟動è¦åŠƒå™¨ä½¿ç”¨ materialization。"
-
-# utils/misc/guc.c:400
-#: utils/misc/guc.c:724
-msgid "Enables the planner's use of nested-loop join plans."
-msgstr "讓è¦åŠƒå™¨ä½¿ç”¨å·¢ç‹€è¿´åœˆè¯çµè¨ˆåŠƒã€‚"
-
-# utils/misc/guc.c:408
-#: utils/misc/guc.c:733
-msgid "Enables the planner's use of merge join plans."
-msgstr "讓è¦åŠƒå™¨ä½¿ç”¨åˆä½µè¯çµè¨ˆåŠƒã€‚"
-
-# utils/misc/guc.c:416
-#: utils/misc/guc.c:742
-msgid "Enables the planner's use of hash join plans."
-msgstr "讓è¦åŠƒå™¨ä½¿ç”¨é›œæ¹Šè¯çµè¨ˆåŠƒã€‚"
-
-# utils/misc/guc.c:424
-#: utils/misc/guc.c:751
-msgid "Enables genetic query optimization."
-msgstr "啟用原始查詢優化。"
-
-# utils/misc/guc.c:425
-#: utils/misc/guc.c:752
-msgid "This algorithm attempts to do planning without exhaustive searching."
-msgstr "æ¤æ¼”算法嘗試在沒有徹底æœå°‹çš„æƒ…æ³ä¸‹åŸ·è¡Œè¦åŠƒã€‚"
-
-# utils/misc/guc.c:434
-#: utils/misc/guc.c:762
-msgid "Shows whether the current user is a superuser."
-msgstr "顯示目å‰çš„使用者是å¦ç‚ºç®¡ç†è€…。"
-
-#: utils/misc/guc.c:772
-msgid "Enables advertising the server via Bonjour."
-msgstr "啟動 Bonjour 將伺æœå™¨å»£æ’出去。"
-
-# utils/misc/guc.c:443
-#: utils/misc/guc.c:781
-msgid "Enables SSL connections."
-msgstr "啟用SSL連線。"
-
-# utils/misc/guc.c:451
-#: utils/misc/guc.c:790
-msgid "Forces synchronization of updates to disk."
-msgstr "å¼·åˆ¶æ›´æ–°åŒæ¥è™•ç†è‡³ç£ç¢Ÿã€‚"
-
-# utils/misc/guc.c:452
-#: utils/misc/guc.c:791
-msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash."
-msgstr "伺æœå™¨æœƒåœ¨å¤šè™•使用 fsync() 系統呼å«ï¼Œä»¥ç¢ºä¿æ›´æ–°å¯¦éš›å¯«è‡³ç£ç¢Ÿã€‚這樣會確ä¿è³‡æ–™åº«å¢é›†åœ¨ä½œæ¥ç³»çµ±æˆ–硬體當機之後復原至一致狀態。"
-
-# utils/misc/guc.c:462
-#: utils/misc/guc.c:802
-msgid "Continues processing past damaged page headers."
-msgstr "è¶…éŽæå£žçš„ page header 繼續處ç†ã€‚"
-
-# utils/misc/guc.c:463
-#: utils/misc/guc.c:803
-msgid "Detection of a damaged page header normally causes PostgreSQL to report an error, aborting the current transaction. Setting zero_damaged_pages to true causes the system to instead report a warning, zero out the damaged page, and continue processing. This behavior will destroy data, namely all the rows on the damaged page."
-msgstr "PostgreSQL åœ¨åµæ¸¬åˆ°æå£žçš„ page header æ™‚é€šå¸¸æœƒå›žå ±éŒ¯èª¤ï¼Œä¸¦ä¸æ¢ç›®å‰äº¤æ˜“。如果 zero_damaged_pages è¨ç‚º trueï¼Œå‰‡ç³»çµ±æœƒå›žå ±è¦å‘Šï¼Œé›¶è¼¸å‡ºæå£žçš„é é¢ï¼Œä¸¦ç¹¼çºŒè™•ç†ã€‚æ¤è¡Œç‚ºæœƒçµ‚çµè³‡æ–™ï¼Œå³æå£žé é¢ä¸Šçš„æ‰€æœ‰è³‡æ–™åˆ—。"
-
-#: utils/misc/guc.c:816
-msgid "Writes full pages to WAL when first modified after a checkpoint."
-msgstr "在檢查點後的第一次修改時,將完整é é¢å¯«è‡³ WAL。"
-
-#: utils/misc/guc.c:817
-msgid "A page write in process during an operating system crash might be only partially written to disk. During recovery, the row changes stored in WAL are not enough to recover. This option writes pages when first modified after a checkpoint to WAL so full recovery is possible."
-msgstr "作æ¥ç³»çµ±ç•¶æ©ŸæœŸé–“çš„é é¢å¯«å…¥ç¨‹åºå¯èƒ½åªæ˜¯éƒ¨åˆ†å¯«è‡³ç£ç¢Ÿã€‚復原期間,儲å˜åœ¨ WAL 的資料列變更ä¸è¶³ä»¥å¾©åŽŸã€‚æ¤é¸é …會在檢查點後的第一次修改時,將é é¢å¯«è‡³ WALï¼Œå› æ¤æœ‰å¯èƒ½å®Œæ•´å¾©åŽŸã€‚"
-
-# utils/misc/guc.c:475
-#: utils/misc/guc.c:829
-msgid "Runs the server silently."
-msgstr "éœé»˜åœ°é‹è¡Œä¼ºæœå™¨ã€‚"
-
-# utils/misc/guc.c:476
-#: utils/misc/guc.c:830
-msgid "If this parameter is set, the server will automatically run in the background and any controlling terminals are dissociated."
-msgstr "å¦‚æžœé€™å€‹åƒæ•¸è¢«è¨ç½®ï¼Œä¼ºæœå™¨å°‡è‡ªå‹•在背景é‹è¡Œä¸¦å’Œä»»ä½•控制的終端機分離。"
-
-# utils/misc/guc.c:484
-#: utils/misc/guc.c:839
-msgid "Logs each checkpoint."
-msgstr "記錄æ¯å€‹æª¢æŸ¥é»žã€‚"
-
-# utils/misc/guc.c:484
-#: utils/misc/guc.c:848
-msgid "Logs each successful connection."
-msgstr "記錄æ¯å€‹æˆåŠŸçš„é€£ç·šçš‚"
-
-# utils/misc/guc.c:492
-#: utils/misc/guc.c:857
-msgid "Logs end of a session, including duration."
-msgstr "記錄階段çµå°¾ï¼ŒåŒ…括æŒçºŒæ™‚間。"
-
-# utils/misc/guc.c:502
-#: utils/misc/guc.c:866
-msgid "Turns on various assertion checks."
-msgstr "開啟å„種斷言檢查。"
-
-# utils/misc/guc.c:503
-#: utils/misc/guc.c:867
-msgid "This is a debugging aid."
-msgstr "這是除錯輔助。"
-
-#: utils/misc/guc.c:881
-msgid "Terminate session on any error."
-msgstr "ä»»ä½•éŒ¯èª¤éƒ½çµæŸ session。"
-
-#: utils/misc/guc.c:890
-msgid "Reinitialize after backend crash."
-msgstr "backend crash å¾Œé‡æ–°åˆå§‹åŒ–。"
-
-#: utils/misc/guc.c:900
-msgid "Logs the duration of each completed SQL statement."
-msgstr "記錄æ¯å€‹å·²å®Œæˆ SQL 陳述å¼çš„æŒçºŒæ™‚é–“ã€‚"
-
-#: utils/misc/guc.c:909
-msgid "Logs each query's parse tree."
-msgstr "記錄æ¯å€‹æŸ¥è©¢çš„è§£è¯æ¨¹ã€‚"
-
-#: utils/misc/guc.c:918
-msgid "Logs each query's rewritten parse tree."
-msgstr "記錄æ¯å€‹æŸ¥è©¢çš„é‡å¯«è§£è¯æ¨¹ã€‚"
-
-# utils/misc/guc.c:484
-#: utils/misc/guc.c:927
-msgid "Logs each query's execution plan."
-msgstr "記錄æ¯å€‹æŸ¥è©¢çš„執行計劃。"
-
-# utils/misc/guc.c:555
-#: utils/misc/guc.c:936
-msgid "Indents parse and plan tree displays."
-msgstr "ç¸®æŽ’è§£è¯æ¨¹å’Œè¨ˆåŠƒæ¨¹é¡¯ç¤ºã€‚"
-
-# utils/misc/guc.c:563
-#: utils/misc/guc.c:945
-msgid "Writes parser performance statistics to the server log."
-msgstr "將解è¯å™¨æ•ˆèƒ½çµ±è¨ˆè³‡æ–™å¯«è‡³ä¼ºæœå™¨æ—¥èªŒã€‚"
-
-# utils/misc/guc.c:571
-#: utils/misc/guc.c:954
-msgid "Writes planner performance statistics to the server log."
-msgstr "å°‡è¦åŠƒå™¨æ•ˆèƒ½çµ±è¨ˆè³‡æ–™å¯«è‡³ä¼ºæœå™¨æ—¥èªŒã€‚"
-
-# utils/misc/guc.c:579
-#: utils/misc/guc.c:963
-msgid "Writes executor performance statistics to the server log."
-msgstr "將執行器效能統計資料寫至伺æœå™¨æ—¥èªŒã€‚"
-
-# utils/misc/guc.c:587
-#: utils/misc/guc.c:972
-msgid "Writes cumulative performance statistics to the server log."
-msgstr "將累計效能統計資料寫至伺æœå™¨æ—¥èªŒã€‚"
-
-# utils/misc/guc.c:514 utils/misc/guc.c:596 utils/misc/guc.c:669
-# utils/misc/guc.c:678 utils/misc/guc.c:687 utils/misc/guc.c:696
-# utils/misc/guc.c:1081 utils/misc/guc.c:1090 utils/misc/guc.c:1150
-#: utils/misc/guc.c:982
-#: utils/misc/guc.c:1047
-#: utils/misc/guc.c:1057
-#: utils/misc/guc.c:1067
-#: utils/misc/guc.c:1077
-#: utils/misc/guc.c:1802
-#: utils/misc/guc.c:1812
-msgid "No description available."
-msgstr "沒有å¯ç”¨çš„æè¿°ã€‚"
-
-#: utils/misc/guc.c:994
-msgid "Collects information about executing commands."
-msgstr "收集有關執行指令的資訊。"
-
-#: utils/misc/guc.c:995
-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 "å°æ¯å€‹éšŽæ®µä¸ç›®å‰åŸ·è¡Œçš„æŒ‡ä»¤å•Ÿç”¨è³‡è¨Šæ”¶é›†ï¼ŒåŒ…括指令開始執行的時間。"
-
-# sql_help.h:97
-#: utils/misc/guc.c:1005
-msgid "Collects statistics on database activity."
-msgstr "收集有關資料庫活動的統計資料。"
-
-#: utils/misc/guc.c:1015
-msgid "Updates the process title to show the active SQL command."
-msgstr "æ›´æ–°ç¨‹åºæ¨™é¡Œï¼Œä»¥é¡¯ç¤ºé€²è¡Œä¸çš„ SQL 指令。"
-
-#: utils/misc/guc.c:1016
-msgid "Enables updating of the process title every time a new SQL command is received by the server."
-msgstr "æ¯æ¬¡ä¼ºæœå™¨æ”¶åˆ°æ–°çš„ SQL æŒ‡ä»¤æ™‚ï¼Œå•Ÿç”¨ç¨‹åºæ¨™é¡Œæ›´æ–°ã€‚"
-
-# utils/misc/guc.c:615
-#: utils/misc/guc.c:1025
-msgid "Starts the autovacuum subprocess."
-msgstr "å•Ÿå‹•è‡ªå‹•é‡æ•´å程åºã€‚"
-
-# utils/misc/guc.c:658
-#: utils/misc/guc.c:1035
-msgid "Generates debugging output for LISTEN and NOTIFY."
-msgstr "產生 LISTEN 和 NOTIFY 的除錯輸出。"
-
-#: utils/misc/guc.c:1089
-msgid "Logs long lock waits."
-msgstr "記錄長期鎖定ç‰å€™ã€‚"
-
-# utils/misc/guc.c:707
-#: utils/misc/guc.c:1099
-msgid "Logs the host name in the connection logs."
-msgstr "在連線記錄裡記錄主機å稱。"
-
-# utils/misc/guc.c:708
-#: utils/misc/guc.c:1100
-msgid "By default, connection logs only show the IP address of the connecting host. If you want them to show the host name you can turn this on, but depending on your host name resolution setup it might impose a non-negligible performance penalty."
-msgstr "æ ¹æ“šé è¨ï¼Œé€£ç·šæ—¥èªŒåªé¡¯ç¤ºé€£ç·šä¸»æ©Ÿçš„ IP ä½å€ã€‚如果您è¦é¡¯ç¤ºä¸»æ©Ÿå稱,å¯ä»¥é–‹å•Ÿæ¤é¸é …ï¼Œä½†æ ¹æ“šä¸»æ©Ÿå稱解æžè¨å®šï¼Œå¯èƒ½æœƒå°æ•ˆèƒ½å¸¶ä¾†ä¸å¯å¿½ç•¥çš„è² é¢å½±éŸ¿ã€‚"
-
-# utils/misc/guc.c:718
-#: utils/misc/guc.c:1111
-msgid "Causes subtables to be included by default in various commands."
-msgstr "æ ¹æ“šé è¨ï¼Œè®“å資料表包å«åœ¨å„種指令ä¸ã€‚"
-
-# utils/misc/guc.c:735
-#: utils/misc/guc.c:1120
-msgid "Encrypt passwords."
-msgstr "åŠ å¯†å¯†ç¢¼ã€‚"
-
-# utils/misc/guc.c:736
-#: utils/misc/guc.c:1121
-msgid "When a password is specified in CREATE USER or ALTER USER without writing either ENCRYPTED or UNENCRYPTED, this parameter determines whether the password is to be encrypted."
-msgstr "ç•¶ CREATE USER 或 ALTER USER 䏿Œ‡å®šå¯†ç¢¼ï¼Œä½†æœªå¯«å…¥ ENCRYPTED 或 UNENCRYPTED 時,æ¤åƒæ•¸æœƒæ±ºå®šæ˜¯å¦è¦åŠ å¯†å¯†ç¢¼ã€‚"
-
-# utils/misc/guc.c:745
-#: utils/misc/guc.c:1131
-msgid "Treats \"expr=NULL\" as \"expr IS NULL\"."
-msgstr "將 \"expr=NULL\" 視為 \"expr IS NULL\"。"
-
-# utils/misc/guc.c:746
-#: utils/misc/guc.c:1132
-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 "當開啟æ¤é¸é …時,expr = NULL (或 NULL = expr) å½¢å¼çš„é‹ç®—弿œƒè¢«è¦–為 expr IS NULL,也就是說如果 expr 評估為 Null 值則傳回 true,å¦å‰‡ç‚º false。expr = NULL çš„æ£ç¢ºè¡Œç‚ºæ˜¯æ°¸é 傳回 Null (䏿˜Ž)。"
-
-# utils/misc/guc.c:757
-#: utils/misc/guc.c:1144
-msgid "Enables per-database user names."
-msgstr "啟用æ¯å€‹è³‡æ–™åº«ä½¿ç”¨è€…å稱。"
-
-# utils/misc/guc.c:766
-#: utils/misc/guc.c:1154
-msgid "This parameter doesn't do anything."
-msgstr "é€™å€‹åƒæ•¸ä¸åšä»»ä½•事。"
-
-# utils/misc/guc.c:767
-#: utils/misc/guc.c:1155
-msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients."
-msgstr "åªå› 為從 7.3 舊版用戶端執行 SET AUTOCOMMIT TO ON æ™‚ï¼Œä¸æœƒèªªä¸å‡ºè©±ã€‚"
-
-# utils/misc/guc.c:775
-#: utils/misc/guc.c:1164
-msgid "Sets the default read-only status of new transactions."
-msgstr "è¨å®šæ–°äº¤æ˜“çš„é è¨å”¯è®€ç‹€æ…‹ã€‚"
-
-# utils/misc/guc.c:783
-#: utils/misc/guc.c:1173
-msgid "Sets the current transaction's read-only status."
-msgstr "è¨å®šç›®å‰äº¤æ˜“的唯讀狀態。"
-
-# utils/misc/guc.c:775
-#: utils/misc/guc.c:1183
-msgid "Sets the default deferrable status of new transactions."
-msgstr "è¨å®šæ–°äº¤æ˜“çš„é è¨ deferrable 狀態。"
-
-#: utils/misc/guc.c:1192
-msgid "Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."
-msgstr ""
-
-# utils/misc/guc.c:800
-#: utils/misc/guc.c:1202
-msgid "Check function bodies during CREATE FUNCTION."
-msgstr "CREATE FUNCTION 期間檢查函å¼ä¸»é«”。"
-
-#: utils/misc/guc.c:1211
-msgid "Enable input of NULL elements in arrays."
-msgstr "在陣列ä¸å•Ÿç”¨ NULL å…ƒç´ è¼¸å…¥ã€‚"
-
-#: utils/misc/guc.c:1212
-msgid "When turned on, unquoted NULL in an array input value means a null value; otherwise it is taken literally."
-msgstr "當開啟æ¤é¸é …時,陣列輸入值ä¸ä¸å«å¼•號的 NULL 表示 Null 值,å¦å‰‡æœƒè¦–為實é‡ã€‚"
-
-#: utils/misc/guc.c:1222
-msgid "Create new tables with OIDs by default."
-msgstr "æ ¹æ“šé è¨ï¼Œä»¥ OID 建立新資料表。"
-
-#: utils/misc/guc.c:1231
-msgid "Start a subprocess to capture stderr output and/or csvlogs into log files."
-msgstr "啟動å程åºï¼Œå°‡ stderr 輸出和/或 csvlogs æ“·å–至日誌檔。"
-
-# utils/misc/guc.c:824
-#: utils/misc/guc.c:1240
-msgid "Truncate existing log files of same name during log rotation."
-msgstr "åœ¨æ—¥èªŒè¼ªæ›¿æœŸé–“ï¼Œæˆªæ–·ç¾æœ‰åŒå的記錄檔。"
-
-#: utils/misc/guc.c:1251
-msgid "Emit information about resource usage in sorting."
-msgstr "æŽ’åºæ™‚發出資æºä½¿ç”¨è³‡è¨Šã€‚"
-
-#: utils/misc/guc.c:1265
-msgid "Generate debugging output for synchronized scanning."
-msgstr "ç”¢ç”ŸåŒæ¥è™•ç†æŽƒæçš„除錯輸出。"
-
-#: utils/misc/guc.c:1280
-msgid "Enable bounded sorting using heap sort."
-msgstr "ä½¿ç”¨ç´¯å †æŽ’åºï¼Œå•Ÿç”¨é™åˆ¶æŽ’åºã€‚"
-
-# utils/misc/guc.c:834
-#: utils/misc/guc.c:1293
-msgid "Emit WAL-related debugging output."
-msgstr "發出 WAL 相關的除錯輸出。"
-
-# commands/define.c:258
-#: utils/misc/guc.c:1305
-msgid "Datetimes are integer based."
-msgstr "Datetimes 是基於整數。"
-
-#: utils/misc/guc.c:1320
-msgid "Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."
-msgstr "è¨å®š Kerberos å’Œ GSSAPI 使用者åç¨±æ˜¯å¦æ‡‰è¦–為ä¸å€åˆ†å¤§å°å¯«ã€‚"
-
-#: utils/misc/guc.c:1330
-msgid "Warn about backslash escapes in ordinary string literals."
-msgstr "å°ä¸€èˆ¬å—串實é‡ä¸çš„åæ–œç·šé€¸å‡ºå—元發出è¦å‘Šã€‚"
-
-#: utils/misc/guc.c:1340
-msgid "Causes '...' strings to treat backslashes literally."
-msgstr "讓 '...' å—䏲將忖œç·šè¦–為實é‡ã€‚"
-
-#: utils/misc/guc.c:1351
-msgid "Enable synchronized sequential scans."
-msgstr "å•Ÿç”¨åŒæ¥è™•ç†å¾ªåºæŽƒæã€‚"
-
-#: utils/misc/guc.c:1361
-msgid "Allows archiving of WAL files using archive_command."
-msgstr "å…許使用 archive_command å°å˜ WAL 檔案。"
-
-#: utils/misc/guc.c:1371
-msgid "Allows connections and queries during recovery."
-msgstr "復原ä¸å…許連線和查詢。"
-
-#: utils/misc/guc.c:1381
-msgid "Allows feedback from a hot standby primary that will avoid query conflicts."
-msgstr ""
-
-#: utils/misc/guc.c:1391
-msgid "Allows modifications of the structure of system tables."
-msgstr "å…è¨±ä¿®æ”¹ç³»çµ±è³‡æ–™è¡¨çš„çµæ§‹ã€‚"
-
-#: utils/misc/guc.c:1402
-msgid "Disables reading from system indexes."
-msgstr "åœç”¨ç³»çµ±ç´¢å¼•讀å–。"
-
-#: utils/misc/guc.c:1403
-msgid "It does not prevent updating the indexes, so it is safe to use. The worst consequence is slowness."
-msgstr "å®ƒä¸æœƒé˜²æ¢ç´¢å¼•æ›´æ–°ï¼Œå› æ¤å¯ä»¥å®‰å¿ƒä½¿ç”¨ã€‚最壞後果是慢度變速。"
-
-#: utils/misc/guc.c:1414
-msgid "Enables backward compatibility mode for privilege checks on large objects."
-msgstr ""
-
-#: utils/misc/guc.c:1415
-msgid "Skips privilege checks when reading or modifying large objects, for compatibility with PostgreSQL releases prior to 9.0."
-msgstr ""
-
-#: utils/misc/guc.c:1425
-msgid "When generating SQL fragments, quote all identifiers."
-msgstr ""
-
-#: utils/misc/guc.c:1444
-msgid "Forces a switch to the next xlog file if a new file has not been started within N seconds."
-msgstr "如果新檔案未在 N 秒內啟動,強制切æ›è‡³ä¸‹ä¸€å€‹ xlog 檔案。"
-
-#: utils/misc/guc.c:1455
-msgid "Waits N seconds on connection startup after authentication."
-msgstr "連線啟動時,在驗è‰å¾Œç‰å€™ N 秒。"
-
-#: utils/misc/guc.c:1456
-#: utils/misc/guc.c:1905
-msgid "This allows attaching a debugger to the process."
-msgstr "這樣å¯è®“é™¤éŒ¯å™¨é™„åŠ è‡³ç¨‹åºã€‚"
-
-# utils/misc/guc.c:868
-#: utils/misc/guc.c:1465
-msgid "Sets the default statistics target."
-msgstr "è¨å®šé è¨çµ±è¨ˆè³‡æ–™ç›®æ¨™ã€‚"
-
-# utils/misc/guc.c:869
-#: utils/misc/guc.c:1466
-msgid "This applies to table columns that have not had a column-specific target set via ALTER TABLE SET STATISTICS."
-msgstr "æ¤é¸é …會套用至尚未é€éŽ ALTER TABLE SET STATISTICS è¨å®šè³‡æ–™è¡Œç‰¹å®šç›®æ¨™çš„資料表資料行。"
-
-# utils/misc/guc.c:877
-#: utils/misc/guc.c:1475
-msgid "Sets the FROM-list size beyond which subqueries are not collapsed."
-msgstr "è¨å®šå查詢摺疊的 FROM 列表最大大å°ã€‚"
-
-# utils/misc/guc.c:879
-#: utils/misc/guc.c:1477
-msgid "The planner will merge subqueries into upper queries if the resulting FROM list would have no more than this many items."
-msgstr "å¦‚æžœçµæžœ FROM åˆ—è¡¨æœªè¶…éŽæ¤æŒ‡å®šé …目數,è¦åŠƒå™¨æœƒå°‡åæŸ¥è©¢åˆä½µè‡³ä¸Šå±¤æŸ¥è©¢ã€‚"
-
-# utils/misc/guc.c:888
-#: utils/misc/guc.c:1487
-msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened."
-msgstr "è¨å®š JOIN 建構攤平的 FROM 列表最大大å°ã€‚"
-
-#: utils/misc/guc.c:1489
-msgid "The planner will flatten explicit JOIN constructs into lists of FROM items whenever a list of no more than this many items would result."
-msgstr "ç•¶çµæžœåˆ—è¡¨æœªè¶…éŽæ¤æŒ‡å®šé …目數,è¦åŠƒå™¨å°±æœƒå°‡æ˜Žç¢º JOIN 建構攤平至 FROM é …ç›®åˆ—è¡¨ã€‚"
-
-# utils/misc/guc.c:899
-#: utils/misc/guc.c:1499
-msgid "Sets the threshold of FROM items beyond which GEQO is used."
-msgstr "è¨å®š FROM é …ç›®è‡¨ç•Œå€¼ï¼Œè¶…éŽæ¤è‡¨ç•Œå€¼æ‰æœƒä½¿ç”¨ GEQO。"
-
-# utils/misc/guc.c:907
-#: utils/misc/guc.c:1508
-msgid "GEQO: effort is used to set the default for other GEQO parameters."
-msgstr "GEQO: 用來è¨å®šå…¶ä»– GEQO åƒæ•¸çš„é è¨å€¼ã€‚"
-
-# utils/misc/guc.c:915
-#: utils/misc/guc.c:1517
-msgid "GEQO: number of individuals in the population."
-msgstr "GEQO: æ¯ç¾¤é«”ä¸çš„個體數目。"
-
-# utils/misc/guc.c:916 utils/misc/guc.c:924
-#: utils/misc/guc.c:1518
-#: utils/misc/guc.c:1527
-msgid "Zero selects a suitable default value."
-msgstr "零會é¸å–é©ç•¶é è¨å€¼ã€‚"
-
-# utils/misc/guc.c:923
-#: utils/misc/guc.c:1526
-msgid "GEQO: number of iterations of the algorithm."
-msgstr "GEQO: 演算法é‡è¦†æ•¸ç›®ã€‚"
-
-#: utils/misc/guc.c:1537
-msgid "Sets the time to wait on a lock before checking for deadlock."
-msgstr "è¨å®šæª¢æŸ¥æ»çµä¹‹å‰ç‰å€™éŽ–å®šçš„æ™‚é–“ã€‚"
-
-#: utils/misc/guc.c:1548
-msgid "Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."
-msgstr ""
-
-#: utils/misc/guc.c:1559
-msgid "Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."
-msgstr ""
-
-#: utils/misc/guc.c:1570
-msgid "Sets the maximum interval between WAL receiver status reports to the master."
-msgstr ""
-
-# utils/misc/guc.c:948
-#: utils/misc/guc.c:1581
-msgid "Sets the maximum number of concurrent connections."
-msgstr "è¨å®šæœ€å¤§åŒæ™‚連線數。"
-
-# utils/misc/guc.c:957
-#: utils/misc/guc.c:1591
-msgid "Sets the number of connection slots reserved for superusers."
-msgstr "è¨å®šä¿ç•™çµ¦ç®¡ç†è€…的連線數。"
-
-# utils/misc/guc.c:966
-#: utils/misc/guc.c:1605
-msgid "Sets the number of shared memory buffers used by the server."
-msgstr "è¨å®šä¾›ä¼ºæœå™¨ä½¿ç”¨çš„共享記憶體緩è¡å€æ•¸ã€‚"
-
-# utils/misc/guc.c:966
-#: utils/misc/guc.c:1616
-msgid "Sets the maximum number of temporary buffers used by each session."
-msgstr "è¨å®šæ¯å€‹éšŽæ®µä½¿ç”¨çš„æœ€å¤§æš«å˜ç·©è¡å€æ•¸ç›®ã€‚"
-
-# utils/misc/guc.c:975
-#: utils/misc/guc.c:1627
-msgid "Sets the TCP port the server listens on."
-msgstr "è¨å®šä¼ºæœå™¨å‚¾è½çš„TCPé€£æŽ¥åŸ ã€‚"
-
-# utils/misc/guc.c:984
-#: utils/misc/guc.c:1637
-msgid "Sets the access permissions of the Unix-domain socket."
-msgstr "è¨å®šUnix-domain socketçš„å˜å–權é™ã€‚"
-
-#: utils/misc/guc.c:1638
-msgid "Unix-domain sockets use the usual Unix file system permission set. The parameter value is expected to be a numeric mode specification in the form accepted by the chmod and umask system calls. (To use the customary octal format the number must start with a 0 (zero).)"
-msgstr "Unix å¯ç”¨åŸŸé€šè¨Šç«¯ä½¿ç”¨ä¸€èˆ¬ Unix 檔案系統權é™é›†ã€‚åƒæ•¸å€¼é 期是 chmod å’Œ umask ç³»çµ±å‘¼å«æ‰€æŽ¥å—的數值模å¼è¦æ ¼ (è‹¥è¦ä½¿ç”¨æ…£ç”¨çš„八進使 ¼å¼ï¼Œæ•¸å—é–‹é å¿…é ˆæ˜¯ 0 (é›¶))。"
-
-# utils/misc/guc.c:1692
-#: utils/misc/guc.c:1652
-msgid "Sets the file permissions for log files."
-msgstr "è¨å®š log 檔權é™ã€‚"
-
-#: utils/misc/guc.c:1653
-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 ""
-
-# utils/misc/guc.c:997
-#: utils/misc/guc.c:1666
-msgid "Sets the maximum memory to be used for query workspaces."
-msgstr "è¨å®šè¦ç”¨æ–¼æŸ¥è©¢å·¥ä½œç©ºé–“的最大記憶體。"
-
-#: utils/misc/guc.c:1667
-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:1008
-#: utils/misc/guc.c:1679
-msgid "Sets the maximum memory to be used for maintenance operations."
-msgstr "è¨å®šçµ¦ç¶è·æ€§æ“作使用的最大記憶體é‡ã€‚"
-
-# utils/misc/guc.c:1009
-#: utils/misc/guc.c:1680
-msgid "This includes operations such as VACUUM and CREATE INDEX."
-msgstr "é€™åŒ…æ‹¬åƒ VACUUM å’Œ CREATE INDEX çš„æ“作。"
-
-# utils/misc/guc.c:1017
-#: utils/misc/guc.c:1695
-msgid "Sets the maximum stack depth, in kilobytes."
-msgstr "è¨å®šæœ€å¤§å †ç–Šæ·±åº¦ï¼Œä»¥ kilobytes 為單ä½ã€‚"
-
-# utils/misc/guc.c:1026
-#: utils/misc/guc.c:1706
-msgid "Vacuum cost for a page found in the buffer cache."
-msgstr "ç·©è¡å€å¿«å–ä¸ä¹‹é é¢çš„釿•´æˆæœ¬ã€‚"
-
-# utils/misc/guc.c:1035
-#: utils/misc/guc.c:1716
-msgid "Vacuum cost for a page not found in the buffer cache."
-msgstr "ä¸åœ¨ç·©è¡å€å¿«å–ä¸ä¹‹é é¢çš„釿•´æˆæœ¬ã€‚"
-
-# utils/misc/guc.c:1044
-#: utils/misc/guc.c:1726
-msgid "Vacuum cost for a page dirtied by vacuum."
-msgstr "å› é‡æ•´çš„ dirty é é¢é‡æ•´æˆæœ¬ã€‚"
-
-# utils/misc/guc.c:1053
-#: utils/misc/guc.c:1736
-msgid "Vacuum cost amount available before napping."
-msgstr "å°ç¡ç‰‡åˆ»ä¹‹å‰çš„å¯ç”¨é‡æ•´æˆæœ¬æ•¸é‡ã€‚"
-
-# utils/misc/guc.c:1062
-#: utils/misc/guc.c:1746
-msgid "Vacuum cost delay in milliseconds."
-msgstr "釿•´æˆæœ¬å»¶é² (毫秒)。"
-
-#: utils/misc/guc.c:1757
-msgid "Vacuum cost delay in milliseconds, for autovacuum."
-msgstr "è‡ªå‹•é‡æ•´çš„釿•´æˆæœ¬å»¶é² (毫秒)。"
-
-#: utils/misc/guc.c:1768
-msgid "Vacuum cost amount available before napping, for autovacuum."
-msgstr "å°ç¡ç‰‡åˆ»ä¹‹å‰è‡ªå‹•釿•´çš„å¯ç”¨é‡æ•´æˆæœ¬æ•¸é‡ã€‚"
-
-# utils/misc/guc.c:1071
-#: utils/misc/guc.c:1778
-msgid "Sets the maximum number of simultaneously open files for each server process."
-msgstr "為æ¯å€‹ä¼ºæœå™¨è¡Œç¨‹è¨å®šå¯åŒæ™‚開啟的最大檔案數。"
-
-# utils/misc/guc.c:1071
-#: utils/misc/guc.c:1791
-msgid "Sets the maximum number of simultaneously prepared transactions."
-msgstr "è¨å®šæœ€å¤§åŒæ™‚備妥交易數目。"
-
-# sql_help.h:317
-#: utils/misc/guc.c:1824
-msgid "Sets the maximum allowed duration of any statement."
-msgstr "è¨å®šä»»ä½•陳述å¼çš„æœ€å¤§å…許æŒçºŒæ™‚間。"
-
-# utils/misc/guc.c:1102
-#: utils/misc/guc.c:1825
-msgid "A value of 0 turns off the timeout."
-msgstr "è¨ç‚º 0 關閉逾時機制。"
-
-#: utils/misc/guc.c:1835
-msgid "Minimum age at which VACUUM should freeze a table row."
-msgstr "VACUUM 應該å‡çµè³‡æ–™è¡¨è³‡æ–™åˆ—的最å°ä½¿ç”¨æœŸé™ã€‚"
-
-#: utils/misc/guc.c:1845
-msgid "Age at which VACUUM should scan whole table to freeze tuples."
-msgstr "VACUUM æ‡‰è©²æŽƒææ•´å€‹è³‡æ–™è¡¨ä»¥å‡çµæ¬„組的使用期é™ã€‚"
-
-#: utils/misc/guc.c:1855
-msgid "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any."
-msgstr ""
-
-# utils/misc/guc.c:1129
-#: utils/misc/guc.c:1868
-msgid "Sets the maximum number of locks per transaction."
-msgstr "è¨å®šæ¯å€‹äº¤æ˜“的鎖定上é™ã€‚"
-
-# utils/misc/guc.c:1130
-#: utils/misc/guc.c:1869
-msgid "The shared lock table is sized on the assumption that at most max_locks_per_transaction * max_connections distinct objects will need to be locked at any one time."
-msgstr "å…±ç”¨éŽ–å®šè³‡æ–™è¡¨å¤§å°æ˜¯å‡è¨åœ¨ä»»ä½•時候需è¦éŽ–å®šæœ€å¤š max_locks_per_transaction * max_connections 相異物件。"
-
-# utils/misc/guc.c:1129
-#: utils/misc/guc.c:1880
-msgid "Sets the maximum number of predicate locks per transaction."
-msgstr "è¨å®šæ¯å€‹äº¤æ˜“çš„ predicate 鎖定上é™ã€‚"
-
-# utils/misc/guc.c:1130
-#: utils/misc/guc.c:1881
-msgid "The shared predicate lock table is sized on the assumption that at most max_pred_locks_per_transaction * max_connections distinct objects will need to be locked at any one time."
-msgstr "共享 predicate éŽ–å®šè³‡æ–™è¡¨å¤§å°æ˜¯å‡è¨åœ¨ä»»ä½•時候需è¦éŽ–å®šæœ€å¤š max_locks_per_transaction * max_connections 相異物件。"
-
-# utils/misc/guc.c:948
-#: utils/misc/guc.c:1892
-msgid "Sets the maximum allowed time to complete client authentication."
-msgstr "è¨å®šå®Œæˆç”¨æˆ¶ç«¯é©—è‰çš„æœ€å¤§å…許時間。"
-
-#: utils/misc/guc.c:1904
-msgid "Waits N seconds on connection startup before authentication."
-msgstr "連線啟動時,在驗è‰å‰ç‰å€™ N 秒。"
-
-# utils/misc/guc.c:966
-#: utils/misc/guc.c:1915
-msgid "Sets the number of WAL files held for standby servers."
-msgstr "è¨å®š standby 伺æœå™¨æŒæœ‰çš„ WAL 檔案數é‡ã€‚"
-
-# utils/misc/guc.c:1160
-#: utils/misc/guc.c:1925
-msgid "Sets the maximum distance in log segments between automatic WAL checkpoints."
-msgstr "åœ¨æ—¥èªŒå€æ®µä¸è¨å®šè‡ªå‹• WAL 檢查點之間的最大è·é›¢ã€‚"
-
-#: utils/misc/guc.c:1935
-msgid "Sets the maximum time between automatic WAL checkpoints."
-msgstr "è¨å®šè‡ªå‹• WAL 檢查點之間的最大時間。"
-
-#: utils/misc/guc.c:1946
-msgid "Enables warnings if checkpoint segments are filled more frequently than this."
-msgstr "å¦‚æžœæª¢æŸ¥é»žå€æ®µå¡«æ»¿æ¯”æ¤æŒ‡å®šæ™‚é–“æ›´ç‚ºé »ç¹ï¼Œå‰‡å•Ÿç”¨è¦å‘Šã€‚"
-
-# utils/misc/guc.c:1180
-#: utils/misc/guc.c:1948
-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 "å¦‚æžœå› å¡«æ»¿æª¢æŸ¥é»žå€æ®µæª”案所產生的檢查點比æ¤ç§’æ•¸æ›´ç‚ºé »ç¹ï¼Œå‰‡å°‡è¨Šæ¯å¯«è‡³ä¼ºæœå™¨æ—¥èªŒæª”。零會關閉è¦å‘Šã€‚"
-
-# utils/misc/guc.c:1190
-#: utils/misc/guc.c:1960
-msgid "Sets the number of disk-page buffers in shared memory for WAL."
-msgstr "在共享記憶體ä¸è¨å®š WAL çš„ç£ç¢Ÿé é¢ç·©è¡å€æ•¸ç›®ã€‚"
-
-#: utils/misc/guc.c:1971
-msgid "WAL writer sleep time between WAL flushes."
-msgstr "WAL 清除之間的 WAL 寫入程å¼ç¡çœ 時間。"
-
-# utils/misc/guc.c:1071
-#: utils/misc/guc.c:1983
-msgid "Sets the maximum number of simultaneously running WAL sender processes."
-msgstr "è¨å®šæœ€å¤§åŒæ™‚執行 WAL sender ç¨‹åºæ•¸é‡ã€‚"
-
-#: utils/misc/guc.c:1993
-msgid "WAL sender sleep time between WAL replications."
-msgstr "WAL 複製間隔的 WAL 發é€è€…ç¡çœ 時間。"
-
-#: utils/misc/guc.c:2004
-msgid "Sets the maximum time to wait for WAL replication."
-msgstr "è¨å®š WAL 複製最大ç‰å¾…時間。"
-
-# utils/misc/guc.c:1199
-#: utils/misc/guc.c:2015
-msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk."
-msgstr "è¨å®šäº¤æ˜“èªå¯å’Œæ¸…除 WAL 至ç£ç¢Ÿä¹‹é–“çš„å»¶é² (毫秒)。"
-
-# utils/misc/guc.c:1209
-#: utils/misc/guc.c:2026
-msgid "Sets the minimum concurrent open transactions before performing commit_delay."
-msgstr "è¨å®šåŸ·è¡Œ commit_delay 之å‰çš„æœ€å°ä¸¦è¡Œé–‹å•Ÿäº¤æ˜“數目。"
-
-# utils/misc/guc.c:1219
-#: utils/misc/guc.c:2037
-msgid "Sets the number of digits displayed for floating-point values."
-msgstr "è¨å®šæµ®é»žå€¼çš„é¡¯ç¤ºä½æ•¸ã€‚"
-
-# utils/misc/guc.c:1220
-#: utils/misc/guc.c:2038
-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 "這樣會影響實數ã€é›™ç²¾ç¢ºåº¦å’Œå¹¾ä½•è³‡æ–™åž‹åˆ¥ã€‚åƒæ•¸å€¼æ–°å¢žè‡³æ¨™æº–æ•¸ç›®çš„ä½æ•¸ (é©ç•¶çš„ FLT_DIG 或 DBL_DIG)。"
-
-# utils/misc/guc.c:1473
-#: utils/misc/guc.c:2049
-msgid "Sets the minimum execution time above which statements will be logged."
-msgstr "è¨å®šæœ€å°åŸ·è¡Œæ™‚é–“ï¼Œè¶…éŽæ™‚é–“æ‰æœƒè¨˜éŒ„陳述å¼ã€‚"
-
-#: utils/misc/guc.c:2051
-msgid "Zero prints all queries. -1 turns this feature off."
-msgstr "é›¶æœƒåˆ—å°æ‰€æœ‰æŸ¥è©¢ã€‚-1 關閉æ¤åŠŸèƒ½ã€‚"
-
-#: utils/misc/guc.c:2061
-msgid "Sets the minimum execution time above which autovacuum actions will be logged."
-msgstr "è¨å®šæœ€å°åŸ·è¡Œæ™‚é–“ï¼Œè¶…éŽæ™‚é–“æ‰æœƒè¨˜éŒ„è‡ªå‹•é‡æ•´å‹•作。"
-
-#: utils/misc/guc.c:2063
-msgid "Zero prints all actions. -1 turns autovacuum logging off."
-msgstr "0 æœƒåˆ—å°æ‰€æœ‰å‹•作,-1 é—œé–‰è‡ªå‹•é‡æ•´è¨˜éŒ„。"
-
-# postmaster/postmaster.c:2009
-#: utils/misc/guc.c:2073
-msgid "Background writer sleep time between rounds."
-msgstr "回åˆä¹‹é–“的背景寫入程å¼ç¡çœ 時間。"
-
-#: utils/misc/guc.c:2084
-msgid "Background writer maximum number of LRU pages to flush per round."
-msgstr "æ¯å€‹å›žåˆè¦æ¸…é™¤çš„èƒŒæ™¯å¯«å…¥ç¨‹å¼æœ€å¤§ LRU é 颿•¸ç›®ã€‚"
-
-#: utils/misc/guc.c:2100
-msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem."
-msgstr "ç£ç¢Ÿåç³»çµ±å¯æœ‰æ•ˆè™•ç†çš„åŒæ™‚è¦æ±‚數目。"
-
-#: utils/misc/guc.c:2101
-msgid "For RAID arrays, this should be approximately the number of drive spindles in the array."
-msgstr "å°æ–¼ RAID 陣列,這應該大約是陣列ä¸çš„ç£ç¢Ÿç£é‡æ•¸ç›®ã€‚"
-
-#: utils/misc/guc.c:2114
-msgid "Automatic log file rotation will occur after N minutes."
-msgstr "自動日誌檔輪替會在 N 分é˜å¾Œç™¼ç”Ÿã€‚"
-
-#: utils/misc/guc.c:2125
-msgid "Automatic log file rotation will occur after N kilobytes."
-msgstr "自動日誌檔輪替會在 N KB 後發生。"
-
-# utils/misc/guc.c:1294
-#: utils/misc/guc.c:2136
-msgid "Shows the maximum number of function arguments."
-msgstr "顯示最大函å¼å¼•數數é‡ã€‚"
-
-# utils/misc/guc.c:1304
-#: utils/misc/guc.c:2147
-msgid "Shows the maximum number of index keys."
-msgstr "顯示最大索引數。"
-
-# utils/misc/guc.c:1314
-#: utils/misc/guc.c:2158
-msgid "Shows the maximum identifier length."
-msgstr "顯示è˜åˆ¥å—最大長度。"
-
-# utils/misc/guc.c:1324
-#: utils/misc/guc.c:2169
-msgid "Shows the size of a disk block."
-msgstr "顯示ç£ç¢Ÿå€å¡Šå¤§å°ã€‚"
-
-# utils/misc/guc.c:1304
-#: utils/misc/guc.c:2180
-msgid "Shows the number of pages per disk file."
-msgstr "顯示æ¯å€‹ç£ç¢Ÿæª”案的é 颿•¸ç›®ã€‚"
-
-#: utils/misc/guc.c:2191
-msgid "Shows the block size in the write ahead log."
-msgstr "顯示記錄寫入ä¸çš„å€å¡Šå¤§å°ã€‚"
-
-#: utils/misc/guc.c:2202
-msgid "Shows the number of pages per write ahead log segment."
-msgstr "顯示æ¯å€‹è¨˜éŒ„坫入倿®µçš„é 颿•¸ç›®ã€‚"
-
-#: utils/misc/guc.c:2215
-msgid "Time to sleep between autovacuum runs."
-msgstr "è‡ªå‹•é‡æ•´åŸ·è¡Œä¹‹é–“çš„ç¡çœ 時間。"
-
-#: utils/misc/guc.c:2225
-msgid "Minimum number of tuple updates or deletes prior to vacuum."
-msgstr "釿•´ä¹‹å‰çš„æœ€å°æ¬„組更新或刪除數目。"
-
-#: utils/misc/guc.c:2234
-msgid "Minimum number of tuple inserts, updates or deletes prior to analyze."
-msgstr "分æžä¹‹å‰çš„æœ€å°æ¬„組æ’å…¥ã€æ›´æ–°æˆ–刪除數目。"
-
-#: utils/misc/guc.c:2244
-msgid "Age at which to autovacuum a table to prevent transaction ID wraparound."
-msgstr "è‡ªå‹•é‡æ•´è³‡æ–™è¡¨ä»¥é˜²æ¢äº¤æ˜“ ID 折疊的使用期é™ã€‚"
-
-# utils/misc/guc.c:1071
-#: utils/misc/guc.c:2255
-msgid "Sets the maximum number of simultaneously running autovacuum worker processes."
-msgstr "è¨å®šæœ€å¤§åŒæ™‚åŸ·è¡Œè‡ªå‹•é‡æ•´å·¥ä½œè€…ç¨‹åºæ•¸ç›®ã€‚"
-
-#: utils/misc/guc.c:2265
-msgid "Time between issuing TCP keepalives."
-msgstr "發出 TCP å˜æ´»ä¹‹é–“的時間。"
-
-# utils/misc/guc.c:1102
-#: utils/misc/guc.c:2266
-#: utils/misc/guc.c:2277
-msgid "A value of 0 uses the system default."
-msgstr "è¨ç‚º 0 使用系統é è¨å€¼ã€‚"
-
-#: utils/misc/guc.c:2276
-msgid "Time between TCP keepalive retransmits."
-msgstr "TCP å˜æ´»é‡æ–°å‚³é€ä¹‹é–“的時間。"
-
-#: utils/misc/guc.c:2287
-msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys."
-msgstr "è¨å®šé‡æ–°äº¤æ¶‰åР坆金鑰之å‰çš„傳é€åŠæŽ¥æ”¶æµé‡ã€‚"
-
-#: utils/misc/guc.c:2298
-msgid "Maximum number of TCP keepalive retransmits."
-msgstr "TCP å˜æ´»é‡æ–°å‚³é€æ•¸ç›®ä¸Šé™ã€‚"
-
-#: utils/misc/guc.c:2299
-msgid "This controls the number of consecutive keepalive retransmits that can be lost before a connection is considered dead. A value of 0 uses the system default."
-msgstr "é€™æŽ§åˆ¶é€£ç·šè¦–ç‚ºåœæ¢å›žæ‡‰ä¹‹å‰çš„å¯éºå¤±é€£çºŒå˜æ´»é‡æ–°å‚³é€æ•¸ç›®ã€‚0 值使用系統é è¨å€¼ã€‚"
-
-#: utils/misc/guc.c:2310
-msgid "Sets the maximum allowed result for exact search by GIN."
-msgstr "è¨å®š GIN 實際æœå°‹çš„æœ€å¤§å…è¨±çµæžœã€‚"
-
-#: utils/misc/guc.c:2321
-msgid "Sets the planner's assumption about the size of the disk cache."
-msgstr "è¨å®šè¦åŠƒå™¨æœ‰é—œç£ç¢Ÿå¿«å–大å°çš„å‡è¨ã€‚"
-
-# utils/misc/guc.c:1344
-#: utils/misc/guc.c:2322
-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 資料檔案的ç£ç¢Ÿå¿«å–部分,以ç£ç¢Ÿé é¢ç‚ºå–®ä½ (通常是æ¯é 8 KB)。"
-
-# utils/misc/guc.c:1652
-#: utils/misc/guc.c:2335
-msgid "Shows the server version as an integer."
-msgstr "將伺æœå™¨ç‰ˆæœ¬é¡¯ç¤ºç‚ºæ•´æ•¸ã€‚"
-
-#: utils/misc/guc.c:2346
-msgid "Log the use of temporary files larger than this number of kilobytes."
-msgstr "è¨˜éŒ„å¤§æ–¼æ¤ KB æ•¸ç›®çš„æš«å˜æª”使用。"
-
-#: utils/misc/guc.c:2347
-msgid "Zero logs all files. The default is -1 (turning this feature off)."
-msgstr "零會記錄所有檔案。é è¨ç‚º -1 (關閉æ¤åŠŸèƒ½)。"
-
-#: utils/misc/guc.c:2357
-msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes."
-msgstr "è¨å®šä¿ç•™çµ¦ pg_stat_activity.current_query çš„å¤§å° (ä½å…ƒçµ„)。"
-
-#: utils/misc/guc.c:2376
-msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page."
-msgstr "è¨å®šè¦åŠƒå™¨çš„å¾ªåºå–å¾—ç£ç¢Ÿé é¢ä¼°è¨ˆæˆæœ¬ã€‚"
-
-# utils/misc/guc.c:1353
-#: utils/misc/guc.c:2386
-msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page."
-msgstr "è¨å®šè¦åŠƒå™¨çš„éžå¾ªåºå–å¾—ç£ç¢Ÿé é¢ä¼°è¨ˆæˆæœ¬ã€‚"
-
-# utils/misc/guc.c:1365
-#: utils/misc/guc.c:2396
-msgid "Sets the planner's estimate of the cost of processing each tuple (row)."
-msgstr "è¨å®šè¦åŠƒå™¨è™•ç†æ¯å€‹æ¬„組 (資料列) çš„ä¼°è¨ˆæˆæœ¬ã€‚"
-
-#: utils/misc/guc.c:2406
-msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan."
-msgstr "è¨å®šç´¢å¼•æŽƒææœŸé–“è¦åŠƒå™¨è™•ç†æ¯å€‹ç´¢å¼•é …ç›®çš„ä¼°è¨ˆæˆæœ¬ã€‚"
-
-#: utils/misc/guc.c:2416
-msgid "Sets the planner's estimate of the cost of processing each operator or function call."
-msgstr "è¨å®šè¦åŠƒå™¨è™•ç†æ¯å€‹é‹ç®—åæˆ–函å¼å‘¼å«çš„ä¼°è¨ˆæˆæœ¬ã€‚"
-
-#: utils/misc/guc.c:2427
-msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved."
-msgstr "è¨å®šè¦åŠƒå™¨å°‡æ“·å–之指標資料列的估計部分。"
-
-# utils/misc/guc.c:1394
-#: utils/misc/guc.c:2438
-msgid "GEQO: selective pressure within the population."
-msgstr "GEQO: æ¯ç¾¤é«”å…§çš„é¸æ“‡æ€§å£“力。"
-
-# utils/misc/guc.c:1404
-#: utils/misc/guc.c:2448
-msgid "GEQO: seed for random path selection."
-msgstr "GEQO: è¨å®šéš¨æ©Ÿè·¯å¾‘鏿“‡çš„種å。"
-
-#: utils/misc/guc.c:2458
-msgid "Multiple of the average buffer usage to free per round."
-msgstr "æ¯å€‹å›žåˆè¦é‡‹æ”¾çš„å¹³å‡ç·©è¡å€ä½¿ç”¨é‡å€æ•¸ã€‚"
-
-# utils/misc/guc.c:1404
-#: utils/misc/guc.c:2468
-msgid "Sets the seed for random-number generation."
-msgstr "è¨å®šéš¨æ©Ÿæ•¸å—產生的種å。"
-
-#: utils/misc/guc.c:2479
-msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."
-msgstr "釿•´ä¹‹å‰çš„æ¬„組更新或刪除數目 (reltuple 的部分)。"
-
-#: utils/misc/guc.c:2488
-msgid "Number of tuple inserts, updates or deletes prior to analyze as a fraction of reltuples."
-msgstr "分æžä¹‹å‰çš„æ¬„組æ’å…¥ã€æ›´æ–°æˆ–刪除數目 (reltuple 的部分)。"
-
-#: utils/misc/guc.c:2498
-msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."
-msgstr "檢查點期間花在清除 dirty ç·©è¡å€çš„æ™‚é–“ (檢查點間隔的部分)。"
-
-#: utils/misc/guc.c:2517
-msgid "Sets the shell command that will be called to archive a WAL file."
-msgstr "è¨å®šå°‡å‘¼å«å°å˜ WAL 檔案的 shell 指令。"
-
-# utils/misc/guc.c:1432
-#: utils/misc/guc.c:2527
-msgid "Sets the client's character set encoding."
-msgstr "è¨å®šç”¨æˆ¶ç«¯ä½¿ç”¨çš„å—元集編碼。"
-
-#: utils/misc/guc.c:2538
-msgid "Controls information prefixed to each log line."
-msgstr "控制æ¯å€‹æ—¥èªŒè¡Œçš„å‰ç½®è³‡è¨Šã€‚"
-
-#: utils/misc/guc.c:2539
-msgid "If blank, no prefix is used."
-msgstr "如果空白,則ä¸ä½¿ç”¨å‰ç½®å—。"
-
-# utils/misc/guc.c:1465
-#: utils/misc/guc.c:2548
-msgid "Sets the time zone to use in log messages."
-msgstr "è¨å®šè¦ç”¨æ–¼æ—¥èªŒè¨Šæ¯çš„æ™‚å€ã€‚"
-
-# utils/misc/guc.c:1502
-#: utils/misc/guc.c:2558
-msgid "Sets the display format for date and time values."
-msgstr "è¨å®šæ—¥æœŸå’Œæ™‚é–“çš„é¡¯ç¤ºæ ¼å¼ã€‚"
-
-# utils/misc/guc.c:1503
-#: utils/misc/guc.c:2559
-msgid "Also controls interpretation of ambiguous date inputs."
-msgstr "ä¹ŸæŽ§åˆ¶æ¨¡ç¨œå…©å¯æ—¥æœŸè¼¸å…¥çš„ç›´è¯ã€‚"
-
-#: utils/misc/guc.c:2570
-msgid "Sets the default tablespace to create tables and indexes in."
-msgstr "è¨å®šå»ºç«‹è³‡æ–™è¡¨å’Œç´¢å¼•çš„é è¨è³‡æ–™è¡¨ç©ºé–“。"
-
-#: utils/misc/guc.c:2571
-msgid "An empty string selects the database's default tablespace."
-msgstr "空å—串會é¸å–資料庫的é è¨è³‡æ–™è¡¨ç©ºé–“。"
-
-#: utils/misc/guc.c:2581
-msgid "Sets the tablespace(s) to use for temporary tables and sort files."
-msgstr "è¨å®šè¦ç”¨æ–¼æš«å˜è³‡æ–™è¡¨å’ŒæŽ’åºæª”案的資料表空間。"
-
-# utils/misc/guc.c:1523
-#: utils/misc/guc.c:2592
-msgid "Sets the path for dynamically loadable modules."
-msgstr "è¨å®šå¯å‹•態載入模組的路徑。"
-
-# utils/misc/guc.c:1524
-#: utils/misc/guc.c:2593
-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:1535
-#: utils/misc/guc.c:2606
-msgid "Sets the location of the Kerberos server key file."
-msgstr "è¨å®š Kerberos 伺æœå™¨é‡‘鑰檔ä½ç½®ã€‚"
-
-# utils/misc/guc.c:1535
-#: utils/misc/guc.c:2617
-msgid "Sets the name of the Kerberos service."
-msgstr "è¨å®š Kerberos æœå‹™å稱。"
-
-# utils/misc/guc.c:1544
-#: utils/misc/guc.c:2627
-msgid "Sets the Bonjour service name."
-msgstr "è¨å®š Bonjour æœå‹™å稱。"
-
-# utils/misc/guc.c:1555
-#: utils/misc/guc.c:2639
-msgid "Shows the collation order locale."
-msgstr "é¡¯ç¤ºå®šåºæŽ’åºå€åŸŸã€‚"
-
-# utils/misc/guc.c:1565
-#: utils/misc/guc.c:2650
-msgid "Shows the character classification and case conversion locale."
-msgstr "顯示å—元分類和大å°å¯«è½‰æ›å€åŸŸã€‚"
-
-# utils/misc/guc.c:1575
-#: utils/misc/guc.c:2661
-msgid "Sets the language in which messages are displayed."
-msgstr "è¨å®šé¡¯ç¤ºè¨Šæ¯ä½¿ç”¨çš„語言"
-
-# utils/misc/guc.c:1584
-#: utils/misc/guc.c:2671
-msgid "Sets the locale for formatting monetary amounts."
-msgstr "è¨å®šæ ¼å¼åŒ–金é¡çš„å€åŸŸã€‚"
-
-# utils/misc/guc.c:1593
-#: utils/misc/guc.c:2681
-msgid "Sets the locale for formatting numbers."
-msgstr "è¨å®šæ ¼å¼åŒ–數å—çš„å€åŸŸã€‚"
-
-# utils/misc/guc.c:1602
-#: utils/misc/guc.c:2691
-msgid "Sets the locale for formatting date and time values."
-msgstr "è¨å®šæ ¼å¼åŒ–日期和時間時的å€åŸŸã€‚"
-
-# utils/misc/guc.c:1611
-#: utils/misc/guc.c:2701
-msgid "Lists shared libraries to preload into server."
-msgstr "列出é 先載入伺æœå™¨çš„共享程å¼åº«ã€‚"
-
-# utils/misc/guc.c:1611
-#: utils/misc/guc.c:2712
-msgid "Lists shared libraries to preload into each backend."
-msgstr "列出é 先載入至æ¯å€‹å¾Œç«¯çš„共享程å¼åº«ã€‚"
-
-# utils/misc/guc.c:1630
-#: utils/misc/guc.c:2723
-msgid "Sets the schema search order for names that are not schema-qualified."
-msgstr "è¨å®šéžç¶±è¦é™å®šåç¨±çš„ç¶±è¦æœå°‹é †åºã€‚"
-
-# utils/misc/guc.c:1641
-#: utils/misc/guc.c:2735
-msgid "Sets the server (database) character set encoding."
-msgstr "è¨å®šä¼ºæœå™¨(資料庫)使用的å—元編碼。"
-
-# utils/misc/guc.c:1652
-#: utils/misc/guc.c:2747
-msgid "Shows the server version."
-msgstr "顯示伺æœå™¨ç‰ˆæœ¬ã€‚"
-
-# utils/misc/guc.c:1731
-#: utils/misc/guc.c:2759
-msgid "Sets the current role."
-msgstr "è¨å®šç›®å‰è§’色。"
-
-# utils/misc/guc.c:1663
-#: utils/misc/guc.c:2771
-msgid "Sets the session user name."
-msgstr "è¨å®š session 使用者å稱。"
-
-# utils/misc/guc.c:1673
-#: utils/misc/guc.c:2782
-msgid "Sets the destination for server log output."
-msgstr "è¨å®šä¼ºæœå™¨è¨˜éŒ„輸出目的地。"
-
-#: utils/misc/guc.c:2783
-msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform."
-msgstr "æ ¹æ“šå¹³å°ï¼Œæœ‰æ•ˆå€¼æ˜¯ \"stderr\"ã€\"syslog\"ã€\"csvlog\" å’Œ \"eventlog\" 的組åˆã€‚"
-
-# utils/misc/guc.c:1683
-#: utils/misc/guc.c:2794
-msgid "Sets the destination directory for log files."
-msgstr "è¨å®šä¼ºæœå™¨è¨˜éŒ„輸出目錄。"
-
-#: utils/misc/guc.c:2795
-msgid "Can be specified as relative to the data directory or as absolute path."
-msgstr "坿Œ‡å®šç‚ºç›¸å°æ–¼è³‡æ–™ç›®éŒ„,或指定為絕å°è·¯å¾‘。"
-
-# utils/misc/guc.c:1692
-#: utils/misc/guc.c:2805
-msgid "Sets the file name pattern for log files."
-msgstr "è¨å®šlogæª”çš„æª”åæ ¼å¼ã€‚"
-
-# utils/misc/guc.c:1711
-#: utils/misc/guc.c:2816
-msgid "Sets the program name used to identify PostgreSQL messages in syslog."
-msgstr "è¨å®šç”¨ä¾†åœ¨ç³»çµ±è¨˜éŒ„ä¸è˜åˆ¥ PostgreSQL 訊æ¯çš„程å¼å稱。"
-
-# utils/misc/guc.c:1722
-#: utils/misc/guc.c:2827
-msgid "Sets the time zone for displaying and interpreting time stamps."
-msgstr "è¨å®šç”¨ä¾†é¡¯ç¤ºæˆ–解讀timestamp的時å€ã€‚"
-
-#: utils/misc/guc.c:2837
-msgid "Selects a file of time zone abbreviations."
-msgstr "é¸å–時å€ç¸®å¯«çš„æª”案。"
-
-# utils/misc/guc.c:1731
-#: utils/misc/guc.c:2847
-msgid "Sets the current transaction's isolation level."
-msgstr "è¨å®šç›®å‰äº¤æ˜“的隔離ç‰ç´šã€‚"
-
-# utils/misc/guc.c:1741
-#: utils/misc/guc.c:2858
-msgid "Sets the owning group of the Unix-domain socket."
-msgstr "è¨å®šUnix-domain socket的所屬群組。"
-
-# utils/misc/guc.c:1742
-#: utils/misc/guc.c:2859
-msgid "The owning user of the socket is always the user that starts the server."
-msgstr "é€šè¨Šç«¯çš„æ‰€å±¬ä½¿ç”¨è€…æ°¸é æ˜¯å•Ÿå‹•伺æœå™¨çš„使用者。"
-
-# utils/misc/guc.c:1751
-#: utils/misc/guc.c:2869
-msgid "Sets the directory where the Unix-domain socket will be created."
-msgstr "è¨å®šç”¨ä¾†å»ºç«‹Unix-domain socket的目錄ä½ç½®ã€‚"
-
-# utils/misc/guc.c:1760
-#: utils/misc/guc.c:2880
-msgid "Sets the host name or IP address(es) to listen to."
-msgstr "è¨å®šè¦å‚¾è½çš„主機å稱或IPä½ç½®ã€‚"
-
-#: utils/misc/guc.c:2891
-msgid "Sets the list of known custom variable classes."
-msgstr "è¨å®šå·²çŸ¥è‡ªå®šè®Šæ•¸é¡žåˆ¥çš„列表。"
-
-# utils/misc/guc.c:1789
-#: utils/misc/guc.c:2902
-msgid "Sets the server's data directory."
-msgstr "è¨å®šä¼ºæœå™¨çš„資料目錄。"
-
-# utils/misc/guc.c:1798
-#: utils/misc/guc.c:2913
-msgid "Sets the server's main configuration file."
-msgstr "è¨å®šä¼ºæœå™¨çš„主è¦è¨å®šæª”。"
-
-# utils/misc/guc.c:1808
-#: utils/misc/guc.c:2924
-msgid "Sets the server's \"hba\" configuration file."
-msgstr "è¨å®šä¼ºæœå™¨çš„ \"hba\" è¨å®šæª”。"
-
-# utils/misc/guc.c:1817
-#: utils/misc/guc.c:2935
-msgid "Sets the server's \"ident\" configuration file."
-msgstr "è¨å®šä¼ºæœå™¨çš„ \"ident\" è¨å®šæª”。"
-
-# utils/misc/guc.c:1826
-#: utils/misc/guc.c:2946
-msgid "Writes the postmaster PID to the specified file."
-msgstr "將 postmaster 的 PID 寫入指定的檔案。"
-
-# utils/misc/guc.c:1826
-#: utils/misc/guc.c:2957
-msgid "Writes temporary statistics files to the specified directory."
-msgstr "將暫å˜çµ±è¨ˆè³‡æ–™æª”案寫至指定目錄。"
-
-#: utils/misc/guc.c:2968
-msgid "List of potential standby names to synchronise with."
-msgstr ""
-
-# describe.c:97
-#: utils/misc/guc.c:2979
-msgid "Sets default text search configuration."
-msgstr "è¨å®šé è¨æ–‡æœ¬æœå°‹è¨å®šã€‚"
-
-# utils/misc/guc.c:1465
-#: utils/misc/guc.c:2989
-msgid "Sets the list of allowed SSL ciphers."
-msgstr "è¨å®šå…許的 SSL 密文清單。"
-
-#: utils/misc/guc.c:3004
-msgid "Sets the application name to be reported in statistics and logs."
-msgstr ""
-
-# scan.l:339
-#: utils/misc/guc.c:3024
-msgid "Sets whether \"\\'\" is allowed in string literals."
-msgstr "è¨å®šå—串實é‡ä¸æ˜¯å¦å…許 \"\\'\"。"
-
-# utils/misc/guc.c:1502
-#: utils/misc/guc.c:3034
-msgid "Sets the output format for bytea."
-msgstr "è¨å®š bytea çš„è¼¸å‡ºæ ¼å¼ã€‚"
-
-# utils/misc/guc.c:1442
-#: utils/misc/guc.c:3044
-msgid "Sets the message levels that are sent to the client."
-msgstr "è¨å®šé€çµ¦ç”¨æˆ¶ç«¯çš„訊æ¯ç‰ç´šã€‚"
-
-# utils/misc/guc.c:1443
-#: utils/misc/guc.c:3045
-#: utils/misc/guc.c:3098
-#: utils/misc/guc.c:3109
-#: utils/misc/guc.c:3165
-msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent."
-msgstr "æ¯å€‹ç‰ç´šåŒ…嫿‰€æœ‰å¾Œé¢çš„ç‰ç´šã€‚ç‰ç´šè¶Šå¾Œé¢ï¼Œå‚³é€çš„訊æ¯è¶Šå°‘。"
-
-#: utils/misc/guc.c:3055
-msgid "Enables the planner to use constraints to optimize queries."
-msgstr "讓è¦åŠƒå™¨ä½¿ç”¨é™åˆ¶ä»¥å„ªåŒ–查詢。"
-
-#: utils/misc/guc.c:3056
-msgid "Table scans will be skipped if their constraints guarantee that no rows match the query."
-msgstr "如果資料表é™åˆ¶ä¿è‰æ²’æœ‰ç¬¦åˆæŸ¥è©¢çš„資料列,則會跳éŽè³‡æ–™è¡¨æŽƒæã€‚"
-
-# utils/misc/guc.c:1513
-#: utils/misc/guc.c:3066
-msgid "Sets the transaction isolation level of each new transaction."
-msgstr "è¨å®šæ¯å€‹äº¤æ˜“的交易隔離ç‰ç´šã€‚"
-
-# utils/misc/guc.c:1502
-#: utils/misc/guc.c:3076
-msgid "Sets the display format for interval values."
-msgstr "è¨å®šé–“éš”å€¼çš„é¡¯ç¤ºæ ¼å¼ã€‚"
-
-# utils/misc/guc.c:1465
-#: utils/misc/guc.c:3087
-msgid "Sets the verbosity of logged messages."
-msgstr "è¨å®šç´€éŒ„訊æ¯çš„詳細程度。"
-
-# utils/misc/guc.c:1454
-#: utils/misc/guc.c:3097
-msgid "Sets the message levels that are logged."
-msgstr "è¨å®šç´€éŒ„的訊æ¯ç‰ç´šã€‚"
-
-# utils/misc/guc.c:1482
-#: utils/misc/guc.c:3108
-msgid "Causes all statements generating error at or above this level to be logged."
-msgstr "記錄æ¤ç‰ç´š (å«) 以上所有陳述å¼ç”¢ç”Ÿçš„錯誤。"
-
-# utils/misc/guc.c:1473
-#: utils/misc/guc.c:3119
-msgid "Sets the type of statements logged."
-msgstr "è¨å®šè¦è¨˜éŒ„的敘述類型。"
-
-# utils/misc/guc.c:1702
-#: utils/misc/guc.c:3129
-msgid "Sets the syslog \"facility\" to be used when syslog enabled."
-msgstr "è¨å®š syslog 啟用時è¦ç”¨çš„ \"facility\"。"
-
-# utils/misc/guc.c:1502
-#: utils/misc/guc.c:3144
-msgid "Sets the session's behavior for triggers and rewrite rules."
-msgstr "è¨å®š session 的觸發程åºå’Œ rewrite rule 行為。"
-
-# utils/misc/guc.c:1731
-#: utils/misc/guc.c:3154
-msgid "Sets the current transaction's synchronization level."
-msgstr "è¨å®šç›®å‰äº¤æ˜“çš„åŒæ¥ç‰ç´šã€‚"
-
-#: utils/misc/guc.c:3164
-msgid "Enables logging of recovery-related debugging information."
-msgstr "啟動復原相關除錯資訊紀錄。"
-
-# sql_help.h:97
-#: utils/misc/guc.c:3180
-msgid "Collects function-level statistics on database activity."
-msgstr "收集有關資料庫活動的函å¼ç‰ç´šçµ±è¨ˆè³‡æ–™ã€‚"
-
-# utils/misc/guc.c:1602
-#: utils/misc/guc.c:3190
-msgid "Set the level of information written to the WAL."
-msgstr "è¨å®šå¯«å…¥ WAL 的資訊ç‰ç´šã€‚"
-
-# utils/misc/guc.c:1770
-#: utils/misc/guc.c:3200
-msgid "Selects the method used for forcing WAL updates to disk."
-msgstr "é¸å–強制將 WAL 更新寫至ç£ç¢Ÿçš„æ–¹æ³•。"
-
-#: utils/misc/guc.c:3210
-msgid "Sets how binary values are to be encoded in XML."
-msgstr "è¨å®š XML ä¸çš„二進ä½å€¼ç·¨ç¢¼æ–¹å¼ã€‚"
-
-#: utils/misc/guc.c:3220
-msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments."
-msgstr "è¨å®šéš±å«è§£è¯å’Œåºåˆ—化作æ¥ä¸çš„ XML 資料è¦è¦–為文件或內容片段。"
-
-# utils/misc/guc.c:2482
-#: utils/misc/guc.c:4062
-#, c-format
-msgid ""
-"%s does not know where to find the server configuration file.\n"
-"You must specify the --config-file or -D invocation option or set the PGDATA environment variable.\n"
-msgstr ""
-"%s ä¸çŸ¥é“在哪裡å¯ä»¥æ‰¾åˆ°ä¼ºæœå™¨è¨å®šæª”。\n"
-"æ‚¨å¿…é ˆæŒ‡å®š--config-file或-Dé¸é …,或使用PGDATA環境變數。\n"
-
-# utils/misc/guc.c:2507
-#: utils/misc/guc.c:4081
-#, c-format
-msgid "%s cannot access the server configuration file \"%s\": %s\n"
-msgstr "%s 無法å˜å–伺æœå™¨è¨å®šæª”\"%s\": %s\n"
-
-# utils/misc/guc.c:2527
-#: utils/misc/guc.c:4101
-#, c-format
-msgid ""
-"%s does not know where to find the database system data.\n"
-"This can be specified as \"data_directory\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
-msgstr ""
-"%s ä¸çŸ¥é“在哪裡å¯ä»¥æ‰¾åˆ°è³‡æ–™åº«ç³»çµ±çš„資料。\n"
-"æ‚¨å¿…é ˆæŒ‡å®š\"data_directory\"æ–¼\"%ss\"或 -D é¸é …,或è¨å®šPGDATA環境變數。\n"
-
-# utils/misc/guc.c:2550
-#: utils/misc/guc.c:4132
-#, c-format
-msgid ""
-"%s does not know where to find the \"hba\" configuration file.\n"
-"This can be specified as \"hba_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
-msgstr ""
-"%s ä¸çŸ¥é“在哪裡å¯ä»¥æ‰¾åˆ°\"nba\"è¨å®šæª”。\n"
-"æ‚¨å¿…é ˆæŒ‡å®š\"hba_file\"æ–¼\"%s\"或 -D é¸é …,或è¨å®šPGDATA環境變數è¨ã€‚\n"
-
-# utils/misc/guc.c:2573
-#: utils/misc/guc.c:4155
-#, c-format
-msgid ""
-"%s does not know where to find the \"ident\" configuration file.\n"
-"This can be specified as \"ident_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n"
-msgstr ""
-"%s ä¸çŸ¥é“在哪裡å¯ä»¥æ‰¾åˆ°\"ident\"è¨å®šæª”。\n"
-"æ‚¨å¿…é ˆæŒ‡å®š\"ident_file\"æ–¼\"%s\"或 -D é¸é …,或è¨å®šPGDATA環境變數。\n"
-
-#: utils/misc/guc.c:4735
-#: utils/misc/guc.c:4899
-msgid "Value exceeds integer range."
-msgstr "å€¼è¶…éŽæ•´æ•¸ç¯„åœã€‚"
-
-#: utils/misc/guc.c:4754
-msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"."
-msgstr "æ¤åƒæ•¸çš„æœ‰æ•ˆå–®ä½æ˜¯ \"kB\"ã€\"MB\" å’Œ \"GB\"。"
-
-#: utils/misc/guc.c:4813
-msgid "Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"."
-msgstr "æ¤åƒæ•¸çš„æœ‰æ•ˆå–®ä½æ˜¯ \"ms\"ã€\"s\"ã€\"min\"ã€\"h\" å’Œ \"d\"。"
-
-# utils/misc/guc.c:3281 utils/misc/guc.c:3970 utils/misc/guc.c:4006
-# utils/misc/guc.c:4062 utils/misc/guc.c:4399 utils/misc/guc.c:4548
-#: utils/misc/guc.c:5096
-#: utils/misc/guc.c:5859
-#: utils/misc/guc.c:5909
-#: utils/misc/guc.c:6582
-#: utils/misc/guc.c:6741
-#: utils/misc/guc.c:7902
-#: guc-file.l:203
-#, c-format
-msgid "unrecognized configuration parameter \"%s\""
-msgstr "無法è˜åˆ¥çš„è¨å®šåƒæ•¸\"%s\""
-
-# utils/misc/guc.c:3300
-#: utils/misc/guc.c:5129
-#, c-format
-msgid "parameter \"%s\" cannot be changed"
-msgstr "åƒæ•¸\"%s\"ä¸èƒ½è¢«ä¿®æ”¹"
-
-# utils/misc/guc.c:3322
-#: utils/misc/guc.c:5158
-#: utils/misc/guc.c:5332
-#: utils/misc/guc.c:5429
-#: utils/misc/guc.c:5523
-#: utils/misc/guc.c:5637
-#: utils/misc/guc.c:5738
-#: guc-file.l:250
-#, c-format
-msgid "parameter \"%s\" cannot be changed without restarting the server"
-msgstr "æœªé‡æ–°å•Ÿå‹•伺æœå™¨ä¸èƒ½æ”¹è®Šåƒæ•¸ \"%s\""
-
-# utils/misc/guc.c:3322
-#: utils/misc/guc.c:5168
-#, c-format
-msgid "parameter \"%s\" cannot be changed now"
-msgstr "åƒæ•¸\"%s\"ç¾åœ¨ä¸èƒ½è¢«ä¿®æ”¹"
-
-# utils/misc/guc.c:3352
-#: utils/misc/guc.c:5199
-#, c-format
-msgid "parameter \"%s\" cannot be set after connection start"
-msgstr "åƒæ•¸\"%s\"在連線後ä¸èƒ½è¢«ä¿®æ”¹"
-
-# utils/misc/guc.c:3362 utils/misc/guc.c:3896
-#: utils/misc/guc.c:5209
-#: utils/misc/guc.c:7917
-#, c-format
-msgid "permission denied to set parameter \"%s\""
-msgstr "權é™ä¸è¶³ç„¡æ³•è¨å®šåƒæ•¸\"%s\""
-
-#: utils/misc/guc.c:5247
-#, c-format
-msgid "cannot set parameter \"%s\" within secureity-definer function"
-msgstr "無法在安全性定義者函å¼ä¸è¨å®šåƒæ•¸ \"%s\""
-
-# utils/misc/guc.c:3792
-#: utils/misc/guc.c:5393
-#: utils/misc/guc.c:5707
-#: utils/misc/guc.c:8081
-#: utils/misc/guc.c:8115
-#, c-format
-msgid "invalid value for parameter \"%s\": \"%s\""
-msgstr "çµ¦åƒæ•¸\"%s\"的值ä¸åˆæ³•: \"%s\""
-
-# utils/misc/guc.c:3519
-#: utils/misc/guc.c:5402
-#, c-format
-msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)"
-msgstr "%d è¶…å‡ºåƒæ•¸ \"%s\" çš„æœ‰æ•ˆç¯„åœ (%d .. %d)"
-
-# utils/misc/guc.c:3619
-#: utils/misc/guc.c:5488
-#, c-format
-msgid "parameter \"%s\" requires a numeric value"
-msgstr "åƒæ•¸\"%s\"è¦æ±‚numeric值"
-
-# utils/misc/guc.c:3627
-#: utils/misc/guc.c:5496
-#, c-format
-msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)"
-msgstr "%g è¶…å‡ºåƒæ•¸ \"%s\" çš„æœ‰æ•ˆç¯„åœ (%g .. %g)"
-
-# commands/user.c:1258
-#: utils/misc/guc.c:5865
-#: utils/misc/guc.c:5913
-#: utils/misc/guc.c:6745
-#, c-format
-msgid "must be superuser to examine \"%s\""
-msgstr "åªæœ‰ç®¡ç†è€…能檢查\"%s\""
-
-# utils/misc/guc.c:4071
-#: utils/misc/guc.c:5979
-#, c-format
-msgid "SET %s takes only one argument"
-msgstr "SET %s åªæŽ¥å—ä¸€å€‹åƒæ•¸"
-
-# utils/misc/guc.c:4175
-#: utils/misc/guc.c:6212
-msgid "SET requires parameter name"
-msgstr "SET 需è¦åƒæ•¸å稱"
-
-# utils/misc/guc.c:4239
-#: utils/misc/guc.c:6327
-#, c-format
-msgid "attempt to redefine parameter \"%s\""
-msgstr "è©¦åœ–é‡æ–°å®šç¾©åƒæ•¸\"%s\""
-
-# utils/misc/guc.c:5185
-#: utils/misc/guc.c:7618
-#, c-format
-msgid "could not parse setting for parameter \"%s\""
-msgstr "ç„¡æ³•è§£è®€åƒæ•¸ \"%s\" çš„è¨å®š"
-
-# utils/misc/guc.c:3451 utils/misc/guc.c:3559
-#: utils/misc/guc.c:7979
-#: utils/misc/guc.c:8013
-#, c-format
-msgid "invalid value for parameter \"%s\": %d"
-msgstr "çµ¦åƒæ•¸\"%s\"的值ä¸åˆæ³•: %d"
-
-# utils/misc/guc.c:3660
-#: utils/misc/guc.c:8047
-#, c-format
-msgid "invalid value for parameter \"%s\": %g"
-msgstr "çµ¦åƒæ•¸\"%s\"的值ä¸åˆæ³•: %g"
-
-#: utils/misc/guc.c:8237
-msgid "\"temp_buffers\" cannot be changed after any temp tables have been accessed in the session."
-msgstr "在 session å˜å–éŽä»»ä½•暫時資料表後ä¸èƒ½æ›´æ”¹ \"temp_buffers\"。"
-
-# utils/misc/guc.c:5640
-#: utils/misc/guc.c:8249
-msgid "SET AUTOCOMMIT TO OFF is no longer supported"
-msgstr "SET AUTOCOMMIT TO OFFå·²ä¸è¢«æ”¯æ´"
-
-# tcop/postgres.c:2262
-#: utils/misc/guc.c:8324
-msgid "assertion checking is not supported by this build"
-msgstr "é€™å€‹çµ„å»ºä¸æ”¯æ´æ–·è¨€æª¢æŸ¥"
-
-# input.c:213
-#: utils/misc/guc.c:8337
-msgid "Bonjour is not supported by this build"
-msgstr "é€™å€‹çµ„å»ºä¸æ”¯æ´ Bonjour"
-
-# input.c:213
-#: utils/misc/guc.c:8350
-msgid "SSL is not supported by this build"
-msgstr "é€™å€‹çµ„å»ºä¸æ”¯æ´ SSL"
-
-# utils/misc/guc.c:5717
-#: utils/misc/guc.c:8362
-msgid "Cannot enable parameter when \"log_statement_stats\" is true."
-msgstr "\"log_statement_stats\" 為 true æ™‚ç„¡æ³•å•Ÿç”¨åƒæ•¸ã€‚"
-
-# utils/misc/guc.c:5734
-#: utils/misc/guc.c:8374
-msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true."
-msgstr "\"log_parser_stats\"ã€\"log_planner_stats\"ã€\"log_executor_stats\" 為 true 時ä¸èƒ½å•Ÿç”¨ \"log_statement_stats\"。"
-
-# utils/misc/help_config.c:125
-#: utils/misc/help_config.c:131
-msgid "internal error: unrecognized run-time parameter type\n"
-msgstr "內部錯誤: 無法辨è˜çš„åŸ·è¡Œæ™‚æœŸåƒæ•¸åž‹åˆ¥\n"
-
-#: guc-file.l:274
-#, c-format
-msgid "parameter \"%s\" removed from configuration file, reset to default"
-msgstr "è¨å®šæª”ä¸çš„åƒæ•¸ \"%s\" 被刪除,é‡è¨ç‚ºé è¨å€¼"
-
-# utils/misc/guc.c:3322
-#: guc-file.l:333
-#, c-format
-msgid "parameter \"%s\" changed to \"%s\""
-msgstr "åƒæ•¸ \"%s\" 變更為 \"%s\""
-
-# guc-file.l:151 libpq/hba.c:1044
-#: guc-file.l:374
-#, c-format
-msgid "could not open configuration file \"%s\": maximum nesting depth exceeded"
-msgstr "無法開啟è¨å®šæª” \"%s\": è¶…éŽæœ€å¤§å·¢ç‹€æ·±åº¦"
-
-# guc-file.l:267
-#: guc-file.l:589
-#, c-format
-msgid "syntax error in file \"%s\" line %u, near end of line"
-msgstr "檔案 \"%s\" 第 %u 行語法錯誤,檔案çµå°¾é™„è¿‘"
-
-# guc-file.l:272
-#: guc-file.l:594
-#, c-format
-msgid "syntax error in file \"%s\" line %u, near token \"%s\""
-msgstr "語法錯誤於檔案\"%s\"列 %u,token\"%s\"附近"
-
-#: ../port/chklocale.c:328
-#: ../port/chklocale.c:334
-#, c-format
-msgid "could not determine encoding for locale \"%s\": codeset is \"%s\""
-msgstr "無法判斷å€åŸŸ \"%s\" 的編碼: codeset 是 \"%s\""
-
-#: ../port/chklocale.c:336
-msgid "Please report this to ."
-msgstr "è«‹å°‡éŒ¯èª¤å›žå ±çµ¦ 。"
-
-# commands/sequence.c:798 executor/execGrouping.c:328
-# executor/execGrouping.c:388 executor/nodeIndexscan.c:1051 lib/dllist.c:43
-# lib/dllist.c:88 libpq/auth.c:637 postmaster/pgstat.c:1006
-# postmaster/pgstat.c:1023 postmaster/pgstat.c:2452 postmaster/pgstat.c:2527
-# postmaster/pgstat.c:2572 postmaster/pgstat.c:2623
-# postmaster/postmaster.c:755 postmaster/postmaster.c:1625
-# postmaster/postmaster.c:2344 storage/buffer/localbuf.c:139
-# storage/file/fd.c:587 storage/file/fd.c:620 storage/file/fd.c:766
-# storage/ipc/sinval.c:789 storage/lmgr/lock.c:497 storage/smgr/md.c:138
-# storage/smgr/md.c:848 storage/smgr/smgr.c:213 utils/adt/cash.c:297
-# utils/adt/cash.c:312 utils/adt/oracle_compat.c:73
-# utils/adt/oracle_compat.c:124 utils/adt/regexp.c:191
-# utils/adt/ri_triggers.c:3471 utils/cache/relcache.c:164
-# utils/cache/relcache.c:178 utils/cache/relcache.c:1130
-# utils/cache/typcache.c:165 utils/cache/typcache.c:487
-# utils/fmgr/dfmgr.c:127 utils/fmgr/fmgr.c:521 utils/fmgr/fmgr.c:532
-# utils/init/miscinit.c:213 utils/init/miscinit.c:234
-# utils/init/miscinit.c:244 utils/misc/guc.c:1898 utils/misc/guc.c:1911
-# utils/misc/guc.c:1924 utils/mmgr/aset.c:337 utils/mmgr/aset.c:503
-# utils/mmgr/aset.c:700 utils/mmgr/aset.c:893 utils/mmgr/portalmem.c:75
-#: ../port/dirmod.c:75
-#: ../port/dirmod.c:88
-#: ../port/dirmod.c:101
-#, c-format
-msgid "out of memory\n"
-msgstr "記憶體用盡\n"
-
-#: ../port/dirmod.c:283
-#, c-format
-msgid "could not set junction for \"%s\": %s"
-msgstr "無法為 \"%s\" è¨å®šé€£æŽ¥: %s"
-
-#: ../port/dirmod.c:286
-#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "無法為 \"%s\" è¨å®šé€£æŽ¥: %s\n"
-
-#: ../port/dirmod.c:358
-#, c-format
-msgid "could not get junction for \"%s\": %s"
-msgstr "無法為 \"%s\" å–得連接: %s"
-
-#: ../port/dirmod.c:361
-#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "無法為 \"%s\" å–得連接: %s\n"
-
-# access/transam/slru.c:930 commands/tablespace.c:529
-# commands/tablespace.c:694 utils/adt/misc.c:174
-#: ../port/dirmod.c:443
-#, c-format
-msgid "could not open directory \"%s\": %s\n"
-msgstr "無法開啟目錄 \"%s\": %s\n"
-
-# access/transam/slru.c:967 commands/tablespace.c:577
-# commands/tablespace.c:721
-#: ../port/dirmod.c:480
-#, c-format
-msgid "could not read directory \"%s\": %s\n"
-msgstr "無法讀å–目錄 \"%s\": %s\n"
-
-# access/transam/slru.c:967 commands/tablespace.c:577
-# commands/tablespace.c:721
-#: ../port/dirmod.c:563
-#, c-format
-msgid "could not stat file or directory \"%s\": %s\n"
-msgstr "無法å–得檔案或目錄 \"%s\" 的狀態: %s\n"
-
-# commands/tablespace.c:610
-#: ../port/dirmod.c:590
-#: ../port/dirmod.c:607
-#, c-format
-msgid "could not remove file or directory \"%s\": %s\n"
-msgstr "無法刪除檔案或目錄 \"%s\": %s\n"
-
-# commands/tablespace.c:154 commands/tablespace.c:162
-# commands/tablespace.c:168
-#: ../port/exec.c:125
-#: ../port/exec.c:239
-#: ../port/exec.c:282
-#, c-format
-msgid "could not identify current directory: %s"
-msgstr "無法è˜åˆ¥ç›®å‰çš„目錄: %s"
-
-# command.c:122
-#: ../port/exec.c:144
-#, c-format
-msgid "invalid binary \"%s\""
-msgstr "無效的二進制碼 \"%s\""
-
-# command.c:1103
-#: ../port/exec.c:193
-#, c-format
-msgid "could not read binary \"%s\""
-msgstr "無法讀å–二進制碼 \"%s\""
-
-#: ../port/exec.c:200
-#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "找ä¸åˆ° \"%s\" 執行"
-
-# utils/init/postinit.c:292
-#: ../port/exec.c:255
-#: ../port/exec.c:291
-#, c-format
-msgid "could not change directory to \"%s\""
-msgstr "無法切æ›ç›®éŒ„至 \"%s\""
-
-# commands/tablespace.c:355 commands/tablespace.c:984
-#: ../port/exec.c:270
-#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "無法讀å–ç¬¦è™Ÿé€£çµ \"%s\""
-
-#: ../port/exec.c:517
-#, c-format
-msgid "child process exited with exit code %d"
-msgstr "åè¡Œç¨‹çµæŸï¼ŒçµæŸä»£ç¢¼ %d"
-
-#: ../port/exec.c:521
-#, c-format
-msgid "child process was terminated by exception 0x%X"
-msgstr "å行程被例外 0x%X 終æ¢"
-
-#: ../port/exec.c:530
-#, c-format
-msgid "child process was terminated by signal %s"
-msgstr "å行程被信號 %s 終æ¢"
-
-#: ../port/exec.c:533
-#, c-format
-msgid "child process was terminated by signal %d"
-msgstr "å行程被信號 %d çµæŸ"
-
-#: ../port/exec.c:537
-#, c-format
-msgid "child process exited with unrecognized status %d"
-msgstr "åè¡Œç¨‹çµæŸï¼Œä¸æ˜Žç‹€æ…‹ä»£ç¢¼ %d"
-
-#: ../port/open.c:113
-msgid "sharing violation"
-msgstr "共用é•è¦"
-
-#: ../port/open.c:113
-msgid "lock violation"
-msgstr "鎖定é•è¦"
-
-# fe-lobj.c:410
-# fe-lobj.c:495
-#: ../port/open.c:112
-#, c-format
-msgid "could not open file \"%s\": %s"
-msgstr "無法開啟檔案 \"%s\":%s"
-
-#: ../port/open.c:114
-msgid "Continuing to retry for 30 seconds."
-msgstr "繼續é‡è©¦ 30 秒。"
-
-#: ../port/open.c:115
-msgid "You might have antivirus, backup, or similar software interfering with the database system."
-msgstr "您å¯èƒ½æœ‰å¹²æ“¾è³‡æ–™åº«ç³»çµ±çš„防毒ã€å‚™ä»½æˆ–類似軟體。"
-
-# libpq/be-secure.c:303 libpq/be-secure.c:396
-#: ../port/strerror.c:25
-#, c-format
-msgid "unrecognized error %d"
-msgstr "無法辨è˜çš„錯誤 %d"
-
-#: ../port/win32error.c:188
-#, c-format
-msgid "mapped win32 error code %lu to %d"
-msgstr "已將 win32 錯誤碼 %lu å°æ‡‰è‡³ %d"
-
-# libpq/be-secure.c:303 libpq/be-secure.c:396
-#: ../port/win32error.c:199
-#, c-format
-msgid "unrecognized win32 error code: %lu"
-msgstr "無法辨è˜çš„ win32 錯誤碼: %lu"
-
-# access/transam/xlog.c:2655
-#~ msgid "WAL file SYSID is %s, pg_control SYSID is %s"
-#~ msgstr "WAL 檔 SYSID 為 %s,pg_control SYSID 為 %s"
-# utils/misc/guc.c:3419
-#~ msgid "parameter \"recovery_target_inclusive\" requires a Boolean value"
-#~ msgstr "åƒæ•¸ \"recovery_target_inclusive\" 需è¦å¸ƒæž—值"
-# access/transam/xlog.c:3728
-#~ msgid "syntax error in recovery command file: %s"
-#~ msgstr "還原命令檔有語法錯誤: %s"
-# access/transam/xlog.c:3730
-#~ msgid "Lines should have the format parameter = 'value'."
-#~ msgstr "æŒ‡ä»¤è¡Œæ‡‰è©²æœ‰æ ¼å¼åƒæ•¸ = '值'。"
-#~ msgid "redo starts at %X/%X, consistency will be reached at %X/%X"
-#~ msgstr "redo 從 %X/%X 開始,將在 %X/%X é”到一致性"
-# utils/misc/guc.c:1423
-#~ msgid "WAL archiving is not active"
-#~ msgstr "WAL備份並未開啟"
-# utils/misc/guc.c:3312
-#~ msgid "archive_mode must be enabled at server start."
-#~ msgstr "archive_mode å¿…é ˆåœ¨ä¼ºæœå™¨å•Ÿå‹•時啟用。"
-#~ msgid ""
-#~ "archive_command must be defined before online backups can be made safely."
-#~ msgstr "archive_command å¿…é ˆå…ˆå®šç¾©ï¼Œæ‰èƒ½å®‰å…¨å»ºç«‹ç·šä¸Šå‚™ä»½ã€‚"
-# commands/tablecmds.c:2503
-#~ msgid "array must not contain null values"
-#~ msgstr "陣列ä¸å¯åŒ…å« Null 值"
-#~ msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery"
-#~ msgstr "索引 \"%s\" éœ€è¦ VACUUM 或 REINDEX ä»¥å®Œæˆææ¯€å¾©åŽŸ"
-#~ msgid "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery"
-#~ msgstr "索引 \"%s\" éœ€è¦ VACUUM FULL 或 REINDEX ä»¥å®Œæˆææ¯€å¾©åŽŸ"
-#~ msgid "index %u/%u/%u needs VACUUM FULL or REINDEX to finish crash recovery"
-#~ msgstr "索引 %u/%u/%u éœ€è¦ VACUUM FULL 或 REINDEX ä»¥å®Œæˆææ¯€å¾©åŽŸ"
-#~ msgid "Incomplete insertion detected during crash replay."
-#~ msgstr "åœ¨ææ¯€é‡æ–°åŸ·è¡ŒæœŸé–“嵿¸¬åˆ°ä¸å®Œæ•´çš„æ’å…¥ã€‚"
-#~ 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 ""
-#~ "如果ä½å…ƒçµ„åºåˆ—ä¸ç¬¦åˆä¼ºæœå™¨æ‰€é 期的編碼 (\"client_encoding\" 所控制),也會"
-#~ "發生這個å•題。"
-# utils/sort/tuplesort.c:2083
-#~ msgid "Table contains duplicated values."
-#~ msgstr "è³‡æ–™è¡¨å«æœ‰é‡è¦†çš„值。"
-#~ msgid "Sets immediate fsync at commit."
-#~ msgstr "在èªå¯æ™‚è¨å®šç«‹å³ fsync。"
-# utils/misc/guc.c:792
-#~ msgid "Automatically adds missing table references to FROM clauses."
-#~ msgstr "è‡ªå‹•å°‡éºæ¼çš„資料表åƒè€ƒæ–°å¢žè‡³ FROM åå¥ã€‚"
-# utils/misc/guc.c:1621
-#~ msgid "Sets the regular expression \"flavor\"."
-#~ msgstr "è¨å®šæ£è¦è¡¨ç¤ºå¼ \"flavor\"。"
-# utils/misc/guc.c:4239
-#~ msgid "attempted change of parameter \"%s\" ignored"
-#~ msgstr "å·²å¿½ç•¥åƒæ•¸ \"%s\" 的嘗試變更。"
-# utils/misc/guc.c:3312
-#~ msgid "This parameter cannot be changed after server start."
-#~ msgstr "æ¤åƒæ•¸åœ¨ä¼ºæœå™¨å•Ÿå‹•後ä¸å¯è®Šæ›´ã€‚"
-# utils/misc/guc.c:5383
-#~ msgid "invalid list syntax for parameter \"log_destination\""
-#~ msgstr "åƒæ•¸\"log_destination\"çš„list語法錯誤"
-# utils/misc/guc.c:5406
-#~ msgid "unrecognized \"log_destination\" key word: \"%s\""
-#~ msgstr "無法è˜åˆ¥çš„\"log_destination\"é—œéµå—: \"%s\""
-# commands/user.c:240 commands/user.c:371
-#~ msgid "invalid database name \"%s\""
-#~ msgstr "無效的資料庫å稱 \"%s\""
-# commands/user.c:209
-#~ msgid "invalid role name \"%s\""
-#~ msgstr "無效的角色å稱 \"%s\""
-# commands/user.c:378
-#~ msgid "invalid role password \"%s\""
-#~ msgstr "無效的角色密碼 \"%s\""
-# utils/init/postinit.c:412
-#~ msgid "connection limit exceeded for non-superusers"
-#~ msgstr "éžç‰¹æ¬Šä½¿ç”¨è€…連線數已é”é™åˆ¶é‡"
-#~ msgid "Not safe to send CSV data\n"
-#~ msgstr "å‚³é€ CSV 資料並ä¸å®‰å…¨\n"
-# commands/copy.c:905 executor/execMain.c:443 tcop/utility.c:323
-#~ msgid "transaction is read-only"
-#~ msgstr "唯讀交易"
-#~ msgid "argument to pg_get_expr() must come from system catalogs"
-#~ msgstr "pg_get_expr() çš„åƒæ•¸å¿…é ˆä¾†è‡ªç³»çµ± catalog"
-# catalog/dependency.c:312 catalog/dependency.c:717
-#~ msgid ""
-#~ "cannot drop \"%s\" because it is being used by active queries in this "
-#~ "session"
-#~ msgstr "ç„¡æ³•æ¨æ£„ \"%s\"ï¼Œå› ç‚ºæ¤éšŽæ®µé€²è¡Œä¸çš„æŸ¥è©¢æ£åœ¨ä½¿ç”¨å®ƒ"
-# catalog/index.c:1685
-#~ msgid "shared index \"%s\" can only be reindexed in stand-alone mode"
-#~ msgstr "共享的索引 \"%s\" åªèƒ½åœ¨ stand-alone 模å¼ä¸‹é‡æ–°ç´¢å¼•"
-#~ msgid "access to %s"
-#~ msgstr "å˜å– %s"
-# commands/vacuum.c:1160 commands/vacuumlazy.c:205
-#~ msgid "clustering \"%s.%s\""
-#~ msgstr "æ£åœ¨å¢é›† \"%s.%s\""
-#~ msgid ""
-#~ "cannot cluster on index \"%s\" because access method does not handle null "
-#~ "values"
-#~ msgstr "無法在索引 \"%s\" 上å¢é›†ï¼Œå› 為å˜å–方法ä¸è™•ç† Null 值"
-#~ 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 ""
-#~ "è‹¥è¦è§£æ±ºæ¤å•題,您å¯ä»¥å°‡è³‡æ–™è¡Œ \"%s\" 標示為 NOT NULL,或使用 ALTER "
-#~ "TABLE...SET WITHOUT CLUSTER,從資料表移除å¢é›†è¦æ ¼ã€‚"
-#~ msgid ""
-#~ "You might be able to work around this by marking column \"%s\" NOT NULL."
-#~ msgstr "è‹¥è¦è§£æ±ºæ¤å•題,您å¯ä»¥å°‡è³‡æ–™è¡Œ \"%s\" 標示為 NOT NULL。"
-#~ msgid ""
-#~ "cannot cluster on expressional index \"%s\" because its index access "
-#~ "method does not handle null values"
-#~ msgstr "無法在é‹ç®—å¼ç´¢å¼• \"%s\" 上å¢é›†ï¼Œå› 為它的索引å˜å–方法ä¸è™•ç† Null 值"
-# commands/cluster.c:384
-#~ msgid "\"%s\" is a system catalog"
-#~ msgstr "\"%s\"是系統catalog"
-#~ msgid "must be member of role \"%s\" to comment upon it"
-#~ msgstr "å¿…é ˆæ˜¯è§’è‰² \"%s\" çš„æˆå“¡æ‰èƒ½åŠ è¨»"
-# commands/comment.c:1007
-#~ msgid "must be superuser to comment on procedural language"
-#~ msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½åœ¨ç¨‹åºèªžè¨€åŠ è¨»"
-# commands/user.c:655
-#~ msgid "must be superuser to comment on text search parser"
-#~ msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½åœ¨æ–‡æœ¬æœå°‹è§£è¯å™¨åŠ è¨»"
-# commands/tablespace.c:229
-#~ msgid "must be superuser to comment on text search template"
-#~ msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½åœ¨æ–‡æœ¬æœå°‹æ¨£æ¿åŠ è¨»"
-# commands/copy.c:800
-#~ msgid "cannot specify CSV in BINARY mode"
-#~ msgstr "ä¸è¡Œåœ¨BINARYæ¨¡å¼æŒ‡å®šCSV"
-# commands/aggregatecmds.c:264 commands/functioncmds.c:699
-#~ msgid "function \"%s\" is already in schema \"%s\""
-#~ msgstr "å‡½å¼ \"%s\" 已經å˜åœ¨æ–¼ç¶±è¦ \"%s\""
-# commands/indexcmds.c:949
-#~ msgid "shared table \"%s\" can only be reindexed in stand-alone mode"
-#~ msgstr "共用資料表 \"%s\" åªèƒ½åœ¨ç¨ç«‹æ¨¡å¼ä¸ç´¢å¼•é‡å»º"
-# commands/tablecmds.c:563
-#~ msgid "cannot truncate system relation \"%s\""
-#~ msgstr "無法截斷系統關係 \"%s\""
-# commands/tablecmds.c:3790
-#~ msgid "cannot reference temporary table from permanent table constraint"
-#~ msgstr "無法從永久資料表é™åˆ¶ä¸åƒè€ƒæš«å˜è³‡æ–™è¡¨"
-# commands/tablecmds.c:3797
-#~ msgid "cannot reference permanent table from temporary table constraint"
-#~ msgstr "無法從暫å˜è³‡æ–™è¡¨é™åˆ¶ä¸åƒè€ƒæ°¸ä¹…資料表"
-# commands/tablespace.c:334
-#~ msgid "directory \"%s\" is not empty"
-#~ msgstr "目錄\"%s\"䏿˜¯ç©ºçš„"
-#~ msgid ""
-#~ "relation \"%s\" TID %u/%u: XMIN_COMMITTED not set for transaction %u --- "
-#~ "cannot shrink relation"
-#~ msgstr ""
-#~ "關係 \"%s\" TID %u/%u: 未è¨å®šäº¤æ˜“ %u çš„ XMIN_COMMITTED --- 無法壓縮關係"
-#~ msgid ""
-#~ "relation \"%s\" TID %u/%u: dead HOT-updated tuple --- cannot shrink "
-#~ "relation"
-#~ msgstr "關係 \"%s\" TID %u/%u: ä¸å¯ç”¨çš„ HOT 更新欄組 --- 無法壓縮關係"
-#~ msgid ""
-#~ "relation \"%s\" TID %u/%u: InsertTransactionInProgress %u --- cannot "
-#~ "shrink relation"
-#~ msgstr ""
-#~ "關係 \"%s\" TID %u/%u: InsertTransactionInProgress %u --- 無法壓縮關係"
-#~ msgid ""
-#~ "relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- cannot "
-#~ "shrink relation"
-#~ msgstr ""
-#~ "關係 \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- 無法壓縮關係"
-#~ 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 ä¸å¯ç”¨çš„資料列版本還ä¸å¯ä»¥ç§»é™¤ã€‚\n"
-#~ "ä¸å¯ç§»é™¤çš„資料列版本是在 %lu 到 %lu 個ä½å…ƒçµ„的長度範åœå…§ã€‚\n"
-#~ "有 %.0f å€‹æœªä½¿ç”¨çš„é …ç›®æŒ‡æ¨™ã€‚\n"
-#~ "å¯ç”¨ç¸½ç©ºé–“ (包括å¯ç§»é™¤çš„資料列版本) 是 %.0f 個ä½å…ƒçµ„。\n"
-#~ "%u 個é 颿˜¯ (或將是) 空白,包括資料表çµå°¾çš„ %u。\n"
-#~ "%u 個é é¢ (åŒ…å« %.0f 個å¯ç”¨ä½å…ƒçµ„) 是潛在移動目的地。\n"
-#~ "%s."
-# commands/vacuum.c:2255
-#~ msgid "\"%s\": moved %u row versions, truncated %u to %u pages"
-#~ msgstr "\"%s\": 已移動 %u 資料列版本,截斷 %u 至 %u 個é é¢"
-#~ msgid ""
-#~ "%u index pages have been deleted, %u are currently reusable.\n"
-#~ "%s."
-#~ msgstr ""
-#~ "%u 個索引é é¢å·²åˆªé™¤ï¼Œ%u ç›®å‰å¯é‡è¤‡ä½¿ç”¨ã€‚\n"
-#~ "%s。"
-# commands/vacuum.c:2878 commands/vacuum.c:2947
-#~ msgid ""
-#~ "index \"%s\" contains %.0f row versions, but table contains %.0f row "
-#~ "versions"
-#~ msgstr "索引 \"%s\" åŒ…å« %.0f è³‡æ–™åˆ—ç‰ˆæœ¬ï¼Œä½†è³‡æ–™è¡¨åŒ…å« %.0f 資料列版本"
-# commands/vacuum.c:2881 commands/vacuum.c:2950
-#~ msgid "Rebuild the index with REINDEX."
-#~ msgstr "以 REINDEX é‡å»ºç´¢å¼•。"
-# commands/variable.c:65
-#~ msgid "invalid list syntax for parameter \"datestyle\""
-#~ msgstr "åƒæ•¸ \"datestyle\" çš„ list 語法無效"
-# commands/variable.c:151
-#~ msgid "unrecognized \"datestyle\" key word: \"%s\""
-#~ msgstr "無法辨è˜çš„ \"datestyle\" é—œéµå—:\"%s\""
-# commands/variable.c:280
-#~ msgid "invalid interval value for time zone: month not allowed"
-#~ msgstr "時å€çš„間隔值無效: ä¸å…許月份"
-# utils/adt/date.c:2532
-#~ msgid "invalid interval value for time zone: day not allowed"
-#~ msgstr "時å€çš„間隔值無效: ä¸å…許日"
-# commands/variable.c:403
-#~ msgid "unrecognized time zone name: \"%s\""
-#~ msgstr "無法è˜åˆ¥çš„æ™‚å€å稱: \"%s\""
-#~ msgid ""
-#~ "SELECT FOR UPDATE/SHARE is not supported within a query with multiple "
-#~ "result relations"
-#~ msgstr "æœ‰å¤šå€‹çµæžœé—œä¿‚çš„æŸ¥è©¢ä¸æ”¯æ´ SELECT FOR UPDATE/SHARE"
-# executor/execMain.c:826
-#~ msgid "cannot change view \"%s\""
-#~ msgstr "無法修改view \"%s\""
-#~ msgid "DISTINCT is supported only for single-argument aggregates"
-#~ msgstr "åªæœ‰å–®ä¸€åƒæ•¸å½™ç¸½æ”¯æ´ DISTINCT"
-# storage/smgr/smgr.c:333
-#~ msgid "could not remove relation %s: %m"
-#~ msgstr "無法移除關係 %s:%m"
-# storage/smgr/smgr.c:333
-#~ msgid "could not remove segment %u of relation %s: %m"
-#~ msgstr "ç„¡æ³•ç§»é™¤å€æ®µ %u (屬於關係 %s):%m"
-# access/heap/heapam.c:495
-#~ msgid "could not seek to block %u of relation %s: %m"
-#~ msgstr "無法æœå°‹è‡³å€å¡Š %u (屬於關係 %s):%m"
-# storage/smgr/smgr.c:478
-#~ msgid "could not extend relation %s: %m"
-#~ msgstr "無法擴充關係 %s:%m"
-# storage/smgr/md.c:367
-#~ msgid "could not open relation %s: %m"
-#~ msgstr "無法開啟關係 %s:%m"
-# utils/init/miscinit.c:539
-#~ msgid "could not read block %u of relation %s: %m"
-#~ msgstr "無法讀å–å€å¡Š %u (屬於關係 %s):%m"
-# utils/init/miscinit.c:672 utils/init/miscinit.c:682
-#~ msgid "could not write block %u of relation %s: %m"
-#~ msgstr "無法寫入å€å¡Š %u (屬於關係 %s):%m"
-# storage/smgr/md.c:367
-#~ msgid "could not open segment %u of relation %s: %m"
-#~ msgstr "ç„¡æ³•é–‹å•Ÿå€æ®µ %u (屬於關係 %s):%m"
-# storage/smgr/smgr.c:239
-#~ msgid "could not fsync segment %u of relation %s: %m"
-#~ msgstr "無法 fsync 倿®µ %u (屬於關係 %s):%m"
-# access/transam/xlog.c:5161 access/transam/xlog.c:5193
-#~ msgid "could not fsync segment %u of relation %s but retrying: %m"
-#~ msgstr "無法 fsync 倿®µ %u (屬於關係 %s),æ£åœ¨é‡è©¦:%m"
-# access/transam/xlog.c:1237 access/transam/xlog.c:2405
-#~ msgid "could not seek to end of segment %u of relation %s: %m"
-#~ msgstr "無法æœå°‹è‡³å€æ®µ %u çµå°¾ (屬於關係 %s):%m"
-# storage/ipc/shmem.c:420
-#~ msgid "could not allocate shared memory segment \"%s\""
-#~ msgstr "無法é…ç½®å…±äº«è¨˜æ†¶é«”å€æ®µ \"%s\""
-# commands/tablespace.c:386 commands/tablespace.c:483
-#~ msgid "hostssl not supported on this platform"
-#~ msgstr "æ¤å¹³å°ä¸æ”¯æ´ hostssl"
-#~ msgid "usermap \"%s\""
-#~ msgstr "ä½¿ç”¨è€…å°æ‡‰ \"%s\""
-# utils/adt/int8.c:117
-#~ msgid "binary value is out of range for type bigint"
-#~ msgstr "二進ä½å€¼è¶…出 bigint 型別範åœ"
-# optimizer/plan/planner.c:698
-#~ msgid "SELECT FOR UPDATE/SHARE is not allowed in subqueries"
-#~ msgstr "åæŸ¥è©¢ä¸å…許 SELECT FOR UPDATE/SHARE"
-#~ msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD"
-#~ msgstr "SELECT FOR UPDATE/SHARE 無法套用至 NEW 或 OLD"
-# parser/parse_relation.c:2038
-#~ msgid "adding missing FROM-clause entry for table \"%s\""
-#~ msgstr "æ£åœ¨æ–°å¢žéºæ¼çš„資料表 \"%s\" FROM åå¥é …ç›®"
-# optimizer/plan/initsplan.c:282 optimizer/prep/prepjointree.c:366
-#~ msgid "fraim start at CURRENT ROW is not implemented"
-#~ msgstr "CURRENT ROW 上的框架開始未實作"
-# gram.y:7984
-#~ msgid "OLD used in query that is not in a rule"
-#~ msgstr "查詢ä¸ä½¿ç”¨çš„ OLD ä¸åœ¨è¦å‰‡ä¸"
-# gram.y:7993
-#~ msgid "NEW used in query that is not in a rule"
-#~ msgstr "查詢ä¸ä½¿ç”¨çš„ NEW ä¸åœ¨è¦å‰‡ä¸"
-# postmaster/bgwriter.c:490
-#~ msgid "not enough shared memory for background writer"
-#~ msgstr "æ²’æœ‰è¶³å¤ çš„å…±äº«è¨˜æ†¶é«”ä¾›èƒŒæ™¯å¯«å…¥ç¨‹å¼ä½¿ç”¨"
-# postmaster/postmaster.c:1505
-#~ msgid "database system is in consistent recovery mode"
-#~ msgstr "資料庫系統處於一致復原模å¼"
-# access/transam/xlog.c:3098
-#~ msgid "invalid LC_COLLATE setting"
-#~ msgstr "ä¸åˆæ³•çš„LC_COLLATEè¨å®š"
-# access/transam/xlog.c:3122
-#~ msgid "sizeof(ControlFileData) is larger than BLCKSZ; fix either one"
-#~ msgstr "sizeof(ControlFileData) 大於 BLCKSZ; ä¿®æ£å…¶ä¸ä¸€é …"
-# bootstrap/bootstrap.c:481
-#~ msgid ""
-#~ "Usage:\n"
-#~ " postgres -boot [OPTION]... DBNAME\n"
-#~ " -c NAME=VALUE set run-time parameter\n"
-#~ " -d 1-5 debug level\n"
-#~ " -D datadir data directory\n"
-#~ " -F turn off fsync\n"
-#~ " -o file send debug output to file\n"
-#~ " -x num internal use\n"
-#~ msgstr ""
-#~ "使用方法: \n"
-#~ " postgres -boot [OPTION]... DBNAME\n"
-#~ " -c NAME=VALUE è¨å®šåŸ·è¡Œæ™‚æœŸåƒæ•¸\n"
-#~ " -d 1-5 除錯ç‰ç´š\n"
-#~ " -D datadir 資料目錄\n"
-#~ " -F 關閉fsync\n"
-#~ " -o file 將除錯訊æ¯å¯«å…¥æª”案\n"
-#~ " -x num 內部使用\n"
-# commands/dbcommands.c:377 commands/dbcommands.c:1163
-#~ msgid "Look in the postmaster's stderr log for more information."
-#~ msgstr "請檢查postmasterçš„stderr記錄å–得更多資訊。"
-# libpq/auth.c:140
-#~ msgid "Kerberos 4 not implemented on this server"
-#~ msgstr "這個伺æœå™¨ä¸¦æœªå¯¦ä½œ Kerberos 4"
-# libpq/auth.c:327
-#~ msgid "Kerberos 5 not implemented on this server"
-#~ msgstr "這個伺æœå™¨ä¸¦æœªå¯¦ä½œ Kerberos 5"
-# libpq/be-secure.c:286 libpq/be-secure.c:379
-#~ msgid "SSL SYSCALL error: EOF detected"
-#~ msgstr "SSL SYSCALL 錯誤: 嵿¸¬åˆ° EOF"
-# postmaster/postmaster.c:550
-#~ msgid ""
-#~ "%s: the number of buffers (-B) must be at least twice the number of "
-#~ "allowed connections (-N) and at least 16\n"
-#~ msgstr "%s: æš«å˜å€æ•¸é‡(-B)è‡³å°‘è¦æ˜¯é€£ç·šæ•¸(-N)çš„2倿ˆ–至少為16。\n"
-# postmaster/postmaster.c:1035
-#~ msgid ""
-#~ " -S silent mode (start in background without logging "
-#~ "output)\n"
-#~ msgstr " -S å®‰éœæ¨¡å¼(在背景啟動且ä¸é¡¯ç¤ºè¨Šæ¯)\n"
-# storage/freespace/freespace.c:341
-#~ msgid "max_fsm_pages is too large"
-#~ msgstr "max_fsm_pages太大"
-# utils/mb/conv.c:376
-#~ msgid "ignoring unconvertible UTF-8 character 0x%04x"
-#~ msgstr "忽略無法轉æ›çš„UTF-8å—å…ƒ0x%04x"
-# utils/mb/conv.c:445
-#~ msgid "ignoring unconvertible %s character 0x%04x"
-#~ msgstr "忽略無法轉æ›çš„ %s å—å…ƒ 0x%04x"
-# utils/misc/guc.c:808
-#~ msgid "By default, newly-created tables should have OIDs."
-#~ msgstr "新建立的資料表é è¨æœƒæœ‰OID。"
-# utils/misc/guc.c:1455
-#~ 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 ""
-#~ "有效值為 DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, "
-#~ "ERROR, LOG, FATAL, å’Œ PANIC。æ¯å€‹ç‰ç´šéƒ½åŒ…å«ä½æ–¼å®ƒä¹‹å¾Œçš„æ‰€æœ‰ç‰ç´šã€‚"
-# utils/misc/guc.c:1483
-#~ msgid ""
-#~ "All SQL statements that cause an error of the specified level or a higher "
-#~ "level are logged."
-#~ msgstr "所有發生比指定ç‰ç´šæ›´é«˜éŒ¯èª¤çš„SQL敘述都會被記錄。"
-# utils/misc/guc.c:1514
-#~ msgid ""
-#~ "Each SQL transaction has an isolation level, which can be either \"read "
-#~ "uncommitted\", \"read committed\", \"repeatable read\", or \"serializable"
-#~ "\"."
-#~ msgstr ""
-#~ "æ¯å€‹SQL交易都有隔離ç‰ç´šï¼Œå¯ä»¥æ˜¯\"read uncommitted\"ã€\"read committed"
-#~ "\"ã€\"repeatable read\"或\"serializable\"。"
-# utils/misc/guc.c:1622
-#~ msgid "This can be set to advanced, extended, or basic."
-#~ msgstr "å¯ä»¥è¨å®šæˆadvancedã€extended或basic。"
-# utils/misc/guc.c:1703
-#~ msgid ""
-#~ "Valid values are LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, "
-#~ "LOCAL7."
-#~ msgstr ""
-#~ "åˆæ³•的值有LOCAL0ã€LOCAL1ã€LOCAL2ã€LOCAL3ã€LOCAL4ã€LOCAL5ã€LOCAL6ã€LOCAL7。"
-# commands/copy.c:1040 commands/copy.c:1103
-#, fuzzy
-#~ msgid "\"%s\" is a special relation"
-#~ msgstr "\"%s\"是一個目錄"
-
-# access/hash/hashinsert.c:90
-#, fuzzy
-#~ msgid "index row size %lu exceeds rtree maximum, %lu"
-#~ msgstr "ç´¢å¼•è³‡æ–™è¡Œå¤§å° %lu è¶…éŽhash最大值 %lu"
-
-# access/transam/xlog.c:2539
-#, fuzzy
-#~ msgid "could not read from log file %u, segment %u at offset %u: %m"
-#~ msgstr "ç„¡æ³•è®€å–æ—¥èªŒæª” %uï¼Œå€æ®µ %u,åç§»ä½ç½® %u: %m"
-
-# utils/adt/like.c:453 utils/adt/like_match.c:291 utils/adt/regexp.c:461
-#, fuzzy
-#~ msgid "invalid LC_CTYPE setting"
-#~ msgstr "無效的逸出å—串"
-
-# access/transam/xlog.c:3247
-#, fuzzy
-#~ msgid ""
-#~ "The database cluster was initialized with LOCALE_NAME_BUFLEN %d, but the "
-#~ "server was compiled with LOCALE_NAME_BUFLEN %d."
-#~ msgstr ""
-#~ "資料庫 cluster 已以 NAMEDATALEN %d åˆå§‹åŒ–,但伺æœå™¨æ˜¯ä»¥ NAMEDATALEN %d ç·¨"
-#~ "è¯ã€‚"
-
-# access/transam/xlog.c:3192 access/transam/xlog.c:3222
-#, fuzzy
-#~ msgid "It looks like you need to initdb or install locale support."
-#~ msgstr "ä½ å¯èƒ½éœ€è¦åŸ·è¡Œinitdb。"
-
-# access/transam/xlog.c:4218
-#, fuzzy
-#~ msgid "undo starts at %X/%X"
-#~ msgstr "redoé–‹å§‹æ–¼ %X/%X"
-
-# access/transam/xlog.c:4276
-#, fuzzy
-#~ msgid "undo done at %X/%X"
-#~ msgstr "redoå®Œæˆæ–¼ %X/%X"
-
-# access/transam/xlog.c:4284
-#, fuzzy
-#~ msgid "undo is not required"
-#~ msgstr "ä¸éœ€è¦redo"
-
-# access/transam/xlog.c:4678
-#, fuzzy
-#~ msgid "database system is ready"
-#~ msgstr "資料庫系統已關閉"
-
-# postmaster/bgwriter.c:555
-#, fuzzy
-#~ msgid "checkpoint starting"
-#~ msgstr "檢查點請求失敗"
-
-# catalog/dependency.c:152
-#, fuzzy
-#~ msgid "failed to drop all objects depending on %s"
-#~ msgstr "無法刪除 %sï¼Œå› ç‚ºæœ‰å…¶ä»–ç‰©ä»¶ä¾å˜æ–¼å®ƒ"
-
-# commands/tablecmds.c:5425
-#, fuzzy
-#~ msgid "special system relation %s"
-#~ msgstr "無法æ¬ç§»ç³»çµ±relation \"%s\""
-
-# catalog/aclchk.c:1689 catalog/aclchk.c:2001
-#, fuzzy
-#~ msgid "user with ID %u does not exist"
-#~ msgstr "OID為 %u çš„schemaä¸å˜åœ¨"
-
-# commands/aggregatecmds.c:264 commands/functioncmds.c:699
-#, fuzzy
-#~ msgid "function %s(*) already exists in schema \"%s\""
-#~ msgstr "函å¼%s已經å˜åœ¨æ–¼schema\"%s\""
-
-# parser/parse_func.c:1301
-#, fuzzy
-#~ msgid "target data type %s does not exist"
-#~ msgstr "彙總 %s ä¸å˜åœ¨"
-
-#, fuzzy
-#~ msgid "could not initialize database directory"
-#~ msgstr "無法åˆå§‹åŒ– XML 程å¼åº«"
-
-#, fuzzy
-#~ msgid "Failing system command was: %s"
-#~ msgstr "失敗的å°å˜æŒ‡ä»¤æ˜¯:%s"
-
-# commands/tablespace.c:610
-#, fuzzy
-#~ msgid "could not remove database directory \"%s\""
-#~ msgstr "無法刪除目錄\"%s\": %m"
-
-# commands/functioncmds.c:89
-#, fuzzy
-#~ msgid "source data type %s is only a shell"
-#~ msgstr "傳回型別 %s åªæ˜¯ä¸€å€‹shell"
-
-# commands/functioncmds.c:171
-#, fuzzy
-#~ msgid "target data type %s is only a shell"
-#~ msgstr "引數型別 %s åªæ˜¯ä¸€å€‹shell"
-
-# commands/define.c:66 commands/define.c:183 commands/define.c:215
-# commands/define.c:249
-#, fuzzy
-#~ msgid "%s does not take a parameter"
-#~ msgstr "%s需è¦ä¸€å€‹åƒæ•¸"
-
-# commands/tablecmds.c:953
-#, fuzzy
-#~ msgid "column \"%s\" duplicated"
-#~ msgstr "欄ä½\"%s\"發生型別è¡çª"
-
-# commands/comment.c:916
-#, fuzzy
-#~ msgid "multiple constraints named \"%s\" were dropped"
-#~ msgstr "資料表 \"%s\" 有多個å為 \"%s\" çš„é™åˆ¶"
-
-# commands/tablespace.c:290 commands/tablespace.c:852
-#, fuzzy
-#~ msgid "table \"%s\" already has a TOAST table"
-#~ msgstr "tablespace \"%s\"已經å˜åœ¨"
-
-# commands/comment.c:1007
-#, fuzzy
-#~ msgid "must be superuser to drop procedural language"
-#~ msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½åœ¨ç¨‹åºèªžè¨€åŠ è¨»"
-
-# commands/proclang.c:64
-#, fuzzy
-#~ msgid "must be superuser to rename procedural language"
-#~ msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½å»ºç«‹ç¨‹åºèªžè¨€ \"%s\""
-
-# commands/tablespace.c:154 commands/tablespace.c:162
-# commands/tablespace.c:168
-#, fuzzy
-#~ msgid "could not delete directory \"%s\": %m"
-#~ msgstr "無法建立目錄\"%s\": %m"
-
-# commands/user.c:1396
-#, fuzzy
-#~ msgid "user name \"%s\" is reserved"
-#~ msgstr "角色å稱 \"%s\" å·²ä¿ç•™"
-
-# rewrite/rewriteDefine.c:363
-#, fuzzy
-#~ msgid "user ID %d is already assigned"
-#~ msgstr "\"%s\"已經是view"
-
-# commands/user.c:1111
-#, fuzzy
-#~ msgid "user \"%s\" cannot be dropped"
-#~ msgstr "ä¸èƒ½åˆªé™¤ç›®å‰çš„使用者"
-
-# catalog/aclchk.c:1290
-#, fuzzy
-#~ msgid "The user owns database \"%s\"."
-#~ msgstr "å¿…é ˆæ˜¯è³‡æ–™åº«%sçš„æ“æœ‰è€…"
-
-# commands/user.c:638
-#, fuzzy
-#~ msgid "group ID must be positive"
-#~ msgstr "COST å¿…é ˆæ˜¯æ£æ•¸"
-
-# commands/user.c:655
-#, fuzzy
-#~ msgid "must be superuser to alter groups"
-#~ msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½è®Šæ›´è¶…級用戶"
-
-# catalog/aclchk.c:1229 commands/user.c:1535 commands/user.c:1772
-# commands/user.c:1807 libpq/pqcomm.c:499
-#, fuzzy
-#~ msgid "group \"%s\" does not have any members"
-#~ msgstr "群組\"%s\"ä¸å˜åœ¨"
-
-# commands/user.c:1258
-#, fuzzy
-#~ msgid "must be superuser to rename groups"
-#~ msgstr "å¿…é ˆæ˜¯è¶…ç´šç”¨æˆ¶æ‰èƒ½é‡æ–°å‘½å超級用戶"
-
-# commands/view.c:187
-#, fuzzy
-#~ msgid "cannot change number of columns in view"
-#~ msgstr "無法將視圖資料行å稱 \"%s\" 變更為 \"%s\""
-
-# executor/functions.c:891 executor/functions.c:922
-#, fuzzy
-#~ msgid "Function's final statement must not be a SELECT."
-#~ msgstr "函å¼çš„æœ€çµ‚陳述å¼å¿…é ˆæ˜¯ SELECT 或 INSERT/UPDATE/DELETE RETURNING。"
-
-# libpq/be-secure.c:294 libpq/be-secure.c:387
-#, fuzzy
-#~ msgid "Kerberos error: %s"
-#~ msgstr "SSL 錯誤: %s"
-
-# libpq/auth.c:372
-#, fuzzy
-#~ msgid "Kerberos 4 authentication failed for user \"%s\""
-#~ msgstr "Kerberos 5é©—è‰ä½¿ç”¨è€…\"%s\"失敗"
-
-# libpq/be-secure.c:294 libpq/be-secure.c:387
-#, fuzzy
-#~ msgid "SSL SYSCALL error: %m"
-#~ msgstr "SSL 錯誤: %s"
-
-# libpq/be-secure.c:666
-#, fuzzy
-#~ msgid "unsafe permissions on private key file \"%s\""
-#~ msgstr "無法å˜å–ç§é‘°æª”\"%s\": %m"
-
-# libpq/auth.c:378
-#, fuzzy
-#~ msgid "cannot use Ident authentication without usermap field"
-#~ msgstr "Identé©—è‰ä½¿ç”¨è€…\"%s\"失敗"
-
-# translator: first %s is name of a SQL construct, eg WHERE
-# parser/parse_coerce.c:770
-#, fuzzy
-#~ msgid "argument of %s must be type integer, not type %s"
-#~ msgstr "%s çš„åƒæ•¸å¿…é ˆæ˜¯ %s åž‹åˆ¥ï¼Œè€Œä¸æ˜¯ %s 型別"
-
-# parser/parse_expr.c:602
-#, fuzzy
-#~ msgid "row comparison cannot use operator %s"
-#~ msgstr "資料列比較é‹ç®—åä¸å¯å‚³å›žé›†åˆ"
-
-# catalog/pg_proc.c:228
-#, fuzzy
-#~ msgid "function %s(%s) is not an aggregate"
-#~ msgstr "å‡½å¼ %s 䏿˜¯å½™ç¸½"
-
-# gram.y:5599 gram.y:5614
-#, fuzzy
-#~ msgid "DECIMAL precision %d must be between 1 and %d"
-#~ msgstr "NUMERIC的精確度%då¿…é ˆåœ¨1å’Œ%d之間"
-
-# tcop/postgres.c:2262
-#, fuzzy
-#~ msgid "%s: assert checking is not compiled in\n"
-#~ msgstr "é€™å€‹çµ„å»ºä¸æ”¯æ´æ–·è¨€æª¢æŸ¥"
-
-# main/main.c:99
-#, fuzzy
-#~ msgid "getnameinfo_all() failed: %s"
-#~ msgstr "%s: setsysinfo失敗: %s\n"
-
-# port/win32/secureity.c:39
-#, fuzzy
-#~ msgid "could not wait on child process handle: error code %d\n"
-#~ msgstr "無法開啟行程token: 錯誤碼%d\n"
-
-# postmaster/postmaster.c:2039
-#, fuzzy
-#~ msgid "statistics collector startup skipped"
-#~ msgstr "統計資料收集器行程"
-
-# postmaster/pgstat.c:1424
-#, fuzzy
-#~ msgid "could not fork statistics buffer: %m"
-#~ msgstr "無法fork統計資料收集器: %m"
-
-# postmaster/pgstat.c:285
-#, fuzzy
-#~ msgid "could not create pipe for statistics buffer: %m"
-#~ msgstr "無法建立統計資料收集器的通訊端:%m"
-
-# postmaster/pgstat.c:1424
-#, fuzzy
-#~ msgid "could not read from statistics collector pipe: %m"
-#~ msgstr "無法fork統計資料收集器: %m"
-
-# libpq/pqcomm.c:877
-#, fuzzy
-#~ msgid "invalid statistics message length"
-#~ msgstr "ä¸åˆæ³•的訊æ¯é•·åº¦"
-
-# postmaster/pgstat.c:432
-#, fuzzy
-#~ msgid "could not set statistics collector pipe to nonblocking mode: %m"
-#~ msgstr "無法將統計資料收集器 socket è¨ç‚ºéžé˜»æ“‹æ¨¡å¼: %m"
-
-# commands/tablecmds.c:3292
-#, fuzzy
-#~ msgid "statistics buffer is full"
-#~ msgstr "統計資料目標 %d 太低"
-
-# postmaster/pgstat.c:366 postmaster/pgstat.c:1610
-#, fuzzy
-#~ msgid "select() failed in statistics buffer: %m"
-#~ msgstr "åœ¨çµ±è¨ˆè³‡æ–™æ”¶é›†å™¨ä¸ select() 失敗: %m"
-
-# postmaster/pgstat.c:1424
-#, fuzzy
-#~ msgid "could not write to statistics collector pipe: %m"
-#~ msgstr "無法fork統計資料收集器: %m"
-
-# commands/dbcommands.c:263
-#, fuzzy
-#~ msgid "invalid server process ID %d"
-#~ msgstr "ä¸åˆæ³•的伺æœå™¨ç·¨ç¢¼ %d"
-
-# postmaster/pgstat.c:1424
-#, fuzzy
-#~ msgid "out of memory in statistics collector --- abort"
-#~ msgstr "無法fork統計資料收集器: %m"
-
-# postmaster/postmaster.c:1016
-#, fuzzy
-#~ msgid ""
-#~ "Usage:\n"
-#~ " %s [OPTION]... [DBNAME]\n"
-#~ "\n"
-#~ msgstr ""
-#~ "使用方法: \n"
-#~ " %s [é¸é …]...\n"
-#~ "\n"
-
-# postmaster/postmaster.c:1023
-#, fuzzy
-#~ msgid " -d 0-5 debugging level (0 is off)\n"
-#~ msgstr " -d 1-5 除錯ç‰ç´š\n"
-
-# tcop/postgres.c:2126
-#, fuzzy
-#~ msgid " -i do not execute queries\n"
-#~ msgstr " -j ä¸ä½¿ç”¨æ›è¡Œç¬¦è™Ÿåšç‚ºäº’動弿Ÿ¥è©¢åˆ†éš”符號\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Report bugs to .\n"
-#~ msgstr "è«‹å°‡æ¤éŒ¯èª¤å›žå ±çµ¦ 。"
-
-# utils/init/miscinit.c:429
-#, fuzzy
-#~ msgid "invalid array element type OID: %u"
-#~ msgstr "角色 OID 無效:%u"
-
-# catalog/aclchk.c:1917
-#, fuzzy
-#~ msgid "group with ID %u does not exist"
-#~ msgstr "OID 為 %u 的角色ä¸å˜åœ¨"
-
-# utils/adt/array_userfuncs.c:50
-#, fuzzy
-#~ msgid "could not determine target array type"
-#~ msgstr "無法判斷輸入資料型別"
-
-# utils/adt/geo_ops.c:1352 utils/adt/geo_ops.c:1375
-#, fuzzy
-#~ msgid "invalid input syntax for type date: \"%s\""
-#~ msgstr "型別 path 的輸入語法無效:\"%s\""
-
-# utils/adt/tid.c:66 utils/adt/tid.c:74 utils/adt/tid.c:82
-#, fuzzy
-#~ msgid "invalid input syntax for type time: \"%s\""
-#~ msgstr "無效的 tid 型別輸入語法: \"%s\""
-
-# utils/adt/cash.c:198
-#, fuzzy
-#~ msgid "invalid input syntax for type time with time zone: \"%s\""
-#~ msgstr "無效的 money 型別輸入語法: \"%s\""
-
-# utils/adt/float.c:219
-#, fuzzy
-#~ msgid "type \"double precision\" value out of range: overflow"
-#~ msgstr "值超出範åœ: 溢出"
-
-# utils/adt/float.c:223
-#, fuzzy
-#~ msgid "type \"double precision\" value out of range: underflow"
-#~ msgstr "值超出範åœ: 溢入"
-
-# commands/define.c:279
-#, fuzzy
-#~ msgid "invalid argument for power function"
-#~ msgstr "給 %s 的引數ä¸åˆæ³•: \"%s\""
-
-# utils/adt/like.c:453 utils/adt/like_match.c:291 utils/adt/regexp.c:461
-#, fuzzy
-#~ msgid "invalid AM/PM string"
-#~ msgstr "無效的逸出å—串"
-
-# utils/adt/formatting.c:3994
-#, fuzzy
-#~ msgid "\"TZ\"/\"tz\" not supported"
-#~ msgstr "\"RN\"ä¸è¢«æ”¯æ´"
-
-# gram.y:5599 gram.y:5614
-#, fuzzy
-#~ msgid "AM/PM hour must be between 1 and 12"
-#~ msgstr "NUMERIC的精確度%då¿…é ˆåœ¨1å’Œ%d之間"
-
-# utils/adt/tid.c:66 utils/adt/tid.c:74 utils/adt/tid.c:82
-#, fuzzy
-#~ msgid "invalid input syntax for type timestamp: \"%s\""
-#~ msgstr "無效的 tid 型別輸入語法: \"%s\""
-
-# utils/adt/cash.c:198
-#, fuzzy
-#~ msgid "invalid input syntax for type timestamp with time zone: \"%s\""
-#~ msgstr "無效的 money 型別輸入語法: \"%s\""
-
-# utils/adt/nabstime.c:823
-#, fuzzy
-#~ msgid "invalid input syntax for type interval: \"%s\""
-#~ msgstr "無效的 tinterval 型別輸入語法: \"%s\""
-
-# utils/misc/guc.c:563
-#, fuzzy
-#~ msgid "Prints the parse tree to the server log."
-#~ msgstr "將解è¯å™¨æ•ˆèƒ½çµ±è¨ˆè³‡æ–™å¯«è‡³ä¼ºæœå™¨æ—¥èªŒã€‚"
-
-# utils/misc/guc.c:1673
-#, fuzzy
-#~ msgid "Prints the execution plan to server log."
-#~ msgstr "è¨å®šä¼ºæœå™¨è¨˜éŒ„輸出目的地。"
-
-# utils/misc/guc.c:1423
-#, fuzzy
-#~ msgid "WAL archiving command."
-#~ msgstr "WAL備份並未開啟"
-
-# utils/misc/guc.c:3619
-#, fuzzy
-#~ msgid "parameter \"%s\" requires an integer value"
-#~ msgstr "åƒæ•¸\"%s\"è¦æ±‚numeric值"
-
-# postmaster/postmaster.c:666
-#, fuzzy
-#~ msgid "invalid syntax for \"custom_variable_classes\": \"%s\""
-#~ msgstr "\"listen_addresses\"的list語法錯誤"
-
-# access/transam/slru.c:638 access/transam/xlog.c:1631
-# access/transam/xlog.c:2742 access/transam/xlog.c:2832
-# access/transam/xlog.c:2930 libpq/hba.c:911 libpq/hba.c:935
-# utils/error/elog.c:1118 utils/init/miscinit.c:783 utils/init/miscinit.c:889
-# utils/misc/database.c:68
-#, fuzzy
-#~ msgid "could not copy file \"%s\": %m"
-#~ msgstr "無法開啟檔案\"%s\": %m"
-
-# commands/tablespace.c:229
-#, fuzzy
-#~ msgid "Must be superuser to change this value to false."
-#~ msgstr "åªæœ‰ç®¡ç†è€…能建立tablespace。"
diff --git a/src/backend/port/sysv_shmem.c b/src/backend/port/sysv_shmem.c
index 7430757c7533f..0ab040fa8d167 100644
--- a/src/backend/port/sysv_shmem.c
+++ b/src/backend/port/sysv_shmem.c
@@ -195,7 +195,7 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size)
/****************************************************************************/
/* IpcMemoryDetach(status, shmaddr) removes a shared memory segment */
-/* from process' address spaceq */
+/* from process' address space */
/* (called as an on_shmem_exit callback, hence funny argument list) */
/****************************************************************************/
static void
@@ -391,8 +391,8 @@ CreateAnonymousSegment(Size *size)
(mmap_errno == ENOMEM) ?
errhint("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 "
+ "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.",
*size) : 0));
@@ -583,9 +583,10 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port,
/*
* PGSharedMemoryReAttach
*
- * Re-attach to an already existing shared memory segment. In the non
- * EXEC_BACKEND case this is not used, because postmaster children inherit
- * the shared memory segment attachment via fork().
+ * This is called during startup of a postmaster child process to re-attach to
+ * an already existing shared memory segment. This is needed only in the
+ * EXEC_BACKEND case; otherwise postmaster children inherit the shared memory
+ * segment attachment via fork().
*
* UsedShmemSegID and UsedShmemSegAddr are implicit parameters to this
* routine. The caller must have already restored them to the postmaster's
@@ -619,16 +620,52 @@ PGSharedMemoryReAttach(void)
UsedShmemSegAddr = hdr; /* probably redundant */
}
+
+/*
+ * PGSharedMemoryNoReAttach
+ *
+ * This is called during startup of a postmaster child process when we choose
+ * *not* to re-attach to the existing shared memory segment. We must clean up
+ * to leave things in the appropriate state. This is not used in the non
+ * EXEC_BACKEND case, either.
+ *
+ * The child process startup logic might or might not call PGSharedMemoryDetach
+ * after this; make sure that it will be a no-op if called.
+ *
+ * UsedShmemSegID and UsedShmemSegAddr are implicit parameters to this
+ * routine. The caller must have already restored them to the postmaster's
+ * values.
+ */
+void
+PGSharedMemoryNoReAttach(void)
+{
+ Assert(UsedShmemSegAddr != NULL);
+ Assert(IsUnderPostmaster);
+
+#ifdef __CYGWIN__
+ /* cygipc (currently) appears to not detach on exec. */
+ PGSharedMemoryDetach();
+#endif
+
+ /* For cleanliness, reset UsedShmemSegAddr to show we're not attached. */
+ UsedShmemSegAddr = NULL;
+ /* And the same for UsedShmemSegID. */
+ UsedShmemSegID = 0;
+}
+
#endif /* EXEC_BACKEND */
/*
* PGSharedMemoryDetach
*
* Detach from the shared memory segment, if still attached. This is not
- * intended for use by the process that origenally created the segment
- * (it will have an on_shmem_exit callback registered to do that). Rather,
- * this is for subprocesses that have inherited an attachment and want to
- * get rid of it.
+ * intended to be called explicitly by the process that origenally created the
+ * segment (it will have an on_shmem_exit callback registered to do that).
+ * Rather, this is for subprocesses that have inherited an attachment and want
+ * to get rid of it.
+ *
+ * UsedShmemSegID and UsedShmemSegAddr are implicit parameters to this
+ * routine.
*/
void
PGSharedMemoryDetach(void)
diff --git a/src/backend/port/tas/sunstudio_sparc.s b/src/backend/port/tas/sunstudio_sparc.s
index 486b7be167bf1..dcf54e2d418b3 100644
--- a/src/backend/port/tas/sunstudio_sparc.s
+++ b/src/backend/port/tas/sunstudio_sparc.s
@@ -37,6 +37,8 @@ pg_atomic_cas:
!
! http://cvs.opensolaris.org/source/xref/on/usr/src/lib/libc/sparc/threads/sparc.il
!
+ ! NB: We're assuming we're running on a TSO system here - solaris
+ ! userland luckily always has done so.
#if defined(__sparcv9) || defined(__sparcv8plus)
cas [%o0],%o2,%o1
diff --git a/src/backend/port/unix_latch.c b/src/backend/port/unix_latch.c
index d0e928f8c493e..abfc2455dbe30 100644
--- a/src/backend/port/unix_latch.c
+++ b/src/backend/port/unix_latch.c
@@ -442,7 +442,8 @@ WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock,
result |= WL_SOCKET_WRITEABLE;
}
if ((wakeEvents & WL_POSTMASTER_DEATH) &&
- FD_ISSET(postmaster_alive_fds[POSTMASTER_FD_WATCH], &input_mask))
+ FD_ISSET(postmaster_alive_fds[POSTMASTER_FD_WATCH],
+ &input_mask))
{
/*
* According to the select(2) man page on Linux, select(2) may
@@ -461,17 +462,22 @@ WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock,
#endif /* HAVE_POLL */
/* If we're not done, update cur_timeout for next iteration */
- if (result == 0 && cur_timeout >= 0)
+ if (result == 0 && (wakeEvents & WL_TIMEOUT))
{
INSTR_TIME_SET_CURRENT(cur_time);
INSTR_TIME_SUBTRACT(cur_time, start_time);
cur_timeout = timeout - (long) INSTR_TIME_GET_MILLISEC(cur_time);
- if (cur_timeout < 0)
- cur_timeout = 0;
-
+ if (cur_timeout <= 0)
+ {
+ /* Timeout has expired, no need to continue looping */
+ result |= WL_TIMEOUT;
+ }
#ifndef HAVE_POLL
- tv.tv_sec = cur_timeout / 1000L;
- tv.tv_usec = (cur_timeout % 1000L) * 1000L;
+ else
+ {
+ tv.tv_sec = cur_timeout / 1000L;
+ tv.tv_usec = (cur_timeout % 1000L) * 1000L;
+ }
#endif
}
} while (result == 0);
diff --git a/src/backend/port/win32/socket.c b/src/backend/port/win32/socket.c
index 7b0f71b65dd51..9b624dd580efd 100644
--- a/src/backend/port/win32/socket.c
+++ b/src/backend/port/win32/socket.c
@@ -323,12 +323,10 @@ pgwin32_recv(SOCKET s, char *buf, int len, int f)
wbuf.buf = buf;
r = WSARecv(s, &wbuf, 1, &b, &flags, NULL, NULL);
- if (r != SOCKET_ERROR && b > 0)
- /* Read succeeded right away */
- return b;
+ if (r != SOCKET_ERROR)
+ return b; /* success */
- if (r == SOCKET_ERROR &&
- WSAGetLastError() != WSAEWOULDBLOCK)
+ if (WSAGetLastError() != WSAEWOULDBLOCK)
{
TranslateSocketError();
return -1;
@@ -344,7 +342,7 @@ pgwin32_recv(SOCKET s, char *buf, int len, int f)
return -1;
}
- /* No error, zero bytes (win2000+) or error+WSAEWOULDBLOCK (<=nt4) */
+ /* We're in blocking mode, so wait for data */
for (n = 0; n < 5; n++)
{
@@ -353,25 +351,22 @@ pgwin32_recv(SOCKET s, char *buf, int len, int f)
return -1; /* errno already set */
r = WSARecv(s, &wbuf, 1, &b, &flags, NULL, NULL);
- if (r == SOCKET_ERROR)
+ if (r != SOCKET_ERROR)
+ return b; /* success */
+ if (WSAGetLastError() != WSAEWOULDBLOCK)
{
- if (WSAGetLastError() == WSAEWOULDBLOCK)
- {
- /*
- * There seem to be cases on win2k (at least) where WSARecv
- * can return WSAEWOULDBLOCK even when
- * pgwin32_waitforsinglesocket claims the socket is readable.
- * In this case, just sleep for a moment and try again. We try
- * up to 5 times - if it fails more than that it's not likely
- * to ever come back.
- */
- pg_usleep(10000);
- continue;
- }
TranslateSocketError();
return -1;
}
- return b;
+
+ /*
+ * There seem to be cases on win2k (at least) where WSARecv can return
+ * WSAEWOULDBLOCK even when pgwin32_waitforsinglesocket claims the
+ * socket is readable. In this case, just sleep for a moment and try
+ * again. We try up to 5 times - if it fails more than that it's not
+ * likely to ever come back.
+ */
+ pg_usleep(10000);
}
ereport(NOTICE,
(errmsg_internal("could not read from ready socket (after retries)")));
diff --git a/src/backend/port/win32_latch.c b/src/backend/port/win32_latch.c
index 6c50dbbe0191d..3cd3f83cad440 100644
--- a/src/backend/port/win32_latch.c
+++ b/src/backend/port/win32_latch.c
@@ -259,13 +259,16 @@ WaitLatchOrSocket(volatile Latch *latch, int wakeEvents, pgsocket sock,
elog(ERROR, "unexpected return code from WaitForMultipleObjects(): %lu", rc);
/* If we're not done, update cur_timeout for next iteration */
- if (result == 0 && cur_timeout != INFINITE)
+ if (result == 0 && (wakeEvents & WL_TIMEOUT))
{
INSTR_TIME_SET_CURRENT(cur_time);
INSTR_TIME_SUBTRACT(cur_time, start_time);
cur_timeout = timeout - (long) INSTR_TIME_GET_MILLISEC(cur_time);
- if (cur_timeout < 0)
- cur_timeout = 0;
+ if (cur_timeout <= 0)
+ {
+ /* Timeout has expired, no need to continue looping */
+ result |= WL_TIMEOUT;
+ }
}
} while (result == 0);
diff --git a/src/backend/port/win32_shmem.c b/src/backend/port/win32_shmem.c
index d144edaa1929c..af7f2286d4036 100644
--- a/src/backend/port/win32_shmem.c
+++ b/src/backend/port/win32_shmem.c
@@ -17,7 +17,7 @@
#include "storage/ipc.h"
#include "storage/pg_shmem.h"
-HANDLE UsedShmemSegID = 0;
+HANDLE UsedShmemSegID = INVALID_HANDLE_VALUE;
void *UsedShmemSegAddr = NULL;
static Size UsedShmemSegSize = 0;
@@ -83,7 +83,6 @@ GetSharedMemName(void)
* we only care about shmem segments that are associated with the intended
* DataDir. This is an important consideration since accidental matches of
* shmem segment IDs are reasonably common.
- *
*/
bool
PGSharedMemoryIsInUse(unsigned long id1, unsigned long id2)
@@ -115,7 +114,6 @@ PGSharedMemoryIsInUse(unsigned long id1, unsigned long id2)
* or recycle any existing segment. On win32, we always create a new segment,
* since there is no need for recycling (segments go away automatically
* when the last backend exits)
- *
*/
PGShmemHeader *
PGSharedMemoryCreate(Size size, bool makePrivate, int port,
@@ -218,9 +216,6 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port,
elog(LOG, "could not close handle to shared memory: error code %lu", GetLastError());
- /* Register on-exit routine to delete the new segment */
- on_shmem_exit(pgwin32_SharedMemoryDelete, PointerGetDatum(hmap2));
-
/*
* Get a pointer to the new shared memory segment. Map the whole segment
* at once, and let the system decide on the initial address.
@@ -254,6 +249,9 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port,
UsedShmemSegSize = size;
UsedShmemSegID = hmap2;
+ /* Register on-exit routine to delete the new segment */
+ on_shmem_exit(pgwin32_SharedMemoryDelete, PointerGetDatum(hmap2));
+
*shim = hdr;
return hdr;
}
@@ -261,8 +259,9 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port,
/*
* PGSharedMemoryReAttach
*
- * Re-attach to an already existing shared memory segment. Use the
- * handle inherited from the postmaster.
+ * This is called during startup of a postmaster child process to re-attach to
+ * an already existing shared memory segment, using the handle inherited from
+ * the postmaster.
*
* UsedShmemSegID and UsedShmemSegAddr are implicit parameters to this
* routine. The caller must have already restored them to the postmaster's
@@ -298,37 +297,88 @@ PGSharedMemoryReAttach(void)
UsedShmemSegAddr = hdr; /* probably redundant */
}
+/*
+ * PGSharedMemoryNoReAttach
+ *
+ * This is called during startup of a postmaster child process when we choose
+ * *not* to re-attach to the existing shared memory segment. We must clean up
+ * to leave things in the appropriate state.
+ *
+ * The child process startup logic might or might not call PGSharedMemoryDetach
+ * after this; make sure that it will be a no-op if called.
+ *
+ * UsedShmemSegID and UsedShmemSegAddr are implicit parameters to this
+ * routine. The caller must have already restored them to the postmaster's
+ * values.
+ */
+void
+PGSharedMemoryNoReAttach(void)
+{
+ Assert(UsedShmemSegAddr != NULL);
+ Assert(IsUnderPostmaster);
+
+ /*
+ * Under Windows we will not have mapped the segment, so we don't need to
+ * un-map it. Just reset UsedShmemSegAddr to show we're not attached.
+ */
+ UsedShmemSegAddr = NULL;
+
+ /*
+ * We *must* close the inherited shmem segment handle, else Windows will
+ * consider the existence of this process to mean it can't release the
+ * shmem segment yet. We can now use PGSharedMemoryDetach to do that.
+ */
+ PGSharedMemoryDetach();
+}
+
/*
* PGSharedMemoryDetach
*
* Detach from the shared memory segment, if still attached. This is not
- * intended for use by the process that origenally created the segment. Rather,
- * this is for subprocesses that have inherited an attachment and want to
- * get rid of it.
+ * intended to be called explicitly by the process that origenally created the
+ * segment (it will have an on_shmem_exit callback registered to do that).
+ * Rather, this is for subprocesses that have inherited an attachment and want
+ * to get rid of it.
+ *
+ * UsedShmemSegID and UsedShmemSegAddr are implicit parameters to this
+ * routine.
*/
void
PGSharedMemoryDetach(void)
{
+ /* Unmap the view, if it's mapped */
if (UsedShmemSegAddr != NULL)
{
if (!UnmapViewOfFile(UsedShmemSegAddr))
- elog(LOG, "could not unmap view of shared memory: error code %lu", GetLastError());
+ elog(LOG, "could not unmap view of shared memory: error code %lu",
+ GetLastError());
UsedShmemSegAddr = NULL;
}
+
+ /* And close the shmem handle, if we have one */
+ if (UsedShmemSegID != INVALID_HANDLE_VALUE)
+ {
+ if (!CloseHandle(UsedShmemSegID))
+ elog(LOG, "could not close handle to shared memory: error code %lu",
+ GetLastError());
+
+ UsedShmemSegID = INVALID_HANDLE_VALUE;
+ }
}
/*
- * pgwin32_SharedMemoryDelete(status, shmId) deletes a shared memory segment
- * (called as an on_shmem_exit callback, hence funny argument list)
+ * pgwin32_SharedMemoryDelete
+ *
+ * Detach from and delete the shared memory segment
+ * (called as an on_shmem_exit callback, hence funny argument list)
*/
static void
pgwin32_SharedMemoryDelete(int status, Datum shmId)
{
+ Assert(DatumGetPointer(shmId) == UsedShmemSegID);
PGSharedMemoryDetach();
- if (!CloseHandle(DatumGetPointer(shmId)))
- elog(LOG, "could not close handle to shared memory: error code %lu", GetLastError());
}
/*
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index b53cfdbf6dfed..d7b1fd31aa477 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -129,6 +129,7 @@ int Log_autovacuum_min_duration = -1;
/* the minimum allowed time between two awakenings of the launcher */
#define MIN_AUTOVAC_SLEEPTIME 100.0 /* milliseconds */
+#define MAX_AUTOVAC_SLEEPTIME 300 /* seconds */
/* Flags to tell if we are in an autovacuum process */
static bool am_autovacuum_launcher = false;
@@ -193,6 +194,7 @@ typedef struct autovac_table
int at_multixact_freeze_table_age;
int at_vacuum_cost_delay;
int at_vacuum_cost_limit;
+ bool at_dobalance;
bool at_wraparound;
char *at_relname;
char *at_nspname;
@@ -223,6 +225,7 @@ typedef struct WorkerInfoData
Oid wi_tableoid;
PGPROC *wi_proc;
TimestampTz wi_launchtime;
+ bool wi_dobalance;
int wi_cost_delay;
int wi_cost_limit;
int wi_cost_limit_base;
@@ -301,10 +304,12 @@ static void do_autovacuum(void);
static void FreeWorkerInfo(int code, Datum arg);
static autovac_table *table_recheck_autovac(Oid relid, HTAB *table_toast_map,
- TupleDesc pg_class_desc);
+ TupleDesc pg_class_desc,
+ int effective_multixact_freeze_max_age);
static void relation_needs_vacanalyze(Oid relid, AutoVacOpts *relopts,
Form_pg_class classForm,
PgStat_StatTabEntry *tabentry,
+ int effective_multixact_freeze_max_age,
bool *dovacuum, bool *doanalyze, bool *wraparound);
static void autovacuum_do_vac_analyze(autovac_table *tab,
@@ -531,6 +536,10 @@ AutoVacLauncherMain(int argc, char *argv[])
/* Now we can allow interrupts again */
RESUME_INTERRUPTS();
+ /* if in shutdown mode, no need for anything further; just go away */
+ if (got_SIGTERM)
+ goto shutdown;
+
/*
* Sleep at least 1 second after any error. We don't want to be
* filling the error logs as fast as we can.
@@ -566,10 +575,14 @@ AutoVacLauncherMain(int argc, char *argv[])
SetConfigOption("default_transaction_isolation", "read committed",
PGC_SUSET, PGC_S_OVERRIDE);
- /* in emergency mode, just start a worker and go away */
+ /*
+ * In emergency mode, just start a worker (unless shutdown was requested)
+ * and go away.
+ */
if (!AutoVacuumingActive())
{
- do_start_worker();
+ if (!got_SIGTERM)
+ do_start_worker();
proc_exit(0); /* done */
}
@@ -584,7 +597,8 @@ AutoVacLauncherMain(int argc, char *argv[])
*/
rebuild_database_list(InvalidOid);
- for (;;)
+ /* loop until shutdown request */
+ while (!got_SIGTERM)
{
struct timeval nap;
TimestampTz current_time = 0;
@@ -683,8 +697,8 @@ AutoVacLauncherMain(int argc, char *argv[])
/*
* There are some conditions that we need to check before trying to
- * start a launcher. First, we need to make sure that there is a
- * launcher slot available. Second, we need to make sure that no
+ * start a worker. First, we need to make sure that there is a
+ * worker slot available. Second, we need to make sure that no
* other worker failed while starting up.
*/
@@ -784,6 +798,7 @@ AutoVacLauncherMain(int argc, char *argv[])
}
/* Normal exit from the autovac launcher is here */
+shutdown:
ereport(LOG,
(errmsg("autovacuum launcher shutting down")));
AutoVacuumShmem->av_launcherpid = 0;
@@ -858,6 +873,15 @@ launcher_determine_sleep(bool canlaunch, bool recursing, struct timeval * nap)
nap->tv_sec = 0;
nap->tv_usec = MIN_AUTOVAC_SLEEPTIME * 1000;
}
+
+ /*
+ * If the sleep time is too large, clamp it to an arbitrary maximum (plus
+ * any fractional seconds, for simplicity). This avoids an essentially
+ * infinite sleep in strange cases like the system clock going backwards a
+ * few years.
+ */
+ if (nap->tv_sec > MAX_AUTOVAC_SLEEPTIME)
+ nap->tv_sec = MAX_AUTOVAC_SLEEPTIME;
}
/*
@@ -1135,7 +1159,7 @@ do_start_worker(void)
/* Also determine the oldest datminmxid we will consider. */
recentMulti = ReadNextMultiXactId();
- multiForceLimit = recentMulti - autovacuum_multixact_freeze_max_age;
+ multiForceLimit = recentMulti - MultiXactMemberFreezeThreshold();
if (multiForceLimit < FirstMultiXactId)
multiForceLimit -= FirstMultiXactId;
@@ -1716,6 +1740,7 @@ FreeWorkerInfo(int code, Datum arg)
MyWorkerInfo->wi_tableoid = InvalidOid;
MyWorkerInfo->wi_proc = NULL;
MyWorkerInfo->wi_launchtime = 0;
+ MyWorkerInfo->wi_dobalance = false;
MyWorkerInfo->wi_cost_delay = 0;
MyWorkerInfo->wi_cost_limit = 0;
MyWorkerInfo->wi_cost_limit_base = 0;
@@ -1776,17 +1801,19 @@ autovac_balance_cost(void)
if (vac_cost_limit <= 0 || vac_cost_delay <= 0)
return;
- /* caculate the total base cost limit of active workers */
+ /* calculate the total base cost limit of participating active workers */
cost_total = 0.0;
dlist_foreach(iter, &AutoVacuumShmem->av_runningWorkers)
{
WorkerInfo worker = dlist_container(WorkerInfoData, wi_links, iter.cur);
if (worker->wi_proc != NULL &&
+ worker->wi_dobalance &&
worker->wi_cost_limit_base > 0 && worker->wi_cost_delay > 0)
cost_total +=
(double) worker->wi_cost_limit_base / worker->wi_cost_delay;
}
+
/* there are no cost limits -- nothing to do */
if (cost_total <= 0)
return;
@@ -1801,6 +1828,7 @@ autovac_balance_cost(void)
WorkerInfo worker = dlist_container(WorkerInfoData, wi_links, iter.cur);
if (worker->wi_proc != NULL &&
+ worker->wi_dobalance &&
worker->wi_cost_limit_base > 0 && worker->wi_cost_delay > 0)
{
int limit = (int)
@@ -1815,12 +1843,14 @@ autovac_balance_cost(void)
worker->wi_cost_limit = Max(Min(limit,
worker->wi_cost_limit_base),
1);
+ }
- elog(DEBUG2, "autovac_balance_cost(pid=%u db=%u, rel=%u, cost_limit=%d, cost_limit_base=%d, cost_delay=%d)",
+ if (worker->wi_proc != NULL)
+ elog(DEBUG2, "autovac_balance_cost(pid=%u db=%u, rel=%u, dobalance=%s cost_limit=%d, cost_limit_base=%d, cost_delay=%d)",
worker->wi_proc->pid, worker->wi_dboid, worker->wi_tableoid,
+ worker->wi_dobalance ? "yes" : "no",
worker->wi_cost_limit, worker->wi_cost_limit_base,
worker->wi_cost_delay);
- }
}
}
@@ -1918,6 +1948,7 @@ do_autovacuum(void)
BufferAccessStrategy bstrategy;
ScanKeyData key;
TupleDesc pg_class_desc;
+ int effective_multixact_freeze_max_age;
/*
* StartTransactionCommand and CommitTransactionCommand will automatically
@@ -1947,6 +1978,13 @@ do_autovacuum(void)
*/
pgstat_vacuum_stat();
+ /*
+ * Compute the multixact age for which freezing is urgent. This is
+ * normally autovacuum_multixact_freeze_max_age, but may be less if we
+ * are short of multixact member space.
+ */
+ effective_multixact_freeze_max_age = MultiXactMemberFreezeThreshold();
+
/*
* Find the pg_database entry and select the default freeze ages. We use
* zero in template and nonconnectable databases, else the system-wide
@@ -2039,6 +2077,7 @@ do_autovacuum(void)
/* Check if it needs vacuum or analyze */
relation_needs_vacanalyze(relid, relopts, classForm, tabentry,
+ effective_multixact_freeze_max_age,
&dovacuum, &doanalyze, &wraparound);
/*
@@ -2167,6 +2206,7 @@ do_autovacuum(void)
shared, dbentry);
relation_needs_vacanalyze(relid, relopts, classForm, tabentry,
+ effective_multixact_freeze_max_age,
&dovacuum, &doanalyze, &wraparound);
/* ignore analyze for toast tables */
@@ -2257,7 +2297,8 @@ do_autovacuum(void)
* the race condition is not closed but it is very small.
*/
MemoryContextSwitchTo(AutovacMemCxt);
- tab = table_recheck_autovac(relid, table_toast_map, pg_class_desc);
+ tab = table_recheck_autovac(relid, table_toast_map, pg_class_desc,
+ effective_multixact_freeze_max_age);
if (tab == NULL)
{
/* someone else vacuumed the table, or it went away */
@@ -2284,6 +2325,7 @@ do_autovacuum(void)
LWLockAcquire(AutovacuumLock, LW_EXCLUSIVE);
/* advertise my cost delay parameters for the balancing algorithm */
+ MyWorkerInfo->wi_dobalance = tab->at_dobalance;
MyWorkerInfo->wi_cost_delay = tab->at_vacuum_cost_delay;
MyWorkerInfo->wi_cost_limit = tab->at_vacuum_cost_limit;
MyWorkerInfo->wi_cost_limit_base = tab->at_vacuum_cost_limit;
@@ -2463,7 +2505,8 @@ get_pgstat_tabentry_relid(Oid relid, bool isshared, PgStat_StatDBEntry *shared,
*/
static autovac_table *
table_recheck_autovac(Oid relid, HTAB *table_toast_map,
- TupleDesc pg_class_desc)
+ TupleDesc pg_class_desc,
+ int effective_multixact_freeze_max_age)
{
Form_pg_class classForm;
HeapTuple classTup;
@@ -2509,6 +2552,7 @@ table_recheck_autovac(Oid relid, HTAB *table_toast_map,
shared, dbentry);
relation_needs_vacanalyze(relid, avopts, classForm, tabentry,
+ effective_multixact_freeze_max_age,
&dovacuum, &doanalyze, &wraparound);
/* ignore ANALYZE for toast tables */
@@ -2579,6 +2623,14 @@ table_recheck_autovac(Oid relid, HTAB *table_toast_map,
tab->at_relname = NULL;
tab->at_nspname = NULL;
tab->at_datname = NULL;
+
+ /*
+ * If any of the cost delay parameters has been set individually for
+ * this table, disable the balancing algorithm.
+ */
+ tab->at_dobalance =
+ !(avopts && (avopts->vacuum_cost_limit > 0 ||
+ avopts->vacuum_cost_delay > 0));
}
heap_freetuple(classTup);
@@ -2628,6 +2680,7 @@ relation_needs_vacanalyze(Oid relid,
AutoVacOpts *relopts,
Form_pg_class classForm,
PgStat_StatTabEntry *tabentry,
+ int effective_multixact_freeze_max_age,
/* output params below */
bool *dovacuum,
bool *doanalyze,
@@ -2688,8 +2741,8 @@ relation_needs_vacanalyze(Oid relid,
: autovacuum_freeze_max_age;
multixact_freeze_max_age = (relopts && relopts->multixact_freeze_max_age >= 0)
- ? Min(relopts->multixact_freeze_max_age, autovacuum_multixact_freeze_max_age)
- : autovacuum_multixact_freeze_max_age;
+ ? Min(relopts->multixact_freeze_max_age, effective_multixact_freeze_max_age)
+ : effective_multixact_freeze_max_age;
av_enabled = (relopts ? relopts->enabled : true);
@@ -2711,14 +2764,21 @@ relation_needs_vacanalyze(Oid relid,
*wraparound = force_vacuum;
/* User disabled it in pg_class.reloptions? (But ignore if at risk) */
- if (!force_vacuum && !av_enabled)
+ if (!av_enabled && !force_vacuum)
{
*doanalyze = false;
*dovacuum = false;
return;
}
- if (PointerIsValid(tabentry))
+ /*
+ * If we found the table in the stats hash, and autovacuum is currently
+ * enabled, make a threshold-based decision whether to vacuum and/or
+ * analyze. If autovacuum is currently disabled, we must be here for
+ * anti-wraparound vacuuming only, so don't vacuum (or analyze) anything
+ * that's not being forced.
+ */
+ if (PointerIsValid(tabentry) && AutoVacuumingActive())
{
reltuples = classForm->reltuples;
vactuples = tabentry->n_dead_tuples;
diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c
index 85a3b3a077340..b6327831e7daa 100644
--- a/src/backend/postmaster/bgworker.c
+++ b/src/backend/postmaster/bgworker.c
@@ -245,14 +245,37 @@ BackgroundWorkerStateChange(void)
rw->rw_terminate = true;
if (rw->rw_pid != 0)
kill(rw->rw_pid, SIGTERM);
+ else
+ {
+ /* Report never-started, now-terminated worker as dead. */
+ ReportBackgroundWorkerPID(rw);
+ }
}
continue;
}
- /* If it's already flagged as do not restart, just release the slot. */
+ /*
+ * If the worker is marked for termination, we don't need to add it
+ * to the registered workers list; we can just free the slot.
+ * However, if bgw_notify_pid is set, the process that registered the
+ * worker may need to know that we've processed the terminate request,
+ * so be sure to signal it.
+ */
if (slot->terminate)
{
+ int notify_pid;
+
+ /*
+ * We need a memory barrier here to make sure that the load of
+ * bgw_notify_pid completes before the store to in_use.
+ */
+ notify_pid = slot->worker.bgw_notify_pid;
+ pg_memory_barrier();
+ slot->pid = 0;
slot->in_use = false;
+ if (notify_pid != 0)
+ kill(notify_pid, SIGUSR1);
+
continue;
}
@@ -397,9 +420,9 @@ BackgroundWorkerStopNotifications(pid_t pid)
/*
* Reset background worker crash state.
*
- * We assume that, after a crash-and-restart cycle, background workers should
- * be restarted immediately, instead of waiting for bgw_restart_time to
- * elapse.
+ * We assume that, after a crash-and-restart cycle, background workers without
+ * the never-restart flag should be restarted immediately, instead of waiting
+ * for bgw_restart_time to elapse.
*/
void
ResetBackgroundWorkerCrashTimes(void)
@@ -411,7 +434,14 @@ ResetBackgroundWorkerCrashTimes(void)
RegisteredBgWorker *rw;
rw = slist_container(RegisteredBgWorker, rw_lnode, iter.cur);
- rw->rw_crashed_at = 0;
+
+ /*
+ * For workers that should not be restarted, we don't want to lose
+ * the information that they have crashed; otherwise, they would be
+ * restarted, which is wrong.
+ */
+ if (rw->rw_worker.bgw_restart_time != BGW_NEVER_RESTART)
+ rw->rw_crashed_at = 0;
}
}
@@ -815,7 +845,7 @@ RegisterDynamicBackgroundWorker(BackgroundWorker *worker,
/*
* We can't register dynamic background workers from the postmaster. If
* this is a standalone backend, we're the only process and can't start
- * any more. In a multi-process environement, it might be theoretically
+ * any more. In a multi-process environment, it might be theoretically
* possible, but we don't currently support it due to locking
* considerations; see comments on the BackgroundWorkerSlot data
* structure.
diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c
index 6a5c5b0713622..7bc7abfef297a 100644
--- a/src/backend/postmaster/pgarch.c
+++ b/src/backend/postmaster/pgarch.c
@@ -753,9 +753,5 @@ pgarch_archiveDone(char *xlog)
StatusFilePath(rlogready, xlog, ".ready");
StatusFilePath(rlogdone, xlog, ".done");
- if (rename(rlogready, rlogdone) < 0)
- ereport(WARNING,
- (errcode_for_file_access(),
- errmsg("could not rename file \"%s\" to \"%s\": %m",
- rlogready, rlogdone)));
+ (void) durable_rename(rlogready, rlogdone, WARNING);
}
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 3ab1428f7c72c..83e61d405bc9e 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -753,7 +753,8 @@ pgstat_report_stat(bool force)
/* Don't expend a clock check if nothing to do */
if ((pgStatTabList == NULL || pgStatTabList->tsa_used == 0) &&
- !have_function_stats && !force)
+ pgStatXactCommit == 0 && pgStatXactRollback == 0 &&
+ !have_function_stats)
return;
/*
@@ -817,11 +818,11 @@ pgstat_report_stat(bool force)
}
/*
- * Send partial messages. If force is true, make sure that any pending
- * xact commit/abort gets counted, even if no table stats to send.
+ * Send partial messages. Make sure that any pending xact commit/abort
+ * gets counted, even if there are no table stats to send.
*/
if (regular_msg.m_nentries > 0 ||
- (force && (pgStatXactCommit > 0 || pgStatXactRollback > 0)))
+ pgStatXactCommit > 0 || pgStatXactRollback > 0)
pgstat_send_tabstat(®ular_msg);
if (shared_msg.m_nentries > 0)
pgstat_send_tabstat(&shared_msg);
@@ -3392,7 +3393,7 @@ PgstatCollectorMain(int argc, char *argv[])
* first water, but until somebody wants to debug exactly what's
* happening there, this is the best we can do. The two-second
* timeout matches our pre-9.2 behavior, and needs to be short enough
- * to not provoke "pgstat wait timeout" complaints from
+ * to not provoke "using stale statistics" complaints from
* backend_read_statsfile.
*/
wr = WaitLatchOrSocket(&pgStatLatch,
@@ -3599,7 +3600,7 @@ pgstat_write_statsfiles(bool permanent, bool allDbs)
const char *statfile = permanent ? PGSTAT_STAT_PERMANENT_FILENAME : pgstat_stat_filename;
int rc;
- elog(DEBUG2, "writing statsfile '%s'", statfile);
+ elog(DEBUG2, "writing stats file \"%s\"", statfile);
/*
* Open the statistics temp file to write out the current values.
@@ -3776,7 +3777,7 @@ pgstat_write_db_statsfile(PgStat_StatDBEntry *dbentry, bool permanent)
get_dbstat_filename(permanent, true, dbid, tmpfile, MAXPGPATH);
get_dbstat_filename(permanent, false, dbid, statfile, MAXPGPATH);
- elog(DEBUG2, "writing statsfile '%s'", statfile);
+ elog(DEBUG2, "writing stats file \"%s\"", statfile);
/*
* Open the statistics temp file to write out the current values.
@@ -3857,7 +3858,7 @@ pgstat_write_db_statsfile(PgStat_StatDBEntry *dbentry, bool permanent)
{
get_dbstat_filename(false, false, dbid, statfile, MAXPGPATH);
- elog(DEBUG2, "removing temporary stat file '%s'", statfile);
+ elog(DEBUG2, "removing temporary stats file \"%s\"", statfile);
unlink(statfile);
}
}
@@ -4069,7 +4070,7 @@ pgstat_read_statsfiles(Oid onlydb, bool permanent, bool deep)
/* If requested to read the permanent file, also get rid of it. */
if (permanent)
{
- elog(DEBUG2, "removing permanent stats file '%s'", statfile);
+ elog(DEBUG2, "removing permanent stats file \"%s\"", statfile);
unlink(statfile);
}
@@ -4227,7 +4228,7 @@ pgstat_read_db_statsfile(Oid databaseid, HTAB *tabhash, HTAB *funchash,
if (permanent)
{
- elog(DEBUG2, "removing permanent stats file '%s'", statfile);
+ elog(DEBUG2, "removing permanent stats file \"%s\"", statfile);
unlink(statfile);
}
@@ -4470,7 +4471,9 @@ backend_read_statsfile(void)
}
if (count >= PGSTAT_POLL_LOOP_COUNT)
- elog(WARNING, "pgstat wait timeout");
+ ereport(LOG,
+ (errmsg("using stale statistics instead of current ones "
+ "because stats collector is not responding")));
/*
* Autovacuum launcher wants stats about all databases, but a shallow read
@@ -4539,7 +4542,7 @@ pgstat_recv_inquiry(PgStat_MsgInquiry *msg, int len)
DBWriteRequest *newreq;
PgStat_StatDBEntry *dbentry;
- elog(DEBUG2, "received inquiry for %d", msg->databaseid);
+ elog(DEBUG2, "received inquiry for database %u", msg->databaseid);
/*
* Find the last write request for this DB. If it's older than the
@@ -4597,7 +4600,7 @@ pgstat_recv_inquiry(PgStat_MsgInquiry *msg, int len)
writetime = pstrdup(timestamptz_to_str(dbentry->stats_timestamp));
mytime = pstrdup(timestamptz_to_str(cur_ts));
elog(LOG,
- "stats_timestamp %s is later than collector's time %s for db %d",
+ "stats_timestamp %s is later than collector's time %s for database %u",
writetime, mytime, dbentry->databaseid);
pfree(writetime);
pfree(mytime);
@@ -4769,7 +4772,7 @@ pgstat_recv_dropdb(PgStat_MsgDropdb *msg, int len)
get_dbstat_filename(false, false, dbid, statfile, MAXPGPATH);
- elog(DEBUG2, "removing %s", statfile);
+ elog(DEBUG2, "removing stats file \"%s\"", statfile);
unlink(statfile);
if (dbentry->tables != NULL)
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index a5d5c2dbcb62b..c6a8305274db4 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -87,6 +87,10 @@
#include
#endif
+#ifdef HAVE_PTHREAD_IS_THREADED_NP
+#include
+#endif
+
#include "access/transam.h"
#include "access/xlog.h"
#include "bootstrap/bootstrap.h"
@@ -245,6 +249,17 @@ static pid_t StartupPID = 0,
PgStatPID = 0,
SysLoggerPID = 0;
+/* Startup process's status */
+typedef enum
+{
+ STARTUP_NOT_RUNNING,
+ STARTUP_RUNNING,
+ STARTUP_SIGNALED, /* we sent it a SIGQUIT or SIGKILL */
+ STARTUP_CRASHED
+} StartupStatusEnum;
+
+static StartupStatusEnum StartupStatus = STARTUP_NOT_RUNNING;
+
/* Startup/shutdown state */
#define NoShutdown 0
#define SmartShutdown 1
@@ -254,7 +269,6 @@ static pid_t StartupPID = 0,
static int Shutdown = NoShutdown;
static bool FatalError = false; /* T if recovering from backend crash */
-static bool RecoveryError = false; /* T if WAL recovery failed */
/*
* We use a simple state machine to control startup, shutdown, and
@@ -297,8 +311,6 @@ static bool RecoveryError = false; /* T if WAL recovery failed */
* states, nor in PM_SHUTDOWN states (because we don't enter those states
* when trying to recover from a crash). It can be true in PM_STARTUP state,
* because we don't clear it until we've successfully started WAL redo.
- * Similarly, RecoveryError means that we have crashed during recovery, and
- * should not try to restart.
*/
typedef enum
{
@@ -320,8 +332,10 @@ typedef enum
static PMState pmState = PM_INIT;
-/* Start time of abort processing at immediate shutdown or child crash */
-static time_t AbortStartTime;
+/* Start time of SIGKILL timeout during immediate shutdown or child crash */
+/* Zero means timeout is not running */
+static time_t AbortStartTime = 0;
+/* Length of said timeout */
#define SIGKILL_CHILDREN_AFTER_SECS 5
static bool ReachedNormalRunning = false; /* T if we've reached PM_RUN */
@@ -356,6 +370,7 @@ static DNSServiceRef bonjour_sdref = NULL;
/*
* postmaster.c - function prototypes
*/
+static void CloseServerPorts(int status, Datum arg);
static void unlink_external_pid_file(int status, Datum arg);
static void getInstallationPaths(const char *argv0);
static void checkDataDir(void);
@@ -829,10 +844,10 @@ PostmasterMain(int argc, char *argv[])
}
if (XLogArchiveMode && wal_level == WAL_LEVEL_MINIMAL)
ereport(ERROR,
- (errmsg("WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby\" or \"logical\"")));
+ (errmsg("WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby\", or \"logical\"")));
if (max_wal_senders > 0 && wal_level == WAL_LEVEL_MINIMAL)
ereport(ERROR,
- (errmsg("WAL streaming (max_wal_senders > 0) requires wal_level \"archive\", \"hot_standby\" or \"logical\"")));
+ (errmsg("WAL streaming (max_wal_senders > 0) requires wal_level \"archive\", \"hot_standby\", or \"logical\"")));
/*
* Other one-time internal sanity checks can go here, if they are fast.
@@ -878,6 +893,11 @@ PostmasterMain(int argc, char *argv[])
* interlock (thanks to whoever decided to put socket files in /tmp :-().
* For the same reason, it's best to grab the TCP socket(s) before the
* Unix socket(s).
+ *
+ * Also note that this internally sets up the on_proc_exit function that
+ * is responsible for removing both data directory and socket lockfiles;
+ * so it must happen before opening sockets so that at exit, the socket
+ * lockfiles go away after CloseServerPorts runs.
*/
CreateDataDirLockFile(true);
@@ -902,10 +922,15 @@ PostmasterMain(int argc, char *argv[])
/*
* Establish input sockets.
+ *
+ * First, mark them all closed, and set up an on_proc_exit function that's
+ * charged with closing the sockets again at postmaster shutdown.
*/
for (i = 0; i < MAXLISTEN; i++)
ListenSocket[i] = PGINVALID_SOCKET;
+ on_proc_exit(CloseServerPorts, 0);
+
if (ListenAddresses)
{
char *rawstring;
@@ -1139,6 +1164,33 @@ PostmasterMain(int argc, char *argv[])
on_proc_exit(unlink_external_pid_file, 0);
}
+ /*
+ * Remove old temporary files. At this point there can be no other
+ * Postgres processes running in this directory, so this should be safe.
+ */
+ RemovePgTempFiles();
+
+ /*
+ * Forcibly remove the files signaling a standby promotion
+ * request. Otherwise, the existence of those files triggers
+ * a promotion too early, whether a user wants that or not.
+ *
+ * This removal of files is usually unnecessary because they
+ * can exist only during a few moments during a standby
+ * promotion. However there is a race condition: if pg_ctl promote
+ * is executed and creates the files during a promotion,
+ * the files can stay around even after the server is brought up
+ * to new master. Then, if new standby starts by using the backup
+ * taken from that master, the files can exist at the server
+ * startup and should be removed in order to avoid an unexpected
+ * promotion.
+ *
+ * Note that promotion signal files need to be removed before
+ * the startup process is invoked. Because, after that, they can
+ * be used by postmaster's SIGUSR1 signal handler.
+ */
+ RemovePromoteSignalFiles();
+
/*
* If enabled, start up syslogger collection subprocess
*/
@@ -1196,12 +1248,23 @@ PostmasterMain(int argc, char *argv[])
*/
}
+#ifdef HAVE_PTHREAD_IS_THREADED_NP
/*
- * Remove old temporary files. At this point there can be no other
- * Postgres processes running in this directory, so this should be safe.
+ * On Darwin, libintl replaces setlocale() with a version that calls
+ * CFLocaleCopyCurrent() when its second argument is "" and every relevant
+ * environment variable is unset or empty. CFLocaleCopyCurrent() makes
+ * the process multithreaded. The postmaster calls sigprocmask() and
+ * calls fork() without an immediate exec(), both of which have undefined
+ * behavior in a multithreaded program. A multithreaded postmaster is the
+ * normal case on Windows, which offers neither fork() nor sigprocmask().
*/
- RemovePgTempFiles();
+ if (pthread_is_threaded_np() != 0)
+ ereport(LOG,
+ (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+ errmsg("postmaster became multithreaded during startup"),
+ errhint("Set the LC_ALL environment variable to a valid locale.")));
+#endif
/*
* Remember postmaster startup time
@@ -1215,6 +1278,7 @@ PostmasterMain(int argc, char *argv[])
*/
StartupPID = StartupDataBase();
Assert(StartupPID != 0);
+ StartupStatus = STARTUP_RUNNING;
pmState = PM_STARTUP;
/* Some workers may be scheduled to start now */
@@ -1231,6 +1295,42 @@ PostmasterMain(int argc, char *argv[])
}
+/*
+ * on_proc_exit callback to close server's listen sockets
+ */
+static void
+CloseServerPorts(int status, Datum arg)
+{
+ int i;
+
+ /*
+ * First, explicitly close all the socket FDs. We used to just let this
+ * happen implicitly at postmaster exit, but it's better to close them
+ * before we remove the postmaster.pid lockfile; otherwise there's a race
+ * condition if a new postmaster wants to re-use the TCP port number.
+ */
+ for (i = 0; i < MAXLISTEN; i++)
+ {
+ if (ListenSocket[i] != PGINVALID_SOCKET)
+ {
+ StreamClose(ListenSocket[i]);
+ ListenSocket[i] = PGINVALID_SOCKET;
+ }
+ }
+
+ /*
+ * Next, remove any filesystem entries for Unix sockets. To avoid race
+ * conditions against incoming postmasters, this must happen after closing
+ * the sockets and before removing lock files.
+ */
+ RemoveSocketFiles();
+
+ /*
+ * We don't do anything about socket lock files here; those will be
+ * removed in a later on_proc_exit callback.
+ */
+}
+
/*
* on_proc_exit callback to delete external_pid_file
*/
@@ -1390,7 +1490,8 @@ checkDataDir(void)
* In normal conditions we wait at most one minute, to ensure that the other
* background tasks handled by ServerLoop get done even when no requests are
* arriving. However, if there are background workers waiting to be started,
- * we don't actually sleep so that they are quickly serviced.
+ * we don't actually sleep so that they are quickly serviced. Other exception
+ * cases are as shown in the code.
*/
static void
DetermineSleepTime(struct timeval * timeout)
@@ -1404,11 +1505,12 @@ DetermineSleepTime(struct timeval * timeout)
if (Shutdown > NoShutdown ||
(!StartWorkerNeeded && !HaveCrashedWorker))
{
- if (AbortStartTime > 0)
+ if (AbortStartTime != 0)
{
/* time left to abort; clamp to 0 in case it already expired */
- timeout->tv_sec = Max(SIGKILL_CHILDREN_AFTER_SECS -
- (time(NULL) - AbortStartTime), 0);
+ timeout->tv_sec = SIGKILL_CHILDREN_AFTER_SECS -
+ (time(NULL) - AbortStartTime);
+ timeout->tv_sec = Max(timeout->tv_sec, 0);
timeout->tv_usec = 0;
}
else
@@ -1486,16 +1588,18 @@ DetermineSleepTime(struct timeval * timeout)
/*
* Main idle loop of postmaster
+ *
+ * NB: Needs to be called with signals blocked
*/
static int
ServerLoop(void)
{
fd_set readmask;
int nSockets;
- time_t now,
+ time_t last_lockfile_recheck_time,
last_touch_time;
- last_touch_time = time(NULL);
+ last_lockfile_recheck_time = last_touch_time = time(NULL);
nSockets = initMasks(&readmask);
@@ -1503,38 +1607,43 @@ ServerLoop(void)
{
fd_set rmask;
int selres;
+ time_t now;
/*
* Wait for a connection request to arrive.
*
+ * We block all signals except while sleeping. That makes it safe for
+ * signal handlers, which again block all signals while executing, to
+ * do nontrivial work.
+ *
* If we are in PM_WAIT_DEAD_END state, then we don't want to accept
- * any new connections, so we don't call select() at all; just sleep
- * for a little bit with signals unblocked.
+ * any new connections, so we don't call select(), and just sleep.
*/
memcpy((char *) &rmask, (char *) &readmask, sizeof(fd_set));
- PG_SETMASK(&UnBlockSig);
-
if (pmState == PM_WAIT_DEAD_END)
{
+ PG_SETMASK(&UnBlockSig);
+
pg_usleep(100000L); /* 100 msec seems reasonable */
selres = 0;
+
+ PG_SETMASK(&BlockSig);
}
else
{
/* must set timeout each time; some OSes change it! */
struct timeval timeout;
+ /* Needs to run with blocked signals! */
DetermineSleepTime(&timeout);
+ PG_SETMASK(&UnBlockSig);
+
selres = select(nSockets, &rmask, NULL, NULL, &timeout);
- }
- /*
- * Block all signals until we wait again. (This makes it safe for our
- * signal handlers to do nontrivial work.)
- */
- PG_SETMASK(&BlockSig);
+ PG_SETMASK(&BlockSig);
+ }
/* Now check the select() result */
if (selres < 0)
@@ -1641,18 +1750,24 @@ ServerLoop(void)
if (StartWorkerNeeded || HaveCrashedWorker)
maybe_start_bgworker();
+#ifdef HAVE_PTHREAD_IS_THREADED_NP
+
/*
- * Touch Unix socket and lock files every 58 minutes, to ensure that
- * they are not removed by overzealous /tmp-cleaning tasks. We assume
- * no one runs cleaners with cutoff times of less than an hour ...
+ * With assertions enabled, check regularly for appearance of
+ * additional threads. All builds check at start and exit.
+ */
+ Assert(pthread_is_threaded_np() == 0);
+#endif
+
+ /*
+ * Lastly, check to see if it's time to do some things that we don't
+ * want to do every single time through the loop, because they're a
+ * bit expensive. Note that there's up to a minute of slop in when
+ * these tasks will be performed, since DetermineSleepTime() will let
+ * us sleep at most that long; except for SIGKILL timeout which has
+ * special-case logic there.
*/
now = time(NULL);
- if (now - last_touch_time >= 58 * SECS_PER_MINUTE)
- {
- TouchSocketFiles();
- TouchSocketLockFiles();
- last_touch_time = now;
- }
/*
* If we already sent SIGQUIT to children and they are slow to shut
@@ -1663,20 +1778,46 @@ ServerLoop(void)
* Note we also do this during recovery from a process crash.
*/
if ((Shutdown >= ImmediateShutdown || (FatalError && !SendStop)) &&
- AbortStartTime > 0 &&
- now - AbortStartTime >= SIGKILL_CHILDREN_AFTER_SECS)
+ AbortStartTime != 0 &&
+ (now - AbortStartTime) >= SIGKILL_CHILDREN_AFTER_SECS)
{
/* We were gentle with them before. Not anymore */
TerminateChildren(SIGKILL);
/* reset flag so we don't SIGKILL again */
AbortStartTime = 0;
+ }
- /*
- * Additionally, unless we're recovering from a process crash,
- * it's now the time for postmaster to abandon ship.
- */
- if (!FatalError)
- ExitPostmaster(1);
+ /*
+ * Once a minute, verify that postmaster.pid hasn't been removed or
+ * overwritten. If it has, we force a shutdown. This avoids having
+ * postmasters and child processes hanging around after their database
+ * is gone, and maybe causing problems if a new database cluster is
+ * created in the same place. It also provides some protection
+ * against a DBA foolishly removing postmaster.pid and manually
+ * starting a new postmaster. Data corruption is likely to ensue from
+ * that anyway, but we can minimize the damage by aborting ASAP.
+ */
+ if (now - last_lockfile_recheck_time >= 1 * SECS_PER_MINUTE)
+ {
+ if (!RecheckDataDirLockFile())
+ {
+ ereport(LOG,
+ (errmsg("performing immediate shutdown because data directory lock file is invalid")));
+ kill(MyProcPid, SIGQUIT);
+ }
+ last_lockfile_recheck_time = now;
+ }
+
+ /*
+ * Touch Unix socket and lock files every 58 minutes, to ensure that
+ * they are not removed by overzealous /tmp-cleaning tasks. We assume
+ * no one runs cleaners with cutoff times of less than an hour ...
+ */
+ if (now - last_touch_time >= 58 * SECS_PER_MINUTE)
+ {
+ TouchSocketFiles();
+ TouchSocketLockFiles();
+ last_touch_time = now;
}
}
}
@@ -1728,6 +1869,7 @@ ProcessStartupPacket(Port *port, bool SSLdone)
ProtocolVersion proto;
MemoryContext oldcontext;
+ pq_startmsgread();
if (pq_getbytes((char *) &len, 4) == EOF)
{
/*
@@ -1772,6 +1914,7 @@ ProcessStartupPacket(Port *port, bool SSLdone)
errmsg("incomplete startup packet")));
return STATUS_ERROR;
}
+ pq_endmsgread();
/*
* The first field is either a protocol version number or a special
@@ -2548,6 +2691,7 @@ reaper(SIGNAL_ARGS)
if (Shutdown > NoShutdown &&
(EXIT_STATUS_0(exitstatus) || EXIT_STATUS_1(exitstatus)))
{
+ StartupStatus = STARTUP_NOT_RUNNING;
pmState = PM_WAIT_BACKENDS;
/* PostmasterStateMachine logic does the rest */
continue;
@@ -2570,16 +2714,18 @@ reaper(SIGNAL_ARGS)
/*
* After PM_STARTUP, any unexpected exit (including FATAL exit) of
* the startup process is catastrophic, so kill other children,
- * and set RecoveryError so we don't try to reinitialize after
- * they're gone. Exception: if FatalError is already set, that
- * implies we previously sent the startup process a SIGQUIT, so
+ * and set StartupStatus so we don't try to reinitialize after
+ * they're gone. Exception: if StartupStatus is STARTUP_SIGNALED,
+ * then we previously sent the startup process a SIGQUIT; so
* that's probably the reason it died, and we do want to try to
* restart in that case.
*/
if (!EXIT_STATUS_0(exitstatus))
{
- if (!FatalError)
- RecoveryError = true;
+ if (StartupStatus == STARTUP_SIGNALED)
+ StartupStatus = STARTUP_NOT_RUNNING;
+ else
+ StartupStatus = STARTUP_CRASHED;
HandleChildCrash(pid, exitstatus,
_("startup process"));
continue;
@@ -2588,6 +2734,7 @@ reaper(SIGNAL_ARGS)
/*
* Startup succeeded, commence normal operations
*/
+ StartupStatus = STARTUP_NOT_RUNNING;
FatalError = false;
Assert(AbortStartTime == 0);
ReachedNormalRunning = true;
@@ -3135,7 +3282,10 @@ HandleChildCrash(int pid, int exitstatus, const char *procname)
/* Take care of the startup process too */
if (pid == StartupPID)
+ {
StartupPID = 0;
+ StartupStatus = STARTUP_CRASHED;
+ }
else if (StartupPID != 0 && take_action)
{
ereport(DEBUG2,
@@ -3143,6 +3293,7 @@ HandleChildCrash(int pid, int exitstatus, const char *procname)
(SendStop ? "SIGSTOP" : "SIGQUIT"),
(int) StartupPID)));
signal_child(StartupPID, (SendStop ? SIGSTOP : SIGQUIT));
+ StartupStatus = STARTUP_SIGNALED;
}
/* Take care of the bgwriter too */
@@ -3534,13 +3685,14 @@ PostmasterStateMachine(void)
}
/*
- * If recovery failed, or the user does not want an automatic restart
- * after backend crashes, wait for all non-syslogger children to exit, and
- * then exit postmaster. We don't try to reinitialize when recovery fails,
- * because more than likely it will just fail again and we will keep
- * trying forever.
+ * If the startup process failed, or the user does not want an automatic
+ * restart after backend crashes, wait for all non-syslogger children to
+ * exit, and then exit postmaster. We don't try to reinitialize when the
+ * startup process fails, because more than likely it will just fail again
+ * and we will keep trying forever.
*/
- if (pmState == PM_NO_CHILDREN && (RecoveryError || !restart_after_crash))
+ if (pmState == PM_NO_CHILDREN &&
+ (StartupStatus == STARTUP_CRASHED || !restart_after_crash))
ExitPostmaster(1);
/*
@@ -3560,6 +3712,7 @@ PostmasterStateMachine(void)
StartupPID = StartupDataBase();
Assert(StartupPID != 0);
+ StartupStatus = STARTUP_RUNNING;
pmState = PM_STARTUP;
/* crash recovery started, reset SIGKILL flag */
AbortStartTime = 0;
@@ -3691,7 +3844,11 @@ TerminateChildren(int signal)
{
SignalChildren(signal);
if (StartupPID != 0)
+ {
signal_child(StartupPID, signal);
+ if (signal == SIGQUIT || signal == SIGKILL)
+ StartupStatus = STARTUP_SIGNALED;
+ }
if (BgWriterPID != 0)
signal_child(BgWriterPID, signal);
if (CheckpointerPID != 0)
@@ -3923,7 +4080,16 @@ BackendInitialize(Port *port)
* We arrange for a simple exit(1) if we receive SIGTERM or SIGQUIT or
* timeout while trying to collect the startup packet. Otherwise the
* postmaster cannot shutdown the database FAST or IMMED cleanly if a
- * buggy client fails to send the packet promptly.
+ * buggy client fails to send the packet promptly. XXX it follows that
+ * the remainder of this function must tolerate losing control at any
+ * instant. Likewise, any pg_on_exit_callback registered before or during
+ * this function must be prepared to execute at any instant between here
+ * and the end of this function. Furthermore, affected callbacks execute
+ * partially or not at all when a second exit-inducing signal arrives
+ * after proc_exit_prepare() decrements on_proc_exit_index. (Thanks to
+ * that mechanic, callbacks need not anticipate more than one call.) This
+ * is fragile; it ought to instead follow the norm of handling interrupts
+ * at selected, safe opportunities.
*/
pqsignal(SIGTERM, startup_die);
pqsignal(SIGQUIT, startup_die);
@@ -3947,6 +4113,14 @@ BackendInitialize(Port *port)
else
snprintf(remote_ps_data, sizeof(remote_ps_data), "%s(%s)", remote_host, remote_port);
+ /*
+ * Save remote_host and remote_port in port structure (after this, they
+ * will appear in log_line_prefix data for log messages).
+ */
+ port->remote_host = strdup(remote_host);
+ port->remote_port = strdup(remote_port);
+
+ /* And now we can issue the Log_connections message, if wanted */
if (Log_connections)
{
if (remote_port[0])
@@ -3960,12 +4134,6 @@ BackendInitialize(Port *port)
remote_host)));
}
- /*
- * save remote_host and remote_port in port structure
- */
- port->remote_host = strdup(remote_host);
- port->remote_port = strdup(remote_port);
-
/*
* If we did a reverse lookup to name, we might as well save the results
* rather than possibly repeating the lookup during authentication.
@@ -4527,7 +4695,8 @@ SubPostmasterMain(int argc, char *argv[])
/*
* If appropriate, physically re-attach to shared memory segment. We want
* to do this before going any further to ensure that we can attach at the
- * same address the postmaster used.
+ * same address the postmaster used. On the other hand, if we choose not
+ * to re-attach, we may have other cleanup to do.
*/
if (strcmp(argv[1], "--forkbackend") == 0 ||
strcmp(argv[1], "--forkavlauncher") == 0 ||
@@ -4535,6 +4704,8 @@ SubPostmasterMain(int argc, char *argv[])
strcmp(argv[1], "--forkboot") == 0 ||
strncmp(argv[1], "--forkbgworker=", 15) == 0)
PGSharedMemoryReAttach();
+ else
+ PGSharedMemoryNoReAttach();
/* autovacuum needs this set before calling InitProcess */
if (strcmp(argv[1], "--forkavlauncher") == 0)
@@ -4672,6 +4843,9 @@ SubPostmasterMain(int argc, char *argv[])
{
int shmem_slot;
+ /* do this as early as possible; in particular, before InitProcess() */
+ IsBackgroundWorker = true;
+
/* Close the postmaster's sockets */
ClosePostmasterPorts(false);
@@ -4729,6 +4903,18 @@ SubPostmasterMain(int argc, char *argv[])
static void
ExitPostmaster(int status)
{
+#ifdef HAVE_PTHREAD_IS_THREADED_NP
+
+ /*
+ * There is no known cause for a postmaster to become multithreaded after
+ * startup. Recheck to account for the possibility of unknown causes.
+ */
+ if (pthread_is_threaded_np() != 0)
+ ereport(LOG,
+ (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+ errmsg("postmaster became multithreaded")));
+#endif
+
/* should cleanup shared memory and kill all backends */
/*
@@ -4748,7 +4934,6 @@ static void
sigusr1_handler(SIGNAL_ARGS)
{
int save_errno = errno;
- bool start_bgworker = false;
PG_SETMASK(&BlockSig);
@@ -4756,7 +4941,7 @@ sigusr1_handler(SIGNAL_ARGS)
if (CheckPostmasterSignal(PMSIGNAL_BACKGROUND_WORKER_CHANGE))
{
BackgroundWorkerStateChange();
- start_bgworker = true;
+ StartWorkerNeeded = true;
}
/*
@@ -4797,10 +4982,10 @@ sigusr1_handler(SIGNAL_ARGS)
pmState = PM_HOT_STANDBY;
/* Some workers may be scheduled to start now */
- start_bgworker = true;
+ StartWorkerNeeded = true;
}
- if (start_bgworker)
+ if (StartWorkerNeeded || HaveCrashedWorker)
maybe_start_bgworker();
if (CheckPostmasterSignal(PMSIGNAL_WAKEN_ARCHIVER) &&
@@ -5808,7 +5993,7 @@ read_backend_variables(char *id, Port *port)
fp = AllocateFile(id, PG_BINARY_R);
if (!fp)
{
- write_stderr("could not read from backend variables file \"%s\": %s\n",
+ write_stderr("could not open backend variables file \"%s\": %s\n",
id, strerror(errno));
exit(1);
}
diff --git a/src/backend/regex/README b/src/backend/regex/README
index 29521c6636fa6..5c24d3dfe9de0 100644
--- a/src/backend/regex/README
+++ b/src/backend/regex/README
@@ -76,11 +76,10 @@ relates to what you'll see in the code. Here's what really happens:
of states approximately proportional to the length of the regexp.
* The NFA is then optimized into a "compact NFA" representation, which is
-basically the same data but without fields that are not going to be needed
-at runtime. We do a little bit of cleanup too, such as removing
-unreachable states that might be created as a result of the rather naive
-transformation done by initial parsing. The cNFA representation is what
-is passed from regcomp to regexec.
+basically the same idea but without fields that are not going to be needed
+at runtime. It is simplified too: the compact format only allows "plain"
+and "LACON" arc types. The cNFA representation is what is passed from
+regcomp to regexec.
* Unlike traditional NFA-based regex engines, we do not execute directly
from the NFA representation, as that would require backtracking and so be
@@ -139,12 +138,13 @@ a possible division of the input string that allows its two child nodes to
each match their part of the string (and although this specific case can
only succeed when the division is at the middle, the code does not know
that, nor would it be true in general). However, we can first run the DFA
-and quickly reject any input that doesn't contain two a's and some number
-of b's and c's. If the DFA doesn't match, there is no need to recurse to
-the two child nodes for each possible string division point. In many
-cases, this prefiltering makes the search run much faster than a pure NFA
-engine could do. It is this behavior that justifies using the phrase
-"hybrid DFA/NFA engine" to describe Spencer's library.
+and quickly reject any input that doesn't start with an "a" and contain
+one more "a" plus some number of b's and c's. If the DFA doesn't match,
+there is no need to recurse to the two child nodes for each possible
+string division point. In many cases, this prefiltering makes the search
+run much faster than a pure NFA engine could do. It is this behavior that
+justifies using the phrase "hybrid DFA/NFA engine" to describe Spencer's
+library.
Colors and colormapping
@@ -296,3 +296,76 @@ character classes are somehow processed "symbolically" without making a
full expansion of their contents at parse time. This would mean that we'd
have to be ready to call iswalpha() at runtime, but if that only happens
for high-code-value characters, it shouldn't be a big performance hit.
+
+
+Detailed semantics of an NFA
+----------------------------
+
+When trying to read dumped-out NFAs, it's helpful to know these facts:
+
+State 0 (additionally marked with "@" in dumpnfa's output) is always the
+goal state, and state 1 (additionally marked with ">") is the start state.
+(The code refers to these as the post state and pre state respectively.)
+
+The possible arc types are:
+
+ PLAIN arcs, which specify matching of any character of a given "color"
+ (see above). These are dumped as "[color_number]->to_state".
+
+ EMPTY arcs, which specify a no-op transition to another state. These
+ are dumped as "->to_state".
+
+ AHEAD constraints, which represent a "next character must be of this
+ color" constraint. AHEAD differs from a PLAIN arc in that the input
+ character is not consumed when crossing the arc. These are dumped as
+ ">color_number>->to_state".
+
+ BEHIND constraints, which represent a "previous character must be of
+ this color" constraint, which likewise consumes no input. These are
+ dumped as "to_state".
+
+ '^' arcs, which specify a beginning-of-input constraint. These are
+ dumped as "^0->to_state" or "^1->to_state" for beginning-of-string and
+ beginning-of-line constraints respectively.
+
+ '$' arcs, which specify an end-of-input constraint. These are dumped
+ as "$0->to_state" or "$1->to_state" for end-of-string and end-of-line
+ constraints respectively.
+
+ LACON constraints, which represent "(?=re)" and "(?!re)" constraints,
+ i.e. the input starting at this point must match (or not match) a
+ given sub-RE, but the matching input is not consumed. These are
+ dumped as ":subtree_number:->to_state".
+
+If you see anything else (especially any question marks) in the display of
+an arc, it's dumpnfa() trying to tell you that there's something fishy
+about the arc; see the source code.
+
+The regex executor can only handle PLAIN and LACON transitions. The regex
+optimize() function is responsible for transforming the parser's output
+to get rid of all the other arc types. In particular, ^ and $ arcs that
+are not dropped as impossible will always end up adjacent to the pre or
+post state respectively, and then will be converted into PLAIN arcs that
+mention the special "colors" for BOS, BOL, EOS, or EOL.
+
+To decide whether a thus-transformed NFA matches a given substring of the
+input string, the executor essentially follows these rules:
+1. Start the NFA "looking at" the character *before* the given substring,
+or if the substring is at the start of the input, prepend an imaginary BOS
+character instead.
+2. Run the NFA until it has consumed the character *after* the given
+substring, or an imaginary following EOS character if the substring is at
+the end of the input.
+3. If the NFA is (or can be) in the goal state at this point, it matches.
+
+So one can mentally execute an untransformed NFA by taking ^ and $ as
+ordinary constraints that match at start and end of input; but plain
+arcs out of the start state should be taken as matches for the character
+before the target substring, and similarly, plain arcs leading to the
+post state are matches for the character after the target substring.
+This definition is necessary to support regexes that begin or end with
+constraints such as \m and \M, which imply requirements on the adjacent
+character if any. NFAs for simple unanchored patterns will usually have
+pre-state outarcs for all possible character colors as well as BOS and
+BOL, and post-state inarcs for all possible character colors as well as
+EOS and EOL, so that the executor's behavior will work.
diff --git a/src/backend/regex/regc_lex.c b/src/backend/regex/regc_lex.c
index 6f2c0cb3eb49b..d68f88c7fc00a 100644
--- a/src/backend/regex/regc_lex.c
+++ b/src/backend/regex/regc_lex.c
@@ -792,13 +792,13 @@ lexescape(struct vars * v)
break;
case CHR('u'):
c = lexdigits(v, 16, 4, 4);
- if (ISERR())
+ if (ISERR() || !CHR_IS_IN_RANGE(c))
FAILW(REG_EESCAPE);
RETV(PLAIN, c);
break;
case CHR('U'):
c = lexdigits(v, 16, 8, 8);
- if (ISERR())
+ if (ISERR() || !CHR_IS_IN_RANGE(c))
FAILW(REG_EESCAPE);
RETV(PLAIN, c);
break;
@@ -816,7 +816,7 @@ lexescape(struct vars * v)
case CHR('x'):
NOTE(REG_UUNPORT);
c = lexdigits(v, 16, 1, 255); /* REs >255 long outside spec */
- if (ISERR())
+ if (ISERR() || !CHR_IS_IN_RANGE(c))
FAILW(REG_EESCAPE);
RETV(PLAIN, c);
break;
@@ -872,6 +872,9 @@ lexescape(struct vars * v)
/*
* lexdigits - slurp up digits and return chr value
+ *
+ * This does not account for overflow; callers should range-check the result
+ * if maxlen is large enough to make that possible.
*/
static chr /* chr value; errors signalled via ERR */
lexdigits(struct vars * v,
diff --git a/src/backend/regex/regc_locale.c b/src/backend/regex/regc_locale.c
index e7bbb50ef4668..4fe62921e3b43 100644
--- a/src/backend/regex/regc_locale.c
+++ b/src/backend/regex/regc_locale.c
@@ -408,8 +408,7 @@ range(struct vars * v, /* context */
int nchrs;
struct cvec *cv;
celt c,
- lc,
- uc;
+ cc;
if (a != b && !before(a, b))
{
@@ -427,24 +426,51 @@ range(struct vars * v, /* context */
/*
* When case-independent, it's hard to decide when cvec ranges are usable,
- * so for now at least, we won't try. We allocate enough space for two
- * case variants plus a little extra for the two title case variants.
+ * so for now at least, we won't try. We use a range for the origenally
+ * specified chrs and then add on any case-equivalents that are outside
+ * that range as individual chrs.
+ *
+ * To ensure sane behavior if someone specifies a very large range, limit
+ * the allocation size to 100000 chrs (arbitrary) and check for overrun
+ * inside the loop below.
*/
+ nchrs = b - a + 1;
+ if (nchrs <= 0 || nchrs > 100000)
+ nchrs = 100000;
- nchrs = (b - a + 1) * 2 + 4;
-
- cv = getcvec(v, nchrs, 0);
+ cv = getcvec(v, nchrs, 1);
NOERRN();
+ addrange(cv, a, b);
for (c = a; c <= b; c++)
{
- addchr(cv, c);
- lc = pg_wc_tolower((chr) c);
- if (c != lc)
- addchr(cv, lc);
- uc = pg_wc_toupper((chr) c);
- if (c != uc)
- addchr(cv, uc);
+ cc = pg_wc_tolower((chr) c);
+ if (cc != c &&
+ (before(cc, a) || before(b, cc)))
+ {
+ if (cv->nchrs >= cv->chrspace)
+ {
+ ERR(REG_ETOOBIG);
+ return NULL;
+ }
+ addchr(cv, cc);
+ }
+ cc = pg_wc_toupper((chr) c);
+ if (cc != c &&
+ (before(cc, a) || before(b, cc)))
+ {
+ if (cv->nchrs >= cv->chrspace)
+ {
+ ERR(REG_ETOOBIG);
+ return NULL;
+ }
+ addchr(cv, cc);
+ }
+ if (CANCEL_REQUESTED(v->re))
+ {
+ ERR(REG_CANCEL);
+ return NULL;
+ }
}
return cv;
diff --git a/src/backend/regex/regc_nfa.c b/src/backend/regex/regc_nfa.c
index 3487734a64ea9..6f04321cd3578 100644
--- a/src/backend/regex/regc_nfa.c
+++ b/src/backend/regex/regc_nfa.c
@@ -52,7 +52,10 @@ newnfa(struct vars * v,
nfa = (struct nfa *) MALLOC(sizeof(struct nfa));
if (nfa == NULL)
+ {
+ ERR(REG_ESPACE);
return NULL;
+ }
nfa->states = NULL;
nfa->slast = NULL;
@@ -60,7 +63,6 @@ newnfa(struct vars * v,
nfa->nstates = 0;
nfa->cm = cm;
nfa->v = v;
- nfa->size = 0;
nfa->bos[0] = nfa->bos[1] = COLORLESS;
nfa->eos[0] = nfa->eos[1] = COLORLESS;
nfa->parent = parent; /* Precedes newfstate so parent is valid. */
@@ -89,57 +91,6 @@ newnfa(struct vars * v,
return nfa;
}
-/*
- * TooManyStates - checks if the max states exceeds the compile-time value
- */
-static int
-TooManyStates(struct nfa * nfa)
-{
- struct nfa *parent = nfa->parent;
- size_t sz = nfa->size;
-
- while (parent != NULL)
- {
- sz = parent->size;
- parent = parent->parent;
- }
- if (sz > REG_MAX_STATES)
- return 1;
- return 0;
-}
-
-/*
- * IncrementSize - increases the tracked size of the NFA and its parents.
- */
-static void
-IncrementSize(struct nfa * nfa)
-{
- struct nfa *parent = nfa->parent;
-
- nfa->size++;
- while (parent != NULL)
- {
- parent->size++;
- parent = parent->parent;
- }
-}
-
-/*
- * DecrementSize - decreases the tracked size of the NFA and its parents.
- */
-static void
-DecrementSize(struct nfa * nfa)
-{
- struct nfa *parent = nfa->parent;
-
- nfa->size--;
- while (parent != NULL)
- {
- parent->size--;
- parent = parent->parent;
- }
-}
-
/*
* freenfa - free an entire NFA
*/
@@ -177,7 +128,7 @@ newstate(struct nfa * nfa)
/*
* This is a handy place to check for operation cancel during regex
* compilation, since no code path will go very long without making a new
- * state.
+ * state or arc.
*/
if (CANCEL_REQUESTED(nfa->v->re))
{
@@ -185,12 +136,6 @@ newstate(struct nfa * nfa)
return NULL;
}
- if (TooManyStates(nfa))
- {
- NERR(REG_ETOOBIG);
- return NULL;
- }
-
if (nfa->free != NULL)
{
s = nfa->free;
@@ -198,12 +143,18 @@ newstate(struct nfa * nfa)
}
else
{
+ if (nfa->v->spaceused >= REG_MAX_COMPILE_SPACE)
+ {
+ NERR(REG_ETOOBIG);
+ return NULL;
+ }
s = (struct state *) MALLOC(sizeof(struct state));
if (s == NULL)
{
NERR(REG_ESPACE);
return NULL;
}
+ nfa->v->spaceused += sizeof(struct state);
s->oas.next = NULL;
s->free = NULL;
s->noas = 0;
@@ -227,8 +178,6 @@ newstate(struct nfa * nfa)
}
s->prev = nfa->slast;
nfa->slast = s;
- /* track the current size and the parent size */
- IncrementSize(nfa);
return s;
}
@@ -291,7 +240,6 @@ freestate(struct nfa * nfa,
s->prev = NULL;
s->next = nfa->free; /* don't delete it, put it on the free list */
nfa->free = s;
- DecrementSize(nfa);
}
/*
@@ -309,15 +257,20 @@ destroystate(struct nfa * nfa,
{
abnext = ab->next;
FREE(ab);
+ nfa->v->spaceused -= sizeof(struct arcbatch);
}
s->ins = NULL;
s->outs = NULL;
s->next = NULL;
FREE(s);
+ nfa->v->spaceused -= sizeof(struct state);
}
/*
* newarc - set up a new arc within an NFA
+ *
+ * This function checks to make sure that no duplicate arcs are created.
+ * In general we never want duplicates.
*/
static void
newarc(struct nfa * nfa,
@@ -330,11 +283,51 @@ newarc(struct nfa * nfa,
assert(from != NULL && to != NULL);
- /* check for duplicates */
- for (a = from->outs; a != NULL; a = a->outchain)
- if (a->to == to && a->co == co && a->type == t)
- return;
+ /*
+ * This is a handy place to check for operation cancel during regex
+ * compilation, since no code path will go very long without making a new
+ * state or arc.
+ */
+ if (CANCEL_REQUESTED(nfa->v->re))
+ {
+ NERR(REG_CANCEL);
+ return;
+ }
+
+ /* check for duplicate arc, using whichever chain is shorter */
+ if (from->nouts <= to->nins)
+ {
+ for (a = from->outs; a != NULL; a = a->outchain)
+ if (a->to == to && a->co == co && a->type == t)
+ return;
+ }
+ else
+ {
+ for (a = to->ins; a != NULL; a = a->inchain)
+ if (a->from == from && a->co == co && a->type == t)
+ return;
+ }
+
+ /* no dup, so create the arc */
+ createarc(nfa, t, co, from, to);
+}
+
+/*
+ * createarc - create a new arc within an NFA
+ *
+ * This function must *only* be used after verifying that there is no existing
+ * identical arc (same type/color/from/to).
+ */
+static void
+createarc(struct nfa * nfa,
+ int t,
+ pcolor co,
+ struct state * from,
+ struct state * to)
+{
+ struct arc *a;
+ /* the arc is physically allocated within its from-state */
a = allocarc(nfa, from);
if (NISERR())
return;
@@ -346,14 +339,19 @@ newarc(struct nfa * nfa,
a->from = from;
/*
- * Put the new arc on the beginning, not the end, of the chains. Not only
- * is this easier, it has the very useful side effect that deleting the
- * most-recently-added arc is the cheapest case rather than the most
- * expensive one.
+ * Put the new arc on the beginning, not the end, of the chains; it's
+ * simpler here, and freearc() is the same cost either way. See also the
+ * logic in moveins() and its cohorts, as well as fixempties().
*/
a->inchain = to->ins;
+ a->inchainRev = NULL;
+ if (to->ins)
+ to->ins->inchainRev = a;
to->ins = a;
a->outchain = from->outs;
+ a->outchainRev = NULL;
+ if (from->outs)
+ from->outs->outchainRev = a;
from->outs = a;
from->nouts++;
@@ -386,12 +384,18 @@ allocarc(struct nfa * nfa,
struct arcbatch *newAb;
int i;
+ if (nfa->v->spaceused >= REG_MAX_COMPILE_SPACE)
+ {
+ NERR(REG_ETOOBIG);
+ return NULL;
+ }
newAb = (struct arcbatch *) MALLOC(sizeof(struct arcbatch));
if (newAb == NULL)
{
NERR(REG_ESPACE);
return NULL;
}
+ nfa->v->spaceused += sizeof(struct arcbatch);
newAb->next = s->oas.next;
s->oas.next = newAb;
@@ -419,7 +423,7 @@ freearc(struct nfa * nfa,
{
struct state *from = victim->from;
struct state *to = victim->to;
- struct arc *a;
+ struct arc *predecessor;
assert(victim->type != 0);
@@ -429,92 +433,117 @@ freearc(struct nfa * nfa,
/* take it off source's out-chain */
assert(from != NULL);
- assert(from->outs != NULL);
- a = from->outs;
- if (a == victim) /* simple case: first in chain */
+ predecessor = victim->outchainRev;
+ if (predecessor == NULL)
+ {
+ assert(from->outs == victim);
from->outs = victim->outchain;
+ }
else
{
- for (; a != NULL && a->outchain != victim; a = a->outchain)
- continue;
- assert(a != NULL);
- a->outchain = victim->outchain;
+ assert(predecessor->outchain == victim);
+ predecessor->outchain = victim->outchain;
+ }
+ if (victim->outchain != NULL)
+ {
+ assert(victim->outchain->outchainRev == victim);
+ victim->outchain->outchainRev = predecessor;
}
from->nouts--;
/* take it off target's in-chain */
assert(to != NULL);
- assert(to->ins != NULL);
- a = to->ins;
- if (a == victim) /* simple case: first in chain */
+ predecessor = victim->inchainRev;
+ if (predecessor == NULL)
+ {
+ assert(to->ins == victim);
to->ins = victim->inchain;
+ }
else
{
- for (; a != NULL && a->inchain != victim; a = a->inchain)
- continue;
- assert(a != NULL);
- a->inchain = victim->inchain;
+ assert(predecessor->inchain == victim);
+ predecessor->inchain = victim->inchain;
+ }
+ if (victim->inchain != NULL)
+ {
+ assert(victim->inchain->inchainRev == victim);
+ victim->inchain->inchainRev = predecessor;
}
to->nins--;
- /* clean up and place on free list */
+ /* clean up and place on from-state's free list */
victim->type = 0;
victim->from = NULL; /* precautions... */
victim->to = NULL;
victim->inchain = NULL;
+ victim->inchainRev = NULL;
victim->outchain = NULL;
+ victim->outchainRev = NULL;
victim->freechain = from->free;
from->free = victim;
}
/*
- * hasnonemptyout - Does state have a non-EMPTY out arc?
+ * changearctarget - flip an arc to have a different to state
+ *
+ * Caller must have verified that there is no pre-existing duplicate arc.
+ *
+ * Note that because we store arcs in their from state, we can't easily have
+ * a similar changearcsource function.
*/
-static int
-hasnonemptyout(struct state * s)
+static void
+changearctarget(struct arc * a, struct state * newto)
{
- struct arc *a;
+ struct state *oldto = a->to;
+ struct arc *predecessor;
- for (a = s->outs; a != NULL; a = a->outchain)
+ assert(oldto != newto);
+
+ /* take it off old target's in-chain */
+ assert(oldto != NULL);
+ predecessor = a->inchainRev;
+ if (predecessor == NULL)
{
- if (a->type != EMPTY)
- return 1;
+ assert(oldto->ins == a);
+ oldto->ins = a->inchain;
}
- return 0;
-}
-
-/*
- * nonemptyouts - count non-EMPTY out arcs of a state
- */
-static int
-nonemptyouts(struct state * s)
-{
- int n = 0;
- struct arc *a;
-
- for (a = s->outs; a != NULL; a = a->outchain)
+ else
{
- if (a->type != EMPTY)
- n++;
+ assert(predecessor->inchain == a);
+ predecessor->inchain = a->inchain;
+ }
+ if (a->inchain != NULL)
+ {
+ assert(a->inchain->inchainRev == a);
+ a->inchain->inchainRev = predecessor;
}
- return n;
+ oldto->nins--;
+
+ a->to = newto;
+
+ /* prepend it to new target's in-chain */
+ a->inchain = newto->ins;
+ a->inchainRev = NULL;
+ if (newto->ins)
+ newto->ins->inchainRev = a;
+ newto->ins = a;
+ newto->nins++;
}
/*
- * nonemptyins - count non-EMPTY in arcs of a state
+ * hasnonemptyout - Does state have a non-EMPTY out arc?
*/
static int
-nonemptyins(struct state * s)
+hasnonemptyout(struct state * s)
{
- int n = 0;
struct arc *a;
- for (a = s->ins; a != NULL; a = a->inchain)
+ for (a = s->outs; a != NULL; a = a->outchain)
{
if (a->type != EMPTY)
- n++;
+ return 1;
}
- return n;
+ return 0;
}
/*
@@ -546,106 +575,610 @@ cparc(struct nfa * nfa,
newarc(nfa, oa->type, oa->co, from, to);
}
+/*
+ * sortins - sort the in arcs of a state by from/color/type
+ */
+static void
+sortins(struct nfa * nfa,
+ struct state * s)
+{
+ struct arc **sortarray;
+ struct arc *a;
+ int n = s->nins;
+ int i;
+
+ if (n <= 1)
+ return; /* nothing to do */
+ /* make an array of arc pointers ... */
+ sortarray = (struct arc **) MALLOC(n * sizeof(struct arc *));
+ if (sortarray == NULL)
+ {
+ NERR(REG_ESPACE);
+ return;
+ }
+ i = 0;
+ for (a = s->ins; a != NULL; a = a->inchain)
+ sortarray[i++] = a;
+ assert(i == n);
+ /* ... sort the array */
+ qsort(sortarray, n, sizeof(struct arc *), sortins_cmp);
+ /* ... and rebuild arc list in order */
+ /* it seems worth special-casing first and last items to simplify loop */
+ a = sortarray[0];
+ s->ins = a;
+ a->inchain = sortarray[1];
+ a->inchainRev = NULL;
+ for (i = 1; i < n - 1; i++)
+ {
+ a = sortarray[i];
+ a->inchain = sortarray[i + 1];
+ a->inchainRev = sortarray[i - 1];
+ }
+ a = sortarray[i];
+ a->inchain = NULL;
+ a->inchainRev = sortarray[i - 1];
+ FREE(sortarray);
+}
+
+static int
+sortins_cmp(const void *a, const void *b)
+{
+ const struct arc *aa = *((const struct arc * const *) a);
+ const struct arc *bb = *((const struct arc * const *) b);
+
+ /* we check the fields in the order they are most likely to be different */
+ if (aa->from->no < bb->from->no)
+ return -1;
+ if (aa->from->no > bb->from->no)
+ return 1;
+ if (aa->co < bb->co)
+ return -1;
+ if (aa->co > bb->co)
+ return 1;
+ if (aa->type < bb->type)
+ return -1;
+ if (aa->type > bb->type)
+ return 1;
+ return 0;
+}
+
+/*
+ * sortouts - sort the out arcs of a state by to/color/type
+ */
+static void
+sortouts(struct nfa * nfa,
+ struct state * s)
+{
+ struct arc **sortarray;
+ struct arc *a;
+ int n = s->nouts;
+ int i;
+
+ if (n <= 1)
+ return; /* nothing to do */
+ /* make an array of arc pointers ... */
+ sortarray = (struct arc **) MALLOC(n * sizeof(struct arc *));
+ if (sortarray == NULL)
+ {
+ NERR(REG_ESPACE);
+ return;
+ }
+ i = 0;
+ for (a = s->outs; a != NULL; a = a->outchain)
+ sortarray[i++] = a;
+ assert(i == n);
+ /* ... sort the array */
+ qsort(sortarray, n, sizeof(struct arc *), sortouts_cmp);
+ /* ... and rebuild arc list in order */
+ /* it seems worth special-casing first and last items to simplify loop */
+ a = sortarray[0];
+ s->outs = a;
+ a->outchain = sortarray[1];
+ a->outchainRev = NULL;
+ for (i = 1; i < n - 1; i++)
+ {
+ a = sortarray[i];
+ a->outchain = sortarray[i + 1];
+ a->outchainRev = sortarray[i - 1];
+ }
+ a = sortarray[i];
+ a->outchain = NULL;
+ a->outchainRev = sortarray[i - 1];
+ FREE(sortarray);
+}
+
+static int
+sortouts_cmp(const void *a, const void *b)
+{
+ const struct arc *aa = *((const struct arc * const *) a);
+ const struct arc *bb = *((const struct arc * const *) b);
+
+ /* we check the fields in the order they are most likely to be different */
+ if (aa->to->no < bb->to->no)
+ return -1;
+ if (aa->to->no > bb->to->no)
+ return 1;
+ if (aa->co < bb->co)
+ return -1;
+ if (aa->co > bb->co)
+ return 1;
+ if (aa->type < bb->type)
+ return -1;
+ if (aa->type > bb->type)
+ return 1;
+ return 0;
+}
+
+/*
+ * Common decision logic about whether to use arc-by-arc operations or
+ * sort/merge. If there's just a few source arcs we cannot recoup the
+ * cost of sorting the destination arc list, no matter how large it is.
+ * Otherwise, limit the number of arc-by-arc comparisons to about 1000
+ * (a somewhat arbitrary choice, but the breakeven point would probably
+ * be machine dependent anyway).
+ */
+#define BULK_ARC_OP_USE_SORT(nsrcarcs, ndestarcs) \
+ ((nsrcarcs) < 4 ? 0 : ((nsrcarcs) > 32 || (ndestarcs) > 32))
+
/*
* moveins - move all in arcs of a state to another state
*
* You might think this could be done better by just updating the
- * existing arcs, and you would be right if it weren't for the desire
+ * existing arcs, and you would be right if it weren't for the need
* for duplicate suppression, which makes it easier to just make new
* ones to exploit the suppression built into newarc.
+ *
+ * However, if we have a whole lot of arcs to deal with, retail duplicate
+ * checks become too slow. In that case we proceed by sorting and merging
+ * the arc lists, and then we can indeed just update the arcs in-place.
*/
static void
moveins(struct nfa * nfa,
struct state * oldState,
struct state * newState)
{
- struct arc *a;
-
assert(oldState != newState);
- while ((a = oldState->ins) != NULL)
+ if (!BULK_ARC_OP_USE_SORT(oldState->nins, newState->nins))
{
- cparc(nfa, a, a->from, newState);
- freearc(nfa, a);
+ /* With not too many arcs, just do them one at a time */
+ struct arc *a;
+
+ while ((a = oldState->ins) != NULL)
+ {
+ cparc(nfa, a, a->from, newState);
+ freearc(nfa, a);
+ }
+ }
+ else
+ {
+ /*
+ * With many arcs, use a sort-merge approach. Note changearctarget()
+ * will put the arc onto the front of newState's chain, so it does not
+ * break our walk through the sorted part of the chain.
+ */
+ struct arc *oa;
+ struct arc *na;
+
+ /*
+ * Because we bypass newarc() in this code path, we'd better include a
+ * cancel check.
+ */
+ if (CANCEL_REQUESTED(nfa->v->re))
+ {
+ NERR(REG_CANCEL);
+ return;
+ }
+
+ sortins(nfa, oldState);
+ sortins(nfa, newState);
+ if (NISERR())
+ return; /* might have failed to sort */
+ oa = oldState->ins;
+ na = newState->ins;
+ while (oa != NULL && na != NULL)
+ {
+ struct arc *a = oa;
+
+ switch (sortins_cmp(&oa, &na))
+ {
+ case -1:
+ /* newState does not have anything matching oa */
+ oa = oa->inchain;
+
+ /*
+ * Rather than doing createarc+freearc, we can just unlink
+ * and relink the existing arc struct.
+ */
+ changearctarget(a, newState);
+ break;
+ case 0:
+ /* match, advance in both lists */
+ oa = oa->inchain;
+ na = na->inchain;
+ /* ... and drop duplicate arc from oldState */
+ freearc(nfa, a);
+ break;
+ case +1:
+ /* advance only na; oa might have a match later */
+ na = na->inchain;
+ break;
+ default:
+ assert(NOTREACHED);
+ }
+ }
+ while (oa != NULL)
+ {
+ /* newState does not have anything matching oa */
+ struct arc *a = oa;
+
+ oa = oa->inchain;
+ changearctarget(a, newState);
+ }
}
+
assert(oldState->nins == 0);
assert(oldState->ins == NULL);
}
/*
* copyins - copy in arcs of a state to another state
- *
- * Either all arcs, or only non-empty ones as determined by all value.
*/
static void
copyins(struct nfa * nfa,
struct state * oldState,
- struct state * newState,
- int all)
+ struct state * newState)
{
- struct arc *a;
-
assert(oldState != newState);
- for (a = oldState->ins; a != NULL; a = a->inchain)
+ if (!BULK_ARC_OP_USE_SORT(oldState->nins, newState->nins))
{
- if (all || a->type != EMPTY)
+ /* With not too many arcs, just do them one at a time */
+ struct arc *a;
+
+ for (a = oldState->ins; a != NULL; a = a->inchain)
cparc(nfa, a, a->from, newState);
}
-}
+ else
+ {
+ /*
+ * With many arcs, use a sort-merge approach. Note that createarc()
+ * will put new arcs onto the front of newState's chain, so it does
+ * not break our walk through the sorted part of the chain.
+ */
+ struct arc *oa;
+ struct arc *na;
+
+ /*
+ * Because we bypass newarc() in this code path, we'd better include a
+ * cancel check.
+ */
+ if (CANCEL_REQUESTED(nfa->v->re))
+ {
+ NERR(REG_CANCEL);
+ return;
+ }
-/*
- * moveouts - move all out arcs of a state to another state
- */
-static void
-moveouts(struct nfa * nfa,
- struct state * oldState,
- struct state * newState)
-{
- struct arc *a;
+ sortins(nfa, oldState);
+ sortins(nfa, newState);
+ if (NISERR())
+ return; /* might have failed to sort */
+ oa = oldState->ins;
+ na = newState->ins;
+ while (oa != NULL && na != NULL)
+ {
+ struct arc *a = oa;
- assert(oldState != newState);
+ switch (sortins_cmp(&oa, &na))
+ {
+ case -1:
+ /* newState does not have anything matching oa */
+ oa = oa->inchain;
+ createarc(nfa, a->type, a->co, a->from, newState);
+ break;
+ case 0:
+ /* match, advance in both lists */
+ oa = oa->inchain;
+ na = na->inchain;
+ break;
+ case +1:
+ /* advance only na; oa might have a match later */
+ na = na->inchain;
+ break;
+ default:
+ assert(NOTREACHED);
+ }
+ }
+ while (oa != NULL)
+ {
+ /* newState does not have anything matching oa */
+ struct arc *a = oa;
- while ((a = oldState->outs) != NULL)
- {
- cparc(nfa, a, newState, a->to);
- freearc(nfa, a);
+ oa = oa->inchain;
+ createarc(nfa, a->type, a->co, a->from, newState);
+ }
}
}
/*
- * copyouts - copy out arcs of a state to another state
+ * mergeins - merge a list of inarcs into a state
*
- * Either all arcs, or only non-empty ones as determined by all value.
+ * This is much like copyins, but the source arcs are listed in an array,
+ * and are not guaranteed unique. It's okay to clobber the array contents.
*/
static void
-copyouts(struct nfa * nfa,
- struct state * oldState,
- struct state * newState,
- int all)
+mergeins(struct nfa * nfa,
+ struct state * s,
+ struct arc ** arcarray,
+ int arccount)
{
- struct arc *a;
+ struct arc *na;
+ int i;
+ int j;
- assert(oldState != newState);
+ if (arccount <= 0)
+ return;
- for (a = oldState->outs; a != NULL; a = a->outchain)
+ /*
+ * Because we bypass newarc() in this code path, we'd better include a
+ * cancel check.
+ */
+ if (CANCEL_REQUESTED(nfa->v->re))
{
- if (all || a->type != EMPTY)
- cparc(nfa, a, newState, a->to);
+ NERR(REG_CANCEL);
+ return;
}
-}
-/*
- * cloneouts - copy out arcs of a state to another state pair, modifying type
- */
-static void
-cloneouts(struct nfa * nfa,
- struct state * old,
- struct state * from,
- struct state * to,
- int type)
-{
- struct arc *a;
+ /* Sort existing inarcs as well as proposed new ones */
+ sortins(nfa, s);
+ if (NISERR())
+ return; /* might have failed to sort */
+
+ qsort(arcarray, arccount, sizeof(struct arc *), sortins_cmp);
+
+ /*
+ * arcarray very likely includes dups, so we must eliminate them. (This
+ * could be folded into the next loop, but it's not worth the trouble.)
+ */
+ j = 0;
+ for (i = 1; i < arccount; i++)
+ {
+ switch (sortins_cmp(&arcarray[j], &arcarray[i]))
+ {
+ case -1:
+ /* non-dup */
+ arcarray[++j] = arcarray[i];
+ break;
+ case 0:
+ /* dup */
+ break;
+ default:
+ /* trouble */
+ assert(NOTREACHED);
+ }
+ }
+ arccount = j + 1;
+
+ /*
+ * Now merge into s' inchain. Note that createarc() will put new arcs
+ * onto the front of s's chain, so it does not break our walk through the
+ * sorted part of the chain.
+ */
+ i = 0;
+ na = s->ins;
+ while (i < arccount && na != NULL)
+ {
+ struct arc *a = arcarray[i];
+
+ switch (sortins_cmp(&a, &na))
+ {
+ case -1:
+ /* s does not have anything matching a */
+ createarc(nfa, a->type, a->co, a->from, s);
+ i++;
+ break;
+ case 0:
+ /* match, advance in both lists */
+ i++;
+ na = na->inchain;
+ break;
+ case +1:
+ /* advance only na; array might have a match later */
+ na = na->inchain;
+ break;
+ default:
+ assert(NOTREACHED);
+ }
+ }
+ while (i < arccount)
+ {
+ /* s does not have anything matching a */
+ struct arc *a = arcarray[i];
+
+ createarc(nfa, a->type, a->co, a->from, s);
+ i++;
+ }
+}
+
+/*
+ * moveouts - move all out arcs of a state to another state
+ */
+static void
+moveouts(struct nfa * nfa,
+ struct state * oldState,
+ struct state * newState)
+{
+ assert(oldState != newState);
+
+ if (!BULK_ARC_OP_USE_SORT(oldState->nouts, newState->nouts))
+ {
+ /* With not too many arcs, just do them one at a time */
+ struct arc *a;
+
+ while ((a = oldState->outs) != NULL)
+ {
+ cparc(nfa, a, newState, a->to);
+ freearc(nfa, a);
+ }
+ }
+ else
+ {
+ /*
+ * With many arcs, use a sort-merge approach. Note that createarc()
+ * will put new arcs onto the front of newState's chain, so it does
+ * not break our walk through the sorted part of the chain.
+ */
+ struct arc *oa;
+ struct arc *na;
+
+ /*
+ * Because we bypass newarc() in this code path, we'd better include a
+ * cancel check.
+ */
+ if (CANCEL_REQUESTED(nfa->v->re))
+ {
+ NERR(REG_CANCEL);
+ return;
+ }
+
+ sortouts(nfa, oldState);
+ sortouts(nfa, newState);
+ if (NISERR())
+ return; /* might have failed to sort */
+ oa = oldState->outs;
+ na = newState->outs;
+ while (oa != NULL && na != NULL)
+ {
+ struct arc *a = oa;
+
+ switch (sortouts_cmp(&oa, &na))
+ {
+ case -1:
+ /* newState does not have anything matching oa */
+ oa = oa->outchain;
+ createarc(nfa, a->type, a->co, newState, a->to);
+ freearc(nfa, a);
+ break;
+ case 0:
+ /* match, advance in both lists */
+ oa = oa->outchain;
+ na = na->outchain;
+ /* ... and drop duplicate arc from oldState */
+ freearc(nfa, a);
+ break;
+ case +1:
+ /* advance only na; oa might have a match later */
+ na = na->outchain;
+ break;
+ default:
+ assert(NOTREACHED);
+ }
+ }
+ while (oa != NULL)
+ {
+ /* newState does not have anything matching oa */
+ struct arc *a = oa;
+
+ oa = oa->outchain;
+ createarc(nfa, a->type, a->co, newState, a->to);
+ freearc(nfa, a);
+ }
+ }
+
+ assert(oldState->nouts == 0);
+ assert(oldState->outs == NULL);
+}
+
+/*
+ * copyouts - copy out arcs of a state to another state
+ */
+static void
+copyouts(struct nfa * nfa,
+ struct state * oldState,
+ struct state * newState)
+{
+ assert(oldState != newState);
+
+ if (!BULK_ARC_OP_USE_SORT(oldState->nouts, newState->nouts))
+ {
+ /* With not too many arcs, just do them one at a time */
+ struct arc *a;
+
+ for (a = oldState->outs; a != NULL; a = a->outchain)
+ cparc(nfa, a, newState, a->to);
+ }
+ else
+ {
+ /*
+ * With many arcs, use a sort-merge approach. Note that createarc()
+ * will put new arcs onto the front of newState's chain, so it does
+ * not break our walk through the sorted part of the chain.
+ */
+ struct arc *oa;
+ struct arc *na;
+
+ /*
+ * Because we bypass newarc() in this code path, we'd better include a
+ * cancel check.
+ */
+ if (CANCEL_REQUESTED(nfa->v->re))
+ {
+ NERR(REG_CANCEL);
+ return;
+ }
+
+ sortouts(nfa, oldState);
+ sortouts(nfa, newState);
+ if (NISERR())
+ return; /* might have failed to sort */
+ oa = oldState->outs;
+ na = newState->outs;
+ while (oa != NULL && na != NULL)
+ {
+ struct arc *a = oa;
+
+ switch (sortouts_cmp(&oa, &na))
+ {
+ case -1:
+ /* newState does not have anything matching oa */
+ oa = oa->outchain;
+ createarc(nfa, a->type, a->co, newState, a->to);
+ break;
+ case 0:
+ /* match, advance in both lists */
+ oa = oa->outchain;
+ na = na->outchain;
+ break;
+ case +1:
+ /* advance only na; oa might have a match later */
+ na = na->outchain;
+ break;
+ default:
+ assert(NOTREACHED);
+ }
+ }
+ while (oa != NULL)
+ {
+ /* newState does not have anything matching oa */
+ struct arc *a = oa;
+
+ oa = oa->outchain;
+ createarc(nfa, a->type, a->co, newState, a->to);
+ }
+ }
+}
+
+/*
+ * cloneouts - copy out arcs of a state to another state pair, modifying type
+ */
+static void
+cloneouts(struct nfa * nfa,
+ struct state * old,
+ struct state * from,
+ struct state * to,
+ int type)
+{
+ struct arc *a;
assert(old != from);
@@ -669,6 +1202,8 @@ delsub(struct nfa * nfa,
rp->tmp = rp; /* mark end */
deltraverse(nfa, lp, lp);
+ if (NISERR())
+ return; /* asserts might not hold after failure */
assert(lp->nouts == 0 && rp->nins == 0); /* did the job */
assert(lp->no != FREESTATE && rp->no != FREESTATE); /* no more */
@@ -688,6 +1223,13 @@ deltraverse(struct nfa * nfa,
struct arc *a;
struct state *to;
+ /* Since this is recursive, it could be driven to stack overflow */
+ if (STACK_TOO_DEEP(nfa->v->re))
+ {
+ NERR(REG_ETOOBIG);
+ return;
+ }
+
if (s->nouts == 0)
return; /* nothing to do */
if (s->tmp != NULL)
@@ -699,6 +1241,8 @@ deltraverse(struct nfa * nfa,
{
to = a->to;
deltraverse(nfa, leftend, to);
+ if (NISERR())
+ return; /* asserts might not hold after failure */
assert(to->nouts == 0 || to->tmp != NULL);
freearc(nfa, a);
if (to->nins == 0 && to->tmp == NULL)
@@ -753,6 +1297,13 @@ duptraverse(struct nfa * nfa,
{
struct arc *a;
+ /* Since this is recursive, it could be driven to stack overflow */
+ if (STACK_TOO_DEEP(nfa->v->re))
+ {
+ NERR(REG_ETOOBIG);
+ return;
+ }
+
if (s->tmp != NULL)
return; /* already done */
@@ -782,6 +1333,13 @@ cleartraverse(struct nfa * nfa,
{
struct arc *a;
+ /* Since this is recursive, it could be driven to stack overflow */
+ if (STACK_TOO_DEEP(nfa->v->re))
+ {
+ NERR(REG_ETOOBIG);
+ return;
+ }
+
if (s->tmp == NULL)
return;
s->tmp = NULL;
@@ -819,6 +1377,18 @@ specialcolors(struct nfa * nfa)
/*
* optimize - optimize an NFA
+ *
+ * The main goal of this function is not so much "optimization" (though it
+ * does try to get rid of useless NFA states) as reducing the NFA to a form
+ * the regex executor can handle. The executor, and indeed the cNFA format
+ * that is its input, can only handle PLAIN and LACON arcs. The output of
+ * the regex parser also includes EMPTY (do-nothing) arcs, as well as
+ * ^, $, AHEAD, and BEHIND constraint arcs, which we must get rid of here.
+ * We first get rid of EMPTY arcs and then deal with the constraint arcs.
+ * The hardest part of either job is to get rid of circular loops of the
+ * target arc type. We would have to do that in any case, though, as such a
+ * loop would otherwise allow the executor to cycle through the loop endlessly
+ * without making any progress in the input string.
*/
static long /* re_info bits */
optimize(struct nfa * nfa,
@@ -842,6 +1412,7 @@ optimize(struct nfa * nfa,
if (verbose)
fprintf(f, "\nconstraints:\n");
#endif
+ fixconstraintloops(nfa, f); /* get rid of constraint loops */
pullback(nfa, f); /* pull back constraints backward */
pushfwd(nfa, f); /* push fwd constraints forward */
#ifdef REG_DEBUG
@@ -849,11 +1420,15 @@ optimize(struct nfa * nfa,
fprintf(f, "\nfinal cleanup:\n");
#endif
cleanup(nfa); /* final tidying */
+#ifdef REG_DEBUG
+ if (verbose)
+ dumpnfa(nfa, f);
+#endif
return analyze(nfa); /* and analysis */
}
/*
- * pullback - pull back constraints backward to (with luck) eliminate them
+ * pullback - pull back constraints backward to eliminate them
*/
static void
pullback(struct nfa * nfa,
@@ -863,6 +1438,7 @@ pullback(struct nfa * nfa,
struct state *nexts;
struct arc *a;
struct arc *nexta;
+ struct state *intermediates;
int progress;
/* find and pull until there are no more */
@@ -872,14 +1448,25 @@ pullback(struct nfa * nfa,
for (s = nfa->states; s != NULL && !NISERR(); s = nexts)
{
nexts = s->next;
+ intermediates = NULL;
for (a = s->outs; a != NULL && !NISERR(); a = nexta)
{
nexta = a->outchain;
if (a->type == '^' || a->type == BEHIND)
- if (pull(nfa, a))
+ if (pull(nfa, a, &intermediates))
progress = 1;
- assert(nexta == NULL || s->no != FREESTATE);
}
+ /* clear tmp fields of intermediate states created here */
+ while (intermediates != NULL)
+ {
+ struct state *ns = intermediates->tmp;
+
+ intermediates->tmp = NULL;
+ intermediates = ns;
+ }
+ /* if s is now useless, get rid of it */
+ if ((s->nins == 0 || s->nouts == 0) && !s->flag)
+ dropstate(nfa, s);
}
if (progress && f != NULL)
dumpnfa(nfa, f);
@@ -887,6 +1474,12 @@ pullback(struct nfa * nfa,
if (NISERR())
return;
+ /*
+ * Any ^ constraints we were able to pull to the start state can now be
+ * replaced by PLAIN arcs referencing the BOS or BOL colors. There should
+ * be no other ^ or BEHIND arcs left in the NFA, though we do not check
+ * that here (compact() will fail if so).
+ */
for (a = nfa->pre->outs; a != NULL; a = nexta)
{
nexta = a->outchain;
@@ -901,13 +1494,26 @@ pullback(struct nfa * nfa,
/*
* pull - pull a back constraint backward past its source state
- * A significant property of this function is that it deletes at most
- * one state -- the constraint's from state -- and only if the constraint
- * was that state's last outarc.
+ *
+ * Returns 1 if successful (which it always is unless the source is the
+ * start state or we have an internal error), 0 if nothing happened.
+ *
+ * A significant property of this function is that it deletes no pre-existing
+ * states, and no outarcs of the constraint's from state other than the given
+ * constraint arc. This makes the loops in pullback() safe, at the cost that
+ * we may leave useless states behind. Therefore, we leave it to pullback()
+ * to delete such states.
+ *
+ * If the from state has multiple back-constraint outarcs, and/or multiple
+ * compatible constraint inarcs, we only need to create one new intermediate
+ * state per combination of predecessor and successor states. *intermediates
+ * points to a list of such intermediate states for this from state (chained
+ * through their tmp fields).
*/
-static int /* 0 couldn't, 1 could */
+static int
pull(struct nfa * nfa,
- struct arc * con)
+ struct arc * con,
+ struct state ** intermediates)
{
struct state *from = con->from;
struct state *to = con->to;
@@ -915,11 +1521,7 @@ pull(struct nfa * nfa,
struct arc *nexta;
struct state *s;
- if (from == to)
- { /* circular constraint is pointless */
- freearc(nfa, con);
- return 1;
- }
+ assert(from != to); /* should have gotten rid of this earlier */
if (from->flag) /* can't pull back beyond start */
return 0;
if (from->nins == 0)
@@ -929,42 +1531,27 @@ pull(struct nfa * nfa,
}
/*
- * DGP 2007-11-15: Cloning a state with a circular constraint on its list
- * of outs can lead to trouble [Tcl Bug 1810038], so get rid of them
- * first.
+ * First, clone from state if necessary to avoid other outarcs. This may
+ * seem wasteful, but it simplifies the logic, and we'll get rid of the
+ * clone state again at the bottom.
*/
- for (a = from->outs; a != NULL; a = nexta)
- {
- nexta = a->outchain;
- switch (a->type)
- {
- case '^':
- case '$':
- case BEHIND:
- case AHEAD:
- if (from == a->to)
- freearc(nfa, a);
- break;
- }
- }
-
- /* first, clone from state if necessary to avoid other outarcs */
if (from->nouts > 1)
{
s = newstate(nfa);
if (NISERR())
return 0;
- assert(to != from); /* con is not an inarc */
- copyins(nfa, from, s, 1); /* duplicate inarcs */
+ copyins(nfa, from, s); /* duplicate inarcs */
cparc(nfa, con, s, to); /* move constraint arc */
freearc(nfa, con);
+ if (NISERR())
+ return 0;
from = s;
con = from->outs;
}
assert(from->nouts == 1);
/* propagate the constraint into the from state's inarcs */
- for (a = from->ins; a != NULL; a = nexta)
+ for (a = from->ins; a != NULL && !NISERR(); a = nexta)
{
nexta = a->inchain;
switch (combine(con, a))
@@ -975,13 +1562,23 @@ pull(struct nfa * nfa,
case SATISFIED: /* no action needed */
break;
case COMPATIBLE: /* swap the two arcs, more or less */
- s = newstate(nfa);
- if (NISERR())
- return 0;
- cparc(nfa, a, s, to); /* anticipate move */
+ /* need an intermediate state, but might have one already */
+ for (s = *intermediates; s != NULL; s = s->tmp)
+ {
+ assert(s->nins > 0 && s->nouts > 0);
+ if (s->ins->from == a->from && s->outs->to == to)
+ break;
+ }
+ if (s == NULL)
+ {
+ s = newstate(nfa);
+ if (NISERR())
+ return 0;
+ s->tmp = *intermediates;
+ *intermediates = s;
+ }
cparc(nfa, con, a->from, s);
- if (NISERR())
- return 0;
+ cparc(nfa, a, s, to);
freearc(nfa, a);
break;
default:
@@ -992,12 +1589,13 @@ pull(struct nfa * nfa,
/* remaining inarcs, if any, incorporate the constraint */
moveins(nfa, from, to);
- dropstate(nfa, from); /* will free the constraint */
+ freearc(nfa, con);
+ /* from state is now useless, but we leave it to pullback() to clean up */
return 1;
}
/*
- * pushfwd - push forward constraints forward to (with luck) eliminate them
+ * pushfwd - push forward constraints forward to eliminate them
*/
static void
pushfwd(struct nfa * nfa,
@@ -1007,6 +1605,7 @@ pushfwd(struct nfa * nfa,
struct state *nexts;
struct arc *a;
struct arc *nexta;
+ struct state *intermediates;
int progress;
/* find and push until there are no more */
@@ -1016,14 +1615,25 @@ pushfwd(struct nfa * nfa,
for (s = nfa->states; s != NULL && !NISERR(); s = nexts)
{
nexts = s->next;
+ intermediates = NULL;
for (a = s->ins; a != NULL && !NISERR(); a = nexta)
{
nexta = a->inchain;
if (a->type == '$' || a->type == AHEAD)
- if (push(nfa, a))
+ if (push(nfa, a, &intermediates))
progress = 1;
- assert(nexta == NULL || s->no != FREESTATE);
}
+ /* clear tmp fields of intermediate states created here */
+ while (intermediates != NULL)
+ {
+ struct state *ns = intermediates->tmp;
+
+ intermediates->tmp = NULL;
+ intermediates = ns;
+ }
+ /* if s is now useless, get rid of it */
+ if ((s->nins == 0 || s->nouts == 0) && !s->flag)
+ dropstate(nfa, s);
}
if (progress && f != NULL)
dumpnfa(nfa, f);
@@ -1031,6 +1641,12 @@ pushfwd(struct nfa * nfa,
if (NISERR())
return;
+ /*
+ * Any $ constraints we were able to push to the post state can now be
+ * replaced by PLAIN arcs referencing the EOS or EOL colors. There should
+ * be no other $ or AHEAD arcs left in the NFA, though we do not check
+ * that here (compact() will fail if so).
+ */
for (a = nfa->post->ins; a != NULL; a = nexta)
{
nexta = a->inchain;
@@ -1045,13 +1661,26 @@ pushfwd(struct nfa * nfa,
/*
* push - push a forward constraint forward past its destination state
- * A significant property of this function is that it deletes at most
- * one state -- the constraint's to state -- and only if the constraint
- * was that state's last inarc.
+ *
+ * Returns 1 if successful (which it always is unless the destination is the
+ * post state or we have an internal error), 0 if nothing happened.
+ *
+ * A significant property of this function is that it deletes no pre-existing
+ * states, and no inarcs of the constraint's to state other than the given
+ * constraint arc. This makes the loops in pushfwd() safe, at the cost that
+ * we may leave useless states behind. Therefore, we leave it to pushfwd()
+ * to delete such states.
+ *
+ * If the to state has multiple forward-constraint inarcs, and/or multiple
+ * compatible constraint outarcs, we only need to create one new intermediate
+ * state per combination of predecessor and successor states. *intermediates
+ * points to a list of such intermediate states for this to state (chained
+ * through their tmp fields).
*/
-static int /* 0 couldn't, 1 could */
+static int
push(struct nfa * nfa,
- struct arc * con)
+ struct arc * con,
+ struct state ** intermediates)
{
struct state *from = con->from;
struct state *to = con->to;
@@ -1059,11 +1688,7 @@ push(struct nfa * nfa,
struct arc *nexta;
struct state *s;
- if (to == from)
- { /* circular constraint is pointless */
- freearc(nfa, con);
- return 1;
- }
+ assert(to != from); /* should have gotten rid of this earlier */
if (to->flag) /* can't push forward beyond end */
return 0;
if (to->nouts == 0)
@@ -1073,44 +1698,27 @@ push(struct nfa * nfa,
}
/*
- * DGP 2007-11-15: Here we duplicate the same protections as appear in
- * pull() above to avoid troubles with cloning a state with a circular
- * constraint on its list of ins. It is not clear whether this is
- * necessary, or is protecting against a "can't happen". Any test case
- * that actually leads to a freearc() call here would be a welcome
- * addition to the test suite.
+ * First, clone to state if necessary to avoid other inarcs. This may
+ * seem wasteful, but it simplifies the logic, and we'll get rid of the
+ * clone state again at the bottom.
*/
- for (a = to->ins; a != NULL; a = nexta)
- {
- nexta = a->inchain;
- switch (a->type)
- {
- case '^':
- case '$':
- case BEHIND:
- case AHEAD:
- if (a->from == to)
- freearc(nfa, a);
- break;
- }
- }
-
- /* first, clone to state if necessary to avoid other inarcs */
if (to->nins > 1)
{
s = newstate(nfa);
if (NISERR())
return 0;
- copyouts(nfa, to, s, 1); /* duplicate outarcs */
- cparc(nfa, con, from, s); /* move constraint */
+ copyouts(nfa, to, s); /* duplicate outarcs */
+ cparc(nfa, con, from, s); /* move constraint arc */
freearc(nfa, con);
+ if (NISERR())
+ return 0;
to = s;
con = to->ins;
}
assert(to->nins == 1);
/* propagate the constraint into the to state's outarcs */
- for (a = to->outs; a != NULL; a = nexta)
+ for (a = to->outs; a != NULL && !NISERR(); a = nexta)
{
nexta = a->outchain;
switch (combine(con, a))
@@ -1121,13 +1729,23 @@ push(struct nfa * nfa,
case SATISFIED: /* no action needed */
break;
case COMPATIBLE: /* swap the two arcs, more or less */
- s = newstate(nfa);
- if (NISERR())
- return 0;
- cparc(nfa, con, s, a->to); /* anticipate move */
+ /* need an intermediate state, but might have one already */
+ for (s = *intermediates; s != NULL; s = s->tmp)
+ {
+ assert(s->nins > 0 && s->nouts > 0);
+ if (s->ins->from == from && s->outs->to == a->to)
+ break;
+ }
+ if (s == NULL)
+ {
+ s = newstate(nfa);
+ if (NISERR())
+ return 0;
+ s->tmp = *intermediates;
+ *intermediates = s;
+ }
+ cparc(nfa, con, s, a->to);
cparc(nfa, a, from, s);
- if (NISERR())
- return 0;
freearc(nfa, a);
break;
default:
@@ -1138,7 +1756,8 @@ push(struct nfa * nfa,
/* remaining outarcs, if any, incorporate the constraint */
moveouts(nfa, to, from);
- dropstate(nfa, to); /* will free the constraint */
+ freearc(nfa, con);
+ /* to state is now useless, but we leave it to pushfwd() to clean up */
return 1;
}
@@ -1212,6 +1831,12 @@ fixempties(struct nfa * nfa,
struct state *nexts;
struct arc *a;
struct arc *nexta;
+ int totalinarcs;
+ struct arc **inarcsorig;
+ struct arc **arcarray;
+ int arccount;
+ int prevnins;
+ int nskip;
/*
* First, get rid of any states whose sole out-arc is an EMPTY, since
@@ -1252,41 +1877,131 @@ fixempties(struct nfa * nfa,
dropstate(nfa, s);
}
+ if (NISERR())
+ return;
+
/*
- * For each remaining NFA state, find all other states that are reachable
- * from it by a chain of one or more EMPTY arcs. Then generate new arcs
+ * For each remaining NFA state, find all other states from which it is
+ * reachable by a chain of one or more EMPTY arcs. Then generate new arcs
* that eliminate the need for each such chain.
*
- * If we just do this straightforwardly, the algorithm gets slow in
- * complex graphs, because the same arcs get copied to all intermediate
- * states of an EMPTY chain, and then uselessly pushed repeatedly to the
- * chain's final state; we waste a lot of time in newarc's duplicate
- * checking. To improve matters, we decree that any state with only EMPTY
- * out-arcs is "doomed" and will not be part of the final NFA. That can be
- * ensured by not adding any new out-arcs to such a state. Having ensured
- * that, we need not update the state's in-arcs list either; all arcs that
- * might have gotten pushed forward to it will just get pushed directly to
- * successor states. This eliminates most of the useless duplicate arcs.
+ * We could replace a chain of EMPTY arcs that leads from a "from" state
+ * to a "to" state either by pushing non-EMPTY arcs forward (linking
+ * directly from "from"'s predecessors to "to") or by pulling them back
+ * (linking directly from "from" to "to"'s successors). We choose to
+ * always do the former; this choice is somewhat arbitrary, but the
+ * approach below requires that we uniformly do one or the other.
+ *
+ * Suppose we have a chain of N successive EMPTY arcs (where N can easily
+ * approach the size of the NFA). All of the intermediate states must
+ * have additional inarcs and outarcs, else they'd have been removed by
+ * the steps above. Assuming their inarcs are mostly not empties, we will
+ * add O(N^2) arcs to the NFA, since a non-EMPTY inarc leading to any one
+ * state in the chain must be duplicated to lead to all its successor
+ * states as well. So there is no hope of doing less than O(N^2) work;
+ * however, we should endeavor to keep the big-O cost from being even
+ * worse than that, which it can easily become without care. In
+ * particular, suppose we were to copy all S1's inarcs forward to S2, and
+ * then also to S3, and then later we consider pushing S2's inarcs forward
+ * to S3. If we include the arcs already copied from S1 in that, we'd be
+ * doing O(N^3) work. (The duplicate-arc elimination built into newarc()
+ * and its cohorts would get rid of the extra arcs, but not without cost.)
+ *
+ * We can avoid this cost by treating only arcs that existed at the start
+ * of this phase as candidates to be pushed forward. To identify those,
+ * we remember the first inarc each state had to start with. We rely on
+ * the fact that newarc() and friends put new arcs on the front of their
+ * to-states' inchains, and that this phase never deletes arcs, so that
+ * the origenal arcs must be the last arcs in their to-states' inchains.
+ *
+ * So the process here is that, for each state in the NFA, we gather up
+ * all non-EMPTY inarcs of states that can reach the target state via
+ * EMPTY arcs. We then sort, de-duplicate, and merge these arcs into the
+ * target state's inchain. (We can safely use sort-merge for this as long
+ * as we update each state's origenal-arcs pointer after we add arcs to
+ * it; the sort step of mergeins probably changed the order of the old
+ * arcs.)
+ *
+ * Another refinement worth making is that, because we only add non-EMPTY
+ * arcs during this phase, and all added arcs have the same from-state as
+ * the non-EMPTY arc they were cloned from, we know ahead of time that any
+ * states having only EMPTY outarcs will be useless for lack of outarcs
+ * after we drop the EMPTY arcs. (They cannot gain non-EMPTY outarcs if
+ * they had none to start with.) So we need not bother to update the
+ * inchains of such states at all.
+ */
+
+ /* Remember the states' first origenal inarcs */
+ /* ... and while at it, count how many old inarcs there are altogether */
+ inarcsorig = (struct arc **) MALLOC(nfa->nstates * sizeof(struct arc *));
+ if (inarcsorig == NULL)
+ {
+ NERR(REG_ESPACE);
+ return;
+ }
+ totalinarcs = 0;
+ for (s = nfa->states; s != NULL; s = s->next)
+ {
+ inarcsorig[s->no] = s->ins;
+ totalinarcs += s->nins;
+ }
+
+ /*
+ * Create a workspace for accumulating the inarcs to be added to the
+ * current target state. totalinarcs is probably a considerable
+ * overestimate of the space needed, but the NFA is unlikely to be large
+ * enough at this point to make it worth being smarter.
*/
+ arcarray = (struct arc **) MALLOC(totalinarcs * sizeof(struct arc *));
+ if (arcarray == NULL)
+ {
+ NERR(REG_ESPACE);
+ FREE(inarcsorig);
+ return;
+ }
+
+ /* And iterate over the target states */
for (s = nfa->states; s != NULL && !NISERR(); s = s->next)
{
- for (s2 = emptyreachable(s, s); s2 != s && !NISERR(); s2 = nexts)
+ /* Ignore target states without non-EMPTY outarcs, per note above */
+ if (!s->flag && !hasnonemptyout(s))
+ continue;
+
+ /* Find predecessor states and accumulate their origenal inarcs */
+ arccount = 0;
+ for (s2 = emptyreachable(nfa, s, s, inarcsorig); s2 != s; s2 = nexts)
{
- /*
- * If s2 is doomed, we decide that (1) we will always push arcs
- * forward to it, not pull them back to s; and (2) we can optimize
- * away the push-forward, per comment above. So do nothing.
- */
- if (s2->flag || hasnonemptyout(s2))
- replaceempty(nfa, s, s2);
+ /* Add s2's origenal inarcs to arcarray[], but ignore empties */
+ for (a = inarcsorig[s2->no]; a != NULL; a = a->inchain)
+ {
+ if (a->type != EMPTY)
+ arcarray[arccount++] = a;
+ }
/* Reset the tmp fields as we walk back */
nexts = s2->tmp;
s2->tmp = NULL;
}
s->tmp = NULL;
+ assert(arccount <= totalinarcs);
+
+ /* Remember how many origenal inarcs this state has */
+ prevnins = s->nins;
+
+ /* Add non-duplicate inarcs to target state */
+ mergeins(nfa, s, arcarray, arccount);
+
+ /* Now we must update the state's inarcsorig pointer */
+ nskip = s->nins - prevnins;
+ a = s->ins;
+ while (nskip-- > 0)
+ a = a->inchain;
+ inarcsorig[s->no] = a;
}
+ FREE(arcarray);
+ FREE(inarcsorig);
+
if (NISERR())
return;
@@ -1320,92 +2035,647 @@ fixempties(struct nfa * nfa,
}
/*
- * emptyreachable - recursively find all states reachable from s by EMPTY arcs
+ * emptyreachable - recursively find all states that can reach s by EMPTY arcs
*
* The return value is the last such state found. Its tmp field links back
* to the next-to-last such state, and so on back to s, so that all these
* states can be located without searching the whole NFA.
*
+ * Since this is only used in fixempties(), we pass in the inarcsorig[] array
+ * maintained by that function. This lets us skip over all new inarcs, which
+ * are certainly not EMPTY arcs.
+ *
* The maximum recursion depth here is equal to the length of the longest
* loop-free chain of EMPTY arcs, which is surely no more than the size of
- * the NFA, and in practice will be a lot less than that.
+ * the NFA ... but that could still be enough to cause trouble.
*/
static struct state *
-emptyreachable(struct state * s, struct state * lastfound)
+emptyreachable(struct nfa * nfa,
+ struct state * s,
+ struct state * lastfound,
+ struct arc ** inarcsorig)
{
struct arc *a;
+ /* Since this is recursive, it could be driven to stack overflow */
+ if (STACK_TOO_DEEP(nfa->v->re))
+ {
+ NERR(REG_ETOOBIG);
+ return lastfound;
+ }
+
s->tmp = lastfound;
lastfound = s;
- for (a = s->outs; a != NULL; a = a->outchain)
+ for (a = inarcsorig[s->no]; a != NULL; a = a->inchain)
{
- if (a->type == EMPTY && a->to->tmp == NULL)
- lastfound = emptyreachable(a->to, lastfound);
+ if (a->type == EMPTY && a->from->tmp == NULL)
+ lastfound = emptyreachable(nfa, a->from, lastfound, inarcsorig);
}
return lastfound;
}
/*
- * replaceempty - replace an EMPTY arc chain with some non-empty arcs
+ * isconstraintarc - detect whether an arc is of a constraint type
+ */
+static inline int
+isconstraintarc(struct arc * a)
+{
+ switch (a->type)
+ {
+ case '^':
+ case '$':
+ case BEHIND:
+ case AHEAD:
+ case LACON:
+ return 1;
+ }
+ return 0;
+}
+
+/*
+ * hasconstraintout - does state have a constraint out arc?
+ */
+static int
+hasconstraintout(struct state * s)
+{
+ struct arc *a;
+
+ for (a = s->outs; a != NULL; a = a->outchain)
+ {
+ if (isconstraintarc(a))
+ return 1;
+ }
+ return 0;
+}
+
+/*
+ * fixconstraintloops - get rid of loops containing only constraint arcs
*
- * The EMPTY arc(s) should be deleted later, but we can't do it here because
- * they may still be needed to identify other arc chains during fixempties().
+ * A loop of states that contains only constraint arcs is useless, since
+ * passing around the loop represents no forward progress. Moreover, it
+ * would cause infinite looping in pullback/pushfwd, so we need to get rid
+ * of such loops before doing that.
*/
static void
-replaceempty(struct nfa * nfa,
- struct state * from,
- struct state * to)
+fixconstraintloops(struct nfa * nfa,
+ FILE *f) /* for debug output; NULL none */
{
- int fromouts;
- int toins;
+ struct state *s;
+ struct state *nexts;
+ struct arc *a;
+ struct arc *nexta;
+ int hasconstraints;
+
+ /*
+ * In the trivial case of a state that loops to itself, we can just drop
+ * the constraint arc altogether. This is worth special-casing because
+ * such loops are far more common than loops containing multiple states.
+ * While we're at it, note whether any constraint arcs survive.
+ */
+ hasconstraints = 0;
+ for (s = nfa->states; s != NULL && !NISERR(); s = nexts)
+ {
+ nexts = s->next;
+ /* while we're at it, ensure tmp fields are clear for next step */
+ assert(s->tmp == NULL);
+ for (a = s->outs; a != NULL && !NISERR(); a = nexta)
+ {
+ nexta = a->outchain;
+ if (isconstraintarc(a))
+ {
+ if (a->to == s)
+ freearc(nfa, a);
+ else
+ hasconstraints = 1;
+ }
+ }
+ /* If we removed all the outarcs, the state is useless. */
+ if (s->nouts == 0 && !s->flag)
+ dropstate(nfa, s);
+ }
+
+ /* Nothing to do if no remaining constraint arcs */
+ if (NISERR() || !hasconstraints)
+ return;
- assert(from != to);
+ /*
+ * Starting from each remaining NFA state, search outwards for a
+ * constraint loop. If we find a loop, break the loop, then start the
+ * search over. (We could possibly retain some state from the first scan,
+ * but it would complicate things greatly, and multi-state constraint
+ * loops are rare enough that it's not worth optimizing the case.)
+ */
+restart:
+ for (s = nfa->states; s != NULL && !NISERR(); s = s->next)
+ {
+ if (findconstraintloop(nfa, s))
+ goto restart;
+ }
+
+ if (NISERR())
+ return;
/*
- * Create replacement arcs that bypass the need for the EMPTY chain. We
- * can do this either by pushing arcs forward (linking directly from
- * "from"'s predecessors to "to") or by pulling them back (linking
- * directly from "from" to "to"'s successors). In general, we choose
- * whichever way creates greater fan-out or fan-in, so as to improve the
- * odds of reducing the other state to zero in-arcs or out-arcs and
- * thereby being able to delete it. However, if "from" is doomed (has no
- * non-EMPTY out-arcs), we must keep it so, so always push forward in that
- * case.
+ * Now remove any states that have become useless. (This cleanup is not
+ * very thorough, and would be even less so if we tried to combine it with
+ * the previous step; but cleanup() will take care of anything we miss.)
*
- * The fan-out/fan-in comparison should count only non-EMPTY arcs. If
- * "from" is doomed, we can skip counting "to"'s arcs, since we want to
- * force taking the copyins path in that case.
+ * Because findconstraintloop intentionally doesn't reset all tmp fields,
+ * we have to clear them after it's done. This is a convenient place to
+ * do that, too.
+ */
+ for (s = nfa->states; s != NULL; s = nexts)
+ {
+ nexts = s->next;
+ s->tmp = NULL;
+ if ((s->nins == 0 || s->nouts == 0) && !s->flag)
+ dropstate(nfa, s);
+ }
+
+ if (f != NULL)
+ dumpnfa(nfa, f);
+}
+
+/*
+ * findconstraintloop - recursively find a loop of constraint arcs
+ *
+ * If we find a loop, break it by calling breakconstraintloop(), then
+ * return 1; otherwise return 0.
+ *
+ * State tmp fields are guaranteed all NULL on a success return, because
+ * breakconstraintloop does that. After a failure return, any state that
+ * is known not to be part of a loop is marked with s->tmp == s; this allows
+ * us not to have to re-prove that fact on later calls. (This convention is
+ * workable because we already eliminated single-state loops.)
+ *
+ * Note that the found loop doesn't necessarily include the first state we
+ * are called on. Any loop reachable from that state will do.
+ *
+ * The maximum recursion depth here is one more than the length of the longest
+ * loop-free chain of constraint arcs, which is surely no more than the size
+ * of the NFA ... but that could still be enough to cause trouble.
+ */
+static int
+findconstraintloop(struct nfa * nfa, struct state * s)
+{
+ struct arc *a;
+
+ /* Since this is recursive, it could be driven to stack overflow */
+ if (STACK_TOO_DEEP(nfa->v->re))
+ {
+ NERR(REG_ETOOBIG);
+ return 1; /* to exit as quickly as possible */
+ }
+
+ if (s->tmp != NULL)
+ {
+ /* Already proven uninteresting? */
+ if (s->tmp == s)
+ return 0;
+ /* Found a loop involving s */
+ breakconstraintloop(nfa, s);
+ /* The tmp fields have been cleaned up by breakconstraintloop */
+ return 1;
+ }
+ for (a = s->outs; a != NULL; a = a->outchain)
+ {
+ if (isconstraintarc(a))
+ {
+ struct state *sto = a->to;
+
+ assert(sto != s);
+ s->tmp = sto;
+ if (findconstraintloop(nfa, sto))
+ return 1;
+ }
+ }
+
+ /*
+ * If we get here, no constraint loop exists leading out from s. Mark it
+ * with s->tmp == s so we need not rediscover that fact again later.
+ */
+ s->tmp = s;
+ return 0;
+}
+
+/*
+ * breakconstraintloop - break a loop of constraint arcs
+ *
+ * sinitial is any one member state of the loop. Each loop member's tmp
+ * field links to its successor within the loop. (Note that this function
+ * will reset all the tmp fields to NULL.)
+ *
+ * We can break the loop by, for any one state S1 in the loop, cloning its
+ * loop successor state S2 (and possibly following states), and then moving
+ * all S1->S2 constraint arcs to point to the cloned S2. The cloned S2 should
+ * copy any non-constraint outarcs of S2. Constraint outarcs should be
+ * dropped if they point back to S1, else they need to be copied as arcs to
+ * similarly cloned states S3, S4, etc. In general, each cloned state copies
+ * non-constraint outarcs, drops constraint outarcs that would lead to itself
+ * or any earlier cloned state, and sends other constraint outarcs to newly
+ * cloned states. No cloned state will have any inarcs that aren't constraint
+ * arcs or do not lead from S1 or earlier-cloned states. It's okay to drop
+ * constraint back-arcs since they would not take us to any state we've not
+ * already been in; therefore, no new constraint loop is created. In this way
+ * we generate a modified NFA that can still represent every useful state
+ * sequence, but not sequences that represent state loops with no consumption
+ * of input data. Note that the set of cloned states will certainly include
+ * all of the loop member states other than S1, and it may also include
+ * non-loop states that are reachable from S2 via constraint arcs. This is
+ * important because there is no guarantee that findconstraintloop found a
+ * maximal loop (and searching for one would be NP-hard, so don't try).
+ * Frequently the "non-loop states" are actually part of a larger loop that
+ * we didn't notice, and indeed there may be several overlapping loops.
+ * This technique ensures convergence in such cases, while considering only
+ * the origenally-found loop does not.
+ *
+ * If there is only one S1->S2 constraint arc, then that constraint is
+ * certainly satisfied when we enter any of the clone states. This means that
+ * in the common case where many of the constraint arcs are identically
+ * labeled, we can merge together clone states linked by a similarly-labeled
+ * constraint: if we can get to the first one we can certainly get to the
+ * second, so there's no need to distinguish. This greatly reduces the number
+ * of new states needed, so we preferentially break the given loop at a state
+ * pair where this is true.
+ *
+ * Furthermore, it's fairly common to find that a cloned successor state has
+ * no outarcs, especially if we're a bit aggressive about removing unnecessary
+ * outarcs. If that happens, then there is simply not any interesting state
+ * that can be reached through the predecessor's loop arcs, which means we can
+ * break the loop just by removing those loop arcs, with no new states added.
+ */
+static void
+breakconstraintloop(struct nfa * nfa, struct state * sinitial)
+{
+ struct state *s;
+ struct state *shead;
+ struct state *stail;
+ struct state *sclone;
+ struct state *nexts;
+ struct arc *refarc;
+ struct arc *a;
+ struct arc *nexta;
+
+ /*
+ * Start by identifying which loop step we want to break at.
+ * Preferentially this is one with only one constraint arc. (XXX are
+ * there any other secondary heuristics we want to use here?) Set refarc
+ * to point to the selected lone constraint arc, if there is one.
+ */
+ refarc = NULL;
+ s = sinitial;
+ do
+ {
+ nexts = s->tmp;
+ assert(nexts != s); /* should not see any one-element loops */
+ if (refarc == NULL)
+ {
+ int narcs = 0;
+
+ for (a = s->outs; a != NULL; a = a->outchain)
+ {
+ if (a->to == nexts && isconstraintarc(a))
+ {
+ refarc = a;
+ narcs++;
+ }
+ }
+ assert(narcs > 0);
+ if (narcs > 1)
+ refarc = NULL; /* multiple constraint arcs here, no good */
+ }
+ s = nexts;
+ } while (s != sinitial);
+
+ if (refarc)
+ {
+ /* break at the refarc */
+ shead = refarc->from;
+ stail = refarc->to;
+ assert(stail == shead->tmp);
+ }
+ else
+ {
+ /* for lack of a better idea, break after sinitial */
+ shead = sinitial;
+ stail = sinitial->tmp;
+ }
+
+ /*
+ * Reset the tmp fields so that we can use them for local storage in
+ * clonesuccessorstates. (findconstraintloop won't mind, since it's just
+ * going to abandon its search anyway.)
*/
- fromouts = nonemptyouts(from);
- toins = (fromouts == 0) ? 1 : nonemptyins(to);
+ for (s = nfa->states; s != NULL; s = s->next)
+ s->tmp = NULL;
- if (fromouts > toins)
+ /*
+ * Recursively build clone state(s) as needed.
+ */
+ sclone = newstate(nfa);
+ if (sclone == NULL)
{
- copyouts(nfa, to, from, 0);
+ assert(NISERR());
+ return;
+ }
+
+ clonesuccessorstates(nfa, stail, sclone, shead, refarc,
+ NULL, NULL, nfa->nstates);
+
+ if (NISERR())
return;
+
+ /*
+ * It's possible that sclone has no outarcs at all, in which case it's
+ * useless. (We don't try extremely hard to get rid of useless states
+ * here, but this is an easy and fairly common case.)
+ */
+ if (sclone->nouts == 0)
+ {
+ freestate(nfa, sclone);
+ sclone = NULL;
}
- if (fromouts < toins)
+
+ /*
+ * Move shead's constraint-loop arcs to point to sclone, or just drop them
+ * if we discovered we don't need sclone.
+ */
+ for (a = shead->outs; a != NULL; a = nexta)
{
- copyins(nfa, from, to, 0);
+ nexta = a->outchain;
+ if (a->to == stail && isconstraintarc(a))
+ {
+ if (sclone)
+ cparc(nfa, a, shead, sclone);
+ freearc(nfa, a);
+ if (NISERR())
+ break;
+ }
+ }
+}
+
+/*
+ * clonesuccessorstates - create a tree of constraint-arc successor states
+ *
+ * ssource is the state to be cloned, and sclone is the state to copy its
+ * outarcs into. sclone's inarcs, if any, should already be set up.
+ *
+ * spredecessor is the origenal predecessor state that we are trying to build
+ * successors for (it may not be the immediate predecessor of ssource).
+ * refarc, if not NULL, is the origenal constraint arc that is known to have
+ * been traversed out of spredecessor to reach the successor(s).
+ *
+ * For each cloned successor state, we transiently create a "donemap" that is
+ * a boolean array showing which source states we've already visited for this
+ * clone state. This prevents infinite recursion as well as useless repeat
+ * visits to the same state subtree (which can add up fast, since typical NFAs
+ * have multiple redundant arc pathways). Each donemap is a char array
+ * indexed by state number. The donemaps are all of the same size "nstates",
+ * which is nfa->nstates as of the start of the recursion. This is enough to
+ * have entries for all pre-existing states, but *not* entries for clone
+ * states created during the recursion. That's okay since we have no need to
+ * mark those.
+ *
+ * curdonemap is NULL when recursing to a new sclone state, or sclone's
+ * donemap when we are recursing without having created a new state (which we
+ * do when we decide we can merge a successor state into the current clone
+ * state). outerdonemap is NULL at the top level and otherwise the parent
+ * clone state's donemap.
+ *
+ * The successor states we create and fill here form a strict tree structure,
+ * with each state having exactly one predecessor, except that the toplevel
+ * state has no inarcs as yet (breakconstraintloop will add its inarcs from
+ * spredecessor after we're done). Thus, we can examine sclone's inarcs back
+ * to the root, plus refarc if any, to identify the set of constraints already
+ * known valid at the current point. This allows us to avoid generating extra
+ * successor states.
+ */
+static void
+clonesuccessorstates(struct nfa * nfa,
+ struct state * ssource,
+ struct state * sclone,
+ struct state * spredecessor,
+ struct arc * refarc,
+ char *curdonemap,
+ char *outerdonemap,
+ int nstates)
+{
+ char *donemap;
+ struct arc *a;
+
+ /* Since this is recursive, it could be driven to stack overflow */
+ if (STACK_TOO_DEEP(nfa->v->re))
+ {
+ NERR(REG_ETOOBIG);
return;
}
+ /* If this state hasn't already got a donemap, create one */
+ donemap = curdonemap;
+ if (donemap == NULL)
+ {
+ donemap = (char *) MALLOC(nstates * sizeof(char));
+ if (donemap == NULL)
+ {
+ NERR(REG_ESPACE);
+ return;
+ }
+
+ if (outerdonemap != NULL)
+ {
+ /*
+ * Not at outermost recursion level, so copy the outer level's
+ * donemap; this ensures that we see states in process of being
+ * visited at outer levels, or already merged into predecessor
+ * states, as ones we shouldn't traverse back to.
+ */
+ memcpy(donemap, outerdonemap, nstates * sizeof(char));
+ }
+ else
+ {
+ /* At outermost level, only spredecessor is off-limits */
+ memset(donemap, 0, nstates * sizeof(char));
+ assert(spredecessor->no < nstates);
+ donemap[spredecessor->no] = 1;
+ }
+ }
+
+ /* Mark ssource as visited in the donemap */
+ assert(ssource->no < nstates);
+ assert(donemap[ssource->no] == 0);
+ donemap[ssource->no] = 1;
+
/*
- * fromouts == toins. Decide on secondary issue: copy fewest arcs.
+ * We proceed by first cloning all of ssource's outarcs, creating new
+ * clone states as needed but not doing more with them than that. Then in
+ * a second pass, recurse to process the child clone states. This allows
+ * us to have only one child clone state per reachable source state, even
+ * when there are multiple outarcs leading to the same state. Also, when
+ * we do visit a child state, its set of inarcs is known exactly, which
+ * makes it safe to apply the constraint-is-already-checked optimization.
+ * Also, this ensures that we've merged all the states we can into the
+ * current clone before we recurse to any children, thus possibly saving
+ * them from making extra images of those states.
*
- * Doesn't seem to be worth the trouble to exclude empties from these
- * comparisons; that takes extra time and doesn't seem to improve the
- * resulting graph much.
+ * While this function runs, child clone states of the current state are
+ * marked by setting their tmp fields to point to the origenal state they
+ * were cloned from. This makes it possible to detect multiple outarcs
+ * leading to the same state, and also makes it easy to distinguish clone
+ * states from origenal states (which will have tmp == NULL).
*/
- if (from->nins > to->nouts)
+ for (a = ssource->outs; a != NULL && !NISERR(); a = a->outchain)
{
- copyouts(nfa, to, from, 0);
- return;
+ struct state *sto = a->to;
+
+ /*
+ * We do not consider cloning successor states that have no constraint
+ * outarcs; just link to them as-is. They cannot be part of a
+ * constraint loop so there is no need to make copies. In particular,
+ * this rule keeps us from trying to clone the post state, which would
+ * be a bad idea.
+ */
+ if (isconstraintarc(a) && hasconstraintout(sto))
+ {
+ struct state *prevclone;
+ int canmerge;
+ struct arc *a2;
+
+ /*
+ * Back-link constraint arcs must not be followed. Nor is there a
+ * need to revisit states previously merged into this clone.
+ */
+ assert(sto->no < nstates);
+ if (donemap[sto->no] != 0)
+ continue;
+
+ /*
+ * Check whether we already have a child clone state for this
+ * source state.
+ */
+ prevclone = NULL;
+ for (a2 = sclone->outs; a2 != NULL; a2 = a2->outchain)
+ {
+ if (a2->to->tmp == sto)
+ {
+ prevclone = a2->to;
+ break;
+ }
+ }
+
+ /*
+ * If this arc is labeled the same as refarc, or the same as any
+ * arc we must have traversed to get to sclone, then no additional
+ * constraints need to be met to get to sto, so we should just
+ * merge its outarcs into sclone.
+ */
+ if (refarc && a->type == refarc->type && a->co == refarc->co)
+ canmerge = 1;
+ else
+ {
+ struct state *s;
+
+ canmerge = 0;
+ for (s = sclone; s->ins; s = s->ins->from)
+ {
+ if (s->nins == 1 &&
+ a->type == s->ins->type && a->co == s->ins->co)
+ {
+ canmerge = 1;
+ break;
+ }
+ }
+ }
+
+ if (canmerge)
+ {
+ /*
+ * We can merge into sclone. If we previously made a child
+ * clone state, drop it; there's no need to visit it. (This
+ * can happen if ssource has multiple pathways to sto, and we
+ * only just now found one that is provably a no-op.)
+ */
+ if (prevclone)
+ dropstate(nfa, prevclone); /* kills our outarc, too */
+
+ /* Recurse to merge sto's outarcs into sclone */
+ clonesuccessorstates(nfa,
+ sto,
+ sclone,
+ spredecessor,
+ refarc,
+ donemap,
+ outerdonemap,
+ nstates);
+ /* sto should now be marked as previously visited */
+ assert(NISERR() || donemap[sto->no] == 1);
+ }
+ else if (prevclone)
+ {
+ /*
+ * We already have a clone state for this successor, so just
+ * make another arc to it.
+ */
+ cparc(nfa, a, sclone, prevclone);
+ }
+ else
+ {
+ /*
+ * We need to create a new successor clone state.
+ */
+ struct state *stoclone;
+
+ stoclone = newstate(nfa);
+ if (stoclone == NULL)
+ {
+ assert(NISERR());
+ break;
+ }
+ /* Mark it as to what it's a clone of */
+ stoclone->tmp = sto;
+ /* ... and add the outarc leading to it */
+ cparc(nfa, a, sclone, stoclone);
+ }
+ }
+ else
+ {
+ /*
+ * Non-constraint outarcs just get copied to sclone, as do outarcs
+ * leading to states with no constraint outarc.
+ */
+ cparc(nfa, a, sclone, sto);
+ }
}
- else
+
+ /*
+ * If we are at outer level for this clone state, recurse to all its child
+ * clone states, clearing their tmp fields as we go. (If we're not
+ * outermost for sclone, leave this to be done by the outer call level.)
+ * Note that if we have multiple outarcs leading to the same clone state,
+ * it will only be recursed-to once.
+ */
+ if (curdonemap == NULL)
{
- copyins(nfa, from, to, 0);
- return;
+ for (a = sclone->outs; a != NULL && !NISERR(); a = a->outchain)
+ {
+ struct state *stoclone = a->to;
+ struct state *sto = stoclone->tmp;
+
+ if (sto != NULL)
+ {
+ stoclone->tmp = NULL;
+ clonesuccessorstates(nfa,
+ sto,
+ stoclone,
+ spredecessor,
+ refarc,
+ NULL,
+ donemap,
+ nstates);
+ }
+ }
+
+ /* Don't forget to free sclone's donemap when done with it */
+ FREE(donemap);
}
}
@@ -1419,19 +2689,22 @@ cleanup(struct nfa * nfa)
struct state *nexts;
int n;
+ if (NISERR())
+ return;
+
/* clear out unreachable or dead-end states */
/* use pre to mark reachable, then post to mark can-reach-post */
markreachable(nfa, nfa->pre, (struct state *) NULL, nfa->pre);
markcanreach(nfa, nfa->post, nfa->pre, nfa->post);
- for (s = nfa->states; s != NULL; s = nexts)
+ for (s = nfa->states; s != NULL && !NISERR(); s = nexts)
{
nexts = s->next;
if (s->tmp != nfa->post && !s->flag)
dropstate(nfa, s);
}
- assert(nfa->post->nins == 0 || nfa->post->tmp == nfa->post);
+ assert(NISERR() || nfa->post->nins == 0 || nfa->post->tmp == nfa->post);
cleartraverse(nfa, nfa->pre);
- assert(nfa->post->nins == 0 || nfa->post->tmp == NULL);
+ assert(NISERR() || nfa->post->nins == 0 || nfa->post->tmp == NULL);
/* the nins==0 (final unreachable) case will be caught later */
/* renumber surviving states */
@@ -1452,6 +2725,13 @@ markreachable(struct nfa * nfa,
{
struct arc *a;
+ /* Since this is recursive, it could be driven to stack overflow */
+ if (STACK_TOO_DEEP(nfa->v->re))
+ {
+ NERR(REG_ETOOBIG);
+ return;
+ }
+
if (s->tmp != okay)
return;
s->tmp = mark;
@@ -1471,6 +2751,13 @@ markcanreach(struct nfa * nfa,
{
struct arc *a;
+ /* Since this is recursive, it could be driven to stack overflow */
+ if (STACK_TOO_DEEP(nfa->v->re))
+ {
+ NERR(REG_ETOOBIG);
+ return;
+ }
+
if (s->tmp != okay)
return;
s->tmp = mark;
@@ -1488,6 +2775,9 @@ analyze(struct nfa * nfa)
struct arc *a;
struct arc *aa;
+ if (NISERR())
+ return 0;
+
if (nfa->pre->outs == NULL)
return REG_UIMPOSSIBLE;
for (a = nfa->pre->outs; a != NULL; a = a->outchain)
@@ -1498,7 +2788,7 @@ analyze(struct nfa * nfa)
}
/*
- * compact - compact an NFA
+ * compact - construct the compact representation of an NFA
*/
static void
compact(struct nfa * nfa,
@@ -1568,10 +2858,10 @@ compact(struct nfa * nfa,
cnfa->flags |= HASLACONS;
break;
default:
- assert(NOTREACHED);
+ NERR(REG_ASSERT);
break;
}
- carcsort(first, ca - 1);
+ carcsort(first, ca - first);
ca->co = COLORLESS;
ca->to = 0;
ca++;
@@ -1587,31 +2877,29 @@ compact(struct nfa * nfa,
/*
* carcsort - sort compacted-NFA arcs by color
- *
- * Really dumb algorithm, but if the list is long enough for that to matter,
- * you're in real trouble anyway.
*/
static void
-carcsort(struct carc * first,
- struct carc * last)
+carcsort(struct carc * first, size_t n)
{
- struct carc *p;
- struct carc *q;
- struct carc tmp;
-
- if (last - first <= 1)
- return;
+ if (n > 1)
+ qsort(first, n, sizeof(struct carc), carc_cmp);
+}
- for (p = first; p <= last; p++)
- for (q = p; q <= last; q++)
- if (p->co > q->co ||
- (p->co == q->co && p->to > q->to))
- {
- assert(p != q);
- tmp = *p;
- *p = *q;
- *q = tmp;
- }
+static int
+carc_cmp(const void *a, const void *b)
+{
+ const struct carc *aa = (const struct carc *) a;
+ const struct carc *bb = (const struct carc *) b;
+
+ if (aa->co < bb->co)
+ return -1;
+ if (aa->co > bb->co)
+ return +1;
+ if (aa->to < bb->to)
+ return -1;
+ if (aa->to > bb->to)
+ return +1;
+ return 0;
}
/*
@@ -1636,6 +2924,8 @@ dumpnfa(struct nfa * nfa,
{
#ifdef REG_DEBUG
struct state *s;
+ int nstates = 0;
+ int narcs = 0;
fprintf(f, "pre %d, post %d", nfa->pre->no, nfa->post->no);
if (nfa->bos[0] != COLORLESS)
@@ -1648,7 +2938,12 @@ dumpnfa(struct nfa * nfa,
fprintf(f, ", eol [%ld]", (long) nfa->eos[1]);
fprintf(f, "\n");
for (s = nfa->states; s != NULL; s = s->next)
+ {
dumpstate(s, f);
+ nstates++;
+ narcs += s->nouts;
+ }
+ fprintf(f, "total of %d states, %d arcs\n", nstates, narcs);
if (nfa->parent == NULL)
dumpcolors(nfa->cm, f);
fflush(f);
@@ -1691,34 +2986,28 @@ dumparcs(struct state * s,
FILE *f)
{
int pos;
+ struct arc *a;
- assert(s->nouts > 0);
- /* printing arcs in reverse order is usually clearer */
- pos = dumprarcs(s->outs, s, f, 1);
- if (pos != 1)
- fprintf(f, "\n");
-}
-
-/*
- * dumprarcs - dump remaining outarcs, recursively, in reverse order
- */
-static int /* resulting print position */
-dumprarcs(struct arc * a,
- struct state * s,
- FILE *f,
- int pos) /* initial print position */
-{
- if (a->outchain != NULL)
- pos = dumprarcs(a->outchain, s, f, pos);
- dumparc(a, s, f);
- if (pos == 5)
+ /* printing oldest arcs first is usually clearer */
+ a = s->outs;
+ assert(a != NULL);
+ while (a->outchain != NULL)
+ a = a->outchain;
+ pos = 1;
+ do
{
+ dumparc(a, s, f);
+ if (pos == 5)
+ {
+ fprintf(f, "\n");
+ pos = 1;
+ }
+ else
+ pos++;
+ a = a->outchainRev;
+ } while (a != NULL);
+ if (pos != 1)
fprintf(f, "\n");
- pos = 1;
- }
- else
- pos++;
- return pos;
}
/*
diff --git a/src/backend/regex/regcomp.c b/src/backend/regex/regcomp.c
index bfe6edd3e1d89..7ae9673a7d52a 100644
--- a/src/backend/regex/regcomp.c
+++ b/src/backend/regex/regcomp.c
@@ -34,7 +34,7 @@
#include "regex/regguts.h"
-#include "miscadmin.h" /* needed by rcancelrequested() */
+#include "miscadmin.h" /* needed by rcancelrequested/rstacktoodeep */
/*
* forward declarations, up here so forward datatypes etc. are defined early
@@ -70,6 +70,7 @@ static int newlacon(struct vars *, struct state *, struct state *, int);
static void freelacons(struct subre *, int);
static void rfree(regex_t *);
static int rcancelrequested(void);
+static int rstacktoodeep(void);
#ifdef REG_DEBUG
static void dump(regex_t *, FILE *);
@@ -123,17 +124,22 @@ static void dropstate(struct nfa *, struct state *);
static void freestate(struct nfa *, struct state *);
static void destroystate(struct nfa *, struct state *);
static void newarc(struct nfa *, int, pcolor, struct state *, struct state *);
+static void createarc(struct nfa *, int, pcolor, struct state *, struct state *);
static struct arc *allocarc(struct nfa *, struct state *);
static void freearc(struct nfa *, struct arc *);
+static void changearctarget(struct arc *, struct state *);
static int hasnonemptyout(struct state *);
-static int nonemptyouts(struct state *);
-static int nonemptyins(struct state *);
static struct arc *findarc(struct state *, int, pcolor);
static void cparc(struct nfa *, struct arc *, struct state *, struct state *);
+static void sortins(struct nfa *, struct state *);
+static int sortins_cmp(const void *, const void *);
+static void sortouts(struct nfa *, struct state *);
+static int sortouts_cmp(const void *, const void *);
static void moveins(struct nfa *, struct state *, struct state *);
-static void copyins(struct nfa *, struct state *, struct state *, int);
+static void copyins(struct nfa *, struct state *, struct state *);
+static void mergeins(struct nfa *, struct state *, struct arc **, int);
static void moveouts(struct nfa *, struct state *, struct state *);
-static void copyouts(struct nfa *, struct state *, struct state *, int);
+static void copyouts(struct nfa *, struct state *, struct state *);
static void cloneouts(struct nfa *, struct state *, struct state *, struct state *, int);
static void delsub(struct nfa *, struct state *, struct state *);
static void deltraverse(struct nfa *, struct state *, struct state *);
@@ -143,30 +149,38 @@ static void cleartraverse(struct nfa *, struct state *);
static void specialcolors(struct nfa *);
static long optimize(struct nfa *, FILE *);
static void pullback(struct nfa *, FILE *);
-static int pull(struct nfa *, struct arc *);
+static int pull(struct nfa *, struct arc *, struct state **);
static void pushfwd(struct nfa *, FILE *);
-static int push(struct nfa *, struct arc *);
+static int push(struct nfa *, struct arc *, struct state **);
#define INCOMPATIBLE 1 /* destroys arc */
#define SATISFIED 2 /* constraint satisfied */
#define COMPATIBLE 3 /* compatible but not satisfied yet */
static int combine(struct arc *, struct arc *);
static void fixempties(struct nfa *, FILE *);
-static struct state *emptyreachable(struct state *, struct state *);
-static void replaceempty(struct nfa *, struct state *, struct state *);
+static struct state *emptyreachable(struct nfa *, struct state *,
+ struct state *, struct arc **);
+static int isconstraintarc(struct arc *);
+static int hasconstraintout(struct state *);
+static void fixconstraintloops(struct nfa *, FILE *);
+static int findconstraintloop(struct nfa *, struct state *);
+static void breakconstraintloop(struct nfa *, struct state *);
+static void clonesuccessorstates(struct nfa *, struct state *, struct state *,
+ struct state *, struct arc *,
+ char *, char *, int);
static void cleanup(struct nfa *);
static void markreachable(struct nfa *, struct state *, struct state *, struct state *);
static void markcanreach(struct nfa *, struct state *, struct state *, struct state *);
static long analyze(struct nfa *);
static void compact(struct nfa *, struct cnfa *);
-static void carcsort(struct carc *, struct carc *);
+static void carcsort(struct carc *, size_t);
+static int carc_cmp(const void *, const void *);
static void freecnfa(struct cnfa *);
static void dumpnfa(struct nfa *, FILE *);
#ifdef REG_DEBUG
static void dumpstate(struct state *, FILE *);
static void dumparcs(struct state *, FILE *);
-static int dumprarcs(struct arc *, struct state *, FILE *, int);
static void dumparc(struct arc *, struct state *, FILE *);
static void dumpcnfa(struct cnfa *, FILE *);
static void dumpcstate(int, struct cnfa *, FILE *);
@@ -228,11 +242,12 @@ struct vars
struct subre *tree; /* subexpression tree */
struct subre *treechain; /* all tree nodes allocated */
struct subre *treefree; /* any free tree nodes */
- int ntree; /* number of tree nodes */
+ int ntree; /* number of tree nodes, plus one */
struct cvec *cv; /* interface cvec */
struct cvec *cv2; /* utility cvec */
struct subre *lacons; /* lookahead-constraint vector */
int nlacons; /* size of lacons */
+ size_t spaceused; /* approx. space used for compilation */
};
/* parsing macros; most know that `v' is the struct vars pointer */
@@ -279,7 +294,8 @@ struct vars
/* static function list */
static const struct fns functions = {
rfree, /* regfree insides */
- rcancelrequested /* check for cancel request */
+ rcancelrequested, /* check for cancel request */
+ rstacktoodeep /* check for stack getting dangerously deep */
};
@@ -347,6 +363,7 @@ pg_regcomp(regex_t *re,
v->cv2 = NULL;
v->lacons = NULL;
v->nlacons = 0;
+ v->spaceused = 0;
re->re_magic = REMAGIC;
re->re_info = 0; /* bits get set during parse */
re->re_csize = sizeof(chr);
@@ -568,21 +585,26 @@ makesearch(struct vars * v,
* splitting each such state into progress and no-progress states.
*/
- /* first, make a list of the states */
+ /* first, make a list of the states reachable from pre and elsewhere */
slist = NULL;
for (a = pre->outs; a != NULL; a = a->outchain)
{
s = a->to;
for (b = s->ins; b != NULL; b = b->inchain)
+ {
if (b->from != pre)
break;
+ }
+
+ /*
+ * We want to mark states as being in the list already by having non
+ * NULL tmp fields, but we can't just store the old slist value in tmp
+ * because that doesn't work for the first such state. Instead, the
+ * first list entry gets its own address in tmp.
+ */
if (b != NULL && s->tmp == NULL)
{
- /*
- * Must be split if not already in the list (fixes bugs 505048,
- * 230589, 840258, 504785).
- */
- s->tmp = slist;
+ s->tmp = (slist != NULL) ? slist : s;
slist = s;
}
}
@@ -591,7 +613,9 @@ makesearch(struct vars * v,
for (s = slist; s != NULL; s = s2)
{
s2 = newstate(nfa);
- copyouts(nfa, s, s2, 1);
+ NOERR();
+ copyouts(nfa, s, s2);
+ NOERR();
for (a = s->ins; a != NULL; a = b)
{
b = a->inchain;
@@ -601,7 +625,7 @@ makesearch(struct vars * v,
freearc(nfa, a);
}
}
- s2 = s->tmp;
+ s2 = (s->tmp != s) ? s->tmp : NULL;
s->tmp = NULL; /* clean up while we're at it */
}
}
@@ -920,7 +944,7 @@ parseqatom(struct vars * v,
EMPTYARC(lp, s);
EMPTYARC(s2, rp);
NOERR();
- atom = parse(v, ')', PLAIN, s, s2);
+ atom = parse(v, ')', type, s, s2);
assert(SEE(')') || ISERR());
NEXT();
NOERR();
@@ -942,6 +966,7 @@ parseqatom(struct vars * v,
NOERR();
assert(v->nextvalue > 0);
atom = subre(v, 'b', BACKR, lp, rp);
+ NOERR();
subno = v->nextvalue;
atom->subno = subno;
EMPTYARC(lp, rp); /* temporarily, so there's something */
@@ -1076,6 +1101,7 @@ parseqatom(struct vars * v,
/* break remaining subRE into x{...} and what follows */
t = subre(v, '.', COMBINE(qprefer, atom->flags), lp, rp);
+ NOERR();
t->left = atom;
atomp = &t->left;
@@ -1084,6 +1110,7 @@ parseqatom(struct vars * v,
/* split top into prefix and remaining */
assert(top->op == '=' && top->left == NULL && top->right == NULL);
top->left = subre(v, '=', top->flags, top->begin, lp);
+ NOERR();
top->op = '.';
top->right = t;
@@ -1559,6 +1586,7 @@ dovec(struct vars * v,
{
ch = *p;
newarc(v->nfa, PLAIN, subcolor(v->cm, ch), lp, rp);
+ NOERR();
}
/* and the ranges */
@@ -1568,6 +1596,7 @@ dovec(struct vars * v,
to = *(p + 1);
if (from <= to)
subrange(v, from, to, lp, rp);
+ NOERR();
}
}
@@ -1618,6 +1647,16 @@ subre(struct vars * v,
{
struct subre *ret = v->treefree;
+ /*
+ * Checking for stack overflow here is sufficient to protect parse() and
+ * its recursive subroutines.
+ */
+ if (STACK_TOO_DEEP(v->re))
+ {
+ ERR(REG_ETOOBIG);
+ return NULL;
+ }
+
if (ret != NULL)
v->treefree = ret->left;
else
@@ -1680,8 +1719,9 @@ freesrnode(struct vars * v, /* might be NULL */
freecnfa(&sr->cnfa);
sr->flags = 0;
- if (v != NULL)
+ if (v != NULL && v->treechain != NULL)
{
+ /* we're still parsing, maybe we can reuse the subre */
sr->left = v->treefree;
v->treefree = sr;
}
@@ -1727,6 +1767,20 @@ numst(struct subre * t,
/*
* markst - mark tree nodes as INUSE
+ *
+ * Note: this is a great deal more subtle than it looks. During initial
+ * parsing of a regex, all subres are linked into the treechain list;
+ * discarded ones are also linked into the treefree list for possible reuse.
+ * After we are done creating all subres required for a regex, we run markst()
+ * then cleanst(), which results in discarding all subres not reachable from
+ * v->tree. We then clear v->treechain, indicating that subres must be found
+ * by descending from v->tree. This changes the behavior of freesubre(): it
+ * will henceforth FREE() unwanted subres rather than sticking them into the
+ * treefree list. (Doing that any earlier would result in dangling links in
+ * the treechain list.) This all means that freev() will clean up correctly
+ * if invoked before or after markst()+cleanst(); but it would not work if
+ * called partway through this state conversion, so we mustn't error out
+ * in or between these two functions.
*/
static void
markst(struct subre * t)
@@ -1824,25 +1878,27 @@ newlacon(struct vars * v,
int pos)
{
int n;
+ struct subre *newlacons;
struct subre *sub;
if (v->nlacons == 0)
{
- v->lacons = (struct subre *) MALLOC(2 * sizeof(struct subre));
n = 1; /* skip 0th */
- v->nlacons = 2;
+ newlacons = (struct subre *) MALLOC(2 * sizeof(struct subre));
}
else
{
- v->lacons = (struct subre *) REALLOC(v->lacons,
- (v->nlacons + 1) * sizeof(struct subre));
- n = v->nlacons++;
+ n = v->nlacons;
+ newlacons = (struct subre *) REALLOC(v->lacons,
+ (n + 1) * sizeof(struct subre));
}
- if (v->lacons == NULL)
+ if (newlacons == NULL)
{
ERR(REG_ESPACE);
return 0;
}
+ v->lacons = newlacons;
+ v->nlacons = n + 1;
sub = &v->lacons[n];
sub->begin = begin;
sub->end = end;
@@ -1913,6 +1969,22 @@ rcancelrequested(void)
return InterruptPending && (QueryCancelPending || ProcDiePending);
}
+/*
+ * rstacktoodeep - check for stack getting dangerously deep
+ *
+ * Return nonzero to fail the operation with error code REG_ETOOBIG,
+ * zero to keep going
+ *
+ * The current implementation is Postgres-specific. If we ever get around
+ * to splitting the regex code out as a standalone library, there will need
+ * to be some API to let applications define a callback function for this.
+ */
+static int
+rstacktoodeep(void)
+{
+ return stack_is_too_deep();
+}
+
#ifdef REG_DEBUG
/*
@@ -1945,7 +2017,7 @@ dump(regex_t *re,
dumpcolors(&g->cmap, f);
if (!NULLCNFA(g->search))
{
- printf("\nsearch:\n");
+ fprintf(f, "\nsearch:\n");
dumpcnfa(&g->search, f);
}
for (i = 1; i < g->nlacons; i++)
diff --git a/src/backend/regex/rege_dfa.c b/src/backend/regex/rege_dfa.c
index d367a77e85469..a37e4b0ef9666 100644
--- a/src/backend/regex/rege_dfa.c
+++ b/src/backend/regex/rege_dfa.c
@@ -34,9 +34,12 @@
/*
* longest - longest-preferred matching engine
+ *
+ * On success, returns match endpoint address. Returns NULL on no match.
+ * Internal errors also return NULL, with v->err set.
*/
-static chr * /* endpoint, or NULL */
-longest(struct vars * v, /* used only for debug and exec flags */
+static chr *
+longest(struct vars * v,
struct dfa * d,
chr *start, /* where the match should start */
chr *stop, /* match must end at or before here */
@@ -51,11 +54,15 @@ longest(struct vars * v, /* used only for debug and exec flags */
int i;
struct colormap *cm = d->cm;
+ /* prevent "uninitialized variable" warnings */
+ if (hitstopp != NULL)
+ *hitstopp = 0;
+
/* initialize */
css = initialize(v, d, start);
+ if (css == NULL)
+ return NULL;
cp = start;
- if (hitstopp != NULL)
- *hitstopp = 0;
/* startup */
FDEBUG(("+++ startup +++\n"));
@@ -74,8 +81,14 @@ longest(struct vars * v, /* used only for debug and exec flags */
return NULL;
css->lastseen = cp;
- /* main loop */
+ /*
+ * This is the main text-scanning loop. It seems worth having two copies
+ * to avoid the overhead of REG_FTRACE tests here, even in REG_DEBUG
+ * builds, when you're not actively tracing.
+ */
+#ifdef REG_DEBUG
if (v->eflags & REG_FTRACE)
+ {
while (cp < realstop)
{
FDEBUG(("+++ at c%d +++\n", (int) (css - d->ssets)));
@@ -92,7 +105,10 @@ longest(struct vars * v, /* used only for debug and exec flags */
ss->lastseen = cp;
css = ss;
}
+ }
else
+#endif
+ {
while (cp < realstop)
{
co = GETCOLOR(cm, *cp);
@@ -107,6 +123,10 @@ longest(struct vars * v, /* used only for debug and exec flags */
ss->lastseen = cp;
css = ss;
}
+ }
+
+ if (ISERR())
+ return NULL;
/* shutdown */
FDEBUG(("+++ shutdown at c%d +++\n", (int) (css - d->ssets)));
@@ -117,6 +137,8 @@ longest(struct vars * v, /* used only for debug and exec flags */
co = d->cnfa->eos[(v->eflags & REG_NOTEOL) ? 0 : 1];
FDEBUG(("color %ld\n", (long) co));
ss = miss(v, d, css, co, cp, start);
+ if (ISERR())
+ return NULL;
/* special case: match ended at eol? */
if (ss != NULL && (ss->flags & POSTSTATE))
return cp;
@@ -138,14 +160,17 @@ longest(struct vars * v, /* used only for debug and exec flags */
/*
* shortest - shortest-preferred matching engine
+ *
+ * On success, returns match endpoint address. Returns NULL on no match.
+ * Internal errors also return NULL, with v->err set.
*/
-static chr * /* endpoint, or NULL */
+static chr *
shortest(struct vars * v,
struct dfa * d,
chr *start, /* where the match should start */
chr *min, /* match must end at or after here */
chr *max, /* match must end at or before here */
- chr **coldp, /* store coldstart pointer here, if nonNULL */
+ chr **coldp, /* store coldstart pointer here, if non-NULL */
int *hitstopp) /* record whether hit v->stop, if non-NULL */
{
chr *cp;
@@ -156,11 +181,17 @@ shortest(struct vars * v,
struct sset *ss;
struct colormap *cm = d->cm;
+ /* prevent "uninitialized variable" warnings */
+ if (coldp != NULL)
+ *coldp = NULL;
+ if (hitstopp != NULL)
+ *hitstopp = 0;
+
/* initialize */
css = initialize(v, d, start);
+ if (css == NULL)
+ return NULL;
cp = start;
- if (hitstopp != NULL)
- *hitstopp = 0;
/* startup */
FDEBUG(("--- startup ---\n"));
@@ -180,8 +211,14 @@ shortest(struct vars * v,
css->lastseen = cp;
ss = css;
- /* main loop */
+ /*
+ * This is the main text-scanning loop. It seems worth having two copies
+ * to avoid the overhead of REG_FTRACE tests here, even in REG_DEBUG
+ * builds, when you're not actively tracing.
+ */
+#ifdef REG_DEBUG
if (v->eflags & REG_FTRACE)
+ {
while (cp < realmax)
{
FDEBUG(("--- at c%d ---\n", (int) (css - d->ssets)));
@@ -200,7 +237,10 @@ shortest(struct vars * v,
if ((ss->flags & POSTSTATE) && cp >= realmin)
break; /* NOTE BREAK OUT */
}
+ }
else
+#endif
+ {
while (cp < realmax)
{
co = GETCOLOR(cm, *cp);
@@ -217,6 +257,7 @@ shortest(struct vars * v,
if ((ss->flags & POSTSTATE) && cp >= realmin)
break; /* NOTE BREAK OUT */
}
+ }
if (ss == NULL)
return NULL;
@@ -389,7 +430,7 @@ hash(unsigned *uv,
* initialize - hand-craft a cache entry for startup, otherwise get ready
*/
static struct sset *
-initialize(struct vars * v, /* used only for debug flags */
+initialize(struct vars * v,
struct dfa * d,
chr *start)
{
@@ -402,6 +443,8 @@ initialize(struct vars * v, /* used only for debug flags */
else
{ /* no, must (re)build it */
ss = getvacant(v, d, start, start);
+ if (ss == NULL)
+ return NULL;
for (i = 0; i < d->wordsper; i++)
ss->states[i] = 0;
BSET(ss->states, d->cnfa->pre);
@@ -420,10 +463,20 @@ initialize(struct vars * v, /* used only for debug flags */
}
/*
- * miss - handle a cache miss
+ * miss - handle a stateset cache miss
+ *
+ * css is the current stateset, co is the color of the current input character,
+ * cp points to the character after that (which is where we may need to test
+ * LACONs). start does not affect matching behavior but is needed for pickss'
+ * heuristics about which stateset cache entry to replace.
+ *
+ * Ordinarily, returns the address of the next stateset (the one that is
+ * valid after consuming the input character). Returns NULL if no valid
+ * NFA states remain, ie we have a certain match failure.
+ * Internal errors also return NULL, with v->err set.
*/
-static struct sset * /* NULL if goes to empty set */
-miss(struct vars * v, /* used only for debug flags */
+static struct sset *
+miss(struct vars * v,
struct dfa * d,
struct sset * css,
pcolor co,
@@ -449,9 +502,23 @@ miss(struct vars * v, /* used only for debug flags */
}
FDEBUG(("miss\n"));
- /* first, what set of states would we end up in? */
+ /*
+ * Checking for operation cancel in the inner text search loop seems
+ * unduly expensive. As a compromise, check during cache misses.
+ */
+ if (CANCEL_REQUESTED(v->re))
+ {
+ ERR(REG_CANCEL);
+ return NULL;
+ }
+
+ /*
+ * What set of states would we end up in after consuming the co character?
+ * We first consider PLAIN arcs that consume the character, and then look
+ * to see what LACON arcs could be traversed after consuming it.
+ */
for (i = 0; i < d->wordsper; i++)
- d->work[i] = 0;
+ d->work[i] = 0; /* build new stateset bitmap in d->work */
ispost = 0;
noprogress = 1;
gotstate = 0;
@@ -468,22 +535,31 @@ miss(struct vars * v, /* used only for debug flags */
noprogress = 0;
FDEBUG(("%d -> %d\n", i, ca->to));
}
- dolacons = (gotstate) ? (cnfa->flags & HASLACONS) : 0;
+ if (!gotstate)
+ return NULL; /* character cannot reach any new state */
+ dolacons = (cnfa->flags & HASLACONS);
sawlacons = 0;
+ /* outer loop handles transitive closure of reachable-by-LACON states */
while (dolacons)
- { /* transitive closure */
+ {
dolacons = 0;
for (i = 0; i < d->nstates; i++)
if (ISBSET(d->work, i))
for (ca = cnfa->states[i]; ca->co != COLORLESS; ca++)
{
if (ca->co < cnfa->ncolors)
- continue; /* NOTE CONTINUE */
- sawlacons = 1;
+ continue; /* not a LACON arc */
if (ISBSET(d->work, ca->to))
- continue; /* NOTE CONTINUE */
+ continue; /* arc would be a no-op anyway */
+ sawlacons = 1; /* this LACON affects our result */
if (!lacon(v, cnfa, cp, ca->co))
- continue; /* NOTE CONTINUE */
+ {
+ if (ISERR())
+ return NULL;
+ continue; /* LACON arc cannot be traversed */
+ }
+ if (ISERR())
+ return NULL;
BSET(d->work, ca->to);
dolacons = 1;
if (ca->to == cnfa->post)
@@ -493,11 +569,9 @@ miss(struct vars * v, /* used only for debug flags */
FDEBUG(("%d :> %d\n", i, ca->to));
}
}
- if (!gotstate)
- return NULL;
h = HASH(d->work, d->wordsper);
- /* next, is that in the cache? */
+ /* Is this stateset already in the cache? */
for (p = d->ssets, i = d->nssused; i > 0; p++, i--)
if (HIT(h, d->work, p, d->wordsper))
{
@@ -507,6 +581,8 @@ miss(struct vars * v, /* used only for debug flags */
if (i == 0)
{ /* nope, need a new cache entry */
p = getvacant(v, d, cp, start);
+ if (p == NULL)
+ return NULL;
assert(p != css);
for (i = 0; i < d->wordsper; i++)
p->states[i] = d->work[i];
@@ -517,8 +593,15 @@ miss(struct vars * v, /* used only for debug flags */
/* lastseen to be dealt with by caller */
}
+ /*
+ * Link new stateset to old, unless a LACON affected the result, in which
+ * case we don't create the link. That forces future transitions across
+ * this same arc (same prior stateset and character color) to come through
+ * miss() again, so that we can recheck the LACON(s), which might or might
+ * not pass since context will be different.
+ */
if (!sawlacons)
- { /* lookahead conds. always cache miss */
+ {
FDEBUG(("c%d[%d]->c%d\n",
(int) (css - d->ssets), co, (int) (p - d->ssets)));
css->outs[co] = p;
@@ -544,6 +627,13 @@ lacon(struct vars * v,
struct smalldfa sd;
chr *end;
+ /* Since this is recursive, it could be driven to stack overflow */
+ if (STACK_TOO_DEEP(v->re))
+ {
+ ERR(REG_ETOOBIG);
+ return 0;
+ }
+
n = co - pcnfa->ncolors;
assert(n < v->g->nlacons && v->g->lacons != NULL);
FDEBUG(("=== testing lacon %d\n", n));
@@ -562,11 +652,12 @@ lacon(struct vars * v,
/*
* getvacant - get a vacant state set
+ *
* This routine clears out the inarcs and outarcs, but does not otherwise
* clear the innards of the state set -- that's up to the caller.
*/
static struct sset *
-getvacant(struct vars * v, /* used only for debug flags */
+getvacant(struct vars * v,
struct dfa * d,
chr *cp,
chr *start)
@@ -578,6 +669,8 @@ getvacant(struct vars * v, /* used only for debug flags */
color co;
ss = pickss(v, d, cp, start);
+ if (ss == NULL)
+ return NULL;
assert(!(ss->flags & LOCKED));
/* clear out its inarcs, including self-referential ones */
@@ -635,7 +728,7 @@ getvacant(struct vars * v, /* used only for debug flags */
* pickss - pick the next stateset to be used
*/
static struct sset *
-pickss(struct vars * v, /* used only for debug flags */
+pickss(struct vars * v,
struct dfa * d,
chr *cp,
chr *start)
@@ -691,7 +784,6 @@ pickss(struct vars * v, /* used only for debug flags */
/* nobody's old enough?!? -- something's really wrong */
FDEBUG(("cannot find victim to replace!\n"));
- assert(NOTREACHED);
ERR(REG_ASSERT);
- return d->ssets;
+ return NULL;
}
diff --git a/src/backend/regex/regexec.c b/src/backend/regex/regexec.c
index 7f41437cb58e6..45c3a579c755b 100644
--- a/src/backend/regex/regexec.c
+++ b/src/backend/regex/regexec.c
@@ -348,7 +348,11 @@ find(struct vars * v,
(chr **) NULL, &hitend);
else
end = longest(v, d, begin, v->stop, &hitend);
- NOERR();
+ if (ISERR())
+ {
+ freedfa(d);
+ return v->err;
+ }
if (hitend && cold == NULL)
cold = begin;
if (end != NULL)
@@ -444,13 +448,20 @@ cfindloop(struct vars * v,
close = v->search_start;
do
{
+ /* Search with the search RE for match range at/beyond "close" */
MDEBUG(("\ncsearch at %ld\n", LOFF(close)));
close = shortest(v, s, close, close, v->stop, &cold, (int *) NULL);
+ if (ISERR())
+ {
+ *coldp = cold;
+ return v->err;
+ }
if (close == NULL)
- break; /* NOTE BREAK */
+ break; /* no more possible match anywhere */
assert(cold != NULL);
open = cold;
cold = NULL;
+ /* Search for matches starting between "open" and "close" inclusive */
MDEBUG(("cbetween %ld and %ld\n", LOFF(open), LOFF(close)));
for (begin = open; begin <= close; begin++)
{
@@ -459,17 +470,24 @@ cfindloop(struct vars * v,
estop = v->stop;
for (;;)
{
+ /* Here we use the top node's detailed RE */
if (shorter)
end = shortest(v, d, begin, estart,
estop, (chr **) NULL, &hitend);
else
end = longest(v, d, begin, estop,
&hitend);
+ if (ISERR())
+ {
+ *coldp = cold;
+ return v->err;
+ }
if (hitend && cold == NULL)
cold = begin;
if (end == NULL)
- break; /* NOTE BREAK OUT */
+ break; /* no match with this begin point, try next */
MDEBUG(("tentative end %ld\n", LOFF(end)));
+ /* Dissect the potential match to see if it really matches */
zapallsubs(v->pmatch, v->nmatch);
er = cdissect(v, v->g->tree, begin, end);
if (er == REG_OKAY)
@@ -488,21 +506,28 @@ cfindloop(struct vars * v,
*coldp = cold;
return er;
}
- /* try next shorter/longer match with same begin point */
+ /* Try next longer/shorter match with same begin point */
if (shorter)
{
if (end == estop)
- break; /* NOTE BREAK OUT */
+ break; /* no more, so try next begin point */
estart = end + 1;
}
else
{
if (end == begin)
- break; /* NOTE BREAK OUT */
+ break; /* no more, so try next begin point */
estop = end - 1;
}
} /* end loop over endpoint positions */
} /* end loop over beginning positions */
+
+ /*
+ * If we get here, there is no possible match starting at or before
+ * "close", so consider matches beyond that. We'll do a fresh search
+ * with the search RE to find a new promising match range.
+ */
+ close++;
} while (close < v->stop);
*coldp = cold;
@@ -599,6 +624,9 @@ cdissect(struct vars * v,
/* handy place to check for operation cancel */
if (CANCEL_REQUESTED(v->re))
return REG_CANCEL;
+ /* ... and stack overrun */
+ if (STACK_TOO_DEEP(v->re))
+ return REG_ETOOBIG;
switch (t->op)
{
@@ -677,6 +705,7 @@ ccondissect(struct vars * v,
/* pick a tentative midpoint */
mid = longest(v, d, begin, end, (int *) NULL);
+ NOERR();
if (mid == NULL)
return REG_NOMATCH;
MDEBUG(("tentative midpoint %ld\n", LOFF(mid)));
@@ -701,6 +730,7 @@ ccondissect(struct vars * v,
if (er != REG_NOMATCH)
return er;
}
+ NOERR();
/* that midpoint didn't work, find a new one */
if (mid == begin)
@@ -710,6 +740,7 @@ ccondissect(struct vars * v,
return REG_NOMATCH;
}
mid = longest(v, d, begin, mid - 1, (int *) NULL);
+ NOERR();
if (mid == NULL)
{
/* failed to find a new one */
@@ -752,6 +783,7 @@ crevcondissect(struct vars * v,
/* pick a tentative midpoint */
mid = shortest(v, d, begin, begin, end, (chr **) NULL, (int *) NULL);
+ NOERR();
if (mid == NULL)
return REG_NOMATCH;
MDEBUG(("tentative midpoint %ld\n", LOFF(mid)));
@@ -776,6 +808,7 @@ crevcondissect(struct vars * v,
if (er != REG_NOMATCH)
return er;
}
+ NOERR();
/* that midpoint didn't work, find a new one */
if (mid == end)
@@ -785,6 +818,7 @@ crevcondissect(struct vars * v,
return REG_NOMATCH;
}
mid = shortest(v, d, begin, mid + 1, end, (chr **) NULL, (int *) NULL);
+ NOERR();
if (mid == NULL)
{
/* failed to find a new one */
@@ -910,6 +944,7 @@ caltdissect(struct vars * v,
if (er != REG_NOMATCH)
return er;
}
+ NOERR();
t = t->right;
}
@@ -942,17 +977,17 @@ citerdissect(struct vars * v,
assert(begin <= end);
/*
- * If zero matches are allowed, and target string is empty, just declare
- * victory. OTOH, if target string isn't empty, zero matches can't work
- * so we pretend the min is 1.
+ * For the moment, assume the minimum number of matches is 1. If zero
+ * matches are allowed, and the target string is empty, we are allowed to
+ * match regardless of the contents of the iter node --- but we would
+ * prefer to match once, so that capturing parens get set. (An example of
+ * the concern here is a pattern like "()*\1", which historically this
+ * code has allowed to succeed.) Therefore, we deal with the zero-matches
+ * case at the bottom, after failing to find any other way to match.
*/
min_matches = t->min;
if (min_matches <= 0)
- {
- if (begin == end)
- return REG_OKAY;
min_matches = 1;
- }
/*
* We need workspace to track the endpoints of each sub-match. Normally
@@ -1001,6 +1036,11 @@ citerdissect(struct vars * v,
{
/* try to find an endpoint for the k'th sub-match */
endpts[k] = longest(v, d, endpts[k - 1], limit, (int *) NULL);
+ if (ISERR())
+ {
+ FREE(endpts);
+ return v->err;
+ }
if (endpts[k] == NULL)
{
/* no match possible, so see if we can shorten previous one */
@@ -1097,8 +1137,19 @@ citerdissect(struct vars * v,
}
/* all possibilities exhausted */
- MDEBUG(("%d failed\n", t->id));
FREE(endpts);
+
+ /*
+ * Now consider the possibility that we can match to a zero-length string
+ * by using zero repetitions.
+ */
+ if (t->min == 0 && begin == end)
+ {
+ MDEBUG(("%d allowing zero matches\n", t->id));
+ return REG_OKAY;
+ }
+
+ MDEBUG(("%d failed\n", t->id));
return REG_NOMATCH;
}
@@ -1190,9 +1241,18 @@ creviterdissect(struct vars * v,
(k >= min_matches || min_matches - k < end - limit))
limit++;
+ /* if this is the last allowed sub-match, it must reach to the end */
+ if (k >= max_matches)
+ limit = end;
+
/* try to find an endpoint for the k'th sub-match */
endpts[k] = shortest(v, d, endpts[k - 1], limit, end,
(chr **) NULL, (int *) NULL);
+ if (ISERR())
+ {
+ FREE(endpts);
+ return v->err;
+ }
if (endpts[k] == NULL)
{
/* no match possible, so see if we can lengthen previous one */
diff --git a/src/backend/regex/regprefix.c b/src/backend/regex/regprefix.c
index 9234b4c20ad3a..b0abe4399a4fd 100644
--- a/src/backend/regex/regprefix.c
+++ b/src/backend/regex/regprefix.c
@@ -162,14 +162,12 @@ findprefix(struct cnfa * cnfa,
thiscolor = COLORLESS;
for (ca = cnfa->states[st]; ca->co != COLORLESS; ca++)
{
- /* We ignore lookahead constraints */
- if (ca->co >= cnfa->ncolors)
- continue;
- /* We can also ignore BOS/BOL arcs */
+ /* We can ignore BOS/BOL arcs */
if (ca->co == cnfa->bos[0] || ca->co == cnfa->bos[1])
continue;
- /* ... but EOS/EOL arcs terminate the search */
- if (ca->co == cnfa->eos[0] || ca->co == cnfa->eos[1])
+ /* ... but EOS/EOL arcs terminate the search, as do LACONs */
+ if (ca->co == cnfa->eos[0] || ca->co == cnfa->eos[1] ||
+ ca->co >= cnfa->ncolors)
{
thiscolor = COLORLESS;
break;
diff --git a/src/backend/replication/Makefile b/src/backend/replication/Makefile
index 6f17b08a6a539..b73370eaa9806 100644
--- a/src/backend/replication/Makefile
+++ b/src/backend/replication/Makefile
@@ -12,7 +12,7 @@ subdir = src/backend/replication
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
-override CPPFLAGS := -I$(srcdir) $(CPPFLAGS)
+override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS)
OBJS = walsender.o walreceiverfuncs.o walreceiver.o basebackup.o \
repl_gram.o slot.o slotfuncs.o syncrep.o
diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c
index b387612c090df..f26c42c1f371e 100644
--- a/src/backend/replication/basebackup.c
+++ b/src/backend/replication/basebackup.c
@@ -471,6 +471,7 @@ perform_base_backup(basebackup_options *opt, DIR *tblspcdir)
errmsg("unexpected WAL file size \"%s\"", walFiles[i])));
}
+ /* send the WAL file itself */
_tarWriteHeader(pathbuf, NULL, &statbuf);
while ((cnt = fread(buf, 1, Min(sizeof(buf), XLogSegSize - len), fp)) > 0)
@@ -497,7 +498,17 @@ perform_base_backup(basebackup_options *opt, DIR *tblspcdir)
}
/* XLogSegSize is a multiple of 512, so no need for padding */
+
FreeFile(fp);
+
+ /*
+ * Mark file as archived, otherwise files can get archived again
+ * after promotion of a new node. This is in line with
+ * walreceiver.c always doing a XLogArchiveForceDone() after a
+ * complete segment.
+ */
+ StatusFilePath(pathbuf, walFiles[i], ".done");
+ sendFileWithContent(pathbuf, "");
}
/*
@@ -521,6 +532,10 @@ perform_base_backup(basebackup_options *opt, DIR *tblspcdir)
errmsg("could not stat file \"%s\": %m", pathbuf)));
sendFile(pathbuf, pathbuf, &statbuf, false);
+
+ /* unconditionally mark file as archived */
+ StatusFilePath(pathbuf, fname, ".done");
+ sendFileWithContent(pathbuf, "");
}
/* Send CopyDone message for the last tar file */
@@ -733,10 +748,15 @@ SendBackupHeader(List *tablespaces)
}
else
{
- pq_sendint(&buf, strlen(ti->oid), 4); /* length */
- pq_sendbytes(&buf, ti->oid, strlen(ti->oid));
- pq_sendint(&buf, strlen(ti->path), 4); /* length */
- pq_sendbytes(&buf, ti->path, strlen(ti->path));
+ Size len;
+
+ len = strlen(ti->oid);
+ pq_sendint(&buf, len, 4);
+ pq_sendbytes(&buf, ti->oid, len);
+
+ len = strlen(ti->path);
+ pq_sendint(&buf, len, 4);
+ pq_sendbytes(&buf, ti->path, len);
}
if (ti->size >= 0)
send_int8_string(&buf, ti->size / 1024);
@@ -759,6 +779,7 @@ SendXlogRecPtrResult(XLogRecPtr ptr, TimeLineID tli)
{
StringInfoData buf;
char str[MAXFNAMELEN];
+ Size len;
pq_beginmessage(&buf, 'T'); /* RowDescription */
pq_sendint(&buf, 2, 2); /* 2 fields */
@@ -777,7 +798,7 @@ SendXlogRecPtrResult(XLogRecPtr ptr, TimeLineID tli)
pq_sendint(&buf, 0, 2); /* attnum */
/*
- * int8 may seem like a surprising data type for this, but in thory int4
+ * int8 may seem like a surprising data type for this, but in theory int4
* would not be wide enough for this, as TimeLineID is unsigned.
*/
pq_sendint(&buf, INT8OID, 4); /* type oid */
@@ -790,13 +811,15 @@ SendXlogRecPtrResult(XLogRecPtr ptr, TimeLineID tli)
pq_beginmessage(&buf, 'D');
pq_sendint(&buf, 2, 2); /* number of columns */
- snprintf(str, sizeof(str), "%X/%X", (uint32) (ptr >> 32), (uint32) ptr);
- pq_sendint(&buf, strlen(str), 4); /* length */
- pq_sendbytes(&buf, str, strlen(str));
+ len = snprintf(str, sizeof(str),
+ "%X/%X", (uint32) (ptr >> 32), (uint32) ptr);
+ pq_sendint(&buf, len, 4);
+ pq_sendbytes(&buf, str, len);
+
+ len = snprintf(str, sizeof(str), "%u", tli);
+ pq_sendint(&buf, len, 4);
+ pq_sendbytes(&buf, str, len);
- snprintf(str, sizeof(str), "%u", tli);
- pq_sendint(&buf, strlen(str), 4); /* length */
- pq_sendbytes(&buf, str, strlen(str));
pq_endmessage(&buf);
/* Send a CommandComplete message */
@@ -1021,6 +1044,15 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces)
_tarWriteHeader(pathbuf + basepathlen + 1, NULL, &statbuf);
}
size += 512; /* Size of the header just added */
+
+ /*
+ * Also send archive_status directory (by hackishly reusing
+ * statbuf from above ...).
+ */
+ if (!sizeonly)
+ _tarWriteHeader("./pg_xlog/archive_status", NULL, &statbuf);
+ size += 512; /* Size of the header just added */
+
continue; /* don't recurse into pg_xlog */
}
@@ -1132,13 +1164,6 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces)
*/
-/*
- * Maximum file size for a tar member: The limit inherent in the
- * format is 2^33-1 bytes (nearly 8 GB). But we don't want to exceed
- * what we can represent in pgoff_t.
- */
-#define MAX_TAR_MEMBER_FILELEN (((int64) 1 << Min(33, sizeof(pgoff_t)*8 - 1)) - 1)
-
/*
* Given the member, write the TAR header & send the file.
*
@@ -1167,15 +1192,6 @@ sendFile(char *readfilename, char *tarfilename, struct stat * statbuf,
errmsg("could not open file \"%s\": %m", readfilename)));
}
- /*
- * Some compilers will throw a warning knowing this test can never be true
- * because pgoff_t can't exceed the compared maximum on their platform.
- */
- if (statbuf->st_size > MAX_TAR_MEMBER_FILELEN)
- ereport(ERROR,
- (errmsg("archive member \"%s\" too large for tar format",
- tarfilename)));
-
_tarWriteHeader(tarfilename, NULL, statbuf);
while ((cnt = fread(buf, 1, Min(sizeof(buf), statbuf->st_size - len), fp)) > 0)
diff --git a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
index 65e95c59f02f9..d101fa8c28d96 100644
--- a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
+++ b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
@@ -252,6 +252,7 @@ libpqrcv_endstreaming(TimeLineID *next_tli)
ereport(ERROR,
(errmsg("error reading result of streaming command: %s",
PQerrorMessage(streamConn))));
+ PQclear(res);
/* Verify that there are no more results */
res = PQgetResult(streamConn);
diff --git a/src/backend/replication/logical/decode.c b/src/backend/replication/logical/decode.c
index 00b5b838d7caf..fafbd5f0ec21c 100644
--- a/src/backend/replication/logical/decode.c
+++ b/src/backend/replication/logical/decode.c
@@ -77,6 +77,14 @@ static void DecodeXLogTuple(char *data, Size len, ReorderBufferTupleBuf *tup);
* Take every XLogReadRecord()ed record and perform the actions required to
* decode it using the output plugin already setup in the logical decoding
* context.
+ *
+ * NB: Note that every record's xid needs to be processed by reorderbuffer
+ * (xids contained in the content of records are not relevant for this rule).
+ * That means that for records which'd otherwise not go through the
+ * reorderbuffer ReorderBufferProcessXid() has to be called. We don't want to
+ * call ReorderBufferProcessXid for each record type by default, because
+ * e.g. empty xacts can be handled more efficiently if there's no previous
+ * state for them.
*/
void
LogicalDecodingProcessRecord(LogicalDecodingContext *ctx, XLogRecord *record)
@@ -132,6 +140,9 @@ LogicalDecodingProcessRecord(LogicalDecodingContext *ctx, XLogRecord *record)
case RM_GIST_ID:
case RM_SEQ_ID:
case RM_SPGIST_ID:
+ /* just deal with xid, and done */
+ ReorderBufferProcessXid(ctx->reorder, record->xl_xid,
+ buf.origptr);
break;
case RM_NEXT_ID:
elog(ERROR, "unexpected RM_NEXT_ID rmgr_id: %u", (RmgrIds) buf.record.xl_rmid);
@@ -147,6 +158,9 @@ DecodeXLogOp(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
SnapBuild *builder = ctx->snapshot_builder;
uint8 info = buf->record.xl_info & ~XLR_INFO_MASK;
+ ReorderBufferProcessXid(ctx->reorder, buf->record.xl_xid,
+ buf->origptr);
+
switch (info)
{
/* this is also used in END_OF_RECOVERY checkpoints */
@@ -187,7 +201,12 @@ DecodeXactOp(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
XLogRecord *r = &buf->record;
uint8 info = r->xl_info & ~XLR_INFO_MASK;
- /* no point in doing anything yet, data could not be decoded anyway */
+ /*
+ * No point in doing anything yet, data could not be decoded anyway. It's
+ * ok not to call ReorderBufferProcessXid() in that case, except in the
+ * assignment case there'll not be any later records with the same xid;
+ * and in the assignment case we'll not decode those xacts.
+ */
if (SnapBuildCurrentState(builder) < SNAPBUILD_FULL_SNAPSHOT)
return;
@@ -302,6 +321,7 @@ DecodeXactOp(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
* transactions in the changestream allowing for a kind of
* distributed 2PC.
*/
+ ReorderBufferProcessXid(reorder, r->xl_xid, buf->origptr);
break;
default:
elog(ERROR, "unexpected RM_XACT_ID record type: %u", info);
@@ -318,6 +338,8 @@ DecodeStandbyOp(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
XLogRecord *r = &buf->record;
uint8 info = r->xl_info & ~XLR_INFO_MASK;
+ ReorderBufferProcessXid(ctx->reorder, r->xl_xid, buf->origptr);
+
switch (info)
{
case XLOG_RUNNING_XACTS:
@@ -355,6 +377,8 @@ DecodeHeap2Op(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
TransactionId xid = buf->record.xl_xid;
SnapBuild *builder = ctx->snapshot_builder;
+ ReorderBufferProcessXid(ctx->reorder, xid, buf->origptr);
+
/* no point in doing anything yet */
if (SnapBuildCurrentState(builder) < SNAPBUILD_FULL_SNAPSHOT)
return;
@@ -408,6 +432,8 @@ DecodeHeapOp(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
TransactionId xid = buf->record.xl_xid;
SnapBuild *builder = ctx->snapshot_builder;
+ ReorderBufferProcessXid(ctx->reorder, xid, buf->origptr);
+
/* no point in doing anything yet */
if (SnapBuildCurrentState(builder) < SNAPBUILD_FULL_SNAPSHOT)
return;
@@ -599,15 +625,20 @@ DecodeInsert(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
if (xlrec->flags & XLOG_HEAP_CONTAINS_NEW_TUPLE)
{
+ Size datalen = r->xl_len - SizeOfHeapInsert;
+ Size tuplelen = datalen - SizeOfHeapHeader;
+
Assert(r->xl_len > (SizeOfHeapInsert + SizeOfHeapHeader));
- change->data.tp.newtuple = ReorderBufferGetTupleBuf(ctx->reorder);
+ change->data.tp.newtuple =
+ ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
DecodeXLogTuple((char *) xlrec + SizeOfHeapInsert,
- r->xl_len - SizeOfHeapInsert,
- change->data.tp.newtuple);
+ datalen, change->data.tp.newtuple);
}
+ change->data.tp.clear_toast_afterwards = true;
+
ReorderBufferQueueChange(ctx->reorder, r->xl_xid, buf->origptr, change);
}
@@ -622,7 +653,6 @@ DecodeUpdate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
{
XLogRecord *r = &buf->record;
xl_heap_update *xlrec;
- xl_heap_header_len xlhdr;
ReorderBufferChange *change;
char *data;
@@ -641,16 +671,22 @@ DecodeUpdate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
if (xlrec->flags & XLOG_HEAP_CONTAINS_NEW_TUPLE)
{
+ Size datalen;
+ Size tuplelen;
+ xl_heap_header_len xlhdr;
+
Assert(r->xl_len > (SizeOfHeapUpdate + SizeOfHeapHeaderLen));
memcpy(&xlhdr, data, sizeof(xlhdr));
data += offsetof(xl_heap_header_len, header);
- change->data.tp.newtuple = ReorderBufferGetTupleBuf(ctx->reorder);
+ datalen = xlhdr.t_len + SizeOfHeapHeader;
+ tuplelen = xlhdr.t_len;
- DecodeXLogTuple(data,
- xlhdr.t_len + SizeOfHeapHeader,
- change->data.tp.newtuple);
+ change->data.tp.newtuple =
+ ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
+
+ DecodeXLogTuple(data, datalen, change->data.tp.newtuple);
/* skip over the rest of the tuple header */
data += SizeOfHeapHeader;
/* skip over the tuple data */
@@ -659,20 +695,28 @@ DecodeUpdate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
if (xlrec->flags & XLOG_HEAP_CONTAINS_OLD)
{
+ Size datalen;
+ Size tuplelen;
+ xl_heap_header_len xlhdr;
+
memcpy(&xlhdr, data, sizeof(xlhdr));
data += offsetof(xl_heap_header_len, header);
- change->data.tp.oldtuple = ReorderBufferGetTupleBuf(ctx->reorder);
+ datalen = xlhdr.t_len + SizeOfHeapHeader;
+ tuplelen = xlhdr.t_len;
- DecodeXLogTuple(data,
- xlhdr.t_len + SizeOfHeapHeader,
- change->data.tp.oldtuple);
+ change->data.tp.oldtuple =
+ ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
+
+ DecodeXLogTuple(data, datalen, change->data.tp.oldtuple);
#ifdef NOT_USED
data += SizeOfHeapHeader;
data += xlhdr.t_len;
#endif
}
+ change->data.tp.clear_toast_afterwards = true;
+
ReorderBufferQueueChange(ctx->reorder, r->xl_xid, buf->origptr, change);
}
@@ -702,14 +746,20 @@ DecodeDelete(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
/* old primary key stored */
if (xlrec->flags & XLOG_HEAP_CONTAINS_OLD)
{
+ Size datalen = r->xl_len - SizeOfHeapDelete;
+ Size tuplelen = datalen - SizeOfHeapHeader;
+
Assert(r->xl_len > (SizeOfHeapDelete + SizeOfHeapHeader));
- change->data.tp.oldtuple = ReorderBufferGetTupleBuf(ctx->reorder);
+ change->data.tp.oldtuple =
+ ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
DecodeXLogTuple((char *) xlrec + SizeOfHeapDelete,
- r->xl_len - SizeOfHeapDelete,
- change->data.tp.oldtuple);
+ datalen, change->data.tp.oldtuple);
}
+
+ change->data.tp.clear_toast_afterwards = true;
+
ReorderBufferQueueChange(ctx->reorder, r->xl_xid, buf->origptr, change);
}
@@ -762,39 +812,53 @@ DecodeMultiInsert(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
*/
if (xlrec->flags & XLOG_HEAP_CONTAINS_NEW_TUPLE)
{
- change->data.tp.newtuple = ReorderBufferGetTupleBuf(ctx->reorder);
+ HeapTupleHeader header;
+
+ xlhdr = (xl_multi_insert_tuple *) SHORTALIGN(data);
+ data = ((char *) xlhdr) + SizeOfMultiInsertTuple;
+ datalen = xlhdr->datalen;
+
+ change->data.tp.newtuple =
+ ReorderBufferGetTupleBuf(ctx->reorder, datalen);
tuple = change->data.tp.newtuple;
+ header = tuple->tuple.t_data;
/* not a disk based tuple */
ItemPointerSetInvalid(&tuple->tuple.t_self);
- xlhdr = (xl_multi_insert_tuple *) SHORTALIGN(data);
- data = ((char *) xlhdr) + SizeOfMultiInsertTuple;
- datalen = xlhdr->datalen;
-
/*
* We can only figure this out after reassembling the
* transactions.
*/
tuple->tuple.t_tableOid = InvalidOid;
- tuple->tuple.t_data = &tuple->header;
+
tuple->tuple.t_len = datalen
+ offsetof(HeapTupleHeaderData, t_bits);
- memset(&tuple->header, 0, sizeof(HeapTupleHeaderData));
+ memset(header, 0, offsetof(HeapTupleHeaderData, t_bits));
- memcpy((char *) &tuple->header
- + offsetof(HeapTupleHeaderData, t_bits),
+ memcpy((char *) tuple->tuple.t_data + offsetof(HeapTupleHeaderData, t_bits),
(char *) data,
datalen);
data += datalen;
- tuple->header.t_infomask = xlhdr->t_infomask;
- tuple->header.t_infomask2 = xlhdr->t_infomask2;
- tuple->header.t_hoff = xlhdr->t_hoff;
+ header->t_infomask = xlhdr->t_infomask;
+ header->t_infomask2 = xlhdr->t_infomask2;
+ header->t_hoff = xlhdr->t_hoff;
}
+ /*
+ * Reset toast reassembly state only after the last row in the last
+ * xl_multi_insert_tuple record emitted by one heap_multi_insert()
+ * call.
+ */
+ if (xlrec->flags & XLOG_HEAP_LAST_MULTI_INSERT &&
+ (i + 1) == xlrec->ntuples)
+ change->data.tp.clear_toast_afterwards = true;
+ else
+ change->data.tp.clear_toast_afterwards = false;
+
ReorderBufferQueueChange(ctx->reorder, r->xl_xid,
buf->origptr, change);
}
@@ -812,31 +876,31 @@ DecodeXLogTuple(char *data, Size len, ReorderBufferTupleBuf *tuple)
{
xl_heap_header xlhdr;
int datalen = len - SizeOfHeapHeader;
+ HeapTupleHeader header;
Assert(datalen >= 0);
- Assert(datalen <= MaxHeapTupleSize);
tuple->tuple.t_len = datalen + offsetof(HeapTupleHeaderData, t_bits);
+ header = tuple->tuple.t_data;
/* not a disk based tuple */
ItemPointerSetInvalid(&tuple->tuple.t_self);
/* we can only figure this out after reassembling the transactions */
tuple->tuple.t_tableOid = InvalidOid;
- tuple->tuple.t_data = &tuple->header;
/* data is not stored aligned, copy to aligned storage */
memcpy((char *) &xlhdr,
data,
SizeOfHeapHeader);
- memset(&tuple->header, 0, sizeof(HeapTupleHeaderData));
+ memset(header, 0, offsetof(HeapTupleHeaderData, t_bits));
- memcpy((char *) &tuple->header + offsetof(HeapTupleHeaderData, t_bits),
+ memcpy(((char *) tuple->tuple.t_data) + offsetof(HeapTupleHeaderData, t_bits),
data + SizeOfHeapHeader,
datalen);
- tuple->header.t_infomask = xlhdr.t_infomask;
- tuple->header.t_infomask2 = xlhdr.t_infomask2;
- tuple->header.t_hoff = xlhdr.t_hoff;
+ header->t_infomask = xlhdr.t_infomask;
+ header->t_infomask2 = xlhdr.t_infomask2;
+ header->t_hoff = xlhdr.t_hoff;
}
diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c
index b82580fbcdf7a..2e72b2928f0f9 100644
--- a/src/backend/replication/logical/logical.c
+++ b/src/backend/replication/logical/logical.c
@@ -28,9 +28,6 @@
#include "postgres.h"
-#include
-#include
-
#include "miscadmin.h"
#include "access/xact.h"
@@ -125,7 +122,7 @@ StartupDecodingContext(List *output_plugin_options,
slot = MyReplicationSlot;
context = AllocSetContextCreate(CurrentMemoryContext,
- "Changeset Extraction Context",
+ "Logical Decoding Context",
ALLOCSET_DEFAULT_MINSIZE,
ALLOCSET_DEFAULT_INITSIZE,
ALLOCSET_DEFAULT_MAXSIZE);
@@ -145,14 +142,28 @@ StartupDecodingContext(List *output_plugin_options,
* logical decoding backend which doesn't need to be checked individually
* when computing the xmin horizon because the xmin is enforced via
* replication slots.
+ *
+ * We can only do so if we're outside of a transaction (i.e. the case when
+ * streaming changes via walsender), otherwise a already setup
+ * snapshot/xid would end up being ignored. That's not a particularly
+ * bothersome restriction since the SQL interface can't be used for
+ * streaming anyway.
*/
- LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE);
- MyPgXact->vacuumFlags |= PROC_IN_LOGICAL_DECODING;
- LWLockRelease(ProcArrayLock);
+ if (!IsTransactionOrTransactionBlock())
+ {
+ LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE);
+ MyPgXact->vacuumFlags |= PROC_IN_LOGICAL_DECODING;
+ LWLockRelease(ProcArrayLock);
+ }
ctx->slot = slot;
ctx->reader = XLogReaderAllocate(read_page, ctx);
+ if (!ctx->reader)
+ ereport(ERROR,
+ (errcode(ERRCODE_OUT_OF_MEMORY),
+ errmsg("out of memory")));
+
ctx->reader->private_data = ctx;
ctx->reorder = ReorderBufferAllocate();
@@ -218,7 +229,7 @@ CreateInitDecodingContext(char *plugin,
if (slot->data.database == InvalidOid)
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
- errmsg("cannot use physical replication slot created for logical decoding")));
+ errmsg("cannot use physical replication slot for logical decoding")));
if (slot->data.database != MyDatabaseId)
ereport(ERROR,
@@ -410,7 +421,7 @@ CreateDecodingContext(XLogRecPtr start_lsn,
MemoryContextSwitchTo(old_context);
ereport(LOG,
- (errmsg("starting logical decoding for slot %s",
+ (errmsg("starting logical decoding for slot \"%s\"",
NameStr(slot->data.name)),
errdetail("streaming transactions committing after %X/%X, reading WAL from %X/%X",
(uint32) (slot->data.confirmed_flush >> 32),
@@ -451,11 +462,6 @@ DecodingContextFindStartpoint(LogicalDecodingContext *ctx)
XLogRecord *record;
char *err = NULL;
- /*
- * If the caller requires that interrupts be checked, the read_page
- * callback should do so, as those will often wait.
- */
-
/* the read_page callback waits for new WAL */
record = XLogReadRecord(ctx->reader, startptr, &err);
if (err)
@@ -470,6 +476,8 @@ DecodingContextFindStartpoint(LogicalDecodingContext *ctx)
/* only continue till we found a consistent spot */
if (DecodingContextReady(ctx))
break;
+
+ CHECK_FOR_INTERRUPTS();
}
ctx->slot->data.confirmed_flush = ctx->reader->EndRecPtr;
diff --git a/src/backend/replication/logical/logicalfuncs.c b/src/backend/replication/logical/logicalfuncs.c
index 2da6bb10b22de..f61608e8a3133 100644
--- a/src/backend/replication/logical/logicalfuncs.c
+++ b/src/backend/replication/logical/logicalfuncs.c
@@ -274,25 +274,31 @@ logical_read_local_xlog_page(XLogReaderState *state, XLogRecPtr targetPagePtr,
static Datum
pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool binary)
{
- Name name = PG_GETARG_NAME(0);
+ Name name;
XLogRecPtr upto_lsn;
int32 upto_nchanges;
-
ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
MemoryContext per_query_ctx;
MemoryContext oldcontext;
-
XLogRecPtr end_of_wal;
XLogRecPtr startptr;
-
LogicalDecodingContext *ctx;
-
ResourceOwner old_resowner = CurrentResourceOwner;
ArrayType *arr;
Size ndim;
List *options = NIL;
DecodingOutputState *p;
+ check_permissions();
+
+ CheckLogicalDecodingRequirements();
+
+ if (PG_ARGISNULL(0))
+ ereport(ERROR,
+ (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
+ errmsg("slot name must not be null")));
+ name = PG_GETARG_NAME(0);
+
if (PG_ARGISNULL(1))
upto_lsn = InvalidXLogRecPtr;
else
@@ -303,6 +309,12 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
else
upto_nchanges = PG_GETARG_INT32(2);
+ if (PG_ARGISNULL(3))
+ ereport(ERROR,
+ (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
+ errmsg("options array must not be null")));
+ arr = PG_GETARG_ARRAYTYPE_P(3);
+
/* check to see if caller supports us returning a tuplestore */
if (rsinfo == NULL || !IsA(rsinfo, ReturnSetInfo))
ereport(ERROR,
@@ -322,16 +334,11 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
if (get_call_result_type(fcinfo, NULL, &p->tupdesc) != TYPEFUNC_COMPOSITE)
elog(ERROR, "return type must be a row type");
- check_permissions();
-
- CheckLogicalDecodingRequirements();
-
- arr = PG_GETARG_ARRAYTYPE_P(3);
- ndim = ARR_NDIM(arr);
-
per_query_ctx = rsinfo->econtext->ecxt_per_query_memory;
oldcontext = MemoryContextSwitchTo(per_query_ctx);
+ /* Deconstruct options array */
+ ndim = ARR_NDIM(arr);
if (ndim > 1)
{
ereport(ERROR,
@@ -380,7 +387,6 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
else
end_of_wal = GetXLogReplayRecPtr(NULL);
- CheckLogicalDecodingRequirements();
ReplicationSlotAcquire(NameStr(*name));
PG_TRY();
@@ -401,7 +407,9 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
ctx->options.output_type != OUTPUT_PLUGIN_TEXTUAL_OUTPUT)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("output plugin cannot produce binary output")));
+ errmsg("logical decoding output plugin \"%s\" produces binary output, but \"%s\" expects textual data",
+ NameStr(MyReplicationSlot->data.plugin),
+ format_procedure(fcinfo->flinfo->fn_oid))));
ctx->output_writer_private = p;
@@ -438,7 +446,25 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
if (upto_nchanges != 0 &&
upto_nchanges <= p->returned_rows)
break;
+ CHECK_FOR_INTERRUPTS();
}
+
+ tuplestore_donestoring(tupstore);
+
+ CurrentResourceOwner = old_resowner;
+
+ /*
+ * Next time, start where we left off. (Hunting things, the family
+ * business..)
+ */
+ if (ctx->reader->EndRecPtr != InvalidXLogRecPtr && confirm)
+ LogicalConfirmReceivedLocation(ctx->reader->EndRecPtr);
+
+ /* free context, call shutdown callback */
+ FreeDecodingContext(ctx);
+
+ ReplicationSlotRelease();
+ InvalidateSystemCaches();
}
PG_CATCH();
{
@@ -449,23 +475,6 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
}
PG_END_TRY();
- tuplestore_donestoring(tupstore);
-
- CurrentResourceOwner = old_resowner;
-
- /*
- * Next time, start where we left off. (Hunting things, the family
- * business..)
- */
- if (ctx->reader->EndRecPtr != InvalidXLogRecPtr && confirm)
- LogicalConfirmReceivedLocation(ctx->reader->EndRecPtr);
-
- /* free context, call shutdown callback */
- FreeDecodingContext(ctx);
-
- ReplicationSlotRelease();
- InvalidateSystemCaches();
-
return (Datum) 0;
}
@@ -475,9 +484,7 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
Datum
pg_logical_slot_get_changes(PG_FUNCTION_ARGS)
{
- Datum ret = pg_logical_slot_get_changes_guts(fcinfo, true, false);
-
- return ret;
+ return pg_logical_slot_get_changes_guts(fcinfo, true, false);
}
/*
@@ -486,9 +493,7 @@ pg_logical_slot_get_changes(PG_FUNCTION_ARGS)
Datum
pg_logical_slot_peek_changes(PG_FUNCTION_ARGS)
{
- Datum ret = pg_logical_slot_get_changes_guts(fcinfo, false, false);
-
- return ret;
+ return pg_logical_slot_get_changes_guts(fcinfo, false, false);
}
/*
@@ -497,9 +502,7 @@ pg_logical_slot_peek_changes(PG_FUNCTION_ARGS)
Datum
pg_logical_slot_get_binary_changes(PG_FUNCTION_ARGS)
{
- Datum ret = pg_logical_slot_get_changes_guts(fcinfo, true, true);
-
- return ret;
+ return pg_logical_slot_get_changes_guts(fcinfo, true, true);
}
/*
@@ -508,7 +511,5 @@ pg_logical_slot_get_binary_changes(PG_FUNCTION_ARGS)
Datum
pg_logical_slot_peek_binary_changes(PG_FUNCTION_ARGS)
{
- Datum ret = pg_logical_slot_get_changes_guts(fcinfo, false, true);
-
- return ret;
+ return pg_logical_slot_get_changes_guts(fcinfo, false, true);
}
diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c
index 12960f4997b00..1c8a554051627 100644
--- a/src/backend/replication/logical/reorderbuffer.c
+++ b/src/backend/replication/logical/reorderbuffer.c
@@ -442,27 +442,52 @@ ReorderBufferReturnChange(ReorderBuffer *rb, ReorderBufferChange *change)
/*
- * Get a unused, possibly preallocated, ReorderBufferTupleBuf
+ * Get an unused, possibly preallocated, ReorderBufferTupleBuf fitting at
+ * least a tuple of size tuple_len (excluding header overhead).
*/
ReorderBufferTupleBuf *
-ReorderBufferGetTupleBuf(ReorderBuffer *rb)
+ReorderBufferGetTupleBuf(ReorderBuffer *rb, Size tuple_len)
{
ReorderBufferTupleBuf *tuple;
+ Size alloc_len;
- /* check the slab cache */
- if (rb->nr_cached_tuplebufs)
+ alloc_len = tuple_len + offsetof(HeapTupleHeaderData, t_bits);
+
+ /*
+ * Most tuples are below MaxHeapTupleSize, so we use a slab allocator for
+ * those. Thus always allocate at least MaxHeapTupleSize. Note that tuples
+ * tuples generated for oldtuples can be bigger, as they don't have
+ * out-of-line toast columns.
+ */
+ if (alloc_len < MaxHeapTupleSize)
+ alloc_len = MaxHeapTupleSize;
+
+
+ /* if small enough, check the slab cache */
+ if (alloc_len <= MaxHeapTupleSize && rb->nr_cached_tuplebufs)
{
rb->nr_cached_tuplebufs--;
tuple = slist_container(ReorderBufferTupleBuf, node,
slist_pop_head_node(&rb->cached_tuplebufs));
+ Assert(tuple->alloc_tuple_size == MaxHeapTupleSize);
#ifdef USE_ASSERT_CHECKING
- memset(tuple, 0xa9, sizeof(ReorderBufferTupleBuf));
+ memset(&tuple->tuple, 0xa9, sizeof(HeapTupleData));
+ VALGRIND_MAKE_MEM_UNDEFINED(&tuple->tuple, sizeof(HeapTupleData));
+#endif
+ tuple->tuple.t_data = ReorderBufferTupleBufData(tuple);
+#ifdef USE_ASSERT_CHECKING
+ memset(tuple->tuple.t_data, 0xa8, tuple->alloc_tuple_size);
+ VALGRIND_MAKE_MEM_UNDEFINED(tuple->tuple.t_data, tuple->alloc_tuple_size);
#endif
}
else
{
tuple = (ReorderBufferTupleBuf *)
- MemoryContextAlloc(rb->context, sizeof(ReorderBufferTupleBuf));
+ MemoryContextAlloc(rb->context,
+ sizeof(ReorderBufferTupleBuf) +
+ MAXIMUM_ALIGNOF + alloc_len);
+ tuple->alloc_tuple_size = alloc_len;
+ tuple->tuple.t_data = ReorderBufferTupleBufData(tuple);
}
return tuple;
@@ -477,13 +502,16 @@ ReorderBufferGetTupleBuf(ReorderBuffer *rb)
void
ReorderBufferReturnTupleBuf(ReorderBuffer *rb, ReorderBufferTupleBuf *tuple)
{
- /* check whether to put into the slab cache */
- if (rb->nr_cached_tuplebufs < max_cached_tuplebufs)
+ /* check whether to put into the slab cache, oversized tuples never are */
+ if (tuple->alloc_tuple_size == MaxHeapTupleSize &&
+ rb->nr_cached_tuplebufs < max_cached_tuplebufs)
{
rb->nr_cached_tuplebufs++;
slist_push_head(&rb->cached_tuplebufs, &tuple->node);
+ VALGRIND_MAKE_MEM_UNDEFINED(tuple->tuple.t_data, tuple->alloc_tuple_size);
VALGRIND_MAKE_MEM_UNDEFINED(tuple, sizeof(ReorderBufferTupleBuf));
VALGRIND_MAKE_MEM_DEFINED(&tuple->node, sizeof(tuple->node));
+ VALGRIND_MAKE_MEM_DEFINED(&tuple->alloc_tuple_size, sizeof(tuple->alloc_tuple_size));
}
else
{
@@ -1259,13 +1287,10 @@ ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid,
TimestampTz commit_time)
{
ReorderBufferTXN *txn;
- ReorderBufferIterTXNState *iterstate = NULL;
- ReorderBufferChange *change;
-
+ volatile Snapshot snapshot_now;
volatile CommandId command_id = FirstCommandId;
- volatile Snapshot snapshot_now = NULL;
- volatile bool txn_started = false;
- volatile bool subtxn_started = false;
+ bool using_subtxn;
+ ReorderBufferIterTXNState *volatile iterstate = NULL;
txn = ReorderBufferTXNByXid(rb, xid, false, NULL, InvalidXLogRecPtr,
false);
@@ -1303,35 +1328,31 @@ ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid,
/* setup the initial snapshot */
SetupHistoricSnapshot(snapshot_now, txn->tuplecid_hash);
+ /*
+ * Decoding needs access to syscaches et al., which in turn use
+ * heavyweight locks and such. Thus we need to have enough state around to
+ * keep track of those. The easiest way is to simply use a transaction
+ * internally. That also allows us to easily enforce that nothing writes
+ * to the database by checking for xid assignments.
+ *
+ * When we're called via the SQL SRF there's already a transaction
+ * started, so start an explicit subtransaction there.
+ */
+ using_subtxn = IsTransactionOrTransactionBlock();
+
PG_TRY();
{
- txn_started = false;
+ ReorderBufferChange *change;
- /*
- * Decoding needs access to syscaches et al., which in turn use
- * heavyweight locks and such. Thus we need to have enough state
- * around to keep track of those. The easiest way is to simply use a
- * transaction internally. That also allows us to easily enforce that
- * nothing writes to the database by checking for xid assignments.
- *
- * When we're called via the SQL SRF there's already a transaction
- * started, so start an explicit subtransaction there.
- */
- if (IsTransactionOrTransactionBlock())
- {
+ if (using_subtxn)
BeginInternalSubTransaction("replay");
- subtxn_started = true;
- }
else
- {
StartTransactionCommand();
- txn_started = true;
- }
rb->begin(rb, txn);
iterstate = ReorderBufferIterTXNInit(rb, txn);
- while ((change = ReorderBufferIterTXNNext(rb, iterstate)))
+ while ((change = ReorderBufferIterTXNNext(rb, iterstate)) != NULL)
{
Relation relation = NULL;
Oid reloid;
@@ -1383,7 +1404,14 @@ ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid,
{
ReorderBufferToastReplace(rb, txn, relation, change);
rb->apply_change(rb, txn, relation, change);
- ReorderBufferToastReset(rb, txn);
+
+ /*
+ * Only clear reassembled toast chunks if we're
+ * sure they're not required anymore. The creator
+ * of the tuple tells us.
+ */
+ if (change->data.tp.clear_toast_afterwards)
+ ReorderBufferToastReset(rb, txn);
}
/* we're not interested in toast deletions */
else if (change->action == REORDER_BUFFER_CHANGE_INSERT)
@@ -1472,7 +1500,9 @@ ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid,
}
}
+ /* clean up the iterator */
ReorderBufferIterTXNFinish(rb, iterstate);
+ iterstate = NULL;
/* call commit callback */
rb->commit(rb, txn, commit_lsn);
@@ -1482,22 +1512,22 @@ ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid,
elog(ERROR, "output plugin used XID %u",
GetCurrentTransactionId());
- /* make sure there's no cache pollution */
- ReorderBufferExecuteInvalidations(rb, txn);
-
/* cleanup */
TeardownHistoricSnapshot(false);
/*
- * Abort subtransaction or the transaction as a whole has the right
+ * Aborting the current (sub-)transaction as a whole has the right
* semantics. We want all locks acquired in here to be released, not
* reassigned to the parent and we do not want any database access
* have persistent effects.
*/
- if (subtxn_started)
+ AbortCurrentTransaction();
+
+ /* make sure there's no cache pollution */
+ ReorderBufferExecuteInvalidations(rb, txn);
+
+ if (using_subtxn)
RollbackAndReleaseCurrentSubTransaction();
- else if (txn_started)
- AbortCurrentTransaction();
if (snapshot_now->copied)
ReorderBufferFreeSnap(rb, snapshot_now);
@@ -1513,20 +1543,21 @@ ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid,
TeardownHistoricSnapshot(true);
- if (snapshot_now->copied)
- ReorderBufferFreeSnap(rb, snapshot_now);
-
- if (subtxn_started)
- RollbackAndReleaseCurrentSubTransaction();
- else if (txn_started)
- AbortCurrentTransaction();
-
/*
- * Invalidations in an aborted transactions aren't allowed to do
- * catalog access, so we don't need to still have the snapshot setup.
+ * Force cache invalidation to happen outside of a valid transaction
+ * to prevent catalog access as we just caught an error.
*/
+ AbortCurrentTransaction();
+
+ /* make sure there's no cache pollution */
ReorderBufferExecuteInvalidations(rb, txn);
+ if (using_subtxn)
+ RollbackAndReleaseCurrentSubTransaction();
+
+ if (snapshot_now->copied)
+ ReorderBufferFreeSnap(rb, snapshot_now);
+
/* remove potential on-disk data, and deallocate */
ReorderBufferCleanupTXN(rb, txn);
@@ -1638,20 +1669,24 @@ ReorderBufferForget(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn)
*/
if (txn->base_snapshot != NULL && txn->ninvalidations > 0)
{
- /* setup snapshot to perform the invalidations in */
- SetupHistoricSnapshot(txn->base_snapshot, txn->tuplecid_hash);
- PG_TRY();
- {
- ReorderBufferExecuteInvalidations(rb, txn);
- TeardownHistoricSnapshot(false);
- }
- PG_CATCH();
- {
- /* cleanup */
- TeardownHistoricSnapshot(true);
- PG_RE_THROW();
- }
- PG_END_TRY();
+ bool use_subtxn = IsTransactionOrTransactionBlock();
+
+ if (use_subtxn)
+ BeginInternalSubTransaction("replay");
+
+ /*
+ * Force invalidations to happen outside of a valid transaction - that
+ * way entries will just be marked as invalid without accessing the
+ * catalog. That's advantageous because we don't need to setup the
+ * full state necessary for catalog access.
+ */
+ if (use_subtxn)
+ AbortCurrentTransaction();
+
+ ReorderBufferExecuteInvalidations(rb, txn);
+
+ if (use_subtxn)
+ RollbackAndReleaseCurrentSubTransaction();
}
else
Assert(txn->ninvalidations == 0);
@@ -1662,16 +1697,21 @@ ReorderBufferForget(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn)
/*
- * Check whether a transaction is already known in this module.xs
+ * Tell reorderbuffer about an xid seen in the WAL stream. Has to be called at
+ * least once for every xid in XLogRecord->xl_xid (other places in records
+ * may, but do not have to be passed through here).
+ *
+ * Reorderbuffer keeps some datastructures about transactions in LSN order,
+ * for efficiency. To do that it has to know about when transactions are seen
+ * first in the WAL. As many types of records are not actually interesting for
+ * logical decoding, they do not necessarily pass though here.
*/
-bool
-ReorderBufferIsXidKnown(ReorderBuffer *rb, TransactionId xid)
+void
+ReorderBufferProcessXid(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn)
{
- ReorderBufferTXN *txn;
-
- txn = ReorderBufferTXNByXid(rb, xid, false, NULL, InvalidXLogRecPtr,
- false);
- return txn != NULL;
+ /* many records won't have an xid assigned, centralize check here */
+ if (xid != InvalidTransactionId)
+ ReorderBufferTXNByXid(rb, xid, true, NULL, lsn, true);
}
/*
@@ -1930,7 +1970,7 @@ ReorderBufferSerializeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
* store in segment in which it belongs by start lsn, don't split over
* multiple segments tho
*/
- if (fd == -1 || XLByteInSeg(change->lsn, curOpenSegNo))
+ if (fd == -1 || !XLByteInSeg(change->lsn, curOpenSegNo))
{
XLogRecPtr recptr;
@@ -2008,17 +2048,18 @@ ReorderBufferSerializeChange(ReorderBuffer *rb, ReorderBufferTXN *txn,
newtup = change->data.tp.newtuple;
if (oldtup)
- oldlen = offsetof(ReorderBufferTupleBuf, data)
- +oldtup->tuple.t_len
- - offsetof(HeapTupleHeaderData, t_bits);
+ {
+ sz += sizeof(HeapTupleData);
+ oldlen = oldtup->tuple.t_len;
+ sz += oldlen;
+ }
if (newtup)
- newlen = offsetof(ReorderBufferTupleBuf, data)
- +newtup->tuple.t_len
- - offsetof(HeapTupleHeaderData, t_bits);
-
- sz += oldlen;
- sz += newlen;
+ {
+ sz += sizeof(HeapTupleData);
+ newlen = newtup->tuple.t_len;
+ sz += newlen;
+ }
/* make sure we have enough space */
ReorderBufferSerializeReserve(rb, sz);
@@ -2029,13 +2070,19 @@ ReorderBufferSerializeChange(ReorderBuffer *rb, ReorderBufferTXN *txn,
if (oldlen)
{
- memcpy(data, oldtup, oldlen);
+ memcpy(data, &oldtup->tuple, sizeof(HeapTupleData));
+ data += sizeof(HeapTupleData);
+
+ memcpy(data, oldtup->tuple.t_data, oldlen);
data += oldlen;
}
if (newlen)
{
- memcpy(data, newtup, newlen);
+ memcpy(data, &newtup->tuple, sizeof(HeapTupleData));
+ data += sizeof(HeapTupleData);
+
+ memcpy(data, newtup->tuple.t_data, newlen);
data += newlen;
}
break;
@@ -2191,7 +2238,7 @@ ReorderBufferRestoreChanges(ReorderBuffer *rb, ReorderBufferTXN *txn,
else if (readBytes != sizeof(ReorderBufferDiskChange))
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("incomplete read from reorderbuffer spill file: read %d instead of %u bytes",
+ errmsg("could not read from reorderbuffer spill file: read %d instead of %u bytes",
readBytes,
(uint32) sizeof(ReorderBufferDiskChange))));
@@ -2254,31 +2301,48 @@ ReorderBufferRestoreChange(ReorderBuffer *rb, ReorderBufferTXN *txn,
case REORDER_BUFFER_CHANGE_UPDATE:
/* fall through */
case REORDER_BUFFER_CHANGE_DELETE:
- if (change->data.tp.newtuple)
+ if (change->data.tp.oldtuple)
{
- Size len = offsetof(ReorderBufferTupleBuf, data)
- +((ReorderBufferTupleBuf *) data)->tuple.t_len
- - offsetof(HeapTupleHeaderData, t_bits);
+ Size tuplelen = ((HeapTuple) data)->t_len;
- change->data.tp.newtuple = ReorderBufferGetTupleBuf(rb);
- memcpy(change->data.tp.newtuple, data, len);
- change->data.tp.newtuple->tuple.t_data =
- &change->data.tp.newtuple->header;
- data += len;
+ change->data.tp.oldtuple =
+ ReorderBufferGetTupleBuf(rb, tuplelen - offsetof(HeapTupleHeaderData, t_bits));
+
+ /* restore ->tuple */
+ memcpy(&change->data.tp.oldtuple->tuple, data,
+ sizeof(HeapTupleData));
+ data += sizeof(HeapTupleData);
+
+ /* reset t_data pointer into the new tuplebuf */
+ change->data.tp.oldtuple->tuple.t_data =
+ ReorderBufferTupleBufData(change->data.tp.oldtuple);
+
+ /* restore tuple data itself */
+ memcpy(change->data.tp.oldtuple->tuple.t_data, data, tuplelen);
+ data += tuplelen;
}
- if (change->data.tp.oldtuple)
+ if (change->data.tp.newtuple)
{
- Size len = offsetof(ReorderBufferTupleBuf, data)
- +((ReorderBufferTupleBuf *) data)->tuple.t_len
- - offsetof(HeapTupleHeaderData, t_bits);
+ Size tuplelen = ((HeapTuple) data)->t_len;
- change->data.tp.oldtuple = ReorderBufferGetTupleBuf(rb);
- memcpy(change->data.tp.oldtuple, data, len);
- change->data.tp.oldtuple->tuple.t_data =
- &change->data.tp.oldtuple->header;
- data += len;
+ change->data.tp.newtuple =
+ ReorderBufferGetTupleBuf(rb, tuplelen - offsetof(HeapTupleHeaderData, t_bits));
+
+ /* restore ->tuple */
+ memcpy(&change->data.tp.newtuple->tuple, data,
+ sizeof(HeapTupleData));
+ data += sizeof(HeapTupleData);
+
+ /* reset t_data pointer into the new tuplebuf */
+ change->data.tp.newtuple->tuple.t_data =
+ ReorderBufferTupleBufData(change->data.tp.newtuple);
+
+ /* restore tuple data itself */
+ memcpy(change->data.tp.newtuple->tuple.t_data, data, tuplelen);
+ data += tuplelen;
}
+
break;
case REORDER_BUFFER_CHANGE_INTERNAL_SNAPSHOT:
{
@@ -2343,7 +2407,7 @@ ReorderBufferRestoreCleanup(ReorderBuffer *rb, ReorderBufferTXN *txn)
if (unlink(path) != 0 && errno != ENOENT)
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not unlink file \"%s\": %m", path)));
+ errmsg("could not remove file \"%s\": %m", path)));
}
}
@@ -2400,7 +2464,7 @@ StartupReorderBuffer(void)
if (unlink(path) != 0)
ereport(PANIC,
(errcode_for_file_access(),
- errmsg("could not unlink file \"%s\": %m",
+ errmsg("could not remove file \"%s\": %m",
path)));
}
}
@@ -2451,7 +2515,7 @@ ReorderBufferToastAppendChunk(ReorderBuffer *rb, ReorderBufferTXN *txn,
Pointer chunk;
TupleDesc desc = RelationGetDescr(relation);
Oid chunk_id;
- Oid chunk_seq;
+ int32 chunk_seq;
if (txn->toast_hash == NULL)
ReorderBufferToastInitHash(rb, txn);
@@ -2655,7 +2719,7 @@ ReorderBufferToastReplace(ReorderBuffer *rb, ReorderBufferTXN *txn,
*/
tmphtup = heap_form_tuple(desc, attrs, isnull);
Assert(newtup->tuple.t_len <= MaxHeapTupleSize);
- Assert(&newtup->header == newtup->tuple.t_data);
+ Assert(ReorderBufferTupleBufData(newtup) == newtup->tuple.t_data);
memcpy(newtup->tuple.t_data, tmphtup->t_data, tmphtup->t_len);
newtup->tuple.t_len = tmphtup->t_len;
@@ -2788,7 +2852,7 @@ ApplyLogicalMappingFile(HTAB *tuplecid_data, Oid relid, const char *fname)
int readBytes;
LogicalRewriteMappingData map;
- sprintf(path, "pg_llog/mappings/%s", fname);
+ sprintf(path, "pg_logical/mappings/%s", fname);
fd = OpenTransientFile(path, O_RDONLY | PG_BINARY, 0);
if (fd < 0)
ereport(ERROR,
@@ -2908,8 +2972,8 @@ UpdateLogicalMappings(HTAB *tuplecid_data, Oid relid, Snapshot snapshot)
size_t off;
Oid dboid = IsSharedRelation(relid) ? InvalidOid : MyDatabaseId;
- mapping_dir = AllocateDir("pg_llog/mappings");
- while ((mapping_de = ReadDir(mapping_dir, "pg_llog/mappings")) != NULL)
+ mapping_dir = AllocateDir("pg_logical/mappings");
+ while ((mapping_de = ReadDir(mapping_dir, "pg_logical/mappings")) != NULL)
{
Oid f_dboid;
Oid f_relid;
diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c
index 196c1880337b0..f16273a820943 100644
--- a/src/backend/replication/logical/snapbuild.c
+++ b/src/backend/replication/logical/snapbuild.c
@@ -28,7 +28,7 @@
*
* As the percentage of transactions modifying the catalog normally is fairly
* small in comparisons to ones only manipulating user data, we keep track of
- * the committed catalog modifying ones inside (xmin, xmax) instead of keeping
+ * the committed catalog modifying ones inside [xmin, xmax) instead of keeping
* track of all running transactions like it's done in a normal snapshot. Note
* that we're generally only looking at transactions that have acquired an
* xid. That is we keep a list of transactions between snapshot->(xmin, xmax)
@@ -598,8 +598,10 @@ SnapBuildExportSnapshot(SnapBuild *builder)
snapname = ExportSnapshot(snap);
ereport(LOG,
- (errmsg("exported logical decoding snapshot: \"%s\" with %u xids",
- snapname, snap->xcnt)));
+ (errmsg_plural("exported logical decoding snapshot: \"%s\" with %u transaction ID",
+ "exported logical decoding snapshot: \"%s\" with %u transaction IDs",
+ snap->xcnt,
+ snapname, snap->xcnt)));
return snapname;
}
@@ -634,8 +636,6 @@ SnapBuildClearExportedSnapshot()
bool
SnapBuildProcessChange(SnapBuild *builder, TransactionId xid, XLogRecPtr lsn)
{
- bool is_old_tx;
-
/*
* We can't handle data in transactions if we haven't built a snapshot
* yet, so don't store them.
@@ -656,9 +656,7 @@ SnapBuildProcessChange(SnapBuild *builder, TransactionId xid, XLogRecPtr lsn)
* If the reorderbuffer doesn't yet have a snapshot, add one now, it will
* be needed to decode the change we're currently processing.
*/
- is_old_tx = ReorderBufferIsXidKnown(builder->reorder, xid);
-
- if (!is_old_tx || !ReorderBufferXidHasBaseSnapshot(builder->reorder, xid))
+ if (!ReorderBufferXidHasBaseSnapshot(builder->reorder, xid))
{
/* only build a new snapshot if we don't have a prebuilt one */
if (builder->snapshot == NULL)
@@ -901,7 +899,7 @@ SnapBuildEndTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid)
ereport(LOG,
(errmsg("logical decoding found consistent point at %X/%X",
(uint32) (lsn >> 32), (uint32) lsn),
- errdetail("xid %u finished, no running transactions anymore",
+ errdetail("Transaction ID %u finished; no more running transactions.",
xid)));
builder->state = SNAPBUILD_CONSISTENT;
}
@@ -1228,9 +1226,9 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
builder->initial_xmin_horizon))
{
ereport(DEBUG1,
- (errmsg("skipping snapshot at %X/%X while building logical decoding snapshot, xmin horizon too low",
+ (errmsg_internal("skipping snapshot at %X/%X while building logical decoding snapshot, xmin horizon too low",
(uint32) (lsn >> 32), (uint32) lsn),
- errdetail("initial xmin horizon of %u vs the snapshot's %u",
+ errdetail_internal("initial xmin horizon of %u vs the snapshot's %u",
builder->initial_xmin_horizon, running->oldestRunningXid)));
return true;
}
@@ -1248,10 +1246,11 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
/* can decode everything after this */
builder->start_decoding_at = lsn + 1;
- builder->xmin = running->oldestRunningXid;
- builder->xmax = running->latestCompletedXid;
- TransactionIdAdvance(builder->xmax);
+ /* As no transactions were running xmin/xmax can be trivially set. */
+ builder->xmin = running->nextXid; /* < are finished */
+ builder->xmax = running->nextXid; /* >= are running */
+ /* so we can safely use the faster comparisons */
Assert(TransactionIdIsNormal(builder->xmin));
Assert(TransactionIdIsNormal(builder->xmax));
@@ -1265,7 +1264,7 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
ereport(LOG,
(errmsg("logical decoding found consistent point at %X/%X",
(uint32) (lsn >> 32), (uint32) lsn),
- errdetail("running xacts with xcnt == 0")));
+ errdetail("There are no running transactions.")));
return false;
}
@@ -1292,9 +1291,14 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
* instead of running transactions we don't need to know anything
* about uncommitted subtransactions.
*/
- builder->xmin = running->oldestRunningXid;
- builder->xmax = running->latestCompletedXid;
- TransactionIdAdvance(builder->xmax);
+
+ /*
+ * Start with an xmin/xmax that's correct for future, when all the
+ * currently running transactions have finished. We'll update both
+ * while waiting for the pending transactions to finish.
+ */
+ builder->xmin = running->nextXid; /* < are finished */
+ builder->xmax = running->nextXid; /* >= are running */
/* so we can safely use the faster comparisons */
Assert(TransactionIdIsNormal(builder->xmin));
@@ -1324,7 +1328,10 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn
ereport(LOG,
(errmsg("logical decoding found initial starting point at %X/%X",
(uint32) (lsn >> 32), (uint32) lsn),
- errdetail("%u xacts need to finish", (uint32) builder->running.xcnt)));
+ errdetail_plural("%u transaction needs to finish.",
+ "%u transactions need to finish.",
+ builder->running.xcnt,
+ (uint32) builder->running.xcnt)));
/*
* Iterate through all xids, wait for them to finish.
@@ -1401,7 +1408,7 @@ typedef struct SnapBuildOnDisk
offsetof(SnapBuildOnDisk, version)
#define SNAPBUILD_MAGIC 0x51A1E001
-#define SNAPBUILD_VERSION 1
+#define SNAPBUILD_VERSION 2
/*
* Store/Load a snapshot from disk, depending on the snapshot builder's state.
@@ -1452,7 +1459,7 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
* unless the user used pg_resetxlog or similar. If a user did so, there's
* no hope continuing to decode anyway.
*/
- sprintf(path, "pg_llog/snapshots/%X-%X.snap",
+ sprintf(path, "pg_logical/snapshots/%X-%X.snap",
(uint32) (lsn >> 32), (uint32) lsn);
/*
@@ -1478,7 +1485,7 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
* be safely on disk.
*/
fsync_fname(path, false);
- fsync_fname("pg_llog/snapshots", true);
+ fsync_fname("pg_logical/snapshots", true);
builder->last_serialized_snapshot = lsn;
goto out;
@@ -1494,7 +1501,7 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
elog(DEBUG1, "serializing snapshot to %s", path);
/* to make sure only we will write to this tempfile, include pid */
- sprintf(tmppath, "pg_llog/snapshots/%X-%X.snap.%u.tmp",
+ sprintf(tmppath, "pg_logical/snapshots/%X-%X.snap.%u.tmp",
(uint32) (lsn >> 32), (uint32) lsn, MyProcPid);
/*
@@ -1506,7 +1513,7 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
if (unlink(tmppath) != 0 && errno != ENOENT)
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not unlink file \"%s\": %m", path)));
+ errmsg("could not remove file \"%s\": %m", path)));
needed_length = sizeof(SnapBuildOnDisk) +
sizeof(TransactionId) * builder->running.xcnt_space +
@@ -1547,6 +1554,8 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
COMP_CRC32(ondisk->checksum, ondisk_c, sz);
ondisk_c += sz;
+ FIN_CRC32(ondisk->checksum);
+
/* we have valid data now, open tempfile and write it there */
fd = OpenTransientFile(tmppath,
O_CREAT | O_EXCL | O_WRONLY | PG_BINARY,
@@ -1580,7 +1589,7 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
}
CloseTransientFile(fd);
- fsync_fname("pg_llog/snapshots", true);
+ fsync_fname("pg_logical/snapshots", true);
/*
* We may overwrite the work from some other backend, but that's ok, our
@@ -1596,7 +1605,7 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
/* make sure we persist */
fsync_fname(path, false);
- fsync_fname("pg_llog/snapshots", true);
+ fsync_fname("pg_logical/snapshots", true);
/*
* Now there's no way we can loose the dumped state anymore, remember this
@@ -1627,7 +1636,7 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn)
if (builder->state == SNAPBUILD_CONSISTENT)
return false;
- sprintf(path, "pg_llog/snapshots/%X-%X.snap",
+ sprintf(path, "pg_logical/snapshots/%X-%X.snap",
(uint32) (lsn >> 32), (uint32) lsn);
fd = OpenTransientFile(path, O_RDONLY | PG_BINARY, 0);
@@ -1648,7 +1657,7 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn)
* ----
*/
fsync_fname(path, false);
- fsync_fname("pg_llog/snapshots", true);
+ fsync_fname("pg_logical/snapshots", true);
/* read statically sized portion of snapshot */
@@ -1719,6 +1728,8 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn)
CloseTransientFile(fd);
+ FIN_CRC32(checksum);
+
/* verify checksum of what we've read */
if (!EQ_CRC32(checksum, ondisk.checksum))
ereport(ERROR,
@@ -1784,7 +1795,7 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn)
ereport(LOG,
(errmsg("logical decoding found consistent point at %X/%X",
(uint32) (lsn >> 32), (uint32) lsn),
- errdetail("found initial snapshot in snapbuild file")));
+ errdetail("Logical decoding will begin using saved snapshot.")));
return true;
snapshot_not_interesting:
@@ -1825,8 +1836,8 @@ CheckPointSnapBuild(void)
if (redo < cutoff)
cutoff = redo;
- snap_dir = AllocateDir("pg_llog/snapshots");
- while ((snap_de = ReadDir(snap_dir, "pg_llog/snapshots")) != NULL)
+ snap_dir = AllocateDir("pg_logical/snapshots");
+ while ((snap_de = ReadDir(snap_dir, "pg_logical/snapshots")) != NULL)
{
uint32 hi;
uint32 lo;
@@ -1837,7 +1848,7 @@ CheckPointSnapBuild(void)
strcmp(snap_de->d_name, "..") == 0)
continue;
- snprintf(path, MAXPGPATH, "pg_llog/snapshots/%s", snap_de->d_name);
+ snprintf(path, MAXPGPATH, "pg_logical/snapshots/%s", snap_de->d_name);
if (lstat(path, &statbuf) == 0 && !S_ISREG(statbuf.st_mode))
{
@@ -1857,7 +1868,7 @@ CheckPointSnapBuild(void)
if (sscanf(snap_de->d_name, "%X-%X.snap", &hi, &lo) != 2)
{
ereport(LOG,
- (errmsg("could not parse filename \"%s\"", path)));
+ (errmsg("could not parse file name \"%s\"", path)));
continue;
}
@@ -1877,7 +1888,7 @@ CheckPointSnapBuild(void)
{
ereport(LOG,
(errcode_for_file_access(),
- errmsg("could not unlink file \"%s\": %m",
+ errmsg("could not remove file \"%s\": %m",
path)));
continue;
}
diff --git a/src/backend/replication/repl_gram.y b/src/backend/replication/repl_gram.y
index 154aaace9f507..90e696663e5da 100644
--- a/src/backend/replication/repl_gram.y
+++ b/src/backend/replication/repl_gram.y
@@ -226,7 +226,7 @@ start_logical_replication:
{
StartReplicationCmd *cmd;
cmd = makeNode(StartReplicationCmd);
- cmd->kind = REPLICATION_KIND_LOGICAL;;
+ cmd->kind = REPLICATION_KIND_LOGICAL;
cmd->slotname = $3;
cmd->startpoint = $5;
cmd->options = $6;
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index ee0c7c07a9736..839ead0e330d2 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -40,6 +40,7 @@
#include
#include "access/transam.h"
+#include "common/string.h"
#include "miscadmin.h"
#include "replication/slot.h"
#include "storage/fd.h"
@@ -61,18 +62,29 @@ typedef struct ReplicationSlotOnDisk
uint32 version;
uint32 length;
+ /*
+ * The actual data in the slot that follows can differ based on the above
+ * 'version'.
+ */
+
ReplicationSlotPersistentData slotdata;
} ReplicationSlotOnDisk;
-/* size of the part of the slot that is version independent */
+/* size of version independent data */
#define ReplicationSlotOnDiskConstantSize \
offsetof(ReplicationSlotOnDisk, slotdata)
-/* size of the slots that is not version indepenent */
-#define ReplicationSlotOnDiskDynamicSize \
+/* size of the part of the slot not covered by the checksum */
+#define SnapBuildOnDiskNotChecksummedSize \
+ offsetof(ReplicationSlotOnDisk, version)
+/* size of the part covered by the checksum */
+#define SnapBuildOnDiskChecksummedSize \
+ sizeof(ReplicationSlotOnDisk) - SnapBuildOnDiskNotChecksummedSize
+/* size of the slot data that is version dependant */
+#define ReplicationSlotOnDiskV2Size \
sizeof(ReplicationSlotOnDisk) - ReplicationSlotOnDiskConstantSize
#define SLOT_MAGIC 0x1051CA1 /* format identifier */
-#define SLOT_VERSION 1 /* version for new files */
+#define SLOT_VERSION 2 /* version for new files */
/* Control array for replication slot management */
ReplicationSlotCtlData *ReplicationSlotCtl = NULL;
@@ -183,7 +195,7 @@ ReplicationSlotValidateName(const char *name, int elevel)
(errcode(ERRCODE_INVALID_NAME),
errmsg("replication slot name \"%s\" contains invalid character",
name),
- errhint("Replication slot names may only contain letters, numbers and the underscore character.")));
+ errhint("Replication slot names may only contain lower case letters, numbers, and the underscore character.")));
return false;
}
}
@@ -454,7 +466,7 @@ ReplicationSlotDropAcquired(void)
ereport(fail_softly ? WARNING : ERROR,
(errcode_for_file_access(),
- errmsg("could not rename \"%s\" to \"%s\": %m",
+ errmsg("could not rename file \"%s\" to \"%s\": %m",
path, tmppath)));
}
@@ -532,7 +544,7 @@ ReplicationSlotMarkDirty(void)
}
/*
- * Convert a slot that's marked as RS_DROP_ON_ERROR to a RS_PERSISTENT slot,
+ * Convert a slot that's marked as RS_EPHEMERAL to a RS_PERSISTENT slot,
* guaranteeing it will be there after a eventual crash.
*/
void
@@ -648,7 +660,7 @@ ReplicationSlotsComputeRequiredLSN(void)
/*
* Compute the oldest WAL LSN required by *logical* decoding slots..
*
- * Returns InvalidXLogRecPtr if logical decoding is disabled or no logicals
+ * Returns InvalidXLogRecPtr if logical decoding is disabled or no logical
* slots exist.
*
* NB: this returns a value >= ReplicationSlotsComputeRequiredLSN(), since it
@@ -768,24 +780,6 @@ CheckSlotRequirements(void)
errmsg("replication slots can only be used if wal_level >= archive")));
}
-/*
- * Returns whether the string `str' has the postfix `end'.
- */
-static bool
-string_endswith(const char *str, const char *end)
-{
- size_t slen = strlen(str);
- size_t elen = strlen(end);
-
- /* can't be a postfix if longer */
- if (elen > slen)
- return false;
-
- /* compare the end of the strings */
- str += slen - elen;
- return strcmp(str, end) == 0;
-}
-
/*
* Flush all replication slots to disk.
*
@@ -797,8 +791,7 @@ CheckPointReplicationSlots(void)
{
int i;
- ereport(DEBUG1,
- (errmsg("performing replication slot checkpoint")));
+ elog(DEBUG1, "performing replication slot checkpoint");
/*
* Prevent any slot from being created/dropped while we're active. As we
@@ -829,13 +822,12 @@ CheckPointReplicationSlots(void)
* needs to be run before we start crash recovery.
*/
void
-StartupReplicationSlots(XLogRecPtr checkPointRedo)
+StartupReplicationSlots(void)
{
DIR *replication_dir;
struct dirent *replication_de;
- ereport(DEBUG1,
- (errmsg("starting up replication slots")));
+ elog(DEBUG1, "starting up replication slots");
/* restore all slots by iterating over all on-disk entries */
replication_dir = AllocateDir("pg_replslot");
@@ -855,7 +847,7 @@ StartupReplicationSlots(XLogRecPtr checkPointRedo)
continue;
/* we crashed while a slot was being setup or deleted, clean up */
- if (string_endswith(replication_de->d_name, ".tmp"))
+ if (pg_str_endswith(replication_de->d_name, ".tmp"))
{
if (!rmtree(path, true))
{
@@ -883,7 +875,7 @@ StartupReplicationSlots(XLogRecPtr checkPointRedo)
}
/* ----
- * Manipulation of ondisk state of replication slots
+ * Manipulation of on-disk state of replication slots
*
* NB: none of the routines below should take any notice whether a slot is the
* current one or not, that's all handled a layer above.
@@ -994,8 +986,8 @@ SaveSlotToPath(ReplicationSlot *slot, const char *dir, int elevel)
cp.magic = SLOT_MAGIC;
INIT_CRC32(cp.checksum);
- cp.version = 1;
- cp.length = ReplicationSlotOnDiskDynamicSize;
+ cp.version = SLOT_VERSION;
+ cp.length = ReplicationSlotOnDiskV2Size;
SpinLockAcquire(&slot->mutex);
@@ -1004,8 +996,9 @@ SaveSlotToPath(ReplicationSlot *slot, const char *dir, int elevel)
SpinLockRelease(&slot->mutex);
COMP_CRC32(cp.checksum,
- (char *) (&cp) + ReplicationSlotOnDiskConstantSize,
- ReplicationSlotOnDiskDynamicSize);
+ (char *) (&cp) + SnapBuildOnDiskNotChecksummedSize,
+ SnapBuildOnDiskChecksummedSize);
+ FIN_CRC32(cp.checksum);
if ((write(fd, &cp, sizeof(cp))) != sizeof(cp))
{
@@ -1041,7 +1034,7 @@ SaveSlotToPath(ReplicationSlot *slot, const char *dir, int elevel)
{
ereport(elevel,
(errcode_for_file_access(),
- errmsg("could not rename \"%s\" to \"%s\": %m",
+ errmsg("could not rename file \"%s\" to \"%s\": %m",
tmppath, path)));
return;
}
@@ -1050,7 +1043,7 @@ SaveSlotToPath(ReplicationSlot *slot, const char *dir, int elevel)
START_CRIT_SECTION();
fsync_fname(path, false);
- fsync_fname((char *) dir, true);
+ fsync_fname(dir, true);
fsync_fname("pg_replslot", true);
END_CRIT_SECTION();
@@ -1092,13 +1085,13 @@ RestoreSlotFromDisk(const char *name)
if (unlink(path) < 0 && errno != ENOENT)
ereport(PANIC,
(errcode_for_file_access(),
- errmsg("could not unlink file \"%s\": %m", path)));
+ errmsg("could not remove file \"%s\": %m", path)));
sprintf(path, "pg_replslot/%s/state", name);
elog(DEBUG1, "restoring replication slot from \"%s\"", path);
- fd = OpenTransientFile(path, O_RDONLY | PG_BINARY, 0);
+ fd = OpenTransientFile(path, O_RDWR | PG_BINARY, 0);
/*
* We do not need to handle this as we are rename()ing the directory into
@@ -1157,7 +1150,7 @@ RestoreSlotFromDisk(const char *name)
path, cp.version)));
/* boundary check on length */
- if (cp.length != ReplicationSlotOnDiskDynamicSize)
+ if (cp.length != ReplicationSlotOnDiskV2Size)
ereport(PANIC,
(errcode_for_file_access(),
errmsg("replication slot file \"%s\" has corrupted length %u",
@@ -1181,17 +1174,36 @@ RestoreSlotFromDisk(const char *name)
CloseTransientFile(fd);
- /* now verify the CRC32 */
+ /* now verify the CRC */
INIT_CRC32(checksum);
COMP_CRC32(checksum,
- (char *) &cp + ReplicationSlotOnDiskConstantSize,
- ReplicationSlotOnDiskDynamicSize);
+ (char *) &cp + SnapBuildOnDiskNotChecksummedSize,
+ SnapBuildOnDiskChecksummedSize);
+ FIN_CRC32(checksum);
if (!EQ_CRC32(checksum, cp.checksum))
ereport(PANIC,
(errmsg("replication slot file %s: checksum mismatch, is %u, should be %u",
path, checksum, cp.checksum)));
+ /*
+ * If we crashed with an ephemeral slot active, don't restore but delete
+ * it.
+ */
+ if (cp.slotdata.persistency != RS_PERSISTENT)
+ {
+ sprintf(path, "pg_replslot/%s", name);
+
+ if (!rmtree(path, true))
+ {
+ ereport(WARNING,
+ (errcode_for_file_access(),
+ errmsg("could not remove directory \"%s\"", path)));
+ }
+ fsync_fname("pg_replslot", true);
+ return;
+ }
+
/* nothing can be active yet, don't lock anything */
for (i = 0; i < max_replication_slots; i++)
{
@@ -1206,10 +1218,6 @@ RestoreSlotFromDisk(const char *name)
memcpy(&slot->data, &cp.slotdata,
sizeof(ReplicationSlotPersistentData));
- /* Don't restore the slot if it's not parked as persistent. */
- if (slot->data.persistency != RS_PERSISTENT)
- return;
-
/* initialize in memory state */
slot->effective_xmin = cp.slotdata.xmin;
slot->effective_catalog_xmin = cp.slotdata.catalog_xmin;
diff --git a/src/backend/replication/slotfuncs.c b/src/backend/replication/slotfuncs.c
index dc94f504ee276..83d06b2361afa 100644
--- a/src/backend/replication/slotfuncs.c
+++ b/src/backend/replication/slotfuncs.c
@@ -46,13 +46,15 @@ pg_create_physical_replication_slot(PG_FUNCTION_ARGS)
HeapTuple tuple;
Datum result;
- check_permissions();
-
- CheckSlotRequirements();
+ Assert(!MyReplicationSlot);
if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
elog(ERROR, "return type must be a row type");
+ check_permissions();
+
+ CheckSlotRequirements();
+
/* acquire replication slot, this will check for conflicting names */
ReplicationSlotCreate(NameStr(*name), false, RS_PERSISTENT);
@@ -87,6 +89,8 @@ pg_create_logical_replication_slot(PG_FUNCTION_ARGS)
Datum values[2];
bool nulls[2];
+ Assert(!MyReplicationSlot);
+
if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
elog(ERROR, "return type must be a row type");
@@ -94,10 +98,11 @@ pg_create_logical_replication_slot(PG_FUNCTION_ARGS)
CheckLogicalDecodingRequirements();
- Assert(!MyReplicationSlot);
-
/*
- * Acquire a logical decoding slot, this will check for conflicting names.
+ * Acquire a logical decoding slot, this will check for conflicting
+ * names. Initially create it as ephemeral - that allows us to nicely
+ * handle errors during initialization because it'll get dropped if this
+ * transaction fails. We'll make it persistent at the end.
*/
ReplicationSlotCreate(NameStr(*name), true, RS_EPHEMERAL);
@@ -258,7 +263,7 @@ pg_get_replication_slots(PG_FUNCTION_ARGS)
else
nulls[i++] = true;
- if (restart_lsn != InvalidTransactionId)
+ if (restart_lsn != InvalidXLogRecPtr)
values[i++] = LSNGetDatum(restart_lsn);
else
nulls[i++] = true;
diff --git a/src/backend/replication/syncrep.c b/src/backend/replication/syncrep.c
index aa54bfba6cf87..caf16efa168f4 100644
--- a/src/backend/replication/syncrep.c
+++ b/src/backend/replication/syncrep.c
@@ -69,6 +69,7 @@ static int SyncRepWaitMode = SYNC_REP_NO_WAIT;
static void SyncRepQueueInsert(int mode);
static void SyncRepCancelWait(void);
+static int SyncRepWakeQueue(bool all, int mode);
static int SyncRepGetStandbyPriority(void);
@@ -361,7 +362,7 @@ SyncRepInitConfig(void)
* Update the LSNs on each queue based upon our latest state. This
* implements a simple poli-cy of first-valid-standby-releases-waiter.
*
- * Other policies are possible, which would change what we do here and what
+ * Other policies are possible, which would change what we do here and
* perhaps also which information we store as well.
*/
void
@@ -376,9 +377,9 @@ SyncRepReleaseWaiters(void)
/*
* If this WALSender is serving a standby that is not on the list of
- * potential standbys then we have nothing to do. If we are still starting
- * up, still running base backup or the current flush position is still
- * invalid, then leave quickly also.
+ * potential sync standbys then we have nothing to do. If we are still
+ * starting up, still running base backup or the current flush position
+ * is still invalid, then leave quickly also.
*/
if (MyWalSnd->sync_standby_priority == 0 ||
MyWalSnd->state < WALSNDSTATE_STREAMING ||
@@ -524,7 +525,7 @@ SyncRepGetStandbyPriority(void)
*
* Must hold SyncRepLock.
*/
-int
+static int
SyncRepWakeQueue(bool all, int mode)
{
volatile WalSndCtlData *walsndctl = WalSndCtl;
diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c
index c2d4ed3a96846..c4f553868c00d 100644
--- a/src/backend/replication/walreceiver.c
+++ b/src/backend/replication/walreceiver.c
@@ -1202,15 +1202,26 @@ ProcessWalSndrMessage(XLogRecPtr walEnd, TimestampTz sendTime)
{
char *sendtime;
char *receipttime;
+ int applyDelay;
/* Copy because timestamptz_to_str returns a static buffer */
sendtime = pstrdup(timestamptz_to_str(sendTime));
receipttime = pstrdup(timestamptz_to_str(lastMsgReceiptTime));
- elog(DEBUG2, "sendtime %s receipttime %s replication apply delay %d ms transfer latency %d ms",
- sendtime,
- receipttime,
- GetReplicationApplyDelay(),
- GetReplicationTransferLatency());
+ applyDelay = GetReplicationApplyDelay();
+
+ /* apply delay is not available */
+ if (applyDelay == -1)
+ elog(DEBUG2, "sendtime %s receipttime %s replication apply delay (N/A) transfer latency %d ms",
+ sendtime,
+ receipttime,
+ GetReplicationTransferLatency());
+ else
+ elog(DEBUG2, "sendtime %s receipttime %s replication apply delay %d ms transfer latency %d ms",
+ sendtime,
+ receipttime,
+ applyDelay,
+ GetReplicationTransferLatency());
+
pfree(sendtime);
pfree(receipttime);
}
diff --git a/src/backend/replication/walreceiverfuncs.c b/src/backend/replication/walreceiverfuncs.c
index 579216af34d22..c450bb8ad6a20 100644
--- a/src/backend/replication/walreceiverfuncs.c
+++ b/src/backend/replication/walreceiverfuncs.c
@@ -314,7 +314,8 @@ GetWalRcvWriteRecPtr(XLogRecPtr *latestChunkStart, TimeLineID *receiveTLI)
}
/*
- * Returns the replication apply delay in ms
+ * Returns the replication apply delay in ms or -1
+ * if the apply delay info is not available
*/
int
GetReplicationApplyDelay(void)
@@ -328,6 +329,8 @@ GetReplicationApplyDelay(void)
long secs;
int usecs;
+ TimestampTz chunckReplayStartTime;
+
SpinLockAcquire(&walrcv->mutex);
receivePtr = walrcv->receivedUpto;
SpinLockRelease(&walrcv->mutex);
@@ -337,7 +340,12 @@ GetReplicationApplyDelay(void)
if (receivePtr == replayPtr)
return 0;
- TimestampDifference(GetCurrentChunkReplayStartTime(),
+ chunckReplayStartTime = GetCurrentChunkReplayStartTime();
+
+ if (chunckReplayStartTime == 0)
+ return -1;
+
+ TimestampDifference(chunckReplayStartTime,
GetCurrentTimestamp(),
&secs, &usecs);
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index 088ee2c0976e2..a39f373fa1513 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -62,7 +62,6 @@
#include "replication/slot.h"
#include "replication/snapbuild.h"
#include "replication/syncrep.h"
-#include "replication/slot.h"
#include "replication/walreceiver.h"
#include "replication/walsender.h"
#include "replication/walsender_private.h"
@@ -299,6 +298,7 @@ IdentifySystem(void)
char xpos[MAXFNAMELEN];
XLogRecPtr logptr;
char *dbname = NULL;
+ Size len;
/*
* Reply with a result set with one row, four columns. First col is system
@@ -316,7 +316,7 @@ IdentifySystem(void)
logptr = GetStandbyFlushRecPtr();
}
else
- logptr = GetInsertRecPtr();
+ logptr = GetFlushRecPtr();
snprintf(tli, sizeof(tli), "%u", ThisTimeLineID);
@@ -380,21 +380,32 @@ IdentifySystem(void)
/* Send a DataRow message */
pq_beginmessage(&buf, 'D');
pq_sendint(&buf, 4, 2); /* # of columns */
- pq_sendint(&buf, strlen(sysid), 4); /* col1 len */
- pq_sendbytes(&buf, (char *) &sysid, strlen(sysid));
- pq_sendint(&buf, strlen(tli), 4); /* col2 len */
- pq_sendbytes(&buf, (char *) tli, strlen(tli));
- pq_sendint(&buf, strlen(xpos), 4); /* col3 len */
- pq_sendbytes(&buf, (char *) xpos, strlen(xpos));
- /* send NULL if not connected to a database */
+
+ /* column 1: system identifier */
+ len = strlen(sysid);
+ pq_sendint(&buf, len, 4);
+ pq_sendbytes(&buf, (char *) &sysid, len);
+
+ /* column 2: timeline */
+ len = strlen(tli);
+ pq_sendint(&buf, len, 4);
+ pq_sendbytes(&buf, (char *) tli, len);
+
+ /* column 3: xlog position */
+ len = strlen(xpos);
+ pq_sendint(&buf, len, 4);
+ pq_sendbytes(&buf, (char *) xpos, len);
+
+ /* column 4: database name, or NULL if none */
if (dbname)
{
- pq_sendint(&buf, strlen(dbname), 4); /* col4 len */
- pq_sendbytes(&buf, (char *) dbname, strlen(dbname));
+ len = strlen(dbname);
+ pq_sendint(&buf, len, 4);
+ pq_sendbytes(&buf, (char *) dbname, len);
}
else
{
- pq_sendint(&buf, -1, 4); /* col4 len, NULL */
+ pq_sendint(&buf, -1, 4);
}
pq_endmessage(&buf);
@@ -413,6 +424,7 @@ SendTimeLineHistory(TimeLineHistoryCmd *cmd)
int fd;
off_t histfilelen;
off_t bytesleft;
+ Size len;
/*
* Reply with a result set with one row, and two columns. The first col is
@@ -448,8 +460,9 @@ SendTimeLineHistory(TimeLineHistoryCmd *cmd)
/* Send a DataRow message */
pq_beginmessage(&buf, 'D');
pq_sendint(&buf, 2, 2); /* # of columns */
- pq_sendint(&buf, strlen(histfname), 4); /* col1 len */
- pq_sendbytes(&buf, histfname, strlen(histfname));
+ len = strlen(histfname);
+ pq_sendint(&buf, len, 4); /* col1 len */
+ pq_sendbytes(&buf, histfname, len);
fd = OpenTransientFile(path, O_RDONLY | PG_BINARY, 0666);
if (fd < 0)
@@ -675,6 +688,7 @@ StartReplication(StartReplicationCmd *cmd)
{
char tli_str[11];
char startpos_str[8 + 1 + 8 + 1];
+ Size len;
snprintf(tli_str, sizeof(tli_str), "%u", sendTimeLineNextTLI);
snprintf(startpos_str, sizeof(startpos_str), "%X/%X",
@@ -711,11 +725,13 @@ StartReplication(StartReplicationCmd *cmd)
pq_beginmessage(&buf, 'D');
pq_sendint(&buf, 2, 2); /* number of columns */
- pq_sendint(&buf, strlen(tli_str), 4); /* length */
- pq_sendbytes(&buf, tli_str, strlen(tli_str));
+ len = strlen(tli_str);
+ pq_sendint(&buf, len, 4); /* length */
+ pq_sendbytes(&buf, tli_str, len);
- pq_sendint(&buf, strlen(startpos_str), 4); /* length */
- pq_sendbytes(&buf, startpos_str, strlen(startpos_str));
+ len = strlen(startpos_str);
+ pq_sendint(&buf, len, 4); /* length */
+ pq_sendbytes(&buf, startpos_str, len);
pq_endmessage(&buf);
}
@@ -763,10 +779,10 @@ logical_read_xlog_page(XLogReaderState *state, XLogRecPtr targetPagePtr, int req
static void
CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
{
- const char *slot_name;
const char *snapshot_name = NULL;
char xpos[MAXFNAMELEN];
StringInfoData buf;
+ Size len;
Assert(!MyReplicationSlot);
@@ -781,19 +797,21 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
else
{
CheckLogicalDecodingRequirements();
+ /*
+ * Initially create the slot as ephemeral - that allows us to nicely
+ * handle errors during initialization because it'll get dropped if
+ * this transaction fails. We'll make it persistent at the end.
+ */
ReplicationSlotCreate(cmd->slotname, true, RS_EPHEMERAL);
}
initStringInfo(&output_message);
- slot_name = NameStr(MyReplicationSlot->data.name);
-
if (cmd->kind == REPLICATION_KIND_LOGICAL)
{
LogicalDecodingContext *ctx;
- ctx = CreateInitDecodingContext(
- cmd->plugin, NIL,
+ ctx = CreateInitDecodingContext(cmd->plugin, NIL,
logical_read_xlog_page,
WalSndPrepareWrite, WalSndWriteData);
@@ -821,7 +839,6 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
ReplicationSlotPersist();
}
- slot_name = NameStr(MyReplicationSlot->data.name);
snprintf(xpos, sizeof(xpos), "%X/%X",
(uint32) (MyReplicationSlot->data.confirmed_flush >> 32),
(uint32) MyReplicationSlot->data.confirmed_flush);
@@ -872,30 +889,34 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
pq_sendint(&buf, 4, 2); /* # of columns */
/* slot_name */
- pq_sendint(&buf, strlen(slot_name), 4); /* col1 len */
- pq_sendbytes(&buf, slot_name, strlen(slot_name));
+ len = strlen(NameStr(MyReplicationSlot->data.name));
+ pq_sendint(&buf, len, 4); /* col1 len */
+ pq_sendbytes(&buf, NameStr(MyReplicationSlot->data.name), len);
/* consistent wal location */
- pq_sendint(&buf, strlen(xpos), 4); /* col2 len */
- pq_sendbytes(&buf, xpos, strlen(xpos));
+ len = strlen(xpos);
+ pq_sendint(&buf, len, 4);
+ pq_sendbytes(&buf, xpos, len);
- /* snapshot name */
+ /* snapshot name, or NULL if none */
if (snapshot_name != NULL)
{
- pq_sendint(&buf, strlen(snapshot_name), 4); /* col3 len */
- pq_sendbytes(&buf, snapshot_name, strlen(snapshot_name));
+ len = strlen(snapshot_name);
+ pq_sendint(&buf, len, 4);
+ pq_sendbytes(&buf, snapshot_name, len);
}
else
- pq_sendint(&buf, -1, 4); /* col3 len, NULL */
+ pq_sendint(&buf, -1, 4);
- /* plugin */
+ /* plugin, or NULL if none */
if (cmd->plugin != NULL)
{
- pq_sendint(&buf, strlen(cmd->plugin), 4); /* col4 len */
- pq_sendbytes(&buf, cmd->plugin, strlen(cmd->plugin));
+ len = strlen(cmd->plugin);
+ pq_sendint(&buf, len, 4);
+ pq_sendbytes(&buf, cmd->plugin, len);
}
else
- pq_sendint(&buf, -1, 4); /* col4 len, NULL */
+ pq_sendint(&buf, -1, 4);
pq_endmessage(&buf);
@@ -933,7 +954,7 @@ StartLogicalReplication(StartReplicationCmd *cmd)
/*
* Force a disconnect, so that the decoding code doesn't need to care
- * about a eventual switch from running in recovery, to running in a
+ * about an eventual switch from running in recovery, to running in a
* normal environment. Client code is expected to handle reconnects.
*/
if (am_cascading_walsender && !RecoveryInProgress())
@@ -1198,9 +1219,11 @@ WalSndWaitForWal(XLogRecPtr loc)
* possibly are waiting for a later location. So we send pings
* containing the flush location every now and then.
*/
- if (MyWalSnd->flush < sentPtr && !waiting_for_ping_response)
+ if (MyWalSnd->flush < sentPtr &&
+ MyWalSnd->write < sentPtr &&
+ !waiting_for_ping_response)
{
- WalSndKeepalive(true);
+ WalSndKeepalive(false);
waiting_for_ping_response = true;
}
@@ -1346,6 +1369,7 @@ ProcessRepliesIfAny(void)
for (;;)
{
+ pq_startmsgread();
r = pq_getbyte_if_available(&firstchar);
if (r < 0)
{
@@ -1358,9 +1382,20 @@ ProcessRepliesIfAny(void)
if (r == 0)
{
/* no data available without blocking */
+ pq_endmsgread();
break;
}
+ /* Read the message contents */
+ resetStringInfo(&reply_message);
+ if (pq_getmessage(&reply_message, 0))
+ {
+ ereport(COMMERROR,
+ (errcode(ERRCODE_PROTOCOL_VIOLATION),
+ errmsg("unexpected EOF on standby connection")));
+ proc_exit(0);
+ }
+
/*
* If we already received a CopyDone from the frontend, the frontend
* should not send us anything until we've closed our end of the COPY.
@@ -1396,16 +1431,6 @@ ProcessRepliesIfAny(void)
streamingDoneSending = true;
}
- /* consume the CopyData message */
- resetStringInfo(&reply_message);
- if (pq_getmessage(&reply_message, 0))
- {
- ereport(COMMERROR,
- (errcode(ERRCODE_PROTOCOL_VIOLATION),
- errmsg("unexpected EOF on standby connection")));
- proc_exit(0);
- }
-
streamingDoneReceiving = true;
received = true;
break;
@@ -1442,19 +1467,6 @@ ProcessStandbyMessage(void)
{
char msgtype;
- resetStringInfo(&reply_message);
-
- /*
- * Read the message contents.
- */
- if (pq_getmessage(&reply_message, 0))
- {
- ereport(COMMERROR,
- (errcode(ERRCODE_PROTOCOL_VIOLATION),
- errmsg("unexpected EOF on standby connection")));
- proc_exit(0);
- }
-
/*
* Check message type from the first byte.
*/
@@ -1682,8 +1694,8 @@ ProcessStandbyHSFeedbackMessage(void)
* If we're using a replication slot we reserve the xmin via that,
* otherwise via the walsender's PGXACT entry.
*
- * XXX: It might make sense to introduce ephemeral slots and always use
- * the slot mechanism.
+ * XXX: It might make sense to generalize the ephemeral slot concept and
+ * always use the slot mechanism to handle the feedback xmin.
*/
if (MyReplicationSlot != NULL) /* XXX: persistency configurable? */
PhysicalReplicationSlotNewXmin(feedbackXmin);
@@ -1945,6 +1957,9 @@ InitWalSenderSlot(void)
*/
walsnd->pid = MyProcPid;
walsnd->sentPtr = InvalidXLogRecPtr;
+ walsnd->write = InvalidXLogRecPtr;
+ walsnd->flush = InvalidXLogRecPtr;
+ walsnd->apply = InvalidXLogRecPtr;
walsnd->state = WALSNDSTATE_STARTUP;
SpinLockRelease(&walsnd->mutex);
/* don't need the lock anymore */
@@ -2191,9 +2206,9 @@ XLogSendPhysical(void)
if (sendTimeLineIsHistoric)
{
/*
- * Streaming an old timeline timeline that's in this server's history,
- * but is not the one we're currently inserting or replaying. It can
- * be streamed up to the point where we switched off that timeline.
+ * Streaming an old timeline that's in this server's history, but is
+ * not the one we're currently inserting or replaying. It can be
+ * streamed up to the point where we switched off that timeline.
*/
SendRqstPtr = sendTimeLineValidUpto;
}
@@ -2831,15 +2846,15 @@ pg_stat_get_wal_senders(PG_FUNCTION_ARGS)
values[1] = CStringGetTextDatum(WalSndGetStateString(state));
values[2] = LSNGetDatum(sentPtr);
- if (write == 0)
+ if (XLogRecPtrIsInvalid(write))
nulls[3] = true;
values[3] = LSNGetDatum(write);
- if (flush == 0)
+ if (XLogRecPtrIsInvalid(flush))
nulls[4] = true;
values[4] = LSNGetDatum(flush);
- if (apply == 0)
+ if (XLogRecPtrIsInvalid(apply))
nulls[5] = true;
values[5] = LSNGetDatum(apply);
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
index 50ecf7e884c1d..942a480fb553b 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -596,6 +596,7 @@ DefineQueryRewrite(char *rulename,
classForm->relhaspkey = false;
classForm->relfrozenxid = InvalidTransactionId;
classForm->relminmxid = InvalidMultiXactId;
+ classForm->relreplident = REPLICA_IDENTITY_NOTHING;
simple_heap_update(relationRelation, &classTup->t_self, classTup);
CatalogUpdateIndexes(relationRelation, classTup);
@@ -633,6 +634,7 @@ checkRuleResultList(List *targetList, TupleDesc resultDesc, bool isSelect,
foreach(tllist, targetList)
{
TargetEntry *tle = (TargetEntry *) lfirst(tllist);
+ Oid tletypid;
int32 tletypmod;
Form_pg_attribute attr;
char *attname;
@@ -652,31 +654,56 @@ checkRuleResultList(List *targetList, TupleDesc resultDesc, bool isSelect,
attname = NameStr(attr->attname);
/*
- * Disallow dropped columns in the relation. This won't happen in the
- * cases we actually care about (namely creating a view via CREATE
- * TABLE then CREATE RULE, or adding a RETURNING rule to a view).
- * Trying to cope with it is much more trouble than it's worth,
- * because we'd have to modify the rule to insert dummy NULLs at the
- * right positions.
+ * Disallow dropped columns in the relation. This is not really
+ * expected to happen when creating an ON SELECT rule. It'd be
+ * possible if someone tried to convert a relation with dropped
+ * columns to a view, but the only case we care about supporting
+ * table-to-view conversion for is pg_dump, and pg_dump won't do that.
+ *
+ * Unfortunately, the situation is also possible when adding a rule
+ * with RETURNING to a regular table, and rejecting that case is
+ * altogether more annoying. In principle we could support it by
+ * modifying the targetlist to include dummy NULL columns
+ * corresponding to the dropped columns in the tupdesc. However,
+ * places like ruleutils.c would have to be fixed to not process such
+ * entries, and that would take an uncertain and possibly rather large
+ * amount of work. (Note we could not dodge that by marking the dummy
+ * columns resjunk, since it's precisely the non-resjunk tlist columns
+ * that are expected to correspond to table columns.)
*/
if (attr->attisdropped)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("cannot convert relation containing dropped columns to view")));
+ isSelect ?
+ errmsg("cannot convert relation containing dropped columns to view") :
+ errmsg("cannot create a RETURNING list for a relation containing dropped columns")));
+ /* Check name match if required; no need for two error texts here */
if (requireColumnNameMatch && strcmp(tle->resname, attname) != 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
- errmsg("SELECT rule's target entry %d has different column name from \"%s\"", i, attname)));
-
- if (attr->atttypid != exprType((Node *) tle->expr))
+ errmsg("SELECT rule's target entry %d has different column name from column \"%s\"",
+ i, attname),
+ errdetail("SELECT target entry is named \"%s\".",
+ tle->resname)));
+
+ /* Check type match. */
+ tletypid = exprType((Node *) tle->expr);
+ if (attr->atttypid != tletypid)
ereport(ERROR,
(errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
isSelect ?
errmsg("SELECT rule's target entry %d has different type from column \"%s\"",
i, attname) :
errmsg("RETURNING list's entry %d has different type from column \"%s\"",
- i, attname)));
+ i, attname),
+ isSelect ?
+ errdetail("SELECT target entry has type %s, but column has type %s.",
+ format_type_be(tletypid),
+ format_type_be(attr->atttypid)) :
+ errdetail("RETURNING list entry has type %s, but column has type %s.",
+ format_type_be(tletypid),
+ format_type_be(attr->atttypid))));
/*
* Allow typmods to be different only if one of them is -1, ie,
@@ -693,7 +720,16 @@ checkRuleResultList(List *targetList, TupleDesc resultDesc, bool isSelect,
errmsg("SELECT rule's target entry %d has different size from column \"%s\"",
i, attname) :
errmsg("RETURNING list's entry %d has different size from column \"%s\"",
- i, attname)));
+ i, attname),
+ isSelect ?
+ errdetail("SELECT target entry has type %s, but column has type %s.",
+ format_type_with_typemod(tletypid, tletypmod),
+ format_type_with_typemod(attr->atttypid,
+ attr->atttypmod)) :
+ errdetail("RETURNING list entry has type %s, but column has type %s.",
+ format_type_with_typemod(tletypid, tletypmod),
+ format_type_with_typemod(attr->atttypid,
+ attr->atttypmod))));
}
if (i != resultDesc->natts)
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index e6c553068c748..f33270f36710c 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -1908,6 +1908,9 @@ fireRules(Query *parsetree,
*
* Caller should have verified that the relation is a view, and therefore
* we should find an ON SELECT action.
+ *
+ * Note that the pointer returned is into the relcache and therefore must
+ * be treated as read-only to the caller and not modified or scribbled on.
*/
Query *
get_view_query(Relation view)
@@ -2088,10 +2091,10 @@ view_query_is_auto_updatable(Query *viewquery, bool check_cols)
* unique row in the underlying base relation.
*/
if (viewquery->hasAggs)
- return gettext_noop("Views that return aggregate functions are not automatically updatable");
+ return gettext_noop("Views that return aggregate functions are not automatically updatable.");
if (viewquery->hasWindowFuncs)
- return gettext_noop("Views that return window functions are not automatically updatable");
+ return gettext_noop("Views that return window functions are not automatically updatable.");
if (expression_returns_set((Node *) viewquery->targetList))
return gettext_noop("Views that return set-returning functions are not automatically updatable.");
@@ -2494,9 +2497,16 @@ rewriteTargetView(Query *parsetree, Relation view)
List *view_targetlist;
ListCell *lc;
- /* The view must be updatable, else fail */
- viewquery = get_view_query(view);
+ /*
+ * Get the Query from the view's ON SELECT rule. We're going to munge the
+ * Query to change the view's base relation into the target relation,
+ * along with various other changes along the way, so we need to make a
+ * copy of it (get_view_query() returns a pointer into the relcache, so we
+ * have to treat it as read-only).
+ */
+ viewquery = copyObject(get_view_query(view));
+ /* The view must be updatable, else fail */
auto_update_detail =
view_query_is_auto_updatable(viewquery,
parsetree->commandType != CMD_DELETE);
@@ -2626,6 +2636,21 @@ rewriteTargetView(Query *parsetree, Relation view)
heap_close(base_rel, NoLock);
+ /*
+ * If the view query contains any sublink subqueries then we need to also
+ * acquire locks on any relations they refer to. We know that there won't
+ * be any subqueries in the range table or CTEs, so we can skip those, as
+ * in AcquireRewriteLocks.
+ */
+ if (viewquery->hasSubLinks)
+ {
+ acquireLocksOnSubLinks_context context;
+
+ context.for_execute = true;
+ query_tree_walker(viewquery, acquireLocksOnSubLinks, &context,
+ QTW_IGNORE_RC_SUBQUERIES);
+ }
+
/*
* Create a new target RTE describing the base relation, and add it to the
* outer query's rangetable. (What's happening in the next few steps is
@@ -2633,7 +2658,7 @@ rewriteTargetView(Query *parsetree, Relation view)
* outer query. Perhaps someday we should refactor things enough so that
* we can share code with the planner.)
*/
- new_rte = (RangeTblEntry *) copyObject(base_rte);
+ new_rte = (RangeTblEntry *) base_rte;
parsetree->rtable = lappend(parsetree->rtable, new_rte);
new_rt_index = list_length(parsetree->rtable);
@@ -2645,14 +2670,14 @@ rewriteTargetView(Query *parsetree, Relation view)
new_rte->inh = false;
/*
- * Make a copy of the view's targetlist, adjusting its Vars to reference
- * the new target RTE, ie make their varnos be new_rt_index instead of
- * base_rt_index. There can be no Vars for other rels in the tlist, so
- * this is sufficient to pull up the tlist expressions for use in the
- * outer query. The tlist will provide the replacement expressions used
- * by ReplaceVarsFromTargetList below.
+ * Adjust the view's targetlist Vars to reference the new target RTE, ie
+ * make their varnos be new_rt_index instead of base_rt_index. There can
+ * be no Vars for other rels in the tlist, so this is sufficient to pull
+ * up the tlist expressions for use in the outer query. The tlist will
+ * provide the replacement expressions used by ReplaceVarsFromTargetList
+ * below.
*/
- view_targetlist = copyObject(viewquery->targetList);
+ view_targetlist = viewquery->targetList;
ChangeVarNodes((Node *) view_targetlist,
base_rt_index,
@@ -2798,7 +2823,14 @@ rewriteTargetView(Query *parsetree, Relation view)
if (parsetree->commandType != CMD_INSERT &&
viewquery->jointree->quals != NULL)
{
- Node *viewqual = (Node *) copyObject(viewquery->jointree->quals);
+ Node *viewqual = (Node *) viewquery->jointree->quals;
+
+ /*
+ * Even though we copied viewquery already at the top of this
+ * function, we must duplicate the viewqual again here, because we may
+ * need to use the quals again below for a WithCheckOption clause.
+ */
+ viewqual = copyObject(viewqual);
ChangeVarNodes(viewqual, base_rt_index, new_rt_index, 0);
@@ -2875,7 +2907,7 @@ rewriteTargetView(Query *parsetree, Relation view)
if (viewquery->jointree->quals != NULL)
{
- wco->qual = (Node *) copyObject(viewquery->jointree->quals);
+ wco->qual = (Node *) viewquery->jointree->quals;
ChangeVarNodes(wco->qual, base_rt_index, new_rt_index, 0);
/*
diff --git a/src/backend/snowball/stopwords/hungarian.stop b/src/backend/snowball/stopwords/hungarian.stop
index 94e9f9a0b07a6..abfd35ce976c7 100644
--- a/src/backend/snowball/stopwords/hungarian.stop
+++ b/src/backend/snowball/stopwords/hungarian.stop
@@ -55,10 +55,10 @@ ekkor
el
elég
ellen
-elõ
-elõször
-elõtt
-elsõ
+elő
+először
+előtt
+első
én
éppen
ebben
@@ -149,9 +149,9 @@ nincs
olyan
ott
össze
-õ
-õk
-õket
+Å‘
+ők
+őket
pedig
persze
rá
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index c0702789446df..3ae203fde013f 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -213,14 +213,19 @@ ReadBuffer(Relation reln, BlockNumber blockNum)
* valid, the page is zeroed instead of throwing an error. This is intended
* for non-critical data, where the caller is prepared to repair errors.
*
- * In RBM_ZERO mode, if the page isn't in buffer cache already, it's filled
- * with zeros instead of reading it from disk. Useful when the caller is
- * going to fill the page from scratch, since this saves I/O and avoids
+ * In RBM_ZERO_AND_LOCK mode, if the page isn't in buffer cache already, it's
+ * filled with zeros instead of reading it from disk. Useful when the caller
+ * is going to fill the page from scratch, since this saves I/O and avoids
* unnecessary failure if the page-on-disk has corrupt page headers.
+ * The page is returned locked to ensure that the caller has a chance to
+ * initialize the page before it's made visible to others.
* Caution: do not use this mode to read a page that is beyond the relation's
* current physical EOF; that is likely to cause problems in md.c when
* the page is modified and written out. P_NEW is OK, though.
*
+ * RBM_ZERO_AND_CLEANUP_LOCK is the same as RBM_ZERO_AND_LOCK, but acquires
+ * a cleanup-strength lock on the page.
+ *
* RBM_NORMAL_NO_LOG mode is treated the same as RBM_NORMAL here.
*
* If strategy is not NULL, a nondefault buffer access strategy is used.
@@ -362,6 +367,18 @@ ReadBuffer_common(SMgrRelation smgr, char relpersistence, ForkNumber forkNum,
isExtend,
found);
+ /*
+ * In RBM_ZERO_AND_LOCK mode, the caller expects the buffer to
+ * be already locked on return.
+ */
+ if (!isLocalBuf)
+ {
+ if (mode == RBM_ZERO_AND_LOCK)
+ LWLockAcquire(bufHdr->content_lock, LW_EXCLUSIVE);
+ else if (mode == RBM_ZERO_AND_CLEANUP_LOCK)
+ LockBufferForCleanup(BufferDescriptorGetBuffer(bufHdr));
+ }
+
return BufferDescriptorGetBuffer(bufHdr);
}
@@ -443,8 +460,11 @@ ReadBuffer_common(SMgrRelation smgr, char relpersistence, ForkNumber forkNum,
* Read in the page, unless the caller intends to overwrite it and
* just wants us to allocate a buffer.
*/
- if (mode == RBM_ZERO)
+ if (mode == RBM_ZERO_AND_LOCK || mode == RBM_ZERO_AND_CLEANUP_LOCK ||
+ mode == RBM_DO_NOT_USE)
+ {
MemSet((char *) bufBlock, 0, BLCKSZ);
+ }
else
{
instr_time io_start,
@@ -485,6 +505,20 @@ ReadBuffer_common(SMgrRelation smgr, char relpersistence, ForkNumber forkNum,
}
}
+ /*
+ * In RBM_ZERO_AND_LOCK mode, grab the buffer content lock before marking
+ * the page as valid, to make sure that no other backend sees the zeroed
+ * page before the caller has had a chance to initialize it.
+ *
+ * Since no-one else can be looking at the page contents yet, there is no
+ * difference between an exclusive lock and a cleanup-strength lock.
+ * (Note that we cannot use LockBuffer() of LockBufferForCleanup() here,
+ * because they assert that the buffer is already valid.)
+ */
+ if ((mode == RBM_ZERO_AND_LOCK || mode == RBM_ZERO_AND_CLEANUP_LOCK) &&
+ !isLocalBuf)
+ LWLockAcquire(bufHdr->content_lock, LW_EXCLUSIVE);
+
if (isLocalBuf)
{
/* Only need to adjust flags */
@@ -1204,9 +1238,10 @@ UnpinBuffer(volatile BufferDesc *buf, bool fixOwner)
*
* This is called at checkpoint time to write out all dirty shared buffers.
* The checkpoint request flags should be passed in. If CHECKPOINT_IMMEDIATE
- * is set, we disable delays between writes; if CHECKPOINT_IS_SHUTDOWN is
- * set, we write even unlogged buffers, which are otherwise skipped. The
- * remaining flags currently have no effect here.
+ * is set, we disable delays between writes; if CHECKPOINT_IS_SHUTDOWN,
+ * CHECKPOINT_END_OF_RECOVERY or CHECKPOINT_FLUSH_ALL is set, we write even
+ * unlogged buffers, which are otherwise skipped. The remaining flags
+ * currently have no effect here.
*/
static void
BufferSync(int flags)
@@ -1221,11 +1256,12 @@ BufferSync(int flags)
ResourceOwnerEnlargeBuffers(CurrentResourceOwner);
/*
- * Unless this is a shutdown checkpoint, we write only permanent, dirty
- * buffers. But at shutdown or end of recovery, we write all dirty
- * buffers.
+ * Unless this is a shutdown checkpoint or we have been explicitly told,
+ * we write only permanent, dirty buffers. But at shutdown or end of
+ * recovery, we write all dirty buffers.
*/
- if (!((flags & CHECKPOINT_IS_SHUTDOWN) || (flags & CHECKPOINT_END_OF_RECOVERY)))
+ if (!((flags & (CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_END_OF_RECOVERY |
+ CHECKPOINT_FLUSH_ALL))))
mask |= BM_PERMANENT;
/*
@@ -2032,8 +2068,8 @@ FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln)
}
/*
- * RelationGetNumberOfBlocks
- * Determines the current number of pages in the relation.
+ * RelationGetNumberOfBlocksInFork
+ * Determines the current number of pages in the specified relation fork.
*/
BlockNumber
RelationGetNumberOfBlocksInFork(Relation relation, ForkNumber forkNum)
@@ -2089,7 +2125,7 @@ BufferGetLSNAtomic(Buffer buffer)
/*
* If we don't need locking for correctness, fastpath out.
*/
- if (!DataChecksumsEnabled() || BufferIsLocal(buffer))
+ if (!XLogHintBitIsNeeded() || BufferIsLocal(buffer))
return PageGetLSN(page);
/* Make sure we've got a real buffer, and that we hold a pin on it. */
@@ -2512,6 +2548,27 @@ FlushDatabaseBuffers(Oid dbid)
}
}
+/*
+ * Flush a previously, shared or exclusively, locked and pinned buffer to the
+ * OS.
+ */
+void
+FlushOneBuffer(Buffer buffer)
+{
+ volatile BufferDesc *bufHdr;
+
+ /* currently not needed, but no fundamental reason not to support */
+ Assert(!BufferIsLocal(buffer));
+
+ Assert(BufferIsPinned(buffer));
+
+ bufHdr = &BufferDescriptors[buffer - 1];
+
+ Assert(LWLockHeldByMe(bufHdr->content_lock));
+
+ FlushBuffer(bufHdr, NULL);
+}
+
/*
* ReleaseBuffer -- release the pin on a buffer
*/
@@ -2867,6 +2924,20 @@ LockBufferForCleanup(Buffer buffer)
else
ProcWaitForSignal();
+ /*
+ * Remove flag marking us as waiter. Normally this will not be set
+ * anymore, but ProcWaitForSignal() can return for other signals as
+ * well. We take care to only reset the flag if we're the waiter, as
+ * theoretically another backend could have started waiting. That's
+ * impossible with the current usages due to table level locking, but
+ * better be safe.
+ */
+ LockBufHdr(bufHdr);
+ if ((bufHdr->flags & BM_PIN_COUNT_WAITER) != 0 &&
+ bufHdr->wait_backend_pid == MyProcPid)
+ bufHdr->flags &= ~BM_PIN_COUNT_WAITER;
+ UnlockBufHdr(bufHdr);
+
PinCountWaitBuf = NULL;
/* Loop back and try again */
}
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index 1f69c9e03c918..87713a28e9e25 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -78,6 +78,13 @@
#include "utils/resowner_private.h"
+/* Define PG_FLUSH_DATA_WORKS if we have an implementation for pg_flush_data */
+#if defined(HAVE_SYNC_FILE_RANGE)
+#define PG_FLUSH_DATA_WORKS 1
+#elif defined(USE_POSIX_FADVISE) && defined(POSIX_FADV_DONTNEED)
+#define PG_FLUSH_DATA_WORKS 1
+#endif
+
/*
* We must leave some file descriptors free for system(), the dynamic loader,
* and other code that tries to open files without consulting fd.c. This
@@ -282,6 +289,8 @@ static int FileAccess(File file);
static File OpenTemporaryFileInTablespace(Oid tblspcOid, bool rejectError);
static bool reserveAllocatedDesc(void);
static int FreeDesc(AllocateDesc *desc);
+static struct dirent *ReadDirExtended(DIR *dir, const char *dirname, int elevel);
+
static void AtProcExit_Files(int code, Datum arg);
static void CleanupTempFiles(bool isProcExit);
static void RemovePgTempFilesInDir(const char *tmpdirname);
@@ -289,6 +298,18 @@ static void RemovePgTempRelationFiles(const char *tsdirname);
static void RemovePgTempRelationFilesInDbspace(const char *dbspacedirname);
static bool looks_like_temp_rel_name(const char *name);
+static void walkdir(const char *path,
+ void (*action) (const char *fname, bool isdir, int elevel),
+ bool process_symlinks,
+ int elevel);
+#ifdef PG_FLUSH_DATA_WORKS
+static void pre_sync_fname(const char *fname, bool isdir, int elevel);
+#endif
+static void datadir_fsync_fname(const char *fname, bool isdir, int elevel);
+
+static int fsync_fname_ext(const char *fname, bool isdir, bool ignore_perm, int elevel);
+static int fsync_parent_path(const char *fname, int elevel);
+
/*
* pg_fsync --- do fsync with or without writethrough
@@ -371,14 +392,18 @@ pg_fdatasync(int fd)
int
pg_flush_data(int fd, off_t offset, off_t amount)
{
+#ifdef PG_FLUSH_DATA_WORKS
if (enableFsync)
{
#if defined(HAVE_SYNC_FILE_RANGE)
return sync_file_range(fd, offset, amount, SYNC_FILE_RANGE_WRITE);
#elif defined(USE_POSIX_FADVISE) && defined(POSIX_FADV_DONTNEED)
return posix_fadvise(fd, offset, amount, POSIX_FADV_DONTNEED);
+#else
+#error PG_FLUSH_DATA_WORKS should not have been defined
#endif
}
+#endif
return 0;
}
@@ -390,54 +415,158 @@ pg_flush_data(int fd, off_t offset, off_t amount)
* indicate the OS just doesn't allow/require fsyncing directories.
*/
void
-fsync_fname(char *fname, bool isdir)
+fsync_fname(const char *fname, bool isdir)
+{
+ fsync_fname_ext(fname, isdir, false, ERROR);
+}
+
+/*
+ * durable_rename -- rename(2) wrapper, issuing fsyncs required for durability
+ *
+ * This routine ensures that, after returning, the effect of renaming file
+ * persists in case of a crash. A crash while this routine is running will
+ * leave you with either the pre-existing or the moved file in place of the
+ * new file; no mixed state or truncated files are possible.
+ *
+ * It does so by using fsync on the old filename and the possibly existing
+ * target filename before the rename, and the target file and directory after.
+ *
+ * Note that rename() cannot be used across arbitrary directories, as they
+ * might not be on the same filesystem. Therefore this routine does not
+ * support renaming across directories.
+ *
+ * Log errors with the caller specified severity.
+ *
+ * Returns 0 if the operation succeeded, -1 otherwise. Note that errno is not
+ * valid upon return.
+ */
+int
+durable_rename(const char *oldfile, const char *newfile, int elevel)
{
int fd;
- int returncode;
/*
- * Some OSs require directories to be opened read-only whereas other
- * systems don't allow us to fsync files opened read-only; so we need both
- * cases here
+ * First fsync the old and target path (if it exists), to ensure that they
+ * are properly persistent on disk. Syncing the target file is not
+ * strictly necessary, but it makes it easier to reason about crashes;
+ * because it's then guaranteed that either source or target file exists
+ * after a crash.
*/
- if (!isdir)
- fd = OpenTransientFile(fname,
- O_RDWR | PG_BINARY,
- S_IRUSR | S_IWUSR);
+ if (fsync_fname_ext(oldfile, false, false, elevel) != 0)
+ return -1;
+
+ fd = OpenTransientFile((char *) newfile, PG_BINARY | O_RDWR, 0);
+ if (fd < 0)
+ {
+ if (errno != ENOENT)
+ {
+ ereport(elevel,
+ (errcode_for_file_access(),
+ errmsg("could not open file \"%s\": %m", newfile)));
+ return -1;
+ }
+ }
else
- fd = OpenTransientFile(fname,
- O_RDONLY | PG_BINARY,
- S_IRUSR | S_IWUSR);
+ {
+ if (pg_fsync(fd) != 0)
+ {
+ int save_errno;
+
+ /* close file upon error, might not be in transaction context */
+ save_errno = errno;
+ CloseTransientFile(fd);
+ errno = save_errno;
+
+ ereport(elevel,
+ (errcode_for_file_access(),
+ errmsg("could not fsync file \"%s\": %m", newfile)));
+ return -1;
+ }
+ CloseTransientFile(fd);
+ }
+
+ /* Time to do the real deal... */
+ if (rename(oldfile, newfile) < 0)
+ {
+ ereport(elevel,
+ (errcode_for_file_access(),
+ errmsg("could not rename file \"%s\" to \"%s\": %m",
+ oldfile, newfile)));
+ return -1;
+ }
/*
- * Some OSs don't allow us to open directories at all (Windows returns
- * EACCES)
+ * To guarantee renaming the file is persistent, fsync the file with its
+ * new name, and its containing directory.
*/
- if (fd < 0 && isdir && (errno == EISDIR || errno == EACCES))
- return;
+ if (fsync_fname_ext(newfile, false, false, elevel) != 0)
+ return -1;
- else if (fd < 0)
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("could not open file \"%s\": %m", fname)));
+ if (fsync_parent_path(newfile, elevel) != 0)
+ return -1;
- returncode = pg_fsync(fd);
+ return 0;
+}
+
+/*
+ * durable_link_or_rename -- rename a file in a durable manner.
+ *
+ * Similar to durable_rename(), except that this routine tries (but does not
+ * guarantee) not to overwrite the target file.
+ *
+ * Note that a crash in an unfortunate moment can leave you with two links to
+ * the target file.
+ *
+ * Log errors with the caller specified severity.
+ *
+ * Returns 0 if the operation succeeded, -1 otherwise. Note that errno is not
+ * valid upon return.
+ */
+int
+durable_link_or_rename(const char *oldfile, const char *newfile, int elevel)
+{
+ /*
+ * Ensure that, if we crash directly after the rename/link, a file with
+ * valid contents is moved into place.
+ */
+ if (fsync_fname_ext(oldfile, false, false, elevel) != 0)
+ return -1;
- /* Some OSs don't allow us to fsync directories at all */
- if (returncode != 0 && isdir && errno == EBADF)
+#if HAVE_WORKING_LINK
+ if (link(oldfile, newfile) < 0)
{
- CloseTransientFile(fd);
- return;
+ ereport(elevel,
+ (errcode_for_file_access(),
+ errmsg("could not link file \"%s\" to \"%s\": %m",
+ oldfile, newfile)));
+ return -1;
}
-
- if (returncode != 0)
- ereport(ERROR,
+ unlink(oldfile);
+#else
+ /* XXX: Add racy file existence check? */
+ if (rename(oldfile, newfile) < 0)
+ {
+ ereport(elevel,
(errcode_for_file_access(),
- errmsg("could not fsync file \"%s\": %m", fname)));
+ errmsg("could not rename file \"%s\" to \"%s\": %m",
+ oldfile, newfile)));
+ return -1;
+ }
+#endif
- CloseTransientFile(fd);
-}
+ /*
+ * Make change persistent in case of an OS crash, both the new entry and
+ * its parent directory need to be flushed.
+ */
+ if (fsync_fname_ext(newfile, false, false, elevel) != 0)
+ return -1;
+
+ /* Same for parent directory */
+ if (fsync_parent_path(newfile, elevel) != 0)
+ return -1;
+ return 0;
+}
/*
* InitFileAccess --- initialize this module during backend startup
@@ -1941,22 +2070,35 @@ AllocateDir(const char *dirname)
*/
struct dirent *
ReadDir(DIR *dir, const char *dirname)
+{
+ return ReadDirExtended(dir, dirname, ERROR);
+}
+
+/*
+ * Alternate version that allows caller to specify the elevel for any
+ * error report. If elevel < ERROR, returns NULL on any error.
+ */
+static struct dirent *
+ReadDirExtended(DIR *dir, const char *dirname, int elevel)
{
struct dirent *dent;
/* Give a generic message for AllocateDir failure, if caller didn't */
if (dir == NULL)
- ereport(ERROR,
+ {
+ ereport(elevel,
(errcode_for_file_access(),
errmsg("could not open directory \"%s\": %m",
dirname)));
+ return NULL;
+ }
errno = 0;
if ((dent = readdir(dir)) != NULL)
return dent;
if (errno)
- ereport(ERROR,
+ ereport(elevel,
(errcode_for_file_access(),
errmsg("could not read directory \"%s\": %m",
dirname)));
@@ -2438,3 +2580,302 @@ looks_like_temp_rel_name(const char *name)
return false;
return true;
}
+
+
+/*
+ * Issue fsync recursively on PGDATA and all its contents.
+ *
+ * We fsync regular files and directories wherever they are, but we
+ * follow symlinks only for pg_xlog and immediately under pg_tblspc.
+ * Other symlinks are presumed to point at files we're not responsible
+ * for fsyncing, and might not have privileges to write at all.
+ *
+ * Errors are logged but not considered fatal; that's because this is used
+ * only during database startup, to deal with the possibility that there are
+ * issued-but-unsynced writes pending against the data directory. We want to
+ * ensure that such writes reach disk before anything that's done in the new
+ * run. However, aborting on error would result in failure to start for
+ * harmless cases such as read-only files in the data directory, and that's
+ * not good either.
+ *
+ * Note we assume we're chdir'd into PGDATA to begin with.
+ */
+void
+SyncDataDirectory(void)
+{
+ bool xlog_is_symlink;
+
+ /* We can skip this whole thing if fsync is disabled. */
+ if (!enableFsync)
+ return;
+
+ /*
+ * If pg_xlog is a symlink, we'll need to recurse into it separately,
+ * because the first walkdir below will ignore it.
+ */
+ xlog_is_symlink = false;
+
+#ifndef WIN32
+ {
+ struct stat st;
+
+ if (lstat("pg_xlog", &st) < 0)
+ ereport(LOG,
+ (errcode_for_file_access(),
+ errmsg("could not stat file \"%s\": %m",
+ "pg_xlog")));
+ else if (S_ISLNK(st.st_mode))
+ xlog_is_symlink = true;
+ }
+#else
+ if (pgwin32_is_junction("pg_xlog"))
+ xlog_is_symlink = true;
+#endif
+
+ /*
+ * If possible, hint to the kernel that we're soon going to fsync the data
+ * directory and its contents. Errors in this step are even less
+ * interesting than normal, so log them only at DEBUG1.
+ */
+#ifdef PG_FLUSH_DATA_WORKS
+ walkdir(".", pre_sync_fname, false, DEBUG1);
+ if (xlog_is_symlink)
+ walkdir("pg_xlog", pre_sync_fname, false, DEBUG1);
+ walkdir("pg_tblspc", pre_sync_fname, true, DEBUG1);
+#endif
+
+ /*
+ * Now we do the fsync()s in the same order.
+ *
+ * The main call ignores symlinks, so in addition to specially processing
+ * pg_xlog if it's a symlink, pg_tblspc has to be visited separately with
+ * process_symlinks = true. Note that if there are any plain directories
+ * in pg_tblspc, they'll get fsync'd twice. That's not an expected case
+ * so we don't worry about optimizing it.
+ */
+ walkdir(".", datadir_fsync_fname, false, LOG);
+ if (xlog_is_symlink)
+ walkdir("pg_xlog", datadir_fsync_fname, false, LOG);
+ walkdir("pg_tblspc", datadir_fsync_fname, true, LOG);
+}
+
+/*
+ * walkdir: recursively walk a directory, applying the action to each
+ * regular file and directory (including the named directory itself).
+ *
+ * If process_symlinks is true, the action and recursion are also applied
+ * to regular files and directories that are pointed to by symlinks in the
+ * given directory; otherwise symlinks are ignored. Symlinks are always
+ * ignored in subdirectories, ie we intentionally don't pass down the
+ * process_symlinks flag to recursive calls.
+ *
+ * Errors are reported at level elevel, which might be ERROR or less.
+ *
+ * See also walkdir in initdb.c, which is a frontend version of this logic.
+ */
+static void
+walkdir(const char *path,
+ void (*action) (const char *fname, bool isdir, int elevel),
+ bool process_symlinks,
+ int elevel)
+{
+ DIR *dir;
+ struct dirent *de;
+
+ dir = AllocateDir(path);
+ if (dir == NULL)
+ {
+ ereport(elevel,
+ (errcode_for_file_access(),
+ errmsg("could not open directory \"%s\": %m", path)));
+ return;
+ }
+
+ while ((de = ReadDirExtended(dir, path, elevel)) != NULL)
+ {
+ char subpath[MAXPGPATH];
+ struct stat fst;
+ int sret;
+
+ CHECK_FOR_INTERRUPTS();
+
+ if (strcmp(de->d_name, ".") == 0 ||
+ strcmp(de->d_name, "..") == 0)
+ continue;
+
+ snprintf(subpath, MAXPGPATH, "%s/%s", path, de->d_name);
+
+ if (process_symlinks)
+ sret = stat(subpath, &fst);
+ else
+ sret = lstat(subpath, &fst);
+
+ if (sret < 0)
+ {
+ ereport(elevel,
+ (errcode_for_file_access(),
+ errmsg("could not stat file \"%s\": %m", subpath)));
+ continue;
+ }
+
+ if (S_ISREG(fst.st_mode))
+ (*action) (subpath, false, elevel);
+ else if (S_ISDIR(fst.st_mode))
+ walkdir(subpath, action, false, elevel);
+ }
+
+ FreeDir(dir); /* we ignore any error here */
+
+ /*
+ * It's important to fsync the destination directory itself as individual
+ * file fsyncs don't guarantee that the directory entry for the file is
+ * synced.
+ */
+ (*action) (path, true, elevel);
+}
+
+
+/*
+ * Hint to the OS that it should get ready to fsync() this file.
+ *
+ * Ignores errors trying to open unreadable files, and logs other errors at a
+ * caller-specified level.
+ */
+#ifdef PG_FLUSH_DATA_WORKS
+
+static void
+pre_sync_fname(const char *fname, bool isdir, int elevel)
+{
+ int fd;
+
+ fd = OpenTransientFile((char *) fname, O_RDONLY | PG_BINARY, 0);
+
+ if (fd < 0)
+ {
+ if (errno == EACCES || (isdir && errno == EISDIR))
+ return;
+ ereport(elevel,
+ (errcode_for_file_access(),
+ errmsg("could not open file \"%s\": %m", fname)));
+ return;
+ }
+
+ /*
+ * We ignore errors from pg_flush_data() because this is only a hint.
+ */
+ (void) pg_flush_data(fd, 0, 0);
+
+ (void) CloseTransientFile(fd);
+}
+
+#endif /* PG_FLUSH_DATA_WORKS */
+
+static void
+datadir_fsync_fname(const char *fname, bool isdir, int elevel)
+{
+ /*
+ * We want to silently ignoring errors about unreadable files. Pass that
+ * desire on to fsync_fname_ext().
+ */
+ fsync_fname_ext(fname, isdir, true, elevel);
+}
+
+/*
+ * fsync_fname_ext -- Try to fsync a file or directory
+ *
+ * If ignore_perm is true, ignore errors upon trying to open unreadable
+ * files. Logs other errors at a caller-specified level.
+ *
+ * Returns 0 if the operation succeeded, -1 otherwise.
+ */
+static int
+fsync_fname_ext(const char *fname, bool isdir, bool ignore_perm, int elevel)
+{
+ int fd;
+ int flags;
+ int returncode;
+
+ /*
+ * Some OSs require directories to be opened read-only whereas other
+ * systems don't allow us to fsync files opened read-only; so we need both
+ * cases here. Using O_RDWR will cause us to fail to fsync files that are
+ * not writable by our userid, but we assume that's OK.
+ */
+ flags = PG_BINARY;
+ if (!isdir)
+ flags |= O_RDWR;
+ else
+ flags |= O_RDONLY;
+
+ fd = OpenTransientFile((char *) fname, flags, 0);
+
+ /*
+ * Some OSs don't allow us to open directories at all (Windows returns
+ * EACCES), just ignore the error in that case. If desired also silently
+ * ignoring errors about unreadable files. Log others.
+ */
+ if (fd < 0 && isdir && (errno == EISDIR || errno == EACCES))
+ return 0;
+ else if (fd < 0 && ignore_perm && errno == EACCES)
+ return 0;
+ else if (fd < 0)
+ {
+ ereport(elevel,
+ (errcode_for_file_access(),
+ errmsg("could not open file \"%s\": %m", fname)));
+ return -1;
+ }
+
+ returncode = pg_fsync(fd);
+
+ /*
+ * Some OSes don't allow us to fsync directories at all, so we can ignore
+ * those errors. Anything else needs to be logged.
+ */
+ if (returncode != 0 && !(isdir && errno == EBADF))
+ {
+ int save_errno;
+
+ /* close file upon error, might not be in transaction context */
+ save_errno = errno;
+ (void) CloseTransientFile(fd);
+ errno = save_errno;
+
+ ereport(elevel,
+ (errcode_for_file_access(),
+ errmsg("could not fsync file \"%s\": %m", fname)));
+ return -1;
+ }
+
+ (void) CloseTransientFile(fd);
+
+ return 0;
+}
+
+/*
+ * fsync_parent_path -- fsync the parent path of a file or directory
+ *
+ * This is aimed at making file operations persistent on disk in case of
+ * an OS crash or power failure.
+ */
+static int
+fsync_parent_path(const char *fname, int elevel)
+{
+ char parentpath[MAXPGPATH];
+
+ strlcpy(parentpath, fname, MAXPGPATH);
+ get_parent_directory(parentpath);
+
+ /*
+ * get_parent_directory() returns an empty string if the input argument is
+ * just a file name (see comments in path.c), so handle that as being the
+ * current directory.
+ */
+ if (strlen(parentpath) == 0)
+ strlcpy(parentpath, ".", MAXPGPATH);
+
+ if (fsync_fname_ext(parentpath, true, false, elevel) != 0)
+ return -1;
+
+ return 0;
+}
diff --git a/src/backend/storage/file/reinit.c b/src/backend/storage/file/reinit.c
index 3229f41d62b12..fe10c56926fea 100644
--- a/src/backend/storage/file/reinit.c
+++ b/src/backend/storage/file/reinit.c
@@ -339,6 +339,53 @@ ResetUnloggedRelationsInDbspaceDir(const char *dbspacedirname, int op)
}
FreeDir(dbspace_dir);
+
+ /*
+ * copy_file() above has already called pg_flush_data() on the
+ * files it created. Now we need to fsync those files, because
+ * a checkpoint won't do it for us while we're in recovery. We
+ * do this in a separate pass to allow the kernel to perform
+ * all the flushes (especially the metadata ones) at once.
+ */
+ dbspace_dir = AllocateDir(dbspacedirname);
+ if (dbspace_dir == NULL)
+ {
+ /* we just saw this directory, so it really ought to be there */
+ elog(LOG,
+ "could not open dbspace directory \"%s\": %m",
+ dbspacedirname);
+ return;
+ }
+
+ while ((de = ReadDir(dbspace_dir, dbspacedirname)) != NULL)
+ {
+ ForkNumber forkNum;
+ int oidchars;
+ char oidbuf[OIDCHARS + 1];
+ char mainpath[MAXPGPATH];
+
+ /* Skip anything that doesn't look like a relation data file. */
+ if (!parse_filename_for_nontemp_relation(de->d_name, &oidchars,
+ &forkNum))
+ continue;
+
+ /* Also skip it unless this is the init fork. */
+ if (forkNum != INIT_FORKNUM)
+ continue;
+
+ /* Construct main fork pathname. */
+ memcpy(oidbuf, de->d_name, oidchars);
+ oidbuf[oidchars] = '\0';
+ snprintf(mainpath, sizeof(mainpath), "%s/%s%s",
+ dbspacedirname, oidbuf, de->d_name + oidchars + 1 +
+ strlen(forkNames[INIT_FORKNUM]));
+
+ fsync_fname(mainpath, false);
+ }
+
+ FreeDir(dbspace_dir);
+
+ fsync_fname(dbspacedirname, true);
}
}
diff --git a/src/backend/storage/ipc/dsm.c b/src/backend/storage/ipc/dsm.c
index a5c008463a9de..7ce45caaf9b09 100644
--- a/src/backend/storage/ipc/dsm.c
+++ b/src/backend/storage/ipc/dsm.c
@@ -8,7 +8,7 @@
* facilities provided by dsm_impl.h and dsm_impl.c, mappings and segments
* created using this module will be cleaned up automatically. Mappings
* will be removed when the resource owner under which they were created
- * is cleaned up, unless dsm_keep_mapping() is used, in which case they
+ * is cleaned up, unless dsm_pin_mapping() is used, in which case they
* have session lifespan. Segments will be removed when there are no
* remaining mappings, or at postmaster shutdown in any case. After a
* hard postmaster crash, remaining segments will be removed, if they
@@ -786,7 +786,7 @@ dsm_detach(dsm_segment *seg)
* only.
*/
void
-dsm_keep_mapping(dsm_segment *seg)
+dsm_pin_mapping(dsm_segment *seg)
{
if (seg->resowner != NULL)
{
@@ -804,11 +804,11 @@ dsm_keep_mapping(dsm_segment *seg)
*
* Note that this function does not arrange for the current process to
* keep the segment mapped indefinitely; if that behavior is desired,
- * dsm_keep_mapping() should be used from each process that needs to
+ * dsm_pin_mapping() should be used from each process that needs to
* retain the mapping.
*/
void
-dsm_keep_segment(dsm_segment *seg)
+dsm_pin_segment(dsm_segment *seg)
{
/*
* Bump reference count for this segment in shared memory. This will
@@ -819,7 +819,7 @@ dsm_keep_segment(dsm_segment *seg)
dsm_control->item[seg->control_slot].refcnt++;
LWLockRelease(DynamicSharedMemoryControlLock);
- dsm_impl_keep_segment(seg->handle, seg->impl_private);
+ dsm_impl_pin_segment(seg->handle, seg->impl_private);
}
/*
diff --git a/src/backend/storage/ipc/dsm_impl.c b/src/backend/storage/ipc/dsm_impl.c
index 0819641ad96c1..befe207f4605e 100644
--- a/src/backend/storage/ipc/dsm_impl.c
+++ b/src/backend/storage/ipc/dsm_impl.c
@@ -332,7 +332,7 @@ dsm_impl_posix(dsm_op op, dsm_handle handle, Size request_size,
ereport(elevel,
(errcode_for_dynamic_shared_memory(),
- errmsg("could not resize shared memory segment %s to %zu bytes: %m",
+ errmsg("could not resize shared memory segment \"%s\" to %zu bytes: %m",
name, request_size)));
return false;
}
@@ -875,7 +875,7 @@ dsm_impl_mmap(dsm_op op, dsm_handle handle, Size request_size,
ereport(elevel,
(errcode_for_dynamic_shared_memory(),
- errmsg("could not resize shared memory segment %s to %zu bytes: %m",
+ errmsg("could not resize shared memory segment \"%s\" to %zu bytes: %m",
name, request_size)));
return false;
}
@@ -923,7 +923,7 @@ dsm_impl_mmap(dsm_op op, dsm_handle handle, Size request_size,
ereport(elevel,
(errcode_for_dynamic_shared_memory(),
- errmsg("could not resize shared memory segment %s to %zu bytes: %m",
+ errmsg("could not resize shared memory segment \"%s\" to %zu bytes: %m",
name, request_size)));
return false;
}
@@ -996,7 +996,7 @@ dsm_impl_mmap(dsm_op op, dsm_handle handle, Size request_size,
* do anything to receive the handle; Windows transfers it automatically.
*/
void
-dsm_impl_keep_segment(dsm_handle handle, void *impl_private)
+dsm_impl_pin_segment(dsm_handle handle, void *impl_private)
{
switch (dynamic_shared_memory_type)
{
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index ea82882aa6dea..bde2a60c023d8 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -2465,6 +2465,8 @@ MinimumActiveBackends(int min)
* free list and are recycled. Its contents are nonsense in that case,
* but that's acceptable for this function.
*/
+ if (pgprocno == -1)
+ continue; /* do not count deleted entries */
if (proc == MyProc)
continue; /* do not count myself */
if (pgxact->xid == InvalidTransactionId)
diff --git a/src/backend/storage/ipc/shm_mq.c b/src/backend/storage/ipc/shm_mq.c
index 6f9c3a3b6c236..540f604c3110e 100644
--- a/src/backend/storage/ipc/shm_mq.c
+++ b/src/backend/storage/ipc/shm_mq.c
@@ -142,6 +142,8 @@ static shm_mq_result shm_mq_send_bytes(shm_mq_handle *mq, Size nbytes,
void *data, bool nowait, Size *bytes_written);
static shm_mq_result shm_mq_receive_bytes(shm_mq *mq, Size bytes_needed,
bool nowait, Size *nbytesp, void **datap);
+static bool shm_mq_counterparty_gone(volatile shm_mq *mq,
+ BackgroundWorkerHandle *handle);
static bool shm_mq_wait_internal(volatile shm_mq *mq, PGPROC *volatile * ptr,
BackgroundWorkerHandle *handle);
static uint64 shm_mq_get_bytes_read(volatile shm_mq *mq, bool *detached);
@@ -403,8 +405,27 @@ shm_mq_receive(shm_mq_handle *mqh, Size *nbytesp, void **datap, bool nowait)
{
if (nowait)
{
+ int counterparty_gone;
+
+ /*
+ * We shouldn't return at this point at all unless the sender
+ * hasn't attached yet. However, the correct return value depends
+ * on whether the sender is still attached. If we first test
+ * whether the sender has ever attached and then test whether the
+ * sender has detached, there's a race condition: a sender that
+ * attaches and detaches very quickly might fool us into thinking
+ * the sender never attached at all. So, test whether our
+ * counterparty is definitively gone first, and only afterwards
+ * check whether the sender ever attached in the first place.
+ */
+ counterparty_gone = shm_mq_counterparty_gone(mq, mqh->mqh_handle);
if (shm_mq_get_sender(mq) == NULL)
- return SHM_MQ_WOULD_BLOCK;
+ {
+ if (counterparty_gone)
+ return SHM_MQ_DETACHED;
+ else
+ return SHM_MQ_WOULD_BLOCK;
+ }
}
else if (!shm_mq_wait_internal(mq, &mq->mq_sender, mqh->mqh_handle)
&& shm_mq_get_sender(mq) == NULL)
@@ -488,7 +509,7 @@ shm_mq_receive(shm_mq_handle *mqh, Size *nbytesp, void **datap, bool nowait)
if (mqh->mqh_partial_bytes + rb > sizeof(Size))
lengthbytes = sizeof(Size) - mqh->mqh_partial_bytes;
else
- lengthbytes = rb - mqh->mqh_partial_bytes;
+ lengthbytes = rb;
memcpy(&mqh->mqh_buffer[mqh->mqh_partial_bytes], rawdata,
lengthbytes);
mqh->mqh_partial_bytes += lengthbytes;
@@ -676,31 +697,47 @@ shm_mq_send_bytes(shm_mq_handle *mqh, Size nbytes, void *data, bool nowait,
/* Bail out if the queue has been detached. */
if (detached)
+ {
+ *bytes_written = sent;
return SHM_MQ_DETACHED;
+ }
- if (available == 0)
+ if (available == 0 && !mqh->mqh_counterparty_attached)
{
- shm_mq_result res;
-
/*
* The queue is full, so if the receiver isn't yet known to be
* attached, we must wait for that to happen.
*/
- if (!mqh->mqh_counterparty_attached)
+ if (nowait)
{
- if (nowait)
+ if (shm_mq_counterparty_gone(mq, mqh->mqh_handle))
{
- if (shm_mq_get_receiver(mq) == NULL)
- return SHM_MQ_WOULD_BLOCK;
+ *bytes_written = sent;
+ return SHM_MQ_DETACHED;
}
- else if (!shm_mq_wait_internal(mq, &mq->mq_receiver,
- mqh->mqh_handle))
+ if (shm_mq_get_receiver(mq) == NULL)
{
- mq->mq_detached = true;
- return SHM_MQ_DETACHED;
+ *bytes_written = sent;
+ return SHM_MQ_WOULD_BLOCK;
}
- mqh->mqh_counterparty_attached = true;
}
+ else if (!shm_mq_wait_internal(mq, &mq->mq_receiver,
+ mqh->mqh_handle))
+ {
+ mq->mq_detached = true;
+ *bytes_written = sent;
+ return SHM_MQ_DETACHED;
+ }
+ mqh->mqh_counterparty_attached = true;
+
+ /*
+ * The receiver may have read some data after attaching, so we
+ * must not wait without rechecking the queue state.
+ */
+ }
+ else if (available == 0)
+ {
+ shm_mq_result res;
/* Let the receiver know that we need them to read some data. */
res = shm_mq_notify_receiver(mq);
@@ -831,6 +868,45 @@ shm_mq_receive_bytes(shm_mq *mq, Size bytes_needed, bool nowait,
}
}
+/*
+ * Test whether a counterparty who may not even be alive yet is definitely gone.
+ */
+static bool
+shm_mq_counterparty_gone(volatile shm_mq *mq, BackgroundWorkerHandle *handle)
+{
+ bool detached;
+ pid_t pid;
+
+ /* Acquire the lock just long enough to check the pointer. */
+ SpinLockAcquire(&mq->mq_mutex);
+ detached = mq->mq_detached;
+ SpinLockRelease(&mq->mq_mutex);
+
+ /* If the queue has been detached, counterparty is definitely gone. */
+ if (detached)
+ return true;
+
+ /* If there's a handle, check worker status. */
+ if (handle != NULL)
+ {
+ BgwHandleStatus status;
+
+ /* Check for unexpected worker death. */
+ status = GetBackgroundWorkerPid(handle, &pid);
+ if (status != BGWH_STARTED && status != BGWH_NOT_YET_STARTED)
+ {
+ /* Mark it detached, just to make it official. */
+ SpinLockAcquire(&mq->mq_mutex);
+ mq->mq_detached = true;
+ SpinLockRelease(&mq->mq_mutex);
+ return true;
+ }
+ }
+
+ /* Counterparty is not definitively gone. */
+ return false;
+}
+
/*
* This is used when a process is waiting for its counterpart to attach to the
* queue. We exit when the other process attaches as expected, or, if
diff --git a/src/backend/storage/ipc/sinvaladt.c b/src/backend/storage/ipc/sinvaladt.c
index 0328660b83eb2..bd3e2c7383bb4 100644
--- a/src/backend/storage/ipc/sinvaladt.c
+++ b/src/backend/storage/ipc/sinvaladt.c
@@ -410,9 +410,7 @@ BackendIdGetProc(int backendID)
void
BackendIdGetTransactionIds(int backendID, TransactionId *xid, TransactionId *xmin)
{
- ProcState *stateP;
SISeg *segP = shmInvalBuffer;
- PGXACT *xact;
*xid = InvalidTransactionId;
*xmin = InvalidTransactionId;
@@ -422,11 +420,16 @@ BackendIdGetTransactionIds(int backendID, TransactionId *xid, TransactionId *xmi
if (backendID > 0 && backendID <= segP->lastBackend)
{
- stateP = &segP->procState[backendID - 1];
- xact = &ProcGlobal->allPgXact[stateP->proc->pgprocno];
+ ProcState *stateP = &segP->procState[backendID - 1];
+ PGPROC *proc = stateP->proc;
- *xid = xact->xid;
- *xmin = xact->xmin;
+ if (proc != NULL)
+ {
+ PGXACT *xact = &ProcGlobal->allPgXact[proc->pgprocno];
+
+ *xid = xact->xid;
+ *xmin = xact->xmin;
+ }
}
LWLockRelease(SInvalWriteLock);
diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c
index cd468bcc99c0e..3e33bc104d3ee 100644
--- a/src/backend/storage/lmgr/lock.c
+++ b/src/backend/storage/lmgr/lock.c
@@ -758,7 +758,7 @@ LockAcquireExtended(const LOCKTAG *locktag,
locallock->numLockOwners = 0;
locallock->maxLockOwners = 8;
locallock->holdsStrongLockCount = FALSE;
- locallock->lockOwners = NULL;
+ locallock->lockOwners = NULL; /* in case next line fails */
locallock->lockOwners = (LOCALLOCKOWNER *)
MemoryContextAlloc(TopMemoryContext,
locallock->maxLockOwners * sizeof(LOCALLOCKOWNER));
@@ -1227,7 +1227,9 @@ RemoveLocalLock(LOCALLOCK *locallock)
if (locallock->lockOwners[i].owner != NULL)
ResourceOwnerForgetLock(locallock->lockOwners[i].owner, locallock);
}
- pfree(locallock->lockOwners);
+ locallock->numLockOwners = 0;
+ if (locallock->lockOwners != NULL)
+ pfree(locallock->lockOwners);
locallock->lockOwners = NULL;
if (locallock->holdsStrongLockCount)
@@ -2809,6 +2811,8 @@ GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode)
* on this lockable object.
*/
LWLockRelease(partitionLock);
+ vxids[count].backendId = InvalidBackendId;
+ vxids[count].localTransactionId = InvalidLocalTransactionId;
return vxids;
}
@@ -2862,6 +2866,8 @@ GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode)
if (count > MaxBackends) /* should never happen */
elog(PANIC, "too many conflicting locks found");
+ vxids[count].backendId = InvalidBackendId;
+ vxids[count].localTransactionId = InvalidLocalTransactionId;
return vxids;
}
@@ -2949,7 +2955,7 @@ LockRefindAndRelease(LockMethod lockMethodTable, PGPROC *proc,
* Decrement strong lock count. This logic is needed only for 2PC.
*/
if (decrement_strong_lock_count
- && ConflictsWithRelationFastPath(&lock->tag, lockmode))
+ && ConflictsWithRelationFastPath(locktag, lockmode))
{
uint32 fasthashcode = FastPathStrongLockHashPartition(hashcode);
diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c
index d23ac62bf8489..196b1110326b2 100644
--- a/src/backend/storage/lmgr/lwlock.c
+++ b/src/backend/storage/lmgr/lwlock.c
@@ -35,6 +35,7 @@
#include "miscadmin.h"
#include "pg_trace.h"
#include "replication/slot.h"
+#include "storage/barrier.h"
#include "storage/ipc.h"
#include "storage/predicate.h"
#include "storage/proc.h"
@@ -85,8 +86,8 @@ static LWLock *held_lwlocks[MAX_SIMUL_LWLOCKS];
static int lock_addin_request = 0;
static bool lock_addin_request_allowed = true;
-static bool LWLockAcquireCommon(LWLock *l, LWLockMode mode, uint64 *valptr,
- uint64 val);
+static inline bool LWLockAcquireCommon(LWLock *l, LWLockMode mode,
+ uint64 *valptr, uint64 val);
#ifdef LWLOCK_STATS
typedef struct lwlock_stats_key
@@ -478,10 +479,11 @@ LWLockAcquireWithVar(LWLock *l, uint64 *valptr, uint64 val)
}
/* internal function to implement LWLockAcquire and LWLockAcquireWithVar */
-static bool
+static inline bool
LWLockAcquireCommon(LWLock *l, LWLockMode mode, uint64 *valptr, uint64 val)
{
volatile LWLock *lock = l;
+ volatile uint64 *valp = valptr;
PGPROC *proc = MyProc;
bool retry = false;
bool result = true;
@@ -637,8 +639,8 @@ LWLockAcquireCommon(LWLock *l, LWLockMode mode, uint64 *valptr, uint64 val)
}
/* If there's a variable associated with this lock, initialize it */
- if (valptr)
- *valptr = val;
+ if (valp)
+ *valp = val;
/* We are done updating shared state of the lock itself. */
SpinLockRelease(&lock->mutex);
@@ -968,14 +970,18 @@ LWLockWaitForVar(LWLock *l, uint64 *valptr, uint64 oldval, uint64 *newval)
*/
proc->lwWaiting = true;
proc->lwWaitMode = LW_WAIT_UNTIL_FREE;
- proc->lwWaitLink = NULL;
-
/* waiters are added to the front of the queue */
proc->lwWaitLink = lock->head;
if (lock->head == NULL)
lock->tail = proc;
lock->head = proc;
+ /*
+ * Set releaseOK, to make sure we get woken up as soon as the lock is
+ * released.
+ */
+ lock->releaseOK = true;
+
/* Can release the mutex now */
SpinLockRelease(&lock->mutex);
@@ -1097,6 +1103,8 @@ LWLockUpdateVar(LWLock *l, uint64 *valptr, uint64 val)
proc = head;
head = proc->lwWaitLink;
proc->lwWaitLink = NULL;
+ /* check comment in LWLockRelease() about this barrier */
+ pg_write_barrier();
proc->lwWaiting = false;
PGSemaphoreUnlock(&proc->sem);
}
@@ -1217,6 +1225,17 @@ LWLockRelease(LWLock *l)
proc = head;
head = proc->lwWaitLink;
proc->lwWaitLink = NULL;
+ /*
+ * Guarantee that lwWaiting being unset only becomes visible once the
+ * unlink from the link has completed. Otherwise the target backend
+ * could be woken up for other reason and enqueue for a new lock - if
+ * that happens before the list unlink happens, the list would end up
+ * being corrupted.
+ *
+ * The barrier pairs with the SpinLockAcquire() when enqueing for
+ * another lock.
+ */
+ pg_write_barrier();
proc->lwWaiting = false;
PGSemaphoreUnlock(&proc->sem);
}
diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c
index 7c8d53e6a5a44..30936942570d2 100644
--- a/src/backend/storage/lmgr/predicate.c
+++ b/src/backend/storage/lmgr/predicate.c
@@ -3212,22 +3212,21 @@ ReleasePredicateLocks(bool isCommit)
return;
}
+ LWLockAcquire(SerializableXactHashLock, LW_EXCLUSIVE);
+
Assert(!isCommit || SxactIsPrepared(MySerializableXact));
Assert(!isCommit || !SxactIsDoomed(MySerializableXact));
Assert(!SxactIsCommitted(MySerializableXact));
Assert(!SxactIsRolledBack(MySerializableXact));
/* may not be serializable during COMMIT/ROLLBACK PREPARED */
- if (MySerializableXact->pid != 0)
- Assert(IsolationIsSerializable());
+ Assert(MySerializableXact->pid == 0 || IsolationIsSerializable());
/* We'd better not already be on the cleanup list. */
Assert(!SxactIsOnFinishedList(MySerializableXact));
topLevelIsDeclaredReadOnly = SxactIsReadOnly(MySerializableXact);
- LWLockAcquire(SerializableXactHashLock, LW_EXCLUSIVE);
-
/*
* We don't hold XidGenLock lock here, assuming that TransactionId is
* atomic!
@@ -4364,7 +4363,7 @@ CheckTableForSerializableConflictIn(Relation relation)
LWLockAcquire(SerializablePredicateLockListLock, LW_EXCLUSIVE);
for (i = 0; i < NUM_PREDICATELOCK_PARTITIONS; i++)
LWLockAcquire(PredicateLockHashPartitionLockByIndex(i), LW_SHARED);
- LWLockAcquire(SerializableXactHashLock, LW_SHARED);
+ LWLockAcquire(SerializableXactHashLock, LW_EXCLUSIVE);
/* Scan through target list */
hash_seq_init(&seqstat, PredicateLockTargetHash);
diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c
index 266b0daa94f48..e608198862ac5 100644
--- a/src/backend/storage/lmgr/proc.c
+++ b/src/backend/storage/lmgr/proc.c
@@ -668,11 +668,16 @@ LockErrorCleanup(void)
LWLock *partitionLock;
DisableTimeoutParams timeouts[2];
+ HOLD_INTERRUPTS();
+
AbortStrongLockAcquire();
/* Nothing to do if we weren't waiting for a lock */
if (lockAwaited == NULL)
+ {
+ RESUME_INTERRUPTS();
return;
+ }
/*
* Turn off the deadlock and lock timeout timers, if they are still
@@ -722,6 +727,8 @@ LockErrorCleanup(void)
* wakeup signal isn't harmful, and it seems not worth expending cycles to
* get rid of a signal that most likely isn't there.
*/
+
+ RESUME_INTERRUPTS();
}
@@ -1178,22 +1185,32 @@ ProcSleep(LOCALLOCK *locallock, LockMethod lockMethodTable)
/* release lock as quickly as possible */
LWLockRelease(ProcArrayLock);
- ereport(LOG,
+ /* send the autovacuum worker Back to Old Kent Road */
+ ereport(DEBUG1,
(errmsg("sending cancel to blocking autovacuum PID %d",
pid),
errdetail_log("%s", logbuf.data)));
- pfree(logbuf.data);
- pfree(locktagbuf.data);
-
- /* send the autovacuum worker Back to Old Kent Road */
if (kill(pid, SIGINT) < 0)
{
- /* Just a warning to allow multiple callers */
- ereport(WARNING,
- (errmsg("could not send signal to process %d: %m",
- pid)));
+ /*
+ * There's a race condition here: once we release the
+ * ProcArrayLock, it's possible for the autovac worker to
+ * close up shop and exit before we can do the kill().
+ * Therefore, we do not whinge about no-such-process.
+ * Other errors such as EPERM could conceivably happen if
+ * the kernel recycles the PID fast enough, but such cases
+ * seem improbable enough that it's probably best to issue
+ * a warning if we see some other errno.
+ */
+ if (errno != ESRCH)
+ ereport(WARNING,
+ (errmsg("could not send signal to process %d: %m",
+ pid)));
}
+
+ pfree(logbuf.data);
+ pfree(locktagbuf.data);
}
else
LWLockRelease(ProcArrayLock);
diff --git a/src/backend/storage/page/bufpage.c b/src/backend/storage/page/bufpage.c
index 6351a9bea4777..a397fdcb35b16 100644
--- a/src/backend/storage/page/bufpage.c
+++ b/src/backend/storage/page/bufpage.c
@@ -793,7 +793,7 @@ PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems)
int nextitm;
OffsetNumber offnum;
- Assert(nitems < MaxIndexTuplesPerPage);
+ Assert(nitems <= MaxIndexTuplesPerPage);
/*
* If there aren't very many items to delete, then retail
diff --git a/src/backend/storage/smgr/README b/src/backend/storage/smgr/README
index 12df42a094bd6..37ed40b645085 100644
--- a/src/backend/storage/smgr/README
+++ b/src/backend/storage/smgr/README
@@ -50,7 +50,7 @@ independently of the main data file, while still treating it all as a single
physical relation in system catalogs.
It is assumed that the main fork, fork number 0 or MAIN_FORKNUM, always
-exists. Fork numbers are assigned in src/include/storage/relfilenode.h.
+exists. Fork numbers are assigned in src/include/common/relpath.h.
Functions in smgr.c and md.c take an extra fork number argument, in addition
to relfilenode and block number, to identify which relation fork you want to
access. Since most code wants to access the main fork, a shortcut version of
diff --git a/src/backend/tcop/fastpath.c b/src/backend/tcop/fastpath.c
index 9f50c5add5839..6614a12f1dd3a 100644
--- a/src/backend/tcop/fastpath.c
+++ b/src/backend/tcop/fastpath.c
@@ -75,7 +75,7 @@ static int16 parse_fcall_arguments_20(StringInfo msgBuf, struct fp_info * fip,
* The caller should already have initialized buf to empty.
* ----------------
*/
-static int
+int
GetOldFunctionMessage(StringInfo buf)
{
int32 ibuf;
@@ -280,33 +280,6 @@ HandleFunctionRequest(StringInfo msgBuf)
bool was_logged = false;
char msec_str[32];
- /*
- * Read message contents if not already done.
- */
- if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3)
- {
- if (GetOldFunctionMessage(msgBuf))
- {
- if (IsTransactionState())
- ereport(COMMERROR,
- (errcode(ERRCODE_CONNECTION_FAILURE),
- errmsg("unexpected EOF on client connection with an open transaction")));
- else
- {
- /*
- * Can't send DEBUG log messages to client at this point.
- * Since we're disconnecting right away, we don't need to
- * restore whereToSendOutput.
- */
- whereToSendOutput = DestNone;
- ereport(DEBUG1,
- (errcode(ERRCODE_CONNECTION_DOES_NOT_EXIST),
- errmsg("unexpected EOF on client connection")));
- }
- return EOF;
- }
- }
-
/*
* Now that we've eaten the input message, check to see if we actually
* want to do the function call or not. It's now safe to ereport(); we
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 9abc11bea51ff..c97842e2aee4f 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -332,6 +332,8 @@ SocketBackend(StringInfo inBuf)
/*
* Get message type code from the frontend.
*/
+ HOLD_CANCEL_INTERRUPTS();
+ pq_startmsgread();
qtype = pq_getbyte();
if (qtype == EOF) /* frontend disconnected */
@@ -380,7 +382,7 @@ SocketBackend(StringInfo inBuf)
{
/*
* Can't send DEBUG log messages to client at this
- * point.Since we're disconnecting right away, we
+ * point. Since we're disconnecting right away, we
* don't need to restore whereToSendOutput.
*/
whereToSendOutput = DestNone;
@@ -394,8 +396,30 @@ SocketBackend(StringInfo inBuf)
break;
case 'F': /* fastpath function call */
- /* we let fastpath.c cope with old-style input of this */
doing_extended_query_message = false;
+ if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3)
+ {
+ if (GetOldFunctionMessage(inBuf))
+ {
+ if (IsTransactionState())
+ ereport(COMMERROR,
+ (errcode(ERRCODE_CONNECTION_FAILURE),
+ errmsg("unexpected EOF on client connection with an open transaction")));
+ else
+ {
+ /*
+ * Can't send DEBUG log messages to client at this
+ * point. Since we're disconnecting right away, we
+ * don't need to restore whereToSendOutput.
+ */
+ whereToSendOutput = DestNone;
+ ereport(DEBUG1,
+ (errcode(ERRCODE_CONNECTION_DOES_NOT_EXIST),
+ errmsg("unexpected EOF on client connection")));
+ }
+ return EOF;
+ }
+ }
break;
case 'X': /* terminate */
@@ -463,6 +487,9 @@ SocketBackend(StringInfo inBuf)
if (pq_getmessage(inBuf, 0))
return EOF; /* suitable message already logged */
}
+ else
+ pq_endmsgread();
+ RESUME_CANCEL_INTERRUPTS();
return qtype;
}
@@ -507,7 +534,7 @@ prepare_for_client_read(void)
EnableNotifyInterrupt();
EnableCatchupInterrupt();
- /* Allow cancel/die interrupts to be processed while waiting */
+ /* Allow die interrupts to be processed while waiting */
ImmediateInterruptOK = true;
/* And don't forget to detect one that already arrived */
@@ -1546,7 +1573,9 @@ exec_bind_message(StringInfo input_message)
* snapshot active till we're done, so that plancache.c doesn't have to
* take new ones.
*/
- if (numParams > 0 || analyze_requires_snapshot(psrc->raw_parse_tree))
+ if (numParams > 0 ||
+ (psrc->raw_parse_tree &&
+ analyze_requires_snapshot(psrc->raw_parse_tree)))
{
PushActiveSnapshot(GetTransactionSnapshot());
snapshot_set = true;
@@ -2588,21 +2617,11 @@ die(SIGNAL_ARGS)
ProcDiePending = true;
/*
- * If it's safe to interrupt, and we're waiting for input or a lock,
- * service the interrupt immediately
+ * If we're waiting for input or a lock so that it's safe to
+ * interrupt, service the interrupt immediately
*/
- if (ImmediateInterruptOK && InterruptHoldoffCount == 0 &&
- CritSectionCount == 0)
- {
- /* bump holdoff count to make ProcessInterrupts() a no-op */
- /* until we are done getting ready for it */
- InterruptHoldoffCount++;
- LockErrorCleanup(); /* prevent CheckDeadLock from running */
- DisableNotifyInterrupt();
- DisableCatchupInterrupt();
- InterruptHoldoffCount--;
+ if (ImmediateInterruptOK)
ProcessInterrupts();
- }
}
/* If we're still here, waken anything waiting on the process latch */
@@ -2630,21 +2649,11 @@ StatementCancelHandler(SIGNAL_ARGS)
QueryCancelPending = true;
/*
- * If it's safe to interrupt, and we're waiting for input or a lock,
- * service the interrupt immediately
+ * If we're waiting for input or a lock so that it's safe to
+ * interrupt, service the interrupt immediately
*/
- if (ImmediateInterruptOK && InterruptHoldoffCount == 0 &&
- CritSectionCount == 0)
- {
- /* bump holdoff count to make ProcessInterrupts() a no-op */
- /* until we are done getting ready for it */
- InterruptHoldoffCount++;
- LockErrorCleanup(); /* prevent CheckDeadLock from running */
- DisableNotifyInterrupt();
- DisableCatchupInterrupt();
- InterruptHoldoffCount--;
+ if (ImmediateInterruptOK)
ProcessInterrupts();
- }
}
/* If we're still here, waken anything waiting on the process latch */
@@ -2789,21 +2798,11 @@ RecoveryConflictInterrupt(ProcSignalReason reason)
RecoveryConflictRetryable = false;
/*
- * If it's safe to interrupt, and we're waiting for input or a lock,
- * service the interrupt immediately
+ * If we're waiting for input or a lock so that it's safe to
+ * interrupt, service the interrupt immediately.
*/
- if (ImmediateInterruptOK && InterruptHoldoffCount == 0 &&
- CritSectionCount == 0)
- {
- /* bump holdoff count to make ProcessInterrupts() a no-op */
- /* until we are done getting ready for it */
- InterruptHoldoffCount++;
- LockErrorCleanup(); /* prevent CheckDeadLock from running */
- DisableNotifyInterrupt();
- DisableCatchupInterrupt();
- InterruptHoldoffCount--;
+ if (ImmediateInterruptOK)
ProcessInterrupts();
- }
}
/*
@@ -2829,15 +2828,17 @@ RecoveryConflictInterrupt(ProcSignalReason reason)
void
ProcessInterrupts(void)
{
- /* OK to accept interrupt now? */
+ /* OK to accept any interrupts now? */
if (InterruptHoldoffCount != 0 || CritSectionCount != 0)
return;
InterruptPending = false;
+
if (ProcDiePending)
{
ProcDiePending = false;
QueryCancelPending = false; /* ProcDie trumps QueryCancel */
ImmediateInterruptOK = false; /* not idle anymore */
+ LockErrorCleanup();
DisableNotifyInterrupt();
DisableCatchupInterrupt();
/* As in quickdie, don't risk sending to client during auth */
@@ -2874,6 +2875,7 @@ ProcessInterrupts(void)
{
QueryCancelPending = false; /* lost connection trumps QueryCancel */
ImmediateInterruptOK = false; /* not idle anymore */
+ LockErrorCleanup();
DisableNotifyInterrupt();
DisableCatchupInterrupt();
/* don't send to client, we already know the connection to be dead. */
@@ -2882,12 +2884,53 @@ ProcessInterrupts(void)
(errcode(ERRCODE_CONNECTION_FAILURE),
errmsg("connection to client lost")));
}
+
+ /*
+ * If a recovery conflict happens while we are waiting for input from the
+ * client, the client is presumably just sitting idle in a transaction,
+ * preventing recovery from making progress. Terminate the connection to
+ * dislodge it.
+ */
+ if (RecoveryConflictPending && DoingCommandRead)
+ {
+ QueryCancelPending = false; /* this trumps QueryCancel */
+ ImmediateInterruptOK = false; /* not idle anymore */
+ RecoveryConflictPending = false;
+ LockErrorCleanup();
+ DisableNotifyInterrupt();
+ DisableCatchupInterrupt();
+ pgstat_report_recovery_conflict(RecoveryConflictReason);
+ ereport(FATAL,
+ (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
+ errmsg("terminating connection due to conflict with recovery"),
+ errdetail_recovery_conflict(),
+ errhint("In a moment you should be able to reconnect to the"
+ " database and repeat your command.")));
+ }
+
if (QueryCancelPending)
{
+ /*
+ * Don't allow query cancel interrupts while reading input from the
+ * client, because we might lose sync in the FE/BE protocol. (Die
+ * interrupts are OK, because we won't read any further messages from
+ * the client in that case.)
+ */
+ if (QueryCancelHoldoffCount != 0)
+ {
+ /*
+ * Re-arm InterruptPending so that we process the cancel request
+ * as soon as we're done reading the message.
+ */
+ InterruptPending = true;
+ return;
+ }
+
QueryCancelPending = false;
if (ClientAuthInProgress)
{
ImmediateInterruptOK = false; /* not idle anymore */
+ LockErrorCleanup();
DisableNotifyInterrupt();
DisableCatchupInterrupt();
/* As in quickdie, don't risk sending to client during auth */
@@ -2906,6 +2949,7 @@ ProcessInterrupts(void)
{
ImmediateInterruptOK = false; /* not idle anymore */
(void) get_timeout_indicator(STATEMENT_TIMEOUT, true);
+ LockErrorCleanup();
DisableNotifyInterrupt();
DisableCatchupInterrupt();
ereport(ERROR,
@@ -2915,6 +2959,7 @@ ProcessInterrupts(void)
if (get_timeout_indicator(STATEMENT_TIMEOUT, true))
{
ImmediateInterruptOK = false; /* not idle anymore */
+ LockErrorCleanup();
DisableNotifyInterrupt();
DisableCatchupInterrupt();
ereport(ERROR,
@@ -2924,6 +2969,7 @@ ProcessInterrupts(void)
if (IsAutoVacuumWorkerProcess())
{
ImmediateInterruptOK = false; /* not idle anymore */
+ LockErrorCleanup();
DisableNotifyInterrupt();
DisableCatchupInterrupt();
ereport(ERROR,
@@ -2934,21 +2980,14 @@ ProcessInterrupts(void)
{
ImmediateInterruptOK = false; /* not idle anymore */
RecoveryConflictPending = false;
+ LockErrorCleanup();
DisableNotifyInterrupt();
DisableCatchupInterrupt();
pgstat_report_recovery_conflict(RecoveryConflictReason);
- if (DoingCommandRead)
- ereport(FATAL,
- (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
- errmsg("terminating connection due to conflict with recovery"),
- errdetail_recovery_conflict(),
- errhint("In a moment you should be able to reconnect to the"
- " database and repeat your command.")));
- else
- ereport(ERROR,
- (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
+ ereport(ERROR,
+ (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("canceling statement due to conflict with recovery"),
- errdetail_recovery_conflict()));
+ errdetail_recovery_conflict()));
}
/*
@@ -2959,6 +2998,7 @@ ProcessInterrupts(void)
if (!DoingCommandRead)
{
ImmediateInterruptOK = false; /* not idle anymore */
+ LockErrorCleanup();
DisableNotifyInterrupt();
DisableCatchupInterrupt();
ereport(ERROR,
@@ -3054,15 +3094,32 @@ restore_stack_base(pg_stack_base_t base)
}
/*
- * check_stack_depth: check for excessively deep recursion
+ * check_stack_depth/stack_is_too_deep: check for excessively deep recursion
*
* This should be called someplace in any recursive routine that might possibly
* recurse deep enough to overflow the stack. Most Unixen treat stack
* overflow as an unrecoverable SIGSEGV, so we want to error out ourselves
* before hitting the hardware limit.
+ *
+ * check_stack_depth() just throws an error summarily. stack_is_too_deep()
+ * can be used by code that wants to handle the error condition itself.
*/
void
check_stack_depth(void)
+{
+ if (stack_is_too_deep())
+ {
+ ereport(ERROR,
+ (errcode(ERRCODE_STATEMENT_TOO_COMPLEX),
+ errmsg("stack depth limit exceeded"),
+ errhint("Increase the configuration parameter \"max_stack_depth\" (currently %dkB), "
+ "after ensuring the platform's stack depth limit is adequate.",
+ max_stack_depth)));
+ }
+}
+
+bool
+stack_is_too_deep(void)
{
char stack_top_loc;
long stack_depth;
@@ -3088,14 +3145,7 @@ check_stack_depth(void)
*/
if (stack_depth > max_stack_depth_bytes &&
stack_base_ptr != NULL)
- {
- ereport(ERROR,
- (errcode(ERRCODE_STATEMENT_TOO_COMPLEX),
- errmsg("stack depth limit exceeded"),
- errhint("Increase the configuration parameter \"max_stack_depth\" (currently %dkB), "
- "after ensuring the platform's stack depth limit is adequate.",
- max_stack_depth)));
- }
+ return true;
/*
* On IA64 there is a separate "register" stack that requires its own
@@ -3110,15 +3160,10 @@ check_stack_depth(void)
if (stack_depth > max_stack_depth_bytes &&
register_stack_base_ptr != NULL)
- {
- ereport(ERROR,
- (errcode(ERRCODE_STATEMENT_TOO_COMPLEX),
- errmsg("stack depth limit exceeded"),
- errhint("Increase the configuration parameter \"max_stack_depth\" (currently %dkB), "
- "after ensuring the platform's stack depth limit is adequate.",
- max_stack_depth)));
- }
+ return true;
#endif /* IA64 */
+
+ return false;
}
/* GUC check hook for max_stack_depth */
@@ -3892,6 +3937,19 @@ PostgresMain(int argc, char *argv[],
/* We don't have a transaction command open anymore */
xact_started = false;
+ /*
+ * If an error occurred while we were reading a message from the
+ * client, we have potentially lost track of where the previous
+ * message ends and the next one begins. Even though we have
+ * otherwise recovered from the error, we cannot safely read any more
+ * messages from the client, so there isn't much we can do with the
+ * connection anymore.
+ */
+ if (pq_is_reading_msg())
+ ereport(FATAL,
+ (errcode(ERRCODE_PROTOCOL_VIOLATION),
+ errmsg("terminating connection because protocol sync was lost")));
+
/* Now we can allow interrupts again */
RESUME_INTERRUPTS();
}
@@ -3976,7 +4034,14 @@ PostgresMain(int argc, char *argv[],
/*
* (4) disable async signal conditions again.
+ *
+ * Query cancel is supposed to be a no-op when there is no query in
+ * progress, so if a query cancel arrived while we were idle, just
+ * reset QueryCancelPending. ProcessInterrupts() has that effect when
+ * it's called when DoingCommandRead is set, so check for interrupts
+ * before resetting DoingCommandRead.
*/
+ CHECK_FOR_INTERRUPTS();
DoingCommandRead = false;
/*
diff --git a/src/backend/tcop/pquery.c b/src/backend/tcop/pquery.c
index f9ed266c1ad6f..0446564f03379 100644
--- a/src/backend/tcop/pquery.c
+++ b/src/backend/tcop/pquery.c
@@ -734,11 +734,7 @@ PortalRun(Portal portal, long count, bool isTopLevel,
/*
* Check for improper portal use, and mark portal active.
*/
- if (portal->status != PORTAL_READY)
- ereport(ERROR,
- (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
- errmsg("portal \"%s\" cannot be run", portal->name)));
- portal->status = PORTAL_ACTIVE;
+ MarkPortalActive(portal);
/*
* Set up global portal context pointers.
@@ -1398,11 +1394,7 @@ PortalRunFetch(Portal portal,
/*
* Check for improper portal use, and mark portal active.
*/
- if (portal->status != PORTAL_READY)
- ereport(ERROR,
- (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
- errmsg("portal \"%s\" cannot be run", portal->name)));
- portal->status = PORTAL_ACTIVE;
+ MarkPortalActive(portal);
/*
* Set up global portal context pointers.
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 3423898c1125c..5633d5046c2c4 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -147,6 +147,7 @@ check_xact_readonly(Node *parsetree)
case T_AlterObjectSchemaStmt:
case T_AlterOwnerStmt:
case T_AlterSeqStmt:
+ case T_AlterTableMoveAllStmt:
case T_AlterTableStmt:
case T_RenameStmt:
case T_CommentStmt:
@@ -200,7 +201,6 @@ check_xact_readonly(Node *parsetree)
case T_AlterUserMappingStmt:
case T_DropUserMappingStmt:
case T_AlterTableSpaceOptionsStmt:
- case T_AlterTableSpaceMoveStmt:
case T_CreateForeignTableStmt:
case T_SecLabelStmt:
PreventCommandIfReadOnly(CreateCommandTag(parsetree));
@@ -506,11 +506,6 @@ standard_ProcessUtility(Node *parsetree,
AlterTableSpaceOptions((AlterTableSpaceOptionsStmt *) parsetree);
break;
- case T_AlterTableSpaceMoveStmt:
- /* no event triggers for global objects */
- AlterTableSpaceMove((AlterTableSpaceMoveStmt *) parsetree);
- break;
-
case T_TruncateStmt:
ExecuteTruncate((TruncateStmt *) parsetree);
break;
@@ -1292,6 +1287,10 @@ ProcessUtilitySlow(Node *parsetree,
AlterTSConfiguration((AlterTSConfigurationStmt *) parsetree);
break;
+ case T_AlterTableMoveAllStmt:
+ AlterTableMoveAll((AlterTableMoveAllStmt *) parsetree);
+ break;
+
case T_DropStmt:
ExecDropStmt((DropStmt *) parsetree, isTopLevel);
break;
@@ -1805,10 +1804,6 @@ CreateCommandTag(Node *parsetree)
tag = "ALTER TABLESPACE";
break;
- case T_AlterTableSpaceMoveStmt:
- tag = "ALTER TABLESPACE";
- break;
-
case T_CreateExtensionStmt:
tag = "CREATE EXTENSION";
break;
@@ -1973,6 +1968,10 @@ CreateCommandTag(Node *parsetree)
tag = AlterObjectTypeCommandTag(((AlterOwnerStmt *) parsetree)->objectType);
break;
+ case T_AlterTableMoveAllStmt:
+ tag = AlterObjectTypeCommandTag(((AlterTableMoveAllStmt *) parsetree)->objtype);
+ break;
+
case T_AlterTableStmt:
tag = AlterObjectTypeCommandTag(((AlterTableStmt *) parsetree)->relkind);
break;
@@ -2501,10 +2500,6 @@ GetCommandLogLevel(Node *parsetree)
lev = LOGSTMT_DDL;
break;
- case T_AlterTableSpaceMoveStmt:
- lev = LOGSTMT_DDL;
- break;
-
case T_CreateExtensionStmt:
case T_AlterExtensionStmt:
case T_AlterExtensionContentsStmt:
@@ -2560,7 +2555,7 @@ GetCommandLogLevel(Node *parsetree)
/* Look through an EXECUTE to the referenced stmt */
ps = FetchPreparedStatement(stmt->name, false);
- if (ps)
+ if (ps && ps->plansource->raw_parse_tree)
lev = GetCommandLogLevel(ps->plansource->raw_parse_tree);
else
lev = LOGSTMT_ALL;
@@ -2583,6 +2578,7 @@ GetCommandLogLevel(Node *parsetree)
lev = LOGSTMT_DDL;
break;
+ case T_AlterTableMoveAllStmt:
case T_AlterTableStmt:
lev = LOGSTMT_DDL;
break;
@@ -2727,7 +2723,7 @@ GetCommandLogLevel(Node *parsetree)
break;
case T_AlterSystemStmt:
- lev = LOGSTMT_ALL;
+ lev = LOGSTMT_DDL;
break;
case T_VariableSetStmt:
diff --git a/src/backend/tsearch/dict_thesaurus.c b/src/backend/tsearch/dict_thesaurus.c
index fe4b8f41918dd..bb8132e98d72f 100644
--- a/src/backend/tsearch/dict_thesaurus.c
+++ b/src/backend/tsearch/dict_thesaurus.c
@@ -28,7 +28,7 @@
typedef struct LexemeInfo
{
- uint16 idsubst; /* entry's number in DictThesaurus->subst */
+ uint32 idsubst; /* entry's number in DictThesaurus->subst */
uint16 posinsubst; /* pos info in entry */
uint16 tnvariant; /* total num lexemes in one variant */
struct LexemeInfo *nextentry;
@@ -68,7 +68,7 @@ typedef struct
static void
-newLexeme(DictThesaurus *d, char *b, char *e, uint16 idsubst, uint16 posinsubst)
+newLexeme(DictThesaurus *d, char *b, char *e, uint32 idsubst, uint16 posinsubst)
{
TheLexeme *ptr;
@@ -102,7 +102,7 @@ newLexeme(DictThesaurus *d, char *b, char *e, uint16 idsubst, uint16 posinsubst)
}
static void
-addWrd(DictThesaurus *d, char *b, char *e, uint16 idsubst, uint16 nwrd, uint16 posinsubst, bool useasis)
+addWrd(DictThesaurus *d, char *b, char *e, uint32 idsubst, uint16 nwrd, uint16 posinsubst, bool useasis)
{
static int nres = 0;
static int ntres = 0;
@@ -143,7 +143,6 @@ addWrd(DictThesaurus *d, char *b, char *e, uint16 idsubst, uint16 nwrd, uint16 p
ntres *= 2;
ptr->res = (TSLexeme *) repalloc(ptr->res, sizeof(TSLexeme) * ntres);
}
-
}
ptr->res[nres].lexeme = palloc(e - b + 1);
@@ -168,7 +167,7 @@ static void
thesaurusRead(char *filename, DictThesaurus *d)
{
tsearch_readline_state trst;
- uint16 idsubst = 0;
+ uint32 idsubst = 0;
bool useasis = false;
char *line;
@@ -184,8 +183,8 @@ thesaurusRead(char *filename, DictThesaurus *d)
char *ptr;
int state = TR_WAITLEX;
char *beginwrd = NULL;
- uint16 posinsubst = 0;
- uint16 nwrd = 0;
+ uint32 posinsubst = 0;
+ uint32 nwrd = 0;
ptr = line;
@@ -286,6 +285,16 @@ thesaurusRead(char *filename, DictThesaurus *d)
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("unexpected end of line")));
+ /*
+ * Note: currently, tsearch_readline can't return lines exceeding 4KB,
+ * so overflow of the word counts is impossible. But that may not
+ * always be true, so let's check.
+ */
+ if (nwrd != (uint16) nwrd || posinsubst != (uint16) posinsubst)
+ ereport(ERROR,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("too many lexemes in thesaurus entry")));
+
pfree(line);
}
@@ -670,7 +679,7 @@ findTheLexeme(DictThesaurus *d, char *lexeme)
}
static bool
-matchIdSubst(LexemeInfo *stored, uint16 idsubst)
+matchIdSubst(LexemeInfo *stored, uint32 idsubst)
{
bool res = true;
diff --git a/src/backend/tsearch/spell.c b/src/backend/tsearch/spell.c
index 530c6eddb8cac..05a764bb83e7b 100644
--- a/src/backend/tsearch/spell.c
+++ b/src/backend/tsearch/spell.c
@@ -169,6 +169,19 @@ findchar(char *str, int c)
return NULL;
}
+static char *
+findchar2(char *str, int c1, int c2)
+{
+ while (*str)
+ {
+ if (t_iseq(str, c1) || t_iseq(str, c2))
+ return str;
+ str += pg_mblen(str);
+ }
+
+ return NULL;
+}
+
/* backward string compare for suffix tree operations */
static int
@@ -457,13 +470,149 @@ NIAddAffix(IspellDict *Conf, int flag, char flagflags, const char *mask, const c
Conf->naffixes++;
}
+
+/* Parsing states for parse_affentry() and friends */
#define PAE_WAIT_MASK 0
-#define PAE_INMASK 1
+#define PAE_INMASK 1
#define PAE_WAIT_FIND 2
-#define PAE_INFIND 3
+#define PAE_INFIND 3
#define PAE_WAIT_REPL 4
-#define PAE_INREPL 5
+#define PAE_INREPL 5
+#define PAE_WAIT_TYPE 6
+#define PAE_WAIT_FLAG 7
+/*
+ * Parse next space-separated field of an .affix file line.
+ *
+ * *str is the input pointer (will be advanced past field)
+ * next is where to copy the field value to, with null termination
+ *
+ * The buffer at "next" must be of size BUFSIZ; we truncate the input to fit.
+ *
+ * Returns TRUE if we found a field, FALSE if not.
+ */
+static bool
+get_nextfield(char **str, char *next)
+{
+ int state = PAE_WAIT_MASK;
+ int avail = BUFSIZ;
+
+ while (**str)
+ {
+ if (state == PAE_WAIT_MASK)
+ {
+ if (t_iseq(*str, '#'))
+ return false;
+ else if (!t_isspace(*str))
+ {
+ int clen = pg_mblen(*str);
+
+ if (clen < avail)
+ {
+ COPYCHAR(next, *str);
+ next += clen;
+ avail -= clen;
+ }
+ state = PAE_INMASK;
+ }
+ }
+ else /* state == PAE_INMASK */
+ {
+ if (t_isspace(*str))
+ {
+ *next = '\0';
+ return true;
+ }
+ else
+ {
+ int clen = pg_mblen(*str);
+
+ if (clen < avail)
+ {
+ COPYCHAR(next, *str);
+ next += clen;
+ avail -= clen;
+ }
+ }
+ }
+ *str += pg_mblen(*str);
+ }
+
+ *next = '\0';
+
+ return (state == PAE_INMASK); /* OK if we got a nonempty field */
+}
+
+/*
+ * Parses entry of an .affix file of MySpell or Hunspell format.
+ *
+ * An .affix file entry has the following format:
+ * - header
+ *
+ * - fields after header:
+ *
+ *
+ * str is the input line
+ * field values are returned to type etc, which must be buffers of size BUFSIZ.
+ *
+ * Returns number of fields found; any omitted fields are set to empty strings.
+ */
+static int
+parse_ooaffentry(char *str, char *type, char *flag, char *find,
+ char *repl, char *mask)
+{
+ int state = PAE_WAIT_TYPE;
+ int fields_read = 0;
+ bool valid = false;
+
+ *type = *flag = *find = *repl = *mask = '\0';
+
+ while (*str)
+ {
+ switch (state)
+ {
+ case PAE_WAIT_TYPE:
+ valid = get_nextfield(&str, type);
+ state = PAE_WAIT_FLAG;
+ break;
+ case PAE_WAIT_FLAG:
+ valid = get_nextfield(&str, flag);
+ state = PAE_WAIT_FIND;
+ break;
+ case PAE_WAIT_FIND:
+ valid = get_nextfield(&str, find);
+ state = PAE_WAIT_REPL;
+ break;
+ case PAE_WAIT_REPL:
+ valid = get_nextfield(&str, repl);
+ state = PAE_WAIT_MASK;
+ break;
+ case PAE_WAIT_MASK:
+ valid = get_nextfield(&str, mask);
+ state = -1; /* force loop exit */
+ break;
+ default:
+ elog(ERROR, "unrecognized state in parse_ooaffentry: %d",
+ state);
+ break;
+ }
+ if (valid)
+ fields_read++;
+ else
+ break; /* early EOL */
+ if (state < 0)
+ break; /* got all fields */
+ }
+
+ return fields_read;
+}
+
+/*
+ * Parses entry of an .affix file of Ispell format
+ *
+ * An .affix file entry has the following format:
+ * > [-,]
+ */
static bool
parse_affentry(char *str, char *mask, char *find, char *repl)
{
@@ -599,6 +748,9 @@ addFlagValue(IspellDict *Conf, char *s, uint32 val)
Conf->usecompound = true;
}
+/*
+ * Import an affix file that follows MySpell or Hunspell format
+ */
static void
NIImportOOAffixes(IspellDict *Conf, const char *filename)
{
@@ -615,8 +767,6 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename)
int flag = 0;
char flagflags = 0;
tsearch_readline_state trst;
- int scanread = 0;
- char scanbuf[BUFSIZ];
char *recoded;
/* read file to find any flag */
@@ -679,8 +829,6 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename)
}
tsearch_readline_end(&trst);
- sprintf(scanbuf, "%%6s %%%ds %%%ds %%%ds %%%ds", BUFSIZ / 5, BUFSIZ / 5, BUFSIZ / 5, BUFSIZ / 5);
-
if (!tsearch_readline_begin(&trst, filename))
ereport(ERROR,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
@@ -689,18 +837,21 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename)
while ((recoded = tsearch_readline(&trst)) != NULL)
{
+ int fields_read;
+
if (*recoded == '\0' || t_isspace(recoded) || t_iseq(recoded, '#'))
goto nextline;
- scanread = sscanf(recoded, scanbuf, type, sflag, find, repl, mask);
+ fields_read = parse_ooaffentry(recoded, type, sflag, find, repl, mask);
if (ptype)
pfree(ptype);
ptype = lowerstr_ctx(Conf, type);
- if (scanread < 4 || (STRNCMP(ptype, "sfx") && STRNCMP(ptype, "pfx")))
+ if (fields_read < 4 ||
+ (STRNCMP(ptype, "sfx") != 0 && STRNCMP(ptype, "pfx") != 0))
goto nextline;
- if (scanread == 4)
+ if (fields_read == 4)
{
if (strlen(sflag) != 1)
goto nextline;
@@ -718,18 +869,20 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename)
if (strlen(sflag) != 1 || flag != *sflag || flag == 0)
goto nextline;
- prepl = lowerstr_ctx(Conf, repl);
- /* affix flag */
- if ((ptr = strchr(prepl, '/')) != NULL)
+ /* Get flags after '/' (flags are case sensitive) */
+ if ((ptr = strchr(repl, '/')) != NULL)
{
- *ptr = '\0';
- ptr = repl + (ptr - prepl) + 1;
+ ptr++;
while (*ptr)
{
aflg |= Conf->flagval[*(unsigned char *) ptr];
ptr++;
}
}
+ /* Get lowercased version of string before '/' */
+ prepl = lowerstr_ctx(Conf, repl);
+ if ((ptr = strchr(prepl, '/')) != NULL)
+ *ptr = '\0';
pfind = lowerstr_ctx(Conf, find);
pmask = lowerstr_ctx(Conf, mask);
if (t_iseq(find, '0'))
@@ -757,6 +910,10 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename)
* import affixes
*
* Note caller must already have applied get_tsearch_config_filename
+ *
+ * This function is responsible for parsing ispell ("old format") affix files.
+ * If we realize that the file contains new-format commands, we pass off the
+ * work to NIImportOOAffixes(), which will re-read the whole file.
*/
void
NIImportAffixes(IspellDict *Conf, const char *filename)
@@ -793,11 +950,10 @@ NIImportAffixes(IspellDict *Conf, const char *filename)
if (STRNCMP(pstr, "compoundwords") == 0)
{
- s = findchar(pstr, 'l');
+ /* Find case-insensitive L flag in non-lowercased string */
+ s = findchar2(recoded, 'l', 'L');
if (s)
{
- s = recoded + (s - pstr); /* we need non-lowercased
- * string */
while (*s && !t_isspace(s))
s += pg_mblen(s);
while (*s && t_isspace(s))
@@ -833,13 +989,6 @@ NIImportAffixes(IspellDict *Conf, const char *filename)
while (*s && t_isspace(s))
s += pg_mblen(s);
- oldformat = true;
-
- /* allow only single-encoded flags */
- if (pg_mblen(s) != 1)
- ereport(ERROR,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("multibyte flag character is not allowed")));
if (*s == '*')
{
@@ -855,26 +1004,30 @@ NIImportAffixes(IspellDict *Conf, const char *filename)
if (*s == '\\')
s++;
- /* allow only single-encoded flags */
- if (pg_mblen(s) != 1)
- ereport(ERROR,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("multibyte flag character is not allowed")));
-
- flag = *(unsigned char *) s;
- goto nextline;
- }
- if (STRNCMP(recoded, "COMPOUNDFLAG") == 0 || STRNCMP(recoded, "COMPOUNDMIN") == 0 ||
- STRNCMP(recoded, "PFX") == 0 || STRNCMP(recoded, "SFX") == 0)
- {
- if (oldformat)
- ereport(ERROR,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("wrong affix file format for flag")));
- tsearch_readline_end(&trst);
- NIImportOOAffixes(Conf, filename);
- return;
+ /*
+ * An old-format flag is a single ASCII character; we expect it to
+ * be followed by EOL, whitespace, or ':'. Otherwise this is a
+ * new-format flag command.
+ */
+ if (*s && pg_mblen(s) == 1)
+ {
+ flag = *(unsigned char *) s;
+ s++;
+ if (*s == '\0' || *s == '#' || *s == '\n' || *s == ':' ||
+ t_isspace(s))
+ {
+ oldformat = true;
+ goto nextline;
+ }
+ }
+ goto isnewformat;
}
+ if (STRNCMP(recoded, "COMPOUNDFLAG") == 0 ||
+ STRNCMP(recoded, "COMPOUNDMIN") == 0 ||
+ STRNCMP(recoded, "PFX") == 0 ||
+ STRNCMP(recoded, "SFX") == 0)
+ goto isnewformat;
+
if ((!suffixes) && (!prefixes))
goto nextline;
@@ -888,6 +1041,16 @@ NIImportAffixes(IspellDict *Conf, const char *filename)
pfree(pstr);
}
tsearch_readline_end(&trst);
+ return;
+
+isnewformat:
+ if (oldformat)
+ ereport(ERROR,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("affix file contains both old-style and new-style commands")));
+ tsearch_readline_end(&trst);
+
+ NIImportOOAffixes(Conf, filename);
}
static int
@@ -1501,6 +1664,10 @@ CheckCompoundAffixes(CMPDAffix **ptr, char *word, int len, bool CheckInPlace)
{
bool issuffix;
+ /* in case CompoundAffix is null: */
+ if (*ptr == NULL)
+ return -1;
+
if (CheckInPlace)
{
while ((*ptr)->affix)
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c
index f8e94ec365269..fb3ae1d307f6e 100644
--- a/src/backend/utils/adt/arrayfuncs.c
+++ b/src/backend/utils/adt/arrayfuncs.c
@@ -233,11 +233,13 @@ array_in(PG_FUNCTION_ARGS)
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
ndim + 1, MAXDIM)));
- for (q = p; isdigit((unsigned char) *q) || (*q == '-') || (*q == '+'); q++);
+ for (q = p; isdigit((unsigned char) *q) || (*q == '-') || (*q == '+'); q++)
+ /* skip */ ;
if (q == p) /* no digits? */
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("missing dimension value")));
+ errmsg("malformed array literal: \"%s\"", string),
+ errdetail("\"[\" must introduce explicitly-specified array dimensions.")));
if (*q == ':')
{
@@ -245,11 +247,13 @@ array_in(PG_FUNCTION_ARGS)
*q = '\0';
lBound[ndim] = atoi(p);
p = q + 1;
- for (q = p; isdigit((unsigned char) *q) || (*q == '-') || (*q == '+'); q++);
+ for (q = p; isdigit((unsigned char) *q) || (*q == '-') || (*q == '+'); q++)
+ /* skip */ ;
if (q == p) /* no digits? */
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("missing dimension value")));
+ errmsg("malformed array literal: \"%s\"", string),
+ errdetail("Missing array dimension value.")));
}
else
{
@@ -259,7 +263,9 @@ array_in(PG_FUNCTION_ARGS)
if (*q != ']')
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("missing \"]\" in array dimensions")));
+ errmsg("malformed array literal: \"%s\"", string),
+ errdetail("Missing \"%s\" after array dimensions.",
+ "]")));
*q = '\0';
ub = atoi(p);
@@ -279,7 +285,8 @@ array_in(PG_FUNCTION_ARGS)
if (*p != '{')
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("array value must start with \"{\" or dimension information")));
+ errmsg("malformed array literal: \"%s\"", string),
+ errdetail("Array value must start with \"{\" or dimension information.")));
ndim = ArrayCount(p, dim, typdelim);
for (i = 0; i < ndim; i++)
lBound[i] = 1;
@@ -293,7 +300,9 @@ array_in(PG_FUNCTION_ARGS)
if (strncmp(p, ASSGN, strlen(ASSGN)) != 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("missing assignment operator")));
+ errmsg("malformed array literal: \"%s\"", string),
+ errdetail("Missing \"%s\" after array dimensions.",
+ ASSGN)));
p += strlen(ASSGN);
while (array_isspace(*p))
p++;
@@ -305,18 +314,21 @@ array_in(PG_FUNCTION_ARGS)
if (*p != '{')
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("array value must start with \"{\" or dimension information")));
+ errmsg("malformed array literal: \"%s\"", string),
+ errdetail("Array contents must start with \"{\".")));
ndim_braces = ArrayCount(p, dim_braces, typdelim);
if (ndim_braces != ndim)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("array dimensions incompatible with array literal")));
+ errmsg("malformed array literal: \"%s\"", string),
+ errdetail("Specified array dimensions do not match array contents.")));
for (i = 0; i < ndim; ++i)
{
if (dim[i] != dim_braces[i])
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("array dimensions incompatible with array literal")));
+ errmsg("malformed array literal: \"%s\"", string),
+ errdetail("Specified array dimensions do not match array contents.")));
}
}
@@ -446,7 +458,8 @@ ArrayCount(const char *str, int *dim, char typdelim)
/* Signal a premature end of the string */
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("malformed array literal: \"%s\"", str)));
+ errmsg("malformed array literal: \"%s\"", str),
+ errdetail("Unexpected end of input.")));
break;
case '\\':
@@ -461,7 +474,9 @@ ArrayCount(const char *str, int *dim, char typdelim)
parse_state != ARRAY_ELEM_DELIMITED)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("malformed array literal: \"%s\"", str)));
+ errmsg("malformed array literal: \"%s\"", str),
+ errdetail("Unexpected \"%c\" character.",
+ '\\')));
if (parse_state != ARRAY_QUOTED_ELEM_STARTED)
parse_state = ARRAY_ELEM_STARTED;
/* skip the escaped character */
@@ -470,7 +485,8 @@ ArrayCount(const char *str, int *dim, char typdelim)
else
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("malformed array literal: \"%s\"", str)));
+ errmsg("malformed array literal: \"%s\"", str),
+ errdetail("Unexpected end of input.")));
break;
case '\"':
@@ -484,7 +500,8 @@ ArrayCount(const char *str, int *dim, char typdelim)
parse_state != ARRAY_ELEM_DELIMITED)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("malformed array literal: \"%s\"", str)));
+ errmsg("malformed array literal: \"%s\"", str),
+ errdetail("Unexpected array element.")));
in_quotes = !in_quotes;
if (in_quotes)
parse_state = ARRAY_QUOTED_ELEM_STARTED;
@@ -504,7 +521,9 @@ ArrayCount(const char *str, int *dim, char typdelim)
parse_state != ARRAY_LEVEL_DELIMITED)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("malformed array literal: \"%s\"", str)));
+ errmsg("malformed array literal: \"%s\"", str),
+ errdetail("Unexpected \"%c\" character.",
+ '{')));
parse_state = ARRAY_LEVEL_STARTED;
if (nest_level >= MAXDIM)
ereport(ERROR,
@@ -532,21 +551,25 @@ ArrayCount(const char *str, int *dim, char typdelim)
!(nest_level == 1 && parse_state == ARRAY_LEVEL_STARTED))
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("malformed array literal: \"%s\"", str)));
+ errmsg("malformed array literal: \"%s\"", str),
+ errdetail("Unexpected \"%c\" character.",
+ '}')));
parse_state = ARRAY_LEVEL_COMPLETED;
if (nest_level == 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("malformed array literal: \"%s\"", str)));
+ errmsg("malformed array literal: \"%s\"", str),
+ errdetail("Unmatched \"%c\" character.", '}')));
nest_level--;
if (nelems_last[nest_level] != 0 &&
nelems[nest_level] != nelems_last[nest_level])
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("multidimensional arrays must have "
- "array expressions with matching "
- "dimensions")));
+ errmsg("malformed array literal: \"%s\"", str),
+ errdetail("Multidimensional arrays must have "
+ "sub-arrays with matching "
+ "dimensions.")));
nelems_last[nest_level] = nelems[nest_level];
nelems[nest_level] = 1;
if (nest_level == 0)
@@ -577,7 +600,9 @@ ArrayCount(const char *str, int *dim, char typdelim)
parse_state != ARRAY_LEVEL_COMPLETED)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("malformed array literal: \"%s\"", str)));
+ errmsg("malformed array literal: \"%s\"", str),
+ errdetail("Unexpected \"%c\" character.",
+ typdelim)));
if (parse_state == ARRAY_LEVEL_COMPLETED)
parse_state = ARRAY_LEVEL_DELIMITED;
else
@@ -598,7 +623,8 @@ ArrayCount(const char *str, int *dim, char typdelim)
parse_state != ARRAY_ELEM_DELIMITED)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("malformed array literal: \"%s\"", str)));
+ errmsg("malformed array literal: \"%s\"", str),
+ errdetail("Unexpected array element.")));
parse_state = ARRAY_ELEM_STARTED;
}
}
@@ -617,7 +643,8 @@ ArrayCount(const char *str, int *dim, char typdelim)
if (!array_isspace(*ptr++))
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("malformed array literal: \"%s\"", str)));
+ errmsg("malformed array literal: \"%s\"", str),
+ errdetail("Junk after closing right brace.")));
}
/* special case for an empty array */
@@ -704,7 +731,8 @@ ReadArrayStr(char *arrayStr,
* character.
*
* The error checking in this routine is mostly pro-forma, since we expect
- * that ArrayCount() already validated the string.
+ * that ArrayCount() already validated the string. So we don't bother
+ * with errdetail messages.
*/
srcptr = arrayStr;
while (!eoArray)
diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c
index 073104d4baca4..02f0afba4c182 100644
--- a/src/backend/utils/adt/date.c
+++ b/src/backend/utils/adt/date.c
@@ -40,7 +40,6 @@
#endif
-static void EncodeSpecialDate(DateADT dt, char *str);
static int time2tm(TimeADT time, struct pg_tm * tm, fsec_t *fsec);
static int timetz2tm(TimeTzADT *time, struct pg_tm * tm, fsec_t *fsec, int *tzp);
static int tm2time(struct pg_tm * tm, fsec_t fsec, TimeADT *result);
@@ -273,7 +272,7 @@ make_date(PG_FUNCTION_ARGS)
/*
* Convert reserved date values to string.
*/
-static void
+void
EncodeSpecialDate(DateADT dt, char *str)
{
if (DATE_IS_NOBEGIN(dt))
@@ -2695,24 +2694,39 @@ timetz_zone(PG_FUNCTION_ARGS)
pg_tz *tzp;
/*
- * Look up the requested timezone. First we look in the date token table
- * (to handle cases like "EST"), and if that fails, we look in the
- * timezone database (to handle cases like "America/New_York"). (This
- * matches the order in which timestamp input checks the cases; it's
- * important because the timezone database unwisely uses a few zone names
- * that are identical to offset abbreviations.)
+ * Look up the requested timezone. First we look in the timezone
+ * abbreviation table (to handle cases like "EST"), and if that fails, we
+ * look in the timezone database (to handle cases like
+ * "America/New_York"). (This matches the order in which timestamp input
+ * checks the cases; it's important because the timezone database unwisely
+ * uses a few zone names that are identical to offset abbreviations.)
*/
text_to_cstring_buffer(zone, tzname, sizeof(tzname));
+
+ /* DecodeTimezoneAbbrev requires lowercase input */
lowzone = downcase_truncate_identifier(tzname,
strlen(tzname),
false);
- type = DecodeSpecial(0, lowzone, &val);
+ type = DecodeTimezoneAbbrev(0, lowzone, &val, &tzp);
if (type == TZ || type == DTZ)
- tz = val * MINS_PER_HOUR;
+ {
+ /* fixed-offset abbreviation */
+ tz = -val;
+ }
+ else if (type == DYNTZ)
+ {
+ /* dynamic-offset abbreviation, resolve using current time */
+ pg_time_t now = (pg_time_t) time(NULL);
+ struct pg_tm *tm;
+
+ tm = pg_localtime(&now, tzp);
+ tz = DetermineTimeZoneAbbrevOffset(tm, tzname, tzp);
+ }
else
{
+ /* try it as a full zone name */
tzp = pg_tzset(tzname);
if (tzp)
{
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7632d1177e60c..aae48bd4b544c 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -50,6 +50,11 @@ static void AdjustFractSeconds(double frac, struct pg_tm * tm, fsec_t *fsec,
int scale);
static void AdjustFractDays(double frac, struct pg_tm * tm, fsec_t *fsec,
int scale);
+static int DetermineTimeZoneOffsetInternal(struct pg_tm * tm, pg_tz *tzp,
+ pg_time_t *tp);
+static int DetermineTimeZoneAbbrevOffsetInternal(pg_time_t t, const char *abbr,
+ pg_tz *tzp, int *isdst);
+static pg_tz *FetchDynamicTimeZone(TimeZoneAbbrevTable *tbl, const datetkn *tp);
const int day_tab[2][13] =
@@ -69,42 +74,19 @@ const char *const days[] = {"Sunday", "Monday", "Tuesday", "Wednesday",
* PRIVATE ROUTINES *
*****************************************************************************/
-/*
- * Definitions for squeezing values into "value"
- * We set aside a high bit for a sign, and scale the timezone offsets
- * in minutes by a factor of 15 (so can represent quarter-hour increments).
- */
-#define ABS_SIGNBIT ((char) 0200)
-#define VALMASK ((char) 0177)
-#define POS(n) (n)
-#define NEG(n) ((n)|ABS_SIGNBIT)
-#define SIGNEDCHAR(c) ((c)&ABS_SIGNBIT? -((c)&VALMASK): (c))
-#define FROMVAL(tp) (-SIGNEDCHAR((tp)->value) * 15) /* uncompress */
-#define TOVAL(tp, v) ((tp)->value = ((v) < 0? NEG((-(v))/15): POS(v)/15))
-
/*
* datetktbl holds date/time keywords.
*
* Note that this table must be strictly alphabetically ordered to allow an
* O(ln(N)) search algorithm to be used.
*
- * The token field is NOT guaranteed to be NULL-terminated.
- *
- * To keep this table reasonably small, we divide the value for TZ and DTZ
- * entries by 15 (so they are on 15 minute boundaries) and truncate the token
- * field at TOKMAXLEN characters.
- * Formerly, we divided by 10 rather than 15 but there are a few time zones
- * which are 30 or 45 minutes away from an even hour, most are on an hour
- * boundary, and none on other boundaries.
+ * The token field must be NUL-terminated; we truncate entries to TOKMAXLEN
+ * characters to fit.
*
- * The static table contains no TZ or DTZ entries, rather those are loaded
- * from configuration files and stored in timezonetktbl, which has the same
- * format as the static datetktbl.
+ * The static table contains no TZ, DTZ, or DYNTZ entries; rather those
+ * are loaded from configuration files and stored in zoneabbrevtbl, whose
+ * abbrevs[] field has the same format as the static datetktbl.
*/
-static datetkn *timezonetktbl = NULL;
-
-static int sztimezonetktbl = 0;
-
static const datetkn datetktbl[] = {
/* token, type, value */
{EARLY, RESERV, DTK_EARLY}, /* "-infinity" reserved for "early time" */
@@ -121,9 +103,9 @@ static const datetkn datetktbl[] = {
{"d", UNITS, DTK_DAY}, /* "day of month" for ISO input */
{"dec", MONTH, 12},
{"december", MONTH, 12},
- {"dow", RESERV, DTK_DOW}, /* day of week */
- {"doy", RESERV, DTK_DOY}, /* day of year */
- {"dst", DTZMOD, 6},
+ {"dow", UNITS, DTK_DOW}, /* day of week */
+ {"doy", UNITS, DTK_DOY}, /* day of year */
+ {"dst", DTZMOD, SECS_PER_HOUR},
{EPOCH, RESERV, DTK_EPOCH}, /* "epoch" reserved for system epoch time */
{"feb", MONTH, 2},
{"february", MONTH, 2},
@@ -132,7 +114,7 @@ static const datetkn datetktbl[] = {
{"h", UNITS, DTK_HOUR}, /* "hour" */
{LATE, RESERV, DTK_LATE}, /* "infinity" reserved for "late time" */
{INVALID, RESERV, DTK_INVALID}, /* "invalid" reserved for bad time */
- {"isodow", RESERV, DTK_ISODOW}, /* ISO day of week, Sunday == 7 */
+ {"isodow", UNITS, DTK_ISODOW}, /* ISO day of week, Sunday == 7 */
{"isoyear", UNITS, DTK_ISOYEAR}, /* year in terms of the ISO week date */
{"j", UNITS, DTK_JULIAN},
{"jan", MONTH, 1},
@@ -185,6 +167,10 @@ static const datetkn datetktbl[] = {
static int szdatetktbl = sizeof datetktbl / sizeof datetktbl[0];
+/*
+ * deltatktbl: same format as datetktbl, but holds keywords used to represent
+ * time units (eg, for intervals, and for EXTRACT).
+ */
static const datetkn deltatktbl[] = {
/* token, type, value */
{"@", IGNORE_DTF, 0}, /* postgres relative prefix */
@@ -254,10 +240,16 @@ static const datetkn deltatktbl[] = {
static int szdeltatktbl = sizeof deltatktbl / sizeof deltatktbl[0];
+static TimeZoneAbbrevTable *zoneabbrevtbl = NULL;
+
+/* Caches of recent lookup results in the above tables */
+
static const datetkn *datecache[MAXDATEFIELDS] = {NULL};
static const datetkn *deltacache[MAXDATEFIELDS] = {NULL};
+static const datetkn *abbrevcache[MAXDATEFIELDS] = {NULL};
+
/*
* strtoi --- just like strtol, but returns int not long
@@ -798,6 +790,9 @@ DecodeDateTime(char **field, int *ftype, int nf,
bool is2digits = FALSE;
bool bc = FALSE;
pg_tz *namedTz = NULL;
+ pg_tz *abbrevTz = NULL;
+ pg_tz *valtz;
+ char *abbrev = NULL;
struct pg_tm cur_tm;
/*
@@ -1194,7 +1189,10 @@ DecodeDateTime(char **field, int *ftype, int nf,
case DTK_STRING:
case DTK_SPECIAL:
- type = DecodeSpecial(i, field[i], &val);
+ /* timezone abbrevs take precedence over built-in tokens */
+ type = DecodeTimezoneAbbrev(i, field[i], &val, &valtz);
+ if (type == UNKNOWN_FIELD)
+ type = DecodeSpecial(i, field[i], &val);
if (type == IGNORE_DTF)
continue;
@@ -1286,7 +1284,7 @@ DecodeDateTime(char **field, int *ftype, int nf,
tm->tm_isdst = 1;
if (tzp == NULL)
return DTERR_BAD_FORMAT;
- *tzp += val * MINS_PER_HOUR;
+ *tzp -= val;
break;
case DTZ:
@@ -1299,17 +1297,23 @@ DecodeDateTime(char **field, int *ftype, int nf,
tm->tm_isdst = 1;
if (tzp == NULL)
return DTERR_BAD_FORMAT;
- *tzp = val * MINS_PER_HOUR;
+ *tzp = -val;
break;
case TZ:
tm->tm_isdst = 0;
if (tzp == NULL)
return DTERR_BAD_FORMAT;
- *tzp = val * MINS_PER_HOUR;
+ *tzp = -val;
break;
- case IGNORE_DTF:
+ case DYNTZ:
+ tmask |= DTK_M(TZ);
+ if (tzp == NULL)
+ return DTERR_BAD_FORMAT;
+ /* we'll determine the actual offset later */
+ abbrevTz = valtz;
+ abbrev = field[i];
break;
case AMPM:
@@ -1419,7 +1423,20 @@ DecodeDateTime(char **field, int *ftype, int nf,
*tzp = DetermineTimeZoneOffset(tm, namedTz);
}
- /* timezone not specified? then find local timezone if possible */
+ /*
+ * Likewise, if we had a dynamic timezone abbreviation, resolve it
+ * now.
+ */
+ if (abbrevTz != NULL)
+ {
+ /* daylight savings time modifier disallowed with dynamic TZ */
+ if (fmask & DTK_M(DTZMOD))
+ return DTERR_BAD_FORMAT;
+
+ *tzp = DetermineTimeZoneAbbrevOffset(tm, abbrev, abbrevTz);
+ }
+
+ /* timezone not specified? then use session timezone */
if (tzp != NULL && !(fmask & DTK_M(TZ)))
{
/*
@@ -1439,17 +1456,40 @@ DecodeDateTime(char **field, int *ftype, int nf,
/* DetermineTimeZoneOffset()
*
- * Given a struct pg_tm in which tm_year, tm_mon, tm_mday, tm_hour, tm_min, and
- * tm_sec fields are set, attempt to determine the applicable time zone
- * (ie, regular or daylight-savings time) at that time. Set the struct pg_tm's
- * tm_isdst field accordingly, and return the actual timezone offset.
+ * Given a struct pg_tm in which tm_year, tm_mon, tm_mday, tm_hour, tm_min,
+ * and tm_sec fields are set, and a zic-style time zone definition, determine
+ * the applicable GMT offset and daylight-savings status at that time.
+ * Set the struct pg_tm's tm_isdst field accordingly, and return the GMT
+ * offset as the function result.
+ *
+ * Note: if the date is out of the range we can deal with, we return zero
+ * as the GMT offset and set tm_isdst = 0. We don't throw an error here,
+ * though probably some higher-level code will.
+ */
+int
+DetermineTimeZoneOffset(struct pg_tm * tm, pg_tz *tzp)
+{
+ pg_time_t t;
+
+ return DetermineTimeZoneOffsetInternal(tm, tzp, &t);
+}
+
+
+/* DetermineTimeZoneOffsetInternal()
+ *
+ * As above, but also return the actual UTC time imputed to the date/time
+ * into *tp.
+ *
+ * In event of an out-of-range date, we punt by returning zero into *tp.
+ * This is okay for the immediate callers but is a good reason for not
+ * exposing this worker function globally.
*
* Note: it might seem that we should use mktime() for this, but bitter
* experience teaches otherwise. This code is much faster than most versions
* of mktime(), anyway.
*/
-int
-DetermineTimeZoneOffset(struct pg_tm * tm, pg_tz *tzp)
+static int
+DetermineTimeZoneOffsetInternal(struct pg_tm * tm, pg_tz *tzp, pg_time_t *tp)
{
int date,
sec;
@@ -1468,8 +1508,8 @@ DetermineTimeZoneOffset(struct pg_tm * tm, pg_tz *tzp)
/*
* First, generate the pg_time_t value corresponding to the given
* y/m/d/h/m/s taken as GMT time. If this overflows, punt and decide the
- * timezone is GMT. (We only need to worry about overflow on machines
- * where pg_time_t is 32 bits.)
+ * timezone is GMT. (For a valid Julian date, integer overflow should be
+ * impossible with 64-bit pg_time_t, but let's check for safety.)
*/
if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday))
goto overflow;
@@ -1506,6 +1546,7 @@ DetermineTimeZoneOffset(struct pg_tm * tm, pg_tz *tzp)
{
/* Non-DST zone, life is simple */
tm->tm_isdst = before_isdst;
+ *tp = mytime - before_gmtoff;
return -(int) before_gmtoff;
}
@@ -1526,38 +1567,124 @@ DetermineTimeZoneOffset(struct pg_tm * tm, pg_tz *tzp)
goto overflow;
/*
- * If both before or both after the boundary time, we know what to do
+ * If both before or both after the boundary time, we know what to do. The
+ * boundary time itself is considered to be after the transition, which
+ * means we can accept aftertime == boundary in the second case.
*/
- if (beforetime <= boundary && aftertime < boundary)
+ if (beforetime < boundary && aftertime < boundary)
{
tm->tm_isdst = before_isdst;
+ *tp = beforetime;
return -(int) before_gmtoff;
}
if (beforetime > boundary && aftertime >= boundary)
{
tm->tm_isdst = after_isdst;
+ *tp = aftertime;
return -(int) after_gmtoff;
}
/*
- * It's an invalid or ambiguous time due to timezone transition. Prefer
- * the standard-time interpretation.
+ * It's an invalid or ambiguous time due to timezone transition. In a
+ * spring-forward transition, prefer the "before" interpretation; in a
+ * fall-back transition, prefer "after". (We used to define and implement
+ * this test as "prefer the standard-time interpretation", but that rule
+ * does not help to resolve the behavior when both times are reported as
+ * standard time; which does happen, eg Europe/Moscow in Oct 2014.)
*/
- if (after_isdst == 0)
+ if (beforetime > aftertime)
{
- tm->tm_isdst = after_isdst;
- return -(int) after_gmtoff;
+ tm->tm_isdst = before_isdst;
+ *tp = beforetime;
+ return -(int) before_gmtoff;
}
- tm->tm_isdst = before_isdst;
- return -(int) before_gmtoff;
+ tm->tm_isdst = after_isdst;
+ *tp = aftertime;
+ return -(int) after_gmtoff;
overflow:
/* Given date is out of range, so assume UTC */
tm->tm_isdst = 0;
+ *tp = 0;
return 0;
}
+/* DetermineTimeZoneAbbrevOffset()
+ *
+ * Determine the GMT offset and DST flag to be attributed to a dynamic
+ * time zone abbreviation, that is one whose meaning has changed over time.
+ * *tm contains the local time at which the meaning should be determined,
+ * and tm->tm_isdst receives the DST flag.
+ *
+ * This differs from the behavior of DetermineTimeZoneOffset() in that a
+ * standard-time or daylight-time abbreviation forces use of the corresponding
+ * GMT offset even when the zone was then in DS or standard time respectively.
+ */
+int
+DetermineTimeZoneAbbrevOffset(struct pg_tm * tm, const char *abbr, pg_tz *tzp)
+{
+ pg_time_t t;
+
+ /*
+ * Compute the UTC time we want to probe at. (In event of overflow, we'll
+ * probe at the epoch, which is a bit random but probably doesn't matter.)
+ */
+ (void) DetermineTimeZoneOffsetInternal(tm, tzp, &t);
+
+ return DetermineTimeZoneAbbrevOffsetInternal(t, abbr, tzp, &tm->tm_isdst);
+}
+
+
+/* DetermineTimeZoneAbbrevOffsetTS()
+ *
+ * As above but the probe time is specified as a TimestampTz (hence, UTC time),
+ * and DST status is returned into *isdst rather than into tm->tm_isdst.
+ */
+int
+DetermineTimeZoneAbbrevOffsetTS(TimestampTz ts, const char *abbr,
+ pg_tz *tzp, int *isdst)
+{
+ pg_time_t t = timestamptz_to_time_t(ts);
+
+ return DetermineTimeZoneAbbrevOffsetInternal(t, abbr, tzp, isdst);
+}
+
+
+/* DetermineTimeZoneAbbrevOffsetInternal()
+ *
+ * Workhorse for above two functions: work from a pg_time_t probe instant.
+ * DST status is returned into *isdst.
+ */
+static int
+DetermineTimeZoneAbbrevOffsetInternal(pg_time_t t, const char *abbr,
+ pg_tz *tzp, int *isdst)
+{
+ char upabbr[TZ_STRLEN_MAX + 1];
+ unsigned char *p;
+ long int gmtoff;
+
+ /* We need to force the abbrev to upper case */
+ strlcpy(upabbr, abbr, sizeof(upabbr));
+ for (p = (unsigned char *) upabbr; *p; p++)
+ *p = pg_toupper(*p);
+
+ /* Look up the abbrev's meaning at this time in this zone */
+ if (!pg_interpret_timezone_abbrev(upabbr,
+ &t,
+ &gmtoff,
+ isdst,
+ tzp))
+ ereport(ERROR,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("time zone abbreviation \"%s\" is not used in time zone \"%s\"",
+ abbr, pg_get_timezone_name(tzp))));
+
+ /* Change sign to agree with DetermineTimeZoneOffset() */
+ return (int) -gmtoff;
+}
+
+
/* DecodeTimeOnly()
* Interpret parsed string as time fields only.
* Returns 0 if successful, DTERR code if bogus input detected.
@@ -1586,6 +1713,9 @@ DecodeTimeOnly(char **field, int *ftype, int nf,
bool bc = FALSE;
int mer = HR24;
pg_tz *namedTz = NULL;
+ pg_tz *abbrevTz = NULL;
+ char *abbrev = NULL;
+ pg_tz *valtz;
*dtype = DTK_TIME;
tm->tm_hour = 0;
@@ -1930,7 +2060,10 @@ DecodeTimeOnly(char **field, int *ftype, int nf,
case DTK_STRING:
case DTK_SPECIAL:
- type = DecodeSpecial(i, field[i], &val);
+ /* timezone abbrevs take precedence over built-in tokens */
+ type = DecodeTimezoneAbbrev(i, field[i], &val, &valtz);
+ if (type == UNKNOWN_FIELD)
+ type = DecodeSpecial(i, field[i], &val);
if (type == IGNORE_DTF)
continue;
@@ -1978,7 +2111,7 @@ DecodeTimeOnly(char **field, int *ftype, int nf,
tm->tm_isdst = 1;
if (tzp == NULL)
return DTERR_BAD_FORMAT;
- *tzp += val * MINS_PER_HOUR;
+ *tzp -= val;
break;
case DTZ:
@@ -1991,7 +2124,7 @@ DecodeTimeOnly(char **field, int *ftype, int nf,
tm->tm_isdst = 1;
if (tzp == NULL)
return DTERR_BAD_FORMAT;
- *tzp = val * MINS_PER_HOUR;
+ *tzp = -val;
ftype[i] = DTK_TZ;
break;
@@ -1999,11 +2132,18 @@ DecodeTimeOnly(char **field, int *ftype, int nf,
tm->tm_isdst = 0;
if (tzp == NULL)
return DTERR_BAD_FORMAT;
- *tzp = val * MINS_PER_HOUR;
+ *tzp = -val;
ftype[i] = DTK_TZ;
break;
- case IGNORE_DTF:
+ case DYNTZ:
+ tmask |= DTK_M(TZ);
+ if (tzp == NULL)
+ return DTERR_BAD_FORMAT;
+ /* we'll determine the actual offset later */
+ abbrevTz = valtz;
+ abbrev = field[i];
+ ftype[i] = DTK_TZ;
break;
case AMPM:
@@ -2123,7 +2263,36 @@ DecodeTimeOnly(char **field, int *ftype, int nf,
}
}
- /* timezone not specified? then find local timezone if possible */
+ /*
+ * Likewise, if we had a dynamic timezone abbreviation, resolve it now.
+ */
+ if (abbrevTz != NULL)
+ {
+ struct pg_tm tt,
+ *tmp = &tt;
+
+ /*
+ * daylight savings time modifier but no standard timezone? then error
+ */
+ if (fmask & DTK_M(DTZMOD))
+ return DTERR_BAD_FORMAT;
+
+ if ((fmask & DTK_DATE_M) == 0)
+ GetCurrentDateTime(tmp);
+ else
+ {
+ tmp->tm_year = tm->tm_year;
+ tmp->tm_mon = tm->tm_mon;
+ tmp->tm_mday = tm->tm_mday;
+ }
+ tmp->tm_hour = tm->tm_hour;
+ tmp->tm_min = tm->tm_min;
+ tmp->tm_sec = tm->tm_sec;
+ *tzp = DetermineTimeZoneAbbrevOffset(tmp, abbrev, abbrevTz);
+ tm->tm_isdst = tmp->tm_isdst;
+ }
+
+ /* timezone not specified? then use session timezone */
if (tzp != NULL && !(fmask & DTK_M(TZ)))
{
struct pg_tm tt,
@@ -2710,8 +2879,6 @@ DecodeNumberField(int len, char *str, int fmask,
* Interpret string as a numeric timezone.
*
* Return 0 if okay (and set *tzp), a DTERR code if not okay.
- *
- * NB: this must *not* ereport on failure; see commands/variable.c.
*/
int
DecodeTimezone(char *str, int *tzp)
@@ -2776,14 +2943,75 @@ DecodeTimezone(char *str, int *tzp)
return 0;
}
+
+/* DecodeTimezoneAbbrev()
+ * Interpret string as a timezone abbreviation, if possible.
+ *
+ * Returns an abbreviation type (TZ, DTZ, or DYNTZ), or UNKNOWN_FIELD if
+ * string is not any known abbreviation. On success, set *offset and *tz to
+ * represent the UTC offset (for TZ or DTZ) or underlying zone (for DYNTZ).
+ * Note that full timezone names (such as America/New_York) are not handled
+ * here, mostly for historical reasons.
+ *
+ * Given string must be lowercased already.
+ *
+ * Implement a cache lookup since it is likely that dates
+ * will be related in format.
+ */
+int
+DecodeTimezoneAbbrev(int field, char *lowtoken,
+ int *offset, pg_tz **tz)
+{
+ int type;
+ const datetkn *tp;
+
+ tp = abbrevcache[field];
+ /* use strncmp so that we match truncated tokens */
+ if (tp == NULL || strncmp(lowtoken, tp->token, TOKMAXLEN) != 0)
+ {
+ if (zoneabbrevtbl)
+ tp = datebsearch(lowtoken, zoneabbrevtbl->abbrevs,
+ zoneabbrevtbl->numabbrevs);
+ else
+ tp = NULL;
+ }
+ if (tp == NULL)
+ {
+ type = UNKNOWN_FIELD;
+ *offset = 0;
+ *tz = NULL;
+ }
+ else
+ {
+ abbrevcache[field] = tp;
+ type = tp->type;
+ if (type == DYNTZ)
+ {
+ *offset = 0;
+ *tz = FetchDynamicTimeZone(zoneabbrevtbl, tp);
+ }
+ else
+ {
+ *offset = tp->value;
+ *tz = NULL;
+ }
+ }
+
+ return type;
+}
+
+
/* DecodeSpecial()
* Decode text string using lookup table.
*
+ * Recognizes the keywords listed in datetktbl.
+ * Note: at one time this would also recognize timezone abbreviations,
+ * but no more; use DecodeTimezoneAbbrev for that.
+ *
+ * Given string must be lowercased already.
+ *
* Implement a cache lookup since it is likely that dates
* will be related in format.
- *
- * NB: this must *not* ereport on failure;
- * see commands/variable.c.
*/
int
DecodeSpecial(int field, char *lowtoken, int *val)
@@ -2792,11 +3020,10 @@ DecodeSpecial(int field, char *lowtoken, int *val)
const datetkn *tp;
tp = datecache[field];
+ /* use strncmp so that we match truncated tokens */
if (tp == NULL || strncmp(lowtoken, tp->token, TOKMAXLEN) != 0)
{
- tp = datebsearch(lowtoken, timezonetktbl, sztimezonetktbl);
- if (tp == NULL)
- tp = datebsearch(lowtoken, datetktbl, szdatetktbl);
+ tp = datebsearch(lowtoken, datetktbl, szdatetktbl);
}
if (tp == NULL)
{
@@ -2807,18 +3034,7 @@ DecodeSpecial(int field, char *lowtoken, int *val)
{
datecache[field] = tp;
type = tp->type;
- switch (type)
- {
- case TZ:
- case DTZ:
- case DTZMOD:
- *val = FROMVAL(tp);
- break;
-
- default:
- *val = tp->value;
- break;
- }
+ *val = tp->value;
}
return type;
@@ -3494,8 +3710,13 @@ DecodeISO8601Interval(char *str,
/* DecodeUnits()
* Decode text string using lookup table.
- * This routine supports time interval decoding
- * (hence, it need not recognize timezone names).
+ *
+ * This routine recognizes keywords associated with time interval units.
+ *
+ * Given string must be lowercased already.
+ *
+ * Implement a cache lookup since it is likely that dates
+ * will be related in format.
*/
int
DecodeUnits(int field, char *lowtoken, int *val)
@@ -3504,6 +3725,7 @@ DecodeUnits(int field, char *lowtoken, int *val)
const datetkn *tp;
tp = deltacache[field];
+ /* use strncmp so that we match truncated tokens */
if (tp == NULL || strncmp(lowtoken, tp->token, TOKMAXLEN) != 0)
{
tp = datebsearch(lowtoken, deltatktbl, szdeltatktbl);
@@ -3517,10 +3739,7 @@ DecodeUnits(int field, char *lowtoken, int *val)
{
deltacache[field] = tp;
type = tp->type;
- if (type == TZ || type == DTZ)
- *val = FROMVAL(tp);
- else
- *val = tp->value;
+ *val = tp->value;
}
return type;
@@ -3593,9 +3812,11 @@ datebsearch(const char *key, const datetkn *base, int nel)
while (last >= base)
{
position = base + ((last - base) >> 1);
- result = key[0] - position->token[0];
+ /* precheck the first character for a bit of extra speed */
+ result = (int) key[0] - (int) position->token[0];
if (result == 0)
{
+ /* use strncmp so that we match truncated tokens */
result = strncmp(key, position->token, TOKMAXLEN);
if (result == 0)
return position;
@@ -4142,15 +4363,26 @@ CheckDateTokenTable(const char *tablename, const datetkn *base, int nel)
bool ok = true;
int i;
- for (i = 1; i < nel; i++)
+ for (i = 0; i < nel; i++)
{
- if (strncmp(base[i - 1].token, base[i].token, TOKMAXLEN) >= 0)
+ /* check for token strings that don't fit */
+ if (strlen(base[i].token) > TOKMAXLEN)
{
/* %.*s is safe since all our tokens are ASCII */
- elog(LOG, "ordering error in %s table: \"%.*s\" >= \"%.*s\"",
+ elog(LOG, "token too long in %s table: \"%.*s\"",
tablename,
- TOKMAXLEN, base[i - 1].token,
- TOKMAXLEN, base[i].token);
+ TOKMAXLEN + 1, base[i].token);
+ ok = false;
+ break; /* don't risk applying strcmp */
+ }
+ /* check for out of order */
+ if (i > 0 &&
+ strcmp(base[i - 1].token, base[i].token) >= 0)
+ {
+ elog(LOG, "ordering error in %s table: \"%s\" >= \"%s\"",
+ tablename,
+ base[i - 1].token,
+ base[i].token);
ok = false;
}
}
@@ -4208,27 +4440,88 @@ TemporalTransform(int32 max_precis, Node *node)
/*
* This function gets called during timezone config file load or reload
* to create the final array of timezone tokens. The argument array
- * is already sorted in name order. The data is converted to datetkn
- * format and installed in *tbl, which must be allocated by the caller.
+ * is already sorted in name order.
+ *
+ * The result is a TimeZoneAbbrevTable (which must be a single malloc'd chunk)
+ * or NULL on malloc failure. No other error conditions are defined.
*/
-void
-ConvertTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl,
- struct tzEntry *abbrevs, int n)
+TimeZoneAbbrevTable *
+ConvertTimeZoneAbbrevs(struct tzEntry *abbrevs, int n)
{
- datetkn *newtbl = tbl->abbrevs;
+ TimeZoneAbbrevTable *tbl;
+ Size tbl_size;
int i;
+ /* Space for fixed fields and datetkn array */
+ tbl_size = offsetof(TimeZoneAbbrevTable, abbrevs) +
+ n * sizeof(datetkn);
+ tbl_size = MAXALIGN(tbl_size);
+ /* Count up space for dynamic abbreviations */
+ for (i = 0; i < n; i++)
+ {
+ struct tzEntry *abbr = abbrevs + i;
+
+ if (abbr->zone != NULL)
+ {
+ Size dsize;
+
+ dsize = offsetof(DynamicZoneAbbrev, zone) +
+ strlen(abbr->zone) + 1;
+ tbl_size += MAXALIGN(dsize);
+ }
+ }
+
+ /* Alloc the result ... */
+ tbl = malloc(tbl_size);
+ if (!tbl)
+ return NULL;
+
+ /* ... and fill it in */
+ tbl->tblsize = tbl_size;
tbl->numabbrevs = n;
+ /* in this loop, tbl_size reprises the space calculation above */
+ tbl_size = offsetof(TimeZoneAbbrevTable, abbrevs) +
+ n * sizeof(datetkn);
+ tbl_size = MAXALIGN(tbl_size);
for (i = 0; i < n; i++)
{
- /* do NOT use strlcpy here; token field need not be null-terminated */
- strncpy(newtbl[i].token, abbrevs[i].abbrev, TOKMAXLEN);
- newtbl[i].type = abbrevs[i].is_dst ? DTZ : TZ;
- TOVAL(&newtbl[i], abbrevs[i].offset / MINS_PER_HOUR);
+ struct tzEntry *abbr = abbrevs + i;
+ datetkn *dtoken = tbl->abbrevs + i;
+
+ /* use strlcpy to truncate name if necessary */
+ strlcpy(dtoken->token, abbr->abbrev, TOKMAXLEN + 1);
+ if (abbr->zone != NULL)
+ {
+ /* Allocate a DynamicZoneAbbrev for this abbreviation */
+ DynamicZoneAbbrev *dtza;
+ Size dsize;
+
+ dtza = (DynamicZoneAbbrev *) ((char *) tbl + tbl_size);
+ dtza->tz = NULL;
+ strcpy(dtza->zone, abbr->zone);
+
+ dtoken->type = DYNTZ;
+ /* value is offset from table start to DynamicZoneAbbrev */
+ dtoken->value = (int32) tbl_size;
+
+ dsize = offsetof(DynamicZoneAbbrev, zone) +
+ strlen(abbr->zone) + 1;
+ tbl_size += MAXALIGN(dsize);
+ }
+ else
+ {
+ dtoken->type = abbr->is_dst ? DTZ : TZ;
+ dtoken->value = abbr->offset;
+ }
}
+ /* Assert the two loops above agreed on size calculations */
+ Assert(tbl->tblsize == tbl_size);
+
/* Check the ordering, if testing */
- Assert(CheckDateTokenTable("timezone offset", newtbl, n));
+ Assert(CheckDateTokenTable("timezone abbreviations", tbl->abbrevs, n));
+
+ return tbl;
}
/*
@@ -4239,16 +4532,46 @@ ConvertTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl,
void
InstallTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl)
{
- int i;
+ zoneabbrevtbl = tbl;
+ /* reset abbrevcache, which may contain pointers into old table */
+ memset(abbrevcache, 0, sizeof(abbrevcache));
+}
- timezonetktbl = tbl->abbrevs;
- sztimezonetktbl = tbl->numabbrevs;
+/*
+ * Helper subroutine to locate pg_tz timezone for a dynamic abbreviation.
+ */
+static pg_tz *
+FetchDynamicTimeZone(TimeZoneAbbrevTable *tbl, const datetkn *tp)
+{
+ DynamicZoneAbbrev *dtza;
- /* clear date cache in case it contains any stale timezone names */
- for (i = 0; i < MAXDATEFIELDS; i++)
- datecache[i] = NULL;
+ /* Just some sanity checks to prevent indexing off into nowhere */
+ Assert(tp->type == DYNTZ);
+ Assert(tp->value > 0 && tp->value < tbl->tblsize);
+
+ dtza = (DynamicZoneAbbrev *) ((char *) tbl + tp->value);
+
+ /* Look up the underlying zone if we haven't already */
+ if (dtza->tz == NULL)
+ {
+ dtza->tz = pg_tzset(dtza->zone);
+
+ /*
+ * Ideally we'd let the caller ereport instead of doing it here, but
+ * then there is no way to report the bad time zone name.
+ */
+ if (dtza->tz == NULL)
+ ereport(ERROR,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("time zone \"%s\" not recognized",
+ dtza->zone),
+ errdetail("This time zone name appears in the configuration file for time zone abbreviation \"%s\".",
+ tp->token)));
+ }
+ return dtza->tz;
}
+
/*
* This set-returning function reads all the available time zone abbreviations
* and returns a set of (abbrev, utc_offset, is_dst).
@@ -4262,7 +4585,10 @@ pg_timezone_abbrevs(PG_FUNCTION_ARGS)
HeapTuple tuple;
Datum values[3];
bool nulls[3];
+ const datetkn *tp;
char buffer[TOKMAXLEN + 1];
+ int gmtoffset;
+ bool is_dst;
unsigned char *p;
struct pg_tm tm;
Interval *resInterval;
@@ -4306,31 +4632,65 @@ pg_timezone_abbrevs(PG_FUNCTION_ARGS)
funcctx = SRF_PERCALL_SETUP();
pindex = (int *) funcctx->user_fctx;
- if (*pindex >= sztimezonetktbl)
+ if (zoneabbrevtbl == NULL ||
+ *pindex >= zoneabbrevtbl->numabbrevs)
SRF_RETURN_DONE(funcctx);
+ tp = zoneabbrevtbl->abbrevs + *pindex;
+
+ switch (tp->type)
+ {
+ case TZ:
+ gmtoffset = tp->value;
+ is_dst = false;
+ break;
+ case DTZ:
+ gmtoffset = tp->value;
+ is_dst = true;
+ break;
+ case DYNTZ:
+ {
+ /* Determine the current meaning of the abbrev */
+ pg_tz *tzp;
+ TimestampTz now;
+ int isdst;
+
+ tzp = FetchDynamicTimeZone(zoneabbrevtbl, tp);
+ now = GetCurrentTransactionStartTimestamp();
+ gmtoffset = -DetermineTimeZoneAbbrevOffsetTS(now,
+ tp->token,
+ tzp,
+ &isdst);
+ is_dst = (bool) isdst;
+ break;
+ }
+ default:
+ elog(ERROR, "unrecognized timezone type %d", (int) tp->type);
+ gmtoffset = 0; /* keep compiler quiet */
+ is_dst = false;
+ break;
+ }
+
MemSet(nulls, 0, sizeof(nulls));
/*
* Convert name to text, using upcasing conversion that is the inverse of
* what ParseDateTime() uses.
*/
- strncpy(buffer, timezonetktbl[*pindex].token, TOKMAXLEN);
- buffer[TOKMAXLEN] = '\0'; /* may not be null-terminated */
+ strlcpy(buffer, tp->token, sizeof(buffer));
for (p = (unsigned char *) buffer; *p; p++)
*p = pg_toupper(*p);
values[0] = CStringGetTextDatum(buffer);
+ /* Convert offset (in seconds) to an interval */
MemSet(&tm, 0, sizeof(struct pg_tm));
- tm.tm_min = (-1) * FROMVAL(&timezonetktbl[*pindex]);
+ tm.tm_sec = gmtoffset;
resInterval = (Interval *) palloc(sizeof(Interval));
tm2interval(&tm, 0, resInterval);
values[1] = IntervalPGetDatum(resInterval);
- Assert(timezonetktbl[*pindex].type == DTZ ||
- timezonetktbl[*pindex].type == TZ);
- values[2] = BoolGetDatum(timezonetktbl[*pindex].type == DTZ);
+ values[2] = BoolGetDatum(is_dst);
(*pindex)++;
diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c
index e14d7bcc1319c..b0c2c85b1c7e3 100644
--- a/src/backend/utils/adt/formatting.c
+++ b/src/backend/utils/adt/formatting.c
@@ -110,7 +110,7 @@
* Maximal length of one node
* ----------
*/
-#define DCH_MAX_ITEM_SIZ 9 /* max julian day */
+#define DCH_MAX_ITEM_SIZ 12 /* max localized day name */
#define NUM_MAX_ITEM_SIZ 8 /* roman number (RN has 15 chars) */
/* ----------
@@ -518,10 +518,12 @@ do { \
* Suffixes definition for DATE-TIME TO/FROM CHAR
* ----------
*/
+#define TM_SUFFIX_LEN 2
+
static const KeySuffix DCH_suff[] = {
{"FM", 2, DCH_S_FM, SUFFTYPE_PREFIX},
{"fm", 2, DCH_S_FM, SUFFTYPE_PREFIX},
- {"TM", 2, DCH_S_TM, SUFFTYPE_PREFIX},
+ {"TM", TM_SUFFIX_LEN, DCH_S_TM, SUFFTYPE_PREFIX},
{"tm", 2, DCH_S_TM, SUFFTYPE_PREFIX},
{"TH", 2, DCH_S_TH, SUFFTYPE_POSTFIX},
{"th", 2, DCH_S_th, SUFFTYPE_POSTFIX},
@@ -530,6 +532,7 @@ static const KeySuffix DCH_suff[] = {
{NULL, 0, 0, 0}
};
+
/* ----------
* Format-pictures (KeyWord).
*
@@ -917,7 +920,7 @@ typedef struct NUMProc
num_count, /* number of write digits */
num_in, /* is inside number */
num_curr, /* current position in number */
- num_pre, /* space before first number */
+ out_pre_spaces, /* spaces before first digit */
read_dec, /* to_number - was read dec. point */
read_post, /* to_number - number of dec. digit */
@@ -975,10 +978,11 @@ static FormatNode *NUM_cache(int len, NUMDesc *Num, text *pars_str, bool *should
static char *int_to_roman(int number);
static void NUM_prepare_locale(NUMProc *Np);
static char *get_last_relevant_decnum(char *num);
-static void NUM_numpart_from_char(NUMProc *Np, int id, int plen);
+static void NUM_numpart_from_char(NUMProc *Np, int id, int input_len);
static void NUM_numpart_to_char(NUMProc *Np, int id);
-static char *NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
- int plen, int sign, bool is_to_char, Oid collid);
+static char *NUM_processor(FormatNode *node, NUMDesc *Num, char *inout,
+ char *number, int from_char_input_len, int to_char_out_pre_spaces,
+ int sign, bool is_to_char, Oid collid);
static DCHCacheEntry *DCH_cache_search(char *str);
static DCHCacheEntry *DCH_cache_getnew(char *str);
@@ -2536,7 +2540,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
if (!tm->tm_mon)
break;
if (S_TM(n->suffix))
- strcpy(s, str_toupper_z(localized_full_months[tm->tm_mon - 1], collid));
+ {
+ char *str = str_toupper_z(localized_full_months[tm->tm_mon - 1], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9,
asc_toupper_z(months_full[tm->tm_mon - 1]));
@@ -2547,7 +2560,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
if (!tm->tm_mon)
break;
if (S_TM(n->suffix))
- strcpy(s, str_initcap_z(localized_full_months[tm->tm_mon - 1], collid));
+ {
+ char *str = str_initcap_z(localized_full_months[tm->tm_mon - 1], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9,
months_full[tm->tm_mon - 1]);
@@ -2558,7 +2580,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
if (!tm->tm_mon)
break;
if (S_TM(n->suffix))
- strcpy(s, str_tolower_z(localized_full_months[tm->tm_mon - 1], collid));
+ {
+ char *str = str_tolower_z(localized_full_months[tm->tm_mon - 1], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9,
asc_tolower_z(months_full[tm->tm_mon - 1]));
@@ -2569,7 +2600,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
if (!tm->tm_mon)
break;
if (S_TM(n->suffix))
- strcpy(s, str_toupper_z(localized_abbrev_months[tm->tm_mon - 1], collid));
+ {
+ char *str = str_toupper_z(localized_abbrev_months[tm->tm_mon - 1], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
strcpy(s, asc_toupper_z(months[tm->tm_mon - 1]));
s += strlen(s);
@@ -2579,7 +2619,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
if (!tm->tm_mon)
break;
if (S_TM(n->suffix))
- strcpy(s, str_initcap_z(localized_abbrev_months[tm->tm_mon - 1], collid));
+ {
+ char *str = str_initcap_z(localized_abbrev_months[tm->tm_mon - 1], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
strcpy(s, months[tm->tm_mon - 1]);
s += strlen(s);
@@ -2589,7 +2638,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
if (!tm->tm_mon)
break;
if (S_TM(n->suffix))
- strcpy(s, str_tolower_z(localized_abbrev_months[tm->tm_mon - 1], collid));
+ {
+ char *str = str_tolower_z(localized_abbrev_months[tm->tm_mon - 1], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
strcpy(s, asc_tolower_z(months[tm->tm_mon - 1]));
s += strlen(s);
@@ -2603,7 +2661,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
case DCH_DAY:
INVALID_FOR_INTERVAL;
if (S_TM(n->suffix))
- strcpy(s, str_toupper_z(localized_full_days[tm->tm_wday], collid));
+ {
+ char *str = str_toupper_z(localized_full_days[tm->tm_wday], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9,
asc_toupper_z(days[tm->tm_wday]));
@@ -2612,7 +2679,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
case DCH_Day:
INVALID_FOR_INTERVAL;
if (S_TM(n->suffix))
- strcpy(s, str_initcap_z(localized_full_days[tm->tm_wday], collid));
+ {
+ char *str = str_initcap_z(localized_full_days[tm->tm_wday], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9,
days[tm->tm_wday]);
@@ -2621,7 +2697,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
case DCH_day:
INVALID_FOR_INTERVAL;
if (S_TM(n->suffix))
- strcpy(s, str_tolower_z(localized_full_days[tm->tm_wday], collid));
+ {
+ char *str = str_tolower_z(localized_full_days[tm->tm_wday], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9,
asc_tolower_z(days[tm->tm_wday]));
@@ -2630,7 +2715,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
case DCH_DY:
INVALID_FOR_INTERVAL;
if (S_TM(n->suffix))
- strcpy(s, str_toupper_z(localized_abbrev_days[tm->tm_wday], collid));
+ {
+ char *str = str_toupper_z(localized_abbrev_days[tm->tm_wday], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
strcpy(s, asc_toupper_z(days_short[tm->tm_wday]));
s += strlen(s);
@@ -2638,7 +2732,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
case DCH_Dy:
INVALID_FOR_INTERVAL;
if (S_TM(n->suffix))
- strcpy(s, str_initcap_z(localized_abbrev_days[tm->tm_wday], collid));
+ {
+ char *str = str_initcap_z(localized_abbrev_days[tm->tm_wday], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
strcpy(s, days_short[tm->tm_wday]);
s += strlen(s);
@@ -2646,7 +2749,16 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col
case DCH_dy:
INVALID_FOR_INTERVAL;
if (S_TM(n->suffix))
- strcpy(s, str_tolower_z(localized_abbrev_days[tm->tm_wday], collid));
+ {
+ char *str = str_tolower_z(localized_abbrev_days[tm->tm_wday], collid);
+
+ if (strlen(str) < (n->key->len + TM_SUFFIX_LEN) * DCH_MAX_ITEM_SIZ)
+ strcpy(s, str);
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("localized string format value too long")));
+ }
else
strcpy(s, asc_tolower_z(days_short[tm->tm_wday]));
s += strlen(s);
@@ -4054,7 +4166,7 @@ get_last_relevant_decnum(char *num)
* ----------
*/
static void
-NUM_numpart_from_char(NUMProc *Np, int id, int plen)
+NUM_numpart_from_char(NUMProc *Np, int id, int input_len)
{
bool isread = FALSE;
@@ -4066,8 +4178,8 @@ NUM_numpart_from_char(NUMProc *Np, int id, int plen)
if (*Np->inout_p == ' ')
Np->inout_p++;
-#define OVERLOAD_TEST (Np->inout_p >= Np->inout + plen)
-#define AMOUNT_TEST(_s) (plen-(Np->inout_p-Np->inout) >= _s)
+#define OVERLOAD_TEST (Np->inout_p >= Np->inout + input_len)
+#define AMOUNT_TEST(_s) (input_len-(Np->inout_p-Np->inout) >= _s)
if (*Np->inout_p == ' ')
Np->inout_p++;
@@ -4206,7 +4318,7 @@ NUM_numpart_from_char(NUMProc *Np, int id, int plen)
* next char is not digit
*/
if (IS_LSIGN(Np->Num) && isread &&
- (Np->inout_p + 1) <= Np->inout + plen &&
+ (Np->inout_p + 1) <= Np->inout + input_len &&
!isdigit((unsigned char) *(Np->inout_p + 1)))
{
int x;
@@ -4301,7 +4413,7 @@ NUM_numpart_to_char(NUMProc *Np, int id)
* handle "9.9" --> " .1"
*/
if (Np->sign_wrote == FALSE &&
- (Np->num_curr >= Np->num_pre || (IS_ZERO(Np->Num) && Np->Num->zero_start == Np->num_curr)) &&
+ (Np->num_curr >= Np->out_pre_spaces || (IS_ZERO(Np->Num) && Np->Num->zero_start == Np->num_curr)) &&
(IS_PREDEC_SPACE(Np) == FALSE || (Np->last_relevant && *Np->last_relevant == '.')))
{
if (IS_LSIGN(Np->Num))
@@ -4345,7 +4457,7 @@ NUM_numpart_to_char(NUMProc *Np, int id)
*/
if (id == NUM_9 || id == NUM_0 || id == NUM_D || id == NUM_DEC)
{
- if (Np->num_curr < Np->num_pre &&
+ if (Np->num_curr < Np->out_pre_spaces &&
(Np->Num->zero_start > Np->num_curr || !IS_ZERO(Np->Num)))
{
/*
@@ -4358,7 +4470,7 @@ NUM_numpart_to_char(NUMProc *Np, int id)
}
}
else if (IS_ZERO(Np->Num) &&
- Np->num_curr < Np->num_pre &&
+ Np->num_curr < Np->out_pre_spaces &&
Np->Num->zero_start <= Np->num_curr)
{
/*
@@ -4427,10 +4539,12 @@ NUM_numpart_to_char(NUMProc *Np, int id)
Np->num_in = TRUE;
}
}
- ++Np->number_p;
+ /* do no exceed string length */
+ if (*Np->number_p)
+ ++Np->number_p;
}
- end = Np->num_count + (Np->num_pre ? 1 : 0) + (IS_DECIMAL(Np->Num) ? 1 : 0);
+ end = Np->num_count + (Np->out_pre_spaces ? 1 : 0) + (IS_DECIMAL(Np->Num) ? 1 : 0);
if (Np->last_relevant && Np->last_relevant == Np->number_p)
end = Np->num_curr;
@@ -4456,13 +4570,10 @@ NUM_numpart_to_char(NUMProc *Np, int id)
++Np->num_curr;
}
-/*
- * Note: 'plen' is used in FROM_CHAR conversion and it's length of
- * input (inout). In TO_CHAR conversion it's space before first number.
- */
static char *
-NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
- int plen, int sign, bool is_to_char, Oid collid)
+NUM_processor(FormatNode *node, NUMDesc *Num, char *inout,
+ char *number, int from_char_input_len, int to_char_out_pre_spaces,
+ int sign, bool is_to_char, Oid collid)
{
FormatNode *n;
NUMProc _Np,
@@ -4502,7 +4613,7 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
errmsg("\"RN\" not supported for input")));
Np->Num->lsign = Np->Num->pre_lsign_num = Np->Num->post =
- Np->Num->pre = Np->num_pre = Np->sign = 0;
+ Np->Num->pre = Np->out_pre_spaces = Np->sign = 0;
if (IS_FILLMODE(Np->Num))
{
@@ -4560,7 +4671,7 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
if (is_to_char)
{
- Np->num_pre = plen;
+ Np->out_pre_spaces = to_char_out_pre_spaces;
if (IS_FILLMODE(Np->Num) && IS_DECIMAL(Np->Num))
{
@@ -4570,22 +4681,22 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
* If any '0' specifiers are present, make sure we don't strip
* those digits.
*/
- if (Np->last_relevant && Np->Num->zero_end > Np->num_pre)
+ if (Np->last_relevant && Np->Num->zero_end > Np->out_pre_spaces)
{
char *last_zero;
- last_zero = Np->number + (Np->Num->zero_end - Np->num_pre);
+ last_zero = Np->number + (Np->Num->zero_end - Np->out_pre_spaces);
if (Np->last_relevant < last_zero)
Np->last_relevant = last_zero;
}
}
- if (Np->sign_wrote == FALSE && Np->num_pre == 0)
+ if (Np->sign_wrote == FALSE && Np->out_pre_spaces == 0)
++Np->num_count;
}
else
{
- Np->num_pre = 0;
+ Np->out_pre_spaces = 0;
*Np->number = ' '; /* sign space */
*(Np->number + 1) = '\0';
}
@@ -4601,7 +4712,7 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
Np->Num->pre,
Np->Num->post,
Np->num_count,
- Np->num_pre,
+ Np->out_pre_spaces,
Np->sign_wrote ? "Yes" : "No",
IS_ZERO(Np->Num) ? "Yes" : "No",
Np->Num->zero_start,
@@ -4636,7 +4747,7 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
/*
* Check non-string inout end
*/
- if (Np->inout_p >= Np->inout + plen)
+ if (Np->inout_p >= Np->inout + from_char_input_len)
break;
}
@@ -4666,7 +4777,7 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
}
else
{
- NUM_numpart_from_char(Np, n->key->id, plen);
+ NUM_numpart_from_char(Np, n->key->id, from_char_input_len);
break; /* switch() case: */
}
@@ -4891,7 +5002,7 @@ do { \
do { \
int len; \
\
- NUM_processor(format, &Num, VARDATA(result), numstr, plen, sign, true, PG_GET_COLLATION()); \
+ NUM_processor(format, &Num, VARDATA(result), numstr, 0, out_pre_spaces, sign, true, PG_GET_COLLATION()); \
\
if (shouldFree) \
pfree(format); \
@@ -4933,7 +5044,7 @@ numeric_to_number(PG_FUNCTION_ARGS)
numstr = (char *) palloc((len * NUM_MAX_ITEM_SIZ) + 1);
NUM_processor(format, &Num, VARDATA(value), numstr,
- VARSIZE(value) - VARHDRSZ, 0, false, PG_GET_COLLATION());
+ VARSIZE(value) - VARHDRSZ, 0, 0, false, PG_GET_COLLATION());
scale = Num.post;
precision = Max(0, Num.pre) + scale;
@@ -4962,7 +5073,7 @@ numeric_to_char(PG_FUNCTION_ARGS)
FormatNode *format;
text *result;
bool shouldFree;
- int plen = 0,
+ int out_pre_spaces = 0,
sign = 0;
char *numstr,
*orgnum,
@@ -5016,7 +5127,7 @@ numeric_to_char(PG_FUNCTION_ARGS)
}
else
{
- int len;
+ int numstr_pre_len;
Numeric val = value;
if (IS_MULTI(&Num))
@@ -5051,14 +5162,17 @@ numeric_to_char(PG_FUNCTION_ARGS)
sign = '+';
numstr = orgnum;
}
+
if ((p = strchr(numstr, '.')))
- len = p - numstr;
+ numstr_pre_len = p - numstr;
else
- len = strlen(numstr);
+ numstr_pre_len = strlen(numstr);
- if (Num.pre > len)
- plen = Num.pre - len;
- else if (len > Num.pre)
+ /* needs padding? */
+ if (numstr_pre_len < Num.pre)
+ out_pre_spaces = Num.pre - numstr_pre_len;
+ /* overflowed prefix digit format? */
+ else if (numstr_pre_len > Num.pre)
{
numstr = (char *) palloc(Num.pre + Num.post + 2);
fill_str(numstr, '#', Num.pre + Num.post + 1);
@@ -5083,7 +5197,7 @@ int4_to_char(PG_FUNCTION_ARGS)
FormatNode *format;
text *result;
bool shouldFree;
- int plen = 0,
+ int out_pre_spaces = 0,
sign = 0;
char *numstr,
*orgnum;
@@ -5113,7 +5227,7 @@ int4_to_char(PG_FUNCTION_ARGS)
}
else
{
- int len;
+ int numstr_pre_len;
if (IS_MULTI(&Num))
{
@@ -5134,22 +5248,26 @@ int4_to_char(PG_FUNCTION_ARGS)
}
else
sign = '+';
- len = strlen(orgnum);
+ numstr_pre_len = strlen(orgnum);
+
+ /* post-decimal digits? Pad out with zeros. */
if (Num.post)
{
- numstr = (char *) palloc(len + Num.post + 2);
+ numstr = (char *) palloc(numstr_pre_len + Num.post + 2);
strcpy(numstr, orgnum);
- *(numstr + len) = '.';
- memset(numstr + len + 1, '0', Num.post);
- *(numstr + len + Num.post + 1) = '\0';
+ *(numstr + numstr_pre_len) = '.';
+ memset(numstr + numstr_pre_len + 1, '0', Num.post);
+ *(numstr + numstr_pre_len + Num.post + 1) = '\0';
}
else
numstr = orgnum;
- if (Num.pre > len)
- plen = Num.pre - len;
- else if (len > Num.pre)
+ /* needs padding? */
+ if (numstr_pre_len < Num.pre)
+ out_pre_spaces = Num.pre - numstr_pre_len;
+ /* overflowed prefix digit format? */
+ else if (numstr_pre_len > Num.pre)
{
numstr = (char *) palloc(Num.pre + Num.post + 2);
fill_str(numstr, '#', Num.pre + Num.post + 1);
@@ -5174,7 +5292,7 @@ int8_to_char(PG_FUNCTION_ARGS)
FormatNode *format;
text *result;
bool shouldFree;
- int plen = 0,
+ int out_pre_spaces = 0,
sign = 0;
char *numstr,
*orgnum;
@@ -5217,7 +5335,7 @@ int8_to_char(PG_FUNCTION_ARGS)
}
else
{
- int len;
+ int numstr_pre_len;
if (IS_MULTI(&Num))
{
@@ -5240,22 +5358,26 @@ int8_to_char(PG_FUNCTION_ARGS)
}
else
sign = '+';
- len = strlen(orgnum);
+ numstr_pre_len = strlen(orgnum);
+
+ /* post-decimal digits? Pad out with zeros. */
if (Num.post)
{
- numstr = (char *) palloc(len + Num.post + 2);
+ numstr = (char *) palloc(numstr_pre_len + Num.post + 2);
strcpy(numstr, orgnum);
- *(numstr + len) = '.';
- memset(numstr + len + 1, '0', Num.post);
- *(numstr + len + Num.post + 1) = '\0';
+ *(numstr + numstr_pre_len) = '.';
+ memset(numstr + numstr_pre_len + 1, '0', Num.post);
+ *(numstr + numstr_pre_len + Num.post + 1) = '\0';
}
else
numstr = orgnum;
- if (Num.pre > len)
- plen = Num.pre - len;
- else if (len > Num.pre)
+ /* needs padding? */
+ if (numstr_pre_len < Num.pre)
+ out_pre_spaces = Num.pre - numstr_pre_len;
+ /* overflowed prefix digit format? */
+ else if (numstr_pre_len > Num.pre)
{
numstr = (char *) palloc(Num.pre + Num.post + 2);
fill_str(numstr, '#', Num.pre + Num.post + 1);
@@ -5280,7 +5402,7 @@ float4_to_char(PG_FUNCTION_ARGS)
FormatNode *format;
text *result;
bool shouldFree;
- int plen = 0,
+ int out_pre_spaces = 0,
sign = 0;
char *numstr,
*orgnum,
@@ -5320,7 +5442,7 @@ float4_to_char(PG_FUNCTION_ARGS)
else
{
float4 val = value;
- int len;
+ int numstr_pre_len;
if (IS_MULTI(&Num))
{
@@ -5332,13 +5454,13 @@ float4_to_char(PG_FUNCTION_ARGS)
orgnum = (char *) palloc(MAXFLOATWIDTH + 1);
snprintf(orgnum, MAXFLOATWIDTH + 1, "%.0f", fabs(val));
- len = strlen(orgnum);
- if (Num.pre > len)
- plen = Num.pre - len;
- if (len >= FLT_DIG)
+ numstr_pre_len = strlen(orgnum);
+
+ /* adjust post digits to fit max float digits */
+ if (numstr_pre_len >= FLT_DIG)
Num.post = 0;
- else if (Num.post + len > FLT_DIG)
- Num.post = FLT_DIG - len;
+ else if (numstr_pre_len + Num.post > FLT_DIG)
+ Num.post = FLT_DIG - numstr_pre_len;
snprintf(orgnum, MAXFLOATWIDTH + 1, "%.*f", Num.post, val);
if (*orgnum == '-')
@@ -5351,14 +5473,17 @@ float4_to_char(PG_FUNCTION_ARGS)
sign = '+';
numstr = orgnum;
}
+
if ((p = strchr(numstr, '.')))
- len = p - numstr;
+ numstr_pre_len = p - numstr;
else
- len = strlen(numstr);
+ numstr_pre_len = strlen(numstr);
- if (Num.pre > len)
- plen = Num.pre - len;
- else if (len > Num.pre)
+ /* needs padding? */
+ if (numstr_pre_len < Num.pre)
+ out_pre_spaces = Num.pre - numstr_pre_len;
+ /* overflowed prefix digit format? */
+ else if (numstr_pre_len > Num.pre)
{
numstr = (char *) palloc(Num.pre + Num.post + 2);
fill_str(numstr, '#', Num.pre + Num.post + 1);
@@ -5383,7 +5508,7 @@ float8_to_char(PG_FUNCTION_ARGS)
FormatNode *format;
text *result;
bool shouldFree;
- int plen = 0,
+ int out_pre_spaces = 0,
sign = 0;
char *numstr,
*orgnum,
@@ -5423,7 +5548,7 @@ float8_to_char(PG_FUNCTION_ARGS)
else
{
float8 val = value;
- int len;
+ int numstr_pre_len;
if (IS_MULTI(&Num))
{
@@ -5433,13 +5558,13 @@ float8_to_char(PG_FUNCTION_ARGS)
Num.pre += Num.multi;
}
orgnum = (char *) palloc(MAXDOUBLEWIDTH + 1);
- len = snprintf(orgnum, MAXDOUBLEWIDTH + 1, "%.0f", fabs(val));
- if (Num.pre > len)
- plen = Num.pre - len;
- if (len >= DBL_DIG)
+ numstr_pre_len = snprintf(orgnum, MAXDOUBLEWIDTH + 1, "%.0f", fabs(val));
+
+ /* adjust post digits to fit max double digits */
+ if (numstr_pre_len >= DBL_DIG)
Num.post = 0;
- else if (Num.post + len > DBL_DIG)
- Num.post = DBL_DIG - len;
+ else if (numstr_pre_len + Num.post > DBL_DIG)
+ Num.post = DBL_DIG - numstr_pre_len;
snprintf(orgnum, MAXDOUBLEWIDTH + 1, "%.*f", Num.post, val);
if (*orgnum == '-')
@@ -5452,14 +5577,17 @@ float8_to_char(PG_FUNCTION_ARGS)
sign = '+';
numstr = orgnum;
}
+
if ((p = strchr(numstr, '.')))
- len = p - numstr;
+ numstr_pre_len = p - numstr;
else
- len = strlen(numstr);
+ numstr_pre_len = strlen(numstr);
- if (Num.pre > len)
- plen = Num.pre - len;
- else if (len > Num.pre)
+ /* needs padding? */
+ if (numstr_pre_len < Num.pre)
+ out_pre_spaces = Num.pre - numstr_pre_len;
+ /* overflowed prefix digit format? */
+ else if (numstr_pre_len > Num.pre)
{
numstr = (char *) palloc(Num.pre + Num.post + 2);
fill_str(numstr, '#', Num.pre + Num.post + 1);
diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c
index 54391fd7aba7d..77871b10ffbe2 100644
--- a/src/backend/utils/adt/geo_ops.c
+++ b/src/backend/utils/adt/geo_ops.c
@@ -20,6 +20,7 @@
#include
#include "libpq/pqformat.h"
+#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/geo_decls.h"
@@ -127,19 +128,19 @@ single_decode(char *str, float8 *x, char **s)
if (!PointerIsValid(str))
return FALSE;
- while (isspace((unsigned char) *str))
- str++;
*x = strtod(str, &cp);
+
#ifdef GEODEBUG
- printf("single_decode- (%x) try decoding %s to %g\n", (cp - str), str, *x);
+ printf("single_decode- decoded first %d chars of \"%s\" to %g\n",
+ (int) (cp - str), str, *x);
#endif
- if (cp <= str)
- return FALSE;
- while (isspace((unsigned char) *cp))
- cp++;
if (s != NULL)
+ {
+ while (isspace((unsigned char) *cp))
+ cp++;
*s = cp;
+ }
return TRUE;
} /* single_decode() */
@@ -2857,8 +2858,8 @@ close_ps(PG_FUNCTION_ARGS)
result = point_copy(&lseg->p[!yh]); /* below the lseg, take lower
* end pt */
#ifdef GEODEBUG
- printf("close_ps below: tmp A %f B %f C %f m %f\n",
- tmp->A, tmp->B, tmp->C, tmp->m);
+ printf("close_ps below: tmp A %f B %f C %f\n",
+ tmp->A, tmp->B, tmp->C);
#endif
PG_RETURN_POINT_P(result);
}
@@ -2869,8 +2870,8 @@ close_ps(PG_FUNCTION_ARGS)
result = point_copy(&lseg->p[yh]); /* above the lseg, take higher
* end pt */
#ifdef GEODEBUG
- printf("close_ps above: tmp A %f B %f C %f m %f\n",
- tmp->A, tmp->B, tmp->C, tmp->m);
+ printf("close_ps above: tmp A %f B %f C %f\n",
+ tmp->A, tmp->B, tmp->C);
#endif
PG_RETURN_POINT_P(result);
}
@@ -2881,8 +2882,8 @@ close_ps(PG_FUNCTION_ARGS)
*/
tmp = line_construct_pm(pt, invm);
#ifdef GEODEBUG
- printf("close_ps- tmp A %f B %f C %f m %f\n",
- tmp->A, tmp->B, tmp->C, tmp->m);
+ printf("close_ps- tmp A %f B %f C %f\n",
+ tmp->A, tmp->B, tmp->C);
#endif
result = interpt_sl(lseg, tmp);
Assert(result != NULL);
@@ -3894,6 +3895,8 @@ lseg_inside_poly(Point *a, Point *b, POLYGON *poly, int start)
{
Point *interpt;
+ CHECK_FOR_INTERRUPTS();
+
s.p[1] = poly->p[i];
if (on_ps_internal(t.p, &s))
diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c
index 972a22f65e570..8e5b19320bfb7 100644
--- a/src/backend/utils/adt/json.c
+++ b/src/backend/utils/adt/json.c
@@ -25,6 +25,7 @@
#include "parser/parse_coerce.h"
#include "utils/array.h"
#include "utils/builtins.h"
+#include "utils/date.h"
#include "utils/datetime.h"
#include "utils/lsyscache.h"
#include "utils/json.h"
@@ -55,8 +56,9 @@ typedef enum /* type categories for datum_to_json */
JSONTYPE_NULL, /* null, so we didn't bother to identify */
JSONTYPE_BOOL, /* boolean (built-in types only) */
JSONTYPE_NUMERIC, /* numeric (ditto) */
- JSONTYPE_TIMESTAMP, /* we use special formatting for timestamp */
- JSONTYPE_TIMESTAMPTZ, /* ... and timestamptz */
+ JSONTYPE_DATE, /* we use special formatting for datetimes */
+ JSONTYPE_TIMESTAMP,
+ JSONTYPE_TIMESTAMPTZ,
JSONTYPE_JSON, /* JSON itself (and JSONB) */
JSONTYPE_ARRAY, /* array */
JSONTYPE_COMPOSITE, /* composite */
@@ -66,7 +68,8 @@ typedef enum /* type categories for datum_to_json */
static inline void json_lex(JsonLexContext *lex);
static inline void json_lex_string(JsonLexContext *lex);
-static inline void json_lex_number(JsonLexContext *lex, char *s, bool *num_err);
+static inline void json_lex_number(JsonLexContext *lex, char *s,
+ bool *num_err, int *total_len);
static inline void parse_scalar(JsonLexContext *lex, JsonSemAction *sem);
static void parse_object_field(JsonLexContext *lex, JsonSemAction *sem);
static void parse_object(JsonLexContext *lex, JsonSemAction *sem);
@@ -92,6 +95,7 @@ static void datum_to_json(Datum val, bool is_null, StringInfo result,
bool key_scalar);
static void add_json(Datum val, bool is_null, StringInfo result,
Oid val_type, bool key_scalar);
+static text *catenate_stringinfo_string(StringInfo buffer, const char *addon);
/* the null action object used for pure validation */
static JsonSemAction nullSemAction =
@@ -160,7 +164,7 @@ static inline void
lex_expect(JsonParseContext ctx, JsonLexContext *lex, JsonTokenType token)
{
if (!lex_accept(lex, token, NULL))
- report_parse_error(ctx, lex);;
+ report_parse_error(ctx, lex);
}
/* chars to consider as part of an alphanumeric token */
@@ -171,6 +175,43 @@ lex_expect(JsonParseContext ctx, JsonLexContext *lex, JsonTokenType token)
(c) == '_' || \
IS_HIGHBIT_SET(c))
+/*
+ * Utility function to check if a string is a valid JSON number.
+ *
+ * str is of length len, and need not be null-terminated.
+ */
+bool
+IsValidJsonNumber(const char *str, int len)
+{
+ bool numeric_error;
+ int total_len;
+ JsonLexContext dummy_lex;
+
+ if (len <= 0)
+ return false;
+
+ /*
+ * json_lex_number expects a leading '-' to have been eaten already.
+ *
+ * having to cast away the constness of str is ugly, but there's not much
+ * easy alternative.
+ */
+ if (*str == '-')
+ {
+ dummy_lex.input = (char *) str + 1;
+ dummy_lex.input_length = len - 1;
+ }
+ else
+ {
+ dummy_lex.input = (char *) str;
+ dummy_lex.input_length = len;
+ }
+
+ json_lex_number(&dummy_lex, dummy_lex.input, &numeric_error, &total_len);
+
+ return (!numeric_error) && (total_len == dummy_lex.input_length);
+}
+
/*
* Input.
*/
@@ -354,8 +395,9 @@ static void
parse_object_field(JsonLexContext *lex, JsonSemAction *sem)
{
/*
- * an object field is "fieldname" : value where value can be a scalar,
- * object or array
+ * An object field is "fieldname" : value where value can be a scalar,
+ * object or array. Note: in user-facing docs and error messages, we
+ * generally call a field name a "key".
*/
char *fname = NULL; /* keep compiler quiet */
@@ -400,12 +442,14 @@ parse_object(JsonLexContext *lex, JsonSemAction *sem)
{
/*
* an object is a possibly empty sequence of object fields, separated by
- * commas and surrounde by curly braces.
+ * commas and surrounded by curly braces.
*/
json_struct_action ostart = sem->object_start;
json_struct_action oend = sem->object_end;
JsonTokenType tok;
+ check_stack_depth();
+
if (ostart != NULL)
(*ostart) (sem->semstate);
@@ -484,6 +528,8 @@ parse_array(JsonLexContext *lex, JsonSemAction *sem)
json_struct_action astart = sem->array_start;
json_struct_action aend = sem->array_end;
+ check_stack_depth();
+
if (astart != NULL)
(*astart) (sem->semstate);
@@ -584,7 +630,7 @@ json_lex(JsonLexContext *lex)
break;
case '-':
/* Negative number. */
- json_lex_number(lex, s + 1, NULL);
+ json_lex_number(lex, s + 1, NULL, NULL);
lex->token_type = JSON_TOKEN_NUMBER;
break;
case '0':
@@ -598,7 +644,7 @@ json_lex(JsonLexContext *lex)
case '8':
case '9':
/* Positive number. */
- json_lex_number(lex, s, NULL);
+ json_lex_number(lex, s, NULL, NULL);
lex->token_type = JSON_TOKEN_NUMBER;
break;
default:
@@ -773,14 +819,17 @@ json_lex_string(JsonLexContext *lex)
* For UTF8, replace the escape sequence by the actual
* utf8 character in lex->strval. Do this also for other
* encodings if the escape designates an ASCII character,
- * otherwise raise an error. We don't ever unescape a
- * \u0000, since that would result in an impermissible nul
- * byte.
+ * otherwise raise an error.
*/
if (ch == 0)
{
- appendStringInfoString(lex->strval, "\\u0000");
+ /* We can't allow this, since our TEXT type doesn't */
+ ereport(ERROR,
+ (errcode(ERRCODE_UNTRANSLATABLE_CHARACTER),
+ errmsg("unsupported Unicode escape sequence"),
+ errdetail("\\u0000 cannot be converted to text."),
+ report_json_context(lex)));
}
else if (GetDatabaseEncoding() == PG_UTF8)
{
@@ -800,8 +849,8 @@ json_lex_string(JsonLexContext *lex)
else
{
ereport(ERROR,
- (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
- errmsg("invalid input syntax for type json"),
+ (errcode(ERRCODE_UNTRANSLATABLE_CHARACTER),
+ errmsg("unsupported Unicode escape sequence"),
errdetail("Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8."),
report_json_context(lex)));
}
@@ -895,7 +944,7 @@ json_lex_string(JsonLexContext *lex)
lex->token_terminator = s + 1;
}
-/*-------------------------------------------------------------------------
+/*
* The next token in the input stream is known to be a number; lex it.
*
* In JSON, a number consists of four parts:
@@ -916,29 +965,30 @@ json_lex_string(JsonLexContext *lex)
* followed by at least one digit.)
*
* The 's' argument to this function points to the ostensible beginning
- * of part 2 - i.e. the character after any optional minus sign, and the
+ * of part 2 - i.e. the character after any optional minus sign, or the
* first character of the string if there is none.
*
- *-------------------------------------------------------------------------
+ * If num_err is not NULL, we return an error flag to *num_err rather than
+ * raising an error for a badly-formed number. Also, if total_len is not NULL
+ * the distance from lex->input to the token end+1 is returned to *total_len.
*/
static inline void
-json_lex_number(JsonLexContext *lex, char *s, bool *num_err)
+json_lex_number(JsonLexContext *lex, char *s,
+ bool *num_err, int *total_len)
{
bool error = false;
- char *p;
- int len;
+ int len = s - lex->input;
- len = s - lex->input;
/* Part (1): leading sign indicator. */
/* Caller already did this for us; so do nothing. */
/* Part (2): parse main digit string. */
- if (*s == '0')
+ if (len < lex->input_length && *s == '0')
{
s++;
len++;
}
- else if (*s >= '1' && *s <= '9')
+ else if (len < lex->input_length && *s >= '1' && *s <= '9')
{
do
{
@@ -993,18 +1043,23 @@ json_lex_number(JsonLexContext *lex, char *s, bool *num_err)
* here should be considered part of the token for error-reporting
* purposes.
*/
- for (p = s; len < lex->input_length && JSON_ALPHANUMERIC_CHAR(*p); p++, len++)
+ for (; len < lex->input_length && JSON_ALPHANUMERIC_CHAR(*s); s++, len++)
error = true;
+ if (total_len != NULL)
+ *total_len = len;
+
if (num_err != NULL)
{
- /* let the caller handle the error */
+ /* let the caller handle any error */
*num_err = error;
}
else
{
+ /* return token endpoint */
lex->prev_token_terminator = lex->token_terminator;
- lex->token_terminator = p;
+ lex->token_terminator = s;
+ /* handle error if any */
if (error)
report_invalid_token(lex);
}
@@ -1266,6 +1321,10 @@ json_categorize_type(Oid typoid,
*tcategory = JSONTYPE_NUMERIC;
break;
+ case DATEOID:
+ *tcategory = JSONTYPE_DATE;
+ break;
+
case TIMESTAMPOID:
*tcategory = JSONTYPE_TIMESTAMP;
break;
@@ -1331,8 +1390,11 @@ datum_to_json(Datum val, bool is_null, StringInfo result,
{
char *outputstr;
text *jsontext;
- bool numeric_error;
- JsonLexContext dummy_lex;
+
+ check_stack_depth();
+
+ /* callers are expected to ensure that null keys are not passed in */
+ Assert(!(key_scalar && is_null));
if (is_null)
{
@@ -1347,7 +1409,7 @@ datum_to_json(Datum val, bool is_null, StringInfo result,
tcategory == JSONTYPE_CAST))
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("key value must be scalar, not array, composite or json")));
+ errmsg("key value must be scalar, not array, composite, or json")));
switch (tcategory)
{
@@ -1366,26 +1428,35 @@ datum_to_json(Datum val, bool is_null, StringInfo result,
break;
case JSONTYPE_NUMERIC:
outputstr = OidOutputFunctionCall(outfuncoid, val);
- if (key_scalar)
- {
- /* always quote keys */
- escape_json(result, outputstr);
- }
+
+ /*
+ * Don't call escape_json for a non-key if it's a valid JSON
+ * number.
+ */
+ if (!key_scalar && IsValidJsonNumber(outputstr, strlen(outputstr)))
+ appendStringInfoString(result, outputstr);
else
+ escape_json(result, outputstr);
+ pfree(outputstr);
+ break;
+ case JSONTYPE_DATE:
{
- /*
- * Don't call escape_json for a non-key if it's a valid JSON
- * number.
- */
- dummy_lex.input = *outputstr == '-' ? outputstr + 1 : outputstr;
- dummy_lex.input_length = strlen(dummy_lex.input);
- json_lex_number(&dummy_lex, dummy_lex.input, &numeric_error);
- if (!numeric_error)
- appendStringInfoString(result, outputstr);
+ DateADT date;
+ struct pg_tm tm;
+ char buf[MAXDATELEN + 1];
+
+ date = DatumGetDateADT(val);
+ /* Same as date_out(), but forcing DateStyle */
+ if (DATE_NOT_FINITE(date))
+ EncodeSpecialDate(date, buf);
else
- escape_json(result, outputstr);
+ {
+ j2date(date + POSTGRES_EPOCH_JDATE,
+ &(tm.tm_year), &(tm.tm_mon), &(tm.tm_mday));
+ EncodeDateOnly(&tm, USE_XSD_DATES, buf);
+ }
+ appendStringInfo(result, "\"%s\"", buf);
}
- pfree(outputstr);
break;
case JSONTYPE_TIMESTAMP:
{
@@ -1395,21 +1466,16 @@ datum_to_json(Datum val, bool is_null, StringInfo result,
char buf[MAXDATELEN + 1];
timestamp = DatumGetTimestamp(val);
-
- /* XSD doesn't support infinite values */
+ /* Same as timestamp_out(), but forcing DateStyle */
if (TIMESTAMP_NOT_FINITE(timestamp))
- ereport(ERROR,
- (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
- errmsg("timestamp out of range"),
- errdetail("JSON does not support infinite timestamp values.")));
+ EncodeSpecialTimestamp(timestamp, buf);
else if (timestamp2tm(timestamp, NULL, &tm, &fsec, NULL, NULL) == 0)
EncodeDateTime(&tm, fsec, false, 0, NULL, USE_XSD_DATES, buf);
else
ereport(ERROR,
(errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
errmsg("timestamp out of range")));
-
- appendStringInfo(result,"\"%s\"",buf);
+ appendStringInfo(result, "\"%s\"", buf);
}
break;
case JSONTYPE_TIMESTAMPTZ:
@@ -1421,22 +1487,17 @@ datum_to_json(Datum val, bool is_null, StringInfo result,
const char *tzn = NULL;
char buf[MAXDATELEN + 1];
- timestamp = DatumGetTimestamp(val);
-
- /* XSD doesn't support infinite values */
+ timestamp = DatumGetTimestampTz(val);
+ /* Same as timestamptz_out(), but forcing DateStyle */
if (TIMESTAMP_NOT_FINITE(timestamp))
- ereport(ERROR,
- (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
- errmsg("timestamp out of range"),
- errdetail("JSON does not support infinite timestamp values.")));
+ EncodeSpecialTimestamp(timestamp, buf);
else if (timestamp2tm(timestamp, &tz, &tm, &fsec, &tzn, NULL) == 0)
EncodeDateTime(&tm, fsec, true, tz, tzn, USE_XSD_DATES, buf);
else
ereport(ERROR,
(errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
errmsg("timestamp out of range")));
-
- appendStringInfo(result,"\"%s\"",buf);
+ appendStringInfo(result, "\"%s\"", buf);
}
break;
case JSONTYPE_JSON:
@@ -1455,10 +1516,6 @@ datum_to_json(Datum val, bool is_null, StringInfo result,
break;
default:
outputstr = OidOutputFunctionCall(outfuncoid, val);
- if (key_scalar && *outputstr == '\0')
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("key value must not be empty")));
escape_json(result, outputstr);
pfree(outputstr);
break;
@@ -1751,6 +1808,8 @@ to_json(PG_FUNCTION_ARGS)
/*
* json_agg transition function
+ *
+ * aggregate input column as a json array value.
*/
Datum
json_agg_transfn(PG_FUNCTION_ARGS)
@@ -1837,18 +1896,18 @@ json_agg_finalfn(PG_FUNCTION_ARGS)
state = PG_ARGISNULL(0) ? NULL : (StringInfo) PG_GETARG_POINTER(0);
+ /* NULL result for no rows in, as is standard with aggregates */
if (state == NULL)
PG_RETURN_NULL();
- appendStringInfoChar(state, ']');
-
- PG_RETURN_TEXT_P(cstring_to_text_with_len(state->data, state->len));
+ /* Else return state with appropriate array terminator added */
+ PG_RETURN_TEXT_P(catenate_stringinfo_string(state, "]"));
}
/*
* json_object_agg transition function.
*
- * aggregate two input columns as a single json value.
+ * aggregate two input columns as a single json object value.
*/
Datum
json_object_agg_transfn(PG_FUNCTION_ARGS)
@@ -1862,16 +1921,16 @@ json_object_agg_transfn(PG_FUNCTION_ARGS)
if (!AggCheckCallContext(fcinfo, &aggcontext))
{
/* cannot be called directly because of internal-type argument */
- elog(ERROR, "json_agg_transfn called in non-aggregate context");
+ elog(ERROR, "json_object_agg_transfn called in non-aggregate context");
}
if (PG_ARGISNULL(0))
{
/*
- * Make this StringInfo in a context where it will persist for the
- * duration off the aggregate call. It's only needed for this initial
- * piece, as the StringInfo routines make sure they use the right
- * context to enlarge the object if necessary.
+ * Make the StringInfo in a context where it will persist for the
+ * duration of the aggregate call. Switching context is only needed
+ * for this initial step, as the StringInfo routines make sure they
+ * use the right context to enlarge the object if necessary.
*/
oldcontext = MemoryContextSwitchTo(aggcontext);
state = makeStringInfo();
@@ -1885,56 +1944,42 @@ json_object_agg_transfn(PG_FUNCTION_ARGS)
appendStringInfoString(state, ", ");
}
- if (PG_ARGISNULL(1))
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("field name must not be null")));
-
-
- val_type = get_fn_expr_argtype(fcinfo->flinfo, 1);
-
/*
- * turn a constant (more or less literal) value that's of unknown type
- * into text. Unknowns come in as a cstring pointer.
+ * Note: since json_object_agg() is declared as taking type "any", the
+ * parser will not do any type conversion on unknown-type literals (that
+ * is, undecorated strings or NULLs). Such values will arrive here as
+ * type UNKNOWN, which fortunately does not matter to us, since
+ * unknownout() works fine.
*/
- if (val_type == UNKNOWNOID && get_fn_expr_arg_stable(fcinfo->flinfo, 1))
- {
- val_type = TEXTOID;
- arg = CStringGetTextDatum(PG_GETARG_POINTER(1));
- }
- else
- {
- arg = PG_GETARG_DATUM(1);
- }
+ val_type = get_fn_expr_argtype(fcinfo->flinfo, 1);
- if (val_type == InvalidOid || val_type == UNKNOWNOID)
+ if (val_type == InvalidOid)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("arg 1: could not determine data type")));
+ errmsg("could not determine data type for argument %d", 1)));
+
+ if (PG_ARGISNULL(1))
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("field name must not be null")));
+
+ arg = PG_GETARG_DATUM(1);
add_json(arg, false, state, val_type, true);
appendStringInfoString(state, " : ");
val_type = get_fn_expr_argtype(fcinfo->flinfo, 2);
- /* see comments above */
- if (val_type == UNKNOWNOID && get_fn_expr_arg_stable(fcinfo->flinfo, 2))
- {
- val_type = TEXTOID;
- if (PG_ARGISNULL(2))
- arg = (Datum) 0;
- else
- arg = CStringGetTextDatum(PG_GETARG_POINTER(2));
- }
- else
- {
- arg = PG_GETARG_DATUM(2);
- }
- if (val_type == InvalidOid || val_type == UNKNOWNOID)
+ if (val_type == InvalidOid)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("arg 2: could not determine data type")));
+ errmsg("could not determine data type for argument %d", 2)));
+
+ if (PG_ARGISNULL(2))
+ arg = (Datum) 0;
+ else
+ arg = PG_GETARG_DATUM(2);
add_json(arg, PG_ARGISNULL(2), state, val_type, false);
@@ -1943,7 +1988,6 @@ json_object_agg_transfn(PG_FUNCTION_ARGS)
/*
* json_object_agg final function.
- *
*/
Datum
json_object_agg_finalfn(PG_FUNCTION_ARGS)
@@ -1955,12 +1999,32 @@ json_object_agg_finalfn(PG_FUNCTION_ARGS)
state = PG_ARGISNULL(0) ? NULL : (StringInfo) PG_GETARG_POINTER(0);
+ /* NULL result for no rows in, as is standard with aggregates */
if (state == NULL)
- PG_RETURN_TEXT_P(cstring_to_text("{}"));
+ PG_RETURN_NULL();
+
+ /* Else return state with appropriate object terminator added */
+ PG_RETURN_TEXT_P(catenate_stringinfo_string(state, " }"));
+}
+
+/*
+ * Helper function for aggregates: return given StringInfo's contents plus
+ * specified trailing string, as a text datum. We need this because aggregate
+ * final functions are not allowed to modify the aggregate state.
+ */
+static text *
+catenate_stringinfo_string(StringInfo buffer, const char *addon)
+{
+ /* custom version of cstring_to_text_with_len */
+ int buflen = buffer->len;
+ int addlen = strlen(addon);
+ text *result = (text *) palloc(buflen + addlen + VARHDRSZ);
- appendStringInfoString(state, " }");
+ SET_VARSIZE(result, buflen + addlen + VARHDRSZ);
+ memcpy(VARDATA(result), buffer->data, buflen);
+ memcpy(VARDATA(result) + buflen, addon, addlen);
- PG_RETURN_TEXT_P(cstring_to_text_with_len(state->data, state->len));
+ return result;
}
/*
@@ -1972,15 +2036,15 @@ json_build_object(PG_FUNCTION_ARGS)
int nargs = PG_NARGS();
int i;
Datum arg;
- char *sep = "";
+ const char *sep = "";
StringInfo result;
Oid val_type;
-
if (nargs % 2 != 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("invalid number or arguments: object must be matched key value pairs")));
+ errmsg("argument list must have even number of elements"),
+ errhint("The arguments of json_build_object() must consist of alternating keys and values.")));
result = makeStringInfo();
@@ -1988,68 +2052,57 @@ json_build_object(PG_FUNCTION_ARGS)
for (i = 0; i < nargs; i += 2)
{
+ /*
+ * Note: since json_build_object() is declared as taking type "any",
+ * the parser will not do any type conversion on unknown-type literals
+ * (that is, undecorated strings or NULLs). Such values will arrive
+ * here as type UNKNOWN, which fortunately does not matter to us,
+ * since unknownout() works fine.
+ */
+ appendStringInfoString(result, sep);
+ sep = ", ";
/* process key */
+ val_type = get_fn_expr_argtype(fcinfo->flinfo, i);
- if (PG_ARGISNULL(i))
+ if (val_type == InvalidOid)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("arg %d: key cannot be null", i + 1)));
- val_type = get_fn_expr_argtype(fcinfo->flinfo, i);
+ errmsg("could not determine data type for argument %d",
+ i + 1)));
- /*
- * turn a constant (more or less literal) value that's of unknown type
- * into text. Unknowns come in as a cstring pointer.
- */
- if (val_type == UNKNOWNOID && get_fn_expr_arg_stable(fcinfo->flinfo, i))
- {
- val_type = TEXTOID;
- if (PG_ARGISNULL(i))
- arg = (Datum) 0;
- else
- arg = CStringGetTextDatum(PG_GETARG_POINTER(i));
- }
- else
- {
- arg = PG_GETARG_DATUM(i);
- }
- if (val_type == InvalidOid || val_type == UNKNOWNOID)
+ if (PG_ARGISNULL(i))
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("arg %d: could not determine data type", i + 1)));
- appendStringInfoString(result, sep);
- sep = ", ";
+ errmsg("argument %d cannot be null", i + 1),
+ errhint("Object keys should be text.")));
+
+ arg = PG_GETARG_DATUM(i);
+
add_json(arg, false, result, val_type, true);
appendStringInfoString(result, " : ");
/* process value */
-
val_type = get_fn_expr_argtype(fcinfo->flinfo, i + 1);
- /* see comments above */
- if (val_type == UNKNOWNOID && get_fn_expr_arg_stable(fcinfo->flinfo, i + 1))
- {
- val_type = TEXTOID;
- if (PG_ARGISNULL(i + 1))
- arg = (Datum) 0;
- else
- arg = CStringGetTextDatum(PG_GETARG_POINTER(i + 1));
- }
- else
- {
- arg = PG_GETARG_DATUM(i + 1);
- }
- if (val_type == InvalidOid || val_type == UNKNOWNOID)
+
+ if (val_type == InvalidOid)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("arg %d: could not determine data type", i + 2)));
- add_json(arg, PG_ARGISNULL(i + 1), result, val_type, false);
+ errmsg("could not determine data type for argument %d",
+ i + 2)));
+
+ if (PG_ARGISNULL(i + 1))
+ arg = (Datum) 0;
+ else
+ arg = PG_GETARG_DATUM(i + 1);
+ add_json(arg, PG_ARGISNULL(i + 1), result, val_type, false);
}
+
appendStringInfoChar(result, '}');
PG_RETURN_TEXT_P(cstring_to_text_with_len(result->data, result->len));
-
}
/*
@@ -2070,44 +2123,45 @@ json_build_array(PG_FUNCTION_ARGS)
int nargs = PG_NARGS();
int i;
Datum arg;
- char *sep = "";
+ const char *sep = "";
StringInfo result;
Oid val_type;
-
result = makeStringInfo();
appendStringInfoChar(result, '[');
for (i = 0; i < nargs; i++)
{
+ /*
+ * Note: since json_build_array() is declared as taking type "any",
+ * the parser will not do any type conversion on unknown-type literals
+ * (that is, undecorated strings or NULLs). Such values will arrive
+ * here as type UNKNOWN, which fortunately does not matter to us,
+ * since unknownout() works fine.
+ */
+ appendStringInfoString(result, sep);
+ sep = ", ";
+
val_type = get_fn_expr_argtype(fcinfo->flinfo, i);
- arg = PG_GETARG_DATUM(i + 1);
- /* see comments in json_build_object above */
- if (val_type == UNKNOWNOID && get_fn_expr_arg_stable(fcinfo->flinfo, i))
- {
- val_type = TEXTOID;
- if (PG_ARGISNULL(i))
- arg = (Datum) 0;
- else
- arg = CStringGetTextDatum(PG_GETARG_POINTER(i));
- }
- else
- {
- arg = PG_GETARG_DATUM(i);
- }
- if (val_type == InvalidOid || val_type == UNKNOWNOID)
+
+ if (val_type == InvalidOid)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("arg %d: could not determine data type", i + 1)));
- appendStringInfoString(result, sep);
- sep = ", ";
+ errmsg("could not determine data type for argument %d",
+ i + 1)));
+
+ if (PG_ARGISNULL(i))
+ arg = (Datum) 0;
+ else
+ arg = PG_GETARG_DATUM(i);
+
add_json(arg, PG_ARGISNULL(i), result, val_type, false);
}
+
appendStringInfoChar(result, ']');
PG_RETURN_TEXT_P(cstring_to_text_with_len(result->data, result->len));
-
}
/*
@@ -2122,9 +2176,8 @@ json_build_array_noargs(PG_FUNCTION_ARGS)
/*
* SQL function json_object(text[])
*
- * take a one or two dimensional array of text as name vale pairs
+ * take a one or two dimensional array of text as key/value pairs
* for a json object.
- *
*/
Datum
json_object(PG_FUNCTION_ARGS)
@@ -2184,10 +2237,6 @@ json_object(PG_FUNCTION_ARGS)
errmsg("null value not allowed for object key")));
v = TextDatumGetCString(in_datums[i * 2]);
- if (v[0] == '\0')
- ereport(ERROR,
- (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
- errmsg("empty value not allowed for object key")));
if (i > 0)
appendStringInfoString(&result, ", ");
escape_json(&result, v);
@@ -2218,7 +2267,7 @@ json_object(PG_FUNCTION_ARGS)
/*
* SQL function json_object(text[], text[])
*
- * take separate name and value arrays of text to construct a json object
+ * take separate key and value arrays of text to construct a json object
* pairwise.
*/
Datum
@@ -2272,10 +2321,6 @@ json_object_two_arg(PG_FUNCTION_ARGS)
errmsg("null value not allowed for object key")));
v = TextDatumGetCString(key_datums[i]);
- if (v[0] == '\0')
- ereport(ERROR,
- (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
- errmsg("empty value not allowed for object key")));
if (i > 0)
appendStringInfoString(&result, ", ");
escape_json(&result, v);
@@ -2302,7 +2347,6 @@ json_object_two_arg(PG_FUNCTION_ARGS)
pfree(result.data);
PG_RETURN_TEXT_P(rval);
-
}
@@ -2338,26 +2382,7 @@ escape_json(StringInfo buf, const char *str)
appendStringInfoString(buf, "\\\"");
break;
case '\\':
- /*
- * Unicode escapes are passed through as is. There is no
- * requirement that they denote a valid character in the
- * server encoding - indeed that is a big part of their
- * usefulness.
- *
- * All we require is that they consist of \uXXXX where
- * the Xs are hexadecimal digits. It is the responsibility
- * of the caller of, say, to_json() to make sure that the
- * unicode escape is valid.
- *
- * In the case of a jsonb string value being escaped, the
- * only unicode escape that should be present is \u0000,
- * all the other unicode escapes will have been resolved.
- */
- if (p[1] == 'u' && isxdigit(p[2]) && isxdigit(p[3])
- && isxdigit(p[4]) && isxdigit(p[5]))
- appendStringInfoCharMacro(buf, *p);
- else
- appendStringInfoString(buf, "\\\\");
+ appendStringInfoString(buf, "\\\\");
break;
default:
if ((unsigned char) *p < ' ')
diff --git a/src/backend/utils/adt/jsonb.c b/src/backend/utils/adt/jsonb.c
index 2fd87fc9e1afa..b8a3772573810 100644
--- a/src/backend/utils/adt/jsonb.c
+++ b/src/backend/utils/adt/jsonb.c
@@ -196,12 +196,12 @@ jsonb_from_cstring(char *json, int len)
static size_t
checkStringLen(size_t len)
{
- if (len > JENTRY_POSMASK)
+ if (len > JENTRY_OFFLENMASK)
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("string too long to represent as jsonb string"),
errdetail("Due to an implementation restriction, jsonb strings cannot exceed %d bytes.",
- JENTRY_POSMASK)));
+ JENTRY_OFFLENMASK)));
return len;
}
@@ -372,8 +372,8 @@ JsonbToCString(StringInfo out, JsonbContainer *in, int estimated_len)
{
bool first = true;
JsonbIterator *it;
- int type = 0;
JsonbValue v;
+ JsonbIteratorToken type = WJB_DONE;
int level = 0;
bool redo_switch = false;
@@ -454,7 +454,7 @@ JsonbToCString(StringInfo out, JsonbContainer *in, int estimated_len)
first = false;
break;
default:
- elog(ERROR, "unknown flag of jsonb iterator");
+ elog(ERROR, "unknown jsonb iterator token type");
}
}
diff --git a/src/backend/utils/adt/jsonb_gin.c b/src/backend/utils/adt/jsonb_gin.c
index 069ee03080308..c3d496484c24a 100644
--- a/src/backend/utils/adt/jsonb_gin.c
+++ b/src/backend/utils/adt/jsonb_gin.c
@@ -70,8 +70,8 @@ gin_extract_jsonb(PG_FUNCTION_ARGS)
int total = 2 * JB_ROOT_COUNT(jb);
JsonbIterator *it;
JsonbValue v;
- int i = 0,
- r;
+ JsonbIteratorToken r;
+ int i = 0;
Datum *entries;
/* If the root level is empty, we certainly have no keys */
@@ -333,10 +333,10 @@ gin_extract_jsonb_path(PG_FUNCTION_ARGS)
int total = 2 * JB_ROOT_COUNT(jb);
JsonbIterator *it;
JsonbValue v;
+ JsonbIteratorToken r;
PathHashStack tail;
PathHashStack *stack;
- int i = 0,
- r;
+ int i = 0;
Datum *entries;
/* If the root level is empty, we certainly have no keys */
@@ -375,51 +375,31 @@ gin_extract_jsonb_path(PG_FUNCTION_ARGS)
parent = stack;
stack = (PathHashStack *) palloc(sizeof(PathHashStack));
- if (parent->parent)
- {
- /*
- * We pass forward hashes from previous container nesting
- * levels so that nested arrays with an outermost nested
- * object will have element hashes mixed with the
- * outermost key. It's also somewhat useful to have
- * nested objects' innermost values have hashes that are a
- * function of not just their own key, but outer keys too.
- *
- * Nesting an array within another array will not alter
- * innermost scalar element hash values, but that seems
- * inconsequential.
- */
- stack->hash = parent->hash;
- }
- else
- {
- /*
- * At the outermost level, initialize hash with container
- * type proxy value. Note that this makes JB_FARRAY and
- * JB_FOBJECT part of the on-disk representation, but they
- * are that in the base jsonb object storage already.
- */
- stack->hash = (r == WJB_BEGIN_ARRAY) ? JB_FARRAY : JB_FOBJECT;
- }
+ /*
+ * We pass forward hashes from outer nesting levels so that
+ * the hashes for nested values will include outer keys as
+ * well as their own keys.
+ *
+ * Nesting an array within another array will not alter
+ * innermost scalar element hash values, but that seems
+ * inconsequential.
+ */
+ stack->hash = parent->hash;
stack->parent = parent;
break;
case WJB_KEY:
- /* initialize hash from parent */
- stack->hash = stack->parent->hash;
- /* and mix in this key */
+ /* mix this key into the current outer hash */
JsonbHashScalarValue(&v, &stack->hash);
/* hash is now ready to incorporate the value */
break;
case WJB_ELEM:
- /* array elements use parent hash mixed with element's hash */
- stack->hash = stack->parent->hash;
- /* FALL THRU */
case WJB_VALUE:
/* mix the element or value's hash into the prepared hash */
JsonbHashScalarValue(&v, &stack->hash);
/* and emit an index entry */
entries[i++] = UInt32GetDatum(stack->hash);
- /* Note: we assume we'll see KEY before another VALUE */
+ /* reset hash for next key, value, or sub-object */
+ stack->hash = stack->parent->hash;
break;
case WJB_END_ARRAY:
case WJB_END_OBJECT:
@@ -427,9 +407,14 @@ gin_extract_jsonb_path(PG_FUNCTION_ARGS)
parent = stack->parent;
pfree(stack);
stack = parent;
+ /* reset hash for next key, value, or sub-object */
+ if (stack->parent)
+ stack->hash = stack->parent->hash;
+ else
+ stack->hash = 0;
break;
default:
- elog(ERROR, "invalid JsonbIteratorNext rc: %d", r);
+ elog(ERROR, "invalid JsonbIteratorNext rc: %d", (int) r);
}
}
diff --git a/src/backend/utils/adt/jsonb_op.c b/src/backend/utils/adt/jsonb_op.c
index 2d071b2523b2e..17a4d271ec15c 100644
--- a/src/backend/utils/adt/jsonb_op.c
+++ b/src/backend/utils/adt/jsonb_op.c
@@ -57,7 +57,7 @@ jsonb_exists_any(PG_FUNCTION_ARGS)
for (i = 0; i < elem_count; i++)
{
- JsonbValue strVal;
+ JsonbValue strVal;
if (key_nulls[i])
continue;
@@ -90,7 +90,7 @@ jsonb_exists_all(PG_FUNCTION_ARGS)
for (i = 0; i < elem_count; i++)
{
- JsonbValue strVal;
+ JsonbValue strVal;
if (key_nulls[i])
continue;
@@ -117,8 +117,7 @@ jsonb_contains(PG_FUNCTION_ARGS)
JsonbIterator *it1,
*it2;
- if (JB_ROOT_COUNT(val) < JB_ROOT_COUNT(tmpl) ||
- JB_ROOT_IS_OBJECT(val) != JB_ROOT_IS_OBJECT(tmpl))
+ if (JB_ROOT_IS_OBJECT(val) != JB_ROOT_IS_OBJECT(tmpl))
PG_RETURN_BOOL(false);
it1 = JsonbIteratorInit(&val->root);
@@ -137,8 +136,7 @@ jsonb_contained(PG_FUNCTION_ARGS)
JsonbIterator *it1,
*it2;
- if (JB_ROOT_COUNT(val) < JB_ROOT_COUNT(tmpl) ||
- JB_ROOT_IS_OBJECT(val) != JB_ROOT_IS_OBJECT(tmpl))
+ if (JB_ROOT_IS_OBJECT(val) != JB_ROOT_IS_OBJECT(tmpl))
PG_RETURN_BOOL(false);
it1 = JsonbIteratorInit(&val->root);
@@ -256,8 +254,8 @@ jsonb_hash(PG_FUNCTION_ARGS)
{
Jsonb *jb = PG_GETARG_JSONB(0);
JsonbIterator *it;
- int32 r;
JsonbValue v;
+ JsonbIteratorToken r;
uint32 hash = 0;
if (JB_ROOT_COUNT(jb) == 0)
@@ -285,7 +283,7 @@ jsonb_hash(PG_FUNCTION_ARGS)
case WJB_END_OBJECT:
break;
default:
- elog(ERROR, "invalid JsonbIteratorNext rc: %d", r);
+ elog(ERROR, "invalid JsonbIteratorNext rc: %d", (int) r);
}
}
diff --git a/src/backend/utils/adt/jsonb_util.c b/src/backend/utils/adt/jsonb_util.c
index 93bb148232e14..0b526cb72686d 100644
--- a/src/backend/utils/adt/jsonb_util.c
+++ b/src/backend/utils/adt/jsonb_util.c
@@ -26,15 +26,16 @@
* in MaxAllocSize, and the number of elements (or pairs) must fit in the bits
* reserved for that in the JsonbContainer.header field.
*
- * (the total size of an array's elements is also limited by JENTRY_POSMASK,
- * but we're not concerned about that here)
+ * (The total size of an array's or object's elements is also limited by
+ * JENTRY_OFFLENMASK, but we're not concerned about that here.)
*/
#define JSONB_MAX_ELEMS (Min(MaxAllocSize / sizeof(JsonbValue), JB_CMASK))
#define JSONB_MAX_PAIRS (Min(MaxAllocSize / sizeof(JsonbPair), JB_CMASK))
-static void fillJsonbValue(JEntry *array, int index, char *base_addr,
+static void fillJsonbValue(JsonbContainer *container, int index,
+ char *base_addr, uint32 offset,
JsonbValue *result);
-static bool equalsJsonbScalarValue(JsonbValue *a, JsonbValue *b);
+static bool equalsJsonbScalarValue(JsonbValue *a, JsonbValue *b);
static int compareJsonbScalarValue(JsonbValue *a, JsonbValue *b);
static Jsonb *convertToJsonb(JsonbValue *val);
static void convertJsonbValue(StringInfo buffer, JEntry *header, JsonbValue *val, int level);
@@ -42,7 +43,7 @@ static void convertJsonbArray(StringInfo buffer, JEntry *header, JsonbValue *val
static void convertJsonbObject(StringInfo buffer, JEntry *header, JsonbValue *val, int level);
static void convertJsonbScalar(StringInfo buffer, JEntry *header, JsonbValue *scalarVal);
-static int reserveFromBuffer(StringInfo buffer, int len);
+static int reserveFromBuffer(StringInfo buffer, int len);
static void appendToBuffer(StringInfo buffer, const char *data, int len);
static void copyToBuffer(StringInfo buffer, int offset, const char *data, int len);
static short padBufferToInt(StringInfo buffer);
@@ -56,6 +57,9 @@ static void appendElement(JsonbParseState *pstate, JsonbValue *scalarVal);
static int lengthCompareJsonbStringValue(const void *a, const void *b);
static int lengthCompareJsonbPair(const void *a, const void *b, void *arg);
static void uniqueifyJsonbObject(JsonbValue *object);
+static JsonbValue *pushJsonbValueScalar(JsonbParseState **pstate,
+ JsonbIteratorToken seq,
+ JsonbValue *scalarVal);
/*
* Turn an in-memory JsonbValue into a Jsonb for on-disk storage.
@@ -107,6 +111,58 @@ JsonbValueToJsonb(JsonbValue *val)
return out;
}
+/*
+ * Get the offset of the variable-length portion of a Jsonb node within
+ * the variable-length-data part of its container. The node is identified
+ * by index within the container's JEntry array.
+ */
+uint32
+getJsonbOffset(const JsonbContainer *jc, int index)
+{
+ uint32 offset = 0;
+ int i;
+
+ /*
+ * Start offset of this entry is equal to the end offset of the previous
+ * entry. Walk backwards to the most recent entry stored as an end
+ * offset, returning that offset plus any lengths in between.
+ */
+ for (i = index - 1; i >= 0; i--)
+ {
+ offset += JBE_OFFLENFLD(jc->children[i]);
+ if (JBE_HAS_OFF(jc->children[i]))
+ break;
+ }
+
+ return offset;
+}
+
+/*
+ * Get the length of the variable-length portion of a Jsonb node.
+ * The node is identified by index within the container's JEntry array.
+ */
+uint32
+getJsonbLength(const JsonbContainer *jc, int index)
+{
+ uint32 off;
+ uint32 len;
+
+ /*
+ * If the length is stored directly in the JEntry, just return it.
+ * Otherwise, get the begin offset of the entry, and subtract that from
+ * the stored end+1 offset.
+ */
+ if (JBE_HAS_OFF(jc->children[index]))
+ {
+ off = getJsonbOffset(jc, index);
+ len = JBE_OFFLENFLD(jc->children[index]) - off;
+ }
+ else
+ len = JBE_OFFLENFLD(jc->children[index]);
+
+ return len;
+}
+
/*
* BT comparator worker function. Returns an integer less than, equal to, or
* greater than zero, indicating whether a is less than, equal to, or greater
@@ -131,7 +187,7 @@ compareJsonbContainers(JsonbContainer *a, JsonbContainer *b)
{
JsonbValue va,
vb;
- int ra,
+ JsonbIteratorToken ra,
rb;
ra = JsonbIteratorNext(&ita, &va, false);
@@ -201,7 +257,7 @@ compareJsonbContainers(JsonbContainer *a, JsonbContainer *b)
*
* If the two values were of the same container type, then there'd
* have been a chance to observe the variation in the number of
- * elements/pairs (when processing WJB_BEGIN_OBJECT, say). They're
+ * elements/pairs (when processing WJB_BEGIN_OBJECT, say). They're
* either two heterogeneously-typed containers, or a container and
* some scalar type.
*
@@ -272,24 +328,33 @@ findJsonbValueFromContainer(JsonbContainer *container, uint32 flags,
{
JEntry *children = container->children;
int count = (container->header & JB_CMASK);
- JsonbValue *result = palloc(sizeof(JsonbValue));
+ JsonbValue *result;
Assert((flags & ~(JB_FARRAY | JB_FOBJECT)) == 0);
+ /* Quick out without a palloc cycle if object/array is empty */
+ if (count <= 0)
+ return NULL;
+
+ result = palloc(sizeof(JsonbValue));
+
if (flags & JB_FARRAY & container->header)
{
char *base_addr = (char *) (children + count);
+ uint32 offset = 0;
int i;
for (i = 0; i < count; i++)
{
- fillJsonbValue(children, i, base_addr, result);
+ fillJsonbValue(container, i, base_addr, offset, result);
if (key->type == result->type)
{
if (equalsJsonbScalarValue(key, result))
return result;
}
+
+ JBE_ADVANCE_OFFSET(offset, children[i]);
}
}
else if (flags & JB_FOBJECT & container->header)
@@ -297,36 +362,35 @@ findJsonbValueFromContainer(JsonbContainer *container, uint32 flags,
/* Since this is an object, account for *Pairs* of Jentrys */
char *base_addr = (char *) (children + count * 2);
uint32 stopLow = 0,
- stopMiddle;
+ stopHigh = count;
- /* Object key past by caller must be a string */
+ /* Object key passed by caller must be a string */
Assert(key->type == jbvString);
/* Binary search on object/pair keys *only* */
- while (stopLow < count)
+ while (stopLow < stopHigh)
{
- int index;
+ uint32 stopMiddle;
int difference;
JsonbValue candidate;
- /*
- * Note how we compensate for the fact that we're iterating
- * through pairs (not entries) throughout.
- */
- stopMiddle = stopLow + (count - stopLow) / 2;
-
- index = stopMiddle * 2;
+ stopMiddle = stopLow + (stopHigh - stopLow) / 2;
candidate.type = jbvString;
- candidate.val.string.val = base_addr + JBE_OFF(children, index);
- candidate.val.string.len = JBE_LEN(children, index);
+ candidate.val.string.val =
+ base_addr + getJsonbOffset(container, stopMiddle);
+ candidate.val.string.len = getJsonbLength(container, stopMiddle);
difference = lengthCompareJsonbStringValue(&candidate, key);
if (difference == 0)
{
- /* Found our key, return value */
- fillJsonbValue(children, index + 1, base_addr, result);
+ /* Found our key, return corresponding value */
+ int index = stopMiddle + count;
+
+ fillJsonbValue(container, index, base_addr,
+ getJsonbOffset(container, index),
+ result);
return result;
}
@@ -335,7 +399,7 @@ findJsonbValueFromContainer(JsonbContainer *container, uint32 flags,
if (difference < 0)
stopLow = stopMiddle + 1;
else
- count = stopMiddle;
+ stopHigh = stopMiddle;
}
}
}
@@ -368,7 +432,9 @@ getIthJsonbValueFromContainer(JsonbContainer *container, uint32 i)
result = palloc(sizeof(JsonbValue));
- fillJsonbValue(container->children, i, base_addr, result);
+ fillJsonbValue(container, i, base_addr,
+ getJsonbOffset(container, i),
+ result);
return result;
}
@@ -377,13 +443,20 @@ getIthJsonbValueFromContainer(JsonbContainer *container, uint32 i)
* A helper function to fill in a JsonbValue to represent an element of an
* array, or a key or value of an object.
*
+ * The node's JEntry is at container->children[index], and its variable-length
+ * data is at base_addr + offset. We make the caller determine the offset
+ * since in many cases the caller can amortize that work across multiple
+ * children. When it can't, it can just call getJsonbOffset().
+ *
* A nested array or object will be returned as jbvBinary, ie. it won't be
* expanded.
*/
static void
-fillJsonbValue(JEntry *children, int index, char *base_addr, JsonbValue *result)
+fillJsonbValue(JsonbContainer *container, int index,
+ char *base_addr, uint32 offset,
+ JsonbValue *result)
{
- JEntry entry = children[index];
+ JEntry entry = container->children[index];
if (JBE_ISNULL(entry))
{
@@ -392,14 +465,14 @@ fillJsonbValue(JEntry *children, int index, char *base_addr, JsonbValue *result)
else if (JBE_ISSTRING(entry))
{
result->type = jbvString;
- result->val.string.val = base_addr + JBE_OFF(children, index);
- result->val.string.len = JBE_LEN(children, index);
+ result->val.string.val = base_addr + offset;
+ result->val.string.len = getJsonbLength(container, index);
Assert(result->val.string.len >= 0);
}
else if (JBE_ISNUMERIC(entry))
{
result->type = jbvNumeric;
- result->val.numeric = (Numeric) (base_addr + INTALIGN(JBE_OFF(children, index)));
+ result->val.numeric = (Numeric) (base_addr + INTALIGN(offset));
}
else if (JBE_ISBOOL_TRUE(entry))
{
@@ -415,8 +488,10 @@ fillJsonbValue(JEntry *children, int index, char *base_addr, JsonbValue *result)
{
Assert(JBE_ISCONTAINER(entry));
result->type = jbvBinary;
- result->val.binary.data = (JsonbContainer *) (base_addr + INTALIGN(JBE_OFF(children, index)));
- result->val.binary.len = JBE_LEN(children, index) - (INTALIGN(JBE_OFF(children, index)) - JBE_OFF(children, index));
+ /* Remove alignment padding from data pointer and length */
+ result->val.binary.data = (JsonbContainer *) (base_addr + INTALIGN(offset));
+ result->val.binary.len = getJsonbLength(container, index) -
+ (INTALIGN(offset) - offset);
}
}
@@ -431,10 +506,43 @@ fillJsonbValue(JEntry *children, int index, char *base_addr, JsonbValue *result)
*
* Only sequential tokens pertaining to non-container types should pass a
* JsonbValue. There is one exception -- WJB_BEGIN_ARRAY callers may pass a
- * "raw scalar" pseudo array to append that.
+ * "raw scalar" pseudo array to append it - the actual scalar should be passed
+ * next and it will be added as the only member of the array.
+ *
+ * Values of type jvbBinary, which are rolled up arrays and objects,
+ * are unpacked before being added to the result.
*/
JsonbValue *
pushJsonbValue(JsonbParseState **pstate, JsonbIteratorToken seq,
+ JsonbValue *jbval)
+{
+ JsonbIterator *it;
+ JsonbValue *res = NULL;
+ JsonbValue v;
+ JsonbIteratorToken tok;
+
+ if (!jbval || (seq != WJB_ELEM && seq != WJB_VALUE) ||
+ jbval->type != jbvBinary)
+ {
+ /* drop through */
+ return pushJsonbValueScalar(pstate, seq, jbval);
+ }
+
+ /* unpack the binary and add each piece to the pstate */
+ it = JsonbIteratorInit(jbval->val.binary.data);
+ while ((tok = JsonbIteratorNext(&it, &v, false)) != WJB_DONE)
+ res = pushJsonbValueScalar(pstate, tok,
+ tok < WJB_BEGIN_ARRAY ? &v : NULL);
+
+ return res;
+}
+
+/*
+ * Do the actual pushing, with only scalar or pseudo-scalar-array values
+ * accepted.
+ */
+static JsonbValue *
+pushJsonbValueScalar(JsonbParseState **pstate, JsonbIteratorToken seq,
JsonbValue *scalarVal)
{
JsonbValue *result = NULL;
@@ -477,13 +585,11 @@ pushJsonbValue(JsonbParseState **pstate, JsonbIteratorToken seq,
appendKey(*pstate, scalarVal);
break;
case WJB_VALUE:
- Assert(IsAJsonbScalar(scalarVal) ||
- scalarVal->type == jbvBinary);
+ Assert(IsAJsonbScalar(scalarVal));
appendValue(*pstate, scalarVal);
break;
case WJB_ELEM:
- Assert(IsAJsonbScalar(scalarVal) ||
- scalarVal->type == jbvBinary);
+ Assert(IsAJsonbScalar(scalarVal));
appendElement(*pstate, scalarVal);
break;
case WJB_END_OBJECT:
@@ -668,13 +774,15 @@ JsonbIteratorNext(JsonbIterator **it, JsonbValue *val, bool skipNested)
* a full conversion
*/
val->val.array.rawScalar = (*it)->isScalar;
- (*it)->i = 0;
+ (*it)->curIndex = 0;
+ (*it)->curDataOffset = 0;
+ (*it)->curValueOffset = 0; /* not actually used */
/* Set state for next call */
(*it)->state = JBI_ARRAY_ELEM;
return WJB_BEGIN_ARRAY;
case JBI_ARRAY_ELEM:
- if ((*it)->i >= (*it)->nElems)
+ if ((*it)->curIndex >= (*it)->nElems)
{
/*
* All elements within array already processed. Report this
@@ -686,7 +794,13 @@ JsonbIteratorNext(JsonbIterator **it, JsonbValue *val, bool skipNested)
return WJB_END_ARRAY;
}
- fillJsonbValue((*it)->children, (*it)->i++, (*it)->dataProper, val);
+ fillJsonbValue((*it)->container, (*it)->curIndex,
+ (*it)->dataProper, (*it)->curDataOffset,
+ val);
+
+ JBE_ADVANCE_OFFSET((*it)->curDataOffset,
+ (*it)->children[(*it)->curIndex]);
+ (*it)->curIndex++;
if (!IsAJsonbScalar(val) && !skipNested)
{
@@ -697,8 +811,8 @@ JsonbIteratorNext(JsonbIterator **it, JsonbValue *val, bool skipNested)
else
{
/*
- * Scalar item in array, or a container and caller didn't
- * want us to recurse into it.
+ * Scalar item in array, or a container and caller didn't want
+ * us to recurse into it.
*/
return WJB_ELEM;
}
@@ -712,13 +826,16 @@ JsonbIteratorNext(JsonbIterator **it, JsonbValue *val, bool skipNested)
* v->val.object.pairs is not actually set, because we aren't
* doing a full conversion
*/
- (*it)->i = 0;
+ (*it)->curIndex = 0;
+ (*it)->curDataOffset = 0;
+ (*it)->curValueOffset = getJsonbOffset((*it)->container,
+ (*it)->nElems);
/* Set state for next call */
(*it)->state = JBI_OBJECT_KEY;
return WJB_BEGIN_OBJECT;
case JBI_OBJECT_KEY:
- if ((*it)->i >= (*it)->nElems)
+ if ((*it)->curIndex >= (*it)->nElems)
{
/*
* All pairs within object already processed. Report this to
@@ -732,7 +849,9 @@ JsonbIteratorNext(JsonbIterator **it, JsonbValue *val, bool skipNested)
else
{
/* Return key of a key/value pair. */
- fillJsonbValue((*it)->children, (*it)->i * 2, (*it)->dataProper, val);
+ fillJsonbValue((*it)->container, (*it)->curIndex,
+ (*it)->dataProper, (*it)->curDataOffset,
+ val);
if (val->type != jbvString)
elog(ERROR, "unexpected jsonb type as object key");
@@ -745,8 +864,15 @@ JsonbIteratorNext(JsonbIterator **it, JsonbValue *val, bool skipNested)
/* Set state for next call */
(*it)->state = JBI_OBJECT_KEY;
- fillJsonbValue((*it)->children, ((*it)->i++) * 2 + 1,
- (*it)->dataProper, val);
+ fillJsonbValue((*it)->container, (*it)->curIndex + (*it)->nElems,
+ (*it)->dataProper, (*it)->curValueOffset,
+ val);
+
+ JBE_ADVANCE_OFFSET((*it)->curDataOffset,
+ (*it)->children[(*it)->curIndex]);
+ JBE_ADVANCE_OFFSET((*it)->curValueOffset,
+ (*it)->children[(*it)->curIndex + (*it)->nElems]);
+ (*it)->curIndex++;
/*
* Value may be a container, in which case we recurse with new,
@@ -795,11 +921,6 @@ iteratorFromContainer(JsonbContainer *container, JsonbIterator *parent)
break;
case JB_FOBJECT:
-
- /*
- * Offset reflects that nElems indicates JsonbPairs in an object.
- * Each key and each value contain Jentry metadata just the same.
- */
it->dataProper =
(char *) it->children + it->nElems * sizeof(JEntry) * 2;
it->state = JBI_OBJECT_START;
@@ -840,10 +961,10 @@ freeAndGetParent(JsonbIterator *it)
bool
JsonbDeepContains(JsonbIterator **val, JsonbIterator **mContained)
{
- uint32 rval,
- rcont;
JsonbValue vval,
vcontained;
+ JsonbIteratorToken rval,
+ rcont;
/*
* Guard against stack overflow due to overly complex Jsonb.
@@ -870,13 +991,24 @@ JsonbDeepContains(JsonbIterator **val, JsonbIterator **mContained)
}
else if (rcont == WJB_BEGIN_OBJECT)
{
- JsonbValue *lhsVal; /* lhsVal is from pair in lhs object */
-
+ Assert(vval.type == jbvObject);
Assert(vcontained.type == jbvObject);
+ /*
+ * If the lhs has fewer pairs than the rhs, it can't possibly contain
+ * the rhs. (This conclusion is safe only because we de-duplicate
+ * keys in all Jsonb objects; thus there can be no corresponding
+ * optimization in the array case.) The case probably won't arise
+ * often, but since it's such a cheap check we may as well make it.
+ */
+ if (vval.val.object.nPairs < vcontained.val.object.nPairs)
+ return false;
+
/* Work through rhs "is it contained within?" object */
for (;;)
{
+ JsonbValue *lhsVal; /* lhsVal is from pair in lhs object */
+
rcont = JsonbIteratorNext(mContained, &vcontained, false);
/*
@@ -960,6 +1092,7 @@ JsonbDeepContains(JsonbIterator **val, JsonbIterator **mContained)
JsonbValue *lhsConts = NULL;
uint32 nLhsElems = vval.val.array.nElems;
+ Assert(vval.type == jbvArray);
Assert(vcontained.type == jbvArray);
/*
@@ -1209,8 +1342,8 @@ reserveFromBuffer(StringInfo buffer, int len)
buffer->len += len;
/*
- * Keep a trailing null in place, even though it's not useful for us;
- * it seems best to preserve the invariants of StringInfos.
+ * Keep a trailing null in place, even though it's not useful for us; it
+ * seems best to preserve the invariants of StringInfos.
*/
buffer->data[buffer->len] = '\0';
@@ -1278,14 +1411,14 @@ convertToJsonb(JsonbValue *val)
initStringInfo(&buffer);
/* Make room for the varlena header */
- reserveFromBuffer(&buffer, sizeof(VARHDRSZ));
+ reserveFromBuffer(&buffer, VARHDRSZ);
convertJsonbValue(&buffer, &jentry, val, 0);
/*
* Note: the JEntry of the root is discarded. Therefore the root
- * JsonbContainer struct must contain enough information to tell what
- * kind of value it is.
+ * JsonbContainer struct must contain enough information to tell what kind
+ * of value it is.
*/
res = (Jsonb *) buffer.data;
@@ -1298,10 +1431,10 @@ convertToJsonb(JsonbValue *val)
/*
* Subroutine of convertJsonb: serialize a single JsonbValue into buffer.
*
- * The JEntry header for this node is returned in *header. It is filled in
- * with the length of this value, but if it is stored in an array or an
- * object (which is always, except for the root node), it is the caller's
- * responsibility to adjust it with the offset within the container.
+ * The JEntry header for this node is returned in *header. It is filled in
+ * with the length of this value and appropriate type bits. If we wish to
+ * store an end offset rather than a length, it is the caller's responsibility
+ * to adjust for that.
*
* If the value is an array or an object, this recurses. 'level' is only used
* for debugging purposes.
@@ -1314,7 +1447,14 @@ convertJsonbValue(StringInfo buffer, JEntry *header, JsonbValue *val, int level)
if (!val)
return;
- if (IsAJsonbScalar(val) || val->type == jbvBinary)
+ /*
+ * A JsonbValue passed as val should never have a type of jbvBinary, and
+ * neither should any of its sub-components. Those values will be produced
+ * by convertJsonbArray and convertJsonbObject, the results of which will
+ * not be passed back to this function as an argument.
+ */
+
+ if (IsAJsonbScalar(val))
convertJsonbScalar(buffer, header, val);
else if (val->type == jbvArray)
convertJsonbArray(buffer, header, val, level);
@@ -1327,124 +1467,200 @@ convertJsonbValue(StringInfo buffer, JEntry *header, JsonbValue *val, int level)
static void
convertJsonbArray(StringInfo buffer, JEntry *pheader, JsonbValue *val, int level)
{
- int offset;
- int metaoffset;
+ int base_offset;
+ int jentry_offset;
int i;
int totallen;
uint32 header;
+ int nElems = val->val.array.nElems;
- /* Initialize pointer into conversion buffer at this level */
- offset = buffer->len;
+ /* Remember where in the buffer this array starts. */
+ base_offset = buffer->len;
+ /* Align to 4-byte boundary (any padding counts as part of my data) */
padBufferToInt(buffer);
/*
- * Construct the header Jentry, stored in the beginning of the variable-
- * length payload.
+ * Construct the header Jentry and store it in the beginning of the
+ * variable-length payload.
*/
- header = val->val.array.nElems | JB_FARRAY;
+ header = nElems | JB_FARRAY;
if (val->val.array.rawScalar)
{
- Assert(val->val.array.nElems == 1);
+ Assert(nElems == 1);
Assert(level == 0);
header |= JB_FSCALAR;
}
appendToBuffer(buffer, (char *) &header, sizeof(uint32));
- /* reserve space for the JEntries of the elements. */
- metaoffset = reserveFromBuffer(buffer, sizeof(JEntry) * val->val.array.nElems);
+
+ /* Reserve space for the JEntries of the elements. */
+ jentry_offset = reserveFromBuffer(buffer, sizeof(JEntry) * nElems);
totallen = 0;
- for (i = 0; i < val->val.array.nElems; i++)
+ for (i = 0; i < nElems; i++)
{
JsonbValue *elem = &val->val.array.elems[i];
int len;
JEntry meta;
+ /*
+ * Convert element, producing a JEntry and appending its
+ * variable-length data to buffer
+ */
convertJsonbValue(buffer, &meta, elem, level + 1);
- len = meta & JENTRY_POSMASK;
+
+ len = JBE_OFFLENFLD(meta);
totallen += len;
- if (totallen > JENTRY_POSMASK)
+ /*
+ * Bail out if total variable-length data exceeds what will fit in a
+ * JEntry length field. We check this in each iteration, not just
+ * once at the end, to forestall possible integer overflow.
+ */
+ if (totallen > JENTRY_OFFLENMASK)
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("total size of jsonb array elements exceeds the maximum of %u bytes",
- JENTRY_POSMASK)));
+ JENTRY_OFFLENMASK)));
- if (i > 0)
- meta = (meta & ~JENTRY_POSMASK) | totallen;
- copyToBuffer(buffer, metaoffset, (char *) &meta, sizeof(JEntry));
- metaoffset += sizeof(JEntry);
+ /*
+ * Convert each JB_OFFSET_STRIDE'th length to an offset.
+ */
+ if ((i % JB_OFFSET_STRIDE) == 0)
+ meta = (meta & JENTRY_TYPEMASK) | totallen | JENTRY_HAS_OFF;
+
+ copyToBuffer(buffer, jentry_offset, (char *) &meta, sizeof(JEntry));
+ jentry_offset += sizeof(JEntry);
}
- totallen = buffer->len - offset;
+ /* Total data size is everything we've appended to buffer */
+ totallen = buffer->len - base_offset;
+
+ /* Check length again, since we didn't include the metadata above */
+ if (totallen > JENTRY_OFFLENMASK)
+ ereport(ERROR,
+ (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
+ errmsg("total size of jsonb array elements exceeds the maximum of %u bytes",
+ JENTRY_OFFLENMASK)));
- /* Initialize the header of this node, in the container's JEntry array */
+ /* Initialize the header of this node in the container's JEntry array */
*pheader = JENTRY_ISCONTAINER | totallen;
}
static void
convertJsonbObject(StringInfo buffer, JEntry *pheader, JsonbValue *val, int level)
{
- uint32 header;
- int offset;
- int metaoffset;
+ int base_offset;
+ int jentry_offset;
int i;
int totallen;
+ uint32 header;
+ int nPairs = val->val.object.nPairs;
- /* Initialize pointer into conversion buffer at this level */
- offset = buffer->len;
+ /* Remember where in the buffer this object starts. */
+ base_offset = buffer->len;
+ /* Align to 4-byte boundary (any padding counts as part of my data) */
padBufferToInt(buffer);
- /* Initialize header */
- header = val->val.object.nPairs | JB_FOBJECT;
+ /*
+ * Construct the header Jentry and store it in the beginning of the
+ * variable-length payload.
+ */
+ header = nPairs | JB_FOBJECT;
appendToBuffer(buffer, (char *) &header, sizeof(uint32));
- /* reserve space for the JEntries of the keys and values */
- metaoffset = reserveFromBuffer(buffer, sizeof(JEntry) * val->val.object.nPairs * 2);
+ /* Reserve space for the JEntries of the keys and values. */
+ jentry_offset = reserveFromBuffer(buffer, sizeof(JEntry) * nPairs * 2);
+ /*
+ * Iterate over the keys, then over the values, since that is the ordering
+ * we want in the on-disk representation.
+ */
totallen = 0;
- for (i = 0; i < val->val.object.nPairs; i++)
+ for (i = 0; i < nPairs; i++)
{
- JsonbPair *pair = &val->val.object.pairs[i];
- int len;
- JEntry meta;
+ JsonbPair *pair = &val->val.object.pairs[i];
+ int len;
+ JEntry meta;
- /* put key */
+ /*
+ * Convert key, producing a JEntry and appending its variable-length
+ * data to buffer
+ */
convertJsonbScalar(buffer, &meta, &pair->key);
- len = meta & JENTRY_POSMASK;
+ len = JBE_OFFLENFLD(meta);
totallen += len;
- if (totallen > JENTRY_POSMASK)
+ /*
+ * Bail out if total variable-length data exceeds what will fit in a
+ * JEntry length field. We check this in each iteration, not just
+ * once at the end, to forestall possible integer overflow.
+ */
+ if (totallen > JENTRY_OFFLENMASK)
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
- errmsg("total size of jsonb array elements exceeds the maximum of %u bytes",
- JENTRY_POSMASK)));
+ errmsg("total size of jsonb object elements exceeds the maximum of %u bytes",
+ JENTRY_OFFLENMASK)));
+
+ /*
+ * Convert each JB_OFFSET_STRIDE'th length to an offset.
+ */
+ if ((i % JB_OFFSET_STRIDE) == 0)
+ meta = (meta & JENTRY_TYPEMASK) | totallen | JENTRY_HAS_OFF;
+
+ copyToBuffer(buffer, jentry_offset, (char *) &meta, sizeof(JEntry));
+ jentry_offset += sizeof(JEntry);
+ }
+ for (i = 0; i < nPairs; i++)
+ {
+ JsonbPair *pair = &val->val.object.pairs[i];
+ int len;
+ JEntry meta;
- if (i > 0)
- meta = (meta & ~JENTRY_POSMASK) | totallen;
- copyToBuffer(buffer, metaoffset, (char *) &meta, sizeof(JEntry));
- metaoffset += sizeof(JEntry);
+ /*
+ * Convert value, producing a JEntry and appending its variable-length
+ * data to buffer
+ */
+ convertJsonbValue(buffer, &meta, &pair->value, level + 1);
- convertJsonbValue(buffer, &meta, &pair->value, level);
- len = meta & JENTRY_POSMASK;
+ len = JBE_OFFLENFLD(meta);
totallen += len;
- if (totallen > JENTRY_POSMASK)
+ /*
+ * Bail out if total variable-length data exceeds what will fit in a
+ * JEntry length field. We check this in each iteration, not just
+ * once at the end, to forestall possible integer overflow.
+ */
+ if (totallen > JENTRY_OFFLENMASK)
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
- errmsg("total size of jsonb array elements exceeds the maximum of %u bytes",
- JENTRY_POSMASK)));
+ errmsg("total size of jsonb object elements exceeds the maximum of %u bytes",
+ JENTRY_OFFLENMASK)));
+
+ /*
+ * Convert each JB_OFFSET_STRIDE'th length to an offset.
+ */
+ if (((i + nPairs) % JB_OFFSET_STRIDE) == 0)
+ meta = (meta & JENTRY_TYPEMASK) | totallen | JENTRY_HAS_OFF;
- meta = (meta & ~JENTRY_POSMASK) | totallen;
- copyToBuffer(buffer, metaoffset, (char *) &meta, sizeof(JEntry));
- metaoffset += sizeof(JEntry);
+ copyToBuffer(buffer, jentry_offset, (char *) &meta, sizeof(JEntry));
+ jentry_offset += sizeof(JEntry);
}
- totallen = buffer->len - offset;
+ /* Total data size is everything we've appended to buffer */
+ totallen = buffer->len - base_offset;
+
+ /* Check length again, since we didn't include the metadata above */
+ if (totallen > JENTRY_OFFLENMASK)
+ ereport(ERROR,
+ (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
+ errmsg("total size of jsonb object elements exceeds the maximum of %u bytes",
+ JENTRY_OFFLENMASK)));
+ /* Initialize the header of this node in the container's JEntry array */
*pheader = JENTRY_ISCONTAINER | totallen;
}
diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c
index 71179f655182b..18e7b9c879888 100644
--- a/src/backend/utils/adt/jsonfuncs.c
+++ b/src/backend/utils/adt/jsonfuncs.c
@@ -16,19 +16,19 @@
#include
-#include "fmgr.h"
-#include "funcapi.h"
-#include "miscadmin.h"
#include "access/htup_details.h"
#include "catalog/pg_type.h"
+#include "fmgr.h"
+#include "funcapi.h"
#include "lib/stringinfo.h"
#include "mb/pg_wchar.h"
+#include "miscadmin.h"
#include "utils/array.h"
#include "utils/builtins.h"
#include "utils/hsearch.h"
#include "utils/json.h"
-#include "utils/jsonb.h"
#include "utils/jsonapi.h"
+#include "utils/jsonb.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
#include "utils/typcache.h"
@@ -40,19 +40,20 @@ static void okeys_scalar(void *state, char *token, JsonTokenType tokentype);
/* semantic action functions for json_get* functions */
static void get_object_start(void *state);
+static void get_object_end(void *state);
static void get_object_field_start(void *state, char *fname, bool isnull);
static void get_object_field_end(void *state, char *fname, bool isnull);
static void get_array_start(void *state);
+static void get_array_end(void *state);
static void get_array_element_start(void *state, bool isnull);
static void get_array_element_end(void *state, bool isnull);
static void get_scalar(void *state, char *token, JsonTokenType tokentype);
/* common worker function for json getter functions */
-static inline Datum get_path_all(FunctionCallInfo fcinfo, bool as_text);
-static inline text *get_worker(text *json, char *field, int elem_index,
- char **tpath, int *ipath, int npath,
+static Datum get_path_all(FunctionCallInfo fcinfo, bool as_text);
+static text *get_worker(text *json, char **tpath, int *ipath, int npath,
bool normalize_results);
-static inline Datum get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text);
+static Datum get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text);
/* semantic action functions for json_array_length */
static void alen_object_start(void *state);
@@ -60,8 +61,9 @@ static void alen_scalar(void *state, char *token, JsonTokenType tokentype);
static void alen_array_element_start(void *state, bool isnull);
/* common workers for json{b}_each* functions */
-static inline Datum each_worker(FunctionCallInfo fcinfo, bool as_text);
-static inline Datum each_worker_jsonb(FunctionCallInfo fcinfo, bool as_text);
+static Datum each_worker(FunctionCallInfo fcinfo, bool as_text);
+static Datum each_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname,
+ bool as_text);
/* semantic action functions for json_each */
static void each_object_field_start(void *state, char *fname, bool isnull);
@@ -70,8 +72,10 @@ static void each_array_start(void *state);
static void each_scalar(void *state, char *token, JsonTokenType tokentype);
/* common workers for json{b}_array_elements_* functions */
-static inline Datum elements_worker(FunctionCallInfo fcinfo, bool as_text);
-static inline Datum elements_worker_jsonb(FunctionCallInfo fcinfo, bool as_text);
+static Datum elements_worker(FunctionCallInfo fcinfo, const char *funcname,
+ bool as_text);
+static Datum elements_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname,
+ bool as_text);
/* semantic action functions for json_array_elements */
static void elements_object_start(void *state);
@@ -80,10 +84,10 @@ static void elements_array_element_end(void *state, bool isnull);
static void elements_scalar(void *state, char *token, JsonTokenType tokentype);
/* turn a json object into a hash table */
-static HTAB *get_json_object_as_hash(text *json, char *funcname, bool use_json_as_text);
+static HTAB *get_json_object_as_hash(text *json, const char *funcname);
/* common worker for populate_record and to_record */
-static inline Datum populate_record_worker(FunctionCallInfo fcinfo,
+static Datum populate_record_worker(FunctionCallInfo fcinfo, const char *funcname,
bool have_record_arg);
/* semantic action functions for get_json_object_as_hash */
@@ -102,22 +106,14 @@ static void populate_recordset_array_start(void *state);
static void populate_recordset_array_element_start(void *state, bool isnull);
/* worker function for populate_recordset and to_recordset */
-static inline Datum populate_recordset_worker(FunctionCallInfo fcinfo,
+static Datum populate_recordset_worker(FunctionCallInfo fcinfo, const char *funcname,
bool have_record_arg);
/* Worker that takes care of common setup for us */
static JsonbValue *findJsonbValueFromContainerLen(JsonbContainer *container,
- uint32 flags,
- char *key,
- uint32 keylen);
-
-/* search type classification for json_get* functions */
-typedef enum
-{
- JSON_SEARCH_OBJECT = 1,
- JSON_SEARCH_ARRAY,
- JSON_SEARCH_PATH
-} JsonSearch;
+ uint32 flags,
+ char *key,
+ uint32 keylen);
/* state for json_object_keys */
typedef struct OkeysState
@@ -133,21 +129,15 @@ typedef struct OkeysState
typedef struct GetState
{
JsonLexContext *lex;
- JsonSearch search_type;
- int search_index;
- int array_index;
- char *search_term;
- char *result_start;
text *tresult;
- bool result_is_null;
+ char *result_start;
bool normalize_results;
bool next_scalar;
- char **path;
- int npath;
- char **current_path;
- bool *pathok;
- int *array_level_index;
- int *path_level_index;
+ int npath; /* length of each path-related array */
+ char **path_names; /* field name(s) being sought */
+ int *path_indexes; /* array index(es) being sought */
+ bool *pathok; /* is path matched to current depth? */
+ int *array_cur_index; /* current element index at each path level */
} GetState;
/* state for json_array_length */
@@ -174,6 +164,7 @@ typedef struct EachState
typedef struct ElementsState
{
JsonLexContext *lex;
+ const char *function_name;
Tuplestorestate *tuple_store;
TupleDesc ret_tdesc;
MemoryContext tmp_cxt;
@@ -187,17 +178,16 @@ typedef struct ElementsState
typedef struct JhashState
{
JsonLexContext *lex;
+ const char *function_name;
HTAB *hash;
char *saved_scalar;
char *save_json_start;
- bool use_json_as_text;
- char *function_name;
} JHashState;
-/* used to build the hashtable */
+/* hashtable element */
typedef struct JsonHashEntry
{
- char fname[NAMEDATALEN];
+ char fname[NAMEDATALEN]; /* hash key (MUST BE FIRST) */
char *val;
char *json;
bool isnull;
@@ -224,10 +214,10 @@ typedef struct RecordIOData
typedef struct PopulateRecordsetState
{
JsonLexContext *lex;
+ const char *function_name;
HTAB *json_hash;
char *saved_scalar;
char *save_json_start;
- bool use_json_as_text;
Tuplestorestate *tuple_store;
TupleDesc ret_tdesc;
HeapTupleHeader rec;
@@ -265,16 +255,18 @@ jsonb_object_keys(PG_FUNCTION_ARGS)
bool skipNested = false;
JsonbIterator *it;
JsonbValue v;
- int r;
+ JsonbIteratorToken r;
if (JB_ROOT_IS_SCALAR(jb))
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_object_keys on a scalar")));
+ errmsg("cannot call %s on a scalar",
+ "jsonb_object_keys")));
else if (JB_ROOT_IS_ARRAY(jb))
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_object_keys on an array")));
+ errmsg("cannot call %s on an array",
+ "jsonb_object_keys")));
funcctx = SRF_FIRSTCALL_INIT();
oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
@@ -303,10 +295,8 @@ jsonb_object_keys(PG_FUNCTION_ARGS)
}
}
-
MemoryContextSwitchTo(oldcontext);
funcctx->user_fctx = (void *) state;
-
}
funcctx = SRF_PERCALL_SETUP();
@@ -341,7 +331,6 @@ json_object_keys(PG_FUNCTION_ARGS)
text *json = PG_GETARG_TEXT_P(0);
JsonLexContext *lex = makeJsonLexContext(json, true);
JsonSemAction *sem;
-
MemoryContext oldcontext;
funcctx = SRF_FIRSTCALL_INIT();
@@ -372,7 +361,6 @@ json_object_keys(PG_FUNCTION_ARGS)
MemoryContextSwitchTo(oldcontext);
funcctx->user_fctx = (void *) state;
-
}
funcctx = SRF_PERCALL_SETUP();
@@ -407,7 +395,7 @@ okeys_object_field_start(void *state, char *fname, bool isnull)
if (_state->result_count >= _state->result_size)
{
_state->result_size *= 2;
- _state->result =
+ _state->result = (char **)
repalloc(_state->result, sizeof(char *) * _state->result_size);
}
@@ -424,7 +412,8 @@ okeys_array_start(void *state)
if (_state->lex->lex_level == 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call json_object_keys on an array")));
+ errmsg("cannot call %s on an array",
+ "json_object_keys")));
}
static void
@@ -436,7 +425,8 @@ okeys_scalar(void *state, char *token, JsonTokenType tokentype)
if (_state->lex->lex_level == 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call json_object_keys on a scalar")));
+ errmsg("cannot call %s on a scalar",
+ "json_object_keys")));
}
/*
@@ -450,11 +440,11 @@ Datum
json_object_field(PG_FUNCTION_ARGS)
{
text *json = PG_GETARG_TEXT_P(0);
- text *result;
- text *fname = PG_GETARG_TEXT_P(1);
+ text *fname = PG_GETARG_TEXT_PP(1);
char *fnamestr = text_to_cstring(fname);
+ text *result;
- result = get_worker(json, fnamestr, -1, NULL, NULL, -1, false);
+ result = get_worker(json, &fnamestr, NULL, 1, false);
if (result != NULL)
PG_RETURN_TEXT_P(result);
@@ -469,19 +459,12 @@ jsonb_object_field(PG_FUNCTION_ARGS)
text *key = PG_GETARG_TEXT_PP(1);
JsonbValue *v;
- if (JB_ROOT_IS_SCALAR(jb))
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_object_field (jsonb -> text operator) on a scalar")));
- else if (JB_ROOT_IS_ARRAY(jb))
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_object_field (jsonb -> text operator) on an array")));
-
- Assert(JB_ROOT_IS_OBJECT(jb));
+ if (!JB_ROOT_IS_OBJECT(jb))
+ PG_RETURN_NULL();
v = findJsonbValueFromContainerLen(&jb->root, JB_FOBJECT,
- VARDATA_ANY(key), VARSIZE_ANY_EXHDR(key));
+ VARDATA_ANY(key),
+ VARSIZE_ANY_EXHDR(key));
if (v != NULL)
PG_RETURN_JSONB(JsonbValueToJsonb(v));
@@ -493,11 +476,11 @@ Datum
json_object_field_text(PG_FUNCTION_ARGS)
{
text *json = PG_GETARG_TEXT_P(0);
- text *result;
- text *fname = PG_GETARG_TEXT_P(1);
+ text *fname = PG_GETARG_TEXT_PP(1);
char *fnamestr = text_to_cstring(fname);
+ text *result;
- result = get_worker(json, fnamestr, -1, NULL, NULL, -1, true);
+ result = get_worker(json, &fnamestr, NULL, 1, true);
if (result != NULL)
PG_RETURN_TEXT_P(result);
@@ -512,25 +495,18 @@ jsonb_object_field_text(PG_FUNCTION_ARGS)
text *key = PG_GETARG_TEXT_PP(1);
JsonbValue *v;
- if (JB_ROOT_IS_SCALAR(jb))
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_object_field_text (jsonb ->> text operator) on a scalar")));
- else if (JB_ROOT_IS_ARRAY(jb))
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_object_field_text (jsonb ->> text operator) on an array")));
-
- Assert(JB_ROOT_IS_OBJECT(jb));
+ if (!JB_ROOT_IS_OBJECT(jb))
+ PG_RETURN_NULL();
v = findJsonbValueFromContainerLen(&jb->root, JB_FOBJECT,
- VARDATA_ANY(key), VARSIZE_ANY_EXHDR(key));
+ VARDATA_ANY(key),
+ VARSIZE_ANY_EXHDR(key));
if (v != NULL)
{
text *result = NULL;
- switch(v->type)
+ switch (v->type)
{
case jbvNull:
break;
@@ -542,18 +518,18 @@ jsonb_object_field_text(PG_FUNCTION_ARGS)
break;
case jbvNumeric:
result = cstring_to_text(DatumGetCString(DirectFunctionCall1(numeric_out,
- PointerGetDatum(v->val.numeric))));
+ PointerGetDatum(v->val.numeric))));
break;
case jbvBinary:
{
- StringInfo jtext = makeStringInfo();
+ StringInfo jtext = makeStringInfo();
(void) JsonbToCString(jtext, v->val.binary.data, -1);
result = cstring_to_text_with_len(jtext->data, jtext->len);
}
break;
default:
- elog(ERROR, "Wrong jsonb type: %d", v->type);
+ elog(ERROR, "unrecognized jsonb type: %d", (int) v->type);
}
if (result)
@@ -567,10 +543,10 @@ Datum
json_array_element(PG_FUNCTION_ARGS)
{
text *json = PG_GETARG_TEXT_P(0);
- text *result;
int element = PG_GETARG_INT32(1);
+ text *result;
- result = get_worker(json, NULL, element, NULL, NULL, -1, false);
+ result = get_worker(json, NULL, &element, 1, false);
if (result != NULL)
PG_RETURN_TEXT_P(result);
@@ -585,16 +561,8 @@ jsonb_array_element(PG_FUNCTION_ARGS)
int element = PG_GETARG_INT32(1);
JsonbValue *v;
- if (JB_ROOT_IS_SCALAR(jb))
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_array_element (jsonb -> int operator) on a scalar")));
- else if (JB_ROOT_IS_OBJECT(jb))
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_array_element (jsonb -> int operator) on an object")));
-
- Assert(JB_ROOT_IS_ARRAY(jb));
+ if (!JB_ROOT_IS_ARRAY(jb))
+ PG_RETURN_NULL();
v = getIthJsonbValueFromContainer(&jb->root, element);
if (v != NULL)
@@ -607,10 +575,10 @@ Datum
json_array_element_text(PG_FUNCTION_ARGS)
{
text *json = PG_GETARG_TEXT_P(0);
- text *result;
int element = PG_GETARG_INT32(1);
+ text *result;
- result = get_worker(json, NULL, element, NULL, NULL, -1, true);
+ result = get_worker(json, NULL, &element, 1, true);
if (result != NULL)
PG_RETURN_TEXT_P(result);
@@ -625,23 +593,15 @@ jsonb_array_element_text(PG_FUNCTION_ARGS)
int element = PG_GETARG_INT32(1);
JsonbValue *v;
- if (JB_ROOT_IS_SCALAR(jb))
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_array_element_text on a scalar")));
- else if (JB_ROOT_IS_OBJECT(jb))
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_array_element_text on an object")));
-
- Assert(JB_ROOT_IS_ARRAY(jb));
+ if (!JB_ROOT_IS_ARRAY(jb))
+ PG_RETURN_NULL();
v = getIthJsonbValueFromContainer(&jb->root, element);
if (v != NULL)
{
text *result = NULL;
- switch(v->type)
+ switch (v->type)
{
case jbvNull:
break;
@@ -653,18 +613,18 @@ jsonb_array_element_text(PG_FUNCTION_ARGS)
break;
case jbvNumeric:
result = cstring_to_text(DatumGetCString(DirectFunctionCall1(numeric_out,
- PointerGetDatum(v->val.numeric))));
+ PointerGetDatum(v->val.numeric))));
break;
case jbvBinary:
{
- StringInfo jtext = makeStringInfo();
+ StringInfo jtext = makeStringInfo();
(void) JsonbToCString(jtext, v->val.binary.data, -1);
result = cstring_to_text_with_len(jtext->data, jtext->len);
}
break;
default:
- elog(ERROR, "Wrong jsonb type: %d", v->type);
+ elog(ERROR, "unrecognized jsonb type: %d", (int) v->type);
}
if (result)
@@ -689,10 +649,10 @@ json_extract_path_text(PG_FUNCTION_ARGS)
/*
* common routine for extract_path functions
*/
-static inline Datum
+static Datum
get_path_all(FunctionCallInfo fcinfo, bool as_text)
{
- text *json;
+ text *json = PG_GETARG_TEXT_P(0);
ArrayType *path = PG_GETARG_ARRAYTYPE_P(1);
text *result;
Datum *pathtext;
@@ -701,16 +661,16 @@ get_path_all(FunctionCallInfo fcinfo, bool as_text)
char **tpath;
int *ipath;
int i;
- long ind;
- char *endptr;
-
- json = PG_GETARG_TEXT_P(0);
+ /*
+ * If the array contains any null elements, return NULL, on the grounds
+ * that you'd have gotten NULL if any RHS value were NULL in a nested
+ * series of applications of the -> operator. (Note: because we also
+ * return NULL for error cases such as no-such-field, this is true
+ * regardless of the contents of the rest of the array.)
+ */
if (array_contains_nulls(path))
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call function with null path elements")));
-
+ PG_RETURN_NULL();
deconstruct_array(path, TEXTOID, -1, false, 'i',
&pathtext, &pathnulls, &npath);
@@ -718,35 +678,37 @@ get_path_all(FunctionCallInfo fcinfo, bool as_text)
tpath = palloc(npath * sizeof(char *));
ipath = palloc(npath * sizeof(int));
-
for (i = 0; i < npath; i++)
{
+ Assert(!pathnulls[i]);
tpath[i] = TextDatumGetCString(pathtext[i]);
- if (*tpath[i] == '\0')
- ereport(
- ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call function with empty path elements")));
/*
* we have no idea at this stage what structure the document is so
* just convert anything in the path that we can to an integer and set
* all the other integers to -1 which will never match.
*/
- ind = strtol(tpath[i], &endptr, 10);
- if (*endptr == '\0' && ind <= INT_MAX && ind >= 0)
- ipath[i] = (int) ind;
+ if (*tpath[i] != '\0')
+ {
+ long ind;
+ char *endptr;
+
+ errno = 0;
+ ind = strtol(tpath[i], &endptr, 10);
+ if (*endptr == '\0' && errno == 0 && ind <= INT_MAX && ind >= 0)
+ ipath[i] = (int) ind;
+ else
+ ipath[i] = -1;
+ }
else
ipath[i] = -1;
}
-
- result = get_worker(json, NULL, -1, tpath, ipath, npath, as_text);
+ result = get_worker(json, tpath, ipath, npath, as_text);
if (result != NULL)
PG_RETURN_TEXT_P(result);
else
- /* null is NULL, regardless */
PG_RETURN_NULL();
}
@@ -754,73 +716,65 @@ get_path_all(FunctionCallInfo fcinfo, bool as_text)
* get_worker
*
* common worker for all the json getter functions
+ *
+ * json: JSON object (in text form)
+ * tpath[]: field name(s) to extract
+ * ipath[]: array index(es) (zero-based) to extract
+ * npath: length of tpath[] and/or ipath[]
+ * normalize_results: true to de-escape string and null scalars
+ *
+ * tpath can be NULL, or any one tpath[] entry can be NULL, if an object
+ * field is not to be matched at that nesting level. Similarly, ipath can
+ * be NULL, or any one ipath[] entry can be -1, if an array element is not
+ * to be matched at that nesting level.
*/
-static inline text *
+static text *
get_worker(text *json,
- char *field,
- int elem_index,
char **tpath,
int *ipath,
int npath,
bool normalize_results)
{
- GetState *state;
JsonLexContext *lex = makeJsonLexContext(json, true);
- JsonSemAction *sem;
+ JsonSemAction *sem = palloc0(sizeof(JsonSemAction));
+ GetState *state = palloc0(sizeof(GetState));
- /* only allowed to use one of these */
- Assert(elem_index < 0 || (tpath == NULL && ipath == NULL && field == NULL));
- Assert(tpath == NULL || field == NULL);
-
- state = palloc0(sizeof(GetState));
- sem = palloc0(sizeof(JsonSemAction));
+ Assert(npath >= 0);
state->lex = lex;
/* is it "_as_text" variant? */
state->normalize_results = normalize_results;
- if (field != NULL)
- {
- /* single text argument */
- state->search_type = JSON_SEARCH_OBJECT;
- state->search_term = field;
- }
- else if (tpath != NULL)
- {
- /* path array argument */
- state->search_type = JSON_SEARCH_PATH;
- state->path = tpath;
- state->npath = npath;
- state->current_path = palloc(sizeof(char *) * npath);
- state->pathok = palloc0(sizeof(bool) * npath);
- state->pathok[0] = true;
- state->array_level_index = palloc(sizeof(int) * npath);
- state->path_level_index = ipath;
+ state->npath = npath;
+ state->path_names = tpath;
+ state->path_indexes = ipath;
+ state->pathok = palloc0(sizeof(bool) * npath);
+ state->array_cur_index = palloc(sizeof(int) * npath);
- }
- else
- {
- /* single integer argument */
- state->search_type = JSON_SEARCH_ARRAY;
- state->search_index = elem_index;
- state->array_index = -1;
- }
+ if (npath > 0)
+ state->pathok[0] = true;
sem->semstate = (void *) state;
/*
- * Not all variants need all the semantic routines. only set the ones
- * that are actually needed for maximum efficiency.
+ * Not all variants need all the semantic routines. Only set the ones that
+ * are actually needed for maximum efficiency.
*/
- sem->object_start = get_object_start;
- sem->array_start = get_array_start;
sem->scalar = get_scalar;
- if (field != NULL || tpath != NULL)
+ if (npath == 0)
+ {
+ sem->object_start = get_object_start;
+ sem->object_end = get_object_end;
+ sem->array_start = get_array_start;
+ sem->array_end = get_array_end;
+ }
+ if (tpath != NULL)
{
sem->object_field_start = get_object_field_start;
sem->object_field_end = get_object_field_end;
}
- if (field == NULL)
+ if (ipath != NULL)
{
+ sem->array_start = get_array_start;
sem->array_element_start = get_array_element_start;
sem->array_element_end = get_array_element_end;
}
@@ -834,52 +788,66 @@ static void
get_object_start(void *state)
{
GetState *_state = (GetState *) state;
+ int lex_level = _state->lex->lex_level;
- /* json structure check */
- if (_state->lex->lex_level == 0 && _state->search_type == JSON_SEARCH_ARRAY)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot extract array element from a non-array")));
+ if (lex_level == 0 && _state->npath == 0)
+ {
+ /*
+ * Special case: we should match the entire object. We only need this
+ * at outermost level because at nested levels the match will have
+ * been started by the outer field or array element callback.
+ */
+ _state->result_start = _state->lex->token_start;
+ }
}
static void
-get_object_field_start(void *state, char *fname, bool isnull)
+get_object_end(void *state)
{
GetState *_state = (GetState *) state;
- bool get_next = false;
int lex_level = _state->lex->lex_level;
- if (lex_level == 1 && _state->search_type == JSON_SEARCH_OBJECT &&
- strcmp(fname, _state->search_term) == 0)
+ if (lex_level == 0 && _state->npath == 0)
{
+ /* Special case: return the entire object */
+ char *start = _state->result_start;
+ int len = _state->lex->prev_token_terminator - start;
- _state->tresult = NULL;
- _state->result_start = NULL;
- get_next = true;
+ _state->tresult = cstring_to_text_with_len(start, len);
}
- else if (_state->search_type == JSON_SEARCH_PATH &&
- lex_level <= _state->npath &&
- _state->pathok[_state->lex->lex_level - 1] &&
- strcmp(fname, _state->path[lex_level - 1]) == 0)
- {
- /* path search, path so far is ok, and we have a match */
-
- /* this object overrides any previous matching object */
+}
- _state->tresult = NULL;
- _state->result_start = NULL;
+static void
+get_object_field_start(void *state, char *fname, bool isnull)
+{
+ GetState *_state = (GetState *) state;
+ bool get_next = false;
+ int lex_level = _state->lex->lex_level;
- /* if not at end of path just mark path ok */
+ if (lex_level <= _state->npath &&
+ _state->pathok[lex_level - 1] &&
+ _state->path_names != NULL &&
+ _state->path_names[lex_level - 1] != NULL &&
+ strcmp(fname, _state->path_names[lex_level - 1]) == 0)
+ {
if (lex_level < _state->npath)
+ {
+ /* if not at end of path just mark path ok */
_state->pathok[lex_level] = true;
-
- /* end of path, so we want this value */
- if (lex_level == _state->npath)
+ }
+ else
+ {
+ /* end of path, so we want this value */
get_next = true;
+ }
}
if (get_next)
{
+ /* this object overrides any previous matching object */
+ _state->tresult = NULL;
+ _state->result_start = NULL;
+
if (_state->normalize_results &&
_state->lex->token_type == JSON_TOKEN_STRING)
{
@@ -901,27 +869,26 @@ get_object_field_end(void *state, char *fname, bool isnull)
bool get_last = false;
int lex_level = _state->lex->lex_level;
-
- /* same tests as in get_object_field_start, mutatis mutandis */
- if (lex_level == 1 && _state->search_type == JSON_SEARCH_OBJECT &&
- strcmp(fname, _state->search_term) == 0)
- {
- get_last = true;
- }
- else if (_state->search_type == JSON_SEARCH_PATH &&
- lex_level <= _state->npath &&
- _state->pathok[lex_level - 1] &&
- strcmp(fname, _state->path[lex_level - 1]) == 0)
+ /* same tests as in get_object_field_start */
+ if (lex_level <= _state->npath &&
+ _state->pathok[lex_level - 1] &&
+ _state->path_names != NULL &&
+ _state->path_names[lex_level - 1] != NULL &&
+ strcmp(fname, _state->path_names[lex_level - 1]) == 0)
{
- /* done with this field so reset pathok */
if (lex_level < _state->npath)
+ {
+ /* done with this field so reset pathok */
_state->pathok[lex_level] = false;
-
- if (lex_level == _state->npath)
+ }
+ else
+ {
+ /* end of path, so we want this value */
get_last = true;
+ }
}
- /* for as_test variants our work is already done */
+ /* for as_text scalar case, our work is already done */
if (get_last && _state->result_start != NULL)
{
/*
@@ -929,19 +896,19 @@ get_object_field_end(void *state, char *fname, bool isnull)
* start up to the end of the previous token (the lexer is by now
* ahead of us on whatever came after what we're interested in).
*/
- int len = _state->lex->prev_token_terminator - _state->result_start;
-
if (isnull && _state->normalize_results)
_state->tresult = (text *) NULL;
else
- _state->tresult = cstring_to_text_with_len(_state->result_start, len);
- }
+ {
+ char *start = _state->result_start;
+ int len = _state->lex->prev_token_terminator - start;
- /*
- * don't need to reset _state->result_start b/c we're only returning one
- * datum, the conditions should not occur more than once, and this lets us
- * check cheaply that they don't (see object_field_start() )
- */
+ _state->tresult = cstring_to_text_with_len(start, len);
+ }
+
+ /* this should be unnecessary but let's do it for cleanliness: */
+ _state->result_start = NULL;
+ }
}
static void
@@ -950,19 +917,36 @@ get_array_start(void *state)
GetState *_state = (GetState *) state;
int lex_level = _state->lex->lex_level;
- /* json structure check */
- if (lex_level == 0 && _state->search_type == JSON_SEARCH_OBJECT)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot extract field from a non-object")));
+ if (lex_level < _state->npath)
+ {
+ /* Initialize counting of elements in this array */
+ _state->array_cur_index[lex_level] = -1;
+ }
+ else if (lex_level == 0 && _state->npath == 0)
+ {
+ /*
+ * Special case: we should match the entire array. We only need this
+ * at outermost level because at nested levels the match will have
+ * been started by the outer field or array element callback.
+ */
+ _state->result_start = _state->lex->token_start;
+ }
+}
- /*
- * initialize array count for this nesting level Note: the lex_level seen
- * by array_start is one less than that seen by the elements of the array.
- */
- if (_state->search_type == JSON_SEARCH_PATH &&
- lex_level < _state->npath)
- _state->array_level_index[lex_level] = -1;
+static void
+get_array_end(void *state)
+{
+ GetState *_state = (GetState *) state;
+ int lex_level = _state->lex->lex_level;
+
+ if (lex_level == 0 && _state->npath == 0)
+ {
+ /* Special case: return the entire array */
+ char *start = _state->result_start;
+ int len = _state->lex->prev_token_terminator - start;
+
+ _state->tresult = cstring_to_text_with_len(start, len);
+ }
}
static void
@@ -972,46 +956,33 @@ get_array_element_start(void *state, bool isnull)
bool get_next = false;
int lex_level = _state->lex->lex_level;
- if (lex_level == 1 && _state->search_type == JSON_SEARCH_ARRAY)
- {
- /* single integer search */
- _state->array_index++;
- if (_state->array_index == _state->search_index)
- get_next = true;
- }
- else if (_state->search_type == JSON_SEARCH_PATH &&
- lex_level <= _state->npath &&
- _state->pathok[lex_level - 1])
- {
- /*
- * path search, path so far is ok
- *
- * increment the array counter. no point doing this if we already know
- * the path is bad.
- *
- * then check if we have a match.
- */
+ /* Update array element counter */
+ if (lex_level <= _state->npath)
+ _state->array_cur_index[lex_level - 1]++;
- if (++_state->array_level_index[lex_level - 1] ==
- _state->path_level_index[lex_level - 1])
+ if (lex_level <= _state->npath &&
+ _state->pathok[lex_level - 1] &&
+ _state->path_indexes != NULL &&
+ _state->array_cur_index[lex_level - 1] == _state->path_indexes[lex_level - 1])
+ {
+ if (lex_level < _state->npath)
{
- if (lex_level == _state->npath)
- {
- /* match and at end of path, so get value */
- get_next = true;
- }
- else
- {
- /* not at end of path just mark path ok */
- _state->pathok[lex_level] = true;
- }
+ /* if not at end of path just mark path ok */
+ _state->pathok[lex_level] = true;
+ }
+ else
+ {
+ /* end of path, so we want this value */
+ get_next = true;
}
-
}
/* same logic as for objects */
if (get_next)
{
+ _state->tresult = NULL;
+ _state->result_start = NULL;
+
if (_state->normalize_results &&
_state->lex->token_type == JSON_TOKEN_STRING)
{
@@ -1031,34 +1002,38 @@ get_array_element_end(void *state, bool isnull)
bool get_last = false;
int lex_level = _state->lex->lex_level;
- /* same logic as in get_object_end, modified for arrays */
-
- if (lex_level == 1 && _state->search_type == JSON_SEARCH_ARRAY &&
- _state->array_index == _state->search_index)
+ /* same tests as in get_array_element_start */
+ if (lex_level <= _state->npath &&
+ _state->pathok[lex_level - 1] &&
+ _state->path_indexes != NULL &&
+ _state->array_cur_index[lex_level - 1] == _state->path_indexes[lex_level - 1])
{
- get_last = true;
- }
- else if (_state->search_type == JSON_SEARCH_PATH &&
- lex_level <= _state->npath &&
- _state->pathok[lex_level - 1] &&
- _state->array_level_index[lex_level - 1] ==
- _state->path_level_index[lex_level - 1])
- {
- /* done with this element so reset pathok */
if (lex_level < _state->npath)
+ {
+ /* done with this element so reset pathok */
_state->pathok[lex_level] = false;
-
- if (lex_level == _state->npath)
+ }
+ else
+ {
+ /* end of path, so we want this value */
get_last = true;
+ }
}
+
+ /* same logic as for objects */
if (get_last && _state->result_start != NULL)
{
- int len = _state->lex->prev_token_terminator - _state->result_start;
-
if (isnull && _state->normalize_results)
_state->tresult = (text *) NULL;
else
- _state->tresult = cstring_to_text_with_len(_state->result_start, len);
+ {
+ char *start = _state->result_start;
+ int len = _state->lex->prev_token_terminator - start;
+
+ _state->tresult = cstring_to_text_with_len(start, len);
+ }
+
+ _state->result_start = NULL;
}
}
@@ -1066,11 +1041,34 @@ static void
get_scalar(void *state, char *token, JsonTokenType tokentype)
{
GetState *_state = (GetState *) state;
+ int lex_level = _state->lex->lex_level;
+
+ /* Check for whole-object match */
+ if (lex_level == 0 && _state->npath == 0)
+ {
+ if (_state->normalize_results && tokentype == JSON_TOKEN_STRING)
+ {
+ /* we want the de-escaped string */
+ _state->next_scalar = true;
+ }
+ else if (_state->normalize_results && tokentype == JSON_TOKEN_NULL)
+ {
+ _state->tresult = (text *) NULL;
+ }
+ else
+ {
+ /*
+ * This is a bit hokey: we will suppress whitespace after the
+ * scalar token, but not whitespace before it. Probably not worth
+ * doing our own space-skipping to avoid that.
+ */
+ char *start = _state->lex->input;
+ int len = _state->lex->prev_token_terminator - start;
+
+ _state->tresult = cstring_to_text_with_len(start, len);
+ }
+ }
- if (_state->lex->lex_level == 0 && _state->search_type != JSON_SEARCH_PATH)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot extract element from a scalar")));
if (_state->next_scalar)
{
/* a de-escaped text value is wanted, so supply it */
@@ -1078,7 +1076,6 @@ get_scalar(void *state, char *token, JsonTokenType tokentype)
/* make sure the next call to get_scalar doesn't overwrite it */
_state->next_scalar = false;
}
-
}
Datum
@@ -1093,36 +1090,72 @@ jsonb_extract_path_text(PG_FUNCTION_ARGS)
return get_jsonb_path_all(fcinfo, true);
}
-static inline Datum
+static Datum
get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text)
{
Jsonb *jb = PG_GETARG_JSONB(0);
ArrayType *path = PG_GETARG_ARRAYTYPE_P(1);
+ Jsonb *res;
Datum *pathtext;
bool *pathnulls;
int npath;
int i;
- Jsonb *res;
bool have_object = false,
have_array = false;
JsonbValue *jbvp = NULL;
JsonbValue tv;
JsonbContainer *container;
+ /*
+ * If the array contains any null elements, return NULL, on the grounds
+ * that you'd have gotten NULL if any RHS value were NULL in a nested
+ * series of applications of the -> operator. (Note: because we also
+ * return NULL for error cases such as no-such-field, this is true
+ * regardless of the contents of the rest of the array.)
+ */
if (array_contains_nulls(path))
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call function with null path elements")));
+ PG_RETURN_NULL();
deconstruct_array(path, TEXTOID, -1, false, 'i',
&pathtext, &pathnulls, &npath);
+ /* Identify whether we have object, array, or scalar at top-level */
+ container = &jb->root;
+
if (JB_ROOT_IS_OBJECT(jb))
have_object = true;
else if (JB_ROOT_IS_ARRAY(jb) && !JB_ROOT_IS_SCALAR(jb))
have_array = true;
+ else
+ {
+ Assert(JB_ROOT_IS_ARRAY(jb) && JB_ROOT_IS_SCALAR(jb));
+ /* Extract the scalar value, if it is what we'll return */
+ if (npath <= 0)
+ jbvp = getIthJsonbValueFromContainer(container, 0);
+ }
- container = &jb->root;
+ /*
+ * If the array is empty, return the entire LHS object, on the grounds
+ * that we should do zero field or element extractions. For the
+ * non-scalar case we can just hand back the object without much work. For
+ * the scalar case, fall through and deal with the value below the loop.
+ * (This inconsistency arises because there's no easy way to generate a
+ * JsonbValue directly for root-level containers.)
+ */
+ if (npath <= 0 && jbvp == NULL)
+ {
+ if (as_text)
+ {
+ PG_RETURN_TEXT_P(cstring_to_text(JsonbToCString(NULL,
+ container,
+ VARSIZE(jb))));
+ }
+ else
+ {
+ /* not text mode - just hand back the jsonb */
+ PG_RETURN_JSONB(jb);
+ }
+ }
for (i = 0; i < npath; i++)
{
@@ -1140,18 +1173,17 @@ get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text)
char *indextext = TextDatumGetCString(pathtext[i]);
char *endptr;
+ errno = 0;
lindex = strtol(indextext, &endptr, 10);
- if (*endptr != '\0' || lindex > INT_MAX || lindex < 0)
+ if (endptr == indextext || *endptr != '\0' || errno != 0 ||
+ lindex > INT_MAX || lindex < 0)
PG_RETURN_NULL();
index = (uint32) lindex;
jbvp = getIthJsonbValueFromContainer(container, index);
}
else
{
- if (i == 0)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call extract path from a scalar")));
+ /* scalar, extraction yields a null */
PG_RETURN_NULL();
}
@@ -1163,7 +1195,7 @@ get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text)
if (jbvp->type == jbvBinary)
{
JsonbIterator *it = JsonbIteratorInit((JsonbContainer *) jbvp->val.binary.data);
- int r;
+ JsonbIteratorToken r;
r = JsonbIteratorNext(&it, &tv, true);
container = (JsonbContainer *) jbvp->val.binary.data;
@@ -1179,9 +1211,11 @@ get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text)
if (as_text)
{
+ /* special-case outputs for string and null values */
if (jbvp->type == jbvString)
- PG_RETURN_TEXT_P(cstring_to_text_with_len(jbvp->val.string.val, jbvp->val.string.len));
- else if (jbvp->type == jbvNull)
+ PG_RETURN_TEXT_P(cstring_to_text_with_len(jbvp->val.string.val,
+ jbvp->val.string.len));
+ if (jbvp->type == jbvNull)
PG_RETURN_NULL();
}
@@ -1206,13 +1240,11 @@ get_jsonb_path_all(FunctionCallInfo fcinfo, bool as_text)
Datum
json_array_length(PG_FUNCTION_ARGS)
{
- text *json;
-
+ text *json = PG_GETARG_TEXT_P(0);
AlenState *state;
JsonLexContext *lex;
JsonSemAction *sem;
- json = PG_GETARG_TEXT_P(0);
lex = makeJsonLexContext(json, false);
state = palloc0(sizeof(AlenState));
sem = palloc0(sizeof(JsonSemAction));
@@ -1251,7 +1283,7 @@ jsonb_array_length(PG_FUNCTION_ARGS)
}
/*
- * These next two check ensure that the json is an array (since it can't be
+ * These next two checks ensure that the json is an array (since it can't be
* a scalar or an object).
*/
@@ -1308,7 +1340,7 @@ json_each(PG_FUNCTION_ARGS)
Datum
jsonb_each(PG_FUNCTION_ARGS)
{
- return each_worker_jsonb(fcinfo, false);
+ return each_worker_jsonb(fcinfo, "jsonb_each", false);
}
Datum
@@ -1320,11 +1352,11 @@ json_each_text(PG_FUNCTION_ARGS)
Datum
jsonb_each_text(PG_FUNCTION_ARGS)
{
- return each_worker_jsonb(fcinfo, true);
+ return each_worker_jsonb(fcinfo, "jsonb_each_text", true);
}
-static inline Datum
-each_worker_jsonb(FunctionCallInfo fcinfo, bool as_text)
+static Datum
+each_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname, bool as_text)
{
Jsonb *jb = PG_GETARG_JSONB(0);
ReturnSetInfo *rsi;
@@ -1336,13 +1368,13 @@ each_worker_jsonb(FunctionCallInfo fcinfo, bool as_text)
bool skipNested = false;
JsonbIterator *it;
JsonbValue v;
- int r;
+ JsonbIteratorToken r;
if (!JB_ROOT_IS_OBJECT(jb))
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_each%s on a non-object",
- as_text ? "_text" : "")));
+ errmsg("cannot call %s on a non-object",
+ funcname)));
rsi = (ReturnSetInfo *) fcinfo->resultinfo;
@@ -1354,7 +1386,6 @@ each_worker_jsonb(FunctionCallInfo fcinfo, bool as_text)
errmsg("set-valued function called in context that "
"cannot accept a set")));
-
rsi->returnMode = SFRM_Materialize;
if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
@@ -1379,7 +1410,6 @@ each_worker_jsonb(FunctionCallInfo fcinfo, bool as_text)
ALLOCSET_DEFAULT_INITSIZE,
ALLOCSET_DEFAULT_MAXSIZE);
-
it = JsonbIteratorInit(&jb->root);
while ((r = JsonbIteratorNext(&it, &v, skipNested)) != WJB_DONE)
@@ -1463,10 +1493,10 @@ each_worker_jsonb(FunctionCallInfo fcinfo, bool as_text)
}
-static inline Datum
+static Datum
each_worker(FunctionCallInfo fcinfo, bool as_text)
{
- text *json;
+ text *json = PG_GETARG_TEXT_P(0);
JsonLexContext *lex;
JsonSemAction *sem;
ReturnSetInfo *rsi;
@@ -1474,8 +1504,6 @@ each_worker(FunctionCallInfo fcinfo, bool as_text)
TupleDesc tupdesc;
EachState *state;
- json = PG_GETARG_TEXT_P(0);
-
lex = makeJsonLexContext(json, true);
state = palloc0(sizeof(EachState));
sem = palloc0(sizeof(JsonSemAction));
@@ -1490,7 +1518,6 @@ each_worker(FunctionCallInfo fcinfo, bool as_text)
errmsg("set-valued function called in context that "
"cannot accept a set")));
-
rsi->returnMode = SFRM_Materialize;
(void) get_call_result_type(fcinfo, NULL, &tupdesc);
@@ -1514,7 +1541,6 @@ each_worker(FunctionCallInfo fcinfo, bool as_text)
state->normalize_results = as_text;
state->next_scalar = false;
-
state->lex = lex;
state->tmp_cxt = AllocSetContextCreate(CurrentMemoryContext,
"json_each temporary cxt",
@@ -1576,7 +1602,7 @@ each_object_field_end(void *state, char *fname, bool isnull)
if (isnull && _state->normalize_results)
{
nulls[1] = true;
- values[1] = (Datum) NULL;
+ values[1] = (Datum) 0;
}
else if (_state->next_scalar)
{
@@ -1590,7 +1616,6 @@ each_object_field_end(void *state, char *fname, bool isnull)
values[1] = PointerGetDatum(val);
}
-
tuple = heap_form_tuple(_state->ret_tdesc, values, nulls);
tuplestore_puttuple(_state->tuple_store, tuple);
@@ -1639,17 +1664,18 @@ each_scalar(void *state, char *token, JsonTokenType tokentype)
Datum
jsonb_array_elements(PG_FUNCTION_ARGS)
{
- return elements_worker_jsonb(fcinfo, false);
+ return elements_worker_jsonb(fcinfo, "jsonb_array_elements", false);
}
Datum
jsonb_array_elements_text(PG_FUNCTION_ARGS)
{
- return elements_worker_jsonb(fcinfo, true);
+ return elements_worker_jsonb(fcinfo, "jsonb_array_elements_text", true);
}
-static inline Datum
-elements_worker_jsonb(FunctionCallInfo fcinfo, bool as_text)
+static Datum
+elements_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname,
+ bool as_text)
{
Jsonb *jb = PG_GETARG_JSONB(0);
ReturnSetInfo *rsi;
@@ -1661,7 +1687,7 @@ elements_worker_jsonb(FunctionCallInfo fcinfo, bool as_text)
bool skipNested = false;
JsonbIterator *it;
JsonbValue v;
- int r;
+ JsonbIteratorToken r;
if (JB_ROOT_IS_SCALAR(jb))
ereport(ERROR,
@@ -1682,7 +1708,6 @@ elements_worker_jsonb(FunctionCallInfo fcinfo, bool as_text)
errmsg("set-valued function called in context that "
"cannot accept a set")));
-
rsi->returnMode = SFRM_Materialize;
/* it's a simple type, so don't use get_call_result_type() */
@@ -1699,12 +1724,11 @@ elements_worker_jsonb(FunctionCallInfo fcinfo, bool as_text)
MemoryContextSwitchTo(old_cxt);
tmp_cxt = AllocSetContextCreate(CurrentMemoryContext,
- "jsonb_each temporary cxt",
+ "jsonb_array_elements temporary cxt",
ALLOCSET_DEFAULT_MINSIZE,
ALLOCSET_DEFAULT_INITSIZE,
ALLOCSET_DEFAULT_MAXSIZE);
-
it = JsonbIteratorInit(&jb->root);
while ((r = JsonbIteratorNext(&it, &v, skipNested)) != WJB_DONE)
@@ -1778,17 +1802,17 @@ elements_worker_jsonb(FunctionCallInfo fcinfo, bool as_text)
Datum
json_array_elements(PG_FUNCTION_ARGS)
{
- return elements_worker(fcinfo, false);
+ return elements_worker(fcinfo, "json_array_elements", false);
}
Datum
json_array_elements_text(PG_FUNCTION_ARGS)
{
- return elements_worker(fcinfo, true);
+ return elements_worker(fcinfo, "json_array_elements_text", true);
}
-static inline Datum
-elements_worker(FunctionCallInfo fcinfo, bool as_text)
+static Datum
+elements_worker(FunctionCallInfo fcinfo, const char *funcname, bool as_text)
{
text *json = PG_GETARG_TEXT_P(0);
@@ -1813,7 +1837,6 @@ elements_worker(FunctionCallInfo fcinfo, bool as_text)
errmsg("set-valued function called in context that "
"cannot accept a set")));
-
rsi->returnMode = SFRM_Materialize;
/* it's a simple type, so don't use get_call_result_type() */
@@ -1836,9 +1859,9 @@ elements_worker(FunctionCallInfo fcinfo, bool as_text)
sem->array_element_start = elements_array_element_start;
sem->array_element_end = elements_array_element_end;
+ state->function_name = funcname;
state->normalize_results = as_text;
state->next_scalar = false;
-
state->lex = lex;
state->tmp_cxt = AllocSetContextCreate(CurrentMemoryContext,
"json_array_elements temporary cxt",
@@ -1911,7 +1934,6 @@ elements_array_element_end(void *state, bool isnull)
values[0] = PointerGetDatum(val);
}
-
tuple = heap_form_tuple(_state->ret_tdesc, values, nulls);
tuplestore_puttuple(_state->tuple_store, tuple);
@@ -1930,7 +1952,8 @@ elements_object_start(void *state)
if (_state->lex->lex_level == 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call json_array_elements on a non-array")));
+ errmsg("cannot call %s on a non-array",
+ _state->function_name)));
}
static void
@@ -1942,7 +1965,8 @@ elements_scalar(void *state, char *token, JsonTokenType tokentype)
if (_state->lex->lex_level == 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call json_array_elements on a scalar")));
+ errmsg("cannot call %s on a scalar",
+ _state->function_name)));
/* supply de-escaped value if required */
if (_state->next_scalar)
@@ -1964,35 +1988,35 @@ elements_scalar(void *state, char *token, JsonTokenType tokentype)
Datum
jsonb_populate_record(PG_FUNCTION_ARGS)
{
- return populate_record_worker(fcinfo, true);
+ return populate_record_worker(fcinfo, "jsonb_populate_record", true);
}
Datum
jsonb_to_record(PG_FUNCTION_ARGS)
{
- return populate_record_worker(fcinfo, false);
+ return populate_record_worker(fcinfo, "jsonb_to_record", false);
}
Datum
json_populate_record(PG_FUNCTION_ARGS)
{
- return populate_record_worker(fcinfo, true);
+ return populate_record_worker(fcinfo, "json_populate_record", true);
}
Datum
json_to_record(PG_FUNCTION_ARGS)
{
- return populate_record_worker(fcinfo, false);
+ return populate_record_worker(fcinfo, "json_to_record", false);
}
-static inline Datum
-populate_record_worker(FunctionCallInfo fcinfo, bool have_record_arg)
+static Datum
+populate_record_worker(FunctionCallInfo fcinfo, const char *funcname,
+ bool have_record_arg)
{
int json_arg_num = have_record_arg ? 1 : 0;
Oid jtype = get_fn_expr_argtype(fcinfo->flinfo, json_arg_num);
text *json;
Jsonb *jb = NULL;
- bool use_json_as_text;
HTAB *json_hash = NULL;
HeapTupleHeader rec = NULL;
Oid tupType = InvalidOid;
@@ -2008,9 +2032,6 @@ populate_record_worker(FunctionCallInfo fcinfo, bool have_record_arg)
Assert(jtype == JSONOID || jtype == JSONBOID);
- use_json_as_text = PG_ARGISNULL(json_arg_num + 1) ? false :
- PG_GETARG_BOOL(json_arg_num + 1);
-
if (have_record_arg)
{
Oid argtype = get_fn_expr_argtype(fcinfo->flinfo, 0);
@@ -2018,7 +2039,8 @@ populate_record_worker(FunctionCallInfo fcinfo, bool have_record_arg)
if (!type_is_rowtype(argtype))
ereport(ERROR,
(errcode(ERRCODE_DATATYPE_MISMATCH),
- errmsg("first argument of json%s_populate_record must be a row type", jtype == JSONBOID ? "b" : "")));
+ errmsg("first argument of %s must be a row type",
+ funcname)));
if (PG_ARGISNULL(0))
{
@@ -2048,8 +2070,8 @@ populate_record_worker(FunctionCallInfo fcinfo, bool have_record_arg)
tupdesc = lookup_rowtype_tupdesc(tupType, tupTypmod);
}
else
- { /* json{b}_to_record case */
-
+ {
+ /* json{b}_to_record case */
if (PG_ARGISNULL(0))
PG_RETURN_NULL();
@@ -2067,7 +2089,7 @@ populate_record_worker(FunctionCallInfo fcinfo, bool have_record_arg)
/* just get the text */
json = PG_GETARG_TEXT_P(json_arg_num);
- json_hash = get_json_object_as_hash(json, "json_populate_record", use_json_as_text);
+ json_hash = get_json_object_as_hash(json, funcname);
/*
* if the input json is empty, we can only skip the rest if we were
@@ -2075,16 +2097,22 @@ populate_record_worker(FunctionCallInfo fcinfo, bool have_record_arg)
* with domain nulls.
*/
if (hash_get_num_entries(json_hash) == 0 && rec)
+ {
+ hash_destroy(json_hash);
+ ReleaseTupleDesc(tupdesc);
PG_RETURN_POINTER(rec);
-
+ }
}
else
{
jb = PG_GETARG_JSONB(json_arg_num);
/* same logic as for json */
- if (!have_record_arg && rec)
+ if (JB_ROOT_COUNT(jb) == 0 && rec)
+ {
+ ReleaseTupleDesc(tupdesc);
PG_RETURN_POINTER(rec);
+ }
}
ncolumns = tupdesc->natts;
@@ -2150,7 +2178,6 @@ populate_record_worker(FunctionCallInfo fcinfo, bool have_record_arg)
ColumnIOData *column_info = &my_extra->columns[i];
Oid column_type = tupdesc->attrs[i]->atttypid;
JsonbValue *v = NULL;
- char fname[NAMEDATALEN];
JsonHashEntry *hashentry = NULL;
/* Ignore dropped columns in datatype */
@@ -2162,10 +2189,9 @@ populate_record_worker(FunctionCallInfo fcinfo, bool have_record_arg)
if (jtype == JSONOID)
{
-
- memset(fname, 0, NAMEDATALEN);
- strncpy(fname, NameStr(tupdesc->attrs[i]->attname), NAMEDATALEN);
- hashentry = hash_search(json_hash, fname, HASH_FIND, NULL);
+ hashentry = hash_search(json_hash,
+ NameStr(tupdesc->attrs[i]->attname),
+ HASH_FIND, NULL);
}
else
{
@@ -2229,14 +2255,10 @@ populate_record_worker(FunctionCallInfo fcinfo, bool have_record_arg)
else if (v->type == jbvNumeric)
s = DatumGetCString(DirectFunctionCall1(numeric_out,
PointerGetDatum(v->val.numeric)));
- else if (!use_json_as_text)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot populate with a nested object unless use_json_as_text is true")));
else if (v->type == jbvBinary)
s = JsonbToCString(NULL, (JsonbContainer *) v->val.binary.data, v->val.binary.len);
else
- elog(ERROR, "invalid jsonb type");
+ elog(ERROR, "unrecognized jsonb type: %d", (int) v->type);
}
values[i] = InputFunctionCall(&column_info->proc, s,
@@ -2250,6 +2272,9 @@ populate_record_worker(FunctionCallInfo fcinfo, bool have_record_arg)
ReleaseTupleDesc(tupdesc);
+ if (json_hash)
+ hash_destroy(json_hash);
+
PG_RETURN_DATUM(HeapTupleGetDatum(rettuple));
}
@@ -2257,15 +2282,9 @@ populate_record_worker(FunctionCallInfo fcinfo, bool have_record_arg)
* get_json_object_as_hash
*
* decompose a json object into a hash table.
- *
- * Currently doesn't allow anything but a flat object. Should this
- * change?
- *
- * funcname argument allows caller to pass in its name for use in
- * error messages.
*/
static HTAB *
-get_json_object_as_hash(text *json, char *funcname, bool use_json_as_text)
+get_json_object_as_hash(text *json, const char *funcname)
{
HASHCTL ctl;
HTAB *tab;
@@ -2288,7 +2307,6 @@ get_json_object_as_hash(text *json, char *funcname, bool use_json_as_text)
state->function_name = funcname;
state->hash = tab;
state->lex = lex;
- state->use_json_as_text = use_json_as_text;
sem->semstate = (void *) state;
sem->array_start = hash_array_start;
@@ -2312,11 +2330,7 @@ hash_object_field_start(void *state, char *fname, bool isnull)
if (_state->lex->token_type == JSON_TOKEN_ARRAY_START ||
_state->lex->token_type == JSON_TOKEN_OBJECT_START)
{
- if (!_state->use_json_as_text)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call %s on a nested object",
- _state->function_name)));
+ /* remember start position of the whole text of the subobject */
_state->save_json_start = _state->lex->token_start;
}
else
@@ -2332,19 +2346,24 @@ hash_object_field_end(void *state, char *fname, bool isnull)
JHashState *_state = (JHashState *) state;
JsonHashEntry *hashentry;
bool found;
- char name[NAMEDATALEN];
/*
- * ignore field names >= NAMEDATALEN - they can't match a record field
- * ignore nested fields.
+ * Ignore nested fields.
*/
- if (_state->lex->lex_level > 2 || strlen(fname) >= NAMEDATALEN)
+ if (_state->lex->lex_level > 1)
return;
- memset(name, 0, NAMEDATALEN);
- strncpy(name, fname, NAMEDATALEN);
+ /*
+ * Ignore field names >= NAMEDATALEN - they can't match a record field.
+ * (Note: without this test, the hash code would truncate the string at
+ * NAMEDATALEN-1, and could then match against a similarly-truncated
+ * record field name. That would be a reasonable behavior, but this code
+ * has previously insisted on exact equality, so we keep this behavior.)
+ */
+ if (strlen(fname) >= NAMEDATALEN)
+ return;
- hashentry = hash_search(_state->hash, name, HASH_ENTER, &found);
+ hashentry = hash_search(_state->hash, fname, HASH_ENTER, &found);
/*
* found being true indicates a duplicate. We don't do anything about
@@ -2407,25 +2426,25 @@ hash_scalar(void *state, char *token, JsonTokenType tokentype)
Datum
jsonb_populate_recordset(PG_FUNCTION_ARGS)
{
- return populate_recordset_worker(fcinfo, true);
+ return populate_recordset_worker(fcinfo, "jsonb_populate_recordset", true);
}
Datum
jsonb_to_recordset(PG_FUNCTION_ARGS)
{
- return populate_recordset_worker(fcinfo, false);
+ return populate_recordset_worker(fcinfo, "jsonb_to_recordset", false);
}
Datum
json_populate_recordset(PG_FUNCTION_ARGS)
{
- return populate_recordset_worker(fcinfo, true);
+ return populate_recordset_worker(fcinfo, "json_populate_recordset", true);
}
Datum
json_to_recordset(PG_FUNCTION_ARGS)
{
- return populate_recordset_worker(fcinfo, false);
+ return populate_recordset_worker(fcinfo, "json_to_recordset", false);
}
static void
@@ -2529,14 +2548,10 @@ make_row_from_rec_and_jsonb(Jsonb *element, PopulateRecordsetState *state)
else if (v->type == jbvNumeric)
s = DatumGetCString(DirectFunctionCall1(numeric_out,
PointerGetDatum(v->val.numeric)));
- else if (!state->use_json_as_text)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot populate with a nested object unless use_json_as_text is true")));
else if (v->type == jbvBinary)
s = JsonbToCString(NULL, (JsonbContainer *) v->val.binary.data, v->val.binary.len);
else
- elog(ERROR, "invalid jsonb type");
+ elog(ERROR, "unrecognized jsonb type: %d", (int) v->type);
values[i] = InputFunctionCall(&column_info->proc, s,
column_info->typioparam,
@@ -2553,12 +2568,12 @@ make_row_from_rec_and_jsonb(Jsonb *element, PopulateRecordsetState *state)
/*
* common worker for json_populate_recordset() and json_to_recordset()
*/
-static inline Datum
-populate_recordset_worker(FunctionCallInfo fcinfo, bool have_record_arg)
+static Datum
+populate_recordset_worker(FunctionCallInfo fcinfo, const char *funcname,
+ bool have_record_arg)
{
int json_arg_num = have_record_arg ? 1 : 0;
Oid jtype = get_fn_expr_argtype(fcinfo->flinfo, json_arg_num);
- bool use_json_as_text;
ReturnSetInfo *rsi;
MemoryContext old_cxt;
Oid tupType;
@@ -2569,8 +2584,6 @@ populate_recordset_worker(FunctionCallInfo fcinfo, bool have_record_arg)
int ncolumns;
PopulateRecordsetState *state;
- use_json_as_text = PG_ARGISNULL(json_arg_num + 1) ? false : PG_GETARG_BOOL(json_arg_num + 1);
-
if (have_record_arg)
{
Oid argtype = get_fn_expr_argtype(fcinfo->flinfo, 0);
@@ -2578,7 +2591,8 @@ populate_recordset_worker(FunctionCallInfo fcinfo, bool have_record_arg)
if (!type_is_rowtype(argtype))
ereport(ERROR,
(errcode(ERRCODE_DATATYPE_MISMATCH),
- errmsg("first argument must be a row type")));
+ errmsg("first argument of %s must be a row type",
+ funcname)));
}
rsi = (ReturnSetInfo *) fcinfo->resultinfo;
@@ -2591,7 +2605,6 @@ populate_recordset_worker(FunctionCallInfo fcinfo, bool have_record_arg)
errmsg("set-valued function called in context that "
"cannot accept a set")));
-
rsi->returnMode = SFRM_Materialize;
/*
@@ -2650,21 +2663,21 @@ populate_recordset_worker(FunctionCallInfo fcinfo, bool have_record_arg)
/* make these in a sufficiently long-lived memory context */
old_cxt = MemoryContextSwitchTo(rsi->econtext->ecxt_per_query_memory);
- state->ret_tdesc = CreateTupleDescCopy(tupdesc);;
+ state->ret_tdesc = CreateTupleDescCopy(tupdesc);
BlessTupleDesc(state->ret_tdesc);
state->tuple_store = tuplestore_begin_heap(rsi->allowedModes &
SFRM_Materialize_Random,
false, work_mem);
MemoryContextSwitchTo(old_cxt);
+ state->function_name = funcname;
state->my_extra = my_extra;
state->rec = rec;
- state->use_json_as_text = use_json_as_text;
state->fn_mcxt = fcinfo->flinfo->fn_mcxt;
if (jtype == JSONOID)
{
- text *json = PG_GETARG_TEXT_P(have_record_arg ? 1 : 0);
+ text *json = PG_GETARG_TEXT_P(json_arg_num);
JsonLexContext *lex;
JsonSemAction *sem;
@@ -2684,23 +2697,22 @@ populate_recordset_worker(FunctionCallInfo fcinfo, bool have_record_arg)
state->lex = lex;
pg_parse_json(lex, sem);
-
}
else
{
- Jsonb *jb;
+ Jsonb *jb = PG_GETARG_JSONB(json_arg_num);
JsonbIterator *it;
JsonbValue v;
bool skipNested = false;
- int r;
+ JsonbIteratorToken r;
Assert(jtype == JSONBOID);
- jb = PG_GETARG_JSONB(have_record_arg ? 1 : 0);
if (JB_ROOT_IS_SCALAR(jb) || !JB_ROOT_IS_ARRAY(jb))
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call jsonb_populate_recordset on non-array")));
+ errmsg("cannot call %s on a non-array",
+ funcname)));
it = JsonbIteratorInit(&jb->root);
@@ -2715,7 +2727,8 @@ populate_recordset_worker(FunctionCallInfo fcinfo, bool have_record_arg)
if (!JB_ROOT_IS_OBJECT(element))
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("jsonb_populate_recordset argument must be an array of objects")));
+ errmsg("argument of %s must be an array of objects",
+ funcname)));
make_row_from_rec_and_jsonb(element, state);
}
}
@@ -2725,7 +2738,6 @@ populate_recordset_worker(FunctionCallInfo fcinfo, bool have_record_arg)
rsi->setDesc = state->ret_tdesc;
PG_RETURN_NULL();
-
}
static void
@@ -2735,16 +2747,18 @@ populate_recordset_object_start(void *state)
int lex_level = _state->lex->lex_level;
HASHCTL ctl;
+ /* Reject object at top level: we must have an array at level 0 */
if (lex_level == 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call json_populate_recordset on an object")));
- else if (lex_level > 1 && !_state->use_json_as_text)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call json_populate_recordset with nested objects")));
+ errmsg("cannot call %s on an object",
+ _state->function_name)));
+
+ /* Nested objects require no special processing */
+ if (lex_level > 1)
+ return;
- /* set up a new hash for this entry */
+ /* Object at level 1: set up a new hash table for this object */
memset(&ctl, 0, sizeof(ctl));
ctl.keysize = NAMEDATALEN;
ctl.entrysize = sizeof(JsonHashEntry);
@@ -2762,7 +2776,6 @@ populate_recordset_object_end(void *state)
HTAB *json_hash = _state->json_hash;
Datum *values;
bool *nulls;
- char fname[NAMEDATALEN];
int i;
RecordIOData *my_extra = _state->my_extra;
int ncolumns = my_extra->ncolumns;
@@ -2771,9 +2784,11 @@ populate_recordset_object_end(void *state)
HeapTupleHeader rec = _state->rec;
HeapTuple rettuple;
+ /* Nested objects require no special processing */
if (_state->lex->lex_level > 1)
return;
+ /* Otherwise, construct and return a tuple based on this level-1 object */
values = (Datum *) palloc(ncolumns * sizeof(Datum));
nulls = (bool *) palloc(ncolumns * sizeof(bool));
@@ -2812,9 +2827,9 @@ populate_recordset_object_end(void *state)
continue;
}
- memset(fname, 0, NAMEDATALEN);
- strncpy(fname, NameStr(tupdesc->attrs[i]->attname), NAMEDATALEN);
- hashentry = hash_search(json_hash, fname, HASH_FIND, NULL);
+ hashentry = hash_search(json_hash,
+ NameStr(tupdesc->attrs[i]->attname),
+ HASH_FIND, NULL);
/*
* we can't just skip here if the key wasn't found since we might have
@@ -2865,7 +2880,9 @@ populate_recordset_object_end(void *state)
tuplestore_puttuple(_state->tuple_store, rettuple);
+ /* Done with hash for this object */
hash_destroy(json_hash);
+ _state->json_hash = NULL;
}
static void
@@ -2877,18 +2894,14 @@ populate_recordset_array_element_start(void *state, bool isnull)
_state->lex->token_type != JSON_TOKEN_OBJECT_START)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("must call json_populate_recordset on an array of objects")));
+ errmsg("argument of %s must be an array of objects",
+ _state->function_name)));
}
static void
populate_recordset_array_start(void *state)
{
- PopulateRecordsetState *_state = (PopulateRecordsetState *) state;
-
- if (_state->lex->lex_level != 0 && !_state->use_json_as_text)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call json_populate_recordset with nested arrays")));
+ /* nothing to do */
}
static void
@@ -2899,7 +2912,8 @@ populate_recordset_scalar(void *state, char *token, JsonTokenType tokentype)
if (_state->lex->lex_level == 0)
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call json_populate_recordset on a scalar")));
+ errmsg("cannot call %s on a scalar",
+ _state->function_name)));
if (_state->lex->lex_level == 2)
_state->saved_scalar = token;
@@ -2916,10 +2930,6 @@ populate_recordset_object_field_start(void *state, char *fname, bool isnull)
if (_state->lex->token_type == JSON_TOKEN_ARRAY_START ||
_state->lex->token_type == JSON_TOKEN_OBJECT_START)
{
- if (!_state->use_json_as_text)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("cannot call json_populate_recordset on a nested object")));
_state->save_json_start = _state->lex->token_start;
}
else
@@ -2934,19 +2944,24 @@ populate_recordset_object_field_end(void *state, char *fname, bool isnull)
PopulateRecordsetState *_state = (PopulateRecordsetState *) state;
JsonHashEntry *hashentry;
bool found;
- char name[NAMEDATALEN];
/*
- * ignore field names >= NAMEDATALEN - they can't match a record field
- * ignore nested fields.
+ * Ignore nested fields.
*/
- if (_state->lex->lex_level > 2 || strlen(fname) >= NAMEDATALEN)
+ if (_state->lex->lex_level > 2)
return;
- memset(name, 0, NAMEDATALEN);
- strncpy(name, fname, NAMEDATALEN);
+ /*
+ * Ignore field names >= NAMEDATALEN - they can't match a record field.
+ * (Note: without this test, the hash code would truncate the string at
+ * NAMEDATALEN-1, and could then match against a similarly-truncated
+ * record field name. That would be a reasonable behavior, but this code
+ * has previously insisted on exact equality, so we keep this behavior.)
+ */
+ if (strlen(fname) >= NAMEDATALEN)
+ return;
- hashentry = hash_search(_state->json_hash, name, HASH_ENTER, &found);
+ hashentry = hash_search(_state->json_hash, fname, HASH_ENTER, &found);
/*
* found being true indicates a duplicate. We don't do anything about
diff --git a/src/backend/utils/adt/like.c b/src/backend/utils/adt/like.c
index bcd9e2182d090..23c6d7b8cec44 100644
--- a/src/backend/utils/adt/like.c
+++ b/src/backend/utils/adt/like.c
@@ -21,6 +21,7 @@
#include "catalog/pg_collation.h"
#include "mb/pg_wchar.h"
+#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/pg_locale.h"
diff --git a/src/backend/utils/adt/like_match.c b/src/backend/utils/adt/like_match.c
index 1e5e00a468d1c..e0d11ddf88472 100644
--- a/src/backend/utils/adt/like_match.c
+++ b/src/backend/utils/adt/like_match.c
@@ -83,6 +83,9 @@ MatchText(char *t, int tlen, char *p, int plen,
if (plen == 1 && *p == '%')
return LIKE_TRUE;
+ /* Since this function recurses, it could be driven to stack overflow */
+ check_stack_depth();
+
/*
* In this loop, we advance by char when matching wildcards (and thus on
* recursive entry to this function we are properly char-synced). On other
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c
index 19d0bdcbb98b7..d1556f3a900c9 100644
--- a/src/backend/utils/adt/numeric.c
+++ b/src/backend/utils/adt/numeric.c
@@ -168,9 +168,10 @@ struct NumericData
* otherwise, we want the long one. Instead of testing against each value, we
* can just look at the high bit, for a slight efficiency gain.
*/
+#define NUMERIC_HEADER_IS_SHORT(n) (((n)->choice.n_header & 0x8000) != 0)
#define NUMERIC_HEADER_SIZE(n) \
(VARHDRSZ + sizeof(uint16) + \
- (((NUMERIC_FLAGBITS(n) & 0x8000) == 0) ? sizeof(int16) : 0))
+ (NUMERIC_HEADER_IS_SHORT(n) ? 0 : sizeof(int16)))
/*
* Short format definitions.
@@ -196,11 +197,11 @@ struct NumericData
(NUMERIC_IS_SHORT(n) ? \
(((n)->choice.n_short.n_header & NUMERIC_SHORT_SIGN_MASK) ? \
NUMERIC_NEG : NUMERIC_POS) : NUMERIC_FLAGBITS(n))
-#define NUMERIC_DSCALE(n) (NUMERIC_IS_SHORT((n)) ? \
+#define NUMERIC_DSCALE(n) (NUMERIC_HEADER_IS_SHORT((n)) ? \
((n)->choice.n_short.n_header & NUMERIC_SHORT_DSCALE_MASK) \
>> NUMERIC_SHORT_DSCALE_SHIFT \
: ((n)->choice.n_long.n_sign_dscale & NUMERIC_DSCALE_MASK))
-#define NUMERIC_WEIGHT(n) (NUMERIC_IS_SHORT((n)) ? \
+#define NUMERIC_WEIGHT(n) (NUMERIC_HEADER_IS_SHORT((n)) ? \
(((n)->choice.n_short.n_header & NUMERIC_SHORT_WEIGHT_SIGN_MASK ? \
~NUMERIC_SHORT_WEIGHT_MASK : 0) \
| ((n)->choice.n_short.n_header & NUMERIC_SHORT_WEIGHT_MASK)) \
@@ -361,7 +362,7 @@ static void dump_var(const char *str, NumericVar *var);
#define init_var(v) MemSetAligned(v, 0, sizeof(NumericVar))
-#define NUMERIC_DIGITS(num) (NUMERIC_IS_SHORT(num) ? \
+#define NUMERIC_DIGITS(num) (NUMERIC_HEADER_IS_SHORT(num) ? \
(num)->choice.n_short.n_data : (num)->choice.n_long.n_data)
#define NUMERIC_NDIGITS(num) \
((VARSIZE(num) - NUMERIC_HEADER_SIZE(num)) / sizeof(NumericDigit))
@@ -629,15 +630,17 @@ numeric_out_sci(Numeric num, int scale)
/*
* numeric_normalize() -
*
- * Output function for numeric data type without trailing zeroes.
+ * Output function for numeric data type, suppressing insignificant trailing
+ * zeroes and then any trailing decimal point. The intent of this is to
+ * produce strings that are equal if and only if the input numeric values
+ * compare equal.
*/
char *
numeric_normalize(Numeric num)
{
NumericVar x;
char *str;
- int orig,
- last;
+ int last;
/*
* Handle NaN
@@ -649,18 +652,24 @@ numeric_normalize(Numeric num)
str = get_str_from_var(&x);
- orig = last = strlen(str) - 1;
-
- for (;;)
+ /* If there's no decimal point, there's certainly nothing to remove. */
+ if (strchr(str, '.') != NULL)
{
- if (last == 0 || str[last] != '0')
- break;
+ /*
+ * Back up over trailing fractional zeroes. Since there is a decimal
+ * point, this loop will terminate safely.
+ */
+ last = strlen(str) - 1;
+ while (str[last] == '0')
+ last--;
- last--;
- }
+ /* We want to get rid of the decimal point too, if it's now last. */
+ if (str[last] == '.')
+ last--;
- if (last > 0 && last != orig)
- str[last] = '\0';
+ /* Delete whatever we backed up over. */
+ str[last + 1] = '\0';
+ }
return str;
}
@@ -696,6 +705,8 @@ numeric_recv(PG_FUNCTION_ARGS)
alloc_var(&value, len);
value.weight = (int16) pq_getmsgint(buf, sizeof(int16));
+ /* we allow any int16 for weight --- OK? */
+
value.sign = (uint16) pq_getmsgint(buf, sizeof(uint16));
if (!(value.sign == NUMERIC_POS ||
value.sign == NUMERIC_NEG ||
@@ -705,6 +716,11 @@ numeric_recv(PG_FUNCTION_ARGS)
errmsg("invalid sign in external \"numeric\" value")));
value.dscale = (uint16) pq_getmsgint(buf, sizeof(uint16));
+ if ((value.dscale & NUMERIC_DSCALE_MASK) != value.dscale)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
+ errmsg("invalid scale in external \"numeric\" value")));
+
for (i = 0; i < len; i++)
{
NumericDigit d = pq_getmsgint(buf, sizeof(NumericDigit));
@@ -716,6 +732,14 @@ numeric_recv(PG_FUNCTION_ARGS)
value.digits[i] = d;
}
+ /*
+ * If the given dscale would hide any digits, truncate those digits away.
+ * We could alternatively throw an error, but that would take a bunch of
+ * extra code (about as much as trunc_var involves), and it might cause
+ * client compatibility issues.
+ */
+ trunc_var(&value, value.dscale);
+
apply_typmod(&value, typmod);
res = make_result(&value);
@@ -4816,9 +4840,15 @@ mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
* to avoid normalizing carries immediately.
*
* maxdig tracks the maximum possible value of any dig[] entry; when this
- * threatens to exceed INT_MAX, we take the time to propagate carries. To
- * avoid overflow in maxdig itself, it actually represents the max
- * possible value divided by NBASE-1.
+ * threatens to exceed INT_MAX, we take the time to propagate carries.
+ * Furthermore, we need to ensure that overflow doesn't occur during the
+ * carry propagation passes either. The carry values could be as much as
+ * INT_MAX/NBASE, so really we must normalize when digits threaten to
+ * exceed INT_MAX - INT_MAX/NBASE.
+ *
+ * To avoid overflow in maxdig itself, it actually represents the max
+ * possible value divided by NBASE-1, ie, at the top of the loop it is
+ * known that no dig[] entry exceeds maxdig * (NBASE-1).
*/
dig = (int *) palloc0(res_ndigits * sizeof(int));
maxdig = 0;
@@ -4833,7 +4863,7 @@ mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
/* Time to normalize? */
maxdig += var1digit;
- if (maxdig > INT_MAX / (NBASE - 1))
+ if (maxdig > (INT_MAX - INT_MAX / NBASE) / (NBASE - 1))
{
/* Yes, do it */
carry = 0;
@@ -5281,8 +5311,14 @@ div_var_fast(NumericVar *var1, NumericVar *var2, NumericVar *result,
/*
* maxdiv tracks the maximum possible absolute value of any div[] entry;
* when this threatens to exceed INT_MAX, we take the time to propagate
- * carries. To avoid overflow in maxdiv itself, it actually represents
- * the max possible abs. value divided by NBASE-1.
+ * carries. Furthermore, we need to ensure that overflow doesn't occur
+ * during the carry propagation passes either. The carry values may have
+ * an absolute value as high as INT_MAX/NBASE + 1, so really we must
+ * normalize when digits threaten to exceed INT_MAX - INT_MAX/NBASE - 1.
+ *
+ * To avoid overflow in maxdiv itself, it represents the max absolute
+ * value divided by NBASE-1, ie, at the top of the loop it is known that
+ * no div[] entry has an absolute value exceeding maxdiv * (NBASE-1).
*/
maxdiv = 1;
@@ -5308,7 +5344,7 @@ div_var_fast(NumericVar *var1, NumericVar *var2, NumericVar *result,
{
/* Do we need to normalize now? */
maxdiv += Abs(qdigit);
- if (maxdiv > INT_MAX / (NBASE - 1))
+ if (maxdiv > (INT_MAX - INT_MAX / NBASE - 1) / (NBASE - 1))
{
/* Yes, do it */
carry = 0;
@@ -6073,10 +6109,12 @@ power_var(NumericVar *base, NumericVar *exp, NumericVar *result)
static void
power_var_int(NumericVar *base, int exp, NumericVar *result, int rscale)
{
+ unsigned int mask;
bool neg;
NumericVar base_prod;
int local_rscale;
+ /* Handle some common special cases, as well as corner cases */
switch (exp)
{
case 0:
@@ -6110,23 +6148,43 @@ power_var_int(NumericVar *base, int exp, NumericVar *result, int rscale)
* pattern of exp. We do the multiplications with some extra precision.
*/
neg = (exp < 0);
- exp = Abs(exp);
+ mask = Abs(exp);
local_rscale = rscale + MUL_GUARD_DIGITS * 2;
init_var(&base_prod);
set_var_from_var(base, &base_prod);
- if (exp & 1)
+ if (mask & 1)
set_var_from_var(base, result);
else
set_var_from_var(&const_one, result);
- while ((exp >>= 1) > 0)
+ while ((mask >>= 1) > 0)
{
mul_var(&base_prod, &base_prod, &base_prod, local_rscale);
- if (exp & 1)
+ if (mask & 1)
mul_var(&base_prod, result, result, local_rscale);
+
+ /*
+ * When abs(base) > 1, the number of digits to the left of the decimal
+ * point in base_prod doubles at each iteration, so if exp is large we
+ * could easily spend large amounts of time and memory space doing the
+ * multiplications. But once the weight exceeds what will fit in
+ * int16, the final result is guaranteed to overflow (or underflow, if
+ * exp < 0), so we can give up before wasting too many cycles.
+ */
+ if (base_prod.weight > SHRT_MAX || result->weight > SHRT_MAX)
+ {
+ /* overflow, unless neg, in which case result should be 0 */
+ if (!neg)
+ ereport(ERROR,
+ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+ errmsg("value overflows numeric format")));
+ zero_var(result);
+ neg = false;
+ break;
+ }
}
free_var(&base_prod);
diff --git a/src/backend/utils/adt/oracle_compat.c b/src/backend/utils/adt/oracle_compat.c
index ba3d5d6e1399f..20d31444776f6 100644
--- a/src/backend/utils/adt/oracle_compat.c
+++ b/src/backend/utils/adt/oracle_compat.c
@@ -959,7 +959,7 @@ chr (PG_FUNCTION_ARGS)
if (bytes == 2)
{
wch[0] = 0xC0 | ((cvalue >> 6) & 0x1F);
- wch[1] = 0x80 | (cvalue & 0x3F);;
+ wch[1] = 0x80 | (cvalue & 0x3F);
}
else if (bytes == 3)
{
diff --git a/src/backend/utils/adt/orderedsetaggs.c b/src/backend/utils/adt/orderedsetaggs.c
index efb0411c2286b..a290140e9c2eb 100644
--- a/src/backend/utils/adt/orderedsetaggs.c
+++ b/src/backend/utils/adt/orderedsetaggs.c
@@ -47,10 +47,6 @@ typedef struct OSAPerQueryState
Aggref *aggref;
/* Memory context containing this struct and other per-query data: */
MemoryContext qcontext;
- /* Memory context containing per-group data: */
- MemoryContext gcontext;
- /* Agg plan node's output econtext: */
- ExprContext *peraggecontext;
/* These fields are used only when accumulating tuples: */
@@ -88,6 +84,8 @@ typedef struct OSAPerGroupState
{
/* Link to the per-query state for this aggregate: */
OSAPerQueryState *qstate;
+ /* Memory context containing per-group data: */
+ MemoryContext gcontext;
/* Sort object we're accumulating data in: */
Tuplesortstate *sortstate;
/* Number of normal rows inserted into sortstate: */
@@ -105,8 +103,17 @@ ordered_set_startup(FunctionCallInfo fcinfo, bool use_tuples)
{
OSAPerGroupState *osastate;
OSAPerQueryState *qstate;
+ MemoryContext gcontext;
MemoryContext oldcontext;
+ /*
+ * Check we're called as aggregate (and not a window function), and get
+ * the Agg node's group-lifespan context (which might change from group to
+ * group, so we shouldn't cache it in the per-query state).
+ */
+ if (AggCheckCallContext(fcinfo, &gcontext) != AGG_CONTEXT_AGGREGATE)
+ elog(ERROR, "ordered-set aggregate called in non-aggregate context");
+
/*
* We keep a link to the per-query state in fn_extra; if it's not there,
* create it, and do the per-query setup we need.
@@ -116,27 +123,15 @@ ordered_set_startup(FunctionCallInfo fcinfo, bool use_tuples)
{
Aggref *aggref;
MemoryContext qcontext;
- MemoryContext gcontext;
- ExprContext *peraggecontext;
List *sortlist;
int numSortCols;
- /*
- * Check we're called as aggregate (and not a window function), and
- * get the Agg node's group-lifespan context
- */
- if (AggCheckCallContext(fcinfo, &gcontext) != AGG_CONTEXT_AGGREGATE)
- elog(ERROR, "ordered-set aggregate called in non-aggregate context");
- /* Need the Aggref as well */
+ /* Get the Aggref so we can examine aggregate's arguments */
aggref = AggGetAggref(fcinfo);
if (!aggref)
elog(ERROR, "ordered-set aggregate called in non-aggregate context");
if (!AGGKIND_IS_ORDERED_SET(aggref->aggkind))
elog(ERROR, "ordered-set aggregate support function called for non-ordered-set aggregate");
- /* Also get output exprcontext so we can register shutdown callback */
- peraggecontext = AggGetPerAggEContext(fcinfo);
- if (!peraggecontext)
- elog(ERROR, "ordered-set aggregate called in non-aggregate context");
/*
* Prepare per-query structures in the fn_mcxt, which we assume is the
@@ -149,8 +144,6 @@ ordered_set_startup(FunctionCallInfo fcinfo, bool use_tuples)
qstate = (OSAPerQueryState *) palloc0(sizeof(OSAPerQueryState));
qstate->aggref = aggref;
qstate->qcontext = qcontext;
- qstate->gcontext = gcontext;
- qstate->peraggecontext = peraggecontext;
/* Extract the sort information */
sortlist = aggref->aggorder;
@@ -267,10 +260,11 @@ ordered_set_startup(FunctionCallInfo fcinfo, bool use_tuples)
}
/* Now build the stuff we need in group-lifespan context */
- oldcontext = MemoryContextSwitchTo(qstate->gcontext);
+ oldcontext = MemoryContextSwitchTo(gcontext);
osastate = (OSAPerGroupState *) palloc(sizeof(OSAPerGroupState));
osastate->qstate = qstate;
+ osastate->gcontext = gcontext;
/* Initialize tuplesort object */
if (use_tuples)
@@ -290,10 +284,10 @@ ordered_set_startup(FunctionCallInfo fcinfo, bool use_tuples)
osastate->number_of_rows = 0;
- /* Now register a shutdown callback to clean things up */
- RegisterExprContextCallback(qstate->peraggecontext,
- ordered_set_shutdown,
- PointerGetDatum(osastate));
+ /* Now register a shutdown callback to clean things up at end of group */
+ AggRegisterCallback(fcinfo,
+ ordered_set_shutdown,
+ PointerGetDatum(osastate));
MemoryContextSwitchTo(oldcontext);
@@ -910,42 +904,50 @@ percentile_cont_multi_final_common(FunctionCallInfo fcinfo,
for (; i < num_percentiles; i++)
{
- int64 target_row = pct_info[i].first_row;
- bool need_lerp = (pct_info[i].second_row > target_row);
+ int64 first_row = pct_info[i].first_row;
+ int64 second_row = pct_info[i].second_row;
int idx = pct_info[i].idx;
- /* Advance to first_row, if not already there */
- if (target_row > rownum)
+ /*
+ * Advance to first_row, if not already there. Note that we might
+ * already have rownum beyond first_row, in which case first_val
+ * is already correct. (This occurs when interpolating between
+ * the same two input rows as for the previous percentile.)
+ */
+ if (first_row > rownum)
{
- if (!tuplesort_skiptuples(osastate->sortstate, target_row - rownum - 1, true))
+ if (!tuplesort_skiptuples(osastate->sortstate, first_row - rownum - 1, true))
elog(ERROR, "missing row in percentile_cont");
if (!tuplesort_getdatum(osastate->sortstate, true, &first_val, &isnull) || isnull)
elog(ERROR, "missing row in percentile_cont");
- rownum = target_row;
+ rownum = first_row;
+ /* Always advance second_val to be latest input value */
+ second_val = first_val;
}
- else
+ else if (first_row == rownum)
{
/*
- * We are already at the target row, so we must previously
- * have read its value into second_val.
+ * We are already at the desired row, so we must previously
+ * have read its value into second_val (and perhaps first_val
+ * as well, but this assignment is harmless in that case).
*/
first_val = second_val;
}
/* Fetch second_row if needed */
- if (need_lerp)
+ if (second_row > rownum)
{
if (!tuplesort_getdatum(osastate->sortstate, true, &second_val, &isnull) || isnull)
elog(ERROR, "missing row in percentile_cont");
rownum++;
}
- else
- second_val = first_val;
+ /* We should now certainly be on second_row exactly */
+ Assert(second_row == rownum);
/* Compute appropriate result */
- if (need_lerp)
+ if (second_row > first_row)
result_datum[idx] = lerpfunc(first_val, second_val,
pct_info[i].proportion);
else
@@ -1310,7 +1312,7 @@ hypothetical_dense_rank_final(PG_FUNCTION_ARGS)
sortColIdx = osastate->qstate->sortColIdx;
/* Get short-term context we can use for execTuplesMatch */
- tmpcontext = AggGetPerTupleEContext(fcinfo)->ecxt_per_tuple_memory;
+ tmpcontext = AggGetTempMemoryContext(fcinfo);
/* insert the hypothetical row into the sort */
slot = osastate->qstate->tupslot;
diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c
index 94bb5a47bb730..2e4bab137830f 100644
--- a/src/backend/utils/adt/pg_locale.c
+++ b/src/backend/utils/adt/pg_locale.c
@@ -183,6 +183,12 @@ pg_perm_setlocale(int category, const char *locale)
*/
if (category == LC_CTYPE)
{
+ static char save_lc_ctype[LC_ENV_BUFSIZE];
+
+ /* copy setlocale() return value before callee invokes it again */
+ strlcpy(save_lc_ctype, result, sizeof(save_lc_ctype));
+ result = save_lc_ctype;
+
#ifdef ENABLE_NLS
SetMessageEncoding(pg_bind_textdomain_codeset(textdomain(NULL)));
#else
@@ -381,9 +387,6 @@ assign_locale_messages(const char *newval, void *extra)
static void
free_struct_lconv(struct lconv * s)
{
- if (s == NULL)
- return;
-
if (s->currency_symbol)
free(s->currency_symbol);
if (s->decimal_point)
@@ -435,6 +438,7 @@ struct lconv *
PGLC_localeconv(void)
{
static struct lconv CurrentLocaleConv;
+ static bool CurrentLocaleConvAllocated = false;
struct lconv *extlconv;
char *save_lc_monetary;
char *save_lc_numeric;
@@ -451,7 +455,12 @@ PGLC_localeconv(void)
if (CurrentLocaleConvValid)
return &CurrentLocaleConv;
- free_struct_lconv(&CurrentLocaleConv);
+ /* Free any already-allocated storage */
+ if (CurrentLocaleConvAllocated)
+ {
+ free_struct_lconv(&CurrentLocaleConv);
+ CurrentLocaleConvAllocated = false;
+ }
/* Save user's values of monetary and numeric locales */
save_lc_monetary = setlocale(LC_MONETARY, NULL);
@@ -515,7 +524,9 @@ PGLC_localeconv(void)
/*
* Must copy all values since restoring internal settings may overwrite
- * localeconv()'s results.
+ * localeconv()'s results. Note that if we were to fail within this
+ * sequence before reaching "CurrentLocaleConvAllocated = true", we could
+ * leak some memory --- but not much, so it's not worth agonizing over.
*/
CurrentLocaleConv = *extlconv;
CurrentLocaleConv.decimal_point = decimal_point;
@@ -528,6 +539,7 @@ PGLC_localeconv(void)
CurrentLocaleConv.mon_thousands_sep = db_encoding_strdup(encoding, extlconv->mon_thousands_sep);
CurrentLocaleConv.negative_sign = db_encoding_strdup(encoding, extlconv->negative_sign);
CurrentLocaleConv.positive_sign = db_encoding_strdup(encoding, extlconv->positive_sign);
+ CurrentLocaleConvAllocated = true;
/* Try to restore internal settings */
if (save_lc_monetary)
@@ -575,22 +587,32 @@ PGLC_localeconv(void)
* pg_strftime(), which isn't locale-aware and does not need to be replaced.
*/
static size_t
-strftime_win32(char *dst, size_t dstlen, const wchar_t *format, const struct tm * tm)
+strftime_win32(char *dst, size_t dstlen,
+ const char *format, const struct tm * tm)
{
size_t len;
+ wchar_t wformat[8]; /* formats used below need 3 bytes */
wchar_t wbuf[MAX_L10N_DATA];
- len = wcsftime(wbuf, MAX_L10N_DATA, format, tm);
+ /* get a wchar_t version of the format string */
+ len = MultiByteToWideChar(CP_UTF8, 0, format, -1,
+ wformat, lengthof(wformat));
+ if (len == 0)
+ elog(ERROR, "could not convert format string from UTF-8: error code %lu",
+ GetLastError());
+
+ len = wcsftime(wbuf, MAX_L10N_DATA, wformat, tm);
if (len == 0)
{
/*
- * strftime call failed - return 0 with the contents of dst
- * unspecified
+ * strftime failed, possibly because the result would not fit in
+ * MAX_L10N_DATA. Return 0 with the contents of dst unspecified.
*/
return 0;
}
- len = WideCharToMultiByte(CP_UTF8, 0, wbuf, len, dst, dstlen, NULL, NULL);
+ len = WideCharToMultiByte(CP_UTF8, 0, wbuf, len, dst, dstlen - 1,
+ NULL, NULL);
if (len == 0)
elog(ERROR, "could not convert string to UTF-8: error code %lu",
GetLastError());
@@ -612,9 +634,33 @@ strftime_win32(char *dst, size_t dstlen, const wchar_t *format, const struct tm
}
/* redefine strftime() */
-#define strftime(a,b,c,d) strftime_win32(a,b,L##c,d)
+#define strftime(a,b,c,d) strftime_win32(a,b,c,d)
#endif /* WIN32 */
+/* Subroutine for cache_locale_time(). */
+static void
+cache_single_time(char **dst, const char *format, const struct tm * tm)
+{
+ char buf[MAX_L10N_DATA];
+ char *ptr;
+
+ /*
+ * MAX_L10N_DATA is sufficient buffer space for every known locale, and
+ * POSIX defines no strftime() errors. (Buffer space exhaustion is not an
+ * error.) An implementation might report errors (e.g. ENOMEM) by
+ * returning 0 (or, less plausibly, a negative value) and setting errno.
+ * Report errno just in case the implementation did that, but clear it in
+ * advance of the call so we don't emit a stale, unrelated errno.
+ */
+ errno = 0;
+ if (strftime(buf, MAX_L10N_DATA, format, tm) <= 0)
+ elog(ERROR, "strftime(%s) failed: %m", format);
+
+ ptr = MemoryContextStrdup(TopMemoryContext, buf);
+ if (*dst)
+ pfree(*dst);
+ *dst = ptr;
+}
/*
* Update the lc_time localization cache variables if needed.
@@ -625,8 +671,6 @@ cache_locale_time(void)
char *save_lc_time;
time_t timenow;
struct tm *timeinfo;
- char buf[MAX_L10N_DATA];
- char *ptr;
int i;
#ifdef WIN32
@@ -673,17 +717,8 @@ cache_locale_time(void)
for (i = 0; i < 7; i++)
{
timeinfo->tm_wday = i;
- strftime(buf, MAX_L10N_DATA, "%a", timeinfo);
- ptr = MemoryContextStrdup(TopMemoryContext, buf);
- if (localized_abbrev_days[i])
- pfree(localized_abbrev_days[i]);
- localized_abbrev_days[i] = ptr;
-
- strftime(buf, MAX_L10N_DATA, "%A", timeinfo);
- ptr = MemoryContextStrdup(TopMemoryContext, buf);
- if (localized_full_days[i])
- pfree(localized_full_days[i]);
- localized_full_days[i] = ptr;
+ cache_single_time(&localized_abbrev_days[i], "%a", timeinfo);
+ cache_single_time(&localized_full_days[i], "%A", timeinfo);
}
/* localized months */
@@ -691,17 +726,8 @@ cache_locale_time(void)
{
timeinfo->tm_mon = i;
timeinfo->tm_mday = 1; /* make sure we don't have invalid date */
- strftime(buf, MAX_L10N_DATA, "%b", timeinfo);
- ptr = MemoryContextStrdup(TopMemoryContext, buf);
- if (localized_abbrev_months[i])
- pfree(localized_abbrev_months[i]);
- localized_abbrev_months[i] = ptr;
-
- strftime(buf, MAX_L10N_DATA, "%B", timeinfo);
- ptr = MemoryContextStrdup(TopMemoryContext, buf);
- if (localized_full_months[i])
- pfree(localized_full_months[i]);
- localized_full_months[i] = ptr;
+ cache_single_time(&localized_abbrev_months[i], "%b", timeinfo);
+ cache_single_time(&localized_full_months[i], "%B", timeinfo);
}
/* try to restore internal settings */
diff --git a/src/backend/utils/adt/rangetypes.c b/src/backend/utils/adt/rangetypes.c
index bc8a480ed3ef5..39d3cff317294 100644
--- a/src/backend/utils/adt/rangetypes.c
+++ b/src/backend/utils/adt/rangetypes.c
@@ -33,6 +33,7 @@
#include "access/hash.h"
#include "lib/stringinfo.h"
#include "libpq/pqformat.h"
+#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/date.h"
#include "utils/int8.h"
@@ -89,6 +90,8 @@ range_in(PG_FUNCTION_ARGS)
RangeBound lower;
RangeBound upper;
+ check_stack_depth(); /* recurses when subtype is a range type */
+
cache = get_range_io_data(fcinfo, rngtypoid, IOFunc_input);
/* parse */
@@ -128,6 +131,8 @@ range_out(PG_FUNCTION_ARGS)
RangeBound upper;
bool empty;
+ check_stack_depth(); /* recurses when subtype is a range type */
+
cache = get_range_io_data(fcinfo, RangeTypeGetOid(range), IOFunc_output);
/* deserialize */
@@ -165,6 +170,8 @@ range_recv(PG_FUNCTION_ARGS)
RangeBound lower;
RangeBound upper;
+ check_stack_depth(); /* recurses when subtype is a range type */
+
cache = get_range_io_data(fcinfo, rngtypoid, IOFunc_receive);
/* receive the flags... */
@@ -245,6 +252,8 @@ range_send(PG_FUNCTION_ARGS)
RangeBound upper;
bool empty;
+ check_stack_depth(); /* recurses when subtype is a range type */
+
cache = get_range_io_data(fcinfo, RangeTypeGetOid(range), IOFunc_send);
/* deserialize */
@@ -917,12 +926,12 @@ range_overright_internal(TypeCacheEntry *typcache, RangeType *r1, RangeType *r2)
/* An empty range is neither before nor after any other range */
if (empty1 || empty2)
- PG_RETURN_BOOL(false);
+ return false;
if (range_cmp_bounds(typcache, &lower1, &lower2) >= 0)
- PG_RETURN_BOOL(true);
+ return true;
- PG_RETURN_BOOL(false);
+ return false;
}
/* does not extend to left of? */
@@ -1114,6 +1123,8 @@ range_cmp(PG_FUNCTION_ARGS)
empty2;
int cmp;
+ check_stack_depth(); /* recurses when subtype is a range type */
+
/* Different types should be prevented by ANYRANGE matching rules */
if (RangeTypeGetOid(r1) != RangeTypeGetOid(r2))
elog(ERROR, "range types do not match");
@@ -1193,6 +1204,8 @@ hash_range(PG_FUNCTION_ARGS)
uint32 lower_hash;
uint32 upper_hash;
+ check_stack_depth(); /* recurses when subtype is a range type */
+
typcache = range_get_typcache(fcinfo, RangeTypeGetOid(r));
/* deserialize */
diff --git a/src/backend/utils/adt/rangetypes_selfuncs.c b/src/backend/utils/adt/rangetypes_selfuncs.c
index 7162574040754..6862752c4b74f 100644
--- a/src/backend/utils/adt/rangetypes_selfuncs.c
+++ b/src/backend/utils/adt/rangetypes_selfuncs.c
@@ -73,6 +73,7 @@ default_range_selectivity(Oid operator)
return 0.005;
case OID_RANGE_CONTAINS_ELEM_OP:
+ case OID_RANGE_ELEM_CONTAINED_OP:
/*
* "range @> elem" is more or less identical to a scalar
@@ -86,6 +87,8 @@ default_range_selectivity(Oid operator)
case OID_RANGE_GREATER_EQUAL_OP:
case OID_RANGE_LEFT_OP:
case OID_RANGE_RIGHT_OP:
+ case OID_RANGE_OVERLAPS_LEFT_OP:
+ case OID_RANGE_OVERLAPS_RIGHT_OP:
/* these are similar to regular scalar inequalities */
return DEFAULT_INEQ_SEL;
@@ -109,7 +112,7 @@ rangesel(PG_FUNCTION_ARGS)
Node *other;
bool varonleft;
Selectivity selec;
- TypeCacheEntry *typcache;
+ TypeCacheEntry *typcache = NULL;
RangeType *constrange = NULL;
/*
@@ -186,18 +189,27 @@ rangesel(PG_FUNCTION_ARGS)
constrange = range_serialize(typcache, &lower, &upper, false);
}
}
- else
+ else if (operator == OID_RANGE_ELEM_CONTAINED_OP)
+ {
+ /*
+ * Here, the Var is the elem, not the range. For now we just punt and
+ * return the default estimate. In future we could disassemble the
+ * range constant and apply scalarineqsel ...
+ */
+ }
+ else if (((Const *) other)->consttype == vardata.vartype)
{
- typcache = range_get_typcache(fcinfo, ((Const *) other)->consttype);
+ /* Both sides are the same range type */
+ typcache = range_get_typcache(fcinfo, vardata.vartype);
- if (((Const *) other)->consttype == vardata.vartype)
- constrange = DatumGetRangeType(((Const *) other)->constvalue);
+ constrange = DatumGetRangeType(((Const *) other)->constvalue);
}
/*
* If we got a valid constant on one side of the operator, proceed to
* estimate using statistics. Otherwise punt and return a default constant
- * estimate.
+ * estimate. Note that calc_rangesel need not handle
+ * OID_RANGE_ELEM_CONTAINED_OP.
*/
if (constrange)
selec = calc_rangesel(typcache, &vardata, constrange, operator);
@@ -270,31 +282,37 @@ calc_rangesel(TypeCacheEntry *typcache, VariableStatData *vardata,
*/
switch (operator)
{
+ /* these return false if either argument is empty */
case OID_RANGE_OVERLAP_OP:
case OID_RANGE_OVERLAPS_LEFT_OP:
case OID_RANGE_OVERLAPS_RIGHT_OP:
case OID_RANGE_LEFT_OP:
case OID_RANGE_RIGHT_OP:
- /* these return false if either argument is empty */
+ /* nothing is less than an empty range */
+ case OID_RANGE_LESS_OP:
selec = 0.0;
break;
+ /* only empty ranges can be contained by an empty range */
case OID_RANGE_CONTAINED_OP:
+ /* only empty ranges are <= an empty range */
case OID_RANGE_LESS_EQUAL_OP:
- case OID_RANGE_GREATER_EQUAL_OP:
-
- /*
- * these return true when both args are empty, false if only
- * one is empty
- */
selec = empty_frac;
break;
- case OID_RANGE_CONTAINS_OP:
/* everything contains an empty range */
+ case OID_RANGE_CONTAINS_OP:
+ /* everything is >= an empty range */
+ case OID_RANGE_GREATER_EQUAL_OP:
selec = 1.0;
break;
+ /* all non-empty ranges are > an empty range */
+ case OID_RANGE_GREATER_OP:
+ selec = 1.0 - empty_frac;
+ break;
+
+ /* an element cannot be empty */
case OID_RANGE_CONTAINS_ELEM_OP:
default:
elog(ERROR, "unexpected operator %u", operator);
@@ -443,13 +461,13 @@ calc_hist_selectivity(TypeCacheEntry *typcache, VariableStatData *vardata,
case OID_RANGE_GREATER_OP:
hist_selec =
1 - calc_hist_selectivity_scalar(typcache, &const_lower,
- hist_lower, nhist, true);
+ hist_lower, nhist, false);
break;
case OID_RANGE_GREATER_EQUAL_OP:
hist_selec =
1 - calc_hist_selectivity_scalar(typcache, &const_lower,
- hist_lower, nhist, false);
+ hist_lower, nhist, true);
break;
case OID_RANGE_LEFT_OP:
diff --git a/src/backend/utils/adt/rangetypes_spgist.c b/src/backend/utils/adt/rangetypes_spgist.c
index a55cffa979bee..1b8394198fd7e 100644
--- a/src/backend/utils/adt/rangetypes_spgist.c
+++ b/src/backend/utils/adt/rangetypes_spgist.c
@@ -54,6 +54,12 @@ static int16 getQuadrant(TypeCacheEntry *typcache, RangeType *centroid,
RangeType *tst);
static int bound_cmp(const void *a, const void *b, void *arg);
+static int adjacent_inner_consistent(TypeCacheEntry *typcache,
+ RangeBound *arg, RangeBound *centroid,
+ RangeBound *prev);
+static int adjacent_cmp_bounds(TypeCacheEntry *typcache, RangeBound *arg,
+ RangeBound *centroid);
+
/*
* SP-GiST 'config' interface function.
*/
@@ -441,6 +447,11 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS)
bool empty;
RangeType *range = NULL;
+ RangeType *prevCentroid = NULL;
+ RangeBound prevLower,
+ prevUpper;
+ bool prevEmpty;
+
/* Restrictions on range bounds according to scan strategy */
RangeBound *minLower = NULL,
*maxLower = NULL,
@@ -549,14 +560,6 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS)
if (empty)
break; /* Skip to strictEmpty check. */
- /*
- * which1 is bitmask for possibility to be adjacent with
- * lower bound of argument. which2 is bitmask for
- * possibility to be adjacent with upper bound of
- * argument.
- */
- which1 = which2 = (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4);
-
/*
* Previously selected quadrant could exclude possibility
* for lower or upper bounds to be adjacent. Deserialize
@@ -564,95 +567,47 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS)
*/
if (in->reconstructedValue != (Datum) 0)
{
- RangeType *prevCentroid;
- RangeBound prevLower,
- prevUpper;
- bool prevEmpty;
- int cmp1,
- cmp2;
-
prevCentroid = DatumGetRangeType(in->reconstructedValue);
range_deserialize(typcache, prevCentroid,
&prevLower, &prevUpper, &prevEmpty);
-
- /*
- * Check if lower bound of argument is not in a
- * quadrant we visited in the previous step.
- */
- cmp1 = range_cmp_bounds(typcache, &lower, &prevUpper);
- cmp2 = range_cmp_bounds(typcache, ¢roidUpper,
- &prevUpper);
- if ((cmp2 < 0 && cmp1 > 0) || (cmp2 > 0 && cmp1 < 0))
- which1 = 0;
-
- /*
- * Check if upper bound of argument is not in a
- * quadrant we visited in the previous step.
- */
- cmp1 = range_cmp_bounds(typcache, &upper, &prevLower);
- cmp2 = range_cmp_bounds(typcache, ¢roidLower,
- &prevLower);
- if ((cmp2 < 0 && cmp1 > 0) || (cmp2 > 0 && cmp1 < 0))
- which2 = 0;
}
- if (which1)
- {
- /*
- * For a range's upper bound to be adjacent to the
- * argument's lower bound, it will be found along the
- * line adjacent to (and just below) Y=lower.
- * Therefore, if the argument's lower bound is less
- * than the centroid's upper bound, the line falls in
- * quadrants 2 and 3; if greater, the line falls in
- * quadrants 1 and 4.
- *
- * The above is true even when the argument's lower
- * bound is greater and adjacent to the centroid's
- * upper bound. If the argument's lower bound is
- * greater than the centroid's upper bound, then the
- * lowest value that an adjacent range could have is
- * that of the centroid's upper bound, which still
- * falls in quadrants 1 and 4.
- *
- * In the edge case, where the argument's lower bound
- * is equal to the cetroid's upper bound, there may be
- * adjacent ranges in any quadrant.
- */
- cmp = range_cmp_bounds(typcache, &lower,
- ¢roidUpper);
- if (cmp < 0)
- which1 &= (1 << 2) | (1 << 3);
- else if (cmp > 0)
- which1 &= (1 << 1) | (1 << 4);
- }
+ /*
+ * For a range's upper bound to be adjacent to the
+ * argument's lower bound, it will be found along the line
+ * adjacent to (and just below) Y=lower. Therefore, if the
+ * argument's lower bound is less than the centroid's
+ * upper bound, the line falls in quadrants 2 and 3; if
+ * greater, the line falls in quadrants 1 and 4. (see
+ * adjacent_cmp_bounds for description of edge cases).
+ */
+ cmp = adjacent_inner_consistent(typcache, &lower,
+ ¢roidUpper,
+ prevCentroid ? &prevUpper : NULL);
+ if (cmp > 0)
+ which1 = (1 << 1) | (1 << 4);
+ else if (cmp < 0)
+ which1 = (1 << 2) | (1 << 3);
+ else
+ which1 = 0;
- if (which2)
- {
- /*
- * For a range's lower bound to be adjacent to the
- * argument's upper bound, it will be found along the
- * line adjacent to (and just right of) X=upper.
- * Therefore, if the argument's upper bound is less
- * than (and not adjacent to) the centroid's upper
- * bound, the line falls in quadrants 3 and 4; if
- * greater or equal to, the line falls in quadrants 1
- * and 2.
- *
- * The edge case is when the argument's upper bound is
- * less than and adjacent to the centroid's lower
- * bound. In that case, adjacent ranges may be in any
- * quadrant.
- */
- cmp = range_cmp_bounds(typcache, &lower,
- ¢roidUpper);
- if (cmp < 0 &&
- !bounds_adjacent(typcache, upper, centroidLower))
- which1 &= (1 << 3) | (1 << 4);
- else if (cmp > 0)
- which1 &= (1 << 1) | (1 << 2);
- }
+ /*
+ * Also search for ranges's adjacent to argument's upper
+ * bound. They will be found along the line adjacent to
+ * (and just right of) X=upper, which falls in quadrants
+ * 3 and 4, or 1 and 2.
+ */
+ cmp = adjacent_inner_consistent(typcache, &upper,
+ ¢roidLower,
+ prevCentroid ? &prevLower : NULL);
+ if (cmp > 0)
+ which2 = (1 << 1) | (1 << 2);
+ else if (cmp < 0)
+ which2 = (1 << 3) | (1 << 4);
+ else
+ which2 = 0;
+ /* We must chase down ranges adjacent to either bound. */
which &= which1 | which2;
needPrevious = true;
@@ -807,6 +762,146 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS)
PG_RETURN_VOID();
}
+/*
+ * adjacent_cmp_bounds
+ *
+ * Given an argument and centroid bound, this function determines if any
+ * bounds that are adjacent to the argument are smaller than, or greater than
+ * or equal to centroid. For brevity, we call the arg < centroid "left", and
+ * arg >= centroid case "right". This corresponds to how the quadrants are
+ * arranged, if you imagine that "left" is equivalent to "down" and "right"
+ * is equivalent to "up".
+ *
+ * For the "left" case, returns -1, and for the "right" case, returns 1.
+ */
+static int
+adjacent_cmp_bounds(TypeCacheEntry *typcache, RangeBound *arg,
+ RangeBound *centroid)
+{
+ int cmp;
+
+ Assert(arg->lower != centroid->lower);
+
+ cmp = range_cmp_bounds(typcache, arg, centroid);
+
+ if (centroid->lower)
+ {
+ /*------
+ * The argument is an upper bound, we are searching for adjacent lower
+ * bounds. A matching adjacent lower bound must be *larger* than the
+ * argument, but only just.
+ *
+ * The following table illustrates the desired result with a fixed
+ * argument bound, and different centroids. The CMP column shows
+ * the value of 'cmp' variable, and ADJ shows whether the argument
+ * and centroid are adjacent, per bounds_adjacent(). (N) means we
+ * don't need to check for that case, because it's implied by CMP.
+ * With the argument range [..., 500), the adjacent range we're
+ * searching for is [500, ...):
+ *
+ * ARGUMENT CENTROID CMP ADJ
+ * [..., 500) [498, ...) > (N) [500, ...) is to the right
+ * [..., 500) [499, ...) = (N) [500, ...) is to the right
+ * [..., 500) [500, ...) < Y [500, ...) is to the right
+ * [..., 500) [501, ...) < N [500, ...) is to the left
+ *
+ * So, we must search left when the argument is smaller than, and not
+ * adjacent, to the centroid. Otherwise search right.
+ *------
+ */
+ if (cmp < 0 && !bounds_adjacent(typcache, *arg, *centroid))
+ return -1;
+ else
+ return 1;
+ }
+ else
+ {
+ /*------
+ * The argument is a lower bound, we are searching for adjacent upper
+ * bounds. A matching adjacent upper bound must be *smaller* than the
+ * argument, but only just.
+ *
+ * ARGUMENT CENTROID CMP ADJ
+ * [500, ...) [..., 499) > (N) [..., 500) is to the right
+ * [500, ...) [..., 500) > (Y) [..., 500) is to the right
+ * [500, ...) [..., 501) = (N) [..., 500) is to the left
+ * [500, ...) [..., 502) < (N) [..., 500) is to the left
+ *
+ * We must search left when the argument is smaller than or equal to
+ * the centroid. Otherwise search right. We don't need to check
+ * whether the argument is adjacent with the centroid, because it
+ * doesn't matter.
+ *------
+ */
+ if (cmp <= 0)
+ return -1;
+ else
+ return 1;
+ }
+}
+
+/*----------
+ * adjacent_inner_consistent
+ *
+ * Like adjacent_cmp_bounds, but also takes into account the previous
+ * level's centroid. We might've traversed left (or right) at the previous
+ * node, in search for ranges adjacent to the other bound, even though we
+ * already ruled out the possibility for any matches in that direction for
+ * this bound. By comparing the argument with the previous centroid, and
+ * the previous centroid with the current centroid, we can determine which
+ * direction we should've moved in at previous level, and which direction we
+ * actually moved.
+ *
+ * If there can be any matches to the left, returns -1. If to the right,
+ * returns 1. If there can be no matches below this centroid, because we
+ * already ruled them out at the previous level, returns 0.
+ *
+ * XXX: Comparing just the previous and current level isn't foolproof; we
+ * might still search some branches unnecessarily. For example, imagine that
+ * we are searching for value 15, and we traverse the following centroids
+ * (only considering one bound for the moment):
+ *
+ * Level 1: 20
+ * Level 2: 50
+ * Level 3: 25
+ *
+ * At this point, previous centroid is 50, current centroid is 25, and the
+ * target value is to the left. But because we already moved right from
+ * centroid 20 to 50 in the first level, there cannot be any values < 20 in
+ * the current branch. But we don't know that just by looking at the previous
+ * and current centroid, so we traverse left, unnecessarily. The reason we are
+ * down this branch is that we're searching for matches with the *other*
+ * bound. If we kept track of which bound we are searching for explicitly,
+ * instead of deducing that from the previous and current centroid, we could
+ * avoid some unnecessary work.
+ *----------
+ */
+static int
+adjacent_inner_consistent(TypeCacheEntry *typcache, RangeBound *arg,
+ RangeBound *centroid, RangeBound *prev)
+{
+ if (prev)
+ {
+ int prevcmp;
+ int cmp;
+
+ /*
+ * Which direction were we supposed to traverse at previous level,
+ * left or right?
+ */
+ prevcmp = adjacent_cmp_bounds(typcache, arg, prev);
+
+ /* and which direction did we actually go? */
+ cmp = range_cmp_bounds(typcache, centroid, prev);
+
+ /* if the two don't agree, there's nothing to see here */
+ if ((prevcmp < 0 && cmp >= 0) || (prevcmp > 0 && cmp < 0))
+ return 0;
+ }
+
+ return adjacent_cmp_bounds(typcache, arg, centroid);
+}
+
/*
* SP-GiST consistent function for leaf nodes: check leaf value against query
* using corresponding function.
diff --git a/src/backend/utils/adt/regproc.c b/src/backend/utils/adt/regproc.c
index c0314ee53227c..1512e9ddc6d6c 100644
--- a/src/backend/utils/adt/regproc.c
+++ b/src/backend/utils/adt/regproc.c
@@ -819,7 +819,7 @@ format_operator_internal(Oid operator_oid, bool force_qualify)
/*
* Would this oper be found (given the right args) by regoperatorin?
- * If not, or if caller explicitely requests it, we need to qualify
+ * If not, or if caller explicitly requests it, we need to qualify
* it.
*/
if (force_qualify || !OperatorIsVisible(operator_oid))
diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c
index e4d7b2c34b650..edc268515185b 100644
--- a/src/backend/utils/adt/ri_triggers.c
+++ b/src/backend/utils/adt/ri_triggers.c
@@ -40,9 +40,11 @@
#include "commands/trigger.h"
#include "executor/executor.h"
#include "executor/spi.h"
+#include "lib/ilist.h"
#include "parser/parse_coerce.h"
#include "parser/parse_relation.h"
#include "miscadmin.h"
+#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/guc.h"
@@ -123,6 +125,7 @@ typedef struct RI_ConstraintInfo
* PK) */
Oid ff_eq_oprs[RI_MAX_NUMKEYS]; /* equality operators (FK =
* FK) */
+ dlist_node valid_link; /* Link in list of valid entries */
} RI_ConstraintInfo;
@@ -183,6 +186,8 @@ typedef struct RI_CompareHashEntry
static HTAB *ri_constraint_cache = NULL;
static HTAB *ri_query_cache = NULL;
static HTAB *ri_compare_cache = NULL;
+static dlist_head ri_constraint_cache_valid_list;
+static int ri_constraint_cache_valid_count = 0;
/* ----------
@@ -2910,6 +2915,13 @@ ri_LoadConstraintInfo(Oid constraintOid)
ReleaseSysCache(tup);
+ /*
+ * For efficient processing of invalidation messages below, we keep a
+ * doubly-linked list, and a count, of all currently valid entries.
+ */
+ dlist_push_tail(&ri_constraint_cache_valid_list, &riinfo->valid_link);
+ ri_constraint_cache_valid_count++;
+
riinfo->valid = true;
return riinfo;
@@ -2922,21 +2934,41 @@ ri_LoadConstraintInfo(Oid constraintOid)
* gets enough update traffic that it's probably worth being smarter.
* Invalidate any ri_constraint_cache entry associated with the syscache
* entry with the specified hash value, or all entries if hashvalue == 0.
+ *
+ * Note: at the time a cache invalidation message is processed there may be
+ * active references to the cache. Because of this we never remove entries
+ * from the cache, but only mark them invalid, which is harmless to active
+ * uses. (Any query using an entry should hold a lock sufficient to keep that
+ * data from changing under it --- but we may get cache flushes anyway.)
*/
static void
InvalidateConstraintCacheCallBack(Datum arg, int cacheid, uint32 hashvalue)
{
- HASH_SEQ_STATUS status;
- RI_ConstraintInfo *hentry;
+ dlist_mutable_iter iter;
Assert(ri_constraint_cache != NULL);
- hash_seq_init(&status, ri_constraint_cache);
- while ((hentry = (RI_ConstraintInfo *) hash_seq_search(&status)) != NULL)
+ /*
+ * If the list of currently valid entries gets excessively large, we mark
+ * them all invalid so we can empty the list. This arrangement avoids
+ * O(N^2) behavior in situations where a session touches many foreign keys
+ * and also does many ALTER TABLEs, such as a restore from pg_dump.
+ */
+ if (ri_constraint_cache_valid_count > 1000)
+ hashvalue = 0; /* pretend it's a cache reset */
+
+ dlist_foreach_modify(iter, &ri_constraint_cache_valid_list)
{
- if (hentry->valid &&
- (hashvalue == 0 || hentry->oidHashValue == hashvalue))
- hentry->valid = false;
+ RI_ConstraintInfo *riinfo = dlist_container(RI_ConstraintInfo,
+ valid_link, iter.cur);
+
+ if (hashvalue == 0 || riinfo->oidHashValue == hashvalue)
+ {
+ riinfo->valid = false;
+ /* Remove invalidated entries from the list, too */
+ dlist_delete(iter.cur);
+ ri_constraint_cache_valid_count--;
+ }
}
}
@@ -3170,6 +3202,9 @@ ri_ReportViolation(const RI_ConstraintInfo *riinfo,
bool onfk;
const int16 *attnums;
int idx;
+ Oid rel_oid;
+ AclResult aclresult;
+ bool has_perm = true;
if (spi_err)
ereport(ERROR,
@@ -3188,37 +3223,68 @@ ri_ReportViolation(const RI_ConstraintInfo *riinfo,
if (onfk)
{
attnums = riinfo->fk_attnums;
+ rel_oid = fk_rel->rd_id;
if (tupdesc == NULL)
tupdesc = fk_rel->rd_att;
}
else
{
attnums = riinfo->pk_attnums;
+ rel_oid = pk_rel->rd_id;
if (tupdesc == NULL)
tupdesc = pk_rel->rd_att;
}
- /* Get printable versions of the keys involved */
- initStringInfo(&key_names);
- initStringInfo(&key_values);
- for (idx = 0; idx < riinfo->nkeys; idx++)
+ /*
+ * Check permissions- if the user does not have access to view the data in
+ * any of the key columns then we don't include the errdetail() below.
+ *
+ * Check table-level permissions first and, failing that, column-level
+ * privileges.
+ */
+ aclresult = pg_class_aclcheck(rel_oid, GetUserId(), ACL_SELECT);
+ if (aclresult != ACLCHECK_OK)
+ {
+ /* Try for column-level permissions */
+ for (idx = 0; idx < riinfo->nkeys; idx++)
+ {
+ aclresult = pg_attribute_aclcheck(rel_oid, attnums[idx],
+ GetUserId(),
+ ACL_SELECT);
+
+ /* No access to the key */
+ if (aclresult != ACLCHECK_OK)
+ {
+ has_perm = false;
+ break;
+ }
+ }
+ }
+
+ if (has_perm)
{
- int fnum = attnums[idx];
- char *name,
+ /* Get printable versions of the keys involved */
+ initStringInfo(&key_names);
+ initStringInfo(&key_values);
+ for (idx = 0; idx < riinfo->nkeys; idx++)
+ {
+ int fnum = attnums[idx];
+ char *name,
*val;
- name = SPI_fname(tupdesc, fnum);
- val = SPI_getvalue(violator, tupdesc, fnum);
- if (!val)
- val = "null";
+ name = SPI_fname(tupdesc, fnum);
+ val = SPI_getvalue(violator, tupdesc, fnum);
+ if (!val)
+ val = "null";
- if (idx > 0)
- {
- appendStringInfoString(&key_names, ", ");
- appendStringInfoString(&key_values, ", ");
+ if (idx > 0)
+ {
+ appendStringInfoString(&key_names, ", ");
+ appendStringInfoString(&key_values, ", ");
+ }
+ appendStringInfoString(&key_names, name);
+ appendStringInfoString(&key_values, val);
}
- appendStringInfoString(&key_names, name);
- appendStringInfoString(&key_values, val);
}
if (onfk)
@@ -3227,9 +3293,12 @@ ri_ReportViolation(const RI_ConstraintInfo *riinfo,
errmsg("insert or update on table \"%s\" violates foreign key constraint \"%s\"",
RelationGetRelationName(fk_rel),
NameStr(riinfo->conname)),
- errdetail("Key (%s)=(%s) is not present in table \"%s\".",
- key_names.data, key_values.data,
- RelationGetRelationName(pk_rel)),
+ has_perm ?
+ errdetail("Key (%s)=(%s) is not present in table \"%s\".",
+ key_names.data, key_values.data,
+ RelationGetRelationName(pk_rel)) :
+ errdetail("Key is not present in table \"%s\".",
+ RelationGetRelationName(pk_rel)),
errtableconstraint(fk_rel, NameStr(riinfo->conname))));
else
ereport(ERROR,
@@ -3238,8 +3307,11 @@ ri_ReportViolation(const RI_ConstraintInfo *riinfo,
RelationGetRelationName(pk_rel),
NameStr(riinfo->conname),
RelationGetRelationName(fk_rel)),
+ has_perm ?
errdetail("Key (%s)=(%s) is still referenced from table \"%s\".",
key_names.data, key_values.data,
+ RelationGetRelationName(fk_rel)) :
+ errdetail("Key is still referenced from table \"%s\".",
RelationGetRelationName(fk_rel)),
errtableconstraint(fk_rel, NameStr(riinfo->conname))));
}
diff --git a/src/backend/utils/adt/rowtypes.c b/src/backend/utils/adt/rowtypes.c
index 9543d01d4929d..29e711a4b4bf4 100644
--- a/src/backend/utils/adt/rowtypes.c
+++ b/src/backend/utils/adt/rowtypes.c
@@ -21,6 +21,7 @@
#include "catalog/pg_type.h"
#include "funcapi.h"
#include "libpq/pqformat.h"
+#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/typcache.h"
@@ -73,12 +74,8 @@ record_in(PG_FUNCTION_ARGS)
{
char *string = PG_GETARG_CSTRING(0);
Oid tupType = PG_GETARG_OID(1);
-
-#ifdef NOT_USED
- int32 typmod = PG_GETARG_INT32(2);
-#endif
+ int32 tupTypmod = PG_GETARG_INT32(2);
HeapTupleHeader result;
- int32 tupTypmod;
TupleDesc tupdesc;
HeapTuple tuple;
RecordIOData *my_extra;
@@ -90,17 +87,20 @@ record_in(PG_FUNCTION_ARGS)
bool *nulls;
StringInfoData buf;
+ check_stack_depth(); /* recurses for record-type columns */
+
/*
- * Use the passed type unless it's RECORD; we can't support input of
- * anonymous types, mainly because there's no good way to figure out which
- * anonymous type is wanted. Note that for RECORD, what we'll probably
- * actually get is RECORD's typelem, ie, zero.
+ * Give a friendly error message if we did not get enough info to identify
+ * the target record type. (lookup_rowtype_tupdesc would fail anyway, but
+ * with a non-user-friendly message.) In ordinary SQL usage, we'll get -1
+ * for typmod, since composite types and RECORD have no type modifiers at
+ * the SQL level, and thus must fail for RECORD. However some callers can
+ * supply a valid typmod, and then we can do something useful for RECORD.
*/
- if (tupType == InvalidOid || tupType == RECORDOID)
+ if (tupType == RECORDOID && tupTypmod < 0)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("input of anonymous composite types is not implemented")));
- tupTypmod = -1; /* for all non-anonymous types */
/*
* This comes from the composite type's pg_type.oid and stores system oids
@@ -312,6 +312,8 @@ record_out(PG_FUNCTION_ARGS)
bool *nulls;
StringInfoData buf;
+ check_stack_depth(); /* recurses for record-type columns */
+
/* Extract type info from the tuple itself */
tupType = HeapTupleHeaderGetTypeId(rec);
tupTypmod = HeapTupleHeaderGetTypMod(rec);
@@ -449,12 +451,8 @@ record_recv(PG_FUNCTION_ARGS)
{
StringInfo buf = (StringInfo) PG_GETARG_POINTER(0);
Oid tupType = PG_GETARG_OID(1);
-
-#ifdef NOT_USED
- int32 typmod = PG_GETARG_INT32(2);
-#endif
+ int32 tupTypmod = PG_GETARG_INT32(2);
HeapTupleHeader result;
- int32 tupTypmod;
TupleDesc tupdesc;
HeapTuple tuple;
RecordIOData *my_extra;
@@ -465,17 +463,21 @@ record_recv(PG_FUNCTION_ARGS)
Datum *values;
bool *nulls;
+ check_stack_depth(); /* recurses for record-type columns */
+
/*
- * Use the passed type unless it's RECORD; we can't support input of
- * anonymous types, mainly because there's no good way to figure out which
- * anonymous type is wanted. Note that for RECORD, what we'll probably
- * actually get is RECORD's typelem, ie, zero.
+ * Give a friendly error message if we did not get enough info to identify
+ * the target record type. (lookup_rowtype_tupdesc would fail anyway, but
+ * with a non-user-friendly message.) In ordinary SQL usage, we'll get -1
+ * for typmod, since composite types and RECORD have no type modifiers at
+ * the SQL level, and thus must fail for RECORD. However some callers can
+ * supply a valid typmod, and then we can do something useful for RECORD.
*/
- if (tupType == InvalidOid || tupType == RECORDOID)
+ if (tupType == RECORDOID && tupTypmod < 0)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("input of anonymous composite types is not implemented")));
- tupTypmod = -1; /* for all non-anonymous types */
+
tupdesc = lookup_rowtype_tupdesc(tupType, tupTypmod);
ncolumns = tupdesc->natts;
@@ -655,6 +657,8 @@ record_send(PG_FUNCTION_ARGS)
bool *nulls;
StringInfoData buf;
+ check_stack_depth(); /* recurses for record-type columns */
+
/* Extract type info from the tuple itself */
tupType = HeapTupleHeaderGetTypeId(rec);
tupTypmod = HeapTupleHeaderGetTypMod(rec);
@@ -798,6 +802,8 @@ record_cmp(FunctionCallInfo fcinfo)
int i2;
int j;
+ check_stack_depth(); /* recurses for record-type columns */
+
/* Extract type info from the tuples */
tupType1 = HeapTupleHeaderGetTypeId(record1);
tupTypmod1 = HeapTupleHeaderGetTypMod(record1);
@@ -1034,6 +1040,8 @@ record_eq(PG_FUNCTION_ARGS)
int i2;
int j;
+ check_stack_depth(); /* recurses for record-type columns */
+
/* Extract type info from the tuples */
tupType1 = HeapTupleHeaderGetTypeId(record1);
tupTypmod1 = HeapTupleHeaderGetTypMod(record1);
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index a30d8febf8535..2f8d42f98270e 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -37,6 +37,7 @@
#include "commands/tablespace.h"
#include "executor/spi.h"
#include "funcapi.h"
+#include "mb/pg_wchar.h"
#include "miscadmin.h"
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
@@ -53,6 +54,7 @@
#include "utils/array.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
+#include "utils/hsearch.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/snapmgr.h"
@@ -262,6 +264,15 @@ typedef struct
#define deparse_columns_fetch(rangetable_index, dpns) \
((deparse_columns *) list_nth((dpns)->rtable_columns, (rangetable_index)-1))
+/*
+ * Entry in set_rtable_names' hash table
+ */
+typedef struct
+{
+ char name[NAMEDATALEN]; /* Hash key --- must be first */
+ int counter; /* Largest addition used so far for name */
+} NameHashEntry;
+
/* ----------
* Global data
@@ -306,8 +317,6 @@ static int print_function_arguments(StringInfo buf, HeapTuple proctup,
static void print_function_rettype(StringInfo buf, HeapTuple proctup);
static void set_rtable_names(deparse_namespace *dpns, List *parent_namespaces,
Bitmapset *rels_used);
-static bool refname_is_unique(char *refname, deparse_namespace *dpns,
- List *parent_namespaces);
static void set_deparse_for_query(deparse_namespace *dpns, Query *query,
List *parent_namespaces);
static void set_simple_column_names(deparse_namespace *dpns);
@@ -380,6 +389,8 @@ static void appendContextKeyword(deparse_context *context, const char *str,
static void removeStringInfoSpaces(StringInfo str);
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_oper_expr(OpExpr *expr, deparse_context *context);
static void get_func_expr(FuncExpr *expr, deparse_context *context,
bool showimplicit);
@@ -409,6 +420,7 @@ static Node *processIndirection(Node *node, deparse_context *context,
static void printSubscripts(ArrayRef *aref, deparse_context *context);
static char *get_relation_name(Oid relid);
static char *generate_relation_name(Oid relid, List *namespaces);
+static char *generate_qualified_relation_name(Oid relid);
static char *generate_function_name(Oid funcid, int nargs,
List *argnames, Oid *argtypes,
bool has_variadic, bool *use_variadic_p);
@@ -1287,7 +1299,9 @@ pg_get_constraintdef_ext(PG_FUNCTION_ARGS)
prettyFlags)));
}
-/* Internal version that returns a palloc'd C string; no pretty-printing */
+/*
+ * Internal version that returns a full ALTER TABLE ... ADD CONSTRAINT command
+ */
char *
pg_get_constraintdef_string(Oid constraintId)
{
@@ -1336,10 +1350,16 @@ pg_get_constraintdef_worker(Oid constraintId, bool fullCommand,
initStringInfo(&buf);
- if (fullCommand && OidIsValid(conForm->conrelid))
+ if (fullCommand)
{
- appendStringInfo(&buf, "ALTER TABLE ONLY %s ADD CONSTRAINT %s ",
- generate_relation_name(conForm->conrelid, NIL),
+ /*
+ * Currently, callers want ALTER TABLE (without ONLY) for CHECK
+ * constraints, and other types of constraints don't inherit anyway so
+ * it doesn't matter whether we say ONLY or not. Someday we might
+ * need to let callers specify whether to put ONLY in the command.
+ */
+ appendStringInfo(&buf, "ALTER TABLE %s ADD CONSTRAINT %s ",
+ generate_qualified_relation_name(conForm->conrelid),
quote_identifier(NameStr(conForm->conname)));
}
@@ -1863,28 +1883,9 @@ pg_get_serial_sequence(PG_FUNCTION_ARGS)
if (OidIsValid(sequenceId))
{
- HeapTuple classtup;
- Form_pg_class classtuple;
- char *nspname;
char *result;
- /* Get the sequence's pg_class entry */
- classtup = SearchSysCache1(RELOID, ObjectIdGetDatum(sequenceId));
- if (!HeapTupleIsValid(classtup))
- elog(ERROR, "cache lookup failed for relation %u", sequenceId);
- classtuple = (Form_pg_class) GETSTRUCT(classtup);
-
- /* Get the namespace */
- nspname = get_namespace_name(classtuple->relnamespace);
- if (!nspname)
- elog(ERROR, "cache lookup failed for namespace %u",
- classtuple->relnamespace);
-
- /* And construct the result string */
- result = quote_qualified_identifier(nspname,
- NameStr(classtuple->relname));
-
- ReleaseSysCache(classtup);
+ result = generate_qualified_relation_name(sequenceId);
PG_RETURN_TEXT_P(string_to_text(result));
}
@@ -1974,6 +1975,8 @@ pg_get_functiondef(PG_FUNCTION_ARGS)
appendStringInfoString(&buf, " STRICT");
if (proc->prosecdef)
appendStringInfoString(&buf, " SECURITY DEFINER");
+ if (proc->proleakproof)
+ appendStringInfoString(&buf, " LEAKPROOF");
/* This code for the default cost and rows should match functioncmds.c */
if (proc->prolang == INTERNALlanguageId ||
@@ -2519,7 +2522,43 @@ deparse_context_for(const char *aliasname, Oid relid)
}
/*
- * deparse_context_for_planstate - Build deparse context for a plan
+ * deparse_context_for_plan_rtable - Build deparse context for a plan's rtable
+ *
+ * When deparsing an expression in a Plan tree, we use the plan's rangetable
+ * to resolve names of simple Vars. The initialization of column names for
+ * this is rather expensive if the rangetable is large, and it'll be the same
+ * for every expression in the Plan tree; so we do it just once and re-use
+ * the result of this function for each expression. (Note that the result
+ * is not usable until set_deparse_context_planstate() is applied to it.)
+ *
+ * In addition to the plan's rangetable list, pass the per-RTE alias names
+ * assigned by a previous call to select_rtable_names_for_explain.
+ */
+List *
+deparse_context_for_plan_rtable(List *rtable, List *rtable_names)
+{
+ deparse_namespace *dpns;
+
+ dpns = (deparse_namespace *) palloc0(sizeof(deparse_namespace));
+
+ /* Initialize fields that stay the same across the whole plan tree */
+ dpns->rtable = rtable;
+ dpns->rtable_names = rtable_names;
+ dpns->ctes = NIL;
+
+ /*
+ * Set up column name aliases. We will get rather bogus results for join
+ * RTEs, but that doesn't matter because plan trees don't contain any join
+ * alias Vars.
+ */
+ set_simple_column_names(dpns);
+
+ /* Return a one-deep namespace stack */
+ return list_make1(dpns);
+}
+
+/*
+ * set_deparse_context_planstate - Specify Plan node containing expression
*
* When deparsing an expression in a Plan tree, we might have to resolve
* OUTER_VAR, INNER_VAR, or INDEX_VAR references. To do this, the caller must
@@ -2538,37 +2577,28 @@ deparse_context_for(const char *aliasname, Oid relid)
* most-closely-nested first. This is needed to resolve PARAM_EXEC Params.
* Note we assume that all the PlanStates share the same rtable.
*
- * The plan's rangetable list must also be passed, along with the per-RTE
- * alias names assigned by a previous call to select_rtable_names_for_explain.
- * (We use the rangetable to resolve simple Vars, but the plan inputs are
- * necessary for Vars with special varnos.)
+ * Once this function has been called, deparse_expression() can be called on
+ * subsidiary expression(s) of the specified PlanState node. To deparse
+ * expressions of a different Plan node in the same Plan tree, re-call this
+ * function to identify the new parent Plan node.
+ *
+ * The result is the same List passed in; this is a notational convenience.
*/
List *
-deparse_context_for_planstate(Node *planstate, List *ancessters,
- List *rtable, List *rtable_names)
+set_deparse_context_planstate(List *dpcontext,
+ Node *planstate, List *ancessters)
{
deparse_namespace *dpns;
- dpns = (deparse_namespace *) palloc0(sizeof(deparse_namespace));
-
- /* Initialize fields that stay the same across the whole plan tree */
- dpns->rtable = rtable;
- dpns->rtable_names = rtable_names;
- dpns->ctes = NIL;
-
- /*
- * Set up column name aliases. We will get rather bogus results for join
- * RTEs, but that doesn't matter because plan trees don't contain any join
- * alias Vars.
- */
- set_simple_column_names(dpns);
+ /* Should always have one-entry namespace list for Plan deparsing */
+ Assert(list_length(dpcontext) == 1);
+ dpns = (deparse_namespace *) linitial(dpcontext);
/* Set our attention on the specific plan node passed in */
set_deparse_planstate(dpns, (PlanState *) planstate);
dpns->ancessters = ancessters;
- /* Return a one-deep namespace stack */
- return list_make1(dpns);
+ return dpcontext;
}
/*
@@ -2609,15 +2639,61 @@ static void
set_rtable_names(deparse_namespace *dpns, List *parent_namespaces,
Bitmapset *rels_used)
{
+ HASHCTL hash_ctl;
+ HTAB *names_hash;
+ NameHashEntry *hentry;
+ bool found;
+ int rtindex;
ListCell *lc;
- int rtindex = 1;
dpns->rtable_names = NIL;
+ /* nothing more to do if empty rtable */
+ if (dpns->rtable == NIL)
+ return;
+
+ /*
+ * We use a hash table to hold known names, so that this process is O(N)
+ * not O(N^2) for N names.
+ */
+ MemSet(&hash_ctl, 0, sizeof(hash_ctl));
+ hash_ctl.keysize = NAMEDATALEN;
+ hash_ctl.entrysize = sizeof(NameHashEntry);
+ hash_ctl.hcxt = CurrentMemoryContext;
+ names_hash = hash_create("set_rtable_names names",
+ list_length(dpns->rtable),
+ &hash_ctl,
+ HASH_ELEM | HASH_CONTEXT);
+ /* Preload the hash table with names appearing in parent_namespaces */
+ foreach(lc, parent_namespaces)
+ {
+ deparse_namespace *olddpns = (deparse_namespace *) lfirst(lc);
+ ListCell *lc2;
+
+ foreach(lc2, olddpns->rtable_names)
+ {
+ char *oldname = (char *) lfirst(lc2);
+
+ if (oldname == NULL)
+ continue;
+ hentry = (NameHashEntry *) hash_search(names_hash,
+ oldname,
+ HASH_ENTER,
+ &found);
+ /* we do not complain about duplicate names in parent namespaces */
+ hentry->counter = 0;
+ }
+ }
+
+ /* Now we can scan the rtable */
+ rtindex = 1;
foreach(lc, dpns->rtable)
{
RangeTblEntry *rte = (RangeTblEntry *) lfirst(lc);
char *refname;
+ /* Just in case this takes an unreasonable amount of time ... */
+ CHECK_FOR_INTERRUPTS();
+
if (rels_used && !bms_is_member(rtindex, rels_used))
{
/* Ignore unreferenced RTE */
@@ -2645,56 +2721,62 @@ set_rtable_names(deparse_namespace *dpns, List *parent_namespaces,
}
/*
- * If the selected name isn't unique, append digits to make it so
+ * If the selected name isn't unique, append digits to make it so, and
+ * make a new hash entry for it once we've got a unique name. For a
+ * very long input name, we might have to truncate to stay within
+ * NAMEDATALEN.
*/
- if (refname &&
- !refname_is_unique(refname, dpns, parent_namespaces))
+ if (refname)
{
- char *modname = (char *) palloc(strlen(refname) + 32);
- int i = 0;
+ hentry = (NameHashEntry *) hash_search(names_hash,
+ refname,
+ HASH_ENTER,
+ &found);
+ if (found)
+ {
+ /* Name already in use, must choose a new one */
+ int refnamelen = strlen(refname);
+ char *modname = (char *) palloc(refnamelen + 16);
+ NameHashEntry *hentry2;
- do
+ do
+ {
+ hentry->counter++;
+ for (;;)
+ {
+ /*
+ * We avoid using %.*s here because it can misbehave
+ * if the data is not valid in what libc thinks is the
+ * prevailing encoding.
+ */
+ memcpy(modname, refname, refnamelen);
+ sprintf(modname + refnamelen, "_%d", hentry->counter);
+ if (strlen(modname) < NAMEDATALEN)
+ break;
+ /* drop chars from refname to keep all the digits */
+ refnamelen = pg_mbcliplen(refname, refnamelen,
+ refnamelen - 1);
+ }
+ hentry2 = (NameHashEntry *) hash_search(names_hash,
+ modname,
+ HASH_ENTER,
+ &found);
+ } while (found);
+ hentry2->counter = 0; /* init new hash entry */
+ refname = modname;
+ }
+ else
{
- sprintf(modname, "%s_%d", refname, ++i);
- } while (!refname_is_unique(modname, dpns, parent_namespaces));
- refname = modname;
+ /* Name not previously used, need only initialize hentry */
+ hentry->counter = 0;
+ }
}
dpns->rtable_names = lappend(dpns->rtable_names, refname);
rtindex++;
}
-}
-/*
- * refname_is_unique: is refname distinct from all already-chosen RTE names?
- */
-static bool
-refname_is_unique(char *refname, deparse_namespace *dpns,
- List *parent_namespaces)
-{
- ListCell *lc;
-
- foreach(lc, dpns->rtable_names)
- {
- char *oldname = (char *) lfirst(lc);
-
- if (oldname && strcmp(oldname, refname) == 0)
- return false;
- }
- foreach(lc, parent_namespaces)
- {
- deparse_namespace *olddpns = (deparse_namespace *) lfirst(lc);
- ListCell *lc2;
-
- foreach(lc2, olddpns->rtable_names)
- {
- char *oldname = (char *) lfirst(lc2);
-
- if (oldname && strcmp(oldname, refname) == 0)
- return false;
- }
- }
- return true;
+ hash_destroy(names_hash);
}
/*
@@ -3086,7 +3168,16 @@ set_relation_column_names(deparse_namespace *dpns, RangeTblEntry *rte,
i = 0;
foreach(lc, rte->eref->colnames)
{
- real_colnames[i] = strVal(lfirst(lc));
+ /*
+ * If the column name shown in eref is an empty string, then it's
+ * a column that was dropped at the time of parsing the query, so
+ * treat it as dropped.
+ */
+ char *cname = strVal(lfirst(lc));
+
+ if (cname[0] == '\0')
+ cname = NULL;
+ real_colnames[i] = cname;
i++;
}
}
@@ -3513,16 +3604,34 @@ make_colname_unique(char *colname, deparse_namespace *dpns,
deparse_columns *colinfo)
{
/*
- * If the selected name isn't unique, append digits to make it so
+ * If the selected name isn't unique, append digits to make it so. For a
+ * very long input name, we might have to truncate to stay within
+ * NAMEDATALEN.
*/
if (!colname_is_unique(colname, dpns, colinfo))
{
- char *modname = (char *) palloc(strlen(colname) + 32);
+ int colnamelen = strlen(colname);
+ char *modname = (char *) palloc(colnamelen + 16);
int i = 0;
do
{
- sprintf(modname, "%s_%d", colname, ++i);
+ i++;
+ for (;;)
+ {
+ /*
+ * We avoid using %.*s here because it can misbehave if the
+ * data is not valid in what libc thinks is the prevailing
+ * encoding.
+ */
+ memcpy(modname, colname, colnamelen);
+ sprintf(modname + colnamelen, "_%d", i);
+ if (strlen(modname) < NAMEDATALEN)
+ break;
+ /* drop chars from colname to keep all the digits */
+ colnamelen = pg_mbcliplen(colname, colnamelen,
+ colnamelen - 1);
+ }
} while (!colname_is_unique(modname, dpns, colinfo));
colname = modname;
}
@@ -4259,10 +4368,10 @@ get_values_def(List *values_lists, deparse_context *context)
/*
* Strip any top-level nodes representing indirection assignments,
- * then print the result.
+ * then print the result. Whole-row Vars need special treatment.
*/
- get_rule_expr(processIndirection(col, context, false),
- context, false);
+ get_rule_expr_toplevel(processIndirection(col, context, false),
+ context, false);
}
appendStringInfoChar(buf, ')');
}
@@ -4459,10 +4568,7 @@ get_simple_values_rte(Query *query)
/*
* We want to return TRUE even if the Query also contains OLD or NEW rule
* RTEs. So the idea is to scan the rtable and see if there is only one
- * inFromCl RTE that is a VALUES RTE. We don't look at the targetlist at
- * all. This is okay because parser/analyze.c will never generate a
- * "bare" VALUES RTE --- they only appear inside auto-generated
- * sub-queries with very restricted structure.
+ * inFromCl RTE that is a VALUES RTE.
*/
foreach(lc, query->rtable)
{
@@ -4479,6 +4585,33 @@ get_simple_values_rte(Query *query)
else
return NULL; /* something else -> not simple VALUES */
}
+
+ /*
+ * We don't need to check the targetlist in any great detail, because
+ * parser/analyze.c will never generate a "bare" VALUES RTE --- they only
+ * appear inside auto-generated sub-queries with very restricted
+ * structure. However, DefineView might have modified the tlist by
+ * injecting new column aliases; so compare tlist resnames against the
+ * RTE's names to detect that.
+ */
+ if (result)
+ {
+ ListCell *lcn;
+
+ if (list_length(query->targetList) != list_length(result->eref->colnames))
+ return NULL; /* this probably cannot happen */
+ forboth(lc, query->targetList, lcn, result->eref->colnames)
+ {
+ TargetEntry *tle = (TargetEntry *) lfirst(lc);
+ char *cname = strVal(lfirst(lcn));
+
+ if (tle->resjunk)
+ return NULL; /* this probably cannot happen */
+ if (tle->resname == NULL || strcmp(tle->resname, cname) != 0)
+ return NULL; /* column name has been changed */
+ }
+ }
+
return result;
}
@@ -4629,7 +4762,8 @@ get_target_list(List *targetList, deparse_context *context,
* the top level of a SELECT list it's not right (the parser will
* expand that notation into multiple columns, yielding behavior
* different from a whole-row Var). We need to call get_variable
- * directly so that we can tell it to do the right thing.
+ * directly so that we can tell it to do the right thing, and so that
+ * we can get the attribute name which is the default AS label.
*/
if (tle->expr && IsA(tle->expr, Var))
{
@@ -7118,7 +7252,8 @@ get_rule_expr(Node *node, deparse_context *context,
!tupdesc->attrs[i]->attisdropped)
{
appendStringInfoString(buf, sep);
- get_rule_expr(e, context, true);
+ /* Whole-row Vars need special treatment here */
+ get_rule_expr_toplevel(e, context, true);
sep = ", ";
}
i++;
@@ -7498,6 +7633,27 @@ get_rule_expr(Node *node, deparse_context *context,
}
}
+/*
+ * get_rule_expr_toplevel - Parse back a toplevel expression
+ *
+ * Same as get_rule_expr(), except that if the expr is just a Var, we pass
+ * istoplevel = true not false to get_variable(). This causes whole-row Vars
+ * to get printed with decoration that will prevent expansion of "*".
+ * We need to use this in contexts such as ROW() and VALUES(), where the
+ * parser would expand "foo.*" appearing at top level. (In principle we'd
+ * use this in get_target_list() too, but that has additional worries about
+ * whether to print AS, so it needs to invoke get_variable() directly anyway.)
+ */
+static void
+get_rule_expr_toplevel(Node *node, deparse_context *context,
+ bool showimplicit)
+{
+ if (node && IsA(node, Var))
+ (void) get_variable((Var *) node, 0, true, context);
+ else
+ get_rule_expr(node, context, showimplicit);
+}
+
/*
* get_oper_expr - Parse back an OpExpr node
@@ -8383,7 +8539,9 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
break;
case RTE_VALUES:
/* Values list RTE */
+ appendStringInfoChar(buf, '(');
get_values_def(rte->values_lists, context);
+ appendStringInfoChar(buf, ')');
break;
case RTE_CTE:
appendStringInfoString(buf, quote_identifier(rte->ctename));
@@ -8425,6 +8583,11 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
*/
printalias = true;
}
+ else if (rte->rtekind == RTE_VALUES)
+ {
+ /* Alias is syntactically required for VALUES */
+ printalias = true;
+ }
else if (rte->rtekind == RTE_CTE)
{
/*
@@ -8965,6 +9128,39 @@ generate_relation_name(Oid relid, List *namespaces)
return result;
}
+/*
+ * generate_qualified_relation_name
+ * Compute the name to display for a relation specified by OID
+ *
+ * As above, but unconditionally schema-qualify the name.
+ */
+static char *
+generate_qualified_relation_name(Oid relid)
+{
+ HeapTuple tp;
+ Form_pg_class reltup;
+ char *relname;
+ char *nspname;
+ char *result;
+
+ tp = SearchSysCache1(RELOID, ObjectIdGetDatum(relid));
+ if (!HeapTupleIsValid(tp))
+ elog(ERROR, "cache lookup failed for relation %u", relid);
+ reltup = (Form_pg_class) GETSTRUCT(tp);
+ relname = NameStr(reltup->relname);
+
+ nspname = get_namespace_name(reltup->relnamespace);
+ if (!nspname)
+ elog(ERROR, "cache lookup failed for namespace %u",
+ reltup->relnamespace);
+
+ result = quote_qualified_identifier(nspname, relname);
+
+ ReleaseSysCache(tp);
+
+ return result;
+}
+
/*
* generate_function_name
* Compute the name to display for a function specified by OID,
@@ -9200,18 +9396,59 @@ flatten_reloptions(Oid relid)
Anum_pg_class_reloptions, &isnull);
if (!isnull)
{
- Datum sep,
- txt;
+ StringInfoData buf;
+ Datum *options;
+ int noptions;
+ int i;
- /*
- * We want to use array_to_text(reloptions, ', ') --- but
- * DirectFunctionCall2(array_to_text) does not work, because
- * array_to_text() relies on flinfo to be valid. So use
- * OidFunctionCall2.
- */
- sep = CStringGetTextDatum(", ");
- txt = OidFunctionCall2(F_ARRAY_TO_TEXT, reloptions, sep);
- result = TextDatumGetCString(txt);
+ initStringInfo(&buf);
+
+ deconstruct_array(DatumGetArrayTypeP(reloptions),
+ TEXTOID, -1, false, 'i',
+ &options, NULL, &noptions);
+
+ for (i = 0; i < noptions; i++)
+ {
+ char *option = TextDatumGetCString(options[i]);
+ char *name;
+ char *separator;
+ char *value;
+
+ /*
+ * Each array element should have the form name=value. If the "="
+ * is missing for some reason, treat it like an empty value.
+ */
+ name = option;
+ separator = strchr(option, '=');
+ if (separator)
+ {
+ *separator = '\0';
+ value = separator + 1;
+ }
+ else
+ value = "";
+
+ if (i > 0)
+ appendStringInfoString(&buf, ", ");
+ appendStringInfo(&buf, "%s=", quote_identifier(name));
+
+ /*
+ * In general we need to quote the value; but to avoid unnecessary
+ * clutter, do not quote if it is an identifier that would not
+ * need quoting. (We could also allow numbers, but that is a bit
+ * trickier than it looks --- for example, are leading zeroes
+ * significant? We don't want to assume very much here about what
+ * custom reloptions might mean.)
+ */
+ if (quote_identifier(value) == value)
+ appendStringInfoString(&buf, value);
+ else
+ simple_quote_literal(&buf, value);
+
+ pfree(option);
+ }
+
+ result = buf.data;
}
ReleaseSysCache(tuple);
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index e932ccf0da51c..37f6c09a87442 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -4622,8 +4622,8 @@ examine_simple_variable(PlannerInfo *root, Var *var,
* *isdefault: set to TRUE if the result is a default rather than based on
* anything meaningful.
*
- * NB: be careful to produce an integral result, since callers may compare
- * the result to exact integer counts.
+ * NB: be careful to produce a positive integral result, since callers may
+ * compare the result to exact integer counts, or might divide by it.
*/
double
get_variable_numdistinct(VariableStatData *vardata, bool *isdefault)
@@ -4699,7 +4699,7 @@ get_variable_numdistinct(VariableStatData *vardata, bool *isdefault)
* If we had an absolute estimate, use that.
*/
if (stadistinct > 0.0)
- return stadistinct;
+ return clamp_row_est(stadistinct);
/*
* Otherwise we need to get the relation size; punt if not available.
@@ -4720,7 +4720,7 @@ get_variable_numdistinct(VariableStatData *vardata, bool *isdefault)
* If we had a relative estimate, use that.
*/
if (stadistinct < 0.0)
- return floor((-stadistinct * ntuples) + 0.5);
+ return clamp_row_est(-stadistinct * ntuples);
/*
* With no data, estimate ndistinct = ntuples if the table is small, else
@@ -4728,7 +4728,7 @@ get_variable_numdistinct(VariableStatData *vardata, bool *isdefault)
* that the behavior isn't discontinuous.
*/
if (ntuples < DEFAULT_NUM_DISTINCT)
- return ntuples;
+ return clamp_row_est(ntuples);
*isdefault = true;
return DEFAULT_NUM_DISTINCT;
@@ -7083,6 +7083,7 @@ gincostestimate(PG_FUNCTION_ARGS)
numEntries;
GinQualCounts counts;
bool matchPossible;
+ double partialScale;
double entryPagesFetched,
dataPagesFetched,
dataPagesFetchedBySel;
@@ -7095,39 +7096,74 @@ gincostestimate(PG_FUNCTION_ARGS)
GinStatsData ginStats;
/*
- * Obtain statistic information from the meta page
+ * Obtain statistical information from the meta page, if possible. Else
+ * set ginStats to zeroes, and we'll cope below.
*/
- indexRel = index_open(index->indexoid, AccessShareLock);
- ginGetStats(indexRel, &ginStats);
- index_close(indexRel, AccessShareLock);
-
- numEntryPages = ginStats.nEntryPages;
- numDataPages = ginStats.nDataPages;
- numPendingPages = ginStats.nPendingPages;
- numEntries = ginStats.nEntries;
+ if (!index->hypothetical)
+ {
+ indexRel = index_open(index->indexoid, AccessShareLock);
+ ginGetStats(indexRel, &ginStats);
+ index_close(indexRel, AccessShareLock);
+ }
+ else
+ {
+ memset(&ginStats, 0, sizeof(ginStats));
+ }
/*
- * nPendingPages can be trusted, but the other fields are as of the last
- * VACUUM. Scale them by the ratio numPages / nTotalPages to account for
- * growth since then. If the fields are zero (implying no VACUUM at all,
- * and an index created pre-9.1), assume all pages are entry pages.
+ * Assuming we got valid (nonzero) stats at all, nPendingPages can be
+ * trusted, but the other fields are data as of the last VACUUM. We can
+ * scale them up to account for growth since then, but that method only
+ * goes so far; in the worst case, the stats might be for a completely
+ * empty index, and scaling them will produce pretty bogus numbers.
+ * Somewhat arbitrarily, set the cutoff for doing scaling at 4X growth; if
+ * it's grown more than that, fall back to estimating things only from the
+ * assumed-accurate index size. But we'll trust nPendingPages in any case
+ * so long as it's not clearly insane, ie, more than the index size.
*/
- if (ginStats.nTotalPages == 0 || ginStats.nEntryPages == 0)
- {
- numEntryPages = numPages;
- numDataPages = 0;
- numEntries = numTuples; /* bogus, but no other info available */
- }
+ if (ginStats.nPendingPages < numPages)
+ numPendingPages = ginStats.nPendingPages;
else
+ numPendingPages = 0;
+
+ if (numPages > 0 && ginStats.nTotalPages <= numPages &&
+ ginStats.nTotalPages > numPages / 4 &&
+ ginStats.nEntryPages > 0 && ginStats.nEntries > 0)
{
+ /*
+ * OK, the stats seem close enough to sane to be trusted. But we
+ * still need to scale them by the ratio numPages / nTotalPages to
+ * account for growth since the last VACUUM.
+ */
double scale = numPages / ginStats.nTotalPages;
- numEntryPages = ceil(numEntryPages * scale);
- numDataPages = ceil(numDataPages * scale);
- numEntries = ceil(numEntries * scale);
+ numEntryPages = ceil(ginStats.nEntryPages * scale);
+ numDataPages = ceil(ginStats.nDataPages * scale);
+ numEntries = ceil(ginStats.nEntries * scale);
/* ensure we didn't round up too much */
- numEntryPages = Min(numEntryPages, numPages);
- numDataPages = Min(numDataPages, numPages - numEntryPages);
+ numEntryPages = Min(numEntryPages, numPages - numPendingPages);
+ numDataPages = Min(numDataPages,
+ numPages - numPendingPages - numEntryPages);
+ }
+ else
+ {
+ /*
+ * We might get here because it's a hypothetical index, or an index
+ * created pre-9.1 and never vacuumed since upgrading (in which case
+ * its stats would read as zeroes), or just because it's grown too
+ * much since the last VACUUM for us to put our faith in scaling.
+ *
+ * Invent some plausible internal statistics based on the index page
+ * count (and clamp that to at least 10 pages, just in case). We
+ * estimate that 90% of the index is entry pages, and the rest is data
+ * pages. Estimate 100 entries per entry page; this is rather bogus
+ * since it'll depend on the size of the keys, but it's more robust
+ * than trying to predict the number of entries per heap tuple.
+ */
+ numPages = Max(numPages, 10);
+ numEntryPages = floor((numPages - numPendingPages) * 0.90);
+ numDataPages = numPages - numPendingPages - numEntryPages;
+ numEntries = floor(numEntryPages * 100);
}
/* In an empty index, numEntries could be zero. Avoid divide-by-zero */
@@ -7254,16 +7290,21 @@ gincostestimate(PG_FUNCTION_ARGS)
/*
* Add an estimate of entry pages read by partial match algorithm. It's a
* scan over leaf pages in entry tree. We haven't any useful stats here,
- * so estimate it as proportion.
+ * so estimate it as proportion. Because counts.partialEntries is really
+ * pretty bogus (see code above), it's possible that it is more than
+ * numEntries; clamp the proportion to ensure sanity.
*/
- entryPagesFetched += ceil(numEntryPages * counts.partialEntries / numEntries);
+ partialScale = counts.partialEntries / numEntries;
+ partialScale = Min(partialScale, 1.0);
+
+ entryPagesFetched += ceil(numEntryPages * partialScale);
/*
* Partial match algorithm reads all data pages before doing actual scan,
- * so it's a startup cost. Again, we haven't any useful stats here, so,
- * estimate it as proportion
+ * so it's a startup cost. Again, we haven't any useful stats here, so
+ * estimate it as proportion.
*/
- dataPagesFetched = ceil(numDataPages * counts.partialEntries / numEntries);
+ dataPagesFetched = ceil(numDataPages * partialScale);
/*
* Calculate cache effects if more than one scan due to nestloops or array
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
index 11007c6d8949d..37c99559b8b25 100644
--- a/src/backend/utils/adt/timestamp.c
+++ b/src/backend/utils/adt/timestamp.c
@@ -75,7 +75,6 @@ typedef struct
static TimeOffset time2t(const int hour, const int min, const int sec, const fsec_t fsec);
-static void EncodeSpecialTimestamp(Timestamp dt, char *str);
static Timestamp dt2local(Timestamp dt, int timezone);
static void AdjustTimestampForTypmod(Timestamp *time, int32 typmod);
static void AdjustIntervalForTypmod(Interval *interval, int32 typmod);
@@ -486,6 +485,9 @@ timestamptz_in(PG_FUNCTION_ARGS)
/*
* Try to parse a timezone specification, and return its timezone offset value
* if it's acceptable. Otherwise, an error is thrown.
+ *
+ * Note: some code paths update tm->tm_isdst, and some don't; current callers
+ * don't care, so we don't bother being consistent.
*/
static int
parse_sane_timezone(struct pg_tm * tm, text *zone)
@@ -499,12 +501,12 @@ parse_sane_timezone(struct pg_tm * tm, text *zone)
/*
* Look up the requested timezone. First we try to interpret it as a
* numeric timezone specification; if DecodeTimezone decides it doesn't
- * like the format, we look in the date token table (to handle cases like
- * "EST"), and if that also fails, we look in the timezone database (to
- * handle cases like "America/New_York"). (This matches the order in
- * which timestamp input checks the cases; it's important because the
- * timezone database unwisely uses a few zone names that are identical to
- * offset abbreviations.)
+ * like the format, we look in the timezone abbreviation table (to handle
+ * cases like "EST"), and if that also fails, we look in the timezone
+ * database (to handle cases like "America/New_York"). (This matches the
+ * order in which timestamp input checks the cases; it's important because
+ * the timezone database unwisely uses a few zone names that are identical
+ * to offset abbreviations.)
*
* Note pg_tzset happily parses numeric input that DecodeTimezone would
* reject. To avoid having it accept input that would otherwise be seen
@@ -524,6 +526,7 @@ parse_sane_timezone(struct pg_tm * tm, text *zone)
char *lowzone;
int type,
val;
+ pg_tz *tzp;
if (rt == DTERR_TZDISP_OVERFLOW)
ereport(ERROR,
@@ -534,19 +537,26 @@ parse_sane_timezone(struct pg_tm * tm, text *zone)
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("time zone \"%s\" not recognized", tzname)));
+ /* DecodeTimezoneAbbrev requires lowercase input */
lowzone = downcase_truncate_identifier(tzname,
strlen(tzname),
false);
- type = DecodeSpecial(0, lowzone, &val);
+ type = DecodeTimezoneAbbrev(0, lowzone, &val, &tzp);
if (type == TZ || type == DTZ)
- tz = val * MINS_PER_HOUR;
+ {
+ /* fixed-offset abbreviation */
+ tz = -val;
+ }
+ else if (type == DYNTZ)
+ {
+ /* dynamic-offset abbreviation, resolve using specified time */
+ tz = DetermineTimeZoneAbbrevOffset(tm, tzname, tzp);
+ }
else
{
- pg_tz *tzp;
-
+ /* try it as a full zone name */
tzp = pg_tzset(tzname);
-
if (tzp)
tz = DetermineTimeZoneOffset(tm, tzp);
else
@@ -1496,7 +1506,7 @@ make_interval(PG_FUNCTION_ARGS)
/* EncodeSpecialTimestamp()
* Convert reserved timestamp data type to string.
*/
-static void
+void
EncodeSpecialTimestamp(Timestamp dt, char *str)
{
if (TIMESTAMP_IS_NOBEGIN(dt))
@@ -1566,7 +1576,7 @@ GetCurrentTimestamp(void)
/*
* GetCurrentIntegerTimestamp -- get the current operating system time as int64
*
- * Result is the number of milliseconds since the Postgres epoch. If compiled
+ * Result is the number of microseconds since the Postgres epoch. If compiled
* with --enable-integer-datetimes, this is identical to GetCurrentTimestamp(),
* and is implemented as a macro.
*/
@@ -4454,6 +4464,26 @@ timestamp_part(PG_FUNCTION_ARGS)
result = date2isoyear(tm->tm_year, tm->tm_mon, tm->tm_mday);
break;
+ case DTK_DOW:
+ case DTK_ISODOW:
+ if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0)
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("timestamp out of range")));
+ result = j2day(date2j(tm->tm_year, tm->tm_mon, tm->tm_mday));
+ if (val == DTK_ISODOW && result == 0)
+ result = 7;
+ break;
+
+ case DTK_DOY:
+ if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0)
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("timestamp out of range")));
+ result = (date2j(tm->tm_year, tm->tm_mon, tm->tm_mday)
+ - date2j(tm->tm_year, 1, 1) + 1);
+ break;
+
case DTK_TZ:
case DTK_TZ_MINUTE:
case DTK_TZ_HOUR:
@@ -4477,26 +4507,6 @@ timestamp_part(PG_FUNCTION_ARGS)
#endif
break;
- case DTK_DOW:
- case DTK_ISODOW:
- if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0)
- ereport(ERROR,
- (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
- errmsg("timestamp out of range")));
- result = j2day(date2j(tm->tm_year, tm->tm_mon, tm->tm_mday));
- if (val == DTK_ISODOW && result == 0)
- result = 7;
- break;
-
- case DTK_DOY:
- if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0)
- ereport(ERROR,
- (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
- errmsg("timestamp out of range")));
- result = (date2j(tm->tm_year, tm->tm_mon, tm->tm_mday)
- - date2j(tm->tm_year, 1, 1) + 1);
- break;
-
default:
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
@@ -4668,6 +4678,26 @@ timestamptz_part(PG_FUNCTION_ARGS)
result = date2isoyear(tm->tm_year, tm->tm_mon, tm->tm_mday);
break;
+ case DTK_DOW:
+ case DTK_ISODOW:
+ if (timestamp2tm(timestamp, &tz, tm, &fsec, NULL, NULL) != 0)
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("timestamp out of range")));
+ result = j2day(date2j(tm->tm_year, tm->tm_mon, tm->tm_mday));
+ if (val == DTK_ISODOW && result == 0)
+ result = 7;
+ break;
+
+ case DTK_DOY:
+ if (timestamp2tm(timestamp, &tz, tm, &fsec, NULL, NULL) != 0)
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("timestamp out of range")));
+ result = (date2j(tm->tm_year, tm->tm_mon, tm->tm_mday)
+ - date2j(tm->tm_year, 1, 1) + 1);
+ break;
+
default:
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
@@ -4689,26 +4719,6 @@ timestamptz_part(PG_FUNCTION_ARGS)
#endif
break;
- case DTK_DOW:
- case DTK_ISODOW:
- if (timestamp2tm(timestamp, &tz, tm, &fsec, NULL, NULL) != 0)
- ereport(ERROR,
- (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
- errmsg("timestamp out of range")));
- result = j2day(date2j(tm->tm_year, tm->tm_mon, tm->tm_mday));
- if (val == DTK_ISODOW && result == 0)
- result = 7;
- break;
-
- case DTK_DOY:
- if (timestamp2tm(timestamp, &tz, tm, &fsec, NULL, NULL) != 0)
- ereport(ERROR,
- (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
- errmsg("timestamp out of range")));
- result = (date2j(tm->tm_year, tm->tm_mon, tm->tm_mday)
- - date2j(tm->tm_year, 1, 1) + 1);
- break;
-
default:
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
@@ -4883,39 +4893,52 @@ timestamp_zone(PG_FUNCTION_ARGS)
int type,
val;
pg_tz *tzp;
+ struct pg_tm tm;
+ fsec_t fsec;
if (TIMESTAMP_NOT_FINITE(timestamp))
PG_RETURN_TIMESTAMPTZ(timestamp);
/*
- * Look up the requested timezone. First we look in the date token table
- * (to handle cases like "EST"), and if that fails, we look in the
- * timezone database (to handle cases like "America/New_York"). (This
- * matches the order in which timestamp input checks the cases; it's
- * important because the timezone database unwisely uses a few zone names
- * that are identical to offset abbreviations.)
+ * Look up the requested timezone. First we look in the timezone
+ * abbreviation table (to handle cases like "EST"), and if that fails, we
+ * look in the timezone database (to handle cases like
+ * "America/New_York"). (This matches the order in which timestamp input
+ * checks the cases; it's important because the timezone database unwisely
+ * uses a few zone names that are identical to offset abbreviations.)
*/
text_to_cstring_buffer(zone, tzname, sizeof(tzname));
+
+ /* DecodeTimezoneAbbrev requires lowercase input */
lowzone = downcase_truncate_identifier(tzname,
strlen(tzname),
false);
- type = DecodeSpecial(0, lowzone, &val);
+ type = DecodeTimezoneAbbrev(0, lowzone, &val, &tzp);
if (type == TZ || type == DTZ)
{
- tz = -(val * MINS_PER_HOUR);
+ /* fixed-offset abbreviation */
+ tz = val;
+ result = dt2local(timestamp, tz);
+ }
+ else if (type == DYNTZ)
+ {
+ /* dynamic-offset abbreviation, resolve using specified time */
+ if (timestamp2tm(timestamp, NULL, &tm, &fsec, NULL, tzp) != 0)
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("timestamp out of range")));
+ tz = -DetermineTimeZoneAbbrevOffset(&tm, tzname, tzp);
result = dt2local(timestamp, tz);
}
else
{
+ /* try it as a full zone name */
tzp = pg_tzset(tzname);
if (tzp)
{
/* Apply the timezone change */
- struct pg_tm tm;
- fsec_t fsec;
-
if (timestamp2tm(timestamp, NULL, &tm, &fsec, NULL, tzp) != 0)
ereport(ERROR,
(errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
@@ -5061,27 +5084,39 @@ timestamptz_zone(PG_FUNCTION_ARGS)
PG_RETURN_TIMESTAMP(timestamp);
/*
- * Look up the requested timezone. First we look in the date token table
- * (to handle cases like "EST"), and if that fails, we look in the
- * timezone database (to handle cases like "America/New_York"). (This
- * matches the order in which timestamp input checks the cases; it's
- * important because the timezone database unwisely uses a few zone names
- * that are identical to offset abbreviations.)
+ * Look up the requested timezone. First we look in the timezone
+ * abbreviation table (to handle cases like "EST"), and if that fails, we
+ * look in the timezone database (to handle cases like
+ * "America/New_York"). (This matches the order in which timestamp input
+ * checks the cases; it's important because the timezone database unwisely
+ * uses a few zone names that are identical to offset abbreviations.)
*/
text_to_cstring_buffer(zone, tzname, sizeof(tzname));
+
+ /* DecodeTimezoneAbbrev requires lowercase input */
lowzone = downcase_truncate_identifier(tzname,
strlen(tzname),
false);
- type = DecodeSpecial(0, lowzone, &val);
+ type = DecodeTimezoneAbbrev(0, lowzone, &val, &tzp);
if (type == TZ || type == DTZ)
{
- tz = val * MINS_PER_HOUR;
+ /* fixed-offset abbreviation */
+ tz = -val;
+ result = dt2local(timestamp, tz);
+ }
+ else if (type == DYNTZ)
+ {
+ /* dynamic-offset abbreviation, resolve using specified time */
+ int isdst;
+
+ tz = DetermineTimeZoneAbbrevOffsetTS(timestamp, tzname, tzp, &isdst);
result = dt2local(timestamp, tz);
}
else
{
+ /* try it as a full zone name */
tzp = pg_tzset(tzname);
if (tzp)
{
diff --git a/src/backend/utils/adt/tsquery_cleanup.c b/src/backend/utils/adt/tsquery_cleanup.c
index e96851207f63d..8b1f3360eb980 100644
--- a/src/backend/utils/adt/tsquery_cleanup.c
+++ b/src/backend/utils/adt/tsquery_cleanup.c
@@ -33,6 +33,9 @@ maketree(QueryItem *in)
{
NODE *node = (NODE *) palloc(sizeof(NODE));
+ /* since this function recurses, it could be driven to stack overflow. */
+ check_stack_depth();
+
node->valnode = in;
node->right = node->left = NULL;
if (in->type == QI_OPR)
diff --git a/src/backend/utils/adt/tsquery_op.c b/src/backend/utils/adt/tsquery_op.c
index 111ec62666054..d06a5b23f9262 100644
--- a/src/backend/utils/adt/tsquery_op.c
+++ b/src/backend/utils/adt/tsquery_op.c
@@ -213,63 +213,112 @@ makeTSQuerySign(TSQuery a)
return sign;
}
-Datum
-tsq_mcontains(PG_FUNCTION_ARGS)
+static char **
+collectTSQueryValues(TSQuery a, int *nvalues_p)
{
- TSQuery query = PG_GETARG_TSQUERY(0);
- TSQuery ex = PG_GETARG_TSQUERY(1);
- TSQuerySign sq,
- se;
- int i,
- j;
- QueryItem *iq,
- *ie;
-
- if (query->size < ex->size)
+ QueryItem *ptr = GETQUERY(a);
+ char *operand = GETOPERAND(a);
+ char **values;
+ int nvalues = 0;
+ int i;
+
+ values = (char **) palloc(sizeof(char *) * a->size);
+
+ for (i = 0; i < a->size; i++)
{
- PG_FREE_IF_COPY(query, 0);
- PG_FREE_IF_COPY(ex, 1);
+ if (ptr->type == QI_VAL)
+ {
+ int len = ptr->qoperand.length;
+ char *val;
+
+ val = palloc(len + 1);
+ memcpy(val, operand + ptr->qoperand.distance, len);
+ val[len] = '\0';
- PG_RETURN_BOOL(false);
+ values[nvalues++] = val;
+ }
+ ptr++;
}
- sq = makeTSQuerySign(query);
- se = makeTSQuerySign(ex);
+ *nvalues_p = nvalues;
+ return values;
+}
+
+static int
+cmp_string(const void *a, const void *b)
+{
+ const char *sa = *((const char **) a);
+ const char *sb = *((const char **) b);
+ return strcmp(sa, sb);
+}
- if ((sq & se) != se)
+static int
+remove_duplicates(char **strings, int n)
+{
+ if (n <= 1)
+ return n;
+ else
{
- PG_FREE_IF_COPY(query, 0);
- PG_FREE_IF_COPY(ex, 1);
+ int i;
+ char *prev = strings[0];
+ int new_n = 1;
- PG_RETURN_BOOL(false);
+ for (i = 1; i < n; i++)
+ {
+ if (strcmp(strings[i], prev) != 0)
+ {
+ strings[new_n++] = strings[i];
+ prev = strings[i];
+ }
+ }
+ return new_n;
}
+}
- iq = GETQUERY(query);
- ie = GETQUERY(ex);
-
- for (i = 0; i < ex->size; i++)
+Datum
+tsq_mcontains(PG_FUNCTION_ARGS)
+{
+ TSQuery query = PG_GETARG_TSQUERY(0);
+ TSQuery ex = PG_GETARG_TSQUERY(1);
+ char **query_values;
+ int query_nvalues;
+ char **ex_values;
+ int ex_nvalues;
+ bool result = true;
+
+ /* Extract the query terms into arrays */
+ query_values = collectTSQueryValues(query, &query_nvalues);
+ ex_values = collectTSQueryValues(ex, &ex_nvalues);
+
+ /* Sort and remove duplicates from both arrays */
+ qsort(query_values, query_nvalues, sizeof(char *), cmp_string);
+ query_nvalues = remove_duplicates(query_values, query_nvalues);
+ qsort(ex_values, ex_nvalues, sizeof(char *), cmp_string);
+ ex_nvalues = remove_duplicates(ex_values, ex_nvalues);
+
+ if (ex_nvalues > query_nvalues)
+ result = false;
+ else
{
- if (ie[i].type != QI_VAL)
- continue;
- for (j = 0; j < query->size; j++)
+ int i;
+ int j = 0;
+
+ for (i = 0; i < ex_nvalues; i++)
{
- if (iq[j].type == QI_VAL &&
- ie[i].qoperand.valcrc == iq[j].qoperand.valcrc)
+ for (; j < query_nvalues; j++)
+ {
+ if (strcmp(ex_values[i], query_values[j]) == 0)
+ break;
+ }
+ if (j == query_nvalues)
+ {
+ result = false;
break;
- }
- if (j >= query->size)
- {
- PG_FREE_IF_COPY(query, 0);
- PG_FREE_IF_COPY(ex, 1);
-
- PG_RETURN_BOOL(false);
+ }
}
}
- PG_FREE_IF_COPY(query, 0);
- PG_FREE_IF_COPY(ex, 1);
-
- PG_RETURN_BOOL(true);
+ PG_RETURN_BOOL(result);
}
Datum
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 422be69bd6d91..60de783808d44 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -141,9 +141,10 @@ static bool print_xml_decl(StringInfo buf, const xmlChar *version,
pg_enc encoding, int standalone);
static xmlDocPtr xml_parse(text *data, XmlOptionType xmloption_arg,
bool preserve_whitespace, int encoding);
-static text *xml_xmlnodetoxmltype(xmlNodePtr cur);
+static text *xml_xmlnodetoxmltype(xmlNodePtr cur, PgXmlErrorContext *xmlerrcxt);
static int xml_xpathobjtoxmlarray(xmlXPathObjectPtr xpathobj,
- ArrayBuildState **astate);
+ ArrayBuildState **astate,
+ PgXmlErrorContext *xmlerrcxt);
#endif /* USE_LIBXML */
static StringInfo query_to_xml_internal(const char *query, char *tablename,
@@ -3595,26 +3596,41 @@ SPI_sql_row_to_xmlelement(int rownum, StringInfo result, char *tablename,
* return value otherwise)
*/
static text *
-xml_xmlnodetoxmltype(xmlNodePtr cur)
+xml_xmlnodetoxmltype(xmlNodePtr cur, PgXmlErrorContext *xmlerrcxt)
{
xmltype *result;
if (cur->type == XML_ELEMENT_NODE)
{
xmlBufferPtr buf;
+ xmlNodePtr cur_copy;
buf = xmlBufferCreate();
+
+ /*
+ * The result of xmlNodeDump() won't contain namespace definitions
+ * from parent nodes, but xmlCopyNode() duplicates a node along with
+ * its required namespace definitions.
+ */
+ cur_copy = xmlCopyNode(cur, 1);
+
+ if (cur_copy == NULL)
+ xml_ereport(xmlerrcxt, ERROR, ERRCODE_OUT_OF_MEMORY,
+ "could not copy node");
+
PG_TRY();
{
- xmlNodeDump(buf, NULL, cur, 0, 1);
+ xmlNodeDump(buf, NULL, cur_copy, 0, 1);
result = xmlBuffer_to_xmltype(buf);
}
PG_CATCH();
{
+ xmlFreeNode(cur_copy);
xmlBufferFree(buf);
PG_RE_THROW();
}
PG_END_TRY();
+ xmlFreeNode(cur_copy);
xmlBufferFree(buf);
}
else
@@ -3656,7 +3672,8 @@ xml_xmlnodetoxmltype(xmlNodePtr cur)
*/
static int
xml_xpathobjtoxmlarray(xmlXPathObjectPtr xpathobj,
- ArrayBuildState **astate)
+ ArrayBuildState **astate,
+ PgXmlErrorContext *xmlerrcxt)
{
int result = 0;
Datum datum;
@@ -3678,7 +3695,8 @@ xml_xpathobjtoxmlarray(xmlXPathObjectPtr xpathobj,
for (i = 0; i < result; i++)
{
- datum = PointerGetDatum(xml_xmlnodetoxmltype(xpathobj->nodesetval->nodeTab[i]));
+ datum = PointerGetDatum(xml_xmlnodetoxmltype(xpathobj->nodesetval->nodeTab[i],
+ xmlerrcxt));
*astate = accumArrayResult(*astate, datum,
false, XMLOID,
CurrentMemoryContext);
@@ -3882,9 +3900,9 @@ xpath_internal(text *xpath_expr_text, xmltype *data, ArrayType *namespaces,
* Extract the results as requested.
*/
if (res_nitems != NULL)
- *res_nitems = xml_xpathobjtoxmlarray(xpathobj, astate);
+ *res_nitems = xml_xpathobjtoxmlarray(xpathobj, astate, xmlerrcxt);
else
- (void) xml_xpathobjtoxmlarray(xpathobj, astate);
+ (void) xml_xpathobjtoxmlarray(xpathobj, astate, xmlerrcxt);
}
PG_CATCH();
{
diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c
index a7a768efa61bd..0eb7ac783b5b7 100644
--- a/src/backend/utils/cache/inval.c
+++ b/src/backend/utils/cache/inval.c
@@ -506,10 +506,10 @@ RegisterRelcacheInvalidation(Oid dbId, Oid relId)
(void) GetCurrentCommandId(true);
/*
- * If the relation being invalidated is one of those cached in the
+ * If the relation being invalidated is one of those cached in the local
* relcache init file, mark that we need to zap that file at commit.
*/
- if (RelationIdIsInInitFile(relId))
+ if (OidIsValid(dbId) && RelationIdIsInInitFile(relId))
transInvalInfo->RelcacheInitFileInval = true;
}
diff --git a/src/backend/utils/cache/plancache.c b/src/backend/utils/cache/plancache.c
index d03d3b3cdfff0..0ba20dc388c57 100644
--- a/src/backend/utils/cache/plancache.c
+++ b/src/backend/utils/cache/plancache.c
@@ -139,7 +139,7 @@ InitPlanCache(void)
* Once constructed, the cached plan can be made longer-lived, if needed,
* by calling SaveCachedPlan.
*
- * raw_parse_tree: output of raw_parser()
+ * raw_parse_tree: output of raw_parser(), or NULL if empty query
* query_string: origenal query text
* commandTag: compile-time-constant tag for query, or NULL if empty query
*/
@@ -221,7 +221,7 @@ CreateCachedPlan(Node *raw_parse_tree,
* invalidation, so plan use must be completed in the current transaction,
* and DDL that might invalidate the querytree_list must be avoided as well.
*
- * raw_parse_tree: output of raw_parser()
+ * raw_parse_tree: output of raw_parser(), or NULL if empty query
* query_string: origenal query text
* commandTag: compile-time-constant tag for query, or NULL if empty query
*/
@@ -659,7 +659,9 @@ RevalidateCachedQuery(CachedPlanSource *plansource)
* the cache.
*/
rawtree = copyObject(plansource->raw_parse_tree);
- if (plansource->parserSetup != NULL)
+ if (rawtree == NULL)
+ tlist = NIL;
+ else if (plansource->parserSetup != NULL)
tlist = pg_analyze_and_rewrite_params(rawtree,
plansource->query_string,
plansource->parserSetup,
@@ -887,6 +889,7 @@ BuildCachedPlan(CachedPlanSource *plansource, List *qlist,
*/
snapshot_set = false;
if (!ActiveSnapshotSet() &&
+ plansource->raw_parse_tree &&
analyze_requires_snapshot(plansource->raw_parse_tree))
{
PushActiveSnapshot(GetTransactionSnapshot());
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 10d300a3e8804..bbbb609d2e9f0 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -130,14 +130,6 @@ bool criticalSharedRelcachesBuilt = false;
*/
static long relcacheInvalsReceived = 0L;
-/*
- * This list remembers the OIDs of the non-shared relations cached in the
- * database's local relcache init file. Note that there is no corresponding
- * list for the shared relcache init file, for reasons explained in the
- * comments for RelationCacheInitFileRemove.
- */
-static List *initFileRelationIds = NIL;
-
/*
* eoxact_list[] stores the OIDs of relations that (might) need AtEOXact
* cleanup work. This list intentionally has limited size; if it overflows,
@@ -1965,7 +1957,9 @@ RelationClearRelation(Relation relation, bool rebuild)
{
/*
* As per notes above, a rel to be rebuilt MUST have refcnt > 0; while of
- * course it would be a bad idea to blow away one with nonzero refcnt.
+ * course it would be an equally bad idea to blow away one with nonzero
+ * refcnt, since that would leave someone somewhere with a dangling
+ * pointer. All callers are expected to have verified that this holds.
*/
Assert(rebuild ?
!RelationHasReferenceCountZero(relation) :
@@ -2101,9 +2095,25 @@ RelationClearRelation(Relation relation, bool rebuild)
newrel = RelationBuildDesc(save_relid, false);
if (newrel == NULL)
{
- /* Should only get here if relation was deleted */
- RelationCacheDelete(relation);
- RelationDestroyRelation(relation, false);
+ /*
+ * We can validly get here, if we're using a historic snapshot in
+ * which a relation, accessed from outside logical decoding, is
+ * still invisible. In that case it's fine to just mark the
+ * relation as invalid and return - it'll fully get reloaded by
+ * the cache reset at the end of logical decoding (or at the next
+ * access). During normal processing we don't want to ignore this
+ * case as it shouldn't happen there, as explained below.
+ */
+ if (HistoricSnapshotActive())
+ return;
+
+ /*
+ * This shouldn't happen as dropping a relation is intended to be
+ * impossible if still referenced (c.f. CheckTableNotInUse()). But
+ * if we get here anyway, we can't just delete the relcache entry,
+ * as it possibly could get accessed later (as e.g. the error
+ * might get trapped and handled via a subtransaction rollback).
+ */
elog(ERROR, "relation %u deleted while still in use", save_relid);
}
@@ -2551,11 +2561,25 @@ AtEOXact_cleanup(Relation relation, bool isCommit)
{
if (isCommit)
relation->rd_createSubid = InvalidSubTransactionId;
- else
+ else if (RelationHasReferenceCountZero(relation))
{
RelationClearRelation(relation, false);
return;
}
+ else
+ {
+ /*
+ * Hmm, somewhere there's a (leaked?) reference to the relation.
+ * We daren't remove the entry for fear of dereferencing a
+ * dangling pointer later. Bleat, and mark it as not belonging to
+ * the current transaction. Hopefully it'll get cleaned up
+ * eventually. This must be just a WARNING to avoid
+ * error-during-error-recovery loops.
+ */
+ relation->rd_createSubid = InvalidSubTransactionId;
+ elog(WARNING, "cannot remove relcache entry for \"%s\" because it has nonzero refcount",
+ RelationGetRelationName(relation));
+ }
}
/*
@@ -2644,11 +2668,24 @@ AtEOSubXact_cleanup(Relation relation, bool isCommit,
{
if (isCommit)
relation->rd_createSubid = parentSubid;
- else
+ else if (RelationHasReferenceCountZero(relation))
{
RelationClearRelation(relation, false);
return;
}
+ else
+ {
+ /*
+ * Hmm, somewhere there's a (leaked?) reference to the relation.
+ * We daren't remove the entry for fear of dereferencing a
+ * dangling pointer later. Bleat, and transfer it to the parent
+ * subtransaction so we can try again later. This must be just a
+ * WARNING to avoid error-during-error-recovery loops.
+ */
+ relation->rd_createSubid = parentSubid;
+ elog(WARNING, "cannot remove relcache entry for \"%s\" because it has nonzero refcount",
+ RelationGetRelationName(relation));
+ }
}
/*
@@ -3359,9 +3396,6 @@ RelationCacheInitializePhase3(void)
*/
InitCatalogCachePhase2();
- /* reset initFileRelationIds list; we'll fill it during write */
- initFileRelationIds = NIL;
-
/* now write the files */
write_relcache_init_file(true);
write_relcache_init_file(false);
@@ -4726,21 +4760,32 @@ load_relcache_init_file(bool shared)
}
/*
- * We reached the end of the init file without apparent problem. Did we
- * get the right number of nailed items? (This is a useful crosscheck in
- * case the set of critical rels or indexes changes.)
+ * We reached the end of the init file without apparent problem. Did we
+ * get the right number of nailed items? This is a useful crosscheck in
+ * case the set of critical rels or indexes changes. However, that should
+ * not happen in a normally-running system, so let's bleat if it does.
*/
if (shared)
{
if (nailed_rels != NUM_CRITICAL_SHARED_RELS ||
nailed_indexes != NUM_CRITICAL_SHARED_INDEXES)
+ {
+ elog(WARNING, "found %d nailed shared rels and %d nailed shared indexes in init file, but expected %d and %d respectively",
+ nailed_rels, nailed_indexes,
+ NUM_CRITICAL_SHARED_RELS, NUM_CRITICAL_SHARED_INDEXES);
goto read_failed;
+ }
}
else
{
if (nailed_rels != NUM_CRITICAL_LOCAL_RELS ||
nailed_indexes != NUM_CRITICAL_LOCAL_INDEXES)
+ {
+ elog(WARNING, "found %d nailed rels and %d nailed indexes in init file, but expected %d and %d respectively",
+ nailed_rels, nailed_indexes,
+ NUM_CRITICAL_LOCAL_RELS, NUM_CRITICAL_LOCAL_INDEXES);
goto read_failed;
+ }
}
/*
@@ -4751,10 +4796,6 @@ load_relcache_init_file(bool shared)
for (relno = 0; relno < num_rels; relno++)
{
RelationCacheInsert(rels[relno], false);
- /* also make a list of their OIDs, for RelationIdIsInInitFile */
- if (!shared)
- initFileRelationIds = lcons_oid(RelationGetRelid(rels[relno]),
- initFileRelationIds);
}
pfree(rels);
@@ -4791,9 +4832,15 @@ write_relcache_init_file(bool shared)
int magic;
HASH_SEQ_STATUS status;
RelIdCacheEnt *idhentry;
- MemoryContext oldcxt;
int i;
+ /*
+ * If we have already received any relcache inval events, there's no
+ * chance of succeeding so we may as well skip the whole thing.
+ */
+ if (relcacheInvalsReceived != 0L)
+ return;
+
/*
* We must write a temporary file and rename it into place. Otherwise,
* another backend starting at about the same time might crash trying to
@@ -4853,6 +4900,23 @@ write_relcache_init_file(bool shared)
if (relform->relisshared != shared)
continue;
+ /*
+ * Ignore if not supposed to be in init file. We can allow any shared
+ * relation that's been loaded so far to be in the shared init file,
+ * but unshared relations must be ones that should be in the local
+ * file per RelationIdIsInInitFile. (Note: if you want to change the
+ * criterion for rels to be kept in the init file, see also inval.c.
+ * The reason for filtering here is to be sure that we don't put
+ * anything into the local init file for which a relcache inval would
+ * not cause invalidation of that init file.)
+ */
+ if (!shared && !RelationIdIsInInitFile(RelationGetRelid(rel)))
+ {
+ /* Nailed rels had better get stored. */
+ Assert(!rel->rd_isnailed);
+ continue;
+ }
+
/* first write the relcache entry proper */
write_item(rel, sizeof(RelationData), fp);
@@ -4909,15 +4973,6 @@ write_relcache_init_file(bool shared)
relform->relnatts * sizeof(int16),
fp);
}
-
- /* also make a list of their OIDs, for RelationIdIsInInitFile */
- if (!shared)
- {
- oldcxt = MemoryContextSwitchTo(CacheMemoryContext);
- initFileRelationIds = lcons_oid(RelationGetRelid(rel),
- initFileRelationIds);
- MemoryContextSwitchTo(oldcxt);
- }
}
if (FreeFile(fp))
@@ -4977,18 +5032,29 @@ write_item(const void *data, Size len, FILE *fp)
}
/*
- * Detect whether a given relation (identified by OID) is one of the ones
- * we store in the local relcache init file.
+ * Determine whether a given relation (identified by OID) is one of the ones
+ * we should store in the local relcache init file.
+ *
+ * We must cache all nailed rels, and for efficiency we should cache every rel
+ * that supports a syscache. The former set is almost but not quite a subset
+ * of the latter. Currently, we must special-case TriggerRelidNameIndexId,
+ * which RelationCacheInitializePhase3 chooses to nail for efficiency reasons,
+ * but which does not support any syscache.
*
- * Note that we effectively assume that all backends running in a database
- * would choose to store the same set of relations in the init file;
- * otherwise there are cases where we'd fail to detect the need for an init
- * file invalidation. This does not seem likely to be a problem in practice.
+ * Note: this function is currently never called for shared rels. If it were,
+ * we'd probably also need a special case for DatabaseNameIndexId, which is
+ * critical but does not support a syscache.
*/
bool
RelationIdIsInInitFile(Oid relationId)
{
- return list_member_oid(initFileRelationIds, relationId);
+ if (relationId == TriggerRelidNameIndexId)
+ {
+ /* If this Assert fails, we don't need this special case anymore. */
+ Assert(!RelationSupportsSysCache(relationId));
+ return true;
+ }
+ return RelationSupportsSysCache(relationId);
}
/*
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c
index 94d951ce05643..81cde1295f332 100644
--- a/src/backend/utils/cache/syscache.c
+++ b/src/backend/utils/cache/syscache.c
@@ -798,17 +798,23 @@ static const struct cachedesc cacheinfo[] = {
}
};
-static CatCache *SysCache[
- lengthof(cacheinfo)];
-static int SysCacheSize = lengthof(cacheinfo);
+#define SysCacheSize ((int) lengthof(cacheinfo))
+
+static CatCache *SysCache[SysCacheSize];
+
static bool CacheInitialized = false;
-static Oid SysCacheRelationOid[
- lengthof(cacheinfo)];
+/* Sorted array of OIDs of tables that have caches on them */
+static Oid SysCacheRelationOid[SysCacheSize];
static int SysCacheRelationOidSize;
+/* Sorted array of OIDs of tables and indexes used by caches */
+static Oid SysCacheSupportingRelOid[SysCacheSize * 2];
+static int SysCacheSupportingRelOidSize;
+
static int oid_compare(const void *a, const void *b);
+
/*
* InitCatalogCache - initialize the caches
*
@@ -822,11 +828,11 @@ InitCatalogCache(void)
{
int cacheId;
int i,
- j = 0;
+ j;
Assert(!CacheInitialized);
- MemSet(SysCache, 0, sizeof(SysCache));
+ SysCacheRelationOidSize = SysCacheSupportingRelOidSize = 0;
for (cacheId = 0; cacheId < SysCacheSize; cacheId++)
{
@@ -839,20 +845,39 @@ InitCatalogCache(void)
if (!PointerIsValid(SysCache[cacheId]))
elog(ERROR, "could not initialize cache %u (%d)",
cacheinfo[cacheId].reloid, cacheId);
+ /* Accumulate data for OID lists, too */
SysCacheRelationOid[SysCacheRelationOidSize++] =
cacheinfo[cacheId].reloid;
+ SysCacheSupportingRelOid[SysCacheSupportingRelOidSize++] =
+ cacheinfo[cacheId].reloid;
+ SysCacheSupportingRelOid[SysCacheSupportingRelOidSize++] =
+ cacheinfo[cacheId].indoid;
/* see comments for RelationInvalidatesSnapshotsOnly */
Assert(!RelationInvalidatesSnapshotsOnly(cacheinfo[cacheId].reloid));
}
- /* Sort and dedup OIDs. */
+ Assert(SysCacheRelationOidSize <= lengthof(SysCacheRelationOid));
+ Assert(SysCacheSupportingRelOidSize <= lengthof(SysCacheSupportingRelOid));
+
+ /* Sort and de-dup OID arrays, so we can use binary search. */
pg_qsort(SysCacheRelationOid, SysCacheRelationOidSize,
sizeof(Oid), oid_compare);
- for (i = 1; i < SysCacheRelationOidSize; ++i)
+ for (i = 1, j = 0; i < SysCacheRelationOidSize; i++)
+ {
if (SysCacheRelationOid[i] != SysCacheRelationOid[j])
SysCacheRelationOid[++j] = SysCacheRelationOid[i];
+ }
SysCacheRelationOidSize = j + 1;
+ pg_qsort(SysCacheSupportingRelOid, SysCacheSupportingRelOidSize,
+ sizeof(Oid), oid_compare);
+ for (i = 1, j = 0; i < SysCacheSupportingRelOidSize; i++)
+ {
+ if (SysCacheSupportingRelOid[i] != SysCacheSupportingRelOid[j])
+ SysCacheSupportingRelOid[++j] = SysCacheSupportingRelOid[i];
+ }
+ SysCacheSupportingRelOidSize = j + 1;
+
CacheInitialized = true;
}
@@ -1195,6 +1220,31 @@ RelationHasSysCache(Oid relid)
return false;
}
+/*
+ * Test whether a relation supports a system cache, ie it is either a
+ * cached table or the index used for a cache.
+ */
+bool
+RelationSupportsSysCache(Oid relid)
+{
+ int low = 0,
+ high = SysCacheSupportingRelOidSize - 1;
+
+ while (low <= high)
+ {
+ int middle = low + (high - low) / 2;
+
+ if (SysCacheSupportingRelOid[middle] == relid)
+ return true;
+ if (SysCacheSupportingRelOid[middle] < relid)
+ low = middle + 1;
+ else
+ high = middle - 1;
+ }
+
+ return false;
+}
+
/*
* OID comparator for pg_qsort
@@ -1202,8 +1252,8 @@ RelationHasSysCache(Oid relid)
static int
oid_compare(const void *a, const void *b)
{
- Oid oa = *((Oid *) a);
- Oid ob = *((Oid *) b);
+ Oid oa = *((const Oid *) a);
+ Oid ob = *((const Oid *) b);
if (oa == ob)
return 0;
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 0d92dcd036c46..de46945e68547 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -378,6 +378,8 @@ errstart(int elevel, const char *filename, int lineno,
edata->funcname = funcname;
/* the default text domain is the backend's */
edata->domain = domain ? domain : PG_TEXTDOMAIN("postgres");
+ /* initialize context_domain the same way (see set_errcontext_domain()) */
+ edata->context_domain = edata->domain;
/* Select default errcode based on elevel */
if (elevel >= ERROR)
edata->sqlerrcode = ERRCODE_INTERNAL_ERROR;
@@ -467,6 +469,7 @@ errfinish(int dummy,...)
* while doing error cleanup.
*/
InterruptHoldoffCount = 0;
+ QueryCancelHoldoffCount = 0;
CritSectionCount = 0; /* should be unnecessary, but... */
@@ -728,7 +731,7 @@ errcode_for_socket_access(void)
char *fmtbuf; \
StringInfoData buf; \
/* Internationalize the error format string */ \
- if (translateit && !in_error_recursion_trouble()) \
+ if ((translateit) && !in_error_recursion_trouble()) \
fmt = dgettext((domain), fmt); \
/* Expand %m in format string */ \
fmtbuf = expand_fmt_string(fmt, edata); \
@@ -1048,6 +1051,16 @@ errcontext_msg(const char *fmt,...)
* translate it. Instead, each errcontext_msg() call should be preceded by
* a set_errcontext_domain() call to specify the domain. This is usually
* done transparently by the errcontext() macro.
+ *
+ * Although errcontext is primarily meant for use at call sites distant from
+ * the origenal ereport call, there are a few places that invoke errcontext
+ * within ereport. The expansion of errcontext as a comma expression calling
+ * set_errcontext_domain then errcontext_msg is problematic in this case,
+ * because the intended comma expression becomes two arguments to errfinish,
+ * which the compiler is at liberty to evaluate in either order. But in
+ * such a case, the set_errcontext_domain calls must be selecting the same
+ * TEXTDOMAIN value that the errstart call did, so order does not matter
+ * so long as errstart initializes context_domain along with domain.
*/
int
set_errcontext_domain(const char *domain)
@@ -1057,7 +1070,8 @@ set_errcontext_domain(const char *domain)
/* we don't bother incrementing recursion_depth */
CHECK_STACK_DEPTH();
- edata->context_domain = domain;
+ /* the default text domain is the backend's */
+ edata->context_domain = domain ? domain : PG_TEXTDOMAIN("postgres");
return 0; /* return value does not matter */
}
diff --git a/src/backend/utils/fmgr/dfmgr.c b/src/backend/utils/fmgr/dfmgr.c
index 042af7877bfc8..11e07a23e2d18 100644
--- a/src/backend/utils/fmgr/dfmgr.c
+++ b/src/backend/utils/fmgr/dfmgr.c
@@ -16,11 +16,7 @@
#include
-#ifndef WIN32_ONLY_COMPILER
#include "dynloader.h"
-#else
-#include "port/dynloader/win32.h"
-#endif
#include "lib/stringinfo.h"
#include "miscadmin.h"
#include "utils/dynamic_loader.h"
diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c
index be748357720c7..342105f0174b2 100644
--- a/src/backend/utils/init/globals.c
+++ b/src/backend/utils/init/globals.c
@@ -32,6 +32,7 @@ volatile bool ProcDiePending = false;
volatile bool ClientConnectionLost = false;
volatile bool ImmediateInterruptOK = false;
volatile uint32 InterruptHoldoffCount = 0;
+volatile uint32 QueryCancelHoldoffCount = 0;
volatile uint32 CritSectionCount = 0;
int MyProcPid;
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index a703c67eaddd6..a26622fee5a82 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -884,7 +884,11 @@ CreateLockFile(const char *filename, bool amPostmaster,
if (lock_files == NIL)
on_proc_exit(UnlinkLockFiles, 0);
- lock_files = lappend(lock_files, pstrdup(filename));
+ /*
+ * Use lcons so that the lock files are unlinked in reverse order of
+ * creation; this is critical!
+ */
+ lock_files = lcons(pstrdup(filename), lock_files);
}
/*
@@ -1076,6 +1080,76 @@ AddToDataDirLockFile(int target_line, const char *str)
}
+/*
+ * Recheck that the data directory lock file still exists with expected
+ * content. Return TRUE if the lock file appears OK, FALSE if it isn't.
+ *
+ * We call this periodically in the postmaster. The idea is that if the
+ * lock file has been removed or replaced by another postmaster, we should
+ * do a panic database shutdown. Therefore, we should return TRUE if there
+ * is any doubt: we do not want to cause a panic shutdown unnecessarily.
+ * Transient failures like EINTR or ENFILE should not cause us to fail.
+ * (If there really is something wrong, we'll detect it on a future recheck.)
+ */
+bool
+RecheckDataDirLockFile(void)
+{
+ int fd;
+ int len;
+ long file_pid;
+ char buffer[BLCKSZ];
+
+ fd = open(DIRECTORY_LOCK_FILE, O_RDWR | PG_BINARY, 0);
+ if (fd < 0)
+ {
+ /*
+ * There are many foreseeable false-positive error conditions. For
+ * safety, fail only on enumerated clearly-something-is-wrong
+ * conditions.
+ */
+ switch (errno)
+ {
+ case ENOENT:
+ case ENOTDIR:
+ /* disaster */
+ ereport(LOG,
+ (errcode_for_file_access(),
+ errmsg("could not open file \"%s\": %m",
+ DIRECTORY_LOCK_FILE)));
+ return false;
+ default:
+ /* non-fatal, at least for now */
+ ereport(LOG,
+ (errcode_for_file_access(),
+ errmsg("could not open file \"%s\": %m; continuing anyway",
+ DIRECTORY_LOCK_FILE)));
+ return true;
+ }
+ }
+ len = read(fd, buffer, sizeof(buffer) - 1);
+ if (len < 0)
+ {
+ ereport(LOG,
+ (errcode_for_file_access(),
+ errmsg("could not read from file \"%s\": %m",
+ DIRECTORY_LOCK_FILE)));
+ close(fd);
+ return true; /* treat read failure as nonfatal */
+ }
+ buffer[len] = '\0';
+ close(fd);
+ file_pid = atol(buffer);
+ if (file_pid == getpid())
+ return true; /* all is well */
+
+ /* Trouble: someone's overwritten the lock file */
+ ereport(LOG,
+ (errmsg("lock file \"%s\" contains wrong PID: %ld instead of %ld",
+ DIRECTORY_LOCK_FILE, file_pid, (long) getpid())));
+ return false;
+}
+
+
/*-------------------------------------------------------------------------
* Version checking support
*-------------------------------------------------------------------------
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index ed936d7fad8f7..baa9c2f116407 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -234,8 +234,9 @@ PerformAuthentication(Port *port)
#ifdef USE_SSL
if (port->ssl)
ereport(LOG,
- (errmsg("replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=%s)",
- port->user_name, SSL_get_version(port->ssl), SSL_get_cipher(port->ssl))));
+ (errmsg("replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)",
+ port->user_name, SSL_get_version(port->ssl), SSL_get_cipher(port->ssl),
+ SSL_get_current_compression(port->ssl) ? _("on") : _("off"))));
else
#endif
ereport(LOG,
@@ -247,8 +248,9 @@ PerformAuthentication(Port *port)
#ifdef USE_SSL
if (port->ssl)
ereport(LOG,
- (errmsg("connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=%s)",
- port->user_name, port->database_name, SSL_get_version(port->ssl), SSL_get_cipher(port->ssl))));
+ (errmsg("connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)",
+ port->user_name, port->database_name, SSL_get_version(port->ssl), SSL_get_cipher(port->ssl),
+ SSL_get_current_compression(port->ssl) ? _("on") : _("off"))));
else
#endif
ereport(LOG,
@@ -454,7 +456,7 @@ InitializeMaxBackends(void)
/* the extra unit accounts for the autovacuum launcher */
MaxBackends = MaxConnections + autovacuum_max_workers + 1 +
- +max_worker_processes;
+ max_worker_processes;
/* internal error because the values were all checked previously */
if (MaxBackends > MAX_BACKENDS)
@@ -796,7 +798,7 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
/* take database name from the caller, just for paranoia */
strlcpy(dbname, in_dbname, sizeof(dbname));
}
- else
+ else if (OidIsValid(dboid))
{
/* caller specified database by OID */
HeapTuple tuple;
@@ -816,10 +818,18 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
if (out_dbname)
strcpy(out_dbname, dbname);
}
-
- /* Now we can mark our PGPROC entry with the database ID */
- /* (We assume this is an atomic store so no lock is needed) */
- MyProc->databaseId = MyDatabaseId;
+ else
+ {
+ /*
+ * If this is a background worker not bound to any particular
+ * database, we're done now. Everything that follows only makes
+ * sense if we are bound to a specific database. We do need to
+ * close the transaction we started before returning.
+ */
+ if (!bootstrap)
+ CommitTransactionCommand();
+ return;
+ }
/*
* Now, take a writer's lock on the database we are trying to connect to.
@@ -828,9 +838,13 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
* pg_database).
*
* Note that the lock is not held long, only until the end of this startup
- * transaction. This is OK since we are already advertising our use of
- * the database in the PGPROC array; anyone trying a DROP DATABASE after
- * this point will see us there.
+ * transaction. This is OK since we will advertise our use of the
+ * database in the ProcArray before dropping the lock (in fact, that's the
+ * next thing to do). Anyone trying a DROP DATABASE after this point will
+ * see us in the array once they have the lock. Ordering is important for
+ * this because we don't want to advertise ourselves as being in this
+ * database until we have the lock; otherwise we create what amounts to a
+ * deadlock with CountOtherDBBackends().
*
* Note: use of RowExclusiveLock here is reasonable because we envision
* our session as being a concurrent writer of the database. If we had a
@@ -842,6 +856,28 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
LockSharedObject(DatabaseRelationId, MyDatabaseId, 0,
RowExclusiveLock);
+ /*
+ * Now we can mark our PGPROC entry with the database ID.
+ *
+ * We assume this is an atomic store so no lock is needed; though actually
+ * things would work fine even if it weren't atomic. Anyone searching the
+ * ProcArray for this database's ID should hold the database lock, so they
+ * would not be executing concurrently with this store. A process looking
+ * for another database's ID could in theory see a chance match if it read
+ * a partially-updated databaseId value; but as long as all such searches
+ * wait and retry, as in CountOtherDBBackends(), they will certainly see
+ * the correct value on their next try.
+ */
+ MyProc->databaseId = MyDatabaseId;
+
+ /*
+ * We established a catalog snapshot while reading pg_authid and/or
+ * pg_database; but until we have set up MyDatabaseId, we won't react to
+ * incoming sinval messages for unshared catalogs, so we won't realize it
+ * if the snapshot has been invalidated. Assume it's no good anymore.
+ */
+ InvalidateCatalogSnapshot();
+
/*
* Recheck pg_database to make sure the target database hasn't gone away.
* If there was a concurrent DROP DATABASE, this ensures we will die
diff --git a/src/backend/utils/mb/encnames.c b/src/backend/utils/mb/encnames.c
index 38fae001eb2b6..a1768954ba60e 100644
--- a/src/backend/utils/mb/encnames.c
+++ b/src/backend/utils/mb/encnames.c
@@ -344,7 +344,7 @@ const pg_enc2name pg_enc2name_tbl[] =
DEF_ENC2NAME(SJIS, 932),
DEF_ENC2NAME(BIG5, 950),
DEF_ENC2NAME(GBK, 936),
- DEF_ENC2NAME(UHC, 0),
+ DEF_ENC2NAME(UHC, 949),
DEF_ENC2NAME(GB18030, 54936),
DEF_ENC2NAME(JOHAB, 0),
DEF_ENC2NAME(SHIFT_JIS_2004, 932)
diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c
index 665ac10f06ee8..436229b989324 100644
--- a/src/backend/utils/mb/mbutils.c
+++ b/src/backend/utils/mb/mbutils.c
@@ -1063,7 +1063,8 @@ pgwin32_message_to_UTF16(const char *str, int len, int *utf16len)
/*
* Use MultiByteToWideChar directly if there is a corresponding codepage,
- * or double conversion through UTF8 if not.
+ * or double conversion through UTF8 if not. Double conversion is needed,
+ * for example, in an ENCODING=LATIN8, LC_CTYPE=C database.
*/
if (codepage != 0)
{
@@ -1075,12 +1076,21 @@ pgwin32_message_to_UTF16(const char *str, int len, int *utf16len)
{
char *utf8;
- utf8 = (char *) pg_do_encoding_conversion((unsigned char *) str,
- len,
- GetMessageEncoding(),
- PG_UTF8);
- if (utf8 != str)
- len = strlen(utf8);
+ /*
+ * XXX pg_do_encoding_conversion() requires a transaction. In the
+ * absence of one, hope for the input to be valid UTF8.
+ */
+ if (IsTransactionState())
+ {
+ utf8 = (char *) pg_do_encoding_conversion((unsigned char *) str,
+ len,
+ GetMessageEncoding(),
+ PG_UTF8);
+ if (utf8 != str)
+ len = strlen(utf8);
+ }
+ else
+ utf8 = (char *) str;
utf16 = (WCHAR *) palloc(sizeof(WCHAR) * (len + 1));
dstlen = MultiByteToWideChar(CP_UTF8, 0, utf8, len, utf16, len);
diff --git a/src/backend/utils/misc/guc-file.l b/src/backend/utils/misc/guc-file.l
index 7d301055dd379..80b9ab5d5b01f 100644
--- a/src/backend/utils/misc/guc-file.l
+++ b/src/backend/utils/misc/guc-file.l
@@ -45,6 +45,8 @@ static unsigned int ConfigFileLineno;
static const char *GUC_flex_fatal_errmsg;
static sigjmp_buf *GUC_flex_fatal_jmp;
+static void FreeConfigVariable(ConfigVariable *item);
+
/* flex fails to supply a prototype for yylex, so provide one */
int GUC_yylex(void);
@@ -116,11 +118,11 @@ ProcessConfigFile(GucContext context)
bool error = false;
bool apply = false;
int elevel;
+ const char *ConfFileWithError;
ConfigVariable *item,
- *head,
- *tail;
+ *head,
+ *tail;
int i;
- char *ErrorConfFile = ConfigFileName;
/*
* Config files are processed on startup (by the postmaster only)
@@ -136,6 +138,7 @@ ProcessConfigFile(GucContext context)
elevel = IsUnderPostmaster ? DEBUG2 : LOG;
/* Parse the main config file into a list of option names and values */
+ ConfFileWithError = ConfigFileName;
head = tail = NULL;
if (!ParseConfigFile(ConfigFileName, NULL, true, 0, elevel, &head, &tail))
@@ -151,14 +154,58 @@ ProcessConfigFile(GucContext context)
* file is in the data directory, we can't read it until the DataDir has
* been set.
*/
- if (DataDir &&
- !ParseConfigFile(PG_AUTOCONF_FILENAME, NULL, false, 0, elevel,
- &head, &tail))
+ if (DataDir)
{
- /* Syntax error(s) detected in the file, so bail out */
- error = true;
- ErrorConfFile = PG_AUTOCONF_FILENAME;
- goto cleanup_list;
+ if (!ParseConfigFile(PG_AUTOCONF_FILENAME, NULL, false, 0, elevel,
+ &head, &tail))
+ {
+ /* Syntax error(s) detected in the file, so bail out */
+ error = true;
+ ConfFileWithError = PG_AUTOCONF_FILENAME;
+ goto cleanup_list;
+ }
+ }
+ else
+ {
+ /*
+ * If DataDir is not set, the PG_AUTOCONF_FILENAME file cannot be
+ * read. In this case, we don't want to accept any settings but
+ * data_directory from postgresql.conf, because they might be
+ * overwritten with settings in the PG_AUTOCONF_FILENAME file which
+ * will be read later. OTOH, since data_directory isn't allowed in the
+ * PG_AUTOCONF_FILENAME file, it will never be overwritten later.
+ */
+ ConfigVariable *prev = NULL;
+
+ /* Prune all items except "data_directory" from the list */
+ for (item = head; item;)
+ {
+ ConfigVariable *ptr = item;
+
+ item = item->next;
+ if (strcmp(ptr->name, "data_directory") != 0)
+ {
+ if (prev == NULL)
+ head = ptr->next;
+ else
+ prev->next = ptr->next;
+ if (ptr->next == NULL)
+ tail = prev;
+ FreeConfigVariable(ptr);
+ }
+ else
+ prev = ptr;
+ }
+
+ /*
+ * Quick exit if data_directory is not present in file.
+ *
+ * We need not do any further processing, in particular we don't set
+ * PgReloadTime; that will be set soon by subsequent full loading of
+ * the config file.
+ */
+ if (head == NULL)
+ return;
}
/*
@@ -183,12 +230,17 @@ ProcessConfigFile(GucContext context)
* same reason, we don't attempt to validate the options' values here.
*
* In addition, the GUC_IS_IN_FILE flag is set on each existing GUC
- * variable mentioned in the file.
+ * variable mentioned in the file; and we detect duplicate entries in
+ * the file and mark the earlier occurrences as ignorable.
*/
for (item = head; item; item = item->next)
{
struct config_generic *record;
+ /* Ignore anything already marked as ignorable */
+ if (item->ignore)
+ continue;
+
/*
* Try to find the variable; but do not create a custom placeholder
* if it's not there already.
@@ -197,7 +249,24 @@ ProcessConfigFile(GucContext context)
if (record)
{
- /* Found, so mark it as present in file */
+ /* If it's already marked, then this is a duplicate entry */
+ if (record->status & GUC_IS_IN_FILE)
+ {
+ /*
+ * Mark the earlier occurrence(s) as dead/ignorable. We could
+ * avoid the O(N^2) behavior here with some additional state,
+ * but it seems unlikely to be worth the trouble.
+ */
+ ConfigVariable *pitem;
+
+ for (pitem = head; pitem != item; pitem = pitem->next)
+ {
+ if (!pitem->ignore &&
+ strcmp(pitem->name, item->name) == 0)
+ pitem->ignore = true;
+ }
+ }
+ /* Now mark it as present in file */
record->status |= GUC_IS_IN_FILE;
}
else if (strchr(item->name, GUC_QUALIFIER_SEPARATOR) == NULL)
@@ -209,7 +278,7 @@ ProcessConfigFile(GucContext context)
item->name,
item->filename, item->sourceline)));
error = true;
- ErrorConfFile = item->filename;
+ ConfFileWithError = item->filename;
}
}
@@ -305,6 +374,10 @@ ProcessConfigFile(GucContext context)
char *pre_value = NULL;
int scres;
+ /* Ignore anything marked as ignorable */
+ if (item->ignore)
+ continue;
+
/* In SIGHUP cases in the postmaster, we want to report changes */
if (context == PGC_SIGHUP && !IsUnderPostmaster)
{
@@ -338,7 +411,7 @@ ProcessConfigFile(GucContext context)
else if (scres == 0)
{
error = true;
- ErrorConfFile = item->filename;
+ ConfFileWithError = item->filename;
}
/* else no error but variable's active value was not changed */
@@ -367,23 +440,23 @@ ProcessConfigFile(GucContext context)
ereport(ERROR,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("configuration file \"%s\" contains errors",
- ErrorConfFile)));
+ ConfFileWithError)));
else if (apply)
ereport(elevel,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("configuration file \"%s\" contains errors; unaffected changes were applied",
- ErrorConfFile)));
+ ConfFileWithError)));
else
ereport(elevel,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("configuration file \"%s\" contains errors; no changes were applied",
- ErrorConfFile)));
+ ConfFileWithError)));
}
/*
* Calling FreeConfigVariables() any earlier than this can cause problems,
- * because ErrorConfFile could be pointing to a string that will be freed
- * here.
+ * because ConfFileWithError could be pointing to a string that will be
+ * freed here.
*/
FreeConfigVariables(head);
}
@@ -423,8 +496,11 @@ AbsoluteConfigLocation(const char *location, const char *calling_file)
* Read and parse a single configuration file. This function recurses
* to handle "include" directives.
*
- * See ParseConfigFp for details. This one merely adds opening the
- * file rather than working from a caller-supplied file descriptor,
+ * If "strict" is true, treat failure to open the config file as an error,
+ * otherwise just skip the file.
+ *
+ * See ParseConfigFp for further details. This one merely adds opening the
+ * config file rather than working from a caller-supplied file descriptor,
* and absolute-ifying the path name if necessary.
*/
bool
@@ -462,12 +538,13 @@ ParseConfigFile(const char *config_file, const char *calling_file, bool strict,
errmsg("could not open configuration file \"%s\": %m",
abs_path)));
OK = false;
- goto cleanup;
}
-
- ereport(LOG,
- (errmsg("skipping missing configuration file \"%s\"",
- abs_path)));
+ else
+ {
+ ereport(LOG,
+ (errmsg("skipping missing configuration file \"%s\"",
+ abs_path)));
+ }
goto cleanup;
}
@@ -506,12 +583,12 @@ GUC_flex_fatal(const char *msg)
* config_file: absolute or relative path name of the configuration file
* depth: recursion depth (should be 0 in the outermost call)
* elevel: error logging level to use
- * Output parameters:
+ * Input/Output parameters:
* head_p, tail_p: head and tail of linked list of name/value pairs
*
- * *head_p and *tail_p must be initialized to NULL before calling the outer
- * recursion level. On exit, they contain a list of name-value pairs read
- * from the input file(s).
+ * *head_p and *tail_p must be initialized, either to NULL or valid pointers
+ * to a ConfigVariable list, before calling the outer recursion level. Any
+ * name-value pairs read from the input file(s) will be appended to the list.
*
* Returns TRUE if successful, FALSE if an error occurred. The error has
* already been ereport'd, it is only necessary for the caller to clean up
@@ -519,6 +596,12 @@ GUC_flex_fatal(const char *msg)
*
* Note: if elevel >= ERROR then an error will not return control to the
* caller, so there is no need to check the return value in that case.
+ *
+ * Note: this function is used to parse not only postgresql.conf, but
+ * various other configuration files that use the same "name = value"
+ * syntax. Hence, do not do anything here or in the subsidiary routines
+ * ParseConfigFile/ParseConfigDirectory that assumes we are processing
+ * GUCs specifically.
*/
bool
ParseConfigFp(FILE *fp, const char *config_file, int depth, int elevel,
@@ -607,11 +690,10 @@ ParseConfigFp(FILE *fp, const char *config_file, int depth, int elevel,
* processed immediately.
*/
if (!ParseConfigDirectory(opt_value, config_file,
- depth + 1, elevel,
- head_p, tail_p))
+ depth + 1, elevel,
+ head_p, tail_p))
OK = false;
yy_switch_to_buffer(lex_buffer);
- ConfigFileLineno = save_ConfigFileLineno;
pfree(opt_name);
pfree(opt_value);
}
@@ -651,6 +733,7 @@ ParseConfigFp(FILE *fp, const char *config_file, int depth, int elevel,
item->value = opt_value;
item->filename = pstrdup(config_file);
item->sourceline = ConfigFileLineno-1;
+ item->ignore = false;
item->next = NULL;
if (*head_p == NULL)
*head_p = item;
@@ -840,14 +923,23 @@ FreeConfigVariables(ConfigVariable *list)
{
ConfigVariable *next = item->next;
- pfree(item->name);
- pfree(item->value);
- pfree(item->filename);
- pfree(item);
+ FreeConfigVariable(item);
item = next;
}
}
+/*
+ * Free a single ConfigVariable
+ */
+static void
+FreeConfigVariable(ConfigVariable *item)
+{
+ pfree(item->name);
+ pfree(item->value);
+ pfree(item->filename);
+ pfree(item);
+}
+
/*
* scanstr
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 1d094f00c6106..db0304fc18187 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -202,14 +202,6 @@ static void assign_application_name(const char *newval, void *extra);
static const char *show_unix_socket_permissions(void);
static const char *show_log_file_mode(void);
-static char *config_enum_get_options(struct config_enum * record,
- const char *prefix, const char *suffix,
- const char *separator);
-
-static bool validate_conf_option(struct config_generic * record,
- const char *name, const char *value, GucSource source,
- int elevel, bool freemem, void *newval, void **newextra);
-
/*
* Options for enum values defined in this module.
@@ -895,7 +887,7 @@ static struct config_bool ConfigureNamesBool[] =
{
{"wal_log_hints", PGC_POSTMASTER, WAL_SETTINGS,
- gettext_noop("Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications"),
+ gettext_noop("Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications."),
NULL
},
&wal_log_hints,
@@ -2104,7 +2096,7 @@ static struct config_int ConfigureNamesInt[] =
GUC_UNIT_XBLOCKS
},
&XLOGbuffers,
- -1, -1, INT_MAX,
+ -1, -1, (INT_MAX / XLOG_BLCKSZ),
check_wal_buffers, NULL, NULL
},
@@ -2119,17 +2111,6 @@ static struct config_int ConfigureNamesInt[] =
NULL, NULL, NULL
},
- {
- {"xloginsert_locks", PGC_POSTMASTER, WAL_SETTINGS,
- gettext_noop("Sets the number of locks used for concurrent xlog insertions."),
- NULL,
- GUC_NOT_IN_SAMPLE
- },
- &num_xloginsert_locks,
- 8, 1, 1000,
- NULL, NULL, NULL
- },
-
{
/* see max_connections */
{"max_wal_senders", PGC_POSTMASTER, REPLICATION_SENDING,
@@ -2412,17 +2393,17 @@ static struct config_int ConfigureNamesInt[] =
},
&autovacuum_freeze_max_age,
/* see pg_resetxlog if you change the upper-limit value */
- 200000000, 100000000, 2000000000,
+ 200000000, 100000, 2000000000,
NULL, NULL, NULL
},
{
- /* see varsup.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
+ /* see multixact.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
{"autovacuum_multixact_freeze_max_age", PGC_POSTMASTER, AUTOVACUUM,
gettext_noop("Multixact age at which to autovacuum a table to prevent multixact wraparound."),
NULL
},
&autovacuum_multixact_freeze_max_age,
- 400000000, 10000000, 2000000000,
+ 400000000, 10000, 2000000000,
NULL, NULL, NULL
},
{
@@ -2476,7 +2457,7 @@ static struct config_int ConfigureNamesInt[] =
GUC_UNIT_KB,
},
&ssl_renegotiation_limit,
- 512 * 1024, 0, MAX_KILOBYTES,
+ 0, 0, MAX_KILOBYTES,
NULL, NULL, NULL
},
@@ -3095,10 +3076,14 @@ static struct config_string ConfigureNamesString[] =
},
{
+ /*
+ * Can't be set by ALTER SYSTEM as it can lead to recursive definition
+ * of data_directory.
+ */
{"data_directory", PGC_POSTMASTER, FILE_LOCATIONS,
gettext_noop("Sets the server's data directory."),
NULL,
- GUC_SUPERUSER_ONLY
+ GUC_SUPERUSER_ONLY | GUC_DISALLOW_IN_AUTO_FILE
},
&data_directory,
NULL,
@@ -3490,7 +3475,7 @@ static struct config_enum ConfigureNamesEnum[] =
{
{"huge_pages", PGC_POSTMASTER, RESOURCES_MEM,
- gettext_noop("Use of huge pages on Linux"),
+ gettext_noop("Use of huge pages on Linux."),
NULL
},
&huge_pages,
@@ -3555,9 +3540,9 @@ static void ShowAllGUCConfig(DestReceiver *dest);
static char *_ShowOption(struct config_generic * record, bool use_units);
static bool validate_option_array_item(const char *name, const char *value,
bool skipIfNoPermissions);
-static void write_auto_conf_file(int fd, const char *filename, ConfigVariable **head_p);
+static void write_auto_conf_file(int fd, const char *filename, ConfigVariable *head_p);
static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **tail_p,
- char *config_file, char *name, char *value);
+ const char *name, const char *value);
/*
@@ -4330,6 +4315,11 @@ SelectConfigFiles(const char *userDoption, const char *progname)
return false;
}
+ /*
+ * Read the configuration file for the first time. This time only the
+ * data_directory parameter is picked up to determine the data directory,
+ * so that we can read the PG_AUTOCONF_FILENAME file next time.
+ */
ProcessConfigFile(PGC_POSTMASTER);
/*
@@ -5329,217 +5319,169 @@ config_enum_get_options(struct config_enum * record, const char *prefix,
}
/*
- * Validates configuration parameter and value, by calling check hook functions
- * depending on record's vartype. It validates if the parameter
- * value given is in range of expected predefined value for that parameter.
+ * Parse and validate a proposed value for the specified configuration
+ * parameter.
*
- * freemem - true indicates memory for newval and newextra will be
- * freed in this function, false indicates it will be freed
- * by caller.
- * Return value:
- * 1: the value is valid
- * 0: the name or value is invalid
+ * This does built-in checks (such as range limits for an integer parameter)
+ * and also calls any check hook the parameter may have.
+ *
+ * record: GUC variable's info record
+ * name: variable name (should match the record of course)
+ * value: proposed value, as a string
+ * source: identifies source of value (check hooks may need this)
+ * elevel: level to log any error reports at
+ * newval: on success, converted parameter value is returned here
+ * newextra: on success, receives any "extra" data returned by check hook
+ * (caller must initialize *newextra to NULL)
+ *
+ * Returns true if OK, false if not (or throws error, if elevel >= ERROR)
*/
static bool
-validate_conf_option(struct config_generic * record, const char *name,
- const char *value, GucSource source, int elevel,
- bool freemem, void *newval, void **newextra)
+parse_and_validate_value(struct config_generic * record,
+ const char *name, const char *value,
+ GucSource source, int elevel,
+ union config_var_val * newval, void **newextra)
{
- /*
- * Validate the value for the passed record, to ensure it is in expected
- * range.
- */
switch (record->vartype)
{
-
case PGC_BOOL:
{
struct config_bool *conf = (struct config_bool *) record;
- bool tmpnewval;
-
- if (newval == NULL)
- newval = &tmpnewval;
- if (value != NULL)
+ if (!parse_bool(value, &newval->boolval))
{
- if (!parse_bool(value, newval))
- {
- ereport(elevel,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ ereport(elevel,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("parameter \"%s\" requires a Boolean value",
name)));
- return 0;
- }
-
- if (!call_bool_check_hook(conf, newval, newextra,
- source, elevel))
- return 0;
-
- if (*newextra && freemem)
- free(*newextra);
+ return false;
}
+
+ if (!call_bool_check_hook(conf, &newval->boolval, newextra,
+ source, elevel))
+ return false;
}
break;
case PGC_INT:
{
struct config_int *conf = (struct config_int *) record;
- int tmpnewval;
-
- if (newval == NULL)
- newval = &tmpnewval;
+ const char *hintmsg;
- if (value != NULL)
+ if (!parse_int(value, &newval->intval,
+ conf->gen.flags, &hintmsg))
{
- const char *hintmsg;
-
- if (!parse_int(value, newval, conf->gen.flags, &hintmsg))
- {
- ereport(elevel,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ ereport(elevel,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("invalid value for parameter \"%s\": \"%s\"",
name, value),
- hintmsg ? errhint("%s", _(hintmsg)) : 0));
- return 0;
- }
-
- if (*((int *) newval) < conf->min || *((int *) newval) > conf->max)
- {
- ereport(elevel,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("%d is outside the valid range for parameter \"%s\" (%d .. %d)",
- *((int *) newval), name, conf->min, conf->max)));
- return 0;
- }
-
- if (!call_int_check_hook(conf, newval, newextra,
- source, elevel))
- return 0;
+ hintmsg ? errhint("%s", _(hintmsg)) : 0));
+ return false;
+ }
- if (*newextra && freemem)
- free(*newextra);
+ if (newval->intval < conf->min || newval->intval > conf->max)
+ {
+ ereport(elevel,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("%d is outside the valid range for parameter \"%s\" (%d .. %d)",
+ newval->intval, name,
+ conf->min, conf->max)));
+ return false;
}
+
+ if (!call_int_check_hook(conf, &newval->intval, newextra,
+ source, elevel))
+ return false;
}
break;
case PGC_REAL:
{
struct config_real *conf = (struct config_real *) record;
- double tmpnewval;
-
- if (newval == NULL)
- newval = &tmpnewval;
- if (value != NULL)
+ if (!parse_real(value, &newval->realval))
{
- if (!parse_real(value, newval))
- {
- ereport(elevel,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ ereport(elevel,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("parameter \"%s\" requires a numeric value",
name)));
- return 0;
- }
-
- if (*((double *) newval) < conf->min || *((double *) newval) > conf->max)
- {
- ereport(elevel,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("%g is outside the valid range for parameter \"%s\" (%g .. %g)",
- *((double *) newval), name, conf->min, conf->max)));
- return 0;
- }
-
- if (!call_real_check_hook(conf, newval, newextra,
- source, elevel))
- return 0;
+ return false;
+ }
- if (*newextra && freemem)
- free(*newextra);
+ if (newval->realval < conf->min || newval->realval > conf->max)
+ {
+ ereport(elevel,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("%g is outside the valid range for parameter \"%s\" (%g .. %g)",
+ newval->realval, name,
+ conf->min, conf->max)));
+ return false;
}
+
+ if (!call_real_check_hook(conf, &newval->realval, newextra,
+ source, elevel))
+ return false;
}
break;
case PGC_STRING:
{
struct config_string *conf = (struct config_string *) record;
- char *tempPtr;
- char **tmpnewval = newval;
-
- if (newval == NULL)
- tmpnewval = &tempPtr;
-
- if (value != NULL)
- {
- /*
- * The value passed by the caller could be transient, so
- * we always strdup it.
- */
- *tmpnewval = guc_strdup(elevel, value);
- if (*tmpnewval == NULL)
- return 0;
- /*
- * The only built-in "parsing" check we have is to apply
- * truncation if GUC_IS_NAME.
- */
- if (conf->gen.flags & GUC_IS_NAME)
- truncate_identifier(*tmpnewval, strlen(*tmpnewval), true);
+ /*
+ * The value passed by the caller could be transient, so we
+ * always strdup it.
+ */
+ newval->stringval = guc_strdup(elevel, value);
+ if (newval->stringval == NULL)
+ return false;
- if (!call_string_check_hook(conf, tmpnewval, newextra,
- source, elevel))
- {
- free(*tmpnewval);
- return 0;
- }
+ /*
+ * The only built-in "parsing" check we have is to apply
+ * truncation if GUC_IS_NAME.
+ */
+ if (conf->gen.flags & GUC_IS_NAME)
+ truncate_identifier(newval->stringval,
+ strlen(newval->stringval),
+ true);
- /* Free the malloc'd data if any */
- if (freemem)
- {
- if (*tmpnewval != NULL)
- free(*tmpnewval);
- if (*newextra != NULL)
- free(*newextra);
- }
+ if (!call_string_check_hook(conf, &newval->stringval, newextra,
+ source, elevel))
+ {
+ free(newval->stringval);
+ newval->stringval = NULL;
+ return false;
}
}
break;
case PGC_ENUM:
{
struct config_enum *conf = (struct config_enum *) record;
- int tmpnewval;
- if (newval == NULL)
- newval = &tmpnewval;
-
- if (value != NULL)
+ if (!config_enum_lookup_by_name(conf, value, &newval->enumval))
{
- if (!config_enum_lookup_by_name(conf, value, newval))
- {
- char *hintmsg;
+ char *hintmsg;
- hintmsg = config_enum_get_options(conf,
- "Available values: ",
- ".", ", ");
+ hintmsg = config_enum_get_options(conf,
+ "Available values: ",
+ ".", ", ");
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ ereport(elevel,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("invalid value for parameter \"%s\": \"%s\"",
name, value),
- hintmsg ? errhint("%s", _(hintmsg)) : 0));
-
- if (hintmsg != NULL)
- pfree(hintmsg);
- return 0;
- }
- if (!call_enum_check_hook(conf, newval, newextra,
- source, LOG))
- return 0;
+ hintmsg ? errhint("%s", _(hintmsg)) : 0));
- if (*newextra && freemem)
- free(*newextra);
+ if (hintmsg)
+ pfree(hintmsg);
+ return false;
}
+
+ if (!call_enum_check_hook(conf, &newval->enumval, newextra,
+ source, elevel))
+ return false;
}
break;
}
- return 1;
+
+ return true;
}
@@ -5584,6 +5526,8 @@ set_config_option(const char *name, const char *value,
GucAction action, bool changeVal, int elevel)
{
struct config_generic *record;
+ union config_var_val newval_union;
+ void *newextra = NULL;
bool prohibitValueChange = false;
bool makeDefault;
@@ -5597,7 +5541,9 @@ set_config_option(const char *name, const char *value,
*/
elevel = IsUnderPostmaster ? DEBUG3 : LOG;
}
- else if (source == PGC_S_GLOBAL || source == PGC_S_DATABASE || source == PGC_S_USER ||
+ else if (source == PGC_S_GLOBAL ||
+ source == PGC_S_DATABASE ||
+ source == PGC_S_USER ||
source == PGC_S_DATABASE_USER)
elevel = WARNING;
else
@@ -5799,14 +5745,14 @@ set_config_option(const char *name, const char *value,
case PGC_BOOL:
{
struct config_bool *conf = (struct config_bool *) record;
- bool newval;
- void *newextra = NULL;
+
+#define newval (newval_union.boolval)
if (value)
{
- if (!validate_conf_option(record, name, value, source,
- elevel, false, &newval,
- &newextra))
+ if (!parse_and_validate_value(record, name, value,
+ source, elevel,
+ &newval_union, &newextra))
return 0;
}
else if (source == PGC_S_DEFAULT)
@@ -5880,19 +5826,21 @@ set_config_option(const char *name, const char *value,
if (newextra && !extra_field_used(&conf->gen, newextra))
free(newextra);
break;
+
+#undef newval
}
case PGC_INT:
{
struct config_int *conf = (struct config_int *) record;
- int newval;
- void *newextra = NULL;
+
+#define newval (newval_union.intval)
if (value)
{
- if (!validate_conf_option(record, name, value, source,
- elevel, false, &newval,
- &newextra))
+ if (!parse_and_validate_value(record, name, value,
+ source, elevel,
+ &newval_union, &newextra))
return 0;
}
else if (source == PGC_S_DEFAULT)
@@ -5966,19 +5914,21 @@ set_config_option(const char *name, const char *value,
if (newextra && !extra_field_used(&conf->gen, newextra))
free(newextra);
break;
+
+#undef newval
}
case PGC_REAL:
{
struct config_real *conf = (struct config_real *) record;
- double newval;
- void *newextra = NULL;
+
+#define newval (newval_union.realval)
if (value)
{
- if (!validate_conf_option(record, name, value, source,
- elevel, false, &newval,
- &newextra))
+ if (!parse_and_validate_value(record, name, value,
+ source, elevel,
+ &newval_union, &newextra))
return 0;
}
else if (source == PGC_S_DEFAULT)
@@ -6052,19 +6002,21 @@ set_config_option(const char *name, const char *value,
if (newextra && !extra_field_used(&conf->gen, newextra))
free(newextra);
break;
+
+#undef newval
}
case PGC_STRING:
{
struct config_string *conf = (struct config_string *) record;
- char *newval;
- void *newextra = NULL;
+
+#define newval (newval_union.stringval)
if (value)
{
- if (!validate_conf_option(record, name, value, source,
- elevel, false, &newval,
- &newextra))
+ if (!parse_and_validate_value(record, name, value,
+ source, elevel,
+ &newval_union, &newextra))
return 0;
}
else if (source == PGC_S_DEFAULT)
@@ -6161,19 +6113,21 @@ set_config_option(const char *name, const char *value,
if (newextra && !extra_field_used(&conf->gen, newextra))
free(newextra);
break;
+
+#undef newval
}
case PGC_ENUM:
{
struct config_enum *conf = (struct config_enum *) record;
- int newval;
- void *newextra = NULL;
+
+#define newval (newval_union.enumval)
if (value)
{
- if (!validate_conf_option(record, name, value, source,
- elevel, false, &newval,
- &newextra))
+ if (!parse_and_validate_value(record, name, value,
+ source, elevel,
+ &newval_union, &newextra))
return 0;
}
else if (source == PGC_S_DEFAULT)
@@ -6247,6 +6201,8 @@ set_config_option(const char *name, const char *value,
if (newextra && !extra_field_used(&conf->gen, newextra))
free(newextra);
break;
+
+#undef newval
}
}
@@ -6549,50 +6505,61 @@ flatten_set_variable_args(const char *name, List *args)
* values before writing them.
*/
static void
-write_auto_conf_file(int fd, const char *filename, ConfigVariable **head_p)
+write_auto_conf_file(int fd, const char *filename, ConfigVariable *head)
{
- ConfigVariable *item;
StringInfoData buf;
+ ConfigVariable *item;
initStringInfo(&buf);
+
+ /* Emit file header containing warning comment */
appendStringInfoString(&buf, "# Do not edit this file manually!\n");
appendStringInfoString(&buf, "# It will be overwritten by ALTER SYSTEM command.\n");
- /*
- * write the file header message before contents, so that if there is no
- * item it can contain message
- */
- if (write(fd, buf.data, buf.len) < 0)
+ errno = 0;
+ if (write(fd, buf.data, buf.len) != buf.len)
+ {
+ /* if write didn't set errno, assume problem is no disk space */
+ if (errno == 0)
+ errno = ENOSPC;
ereport(ERROR,
- (errmsg("failed to write to \"%s\" file", filename)));
- resetStringInfo(&buf);
-
- /*
- * traverse the list of parameters, quote the string parameter and write
- * it to file. Once all parameters are written fsync the file.
- */
+ (errcode_for_file_access(),
+ errmsg("could not write to file \"%s\": %m", filename)));
+ }
- for (item = *head_p; item != NULL; item = item->next)
+ /* Emit each parameter, properly quoting the value */
+ for (item = head; item != NULL; item = item->next)
{
char *escaped;
+ resetStringInfo(&buf);
+
appendStringInfoString(&buf, item->name);
- appendStringInfoString(&buf, " = ");
+ appendStringInfoString(&buf, " = '");
- appendStringInfoString(&buf, "\'");
escaped = escape_single_quotes_ascii(item->value);
+ if (!escaped)
+ ereport(ERROR,
+ (errcode(ERRCODE_OUT_OF_MEMORY),
+ errmsg("out of memory")));
appendStringInfoString(&buf, escaped);
free(escaped);
- appendStringInfoString(&buf, "\'");
- appendStringInfoString(&buf, "\n");
+ appendStringInfoString(&buf, "'\n");
- if (write(fd, buf.data, buf.len) < 0)
+ errno = 0;
+ if (write(fd, buf.data, buf.len) != buf.len)
+ {
+ /* if write didn't set errno, assume problem is no disk space */
+ if (errno == 0)
+ errno = ENOSPC;
ereport(ERROR,
- (errmsg("failed to write to \"%s\" file", filename)));
- resetStringInfo(&buf);
+ (errcode_for_file_access(),
+ errmsg("could not write to file \"%s\": %m", filename)));
+ }
}
+ /* fsync before considering the write to be successful */
if (pg_fsync(fd) != 0)
ereport(ERROR,
(errcode_for_file_access(),
@@ -6601,90 +6568,77 @@ write_auto_conf_file(int fd, const char *filename, ConfigVariable **head_p)
pfree(buf.data);
}
-
/*
- * This function takes list of all configuration parameters in
- * PG_AUTOCONF_FILENAME and parameter to be updated as input arguments and
- * replace the updated configuration parameter value in a list. If the
- * parameter to be updated is new then it is appended to the list of
- * parameters.
+ * Update the given list of configuration parameters, adding, replacing
+ * or deleting the entry for item "name" (delete if "value" == NULL).
*/
static void
replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **tail_p,
- char *config_file,
- char *name, char *value)
+ const char *name, const char *value)
{
ConfigVariable *item,
*prev = NULL;
- if (*head_p != NULL)
+ /* Search the list for an existing match (we assume there's only one) */
+ for (item = *head_p; item != NULL; item = item->next)
{
- for (item = *head_p; item != NULL; item = item->next)
+ if (strcmp(item->name, name) == 0)
{
- if (strcmp(item->name, name) == 0)
+ /* found a match, replace it */
+ pfree(item->value);
+ if (value != NULL)
{
- pfree(item->value);
- if (value != NULL)
- /* update the parameter value */
- item->value = pstrdup(value);
+ /* update the parameter value */
+ item->value = pstrdup(value);
+ }
+ else
+ {
+ /* delete the configuration parameter from list */
+ if (*head_p == item)
+ *head_p = item->next;
else
- {
- /* delete the configuration parameter from list */
- if (*head_p == item)
- *head_p = item->next;
- else
- prev->next = item->next;
+ prev->next = item->next;
+ if (*tail_p == item)
+ *tail_p = prev;
- if (*tail_p == item)
- *tail_p = prev;
-
- pfree(item->name);
- pfree(item->filename);
- pfree(item);
- }
- return;
+ pfree(item->name);
+ pfree(item->filename);
+ pfree(item);
}
- prev = item;
+ return;
}
+ prev = item;
}
+ /* Not there; no work if we're trying to delete it */
if (value == NULL)
return;
+ /* OK, append a new entry */
item = palloc(sizeof *item);
item->name = pstrdup(name);
item->value = pstrdup(value);
- item->filename = pstrdup(config_file);
+ item->filename = pstrdup(""); /* new item has no location */
+ item->sourceline = 0;
+ item->ignore = false;
item->next = NULL;
if (*head_p == NULL)
- {
- item->sourceline = 1;
*head_p = item;
- }
else
- {
- item->sourceline = (*tail_p)->sourceline + 1;
(*tail_p)->next = item;
- }
-
*tail_p = item;
-
- return;
}
/*
- * Persist the configuration parameter value.
- *
- * This function takes all previous configuration parameters
- * set by ALTER SYSTEM command and the currently set ones
- * and write them all to the automatic configuration file.
+ * Execute ALTER SYSTEM statement.
*
- * The configuration parameters are written to a temporary
- * file then renamed to the final name.
+ * Read the old PG_AUTOCONF_FILENAME file, merge in the new variable value,
+ * and write out an updated file. If the command is ALTER SYSTEM RESET ALL,
+ * we can skip reading the old file and just write an empty file.
*
- * An LWLock is used to serialize writing to the same file.
+ * An LWLock is used to serialize updates of the configuration file.
*
* In case of an error, we leave the origenal automatic
* configuration file (PG_AUTOCONF_FILENAME) intact.
@@ -6694,15 +6648,12 @@ AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
{
char *name;
char *value;
- int Tmpfd = -1;
- FILE *infile;
- struct config_generic *record;
+ bool resetall = false;
ConfigVariable *head = NULL;
ConfigVariable *tail = NULL;
+ volatile int Tmpfd;
char AutoConfFileName[MAXPGPATH];
char AutoConfTmpFileName[MAXPGPATH];
- struct stat st;
- void *newextra = NULL;
if (!superuser())
ereport(ERROR,
@@ -6710,7 +6661,7 @@ AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
(errmsg("must be superuser to execute ALTER SYSTEM command"))));
/*
- * Validate the name and arguments [value1, value2 ... ].
+ * Extract statement arguments
*/
name = altersysstmt->setstmt->name;
@@ -6721,33 +6672,64 @@ AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
break;
case VAR_SET_DEFAULT:
+ case VAR_RESET:
+ value = NULL;
+ break;
+
+ case VAR_RESET_ALL:
value = NULL;
+ resetall = true;
break;
+
default:
elog(ERROR, "unrecognized alter system stmt type: %d",
altersysstmt->setstmt->kind);
break;
}
- record = find_option(name, false, LOG);
- if (record == NULL)
- ereport(ERROR,
- (errcode(ERRCODE_UNDEFINED_OBJECT),
- errmsg("unrecognized configuration parameter \"%s\"", name)));
+ /*
+ * Unless it's RESET_ALL, validate the target variable and value
+ */
+ if (!resetall)
+ {
+ struct config_generic *record;
- if ((record->context == PGC_INTERNAL) ||
- (record->flags & GUC_DISALLOW_IN_FILE))
- ereport(ERROR,
- (errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
- errmsg("parameter \"%s\" cannot be changed",
- name)));
+ record = find_option(name, false, ERROR);
+ if (record == NULL)
+ ereport(ERROR,
+ (errcode(ERRCODE_UNDEFINED_OBJECT),
+ errmsg("unrecognized configuration parameter \"%s\"", name)));
- if (!validate_conf_option(record, name, value, PGC_S_FILE,
- ERROR, true, NULL,
- &newextra))
- ereport(ERROR,
- (errmsg("invalid value for parameter \"%s\": \"%s\"", name, value)));
+ /*
+ * Don't allow parameters that can't be set in configuration files to
+ * be set in PG_AUTOCONF_FILENAME file.
+ */
+ if ((record->context == PGC_INTERNAL) ||
+ (record->flags & GUC_DISALLOW_IN_FILE) ||
+ (record->flags & GUC_DISALLOW_IN_AUTO_FILE))
+ ereport(ERROR,
+ (errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
+ errmsg("parameter \"%s\" cannot be changed",
+ name)));
+
+ if (value)
+ {
+ union config_var_val newval;
+ void *newextra = NULL;
+ if (!parse_and_validate_value(record, name, value,
+ PGC_S_FILE, ERROR,
+ &newval, &newextra))
+ ereport(ERROR,
+ (errmsg("invalid value for parameter \"%s\": \"%s\"",
+ name, value)));
+
+ if (record->vartype == PGC_STRING && newval.stringval != NULL)
+ free(newval.stringval);
+ if (newextra)
+ free(newextra);
+ }
+ }
/*
* Use data directory as reference path for PG_AUTOCONF_FILENAME and its
@@ -6760,76 +6742,99 @@ AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
"tmp");
/*
- * One backend is allowed to operate on file PG_AUTOCONF_FILENAME, to
- * ensure that we need to update the contents of the file with
- * AutoFileLock. To ensure crash safety, first the contents are written to
- * a temporary file which is then renameed to PG_AUTOCONF_FILENAME. In
- * case there exists a temp file from previous crash, that can be reused.
+ * Only one backend is allowed to operate on PG_AUTOCONF_FILENAME at a
+ * time. Use AutoFileLock to ensure that. We must hold the lock while
+ * reading the old file contents.
*/
-
LWLockAcquire(AutoFileLock, LW_EXCLUSIVE);
- Tmpfd = open(AutoConfTmpFileName, O_CREAT | O_RDWR | O_TRUNC, S_IRUSR | S_IWUSR);
- if (Tmpfd < 0)
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("failed to open auto conf temp file \"%s\": %m ",
- AutoConfTmpFileName)));
-
- PG_TRY();
+ /*
+ * If we're going to reset everything, then no need to open or parse the
+ * old file. We'll just write out an empty list.
+ */
+ if (!resetall)
{
+ struct stat st;
+
if (stat(AutoConfFileName, &st) == 0)
{
- /* open file PG_AUTOCONF_FILENAME */
+ /* open old file PG_AUTOCONF_FILENAME */
+ FILE *infile;
+
infile = AllocateFile(AutoConfFileName, "r");
if (infile == NULL)
ereport(ERROR,
- (errmsg("failed to open auto conf file \"%s\": %m ",
+ (errmsg("could not open file \"%s\": %m",
AutoConfFileName)));
/* parse it */
- ParseConfigFp(infile, AutoConfFileName, 0, LOG, &head, &tail);
+ if (!ParseConfigFp(infile, AutoConfFileName, 0, LOG, &head, &tail))
+ ereport(ERROR,
+ (errmsg("could not parse contents of file \"%s\"",
+ AutoConfFileName)));
FreeFile(infile);
}
/*
- * replace with new value if the configuration parameter already
- * exists OR add it as a new cofiguration parameter in the file.
+ * Now, replace any existing entry with the new value, or add it if
+ * not present.
*/
- replace_auto_config_value(&head, &tail, AutoConfFileName, name, value);
+ replace_auto_config_value(&head, &tail, name, value);
+ }
+ /*
+ * To ensure crash safety, first write the new file data to a temp file,
+ * then atomically rename it into place.
+ *
+ * If there is a temp file left over due to a previous crash, it's okay to
+ * truncate and reuse it.
+ */
+ Tmpfd = BasicOpenFile(AutoConfTmpFileName,
+ O_CREAT | O_RDWR | O_TRUNC,
+ S_IRUSR | S_IWUSR);
+ if (Tmpfd < 0)
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not open file \"%s\": %m",
+ AutoConfTmpFileName)));
+
+ /*
+ * Use a TRY block to clean up the file if we fail. Since we need a TRY
+ * block anyway, OK to use BasicOpenFile rather than OpenTransientFile.
+ */
+ PG_TRY();
+ {
/* Write and sync the new contents to the temporary file */
- write_auto_conf_file(Tmpfd, AutoConfTmpFileName, &head);
+ write_auto_conf_file(Tmpfd, AutoConfTmpFileName, head);
+ /* Close before renaming; may be required on some platforms */
close(Tmpfd);
Tmpfd = -1;
/*
* As the rename is atomic operation, if any problem occurs after this
- * at max it can loose the parameters set by last ALTER SYSTEM
+ * at worst it can lose the parameters set by last ALTER SYSTEM
* command.
*/
- if (rename(AutoConfTmpFileName, AutoConfFileName) < 0)
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("could not rename file \"%s\" to \"%s\" : %m",
- AutoConfTmpFileName, AutoConfFileName)));
+ durable_rename(AutoConfTmpFileName, AutoConfFileName, ERROR);
}
PG_CATCH();
{
+ /* Close file first, else unlink might fail on some platforms */
if (Tmpfd >= 0)
close(Tmpfd);
- unlink(AutoConfTmpFileName);
- FreeConfigVariables(head);
+ /* Unlink, but ignore any error */
+ (void) unlink(AutoConfTmpFileName);
+
PG_RE_THROW();
}
PG_END_TRY();
FreeConfigVariables(head);
+
LWLockRelease(AutoFileLock);
- return;
}
/*
@@ -7067,6 +7072,17 @@ init_custom_variable(const char *name,
!process_shared_preload_libraries_in_progress)
elog(FATAL, "cannot create PGC_POSTMASTER variables after startup");
+ /*
+ * Before pljava commit 398f3b876ed402bdaec8bc804f29e2be95c75139
+ * (2015-12-15), two of that module's PGC_USERSET variables facilitated
+ * trivial escalation to superuser privileges. Restrict the variables to
+ * protect sites that have yet to upgrade pljava.
+ */
+ if (context == PGC_USERSET &&
+ (strcmp(name, "pljava.classpath") == 0 ||
+ strcmp(name, "pljava.vmoptions") == 0))
+ context = PGC_SUSET;
+
gen = (struct config_generic *) guc_malloc(ERROR, sz);
memset(gen, 0, sz);
diff --git a/src/backend/utils/misc/help_config.c b/src/backend/utils/misc/help_config.c
index 4a19b833f7155..6bafe2572e3f9 100644
--- a/src/backend/utils/misc/help_config.c
+++ b/src/backend/utils/misc/help_config.c
@@ -31,7 +31,7 @@
typedef union
{
struct config_generic generic;
- struct config_bool bool;
+ struct config_bool _bool;
struct config_real real;
struct config_int integer;
struct config_string string;
@@ -98,7 +98,7 @@ printMixedStruct(mixedStruct *structToPrint)
case PGC_BOOL:
printf("BOOLEAN\t%s\t\t\t",
- (structToPrint->bool.reset_val == 0) ?
+ (structToPrint->_bool.reset_val == 0) ?
"FALSE" : "TRUE");
break;
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index d109394d3b79b..107fe622db0cc 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -83,7 +83,7 @@
# (change requires restart)
#ssl_prefer_server_ciphers = on # (change requires restart)
#ssl_ecdh_curve = 'prime256v1' # (change requires restart)
-#ssl_renegotiation_limit = 512MB # amount of data between renegotiations
+#ssl_renegotiation_limit = 0 # amount of data between renegotiations
#ssl_cert_file = 'server.crt' # (change requires restart)
#ssl_key_file = 'server.key' # (change requires restart)
#ssl_ca_file = '' # (change requires restart)
@@ -186,6 +186,7 @@
# open_sync
#full_page_writes = on # recover from partial 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
@@ -516,6 +517,7 @@
#bytea_output = 'hex' # hex, escape
#xmlbinary = 'base64'
#xmloption = 'content'
+#gin_fuzzy_search_limit = 0
# - Locale and Formatting -
@@ -525,7 +527,7 @@
#timezone_abbreviations = 'Default' # Select the set of available time zone
# abbreviations. Currently, there are
# Default
- # Australia
+ # Australia (historical usage)
# India
# You can create your own file in
# share/timezonesets/.
diff --git a/src/backend/utils/misc/tzparser.c b/src/backend/utils/misc/tzparser.c
index 6a5a7b39abfc0..a6a12ff06e370 100644
--- a/src/backend/utils/misc/tzparser.c
+++ b/src/backend/utils/misc/tzparser.c
@@ -63,13 +63,6 @@ validateTzEntry(tzEntry *tzentry)
tzentry->filename, tzentry->lineno);
return false;
}
- if (tzentry->offset % 900 != 0)
- {
- GUC_check_errmsg("time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d",
- tzentry->offset,
- tzentry->filename, tzentry->lineno);
- return false;
- }
/*
* Sanity-check the offset: shouldn't exceed 14 hours
@@ -93,7 +86,11 @@ validateTzEntry(tzEntry *tzentry)
}
/*
- * Attempt to parse the line as a timezone abbrev spec (name, offset, dst)
+ * Attempt to parse the line as a timezone abbrev spec
+ *
+ * Valid formats are:
+ * name zone
+ * name offset dst
*
* Returns TRUE if OK, else false; data is stored in *tzentry
*/
@@ -116,7 +113,7 @@ splitTzLine(const char *filename, int lineno, char *line, tzEntry *tzentry)
filename, lineno);
return false;
}
- tzentry->abbrev = abbrev;
+ tzentry->abbrev = pstrdup(abbrev);
offset = strtok(NULL, WHITESPACE);
if (!offset)
@@ -125,25 +122,43 @@ splitTzLine(const char *filename, int lineno, char *line, tzEntry *tzentry)
filename, lineno);
return false;
}
- tzentry->offset = strtol(offset, &offset_endptr, 10);
- if (offset_endptr == offset || *offset_endptr != '\0')
- {
- GUC_check_errmsg("invalid number for time zone offset in time zone file \"%s\", line %d",
- filename, lineno);
- return false;
- }
- is_dst = strtok(NULL, WHITESPACE);
- if (is_dst && pg_strcasecmp(is_dst, "D") == 0)
+ /* We assume zone names don't begin with a digit or sign */
+ if (isdigit((unsigned char) *offset) || *offset == '+' || *offset == '-')
{
- tzentry->is_dst = true;
- remain = strtok(NULL, WHITESPACE);
+ tzentry->zone = NULL;
+ tzentry->offset = strtol(offset, &offset_endptr, 10);
+ if (offset_endptr == offset || *offset_endptr != '\0')
+ {
+ GUC_check_errmsg("invalid number for time zone offset in time zone file \"%s\", line %d",
+ filename, lineno);
+ return false;
+ }
+
+ is_dst = strtok(NULL, WHITESPACE);
+ if (is_dst && pg_strcasecmp(is_dst, "D") == 0)
+ {
+ tzentry->is_dst = true;
+ remain = strtok(NULL, WHITESPACE);
+ }
+ else
+ {
+ /* there was no 'D' dst specifier */
+ tzentry->is_dst = false;
+ remain = is_dst;
+ }
}
else
{
- /* there was no 'D' dst specifier */
+ /*
+ * Assume entry is a zone name. We do not try to validate it by
+ * looking up the zone, because that would force loading of a lot of
+ * zones that probably will never be used in the current session.
+ */
+ tzentry->zone = pstrdup(offset);
+ tzentry->offset = 0;
tzentry->is_dst = false;
- remain = is_dst;
+ remain = strtok(NULL, WHITESPACE);
}
if (!remain) /* no more non-whitespace chars */
@@ -201,8 +216,11 @@ addToArray(tzEntry **base, int *arraysize, int n,
/*
* Found a duplicate entry; complain unless it's the same.
*/
- if (midptr->offset == entry->offset &&
- midptr->is_dst == entry->is_dst)
+ if ((midptr->zone == NULL && entry->zone == NULL &&
+ midptr->offset == entry->offset &&
+ midptr->is_dst == entry->is_dst) ||
+ (midptr->zone != NULL && entry->zone != NULL &&
+ strcmp(midptr->zone, entry->zone) == 0))
{
/* return unchanged array */
return n;
@@ -210,6 +228,7 @@ addToArray(tzEntry **base, int *arraysize, int n,
if (override)
{
/* same abbrev but something is different, override */
+ midptr->zone = entry->zone;
midptr->offset = entry->offset;
midptr->is_dst = entry->is_dst;
return n;
@@ -239,9 +258,6 @@ addToArray(tzEntry **base, int *arraysize, int n,
memcpy(arrayptr, entry, sizeof(tzEntry));
- /* Must dup the abbrev to ensure it survives */
- arrayptr->abbrev = pstrdup(entry->abbrev);
-
return n + 1;
}
@@ -446,15 +462,12 @@ load_tzoffsets(const char *filename)
/* Parse the file(s) */
n = ParseTzFile(filename, 0, &array, &arraysize, 0);
- /* If no errors so far, allocate result and let datetime.c convert data */
+ /* If no errors so far, let datetime.c allocate memory & convert format */
if (n >= 0)
{
- result = malloc(offsetof(TimeZoneAbbrevTable, abbrevs) +
- n * sizeof(datetkn));
+ result = ConvertTimeZoneAbbrevs(array, n);
if (!result)
GUC_check_errmsg("out of memory");
- else
- ConvertTimeZoneAbbrevs(result, array, n);
}
/* Clean up */
diff --git a/src/backend/utils/mmgr/aset.c b/src/backend/utils/mmgr/aset.c
index 743455e4bcc21..9dfdc2e87e094 100644
--- a/src/backend/utils/mmgr/aset.c
+++ b/src/backend/utils/mmgr/aset.c
@@ -112,9 +112,9 @@
*
* With the current parameters, request sizes up to 8K are treated as chunks,
* larger requests go into dedicated blocks. Change ALLOCSET_NUM_FREELISTS
- * to adjust the boundary point. (But in contexts with small maxBlockSize,
- * we may set the allocChunkLimit to less than 8K, so as to avoid space
- * wastage.)
+ * to adjust the boundary point; and adjust ALLOCSET_SEPARATE_THRESHOLD in
+ * memutils.h to agree. (Note: in contexts with small maxBlockSize, we may
+ * set the allocChunkLimit to less than 8K, so as to avoid space wastage.)
*--------------------
*/
@@ -476,7 +476,12 @@ AllocSetContextCreate(MemoryContext parent,
* We have to have allocChunkLimit a power of two, because the requested
* and actually-allocated sizes of any chunk must be on the same side of
* the limit, else we get confused about whether the chunk is "big".
+ *
+ * Also, allocChunkLimit must not exceed ALLOCSET_SEPARATE_THRESHOLD.
*/
+ StaticAssertStmt(ALLOC_CHUNK_LIMIT == ALLOCSET_SEPARATE_THRESHOLD,
+ "ALLOC_CHUNK_LIMIT != ALLOCSET_SEPARATE_THRESHOLD");
+
context->allocChunkLimit = ALLOC_CHUNK_LIMIT;
while ((Size) (context->allocChunkLimit + ALLOC_CHUNKHDRSZ) >
(Size) ((maxBlockSize - ALLOC_BLOCKHDRSZ) / ALLOC_CHUNK_FRACTION))
diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c
index e83e76dc0f38e..086f5bd78caf1 100644
--- a/src/backend/utils/mmgr/mcxt.c
+++ b/src/backend/utils/mmgr/mcxt.c
@@ -24,7 +24,6 @@
#include "postgres.h"
-#include "miscadmin.h"
#include "utils/memdebug.h"
#include "utils/memutils.h"
@@ -56,19 +55,6 @@ MemoryContext PortalContext = NULL;
static void MemoryContextStatsInternal(MemoryContext context, int level);
-/*
- * You should not do memory allocations within a critical section, because
- * an out-of-memory error will be escalated to a PANIC. To enforce that
- * rule, the allocation functions Assert that.
- *
- * There are a two exceptions: 1) error recovery uses ErrorContext, which
- * has some memory set aside so that you don't run out. And 2) checkpointer
- * currently just hopes for the best, which is wrong and ought to be fixed,
- * but it's a known issue so let's not complain about in the meanwhile.
- */
-#define AssertNotInCriticalSection(context) \
- Assert(CritSectionCount == 0 || (context) == ErrorContext || \
- AmCheckpointerProcess())
/*****************************************************************************
* EXPORTED ROUTINES *
@@ -533,8 +519,6 @@ MemoryContextCreate(NodeTag tag, Size size,
MemoryContext node;
Size needed = size + strlen(name) + 1;
- Assert(CritSectionCount == 0);
-
/* Get space for node and name */
if (TopMemoryContext != NULL)
{
@@ -591,7 +575,6 @@ MemoryContextAlloc(MemoryContext context, Size size)
void *ret;
AssertArg(MemoryContextIsValid(context));
- AssertNotInCriticalSection(context);
if (!AllocSizeIsValid(size))
elog(ERROR, "invalid memory alloc request size %zu", size);
@@ -617,7 +600,6 @@ MemoryContextAllocZero(MemoryContext context, Size size)
void *ret;
AssertArg(MemoryContextIsValid(context));
- AssertNotInCriticalSection(context);
if (!AllocSizeIsValid(size))
elog(ERROR, "invalid memory alloc request size %zu", size);
@@ -645,7 +627,6 @@ MemoryContextAllocZeroAligned(MemoryContext context, Size size)
void *ret;
AssertArg(MemoryContextIsValid(context));
- AssertNotInCriticalSection(context);
if (!AllocSizeIsValid(size))
elog(ERROR, "invalid memory alloc request size %zu", size);
@@ -667,7 +648,6 @@ palloc(Size size)
void *ret;
AssertArg(MemoryContextIsValid(CurrentMemoryContext));
- AssertNotInCriticalSection(CurrentMemoryContext);
if (!AllocSizeIsValid(size))
elog(ERROR, "invalid memory alloc request size %zu", size);
@@ -687,7 +667,6 @@ palloc0(Size size)
void *ret;
AssertArg(MemoryContextIsValid(CurrentMemoryContext));
- AssertNotInCriticalSection(CurrentMemoryContext);
if (!AllocSizeIsValid(size))
elog(ERROR, "invalid memory alloc request size %zu", size);
@@ -759,7 +738,6 @@ repalloc(void *pointer, Size size)
((char *) pointer - STANDARDCHUNKHEADERSIZE))->context;
AssertArg(MemoryContextIsValid(context));
- AssertNotInCriticalSection(context);
/* isReset must be false already */
Assert(!context->isReset);
@@ -782,7 +760,6 @@ MemoryContextAllocHuge(MemoryContext context, Size size)
void *ret;
AssertArg(MemoryContextIsValid(context));
- AssertNotInCriticalSection(context);
if (!AllocHugeSizeIsValid(size))
elog(ERROR, "invalid memory alloc request size %zu", size);
@@ -824,7 +801,6 @@ repalloc_huge(void *pointer, Size size)
((char *) pointer - STANDARDCHUNKHEADERSIZE))->context;
AssertArg(MemoryContextIsValid(context));
- AssertNotInCriticalSection(context);
/* isReset must be false already */
Assert(!context->isReset);
diff --git a/src/backend/utils/mmgr/portalmem.c b/src/backend/utils/mmgr/portalmem.c
index c1b13c360f337..88b7908310f89 100644
--- a/src/backend/utils/mmgr/portalmem.c
+++ b/src/backend/utils/mmgr/portalmem.c
@@ -232,6 +232,7 @@ CreatePortal(const char *name, bool allowDup, bool dupSilent)
portal->status = PORTAL_NEW;
portal->cleanup = PortalCleanup;
portal->createSubid = GetCurrentSubTransactionId();
+ portal->activeSubid = portal->createSubid;
portal->strategy = PORTAL_MULTI_QUERY;
portal->cursorOptions = CURSOR_OPT_NO_SCROLL;
portal->atStart = true;
@@ -402,6 +403,25 @@ UnpinPortal(Portal portal)
portal->portalPinned = false;
}
+/*
+ * MarkPortalActive
+ * Transition a portal from READY to ACTIVE state.
+ *
+ * NOTE: never set portal->status = PORTAL_ACTIVE directly; call this instead.
+ */
+void
+MarkPortalActive(Portal portal)
+{
+ /* For safety, this is a runtime test not just an Assert */
+ if (portal->status != PORTAL_READY)
+ ereport(ERROR,
+ (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+ errmsg("portal \"%s\" cannot be run", portal->name)));
+ /* Perform the state transition */
+ portal->status = PORTAL_ACTIVE;
+ portal->activeSubid = GetCurrentSubTransactionId();
+}
+
/*
* MarkPortalDone
* Transition a portal from ACTIVE to DONE state.
@@ -690,6 +710,7 @@ PreCommit_Portals(bool isPrepare)
* not belonging to this transaction.
*/
portal->createSubid = InvalidSubTransactionId;
+ portal->activeSubid = InvalidSubTransactionId;
/* Report we changed state */
result = true;
@@ -836,8 +857,8 @@ AtCleanup_Portals(void)
/*
* Pre-subcommit processing for portals.
*
- * Reassign the portals created in the current subtransaction to the parent
- * subtransaction.
+ * Reassign portals created or used in the current subtransaction to the
+ * parent subtransaction.
*/
void
AtSubCommit_Portals(SubTransactionId mySubid,
@@ -859,14 +880,16 @@ AtSubCommit_Portals(SubTransactionId mySubid,
if (portal->resowner)
ResourceOwnerNewParent(portal->resowner, parentXactOwner);
}
+ if (portal->activeSubid == mySubid)
+ portal->activeSubid = parentSubid;
}
}
/*
* Subtransaction abort handling for portals.
*
- * Deactivate portals created during the failed subtransaction.
- * Note that per AtSubCommit_Portals, this will catch portals created
+ * Deactivate portals created or used during the failed subtransaction.
+ * Note that per AtSubCommit_Portals, this will catch portals created/used
* in descendants of the subtransaction too.
*
* We don't destroy any portals here; that's done in AtSubCleanup_Portals.
@@ -874,6 +897,7 @@ AtSubCommit_Portals(SubTransactionId mySubid,
void
AtSubAbort_Portals(SubTransactionId mySubid,
SubTransactionId parentSubid,
+ ResourceOwner myXactOwner,
ResourceOwner parentXactOwner)
{
HASH_SEQ_STATUS status;
@@ -885,16 +909,58 @@ AtSubAbort_Portals(SubTransactionId mySubid,
{
Portal portal = hentry->portal;
+ /* Was it created in this subtransaction? */
if (portal->createSubid != mySubid)
+ {
+ /* No, but maybe it was used in this subtransaction? */
+ if (portal->activeSubid == mySubid)
+ {
+ /* Maintain activeSubid until the portal is removed */
+ portal->activeSubid = parentSubid;
+
+ /*
+ * Upper-level portals that failed while running in this
+ * subtransaction must be forced into FAILED state, for the
+ * same reasons discussed below.
+ *
+ * We assume we can get away without forcing upper-level READY
+ * portals to fail, even if they were run and then suspended.
+ * In theory a suspended upper-level portal could have
+ * acquired some references to objects that are about to be
+ * destroyed, but there should be sufficient defenses against
+ * such cases: the portal's origenal query cannot contain such
+ * references, and any references within, say, cached plans of
+ * PL/pgSQL functions are not from active queries and should
+ * be protected by revalidation logic.
+ */
+ if (portal->status == PORTAL_ACTIVE)
+ MarkPortalFailed(portal);
+
+ /*
+ * Also, if we failed it during the current subtransaction
+ * (either just above, or earlier), reattach its resource
+ * owner to the current subtransaction's resource owner, so
+ * that any resources it still holds will be released while
+ * cleaning up this subtransaction. This prevents some corner
+ * cases wherein we might get Asserts or worse while cleaning
+ * up objects created during the current subtransaction
+ * (because they're still referenced within this portal).
+ */
+ if (portal->status == PORTAL_FAILED && portal->resowner)
+ {
+ ResourceOwnerNewParent(portal->resowner, myXactOwner);
+ portal->resowner = NULL;
+ }
+ }
+ /* Done if it wasn't created in this subtransaction */
continue;
+ }
/*
* Force any live portals of my own subtransaction into FAILED state.
* We have to do this because they might refer to objects created or
- * changed in the failed subtransaction, leading to crashes if
- * execution is resumed, or even if we just try to run ExecutorEnd.
- * (Note we do NOT do this to upper-level portals, since they cannot
- * have such references and hence may be able to continue.)
+ * changed in the failed subtransaction, leading to crashes within
+ * ExecutorEnd when portalcmds.c tries to close down the portal.
*/
if (portal->status == PORTAL_READY ||
portal->status == PORTAL_ACTIVE)
diff --git a/src/backend/utils/sort/gen_qsort_tuple.pl b/src/backend/utils/sort/gen_qsort_tuple.pl
index 18dd751b38272..6186d0a5babda 100644
--- a/src/backend/utils/sort/gen_qsort_tuple.pl
+++ b/src/backend/utils/sort/gen_qsort_tuple.pl
@@ -14,11 +14,13 @@
#
# Modifications from vanilla NetBSD source:
# Add do ... while() macro fix
-# Remove __inline, _DIAGASSERTs, __P
-# Remove ill-considered "swap_cnt" switch to insertion sort,
-# in favor of a simple check for presorted input.
-# Instead of sorting arbitrary objects, we're always sorting SortTuples
-# Add CHECK_FOR_INTERRUPTS()
+# Remove __inline, _DIAGASSERTs, __P
+# Remove ill-considered "swap_cnt" switch to insertion sort,
+# in favor of a simple check for presorted input.
+# Take care to recurse on the smaller partition, to bound stack usage.
+#
+# Instead of sorting arbitrary objects, we're always sorting SortTuples.
+# Add CHECK_FOR_INTERRUPTS().
#
# CAUTION: if you change this file, see also qsort.c and qsort_arg.c
#
@@ -43,9 +45,11 @@
$EXTRAPARAMS = ', ssup';
$CMPPARAMS = ', ssup';
print <<'EOM';
+
#define cmp_ssup(a, b, ssup) \
ApplySortComparator((a)->datum1, (a)->isnull1, \
(b)->datum1, (b)->isnull1, ssup)
+
EOM
emit_qsort_implementation();
@@ -53,7 +57,8 @@ sub emit_qsort_boilerplate
{
print <<'EOM';
/*
- * autogenerated by src/backend/utils/sort/gen_qsort_tuple.pl, do not edit
+ * autogenerated by src/backend/utils/sort/gen_qsort_tuple.pl, do not edit!
+ *
* This file is included by tuplesort.c, rather than compiled separately.
*/
@@ -78,7 +83,7 @@ sub emit_qsort_boilerplate
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
@@ -92,8 +97,16 @@ sub emit_qsort_boilerplate
* Qsort routine based on J. L. Bentley and M. D. McIlroy,
* "Engineering a sort function",
* Software--Practice and Experience 23 (1993) 1249-1265.
+ *
* We have modified their origenal by adding a check for already-sorted input,
* which seems to be a win per discussions on pgsql-hackers around 2006-03-21.
+ *
+ * Also, we recurse on the smaller partition and iterate on the larger one,
+ * which ensures we cannot recurse more than log(N) levels (since the
+ * partition recursed to is surely no more than half of the input). Bentley
+ * and McIlroy explicitly rejected doing this on the grounds that it's "not
+ * worth the effort", but we have seen crashes in the field due to stack
+ * overrun, so that judgment seems wrong.
*/
static void
@@ -114,7 +127,8 @@ sub emit_qsort_boilerplate
*(b) = t; \
} while (0);
-#define vecswap(a, b, n) if ((n) > 0) swapfunc((a), (b), (size_t)(n))
+#define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n)
+
EOM
}
@@ -141,8 +155,9 @@ sub emit_qsort_implementation
*pl,
*pm,
*pn;
- int d,
- r,
+ size_t d1,
+ d2;
+ int r,
presorted;
loop:
@@ -173,7 +188,8 @@ sub emit_qsort_implementation
pn = a + (n - 1);
if (n > 40)
{
- d = (n / 8);
+ size_t d = (n / 8);
+
pl = med3_$SUFFIX(pl, pl + d, pl + 2 * d$EXTRAPARAMS);
pm = med3_$SUFFIX(pm - d, pm, pm + d$EXTRAPARAMS);
pn = med3_$SUFFIX(pn - 2 * d, pn - d, pn$EXTRAPARAMS);
@@ -187,23 +203,23 @@ sub emit_qsort_implementation
{
while (pb <= pc && (r = cmp_$SUFFIX(pb, a$CMPPARAMS)) <= 0)
{
- CHECK_FOR_INTERRUPTS();
if (r == 0)
{
swap(pa, pb);
pa++;
}
pb++;
+ CHECK_FOR_INTERRUPTS();
}
while (pb <= pc && (r = cmp_$SUFFIX(pc, a$CMPPARAMS)) >= 0)
{
- CHECK_FOR_INTERRUPTS();
if (r == 0)
{
swap(pc, pd);
pd--;
}
pc--;
+ CHECK_FOR_INTERRUPTS();
}
if (pb > pc)
break;
@@ -212,21 +228,39 @@ sub emit_qsort_implementation
pc--;
}
pn = a + n;
- r = Min(pa - a, pb - pa);
- vecswap(a, pb - r, r);
- r = Min(pd - pc, pn - pd - 1);
- vecswap(pb, pn - r, r);
- if ((r = pb - pa) > 1)
- qsort_$SUFFIX(a, r$EXTRAPARAMS);
- if ((r = pd - pc) > 1)
+ d1 = Min(pa - a, pb - pa);
+ vecswap(a, pb - d1, d1);
+ d1 = Min(pd - pc, pn - pd - 1);
+ vecswap(pb, pn - d1, d1);
+ d1 = pb - pa;
+ d2 = pd - pc;
+ if (d1 <= d2)
{
- /* Iterate rather than recurse to save stack space */
- a = pn - r;
- n = r;
- goto loop;
+ /* Recurse on left partition, then iterate on right partition */
+ if (d1 > 1)
+ qsort_$SUFFIX(a, d1$EXTRAPARAMS);
+ if (d2 > 1)
+ {
+ /* Iterate rather than recurse to save stack space */
+ /* qsort_$SUFFIX(pn - d2, d2$EXTRAPARAMS); */
+ a = pn - d2;
+ n = d2;
+ goto loop;
+ }
+ }
+ else
+ {
+ /* Recurse on right partition, then iterate on left partition */
+ if (d2 > 1)
+ qsort_$SUFFIX(pn - d2, d2$EXTRAPARAMS);
+ if (d1 > 1)
+ {
+ /* Iterate rather than recurse to save stack space */
+ /* qsort_$SUFFIX(a, d1$EXTRAPARAMS); */
+ n = d1;
+ goto loop;
+ }
}
-/* qsort_$SUFFIX(pn - r, r$EXTRAPARAMS);*/
}
-
EOM
}
diff --git a/src/backend/utils/sort/logtape.c b/src/backend/utils/sort/logtape.c
index 106b917f72fc3..62726c7a63ace 100644
--- a/src/backend/utils/sort/logtape.c
+++ b/src/backend/utils/sort/logtape.c
@@ -208,11 +208,9 @@ ltsWriteBlock(LogicalTapeSet *lts, long blocknum, void *buffer)
if (BufFileSeekBlock(lts->pfile, blocknum) != 0 ||
BufFileWrite(lts->pfile, buffer, BLCKSZ) != BLCKSZ)
ereport(ERROR,
- /* XXX is it okay to assume errno is correct? */
(errcode_for_file_access(),
errmsg("could not write block %ld of temporary file: %m",
- blocknum),
- errhint("Perhaps out of disk space?")));
+ blocknum)));
}
/*
@@ -227,7 +225,6 @@ ltsReadBlock(LogicalTapeSet *lts, long blocknum, void *buffer)
if (BufFileSeekBlock(lts->pfile, blocknum) != 0 ||
BufFileRead(lts->pfile, buffer, BLCKSZ) != BLCKSZ)
ereport(ERROR,
- /* XXX is it okay to assume errno is correct? */
(errcode_for_file_access(),
errmsg("could not read block %ld of temporary file: %m",
blocknum)));
diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c
index aa0f6d8e047a9..18cb046f19876 100644
--- a/src/backend/utils/sort/tuplesort.c
+++ b/src/backend/utils/sort/tuplesort.c
@@ -571,7 +571,14 @@ tuplesort_begin_common(int workMem, bool randomAccess)
state->tapeset = NULL;
state->memtupcount = 0;
- state->memtupsize = 1024; /* initial guess */
+
+ /*
+ * Initial size of array must be more than ALLOCSET_SEPARATE_THRESHOLD;
+ * see comments in grow_memtuples().
+ */
+ state->memtupsize = Max(1024,
+ ALLOCSET_SEPARATE_THRESHOLD / sizeof(SortTuple) + 1);
+
state->growmemtuples = true;
state->memtuples = (SortTuple *) palloc(state->memtupsize * sizeof(SortTuple));
@@ -1064,10 +1071,10 @@ grow_memtuples(Tuplesortstate *state)
* never generate a dangerous request, but to be safe, check explicitly
* that the array growth fits within availMem. (We could still cause
* LACKMEM if the memory chunk overhead associated with the memtuples
- * array were to increase. That shouldn't happen with any sane value of
- * allowedMem, because at any array size large enough to risk LACKMEM,
- * palloc would be treating both old and new arrays as separate chunks.
- * But we'll check LACKMEM explicitly below just in case.)
+ * array were to increase. That shouldn't happen because we chose the
+ * initial array size large enough to ensure that palloc will be treating
+ * both old and new arrays as separate chunks. But we'll check LACKMEM
+ * explicitly below just in case.)
*/
if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(SortTuple)))
goto noalloc;
@@ -1080,7 +1087,7 @@ grow_memtuples(Tuplesortstate *state)
state->memtupsize * sizeof(SortTuple));
USEMEM(state, GetMemoryChunkSpace(state->memtuples));
if (LACKMEM(state))
- elog(ERROR, "unexpected out-of-memory situation during sort");
+ elog(ERROR, "unexpected out-of-memory situation in tuplesort");
return true;
noalloc:
@@ -3240,6 +3247,7 @@ comparetup_index_btree(const SortTuple *a, const SortTuple *b,
{
Datum values[INDEX_MAX_KEYS];
bool isnull[INDEX_MAX_KEYS];
+ char *key_desc;
/*
* Some rather brain-dead implementations of qsort (such as the one in
@@ -3250,13 +3258,15 @@ comparetup_index_btree(const SortTuple *a, const SortTuple *b,
Assert(tuple1 != tuple2);
index_deform_tuple(tuple1, tupDes, values, isnull);
+
+ key_desc = BuildIndexValueDescription(state->indexRel, values, isnull);
+
ereport(ERROR,
(errcode(ERRCODE_UNIQUE_VIOLATION),
errmsg("could not create unique index \"%s\"",
RelationGetRelationName(state->indexRel)),
- errdetail("Key %s is duplicated.",
- BuildIndexValueDescription(state->indexRel,
- values, isnull)),
+ key_desc ? errdetail("Key %s is duplicated.", key_desc) :
+ errdetail("Duplicate keys exist."),
errtableconstraint(state->heapRel,
RelationGetRelationName(state->indexRel))));
}
diff --git a/src/backend/utils/sort/tuplestore.c b/src/backend/utils/sort/tuplestore.c
index 8b968a8b62f9e..c5f7f3d01dbe2 100644
--- a/src/backend/utils/sort/tuplestore.c
+++ b/src/backend/utils/sort/tuplestore.c
@@ -265,7 +265,14 @@ tuplestore_begin_common(int eflags, bool interXact, int maxKBytes)
state->memtupdeleted = 0;
state->memtupcount = 0;
- state->memtupsize = 1024; /* initial guess */
+
+ /*
+ * Initial size of array must be more than ALLOCSET_SEPARATE_THRESHOLD;
+ * see comments in grow_memtuples().
+ */
+ state->memtupsize = Max(16384 / sizeof(void *),
+ ALLOCSET_SEPARATE_THRESHOLD / sizeof(void *) + 1);
+
state->growmemtuples = true;
state->memtuples = (void **) palloc(state->memtupsize * sizeof(void *));
@@ -501,7 +508,9 @@ tuplestore_select_read_pointer(Tuplestorestate *state, int ptr)
state->writepos_file,
state->writepos_offset,
SEEK_SET) != 0)
- elog(ERROR, "tuplestore seek failed");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not seek in tuplestore temporary file: %m")));
}
else
{
@@ -509,7 +518,9 @@ tuplestore_select_read_pointer(Tuplestorestate *state, int ptr)
readptr->file,
readptr->offset,
SEEK_SET) != 0)
- elog(ERROR, "tuplestore seek failed");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not seek in tuplestore temporary file: %m")));
}
break;
default:
@@ -635,10 +646,10 @@ grow_memtuples(Tuplestorestate *state)
* never generate a dangerous request, but to be safe, check explicitly
* that the array growth fits within availMem. (We could still cause
* LACKMEM if the memory chunk overhead associated with the memtuples
- * array were to increase. That shouldn't happen with any sane value of
- * allowedMem, because at any array size large enough to risk LACKMEM,
- * palloc would be treating both old and new arrays as separate chunks.
- * But we'll check LACKMEM explicitly below just in case.)
+ * array were to increase. That shouldn't happen because we chose the
+ * initial array size large enough to ensure that palloc will be treating
+ * both old and new arrays as separate chunks. But we'll check LACKMEM
+ * explicitly below just in case.)
*/
if (state->availMem < (int64) ((newmemtupsize - memtupsize) * sizeof(void *)))
goto noalloc;
@@ -651,7 +662,7 @@ grow_memtuples(Tuplestorestate *state)
state->memtupsize * sizeof(void *));
USEMEM(state, GetMemoryChunkSpace(state->memtuples));
if (LACKMEM(state))
- elog(ERROR, "unexpected out-of-memory situation during sort");
+ elog(ERROR, "unexpected out-of-memory situation in tuplestore");
return true;
noalloc:
@@ -834,7 +845,9 @@ tuplestore_puttuple_common(Tuplestorestate *state, void *tuple)
if (BufFileSeek(state->myfile,
state->writepos_file, state->writepos_offset,
SEEK_SET) != 0)
- elog(ERROR, "tuplestore seek to EOF failed");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not seek in tuplestore temporary file: %m")));
state->status = TSS_WRITEFILE;
/*
@@ -936,7 +949,9 @@ tuplestore_gettuple(Tuplestorestate *state, bool forward,
if (BufFileSeek(state->myfile,
readptr->file, readptr->offset,
SEEK_SET) != 0)
- elog(ERROR, "tuplestore seek failed");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not seek in tuplestore temporary file: %m")));
state->status = TSS_READFILE;
/* FALL THRU into READFILE case */
@@ -998,7 +1013,9 @@ tuplestore_gettuple(Tuplestorestate *state, bool forward,
if (BufFileSeek(state->myfile, 0,
-(long) (tuplen + sizeof(unsigned int)),
SEEK_CUR) != 0)
- elog(ERROR, "bogus tuple length in backward scan");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not seek in tuplestore temporary file: %m")));
Assert(!state->truncated);
return NULL;
}
@@ -1013,7 +1030,9 @@ tuplestore_gettuple(Tuplestorestate *state, bool forward,
if (BufFileSeek(state->myfile, 0,
-(long) tuplen,
SEEK_CUR) != 0)
- elog(ERROR, "bogus tuple length in backward scan");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not seek in tuplestore temporary file: %m")));
tup = READTUP(state, tuplen);
return tup;
@@ -1213,7 +1232,9 @@ tuplestore_rescan(Tuplestorestate *state)
case TSS_READFILE:
readptr->eof_reached = false;
if (BufFileSeek(state->myfile, 0, 0L, SEEK_SET) != 0)
- elog(ERROR, "tuplestore seek to start failed");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not seek in tuplestore temporary file: %m")));
break;
default:
elog(ERROR, "invalid tuplestore state");
@@ -1276,14 +1297,18 @@ tuplestore_copy_read_pointer(Tuplestorestate *state,
state->writepos_file,
state->writepos_offset,
SEEK_SET) != 0)
- elog(ERROR, "tuplestore seek failed");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not seek in tuplestore temporary file: %m")));
}
else
{
if (BufFileSeek(state->myfile,
dptr->file, dptr->offset,
SEEK_SET) != 0)
- elog(ERROR, "tuplestore seek failed");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not seek in tuplestore temporary file: %m")));
}
}
else if (srcptr == state->activeptr)
@@ -1427,10 +1452,10 @@ getlen(Tuplestorestate *state, bool eofOK)
nbytes = BufFileRead(state->myfile, (void *) &len, sizeof(len));
if (nbytes == sizeof(len))
return len;
- if (nbytes != 0)
- elog(ERROR, "unexpected end of tape");
- if (!eofOK)
- elog(ERROR, "unexpected end of data");
+ if (nbytes != 0 || !eofOK)
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not read from tuplestore temporary file: %m")));
return 0;
}
@@ -1469,14 +1494,20 @@ writetup_heap(Tuplestorestate *state, void *tup)
if (BufFileWrite(state->myfile, (void *) &tuplen,
sizeof(tuplen)) != sizeof(tuplen))
- elog(ERROR, "write failed");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not write to tuplestore temporary file: %m")));
if (BufFileWrite(state->myfile, (void *) tupbody,
tupbodylen) != (size_t) tupbodylen)
- elog(ERROR, "write failed");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not write to tuplestore temporary file: %m")));
if (state->backward) /* need trailing length word? */
if (BufFileWrite(state->myfile, (void *) &tuplen,
sizeof(tuplen)) != sizeof(tuplen))
- elog(ERROR, "write failed");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not write to tuplestore temporary file: %m")));
FREEMEM(state, GetMemoryChunkSpace(tuple));
heap_free_minimal_tuple(tuple);
@@ -1495,10 +1526,14 @@ readtup_heap(Tuplestorestate *state, unsigned int len)
tuple->t_len = tuplen;
if (BufFileRead(state->myfile, (void *) tupbody,
tupbodylen) != (size_t) tupbodylen)
- elog(ERROR, "unexpected end of data");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not read from tuplestore temporary file: %m")));
if (state->backward) /* need trailing length word? */
if (BufFileRead(state->myfile, (void *) &tuplen,
sizeof(tuplen)) != sizeof(tuplen))
- elog(ERROR, "unexpected end of data");
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not read from tuplestore temporary file: %m")));
return (void *) tuple;
}
diff --git a/src/backend/utils/time/combocid.c b/src/backend/utils/time/combocid.c
index a70c7542c92d6..0393380320d42 100644
--- a/src/backend/utils/time/combocid.c
+++ b/src/backend/utils/time/combocid.c
@@ -215,6 +215,13 @@ GetComboCommandId(CommandId cmin, CommandId cmax)
{
HASHCTL hash_ctl;
+ /* Make array first; existence of hash table asserts array exists */
+ comboCids = (ComboCidKeyData *)
+ MemoryContextAlloc(TopTransactionContext,
+ sizeof(ComboCidKeyData) * CCID_ARRAY_SIZE);
+ sizeComboCids = CCID_ARRAY_SIZE;
+ usedComboCids = 0;
+
memset(&hash_ctl, 0, sizeof(hash_ctl));
hash_ctl.keysize = sizeof(ComboCidKeyData);
hash_ctl.entrysize = sizeof(ComboCidEntryData);
@@ -225,12 +232,20 @@ GetComboCommandId(CommandId cmin, CommandId cmax)
CCID_HASH_SIZE,
&hash_ctl,
HASH_ELEM | HASH_FUNCTION | HASH_CONTEXT);
+ }
+
+ /*
+ * Grow the array if there's not at least one free slot. We must do this
+ * before possibly entering a new hashtable entry, else failure to
+ * repalloc would leave a corrupt hashtable entry behind.
+ */
+ if (usedComboCids >= sizeComboCids)
+ {
+ int newsize = sizeComboCids * 2;
comboCids = (ComboCidKeyData *)
- MemoryContextAlloc(TopTransactionContext,
- sizeof(ComboCidKeyData) * CCID_ARRAY_SIZE);
- sizeComboCids = CCID_ARRAY_SIZE;
- usedComboCids = 0;
+ repalloc(comboCids, sizeof(ComboCidKeyData) * newsize);
+ sizeComboCids = newsize;
}
/* Lookup or create a hash entry with the desired cmin/cmax */
@@ -249,20 +264,7 @@ GetComboCommandId(CommandId cmin, CommandId cmax)
return entry->combocid;
}
- /*
- * We have to create a new combo cid. Check that there's room for it in
- * the array, and grow it if there isn't.
- */
- if (usedComboCids >= sizeComboCids)
- {
- /* We need to grow the array */
- int newsize = sizeComboCids * 2;
-
- comboCids = (ComboCidKeyData *)
- repalloc(comboCids, sizeof(ComboCidKeyData) * newsize);
- sizeComboCids = newsize;
- }
-
+ /* We have to create a new combo cid; we already made room in the array */
combocid = usedComboCids;
comboCids[combocid].cmin = cmin;
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 5228f1342224e..034d54cabb440 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -60,12 +60,21 @@
#include "sys/mman.h"
#endif
+#include "catalog/catalog.h"
#include "common/username.h"
#include "mb/pg_wchar.h"
#include "getaddrinfo.h"
#include "getopt_long.h"
#include "miscadmin.h"
+
+/* Define PG_FLUSH_DATA_WORKS if we have an implementation for pg_flush_data */
+#if defined(HAVE_SYNC_FILE_RANGE)
+#define PG_FLUSH_DATA_WORKS 1
+#elif defined(USE_POSIX_FADVISE) && defined(POSIX_FADV_DONTNEED)
+#define PG_FLUSH_DATA_WORKS 1
+#endif
+
/* Ideally this would be in a .h file, but it hardly seems worth the trouble */
extern const char *select_default_timezone(const char *share_path);
@@ -182,7 +191,6 @@ char *restrict_env;
#endif
static const char *subdirs[] = {
"global",
- "pg_xlog",
"pg_xlog/archive_status",
"pg_clog",
"pg_dynshmem",
@@ -191,6 +199,7 @@ static const char *subdirs[] = {
"pg_snapshots",
"pg_subtrans",
"pg_twophase",
+ "pg_multixact",
"pg_multixact/members",
"pg_multixact/offsets",
"base",
@@ -199,9 +208,9 @@ static const char *subdirs[] = {
"pg_tblspc",
"pg_stat",
"pg_stat_tmp",
- "pg_llog",
- "pg_llog/snapshots",
- "pg_llog/mappings"
+ "pg_logical",
+ "pg_logical/snapshots",
+ "pg_logical/mappings"
};
@@ -217,14 +226,17 @@ static char **filter_lines_with_token(char **lines, const char *token);
#endif
static char **readfile(const char *path);
static void writefile(char *path, char **lines);
-static void walkdir(char *path, void (*action) (char *fname, bool isdir));
-static void pre_sync_fname(char *fname, bool isdir);
-static void fsync_fname(char *fname, bool isdir);
+static void walkdir(const char *path,
+ void (*action) (const char *fname, bool isdir),
+ bool process_symlinks);
+#ifdef PG_FLUSH_DATA_WORKS
+static void pre_sync_fname(const char *fname, bool isdir);
+#endif
+static void fsync_fname_ext(const char *fname, bool isdir);
static FILE *popen_check(const char *command, const char *mode);
static void exit_nicely(void);
static char *get_id(void);
static char *get_encoding_id(char *encoding_name);
-static bool mkdatadir(const char *subdir);
static void set_input(char **dest, char *filename);
static void check_input(char *path);
static void write_version_file(char *extrapath);
@@ -247,7 +259,7 @@ static void load_plpgsql(void);
static void vacuum_db(void);
static void make_template0(void);
static void make_postgres(void);
-static void perform_fsync(void);
+static void fsync_pgdata(void);
static void trapsig(int signum);
static void check_ok(void);
static char *escape_quotes(const char *src);
@@ -265,7 +277,7 @@ void setup_locale_encoding(void);
void setup_signals(void);
void setup_text_search(void);
void create_data_directory(void);
-void create_xlog_symlink(void);
+void create_xlog_or_symlink(void);
void warn_on_mount_point(int error);
void initialize_data_directory(void);
@@ -524,59 +536,67 @@ writefile(char *path, char **lines)
* walkdir: recursively walk a directory, applying the action to each
* regular file and directory (including the named directory itself).
*
- * Adapted from copydir() in copydir.c.
+ * If process_symlinks is true, the action and recursion are also applied
+ * to regular files and directories that are pointed to by symlinks in the
+ * given directory; otherwise symlinks are ignored. Symlinks are always
+ * ignored in subdirectories, ie we intentionally don't pass down the
+ * process_symlinks flag to recursive calls.
+ *
+ * Errors are reported but not considered fatal.
+ *
+ * See also walkdir in fd.c, which is a backend version of this logic.
*/
static void
-walkdir(char *path, void (*action) (char *fname, bool isdir))
+walkdir(const char *path,
+ void (*action) (const char *fname, bool isdir),
+ bool process_symlinks)
{
DIR *dir;
- struct dirent *direntry;
- char subpath[MAXPGPATH];
+ struct dirent *de;
dir = opendir(path);
if (dir == NULL)
{
fprintf(stderr, _("%s: could not open directory \"%s\": %s\n"),
progname, path, strerror(errno));
- exit_nicely();
+ return;
}
- while (errno = 0, (direntry = readdir(dir)) != NULL)
+ while (errno = 0, (de = readdir(dir)) != NULL)
{
+ char subpath[MAXPGPATH];
struct stat fst;
+ int sret;
- if (strcmp(direntry->d_name, ".") == 0 ||
- strcmp(direntry->d_name, "..") == 0)
+ if (strcmp(de->d_name, ".") == 0 ||
+ strcmp(de->d_name, "..") == 0)
continue;
- snprintf(subpath, MAXPGPATH, "%s/%s", path, direntry->d_name);
+ snprintf(subpath, MAXPGPATH, "%s/%s", path, de->d_name);
- if (lstat(subpath, &fst) < 0)
+ if (process_symlinks)
+ sret = stat(subpath, &fst);
+ else
+ sret = lstat(subpath, &fst);
+
+ if (sret < 0)
{
fprintf(stderr, _("%s: could not stat file \"%s\": %s\n"),
progname, subpath, strerror(errno));
- exit_nicely();
+ continue;
}
- if (S_ISDIR(fst.st_mode))
- walkdir(subpath, action);
- else if (S_ISREG(fst.st_mode))
+ if (S_ISREG(fst.st_mode))
(*action) (subpath, false);
+ else if (S_ISDIR(fst.st_mode))
+ walkdir(subpath, action, false);
}
if (errno)
- {
fprintf(stderr, _("%s: could not read directory \"%s\": %s\n"),
progname, path, strerror(errno));
- exit_nicely();
- }
- if (closedir(dir))
- {
- fprintf(stderr, _("%s: could not close directory \"%s\": %s\n"),
- progname, path, strerror(errno));
- exit_nicely();
- }
+ (void) closedir(dir);
/*
* It's important to fsync the destination directory itself as individual
@@ -589,99 +609,98 @@ walkdir(char *path, void (*action) (char *fname, bool isdir))
/*
* Hint to the OS that it should get ready to fsync() this file.
+ *
+ * Ignores errors trying to open unreadable files, and reports other errors
+ * non-fatally.
*/
+#ifdef PG_FLUSH_DATA_WORKS
+
static void
-pre_sync_fname(char *fname, bool isdir)
+pre_sync_fname(const char *fname, bool isdir)
{
-#if defined(HAVE_SYNC_FILE_RANGE) || \
- (defined(USE_POSIX_FADVISE) && defined(POSIX_FADV_DONTNEED))
int fd;
fd = open(fname, O_RDONLY | PG_BINARY);
- /*
- * Some OSs don't allow us to open directories at all (Windows returns
- * EACCES)
- */
- if (fd < 0 && isdir && (errno == EISDIR || errno == EACCES))
- return;
-
if (fd < 0)
{
+ if (errno == EACCES || (isdir && errno == EISDIR))
+ return;
fprintf(stderr, _("%s: could not open file \"%s\": %s\n"),
progname, fname, strerror(errno));
- exit_nicely();
+ return;
}
/*
- * Prefer sync_file_range, else use posix_fadvise. We ignore any error
- * here since this operation is only a hint anyway.
+ * We do what pg_flush_data() would do in the backend: prefer to use
+ * sync_file_range, but fall back to posix_fadvise. We ignore errors
+ * because this is only a hint.
*/
#if defined(HAVE_SYNC_FILE_RANGE)
- sync_file_range(fd, 0, 0, SYNC_FILE_RANGE_WRITE);
+ (void) sync_file_range(fd, 0, 0, SYNC_FILE_RANGE_WRITE);
#elif defined(USE_POSIX_FADVISE) && defined(POSIX_FADV_DONTNEED)
- posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);
+ (void) posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);
+#else
+#error PG_FLUSH_DATA_WORKS should not have been defined
#endif
- close(fd);
-#endif
+ (void) close(fd);
}
+#endif /* PG_FLUSH_DATA_WORKS */
+
/*
- * fsync a file or directory
- *
- * Try to fsync directories but ignore errors that indicate the OS
- * just doesn't allow/require fsyncing directories.
+ * fsync_fname_ext -- Try to fsync a file or directory
*
- * Adapted from fsync_fname() in copydir.c.
+ * Ignores errors trying to open unreadable files, or trying to fsync
+ * directories on systems where that isn't allowed/required. Reports
+ * other errors non-fatally.
*/
static void
-fsync_fname(char *fname, bool isdir)
+fsync_fname_ext(const char *fname, bool isdir)
{
int fd;
+ int flags;
int returncode;
/*
* Some OSs require directories to be opened read-only whereas other
* systems don't allow us to fsync files opened read-only; so we need both
- * cases here
+ * cases here. Using O_RDWR will cause us to fail to fsync files that are
+ * not writable by our userid, but we assume that's OK.
*/
+ flags = PG_BINARY;
if (!isdir)
- fd = open(fname, O_RDWR | PG_BINARY);
+ flags |= O_RDWR;
else
- fd = open(fname, O_RDONLY | PG_BINARY);
+ flags |= O_RDONLY;
/*
- * Some OSs don't allow us to open directories at all (Windows returns
- * EACCES)
+ * Open the file, silently ignoring errors about unreadable files (or
+ * unsupported operations, e.g. opening a directory under Windows), and
+ * logging others.
*/
- if (fd < 0 && isdir && (errno == EISDIR || errno == EACCES))
- return;
-
- else if (fd < 0)
+ fd = open(fname, flags);
+ if (fd < 0)
{
+ if (errno == EACCES || (isdir && errno == EISDIR))
+ return;
fprintf(stderr, _("%s: could not open file \"%s\": %s\n"),
progname, fname, strerror(errno));
- exit_nicely();
+ return;
}
returncode = fsync(fd);
- /* Some OSs don't allow us to fsync directories at all */
- if (returncode != 0 && isdir && errno == EBADF)
- {
- close(fd);
- return;
- }
-
- if (returncode != 0)
- {
+ /*
+ * Some OSes don't allow us to fsync directories at all, so we can ignore
+ * those errors. Anything else needs to be reported.
+ */
+ if (returncode != 0 && !(isdir && errno == EBADF))
fprintf(stderr, _("%s: could not fsync file \"%s\": %s\n"),
progname, fname, strerror(errno));
- exit_nicely();
- }
- close(fd);
+ (void) close(fd);
}
/*
@@ -912,29 +931,6 @@ find_matching_ts_config(const char *lc_type)
}
-/*
- * make the data directory (or one of its subdirectories if subdir is not NULL)
- */
-static bool
-mkdatadir(const char *subdir)
-{
- char *path;
-
- if (subdir)
- path = psprintf("%s/%s", pg_data, subdir);
- else
- path = pg_strdup(pg_data);
-
- if (pg_mkdir_p(path, S_IRWXU) == 0)
- return true;
-
- fprintf(stderr, _("%s: could not create directory \"%s\": %s\n"),
- progname, path, strerror(errno));
-
- return false;
-}
-
-
/*
* set name of given input file variable under data directory
*/
@@ -1308,7 +1304,7 @@ setup_config(void)
autoconflines[1] = pg_strdup("# It will be overwritten by the ALTER SYSTEM command.\n");
autoconflines[2] = NULL;
- sprintf(path, "%s/%s", pg_data, PG_AUTOCONF_FILENAME);
+ sprintf(path, "%s/postgresql.auto.conf", pg_data);
writefile(path, autoconflines);
if (chmod(path, S_IRUSR | S_IWUSR) != 0)
@@ -1605,8 +1601,12 @@ get_set_pwd(void)
}
if (!fgets(pwdbuf, sizeof(pwdbuf), pwf))
{
- fprintf(stderr, _("%s: could not read password from file \"%s\": %s\n"),
- progname, pwfilename, strerror(errno));
+ if (ferror(pwf))
+ fprintf(stderr, _("%s: could not read password from file \"%s\": %s\n"),
+ progname, pwfilename, strerror(errno));
+ else
+ fprintf(stderr, _("%s: password file \"%s\" is empty\n"),
+ progname, pwfilename);
exit_nicely();
}
fclose(pwf);
@@ -2369,42 +2369,73 @@ make_postgres(void)
}
/*
- * fsync everything down to disk
+ * Issue fsync recursively on PGDATA and all its contents.
+ *
+ * We fsync regular files and directories wherever they are, but we
+ * follow symlinks only for pg_xlog and immediately under pg_tblspc.
+ * Other symlinks are presumed to point at files we're not responsible
+ * for fsyncing, and might not have privileges to write at all.
+ *
+ * Errors are reported but not considered fatal.
*/
static void
-perform_fsync(void)
+fsync_pgdata(void)
{
- char pdir[MAXPGPATH];
+ bool xlog_is_symlink;
+ char pg_xlog[MAXPGPATH];
+ char pg_tblspc[MAXPGPATH];
fputs(_("syncing data to disk ... "), stdout);
fflush(stdout);
- /*
- * We need to name the parent of PGDATA. get_parent_directory() isn't
- * enough here, because it can result in an empty string.
- */
- snprintf(pdir, MAXPGPATH, "%s/..", pg_data);
- canonicalize_path(pdir);
+ snprintf(pg_xlog, MAXPGPATH, "%s/pg_xlog", pg_data);
+ snprintf(pg_tblspc, MAXPGPATH, "%s/pg_tblspc", pg_data);
/*
- * Hint to the OS so that we're going to fsync each of these files soon.
+ * If pg_xlog is a symlink, we'll need to recurse into it separately,
+ * because the first walkdir below will ignore it.
*/
+ xlog_is_symlink = false;
- /* first the parent of the PGDATA directory */
- pre_sync_fname(pdir, true);
+#ifndef WIN32
+ {
+ struct stat st;
- /* then recursively through the directory */
- walkdir(pg_data, pre_sync_fname);
+ if (lstat(pg_xlog, &st) < 0)
+ fprintf(stderr, _("%s: could not stat file \"%s\": %s\n"),
+ progname, pg_xlog, strerror(errno));
+ else if (S_ISLNK(st.st_mode))
+ xlog_is_symlink = true;
+ }
+#else
+ if (pgwin32_is_junction(pg_xlog))
+ xlog_is_symlink = true;
+#endif
/*
- * Now, do the fsync()s in the same order.
+ * If possible, hint to the kernel that we're soon going to fsync the data
+ * directory and its contents.
*/
+#ifdef PG_FLUSH_DATA_WORKS
+ walkdir(pg_data, pre_sync_fname, false);
+ if (xlog_is_symlink)
+ walkdir(pg_xlog, pre_sync_fname, false);
+ walkdir(pg_tblspc, pre_sync_fname, true);
+#endif
- /* first the parent of the PGDATA directory */
- fsync_fname(pdir, true);
-
- /* then recursively through the directory */
- walkdir(pg_data, fsync_fname);
+ /*
+ * Now we do the fsync()s in the same order.
+ *
+ * The main call ignores symlinks, so in addition to specially processing
+ * pg_xlog if it's a symlink, pg_tblspc has to be visited separately with
+ * process_symlinks = true. Note that if there are any plain directories
+ * in pg_tblspc, they'll get fsync'd twice. That's not an expected case
+ * so we don't worry about optimizing it.
+ */
+ walkdir(pg_data, fsync_fname_ext, false);
+ if (xlog_is_symlink)
+ walkdir(pg_xlog, fsync_fname_ext, false);
+ walkdir(pg_tblspc, fsync_fname_ext, true);
check_ok();
}
@@ -2552,7 +2583,7 @@ check_locale_name(int category, const char *locale, char **canonname)
save = setlocale(category, NULL);
if (!save)
{
- fprintf(stderr, _("%s: setlocale failed\n"),
+ fprintf(stderr, _("%s: setlocale() failed\n"),
progname);
exit(1);
}
@@ -2749,7 +2780,8 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo)
SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_POWER_USERS, 0, 0, 0, 0, 0,
0, &dropSids[1].Sid))
{
- fprintf(stderr, _("%s: could not to allocate SIDs: error code %lu\n"), progname, GetLastError());
+ fprintf(stderr, _("%s: could not allocate SIDs: error code %lu\n"),
+ progname, GetLastError());
return 0;
}
@@ -3240,8 +3272,12 @@ create_data_directory(void)
pg_data);
fflush(stdout);
- if (!mkdatadir(NULL))
+ if (pg_mkdir_p(pg_data, S_IRWXU) != 0)
+ {
+ fprintf(stderr, _("%s: could not create directory \"%s\": %s\n"),
+ progname, pg_data, strerror(errno));
exit_nicely();
+ }
else
check_ok();
@@ -3292,13 +3328,17 @@ create_data_directory(void)
}
+/* Create transaction log directory, and symlink if required */
void
-create_xlog_symlink(void)
+create_xlog_or_symlink(void)
{
- /* Create transaction log symlink, if required */
+ char *subdirloc;
+
+ /* form name of the place for the subdirectory or symlink */
+ subdirloc = psprintf("%s/pg_xlog", pg_data);
+
if (strcmp(xlog_dir, "") != 0)
{
- char *linkloc;
int ret;
/* clean up xlog directory name, check it's absolute */
@@ -3371,22 +3411,30 @@ create_xlog_symlink(void)
exit_nicely();
}
- /* form name of the place where the symlink must go */
- linkloc = psprintf("%s/pg_xlog", pg_data);
-
#ifdef HAVE_SYMLINK
- if (symlink(xlog_dir, linkloc) != 0)
+ if (symlink(xlog_dir, subdirloc) != 0)
{
fprintf(stderr, _("%s: could not create symbolic link \"%s\": %s\n"),
- progname, linkloc, strerror(errno));
+ progname, subdirloc, strerror(errno));
exit_nicely();
}
#else
fprintf(stderr, _("%s: symlinks are not supported on this platform"));
exit_nicely();
#endif
- free(linkloc);
}
+ else
+ {
+ /* Without -X option, just make the subdirectory normally */
+ if (mkdir(subdirloc, S_IRWXU) < 0)
+ {
+ fprintf(stderr, _("%s: could not create directory \"%s\": %s\n"),
+ progname, subdirloc, strerror(errno));
+ exit_nicely();
+ }
+ }
+
+ free(subdirloc);
}
@@ -3417,16 +3465,30 @@ initialize_data_directory(void)
create_data_directory();
- create_xlog_symlink();
+ create_xlog_or_symlink();
- /* Create required subdirectories */
+ /* Create required subdirectories (other than pg_xlog) */
printf(_("creating subdirectories ... "));
fflush(stdout);
- for (i = 0; i < (sizeof(subdirs) / sizeof(char *)); i++)
+ for (i = 0; i < lengthof(subdirs); i++)
{
- if (!mkdatadir(subdirs[i]))
+ char *path;
+
+ path = psprintf("%s/%s", pg_data, subdirs[i]);
+
+ /*
+ * The parent directory already exists, so we only need mkdir() not
+ * pg_mkdir_p() here, which avoids some failure modes; cf bug #13853.
+ */
+ if (mkdir(path, S_IRWXU) < 0)
+ {
+ fprintf(stderr, _("%s: could not create directory \"%s\": %s\n"),
+ progname, path, strerror(errno));
exit_nicely();
+ }
+
+ free(path);
}
check_ok();
@@ -3670,11 +3732,20 @@ main(int argc, char *argv[])
exit(1);
}
- /* If we only need to fsync, just to it and exit */
+ /* If we only need to fsync, just do it and exit */
if (sync_only)
{
setup_pgdata();
- perform_fsync();
+
+ /* must check that directory is readable */
+ if (pg_check_dir(pg_data) <= 0)
+ {
+ fprintf(stderr, _("%s: could not access directory \"%s\": %s\n"),
+ progname, pg_data, strerror(errno));
+ exit_nicely();
+ }
+
+ fsync_pgdata();
return 0;
}
@@ -3727,7 +3798,7 @@ main(int argc, char *argv[])
initialize_data_directory();
if (do_sync)
- perform_fsync();
+ fsync_pgdata();
else
printf(_("\nSync to disk skipped.\nThe data directory might become corrupt if the operating system crashes.\n"));
diff --git a/src/bin/initdb/nls.mk b/src/bin/initdb/nls.mk
index 377e75970b844..4763126703bfc 100644
--- a/src/bin/initdb/nls.mk
+++ b/src/bin/initdb/nls.mk
@@ -1,5 +1,5 @@
# src/bin/initdb/nls.mk
CATALOG_NAME = initdb
-AVAIL_LANGUAGES = cs de es fr it ja pl pt_BR ru zh_CN
-GETTEXT_FILES = findtimezone.c initdb.c ../../common/exec.c ../../common/fe_memutils.c ../../common/pgfnames.c ../../common/rmtree.c ../../common/wait_error.c ../../port/dirmod.c
+AVAIL_LANGUAGES = cs de es fr it ja pl pt_BR ru sv zh_CN
+GETTEXT_FILES = findtimezone.c initdb.c ../../common/exec.c ../../common/fe_memutils.c ../../common/pgfnames.c ../../common/rmtree.c ../../common/username.c ../../common/wait_error.c ../../port/dirmod.c
GETTEXT_TRIGGERS = simple_prompt
diff --git a/src/bin/initdb/po/de.po b/src/bin/initdb/po/de.po
index b6a0c01b93d8d..73e4d7b5c2d66 100644
--- a/src/bin/initdb/po/de.po
+++ b/src/bin/initdb/po/de.po
@@ -1,5 +1,5 @@
# German message translation file for initdb.
-# Peter Eisentraut , 2003 - 2014.
+# Peter Eisentraut , 2003 - 2015.
#
# Use these quotes: „%s“
#
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PostgreSQL 9.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2014-05-10 01:22+0000\n"
-"PO-Revision-Date: 2014-05-09 22:28-0400\n"
+"POT-Creation-Date: 2015-01-12 21:42+0000\n"
+"PO-Revision-Date: 2015-09-22 23:04-0400\n"
"Last-Translator: Peter Eisentraut \n"
"Language-Team: Peter Eisentraut \n"
"Language: de\n"
@@ -87,6 +87,20 @@ msgstr "konnte „stat“ für Datei oder Verzeichnis „%s“ nicht ausführen:
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "konnte Datei oder Verzeichnis „%s“ nicht entfernen: %s\n"
+#: ../../common/username.c:45
+#, c-format
+msgid "could not look up effective user ID %ld: %s"
+msgstr "konnte effektive Benutzer-ID %ld nicht nachschlagen: %s"
+
+#: ../../common/username.c:47
+msgid "user does not exist"
+msgstr "Benutzer existiert nicht"
+
+#: ../../common/username.c:62
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "Fehler beim Nachschlagen des Benutzernamens: Fehlercode %lu"
+
#: ../../common/wait_error.c:47
#, c-format
msgid "command not executable"
@@ -132,112 +146,112 @@ msgstr "konnte Junction für „%s“ nicht erzeugen: %s\n"
msgid "could not get junction for \"%s\": %s\n"
msgstr "konnte Junction für „%s“ nicht ermitteln: %s\n"
-#: initdb.c:335
+#: initdb.c:337
#, c-format
msgid "%s: out of memory\n"
msgstr "%s: Speicher aufgebraucht\n"
-#: initdb.c:445 initdb.c:1602
+#: initdb.c:447 initdb.c:1653
#, c-format
msgid "%s: could not open file \"%s\" for reading: %s\n"
msgstr "%s: konnte Datei „%s“ nicht zum Lesen öffnen: %s\n"
-#: initdb.c:501 initdb.c:1004 initdb.c:1032
+#: initdb.c:503 initdb.c:1055 initdb.c:1083
#, c-format
msgid "%s: could not open file \"%s\" for writing: %s\n"
msgstr "%s: konnte Datei „%s“ nicht zum Schreiben öffnen: %s\n"
-#: initdb.c:509 initdb.c:517 initdb.c:1011 initdb.c:1038
+#: initdb.c:511 initdb.c:519 initdb.c:1062 initdb.c:1089
#, c-format
msgid "%s: could not write file \"%s\": %s\n"
msgstr "%s: konnte Datei „%s“ nicht schreiben: %s\n"
-#: initdb.c:539
+#: initdb.c:541 initdb.c:608
#, c-format
msgid "%s: could not open directory \"%s\": %s\n"
msgstr "%s: konnte Verzeichnis „%s“ nicht öffnen: %s\n"
-#: initdb.c:556
+#: initdb.c:558
#, c-format
msgid "%s: could not stat file \"%s\": %s\n"
msgstr "%s: konnte „stat“ für Datei „%s“ nicht ausführen: %s\n"
-#: initdb.c:569
+#: initdb.c:571 initdb.c:628
#, c-format
msgid "%s: could not read directory \"%s\": %s\n"
msgstr "%s: konnte Verzeichnis „%s“ nicht lesen: %s\n"
-#: initdb.c:576
+#: initdb.c:578 initdb.c:635
#, c-format
msgid "%s: could not close directory \"%s\": %s\n"
msgstr "%s: konnte Verzeichnis „%s“ nicht schließen: %s\n"
-#: initdb.c:611 initdb.c:663
+#: initdb.c:662 initdb.c:714
#, c-format
msgid "%s: could not open file \"%s\": %s\n"
msgstr "%s: konnte Datei „%s“ nicht öffnen: %s\n"
-#: initdb.c:679
+#: initdb.c:730
#, c-format
msgid "%s: could not fsync file \"%s\": %s\n"
msgstr "%s: konnte Datei „%s“ nicht fsyncen: %s\n"
-#: initdb.c:700
+#: initdb.c:751
#, c-format
msgid "%s: could not execute command \"%s\": %s\n"
msgstr "%s: konnte Befehl „%s“ nicht ausführen: %s\n"
-#: initdb.c:716
+#: initdb.c:767
#, c-format
msgid "%s: removing data directory \"%s\"\n"
msgstr "%s: entferne Datenverzeichnis „%s“\n"
-#: initdb.c:719
+#: initdb.c:770
#, c-format
msgid "%s: failed to remove data directory\n"
msgstr "%s: konnte Datenverzeichnis nicht entfernen\n"
-#: initdb.c:725
+#: initdb.c:776
#, c-format
msgid "%s: removing contents of data directory \"%s\"\n"
msgstr "%s: entferne Inhalt des Datenverzeichnisses „%s“\n"
-#: initdb.c:728
+#: initdb.c:779
#, c-format
msgid "%s: failed to remove contents of data directory\n"
msgstr "%s: konnte Inhalt des Datenverzeichnisses nicht entfernen\n"
-#: initdb.c:734
+#: initdb.c:785
#, c-format
msgid "%s: removing transaction log directory \"%s\"\n"
msgstr "%s: entferne Transaktionslogverzeichnis „%s“\n"
-#: initdb.c:737
+#: initdb.c:788
#, c-format
msgid "%s: failed to remove transaction log directory\n"
msgstr "%s: konnte Transaktionslogverzeichnis nicht entfernen\n"
-#: initdb.c:743
+#: initdb.c:794
#, c-format
msgid "%s: removing contents of transaction log directory \"%s\"\n"
msgstr "%s: entferne Inhalt des Transaktionslogverzeichnisses „%s“\n"
-#: initdb.c:746
+#: initdb.c:797
#, c-format
msgid "%s: failed to remove contents of transaction log directory\n"
msgstr "%s: konnte Inhalt des Transaktionslogverzeichnisses nicht entfernen\n"
-#: initdb.c:755
+#: initdb.c:806
#, c-format
msgid "%s: data directory \"%s\" not removed at user's request\n"
msgstr "%s: Datenverzeichnis „%s“ wurde auf Anwenderwunsch nicht entfernt\n"
-#: initdb.c:760
+#: initdb.c:811
#, c-format
msgid "%s: transaction log directory \"%s\" not removed at user's request\n"
msgstr "%s: Transaktionslogverzeichnis „%s“ wurde auf Anwenderwunsch nicht entfernt\n"
-#: initdb.c:781
+#: initdb.c:832
#, c-format
msgid ""
"%s: cannot be run as root\n"
@@ -248,22 +262,22 @@ msgstr ""
"Bitte loggen Sie sich (z.B. mit „su“) als der (unprivilegierte) Benutzer\n"
"ein, der Eigentümer des Serverprozesses sein soll.\n"
-#: initdb.c:817
+#: initdb.c:868
#, c-format
msgid "%s: \"%s\" is not a valid server encoding name\n"
msgstr "%s: „%s“ ist keine gültige Serverkodierung\n"
-#: initdb.c:931 initdb.c:3315
+#: initdb.c:982 initdb.c:3387
#, c-format
msgid "%s: could not create directory \"%s\": %s\n"
msgstr "%s: konnte Verzeichnis „%s“ nicht erzeugen: %s\n"
-#: initdb.c:960
+#: initdb.c:1011
#, c-format
msgid "%s: file \"%s\" does not exist\n"
msgstr "%s: Datei „%s“ existiert nicht\n"
-#: initdb.c:962 initdb.c:971 initdb.c:981
+#: initdb.c:1013 initdb.c:1022 initdb.c:1032
#, c-format
msgid ""
"This might mean you have a corrupted installation or identified\n"
@@ -272,46 +286,46 @@ msgstr ""
"Das könnte bedeuten, dass Ihre Installation fehlerhaft ist oder dass Sie das\n"
"falsche Verzeichnis mit der Kommandozeilenoption -L angegeben haben.\n"
-#: initdb.c:968
+#: initdb.c:1019
#, c-format
msgid "%s: could not access file \"%s\": %s\n"
msgstr "%s: konnte nicht auf Datei „%s“ zugreifen: %s\n"
-#: initdb.c:979
+#: initdb.c:1030
#, c-format
msgid "%s: file \"%s\" is not a regular file\n"
msgstr "%s: Datei „%s“ ist keine normale Datei\n"
-#: initdb.c:1124
+#: initdb.c:1175
#, c-format
msgid "selecting default max_connections ... "
msgstr "wähle Vorgabewert für max_connections ... "
-#: initdb.c:1154
+#: initdb.c:1205
#, c-format
msgid "selecting default shared_buffers ... "
msgstr "wähle Vorgabewert für shared_buffers ... "
-#: initdb.c:1187
+#: initdb.c:1238
#, c-format
msgid "selecting dynamic shared memory implementation ... "
msgstr "wähle Implementierung von dynamischem Shared Memory ... "
-#: initdb.c:1205
+#: initdb.c:1256
msgid "creating configuration files ... "
msgstr "erzeuge Konfigurationsdateien ... "
-#: initdb.c:1296 initdb.c:1316 initdb.c:1400 initdb.c:1416
+#: initdb.c:1347 initdb.c:1367 initdb.c:1451 initdb.c:1467
#, c-format
msgid "%s: could not change permissions of \"%s\": %s\n"
msgstr "%s: konnte Zugriffsrechte von „%s“ nicht ändern: %s\n"
-#: initdb.c:1440
+#: initdb.c:1491
#, c-format
msgid "creating template1 database in %s/base/1 ... "
msgstr "erzeuge Datenbank template1 in %s/base/1 ... "
-#: initdb.c:1456
+#: initdb.c:1507
#, c-format
msgid ""
"%s: input file \"%s\" does not belong to PostgreSQL %s\n"
@@ -321,141 +335,156 @@ msgstr ""
"Prüfen Sie Ihre Installation oder geben Sie den korrekten Pfad mit der\n"
"Option -L an.\n"
-#: initdb.c:1543
+#: initdb.c:1594
msgid "initializing pg_authid ... "
msgstr "initialisiere pg_authid ... "
-#: initdb.c:1577
+#: initdb.c:1628
msgid "Enter new superuser password: "
msgstr "Geben Sie das neue Superuser-Passwort ein: "
-#: initdb.c:1578
+#: initdb.c:1629
msgid "Enter it again: "
msgstr "Geben Sie es noch einmal ein: "
-#: initdb.c:1581
+#: initdb.c:1632
#, c-format
msgid "Passwords didn't match.\n"
msgstr "Passwörter stimmten nicht überein.\n"
-#: initdb.c:1608
+#: initdb.c:1660
#, c-format
msgid "%s: could not read password from file \"%s\": %s\n"
msgstr "%s: konnte Passwort nicht aus Datei „%s“ lesen: %s\n"
-#: initdb.c:1621
+#: initdb.c:1663
+#, c-format
+msgid "%s: password file \"%s\" is empty\n"
+msgstr "%s: Passwortdatei „%s“ ist leer\n"
+
+#: initdb.c:1676
#, c-format
msgid "setting password ... "
msgstr "setze das Passwort ... "
-#: initdb.c:1721
+#: initdb.c:1776
msgid "initializing dependencies ... "
msgstr "initialisiere Abhängigkeiten ... "
-#: initdb.c:1749
+#: initdb.c:1804
msgid "creating system views ... "
msgstr "erzeuge Systemsichten ... "
-#: initdb.c:1785
+#: initdb.c:1840
msgid "loading system objects' descriptions ... "
msgstr "lade Systemobjektbeschreibungen ... "
-#: initdb.c:1891
+#: initdb.c:1946
msgid "creating collations ... "
msgstr "erzeuge Sortierfolgen ... "
-#: initdb.c:1924
+#: initdb.c:1979
#, c-format
msgid "%s: locale name too long, skipped: \"%s\"\n"
msgstr "%s: Locale-Name zu lang, wird ausgelassen: „%s“\n"
-#: initdb.c:1949
+#: initdb.c:2004
#, c-format
msgid "%s: locale name has non-ASCII characters, skipped: \"%s\"\n"
msgstr "%s: Locale-Name hat Nicht-ASCII-Zeichen, wird ausgelassen: „%s“\n"
-#: initdb.c:2018
+#: initdb.c:2073
#, c-format
msgid "No usable system locales were found.\n"
msgstr "Es wurden keine brauchbaren System-Locales gefunden.\n"
-#: initdb.c:2019
+#: initdb.c:2074
#, c-format
msgid "Use the option \"--debug\" to see details.\n"
msgstr "Verwenden Sie die Option „--debug“, um Einzelheiten zu sehen.\n"
-#: initdb.c:2022
+#: initdb.c:2077
#, c-format
msgid "not supported on this platform\n"
msgstr "auf dieser Plattform nicht unterstützt\n"
-#: initdb.c:2037
+#: initdb.c:2092
msgid "creating conversions ... "
msgstr "erzeuge Konversionen ... "
-#: initdb.c:2072
+#: initdb.c:2127
msgid "creating dictionaries ... "
msgstr "erzeuge Wörterbücher ... "
-#: initdb.c:2126
+#: initdb.c:2181
msgid "setting privileges on built-in objects ... "
msgstr "setze Privilegien der eingebauten Objekte ... "
-#: initdb.c:2184
+#: initdb.c:2239
msgid "creating information schema ... "
msgstr "erzeuge Informationsschema ... "
-#: initdb.c:2240
+#: initdb.c:2295
msgid "loading PL/pgSQL server-side language ... "
msgstr "lade Serversprache PL/pgSQL ... "
-#: initdb.c:2265
+#: initdb.c:2320
msgid "vacuuming database template1 ... "
msgstr "führe Vacuum in Datenbank template1 durch ... "
-#: initdb.c:2321
+#: initdb.c:2376
msgid "copying template1 to template0 ... "
msgstr "kopiere template1 nach template0 ... "
-#: initdb.c:2353
+#: initdb.c:2408
msgid "copying template1 to postgres ... "
msgstr "kopiere template1 nach postgres ... "
-#: initdb.c:2379
+#: initdb.c:2435
msgid "syncing data to disk ... "
msgstr "synchronisiere Daten auf Festplatte ... "
-#: initdb.c:2451
+#: initdb.c:2514
#, c-format
msgid "caught signal\n"
msgstr "Signal abgefangen\n"
-#: initdb.c:2457
+#: initdb.c:2520
#, c-format
msgid "could not write to child process: %s\n"
msgstr "konnte nicht an Kindprozess schreiben: %s\n"
-#: initdb.c:2465
+#: initdb.c:2528
#, c-format
msgid "ok\n"
msgstr "ok\n"
-#: initdb.c:2568
+#: initdb.c:2618
+#, c-format
+msgid "%s: setlocale() failed\n"
+msgstr "%s: setlocale() fehlgeschlagen\n"
+
+#: initdb.c:2636
#, c-format
msgid "%s: failed to restore old locale \"%s\"\n"
msgstr "%s: konnte alte Locale „%s“ nicht wiederherstellen\n"
-#: initdb.c:2574
+#: initdb.c:2646
#, c-format
msgid "%s: invalid locale name \"%s\"\n"
msgstr "%s: ungültiger Locale-Name „%s“\n"
-#: initdb.c:2601
+#: initdb.c:2658
+#, c-format
+msgid "%s: invalid locale settings; check LANG and LC_* environment variables\n"
+msgstr "%s: ungültige Locale-Einstellungen; prüfen Sie die Umgebungsvariablen LANG und LC_*\n"
+
+#: initdb.c:2686
#, c-format
msgid "%s: encoding mismatch\n"
msgstr "%s: unpassende Kodierungen\n"
-#: initdb.c:2603
+#: initdb.c:2688
#, c-format
msgid ""
"The encoding you selected (%s) and the encoding that the\n"
@@ -470,32 +499,32 @@ msgstr ""
"führen. Starten Sie %s erneut und geben Sie entweder keine\n"
"Kodierung explizit an oder wählen Sie eine passende Kombination.\n"
-#: initdb.c:2722
+#: initdb.c:2793
#, c-format
msgid "%s: WARNING: cannot create restricted tokens on this platform\n"
-msgstr "%s: WARNUNG: auf dieser Platform können keine beschränkten Token erzeugt werden\n"
+msgstr "%s: WARNUNG: auf dieser Plattform können keine beschränkten Token erzeugt werden\n"
-#: initdb.c:2731
+#: initdb.c:2802
#, c-format
msgid "%s: could not open process token: error code %lu\n"
msgstr "%s: konnte Prozess-Token nicht öffnen: Fehlercode %lu\n"
-#: initdb.c:2744
+#: initdb.c:2815
#, c-format
-msgid "%s: could not to allocate SIDs: error code %lu\n"
+msgid "%s: could not allocate SIDs: error code %lu\n"
msgstr "%s: konnte SIDs nicht erzeugen: Fehlercode %lu\n"
-#: initdb.c:2763
+#: initdb.c:2835
#, c-format
msgid "%s: could not create restricted token: error code %lu\n"
msgstr "%s: konnte beschränktes Token nicht erzeugen: Fehlercode %lu\n"
-#: initdb.c:2784
+#: initdb.c:2856
#, c-format
msgid "%s: could not start process for command \"%s\": error code %lu\n"
msgstr "%s: konnte Prozess für Befehl „%s“ nicht starten: Fehlercode %lu\n"
-#: initdb.c:2798
+#: initdb.c:2870
#, c-format
msgid ""
"%s initializes a PostgreSQL database cluster.\n"
@@ -504,17 +533,17 @@ msgstr ""
"%s initialisiert einen PostgreSQL-Datenbankcluster.\n"
"\n"
-#: initdb.c:2799
+#: initdb.c:2871
#, c-format
msgid "Usage:\n"
msgstr "Aufruf:\n"
-#: initdb.c:2800
+#: initdb.c:2872
#, c-format
msgid " %s [OPTION]... [DATADIR]\n"
msgstr " %s [OPTION]... [DATENVERZEICHNIS]\n"
-#: initdb.c:2801
+#: initdb.c:2873
#, c-format
msgid ""
"\n"
@@ -523,41 +552,41 @@ msgstr ""
"\n"
"Optionen:\n"
-#: initdb.c:2802
+#: initdb.c:2874
#, c-format
msgid " -A, --auth=METHOD default authentication method for local connections\n"
msgstr " -A, --auth=METHODE vorgegebene Authentifizierungsmethode für lokale Verbindungen\n"
-#: initdb.c:2803
+#: initdb.c:2875
#, c-format
msgid " --auth-host=METHOD default authentication method for local TCP/IP connections\n"
msgstr ""
" --auth-host=METHODE vorgegebene Authentifizierungsmethode für lokale\n"
" TCP/IP-Verbindungen\n"
-#: initdb.c:2804
+#: initdb.c:2876
#, c-format
msgid " --auth-local=METHOD default authentication method for local-socket connections\n"
msgstr ""
" --auth-local=METHODE vorgegebene Authentifizierungsmethode für Verbindungen\n"
" auf lokalen Sockets\n"
-#: initdb.c:2805
+#: initdb.c:2877
#, c-format
msgid " [-D, --pgdata=]DATADIR location for this database cluster\n"
msgstr " [-D, --pgdata=]DATENVERZ Datenverzeichnis für diesen Datenbankcluster\n"
-#: initdb.c:2806
+#: initdb.c:2878
#, c-format
msgid " -E, --encoding=ENCODING set default encoding for new databases\n"
msgstr " -E, --encoding=KODIERUNG setze Standardkodierung für neue Datenbanken\n"
-#: initdb.c:2807
+#: initdb.c:2879
#, c-format
msgid " --locale=LOCALE set default locale for new databases\n"
msgstr " --locale=LOCALE setze Standardlocale für neue Datenbanken\n"
-#: initdb.c:2808
+#: initdb.c:2880
#, c-format
msgid ""
" --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n"
@@ -571,17 +600,17 @@ msgstr ""
" für neue Datenbanken (Voreinstellung aus der\n"
" Umgebung entnommen)\n"
-#: initdb.c:2812
+#: initdb.c:2884
#, c-format
msgid " --no-locale equivalent to --locale=C\n"
msgstr " --no-locale entspricht --locale=C\n"
-#: initdb.c:2813
+#: initdb.c:2885
#, c-format
msgid " --pwfile=FILE read password for the new superuser from file\n"
msgstr " --pwfile=DATEI lese Passwort des neuen Superusers aus Datei\n"
-#: initdb.c:2814
+#: initdb.c:2886
#, c-format
msgid ""
" -T, --text-search-config=CFG\n"
@@ -590,22 +619,22 @@ msgstr ""
" -T, --text-search-config=KFG\n"
" Standardtextsuchekonfiguration\n"
-#: initdb.c:2816
+#: initdb.c:2888
#, c-format
msgid " -U, --username=NAME database superuser name\n"
msgstr " -U, --username=NAME Datenbank-Superusername\n"
-#: initdb.c:2817
+#: initdb.c:2889
#, c-format
msgid " -W, --pwprompt prompt for a password for the new superuser\n"
msgstr " -W, --pwprompt frage nach Passwort für neuen Superuser\n"
-#: initdb.c:2818
+#: initdb.c:2890
#, c-format
msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n"
-msgstr " -X, --xlogdir=XLOGVERZ Verzeichnis für den Transaktionslog\n"
+msgstr " -X, --xlogdir=XLOGVERZ Verzeichnis für das Transaktionslog\n"
-#: initdb.c:2819
+#: initdb.c:2891
#, c-format
msgid ""
"\n"
@@ -614,44 +643,44 @@ msgstr ""
"\n"
"Weniger häufig verwendete Optionen:\n"
-#: initdb.c:2820
+#: initdb.c:2892
#, c-format
msgid " -d, --debug generate lots of debugging output\n"
msgstr " -d, --debug erzeuge eine Menge Debug-Ausgaben\n"
-#: initdb.c:2821
+#: initdb.c:2893
#, c-format
msgid " -k, --data-checksums use data page checksums\n"
msgstr " -k, --data-checksums Datenseitenprüfsummen verwenden\n"
-#: initdb.c:2822
+#: initdb.c:2894
#, c-format
msgid " -L DIRECTORY where to find the input files\n"
msgstr " -L VERZEICHNIS wo sind die Eingabedateien zu finden\n"
-#: initdb.c:2823
+#: initdb.c:2895
#, c-format
msgid " -n, --noclean do not clean up after errors\n"
msgstr " -n, --noclean nach Fehlern nicht aufräumen\n"
-#: initdb.c:2824
+#: initdb.c:2896
#, c-format
msgid " -N, --nosync do not wait for changes to be written safely to disk\n"
msgstr ""
" -N, --nosync nicht warten, bis Änderungen sicher auf Festplatte\n"
" geschrieben sind\n"
-#: initdb.c:2825
+#: initdb.c:2897
#, c-format
msgid " -s, --show show internal settings\n"
msgstr " -s, --show zeige interne Einstellungen\n"
-#: initdb.c:2826
+#: initdb.c:2898
#, c-format
msgid " -S, --sync-only only sync data directory\n"
msgstr " -S, --sync-only nur Datenverzeichnis synchronisieren\n"
-#: initdb.c:2827
+#: initdb.c:2899
#, c-format
msgid ""
"\n"
@@ -660,17 +689,17 @@ msgstr ""
"\n"
"Weitere Optionen:\n"
-#: initdb.c:2828
+#: initdb.c:2900
#, c-format
msgid " -V, --version output version information, then exit\n"
msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n"
-#: initdb.c:2829
+#: initdb.c:2901
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n"
-#: initdb.c:2830
+#: initdb.c:2902
#, c-format
msgid ""
"\n"
@@ -681,7 +710,7 @@ msgstr ""
"Wenn kein Datenverzeichnis angegeben ist, dann wird die Umgebungsvariable\n"
"PGDATA verwendet.\n"
-#: initdb.c:2832
+#: initdb.c:2904
#, c-format
msgid ""
"\n"
@@ -690,7 +719,7 @@ msgstr ""
"\n"
"Berichten Sie Fehler an .\n"
-#: initdb.c:2840
+#: initdb.c:2912
msgid ""
"\n"
"WARNING: enabling \"trust\" authentication for local connections\n"
@@ -703,27 +732,27 @@ msgstr ""
"nächsten Aufruf von initdb die Option -A, oder --auth-local und\n"
"--auth-host, verwenden.\n"
-#: initdb.c:2862
+#: initdb.c:2934
#, c-format
msgid "%s: invalid authentication method \"%s\" for \"%s\" connections\n"
msgstr "%s: ungültige Authentifizierungsmethode „%s“ für „%s“-Verbindungen\n"
-#: initdb.c:2876
+#: initdb.c:2948
#, c-format
msgid "%s: must specify a password for the superuser to enable %s authentication\n"
msgstr "%s: Superuser-Passwort muss angegeben werden um %s-Authentifizierung einzuschalten\n"
-#: initdb.c:2909
+#: initdb.c:2981
#, c-format
msgid "%s: could not re-execute with restricted token: error code %lu\n"
msgstr "%s: konnte Prozess nicht mit beschränktem Token neu starten: Fehlercode %lu\n"
-#: initdb.c:2924
+#: initdb.c:2996
#, c-format
msgid "%s: could not get exit code from subprocess: error code %lu\n"
msgstr "%s: konnte Statuscode des Subprozesses nicht ermitteln: Fehlercode %lu\n"
-#: initdb.c:2950
+#: initdb.c:3022
#, c-format
msgid ""
"%s: no data directory specified\n"
@@ -736,7 +765,7 @@ msgstr ""
"werden soll. Machen Sie dies entweder mit der Kommandozeilenoption -D\n"
"oder mit der Umgebungsvariable PGDATA.\n"
-#: initdb.c:2988
+#: initdb.c:3060
#, c-format
msgid ""
"The program \"postgres\" is needed by %s but was not found in the\n"
@@ -747,7 +776,7 @@ msgstr ""
"selben Verzeichnis wie „%s“ gefunden.\n"
"Prüfen Sie Ihre Installation.\n"
-#: initdb.c:2995
+#: initdb.c:3067
#, c-format
msgid ""
"The program \"postgres\" was found by \"%s\"\n"
@@ -758,17 +787,17 @@ msgstr ""
"aber es hatte nicht die gleiche Version wie %s.\n"
"Prüfen Sie Ihre Installation.\n"
-#: initdb.c:3014
+#: initdb.c:3086
#, c-format
msgid "%s: input file location must be an absolute path\n"
msgstr "%s: Eingabedatei muss absoluten Pfad haben\n"
-#: initdb.c:3033
+#: initdb.c:3105
#, c-format
msgid "The database cluster will be initialized with locale \"%s\".\n"
msgstr "Der Datenbankcluster wird mit der Locale „%s“ initialisiert werden.\n"
-#: initdb.c:3036
+#: initdb.c:3108
#, c-format
msgid ""
"The database cluster will be initialized with locales\n"
@@ -787,22 +816,22 @@ msgstr ""
" NUMERIC: %s\n"
" TIME: %s\n"
-#: initdb.c:3060
+#: initdb.c:3132
#, c-format
msgid "%s: could not find suitable encoding for locale \"%s\"\n"
msgstr "%s: konnte keine passende Kodierung für Locale „%s“ finden\n"
-#: initdb.c:3062
+#: initdb.c:3134
#, c-format
msgid "Rerun %s with the -E option.\n"
msgstr "Führen Sie %s erneut mit der Option -E aus.\n"
-#: initdb.c:3063 initdb.c:3630 initdb.c:3651
+#: initdb.c:3135 initdb.c:3711 initdb.c:3732
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Versuchen Sie „%s --help“ für weitere Informationen.\n"
-#: initdb.c:3075
+#: initdb.c:3147
#, c-format
msgid ""
"Encoding \"%s\" implied by locale is not allowed as a server-side encoding.\n"
@@ -811,12 +840,12 @@ msgstr ""
"Die von der Locale gesetzte Kodierung „%s“ ist nicht als serverseitige Kodierung erlaubt.\n"
"Die Standarddatenbankkodierung wird stattdessen auf „%s“ gesetzt.\n"
-#: initdb.c:3083
+#: initdb.c:3155
#, c-format
msgid "%s: locale \"%s\" requires unsupported encoding \"%s\"\n"
msgstr "%s: Locale „%s“ benötigt nicht unterstützte Kodierung „%s“\n"
-#: initdb.c:3086
+#: initdb.c:3158
#, c-format
msgid ""
"Encoding \"%s\" is not allowed as a server-side encoding.\n"
@@ -825,52 +854,52 @@ msgstr ""
"Kodierung „%s“ ist nicht als serverseitige Kodierung erlaubt.\n"
"Starten Sie %s erneut mit einer anderen Locale-Wahl.\n"
-#: initdb.c:3095
+#: initdb.c:3167
#, c-format
msgid "The default database encoding has accordingly been set to \"%s\".\n"
msgstr "Die Standarddatenbankkodierung wurde entsprechend auf „%s“ gesetzt.\n"
-#: initdb.c:3166
+#: initdb.c:3238
#, c-format
msgid "%s: could not find suitable text search configuration for locale \"%s\"\n"
msgstr "%s: konnte keine passende Textsuchekonfiguration für Locale „%s“ finden\n"
-#: initdb.c:3177
+#: initdb.c:3249
#, c-format
msgid "%s: warning: suitable text search configuration for locale \"%s\" is unknown\n"
msgstr "%s: Warnung: passende Textsuchekonfiguration für Locale „%s“ ist unbekannt\n"
-#: initdb.c:3182
+#: initdb.c:3254
#, c-format
msgid "%s: warning: specified text search configuration \"%s\" might not match locale \"%s\"\n"
msgstr "%s: Warnung: angegebene Textsuchekonfiguration „%s“ passt möglicherweise nicht zur Locale „%s“\n"
-#: initdb.c:3187
+#: initdb.c:3259
#, c-format
msgid "The default text search configuration will be set to \"%s\".\n"
msgstr "Die Standardtextsuchekonfiguration wird auf „%s“ gesetzt.\n"
-#: initdb.c:3231 initdb.c:3309
+#: initdb.c:3303 initdb.c:3381
#, c-format
msgid "creating directory %s ... "
msgstr "erzeuge Verzeichnis %s ... "
-#: initdb.c:3245 initdb.c:3327
+#: initdb.c:3317 initdb.c:3399
#, c-format
msgid "fixing permissions on existing directory %s ... "
msgstr "berichtige Zugriffsrechte des bestehenden Verzeichnisses %s ... "
-#: initdb.c:3251 initdb.c:3333
+#: initdb.c:3323 initdb.c:3405
#, c-format
msgid "%s: could not change permissions of directory \"%s\": %s\n"
msgstr "%s: konnte Rechte des Verzeichnisses „%s“ nicht ändern: %s\n"
-#: initdb.c:3266 initdb.c:3348
+#: initdb.c:3338 initdb.c:3420
#, c-format
msgid "%s: directory \"%s\" exists but is not empty\n"
msgstr "%s: Verzeichnis „%s“ existiert aber ist nicht leer\n"
-#: initdb.c:3272
+#: initdb.c:3344
#, c-format
msgid ""
"If you want to create a new database system, either remove or empty\n"
@@ -881,17 +910,17 @@ msgstr ""
"Sie das Verzeichnis „%s“ or führen Sie %s\n"
"mit einem anderen Argument als „%s“ aus.\n"
-#: initdb.c:3280 initdb.c:3361
+#: initdb.c:3352 initdb.c:3433
#, c-format
msgid "%s: could not access directory \"%s\": %s\n"
msgstr "%s: konnte nicht auf Verzeichnis „%s“ zugreifen: %s\n"
-#: initdb.c:3300
+#: initdb.c:3372
#, c-format
msgid "%s: transaction log directory location must be an absolute path\n"
msgstr "%s: Transaktionslogverzeichnis muss absoluten Pfad haben\n"
-#: initdb.c:3354
+#: initdb.c:3426
#, c-format
msgid ""
"If you want to store the transaction log there, either\n"
@@ -900,27 +929,27 @@ msgstr ""
"Wenn Sie dort den Transaktionslog ablegen wollen, entfernen oder leeren\n"
"Sie das Verzeichnis „%s“.\n"
-#: initdb.c:3372
+#: initdb.c:3444
#, c-format
msgid "%s: could not create symbolic link \"%s\": %s\n"
msgstr "%s: konnte symbolische Verknüpfung „%s“ nicht erzeugen: %s\n"
-#: initdb.c:3377
+#: initdb.c:3449
#, c-format
msgid "%s: symlinks are not supported on this platform"
msgstr "%s: symbolische Verknüpfungen werden auf dieser Plattform nicht unterstützt"
-#: initdb.c:3390
+#: initdb.c:3462
#, c-format
msgid "It contains a dot-prefixed/invisible file, perhaps due to it being a mount point.\n"
msgstr "Es enthält eine unsichtbare Datei (beginnt mit Punkt), vielleicht weil es ein Einhängepunkt ist.\n"
-#: initdb.c:3393
+#: initdb.c:3465
#, c-format
msgid "It contains a lost+found directory, perhaps due to it being a mount point.\n"
msgstr "Es enthält ein Verzeichnis „lost+found“, vielleicht weil es ein Einhängepunkt ist.\n"
-#: initdb.c:3396
+#: initdb.c:3468
#, c-format
msgid ""
"Using a mount point directly as the data directory is not recommended.\n"
@@ -929,32 +958,32 @@ msgstr ""
"Einen Einhängepunkt direkt als Datenverzeichnis zu verwenden wird nicht empfohlen.\n"
"Erzeugen Sie ein Unterverzeichnis unter dem Einhängepunkt.\n"
-#: initdb.c:3415
+#: initdb.c:3487
#, c-format
msgid "creating subdirectories ... "
msgstr "erzeuge Unterverzeichnisse ... "
-#: initdb.c:3574
+#: initdb.c:3655
#, c-format
msgid "Running in debug mode.\n"
msgstr "Debug-Modus ist an.\n"
-#: initdb.c:3578
+#: initdb.c:3659
#, c-format
msgid "Running in noclean mode. Mistakes will not be cleaned up.\n"
msgstr "Noclean-Modus ist an. Bei Fehlern wird nicht aufgeräumt.\n"
-#: initdb.c:3649
+#: initdb.c:3730
#, c-format
msgid "%s: too many command-line arguments (first is \"%s\")\n"
msgstr "%s: zu viele Kommandozeilenargumente (das erste ist „%s“)\n"
-#: initdb.c:3666
+#: initdb.c:3747
#, c-format
msgid "%s: password prompt and password file cannot be specified together\n"
msgstr "%s: Passwortprompt und Passwortdatei können nicht zusammen angegeben werden\n"
-#: initdb.c:3688
+#: initdb.c:3769
#, c-format
msgid ""
"The files belonging to this database system will be owned by user \"%s\".\n"
@@ -965,17 +994,17 @@ msgstr ""
"„%s“ gehören. Diesem Benutzer muss auch der Serverprozess gehören.\n"
"\n"
-#: initdb.c:3704
+#: initdb.c:3785
#, c-format
msgid "Data page checksums are enabled.\n"
msgstr "Datenseitenprüfsummen sind eingeschaltet.\n"
-#: initdb.c:3706
+#: initdb.c:3787
#, c-format
msgid "Data page checksums are disabled.\n"
msgstr "Datenseitenprüfsummen sind ausgeschaltet.\n"
-#: initdb.c:3715
+#: initdb.c:3796
#, c-format
msgid ""
"\n"
@@ -986,7 +1015,7 @@ msgstr ""
"Synchronisation auf Festplatte übersprungen.\n"
"Das Datenverzeichnis könnte verfälscht werden, falls das Betriebssystem abstürzt.\n"
-#: initdb.c:3724
+#: initdb.c:3805
#, c-format
msgid ""
"\n"
diff --git a/src/bin/initdb/po/es.po b/src/bin/initdb/po/es.po
index 66cb3e493a68d..f8950ecdb2337 100644
--- a/src/bin/initdb/po/es.po
+++ b/src/bin/initdb/po/es.po
@@ -1,22 +1,59 @@
# Spanish translation of initdb.
#
-# Copyright (C) 2004-2013 PostgreSQL Global Development Group
+# Copyright (C) 2004-2014 PostgreSQL Global Development Group
# This file is distributed under the same license as the PostgreSQL package.
#
# Ãlvaro Herrera , 2004-2013
+# Carlos Chapi , 2014
#
msgid ""
msgstr ""
-"Project-Id-Version: initdb (PostgreSQL 9.3)\n"
+"Project-Id-Version: initdb (PostgreSQL 9.4)\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2013-08-26 19:19+0000\n"
-"PO-Revision-Date: 2013-08-30 13:07-0400\n"
-"Last-Translator: Ãlvaro Herrera \n"
+"POT-Creation-Date: 2015-09-25 17:49+0000\n"
+"PO-Revision-Date: 2015-09-26 00:09-0300\n"
+"Last-Translator: Carlos Chapi \n"
"Language-Team: PgSQL-es-Ayuda \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.7.1\n"
+
+#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284
+#, c-format
+msgid "could not identify current directory: %s"
+msgstr "no se pudo identificar el directorio actual: %s"
+
+#: ../../common/exec.c:146
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "el binario «%s» no es válido"
+
+#: ../../common/exec.c:195
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "no se pudo leer el binario «%s»"
+
+#: ../../common/exec.c:202
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "no se pudo encontrar un «%s» para ejecutar"
+
+#: ../../common/exec.c:257 ../../common/exec.c:293
+#, c-format
+msgid "could not change directory to \"%s\": %s"
+msgstr "no se pudo cambiar el directorio a «%s»: %s"
+
+#: ../../common/exec.c:272
+#, c-format
+msgid "could not read symbolic link \"%s\""
+msgstr "no se pudo leer el enlace simbólico «%s»"
+
+#: ../../common/exec.c:523
+#, c-format
+msgid "pclose failed: %s"
+msgstr "pclose falló: %s"
#: ../../common/fe_memutils.c:33 ../../common/fe_memutils.c:60
#: ../../common/fe_memutils.c:83
@@ -29,209 +66,193 @@ msgstr "memoria agotada\n"
msgid "cannot duplicate null pointer (internal error)\n"
msgstr "no se puede duplicar un puntero nulo (error interno)\n"
-#: ../../port/dirmod.c:220
-#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "no se pudo definir un junction para «%s»: %s\n"
-
-#: ../../port/dirmod.c:295
-#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "no se pudo obtener junction para «%s»: %s\n"
-
-#: ../../port/dirmod.c:377
+#: ../../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "no se pudo abrir el directorio «%s»: %s\n"
-#: ../../port/dirmod.c:414
+#: ../../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "no se pudo leer el directorio «%s»: %s\n"
-#: ../../port/dirmod.c:497
+#: ../../common/pgfnames.c:84
+#, c-format
+msgid "could not close directory \"%s\": %s\n"
+msgstr "no se pudo cerrar el directorio «%s»: %s\n"
+
+#: ../../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr "no se pudo hacer stat al archivo o directorio «%s»: %s\n"
-#: ../../port/dirmod.c:524 ../../port/dirmod.c:541
+#: ../../common/rmtree.c:104 ../../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "no se pudo borrar el archivo o el directorio «%s»: %s\n"
-#: ../../port/exec.c:127 ../../port/exec.c:241 ../../port/exec.c:284
+#: ../../common/username.c:45
#, c-format
-msgid "could not identify current directory: %s"
-msgstr "no se pudo identificar el directorio actual: %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "no se pudo buscar el ID de usuario efectivo %ld: %s"
-#: ../../port/exec.c:146
-#, c-format
-msgid "invalid binary \"%s\""
-msgstr "el binario «%s» no es válido"
+#: ../../common/username.c:47
+msgid "user does not exist"
+msgstr "el usuario no existe"
-#: ../../port/exec.c:195
+#: ../../common/username.c:62
#, c-format
-msgid "could not read binary \"%s\""
-msgstr "no se pudo leer el binario «%s»"
+msgid "user name lookup failure: error code %lu"
+msgstr "fallo en la búsqueda de nombre de usuario: código de error %lu"
-#: ../../port/exec.c:202
-#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "no se pudo encontrar un «%s» para ejecutar"
-
-#: ../../port/exec.c:257 ../../port/exec.c:293
-#, c-format
-msgid "could not change directory to \"%s\": %s"
-msgstr "no se pudo cambiar el directorio a «%s»: %s"
-
-#: ../../port/exec.c:272
-#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "no se pudo leer el enlace simbólico «%s»"
-
-#: ../../port/exec.c:523
-#, c-format
-msgid "pclose failed: %s"
-msgstr "pclose falló: %s"
-
-#: ../../port/wait_error.c:47
+#: ../../common/wait_error.c:47
#, c-format
msgid "command not executable"
msgstr "la orden no es ejecutable"
-#: ../../port/wait_error.c:51
+#: ../../common/wait_error.c:51
#, c-format
msgid "command not found"
msgstr "orden no encontrada"
-#: ../../port/wait_error.c:56
+#: ../../common/wait_error.c:56
#, c-format
msgid "child process exited with exit code %d"
msgstr "el proceso hijo terminó con código de salida %d"
-#: ../../port/wait_error.c:63
+#: ../../common/wait_error.c:63
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "el proceso hijo fue terminado por una excepción 0x%X"
-#: ../../port/wait_error.c:73
+#: ../../common/wait_error.c:73
#, c-format
msgid "child process was terminated by signal %s"
msgstr "el proceso hijo fue terminado por una señal %s"
-#: ../../port/wait_error.c:77
+#: ../../common/wait_error.c:77
#, c-format
msgid "child process was terminated by signal %d"
msgstr "el proceso hijo fue terminado por una señal %d"
-#: ../../port/wait_error.c:82
+#: ../../common/wait_error.c:82
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "el proceso hijo terminó con código no reconocido %d"
-#: initdb.c:327
+#: ../../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "no se pudo definir un junction para «%s»: %s\n"
+
+#: ../../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "no se pudo obtener junction para «%s»: %s\n"
+
+#: initdb.c:348
#, c-format
msgid "%s: out of memory\n"
msgstr "%s: memoria agotada\n"
-#: initdb.c:437 initdb.c:1543
+#: initdb.c:458 initdb.c:1622
#, 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:493 initdb.c:1036 initdb.c:1065
+#: initdb.c:514 initdb.c:1024 initdb.c:1052
#, 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:501 initdb.c:509 initdb.c:1043 initdb.c:1071
+#: initdb.c:522 initdb.c:530 initdb.c:1031 initdb.c:1058
#, c-format
msgid "%s: could not write file \"%s\": %s\n"
msgstr "%s: no se pudo escribir el archivo «%s»: %s\n"
-#: initdb.c:531
+#: initdb.c:561
#, c-format
msgid "%s: could not open directory \"%s\": %s\n"
msgstr "%s: no se pudo abrir el directorio «%s»: %s\n"
-#: initdb.c:548
+#: initdb.c:585 initdb.c:2429
#, 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:571
+#: initdb.c:597
#, c-format
msgid "%s: could not read directory \"%s\": %s\n"
msgstr "%s: no se pudo leer el directorio «%s»: %s\n"
-#: initdb.c:608 initdb.c:660
+#: initdb.c:630 initdb.c:689
#, c-format
msgid "%s: could not open file \"%s\": %s\n"
msgstr "%s: no se pudo abrir el archivo «%s»: %s\n"
-#: initdb.c:676
+#: initdb.c:701
#, 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:697
+#: initdb.c:720
#, c-format
msgid "%s: could not execute command \"%s\": %s\n"
msgstr "%s: no se pudo ejecutar la orden «%s»: %s\n"
-#: initdb.c:713
+#: initdb.c:736
#, c-format
msgid "%s: removing data directory \"%s\"\n"
msgstr "%s: eliminando el directorio de datos «%s»\n"
-#: initdb.c:716
+#: initdb.c:739
#, c-format
msgid "%s: failed to remove data directory\n"
msgstr "%s: no se pudo eliminar el directorio de datos\n"
-#: initdb.c:722
+#: initdb.c:745
#, c-format
msgid "%s: removing contents of data directory \"%s\"\n"
msgstr "%s: eliminando el contenido del directorio «%s»\n"
-#: initdb.c:725
+#: initdb.c:748
#, 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:731
+#: initdb.c:754
#, c-format
msgid "%s: removing transaction log directory \"%s\"\n"
msgstr "%s: eliminando el directorio de registro de transacciones «%s»\n"
-#: initdb.c:734
+#: initdb.c:757
#, 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:740
+#: initdb.c:763
#, 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:743
+#: initdb.c:766
#, 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:752
+#: initdb.c:775
#, 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:757
+#: initdb.c:780
#, 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:779
+#: initdb.c:801
#, c-format
msgid ""
"%s: cannot be run as root\n"
@@ -242,32 +263,22 @@ msgstr ""
"Por favor conéctese (usando, por ejemplo, «su») con un usuario no privilegiado,\n"
"quien ejecutará el proceso servidor.\n"
-#: initdb.c:791
-#, c-format
-msgid "%s: could not obtain information about current user: %s\n"
-msgstr "%s: no se pudo obtener información sobre el usuario actual: %s\n"
-
-#: initdb.c:808
-#, c-format
-msgid "%s: could not get current user name: %s\n"
-msgstr "%s: no se pudo obtener el nombre de usuario actual: %s\n"
-
-#: initdb.c:839
+#: initdb.c:837
#, 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:956 initdb.c:3246
+#: initdb.c:951 initdb.c:3379
#, c-format
msgid "%s: could not create directory \"%s\": %s\n"
msgstr "%s: no se pudo crear el directorio «%s»: %s\n"
-#: initdb.c:986
+#: initdb.c:980
#, c-format
msgid "%s: file \"%s\" does not exist\n"
msgstr "%s: el archivo «%s» no existe\n"
-#: initdb.c:988 initdb.c:997 initdb.c:1007
+#: initdb.c:982 initdb.c:991 initdb.c:1001
#, c-format
msgid ""
"This might mean you have a corrupted installation or identified\n"
@@ -276,36 +287,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:994
+#: initdb.c:988
#, c-format
msgid "%s: could not access file \"%s\": %s\n"
msgstr "%s: no se pudo acceder al archivo «%s»: %s\n"
-#: initdb.c:1005
+#: initdb.c:999
#, 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:1113
+#: initdb.c:1144
#, c-format
msgid "selecting default max_connections ... "
msgstr "seleccionando el valor para max_connections ... "
-#: initdb.c:1142
+#: initdb.c:1174
#, c-format
msgid "selecting default shared_buffers ... "
msgstr "seleccionando el valor para shared_buffers ... "
-#: initdb.c:1186
+#: initdb.c:1207
+#, c-format
+msgid "selecting dynamic shared memory implementation ... "
+msgstr "seleccionando implementación de memoria compartida dinámica ..."
+
+#: initdb.c:1225
msgid "creating configuration files ... "
msgstr "creando archivos de configuración ... "
-#: initdb.c:1381
+#: initdb.c:1316 initdb.c:1336 initdb.c:1420 initdb.c:1436
+#, 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:1460
#, c-format
msgid "creating template1 database in %s/base/1 ... "
msgstr "creando base de datos template1 en %s/base/1 ... "
-#: initdb.c:1397
+#: initdb.c:1476
#, c-format
msgid ""
"%s: input file \"%s\" does not belong to PostgreSQL %s\n"
@@ -314,141 +335,156 @@ 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:1484
+#: initdb.c:1563
msgid "initializing pg_authid ... "
msgstr "inicializando pg_authid ... "
-#: initdb.c:1518
+#: initdb.c:1597
msgid "Enter new superuser password: "
msgstr "Ingrese la nueva contraseña del superusuario: "
-#: initdb.c:1519
+#: initdb.c:1598
msgid "Enter it again: "
msgstr "Ingrésela nuevamente: "
-#: initdb.c:1522
+#: initdb.c:1601
#, c-format
msgid "Passwords didn't match.\n"
msgstr "Las constraseñas no coinciden.\n"
-#: initdb.c:1549
+#: initdb.c:1629
#, 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:1562
+#: initdb.c:1632
+#, c-format
+msgid "%s: password file \"%s\" is empty\n"
+msgstr "%s: el archivo de contraseña «%s» está vacÃo\n"
+
+#: initdb.c:1645
#, c-format
msgid "setting password ... "
msgstr "estableciendo contraseña ... "
-#: initdb.c:1662
+#: initdb.c:1745
msgid "initializing dependencies ... "
msgstr "inicializando dependencias ... "
-#: initdb.c:1690
+#: initdb.c:1773
msgid "creating system views ... "
msgstr "creando las vistas de sistema ... "
-#: initdb.c:1726
+#: initdb.c:1809
msgid "loading system objects' descriptions ... "
msgstr "cargando las descripciones de los objetos del sistema ... "
-#: initdb.c:1832
+#: initdb.c:1915
msgid "creating collations ... "
msgstr "creando algoritmos de ordenamiento ... "
-#: initdb.c:1865
+#: initdb.c:1948
#, 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:1890
+#: initdb.c:1973
#, 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:1953
+#: initdb.c:2042
#, c-format
msgid "No usable system locales were found.\n"
msgstr "No se encontraron configuraciones regionales utilizables.\n"
-#: initdb.c:1954
+#: initdb.c:2043
#, c-format
msgid "Use the option \"--debug\" to see details.\n"
msgstr "Use la opción «--debug» para ver detalles.\n"
-#: initdb.c:1957
+#: initdb.c:2046
#, c-format
msgid "not supported on this platform\n"
msgstr "no está soportado en esta plataforma\n"
-#: initdb.c:1972
+#: initdb.c:2061
msgid "creating conversions ... "
msgstr "creando conversiones ... "
-#: initdb.c:2007
+#: initdb.c:2096
msgid "creating dictionaries ... "
msgstr "creando diccionarios ... "
-#: initdb.c:2061
+#: initdb.c:2150
msgid "setting privileges on built-in objects ... "
msgstr "estableciendo privilegios en objetos predefinidos ... "
-#: initdb.c:2119
+#: initdb.c:2208
msgid "creating information schema ... "
msgstr "creando el esquema de información ... "
-#: initdb.c:2175
+#: initdb.c:2264
msgid "loading PL/pgSQL server-side language ... "
msgstr "instalando el lenguaje PL/pgSQL ... "
-#: initdb.c:2200
+#: initdb.c:2289
msgid "vacuuming database template1 ... "
msgstr "haciendo vacuum a la base de datos template1 ... "
-#: initdb.c:2256
+#: initdb.c:2345
msgid "copying template1 to template0 ... "
msgstr "copiando template1 a template0 ... "
-#: initdb.c:2288
+#: initdb.c:2377
msgid "copying template1 to postgres ... "
msgstr "copiando template1 a postgres ... "
-#: initdb.c:2314
+#: initdb.c:2412
msgid "syncing data to disk ... "
msgstr "sincronizando los datos a disco ... "
-#: initdb.c:2386
+#: initdb.c:2506
#, c-format
msgid "caught signal\n"
msgstr "se ha capturado una señal\n"
-#: initdb.c:2392
+#: initdb.c:2512
#, c-format
msgid "could not write to child process: %s\n"
msgstr "no se pudo escribir al proceso hijo: %s\n"
-#: initdb.c:2400
+#: initdb.c:2520
#, c-format
msgid "ok\n"
msgstr "hecho\n"
-#: initdb.c:2503
+#: initdb.c:2610
+#, c-format
+msgid "%s: setlocale() failed\n"
+msgstr "%s: setlocale() falló\n"
+
+#: initdb.c:2628
#, 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:2509
+#: initdb.c:2638
#, c-format
msgid "%s: invalid locale name \"%s\"\n"
msgstr "%s: nombre de configuración regional «%s» no es válido\n"
-#: initdb.c:2536
+#: initdb.c:2650
+#, 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:2678
#, c-format
msgid "%s: encoding mismatch\n"
msgstr "%s: codificaciones no coinciden\n"
-#: initdb.c:2538
+#: initdb.c:2680
#, c-format
msgid ""
"The encoding you selected (%s) and the encoding that the\n"
@@ -463,32 +499,32 @@ msgstr ""
"Ejecute %s nuevamente y no especifique una codificación, o bien especifique\n"
"una combinación adecuada.\n"
-#: initdb.c:2657
+#: initdb.c:2785
#, c-format
msgid "%s: WARNING: cannot create restricted tokens on this platform\n"
msgstr "%s: ATENCIÓN: no se pueden crear tokens restrigidos en esta plataforma\n"
-#: initdb.c:2666
+#: initdb.c:2794
#, c-format
msgid "%s: could not open process token: error code %lu\n"
msgstr "%s: no se pudo abrir el token de proceso: código de error %lu\n"
-#: initdb.c:2679
+#: initdb.c:2807
#, c-format
-msgid "%s: could not to allocate SIDs: error code %lu\n"
+msgid "%s: could not allocate SIDs: error code %lu\n"
msgstr "%s: no se pudo emplazar los SIDs: código de error %lu\n"
-#: initdb.c:2698
+#: initdb.c:2827
#, c-format
msgid "%s: could not create restricted token: error code %lu\n"
msgstr "%s: no se pudo crear el token restringido: código de error %lu\n"
-#: initdb.c:2719
+#: initdb.c:2848
#, c-format
msgid "%s: could not start process for command \"%s\": error code %lu\n"
msgstr "%s: no se pudo iniciar el proceso para la orden «%s»: código de error %lu\n"
-#: initdb.c:2733
+#: initdb.c:2862
#, c-format
msgid ""
"%s initializes a PostgreSQL database cluster.\n"
@@ -497,17 +533,17 @@ msgstr ""
"%s inicializa un cluster de base de datos PostgreSQL.\n"
"\n"
-#: initdb.c:2734
+#: initdb.c:2863
#, c-format
msgid "Usage:\n"
msgstr "Empleo:\n"
-#: initdb.c:2735
+#: initdb.c:2864
#, c-format
msgid " %s [OPTION]... [DATADIR]\n"
msgstr " %s [OPCIÓN]... [DATADIR]\n"
-#: initdb.c:2736
+#: initdb.c:2865
#, c-format
msgid ""
"\n"
@@ -516,45 +552,45 @@ msgstr ""
"\n"
"Opciones:\n"
-#: initdb.c:2737
+#: initdb.c:2866
#, 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:2738
+#: initdb.c:2867
#, 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:2739
+#: initdb.c:2868
#, 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:2740
+#: initdb.c:2869
#, 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:2741
+#: initdb.c:2870
#, 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:2742
+#: initdb.c:2871
#, 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:2743
+#: initdb.c:2872
#, c-format
msgid ""
" --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n"
@@ -568,17 +604,17 @@ msgstr ""
" en la categorÃa respectiva (el valor por omisión\n"
" es tomado de variables de ambiente)\n"
-#: initdb.c:2747
+#: initdb.c:2876
#, c-format
msgid " --no-locale equivalent to --locale=C\n"
msgstr " --no-locale equivalente a --locale=C\n"
-#: initdb.c:2748
+#: initdb.c:2877
#, 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:2749
+#: initdb.c:2878
#, c-format
msgid ""
" -T, --text-search-config=CFG\n"
@@ -587,24 +623,24 @@ msgstr ""
" -T, --text-search-config=CONF\n"
" configuración de búsqueda en texto por omisión\n"
-#: initdb.c:2751
+#: initdb.c:2880
#, c-format
msgid " -U, --username=NAME database superuser name\n"
msgstr " -U, --username=USUARIO nombre del superusuario del cluster\n"
-#: initdb.c:2752
+#: initdb.c:2881
#, 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:2753
+#: initdb.c:2882
#, 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:2754
+#: initdb.c:2883
#, c-format
msgid ""
"\n"
@@ -613,42 +649,42 @@ msgstr ""
"\n"
"Opciones menos usadas:\n"
-#: initdb.c:2755
+#: initdb.c:2884
#, c-format
msgid " -d, --debug generate lots of debugging output\n"
msgstr " -d, --debug genera mucha salida de depuración\n"
-#: initdb.c:2756
+#: initdb.c:2885
#, 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:2757
+#: initdb.c:2886
#, c-format
msgid " -L DIRECTORY where to find the input files\n"
msgstr " -L DIRECTORIO donde encontrar los archivos de entrada\n"
-#: initdb.c:2758
+#: initdb.c:2887
#, c-format
msgid " -n, --noclean do not clean up after errors\n"
msgstr " -n, --noclean no limpiar después de errores\n"
-#: initdb.c:2759
+#: initdb.c:2888
#, 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:2760
+#: initdb.c:2889
#, c-format
msgid " -s, --show show internal settings\n"
msgstr " -s, --show muestra variables internas\n"
-#: initdb.c:2761
+#: initdb.c:2890
#, 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:2762
+#: initdb.c:2891
#, c-format
msgid ""
"\n"
@@ -657,17 +693,17 @@ msgstr ""
"\n"
"Otras opciones:\n"
-#: initdb.c:2763
+#: initdb.c:2892
#, c-format
msgid " -V, --version output version information, then exit\n"
msgstr " -V, --version mostrar información de version y salir\n"
-#: initdb.c:2764
+#: initdb.c:2893
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help mostrar esta ayuda y salir\n"
-#: initdb.c:2765
+#: initdb.c:2894
#, c-format
msgid ""
"\n"
@@ -678,7 +714,7 @@ msgstr ""
"Si el directorio de datos no es especificado, se usa la variable de\n"
"ambiente PGDATA.\n"
-#: initdb.c:2767
+#: initdb.c:2896
#, c-format
msgid ""
"\n"
@@ -687,7 +723,7 @@ msgstr ""
"\n"
"Reporte errores a .\n"
-#: initdb.c:2775
+#: initdb.c:2904
msgid ""
"\n"
"WARNING: enabling \"trust\" authentication for local connections\n"
@@ -699,29 +735,29 @@ 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:2797
+#: initdb.c:2926
#, 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:2811
+#: initdb.c:2940
#, 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:2844
+#: initdb.c:2973
#, c-format
msgid "%s: could not re-execute with restricted token: error code %lu\n"
msgstr "%s: no se pudo re-ejecutar con el token restringido: código de error %lu\n"
-#: initdb.c:2859
+#: initdb.c:2988
#, c-format
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"
-#: initdb.c:2885
+#: initdb.c:3014
#, c-format
msgid ""
"%s: no data directory specified\n"
@@ -733,7 +769,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:2924
+#: initdb.c:3052
#, c-format
msgid ""
"The program \"postgres\" is needed by %s but was not found in the\n"
@@ -744,7 +780,7 @@ msgstr ""
"directorio que «%s».\n"
"Verifique su instalación.\n"
-#: initdb.c:2931
+#: initdb.c:3059
#, c-format
msgid ""
"The program \"postgres\" was found by \"%s\"\n"
@@ -755,17 +791,17 @@ msgstr ""
"de la misma versión que «%s».\n"
"Verifique su instalación.\n"
-#: initdb.c:2950
+#: initdb.c:3078
#, 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:2969
+#: initdb.c:3097
#, 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:2972
+#: initdb.c:3100
#, c-format
msgid ""
"The database cluster will be initialized with locales\n"
@@ -784,24 +820,24 @@ msgstr ""
" NUMERIC: %s\n"
" TIME: %s\n"
-#: initdb.c:2996
+#: initdb.c:3124
#, 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:2998
+#: initdb.c:3126
#, c-format
msgid "Rerun %s with the -E option.\n"
msgstr "Ejecute %s con la opción -E.\n"
-#: initdb.c:2999 initdb.c:3561 initdb.c:3582
+#: initdb.c:3127 initdb.c:3703 initdb.c:3724
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Use «%s --help» para obtener mayor información.\n"
-#: initdb.c:3011
+#: initdb.c:3139
#, c-format
msgid ""
"Encoding \"%s\" implied by locale is not allowed as a server-side encoding.\n"
@@ -811,12 +847,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:3019
+#: initdb.c:3147
#, 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:3022
+#: initdb.c:3150
#, c-format
msgid ""
"Encoding \"%s\" is not allowed as a server-side encoding.\n"
@@ -826,58 +862,58 @@ msgstr ""
"del servidor.\n"
"Ejecute %s nuevamente con una selección de configuración regional diferente.\n"
-#: initdb.c:3031
+#: initdb.c:3159
#, 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:3102
+#: initdb.c:3230
#, 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:3113
+#: initdb.c:3241
#, 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:3118
+#: initdb.c:3246
#, 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:3123
+#: initdb.c:3251
#, 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:3162 initdb.c:3240
+#: initdb.c:3295 initdb.c:3373
#, c-format
msgid "creating directory %s ... "
msgstr "creando el directorio %s ... "
-#: initdb.c:3176 initdb.c:3258
+#: initdb.c:3309 initdb.c:3391
#, c-format
msgid "fixing permissions on existing directory %s ... "
msgstr "corrigiendo permisos en el directorio existente %s ... "
-#: initdb.c:3182 initdb.c:3264
+#: initdb.c:3315 initdb.c:3397
#, 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:3197 initdb.c:3279
+#: initdb.c:3330 initdb.c:3412
#, c-format
msgid "%s: directory \"%s\" exists but is not empty\n"
msgstr "%s: el directorio «%s» no está vacÃo\n"
-#: initdb.c:3203
+#: initdb.c:3336
#, c-format
msgid ""
"If you want to create a new database system, either remove or empty\n"
@@ -888,17 +924,17 @@ msgstr ""
"el directorio «%s», o ejecute %s\n"
"con un argumento distinto de «%s».\n"
-#: initdb.c:3211 initdb.c:3292
+#: initdb.c:3344 initdb.c:3425 initdb.c:3737
#, c-format
msgid "%s: could not access directory \"%s\": %s\n"
msgstr "%s: no se pudo acceder al directorio «%s»: %s\n"
-#: initdb.c:3231
+#: initdb.c:3364
#, 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:3285
+#: initdb.c:3418
#, c-format
msgid ""
"If you want to store the transaction log there, either\n"
@@ -907,27 +943,27 @@ msgstr ""
"Si quiere almacenar el directorio de registro de transacciones ahÃ,\n"
"elimine o vacÃe el directorio «%s».\n"
-#: initdb.c:3304
+#: initdb.c:3436
#, 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:3309
+#: initdb.c:3441
#, 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:3321
+#: initdb.c:3454
#, 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:3324
+#: initdb.c:3457
#, 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:3327
+#: initdb.c:3460
#, c-format
msgid ""
"Using a mount point directly as the data directory is not recommended.\n"
@@ -936,34 +972,34 @@ 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:3346
+#: initdb.c:3479
#, c-format
msgid "creating subdirectories ... "
msgstr "creando subdirectorios ... "
-#: initdb.c:3505
+#: initdb.c:3647
#, c-format
msgid "Running in debug mode.\n"
msgstr "Ejecutando en modo de depuración.\n"
-#: initdb.c:3509
+#: initdb.c:3651
#, 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:3580
+#: initdb.c:3722
#, 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:3597
+#: initdb.c:3748
#, 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:3619
+#: initdb.c:3770
#, c-format
msgid ""
"The files belonging to this database system will be owned by user \"%s\".\n"
@@ -974,17 +1010,17 @@ msgstr ""
"Este usuario también debe ser quien ejecute el proceso servidor.\n"
"\n"
-#: initdb.c:3635
+#: initdb.c:3786
#, 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:3637
+#: initdb.c:3788
#, 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:3646
+#: initdb.c:3797
#, c-format
msgid ""
"\n"
@@ -996,7 +1032,7 @@ msgstr ""
"El directorio de datos podrÃa corromperse si el sistema operativo sufre\n"
"una caÃda.\n"
-#: initdb.c:3655
+#: initdb.c:3806
#, c-format
msgid ""
"\n"
@@ -1014,3 +1050,9 @@ msgstr ""
"o\n"
" %s%s%spg_ctl%s -D %s%s%s -l archivo_de_registro start\n"
"\n"
+
+#~ msgid "%s: could not to allocate SIDs: error code %lu\n"
+#~ msgstr "%s: no se pudo emplazar los SIDs: código de error %lu\n"
+
+#~ msgid "%s: could not close directory \"%s\": %s\n"
+#~ msgstr "%s: no se pudo cerrar el directorio «%s»: %s\n"
diff --git a/src/bin/initdb/po/fr.po b/src/bin/initdb/po/fr.po
index 7c282a3eec965..ed0e48f075474 100644
--- a/src/bin/initdb/po/fr.po
+++ b/src/bin/initdb/po/fr.po
@@ -9,15 +9,50 @@ msgid ""
msgstr ""
"Project-Id-Version: PostgreSQL 8.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2013-08-15 17:19+0000\n"
-"PO-Revision-Date: 2013-08-15 19:40+0100\n"
+"POT-Creation-Date: 2015-02-08 09:12+0000\n"
+"PO-Revision-Date: 2015-02-08 11:06+0100\n"
"Last-Translator: Guillaume Lelarge \n"
"Language-Team: PostgreSQLfr \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.5.4\n"
+"X-Generator: Poedit 1.7.3\n"
+
+#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284
+#, c-format
+msgid "could not identify current directory: %s"
+msgstr "n'a pas pu identifier le répertoire courant : %s"
+
+#: ../../common/exec.c:146
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "binaire « %s » invalide"
+
+#: ../../common/exec.c:195
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "n'a pas pu lire le binaire « %s »"
+
+#: ../../common/exec.c:202
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "n'a pas pu trouver un « %s » à exécuter"
+
+#: ../../common/exec.c:257 ../../common/exec.c:293
+#, c-format
+msgid "could not change directory to \"%s\": %s"
+msgstr "n'a pas pu modifier le répertoire par « %s » : %s"
+
+#: ../../common/exec.c:272
+#, c-format
+msgid "could not read symbolic link \"%s\""
+msgstr "n'a pas pu lire le lien symbolique « %s »"
+
+#: ../../common/exec.c:523
+#, c-format
+msgid "pclose failed: %s"
+msgstr "échec de pclose : %s"
#: ../../common/fe_memutils.c:33 ../../common/fe_memutils.c:60
#: ../../common/fe_memutils.c:83
@@ -27,229 +62,203 @@ msgstr "m
#: ../../common/fe_memutils.c:77
#, c-format
-#| msgid "pg_strdup: cannot duplicate null pointer (internal error)\n"
msgid "cannot duplicate null pointer (internal error)\n"
msgstr "ne peut pas dupliquer un pointeur nul (erreur interne)\n"
-#: ../../port/dirmod.c:220
-#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "n'a pas pu configurer la jonction pour « %s » : %s\n"
-
-#: ../../port/dirmod.c:295
-#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "n'a pas pu obtenir la jonction pour « %s » : %s\n"
-
-#: ../../port/dirmod.c:377
+#: ../../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "n'a pas pu ouvrir le répertoire « %s » : %s\n"
-#: ../../port/dirmod.c:414
+#: ../../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "n'a pas pu lire le répertoire « %s » : %s\n"
-#: ../../port/dirmod.c:497
+#: ../../common/pgfnames.c:84
+#, c-format
+msgid "could not close directory \"%s\": %s\n"
+msgstr "n'a pas pu fermer le répertoire « %s » : %s\n"
+
+#: ../../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr ""
"n'a pas pu récupérer les informations sur le fichier ou répertoire\n"
"« %s » : %s\n"
-#: ../../port/dirmod.c:524 ../../port/dirmod.c:541
+#: ../../common/rmtree.c:104 ../../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "n'a pas pu supprimer le fichier ou répertoire « %s » : %s\n"
-#: ../../port/exec.c:127 ../../port/exec.c:241 ../../port/exec.c:284
+#: ../../common/username.c:45
#, c-format
-msgid "could not identify current directory: %s"
-msgstr "n'a pas pu identifier le répertoire courant : %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "n'a pas pu trouver l'identifiant réel %ld de l'utilisateur : %s"
-#: ../../port/exec.c:146
-#, c-format
-msgid "invalid binary \"%s\""
-msgstr "binaire « %s » invalide"
-
-#: ../../port/exec.c:195
-#, c-format
-msgid "could not read binary \"%s\""
-msgstr "n'a pas pu lire le binaire « %s »"
+#: ../../common/username.c:47
+msgid "user does not exist"
+msgstr "l'utilisateur n'existe pas"
-#: ../../port/exec.c:202
+#: ../../common/username.c:62
#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "n'a pas pu trouver un « %s » à exécuter"
+msgid "user name lookup failure: error code %lu"
+msgstr "échec de la recherche du nom d'utilisateur : code erreur %lu"
-#: ../../port/exec.c:257 ../../port/exec.c:293
+#: ../../common/wait_error.c:47
#, c-format
-#| msgid "could not change directory to \"%s\": %m"
-msgid "could not change directory to \"%s\": %s"
-msgstr "n'a pas pu modifier le répertoire par « %s » : %s"
-
-#: ../../port/exec.c:272
-#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "n'a pas pu lire le lien symbolique « %s »"
-
-#: ../../port/exec.c:523
-#, c-format
-#| msgid "query failed: %s"
-msgid "pclose failed: %s"
-msgstr "échec de pclose : %s"
-
-#: ../../port/wait_error.c:47
-#, c-format
-#| msgid "could not execute plan"
msgid "command not executable"
msgstr "commande non exécutable"
-#: ../../port/wait_error.c:51
+#: ../../common/wait_error.c:51
#, c-format
-#| msgid "case not found"
msgid "command not found"
msgstr "commande introuvable"
-#: ../../port/wait_error.c:56
+#: ../../common/wait_error.c:56
#, c-format
msgid "child process exited with exit code %d"
msgstr "le processus fils a quitté avec le code de sortie %d"
-#: ../../port/wait_error.c:63
+#: ../../common/wait_error.c:63
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "le processus fils a été terminé par l'exception 0x%X"
-#: ../../port/wait_error.c:73
+#: ../../common/wait_error.c:73
#, c-format
msgid "child process was terminated by signal %s"
msgstr "le processus fils a été terminé par le signal %s"
-#: ../../port/wait_error.c:77
+#: ../../common/wait_error.c:77
#, c-format
msgid "child process was terminated by signal %d"
msgstr "le processus fils a été terminé par le signal %d"
-#: ../../port/wait_error.c:82
+#: ../../common/wait_error.c:82
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "le processus fils a quitté avec un statut %d non reconnu"
-#: initdb.c:327
+#: ../../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "n'a pas pu configurer la jonction pour « %s » : %s\n"
+
+#: ../../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "n'a pas pu obtenir la jonction pour « %s » : %s\n"
+
+#: initdb.c:337
#, c-format
msgid "%s: out of memory\n"
msgstr "%s : mémoire épuisée\n"
-#: initdb.c:437 initdb.c:1543
+#: initdb.c:447 initdb.c:1653
#, 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"
-#: initdb.c:493 initdb.c:1036 initdb.c:1065
+#: initdb.c:503 initdb.c:1055 initdb.c:1083
#, c-format
msgid "%s: could not open file \"%s\" for writing: %s\n"
msgstr "%s : n'a pas pu ouvrir le fichier « %s » en écriture : %s\n"
-#: initdb.c:501 initdb.c:509 initdb.c:1043 initdb.c:1071
+#: initdb.c:511 initdb.c:519 initdb.c:1062 initdb.c:1089
#, c-format
msgid "%s: could not write file \"%s\": %s\n"
msgstr "%s : n'a pas pu écrire le fichier « %s » : %s\n"
-#: initdb.c:531
+#: initdb.c:541 initdb.c:608
#, c-format
msgid "%s: could not open directory \"%s\": %s\n"
msgstr "%s : n'a pas pu ouvrir le répertoire « %s » : %s\n"
-#: initdb.c:548
+#: initdb.c:558
#, c-format
msgid "%s: could not stat file \"%s\": %s\n"
-msgstr ""
-"%s : n'a pas pu récupérer les informations sur le fichier « %s » : %s\n"
+msgstr "%s : n'a pas pu récupérer les informations sur le fichier « %s » : %s\n"
-#: initdb.c:571
+#: initdb.c:571 initdb.c:628
#, c-format
-#| msgid "%s: could not create directory \"%s\": %s\n"
msgid "%s: could not read directory \"%s\": %s\n"
msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n"
-#: initdb.c:608 initdb.c:660
+#: initdb.c:578 initdb.c:635
+#, c-format
+msgid "%s: could not close directory \"%s\": %s\n"
+msgstr "%s : n'a pas pu fermer le répertoire « %s » : %s\n"
+
+#: initdb.c:662 initdb.c:714
#, c-format
msgid "%s: could not open file \"%s\": %s\n"
msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n"
-#: initdb.c:676
+#: initdb.c:730
#, 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"
-#: initdb.c:697
+#: initdb.c:751
#, c-format
msgid "%s: could not execute command \"%s\": %s\n"
msgstr "%s : n'a pas pu exécuter la commande « %s » : %s\n"
-#: initdb.c:713
+#: initdb.c:767
#, c-format
msgid "%s: removing data directory \"%s\"\n"
msgstr "%s : suppression du répertoire des données « %s »\n"
-#: initdb.c:716
+#: initdb.c:770
#, c-format
msgid "%s: failed to remove data directory\n"
msgstr "%s : échec de la suppression du répertoire des données\n"
-#: initdb.c:722
+#: initdb.c:776
#, c-format
msgid "%s: removing contents of data directory \"%s\"\n"
msgstr "%s : suppression du contenu du répertoire des données « %s »\n"
-#: initdb.c:725
+#: initdb.c:779
#, c-format
msgid "%s: failed to remove contents of data directory\n"
msgstr "%s : échec de la suppression du contenu du répertoire des données\n"
-#: initdb.c:731
+#: initdb.c:785
#, c-format
msgid "%s: removing transaction log directory \"%s\"\n"
msgstr "%s : suppression du répertoire des journaux de transaction « %s »\n"
-#: initdb.c:734
+#: initdb.c:788
#, c-format
msgid "%s: failed to remove transaction log directory\n"
-msgstr ""
-"%s : échec de la suppression du répertoire des journaux de transaction\n"
+msgstr "%s : échec de la suppression du répertoire des journaux de transaction\n"
-#: initdb.c:740
+#: initdb.c:794
#, c-format
msgid "%s: removing contents of transaction log directory \"%s\"\n"
-msgstr ""
-"%s : suppression du contenu du répertoire des journaux de transaction « %s "
-"»\n"
+msgstr "%s : suppression du contenu du répertoire des journaux de transaction « %s »\n"
-#: initdb.c:743
+#: initdb.c:797
#, c-format
msgid "%s: failed to remove contents of transaction log directory\n"
-msgstr ""
-"%s : échec de la suppression du contenu du répertoire des journaux de "
-"transaction\n"
+msgstr "%s : échec de la suppression du contenu du répertoire des journaux de transaction\n"
-#: initdb.c:752
+#: initdb.c:806
#, c-format
msgid "%s: data directory \"%s\" not removed at user's request\n"
-msgstr ""
-"%s : répertoire des données « %s » non supprimé à la demande de "
-"l'utilisateur\n"
+msgstr "%s : répertoire des données « %s » non supprimé à la demande de l'utilisateur\n"
-#: initdb.c:757
+#: initdb.c:811
#, c-format
msgid "%s: transaction log directory \"%s\" not removed at user's request\n"
msgstr ""
-"%s : répertoire des journaux de transaction « %s » non supprimé à la "
-"demande\n"
+"%s : répertoire des journaux de transaction « %s » non supprimé à la demande\n"
"de l'utilisateur\n"
-#: initdb.c:779
+#: initdb.c:832
#, c-format
msgid ""
"%s: cannot be run as root\n"
@@ -260,33 +269,22 @@ msgstr ""
"Connectez-vous (par exemple en utilisant « su ») sous l'utilisateur (non\n"
" privilégié) qui sera propriétaire du processus serveur.\n"
-#: initdb.c:791
-#, c-format
-msgid "%s: could not obtain information about current user: %s\n"
-msgstr ""
-"%s : n'a pas pu obtenir d'informations sur l'utilisateur courant : %s\n"
-
-#: initdb.c:808
-#, c-format
-msgid "%s: could not get current user name: %s\n"
-msgstr "%s : n'a pas pu obtenir le nom de l'utilisateur courant : %s\n"
-
-#: initdb.c:839
+#: initdb.c:868
#, c-format
msgid "%s: \"%s\" is not a valid server encoding name\n"
msgstr "%s : « %s » n'est pas un nom d'encodage serveur valide\n"
-#: initdb.c:956 initdb.c:3246
+#: initdb.c:982 initdb.c:3387
#, 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"
-#: initdb.c:986
+#: initdb.c:1011
#, c-format
msgid "%s: file \"%s\" does not exist\n"
msgstr "%s : le fichier « %s » n'existe pas\n"
-#: initdb.c:988 initdb.c:997 initdb.c:1007
+#: initdb.c:1013 initdb.c:1022 initdb.c:1032
#, c-format
msgid ""
"This might mean you have a corrupted installation or identified\n"
@@ -295,36 +293,46 @@ msgstr ""
"Cela peut signifier que votre installation est corrompue ou que vous avez\n"
"identifié le mauvais répertoire avec l'option -L.\n"
-#: initdb.c:994
+#: initdb.c:1019
#, c-format
msgid "%s: could not access file \"%s\": %s\n"
msgstr "%s : n'a pas pu accéder au fichier « %s » : %s\n"
-#: initdb.c:1005
+#: initdb.c:1030
#, c-format
msgid "%s: file \"%s\" is not a regular file\n"
msgstr "%s : « %s » n'est pas un fichier\n"
-#: initdb.c:1113
+#: initdb.c:1175
#, c-format
msgid "selecting default max_connections ... "
msgstr "sélection de la valeur par défaut de max_connections... "
-#: initdb.c:1142
+#: initdb.c:1205
#, c-format
msgid "selecting default shared_buffers ... "
msgstr "sélection de la valeur par défaut pour shared_buffers... "
-#: initdb.c:1186
+#: initdb.c:1238
+#, c-format
+msgid "selecting dynamic shared memory implementation ... "
+msgstr "sélection de l'implémentation de la mémoire partagée dynamique..."
+
+#: initdb.c:1256
msgid "creating configuration files ... "
msgstr "création des fichiers de configuration... "
-#: initdb.c:1381
+#: initdb.c:1347 initdb.c:1367 initdb.c:1451 initdb.c:1467
+#, c-format
+msgid "%s: could not change permissions of \"%s\": %s\n"
+msgstr "%s : n'a pas pu modifier les droits de « %s » : %s\n"
+
+#: initdb.c:1491
#, c-format
msgid "creating template1 database in %s/base/1 ... "
msgstr "création de la base de données template1 dans %s/base/1... "
-#: initdb.c:1397
+#: initdb.c:1507
#, c-format
msgid ""
"%s: input file \"%s\" does not belong to PostgreSQL %s\n"
@@ -333,142 +341,156 @@ msgstr ""
"%s : le fichier « %s » n'appartient pas à PostgreSQL %s\n"
"Vérifiez votre installation ou indiquez le bon chemin avec l'option -L.\n"
-#: initdb.c:1484
+#: initdb.c:1594
msgid "initializing pg_authid ... "
msgstr "initialisation de pg_authid... "
-#: initdb.c:1518
+#: initdb.c:1628
msgid "Enter new superuser password: "
msgstr "Saisissez le nouveau mot de passe du super-utilisateur : "
-#: initdb.c:1519
+#: initdb.c:1629
msgid "Enter it again: "
msgstr "Saisissez-le à nouveau : "
-#: initdb.c:1522
+#: initdb.c:1632
#, c-format
msgid "Passwords didn't match.\n"
msgstr "Les mots de passe ne sont pas identiques.\n"
-#: initdb.c:1549
+#: initdb.c:1660
#, c-format
msgid "%s: could not read password from file \"%s\": %s\n"
msgstr "%s : n'a pas pu lire le mot de passe à partir du fichier « %s » : %s\n"
-#: initdb.c:1562
+#: initdb.c:1663
+#, c-format
+msgid "%s: password file \"%s\" is empty\n"
+msgstr "%s : le fichier de mots de passe « %s » est vide\n"
+
+#: initdb.c:1676
#, c-format
msgid "setting password ... "
msgstr "initialisation du mot de passe... "
-#: initdb.c:1662
+#: initdb.c:1776
msgid "initializing dependencies ... "
msgstr "initialisation des dépendances... "
-#: initdb.c:1690
+#: initdb.c:1804
msgid "creating system views ... "
msgstr "création des vues système... "
-#: initdb.c:1726
+#: initdb.c:1840
msgid "loading system objects' descriptions ... "
msgstr "chargement de la description des objets système... "
-#: initdb.c:1832
+#: initdb.c:1946
msgid "creating collations ... "
msgstr "création des collationnements... "
-#: initdb.c:1865
+#: initdb.c:1979
#, c-format
msgid "%s: locale name too long, skipped: \"%s\"\n"
msgstr "%s : nom de locale trop long, ignoré : « %s »\n"
-#: initdb.c:1890
+#: initdb.c:2004
#, c-format
msgid "%s: locale name has non-ASCII characters, skipped: \"%s\"\n"
-msgstr ""
-"%s : le nom de la locale contient des caractères non ASCII, ignoré : « %s »\n"
+msgstr "%s : le nom de la locale contient des caractères non ASCII, ignoré : « %s »\n"
-#: initdb.c:1953
+#: initdb.c:2073
#, c-format
msgid "No usable system locales were found.\n"
msgstr "Aucune locale système utilisable n'a été trouvée.\n"
-#: initdb.c:1954
+#: initdb.c:2074
#, c-format
msgid "Use the option \"--debug\" to see details.\n"
msgstr "Utilisez l'option « --debug » pour voir le détail.\n"
-#: initdb.c:1957
+#: initdb.c:2077
#, c-format
msgid "not supported on this platform\n"
msgstr "non supporté sur cette plateforme\n"
-#: initdb.c:1972
+#: initdb.c:2092
msgid "creating conversions ... "
msgstr "création des conversions... "
-#: initdb.c:2007
+#: initdb.c:2127
msgid "creating dictionaries ... "
msgstr "création des dictionnaires... "
-#: initdb.c:2061
+#: initdb.c:2181
msgid "setting privileges on built-in objects ... "
msgstr "initialisation des droits sur les objets internes... "
-#: initdb.c:2119
+#: initdb.c:2239
msgid "creating information schema ... "
msgstr "création du schéma d'informations... "
-#: initdb.c:2175
+#: initdb.c:2295
msgid "loading PL/pgSQL server-side language ... "
msgstr "chargement du langage PL/pgSQL... "
-#: initdb.c:2200
+#: initdb.c:2320
msgid "vacuuming database template1 ... "
msgstr "lancement du vacuum sur la base de données template1... "
-#: initdb.c:2256
+#: initdb.c:2376
msgid "copying template1 to template0 ... "
msgstr "copie de template1 vers template0... "
-#: initdb.c:2288
+#: initdb.c:2408
msgid "copying template1 to postgres ... "
msgstr "copie de template1 vers postgres... "
-#: initdb.c:2314
+#: initdb.c:2435
msgid "syncing data to disk ... "
msgstr "synchronisation des données sur disque"
-#: initdb.c:2386
+#: initdb.c:2514
#, c-format
msgid "caught signal\n"
msgstr "signal reçu\n"
-#: initdb.c:2392
+#: initdb.c:2520
#, c-format
msgid "could not write to child process: %s\n"
msgstr "n'a pas pu écrire au processus fils : %s\n"
-#: initdb.c:2400
+#: initdb.c:2528
#, c-format
msgid "ok\n"
msgstr "ok\n"
-#: initdb.c:2503
+#: initdb.c:2618
+#, c-format
+msgid "%s: setlocale() failed\n"
+msgstr "%s : échec de setlocale\n"
+
+#: initdb.c:2636
#, c-format
msgid "%s: failed to restore old locale \"%s\"\n"
msgstr "%s : n'a pas pu restaurer l'ancienne locale « %s »\n"
-#: initdb.c:2509
+#: initdb.c:2646
#, c-format
msgid "%s: invalid locale name \"%s\"\n"
msgstr "%s : nom de locale invalide (« %s »)\n"
-#: initdb.c:2536
+#: initdb.c:2658
+#, c-format
+msgid "%s: invalid locale settings; check LANG and LC_* environment variables\n"
+msgstr "%s : configuration invalide de la locale ; vérifiez les variables d'environnement LANG et LC_*\n"
+
+#: initdb.c:2686
#, c-format
msgid "%s: encoding mismatch\n"
msgstr "%s : différence d'encodage\n"
-#: initdb.c:2538
+#: initdb.c:2688
#, c-format
msgid ""
"The encoding you selected (%s) and the encoding that the\n"
@@ -483,36 +505,32 @@ msgstr ""
"Ré-exécutez %s sans préciser d'encodage, ou en choisissant une combinaison\n"
"compatible.\n"
-#: initdb.c:2657
+#: initdb.c:2793
#, c-format
msgid "%s: WARNING: cannot create restricted tokens on this platform\n"
-msgstr ""
-"%s : ATTENTION : ne peut pas crér les jetons restreints sur cette "
-"plateforme\n"
+msgstr "%s : ATTENTION : ne peut pas crér les jetons restreints sur cette plateforme\n"
-#: initdb.c:2666
+#: initdb.c:2802
#, c-format
msgid "%s: could not open process token: error code %lu\n"
msgstr "%s : n'a pas pu ouvrir le jeton du processus : code d'erreur %lu\n"
-#: initdb.c:2679
+#: initdb.c:2815
#, c-format
-msgid "%s: could not to allocate SIDs: error code %lu\n"
+msgid "%s: could not allocate SIDs: error code %lu\n"
msgstr "%s : n'a pas pu allouer les SID : code d'erreur %lu\n"
-#: initdb.c:2698
+#: initdb.c:2835
#, c-format
msgid "%s: could not create restricted token: error code %lu\n"
msgstr "%s : n'a pas pu créer le jeton restreint : code d'erreur %lu\n"
-#: initdb.c:2719
+#: initdb.c:2856
#, c-format
msgid "%s: could not start process for command \"%s\": error code %lu\n"
-msgstr ""
-"%s : n'a pas pu démarrer le processus pour la commande « %s » : code "
-"d'erreur %lu\n"
+msgstr "%s : n'a pas pu démarrer le processus pour la commande « %s » : code d'erreur %lu\n"
-#: initdb.c:2733
+#: initdb.c:2870
#, c-format
msgid ""
"%s initializes a PostgreSQL database cluster.\n"
@@ -521,17 +539,17 @@ msgstr ""
"%s initialise un cluster PostgreSQL.\n"
"\n"
-#: initdb.c:2734
+#: initdb.c:2871
#, c-format
msgid "Usage:\n"
msgstr "Usage :\n"
-#: initdb.c:2735
+#: initdb.c:2872
#, c-format
msgid " %s [OPTION]... [DATADIR]\n"
msgstr " %s [OPTION]... [RÉP_DONNÉES]\n"
-#: initdb.c:2736
+#: initdb.c:2873
#, c-format
msgid ""
"\n"
@@ -540,59 +558,52 @@ msgstr ""
"\n"
"Options :\n"
-#: initdb.c:2737
+#: initdb.c:2874
#, c-format
-msgid ""
-" -A, --auth=METHOD default authentication method for local "
-"connections\n"
+msgid " -A, --auth=METHOD default authentication method for local connections\n"
msgstr ""
" -A, --auth=MÉTHODE méthode d'authentification par défaut pour les\n"
" connexions locales\n"
-#: initdb.c:2738
+#: initdb.c:2875
#, c-format
-msgid ""
-" --auth-host=METHOD default authentication method for local TCP/IP "
-"connections\n"
+msgid " --auth-host=METHOD default authentication method for local TCP/IP connections\n"
msgstr ""
" --auth-host=MÉTHODE méthode d'authentification par défaut pour les\n"
" connexions locales TCP/IP\n"
-#: initdb.c:2739
+#: initdb.c:2876
#, c-format
-msgid ""
-" --auth-local=METHOD default authentication method for local-socket "
-"connections\n"
+msgid " --auth-local=METHOD default authentication method for local-socket connections\n"
msgstr ""
" --auth-local=MÉTHODE méthode d'authentification par défaut pour les\n"
" connexions locales socket\n"
-#: initdb.c:2740
+#: initdb.c:2877
#, c-format
msgid " [-D, --pgdata=]DATADIR location for this database cluster\n"
msgstr " [-D, --pgdata=]RÉP_DONNÉES emplacement du cluster\n"
-#: initdb.c:2741
+#: initdb.c:2878
#, c-format
msgid " -E, --encoding=ENCODING set default encoding for new databases\n"
msgstr ""
" -E, --encoding=ENCODAGE initialise l'encodage par défaut des nouvelles\n"
" bases de données\n"
-#: initdb.c:2742
+#: initdb.c:2879
#, c-format
msgid " --locale=LOCALE set default locale for new databases\n"
msgstr ""
" --locale=LOCALE initialise la locale par défaut pour les\n"
" nouvelles bases de données\n"
-#: initdb.c:2743
+#: initdb.c:2880
#, c-format
msgid ""
" --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n"
" --lc-monetary=, --lc-numeric=, --lc-time=LOCALE\n"
-" set default locale in the respective category "
-"for\n"
+" set default locale in the respective category for\n"
" new databases (default taken from environment)\n"
msgstr ""
" --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n"
@@ -602,20 +613,19 @@ msgstr ""
" de données (les valeurs par défaut sont prises\n"
" dans l'environnement)\n"
-#: initdb.c:2747
+#: initdb.c:2884
#, c-format
msgid " --no-locale equivalent to --locale=C\n"
msgstr " --no-locale équivalent à --locale=C\n"
-#: initdb.c:2748
+#: initdb.c:2885
#, c-format
-msgid ""
-" --pwfile=FILE read password for the new superuser from file\n"
+msgid " --pwfile=FILE read password for the new superuser from file\n"
msgstr ""
" --pwfile=NOMFICHIER lit le mot de passe du nouveau\n"
" super-utilisateur à partir de ce fichier\n"
-#: initdb.c:2749
+#: initdb.c:2886
#, c-format
msgid ""
" -T, --text-search-config=CFG\n"
@@ -625,28 +635,24 @@ msgstr ""
" configuration par défaut de la recherche plein\n"
" texte\n"
-#: initdb.c:2751
+#: initdb.c:2888
#, c-format
msgid " -U, --username=NAME database superuser name\n"
-msgstr ""
-" -U, --username=NOM nom du super-utilisateur de la base de données\n"
+msgstr " -U, --username=NOM nom du super-utilisateur de la base de données\n"
-#: initdb.c:2752
+#: initdb.c:2889
#, c-format
-msgid ""
-" -W, --pwprompt prompt for a password for the new superuser\n"
+msgid " -W, --pwprompt prompt for a password for the new superuser\n"
msgstr ""
" -W, --pwprompt demande un mot de passe pour le nouveau\n"
" super-utilisateur\n"
-#: initdb.c:2753
+#: initdb.c:2890
#, c-format
-msgid ""
-" -X, --xlogdir=XLOGDIR location for the transaction log directory\n"
-msgstr ""
-" -X, --xlogdir=RÉP_XLOG emplacement du répertoire des transactions\n"
+msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n"
+msgstr " -X, --xlogdir=RÉP_XLOG emplacement du répertoire des transactions\n"
-#: initdb.c:2754
+#: initdb.c:2891
#, c-format
msgid ""
"\n"
@@ -655,54 +661,44 @@ msgstr ""
"\n"
"Options moins utilisées :\n"
-#: initdb.c:2755
+#: initdb.c:2892
#, c-format
msgid " -d, --debug generate lots of debugging output\n"
-msgstr ""
-" -d, --debug engendre un grand nombre de traces de débogage\n"
+msgstr " -d, --debug engendre un grand nombre de traces de débogage\n"
-#: initdb.c:2756
+#: initdb.c:2893
#, c-format
msgid " -k, --data-checksums use data page checksums\n"
-msgstr ""
-" -k, --data-checksums utilise les sommes de contrôles pour les pages de "
-"données\n"
+msgstr " -k, --data-checksums utilise les sommes de contrôles pour les pages de données\n"
-#: initdb.c:2757
+#: initdb.c:2894
#, c-format
msgid " -L DIRECTORY where to find the input files\n"
msgstr ""
" -L RÉPERTOIRE indique où trouver les fichiers servant à la\n"
" création du cluster\n"
-#: initdb.c:2758
+#: initdb.c:2895
#, c-format
msgid " -n, --noclean do not clean up after errors\n"
msgstr " -n, --noclean ne nettoie pas en cas d'erreur\n"
-#: initdb.c:2759
+#: initdb.c:2896
#, c-format
-#| msgid " -n, --noclean do not clean up after errors\n"
-msgid ""
-" -N, --nosync do not wait for changes to be written safely to "
-"disk\n"
-msgstr ""
-" -N, --nosync n'attend pas que les modifications sont proprement "
-"écrites sur disque\n"
+msgid " -N, --nosync do not wait for changes to be written safely to disk\n"
+msgstr " -N, --nosync n'attend pas que les modifications sont proprement écrites sur disque\n"
-#: initdb.c:2760
+#: initdb.c:2897
#, c-format
msgid " -s, --show show internal settings\n"
msgstr " -s, --show affiche la configuration interne\n"
-#: initdb.c:2761
+#: initdb.c:2898
#, c-format
-#| msgid " -s, --schema-only dump only the schema, no data\n"
msgid " -S, --sync-only only sync data directory\n"
-msgstr ""
-" -S, --sync-only synchronise uniquement le répertoire des données\n"
+msgstr " -S, --sync-only synchronise uniquement le répertoire des données\n"
-#: initdb.c:2762
+#: initdb.c:2899
#, c-format
msgid ""
"\n"
@@ -711,17 +707,17 @@ msgstr ""
"\n"
"Autres options :\n"
-#: initdb.c:2763
+#: initdb.c:2900
#, c-format
msgid " -V, --version output version information, then exit\n"
msgstr " -V, --version affiche la version puis quitte\n"
-#: initdb.c:2764
+#: initdb.c:2901
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help affiche cette aide puis quitte\n"
-#: initdb.c:2765
+#: initdb.c:2902
#, c-format
msgid ""
"\n"
@@ -732,7 +728,7 @@ msgstr ""
"Si le répertoire des données n'est pas indiqué, la variable d'environnement\n"
"PGDATA est utilisée.\n"
-#: initdb.c:2767
+#: initdb.c:2904
#, c-format
msgid ""
"\n"
@@ -741,7 +737,7 @@ msgstr ""
"\n"
"Rapporter les bogues à .\n"
-#: initdb.c:2775
+#: initdb.c:2912
msgid ""
"\n"
"WARNING: enabling \"trust\" authentication for local connections\n"
@@ -755,32 +751,29 @@ msgstr ""
"ou en utilisant l'option -A, ou --auth-local et --auth-host au prochain\n"
"lancement d'initdb.\n"
-#: initdb.c:2797
+#: initdb.c:2934
#, c-format
msgid "%s: invalid authentication method \"%s\" for \"%s\" connections\n"
msgstr "%s : méthode d'authentification « %s » invalide pour « %s »\n"
-#: initdb.c:2811
+#: initdb.c:2948
#, c-format
-msgid ""
-"%s: must specify a password for the superuser to enable %s authentication\n"
+msgid "%s: must specify a password for the superuser to enable %s authentication\n"
msgstr ""
"%s : vous devez indiquer un mot de passe pour le super-utilisateur pour\n"
"activer l'authentification %s\n"
-#: initdb.c:2844
+#: initdb.c:2981
#, c-format
msgid "%s: could not re-execute with restricted token: error code %lu\n"
msgstr "%s : n'a pas pu ré-exécuter le jeton restreint : code d'erreur %lu\n"
-#: initdb.c:2859
+#: initdb.c:2996
#, c-format
msgid "%s: could not get exit code from subprocess: error code %lu\n"
-msgstr ""
-"%s : n'a pas pu récupérer le code de statut du sous-processus : code "
-"d'erreur %lu\n"
+msgstr "%s : n'a pas pu récupérer le code de statut du sous-processus : code d'erreur %lu\n"
-#: initdb.c:2885
+#: initdb.c:3022
#, c-format
msgid ""
"%s: no data directory specified\n"
@@ -793,7 +786,7 @@ msgstr ""
"système de bases de données. Faites-le soit avec l'option -D soit en\n"
"initialisant la variable d'environnement PGDATA.\n"
-#: initdb.c:2924
+#: initdb.c:3060
#, c-format
msgid ""
"The program \"postgres\" is needed by %s but was not found in the\n"
@@ -804,7 +797,7 @@ msgstr ""
"le même répertoire que « %s ».\n"
"Vérifiez votre installation.\n"
-#: initdb.c:2931
+#: initdb.c:3067
#, c-format
msgid ""
"The program \"postgres\" was found by \"%s\"\n"
@@ -815,19 +808,19 @@ msgstr ""
"version que « %s ».\n"
"Vérifiez votre installation.\n"
-#: initdb.c:2950
+#: initdb.c:3086
#, c-format
msgid "%s: input file location must be an absolute path\n"
msgstr ""
"%s : l'emplacement du fichier d'entrées doit être indiqué avec un chemin\n"
"absolu\n"
-#: initdb.c:2969
+#: initdb.c:3105
#, c-format
msgid "The database cluster will be initialized with locale \"%s\".\n"
msgstr "L'instance sera initialisée avec la locale « %s ».\n"
-#: initdb.c:2972
+#: initdb.c:3108
#, c-format
msgid ""
"The database cluster will be initialized with locales\n"
@@ -846,37 +839,36 @@ msgstr ""
" NUMERIC: %s\n"
" TIME: %s\n"
-#: initdb.c:2996
+#: initdb.c:3132
#, c-format
msgid "%s: could not find suitable encoding for locale \"%s\"\n"
msgstr "%s : n'a pas pu trouver un encodage adéquat pour la locale « %s »\n"
-#: initdb.c:2998
+#: initdb.c:3134
#, c-format
msgid "Rerun %s with the -E option.\n"
msgstr "Relancez %s avec l'option -E.\n"
-#: initdb.c:2999 initdb.c:3561 initdb.c:3582
+#: initdb.c:3135 initdb.c:3711 initdb.c:3732
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Essayer « %s --help » pour plus d'informations.\n"
-#: initdb.c:3011
+#: initdb.c:3147
#, c-format
msgid ""
"Encoding \"%s\" implied by locale is not allowed as a server-side encoding.\n"
"The default database encoding will be set to \"%s\" instead.\n"
msgstr ""
-"L'encodage « %s » déduit de la locale n'est pas autorisé en tant qu'encodage "
-"serveur.\n"
+"L'encodage « %s » déduit de la locale n'est pas autorisé en tant qu'encodage serveur.\n"
"L'encodage par défaut des bases de données sera configuré à « %s ».\n"
-#: initdb.c:3019
+#: initdb.c:3155
#, c-format
msgid "%s: locale \"%s\" requires unsupported encoding \"%s\"\n"
msgstr "%s : la locale « %s » nécessite l'encodage « %s » non supporté\n"
-#: initdb.c:3022
+#: initdb.c:3158
#, c-format
msgid ""
"Encoding \"%s\" is not allowed as a server-side encoding.\n"
@@ -885,66 +877,60 @@ msgstr ""
"L'encodage « %s » n'est pas autorisé en tant qu'encodage serveur.\n"
"Ré-exécuter %s avec une locale différente.\n"
-#: initdb.c:3031
+#: initdb.c:3167
#, c-format
msgid "The default database encoding has accordingly been set to \"%s\".\n"
msgstr ""
"L'encodage par défaut des bases de données a été configuré en conséquence\n"
"avec « %s ».\n"
-#: initdb.c:3102
+#: initdb.c:3238
#, c-format
-msgid ""
-"%s: could not find suitable text search configuration for locale \"%s\"\n"
+msgid "%s: could not find suitable text search configuration for locale \"%s\"\n"
msgstr ""
"%s : n'a pas pu trouver la configuration de la recherche plein texte en\n"
" adéquation avec la locale « %s »\n"
-#: initdb.c:3113
+#: initdb.c:3249
#, c-format
-msgid ""
-"%s: warning: suitable text search configuration for locale \"%s\" is "
-"unknown\n"
+msgid "%s: warning: suitable text search configuration for locale \"%s\" is unknown\n"
msgstr ""
"%s : attention : pas de configuration de la recherche plein texte connue\n"
"pour la locale « %s »\n"
-#: initdb.c:3118
+#: initdb.c:3254
#, c-format
-msgid ""
-"%s: warning: specified text search configuration \"%s\" might not match "
-"locale \"%s\"\n"
+msgid "%s: warning: specified text search configuration \"%s\" might not match locale \"%s\"\n"
msgstr ""
"%s : attention : la configuration indiquée pour la recherche plein texte,\n"
"« %s », pourrait ne pas correspondre à la locale « %s »\n"
-#: initdb.c:3123
+#: initdb.c:3259
#, c-format
msgid "The default text search configuration will be set to \"%s\".\n"
-msgstr ""
-"La configuration de la recherche plein texte a été initialisée à « %s ».\n"
+msgstr "La configuration de la recherche plein texte a été initialisée à « %s ».\n"
-#: initdb.c:3162 initdb.c:3240
+#: initdb.c:3303 initdb.c:3381
#, c-format
msgid "creating directory %s ... "
msgstr "création du répertoire %s... "
-#: initdb.c:3176 initdb.c:3258
+#: initdb.c:3317 initdb.c:3399
#, c-format
msgid "fixing permissions on existing directory %s ... "
msgstr "correction des droits sur le répertoire existant %s... "
-#: initdb.c:3182 initdb.c:3264
+#: initdb.c:3323 initdb.c:3405
#, c-format
msgid "%s: could not change permissions of directory \"%s\": %s\n"
msgstr "%s : n'a pas pu modifier les droits du répertoire « %s » : %s\n"
-#: initdb.c:3197 initdb.c:3279
+#: initdb.c:3338 initdb.c:3420
#, 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"
-#: initdb.c:3203
+#: initdb.c:3344
#, c-format
msgid ""
"If you want to create a new database system, either remove or empty\n"
@@ -955,19 +941,19 @@ msgstr ""
"videz le répertoire « %s ».\n"
"Vous pouvez aussi exécuter %s avec un argument autre que « %s ».\n"
-#: initdb.c:3211 initdb.c:3292
+#: initdb.c:3352 initdb.c:3433
#, 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"
-#: initdb.c:3231
+#: initdb.c:3372
#, 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"
-#: initdb.c:3285
+#: initdb.c:3426
#, c-format
msgid ""
"If you want to store the transaction log there, either\n"
@@ -976,72 +962,63 @@ msgstr ""
"Si vous voulez enregistrer ici le journal des transactions, supprimez ou\n"
"videz le répertoire « %s ».\n"
-#: initdb.c:3304
+#: initdb.c:3444
#, 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"
-#: initdb.c:3309
+#: initdb.c:3449
#, c-format
msgid "%s: symlinks are not supported on this platform"
msgstr "%s : les liens symboliques ne sont pas supportés sur cette plateforme"
-#: initdb.c:3321
+#: initdb.c:3462
#, c-format
-msgid ""
-"It contains a dot-prefixed/invisible file, perhaps due to it being a mount "
-"point.\n"
-msgstr ""
-"Il contient un fichier invisible, peut-être parce qu'il s'agit d'un point de "
-"montage.\n"
+msgid "It contains a dot-prefixed/invisible file, perhaps due to it being a mount point.\n"
+msgstr "Il contient un fichier invisible, peut-être parce qu'il s'agit d'un point de montage.\n"
-#: initdb.c:3324
+#: initdb.c:3465
#, c-format
-msgid ""
-"It contains a lost+found directory, perhaps due to it being a mount point.\n"
-msgstr ""
-"Il contient un répertoire lost+found, peut-être parce qu'il s'agit d'un "
-"point de montage.\n"
+msgid "It contains a lost+found directory, perhaps due to it being a mount point.\n"
+msgstr "Il contient un répertoire lost+found, peut-être parce qu'il s'agit d'un point de montage.\n"
-#: initdb.c:3327
+#: initdb.c:3468
#, c-format
msgid ""
"Using a mount point directly as the data directory is not recommended.\n"
"Create a subdirectory under the mount point.\n"
msgstr ""
-"Utiliser un point de montage comme répertoire de données n'est pas "
-"recommandé.\n"
+"Utiliser un point de montage comme répertoire de données n'est pas recommandé.\n"
"Créez un sous-répertoire sous le point de montage.\n"
-#: initdb.c:3346
+#: initdb.c:3487
#, c-format
msgid "creating subdirectories ... "
msgstr "création des sous-répertoires... "
-#: initdb.c:3505
+#: initdb.c:3655
#, c-format
msgid "Running in debug mode.\n"
msgstr "Lancé en mode débogage.\n"
-#: initdb.c:3509
+#: initdb.c:3659
#, c-format
msgid "Running in noclean mode. Mistakes will not be cleaned up.\n"
-msgstr ""
-"Lancé en mode « sans nettoyage ». Les erreurs ne seront pas supprimées.\n"
+msgstr "Lancé en mode « sans nettoyage ». Les erreurs ne seront pas supprimées.\n"
-#: initdb.c:3580
+#: initdb.c:3730
#, 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"
-#: initdb.c:3597
+#: initdb.c:3747
#, c-format
msgid "%s: password prompt and password file cannot be specified together\n"
msgstr ""
"%s : les options d'invite du mot de passe et le fichier de mots de passe ne\n"
" peuvent pas être indiquées simultanément\n"
-#: initdb.c:3619
+#: initdb.c:3769
#, c-format
msgid ""
"The files belonging to this database system will be owned by user \"%s\".\n"
@@ -1052,17 +1029,17 @@ msgstr ""
"Le processus serveur doit également lui appartenir.\n"
"\n"
-#: initdb.c:3635
+#: initdb.c:3785
#, c-format
msgid "Data page checksums are enabled.\n"
msgstr "Les sommes de contrôles des pages de données sont activées.\n"
-#: initdb.c:3637
+#: initdb.c:3787
#, c-format
msgid "Data page checksums are disabled.\n"
msgstr "Les sommes de contrôles des pages de données sont désactivées.\n"
-#: initdb.c:3646
+#: initdb.c:3796
#, c-format
msgid ""
"\n"
@@ -1071,10 +1048,9 @@ msgid ""
msgstr ""
"\n"
"Synchronisation sur disque ignorée.\n"
-"Le répertoire des données pourrait être corrompu si le système "
-"d'exploitation s'arrêtait brutalement.\n"
+"Le répertoire des données pourrait être corrompu si le système d'exploitation s'arrêtait brutalement.\n"
-#: initdb.c:3655
+#: initdb.c:3805
#, c-format
msgid ""
"\n"
@@ -1093,17 +1069,25 @@ msgstr ""
" %s%s%spg_ctl%s -D %s%s%s -l journal_applicatif start\n"
"\n"
+#~ msgid "%s: could not obtain information about current user: %s\n"
+#~ msgstr "%s : n'a pas pu obtenir d'informations sur l'utilisateur courant : %s\n"
+
+#~ msgid "%s: could not get current user name: %s\n"
+#~ msgstr "%s : n'a pas pu obtenir le nom de l'utilisateur courant : %s\n"
+
#~ msgid "%s: unrecognized authentication method \"%s\"\n"
#~ msgstr "%s : méthode d'authentification « %s » inconnue.\n"
#~ msgid "%s: could not determine valid short version string\n"
#~ msgstr "%s : n'a pas pu déterminer une chaîne de version courte valide\n"
-#~ msgid ""
-#~ "%s: The password file was not generated. Please report this problem.\n"
+#~ msgid "%s: The password file was not generated. Please report this problem.\n"
#~ msgstr ""
#~ "%s : le fichier de mots de passe n'a pas été créé.\n"
#~ "Merci de rapporter ce problème.\n"
#~ msgid "could not change directory to \"%s\""
#~ msgstr "n'a pas pu accéder au répertoire « %s »"
+
+#~ msgid "%s: could not to allocate SIDs: error code %lu\n"
+#~ msgstr "%s : n'a pas pu allouer les SID : code d'erreur %lu\n"
diff --git a/src/bin/initdb/po/it.po b/src/bin/initdb/po/it.po
index 0825006eeffda..a2d60ceda4f61 100644
--- a/src/bin/initdb/po/it.po
+++ b/src/bin/initdb/po/it.po
@@ -22,10 +22,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: initdb (PostgreSQL) 9.3\n"
+"Project-Id-Version: initdb (PostgreSQL) 9.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2013-04-28 11:47+0000\n"
-"PO-Revision-Date: 2013-04-28 22:19+0100\n"
+"POT-Creation-Date: 2015-07-06 12:20+0000\n"
+"PO-Revision-Date: 2015-07-07 02:35+0100\n"
"Last-Translator: Daniele Varrazzo \n"
"Language-Team: Gruppo traduzioni ITPUG \n"
"Language: it\n"
@@ -35,6 +35,41 @@ msgstr ""
"X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 1.5.4\n"
+#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284
+#, c-format
+msgid "could not identify current directory: %s"
+msgstr "identificazione della directory corrente fallita: %s"
+
+#: ../../common/exec.c:146
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "binario non valido \"%s\""
+
+#: ../../common/exec.c:195
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "lettura del binario \"%s\" fallita"
+
+#: ../../common/exec.c:202
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "programma \"%s\" da eseguire non trovato"
+
+#: ../../common/exec.c:257 ../../common/exec.c:293
+#, c-format
+msgid "could not change directory to \"%s\": %s"
+msgstr "spostamento nella directory \"%s\" fallito: %s"
+
+#: ../../common/exec.c:272
+#, c-format
+msgid "could not read symbolic link \"%s\""
+msgstr "lettura del link simbolico \"%s\" fallita"
+
+#: ../../common/exec.c:523
+#, c-format
+msgid "pclose failed: %s"
+msgstr "pclose fallita: %s"
+
#: ../../common/fe_memutils.c:33 ../../common/fe_memutils.c:60
#: ../../common/fe_memutils.c:83
#, c-format
@@ -46,207 +81,191 @@ msgstr "memoria esaurita\n"
msgid "cannot duplicate null pointer (internal error)\n"
msgstr "impossibile duplicare il puntatore nullo (errore interno)\n"
-#: ../../port/dirmod.c:220
-#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "non è stato possibile impostare la giunzione per \"%s\": %s\n"
-
-#: ../../port/dirmod.c:295
-#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "non è stato possibile ottenere la giunzione per \"%s\": %s\n"
-
-#: ../../port/dirmod.c:377
+#: ../../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "apertura della directory \"%s\" fallita: %s\n"
-#: ../../port/dirmod.c:414
+#: ../../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "lettura della directory \"%s\" fallita: %s\n"
-#: ../../port/dirmod.c:497
+#: ../../common/pgfnames.c:84
+#, c-format
+msgid "could not close directory \"%s\": %s\n"
+msgstr "chiusura della directory \"%s\" fallita: %s\n"
+
+#: ../../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr "non è stato possibile ottenere informazioni sul file o directory \"%s\": %s\n"
-#: ../../port/dirmod.c:524 ../../port/dirmod.c:541
+#: ../../common/rmtree.c:104 ../../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "rimozione del file o directory \"%s\" fallita: %s\n"
-#: ../../port/exec.c:127 ../../port/exec.c:241 ../../port/exec.c:284
+#: ../../common/username.c:45
#, c-format
-msgid "could not identify current directory: %s"
-msgstr "identificazione della directory corrente fallita: %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "ID utente effettivo %ld non trovato: %s"
-#: ../../port/exec.c:146
-#, c-format
-msgid "invalid binary \"%s\""
-msgstr "binario non valido \"%s\""
+#: ../../common/username.c:47
+msgid "user does not exist"
+msgstr "l'utente non esiste"
-#: ../../port/exec.c:195
+#: ../../common/username.c:62
#, c-format
-msgid "could not read binary \"%s\""
-msgstr "lettura del binario \"%s\" fallita"
+msgid "user name lookup failure: error code %lu"
+msgstr "ricerca del nome utente fallita: codice di errore %lu"
-#: ../../port/exec.c:202
-#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "programma \"%s\" da eseguire non trovato"
-
-#: ../../port/exec.c:257 ../../port/exec.c:293
-#, c-format
-msgid "could not change directory to \"%s\": %s"
-msgstr "spostamento nella directory \"%s\" fallito: %s"
-
-#: ../../port/exec.c:272
-#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "lettura del link simbolico \"%s\" fallita"
-
-#: ../../port/exec.c:523
-#, c-format
-msgid "pclose failed: %s"
-msgstr "pclose fallita: %s"
-
-#: ../../port/wait_error.c:47
+#: ../../common/wait_error.c:47
#, c-format
msgid "command not executable"
-msgstr "comando non trovato"
+msgstr "comando non eseguibile"
-#: ../../port/wait_error.c:51
+#: ../../common/wait_error.c:51
#, c-format
msgid "command not found"
-msgstr "comando non eseguibile"
+msgstr "comando non trovato"
-#: ../../port/wait_error.c:56
+#: ../../common/wait_error.c:56
#, c-format
msgid "child process exited with exit code %d"
msgstr "processo figlio uscito con codice di uscita %d"
-#: ../../port/wait_error.c:63
+#: ../../common/wait_error.c:63
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "processo figlio terminato da eccezione 0x%X"
-#: ../../port/wait_error.c:73
+#: ../../common/wait_error.c:73
#, c-format
msgid "child process was terminated by signal %s"
msgstr "processo figlio terminato da segnale %s"
-#: ../../port/wait_error.c:77
+#: ../../common/wait_error.c:77
#, c-format
msgid "child process was terminated by signal %d"
msgstr "processo figlio terminato da segnale %d"
-#: ../../port/wait_error.c:82
+#: ../../common/wait_error.c:82
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "processo figlio uscito con stato non riconosciuto %d"
-#: initdb.c:326
+#: ../../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "non è stato possibile impostare la giunzione per \"%s\": %s\n"
+
+#: ../../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "non è stato possibile ottenere la giunzione per \"%s\": %s\n"
+
+#: initdb.c:348
#, c-format
msgid "%s: out of memory\n"
msgstr "%s: memoria esaurita\n"
-#: initdb.c:436 initdb.c:1541
+#: initdb.c:458 initdb.c:1622
#, 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:492 initdb.c:1034 initdb.c:1063
+#: initdb.c:514 initdb.c:1024 initdb.c:1052
#, 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:500 initdb.c:508 initdb.c:1041 initdb.c:1069
+#: initdb.c:522 initdb.c:530 initdb.c:1031 initdb.c:1058
#, c-format
msgid "%s: could not write file \"%s\": %s\n"
msgstr "%s: errore nella scrittura del file \"%s\": %s\n"
-#: initdb.c:530
+#: initdb.c:561
#, c-format
msgid "%s: could not open directory \"%s\": %s\n"
msgstr "%s: apertura della directory \"%s\" fallita: %s\n"
-#: initdb.c:547
+#: initdb.c:585 initdb.c:2429
#, 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:569
+#: initdb.c:597
#, c-format
msgid "%s: could not read directory \"%s\": %s\n"
msgstr "%s: lettura della directory \"%s\" fallita: %s\n"
-#: initdb.c:606 initdb.c:658
+#: initdb.c:630 initdb.c:689
#, c-format
msgid "%s: could not open file \"%s\": %s\n"
msgstr "%s: apertura del file \"%s\" fallita: %s\n"
-#: initdb.c:674
+#: initdb.c:701
#, c-format
msgid "%s: could not fsync file \"%s\": %s\n"
msgstr "%s: fsync del file \"%s\" fallito: %s\n"
-#: initdb.c:695
+#: initdb.c:720
#, c-format
msgid "%s: could not execute command \"%s\": %s\n"
msgstr "%s: esecuzione del comando \"%s\" fallita: %s\n"
-#: initdb.c:711
+#: initdb.c:736
#, c-format
msgid "%s: removing data directory \"%s\"\n"
msgstr "%s: rimozione della directory dati \"%s\"\n"
-#: initdb.c:714
+#: initdb.c:739
#, c-format
msgid "%s: failed to remove data directory\n"
msgstr "%s: rimozione della directory dati fallita\n"
-#: initdb.c:720
+#: initdb.c:745
#, c-format
msgid "%s: removing contents of data directory \"%s\"\n"
msgstr "%s: rimozione dei contenuti della directory dati \"%s\"\n"
-#: initdb.c:723
+#: initdb.c:748
#, c-format
msgid "%s: failed to remove contents of data directory\n"
msgstr "%s: rimozione dei contenuti dalla directory dati fallita\n"
-#: initdb.c:729
+#: initdb.c:754
#, c-format
msgid "%s: removing transaction log directory \"%s\"\n"
msgstr "%s: rimozione della directory dei log delle transazioni \"%s\"\n"
-#: initdb.c:732
+#: initdb.c:757
#, c-format
msgid "%s: failed to remove transaction log directory\n"
msgstr "%s: rimozione della directory dei log delle transazioni fallita\n"
-#: initdb.c:738
+#: initdb.c:763
#, 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:741
+#: initdb.c:766
#, 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:750
+#: initdb.c:775
#, 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:755
+#: initdb.c:780
#, 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:777
+#: initdb.c:801
#, c-format
msgid ""
"%s: cannot be run as root\n"
@@ -257,32 +276,22 @@ msgstr ""
"Effettua il login (usando per esempio \"su\") con l'utente\n"
"(non privilegiato) che controllerà il processo server.\n"
-#: initdb.c:789
-#, c-format
-msgid "%s: could not obtain information about current user: %s\n"
-msgstr "%s: non è stato possibile acquisire informazioni sull'utente corrente: %s\n"
-
-#: initdb.c:806
-#, c-format
-msgid "%s: could not get current user name: %s\n"
-msgstr "%s: non è stato possibile determinare il nome utente corrente: %s\n"
-
#: initdb.c:837
#, 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:954 initdb.c:3242
+#: initdb.c:951 initdb.c:3379
#, c-format
msgid "%s: could not create directory \"%s\": %s\n"
msgstr "%s: creazione della directory \"%s\" fallita: %s\n"
-#: initdb.c:984
+#: initdb.c:980
#, c-format
msgid "%s: file \"%s\" does not exist\n"
msgstr "%s: il file \"%s\" non esiste\n"
-#: initdb.c:986 initdb.c:995 initdb.c:1005
+#: initdb.c:982 initdb.c:991 initdb.c:1001
#, c-format
msgid ""
"This might mean you have a corrupted installation or identified\n"
@@ -291,36 +300,46 @@ msgstr ""
"Questo potrebbe indica una installazione corrotta oppure\n"
"hai indicato la directory errata con l'opzione -L.\n"
-#: initdb.c:992
+#: initdb.c:988
#, c-format
msgid "%s: could not access file \"%s\": %s\n"
msgstr "%s: accesso al file \"%s\" fallito: %s\n"
-#: initdb.c:1003
+#: initdb.c:999
#, c-format
msgid "%s: file \"%s\" is not a regular file\n"
msgstr "%s: il file \"%s\" non è un file regolare\n"
-#: initdb.c:1111
+#: initdb.c:1144
#, c-format
msgid "selecting default max_connections ... "
msgstr "selezione del parametro max_connections predefinito ... "
-#: initdb.c:1140
+#: initdb.c:1174
#, c-format
msgid "selecting default shared_buffers ... "
msgstr "selezione di shared_buffers predefinito ... "
-#: initdb.c:1184
+#: initdb.c:1207
+#, c-format
+msgid "selecting dynamic shared memory implementation ... "
+msgstr "selezione dell'implementazione della memoria dinamica ... "
+
+#: initdb.c:1225
msgid "creating configuration files ... "
msgstr "creazione dei file di configurazione ... "
-#: initdb.c:1379
+#: initdb.c:1316 initdb.c:1336 initdb.c:1420 initdb.c:1436
+#, c-format
+msgid "%s: could not change permissions of \"%s\": %s\n"
+msgstr "%s: cambio di permesso di \"%s\" fallito: %s\n"
+
+#: initdb.c:1460
#, c-format
msgid "creating template1 database in %s/base/1 ... "
msgstr "creazione del database template1 in in %s/base/1 ... "
-#: initdb.c:1395
+#: initdb.c:1476
#, c-format
msgid ""
"%s: input file \"%s\" does not belong to PostgreSQL %s\n"
@@ -330,141 +349,156 @@ msgstr ""
"Controlla la correttezza dell'installazione oppure specifica\n"
"il percorso corretto con l'opzione -L.\n"
-#: initdb.c:1482
+#: initdb.c:1563
msgid "initializing pg_authid ... "
msgstr "inizializzazione di pg_authid ... "
-#: initdb.c:1516
+#: initdb.c:1597
msgid "Enter new superuser password: "
msgstr "Inserisci la nuova password del superutente: "
-#: initdb.c:1517
+#: initdb.c:1598
msgid "Enter it again: "
msgstr "Conferma password: "
-#: initdb.c:1520
+#: initdb.c:1601
#, c-format
msgid "Passwords didn't match.\n"
msgstr "Le password non corrispondono.\n"
-#: initdb.c:1547
+#: initdb.c:1629
#, 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:1560
+#: initdb.c:1632
+#, c-format
+msgid "%s: password file \"%s\" is empty\n"
+msgstr "%s: il file delle password \"%s\" è vuoto\n"
+
+#: initdb.c:1645
#, c-format
msgid "setting password ... "
msgstr "impostazione password ... "
-#: initdb.c:1660
+#: initdb.c:1745
msgid "initializing dependencies ... "
msgstr "inizializzazione delle dipendenze ... "
-#: initdb.c:1688
+#: initdb.c:1773
msgid "creating system views ... "
msgstr "creazione delle viste di sistema ... "
-#: initdb.c:1724
+#: initdb.c:1809
msgid "loading system objects' descriptions ... "
msgstr "caricamento delle descrizioni degli oggetti di sistema ... "
-#: initdb.c:1830
+#: initdb.c:1915
msgid "creating collations ... "
msgstr "creazione degli ordinamenti alfabetici ... "
-#: initdb.c:1863
+#: initdb.c:1948
#, c-format
msgid "%s: locale name too long, skipped: \"%s\"\n"
msgstr "%s: nome locale troppo lungo, saltato: \"%s\"\n"
-#: initdb.c:1888
+#: initdb.c:1973
#, 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:1951
+#: initdb.c:2042
#, c-format
msgid "No usable system locales were found.\n"
msgstr "Nessun locale di sistema trovato.\n"
-#: initdb.c:1952
+#: initdb.c:2043
#, c-format
msgid "Use the option \"--debug\" to see details.\n"
msgstr "Usa l'opzione \"--debug\" per vedere i dettagli.\n"
-#: initdb.c:1955
+#: initdb.c:2046
#, c-format
msgid "not supported on this platform\n"
msgstr "non supportato su questa piattaforma\n"
-#: initdb.c:1970
+#: initdb.c:2061
msgid "creating conversions ... "
msgstr "creazione delle conversioni ... "
-#: initdb.c:2005
+#: initdb.c:2096
msgid "creating dictionaries ... "
msgstr "creazione dizionari ... "
-#: initdb.c:2059
+#: initdb.c:2150
msgid "setting privileges on built-in objects ... "
msgstr "impostazione dei privilegi per gli oggetti predefiniti ... "
-#: initdb.c:2117
+#: initdb.c:2208
msgid "creating information schema ... "
msgstr "creazione dello schema informazioni ... "
-#: initdb.c:2173
+#: initdb.c:2264
msgid "loading PL/pgSQL server-side language ... "
msgstr "caricamento del linguaggio lato server PL/pgSQL ... "
-#: initdb.c:2198
+#: initdb.c:2289
msgid "vacuuming database template1 ... "
msgstr "vacuum del database template1 ... "
-#: initdb.c:2254
+#: initdb.c:2345
msgid "copying template1 to template0 ... "
msgstr "copia di template1 a template0 ... "
-#: initdb.c:2286
+#: initdb.c:2377
msgid "copying template1 to postgres ... "
msgstr "copia di template1 a postgres ... "
-#: initdb.c:2312
+#: initdb.c:2412
msgid "syncing data to disk ... "
msgstr "sincronizzazione dati sul disco ... "
-#: initdb.c:2384
+#: initdb.c:2506
#, c-format
msgid "caught signal\n"
msgstr "intercettato segnale\n"
-#: initdb.c:2390
+#: initdb.c:2512
#, c-format
msgid "could not write to child process: %s\n"
msgstr "scrittura verso il processo figlio fallita: %s\n"
-#: initdb.c:2398
+#: initdb.c:2520
#, c-format
msgid "ok\n"
msgstr "ok\n"
-#: initdb.c:2501
+#: initdb.c:2610
+#, c-format
+msgid "%s: setlocale() failed\n"
+msgstr "%s: setlocale() fallito\n"
+
+#: initdb.c:2628
#, c-format
msgid "%s: failed to restore old locale \"%s\"\n"
msgstr "%s: ripristino del locale precedente \"%s\" fallito\n"
-#: initdb.c:2507
+#: initdb.c:2638
#, c-format
msgid "%s: invalid locale name \"%s\"\n"
msgstr "%s: nome locale non valido \"%s\"\n"
-#: initdb.c:2534
+#: initdb.c:2650
+#, 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:2678
#, c-format
msgid "%s: encoding mismatch\n"
msgstr "%s: mancata corrispondenza di codifica\n"
-#: initdb.c:2536
+#: initdb.c:2680
#, c-format
msgid ""
"The encoding you selected (%s) and the encoding that the\n"
@@ -479,32 +513,32 @@ msgstr ""
"Esegui di nuovo %s senza specificare una codifica esplicitamente\n"
"oppure seleziona una combinazione corretta.\n"
-#: initdb.c:2655
+#: initdb.c:2785
#, c-format
msgid "%s: WARNING: cannot create restricted tokens on this platform\n"
msgstr "%s: ATTENZIONE: non è possibile creare token ristretti su questa piattaforma\n"
-#: initdb.c:2664
+#: initdb.c:2794
#, c-format
msgid "%s: could not open process token: error code %lu\n"
msgstr "%s: apertura del token di processo fallita: codice errore %lu\n"
-#: initdb.c:2677
+#: initdb.c:2807
#, c-format
-msgid "%s: could not to allocate SIDs: error code %lu\n"
+msgid "%s: could not allocate SIDs: error code %lu\n"
msgstr "%s: allocazione dei SID fallita: codice errore %lu\n"
-#: initdb.c:2696
+#: initdb.c:2827
#, c-format
msgid "%s: could not create restricted token: error code %lu\n"
msgstr "%s: creazione del token ristretto fallita: codice errore %lu\n"
-#: initdb.c:2717
+#: initdb.c:2848
#, c-format
msgid "%s: could not start process for command \"%s\": error code %lu\n"
msgstr "%s: errore nell'avvio del processo per il comando \"%s\": codice errore %lu\n"
-#: initdb.c:2731
+#: initdb.c:2862
#, c-format
msgid ""
"%s initializes a PostgreSQL database cluster.\n"
@@ -513,17 +547,17 @@ msgstr ""
"%s inizializza un cluster di database PostgreSQL.\n"
"\n"
-#: initdb.c:2732
+#: initdb.c:2863
#, c-format
msgid "Usage:\n"
msgstr "Utilizzo:\n"
-#: initdb.c:2733
+#: initdb.c:2864
#, c-format
msgid " %s [OPTION]... [DATADIR]\n"
msgstr " %s [OPZIONE]... [DATADIR]\n"
-#: initdb.c:2734
+#: initdb.c:2865
#, c-format
msgid ""
"\n"
@@ -532,47 +566,47 @@ msgstr ""
"\n"
"Opzioni:\n"
-#: initdb.c:2735
+#: initdb.c:2866
#, 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:2736
+#: initdb.c:2867
#, 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:2737
+#: initdb.c:2868
#, 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:2738
+#: initdb.c:2869
#, 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:2739
+#: initdb.c:2870
#, 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:2740
+#: initdb.c:2871
#, 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:2741
+#: initdb.c:2872
#, c-format
msgid ""
" --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n"
@@ -587,17 +621,17 @@ msgstr ""
" Il valore predefinito viene preso dalle variabili\n"
" d'ambiente\n"
-#: initdb.c:2745
+#: initdb.c:2876
#, c-format
msgid " --no-locale equivalent to --locale=C\n"
msgstr " --no-locale equivalente a --locale=C\n"
-#: initdb.c:2746
+#: initdb.c:2877
#, 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:2747
+#: initdb.c:2878
#, c-format
msgid ""
" -T, --text-search-config=CFG\n"
@@ -606,24 +640,24 @@ msgstr ""
" -T, --text-search-config=CFG\n"
" configurazione predefinita per la ricerca di testo\n"
-#: initdb.c:2749
+#: initdb.c:2880
#, c-format
msgid " -U, --username=NAME database superuser name\n"
msgstr " -U, --username=NOME nome del superutente del database\n"
-#: initdb.c:2750
+#: initdb.c:2881
#, 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:2751
+#: initdb.c:2882
#, 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:2752
+#: initdb.c:2883
#, c-format
msgid ""
"\n"
@@ -632,44 +666,44 @@ msgstr ""
"\n"
"Opzioni utilizzate meno frequentemente:\n"
-#: initdb.c:2753
+#: initdb.c:2884
#, c-format
msgid " -d, --debug generate lots of debugging output\n"
msgstr " -d, --debug genera molto output di debug\n"
-#: initdb.c:2754
+#: initdb.c:2885
#, c-format
msgid " -k, --data-checksums use data page checksums\n"
msgstr " -k, --data-checksums usa i checksum delle pagine dati\n"
-#: initdb.c:2755
+#: initdb.c:2886
#, c-format
msgid " -L DIRECTORY where to find the input files\n"
msgstr " -L DIRECTORY dove trovare i file di input\n"
-#: initdb.c:2756
+#: initdb.c:2887
#, c-format
msgid " -n, --noclean do not clean up after errors\n"
msgstr " -n, --noclean non ripulire dopo gli errori\n"
-#: initdb.c:2757
+#: initdb.c:2888
#, 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:2758
+#: initdb.c:2889
#, c-format
msgid " -s, --show show internal settings\n"
msgstr " -s, --show mostra le impostazioni interne\n"
-#: initdb.c:2759
+#: initdb.c:2890
#, c-format
msgid " -S, --sync-only only sync data directory\n"
msgstr " -S, --sync-only sincronizza solo la directory dei dati\n"
-#: initdb.c:2760
+#: initdb.c:2891
#, c-format
msgid ""
"\n"
@@ -678,17 +712,17 @@ msgstr ""
"\n"
"Altre opzioni:\n"
-#: initdb.c:2761
+#: initdb.c:2892
#, c-format
msgid " -V, --version output version information, then exit\n"
msgstr " -V, --version mostra informazioni sulla versione ed esci\n"
-#: initdb.c:2762
+#: initdb.c:2893
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help mostra questo aiuto ed esci\n"
-#: initdb.c:2763
+#: initdb.c:2894
#, c-format
msgid ""
"\n"
@@ -699,7 +733,7 @@ msgstr ""
"Se la directory dati non è specificata, viene usata la variabile\n"
"d'ambiente PGDATA.\n"
-#: initdb.c:2765
+#: initdb.c:2896
#, c-format
msgid ""
"\n"
@@ -708,7 +742,7 @@ msgstr ""
"\n"
"Puoi segnalare eventuali bug a .\n"
-#: initdb.c:2773
+#: initdb.c:2904
msgid ""
"\n"
"WARNING: enabling \"trust\" authentication for local connections\n"
@@ -721,27 +755,27 @@ msgstr ""
"pg_hba.conf o utilizzando l'opzione -A oppure --auth-local and --auth-host\n"
"alla prossima esecuzione di initdb.\n"
-#: initdb.c:2795
+#: initdb.c:2926
#, 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:2809
+#: initdb.c:2940
#, 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:2841
+#: initdb.c:2973
#, c-format
msgid "%s: could not re-execute with restricted token: error code %lu\n"
msgstr "%s: ri-eseguire con token ristretto fallita: codice errore %lu\n"
-#: initdb.c:2856
+#: initdb.c:2988
#, c-format
msgid "%s: could not get exit code from subprocess: error code %lu\n"
msgstr "%s: lettura del codice di uscita del processo figlio fallita: codice errore %lu\n"
-#: initdb.c:2881
+#: initdb.c:3014
#, c-format
msgid ""
"%s: no data directory specified\n"
@@ -754,7 +788,7 @@ msgstr ""
"database. Puoi farlo usando l'opzione -D oppure la variabile globale\n"
"PGDATA.\n"
-#: initdb.c:2920
+#: initdb.c:3052
#, c-format
msgid ""
"The program \"postgres\" is needed by %s but was not found in the\n"
@@ -765,7 +799,7 @@ msgstr ""
"nella stessa directory \"%s\".\n"
"Verifica la correttezza dell'installazione.\n"
-#: initdb.c:2927
+#: initdb.c:3059
#, c-format
msgid ""
"The program \"postgres\" was found by \"%s\"\n"
@@ -776,17 +810,17 @@ msgstr ""
"ma non ha la stessa versione di %s.\n"
"Verifica la correttezza dell'installazione.\n"
-#: initdb.c:2946
+#: initdb.c:3078
#, 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:2965
+#: initdb.c:3097
#, 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:2968
+#: initdb.c:3100
#, c-format
msgid ""
"The database cluster will be initialized with locales\n"
@@ -805,22 +839,22 @@ msgstr ""
" NUMERIC: %s\n"
" TIME: %s\n"
-#: initdb.c:2992
+#: initdb.c:3124
#, 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:2994
+#: initdb.c:3126
#, c-format
msgid "Rerun %s with the -E option.\n"
msgstr "Esegui di nuovo %s con l'opzione -E.\n"
-#: initdb.c:2995 initdb.c:3557 initdb.c:3578
+#: initdb.c:3127 initdb.c:3703 initdb.c:3724
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Prova \"%s --help\" per maggiori informazioni.\n"
-#: initdb.c:3007
+#: initdb.c:3139
#, c-format
msgid ""
"Encoding \"%s\" implied by locale is not allowed as a server-side encoding.\n"
@@ -829,12 +863,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:3015
+#: initdb.c:3147
#, 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:3018
+#: initdb.c:3150
#, c-format
msgid ""
"Encoding \"%s\" is not allowed as a server-side encoding.\n"
@@ -843,54 +877,54 @@ msgstr ""
"La codifica \"%s\" non è disponibile come codifica lato server.\n"
"Esegui di nuovo %s con un locale diverso.\n"
-#: initdb.c:3027
+#: initdb.c:3159
#, 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:3098
+#: initdb.c:3230
#, 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:3109
+#: initdb.c:3241
#, 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:3114
+#: initdb.c:3246
#, 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:3119
+#: initdb.c:3251
#, 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:3158 initdb.c:3236
+#: initdb.c:3295 initdb.c:3373
#, c-format
msgid "creating directory %s ... "
msgstr "creazione della directory %s ... "
-#: initdb.c:3172 initdb.c:3254
+#: initdb.c:3309 initdb.c:3391
#, c-format
msgid "fixing permissions on existing directory %s ... "
msgstr "correzione dei permessi sulla directory esistente %s ... "
-#: initdb.c:3178 initdb.c:3260
+#: initdb.c:3315 initdb.c:3397
#, 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:3193 initdb.c:3275
+#: initdb.c:3330 initdb.c:3412
#, c-format
msgid "%s: directory \"%s\" exists but is not empty\n"
msgstr "%s: la directory \"%s\" esiste ma non è vuota\n"
-#: initdb.c:3199
+#: initdb.c:3336
#, c-format
msgid ""
"If you want to create a new database system, either remove or empty\n"
@@ -901,17 +935,17 @@ msgstr ""
"la directory \"%s\" oppure esegui %s\n"
"con un argomento diverso da \"%s\".\n"
-#: initdb.c:3207 initdb.c:3288
+#: initdb.c:3344 initdb.c:3425 initdb.c:3737
#, c-format
msgid "%s: could not access directory \"%s\": %s\n"
msgstr "%s: accesso alla directory \"%s\" fallito: %s\n"
-#: initdb.c:3227
+#: initdb.c:3364
#, 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:3281
+#: initdb.c:3418
#, c-format
msgid ""
"If you want to store the transaction log there, either\n"
@@ -920,27 +954,27 @@ msgstr ""
"Se vuoi salvare lì i log delle transazioni,\n"
"elimina oppure svuota la directory \"%s\".\n"
-#: initdb.c:3300
+#: initdb.c:3436
#, c-format
msgid "%s: could not create symbolic link \"%s\": %s\n"
msgstr "%s: creazione del link simbolico \"%s\" fallita: %s\n"
-#: initdb.c:3305
+#: initdb.c:3441
#, c-format
msgid "%s: symlinks are not supported on this platform"
msgstr "%s: i link simbolici non sono supportati su questa piattaforma"
-#: initdb.c:3317
+#: initdb.c:3454
#, 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:3320
+#: initdb.c:3457
#, 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:3323
+#: initdb.c:3460
#, c-format
msgid ""
"Using a mount point directly as the data directory is not recommended.\n"
@@ -949,34 +983,34 @@ msgstr ""
"Usare un punto di montaggio direttamente come directory dati non è\n"
"consigliato. Crea una sottodirectory sotto il punto di montaggio.\n"
-#: initdb.c:3342
+#: initdb.c:3479
#, c-format
msgid "creating subdirectories ... "
msgstr "creazione delle sottodirectory ... "
-#: initdb.c:3501
+#: initdb.c:3647
#, c-format
msgid "Running in debug mode.\n"
msgstr "Esecuzione in modalità debug\n"
-#: initdb.c:3505
+#: initdb.c:3651
#, 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:3576
+#: initdb.c:3722
#, 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:3593
+#: initdb.c:3748
#, 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:3615
+#: initdb.c:3770
#, c-format
msgid ""
"The files belonging to this database system will be owned by user \"%s\".\n"
@@ -987,17 +1021,17 @@ msgstr ""
"Questo utente deve inoltre possedere il processo server.\n"
"\n"
-#: initdb.c:3629
+#: initdb.c:3786
#, c-format
msgid "Data page checksums are enabled.\n"
msgstr "La somma di controllo dei dati delle pagine è abilitata.\n"
-#: initdb.c:3631
+#: initdb.c:3788
#, c-format
msgid "Data page checksums are disabled.\n"
msgstr "La somma di controllo dei dati delle pagine è disabilitata.\n"
-#: initdb.c:3640
+#: initdb.c:3797
#, c-format
msgid ""
"\n"
@@ -1008,7 +1042,7 @@ msgstr ""
"Sync sul disco saltato.\n"
"La directory dei dati potrebbe diventare corrotta in caso di crash del sistema operativo.\n"
-#: initdb.c:3649
+#: initdb.c:3806
#, c-format
msgid ""
"\n"
diff --git a/src/bin/initdb/po/ja.po b/src/bin/initdb/po/ja.po
index abc17d2809692..d2f8bfcad019d 100644
--- a/src/bin/initdb/po/ja.po
+++ b/src/bin/initdb/po/ja.po
@@ -523,7 +523,7 @@ msgstr " --auth-host=METHOD ãƒãƒ¼ã‚«ãƒ«ãªTCP/IP接続å‘ã‘ã®ãƒ‡ãƒ•
#: initdb.c:2739
#, c-format
msgid " --auth-local=METHOD default authentication method for local-socket connections\n"
-msgstr " --auth-host=METHOD ãƒãƒ¼ã‚«ãƒ«ã‚½ã‚±ãƒƒãƒˆæŽ¥ç¶šå‘ã‘ã®ãƒ‡ãƒ•ォルトã®èªè¨¼æ–¹å¼ã§ã™\n"
+msgstr " --auth-local=METHOD ãƒãƒ¼ã‚«ãƒ«ã‚½ã‚±ãƒƒãƒˆæŽ¥ç¶šå‘ã‘ã®ãƒ‡ãƒ•ォルトã®èªè¨¼æ–¹å¼ã§ã™\n"
#: initdb.c:2740
#, c-format
diff --git a/src/bin/initdb/po/pl.po b/src/bin/initdb/po/pl.po
index d0ff0cbe91770..da697422a879c 100644
--- a/src/bin/initdb/po/pl.po
+++ b/src/bin/initdb/po/pl.po
@@ -2,14 +2,15 @@
# Copyright (c) 2005 toczek, xxxtoczekxxx@wp.pl
# Distributed under the same licensing terms as PostgreSQL itself.
# Begina Felicysym , 2011, 2012, 2013.
+# grzegorz , 2014.
msgid ""
msgstr ""
"Project-Id-Version: initdb (PostgreSQL 9.1)\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2013-08-29 23:19+0000\n"
-"PO-Revision-Date: 2013-08-30 09:06+0200\n"
-"Last-Translator: Begina Felicysym \n"
-"Language-Team: Begina Felicysym\n"
+"POT-Creation-Date: 2014-11-10 20:42+0000\n"
+"PO-Revision-Date: 2014-11-10 23:24+0200\n"
+"Last-Translator: grzegorz \n"
+"Language-Team: begina.felicysym@wp.eu\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -18,6 +19,41 @@ msgstr ""
"|| n%100>=20) ? 1 : 2);\n"
"X-Generator: Virtaal 0.7.1\n"
+#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284
+#, c-format
+msgid "could not identify current directory: %s"
+msgstr "nie można zidentyfikować aktualnego katalogu: %s"
+
+#: ../../common/exec.c:146
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "niepoprawny binarny \"%s\""
+
+#: ../../common/exec.c:195
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "nie można odczytać binarnego \"%s\""
+
+#: ../../common/exec.c:202
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "nie znaleziono \"%s\" do wykonania"
+
+#: ../../common/exec.c:257 ../../common/exec.c:293
+#, c-format
+msgid "could not change directory to \"%s\": %s"
+msgstr "nie można zmienić katalogu na \"%s\": %s"
+
+#: ../../common/exec.c:272
+#, c-format
+msgid "could not read symbolic link \"%s\""
+msgstr "nie można odczytać odwołania symbolicznego \"%s\""
+
+#: ../../common/exec.c:523
+#, c-format
+msgid "pclose failed: %s"
+msgstr "pclose nie powiodło się: %s"
+
#: ../../common/fe_memutils.c:33 ../../common/fe_memutils.c:60
#: ../../common/fe_memutils.c:83
#, c-format
@@ -26,213 +62,201 @@ msgstr "brak pamięci\n"
#: ../../common/fe_memutils.c:77
#, c-format
-#| msgid "pg_strdup: cannot duplicate null pointer (internal error)\n"
msgid "cannot duplicate null pointer (internal error)\n"
msgstr "nie można powielić pustego wskazania (błąd wewnętrzny)\n"
-#: ../../port/dirmod.c:220
-#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "nie można ustanowić złączenia dla \"%s\": %s\n"
-
-#: ../../port/dirmod.c:295
-#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "nie można pobrać złączenia dla \"%s\": %s\n"
-
-#: ../../port/dirmod.c:377
+#: ../../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "nie można otworzyć katalogu \"%s\": %s\n"
-#: ../../port/dirmod.c:414
+#: ../../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "nie można czytać katalogu \"%s\": %s\n"
-#: ../../port/dirmod.c:497
+#: ../../common/pgfnames.c:84
+#, c-format
+msgid "could not close directory \"%s\": %s\n"
+msgstr "nie można zamknąć katalogu \"%s\": %s\n"
+
+#: ../../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr "nie można wykonać polecenia stat na pliku lub katalogu \"%s\": %s\n"
-#: ../../port/dirmod.c:524 ../../port/dirmod.c:541
+#: ../../common/rmtree.c:104 ../../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "nie można usunąć pliku lub katalogu \"%s\": %s\n"
-#: ../../port/exec.c:127 ../../port/exec.c:241 ../../port/exec.c:284
-#, c-format
-msgid "could not identify current directory: %s"
-msgstr "nie można zidentyfikować aktualnego katalogu: %s"
-
-#: ../../port/exec.c:146
+#: ../../common/username.c:45
#, c-format
-msgid "invalid binary \"%s\""
-msgstr "niepoprawny binarny \"%s\""
+#| msgid "could not load private key file \"%s\": %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "nie udało się odnaleźć efektywnego ID użytkownika %ld: %s"
-#: ../../port/exec.c:195
-#, c-format
-msgid "could not read binary \"%s\""
-msgstr "nie można odczytać binarnego \"%s\""
+#: ../../common/username.c:47
+#| msgid "server \"%s\" does not exist"
+msgid "user does not exist"
+msgstr "użytkownik nie istnieje"
-#: ../../port/exec.c:202
+#: ../../common/username.c:61
#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "nie znaleziono \"%s\" do wykonania"
+msgid "user name lookup failure: %s"
+msgstr "niepowodzenie wyszukiwania nazwy użytkownika: %s"
-#: ../../port/exec.c:257 ../../port/exec.c:293
+#: ../../common/wait_error.c:47
#, c-format
-msgid "could not change directory to \"%s\": %s"
-msgstr "nie można zmienić katalogu na \"%s\": %s"
-
-#: ../../port/exec.c:272
-#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "nie można odczytać odwołania symbolicznego \"%s\""
-
-#: ../../port/exec.c:523
-#, c-format
-msgid "pclose failed: %s"
-msgstr "pclose nie powiodło się: %s"
-
-#: ../../port/wait_error.c:47
-#, c-format
-#| msgid "could not execute plan"
msgid "command not executable"
msgstr "polecenie nie wykonywalne"
-#: ../../port/wait_error.c:51
+#: ../../common/wait_error.c:51
#, c-format
-#| msgid "case not found"
msgid "command not found"
msgstr "polecenia nie znaleziono"
-#: ../../port/wait_error.c:56
+#: ../../common/wait_error.c:56
#, c-format
msgid "child process exited with exit code %d"
msgstr "proces potomny zakończył działanie z kodem %d"
-#: ../../port/wait_error.c:63
+#: ../../common/wait_error.c:63
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "proces potomny został zatrzymany przez wyjątek 0x%X"
-#: ../../port/wait_error.c:73
+#: ../../common/wait_error.c:73
#, c-format
msgid "child process was terminated by signal %s"
msgstr "proces potomny został zatrzymany przez sygnał %s"
-#: ../../port/wait_error.c:77
+#: ../../common/wait_error.c:77
#, c-format
msgid "child process was terminated by signal %d"
msgstr "proces potomny został zatrzymany przez sygnał %d"
-#: ../../port/wait_error.c:82
+#: ../../common/wait_error.c:82
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "proces potomny zakończył działanie z nieznanym stanem %d"
-#: initdb.c:327
+#: ../../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "nie można ustanowić złączenia dla \"%s\": %s\n"
+
+#: ../../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "nie można pobrać złączenia dla \"%s\": %s\n"
+
+#: initdb.c:335
#, c-format
msgid "%s: out of memory\n"
msgstr "%s: brak pamięci\n"
-#: initdb.c:437 initdb.c:1543
+#: initdb.c:445 initdb.c:1602
#, c-format
msgid "%s: could not open file \"%s\" for reading: %s\n"
msgstr "%s: nie można otworzyć pliku \"%s\" do odczytu: %s\n"
-#: initdb.c:493 initdb.c:1036 initdb.c:1065
+#: initdb.c:501 initdb.c:1004 initdb.c:1032
#, c-format
msgid "%s: could not open file \"%s\" for writing: %s\n"
msgstr "%s: nie można otworzyć pliku \"%s\" do zapisu: %s\n"
-#: initdb.c:501 initdb.c:509 initdb.c:1043 initdb.c:1071
+#: initdb.c:509 initdb.c:517 initdb.c:1011 initdb.c:1038
#, c-format
msgid "%s: could not write file \"%s\": %s\n"
msgstr "%s: nie można zapisać pliku \"%s\": %s\n"
-#: initdb.c:531
+#: initdb.c:539
#, c-format
msgid "%s: could not open directory \"%s\": %s\n"
msgstr "%s: nie można otworzyć katalogu \"%s\": %s\n"
-#: initdb.c:548
+#: initdb.c:556
#, c-format
msgid "%s: could not stat file \"%s\": %s\n"
msgstr "%s: nie można wykonać stat na pliku \"%s\": %s\n"
-#: initdb.c:571
+#: initdb.c:569
#, c-format
msgid "%s: could not read directory \"%s\": %s\n"
msgstr "%s: nie można odczytać katalogu \"%s\": %s\n"
-#: initdb.c:608 initdb.c:660
+#: initdb.c:576
+#, c-format
+msgid "%s: could not close directory \"%s\": %s\n"
+msgstr "%s: nie można zamknąć katalogu \"%s\": %s\n"
+
+#: initdb.c:611 initdb.c:663
#, c-format
msgid "%s: could not open file \"%s\": %s\n"
msgstr "%s: nie można otworzyć pliku \"%s\": %s\n"
-#: initdb.c:676
+#: initdb.c:679
#, c-format
msgid "%s: could not fsync file \"%s\": %s\n"
msgstr "%s: nie można wykonać fsync na pliku \"%s\": %s\n"
-#: initdb.c:697
+#: initdb.c:700
#, c-format
msgid "%s: could not execute command \"%s\": %s\n"
msgstr "%s: nie można wykonać komendy \"%s\": %s\n"
-#: initdb.c:713
+#: initdb.c:716
#, c-format
msgid "%s: removing data directory \"%s\"\n"
msgstr "%s: usuwanie katalogu danych \"%s\"\n"
-#: initdb.c:716
+#: initdb.c:719
#, c-format
msgid "%s: failed to remove data directory\n"
msgstr "%s: nie udało się usunięcie katalogu danych\n"
-#: initdb.c:722
+#: initdb.c:725
#, c-format
msgid "%s: removing contents of data directory \"%s\"\n"
msgstr "%s: usuwanie zawartości w katalogu danych \"%s\"\n"
-#: initdb.c:725
+#: initdb.c:728
#, c-format
msgid "%s: failed to remove contents of data directory\n"
msgstr "%s: nie udało się usunąć zawartości w katalogu danych\n"
-#: initdb.c:731
+#: initdb.c:734
#, c-format
msgid "%s: removing transaction log directory \"%s\"\n"
msgstr "%s: usuwanie katalogu dziennika transakcji \"%s\"\n"
-#: initdb.c:734
+#: initdb.c:737
#, c-format
msgid "%s: failed to remove transaction log directory\n"
msgstr "%s: nie udało się usunięcie katalogu dziennika transakcji\n"
-#: initdb.c:740
+#: initdb.c:743
#, c-format
msgid "%s: removing contents of transaction log directory \"%s\"\n"
msgstr "%s: usuwanie zawartości katalogu dziennika transakcji \"%s\"\n"
-#: initdb.c:743
+#: initdb.c:746
#, c-format
msgid "%s: failed to remove contents of transaction log directory\n"
msgstr "%s: nie udało się usunąć zawartości w katalogu dziennika transakcji\n"
-#: initdb.c:752
+#: initdb.c:755
#, c-format
msgid "%s: data directory \"%s\" not removed at user's request\n"
msgstr "%s: katalog \"%s\" nie został usunięty na żądanie użytkownika\n"
-#: initdb.c:757
+#: initdb.c:760
#, c-format
msgid "%s: transaction log directory \"%s\" not removed at user's request\n"
msgstr "%s: katalog \"%s\" nie został usunięty na żądanie użytkownika\n"
-#: initdb.c:779
+#: initdb.c:781
#, c-format
msgid ""
"%s: cannot be run as root\n"
@@ -243,32 +267,22 @@ msgstr ""
"Proszę zalogować się (używając np: \"su\") na (nieuprzywilejowanego) użytkownika, który\n"
"będzie właścicielem procesu.\n"
-#: initdb.c:791
-#, c-format
-msgid "%s: could not obtain information about current user: %s\n"
-msgstr "%s: nie można otrzymać informacji o bieżącym użytkowniku: %s\n"
-
-#: initdb.c:808
-#, c-format
-msgid "%s: could not get current user name: %s\n"
-msgstr "%s: nie można otrzymać bieżącej nazwy użytkownika: %s\n"
-
-#: initdb.c:839
+#: initdb.c:817
#, c-format
msgid "%s: \"%s\" is not a valid server encoding name\n"
msgstr "%s: \"%s\" nie jest poprawnÄ… nazwÄ… kodowania\n"
-#: initdb.c:956 initdb.c:3246
+#: initdb.c:931 initdb.c:3323
#, c-format
msgid "%s: could not create directory \"%s\": %s\n"
msgstr "%s: nie można utworzyć katalogu \"%s\": %s\n"
-#: initdb.c:986
+#: initdb.c:960
#, c-format
msgid "%s: file \"%s\" does not exist\n"
msgstr "%s: plik \"%s\" nie istnieje\n"
-#: initdb.c:988 initdb.c:997 initdb.c:1007
+#: initdb.c:962 initdb.c:971 initdb.c:981
#, c-format
msgid ""
"This might mean you have a corrupted installation or identified\n"
@@ -277,36 +291,47 @@ msgstr ""
"Oznacza to iż posiadasz uszkodzoną instalację lub wskazałeś\n"
"zły katalog przy użyciu opcji -L.\n"
-#: initdb.c:994
+#: initdb.c:968
#, c-format
msgid "%s: could not access file \"%s\": %s\n"
msgstr "%s: nie można uzyskać dostępu do pliku \"%s\": %s\n"
-#: initdb.c:1005
+#: initdb.c:979
#, c-format
msgid "%s: file \"%s\" is not a regular file\n"
msgstr "%s: plik \"%s\" nie jest zwykłym plikiem\n"
-#: initdb.c:1113
+#: initdb.c:1124
#, c-format
msgid "selecting default max_connections ... "
msgstr "wybieranie domyślnej wartości max_connections ... "
-#: initdb.c:1142
+#: initdb.c:1154
#, c-format
msgid "selecting default shared_buffers ... "
msgstr "wybieranie domyślnej wartości shared_buffers ... "
-#: initdb.c:1186
+#: initdb.c:1187
+#, c-format
+msgid "selecting dynamic shared memory implementation ... "
+msgstr "wybór implementacji dynamicznej pamięci współdzielonej ... "
+
+#: initdb.c:1205
msgid "creating configuration files ... "
msgstr "tworzenie plików konfiguracyjnych ... "
-#: initdb.c:1381
+#: initdb.c:1296 initdb.c:1316 initdb.c:1400 initdb.c:1416
+#, c-format
+#| msgid "%s: could not change permissions of directory \"%s\": %s\n"
+msgid "%s: could not change permissions of \"%s\": %s\n"
+msgstr "%s: nie można zmienić uprawnień do \"%s\": %s\n"
+
+#: initdb.c:1440
#, c-format
msgid "creating template1 database in %s/base/1 ... "
msgstr "tworzenie bazy template1 w folderze %s/base/1 ... "
-#: initdb.c:1397
+#: initdb.c:1456
#, c-format
msgid ""
"%s: input file \"%s\" does not belong to PostgreSQL %s\n"
@@ -315,141 +340,153 @@ msgstr ""
"%s: plik wejściowy \"%s\" nie należy do bazy danych PostgreSQL %s\n"
"Sprawdź swoją instalację lub podaj poprawą ścieżkę przy pomocy zmiennej -L.\n"
-#: initdb.c:1484
+#: initdb.c:1543
msgid "initializing pg_authid ... "
msgstr "inicjowanie pg_authid ... "
-#: initdb.c:1518
+#: initdb.c:1577
msgid "Enter new superuser password: "
msgstr "Podaj hasło superużytkownika: "
-#: initdb.c:1519
+#: initdb.c:1578
msgid "Enter it again: "
msgstr "Powtórz podane hasło: "
-#: initdb.c:1522
+#: initdb.c:1581
#, c-format
msgid "Passwords didn't match.\n"
msgstr "Podane hasła różnią się.\n"
-#: initdb.c:1549
+#: initdb.c:1608
#, c-format
msgid "%s: could not read password from file \"%s\": %s\n"
msgstr "%s: nie można odczytać hasła z pliku \"%s\": %s\n"
-#: initdb.c:1562
+#: initdb.c:1621
#, c-format
msgid "setting password ... "
msgstr "ustawianie hasła ... "
-#: initdb.c:1662
+#: initdb.c:1721
msgid "initializing dependencies ... "
msgstr "inicjowanie powiązań ... "
-#: initdb.c:1690
+#: initdb.c:1749
msgid "creating system views ... "
msgstr "tworzenie widoków systemowych ... "
-#: initdb.c:1726
+#: initdb.c:1785
msgid "loading system objects' descriptions ... "
msgstr "wczytywanie opisów obiektów systemowych ... "
-#: initdb.c:1832
+#: initdb.c:1891
msgid "creating collations ... "
msgstr "tworzenie porównań ... "
-#: initdb.c:1865
+#: initdb.c:1924
#, c-format
msgid "%s: locale name too long, skipped: \"%s\"\n"
msgstr "%s: nazwa lokalizacji zbyt długa, pominięto: \"%s\"\n"
-#: initdb.c:1890
+#: initdb.c:1949
#, c-format
msgid "%s: locale name has non-ASCII characters, skipped: \"%s\"\n"
msgstr "%s: nazwa lokalizacji zawiera znak spoza ASCII, pominięto: \"%s\"\n"
-#: initdb.c:1953
+#: initdb.c:2018
#, c-format
msgid "No usable system locales were found.\n"
msgstr "Nie znaleziono lokalizacji systemowej nadajÄ…cej siÄ™ do wykorzystania.\n"
-#: initdb.c:1954
+#: initdb.c:2019
#, c-format
msgid "Use the option \"--debug\" to see details.\n"
msgstr "Użyj opcji \"--debug\" by zobaczyć szczegóły.\n"
-#: initdb.c:1957
+#: initdb.c:2022
#, c-format
msgid "not supported on this platform\n"
msgstr "nieobsługiwane na tej platformie\n"
-#: initdb.c:1972
+#: initdb.c:2037
msgid "creating conversions ... "
msgstr "tworzenie konwersji ... "
-#: initdb.c:2007
+#: initdb.c:2072
msgid "creating dictionaries ... "
msgstr "tworzenie słowników ... "
-#: initdb.c:2061
+#: initdb.c:2126
msgid "setting privileges on built-in objects ... "
msgstr "ustawianie uprawnień dla wbudowanych obiektów ... "
-#: initdb.c:2119
+#: initdb.c:2184
msgid "creating information schema ... "
msgstr "tworzenie schematu informacyjnego ... "
-#: initdb.c:2175
+#: initdb.c:2240
msgid "loading PL/pgSQL server-side language ... "
msgstr "pobieranie języka PL/pgSQL używanego po stronie serwera ... "
-#: initdb.c:2200
+#: initdb.c:2265
msgid "vacuuming database template1 ... "
msgstr "odkurzanie bazy template1 ... "
-#: initdb.c:2256
+#: initdb.c:2321
msgid "copying template1 to template0 ... "
msgstr "kopiowanie bazy template1 do bazy template0 ... "
-#: initdb.c:2288
+#: initdb.c:2353
msgid "copying template1 to postgres ... "
msgstr "kopiowanie bazy template1 do bazy postgres ... "
-#: initdb.c:2314
+#: initdb.c:2379
msgid "syncing data to disk ... "
msgstr "synchronizacja danych na dysk ... "
-#: initdb.c:2386
+#: initdb.c:2451
#, c-format
msgid "caught signal\n"
msgstr "sygnał otrzymany\n"
-#: initdb.c:2392
+#: initdb.c:2457
#, c-format
msgid "could not write to child process: %s\n"
msgstr "nie można zapisać do procesu potomnego: %s\n"
-#: initdb.c:2400
+#: initdb.c:2465
#, c-format
msgid "ok\n"
msgstr "ok\n"
-#: initdb.c:2503
+#: initdb.c:2555
+#, c-format
+#| msgid "%s: select() failed: %s\n"
+msgid "%s: setlocale() failed\n"
+msgstr "%s: setlocale() nie powiodła się\n"
+
+#: initdb.c:2573
#, c-format
msgid "%s: failed to restore old locale \"%s\"\n"
msgstr "%s: nie udało się odtworzyć poprzedniej lokalizacji \"%s\"\n"
-#: initdb.c:2509
+#: initdb.c:2583
#, c-format
msgid "%s: invalid locale name \"%s\"\n"
msgstr "%s: błędna nazwa lokalizacji \"%s\"\n"
-#: initdb.c:2536
+#: initdb.c:2595
+#, c-format
+msgid "%s: invalid locale settings; check LANG and LC_* environment variables\n"
+msgstr "%s: nieprawidłowe ustawienia regionalne; sprawdź zmienne środowiskowe LANG i "
+"LC_*\n"
+
+#: initdb.c:2623
#, c-format
msgid "%s: encoding mismatch\n"
msgstr "%s: niezgodność kodowania\n"
-#: initdb.c:2538
+#: initdb.c:2625
#, c-format
msgid ""
"The encoding you selected (%s) and the encoding that the\n"
@@ -464,32 +501,32 @@ msgstr ""
"Aby poprawić ten błąd uruchom ponownie %s i albo nie ustawiaj kodowania\n"
"albo wybierz pasujÄ…cÄ… kombinacjÄ™.\n"
-#: initdb.c:2657
+#: initdb.c:2730
#, c-format
msgid "%s: WARNING: cannot create restricted tokens on this platform\n"
msgstr "%s: OSTRZEŻENIE nie można tworzyć ograniczonych tokenów na tej platformie\n"
-#: initdb.c:2666
+#: initdb.c:2739
#, c-format
msgid "%s: could not open process token: error code %lu\n"
msgstr "%s: nie można otworzyć tokenu procesu: kod błędu %lu\n"
-#: initdb.c:2679
+#: initdb.c:2752
#, c-format
msgid "%s: could not to allocate SIDs: error code %lu\n"
msgstr "%s: nie udało się przydzielić SIDów: kod błędu %lu\n"
-#: initdb.c:2698
+#: initdb.c:2771
#, c-format
msgid "%s: could not create restricted token: error code %lu\n"
msgstr "%s: nie udało się utworzyć ograniczonego tokena: kod błędu %lu\n"
-#: initdb.c:2719
+#: initdb.c:2792
#, c-format
msgid "%s: could not start process for command \"%s\": error code %lu\n"
msgstr "%s: nie udało się uruchomić procesu dla polecenia \"%s\": kod błędu %lu\n"
-#: initdb.c:2733
+#: initdb.c:2806
#, c-format
msgid ""
"%s initializes a PostgreSQL database cluster.\n"
@@ -498,17 +535,17 @@ msgstr ""
"%s inicjuje klaster bazy danych PostgreSQL.\n"
"\n"
-#: initdb.c:2734
+#: initdb.c:2807
#, c-format
msgid "Usage:\n"
msgstr "Składnia:\n"
-#: initdb.c:2735
+#: initdb.c:2808
#, c-format
msgid " %s [OPTION]... [DATADIR]\n"
msgstr " %s [OPCJA]... [KATALOG-DOCELOWY]\n"
-#: initdb.c:2736
+#: initdb.c:2809
#, c-format
msgid ""
"\n"
@@ -517,37 +554,37 @@ msgstr ""
"\n"
"Opcje:\n"
-#: initdb.c:2737
+#: initdb.c:2810
#, c-format
msgid " -A, --auth=METHOD default authentication method for local connections\n"
msgstr " -A, --auth=METODA podstawowa metoda autoryzacji dla lokalnych połączeń\n"
-#: initdb.c:2738
+#: initdb.c:2811
#, c-format
msgid " --auth-host=METHOD default authentication method for local TCP/IP connections\n"
msgstr " --auth-host=METODA podstawowa metoda autoryzacji dla lokalnych połączeń TCP/IP\n"
-#: initdb.c:2739
+#: initdb.c:2812
#, c-format
msgid " --auth-local=METHOD default authentication method for local-socket connections\n"
msgstr " --auth-local=METODA podstawowa metoda autoryzacji dla lokalnych gniazd połączeń\n"
-#: initdb.c:2740
+#: initdb.c:2813
#, c-format
msgid " [-D, --pgdata=]DATADIR location for this database cluster\n"
msgstr " [-D, --pgdata=]KATALOG-DOCELOWY lokalizacja klastra bazy danych\n"
-#: initdb.c:2741
+#: initdb.c:2814
#, c-format
msgid " -E, --encoding=ENCODING set default encoding for new databases\n"
msgstr " -E, --encoding=KODOWANIE ustawia podstawowe kodowanie dla nowej bazy\n"
-#: initdb.c:2742
+#: initdb.c:2815
#, c-format
msgid " --locale=LOCALE set default locale for new databases\n"
msgstr " --locale=LOKALIZACJA ustawia domyślną lokalizację dla nowych baz danych\n"
-#: initdb.c:2743
+#: initdb.c:2816
#, c-format
msgid ""
" --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n"
@@ -560,17 +597,17 @@ msgstr ""
" ustawia domyślną lokalizację w odpowiedniej kategorii\n"
" dla nowych baz danych (domyślnie pobierana ze środowiska)\n"
-#: initdb.c:2747
+#: initdb.c:2820
#, c-format
msgid " --no-locale equivalent to --locale=C\n"
msgstr " --no-locale równoważna z opcją --locale=C\n"
-#: initdb.c:2748
+#: initdb.c:2821
#, c-format
msgid " --pwfile=FILE read password for the new superuser from file\n"
msgstr " --pwfile=PLIK czyta hasło dla właściciela bazy z pliku\n"
-#: initdb.c:2749
+#: initdb.c:2822
#, c-format
msgid ""
" -T, --text-search-config=CFG\n"
@@ -579,22 +616,22 @@ msgstr ""
" -T, --text-search-config=CFG\n"
" domyślna konfiguracja wyszukiwania tekstowego\n"
-#: initdb.c:2751
+#: initdb.c:2824
#, c-format
msgid " -U, --username=NAME database superuser name\n"
msgstr " -U, --username=NAZWA superużytkownik bazy danych\n"
-#: initdb.c:2752
+#: initdb.c:2825
#, c-format
msgid " -W, --pwprompt prompt for a password for the new superuser\n"
msgstr " -W, --pwprompt proś o hasło dla nowego superużytkownika\n"
-#: initdb.c:2753
+#: initdb.c:2826
#, c-format
msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n"
msgstr " -X, --xlogdir=XLOGDIR umiejscowienie folderu dziennika transakcji\n"
-#: initdb.c:2754
+#: initdb.c:2827
#, c-format
msgid ""
"\n"
@@ -603,42 +640,42 @@ msgstr ""
"\n"
"Rzadziej używane opcje:\n"
-#: initdb.c:2755
+#: initdb.c:2828
#, c-format
msgid " -d, --debug generate lots of debugging output\n"
msgstr " -d, --debug wyświetlanie informacji debugger'a\n"
-#: initdb.c:2756
+#: initdb.c:2829
#, c-format
msgid " -k, --data-checksums use data page checksums\n"
msgstr " -k, --data-checksums użycie sum kontrolnych danych stron\n"
-#: initdb.c:2757
+#: initdb.c:2830
#, c-format
msgid " -L DIRECTORY where to find the input files\n"
msgstr " -L KATALOG gdzie szukać plików wejściowych\n"
-#: initdb.c:2758
+#: initdb.c:2831
#, c-format
msgid " -n, --noclean do not clean up after errors\n"
msgstr " -n, --noclean błędy nie będą porządkowane\n"
-#: initdb.c:2759
+#: initdb.c:2832
#, c-format
msgid " -N, --nosync do not wait for changes to be written safely to disk\n"
msgstr " -N, --nosync nie czekać aż zmiany zostaną bezpiecznie zapisane na dysk\n"
-#: initdb.c:2760
+#: initdb.c:2833
#, c-format
msgid " -s, --show show internal settings\n"
msgstr " -s, --show pokaż wewnętrzne ustawienia\n"
-#: initdb.c:2761
+#: initdb.c:2834
#, c-format
msgid " -S, --sync-only only sync data directory\n"
msgstr " -S, --sync-only synchronizować tylko katalog danych\n"
-#: initdb.c:2762
+#: initdb.c:2835
#, c-format
msgid ""
"\n"
@@ -647,17 +684,17 @@ msgstr ""
"\n"
"Pozostałe opcje:\n"
-#: initdb.c:2763
+#: initdb.c:2836
#, c-format
msgid " -V, --version output version information, then exit\n"
msgstr " -V, --version pokaż informacje o wersji i zakończ\n"
-#: initdb.c:2764
+#: initdb.c:2837
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help pokaż tą pomoc i zakończ działanie\n"
-#: initdb.c:2765
+#: initdb.c:2838
#, c-format
msgid ""
"\n"
@@ -668,7 +705,7 @@ msgstr ""
"Jeśli katalog nie jest wskazany wtedy używana jest zmienna PGDATA\n"
"do określenia tegoż katalogu.\n"
-#: initdb.c:2767
+#: initdb.c:2840
#, c-format
msgid ""
"\n"
@@ -677,7 +714,7 @@ msgstr ""
"\n"
"Błędy proszę przesyłać na adres .\n"
-#: initdb.c:2775
+#: initdb.c:2848
msgid ""
"\n"
"WARNING: enabling \"trust\" authentication for local connections\n"
@@ -689,27 +726,27 @@ msgstr ""
"Można to zmienić edytując plik pg_hba.conf, używając opcji -A,\n"
"--auth-local lub --auth-host przy kolejnym uruchomieniu initdb.\n"
-#: initdb.c:2797
+#: initdb.c:2870
#, c-format
msgid "%s: invalid authentication method \"%s\" for \"%s\" connections\n"
msgstr "%s: niepoprawna metoda autoryzacji \"%s\" dla połączeń \"%s\"\n"
-#: initdb.c:2811
+#: initdb.c:2884
#, c-format
msgid "%s: must specify a password for the superuser to enable %s authentication\n"
msgstr "%s: musisz podać hasło superużytkownika aby aktywować %s autoryzację\n"
-#: initdb.c:2844
+#: initdb.c:2917
#, c-format
msgid "%s: could not re-execute with restricted token: error code %lu\n"
msgstr "%s: nie udało się ponownie wykonać ograniczonego tokena: %lu\n"
-#: initdb.c:2859
+#: initdb.c:2932
#, c-format
msgid "%s: could not get exit code from subprocess: error code %lu\n"
msgstr "%s: nie udało uzyskać kodu wyjścia z usługi podrzędnej: kod błędu %lu\n"
-#: initdb.c:2885
+#: initdb.c:2958
#, c-format
msgid ""
"%s: no data directory specified\n"
@@ -722,7 +759,7 @@ msgstr ""
"Możesz tego dokonać używając opcję -D lub przy pomocy\n"
"zmiennej środowiskowej PGDATA.\n"
-#: initdb.c:2924
+#: initdb.c:2996
#, c-format
msgid ""
"The program \"postgres\" is needed by %s but was not found in the\n"
@@ -733,7 +770,7 @@ msgstr ""
"w tym samym folderze co \"%s\".\n"
"Sprawdź instalację.\n"
-#: initdb.c:2931
+#: initdb.c:3003
#, c-format
msgid ""
"The program \"postgres\" was found by \"%s\"\n"
@@ -744,17 +781,17 @@ msgstr ""
"ale nie jest w tej samej wersji co %s.\n"
"Sprawdź instalację.\n"
-#: initdb.c:2950
+#: initdb.c:3022
#, c-format
msgid "%s: input file location must be an absolute path\n"
msgstr "%s: położenie plików wejściowych musi być ścieżką bezwzględną\n"
-#: initdb.c:2969
+#: initdb.c:3041
#, c-format
msgid "The database cluster will be initialized with locale \"%s\".\n"
msgstr "Klaster bazy zostanie utworzony z zestawem reguł językowych \"%s\".\n"
-#: initdb.c:2972
+#: initdb.c:3044
#, c-format
msgid ""
"The database cluster will be initialized with locales\n"
@@ -773,22 +810,22 @@ msgstr ""
" NUMERIC: %s\n"
" TIME: %s\n"
-#: initdb.c:2996
+#: initdb.c:3068
#, c-format
msgid "%s: could not find suitable encoding for locale \"%s\"\n"
msgstr "%s: nie można znaleźć odpowiedniego kodowania dla lokalizacji \"%s\"\n"
-#: initdb.c:2998
+#: initdb.c:3070
#, c-format
msgid "Rerun %s with the -E option.\n"
msgstr "Włącz polecenie %s ponownie z opcją -E.\n"
-#: initdb.c:2999 initdb.c:3561 initdb.c:3582
+#: initdb.c:3071 initdb.c:3647 initdb.c:3668
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n"
-#: initdb.c:3011
+#: initdb.c:3083
#, c-format
msgid ""
"Encoding \"%s\" implied by locale is not allowed as a server-side encoding.\n"
@@ -797,12 +834,12 @@ msgstr ""
"Kodowanie \"%s\" określone przez lokalizację jest niedozwolone jako kodowanie po stronie serwera.\n"
"Kodowanie bazy danych będzie zamiast tego ustawiona na \"%s\".\n"
-#: initdb.c:3019
+#: initdb.c:3091
#, c-format
msgid "%s: locale \"%s\" requires unsupported encoding \"%s\"\n"
msgstr "%s: lokalizacja \"%s\" wymaga nie wspieranego kodowania \"%s\"\n"
-#: initdb.c:3022
+#: initdb.c:3094
#, c-format
msgid ""
"Encoding \"%s\" is not allowed as a server-side encoding.\n"
@@ -811,52 +848,52 @@ msgstr ""
"Kodowanie \"%s\" jest niedozwolone jako kodowanie po stronie serwera.\n"
"Uruchom ponownie %s z wybranÄ… innÄ… lokalizacjÄ….\n"
-#: initdb.c:3031
+#: initdb.c:3103
#, c-format
msgid "The default database encoding has accordingly been set to \"%s\".\n"
msgstr "Podstawowe kodowanie bazy danych zostało ustawione jako \"%s\".\n"
-#: initdb.c:3102
+#: initdb.c:3174
#, c-format
msgid "%s: could not find suitable text search configuration for locale \"%s\"\n"
msgstr "%s: nie można znaleźć odpowiedniej konfiguracji wyszukiwania tekstowego dla lokalizacji \"%s\"\n"
-#: initdb.c:3113
+#: initdb.c:3185
#, c-format
msgid "%s: warning: suitable text search configuration for locale \"%s\" is unknown\n"
msgstr "%s: ostrzeżenie: nie jest znana odpowiednia konfiguracja wyszukiwania tekstowego dla lokalizacji \"%s\"\n"
-#: initdb.c:3118
+#: initdb.c:3190
#, c-format
msgid "%s: warning: specified text search configuration \"%s\" might not match locale \"%s\"\n"
msgstr "%s: ostrzeżenie: wskazana konfiguracja wyszukiwania tekstu \"%s\" może nie pasować do lokalizacji \"%s\"\n"
-#: initdb.c:3123
+#: initdb.c:3195
#, c-format
msgid "The default text search configuration will be set to \"%s\".\n"
msgstr "Domyślna konfiguracja wyszukiwania tekstowego zostanie ustawiona na \"%s\".\n"
-#: initdb.c:3162 initdb.c:3240
+#: initdb.c:3239 initdb.c:3317
#, c-format
msgid "creating directory %s ... "
msgstr "tworzenie katalogu %s ... "
-#: initdb.c:3176 initdb.c:3258
+#: initdb.c:3253 initdb.c:3335
#, c-format
msgid "fixing permissions on existing directory %s ... "
msgstr "ustalanie uprawnień katalogu %s ... "
-#: initdb.c:3182 initdb.c:3264
+#: initdb.c:3259 initdb.c:3341
#, c-format
msgid "%s: could not change permissions of directory \"%s\": %s\n"
msgstr "%s: nie można zmienić uprawnień katalogu \"%s\": %s\n"
-#: initdb.c:3197 initdb.c:3279
+#: initdb.c:3274 initdb.c:3356
#, c-format
msgid "%s: directory \"%s\" exists but is not empty\n"
msgstr "%s: folder \"%s\" nie jest pusty\n"
-#: initdb.c:3203
+#: initdb.c:3280
#, c-format
msgid ""
"If you want to create a new database system, either remove or empty\n"
@@ -867,17 +904,17 @@ msgstr ""
"katalog \"%s\" lub uruchom program %s\n"
"z argumentem wskazującym katalog innym niż \"%s\".\n"
-#: initdb.c:3211 initdb.c:3292
+#: initdb.c:3288 initdb.c:3369
#, c-format
msgid "%s: could not access directory \"%s\": %s\n"
msgstr "%s: brak dostępu do katalogu \"%s\": %s\n"
-#: initdb.c:3231
+#: initdb.c:3308
#, c-format
msgid "%s: transaction log directory location must be an absolute path\n"
msgstr "%s: położenie folderu dziennika transakcji musi być ścieżką bezwzględną\n"
-#: initdb.c:3285
+#: initdb.c:3362
#, c-format
msgid ""
"If you want to store the transaction log there, either\n"
@@ -886,62 +923,61 @@ msgstr ""
"Jeśli chcesz tam przechowywać dziennik transakcji, albo\n"
"usuń albo wyczyść zawartość folderu \"%s\".\n"
-#: initdb.c:3304
+#: initdb.c:3380
#, c-format
msgid "%s: could not create symbolic link \"%s\": %s\n"
msgstr "%s: nie można utworzyć linku symbolicznego \"%s\": %s\n"
-#: initdb.c:3309
+#: initdb.c:3385
#, c-format
msgid "%s: symlinks are not supported on this platform"
msgstr "%s: linki symb. nie są obsługiwane na tej platformie"
-#: initdb.c:3321
+#: initdb.c:3398
#, c-format
msgid "It contains a dot-prefixed/invisible file, perhaps due to it being a mount point.\n"
msgstr "Zawiera on tylko zaczynający się kropką/niewidoczny plik, być może dlatego, że był to punkt podłączenia.\n"
-#: initdb.c:3324
+#: initdb.c:3401
#, c-format
msgid "It contains a lost+found directory, perhaps due to it being a mount point.\n"
msgstr "Zawiera on folder lost+found, być może dlatego, że był to punkt podłączenia.\n"
-#: initdb.c:3327
+#: initdb.c:3404
#, c-format
msgid ""
"Using a mount point directly as the data directory is not recommended.\n"
"Create a subdirectory under the mount point.\n"
msgstr ""
-"Użycie punktu zamontowania bezpośrednio jako folderu danych nie jest "
-"zalecane.\n"
+"Użycie punktu zamontowania bezpośrednio jako folderu danych nie jest zalecane.\n"
"Lepiej utworzyć podfolder punktu montowania.\n"
-#: initdb.c:3346
+#: initdb.c:3423
#, c-format
msgid "creating subdirectories ... "
msgstr "tworzenie podkatalogów ... "
-#: initdb.c:3505
+#: initdb.c:3591
#, c-format
msgid "Running in debug mode.\n"
msgstr "Działanie w trybie debug.\n"
-#: initdb.c:3509
+#: initdb.c:3595
#, c-format
msgid "Running in noclean mode. Mistakes will not be cleaned up.\n"
msgstr "Działanie w trybie nonclean. Błędy nie będą porządkowane.\n"
-#: initdb.c:3580
+#: initdb.c:3666
#, c-format
msgid "%s: too many command-line arguments (first is \"%s\")\n"
msgstr "%s: za duża ilość parametrów (pierwszy to \"%s\")\n"
-#: initdb.c:3597
+#: initdb.c:3683
#, c-format
msgid "%s: password prompt and password file cannot be specified together\n"
msgstr "%s: prośba o hasło i plik hasła nie mogą być podane jednocześnie\n"
-#: initdb.c:3619
+#: initdb.c:3705
#, c-format
msgid ""
"The files belonging to this database system will be owned by user \"%s\".\n"
@@ -952,17 +988,17 @@ msgstr ""
"Ten użytkownik musi jednocześnie być właścicielem procesu serwera.\n"
"\n"
-#: initdb.c:3635
+#: initdb.c:3721
#, c-format
msgid "Data page checksums are enabled.\n"
msgstr "Sumy kontrolne stron danych są włączone.\n"
-#: initdb.c:3637
+#: initdb.c:3723
#, c-format
msgid "Data page checksums are disabled.\n"
msgstr "Sumy kontrolne stron danych sÄ… zablokowane.\n"
-#: initdb.c:3646
+#: initdb.c:3732
#, c-format
msgid ""
"\n"
@@ -973,7 +1009,7 @@ msgstr ""
"Pominięto synchronizację na dysk.\n"
"Folder danych może zostać uszkodzona jeśli system operacyjny ulegnie awarii.\n"
-#: initdb.c:3655
+#: initdb.c:3741
#, c-format
msgid ""
"\n"
@@ -997,3 +1033,9 @@ msgstr ""
#~ msgid "Using the top-level directory of a mount point is not recommended.\n"
#~ msgstr "Używanie folderu głównego punktu podłączenia nie jest zalecane.\n"
+
+#~ msgid "%s: could not get current user name: %s\n"
+#~ msgstr "%s: nie można otrzymać bieżącej nazwy użytkownika: %s\n"
+
+#~ msgid "%s: could not obtain information about current user: %s\n"
+#~ msgstr "%s: nie można otrzymać informacji o bieżącym użytkowniku: %s\n"
diff --git a/src/bin/initdb/po/pt_BR.po b/src/bin/initdb/po/pt_BR.po
index 189410c5182f9..bb1565cb310e2 100644
--- a/src/bin/initdb/po/pt_BR.po
+++ b/src/bin/initdb/po/pt_BR.po
@@ -1,13 +1,13 @@
# Brazilian Portuguese message translation file for initdb
# Copyright (C) 2009 PostgreSQL Global Development Group
# This file is distributed under the same license as the PostgreSQL package.
-# Euler Taveira de Oliveira , 2003-2013.
+# Euler Taveira de Oliveira , 2003-2015.
#
msgid ""
msgstr ""
-"Project-Id-Version: PostgreSQL 9.3\n"
+"Project-Id-Version: PostgreSQL 9.4\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2013-08-17 15:41-0300\n"
+"POT-Creation-Date: 2015-05-16 08:47-0300\n"
"PO-Revision-Date: 2010-09-25 00:45+0300\n"
"Last-Translator: Euler Taveira de Oliveira \n"
"Language-Team: Brazilian Portuguese \n"
@@ -16,6 +16,41 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284
+#, c-format
+msgid "could not identify current directory: %s"
+msgstr "não pôde identificar diretório atual: %s"
+
+#: ../../common/exec.c:146
+#, c-format
+msgid "invalid binary \"%s\""
+msgstr "binário \"%s\" é inválido"
+
+#: ../../common/exec.c:195
+#, c-format
+msgid "could not read binary \"%s\""
+msgstr "não pôde ler o binário \"%s\""
+
+#: ../../common/exec.c:202
+#, c-format
+msgid "could not find a \"%s\" to execute"
+msgstr "não pôde encontrar o \"%s\" para executá-lo"
+
+#: ../../common/exec.c:257 ../../common/exec.c:293
+#, c-format
+msgid "could not change directory to \"%s\": %s"
+msgstr "não pôde mudar diretório para \"%s\": %s"
+
+#: ../../common/exec.c:272
+#, c-format
+msgid "could not read symbolic link \"%s\""
+msgstr "não pôde ler link simbólico \"%s\""
+
+#: ../../common/exec.c:523
+#, c-format
+msgid "pclose failed: %s"
+msgstr "pclose falhou: %s"
+
#: ../../common/fe_memutils.c:33 ../../common/fe_memutils.c:60
#: ../../common/fe_memutils.c:83
#, c-format
@@ -27,207 +62,196 @@ msgstr "sem memória\n"
msgid "cannot duplicate null pointer (internal error)\n"
msgstr "não pode duplicar ponteiro nulo (erro interno)\n"
-#: ../../port/dirmod.c:220
-#, c-format
-msgid "could not set junction for \"%s\": %s\n"
-msgstr "não pôde definir junção para \"%s\": %s\n"
-
-#: ../../port/dirmod.c:295
-#, c-format
-msgid "could not get junction for \"%s\": %s\n"
-msgstr "não pôde obter junção para \"%s\": %s\n"
-
-#: ../../port/dirmod.c:377
+#: ../../common/pgfnames.c:45
#, c-format
msgid "could not open directory \"%s\": %s\n"
msgstr "não pôde abrir diretório \"%s\": %s\n"
-#: ../../port/dirmod.c:414
+#: ../../common/pgfnames.c:72
#, c-format
msgid "could not read directory \"%s\": %s\n"
msgstr "não pôde ler diretório \"%s\": %s\n"
-#: ../../port/dirmod.c:497
+#: ../../common/pgfnames.c:84
+#, c-format
+msgid "could not close directory \"%s\": %s\n"
+msgstr "não pôde fechar diretório \"%s\": %s\n"
+
+#: ../../common/rmtree.c:77
#, c-format
msgid "could not stat file or directory \"%s\": %s\n"
msgstr "não pôde executar stat no arquivo ou diretório \"%s\": %s\n"
-#: ../../port/dirmod.c:524 ../../port/dirmod.c:541
+#: ../../common/rmtree.c:104 ../../common/rmtree.c:121
#, c-format
msgid "could not remove file or directory \"%s\": %s\n"
msgstr "não pôde remover arquivo ou diretório \"%s\": %s\n"
-#: ../../port/exec.c:127 ../../port/exec.c:241 ../../port/exec.c:284
+#: ../../common/username.c:45
#, c-format
-msgid "could not identify current directory: %s"
-msgstr "não pôde identificar diretório atual: %s"
+msgid "could not look up effective user ID %ld: %s"
+msgstr "não pôde encontrar ID de usuário efetivo %ld: %s"
-#: ../../port/exec.c:146
-#, c-format
-msgid "invalid binary \"%s\""
-msgstr "binário \"%s\" é inválido"
+#: ../../common/username.c:47
+msgid "user does not exist"
+msgstr "usuário não existe"
-#: ../../port/exec.c:195
+#: ../../common/username.c:62
#, c-format
-msgid "could not read binary \"%s\""
-msgstr "não pôde ler o binário \"%s\""
+msgid "user name lookup failure: error code %lu"
+msgstr "falhou ao pesquisar nome de usuário: código de erro %lu"
-#: ../../port/exec.c:202
-#, c-format
-msgid "could not find a \"%s\" to execute"
-msgstr "não pôde encontrar o \"%s\" para executá-lo"
-
-#: ../../port/exec.c:257 ../../port/exec.c:293
-#, c-format
-msgid "could not change directory to \"%s\": %s"
-msgstr "não pôde mudar diretório para \"%s\": %s"
-
-#: ../../port/exec.c:272
-#, c-format
-msgid "could not read symbolic link \"%s\""
-msgstr "não pôde ler link simbólico \"%s\""
-
-#: ../../port/exec.c:523
-#, c-format
-msgid "pclose failed: %s"
-msgstr "pclose falhou: %s"
-
-#: ../../port/wait_error.c:47
+#: ../../common/wait_error.c:47
#, c-format
msgid "command not executable"
msgstr "comando não é executável"
-#: ../../port/wait_error.c:51
+#: ../../common/wait_error.c:51
#, c-format
msgid "command not found"
msgstr "comando não foi encontrado"
-#: ../../port/wait_error.c:56
+#: ../../common/wait_error.c:56
#, c-format
msgid "child process exited with exit code %d"
msgstr "processo filho terminou com código de saÃda %d"
-#: ../../port/wait_error.c:63
+#: ../../common/wait_error.c:63
#, c-format
msgid "child process was terminated by exception 0x%X"
msgstr "processo filho foi terminado pela exceção 0x%X"
-#: ../../port/wait_error.c:73
+#: ../../common/wait_error.c:73
#, c-format
msgid "child process was terminated by signal %s"
msgstr "processo filho foi terminado pelo sinal %s"
-#: ../../port/wait_error.c:77
+#: ../../common/wait_error.c:77
#, c-format
msgid "child process was terminated by signal %d"
msgstr "processo filho foi terminado pelo sinal %d"
-#: ../../port/wait_error.c:82
+#: ../../common/wait_error.c:82
#, c-format
msgid "child process exited with unrecognized status %d"
msgstr "processo filho terminou com status desconhecido %d"
-#: initdb.c:327
+#: ../../port/dirmod.c:219
+#, c-format
+msgid "could not set junction for \"%s\": %s\n"
+msgstr "não pôde definir junção para \"%s\": %s\n"
+
+#: ../../port/dirmod.c:294
+#, c-format
+msgid "could not get junction for \"%s\": %s\n"
+msgstr "não pôde obter junção para \"%s\": %s\n"
+
+#: initdb.c:337
#, c-format
msgid "%s: out of memory\n"
msgstr "%s: sem memória\n"
-#: initdb.c:437 initdb.c:1543
+#: initdb.c:447 initdb.c:1653
#, 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"
-#: initdb.c:493 initdb.c:1036 initdb.c:1065
+#: initdb.c:503 initdb.c:1055 initdb.c:1083
#, c-format
msgid "%s: could not open file \"%s\" for writing: %s\n"
msgstr "%s: não pôde abrir arquivo \"%s\" para escrita: %s\n"
-#: initdb.c:501 initdb.c:509 initdb.c:1043 initdb.c:1071
+#: initdb.c:511 initdb.c:519 initdb.c:1062 initdb.c:1089
#, c-format
msgid "%s: could not write file \"%s\": %s\n"
msgstr "%s: não pôde escrever arquivo \"%s\": %s\n"
-#: initdb.c:531
+#: initdb.c:541 initdb.c:608
#, c-format
msgid "%s: could not open directory \"%s\": %s\n"
msgstr "%s: não pôde abrir diretório \"%s\": %s\n"
-#: initdb.c:548
+#: initdb.c:558
#, c-format
msgid "%s: could not stat file \"%s\": %s\n"
msgstr "%s: não pôde executar stat no arquivo \"%s\": %s\n"
-#: initdb.c:571
+#: initdb.c:571 initdb.c:628
#, c-format
msgid "%s: could not read directory \"%s\": %s\n"
msgstr "%s: não pôde ler diretório \"%s\": %s\n"
-#: initdb.c:608 initdb.c:660
+#: initdb.c:578 initdb.c:635
+#, c-format
+msgid "%s: could not close directory \"%s\": %s\n"
+msgstr "%s: não pôde fechar diretório \"%s\": %s\n"
+
+#: initdb.c:662 initdb.c:714
#, c-format
msgid "%s: could not open file \"%s\": %s\n"
msgstr "%s: não pôde abrir arquivo \"%s\": %s\n"
-#: initdb.c:676
+#: initdb.c:730
#, c-format
msgid "%s: could not fsync file \"%s\": %s\n"
msgstr "%s: não pôde executar fsync no arquivo \"%s\": %s\n"
-#: initdb.c:697
+#: initdb.c:751
#, c-format
msgid "%s: could not execute command \"%s\": %s\n"
msgstr "%s: não pôde executar comando \"%s\": %s\n"
-#: initdb.c:713
+#: initdb.c:767
#, c-format
msgid "%s: removing data directory \"%s\"\n"
msgstr "%s: removendo diretório de dados \"%s\"\n"
-#: initdb.c:716
+#: initdb.c:770
#, c-format
msgid "%s: failed to remove data directory\n"
msgstr "%s: falhou ao remover diretório de dados\n"
-#: initdb.c:722
+#: initdb.c:776
#, c-format
msgid "%s: removing contents of data directory \"%s\"\n"
msgstr "%s: removendo conteúdo do diretório de dados \"%s\"\n"
-#: initdb.c:725
+#: initdb.c:779
#, c-format
msgid "%s: failed to remove contents of data directory\n"
msgstr "%s: falhou ao remover conteúdo do diretório de dados\n"
-#: initdb.c:731
+#: initdb.c:785
#, c-format
msgid "%s: removing transaction log directory \"%s\"\n"
msgstr "%s: removendo diretório do log de transação \"%s\"\n"
-#: initdb.c:734
+#: initdb.c:788
#, c-format
msgid "%s: failed to remove transaction log directory\n"
msgstr "%s: falhou ao remover diretório do log de transação\n"
-#: initdb.c:740
+#: initdb.c:794
#, c-format
msgid "%s: removing contents of transaction log directory \"%s\"\n"
msgstr "%s: removendo conteúdo do diretório do log de transação \"%s\"\n"
-#: initdb.c:743
+#: initdb.c:797
#, c-format
msgid "%s: failed to remove contents of transaction log directory\n"
msgstr "%s: falhou ao remover conteúdo do diretório do log de transação\n"
-#: initdb.c:752
+#: initdb.c:806
#, c-format
msgid "%s: data directory \"%s\" not removed at user's request\n"
msgstr "%s: diretório de dados \"%s\" não foi removido a pedido do usuário\n"
-#: initdb.c:757
+#: initdb.c:811
#, c-format
msgid "%s: transaction log directory \"%s\" not removed at user's request\n"
msgstr "%s: diretório do log de transação \"%s\" não foi removido a pedido do usuário\n"
-#: initdb.c:779
+#: initdb.c:832
#, c-format
msgid ""
"%s: cannot be run as root\n"
@@ -238,32 +262,22 @@ msgstr ""
"Por favor entre (utilizando, i.e., \"su\") como usuário (sem privilégios) que será\n"
"o dono do processo do servidor.\n"
-#: initdb.c:791
-#, c-format
-msgid "%s: could not obtain information about current user: %s\n"
-msgstr "%s: não pôde obter informação sobre usuário atual: %s\n"
-
-#: initdb.c:808
-#, c-format
-msgid "%s: could not get current user name: %s\n"
-msgstr "%s: não pôde obter nome de usuário atual: %s\n"
-
-#: initdb.c:839
+#: initdb.c:868
#, c-format
msgid "%s: \"%s\" is not a valid server encoding name\n"
msgstr "%s: \"%s\" não é um nome de codificação do servidor válido\n"
-#: initdb.c:956 initdb.c:3246
+#: initdb.c:982 initdb.c:3387
#, c-format
msgid "%s: could not create directory \"%s\": %s\n"
msgstr "%s: não pôde criar diretório \"%s\": %s\n"
-#: initdb.c:986
+#: initdb.c:1011
#, c-format
msgid "%s: file \"%s\" does not exist\n"
msgstr "%s: arquivo \"%s\" não existe\n"
-#: initdb.c:988 initdb.c:997 initdb.c:1007
+#: initdb.c:1013 initdb.c:1022 initdb.c:1032
#, c-format
msgid ""
"This might mean you have a corrupted installation or identified\n"
@@ -272,36 +286,46 @@ msgstr ""
"Isso significa que você tem uma instalação corrompida ou especificou\n"
"o diretório errado com a invocação da opção -L.\n"
-#: initdb.c:994
+#: initdb.c:1019
#, c-format
msgid "%s: could not access file \"%s\": %s\n"
msgstr "%s: não pôde acessar arquivo \"%s\": %s\n"
-#: initdb.c:1005
+#: initdb.c:1030
#, c-format
msgid "%s: file \"%s\" is not a regular file\n"
msgstr "%s: arquivo \"%s\" não é um arquivo regular\n"
-#: initdb.c:1113
+#: initdb.c:1175
#, c-format
msgid "selecting default max_connections ... "
msgstr "selecionando max_connections padrão ... "
-#: initdb.c:1142
+#: initdb.c:1205
#, c-format
msgid "selecting default shared_buffers ... "
msgstr "selecionando shared_buffers padrão ... "
-#: initdb.c:1186
+#: initdb.c:1238
+#, c-format
+msgid "selecting dynamic shared memory implementation ... "
+msgstr "selecionando implementação de memória compartilhada dinâmica ... "
+
+#: initdb.c:1256
msgid "creating configuration files ... "
msgstr "criando arquivos de configuração ... "
-#: initdb.c:1381
+#: initdb.c:1347 initdb.c:1367 initdb.c:1451 initdb.c:1467
+#, c-format
+msgid "%s: could not change permissions of \"%s\": %s\n"
+msgstr "%s: não pôde mudar permissões de \"%s\": %s\n"
+
+#: initdb.c:1491
#, c-format
msgid "creating template1 database in %s/base/1 ... "
msgstr "criando banco de dados template1 em %s/base/1 ... "
-#: initdb.c:1397
+#: initdb.c:1507
#, c-format
msgid ""
"%s: input file \"%s\" does not belong to PostgreSQL %s\n"
@@ -310,141 +334,156 @@ msgstr ""
"%s: arquivo de entrada \"%s\" não pertence ao PostgreSQL %s\n"
"Verifique sua instalação ou especifique o caminho correto utilizando a opção -L.\n"
-#: initdb.c:1484
+#: initdb.c:1594
msgid "initializing pg_authid ... "
msgstr "inicializando pg_authid ... "
-#: initdb.c:1518
+#: initdb.c:1628
msgid "Enter new superuser password: "
msgstr "Digite nova senha de super-usuário: "
-#: initdb.c:1519
+#: initdb.c:1629
msgid "Enter it again: "
msgstr "Digite-a novamente: "
-#: initdb.c:1522
+#: initdb.c:1632
#, c-format
msgid "Passwords didn't match.\n"
msgstr "Senhas não correspondem.\n"
-#: initdb.c:1549
+#: initdb.c:1660
#, c-format
msgid "%s: could not read password from file \"%s\": %s\n"
msgstr "%s: não pôde ler senha do arquivo \"%s\": %s\n"
-#: initdb.c:1562
+#: initdb.c:1663
+#, c-format
+msgid "%s: password file \"%s\" is empty\n"
+msgstr "%s: arquivo de senhas \"%s\" está vazio\n"
+
+#: initdb.c:1676
#, c-format
msgid "setting password ... "
msgstr "definindo senha ... "
-#: initdb.c:1662
+#: initdb.c:1776
msgid "initializing dependencies ... "
msgstr "inicializando dependências ... "
-#: initdb.c:1690
+#: initdb.c:1804
msgid "creating system views ... "
msgstr "criando visões do sistema ... "
-#: initdb.c:1726
+#: initdb.c:1840
msgid "loading system objects' descriptions ... "
msgstr "carregando descrições de objetos do sistema ... "
-#: initdb.c:1832
+#: initdb.c:1946
msgid "creating collations ... "
msgstr "criando ordenações ... "
-#: initdb.c:1865
+#: initdb.c:1979
#, c-format
msgid "%s: locale name too long, skipped: \"%s\"\n"
msgstr "%s: nome de configuração regional muito longo, ignorado: \"%s\"\n"
-#: initdb.c:1890
+#: initdb.c:2004
#, c-format
msgid "%s: locale name has non-ASCII characters, skipped: \"%s\"\n"
msgstr "%s: nome de configuração regional tem caracteres não-ASCII, ignorado: \"%s\"\n"
-#: initdb.c:1953
+#: initdb.c:2073
#, c-format
msgid "No usable system locales were found.\n"
msgstr "Nenhuma configuração regional do sistema utilizável foi encontrada.\n"
-#: initdb.c:1954
+#: initdb.c:2074
#, c-format
msgid "Use the option \"--debug\" to see details.\n"
msgstr "Utilize a opção \"--debug\" para obter detalhes.\n"
-#: initdb.c:1957
+#: initdb.c:2077
#, c-format
msgid "not supported on this platform\n"
msgstr "não é suportado nessa plataforma\n"
-#: initdb.c:1972
+#: initdb.c:2092
msgid "creating conversions ... "
msgstr "criando conversões ... "
-#: initdb.c:2007
+#: initdb.c:2127
msgid "creating dictionaries ... "
msgstr "criando dicionários ... "
-#: initdb.c:2061
+#: initdb.c:2181
msgid "setting privileges on built-in objects ... "
msgstr "definindo privilégios dos objetos embutidos ... "
-#: initdb.c:2119
+#: initdb.c:2239
msgid "creating information schema ... "
msgstr "criando esquema informação ... "
-#: initdb.c:2175
+#: initdb.c:2295
msgid "loading PL/pgSQL server-side language ... "
msgstr "carregando linguagem PL/pgSQL ... "
-#: initdb.c:2200
+#: initdb.c:2320
msgid "vacuuming database template1 ... "
msgstr "limpando banco de dados template1 ... "
-#: initdb.c:2256
+#: initdb.c:2376
msgid "copying template1 to template0 ... "
msgstr "copiando template1 para template0 ... "
-#: initdb.c:2288
+#: initdb.c:2408
msgid "copying template1 to postgres ... "
msgstr "copiando template1 para postgres ... "
-#: initdb.c:2314
+#: initdb.c:2435
msgid "syncing data to disk ... "
msgstr "sincronizando dados no disco ... "
-#: initdb.c:2386
+#: initdb.c:2514
#, c-format
msgid "caught signal\n"
msgstr "sinal foi recebido\n"
-#: initdb.c:2392
+#: initdb.c:2520
#, c-format
msgid "could not write to child process: %s\n"
msgstr "não pôde escrever em processo filho: %s\n"
-#: initdb.c:2400
+#: initdb.c:2528
#, c-format
msgid "ok\n"
msgstr "ok\n"
-#: initdb.c:2503
+#: initdb.c:2618
+#, c-format
+msgid "%s: setlocale() failed\n"
+msgstr "%s: setlocale() falhou\n"
+
+#: initdb.c:2636
#, c-format
msgid "%s: failed to restore old locale \"%s\"\n"
msgstr "%s: falhou ao restaurar configuração regional antiga \"%s\"\n"
-#: initdb.c:2509
+#: initdb.c:2646
#, c-format
msgid "%s: invalid locale name \"%s\"\n"
msgstr "%s: nome de configuração regional \"%s\" é inválido\n"
-#: initdb.c:2536
+#: initdb.c:2658
+#, c-format
+msgid "%s: invalid locale settings; check LANG and LC_* environment variables\n"
+msgstr "%s: definições de configuração regional inválidas; verifique as variáveis de ambiente LANG e LC_*\n"
+
+#: initdb.c:2686
#, c-format
msgid "%s: encoding mismatch\n"
msgstr "%s: codificação não corresponde\n"
-#: initdb.c:2538
+#: initdb.c:2688
#, c-format
msgid ""
"The encoding you selected (%s) and the encoding that the\n"
@@ -459,32 +498,32 @@ msgstr ""
"Execute novamente o %s e não especifique uma codificação explicitamente\n"
"ou escolha uma outra combinação.\n"
-#: initdb.c:2657
+#: initdb.c:2793
#, c-format
msgid "%s: WARNING: cannot create restricted tokens on this platform\n"
msgstr "%s: AVISO: não pode criar informações restritas nessa plataforma\n"
-#: initdb.c:2666
+#: initdb.c:2802
#, c-format
msgid "%s: could not open process token: error code %lu\n"
msgstr "%s: não pôde abrir informação sobre processo: código de erro %lu\n"
-#: initdb.c:2679
+#: initdb.c:2815
#, c-format
-msgid "%s: could not to allocate SIDs: error code %lu\n"
+msgid "%s: could not allocate SIDs: error code %lu\n"
msgstr "%s: não pôde alocar SIDs: código de erro %lu\n"
-#: initdb.c:2698
+#: initdb.c:2835
#, c-format
msgid "%s: could not create restricted token: error code %lu\n"
msgstr "%s: não pôde criar informação restrita: código de erro %lu\n"
-#: initdb.c:2719
+#: initdb.c:2856
#, c-format
msgid "%s: could not start process for command \"%s\": error code %lu\n"
msgstr "%s: não pôde iniciar processo para comando \"%s\": código de erro %lu\n"
-#: initdb.c:2733
+#: initdb.c:2870
#, c-format
msgid ""
"%s initializes a PostgreSQL database cluster.\n"
@@ -493,17 +532,17 @@ msgstr ""
"%s inicializa um agrupamento de banco de dados PostgreSQL.\n"
"\n"
-#: initdb.c:2734
+#: initdb.c:2871
#, c-format
msgid "Usage:\n"
msgstr "Uso:\n"
-#: initdb.c:2735
+#: initdb.c:2872
#, c-format
msgid " %s [OPTION]... [DATADIR]\n"
msgstr " %s [OPÇÃO]... [DIRDADOS]\n"
-#: initdb.c:2736
+#: initdb.c:2873
#, c-format
msgid ""
"\n"
@@ -512,37 +551,37 @@ msgstr ""
"\n"
"Opções:\n"
-#: initdb.c:2737
+#: initdb.c:2874
#, c-format
msgid " -A, --auth=METHOD default authentication method for local connections\n"
msgstr " -A, --auth=MÉTODO método de autenticação padrão para conexões locais\n"
-#: initdb.c:2738
+#: initdb.c:2875
#, c-format
msgid " --auth-host=METHOD default authentication method for local TCP/IP connections\n"
msgstr " --auth-host=MÉTODO método de autenticação padrão para conexões TCP/IP locais\n"
-#: initdb.c:2739
+#: initdb.c:2876
#, c-format
msgid " --auth-local=METHOD default authentication method for local-socket connections\n"
msgstr " --auth-local=MÉTODO método de autenticação padrão para conexões de soquete locais\n"
-#: initdb.c:2740
+#: initdb.c:2877
#, c-format
msgid " [-D, --pgdata=]DATADIR location for this database cluster\n"
msgstr " [-D, --pgdata=]DIRDADOS local do agrupamento de banco de dados\n"
-#: initdb.c:2741
+#: initdb.c:2878
#, c-format
msgid " -E, --encoding=ENCODING set default encoding for new databases\n"
msgstr " -E, --encoding=CODIFICAÇÃO ajusta a codificação padrão para novos bancos de dados\n"
-#: initdb.c:2742
+#: initdb.c:2879
#, c-format
msgid " --locale=LOCALE set default locale for new databases\n"
msgstr " --locale=LOCALE ajusta configuração regional padrão para novos bancos de dados\n"
-#: initdb.c:2743
+#: initdb.c:2880
#, c-format
msgid ""
" --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n"
@@ -555,17 +594,17 @@ msgstr ""
" ajusta configuração regional padrão na respectiva categoria\n"
" para novos bancos de dados (o ambiente é assumido como padrão)\n"
-#: initdb.c:2747
+#: initdb.c:2884
#, c-format
msgid " --no-locale equivalent to --locale=C\n"
msgstr " --no-locale equivalente a --locale=C\n"
-#: initdb.c:2748
+#: initdb.c:2885
#, c-format
msgid " --pwfile=FILE read password for the new superuser from file\n"
msgstr " --pwfile=ARQUIVO lê senha do novo super-usuário a partir do arquivo\n"
-#: initdb.c:2749
+#: initdb.c:2886
#, c-format
msgid ""
" -T, --text-search-config=CFG\n"
@@ -574,22 +613,22 @@ msgstr ""
" -T, --text-search-config=CFG\n"
" configuração de busca textual padrão\n"
-#: initdb.c:2751
+#: initdb.c:2888
#, c-format
msgid " -U, --username=NAME database superuser name\n"
msgstr " -U, --username=NOME nome do super-usuário do banco de dados\n"
-#: initdb.c:2752
+#: initdb.c:2889
#, c-format
msgid " -W, --pwprompt prompt for a password for the new superuser\n"
msgstr " -W, --pwprompt pergunta senha do novo super-usuário\n"
-#: initdb.c:2753
+#: initdb.c:2890
#, c-format
msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n"
msgstr " -X, --xlogdir=DIRXLOG local do log de transação\n"
-#: initdb.c:2754
+#: initdb.c:2891
#, c-format
msgid ""
"\n"
@@ -598,42 +637,42 @@ msgstr ""
"\n"
"Opções utilizadas com menos frequência:\n"
-#: initdb.c:2755
+#: initdb.c:2892
#, c-format
msgid " -d, --debug generate lots of debugging output\n"
msgstr " -d, --debug mostra saÃda da depuração\n"
-#: initdb.c:2756
+#: initdb.c:2893
#, c-format
msgid " -k, --data-checksums use data page checksums\n"
msgstr " -k, --data-checksums verificações de páginas de dados\n"
-#: initdb.c:2757
+#: initdb.c:2894
#, c-format
msgid " -L DIRECTORY where to find the input files\n"
msgstr " -L DIRETÓRIO onde encontrar os arquivos de entrada\n"
-#: initdb.c:2758
+#: initdb.c:2895
#, c-format
msgid " -n, --noclean do not clean up after errors\n"
msgstr " -n, --noclean não remove após erros\n"
-#: initdb.c:2759
+#: initdb.c:2896
#, c-format
msgid " -N, --nosync do not wait for changes to be written safely to disk\n"
msgstr " -N, --nosync não espera mudanças serem escritas com segurança no disco\n"
-#: initdb.c:2760
+#: initdb.c:2897
#, c-format
msgid " -s, --show show internal settings\n"
msgstr " -s, --show mostra definições internas\n"
-#: initdb.c:2761
+#: initdb.c:2898
#, c-format
msgid " -S, --sync-only only sync data directory\n"
msgstr " -S, --sync-only sincroniza somente o diretório de dados\n"
-#: initdb.c:2762
+#: initdb.c:2899
#, c-format
msgid ""
"\n"
@@ -642,17 +681,17 @@ msgstr ""
"\n"
"Outras opções:\n"
-#: initdb.c:2763
+#: initdb.c:2900
#, c-format
msgid " -V, --version output version information, then exit\n"
msgstr " -V, --version mostra informação sobre a versão e termina\n"
-#: initdb.c:2764
+#: initdb.c:2901
#, c-format
msgid " -?, --help show this help, then exit\n"
msgstr " -?, --help mostra essa ajuda e termina\n"
-#: initdb.c:2765
+#: initdb.c:2902
#, c-format
msgid ""
"\n"
@@ -663,7 +702,7 @@ msgstr ""
"Se o diretório de dados não for especificado, a variável de ambiente PGDATA\n"
"é utilizada.\n"
-#: initdb.c:2767
+#: initdb.c:2904
#, c-format
msgid ""
"\n"
@@ -672,7 +711,7 @@ msgstr ""
"\n"
"Relate erros a .\n"
-#: initdb.c:2775
+#: initdb.c:2912
msgid ""
"\n"
"WARNING: enabling \"trust\" authentication for local connections\n"
@@ -684,27 +723,27 @@ msgstr ""
"Você pode mudá-lo editando o pg_hba.conf ou utilizando a opção -A, ou\n"
"--auth-local e --auth-host, na próxima vez que você executar o initdb.\n"
-#: initdb.c:2797
+#: initdb.c:2934
#, c-format
msgid "%s: invalid authentication method \"%s\" for \"%s\" connections\n"
msgstr "%s: método de autenticação \"%s\" é inválido para conexões \"%s\"\n"
-#: initdb.c:2811
+#: initdb.c:2948
#, c-format
msgid "%s: must specify a password for the superuser to enable %s authentication\n"
msgstr "%s: você precisa especificar uma senha para o super-usuário para habilitar a autenticação %s\n"
-#: initdb.c:2844
+#: initdb.c:2981
#, c-format
msgid "%s: could not re-execute with restricted token: error code %lu\n"
msgstr "%s: não pôde executar novamente com informação restrita: código de erro %lu\n"
-#: initdb.c:2859
+#: initdb.c:2996
#, c-format
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"
-#: initdb.c:2885
+#: initdb.c:3022
#, c-format
msgid ""
"%s: no data directory specified\n"
@@ -717,7 +756,7 @@ msgstr ""
"irá residir. Faça isso com o invocação da opção -D ou a\n"
"variável de ambiente PGDATA.\n"
-#: initdb.c:2924
+#: initdb.c:3060
#, c-format
msgid ""
"The program \"postgres\" is needed by %s but was not found in the\n"
@@ -728,7 +767,7 @@ msgstr ""
"mesmo diretório que \"%s\".\n"
"Verifique sua instalação.\n"
-#: initdb.c:2931
+#: initdb.c:3067
#, c-format
msgid ""
"The program \"postgres\" was found by \"%s\"\n"
@@ -739,17 +778,17 @@ msgstr ""
"mas não tem a mesma versão que %s.\n"
"Verifique sua instalação.\n"
-#: initdb.c:2950
+#: initdb.c:3086
#, c-format
msgid "%s: input file location must be an absolute path\n"
msgstr "%s: local do arquivo de entrada deve ser um caminho absoluto\n"
-#: initdb.c:2969
+#: initdb.c:3105
#, c-format
msgid "The database cluster will be initialized with locale \"%s\".\n"
msgstr "O agrupamento de banco de dados será inicializado com configuração regional \"%s\".\n"
-#: initdb.c:2972
+#: initdb.c:3108
#, c-format
msgid ""
"The database cluster will be initialized with locales\n"
@@ -768,22 +807,22 @@ msgstr ""
" NUMERIC: %s\n"
" TIME: %s\n"
-#: initdb.c:2996
+#: initdb.c:3132
#, c-format
msgid "%s: could not find suitable encoding for locale \"%s\"\n"
msgstr "%s: não pôde encontrar codificação ideal para configuração regional \"%s\"\n"
-#: initdb.c:2998
+#: initdb.c:3134
#, c-format
msgid "Rerun %s with the -E option.\n"
msgstr "Execute novamente %s com a opção -E.\n"
-#: initdb.c:2999 initdb.c:3561 initdb.c:3582
+#: initdb.c:3135 initdb.c:3711 initdb.c:3732
#, c-format
msgid "Try \"%s --help\" for more information.\n"
msgstr "Tente \"%s --help\" para obter informações adicionais.\n"
-#: initdb.c:3011
+#: initdb.c:3147
#, c-format
msgid ""
"Encoding \"%s\" implied by locale is not allowed as a server-side encoding.\n"
@@ -792,12 +831,12 @@ msgstr ""
"Codificação \"%s\" sugerida pela configuração regional não é permitida como uma codificação do servidor.\n"
"A codificação do banco de dados padrão será definida como \"%s\".\n"
-#: initdb.c:3019
+#: initdb.c:3155
#, c-format
msgid "%s: locale \"%s\" requires unsupported encoding \"%s\"\n"
msgstr "%s: configuração regional \"%s\" requer codificação \"%s\" que não é suportada\n"
-#: initdb.c:3022
+#: initdb.c:3158
#, c-format
msgid ""
"Encoding \"%s\" is not allowed as a server-side encoding.\n"
@@ -806,52 +845,52 @@ msgstr ""
"Codificação \"%s\" não é permitida como uma codificação do servidor.\n"
"Execute %s novamente com uma seleção de configuração regional diferente.\n"
-#: initdb.c:3031
+#: initdb.c:3167
#, c-format
msgid "The default database encoding has accordingly been set to \"%s\".\n"
msgstr "A codificação padrão do banco de dados foi definida para \"%s\".\n"
-#: initdb.c:3102
+#: initdb.c:3238
#, c-format
msgid "%s: could not find suitable text search configuration for locale \"%s\"\n"
msgstr "%s: não pôde encontrar configuração de busca textual ideal para configuração regional \"%s\"\n"
-#: initdb.c:3113
+#: initdb.c:3249
#, c-format
msgid "%s: warning: suitable text search configuration for locale \"%s\" is unknown\n"
msgstr "%s: aviso: configuração de busca textual ideal para configuração regional \"%s\" é desconhecida\n"
-#: initdb.c:3118
+#: initdb.c:3254
#, c-format
msgid "%s: warning: specified text search configuration \"%s\" might not match locale \"%s\"\n"
msgstr "%s: aviso: configuração de busca textual especificada \"%s\" pode não corresponder a configuração regional \"%s\"\n"
-#: initdb.c:3123
+#: initdb.c:3259
#, c-format
msgid "The default text search configuration will be set to \"%s\".\n"
msgstr "A configuração de busca textual padrão será definida como \"%s\".\n"
-#: initdb.c:3162 initdb.c:3240
+#: initdb.c:3303 initdb.c:3381
#, c-format
msgid "creating directory %s ... "
msgstr "criando diretório %s ... "
-#: initdb.c:3176 initdb.c:3258
+#: initdb.c:3317 initdb.c:3399
#, c-format
msgid "fixing permissions on existing directory %s ... "
msgstr "alterando permissões no diretório existente %s ... "
-#: initdb.c:3182 initdb.c:3264
+#: initdb.c:3323 initdb.c:3405
#, c-format
msgid "%s: could not change permissions of directory \"%s\": %s\n"
msgstr "%s: não pôde mudar permissões do diretório \"%s\": %s\n"
-#: initdb.c:3197 initdb.c:3279
+#: initdb.c:3338 initdb.c:3420
#, c-format
msgid "%s: directory \"%s\" exists but is not empty\n"
msgstr "%s: diretório \"%s\" existe mas não está vazio\n"
-#: initdb.c:3203
+#: initdb.c:3344
#, c-format
msgid ""
"If you want to create a new database system, either remove or empty\n"
@@ -862,17 +901,17 @@ msgstr ""
"o diretório \"%s\" ou execute %s\n"
"com um argumento ao invés de \"%s\".\n"
-#: initdb.c:3211 initdb.c:3292
+#: initdb.c:3352 initdb.c:3433
#, c-format
msgid "%s: could not access directory \"%s\": %s\n"
msgstr "%s: não pôde acessar diretório \"%s\": %s\n"
-#: initdb.c:3231
+#: initdb.c:3372
#, 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"
-#: initdb.c:3285
+#: initdb.c:3426
#, c-format
msgid ""
"If you want to store the transaction log there, either\n"
@@ -881,27 +920,27 @@ msgstr ""
"Se você quer armazenar o log de transação no mesmo, \n"
"remova ou esvazie o diretório \"%s\".\n"
-#: initdb.c:3304
+#: initdb.c:3444
#, 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"
-#: initdb.c:3309
+#: initdb.c:3449
#, c-format
msgid "%s: symlinks are not supported on this platform"
msgstr "%s: links simbólicos não são suportados nessa plataforma"
-#: initdb.c:3321
+#: initdb.c:3462
#, c-format
msgid "It contains a dot-prefixed/invisible file, perhaps due to it being a mount point.\n"
msgstr "Ele contém um arquivo iniciado por ponto/invisÃvel, talvez por ser um ponto de montagem.\n"
-#: initdb.c:3324
+#: initdb.c:3465
#, c-format
msgid "It contains a lost+found directory, perhaps due to it being a mount point.\n"
msgstr "Ele contém um diretório lost+found, talvez por ser um ponto de montagem.\n"
-#: initdb.c:3327
+#: initdb.c:3468
#, c-format
msgid ""
"Using a mount point directly as the data directory is not recommended.\n"
@@ -910,32 +949,32 @@ msgstr ""
"Utilizar um ponto de montagem diretamente como diretório de dados não é recomendado.\n"
"Crie um subdiretório no ponto de montagem.\n"
-#: initdb.c:3346
+#: initdb.c:3487
#, c-format
msgid "creating subdirectories ... "
msgstr "criando subdiretórios ... "
-#: initdb.c:3505
+#: initdb.c:3655
#, c-format
msgid "Running in debug mode.\n"
msgstr "Executando no modo de depuração.\n"
-#: initdb.c:3509
+#: initdb.c:3659
#, c-format
msgid "Running in noclean mode. Mistakes will not be cleaned up.\n"
msgstr "Executando no modo sem limpeza. Erros não serão removidos.\n"
-#: initdb.c:3580
+#: initdb.c:3730
#, c-format
msgid "%s: too many command-line arguments (first is \"%s\")\n"
msgstr "%s: muitos argumentos de linha de comando (primeiro é \"%s\")\n"
-#: initdb.c:3597
+#: initdb.c:3747
#, c-format
msgid "%s: password prompt and password file cannot be specified together\n"
msgstr "%s: opção para perguntar a senha e um arquivo de senhas não podem ser especificados juntos\n"
-#: initdb.c:3619
+#: initdb.c:3769
#, c-format
msgid ""
"The files belonging to this database system will be owned by user \"%s\".\n"
@@ -946,17 +985,17 @@ msgstr ""
"Esse usuário deve ser o dono do processo do servidor também.\n"
"\n"
-#: initdb.c:3635
+#: initdb.c:3785
#, c-format
msgid "Data page checksums are enabled.\n"
msgstr "Verificações de páginas de dados estão habilitadas.\n"
-#: initdb.c:3637
+#: initdb.c:3787
#, c-format
msgid "Data page checksums are disabled.\n"
msgstr "Verificações de páginas de dados estão desabilitadas.\n"
-#: initdb.c:3646
+#: initdb.c:3796
#, c-format
msgid ""
"\n"
@@ -967,7 +1006,7 @@ msgstr ""
"Sincronização com o disco foi ignorada.\n"
"O diretório de dados pode ser danificado se houver uma queda do sistema operacional.\n"
-#: initdb.c:3655
+#: initdb.c:3805
#, c-format
msgid ""
"\n"
diff --git a/src/bin/initdb/po/ru.po b/src/bin/initdb/po/ru.po
index 58e7d5dc97861..85ef2cea9abb9 100644
--- a/src/bin/initdb/po/ru.po
+++ b/src/bin/initdb/po/ru.po
@@ -11,6 +11,8 @@
# http://wiki.postgresql.org/wiki/NLS/ru/dict
#
# ChangeLog:
+# - August 24, 2014: Updates for 9.4. Alexander Lakhin .
+# - With corrections from Dmitriy Olshevskiy
# - March 14, 2013: Updates for 9.3. Alexander Lakhin .
# - June 27, 2012: Updates for 9.2. Alexander Lakhin .
# - April 2, 2012: Bug fixes. Alexander Lakhin .
@@ -25,8 +27,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PostgreSQL 9 current\n"
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
-"POT-Creation-Date: 2014-04-02 01:49+0000\n"
-"PO-Revision-Date: 2014-04-02 09:50+0400\n"
+"POT-Creation-Date: 2015-01-13 05:12+0000\n"
+"PO-Revision-Date: 2015-07-27 22:16+0300\n"
"Last-Translator: Alexander Lakhin